From 14d00c6c74f96e6d59bedbeeaa171587e8ecf6d1 Mon Sep 17 00:00:00 2001 From: chopratejas Date: Mon, 6 Apr 2026 18:03:04 -0700 Subject: [PATCH] Token-level cache hit rate, compression-vs-cache tracking, dashboard SQL, security plan Cache stats: - hit_rate is now token-level (cache_read / total_input) not request-level - Track uncached_input_tokens per provider in metrics - Preserve request_hit_rate as secondary metric Compression-vs-cache: - Detect when compression busts the prefix cache (expected_cached - actual_read) - Two simple session-level numbers: tokens_saved vs cache_bust_tokens - Log CACHE-BUST per request, aggregate in /stats and telemetry beacon - Single new column in proxy_telemetry_v2: cache_bust_tokens Dashboard infra: - SQL for dashboard_summary table + pg_cron hourly refresh - Hourly + daily aggregation from proxy_telemetry_v2 - Upgrade scripts for adding hourly_stats and cache bust columns --- .../node_modules/.bin/esbuild | 1 + .../node_modules/.bin/tsc | 1 + .../node_modules/.bin/tsserver | 1 + .../node_modules/.bin/tsx | 1 + .../node_modules/.package-lock.json | 324 + .../@ai-sdk/anthropic/CHANGELOG.md | 2560 ++++++ .../node_modules/@ai-sdk/anthropic/LICENSE | 13 + .../node_modules/@ai-sdk/anthropic/README.md | 43 + .../@ai-sdk/anthropic/docs/05-anthropic.mdx | 1368 +++ .../@ai-sdk/anthropic/internal.d.ts | 1 + .../@ai-sdk/anthropic/package.json | 81 + .../@ai-sdk/anthropic/src/anthropic-error.ts | 26 + .../src/anthropic-message-metadata.ts | 143 + .../anthropic/src/anthropic-messages-api.ts | 1344 +++ .../src/anthropic-messages-language-model.ts | 2392 ++++++ .../src/anthropic-messages-options.ts | 263 + .../anthropic/src/anthropic-prepare-tools.ts | 416 + .../anthropic/src/anthropic-provider.ts | 177 + .../@ai-sdk/anthropic/src/anthropic-tools.ts | 238 + .../src/convert-anthropic-messages-usage.ts | 73 + .../convert-to-anthropic-messages-prompt.ts | 1119 +++ ...d-anthropic-container-id-from-last-step.ts | 38 + .../anthropic/src/get-cache-control.ts | 63 + .../@ai-sdk/anthropic/src/index.ts | 17 + .../@ai-sdk/anthropic/src/internal/index.ts | 4 + .../src/map-anthropic-stop-reason.ts | 30 + .../anthropic/src/tool/bash_20241022.ts | 33 + .../anthropic/src/tool/bash_20250124.ts | 33 + .../src/tool/code-execution_20250522.ts | 61 + .../src/tool/code-execution_20250825.ts | 281 + .../src/tool/code-execution_20260120.ts | 315 + .../anthropic/src/tool/computer_20241022.ts | 87 + .../anthropic/src/tool/computer_20250124.ts | 130 + .../anthropic/src/tool/computer_20251124.ts | 151 + .../anthropic/src/tool/memory_20250818.ts | 62 + .../src/tool/text-editor_20241022.ts | 69 + .../src/tool/text-editor_20250124.ts | 69 + .../src/tool/text-editor_20250429.ts | 70 + .../src/tool/text-editor_20250728.ts | 86 + .../src/tool/tool-search-bm25_20251119.ts | 99 + .../src/tool/tool-search-regex_20251119.ts | 111 + .../anthropic/src/tool/web-fetch-20250910.ts | 145 + .../anthropic/src/tool/web-fetch-20260209.ts | 145 + .../anthropic/src/tool/web-search_20250305.ts | 136 + .../anthropic/src/tool/web-search_20260209.ts | 136 + .../@ai-sdk/anthropic/src/version.ts | 6 + .../node_modules/@ai-sdk/gateway/CHANGELOG.md | 1718 ++++ .../node_modules/@ai-sdk/gateway/LICENSE | 13 + .../node_modules/@ai-sdk/gateway/README.md | 44 + .../@ai-sdk/gateway/docs/00-ai-gateway.mdx | 742 ++ .../node_modules/@ai-sdk/gateway/package.json | 78 + .../gateway/src/errors/as-gateway-error.ts | 74 + .../src/errors/create-gateway-error.ts | 132 + .../src/errors/extract-api-call-response.ts | 15 + .../errors/gateway-authentication-error.ts | 84 + .../gateway/src/errors/gateway-error.ts | 47 + .../errors/gateway-internal-server-error.ts | 33 + .../errors/gateway-invalid-request-error.ts | 33 + .../errors/gateway-model-not-found-error.ts | 47 + .../src/errors/gateway-rate-limit-error.ts | 33 + .../src/errors/gateway-response-error.ts | 42 + .../src/errors/gateway-timeout-error.ts | 59 + .../@ai-sdk/gateway/src/errors/index.ts | 17 + .../gateway/src/errors/parse-auth-method.ts | 23 + .../@ai-sdk/gateway/src/gateway-config.ts | 7 + .../src/gateway-embedding-model-settings.ts | 26 + .../gateway/src/gateway-embedding-model.ts | 109 + .../gateway/src/gateway-fetch-metadata.ts | 129 + .../src/gateway-image-model-settings.ts | 25 + .../gateway/src/gateway-image-model.ts | 169 + .../src/gateway-language-model-settings.ts | 183 + .../gateway/src/gateway-language-model.ts | 212 + .../gateway/src/gateway-model-entry.ts | 58 + .../gateway/src/gateway-provider-options.ts | 80 + .../@ai-sdk/gateway/src/gateway-provider.ts | 329 + .../@ai-sdk/gateway/src/gateway-tools.ts | 26 + .../src/gateway-video-model-settings.ts | 25 + .../gateway/src/gateway-video-model.ts | 259 + .../node_modules/@ai-sdk/gateway/src/index.ts | 32 + .../gateway/src/tool/parallel-search.ts | 295 + .../gateway/src/tool/perplexity-search.ts | 294 + .../@ai-sdk/gateway/src/vercel-environment.ts | 6 + .../@ai-sdk/gateway/src/version.ts | 6 + .../node_modules/@ai-sdk/openai/CHANGELOG.md | 3149 +++++++ .../node_modules/@ai-sdk/openai/LICENSE | 13 + .../node_modules/@ai-sdk/openai/README.md | 44 + .../@ai-sdk/openai/docs/03-openai.mdx | 2540 ++++++ .../node_modules/@ai-sdk/openai/internal.d.ts | 1 + .../node_modules/@ai-sdk/openai/package.json | 81 + .../src/chat/convert-openai-chat-usage.ts | 57 + .../chat/convert-to-openai-chat-messages.ts | 225 + .../openai/src/chat/get-response-metadata.ts | 15 + .../src/chat/map-openai-finish-reason.ts | 19 + .../openai/src/chat/openai-chat-api.ts | 198 + .../src/chat/openai-chat-language-model.ts | 703 ++ .../openai/src/chat/openai-chat-options.ts | 201 + .../src/chat/openai-chat-prepare-tools.ts | 84 + .../openai/src/chat/openai-chat-prompt.ts | 70 + .../convert-openai-completion-usage.ts | 46 + .../convert-to-openai-completion-prompt.ts | 93 + .../src/completion/get-response-metadata.ts | 15 + .../completion/map-openai-finish-reason.ts | 19 + .../src/completion/openai-completion-api.ts | 81 + .../openai-completion-language-model.ts | 336 + .../completion/openai-completion-options.ts | 61 + .../src/embedding/openai-embedding-api.ts | 13 + .../src/embedding/openai-embedding-model.ts | 95 + .../src/embedding/openai-embedding-options.ts | 30 + .../openai/src/image/openai-image-api.ts | 35 + .../openai/src/image/openai-image-model.ts | 349 + .../openai/src/image/openai-image-options.ts | 31 + .../node_modules/@ai-sdk/openai/src/index.ts | 23 + .../@ai-sdk/openai/src/internal/index.ts | 19 + .../@ai-sdk/openai/src/openai-config.ts | 18 + .../@ai-sdk/openai/src/openai-error.ts | 22 + .../src/openai-language-model-capabilities.ts | 55 + .../@ai-sdk/openai/src/openai-provider.ts | 270 + .../@ai-sdk/openai/src/openai-tools.ts | 138 + .../convert-openai-responses-usage.ts | 53 + .../convert-to-openai-responses-input.ts | 839 ++ .../map-openai-responses-finish-reason.ts | 22 + .../src/responses/openai-responses-api.ts | 1371 +++ .../openai-responses-language-model.ts | 2256 +++++ .../src/responses/openai-responses-options.ts | 317 + .../openai-responses-prepare-tools.ts | 433 + .../openai-responses-provider-metadata.ts | 62 + .../openai/src/speech/openai-speech-api.ts | 38 + .../openai/src/speech/openai-speech-model.ts | 137 + .../src/speech/openai-speech-options.ts | 26 + .../@ai-sdk/openai/src/tool/apply-patch.ts | 141 + .../openai/src/tool/code-interpreter.ts | 104 + .../@ai-sdk/openai/src/tool/custom.ts | 64 + .../@ai-sdk/openai/src/tool/file-search.ts | 145 + .../openai/src/tool/image-generation.ts | 126 + .../@ai-sdk/openai/src/tool/local-shell.ts | 72 + .../@ai-sdk/openai/src/tool/mcp.ts | 125 + .../@ai-sdk/openai/src/tool/shell.ts | 203 + .../@ai-sdk/openai/src/tool/tool-search.ts | 98 + .../openai/src/tool/web-search-preview.ts | 141 + .../@ai-sdk/openai/src/tool/web-search.ts | 181 + .../transcription/openai-transcription-api.ts | 37 + .../openai-transcription-model.ts | 232 + .../openai-transcription-options.ts | 53 + .../src/transcription/transcription-test.mp3 | Bin 0 -> 40169 bytes .../@ai-sdk/openai/src/version.ts | 6 + .../@ai-sdk/provider-utils/CHANGELOG.md | 1574 ++++ .../@ai-sdk/provider-utils/README.md | 1 + .../@ai-sdk/provider-utils/package.json | 81 + ...dd-additional-properties-to-json-schema.ts | 53 + .../provider-utils/src/combine-headers.ts | 11 + ...nvert-async-iterator-to-readable-stream.ts | 47 + .../convert-image-model-file-to-data-uri.ts | 19 + .../src/convert-to-form-data.ts | 61 + .../src/create-tool-name-mapping.ts | 82 + .../@ai-sdk/provider-utils/src/delay.ts | 47 + .../provider-utils/src/delayed-promise.ts | 61 + .../provider-utils/src/download-blob.ts | 57 + .../provider-utils/src/download-error.ts | 39 + .../src/extract-response-headers.ts | 9 + .../provider-utils/src/fetch-function.ts | 4 + .../@ai-sdk/provider-utils/src/generate-id.ts | 57 + .../provider-utils/src/get-error-message.ts | 15 + .../provider-utils/src/get-from-api.ts | 97 + .../src/get-runtime-environment-user-agent.ts | 24 + .../provider-utils/src/handle-fetch-error.ts | 72 + .../@ai-sdk/provider-utils/src/index.ts | 73 + .../src/inject-json-instruction.ts | 63 + .../provider-utils/src/is-abort-error.ts | 8 + .../provider-utils/src/is-async-iterable.ts | 3 + .../provider-utils/src/is-non-nullable.ts | 12 + .../provider-utils/src/is-url-supported.ts | 40 + .../provider-utils/src/load-api-key.ts | 45 + .../src/load-optional-setting.ts | 30 + .../provider-utils/src/load-setting.ts | 62 + .../provider-utils/src/maybe-promise-like.ts | 3 + .../src/media-type-to-extension.ts | 22 + .../provider-utils/src/normalize-headers.ts | 38 + .../src/parse-json-event-stream.ts | 33 + .../@ai-sdk/provider-utils/src/parse-json.ts | 122 + .../src/parse-provider-options.ts | 32 + .../@ai-sdk/provider-utils/src/post-to-api.ts | 166 + .../src/provider-tool-factory.ts | 125 + .../src/read-response-with-size-limit.ts | 97 + .../src/remove-undefined-entries.ts | 12 + .../@ai-sdk/provider-utils/src/resolve.ts | 17 + .../provider-utils/src/response-handler.ts | 186 + .../@ai-sdk/provider-utils/src/schema.ts | 267 + .../provider-utils/src/secure-json-parse.ts | 96 + .../src/strip-file-extension.ts | 13 + .../test/convert-array-to-async-iterable.ts | 9 + .../test/convert-array-to-readable-stream.ts | 15 + .../test/convert-async-iterable-to-array.ts | 9 + .../test/convert-readable-stream-to-array.ts | 14 + .../test/convert-response-stream-to-array.ts | 9 + .../@ai-sdk/provider-utils/src/test/index.ts | 7 + .../src/test/is-node-version.ts | 4 + .../provider-utils/src/test/mock-id.ts | 8 + .../zod3-to-json-schema/LICENSE | 16 + .../zod3-to-json-schema/README.md | 24 + .../zod3-to-json-schema/get-relative-path.ts | 7 + .../zod3-to-json-schema/index.ts | 1 + .../zod3-to-json-schema/options.ts | 98 + .../zod3-to-json-schema/parse-def.ts | 109 + .../zod3-to-json-schema/parse-types.ts | 57 + .../zod3-to-json-schema/parsers/any.ts | 5 + .../zod3-to-json-schema/parsers/array.ts | 38 + .../zod3-to-json-schema/parsers/bigint.ts | 44 + .../zod3-to-json-schema/parsers/boolean.ts | 7 + .../zod3-to-json-schema/parsers/branded.ts | 7 + .../zod3-to-json-schema/parsers/catch.ts | 7 + .../zod3-to-json-schema/parsers/date.ts | 64 + .../zod3-to-json-schema/parsers/default.ts | 14 + .../zod3-to-json-schema/parsers/effects.ts | 14 + .../zod3-to-json-schema/parsers/enum.ts | 13 + .../parsers/intersection.ts | 52 + .../zod3-to-json-schema/parsers/literal.ts | 29 + .../zod3-to-json-schema/parsers/map.ts | 47 + .../parsers/native-enum.ts | 31 + .../zod3-to-json-schema/parsers/never.ts | 9 + .../zod3-to-json-schema/parsers/null.ts | 9 + .../zod3-to-json-schema/parsers/nullable.ts | 42 + .../zod3-to-json-schema/parsers/number.ts | 44 + .../zod3-to-json-schema/parsers/object.ts | 88 + .../zod3-to-json-schema/parsers/optional.ts | 23 + .../zod3-to-json-schema/parsers/pipeline.ts | 29 + .../zod3-to-json-schema/parsers/promise.ts | 11 + .../zod3-to-json-schema/parsers/readonly.ts | 7 + .../zod3-to-json-schema/parsers/record.ts | 71 + .../zod3-to-json-schema/parsers/set.ts | 35 + .../zod3-to-json-schema/parsers/string.ts | 426 + .../zod3-to-json-schema/parsers/tuple.ts | 61 + .../zod3-to-json-schema/parsers/undefined.ts | 11 + .../zod3-to-json-schema/parsers/union.ts | 144 + .../zod3-to-json-schema/parsers/unknown.ts | 7 + .../zod3-to-json-schema/refs.ts | 39 + .../zod3-to-json-schema/select-parser.ts | 115 + .../zod3-to-json-schema.ts | 93 + .../src/types/assistant-model-message.ts | 39 + .../provider-utils/src/types/content-part.ts | 379 + .../provider-utils/src/types/data-content.ts | 4 + .../provider-utils/src/types/execute-tool.ts | 27 + .../@ai-sdk/provider-utils/src/types/index.ts | 40 + .../provider-utils/src/types/model-message.ts | 14 + .../src/types/provider-options.ts | 9 + .../src/types/system-model-message.ts | 20 + .../src/types/tool-approval-request.ts | 16 + .../src/types/tool-approval-response.ts | 27 + .../provider-utils/src/types/tool-call.ts | 31 + .../src/types/tool-model-message.ts | 23 + .../provider-utils/src/types/tool-result.ts | 35 + .../@ai-sdk/provider-utils/src/types/tool.ts | 324 + .../src/types/user-model-message.ts | 22 + .../@ai-sdk/provider-utils/src/uint8-utils.ts | 26 + .../src/validate-download-url.ts | 143 + .../provider-utils/src/validate-types.ts | 87 + .../@ai-sdk/provider-utils/src/version.ts | 6 + .../src/with-user-agent-suffix.ts | 27 + .../src/without-trailing-slash.ts | 3 + .../@ai-sdk/provider-utils/test.d.ts | 1 + .../@ai-sdk/provider/CHANGELOG.md | 979 +++ .../node_modules/@ai-sdk/provider/LICENSE | 13 + .../node_modules/@ai-sdk/provider/README.md | 1 + .../@ai-sdk/provider/package.json | 63 + .../src/embedding-model-middleware/index.ts | 1 + .../v3/embedding-model-v3-middleware.ts | 69 + .../embedding-model-middleware/v3/index.ts | 1 + .../provider/src/embedding-model/index.ts | 2 + .../v2/embedding-model-v2-embedding.ts | 5 + .../embedding-model/v2/embedding-model-v2.ts | 113 + .../provider/src/embedding-model/v2/index.ts | 2 + .../v3/embedding-model-v3-call-options.ts | 26 + .../v3/embedding-model-v3-embedding.ts | 5 + .../v3/embedding-model-v3-result.ts | 48 + .../embedding-model/v3/embedding-model-v3.ts | 54 + .../provider/src/embedding-model/v3/index.ts | 4 + .../provider/src/errors/ai-sdk-error.ts | 62 + .../provider/src/errors/api-call-error.ts | 59 + .../src/errors/empty-response-body-error.ts | 17 + .../provider/src/errors/get-error-message.ts | 15 + .../@ai-sdk/provider/src/errors/index.ts | 16 + .../src/errors/invalid-argument-error.ts | 32 + .../src/errors/invalid-prompt-error.ts | 33 + .../src/errors/invalid-response-data-error.ts | 31 + .../provider/src/errors/json-parse-error.ts | 29 + .../provider/src/errors/load-api-key-error.ts | 17 + .../provider/src/errors/load-setting-error.ts | 17 + .../src/errors/no-content-generated-error.ts | 22 + .../src/errors/no-such-model-error.ts | 47 + ...oo-many-embedding-values-for-call-error.ts | 40 + .../src/errors/type-validation-error.ts | 108 + .../errors/unsupported-functionality-error.ts | 26 + .../src/image-model-middleware/index.ts | 1 + .../v3/image-model-v3-middleware.ts | 61 + .../src/image-model-middleware/v3/index.ts | 1 + .../@ai-sdk/provider/src/image-model/index.ts | 2 + .../v2/image-model-v2-call-options.ts | 60 + .../v2/image-model-v2-call-warning.ts | 16 + .../src/image-model/v2/image-model-v2.ts | 104 + .../provider/src/image-model/v2/index.ts | 6 + .../v3/image-model-v3-call-options.ts | 74 + .../src/image-model/v3/image-model-v3-file.ts | 44 + .../image-model/v3/image-model-v3-usage.ts | 19 + .../src/image-model/v3/image-model-v3.ts | 110 + .../provider/src/image-model/v3/index.ts | 7 + .../@ai-sdk/provider/src/index.ts | 16 + .../@ai-sdk/provider/src/json-value/index.ts | 2 + .../provider/src/json-value/is-json.ts | 40 + .../provider/src/json-value/json-value.ts | 17 + .../src/language-model-middleware/index.ts | 2 + .../src/language-model-middleware/v2/index.ts | 1 + .../v2/language-model-v2-middleware.ts | 82 + .../src/language-model-middleware/v3/index.ts | 1 + .../v3/language-model-v3-middleware.ts | 84 + .../provider/src/language-model/index.ts | 2 + .../provider/src/language-model/v2/index.ts | 18 + .../v2/language-model-v2-call-options.ts | 127 + .../v2/language-model-v2-call-warning.ts | 23 + .../v2/language-model-v2-content.ts | 14 + .../v2/language-model-v2-data-content.ts | 4 + .../v2/language-model-v2-file.ts | 25 + .../v2/language-model-v2-finish-reason.ts | 20 + .../v2/language-model-v2-function-tool.ts | 37 + .../v2/language-model-v2-prompt.ts | 218 + ...language-model-v2-provider-defined-tool.ts | 24 + .../v2/language-model-v2-reasoning.ts | 14 + .../v2/language-model-v2-response-metadata.ts | 16 + .../v2/language-model-v2-source.ts | 67 + .../v2/language-model-v2-stream-part.ts | 102 + .../v2/language-model-v2-text.ts | 15 + .../v2/language-model-v2-tool-call.ts | 35 + .../v2/language-model-v2-tool-choice.ts | 5 + .../v2/language-model-v2-tool-result.ts | 40 + .../v2/language-model-v2-usage.ts | 34 + .../language-model/v2/language-model-v2.ts | 137 + .../provider/src/language-model/v3/index.ts | 21 + .../v3/language-model-v3-call-options.ts | 125 + .../v3/language-model-v3-content.ts | 16 + .../v3/language-model-v3-data-content.ts | 4 + .../v3/language-model-v3-file.ts | 32 + .../v3/language-model-v3-finish-reason.ts | 33 + .../v3/language-model-v3-function-tool.ts | 53 + .../v3/language-model-v3-generate-result.ts | 63 + .../v3/language-model-v3-prompt.ts | 422 + .../v3/language-model-v3-provider-tool.ts | 28 + .../v3/language-model-v3-reasoning.ts | 14 + .../v3/language-model-v3-response-metadata.ts | 16 + .../v3/language-model-v3-source.ts | 67 + .../v3/language-model-v3-stream-part.ts | 106 + .../v3/language-model-v3-stream-result.ts | 32 + .../v3/language-model-v3-text.ts | 15 + ...language-model-v3-tool-approval-request.ts | 27 + .../v3/language-model-v3-tool-call.ts | 41 + .../v3/language-model-v3-tool-choice.ts | 5 + .../v3/language-model-v3-tool-result.ts | 51 + .../v3/language-model-v3-usage.ts | 59 + .../language-model/v3/language-model-v3.ts | 61 + .../@ai-sdk/provider/src/provider/index.ts | 2 + .../@ai-sdk/provider/src/provider/v2/index.ts | 1 + .../provider/src/provider/v2/provider-v2.ts | 64 + .../@ai-sdk/provider/src/provider/v3/index.ts | 1 + .../provider/src/provider/v3/provider-v3.ts | 93 + .../provider/src/reranking-model/index.ts | 1 + .../provider/src/reranking-model/v3/index.ts | 2 + .../v3/reranking-model-v3-call-options.ts | 40 + .../reranking-model/v3/reranking-model-v3.ts | 90 + .../@ai-sdk/provider/src/shared/index.ts | 2 + .../@ai-sdk/provider/src/shared/v2/index.ts | 3 + .../src/shared/v2/shared-v2-headers.ts | 1 + .../shared/v2/shared-v2-provider-metadata.ts | 27 + .../shared/v2/shared-v2-provider-options.ts | 24 + .../@ai-sdk/provider/src/shared/v3/index.ts | 4 + .../src/shared/v3/shared-v3-headers.ts | 1 + .../shared/v3/shared-v3-provider-metadata.ts | 24 + .../shared/v3/shared-v3-provider-options.ts | 24 + .../src/shared/v3/shared-v3-warning.ts | 50 + .../provider/src/speech-model/index.ts | 2 + .../provider/src/speech-model/v2/index.ts | 3 + .../v2/speech-model-v2-call-options.ts | 62 + .../v2/speech-model-v2-call-warning.ts | 16 + .../src/speech-model/v2/speech-model-v2.ts | 89 + .../provider/src/speech-model/v3/index.ts | 2 + .../v3/speech-model-v3-call-options.ts | 62 + .../src/speech-model/v3/speech-model-v3.ts | 89 + .../provider/src/transcription-model/index.ts | 2 + .../src/transcription-model/v2/index.ts | 3 + .../v2/transcription-model-v2-call-options.ts | 48 + .../v2/transcription-model-v2-call-warning.ts | 16 + .../v2/transcription-model-v2.ts | 117 + .../src/transcription-model/v3/index.ts | 2 + .../v3/transcription-model-v3-call-options.ts | 45 + .../v3/transcription-model-v3.ts | 117 + .../@ai-sdk/provider/src/video-model/index.ts | 1 + .../provider/src/video-model/v3/index.ts | 6 + .../v3/video-model-v3-call-options.ts | 81 + .../src/video-model/v3/video-model-v3-file.ts | 40 + .../src/video-model/v3/video-model-v3.ts | 132 + .../@esbuild/darwin-arm64/README.md | 3 + .../@esbuild/darwin-arm64/bin/esbuild | Bin 0 -> 10385218 bytes .../@esbuild/darwin-arm64/package.json | 20 + .../node_modules/@opentelemetry/api/LICENSE | 201 + .../node_modules/@opentelemetry/api/README.md | 116 + .../@opentelemetry/api/package.json | 113 + .../@standard-schema/spec/LICENSE | 21 + .../@standard-schema/spec/README.md | 198 + .../@standard-schema/spec/package.json | 52 + .../node_modules/@vercel/oidc/CHANGELOG.md | 83 + .../node_modules/@vercel/oidc/LICENSE | 202 + .../node_modules/@vercel/oidc/README.md | 3 + .../node_modules/@vercel/oidc/docs/README.md | 104 + .../node_modules/@vercel/oidc/package.json | 52 + .../node_modules/ai/CHANGELOG.md | 7508 +++++++++++++++++ .../node_modules/ai/LICENSE | 13 + .../node_modules/ai/README.md | 238 + .../ai/docs/00-introduction/index.mdx | 76 + .../ai/docs/02-foundations/01-overview.mdx | 43 + .../02-providers-and-models.mdx | 160 + .../ai/docs/02-foundations/03-prompts.mdx | 616 ++ .../ai/docs/02-foundations/04-tools.mdx | 251 + .../ai/docs/02-foundations/05-streaming.mdx | 62 + .../02-foundations/06-provider-options.mdx | 337 + .../ai/docs/02-foundations/index.mdx | 49 + .../00-choosing-a-provider.mdx | 110 + .../01-navigating-the-library.mdx | 85 + .../02-nextjs-app-router.mdx | 559 ++ .../03-nextjs-pages-router.mdx | 542 ++ .../ai/docs/02-getting-started/04-svelte.mdx | 627 ++ .../ai/docs/02-getting-started/05-nuxt.mdx | 566 ++ .../ai/docs/02-getting-started/06-nodejs.mdx | 512 ++ .../ai/docs/02-getting-started/07-expo.mdx | 766 ++ .../02-getting-started/08-tanstack-start.mdx | 583 ++ .../02-getting-started/09-coding-agents.mdx | 179 + .../ai/docs/02-getting-started/index.mdx | 44 + .../ai/docs/03-agents/01-overview.mdx | 96 + .../ai/docs/03-agents/02-building-agents.mdx | 407 + .../ai/docs/03-agents/03-workflows.mdx | 386 + .../ai/docs/03-agents/04-loop-control.mdx | 394 + .../03-agents/05-configuring-call-options.mdx | 286 + .../ai/docs/03-agents/06-memory.mdx | 222 + .../ai/docs/03-agents/06-subagents.mdx | 362 + .../node_modules/ai/docs/03-agents/index.mdx | 46 + .../ai/docs/03-ai-sdk-core/01-overview.mdx | 31 + .../03-ai-sdk-core/05-generating-text.mdx | 707 ++ .../10-generating-structured-data.mdx | 498 ++ .../15-tools-and-tool-calling.mdx | 1148 +++ .../ai/docs/03-ai-sdk-core/16-mcp-tools.mdx | 383 + .../03-ai-sdk-core/20-prompt-engineering.mdx | 146 + .../ai/docs/03-ai-sdk-core/25-settings.mdx | 198 + .../ai/docs/03-ai-sdk-core/30-embeddings.mdx | 246 + .../ai/docs/03-ai-sdk-core/31-reranking.mdx | 218 + .../03-ai-sdk-core/35-image-generation.mdx | 341 + .../docs/03-ai-sdk-core/36-transcription.mdx | 227 + .../ai/docs/03-ai-sdk-core/37-speech.mdx | 169 + .../03-ai-sdk-core/38-video-generation.mdx | 366 + .../ai/docs/03-ai-sdk-core/40-middleware.mdx | 485 ++ .../03-ai-sdk-core/45-provider-management.mdx | 349 + .../docs/03-ai-sdk-core/50-error-handling.mdx | 149 + .../ai/docs/03-ai-sdk-core/55-testing.mdx | 219 + .../ai/docs/03-ai-sdk-core/60-telemetry.mdx | 391 + .../ai/docs/03-ai-sdk-core/65-devtools.mdx | 107 + .../03-ai-sdk-core/65-event-listeners.mdx | 915 ++ .../ai/docs/03-ai-sdk-core/index.mdx | 93 + .../ai/docs/04-ai-sdk-ui/01-overview.mdx | 44 + .../ai/docs/04-ai-sdk-ui/02-chatbot.mdx | 1313 +++ .../03-chatbot-message-persistence.mdx | 535 ++ .../03-chatbot-resume-streams.mdx | 263 + .../04-ai-sdk-ui/03-chatbot-tool-usage.mdx | 682 ++ .../04-generative-user-interfaces.mdx | 389 + .../ai/docs/04-ai-sdk-ui/05-completion.mdx | 181 + .../04-ai-sdk-ui/08-object-generation.mdx | 344 + .../docs/04-ai-sdk-ui/20-streaming-data.mdx | 397 + .../docs/04-ai-sdk-ui/21-error-handling.mdx | 190 + .../ai/docs/04-ai-sdk-ui/21-transport.mdx | 174 + .../24-reading-ui-message-streams.mdx | 104 + .../docs/04-ai-sdk-ui/25-message-metadata.mdx | 152 + .../docs/04-ai-sdk-ui/50-stream-protocol.mdx | 477 ++ .../ai/docs/04-ai-sdk-ui/index.mdx | 64 + .../ai/docs/05-ai-sdk-rsc/01-overview.mdx | 45 + .../02-streaming-react-components.mdx | 209 + .../05-ai-sdk-rsc/03-generative-ui-state.mdx | 279 + .../03-saving-and-restoring-states.mdx | 105 + .../05-ai-sdk-rsc/04-multistep-interfaces.mdx | 282 + .../05-ai-sdk-rsc/05-streaming-values.mdx | 157 + .../docs/05-ai-sdk-rsc/06-loading-state.mdx | 273 + .../docs/05-ai-sdk-rsc/08-error-handling.mdx | 94 + .../docs/05-ai-sdk-rsc/09-authentication.mdx | 42 + .../docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx | 722 ++ .../ai/docs/05-ai-sdk-rsc/index.mdx | 63 + .../06-advanced/01-prompt-engineering.mdx | 96 + .../docs/06-advanced/02-stopping-streams.mdx | 184 + .../ai/docs/06-advanced/03-backpressure.mdx | 173 + .../ai/docs/06-advanced/04-caching.mdx | 169 + .../06-advanced/05-multiple-streamables.mdx | 68 + .../ai/docs/06-advanced/06-rate-limiting.mdx | 60 + .../07-rendering-ui-with-language-models.mdx | 225 + .../docs/06-advanced/08-model-as-router.mdx | 120 + .../06-advanced/09-multistep-interfaces.mdx | 115 + .../06-advanced/09-sequential-generations.mdx | 55 + .../10-vercel-deployment-guide.mdx | 117 + .../ai/docs/06-advanced/index.mdx | 11 + .../01-ai-sdk-core/01-generate-text.mdx | 2715 ++++++ .../01-ai-sdk-core/02-stream-text.mdx | 3656 ++++++++ .../07-reference/01-ai-sdk-core/05-embed.mdx | 197 + .../01-ai-sdk-core/06-embed-many.mdx | 191 + .../07-reference/01-ai-sdk-core/06-rerank.mdx | 309 + .../01-ai-sdk-core/10-generate-image.mdx | 251 + .../01-ai-sdk-core/11-transcribe.mdx | 152 + .../01-ai-sdk-core/12-generate-speech.mdx | 221 + .../01-ai-sdk-core/13-generate-video.mdx | 264 + .../07-reference/01-ai-sdk-core/15-agent.mdx | 210 + .../01-ai-sdk-core/16-tool-loop-agent.mdx | 498 ++ .../17-create-agent-ui-stream.mdx | 154 + .../18-create-agent-ui-stream-response.mdx | 173 + .../18-pipe-agent-ui-stream-to-response.mdx | 150 + .../07-reference/01-ai-sdk-core/20-tool.mdx | 209 + .../01-ai-sdk-core/22-dynamic-tool.mdx | 223 + .../01-ai-sdk-core/23-create-mcp-client.mdx | 423 + .../01-ai-sdk-core/24-mcp-stdio-transport.mdx | 68 + .../01-ai-sdk-core/25-json-schema.mdx | 94 + .../01-ai-sdk-core/26-zod-schema.mdx | 109 + .../01-ai-sdk-core/27-valibot-schema.mdx | 58 + .../07-reference/01-ai-sdk-core/28-output.mdx | 342 + .../01-ai-sdk-core/30-model-message.mdx | 415 + .../01-ai-sdk-core/31-ui-message.mdx | 246 + .../32-validate-ui-messages.mdx | 101 + .../33-safe-validate-ui-messages.mdx | 113 + .../01-ai-sdk-core/40-provider-registry.mdx | 198 + .../01-ai-sdk-core/42-custom-provider.mdx | 157 + .../01-ai-sdk-core/50-cosine-similarity.mdx | 52 + .../01-ai-sdk-core/60-wrap-language-model.mdx | 59 + .../01-ai-sdk-core/61-wrap-image-model.mdx | 64 + .../65-language-model-v2-middleware.mdx | 74 + .../66-extract-reasoning-middleware.mdx | 68 + .../67-simulate-streaming-middleware.mdx | 71 + .../68-default-settings-middleware.mdx | 80 + .../69-add-tool-input-examples-middleware.mdx | 155 + .../70-extract-json-middleware.mdx | 147 + .../01-ai-sdk-core/70-step-count-is.mdx | 84 + .../01-ai-sdk-core/71-has-tool-call.mdx | 120 + .../75-simulate-readable-stream.mdx | 94 + .../01-ai-sdk-core/80-smooth-stream.mdx | 145 + .../01-ai-sdk-core/90-generate-id.mdx | 30 + .../01-ai-sdk-core/91-create-id-generator.mdx | 89 + .../92-default-generated-file.mdx | 68 + .../07-reference/01-ai-sdk-core/index.mdx | 160 + .../07-reference/02-ai-sdk-ui/01-use-chat.mdx | 493 ++ .../02-ai-sdk-ui/02-use-completion.mdx | 185 + .../02-ai-sdk-ui/03-use-object.mdx | 196 + .../31-convert-to-model-messages.mdx | 231 + .../02-ai-sdk-ui/32-prune-messages.mdx | 108 + .../40-create-ui-message-stream.mdx | 162 + .../41-create-ui-message-stream-response.mdx | 119 + .../42-pipe-ui-message-stream-to-response.mdx | 77 + .../43-read-ui-message-stream.mdx | 57 + .../02-ai-sdk-ui/46-infer-ui-tools.mdx | 99 + .../02-ai-sdk-ui/47-infer-ui-tool.mdx | 75 + .../02-ai-sdk-ui/50-direct-chat-transport.mdx | 333 + .../docs/07-reference/02-ai-sdk-ui/index.mdx | 89 + .../03-ai-sdk-rsc/01-stream-ui.mdx | 767 ++ .../03-ai-sdk-rsc/02-create-ai.mdx | 90 + .../03-ai-sdk-rsc/03-create-streamable-ui.mdx | 91 + .../04-create-streamable-value.mdx | 78 + .../05-read-streamable-value.mdx | 79 + .../03-ai-sdk-rsc/06-get-ai-state.mdx | 50 + .../03-ai-sdk-rsc/07-get-mutable-ai-state.mdx | 70 + .../03-ai-sdk-rsc/08-use-ai-state.mdx | 26 + .../03-ai-sdk-rsc/09-use-actions.mdx | 42 + .../03-ai-sdk-rsc/10-use-ui-state.mdx | 35 + .../03-ai-sdk-rsc/11-use-streamable-value.mdx | 46 + .../07-reference/03-ai-sdk-rsc/20-render.mdx | 266 + .../docs/07-reference/03-ai-sdk-rsc/index.mdx | 67 + .../05-ai-sdk-errors/ai-api-call-error.mdx | 31 + .../05-ai-sdk-errors/ai-download-error.mdx | 28 + .../ai-empty-response-body-error.mdx | 24 + .../ai-invalid-argument-error.mdx | 26 + .../ai-invalid-data-content-error.mdx | 26 + .../ai-invalid-message-role-error.mdx | 25 + .../ai-invalid-prompt-error.mdx | 47 + .../ai-invalid-response-data-error.mdx | 25 + .../ai-invalid-tool-approval-error.mdx | 24 + .../ai-invalid-tool-input-error.mdx | 27 + .../05-ai-sdk-errors/ai-json-parse-error.mdx | 25 + .../ai-load-api-key-error.mdx | 24 + .../ai-load-setting-error.mdx | 24 + .../ai-message-conversion-error.mdx | 25 + .../ai-no-content-generated-error.mdx | 24 + .../ai-no-image-generated-error.mdx | 36 + .../ai-no-object-generated-error.mdx | 43 + .../ai-no-output-generated-error.mdx | 25 + .../ai-no-speech-generated-error.mdx | 24 + .../ai-no-such-model-error.mdx | 26 + .../ai-no-such-provider-error.mdx | 28 + .../ai-no-such-tool-error.mdx | 26 + .../ai-no-transcript-generated-error.mdx | 24 + .../ai-no-video-generated-error.mdx | 39 + .../05-ai-sdk-errors/ai-retry-error.mdx | 27 + ...o-many-embedding-values-for-call-error.mdx | 27 + ...tool-call-not-found-for-approval-error.mdx | 25 + .../ai-tool-call-repair-error.mdx | 28 + .../ai-type-validation-error.mdx | 25 + .../ai-ui-message-stream-error.mdx | 67 + .../ai-unsupported-functionality-error.mdx | 25 + .../07-reference/05-ai-sdk-errors/index.mdx | 39 + .../ai/docs/07-reference/index.mdx | 28 + .../08-migration-guides/00-versioning.mdx | 46 + .../24-migration-guide-6-0.mdx | 823 ++ .../25-migration-guide-5-0-data.mdx | 882 ++ .../26-migration-guide-5-0.mdx | 3427 ++++++++ .../27-migration-guide-4-2.mdx | 99 + .../28-migration-guide-4-1.mdx | 14 + .../29-migration-guide-4-0.mdx | 1157 +++ .../36-migration-guide-3-4.mdx | 14 + .../37-migration-guide-3-3.mdx | 64 + .../38-migration-guide-3-2.mdx | 46 + .../39-migration-guide-3-1.mdx | 168 + .../ai/docs/08-migration-guides/index.mdx | 22 + .../01-azure-stream-slow.mdx | 33 + ...03-server-actions-in-client-components.mdx | 40 + .../04-strange-stream-output.mdx | 36 + .../05-streamable-ui-errors.mdx | 16 + .../05-tool-invocation-missing-result.mdx | 106 + ...06-streaming-not-working-when-deployed.mdx | 31 + .../06-streaming-not-working-when-proxied.mdx | 31 + .../06-timeout-on-vercel.mdx | 60 + .../07-unclosed-streams.mdx | 34 + .../08-use-chat-failed-to-parse-stream.mdx | 26 + .../09-client-stream-error.mdx | 25 + .../10-use-chat-tools-no-response.mdx | 32 + .../11-use-chat-custom-request-options.mdx | 149 + .../12-typescript-performance-zod.mdx | 46 + .../12-use-chat-an-error-occurred.mdx | 59 + .../13-repeated-assistant-messages.mdx | 73 + .../14-stream-abort-handling.mdx | 73 + ...4-tool-calling-with-structured-outputs.mdx | 48 + .../15-abort-breaks-resumable-streams.mdx | 55 + .../15-stream-text-not-working.mdx | 33 + .../16-streaming-status-delay.mdx | 63 + .../17-use-chat-stale-body-data.mdx | 141 + .../18-ontoolcall-type-narrowing.mdx | 66 + .../19-unsupported-model-version.mdx | 50 + .../20-no-object-generated-content-filter.mdx | 76 + .../21-missing-tool-results-error.mdx | 82 + .../30-model-is-not-assignable-to-type.mdx | 21 + ...0-typescript-cannot-find-namespace-jsx.mdx | 24 + ...50-react-maximum-update-depth-exceeded.mdx | 39 + .../60-jest-cannot-find-module-ai-rsc.mdx | 22 + .../70-high-memory-usage-with-images.mdx | 108 + .../ai/docs/09-troubleshooting/index.mdx | 11 + .../node_modules/ai/internal.d.ts | 1 + .../node_modules/ai/package.json | 118 + .../node_modules/ai/src/agent/agent.ts | 124 + .../agent/create-agent-ui-stream-response.ts | 61 + .../ai/src/agent/create-agent-ui-stream.ts | 84 + .../node_modules/ai/src/agent/index.ts | 33 + .../ai/src/agent/infer-agent-tools.ts | 7 + .../ai/src/agent/infer-agent-ui-message.ts | 11 + .../agent/pipe-agent-ui-stream-to-response.ts | 64 + .../ai/src/agent/tool-loop-agent-settings.ts | 195 + .../ai/src/agent/tool-loop-agent.ts | 146 + .../ai/src/embed/embed-many-result.ts | 53 + .../node_modules/ai/src/embed/embed-many.ts | 386 + .../node_modules/ai/src/embed/embed-result.ts | 50 + .../node_modules/ai/src/embed/embed.ts | 217 + .../node_modules/ai/src/embed/index.ts | 4 + .../node_modules/ai/src/error/index.ts | 37 + .../ai/src/error/invalid-argument-error.ts | 34 + .../ai/src/error/invalid-stream-part-error.ts | 28 + .../src/error/invalid-tool-approval-error.ts | 26 + .../ai/src/error/invalid-tool-input-error.ts | 33 + .../ai/src/error/missing-tool-result-error.ts | 28 + .../ai/src/error/no-image-generated-error.ts | 39 + .../ai/src/error/no-object-generated-error.ts | 70 + .../ai/src/error/no-output-generated-error.ts | 26 + .../ai/src/error/no-speech-generated-error.ts | 28 + .../ai/src/error/no-such-tool-error.ts | 35 + .../error/no-transcript-generated-error.ts | 30 + .../ai/src/error/no-video-generated-error.ts | 57 + .../tool-call-not-found-for-approval-error.ts | 32 + .../ai/src/error/tool-call-repair-error.ts | 30 + .../ai/src/error/ui-message-stream-error.ts | 48 + .../error/unsupported-model-version-error.ts | 23 + .../error/verify-no-object-generated-error.ts | 27 + .../generate-image/generate-image-result.ts | 42 + .../ai/src/generate-image/generate-image.ts | 361 + .../ai/src/generate-image/index.ts | 18 + .../generate-object/generate-object-result.ts | 67 + .../ai/src/generate-object/generate-object.ts | 514 ++ .../ai/src/generate-object/index.ts | 9 + .../inject-json-instruction.ts | 30 + .../ai/src/generate-object/output-strategy.ts | 415 + .../parse-and-validate-object-result.ts | 111 + .../ai/src/generate-object/repair-text.ts | 12 + .../generate-object/stream-object-result.ts | 120 + .../ai/src/generate-object/stream-object.ts | 984 +++ .../validate-object-generation-input.ts | 144 + .../generate-speech/generate-speech-result.ts | 30 + .../ai/src/generate-speech/generate-speech.ts | 191 + .../generate-speech/generated-audio-file.ts | 65 + .../ai/src/generate-speech/index.ts | 3 + .../ai/src/generate-text/callback-events.ts | 332 + .../generate-text/collect-tool-approvals.ts | 116 + .../ai/src/generate-text/content-part.ts | 25 + .../ai/src/generate-text/execute-tool-call.ts | 197 + .../extract-reasoning-content.ts | 17 + .../src/generate-text/extract-text-content.ts | 15 + .../src/generate-text/generate-text-result.ts | 168 + .../ai/src/generate-text/generate-text.ts | 1582 ++++ .../ai/src/generate-text/generated-file.ts | 70 + .../ai/src/generate-text/index.ts | 74 + .../src/generate-text/is-approval-needed.ts | 29 + .../ai/src/generate-text/output-utils.ts | 23 + .../ai/src/generate-text/output.ts | 590 ++ .../ai/src/generate-text/parse-tool-call.ts | 188 + .../ai/src/generate-text/prepare-step.ts | 103 + .../ai/src/generate-text/prune-messages.ts | 167 + .../ai/src/generate-text/reasoning-output.ts | 20 + .../ai/src/generate-text/reasoning.ts | 8 + .../ai/src/generate-text/response-message.ts | 10 + .../generate-text/run-tools-transformation.ts | 448 + .../ai/src/generate-text/smooth-stream.ts | 162 + .../ai/src/generate-text/step-result.ts | 290 + .../ai/src/generate-text/stop-condition.ts | 29 + .../src/generate-text/stream-text-result.ts | 463 + .../ai/src/generate-text/stream-text.ts | 2844 +++++++ .../src/generate-text/to-response-messages.ts | 163 + .../tool-approval-request-output.ts | 21 + .../tool-call-repair-function.ts | 27 + .../ai/src/generate-text/tool-call.ts | 47 + .../ai/src/generate-text/tool-error.ts | 34 + .../src/generate-text/tool-output-denied.ts | 21 + .../ai/src/generate-text/tool-output.ts | 7 + .../ai/src/generate-text/tool-result.ts | 36 + .../ai/src/generate-text/tool-set.ts | 14 + .../generate-video/generate-video-result.ts | 36 + .../ai/src/generate-video/generate-video.ts | 402 + .../ai/src/generate-video/index.ts | 3 + .../node_modules/ai/src/global.ts | 36 + .../node_modules/ai/src/index.ts | 49 + .../node_modules/ai/src/logger/index.ts | 6 + .../ai/src/logger/log-warnings.ts | 140 + .../add-tool-input-examples-middleware.ts | 90 + .../default-embedding-settings-middleware.ts | 22 + .../middleware/default-settings-middleware.ts | 33 + .../src/middleware/extract-json-middleware.ts | 197 + .../extract-reasoning-middleware.ts | 249 + .../node_modules/ai/src/middleware/index.ts | 10 + .../simulate-streaming-middleware.ts | 79 + .../ai/src/middleware/wrap-embedding-model.ts | 86 + .../ai/src/middleware/wrap-image-model.ts | 85 + .../ai/src/middleware/wrap-language-model.ts | 104 + .../ai/src/middleware/wrap-provider.ts | 51 + .../ai/src/model/as-embedding-model-v3.ts | 24 + .../ai/src/model/as-image-model-v3.ts | 24 + .../ai/src/model/as-language-model-v3.ts | 103 + .../ai/src/model/as-provider-v3.ts | 36 + .../ai/src/model/as-speech-model-v3.ts | 24 + .../ai/src/model/as-transcription-model-v3.ts | 24 + .../ai/src/model/resolve-model.ts | 159 + .../ai/src/prompt/call-settings.ts | 148 + .../ai/src/prompt/content-part.ts | 215 + .../convert-to-language-model-prompt.ts | 526 ++ .../ai/src/prompt/create-tool-model-output.ts | 34 + .../ai/src/prompt/data-content.ts | 134 + .../node_modules/ai/src/prompt/index.ts | 27 + .../src/prompt/invalid-data-content-error.ts | 29 + .../src/prompt/invalid-message-role-error.ts | 27 + .../ai/src/prompt/message-conversion-error.ts | 28 + .../node_modules/ai/src/prompt/message.ts | 68 + .../ai/src/prompt/prepare-call-settings.ts | 108 + .../prompt/prepare-tools-and-tool-choice.ts | 86 + .../node_modules/ai/src/prompt/prompt.ts | 43 + .../ai/src/prompt/split-data-url.ts | 17 + .../ai/src/prompt/standardize-prompt.ts | 99 + .../ai/src/prompt/wrap-gateway-error.ts | 29 + .../ai/src/registry/custom-provider.ts | 176 + .../node_modules/ai/src/registry/index.ts | 7 + .../ai/src/registry/no-such-provider-error.ts | 41 + .../ai/src/registry/provider-registry.ts | 327 + .../node_modules/ai/src/rerank/index.ts | 2 + .../ai/src/rerank/rerank-result.ts | 70 + .../node_modules/ai/src/rerank/rerank.ts | 239 + .../src/telemetry/assemble-operation-name.ts | 21 + .../get-base-telemetry-attributes.ts | 53 + .../get-global-telemetry-integration.ts | 85 + .../ai/src/telemetry/get-tracer.ts | 20 + .../node_modules/ai/src/telemetry/index.ts | 4 + .../ai/src/telemetry/noop-tracer.ts | 69 + .../ai/src/telemetry/record-span.ts | 75 + .../telemetry/select-telemetry-attributes.ts | 78 + .../src/telemetry/stringify-for-telemetry.ts | 33 + .../telemetry-integration-registry.ts | 17 + .../ai/src/telemetry/telemetry-integration.ts | 24 + .../ai/src/telemetry/telemetry-settings.ts | 53 + .../ai/src/test/mock-embedding-model-v2.ts | 35 + .../ai/src/test/mock-embedding-model-v3.ts | 48 + .../ai/src/test/mock-image-model-v2.ts | 28 + .../ai/src/test/mock-image-model-v3.ts | 28 + .../ai/src/test/mock-language-model-v2.ts | 72 + .../ai/src/test/mock-language-model-v3.ts | 77 + .../ai/src/test/mock-provider-v2.ts | 68 + .../ai/src/test/mock-provider-v3.ts | 80 + .../ai/src/test/mock-reranking-model-v3.ts | 25 + .../ai/src/test/mock-server-response.ts | 69 + .../ai/src/test/mock-speech-model-v2.ts | 24 + .../ai/src/test/mock-speech-model-v3.ts | 24 + .../node_modules/ai/src/test/mock-tracer.ts | 156 + .../src/test/mock-transcription-model-v2.ts | 24 + .../src/test/mock-transcription-model-v3.ts | 24 + .../node_modules/ai/src/test/mock-values.ts | 4 + .../ai/src/test/mock-video-model-v3.ts | 28 + .../ai/src/test/not-implemented.ts | 3 + .../create-text-stream-response.ts | 30 + .../node_modules/ai/src/text-stream/index.ts | 2 + .../pipe-text-stream-to-response.ts | 38 + .../node_modules/ai/src/transcribe/index.ts | 2 + .../ai/src/transcribe/transcribe-result.ts | 60 + .../ai/src/transcribe/transcribe.ts | 187 + .../src/types/embedding-model-middleware.ts | 3 + .../ai/src/types/embedding-model.ts | 18 + .../ai/src/types/image-model-middleware.ts | 3 + .../types/image-model-response-metadata.ts | 16 + .../node_modules/ai/src/types/image-model.ts | 19 + .../node_modules/ai/src/types/index.ts | 29 + .../node_modules/ai/src/types/json-value.ts | 15 + .../ai/src/types/language-model-middleware.ts | 3 + .../types/language-model-request-metadata.ts | 6 + .../types/language-model-response-metadata.ts | 21 + .../ai/src/types/language-model.ts | 104 + .../ai/src/types/provider-metadata.ts | 16 + .../node_modules/ai/src/types/provider.ts | 55 + .../ai/src/types/reranking-model.ts | 6 + .../types/speech-model-response-metadata.ts | 21 + .../node_modules/ai/src/types/speech-model.ts | 6 + .../transcription-model-response-metadata.ts | 16 + .../ai/src/types/transcription-model.ts | 9 + .../node_modules/ai/src/types/usage.ts | 200 + .../types/video-model-response-metadata.ts | 28 + .../node_modules/ai/src/types/video-model.ts | 11 + .../node_modules/ai/src/types/warning.ts | 7 + .../create-ui-message-stream-response.ts | 44 + .../create-ui-message-stream.ts | 145 + .../get-response-ui-message-id.ts | 35 + .../handle-ui-message-stream-finish.ts | 170 + .../ai/src/ui-message-stream/index.ts | 14 + .../json-to-sse-transform-stream.ts | 17 + .../pipe-ui-message-stream-to-response.ts | 51 + .../read-ui-message-stream.ts | 87 + .../ui-message-stream/ui-message-chunks.ts | 350 + .../ui-message-stream-headers.ts | 7 + .../ui-message-stream-on-finish-callback.ts | 32 + ...-message-stream-on-step-finish-callback.ts | 25 + .../ui-message-stream-response-init.ts | 14 + .../ui-message-stream-writer.ts | 24 + .../ai/src/ui/call-completion-api.ts | 157 + .../node_modules/ai/src/ui/chat-transport.ts | 83 + .../node_modules/ai/src/ui/chat.ts | 786 ++ .../ui/convert-file-list-to-file-ui-parts.ts | 36 + .../ai/src/ui/convert-to-model-messages.ts | 379 + .../ai/src/ui/default-chat-transport.ts | 36 + .../ai/src/ui/direct-chat-transport.ts | 117 + .../ai/src/ui/http-chat-transport.ts | 273 + .../node_modules/ai/src/ui/index.ts | 72 + ...age-is-complete-with-approval-responses.ts | 44 + ...ant-message-is-complete-with-tool-calls.ts | 39 + .../ai/src/ui/process-text-stream.ts | 16 + .../ai/src/ui/process-ui-message-stream.ts | 845 ++ .../ai/src/ui/text-stream-chat-transport.ts | 23 + .../ui/transform-text-to-ui-message-stream.ts | 27 + .../node_modules/ai/src/ui/ui-messages.ts | 540 ++ .../node_modules/ai/src/ui/use-completion.ts | 84 + .../ai/src/ui/validate-ui-messages.ts | 510 ++ .../node_modules/ai/src/util/as-array.ts | 3 + .../ai/src/util/async-iterable-stream.ts | 94 + .../ai/src/util/consume-stream.ts | 31 + .../ai/src/util/cosine-similarity.ts | 46 + .../ai/src/util/create-resolvable-promise.ts | 30 + .../ai/src/util/create-stitchable-stream.ts | 112 + .../node_modules/ai/src/util/data-url.ts | 17 + .../node_modules/ai/src/util/deep-partial.ts | 84 + .../ai/src/util/detect-media-type.ts | 226 + .../ai/src/util/download/create-download.ts | 13 + .../ai/src/util/download/download-function.ts | 45 + .../ai/src/util/download/download.ts | 74 + .../node_modules/ai/src/util/error-handler.ts | 1 + .../node_modules/ai/src/util/fix-json.ts | 401 + .../ai/src/util/get-potential-start-index.ts | 39 + .../node_modules/ai/src/util/index.ts | 12 + .../ai/src/util/is-deep-equal-data.ts | 48 + .../ai/src/util/is-non-empty-object.ts | 5 + .../node_modules/ai/src/util/job.ts | 1 + .../src/util/log-v2-compatibility-warning.ts | 21 + .../ai/src/util/merge-abort-signals.ts | 43 + .../node_modules/ai/src/util/merge-objects.ts | 79 + .../node_modules/ai/src/util/notify.ts | 22 + .../node_modules/ai/src/util/now.ts | 4 + .../ai/src/util/parse-partial-json.ts | 30 + .../ai/src/util/prepare-headers.ts | 14 + .../ai/src/util/prepare-retries.ts | 47 + .../node_modules/ai/src/util/retry-error.ts | 41 + .../util/retry-with-exponential-backoff.ts | 154 + .../ai/src/util/serial-job-executor.ts | 36 + .../ai/src/util/simulate-readable-stream.ts | 39 + .../node_modules/ai/src/util/split-array.ts | 20 + .../node_modules/ai/src/util/value-of.ts | 65 + .../ai/src/util/write-to-server-response.ts | 49 + .../node_modules/ai/src/version.ts | 5 + .../node_modules/ai/test.d.ts | 1 + .../node_modules/dotenv/CHANGELOG.md | 621 ++ .../node_modules/dotenv/LICENSE | 23 + .../node_modules/dotenv/README-es.md | 774 ++ .../node_modules/dotenv/README.md | 774 ++ .../node_modules/dotenv/SECURITY.md | 1 + .../node_modules/dotenv/config.d.ts | 1 + .../node_modules/dotenv/config.js | 9 + .../node_modules/dotenv/package.json | 62 + .../node_modules/esbuild/LICENSE.md | 21 + .../node_modules/esbuild/README.md | 3 + .../node_modules/esbuild/bin/esbuild | Bin 0 -> 10385218 bytes .../node_modules/esbuild/install.js | 289 + .../node_modules/esbuild/package.json | 49 + .../node_modules/eventsource-parser/LICENSE | 21 + .../node_modules/eventsource-parser/README.md | 126 + .../eventsource-parser/package.json | 115 + .../eventsource-parser/src/errors.ts | 44 + .../eventsource-parser/src/index.ts | 3 + .../eventsource-parser/src/parse.ts | 232 + .../eventsource-parser/src/stream.ts | 88 + .../eventsource-parser/src/types.ts | 97 + .../node_modules/eventsource-parser/stream.js | 2 + .../node_modules/fsevents/LICENSE | 22 + .../node_modules/fsevents/README.md | 89 + .../node_modules/fsevents/fsevents.d.ts | 46 + .../node_modules/fsevents/fsevents.js | 83 + .../node_modules/fsevents/fsevents.node | Bin 0 -> 163626 bytes .../node_modules/fsevents/package.json | 62 + .../node_modules/get-tsconfig/LICENSE | 21 + .../node_modules/get-tsconfig/README.md | 235 + .../node_modules/get-tsconfig/package.json | 46 + .../node_modules/headroom-ai/README.md | 108 + .../node_modules/headroom-ai/package.json | 98 + .../node_modules/json-schema/LICENSE | 195 + .../node_modules/json-schema/README.md | 3 + .../node_modules/json-schema/package.json | 24 + .../node_modules/resolve-pkg-maps/LICENSE | 21 + .../node_modules/resolve-pkg-maps/README.md | 216 + .../resolve-pkg-maps/package.json | 42 + .../node_modules/tsx/LICENSE | 21 + .../node_modules/tsx/README.md | 32 + .../node_modules/tsx/package.json | 68 + .../node_modules/typescript/LICENSE.txt | 55 + .../node_modules/typescript/README.md | 50 + .../node_modules/typescript/SECURITY.md | 39 + .../typescript/ThirdPartyNoticeText.txt | 193 + .../node_modules/typescript/bin/tsc | 2 + .../node_modules/typescript/bin/tsserver | 2 + .../node_modules/typescript/package.json | 118 + .../node_modules/zod/LICENSE | 21 + .../node_modules/zod/README.md | 208 + .../node_modules/zod/index.cjs | 33 + .../node_modules/zod/index.d.cts | 4 + .../node_modules/zod/index.d.ts | 4 + .../node_modules/zod/index.js | 4 + .../node_modules/zod/locales/index.cjs | 17 + .../node_modules/zod/locales/index.d.cts | 1 + .../node_modules/zod/locales/index.d.ts | 1 + .../node_modules/zod/locales/index.js | 1 + .../node_modules/zod/locales/package.json | 6 + .../node_modules/zod/mini/index.cjs | 32 + .../node_modules/zod/mini/index.d.cts | 3 + .../node_modules/zod/mini/index.d.ts | 3 + .../node_modules/zod/mini/index.js | 3 + .../node_modules/zod/mini/package.json | 6 + .../node_modules/zod/package.json | 135 + .../node_modules/zod/src/index.ts | 4 + .../node_modules/zod/src/locales/index.ts | 1 + .../node_modules/zod/src/mini/index.ts | 3 + .../node_modules/zod/src/v3/ZodError.ts | 330 + .../zod/src/v3/benchmarks/datetime.ts | 58 + .../src/v3/benchmarks/discriminatedUnion.ts | 80 + .../zod/src/v3/benchmarks/index.ts | 59 + .../zod/src/v3/benchmarks/ipv4.ts | 57 + .../zod/src/v3/benchmarks/object.ts | 69 + .../zod/src/v3/benchmarks/primitives.ts | 162 + .../zod/src/v3/benchmarks/realworld.ts | 63 + .../zod/src/v3/benchmarks/string.ts | 55 + .../zod/src/v3/benchmarks/union.ts | 80 + .../node_modules/zod/src/v3/errors.ts | 13 + .../node_modules/zod/src/v3/external.ts | 6 + .../zod/src/v3/helpers/enumUtil.ts | 17 + .../zod/src/v3/helpers/errorUtil.ts | 8 + .../zod/src/v3/helpers/parseUtil.ts | 176 + .../zod/src/v3/helpers/partialUtil.ts | 34 + .../zod/src/v3/helpers/typeAliases.ts | 2 + .../node_modules/zod/src/v3/helpers/util.ts | 224 + .../node_modules/zod/src/v3/index.ts | 4 + .../node_modules/zod/src/v3/locales/en.ts | 124 + .../zod/src/v3/standard-schema.ts | 113 + .../node_modules/zod/src/v3/tests/Mocker.ts | 54 + .../zod/src/v3/tests/all-errors.test.ts | 157 + .../zod/src/v3/tests/anyunknown.test.ts | 28 + .../zod/src/v3/tests/array.test.ts | 71 + .../zod/src/v3/tests/async-parsing.test.ts | 388 + .../src/v3/tests/async-refinements.test.ts | 46 + .../zod/src/v3/tests/base.test.ts | 29 + .../zod/src/v3/tests/bigint.test.ts | 55 + .../zod/src/v3/tests/branded.test.ts | 53 + .../zod/src/v3/tests/catch.test.ts | 220 + .../zod/src/v3/tests/coerce.test.ts | 133 + .../zod/src/v3/tests/complex.test.ts | 70 + .../zod/src/v3/tests/custom.test.ts | 31 + .../zod/src/v3/tests/date.test.ts | 32 + .../zod/src/v3/tests/deepmasking.test.ts | 186 + .../zod/src/v3/tests/default.test.ts | 112 + .../zod/src/v3/tests/description.test.ts | 33 + .../src/v3/tests/discriminated-unions.test.ts | 315 + .../zod/src/v3/tests/enum.test.ts | 80 + .../zod/src/v3/tests/error.test.ts | 551 ++ .../zod/src/v3/tests/firstparty.test.ts | 87 + .../v3/tests/firstpartyschematypes.test.ts | 21 + .../zod/src/v3/tests/function.test.ts | 261 + .../zod/src/v3/tests/generics.test.ts | 48 + .../zod/src/v3/tests/instanceof.test.ts | 37 + .../zod/src/v3/tests/intersection.test.ts | 110 + .../src/v3/tests/language-server.source.ts | 76 + .../zod/src/v3/tests/language-server.test.ts | 207 + .../zod/src/v3/tests/literal.test.ts | 36 + .../node_modules/zod/src/v3/tests/map.test.ts | 110 + .../zod/src/v3/tests/masking.test.ts | 4 + .../zod/src/v3/tests/mocker.test.ts | 19 + .../node_modules/zod/src/v3/tests/nan.test.ts | 24 + .../zod/src/v3/tests/nativeEnum.test.ts | 87 + .../zod/src/v3/tests/nullable.test.ts | 42 + .../zod/src/v3/tests/number.test.ts | 176 + .../src/v3/tests/object-augmentation.test.ts | 29 + .../src/v3/tests/object-in-es5-env.test.ts | 29 + .../zod/src/v3/tests/object.test.ts | 434 + .../zod/src/v3/tests/optional.test.ts | 42 + .../zod/src/v3/tests/parseUtil.test.ts | 23 + .../zod/src/v3/tests/parser.test.ts | 41 + .../zod/src/v3/tests/partials.test.ts | 243 + .../zod/src/v3/tests/pickomit.test.ts | 111 + .../zod/src/v3/tests/pipeline.test.ts | 29 + .../zod/src/v3/tests/preprocess.test.ts | 186 + .../zod/src/v3/tests/primitive.test.ts | 440 + .../zod/src/v3/tests/promise.test.ts | 90 + .../zod/src/v3/tests/readonly.test.ts | 194 + .../zod/src/v3/tests/record.test.ts | 171 + .../zod/src/v3/tests/recursive.test.ts | 197 + .../zod/src/v3/tests/refine.test.ts | 313 + .../zod/src/v3/tests/safeparse.test.ts | 27 + .../node_modules/zod/src/v3/tests/set.test.ts | 142 + .../zod/src/v3/tests/standard-schema.test.ts | 83 + .../zod/src/v3/tests/string.test.ts | 916 ++ .../zod/src/v3/tests/transformer.test.ts | 233 + .../zod/src/v3/tests/tuple.test.ts | 90 + .../zod/src/v3/tests/unions.test.ts | 57 + .../zod/src/v3/tests/validations.test.ts | 133 + .../zod/src/v3/tests/void.test.ts | 15 + .../node_modules/zod/src/v3/types.ts | 5138 +++++++++++ .../node_modules/zod/src/v4-mini/index.ts | 3 + .../node_modules/zod/src/v4/classic/checks.ts | 32 + .../node_modules/zod/src/v4/classic/coerce.ts | 27 + .../node_modules/zod/src/v4/classic/compat.ts | 70 + .../node_modules/zod/src/v4/classic/errors.ts | 82 + .../zod/src/v4/classic/external.ts | 51 + .../zod/src/v4/classic/from-json-schema.ts | 643 ++ .../node_modules/zod/src/v4/classic/index.ts | 5 + .../node_modules/zod/src/v4/classic/iso.ts | 90 + .../node_modules/zod/src/v4/classic/parse.ts | 82 + .../zod/src/v4/classic/schemas.ts | 2409 ++++++ .../src/v4/classic/tests/anyunknown.test.ts | 26 + .../zod/src/v4/classic/tests/apply.test.ts | 59 + .../zod/src/v4/classic/tests/array.test.ts | 264 + .../v4/classic/tests/assignability.test.ts | 210 + .../v4/classic/tests/async-parsing.test.ts | 381 + .../classic/tests/async-refinements.test.ts | 68 + .../zod/src/v4/classic/tests/base.test.ts | 7 + .../zod/src/v4/classic/tests/bigint.test.ts | 54 + .../zod/src/v4/classic/tests/brand.test.ts | 106 + .../zod/src/v4/classic/tests/catch.test.ts | 276 + .../zod/src/v4/classic/tests/coalesce.test.ts | 20 + .../v4/classic/tests/codec-examples.test.ts | 573 ++ .../zod/src/v4/classic/tests/codec.test.ts | 562 ++ .../zod/src/v4/classic/tests/coerce.test.ts | 160 + .../v4/classic/tests/continuability.test.ts | 374 + .../zod/src/v4/classic/tests/custom.test.ts | 40 + .../zod/src/v4/classic/tests/date.test.ts | 62 + .../zod/src/v4/classic/tests/datetime.test.ts | 302 + .../zod/src/v4/classic/tests/default.test.ts | 365 + .../tests/describe-meta-checks.test.ts | 27 + .../src/v4/classic/tests/description.test.ts | 32 + .../tests/discriminated-unions.test.ts | 661 ++ .../zod/src/v4/classic/tests/enum.test.ts | 285 + .../src/v4/classic/tests/error-utils.test.ts | 595 ++ .../zod/src/v4/classic/tests/error.test.ts | 711 ++ .../zod/src/v4/classic/tests/file.test.ts | 96 + .../src/v4/classic/tests/firstparty.test.ts | 179 + .../v4/classic/tests/fix-json-issue.test.ts | 26 + .../v4/classic/tests/from-json-schema.test.ts | 734 ++ .../zod/src/v4/classic/tests/function.test.ts | 360 + .../zod/src/v4/classic/tests/generics.test.ts | 72 + .../zod/src/v4/classic/tests/hash.test.ts | 68 + .../zod/src/v4/classic/tests/index.test.ts | 939 +++ .../src/v4/classic/tests/instanceof.test.ts | 60 + .../src/v4/classic/tests/intersection.test.ts | 198 + .../zod/src/v4/classic/tests/json.test.ts | 109 + .../zod/src/v4/classic/tests/lazy.test.ts | 227 + .../zod/src/v4/classic/tests/literal.test.ts | 117 + .../zod/src/v4/classic/tests/map.test.ts | 330 + .../zod/src/v4/classic/tests/nan.test.ts | 21 + .../v4/classic/tests/nested-refine.test.ts | 168 + .../src/v4/classic/tests/nonoptional.test.ts | 101 + .../zod/src/v4/classic/tests/nullable.test.ts | 22 + .../zod/src/v4/classic/tests/number.test.ts | 270 + .../zod/src/v4/classic/tests/object.test.ts | 640 ++ .../zod/src/v4/classic/tests/optional.test.ts | 223 + .../zod/src/v4/classic/tests/partial.test.ts | 427 + .../zod/src/v4/classic/tests/pickomit.test.ts | 211 + .../zod/src/v4/classic/tests/pipe.test.ts | 101 + .../zod/src/v4/classic/tests/prefault.test.ts | 74 + .../src/v4/classic/tests/preprocess.test.ts | 282 + .../src/v4/classic/tests/primitive.test.ts | 175 + .../zod/src/v4/classic/tests/promise.test.ts | 81 + .../src/v4/classic/tests/prototypes.test.ts | 23 + .../zod/src/v4/classic/tests/readonly.test.ts | 252 + .../zod/src/v4/classic/tests/record.test.ts | 632 ++ .../v4/classic/tests/recursive-types.test.ts | 582 ++ .../zod/src/v4/classic/tests/refine.test.ts | 570 ++ .../src/v4/classic/tests/registries.test.ts | 243 + .../zod/src/v4/classic/tests/set.test.ts | 181 + .../v4/classic/tests/standard-schema.test.ts | 134 + .../v4/classic/tests/string-formats.test.ts | 125 + .../zod/src/v4/classic/tests/string.test.ts | 1175 +++ .../src/v4/classic/tests/stringbool.test.ts | 106 + .../v4/classic/tests/template-literal.test.ts | 771 ++ .../tests/to-json-schema-methods.test.ts | 438 + .../v4/classic/tests/to-json-schema.test.ts | 2990 +++++++ .../src/v4/classic/tests/transform.test.ts | 361 + .../zod/src/v4/classic/tests/tuple.test.ts | 183 + .../zod/src/v4/classic/tests/union.test.ts | 219 + .../zod/src/v4/classic/tests/url.test.ts | 13 + .../src/v4/classic/tests/validations.test.ts | 283 + .../zod/src/v4/classic/tests/void.test.ts | 12 + .../node_modules/zod/src/v4/core/api.ts | 1798 ++++ .../node_modules/zod/src/v4/core/checks.ts | 1293 +++ .../node_modules/zod/src/v4/core/config.ts | 15 + .../node_modules/zod/src/v4/core/core.ts | 138 + .../node_modules/zod/src/v4/core/doc.ts | 44 + .../node_modules/zod/src/v4/core/errors.ts | 448 + .../node_modules/zod/src/v4/core/index.ts | 16 + .../zod/src/v4/core/json-schema-generator.ts | 126 + .../zod/src/v4/core/json-schema-processors.ts | 667 ++ .../zod/src/v4/core/json-schema.ts | 147 + .../node_modules/zod/src/v4/core/parse.ts | 195 + .../node_modules/zod/src/v4/core/regexes.ts | 183 + .../zod/src/v4/core/registries.ts | 105 + .../node_modules/zod/src/v4/core/schemas.ts | 4538 ++++++++++ .../zod/src/v4/core/standard-schema.ts | 159 + .../zod/src/v4/core/tests/extend.test.ts | 59 + .../zod/src/v4/core/tests/index.test.ts | 46 + .../zod/src/v4/core/tests/locales/be.test.ts | 124 + .../zod/src/v4/core/tests/locales/en.test.ts | 22 + .../zod/src/v4/core/tests/locales/es.test.ts | 181 + .../zod/src/v4/core/tests/locales/he.test.ts | 379 + .../zod/src/v4/core/tests/locales/nl.test.ts | 46 + .../zod/src/v4/core/tests/locales/ru.test.ts | 128 + .../zod/src/v4/core/tests/locales/tr.test.ts | 69 + .../zod/src/v4/core/tests/locales/uz.test.ts | 83 + .../v4/core/tests/record-constructor.test.ts | 67 + .../v4/core/tests/recursive-tuples.test.ts | 45 + .../zod/src/v4/core/to-json-schema.ts | 613 ++ .../node_modules/zod/src/v4/core/util.ts | 966 +++ .../node_modules/zod/src/v4/core/versions.ts | 5 + .../node_modules/zod/src/v4/core/zsf.ts | 323 + .../node_modules/zod/src/v4/index.ts | 4 + .../node_modules/zod/src/v4/locales/ar.ts | 115 + .../node_modules/zod/src/v4/locales/az.ts | 111 + .../node_modules/zod/src/v4/locales/be.ts | 176 + .../node_modules/zod/src/v4/locales/bg.ts | 128 + .../node_modules/zod/src/v4/locales/ca.ts | 116 + .../node_modules/zod/src/v4/locales/cs.ts | 118 + .../node_modules/zod/src/v4/locales/da.ts | 123 + .../node_modules/zod/src/v4/locales/de.ts | 116 + .../node_modules/zod/src/v4/locales/en.ts | 119 + .../node_modules/zod/src/v4/locales/eo.ts | 118 + .../node_modules/zod/src/v4/locales/es.ts | 141 + .../node_modules/zod/src/v4/locales/fa.ts | 126 + .../node_modules/zod/src/v4/locales/fi.ts | 121 + .../node_modules/zod/src/v4/locales/fr-CA.ts | 116 + .../node_modules/zod/src/v4/locales/fr.ts | 116 + .../node_modules/zod/src/v4/locales/he.ts | 246 + .../node_modules/zod/src/v4/locales/hu.ts | 117 + .../node_modules/zod/src/v4/locales/hy.ts | 164 + .../node_modules/zod/src/v4/locales/id.ts | 115 + .../node_modules/zod/src/v4/locales/index.ts | 49 + .../node_modules/zod/src/v4/locales/is.ts | 119 + .../node_modules/zod/src/v4/locales/it.ts | 116 + .../node_modules/zod/src/v4/locales/ja.ts | 114 + .../node_modules/zod/src/v4/locales/ka.ts | 123 + .../node_modules/zod/src/v4/locales/kh.ts | 7 + .../node_modules/zod/src/v4/locales/km.ts | 119 + .../node_modules/zod/src/v4/locales/ko.ts | 121 + .../node_modules/zod/src/v4/locales/lt.ts | 239 + .../node_modules/zod/src/v4/locales/mk.ts | 118 + .../node_modules/zod/src/v4/locales/ms.ts | 115 + .../node_modules/zod/src/v4/locales/nl.ts | 121 + .../node_modules/zod/src/v4/locales/no.ts | 116 + .../node_modules/zod/src/v4/locales/ota.ts | 117 + .../node_modules/zod/src/v4/locales/pl.ts | 118 + .../node_modules/zod/src/v4/locales/ps.ts | 126 + .../node_modules/zod/src/v4/locales/pt.ts | 116 + .../node_modules/zod/src/v4/locales/ru.ts | 176 + .../node_modules/zod/src/v4/locales/sl.ts | 118 + .../node_modules/zod/src/v4/locales/sv.ts | 119 + .../node_modules/zod/src/v4/locales/ta.ts | 118 + .../node_modules/zod/src/v4/locales/th.ts | 119 + .../node_modules/zod/src/v4/locales/tr.ts | 111 + .../node_modules/zod/src/v4/locales/ua.ts | 7 + .../node_modules/zod/src/v4/locales/uk.ts | 117 + .../node_modules/zod/src/v4/locales/ur.ts | 119 + .../node_modules/zod/src/v4/locales/uz.ts | 116 + .../node_modules/zod/src/v4/locales/vi.ts | 117 + .../node_modules/zod/src/v4/locales/yo.ts | 124 + .../node_modules/zod/src/v4/locales/zh-CN.ts | 116 + .../node_modules/zod/src/v4/locales/zh-TW.ts | 115 + .../node_modules/zod/src/v4/mini/checks.ts | 32 + .../node_modules/zod/src/v4/mini/coerce.ts | 27 + .../node_modules/zod/src/v4/mini/external.ts | 40 + .../node_modules/zod/src/v4/mini/index.ts | 3 + .../node_modules/zod/src/v4/mini/iso.ts | 66 + .../node_modules/zod/src/v4/mini/parse.ts | 14 + .../node_modules/zod/src/v4/mini/schemas.ts | 1916 +++++ .../zod/src/v4/mini/tests/apply.test.ts | 24 + .../src/v4/mini/tests/assignability.test.ts | 129 + .../zod/src/v4/mini/tests/brand.test.ts | 94 + .../zod/src/v4/mini/tests/checks.test.ts | 144 + .../zod/src/v4/mini/tests/codec.test.ts | 529 ++ .../zod/src/v4/mini/tests/computed.test.ts | 36 + .../zod/src/v4/mini/tests/error.test.ts | 22 + .../zod/src/v4/mini/tests/functions.test.ts | 5 + .../zod/src/v4/mini/tests/index.test.ts | 963 +++ .../zod/src/v4/mini/tests/number.test.ts | 95 + .../zod/src/v4/mini/tests/object.test.ts | 227 + .../zod/src/v4/mini/tests/prototypes.test.ts | 43 + .../src/v4/mini/tests/recursive-types.test.ts | 275 + .../src/v4/mini/tests/standard-schema.test.ts | 50 + .../zod/src/v4/mini/tests/string.test.ts | 347 + .../node_modules/zod/v3/ZodError.cjs | 138 + .../node_modules/zod/v3/ZodError.d.cts | 164 + .../node_modules/zod/v3/ZodError.d.ts | 164 + .../node_modules/zod/v3/ZodError.js | 133 + .../node_modules/zod/v3/errors.cjs | 17 + .../node_modules/zod/v3/errors.d.cts | 5 + .../node_modules/zod/v3/errors.d.ts | 5 + .../node_modules/zod/v3/errors.js | 9 + .../node_modules/zod/v3/external.cjs | 22 + .../node_modules/zod/v3/external.d.cts | 6 + .../node_modules/zod/v3/external.d.ts | 6 + .../node_modules/zod/v3/external.js | 6 + .../node_modules/zod/v3/helpers/enumUtil.cjs | 2 + .../zod/v3/helpers/enumUtil.d.cts | 8 + .../node_modules/zod/v3/helpers/enumUtil.d.ts | 8 + .../node_modules/zod/v3/helpers/enumUtil.js | 1 + .../node_modules/zod/v3/helpers/errorUtil.cjs | 9 + .../zod/v3/helpers/errorUtil.d.cts | 9 + .../zod/v3/helpers/errorUtil.d.ts | 9 + .../node_modules/zod/v3/helpers/errorUtil.js | 6 + .../node_modules/zod/v3/helpers/parseUtil.cjs | 124 + .../zod/v3/helpers/parseUtil.d.cts | 78 + .../zod/v3/helpers/parseUtil.d.ts | 78 + .../node_modules/zod/v3/helpers/parseUtil.js | 109 + .../zod/v3/helpers/partialUtil.cjs | 2 + .../zod/v3/helpers/partialUtil.d.cts | 8 + .../zod/v3/helpers/partialUtil.d.ts | 8 + .../zod/v3/helpers/partialUtil.js | 1 + .../zod/v3/helpers/typeAliases.cjs | 2 + .../zod/v3/helpers/typeAliases.d.cts | 2 + .../zod/v3/helpers/typeAliases.d.ts | 2 + .../zod/v3/helpers/typeAliases.js | 1 + .../node_modules/zod/v3/helpers/util.cjs | 137 + .../node_modules/zod/v3/helpers/util.d.cts | 85 + .../node_modules/zod/v3/helpers/util.d.ts | 85 + .../node_modules/zod/v3/helpers/util.js | 133 + .../node_modules/zod/v3/index.cjs | 33 + .../node_modules/zod/v3/index.d.cts | 4 + .../node_modules/zod/v3/index.d.ts | 4 + .../node_modules/zod/v3/index.js | 4 + .../node_modules/zod/v3/locales/en.cjs | 112 + .../node_modules/zod/v3/locales/en.d.cts | 3 + .../node_modules/zod/v3/locales/en.d.ts | 3 + .../node_modules/zod/v3/locales/en.js | 109 + .../node_modules/zod/v3/package.json | 6 + .../node_modules/zod/v3/standard-schema.cjs | 2 + .../node_modules/zod/v3/standard-schema.d.cts | 102 + .../node_modules/zod/v3/standard-schema.d.ts | 102 + .../node_modules/zod/v3/standard-schema.js | 1 + .../node_modules/zod/v3/types.cjs | 3777 +++++++++ .../node_modules/zod/v3/types.d.cts | 1034 +++ .../node_modules/zod/v3/types.d.ts | 1034 +++ .../node_modules/zod/v3/types.js | 3695 ++++++++ .../node_modules/zod/v4-mini/index.cjs | 32 + .../node_modules/zod/v4-mini/index.d.cts | 3 + .../node_modules/zod/v4-mini/index.d.ts | 3 + .../node_modules/zod/v4-mini/index.js | 3 + .../node_modules/zod/v4-mini/package.json | 6 + .../node_modules/zod/v4/classic/checks.cjs | 33 + .../node_modules/zod/v4/classic/checks.d.cts | 1 + .../node_modules/zod/v4/classic/checks.d.ts | 1 + .../node_modules/zod/v4/classic/checks.js | 1 + .../node_modules/zod/v4/classic/coerce.cjs | 47 + .../node_modules/zod/v4/classic/coerce.d.cts | 17 + .../node_modules/zod/v4/classic/coerce.d.ts | 17 + .../node_modules/zod/v4/classic/coerce.js | 17 + .../node_modules/zod/v4/classic/compat.cjs | 61 + .../node_modules/zod/v4/classic/compat.d.cts | 50 + .../node_modules/zod/v4/classic/compat.d.ts | 50 + .../node_modules/zod/v4/classic/compat.js | 31 + .../node_modules/zod/v4/classic/errors.cjs | 74 + .../node_modules/zod/v4/classic/errors.d.cts | 30 + .../node_modules/zod/v4/classic/errors.d.ts | 30 + .../node_modules/zod/v4/classic/errors.js | 48 + .../node_modules/zod/v4/classic/external.cjs | 73 + .../zod/v4/classic/external.d.cts | 15 + .../node_modules/zod/v4/classic/external.d.ts | 15 + .../node_modules/zod/v4/classic/external.js | 20 + .../zod/v4/classic/from-json-schema.cjs | 610 ++ .../zod/v4/classic/from-json-schema.d.cts | 12 + .../zod/v4/classic/from-json-schema.d.ts | 12 + .../zod/v4/classic/from-json-schema.js | 584 ++ .../node_modules/zod/v4/classic/index.cjs | 33 + .../node_modules/zod/v4/classic/index.d.cts | 4 + .../node_modules/zod/v4/classic/index.d.ts | 4 + .../node_modules/zod/v4/classic/index.js | 4 + .../node_modules/zod/v4/classic/iso.cjs | 60 + .../node_modules/zod/v4/classic/iso.d.cts | 22 + .../node_modules/zod/v4/classic/iso.d.ts | 22 + .../node_modules/zod/v4/classic/iso.js | 30 + .../node_modules/zod/v4/classic/package.json | 6 + .../node_modules/zod/v4/classic/parse.cjs | 41 + .../node_modules/zod/v4/classic/parse.d.cts | 31 + .../node_modules/zod/v4/classic/parse.d.ts | 31 + .../node_modules/zod/v4/classic/parse.js | 15 + .../node_modules/zod/v4/classic/schemas.cjs | 1272 +++ .../node_modules/zod/v4/classic/schemas.d.cts | 739 ++ .../node_modules/zod/v4/classic/schemas.d.ts | 739 ++ .../node_modules/zod/v4/classic/schemas.js | 1157 +++ .../node_modules/zod/v4/core/api.cjs | 1222 +++ .../node_modules/zod/v4/core/api.d.cts | 304 + .../node_modules/zod/v4/core/api.d.ts | 304 + .../node_modules/zod/v4/core/api.js | 1082 +++ .../node_modules/zod/v4/core/checks.cjs | 601 ++ .../node_modules/zod/v4/core/checks.d.cts | 278 + .../node_modules/zod/v4/core/checks.d.ts | 278 + .../node_modules/zod/v4/core/checks.js | 575 ++ .../node_modules/zod/v4/core/core.cjs | 83 + .../node_modules/zod/v4/core/core.d.cts | 70 + .../node_modules/zod/v4/core/core.d.ts | 70 + .../node_modules/zod/v4/core/core.js | 76 + .../node_modules/zod/v4/core/doc.cjs | 39 + .../node_modules/zod/v4/core/doc.d.cts | 14 + .../node_modules/zod/v4/core/doc.d.ts | 14 + .../node_modules/zod/v4/core/doc.js | 35 + .../node_modules/zod/v4/core/errors.cjs | 213 + .../node_modules/zod/v4/core/errors.d.cts | 220 + .../node_modules/zod/v4/core/errors.d.ts | 220 + .../node_modules/zod/v4/core/errors.js | 182 + .../node_modules/zod/v4/core/index.cjs | 47 + .../node_modules/zod/v4/core/index.d.cts | 16 + .../node_modules/zod/v4/core/index.d.ts | 16 + .../node_modules/zod/v4/core/index.js | 16 + .../zod/v4/core/json-schema-generator.cjs | 99 + .../zod/v4/core/json-schema-generator.d.cts | 65 + .../zod/v4/core/json-schema-generator.d.ts | 65 + .../zod/v4/core/json-schema-generator.js | 95 + .../zod/v4/core/json-schema-processors.cjs | 648 ++ .../zod/v4/core/json-schema-processors.d.cts | 49 + .../zod/v4/core/json-schema-processors.d.ts | 49 + .../zod/v4/core/json-schema-processors.js | 605 ++ .../node_modules/zod/v4/core/json-schema.cjs | 2 + .../zod/v4/core/json-schema.d.cts | 88 + .../node_modules/zod/v4/core/json-schema.d.ts | 88 + .../node_modules/zod/v4/core/json-schema.js | 1 + .../node_modules/zod/v4/core/package.json | 6 + .../node_modules/zod/v4/core/parse.cjs | 131 + .../node_modules/zod/v4/core/parse.d.cts | 49 + .../node_modules/zod/v4/core/parse.d.ts | 49 + .../node_modules/zod/v4/core/parse.js | 93 + .../node_modules/zod/v4/core/regexes.cjs | 166 + .../node_modules/zod/v4/core/regexes.d.cts | 79 + .../node_modules/zod/v4/core/regexes.d.ts | 79 + .../node_modules/zod/v4/core/regexes.js | 133 + .../node_modules/zod/v4/core/registries.cjs | 56 + .../node_modules/zod/v4/core/registries.d.cts | 35 + .../node_modules/zod/v4/core/registries.d.ts | 35 + .../node_modules/zod/v4/core/registries.js | 51 + .../node_modules/zod/v4/core/schemas.cjs | 2124 +++++ .../node_modules/zod/v4/core/schemas.d.cts | 1146 +++ .../node_modules/zod/v4/core/schemas.d.ts | 1146 +++ .../node_modules/zod/v4/core/schemas.js | 2093 +++++ .../zod/v4/core/standard-schema.cjs | 2 + .../zod/v4/core/standard-schema.d.cts | 126 + .../zod/v4/core/standard-schema.d.ts | 126 + .../zod/v4/core/standard-schema.js | 1 + .../zod/v4/core/to-json-schema.cjs | 446 + .../zod/v4/core/to-json-schema.d.cts | 114 + .../zod/v4/core/to-json-schema.d.ts | 114 + .../zod/v4/core/to-json-schema.js | 437 + .../node_modules/zod/v4/core/util.cjs | 710 ++ .../node_modules/zod/v4/core/util.d.cts | 199 + .../node_modules/zod/v4/core/util.d.ts | 199 + .../node_modules/zod/v4/core/util.js | 651 ++ .../node_modules/zod/v4/core/versions.cjs | 8 + .../node_modules/zod/v4/core/versions.d.cts | 5 + .../node_modules/zod/v4/core/versions.d.ts | 5 + .../node_modules/zod/v4/core/versions.js | 5 + .../node_modules/zod/v4/index.cjs | 22 + .../node_modules/zod/v4/index.d.cts | 3 + .../node_modules/zod/v4/index.d.ts | 3 + .../node_modules/zod/v4/index.js | 3 + .../node_modules/zod/v4/locales/ar.cjs | 133 + .../node_modules/zod/v4/locales/ar.d.cts | 5 + .../node_modules/zod/v4/locales/ar.d.ts | 4 + .../node_modules/zod/v4/locales/ar.js | 106 + .../node_modules/zod/v4/locales/az.cjs | 132 + .../node_modules/zod/v4/locales/az.d.cts | 5 + .../node_modules/zod/v4/locales/az.d.ts | 4 + .../node_modules/zod/v4/locales/az.js | 105 + .../node_modules/zod/v4/locales/be.cjs | 183 + .../node_modules/zod/v4/locales/be.d.cts | 5 + .../node_modules/zod/v4/locales/be.d.ts | 4 + .../node_modules/zod/v4/locales/be.js | 156 + .../node_modules/zod/v4/locales/bg.cjs | 147 + .../node_modules/zod/v4/locales/bg.d.cts | 5 + .../node_modules/zod/v4/locales/bg.d.ts | 4 + .../node_modules/zod/v4/locales/bg.js | 120 + .../node_modules/zod/v4/locales/ca.cjs | 134 + .../node_modules/zod/v4/locales/ca.d.cts | 5 + .../node_modules/zod/v4/locales/ca.d.ts | 4 + .../node_modules/zod/v4/locales/ca.js | 107 + .../node_modules/zod/v4/locales/cs.cjs | 138 + .../node_modules/zod/v4/locales/cs.d.cts | 5 + .../node_modules/zod/v4/locales/cs.d.ts | 4 + .../node_modules/zod/v4/locales/cs.js | 111 + .../node_modules/zod/v4/locales/da.cjs | 142 + .../node_modules/zod/v4/locales/da.d.cts | 5 + .../node_modules/zod/v4/locales/da.d.ts | 4 + .../node_modules/zod/v4/locales/da.js | 115 + .../node_modules/zod/v4/locales/de.cjs | 135 + .../node_modules/zod/v4/locales/de.d.cts | 5 + .../node_modules/zod/v4/locales/de.d.ts | 4 + .../node_modules/zod/v4/locales/de.js | 108 + .../node_modules/zod/v4/locales/en.cjs | 136 + .../node_modules/zod/v4/locales/en.d.cts | 5 + .../node_modules/zod/v4/locales/en.d.ts | 4 + .../node_modules/zod/v4/locales/en.js | 109 + .../node_modules/zod/v4/locales/eo.cjs | 136 + .../node_modules/zod/v4/locales/eo.d.cts | 5 + .../node_modules/zod/v4/locales/eo.d.ts | 4 + .../node_modules/zod/v4/locales/eo.js | 109 + .../node_modules/zod/v4/locales/es.cjs | 159 + .../node_modules/zod/v4/locales/es.d.cts | 5 + .../node_modules/zod/v4/locales/es.d.ts | 4 + .../node_modules/zod/v4/locales/es.js | 132 + .../node_modules/zod/v4/locales/fa.cjs | 141 + .../node_modules/zod/v4/locales/fa.d.cts | 5 + .../node_modules/zod/v4/locales/fa.d.ts | 4 + .../node_modules/zod/v4/locales/fa.js | 114 + .../node_modules/zod/v4/locales/fi.cjs | 139 + .../node_modules/zod/v4/locales/fi.d.cts | 5 + .../node_modules/zod/v4/locales/fi.d.ts | 4 + .../node_modules/zod/v4/locales/fi.js | 112 + .../node_modules/zod/v4/locales/fr-CA.cjs | 134 + .../node_modules/zod/v4/locales/fr-CA.d.cts | 5 + .../node_modules/zod/v4/locales/fr-CA.d.ts | 4 + .../node_modules/zod/v4/locales/fr-CA.js | 107 + .../node_modules/zod/v4/locales/fr.cjs | 135 + .../node_modules/zod/v4/locales/fr.d.cts | 5 + .../node_modules/zod/v4/locales/fr.d.ts | 4 + .../node_modules/zod/v4/locales/fr.js | 108 + .../node_modules/zod/v4/locales/he.cjs | 241 + .../node_modules/zod/v4/locales/he.d.cts | 5 + .../node_modules/zod/v4/locales/he.d.ts | 4 + .../node_modules/zod/v4/locales/he.js | 214 + .../node_modules/zod/v4/locales/hu.cjs | 135 + .../node_modules/zod/v4/locales/hu.d.cts | 5 + .../node_modules/zod/v4/locales/hu.d.ts | 4 + .../node_modules/zod/v4/locales/hu.js | 108 + .../node_modules/zod/v4/locales/hy.cjs | 174 + .../node_modules/zod/v4/locales/hy.d.cts | 5 + .../node_modules/zod/v4/locales/hy.d.ts | 4 + .../node_modules/zod/v4/locales/hy.js | 147 + .../node_modules/zod/v4/locales/id.cjs | 133 + .../node_modules/zod/v4/locales/id.d.cts | 5 + .../node_modules/zod/v4/locales/id.d.ts | 4 + .../node_modules/zod/v4/locales/id.js | 106 + .../node_modules/zod/v4/locales/index.cjs | 104 + .../node_modules/zod/v4/locales/index.d.cts | 49 + .../node_modules/zod/v4/locales/index.d.ts | 49 + .../node_modules/zod/v4/locales/index.js | 49 + .../node_modules/zod/v4/locales/is.cjs | 136 + .../node_modules/zod/v4/locales/is.d.cts | 5 + .../node_modules/zod/v4/locales/is.d.ts | 4 + .../node_modules/zod/v4/locales/is.js | 109 + .../node_modules/zod/v4/locales/it.cjs | 135 + .../node_modules/zod/v4/locales/it.d.cts | 5 + .../node_modules/zod/v4/locales/it.d.ts | 4 + .../node_modules/zod/v4/locales/it.js | 108 + .../node_modules/zod/v4/locales/ja.cjs | 134 + .../node_modules/zod/v4/locales/ja.d.cts | 5 + .../node_modules/zod/v4/locales/ja.d.ts | 4 + .../node_modules/zod/v4/locales/ja.js | 107 + .../node_modules/zod/v4/locales/ka.cjs | 139 + .../node_modules/zod/v4/locales/ka.d.cts | 5 + .../node_modules/zod/v4/locales/ka.d.ts | 4 + .../node_modules/zod/v4/locales/ka.js | 112 + .../node_modules/zod/v4/locales/kh.cjs | 12 + .../node_modules/zod/v4/locales/kh.d.cts | 5 + .../node_modules/zod/v4/locales/kh.d.ts | 5 + .../node_modules/zod/v4/locales/kh.js | 5 + .../node_modules/zod/v4/locales/km.cjs | 137 + .../node_modules/zod/v4/locales/km.d.cts | 5 + .../node_modules/zod/v4/locales/km.d.ts | 4 + .../node_modules/zod/v4/locales/km.js | 110 + .../node_modules/zod/v4/locales/ko.cjs | 138 + .../node_modules/zod/v4/locales/ko.d.cts | 5 + .../node_modules/zod/v4/locales/ko.d.ts | 4 + .../node_modules/zod/v4/locales/ko.js | 111 + .../node_modules/zod/v4/locales/lt.cjs | 230 + .../node_modules/zod/v4/locales/lt.d.cts | 5 + .../node_modules/zod/v4/locales/lt.d.ts | 4 + .../node_modules/zod/v4/locales/lt.js | 203 + .../node_modules/zod/v4/locales/mk.cjs | 136 + .../node_modules/zod/v4/locales/mk.d.cts | 5 + .../node_modules/zod/v4/locales/mk.d.ts | 4 + .../node_modules/zod/v4/locales/mk.js | 109 + .../node_modules/zod/v4/locales/ms.cjs | 134 + .../node_modules/zod/v4/locales/ms.d.cts | 5 + .../node_modules/zod/v4/locales/ms.d.ts | 4 + .../node_modules/zod/v4/locales/ms.js | 107 + .../node_modules/zod/v4/locales/nl.cjs | 137 + .../node_modules/zod/v4/locales/nl.d.cts | 5 + .../node_modules/zod/v4/locales/nl.d.ts | 4 + .../node_modules/zod/v4/locales/nl.js | 110 + .../node_modules/zod/v4/locales/no.cjs | 135 + .../node_modules/zod/v4/locales/no.d.cts | 5 + .../node_modules/zod/v4/locales/no.d.ts | 4 + .../node_modules/zod/v4/locales/no.js | 108 + .../node_modules/zod/v4/locales/ota.cjs | 136 + .../node_modules/zod/v4/locales/ota.d.cts | 5 + .../node_modules/zod/v4/locales/ota.d.ts | 4 + .../node_modules/zod/v4/locales/ota.js | 109 + .../node_modules/zod/v4/locales/package.json | 6 + .../node_modules/zod/v4/locales/pl.cjs | 136 + .../node_modules/zod/v4/locales/pl.d.cts | 5 + .../node_modules/zod/v4/locales/pl.d.ts | 4 + .../node_modules/zod/v4/locales/pl.js | 109 + .../node_modules/zod/v4/locales/ps.cjs | 141 + .../node_modules/zod/v4/locales/ps.d.cts | 5 + .../node_modules/zod/v4/locales/ps.d.ts | 4 + .../node_modules/zod/v4/locales/ps.js | 114 + .../node_modules/zod/v4/locales/pt.cjs | 135 + .../node_modules/zod/v4/locales/pt.d.cts | 5 + .../node_modules/zod/v4/locales/pt.d.ts | 4 + .../node_modules/zod/v4/locales/pt.js | 108 + .../node_modules/zod/v4/locales/ru.cjs | 183 + .../node_modules/zod/v4/locales/ru.d.cts | 5 + .../node_modules/zod/v4/locales/ru.d.ts | 4 + .../node_modules/zod/v4/locales/ru.js | 156 + .../node_modules/zod/v4/locales/sl.cjs | 136 + .../node_modules/zod/v4/locales/sl.d.cts | 5 + .../node_modules/zod/v4/locales/sl.d.ts | 4 + .../node_modules/zod/v4/locales/sl.js | 109 + .../node_modules/zod/v4/locales/sv.cjs | 137 + .../node_modules/zod/v4/locales/sv.d.cts | 5 + .../node_modules/zod/v4/locales/sv.d.ts | 4 + .../node_modules/zod/v4/locales/sv.js | 110 + .../node_modules/zod/v4/locales/ta.cjs | 137 + .../node_modules/zod/v4/locales/ta.d.cts | 5 + .../node_modules/zod/v4/locales/ta.d.ts | 4 + .../node_modules/zod/v4/locales/ta.js | 110 + .../node_modules/zod/v4/locales/th.cjs | 137 + .../node_modules/zod/v4/locales/th.d.cts | 5 + .../node_modules/zod/v4/locales/th.d.ts | 4 + .../node_modules/zod/v4/locales/th.js | 110 + .../node_modules/zod/v4/locales/tr.cjs | 132 + .../node_modules/zod/v4/locales/tr.d.cts | 5 + .../node_modules/zod/v4/locales/tr.d.ts | 4 + .../node_modules/zod/v4/locales/tr.js | 105 + .../node_modules/zod/v4/locales/ua.cjs | 12 + .../node_modules/zod/v4/locales/ua.d.cts | 5 + .../node_modules/zod/v4/locales/ua.d.ts | 5 + .../node_modules/zod/v4/locales/ua.js | 5 + .../node_modules/zod/v4/locales/uk.cjs | 135 + .../node_modules/zod/v4/locales/uk.d.cts | 5 + .../node_modules/zod/v4/locales/uk.d.ts | 4 + .../node_modules/zod/v4/locales/uk.js | 108 + .../node_modules/zod/v4/locales/ur.cjs | 137 + .../node_modules/zod/v4/locales/ur.d.cts | 5 + .../node_modules/zod/v4/locales/ur.d.ts | 4 + .../node_modules/zod/v4/locales/ur.js | 110 + .../node_modules/zod/v4/locales/uz.cjs | 136 + .../node_modules/zod/v4/locales/uz.d.cts | 5 + .../node_modules/zod/v4/locales/uz.d.ts | 4 + .../node_modules/zod/v4/locales/uz.js | 109 + .../node_modules/zod/v4/locales/vi.cjs | 135 + .../node_modules/zod/v4/locales/vi.d.cts | 5 + .../node_modules/zod/v4/locales/vi.d.ts | 4 + .../node_modules/zod/v4/locales/vi.js | 108 + .../node_modules/zod/v4/locales/yo.cjs | 134 + .../node_modules/zod/v4/locales/yo.d.cts | 5 + .../node_modules/zod/v4/locales/yo.d.ts | 4 + .../node_modules/zod/v4/locales/yo.js | 107 + .../node_modules/zod/v4/locales/zh-CN.cjs | 136 + .../node_modules/zod/v4/locales/zh-CN.d.cts | 5 + .../node_modules/zod/v4/locales/zh-CN.d.ts | 4 + .../node_modules/zod/v4/locales/zh-CN.js | 109 + .../node_modules/zod/v4/locales/zh-TW.cjs | 134 + .../node_modules/zod/v4/locales/zh-TW.d.cts | 5 + .../node_modules/zod/v4/locales/zh-TW.d.ts | 4 + .../node_modules/zod/v4/locales/zh-TW.js | 107 + .../node_modules/zod/v4/mini/checks.cjs | 34 + .../node_modules/zod/v4/mini/checks.d.cts | 1 + .../node_modules/zod/v4/mini/checks.d.ts | 1 + .../node_modules/zod/v4/mini/checks.js | 1 + .../node_modules/zod/v4/mini/coerce.cjs | 52 + .../node_modules/zod/v4/mini/coerce.d.cts | 7 + .../node_modules/zod/v4/mini/coerce.d.ts | 7 + .../node_modules/zod/v4/mini/coerce.js | 22 + .../node_modules/zod/v4/mini/external.cjs | 63 + .../node_modules/zod/v4/mini/external.d.cts | 12 + .../node_modules/zod/v4/mini/external.d.ts | 12 + .../node_modules/zod/v4/mini/external.js | 14 + .../node_modules/zod/v4/mini/index.cjs | 32 + .../node_modules/zod/v4/mini/index.d.cts | 3 + .../node_modules/zod/v4/mini/index.d.ts | 3 + .../node_modules/zod/v4/mini/index.js | 3 + .../node_modules/zod/v4/mini/iso.cjs | 64 + .../node_modules/zod/v4/mini/iso.d.cts | 22 + .../node_modules/zod/v4/mini/iso.d.ts | 22 + .../node_modules/zod/v4/mini/iso.js | 34 + .../node_modules/zod/v4/mini/package.json | 6 + .../node_modules/zod/v4/mini/parse.cjs | 16 + .../node_modules/zod/v4/mini/parse.d.cts | 1 + .../node_modules/zod/v4/mini/parse.d.ts | 1 + .../node_modules/zod/v4/mini/parse.js | 1 + .../node_modules/zod/v4/mini/schemas.cjs | 1046 +++ .../node_modules/zod/v4/mini/schemas.d.cts | 427 + .../node_modules/zod/v4/mini/schemas.d.ts | 427 + .../node_modules/zod/v4/mini/schemas.js | 925 ++ .../node_modules/zod/v4/package.json | 6 + headroom/proxy/cost.py | 26 +- headroom/proxy/handlers/anthropic.py | 14 + headroom/proxy/prometheus_metrics.py | 12 + headroom/telemetry/beacon.py | 9 + sql/create_dashboard_summary.sql | 200 + sql/upgrade_dashboard_v2.sql | 169 + sql/upgrade_telemetry_cache_bust.sql | 19 + 1656 files changed, 259772 insertions(+), 1 deletion(-) create mode 120000 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/esbuild create mode 120000 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/tsc create mode 120000 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/tsserver create mode 120000 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/tsx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.package-lock.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/CHANGELOG.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/docs/05-anthropic.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/internal.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-message-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-messages-api.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-messages-language-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-messages-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-prepare-tools.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-provider.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-tools.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/convert-anthropic-messages-usage.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/convert-to-anthropic-messages-prompt.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/forward-anthropic-container-id-from-last-step.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/get-cache-control.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/internal/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/map-anthropic-stop-reason.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/bash_20241022.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/bash_20250124.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20250522.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20250825.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20260120.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/computer_20241022.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/computer_20250124.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/computer_20251124.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/memory_20250818.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20241022.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250124.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250429.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250728.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/tool-search-bm25_20251119.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/tool-search-regex_20251119.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-fetch-20250910.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-fetch-20260209.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-search_20250305.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-search_20260209.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/version.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/CHANGELOG.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/docs/00-ai-gateway.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/as-gateway-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/create-gateway-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/extract-api-call-response.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-authentication-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-internal-server-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-invalid-request-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-model-not-found-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-rate-limit-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-response-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-timeout-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/parse-auth-method.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-config.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-embedding-model-settings.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-embedding-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-fetch-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-image-model-settings.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-image-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-language-model-settings.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-language-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-model-entry.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-provider-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-provider.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-tools.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-video-model-settings.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-video-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/tool/parallel-search.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/tool/perplexity-search.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/vercel-environment.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/version.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/CHANGELOG.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/docs/03-openai.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/internal.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/convert-openai-chat-usage.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/convert-to-openai-chat-messages.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/get-response-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/map-openai-finish-reason.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-api.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-language-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-prepare-tools.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-prompt.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/convert-openai-completion-usage.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/convert-to-openai-completion-prompt.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/get-response-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/map-openai-finish-reason.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/openai-completion-api.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/openai-completion-language-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/openai-completion-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-api.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/image/openai-image-api.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/image/openai-image-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/image/openai-image-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/internal/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-config.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-language-model-capabilities.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-provider.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-tools.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/convert-openai-responses-usage.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/convert-to-openai-responses-input.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/map-openai-responses-finish-reason.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-api.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-language-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-prepare-tools.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-provider-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/speech/openai-speech-api.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/speech/openai-speech-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/speech/openai-speech-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/apply-patch.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/code-interpreter.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/custom.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/file-search.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/image-generation.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/local-shell.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/mcp.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/shell.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/tool-search.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/web-search-preview.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/web-search.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-api.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/transcription-test.mp3 create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/version.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/CHANGELOG.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/add-additional-properties-to-json-schema.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/combine-headers.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/convert-async-iterator-to-readable-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/convert-image-model-file-to-data-uri.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/convert-to-form-data.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/create-tool-name-mapping.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/delay.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/delayed-promise.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/download-blob.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/download-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/extract-response-headers.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/fetch-function.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/generate-id.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/get-error-message.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/get-from-api.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/get-runtime-environment-user-agent.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/handle-fetch-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/inject-json-instruction.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-abort-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-async-iterable.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-non-nullable.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-url-supported.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/load-api-key.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/load-optional-setting.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/load-setting.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/maybe-promise-like.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/media-type-to-extension.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/normalize-headers.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/parse-json-event-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/parse-json.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/parse-provider-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/post-to-api.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/provider-tool-factory.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/read-response-with-size-limit.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/remove-undefined-entries.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/resolve.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/response-handler.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/schema.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/secure-json-parse.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/strip-file-extension.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-array-to-async-iterable.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-array-to-readable-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-async-iterable-to-array.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-readable-stream-to-array.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-response-stream-to-array.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/is-node-version.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/mock-id.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/get-relative-path.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parse-def.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parse-types.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/any.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/array.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/bigint.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/boolean.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/branded.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/catch.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/date.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/default.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/effects.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/enum.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/intersection.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/literal.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/map.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/native-enum.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/never.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/null.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/nullable.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/number.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/object.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/optional.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/pipeline.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/promise.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/readonly.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/record.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/set.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/string.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/tuple.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/undefined.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/union.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/unknown.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/refs.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/select-parser.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/zod3-to-json-schema.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/assistant-model-message.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/content-part.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/data-content.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/execute-tool.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/model-message.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/provider-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/system-model-message.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-approval-request.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-approval-response.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-call.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-model-message.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/user-model-message.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/uint8-utils.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/validate-download-url.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/validate-types.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/version.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/with-user-agent-suffix.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/without-trailing-slash.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/test.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/CHANGELOG.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model-middleware/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model-middleware/v3/embedding-model-v3-middleware.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model-middleware/v3/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v2/embedding-model-v2-embedding.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v2/embedding-model-v2.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v2/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3-call-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3-embedding.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/ai-sdk-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/api-call-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/empty-response-body-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/get-error-message.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/invalid-argument-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/invalid-prompt-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/invalid-response-data-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/json-parse-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/load-api-key-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/load-setting-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/no-content-generated-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/no-such-model-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/too-many-embedding-values-for-call-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/type-validation-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/unsupported-functionality-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model-middleware/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model-middleware/v3/image-model-v3-middleware.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model-middleware/v3/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/image-model-v2-call-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/image-model-v2-call-warning.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/image-model-v2.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3-call-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3-file.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3-usage.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/json-value/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/json-value/is-json.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/json-value/json-value.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v2/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v2/language-model-v2-middleware.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v3/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v3/language-model-v3-middleware.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-call-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-call-warning.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-content.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-data-content.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-file.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-finish-reason.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-function-tool.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-prompt.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-provider-defined-tool.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-reasoning.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-response-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-source.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-stream-part.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-text.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-tool-call.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-tool-choice.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-tool-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-usage.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-call-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-content.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-data-content.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-file.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-finish-reason.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-function-tool.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-generate-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-prompt.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-provider-tool.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-reasoning.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-response-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-source.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-stream-part.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-stream-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-text.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-approval-request.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-call.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-choice.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-usage.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v2/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v2/provider-v2.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v3/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v3/provider-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/v3/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/v3/reranking-model-v3-call-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/v3/reranking-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/shared-v2-headers.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/shared-v2-provider-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/shared-v2-provider-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-headers.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-provider-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-provider-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-warning.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/speech-model-v2-call-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/speech-model-v2-call-warning.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/speech-model-v2.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v3/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v3/speech-model-v3-call-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v3/speech-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/transcription-model-v2-call-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/transcription-model-v2-call-warning.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/transcription-model-v2.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v3/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v3/transcription-model-v3-call-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v3/transcription-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/video-model-v3-call-options.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/video-model-v3-file.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/video-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@esbuild/darwin-arm64/README.md create mode 100755 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@esbuild/darwin-arm64/bin/esbuild create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@esbuild/darwin-arm64/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@opentelemetry/api/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@opentelemetry/api/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@opentelemetry/api/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@standard-schema/spec/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@standard-schema/spec/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@standard-schema/spec/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/CHANGELOG.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/docs/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/CHANGELOG.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/00-introduction/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/01-overview.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/02-providers-and-models.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/03-prompts.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/04-tools.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/05-streaming.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/06-provider-options.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/00-choosing-a-provider.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/01-navigating-the-library.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/02-nextjs-app-router.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/03-nextjs-pages-router.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/04-svelte.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/05-nuxt.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/06-nodejs.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/07-expo.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/08-tanstack-start.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/09-coding-agents.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/01-overview.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/02-building-agents.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/03-workflows.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/04-loop-control.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/05-configuring-call-options.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/06-memory.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/06-subagents.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/01-overview.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/05-generating-text.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/10-generating-structured-data.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/16-mcp-tools.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/20-prompt-engineering.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/25-settings.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/30-embeddings.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/31-reranking.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/35-image-generation.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/36-transcription.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/37-speech.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/38-video-generation.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/40-middleware.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/45-provider-management.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/50-error-handling.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/55-testing.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/60-telemetry.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/65-devtools.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/65-event-listeners.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/01-overview.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/02-chatbot.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/03-chatbot-resume-streams.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/04-generative-user-interfaces.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/05-completion.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/08-object-generation.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/20-streaming-data.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/21-error-handling.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/21-transport.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/24-reading-ui-message-streams.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/25-message-metadata.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/50-stream-protocol.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/01-overview.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/02-streaming-react-components.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/03-generative-ui-state.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/03-saving-and-restoring-states.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/04-multistep-interfaces.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/05-streaming-values.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/06-loading-state.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/08-error-handling.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/09-authentication.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/01-prompt-engineering.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/02-stopping-streams.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/03-backpressure.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/04-caching.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/05-multiple-streamables.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/06-rate-limiting.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/07-rendering-ui-with-language-models.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/08-model-as-router.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/09-multistep-interfaces.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/09-sequential-generations.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/10-vercel-deployment-guide.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/05-embed.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/06-rerank.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/13-generate-video.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/15-agent.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/17-create-agent-ui-stream.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/18-create-agent-ui-stream-response.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/18-pipe-agent-ui-stream-to-response.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/20-tool.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/24-mcp-stdio-transport.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/25-json-schema.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/26-zod-schema.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/27-valibot-schema.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/28-output.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/30-model-message.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/32-validate-ui-messages.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/33-safe-validate-ui-messages.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/50-cosine-similarity.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/67-simulate-streaming-middleware.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/69-add-tool-input-examples-middleware.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/70-extract-json-middleware.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/70-step-count-is.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/71-has-tool-call.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/75-simulate-readable-stream.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/90-generate-id.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/91-create-id-generator.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/92-default-generated-file.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/02-use-completion.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/03-use-object.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/32-prune-messages.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/43-read-ui-message-stream.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/46-infer-ui-tools.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/47-infer-ui-tool.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/50-direct-chat-transport.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/01-stream-ui.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/02-create-ai.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/03-create-streamable-ui.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/04-create-streamable-value.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/05-read-streamable-value.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/06-get-ai-state.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/07-get-mutable-ai-state.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/08-use-ai-state.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/09-use-actions.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/10-use-ui-state.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/11-use-streamable-value.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/20-render.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-api-call-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-download-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-empty-response-body-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-argument-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-message-role-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-prompt-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-response-data-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-input-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-json-parse-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-load-api-key-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-load-setting-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-message-conversion-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-content-generated-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-image-generated-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-object-generated-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-output-generated-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-speech-generated-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-such-model-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-such-provider-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-such-tool-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-transcript-generated-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-video-generated-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-retry-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-too-many-embedding-values-for-call-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-tool-call-not-found-for-approval-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-tool-call-repair-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-type-validation-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-ui-message-stream-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-unsupported-functionality-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/00-versioning.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/24-migration-guide-6-0.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/25-migration-guide-5-0-data.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/26-migration-guide-5-0.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/27-migration-guide-4-2.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/28-migration-guide-4-1.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/29-migration-guide-4-0.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/36-migration-guide-3-4.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/37-migration-guide-3-3.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/38-migration-guide-3-2.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/39-migration-guide-3-1.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/01-azure-stream-slow.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/03-server-actions-in-client-components.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/04-strange-stream-output.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/05-streamable-ui-errors.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/05-tool-invocation-missing-result.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/06-streaming-not-working-when-deployed.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/06-streaming-not-working-when-proxied.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/06-timeout-on-vercel.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/07-unclosed-streams.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/08-use-chat-failed-to-parse-stream.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/09-client-stream-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/10-use-chat-tools-no-response.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/11-use-chat-custom-request-options.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/12-typescript-performance-zod.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/12-use-chat-an-error-occurred.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/13-repeated-assistant-messages.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/14-stream-abort-handling.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/14-tool-calling-with-structured-outputs.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/15-abort-breaks-resumable-streams.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/15-stream-text-not-working.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/16-streaming-status-delay.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/17-use-chat-stale-body-data.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/18-ontoolcall-type-narrowing.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/19-unsupported-model-version.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/20-no-object-generated-content-filter.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/21-missing-tool-results-error.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/30-model-is-not-assignable-to-type.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/40-typescript-cannot-find-namespace-jsx.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/50-react-maximum-update-depth-exceeded.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/60-jest-cannot-find-module-ai-rsc.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/70-high-memory-usage-with-images.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/index.mdx create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/internal.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/agent.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/create-agent-ui-stream-response.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/create-agent-ui-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/infer-agent-tools.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/infer-agent-ui-message.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/pipe-agent-ui-stream-to-response.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/tool-loop-agent-settings.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/tool-loop-agent.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed-many-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed-many.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-argument-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-stream-part-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-tool-approval-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-tool-input-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/missing-tool-result-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-image-generated-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-object-generated-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-output-generated-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-speech-generated-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-such-tool-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-transcript-generated-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-video-generated-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/tool-call-not-found-for-approval-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/tool-call-repair-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/ui-message-stream-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/unsupported-model-version-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/verify-no-object-generated-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-image/generate-image-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-image/generate-image.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-image/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/generate-object-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/generate-object.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/inject-json-instruction.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/output-strategy.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/parse-and-validate-object-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/repair-text.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/stream-object-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/stream-object.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/validate-object-generation-input.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/generate-speech-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/generate-speech.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/generated-audio-file.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/callback-events.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/collect-tool-approvals.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/content-part.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/execute-tool-call.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/extract-reasoning-content.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/extract-text-content.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/generate-text-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/generate-text.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/generated-file.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/is-approval-needed.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/output-utils.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/output.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/parse-tool-call.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/prepare-step.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/prune-messages.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/reasoning-output.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/reasoning.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/response-message.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/run-tools-transformation.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/smooth-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/step-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/stop-condition.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/stream-text-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/stream-text.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/to-response-messages.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-approval-request-output.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-call-repair-function.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-call.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-output-denied.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-output.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-set.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-video/generate-video-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-video/generate-video.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-video/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/global.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/logger/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/logger/log-warnings.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/add-tool-input-examples-middleware.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/default-embedding-settings-middleware.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/default-settings-middleware.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/extract-json-middleware.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/extract-reasoning-middleware.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/simulate-streaming-middleware.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-embedding-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-image-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-language-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-provider.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-embedding-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-image-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-language-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-provider-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-speech-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-transcription-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/resolve-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/call-settings.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/content-part.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/convert-to-language-model-prompt.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/create-tool-model-output.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/data-content.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/invalid-data-content-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/invalid-message-role-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/message-conversion-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/message.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/prepare-call-settings.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/prepare-tools-and-tool-choice.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/prompt.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/split-data-url.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/standardize-prompt.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/wrap-gateway-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/custom-provider.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/no-such-provider-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/provider-registry.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/rerank/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/rerank/rerank-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/rerank/rerank.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/assemble-operation-name.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/get-base-telemetry-attributes.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/get-global-telemetry-integration.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/get-tracer.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/noop-tracer.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/record-span.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/select-telemetry-attributes.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/stringify-for-telemetry.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/telemetry-integration-registry.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/telemetry-integration.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/telemetry-settings.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-embedding-model-v2.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-embedding-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-image-model-v2.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-image-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-language-model-v2.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-language-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-provider-v2.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-provider-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-reranking-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-server-response.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-speech-model-v2.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-speech-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-tracer.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-transcription-model-v2.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-transcription-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-values.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-video-model-v3.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/not-implemented.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/text-stream/create-text-stream-response.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/text-stream/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/text-stream/pipe-text-stream-to-response.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/transcribe/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/transcribe/transcribe-result.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/transcribe/transcribe.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/embedding-model-middleware.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/embedding-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/image-model-middleware.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/image-model-response-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/image-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/json-value.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model-middleware.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model-request-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model-response-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/provider-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/provider.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/reranking-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/speech-model-response-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/speech-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/transcription-model-response-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/transcription-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/usage.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/video-model-response-metadata.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/video-model.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/warning.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/create-ui-message-stream-response.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/create-ui-message-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/get-response-ui-message-id.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/handle-ui-message-stream-finish.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/json-to-sse-transform-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/pipe-ui-message-stream-to-response.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/read-ui-message-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-chunks.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-headers.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-on-finish-callback.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-on-step-finish-callback.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-response-init.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-writer.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/call-completion-api.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/chat-transport.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/chat.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/convert-file-list-to-file-ui-parts.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/convert-to-model-messages.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/default-chat-transport.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/direct-chat-transport.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/http-chat-transport.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/last-assistant-message-is-complete-with-approval-responses.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/last-assistant-message-is-complete-with-tool-calls.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/process-text-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/process-ui-message-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/text-stream-chat-transport.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/transform-text-to-ui-message-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/ui-messages.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/use-completion.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/validate-ui-messages.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/as-array.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/async-iterable-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/consume-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/cosine-similarity.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/create-resolvable-promise.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/create-stitchable-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/data-url.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/deep-partial.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/detect-media-type.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/download/create-download.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/download/download-function.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/download/download.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/error-handler.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/fix-json.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/get-potential-start-index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/is-deep-equal-data.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/is-non-empty-object.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/job.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/log-v2-compatibility-warning.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/merge-abort-signals.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/merge-objects.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/notify.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/now.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/parse-partial-json.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/prepare-headers.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/prepare-retries.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/retry-error.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/retry-with-exponential-backoff.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/serial-job-executor.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/simulate-readable-stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/split-array.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/value-of.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/write-to-server-response.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/version.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/test.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/CHANGELOG.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/README-es.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/SECURITY.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/config.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/config.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/LICENSE.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/README.md create mode 100755 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/bin/esbuild create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/install.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/errors.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/parse.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/stream.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/types.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/stream.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/fsevents.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/fsevents.js create mode 100755 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/fsevents.node create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/get-tsconfig/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/get-tsconfig/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/get-tsconfig/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/headroom-ai/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/headroom-ai/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/json-schema/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/json-schema/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/json-schema/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/resolve-pkg-maps/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/resolve-pkg-maps/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/resolve-pkg-maps/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/tsx/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/tsx/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/tsx/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/LICENSE.txt create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/SECURITY.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/ThirdPartyNoticeText.txt create mode 100755 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/bin/tsc create mode 100755 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/bin/tsserver create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/LICENSE create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/README.md create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/locales/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/mini/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/ZodError.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/datetime.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/ipv4.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/object.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/primitives.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/realworld.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/string.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/union.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/errors.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/external.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/enumUtil.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/errorUtil.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/parseUtil.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/partialUtil.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/typeAliases.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/util.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/locales/en.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/standard-schema.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/Mocker.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/all-errors.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/anyunknown.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/array.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/async-parsing.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/async-refinements.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/base.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/bigint.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/branded.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/catch.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/coerce.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/complex.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/custom.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/date.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/deepmasking.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/default.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/description.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/discriminated-unions.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/enum.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/error.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/firstparty.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/function.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/generics.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/instanceof.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/intersection.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/language-server.source.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/language-server.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/literal.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/map.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/masking.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/mocker.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/nan.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/nativeEnum.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/nullable.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/number.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/object-augmentation.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/object.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/optional.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/parseUtil.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/parser.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/partials.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/pickomit.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/pipeline.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/preprocess.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/primitive.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/promise.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/readonly.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/record.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/recursive.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/refine.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/safeparse.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/set.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/standard-schema.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/string.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/transformer.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/tuple.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/unions.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/validations.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/void.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/types.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4-mini/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/checks.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/coerce.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/compat.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/errors.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/external.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/from-json-schema.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/iso.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/parse.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/schemas.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/apply.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/array.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/assignability.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/base.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/bigint.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/brand.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/catch.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/coalesce.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/codec.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/coerce.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/continuability.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/custom.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/date.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/datetime.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/default.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/description.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/enum.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/error-utils.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/error.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/file.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/firstparty.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/function.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/generics.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/hash.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/index.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/instanceof.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/intersection.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/json.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/lazy.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/literal.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/map.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/nan.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/nullable.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/number.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/object.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/optional.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/partial.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/pickomit.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/pipe.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/prefault.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/preprocess.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/primitive.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/promise.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/prototypes.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/readonly.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/record.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/refine.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/registries.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/set.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/string-formats.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/string.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/stringbool.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/template-literal.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/transform.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/tuple.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/union.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/url.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/validations.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/tests/void.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/api.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/checks.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/config.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/core.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/doc.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/errors.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/json-schema-generator.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/json-schema-processors.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/json-schema.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/parse.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/regexes.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/registries.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/schemas.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/standard-schema.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/tests/extend.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/tests/index.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/tests/locales/be.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/tests/locales/en.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/tests/locales/es.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/tests/locales/he.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/tests/locales/nl.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/tests/locales/ru.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/tests/locales/tr.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/tests/locales/uz.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/tests/record-constructor.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/to-json-schema.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/util.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/versions.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/core/zsf.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/ar.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/az.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/be.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/bg.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/ca.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/cs.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/da.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/de.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/en.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/eo.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/es.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/fa.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/fi.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/fr-CA.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/fr.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/he.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/hu.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/hy.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/id.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/is.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/it.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/ja.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/ka.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/kh.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/km.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/ko.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/lt.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/mk.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/ms.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/nl.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/no.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/ota.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/pl.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/ps.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/pt.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/ru.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/sl.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/sv.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/ta.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/th.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/tr.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/ua.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/uk.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/ur.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/uz.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/vi.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/yo.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/zh-CN.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/locales/zh-TW.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/checks.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/coerce.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/external.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/index.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/iso.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/parse.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/schemas.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/apply.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/assignability.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/brand.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/checks.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/codec.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/computed.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/error.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/functions.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/index.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/number.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/object.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/prototypes.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/mini/tests/string.test.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/ZodError.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/ZodError.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/ZodError.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/ZodError.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/errors.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/errors.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/errors.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/errors.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/external.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/external.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/external.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/external.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/enumUtil.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/enumUtil.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/enumUtil.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/enumUtil.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/errorUtil.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/errorUtil.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/errorUtil.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/errorUtil.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/parseUtil.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/parseUtil.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/parseUtil.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/parseUtil.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/partialUtil.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/partialUtil.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/partialUtil.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/partialUtil.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/typeAliases.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/typeAliases.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/typeAliases.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/typeAliases.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/util.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/util.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/util.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/helpers/util.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/index.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/index.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/index.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/index.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/locales/en.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/locales/en.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/locales/en.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/locales/en.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/standard-schema.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/standard-schema.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/standard-schema.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/standard-schema.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/types.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/types.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/types.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v3/types.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4-mini/index.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4-mini/index.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4-mini/index.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4-mini/index.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4-mini/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/checks.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/checks.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/checks.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/checks.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/coerce.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/coerce.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/coerce.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/coerce.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/compat.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/compat.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/compat.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/compat.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/errors.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/errors.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/errors.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/errors.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/external.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/external.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/external.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/external.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/from-json-schema.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/from-json-schema.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/from-json-schema.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/from-json-schema.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/index.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/index.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/index.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/index.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/iso.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/iso.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/iso.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/iso.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/parse.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/parse.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/parse.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/parse.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/schemas.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/schemas.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/schemas.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/classic/schemas.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/api.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/api.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/api.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/api.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/checks.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/checks.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/checks.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/checks.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/core.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/core.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/core.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/core.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/doc.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/doc.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/doc.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/doc.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/errors.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/errors.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/errors.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/errors.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/index.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/index.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/index.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/index.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/json-schema-generator.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/json-schema-generator.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/json-schema-generator.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/json-schema-generator.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/json-schema-processors.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/json-schema-processors.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/json-schema-processors.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/json-schema-processors.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/json-schema.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/json-schema.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/json-schema.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/json-schema.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/parse.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/parse.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/parse.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/parse.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/regexes.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/regexes.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/regexes.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/regexes.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/registries.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/registries.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/registries.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/registries.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/schemas.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/schemas.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/schemas.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/schemas.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/standard-schema.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/standard-schema.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/standard-schema.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/standard-schema.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/to-json-schema.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/to-json-schema.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/to-json-schema.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/to-json-schema.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/util.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/util.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/util.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/util.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/versions.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/versions.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/versions.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/core/versions.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/index.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/index.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/index.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/index.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ar.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ar.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ar.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ar.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/az.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/az.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/az.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/az.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/be.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/be.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/be.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/be.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/bg.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/bg.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/bg.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/bg.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ca.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ca.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ca.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ca.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/cs.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/cs.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/cs.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/cs.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/da.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/da.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/da.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/da.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/de.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/de.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/de.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/de.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/en.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/en.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/en.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/en.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/eo.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/eo.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/eo.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/eo.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/es.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/es.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/es.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/es.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fa.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fa.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fa.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fa.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fi.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fi.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fi.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fi.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fr-CA.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fr-CA.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fr-CA.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fr-CA.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fr.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fr.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fr.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/fr.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/he.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/he.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/he.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/he.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/hu.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/hu.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/hu.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/hu.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/hy.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/hy.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/hy.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/hy.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/id.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/id.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/id.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/id.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/index.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/index.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/index.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/index.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/is.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/is.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/is.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/is.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/it.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/it.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/it.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/it.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ja.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ja.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ja.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ja.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ka.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ka.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ka.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ka.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/kh.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/kh.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/kh.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/kh.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/km.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/km.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/km.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/km.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ko.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ko.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ko.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ko.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/lt.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/lt.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/lt.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/lt.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/mk.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/mk.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/mk.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/mk.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ms.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ms.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ms.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ms.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/nl.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/nl.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/nl.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/nl.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/no.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/no.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/no.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/no.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ota.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ota.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ota.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ota.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/pl.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/pl.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/pl.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/pl.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ps.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ps.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ps.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ps.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/pt.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/pt.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/pt.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/pt.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ru.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ru.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ru.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ru.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/sl.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/sl.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/sl.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/sl.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/sv.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/sv.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/sv.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/sv.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ta.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ta.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ta.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ta.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/th.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/th.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/th.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/th.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/tr.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/tr.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/tr.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/tr.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ua.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ua.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ua.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ua.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/uk.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/uk.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/uk.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/uk.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ur.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ur.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ur.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/ur.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/uz.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/uz.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/uz.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/uz.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/vi.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/vi.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/vi.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/vi.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/yo.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/yo.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/yo.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/yo.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/zh-CN.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/zh-CN.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/zh-CN.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/zh-CN.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/zh-TW.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/zh-TW.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/zh-TW.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/locales/zh-TW.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/checks.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/checks.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/checks.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/checks.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/coerce.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/coerce.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/coerce.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/coerce.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/external.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/external.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/external.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/external.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/index.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/index.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/index.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/index.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/iso.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/iso.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/iso.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/iso.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/package.json create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/parse.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/parse.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/parse.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/parse.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/schemas.cjs create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/schemas.d.cts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/schemas.d.ts create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/mini/schemas.js create mode 100644 examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/v4/package.json create mode 100644 sql/create_dashboard_summary.sql create mode 100644 sql/upgrade_dashboard_v2.sql create mode 100644 sql/upgrade_telemetry_cache_bust.sql diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/esbuild b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/esbuild new file mode 120000 index 000000000..c83ac0707 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/esbuild @@ -0,0 +1 @@ +../esbuild/bin/esbuild \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/tsc b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/tsc new file mode 120000 index 000000000..0863208a6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/tsc @@ -0,0 +1 @@ +../typescript/bin/tsc \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/tsserver b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/tsserver new file mode 120000 index 000000000..f8f8f1a0c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/tsserver @@ -0,0 +1 @@ +../typescript/bin/tsserver \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/tsx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/tsx new file mode 120000 index 000000000..f7282dd89 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.bin/tsx @@ -0,0 +1 @@ +../tsx/dist/cli.mjs \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.package-lock.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.package-lock.json new file mode 100644 index 000000000..15855a50c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/.package-lock.json @@ -0,0 +1,324 @@ +{ + "name": "@example/node-headroom-compression", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@ai-sdk/anthropic": { + "version": "3.0.64", + "resolved": "https://registry.npmjs.org/@ai-sdk/anthropic/-/anthropic-3.0.64.tgz", + "integrity": "sha512-rwLi/Rsuj2pYniQXIrvClHvXDzgM4UQHHnvHTWEF14efnlKclG/1ghpNC+adsRujAbCTr6gRsSbDE2vEqriV7g==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "3.0.8", + "@ai-sdk/provider-utils": "4.0.21" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/gateway": { + "version": "3.0.80", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-3.0.80.tgz", + "integrity": "sha512-uM7kpZB5l977lW7+2X1+klBUxIZQ78+1a9jHlaHFEzcOcmmslTl3sdP0QqfuuBcO0YBM2gwOiqVdp8i4TRQYcw==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "3.0.8", + "@ai-sdk/provider-utils": "4.0.21", + "@vercel/oidc": "3.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/openai": { + "version": "3.0.48", + "resolved": "https://registry.npmjs.org/@ai-sdk/openai/-/openai-3.0.48.tgz", + "integrity": "sha512-ALmj/53EXpcRqMbGpPJPP4UOSWw0q4VGpnDo7YctvsynjkrKDmoneDG/1a7VQnSPYHnJp6tTRMf5ZdxZ5whulg==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "3.0.8", + "@ai-sdk/provider-utils": "4.0.21" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/provider": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-3.0.8.tgz", + "integrity": "sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ==", + "license": "Apache-2.0", + "dependencies": { + "json-schema": "^0.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ai-sdk/provider-utils": { + "version": "4.0.21", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-4.0.21.tgz", + "integrity": "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "3.0.8", + "@standard-schema/spec": "^1.1.0", + "eventsource-parser": "^3.0.6" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", + "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@vercel/oidc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-3.1.0.tgz", + "integrity": "sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w==", + "license": "Apache-2.0", + "engines": { + "node": ">= 20" + } + }, + "node_modules/ai": { + "version": "6.0.138", + "resolved": "https://registry.npmjs.org/ai/-/ai-6.0.138.tgz", + "integrity": "sha512-49OfPe0f5uxJ6jUdA5BBXjIinP6+ZdYfAtpF2aEH64GA5wPcxH2rf/TBUQQ0bbamBz/D+TLMV18xilZqOC+zaA==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/gateway": "3.0.80", + "@ai-sdk/provider": "3.0.8", + "@ai-sdk/provider-utils": "4.0.21", + "@opentelemetry/api": "1.9.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/dotenv": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/esbuild": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", + "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.4", + "@esbuild/android-arm": "0.27.4", + "@esbuild/android-arm64": "0.27.4", + "@esbuild/android-x64": "0.27.4", + "@esbuild/darwin-arm64": "0.27.4", + "@esbuild/darwin-x64": "0.27.4", + "@esbuild/freebsd-arm64": "0.27.4", + "@esbuild/freebsd-x64": "0.27.4", + "@esbuild/linux-arm": "0.27.4", + "@esbuild/linux-arm64": "0.27.4", + "@esbuild/linux-ia32": "0.27.4", + "@esbuild/linux-loong64": "0.27.4", + "@esbuild/linux-mips64el": "0.27.4", + "@esbuild/linux-ppc64": "0.27.4", + "@esbuild/linux-riscv64": "0.27.4", + "@esbuild/linux-s390x": "0.27.4", + "@esbuild/linux-x64": "0.27.4", + "@esbuild/netbsd-arm64": "0.27.4", + "@esbuild/netbsd-x64": "0.27.4", + "@esbuild/openbsd-arm64": "0.27.4", + "@esbuild/openbsd-x64": "0.27.4", + "@esbuild/openharmony-arm64": "0.27.4", + "@esbuild/sunos-x64": "0.27.4", + "@esbuild/win32-arm64": "0.27.4", + "@esbuild/win32-ia32": "0.27.4", + "@esbuild/win32-x64": "0.27.4" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-tsconfig": { + "version": "4.13.7", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.7.tgz", + "integrity": "sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/headroom-ai": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/headroom-ai/-/headroom-ai-0.1.0.tgz", + "integrity": "sha512-SM5i2kptwsO+KnQqpaLThZVx1ZrmobVw5JRXwF5OvnMvhV/3WbwUI+VvXHTwTCvVq+AAyhkhuVcNXod1piAVuQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@ai-sdk/provider": ">=1.0.0", + "@anthropic-ai/sdk": ">=0.30.0", + "ai": ">=6.0.0", + "openai": ">=4.0.0" + }, + "peerDependenciesMeta": { + "@ai-sdk/provider": { + "optional": true + }, + "@anthropic-ai/sdk": { + "optional": true + }, + "ai": { + "optional": true + }, + "openai": { + "optional": true + } + } + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/tsx": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.27.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/typescript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz", + "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/CHANGELOG.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/CHANGELOG.md new file mode 100644 index 000000000..7c0bda09b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/CHANGELOG.md @@ -0,0 +1,2560 @@ +# @ai-sdk/anthropic + +## 3.0.64 + +### Patch Changes + +- 05b8ca2: feat (provider/anthropic): support passing metadata.user_id + +## 3.0.63 + +### Patch Changes + +- 055cd68: fix: publish v6 to latest npm dist tag +- Updated dependencies [055cd68] + - @ai-sdk/provider-utils@4.0.21 + +## 3.0.62 + +### Patch Changes + +- 41c6a56: fix(anthropic): skip passing beta header for tool search tools + +## 3.0.61 + +### Patch Changes + +- 2381567: fix(vertex): throw warning when strict: true for vertexAnthropic + +## 3.0.60 + +### Patch Changes + +- ffe0f90: fix(anthropic): preserve the error code returned by model + +## 3.0.59 + +### Patch Changes + +- Updated dependencies [64ac0fd] + - @ai-sdk/provider-utils@4.0.20 + +## 3.0.58 + +### Patch Changes + +- 3fb4e70: feat(anthropic): support eagerInputStreaming option for fine-grained tool streaming +- Updated dependencies [ad4cfc2] + - @ai-sdk/provider-utils@4.0.19 + +## 3.0.57 + +### Patch Changes + +- Updated dependencies [824b295] + - @ai-sdk/provider-utils@4.0.18 + +## 3.0.56 + +### Patch Changes + +- e49c34d: feat(anthropic): expose anthropic.anthropicBeta to downstream providers +- e49c34d: feat(anthropic): expose anthropic.anthropicBeta to downstream provider + +## 3.0.55 + +### Patch Changes + +- 7531e72: fix(provider/anthropic): handle encrypted_code_execution_result for multi-turn with web_fetch/web_search 20260209 + +## 3.0.54 + +### Patch Changes + +- 56c67d5: feat(provider/anthropic): add support for Anthropic web tools `web_fetch_20260209` and `web_search_20260209` + +## 3.0.53 + +### Patch Changes + +- 89caf28: fix(openai-compat): decode base64 string data + +## 3.0.52 + +### Patch Changes + +- Updated dependencies [08336f1] + - @ai-sdk/provider-utils@4.0.17 + +## 3.0.51 + +### Patch Changes + +- 64a8fae: chore: remove obsolete model IDs for Anthropic, Google, OpenAI, xAI + +## 3.0.50 + +### Patch Changes + +- Updated dependencies [58bc42d] + - @ai-sdk/provider-utils@4.0.16 + +## 3.0.49 + +### Patch Changes + +- d98d9ba: Migrated deprecated `output_format` parameter to `output_config.format` for structured outputs + Enabled native structured output support for Bedrock Anthropic models via `output_config.format`. + +## 3.0.48 + +### Patch Changes + +- 2164cdf: feat(anthropic): add the new code_execution tool + +## 3.0.47 + +### Patch Changes + +- 17978c6: Pass `cacheControl` provider option as top-level `cache_control` in Anthropic API request body to support automatic caching. + +## 3.0.46 + +### Patch Changes + +- b094c07: fix compaction_delta streaming schema to allow null content + +## 3.0.45 + +### Patch Changes + +- 2a1c664: feat(provider/anthropic): add support for new Claude Sonnet 4.6 model + +## 3.0.44 + +### Patch Changes + +- 23ac4a3: fix(provider/anthropic): minor follow up to support no-op speed standard + +## 3.0.43 + +### Patch Changes + +- Updated dependencies [4024a3a] + - @ai-sdk/provider-utils@4.0.15 + +## 3.0.42 + +### Patch Changes + +- 99fbed8: feat: normalize provider specific model options type names and ensure they are exported + +## 3.0.41 + +### Patch Changes + +- c60b393: feat(anthropic): add the new compaction feature + +## 3.0.40 + +### Patch Changes + +- 8c2b1e1: fix(provider/anthropic): include actual raw usage data for `response.usage.raw` when streaming + +## 3.0.39 + +### Patch Changes + +- 0a0d29c: feat(anthropic): add support for Opus 4.6 fast mode + +## 3.0.38 + +### Patch Changes + +- Updated dependencies [7168375] + - @ai-sdk/provider@3.0.8 + - @ai-sdk/provider-utils@4.0.14 + +## 3.0.37 + +### Patch Changes + +- e288302: feat(anthropic): add support for Opus 4.6 + +## 3.0.36 + +### Patch Changes + +- 1652320: feat(anthropic): support custom tool-reference content for deferred tool loading + +## 3.0.35 + +### Patch Changes + +- Updated dependencies [53f6731] + - @ai-sdk/provider@3.0.7 + - @ai-sdk/provider-utils@4.0.13 + +## 3.0.34 + +### Patch Changes + +- Updated dependencies [96936e5] + - @ai-sdk/provider-utils@4.0.12 + +## 3.0.33 + +### Patch Changes + +- 445cbe3: fix streaming context_management field location - was incorrectly expected inside delta object but API returns it at message_delta root level + +## 3.0.32 + +### Patch Changes + +- c33343b: fix(anthropic): add missing param in tool schema + +## 3.0.31 + +### Patch Changes + +- Updated dependencies [2810850] + - @ai-sdk/provider-utils@4.0.11 + - @ai-sdk/provider@3.0.6 + +## 3.0.30 + +### Patch Changes + +- 1524271: chore: add skill information to README files + +## 3.0.29 + +### Patch Changes + +- b9d105f: Fix cache usage reporting for anthropic stream + +## 3.0.28 + +### Patch Changes + +- 2445da4: fix(provider/anthropic): populate outputTokens.text field in usage + +## 3.0.27 + +### Patch Changes + +- 572ea12: feat(anthropic): allow custom/dynamic key for providerOptions + +## 3.0.26 + +### Patch Changes + +- 2c70b90: chore: update provider docs + +## 3.0.25 + +### Patch Changes + +- 0bb9bcd: feat(provider/anthropic): add computer_20251124 tool for claude opus 4.5 + +## 3.0.24 + +### Patch Changes + +- Updated dependencies [462ad00] + - @ai-sdk/provider-utils@4.0.10 + +## 3.0.23 + +### Patch Changes + +- 4de5a1d: chore: excluded tests from src folder in npm package +- Updated dependencies [4de5a1d] + - @ai-sdk/provider@3.0.5 + - @ai-sdk/provider-utils@4.0.9 + +## 3.0.22 + +### Patch Changes + +- 8ccf04b: Add `authToken` option to support `Authorization: Bearer` authentication as an alternative to `x-api-key` header authentication. + +## 3.0.21 + +### Patch Changes + +- 662d359: feat(anthropic): deferred results for tool search tool + +## 3.0.20 + +### Patch Changes + +- 2b8369d: chore: add docs to package dist + +## 3.0.19 + +### Patch Changes + +- 8dc54db: chore: add src folders to package bundle + +## 3.0.18 + +### Patch Changes + +- c10bd49: fix(anthropic): handle web_search_result_location citations and add webFetch documents to citationDocuments + +## 3.0.17 + +### Patch Changes + +- 4729bed: Fix JSON parsing crash when handling Anthropic web_fetch tool error results + +## 3.0.16 + +### Patch Changes + +- d36fa72: Not sending structured output beta header for json response tool + +## 3.0.15 + +### Patch Changes + +- Updated dependencies [5c090e7] + - @ai-sdk/provider@3.0.4 + - @ai-sdk/provider-utils@4.0.8 + +## 3.0.14 + +### Patch Changes + +- Updated dependencies [46f46e4] + - @ai-sdk/provider-utils@4.0.7 + +## 3.0.13 + +### Patch Changes + +- Updated dependencies [1b11dcb] + - @ai-sdk/provider-utils@4.0.6 + - @ai-sdk/provider@3.0.3 + +## 3.0.12 + +### Patch Changes + +- Updated dependencies [34d1c8a] + - @ai-sdk/provider-utils@4.0.5 + +## 3.0.11 + +### Patch Changes + +- 8c1c6e3: fix(anthropic): add application/json type regex matching + +## 3.0.10 + +### Patch Changes + +- 02d9b68: fix `input_tokens` compatibility + +## 3.0.9 + +### Patch Changes + +- de2399b: fix(anthropic): assign type urls in file parts correctly + +## 3.0.8 + +### Patch Changes + +- bee4f82: fix(anthropic): enable structured output support for claude-haiku-4-5 + + This fixes an issue where the `strict: true` property was not included in the request body when using tools with Claude Haiku 4.5, because `supportsStructuredOutput` was incorrectly set to `false` for this model. + + Claude Haiku 4.5 supports structured outputs, so the `strict` property should be forwarded to the Anthropic API when specified on tools. + +## 3.0.7 + +### Patch Changes + +- Updated dependencies [d937c8f] + - @ai-sdk/provider@3.0.2 + - @ai-sdk/provider-utils@4.0.4 + +## 3.0.6 + +### Patch Changes + +- 2231e84: fix(anthropic): implement temperature/topP mutual exclusivity + + Resolves the Anthropic API breaking change where sampling parameters must use only `temperature` OR `top_p`, not both. When both parameters are provided: + + - Temperature takes priority and topP is ignored + - A warning is added to inform users: "topP is not supported when temperature is set. topP is ignored." + - The validation only runs when thinking mode is not enabled (thinking mode has its own parameter validation) + + See Anthropic migration guide: https://platform.claude.com/docs/en/about-claude/models/migrating-to-claude-4 + +## 3.0.5 + +### Patch Changes + +- Updated dependencies [0b429d4] + - @ai-sdk/provider-utils@4.0.3 + +## 3.0.4 + +### Patch Changes + +- bf39dac: Fix: Use provider tool name in Tool Search Tool results + +## 3.0.3 + +### Patch Changes + +- 77b760d: fix(anthropic): support deferred results for web search/fetch tool + +## 3.0.2 + +### Patch Changes + +- 863d34f: fix: trigger release to update `@latest` +- Updated dependencies [863d34f] + - @ai-sdk/provider@3.0.1 + - @ai-sdk/provider-utils@4.0.2 + +## 3.0.1 + +### Patch Changes + +- Updated dependencies [29264a3] + - @ai-sdk/provider-utils@4.0.1 + +## 3.0.0 + +### Major Changes + +- dee8b05: ai SDK 6 beta + +### Minor Changes + +- 78928cb: release: start 5.1 beta + +### Patch Changes + +- 0c3b58b: fix(provider): add specificationVersion to ProviderV3 +- 0adc679: feat(provider): shared spec v3 +- 50b70d6: feat(anthropic): add programmatic tool calling +- b8ea36e: feat(provider/anthropic): Anthropic-native structured outputs +- ed537e1: Add support for pdf file in tool result in anthropic +- 2109385: 'fix(anthropic): Opus 4.5 `maxOutputTokens` bump `32000` -> `64000`' +- 7c4328e: Adds url-based pdf and image support for anthropic tool results +- 8d9e8ad: chore(provider): remove generics from EmbeddingModelV3 + + Before + + ```ts + model.textEmbeddingModel("my-model-id"); + ``` + + After + + ```ts + model.embeddingModel("my-model-id"); + ``` + +- f33a018: chore: add model ID for Haiku 4.5 +- b2dbfbf: add context_management for anthropic +- dce03c4: feat: tool input examples +- 2625a04: feat(openai); update spec for mcp approval +- 11e4abe: feat(provider/anthropic): web search tool updates +- f13958c: chore(antropic): allow custom names for provider-defined tools +- afb00e3: feat(provider/anthropic): add text_editor_20250728 tool support + + Add text_editor_20250728 tool for Claude 4 models (Sonnet 4, Opus 4, Opus 4.1) with optional max_characters parameter and no undo_edit command support. + +- 95f65c2: chore: use import \* from zod/v4 +- 954c356: feat(openai): allow custom names for provider-defined tools +- 9e35785: fix(anthropic): send {} as tool input when streaming tool calls without arguments +- 544d4e8: chore(specification): rename v3 provider defined tool to provider tool +- a5f77a6: fix(anthropic): remove outdated tool name docs +- ca07285: feat(anthropic): add prompt caching validation +- a5a8db4: chore: add model ID for Sonnet 4.5 +- 1742445: Support for custom provider name in google and anthropic providers +- e8109d3: feat: tool execution approval +- 87db851: fix(vertex/anthropic): passing beta header only for structured outputs +- f6603b7: fix(provider/anthropic): correct raw usage information +- ed329cb: feat: `Provider-V3` +- 3bd2689: feat: extended token usage +- 1cad0ab: feat: add provider version to user-agent header +- 2049c5b: Fix handling of error in web fetch tool in anthropic +- 4c5a6be: feat(provider/anthropic): default and limit maxTokens based on model +- 9e1e758: fix(anthropic): use default thinking budget when unspecified +- 589a4ee: fix(anthropic): simplify pulling first chunk +- 8dac895: feat: `LanguageModelV3` +- 6f845b4: Add support for 2025-08-25 code execution tool +- 9354297: feat(provider/anthropic): add support for Agent Skills +- 03849b0: throw 500 error when the first stream chunk is an error +- 0ae783e: feat(anthropic): add the new tool search tools +- 457318b: chore(provider,ai): switch to SharedV3Warning and unified warnings +- eb56fc6: fix(anthropic): pull first chunk without async IIFE +- fa35e95: feat(provider/anthropic): add web fetch tool +- 80894b3: add return `file_id` property for anthropic code-execution-20250825 to download output files. +- 366f50b: chore(provider): add deprecated textEmbeddingModel and textEmbedding aliases +- 81d4308: feat(provider/anthropic): mcp connector support +- 6fc35cb: Retain user-supplied betas. +- f4db7b5: feat(provider/anthropic): expose container from response in provider metadata +- 6c38080: fix(anthropic): support pdf responses in web_fetch_tool_result schema validation +- 4616b86: chore: update zod peer depenedency version +- dedf206: feat(provider/anthropic): expose stop_sequence in provider metadata +- 983e394: chore(provider/anthropic): add missing provider options jsdoc +- 0e38a79: support ANTHROPIC_BASE_URL +- cf4e2a9: Add support for tool calling with structured output +- f4e4a95: feat(provider/anthropic): enable fine grained tool streaming by default +- 21f378c: fix(provider/anthropic): do not limit maxTokens when model id is unknown +- c5440c5: chore(provider/anthropic): update anthropic model ids +- 1d15673: fix(provider/anthropic): clamp temperature to valid 0-1 range with warnings +- 9cff587: chore(provider/anthropic): lazy schema loading +- d129d89: chore(anthropic): remove unnecessary doc +- 3794514: feat: flexible tool output content support +- e1e2821: fix(provider/anthropic): support null title in web fetch tool +- cbf52cd: feat: expose raw finish reason +- 10c1322: fix: moved dependency `@ai-sdk/test-server` to devDependencies +- d08308b: feat(provider/anthropic): memory tool +- 05d5b9a: fix(anthropic): make title field nullable in web_fetch and web_search tool output schemas +- 1bd7d32: feat: tool-specific strict mode +- 83aaad8: Opus 4.5 and `effort` provider option +- Updated dependencies + - @ai-sdk/provider@3.0.0 + - @ai-sdk/provider-utils@4.0.0 + +## 3.0.0-beta.98 + +### Patch Changes + +- 2049c5b: Fix handling of error in web fetch tool in anthropic + +## 3.0.0-beta.97 + +### Patch Changes + +- Updated dependencies [475189e] + - @ai-sdk/provider@3.0.0-beta.32 + - @ai-sdk/provider-utils@4.0.0-beta.59 + +## 3.0.0-beta.96 + +### Patch Changes + +- 2625a04: feat(openai); update spec for mcp approval +- Updated dependencies [2625a04] + - @ai-sdk/provider@3.0.0-beta.31 + - @ai-sdk/provider-utils@4.0.0-beta.58 + +## 3.0.0-beta.95 + +### Patch Changes + +- cbf52cd: feat: expose raw finish reason +- Updated dependencies [cbf52cd] + - @ai-sdk/provider@3.0.0-beta.30 + - @ai-sdk/provider-utils@4.0.0-beta.57 + +## 3.0.0-beta.94 + +### Patch Changes + +- Updated dependencies [9549c9e] + - @ai-sdk/provider@3.0.0-beta.29 + - @ai-sdk/provider-utils@4.0.0-beta.56 + +## 3.0.0-beta.93 + +### Patch Changes + +- 50b70d6: feat(anthropic): add programmatic tool calling +- Updated dependencies [50b70d6] + - @ai-sdk/provider-utils@4.0.0-beta.55 + +## 3.0.0-beta.92 + +### Patch Changes + +- Updated dependencies [9061dc0] + - @ai-sdk/provider-utils@4.0.0-beta.54 + - @ai-sdk/provider@3.0.0-beta.28 + +## 3.0.0-beta.91 + +### Patch Changes + +- d129d89: chore(anthropic): remove unnecessary doc + +## 3.0.0-beta.90 + +### Patch Changes + +- 366f50b: chore(provider): add deprecated textEmbeddingModel and textEmbedding aliases +- Updated dependencies [366f50b] + - @ai-sdk/provider@3.0.0-beta.27 + - @ai-sdk/provider-utils@4.0.0-beta.53 + +## 3.0.0-beta.89 + +### Patch Changes + +- Updated dependencies [763d04a] + - @ai-sdk/provider-utils@4.0.0-beta.52 + +## 3.0.0-beta.88 + +### Patch Changes + +- 87db851: fix(vertex/anthropic): passing beta header only for structured outputs + +## 3.0.0-beta.87 + +### Patch Changes + +- Updated dependencies [c1efac4] + - @ai-sdk/provider-utils@4.0.0-beta.51 + +## 3.0.0-beta.86 + +### Patch Changes + +- Updated dependencies [32223c8] + - @ai-sdk/provider-utils@4.0.0-beta.50 + +## 3.0.0-beta.85 + +### Patch Changes + +- Updated dependencies [83e5744] + - @ai-sdk/provider-utils@4.0.0-beta.49 + +## 3.0.0-beta.84 + +### Patch Changes + +- Updated dependencies [960ec8f] + - @ai-sdk/provider-utils@4.0.0-beta.48 + +## 3.0.0-beta.83 + +### Patch Changes + +- 6c38080: fix(anthropic): support pdf responses in web_fetch_tool_result schema validation + +## 3.0.0-beta.82 + +### Patch Changes + +- Updated dependencies [e9e157f] + - @ai-sdk/provider-utils@4.0.0-beta.47 + +## 3.0.0-beta.81 + +### Patch Changes + +- Updated dependencies [81e29ab] + - @ai-sdk/provider-utils@4.0.0-beta.46 + +## 3.0.0-beta.80 + +### Patch Changes + +- 05d5b9a: fix(anthropic): make title field nullable in web_fetch and web_search tool output schemas + +## 3.0.0-beta.79 + +### Patch Changes + +- 3bd2689: feat: extended token usage +- Updated dependencies [3bd2689] + - @ai-sdk/provider@3.0.0-beta.26 + - @ai-sdk/provider-utils@4.0.0-beta.45 + +## 3.0.0-beta.78 + +### Patch Changes + +- 9e1e758: fix(anthropic): use default thinking budget when unspecified + +## 3.0.0-beta.77 + +### Patch Changes + +- b2dbfbf: add context_management for anthropic + +## 3.0.0-beta.76 + +### Patch Changes + +- Updated dependencies [53f3368] + - @ai-sdk/provider@3.0.0-beta.25 + - @ai-sdk/provider-utils@4.0.0-beta.44 + +## 3.0.0-beta.75 + +### Patch Changes + +- 0ae783e: feat(anthropic): add the new tool search tools + +## 3.0.0-beta.74 + +### Patch Changes + +- dce03c4: feat: tool input examples +- Updated dependencies [dce03c4] + - @ai-sdk/provider-utils@4.0.0-beta.43 + - @ai-sdk/provider@3.0.0-beta.24 + +## 3.0.0-beta.73 + +### Patch Changes + +- Updated dependencies [3ed5519] + - @ai-sdk/provider-utils@4.0.0-beta.42 + +## 3.0.0-beta.72 + +### Patch Changes + +- a5f77a6: fix(anthropic): remove outdated tool name docs + +## 3.0.0-beta.71 + +### Patch Changes + +- 1bd7d32: feat: tool-specific strict mode +- Updated dependencies [1bd7d32] + - @ai-sdk/provider-utils@4.0.0-beta.41 + - @ai-sdk/provider@3.0.0-beta.23 + +## 3.0.0-beta.70 + +### Patch Changes + +- f13958c: chore(antropic): allow custom names for provider-defined tools + +## 3.0.0-beta.69 + +### Patch Changes + +- 589a4ee: fix(anthropic): simplify pulling first chunk + +## 3.0.0-beta.68 + +### Patch Changes + +- 9e35785: fix(anthropic): send {} as tool input when streaming tool calls without arguments + +## 3.0.0-beta.67 + +### Patch Changes + +- eb56fc6: fix(anthropic): pull first chunk without async IIFE + +## 3.0.0-beta.66 + +### Patch Changes + +- 544d4e8: chore(specification): rename v3 provider defined tool to provider tool +- Updated dependencies [544d4e8] + - @ai-sdk/provider-utils@4.0.0-beta.40 + - @ai-sdk/provider@3.0.0-beta.22 + +## 3.0.0-beta.65 + +### Patch Changes + +- 954c356: feat(openai): allow custom names for provider-defined tools +- Updated dependencies [954c356] + - @ai-sdk/provider-utils@4.0.0-beta.39 + - @ai-sdk/provider@3.0.0-beta.21 + +## 3.0.0-beta.64 + +### Patch Changes + +- 03849b0: throw 500 error when the first stream chunk is an error +- Updated dependencies [03849b0] + - @ai-sdk/provider-utils@4.0.0-beta.38 + +## 3.0.0-beta.63 + +### Patch Changes + +- 457318b: chore(provider,ai): switch to SharedV3Warning and unified warnings +- Updated dependencies [457318b] + - @ai-sdk/provider@3.0.0-beta.20 + - @ai-sdk/provider-utils@4.0.0-beta.37 + +## 3.0.0-beta.62 + +### Patch Changes + +- 8d9e8ad: chore(provider): remove generics from EmbeddingModelV3 + + Before + + ```ts + model.textEmbeddingModel("my-model-id"); + ``` + + After + + ```ts + model.embeddingModel("my-model-id"); + ``` + +- Updated dependencies [8d9e8ad] + - @ai-sdk/provider@3.0.0-beta.19 + - @ai-sdk/provider-utils@4.0.0-beta.36 + +## 3.0.0-beta.61 + +### Patch Changes + +- Updated dependencies [10d819b] + - @ai-sdk/provider@3.0.0-beta.18 + - @ai-sdk/provider-utils@4.0.0-beta.35 + +## 3.0.0-beta.60 + +### Patch Changes + +- 6fc35cb: Retain user-supplied betas. + +## 3.0.0-beta.59 + +### Patch Changes + +- 2109385: 'fix(anthropic): Opus 4.5 `maxOutputTokens` bump `32000` -> `64000`' + +## 3.0.0-beta.58 + +### Patch Changes + +- 83aaad8: Opus 4.5 and `effort` provider option + +## 3.0.0-beta.57 + +### Patch Changes + +- b8ea36e: feat(provider/anthropic): Anthropic-native structured outputs + +## 3.0.0-beta.56 + +### Patch Changes + +- 983e394: chore(provider/anthropic): add missing provider options jsdoc + +## 3.0.0-beta.55 + +### Patch Changes + +- Updated dependencies [db913bd] + - @ai-sdk/provider@3.0.0-beta.17 + - @ai-sdk/provider-utils@4.0.0-beta.34 + +## 3.0.0-beta.54 + +### Patch Changes + +- 1d15673: fix(provider/anthropic): clamp temperature to valid 0-1 range with warnings + +## 3.0.0-beta.53 + +### Patch Changes + +- Updated dependencies [b681d7d] + - @ai-sdk/provider@3.0.0-beta.16 + - @ai-sdk/provider-utils@4.0.0-beta.33 + +## 3.0.0-beta.52 + +### Patch Changes + +- Updated dependencies [32d8dbb] + - @ai-sdk/provider-utils@4.0.0-beta.32 + +## 3.0.0-beta.51 + +### Patch Changes + +- 1742445: Support for custom provider name in google and anthropic providers + +## 3.0.0-beta.50 + +### Patch Changes + +- Updated dependencies [bb36798] + - @ai-sdk/provider@3.0.0-beta.15 + - @ai-sdk/provider-utils@4.0.0-beta.31 + +## 3.0.0-beta.49 + +### Patch Changes + +- Updated dependencies [4f16c37] + - @ai-sdk/provider-utils@4.0.0-beta.30 + +## 3.0.0-beta.48 + +### Patch Changes + +- Updated dependencies [af3780b] + - @ai-sdk/provider@3.0.0-beta.14 + - @ai-sdk/provider-utils@4.0.0-beta.29 + +## 3.0.0-beta.47 + +### Patch Changes + +- Updated dependencies [016b111] + - @ai-sdk/provider-utils@4.0.0-beta.28 + +## 3.0.0-beta.46 + +### Patch Changes + +- Updated dependencies [37c58a0] + - @ai-sdk/provider@3.0.0-beta.13 + - @ai-sdk/provider-utils@4.0.0-beta.27 + +## 3.0.0-beta.45 + +### Patch Changes + +- f4e4a95: feat(provider/anthropic): enable fine grained tool streaming by default + +## 3.0.0-beta.44 + +### Patch Changes + +- cf4e2a9: Add support for tool calling with structured output + +## 3.0.0-beta.43 + +### Patch Changes + +- Updated dependencies [d1bdadb] + - @ai-sdk/provider@3.0.0-beta.12 + - @ai-sdk/provider-utils@4.0.0-beta.26 + +## 3.0.0-beta.42 + +### Patch Changes + +- Updated dependencies [4c44a5b] + - @ai-sdk/provider@3.0.0-beta.11 + - @ai-sdk/provider-utils@4.0.0-beta.25 + +## 3.0.0-beta.41 + +### Patch Changes + +- 0c3b58b: fix(provider): add specificationVersion to ProviderV3 +- Updated dependencies [0c3b58b] + - @ai-sdk/provider@3.0.0-beta.10 + - @ai-sdk/provider-utils@4.0.0-beta.24 + +## 3.0.0-beta.40 + +### Patch Changes + +- Updated dependencies [a755db5] + - @ai-sdk/provider@3.0.0-beta.9 + - @ai-sdk/provider-utils@4.0.0-beta.23 + +## 3.0.0-beta.39 + +### Patch Changes + +- Updated dependencies [58920e0] + - @ai-sdk/provider-utils@4.0.0-beta.22 + +## 3.0.0-beta.38 + +### Patch Changes + +- Updated dependencies [293a6b7] + - @ai-sdk/provider-utils@4.0.0-beta.21 + +## 3.0.0-beta.37 + +### Patch Changes + +- 7c4328e: Adds url-based pdf and image support for anthropic tool results + +## 3.0.0-beta.36 + +### Patch Changes + +- 21f378c: fix(provider/anthropic): do not limit maxTokens when model id is unknown + +## 3.0.0-beta.35 + +### Patch Changes + +- 80894b3: add return `file_id` property for anthropic code-execution-20250825 to download output files. + +## 3.0.0-beta.34 + +### Patch Changes + +- Updated dependencies [fca786b] + - @ai-sdk/provider-utils@4.0.0-beta.20 + +## 3.0.0-beta.33 + +### Patch Changes + +- 0e38a79: support ANTHROPIC_BASE_URL + +## 3.0.0-beta.32 + +### Patch Changes + +- f4db7b5: feat(provider/anthropic): expose container from response in provider metadata + +## 3.0.0-beta.31 + +### Patch Changes + +- ca07285: feat(anthropic): add prompt caching validation + +## 3.0.0-beta.30 + +### Patch Changes + +- 9354297: feat(provider/anthropic): add support for Agent Skills + +## 3.0.0-beta.29 + +### Patch Changes + +- 3794514: feat: flexible tool output content support +- Updated dependencies [3794514] + - @ai-sdk/provider-utils@4.0.0-beta.19 + - @ai-sdk/provider@3.0.0-beta.8 + +## 3.0.0-beta.28 + +### Patch Changes + +- 81d4308: feat(provider/anthropic): mcp connector support +- Updated dependencies [81d4308] + - @ai-sdk/provider@3.0.0-beta.7 + - @ai-sdk/provider-utils@4.0.0-beta.18 + +## 3.0.0-beta.27 + +### Patch Changes + +- 4c5a6be: feat(provider/anthropic): default and limit maxTokens based on model + +## 3.0.0-beta.26 + +### Patch Changes + +- f33a018: chore: add model ID for Haiku 4.5 + +## 3.0.0-beta.25 + +### Patch Changes + +- Updated dependencies [703459a] + - @ai-sdk/provider-utils@4.0.0-beta.17 + +## 3.0.0-beta.24 + +### Patch Changes + +- d08308b: feat(provider/anthropic): memory tool + +## 3.0.0-beta.23 + +### Patch Changes + +- 6f845b4: Add support for 2025-08-25 code execution tool + +## 3.0.0-beta.22 + +### Patch Changes + +- ed537e1: Add support for pdf file in tool result in anthropic + +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [6306603] + - @ai-sdk/provider-utils@4.0.0-beta.16 + +## 3.0.0-beta.20 + +### Patch Changes + +- Updated dependencies [f0b2157] + - @ai-sdk/provider-utils@4.0.0-beta.15 + +## 3.0.0-beta.19 + +### Patch Changes + +- Updated dependencies [3b1d015] + - @ai-sdk/provider-utils@4.0.0-beta.14 + +## 3.0.0-beta.18 + +### Patch Changes + +- Updated dependencies [d116b4b] + - @ai-sdk/provider-utils@4.0.0-beta.13 + +## 3.0.0-beta.17 + +### Patch Changes + +- Updated dependencies [7e32fea] + - @ai-sdk/provider-utils@4.0.0-beta.12 + +## 3.0.0-beta.16 + +### Patch Changes + +- 9cff587: chore(provider/anthropic): lazy schema loading + +## 3.0.0-beta.15 + +### Patch Changes + +- 95f65c2: chore: use import \* from zod/v4 +- Updated dependencies + - @ai-sdk/provider-utils@4.0.0-beta.11 + +## 3.0.0-beta.14 + +### Major Changes + +- dee8b05: ai SDK 6 beta + +### Patch Changes + +- Updated dependencies [dee8b05] + - @ai-sdk/provider@3.0.0-beta.6 + - @ai-sdk/provider-utils@4.0.0-beta.10 + +## 2.1.0-beta.13 + +### Patch Changes + +- Updated dependencies [521c537] + - @ai-sdk/provider-utils@3.1.0-beta.9 + +## 2.1.0-beta.12 + +### Patch Changes + +- Updated dependencies [e06565c] + - @ai-sdk/provider-utils@3.1.0-beta.8 + +## 2.1.0-beta.11 + +### Patch Changes + +- e8109d3: feat: tool execution approval +- Updated dependencies + - @ai-sdk/provider@2.1.0-beta.5 + - @ai-sdk/provider-utils@3.1.0-beta.7 + +## 2.1.0-beta.10 + +### Patch Changes + +- dedf206: feat(provider/anthropic): expose stop_sequence in provider metadata + +## 2.1.0-beta.9 + +### Patch Changes + +- 0adc679: feat(provider): shared spec v3 +- Updated dependencies + - @ai-sdk/provider-utils@3.1.0-beta.6 + - @ai-sdk/provider@2.1.0-beta.4 + +## 2.1.0-beta.8 + +### Patch Changes + +- a5a8db4: chore: add model ID for Sonnet 4.5 + +## 2.1.0-beta.7 + +### Patch Changes + +- e1e2821: fix(provider/anthropic): support null title in web fetch tool + +## 2.1.0-beta.6 + +### Patch Changes + +- 8dac895: feat: `LanguageModelV3` +- 10c1322: fix: moved dependency `@ai-sdk/test-server` to devDependencies +- Updated dependencies [8dac895] + - @ai-sdk/provider-utils@3.1.0-beta.5 + - @ai-sdk/provider@2.1.0-beta.3 + +## 2.1.0-beta.5 + +### Patch Changes + +- 11e4abe: feat(provider/anthropic): web search tool updates +- afb00e3: feat(provider/anthropic): add text_editor_20250728 tool support + + Add text_editor_20250728 tool for Claude 4 models (Sonnet 4, Opus 4, Opus 4.1) with optional max_characters parameter and no undo_edit command support. + +- f6603b7: fix(provider/anthropic): correct raw usage information +- fa35e95: feat(provider/anthropic): add web fetch tool +- c5440c5: chore(provider/anthropic): update anthropic model ids + +## 2.1.0-beta.4 + +### Patch Changes + +- 4616b86: chore: update zod peer depenedency version +- Updated dependencies [4616b86] + - @ai-sdk/provider-utils@3.1.0-beta.4 + +## 2.1.0-beta.3 + +### Patch Changes + +- ed329cb: feat: `Provider-V3` +- Updated dependencies + - @ai-sdk/provider@2.1.0-beta.2 + - @ai-sdk/provider-utils@3.1.0-beta.3 + +## 2.1.0-beta.2 + +### Patch Changes + +- 1cad0ab: feat: add provider version to user-agent header +- Updated dependencies [0c4822d] + - @ai-sdk/provider@2.1.0-beta.1 + - @ai-sdk/provider-utils@3.1.0-beta.2 + +## 2.1.0-beta.1 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/test-server@1.0.0-beta.0 + - @ai-sdk/provider-utils@3.1.0-beta.1 + +## 2.1.0-beta.0 + +### Minor Changes + +- 78928cb: release: start 5.1 beta + +### Patch Changes + +- Updated dependencies [78928cb] + - @ai-sdk/provider@2.1.0-beta.0 + - @ai-sdk/provider-utils@3.1.0-beta.0 + +## 2.0.17 + +### Patch Changes + +- da92132: fix(provider/anthorpic): add cacheControl to AnthropicProviderOptions + +## 2.0.16 + +### Patch Changes + +- Updated dependencies [0294b58] + - @ai-sdk/provider-utils@3.0.9 + +## 2.0.15 + +### Patch Changes + +- c8aab0a: fix (provider/anthropic): revert cd458a8c1667df86e6987a1f2e06159823453864 + +## 2.0.14 + +### Patch Changes + +- 2338c79: feat (provider/anthropic): update jsdoc of anthropic tools + +## 2.0.13 + +### Patch Changes + +- cd458a8: fix(anthropic): reorder tool_result parts to front of combined user messages + + Reorders tool_result content to appear before user text within combined user messages, ensuring Claude API validation requirements are met while preserving the intentional message combining behavior that prevents role alternation errors. Fixes #8318. + +## 2.0.12 + +### Patch Changes + +- Updated dependencies [99964ed] + - @ai-sdk/provider-utils@3.0.8 + +## 2.0.11 + +### Patch Changes + +- c7fee29: feat(anthropic): handle `pause_turn` as value for `stop_reason` + +## 2.0.10 + +### Patch Changes + +- c152ef7: feat(providers/anthropic): map 'refusal' stop reason to 'content-filter' finishReason + +## 2.0.9 + +### Patch Changes + +- cdc6b7a: fix(provider/anthropic): disable parallel tool use when using json output tool for structured responses + +## 2.0.8 + +### Patch Changes + +- Updated dependencies [886e7cd] + - @ai-sdk/provider-utils@3.0.7 + +## 2.0.7 + +### Patch Changes + +- Updated dependencies [1b5a3d3] + - @ai-sdk/provider-utils@3.0.6 + +## 2.0.6 + +### Patch Changes + +- Updated dependencies [0857788] + - @ai-sdk/provider-utils@3.0.5 + +## 2.0.5 + +### Patch Changes + +- Updated dependencies [68751f9] + - @ai-sdk/provider-utils@3.0.4 + +## 2.0.4 + +### Patch Changes + +- ae859ce: Added support for Anthropic provider's server-side code execution tool + +## 2.0.3 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@3.0.3 + +## 2.0.2 + +### Patch Changes + +- Updated dependencies [38ac190] + - @ai-sdk/provider-utils@3.0.2 + +## 2.0.1 + +### Patch Changes + +- Updated dependencies [90d212f] + - @ai-sdk/provider-utils@3.0.1 + +## 2.0.0 + +### Major Changes + +- d5f588f: AI SDK 5 + +### Patch Changes + +- ad66c0e: feat (provider/anthropic): json response schema support via tool calls +- 8f2854f: feat (provider/anthropic): send web search tool calls +- 5d959e7: refactor: updated openai + anthropic tool use server side +- 8dfcb11: feat(anthropic/citation): text support for citations +- 9f73965: feat (provider/anthropic): parse websearch tool args +- e2aceaf: feat: add raw chunk support +- fdff8a4: fix(provider/anthropic): correct Claude 4 model ID format +- eb173f1: chore (providers): remove model shorthand deprecation warnings +- 4f26d59: feat(provider/anthropic): add disable parallel tool use option +- 25f3454: feat(provider/anthropic): add PDF citation support with document sources for streamText +- a85c85f: fix (provider/anthropic): streaming json output +- 5c9eec4: chore(providers/anthropic): switch to providerOptions +- 2e13791: feat(anthropic): add server-side web search support +- 66962ed: fix(packages): export node10 compatible types +- 075711d: fix (provider/anthropic): return stop finish reason for json output with tool +- 269683f: Add raw Anthropic usage information to provider metadata +- d601ed9: fix (provider/anthropic): send tool call id in tool-input-start chunk +- b9ddcdd: feat(anthropic): add text_editor_20250429 tool for Claude 4 models +- 91715e5: fix (provider/google-vertex): fix anthropic support for image urls in messages +- ca8aac6: feat (providers/anthropic): add claude v4 models +- 61ab528: Add support for URL-based PDF documents in the Anthropic provider +- 84577c8: fix (providers/anthropic): remove fine grained tool streaming beta +- d1a034f: feature: using Zod 4 for internal stuff +- 6392f60: fix(anthropic): resolve web search API validation errors with partial location + provider output +- 205077b: fix: improve Zod compatibility +- ee5a9c0: feat: streamText onChunk raw chunk support +- f418dd7: Added anthropic provider defined tool support to amazon bedrock +- 362b048: add web search tool support +- 399e056: fix: anthropic computer tool +- 0b678b2: feat (provider/anthropic): enable streaming tool calls +- f10304b: feat(tool-calling): don't require the user to have to pass parameters +- a753b3a: feat (provider/anthropic): cache control for tools +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0 + - @ai-sdk/provider@2.0.0 + +## 2.0.0-beta.13 + +### Patch Changes + +- Updated dependencies [88a8ee5] + - @ai-sdk/provider-utils@3.0.0-beta.10 + +## 2.0.0-beta.12 + +### Patch Changes + +- f418dd7: Added anthropic provider defined tool support to amazon bedrock +- Updated dependencies [27deb4d] + - @ai-sdk/provider@2.0.0-beta.2 + - @ai-sdk/provider-utils@3.0.0-beta.9 + +## 2.0.0-beta.11 + +### Patch Changes + +- eb173f1: chore (providers): remove model shorthand deprecation warnings +- Updated dependencies [dd5fd43] + - @ai-sdk/provider-utils@3.0.0-beta.8 + +## 2.0.0-beta.10 + +### Patch Changes + +- 269683f: Add raw Anthropic usage information to provider metadata +- Updated dependencies [e7fcc86] + - @ai-sdk/provider-utils@3.0.0-beta.7 + +## 2.0.0-beta.9 + +### Patch Changes + +- 4f26d59: feat(provider/anthropic): add disable parallel tool use option +- a753b3a: feat (provider/anthropic): cache control for tools +- Updated dependencies [ac34802] + - @ai-sdk/provider-utils@3.0.0-beta.6 + +## 2.0.0-beta.8 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-beta.5 + +## 2.0.0-beta.7 + +### Patch Changes + +- 205077b: fix: improve Zod compatibility +- Updated dependencies [205077b] + - @ai-sdk/provider-utils@3.0.0-beta.4 + +## 2.0.0-beta.6 + +### Patch Changes + +- Updated dependencies [05d2819] + - @ai-sdk/provider-utils@3.0.0-beta.3 + +## 2.0.0-beta.5 + +### Patch Changes + +- b9ddcdd: feat(anthropic): add text_editor_20250429 tool for Claude 4 models + +## 2.0.0-beta.4 + +### Patch Changes + +- fdff8a4: fix(provider/anthropic): correct Claude 4 model ID format +- 84577c8: fix (providers/anthropic): remove fine grained tool streaming beta + +## 2.0.0-beta.3 + +### Patch Changes + +- a85c85f: fix (provider/anthropic): streaming json output +- d1a034f: feature: using Zod 4 for internal stuff +- 0b678b2: feat (provider/anthropic): enable streaming tool calls +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-beta.2 + +## 2.0.0-beta.2 + +### Patch Changes + +- d601ed9: fix (provider/anthropic): send tool call id in tool-input-start chunk + +## 2.0.0-beta.1 + +### Patch Changes + +- 8f2854f: feat (provider/anthropic): send web search tool calls +- 5d959e7: refactor: updated openai + anthropic tool use server side +- 9f73965: feat (provider/anthropic): parse websearch tool args +- 399e056: fix: anthropic computer tool +- Updated dependencies + - @ai-sdk/provider@2.0.0-beta.1 + - @ai-sdk/provider-utils@3.0.0-beta.1 + +## 2.0.0-alpha.15 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-alpha.15 + - @ai-sdk/provider-utils@3.0.0-alpha.15 + +## 2.0.0-alpha.14 + +### Patch Changes + +- 2e13791: feat(anthropic): add server-side web search support +- 6392f60: fix(anthropic): resolve web search API validation errors with partial location + provider output +- Updated dependencies + - @ai-sdk/provider@2.0.0-alpha.14 + - @ai-sdk/provider-utils@3.0.0-alpha.14 + +## 2.0.0-alpha.13 + +### Patch Changes + +- 8dfcb11: feat(anthropic/citation): text support for citations +- ee5a9c0: feat: streamText onChunk raw chunk support +- Updated dependencies [68ecf2f] + - @ai-sdk/provider@2.0.0-alpha.13 + - @ai-sdk/provider-utils@3.0.0-alpha.13 + +## 2.0.0-alpha.12 + +### Patch Changes + +- e2aceaf: feat: add raw chunk support +- Updated dependencies [e2aceaf] + - @ai-sdk/provider@2.0.0-alpha.12 + - @ai-sdk/provider-utils@3.0.0-alpha.12 + +## 2.0.0-alpha.11 + +### Patch Changes + +- 25f3454: feat(provider/anthropic): add PDF citation support with document sources for streamText +- Updated dependencies [c1e6647] + - @ai-sdk/provider@2.0.0-alpha.11 + - @ai-sdk/provider-utils@3.0.0-alpha.11 + +## 2.0.0-alpha.10 + +### Patch Changes + +- Updated dependencies [c4df419] + - @ai-sdk/provider@2.0.0-alpha.10 + - @ai-sdk/provider-utils@3.0.0-alpha.10 + +## 2.0.0-alpha.9 + +### Patch Changes + +- 362b048: add web search tool support +- Updated dependencies [811dff3] + - @ai-sdk/provider@2.0.0-alpha.9 + - @ai-sdk/provider-utils@3.0.0-alpha.9 + +## 2.0.0-alpha.8 + +### Patch Changes + +- ad66c0e: feat (provider/anthropic): json response schema support via tool calls +- 075711d: fix (provider/anthropic): return stop finish reason for json output with tool +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-alpha.8 + - @ai-sdk/provider@2.0.0-alpha.8 + +## 2.0.0-alpha.7 + +### Patch Changes + +- Updated dependencies [5c56081] + - @ai-sdk/provider@2.0.0-alpha.7 + - @ai-sdk/provider-utils@3.0.0-alpha.7 + +## 2.0.0-alpha.6 + +### Patch Changes + +- Updated dependencies [0d2c085] + - @ai-sdk/provider@2.0.0-alpha.6 + - @ai-sdk/provider-utils@3.0.0-alpha.6 + +## 2.0.0-alpha.4 + +### Patch Changes + +- ca8aac6: feat (providers/anthropic): add claude v4 models +- Updated dependencies [dc714f3] + - @ai-sdk/provider@2.0.0-alpha.4 + - @ai-sdk/provider-utils@3.0.0-alpha.4 + +## 2.0.0-alpha.3 + +### Patch Changes + +- Updated dependencies [6b98118] + - @ai-sdk/provider@2.0.0-alpha.3 + - @ai-sdk/provider-utils@3.0.0-alpha.3 + +## 2.0.0-alpha.2 + +### Patch Changes + +- Updated dependencies [26535e0] + - @ai-sdk/provider@2.0.0-alpha.2 + - @ai-sdk/provider-utils@3.0.0-alpha.2 + +## 2.0.0-alpha.1 + +### Patch Changes + +- Updated dependencies [3f2f00c] + - @ai-sdk/provider@2.0.0-alpha.1 + - @ai-sdk/provider-utils@3.0.0-alpha.1 + +## 2.0.0-canary.19 + +### Patch Changes + +- Updated dependencies [faf8446] + - @ai-sdk/provider-utils@3.0.0-canary.19 + +## 2.0.0-canary.18 + +### Patch Changes + +- Updated dependencies [40acf9b] + - @ai-sdk/provider-utils@3.0.0-canary.18 + +## 2.0.0-canary.17 + +### Patch Changes + +- Updated dependencies [ea7a7c9] + - @ai-sdk/provider-utils@3.0.0-canary.17 + +## 2.0.0-canary.16 + +### Patch Changes + +- Updated dependencies [87b828f] + - @ai-sdk/provider-utils@3.0.0-canary.16 + +## 2.0.0-canary.15 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.15 + - @ai-sdk/provider@2.0.0-canary.14 + +## 2.0.0-canary.14 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.14 + - @ai-sdk/provider@2.0.0-canary.13 + +## 2.0.0-canary.13 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.12 + - @ai-sdk/provider-utils@3.0.0-canary.13 + +## 2.0.0-canary.12 + +### Patch Changes + +- 5c9eec4: chore(providers/anthropic): switch to providerOptions +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.11 + - @ai-sdk/provider-utils@3.0.0-canary.12 + +## 2.0.0-canary.11 + +### Patch Changes + +- 66962ed: fix(packages): export node10 compatible types +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.11 + - @ai-sdk/provider@2.0.0-canary.10 + +## 2.0.0-canary.10 + +### Patch Changes + +- Updated dependencies [e86be6f] + - @ai-sdk/provider@2.0.0-canary.9 + - @ai-sdk/provider-utils@3.0.0-canary.10 + +## 2.0.0-canary.9 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.8 + - @ai-sdk/provider-utils@3.0.0-canary.9 + +## 2.0.0-canary.8 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.8 + - @ai-sdk/provider@2.0.0-canary.7 + +## 2.0.0-canary.7 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.6 + - @ai-sdk/provider-utils@3.0.0-canary.7 + +## 2.0.0-canary.6 + +### Patch Changes + +- f10304b: feat(tool-calling): don't require the user to have to pass parameters +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.5 + - @ai-sdk/provider-utils@3.0.0-canary.6 + +## 2.0.0-canary.5 + +### Patch Changes + +- Updated dependencies [6f6bb89] + - @ai-sdk/provider@2.0.0-canary.4 + - @ai-sdk/provider-utils@3.0.0-canary.5 + +## 2.0.0-canary.4 + +### Patch Changes + +- Updated dependencies [d1a1aa1] + - @ai-sdk/provider@2.0.0-canary.3 + - @ai-sdk/provider-utils@3.0.0-canary.4 + +## 2.0.0-canary.3 + +### Patch Changes + +- 61ab528: Add support for URL-based PDF documents in the Anthropic provider +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.3 + - @ai-sdk/provider@2.0.0-canary.2 + +## 2.0.0-canary.2 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.1 + - @ai-sdk/provider-utils@3.0.0-canary.2 + +## 2.0.0-canary.1 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.1 + +## 2.0.0-canary.0 + +### Major Changes + +- d5f588f: AI SDK 5 + +### Patch Changes + +- 91715e5: fix (provider/google-vertex): fix anthropic support for image urls in messages +- Updated dependencies [d5f588f] + - @ai-sdk/provider-utils@3.0.0-canary.0 + - @ai-sdk/provider@2.0.0-canary.0 + +## 1.2.4 + +### Patch Changes + +- Updated dependencies [28be004] + - @ai-sdk/provider-utils@2.2.3 + +## 1.2.3 + +### Patch Changes + +- Updated dependencies [b01120e] + - @ai-sdk/provider-utils@2.2.2 + +## 1.2.2 + +### Patch Changes + +- aeaa92b: feat (provider/anthropic): expose type for validating Anthropic responses provider options + +## 1.2.1 + +### Patch Changes + +- Updated dependencies [f10f0fa] + - @ai-sdk/provider-utils@2.2.1 + +## 1.2.0 + +### Minor Changes + +- 5bc638d: AI SDK 4.2 + +### Patch Changes + +- Updated dependencies [5bc638d] + - @ai-sdk/provider@1.1.0 + - @ai-sdk/provider-utils@2.2.0 + +## 1.1.19 + +### Patch Changes + +- Updated dependencies [d0c4659] + - @ai-sdk/provider-utils@2.1.15 + +## 1.1.18 + +### Patch Changes + +- Updated dependencies [0bd5bc6] + - @ai-sdk/provider@1.0.12 + - @ai-sdk/provider-utils@2.1.14 + +## 1.1.17 + +### Patch Changes + +- Updated dependencies [2e1101a] + - @ai-sdk/provider@1.0.11 + - @ai-sdk/provider-utils@2.1.13 + +## 1.1.16 + +### Patch Changes + +- Updated dependencies [1531959] + - @ai-sdk/provider-utils@2.1.12 + +## 1.1.15 + +### Patch Changes + +- e1d3d42: feat (ai): expose raw response body in generateText and generateObject +- Updated dependencies [e1d3d42] + - @ai-sdk/provider@1.0.10 + - @ai-sdk/provider-utils@2.1.11 + +## 1.1.14 + +### Patch Changes + +- 0e8b66c: feat (provider/anthropic): support image urls + +## 1.1.13 + +### Patch Changes + +- 3004b14: feat(provider/anthropic): add bash_20250124 and text_editor_20250124 tools + +## 1.1.12 + +### Patch Changes + +- b3e5a15: fix (provider/anthropic): add model setting to allow omitting reasoning content from model requests + +## 1.1.11 + +### Patch Changes + +- 00276ae: feat (provider/anthropic): update types for Anthropic computer_20250124 tool +- a4f8714: feat (provider/anthropic): update beta flag for sonnet-3-7 when using new computer-use tool + +## 1.1.10 + +### Patch Changes + +- ddf9740: feat (ai): add anthropic reasoning +- Updated dependencies [ddf9740] + - @ai-sdk/provider@1.0.9 + - @ai-sdk/provider-utils@2.1.10 + +## 1.1.9 + +### Patch Changes + +- Updated dependencies [2761f06] + - @ai-sdk/provider@1.0.8 + - @ai-sdk/provider-utils@2.1.9 + +## 1.1.8 + +### Patch Changes + +- Updated dependencies [2e898b4] + - @ai-sdk/provider-utils@2.1.8 + +## 1.1.7 + +### Patch Changes + +- Updated dependencies [3ff4ef8] + - @ai-sdk/provider-utils@2.1.7 + +## 1.1.6 + +### Patch Changes + +- Updated dependencies [d89c3b9] + - @ai-sdk/provider@1.0.7 + - @ai-sdk/provider-utils@2.1.6 + +## 1.1.5 + +### Patch Changes + +- Updated dependencies [3a602ca] + - @ai-sdk/provider-utils@2.1.5 + +## 1.1.4 + +### Patch Changes + +- Updated dependencies [066206e] + - @ai-sdk/provider-utils@2.1.4 + +## 1.1.3 + +### Patch Changes + +- Updated dependencies [39e5c1f] + - @ai-sdk/provider-utils@2.1.3 + +## 1.1.2 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@2.1.2 + - @ai-sdk/provider@1.0.6 + +## 1.1.1 + +### Patch Changes + +- 858f934: feat (provider/anthropic): default cache-control on and mark model setting deprecated +- b284e2c: feat (provider/google-vertex): support prompt caching for Anthropic Claude models +- Updated dependencies + - @ai-sdk/provider-utils@2.1.1 + - @ai-sdk/provider@1.0.5 + +## 1.1.0 + +### Minor Changes + +- 62ba5ad: release: AI SDK 4.1 + +### Patch Changes + +- Updated dependencies [62ba5ad] + - @ai-sdk/provider-utils@2.1.0 + +## 1.0.9 + +### Patch Changes + +- Updated dependencies [00114c5] + - @ai-sdk/provider-utils@2.0.8 + +## 1.0.8 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@2.0.7 + +## 1.0.7 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@1.0.4 + - @ai-sdk/provider-utils@2.0.6 + +## 1.0.6 + +### Patch Changes + +- 5ed5e45: chore (config): Use ts-library.json tsconfig for no-UI libs. +- Updated dependencies [5ed5e45] + - @ai-sdk/provider-utils@2.0.5 + - @ai-sdk/provider@1.0.3 + +## 1.0.5 + +### Patch Changes + +- Updated dependencies [09a9cab] + - @ai-sdk/provider@1.0.2 + - @ai-sdk/provider-utils@2.0.4 + +## 1.0.4 + +### Patch Changes + +- bcd892e: feat (provider/google-vertex): Add support for Anthropic models. + +## 1.0.3 + +### Patch Changes + +- Updated dependencies [0984f0b] + - @ai-sdk/provider-utils@2.0.3 + +## 1.0.2 + +### Patch Changes + +- Updated dependencies [b446ae5] + - @ai-sdk/provider@1.0.1 + - @ai-sdk/provider-utils@2.0.2 + +## 1.0.1 + +### Patch Changes + +- Updated dependencies [c3ab5de] + - @ai-sdk/provider-utils@2.0.1 + +## 1.0.0 + +### Major Changes + +- 66060f7: chore (release): bump major version to 4.0 +- 0d3d3f5: chore (providers): remove baseUrl option +- 8ad0504: chore (provider/anthropic): remove Anthropic facade +- 2f6e8c0: chore (provider/anthropic): remove topK model setting + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@2.0.0 + - @ai-sdk/provider@1.0.0 + +## 1.0.0-canary.4 + +### Major Changes + +- 2f6e8c0: chore (provider/anthropic): remove topK model setting + +## 1.0.0-canary.3 + +### Patch Changes + +- Updated dependencies [8426f55] + - @ai-sdk/provider-utils@2.0.0-canary.3 + +## 1.0.0-canary.2 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@2.0.0-canary.2 + +## 1.0.0-canary.1 + +### Major Changes + +- 0d3d3f5: chore (providers): remove baseUrl option +- 8ad0504: chore (provider/anthropic): remove Anthropic facade + +### Patch Changes + +- Updated dependencies [b1da952] + - @ai-sdk/provider-utils@2.0.0-canary.1 + +## 1.0.0-canary.0 + +### Major Changes + +- 66060f7: chore (release): bump major version to 4.0 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@2.0.0-canary.0 + - @ai-sdk/provider@1.0.0-canary.0 + +## 0.0.56 + +### Patch Changes + +- e6042b1: feat (provider/anthropic): add haiku 3.5 model ids + +## 0.0.55 + +### Patch Changes + +- ac380e3: fix (provider/anthropic): continuation mode with 3+ steps + +## 0.0.54 + +### Patch Changes + +- 4d2e53b: feat (provider/anthropic): pdf support +- c8afcb5: feat (provider/anthropic): allow using computer use and cache control at the same time + +## 0.0.53 + +### Patch Changes + +- 3b1b69a: feat (provider/anthropic): add computer use tools +- 3b1b69a: feat: provider-defined tools +- 8c222cd: feat (provider/anthropic): update model ids +- 811a317: feat (ai/core): multi-part tool results (incl. images) +- Updated dependencies + - @ai-sdk/provider-utils@1.0.22 + - @ai-sdk/provider@0.0.26 + +## 0.0.52 + +### Patch Changes + +- b9b0d7b: feat (ai): access raw request body +- Updated dependencies [b9b0d7b] + - @ai-sdk/provider@0.0.25 + - @ai-sdk/provider-utils@1.0.21 + +## 0.0.51 + +### Patch Changes + +- Updated dependencies [d595d0d] + - @ai-sdk/provider@0.0.24 + - @ai-sdk/provider-utils@1.0.20 + +## 0.0.50 + +### Patch Changes + +- Updated dependencies [273f696] + - @ai-sdk/provider-utils@1.0.19 + +## 0.0.49 + +### Patch Changes + +- 03313cd: feat (ai): expose response id, response model, response timestamp in telemetry and api +- 3be7c1c: fix (provider/anthropic): support prompt caching on assistant messages +- Updated dependencies + - @ai-sdk/provider-utils@1.0.18 + - @ai-sdk/provider@0.0.23 + +## 0.0.48 + +### Patch Changes + +- 26515cb: feat (ai/provider): introduce ProviderV1 specification +- Updated dependencies [26515cb] + - @ai-sdk/provider@0.0.22 + - @ai-sdk/provider-utils@1.0.17 + +## 0.0.47 + +### Patch Changes + +- Updated dependencies [09f895f] + - @ai-sdk/provider-utils@1.0.16 + +## 0.0.46 + +### Patch Changes + +- Updated dependencies [d67fa9c] + - @ai-sdk/provider-utils@1.0.15 + +## 0.0.45 + +### Patch Changes + +- 95a53a3: chore (provider/anthropic): remove tool calls beta header + +## 0.0.44 + +### Patch Changes + +- Updated dependencies [f2c025e] + - @ai-sdk/provider@0.0.21 + - @ai-sdk/provider-utils@1.0.14 + +## 0.0.43 + +### Patch Changes + +- 6ac355e: feat (provider/anthropic): add cache control support +- Updated dependencies [6ac355e] + - @ai-sdk/provider@0.0.20 + - @ai-sdk/provider-utils@1.0.13 + +## 0.0.42 + +### Patch Changes + +- dd712ac: fix: use FetchFunction type to prevent self-reference +- Updated dependencies [dd712ac] + - @ai-sdk/provider-utils@1.0.12 + +## 0.0.41 + +### Patch Changes + +- 89b18ca: fix (ai/provider): send finish reason 'unknown' by default +- Updated dependencies [dd4a0f5] + - @ai-sdk/provider@0.0.19 + - @ai-sdk/provider-utils@1.0.11 + +## 0.0.40 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@1.0.10 + - @ai-sdk/provider@0.0.18 + +## 0.0.39 + +### Patch Changes + +- Updated dependencies [029af4c] + - @ai-sdk/provider@0.0.17 + - @ai-sdk/provider-utils@1.0.9 + +## 0.0.38 + +### Patch Changes + +- Updated dependencies [d58517b] + - @ai-sdk/provider@0.0.16 + - @ai-sdk/provider-utils@1.0.8 + +## 0.0.37 + +### Patch Changes + +- Updated dependencies [96aed25] + - @ai-sdk/provider@0.0.15 + - @ai-sdk/provider-utils@1.0.7 + +## 0.0.36 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@1.0.6 + +## 0.0.35 + +### Patch Changes + +- fe2128f0: feat (provider/anthropic): combine sequential assistant messages into one + +## 0.0.34 + +### Patch Changes + +- 7d0fd5a8: fix (provider/anthropic): handle error stream chunks + +## 0.0.33 + +### Patch Changes + +- a8d1c9e9: feat (ai/core): parallel image download +- Updated dependencies [a8d1c9e9] + - @ai-sdk/provider-utils@1.0.5 + - @ai-sdk/provider@0.0.14 + +## 0.0.32 + +### Patch Changes + +- Updated dependencies [4f88248f] + - @ai-sdk/provider-utils@1.0.4 + +## 0.0.31 + +### Patch Changes + +- 2b9da0f0: feat (core): support stopSequences setting. +- a5b58845: feat (core): support topK setting +- 4aa8deb3: feat (provider): support responseFormat setting in provider api +- 13b27ec6: chore (ai/core): remove grammar mode +- Updated dependencies + - @ai-sdk/provider@0.0.13 + - @ai-sdk/provider-utils@1.0.3 + +## 0.0.30 + +### Patch Changes + +- 4c6b80f7: chore (provider/anthropic): improve object-tool mode + +## 0.0.29 + +### Patch Changes + +- Updated dependencies [b7290943] + - @ai-sdk/provider@0.0.12 + - @ai-sdk/provider-utils@1.0.2 + +## 0.0.28 + +### Patch Changes + +- Updated dependencies [d481729f] + - @ai-sdk/provider-utils@1.0.1 + +## 0.0.27 + +### Patch Changes + +- 7e86b45e: fix (provider/anthropic): automatically trim trailing whitespace on pre-filled assistant responses + +## 0.0.26 + +### Patch Changes + +- 5edc6110: feat (ai/core): add custom request header support +- Updated dependencies + - @ai-sdk/provider@0.0.11 + - @ai-sdk/provider-utils@1.0.0 + +## 0.0.25 + +### Patch Changes + +- 91dc4296: chore (@ai-sdk/anthropic): remove anthropic-beta header + +## 0.0.24 + +### Patch Changes + +- 04800838: fix (@ai-sdk/anthropic): combine tool and user messages, combine system messages + +## 0.0.23 + +### Patch Changes + +- Updated dependencies [02f6a088] + - @ai-sdk/provider-utils@0.0.16 + +## 0.0.22 + +### Patch Changes + +- 0a22b05b: feat (@ai-sdk/anthropic): add claude-3.5-sonnet model + +## 0.0.21 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@0.0.15 + +## 0.0.20 + +### Patch Changes + +- 4728c37f: feat (core): add text embedding model support to provider registry +- 7910ae84: feat (providers): support custom fetch implementations +- Updated dependencies [7910ae84] + - @ai-sdk/provider-utils@0.0.14 + +## 0.0.19 + +### Patch Changes + +- Updated dependencies [102ca22f] + - @ai-sdk/provider@0.0.10 + - @ai-sdk/provider-utils@0.0.13 + +## 0.0.18 + +### Patch Changes + +- 09295e2e: feat (@ai-sdk/anthropic): automatically download image URLs +- Updated dependencies + - @ai-sdk/provider@0.0.9 + - @ai-sdk/provider-utils@0.0.12 + +## 0.0.17 + +### Patch Changes + +- f39c0dd2: feat (provider): implement toolChoice support +- Updated dependencies [f39c0dd2] + - @ai-sdk/provider@0.0.8 + - @ai-sdk/provider-utils@0.0.11 + +## 0.0.16 + +### Patch Changes + +- 24683b72: fix (providers): Zod is required dependency +- Updated dependencies [8e780288] + - @ai-sdk/provider@0.0.7 + - @ai-sdk/provider-utils@0.0.10 + +## 0.0.15 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@0.0.6 + - @ai-sdk/provider-utils@0.0.9 + +## 0.0.14 + +### Patch Changes + +- 06e3934: feat (provider/anthropic): streaming tool calls + +## 0.0.13 + +### Patch Changes + +- Updated dependencies [0f6bc4e] + - @ai-sdk/provider@0.0.5 + - @ai-sdk/provider-utils@0.0.8 + +## 0.0.12 + +### Patch Changes + +- Updated dependencies [325ca55] + - @ai-sdk/provider@0.0.4 + - @ai-sdk/provider-utils@0.0.7 + +## 0.0.11 + +### Patch Changes + +- 5b01c13: feat (ai/core): add system message support in messages list + +## 0.0.10 + +### Patch Changes + +- Updated dependencies [276f22b] + - @ai-sdk/provider-utils@0.0.6 + +## 0.0.9 + +### Patch Changes + +- Updated dependencies [41d5736] + - @ai-sdk/provider@0.0.3 + - @ai-sdk/provider-utils@0.0.5 + +## 0.0.8 + +### Patch Changes + +- Updated dependencies [56ef84a] + - @ai-sdk/provider-utils@0.0.4 + +## 0.0.7 + +### Patch Changes + +- 25f3350: ai/core: add support for getting raw response headers. +- Updated dependencies + - @ai-sdk/provider@0.0.2 + - @ai-sdk/provider-utils@0.0.3 + +## 0.0.6 + +### Patch Changes + +- eb150a6: ai/core: remove scaling of setting values (breaking change). If you were using the temperature, frequency penalty, or presence penalty settings, you need to update the providers and adjust the setting values. +- Updated dependencies [eb150a6] + - @ai-sdk/provider-utils@0.0.2 + - @ai-sdk/provider@0.0.1 + +## 0.0.5 + +### Patch Changes + +- c6fc35b: Add custom header support. + +## 0.0.4 + +### Patch Changes + +- ab60b18: Simplified model construction by directly calling provider functions. Add create... functions to create provider instances. + +## 0.0.3 + +### Patch Changes + +- 587240b: Standardize providers to offer .chat() method + +## 0.0.2 + +### Patch Changes + +- 2bff460: Fix build for release. + +## 0.0.1 + +### Patch Changes + +- 7b8791d: Rename baseUrl to baseURL. Automatically remove trailing slashes. +- Updated dependencies [7b8791d] + - @ai-sdk/provider-utils@0.0.1 diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/LICENSE new file mode 100644 index 000000000..6c16c29f4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/LICENSE @@ -0,0 +1,13 @@ +Copyright 2023 Vercel, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/README.md new file mode 100644 index 000000000..3d25ab811 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/README.md @@ -0,0 +1,43 @@ +# AI SDK - Anthropic Provider + +The **[Anthropic provider](https://ai-sdk.dev/providers/ai-sdk-providers/anthropic)** for the [AI SDK](https://ai-sdk.dev/docs) contains language model support for the [Anthropic Messages API](https://docs.anthropic.com/claude/reference/messages_post). + +## Setup + +The Anthropic provider is available in the `@ai-sdk/anthropic` module. You can install it with + +```bash +npm i @ai-sdk/anthropic +``` + +## Skill for Coding Agents + +If you use coding agents such as Claude Code or Cursor, we highly recommend adding the AI SDK skill to your repository: + +```shell +npx skills add vercel/ai +``` + +## Provider Instance + +You can import the default provider instance `anthropic` from `@ai-sdk/anthropic`: + +```ts +import { anthropic } from '@ai-sdk/anthropic'; +``` + +## Example + +```ts +import { anthropic } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: anthropic('claude-3-haiku-20240307'), + prompt: 'Write a vegetarian lasagna recipe for 4 people.', +}); +``` + +## Documentation + +Please check out the **[Anthropic provider documentation](https://ai-sdk.dev/providers/ai-sdk-providers/anthropic)** for more information. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/docs/05-anthropic.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/docs/05-anthropic.mdx new file mode 100644 index 000000000..bef2b7a3f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/docs/05-anthropic.mdx @@ -0,0 +1,1368 @@ +--- +title: Anthropic +description: Learn how to use the Anthropic provider for the AI SDK. +--- + +# Anthropic Provider + +The [Anthropic](https://www.anthropic.com/) provider contains language model support for the [Anthropic Messages API](https://docs.anthropic.com/claude/reference/messages_post). + +## Setup + +The Anthropic provider is available in the `@ai-sdk/anthropic` module. You can install it with + + + + + + + + + + + + + + + + + +## Provider Instance + +You can import the default provider instance `anthropic` from `@ai-sdk/anthropic`: + +```ts +import { anthropic } from '@ai-sdk/anthropic'; +``` + +If you need a customized setup, you can import `createAnthropic` from `@ai-sdk/anthropic` and create a provider instance with your settings: + +```ts +import { createAnthropic } from '@ai-sdk/anthropic'; + +const anthropic = createAnthropic({ + // custom settings +}); +``` + +You can use the following optional settings to customize the Anthropic provider instance: + +- **baseURL** _string_ + + Use a different URL prefix for API calls, e.g. to use proxy servers. + The default prefix is `https://api.anthropic.com/v1`. + +- **apiKey** _string_ + + API key that is being sent using the `x-api-key` header. + It defaults to the `ANTHROPIC_API_KEY` environment variable. + Only one of `apiKey` or `authToken` is required. + +- **authToken** _string_ + + Auth token that is being sent using the `Authorization: Bearer` header. + It defaults to the `ANTHROPIC_AUTH_TOKEN` environment variable. + Only one of `apiKey` or `authToken` is required. + +- **headers** _Record<string,string>_ + + Custom headers to include in the requests. + +- **fetch** _(input: RequestInfo, init?: RequestInit) => Promise<Response>_ + + Custom [fetch](https://developer.mozilla.org/en-US/docs/Web/API/fetch) implementation. + Defaults to the global `fetch` function. + You can use it as a middleware to intercept requests, + or to provide a custom fetch implementation for e.g. testing. + +## Language Models + +You can create models that call the [Anthropic Messages API](https://docs.anthropic.com/claude/reference/messages_post) using the provider instance. +The first argument is the model id, e.g. `claude-3-haiku-20240307`. +Some models have multi-modal capabilities. + +```ts +const model = anthropic('claude-3-haiku-20240307'); +``` + +You can also use the following aliases for model creation: + +- `anthropic.languageModel('claude-3-haiku-20240307')` - Creates a language model +- `anthropic.chat('claude-3-haiku-20240307')` - Alias for `languageModel` +- `anthropic.messages('claude-3-haiku-20240307')` - Alias for `languageModel` + +You can use Anthropic language models to generate text with the `generateText` function: + +```ts +import { anthropic } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: anthropic('claude-3-haiku-20240307'), + prompt: 'Write a vegetarian lasagna recipe for 4 people.', +}); +``` + +Anthropic language models can also be used in the `streamText` function +and support structured data generation with [`Output`](/docs/reference/ai-sdk-core/output) +(see [AI SDK Core](/docs/ai-sdk-core)). + +The following optional provider options are available for Anthropic models: + +- `disableParallelToolUse` _boolean_ + + Optional. Disables the use of parallel tool calls. Defaults to `false`. + + When set to `true`, the model will only call one tool at a time instead of potentially calling multiple tools in parallel. + +- `sendReasoning` _boolean_ + + Optional. Include reasoning content in requests sent to the model. Defaults to `true`. + + If you are experiencing issues with the model handling requests involving + reasoning content, you can set this to `false` to omit them from the request. + +- `effort` _"high" | "medium" | "low"_ + + Optional. See [Effort section](#effort) for more details. + +- `speed` _"fast" | "standard"_ + + Optional. See [Fast Mode section](#fast-mode) for more details. + +- `thinking` _object_ + + Optional. See [Reasoning section](#reasoning) for more details. + +- `toolStreaming` _boolean_ + + Whether to enable tool streaming (and structured output streaming). Default to `true`. + +- `structuredOutputMode` _"outputFormat" | "jsonTool" | "auto"_ + + Determines how structured outputs are generated. Optional. + + - `"outputFormat"`: Use the `output_format` parameter to specify the structured output format. + - `"jsonTool"`: Use a special `"json"` tool to specify the structured output format. + - `"auto"`: Use `"outputFormat"` when supported, otherwise fall back to `"jsonTool"` (default). + +- `metadata` _object_ + + Optional. Metadata to include with the request. See the [Anthropic API documentation](https://platform.claude.com/docs/en/api/messages/create) for details. + + - `userId` _string_ - An external identifier for the end-user. Should be a UUID, hash, or other opaque identifier. Must not contain PII. + +### Structured Outputs and Tool Input Streaming + +Tool call streaming is enabled by default. You can opt out by setting the +`toolStreaming` provider option to `false`. + +```ts +import { anthropic } from '@ai-sdk/anthropic'; +import { streamText, tool } from 'ai'; +import { z } from 'zod'; + +const result = streamText({ + model: anthropic('claude-sonnet-4-20250514'), + tools: { + writeFile: tool({ + description: 'Write content to a file', + inputSchema: z.object({ + path: z.string(), + content: z.string(), + }), + execute: async ({ path, content }) => { + // Implementation + return { success: true }; + }, + }), + }, + prompt: 'Write a short story to story.txt', +}); +``` + +### Effort + +Anthropic introduced an `effort` option with `claude-opus-4-5` that affects thinking, text responses, and function calls. Effort defaults to `high` and you can set it to `medium` or `low` to save tokens and to lower time-to-last-token latency (TTLT). + +```ts highlight="8-10" +import { anthropic, AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const { text, usage } = await generateText({ + model: anthropic('claude-opus-4-20250514'), + prompt: 'How many people will live in the world in 2040?', + providerOptions: { + anthropic: { + effort: 'low', + } satisfies AnthropicLanguageModelOptions, + }, +}); + +console.log(text); // resulting text +console.log(usage); // token usage +``` + +### Fast Mode + +Anthropic supports a [`speed` option](https://code.claude.com/docs/en/fast-mode) for `claude-opus-4-6` that enables faster inference with approximately 2.5x faster output token speeds. + +```ts highlight="8-10" +import { anthropic, AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: anthropic('claude-opus-4-6'), + prompt: 'Write a short poem about the sea.', + providerOptions: { + anthropic: { + speed: 'fast', + } satisfies AnthropicLanguageModelOptions, + }, +}); +``` + +The `speed` option accepts `'fast'` or `'standard'` (default behavior). + +### Reasoning + +Anthropic models support extended thinking, where Claude shows its reasoning process before providing a final answer. + +#### Adaptive Thinking + +For newer models (`claude-sonnet-4-6`, `claude-opus-4-6`, and later), use adaptive thinking. +Claude automatically determines how much reasoning to use based on the complexity of the prompt. + +```ts highlight="4,8-10" +import { anthropic, AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const { text, reasoningText, reasoning } = await generateText({ + model: anthropic('claude-opus-4-6'), + prompt: 'How many people will live in the world in 2040?', + providerOptions: { + anthropic: { + thinking: { type: 'adaptive' }, + } satisfies AnthropicLanguageModelOptions, + }, +}); + +console.log(reasoningText); // reasoning text +console.log(reasoning); // reasoning details including redacted reasoning +console.log(text); // text response +``` + +You can combine adaptive thinking with the `effort` option to control how much reasoning Claude uses: + +```ts highlight="6-8" +const { text } = await generateText({ + model: anthropic('claude-opus-4-6'), + prompt: 'Invent a new holiday and describe its traditions.', + providerOptions: { + anthropic: { + thinking: { type: 'adaptive' }, + effort: 'max', // 'low' | 'medium' | 'high' | 'max' + } satisfies AnthropicLanguageModelOptions, + }, +}); +``` + +#### Budget-Based Thinking + +For earlier models (`claude-opus-4-20250514`, `claude-sonnet-4-20250514`, `claude-sonnet-4-5-20250929`), +use `type: 'enabled'` with an explicit token budget: + +```ts highlight="4,8-10" +import { anthropic, AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const { text, reasoningText, reasoning } = await generateText({ + model: anthropic('claude-sonnet-4-5-20250929'), + prompt: 'How many people will live in the world in 2040?', + providerOptions: { + anthropic: { + thinking: { type: 'enabled', budgetTokens: 12000 }, + } satisfies AnthropicLanguageModelOptions, + }, +}); + +console.log(reasoningText); // reasoning text +console.log(reasoning); // reasoning details including redacted reasoning +console.log(text); // text response +``` + +See [AI SDK UI: Chatbot](/docs/ai-sdk-ui/chatbot#reasoning) for more details +on how to integrate reasoning into your chatbot. + +### Context Management + +Anthropic's Context Management feature allows you to automatically manage conversation context by clearing tool uses or thinking content when certain conditions are met. This helps optimize token usage and manage long conversations more efficiently. + +You can configure context management using the `contextManagement` provider option: + +```ts highlight="7-20" +import { anthropic, AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: anthropic('claude-sonnet-4-5-20250929'), + prompt: 'Continue our conversation...', + providerOptions: { + anthropic: { + contextManagement: { + edits: [ + { + type: 'clear_tool_uses_20250919', + trigger: { type: 'input_tokens', value: 10000 }, + keep: { type: 'tool_uses', value: 5 }, + clearAtLeast: { type: 'input_tokens', value: 1000 }, + clearToolInputs: true, + excludeTools: ['important_tool'], + }, + ], + }, + } satisfies AnthropicLanguageModelOptions, + }, +}); + +// Check what was cleared +console.log(result.providerMetadata?.anthropic?.contextManagement); +``` + +#### Context Editing + +Context editing strategies selectively remove specific content types from earlier in the conversation to reduce token usage without losing the overall conversation flow. + +##### Clear Tool Uses + +The `clear_tool_uses_20250919` edit type removes old tool call/result pairs from the conversation history: + +- **trigger** - Condition that triggers the clearing (e.g., `{ type: 'input_tokens', value: 10000 }` or `{ type: 'tool_uses', value: 10 }`) +- **keep** - How many recent tool uses to preserve (e.g., `{ type: 'tool_uses', value: 5 }`) +- **clearAtLeast** - Minimum amount to clear (e.g., `{ type: 'input_tokens', value: 1000 }`) +- **clearToolInputs** - Whether to clear tool input parameters (boolean) +- **excludeTools** - Array of tool names to never clear + +##### Clear Thinking + +The `clear_thinking_20251015` edit type removes thinking/reasoning blocks from earlier turns, keeping only the most recent ones: + +- **keep** - How many recent thinking turns to preserve (e.g., `{ type: 'thinking_turns', value: 2 }`) or `'all'` to keep everything + +```ts +const result = await generateText({ + model: anthropic('claude-opus-4-20250514'), + prompt: 'Continue reasoning...', + providerOptions: { + anthropic: { + thinking: { type: 'enabled', budgetTokens: 12000 }, + contextManagement: { + edits: [ + { + type: 'clear_thinking_20251015', + keep: { type: 'thinking_turns', value: 2 }, + }, + ], + }, + } satisfies AnthropicLanguageModelOptions, + }, +}); +``` + +#### Compaction + +The `compact_20260112` edit type automatically summarizes earlier conversation context when token limits are reached. This is useful for long-running conversations where you want to preserve the essence of earlier exchanges while staying within token limits. + +```ts highlight="7-19" +import { anthropic, AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import { streamText } from 'ai'; + +const result = streamText({ + model: anthropic('claude-opus-4-6'), + messages: conversationHistory, + providerOptions: { + anthropic: { + contextManagement: { + edits: [ + { + type: 'compact_20260112', + trigger: { + type: 'input_tokens', + value: 50000, // trigger compaction when input exceeds 50k tokens + }, + instructions: + 'Summarize the conversation concisely, preserving key decisions and context.', + pauseAfterCompaction: false, + }, + ], + }, + } satisfies AnthropicLanguageModelOptions, + }, +}); +``` + +**Configuration:** + +- **trigger** - Condition that triggers compaction (e.g., `{ type: 'input_tokens', value: 50000 }`) +- **instructions** - Custom instructions for how the model should summarize the conversation. Use this to guide the compaction summary towards specific aspects of the conversation you want to preserve. +- **pauseAfterCompaction** - When `true`, the model will pause after generating the compaction summary, allowing you to inspect or process it before continuing. Defaults to `false`. + +When compaction occurs, the model generates a summary of the earlier context. This summary appears as a text block with special provider metadata. + +##### Detecting Compaction in Streams + +When using `streamText`, you can detect compaction summaries by checking the `providerMetadata` on `text-start` events: + +```ts +for await (const part of result.fullStream) { + switch (part.type) { + case 'text-start': { + const isCompaction = + part.providerMetadata?.anthropic?.type === 'compaction'; + if (isCompaction) { + console.log('[COMPACTION SUMMARY START]'); + } + break; + } + case 'text-delta': { + process.stdout.write(part.text); + break; + } + } +} +``` + +##### Compaction in UI Applications + +When using `useChat` or other UI hooks, compaction summaries appear as regular text parts with `providerMetadata`. You can style them differently in your UI: + +```tsx +{ + message.parts.map((part, index) => { + if (part.type === 'text') { + const isCompaction = + (part.providerMetadata?.anthropic as { type?: string } | undefined) + ?.type === 'compaction'; + + if (isCompaction) { + return ( +
+ [Compaction Summary] +
{part.text}
+
+ ); + } + return
{part.text}
; + } + }); +} +``` + +#### Applied Edits Metadata + +After generation, you can check which edits were applied in the provider metadata: + +```ts +const metadata = result.providerMetadata?.anthropic?.contextManagement; + +if (metadata?.appliedEdits) { + metadata.appliedEdits.forEach(edit => { + if (edit.type === 'clear_tool_uses_20250919') { + console.log(`Cleared ${edit.clearedToolUses} tool uses`); + console.log(`Freed ${edit.clearedInputTokens} tokens`); + } else if (edit.type === 'clear_thinking_20251015') { + console.log(`Cleared ${edit.clearedThinkingTurns} thinking turns`); + console.log(`Freed ${edit.clearedInputTokens} tokens`); + } else if (edit.type === 'compact_20260112') { + console.log('Compaction was applied'); + } + }); +} +``` + +For more details, see [Anthropic's Context Management documentation](https://docs.anthropic.com/en/docs/build-with-claude/context-management). + +### Cache Control + +In the messages and message parts, you can use the `providerOptions` property to set cache control breakpoints. +You need to set the `anthropic` property in the `providerOptions` object to `{ cacheControl: { type: 'ephemeral' } }` to set a cache control breakpoint. + +The cache creation input tokens are then returned in the `providerMetadata` object +for `generateText`, again under the `anthropic` property. +When you use `streamText`, the response contains a promise +that resolves to the metadata. Alternatively you can receive it in the +`onFinish` callback. + +```ts highlight="8,18-20,29-30" +import { anthropic } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const errorMessage = '... long error message ...'; + +const result = await generateText({ + model: anthropic('claude-sonnet-4-5'), + messages: [ + { + role: 'user', + content: [ + { type: 'text', text: 'You are a JavaScript expert.' }, + { + type: 'text', + text: `Error message: ${errorMessage}`, + providerOptions: { + anthropic: { cacheControl: { type: 'ephemeral' } }, + }, + }, + { type: 'text', text: 'Explain the error message.' }, + ], + }, + ], +}); + +console.log(result.text); +console.log(result.providerMetadata?.anthropic); +// e.g. { cacheCreationInputTokens: 2118 } +``` + +You can also use cache control on system messages by providing multiple system messages at the head of your messages array: + +```ts highlight="3,7-9" +const result = await generateText({ + model: anthropic('claude-sonnet-4-5'), + messages: [ + { + role: 'system', + content: 'Cached system message part', + providerOptions: { + anthropic: { cacheControl: { type: 'ephemeral' } }, + }, + }, + { + role: 'system', + content: 'Uncached system message part', + }, + { + role: 'user', + content: 'User prompt', + }, + ], +}); +``` + +Cache control for tools: + +```ts +const result = await generateText({ + model: anthropic('claude-haiku-4-5'), + tools: { + cityAttractions: tool({ + inputSchema: z.object({ city: z.string() }), + providerOptions: { + anthropic: { + cacheControl: { type: 'ephemeral' }, + }, + }, + }), + }, + messages: [ + { + role: 'user', + content: 'User prompt', + }, + ], +}); +``` + +#### Longer cache TTL + +Anthropic also supports a longer 1-hour cache duration. + +Here's an example: + +```ts +const result = await generateText({ + model: anthropic('claude-haiku-4-5'), + messages: [ + { + role: 'user', + content: [ + { + type: 'text', + text: 'Long cached message', + providerOptions: { + anthropic: { + cacheControl: { type: 'ephemeral', ttl: '1h' }, + }, + }, + }, + ], + }, + ], +}); +``` + +#### Limitations + +The minimum cacheable prompt length is: + +- 4096 tokens for Claude Opus 4.5 +- 1024 tokens for Claude Opus 4.1, Claude Opus 4, Claude Sonnet 4.5, Claude Sonnet 4, Claude Sonnet 3.7, and Claude Opus 3 +- 4096 tokens for Claude Haiku 4.5 +- 2048 tokens for Claude Haiku 3.5 and Claude Haiku 3 + +Shorter prompts cannot be cached, even if marked with `cacheControl`. Any requests to cache fewer than this number of tokens will be processed without caching. + +For more on prompt caching with Anthropic, see [Anthropic's Cache Control documentation](https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching). + + + Because the `UIMessage` type (used by AI SDK UI hooks like `useChat`) does not + support the `providerOptions` property, you can use `convertToModelMessages` + first before passing the messages to functions like `generateText` or + `streamText`. For more details on `providerOptions` usage, see + [here](/docs/foundations/prompts#provider-options). + + +### Bash Tool + +The Bash Tool allows running bash commands. Here's how to create and use it: + +```ts +const bashTool = anthropic.tools.bash_20250124({ + execute: async ({ command, restart }) => { + // Implement your bash command execution logic here + // Return the result of the command execution + }, +}); +``` + +Parameters: + +- `command` (string): The bash command to run. Required unless the tool is being restarted. +- `restart` (boolean, optional): Specifying true will restart this tool. + + + Two versions are available: `bash_20250124` (recommended) and `bash_20241022`. + Only certain Claude versions are supported. + + +### Memory Tool + +The [Memory Tool](https://docs.claude.com/en/docs/agents-and-tools/tool-use/memory-tool) allows Claude to use a local memory, e.g. in the filesystem. +Here's how to create it: + +```ts +const memory = anthropic.tools.memory_20250818({ + execute: async action => { + // Implement your memory command execution logic here + // Return the result of the command execution + }, +}); +``` + +Only certain Claude versions are supported. + +### Text Editor Tool + +The Text Editor Tool provides functionality for viewing and editing text files. + +```ts +const tools = { + str_replace_based_edit_tool: anthropic.tools.textEditor_20250728({ + maxCharacters: 10000, // optional + async execute({ command, path, old_str, new_str, insert_text }) { + // ... + }, + }), +} satisfies ToolSet; +``` + + + Different models support different versions of the tool: + +- `textEditor_20250728` - For Claude Sonnet 4, Opus 4, and Opus 4.1 (recommended) +- `textEditor_20250124` - For Claude Sonnet 3.7 +- `textEditor_20241022` - For Claude Sonnet 3.5 + +Note: `textEditor_20250429` is deprecated. Use `textEditor_20250728` instead. + + + +Parameters: + +- `command` ('view' | 'create' | 'str_replace' | 'insert' | 'undo_edit'): The command to run. Note: `undo_edit` is only available in Claude 3.5 Sonnet and earlier models. +- `path` (string): Absolute path to file or directory, e.g. `/repo/file.py` or `/repo`. +- `file_text` (string, optional): Required for `create` command, with the content of the file to be created. +- `insert_line` (number, optional): Required for `insert` command. The line number after which to insert the new string. +- `new_str` (string, optional): New string for `str_replace` command. +- `insert_text` (string, optional): Required for `insert` command, containing the text to insert. +- `old_str` (string, optional): Required for `str_replace` command, containing the string to replace. +- `view_range` (number[], optional): Optional for `view` command to specify line range to show. + +### Computer Tool + +The Computer Tool enables control of keyboard and mouse actions on a computer: + +```ts +const computerTool = anthropic.tools.computer_20251124({ + displayWidthPx: 1920, + displayHeightPx: 1080, + displayNumber: 0, // Optional, for X11 environments + enableZoom: true, // Optional, enables the zoom action + + execute: async ({ action, coordinate, text, region }) => { + // Implement your computer control logic here + // Return the result of the action + + // Example code: + switch (action) { + case 'screenshot': { + // multipart result: + return { + type: 'image', + data: fs + .readFileSync('./data/screenshot-editor.png') + .toString('base64'), + }; + } + case 'zoom': { + // region is [x1, y1, x2, y2] defining the area to zoom into + return { + type: 'image', + data: fs.readFileSync('./data/zoomed-region.png').toString('base64'), + }; + } + default: { + console.log('Action:', action); + console.log('Coordinate:', coordinate); + console.log('Text:', text); + return `executed ${action}`; + } + } + }, + + // map to tool result content for LLM consumption: + toModelOutput({ output }) { + return typeof output === 'string' + ? [{ type: 'text', text: output }] + : [{ type: 'image', data: output.data, mediaType: 'image/png' }]; + }, +}); +``` + + + Use `computer_20251124` for Claude Opus 4.5 which supports the zoom action. + Use `computer_20250124` for Claude Sonnet 4.5, Haiku 4.5, Opus 4.1, Sonnet 4, + Opus 4, and Sonnet 3.7. + + +Parameters: + +- `action` ('key' | 'type' | 'mouse_move' | 'left_click' | 'left_click_drag' | 'right_click' | 'middle_click' | 'double_click' | 'screenshot' | 'cursor_position' | 'zoom'): The action to perform. The `zoom` action is only available with `computer_20251124`. +- `coordinate` (number[], optional): Required for `mouse_move` and `left_click_drag` actions. Specifies the (x, y) coordinates. +- `text` (string, optional): Required for `type` and `key` actions. +- `region` (number[], optional): Required for `zoom` action. Specifies `[x1, y1, x2, y2]` coordinates for the area to inspect. +- `displayWidthPx` (number): The width of the display in pixels. +- `displayHeightPx` (number): The height of the display in pixels. +- `displayNumber` (number, optional): The display number for X11 environments. +- `enableZoom` (boolean, optional): Enable the zoom action. Only available with `computer_20251124`. Default: `false`. + +### Web Search Tool + +Anthropic provides a provider-defined web search tool that gives Claude direct access to real-time web content, allowing it to answer questions with up-to-date information beyond its knowledge cutoff. + +You can enable web search using the provider-defined web search tool: + +```ts +import { anthropic } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const webSearchTool = anthropic.tools.webSearch_20250305({ + maxUses: 5, +}); + +const result = await generateText({ + model: anthropic('claude-opus-4-20250514'), + prompt: 'What are the latest developments in AI?', + tools: { + web_search: webSearchTool, + }, +}); +``` + + + Web search must be enabled in your organization's [Console + settings](https://console.anthropic.com/settings/privacy). + + +#### Configuration Options + +The web search tool supports several configuration options: + +- **maxUses** _number_ + + Maximum number of web searches Claude can perform during the conversation. + +- **allowedDomains** _string[]_ + + Optional list of domains that Claude is allowed to search. If provided, searches will be restricted to these domains. + +- **blockedDomains** _string[]_ + + Optional list of domains that Claude should avoid when searching. + +- **userLocation** _object_ + + Optional user location information to provide geographically relevant search results. + +```ts +const webSearchTool = anthropic.tools.webSearch_20250305({ + maxUses: 3, + allowedDomains: ['techcrunch.com', 'wired.com'], + blockedDomains: ['example-spam-site.com'], + userLocation: { + type: 'approximate', + country: 'US', + region: 'California', + city: 'San Francisco', + timezone: 'America/Los_Angeles', + }, +}); + +const result = await generateText({ + model: anthropic('claude-opus-4-20250514'), + prompt: 'Find local news about technology', + tools: { + web_search: webSearchTool, + }, +}); +``` + +### Web Fetch Tool + +Anthropic provides a provider-defined web fetch tool that allows Claude to retrieve content from specific URLs. This is useful when you want Claude to analyze or reference content from a particular webpage or document. + +You can enable web fetch using the provider-defined web fetch tool: + +```ts +import { anthropic } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: anthropic('claude-sonnet-4-0'), + prompt: + 'What is this page about? https://en.wikipedia.org/wiki/Maglemosian_culture', + tools: { + web_fetch: anthropic.tools.webFetch_20250910({ maxUses: 1 }), + }, +}); +``` + +### Tool Search + +Anthropic provides provider-defined tool search tools that enable Claude to work with hundreds or thousands of tools by dynamically discovering and loading them on-demand. Instead of loading all tool definitions into the context window upfront, Claude searches your tool catalog and loads only the tools it needs. + +There are two variants: + +- **BM25 Search** - Uses natural language queries to find tools +- **Regex Search** - Uses regex patterns (Python `re.search()` syntax) to find tools + +#### Basic Usage + +```ts +import { anthropic } from '@ai-sdk/anthropic'; +import { generateText, tool } from 'ai'; +import { z } from 'zod'; + +const result = await generateText({ + model: anthropic('claude-sonnet-4-5'), + prompt: 'What is the weather in San Francisco?', + tools: { + toolSearch: anthropic.tools.toolSearchBm25_20251119(), + + get_weather: tool({ + description: 'Get the current weather at a specific location', + inputSchema: z.object({ + location: z.string().describe('The city and state'), + }), + execute: async ({ location }) => ({ + location, + temperature: 72, + condition: 'Sunny', + }), + // Defer tool here - Claude discovers these via the tool search tool + providerOptions: { + anthropic: { deferLoading: true }, + }, + }), + }, +}); +``` + +#### Using Regex Search + +For more precise tool matching, you can use the regex variant: + +```ts +const result = await generateText({ + model: anthropic('claude-sonnet-4-5'), + prompt: 'Get the weather data', + tools: { + toolSearch: anthropic.tools.toolSearchRegex_20251119(), + // ... deferred tools + }, +}); +``` + +Claude will construct regex patterns like `weather|temperature|forecast` to find matching tools. + +#### Custom Tool Search + +You can implement your own tool search logic (e.g., using embeddings or semantic search) by returning `tool-reference` content blocks via `toModelOutput`: + +```ts +import { anthropic } from '@ai-sdk/anthropic'; +import { generateText, tool } from 'ai'; +import { z } from 'zod'; + +const result = await generateText({ + model: anthropic('claude-sonnet-4-5'), + prompt: 'What is the weather in San Francisco?', + tools: { + // Custom search tool + searchTools: tool({ + description: 'Search for tools by keyword', + inputSchema: z.object({ query: z.string() }), + execute: async ({ query }) => { + // Your custom search logic (embeddings, fuzzy match, etc.) + const allTools = ['get_weather', 'get_forecast', 'get_temperature']; + return allTools.filter(name => name.includes(query.toLowerCase())); + }, + toModelOutput: ({ output }) => ({ + type: 'content', + value: (output as string[]).map(toolName => ({ + type: 'custom' as const, + providerOptions: { + anthropic: { + type: 'tool-reference', + toolName, + }, + }, + })), + }), + }), + + // Deferred tools + get_weather: tool({ + description: 'Get the current weather', + inputSchema: z.object({ location: z.string() }), + execute: async ({ location }) => ({ location, temperature: 72 }), + providerOptions: { + anthropic: { deferLoading: true }, + }, + }), + }, +}); +``` + +This sends `tool_reference` blocks to Anthropic, which loads the corresponding deferred tool schemas into Claude's context. + +### MCP Connectors + +Anthropic supports connecting to [MCP servers](https://docs.claude.com/en/docs/agents-and-tools/mcp-connector) as part of their execution. + +You can enable this feature with the `mcpServers` provider option: + +```ts +import { anthropic, AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: anthropic('claude-sonnet-4-5'), + prompt: `Call the echo tool with "hello world". what does it respond with back?`, + providerOptions: { + anthropic: { + mcpServers: [ + { + type: 'url', + name: 'echo', + url: 'https://echo.mcp.inevitable.fyi/mcp', + // optional: authorization token + authorizationToken: mcpAuthToken, + // optional: tool configuration + toolConfiguration: { + enabled: true, + allowedTools: ['echo'], + }, + }, + ], + } satisfies AnthropicLanguageModelOptions, + }, +}); +``` + +The tool calls and results are dynamic, i.e. the input and output schemas are not known. + +#### Configuration Options + +The web fetch tool supports several configuration options: + +- **maxUses** _number_ + + The maxUses parameter limits the number of web fetches performed. + +- **allowedDomains** _string[]_ + + Only fetch from these domains. + +- **blockedDomains** _string[]_ + + Never fetch from these domains. + +- **citations** _object_ + + Unlike web search where citations are always enabled, citations are optional for web fetch. Set `"citations": {"enabled": true}` to enable Claude to cite specific passages from fetched documents. + +- **maxContentTokens** _number_ + + The maxContentTokens parameter limits the amount of content that will be included in the context. + +#### Error Handling + +Web search errors are handled differently depending on whether you're using streaming or non-streaming: + +**Non-streaming (`generateText`):** +Web search errors throw exceptions that you can catch: + +```ts +try { + const result = await generateText({ + model: anthropic('claude-opus-4-20250514'), + prompt: 'Search for something', + tools: { + web_search: webSearchTool, + }, + }); +} catch (error) { + if (error.message.includes('Web search failed')) { + console.log('Search error:', error.message); + // Handle search error appropriately + } +} +``` + +**Streaming (`streamText`):** +Web search errors are delivered as error parts in the stream: + +```ts +const result = await streamText({ + model: anthropic('claude-opus-4-20250514'), + prompt: 'Search for something', + tools: { + web_search: webSearchTool, + }, +}); + +for await (const part of result.textStream) { + if (part.type === 'error') { + console.log('Search error:', part.error); + // Handle search error appropriately + } +} +``` + +## Code Execution + +Anthropic provides a provider-defined code execution tool that gives Claude direct access to a real Python environment allowing it to execute code to inform its responses. + +You can enable code execution using the provider-defined code execution tool: + +```ts +import { anthropic } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const codeExecutionTool = anthropic.tools.codeExecution_20260120(); + +const result = await generateText({ + model: anthropic('claude-opus-4-20250514'), + prompt: + 'Calculate the mean and standard deviation of [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]', + tools: { + code_execution: codeExecutionTool, + }, +}); +``` + + + Three versions are available: `codeExecution_20260120` (recommended, does not + require a beta header, supports Claude Opus 4.6, Sonnet 4.6, Sonnet 4.5, and + Opus 4.5), `codeExecution_20250825` (supports Python and Bash with enhanced + file operations), and `codeExecution_20250522` (supports Bash only). + + +#### Error Handling + +Code execution errors are handled differently depending on whether you're using streaming or non-streaming: + +**Non-streaming (`generateText`):** +Code execution errors are delivered as tool result parts in the response: + +```ts +const result = await generateText({ + model: anthropic('claude-opus-4-20250514'), + prompt: 'Execute some Python script', + tools: { + code_execution: codeExecutionTool, + }, +}); + +const toolErrors = result.content?.filter( + content => content.type === 'tool-error', +); + +toolErrors?.forEach(error => { + console.error('Tool execution error:', { + toolName: error.toolName, + toolCallId: error.toolCallId, + error: error.error, + }); +}); +``` + +**Streaming (`streamText`):** +Code execution errors are delivered as error parts in the stream: + +```ts +const result = await streamText({ + model: anthropic('claude-opus-4-20250514'), + prompt: 'Execute some Python script', + tools: { + code_execution: codeExecutionTool, + }, +}); +for await (const part of result.textStream) { + if (part.type === 'error') { + console.log('Code execution error:', part.error); + // Handle code execution error appropriately + } +} +``` + +### Programmatic Tool Calling + +[Programmatic Tool Calling](https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/programmatic-tool-calling) allows Claude to write code that calls your tools programmatically within a code execution container, rather than requiring round trips through the model for each tool invocation. This reduces latency for multi-tool workflows and decreases token consumption. + +To enable programmatic tool calling, use the `allowedCallers` provider option on tools that you want to be callable from within code execution: + +```ts highlight="13-17" +import { + anthropic, + forwardAnthropicContainerIdFromLastStep, +} from '@ai-sdk/anthropic'; +import { generateText, tool, stepCountIs } from 'ai'; +import { z } from 'zod'; + +const result = await generateText({ + model: anthropic('claude-sonnet-4-5'), + stopWhen: stepCountIs(10), + prompt: + 'Get the weather for Tokyo, Sydney, and London, then calculate the average temperature.', + tools: { + code_execution: anthropic.tools.codeExecution_20260120(), + + getWeather: tool({ + description: 'Get current weather data for a city.', + inputSchema: z.object({ + city: z.string().describe('Name of the city'), + }), + execute: async ({ city }) => { + // Your weather API implementation + return { temp: 22, condition: 'Sunny' }; + }, + // Enable this tool to be called from within code execution + providerOptions: { + anthropic: { + allowedCallers: ['code_execution_20260120'], + }, + }, + }), + }, + + // Propagate container ID between steps for code execution continuity + prepareStep: forwardAnthropicContainerIdFromLastStep, +}); +``` + +In this flow: + +1. Claude writes Python code that calls your `getWeather` tool multiple times in parallel +2. The SDK automatically executes your tool and returns results to the code execution container +3. Claude processes the results in code and generates the final response + + + Programmatic tool calling requires `claude-sonnet-4-6`, `claude-sonnet-4-5`, + `claude-opus-4-6`, or `claude-opus-4-5` models and uses the + `code_execution_20260120` or `code_execution_20250825` tool. + + +#### Container Persistence + +When using programmatic tool calling across multiple steps, you need to preserve the container ID between steps using `prepareStep`. You can use the `forwardAnthropicContainerIdFromLastStep` helper function to do this automatically. The container ID is available in `providerMetadata.anthropic.container.id` after each step completes. + +## Agent Skills + +[Anthropic Agent Skills](https://docs.claude.com/en/docs/agents-and-tools/agent-skills/overview) enable Claude to perform specialized tasks like document processing (PPTX, DOCX, PDF, XLSX) and data analysis. Skills run in a sandboxed container and require the code execution tool to be enabled. + +### Using Built-in Skills + +Anthropic provides several built-in skills: + +- **pptx** - Create and edit PowerPoint presentations +- **docx** - Create and edit Word documents +- **pdf** - Process and analyze PDF files +- **xlsx** - Work with Excel spreadsheets + +To use skills, you need to: + +1. Enable the code execution tool +2. Specify the container with skills in `providerOptions` + +```ts highlight="4,9-17,19-23" +import { anthropic, AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: anthropic('claude-sonnet-4-5'), + tools: { + code_execution: anthropic.tools.codeExecution_20260120(), + }, + prompt: 'Create a presentation about renewable energy with 5 slides', + providerOptions: { + anthropic: { + container: { + skills: [ + { + type: 'anthropic', + skillId: 'pptx', + version: 'latest', // optional + }, + ], + }, + } satisfies AnthropicLanguageModelOptions, + }, +}); +``` + +### Custom Skills + +You can also use custom skills by specifying `type: 'custom'`: + +```ts highlight="9-11" +const result = await generateText({ + model: anthropic('claude-sonnet-4-5'), + tools: { + code_execution: anthropic.tools.codeExecution_20260120(), + }, + prompt: 'Use my custom skill to process this data', + providerOptions: { + anthropic: { + container: { + skills: [ + { + type: 'custom', + skillId: 'my-custom-skill-id', + version: '1.0', // optional + }, + ], + }, + } satisfies AnthropicLanguageModelOptions, + }, +}); +``` + + + Skills use progressive context loading and execute within a sandboxed + container with code execution capabilities. + + +### PDF support + +Anthropic Claude models support reading PDF files. +You can pass PDF files as part of the message content using the `file` type: + +Option 1: URL-based PDF document + +```ts +const result = await generateText({ + model: anthropic('claude-sonnet-4-5'), + messages: [ + { + role: 'user', + content: [ + { + type: 'text', + text: 'What is an embedding model according to this document?', + }, + { + type: 'file', + data: new URL( + 'https://github.com/vercel/ai/blob/main/examples/ai-functions/data/ai.pdf?raw=true', + ), + mimeType: 'application/pdf', + }, + ], + }, + ], +}); +``` + +Option 2: Base64-encoded PDF document + +```ts +const result = await generateText({ + model: anthropic('claude-sonnet-4-5'), + messages: [ + { + role: 'user', + content: [ + { + type: 'text', + text: 'What is an embedding model according to this document?', + }, + { + type: 'file', + data: fs.readFileSync('./data/ai.pdf'), + mediaType: 'application/pdf', + }, + ], + }, + ], +}); +``` + +The model will have access to the contents of the PDF file and +respond to questions about it. +The PDF file should be passed using the `data` field, +and the `mediaType` should be set to `'application/pdf'`. + +### Model Capabilities + +| Model | Image Input | Object Generation | Tool Usage | Computer Use | Web Search | Tool Search | Compaction | +| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | +| `claude-opus-4-6` | | | | | | | | +| `claude-sonnet-4-6` | | | | | | | | +| `claude-opus-4-5` | | | | | | | | +| `claude-haiku-4-5` | | | | | | | | +| `claude-sonnet-4-5` | | | | | | | | +| `claude-opus-4-1` | | | | | | | | +| `claude-opus-4-0` | | | | | | | | +| `claude-sonnet-4-0` | | | | | | | | + + + The table above lists popular models. Please see the [Anthropic + docs](https://docs.anthropic.com/en/docs/about-claude/models) for a full list + of available models. The table above lists popular models. You can also pass + any available provider model ID as a string if needed. + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/internal.d.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/internal.d.ts new file mode 100644 index 000000000..be034cd88 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/internal.d.ts @@ -0,0 +1 @@ +export * from './dist/internal'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/package.json new file mode 100644 index 000000000..19c717b55 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/package.json @@ -0,0 +1,81 @@ +{ + "name": "@ai-sdk/anthropic", + "version": "3.0.64", + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist/**/*", + "docs/**/*", + "src", + "!src/**/*.test.ts", + "!src/**/*.test-d.ts", + "!src/**/__snapshots__", + "!src/**/__fixtures__", + "CHANGELOG.md", + "README.md", + "internal.d.ts" + ], + "directories": { + "doc": "./docs" + }, + "exports": { + "./package.json": "./package.json", + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + }, + "./internal": { + "types": "./dist/internal/index.d.ts", + "import": "./dist/internal/index.mjs", + "module": "./dist/internal/index.mjs", + "require": "./dist/internal/index.js" + } + }, + "dependencies": { + "@ai-sdk/provider": "3.0.8", + "@ai-sdk/provider-utils": "4.0.21" + }, + "devDependencies": { + "@types/node": "20.17.24", + "tsup": "^8", + "typescript": "5.8.3", + "zod": "3.25.76", + "@ai-sdk/test-server": "1.0.3", + "@vercel/ai-tsconfig": "0.0.0" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + }, + "engines": { + "node": ">=18" + }, + "publishConfig": { + "access": "public" + }, + "homepage": "https://ai-sdk.dev/docs", + "repository": { + "type": "git", + "url": "git+https://github.com/vercel/ai.git" + }, + "bugs": { + "url": "https://github.com/vercel/ai/issues" + }, + "keywords": [ + "ai" + ], + "scripts": { + "build": "pnpm clean && tsup --tsconfig tsconfig.build.json", + "build:watch": "pnpm clean && tsup --watch --tsconfig tsconfig.build.json", + "clean": "del-cli dist docs *.tsbuildinfo", + "type-check": "tsc --build", + "test": "pnpm test:node && pnpm test:edge", + "test:update": "pnpm test:node -u", + "test:watch": "vitest --config vitest.node.config.js", + "test:edge": "vitest --config vitest.edge.config.js --run", + "test:node": "vitest --config vitest.node.config.js --run" + } +} \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-error.ts new file mode 100644 index 000000000..e44740c2a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-error.ts @@ -0,0 +1,26 @@ +import { + createJsonErrorResponseHandler, + InferSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const anthropicErrorDataSchema = lazySchema(() => + zodSchema( + z.object({ + type: z.literal('error'), + error: z.object({ + type: z.string(), + message: z.string(), + }), + }), + ), +); + +export type AnthropicErrorData = InferSchema; + +export const anthropicFailedResponseHandler = createJsonErrorResponseHandler({ + errorSchema: anthropicErrorDataSchema, + errorToMessage: data => data.error.message, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-message-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-message-metadata.ts new file mode 100644 index 000000000..d58b08c5c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-message-metadata.ts @@ -0,0 +1,143 @@ +import { JSONObject } from '@ai-sdk/provider'; + +/** + * Represents a single iteration in the usage breakdown. + * When compaction occurs, the API returns an iterations array showing + * usage for each sampling iteration (compaction + message). + */ +export interface AnthropicUsageIteration { + type: 'compaction' | 'message'; + + /** + * Number of input tokens consumed in this iteration. + */ + inputTokens: number; + + /** + * Number of output tokens generated in this iteration. + */ + outputTokens: number; +} + +export interface AnthropicMessageMetadata { + usage: JSONObject; + // TODO remove cacheCreationInputTokens in AI SDK 6 + // (use value in usage object instead) + cacheCreationInputTokens: number | null; + stopSequence: string | null; + + /** + * Usage breakdown by iteration when compaction is triggered. + * + * When compaction occurs, this array contains usage for each sampling iteration. + * The first iteration is typically the compaction step, followed by the main + * message iteration. + */ + iterations: AnthropicUsageIteration[] | null; + + /** + * Information about the container used in this request. + * + * This will be non-null if a container tool (e.g., code execution) was used. + * Information about the container used in the request (for the code execution tool). + */ + container: { + /** + * The time at which the container will expire (RFC3339 timestamp). + */ + expiresAt: string; + + /** + * Identifier for the container used in this request. + */ + id: string; + + /** + * Skills loaded in the container. + */ + skills: Array<{ + /** + * Type of skill: either 'anthropic' (built-in) or 'custom' (user-defined). + */ + type: 'anthropic' | 'custom'; + + /** + * Skill ID (1-64 characters). + */ + skillId: string; + + /** + * Skill version or 'latest' for most recent version (1-64 characters). + */ + version: string; + }> | null; + } | null; + + /** + * Context management response. + * + * Information about context management strategies applied during the request. + */ + contextManagement: { + /** + * List of context management edits that were applied. + * Each item in the array is a specific type of context management edit. + */ + appliedEdits: Array< + /** + * Represents an edit where a certain number of tool uses and input tokens were cleared. + */ + | { + /** + * The type of context management edit applied. + * Possible value: 'clear_tool_uses_20250919' + */ + type: 'clear_tool_uses_20250919'; + + /** + * Number of tool uses that were cleared by this edit. + * Minimum: 0 + */ + clearedToolUses: number; + + /** + * Number of input tokens cleared by this edit. + * Minimum: 0 + */ + clearedInputTokens: number; + } + /** + * Represents an edit where a certain number of thinking turns and input tokens were cleared. + */ + | { + /** + * The type of context management edit applied. + * Possible value: 'clear_thinking_20251015' + */ + type: 'clear_thinking_20251015'; + + /** + * Number of thinking turns that were cleared by this edit. + * Minimum: 0 + */ + clearedThinkingTurns: number; + + /** + * Number of input tokens cleared by this edit. + * Minimum: 0 + */ + clearedInputTokens: number; + } + /** + * Represents a compaction edit where the conversation context was summarized. + */ + | { + /** + * The type of context management edit applied. + * Possible value: 'compact_20260112' + */ + type: 'compact_20260112'; + } + >; + } | null; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-messages-api.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-messages-api.ts new file mode 100644 index 000000000..e0e3058f7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-messages-api.ts @@ -0,0 +1,1344 @@ +import { JSONSchema7 } from '@ai-sdk/provider'; +import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export type AnthropicMessagesPrompt = { + system: Array | undefined; + messages: AnthropicMessage[]; +}; + +export type AnthropicMessage = AnthropicUserMessage | AnthropicAssistantMessage; + +export type AnthropicCacheControl = { + type: 'ephemeral'; + ttl?: '5m' | '1h'; +}; + +export interface AnthropicUserMessage { + role: 'user'; + content: Array< + | AnthropicTextContent + | AnthropicImageContent + | AnthropicDocumentContent + | AnthropicToolResultContent + >; +} + +export interface AnthropicAssistantMessage { + role: 'assistant'; + content: Array< + | AnthropicTextContent + | AnthropicThinkingContent + | AnthropicRedactedThinkingContent + | AnthropicToolCallContent + | AnthropicServerToolUseContent + | AnthropicCodeExecutionToolResultContent + | AnthropicWebFetchToolResultContent + | AnthropicWebSearchToolResultContent + | AnthropicToolSearchToolResultContent + | AnthropicBashCodeExecutionToolResultContent + | AnthropicTextEditorCodeExecutionToolResultContent + | AnthropicMcpToolUseContent + | AnthropicMcpToolResultContent + | AnthropicCompactionContent + >; +} + +export interface AnthropicCompactionContent { + type: 'compaction'; + content: string; + cache_control?: AnthropicCacheControl; +} + +export interface AnthropicTextContent { + type: 'text'; + text: string; + cache_control: AnthropicCacheControl | undefined; +} + +export interface AnthropicThinkingContent { + type: 'thinking'; + thinking: string; + signature: string; + // Note: thinking blocks cannot be directly cached with cache_control. + // They are cached implicitly when appearing in previous assistant turns. + cache_control?: never; +} + +export interface AnthropicRedactedThinkingContent { + type: 'redacted_thinking'; + data: string; + // Note: redacted thinking blocks cannot be directly cached with cache_control. + // They are cached implicitly when appearing in previous assistant turns. + cache_control?: never; +} + +type AnthropicContentSource = + | { + type: 'base64'; + media_type: string; + data: string; + } + | { + type: 'url'; + url: string; + } + | { + type: 'text'; + media_type: 'text/plain'; + data: string; + }; + +export interface AnthropicImageContent { + type: 'image'; + source: AnthropicContentSource; + cache_control: AnthropicCacheControl | undefined; +} + +export interface AnthropicDocumentContent { + type: 'document'; + source: AnthropicContentSource; + title?: string; + context?: string; + citations?: { enabled: boolean }; + cache_control: AnthropicCacheControl | undefined; +} + +/** + * The caller information for programmatic tool calling. + * Present when a tool is called from within code execution. + */ +export type AnthropicToolCallCaller = + | { + type: 'code_execution_20250825'; + tool_id: string; + } + | { + type: 'code_execution_20260120'; + tool_id: string; + } + | { + type: 'direct'; + }; + +export interface AnthropicToolCallContent { + type: 'tool_use'; + id: string; + name: string; + input: unknown; + /** + * Present when this tool call was triggered by a server-executed tool + * (e.g., code execution calling a user-defined tool programmatically). + */ + caller?: AnthropicToolCallCaller; + cache_control: AnthropicCacheControl | undefined; +} + +export interface AnthropicServerToolUseContent { + type: 'server_tool_use'; + id: string; + name: + | 'web_fetch' + | 'web_search' + // code execution 20250522: + | 'code_execution' + // code execution 20250825: + | 'bash_code_execution' + | 'text_editor_code_execution' + // tool search: + | 'tool_search_tool_regex' + | 'tool_search_tool_bm25'; + input: unknown; + cache_control: AnthropicCacheControl | undefined; +} + +// Nested content types for tool results (without cache_control) +// Sub-content blocks cannot be cached directly according to Anthropic docs +type AnthropicNestedTextContent = Omit< + AnthropicTextContent, + 'cache_control' +> & { + cache_control?: never; +}; + +type AnthropicNestedImageContent = Omit< + AnthropicImageContent, + 'cache_control' +> & { + cache_control?: never; +}; + +type AnthropicNestedDocumentContent = Omit< + AnthropicDocumentContent, + 'cache_control' +> & { + cache_control?: never; +}; + +export interface AnthropicToolReferenceContent { + type: 'tool_reference'; + tool_name: string; +} + +export interface AnthropicToolResultContent { + type: 'tool_result'; + tool_use_id: string; + content: + | string + | Array< + | AnthropicNestedTextContent + | AnthropicNestedImageContent + | AnthropicNestedDocumentContent + | AnthropicToolReferenceContent + >; + is_error: boolean | undefined; + cache_control: AnthropicCacheControl | undefined; +} + +export interface AnthropicWebSearchToolResultContent { + type: 'web_search_tool_result'; + tool_use_id: string; + content: Array<{ + url: string; + title: string | null; + page_age: string | null; + encrypted_content: string; + type: string; + }>; + cache_control: AnthropicCacheControl | undefined; +} + +export interface AnthropicToolSearchToolResultContent { + type: 'tool_search_tool_result'; + tool_use_id: string; + content: + | { + type: 'tool_search_tool_search_result'; + tool_references: Array<{ + type: 'tool_reference'; + tool_name: string; + }>; + } + | { + type: 'tool_search_tool_result_error'; + error_code: string; + }; + cache_control: AnthropicCacheControl | undefined; +} + +// code execution results for code_execution_20250522 tool: +export interface AnthropicCodeExecutionToolResultContent { + type: 'code_execution_tool_result'; + tool_use_id: string; + content: + | { + type: 'code_execution_result'; + stdout: string; + stderr: string; + return_code: number; + content: Array<{ type: 'code_execution_output'; file_id: string }>; + } + | { + type: 'encrypted_code_execution_result'; + encrypted_stdout: string; + stderr: string; + return_code: number; + content: Array<{ type: 'code_execution_output'; file_id: string }>; + } + | { + type: 'code_execution_tool_result_error'; + error_code: string; + }; + cache_control: AnthropicCacheControl | undefined; +} + +// text editor code execution results for code_execution_20250825 tool: +export interface AnthropicTextEditorCodeExecutionToolResultContent { + type: 'text_editor_code_execution_tool_result'; + tool_use_id: string; + content: + | { + type: 'text_editor_code_execution_tool_result_error'; + error_code: string; + } + | { + type: 'text_editor_code_execution_create_result'; + is_file_update: boolean; + } + | { + type: 'text_editor_code_execution_view_result'; + content: string; + file_type: string; + num_lines: number | null; + start_line: number | null; + total_lines: number | null; + } + | { + type: 'text_editor_code_execution_str_replace_result'; + lines: string[] | null; + new_lines: number | null; + new_start: number | null; + old_lines: number | null; + old_start: number | null; + }; + cache_control: AnthropicCacheControl | undefined; +} + +// bash code execution results for code_execution_20250825 tool: +export interface AnthropicBashCodeExecutionToolResultContent { + type: 'bash_code_execution_tool_result'; + tool_use_id: string; + content: + | { + type: 'bash_code_execution_result'; + stdout: string; + stderr: string; + return_code: number; + content: { + type: 'bash_code_execution_output'; + file_id: string; + }[]; + } + | { + type: 'bash_code_execution_tool_result_error'; + error_code: string; + }; + cache_control: AnthropicCacheControl | undefined; +} + +export interface AnthropicWebFetchToolResultContent { + type: 'web_fetch_tool_result'; + tool_use_id: string; + content: + | { + type: 'web_fetch_result'; + url: string; + retrieved_at: string | null; + content: { + type: 'document'; + title: string | null; + citations?: { enabled: boolean }; + source: + | { type: 'base64'; media_type: 'application/pdf'; data: string } + | { type: 'text'; media_type: 'text/plain'; data: string }; + }; + } + | { + type: 'web_fetch_tool_result_error'; + error_code: string; + }; + cache_control: AnthropicCacheControl | undefined; +} +export interface AnthropicMcpToolUseContent { + type: 'mcp_tool_use'; + id: string; + name: string; + server_name: string; + input: unknown; + cache_control: AnthropicCacheControl | undefined; +} + +export interface AnthropicMcpToolResultContent { + type: 'mcp_tool_result'; + tool_use_id: string; + is_error: boolean; + content: string | Array<{ type: 'text'; text: string }>; + cache_control: AnthropicCacheControl | undefined; +} + +export type AnthropicTool = + | { + name: string; + description: string | undefined; + input_schema: JSONSchema7; + cache_control: AnthropicCacheControl | undefined; + eager_input_streaming?: boolean; + strict?: boolean; + /** + * When true, this tool is deferred and will only be loaded when + * discovered via the tool search tool. + */ + defer_loading?: boolean; + /** + * Programmatic tool calling: specifies which server-executed tools + * are allowed to call this tool. When set, only the specified callers + * can invoke this tool programmatically. + * + * @example ['code_execution_20250825'] + */ + allowed_callers?: Array< + 'direct' | 'code_execution_20250825' | 'code_execution_20260120' + >; + } + | { + type: 'code_execution_20250522'; + name: string; + cache_control: AnthropicCacheControl | undefined; + } + | { + type: 'code_execution_20250825'; + name: string; + } + | { + type: 'code_execution_20260120'; + name: string; + } + | { + name: string; + type: 'computer_20250124' | 'computer_20241022'; + display_width_px: number; + display_height_px: number; + display_number: number; + cache_control: AnthropicCacheControl | undefined; + } + | { + name: string; + type: 'computer_20251124'; + display_width_px: number; + display_height_px: number; + display_number: number; + enable_zoom?: boolean; + cache_control: AnthropicCacheControl | undefined; + } + | { + name: string; + type: + | 'text_editor_20250124' + | 'text_editor_20241022' + | 'text_editor_20250429'; + cache_control: AnthropicCacheControl | undefined; + } + | { + name: string; + type: 'text_editor_20250728'; + max_characters?: number; + cache_control: AnthropicCacheControl | undefined; + } + | { + name: string; + type: 'bash_20250124' | 'bash_20241022'; + cache_control: AnthropicCacheControl | undefined; + } + | { + name: string; + type: 'memory_20250818'; + } + | { + type: 'web_fetch_20250910' | 'web_fetch_20260209'; + name: string; + max_uses?: number; + allowed_domains?: string[]; + blocked_domains?: string[]; + citations?: { enabled: boolean }; + max_content_tokens?: number; + cache_control: AnthropicCacheControl | undefined; + } + | { + type: 'web_search_20250305' | 'web_search_20260209'; + name: string; + max_uses?: number; + allowed_domains?: string[]; + blocked_domains?: string[]; + user_location?: { + type: 'approximate'; + city?: string; + region?: string; + country?: string; + timezone?: string; + }; + cache_control: AnthropicCacheControl | undefined; + } + | { + type: 'tool_search_tool_regex_20251119'; + name: string; + } + | { + type: 'tool_search_tool_bm25_20251119'; + name: string; + }; + +export type AnthropicSpeed = 'fast' | 'standard'; + +export type AnthropicToolChoice = + | { type: 'auto' | 'any'; disable_parallel_tool_use?: boolean } + | { type: 'tool'; name: string; disable_parallel_tool_use?: boolean }; + +export type AnthropicContainer = { + id?: string | null; + skills?: Array<{ + type: 'anthropic' | 'custom'; + skill_id: string; + version?: string; + }> | null; +}; + +export type AnthropicInputTokensTrigger = { + type: 'input_tokens'; + value: number; +}; + +export type AnthropicToolUsesTrigger = { + type: 'tool_uses'; + value: number; +}; + +export type AnthropicContextManagementTrigger = + | AnthropicInputTokensTrigger + | AnthropicToolUsesTrigger; + +export type AnthropicClearToolUsesEdit = { + type: 'clear_tool_uses_20250919'; + trigger?: AnthropicContextManagementTrigger; + keep?: { + type: 'tool_uses'; + value: number; + }; + clear_at_least?: { + type: 'input_tokens'; + value: number; + }; + clear_tool_inputs?: boolean; + exclude_tools?: string[]; +}; + +export type AnthropicClearThinkingBlockEdit = { + type: 'clear_thinking_20251015'; + keep?: 'all' | { type: 'thinking_turns'; value: number }; +}; + +export type AnthropicCompactEdit = { + type: 'compact_20260112'; + trigger?: AnthropicInputTokensTrigger; + pause_after_compaction?: boolean; + instructions?: string; +}; + +export type AnthropicContextManagementEdit = + | AnthropicClearToolUsesEdit + | AnthropicClearThinkingBlockEdit + | AnthropicCompactEdit; + +export type AnthropicContextManagementConfig = { + edits: AnthropicContextManagementEdit[]; +}; + +export type AnthropicResponseClearToolUsesEdit = { + type: 'clear_tool_uses_20250919'; + cleared_tool_uses: number; + cleared_input_tokens: number; +}; + +export type AnthropicResponseClearThinkingBlockEdit = { + type: 'clear_thinking_20251015'; + cleared_thinking_turns: number; + cleared_input_tokens: number; +}; + +export type AnthropicResponseCompactEdit = { + type: 'compact_20260112'; +}; + +export type AnthropicResponseContextManagementEdit = + | AnthropicResponseClearToolUsesEdit + | AnthropicResponseClearThinkingBlockEdit + | AnthropicResponseCompactEdit; + +export type AnthropicResponseContextManagement = { + applied_edits: AnthropicResponseContextManagementEdit[]; +}; + +// limited version of the schema, focussed on what is needed for the implementation +// this approach limits breakages when the API changes and increases efficiency +export const anthropicMessagesResponseSchema = lazySchema(() => + zodSchema( + z.object({ + type: z.literal('message'), + id: z.string().nullish(), + model: z.string().nullish(), + content: z.array( + z.discriminatedUnion('type', [ + z.object({ + type: z.literal('text'), + text: z.string(), + citations: z + .array( + z.discriminatedUnion('type', [ + z.object({ + type: z.literal('web_search_result_location'), + cited_text: z.string(), + url: z.string(), + title: z.string(), + encrypted_index: z.string(), + }), + z.object({ + type: z.literal('page_location'), + cited_text: z.string(), + document_index: z.number(), + document_title: z.string().nullable(), + start_page_number: z.number(), + end_page_number: z.number(), + }), + z.object({ + type: z.literal('char_location'), + cited_text: z.string(), + document_index: z.number(), + document_title: z.string().nullable(), + start_char_index: z.number(), + end_char_index: z.number(), + }), + ]), + ) + .optional(), + }), + z.object({ + type: z.literal('thinking'), + thinking: z.string(), + signature: z.string(), + }), + z.object({ + type: z.literal('redacted_thinking'), + data: z.string(), + }), + z.object({ + type: z.literal('compaction'), + content: z.string(), + }), + z.object({ + type: z.literal('tool_use'), + id: z.string(), + name: z.string(), + input: z.unknown(), + // Programmatic tool calling: caller info when triggered from code execution + caller: z + .union([ + z.object({ + type: z.literal('code_execution_20250825'), + tool_id: z.string(), + }), + z.object({ + type: z.literal('code_execution_20260120'), + tool_id: z.string(), + }), + z.object({ + type: z.literal('direct'), + }), + ]) + .optional(), + }), + z.object({ + type: z.literal('server_tool_use'), + id: z.string(), + name: z.string(), + input: z.record(z.string(), z.unknown()).nullish(), + caller: z + .union([ + z.object({ + type: z.literal('code_execution_20260120'), + tool_id: z.string(), + }), + z.object({ + type: z.literal('direct'), + }), + ]) + .optional(), + }), + z.object({ + type: z.literal('mcp_tool_use'), + id: z.string(), + name: z.string(), + input: z.unknown(), + server_name: z.string(), + }), + z.object({ + type: z.literal('mcp_tool_result'), + tool_use_id: z.string(), + is_error: z.boolean(), + content: z.array( + z.union([ + z.string(), + z.object({ type: z.literal('text'), text: z.string() }), + ]), + ), + }), + z.object({ + type: z.literal('web_fetch_tool_result'), + tool_use_id: z.string(), + content: z.union([ + z.object({ + type: z.literal('web_fetch_result'), + url: z.string(), + retrieved_at: z.string(), + content: z.object({ + type: z.literal('document'), + title: z.string().nullable(), + citations: z.object({ enabled: z.boolean() }).optional(), + source: z.union([ + z.object({ + type: z.literal('base64'), + media_type: z.literal('application/pdf'), + data: z.string(), + }), + z.object({ + type: z.literal('text'), + media_type: z.literal('text/plain'), + data: z.string(), + }), + ]), + }), + }), + z.object({ + type: z.literal('web_fetch_tool_result_error'), + error_code: z.string(), + }), + ]), + }), + z.object({ + type: z.literal('web_search_tool_result'), + tool_use_id: z.string(), + content: z.union([ + z.array( + z.object({ + type: z.literal('web_search_result'), + url: z.string(), + title: z.string(), + encrypted_content: z.string(), + page_age: z.string().nullish(), + }), + ), + z.object({ + type: z.literal('web_search_tool_result_error'), + error_code: z.string(), + }), + ]), + }), + // code execution results for code_execution_20250522 tool: + z.object({ + type: z.literal('code_execution_tool_result'), + tool_use_id: z.string(), + content: z.union([ + z.object({ + type: z.literal('code_execution_result'), + stdout: z.string(), + stderr: z.string(), + return_code: z.number(), + content: z + .array( + z.object({ + type: z.literal('code_execution_output'), + file_id: z.string(), + }), + ) + .optional() + .default([]), + }), + z.object({ + type: z.literal('encrypted_code_execution_result'), + encrypted_stdout: z.string(), + stderr: z.string(), + return_code: z.number(), + content: z + .array( + z.object({ + type: z.literal('code_execution_output'), + file_id: z.string(), + }), + ) + .optional() + .default([]), + }), + z.object({ + type: z.literal('code_execution_tool_result_error'), + error_code: z.string(), + }), + ]), + }), + // bash code execution results for code_execution_20250825 tool: + z.object({ + type: z.literal('bash_code_execution_tool_result'), + tool_use_id: z.string(), + content: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('bash_code_execution_result'), + content: z.array( + z.object({ + type: z.literal('bash_code_execution_output'), + file_id: z.string(), + }), + ), + stdout: z.string(), + stderr: z.string(), + return_code: z.number(), + }), + z.object({ + type: z.literal('bash_code_execution_tool_result_error'), + error_code: z.string(), + }), + ]), + }), + // text editor code execution results for code_execution_20250825 tool: + z.object({ + type: z.literal('text_editor_code_execution_tool_result'), + tool_use_id: z.string(), + content: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('text_editor_code_execution_tool_result_error'), + error_code: z.string(), + }), + z.object({ + type: z.literal('text_editor_code_execution_view_result'), + content: z.string(), + file_type: z.string(), + num_lines: z.number().nullable(), + start_line: z.number().nullable(), + total_lines: z.number().nullable(), + }), + z.object({ + type: z.literal('text_editor_code_execution_create_result'), + is_file_update: z.boolean(), + }), + z.object({ + type: z.literal( + 'text_editor_code_execution_str_replace_result', + ), + lines: z.array(z.string()).nullable(), + new_lines: z.number().nullable(), + new_start: z.number().nullable(), + old_lines: z.number().nullable(), + old_start: z.number().nullable(), + }), + ]), + }), + // tool search tool results for tool_search_tool_regex_20251119 and tool_search_tool_bm25_20251119: + z.object({ + type: z.literal('tool_search_tool_result'), + tool_use_id: z.string(), + content: z.union([ + z.object({ + type: z.literal('tool_search_tool_search_result'), + tool_references: z.array( + z.object({ + type: z.literal('tool_reference'), + tool_name: z.string(), + }), + ), + }), + z.object({ + type: z.literal('tool_search_tool_result_error'), + error_code: z.string(), + }), + ]), + }), + ]), + ), + stop_reason: z.string().nullish(), + stop_sequence: z.string().nullish(), + usage: z.looseObject({ + input_tokens: z.number(), + output_tokens: z.number(), + cache_creation_input_tokens: z.number().nullish(), + cache_read_input_tokens: z.number().nullish(), + iterations: z + .array( + z.object({ + type: z.union([z.literal('compaction'), z.literal('message')]), + input_tokens: z.number(), + output_tokens: z.number(), + }), + ) + .nullish(), + }), + container: z + .object({ + expires_at: z.string(), + id: z.string(), + skills: z + .array( + z.object({ + type: z.union([z.literal('anthropic'), z.literal('custom')]), + skill_id: z.string(), + version: z.string(), + }), + ) + .nullish(), + }) + .nullish(), + context_management: z + .object({ + applied_edits: z.array( + z.union([ + z.object({ + type: z.literal('clear_tool_uses_20250919'), + cleared_tool_uses: z.number(), + cleared_input_tokens: z.number(), + }), + z.object({ + type: z.literal('clear_thinking_20251015'), + cleared_thinking_turns: z.number(), + cleared_input_tokens: z.number(), + }), + z.object({ + type: z.literal('compact_20260112'), + }), + ]), + ), + }) + .nullish(), + }), + ), +); + +// limited version of the schema, focused on what is needed for the implementation +// this approach limits breakages when the API changes and increases efficiency +export const anthropicMessagesChunkSchema = lazySchema(() => + zodSchema( + z.discriminatedUnion('type', [ + z.object({ + type: z.literal('message_start'), + message: z.object({ + id: z.string().nullish(), + model: z.string().nullish(), + role: z.string().nullish(), + usage: z.looseObject({ + input_tokens: z.number(), + cache_creation_input_tokens: z.number().nullish(), + cache_read_input_tokens: z.number().nullish(), + }), + // Programmatic tool calling: content may be pre-populated for deferred tool calls + content: z + .array( + z.discriminatedUnion('type', [ + z.object({ + type: z.literal('tool_use'), + id: z.string(), + name: z.string(), + input: z.unknown(), + caller: z + .union([ + z.object({ + type: z.literal('code_execution_20250825'), + tool_id: z.string(), + }), + z.object({ + type: z.literal('code_execution_20260120'), + tool_id: z.string(), + }), + z.object({ + type: z.literal('direct'), + }), + ]) + .optional(), + }), + ]), + ) + .nullish(), + stop_reason: z.string().nullish(), + container: z + .object({ + expires_at: z.string(), + id: z.string(), + }) + .nullish(), + }), + }), + z.object({ + type: z.literal('content_block_start'), + index: z.number(), + content_block: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('text'), + text: z.string(), + }), + z.object({ + type: z.literal('thinking'), + thinking: z.string(), + }), + z.object({ + type: z.literal('tool_use'), + id: z.string(), + name: z.string(), + // Programmatic tool calling: input may be present directly for deferred tool calls + input: z.record(z.string(), z.unknown()).optional(), + // Programmatic tool calling: caller info when triggered from code execution + caller: z + .union([ + z.object({ + type: z.literal('code_execution_20250825'), + tool_id: z.string(), + }), + z.object({ + type: z.literal('code_execution_20260120'), + tool_id: z.string(), + }), + z.object({ + type: z.literal('direct'), + }), + ]) + .optional(), + }), + z.object({ + type: z.literal('redacted_thinking'), + data: z.string(), + }), + z.object({ + type: z.literal('compaction'), + content: z.string().nullish(), + }), + z.object({ + type: z.literal('server_tool_use'), + id: z.string(), + name: z.string(), + input: z.record(z.string(), z.unknown()).nullish(), + caller: z + .union([ + z.object({ + type: z.literal('code_execution_20260120'), + tool_id: z.string(), + }), + z.object({ + type: z.literal('direct'), + }), + ]) + .optional(), + }), + z.object({ + type: z.literal('mcp_tool_use'), + id: z.string(), + name: z.string(), + input: z.unknown(), + server_name: z.string(), + }), + z.object({ + type: z.literal('mcp_tool_result'), + tool_use_id: z.string(), + is_error: z.boolean(), + content: z.array( + z.union([ + z.string(), + z.object({ type: z.literal('text'), text: z.string() }), + ]), + ), + }), + z.object({ + type: z.literal('web_fetch_tool_result'), + tool_use_id: z.string(), + content: z.union([ + z.object({ + type: z.literal('web_fetch_result'), + url: z.string(), + retrieved_at: z.string(), + content: z.object({ + type: z.literal('document'), + title: z.string().nullable(), + citations: z.object({ enabled: z.boolean() }).optional(), + source: z.union([ + z.object({ + type: z.literal('base64'), + media_type: z.literal('application/pdf'), + data: z.string(), + }), + z.object({ + type: z.literal('text'), + media_type: z.literal('text/plain'), + data: z.string(), + }), + ]), + }), + }), + z.object({ + type: z.literal('web_fetch_tool_result_error'), + error_code: z.string(), + }), + ]), + }), + z.object({ + type: z.literal('web_search_tool_result'), + tool_use_id: z.string(), + content: z.union([ + z.array( + z.object({ + type: z.literal('web_search_result'), + url: z.string(), + title: z.string(), + encrypted_content: z.string(), + page_age: z.string().nullish(), + }), + ), + z.object({ + type: z.literal('web_search_tool_result_error'), + error_code: z.string(), + }), + ]), + }), + // code execution results for code_execution_20250522 tool: + z.object({ + type: z.literal('code_execution_tool_result'), + tool_use_id: z.string(), + content: z.union([ + z.object({ + type: z.literal('code_execution_result'), + stdout: z.string(), + stderr: z.string(), + return_code: z.number(), + content: z + .array( + z.object({ + type: z.literal('code_execution_output'), + file_id: z.string(), + }), + ) + .optional() + .default([]), + }), + z.object({ + type: z.literal('encrypted_code_execution_result'), + encrypted_stdout: z.string(), + stderr: z.string(), + return_code: z.number(), + content: z + .array( + z.object({ + type: z.literal('code_execution_output'), + file_id: z.string(), + }), + ) + .optional() + .default([]), + }), + z.object({ + type: z.literal('code_execution_tool_result_error'), + error_code: z.string(), + }), + ]), + }), + // bash code execution results for code_execution_20250825 tool: + z.object({ + type: z.literal('bash_code_execution_tool_result'), + tool_use_id: z.string(), + content: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('bash_code_execution_result'), + content: z.array( + z.object({ + type: z.literal('bash_code_execution_output'), + file_id: z.string(), + }), + ), + stdout: z.string(), + stderr: z.string(), + return_code: z.number(), + }), + z.object({ + type: z.literal('bash_code_execution_tool_result_error'), + error_code: z.string(), + }), + ]), + }), + // text editor code execution results for code_execution_20250825 tool: + z.object({ + type: z.literal('text_editor_code_execution_tool_result'), + tool_use_id: z.string(), + content: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('text_editor_code_execution_tool_result_error'), + error_code: z.string(), + }), + z.object({ + type: z.literal('text_editor_code_execution_view_result'), + content: z.string(), + file_type: z.string(), + num_lines: z.number().nullable(), + start_line: z.number().nullable(), + total_lines: z.number().nullable(), + }), + z.object({ + type: z.literal('text_editor_code_execution_create_result'), + is_file_update: z.boolean(), + }), + z.object({ + type: z.literal( + 'text_editor_code_execution_str_replace_result', + ), + lines: z.array(z.string()).nullable(), + new_lines: z.number().nullable(), + new_start: z.number().nullable(), + old_lines: z.number().nullable(), + old_start: z.number().nullable(), + }), + ]), + }), + // tool search tool results for tool_search_tool_regex_20251119 and tool_search_tool_bm25_20251119: + z.object({ + type: z.literal('tool_search_tool_result'), + tool_use_id: z.string(), + content: z.union([ + z.object({ + type: z.literal('tool_search_tool_search_result'), + tool_references: z.array( + z.object({ + type: z.literal('tool_reference'), + tool_name: z.string(), + }), + ), + }), + z.object({ + type: z.literal('tool_search_tool_result_error'), + error_code: z.string(), + }), + ]), + }), + ]), + }), + z.object({ + type: z.literal('content_block_delta'), + index: z.number(), + delta: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('input_json_delta'), + partial_json: z.string(), + }), + z.object({ + type: z.literal('text_delta'), + text: z.string(), + }), + z.object({ + type: z.literal('thinking_delta'), + thinking: z.string(), + }), + z.object({ + type: z.literal('signature_delta'), + signature: z.string(), + }), + z.object({ + type: z.literal('compaction_delta'), + content: z.string().nullish(), + }), + z.object({ + type: z.literal('citations_delta'), + citation: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('web_search_result_location'), + cited_text: z.string(), + url: z.string(), + title: z.string(), + encrypted_index: z.string(), + }), + z.object({ + type: z.literal('page_location'), + cited_text: z.string(), + document_index: z.number(), + document_title: z.string().nullable(), + start_page_number: z.number(), + end_page_number: z.number(), + }), + z.object({ + type: z.literal('char_location'), + cited_text: z.string(), + document_index: z.number(), + document_title: z.string().nullable(), + start_char_index: z.number(), + end_char_index: z.number(), + }), + ]), + }), + ]), + }), + z.object({ + type: z.literal('content_block_stop'), + index: z.number(), + }), + z.object({ + type: z.literal('error'), + error: z.object({ + type: z.string(), + message: z.string(), + }), + }), + z.object({ + type: z.literal('message_delta'), + delta: z.object({ + stop_reason: z.string().nullish(), + stop_sequence: z.string().nullish(), + container: z + .object({ + expires_at: z.string(), + id: z.string(), + skills: z + .array( + z.object({ + type: z.union([ + z.literal('anthropic'), + z.literal('custom'), + ]), + skill_id: z.string(), + version: z.string(), + }), + ) + .nullish(), + }) + .nullish(), + }), + usage: z.looseObject({ + input_tokens: z.number().nullish(), + output_tokens: z.number(), + cache_creation_input_tokens: z.number().nullish(), + cache_read_input_tokens: z.number().nullish(), + iterations: z + .array( + z.object({ + type: z.union([z.literal('compaction'), z.literal('message')]), + input_tokens: z.number(), + output_tokens: z.number(), + }), + ) + .nullish(), + }), + context_management: z + .object({ + applied_edits: z.array( + z.union([ + z.object({ + type: z.literal('clear_tool_uses_20250919'), + cleared_tool_uses: z.number(), + cleared_input_tokens: z.number(), + }), + z.object({ + type: z.literal('clear_thinking_20251015'), + cleared_thinking_turns: z.number(), + cleared_input_tokens: z.number(), + }), + z.object({ + type: z.literal('compact_20260112'), + }), + ]), + ), + }) + .nullish(), + }), + z.object({ + type: z.literal('message_stop'), + }), + z.object({ + type: z.literal('ping'), + }), + ]), + ), +); + +export const anthropicReasoningMetadataSchema = lazySchema(() => + zodSchema( + z.object({ + signature: z.string().optional(), + redactedData: z.string().optional(), + }), + ), +); + +export type AnthropicReasoningMetadata = InferSchema< + typeof anthropicReasoningMetadataSchema +>; + +export type Citation = NonNullable< + (InferSchema['content'][number] & { + type: 'text'; + })['citations'] +>[number]; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-messages-language-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-messages-language-model.ts new file mode 100644 index 000000000..5a736b0ac --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-messages-language-model.ts @@ -0,0 +1,2392 @@ +import { + APICallError, + JSONObject, + LanguageModelV3, + LanguageModelV3CallOptions, + LanguageModelV3Content, + LanguageModelV3FinishReason, + LanguageModelV3FunctionTool, + LanguageModelV3GenerateResult, + LanguageModelV3Prompt, + LanguageModelV3Source, + LanguageModelV3StreamPart, + LanguageModelV3StreamResult, + LanguageModelV3ToolCall, + SharedV3ProviderMetadata, + SharedV3Warning, +} from '@ai-sdk/provider'; +import { + combineHeaders, + createEventSourceResponseHandler, + createJsonResponseHandler, + createToolNameMapping, + FetchFunction, + generateId, + InferSchema, + parseProviderOptions, + ParseResult, + postJsonToApi, + Resolvable, + resolve, +} from '@ai-sdk/provider-utils'; +import { anthropicFailedResponseHandler } from './anthropic-error'; +import { AnthropicMessageMetadata } from './anthropic-message-metadata'; +import { + AnthropicContainer, + anthropicMessagesChunkSchema, + anthropicMessagesResponseSchema, + AnthropicReasoningMetadata, + AnthropicResponseContextManagement, + AnthropicTool, + Citation, +} from './anthropic-messages-api'; +import { + AnthropicMessagesModelId, + anthropicLanguageModelOptions, +} from './anthropic-messages-options'; +import { prepareTools } from './anthropic-prepare-tools'; +import { + AnthropicMessagesUsage, + convertAnthropicMessagesUsage, +} from './convert-anthropic-messages-usage'; +import { convertToAnthropicMessagesPrompt } from './convert-to-anthropic-messages-prompt'; +import { CacheControlValidator } from './get-cache-control'; +import { mapAnthropicStopReason } from './map-anthropic-stop-reason'; + +function createCitationSource( + citation: Citation, + citationDocuments: Array<{ + title: string; + filename?: string; + mediaType: string; + }>, + generateId: () => string, +): LanguageModelV3Source | undefined { + if (citation.type === 'web_search_result_location') { + return { + type: 'source' as const, + sourceType: 'url' as const, + id: generateId(), + url: citation.url, + title: citation.title, + providerMetadata: { + anthropic: { + citedText: citation.cited_text, + encryptedIndex: citation.encrypted_index, + }, + } satisfies SharedV3ProviderMetadata, + }; + } + + if (citation.type !== 'page_location' && citation.type !== 'char_location') { + return; + } + + const documentInfo = citationDocuments[citation.document_index]; + + if (!documentInfo) { + return; + } + + return { + type: 'source' as const, + sourceType: 'document' as const, + id: generateId(), + mediaType: documentInfo.mediaType, + title: citation.document_title ?? documentInfo.title, + filename: documentInfo.filename, + providerMetadata: { + anthropic: + citation.type === 'page_location' + ? { + citedText: citation.cited_text, + startPageNumber: citation.start_page_number, + endPageNumber: citation.end_page_number, + } + : { + citedText: citation.cited_text, + startCharIndex: citation.start_char_index, + endCharIndex: citation.end_char_index, + }, + } satisfies SharedV3ProviderMetadata, + }; +} + +type AnthropicMessagesConfig = { + provider: string; + baseURL: string; + headers: Resolvable>; + fetch?: FetchFunction; + buildRequestUrl?: (baseURL: string, isStreaming: boolean) => string; + transformRequestBody?: ( + args: Record, + betas: Set, + ) => Record; + supportedUrls?: () => LanguageModelV3['supportedUrls']; + generateId?: () => string; + + /** + * When false, the model will use JSON tool fallback for structured outputs. + */ + supportsNativeStructuredOutput?: boolean; + + /** + * When false, `strict` on tool definitions will be ignored and a warning emitted. + * Defaults to true. + */ + supportsStrictTools?: boolean; +}; + +export class AnthropicMessagesLanguageModel implements LanguageModelV3 { + readonly specificationVersion = 'v3'; + + readonly modelId: AnthropicMessagesModelId; + + private readonly config: AnthropicMessagesConfig; + private readonly generateId: () => string; + + constructor( + modelId: AnthropicMessagesModelId, + config: AnthropicMessagesConfig, + ) { + this.modelId = modelId; + this.config = config; + this.generateId = config.generateId ?? generateId; + } + + supportsUrl(url: URL): boolean { + return url.protocol === 'https:'; + } + + get provider(): string { + return this.config.provider; + } + + /** + * Extracts the dynamic provider name from the config.provider string. + * e.g., 'my-custom-anthropic.messages' -> 'my-custom-anthropic' + */ + private get providerOptionsName(): string { + const provider = this.config.provider; + const dotIndex = provider.indexOf('.'); + return dotIndex === -1 ? provider : provider.substring(0, dotIndex); + } + + get supportedUrls() { + return this.config.supportedUrls?.() ?? {}; + } + + private async getArgs({ + userSuppliedBetas, + prompt, + maxOutputTokens, + temperature, + topP, + topK, + frequencyPenalty, + presencePenalty, + stopSequences, + responseFormat, + seed, + tools, + toolChoice, + providerOptions, + stream, + }: LanguageModelV3CallOptions & { + stream: boolean; + userSuppliedBetas: Set; + }) { + const warnings: SharedV3Warning[] = []; + + if (frequencyPenalty != null) { + warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' }); + } + + if (presencePenalty != null) { + warnings.push({ type: 'unsupported', feature: 'presencePenalty' }); + } + + if (seed != null) { + warnings.push({ type: 'unsupported', feature: 'seed' }); + } + + if (temperature != null && temperature > 1) { + warnings.push({ + type: 'unsupported', + feature: 'temperature', + details: `${temperature} exceeds anthropic maximum of 1.0. clamped to 1.0`, + }); + temperature = 1; + } else if (temperature != null && temperature < 0) { + warnings.push({ + type: 'unsupported', + feature: 'temperature', + details: `${temperature} is below anthropic minimum of 0. clamped to 0`, + }); + temperature = 0; + } + + if (responseFormat?.type === 'json') { + if (responseFormat.schema == null) { + warnings.push({ + type: 'unsupported', + feature: 'responseFormat', + details: + 'JSON response format requires a schema. ' + + 'The response format is ignored.', + }); + } + } + + const providerOptionsName = this.providerOptionsName; + + // Parse provider options from both canonical 'anthropic' key and custom key + const canonicalOptions = await parseProviderOptions({ + provider: 'anthropic', + providerOptions, + schema: anthropicLanguageModelOptions, + }); + + const customProviderOptions = + providerOptionsName !== 'anthropic' + ? await parseProviderOptions({ + provider: providerOptionsName, + providerOptions, + schema: anthropicLanguageModelOptions, + }) + : null; + + // Track if custom key was explicitly used + const usedCustomProviderKey = customProviderOptions != null; + + // Merge options + const anthropicOptions = Object.assign( + {}, + canonicalOptions ?? {}, + customProviderOptions ?? {}, + ); + + const { + maxOutputTokens: maxOutputTokensForModel, + supportsStructuredOutput: modelSupportsStructuredOutput, + isKnownModel, + } = getModelCapabilities(this.modelId); + + const supportsStructuredOutput = + (this.config.supportsNativeStructuredOutput ?? true) && + modelSupportsStructuredOutput; + + const supportsStrictTools = + (this.config.supportsStrictTools ?? true) && + modelSupportsStructuredOutput; + + const structureOutputMode = + anthropicOptions?.structuredOutputMode ?? 'auto'; + const useStructuredOutput = + structureOutputMode === 'outputFormat' || + (structureOutputMode === 'auto' && supportsStructuredOutput); + + const jsonResponseTool: LanguageModelV3FunctionTool | undefined = + responseFormat?.type === 'json' && + responseFormat.schema != null && + !useStructuredOutput + ? { + type: 'function', + name: 'json', + description: 'Respond with a JSON object.', + inputSchema: responseFormat.schema, + } + : undefined; + + const contextManagement = anthropicOptions?.contextManagement; + + // Create a shared cache control validator to track breakpoints across tools and messages + const cacheControlValidator = new CacheControlValidator(); + + const toolNameMapping = createToolNameMapping({ + tools, + providerToolNames: { + 'anthropic.code_execution_20250522': 'code_execution', + 'anthropic.code_execution_20250825': 'code_execution', + 'anthropic.code_execution_20260120': 'code_execution', + 'anthropic.computer_20241022': 'computer', + 'anthropic.computer_20250124': 'computer', + 'anthropic.text_editor_20241022': 'str_replace_editor', + 'anthropic.text_editor_20250124': 'str_replace_editor', + 'anthropic.text_editor_20250429': 'str_replace_based_edit_tool', + 'anthropic.text_editor_20250728': 'str_replace_based_edit_tool', + 'anthropic.bash_20241022': 'bash', + 'anthropic.bash_20250124': 'bash', + 'anthropic.memory_20250818': 'memory', + 'anthropic.web_search_20250305': 'web_search', + 'anthropic.web_search_20260209': 'web_search', + 'anthropic.web_fetch_20250910': 'web_fetch', + 'anthropic.web_fetch_20260209': 'web_fetch', + 'anthropic.tool_search_regex_20251119': 'tool_search_tool_regex', + 'anthropic.tool_search_bm25_20251119': 'tool_search_tool_bm25', + }, + }); + + const { prompt: messagesPrompt, betas } = + await convertToAnthropicMessagesPrompt({ + prompt, + sendReasoning: anthropicOptions?.sendReasoning ?? true, + warnings, + cacheControlValidator, + toolNameMapping, + }); + + const thinkingType = anthropicOptions?.thinking?.type; + const isThinking = + thinkingType === 'enabled' || thinkingType === 'adaptive'; + let thinkingBudget = + thinkingType === 'enabled' + ? anthropicOptions?.thinking?.budgetTokens + : undefined; + + const maxTokens = maxOutputTokens ?? maxOutputTokensForModel; + + const baseArgs = { + // model id: + model: this.modelId, + + // standardized settings: + max_tokens: maxTokens, + temperature, + top_k: topK, + top_p: topP, + stop_sequences: stopSequences, + + // provider specific settings: + ...(isThinking && { + thinking: { + type: thinkingType, + ...(thinkingBudget != null && { budget_tokens: thinkingBudget }), + }, + }), + ...((anthropicOptions?.effort || + (useStructuredOutput && + responseFormat?.type === 'json' && + responseFormat.schema != null)) && { + output_config: { + ...(anthropicOptions?.effort && { + effort: anthropicOptions.effort, + }), + ...(useStructuredOutput && + responseFormat?.type === 'json' && + responseFormat.schema != null && { + format: { + type: 'json_schema', + schema: responseFormat.schema, + }, + }), + }, + }), + ...(anthropicOptions?.speed && { + speed: anthropicOptions.speed, + }), + ...(anthropicOptions?.cacheControl && { + cache_control: anthropicOptions.cacheControl, + }), + ...(anthropicOptions?.metadata?.userId != null && { + metadata: { user_id: anthropicOptions.metadata.userId }, + }), + + // mcp servers: + ...(anthropicOptions?.mcpServers && + anthropicOptions.mcpServers.length > 0 && { + mcp_servers: anthropicOptions.mcpServers.map(server => ({ + type: server.type, + name: server.name, + url: server.url, + authorization_token: server.authorizationToken, + tool_configuration: server.toolConfiguration + ? { + allowed_tools: server.toolConfiguration.allowedTools, + enabled: server.toolConfiguration.enabled, + } + : undefined, + })), + }), + + // container: For programmatic tool calling (just an ID string) or agent skills (object with id and skills) + ...(anthropicOptions?.container && { + container: + anthropicOptions.container.skills && + anthropicOptions.container.skills.length > 0 + ? // Object format when skills are provided (agent skills feature) + ({ + id: anthropicOptions.container.id, + skills: anthropicOptions.container.skills.map(skill => ({ + type: skill.type, + skill_id: skill.skillId, + version: skill.version, + })), + } satisfies AnthropicContainer) + : // String format for container ID only (programmatic tool calling) + anthropicOptions.container.id, + }), + + // prompt: + system: messagesPrompt.system, + messages: messagesPrompt.messages, + + ...(contextManagement && { + context_management: { + edits: contextManagement.edits + .map(edit => { + const strategy = edit.type; + switch (strategy) { + case 'clear_tool_uses_20250919': + return { + type: edit.type, + ...(edit.trigger !== undefined && { + trigger: edit.trigger, + }), + ...(edit.keep !== undefined && { keep: edit.keep }), + ...(edit.clearAtLeast !== undefined && { + clear_at_least: edit.clearAtLeast, + }), + ...(edit.clearToolInputs !== undefined && { + clear_tool_inputs: edit.clearToolInputs, + }), + ...(edit.excludeTools !== undefined && { + exclude_tools: edit.excludeTools, + }), + }; + + case 'clear_thinking_20251015': + return { + type: edit.type, + ...(edit.keep !== undefined && { keep: edit.keep }), + }; + + case 'compact_20260112': + return { + type: edit.type, + ...(edit.trigger !== undefined && { + trigger: edit.trigger, + }), + ...(edit.pauseAfterCompaction !== undefined && { + pause_after_compaction: edit.pauseAfterCompaction, + }), + ...(edit.instructions !== undefined && { + instructions: edit.instructions, + }), + }; + + default: + warnings.push({ + type: 'other', + message: `Unknown context management strategy: ${strategy}`, + }); + return undefined; + } + }) + .filter(edit => edit !== undefined), + }, + }), + }; + + if (isThinking) { + if (thinkingType === 'enabled' && thinkingBudget == null) { + warnings.push({ + type: 'compatibility', + feature: 'extended thinking', + details: + 'thinking budget is required when thinking is enabled. using default budget of 1024 tokens.', + }); + + baseArgs.thinking = { + type: 'enabled', + budget_tokens: 1024, + }; + + thinkingBudget = 1024; + } + + if (baseArgs.temperature != null) { + baseArgs.temperature = undefined; + warnings.push({ + type: 'unsupported', + feature: 'temperature', + details: 'temperature is not supported when thinking is enabled', + }); + } + + if (topK != null) { + baseArgs.top_k = undefined; + warnings.push({ + type: 'unsupported', + feature: 'topK', + details: 'topK is not supported when thinking is enabled', + }); + } + + if (topP != null) { + baseArgs.top_p = undefined; + warnings.push({ + type: 'unsupported', + feature: 'topP', + details: 'topP is not supported when thinking is enabled', + }); + } + + // adjust max tokens to account for thinking: + baseArgs.max_tokens = maxTokens + (thinkingBudget ?? 0); + } else { + // Only check temperature/topP mutual exclusivity when thinking is not enabled + if (topP != null && temperature != null) { + warnings.push({ + type: 'unsupported', + feature: 'topP', + details: `topP is not supported when temperature is set. topP is ignored.`, + }); + baseArgs.top_p = undefined; + } + } + + // limit to max output tokens for known models to enable model switching without breaking it: + if (isKnownModel && baseArgs.max_tokens > maxOutputTokensForModel) { + // only warn if max output tokens is provided as input: + if (maxOutputTokens != null) { + warnings.push({ + type: 'unsupported', + feature: 'maxOutputTokens', + details: + `${baseArgs.max_tokens} (maxOutputTokens + thinkingBudget) is greater than ${this.modelId} ${maxOutputTokensForModel} max output tokens. ` + + `The max output tokens have been limited to ${maxOutputTokensForModel}.`, + }); + } + baseArgs.max_tokens = maxOutputTokensForModel; + } + + if ( + anthropicOptions?.mcpServers && + anthropicOptions.mcpServers.length > 0 + ) { + betas.add('mcp-client-2025-04-04'); + } + + if (contextManagement) { + betas.add('context-management-2025-06-27'); + + // Add compaction beta if compact edit is present + if (contextManagement.edits.some(e => e.type === 'compact_20260112')) { + betas.add('compact-2026-01-12'); + } + } + + if ( + anthropicOptions?.container && + anthropicOptions.container.skills && + anthropicOptions.container.skills.length > 0 + ) { + betas.add('code-execution-2025-08-25'); + betas.add('skills-2025-10-02'); + betas.add('files-api-2025-04-14'); + + if ( + !tools?.some( + tool => + tool.type === 'provider' && + (tool.id === 'anthropic.code_execution_20250825' || + tool.id === 'anthropic.code_execution_20260120'), + ) + ) { + warnings.push({ + type: 'other', + message: 'code execution tool is required when using skills', + }); + } + } + + if (anthropicOptions?.effort) { + betas.add('effort-2025-11-24'); + } + + if (anthropicOptions?.speed === 'fast') { + betas.add('fast-mode-2026-02-01'); + } + + // only when streaming: enable fine-grained tool streaming + if (stream && (anthropicOptions?.toolStreaming ?? true)) { + betas.add('fine-grained-tool-streaming-2025-05-14'); + } + + const { + tools: anthropicTools, + toolChoice: anthropicToolChoice, + toolWarnings, + betas: toolsBetas, + } = await prepareTools( + jsonResponseTool != null + ? { + tools: [...(tools ?? []), jsonResponseTool], + toolChoice: { type: 'required' }, + disableParallelToolUse: true, + cacheControlValidator, + supportsStructuredOutput: false, + supportsStrictTools, + } + : { + tools: tools ?? [], + toolChoice, + disableParallelToolUse: anthropicOptions?.disableParallelToolUse, + cacheControlValidator, + supportsStructuredOutput, + supportsStrictTools, + }, + ); + + // Extract cache control warnings once at the end + const cacheWarnings = cacheControlValidator.getWarnings(); + + return { + args: { + ...baseArgs, + tools: anthropicTools, + tool_choice: anthropicToolChoice, + stream: stream === true ? true : undefined, // do not send when not streaming + }, + warnings: [...warnings, ...toolWarnings, ...cacheWarnings], + betas: new Set([ + ...betas, + ...toolsBetas, + ...userSuppliedBetas, + ...(anthropicOptions?.anthropicBeta ?? []), + ]), + usesJsonResponseTool: jsonResponseTool != null, + toolNameMapping, + providerOptionsName, + usedCustomProviderKey, + }; + } + + private async getHeaders({ + betas, + headers, + }: { + betas: Set; + headers: Record | undefined; + }) { + return combineHeaders( + await resolve(this.config.headers), + headers, + betas.size > 0 ? { 'anthropic-beta': Array.from(betas).join(',') } : {}, + ); + } + + private async getBetasFromHeaders( + requestHeaders: Record | undefined, + ) { + const configHeaders = await resolve(this.config.headers); + + const configBetaHeader = configHeaders['anthropic-beta'] ?? ''; + const requestBetaHeader = requestHeaders?.['anthropic-beta'] ?? ''; + + return new Set( + [ + ...configBetaHeader.toLowerCase().split(','), + ...requestBetaHeader.toLowerCase().split(','), + ] + .map(beta => beta.trim()) + .filter(beta => beta !== ''), + ); + } + + private buildRequestUrl(isStreaming: boolean): string { + return ( + this.config.buildRequestUrl?.(this.config.baseURL, isStreaming) ?? + `${this.config.baseURL}/messages` + ); + } + + private transformRequestBody( + args: Record, + betas: Set, + ): Record { + return this.config.transformRequestBody?.(args, betas) ?? args; + } + + private extractCitationDocuments(prompt: LanguageModelV3Prompt): Array<{ + title: string; + filename?: string; + mediaType: string; + }> { + const isCitationPart = (part: { + type: string; + mediaType?: string; + providerOptions?: { anthropic?: { citations?: { enabled?: boolean } } }; + }) => { + if (part.type !== 'file') { + return false; + } + + if ( + part.mediaType !== 'application/pdf' && + part.mediaType !== 'text/plain' + ) { + return false; + } + + const anthropic = part.providerOptions?.anthropic; + const citationsConfig = anthropic?.citations as + | { enabled?: boolean } + | undefined; + return citationsConfig?.enabled ?? false; + }; + + return prompt + .filter(message => message.role === 'user') + .flatMap(message => message.content) + .filter(isCitationPart) + .map(part => { + // TypeScript knows this is a file part due to our filter + const filePart = part as Extract; + return { + title: filePart.filename ?? 'Untitled Document', + filename: filePart.filename, + mediaType: filePart.mediaType, + }; + }); + } + + async doGenerate( + options: LanguageModelV3CallOptions, + ): Promise { + const { + args, + warnings, + betas, + usesJsonResponseTool, + toolNameMapping, + providerOptionsName, + usedCustomProviderKey, + } = await this.getArgs({ + ...options, + stream: false, + userSuppliedBetas: await this.getBetasFromHeaders(options.headers), + }); + + // Extract citation documents for response processing + const citationDocuments = [ + ...this.extractCitationDocuments(options.prompt), + ]; + + const markCodeExecutionDynamic = hasWebTool20260209WithoutCodeExecution( + args.tools, + ); + + const { + responseHeaders, + value: response, + rawValue: rawResponse, + } = await postJsonToApi({ + url: this.buildRequestUrl(false), + headers: await this.getHeaders({ betas, headers: options.headers }), + body: this.transformRequestBody(args, betas), + failedResponseHandler: anthropicFailedResponseHandler, + successfulResponseHandler: createJsonResponseHandler( + anthropicMessagesResponseSchema, + ), + abortSignal: options.abortSignal, + fetch: this.config.fetch, + }); + + const content: Array = []; + const mcpToolCalls: Record = {}; + const serverToolCalls: Record = {}; // tool_use_id -> provider tool name + let isJsonResponseFromTool = false; + + // map response content to content array + for (const part of response.content) { + switch (part.type) { + case 'text': { + if (!usesJsonResponseTool) { + content.push({ type: 'text', text: part.text }); + + // Process citations if present + if (part.citations) { + for (const citation of part.citations) { + const source = createCitationSource( + citation, + citationDocuments, + this.generateId, + ); + + if (source) { + content.push(source); + } + } + } + } + break; + } + case 'thinking': { + content.push({ + type: 'reasoning', + text: part.thinking, + providerMetadata: { + anthropic: { + signature: part.signature, + } satisfies AnthropicReasoningMetadata, + }, + }); + break; + } + case 'redacted_thinking': { + content.push({ + type: 'reasoning', + text: '', + providerMetadata: { + anthropic: { + redactedData: part.data, + } satisfies AnthropicReasoningMetadata, + }, + }); + break; + } + case 'compaction': { + content.push({ + type: 'text', + text: part.content, + providerMetadata: { + anthropic: { + type: 'compaction', + }, + }, + }); + break; + } + case 'tool_use': { + const isJsonResponseTool = + usesJsonResponseTool && part.name === 'json'; + + if (isJsonResponseTool) { + isJsonResponseFromTool = true; + + // when a json response tool is used, the tool call becomes the text: + content.push({ + type: 'text', + text: JSON.stringify(part.input), + }); + } else { + const caller = part.caller; + const callerInfo = caller + ? { + type: caller.type, + toolId: 'tool_id' in caller ? caller.tool_id : undefined, + } + : undefined; + + content.push({ + type: 'tool-call', + toolCallId: part.id, + toolName: part.name, + input: JSON.stringify(part.input), + ...(callerInfo && { + providerMetadata: { + anthropic: { + caller: callerInfo, + }, + }, + }), + }); + } + + break; + } + case 'server_tool_use': { + // code execution 20250825 needs mapping: + if ( + part.name === 'text_editor_code_execution' || + part.name === 'bash_code_execution' + ) { + content.push({ + type: 'tool-call', + toolCallId: part.id, + toolName: toolNameMapping.toCustomToolName('code_execution'), + input: JSON.stringify({ type: part.name, ...part.input }), + providerExecuted: true, + }); + } else if ( + part.name === 'web_search' || + part.name === 'code_execution' || + part.name === 'web_fetch' + ) { + // For code_execution, inject 'programmatic-tool-call' type when input has { code } format + const inputToSerialize = + part.name === 'code_execution' && + part.input != null && + typeof part.input === 'object' && + 'code' in part.input && + !('type' in part.input) + ? { type: 'programmatic-tool-call', ...part.input } + : part.input; + + content.push({ + type: 'tool-call', + toolCallId: part.id, + toolName: toolNameMapping.toCustomToolName(part.name), + input: JSON.stringify(inputToSerialize), + providerExecuted: true, + // We want this 'code_execution' tool call to be allowed even if the tool is not explicitly provided. + // Since the validation generally bypasses dynamic tools, we mark this specific tool as dynamic. + ...(markCodeExecutionDynamic && part.name === 'code_execution' + ? { dynamic: true } + : {}), + }); + } else if ( + part.name === 'tool_search_tool_regex' || + part.name === 'tool_search_tool_bm25' + ) { + serverToolCalls[part.id] = part.name; + content.push({ + type: 'tool-call', + toolCallId: part.id, + toolName: toolNameMapping.toCustomToolName(part.name), + input: JSON.stringify(part.input), + providerExecuted: true, + }); + } + + break; + } + case 'mcp_tool_use': { + mcpToolCalls[part.id] = { + type: 'tool-call', + toolCallId: part.id, + toolName: part.name, + input: JSON.stringify(part.input), + providerExecuted: true, + dynamic: true, + providerMetadata: { + anthropic: { + type: 'mcp-tool-use', + serverName: part.server_name, + }, + }, + }; + content.push(mcpToolCalls[part.id]); + break; + } + case 'mcp_tool_result': { + content.push({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: mcpToolCalls[part.tool_use_id].toolName, + isError: part.is_error, + result: part.content, + dynamic: true, + providerMetadata: mcpToolCalls[part.tool_use_id].providerMetadata, + }); + break; + } + case 'web_fetch_tool_result': { + if (part.content.type === 'web_fetch_result') { + citationDocuments.push({ + title: part.content.content.title ?? part.content.url, + mediaType: part.content.content.source.media_type, + }); + content.push({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: toolNameMapping.toCustomToolName('web_fetch'), + result: { + type: 'web_fetch_result', + url: part.content.url, + retrievedAt: part.content.retrieved_at, + content: { + type: part.content.content.type, + title: part.content.content.title, + citations: part.content.content.citations, + source: { + type: part.content.content.source.type, + mediaType: part.content.content.source.media_type, + data: part.content.content.source.data, + }, + }, + }, + }); + } else if (part.content.type === 'web_fetch_tool_result_error') { + content.push({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: toolNameMapping.toCustomToolName('web_fetch'), + isError: true, + result: { + type: 'web_fetch_tool_result_error', + errorCode: part.content.error_code, + }, + }); + } + break; + } + case 'web_search_tool_result': { + if (Array.isArray(part.content)) { + content.push({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: toolNameMapping.toCustomToolName('web_search'), + result: part.content.map(result => ({ + url: result.url, + title: result.title, + pageAge: result.page_age ?? null, + encryptedContent: result.encrypted_content, + type: result.type, + })), + }); + + for (const result of part.content) { + content.push({ + type: 'source', + sourceType: 'url', + id: this.generateId(), + url: result.url, + title: result.title, + providerMetadata: { + anthropic: { + pageAge: result.page_age ?? null, + }, + }, + }); + } + } else { + content.push({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: toolNameMapping.toCustomToolName('web_search'), + isError: true, + result: { + type: 'web_search_tool_result_error', + errorCode: part.content.error_code, + }, + }); + } + break; + } + + // code execution 20250522: + case 'code_execution_tool_result': { + if (part.content.type === 'code_execution_result') { + content.push({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: toolNameMapping.toCustomToolName('code_execution'), + result: { + type: part.content.type, + stdout: part.content.stdout, + stderr: part.content.stderr, + return_code: part.content.return_code, + content: part.content.content ?? [], + }, + }); + } else if (part.content.type === 'encrypted_code_execution_result') { + content.push({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: toolNameMapping.toCustomToolName('code_execution'), + result: { + type: part.content.type, + encrypted_stdout: part.content.encrypted_stdout, + stderr: part.content.stderr, + return_code: part.content.return_code, + content: part.content.content ?? [], + }, + }); + } else if (part.content.type === 'code_execution_tool_result_error') { + content.push({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: toolNameMapping.toCustomToolName('code_execution'), + isError: true, + result: { + type: 'code_execution_tool_result_error', + errorCode: part.content.error_code, + }, + }); + } + break; + } + + // code execution 20250825: + case 'bash_code_execution_tool_result': + case 'text_editor_code_execution_tool_result': { + content.push({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: toolNameMapping.toCustomToolName('code_execution'), + result: part.content, + }); + break; + } + + // tool search tool results: + case 'tool_search_tool_result': { + let providerToolName = serverToolCalls[part.tool_use_id]; + + if (providerToolName == null) { + const bm25CustomName = toolNameMapping.toCustomToolName( + 'tool_search_tool_bm25', + ); + const regexCustomName = toolNameMapping.toCustomToolName( + 'tool_search_tool_regex', + ); + + if (bm25CustomName !== 'tool_search_tool_bm25') { + providerToolName = 'tool_search_tool_bm25'; + } else if (regexCustomName !== 'tool_search_tool_regex') { + providerToolName = 'tool_search_tool_regex'; + } else { + providerToolName = 'tool_search_tool_regex'; + } + } + + if (part.content.type === 'tool_search_tool_search_result') { + content.push({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: toolNameMapping.toCustomToolName(providerToolName), + result: part.content.tool_references.map(ref => ({ + type: ref.type, + toolName: ref.tool_name, + })), + }); + } else { + content.push({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: toolNameMapping.toCustomToolName(providerToolName), + isError: true, + result: { + type: 'tool_search_tool_result_error', + errorCode: part.content.error_code, + }, + }); + } + break; + } + } + } + + return { + content, + finishReason: { + unified: mapAnthropicStopReason({ + finishReason: response.stop_reason, + isJsonResponseFromTool, + }), + raw: response.stop_reason ?? undefined, + }, + usage: convertAnthropicMessagesUsage({ usage: response.usage }), + request: { body: args }, + response: { + id: response.id ?? undefined, + modelId: response.model ?? undefined, + headers: responseHeaders, + body: rawResponse, + }, + warnings, + providerMetadata: (() => { + const anthropicMetadata = { + usage: response.usage as JSONObject, + cacheCreationInputTokens: + response.usage.cache_creation_input_tokens ?? null, + stopSequence: response.stop_sequence ?? null, + + iterations: response.usage.iterations + ? response.usage.iterations.map(iter => ({ + type: iter.type, + inputTokens: iter.input_tokens, + outputTokens: iter.output_tokens, + })) + : null, + container: response.container + ? { + expiresAt: response.container.expires_at, + id: response.container.id, + skills: + response.container.skills?.map(skill => ({ + type: skill.type, + skillId: skill.skill_id, + version: skill.version, + })) ?? null, + } + : null, + contextManagement: + mapAnthropicResponseContextManagement( + response.context_management, + ) ?? null, + } satisfies AnthropicMessageMetadata; + + const providerMetadata: SharedV3ProviderMetadata = { + anthropic: anthropicMetadata, + }; + + if (usedCustomProviderKey && providerOptionsName !== 'anthropic') { + providerMetadata[providerOptionsName] = anthropicMetadata; + } + + return providerMetadata; + })(), + }; + } + + async doStream( + options: LanguageModelV3CallOptions, + ): Promise { + const { + args: body, + warnings, + betas, + usesJsonResponseTool, + toolNameMapping, + providerOptionsName, + usedCustomProviderKey, + } = await this.getArgs({ + ...options, + stream: true, + userSuppliedBetas: await this.getBetasFromHeaders(options.headers), + }); + + // Extract citation documents for response processing + const citationDocuments = [ + ...this.extractCitationDocuments(options.prompt), + ]; + + const markCodeExecutionDynamic = hasWebTool20260209WithoutCodeExecution( + body.tools, + ); + + const url = this.buildRequestUrl(true); + const { responseHeaders, value: response } = await postJsonToApi({ + url, + headers: await this.getHeaders({ betas, headers: options.headers }), + body: this.transformRequestBody(body, betas), + failedResponseHandler: anthropicFailedResponseHandler, + successfulResponseHandler: createEventSourceResponseHandler( + anthropicMessagesChunkSchema, + ), + abortSignal: options.abortSignal, + fetch: this.config.fetch, + }); + + let finishReason: LanguageModelV3FinishReason = { + unified: 'other', + raw: undefined, + }; + const usage: AnthropicMessagesUsage = { + input_tokens: 0, + output_tokens: 0, + cache_creation_input_tokens: 0, + cache_read_input_tokens: 0, + iterations: null, + }; + + const contentBlocks: Record< + number, + | { + type: 'tool-call'; + toolCallId: string; + toolName: string; + input: string; + providerExecuted?: boolean; + firstDelta: boolean; + providerToolName?: string; + caller?: { + type: + | 'code_execution_20250825' + | 'code_execution_20260120' + | 'direct'; + toolId?: string; + }; + } + | { type: 'text' | 'reasoning' } + > = {}; + const mcpToolCalls: Record = {}; + const serverToolCalls: Record = {}; // tool_use_id -> provider tool name + + let contextManagement: + | AnthropicMessageMetadata['contextManagement'] + | null = null; + let rawUsage: JSONObject | undefined = undefined; + let cacheCreationInputTokens: number | null = null; + let stopSequence: string | null = null; + let container: AnthropicMessageMetadata['container'] | null = null; + let isJsonResponseFromTool = false; + + let blockType: + | 'text' + | 'thinking' + | 'tool_use' + | 'redacted_thinking' + | 'server_tool_use' + | 'web_fetch_tool_result' + | 'web_search_tool_result' + | 'code_execution_tool_result' + | 'text_editor_code_execution_tool_result' + | 'bash_code_execution_tool_result' + | 'tool_search_tool_result' + | 'mcp_tool_use' + | 'mcp_tool_result' + | 'compaction' + | undefined = undefined; + + const generateId = this.generateId; + + const transformedStream = response.pipeThrough( + new TransformStream< + ParseResult>, + LanguageModelV3StreamPart + >({ + start(controller) { + controller.enqueue({ type: 'stream-start', warnings }); + }, + + transform(chunk, controller) { + if (options.includeRawChunks) { + controller.enqueue({ type: 'raw', rawValue: chunk.rawValue }); + } + + if (!chunk.success) { + controller.enqueue({ type: 'error', error: chunk.error }); + return; + } + + const value = chunk.value; + + switch (value.type) { + case 'ping': { + return; // ignored + } + + case 'content_block_start': { + const part = value.content_block; + const contentBlockType = part.type; + blockType = contentBlockType; + + switch (contentBlockType) { + case 'text': { + // when a json response tool is used, the tool call is returned as text, + // so we ignore the text content: + if (usesJsonResponseTool) { + return; + } + + contentBlocks[value.index] = { type: 'text' }; + controller.enqueue({ + type: 'text-start', + id: String(value.index), + }); + return; + } + + case 'thinking': { + contentBlocks[value.index] = { type: 'reasoning' }; + controller.enqueue({ + type: 'reasoning-start', + id: String(value.index), + }); + return; + } + + case 'redacted_thinking': { + contentBlocks[value.index] = { type: 'reasoning' }; + controller.enqueue({ + type: 'reasoning-start', + id: String(value.index), + providerMetadata: { + anthropic: { + redactedData: part.data, + } satisfies AnthropicReasoningMetadata, + }, + }); + return; + } + + case 'compaction': { + contentBlocks[value.index] = { type: 'text' }; + controller.enqueue({ + type: 'text-start', + id: String(value.index), + providerMetadata: { + anthropic: { + type: 'compaction', + }, + }, + }); + return; + } + + case 'tool_use': { + const isJsonResponseTool = + usesJsonResponseTool && part.name === 'json'; + + if (isJsonResponseTool) { + isJsonResponseFromTool = true; + + contentBlocks[value.index] = { type: 'text' }; + + controller.enqueue({ + type: 'text-start', + id: String(value.index), + }); + } else { + // Extract caller info for type-safe access + const caller = part.caller; + const callerInfo = caller + ? { + type: caller.type, + toolId: + 'tool_id' in caller ? caller.tool_id : undefined, + } + : undefined; + + // Programmatic tool calling: for deferred tool calls from code_execution, + // input may be present directly in content_block_start. + // Only use if non-empty (empty {} means input comes via deltas) + const hasNonEmptyInput = + part.input && Object.keys(part.input).length > 0; + const initialInput = hasNonEmptyInput + ? JSON.stringify(part.input) + : ''; + + contentBlocks[value.index] = { + type: 'tool-call', + toolCallId: part.id, + toolName: part.name, + input: initialInput, + firstDelta: initialInput.length === 0, + ...(callerInfo && { caller: callerInfo }), + }; + + controller.enqueue({ + type: 'tool-input-start', + id: part.id, + toolName: part.name, + }); + } + return; + } + + case 'server_tool_use': { + if ( + [ + 'web_fetch', + 'web_search', + // code execution 20250825: + 'code_execution', + // code execution 20250825 text editor: + 'text_editor_code_execution', + // code execution 20250825 bash: + 'bash_code_execution', + ].includes(part.name) + ) { + // map tool names for the code execution 20250825 tool: + const providerToolName = + part.name === 'text_editor_code_execution' || + part.name === 'bash_code_execution' + ? 'code_execution' + : part.name; + + const customToolName = + toolNameMapping.toCustomToolName(providerToolName); + + // Tools like 'web_fetch_20260209' provide input data here. + // Other tools like 'code_execution_20260120' provide input data via deltas. + // So we only use this if it's non-empty to avoid conflicts. + const finalInput = + part.input != null && + typeof part.input === 'object' && + Object.keys(part.input).length > 0 + ? JSON.stringify(part.input) + : ''; + + contentBlocks[value.index] = { + type: 'tool-call', + toolCallId: part.id, + toolName: customToolName, + input: finalInput, + providerExecuted: true, + ...(markCodeExecutionDynamic && + providerToolName === 'code_execution' + ? { dynamic: true } + : {}), + firstDelta: true, + providerToolName: part.name, + }; + + controller.enqueue({ + type: 'tool-input-start', + id: part.id, + toolName: customToolName, + providerExecuted: true, + ...(markCodeExecutionDynamic && + providerToolName === 'code_execution' + ? { dynamic: true } + : {}), + }); + } else if ( + part.name === 'tool_search_tool_regex' || + part.name === 'tool_search_tool_bm25' + ) { + serverToolCalls[part.id] = part.name; + const customToolName = toolNameMapping.toCustomToolName( + part.name, + ); + + contentBlocks[value.index] = { + type: 'tool-call', + toolCallId: part.id, + toolName: customToolName, + input: '', + providerExecuted: true, + firstDelta: true, + providerToolName: part.name, + }; + + controller.enqueue({ + type: 'tool-input-start', + id: part.id, + toolName: customToolName, + providerExecuted: true, + }); + } + + return; + } + + case 'web_fetch_tool_result': { + if (part.content.type === 'web_fetch_result') { + citationDocuments.push({ + title: part.content.content.title ?? part.content.url, + mediaType: part.content.content.source.media_type, + }); + controller.enqueue({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: toolNameMapping.toCustomToolName('web_fetch'), + result: { + type: 'web_fetch_result', + url: part.content.url, + retrievedAt: part.content.retrieved_at, + content: { + type: part.content.content.type, + title: part.content.content.title, + citations: part.content.content.citations, + source: { + type: part.content.content.source.type, + mediaType: part.content.content.source.media_type, + data: part.content.content.source.data, + }, + }, + }, + }); + } else if ( + part.content.type === 'web_fetch_tool_result_error' + ) { + controller.enqueue({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: toolNameMapping.toCustomToolName('web_fetch'), + isError: true, + result: { + type: 'web_fetch_tool_result_error', + errorCode: part.content.error_code, + }, + }); + } + + return; + } + + case 'web_search_tool_result': { + if (Array.isArray(part.content)) { + controller.enqueue({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: toolNameMapping.toCustomToolName('web_search'), + result: part.content.map(result => ({ + url: result.url, + title: result.title, + pageAge: result.page_age ?? null, + encryptedContent: result.encrypted_content, + type: result.type, + })), + }); + + for (const result of part.content) { + controller.enqueue({ + type: 'source', + sourceType: 'url', + id: generateId(), + url: result.url, + title: result.title, + providerMetadata: { + anthropic: { + pageAge: result.page_age ?? null, + }, + }, + }); + } + } else { + controller.enqueue({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: toolNameMapping.toCustomToolName('web_search'), + isError: true, + result: { + type: 'web_search_tool_result_error', + errorCode: part.content.error_code, + }, + }); + } + return; + } + + // code execution 20250522: + case 'code_execution_tool_result': { + if (part.content.type === 'code_execution_result') { + controller.enqueue({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: + toolNameMapping.toCustomToolName('code_execution'), + result: { + type: part.content.type, + stdout: part.content.stdout, + stderr: part.content.stderr, + return_code: part.content.return_code, + content: part.content.content ?? [], + }, + }); + } else if ( + part.content.type === 'encrypted_code_execution_result' + ) { + controller.enqueue({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: + toolNameMapping.toCustomToolName('code_execution'), + result: { + type: part.content.type, + encrypted_stdout: part.content.encrypted_stdout, + stderr: part.content.stderr, + return_code: part.content.return_code, + content: part.content.content ?? [], + }, + }); + } else if ( + part.content.type === 'code_execution_tool_result_error' + ) { + controller.enqueue({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: + toolNameMapping.toCustomToolName('code_execution'), + isError: true, + result: { + type: 'code_execution_tool_result_error', + errorCode: part.content.error_code, + }, + }); + } + + return; + } + + // code execution 20250825: + case 'bash_code_execution_tool_result': + case 'text_editor_code_execution_tool_result': { + controller.enqueue({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: + toolNameMapping.toCustomToolName('code_execution'), + result: part.content, + }); + return; + } + + // tool search tool results: + case 'tool_search_tool_result': { + let providerToolName = serverToolCalls[part.tool_use_id]; + + if (providerToolName == null) { + const bm25CustomName = toolNameMapping.toCustomToolName( + 'tool_search_tool_bm25', + ); + const regexCustomName = toolNameMapping.toCustomToolName( + 'tool_search_tool_regex', + ); + + if (bm25CustomName !== 'tool_search_tool_bm25') { + providerToolName = 'tool_search_tool_bm25'; + } else if (regexCustomName !== 'tool_search_tool_regex') { + providerToolName = 'tool_search_tool_regex'; + } else { + providerToolName = 'tool_search_tool_regex'; + } + } + + if (part.content.type === 'tool_search_tool_search_result') { + controller.enqueue({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: + toolNameMapping.toCustomToolName(providerToolName), + result: part.content.tool_references.map(ref => ({ + type: ref.type, + toolName: ref.tool_name, + })), + }); + } else { + controller.enqueue({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: + toolNameMapping.toCustomToolName(providerToolName), + isError: true, + result: { + type: 'tool_search_tool_result_error', + errorCode: part.content.error_code, + }, + }); + } + return; + } + + case 'mcp_tool_use': { + mcpToolCalls[part.id] = { + type: 'tool-call', + toolCallId: part.id, + toolName: part.name, + input: JSON.stringify(part.input), + providerExecuted: true, + dynamic: true, + providerMetadata: { + anthropic: { + type: 'mcp-tool-use', + serverName: part.server_name, + }, + }, + }; + controller.enqueue(mcpToolCalls[part.id]); + return; + } + + case 'mcp_tool_result': { + controller.enqueue({ + type: 'tool-result', + toolCallId: part.tool_use_id, + toolName: mcpToolCalls[part.tool_use_id].toolName, + isError: part.is_error, + result: part.content, + dynamic: true, + providerMetadata: + mcpToolCalls[part.tool_use_id].providerMetadata, + }); + return; + } + + default: { + const _exhaustiveCheck: never = contentBlockType; + throw new Error( + `Unsupported content block type: ${_exhaustiveCheck}`, + ); + } + } + } + + case 'content_block_stop': { + // when finishing a tool call block, send the full tool call: + if (contentBlocks[value.index] != null) { + const contentBlock = contentBlocks[value.index]; + + switch (contentBlock.type) { + case 'text': { + controller.enqueue({ + type: 'text-end', + id: String(value.index), + }); + break; + } + + case 'reasoning': { + controller.enqueue({ + type: 'reasoning-end', + id: String(value.index), + }); + break; + } + + case 'tool-call': + // when a json response tool is used, the tool call is returned as text, + // so we ignore the tool call content: + const isJsonResponseTool = + usesJsonResponseTool && contentBlock.toolName === 'json'; + + if (!isJsonResponseTool) { + controller.enqueue({ + type: 'tool-input-end', + id: contentBlock.toolCallId, + }); + + // For code_execution, inject 'programmatic-tool-call' type + // when input has { code } format (programmatic tool calling) + let finalInput = + contentBlock.input === '' ? '{}' : contentBlock.input; + if (contentBlock.providerToolName === 'code_execution') { + try { + const parsed = JSON.parse(finalInput); + if ( + parsed != null && + typeof parsed === 'object' && + 'code' in parsed && + !('type' in parsed) + ) { + finalInput = JSON.stringify({ + type: 'programmatic-tool-call', + ...parsed, + }); + } + } catch { + // ignore parse errors, use original input + } + } + + controller.enqueue({ + type: 'tool-call', + toolCallId: contentBlock.toolCallId, + toolName: contentBlock.toolName, + input: finalInput, + providerExecuted: contentBlock.providerExecuted, + ...(markCodeExecutionDynamic && + contentBlock.providerToolName === 'code_execution' + ? { dynamic: true } + : {}), + ...(contentBlock.caller && { + providerMetadata: { + anthropic: { + caller: contentBlock.caller, + }, + }, + }), + }); + } + break; + } + + delete contentBlocks[value.index]; + } + + blockType = undefined; // reset block type + + return; + } + + case 'content_block_delta': { + const deltaType = value.delta.type; + + switch (deltaType) { + case 'text_delta': { + // when a json response tool is used, the tool call is returned as text, + // so we ignore the text content: + if (usesJsonResponseTool) { + return; // excluding the text-start will also exclude the text-end + } + + controller.enqueue({ + type: 'text-delta', + id: String(value.index), + delta: value.delta.text, + }); + + return; + } + + case 'thinking_delta': { + controller.enqueue({ + type: 'reasoning-delta', + id: String(value.index), + delta: value.delta.thinking, + }); + + return; + } + + case 'signature_delta': { + // signature are only supported on thinking blocks: + if (blockType === 'thinking') { + controller.enqueue({ + type: 'reasoning-delta', + id: String(value.index), + delta: '', + providerMetadata: { + anthropic: { + signature: value.delta.signature, + } satisfies AnthropicReasoningMetadata, + }, + }); + } + + return; + } + + case 'compaction_delta': { + if (value.delta.content != null) { + controller.enqueue({ + type: 'text-delta', + id: String(value.index), + delta: value.delta.content, + }); + } + + return; + } + + case 'input_json_delta': { + const contentBlock = contentBlocks[value.index]; + let delta = value.delta.partial_json; + + // skip empty deltas to enable replacing the first character + // in the code execution 20250825 tool. + if (delta.length === 0) { + return; + } + + if (isJsonResponseFromTool) { + if (contentBlock?.type !== 'text') { + return; // exclude reasoning + } + + controller.enqueue({ + type: 'text-delta', + id: String(value.index), + delta, + }); + } else { + if (contentBlock?.type !== 'tool-call') { + return; + } + + // for the code execution 20250825, we need to add + // the type to the delta and change the tool name. + if ( + contentBlock.firstDelta && + (contentBlock.providerToolName === + 'bash_code_execution' || + contentBlock.providerToolName === + 'text_editor_code_execution') + ) { + delta = `{"type": "${contentBlock.providerToolName}",${delta.substring(1)}`; + } + + controller.enqueue({ + type: 'tool-input-delta', + id: contentBlock.toolCallId, + delta, + }); + + contentBlock.input += delta; + contentBlock.firstDelta = false; + } + + return; + } + + case 'citations_delta': { + const citation = value.delta.citation; + const source = createCitationSource( + citation, + citationDocuments, + generateId, + ); + + if (source) { + controller.enqueue(source); + } + + return; + } + + default: { + const _exhaustiveCheck: never = deltaType; + throw new Error( + `Unsupported delta type: ${_exhaustiveCheck}`, + ); + } + } + } + + case 'message_start': { + usage.input_tokens = value.message.usage.input_tokens; + usage.cache_read_input_tokens = + value.message.usage.cache_read_input_tokens ?? 0; + usage.cache_creation_input_tokens = + value.message.usage.cache_creation_input_tokens ?? 0; + + rawUsage = { + ...(value.message.usage as JSONObject), + }; + + cacheCreationInputTokens = + value.message.usage.cache_creation_input_tokens ?? null; + + if (value.message.container != null) { + container = { + expiresAt: value.message.container.expires_at, + id: value.message.container.id, + skills: null, + }; + } + + if (value.message.stop_reason != null) { + finishReason = { + unified: mapAnthropicStopReason({ + finishReason: value.message.stop_reason, + isJsonResponseFromTool, + }), + raw: value.message.stop_reason, + }; + } + + controller.enqueue({ + type: 'response-metadata', + id: value.message.id ?? undefined, + modelId: value.message.model ?? undefined, + }); + + // Programmatic tool calling: process pre-populated content blocks + // (for deferred tool calls, content may be in message_start) + if (value.message.content != null) { + for ( + let contentIndex = 0; + contentIndex < value.message.content.length; + contentIndex++ + ) { + const part = value.message.content[contentIndex]; + if (part.type === 'tool_use') { + const caller = part.caller; + const callerInfo = caller + ? { + type: caller.type, + toolId: + 'tool_id' in caller ? caller.tool_id : undefined, + } + : undefined; + + controller.enqueue({ + type: 'tool-input-start', + id: part.id, + toolName: part.name, + }); + + const inputStr = JSON.stringify(part.input ?? {}); + controller.enqueue({ + type: 'tool-input-delta', + id: part.id, + delta: inputStr, + }); + + controller.enqueue({ + type: 'tool-input-end', + id: part.id, + }); + + controller.enqueue({ + type: 'tool-call', + toolCallId: part.id, + toolName: part.name, + input: inputStr, + ...(callerInfo && { + providerMetadata: { + anthropic: { + caller: callerInfo, + }, + }, + }), + }); + } + } + } + + return; + } + + case 'message_delta': { + if ( + value.usage.input_tokens != null && + usage.input_tokens !== value.usage.input_tokens + ) { + usage.input_tokens = value.usage.input_tokens; + } + usage.output_tokens = value.usage.output_tokens; + + if (value.usage.cache_read_input_tokens != null) { + usage.cache_read_input_tokens = + value.usage.cache_read_input_tokens; + } + if (value.usage.cache_creation_input_tokens != null) { + usage.cache_creation_input_tokens = + value.usage.cache_creation_input_tokens; + cacheCreationInputTokens = + value.usage.cache_creation_input_tokens; + } + if (value.usage.iterations != null) { + usage.iterations = value.usage.iterations; + } + + finishReason = { + unified: mapAnthropicStopReason({ + finishReason: value.delta.stop_reason, + isJsonResponseFromTool, + }), + raw: value.delta.stop_reason ?? undefined, + }; + + stopSequence = value.delta.stop_sequence ?? null; + container = + value.delta.container != null + ? { + expiresAt: value.delta.container.expires_at, + id: value.delta.container.id, + skills: + value.delta.container.skills?.map(skill => ({ + type: skill.type, + skillId: skill.skill_id, + version: skill.version, + })) ?? null, + } + : null; + + if (value.context_management) { + contextManagement = mapAnthropicResponseContextManagement( + value.context_management, + ); + } + + rawUsage = { + ...rawUsage, + ...(value.usage as JSONObject), + }; + + return; + } + + case 'message_stop': { + const anthropicMetadata = { + usage: (rawUsage as JSONObject) ?? null, + cacheCreationInputTokens, + stopSequence, + iterations: usage.iterations + ? usage.iterations.map(iter => ({ + type: iter.type, + inputTokens: iter.input_tokens, + outputTokens: iter.output_tokens, + })) + : null, + container, + contextManagement, + } satisfies AnthropicMessageMetadata; + + const providerMetadata: SharedV3ProviderMetadata = { + anthropic: anthropicMetadata, + }; + + if ( + usedCustomProviderKey && + providerOptionsName !== 'anthropic' + ) { + providerMetadata[providerOptionsName] = anthropicMetadata; + } + + controller.enqueue({ + type: 'finish', + finishReason, + usage: convertAnthropicMessagesUsage({ usage, rawUsage }), + providerMetadata, + }); + return; + } + + case 'error': { + controller.enqueue({ type: 'error', error: value.error }); + return; + } + + default: { + const _exhaustiveCheck: never = value; + throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`); + } + } + }, + }), + ); + + // The first chunk needs to be pulled immediately to check if it is an error + const [streamForFirstChunk, streamForConsumer] = transformedStream.tee(); + + const firstChunkReader = streamForFirstChunk.getReader(); + try { + await firstChunkReader.read(); // streamStart comes first, ignored + + let result = await firstChunkReader.read(); + + // when raw chunks are enabled, the first chunk is a raw chunk, so we need to read the next chunk + if (result.value?.type === 'raw') { + result = await firstChunkReader.read(); + } + + // The Anthropic API returns 200 responses when there are overloaded errors. + // We handle the case where the first chunk is an error here and transform + // it into an APICallError. + if (result.value?.type === 'error') { + const error = result.value.error as { message: string; type: string }; + + throw new APICallError({ + message: error.message, + url, + requestBodyValues: body, + statusCode: error.type === 'overloaded_error' ? 529 : 500, + responseHeaders, + responseBody: JSON.stringify(error), + isRetryable: error.type === 'overloaded_error', + }); + } + } finally { + firstChunkReader.cancel().catch(() => {}); + firstChunkReader.releaseLock(); + } + + return { + stream: streamForConsumer, + request: { body }, + response: { headers: responseHeaders }, + }; + } +} + +/** + * Returns the capabilities of a Claude model that are used for defaults and feature selection. + * + * @see https://docs.claude.com/en/docs/about-claude/models/overview#model-comparison-table + * @see https://platform.claude.com/docs/en/build-with-claude/structured-outputs + */ +function getModelCapabilities(modelId: string): { + maxOutputTokens: number; + supportsStructuredOutput: boolean; + isKnownModel: boolean; +} { + if ( + modelId.includes('claude-sonnet-4-6') || + modelId.includes('claude-opus-4-6') + ) { + return { + maxOutputTokens: 128000, + supportsStructuredOutput: true, + isKnownModel: true, + }; + } else if ( + modelId.includes('claude-sonnet-4-5') || + modelId.includes('claude-opus-4-5') || + modelId.includes('claude-haiku-4-5') + ) { + return { + maxOutputTokens: 64000, + supportsStructuredOutput: true, + isKnownModel: true, + }; + } else if (modelId.includes('claude-opus-4-1')) { + return { + maxOutputTokens: 32000, + supportsStructuredOutput: true, + isKnownModel: true, + }; + } else if (modelId.includes('claude-sonnet-4-')) { + return { + maxOutputTokens: 64000, + supportsStructuredOutput: false, + isKnownModel: true, + }; + } else if (modelId.includes('claude-opus-4-')) { + return { + maxOutputTokens: 32000, + supportsStructuredOutput: false, + isKnownModel: true, + }; + } else if (modelId.includes('claude-3-haiku')) { + return { + maxOutputTokens: 4096, + supportsStructuredOutput: false, + isKnownModel: true, + }; + } else { + return { + maxOutputTokens: 4096, + supportsStructuredOutput: false, + isKnownModel: false, + }; + } +} + +function hasWebTool20260209WithoutCodeExecution( + tools: AnthropicTool[] | undefined, +): boolean { + if (!tools) { + return false; + } + let hasWebTool20260209 = false; + let hasCodeExecutionTool = false; + for (const tool of tools) { + if ( + 'type' in tool && + (tool.type === 'web_fetch_20260209' || + tool.type === 'web_search_20260209') + ) { + hasWebTool20260209 = true; + continue; + } + if (tool.name === 'code_execution') { + hasCodeExecutionTool = true; + break; + } + } + return hasWebTool20260209 && !hasCodeExecutionTool; +} + +function mapAnthropicResponseContextManagement( + contextManagement: AnthropicResponseContextManagement | null | undefined, +): AnthropicMessageMetadata['contextManagement'] | null { + return contextManagement + ? { + appliedEdits: contextManagement.applied_edits + .map(edit => { + const strategy = edit.type; + + switch (strategy) { + case 'clear_tool_uses_20250919': + return { + type: edit.type, + clearedToolUses: edit.cleared_tool_uses, + clearedInputTokens: edit.cleared_input_tokens, + }; + + case 'clear_thinking_20251015': + return { + type: edit.type, + clearedThinkingTurns: edit.cleared_thinking_turns, + clearedInputTokens: edit.cleared_input_tokens, + }; + + case 'compact_20260112': + return { + type: edit.type, + }; + } + }) + .filter(edit => edit !== undefined), + } + : null; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-messages-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-messages-options.ts new file mode 100644 index 000000000..34e7530e0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-messages-options.ts @@ -0,0 +1,263 @@ +import { z } from 'zod/v4'; + +// https://docs.claude.com/en/docs/about-claude/models/overview +export type AnthropicMessagesModelId = + | 'claude-3-haiku-20240307' + | 'claude-haiku-4-5-20251001' + | 'claude-haiku-4-5' + | 'claude-opus-4-0' + | 'claude-opus-4-20250514' + | 'claude-opus-4-1-20250805' + | 'claude-opus-4-1' + | 'claude-opus-4-5' + | 'claude-opus-4-5-20251101' + | 'claude-sonnet-4-0' + | 'claude-sonnet-4-20250514' + | 'claude-sonnet-4-5-20250929' + | 'claude-sonnet-4-5' + | 'claude-sonnet-4-6' + | 'claude-opus-4-6' + | (string & {}); + +/** + * Anthropic file part provider options for document-specific features. + * These options apply to individual file parts (documents). + */ +export const anthropicFilePartProviderOptions = z.object({ + /** + * Citation configuration for this document. + * When enabled, this document will generate citations in the response. + */ + citations: z + .object({ + /** + * Enable citations for this document + */ + enabled: z.boolean(), + }) + .optional(), + + /** + * Custom title for the document. + * If not provided, the filename will be used. + */ + title: z.string().optional(), + + /** + * Context about the document that will be passed to the model + * but not used towards cited content. + * Useful for storing document metadata as text or stringified JSON. + */ + context: z.string().optional(), +}); + +export type AnthropicFilePartProviderOptions = z.infer< + typeof anthropicFilePartProviderOptions +>; + +export const anthropicLanguageModelOptions = z.object({ + /** + * Whether to send reasoning to the model. + * + * This allows you to deactivate reasoning inputs for models that do not support them. + */ + sendReasoning: z.boolean().optional(), + + /** + * Determines how structured outputs are generated. + * + * - `outputFormat`: Use the `output_config.format` parameter to specify the structured output format. + * - `jsonTool`: Use a special 'json' tool to specify the structured output format. + * - `auto`: Use 'outputFormat' when supported, otherwise use 'jsonTool' (default). + */ + structuredOutputMode: z.enum(['outputFormat', 'jsonTool', 'auto']).optional(), + + /** + * Configuration for enabling Claude's extended thinking. + * + * When enabled, responses include thinking content blocks showing Claude's thinking process before the final answer. + * Requires a minimum budget of 1,024 tokens and counts towards the `max_tokens` limit. + */ + thinking: z + .discriminatedUnion('type', [ + z.object({ + /** for Sonnet 4.6, Opus 4.6, and newer models */ + type: z.literal('adaptive'), + }), + z.object({ + /** for models before Opus 4.6, except Sonnet 4.6 still supports it */ + type: z.literal('enabled'), + budgetTokens: z.number().optional(), + }), + z.object({ + type: z.literal('disabled'), + }), + ]) + .optional(), + + /** + * Whether to disable parallel function calling during tool use. Default is false. + * When set to true, Claude will use at most one tool per response. + */ + disableParallelToolUse: z.boolean().optional(), + + /** + * Cache control settings for this message. + * See https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching + */ + cacheControl: z + .object({ + type: z.literal('ephemeral'), + ttl: z.union([z.literal('5m'), z.literal('1h')]).optional(), + }) + .optional(), + + /** + * Metadata to include with the request. + * + * See https://platform.claude.com/docs/en/api/messages/create for details. + */ + metadata: z + .object({ + /** + * An external identifier for the user associated with the request. + * + * Should be a UUID, hash value, or other opaque identifier. + * Must not contain PII (name, email, phone number, etc.). + */ + userId: z.string().optional(), + }) + .optional(), + + /** + * MCP servers to be utilized in this request. + */ + mcpServers: z + .array( + z.object({ + type: z.literal('url'), + name: z.string(), + url: z.string(), + authorizationToken: z.string().nullish(), + toolConfiguration: z + .object({ + enabled: z.boolean().nullish(), + allowedTools: z.array(z.string()).nullish(), + }) + .nullish(), + }), + ) + .optional(), + + /** + * Agent Skills configuration. Skills enable Claude to perform specialized tasks + * like document processing (PPTX, DOCX, PDF, XLSX) and data analysis. + * Requires code execution tool to be enabled. + */ + container: z + .object({ + id: z.string().optional(), + skills: z + .array( + z.object({ + type: z.union([z.literal('anthropic'), z.literal('custom')]), + skillId: z.string(), + version: z.string().optional(), + }), + ) + .optional(), + }) + .optional(), + + /** + * Whether to enable tool streaming (and structured output streaming). + * + * When set to false, the model will return all tool calls and results + * at once after a delay. + * + * @default true + */ + toolStreaming: z.boolean().optional(), + + /** + * @default 'high' + */ + effort: z.enum(['low', 'medium', 'high', 'max']).optional(), + + /** + * Enable fast mode for faster inference (2.5x faster output token speeds). + * Only supported with claude-opus-4-6. + */ + speed: z.enum(['fast', 'standard']).optional(), + + /** + * A set of beta features to enable. + * Allow a provider to receive the full `betas` set if it needs it. + */ + anthropicBeta: z.array(z.string()).optional(), + + contextManagement: z + .object({ + edits: z.array( + z.discriminatedUnion('type', [ + z.object({ + type: z.literal('clear_tool_uses_20250919'), + trigger: z + .discriminatedUnion('type', [ + z.object({ + type: z.literal('input_tokens'), + value: z.number(), + }), + z.object({ + type: z.literal('tool_uses'), + value: z.number(), + }), + ]) + .optional(), + keep: z + .object({ + type: z.literal('tool_uses'), + value: z.number(), + }) + .optional(), + clearAtLeast: z + .object({ + type: z.literal('input_tokens'), + value: z.number(), + }) + .optional(), + clearToolInputs: z.boolean().optional(), + excludeTools: z.array(z.string()).optional(), + }), + z.object({ + type: z.literal('clear_thinking_20251015'), + keep: z + .union([ + z.literal('all'), + z.object({ + type: z.literal('thinking_turns'), + value: z.number(), + }), + ]) + .optional(), + }), + z.object({ + type: z.literal('compact_20260112'), + trigger: z + .object({ + type: z.literal('input_tokens'), + value: z.number(), + }) + .optional(), + pauseAfterCompaction: z.boolean().optional(), + instructions: z.string().optional(), + }), + ]), + ), + }) + .optional(), +}); + +export type AnthropicLanguageModelOptions = z.infer< + typeof anthropicLanguageModelOptions +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-prepare-tools.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-prepare-tools.ts new file mode 100644 index 000000000..2e82aabdb --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-prepare-tools.ts @@ -0,0 +1,416 @@ +import { + LanguageModelV3CallOptions, + SharedV3Warning, + UnsupportedFunctionalityError, +} from '@ai-sdk/provider'; +import { AnthropicTool, AnthropicToolChoice } from './anthropic-messages-api'; +import { CacheControlValidator } from './get-cache-control'; +import { textEditor_20250728ArgsSchema } from './tool/text-editor_20250728'; +import { webSearch_20260209ArgsSchema } from './tool/web-search_20260209'; +import { webSearch_20250305ArgsSchema } from './tool/web-search_20250305'; +import { webFetch_20260209ArgsSchema } from './tool/web-fetch-20260209'; +import { webFetch_20250910ArgsSchema } from './tool/web-fetch-20250910'; +import { validateTypes } from '@ai-sdk/provider-utils'; + +export interface AnthropicToolOptions { + deferLoading?: boolean; + allowedCallers?: Array< + 'direct' | 'code_execution_20250825' | 'code_execution_20260120' + >; + eagerInputStreaming?: boolean; +} + +export async function prepareTools({ + tools, + toolChoice, + disableParallelToolUse, + cacheControlValidator, + supportsStructuredOutput, + supportsStrictTools, +}: { + tools: LanguageModelV3CallOptions['tools']; + toolChoice: LanguageModelV3CallOptions['toolChoice'] | undefined; + disableParallelToolUse?: boolean; + cacheControlValidator?: CacheControlValidator; + + /** + * Whether the model supports native structured output response format. + */ + supportsStructuredOutput: boolean; + + /** + * Whether the model supports strict mode on tool definitions. + */ + supportsStrictTools: boolean; +}): Promise<{ + tools: Array | undefined; + toolChoice: AnthropicToolChoice | undefined; + toolWarnings: SharedV3Warning[]; + betas: Set; +}> { + // when the tools array is empty, change it to undefined to prevent errors: + tools = tools?.length ? tools : undefined; + + const toolWarnings: SharedV3Warning[] = []; + const betas = new Set(); + const validator = cacheControlValidator || new CacheControlValidator(); + + if (tools == null) { + return { tools: undefined, toolChoice: undefined, toolWarnings, betas }; + } + + const anthropicTools: AnthropicTool[] = []; + + for (const tool of tools) { + switch (tool.type) { + case 'function': { + const cacheControl = validator.getCacheControl(tool.providerOptions, { + type: 'tool definition', + canCache: true, + }); + + // Read Anthropic-specific provider options + const anthropicOptions = tool.providerOptions?.anthropic as + | AnthropicToolOptions + | undefined; + // eager_input_streaming is only supported on custom (function) tools + const eagerInputStreaming = anthropicOptions?.eagerInputStreaming; + const deferLoading = anthropicOptions?.deferLoading; + const allowedCallers = anthropicOptions?.allowedCallers; + + if (!supportsStrictTools && tool.strict != null) { + toolWarnings.push({ + type: 'unsupported', + feature: 'strict', + details: `Tool '${tool.name}' has strict: ${tool.strict}, but strict mode is not supported by this provider. The strict property will be ignored.`, + }); + } + + anthropicTools.push({ + name: tool.name, + description: tool.description, + input_schema: tool.inputSchema, + cache_control: cacheControl, + ...(eagerInputStreaming ? { eager_input_streaming: true } : {}), + ...(supportsStrictTools === true && tool.strict != null + ? { strict: tool.strict } + : {}), + ...(deferLoading != null ? { defer_loading: deferLoading } : {}), + ...(allowedCallers != null + ? { allowed_callers: allowedCallers } + : {}), + ...(tool.inputExamples != null + ? { + input_examples: tool.inputExamples.map( + example => example.input, + ), + } + : {}), + }); + + if (supportsStructuredOutput === true) { + betas.add('structured-outputs-2025-11-13'); + } + + if (tool.inputExamples != null || allowedCallers != null) { + betas.add('advanced-tool-use-2025-11-20'); + } + + break; + } + + case 'provider': { + // Note: Provider-defined tools don't currently support providerOptions in the SDK, + // so cache_control cannot be set on them. The Anthropic API supports caching all tools, + // but the SDK would need to be updated to expose providerOptions on provider-defined tools. + switch (tool.id) { + case 'anthropic.code_execution_20250522': { + betas.add('code-execution-2025-05-22'); + anthropicTools.push({ + type: 'code_execution_20250522', + name: 'code_execution', + cache_control: undefined, + }); + break; + } + case 'anthropic.code_execution_20250825': { + betas.add('code-execution-2025-08-25'); + anthropicTools.push({ + type: 'code_execution_20250825', + name: 'code_execution', + }); + break; + } + case 'anthropic.code_execution_20260120': { + anthropicTools.push({ + type: 'code_execution_20260120', + name: 'code_execution', + }); + break; + } + case 'anthropic.computer_20250124': { + betas.add('computer-use-2025-01-24'); + anthropicTools.push({ + name: 'computer', + type: 'computer_20250124', + display_width_px: tool.args.displayWidthPx as number, + display_height_px: tool.args.displayHeightPx as number, + display_number: tool.args.displayNumber as number, + cache_control: undefined, + }); + break; + } + case 'anthropic.computer_20251124': { + betas.add('computer-use-2025-11-24'); + anthropicTools.push({ + name: 'computer', + type: 'computer_20251124', + display_width_px: tool.args.displayWidthPx as number, + display_height_px: tool.args.displayHeightPx as number, + display_number: tool.args.displayNumber as number, + enable_zoom: tool.args.enableZoom as boolean, + cache_control: undefined, + }); + break; + } + case 'anthropic.computer_20241022': { + betas.add('computer-use-2024-10-22'); + anthropicTools.push({ + name: 'computer', + type: 'computer_20241022', + display_width_px: tool.args.displayWidthPx as number, + display_height_px: tool.args.displayHeightPx as number, + display_number: tool.args.displayNumber as number, + cache_control: undefined, + }); + break; + } + case 'anthropic.text_editor_20250124': { + betas.add('computer-use-2025-01-24'); + anthropicTools.push({ + name: 'str_replace_editor', + type: 'text_editor_20250124', + cache_control: undefined, + }); + break; + } + case 'anthropic.text_editor_20241022': { + betas.add('computer-use-2024-10-22'); + anthropicTools.push({ + name: 'str_replace_editor', + type: 'text_editor_20241022', + cache_control: undefined, + }); + break; + } + case 'anthropic.text_editor_20250429': { + betas.add('computer-use-2025-01-24'); + anthropicTools.push({ + name: 'str_replace_based_edit_tool', + type: 'text_editor_20250429', + cache_control: undefined, + }); + break; + } + case 'anthropic.text_editor_20250728': { + const args = await validateTypes({ + value: tool.args, + schema: textEditor_20250728ArgsSchema, + }); + anthropicTools.push({ + name: 'str_replace_based_edit_tool', + type: 'text_editor_20250728', + max_characters: args.maxCharacters, + cache_control: undefined, + }); + break; + } + case 'anthropic.bash_20250124': { + betas.add('computer-use-2025-01-24'); + anthropicTools.push({ + name: 'bash', + type: 'bash_20250124', + cache_control: undefined, + }); + break; + } + case 'anthropic.bash_20241022': { + betas.add('computer-use-2024-10-22'); + anthropicTools.push({ + name: 'bash', + type: 'bash_20241022', + cache_control: undefined, + }); + break; + } + case 'anthropic.memory_20250818': { + betas.add('context-management-2025-06-27'); + anthropicTools.push({ + name: 'memory', + type: 'memory_20250818', + }); + break; + } + case 'anthropic.web_fetch_20250910': { + betas.add('web-fetch-2025-09-10'); + const args = await validateTypes({ + value: tool.args, + schema: webFetch_20250910ArgsSchema, + }); + anthropicTools.push({ + type: 'web_fetch_20250910', + name: 'web_fetch', + max_uses: args.maxUses, + allowed_domains: args.allowedDomains, + blocked_domains: args.blockedDomains, + citations: args.citations, + max_content_tokens: args.maxContentTokens, + cache_control: undefined, + }); + break; + } + case 'anthropic.web_fetch_20260209': { + betas.add('code-execution-web-tools-2026-02-09'); + const args = await validateTypes({ + value: tool.args, + schema: webFetch_20260209ArgsSchema, + }); + anthropicTools.push({ + type: 'web_fetch_20260209', + name: 'web_fetch', + max_uses: args.maxUses, + allowed_domains: args.allowedDomains, + blocked_domains: args.blockedDomains, + citations: args.citations, + max_content_tokens: args.maxContentTokens, + cache_control: undefined, + }); + break; + } + case 'anthropic.web_search_20250305': { + const args = await validateTypes({ + value: tool.args, + schema: webSearch_20250305ArgsSchema, + }); + anthropicTools.push({ + type: 'web_search_20250305', + name: 'web_search', + max_uses: args.maxUses, + allowed_domains: args.allowedDomains, + blocked_domains: args.blockedDomains, + user_location: args.userLocation, + cache_control: undefined, + }); + break; + } + case 'anthropic.web_search_20260209': { + betas.add('code-execution-web-tools-2026-02-09'); + const args = await validateTypes({ + value: tool.args, + schema: webSearch_20260209ArgsSchema, + }); + anthropicTools.push({ + type: 'web_search_20260209', + name: 'web_search', + max_uses: args.maxUses, + allowed_domains: args.allowedDomains, + blocked_domains: args.blockedDomains, + user_location: args.userLocation, + cache_control: undefined, + }); + break; + } + + case 'anthropic.tool_search_regex_20251119': { + anthropicTools.push({ + type: 'tool_search_tool_regex_20251119', + name: 'tool_search_tool_regex', + }); + break; + } + + case 'anthropic.tool_search_bm25_20251119': { + anthropicTools.push({ + type: 'tool_search_tool_bm25_20251119', + name: 'tool_search_tool_bm25', + }); + break; + } + + default: { + toolWarnings.push({ + type: 'unsupported', + feature: `provider-defined tool ${tool.id}`, + }); + break; + } + } + break; + } + + default: { + toolWarnings.push({ + type: 'unsupported', + feature: `tool ${tool}`, + }); + break; + } + } + } + + if (toolChoice == null) { + return { + tools: anthropicTools, + toolChoice: disableParallelToolUse + ? { type: 'auto', disable_parallel_tool_use: disableParallelToolUse } + : undefined, + toolWarnings, + betas, + }; + } + + const type = toolChoice.type; + + switch (type) { + case 'auto': + return { + tools: anthropicTools, + toolChoice: { + type: 'auto', + disable_parallel_tool_use: disableParallelToolUse, + }, + toolWarnings, + betas, + }; + case 'required': + return { + tools: anthropicTools, + toolChoice: { + type: 'any', + disable_parallel_tool_use: disableParallelToolUse, + }, + toolWarnings, + betas, + }; + case 'none': + // Anthropic does not support 'none' tool choice, so we remove the tools: + return { tools: undefined, toolChoice: undefined, toolWarnings, betas }; + case 'tool': + return { + tools: anthropicTools, + toolChoice: { + type: 'tool', + name: toolChoice.toolName, + disable_parallel_tool_use: disableParallelToolUse, + }, + toolWarnings, + betas, + }; + default: { + const _exhaustiveCheck: never = type; + throw new UnsupportedFunctionalityError({ + functionality: `tool choice type: ${_exhaustiveCheck}`, + }); + } + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-provider.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-provider.ts new file mode 100644 index 000000000..f77cc3d9f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-provider.ts @@ -0,0 +1,177 @@ +import { + InvalidArgumentError, + LanguageModelV3, + NoSuchModelError, + ProviderV3, +} from '@ai-sdk/provider'; +import { + FetchFunction, + generateId, + loadApiKey, + loadOptionalSetting, + withoutTrailingSlash, + withUserAgentSuffix, +} from '@ai-sdk/provider-utils'; +import { VERSION } from './version'; +import { AnthropicMessagesLanguageModel } from './anthropic-messages-language-model'; +import { AnthropicMessagesModelId } from './anthropic-messages-options'; +import { anthropicTools } from './anthropic-tools'; + +export interface AnthropicProvider extends ProviderV3 { + /** + * Creates a model for text generation. + */ + (modelId: AnthropicMessagesModelId): LanguageModelV3; + + /** + * Creates a model for text generation. + */ + languageModel(modelId: AnthropicMessagesModelId): LanguageModelV3; + + chat(modelId: AnthropicMessagesModelId): LanguageModelV3; + + messages(modelId: AnthropicMessagesModelId): LanguageModelV3; + + /** + * @deprecated Use `embeddingModel` instead. + */ + textEmbeddingModel(modelId: string): never; + + /** + * Anthropic-specific computer use tool. + */ + tools: typeof anthropicTools; +} + +export interface AnthropicProviderSettings { + /** + * Use a different URL prefix for API calls, e.g. to use proxy servers. + * The default prefix is `https://api.anthropic.com/v1`. + */ + baseURL?: string; + + /** + * API key that is being send using the `x-api-key` header. + * It defaults to the `ANTHROPIC_API_KEY` environment variable. + * Only one of `apiKey` or `authToken` is required. + */ + apiKey?: string; + + /** + * Auth token that is being sent using the `Authorization: Bearer` header. + * It defaults to the `ANTHROPIC_AUTH_TOKEN` environment variable. + * Only one of `apiKey` or `authToken` is required. + */ + authToken?: string; + + /** + * Custom headers to include in the requests. + */ + headers?: Record; + + /** + * Custom fetch implementation. You can use it as a middleware to intercept requests, + * or to provide a custom fetch implementation for e.g. testing. + */ + fetch?: FetchFunction; + + generateId?: () => string; + + /** + * Custom provider name + * Defaults to 'anthropic.messages'. + */ + name?: string; +} + +/** + * Create an Anthropic provider instance. + */ +export function createAnthropic( + options: AnthropicProviderSettings = {}, +): AnthropicProvider { + const baseURL = + withoutTrailingSlash( + loadOptionalSetting({ + settingValue: options.baseURL, + environmentVariableName: 'ANTHROPIC_BASE_URL', + }), + ) ?? 'https://api.anthropic.com/v1'; + + const providerName = options.name ?? 'anthropic.messages'; + + // Only error if both are explicitly provided in options + if (options.apiKey && options.authToken) { + throw new InvalidArgumentError({ + argument: 'apiKey/authToken', + message: + 'Both apiKey and authToken were provided. Please use only one authentication method.', + }); + } + + const getHeaders = () => { + const authHeaders: Record = options.authToken + ? { Authorization: `Bearer ${options.authToken}` } + : { + 'x-api-key': loadApiKey({ + apiKey: options.apiKey, + environmentVariableName: 'ANTHROPIC_API_KEY', + description: 'Anthropic', + }), + }; + + return withUserAgentSuffix( + { + 'anthropic-version': '2023-06-01', + ...authHeaders, + ...options.headers, + }, + `ai-sdk/anthropic/${VERSION}`, + ); + }; + + const createChatModel = (modelId: AnthropicMessagesModelId) => + new AnthropicMessagesLanguageModel(modelId, { + provider: providerName, + baseURL, + headers: getHeaders, + fetch: options.fetch, + generateId: options.generateId ?? generateId, + supportedUrls: () => ({ + 'image/*': [/^https?:\/\/.*$/], + 'application/pdf': [/^https?:\/\/.*$/], + }), + }); + + const provider = function (modelId: AnthropicMessagesModelId) { + if (new.target) { + throw new Error( + 'The Anthropic model function cannot be called with the new keyword.', + ); + } + + return createChatModel(modelId); + }; + + provider.specificationVersion = 'v3' as const; + provider.languageModel = createChatModel; + provider.chat = createChatModel; + provider.messages = createChatModel; + + provider.embeddingModel = (modelId: string) => { + throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' }); + }; + provider.textEmbeddingModel = provider.embeddingModel; + provider.imageModel = (modelId: string) => { + throw new NoSuchModelError({ modelId, modelType: 'imageModel' }); + }; + + provider.tools = anthropicTools; + + return provider; +} + +/** + * Default Anthropic provider instance. + */ +export const anthropic = createAnthropic(); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-tools.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-tools.ts new file mode 100644 index 000000000..d3f62d812 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/anthropic-tools.ts @@ -0,0 +1,238 @@ +import { bash_20241022 } from './tool/bash_20241022'; +import { bash_20250124 } from './tool/bash_20250124'; +import { codeExecution_20250522 } from './tool/code-execution_20250522'; +import { codeExecution_20250825 } from './tool/code-execution_20250825'; +import { codeExecution_20260120 } from './tool/code-execution_20260120'; +import { computer_20241022 } from './tool/computer_20241022'; +import { computer_20250124 } from './tool/computer_20250124'; +import { computer_20251124 } from './tool/computer_20251124'; +import { memory_20250818 } from './tool/memory_20250818'; +import { textEditor_20241022 } from './tool/text-editor_20241022'; +import { textEditor_20250124 } from './tool/text-editor_20250124'; +import { textEditor_20250429 } from './tool/text-editor_20250429'; +import { textEditor_20250728 } from './tool/text-editor_20250728'; +import { toolSearchBm25_20251119 } from './tool/tool-search-bm25_20251119'; +import { toolSearchRegex_20251119 } from './tool/tool-search-regex_20251119'; +import { webFetch_20260209 } from './tool/web-fetch-20260209'; +import { webFetch_20250910 } from './tool/web-fetch-20250910'; +import { webSearch_20260209 } from './tool/web-search_20260209'; +import { webSearch_20250305 } from './tool/web-search_20250305'; + +export const anthropicTools = { + /** + * The bash tool enables Claude to execute shell commands in a persistent bash session, + * allowing system operations, script execution, and command-line automation. + * + * Image results are supported. + */ + bash_20241022, + + /** + * The bash tool enables Claude to execute shell commands in a persistent bash session, + * allowing system operations, script execution, and command-line automation. + * + * Image results are supported. + */ + bash_20250124, + + /** + * Claude can analyze data, create visualizations, perform complex calculations, + * run system commands, create and edit files, and process uploaded files directly within + * the API conversation. + * + * The code execution tool allows Claude to run Bash commands and manipulate files, + * including writing code, in a secure, sandboxed environment. + */ + codeExecution_20250522, + + /** + * Claude can analyze data, create visualizations, perform complex calculations, + * run system commands, create and edit files, and process uploaded files directly within + * the API conversation. + * + * The code execution tool allows Claude to run both Python and Bash commands and manipulate files, + * including writing code, in a secure, sandboxed environment. + * + * This is the latest version with enhanced Bash support and file operations. + */ + codeExecution_20250825, + + /** + * Claude can analyze data, create visualizations, perform complex calculations, + * run system commands, create and edit files, and process uploaded files directly within + * the API conversation. + * + * The code execution tool allows Claude to run both Python and Bash commands and manipulate files, + * including writing code, in a secure, sandboxed environment. + * + * This is the recommended version. Does not require a beta header. + * + * Supported models: Claude Opus 4.6, Sonnet 4.6, Sonnet 4.5, Opus 4.5 + */ + codeExecution_20260120, + + /** + * Claude can interact with computer environments through the computer use tool, which + * provides screenshot capabilities and mouse/keyboard control for autonomous desktop interaction. + * + * Image results are supported. + * + * @param displayWidthPx - The width of the display being controlled by the model in pixels. + * @param displayHeightPx - The height of the display being controlled by the model in pixels. + * @param displayNumber - The display number to control (only relevant for X11 environments). If specified, the tool will be provided a display number in the tool definition. + */ + computer_20241022, + + /** + * Claude can interact with computer environments through the computer use tool, which + * provides screenshot capabilities and mouse/keyboard control for autonomous desktop interaction. + * + * Image results are supported. + * + * @param displayWidthPx - The width of the display being controlled by the model in pixels. + * @param displayHeightPx - The height of the display being controlled by the model in pixels. + * @param displayNumber - The display number to control (only relevant for X11 environments). If specified, the tool will be provided a display number in the tool definition. + */ + computer_20250124, + + /** + * Claude can interact with computer environments through the computer use tool, which + * provides screenshot capabilities and mouse/keyboard control for autonomous desktop interaction. + * + * This version adds the zoom action for detailed screen region inspection. + * + * Image results are supported. + * + * Supported models: Claude Opus 4.5 + * + * @param displayWidthPx - The width of the display being controlled by the model in pixels. + * @param displayHeightPx - The height of the display being controlled by the model in pixels. + * @param displayNumber - The display number to control (only relevant for X11 environments). If specified, the tool will be provided a display number in the tool definition. + * @param enableZoom - Enable zoom action. Set to true to allow Claude to zoom into specific screen regions. Default: false. + */ + computer_20251124, + + /** + * The memory tool enables Claude to store and retrieve information across conversations through a memory file directory. + * Claude can create, read, update, and delete files that persist between sessions, + * allowing it to build knowledge over time without keeping everything in the context window. + * The memory tool operates client-side—you control where and how the data is stored through your own infrastructure. + * + * Supported models: Claude Sonnet 4.5, Claude Sonnet 4, Claude Opus 4.1, Claude Opus 4. + */ + memory_20250818, + + /** + * Claude can use an Anthropic-defined text editor tool to view and modify text files, + * helping you debug, fix, and improve your code or other text documents. This allows Claude + * to directly interact with your files, providing hands-on assistance rather than just suggesting changes. + * + * Supported models: Claude Sonnet 3.5 + */ + textEditor_20241022, + + /** + * Claude can use an Anthropic-defined text editor tool to view and modify text files, + * helping you debug, fix, and improve your code or other text documents. This allows Claude + * to directly interact with your files, providing hands-on assistance rather than just suggesting changes. + * + * Supported models: Claude Sonnet 3.7 + */ + textEditor_20250124, + + /** + * Claude can use an Anthropic-defined text editor tool to view and modify text files, + * helping you debug, fix, and improve your code or other text documents. This allows Claude + * to directly interact with your files, providing hands-on assistance rather than just suggesting changes. + * + * Note: This version does not support the "undo_edit" command. + * + * @deprecated Use textEditor_20250728 instead + */ + textEditor_20250429, + + /** + * Claude can use an Anthropic-defined text editor tool to view and modify text files, + * helping you debug, fix, and improve your code or other text documents. This allows Claude + * to directly interact with your files, providing hands-on assistance rather than just suggesting changes. + * + * Note: This version does not support the "undo_edit" command and adds optional max_characters parameter. + * + * Supported models: Claude Sonnet 4, Opus 4, and Opus 4.1 + * + * @param maxCharacters - Optional maximum number of characters to view in the file + */ + textEditor_20250728, + + /** + * Creates a web fetch tool that gives Claude direct access to real-time web content. + * + * @param maxUses - The max_uses parameter limits the number of web fetches performed + * @param allowedDomains - Only fetch from these domains + * @param blockedDomains - Never fetch from these domains + * @param citations - Unlike web search where citations are always enabled, citations are optional for web fetch. Set "citations": {"enabled": true} to enable Claude to cite specific passages from fetched documents. + * @param maxContentTokens - The max_content_tokens parameter limits the amount of content that will be included in the context. + */ + webFetch_20250910, + + /** + * Creates a web fetch tool that gives Claude direct access to real-time web content. + * + * @param maxUses - The max_uses parameter limits the number of web fetches performed + * @param allowedDomains - Only fetch from these domains + * @param blockedDomains - Never fetch from these domains + * @param citations - Unlike web search where citations are always enabled, citations are optional for web fetch. Set "citations": {"enabled": true} to enable Claude to cite specific passages from fetched documents. + * @param maxContentTokens - The max_content_tokens parameter limits the amount of content that will be included in the context. + */ + webFetch_20260209, + + /** + * Creates a web search tool that gives Claude direct access to real-time web content. + * + * @param maxUses - Maximum number of web searches Claude can perform during the conversation. + * @param allowedDomains - Optional list of domains that Claude is allowed to search. + * @param blockedDomains - Optional list of domains that Claude should avoid when searching. + * @param userLocation - Optional user location information to provide geographically relevant search results. + */ + webSearch_20250305, + + /** + * Creates a web search tool that gives Claude direct access to real-time web content. + * + * @param maxUses - Maximum number of web searches Claude can perform during the conversation. + * @param allowedDomains - Optional list of domains that Claude is allowed to search. + * @param blockedDomains - Optional list of domains that Claude should avoid when searching. + * @param userLocation - Optional user location information to provide geographically relevant search results. + */ + webSearch_20260209, + + /** + * Creates a tool search tool that uses regex patterns to find tools. + * + * The tool search tool enables Claude to work with hundreds or thousands of tools + * by dynamically discovering and loading them on-demand. Instead of loading all + * tool definitions into the context window upfront, Claude searches your tool + * catalog and loads only the tools it needs. + * + * Use `providerOptions: { anthropic: { deferLoading: true } }` on other tools + * to mark them for deferred loading. + * + * Supported models: Claude Opus 4.5, Claude Sonnet 4.5 + */ + toolSearchRegex_20251119, + + /** + * Creates a tool search tool that uses BM25 (natural language) to find tools. + * + * The tool search tool enables Claude to work with hundreds or thousands of tools + * by dynamically discovering and loading them on-demand. Instead of loading all + * tool definitions into the context window upfront, Claude searches your tool + * catalog and loads only the tools it needs. + * + * Use `providerOptions: { anthropic: { deferLoading: true } }` on other tools + * to mark them for deferred loading. + * + * Supported models: Claude Opus 4.5, Claude Sonnet 4.5 + */ + toolSearchBm25_20251119, +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/convert-anthropic-messages-usage.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/convert-anthropic-messages-usage.ts new file mode 100644 index 000000000..679629448 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/convert-anthropic-messages-usage.ts @@ -0,0 +1,73 @@ +import { JSONObject, LanguageModelV3Usage } from '@ai-sdk/provider'; + +/** + * Represents a single iteration in the usage breakdown. + * When compaction occurs, the API returns an iterations array showing + * usage for each sampling iteration (compaction + message). + */ +export type AnthropicUsageIteration = { + type: 'compaction' | 'message'; + input_tokens: number; + output_tokens: number; +}; + +export type AnthropicMessagesUsage = { + input_tokens: number; + output_tokens: number; + cache_creation_input_tokens?: number | null; + cache_read_input_tokens?: number | null; + /** + * When compaction is triggered, this array contains usage for each + * sampling iteration. The top-level input_tokens and output_tokens + * do NOT include compaction iteration usage - to get total tokens + * consumed and billed, sum across all entries in this array. + */ + iterations?: AnthropicUsageIteration[] | null; +}; + +export function convertAnthropicMessagesUsage({ + usage, + rawUsage, +}: { + usage: AnthropicMessagesUsage; + rawUsage?: JSONObject; +}): LanguageModelV3Usage { + const cacheCreationTokens = usage.cache_creation_input_tokens ?? 0; + const cacheReadTokens = usage.cache_read_input_tokens ?? 0; + + // When iterations is present (compaction occurred), sum across all iterations + // to get the true total tokens consumed/billed. The top-level input_tokens + // and output_tokens exclude compaction iteration usage. + let inputTokens: number; + let outputTokens: number; + + if (usage.iterations && usage.iterations.length > 0) { + const totals = usage.iterations.reduce( + (acc, iter) => ({ + input: acc.input + iter.input_tokens, + output: acc.output + iter.output_tokens, + }), + { input: 0, output: 0 }, + ); + inputTokens = totals.input; + outputTokens = totals.output; + } else { + inputTokens = usage.input_tokens; + outputTokens = usage.output_tokens; + } + + return { + inputTokens: { + total: inputTokens + cacheCreationTokens + cacheReadTokens, + noCache: inputTokens, + cacheRead: cacheReadTokens, + cacheWrite: cacheCreationTokens, + }, + outputTokens: { + total: outputTokens, + text: undefined, + reasoning: undefined, + }, + raw: rawUsage ?? usage, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/convert-to-anthropic-messages-prompt.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/convert-to-anthropic-messages-prompt.ts new file mode 100644 index 000000000..610ad1cb5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/convert-to-anthropic-messages-prompt.ts @@ -0,0 +1,1119 @@ +import { + SharedV3Warning, + LanguageModelV3DataContent, + LanguageModelV3Message, + LanguageModelV3Prompt, + SharedV3ProviderMetadata, + UnsupportedFunctionalityError, +} from '@ai-sdk/provider'; +import { + convertBase64ToUint8Array, + convertToBase64, + parseProviderOptions, + validateTypes, + isNonNullable, + ToolNameMapping, +} from '@ai-sdk/provider-utils'; +import { + AnthropicAssistantMessage, + AnthropicMessagesPrompt, + anthropicReasoningMetadataSchema, + AnthropicToolResultContent, + AnthropicUserMessage, + AnthropicWebFetchToolResultContent, +} from './anthropic-messages-api'; +import { anthropicFilePartProviderOptions } from './anthropic-messages-options'; +import { CacheControlValidator } from './get-cache-control'; +import { codeExecution_20250522OutputSchema } from './tool/code-execution_20250522'; +import { codeExecution_20250825OutputSchema } from './tool/code-execution_20250825'; +import { codeExecution_20260120OutputSchema } from './tool/code-execution_20260120'; +import { toolSearchRegex_20251119OutputSchema as toolSearchOutputSchema } from './tool/tool-search-regex_20251119'; +import { webFetch_20250910OutputSchema } from './tool/web-fetch-20250910'; +import { webSearch_20250305OutputSchema } from './tool/web-search_20250305'; + +function convertToString(data: LanguageModelV3DataContent): string { + if (typeof data === 'string') { + return new TextDecoder().decode(convertBase64ToUint8Array(data)); + } + + if (data instanceof Uint8Array) { + return new TextDecoder().decode(data); + } + + if (data instanceof URL) { + throw new UnsupportedFunctionalityError({ + functionality: 'URL-based text documents are not supported for citations', + }); + } + + throw new UnsupportedFunctionalityError({ + functionality: `unsupported data type for text documents: ${typeof data}`, + }); +} + +/** + * Checks if data is a URL (either a URL object or a URL string). + */ +function isUrlData( + data: LanguageModelV3DataContent, +): data is URL | (string & { __brand: 'url-string' }) { + return data instanceof URL || isUrlString(data); +} + +function isUrlString(data: LanguageModelV3DataContent): boolean { + return typeof data === 'string' && /^https?:\/\//i.test(data); +} + +function getUrlString(data: LanguageModelV3DataContent): string { + return data instanceof URL ? data.toString() : (data as string); +} + +export async function convertToAnthropicMessagesPrompt({ + prompt, + sendReasoning, + warnings, + cacheControlValidator, + toolNameMapping, +}: { + prompt: LanguageModelV3Prompt; + sendReasoning: boolean; + warnings: SharedV3Warning[]; + cacheControlValidator?: CacheControlValidator; + toolNameMapping: ToolNameMapping; +}): Promise<{ + prompt: AnthropicMessagesPrompt; + betas: Set; +}> { + const betas = new Set(); + const blocks = groupIntoBlocks(prompt); + const validator = cacheControlValidator || new CacheControlValidator(); + + let system: AnthropicMessagesPrompt['system'] = undefined; + const messages: AnthropicMessagesPrompt['messages'] = []; + + async function shouldEnableCitations( + providerMetadata: SharedV3ProviderMetadata | undefined, + ): Promise { + const anthropicOptions = await parseProviderOptions({ + provider: 'anthropic', + providerOptions: providerMetadata, + schema: anthropicFilePartProviderOptions, + }); + + return anthropicOptions?.citations?.enabled ?? false; + } + + async function getDocumentMetadata( + providerMetadata: SharedV3ProviderMetadata | undefined, + ): Promise<{ title?: string; context?: string }> { + const anthropicOptions = await parseProviderOptions({ + provider: 'anthropic', + providerOptions: providerMetadata, + schema: anthropicFilePartProviderOptions, + }); + + return { + title: anthropicOptions?.title, + context: anthropicOptions?.context, + }; + } + + for (let i = 0; i < blocks.length; i++) { + const block = blocks[i]; + const isLastBlock = i === blocks.length - 1; + const type = block.type; + + switch (type) { + case 'system': { + if (system != null) { + throw new UnsupportedFunctionalityError({ + functionality: + 'Multiple system messages that are separated by user/assistant messages', + }); + } + + system = block.messages.map(({ content, providerOptions }) => ({ + type: 'text', + text: content, + cache_control: validator.getCacheControl(providerOptions, { + type: 'system message', + canCache: true, + }), + })); + + break; + } + + case 'user': { + // combines all user and tool messages in this block into a single message: + const anthropicContent: AnthropicUserMessage['content'] = []; + + for (const message of block.messages) { + const { role, content } = message; + switch (role) { + case 'user': { + for (let j = 0; j < content.length; j++) { + const part = content[j]; + + // cache control: first add cache control from part. + // for the last part of a message, + // check also if the message has cache control. + const isLastPart = j === content.length - 1; + + const cacheControl = + validator.getCacheControl(part.providerOptions, { + type: 'user message part', + canCache: true, + }) ?? + (isLastPart + ? validator.getCacheControl(message.providerOptions, { + type: 'user message', + canCache: true, + }) + : undefined); + + switch (part.type) { + case 'text': { + anthropicContent.push({ + type: 'text', + text: part.text, + cache_control: cacheControl, + }); + break; + } + + case 'file': { + if (part.mediaType.startsWith('image/')) { + anthropicContent.push({ + type: 'image', + source: isUrlData(part.data) + ? { + type: 'url', + url: getUrlString(part.data), + } + : { + type: 'base64', + media_type: + part.mediaType === 'image/*' + ? 'image/jpeg' + : part.mediaType, + data: convertToBase64(part.data), + }, + cache_control: cacheControl, + }); + } else if (part.mediaType === 'application/pdf') { + betas.add('pdfs-2024-09-25'); + + const enableCitations = await shouldEnableCitations( + part.providerOptions, + ); + + const metadata = await getDocumentMetadata( + part.providerOptions, + ); + + anthropicContent.push({ + type: 'document', + source: isUrlData(part.data) + ? { + type: 'url', + url: getUrlString(part.data), + } + : { + type: 'base64', + media_type: 'application/pdf', + data: convertToBase64(part.data), + }, + title: metadata.title ?? part.filename, + ...(metadata.context && { context: metadata.context }), + ...(enableCitations && { + citations: { enabled: true }, + }), + cache_control: cacheControl, + }); + } else if (part.mediaType === 'text/plain') { + const enableCitations = await shouldEnableCitations( + part.providerOptions, + ); + + const metadata = await getDocumentMetadata( + part.providerOptions, + ); + + anthropicContent.push({ + type: 'document', + source: isUrlData(part.data) + ? { + type: 'url', + url: getUrlString(part.data), + } + : { + type: 'text', + media_type: 'text/plain', + data: convertToString(part.data), + }, + title: metadata.title ?? part.filename, + ...(metadata.context && { context: metadata.context }), + ...(enableCitations && { + citations: { enabled: true }, + }), + cache_control: cacheControl, + }); + } else { + throw new UnsupportedFunctionalityError({ + functionality: `media type: ${part.mediaType}`, + }); + } + + break; + } + } + } + + break; + } + case 'tool': { + for (let i = 0; i < content.length; i++) { + const part = content[i]; + + if (part.type === 'tool-approval-response') { + continue; + } + + // cache control: first add cache control from part. + // for the last part of a message, + // check also if the message has cache control. + const isLastPart = i === content.length - 1; + + const cacheControl = + validator.getCacheControl(part.providerOptions, { + type: 'tool result part', + canCache: true, + }) ?? + (isLastPart + ? validator.getCacheControl(message.providerOptions, { + type: 'tool result message', + canCache: true, + }) + : undefined); + + const output = part.output; + let contentValue: AnthropicToolResultContent['content']; + switch (output.type) { + case 'content': + contentValue = output.value + .map(contentPart => { + switch (contentPart.type) { + case 'text': + return { + type: 'text' as const, + text: contentPart.text, + }; + case 'image-data': { + return { + type: 'image' as const, + source: { + type: 'base64' as const, + media_type: contentPart.mediaType, + data: contentPart.data, + }, + }; + } + case 'image-url': { + return { + type: 'image' as const, + source: { + type: 'url' as const, + url: contentPart.url, + }, + }; + } + case 'file-url': { + return { + type: 'document' as const, + source: { + type: 'url' as const, + url: contentPart.url, + }, + }; + } + case 'file-data': { + if (contentPart.mediaType === 'application/pdf') { + betas.add('pdfs-2024-09-25'); + return { + type: 'document' as const, + source: { + type: 'base64' as const, + media_type: contentPart.mediaType, + data: contentPart.data, + }, + }; + } + + warnings.push({ + type: 'other', + message: `unsupported tool content part type: ${contentPart.type} with media type: ${contentPart.mediaType}`, + }); + + return undefined; + } + case 'custom': { + const anthropicOptions = contentPart.providerOptions + ?.anthropic as + | { type: string; toolName?: string } + | undefined; + if (anthropicOptions?.type === 'tool-reference') { + return { + type: 'tool_reference' as const, + tool_name: anthropicOptions.toolName!, + }; + } + warnings.push({ + type: 'other', + message: `unsupported custom tool content part`, + }); + return undefined; + } + default: { + warnings.push({ + type: 'other', + message: `unsupported tool content part type: ${contentPart.type}`, + }); + + return undefined; + } + } + }) + .filter(isNonNullable); + break; + case 'text': + case 'error-text': + contentValue = output.value; + break; + case 'execution-denied': + contentValue = output.reason ?? 'Tool execution denied.'; + break; + case 'json': + case 'error-json': + default: + contentValue = JSON.stringify(output.value); + break; + } + + anthropicContent.push({ + type: 'tool_result', + tool_use_id: part.toolCallId, + content: contentValue, + is_error: + output.type === 'error-text' || output.type === 'error-json' + ? true + : undefined, + cache_control: cacheControl, + }); + } + + break; + } + default: { + const _exhaustiveCheck: never = role; + throw new Error(`Unsupported role: ${_exhaustiveCheck}`); + } + } + } + + messages.push({ role: 'user', content: anthropicContent }); + + break; + } + + case 'assistant': { + // combines multiple assistant messages in this block into a single message: + const anthropicContent: AnthropicAssistantMessage['content'] = []; + + const mcpToolUseIds = new Set(); + + for (let j = 0; j < block.messages.length; j++) { + const message = block.messages[j]; + const isLastMessage = j === block.messages.length - 1; + const { content } = message; + + for (let k = 0; k < content.length; k++) { + const part = content[k]; + const isLastContentPart = k === content.length - 1; + + // cache control: first add cache control from part. + // for the last part of a message, + // check also if the message has cache control. + const cacheControl = + validator.getCacheControl(part.providerOptions, { + type: 'assistant message part', + canCache: true, + }) ?? + (isLastContentPart + ? validator.getCacheControl(message.providerOptions, { + type: 'assistant message', + canCache: true, + }) + : undefined); + + switch (part.type) { + case 'text': { + // Check if this is a compaction block (via providerMetadata) + const textMetadata = part.providerOptions?.anthropic as + | { type?: string } + | undefined; + + if (textMetadata?.type === 'compaction') { + anthropicContent.push({ + type: 'compaction', + content: part.text, + cache_control: cacheControl, + }); + } else { + anthropicContent.push({ + type: 'text', + text: + // trim the last text part if it's the last message in the block + // because Anthropic does not allow trailing whitespace + // in pre-filled assistant responses + isLastBlock && isLastMessage && isLastContentPart + ? part.text.trim() + : part.text, + + cache_control: cacheControl, + }); + } + break; + } + + case 'reasoning': { + if (sendReasoning) { + const reasoningMetadata = await parseProviderOptions({ + provider: 'anthropic', + providerOptions: part.providerOptions, + schema: anthropicReasoningMetadataSchema, + }); + + if (reasoningMetadata != null) { + if (reasoningMetadata.signature != null) { + // Note: thinking blocks cannot have cache_control directly + // They are cached implicitly when in previous assistant turns + // Validate to provide helpful error message + validator.getCacheControl(part.providerOptions, { + type: 'thinking block', + canCache: false, + }); + anthropicContent.push({ + type: 'thinking', + thinking: part.text, + signature: reasoningMetadata.signature, + }); + } else if (reasoningMetadata.redactedData != null) { + // Note: redacted thinking blocks cannot have cache_control directly + // They are cached implicitly when in previous assistant turns + // Validate to provide helpful error message + validator.getCacheControl(part.providerOptions, { + type: 'redacted thinking block', + canCache: false, + }); + anthropicContent.push({ + type: 'redacted_thinking', + data: reasoningMetadata.redactedData, + }); + } else { + warnings.push({ + type: 'other', + message: 'unsupported reasoning metadata', + }); + } + } else { + warnings.push({ + type: 'other', + message: 'unsupported reasoning metadata', + }); + } + } else { + warnings.push({ + type: 'other', + message: + 'sending reasoning content is disabled for this model', + }); + } + break; + } + + case 'tool-call': { + if (part.providerExecuted) { + const providerToolName = toolNameMapping.toProviderToolName( + part.toolName, + ); + const isMcpToolUse = + part.providerOptions?.anthropic?.type === 'mcp-tool-use'; + + if (isMcpToolUse) { + mcpToolUseIds.add(part.toolCallId); + + const serverName = + part.providerOptions?.anthropic?.serverName; + + if (serverName == null || typeof serverName !== 'string') { + warnings.push({ + type: 'other', + message: + 'mcp tool use server name is required and must be a string', + }); + break; + } + + anthropicContent.push({ + type: 'mcp_tool_use', + id: part.toolCallId, + name: part.toolName, + input: part.input, + server_name: serverName, + cache_control: cacheControl, + }); + } else if ( + // code execution 20250825: + providerToolName === 'code_execution' && + part.input != null && + typeof part.input === 'object' && + 'type' in part.input && + typeof part.input.type === 'string' && + (part.input.type === 'bash_code_execution' || + part.input.type === 'text_editor_code_execution') + ) { + anthropicContent.push({ + type: 'server_tool_use', + id: part.toolCallId, + name: part.input.type, // map back to subtool name + input: part.input, + cache_control: cacheControl, + }); + } else if ( + // code execution 20250825 programmatic tool calling: + // Strip the fake 'programmatic-tool-call' type before sending to Anthropic + providerToolName === 'code_execution' && + part.input != null && + typeof part.input === 'object' && + 'type' in part.input && + part.input.type === 'programmatic-tool-call' + ) { + const { type: _, ...inputWithoutType } = part.input as { + type: string; + code: string; + }; + anthropicContent.push({ + type: 'server_tool_use', + id: part.toolCallId, + name: 'code_execution', + input: inputWithoutType, + cache_control: cacheControl, + }); + } else { + if ( + providerToolName === 'code_execution' || // code execution 20250522 + providerToolName === 'web_fetch' || + providerToolName === 'web_search' + ) { + anthropicContent.push({ + type: 'server_tool_use', + id: part.toolCallId, + name: providerToolName, + input: part.input, + cache_control: cacheControl, + }); + } else if ( + providerToolName === 'tool_search_tool_regex' || + providerToolName === 'tool_search_tool_bm25' + ) { + anthropicContent.push({ + type: 'server_tool_use', + id: part.toolCallId, + name: providerToolName, + input: part.input, + cache_control: cacheControl, + }); + } else { + warnings.push({ + type: 'other', + message: `provider executed tool call for tool ${part.toolName} is not supported`, + }); + } + } + + break; + } + + // Extract caller info from provider options for programmatic tool calling + const callerOptions = part.providerOptions?.anthropic as + | { caller?: { type: string; toolId?: string } } + | undefined; + const caller = callerOptions?.caller + ? (callerOptions.caller.type === 'code_execution_20250825' || + callerOptions.caller.type === + 'code_execution_20260120') && + callerOptions.caller.toolId + ? { + type: callerOptions.caller.type as + | 'code_execution_20250825' + | 'code_execution_20260120', + tool_id: callerOptions.caller.toolId, + } + : callerOptions.caller.type === 'direct' + ? { type: 'direct' as const } + : undefined + : undefined; + + anthropicContent.push({ + type: 'tool_use', + id: part.toolCallId, + name: part.toolName, + input: part.input, + ...(caller && { caller }), + cache_control: cacheControl, + }); + break; + } + + case 'tool-result': { + const providerToolName = toolNameMapping.toProviderToolName( + part.toolName, + ); + + if (mcpToolUseIds.has(part.toolCallId)) { + const output = part.output; + + if (output.type !== 'json' && output.type !== 'error-json') { + warnings.push({ + type: 'other', + message: `provider executed tool result output type ${output.type} for tool ${part.toolName} is not supported`, + }); + + break; + } + + anthropicContent.push({ + type: 'mcp_tool_result', + tool_use_id: part.toolCallId, + is_error: output.type === 'error-json', + content: output.value as unknown as + | string + | Array<{ type: 'text'; text: string }>, + cache_control: cacheControl, + }); + } else if (providerToolName === 'code_execution') { + const output = part.output; + + // Handle error types for code_execution tools (e.g., from programmatic tool calling) + if ( + output.type === 'error-text' || + output.type === 'error-json' + ) { + let errorInfo: { type?: string; errorCode?: string } = {}; + try { + if (typeof output.value === 'string') { + errorInfo = JSON.parse(output.value); + } else if ( + typeof output.value === 'object' && + output.value !== null + ) { + errorInfo = output.value as typeof errorInfo; + } + } catch {} + + if (errorInfo.type === 'code_execution_tool_result_error') { + anthropicContent.push({ + type: 'code_execution_tool_result', + tool_use_id: part.toolCallId, + content: { + type: 'code_execution_tool_result_error' as const, + error_code: errorInfo.errorCode ?? 'unknown', + }, + cache_control: cacheControl, + }); + } else { + anthropicContent.push({ + type: 'bash_code_execution_tool_result', + tool_use_id: part.toolCallId, + cache_control: cacheControl, + content: { + type: 'bash_code_execution_tool_result_error' as const, + error_code: errorInfo.errorCode ?? 'unknown', + }, + }); + } + break; + } + + if (output.type !== 'json') { + warnings.push({ + type: 'other', + message: `provider executed tool result output type ${output.type} for tool ${part.toolName} is not supported`, + }); + + break; + } + + if ( + output.value == null || + typeof output.value !== 'object' || + !('type' in output.value) || + typeof output.value.type !== 'string' + ) { + warnings.push({ + type: 'other', + message: `provider executed tool result output value is not a valid code execution result for tool ${part.toolName}`, + }); + break; + } + + // to distinguish between code execution 20250522, 20250825, + // and encrypted results (from web_fetch_20260209/web_search_20260209 injection), + // we check the type property in output.value + if (output.value.type === 'code_execution_result') { + // code execution 20250522 + const codeExecutionOutput = await validateTypes({ + value: output.value, + schema: codeExecution_20250522OutputSchema, + }); + + anthropicContent.push({ + type: 'code_execution_tool_result', + tool_use_id: part.toolCallId, + content: { + type: codeExecutionOutput.type, + stdout: codeExecutionOutput.stdout, + stderr: codeExecutionOutput.stderr, + return_code: codeExecutionOutput.return_code, + content: codeExecutionOutput.content ?? [], + }, + cache_control: cacheControl, + }); + } else if ( + output.value.type === 'encrypted_code_execution_result' + ) { + // code execution 20260120 encrypted result + const codeExecutionOutput = await validateTypes({ + value: output.value, + schema: codeExecution_20260120OutputSchema, + }); + + if ( + codeExecutionOutput.type === + 'encrypted_code_execution_result' + ) { + anthropicContent.push({ + type: 'code_execution_tool_result', + tool_use_id: part.toolCallId, + content: { + type: codeExecutionOutput.type, + encrypted_stdout: + codeExecutionOutput.encrypted_stdout, + stderr: codeExecutionOutput.stderr, + return_code: codeExecutionOutput.return_code, + content: codeExecutionOutput.content ?? [], + }, + cache_control: cacheControl, + }); + } + } else { + // code execution 20250825 + const codeExecutionOutput = await validateTypes({ + value: output.value, + schema: codeExecution_20250825OutputSchema, + }); + + if (codeExecutionOutput.type === 'code_execution_result') { + anthropicContent.push({ + type: 'code_execution_tool_result', + tool_use_id: part.toolCallId, + content: { + type: codeExecutionOutput.type, + stdout: codeExecutionOutput.stdout, + stderr: codeExecutionOutput.stderr, + return_code: codeExecutionOutput.return_code, + content: codeExecutionOutput.content ?? [], + }, + cache_control: cacheControl, + }); + } else if ( + codeExecutionOutput.type === + 'bash_code_execution_result' || + codeExecutionOutput.type === + 'bash_code_execution_tool_result_error' + ) { + anthropicContent.push({ + type: 'bash_code_execution_tool_result', + tool_use_id: part.toolCallId, + cache_control: cacheControl, + content: codeExecutionOutput, + }); + } else { + anthropicContent.push({ + type: 'text_editor_code_execution_tool_result', + tool_use_id: part.toolCallId, + cache_control: cacheControl, + content: codeExecutionOutput, + }); + } + } + break; + } + + if (providerToolName === 'web_fetch') { + const output = part.output; + + if (output.type === 'error-json') { + let errorValue: { errorCode?: string } = {}; + try { + if (typeof output.value === 'string') { + errorValue = JSON.parse(output.value); + } else if ( + typeof output.value === 'object' && + output.value !== null + ) { + errorValue = output.value as typeof errorValue; + } + } catch { + // If parsing fails, treat the value as-is + const extractedErrorCode = ( + output.value as Record + )?.errorCode; + errorValue = { + errorCode: + typeof extractedErrorCode === 'string' + ? extractedErrorCode + : 'unavailable', + }; + } + + anthropicContent.push({ + type: 'web_fetch_tool_result', + tool_use_id: part.toolCallId, + content: { + type: 'web_fetch_tool_result_error', + error_code: errorValue.errorCode ?? 'unavailable', + }, + cache_control: cacheControl, + }); + + break; + } + + if (output.type !== 'json') { + warnings.push({ + type: 'other', + message: `provider executed tool result output type ${output.type} for tool ${part.toolName} is not supported`, + }); + + break; + } + + // ideally we'd switch schema based on the tool version (e.g. + // web_fetch_20260209 vs web_fetch_20250910), but since both + // versions share an identical output schema, we use one here. + const webFetchOutput = await validateTypes({ + value: output.value, + schema: webFetch_20250910OutputSchema, + }); + + anthropicContent.push({ + type: 'web_fetch_tool_result', + tool_use_id: part.toolCallId, + content: { + type: 'web_fetch_result', + url: webFetchOutput.url, + retrieved_at: webFetchOutput.retrievedAt, + content: { + type: 'document', + title: webFetchOutput.content.title, + citations: webFetchOutput.content.citations, + source: { + type: webFetchOutput.content.source.type, + media_type: webFetchOutput.content.source.mediaType, + data: webFetchOutput.content.source.data, + } as Extract< + AnthropicWebFetchToolResultContent['content'], + { type: 'web_fetch_result' } + >['content']['source'], + }, + }, + cache_control: cacheControl, + }); + + break; + } + + if (providerToolName === 'web_search') { + const output = part.output; + + if (output.type !== 'json') { + warnings.push({ + type: 'other', + message: `provider executed tool result output type ${output.type} for tool ${part.toolName} is not supported`, + }); + + break; + } + + // ideally we'd switch schema based on the tool version (e.g. + // web_search_20260209 vs web_search_20250305), but since both + // versions share an identical output schema, we use one here. + const webSearchOutput = await validateTypes({ + value: output.value, + schema: webSearch_20250305OutputSchema, + }); + + anthropicContent.push({ + type: 'web_search_tool_result', + tool_use_id: part.toolCallId, + content: webSearchOutput.map(result => ({ + url: result.url, + title: result.title, + page_age: result.pageAge, + encrypted_content: result.encryptedContent, + type: result.type, + })), + cache_control: cacheControl, + }); + + break; + } + + if ( + providerToolName === 'tool_search_tool_regex' || + providerToolName === 'tool_search_tool_bm25' + ) { + const output = part.output; + + if (output.type !== 'json') { + warnings.push({ + type: 'other', + message: `provider executed tool result output type ${output.type} for tool ${part.toolName} is not supported`, + }); + + break; + } + + const toolSearchOutput = await validateTypes({ + value: output.value, + schema: toolSearchOutputSchema, + }); + + // Convert tool references back to API format + const toolReferences = toolSearchOutput.map(ref => ({ + type: 'tool_reference' as const, + tool_name: ref.toolName, + })); + + anthropicContent.push({ + type: 'tool_search_tool_result', + tool_use_id: part.toolCallId, + content: { + type: 'tool_search_tool_search_result', + tool_references: toolReferences, + }, + cache_control: cacheControl, + }); + + break; + } + + warnings.push({ + type: 'other', + message: `provider executed tool result for tool ${part.toolName} is not supported`, + }); + + break; + } + } + } + } + + messages.push({ role: 'assistant', content: anthropicContent }); + + break; + } + + default: { + const _exhaustiveCheck: never = type; + throw new Error(`content type: ${_exhaustiveCheck}`); + } + } + } + + return { + prompt: { system, messages }, + betas, + }; +} + +type SystemBlock = { + type: 'system'; + messages: Array; +}; +type AssistantBlock = { + type: 'assistant'; + messages: Array; +}; +type UserBlock = { + type: 'user'; + messages: Array; +}; + +function groupIntoBlocks( + prompt: LanguageModelV3Prompt, +): Array { + const blocks: Array = []; + let currentBlock: SystemBlock | AssistantBlock | UserBlock | undefined = + undefined; + + for (const message of prompt) { + const { role } = message; + switch (role) { + case 'system': { + if (currentBlock?.type !== 'system') { + currentBlock = { type: 'system', messages: [] }; + blocks.push(currentBlock); + } + + currentBlock.messages.push(message); + break; + } + case 'assistant': { + if (currentBlock?.type !== 'assistant') { + currentBlock = { type: 'assistant', messages: [] }; + blocks.push(currentBlock); + } + + currentBlock.messages.push(message); + break; + } + case 'user': { + if (currentBlock?.type !== 'user') { + currentBlock = { type: 'user', messages: [] }; + blocks.push(currentBlock); + } + + currentBlock.messages.push(message); + break; + } + case 'tool': { + if (currentBlock?.type !== 'user') { + currentBlock = { type: 'user', messages: [] }; + blocks.push(currentBlock); + } + + currentBlock.messages.push(message); + break; + } + default: { + const _exhaustiveCheck: never = role; + throw new Error(`Unsupported role: ${_exhaustiveCheck}`); + } + } + } + + return blocks; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/forward-anthropic-container-id-from-last-step.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/forward-anthropic-container-id-from-last-step.ts new file mode 100644 index 000000000..c2b356be6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/forward-anthropic-container-id-from-last-step.ts @@ -0,0 +1,38 @@ +import { JSONObject } from '@ai-sdk/provider'; +import { AnthropicMessageMetadata } from './anthropic-message-metadata'; + +/** + * Sets the Anthropic container ID in the provider options based on + * any previous step's provider metadata. + * + * Searches backwards through steps to find the most recent container ID. + * You can use this function in `prepareStep` to forward the container ID between steps. + */ +export function forwardAnthropicContainerIdFromLastStep({ + steps, +}: { + steps: Array<{ + providerMetadata?: Record; + }>; +}): undefined | { providerOptions?: Record } { + // Search backwards through steps to find the most recent container ID + for (let i = steps.length - 1; i >= 0; i--) { + const containerId = ( + steps[i].providerMetadata?.anthropic as + | AnthropicMessageMetadata + | undefined + )?.container?.id; + + if (containerId) { + return { + providerOptions: { + anthropic: { + container: { id: containerId }, + }, + }, + }; + } + } + + return undefined; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/get-cache-control.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/get-cache-control.ts new file mode 100644 index 000000000..2c3018d83 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/get-cache-control.ts @@ -0,0 +1,63 @@ +import { SharedV3Warning, SharedV3ProviderMetadata } from '@ai-sdk/provider'; +import { AnthropicCacheControl } from './anthropic-messages-api'; + +// Anthropic allows a maximum of 4 cache breakpoints per request +const MAX_CACHE_BREAKPOINTS = 4; + +// Helper function to extract cache_control from provider metadata +// Allows both cacheControl and cache_control for flexibility +function getCacheControl( + providerMetadata: SharedV3ProviderMetadata | undefined, +): AnthropicCacheControl | undefined { + const anthropic = providerMetadata?.anthropic; + + // allow both cacheControl and cache_control: + const cacheControlValue = anthropic?.cacheControl ?? anthropic?.cache_control; + + // Pass through value assuming it is of the correct type. + // The Anthropic API will validate the value. + return cacheControlValue as AnthropicCacheControl | undefined; +} + +export class CacheControlValidator { + private breakpointCount = 0; + private warnings: SharedV3Warning[] = []; + + getCacheControl( + providerMetadata: SharedV3ProviderMetadata | undefined, + context: { type: string; canCache: boolean }, + ): AnthropicCacheControl | undefined { + const cacheControlValue = getCacheControl(providerMetadata); + + if (!cacheControlValue) { + return undefined; + } + + // Validate that cache_control is allowed in this context + if (!context.canCache) { + this.warnings.push({ + type: 'unsupported', + feature: 'cache_control on non-cacheable context', + details: `cache_control cannot be set on ${context.type}. It will be ignored.`, + }); + return undefined; + } + + // Validate cache breakpoint limit + this.breakpointCount++; + if (this.breakpointCount > MAX_CACHE_BREAKPOINTS) { + this.warnings.push({ + type: 'unsupported', + feature: 'cacheControl breakpoint limit', + details: `Maximum ${MAX_CACHE_BREAKPOINTS} cache breakpoints exceeded (found ${this.breakpointCount}). This breakpoint will be ignored.`, + }); + return undefined; + } + + return cacheControlValue; + } + + getWarnings(): SharedV3Warning[] { + return this.warnings; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/index.ts new file mode 100644 index 000000000..bb57c24a6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/index.ts @@ -0,0 +1,17 @@ +export type { + AnthropicMessageMetadata, + AnthropicUsageIteration, +} from './anthropic-message-metadata'; +export type { + AnthropicLanguageModelOptions, + /** @deprecated Use `AnthropicLanguageModelOptions` instead. */ + AnthropicLanguageModelOptions as AnthropicProviderOptions, +} from './anthropic-messages-options'; +export type { AnthropicToolOptions } from './anthropic-prepare-tools'; +export { anthropic, createAnthropic } from './anthropic-provider'; +export type { + AnthropicProvider, + AnthropicProviderSettings, +} from './anthropic-provider'; +export { forwardAnthropicContainerIdFromLastStep } from './forward-anthropic-container-id-from-last-step'; +export { VERSION } from './version'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/internal/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/internal/index.ts new file mode 100644 index 000000000..42804b235 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/internal/index.ts @@ -0,0 +1,4 @@ +export { AnthropicMessagesLanguageModel } from '../anthropic-messages-language-model'; +export { anthropicTools } from '../anthropic-tools'; +export type { AnthropicMessagesModelId } from '../anthropic-messages-options'; +export { prepareTools } from '../anthropic-prepare-tools'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/map-anthropic-stop-reason.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/map-anthropic-stop-reason.ts new file mode 100644 index 000000000..990690413 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/map-anthropic-stop-reason.ts @@ -0,0 +1,30 @@ +import { LanguageModelV3FinishReason } from '@ai-sdk/provider'; + +/** + * @see https://docs.anthropic.com/en/api/messages#response-stop-reason + */ +export function mapAnthropicStopReason({ + finishReason, + isJsonResponseFromTool, +}: { + finishReason: string | null | undefined; + isJsonResponseFromTool?: boolean; +}): LanguageModelV3FinishReason['unified'] { + switch (finishReason) { + case 'pause_turn': + case 'end_turn': + case 'stop_sequence': + return 'stop'; + case 'refusal': + return 'content-filter'; + case 'tool_use': + return isJsonResponseFromTool ? 'stop' : 'tool-calls'; + case 'max_tokens': + case 'model_context_window_exceeded': + return 'length'; + case 'compaction': + return 'other'; + default: + return 'other'; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/bash_20241022.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/bash_20241022.ts new file mode 100644 index 000000000..74c0fd61f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/bash_20241022.ts @@ -0,0 +1,33 @@ +import { + createProviderToolFactory, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +const bash_20241022InputSchema = lazySchema(() => + zodSchema( + z.object({ + command: z.string(), + restart: z.boolean().optional(), + }), + ), +); + +export const bash_20241022 = createProviderToolFactory< + { + /** + * The bash command to run. Required unless the tool is being restarted. + */ + command: string; + + /** + * Specifying true will restart this tool. Otherwise, leave this unspecified. + */ + restart?: boolean; + }, + {} +>({ + id: 'anthropic.bash_20241022', + inputSchema: bash_20241022InputSchema, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/bash_20250124.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/bash_20250124.ts new file mode 100644 index 000000000..901d6ff50 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/bash_20250124.ts @@ -0,0 +1,33 @@ +import { + createProviderToolFactory, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +const bash_20250124InputSchema = lazySchema(() => + zodSchema( + z.object({ + command: z.string(), + restart: z.boolean().optional(), + }), + ), +); + +export const bash_20250124 = createProviderToolFactory< + { + /** + * The bash command to run. Required unless the tool is being restarted. + */ + command: string; + + /** + * Specifying true will restart this tool. Otherwise, leave this unspecified. + */ + restart?: boolean; + }, + {} +>({ + id: 'anthropic.bash_20250124', + inputSchema: bash_20250124InputSchema, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20250522.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20250522.ts new file mode 100644 index 000000000..5d92aef0c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20250522.ts @@ -0,0 +1,61 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const codeExecution_20250522OutputSchema = lazySchema(() => + zodSchema( + z.object({ + type: z.literal('code_execution_result'), + stdout: z.string(), + stderr: z.string(), + return_code: z.number(), + content: z + .array( + z.object({ + type: z.literal('code_execution_output'), + file_id: z.string(), + }), + ) + .optional() + .default([]), + }), + ), +); + +const codeExecution_20250522InputSchema = lazySchema(() => + zodSchema( + z.object({ + code: z.string(), + }), + ), +); + +const factory = createProviderToolFactoryWithOutputSchema< + { + /** + * The Python code to execute. + */ + code: string; + }, + { + type: 'code_execution_result'; + stdout: string; + stderr: string; + return_code: number; + content: Array<{ type: 'code_execution_output'; file_id: string }>; + }, + {} +>({ + id: 'anthropic.code_execution_20250522', + inputSchema: codeExecution_20250522InputSchema, + outputSchema: codeExecution_20250522OutputSchema, +}); + +export const codeExecution_20250522 = ( + args: Parameters[0] = {}, +) => { + return factory(args); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20250825.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20250825.ts new file mode 100644 index 000000000..30a21e73c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20250825.ts @@ -0,0 +1,281 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const codeExecution_20250825OutputSchema = lazySchema(() => + zodSchema( + z.discriminatedUnion('type', [ + z.object({ + type: z.literal('code_execution_result'), + stdout: z.string(), + stderr: z.string(), + return_code: z.number(), + content: z + .array( + z.object({ + type: z.literal('code_execution_output'), + file_id: z.string(), + }), + ) + .optional() + .default([]), + }), + z.object({ + type: z.literal('bash_code_execution_result'), + content: z.array( + z.object({ + type: z.literal('bash_code_execution_output'), + file_id: z.string(), + }), + ), + stdout: z.string(), + stderr: z.string(), + return_code: z.number(), + }), + z.object({ + type: z.literal('bash_code_execution_tool_result_error'), + error_code: z.string(), + }), + z.object({ + type: z.literal('text_editor_code_execution_tool_result_error'), + error_code: z.string(), + }), + z.object({ + type: z.literal('text_editor_code_execution_view_result'), + content: z.string(), + file_type: z.string(), + num_lines: z.number().nullable(), + start_line: z.number().nullable(), + total_lines: z.number().nullable(), + }), + z.object({ + type: z.literal('text_editor_code_execution_create_result'), + is_file_update: z.boolean(), + }), + z.object({ + type: z.literal('text_editor_code_execution_str_replace_result'), + lines: z.array(z.string()).nullable(), + new_lines: z.number().nullable(), + new_start: z.number().nullable(), + old_lines: z.number().nullable(), + old_start: z.number().nullable(), + }), + ]), + ), +); + +export const codeExecution_20250825InputSchema = lazySchema(() => + zodSchema( + z.discriminatedUnion('type', [ + // Programmatic tool calling format (mapped from { code } by AI SDK) + z.object({ + type: z.literal('programmatic-tool-call'), + code: z.string(), + }), + z.object({ + type: z.literal('bash_code_execution'), + command: z.string(), + }), + z.discriminatedUnion('command', [ + z.object({ + type: z.literal('text_editor_code_execution'), + command: z.literal('view'), + path: z.string(), + }), + z.object({ + type: z.literal('text_editor_code_execution'), + command: z.literal('create'), + path: z.string(), + file_text: z.string().nullish(), + }), + z.object({ + type: z.literal('text_editor_code_execution'), + command: z.literal('str_replace'), + path: z.string(), + old_str: z.string(), + new_str: z.string(), + }), + ]), + ]), + ), +); + +const factory = createProviderToolFactoryWithOutputSchema< + | { + type: 'programmatic-tool-call'; + /** + * Programmatic tool calling: Python code to execute when code_execution + * is used with allowedCallers to trigger client-executed tools. + */ + code: string; + } + | { + type: 'bash_code_execution'; + + /** + * Shell command to execute. + */ + command: string; + } + | { + type: 'text_editor_code_execution'; + command: 'view'; + + /** + * The path to the file to view. + */ + path: string; + } + | { + type: 'text_editor_code_execution'; + command: 'create'; + + /** + * The path to the file to edit. + */ + path: string; + + /** + * The text of the file to edit. + */ + file_text?: string | null; + } + | { + type: 'text_editor_code_execution'; + command: 'str_replace'; + + /** + * The path to the file to edit. + */ + path: string; + + /** + * The string to replace. + */ + old_str: string; + + /** + * The new string to replace the old string with. + */ + new_str: string; + }, + | { + /** + * Programmatic tool calling result: returned when code_execution runs code + * that calls client-executed tools via allowedCallers. + */ + type: 'code_execution_result'; + + /** + * Output from successful execution + */ + stdout: string; + + /** + * Error messages if execution fails + */ + stderr: string; + + /** + * 0 for success, non-zero for failure + */ + return_code: number; + + /** + * Output file Id list + */ + content: Array<{ type: 'code_execution_output'; file_id: string }>; + } + | { + type: 'bash_code_execution_result'; + + /** + * Output file Id list + */ + content: Array<{ + type: 'bash_code_execution_output'; + file_id: string; + }>; + + /** + * Output from successful execution + */ + stdout: string; + + /** + * Error messages if execution fails + */ + stderr: string; + + /** + * 0 for success, non-zero for failure + */ + return_code: number; + } + | { + type: 'bash_code_execution_tool_result_error'; + + /** + * Available options: invalid_tool_input, unavailable, too_many_requests, + * execution_time_exceeded, output_file_too_large. + */ + error_code: string; + } + | { + type: 'text_editor_code_execution_tool_result_error'; + + /** + * Available options: invalid_tool_input, unavailable, too_many_requests, + * execution_time_exceeded, file_not_found. + */ + error_code: string; + } + | { + type: 'text_editor_code_execution_view_result'; + + content: string; + + /** + * The type of the file. Available options: text, image, pdf. + */ + file_type: string; + + num_lines: number | null; + start_line: number | null; + total_lines: number | null; + } + | { + type: 'text_editor_code_execution_create_result'; + + is_file_update: boolean; + } + | { + type: 'text_editor_code_execution_str_replace_result'; + + lines: string[] | null; + new_lines: number | null; + new_start: number | null; + old_lines: number | null; + old_start: number | null; + }, + { + // no arguments + } +>({ + id: 'anthropic.code_execution_20250825', + inputSchema: codeExecution_20250825InputSchema, + outputSchema: codeExecution_20250825OutputSchema, + // Programmatic tool calling: tool results may be deferred to a later turn + // when code execution triggers a client-executed tool that needs to be + // resolved before the code execution result can be returned. + supportsDeferredResults: true, +}); + +export const codeExecution_20250825 = ( + args: Parameters[0] = {}, +) => { + return factory(args); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20260120.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20260120.ts new file mode 100644 index 000000000..cfa2e32fa --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20260120.ts @@ -0,0 +1,315 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const codeExecution_20260120OutputSchema = lazySchema(() => + zodSchema( + z.discriminatedUnion('type', [ + z.object({ + type: z.literal('code_execution_result'), + stdout: z.string(), + stderr: z.string(), + return_code: z.number(), + content: z + .array( + z.object({ + type: z.literal('code_execution_output'), + file_id: z.string(), + }), + ) + .optional() + .default([]), + }), + z.object({ + type: z.literal('encrypted_code_execution_result'), + encrypted_stdout: z.string(), + stderr: z.string(), + return_code: z.number(), + content: z + .array( + z.object({ + type: z.literal('code_execution_output'), + file_id: z.string(), + }), + ) + .optional() + .default([]), + }), + z.object({ + type: z.literal('bash_code_execution_result'), + content: z.array( + z.object({ + type: z.literal('bash_code_execution_output'), + file_id: z.string(), + }), + ), + stdout: z.string(), + stderr: z.string(), + return_code: z.number(), + }), + z.object({ + type: z.literal('bash_code_execution_tool_result_error'), + error_code: z.string(), + }), + z.object({ + type: z.literal('text_editor_code_execution_tool_result_error'), + error_code: z.string(), + }), + z.object({ + type: z.literal('text_editor_code_execution_view_result'), + content: z.string(), + file_type: z.string(), + num_lines: z.number().nullable(), + start_line: z.number().nullable(), + total_lines: z.number().nullable(), + }), + z.object({ + type: z.literal('text_editor_code_execution_create_result'), + is_file_update: z.boolean(), + }), + z.object({ + type: z.literal('text_editor_code_execution_str_replace_result'), + lines: z.array(z.string()).nullable(), + new_lines: z.number().nullable(), + new_start: z.number().nullable(), + old_lines: z.number().nullable(), + old_start: z.number().nullable(), + }), + ]), + ), +); + +export const codeExecution_20260120InputSchema = lazySchema(() => + zodSchema( + z.discriminatedUnion('type', [ + z.object({ + type: z.literal('programmatic-tool-call'), + code: z.string(), + }), + z.object({ + type: z.literal('bash_code_execution'), + command: z.string(), + }), + z.discriminatedUnion('command', [ + z.object({ + type: z.literal('text_editor_code_execution'), + command: z.literal('view'), + path: z.string(), + }), + z.object({ + type: z.literal('text_editor_code_execution'), + command: z.literal('create'), + path: z.string(), + file_text: z.string().nullish(), + }), + z.object({ + type: z.literal('text_editor_code_execution'), + command: z.literal('str_replace'), + path: z.string(), + old_str: z.string(), + new_str: z.string(), + }), + ]), + ]), + ), +); + +const factory = createProviderToolFactoryWithOutputSchema< + | { + type: 'programmatic-tool-call'; + /** + * Programmatic tool calling: Python code to execute when code_execution + * is used with allowedCallers to trigger client-executed tools. + */ + code: string; + } + | { + type: 'bash_code_execution'; + + /** + * Shell command to execute. + */ + command: string; + } + | { + type: 'text_editor_code_execution'; + command: 'view'; + + /** + * The path to the file to view. + */ + path: string; + } + | { + type: 'text_editor_code_execution'; + command: 'create'; + + /** + * The path to the file to edit. + */ + path: string; + + /** + * The text of the file to edit. + */ + file_text?: string | null; + } + | { + type: 'text_editor_code_execution'; + command: 'str_replace'; + + /** + * The path to the file to edit. + */ + path: string; + + /** + * The string to replace. + */ + old_str: string; + + /** + * The new string to replace the old string with. + */ + new_str: string; + }, + | { + /** + * Programmatic tool calling result: returned when code_execution runs code + * that calls client-executed tools via allowedCallers. + */ + type: 'code_execution_result'; + + /** + * Output from successful execution + */ + stdout: string; + + /** + * Error messages if execution fails + */ + stderr: string; + + /** + * 0 for success, non-zero for failure + */ + return_code: number; + + /** + * Output file Id list + */ + content: Array<{ type: 'code_execution_output'; file_id: string }>; + } + | { + type: 'encrypted_code_execution_result'; + + /** + * Encrypted output from successful execution + */ + encrypted_stdout: string; + + /** + * Error messages if execution fails + */ + stderr: string; + + /** + * 0 for success, non-zero for failure + */ + return_code: number; + + /** + * Output file Id list + */ + content: Array<{ type: 'code_execution_output'; file_id: string }>; + } + | { + type: 'bash_code_execution_result'; + + /** + * Output file Id list + */ + content: Array<{ + type: 'bash_code_execution_output'; + file_id: string; + }>; + + /** + * Output from successful execution + */ + stdout: string; + + /** + * Error messages if execution fails + */ + stderr: string; + + /** + * 0 for success, non-zero for failure + */ + return_code: number; + } + | { + type: 'bash_code_execution_tool_result_error'; + + /** + * Available options: invalid_tool_input, unavailable, too_many_requests, + * execution_time_exceeded, output_file_too_large. + */ + error_code: string; + } + | { + type: 'text_editor_code_execution_tool_result_error'; + + /** + * Available options: invalid_tool_input, unavailable, too_many_requests, + * execution_time_exceeded, file_not_found. + */ + error_code: string; + } + | { + type: 'text_editor_code_execution_view_result'; + + content: string; + + /** + * The type of the file. Available options: text, image, pdf. + */ + file_type: string; + + num_lines: number | null; + start_line: number | null; + total_lines: number | null; + } + | { + type: 'text_editor_code_execution_create_result'; + + is_file_update: boolean; + } + | { + type: 'text_editor_code_execution_str_replace_result'; + + lines: string[] | null; + new_lines: number | null; + new_start: number | null; + old_lines: number | null; + old_start: number | null; + }, + { + // no arguments + } +>({ + id: 'anthropic.code_execution_20260120', + inputSchema: codeExecution_20260120InputSchema, + outputSchema: codeExecution_20260120OutputSchema, + supportsDeferredResults: true, +}); + +export const codeExecution_20260120 = ( + args: Parameters[0] = {}, +) => { + return factory(args); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/computer_20241022.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/computer_20241022.ts new file mode 100644 index 000000000..de7b99f69 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/computer_20241022.ts @@ -0,0 +1,87 @@ +import { + createProviderToolFactory, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +const computer_20241022InputSchema = lazySchema(() => + zodSchema( + z.object({ + action: z.enum([ + 'key', + 'type', + 'mouse_move', + 'left_click', + 'left_click_drag', + 'right_click', + 'middle_click', + 'double_click', + 'screenshot', + 'cursor_position', + ]), + coordinate: z.array(z.number().int()).optional(), + text: z.string().optional(), + }), + ), +); + +export const computer_20241022 = createProviderToolFactory< + { + /** + * The action to perform. The available actions are: + * - `key`: Press a key or key-combination on the keyboard. + * - This supports xdotool's `key` syntax. + * - Examples: "a", "Return", "alt+Tab", "ctrl+s", "Up", "KP_0" (for the numpad 0 key). + * - `type`: Type a string of text on the keyboard. + * - `cursor_position`: Get the current (x, y) pixel coordinate of the cursor on the screen. + * - `mouse_move`: Move the cursor to a specified (x, y) pixel coordinate on the screen. + * - `left_click`: Click the left mouse button. + * - `left_click_drag`: Click and drag the cursor to a specified (x, y) pixel coordinate on the screen. + * - `right_click`: Click the right mouse button. + * - `middle_click`: Click the middle mouse button. + * - `double_click`: Double-click the left mouse button. + * - `screenshot`: Take a screenshot of the screen. + */ + action: + | 'key' + | 'type' + | 'mouse_move' + | 'left_click' + | 'left_click_drag' + | 'right_click' + | 'middle_click' + | 'double_click' + | 'screenshot' + | 'cursor_position'; + + /** + * (x, y): The x (pixels from the left edge) and y (pixels from the top edge) coordinates to move the mouse to. Required only by `action=mouse_move` and `action=left_click_drag`. + */ + coordinate?: number[]; + + /** + * Required only by `action=type` and `action=key`. + */ + text?: string; + }, + { + /** + * The width of the display being controlled by the model in pixels. + */ + displayWidthPx: number; + + /** + * The height of the display being controlled by the model in pixels. + */ + displayHeightPx: number; + + /** + * The display number to control (only relevant for X11 environments). If specified, the tool will be provided a display number in the tool definition. + */ + displayNumber?: number; + } +>({ + id: 'anthropic.computer_20241022', + inputSchema: computer_20241022InputSchema, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/computer_20250124.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/computer_20250124.ts new file mode 100644 index 000000000..2a111d231 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/computer_20250124.ts @@ -0,0 +1,130 @@ +import { + createProviderToolFactory, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +const computer_20250124InputSchema = lazySchema(() => + zodSchema( + z.object({ + action: z.enum([ + 'key', + 'hold_key', + 'type', + 'cursor_position', + 'mouse_move', + 'left_mouse_down', + 'left_mouse_up', + 'left_click', + 'left_click_drag', + 'right_click', + 'middle_click', + 'double_click', + 'triple_click', + 'scroll', + 'wait', + 'screenshot', + ]), + coordinate: z.tuple([z.number().int(), z.number().int()]).optional(), + duration: z.number().optional(), + scroll_amount: z.number().optional(), + scroll_direction: z.enum(['up', 'down', 'left', 'right']).optional(), + start_coordinate: z + .tuple([z.number().int(), z.number().int()]) + .optional(), + text: z.string().optional(), + }), + ), +); + +export const computer_20250124 = createProviderToolFactory< + { + /** + * - `key`: Press a key or key-combination on the keyboard. + * - This supports xdotool's `key` syntax. + * - Examples: "a", "Return", "alt+Tab", "ctrl+s", "Up", "KP_0" (for the numpad 0 key). + * - `hold_key`: Hold down a key or multiple keys for a specified duration (in seconds). Supports the same syntax as `key`. + * - `type`: Type a string of text on the keyboard. + * - `cursor_position`: Get the current (x, y) pixel coordinate of the cursor on the screen. + * - `mouse_move`: Move the cursor to a specified (x, y) pixel coordinate on the screen. + * - `left_mouse_down`: Press the left mouse button. + * - `left_mouse_up`: Release the left mouse button. + * - `left_click`: Click the left mouse button at the specified (x, y) pixel coordinate on the screen. You can also include a key combination to hold down while clicking using the `text` parameter. + * - `left_click_drag`: Click and drag the cursor from `start_coordinate` to a specified (x, y) pixel coordinate on the screen. + * - `right_click`: Click the right mouse button at the specified (x, y) pixel coordinate on the screen. + * - `middle_click`: Click the middle mouse button at the specified (x, y) pixel coordinate on the screen. + * - `double_click`: Double-click the left mouse button at the specified (x, y) pixel coordinate on the screen. + * - `triple_click`: Triple-click the left mouse button at the specified (x, y) pixel coordinate on the screen. + * - `scroll`: Scroll the screen in a specified direction by a specified amount of clicks of the scroll wheel, at the specified (x, y) pixel coordinate. DO NOT use PageUp/PageDown to scroll. + * - `wait`: Wait for a specified duration (in seconds). + * - `screenshot`: Take a screenshot of the screen. + */ + action: + | 'key' + | 'hold_key' + | 'type' + | 'cursor_position' + | 'mouse_move' + | 'left_mouse_down' + | 'left_mouse_up' + | 'left_click' + | 'left_click_drag' + | 'right_click' + | 'middle_click' + | 'double_click' + | 'triple_click' + | 'scroll' + | 'wait' + | 'screenshot'; + + /** + * (x, y): The x (pixels from the left edge) and y (pixels from the top edge) coordinates to move the mouse to. Required only by `action=mouse_move` and `action=left_click_drag`. + */ + coordinate?: [number, number]; + + /** + * The duration to hold the key down for. Required only by `action=hold_key` and `action=wait`. + */ + duration?: number; + + /** + * The number of 'clicks' to scroll. Required only by `action=scroll`. + */ + scroll_amount?: number; + + /** + * The direction to scroll the screen. Required only by `action=scroll`. + */ + scroll_direction?: 'up' | 'down' | 'left' | 'right'; + + /** + * (x, y): The x (pixels from the left edge) and y (pixels from the top edge) coordinates to start the drag from. Required only by `action=left_click_drag`. + */ + start_coordinate?: [number, number]; + + /** + * Required only by `action=type`, `action=key`, and `action=hold_key`. Can also be used by click or scroll actions to hold down keys while clicking or scrolling. + */ + text?: string; + }, + { + /** + * The width of the display being controlled by the model in pixels. + */ + displayWidthPx: number; + + /** + * The height of the display being controlled by the model in pixels. + */ + displayHeightPx: number; + + /** + * The display number to control (only relevant for X11 environments). If specified, the tool will be provided a display number in the tool definition. + */ + displayNumber?: number; + } +>({ + id: 'anthropic.computer_20250124', + inputSchema: computer_20250124InputSchema, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/computer_20251124.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/computer_20251124.ts new file mode 100644 index 000000000..9c7b397f8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/computer_20251124.ts @@ -0,0 +1,151 @@ +import { + createProviderToolFactory, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +const computer_20251124InputSchema = lazySchema(() => + zodSchema( + z.object({ + action: z.enum([ + 'key', + 'hold_key', + 'type', + 'cursor_position', + 'mouse_move', + 'left_mouse_down', + 'left_mouse_up', + 'left_click', + 'left_click_drag', + 'right_click', + 'middle_click', + 'double_click', + 'triple_click', + 'scroll', + 'wait', + 'screenshot', + 'zoom', + ]), + coordinate: z.tuple([z.number().int(), z.number().int()]).optional(), + duration: z.number().optional(), + region: z + .tuple([ + z.number().int(), + z.number().int(), + z.number().int(), + z.number().int(), + ]) + .optional(), + scroll_amount: z.number().optional(), + scroll_direction: z.enum(['up', 'down', 'left', 'right']).optional(), + start_coordinate: z + .tuple([z.number().int(), z.number().int()]) + .optional(), + text: z.string().optional(), + }), + ), +); + +export const computer_20251124 = createProviderToolFactory< + { + /** + * - `key`: Press a key or key-combination on the keyboard. + * - This supports xdotool's `key` syntax. + * - Examples: "a", "Return", "alt+Tab", "ctrl+s", "Up", "KP_0" (for the numpad 0 key). + * - `hold_key`: Hold down a key or multiple keys for a specified duration (in seconds). Supports the same syntax as `key`. + * - `type`: Type a string of text on the keyboard. + * - `cursor_position`: Get the current (x, y) pixel coordinate of the cursor on the screen. + * - `mouse_move`: Move the cursor to a specified (x, y) pixel coordinate on the screen. + * - `left_mouse_down`: Press the left mouse button. + * - `left_mouse_up`: Release the left mouse button. + * - `left_click`: Click the left mouse button at the specified (x, y) pixel coordinate on the screen. You can also include a key combination to hold down while clicking using the `text` parameter. + * - `left_click_drag`: Click and drag the cursor from `start_coordinate` to a specified (x, y) pixel coordinate on the screen. + * - `right_click`: Click the right mouse button at the specified (x, y) pixel coordinate on the screen. + * - `middle_click`: Click the middle mouse button at the specified (x, y) pixel coordinate on the screen. + * - `double_click`: Double-click the left mouse button at the specified (x, y) pixel coordinate on the screen. + * - `triple_click`: Triple-click the left mouse button at the specified (x, y) pixel coordinate on the screen. + * - `scroll`: Scroll the screen in a specified direction by a specified amount of clicks of the scroll wheel, at the specified (x, y) pixel coordinate. DO NOT use PageUp/PageDown to scroll. + * - `wait`: Wait for a specified duration (in seconds). + * - `screenshot`: Take a screenshot of the screen. + * - `zoom`: View a specific region of the screen at full resolution. Requires `enableZoom: true` in tool definition. Takes a `region` parameter with coordinates `[x1, y1, x2, y2]` defining top-left and bottom-right corners of the area to inspect. + */ + action: + | 'key' + | 'hold_key' + | 'type' + | 'cursor_position' + | 'mouse_move' + | 'left_mouse_down' + | 'left_mouse_up' + | 'left_click' + | 'left_click_drag' + | 'right_click' + | 'middle_click' + | 'double_click' + | 'triple_click' + | 'scroll' + | 'wait' + | 'screenshot' + | 'zoom'; + + /** + * (x, y): The x (pixels from the left edge) and y (pixels from the top edge) coordinates to move the mouse to. Required only by `action=mouse_move` and `action=left_click_drag`. + */ + coordinate?: [number, number]; + + /** + * The duration to hold the key down for. Required only by `action=hold_key` and `action=wait`. + */ + duration?: number; + + /** + * [x1, y1, x2, y2]: The coordinates defining the region to zoom into. x1, y1 is the top-left corner and x2, y2 is the bottom-right corner. Required only by `action=zoom`. + */ + region?: [number, number, number, number]; + + /** + * The number of 'clicks' to scroll. Required only by `action=scroll`. + */ + scroll_amount?: number; + + /** + * The direction to scroll the screen. Required only by `action=scroll`. + */ + scroll_direction?: 'up' | 'down' | 'left' | 'right'; + + /** + * (x, y): The x (pixels from the left edge) and y (pixels from the top edge) coordinates to start the drag from. Required only by `action=left_click_drag`. + */ + start_coordinate?: [number, number]; + + /** + * Required only by `action=type`, `action=key`, and `action=hold_key`. Can also be used by click or scroll actions to hold down keys while clicking or scrolling. + */ + text?: string; + }, + { + /** + * The width of the display being controlled by the model in pixels. + */ + displayWidthPx: number; + + /** + * The height of the display being controlled by the model in pixels. + */ + displayHeightPx: number; + + /** + * The display number to control (only relevant for X11 environments). If specified, the tool will be provided a display number in the tool definition. + */ + displayNumber?: number; + + /** + * Enable zoom action. Set to true to allow Claude to zoom into specific screen regions. Default: false. + */ + enableZoom?: boolean; + } +>({ + id: 'anthropic.computer_20251124', + inputSchema: computer_20251124InputSchema, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/memory_20250818.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/memory_20250818.ts new file mode 100644 index 000000000..f4a103028 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/memory_20250818.ts @@ -0,0 +1,62 @@ +import { + createProviderToolFactory, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +const memory_20250818InputSchema = lazySchema(() => + zodSchema( + z.discriminatedUnion('command', [ + z.object({ + command: z.literal('view'), + path: z.string(), + view_range: z.tuple([z.number(), z.number()]).optional(), + }), + z.object({ + command: z.literal('create'), + path: z.string(), + file_text: z.string(), + }), + z.object({ + command: z.literal('str_replace'), + path: z.string(), + old_str: z.string(), + new_str: z.string(), + }), + z.object({ + command: z.literal('insert'), + path: z.string(), + insert_line: z.number(), + insert_text: z.string(), + }), + z.object({ + command: z.literal('delete'), + path: z.string(), + }), + z.object({ + command: z.literal('rename'), + old_path: z.string(), + new_path: z.string(), + }), + ]), + ), +); + +export const memory_20250818 = createProviderToolFactory< + | { command: 'view'; path: string; view_range?: [number, number] } + | { command: 'create'; path: string; file_text: string } + | { command: 'str_replace'; path: string; old_str: string; new_str: string } + | { + command: 'insert'; + path: string; + insert_line: number; + insert_text: string; + } + | { command: 'delete'; path: string } + | { command: 'rename'; old_path: string; new_path: string }, + {} +>({ + id: 'anthropic.memory_20250818', + inputSchema: memory_20250818InputSchema, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20241022.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20241022.ts new file mode 100644 index 000000000..7263d7673 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20241022.ts @@ -0,0 +1,69 @@ +import { + createProviderToolFactory, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +const textEditor_20241022InputSchema = lazySchema(() => + zodSchema( + z.object({ + command: z.enum(['view', 'create', 'str_replace', 'insert', 'undo_edit']), + path: z.string(), + file_text: z.string().optional(), + insert_line: z.number().int().optional(), + new_str: z.string().optional(), + insert_text: z.string().optional(), + old_str: z.string().optional(), + view_range: z.array(z.number().int()).optional(), + }), + ), +); + +export const textEditor_20241022 = createProviderToolFactory< + { + /** + * The commands to run. Allowed options are: `view`, `create`, `str_replace`, `insert`, `undo_edit`. + */ + command: 'view' | 'create' | 'str_replace' | 'insert' | 'undo_edit'; + + /** + * Absolute path to file or directory, e.g. `/repo/file.py` or `/repo`. + */ + path: string; + + /** + * Required parameter of `create` command, with the content of the file to be created. + */ + file_text?: string; + + /** + * Required parameter of `insert` command. The `new_str` will be inserted AFTER the line `insert_line` of `path`. + */ + insert_line?: number; + + /** + * Optional parameter of `str_replace` command containing the new string (if not given, no string will be added). + */ + new_str?: string; + + /** + * Required parameter of `insert` command containing the text to insert. + */ + insert_text?: string; + + /** + * Required parameter of `str_replace` command containing the string in `path` to replace. + */ + old_str?: string; + + /** + * Optional parameter of `view` command when `path` points to a file. If none is given, the full file is shown. If provided, the file will be shown in the indicated line number range, e.g. [11, 12] will show lines 11 and 12. Indexing at 1 to start. Setting `[start_line, -1]` shows all lines from `start_line` to the end of the file. + */ + view_range?: number[]; + }, + {} +>({ + id: 'anthropic.text_editor_20241022', + inputSchema: textEditor_20241022InputSchema, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250124.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250124.ts new file mode 100644 index 000000000..9dfb9dbfd --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250124.ts @@ -0,0 +1,69 @@ +import { + createProviderToolFactory, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +const textEditor_20250124InputSchema = lazySchema(() => + zodSchema( + z.object({ + command: z.enum(['view', 'create', 'str_replace', 'insert', 'undo_edit']), + path: z.string(), + file_text: z.string().optional(), + insert_line: z.number().int().optional(), + new_str: z.string().optional(), + insert_text: z.string().optional(), + old_str: z.string().optional(), + view_range: z.array(z.number().int()).optional(), + }), + ), +); + +export const textEditor_20250124 = createProviderToolFactory< + { + /** + * The commands to run. Allowed options are: `view`, `create`, `str_replace`, `insert`, `undo_edit`. + */ + command: 'view' | 'create' | 'str_replace' | 'insert' | 'undo_edit'; + + /** + * Absolute path to file or directory, e.g. `/repo/file.py` or `/repo`. + */ + path: string; + + /** + * Required parameter of `create` command, with the content of the file to be created. + */ + file_text?: string; + + /** + * Required parameter of `insert` command. The `new_str` will be inserted AFTER the line `insert_line` of `path`. + */ + insert_line?: number; + + /** + * Optional parameter of `str_replace` command containing the new string (if not given, no string will be added). + */ + new_str?: string; + + /** + * Required parameter of `insert` command containing the text to insert. + */ + insert_text?: string; + + /** + * Required parameter of `str_replace` command containing the string in `path` to replace. + */ + old_str?: string; + + /** + * Optional parameter of `view` command when `path` points to a file. If none is given, the full file is shown. If provided, the file will be shown in the indicated line number range, e.g. [11, 12] will show lines 11 and 12. Indexing at 1 to start. Setting `[start_line, -1]` shows all lines from `start_line` to the end of the file. + */ + view_range?: number[]; + }, + {} +>({ + id: 'anthropic.text_editor_20250124', + inputSchema: textEditor_20250124InputSchema, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250429.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250429.ts new file mode 100644 index 000000000..86e468ea2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250429.ts @@ -0,0 +1,70 @@ +import { + createProviderToolFactory, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +const textEditor_20250429InputSchema = lazySchema(() => + zodSchema( + z.object({ + command: z.enum(['view', 'create', 'str_replace', 'insert']), + path: z.string(), + file_text: z.string().optional(), + insert_line: z.number().int().optional(), + new_str: z.string().optional(), + insert_text: z.string().optional(), + old_str: z.string().optional(), + view_range: z.array(z.number().int()).optional(), + }), + ), +); + +export const textEditor_20250429 = createProviderToolFactory< + { + /** + * The commands to run. Allowed options are: `view`, `create`, `str_replace`, `insert`. + * Note: `undo_edit` is not supported in Claude 4 models. + */ + command: 'view' | 'create' | 'str_replace' | 'insert'; + + /** + * Absolute path to file or directory, e.g. `/repo/file.py` or `/repo`. + */ + path: string; + + /** + * Required parameter of `create` command, with the content of the file to be created. + */ + file_text?: string; + + /** + * Required parameter of `insert` command. The `new_str` will be inserted AFTER the line `insert_line` of `path`. + */ + insert_line?: number; + + /** + * Optional parameter of `str_replace` command containing the new string (if not given, no string will be added). + */ + new_str?: string; + + /** + * Required parameter of `insert` command containing the text to insert. + */ + insert_text?: string; + + /** + * Required parameter of `str_replace` command containing the string in `path` to replace. + */ + old_str?: string; + + /** + * Optional parameter of `view` command when `path` points to a file. If none is given, the full file is shown. If provided, the file will be shown in the indicated line number range, e.g. [11, 12] will show lines 11 and 12. Indexing at 1 to start. Setting `[start_line, -1]` shows all lines from `start_line` to the end of the file. + */ + view_range?: number[]; + }, + {} +>({ + id: 'anthropic.text_editor_20250429', + inputSchema: textEditor_20250429InputSchema, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250728.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250728.ts new file mode 100644 index 000000000..10c820ec0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250728.ts @@ -0,0 +1,86 @@ +import { createProviderToolFactory } from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; +import { lazySchema, zodSchema } from '@ai-sdk/provider-utils'; + +export const textEditor_20250728ArgsSchema = lazySchema(() => + zodSchema( + z.object({ + maxCharacters: z.number().optional(), + }), + ), +); + +const textEditor_20250728InputSchema = lazySchema(() => + zodSchema( + z.object({ + command: z.enum(['view', 'create', 'str_replace', 'insert']), + path: z.string(), + file_text: z.string().optional(), + insert_line: z.number().int().optional(), + new_str: z.string().optional(), + insert_text: z.string().optional(), + old_str: z.string().optional(), + view_range: z.array(z.number().int()).optional(), + }), + ), +); + +const factory = createProviderToolFactory< + { + /** + * The commands to run. Allowed options are: `view`, `create`, `str_replace`, `insert`. + * Note: `undo_edit` is not supported in Claude 4 models. + */ + command: 'view' | 'create' | 'str_replace' | 'insert'; + + /** + * Absolute path to file or directory, e.g. `/repo/file.py` or `/repo`. + */ + path: string; + + /** + * Required parameter of `create` command, with the content of the file to be created. + */ + file_text?: string; + + /** + * Required parameter of `insert` command. The `new_str` will be inserted AFTER the line `insert_line` of `path`. + */ + insert_line?: number; + + /** + * Optional parameter of `str_replace` command containing the new string (if not given, no string will be added). + */ + new_str?: string; + + /** + * Required parameter of `insert` command containing the text to insert. + */ + insert_text?: string; + + /** + * Required parameter of `str_replace` command containing the string in `path` to replace. + */ + old_str?: string; + + /** + * Optional parameter of `view` command when `path` points to a file. If none is given, the full file is shown. If provided, the file will be shown in the indicated line number range, e.g. [11, 12] will show lines 11 and 12. Indexing at 1 to start. Setting `[start_line, -1]` shows all lines from `start_line` to the end of the file. + */ + view_range?: number[]; + }, + { + /** + * Optional parameter to control truncation when viewing large files. Only compatible with text_editor_20250728 and later versions. + */ + maxCharacters?: number; + } +>({ + id: 'anthropic.text_editor_20250728', + inputSchema: textEditor_20250728InputSchema, +}); + +export const textEditor_20250728 = ( + args: Parameters[0] = {}, // default +) => { + return factory(args); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/tool-search-bm25_20251119.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/tool-search-bm25_20251119.ts new file mode 100644 index 000000000..fa1a081c4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/tool-search-bm25_20251119.ts @@ -0,0 +1,99 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +/** + * Output schema for tool search results - returns tool references + * that are automatically expanded into full tool definitions by the API. + */ +export const toolSearchBm25_20251119OutputSchema = lazySchema(() => + zodSchema( + z.array( + z.object({ + type: z.literal('tool_reference'), + toolName: z.string(), + }), + ), + ), +); + +/** + * Input schema for BM25-based tool search. + * Claude uses natural language queries to search for tools. + */ +const toolSearchBm25_20251119InputSchema = lazySchema(() => + zodSchema( + z.object({ + /** + * A natural language query to search for tools. + * Claude will use BM25 text search to find relevant tools. + */ + query: z.string(), + /** + * Maximum number of tools to return. Optional. + */ + limit: z.number().optional(), + }), + ), +); + +const factory = createProviderToolFactoryWithOutputSchema< + { + /** + * A natural language query to search for tools. + * Claude will use BM25 text search to find relevant tools. + */ + query: string; + /** + * Maximum number of tools to return. Optional. + */ + limit?: number; + }, + Array<{ + type: 'tool_reference'; + /** + * The name of the discovered tool. + */ + toolName: string; + }>, + {} +>({ + id: 'anthropic.tool_search_bm25_20251119', + inputSchema: toolSearchBm25_20251119InputSchema, + outputSchema: toolSearchBm25_20251119OutputSchema, + supportsDeferredResults: true, +}); + +/** + * Creates a tool search tool that uses BM25 (natural language) to find tools. + * + * The tool search tool enables Claude to work with hundreds or thousands of tools + * by dynamically discovering and loading them on-demand. Instead of loading all + * tool definitions into the context window upfront, Claude searches your tool + * catalog and loads only the tools it needs. + * + * When Claude uses this tool, it uses natural language queries (NOT regex patterns) + * to search for tools using BM25 text search. + * + * **Important**: This tool should never have `deferLoading: true` in providerOptions. + * + * @example + * ```ts + * import { anthropicTools } from '@ai-sdk/anthropic'; + * + * const tools = { + * toolSearch: anthropicTools.toolSearchBm25_20251119(), + * // Other tools with deferLoading... + * }; + * ``` + * + * @see https://docs.anthropic.com/en/docs/agents-and-tools/tool-search-tool + */ +export const toolSearchBm25_20251119 = ( + args: Parameters[0] = {}, +) => { + return factory(args); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/tool-search-regex_20251119.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/tool-search-regex_20251119.ts new file mode 100644 index 000000000..dacda51c7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/tool-search-regex_20251119.ts @@ -0,0 +1,111 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +/** + * Output schema for tool search results - returns tool references + * that are automatically expanded into full tool definitions by the API. + */ +export const toolSearchRegex_20251119OutputSchema = lazySchema(() => + zodSchema( + z.array( + z.object({ + type: z.literal('tool_reference'), + toolName: z.string(), + }), + ), + ), +); + +/** + * Input schema for regex-based tool search. + * Claude constructs regex patterns using Python's re.search() syntax. + */ +const toolSearchRegex_20251119InputSchema = lazySchema(() => + zodSchema( + z.object({ + /** + * A regex pattern to search for tools. + * Uses Python re.search() syntax. Maximum 200 characters. + * + * Examples: + * - "weather" - matches tool names/descriptions containing "weather" + * - "get_.*_data" - matches tools like get_user_data, get_weather_data + * - "database.*query|query.*database" - OR patterns for flexibility + * - "(?i)slack" - case-insensitive search + */ + pattern: z.string(), + /** + * Maximum number of tools to return. Optional. + */ + limit: z.number().optional(), + }), + ), +); + +const factory = createProviderToolFactoryWithOutputSchema< + { + /** + * A regex pattern to search for tools. + * Uses Python re.search() syntax. Maximum 200 characters. + * + * Examples: + * - "weather" - matches tool names/descriptions containing "weather" + * - "get_.*_data" - matches tools like get_user_data, get_weather_data + * - "database.*query|query.*database" - OR patterns for flexibility + * - "(?i)slack" - case-insensitive search + */ + pattern: string; + /** + * Maximum number of tools to return. Optional. + */ + limit?: number; + }, + Array<{ + type: 'tool_reference'; + /** + * The name of the discovered tool. + */ + toolName: string; + }>, + {} +>({ + id: 'anthropic.tool_search_regex_20251119', + inputSchema: toolSearchRegex_20251119InputSchema, + outputSchema: toolSearchRegex_20251119OutputSchema, + supportsDeferredResults: true, +}); + +/** + * Creates a tool search tool that uses regex patterns to find tools. + * + * The tool search tool enables Claude to work with hundreds or thousands of tools + * by dynamically discovering and loading them on-demand. Instead of loading all + * tool definitions into the context window upfront, Claude searches your tool + * catalog and loads only the tools it needs. + * + * When Claude uses this tool, it constructs regex patterns using Python's + * re.search() syntax (NOT natural language queries). + * + * **Important**: This tool should never have `deferLoading: true` in providerOptions. + * + * @example + * ```ts + * import { anthropicTools } from '@ai-sdk/anthropic'; + * + * const tools = { + * toolSearch: anthropicTools.toolSearchRegex_20251119(), + * // Other tools with deferLoading... + * }; + * ``` + * + * @see https://docs.anthropic.com/en/docs/agents-and-tools/tool-search-tool + */ +export const toolSearchRegex_20251119 = ( + args: Parameters[0] = {}, +) => { + return factory(args); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-fetch-20250910.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-fetch-20250910.ts new file mode 100644 index 000000000..de8d33eed --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-fetch-20250910.ts @@ -0,0 +1,145 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const webFetch_20250910ArgsSchema = lazySchema(() => + zodSchema( + z.object({ + maxUses: z.number().optional(), + allowedDomains: z.array(z.string()).optional(), + blockedDomains: z.array(z.string()).optional(), + citations: z.object({ enabled: z.boolean() }).optional(), + maxContentTokens: z.number().optional(), + }), + ), +); + +export const webFetch_20250910OutputSchema = lazySchema(() => + zodSchema( + z.object({ + type: z.literal('web_fetch_result'), + url: z.string(), + content: z.object({ + type: z.literal('document'), + title: z.string().nullable(), + citations: z.object({ enabled: z.boolean() }).optional(), + source: z.union([ + z.object({ + type: z.literal('base64'), + mediaType: z.literal('application/pdf'), + data: z.string(), + }), + z.object({ + type: z.literal('text'), + mediaType: z.literal('text/plain'), + data: z.string(), + }), + ]), + }), + retrievedAt: z.string().nullable(), + }), + ), +); + +const webFetch_20250910InputSchema = lazySchema(() => + zodSchema( + z.object({ + url: z.string(), + }), + ), +); + +const factory = createProviderToolFactoryWithOutputSchema< + { + /** + * The URL to fetch. + */ + url: string; + }, + { + type: 'web_fetch_result'; + + /** + * Fetched content URL + */ + url: string; + + /** + * Fetched content. + */ + content: { + type: 'document'; + + /** + * Title of the document + */ + title: string | null; + + /** + * Citation configuration for the document + */ + citations?: { enabled: boolean }; + + source: + | { + type: 'base64'; + mediaType: 'application/pdf'; + data: string; + } + | { + type: 'text'; + mediaType: 'text/plain'; + data: string; + }; + }; + + /** + * ISO 8601 timestamp when the content was retrieved + */ + retrievedAt: string | null; + }, + { + /** + * The maxUses parameter limits the number of web fetches performed + */ + maxUses?: number; + + /** + * Only fetch from these domains + */ + allowedDomains?: string[]; + + /** + * Never fetch from these domains + */ + blockedDomains?: string[]; + + /** + * Unlike web search where citations are always enabled, citations are optional for + * web fetch. Set "citations": {"enabled": true} to enable Claude to cite specific passages + * from fetched documents. + */ + citations?: { + enabled: boolean; + }; + + /** + * The maxContentTokens parameter limits the amount of content that will be included in the context. + */ + maxContentTokens?: number; + } +>({ + id: 'anthropic.web_fetch_20250910', + inputSchema: webFetch_20250910InputSchema, + outputSchema: webFetch_20250910OutputSchema, + supportsDeferredResults: true, +}); + +export const webFetch_20250910 = ( + args: Parameters[0] = {}, // default +) => { + return factory(args); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-fetch-20260209.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-fetch-20260209.ts new file mode 100644 index 000000000..80a208653 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-fetch-20260209.ts @@ -0,0 +1,145 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const webFetch_20260209ArgsSchema = lazySchema(() => + zodSchema( + z.object({ + maxUses: z.number().optional(), + allowedDomains: z.array(z.string()).optional(), + blockedDomains: z.array(z.string()).optional(), + citations: z.object({ enabled: z.boolean() }).optional(), + maxContentTokens: z.number().optional(), + }), + ), +); + +export const webFetch_20260209OutputSchema = lazySchema(() => + zodSchema( + z.object({ + type: z.literal('web_fetch_result'), + url: z.string(), + content: z.object({ + type: z.literal('document'), + title: z.string().nullable(), + citations: z.object({ enabled: z.boolean() }).optional(), + source: z.union([ + z.object({ + type: z.literal('base64'), + mediaType: z.literal('application/pdf'), + data: z.string(), + }), + z.object({ + type: z.literal('text'), + mediaType: z.literal('text/plain'), + data: z.string(), + }), + ]), + }), + retrievedAt: z.string().nullable(), + }), + ), +); + +const webFetch_20260209InputSchema = lazySchema(() => + zodSchema( + z.object({ + url: z.string(), + }), + ), +); + +const factory = createProviderToolFactoryWithOutputSchema< + { + /** + * The URL to fetch. + */ + url: string; + }, + { + type: 'web_fetch_result'; + + /** + * Fetched content URL + */ + url: string; + + /** + * Fetched content. + */ + content: { + type: 'document'; + + /** + * Title of the document + */ + title: string | null; + + /** + * Citation configuration for the document + */ + citations?: { enabled: boolean }; + + source: + | { + type: 'base64'; + mediaType: 'application/pdf'; + data: string; + } + | { + type: 'text'; + mediaType: 'text/plain'; + data: string; + }; + }; + + /** + * ISO 8601 timestamp when the content was retrieved + */ + retrievedAt: string | null; + }, + { + /** + * The maxUses parameter limits the number of web fetches performed + */ + maxUses?: number; + + /** + * Only fetch from these domains + */ + allowedDomains?: string[]; + + /** + * Never fetch from these domains + */ + blockedDomains?: string[]; + + /** + * Unlike web search where citations are always enabled, citations are optional for + * web fetch. Set "citations": {"enabled": true} to enable Claude to cite specific passages + * from fetched documents. + */ + citations?: { + enabled: boolean; + }; + + /** + * The maxContentTokens parameter limits the amount of content that will be included in the context. + */ + maxContentTokens?: number; + } +>({ + id: 'anthropic.web_fetch_20260209', + inputSchema: webFetch_20260209InputSchema, + outputSchema: webFetch_20260209OutputSchema, + supportsDeferredResults: true, +}); + +export const webFetch_20260209 = ( + args: Parameters[0] = {}, // default +) => { + return factory(args); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-search_20250305.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-search_20250305.ts new file mode 100644 index 000000000..b83f764e9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-search_20250305.ts @@ -0,0 +1,136 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const webSearch_20250305ArgsSchema = lazySchema(() => + zodSchema( + z.object({ + maxUses: z.number().optional(), + allowedDomains: z.array(z.string()).optional(), + blockedDomains: z.array(z.string()).optional(), + userLocation: z + .object({ + type: z.literal('approximate'), + city: z.string().optional(), + region: z.string().optional(), + country: z.string().optional(), + timezone: z.string().optional(), + }) + .optional(), + }), + ), +); + +export const webSearch_20250305OutputSchema = lazySchema(() => + zodSchema( + z.array( + z.object({ + url: z.string(), + title: z.string().nullable(), + pageAge: z.string().nullable(), + encryptedContent: z.string(), + type: z.literal('web_search_result'), + }), + ), + ), +); + +const webSearch_20250305InputSchema = lazySchema(() => + zodSchema( + z.object({ + query: z.string(), + }), + ), +); + +const factory = createProviderToolFactoryWithOutputSchema< + { + /** + * The search query to execute. + */ + query: string; + }, + Array<{ + type: 'web_search_result'; + + /** + * The URL of the source page. + */ + url: string; + + /** + * The title of the source page. + */ + title: string | null; + + /** + * When the site was last updated + */ + pageAge: string | null; + + /** + * Encrypted content that must be passed back in multi-turn conversations for citations + */ + encryptedContent: string; + }>, + { + /** + * Maximum number of web searches Claude can perform during the conversation. + */ + maxUses?: number; + + /** + * Optional list of domains that Claude is allowed to search. + */ + allowedDomains?: string[]; + + /** + * Optional list of domains that Claude should avoid when searching. + */ + blockedDomains?: string[]; + + /** + * Optional user location information to provide geographically relevant search results. + */ + userLocation?: { + /** + * The type of location (must be approximate) + */ + type: 'approximate'; + + /** + * The city name + */ + city?: string; + + /** + * The region or state + */ + region?: string; + + /** + * The country + */ + country?: string; + + /** + * The IANA timezone ID. + */ + timezone?: string; + }; + } +>({ + id: 'anthropic.web_search_20250305', + inputSchema: webSearch_20250305InputSchema, + outputSchema: webSearch_20250305OutputSchema, + supportsDeferredResults: true, +}); + +export const webSearch_20250305 = ( + args: Parameters[0] = {}, // default +) => { + return factory(args); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-search_20260209.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-search_20260209.ts new file mode 100644 index 000000000..a34ae31ac --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/tool/web-search_20260209.ts @@ -0,0 +1,136 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const webSearch_20260209ArgsSchema = lazySchema(() => + zodSchema( + z.object({ + maxUses: z.number().optional(), + allowedDomains: z.array(z.string()).optional(), + blockedDomains: z.array(z.string()).optional(), + userLocation: z + .object({ + type: z.literal('approximate'), + city: z.string().optional(), + region: z.string().optional(), + country: z.string().optional(), + timezone: z.string().optional(), + }) + .optional(), + }), + ), +); + +export const webSearch_20260209OutputSchema = lazySchema(() => + zodSchema( + z.array( + z.object({ + url: z.string(), + title: z.string().nullable(), + pageAge: z.string().nullable(), + encryptedContent: z.string(), + type: z.literal('web_search_result'), + }), + ), + ), +); + +const webSearch_20260209InputSchema = lazySchema(() => + zodSchema( + z.object({ + query: z.string(), + }), + ), +); + +const factory = createProviderToolFactoryWithOutputSchema< + { + /** + * The search query to execute. + */ + query: string; + }, + Array<{ + type: 'web_search_result'; + + /** + * The URL of the source page. + */ + url: string; + + /** + * The title of the source page. + */ + title: string | null; + + /** + * When the site was last updated + */ + pageAge: string | null; + + /** + * Encrypted content that must be passed back in multi-turn conversations for citations + */ + encryptedContent: string; + }>, + { + /** + * Maximum number of web searches Claude can perform during the conversation. + */ + maxUses?: number; + + /** + * Optional list of domains that Claude is allowed to search. + */ + allowedDomains?: string[]; + + /** + * Optional list of domains that Claude should avoid when searching. + */ + blockedDomains?: string[]; + + /** + * Optional user location information to provide geographically relevant search results. + */ + userLocation?: { + /** + * The type of location (must be approximate) + */ + type: 'approximate'; + + /** + * The city name + */ + city?: string; + + /** + * The region or state + */ + region?: string; + + /** + * The country + */ + country?: string; + + /** + * The IANA timezone ID. + */ + timezone?: string; + }; + } +>({ + id: 'anthropic.web_search_20260209', + inputSchema: webSearch_20260209InputSchema, + outputSchema: webSearch_20260209OutputSchema, + supportsDeferredResults: true, +}); + +export const webSearch_20260209 = ( + args: Parameters[0] = {}, // default +) => { + return factory(args); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/version.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/version.ts new file mode 100644 index 000000000..7a35d46f5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/anthropic/src/version.ts @@ -0,0 +1,6 @@ +// Version string of this package injected at build time. +declare const __PACKAGE_VERSION__: string | undefined; +export const VERSION: string = + typeof __PACKAGE_VERSION__ !== 'undefined' + ? __PACKAGE_VERSION__ + : '0.0.0-test'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/CHANGELOG.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/CHANGELOG.md new file mode 100644 index 000000000..72d7a68c0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/CHANGELOG.md @@ -0,0 +1,1718 @@ +# @ai-sdk/gateway + +## 3.0.80 + +### Patch Changes + +- 0db5cd8: Backport: chore(provider/gateway): update gateway model settings files + +## 3.0.79 + +### Patch Changes + +- 3caa544: chore(provider/xai): update Grok 4.20 model IDs to their non-beta versions + +## 3.0.78 + +### Patch Changes + +- 763e178: Backport: chore(provider/gateway): update gateway model settings files + +## 3.0.77 + +### Patch Changes + +- d99eb91: Backport: chore(provider/gateway): update gateway model settings files +- 055cd68: fix: publish v6 to latest npm dist tag +- Updated dependencies [055cd68] + - @ai-sdk/provider-utils@4.0.21 + +## 3.0.76 + +### Patch Changes + +- 25af909: Backport: chore(provider/gateway): update gateway model settings files + +## 3.0.75 + +### Patch Changes + +- f95e0c0: Backport: chore(provider/gateway): update gateway model settings files + +## 3.0.74 + +### Patch Changes + +- 7324b56: Backport: chore(provider/gateway): update gateway model settings files + +## 3.0.73 + +### Patch Changes + +- ac0c407: Backport: chore(provider/gateway): update gateway model settings files +- e748159: Backport: chore(provider/gateway): update gateway model settings files + +## 3.0.72 + +### Patch Changes + +- 5ffb1ad: feat(provider/google): add `gemini-embedding-2-preview` and fix multimodal embedding support with `embedMany` +- f5bf0c6: Backport: chore(provider/gateway): update gateway model settings files + +## 3.0.71 + +### Patch Changes + +- 55ccbe2: chore(provider/xai): remove obsolete Grok 2 models now that they are shut down in their API + +## 3.0.70 + +### Patch Changes + +- ca0b430: chore(provider/gateway): update gateway model settings files + +## 3.0.69 + +### Patch Changes + +- efdaefc: chore(provider/gateway): update gateway model settings files + +## 3.0.68 + +### Patch Changes + +- Updated dependencies [64ac0fd] + - @ai-sdk/provider-utils@4.0.20 + +## 3.0.67 + +### Patch Changes + +- 2589004: feat(provider/openai): add GPT-5.4 model support + +## 3.0.66 + +### Patch Changes + +- Updated dependencies [ad4cfc2] + - @ai-sdk/provider-utils@4.0.19 + +## 3.0.65 + +### Patch Changes + +- Updated dependencies [824b295] + - @ai-sdk/provider-utils@4.0.18 + +## 3.0.64 + +### Patch Changes + +- db3d4ca: chore(provider/gateway): update gateway model settings files + +## 3.0.63 + +### Patch Changes + +- 1b01ec1: feat(gateway): add providerTimeouts to provider options +- 8df8e11: chore(provider/gateway): update gateway model settings files + +## 3.0.62 + +### Patch Changes + +- 10bec50: feat(provider/google): add `gemini-3.1-flash-lite-preview` + +## 3.0.61 + +### Patch Changes + +- Updated dependencies [08336f1] + - @ai-sdk/provider-utils@4.0.17 + +## 3.0.60 + +### Patch Changes + +- 29e9f4d: chore(provider/gateway): update gateway model settings files + +## 3.0.59 + +### Patch Changes + +- Updated dependencies [58bc42d] + - @ai-sdk/provider-utils@4.0.16 + +## 3.0.58 + +### Patch Changes + +- 1330f2f: chore(provider/gateway): update gateway model settings files + +## 3.0.57 + +### Patch Changes + +- ba63bc2: chore(provider/gateway): update gateway model settings files + +## 3.0.56 + +### Patch Changes + +- 45f0a7f: feat(provider/google): add support for gemini-3.1-flash-image-preview + +## 3.0.55 + +### Patch Changes + +- e8172b6: feat (provider/gateway): pass through project id when available for o11y + +## 3.0.54 + +### Patch Changes + +- 0c9395b: feat(provider/openai): add `gpt-5.3-codex` + +## 3.0.53 + +### Patch Changes + +- 73b7e09: feat (provider/gateway): add SSE support for video generation with heartbeat keep-alive + +## 3.0.52 + +### Patch Changes + +- 363fa44: chore(provider/gateway): update gateway model settings files + +## 3.0.51 + +### Patch Changes + +- 765b013: feat(provider/google): add support for `gemini-3.1-pro-preview` + +## 3.0.50 + +### Patch Changes + +- a433cd3: chore(provider/gateway): update gateway model settings files + +## 3.0.49 + +### Patch Changes + +- 5f693c8: chore(provider/gateway): update gateway model settings files + +## 3.0.48 + +### Patch Changes + +- 2a1c664: feat(provider/anthropic): add support for new Claude Sonnet 4.6 model + +## 3.0.47 + +### Patch Changes + +- 6bbd05b: chore(provider/gateway): update gateway model settings files + +## 3.0.46 + +### Patch Changes + +- f75f18c: chore(provider/gateway): update gateway model settings files + +## 3.0.45 + +### Patch Changes + +- e858654: fix (provider/gateway): Fixed error handling in Gateway models by making asGatewayError async in both image and video model implementations. + +## 3.0.44 + +### Patch Changes + +- Updated dependencies [4024a3a] + - @ai-sdk/provider-utils@4.0.15 + +## 3.0.43 + +### Patch Changes + +- b424e50: chore(provider/gateway): update gateway model settings files + +## 3.0.42 + +### Patch Changes + +- 1819bc1: fix (provider/gateway): add missing warning types for video response parsing + +## 3.0.41 + +### Patch Changes + +- 99fbed8: feat: normalize provider specific model options type names and ensure they are exported + +## 3.0.40 + +### Patch Changes + +- a2208a2: fix (provider/gateway): added custom error class and message for client side timeouts + +## 3.0.39 + +### Patch Changes + +- eea5d30: fix: image generation via Gateway warning schema mismatch + +## 3.0.38 + +### Patch Changes + +- 70028ab: feat: report image generation usage info in Gateway + +## 3.0.37 + +### Patch Changes + +- Updated dependencies [7168375] + - @ai-sdk/provider@3.0.8 + - @ai-sdk/provider-utils@4.0.14 + +## 3.0.36 + +### Patch Changes + +- 9892c58: feat(anthropic): add support for Opus 4.6 + +## 3.0.35 + +### Patch Changes + +- 8e2eaac: chore(provider/gateway): update gateway model settings files + +## 3.0.34 + +### Patch Changes + +- 4867635: feat (provider/gateway): add video generation support + +## 3.0.33 + +### Patch Changes + +- ae30443: fix(google): remove shut down `gemini-2.5-flash-image-preview` + +## 3.0.32 + +### Patch Changes + +- Updated dependencies [53f6731] + - @ai-sdk/provider@3.0.7 + - @ai-sdk/provider-utils@4.0.13 + +## 3.0.31 + +### Patch Changes + +- Updated dependencies [96936e5] + - @ai-sdk/provider-utils@4.0.12 + +## 3.0.30 + +### Patch Changes + +- 1a74972: chore(provider/gateway): update gateway model settings files + +## 3.0.29 + +### Patch Changes + +- Updated dependencies [2810850] + - @ai-sdk/provider-utils@4.0.11 + - @ai-sdk/provider@3.0.6 + +## 3.0.28 + +### Patch Changes + +- 1524271: chore: add skill information to README files + +## 3.0.27 + +### Patch Changes + +- 0acff64: feat (provider/gateway): add parallel search tool + +## 3.0.26 + +### Patch Changes + +- a8be296: chore(provider/gateway): update gateway model settings files + +## 3.0.25 + +### Patch Changes + +- 15a78c7: chore(provider/gateway): update gateway model settings files + +## 3.0.24 + +### Patch Changes + +- Updated dependencies [462ad00] + - @ai-sdk/provider-utils@4.0.10 + +## 3.0.23 + +### Patch Changes + +- cbf1704: chore(provider/gateway): update gateway model settings files + +## 3.0.22 + +### Patch Changes + +- 4de5a1d: chore: excluded tests from src folder in npm package +- Updated dependencies [4de5a1d] + - @ai-sdk/provider@3.0.5 + - @ai-sdk/provider-utils@4.0.9 + +## 3.0.21 + +### Patch Changes + +- 2b8369d: chore: add docs to package dist + +## 3.0.20 + +### Patch Changes + +- 8dc54db: chore: add src folders to package bundle + +## 3.0.19 + +### Patch Changes + +- c60fdd8: Inline fullMessage variable in GatewayError constructor + +## 3.0.18 + +### Patch Changes + +- 7af4eb4: chore(provider/gateway): update gateway model settings files + +## 3.0.17 + +### Patch Changes + +- 66d78d5: chore(provider/gateway): update gateway model settings files + +## 3.0.16 + +### Patch Changes + +- Updated dependencies [5c090e7] + - @ai-sdk/provider@3.0.4 + - @ai-sdk/provider-utils@4.0.8 + +## 3.0.15 + +### Patch Changes + +- Updated dependencies [46f46e4] + - @ai-sdk/provider-utils@4.0.7 + +## 3.0.14 + +### Patch Changes + +- Updated dependencies [1b11dcb] + - @ai-sdk/provider-utils@4.0.6 + - @ai-sdk/provider@3.0.3 + +## 3.0.13 + +### Patch Changes + +- 92b339b: feat (provider/gateway): add'l perplexity search tool params + +## 3.0.12 + +### Patch Changes + +- Updated dependencies [34d1c8a] + - @ai-sdk/provider-utils@4.0.5 + +## 3.0.11 + +### Patch Changes + +- 891a60a: feat (provider/gateway): add provider-defined perplexity search + +## 3.0.10 + +### Patch Changes + +- 2696fd2: chore(provider/gateway): Update gateway model settings files + +## 3.0.9 + +### Patch Changes + +- Updated dependencies [d937c8f] + - @ai-sdk/provider@3.0.2 + - @ai-sdk/provider-utils@4.0.4 + +## 3.0.8 + +### Patch Changes + +- 8ec1984: fix(gateway): bump `@vercel/oidc` to 3.1.0 + +## 3.0.7 + +### Patch Changes + +- Updated dependencies [0b429d4] + - @ai-sdk/provider-utils@4.0.3 + +## 3.0.6 + +### Patch Changes + +- 74c0157: feat (provider/gateway): support image editing + +## 3.0.5 + +### Patch Changes + +- 7ee2d12: chore (provider/gateway): bump specification version header to reflect v3 + +## 3.0.4 + +### Patch Changes + +- 863d34f: fix: trigger release to update `@latest` +- Updated dependencies [863d34f] + - @ai-sdk/provider@3.0.1 + - @ai-sdk/provider-utils@4.0.2 + +## 3.0.3 + +### Patch Changes + +- 1dad057: fix(gateway): add error handling for oidc refresh + +## 3.0.2 + +### Patch Changes + +- Updated dependencies [29264a3] + - @ai-sdk/provider-utils@4.0.1 + +## 3.0.1 + +### Patch Changes + +- c0c8a0e: Add zai/glm-4.7 model support + +## 3.0.0 + +### Major Changes + +- 387980f: fix: major version bump for AI SDK v6 + +## 2.0.0 + +### Major Changes + +- dee8b05: ai SDK 6 beta +- 2f8b0c8: fix(gateway): bump `@vercel/oidc` to latest + +### Minor Changes + +- 78928cb: release: start 5.1 beta + +### Patch Changes + +- 0c3b58b: fix(provider): add specificationVersion to ProviderV3 +- ea9ca31: feat(provider/gateway): Add new xAI models +- 5dd4c6a: fix(provider/gateway): Fix Gateway image model provider options not passing through +- 5d21222: feat(provider/gateway): Add gpt-5-codex to Gateway model string autocomplete +- 0adc679: feat(provider): shared spec v3 +- 7294355: feat (provider/gateway): update route path version and embed format +- e8694af: feat(provider/gateway): Server-side image request splitting +- 8d9e8ad: chore(provider): remove generics from EmbeddingModelV3 + + Before + + ```ts + model.textEmbeddingModel("my-model-id"); + ``` + + After + + ```ts + model.embeddingModel("my-model-id"); + ``` + +- aaf5ebf: feat(provider/gateway): Add new Qwen models to Gateway model string autocomplete +- 95f65c2: chore: use import \* from zod/v4 +- c823faf: feat(provider/gateway): Add new Gemini preview models to Gateway model string autocomplete +- 2b6a848: feat (provider/gateway): add models provider option for model routing +- 0c4822d: feat: `EmbeddingModelV3` +- 34ee8d0: feat (provider/gateway): add support for request-scoped byok +- 1890317: feat (provider/gateway): improve auth error messages +- 636e614: feat(provider/gateway): Add DeepSeek V3.2 Exp to Gateway language model settings +- 7ccb36f: feat(provider/gateway): Add LongCat Thinking model to Gateway autocomplete +- ed329cb: feat: `Provider-V3` +- 5f66123: chore(provider/gateway): Update gateway language model settings +- 1cad0ab: feat: add provider version to user-agent header +- bca7e61: feat(provider/gateway): Change default maxImagesPerCall per-provider +- 8dac895: feat: `LanguageModelV3` +- 3e83633: add getCredits() gateway method +- 1d8ea2c: feat(provider/gateway): Add GPT-5 pro to Gateway model string autocomplete +- ef62178: feat(gateway): oidc refresh with `@vercel/oidc` +- 0a2ff8a: feat (provider/gateway): add user and tags provider options +- ee71658: feat (provider/gateway): add zero data retention provider option +- 457318b: chore(provider,ai): switch to SharedV3Warning and unified warnings +- 9061dc0: feat: image editing +- 7d73922: feat(provider/gateway): Add MiniMax M2 to Gateway autocomplete +- e6bfe91: feat(provider/gateway): Update DeepSeek model string autocomplete +- acc14d8: feat (provider/gateway): add 'only' to provider options +- f83903d: getCredits style improvements +- 0e29b8b: chore(provider/gateway): lazy schema loading +- 366f50b: chore(provider): add deprecated textEmbeddingModel and textEmbedding aliases +- cdd0bc2: feat (provider/gateway): add intellect-3 model id +- 96322b7: feat(provider/gateway): Add GPT OSS Safeguard 20B to Gateway model string autocomplete +- 4616b86: chore: update zod peer depenedency version +- 2d166e4: feat(provider/gateway): add support for image models +- 6c766ef: feat(provider/gateway): Add DeepSeek V3.1 Terminus to Gateway autocomplete +- 7b1b1b1: fix(provider/gateway): add "react-native" as export condition for browser behavior + + This avoids the use of native Node APIs in bundles created for React Native / Expo apps + +- 3782645: bump `@vercel/oidc` to 3.0.5 +- f18ef7f: feat(openai): add gpt-5.2 models +- 1425df5: feat(provider/gateway): Add Imagen 4 Ultra Generate to model string autocomplete list +- 9f6149e: feat(provider/gateway): Add Sonnet 4.5 to Gateway model string autocomplete +- cc5170d: feat(provider/gateway): update gateway model string autocomplete +- a90dca6: feat(provider/gateway): Add zAI GLM 4.6 to Gateway language model settings +- b1624f0: feat (provider/gateway): add trinity-mini model id +- cbf52cd: feat: expose raw finish reason +- 870297d: feat(google): gemini-3-flash +- f0b2157: fix: revert zod import change +- Updated dependencies + - @ai-sdk/provider@3.0.0 + - @ai-sdk/provider-utils@4.0.0 + +## 2.0.0-beta.93 + +### Patch Changes + +- 7294355: feat (provider/gateway): update route path version and embed format + +## 2.0.0-beta.92 + +### Patch Changes + +- Updated dependencies [475189e] + - @ai-sdk/provider@3.0.0-beta.32 + - @ai-sdk/provider-utils@4.0.0-beta.59 + +## 2.0.0-beta.91 + +### Patch Changes + +- Updated dependencies [2625a04] + - @ai-sdk/provider@3.0.0-beta.31 + - @ai-sdk/provider-utils@4.0.0-beta.58 + +## 2.0.0-beta.90 + +### Patch Changes + +- cbf52cd: feat: expose raw finish reason +- Updated dependencies [cbf52cd] + - @ai-sdk/provider@3.0.0-beta.30 + - @ai-sdk/provider-utils@4.0.0-beta.57 + +## 2.0.0-beta.89 + +### Patch Changes + +- Updated dependencies [9549c9e] + - @ai-sdk/provider@3.0.0-beta.29 + - @ai-sdk/provider-utils@4.0.0-beta.56 + +## 2.0.0-beta.88 + +### Patch Changes + +- Updated dependencies [50b70d6] + - @ai-sdk/provider-utils@4.0.0-beta.55 + +## 2.0.0-beta.87 + +### Patch Changes + +- ee71658: feat (provider/gateway): add zero data retention provider option + +## 2.0.0-beta.86 + +### Patch Changes + +- 9061dc0: feat: image editing +- Updated dependencies [9061dc0] + - @ai-sdk/provider-utils@4.0.0-beta.54 + - @ai-sdk/provider@3.0.0-beta.28 + +## 2.0.0-beta.85 + +### Patch Changes + +- 870297d: feat(google): gemini-3-flash + +## 2.0.0-beta.84 + +### Patch Changes + +- 366f50b: chore(provider): add deprecated textEmbeddingModel and textEmbedding aliases +- Updated dependencies [366f50b] + - @ai-sdk/provider@3.0.0-beta.27 + - @ai-sdk/provider-utils@4.0.0-beta.53 + +## 2.0.0-beta.83 + +### Patch Changes + +- Updated dependencies [763d04a] + - @ai-sdk/provider-utils@4.0.0-beta.52 + +## 2.0.0-beta.82 + +### Patch Changes + +- Updated dependencies [c1efac4] + - @ai-sdk/provider-utils@4.0.0-beta.51 + +## 2.0.0-beta.81 + +### Patch Changes + +- Updated dependencies [32223c8] + - @ai-sdk/provider-utils@4.0.0-beta.50 + +## 2.0.0-beta.80 + +### Patch Changes + +- Updated dependencies [83e5744] + - @ai-sdk/provider-utils@4.0.0-beta.49 + +## 2.0.0-beta.79 + +### Patch Changes + +- Updated dependencies [960ec8f] + - @ai-sdk/provider-utils@4.0.0-beta.48 + +## 2.0.0-beta.78 + +### Patch Changes + +- f18ef7f: feat(openai): add gpt-5.2 models + +## 2.0.0-beta.77 + +### Patch Changes + +- Updated dependencies [e9e157f] + - @ai-sdk/provider-utils@4.0.0-beta.47 + +## 2.0.0-beta.76 + +### Patch Changes + +- 34ee8d0: feat (provider/gateway): add support for request-scoped byok + +## 2.0.0-beta.75 + +### Patch Changes + +- Updated dependencies [81e29ab] + - @ai-sdk/provider-utils@4.0.0-beta.46 + +## 2.0.0-beta.74 + +### Patch Changes + +- Updated dependencies [3bd2689] + - @ai-sdk/provider@3.0.0-beta.26 + - @ai-sdk/provider-utils@4.0.0-beta.45 + +## 2.0.0-beta.73 + +### Patch Changes + +- Updated dependencies [53f3368] + - @ai-sdk/provider@3.0.0-beta.25 + - @ai-sdk/provider-utils@4.0.0-beta.44 + +## 2.0.0-beta.72 + +### Patch Changes + +- Updated dependencies [dce03c4] + - @ai-sdk/provider-utils@4.0.0-beta.43 + - @ai-sdk/provider@3.0.0-beta.24 + +## 2.0.0-beta.71 + +### Patch Changes + +- Updated dependencies [3ed5519] + - @ai-sdk/provider-utils@4.0.0-beta.42 + +## 2.0.0-beta.70 + +### Patch Changes + +- Updated dependencies [1bd7d32] + - @ai-sdk/provider-utils@4.0.0-beta.41 + - @ai-sdk/provider@3.0.0-beta.23 + +## 2.0.0-beta.69 + +### Patch Changes + +- b1624f0: feat (provider/gateway): add trinity-mini model id + +## 2.0.0-beta.68 + +### Patch Changes + +- Updated dependencies [544d4e8] + - @ai-sdk/provider-utils@4.0.0-beta.40 + - @ai-sdk/provider@3.0.0-beta.22 + +## 2.0.0-beta.67 + +### Patch Changes + +- Updated dependencies [954c356] + - @ai-sdk/provider-utils@4.0.0-beta.39 + - @ai-sdk/provider@3.0.0-beta.21 + +## 2.0.0-beta.66 + +### Patch Changes + +- Updated dependencies [03849b0] + - @ai-sdk/provider-utils@4.0.0-beta.38 + +## 2.0.0-beta.65 + +### Patch Changes + +- cdd0bc2: feat (provider/gateway): add intellect-3 model id + +## 2.0.0-beta.64 + +### Patch Changes + +- 457318b: chore(provider,ai): switch to SharedV3Warning and unified warnings +- Updated dependencies [457318b] + - @ai-sdk/provider@3.0.0-beta.20 + - @ai-sdk/provider-utils@4.0.0-beta.37 + +## 2.0.0-beta.63 + +### Patch Changes + +- 8d9e8ad: chore(provider): remove generics from EmbeddingModelV3 + + Before + + ```ts + model.textEmbeddingModel("my-model-id"); + ``` + + After + + ```ts + model.embeddingModel("my-model-id"); + ``` + +- Updated dependencies [8d9e8ad] + - @ai-sdk/provider@3.0.0-beta.19 + - @ai-sdk/provider-utils@4.0.0-beta.36 + +## 2.0.0-beta.62 + +### Patch Changes + +- Updated dependencies [10d819b] + - @ai-sdk/provider@3.0.0-beta.18 + - @ai-sdk/provider-utils@4.0.0-beta.35 + +## 2.0.0-beta.61 + +### Patch Changes + +- e8694af: feat(provider/gateway): Server-side image request splitting + +## 2.0.0-beta.60 + +### Patch Changes + +- Updated dependencies [db913bd] + - @ai-sdk/provider@3.0.0-beta.17 + - @ai-sdk/provider-utils@4.0.0-beta.34 + +## 2.0.0-beta.59 + +### Patch Changes + +- 5dd4c6a: fix(provider/gateway): Fix Gateway image model provider options not passing through + +## 2.0.0-beta.58 + +### Patch Changes + +- 1425df5: feat(provider/gateway): Add Imagen 4 Ultra Generate to model string autocomplete list + +## 2.0.0-beta.57 + +### Patch Changes + +- bca7e61: feat(provider/gateway): Change default maxImagesPerCall per-provider + +## 2.0.0-beta.56 + +### Patch Changes + +- 2d166e4: feat(provider/gateway): add support for image models + +## 2.0.0-beta.55 + +### Patch Changes + +- cc5170d: feat(provider/gateway): update gateway model string autocomplete + +## 2.0.0-beta.54 + +### Patch Changes + +- 5f66123: chore(provider/gateway): Update gateway language model settings + +## 2.0.0-beta.53 + +### Patch Changes + +- 3782645: bump `@vercel/oidc` to 3.0.5 + +## 2.0.0-beta.52 + +### Patch Changes + +- Updated dependencies [b681d7d] + - @ai-sdk/provider@3.0.0-beta.16 + - @ai-sdk/provider-utils@4.0.0-beta.33 + +## 2.0.0-beta.51 + +### Patch Changes + +- Updated dependencies [32d8dbb] + - @ai-sdk/provider-utils@4.0.0-beta.32 + +## 2.0.0-beta.50 + +### Patch Changes + +- Updated dependencies [bb36798] + - @ai-sdk/provider@3.0.0-beta.15 + - @ai-sdk/provider-utils@4.0.0-beta.31 + +## 2.0.0-beta.49 + +### Patch Changes + +- Updated dependencies [4f16c37] + - @ai-sdk/provider-utils@4.0.0-beta.30 + +## 2.0.0-beta.48 + +### Patch Changes + +- Updated dependencies [af3780b] + - @ai-sdk/provider@3.0.0-beta.14 + - @ai-sdk/provider-utils@4.0.0-beta.29 + +## 2.0.0-beta.47 + +### Patch Changes + +- 96322b7: feat(provider/gateway): Add GPT OSS Safeguard 20B to Gateway model string autocomplete + +## 2.0.0-beta.46 + +### Patch Changes + +- Updated dependencies [016b111] + - @ai-sdk/provider-utils@4.0.0-beta.28 + +## 2.0.0-beta.45 + +### Patch Changes + +- Updated dependencies [37c58a0] + - @ai-sdk/provider@3.0.0-beta.13 + - @ai-sdk/provider-utils@4.0.0-beta.27 + +## 2.0.0-beta.44 + +### Patch Changes + +- 7d73922: feat(provider/gateway): Add MiniMax M2 to Gateway autocomplete + +## 2.0.0-beta.43 + +### Patch Changes + +- Updated dependencies [d1bdadb] + - @ai-sdk/provider@3.0.0-beta.12 + - @ai-sdk/provider-utils@4.0.0-beta.26 + +## 2.0.0-beta.42 + +### Patch Changes + +- Updated dependencies [4c44a5b] + - @ai-sdk/provider@3.0.0-beta.11 + - @ai-sdk/provider-utils@4.0.0-beta.25 + +## 2.0.0-beta.41 + +### Patch Changes + +- 0c3b58b: fix(provider): add specificationVersion to ProviderV3 +- Updated dependencies [0c3b58b] + - @ai-sdk/provider@3.0.0-beta.10 + - @ai-sdk/provider-utils@4.0.0-beta.24 + +## 2.0.0-beta.40 + +### Patch Changes + +- Updated dependencies [a755db5] + - @ai-sdk/provider@3.0.0-beta.9 + - @ai-sdk/provider-utils@4.0.0-beta.23 + +## 2.0.0-beta.39 + +### Patch Changes + +- Updated dependencies [58920e0] + - @ai-sdk/provider-utils@4.0.0-beta.22 + +## 2.0.0-beta.38 + +### Patch Changes + +- Updated dependencies [293a6b7] + - @ai-sdk/provider-utils@4.0.0-beta.21 + +## 2.0.0-beta.37 + +### Patch Changes + +- 2b6a848: feat (provider/gateway): add models provider option for model routing + +## 2.0.0-beta.36 + +### Patch Changes + +- Updated dependencies [fca786b] + - @ai-sdk/provider-utils@4.0.0-beta.20 + +## 2.0.0-beta.35 + +### Patch Changes + +- Updated dependencies [3794514] + - @ai-sdk/provider-utils@4.0.0-beta.19 + - @ai-sdk/provider@3.0.0-beta.8 + +## 2.0.0-beta.34 + +### Major Changes + +- 2f8b0c8: fix(gateway): bump `@vercel/oidc` to latest + +## 2.0.0-beta.33 + +### Patch Changes + +- 1890317: feat (provider/gateway): improve auth error messages + +## 2.0.0-beta.32 + +### Patch Changes + +- Updated dependencies [81d4308] + - @ai-sdk/provider@3.0.0-beta.7 + - @ai-sdk/provider-utils@4.0.0-beta.18 + +## 2.0.0-beta.31 + +### Patch Changes + +- Updated dependencies [703459a] + - @ai-sdk/provider-utils@4.0.0-beta.17 + +## 2.0.0-beta.30 + +### Patch Changes + +- 0a2ff8a: feat (provider/gateway): add user and tags provider options + +## 2.0.0-beta.29 + +### Patch Changes + +- Updated dependencies [6306603] + - @ai-sdk/provider-utils@4.0.0-beta.16 + +## 2.0.0-beta.28 + +### Patch Changes + +- f0b2157: fix: revert zod import change +- Updated dependencies [f0b2157] + - @ai-sdk/provider-utils@4.0.0-beta.15 + +## 2.0.0-beta.27 + +### Patch Changes + +- Updated dependencies [3b1d015] + - @ai-sdk/provider-utils@4.0.0-beta.14 + +## 2.0.0-beta.26 + +### Patch Changes + +- Updated dependencies [d116b4b] + - @ai-sdk/provider-utils@4.0.0-beta.13 + +## 2.0.0-beta.25 + +### Patch Changes + +- Updated dependencies [7e32fea] + - @ai-sdk/provider-utils@4.0.0-beta.12 + +## 2.0.0-beta.24 + +### Patch Changes + +- 0e29b8b: chore(provider/gateway): lazy schema loading + +## 2.0.0-beta.23 + +### Patch Changes + +- acc14d8: feat (provider/gateway): add 'only' to provider options + +## 2.0.0-beta.22 + +### Patch Changes + +- 95f65c2: chore: use import \* from zod/v4 +- Updated dependencies + - @ai-sdk/provider-utils@4.0.0-beta.11 + +## 2.0.0-beta.21 + +### Patch Changes + +- 7b1b1b1: fix(provider/gateway): add "react-native" as export condition for browser behavior + + This avoids the use of native Node APIs in bundles created for React Native / Expo apps + +## 2.0.0-beta.20 + +### Major Changes + +- dee8b05: ai SDK 6 beta + +### Patch Changes + +- Updated dependencies [dee8b05] + - @ai-sdk/provider@3.0.0-beta.6 + - @ai-sdk/provider-utils@4.0.0-beta.10 + +## 1.1.0-beta.19 + +### Patch Changes + +- Updated dependencies [521c537] + - @ai-sdk/provider-utils@3.1.0-beta.9 + +## 1.1.0-beta.18 + +### Patch Changes + +- Updated dependencies [e06565c] + - @ai-sdk/provider-utils@3.1.0-beta.8 + +## 1.1.0-beta.17 + +### Patch Changes + +- 1d8ea2c: feat(provider/gateway): Add GPT-5 pro to Gateway model string autocomplete + +## 1.1.0-beta.16 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.1.0-beta.5 + - @ai-sdk/provider-utils@3.1.0-beta.7 + +## 1.1.0-beta.15 + +### Patch Changes + +- ef62178: feat(gateway): oidc refresh with `@vercel/oidc` + +## 1.1.0-beta.14 + +### Patch Changes + +- a90dca6: feat(provider/gateway): Add zAI GLM 4.6 to Gateway language model settings + +## 1.1.0-beta.13 + +### Patch Changes + +- 0adc679: feat(provider): shared spec v3 +- Updated dependencies + - @ai-sdk/provider-utils@3.1.0-beta.6 + - @ai-sdk/provider@2.1.0-beta.4 + +## 1.1.0-beta.12 + +### Patch Changes + +- e6bfe91: feat(provider/gateway): Update DeepSeek model string autocomplete + +## 1.1.0-beta.11 + +### Patch Changes + +- 636e614: feat(provider/gateway): Add DeepSeek V3.2 Exp to Gateway language model settings + +## 1.1.0-beta.10 + +### Patch Changes + +- 9f6149e: feat(provider/gateway): Add Sonnet 4.5 to Gateway model string autocomplete + +## 1.1.0-beta.9 + +### Patch Changes + +- 8dac895: feat: `LanguageModelV3` +- Updated dependencies [8dac895] + - @ai-sdk/provider-utils@3.1.0-beta.5 + - @ai-sdk/provider@2.1.0-beta.3 + +## 1.1.0-beta.8 + +### Patch Changes + +- c823faf: feat(provider/gateway): Add new Gemini preview models to Gateway model string autocomplete + +## 1.1.0-beta.7 + +### Patch Changes + +- 4616b86: chore: update zod peer depenedency version +- Updated dependencies [4616b86] + - @ai-sdk/provider-utils@3.1.0-beta.4 + +## 1.1.0-beta.6 + +### Patch Changes + +- aaf5ebf: feat(provider/gateway): Add new Qwen models to Gateway model string autocomplete +- ed329cb: feat: `Provider-V3` +- Updated dependencies + - @ai-sdk/provider@2.1.0-beta.2 + - @ai-sdk/provider-utils@3.1.0-beta.3 + +## 1.1.0-beta.5 + +### Patch Changes + +- 5d21222: feat(provider/gateway): Add gpt-5-codex to Gateway model string autocomplete +- 0c4822d: feat: `EmbeddingModelV3` +- 1cad0ab: feat: add provider version to user-agent header +- Updated dependencies [0c4822d] + - @ai-sdk/provider@2.1.0-beta.1 + - @ai-sdk/provider-utils@3.1.0-beta.2 + +## 1.1.0-beta.4 + +### Patch Changes + +- 7ccb36f: feat(provider/gateway): Add LongCat Thinking model to Gateway autocomplete +- 6c766ef: feat(provider/gateway): Add DeepSeek V3.1 Terminus to Gateway autocomplete + +## 1.1.0-beta.3 + +### Patch Changes + +- ea9ca31: feat(provider/gateway): Add new xAI models + +## 1.1.0-beta.2 + +### Patch Changes + +- 3e83633: add getCredits() gateway method +- f83903d: getCredits style improvements + +## 1.1.0-beta.1 + +### Patch Changes + +- Updated dependencies [cbb1d35] + - @ai-sdk/provider-utils@3.1.0-beta.1 + +## 1.1.0-beta.0 + +### Minor Changes + +- 78928cb: release: start 5.1 beta + +### Patch Changes + +- Updated dependencies [78928cb] + - @ai-sdk/provider@2.1.0-beta.0 + - @ai-sdk/provider-utils@3.1.0-beta.0 + +## 1.0.23 + +### Patch Changes + +- f49f924: feat (provider/gateway): add qwen3 next model ids + +## 1.0.22 + +### Patch Changes + +- Updated dependencies [0294b58] + - @ai-sdk/provider-utils@3.0.9 + +## 1.0.21 + +### Patch Changes + +- 4ee3719: feat(provider/gateway): Add Meituan LongCat Flash Chat to autocomplete + +## 1.0.20 + +### Patch Changes + +- 350a328: feat(provider/gateway): Add stealth models to Gateway autocomplete + +## 1.0.19 + +### Patch Changes + +- 034287f: feat (provider/gateway): add qwen3-max model id +- dee1afe: feat(provider/gateway): Fix embeddings `providerOptions` + +## 1.0.18 + +### Patch Changes + +- 5d59a8c: feat (provider/gateway): add moonshotai/kimi-k2-0905 model id + +## 1.0.17 + +### Patch Changes + +- b6005cd: feat(provider/gateway): Add Voyage embedding models + +## 1.0.16 + +### Patch Changes + +- Updated dependencies [99964ed] + - @ai-sdk/provider-utils@3.0.8 + +## 1.0.15 + +### Patch Changes + +- 980633d: feat(provider/gateway): Add xAI Grok Code Fast 1 +- 1c5b88d: feat (provider/gateway): add new model ids + +## 1.0.14 + +### Patch Changes + +- Updated dependencies [886e7cd] + - @ai-sdk/provider-utils@3.0.7 + +## 1.0.13 + +### Patch Changes + +- c9994f9: feat(provider/gateway): Add cache pricing fields to model metadata +- Updated dependencies [1b5a3d3] + - @ai-sdk/provider-utils@3.0.6 + +## 1.0.12 + +### Patch Changes + +- 50e2029: feat (provider/gateway): add deepseek v3.1 thinking model id +- b8478f0: feat (provider/gateway): add mistral medium model id + +## 1.0.11 + +### Patch Changes + +- 926259f: feat(provider/gateway): Expose model type in model spec +- c000f96: feat(provider/gateway): Add DeepSeek V3.1 + +## 1.0.10 + +### Patch Changes + +- Updated dependencies [0857788] + - @ai-sdk/provider-utils@3.0.5 + +## 1.0.9 + +### Patch Changes + +- 8b96f99: feat(provider/gateway): Add DeepSeek v3.1 Base + +## 1.0.8 + +### Patch Changes + +- Updated dependencies [68751f9] + - @ai-sdk/provider-utils@3.0.4 + +## 1.0.7 + +### Patch Changes + +- 28a4006: feat (provider/gateway): add gemini-2.5-flash-lite model id + +## 1.0.6 + +### Patch Changes + +- eefa730: refactor(provider/gateway): Make claude-sonnet-4 and similar the primary model slug for Anthropic v4 models +- Updated dependencies + - @ai-sdk/provider-utils@3.0.3 + +## 1.0.5 + +### Patch Changes + +- cf7b2ad: feat(provider/gateway): Add GLM-4.5V +- Updated dependencies [38ac190] + - @ai-sdk/provider-utils@3.0.2 + +## 1.0.4 + +### Patch Changes + +- 35f93ce: feat (provider/gateway): add new model ids + +## 1.0.3 + +### Patch Changes + +- 893aed6: feat (provider/gateway): add anthropic claude 4.1 opus model id + +## 1.0.2 + +### Patch Changes + +- 444df49: feat (provider/gateway): update model ids + +## 1.0.1 + +### Patch Changes + +- 028fb9c: refactor(provider/gateway): Cleanup old gateway-embedding-options file +- 6331826: feat(provider/gateway): Hide Cohere embedding models with no pricing info +- Updated dependencies [90d212f] + - @ai-sdk/provider-utils@3.0.1 + +## 1.0.0 + +### Patch Changes + +- 9e16bfd: feat (provider/gateway): update model ids +- 0477a13: feat (provider/gateway): Add OpenAI embedding support +- 26b6dd0: feat (providers/gateway): include deployment and request id +- 30ab1de: feat (provider/gateway): add grok-4 model id +- e2aceaf: feat: add raw chunk support +- 97fedf9: feat (providers/gateway): include description and pricing info in model list +- c91586a: chore (providers/gateway): update language model ids +- 3cbcbb7: feat (providers/gateway): share common gateway error transform logic +- fedb55e: feat (provider/gateway): add z.ai and glm-4.5 models +- 6c2c708: feat (providers/gateway): initial gateway provider +- 721775e: feat(provider/gateway): Generate new Gateway embedding model settings file +- 70ebead: feat (provider/gateway): add qwen3 coder model id +- f3639fa: feat (providers/gateway): improve oidc api key client auth flow +- 8bd3624: feat (provider/gateway): update model ids to include vercel +- c145d62: feat (providers/gateway): add createGateway shorthand alias for createGatewayProvider +- f77bc38: chore (providers/gateway): update language model ids +- 989ac75: chore (providers/gateway): update chat model ids +- 7742ba3: feat (providers/gateway): add gateway error types with error detail +- c190907: fix (provider/gateway): use zod v4 +- d1a034f: feature: using Zod 4 for internal stuff +- d454e4b: fix (providers/gateway): fix timestamp error when streaming objects +- cf1e00e: feat (provider/gateway): add devstral model id +- cc21603: feat (provider/gateway): Add AI Gateway provider options (ordering) +- 205077b: fix: improve Zod compatibility +- e001ea1: fix (provider/gateway): remove unnecessary 'x-' prefix on auth method header +- 27deb4d: feat (provider/gateway): Add providerMetadata to embeddings response +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0 + - @ai-sdk/provider@2.0.0 + +## 1.0.0-beta.19 + +### Patch Changes + +- 721775e: feat(provider/gateway): Generate new Gateway embedding model settings file +- Updated dependencies [88a8ee5] + - @ai-sdk/provider-utils@3.0.0-beta.10 + +## 1.0.0-beta.18 + +### Patch Changes + +- 27deb4d: feat (provider/gateway): Add providerMetadata to embeddings response +- Updated dependencies [27deb4d] + - @ai-sdk/provider@2.0.0-beta.2 + - @ai-sdk/provider-utils@3.0.0-beta.9 + +## 1.0.0-beta.17 + +### Patch Changes + +- Updated dependencies [dd5fd43] + - @ai-sdk/provider-utils@3.0.0-beta.8 + +## 1.0.0-beta.16 + +### Patch Changes + +- fedb55e: feat (provider/gateway): add z.ai and glm-4.5 models + +## 1.0.0-beta.15 + +### Patch Changes + +- Updated dependencies [e7fcc86] + - @ai-sdk/provider-utils@3.0.0-beta.7 + +## 1.0.0-beta.14 + +### Patch Changes + +- Updated dependencies [ac34802] + - @ai-sdk/provider-utils@3.0.0-beta.6 + +## 1.0.0-beta.13 + +### Patch Changes + +- 0477a13: feat (provider/gateway): Add OpenAI embedding support +- cf1e00e: feat (provider/gateway): add devstral model id +- cc21603: feat (provider/gateway): Add AI Gateway provider options (ordering) + +## 1.0.0-beta.12 + +### Patch Changes + +- 70ebead: feat (provider/gateway): add qwen3 coder model id + +## 1.0.0-beta.11 + +### Patch Changes + +- 8bd3624: feat (provider/gateway): update model ids to include vercel +- e001ea1: fix (provider/gateway): remove unnecessary 'x-' prefix on auth method header + +## 1.0.0-beta.10 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-beta.5 + +## 1.0.0-beta.9 + +### Patch Changes + +- 205077b: fix: improve Zod compatibility +- Updated dependencies [205077b] + - @ai-sdk/provider-utils@3.0.0-beta.4 + +## 1.0.0-beta.8 + +### Patch Changes + +- Updated dependencies [05d2819] + - @ai-sdk/provider-utils@3.0.0-beta.3 + +## 1.0.0-beta.7 + +### Patch Changes + +- c190907: fix (provider/gateway): use zod v4 + +## 1.0.0-beta.6 + +### Patch Changes + +- 9e16bfd: feat (provider/gateway): update model ids + +## 1.0.0-beta.5 + +### Patch Changes + +- 30ab1de: feat (provider/gateway): add grok-4 model id + +## 1.0.0-beta.4 + +### Patch Changes + +- 97fedf9: feat (providers/gateway): include description and pricing info in model list + +## 1.0.0-beta.3 + +### Patch Changes + +- f3639fa: feat (providers/gateway): improve oidc api key client auth flow +- d454e4b: fix (providers/gateway): fix timestamp error when streaming objects + +## 1.0.0-beta.2 + +### Patch Changes + +- c91586a: chore (providers/gateway): update language model ids +- d1a034f: feature: using Zod 4 for internal stuff +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-beta.2 + +## 1.0.0-beta.1 + +### Patch Changes + +- f77bc38: chore (providers/gateway): update language model ids +- Updated dependencies + - @ai-sdk/provider@2.0.0-beta.1 + - @ai-sdk/provider-utils@3.0.0-beta.1 + +## 1.0.0-alpha.15 + +### Patch Changes + +- c145d62: feat (providers/gateway): add createGateway shorthand alias for createGatewayProvider +- Updated dependencies + - @ai-sdk/provider@2.0.0-alpha.15 + - @ai-sdk/provider-utils@3.0.0-alpha.15 + +## 1.0.0-alpha.14 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-alpha.14 + - @ai-sdk/provider-utils@3.0.0-alpha.14 + +## 1.0.0-alpha.13 + +### Patch Changes + +- Updated dependencies [68ecf2f] + - @ai-sdk/provider@2.0.0-alpha.13 + - @ai-sdk/provider-utils@3.0.0-alpha.13 + +## 1.0.0-alpha.12 + +### Patch Changes + +- e2aceaf: feat: add raw chunk support +- Updated dependencies [e2aceaf] + - @ai-sdk/provider@2.0.0-alpha.12 + - @ai-sdk/provider-utils@3.0.0-alpha.12 + +## 1.0.0-alpha.11 + +### Patch Changes + +- Updated dependencies [c1e6647] + - @ai-sdk/provider@2.0.0-alpha.11 + - @ai-sdk/provider-utils@3.0.0-alpha.11 + +## 1.0.0-alpha.10 + +### Patch Changes + +- Updated dependencies [c4df419] + - @ai-sdk/provider@2.0.0-alpha.10 + - @ai-sdk/provider-utils@3.0.0-alpha.10 + +## 1.0.0-alpha.9 + +### Patch Changes + +- 26b6dd0: feat (providers/gateway): include deployment and request id +- Updated dependencies [811dff3] + - @ai-sdk/provider@2.0.0-alpha.9 + - @ai-sdk/provider-utils@3.0.0-alpha.9 + +## 1.0.0-alpha.8 + +### Patch Changes + +- 3cbcbb7: feat (providers/gateway): share common gateway error transform logic +- 989ac75: chore (providers/gateway): update chat model ids +- 7742ba3: feat (providers/gateway): add gateway error types with error detail +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-alpha.8 + - @ai-sdk/provider@2.0.0-alpha.8 + +## 1.0.0-alpha.7 + +### Patch Changes + +- Updated dependencies [5c56081] + - @ai-sdk/provider@2.0.0-alpha.7 + - @ai-sdk/provider-utils@3.0.0-alpha.7 + +## 1.0.0-alpha.6 + +### Patch Changes + +- 6c2c708: feat (providers/gateway): initial gateway provider +- Updated dependencies [0d2c085] + - @ai-sdk/provider@2.0.0-alpha.6 + - @ai-sdk/provider-utils@3.0.0-alpha.6 diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/LICENSE new file mode 100644 index 000000000..6c16c29f4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/LICENSE @@ -0,0 +1,13 @@ +Copyright 2023 Vercel, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/README.md new file mode 100644 index 000000000..579a96c3d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/README.md @@ -0,0 +1,44 @@ +# AI SDK - Gateway Provider + +The Gateway provider for the [AI SDK](https://ai-sdk.dev/docs) allows the use of a wide variety of AI models and providers. + +## Setup + +The Gateway provider is available in the `@ai-sdk/gateway` module. You can install it with + +```bash +npm i @ai-sdk/gateway +``` + +## Skill for Coding Agents + +If you use coding agents such as Claude Code or Cursor, we highly recommend adding the AI SDK skill to your repository: + +```shell +npx skills add vercel/ai +``` + +## Provider Instance + +You can import the default provider instance `gateway` from `@ai-sdk/gateway`: + +```ts +import { gateway } from '@ai-sdk/gateway'; +``` + +## Example + +```ts +import { gateway } from '@ai-sdk/gateway'; +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: gateway('xai/grok-3-beta'), + prompt: + 'Tell me about the history of the San Francisco Mission-style burrito.', +}); +``` + +## Documentation + +Please check out the [AI SDK documentation](https://ai-sdk.dev/docs) for more information. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/docs/00-ai-gateway.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/docs/00-ai-gateway.mdx new file mode 100644 index 000000000..822e2b69e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/docs/00-ai-gateway.mdx @@ -0,0 +1,742 @@ +--- +title: AI Gateway +description: Learn how to use the AI Gateway provider with the AI SDK. +--- + +# AI Gateway Provider + +The [AI Gateway](https://vercel.com/docs/ai-gateway) provider connects you to models from multiple AI providers through a single interface. Instead of integrating with each provider separately, you can access OpenAI, Anthropic, Google, Meta, xAI, and other providers and their models. + +## Features + +- Access models from multiple providers without having to install additional provider modules/dependencies +- Use the same code structure across different AI providers +- Switch between models and providers easily +- Automatic authentication when deployed on Vercel +- View pricing information across providers +- Observability for AI model usage through the Vercel dashboard + +## Setup + +The Vercel AI Gateway provider is part of the AI SDK. + +## Basic Usage + +For most use cases, you can use the AI Gateway directly with a model string: + +```ts +// use plain model string with global provider +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: 'openai/gpt-5', + prompt: 'Hello world', +}); +``` + +```ts +// use provider instance (requires version 5.0.36 or later) +import { generateText, gateway } from 'ai'; + +const { text } = await generateText({ + model: gateway('openai/gpt-5'), + prompt: 'Hello world', +}); +``` + +The AI SDK automatically uses the AI Gateway when you pass a model string in the `creator/model-name` format. + +## Provider Instance + + + The `gateway` provider instance is available from the `ai` package in version + 5.0.36 and later. + + +You can also import the default provider instance `gateway` from `ai`: + +```ts +import { gateway } from 'ai'; +``` + +You may want to create a custom provider instance when you need to: + +- Set custom configuration options (API key, base URL, headers) +- Use the provider in a [provider registry](/docs/ai-sdk-core/provider-management) +- Wrap the provider with [middleware](/docs/ai-sdk-core/middleware) +- Use different settings for different parts of your application + +To create a custom provider instance, import `createGateway` from `ai`: + +```ts +import { createGateway } from 'ai'; + +const gateway = createGateway({ + apiKey: process.env.AI_GATEWAY_API_KEY ?? '', +}); +``` + +You can use the following optional settings to customize the AI Gateway provider instance: + +- **baseURL** _string_ + + Use a different URL prefix for API calls. The default prefix is `https://ai-gateway.vercel.sh/v3/ai`. + +- **apiKey** _string_ + + API key that is being sent using the `Authorization` header. It defaults to + the `AI_GATEWAY_API_KEY` environment variable. + +- **headers** _Record<string,string>_ + + Custom headers to include in the requests. + +- **fetch** _(input: RequestInfo, init?: RequestInit) => Promise<Response>_ + + Custom [fetch](https://developer.mozilla.org/en-US/docs/Web/API/fetch) implementation. + Defaults to the global `fetch` function. + You can use it as a middleware to intercept requests, + or to provide a custom fetch implementation for e.g. testing. + +- **metadataCacheRefreshMillis** _number_ + + How frequently to refresh the metadata cache in milliseconds. Defaults to 5 minutes (300,000ms). + +## Authentication + +The Gateway provider supports two authentication methods: + +### API Key Authentication + +Set your API key via environment variable: + +```bash +AI_GATEWAY_API_KEY=your_api_key_here +``` + +Or pass it directly to the provider: + +```ts +import { createGateway } from 'ai'; + +const gateway = createGateway({ + apiKey: 'your_api_key_here', +}); +``` + +### OIDC Authentication (Vercel Deployments) + +When deployed to Vercel, the AI Gateway provider supports authenticating using [OIDC (OpenID Connect) +tokens](https://vercel.com/docs/oidc) without API Keys. + +#### How OIDC Authentication Works + +1. **In Production/Preview Deployments**: + + - OIDC authentication is automatically handled + - No manual configuration needed + - Tokens are automatically obtained and refreshed + +2. **In Local Development**: + - First, install and authenticate with the [Vercel CLI](https://vercel.com/docs/cli) + - Run `vercel env pull` to download your project's OIDC token locally + - For automatic token management: + - Use `vercel dev` to start your development server - this will handle token refreshing automatically + - For manual token management: + - If not using `vercel dev`, note that OIDC tokens expire after 12 hours + - You'll need to run `vercel env pull` again to refresh the token before it expires + + + If an API Key is present (either passed directly or via environment), it will + always be used, even if invalid. + + +Read more about using OIDC tokens in the [Vercel AI Gateway docs](https://vercel.com/docs/ai-gateway#using-the-ai-gateway-with-a-vercel-oidc-token). + +## Bring Your Own Key (BYOK) + +You can connect your own provider credentials to use with Vercel AI Gateway. This lets you use your existing provider accounts and access private resources. + +To set up BYOK, add your provider credentials in your Vercel team's AI Gateway settings. Once configured, AI Gateway automatically uses your credentials. No code changes are needed. + +Learn more in the [BYOK documentation](https://vercel.com/docs/ai-gateway/byok). + +## Language Models + +You can create language models using a provider instance. The first argument is the model ID in the format `creator/model-name`: + +```ts +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: 'openai/gpt-5', + prompt: 'Explain quantum computing in simple terms', +}); +``` + +AI Gateway language models can also be used in the `streamText` function and support structured data generation with [`Output`](/docs/reference/ai-sdk-core/output) (see [AI SDK Core](/docs/ai-sdk-core)). + +## Available Models + +The AI Gateway supports models from OpenAI, Anthropic, Google, Meta, xAI, Mistral, DeepSeek, Amazon Bedrock, Cohere, Perplexity, Alibaba, and other providers. + +For the complete list of available models, see the [AI Gateway documentation](https://vercel.com/docs/ai-gateway). + +## Dynamic Model Discovery + +You can discover available models programmatically: + +```ts +import { gateway, generateText } from 'ai'; + +const availableModels = await gateway.getAvailableModels(); + +// List all available models +availableModels.models.forEach(model => { + console.log(`${model.id}: ${model.name}`); + if (model.description) { + console.log(` Description: ${model.description}`); + } + if (model.pricing) { + console.log(` Input: $${model.pricing.input}/token`); + console.log(` Output: $${model.pricing.output}/token`); + if (model.pricing.cachedInputTokens) { + console.log( + ` Cached input (read): $${model.pricing.cachedInputTokens}/token`, + ); + } + if (model.pricing.cacheCreationInputTokens) { + console.log( + ` Cache creation (write): $${model.pricing.cacheCreationInputTokens}/token`, + ); + } + } +}); + +// Use any discovered model with plain string +const { text } = await generateText({ + model: availableModels.models[0].id, // e.g., 'openai/gpt-4o' + prompt: 'Hello world', +}); +``` + +## Credit Usage + +You can check your team's current credit balance and usage: + +```ts +import { gateway } from 'ai'; + +const credits = await gateway.getCredits(); + +console.log(`Team balance: ${credits.balance} credits`); +console.log(`Team total used: ${credits.total_used} credits`); +``` + +The `getCredits()` method returns your team's credit information based on the authenticated API key or OIDC token: + +- **balance** _number_ - Your team's current available credit balance +- **total_used** _number_ - Total credits consumed by your team + +## Examples + +### Basic Text Generation + +```ts +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: 'anthropic/claude-sonnet-4', + prompt: 'Write a haiku about programming', +}); + +console.log(text); +``` + +### Streaming + +```ts +import { streamText } from 'ai'; + +const { textStream } = await streamText({ + model: 'openai/gpt-5', + prompt: 'Explain the benefits of serverless architecture', +}); + +for await (const textPart of textStream) { + process.stdout.write(textPart); +} +``` + +### Tool Usage + +```ts +import { generateText, tool } from 'ai'; +import { z } from 'zod'; + +const { text } = await generateText({ + model: 'xai/grok-4', + prompt: 'What is the weather like in San Francisco?', + tools: { + getWeather: tool({ + description: 'Get the current weather for a location', + parameters: z.object({ + location: z.string().describe('The location to get weather for'), + }), + execute: async ({ location }) => { + // Your weather API call here + return `It's sunny in ${location}`; + }, + }), + }, +}); +``` + +### Provider-Executed Tools + +Some providers offer tools that are executed by the provider itself, such as [OpenAI's web search tool](/providers/ai-sdk-providers/openai#web-search-tool). To use these tools through AI Gateway, import the provider to access the tool definitions: + +```ts +import { generateText, stepCountIs } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const result = await generateText({ + model: 'openai/gpt-5-mini', + prompt: 'What is the Vercel AI Gateway?', + stopWhen: stepCountIs(10), + tools: { + web_search: openai.tools.webSearch({}), + }, +}); + +console.dir(result.text); +``` + + + Some provider-executed tools require account-specific configuration (such as + Claude Agent Skills) and may not work through AI Gateway. To use these tools, + you must bring your own key (BYOK) directly to the provider. + + +### Gateway Tools + +The AI Gateway provider includes built-in tools that are executed by the gateway itself. These tools can be used with any model through the gateway. + +#### Perplexity Search + +The Perplexity Search tool enables models to search the web using [Perplexity's search API](https://docs.perplexity.ai/guides/search-quickstart). This tool is executed by the AI Gateway and returns web search results that the model can use to provide up-to-date information. + +```ts +import { gateway, generateText } from 'ai'; + +const result = await generateText({ + model: 'openai/gpt-5-nano', + prompt: 'Search for news about AI regulations in January 2025.', + tools: { + perplexity_search: gateway.tools.perplexitySearch(), + }, +}); + +console.log(result.text); +console.log('Tool calls:', JSON.stringify(result.toolCalls, null, 2)); +console.log('Tool results:', JSON.stringify(result.toolResults, null, 2)); +``` + +You can also configure the search with optional parameters: + +```ts +import { gateway, generateText } from 'ai'; + +const result = await generateText({ + model: 'openai/gpt-5-nano', + prompt: + 'Search for news about AI regulations from the first week of January 2025.', + tools: { + perplexity_search: gateway.tools.perplexitySearch({ + maxResults: 5, + searchLanguageFilter: ['en'], + country: 'US', + searchDomainFilter: ['reuters.com', 'bbc.com', 'nytimes.com'], + }), + }, +}); + +console.log(result.text); +console.log('Tool calls:', JSON.stringify(result.toolCalls, null, 2)); +console.log('Tool results:', JSON.stringify(result.toolResults, null, 2)); +``` + +The Perplexity Search tool supports the following optional configuration options: + +- **maxResults** _number_ + + The maximum number of search results to return (1-20, default: 10). + +- **maxTokensPerPage** _number_ + + The maximum number of tokens to extract per search result page (256-2048, default: 2048). + +- **maxTokens** _number_ + + The maximum total tokens across all search results (default: 25000, max: 1000000). + +- **searchLanguageFilter** _string[]_ + + Filter search results by language using ISO 639-1 language codes (e.g., `['en']` for English, `['en', 'es']` for English and Spanish). + +- **country** _string_ + + Filter search results by country using ISO 3166-1 alpha-2 country codes (e.g., `'US'` for United States, `'GB'` for United Kingdom). + +- **searchDomainFilter** _string[]_ + + Limit search results to specific domains (e.g., `['reuters.com', 'bbc.com']`). This is useful for restricting results to trusted sources. + +- **searchRecencyFilter** _'day' | 'week' | 'month' | 'year'_ + + Filter search results by relative time period. Useful for always getting recent results (e.g., 'week' for results from the last week). + +The tool works with both `generateText` and `streamText`: + +```ts +import { gateway, streamText } from 'ai'; + +const result = streamText({ + model: 'openai/gpt-5-nano', + prompt: 'Search for the latest news about AI regulations.', + tools: { + perplexity_search: gateway.tools.perplexitySearch(), + }, +}); + +for await (const part of result.fullStream) { + switch (part.type) { + case 'text-delta': + process.stdout.write(part.text); + break; + case 'tool-call': + console.log('\nTool call:', JSON.stringify(part, null, 2)); + break; + case 'tool-result': + console.log('\nTool result:', JSON.stringify(part, null, 2)); + break; + } +} +``` + +#### Parallel Search + +The Parallel Search tool enables models to search the web using [Parallel AI's Search API](https://docs.parallel.ai/api-reference/search-beta/search). This tool is optimized for LLM consumption, returning relevant excerpts from web pages that can replace multiple keyword searches with a single call. + +```ts +import { gateway, generateText } from 'ai'; + +const result = await generateText({ + model: 'openai/gpt-5-nano', + prompt: 'Research the latest developments in quantum computing.', + tools: { + parallel_search: gateway.tools.parallelSearch(), + }, +}); + +console.log(result.text); +console.log('Tool calls:', JSON.stringify(result.toolCalls, null, 2)); +console.log('Tool results:', JSON.stringify(result.toolResults, null, 2)); +``` + +You can also configure the search with optional parameters: + +```ts +import { gateway, generateText } from 'ai'; + +const result = await generateText({ + model: 'openai/gpt-5-nano', + prompt: 'Find detailed information about TypeScript 5.0 features.', + tools: { + parallel_search: gateway.tools.parallelSearch({ + mode: 'agentic', + maxResults: 5, + sourcePolicy: { + includeDomains: ['typescriptlang.org', 'github.com'], + }, + excerpts: { + maxCharsPerResult: 8000, + }, + }), + }, +}); + +console.log(result.text); +console.log('Tool calls:', JSON.stringify(result.toolCalls, null, 2)); +console.log('Tool results:', JSON.stringify(result.toolResults, null, 2)); +``` + +The Parallel Search tool supports the following optional configuration options: + +- **mode** _'one-shot' | 'agentic'_ + + Mode preset for different use cases: + + - `'one-shot'` - Comprehensive results with longer excerpts for single-response answers (default) + - `'agentic'` - Concise, token-efficient results optimized for multi-step agentic workflows + +- **maxResults** _number_ + + Maximum number of results to return (1-20). Defaults to 10 if not specified. + +- **sourcePolicy** _object_ + + Source policy for controlling which domains to include/exclude: + + - `includeDomains` - List of domains to include in search results + - `excludeDomains` - List of domains to exclude from search results + - `afterDate` - Only include results published after this date (ISO 8601 format) + +- **excerpts** _object_ + + Excerpt configuration for controlling result length: + + - `maxCharsPerResult` - Maximum characters per result + - `maxCharsTotal` - Maximum total characters across all results + +- **fetchPolicy** _object_ + + Fetch policy for controlling content freshness: + + - `maxAgeSeconds` - Maximum age in seconds for cached content (set to 0 for always fresh) + +The tool works with both `generateText` and `streamText`: + +```ts +import { gateway, streamText } from 'ai'; + +const result = streamText({ + model: 'openai/gpt-5-nano', + prompt: 'Research the latest AI safety guidelines.', + tools: { + parallel_search: gateway.tools.parallelSearch(), + }, +}); + +for await (const part of result.fullStream) { + switch (part.type) { + case 'text-delta': + process.stdout.write(part.text); + break; + case 'tool-call': + console.log('\nTool call:', JSON.stringify(part, null, 2)); + break; + case 'tool-result': + console.log('\nTool result:', JSON.stringify(part, null, 2)); + break; + } +} +``` + +### Usage Tracking with User and Tags + +Track usage per end-user and categorize requests with tags: + +```ts +import type { GatewayLanguageModelOptions } from '@ai-sdk/gateway'; +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: 'openai/gpt-5', + prompt: 'Summarize this document...', + providerOptions: { + gateway: { + user: 'user-abc-123', // Track usage for this specific end-user + tags: ['document-summary', 'premium-feature'], // Categorize for reporting + } satisfies GatewayLanguageModelOptions, + }, +}); +``` + +This allows you to: + +- View usage and costs broken down by end-user in your analytics +- Filter and analyze spending by feature or use case using tags +- Track which users or features are driving the most AI usage + +## Provider Options + +The AI Gateway provider accepts provider options that control routing behavior and provider-specific configurations. + +### Gateway Provider Options + +You can use the `gateway` key in `providerOptions` to control how AI Gateway routes requests: + +```ts +import type { GatewayLanguageModelOptions } from '@ai-sdk/gateway'; +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: 'anthropic/claude-sonnet-4', + prompt: 'Explain quantum computing', + providerOptions: { + gateway: { + order: ['vertex', 'anthropic'], // Try Vertex AI first, then Anthropic + only: ['vertex', 'anthropic'], // Only use these providers + } satisfies GatewayLanguageModelOptions, + }, +}); +``` + +The following gateway provider options are available: + +- **order** _string[]_ + + Specifies the sequence of providers to attempt when routing requests. The gateway will try providers in the order specified. If a provider fails or is unavailable, it will move to the next provider in the list. + + Example: `order: ['bedrock', 'anthropic']` will attempt Amazon Bedrock first, then fall back to Anthropic. + +- **only** _string[]_ + + Restricts routing to only the specified providers. When set, the gateway will never route to providers not in this list, even if they would otherwise be available. + + Example: `only: ['anthropic', 'vertex']` will only allow routing to Anthropic or Vertex AI. + +- **models** _string[]_ + + Specifies fallback models to use when the primary model fails or is unavailable. The gateway will try the primary model first (specified in the `model` parameter), then try each model in this array in order until one succeeds. + + Example: `models: ['openai/gpt-5-nano', 'gemini-2.0-flash']` will try the fallback models in order if the primary model fails. + +- **user** _string_ + + Optional identifier for the end user on whose behalf the request is being made. This is used for spend tracking and attribution purposes, allowing you to track usage per end-user in your application. + + Example: `user: 'user-123'` will associate this request with end-user ID "user-123" in usage reports. + +- **tags** _string[]_ + + Optional array of tags for categorizing and filtering usage in reports. Useful for tracking spend by feature, prompt version, or any other dimension relevant to your application. + + Example: `tags: ['chat', 'v2']` will tag this request with "chat" and "v2" for filtering in usage analytics. + +- **byok** _Record<string, Array<Record<string, unknown>>>_ + + Request-scoped BYOK (Bring Your Own Key) credentials to use for this request. When provided, any cached BYOK credentials configured in the gateway system are not considered. Requests may still fall back to use system credentials if the provided credentials fail. + + Each provider can have multiple credentials (tried in order). The structure is a record where keys are provider slugs and values are arrays of credential objects. + + Examples: + + - Single provider: `byok: { 'anthropic': [{ apiKey: 'sk-ant-...' }] }` + - Multiple credentials: `byok: { 'vertex': [{ project: 'proj-1', googleCredentials: { privateKey: '...', clientEmail: '...' } }, { project: 'proj-2', googleCredentials: { privateKey: '...', clientEmail: '...' } }] }` + - Multiple providers: `byok: { 'anthropic': [{ apiKey: '...' }], 'bedrock': [{ accessKeyId: '...', secretAccessKey: '...' }] }` + +- **zeroDataRetention** _boolean_ + + Restricts routing requests to providers that have zero data retention policies. + +- **providerTimeouts** _object_ + + Per-provider timeouts for BYOK credentials in milliseconds. Controls how long to wait for a provider to start responding before falling back to the next available provider. + + Example: `providerTimeouts: { byok: { openai: 5000, anthropic: 2000 } }` + + For full details, see [Provider Timeouts](https://vercel.com/docs/ai-gateway/models-and-providers/provider-timeouts). + +You can combine these options to have fine-grained control over routing and tracking: + +```ts +import type { GatewayLanguageModelOptions } from '@ai-sdk/gateway'; +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: 'anthropic/claude-sonnet-4', + prompt: 'Write a haiku about programming', + providerOptions: { + gateway: { + order: ['vertex'], // Prefer Vertex AI + only: ['anthropic', 'vertex'], // Only allow these providers + } satisfies GatewayLanguageModelOptions, + }, +}); +``` + +#### Model Fallbacks Example + +The `models` option enables automatic fallback to alternative models when the primary model fails: + +```ts +import type { GatewayLanguageModelOptions } from '@ai-sdk/gateway'; +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: 'openai/gpt-4o', // Primary model + prompt: 'Write a TypeScript haiku', + providerOptions: { + gateway: { + models: ['openai/gpt-5-nano', 'gemini-2.0-flash'], // Fallback models + } satisfies GatewayLanguageModelOptions, + }, +}); + +// This will: +// 1. Try openai/gpt-4o first +// 2. If it fails, try openai/gpt-5-nano +// 3. If that fails, try gemini-2.0-flash +// 4. Return the result from the first model that succeeds +``` + +#### Zero Data Retention Example + +Set `zeroDataRetention` to true to ensure requests are only routed to providers +that have zero data retention policies. When `zeroDataRetention` is `false` or not +specified, there is no enforcement of restricting routing. + +```ts +import type { GatewayLanguageModelOptions } from '@ai-sdk/gateway'; +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: 'anthropic/claude-sonnet-4.5', + prompt: 'Analyze this sensitive document...', + providerOptions: { + gateway: { + zeroDataRetention: true, + } satisfies GatewayLanguageModelOptions, + }, +}); +``` + +### Provider-Specific Options + +When using provider-specific options through AI Gateway, use the actual provider name (e.g. `anthropic`, `openai`, not `gateway`) as the key: + +```ts +import type { AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import type { GatewayLanguageModelOptions } from '@ai-sdk/gateway'; +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: 'anthropic/claude-sonnet-4', + prompt: 'Explain quantum computing', + providerOptions: { + gateway: { + order: ['vertex', 'anthropic'], + } satisfies GatewayLanguageModelOptions, + anthropic: { + thinking: { type: 'enabled', budgetTokens: 12000 }, + } satisfies AnthropicLanguageModelOptions, + }, +}); +``` + +This works with any provider supported by AI Gateway. Each provider has its own set of options - see the individual [provider documentation pages](/providers/ai-sdk-providers) for details on provider-specific options. + +### Available Providers + +AI Gateway supports routing to 20+ providers. + +For a complete list of available providers and their slugs, see the [AI Gateway documentation](https://vercel.com/docs/ai-gateway/provider-options#available-providers). + +## Model Capabilities + +Model capabilities depend on the specific provider and model you're using. For detailed capability information, see: + +- [AI Gateway provider options](https://vercel.com/docs/ai-gateway/provider-options#available-providers) for an overview of available providers +- Individual [AI SDK provider pages](/providers/ai-sdk-providers) for specific model capabilities and features diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/package.json new file mode 100644 index 000000000..66da58a04 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/package.json @@ -0,0 +1,78 @@ +{ + "name": "@ai-sdk/gateway", + "private": false, + "version": "3.0.80", + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist/**/*", + "docs/**/*", + "src", + "!src/**/*.test.ts", + "!src/**/*.test-d.ts", + "!src/**/__snapshots__", + "!src/**/__fixtures__", + "CHANGELOG.md", + "README.md" + ], + "directories": { + "doc": "./docs" + }, + "exports": { + "./package.json": "./package.json", + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + } + }, + "dependencies": { + "@vercel/oidc": "3.1.0", + "@ai-sdk/provider": "3.0.8", + "@ai-sdk/provider-utils": "4.0.21" + }, + "devDependencies": { + "@types/node": "18.15.11", + "tsup": "^8", + "tsx": "4.19.2", + "typescript": "5.8.3", + "zod": "3.25.76", + "@ai-sdk/test-server": "1.0.3", + "@vercel/ai-tsconfig": "0.0.0" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + }, + "engines": { + "node": ">=18" + }, + "publishConfig": { + "access": "public" + }, + "homepage": "https://ai-sdk.dev/docs", + "repository": { + "type": "git", + "url": "git+https://github.com/vercel/ai.git" + }, + "bugs": { + "url": "https://github.com/vercel/ai/issues" + }, + "keywords": [ + "ai" + ], + "scripts": { + "build": "pnpm clean && tsup --tsconfig tsconfig.build.json", + "build:watch": "pnpm clean && tsup --watch", + "clean": "del-cli dist docs *.tsbuildinfo", + "generate-model-settings": "tsx scripts/generate-model-settings.ts", + "type-check": "tsc --build", + "test": "pnpm test:node && pnpm test:edge", + "test:update": "pnpm test:node -u", + "test:watch": "vitest --config vitest.node.config.js", + "test:edge": "vitest --config vitest.edge.config.js --run", + "test:node": "vitest --config vitest.node.config.js --run" + } +} \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/as-gateway-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/as-gateway-error.ts new file mode 100644 index 000000000..07ae080ef --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/as-gateway-error.ts @@ -0,0 +1,74 @@ +import { APICallError } from '@ai-sdk/provider'; +import { extractApiCallResponse, GatewayError } from '.'; +import { createGatewayErrorFromResponse } from './create-gateway-error'; +import { GatewayTimeoutError } from './gateway-timeout-error'; + +/** + * Checks if an error is a timeout error from undici. + * Only checks undici-specific error codes to avoid false positives. + */ +function isTimeoutError(error: unknown): boolean { + if (!(error instanceof Error)) { + return false; + } + + // Check for undici-specific timeout error codes + const errorCode = (error as any).code; + if (typeof errorCode === 'string') { + const undiciTimeoutCodes = [ + 'UND_ERR_HEADERS_TIMEOUT', + 'UND_ERR_BODY_TIMEOUT', + 'UND_ERR_CONNECT_TIMEOUT', + ]; + return undiciTimeoutCodes.includes(errorCode); + } + + return false; +} + +export async function asGatewayError( + error: unknown, + authMethod?: 'api-key' | 'oidc', +) { + if (GatewayError.isInstance(error)) { + return error; + } + + // Check if this is a timeout error (or has a timeout error in the cause chain) + if (isTimeoutError(error)) { + return GatewayTimeoutError.createTimeoutError({ + originalMessage: error instanceof Error ? error.message : 'Unknown error', + cause: error, + }); + } + + // Check if this is an APICallError caused by a timeout + if (APICallError.isInstance(error)) { + // Check if the cause is a timeout error + if (error.cause && isTimeoutError(error.cause)) { + return GatewayTimeoutError.createTimeoutError({ + originalMessage: error.message, + cause: error, + }); + } + + return await createGatewayErrorFromResponse({ + response: extractApiCallResponse(error), + statusCode: error.statusCode ?? 500, + defaultMessage: 'Gateway request failed', + cause: error, + authMethod, + }); + } + + return await createGatewayErrorFromResponse({ + response: {}, + statusCode: 500, + defaultMessage: + error instanceof Error + ? `Gateway request failed: ${error.message}` + : 'Unknown Gateway error', + cause: error, + authMethod, + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/create-gateway-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/create-gateway-error.ts new file mode 100644 index 000000000..68a827de1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/create-gateway-error.ts @@ -0,0 +1,132 @@ +import { z } from 'zod/v4'; +import type { GatewayError } from './gateway-error'; +import { GatewayAuthenticationError } from './gateway-authentication-error'; +import { GatewayInvalidRequestError } from './gateway-invalid-request-error'; +import { GatewayRateLimitError } from './gateway-rate-limit-error'; +import { + GatewayModelNotFoundError, + modelNotFoundParamSchema, +} from './gateway-model-not-found-error'; +import { GatewayInternalServerError } from './gateway-internal-server-error'; +import { GatewayResponseError } from './gateway-response-error'; +import { + InferSchema, + lazySchema, + safeValidateTypes, + validateTypes, + zodSchema, +} from '@ai-sdk/provider-utils'; + +export async function createGatewayErrorFromResponse({ + response, + statusCode, + defaultMessage = 'Gateway request failed', + cause, + authMethod, +}: { + response: unknown; + statusCode: number; + defaultMessage?: string; + cause?: unknown; + authMethod?: 'api-key' | 'oidc'; +}): Promise { + const parseResult = await safeValidateTypes({ + value: response, + schema: gatewayErrorResponseSchema, + }); + + if (!parseResult.success) { + // Try to extract generationId even if validation failed + const rawGenerationId = + typeof response === 'object' && + response !== null && + 'generationId' in response + ? (response as { generationId?: string }).generationId + : undefined; + + return new GatewayResponseError({ + message: `Invalid error response format: ${defaultMessage}`, + statusCode, + response, + validationError: parseResult.error, + cause, + generationId: rawGenerationId, + }); + } + + const validatedResponse: GatewayErrorResponse = parseResult.value; + const errorType = validatedResponse.error.type; + const message = validatedResponse.error.message; + const generationId = validatedResponse.generationId ?? undefined; + + switch (errorType) { + case 'authentication_error': + return GatewayAuthenticationError.createContextualError({ + apiKeyProvided: authMethod === 'api-key', + oidcTokenProvided: authMethod === 'oidc', + statusCode, + cause, + generationId, + }); + case 'invalid_request_error': + return new GatewayInvalidRequestError({ + message, + statusCode, + cause, + generationId, + }); + case 'rate_limit_exceeded': + return new GatewayRateLimitError({ + message, + statusCode, + cause, + generationId, + }); + case 'model_not_found': { + const modelResult = await safeValidateTypes({ + value: validatedResponse.error.param, + schema: modelNotFoundParamSchema, + }); + + return new GatewayModelNotFoundError({ + message, + statusCode, + modelId: modelResult.success ? modelResult.value.modelId : undefined, + cause, + generationId, + }); + } + case 'internal_server_error': + return new GatewayInternalServerError({ + message, + statusCode, + cause, + generationId, + }); + default: + return new GatewayInternalServerError({ + message, + statusCode, + cause, + generationId, + }); + } +} + +const gatewayErrorResponseSchema = lazySchema(() => + zodSchema( + z.object({ + error: z.object({ + message: z.string(), + type: z.string().nullish(), + param: z.unknown().nullish(), + code: z.union([z.string(), z.number()]).nullish(), + }), + generationId: z.string().nullish(), + }), + ), +); + +export type GatewayErrorResponse = InferSchema< + typeof gatewayErrorResponseSchema +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/extract-api-call-response.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/extract-api-call-response.ts new file mode 100644 index 000000000..e99662aac --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/extract-api-call-response.ts @@ -0,0 +1,15 @@ +import type { APICallError } from '@ai-sdk/provider'; + +export function extractApiCallResponse(error: APICallError): unknown { + if (error.data !== undefined) { + return error.data; + } + if (error.responseBody != null) { + try { + return JSON.parse(error.responseBody); + } catch { + return error.responseBody; + } + } + return {}; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-authentication-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-authentication-error.ts new file mode 100644 index 000000000..f62136104 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-authentication-error.ts @@ -0,0 +1,84 @@ +import { GatewayError } from './gateway-error'; + +const name = 'GatewayAuthenticationError'; +const marker = `vercel.ai.gateway.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * Authentication failed - invalid API key or OIDC token + */ +export class GatewayAuthenticationError extends GatewayError { + private readonly [symbol] = true; // used in isInstance + + readonly name = name; + readonly type = 'authentication_error'; + + constructor({ + message = 'Authentication failed', + statusCode = 401, + cause, + generationId, + }: { + message?: string; + statusCode?: number; + cause?: unknown; + generationId?: string; + } = {}) { + super({ message, statusCode, cause, generationId }); + } + + static isInstance(error: unknown): error is GatewayAuthenticationError { + return GatewayError.hasMarker(error) && symbol in error; + } + + /** + * Creates a contextual error message when authentication fails + */ + static createContextualError({ + apiKeyProvided, + oidcTokenProvided, + message = 'Authentication failed', + statusCode = 401, + cause, + generationId, + }: { + apiKeyProvided: boolean; + oidcTokenProvided: boolean; + message?: string; + statusCode?: number; + cause?: unknown; + generationId?: string; + }): GatewayAuthenticationError { + let contextualMessage: string; + + if (apiKeyProvided) { + contextualMessage = `AI Gateway authentication failed: Invalid API key. + +Create a new API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys + +Provide via 'apiKey' option or 'AI_GATEWAY_API_KEY' environment variable.`; + } else if (oidcTokenProvided) { + contextualMessage = `AI Gateway authentication failed: Invalid OIDC token. + +Run 'npx vercel link' to link your project, then 'vc env pull' to fetch the token. + +Alternatively, use an API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys`; + } else { + contextualMessage = `AI Gateway authentication failed: No authentication provided. + +Option 1 - API key: +Create an API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys +Provide via 'apiKey' option or 'AI_GATEWAY_API_KEY' environment variable. + +Option 2 - OIDC token: +Run 'npx vercel link' to link your project, then 'vc env pull' to fetch the token.`; + } + + return new GatewayAuthenticationError({ + message: contextualMessage, + statusCode, + cause, + generationId, + }); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-error.ts new file mode 100644 index 000000000..669dcc294 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-error.ts @@ -0,0 +1,47 @@ +const marker = 'vercel.ai.gateway.error'; +const symbol = Symbol.for(marker); + +export abstract class GatewayError extends Error { + private readonly [symbol] = true; // used in isInstance + + abstract readonly name: string; + abstract readonly type: string; + readonly statusCode: number; + readonly cause?: unknown; + readonly generationId?: string; + + constructor({ + message, + statusCode = 500, + cause, + generationId, + }: { + message: string; + statusCode?: number; + cause?: unknown; + generationId?: string; + }) { + super(generationId ? `${message} [${generationId}]` : message); + this.statusCode = statusCode; + this.cause = cause; + this.generationId = generationId; + } + + /** + * Checks if the given error is a Gateway Error. + * @param {unknown} error - The error to check. + * @returns {boolean} True if the error is a Gateway Error, false otherwise. + */ + static isInstance(error: unknown): error is GatewayError { + return GatewayError.hasMarker(error); + } + + static hasMarker(error: unknown): error is GatewayError { + return ( + typeof error === 'object' && + error !== null && + symbol in error && + (error as any)[symbol] === true + ); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-internal-server-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-internal-server-error.ts new file mode 100644 index 000000000..4b2e99909 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-internal-server-error.ts @@ -0,0 +1,33 @@ +import { GatewayError } from './gateway-error'; + +const name = 'GatewayInternalServerError'; +const marker = `vercel.ai.gateway.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * Internal server error from the Gateway + */ +export class GatewayInternalServerError extends GatewayError { + private readonly [symbol] = true; // used in isInstance + + readonly name = name; + readonly type = 'internal_server_error'; + + constructor({ + message = 'Internal server error', + statusCode = 500, + cause, + generationId, + }: { + message?: string; + statusCode?: number; + cause?: unknown; + generationId?: string; + } = {}) { + super({ message, statusCode, cause, generationId }); + } + + static isInstance(error: unknown): error is GatewayInternalServerError { + return GatewayError.hasMarker(error) && symbol in error; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-invalid-request-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-invalid-request-error.ts new file mode 100644 index 000000000..c7ec507e9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-invalid-request-error.ts @@ -0,0 +1,33 @@ +import { GatewayError } from './gateway-error'; + +const name = 'GatewayInvalidRequestError'; +const marker = `vercel.ai.gateway.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * Invalid request - missing headers, malformed data, etc. + */ +export class GatewayInvalidRequestError extends GatewayError { + private readonly [symbol] = true; // used in isInstance + + readonly name = name; + readonly type = 'invalid_request_error'; + + constructor({ + message = 'Invalid request', + statusCode = 400, + cause, + generationId, + }: { + message?: string; + statusCode?: number; + cause?: unknown; + generationId?: string; + } = {}) { + super({ message, statusCode, cause, generationId }); + } + + static isInstance(error: unknown): error is GatewayInvalidRequestError { + return GatewayError.hasMarker(error) && symbol in error; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-model-not-found-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-model-not-found-error.ts new file mode 100644 index 000000000..6f23fda81 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-model-not-found-error.ts @@ -0,0 +1,47 @@ +import { z } from 'zod/v4'; +import { GatewayError } from './gateway-error'; +import { lazySchema, zodSchema } from '@ai-sdk/provider-utils'; + +const name = 'GatewayModelNotFoundError'; +const marker = `vercel.ai.gateway.error.${name}`; +const symbol = Symbol.for(marker); + +export const modelNotFoundParamSchema = lazySchema(() => + zodSchema( + z.object({ + modelId: z.string(), + }), + ), +); + +/** + * Model not found or not available + */ +export class GatewayModelNotFoundError extends GatewayError { + private readonly [symbol] = true; // used in isInstance + + readonly name = name; + readonly type = 'model_not_found'; + readonly modelId?: string; + + constructor({ + message = 'Model not found', + statusCode = 404, + modelId, + cause, + generationId, + }: { + message?: string; + statusCode?: number; + modelId?: string; + cause?: unknown; + generationId?: string; + } = {}) { + super({ message, statusCode, cause, generationId }); + this.modelId = modelId; + } + + static isInstance(error: unknown): error is GatewayModelNotFoundError { + return GatewayError.hasMarker(error) && symbol in error; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-rate-limit-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-rate-limit-error.ts new file mode 100644 index 000000000..09867eead --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-rate-limit-error.ts @@ -0,0 +1,33 @@ +import { GatewayError } from './gateway-error'; + +const name = 'GatewayRateLimitError'; +const marker = `vercel.ai.gateway.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * Rate limit exceeded. + */ +export class GatewayRateLimitError extends GatewayError { + private readonly [symbol] = true; // used in isInstance + + readonly name = name; + readonly type = 'rate_limit_exceeded'; + + constructor({ + message = 'Rate limit exceeded', + statusCode = 429, + cause, + generationId, + }: { + message?: string; + statusCode?: number; + cause?: unknown; + generationId?: string; + } = {}) { + super({ message, statusCode, cause, generationId }); + } + + static isInstance(error: unknown): error is GatewayRateLimitError { + return GatewayError.hasMarker(error) && symbol in error; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-response-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-response-error.ts new file mode 100644 index 000000000..7bc05d7c7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-response-error.ts @@ -0,0 +1,42 @@ +import { TypeValidationError } from '@ai-sdk/provider'; +import { GatewayError } from './gateway-error'; + +const name = 'GatewayResponseError'; +const marker = `vercel.ai.gateway.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * Gateway response parsing error + */ +export class GatewayResponseError extends GatewayError { + private readonly [symbol] = true; // used in isInstance + + readonly name = name; + readonly type = 'response_error'; + readonly response?: unknown; + readonly validationError?: TypeValidationError; + + constructor({ + message = 'Invalid response from Gateway', + statusCode = 502, + response, + validationError, + cause, + generationId, + }: { + message?: string; + statusCode?: number; + response?: unknown; + validationError?: TypeValidationError; + cause?: unknown; + generationId?: string; + } = {}) { + super({ message, statusCode, cause, generationId }); + this.response = response; + this.validationError = validationError; + } + + static isInstance(error: unknown): error is GatewayResponseError { + return GatewayError.hasMarker(error) && symbol in error; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-timeout-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-timeout-error.ts new file mode 100644 index 000000000..d99df6293 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/gateway-timeout-error.ts @@ -0,0 +1,59 @@ +import { GatewayError } from './gateway-error'; + +const name = 'GatewayTimeoutError'; +const marker = `vercel.ai.gateway.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * Client request timed out before receiving a response. + */ +export class GatewayTimeoutError extends GatewayError { + private readonly [symbol] = true; // used in isInstance + + readonly name = name; + readonly type = 'timeout_error'; + + constructor({ + message = 'Request timed out', + statusCode = 408, + cause, + generationId, + }: { + message?: string; + statusCode?: number; + cause?: unknown; + generationId?: string; + } = {}) { + super({ message, statusCode, cause, generationId }); + } + + static isInstance(error: unknown): error is GatewayTimeoutError { + return GatewayError.hasMarker(error) && symbol in error; + } + + /** + * Creates a helpful timeout error message with troubleshooting guidance + */ + static createTimeoutError({ + originalMessage, + statusCode = 408, + cause, + generationId, + }: { + originalMessage: string; + statusCode?: number; + cause?: unknown; + generationId?: string; + }): GatewayTimeoutError { + const message = `Gateway request timed out: ${originalMessage} + + This is a client-side timeout. To resolve this, increase your timeout configuration: https://vercel.com/docs/ai-gateway/capabilities/video-generation#extending-timeouts-for-node.js`; + + return new GatewayTimeoutError({ + message, + statusCode, + cause, + generationId, + }); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/index.ts new file mode 100644 index 000000000..e5d8f7f7e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/index.ts @@ -0,0 +1,17 @@ +export { asGatewayError } from './as-gateway-error'; +export { + createGatewayErrorFromResponse, + type GatewayErrorResponse, +} from './create-gateway-error'; +export { extractApiCallResponse } from './extract-api-call-response'; +export { GatewayError } from './gateway-error'; +export { GatewayAuthenticationError } from './gateway-authentication-error'; +export { GatewayInternalServerError } from './gateway-internal-server-error'; +export { GatewayInvalidRequestError } from './gateway-invalid-request-error'; +export { + GatewayModelNotFoundError, + modelNotFoundParamSchema, +} from './gateway-model-not-found-error'; +export { GatewayRateLimitError } from './gateway-rate-limit-error'; +export { GatewayResponseError } from './gateway-response-error'; +export { GatewayTimeoutError } from './gateway-timeout-error'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/parse-auth-method.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/parse-auth-method.ts new file mode 100644 index 000000000..3efe41a6f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/errors/parse-auth-method.ts @@ -0,0 +1,23 @@ +import { z } from 'zod/v4'; +import { + lazySchema, + safeValidateTypes, + zodSchema, +} from '@ai-sdk/provider-utils'; + +export const GATEWAY_AUTH_METHOD_HEADER = 'ai-gateway-auth-method' as const; + +export async function parseAuthMethod( + headers: Record, +) { + const result = await safeValidateTypes({ + value: headers[GATEWAY_AUTH_METHOD_HEADER], + schema: gatewayAuthMethodSchema, + }); + + return result.success ? result.value : undefined; +} + +const gatewayAuthMethodSchema = lazySchema(() => + zodSchema(z.union([z.literal('api-key'), z.literal('oidc')])), +); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-config.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-config.ts new file mode 100644 index 000000000..3edf37da6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-config.ts @@ -0,0 +1,7 @@ +import type { FetchFunction, Resolvable } from '@ai-sdk/provider-utils'; + +export type GatewayConfig = { + baseURL: string; + headers: () => Resolvable>; + fetch?: FetchFunction; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-embedding-model-settings.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-embedding-model-settings.ts new file mode 100644 index 000000000..70d8384e8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-embedding-model-settings.ts @@ -0,0 +1,26 @@ +export type GatewayEmbeddingModelId = + | 'alibaba/qwen3-embedding-0.6b' + | 'alibaba/qwen3-embedding-4b' + | 'alibaba/qwen3-embedding-8b' + | 'amazon/titan-embed-text-v2' + | 'cohere/embed-v4.0' + | 'google/gemini-embedding-001' + | 'google/gemini-embedding-2' + | 'google/text-embedding-005' + | 'google/text-multilingual-embedding-002' + | 'mistral/codestral-embed' + | 'mistral/mistral-embed' + | 'openai/text-embedding-3-large' + | 'openai/text-embedding-3-small' + | 'openai/text-embedding-ada-002' + | 'voyage/voyage-3-large' + | 'voyage/voyage-3.5' + | 'voyage/voyage-3.5-lite' + | 'voyage/voyage-4' + | 'voyage/voyage-4-large' + | 'voyage/voyage-4-lite' + | 'voyage/voyage-code-2' + | 'voyage/voyage-code-3' + | 'voyage/voyage-finance-2' + | 'voyage/voyage-law-2' + | (string & {}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-embedding-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-embedding-model.ts new file mode 100644 index 000000000..80c9ee1d4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-embedding-model.ts @@ -0,0 +1,109 @@ +import type { + EmbeddingModelV3, + SharedV3ProviderMetadata, +} from '@ai-sdk/provider'; +import { + combineHeaders, + createJsonErrorResponseHandler, + createJsonResponseHandler, + lazySchema, + postJsonToApi, + resolve, + zodSchema, + type Resolvable, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; +import { asGatewayError } from './errors'; +import { parseAuthMethod } from './errors/parse-auth-method'; +import type { GatewayConfig } from './gateway-config'; + +export class GatewayEmbeddingModel implements EmbeddingModelV3 { + readonly specificationVersion = 'v3'; + readonly maxEmbeddingsPerCall = 2048; + readonly supportsParallelCalls = true; + + constructor( + readonly modelId: string, + private readonly config: GatewayConfig & { + provider: string; + o11yHeaders: Resolvable>; + }, + ) {} + + get provider(): string { + return this.config.provider; + } + + async doEmbed({ + values, + headers, + abortSignal, + providerOptions, + }: Parameters[0]): Promise< + Awaited> + > { + const resolvedHeaders = await resolve(this.config.headers()); + try { + const { + responseHeaders, + value: responseBody, + rawValue, + } = await postJsonToApi({ + url: this.getUrl(), + headers: combineHeaders( + resolvedHeaders, + headers ?? {}, + this.getModelConfigHeaders(), + await resolve(this.config.o11yHeaders), + ), + body: { + values, + ...(providerOptions ? { providerOptions } : {}), + }, + successfulResponseHandler: createJsonResponseHandler( + gatewayEmbeddingResponseSchema, + ), + failedResponseHandler: createJsonErrorResponseHandler({ + errorSchema: z.any(), + errorToMessage: data => data, + }), + ...(abortSignal && { abortSignal }), + fetch: this.config.fetch, + }); + + return { + embeddings: responseBody.embeddings, + usage: responseBody.usage ?? undefined, + providerMetadata: + responseBody.providerMetadata as unknown as SharedV3ProviderMetadata, + response: { headers: responseHeaders, body: rawValue }, + warnings: [], + }; + } catch (error) { + throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders)); + } + } + + private getUrl() { + return `${this.config.baseURL}/embedding-model`; + } + + private getModelConfigHeaders() { + return { + 'ai-embedding-model-specification-version': '3', + 'ai-model-id': this.modelId, + }; + } +} + +const gatewayEmbeddingResponseSchema = lazySchema(() => + zodSchema( + z.object({ + embeddings: z.array(z.array(z.number())), + usage: z.object({ tokens: z.number() }).nullish(), + providerMetadata: z + .record(z.string(), z.record(z.string(), z.unknown())) + .optional(), + }), + ), +); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-fetch-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-fetch-metadata.ts new file mode 100644 index 000000000..44f8c3c3d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-fetch-metadata.ts @@ -0,0 +1,129 @@ +import { + createJsonErrorResponseHandler, + createJsonResponseHandler, + getFromApi, + lazySchema, + resolve, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; +import { asGatewayError } from './errors'; +import type { GatewayConfig } from './gateway-config'; +import type { GatewayLanguageModelEntry } from './gateway-model-entry'; + +type GatewayFetchMetadataConfig = GatewayConfig; + +export interface GatewayFetchMetadataResponse { + models: GatewayLanguageModelEntry[]; +} + +export interface GatewayCreditsResponse { + /** The remaining gateway credit balance available for API usage */ + balance: string; + /** The total amount of gateway credits that have been consumed */ + totalUsed: string; +} + +export class GatewayFetchMetadata { + constructor(private readonly config: GatewayFetchMetadataConfig) {} + + async getAvailableModels(): Promise { + try { + const { value } = await getFromApi({ + url: `${this.config.baseURL}/config`, + headers: await resolve(this.config.headers()), + successfulResponseHandler: createJsonResponseHandler( + gatewayAvailableModelsResponseSchema, + ), + failedResponseHandler: createJsonErrorResponseHandler({ + errorSchema: z.any(), + errorToMessage: data => data, + }), + fetch: this.config.fetch, + }); + + return value; + } catch (error) { + throw await asGatewayError(error); + } + } + + async getCredits(): Promise { + try { + const baseUrl = new URL(this.config.baseURL); + + const { value } = await getFromApi({ + url: `${baseUrl.origin}/v1/credits`, + headers: await resolve(this.config.headers()), + successfulResponseHandler: createJsonResponseHandler( + gatewayCreditsResponseSchema, + ), + failedResponseHandler: createJsonErrorResponseHandler({ + errorSchema: z.any(), + errorToMessage: data => data, + }), + fetch: this.config.fetch, + }); + + return value; + } catch (error) { + throw await asGatewayError(error); + } + } +} + +const gatewayAvailableModelsResponseSchema = lazySchema(() => + zodSchema( + z.object({ + models: z.array( + z.object({ + id: z.string(), + name: z.string(), + description: z.string().nullish(), + pricing: z + .object({ + input: z.string(), + output: z.string(), + input_cache_read: z.string().nullish(), + input_cache_write: z.string().nullish(), + }) + .transform( + ({ input, output, input_cache_read, input_cache_write }) => ({ + input, + output, + ...(input_cache_read + ? { cachedInputTokens: input_cache_read } + : {}), + ...(input_cache_write + ? { cacheCreationInputTokens: input_cache_write } + : {}), + }), + ) + .nullish(), + specification: z.object({ + specificationVersion: z.literal('v3'), + provider: z.string(), + modelId: z.string(), + }), + modelType: z + .enum(['embedding', 'image', 'language', 'video']) + .nullish(), + }), + ), + }), + ), +); + +const gatewayCreditsResponseSchema = lazySchema(() => + zodSchema( + z + .object({ + balance: z.string(), + total_used: z.string(), + }) + .transform(({ balance, total_used }) => ({ + balance, + totalUsed: total_used, + })), + ), +); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-image-model-settings.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-image-model-settings.ts new file mode 100644 index 000000000..f48bff9d8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-image-model-settings.ts @@ -0,0 +1,25 @@ +export type GatewayImageModelId = + | 'bfl/flux-2-flex' + | 'bfl/flux-2-klein-4b' + | 'bfl/flux-2-klein-9b' + | 'bfl/flux-2-max' + | 'bfl/flux-2-pro' + | 'bfl/flux-kontext-max' + | 'bfl/flux-kontext-pro' + | 'bfl/flux-pro-1.0-fill' + | 'bfl/flux-pro-1.1' + | 'bfl/flux-pro-1.1-ultra' + | 'google/imagen-4.0-fast-generate-001' + | 'google/imagen-4.0-generate-001' + | 'google/imagen-4.0-ultra-generate-001' + | 'openai/gpt-image-1' + | 'openai/gpt-image-1-mini' + | 'openai/gpt-image-1.5' + | 'prodia/flux-fast-schnell' + | 'recraft/recraft-v2' + | 'recraft/recraft-v3' + | 'recraft/recraft-v4' + | 'recraft/recraft-v4-pro' + | 'xai/grok-imagine-image' + | 'xai/grok-imagine-image-pro' + | (string & {}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-image-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-image-model.ts new file mode 100644 index 000000000..44b698875 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-image-model.ts @@ -0,0 +1,169 @@ +import type { + ImageModelV3, + ImageModelV3File, + ImageModelV3ProviderMetadata, +} from '@ai-sdk/provider'; +import { + combineHeaders, + convertUint8ArrayToBase64, + createJsonResponseHandler, + createJsonErrorResponseHandler, + postJsonToApi, + resolve, + type Resolvable, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; +import type { GatewayConfig } from './gateway-config'; +import { asGatewayError } from './errors'; +import { parseAuthMethod } from './errors/parse-auth-method'; + +export class GatewayImageModel implements ImageModelV3 { + readonly specificationVersion = 'v3' as const; + // Set a very large number to prevent client-side splitting of requests + readonly maxImagesPerCall = Number.MAX_SAFE_INTEGER; + + constructor( + readonly modelId: string, + private readonly config: GatewayConfig & { + provider: string; + o11yHeaders: Resolvable>; + }, + ) {} + + get provider(): string { + return this.config.provider; + } + + async doGenerate({ + prompt, + n, + size, + aspectRatio, + seed, + files, + mask, + providerOptions, + headers, + abortSignal, + }: Parameters[0]): Promise< + Awaited> + > { + const resolvedHeaders = await resolve(this.config.headers()); + try { + const { + responseHeaders, + value: responseBody, + rawValue, + } = await postJsonToApi({ + url: this.getUrl(), + headers: combineHeaders( + resolvedHeaders, + headers ?? {}, + this.getModelConfigHeaders(), + await resolve(this.config.o11yHeaders), + ), + body: { + prompt, + n, + ...(size && { size }), + ...(aspectRatio && { aspectRatio }), + ...(seed && { seed }), + ...(providerOptions && { providerOptions }), + ...(files && { + files: files.map(file => maybeEncodeImageFile(file)), + }), + ...(mask && { mask: maybeEncodeImageFile(mask) }), + }, + successfulResponseHandler: createJsonResponseHandler( + gatewayImageResponseSchema, + ), + failedResponseHandler: createJsonErrorResponseHandler({ + errorSchema: z.any(), + errorToMessage: data => data, + }), + ...(abortSignal && { abortSignal }), + fetch: this.config.fetch, + }); + + return { + images: responseBody.images, // Always base64 strings from server + warnings: responseBody.warnings ?? [], + providerMetadata: + responseBody.providerMetadata as ImageModelV3ProviderMetadata, + response: { + timestamp: new Date(), + modelId: this.modelId, + headers: responseHeaders, + }, + ...(responseBody.usage != null && { + usage: { + inputTokens: responseBody.usage.inputTokens ?? undefined, + outputTokens: responseBody.usage.outputTokens ?? undefined, + totalTokens: responseBody.usage.totalTokens ?? undefined, + }, + }), + }; + } catch (error) { + throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders)); + } + } + + private getUrl() { + return `${this.config.baseURL}/image-model`; + } + + private getModelConfigHeaders() { + return { + 'ai-image-model-specification-version': '3', + 'ai-model-id': this.modelId, + }; + } +} + +function maybeEncodeImageFile(file: ImageModelV3File) { + if (file.type === 'file' && file.data instanceof Uint8Array) { + return { + ...file, + data: convertUint8ArrayToBase64(file.data), + }; + } + return file; +} + +const providerMetadataEntrySchema = z + .object({ + images: z.array(z.unknown()).optional(), + }) + .catchall(z.unknown()); + +const gatewayImageWarningSchema = z.discriminatedUnion('type', [ + z.object({ + type: z.literal('unsupported'), + feature: z.string(), + details: z.string().optional(), + }), + z.object({ + type: z.literal('compatibility'), + feature: z.string(), + details: z.string().optional(), + }), + z.object({ + type: z.literal('other'), + message: z.string(), + }), +]); + +const gatewayImageUsageSchema = z.object({ + inputTokens: z.number().nullish(), + outputTokens: z.number().nullish(), + totalTokens: z.number().nullish(), +}); + +const gatewayImageResponseSchema = z.object({ + images: z.array(z.string()), // Always base64 strings over the wire + warnings: z.array(gatewayImageWarningSchema).optional(), + providerMetadata: z + .record(z.string(), providerMetadataEntrySchema) + .optional(), + usage: gatewayImageUsageSchema.optional(), +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-language-model-settings.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-language-model-settings.ts new file mode 100644 index 000000000..06bf147c4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-language-model-settings.ts @@ -0,0 +1,183 @@ +export type GatewayModelId = + | 'alibaba/qwen-3-14b' + | 'alibaba/qwen-3-235b' + | 'alibaba/qwen-3-30b' + | 'alibaba/qwen-3-32b' + | 'alibaba/qwen3-235b-a22b-thinking' + | 'alibaba/qwen3-coder' + | 'alibaba/qwen3-coder-30b-a3b' + | 'alibaba/qwen3-coder-next' + | 'alibaba/qwen3-coder-plus' + | 'alibaba/qwen3-max' + | 'alibaba/qwen3-max-preview' + | 'alibaba/qwen3-max-thinking' + | 'alibaba/qwen3-next-80b-a3b-instruct' + | 'alibaba/qwen3-next-80b-a3b-thinking' + | 'alibaba/qwen3-vl-instruct' + | 'alibaba/qwen3-vl-thinking' + | 'alibaba/qwen3.5-flash' + | 'alibaba/qwen3.5-plus' + | 'amazon/nova-2-lite' + | 'amazon/nova-lite' + | 'amazon/nova-micro' + | 'amazon/nova-pro' + | 'anthropic/claude-3-haiku' + | 'anthropic/claude-3-opus' + | 'anthropic/claude-3.5-haiku' + | 'anthropic/claude-3.5-sonnet' + | 'anthropic/claude-3.5-sonnet-20240620' + | 'anthropic/claude-3.7-sonnet' + | 'anthropic/claude-haiku-4.5' + | 'anthropic/claude-opus-4' + | 'anthropic/claude-opus-4.1' + | 'anthropic/claude-opus-4.5' + | 'anthropic/claude-opus-4.6' + | 'anthropic/claude-sonnet-4' + | 'anthropic/claude-sonnet-4.5' + | 'anthropic/claude-sonnet-4.6' + | 'arcee-ai/trinity-large-preview' + | 'arcee-ai/trinity-mini' + | 'bytedance/seed-1.6' + | 'bytedance/seed-1.8' + | 'cohere/command-a' + | 'deepseek/deepseek-r1' + | 'deepseek/deepseek-v3' + | 'deepseek/deepseek-v3.1' + | 'deepseek/deepseek-v3.1-terminus' + | 'deepseek/deepseek-v3.2' + | 'deepseek/deepseek-v3.2-thinking' + | 'google/gemini-2.0-flash' + | 'google/gemini-2.0-flash-lite' + | 'google/gemini-2.5-flash' + | 'google/gemini-2.5-flash-image' + | 'google/gemini-2.5-flash-lite' + | 'google/gemini-2.5-pro' + | 'google/gemini-3-flash' + | 'google/gemini-3-pro-image' + | 'google/gemini-3-pro-preview' + | 'google/gemini-3.1-flash-image-preview' + | 'google/gemini-3.1-flash-lite-preview' + | 'google/gemini-3.1-pro-preview' + | 'inception/mercury-2' + | 'inception/mercury-coder-small' + | 'kwaipilot/kat-coder-pro-v1' + | 'meituan/longcat-flash-chat' + | 'meituan/longcat-flash-thinking' + | 'meituan/longcat-flash-thinking-2601' + | 'meta/llama-3.1-70b' + | 'meta/llama-3.1-8b' + | 'meta/llama-3.2-11b' + | 'meta/llama-3.2-1b' + | 'meta/llama-3.2-3b' + | 'meta/llama-3.2-90b' + | 'meta/llama-3.3-70b' + | 'meta/llama-4-maverick' + | 'meta/llama-4-scout' + | 'minimax/minimax-m2' + | 'minimax/minimax-m2.1' + | 'minimax/minimax-m2.1-lightning' + | 'minimax/minimax-m2.5' + | 'minimax/minimax-m2.5-highspeed' + | 'minimax/minimax-m2.7' + | 'minimax/minimax-m2.7-highspeed' + | 'mistral/codestral' + | 'mistral/devstral-2' + | 'mistral/devstral-small' + | 'mistral/devstral-small-2' + | 'mistral/magistral-medium' + | 'mistral/magistral-small' + | 'mistral/ministral-14b' + | 'mistral/ministral-3b' + | 'mistral/ministral-8b' + | 'mistral/mistral-large-3' + | 'mistral/mistral-medium' + | 'mistral/mistral-nemo' + | 'mistral/mistral-small' + | 'mistral/mixtral-8x22b-instruct' + | 'mistral/pixtral-12b' + | 'mistral/pixtral-large' + | 'moonshotai/kimi-k2' + | 'moonshotai/kimi-k2-0905' + | 'moonshotai/kimi-k2-thinking' + | 'moonshotai/kimi-k2-thinking-turbo' + | 'moonshotai/kimi-k2-turbo' + | 'moonshotai/kimi-k2.5' + | 'morph/morph-v3-fast' + | 'morph/morph-v3-large' + | 'nvidia/nemotron-3-nano-30b-a3b' + | 'nvidia/nemotron-nano-12b-v2-vl' + | 'nvidia/nemotron-nano-9b-v2' + | 'openai/gpt-3.5-turbo' + | 'openai/gpt-3.5-turbo-instruct' + | 'openai/gpt-4-turbo' + | 'openai/gpt-4.1' + | 'openai/gpt-4.1-mini' + | 'openai/gpt-4.1-nano' + | 'openai/gpt-4o' + | 'openai/gpt-4o-mini' + | 'openai/gpt-4o-mini-search-preview' + | 'openai/gpt-5' + | 'openai/gpt-5-chat' + | 'openai/gpt-5-codex' + | 'openai/gpt-5-mini' + | 'openai/gpt-5-nano' + | 'openai/gpt-5-pro' + | 'openai/gpt-5.1-codex' + | 'openai/gpt-5.1-codex-max' + | 'openai/gpt-5.1-codex-mini' + | 'openai/gpt-5.1-instant' + | 'openai/gpt-5.1-thinking' + | 'openai/gpt-5.2' + | 'openai/gpt-5.2-chat' + | 'openai/gpt-5.2-codex' + | 'openai/gpt-5.2-pro' + | 'openai/gpt-5.3-chat' + | 'openai/gpt-5.3-codex' + | 'openai/gpt-5.4' + | 'openai/gpt-5.4-mini' + | 'openai/gpt-5.4-nano' + | 'openai/gpt-5.4-pro' + | 'openai/gpt-oss-120b' + | 'openai/gpt-oss-20b' + | 'openai/gpt-oss-safeguard-20b' + | 'openai/o1' + | 'openai/o3' + | 'openai/o3-deep-research' + | 'openai/o3-mini' + | 'openai/o3-pro' + | 'openai/o4-mini' + | 'perplexity/sonar' + | 'perplexity/sonar-pro' + | 'perplexity/sonar-reasoning-pro' + | 'prime-intellect/intellect-3' + | 'xai/grok-2-vision' + | 'xai/grok-3' + | 'xai/grok-3-fast' + | 'xai/grok-3-mini' + | 'xai/grok-3-mini-fast' + | 'xai/grok-4' + | 'xai/grok-4-fast-non-reasoning' + | 'xai/grok-4-fast-reasoning' + | 'xai/grok-4.1-fast-non-reasoning' + | 'xai/grok-4.1-fast-reasoning' + | 'xai/grok-4.20-multi-agent' + | 'xai/grok-4.20-multi-agent-beta' + | 'xai/grok-4.20-non-reasoning' + | 'xai/grok-4.20-non-reasoning-beta' + | 'xai/grok-4.20-reasoning' + | 'xai/grok-4.20-reasoning-beta' + | 'xai/grok-code-fast-1' + | 'xiaomi/mimo-v2-flash' + | 'xiaomi/mimo-v2-pro' + | 'zai/glm-4.5' + | 'zai/glm-4.5-air' + | 'zai/glm-4.5v' + | 'zai/glm-4.6' + | 'zai/glm-4.6v' + | 'zai/glm-4.6v-flash' + | 'zai/glm-4.7' + | 'zai/glm-4.7-flash' + | 'zai/glm-4.7-flashx' + | 'zai/glm-5' + | 'zai/glm-5-turbo' + | (string & {}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-language-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-language-model.ts new file mode 100644 index 000000000..8bce6153f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-language-model.ts @@ -0,0 +1,212 @@ +import type { + LanguageModelV3, + LanguageModelV3CallOptions, + SharedV3Warning, + LanguageModelV3FilePart, + LanguageModelV3StreamPart, + LanguageModelV3GenerateResult, + LanguageModelV3StreamResult, +} from '@ai-sdk/provider'; +import { + combineHeaders, + createEventSourceResponseHandler, + createJsonErrorResponseHandler, + createJsonResponseHandler, + postJsonToApi, + resolve, + type ParseResult, + type Resolvable, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; +import type { GatewayConfig } from './gateway-config'; +import type { GatewayModelId } from './gateway-language-model-settings'; +import { asGatewayError } from './errors'; +import { parseAuthMethod } from './errors/parse-auth-method'; + +type GatewayChatConfig = GatewayConfig & { + provider: string; + o11yHeaders: Resolvable>; +}; + +export class GatewayLanguageModel implements LanguageModelV3 { + readonly specificationVersion = 'v3'; + readonly supportedUrls = { '*/*': [/.*/] }; + + constructor( + readonly modelId: GatewayModelId, + private readonly config: GatewayChatConfig, + ) {} + + get provider(): string { + return this.config.provider; + } + + private async getArgs(options: LanguageModelV3CallOptions) { + const { abortSignal: _abortSignal, ...optionsWithoutSignal } = options; + + return { + args: this.maybeEncodeFileParts(optionsWithoutSignal), + warnings: [], + }; + } + + async doGenerate( + options: LanguageModelV3CallOptions, + ): Promise { + const { args, warnings } = await this.getArgs(options); + const { abortSignal } = options; + + const resolvedHeaders = await resolve(this.config.headers()); + + try { + const { + responseHeaders, + value: responseBody, + rawValue: rawResponse, + } = await postJsonToApi({ + url: this.getUrl(), + headers: combineHeaders( + resolvedHeaders, + options.headers, + this.getModelConfigHeaders(this.modelId, false), + await resolve(this.config.o11yHeaders), + ), + body: args, + successfulResponseHandler: createJsonResponseHandler(z.any()), + failedResponseHandler: createJsonErrorResponseHandler({ + errorSchema: z.any(), + errorToMessage: data => data, + }), + ...(abortSignal && { abortSignal }), + fetch: this.config.fetch, + }); + + return { + ...responseBody, + request: { body: args }, + response: { headers: responseHeaders, body: rawResponse }, + warnings, + }; + } catch (error) { + throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders)); + } + } + + async doStream( + options: LanguageModelV3CallOptions, + ): Promise { + const { args, warnings } = await this.getArgs(options); + const { abortSignal } = options; + + const resolvedHeaders = await resolve(this.config.headers()); + + try { + const { value: response, responseHeaders } = await postJsonToApi({ + url: this.getUrl(), + headers: combineHeaders( + resolvedHeaders, + options.headers, + this.getModelConfigHeaders(this.modelId, true), + await resolve(this.config.o11yHeaders), + ), + body: args, + successfulResponseHandler: createEventSourceResponseHandler(z.any()), + failedResponseHandler: createJsonErrorResponseHandler({ + errorSchema: z.any(), + errorToMessage: data => data, + }), + ...(abortSignal && { abortSignal }), + fetch: this.config.fetch, + }); + + return { + stream: response.pipeThrough( + new TransformStream< + ParseResult, + LanguageModelV3StreamPart + >({ + start(controller) { + if (warnings.length > 0) { + controller.enqueue({ type: 'stream-start', warnings }); + } + }, + transform(chunk, controller) { + if (chunk.success) { + const streamPart = chunk.value; + + // Handle raw chunks: if this is a raw chunk from the gateway API, + // only emit it if includeRawChunks is true + if (streamPart.type === 'raw' && !options.includeRawChunks) { + return; // Skip raw chunks if not requested + } + + if ( + streamPart.type === 'response-metadata' && + streamPart.timestamp && + typeof streamPart.timestamp === 'string' + ) { + streamPart.timestamp = new Date(streamPart.timestamp); + } + + controller.enqueue(streamPart); + } else { + controller.error( + (chunk as { success: false; error: unknown }).error, + ); + } + }, + }), + ), + request: { body: args }, + response: { headers: responseHeaders }, + }; + } catch (error) { + throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders)); + } + } + + private isFilePart(part: unknown) { + return ( + part && typeof part === 'object' && 'type' in part && part.type === 'file' + ); + } + + /** + * Encodes file parts in the prompt to base64. Mutates the passed options + * instance directly to avoid copying the file data. + * @param options - The options to encode. + * @returns The options with the file parts encoded. + */ + private maybeEncodeFileParts(options: LanguageModelV3CallOptions) { + for (const message of options.prompt) { + for (const part of message.content) { + if (this.isFilePart(part)) { + const filePart = part as LanguageModelV3FilePart; + // If the file part is a URL it will get cleanly converted to a string. + // If it's a binary file attachment we convert it to a data url. + // In either case, server-side we should only ever see URLs as strings. + if (filePart.data instanceof Uint8Array) { + const buffer = Uint8Array.from(filePart.data); + const base64Data = Buffer.from(buffer).toString('base64'); + filePart.data = new URL( + `data:${filePart.mediaType || 'application/octet-stream'};base64,${base64Data}`, + ); + } + } + } + } + return options; + } + + private getUrl() { + return `${this.config.baseURL}/language-model`; + } + + private getModelConfigHeaders(modelId: string, streaming: boolean) { + return { + 'ai-language-model-specification-version': '3', + 'ai-language-model-id': modelId, + 'ai-language-model-streaming': String(streaming), + }; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-model-entry.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-model-entry.ts new file mode 100644 index 000000000..bd69757cc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-model-entry.ts @@ -0,0 +1,58 @@ +import type { LanguageModelV3 } from '@ai-sdk/provider'; + +export interface GatewayLanguageModelEntry { + /** + * The model id used by the remote provider in model settings and for specifying the + * intended model for text generation. + */ + id: string; + + /** + * The display name of the model for presentation in user-facing contexts. + */ + name: string; + + /** + * Optional description of the model. + */ + description?: string | null; + + /** + * Optional pricing information for the model. + */ + pricing?: { + /** + * Cost per input token in USD. + */ + input: string; + /** + * Cost per output token in USD. + */ + output: string; + /** + * Cost per cached input token in USD. + * Only present for providers/models that support prompt caching. + */ + cachedInputTokens?: string; + /** + * Cost per input token to create/write cache entries in USD. + * Only present for providers/models that support prompt caching. + */ + cacheCreationInputTokens?: string; + } | null; + + /** + * Additional AI SDK language model specifications for the model. + */ + specification: GatewayLanguageModelSpecification; + + /** + * Optional field to differentiate between model types. + */ + modelType?: 'language' | 'embedding' | 'image' | 'video' | null; +} + +export type GatewayLanguageModelSpecification = Pick< + LanguageModelV3, + 'specificationVersion' | 'provider' | 'modelId' +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-provider-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-provider-options.ts new file mode 100644 index 000000000..54d653f03 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-provider-options.ts @@ -0,0 +1,80 @@ +import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +// https://vercel.com/docs/ai-gateway/provider-options +const gatewayLanguageModelOptions = lazySchema(() => + zodSchema( + z.object({ + /** + * Array of provider slugs that are the only ones allowed to be used. + * + * Example: `['azure', 'openai']` will only allow Azure and OpenAI to be used. + */ + only: z.array(z.string()).optional(), + /** + * Array of provider slugs that specifies the sequence in which providers should be attempted. + * + * Example: `['bedrock', 'anthropic']` will try Amazon Bedrock first, then Anthropic as fallback. + */ + order: z.array(z.string()).optional(), + /** + * The unique identifier for the end user on behalf of whom the request was made. + * + * Used for spend tracking and attribution purposes. + */ + user: z.string().optional(), + /** + * User-specified tags for use in reporting and filtering usage. + * + * For example, spend tracking reporting by feature or prompt version. + * + * Example: `['chat', 'v2']` + */ + tags: z.array(z.string()).optional(), + /** + * Array of model slugs specifying fallback models to use in order. + * + * Example: `['openai/gpt-5-nano', 'zai/glm-4.6']` will try `openai/gpt-5-nano` first, then `zai/glm-4.6` as fallback. + */ + models: z.array(z.string()).optional(), + /** + * Request-scoped BYOK credentials to use instead of cached credentials. + * + * When provided, cached BYOK credentials are ignored entirely. + * + * Each provider can have multiple credentials (tried in order). + * + * Examples: + * - Simple: `{ 'anthropic': [{ apiKey: 'sk-ant-...' }] }` + * - Multiple: `{ 'vertex': [{ projectId: 'proj-1', privateKey: '...' }, { projectId: 'proj-2', privateKey: '...' }] }` + * - Multi-provider: `{ 'anthropic': [{ apiKey: '...' }], 'bedrock': [{ accessKeyId: '...', secretAccessKey: '...' }] }` + */ + byok: z + .record(z.string(), z.array(z.record(z.string(), z.unknown()))) + .optional(), + /** + * Whether to filter by only providers that state they have zero data + * retention with Vercel AI Gateway. When enabled, only providers that + * have agreements with Vercel AI Gateway for zero data retention will be + * used. + */ + zeroDataRetention: z.boolean().optional(), + /** + * Per-provider timeouts for BYOK credentials in milliseconds. + * Controls how long to wait for a provider to start responding + * before falling back to the next available provider. + * + * Example: `{ byok: { openai: 5000, anthropic: 2000 } }` + */ + providerTimeouts: z + .object({ + byok: z.record(z.string(), z.number().int().min(1000)).optional(), + }) + .optional(), + }), + ), +); + +export type GatewayLanguageModelOptions = InferSchema< + typeof gatewayLanguageModelOptions +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-provider.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-provider.ts new file mode 100644 index 000000000..9b2a5f246 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-provider.ts @@ -0,0 +1,329 @@ +import { + loadOptionalSetting, + withoutTrailingSlash, + type FetchFunction, +} from '@ai-sdk/provider-utils'; +import { asGatewayError, GatewayAuthenticationError } from './errors'; +import { + GATEWAY_AUTH_METHOD_HEADER, + parseAuthMethod, +} from './errors/parse-auth-method'; +import { + GatewayFetchMetadata, + type GatewayFetchMetadataResponse, + type GatewayCreditsResponse, +} from './gateway-fetch-metadata'; +import { GatewayLanguageModel } from './gateway-language-model'; +import { GatewayEmbeddingModel } from './gateway-embedding-model'; +import { GatewayImageModel } from './gateway-image-model'; +import { GatewayVideoModel } from './gateway-video-model'; +import type { GatewayEmbeddingModelId } from './gateway-embedding-model-settings'; +import type { GatewayImageModelId } from './gateway-image-model-settings'; +import type { GatewayVideoModelId } from './gateway-video-model-settings'; +import { gatewayTools } from './gateway-tools'; +import { getVercelOidcToken, getVercelRequestId } from './vercel-environment'; +import type { GatewayModelId } from './gateway-language-model-settings'; +import type { + LanguageModelV3, + EmbeddingModelV3, + ImageModelV3, + Experimental_VideoModelV3, + ProviderV3, +} from '@ai-sdk/provider'; +import { withUserAgentSuffix } from '@ai-sdk/provider-utils'; +import { VERSION } from './version'; + +export interface GatewayProvider extends ProviderV3 { + (modelId: GatewayModelId): LanguageModelV3; + + /** + * Creates a model for text generation. + */ + chat(modelId: GatewayModelId): LanguageModelV3; + + /** + * Creates a model for text generation. + */ + languageModel(modelId: GatewayModelId): LanguageModelV3; + + /** + * Returns available providers and models for use with the remote provider. + */ + getAvailableModels(): Promise; + + /** + * Returns credit information for the authenticated user. + */ + getCredits(): Promise; + + /** + * Creates a model for generating text embeddings. + */ + embedding(modelId: GatewayEmbeddingModelId): EmbeddingModelV3; + + /** + * Creates a model for generating text embeddings. + */ + embeddingModel(modelId: GatewayEmbeddingModelId): EmbeddingModelV3; + + /** + * @deprecated Use `embeddingModel` instead. + */ + textEmbeddingModel(modelId: GatewayEmbeddingModelId): EmbeddingModelV3; + + /** + * Creates a model for generating images. + */ + image(modelId: GatewayImageModelId): ImageModelV3; + + /** + * Creates a model for generating images. + */ + imageModel(modelId: GatewayImageModelId): ImageModelV3; + + /** + * Creates a model for generating videos. + */ + video(modelId: GatewayVideoModelId): Experimental_VideoModelV3; + + /** + * Creates a model for generating videos. + */ + videoModel(modelId: GatewayVideoModelId): Experimental_VideoModelV3; + + /** + * Gateway-specific tools executed server-side. + */ + tools: typeof gatewayTools; +} + +export interface GatewayProviderSettings { + /** + * The base URL prefix for API calls. Defaults to `https://ai-gateway.vercel.sh/v1/ai`. + */ + baseURL?: string; + + /** + * API key that is being sent using the `Authorization` header. + */ + apiKey?: string; + + /** + * Custom headers to include in the requests. + */ + headers?: Record; + + /** + * Custom fetch implementation. You can use it as a middleware to intercept requests, + * or to provide a custom fetch implementation for e.g. testing. + */ + fetch?: FetchFunction; + + /** + * How frequently to refresh the metadata cache in milliseconds. + */ + metadataCacheRefreshMillis?: number; + + /** + * @internal For testing purposes only + */ + _internal?: { + currentDate?: () => Date; + }; +} + +const AI_GATEWAY_PROTOCOL_VERSION = '0.0.1'; + +/** + * Create a remote provider instance. + */ +export function createGatewayProvider( + options: GatewayProviderSettings = {}, +): GatewayProvider { + let pendingMetadata: Promise | null = null; + let metadataCache: GatewayFetchMetadataResponse | null = null; + const cacheRefreshMillis = + options.metadataCacheRefreshMillis ?? 1000 * 60 * 5; + let lastFetchTime = 0; + + const baseURL = + withoutTrailingSlash(options.baseURL) ?? + 'https://ai-gateway.vercel.sh/v3/ai'; + + const getHeaders = async () => { + try { + const auth = await getGatewayAuthToken(options); + return withUserAgentSuffix( + { + Authorization: `Bearer ${auth.token}`, + 'ai-gateway-protocol-version': AI_GATEWAY_PROTOCOL_VERSION, + [GATEWAY_AUTH_METHOD_HEADER]: auth.authMethod, + ...options.headers, + }, + `ai-sdk/gateway/${VERSION}`, + ); + } catch (error) { + throw GatewayAuthenticationError.createContextualError({ + apiKeyProvided: false, + oidcTokenProvided: false, + statusCode: 401, + cause: error, + }); + } + }; + + const createO11yHeaders = () => { + const deploymentId = loadOptionalSetting({ + settingValue: undefined, + environmentVariableName: 'VERCEL_DEPLOYMENT_ID', + }); + const environment = loadOptionalSetting({ + settingValue: undefined, + environmentVariableName: 'VERCEL_ENV', + }); + const region = loadOptionalSetting({ + settingValue: undefined, + environmentVariableName: 'VERCEL_REGION', + }); + const projectId = loadOptionalSetting({ + settingValue: undefined, + environmentVariableName: 'VERCEL_PROJECT_ID', + }); + + return async () => { + const requestId = await getVercelRequestId(); + return { + ...(deploymentId && { 'ai-o11y-deployment-id': deploymentId }), + ...(environment && { 'ai-o11y-environment': environment }), + ...(region && { 'ai-o11y-region': region }), + ...(requestId && { 'ai-o11y-request-id': requestId }), + ...(projectId && { 'ai-o11y-project-id': projectId }), + }; + }; + }; + + const createLanguageModel = (modelId: GatewayModelId) => { + return new GatewayLanguageModel(modelId, { + provider: 'gateway', + baseURL, + headers: getHeaders, + fetch: options.fetch, + o11yHeaders: createO11yHeaders(), + }); + }; + + const getAvailableModels = async () => { + const now = options._internal?.currentDate?.().getTime() ?? Date.now(); + if (!pendingMetadata || now - lastFetchTime > cacheRefreshMillis) { + lastFetchTime = now; + + pendingMetadata = new GatewayFetchMetadata({ + baseURL, + headers: getHeaders, + fetch: options.fetch, + }) + .getAvailableModels() + .then(metadata => { + metadataCache = metadata; + return metadata; + }) + .catch(async (error: unknown) => { + throw await asGatewayError( + error, + await parseAuthMethod(await getHeaders()), + ); + }); + } + + return metadataCache ? Promise.resolve(metadataCache) : pendingMetadata; + }; + + const getCredits = async () => { + return new GatewayFetchMetadata({ + baseURL, + headers: getHeaders, + fetch: options.fetch, + }) + .getCredits() + .catch(async (error: unknown) => { + throw await asGatewayError( + error, + await parseAuthMethod(await getHeaders()), + ); + }); + }; + + const provider = function (modelId: GatewayModelId) { + if (new.target) { + throw new Error( + 'The Gateway Provider model function cannot be called with the new keyword.', + ); + } + + return createLanguageModel(modelId); + }; + + provider.specificationVersion = 'v3' as const; + provider.getAvailableModels = getAvailableModels; + provider.getCredits = getCredits; + provider.imageModel = (modelId: GatewayImageModelId) => { + return new GatewayImageModel(modelId, { + provider: 'gateway', + baseURL, + headers: getHeaders, + fetch: options.fetch, + o11yHeaders: createO11yHeaders(), + }); + }; + provider.languageModel = createLanguageModel; + const createEmbeddingModel = (modelId: GatewayEmbeddingModelId) => { + return new GatewayEmbeddingModel(modelId, { + provider: 'gateway', + baseURL, + headers: getHeaders, + fetch: options.fetch, + o11yHeaders: createO11yHeaders(), + }); + }; + provider.embeddingModel = createEmbeddingModel; + provider.textEmbeddingModel = createEmbeddingModel; + provider.videoModel = (modelId: GatewayVideoModelId) => { + return new GatewayVideoModel(modelId, { + provider: 'gateway', + baseURL, + headers: getHeaders, + fetch: options.fetch, + o11yHeaders: createO11yHeaders(), + }); + }; + provider.chat = provider.languageModel; + provider.embedding = provider.embeddingModel; + provider.image = provider.imageModel; + provider.video = provider.videoModel; + provider.tools = gatewayTools; + return provider; +} + +export const gateway = createGatewayProvider(); + +export async function getGatewayAuthToken( + options: GatewayProviderSettings, +): Promise<{ token: string; authMethod: 'api-key' | 'oidc' }> { + const apiKey = loadOptionalSetting({ + settingValue: options.apiKey, + environmentVariableName: 'AI_GATEWAY_API_KEY', + }); + + if (apiKey) { + return { + token: apiKey, + authMethod: 'api-key', + }; + } + + const oidcToken = await getVercelOidcToken(); + return { + token: oidcToken, + authMethod: 'oidc', + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-tools.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-tools.ts new file mode 100644 index 000000000..8d57b71f4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-tools.ts @@ -0,0 +1,26 @@ +import { parallelSearch } from './tool/parallel-search'; +import { perplexitySearch } from './tool/perplexity-search'; + +/** + * Gateway-specific provider-defined tools. + */ +export const gatewayTools = { + /** + * Search the web using Parallel AI's Search API for LLM-optimized excerpts. + * + * Takes a natural language objective and returns relevant excerpts, + * replacing multiple keyword searches with a single call for broad + * or complex queries. Supports different search types for depth vs + * breadth tradeoffs. + */ + parallelSearch, + + /** + * Search the web using Perplexity's Search API for real-time information, + * news, research papers, and articles. + * + * Provides ranked search results with advanced filtering options including + * domain, language, date range, and recency filters. + */ + perplexitySearch, +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-video-model-settings.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-video-model-settings.ts new file mode 100644 index 000000000..c14fdd1d5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-video-model-settings.ts @@ -0,0 +1,25 @@ +export type GatewayVideoModelId = + | 'alibaba/wan-v2.5-t2v-preview' + | 'alibaba/wan-v2.6-i2v' + | 'alibaba/wan-v2.6-i2v-flash' + | 'alibaba/wan-v2.6-r2v' + | 'alibaba/wan-v2.6-r2v-flash' + | 'alibaba/wan-v2.6-t2v' + | 'bytedance/seedance-v1.0-lite-i2v' + | 'bytedance/seedance-v1.0-lite-t2v' + | 'bytedance/seedance-v1.0-pro' + | 'bytedance/seedance-v1.0-pro-fast' + | 'bytedance/seedance-v1.5-pro' + | 'google/veo-3.0-fast-generate-001' + | 'google/veo-3.0-generate-001' + | 'google/veo-3.1-fast-generate-001' + | 'google/veo-3.1-generate-001' + | 'klingai/kling-v2.5-turbo-i2v' + | 'klingai/kling-v2.5-turbo-t2v' + | 'klingai/kling-v2.6-i2v' + | 'klingai/kling-v2.6-motion-control' + | 'klingai/kling-v2.6-t2v' + | 'klingai/kling-v3.0-i2v' + | 'klingai/kling-v3.0-t2v' + | 'xai/grok-imagine-video' + | (string & {}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-video-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-video-model.ts new file mode 100644 index 000000000..e97162009 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/gateway-video-model.ts @@ -0,0 +1,259 @@ +import type { + Experimental_VideoModelV3, + Experimental_VideoModelV3CallOptions, + Experimental_VideoModelV3File, + Experimental_VideoModelV3VideoData, + SharedV3ProviderMetadata, + SharedV3Warning, +} from '@ai-sdk/provider'; +import { APICallError } from '@ai-sdk/provider'; +import { + combineHeaders, + convertUint8ArrayToBase64, + createJsonErrorResponseHandler, + parseJsonEventStream, + postJsonToApi, + resolve, + type Resolvable, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; +import type { GatewayConfig } from './gateway-config'; +import { asGatewayError } from './errors'; +import { parseAuthMethod } from './errors/parse-auth-method'; + +export class GatewayVideoModel implements Experimental_VideoModelV3 { + readonly specificationVersion = 'v3' as const; + // Set a very large number to prevent client-side splitting of requests + readonly maxVideosPerCall = Number.MAX_SAFE_INTEGER; + + constructor( + readonly modelId: string, + private readonly config: GatewayConfig & { + provider: string; + o11yHeaders: Resolvable>; + }, + ) {} + + get provider(): string { + return this.config.provider; + } + + async doGenerate({ + prompt, + n, + aspectRatio, + resolution, + duration, + fps, + seed, + image, + providerOptions, + headers, + abortSignal, + }: Experimental_VideoModelV3CallOptions): Promise<{ + videos: Array; + warnings: Array; + providerMetadata?: SharedV3ProviderMetadata; + response: { + timestamp: Date; + modelId: string; + headers: Record | undefined; + }; + }> { + const resolvedHeaders = await resolve(this.config.headers()); + try { + const { responseHeaders, value: responseBody } = await postJsonToApi({ + url: this.getUrl(), + headers: combineHeaders( + resolvedHeaders, + headers ?? {}, + this.getModelConfigHeaders(), + await resolve(this.config.o11yHeaders), + { accept: 'text/event-stream' }, + ), + body: { + prompt, + n, + ...(aspectRatio && { aspectRatio }), + ...(resolution && { resolution }), + ...(duration && { duration }), + ...(fps && { fps }), + ...(seed && { seed }), + ...(providerOptions && { providerOptions }), + ...(image && { image: maybeEncodeVideoFile(image) }), + }, + successfulResponseHandler: async ({ + response, + url, + requestBodyValues, + }: { + url: string; + requestBodyValues: unknown; + response: Response; + }) => { + if (response.body == null) { + throw new APICallError({ + message: 'SSE response body is empty', + url, + requestBodyValues, + statusCode: response.status, + }); + } + + const eventStream = parseJsonEventStream({ + stream: response.body, + schema: gatewayVideoEventSchema, + }); + + const reader = eventStream.getReader(); + const { done, value: parseResult } = await reader.read(); + reader.releaseLock(); + + if (done || !parseResult) { + throw new APICallError({ + message: 'SSE stream ended without a data event', + url, + requestBodyValues, + statusCode: response.status, + }); + } + + if (!parseResult.success) { + throw new APICallError({ + message: 'Failed to parse video SSE event', + cause: parseResult.error, + url, + requestBodyValues, + statusCode: response.status, + }); + } + + const event = parseResult.value; + + if (event.type === 'error') { + throw new APICallError({ + message: event.message, + statusCode: event.statusCode, + url, + requestBodyValues, + responseHeaders: Object.fromEntries([...response.headers]), + responseBody: JSON.stringify(event), + data: { + error: { + message: event.message, + type: event.errorType, + param: event.param, + }, + }, + }); + } + + // event.type === 'result' + return { + value: { + videos: event.videos, + warnings: event.warnings, + providerMetadata: event.providerMetadata, + }, + responseHeaders: Object.fromEntries([...response.headers]), + }; + }, + failedResponseHandler: createJsonErrorResponseHandler({ + errorSchema: z.any(), + errorToMessage: data => data, + }), + ...(abortSignal && { abortSignal }), + fetch: this.config.fetch, + }); + + return { + videos: responseBody.videos, + warnings: responseBody.warnings ?? [], + providerMetadata: + responseBody.providerMetadata as SharedV3ProviderMetadata, + response: { + timestamp: new Date(), + modelId: this.modelId, + headers: responseHeaders, + }, + }; + } catch (error) { + throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders)); + } + } + + private getUrl() { + return `${this.config.baseURL}/video-model`; + } + + private getModelConfigHeaders() { + return { + 'ai-video-model-specification-version': '3', + 'ai-model-id': this.modelId, + }; + } +} + +function maybeEncodeVideoFile(file: Experimental_VideoModelV3File) { + if (file.type === 'file' && file.data instanceof Uint8Array) { + return { + ...file, + data: convertUint8ArrayToBase64(file.data), + }; + } + return file; +} + +const providerMetadataEntrySchema = z + .object({ + videos: z.array(z.unknown()).optional(), + }) + .catchall(z.unknown()); + +const gatewayVideoDataSchema = z.union([ + z.object({ + type: z.literal('url'), + url: z.string(), + mediaType: z.string(), + }), + z.object({ + type: z.literal('base64'), + data: z.string(), + mediaType: z.string(), + }), +]); + +const gatewayVideoWarningSchema = z.discriminatedUnion('type', [ + z.object({ + type: z.literal('unsupported'), + feature: z.string(), + details: z.string().optional(), + }), + z.object({ + type: z.literal('compatibility'), + feature: z.string(), + details: z.string().optional(), + }), + z.object({ + type: z.literal('other'), + message: z.string(), + }), +]); + +const gatewayVideoEventSchema = z.discriminatedUnion('type', [ + z.object({ + type: z.literal('result'), + videos: z.array(gatewayVideoDataSchema), + warnings: z.array(gatewayVideoWarningSchema).optional(), + providerMetadata: z + .record(z.string(), providerMetadataEntrySchema) + .optional(), + }), + z.object({ + type: z.literal('error'), + message: z.string(), + errorType: z.string(), + statusCode: z.number(), + param: z.unknown().nullable(), + }), +]); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/index.ts new file mode 100644 index 000000000..61acc34ac --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/index.ts @@ -0,0 +1,32 @@ +export type { GatewayModelId } from './gateway-language-model-settings'; +export type { GatewayVideoModelId } from './gateway-video-model-settings'; +export type { + GatewayLanguageModelEntry, + GatewayLanguageModelSpecification, +} from './gateway-model-entry'; +export type { GatewayCreditsResponse } from './gateway-fetch-metadata'; +export type { GatewayLanguageModelEntry as GatewayModelEntry } from './gateway-model-entry'; +export { + createGatewayProvider, + createGatewayProvider as createGateway, + gateway, +} from './gateway-provider'; +export type { + GatewayProvider, + GatewayProviderSettings, +} from './gateway-provider'; +export type { + GatewayLanguageModelOptions, + /** @deprecated Use `GatewayLanguageModelOptions` instead. */ + GatewayLanguageModelOptions as GatewayProviderOptions, +} from './gateway-provider-options'; +export { + GatewayError, + GatewayAuthenticationError, + GatewayInvalidRequestError, + GatewayRateLimitError, + GatewayModelNotFoundError, + GatewayInternalServerError, + GatewayResponseError, +} from './errors'; +export type { GatewayErrorResponse } from './errors'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/tool/parallel-search.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/tool/parallel-search.ts new file mode 100644 index 000000000..e8f81a772 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/tool/parallel-search.ts @@ -0,0 +1,295 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod'; + +export interface ParallelSearchSourcePolicy { + /** + * List of domains to include in search results. + * Example: ['wikipedia.org', 'nature.com'] + */ + includeDomains?: string[]; + + /** + * List of domains to exclude from search results. + * Example: ['reddit.com', 'twitter.com'] + */ + excludeDomains?: string[]; + + /** + * Only include results published after this date (ISO 8601 format). + * Example: '2024-01-01' + */ + afterDate?: string; +} + +export interface ParallelSearchExcerpts { + /** + * Maximum characters per result. + */ + maxCharsPerResult?: number; + + /** + * Maximum total characters across all results. + */ + maxCharsTotal?: number; +} + +export interface ParallelSearchFetchPolicy { + /** + * Maximum age in seconds for cached content. + * Set to 0 to always fetch fresh content. + */ + maxAgeSeconds?: number; +} + +export interface ParallelSearchConfig { + /** + * Mode preset for different use cases: + * - "one-shot": Comprehensive results with longer excerpts for single-response answers (default) + * - "agentic": Concise, token-efficient results for multi-step agentic workflows + */ + mode?: 'one-shot' | 'agentic'; + + /** + * Default maximum number of results to return (1-20). + * Defaults to 10 if not specified. + */ + maxResults?: number; + + /** + * Default source policy for controlling which domains to include/exclude. + */ + sourcePolicy?: ParallelSearchSourcePolicy; + + /** + * Default excerpt configuration for controlling result length. + */ + excerpts?: ParallelSearchExcerpts; + + /** + * Default fetch policy for controlling content freshness. + */ + fetchPolicy?: ParallelSearchFetchPolicy; +} + +export interface ParallelSearchResult { + /** URL of the search result */ + url: string; + /** Title of the search result */ + title: string; + /** Extracted text excerpt/content from the page */ + excerpt: string; + /** Publication date of the content (may be null) */ + publishDate?: string | null; + /** Relevance score for the result */ + relevanceScore?: number; +} + +export interface ParallelSearchResponse { + /** Unique identifier for this search request */ + searchId: string; + /** Array of search results */ + results: ParallelSearchResult[]; +} + +export interface ParallelSearchError { + /** Error type */ + error: + | 'api_error' + | 'rate_limit' + | 'timeout' + | 'invalid_input' + | 'configuration_error' + | 'unknown'; + /** HTTP status code if applicable */ + statusCode?: number; + /** Human-readable error message */ + message: string; +} + +export interface ParallelSearchInput { + /** + * Natural-language description of the web research goal. + * Include source or freshness guidance and broader context from the task. + * Maximum 5000 characters. + */ + objective: string; + + /** + * Optional search queries to supplement the objective. + * Maximum 200 characters per query. + */ + search_queries?: string[]; + + /** + * Mode preset for different use cases: + * - "one-shot": Comprehensive results with longer excerpts + * - "agentic": Concise, token-efficient results for multi-step workflows + */ + mode?: 'one-shot' | 'agentic'; + + /** + * Maximum number of results to return (1-20). + * Defaults to 10 if not specified. + */ + max_results?: number; + + /** + * Source policy for controlling which domains to include/exclude. + */ + source_policy?: { + include_domains?: string[]; + exclude_domains?: string[]; + after_date?: string; + }; + + /** + * Excerpt configuration for controlling result length. + */ + excerpts?: { + max_chars_per_result?: number; + max_chars_total?: number; + }; + + /** + * Fetch policy for controlling content freshness. + */ + fetch_policy?: { + max_age_seconds?: number; + }; +} + +export type ParallelSearchOutput = ParallelSearchResponse | ParallelSearchError; + +const parallelSearchInputSchema = lazySchema(() => + zodSchema( + z.object({ + objective: z + .string() + .describe( + 'Natural-language description of the web research goal, including source or freshness guidance and broader context from the task. Maximum 5000 characters.', + ), + + search_queries: z + .array(z.string()) + .optional() + .describe( + 'Optional search queries to supplement the objective. Maximum 200 characters per query.', + ), + + mode: z + .enum(['one-shot', 'agentic']) + .optional() + .describe( + 'Mode preset: "one-shot" for comprehensive results with longer excerpts (default), "agentic" for concise, token-efficient results for multi-step workflows.', + ), + + max_results: z + .number() + .optional() + .describe( + 'Maximum number of results to return (1-20). Defaults to 10 if not specified.', + ), + + source_policy: z + .object({ + include_domains: z + .array(z.string()) + .optional() + .describe('List of domains to include in search results.'), + exclude_domains: z + .array(z.string()) + .optional() + .describe('List of domains to exclude from search results.'), + after_date: z + .string() + .optional() + .describe( + 'Only include results published after this date (ISO 8601 format).', + ), + }) + .optional() + .describe( + 'Source policy for controlling which domains to include/exclude and freshness.', + ), + + excerpts: z + .object({ + max_chars_per_result: z + .number() + .optional() + .describe('Maximum characters per result.'), + max_chars_total: z + .number() + .optional() + .describe('Maximum total characters across all results.'), + }) + .optional() + .describe('Excerpt configuration for controlling result length.'), + + fetch_policy: z + .object({ + max_age_seconds: z + .number() + .optional() + .describe( + 'Maximum age in seconds for cached content. Set to 0 to always fetch fresh content.', + ), + }) + .optional() + .describe('Fetch policy for controlling content freshness.'), + }), + ), +); + +const parallelSearchOutputSchema = lazySchema(() => + zodSchema( + z.union([ + // Success response + z.object({ + searchId: z.string(), + results: z.array( + z.object({ + url: z.string(), + title: z.string(), + excerpt: z.string(), + publishDate: z.string().nullable().optional(), + relevanceScore: z.number().optional(), + }), + ), + }), + // Error response + z.object({ + error: z.enum([ + 'api_error', + 'rate_limit', + 'timeout', + 'invalid_input', + 'configuration_error', + 'unknown', + ]), + statusCode: z.number().optional(), + message: z.string(), + }), + ]), + ), +); + +export const parallelSearchToolFactory = + createProviderToolFactoryWithOutputSchema< + ParallelSearchInput, + ParallelSearchOutput, + ParallelSearchConfig + >({ + id: 'gateway.parallel_search', + inputSchema: parallelSearchInputSchema, + outputSchema: parallelSearchOutputSchema, + }); + +export const parallelSearch = ( + config: ParallelSearchConfig = {}, +): ReturnType => + parallelSearchToolFactory(config); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/tool/perplexity-search.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/tool/perplexity-search.ts new file mode 100644 index 000000000..e315e4255 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/tool/perplexity-search.ts @@ -0,0 +1,294 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod'; + +export interface PerplexitySearchConfig { + /** + * Default maximum number of search results to return (1-20, default: 10). + */ + maxResults?: number; + + /** + * Default maximum tokens to extract per search result page (256-2048, default: 2048). + */ + maxTokensPerPage?: number; + + /** + * Default maximum total tokens across all search results (default: 25000, max: 1000000). + */ + maxTokens?: number; + + /** + * Default two-letter ISO 3166-1 alpha-2 country code for regional search results. + * Examples: 'US', 'GB', 'FR' + */ + country?: string; + + /** + * Default list of domains to include or exclude from search results (max 20). + * To include: ['nature.com', 'science.org'] + * To exclude: ['-example.com', '-spam.net'] + */ + searchDomainFilter?: string[]; + + /** + * Default list of ISO 639-1 language codes to filter results (max 10, lowercase). + * Examples: ['en', 'fr', 'de'] + */ + searchLanguageFilter?: string[]; + + /** + * Default recency filter for results. + * Cannot be combined with searchAfterDate/searchBeforeDate at runtime. + */ + searchRecencyFilter?: 'day' | 'week' | 'month' | 'year'; +} + +export interface PerplexitySearchResult { + /** Title of the search result */ + title: string; + /** URL of the search result */ + url: string; + /** Text snippet/preview of the content */ + snippet: string; + /** Publication date of the content */ + date?: string; + /** Last updated date of the content */ + lastUpdated?: string; +} + +export interface PerplexitySearchResponse { + /** Array of search results */ + results: PerplexitySearchResult[]; + /** Unique identifier for this search request */ + id: string; +} + +export interface PerplexitySearchError { + /** Error type */ + error: 'api_error' | 'rate_limit' | 'timeout' | 'invalid_input' | 'unknown'; + /** HTTP status code if applicable */ + statusCode?: number; + /** Human-readable error message */ + message: string; +} + +export interface PerplexitySearchInput { + /** + * Search query (string) or multiple queries (array of up to 5 strings). + * Multi-query searches return combined results from all queries. + */ + query: string | string[]; + + /** + * Maximum number of search results to return (1-20, default: 10). + */ + max_results?: number; + + /** + * Maximum number of tokens to extract per search result page (256-2048, default: 2048). + */ + max_tokens_per_page?: number; + + /** + * Maximum total tokens across all search results (default: 25000, max: 1000000). + */ + max_tokens?: number; + + /** + * Two-letter ISO 3166-1 alpha-2 country code for regional search results. + * Examples: 'US', 'GB', 'FR' + */ + country?: string; + + /** + * List of domains to include or exclude from search results (max 20). + * To include: ['nature.com', 'science.org'] + * To exclude: ['-example.com', '-spam.net'] + */ + search_domain_filter?: string[]; + + /** + * List of ISO 639-1 language codes to filter results (max 10, lowercase). + * Examples: ['en', 'fr', 'de'] + */ + search_language_filter?: string[]; + + /** + * Include only results published after this date. + * Format: 'MM/DD/YYYY' (e.g., '3/1/2025') + * Cannot be used with search_recency_filter. + */ + search_after_date?: string; + + /** + * Include only results published before this date. + * Format: 'MM/DD/YYYY' (e.g., '3/15/2025') + * Cannot be used with search_recency_filter. + */ + search_before_date?: string; + + /** + * Include only results last updated after this date. + * Format: 'MM/DD/YYYY' (e.g., '3/1/2025') + * Cannot be used with search_recency_filter. + */ + last_updated_after_filter?: string; + + /** + * Include only results last updated before this date. + * Format: 'MM/DD/YYYY' (e.g., '3/15/2025') + * Cannot be used with search_recency_filter. + */ + last_updated_before_filter?: string; + + /** + * Filter results by relative time period. + * Cannot be used with search_after_date or search_before_date. + */ + search_recency_filter?: 'day' | 'week' | 'month' | 'year'; +} + +export type PerplexitySearchOutput = + | PerplexitySearchResponse + | PerplexitySearchError; + +const perplexitySearchInputSchema = lazySchema(() => + zodSchema( + z.object({ + query: z + .union([z.string(), z.array(z.string())]) + .describe( + 'Search query (string) or multiple queries (array of up to 5 strings). Multi-query searches return combined results from all queries.', + ), + + max_results: z + .number() + .optional() + .describe( + 'Maximum number of search results to return (1-20, default: 10)', + ), + + max_tokens_per_page: z + .number() + .optional() + .describe( + 'Maximum number of tokens to extract per search result page (256-2048, default: 2048)', + ), + + max_tokens: z + .number() + .optional() + .describe( + 'Maximum total tokens across all search results (default: 25000, max: 1000000)', + ), + + country: z + .string() + .optional() + .describe( + "Two-letter ISO 3166-1 alpha-2 country code for regional search results (e.g., 'US', 'GB', 'FR')", + ), + + search_domain_filter: z + .array(z.string()) + .optional() + .describe( + "List of domains to include or exclude from search results (max 20). To include: ['nature.com', 'science.org']. To exclude: ['-example.com', '-spam.net']", + ), + + search_language_filter: z + .array(z.string()) + .optional() + .describe( + "List of ISO 639-1 language codes to filter results (max 10, lowercase). Examples: ['en', 'fr', 'de']", + ), + + search_after_date: z + .string() + .optional() + .describe( + "Include only results published after this date. Format: 'MM/DD/YYYY' (e.g., '3/1/2025'). Cannot be used with search_recency_filter.", + ), + + search_before_date: z + .string() + .optional() + .describe( + "Include only results published before this date. Format: 'MM/DD/YYYY' (e.g., '3/15/2025'). Cannot be used with search_recency_filter.", + ), + + last_updated_after_filter: z + .string() + .optional() + .describe( + "Include only results last updated after this date. Format: 'MM/DD/YYYY' (e.g., '3/1/2025'). Cannot be used with search_recency_filter.", + ), + + last_updated_before_filter: z + .string() + .optional() + .describe( + "Include only results last updated before this date. Format: 'MM/DD/YYYY' (e.g., '3/15/2025'). Cannot be used with search_recency_filter.", + ), + + search_recency_filter: z + .enum(['day', 'week', 'month', 'year']) + .optional() + .describe( + 'Filter results by relative time period. Cannot be used with search_after_date or search_before_date.', + ), + }), + ), +); + +const perplexitySearchOutputSchema = lazySchema(() => + zodSchema( + z.union([ + // Success response + z.object({ + results: z.array( + z.object({ + title: z.string(), + url: z.string(), + snippet: z.string(), + date: z.string().optional(), + lastUpdated: z.string().optional(), + }), + ), + id: z.string(), + }), + // Error response + z.object({ + error: z.enum([ + 'api_error', + 'rate_limit', + 'timeout', + 'invalid_input', + 'unknown', + ]), + statusCode: z.number().optional(), + message: z.string(), + }), + ]), + ), +); + +export const perplexitySearchToolFactory = + createProviderToolFactoryWithOutputSchema< + PerplexitySearchInput, + PerplexitySearchOutput, + PerplexitySearchConfig + >({ + id: 'gateway.perplexity_search', + inputSchema: perplexitySearchInputSchema, + outputSchema: perplexitySearchOutputSchema, + }); + +export const perplexitySearch = ( + config: PerplexitySearchConfig = {}, +): ReturnType => + perplexitySearchToolFactory(config); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/vercel-environment.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/vercel-environment.ts new file mode 100644 index 000000000..3ed597eb9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/vercel-environment.ts @@ -0,0 +1,6 @@ +import { getContext } from '@vercel/oidc'; +export { getVercelOidcToken } from '@vercel/oidc'; + +export async function getVercelRequestId(): Promise { + return getContext().headers?.['x-vercel-id']; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/version.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/version.ts new file mode 100644 index 000000000..7a35d46f5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/gateway/src/version.ts @@ -0,0 +1,6 @@ +// Version string of this package injected at build time. +declare const __PACKAGE_VERSION__: string | undefined; +export const VERSION: string = + typeof __PACKAGE_VERSION__ !== 'undefined' + ? __PACKAGE_VERSION__ + : '0.0.0-test'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/CHANGELOG.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/CHANGELOG.md new file mode 100644 index 000000000..f76b3a5bd --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/CHANGELOG.md @@ -0,0 +1,3149 @@ +# @ai-sdk/openai + +## 3.0.48 + +### Patch Changes + +- 9c548de: Add `gpt-5.4-mini`, `gpt-5.4-mini-2026-03-17`, `gpt-5.4-nano`, and `gpt-5.4-nano-2026-03-17` models. +- bcb04df: fix(openai): preserve raw finish reason for failed responses stream events + + Handle `response.failed` chunks in Responses API streaming so `finishReason.raw` is preserved from `incomplete_details.reason` (e.g. `max_output_tokens`), and map failed-without-reason cases to unified `error` instead of `other`. + +## 3.0.47 + +### Patch Changes + +- 055cd68: fix: publish v6 to latest npm dist tag +- Updated dependencies [055cd68] + - @ai-sdk/provider-utils@4.0.21 + +## 3.0.46 + +### Patch Changes + +- 75fc0e7: feat(openai): add new tool search tool + +## 3.0.45 + +### Patch Changes + +- 023088c: feat(provider/openai): add `gpt-5.3-chat-latest` + +## 3.0.44 + +### Patch Changes + +- f4a734a: fix(provider/openai): drop reasoning parts without encrypted content when store: false + +## 3.0.43 + +### Patch Changes + +- Updated dependencies [64ac0fd] + - @ai-sdk/provider-utils@4.0.20 + +## 3.0.42 + +### Patch Changes + +- 2589004: feat(provider/openai): add GPT-5.4 model support + +## 3.0.41 + +### Patch Changes + +- Updated dependencies [ad4cfc2] + - @ai-sdk/provider-utils@4.0.19 + +## 3.0.40 + +### Patch Changes + +- Updated dependencies [824b295] + - @ai-sdk/provider-utils@4.0.18 + +## 3.0.39 + +### Patch Changes + +- Updated dependencies [08336f1] + - @ai-sdk/provider-utils@4.0.17 + +## 3.0.38 + +### Patch Changes + +- 64a8fae: chore: remove obsolete model IDs for Anthropic, Google, OpenAI, xAI + +## 3.0.37 + +### Patch Changes + +- 58bc42d: feat(provider/openai): support custom tools with alias mapping +- Updated dependencies [58bc42d] + - @ai-sdk/provider-utils@4.0.16 + +## 3.0.36 + +### Patch Changes + +- 53bdfa5: fix(openai): allow null/undefined type in streaming tool call deltas + + Azure AI Foundry and Mistral deployed on Azure omit the `type` field in + streaming tool_calls deltas. The chat stream parser now accepts a missing + `type` field (treating it as `"function"`) instead of throwing + `InvalidResponseDataError: Expected 'function' type.` + + Fixes #12770 + +## 3.0.35 + +### Patch Changes + +- 5e18272: fix(openai): include reasoning parts without itemId when encrypted_content is present + + When `providerOptions.openai.itemId` is absent on a reasoning content part, + the converter now uses `encrypted_content` as a fallback instead of silently + skipping the part with a warning. The OpenAI Responses API accepts reasoning + items without an `id` when `encrypted_content` is supplied, enabling + multi-turn reasoning even when item IDs are stripped from provider options. + + Also makes the `id` field optional on the `OpenAIResponsesReasoning` type to + reflect that the API does not require it. + + Fixes #12853 + +## 3.0.34 + +### Patch Changes + +- 66a374c: Support `phase` parameter on Responses API message items. The `phase` field (`'commentary'` or `'final_answer'`) is returned by models like `gpt-5.3-codex` on assistant message output items and must be preserved when sending follow-up requests. The phase value is available in `providerMetadata.openai.phase` on text parts and is automatically included on assistant messages sent back to the API. + +## 3.0.33 + +### Patch Changes + +- 624e651: Added missing model IDs to OpenAIChatModelId, OpenAIResponsesModelId, OpenAIImageModelId, OpenAISpeechModelId, OpenAITranscriptionModelId, and OpenAICompletionModelId types for better autocomplete support. + +## 3.0.32 + +### Patch Changes + +- 0c9395b: feat(provider/openai): add `gpt-5.3-codex` + +## 3.0.31 + +### Patch Changes + +- d5f7312: fix(openai): change web search tool action to be optional + +## 3.0.30 + +### Patch Changes + +- ff12133: feat(provider/openai): support native skills and hosted shell + +## 3.0.29 + +### Patch Changes + +- e2ee705: feat: differentiate text vs image input tokens + +## 3.0.28 + +### Patch Changes + +- Updated dependencies [4024a3a] + - @ai-sdk/provider-utils@4.0.15 + +## 3.0.27 + +### Patch Changes + +- 99fbed8: feat: normalize provider specific model options type names and ensure they are exported + +## 3.0.26 + +### Patch Changes + +- Updated dependencies [7168375] + - @ai-sdk/provider@3.0.8 + - @ai-sdk/provider-utils@4.0.14 + +## 3.0.25 + +### Patch Changes + +- Updated dependencies [53f6731] + - @ai-sdk/provider@3.0.7 + - @ai-sdk/provider-utils@4.0.13 + +## 3.0.24 + +### Patch Changes + +- Updated dependencies [96936e5] + - @ai-sdk/provider-utils@4.0.12 + +## 3.0.23 + +### Patch Changes + +- Updated dependencies [2810850] + - @ai-sdk/provider-utils@4.0.11 + - @ai-sdk/provider@3.0.6 + +## 3.0.22 + +### Patch Changes + +- 1524271: chore: add skill information to README files + +## 3.0.21 + +### Patch Changes + +- 2c70b90: chore: update provider docs + +## 3.0.20 + +### Patch Changes + +- Updated dependencies [462ad00] + - @ai-sdk/provider-utils@4.0.10 + +## 3.0.19 + +### Patch Changes + +- 04c89b1: Provide Responses API providerMetadata types at the message / reasoning level. + + - Export the following types for use in client code: + - `OpenaiResponsesProviderMetadata` + - `OpenaiResponsesReasoningProviderMetadata` + - `AzureResponsesProviderMetadata` + - `AzureResponsesReasoningProviderMetadata` + +## 3.0.18 + +### Patch Changes + +- 4de5a1d: chore: excluded tests from src folder in npm package +- Updated dependencies [4de5a1d] + - @ai-sdk/provider@3.0.5 + - @ai-sdk/provider-utils@4.0.9 + +## 3.0.17 + +### Patch Changes + +- 4218f86: fix(openai): preserve tool id for apply patch tool + +## 3.0.16 + +### Patch Changes + +- 2b8369d: chore: add docs to package dist + +## 3.0.15 + +### Patch Changes + +- 8dc54db: chore: add src folders to package bundle + +## 3.0.14 + +### Patch Changes + +- d21d016: feat(openai): add o4-mini model to OpenAIChatModelId type + +## 3.0.13 + +### Patch Changes + +- 000fa96: fix(openai): filter duplicate items when passing conversationID + +## 3.0.12 + +### Patch Changes + +- Updated dependencies [5c090e7] + - @ai-sdk/provider@3.0.4 + - @ai-sdk/provider-utils@4.0.8 + +## 3.0.11 + +### Patch Changes + +- Updated dependencies [46f46e4] + - @ai-sdk/provider-utils@4.0.7 + +## 3.0.10 + +### Patch Changes + +- Updated dependencies [1b11dcb] + - @ai-sdk/provider-utils@4.0.6 + - @ai-sdk/provider@3.0.3 + +## 3.0.9 + +### Patch Changes + +- Updated dependencies [34d1c8a] + - @ai-sdk/provider-utils@4.0.5 + +## 3.0.8 + +### Patch Changes + +- 330bd92: Fix Responses `code_interpreter` annotations and add typed providerMetadata + + - Align Responses API `code_interpreter` annotation types with the official spec. + - Add tests to ensure the overlapping parts of the Zod schemas used by `doGenerate` and `doStream` stay in sync. + - Export the following types for use in client code: + - `OpenaiResponsesTextProviderMetadata` + - `OpenaiResponsesSourceDocumentProviderMetadata` + - `AzureResponsesTextProviderMetadata` + - `AzureResponsesSourceDocumentProviderMetadata` + +## 3.0.7 + +### Patch Changes + +- 89202fb: fix(openai/azure): passing response_format correctly + +## 3.0.6 + +### Patch Changes + +- dc87517: Fix handling of `image-url` tool result content type in OpenAI Responses API conversion + +## 3.0.5 + +### Patch Changes + +- Updated dependencies [d937c8f] + - @ai-sdk/provider@3.0.2 + - @ai-sdk/provider-utils@4.0.4 + +## 3.0.4 + +### Patch Changes + +- Updated dependencies [0b429d4] + - @ai-sdk/provider-utils@4.0.3 + +## 3.0.3 + +### Patch Changes + +- 55cd1a4: fix(azure): allow 'azure' as a key for providerOptions + +## 3.0.2 + +### Patch Changes + +- 863d34f: fix: trigger release to update `@latest` +- Updated dependencies [863d34f] + - @ai-sdk/provider@3.0.1 + - @ai-sdk/provider-utils@4.0.2 + +## 3.0.1 + +### Patch Changes + +- 29264a3: feat: add MCP tool approval +- Updated dependencies [29264a3] + - @ai-sdk/provider-utils@4.0.1 + +## 3.0.0 + +### Major Changes + +- dee8b05: ai SDK 6 beta + +### Minor Changes + +- 78928cb: release: start 5.1 beta + +### Patch Changes + +- 0c3b58b: fix(provider): add specificationVersion to ProviderV3 +- 4920119: fix the "incomplete_details" key from nullable to nullish for openai compatibility +- 0adc679: feat(provider): shared spec v3 +- 92c6241: feat(openai): additional settings for file search tool +- 88fc415: feat(openai): add the new provider 'apply_patch' tool +- 817e601: fix(openai); fix url_citation schema in chat api +- dae2185: fix(openai): extract meta data from first chunk that contains any +- 046aa3b: feat(provider): speech model v3 spec +- f1277fe: feat(provider/openai): send assistant text and tool call parts as reference ids when store: true +- 8d9e8ad: chore(provider): remove generics from EmbeddingModelV3 + + Before + + ```ts + model.textEmbeddingModel("my-model-id"); + ``` + + After + + ```ts + model.embeddingModel("my-model-id"); + ``` + +- 60f4775: fix: remove code for unsuported o1-mini and o1-preview models +- 9a51b92: support OPENAI_BASE_URL env +- d64ece9: enables image_generation capabilities in the Azure provider through the Responses API. +- 2625a04: feat(openai); update spec for mcp approval +- 2e86082: feat(provider/openai): `OpenAIChatLanguageModelOptions` type + + ```ts + import { openai, type OpenAIChatLanguageModelOptions } from "@ai-sdk/openai"; + import { generateText } from "ai"; + + await generateText({ + model: openai.chat("gpt-4o"), + prompt: "Invent a new holiday and describe its traditions.", + providerOptions: { + openai: { + user: "user-123", + } satisfies OpenAIChatLanguageModelOptions, + }, + }); + ``` + +- 0877683: feat(provider/openai): support conversations api +- d0f1baf: feat(openai): Add support for 'promptCacheRetention: 24h' for gpt5.1 series +- 831b6cc: feat(openai): adding provider mcp tool for openai +- 95f65c2: chore: use import \* from zod/v4 +- edc5548: feat(provider/openai): automatically add reasoning.encrypted_content include when store = false +- 954c356: feat(openai): allow custom names for provider-defined tools +- 544d4e8: chore(specification): rename v3 provider defined tool to provider tool +- 77f2b20: enables code_interpreter and file_search capabilities in the Azure provider through the Responses API +- 0c4822d: feat: `EmbeddingModelV3` +- 73d9883: chore(openai): enable strict json by default +- d2039d7: feat(provider/openai): add GPT 5.1 Codex Max to OpenAI Responses model IDs list +- 88edc28: feat (provider/openai): include more image generation response metadata +- e8109d3: feat: tool execution approval +- ed329cb: feat: `Provider-V3` +- 3bd2689: feat: extended token usage +- 1cad0ab: feat: add provider version to user-agent header +- e85fa2f: feat(openai): add sources in web-search actions +- 423ba08: Set the annotations from the Responses API to doStream +- 401f561: fix(provider/openai): fix web search tool input types +- 4122d2a: feat(provider/openai): add gpt-5-codex model id +- 0153bfa: fix(openai): fix parameter exclusion logic +- 8dac895: feat: `LanguageModelV3` +- 304222e: Add streaming support for apply_patch partial diffs. +- 23f132b: fix: error schema for Responses API +- 1d0de66: refactoring(provider/openai): simplify code +- 000e87b: fix(provider/openai): add providerExecuted flag to tool start chunks +- 2c0a758: chore(openai): add JSDoc to responses options +- 1b982e6: feat(openai): preserve file_id when converting file citations +- b82987c: feat(openai): support openai code-interpreter annotations +- 457318b: chore(provider,ai): switch to SharedV3Warning and unified warnings +- b681d7d: feat: expose usage tokens for 'generateImage' function +- 79b4e46: feat(openai): add 'gpt-5.1' modelID +- 3997a42: feat(provider/openai): local shell tool +- 348fd10: fix(openai): treat unknown models as reasoning +- 9061dc0: feat: image editing +- fe49278: feat(provider/openai): only send item references for reasoning when store: true +- cb4d238: The built in Code Interpreter tool input code is streamed in `tool-input-` chunks. +- 357cfd7: feat(provider/openai): add new model IDs `gpt-image-1-mini`, `gpt-5-pro`, `gpt-5-pro-2025-10-06` +- 38a4035: added support for external_web_access parameter on web_search tool +- 40d5419: feat(openai): add `o3-deep-research` and `o4-mini-deep-research` models +- 366f50b: chore(provider): add deprecated textEmbeddingModel and textEmbedding aliases +- 2b0caef: feat(provider/openai): preview image generation results +- b60d2e2: fix(openai): allow open_page action type url to be nullish +- fd47df5: fix(openai): revised_prompt sometimes returns null, causing errors +- 4616b86: chore: update zod peer depenedency version +- 7756857: fix(provider/openai): add truncation parameter support for Responses API +- cad6445: feat(openai); adding OpenAI's new shell tool +- 64aa48f: Azure OpenAI enabled web-search-preview +- 0b9fdd5: fix(provider/openai): end reasoning parts earlier +- 61c52dc: feat (provider/openai): add gpt-image-1.5 model support +- ef739fa: fix(openai): refactor apply-patch tool +- 3220329: fix openai responses input: process all provider tool outputs (shell/apply_patch) so parallel tool results aren’t dropped and apply_patch outputs are forwarded. +- d270a5d: chore(openai): update tests for apply-patch tool to use snapshots +- f18ef7f: feat(openai): add gpt-5.2 models +- 21e20c0: feat(provider): transcription model v3 spec +- 522f6b8: feat: `ImageModelV3` +- 484aa93: Add 'default' as service tier +- 88574c1: Change `isReasoningModel` detection from blocklist to allowlist and add override option +- 68c6187: feat(provider/openai): support file and image tool results +- 3794514: feat: flexible tool output content support +- cbf52cd: feat: expose raw finish reason +- 10c1322: fix: moved dependency `@ai-sdk/test-server` to devDependencies +- 5648ec0: Add GPT-5.2 support for non-reasoning parameters (temperature, topP, logProbs) when reasoningEffort is none. +- 78f813e: fix(openai): allow temperature etc setting when reasoning effort is none for gpt-5.1 +- 40dc7fa: fix(openai): change find action type to find_in_page action type +- 0273b74: fix(openai): add support for sources type 'api' +- 5bf101a: feat(provider/openai): add support for OpenAI xhigh reasoning effort +- 1bd7d32: feat: tool-specific strict mode +- d86b52f: distinguish between OpenAI and Azure in Responses API providerMetadata +- 95f65c2: chore: load zod schemas lazily +- 59561f8: fix(openai); fix url_citation schema in chat api +- Updated dependencies + - @ai-sdk/provider@3.0.0 + - @ai-sdk/provider-utils@4.0.0 + +## 3.0.0-beta.112 + +### Patch Changes + +- Updated dependencies [475189e] + - @ai-sdk/provider@3.0.0-beta.32 + - @ai-sdk/provider-utils@4.0.0-beta.59 + +## 3.0.0-beta.111 + +### Patch Changes + +- 304222e: Add streaming support for apply_patch partial diffs. + +## 3.0.0-beta.110 + +### Patch Changes + +- 2625a04: feat(openai); update spec for mcp approval +- Updated dependencies [2625a04] + - @ai-sdk/provider@3.0.0-beta.31 + - @ai-sdk/provider-utils@4.0.0-beta.58 + +## 3.0.0-beta.109 + +### Patch Changes + +- cbf52cd: feat: expose raw finish reason +- Updated dependencies [cbf52cd] + - @ai-sdk/provider@3.0.0-beta.30 + - @ai-sdk/provider-utils@4.0.0-beta.57 + +## 3.0.0-beta.108 + +### Patch Changes + +- Updated dependencies [9549c9e] + - @ai-sdk/provider@3.0.0-beta.29 + - @ai-sdk/provider-utils@4.0.0-beta.56 + +## 3.0.0-beta.107 + +### Patch Changes + +- Updated dependencies [50b70d6] + - @ai-sdk/provider-utils@4.0.0-beta.55 + +## 3.0.0-beta.106 + +### Patch Changes + +- 9061dc0: feat: image editing +- Updated dependencies [9061dc0] + - @ai-sdk/provider-utils@4.0.0-beta.54 + - @ai-sdk/provider@3.0.0-beta.28 + +## 3.0.0-beta.105 + +### Patch Changes + +- 88574c1: Change `isReasoningModel` detection from blocklist to allowlist and add override option + +## 3.0.0-beta.104 + +### Patch Changes + +- 61c52dc: feat (provider/openai): add gpt-image-1.5 model support + +## 3.0.0-beta.103 + +### Patch Changes + +- 366f50b: chore(provider): add deprecated textEmbeddingModel and textEmbedding aliases +- Updated dependencies [366f50b] + - @ai-sdk/provider@3.0.0-beta.27 + - @ai-sdk/provider-utils@4.0.0-beta.53 + +## 3.0.0-beta.102 + +### Patch Changes + +- Updated dependencies [763d04a] + - @ai-sdk/provider-utils@4.0.0-beta.52 + +## 3.0.0-beta.101 + +### Patch Changes + +- 3220329: fix openai responses input: process all provider tool outputs (shell/apply_patch) so parallel tool results aren’t dropped and apply_patch outputs are forwarded. +- 5648ec0: Add GPT-5.2 support for non-reasoning parameters (temperature, topP, logProbs) when reasoningEffort is none. + +## 3.0.0-beta.100 + +### Patch Changes + +- Updated dependencies [c1efac4] + - @ai-sdk/provider-utils@4.0.0-beta.51 + +## 3.0.0-beta.99 + +### Patch Changes + +- Updated dependencies [32223c8] + - @ai-sdk/provider-utils@4.0.0-beta.50 + +## 3.0.0-beta.98 + +### Patch Changes + +- Updated dependencies [83e5744] + - @ai-sdk/provider-utils@4.0.0-beta.49 + +## 3.0.0-beta.97 + +### Patch Changes + +- Updated dependencies [960ec8f] + - @ai-sdk/provider-utils@4.0.0-beta.48 + +## 3.0.0-beta.96 + +### Patch Changes + +- 817e601: fix(openai); fix url_citation schema in chat api +- 59561f8: fix(openai); fix url_citation schema in chat api + +## 3.0.0-beta.95 + +### Patch Changes + +- 40dc7fa: fix(openai): change find action type to find_in_page action type + +## 3.0.0-beta.94 + +### Patch Changes + +- f18ef7f: feat(openai): add gpt-5.2 models + +## 3.0.0-beta.93 + +### Patch Changes + +- d2039d7: feat(provider/openai): add GPT 5.1 Codex Max to OpenAI Responses model IDs list + +## 3.0.0-beta.92 + +### Patch Changes + +- 5bf101a: feat(provider/openai): add support for OpenAI xhigh reasoning effort + +## 3.0.0-beta.91 + +### Patch Changes + +- Updated dependencies [e9e157f] + - @ai-sdk/provider-utils@4.0.0-beta.47 + +## 3.0.0-beta.90 + +### Patch Changes + +- Updated dependencies [81e29ab] + - @ai-sdk/provider-utils@4.0.0-beta.46 + +## 3.0.0-beta.89 + +### Patch Changes + +- 3bd2689: feat: extended token usage +- Updated dependencies [3bd2689] + - @ai-sdk/provider@3.0.0-beta.26 + - @ai-sdk/provider-utils@4.0.0-beta.45 + +## 3.0.0-beta.88 + +### Patch Changes + +- 92c6241: feat(openai): additional settings for file search tool + +## 3.0.0-beta.87 + +### Patch Changes + +- Updated dependencies [53f3368] + - @ai-sdk/provider@3.0.0-beta.25 + - @ai-sdk/provider-utils@4.0.0-beta.44 + +## 3.0.0-beta.86 + +### Patch Changes + +- 0153bfa: fix(openai): fix parameter exclusion logic + +## 3.0.0-beta.85 + +### Patch Changes + +- 78f813e: fix(openai): allow temperature etc setting when reasoning effort is none for gpt-5.1 + +## 3.0.0-beta.84 + +### Patch Changes + +- Updated dependencies [dce03c4] + - @ai-sdk/provider-utils@4.0.0-beta.43 + - @ai-sdk/provider@3.0.0-beta.24 + +## 3.0.0-beta.83 + +### Patch Changes + +- ef739fa: fix(openai): refactor apply-patch tool + +## 3.0.0-beta.82 + +### Patch Changes + +- Updated dependencies [3ed5519] + - @ai-sdk/provider-utils@4.0.0-beta.42 + +## 3.0.0-beta.81 + +### Patch Changes + +- cad6445: feat(openai); adding OpenAI's new shell tool + +## 3.0.0-beta.80 + +### Patch Changes + +- b60d2e2: fix(openai): allow open_page action type url to be nullish + +## 3.0.0-beta.79 + +### Patch Changes + +- 1bd7d32: feat: tool-specific strict mode +- Updated dependencies [1bd7d32] + - @ai-sdk/provider-utils@4.0.0-beta.41 + - @ai-sdk/provider@3.0.0-beta.23 + +## 3.0.0-beta.78 + +### Patch Changes + +- 2c0a758: chore(openai): add JSDoc to responses options + +## 3.0.0-beta.77 + +### Patch Changes + +- d270a5d: chore(openai): update tests for apply-patch tool to use snapshots + +## 3.0.0-beta.76 + +### Patch Changes + +- 88edc28: feat (provider/openai): include more image generation response metadata + +## 3.0.0-beta.75 + +### Patch Changes + +- 73d9883: chore(openai): enable strict json by default + +## 3.0.0-beta.74 + +### Patch Changes + +- 88fc415: feat(openai): add the new provider 'apply_patch' tool + +## 3.0.0-beta.73 + +### Patch Changes + +- 544d4e8: chore(specification): rename v3 provider defined tool to provider tool +- Updated dependencies [544d4e8] + - @ai-sdk/provider-utils@4.0.0-beta.40 + - @ai-sdk/provider@3.0.0-beta.22 + +## 3.0.0-beta.72 + +### Patch Changes + +- 954c356: feat(openai): allow custom names for provider-defined tools +- Updated dependencies [954c356] + - @ai-sdk/provider-utils@4.0.0-beta.39 + - @ai-sdk/provider@3.0.0-beta.21 + +## 3.0.0-beta.71 + +### Patch Changes + +- Updated dependencies [03849b0] + - @ai-sdk/provider-utils@4.0.0-beta.38 + +## 3.0.0-beta.70 + +### Patch Changes + +- 457318b: chore(provider,ai): switch to SharedV3Warning and unified warnings +- Updated dependencies [457318b] + - @ai-sdk/provider@3.0.0-beta.20 + - @ai-sdk/provider-utils@4.0.0-beta.37 + +## 3.0.0-beta.69 + +### Patch Changes + +- 1d0de66: refactoring(provider/openai): simplify code + +## 3.0.0-beta.68 + +### Patch Changes + +- 8d9e8ad: chore(provider): remove generics from EmbeddingModelV3 + + Before + + ```ts + model.textEmbeddingModel("my-model-id"); + ``` + + After + + ```ts + model.embeddingModel("my-model-id"); + ``` + +- Updated dependencies [8d9e8ad] + - @ai-sdk/provider@3.0.0-beta.19 + - @ai-sdk/provider-utils@4.0.0-beta.36 + +## 3.0.0-beta.67 + +### Patch Changes + +- Updated dependencies [10d819b] + - @ai-sdk/provider@3.0.0-beta.18 + - @ai-sdk/provider-utils@4.0.0-beta.35 + +## 3.0.0-beta.66 + +### Patch Changes + +- d86b52f: distinguish between OpenAI and Azure in Responses API providerMetadata + +## 3.0.0-beta.65 + +### Patch Changes + +- 38a4035: added support for external_web_access parameter on web_search tool + +## 3.0.0-beta.64 + +### Patch Changes + +- Updated dependencies [db913bd] + - @ai-sdk/provider@3.0.0-beta.17 + - @ai-sdk/provider-utils@4.0.0-beta.34 + +## 3.0.0-beta.63 + +### Patch Changes + +- 423ba08: Set the annotations from the Responses API to doStream + +## 3.0.0-beta.62 + +### Patch Changes + +- 64aa48f: Azure OpenAI enabled web-search-preview + +## 3.0.0-beta.61 + +### Patch Changes + +- 23f132b: fix: error schema for Responses API + +## 3.0.0-beta.60 + +### Patch Changes + +- 0877683: feat(provider/openai): support conversations api + +## 3.0.0-beta.59 + +### Patch Changes + +- d0f1baf: feat(openai): Add support for 'promptCacheRetention: 24h' for gpt5.1 series + +## 3.0.0-beta.58 + +### Patch Changes + +- 79b4e46: feat(openai): add 'gpt-5.1' modelID + +## 3.0.0-beta.57 + +### Patch Changes + +- b681d7d: feat: expose usage tokens for 'generateImage' function +- Updated dependencies [b681d7d] + - @ai-sdk/provider@3.0.0-beta.16 + - @ai-sdk/provider-utils@4.0.0-beta.33 + +## 3.0.0-beta.56 + +### Patch Changes + +- Updated dependencies [32d8dbb] + - @ai-sdk/provider-utils@4.0.0-beta.32 + +## 3.0.0-beta.55 + +### Patch Changes + +- 831b6cc: feat(openai): adding provider mcp tool for openai + +## 3.0.0-beta.54 + +### Patch Changes + +- 40d5419: feat(openai): add `o3-deep-research` and `o4-mini-deep-research` models + +## 3.0.0-beta.53 + +### Patch Changes + +- dae2185: fix(openai): extract meta data from first chunk that contains any + +## 3.0.0-beta.52 + +### Patch Changes + +- 348fd10: fix(openai): treat unknown models as reasoning + +## 3.0.0-beta.51 + +### Patch Changes + +- b82987c: feat(openai): support openai code-interpreter annotations + +## 3.0.0-beta.50 + +### Patch Changes + +- Updated dependencies [bb36798] + - @ai-sdk/provider@3.0.0-beta.15 + - @ai-sdk/provider-utils@4.0.0-beta.31 + +## 3.0.0-beta.49 + +### Patch Changes + +- 0273b74: fix(openai): add support for sources type 'api' + +## 3.0.0-beta.48 + +### Patch Changes + +- 60f4775: fix: remove code for unsuported o1-mini and o1-preview models + +## 3.0.0-beta.47 + +### Patch Changes + +- Updated dependencies [4f16c37] + - @ai-sdk/provider-utils@4.0.0-beta.30 + +## 3.0.0-beta.46 + +### Patch Changes + +- Updated dependencies [af3780b] + - @ai-sdk/provider@3.0.0-beta.14 + - @ai-sdk/provider-utils@4.0.0-beta.29 + +## 3.0.0-beta.45 + +### Patch Changes + +- fd47df5: fix(openai): revised_prompt sometimes returns null, causing errors + +## 3.0.0-beta.44 + +### Patch Changes + +- Updated dependencies [016b111] + - @ai-sdk/provider-utils@4.0.0-beta.28 + +## 3.0.0-beta.43 + +### Patch Changes + +- Updated dependencies [37c58a0] + - @ai-sdk/provider@3.0.0-beta.13 + - @ai-sdk/provider-utils@4.0.0-beta.27 + +## 3.0.0-beta.42 + +### Patch Changes + +- Updated dependencies [d1bdadb] + - @ai-sdk/provider@3.0.0-beta.12 + - @ai-sdk/provider-utils@4.0.0-beta.26 + +## 3.0.0-beta.41 + +### Patch Changes + +- Updated dependencies [4c44a5b] + - @ai-sdk/provider@3.0.0-beta.11 + - @ai-sdk/provider-utils@4.0.0-beta.25 + +## 3.0.0-beta.40 + +### Patch Changes + +- 1b982e6: feat(openai): preserve file_id when converting file citations + +## 3.0.0-beta.39 + +### Patch Changes + +- 0c3b58b: fix(provider): add specificationVersion to ProviderV3 +- Updated dependencies [0c3b58b] + - @ai-sdk/provider@3.0.0-beta.10 + - @ai-sdk/provider-utils@4.0.0-beta.24 + +## 3.0.0-beta.38 + +### Patch Changes + +- Updated dependencies [a755db5] + - @ai-sdk/provider@3.0.0-beta.9 + - @ai-sdk/provider-utils@4.0.0-beta.23 + +## 3.0.0-beta.37 + +### Patch Changes + +- e85fa2f: feat(openai): add sources in web-search actions + +## 3.0.0-beta.36 + +### Patch Changes + +- Updated dependencies [58920e0] + - @ai-sdk/provider-utils@4.0.0-beta.22 + +## 3.0.0-beta.35 + +### Patch Changes + +- Updated dependencies [293a6b7] + - @ai-sdk/provider-utils@4.0.0-beta.21 + +## 3.0.0-beta.34 + +### Patch Changes + +- Updated dependencies [fca786b] + - @ai-sdk/provider-utils@4.0.0-beta.20 + +## 3.0.0-beta.33 + +### Patch Changes + +- 7756857: fix(provider/openai): add truncation parameter support for Responses API + +## 3.0.0-beta.32 + +### Patch Changes + +- 3794514: feat: flexible tool output content support +- Updated dependencies [3794514] + - @ai-sdk/provider-utils@4.0.0-beta.19 + - @ai-sdk/provider@3.0.0-beta.8 + +## 3.0.0-beta.31 + +### Patch Changes + +- Updated dependencies [81d4308] + - @ai-sdk/provider@3.0.0-beta.7 + - @ai-sdk/provider-utils@4.0.0-beta.18 + +## 3.0.0-beta.30 + +### Patch Changes + +- Updated dependencies [703459a] + - @ai-sdk/provider-utils@4.0.0-beta.17 + +## 3.0.0-beta.29 + +### Patch Changes + +- 0b9fdd5: fix(provider/openai): end reasoning parts earlier + +## 3.0.0-beta.28 + +### Patch Changes + +- 401f561: fix(provider/openai): fix web search tool input types + +## 3.0.0-beta.27 + +### Patch Changes + +- f1277fe: feat(provider/openai): send assistant text and tool call parts as reference ids when store: true + +## 3.0.0-beta.26 + +### Patch Changes + +- edc5548: feat(provider/openai): automatically add reasoning.encrypted_content include when store = false + +## 3.0.0-beta.25 + +### Patch Changes + +- Updated dependencies [6306603] + - @ai-sdk/provider-utils@4.0.0-beta.16 + +## 3.0.0-beta.24 + +### Patch Changes + +- Updated dependencies [f0b2157] + - @ai-sdk/provider-utils@4.0.0-beta.15 + +## 3.0.0-beta.23 + +### Patch Changes + +- Updated dependencies [3b1d015] + - @ai-sdk/provider-utils@4.0.0-beta.14 + +## 3.0.0-beta.22 + +### Patch Changes + +- Updated dependencies [d116b4b] + - @ai-sdk/provider-utils@4.0.0-beta.13 + +## 3.0.0-beta.21 + +### Patch Changes + +- Updated dependencies [7e32fea] + - @ai-sdk/provider-utils@4.0.0-beta.12 + +## 3.0.0-beta.20 + +### Patch Changes + +- 68c6187: feat(provider/openai): support file and image tool results + +## 3.0.0-beta.19 + +### Patch Changes + +- 484aa93: Add 'default' as service tier + +## 3.0.0-beta.18 + +### Patch Changes + +- 95f65c2: chore: use import \* from zod/v4 +- 95f65c2: chore: load zod schemas lazily +- Updated dependencies + - @ai-sdk/provider-utils@4.0.0-beta.11 + +## 3.0.0-beta.17 + +### Major Changes + +- dee8b05: ai SDK 6 beta + +### Patch Changes + +- Updated dependencies [dee8b05] + - @ai-sdk/provider@3.0.0-beta.6 + - @ai-sdk/provider-utils@4.0.0-beta.10 + +## 2.1.0-beta.16 + +### Patch Changes + +- Updated dependencies [521c537] + - @ai-sdk/provider-utils@3.1.0-beta.9 + +## 2.1.0-beta.15 + +### Patch Changes + +- Updated dependencies [e06565c] + - @ai-sdk/provider-utils@3.1.0-beta.8 + +## 2.1.0-beta.14 + +### Patch Changes + +- 000e87b: fix(provider/openai): add providerExecuted flag to tool start chunks + +## 2.1.0-beta.13 + +### Patch Changes + +- 357cfd7: feat(provider/openai): add new model IDs `gpt-image-1-mini`, `gpt-5-pro`, `gpt-5-pro-2025-10-06` + +## 2.1.0-beta.12 + +### Patch Changes + +- 046aa3b: feat(provider): speech model v3 spec +- e8109d3: feat: tool execution approval +- 21e20c0: feat(provider): transcription model v3 spec +- Updated dependencies + - @ai-sdk/provider@2.1.0-beta.5 + - @ai-sdk/provider-utils@3.1.0-beta.7 + +## 2.1.0-beta.11 + +### Patch Changes + +- 0adc679: feat(provider): shared spec v3 +- 2b0caef: feat(provider/openai): preview image generation results +- Updated dependencies + - @ai-sdk/provider-utils@3.1.0-beta.6 + - @ai-sdk/provider@2.1.0-beta.4 + +## 2.1.0-beta.10 + +### Patch Changes + +- d64ece9: enables image_generation capabilities in the Azure provider through the Responses API. + +## 2.1.0-beta.9 + +### Patch Changes + +- 9a51b92: support OPENAI_BASE_URL env + +## 2.1.0-beta.8 + +### Patch Changes + +- 4122d2a: feat(provider/openai): add gpt-5-codex model id +- 3997a42: feat(provider/openai): local shell tool +- cb4d238: The built in Code Interpreter tool input code is streamed in `tool-input-` chunks. + +## 2.1.0-beta.7 + +### Patch Changes + +- 77f2b20: enables code_interpreter and file_search capabilities in the Azure provider through the Responses API +- 8dac895: feat: `LanguageModelV3` +- 10c1322: fix: moved dependency `@ai-sdk/test-server` to devDependencies +- Updated dependencies [8dac895] + - @ai-sdk/provider-utils@3.1.0-beta.5 + - @ai-sdk/provider@2.1.0-beta.3 + +## 2.1.0-beta.6 + +### Patch Changes + +- fe49278: feat(provider/openai): only send item references for reasoning when store: true + +## 2.1.0-beta.5 + +### Patch Changes + +- 4616b86: chore: update zod peer depenedency version +- Updated dependencies [4616b86] + - @ai-sdk/provider-utils@3.1.0-beta.4 + +## 2.1.0-beta.4 + +### Patch Changes + +- ed329cb: feat: `Provider-V3` +- 522f6b8: feat: `ImageModelV3` +- Updated dependencies + - @ai-sdk/provider@2.1.0-beta.2 + - @ai-sdk/provider-utils@3.1.0-beta.3 + +## 2.1.0-beta.3 + +### Patch Changes + +- 2e86082: feat(provider/openai): `OpenAIChatLanguageModelOptions` type + + ```ts + import { openai, type OpenAIChatLanguageModelOptions } from "@ai-sdk/openai"; + import { generateText } from "ai"; + + await generateText({ + model: openai.chat("gpt-4o"), + prompt: "Invent a new holiday and describe its traditions.", + providerOptions: { + openai: { + user: "user-123", + } satisfies OpenAIChatLanguageModelOptions, + }, + }); + ``` + +## 2.1.0-beta.2 + +### Patch Changes + +- 4920119: fix the "incomplete_details" key from nullable to nullish for openai compatibility +- 0c4822d: feat: `EmbeddingModelV3` +- 1cad0ab: feat: add provider version to user-agent header +- Updated dependencies [0c4822d] + - @ai-sdk/provider@2.1.0-beta.1 + - @ai-sdk/provider-utils@3.1.0-beta.2 + +## 2.1.0-beta.1 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/test-server@1.0.0-beta.0 + - @ai-sdk/provider-utils@3.1.0-beta.1 + +## 2.1.0-beta.0 + +### Minor Changes + +- 78928cb: release: start 5.1 beta + +### Patch Changes + +- Updated dependencies [78928cb] + - @ai-sdk/provider@2.1.0-beta.0 + - @ai-sdk/provider-utils@3.1.0-beta.0 + +## 2.0.32 + +### Patch Changes + +- 1cf857d: fix(provider/openai): remove provider-executed tools from chat completions model +- 01de47f: feat(provider/openai): rework file search tool + +## 2.0.31 + +### Patch Changes + +- bb94467: feat(provider/openai): add maxToolCalls provider option +- 4a2b70e: feat(provider/openai): send item references for provider-executed tool results +- 643711d: feat (provider/openai): provider defined image generation tool support + +## 2.0.30 + +### Patch Changes + +- Updated dependencies [0294b58] + - @ai-sdk/provider-utils@3.0.9 + +## 2.0.29 + +### Patch Changes + +- 4235eb3: feat(provider/openai): code interpreter tool calls and results + +## 2.0.28 + +### Patch Changes + +- 4c2bb77: fix (provider/openai): send sources action as include +- 561e8b0: fix (provider/openai): fix code interpreter tool in doGenerate + +## 2.0.27 + +### Patch Changes + +- 2338c79: feat (provider/openai): add jsdoc for openai tools + +## 2.0.26 + +### Patch Changes + +- 5819aec: fix (provider/openai): only send tool calls finish reason for tools that are not provider-executed +- af8c6bb: feat (provider/openai): add web_search tool + +## 2.0.25 + +### Patch Changes + +- fb45ade: fix timestamp granularities support for openai transcription + +## 2.0.24 + +### Patch Changes + +- ad57512: fix(provider/openai): safe practice to include filename and fileExtension to avoid `experimental_transcribe` fails with valid Buffer +- Updated dependencies [99964ed] + - @ai-sdk/provider-utils@3.0.8 + +## 2.0.23 + +### Patch Changes + +- a9a61b7: Add serviceTier to provider metadata for OpenAI responses + +## 2.0.22 + +### Patch Changes + +- 0e272ae: fix(provider/openai): make file_citation annotation fields optional for responses api compatibility +- Updated dependencies [886e7cd] + - @ai-sdk/provider-utils@3.0.7 + +## 2.0.21 + +### Patch Changes + +- d18856a: fix(provider/openai): support websearch tool results without query property +- 15271d6: fix(provider/openai): do not set `response_format` to `verbose_json` if model is `gpt-4o-transcribe` or `gpt-4o-mini-transcribe` + + These two models do not support it: + https://platform.openai.com/docs/api-reference/audio/createTranscription#audio_createtranscription-response_format + +- Updated dependencies [1b5a3d3] + - @ai-sdk/provider-utils@3.0.6 + +## 2.0.20 + +### Patch Changes + +- 974de40: fix(provider/ai): do not set `.providerMetadata.openai.logprobs` to an array of empty arrays when using `streamText()` + +## 2.0.19 + +### Patch Changes + +- Updated dependencies [0857788] + - @ai-sdk/provider-utils@3.0.5 + +## 2.0.18 + +### Patch Changes + +- 5e47d00: Support Responses API input_file file_url passthrough for PDFs. + + This adds: + + - file_url variant to OpenAIResponses user content + - PDF URL mapping to input_file with file_url in Responses converter + - PDF URL support in supportedUrls to avoid auto-download + +## 2.0.17 + +### Patch Changes + +- 70bb696: fix(provider/openai): correct web search tool input + +## 2.0.16 + +### Patch Changes + +- Updated dependencies [68751f9] + - @ai-sdk/provider-utils@3.0.4 + +## 2.0.15 + +### Patch Changes + +- a4bef93: feat(provider/openai): expose web search queries in responses api +- 6ed34cb: refactor(openai): consolidate model config into `getResponsesModelConfig()` + + https://github.com/vercel/ai/pull/8038 + +## 2.0.14 + +### Patch Changes + +- 7f47105: fix(provider/openai): support file_citation annotations in responses api + +## 2.0.13 + +### Patch Changes + +- ddc9d99: Implements `logprobs` for OpenAI `providerOptions` and `providerMetaData` in `OpenAIResponsesLanguageModel` + + You can now set `providerOptions.openai.logprobs` when using `generateText()` and retrieve logprobs from the response via `result.providerMetadata?.openai` + +## 2.0.12 + +### Patch Changes + +- ec336a1: feat(provider/openai): add response_format to be supported by default +- 2935ec7: fix(provider/openai): exclude gpt-5-chat from reasoning model +- Updated dependencies + - @ai-sdk/provider-utils@3.0.3 + +## 2.0.11 + +### Patch Changes + +- 097b452: feat(openai, azure): add configurable file ID prefixes for Responses API + + - Added `fileIdPrefixes` option to OpenAI Responses API configuration + - Azure OpenAI now supports `assistant-` prefixed file IDs (replacing previous `file-` prefix support) + - OpenAI maintains backward compatibility with default `file-` prefix + - File ID detection is disabled when `fileIdPrefixes` is undefined, gracefully falling back to base64 processing + +- 87cf954: feat(provider/openai): add support for prompt_cache_key +- a3d98a9: feat(provider/openai): add support for safety_identifier +- 110d167: fix(openai): add missing file_search_call handlers in responses streaming +- 8d3c747: chore(openai): remove deprecated GPT-4.5-preview models and improve autocomplete control +- Updated dependencies [38ac190] + - @ai-sdk/provider-utils@3.0.2 + +## 2.0.10 + +### Patch Changes + +- a274b01: refactor(provider/openai): restructure files +- b48e0ff: feat(provider/openai): add code interpreter tool (responses api) + +## 2.0.9 + +### Patch Changes + +- 8f8a521: fix(providers): use convertToBase64 for Uint8Array image parts to produce valid data URLs; keep mediaType normalization and URL passthrough + +## 2.0.8 + +### Patch Changes + +- 57fb959: feat(openai): add verbosity parameter support for chat api +- 2a3fbe6: allow `minimal` in `reasoningEffort` for openai chat + +## 2.0.7 + +### Patch Changes + +- 4738f18: feat(openai): add flex processing support for gpt-5 models +- 013d747: feat(openai): add verbosity parameter support for responses api +- 35feee8: feat(openai): add priority processing support for gpt-5 models + +## 2.0.6 + +### Patch Changes + +- ad2255f: chore(docs): added gpt 5 models + removed deprecated models +- 64bcb66: feat(provider/openai): models ids on chat +- 1d42ff2: feat(provider/openai): models ids + +## 2.0.5 + +### Patch Changes + +- 6753a2e: feat(examples): add gpt-5 model examples and e2e tests +- 6cba06a: feat (provider/openai): add reasoning model config + +## 2.0.4 + +### Patch Changes + +- c9e0f52: Files from the OpenAI Files API are now supported, mirroring functionality of OpenAI Chat and Responses API, respectively. Also, the AI SDK supports URLs for PDFs in the responses API the same way it did for completions. + +## 2.0.3 + +### Patch Changes + +- Updated dependencies [90d212f] + - @ai-sdk/provider-utils@3.0.1 + +## 2.0.2 + +### Patch Changes + +- 63e2016: fix(openai): missing url citations from web search tools + +## 2.0.1 + +### Patch Changes + +- bc45e29: feat(openai): add file_search_call support to responses api + +## 2.0.0 + +### Major Changes + +- d5f588f: AI SDK 5 +- cc62234: chore (provider/openai): switch default to openai responses api +- 516be5b: ### Move Image Model Settings into generate options + + Image Models no longer have settings. Instead, `maxImagesPerCall` can be passed directly to `generateImage()`. All other image settings can be passed to `providerOptions[provider]`. + + Before + + ```js + await generateImage({ + model: luma.image("photon-flash-1", { + maxImagesPerCall: 5, + pollIntervalMillis: 500, + }), + prompt, + n: 10, + }); + ``` + + After + + ```js + await generateImage({ + model: luma.image("photon-flash-1"), + prompt, + n: 10, + maxImagesPerCall: 5, + providerOptions: { + luma: { pollIntervalMillis: 5 }, + }, + }); + ``` + + Pull Request: https://github.com/vercel/ai/pull/6180 + +- efc3a62: fix (provider/openai): default strict mode to false + +### Patch Changes + +- 948b755: chore(providers/openai): convert to providerOptions +- d63bcbc: feat (provider/openai): o4 updates for responses api +- 3bd3c0b: chore(providers/openai): update embedding model to use providerOptions +- 5d959e7: refactor: updated openai + anthropic tool use server side +- 0eee6a8: Fix streaming and reconstruction of reasoning summary parts +- 177526b: chore(providers/openai-transcription): switch to providerOptions +- 2f542fa: Add reasoning-part-finish parts for reasoning models in the responses API +- c15dfbf: feat (providers/openai): add gpt-image-1 model id to image settings +- 3b1ea10: adding support for gpt-4o-search-preview and handling unsupported parameters +- e2aceaf: feat: add raw chunk support +- d2af019: feat (providers/openai): add gpt-4.1 models +- eb173f1: chore (providers): remove model shorthand deprecation warnings +- 209256d: Add missing file_search tool support to OpenAI Responses API +- faea29f: fix (provider/openai): multi-step reasoning with text +- 7032dc5: feat(openai): add priority processing service tier support +- 870c5c0: feat (providers/openai): add o3 and o4-mini models +- db72adc: chore(providers/openai): update completion model to use providerOptions +- a166433: feat: add transcription with experimental_transcribe +- 26735b5: chore(embedding-model): add v2 interface +- 443d8ec: feat(embedding-model-v2): add response body field +- 8d12da5: feat(provider/openai): add serviceTier option for flex processing +- 9bf7291: chore(providers/openai): enable structuredOutputs by default & switch to provider option +- d521cda: feat(openai): add file_search filters and update field names +- 66962ed: fix(packages): export node10 compatible types +- 442be08: fix: propagate openai transcription fixes +- 0059ee2: fix(openai): update file_search fields to match API changes +- 8493141: feat (providers/openai): add support for reasoning summaries +- 9301f86: refactor (image-model): rename `ImageModelV1` to `ImageModelV2` +- 0a87932: core (ai): change transcription model mimeType to mediaType +- 8aa9e20: feat: add speech with experimental_generateSpeech +- 4617fab: chore(embedding-models): remove remaining settings +- b5a0e32: fix (provider/openai): correct default for chat model strict mode +- 136819b: chore(providers/openai): re-introduce logprobs as providerMetadata +- 52ce942: chore(providers/openai): remove & enable strict compatibility by default +- db64cbe: fix (provider/openai): multi-step reasoning with tool calls +- b3c3450: feat (provider/openai): add support for encrypted_reasoning to responses api +- 48249c4: Do not warn if empty text is the first part of a reasoning sequence +- c7d3b2e: fix (provider/openai): push first reasoning chunk in output item added event +- ad2a3d5: feat(provider/openai): add missing reasoning models to responses API +- 9943464: feat(openai): add file_search_call.results support to include parameter +- 0fa7414: chore (provider/openai): standardize on itemId in provider metadata +- 9bd5ab5: feat (provider): add providerMetadata to ImageModelV2 interface (#5977) + + The `experimental_generateImage` method from the `ai` package now returnes revised prompts for OpenAI's image models. + + ```js + const prompt = "Santa Claus driving a Cadillac"; + + const { providerMetadata } = await experimental_generateImage({ + model: openai.image("dall-e-3"), + prompt, + }); + + const revisedPrompt = providerMetadata.openai.images[0]?.revisedPrompt; + + console.log({ + prompt, + revisedPrompt, + }); + ``` + +- fa758ea: feat(provider/openai): add o3 & o4-mini with developer systemMessageMode +- d1a034f: feature: using Zod 4 for internal stuff +- fd65bc6: chore(embedding-model-v2): rename rawResponse to response +- e497698: fix (provider/openai): handle responses api errors +- 928fadf: fix(providers/openai): logprobs for stream alongside completion model +- 0a87932: fix (provider/openai): increase transcription model resilience +- 5147e6e: chore(openai): remove simulateStreaming +- 06bac05: fix (openai): structure output for responses model +- 205077b: fix: improve Zod compatibility +- c2b92cc: chore(openai): remove legacy function calling +- 284353f: fix(providers/openai): zod parse error with function +- 6f231db: fix(providers): always use optional instead of mix of nullish for providerOptions +- f10304b: feat(tool-calling): don't require the user to have to pass parameters +- 4af5233: Fix PDF file parts when passed as a string url or Uint8Array +- 7df7a25: feat (providers/openai): support gpt-image-1 image generation +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0 + - @ai-sdk/provider@2.0.0 + +## 2.0.0-beta.16 + +### Patch Changes + +- Updated dependencies [88a8ee5] + - @ai-sdk/provider-utils@3.0.0-beta.10 + +## 2.0.0-beta.15 + +### Patch Changes + +- 9943464: feat(openai): add file_search_call.results support to include parameter +- Updated dependencies [27deb4d] + - @ai-sdk/provider@2.0.0-beta.2 + - @ai-sdk/provider-utils@3.0.0-beta.9 + +## 2.0.0-beta.14 + +### Patch Changes + +- eb173f1: chore (providers): remove model shorthand deprecation warnings +- 7032dc5: feat(openai): add priority processing service tier support +- Updated dependencies [dd5fd43] + - @ai-sdk/provider-utils@3.0.0-beta.8 + +## 2.0.0-beta.13 + +### Patch Changes + +- Updated dependencies [e7fcc86] + - @ai-sdk/provider-utils@3.0.0-beta.7 + +## 2.0.0-beta.12 + +### Patch Changes + +- d521cda: feat(openai): add file_search filters and update field names +- 0059ee2: fix(openai): update file_search fields to match API changes +- Updated dependencies [ac34802] + - @ai-sdk/provider-utils@3.0.0-beta.6 + +## 2.0.0-beta.11 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-beta.5 + +## 2.0.0-beta.10 + +### Patch Changes + +- 0fa7414: chore (provider/openai): standardize on itemId in provider metadata +- 205077b: fix: improve Zod compatibility +- Updated dependencies [205077b] + - @ai-sdk/provider-utils@3.0.0-beta.4 + +## 2.0.0-beta.9 + +### Patch Changes + +- faea29f: fix (provider/openai): multi-step reasoning with text + +## 2.0.0-beta.8 + +### Patch Changes + +- db64cbe: fix (provider/openai): multi-step reasoning with tool calls +- Updated dependencies [05d2819] + - @ai-sdk/provider-utils@3.0.0-beta.3 + +## 2.0.0-beta.7 + +### Patch Changes + +- 209256d: Add missing file_search tool support to OpenAI Responses API + +## 2.0.0-beta.6 + +### Patch Changes + +- 0eee6a8: Fix streaming and reconstruction of reasoning summary parts +- b5a0e32: fix (provider/openai): correct default for chat model strict mode +- c7d3b2e: fix (provider/openai): push first reasoning chunk in output item added event + +## 2.0.0-beta.5 + +### Patch Changes + +- 48249c4: Do not warn if empty text is the first part of a reasoning sequence +- e497698: fix (provider/openai): handle responses api errors + +## 2.0.0-beta.4 + +### Patch Changes + +- b3c3450: feat (provider/openai): add support for encrypted_reasoning to responses api +- ad2a3d5: feat(provider/openai): add missing reasoning models to responses API + +## 2.0.0-beta.3 + +### Major Changes + +- efc3a62: fix (provider/openai): default strict mode to false + +## 2.0.0-beta.2 + +### Patch Changes + +- d1a034f: feature: using Zod 4 for internal stuff +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-beta.2 + +## 2.0.0-beta.1 + +### Major Changes + +- cc62234: chore (provider/openai): switch default to openai responses api + +### Patch Changes + +- 5d959e7: refactor: updated openai + anthropic tool use server side +- Updated dependencies + - @ai-sdk/provider@2.0.0-beta.1 + - @ai-sdk/provider-utils@3.0.0-beta.1 + +## 2.0.0-alpha.15 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-alpha.15 + - @ai-sdk/provider-utils@3.0.0-alpha.15 + +## 2.0.0-alpha.14 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-alpha.14 + - @ai-sdk/provider-utils@3.0.0-alpha.14 + +## 2.0.0-alpha.13 + +### Patch Changes + +- Updated dependencies [68ecf2f] + - @ai-sdk/provider@2.0.0-alpha.13 + - @ai-sdk/provider-utils@3.0.0-alpha.13 + +## 2.0.0-alpha.12 + +### Patch Changes + +- 2f542fa: Add reasoning-part-finish parts for reasoning models in the responses API +- e2aceaf: feat: add raw chunk support +- Updated dependencies [e2aceaf] + - @ai-sdk/provider@2.0.0-alpha.12 + - @ai-sdk/provider-utils@3.0.0-alpha.12 + +## 2.0.0-alpha.11 + +### Patch Changes + +- 8d12da5: feat(provider/openai): add serviceTier option for flex processing +- Updated dependencies [c1e6647] + - @ai-sdk/provider@2.0.0-alpha.11 + - @ai-sdk/provider-utils@3.0.0-alpha.11 + +## 2.0.0-alpha.10 + +### Patch Changes + +- Updated dependencies [c4df419] + - @ai-sdk/provider@2.0.0-alpha.10 + - @ai-sdk/provider-utils@3.0.0-alpha.10 + +## 2.0.0-alpha.9 + +### Patch Changes + +- Updated dependencies [811dff3] + - @ai-sdk/provider@2.0.0-alpha.9 + - @ai-sdk/provider-utils@3.0.0-alpha.9 + +## 2.0.0-alpha.8 + +### Patch Changes + +- 4af5233: Fix PDF file parts when passed as a string url or Uint8Array +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-alpha.8 + - @ai-sdk/provider@2.0.0-alpha.8 + +## 2.0.0-alpha.7 + +### Patch Changes + +- Updated dependencies [5c56081] + - @ai-sdk/provider@2.0.0-alpha.7 + - @ai-sdk/provider-utils@3.0.0-alpha.7 + +## 2.0.0-alpha.6 + +### Patch Changes + +- Updated dependencies [0d2c085] + - @ai-sdk/provider@2.0.0-alpha.6 + - @ai-sdk/provider-utils@3.0.0-alpha.6 + +## 2.0.0-alpha.4 + +### Patch Changes + +- Updated dependencies [dc714f3] + - @ai-sdk/provider@2.0.0-alpha.4 + - @ai-sdk/provider-utils@3.0.0-alpha.4 + +## 2.0.0-alpha.3 + +### Patch Changes + +- Updated dependencies [6b98118] + - @ai-sdk/provider@2.0.0-alpha.3 + - @ai-sdk/provider-utils@3.0.0-alpha.3 + +## 2.0.0-alpha.2 + +### Patch Changes + +- Updated dependencies [26535e0] + - @ai-sdk/provider@2.0.0-alpha.2 + - @ai-sdk/provider-utils@3.0.0-alpha.2 + +## 2.0.0-alpha.1 + +### Patch Changes + +- Updated dependencies [3f2f00c] + - @ai-sdk/provider@2.0.0-alpha.1 + - @ai-sdk/provider-utils@3.0.0-alpha.1 + +## 2.0.0-canary.20 + +### Patch Changes + +- Updated dependencies [faf8446] + - @ai-sdk/provider-utils@3.0.0-canary.19 + +## 2.0.0-canary.19 + +### Patch Changes + +- Updated dependencies [40acf9b] + - @ai-sdk/provider-utils@3.0.0-canary.18 + +## 2.0.0-canary.18 + +### Major Changes + +- 516be5b: ### Move Image Model Settings into generate options + + Image Models no longer have settings. Instead, `maxImagesPerCall` can be passed directly to `generateImage()`. All other image settings can be passed to `providerOptions[provider]`. + + Before + + ```js + await generateImage({ + model: luma.image("photon-flash-1", { + maxImagesPerCall: 5, + pollIntervalMillis: 500, + }), + prompt, + n: 10, + }); + ``` + + After + + ```js + await generateImage({ + model: luma.image("photon-flash-1"), + prompt, + n: 10, + maxImagesPerCall: 5, + providerOptions: { + luma: { pollIntervalMillis: 5 }, + }, + }); + ``` + + Pull Request: https://github.com/vercel/ai/pull/6180 + +### Patch Changes + +- Updated dependencies [ea7a7c9] + - @ai-sdk/provider-utils@3.0.0-canary.17 + +## 2.0.0-canary.17 + +### Patch Changes + +- 52ce942: chore(providers/openai): remove & enable strict compatibility by default +- Updated dependencies [87b828f] + - @ai-sdk/provider-utils@3.0.0-canary.16 + +## 2.0.0-canary.16 + +### Patch Changes + +- 928fadf: fix(providers/openai): logprobs for stream alongside completion model +- 6f231db: fix(providers): always use optional instead of mix of nullish for providerOptions +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.15 + - @ai-sdk/provider@2.0.0-canary.14 + +## 2.0.0-canary.15 + +### Patch Changes + +- 136819b: chore(providers/openai): re-introduce logprobs as providerMetadata +- 9bd5ab5: feat (provider): add providerMetadata to ImageModelV2 interface (#5977) + + The `experimental_generateImage` method from the `ai` package now returnes revised prompts for OpenAI's image models. + + ```js + const prompt = "Santa Claus driving a Cadillac"; + + const { providerMetadata } = await experimental_generateImage({ + model: openai.image("dall-e-3"), + prompt, + }); + + const revisedPrompt = providerMetadata.openai.images[0]?.revisedPrompt; + + console.log({ + prompt, + revisedPrompt, + }); + ``` + +- 284353f: fix(providers/openai): zod parse error with function +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.14 + - @ai-sdk/provider@2.0.0-canary.13 + +## 2.0.0-canary.14 + +### Patch Changes + +- fa758ea: feat(provider/openai): add o3 & o4-mini with developer systemMessageMode +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.12 + - @ai-sdk/provider-utils@3.0.0-canary.13 + +## 2.0.0-canary.13 + +### Patch Changes + +- 177526b: chore(providers/openai-transcription): switch to providerOptions +- c15dfbf: feat (providers/openai): add gpt-image-1 model id to image settings +- 9bf7291: chore(providers/openai): enable structuredOutputs by default & switch to provider option +- 4617fab: chore(embedding-models): remove remaining settings +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.11 + - @ai-sdk/provider-utils@3.0.0-canary.12 + +## 2.0.0-canary.12 + +### Patch Changes + +- db72adc: chore(providers/openai): update completion model to use providerOptions +- 66962ed: fix(packages): export node10 compatible types +- 9301f86: refactor (image-model): rename `ImageModelV1` to `ImageModelV2` +- 7df7a25: feat (providers/openai): support gpt-image-1 image generation +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.11 + - @ai-sdk/provider@2.0.0-canary.10 + +## 2.0.0-canary.11 + +### Patch Changes + +- 8493141: feat (providers/openai): add support for reasoning summaries +- Updated dependencies [e86be6f] + - @ai-sdk/provider@2.0.0-canary.9 + - @ai-sdk/provider-utils@3.0.0-canary.10 + +## 2.0.0-canary.10 + +### Patch Changes + +- 3bd3c0b: chore(providers/openai): update embedding model to use providerOptions +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.8 + - @ai-sdk/provider-utils@3.0.0-canary.9 + +## 2.0.0-canary.9 + +### Patch Changes + +- d63bcbc: feat (provider/openai): o4 updates for responses api +- d2af019: feat (providers/openai): add gpt-4.1 models +- 870c5c0: feat (providers/openai): add o3 and o4-mini models +- 06bac05: fix (openai): structure output for responses model + +## 2.0.0-canary.8 + +### Patch Changes + +- 8aa9e20: feat: add speech with experimental_generateSpeech +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.8 + - @ai-sdk/provider@2.0.0-canary.7 + +## 2.0.0-canary.7 + +### Patch Changes + +- 26735b5: chore(embedding-model): add v2 interface +- 443d8ec: feat(embedding-model-v2): add response body field +- fd65bc6: chore(embedding-model-v2): rename rawResponse to response +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.6 + - @ai-sdk/provider-utils@3.0.0-canary.7 + +## 2.0.0-canary.6 + +### Patch Changes + +- 948b755: chore(providers/openai): convert to providerOptions +- 3b1ea10: adding support for gpt-4o-search-preview and handling unsupported parameters +- 442be08: fix: propagate openai transcription fixes +- 5147e6e: chore(openai): remove simulateStreaming +- c2b92cc: chore(openai): remove legacy function calling +- f10304b: feat(tool-calling): don't require the user to have to pass parameters +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.5 + - @ai-sdk/provider-utils@3.0.0-canary.6 + +## 2.0.0-canary.5 + +### Patch Changes + +- Updated dependencies [6f6bb89] + - @ai-sdk/provider@2.0.0-canary.4 + - @ai-sdk/provider-utils@3.0.0-canary.5 + +## 2.0.0-canary.4 + +### Patch Changes + +- Updated dependencies [d1a1aa1] + - @ai-sdk/provider@2.0.0-canary.3 + - @ai-sdk/provider-utils@3.0.0-canary.4 + +## 2.0.0-canary.3 + +### Patch Changes + +- a166433: feat: add transcription with experimental_transcribe +- 0a87932: core (ai): change transcription model mimeType to mediaType +- 0a87932: fix (provider/openai): increase transcription model resilience +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.3 + - @ai-sdk/provider@2.0.0-canary.2 + +## 2.0.0-canary.2 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.1 + - @ai-sdk/provider-utils@3.0.0-canary.2 + +## 2.0.0-canary.1 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.1 + +## 2.0.0-canary.0 + +### Major Changes + +- d5f588f: AI SDK 5 + +### Patch Changes + +- Updated dependencies [d5f588f] + - @ai-sdk/provider-utils@3.0.0-canary.0 + - @ai-sdk/provider@2.0.0-canary.0 + +## 1.3.6 + +### Patch Changes + +- Updated dependencies [28be004] + - @ai-sdk/provider-utils@2.2.3 + +## 1.3.5 + +### Patch Changes + +- 52ed95f: fix (provider/openai): force web search tool +- Updated dependencies [b01120e] + - @ai-sdk/provider-utils@2.2.2 + +## 1.3.4 + +### Patch Changes + +- b520dba: feat (provider/openai): add chatgpt-4o-latest model + +## 1.3.3 + +### Patch Changes + +- 24befd8: feat (provider/openai): add instructions to providerOptions + +## 1.3.2 + +### Patch Changes + +- db15028: feat (provider/openai): expose type for validating OpenAI responses provider options + +## 1.3.1 + +### Patch Changes + +- Updated dependencies [f10f0fa] + - @ai-sdk/provider-utils@2.2.1 + +## 1.3.0 + +### Minor Changes + +- 5bc638d: AI SDK 4.2 + +### Patch Changes + +- Updated dependencies [5bc638d] + - @ai-sdk/provider@1.1.0 + - @ai-sdk/provider-utils@2.2.0 + +## 1.2.8 + +### Patch Changes + +- 9f4f1bc: feat (provider/openai): pdf support for chat language models + +## 1.2.7 + +### Patch Changes + +- Updated dependencies [d0c4659] + - @ai-sdk/provider-utils@2.1.15 + +## 1.2.6 + +### Patch Changes + +- Updated dependencies [0bd5bc6] + - @ai-sdk/provider@1.0.12 + - @ai-sdk/provider-utils@2.1.14 + +## 1.2.5 + +### Patch Changes + +- 2e1101a: feat (provider/openai): pdf input support +- Updated dependencies [2e1101a] + - @ai-sdk/provider@1.0.11 + - @ai-sdk/provider-utils@2.1.13 + +## 1.2.4 + +### Patch Changes + +- 523f128: feat (provider/openai): add strictSchemas option to responses model + +## 1.2.3 + +### Patch Changes + +- Updated dependencies [1531959] + - @ai-sdk/provider-utils@2.1.12 + +## 1.2.2 + +### Patch Changes + +- e3a389e: feat (provider/openai): support responses api + +## 1.2.1 + +### Patch Changes + +- e1d3d42: feat (ai): expose raw response body in generateText and generateObject +- Updated dependencies [e1d3d42] + - @ai-sdk/provider@1.0.10 + - @ai-sdk/provider-utils@2.1.11 + +## 1.2.0 + +### Minor Changes + +- ede6d1b: feat (provider/azure): Add Azure image model support + +## 1.1.15 + +### Patch Changes + +- d8216f8: feat (provider/openai): add gpt-4.5-preview to model id set + +## 1.1.14 + +### Patch Changes + +- Updated dependencies [ddf9740] + - @ai-sdk/provider@1.0.9 + - @ai-sdk/provider-utils@2.1.10 + +## 1.1.13 + +### Patch Changes + +- Updated dependencies [2761f06] + - @ai-sdk/provider@1.0.8 + - @ai-sdk/provider-utils@2.1.9 + +## 1.1.12 + +### Patch Changes + +- ea159cb: chore (provider/openai): remove default streaming simulation for o1 + +## 1.1.11 + +### Patch Changes + +- Updated dependencies [2e898b4] + - @ai-sdk/provider-utils@2.1.8 + +## 1.1.10 + +### Patch Changes + +- Updated dependencies [3ff4ef8] + - @ai-sdk/provider-utils@2.1.7 + +## 1.1.9 + +### Patch Changes + +- c55b81a: fix (provider/openai): fix o3-mini streaming + +## 1.1.8 + +### Patch Changes + +- 161be90: fix (provider/openai): fix model id typo + +## 1.1.7 + +### Patch Changes + +- 0a2f026: feat (provider/openai): add o3-mini + +## 1.1.6 + +### Patch Changes + +- d89c3b9: feat (provider): add image model support to provider specification +- Updated dependencies [d89c3b9] + - @ai-sdk/provider@1.0.7 + - @ai-sdk/provider-utils@2.1.6 + +## 1.1.5 + +### Patch Changes + +- Updated dependencies [3a602ca] + - @ai-sdk/provider-utils@2.1.5 + +## 1.1.4 + +### Patch Changes + +- Updated dependencies [066206e] + - @ai-sdk/provider-utils@2.1.4 + +## 1.1.3 + +### Patch Changes + +- Updated dependencies [39e5c1f] + - @ai-sdk/provider-utils@2.1.3 + +## 1.1.2 + +### Patch Changes + +- 3a58a2e: feat (ai/core): throw NoImageGeneratedError from generateImage when no predictions are returned. +- Updated dependencies + - @ai-sdk/provider-utils@2.1.2 + - @ai-sdk/provider@1.0.6 + +## 1.1.1 + +### Patch Changes + +- e7a9ec9: feat (provider-utils): include raw value in json parse results +- Updated dependencies + - @ai-sdk/provider-utils@2.1.1 + - @ai-sdk/provider@1.0.5 + +## 1.1.0 + +### Minor Changes + +- 62ba5ad: release: AI SDK 4.1 + +### Patch Changes + +- Updated dependencies [62ba5ad] + - @ai-sdk/provider-utils@2.1.0 + +## 1.0.20 + +### Patch Changes + +- Updated dependencies [00114c5] + - @ai-sdk/provider-utils@2.0.8 + +## 1.0.19 + +### Patch Changes + +- 218d001: feat (provider): Add maxImagesPerCall setting to all image providers. + +## 1.0.18 + +### Patch Changes + +- fe816e4: fix (provider/openai): streamObject with o1 + +## 1.0.17 + +### Patch Changes + +- ba62cf2: feat (provider/openai): automatically map maxTokens to max_completion_tokens for reasoning models +- 3c3fae8: fix (provider/openai): add o1-mini-2024-09-12 and o1-preview-2024-09-12 configurations + +## 1.0.16 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@2.0.7 + +## 1.0.15 + +### Patch Changes + +- f8c6acb: feat (provider/openai): automatically simulate streaming for reasoning models +- d0041f7: feat (provider/openai): improved system message support for reasoning models +- 4d2f97b: feat (provider/openai): improve automatic setting removal for reasoning models + +## 1.0.14 + +### Patch Changes + +- 19a2ce7: feat (ai/core): add aspectRatio and seed options to generateImage +- 6337688: feat: change image generation errors to warnings +- Updated dependencies + - @ai-sdk/provider@1.0.4 + - @ai-sdk/provider-utils@2.0.6 + +## 1.0.13 + +### Patch Changes + +- b19aa82: feat (provider/openai): add predicted outputs token usage + +## 1.0.12 + +### Patch Changes + +- a4241ff: feat (provider/openai): add o3 reasoning model support + +## 1.0.11 + +### Patch Changes + +- 5ed5e45: chore (config): Use ts-library.json tsconfig for no-UI libs. +- Updated dependencies [5ed5e45] + - @ai-sdk/provider-utils@2.0.5 + - @ai-sdk/provider@1.0.3 + +## 1.0.10 + +### Patch Changes + +- d4fad4e: fix (provider/openai): fix reasoning model detection + +## 1.0.9 + +### Patch Changes + +- 3fab0fb: feat (provider/openai): support reasoning_effort setting +- e956eed: feat (provider/openai): update model list and add o1 +- 6faab13: feat (provider/openai): simulated streaming setting + +## 1.0.8 + +### Patch Changes + +- 09a9cab: feat (ai/core): add experimental generateImage function +- Updated dependencies [09a9cab] + - @ai-sdk/provider@1.0.2 + - @ai-sdk/provider-utils@2.0.4 + +## 1.0.7 + +### Patch Changes + +- Updated dependencies [0984f0b] + - @ai-sdk/provider-utils@2.0.3 + +## 1.0.6 + +### Patch Changes + +- a9a19cb: fix (provider/openai,groq): prevent sending duplicate tool calls + +## 1.0.5 + +### Patch Changes + +- fc18132: feat (ai/core): experimental output for generateText + +## 1.0.4 + +### Patch Changes + +- Updated dependencies [b446ae5] + - @ai-sdk/provider@1.0.1 + - @ai-sdk/provider-utils@2.0.2 + +## 1.0.3 + +### Patch Changes + +- b748dfb: feat (providers): update model lists + +## 1.0.2 + +### Patch Changes + +- Updated dependencies [c3ab5de] + - @ai-sdk/provider-utils@2.0.1 + +## 1.0.1 + +### Patch Changes + +- 5e6419a: feat (provider/openai): support streaming for reasoning models + +## 1.0.0 + +### Major Changes + +- 66060f7: chore (release): bump major version to 4.0 +- 79644e9: chore (provider/openai): remove OpenAI facade +- 0d3d3f5: chore (providers): remove baseUrl option + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@2.0.0 + - @ai-sdk/provider@1.0.0 + +## 1.0.0-canary.3 + +### Patch Changes + +- Updated dependencies [8426f55] + - @ai-sdk/provider-utils@2.0.0-canary.3 + +## 1.0.0-canary.2 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@2.0.0-canary.2 + +## 1.0.0-canary.1 + +### Major Changes + +- 79644e9: chore (provider/openai): remove OpenAI facade +- 0d3d3f5: chore (providers): remove baseUrl option + +### Patch Changes + +- Updated dependencies [b1da952] + - @ai-sdk/provider-utils@2.0.0-canary.1 + +## 1.0.0-canary.0 + +### Major Changes + +- 66060f7: chore (release): bump major version to 4.0 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@2.0.0-canary.0 + - @ai-sdk/provider@1.0.0-canary.0 + +## 0.0.72 + +### Patch Changes + +- 0bc4115: feat (provider/openai): support predicted outputs + +## 0.0.71 + +### Patch Changes + +- 54a3a59: fix (provider/openai): support object-json mode without schema + +## 0.0.70 + +### Patch Changes + +- 3b1b69a: feat: provider-defined tools +- Updated dependencies + - @ai-sdk/provider-utils@1.0.22 + - @ai-sdk/provider@0.0.26 + +## 0.0.69 + +### Patch Changes + +- b9b0d7b: feat (ai): access raw request body +- Updated dependencies [b9b0d7b] + - @ai-sdk/provider@0.0.25 + - @ai-sdk/provider-utils@1.0.21 + +## 0.0.68 + +### Patch Changes + +- 741ca51: feat (provider/openai): support mp3 and wav audio inputs + +## 0.0.67 + +### Patch Changes + +- 39fccee: feat (provider/openai): provider name can be changed for 3rd party openai compatible providers + +## 0.0.66 + +### Patch Changes + +- 3f29c10: feat (provider/openai): support metadata field for distillation + +## 0.0.65 + +### Patch Changes + +- e8aed44: Add OpenAI cached prompt tokens to experimental_providerMetadata for generateText and streamText + +## 0.0.64 + +### Patch Changes + +- 5aa576d: feat (provider/openai): support store parameter for distillation + +## 0.0.63 + +### Patch Changes + +- Updated dependencies [d595d0d] + - @ai-sdk/provider@0.0.24 + - @ai-sdk/provider-utils@1.0.20 + +## 0.0.62 + +### Patch Changes + +- 7efa867: feat (provider/openai): simulated streaming for reasoning models + +## 0.0.61 + +### Patch Changes + +- 8132a60: feat (provider/openai): support reasoning token usage and max_completion_tokens + +## 0.0.60 + +### Patch Changes + +- Updated dependencies [273f696] + - @ai-sdk/provider-utils@1.0.19 + +## 0.0.59 + +### Patch Changes + +- a0991ec: feat (provider/openai): add o1-preview and o1-mini models + +## 0.0.58 + +### Patch Changes + +- e0c36bd: feat (provider/openai): support image detail + +## 0.0.57 + +### Patch Changes + +- d1aaeae: feat (provider/openai): support ai sdk image download + +## 0.0.56 + +### Patch Changes + +- 03313cd: feat (ai): expose response id, response model, response timestamp in telemetry and api +- Updated dependencies + - @ai-sdk/provider-utils@1.0.18 + - @ai-sdk/provider@0.0.23 + +## 0.0.55 + +### Patch Changes + +- 28cbf2e: fix (provider/openai): support tool call deltas when arguments are sent in the first chunk + +## 0.0.54 + +### Patch Changes + +- 26515cb: feat (ai/provider): introduce ProviderV1 specification +- Updated dependencies [26515cb] + - @ai-sdk/provider@0.0.22 + - @ai-sdk/provider-utils@1.0.17 + +## 0.0.53 + +### Patch Changes + +- Updated dependencies [09f895f] + - @ai-sdk/provider-utils@1.0.16 + +## 0.0.52 + +### Patch Changes + +- d5b6a15: feat (provider/openai): support partial usage information + +## 0.0.51 + +### Patch Changes + +- Updated dependencies [d67fa9c] + - @ai-sdk/provider-utils@1.0.15 + +## 0.0.50 + +### Patch Changes + +- Updated dependencies [f2c025e] + - @ai-sdk/provider@0.0.21 + - @ai-sdk/provider-utils@1.0.14 + +## 0.0.49 + +### Patch Changes + +- f42d9bd: fix (provider/openai): support OpenRouter streaming errors + +## 0.0.48 + +### Patch Changes + +- Updated dependencies [6ac355e] + - @ai-sdk/provider@0.0.20 + - @ai-sdk/provider-utils@1.0.13 + +## 0.0.47 + +### Patch Changes + +- 4ffbaee: fix (provider/openai): fix strict flag for structured outputs with tools +- dd712ac: fix: use FetchFunction type to prevent self-reference +- Updated dependencies [dd712ac] + - @ai-sdk/provider-utils@1.0.12 + +## 0.0.46 + +### Patch Changes + +- 89b18ca: fix (ai/provider): send finish reason 'unknown' by default +- Updated dependencies [dd4a0f5] + - @ai-sdk/provider@0.0.19 + - @ai-sdk/provider-utils@1.0.11 + +## 0.0.45 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@1.0.10 + - @ai-sdk/provider@0.0.18 + +## 0.0.44 + +### Patch Changes + +- 029af4c: feat (ai/core): support schema name & description in generateObject & streamObject +- Updated dependencies [029af4c] + - @ai-sdk/provider@0.0.17 + - @ai-sdk/provider-utils@1.0.9 + +## 0.0.43 + +### Patch Changes + +- d58517b: feat (ai/openai): structured outputs +- c0a73ee: feat (provider/openai): add gpt-4o-2024-08-06 to list of supported models +- Updated dependencies [d58517b] + - @ai-sdk/provider@0.0.16 + - @ai-sdk/provider-utils@1.0.8 + +## 0.0.42 + +### Patch Changes + +- Updated dependencies [96aed25] + - @ai-sdk/provider@0.0.15 + - @ai-sdk/provider-utils@1.0.7 + +## 0.0.41 + +### Patch Changes + +- 7a2eb27: feat (provider/openai): make role nullish to enhance provider support +- Updated dependencies + - @ai-sdk/provider-utils@1.0.6 + +## 0.0.40 + +### Patch Changes + +- Updated dependencies [a8d1c9e9] + - @ai-sdk/provider-utils@1.0.5 + - @ai-sdk/provider@0.0.14 + +## 0.0.39 + +### Patch Changes + +- Updated dependencies [4f88248f] + - @ai-sdk/provider-utils@1.0.4 + +## 0.0.38 + +### Patch Changes + +- 2b9da0f0: feat (core): support stopSequences setting. +- 909b9d27: feat (ai/openai): Support legacy function calls +- a5b58845: feat (core): support topK setting +- 4aa8deb3: feat (provider): support responseFormat setting in provider api +- 13b27ec6: chore (ai/core): remove grammar mode +- Updated dependencies + - @ai-sdk/provider@0.0.13 + - @ai-sdk/provider-utils@1.0.3 + +## 0.0.37 + +### Patch Changes + +- 89947fc5: chore (provider/openai): update model list for type-ahead support + +## 0.0.36 + +### Patch Changes + +- b7290943: feat (ai/core): add token usage to embed and embedMany +- Updated dependencies [b7290943] + - @ai-sdk/provider@0.0.12 + - @ai-sdk/provider-utils@1.0.2 + +## 0.0.35 + +### Patch Changes + +- Updated dependencies [d481729f] + - @ai-sdk/provider-utils@1.0.1 + +## 0.0.34 + +### Patch Changes + +- 5edc6110: feat (ai/core): add custom request header support +- Updated dependencies + - @ai-sdk/provider@0.0.11 + - @ai-sdk/provider-utils@1.0.0 + +## 0.0.33 + +### Patch Changes + +- Updated dependencies [02f6a088] + - @ai-sdk/provider-utils@0.0.16 + +## 0.0.32 + +### Patch Changes + +- 1b37b8b9: fix (@ai-sdk/openai): only send logprobs settings when logprobs are requested + +## 0.0.31 + +### Patch Changes + +- eba071dd: feat (@ai-sdk/azure): add azure openai completion support +- 1ea890fe: feat (@ai-sdk/azure): add azure openai completion support + +## 0.0.30 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@0.0.15 + +## 0.0.29 + +### Patch Changes + +- 4728c37f: feat (core): add text embedding model support to provider registry +- 7910ae84: feat (providers): support custom fetch implementations +- Updated dependencies [7910ae84] + - @ai-sdk/provider-utils@0.0.14 + +## 0.0.28 + +### Patch Changes + +- f9db8fd6: feat (@ai-sdk/openai): add parallelToolCalls setting + +## 0.0.27 + +### Patch Changes + +- fc9552ec: fix (@ai-sdk/azure): allow for nullish delta + +## 0.0.26 + +### Patch Changes + +- 7530f861: fix (@ai-sdk/openai): add internal dist to bundle + +## 0.0.25 + +### Patch Changes + +- 8b1362a7: chore (@ai-sdk/openai): expose models under /internal for reuse in other providers + +## 0.0.24 + +### Patch Changes + +- 0e78960c: fix (@ai-sdk/openai): make function name and arguments nullish + +## 0.0.23 + +### Patch Changes + +- a68fe74a: fix (@ai-sdk/openai): allow null tool_calls value. + +## 0.0.22 + +### Patch Changes + +- Updated dependencies [102ca22f] + - @ai-sdk/provider@0.0.10 + - @ai-sdk/provider-utils@0.0.13 + +## 0.0.21 + +### Patch Changes + +- fca7d026: feat (provider/openai): support streaming tool calls that are sent in one chunk +- Updated dependencies + - @ai-sdk/provider@0.0.9 + - @ai-sdk/provider-utils@0.0.12 + +## 0.0.20 + +### Patch Changes + +- a1d08f3e: fix (provider/openai): handle error chunks when streaming + +## 0.0.19 + +### Patch Changes + +- beb8b739: fix (provider/openai): return unknown finish reasons as unknown + +## 0.0.18 + +### Patch Changes + +- fb42e760: feat (provider/openai): send user message content as text when possible + +## 0.0.17 + +### Patch Changes + +- f39c0dd2: feat (provider): implement toolChoice support +- Updated dependencies [f39c0dd2] + - @ai-sdk/provider@0.0.8 + - @ai-sdk/provider-utils@0.0.11 + +## 0.0.16 + +### Patch Changes + +- 2b18fa11: fix (provider/openai): remove object type validation + +## 0.0.15 + +### Patch Changes + +- 24683b72: fix (providers): Zod is required dependency +- Updated dependencies [8e780288] + - @ai-sdk/provider@0.0.7 + - @ai-sdk/provider-utils@0.0.10 + +## 0.0.14 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@0.0.6 + - @ai-sdk/provider-utils@0.0.9 + +## 0.0.13 + +### Patch Changes + +- 4e3c922: fix (provider/openai): introduce compatibility mode in which "stream_options" are not sent + +## 0.0.12 + +### Patch Changes + +- 6f48839: feat (provider/openai): add gpt-4o to the list of supported models +- 1009594: feat (provider/openai): set stream_options/include_usage to true when streaming +- 0f6bc4e: feat (ai/core): add embed function +- Updated dependencies [0f6bc4e] + - @ai-sdk/provider@0.0.5 + - @ai-sdk/provider-utils@0.0.8 + +## 0.0.11 + +### Patch Changes + +- Updated dependencies [325ca55] + - @ai-sdk/provider@0.0.4 + - @ai-sdk/provider-utils@0.0.7 + +## 0.0.10 + +### Patch Changes + +- Updated dependencies [276f22b] + - @ai-sdk/provider-utils@0.0.6 + +## 0.0.9 + +### Patch Changes + +- Updated dependencies [41d5736] + - @ai-sdk/provider@0.0.3 + - @ai-sdk/provider-utils@0.0.5 + +## 0.0.8 + +### Patch Changes + +- Updated dependencies [56ef84a] + - @ai-sdk/provider-utils@0.0.4 + +## 0.0.7 + +### Patch Changes + +- 0833e19: Allow optional content to support Fireworks function calling. + +## 0.0.6 + +### Patch Changes + +- d6431ae: ai/core: add logprobs support (thanks @SamStenner for the contribution) +- 25f3350: ai/core: add support for getting raw response headers. +- Updated dependencies + - @ai-sdk/provider@0.0.2 + - @ai-sdk/provider-utils@0.0.3 + +## 0.0.5 + +### Patch Changes + +- eb150a6: ai/core: remove scaling of setting values (breaking change). If you were using the temperature, frequency penalty, or presence penalty settings, you need to update the providers and adjust the setting values. +- Updated dependencies [eb150a6] + - @ai-sdk/provider-utils@0.0.2 + - @ai-sdk/provider@0.0.1 + +## 0.0.4 + +### Patch Changes + +- c6fc35b: Add custom header and OpenAI project support. + +## 0.0.3 + +### Patch Changes + +- ab60b18: Simplified model construction by directly calling provider functions. Add create... functions to create provider instances. + +## 0.0.2 + +### Patch Changes + +- 2bff460: Fix build for release. + +## 0.0.1 + +### Patch Changes + +- 7b8791d: Support streams with 'chat.completion' objects. +- 7b8791d: Rename baseUrl to baseURL. Automatically remove trailing slashes. +- Updated dependencies [7b8791d] + - @ai-sdk/provider-utils@0.0.1 diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/LICENSE new file mode 100644 index 000000000..6c16c29f4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/LICENSE @@ -0,0 +1,13 @@ +Copyright 2023 Vercel, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/README.md new file mode 100644 index 000000000..8e027b8c4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/README.md @@ -0,0 +1,44 @@ +# AI SDK - OpenAI Provider + +The **[OpenAI provider](https://ai-sdk.dev/providers/ai-sdk-providers/openai)** for the [AI SDK](https://ai-sdk.dev/docs) +contains language model support for the OpenAI chat and completion APIs and embedding model support for the OpenAI embeddings API. + +## Setup + +The OpenAI provider is available in the `@ai-sdk/openai` module. You can install it with + +```bash +npm i @ai-sdk/openai +``` + +## Skill for Coding Agents + +If you use coding agents such as Claude Code or Cursor, we highly recommend adding the AI SDK skill to your repository: + +```shell +npx skills add vercel/ai +``` + +## Provider Instance + +You can import the default provider instance `openai` from `@ai-sdk/openai`: + +```ts +import { openai } from '@ai-sdk/openai'; +``` + +## Example + +```ts +import { openai } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: openai('gpt-5-mini'), + prompt: 'Write a vegetarian lasagna recipe for 4 people.', +}); +``` + +## Documentation + +Please check out the **[OpenAI provider documentation](https://ai-sdk.dev/providers/ai-sdk-providers/openai)** for more information. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/docs/03-openai.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/docs/03-openai.mdx new file mode 100644 index 000000000..bc673dcf1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/docs/03-openai.mdx @@ -0,0 +1,2540 @@ +--- +title: OpenAI +description: Learn how to use the OpenAI provider for the AI SDK. +--- + +# OpenAI Provider + +The [OpenAI](https://openai.com/) provider contains language model support for the OpenAI responses, chat, and completion APIs, as well as embedding model support for the OpenAI embeddings API. + +## Setup + +The OpenAI provider is available in the `@ai-sdk/openai` module. You can install it with + + + + + + + + + + + + + + + + + +## Provider Instance + +You can import the default provider instance `openai` from `@ai-sdk/openai`: + +```ts +import { openai } from '@ai-sdk/openai'; +``` + +If you need a customized setup, you can import `createOpenAI` from `@ai-sdk/openai` and create a provider instance with your settings: + +```ts +import { createOpenAI } from '@ai-sdk/openai'; + +const openai = createOpenAI({ + // custom settings, e.g. + headers: { + 'header-name': 'header-value', + }, +}); +``` + +You can use the following optional settings to customize the OpenAI provider instance: + +- **baseURL** _string_ + + Use a different URL prefix for API calls, e.g. to use proxy servers. + The default prefix is `https://api.openai.com/v1`. + +- **apiKey** _string_ + + API key that is being sent using the `Authorization` header. + It defaults to the `OPENAI_API_KEY` environment variable. + +- **name** _string_ + + The provider name. You can set this when using OpenAI compatible providers + to change the model provider property. Defaults to `openai`. + +- **organization** _string_ + + OpenAI Organization. + +- **project** _string_ + + OpenAI project. + +- **headers** _Record<string,string>_ + + Custom headers to include in the requests. + +- **fetch** _(input: RequestInfo, init?: RequestInit) => Promise<Response>_ + + Custom [fetch](https://developer.mozilla.org/en-US/docs/Web/API/fetch) implementation. + Defaults to the global `fetch` function. + You can use it as a middleware to intercept requests, + or to provide a custom fetch implementation for e.g. testing. + +## Language Models + +The OpenAI provider instance is a function that you can invoke to create a language model: + +```ts +const model = openai('gpt-5'); +``` + +It automatically selects the correct API based on the model id. +You can also pass additional settings in the second argument: + +```ts +const model = openai('gpt-5', { + // additional settings +}); +``` + +The available options depend on the API that's automatically chosen for the model (see below). +If you want to explicitly select a specific model API, you can use `.responses`, `.chat`, or `.completion`. + + + Since AI SDK 5, the OpenAI responses API is called by default (unless you + specify e.g. 'openai.chat') + + +### Example + +You can use OpenAI language models to generate text with the `generateText` function: + +```ts +import { openai } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: openai('gpt-5'), + prompt: 'Write a vegetarian lasagna recipe for 4 people.', +}); +``` + +OpenAI language models can also be used in the `streamText` function +and support structured data generation with [`Output`](/docs/reference/ai-sdk-core/output) +(see [AI SDK Core](/docs/ai-sdk-core)). + +### Responses Models + +You can use the OpenAI responses API with the `openai(modelId)` or `openai.responses(modelId)` factory methods. It is the default API that is used by the OpenAI provider (since AI SDK 5). + +```ts +const model = openai('gpt-5'); +``` + +Further configuration can be done using OpenAI provider options. +You can validate the provider options using the `OpenAILanguageModelResponsesOptions` type. + +```ts +import { openai, OpenAILanguageModelResponsesOptions } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-5'), // or openai.responses('gpt-5') + providerOptions: { + openai: { + parallelToolCalls: false, + store: false, + user: 'user_123', + // ... + } satisfies OpenAILanguageModelResponsesOptions, + }, + // ... +}); +``` + +The following provider options are available: + +- **parallelToolCalls** _boolean_ + Whether to use parallel tool calls. Defaults to `true`. + +- **store** _boolean_ + + Whether to store the generation. Defaults to `true`. + +- **maxToolCalls** _integer_ + The maximum number of total calls to built-in tools that can be processed in a response. + This maximum number applies across all built-in tool calls, not per individual tool. + Any further attempts to call a tool by the model will be ignored. + +- **metadata** _Record<string, string>_ + Additional metadata to store with the generation. + +- **conversation** _string_ + The ID of the OpenAI Conversation to continue. + You must create a conversation first via the [OpenAI API](https://platform.openai.com/docs/api-reference/conversations/create). + Cannot be used in conjunction with `previousResponseId`. + Defaults to `undefined`. + +- **previousResponseId** _string_ + The ID of the previous response. You can use it to continue a conversation. Defaults to `undefined`. + +- **instructions** _string_ + Instructions for the model. + They can be used to change the system or developer message when continuing a conversation using the `previousResponseId` option. + Defaults to `undefined`. + +- **logprobs** _boolean | number_ + Return the log probabilities of the tokens. Including logprobs will increase the response size and can slow down response times. However, it can be useful to better understand how the model is behaving. Setting to `true` returns the log probabilities of the tokens that were generated. Setting to a number (1-20) returns the log probabilities of the top n tokens that were generated. + +- **user** _string_ + A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. Defaults to `undefined`. + +- **reasoningEffort** _'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh'_ + Reasoning effort for reasoning models. Defaults to `medium`. If you use `providerOptions` to set the `reasoningEffort` option, this model setting will be ignored. + + + The 'none' type for `reasoningEffort` is only available for OpenAI's GPT-5.1 + models. Also, the 'xhigh' type for `reasoningEffort` is only available for + OpenAI's GPT-5.1-Codex-Max model. Setting `reasoningEffort` to 'none' or + 'xhigh' with unsupported models will result in an error. + + +- **reasoningSummary** _'auto' | 'detailed'_ + Controls whether the model returns its reasoning process. Set to `'auto'` for a condensed summary, `'detailed'` for more comprehensive reasoning. Defaults to `undefined` (no reasoning summaries). When enabled, reasoning summaries appear in the stream as events with type `'reasoning'` and in non-streaming responses within the `reasoning` field. + +- **strictJsonSchema** _boolean_ + Whether to use strict JSON schema validation. Defaults to `true`. + + + OpenAI structured outputs have several + [limitations](https://openai.com/index/introducing-structured-outputs-in-the-api), + in particular around the [supported + schemas](https://platform.openai.com/docs/guides/structured-outputs/supported-schemas), + and are therefore opt-in. For example, optional schema properties are not + supported. You need to change Zod `.nullish()` and `.optional()` to + `.nullable()`. + + +- **serviceTier** _'auto' | 'flex' | 'priority' | 'default'_ + Service tier for the request. Set to 'flex' for 50% cheaper processing + at the cost of increased latency (available for o3, o4-mini, and gpt-5 models). + Set to 'priority' for faster processing with Enterprise access (available for gpt-4, gpt-5, gpt-5-mini, o3, o4-mini; gpt-5-nano is not supported). + + Defaults to 'auto'. + +- **textVerbosity** _'low' | 'medium' | 'high'_ + Controls the verbosity of the model's response. Lower values result in more concise responses, + while higher values result in more verbose responses. Defaults to `'medium'`. + +- **include** _Array<string>_ + Specifies additional content to include in the response. Supported values: + `['file_search_call.results']` for including file search results in responses. + `['message.output_text.logprobs']` for logprobs. + Defaults to `undefined`. + +- **truncation** _string_ + The truncation strategy to use for the model response. + + - Auto: If the input to this Response exceeds the model's context window size, the model will truncate the response to fit the context window by dropping items from the beginning of the conversation. + - disabled (default): If the input size will exceed the context window size for a model, the request will fail with a 400 error. + +- **promptCacheKey** _string_ + A cache key for manual prompt caching control. Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. + +- **promptCacheRetention** _'in_memory' | '24h'_ + The retention policy for the prompt cache. Set to `'24h'` to enable extended prompt caching, which keeps cached prefixes active for up to 24 hours. Defaults to `'in_memory'` for standard prompt caching. Note: `'24h'` is currently only available for the 5.1 series of models. + +- **safetyIdentifier** _string_ + A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies. The IDs should be a string that uniquely identifies each user. + +- **systemMessageMode** _'system' | 'developer' | 'remove'_ + Controls the role of the system message when making requests. By default (when omitted), for models that support reasoning the `system` message is automatically converted to a `developer` message. Setting `systemMessageMode` to `system` passes the system message as a system-level instruction; `developer` passes it as a developer message; `remove` omits the system message from the request. + +- **forceReasoning** _boolean_ + Force treating this model as a reasoning model. This is useful for "stealth" reasoning models (e.g. via a custom baseURL) where the model ID is not recognized by the SDK's allowlist. When enabled, the SDK applies reasoning-model parameter compatibility rules and defaults `systemMessageMode` to `developer` unless overridden. + +The OpenAI responses provider also returns provider-specific metadata: + +For Responses models, you can type this metadata using `OpenaiResponsesProviderMetadata`: + +```ts +import { openai, type OpenaiResponsesProviderMetadata } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-5'), +}); + +const providerMetadata = result.providerMetadata as + | OpenaiResponsesProviderMetadata + | undefined; + +const { responseId, logprobs, serviceTier } = providerMetadata?.openai ?? {}; + +// responseId can be used to continue a conversation (previousResponseId). +console.log(responseId); +``` + +The following OpenAI-specific metadata may be returned: + +- **responseId** _string | null | undefined_ + The ID of the response. Can be used to continue a conversation. +- **logprobs** _(optional)_ + Log probabilities of output tokens (when enabled). +- **serviceTier** _(optional)_ + Service tier information returned by the API. + +#### Reasoning Output + +For reasoning models like `gpt-5`, you can enable reasoning summaries to see the model's thought process. Different models support different summarizers—for example, `o4-mini` supports detailed summaries. Set `reasoningSummary: "auto"` to automatically receive the richest level available. + +```ts highlight="8-9,16" +import { + openai, + type OpenAILanguageModelResponsesOptions, +} from '@ai-sdk/openai'; +import { streamText } from 'ai'; + +const result = streamText({ + model: openai('gpt-5'), + prompt: 'Tell me about the Mission burrito debate in San Francisco.', + providerOptions: { + openai: { + reasoningSummary: 'detailed', // 'auto' for condensed or 'detailed' for comprehensive + } satisfies OpenAILanguageModelResponsesOptions, + }, +}); + +for await (const part of result.fullStream) { + if (part.type === 'reasoning') { + console.log(`Reasoning: ${part.textDelta}`); + } else if (part.type === 'text-delta') { + process.stdout.write(part.textDelta); + } +} +``` + +For non-streaming calls with `generateText`, the reasoning summaries are available in the `reasoning` field of the response: + +```ts highlight="8-9,13" +import { + openai, + type OpenAILanguageModelResponsesOptions, +} from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-5'), + prompt: 'Tell me about the Mission burrito debate in San Francisco.', + providerOptions: { + openai: { + reasoningSummary: 'auto', + } satisfies OpenAILanguageModelResponsesOptions, + }, +}); +console.log('Reasoning:', result.reasoning); +``` + +Learn more about reasoning summaries in the [OpenAI documentation](https://platform.openai.com/docs/guides/reasoning?api-mode=responses#reasoning-summaries). + +#### WebSocket Transport + +OpenAI's [WebSocket API](https://developers.openai.com/api/docs/guides/websocket-mode) keeps a persistent connection open, which can significantly +reduce Time-to-First-Byte (TTFB) in agentic workflows with many tool calls. +After the initial connection, subsequent requests skip TCP/TLS/HTTP negotiation entirely. + +The [`ai-sdk-openai-websocket-fetch`](https://www.npmjs.com/package/ai-sdk-openai-websocket-fetch) +package provides a drop-in `fetch` replacement that routes streaming requests +through a persistent WebSocket connection. + + + + + + + + + + + + + + + + +Pass the WebSocket fetch to `createOpenAI` via the `fetch` option: + +```ts highlight="2,6-7,15" +import { createOpenAI } from '@ai-sdk/openai'; +import { createWebSocketFetch } from 'ai-sdk-openai-websocket-fetch'; +import { streamText } from 'ai'; + +// Create a WebSocket-backed fetch instance +const wsFetch = createWebSocketFetch(); +const openai = createOpenAI({ fetch: wsFetch }); + +const result = streamText({ + model: openai('gpt-4.1-mini'), + prompt: 'Hello!', + tools: { + // ... + }, + onFinish: () => wsFetch.close(), // close the WebSocket when done +}); +``` + +The first request will be slower because it must establish the WebSocket connection +(DNS + TCP + TLS + WebSocket upgrade). After that, subsequent steps in a +multi-step tool-calling loop reuse the open connection, resulting in lower TTFB +per step. + + + The WebSocket transport only routes streaming requests to the OpenAI Responses + API (`POST /responses` with `stream: true`) through the WebSocket. All other + requests (non-streaming, embeddings, etc.) fall through to the standard + `fetch` implementation. + + +You can see a live side-by-side comparison of HTTP vs WebSocket streaming performance +in the [demo app](https://github.com/vercel-labs/ai-sdk-openai-websocket). + +#### Verbosity Control + +You can control the length and detail of model responses using the `textVerbosity` parameter: + +```ts +import { + openai, + type OpenAILanguageModelResponsesOptions, +} from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-5-mini'), + prompt: 'Write a poem about a boy and his first pet dog.', + providerOptions: { + openai: { + textVerbosity: 'low', // 'low' for concise, 'medium' (default), or 'high' for verbose + } satisfies OpenAILanguageModelResponsesOptions, + }, +}); +``` + +The `textVerbosity` parameter scales output length without changing the underlying prompt: + +- `'low'`: Produces terse, minimal responses +- `'medium'`: Balanced detail (default) +- `'high'`: Verbose responses with comprehensive detail + +#### Web Search Tool + +The OpenAI responses API supports web search through the `openai.tools.webSearch` tool. + +```ts +const result = await generateText({ + model: openai('gpt-5'), + prompt: 'What happened in San Francisco last week?', + tools: { + web_search: openai.tools.webSearch({ + // optional configuration: + externalWebAccess: true, + searchContextSize: 'high', + userLocation: { + type: 'approximate', + city: 'San Francisco', + region: 'California', + }, + filters: { + allowedDomains: ['sfchronicle.com', 'sfgate.com'], + }, + }), + }, + // Force web search tool (optional): + toolChoice: { type: 'tool', toolName: 'web_search' }, +}); + +// URL sources directly from `results` +const sources = result.sources; + +// Or access sources from tool results +for (const toolResult of result.toolResults) { + if (toolResult.toolName === 'web_search') { + console.log('Query:', toolResult.output.action.query); + console.log('Sources:', toolResult.output.sources); + // `sources` is an array of object: { type: 'url', url: string } + } +} +``` + +The web search tool supports the following configuration options: + +- **externalWebAccess** _boolean_ - Whether to use external web access for fetching live content. Defaults to `true`. +- **searchContextSize** _'low' | 'medium' | 'high'_ - Controls the amount of context used for the search. Higher values provide more comprehensive results but may have higher latency and cost. +- **userLocation** - Optional location information to provide geographically relevant results. Includes `type` (always `'approximate'`), `country`, `city`, `region`, and `timezone`. +- **filters** - Optional filter configuration to restrict search results. + - **allowedDomains** _string[]_ - Array of allowed domains for the search. Subdomains of the provided domains are automatically included. + +For detailed information on configuration options see the [OpenAI Web Search Tool documentation](https://platform.openai.com/docs/guides/tools-web-search?api-mode=responses). + +#### File Search Tool + +The OpenAI responses API supports file search through the `openai.tools.fileSearch` tool. + +You can force the use of the file search tool by setting the `toolChoice` parameter to `{ type: 'tool', toolName: 'file_search' }`. + +```ts +const result = await generateText({ + model: openai('gpt-5'), + prompt: 'What does the document say about user authentication?', + tools: { + file_search: openai.tools.fileSearch({ + vectorStoreIds: ['vs_123'], + // configuration below is optional: + maxNumResults: 5, + filters: { + key: 'author', + type: 'eq', + value: 'Jane Smith', + }, + ranking: { + ranker: 'auto', + scoreThreshold: 0.5, + }, + }), + }, + providerOptions: { + openai: { + // optional: include results + include: ['file_search_call.results'], + } satisfies OpenAILanguageModelResponsesOptions, + }, +}); +``` + +The file search tool supports filtering with both comparison and compound filters: + +**Comparison filters** - Filter by a single attribute: + +- `eq` - Equal to +- `ne` - Not equal to +- `gt` - Greater than +- `gte` - Greater than or equal to +- `lt` - Less than +- `lte` - Less than or equal to +- `in` - Value is in array +- `nin` - Value is not in array + +```ts +// Single comparison filter +filters: { key: 'year', type: 'gte', value: 2023 } + +// Filter with array values +filters: { key: 'status', type: 'in', value: ['published', 'reviewed'] } +``` + +**Compound filters** - Combine multiple filters with `and` or `or`: + +```ts +// Compound filter with AND +filters: { + type: 'and', + filters: [ + { key: 'author', type: 'eq', value: 'Jane Smith' }, + { key: 'year', type: 'gte', value: 2023 }, + ], +} + +// Compound filter with OR +filters: { + type: 'or', + filters: [ + { key: 'department', type: 'eq', value: 'Engineering' }, + { key: 'department', type: 'eq', value: 'Research' }, + ], +} +``` + +#### Image Generation Tool + +OpenAI's Responses API supports multi-modal image generation as a provider-defined tool. +Availability is restricted to specific models (for example, `gpt-5` variants). + +You can use the image tool with either `generateText` or `streamText`: + +```ts +import { openai } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-5'), + prompt: + 'Generate an image of an echidna swimming across the Mozambique channel.', + tools: { + image_generation: openai.tools.imageGeneration({ outputFormat: 'webp' }), + }, +}); + +for (const toolResult of result.staticToolResults) { + if (toolResult.toolName === 'image_generation') { + const base64Image = toolResult.output.result; + } +} +``` + +```ts +import { openai } from '@ai-sdk/openai'; +import { streamText } from 'ai'; + +const result = streamText({ + model: openai('gpt-5'), + prompt: + 'Generate an image of an echidna swimming across the Mozambique channel.', + tools: { + image_generation: openai.tools.imageGeneration({ + outputFormat: 'webp', + quality: 'low', + }), + }, +}); + +for await (const part of result.fullStream) { + if (part.type == 'tool-result' && !part.dynamic) { + const base64Image = part.output.result; + } +} +``` + + + When you set `store: false`, then previously generated images will not be + accessible by the model. We recommend using the image generation tool without + setting `store: false`. + + +For complete details on model availability, image quality controls, supported sizes, and tool-specific parameters, +refer to the OpenAI documentation: + +- Image generation overview and models: [OpenAI Image Generation](https://platform.openai.com/docs/guides/image-generation) +- Image generation tool parameters (background, size, quality, format, etc.): [Image Generation Tool Options](https://platform.openai.com/docs/guides/tools-image-generation#tool-options) + +#### Code Interpreter Tool + +The OpenAI responses API supports the code interpreter tool through the `openai.tools.codeInterpreter` tool. +This allows models to write and execute Python code. + +```ts +import { openai } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-5'), + prompt: 'Write and run Python code to calculate the factorial of 10', + tools: { + code_interpreter: openai.tools.codeInterpreter({ + // optional configuration: + container: { + fileIds: ['file-123', 'file-456'], // optional file IDs to make available + }, + }), + }, +}); +``` + +The code interpreter tool can be configured with: + +- **container**: Either a container ID string or an object with `fileIds` to specify uploaded files that should be available to the code interpreter + + + When working with files generated by the Code Interpreter, reference + information can be obtained from both [annotations in Text + Parts](#typed-providermetadata-in-text-parts) and [`providerMetadata` in + Source Document Parts](#typed-providermetadata-in-source-document-parts). + + +#### MCP Tool + +The OpenAI responses API supports connecting to [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) servers through the `openai.tools.mcp` tool. This allows models to call tools exposed by remote MCP servers or service connectors. + +```ts +import { openai } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-5'), + prompt: 'Search the web for the latest news about AI developments', + tools: { + mcp: openai.tools.mcp({ + serverLabel: 'web-search', + serverUrl: 'https://mcp.exa.ai/mcp', + serverDescription: 'A web-search API for AI agents', + }), + }, +}); +``` + +The MCP tool can be configured with: + +- **serverLabel** _string_ (required) + + A label to identify the MCP server. This label is used in tool calls to distinguish between multiple MCP servers. + +- **serverUrl** _string_ (required if `connectorId` is not provided) + + The URL for the MCP server. Either `serverUrl` or `connectorId` must be provided. + +- **connectorId** _string_ (required if `serverUrl` is not provided) + + Identifier for a service connector. Either `serverUrl` or `connectorId` must be provided. + +- **serverDescription** _string_ (optional) + + Optional description of the MCP server that helps the model understand its purpose. + +- **allowedTools** _string[] | object_ (optional) + + Controls which tools from the MCP server are available. Can be: + + - An array of tool names: `['tool1', 'tool2']` + - An object with filters: + ```ts + { + readOnly: true, // Only allow read-only tools + toolNames: ['tool1', 'tool2'] // Specific tool names + } + ``` + +- **authorization** _string_ (optional) + + OAuth access token for authenticating with the MCP server or connector. + +- **headers** _Record<string, string>_ (optional) + + Optional HTTP headers to include in requests to the MCP server. + +- **requireApproval** _'always' | 'never' | object_ (optional) + + Controls which MCP tool calls require user approval before execution. Can be: + + - `'always'`: All MCP tool calls require approval + - `'never'`: No MCP tool calls require approval (default) + - An object with filters: + ```ts + { + never: { + toolNames: ['safe_tool', 'another_safe_tool']; // Skip approval for these tools + } + } + ``` + + When approval is required, the model will return a `tool-approval-request` content part that you can use to prompt the user for approval. See [Human in the Loop](/cookbook/next/human-in-the-loop) for more details on implementing approval workflows. + + + When `requireApproval` is not set, tool calls are approved by default. Be sure + to connect to only trusted MCP servers, who you trust to share your data with. + + + + The OpenAI MCP tool is different from the general MCP client approach + documented in [MCP Tools](/docs/ai-sdk-core/mcp-tools). The OpenAI MCP tool is + a built-in provider-defined tool that allows OpenAI models to directly connect + to MCP servers, while the general MCP client requires you to convert MCP tools + to AI SDK tools first. + + +#### Local Shell Tool + +The OpenAI responses API support the local shell tool for Codex models through the `openai.tools.localShell` tool. +Local shell is a tool that allows agents to run shell commands locally on a machine you or the user provides. + +```ts +import { openai } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai.responses('gpt-5-codex'), + tools: { + local_shell: openai.tools.localShell({ + execute: async ({ action }) => { + // ... your implementation, e.g. sandbox access ... + return { output: stdout }; + }, + }), + }, + prompt: 'List the files in my home directory.', + stopWhen: stepCountIs(2), +}); +``` + +#### Shell Tool + +The OpenAI Responses API supports the shell tool through the `openai.tools.shell` tool. +The shell tool allows running bash commands and interacting with a command line. +The model proposes shell commands; your integration executes them and returns the outputs. + + + Running arbitrary shell commands can be dangerous. Always sandbox execution or + add strict allow-/deny-lists before forwarding a command to the system shell. + + +The shell tool supports three environment modes that control where commands are executed: + +##### Local Execution (default) + +When no `environment` is specified (or `type: 'local'` is used), commands are executed locally via your `execute` callback: + +```ts +import { openai } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-5.2'), + tools: { + shell: openai.tools.shell({ + execute: async ({ action }) => { + // ... your implementation, e.g. sandbox access ... + return { output: results }; + }, + }), + }, + prompt: 'List the files in the current directory and show disk usage.', +}); +``` + +##### Hosted Container (auto) + +Set `environment.type` to `'containerAuto'` to run commands in an OpenAI-hosted container. No `execute` callback is needed — OpenAI handles execution server-side: + +```ts +const result = await generateText({ + model: openai('gpt-5.2'), + tools: { + shell: openai.tools.shell({ + environment: { + type: 'containerAuto', + // optional configuration: + memoryLimit: '4g', + fileIds: ['file-abc123'], + networkPolicy: { + type: 'allowlist', + allowedDomains: ['example.com'], + }, + }, + }), + }, + prompt: 'Install numpy and compute the eigenvalues of a 3x3 matrix.', +}); +``` + +The `containerAuto` environment supports: + +- **fileIds** _string[]_ - File IDs to make available in the container +- **memoryLimit** _'1g' | '4g' | '16g' | '64g'_ - Memory limit for the container +- **networkPolicy** - Network access policy: + - `{ type: 'disabled' }` — no network access + - `{ type: 'allowlist', allowedDomains: string[], domainSecrets?: Array<{ domain, name, value }> }` — allow specific domains with optional secrets + +##### Existing Container Reference + +Set `environment.type` to `'containerReference'` to use an existing container by ID: + +```ts +const result = await generateText({ + model: openai('gpt-5.2'), + tools: { + shell: openai.tools.shell({ + environment: { + type: 'containerReference', + containerId: 'cntr_abc123', + }, + }), + }, + prompt: 'Check the status of running processes.', +}); +``` + +##### Execute Callback + +For local execution (default or `type: 'local'`), your execute function must return an output array with results for each command: + +- **stdout** _string_ - Standard output from the command +- **stderr** _string_ - Standard error from the command +- **outcome** - Either `{ type: 'timeout' }` or `{ type: 'exit', exitCode: number }` + +##### Skills + +[Skills](https://platform.openai.com/docs/guides/tools-skills) are versioned bundles of files with a `SKILL.md` manifest that extend the shell tool's capabilities. They can be attached to both `containerAuto` and `local` environments. + +**Container skills** support two formats — by reference (for skills uploaded to OpenAI) or inline (as a base64-encoded zip): + +```ts +const result = await generateText({ + model: openai('gpt-5.2'), + tools: { + shell: openai.tools.shell({ + environment: { + type: 'containerAuto', + skills: [ + // By reference: + { type: 'skillReference', skillId: 'skill_abc123' }, + // Or inline: + { + type: 'inline', + name: 'my-skill', + description: 'What this skill does', + source: { + type: 'base64', + mediaType: 'application/zip', + data: readFileSync('./my-skill.zip').toString('base64'), + }, + }, + ], + }, + }), + }, + prompt: 'Use the skill to solve this problem.', +}); +``` + +**Local skills** point to a directory on disk containing a `SKILL.md` file: + +```ts +const result = await generateText({ + model: openai('gpt-5.2'), + tools: { + shell: openai.tools.shell({ + execute: async ({ action }) => { + // ... your local execution implementation ... + return { output: results }; + }, + environment: { + type: 'local', + skills: [ + { + name: 'my-skill', + description: 'What this skill does', + path: resolve('path/to/skill-directory'), + }, + ], + }, + }), + }, + prompt: 'Use the skill to solve this problem.', + stopWhen: stepCountIs(5), +}); +``` + +For more details on creating skills, see the [OpenAI Skills documentation](https://platform.openai.com/docs/guides/tools-skills). + +#### Apply Patch Tool + +The OpenAI Responses API supports the apply patch tool for GPT-5.1 models through the `openai.tools.applyPatch` tool. +The apply patch tool lets the model create, update, and delete files in your codebase using structured diffs. +Instead of just suggesting edits, the model emits patch operations that your application applies and reports back on, +enabling iterative, multi-step code editing workflows. + +```ts +import { openai } from '@ai-sdk/openai'; +import { generateText, stepCountIs } from 'ai'; + +const result = await generateText({ + model: openai('gpt-5.1'), + tools: { + apply_patch: openai.tools.applyPatch({ + execute: async ({ callId, operation }) => { + // ... your implementation for applying the diffs. + }, + }), + }, + prompt: 'Create a python file that calculates the factorial of a number', + stopWhen: stepCountIs(5), +}); +``` + +Your execute function must return: + +- **status** _'completed' | 'failed'_ - Whether the patch was applied successfully +- **output** _string_ (optional) - Human-readable log text (e.g., results or error messages) + +#### Tool Search + +Tool search allows the model to dynamically search for and load tools into context as needed, +rather than loading all tool definitions up front. This can reduce token usage, cost, and latency +when you have many tools. Mark the tools you want to make searchable with `deferLoading: true` +in their `providerOptions`. + +There are two execution modes: + +- **Server-executed (hosted):** OpenAI searches across the deferred tools declared in the request and returns the loaded subset in the same response. No extra round-trip is needed. +- **Client-executed:** The model emits a `tool_search_call`, your application performs the lookup, and you return the matching tools via the `execute` callback. + +##### Server-Executed (Hosted) Tool Search + +Use hosted tool search when the candidate tools are already known at request time. +Add `openai.tools.toolSearch()` with no arguments and mark your tools with `deferLoading: true`: + +```ts +import { openai } from '@ai-sdk/openai'; +import { generateText, tool, stepCountIs } from 'ai'; +import { z } from 'zod'; + +const result = await generateText({ + model: openai.responses('gpt-5.4'), + prompt: 'What is the weather in San Francisco?', + stopWhen: stepCountIs(10), + tools: { + toolSearch: openai.tools.toolSearch(), + + get_weather: tool({ + description: 'Get the current weather at a specific location', + inputSchema: z.object({ + location: z.string(), + unit: z.enum(['celsius', 'fahrenheit']), + }), + execute: async ({ location, unit }) => ({ + location, + temperature: unit === 'celsius' ? 18 : 64, + }), + providerOptions: { + openai: { deferLoading: true }, + }, + }), + + search_files: tool({ + description: 'Search through files in the workspace', + inputSchema: z.object({ query: z.string() }), + execute: async ({ query }) => ({ + results: [`Found 3 files matching "${query}"`], + }), + providerOptions: { + openai: { deferLoading: true }, + }, + }), + }, +}); +``` + +In hosted mode, the model internally searches the deferred tools, loads the relevant ones, and +proceeds to call them — all within a single response. The `tool_search_call` and +`tool_search_output` items appear in the response with `execution: 'server'` and `call_id: null`. + +##### Client-Executed Tool Search + +Use client-executed tool search when tool discovery depends on runtime state — for example, +tools that vary per tenant, project, or external system. Pass `execution: 'client'` along with +a `description`, `parameters` schema, and an `execute` callback: + +```ts +import { openai } from '@ai-sdk/openai'; +import { generateText, tool, stepCountIs } from 'ai'; +import { z } from 'zod'; + +const result = await generateText({ + model: openai.responses('gpt-5.4'), + prompt: 'What is the weather in San Francisco?', + stopWhen: stepCountIs(10), + tools: { + toolSearch: openai.tools.toolSearch({ + execution: 'client', + description: 'Search for available tools based on what the user needs.', + parameters: { + type: 'object', + properties: { + goal: { + type: 'string', + description: 'What the user is trying to accomplish', + }, + }, + required: ['goal'], + additionalProperties: false, + }, + execute: async ({ arguments: args }) => { + // Your custom tool discovery logic here. + // Return the tools that match the search goal. + return { + tools: [ + { + type: 'function', + name: 'get_weather', + description: 'Get the current weather at a specific location', + deferLoading: true, + parameters: { + type: 'object', + properties: { + location: { type: 'string' }, + }, + required: ['location'], + additionalProperties: false, + }, + }, + ], + }; + }, + }), + + get_weather: tool({ + description: 'Get the current weather at a specific location', + inputSchema: z.object({ location: z.string() }), + execute: async ({ location }) => ({ + location, + temperature: 64, + condition: 'Partly cloudy', + }), + providerOptions: { + openai: { deferLoading: true }, + }, + }), + }, +}); +``` + +In client mode, the flow spans two steps: + +1. **Step 1:** The model emits a `tool_search_call` with `execution: 'client'` and a non-null `call_id`. The SDK calls your `execute` callback with the search arguments. Your callback returns the discovered tools. +2. **Step 2:** The SDK sends the `tool_search_output` (with the matching `call_id`) back to the model. The model can now call the loaded tools as normal function calls. + +For more details, see the [OpenAI Tool Search documentation](https://platform.openai.com/docs/guides/tools-tool-search). + +#### Custom Tool + +The OpenAI Responses API supports +[custom tools](https://developers.openai.com/api/docs/guides/function-calling/#custom-tools) +through the `openai.tools.customTool` tool. +Custom tools return a raw string instead of JSON, optionally constrained to a grammar +(regex or Lark syntax). This makes them useful for generating structured text like +SQL queries, code snippets, or any output that must match a specific pattern. + +```ts +import { openai } from '@ai-sdk/openai'; +import { generateText, stepCountIs } from 'ai'; + +const result = await generateText({ + model: openai.responses('gpt-5.2-codex'), + tools: { + write_sql: openai.tools.customTool({ + name: 'write_sql', + description: 'Write a SQL SELECT query to answer the user question.', + format: { + type: 'grammar', + syntax: 'regex', + definition: 'SELECT .+', + }, + execute: async input => { + // input is a raw string matching the grammar, e.g. "SELECT * FROM users WHERE age > 25" + const rows = await db.query(input); + return JSON.stringify(rows); + }, + }), + }, + toolChoice: 'required', + prompt: 'Write a SQL query to get all users older than 25.', + stopWhen: stepCountIs(3), +}); +``` + +Custom tools also work with `streamText`: + +```ts +import { openai } from '@ai-sdk/openai'; +import { streamText } from 'ai'; + +const result = streamText({ + model: openai.responses('gpt-5.2-codex'), + tools: { + write_sql: openai.tools.customTool({ + name: 'write_sql', + description: 'Write a SQL SELECT query to answer the user question.', + format: { + type: 'grammar', + syntax: 'regex', + definition: 'SELECT .+', + }, + }), + }, + toolChoice: 'required', + prompt: 'Write a SQL query to get all users older than 25.', +}); + +for await (const chunk of result.fullStream) { + if (chunk.type === 'tool-call') { + console.log(`Tool: ${chunk.toolName}`); + console.log(`Input: ${chunk.input}`); + } +} +``` + +The custom tool can be configured with: + +- **name** _string_ (required) - The name of the custom tool. Used to identify the tool in tool calls. +- **description** _string_ (optional) - A description of what the tool does, to help the model understand when to use it. +- **format** _object_ (optional) - The output format constraint. Omit for unconstrained text output. + - **type** _'grammar' | 'text'_ - The format type. Use `'grammar'` for constrained output or `'text'` for explicit unconstrained text. + - **syntax** _'regex' | 'lark'_ - (grammar only) The grammar syntax. Use `'regex'` for regular expression patterns or `'lark'` for [Lark parser grammar](https://lark-parser.readthedocs.io/). + - **definition** _string_ - (grammar only) The grammar definition string (a regex pattern or Lark grammar). +- **execute** _function_ (optional) - An async function that receives the raw string input and returns a string result. Enables multi-turn tool calling. + +#### Image Inputs + +The OpenAI Responses API supports Image inputs for appropriate models. +You can pass Image files as part of the message content using the 'image' type: + +```ts +const result = await generateText({ + model: openai('gpt-5'), + messages: [ + { + role: 'user', + content: [ + { + type: 'text', + text: 'Please describe the image.', + }, + { + type: 'image', + image: readFileSync('./data/image.png'), + }, + ], + }, + ], +}); +``` + +The model will have access to the image and will respond to questions about it. +The image should be passed using the `image` field. + +You can also pass a file-id from the OpenAI Files API. + +```ts +{ + type: 'image', + image: 'file-8EFBcWHsQxZV7YGezBC1fq' +} +``` + +You can also pass the URL of an image. + +```ts +{ + type: 'image', + image: 'https://sample.edu/image.png', +} +``` + +#### PDF Inputs + +The OpenAI Responses API supports reading PDF files. +You can pass PDF files as part of the message content using the `file` type: + +```ts +const result = await generateText({ + model: openai('gpt-5'), + messages: [ + { + role: 'user', + content: [ + { + type: 'text', + text: 'What is an embedding model?', + }, + { + type: 'file', + data: readFileSync('./data/ai.pdf'), + mediaType: 'application/pdf', + filename: 'ai.pdf', // optional + }, + ], + }, + ], +}); +``` + +You can also pass a file-id from the OpenAI Files API. + +```ts +{ + type: 'file', + data: 'file-8EFBcWHsQxZV7YGezBC1fq', + mediaType: 'application/pdf', +} +``` + +You can also pass the URL of a pdf. + +```ts +{ + type: 'file', + data: 'https://sample.edu/example.pdf', + mediaType: 'application/pdf', + filename: 'ai.pdf', // optional +} +``` + +The model will have access to the contents of the PDF file and +respond to questions about it. +The PDF file should be passed using the `data` field, +and the `mediaType` should be set to `'application/pdf'`. + +#### Structured Outputs + +The OpenAI Responses API supports structured outputs. You can use `generateText` or `streamText` with [`Output`](/docs/reference/ai-sdk-core/output) to enforce structured outputs. + +```ts +const result = await generateText({ + model: openai('gpt-4.1'), + output: Output.object({ + schema: z.object({ + recipe: z.object({ + name: z.string(), + ingredients: z.array( + z.object({ + name: z.string(), + amount: z.string(), + }), + ), + steps: z.array(z.string()), + }), + }), + }), + prompt: 'Generate a lasagna recipe.', +}); +``` + +#### Typed providerMetadata in Text Parts + +When using the OpenAI Responses API, the SDK attaches OpenAI-specific metadata to output parts via `providerMetadata`. + +This metadata can be used on the client side for tasks such as rendering citations or downloading files generated by the Code Interpreter. +To enable type-safe handling of this metadata, the AI SDK exports dedicated TypeScript types. + +For text parts, when `part.type === 'text'`, the `providerMetadata` is provided in the form of `OpenaiResponsesTextProviderMetadata`. + +This metadata includes the following fields: + +- `itemId` + The ID of the output item in the Responses API. +- `annotations` (optional) + An array of annotation objects generated by the model. + If no annotations are present, this property itself may be omitted (`undefined`). + + Each element in `annotations` is a discriminated union with a required `type` field. Supported types include, for example: + + - `url_citation` + - `file_citation` + - `container_file_citation` + - `file_path` + + These annotations directly correspond to the annotation objects defined by the Responses API and can be used for inline reference rendering or output analysis. + For details, see the official OpenAI documentation: + [Responses API – output text annotations](https://platform.openai.com/docs/api-reference/responses/object?lang=javascript#responses-object-output-output_message-content-output_text-annotations). + +```ts +import { + openai, + type OpenaiResponsesTextProviderMetadata, +} from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-4.1-mini'), + prompt: + 'Create a program that generates five random numbers between 1 and 100 with two decimal places, and show me the execution results. Also save the result to a file.', + tools: { + code_interpreter: openai.tools.codeInterpreter(), + web_search: openai.tools.webSearch(), + file_search: openai.tools.fileSearch({ vectorStoreIds: ['vs_1234'] }), // requires a configured vector store + }, +}); + +for (const part of result.content) { + if (part.type === 'text') { + const providerMetadata = part.providerMetadata as + | OpenaiResponsesTextProviderMetadata + | undefined; + if (!providerMetadata) continue; + const { itemId: _itemId, annotations } = providerMetadata.openai; + + if (!annotations) continue; + for (const annotation of annotations) { + switch (annotation.type) { + case 'url_citation': + // url_citation is returned from web_search and provides: + // properties: type, url, title, start_index and end_index + break; + case 'file_citation': + // file_citation is returned from file_search and provides: + // properties: type, file_id, filename and index + break; + case 'container_file_citation': + // container_file_citation is returned from code_interpreter and provides: + // properties: type, container_id, file_id, filename, start_index and end_index + break; + case 'file_path': + // file_path provides: + // properties: type, file_id and index + break; + default: { + const _exhaustiveCheck: never = annotation; + throw new Error( + `Unhandled annotation: ${JSON.stringify(_exhaustiveCheck)}`, + ); + } + } + } + } +} +``` + + + When implementing file downloads for files generated by the Code Interpreter, + the `container_id` and `file_id` available in `providerMetadata` can be used + to retrieve the file content. For details, see the [Retrieve container file + content](https://platform.openai.com/docs/api-reference/container-files/retrieveContainerFileContent) + API. + + +#### Typed providerMetadata in Reasoning Parts + +When using the OpenAI Responses API, reasoning output parts can include provider metadata. +To handle this metadata in a type-safe way, use `OpenaiResponsesReasoningProviderMetadata`. + +For reasoning parts, when `part.type === 'reasoning'`, the `providerMetadata` is provided in the form of `OpenaiResponsesReasoningProviderMetadata`. + +This metadata includes the following fields: + +- `itemId` + The ID of the reasoning item in the Responses API. +- `reasoningEncryptedContent` (optional) + Encrypted reasoning content (only returned when requested via `include: ['reasoning.encrypted_content']`). + +```ts +import { + openai, + type OpenaiResponsesReasoningProviderMetadata, + type OpenAILanguageModelResponsesOptions, +} from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-5'), + prompt: 'How many "r"s are in the word "strawberry"?', + providerOptions: { + openai: { + store: false, + include: ['reasoning.encrypted_content'], + } satisfies OpenAILanguageModelResponsesOptions, + }, +}); + +for (const part of result.content) { + if (part.type === 'reasoning') { + const providerMetadata = part.providerMetadata as + | OpenaiResponsesReasoningProviderMetadata + | undefined; + + const { itemId, reasoningEncryptedContent } = + providerMetadata?.openai ?? {}; + console.log(itemId, reasoningEncryptedContent); + } +} +``` + +#### Typed providerMetadata in Source Document Parts + +For source document parts, when `part.type === 'source'` and `sourceType === 'document'`, the `providerMetadata` is provided as `OpenaiResponsesSourceDocumentProviderMetadata`. + +This metadata is also a discriminated union with a required `type` field. Supported types include: + +- `file_citation` +- `container_file_citation` +- `file_path` + +Each type includes the identifiers required to work with the referenced resource, such as `fileId` and `containerId`. + +```ts +import { + openai, + type OpenaiResponsesSourceDocumentProviderMetadata, +} from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-4.1-mini'), + prompt: + 'Create a program that generates five random numbers between 1 and 100 with two decimal places, and show me the execution results. Also save the result to a file.', + tools: { + code_interpreter: openai.tools.codeInterpreter(), + web_search: openai.tools.webSearch(), + file_search: openai.tools.fileSearch({ vectorStoreIds: ['vs_1234'] }), // requires a configured vector store + }, +}); + +for (const part of result.content) { + if (part.type === 'source') { + if (part.sourceType === 'document') { + const providerMetadata = part.providerMetadata as + | OpenaiResponsesSourceDocumentProviderMetadata + | undefined; + if (!providerMetadata) continue; + const annotation = providerMetadata.openai; + switch (annotation.type) { + case 'file_citation': + // file_citation is returned from file_search and provides: + // properties: type, fileId and index + // The filename can be accessed via part.filename. + break; + case 'container_file_citation': + // container_file_citation is returned from code_interpreter and provides: + // properties: type, containerId and fileId + // The filename can be accessed via part.filename. + break; + case 'file_path': + // file_path provides: + // properties: type, fileId and index + break; + default: { + const _exhaustiveCheck: never = annotation; + throw new Error( + `Unhandled annotation: ${JSON.stringify(_exhaustiveCheck)}`, + ); + } + } + } + } +} +``` + + + Annotations in text parts follow the OpenAI Responses API specification and + therefore use snake_case properties (e.g. `file_id`, `container_id`). In + contrast, `providerMetadata` for source document parts is normalized by the + SDK to camelCase (e.g. `fileId`, `containerId`). Fields that depend on the + original text content, such as `start_index` and `end_index`, are omitted, as + are fields like `filename` that are directly available on the source object. + + +### Chat Models + +You can create models that call the [OpenAI chat API](https://platform.openai.com/docs/api-reference/chat) using the `.chat()` factory method. +The first argument is the model id, e.g. `gpt-4`. +The OpenAI chat models support tool calls and some have multi-modal capabilities. + +```ts +const model = openai.chat('gpt-5'); +``` + +OpenAI chat models support also some model specific provider options that are not part of the [standard call settings](/docs/ai-sdk-core/settings). +You can pass them in the `providerOptions` argument: + +```ts +import { openai, type OpenAILanguageModelChatOptions } from '@ai-sdk/openai'; + +const model = openai.chat('gpt-5'); + +await generateText({ + model, + providerOptions: { + openai: { + logitBias: { + // optional likelihood for specific tokens + '50256': -100, + }, + user: 'test-user', // optional unique user identifier + } satisfies OpenAILanguageModelChatOptions, + }, +}); +``` + +The following optional provider options are available for OpenAI chat models: + +- **logitBias** _Record<number, number>_ + + Modifies the likelihood of specified tokens appearing in the completion. + + Accepts a JSON object that maps tokens (specified by their token ID in + the GPT tokenizer) to an associated bias value from -100 to 100. You + can use this tokenizer tool to convert text to token IDs. Mathematically, + the bias is added to the logits generated by the model prior to sampling. + The exact effect will vary per model, but values between -1 and 1 should + decrease or increase likelihood of selection; values like -100 or 100 + should result in a ban or exclusive selection of the relevant token. + + As an example, you can pass `{"50256": -100}` to prevent the token from being generated. + +- **logprobs** _boolean | number_ + + Return the log probabilities of the tokens. Including logprobs will increase + the response size and can slow down response times. However, it can + be useful to better understand how the model is behaving. + + Setting to true will return the log probabilities of the tokens that + were generated. + + Setting to a number will return the log probabilities of the top n + tokens that were generated. + +- **parallelToolCalls** _boolean_ + + Whether to enable parallel function calling during tool use. Defaults to `true`. + +- **user** _string_ + + A unique identifier representing your end-user, which can help OpenAI to + monitor and detect abuse. [Learn more](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids). + +- **reasoningEffort** _'minimal' | 'low' | 'medium' | 'high' | 'xhigh'_ + + Reasoning effort for reasoning models. Defaults to `medium`. If you use + `providerOptions` to set the `reasoningEffort` option, this + model setting will be ignored. + +- **maxCompletionTokens** _number_ + + Maximum number of completion tokens to generate. Useful for reasoning models. + +- **store** _boolean_ + + Whether to enable persistence in Responses API. + +- **metadata** _Record<string, string>_ + + Metadata to associate with the request. + +- **prediction** _Record<string, any>_ + + Parameters for prediction mode. + +- **serviceTier** _'auto' | 'flex' | 'priority' | 'default'_ + + Service tier for the request. Set to 'flex' for 50% cheaper processing + at the cost of increased latency (available for o3, o4-mini, and gpt-5 models). + Set to 'priority' for faster processing with Enterprise access (available for gpt-4, gpt-5, gpt-5-mini, o3, o4-mini; gpt-5-nano is not supported). + + Defaults to 'auto'. + +- **strictJsonSchema** _boolean_ + + Whether to use strict JSON schema validation. + Defaults to `true`. + +- **textVerbosity** _'low' | 'medium' | 'high'_ + + Controls the verbosity of the model's responses. Lower values will result in more concise responses, while higher values will result in more verbose responses. + +- **promptCacheKey** _string_ + + A cache key for manual prompt caching control. Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. + +- **promptCacheRetention** _'in_memory' | '24h'_ + + The retention policy for the prompt cache. Set to `'24h'` to enable extended prompt caching, which keeps cached prefixes active for up to 24 hours. Defaults to `'in_memory'` for standard prompt caching. Note: `'24h'` is currently only available for the 5.1 series of models. + +- **safetyIdentifier** _string_ + + A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies. The IDs should be a string that uniquely identifies each user. + +- **systemMessageMode** _'system' | 'developer' | 'remove'_ + + Override the system message mode for this model. If not specified, the mode is automatically determined based on the model. `system` uses the 'system' role for system messages (default for most models); `developer` uses the 'developer' role (used by reasoning models); `remove` removes system messages entirely. + +- **forceReasoning** _boolean_ + + Force treating this model as a reasoning model. This is useful for "stealth" reasoning models (e.g. via a custom baseURL) where the model ID is not recognized by the SDK's allowlist. When enabled, the SDK applies reasoning-model parameter compatibility rules and defaults `systemMessageMode` to `developer` unless overridden. + +#### Reasoning + +OpenAI has introduced the `o1`,`o3`, and `o4` series of [reasoning models](https://platform.openai.com/docs/guides/reasoning). +Currently, `o4-mini`, `o3`, `o3-mini`, and `o1` are available via both the chat and responses APIs. The +model `gpt-5.1-codex-mini` is available only via the [responses API](#responses-models). + +Reasoning models currently only generate text, have several limitations, and are only supported using `generateText` and `streamText`. + +They support additional settings and response metadata: + +- You can use `providerOptions` to set + + - the `reasoningEffort` option (or alternatively the `reasoningEffort` model setting), which determines the amount of reasoning the model performs. + +- You can use response `providerMetadata` to access the number of reasoning tokens that the model generated. + +```ts highlight="4,7-11,17" +import { openai, type OpenAILanguageModelChatOptions } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const { text, usage, providerMetadata } = await generateText({ + model: openai.chat('gpt-5'), + prompt: 'Invent a new holiday and describe its traditions.', + providerOptions: { + openai: { + reasoningEffort: 'low', + } satisfies OpenAILanguageModelChatOptions, + }, +}); + +console.log(text); +console.log('Usage:', { + ...usage, + reasoningTokens: providerMetadata?.openai?.reasoningTokens, +}); +``` + + + System messages are automatically converted to OpenAI developer messages for + reasoning models when supported. + + +- You can control how system messages are handled by providerOptions `systemMessageMode`: + + - `developer`: treat the prompt as a developer message (default for reasoning models). + - `system`: keep the system message as a system-level instruction. + - `remove`: remove the system message from the messages. + +```ts highlight="12" +import { openai, type OpenAILanguageModelChatOptions } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai.chat('gpt-5'), + messages: [ + { role: 'system', content: 'You are a helpful assistant.' }, + { role: 'user', content: 'Tell me a joke.' }, + ], + providerOptions: { + openai: { + systemMessageMode: 'system', + } satisfies OpenAILanguageModelChatOptions, + }, +}); +``` + + + Reasoning models require additional runtime inference to complete their + reasoning phase before generating a response. This introduces longer latency + compared to other models. + + + + `maxOutputTokens` is automatically mapped to `max_completion_tokens` for + reasoning models. + + +#### Strict Structured Outputs + +Strict structured outputs are enabled by default. +You can disable them by setting the `strictJsonSchema` option to `false`. + +```ts highlight="7" +import { openai, OpenAILanguageModelChatOptions } from '@ai-sdk/openai'; +import { generateText, Output } from 'ai'; +import { z } from 'zod'; + +const result = await generateText({ + model: openai.chat('gpt-4o-2024-08-06'), + providerOptions: { + openai: { + strictJsonSchema: false, + } satisfies OpenAILanguageModelChatOptions, + }, + output: Output.object({ + schema: z.object({ + name: z.string(), + ingredients: z.array( + z.object({ + name: z.string(), + amount: z.string(), + }), + ), + steps: z.array(z.string()), + }), + schemaName: 'recipe', + schemaDescription: 'A recipe for lasagna.', + }), + prompt: 'Generate a lasagna recipe.', +}); + +console.log(JSON.stringify(result.output, null, 2)); +``` + + + OpenAI structured outputs have several + [limitations](https://openai.com/index/introducing-structured-outputs-in-the-api), + in particular around the [supported schemas](https://platform.openai.com/docs/guides/structured-outputs/supported-schemas), + and are therefore opt-in. + +For example, optional schema properties are not supported. +You need to change Zod `.nullish()` and `.optional()` to `.nullable()`. + + + +#### Logprobs + +OpenAI provides logprobs information for completion/chat models. +You can access it in the `providerMetadata` object. + +```ts highlight="11" +import { openai, type OpenAILanguageModelChatOptions } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai.chat('gpt-5'), + prompt: 'Write a vegetarian lasagna recipe for 4 people.', + providerOptions: { + openai: { + // this can also be a number, + // refer to logprobs provider options section for more + logprobs: true, + } satisfies OpenAILanguageModelChatOptions, + }, +}); + +const openaiMetadata = (await result.providerMetadata)?.openai; + +const logprobs = openaiMetadata?.logprobs; +``` + +#### Image Support + +The OpenAI Chat API supports Image inputs for appropriate models. +You can pass Image files as part of the message content using the 'image' type: + +```ts +const result = await generateText({ + model: openai.chat('gpt-5'), + messages: [ + { + role: 'user', + content: [ + { + type: 'text', + text: 'Please describe the image.', + }, + { + type: 'image', + image: readFileSync('./data/image.png'), + }, + ], + }, + ], +}); +``` + +The model will have access to the image and will respond to questions about it. +The image should be passed using the `image` field. + +You can also pass the URL of an image. + +```ts +{ + type: 'image', + image: 'https://sample.edu/image.png', +} +``` + +#### PDF support + +The OpenAI Chat API supports reading PDF files. +You can pass PDF files as part of the message content using the `file` type: + +```ts +const result = await generateText({ + model: openai.chat('gpt-5'), + messages: [ + { + role: 'user', + content: [ + { + type: 'text', + text: 'What is an embedding model?', + }, + { + type: 'file', + data: readFileSync('./data/ai.pdf'), + mediaType: 'application/pdf', + filename: 'ai.pdf', // optional + }, + ], + }, + ], +}); +``` + +The model will have access to the contents of the PDF file and +respond to questions about it. +The PDF file should be passed using the `data` field, +and the `mediaType` should be set to `'application/pdf'`. + +You can also pass a file-id from the OpenAI Files API. + +```ts +{ + type: 'file', + data: 'file-8EFBcWHsQxZV7YGezBC1fq', + mediaType: 'application/pdf', +} +``` + +You can also pass the URL of a PDF. + +```ts +{ + type: 'file', + data: 'https://sample.edu/example.pdf', + mediaType: 'application/pdf', + filename: 'ai.pdf', // optional +} +``` + +#### Predicted Outputs + +OpenAI supports [predicted outputs](https://platform.openai.com/docs/guides/latency-optimization#use-predicted-outputs) for `gpt-4o` and `gpt-4o-mini`. +Predicted outputs help you reduce latency by allowing you to specify a base text that the model should modify. +You can enable predicted outputs by adding the `prediction` option to the `providerOptions.openai` object: + +```ts highlight="15-18" +const result = streamText({ + model: openai.chat('gpt-5'), + messages: [ + { + role: 'user', + content: 'Replace the Username property with an Email property.', + }, + { + role: 'user', + content: existingCode, + }, + ], + providerOptions: { + openai: { + prediction: { + type: 'content', + content: existingCode, + }, + } satisfies OpenAILanguageModelChatOptions, + }, +}); +``` + +OpenAI provides usage information for predicted outputs (`acceptedPredictionTokens` and `rejectedPredictionTokens`). +You can access it in the `providerMetadata` object. + +```ts highlight="11" +const openaiMetadata = (await result.providerMetadata)?.openai; + +const acceptedPredictionTokens = openaiMetadata?.acceptedPredictionTokens; +const rejectedPredictionTokens = openaiMetadata?.rejectedPredictionTokens; +``` + + + OpenAI Predicted Outputs have several + [limitations](https://platform.openai.com/docs/guides/predicted-outputs#limitations), + e.g. unsupported API parameters and no tool calling support. + + +#### Image Detail + +You can use the `openai` provider option to set the [image input detail](https://platform.openai.com/docs/guides/images-vision?api-mode=responses#specify-image-input-detail-level) to `high`, `low`, or `auto`: + +```ts highlight="13-16" +const result = await generateText({ + model: openai.chat('gpt-5'), + messages: [ + { + role: 'user', + content: [ + { type: 'text', text: 'Describe the image in detail.' }, + { + type: 'image', + image: + 'https://github.com/vercel/ai/blob/main/examples/ai-functions/data/comic-cat.png?raw=true', + + // OpenAI specific options - image detail: + providerOptions: { + openai: { imageDetail: 'low' }, + }, + }, + ], + }, + ], +}); +``` + + + Because the `UIMessage` type (used by AI SDK UI hooks like `useChat`) does not + support the `providerOptions` property, you can use `convertToModelMessages` + first before passing the messages to functions like `generateText` or + `streamText`. For more details on `providerOptions` usage, see + [here](/docs/foundations/prompts#provider-options). + + +#### Distillation + +OpenAI supports model distillation for some models. +If you want to store a generation for use in the distillation process, you can add the `store` option to the `providerOptions.openai` object. +This will save the generation to the OpenAI platform for later use in distillation. + +```typescript highlight="9-16" +import { openai, type OpenAILanguageModelChatOptions } from '@ai-sdk/openai'; +import { generateText } from 'ai'; +import 'dotenv/config'; + +async function main() { + const { text, usage } = await generateText({ + model: openai.chat('gpt-4o-mini'), + prompt: 'Who worked on the original macintosh?', + providerOptions: { + openai: { + store: true, + metadata: { + custom: 'value', + }, + } satisfies OpenAILanguageModelChatOptions, + }, + }); + + console.log(text); + console.log(); + console.log('Usage:', usage); +} + +main().catch(console.error); +``` + +#### Prompt Caching + +OpenAI has introduced [Prompt Caching](https://platform.openai.com/docs/guides/prompt-caching) for supported models +including `gpt-4o` and `gpt-4o-mini`. + +- Prompt caching is automatically enabled for these models, when the prompt is 1024 tokens or longer. It does + not need to be explicitly enabled. +- You can use response `providerMetadata` to access the number of prompt tokens that were a cache hit. +- Note that caching behavior is dependent on load on OpenAI's infrastructure. Prompt prefixes generally remain in the + cache following 5-10 minutes of inactivity before they are evicted, but during off-peak periods they may persist for up + to an hour. + +```ts highlight="11" +import { openai } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const { text, usage, providerMetadata } = await generateText({ + model: openai.chat('gpt-4o-mini'), + prompt: `A 1024-token or longer prompt...`, +}); + +console.log(`usage:`, { + ...usage, + cachedPromptTokens: providerMetadata?.openai?.cachedPromptTokens, +}); +``` + +To improve cache hit rates, you can manually control caching using the `promptCacheKey` option: + +```ts highlight="7-11" +import { openai, type OpenAILanguageModelChatOptions } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const { text, usage, providerMetadata } = await generateText({ + model: openai.chat('gpt-5'), + prompt: `A 1024-token or longer prompt...`, + providerOptions: { + openai: { + promptCacheKey: 'my-custom-cache-key-123', + } satisfies OpenAILanguageModelChatOptions, + }, +}); + +console.log(`usage:`, { + ...usage, + cachedPromptTokens: providerMetadata?.openai?.cachedPromptTokens, +}); +``` + +For GPT-5.1 models, you can enable extended prompt caching that keeps cached prefixes active for up to 24 hours: + +```ts highlight="7-12" +import { openai, type OpenAILanguageModelChatOptions } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const { text, usage, providerMetadata } = await generateText({ + model: openai.chat('gpt-5.1'), + prompt: `A 1024-token or longer prompt...`, + providerOptions: { + openai: { + promptCacheKey: 'my-custom-cache-key-123', + promptCacheRetention: '24h', // Extended caching for GPT-5.1 + } satisfies OpenAILanguageModelChatOptions, + }, +}); + +console.log(`usage:`, { + ...usage, + cachedPromptTokens: providerMetadata?.openai?.cachedPromptTokens, +}); +``` + +#### Audio Input + +With the `gpt-4o-audio-preview` model, you can pass audio files to the model. + + + The `gpt-4o-audio-preview` model is currently in preview and requires at least + some audio inputs. It will not work with non-audio data. + + +```ts highlight="12-14" +import { openai } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai.chat('gpt-4o-audio-preview'), + messages: [ + { + role: 'user', + content: [ + { type: 'text', text: 'What is the audio saying?' }, + { + type: 'file', + mediaType: 'audio/mpeg', + data: readFileSync('./data/galileo.mp3'), + }, + ], + }, + ], +}); +``` + +### Completion Models + +You can create models that call the [OpenAI completions API](https://platform.openai.com/docs/api-reference/completions) using the `.completion()` factory method. +The first argument is the model id. +Currently only `gpt-3.5-turbo-instruct` is supported. + +```ts +const model = openai.completion('gpt-3.5-turbo-instruct'); +``` + +OpenAI completion models support also some model specific settings that are not part of the [standard call settings](/docs/ai-sdk-core/settings). +You can pass them as an options argument: + +```ts +const model = openai.completion('gpt-3.5-turbo-instruct'); + +await model.doGenerate({ + providerOptions: { + openai: { + echo: true, // optional, echo the prompt in addition to the completion + logitBias: { + // optional likelihood for specific tokens + '50256': -100, + }, + suffix: 'some text', // optional suffix that comes after a completion of inserted text + user: 'test-user', // optional unique user identifier + } satisfies OpenAILanguageModelCompletionOptions, + }, +}); +``` + +The following optional provider options are available for OpenAI completion models: + +- **echo**: _boolean_ + + Echo back the prompt in addition to the completion. + +- **logitBias** _Record<number, number>_ + + Modifies the likelihood of specified tokens appearing in the completion. + + Accepts a JSON object that maps tokens (specified by their token ID in + the GPT tokenizer) to an associated bias value from -100 to 100. You + can use this tokenizer tool to convert text to token IDs. Mathematically, + the bias is added to the logits generated by the model prior to sampling. + The exact effect will vary per model, but values between -1 and 1 should + decrease or increase likelihood of selection; values like -100 or 100 + should result in a ban or exclusive selection of the relevant token. + + As an example, you can pass `{"50256": -100}` to prevent the <|endoftext|> + token from being generated. + +- **logprobs** _boolean | number_ + + Return the log probabilities of the tokens. Including logprobs will increase + the response size and can slow down response times. However, it can + be useful to better understand how the model is behaving. + + Setting to true will return the log probabilities of the tokens that + were generated. + + Setting to a number will return the log probabilities of the top n + tokens that were generated. + +- **suffix** _string_ + + The suffix that comes after a completion of inserted text. + +- **user** _string_ + + A unique identifier representing your end-user, which can help OpenAI to + monitor and detect abuse. [Learn more](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids). + +### Model Capabilities + +| Model | Image Input | Audio Input | Object Generation | Tool Usage | +| --------------------- | ------------------- | ------------------- | ------------------- | ------------------- | +| `gpt-5.4-pro` | | | | | +| `gpt-5.4` | | | | | +| `gpt-5.4-mini` | | | | | +| `gpt-5.4-nano` | | | | | +| `gpt-5.3-chat-latest` | | | | | +| `gpt-5.2-pro` | | | | | +| `gpt-5.2-chat-latest` | | | | | +| `gpt-5.2` | | | | | +| `gpt-5.1-codex-mini` | | | | | +| `gpt-5.1-codex` | | | | | +| `gpt-5.1-chat-latest` | | | | | +| `gpt-5.1` | | | | | +| `gpt-5-pro` | | | | | +| `gpt-5` | | | | | +| `gpt-5-mini` | | | | | +| `gpt-5-nano` | | | | | +| `gpt-5-codex` | | | | | +| `gpt-5-chat-latest` | | | | | +| `gpt-4.1` | | | | | +| `gpt-4.1-mini` | | | | | +| `gpt-4.1-nano` | | | | | +| `gpt-4o` | | | | | +| `gpt-4o-mini` | | | | | + + + The table above lists popular models. Please see the [OpenAI + docs](https://platform.openai.com/docs/models) for a full list of available + models. The table above lists popular models. You can also pass any available + provider model ID as a string if needed. + + +## Embedding Models + +You can create models that call the [OpenAI embeddings API](https://platform.openai.com/docs/api-reference/embeddings) +using the `.embedding()` factory method. + +```ts +const model = openai.embedding('text-embedding-3-large'); +``` + +OpenAI embedding models support several additional provider options. +You can pass them as an options argument: + +```ts +import { openai, type OpenAIEmbeddingModelOptions } from '@ai-sdk/openai'; +import { embed } from 'ai'; + +const { embedding } = await embed({ + model: openai.embedding('text-embedding-3-large'), + value: 'sunny day at the beach', + providerOptions: { + openai: { + dimensions: 512, // optional, number of dimensions for the embedding + user: 'test-user', // optional unique user identifier + } satisfies OpenAIEmbeddingModelOptions, + }, +}); +``` + +The following optional provider options are available for OpenAI embedding models: + +- **dimensions**: _number_ + + The number of dimensions the resulting output embeddings should have. + Only supported in text-embedding-3 and later models. + +- **user** _string_ + + A unique identifier representing your end-user, which can help OpenAI to + monitor and detect abuse. [Learn more](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids). + +### Model Capabilities + +| Model | Default Dimensions | Custom Dimensions | +| ------------------------ | ------------------ | ------------------- | +| `text-embedding-3-large` | 3072 | | +| `text-embedding-3-small` | 1536 | | +| `text-embedding-ada-002` | 1536 | | + +## Image Models + +You can create models that call the [OpenAI image generation API](https://platform.openai.com/docs/api-reference/images) +using the `.image()` factory method. + +```ts +const model = openai.image('dall-e-3'); +``` + + + Dall-E models do not support the `aspectRatio` parameter. Use the `size` + parameter instead. + + +### Image Editing + +OpenAI's `gpt-image-1` model supports powerful image editing capabilities. Pass input images via `prompt.images` to transform, combine, or edit existing images. + +#### Basic Image Editing + +Transform an existing image using text prompts: + +```ts +const imageBuffer = readFileSync('./input-image.png'); + +const { images } = await generateImage({ + model: openai.image('gpt-image-1'), + prompt: { + text: 'Turn the cat into a dog but retain the style of the original image', + images: [imageBuffer], + }, +}); +``` + +#### Inpainting with Mask + +Edit specific parts of an image using a mask. Transparent areas in the mask indicate where the image should be edited: + +```ts +const image = readFileSync('./input-image.png'); +const mask = readFileSync('./mask.png'); // Transparent areas = edit regions + +const { images } = await generateImage({ + model: openai.image('gpt-image-1'), + prompt: { + text: 'A sunlit indoor lounge area with a pool containing a flamingo', + images: [image], + mask: mask, + }, +}); +``` + +#### Background Removal + +Remove the background from an image by setting `background` to `transparent`: + +```ts +const imageBuffer = readFileSync('./input-image.png'); + +const { images } = await generateImage({ + model: openai.image('gpt-image-1'), + prompt: { + text: 'do not change anything', + images: [imageBuffer], + }, + providerOptions: { + openai: { + background: 'transparent', + output_format: 'png', + }, + }, +}); +``` + +#### Multi-Image Combining + +Combine multiple reference images into a single output. `gpt-image-1` supports up to 16 input images: + +```ts +const cat = readFileSync('./cat.png'); +const dog = readFileSync('./dog.png'); +const owl = readFileSync('./owl.png'); +const bear = readFileSync('./bear.png'); + +const { images } = await generateImage({ + model: openai.image('gpt-image-1'), + prompt: { + text: 'Combine these animals into a group photo, retaining the original style', + images: [cat, dog, owl, bear], + }, +}); +``` + + + Input images can be provided as `Buffer`, `ArrayBuffer`, `Uint8Array`, or + base64-encoded strings. For `gpt-image-1`, each image should be a `png`, + `webp`, or `jpg` file less than 50MB. + + +### Model Capabilities + +| Model | Sizes | +| ------------------ | ------------------------------- | +| `gpt-image-1.5` | 1024x1024, 1536x1024, 1024x1536 | +| `gpt-image-1-mini` | 1024x1024, 1536x1024, 1024x1536 | +| `gpt-image-1` | 1024x1024, 1536x1024, 1024x1536 | +| `dall-e-3` | 1024x1024, 1792x1024, 1024x1792 | +| `dall-e-2` | 256x256, 512x512, 1024x1024 | + +You can pass optional `providerOptions` to the image model. These are prone to change by OpenAI and are model dependent. For example, the `gpt-image-1` model supports the `quality` option: + +```ts +const { image, providerMetadata } = await generateImage({ + model: openai.image('gpt-image-1.5'), + prompt: 'A salamander at sunrise in a forest pond in the Seychelles.', + providerOptions: { + openai: { quality: 'high' }, + }, +}); +``` + +For more on `generateImage()` see [Image Generation](/docs/ai-sdk-core/image-generation). + +OpenAI's image models return additional metadata in the response that can be +accessed via `providerMetadata.openai`. The following OpenAI-specific metadata +is available: + +- **images** _Array<object>_ + + Array of image-specific metadata. Each image object may contain: + + - `revisedPrompt` _string_ - The revised prompt that was actually used to generate the image (OpenAI may modify your prompt for safety or clarity) + - `created` _number_ - The Unix timestamp (in seconds) of when the image was created + - `size` _string_ - The size of the generated image. One of `1024x1024`, `1024x1536`, or `1536x1024` + - `quality` _string_ - The quality of the generated image. One of `low`, `medium`, or `high` + - `background` _string_ - The background parameter used for the image generation. Either `transparent` or `opaque` + - `outputFormat` _string_ - The output format of the generated image. One of `png`, `webp`, or `jpeg` + +For more information on the available OpenAI image model options, see the [OpenAI API reference](https://platform.openai.com/docs/api-reference/images/create). + +## Transcription Models + +You can create models that call the [OpenAI transcription API](https://platform.openai.com/docs/api-reference/audio/transcribe) +using the `.transcription()` factory method. + +The first argument is the model id e.g. `whisper-1`. + +```ts +const model = openai.transcription('whisper-1'); +``` + +You can also pass additional provider-specific options using the `providerOptions` argument. For example, supplying the input language in ISO-639-1 (e.g. `en`) format will improve accuracy and latency. + +```ts highlight="6" +import { experimental_transcribe as transcribe } from 'ai'; +import { openai, type OpenAITranscriptionModelOptions } from '@ai-sdk/openai'; + +const result = await transcribe({ + model: openai.transcription('whisper-1'), + audio: new Uint8Array([1, 2, 3, 4]), + providerOptions: { + openai: { language: 'en' } satisfies OpenAITranscriptionModelOptions, + }, +}); +``` + +To get word-level timestamps, specify the granularity: + +```ts highlight="8-9" +import { experimental_transcribe as transcribe } from 'ai'; +import { openai, type OpenAITranscriptionModelOptions } from '@ai-sdk/openai'; + +const result = await transcribe({ + model: openai.transcription('whisper-1'), + audio: new Uint8Array([1, 2, 3, 4]), + providerOptions: { + openai: { + //timestampGranularities: ['word'], + timestampGranularities: ['segment'], + } satisfies OpenAITranscriptionModelOptions, + }, +}); + +// Access word-level timestamps +console.log(result.segments); // Array of segments with startSecond/endSecond +``` + +The following provider options are available: + +- **timestampGranularities** _string[]_ + The granularity of the timestamps in the transcription. + Defaults to `['segment']`. + Possible values are `['word']`, `['segment']`, and `['word', 'segment']`. + Note: There is no additional latency for segment timestamps, but generating word timestamps incurs additional latency. + +- **language** _string_ + The language of the input audio. Supplying the input language in ISO-639-1 format (e.g. 'en') will improve accuracy and latency. + Optional. + +- **prompt** _string_ + An optional text to guide the model's style or continue a previous audio segment. The prompt should match the audio language. + Optional. + +- **temperature** _number_ + The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit. + Defaults to 0. + Optional. + +- **include** _string[]_ + Additional information to include in the transcription response. + +### Model Capabilities + +| Model | Transcription | Duration | Segments | Language | +| ------------------------ | ------------------- | ------------------- | ------------------- | ------------------- | +| `whisper-1` | | | | | +| `gpt-4o-mini-transcribe` | | | | | +| `gpt-4o-transcribe` | | | | | + +## Speech Models + +You can create models that call the [OpenAI speech API](https://platform.openai.com/docs/api-reference/audio/speech) +using the `.speech()` factory method. + +The first argument is the model id e.g. `tts-1`. + +```ts +const model = openai.speech('tts-1'); +``` + +The `voice` argument can be set to one of OpenAI's available voices: `alloy`, `ash`, `coral`, `echo`, `fable`, `onyx`, `nova`, `sage`, or `shimmer`. + +```ts highlight="6" +import { experimental_generateSpeech as generateSpeech } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const result = await generateSpeech({ + model: openai.speech('tts-1'), + text: 'Hello, world!', + voice: 'alloy', // OpenAI voice ID +}); +``` + +You can also pass additional provider-specific options using the `providerOptions` argument: + +```ts highlight="7-9" +import { experimental_generateSpeech as generateSpeech } from 'ai'; +import { openai, type OpenAISpeechModelOptions } from '@ai-sdk/openai'; + +const result = await generateSpeech({ + model: openai.speech('tts-1'), + text: 'Hello, world!', + voice: 'alloy', + providerOptions: { + openai: { + speed: 1.2, + } satisfies OpenAISpeechModelOptions, + }, +}); +``` + +- **instructions** _string_ + Control the voice of your generated audio with additional instructions e.g. "Speak in a slow and steady tone". + Does not work with `tts-1` or `tts-1-hd`. + Optional. + +- **speed** _number_ + The speed of the generated audio. + Select a value from 0.25 to 4.0. + Defaults to 1.0. + Optional. + +### Model Capabilities + +| Model | Instructions | +| ----------------- | ------------------- | +| `tts-1` | | +| `tts-1-hd` | | +| `gpt-4o-mini-tts` | | diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/internal.d.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/internal.d.ts new file mode 100644 index 000000000..be034cd88 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/internal.d.ts @@ -0,0 +1 @@ +export * from './dist/internal'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/package.json new file mode 100644 index 000000000..79bd3f868 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/package.json @@ -0,0 +1,81 @@ +{ + "name": "@ai-sdk/openai", + "version": "3.0.48", + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist/**/*", + "docs/**/*", + "src", + "!src/**/*.test.ts", + "!src/**/*.test-d.ts", + "!src/**/__snapshots__", + "!src/**/__fixtures__", + "CHANGELOG.md", + "README.md", + "internal.d.ts" + ], + "directories": { + "doc": "./docs" + }, + "exports": { + "./package.json": "./package.json", + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + }, + "./internal": { + "types": "./dist/internal/index.d.ts", + "import": "./dist/internal/index.mjs", + "module": "./dist/internal/index.mjs", + "require": "./dist/internal/index.js" + } + }, + "dependencies": { + "@ai-sdk/provider": "3.0.8", + "@ai-sdk/provider-utils": "4.0.21" + }, + "devDependencies": { + "@types/node": "20.17.24", + "tsup": "^8", + "typescript": "5.8.3", + "zod": "3.25.76", + "@vercel/ai-tsconfig": "0.0.0", + "@ai-sdk/test-server": "1.0.3" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + }, + "engines": { + "node": ">=18" + }, + "publishConfig": { + "access": "public" + }, + "homepage": "https://ai-sdk.dev/docs", + "repository": { + "type": "git", + "url": "git+https://github.com/vercel/ai.git" + }, + "bugs": { + "url": "https://github.com/vercel/ai/issues" + }, + "keywords": [ + "ai" + ], + "scripts": { + "build": "pnpm clean && tsup --tsconfig tsconfig.build.json", + "build:watch": "pnpm clean && tsup --watch", + "clean": "del-cli dist docs *.tsbuildinfo", + "type-check": "tsc --build", + "test": "pnpm test:node && pnpm test:edge", + "test:update": "pnpm test:node -u", + "test:watch": "vitest --config vitest.node.config.js", + "test:edge": "vitest --config vitest.edge.config.js --run", + "test:node": "vitest --config vitest.node.config.js --run" + } +} \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/convert-openai-chat-usage.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/convert-openai-chat-usage.ts new file mode 100644 index 000000000..9e62acd1b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/convert-openai-chat-usage.ts @@ -0,0 +1,57 @@ +import { LanguageModelV3Usage } from '@ai-sdk/provider'; + +export type OpenAIChatUsage = { + prompt_tokens?: number | null; + completion_tokens?: number | null; + total_tokens?: number | null; + prompt_tokens_details?: { + cached_tokens?: number | null; + } | null; + completion_tokens_details?: { + reasoning_tokens?: number | null; + accepted_prediction_tokens?: number | null; + rejected_prediction_tokens?: number | null; + } | null; +}; + +export function convertOpenAIChatUsage( + usage: OpenAIChatUsage | undefined | null, +): LanguageModelV3Usage { + if (usage == null) { + return { + inputTokens: { + total: undefined, + noCache: undefined, + cacheRead: undefined, + cacheWrite: undefined, + }, + outputTokens: { + total: undefined, + text: undefined, + reasoning: undefined, + }, + raw: undefined, + }; + } + + const promptTokens = usage.prompt_tokens ?? 0; + const completionTokens = usage.completion_tokens ?? 0; + const cachedTokens = usage.prompt_tokens_details?.cached_tokens ?? 0; + const reasoningTokens = + usage.completion_tokens_details?.reasoning_tokens ?? 0; + + return { + inputTokens: { + total: promptTokens, + noCache: promptTokens - cachedTokens, + cacheRead: cachedTokens, + cacheWrite: undefined, + }, + outputTokens: { + total: completionTokens, + text: completionTokens - reasoningTokens, + reasoning: reasoningTokens, + }, + raw: usage, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/convert-to-openai-chat-messages.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/convert-to-openai-chat-messages.ts new file mode 100644 index 000000000..d6c520b73 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/convert-to-openai-chat-messages.ts @@ -0,0 +1,225 @@ +import { + SharedV3Warning, + LanguageModelV3Prompt, + UnsupportedFunctionalityError, +} from '@ai-sdk/provider'; +import { OpenAIChatPrompt } from './openai-chat-prompt'; +import { convertToBase64 } from '@ai-sdk/provider-utils'; + +export function convertToOpenAIChatMessages({ + prompt, + systemMessageMode = 'system', +}: { + prompt: LanguageModelV3Prompt; + systemMessageMode?: 'system' | 'developer' | 'remove'; +}): { + messages: OpenAIChatPrompt; + warnings: Array; +} { + const messages: OpenAIChatPrompt = []; + const warnings: Array = []; + + for (const { role, content } of prompt) { + switch (role) { + case 'system': { + switch (systemMessageMode) { + case 'system': { + messages.push({ role: 'system', content }); + break; + } + case 'developer': { + messages.push({ role: 'developer', content }); + break; + } + case 'remove': { + warnings.push({ + type: 'other', + message: 'system messages are removed for this model', + }); + break; + } + default: { + const _exhaustiveCheck: never = systemMessageMode; + throw new Error( + `Unsupported system message mode: ${_exhaustiveCheck}`, + ); + } + } + break; + } + + case 'user': { + if (content.length === 1 && content[0].type === 'text') { + messages.push({ role: 'user', content: content[0].text }); + break; + } + + messages.push({ + role: 'user', + content: content.map((part, index) => { + switch (part.type) { + case 'text': { + return { type: 'text', text: part.text }; + } + case 'file': { + if (part.mediaType.startsWith('image/')) { + const mediaType = + part.mediaType === 'image/*' + ? 'image/jpeg' + : part.mediaType; + + return { + type: 'image_url', + image_url: { + url: + part.data instanceof URL + ? part.data.toString() + : `data:${mediaType};base64,${convertToBase64(part.data)}`, + + // OpenAI specific extension: image detail + detail: part.providerOptions?.openai?.imageDetail, + }, + }; + } else if (part.mediaType.startsWith('audio/')) { + if (part.data instanceof URL) { + throw new UnsupportedFunctionalityError({ + functionality: 'audio file parts with URLs', + }); + } + + switch (part.mediaType) { + case 'audio/wav': { + return { + type: 'input_audio', + input_audio: { + data: convertToBase64(part.data), + format: 'wav', + }, + }; + } + case 'audio/mp3': + case 'audio/mpeg': { + return { + type: 'input_audio', + input_audio: { + data: convertToBase64(part.data), + format: 'mp3', + }, + }; + } + + default: { + throw new UnsupportedFunctionalityError({ + functionality: `audio content parts with media type ${part.mediaType}`, + }); + } + } + } else if (part.mediaType === 'application/pdf') { + if (part.data instanceof URL) { + throw new UnsupportedFunctionalityError({ + functionality: 'PDF file parts with URLs', + }); + } + + return { + type: 'file', + file: + typeof part.data === 'string' && + part.data.startsWith('file-') + ? { file_id: part.data } + : { + filename: part.filename ?? `part-${index}.pdf`, + file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`, + }, + }; + } else { + throw new UnsupportedFunctionalityError({ + functionality: `file part media type ${part.mediaType}`, + }); + } + } + } + }), + }); + + break; + } + + case 'assistant': { + let text = ''; + const toolCalls: Array<{ + id: string; + type: 'function'; + function: { name: string; arguments: string }; + }> = []; + + for (const part of content) { + switch (part.type) { + case 'text': { + text += part.text; + break; + } + case 'tool-call': { + toolCalls.push({ + id: part.toolCallId, + type: 'function', + function: { + name: part.toolName, + arguments: JSON.stringify(part.input), + }, + }); + break; + } + } + } + + messages.push({ + role: 'assistant', + content: text, + tool_calls: toolCalls.length > 0 ? toolCalls : undefined, + }); + + break; + } + + case 'tool': { + for (const toolResponse of content) { + if (toolResponse.type === 'tool-approval-response') { + continue; + } + const output = toolResponse.output; + + let contentValue: string; + switch (output.type) { + case 'text': + case 'error-text': + contentValue = output.value; + break; + case 'execution-denied': + contentValue = output.reason ?? 'Tool execution denied.'; + break; + case 'content': + case 'json': + case 'error-json': + contentValue = JSON.stringify(output.value); + break; + } + + messages.push({ + role: 'tool', + tool_call_id: toolResponse.toolCallId, + content: contentValue, + }); + } + break; + } + + default: { + const _exhaustiveCheck: never = role; + throw new Error(`Unsupported role: ${_exhaustiveCheck}`); + } + } + } + + return { messages, warnings }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/get-response-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/get-response-metadata.ts new file mode 100644 index 000000000..7c6ca41fd --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/get-response-metadata.ts @@ -0,0 +1,15 @@ +export function getResponseMetadata({ + id, + model, + created, +}: { + id?: string | undefined | null; + created?: number | undefined | null; + model?: string | undefined | null; +}) { + return { + id: id ?? undefined, + modelId: model ?? undefined, + timestamp: created ? new Date(created * 1000) : undefined, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/map-openai-finish-reason.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/map-openai-finish-reason.ts new file mode 100644 index 000000000..f3005bb8d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/map-openai-finish-reason.ts @@ -0,0 +1,19 @@ +import { LanguageModelV3FinishReason } from '@ai-sdk/provider'; + +export function mapOpenAIFinishReason( + finishReason: string | null | undefined, +): LanguageModelV3FinishReason['unified'] { + switch (finishReason) { + case 'stop': + return 'stop'; + case 'length': + return 'length'; + case 'content_filter': + return 'content-filter'; + case 'function_call': + case 'tool_calls': + return 'tool-calls'; + default: + return 'other'; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-api.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-api.ts new file mode 100644 index 000000000..7b634112a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-api.ts @@ -0,0 +1,198 @@ +import { JSONSchema7 } from '@ai-sdk/provider'; +import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; +import { openaiErrorDataSchema } from '../openai-error'; + +export interface OpenAIChatFunctionTool { + type: 'function'; + function: { + name: string; + description: string | undefined; + parameters: JSONSchema7; + strict?: boolean; + }; +} + +export type OpenAIChatToolChoice = + | 'auto' + | 'none' + | 'required' + | { type: 'function'; function: { name: string } }; + +// limited version of the schema, focussed on what is needed for the implementation +// this approach limits breakages when the API changes and increases efficiency +export const openaiChatResponseSchema = lazySchema(() => + zodSchema( + z.object({ + id: z.string().nullish(), + created: z.number().nullish(), + model: z.string().nullish(), + choices: z.array( + z.object({ + message: z.object({ + role: z.literal('assistant').nullish(), + content: z.string().nullish(), + tool_calls: z + .array( + z.object({ + id: z.string().nullish(), + type: z.literal('function'), + function: z.object({ + name: z.string(), + arguments: z.string(), + }), + }), + ) + .nullish(), + annotations: z + .array( + z.object({ + type: z.literal('url_citation'), + url_citation: z.object({ + start_index: z.number(), + end_index: z.number(), + url: z.string(), + title: z.string(), + }), + }), + ) + .nullish(), + }), + index: z.number(), + logprobs: z + .object({ + content: z + .array( + z.object({ + token: z.string(), + logprob: z.number(), + top_logprobs: z.array( + z.object({ + token: z.string(), + logprob: z.number(), + }), + ), + }), + ) + .nullish(), + }) + .nullish(), + finish_reason: z.string().nullish(), + }), + ), + usage: z + .object({ + prompt_tokens: z.number().nullish(), + completion_tokens: z.number().nullish(), + total_tokens: z.number().nullish(), + prompt_tokens_details: z + .object({ + cached_tokens: z.number().nullish(), + }) + .nullish(), + completion_tokens_details: z + .object({ + reasoning_tokens: z.number().nullish(), + accepted_prediction_tokens: z.number().nullish(), + rejected_prediction_tokens: z.number().nullish(), + }) + .nullish(), + }) + .nullish(), + }), + ), +); + +// limited version of the schema, focussed on what is needed for the implementation +// this approach limits breakages when the API changes and increases efficiency +export const openaiChatChunkSchema = lazySchema(() => + zodSchema( + z.union([ + z.object({ + id: z.string().nullish(), + created: z.number().nullish(), + model: z.string().nullish(), + choices: z.array( + z.object({ + delta: z + .object({ + role: z.enum(['assistant']).nullish(), + content: z.string().nullish(), + tool_calls: z + .array( + z.object({ + index: z.number(), + id: z.string().nullish(), + type: z.literal('function').nullish(), + function: z.object({ + name: z.string().nullish(), + arguments: z.string().nullish(), + }), + }), + ) + .nullish(), + annotations: z + .array( + z.object({ + type: z.literal('url_citation'), + url_citation: z.object({ + start_index: z.number(), + end_index: z.number(), + url: z.string(), + title: z.string(), + }), + }), + ) + .nullish(), + }) + .nullish(), + logprobs: z + .object({ + content: z + .array( + z.object({ + token: z.string(), + logprob: z.number(), + top_logprobs: z.array( + z.object({ + token: z.string(), + logprob: z.number(), + }), + ), + }), + ) + .nullish(), + }) + .nullish(), + finish_reason: z.string().nullish(), + index: z.number(), + }), + ), + usage: z + .object({ + prompt_tokens: z.number().nullish(), + completion_tokens: z.number().nullish(), + total_tokens: z.number().nullish(), + prompt_tokens_details: z + .object({ + cached_tokens: z.number().nullish(), + }) + .nullish(), + completion_tokens_details: z + .object({ + reasoning_tokens: z.number().nullish(), + accepted_prediction_tokens: z.number().nullish(), + rejected_prediction_tokens: z.number().nullish(), + }) + .nullish(), + }) + .nullish(), + }), + openaiErrorDataSchema, + ]), + ), +); + +export type OpenAIChatResponse = InferSchema; + +export type OpenAIChatChunk = InferSchema; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-language-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-language-model.ts new file mode 100644 index 000000000..96077d47c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-language-model.ts @@ -0,0 +1,703 @@ +import { + InvalidResponseDataError, + LanguageModelV3, + LanguageModelV3CallOptions, + LanguageModelV3Content, + LanguageModelV3FinishReason, + LanguageModelV3GenerateResult, + LanguageModelV3StreamPart, + LanguageModelV3StreamResult, + SharedV3ProviderMetadata, + SharedV3Warning, +} from '@ai-sdk/provider'; +import { + FetchFunction, + ParseResult, + combineHeaders, + createEventSourceResponseHandler, + createJsonResponseHandler, + generateId, + isParsableJson, + parseProviderOptions, + postJsonToApi, +} from '@ai-sdk/provider-utils'; +import { openaiFailedResponseHandler } from '../openai-error'; +import { getOpenAILanguageModelCapabilities } from '../openai-language-model-capabilities'; +import { + OpenAIChatUsage, + convertOpenAIChatUsage, +} from './convert-openai-chat-usage'; +import { convertToOpenAIChatMessages } from './convert-to-openai-chat-messages'; +import { getResponseMetadata } from './get-response-metadata'; +import { mapOpenAIFinishReason } from './map-openai-finish-reason'; +import { + OpenAIChatChunk, + openaiChatChunkSchema, + openaiChatResponseSchema, +} from './openai-chat-api'; +import { + OpenAIChatModelId, + openaiLanguageModelChatOptions, +} from './openai-chat-options'; +import { prepareChatTools } from './openai-chat-prepare-tools'; + +type OpenAIChatConfig = { + provider: string; + headers: () => Record; + url: (options: { modelId: string; path: string }) => string; + fetch?: FetchFunction; +}; + +export class OpenAIChatLanguageModel implements LanguageModelV3 { + readonly specificationVersion = 'v3'; + + readonly modelId: OpenAIChatModelId; + + readonly supportedUrls = { + 'image/*': [/^https?:\/\/.*$/], + }; + + private readonly config: OpenAIChatConfig; + + constructor(modelId: OpenAIChatModelId, config: OpenAIChatConfig) { + this.modelId = modelId; + this.config = config; + } + + get provider(): string { + return this.config.provider; + } + + private async getArgs({ + prompt, + maxOutputTokens, + temperature, + topP, + topK, + frequencyPenalty, + presencePenalty, + stopSequences, + responseFormat, + seed, + tools, + toolChoice, + providerOptions, + }: LanguageModelV3CallOptions) { + const warnings: SharedV3Warning[] = []; + + // Parse provider options + const openaiOptions = + (await parseProviderOptions({ + provider: 'openai', + providerOptions, + schema: openaiLanguageModelChatOptions, + })) ?? {}; + + const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId); + const isReasoningModel = + openaiOptions.forceReasoning ?? modelCapabilities.isReasoningModel; + + if (topK != null) { + warnings.push({ type: 'unsupported', feature: 'topK' }); + } + + const { messages, warnings: messageWarnings } = convertToOpenAIChatMessages( + { + prompt, + systemMessageMode: + openaiOptions.systemMessageMode ?? + (isReasoningModel + ? 'developer' + : modelCapabilities.systemMessageMode), + }, + ); + + warnings.push(...messageWarnings); + + const strictJsonSchema = openaiOptions.strictJsonSchema ?? true; + + const baseArgs = { + // model id: + model: this.modelId, + + // model specific settings: + logit_bias: openaiOptions.logitBias, + logprobs: + openaiOptions.logprobs === true || + typeof openaiOptions.logprobs === 'number' + ? true + : undefined, + top_logprobs: + typeof openaiOptions.logprobs === 'number' + ? openaiOptions.logprobs + : typeof openaiOptions.logprobs === 'boolean' + ? openaiOptions.logprobs + ? 0 + : undefined + : undefined, + user: openaiOptions.user, + parallel_tool_calls: openaiOptions.parallelToolCalls, + + // standardized settings: + max_tokens: maxOutputTokens, + temperature, + top_p: topP, + frequency_penalty: frequencyPenalty, + presence_penalty: presencePenalty, + response_format: + responseFormat?.type === 'json' + ? responseFormat.schema != null + ? { + type: 'json_schema', + json_schema: { + schema: responseFormat.schema, + strict: strictJsonSchema, + name: responseFormat.name ?? 'response', + description: responseFormat.description, + }, + } + : { type: 'json_object' } + : undefined, + stop: stopSequences, + seed, + verbosity: openaiOptions.textVerbosity, + + // openai specific settings: + // TODO AI SDK 6: remove, we auto-map maxOutputTokens now + max_completion_tokens: openaiOptions.maxCompletionTokens, + store: openaiOptions.store, + metadata: openaiOptions.metadata, + prediction: openaiOptions.prediction, + reasoning_effort: openaiOptions.reasoningEffort, + service_tier: openaiOptions.serviceTier, + prompt_cache_key: openaiOptions.promptCacheKey, + prompt_cache_retention: openaiOptions.promptCacheRetention, + safety_identifier: openaiOptions.safetyIdentifier, + + // messages: + messages, + }; + + // remove unsupported settings for reasoning models + // see https://platform.openai.com/docs/guides/reasoning#limitations + if (isReasoningModel) { + // when reasoning effort is none, gpt-5.1 models allow temperature, topP, logprobs + // https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility + if ( + openaiOptions.reasoningEffort !== 'none' || + !modelCapabilities.supportsNonReasoningParameters + ) { + if (baseArgs.temperature != null) { + baseArgs.temperature = undefined; + warnings.push({ + type: 'unsupported', + feature: 'temperature', + details: 'temperature is not supported for reasoning models', + }); + } + if (baseArgs.top_p != null) { + baseArgs.top_p = undefined; + warnings.push({ + type: 'unsupported', + feature: 'topP', + details: 'topP is not supported for reasoning models', + }); + } + if (baseArgs.logprobs != null) { + baseArgs.logprobs = undefined; + warnings.push({ + type: 'other', + message: 'logprobs is not supported for reasoning models', + }); + } + } + + if (baseArgs.frequency_penalty != null) { + baseArgs.frequency_penalty = undefined; + warnings.push({ + type: 'unsupported', + feature: 'frequencyPenalty', + details: 'frequencyPenalty is not supported for reasoning models', + }); + } + if (baseArgs.presence_penalty != null) { + baseArgs.presence_penalty = undefined; + warnings.push({ + type: 'unsupported', + feature: 'presencePenalty', + details: 'presencePenalty is not supported for reasoning models', + }); + } + if (baseArgs.logit_bias != null) { + baseArgs.logit_bias = undefined; + warnings.push({ + type: 'other', + message: 'logitBias is not supported for reasoning models', + }); + } + + if (baseArgs.top_logprobs != null) { + baseArgs.top_logprobs = undefined; + warnings.push({ + type: 'other', + message: 'topLogprobs is not supported for reasoning models', + }); + } + + // reasoning models use max_completion_tokens instead of max_tokens: + if (baseArgs.max_tokens != null) { + if (baseArgs.max_completion_tokens == null) { + baseArgs.max_completion_tokens = baseArgs.max_tokens; + } + baseArgs.max_tokens = undefined; + } + } else if ( + this.modelId.startsWith('gpt-4o-search-preview') || + this.modelId.startsWith('gpt-4o-mini-search-preview') + ) { + if (baseArgs.temperature != null) { + baseArgs.temperature = undefined; + warnings.push({ + type: 'unsupported', + feature: 'temperature', + details: + 'temperature is not supported for the search preview models and has been removed.', + }); + } + } + + // Validate flex processing support + if ( + openaiOptions.serviceTier === 'flex' && + !modelCapabilities.supportsFlexProcessing + ) { + warnings.push({ + type: 'unsupported', + feature: 'serviceTier', + details: + 'flex processing is only available for o3, o4-mini, and gpt-5 models', + }); + baseArgs.service_tier = undefined; + } + + // Validate priority processing support + if ( + openaiOptions.serviceTier === 'priority' && + !modelCapabilities.supportsPriorityProcessing + ) { + warnings.push({ + type: 'unsupported', + feature: 'serviceTier', + details: + 'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported', + }); + baseArgs.service_tier = undefined; + } + + const { + tools: openaiTools, + toolChoice: openaiToolChoice, + toolWarnings, + } = prepareChatTools({ + tools, + toolChoice, + }); + + return { + args: { + ...baseArgs, + tools: openaiTools, + tool_choice: openaiToolChoice, + }, + warnings: [...warnings, ...toolWarnings], + }; + } + + async doGenerate( + options: LanguageModelV3CallOptions, + ): Promise { + const { args: body, warnings } = await this.getArgs(options); + + const { + responseHeaders, + value: response, + rawValue: rawResponse, + } = await postJsonToApi({ + url: this.config.url({ + path: '/chat/completions', + modelId: this.modelId, + }), + headers: combineHeaders(this.config.headers(), options.headers), + body, + failedResponseHandler: openaiFailedResponseHandler, + successfulResponseHandler: createJsonResponseHandler( + openaiChatResponseSchema, + ), + abortSignal: options.abortSignal, + fetch: this.config.fetch, + }); + + const choice = response.choices[0]; + const content: Array = []; + + // text content: + const text = choice.message.content; + if (text != null && text.length > 0) { + content.push({ type: 'text', text }); + } + + // tool calls: + for (const toolCall of choice.message.tool_calls ?? []) { + content.push({ + type: 'tool-call' as const, + toolCallId: toolCall.id ?? generateId(), + toolName: toolCall.function.name, + input: toolCall.function.arguments!, + }); + } + + // annotations/citations: + for (const annotation of choice.message.annotations ?? []) { + content.push({ + type: 'source', + sourceType: 'url', + id: generateId(), + url: annotation.url_citation.url, + title: annotation.url_citation.title, + }); + } + + // provider metadata: + const completionTokenDetails = response.usage?.completion_tokens_details; + const promptTokenDetails = response.usage?.prompt_tokens_details; + const providerMetadata: SharedV3ProviderMetadata = { openai: {} }; + if (completionTokenDetails?.accepted_prediction_tokens != null) { + providerMetadata.openai.acceptedPredictionTokens = + completionTokenDetails?.accepted_prediction_tokens; + } + if (completionTokenDetails?.rejected_prediction_tokens != null) { + providerMetadata.openai.rejectedPredictionTokens = + completionTokenDetails?.rejected_prediction_tokens; + } + if (choice.logprobs?.content != null) { + providerMetadata.openai.logprobs = choice.logprobs.content; + } + + return { + content, + finishReason: { + unified: mapOpenAIFinishReason(choice.finish_reason), + raw: choice.finish_reason ?? undefined, + }, + usage: convertOpenAIChatUsage(response.usage), + request: { body }, + response: { + ...getResponseMetadata(response), + headers: responseHeaders, + body: rawResponse, + }, + warnings, + providerMetadata, + }; + } + + async doStream( + options: LanguageModelV3CallOptions, + ): Promise { + const { args, warnings } = await this.getArgs(options); + + const body = { + ...args, + stream: true, + stream_options: { + include_usage: true, + }, + }; + + const { responseHeaders, value: response } = await postJsonToApi({ + url: this.config.url({ + path: '/chat/completions', + modelId: this.modelId, + }), + headers: combineHeaders(this.config.headers(), options.headers), + body, + failedResponseHandler: openaiFailedResponseHandler, + successfulResponseHandler: createEventSourceResponseHandler( + openaiChatChunkSchema, + ), + abortSignal: options.abortSignal, + fetch: this.config.fetch, + }); + + const toolCalls: Array<{ + id: string; + type: 'function'; + function: { + name: string; + arguments: string; + }; + hasFinished: boolean; + }> = []; + + let finishReason: LanguageModelV3FinishReason = { + unified: 'other', + raw: undefined, + }; + let usage: OpenAIChatUsage | undefined = undefined; + let metadataExtracted = false; + let isActiveText = false; + + const providerMetadata: SharedV3ProviderMetadata = { openai: {} }; + + return { + stream: response.pipeThrough( + new TransformStream< + ParseResult, + LanguageModelV3StreamPart + >({ + start(controller) { + controller.enqueue({ type: 'stream-start', warnings }); + }, + + transform(chunk, controller) { + if (options.includeRawChunks) { + controller.enqueue({ type: 'raw', rawValue: chunk.rawValue }); + } + + // handle failed chunk parsing / validation: + if (!chunk.success) { + finishReason = { unified: 'error', raw: undefined }; + controller.enqueue({ type: 'error', error: chunk.error }); + return; + } + + const value = chunk.value; + + // handle error chunks: + if ('error' in value) { + finishReason = { unified: 'error', raw: undefined }; + controller.enqueue({ type: 'error', error: value.error }); + return; + } + + // extract and emit response metadata once. Usually it comes in the first chunk. + // Azure may prepend a chunk with a `"prompt_filter_results"` key which does not contain other metadata, + // https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/content-filter-annotations?tabs=powershell + if (!metadataExtracted) { + const metadata = getResponseMetadata(value); + if (Object.values(metadata).some(Boolean)) { + metadataExtracted = true; + controller.enqueue({ + type: 'response-metadata', + ...getResponseMetadata(value), + }); + } + } + + if (value.usage != null) { + usage = value.usage; + + if ( + value.usage.completion_tokens_details + ?.accepted_prediction_tokens != null + ) { + providerMetadata.openai.acceptedPredictionTokens = + value.usage.completion_tokens_details?.accepted_prediction_tokens; + } + if ( + value.usage.completion_tokens_details + ?.rejected_prediction_tokens != null + ) { + providerMetadata.openai.rejectedPredictionTokens = + value.usage.completion_tokens_details?.rejected_prediction_tokens; + } + } + + const choice = value.choices[0]; + + if (choice?.finish_reason != null) { + finishReason = { + unified: mapOpenAIFinishReason(choice.finish_reason), + raw: choice.finish_reason, + }; + } + + if (choice?.logprobs?.content != null) { + providerMetadata.openai.logprobs = choice.logprobs.content; + } + + if (choice?.delta == null) { + return; + } + + const delta = choice.delta; + + if (delta.content != null) { + if (!isActiveText) { + controller.enqueue({ type: 'text-start', id: '0' }); + isActiveText = true; + } + + controller.enqueue({ + type: 'text-delta', + id: '0', + delta: delta.content, + }); + } + + if (delta.tool_calls != null) { + for (const toolCallDelta of delta.tool_calls) { + const index = toolCallDelta.index; + + // Tool call start. OpenAI returns all information except the arguments in the first chunk. + if (toolCalls[index] == null) { + if ( + toolCallDelta.type != null && + toolCallDelta.type !== 'function' + ) { + throw new InvalidResponseDataError({ + data: toolCallDelta, + message: `Expected 'function' type.`, + }); + } + + if (toolCallDelta.id == null) { + throw new InvalidResponseDataError({ + data: toolCallDelta, + message: `Expected 'id' to be a string.`, + }); + } + + if (toolCallDelta.function?.name == null) { + throw new InvalidResponseDataError({ + data: toolCallDelta, + message: `Expected 'function.name' to be a string.`, + }); + } + + controller.enqueue({ + type: 'tool-input-start', + id: toolCallDelta.id, + toolName: toolCallDelta.function.name, + }); + + toolCalls[index] = { + id: toolCallDelta.id, + type: 'function', + function: { + name: toolCallDelta.function.name, + arguments: toolCallDelta.function.arguments ?? '', + }, + hasFinished: false, + }; + + const toolCall = toolCalls[index]; + + if ( + toolCall.function?.name != null && + toolCall.function?.arguments != null + ) { + // send delta if the argument text has already started: + if (toolCall.function.arguments.length > 0) { + controller.enqueue({ + type: 'tool-input-delta', + id: toolCall.id, + delta: toolCall.function.arguments, + }); + } + + // check if tool call is complete + // (some providers send the full tool call in one chunk): + if (isParsableJson(toolCall.function.arguments)) { + controller.enqueue({ + type: 'tool-input-end', + id: toolCall.id, + }); + + controller.enqueue({ + type: 'tool-call', + toolCallId: toolCall.id ?? generateId(), + toolName: toolCall.function.name, + input: toolCall.function.arguments, + }); + toolCall.hasFinished = true; + } + } + + continue; + } + + // existing tool call, merge if not finished + const toolCall = toolCalls[index]; + + if (toolCall.hasFinished) { + continue; + } + + if (toolCallDelta.function?.arguments != null) { + toolCall.function!.arguments += + toolCallDelta.function?.arguments ?? ''; + } + + // send delta + controller.enqueue({ + type: 'tool-input-delta', + id: toolCall.id, + delta: toolCallDelta.function.arguments ?? '', + }); + + // check if tool call is complete + if ( + toolCall.function?.name != null && + toolCall.function?.arguments != null && + isParsableJson(toolCall.function.arguments) + ) { + controller.enqueue({ + type: 'tool-input-end', + id: toolCall.id, + }); + + controller.enqueue({ + type: 'tool-call', + toolCallId: toolCall.id ?? generateId(), + toolName: toolCall.function.name, + input: toolCall.function.arguments, + }); + toolCall.hasFinished = true; + } + } + } + + // annotations/citations: + if (delta.annotations != null) { + for (const annotation of delta.annotations) { + controller.enqueue({ + type: 'source', + sourceType: 'url', + id: generateId(), + url: annotation.url_citation.url, + title: annotation.url_citation.title, + }); + } + } + }, + + flush(controller) { + if (isActiveText) { + controller.enqueue({ type: 'text-end', id: '0' }); + } + + controller.enqueue({ + type: 'finish', + finishReason, + usage: convertOpenAIChatUsage(usage), + ...(providerMetadata != null ? { providerMetadata } : {}), + }); + }, + }), + ), + request: { body }, + response: { headers: responseHeaders }, + }; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-options.ts new file mode 100644 index 000000000..d876e62e8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-options.ts @@ -0,0 +1,201 @@ +import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +// https://platform.openai.com/docs/models +export type OpenAIChatModelId = + | 'o1' + | 'o1-2024-12-17' + | 'o3-mini' + | 'o3-mini-2025-01-31' + | 'o3' + | 'o3-2025-04-16' + | 'o4-mini' + | 'o4-mini-2025-04-16' + | 'gpt-4.1' + | 'gpt-4.1-2025-04-14' + | 'gpt-4.1-mini' + | 'gpt-4.1-mini-2025-04-14' + | 'gpt-4.1-nano' + | 'gpt-4.1-nano-2025-04-14' + | 'gpt-4o' + | 'gpt-4o-2024-05-13' + | 'gpt-4o-2024-08-06' + | 'gpt-4o-2024-11-20' + | 'gpt-4o-audio-preview' + | 'gpt-4o-audio-preview-2024-12-17' + | 'gpt-4o-audio-preview-2025-06-03' + | 'gpt-4o-mini' + | 'gpt-4o-mini-2024-07-18' + | 'gpt-4o-mini-audio-preview' + | 'gpt-4o-mini-audio-preview-2024-12-17' + | 'gpt-4o-search-preview' + | 'gpt-4o-search-preview-2025-03-11' + | 'gpt-4o-mini-search-preview' + | 'gpt-4o-mini-search-preview-2025-03-11' + | 'gpt-3.5-turbo-0125' + | 'gpt-3.5-turbo' + | 'gpt-3.5-turbo-1106' + | 'gpt-3.5-turbo-16k' + | 'gpt-5' + | 'gpt-5-2025-08-07' + | 'gpt-5-mini' + | 'gpt-5-mini-2025-08-07' + | 'gpt-5-nano' + | 'gpt-5-nano-2025-08-07' + | 'gpt-5-chat-latest' + | 'gpt-5.1' + | 'gpt-5.1-2025-11-13' + | 'gpt-5.1-chat-latest' + | 'gpt-5.2' + | 'gpt-5.2-2025-12-11' + | 'gpt-5.2-chat-latest' + | 'gpt-5.2-pro' + | 'gpt-5.2-pro-2025-12-11' + | 'gpt-5.3-chat-latest' + | 'gpt-5.4' + | 'gpt-5.4-2026-03-05' + | 'gpt-5.4-mini' + | 'gpt-5.4-mini-2026-03-17' + | 'gpt-5.4-nano' + | 'gpt-5.4-nano-2026-03-17' + | 'gpt-5.4-pro' + | 'gpt-5.4-pro-2026-03-05' + | (string & {}); + +export const openaiLanguageModelChatOptions = lazySchema(() => + zodSchema( + z.object({ + /** + * Modify the likelihood of specified tokens appearing in the completion. + * + * Accepts a JSON object that maps tokens (specified by their token ID in + * the GPT tokenizer) to an associated bias value from -100 to 100. + */ + logitBias: z.record(z.coerce.number(), z.number()).optional(), + + /** + * Return the log probabilities of the tokens. + * + * Setting to true will return the log probabilities of the tokens that + * were generated. + * + * Setting to a number will return the log probabilities of the top n + * tokens that were generated. + */ + logprobs: z.union([z.boolean(), z.number()]).optional(), + + /** + * Whether to enable parallel function calling during tool use. Default to true. + */ + parallelToolCalls: z.boolean().optional(), + + /** + * A unique identifier representing your end-user, which can help OpenAI to + * monitor and detect abuse. + */ + user: z.string().optional(), + + /** + * Reasoning effort for reasoning models. Defaults to `medium`. + */ + reasoningEffort: z + .enum(['none', 'minimal', 'low', 'medium', 'high', 'xhigh']) + .optional(), + + /** + * Maximum number of completion tokens to generate. Useful for reasoning models. + */ + maxCompletionTokens: z.number().optional(), + + /** + * Whether to enable persistence in responses API. + */ + store: z.boolean().optional(), + + /** + * Metadata to associate with the request. + */ + metadata: z.record(z.string().max(64), z.string().max(512)).optional(), + + /** + * Parameters for prediction mode. + */ + prediction: z.record(z.string(), z.any()).optional(), + + /** + * Service tier for the request. + * - 'auto': Default service tier. The request will be processed with the service tier configured in the + * Project settings. Unless otherwise configured, the Project will use 'default'. + * - 'flex': 50% cheaper processing at the cost of increased latency. Only available for o3 and o4-mini models. + * - 'priority': Higher-speed processing with predictably low latency at premium cost. Available for Enterprise customers. + * - 'default': The request will be processed with the standard pricing and performance for the selected model. + * + * @default 'auto' + */ + serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).optional(), + + /** + * Whether to use strict JSON schema validation. + * + * @default true + */ + strictJsonSchema: z.boolean().optional(), + + /** + * Controls the verbosity of the model's responses. + * Lower values will result in more concise responses, while higher values will result in more verbose responses. + */ + textVerbosity: z.enum(['low', 'medium', 'high']).optional(), + + /** + * A cache key for prompt caching. Allows manual control over prompt caching behavior. + * Useful for improving cache hit rates and working around automatic caching issues. + */ + promptCacheKey: z.string().optional(), + + /** + * The retention policy for the prompt cache. + * - 'in_memory': Default. Standard prompt caching behavior. + * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours. + * Currently only available for 5.1 series models. + * + * @default 'in_memory' + */ + promptCacheRetention: z.enum(['in_memory', '24h']).optional(), + + /** + * A stable identifier used to help detect users of your application + * that may be violating OpenAI's usage policies. The IDs should be a + * string that uniquely identifies each user. We recommend hashing their + * username or email address, in order to avoid sending us any identifying + * information. + */ + safetyIdentifier: z.string().optional(), + + /** + * Override the system message mode for this model. + * - 'system': Use the 'system' role for system messages (default for most models) + * - 'developer': Use the 'developer' role for system messages (used by reasoning models) + * - 'remove': Remove system messages entirely + * + * If not specified, the mode is automatically determined based on the model. + */ + systemMessageMode: z.enum(['system', 'developer', 'remove']).optional(), + + /** + * Force treating this model as a reasoning model. + * + * This is useful for "stealth" reasoning models (e.g. via a custom baseURL) + * where the model ID is not recognized by the SDK's allowlist. + * + * When enabled, the SDK applies reasoning-model parameter compatibility rules + * and defaults `systemMessageMode` to `developer` unless overridden. + */ + forceReasoning: z.boolean().optional(), + }), + ), +); + +export type OpenAILanguageModelChatOptions = InferSchema< + typeof openaiLanguageModelChatOptions +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-prepare-tools.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-prepare-tools.ts new file mode 100644 index 000000000..9080896fe --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-prepare-tools.ts @@ -0,0 +1,84 @@ +import { + LanguageModelV3CallOptions, + SharedV3Warning, + UnsupportedFunctionalityError, +} from '@ai-sdk/provider'; +import { + OpenAIChatToolChoice, + OpenAIChatFunctionTool, +} from './openai-chat-api'; + +export function prepareChatTools({ + tools, + toolChoice, +}: { + tools: LanguageModelV3CallOptions['tools']; + toolChoice?: LanguageModelV3CallOptions['toolChoice']; +}): { + tools?: OpenAIChatFunctionTool[]; + toolChoice?: OpenAIChatToolChoice; + toolWarnings: Array; +} { + // when the tools array is empty, change it to undefined to prevent errors: + tools = tools?.length ? tools : undefined; + + const toolWarnings: SharedV3Warning[] = []; + + if (tools == null) { + return { tools: undefined, toolChoice: undefined, toolWarnings }; + } + + const openaiTools: OpenAIChatFunctionTool[] = []; + + for (const tool of tools) { + switch (tool.type) { + case 'function': + openaiTools.push({ + type: 'function', + function: { + name: tool.name, + description: tool.description, + parameters: tool.inputSchema, + ...(tool.strict != null ? { strict: tool.strict } : {}), + }, + }); + break; + default: + toolWarnings.push({ + type: 'unsupported', + feature: `tool type: ${tool.type}`, + }); + break; + } + } + + if (toolChoice == null) { + return { tools: openaiTools, toolChoice: undefined, toolWarnings }; + } + + const type = toolChoice.type; + + switch (type) { + case 'auto': + case 'none': + case 'required': + return { tools: openaiTools, toolChoice: type, toolWarnings }; + case 'tool': + return { + tools: openaiTools, + toolChoice: { + type: 'function', + function: { + name: toolChoice.toolName, + }, + }, + toolWarnings, + }; + default: { + const _exhaustiveCheck: never = type; + throw new UnsupportedFunctionalityError({ + functionality: `tool choice type: ${_exhaustiveCheck}`, + }); + } + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-prompt.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-prompt.ts new file mode 100644 index 000000000..379530416 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/chat/openai-chat-prompt.ts @@ -0,0 +1,70 @@ +export type OpenAIChatPrompt = Array; + +export type ChatCompletionMessage = + | ChatCompletionSystemMessage + | ChatCompletionDeveloperMessage + | ChatCompletionUserMessage + | ChatCompletionAssistantMessage + | ChatCompletionToolMessage; + +export interface ChatCompletionSystemMessage { + role: 'system'; + content: string; +} + +export interface ChatCompletionDeveloperMessage { + role: 'developer'; + content: string; +} + +export interface ChatCompletionUserMessage { + role: 'user'; + content: string | Array; +} + +export type ChatCompletionContentPart = + | ChatCompletionContentPartText + | ChatCompletionContentPartImage + | ChatCompletionContentPartInputAudio + | ChatCompletionContentPartFile; + +export interface ChatCompletionContentPartText { + type: 'text'; + text: string; +} + +export interface ChatCompletionContentPartImage { + type: 'image_url'; + image_url: { url: string }; +} + +export interface ChatCompletionContentPartInputAudio { + type: 'input_audio'; + input_audio: { data: string; format: 'wav' | 'mp3' }; +} + +export interface ChatCompletionContentPartFile { + type: 'file'; + file: { filename: string; file_data: string } | { file_id: string }; +} + +export interface ChatCompletionAssistantMessage { + role: 'assistant'; + content?: string | null; + tool_calls?: Array; +} + +export interface ChatCompletionMessageToolCall { + type: 'function'; + id: string; + function: { + arguments: string; + name: string; + }; +} + +export interface ChatCompletionToolMessage { + role: 'tool'; + content: string; + tool_call_id: string; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/convert-openai-completion-usage.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/convert-openai-completion-usage.ts new file mode 100644 index 000000000..3b4dc14df --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/convert-openai-completion-usage.ts @@ -0,0 +1,46 @@ +import { LanguageModelV3Usage } from '@ai-sdk/provider'; + +export type OpenAICompletionUsage = { + prompt_tokens?: number | null; + completion_tokens?: number | null; + total_tokens?: number | null; +}; + +export function convertOpenAICompletionUsage( + usage: OpenAICompletionUsage | undefined | null, +): LanguageModelV3Usage { + if (usage == null) { + return { + inputTokens: { + total: undefined, + noCache: undefined, + cacheRead: undefined, + cacheWrite: undefined, + }, + outputTokens: { + total: undefined, + text: undefined, + reasoning: undefined, + }, + raw: undefined, + }; + } + + const promptTokens = usage.prompt_tokens ?? 0; + const completionTokens = usage.completion_tokens ?? 0; + + return { + inputTokens: { + total: usage.prompt_tokens ?? undefined, + noCache: promptTokens, + cacheRead: undefined, + cacheWrite: undefined, + }, + outputTokens: { + total: usage.completion_tokens ?? undefined, + text: completionTokens, + reasoning: undefined, + }, + raw: usage, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/convert-to-openai-completion-prompt.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/convert-to-openai-completion-prompt.ts new file mode 100644 index 000000000..ed67f480d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/convert-to-openai-completion-prompt.ts @@ -0,0 +1,93 @@ +import { + InvalidPromptError, + LanguageModelV3Prompt, + UnsupportedFunctionalityError, +} from '@ai-sdk/provider'; + +export function convertToOpenAICompletionPrompt({ + prompt, + user = 'user', + assistant = 'assistant', +}: { + prompt: LanguageModelV3Prompt; + user?: string; + assistant?: string; +}): { + prompt: string; + stopSequences?: string[]; +} { + // transform to a chat message format: + let text = ''; + + // if first message is a system message, add it to the text: + if (prompt[0].role === 'system') { + text += `${prompt[0].content}\n\n`; + prompt = prompt.slice(1); + } + + for (const { role, content } of prompt) { + switch (role) { + case 'system': { + throw new InvalidPromptError({ + message: 'Unexpected system message in prompt: ${content}', + prompt, + }); + } + + case 'user': { + const userMessage = content + .map(part => { + switch (part.type) { + case 'text': { + return part.text; + } + } + }) + .filter(Boolean) + .join(''); + + text += `${user}:\n${userMessage}\n\n`; + break; + } + + case 'assistant': { + const assistantMessage = content + .map(part => { + switch (part.type) { + case 'text': { + return part.text; + } + case 'tool-call': { + throw new UnsupportedFunctionalityError({ + functionality: 'tool-call messages', + }); + } + } + }) + .join(''); + + text += `${assistant}:\n${assistantMessage}\n\n`; + break; + } + + case 'tool': { + throw new UnsupportedFunctionalityError({ + functionality: 'tool messages', + }); + } + + default: { + const _exhaustiveCheck: never = role; + throw new Error(`Unsupported role: ${_exhaustiveCheck}`); + } + } + } + + // Assistant message prefix: + text += `${assistant}:\n`; + + return { + prompt: text, + stopSequences: [`\n${user}:`], + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/get-response-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/get-response-metadata.ts new file mode 100644 index 000000000..bd358b23f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/get-response-metadata.ts @@ -0,0 +1,15 @@ +export function getResponseMetadata({ + id, + model, + created, +}: { + id?: string | undefined | null; + created?: number | undefined | null; + model?: string | undefined | null; +}) { + return { + id: id ?? undefined, + modelId: model ?? undefined, + timestamp: created != null ? new Date(created * 1000) : undefined, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/map-openai-finish-reason.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/map-openai-finish-reason.ts new file mode 100644 index 000000000..f3005bb8d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/map-openai-finish-reason.ts @@ -0,0 +1,19 @@ +import { LanguageModelV3FinishReason } from '@ai-sdk/provider'; + +export function mapOpenAIFinishReason( + finishReason: string | null | undefined, +): LanguageModelV3FinishReason['unified'] { + switch (finishReason) { + case 'stop': + return 'stop'; + case 'length': + return 'length'; + case 'content_filter': + return 'content-filter'; + case 'function_call': + case 'tool_calls': + return 'tool-calls'; + default: + return 'other'; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/openai-completion-api.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/openai-completion-api.ts new file mode 100644 index 000000000..312ab046c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/openai-completion-api.ts @@ -0,0 +1,81 @@ +import { z } from 'zod/v4'; +import { openaiErrorDataSchema } from '../openai-error'; +import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils'; + +// limited version of the schema, focussed on what is needed for the implementation +// this approach limits breakages when the API changes and increases efficiency +export const openaiCompletionResponseSchema = lazySchema(() => + zodSchema( + z.object({ + id: z.string().nullish(), + created: z.number().nullish(), + model: z.string().nullish(), + choices: z.array( + z.object({ + text: z.string(), + finish_reason: z.string(), + logprobs: z + .object({ + tokens: z.array(z.string()), + token_logprobs: z.array(z.number()), + top_logprobs: z.array(z.record(z.string(), z.number())).nullish(), + }) + .nullish(), + }), + ), + usage: z + .object({ + prompt_tokens: z.number(), + completion_tokens: z.number(), + total_tokens: z.number(), + }) + .nullish(), + }), + ), +); + +// limited version of the schema, focussed on what is needed for the implementation +// this approach limits breakages when the API changes and increases efficiency +export const openaiCompletionChunkSchema = lazySchema(() => + zodSchema( + z.union([ + z.object({ + id: z.string().nullish(), + created: z.number().nullish(), + model: z.string().nullish(), + choices: z.array( + z.object({ + text: z.string(), + finish_reason: z.string().nullish(), + index: z.number(), + logprobs: z + .object({ + tokens: z.array(z.string()), + token_logprobs: z.array(z.number()), + top_logprobs: z + .array(z.record(z.string(), z.number())) + .nullish(), + }) + .nullish(), + }), + ), + usage: z + .object({ + prompt_tokens: z.number(), + completion_tokens: z.number(), + total_tokens: z.number(), + }) + .nullish(), + }), + openaiErrorDataSchema, + ]), + ), +); + +export type OpenAICompletionChunk = InferSchema< + typeof openaiCompletionChunkSchema +>; + +export type OpenAICompletionResponse = InferSchema< + typeof openaiCompletionResponseSchema +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/openai-completion-language-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/openai-completion-language-model.ts new file mode 100644 index 000000000..836b30634 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/openai-completion-language-model.ts @@ -0,0 +1,336 @@ +import { + LanguageModelV3, + LanguageModelV3CallOptions, + LanguageModelV3FinishReason, + LanguageModelV3GenerateResult, + LanguageModelV3StreamPart, + LanguageModelV3StreamResult, + SharedV3ProviderMetadata, + SharedV3Warning, +} from '@ai-sdk/provider'; +import { + combineHeaders, + createEventSourceResponseHandler, + createJsonResponseHandler, + FetchFunction, + parseProviderOptions, + ParseResult, + postJsonToApi, +} from '@ai-sdk/provider-utils'; +import { openaiFailedResponseHandler } from '../openai-error'; +import { + convertOpenAICompletionUsage, + OpenAICompletionUsage, +} from './convert-openai-completion-usage'; +import { convertToOpenAICompletionPrompt } from './convert-to-openai-completion-prompt'; +import { getResponseMetadata } from './get-response-metadata'; +import { mapOpenAIFinishReason } from './map-openai-finish-reason'; +import { + OpenAICompletionChunk, + openaiCompletionChunkSchema, + openaiCompletionResponseSchema, +} from './openai-completion-api'; +import { + OpenAICompletionModelId, + openaiLanguageModelCompletionOptions, +} from './openai-completion-options'; + +type OpenAICompletionConfig = { + provider: string; + headers: () => Record; + url: (options: { modelId: string; path: string }) => string; + fetch?: FetchFunction; +}; + +export class OpenAICompletionLanguageModel implements LanguageModelV3 { + readonly specificationVersion = 'v3'; + + readonly modelId: OpenAICompletionModelId; + + private readonly config: OpenAICompletionConfig; + + private get providerOptionsName(): string { + return this.config.provider.split('.')[0].trim(); + } + + constructor( + modelId: OpenAICompletionModelId, + config: OpenAICompletionConfig, + ) { + this.modelId = modelId; + this.config = config; + } + + get provider(): string { + return this.config.provider; + } + + readonly supportedUrls: Record = { + // No URLs are supported for completion models. + }; + + private async getArgs({ + prompt, + maxOutputTokens, + temperature, + topP, + topK, + frequencyPenalty, + presencePenalty, + stopSequences: userStopSequences, + responseFormat, + tools, + toolChoice, + seed, + providerOptions, + }: LanguageModelV3CallOptions) { + const warnings: SharedV3Warning[] = []; + + // Parse provider options + const openaiOptions = { + ...(await parseProviderOptions({ + provider: 'openai', + providerOptions, + schema: openaiLanguageModelCompletionOptions, + })), + ...(await parseProviderOptions({ + provider: this.providerOptionsName, + providerOptions, + schema: openaiLanguageModelCompletionOptions, + })), + }; + + if (topK != null) { + warnings.push({ type: 'unsupported', feature: 'topK' }); + } + + if (tools?.length) { + warnings.push({ type: 'unsupported', feature: 'tools' }); + } + + if (toolChoice != null) { + warnings.push({ type: 'unsupported', feature: 'toolChoice' }); + } + + if (responseFormat != null && responseFormat.type !== 'text') { + warnings.push({ + type: 'unsupported', + feature: 'responseFormat', + details: 'JSON response format is not supported.', + }); + } + + const { prompt: completionPrompt, stopSequences } = + convertToOpenAICompletionPrompt({ prompt }); + + const stop = [...(stopSequences ?? []), ...(userStopSequences ?? [])]; + + return { + args: { + // model id: + model: this.modelId, + + // model specific settings: + echo: openaiOptions.echo, + logit_bias: openaiOptions.logitBias, + logprobs: + openaiOptions?.logprobs === true + ? 0 + : openaiOptions?.logprobs === false + ? undefined + : openaiOptions?.logprobs, + suffix: openaiOptions.suffix, + user: openaiOptions.user, + + // standardized settings: + max_tokens: maxOutputTokens, + temperature, + top_p: topP, + frequency_penalty: frequencyPenalty, + presence_penalty: presencePenalty, + seed, + + // prompt: + prompt: completionPrompt, + + // stop sequences: + stop: stop.length > 0 ? stop : undefined, + }, + warnings, + }; + } + + async doGenerate( + options: LanguageModelV3CallOptions, + ): Promise { + const { args, warnings } = await this.getArgs(options); + + const { + responseHeaders, + value: response, + rawValue: rawResponse, + } = await postJsonToApi({ + url: this.config.url({ + path: '/completions', + modelId: this.modelId, + }), + headers: combineHeaders(this.config.headers(), options.headers), + body: args, + failedResponseHandler: openaiFailedResponseHandler, + successfulResponseHandler: createJsonResponseHandler( + openaiCompletionResponseSchema, + ), + abortSignal: options.abortSignal, + fetch: this.config.fetch, + }); + + const choice = response.choices[0]; + + const providerMetadata: SharedV3ProviderMetadata = { openai: {} }; + + if (choice.logprobs != null) { + providerMetadata.openai.logprobs = choice.logprobs; + } + + return { + content: [{ type: 'text', text: choice.text }], + usage: convertOpenAICompletionUsage(response.usage), + finishReason: { + unified: mapOpenAIFinishReason(choice.finish_reason), + raw: choice.finish_reason ?? undefined, + }, + request: { body: args }, + response: { + ...getResponseMetadata(response), + headers: responseHeaders, + body: rawResponse, + }, + providerMetadata, + warnings, + }; + } + + async doStream( + options: LanguageModelV3CallOptions, + ): Promise { + const { args, warnings } = await this.getArgs(options); + + const body = { + ...args, + stream: true, + + stream_options: { + include_usage: true, + }, + }; + + const { responseHeaders, value: response } = await postJsonToApi({ + url: this.config.url({ + path: '/completions', + modelId: this.modelId, + }), + headers: combineHeaders(this.config.headers(), options.headers), + body, + failedResponseHandler: openaiFailedResponseHandler, + successfulResponseHandler: createEventSourceResponseHandler( + openaiCompletionChunkSchema, + ), + abortSignal: options.abortSignal, + fetch: this.config.fetch, + }); + + let finishReason: LanguageModelV3FinishReason = { + unified: 'other', + raw: undefined, + }; + const providerMetadata: SharedV3ProviderMetadata = { openai: {} }; + let usage: OpenAICompletionUsage | undefined = undefined; + let isFirstChunk = true; + + return { + stream: response.pipeThrough( + new TransformStream< + ParseResult, + LanguageModelV3StreamPart + >({ + start(controller) { + controller.enqueue({ type: 'stream-start', warnings }); + }, + + transform(chunk, controller) { + if (options.includeRawChunks) { + controller.enqueue({ type: 'raw', rawValue: chunk.rawValue }); + } + + // handle failed chunk parsing / validation: + if (!chunk.success) { + finishReason = { unified: 'error', raw: undefined }; + controller.enqueue({ type: 'error', error: chunk.error }); + return; + } + + const value = chunk.value; + + // handle error chunks: + if ('error' in value) { + finishReason = { unified: 'error', raw: undefined }; + controller.enqueue({ type: 'error', error: value.error }); + return; + } + + if (isFirstChunk) { + isFirstChunk = false; + + controller.enqueue({ + type: 'response-metadata', + ...getResponseMetadata(value), + }); + + controller.enqueue({ type: 'text-start', id: '0' }); + } + + if (value.usage != null) { + usage = value.usage; + } + + const choice = value.choices[0]; + + if (choice?.finish_reason != null) { + finishReason = { + unified: mapOpenAIFinishReason(choice.finish_reason), + raw: choice.finish_reason, + }; + } + + if (choice?.logprobs != null) { + providerMetadata.openai.logprobs = choice.logprobs; + } + + if (choice?.text != null && choice.text.length > 0) { + controller.enqueue({ + type: 'text-delta', + id: '0', + delta: choice.text, + }); + } + }, + + flush(controller) { + if (!isFirstChunk) { + controller.enqueue({ type: 'text-end', id: '0' }); + } + + controller.enqueue({ + type: 'finish', + finishReason, + providerMetadata, + usage: convertOpenAICompletionUsage(usage), + }); + }, + }), + ), + request: { body }, + response: { headers: responseHeaders }, + }; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/openai-completion-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/openai-completion-options.ts new file mode 100644 index 000000000..a936f3b39 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/completion/openai-completion-options.ts @@ -0,0 +1,61 @@ +import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +// https://platform.openai.com/docs/models +export type OpenAICompletionModelId = + | 'gpt-3.5-turbo-instruct' + | 'gpt-3.5-turbo-instruct-0914' + | (string & {}); + +export const openaiLanguageModelCompletionOptions = lazySchema(() => + zodSchema( + z.object({ + /** + * Echo back the prompt in addition to the completion. + */ + echo: z.boolean().optional(), + + /** + * Modify the likelihood of specified tokens appearing in the completion. + * + * Accepts a JSON object that maps tokens (specified by their token ID in + * the GPT tokenizer) to an associated bias value from -100 to 100. You + * can use this tokenizer tool to convert text to token IDs. Mathematically, + * the bias is added to the logits generated by the model prior to sampling. + * The exact effect will vary per model, but values between -1 and 1 should + * decrease or increase likelihood of selection; values like -100 or 100 + * should result in a ban or exclusive selection of the relevant token. + * + * As an example, you can pass {"50256": -100} to prevent the <|endoftext|> + * token from being generated. + */ + logitBias: z.record(z.string(), z.number()).optional(), + + /** + * The suffix that comes after a completion of inserted text. + */ + suffix: z.string().optional(), + + /** + * A unique identifier representing your end-user, which can help OpenAI to + * monitor and detect abuse. Learn more. + */ + user: z.string().optional(), + + /** + * Return the log probabilities of the tokens. Including logprobs will increase + * the response size and can slow down response times. However, it can + * be useful to better understand how the model is behaving. + * Setting to true will return the log probabilities of the tokens that + * were generated. + * Setting to a number will return the log probabilities of the top n + * tokens that were generated. + */ + logprobs: z.union([z.boolean(), z.number()]).optional(), + }), + ), +); + +export type OpenAILanguageModelCompletionOptions = InferSchema< + typeof openaiLanguageModelCompletionOptions +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-api.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-api.ts new file mode 100644 index 000000000..87ab6c106 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-api.ts @@ -0,0 +1,13 @@ +import { lazySchema, zodSchema } from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +// minimal version of the schema, focussed on what is needed for the implementation +// this approach limits breakages when the API changes and increases efficiency +export const openaiTextEmbeddingResponseSchema = lazySchema(() => + zodSchema( + z.object({ + data: z.array(z.object({ embedding: z.array(z.number()) })), + usage: z.object({ prompt_tokens: z.number() }).nullish(), + }), + ), +); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-model.ts new file mode 100644 index 000000000..a1e2c7615 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-model.ts @@ -0,0 +1,95 @@ +import { + EmbeddingModelV3, + TooManyEmbeddingValuesForCallError, +} from '@ai-sdk/provider'; +import { + combineHeaders, + createJsonResponseHandler, + parseProviderOptions, + postJsonToApi, +} from '@ai-sdk/provider-utils'; +import { OpenAIConfig } from '../openai-config'; +import { openaiFailedResponseHandler } from '../openai-error'; +import { + OpenAIEmbeddingModelId, + openaiEmbeddingModelOptions, +} from './openai-embedding-options'; +import { openaiTextEmbeddingResponseSchema } from './openai-embedding-api'; + +export class OpenAIEmbeddingModel implements EmbeddingModelV3 { + readonly specificationVersion = 'v3'; + readonly modelId: OpenAIEmbeddingModelId; + readonly maxEmbeddingsPerCall = 2048; + readonly supportsParallelCalls = true; + + private readonly config: OpenAIConfig; + + get provider(): string { + return this.config.provider; + } + + constructor(modelId: OpenAIEmbeddingModelId, config: OpenAIConfig) { + this.modelId = modelId; + this.config = config; + } + + async doEmbed({ + values, + headers, + abortSignal, + providerOptions, + }: Parameters[0]): Promise< + Awaited> + > { + if (values.length > this.maxEmbeddingsPerCall) { + throw new TooManyEmbeddingValuesForCallError({ + provider: this.provider, + modelId: this.modelId, + maxEmbeddingsPerCall: this.maxEmbeddingsPerCall, + values, + }); + } + + // Parse provider options + const openaiOptions = + (await parseProviderOptions({ + provider: 'openai', + providerOptions, + schema: openaiEmbeddingModelOptions, + })) ?? {}; + + const { + responseHeaders, + value: response, + rawValue, + } = await postJsonToApi({ + url: this.config.url({ + path: '/embeddings', + modelId: this.modelId, + }), + headers: combineHeaders(this.config.headers(), headers), + body: { + model: this.modelId, + input: values, + encoding_format: 'float', + dimensions: openaiOptions.dimensions, + user: openaiOptions.user, + }, + failedResponseHandler: openaiFailedResponseHandler, + successfulResponseHandler: createJsonResponseHandler( + openaiTextEmbeddingResponseSchema, + ), + abortSignal, + fetch: this.config.fetch, + }); + + return { + warnings: [], + embeddings: response.data.map(item => item.embedding), + usage: response.usage + ? { tokens: response.usage.prompt_tokens } + : undefined, + response: { headers: responseHeaders, body: rawValue }, + }; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-options.ts new file mode 100644 index 000000000..54d7ff077 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-options.ts @@ -0,0 +1,30 @@ +import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export type OpenAIEmbeddingModelId = + | 'text-embedding-3-small' + | 'text-embedding-3-large' + | 'text-embedding-ada-002' + | (string & {}); + +export const openaiEmbeddingModelOptions = lazySchema(() => + zodSchema( + z.object({ + /** + * The number of dimensions the resulting output embeddings should have. + * Only supported in text-embedding-3 and later models. + */ + dimensions: z.number().optional(), + + /** + * A unique identifier representing your end-user, which can help OpenAI to + * monitor and detect abuse. Learn more. + */ + user: z.string().optional(), + }), + ), +); + +export type OpenAIEmbeddingModelOptions = InferSchema< + typeof openaiEmbeddingModelOptions +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/image/openai-image-api.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/image/openai-image-api.ts new file mode 100644 index 000000000..de779ca46 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/image/openai-image-api.ts @@ -0,0 +1,35 @@ +import { lazySchema, zodSchema } from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +// minimal version of the schema, focused on what is needed for the implementation +// this approach limits breakages when the API changes and increases efficiency +export const openaiImageResponseSchema = lazySchema(() => + zodSchema( + z.object({ + created: z.number().nullish(), + data: z.array( + z.object({ + b64_json: z.string(), + revised_prompt: z.string().nullish(), + }), + ), + background: z.string().nullish(), + output_format: z.string().nullish(), + size: z.string().nullish(), + quality: z.string().nullish(), + usage: z + .object({ + input_tokens: z.number().nullish(), + output_tokens: z.number().nullish(), + total_tokens: z.number().nullish(), + input_tokens_details: z + .object({ + image_tokens: z.number().nullish(), + text_tokens: z.number().nullish(), + }) + .nullish(), + }) + .nullish(), + }), + ), +); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/image/openai-image-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/image/openai-image-model.ts new file mode 100644 index 000000000..d456d6398 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/image/openai-image-model.ts @@ -0,0 +1,349 @@ +import { + ImageModelV3, + ImageModelV3File, + SharedV3Warning, +} from '@ai-sdk/provider'; +import { + combineHeaders, + convertBase64ToUint8Array, + convertToFormData, + createJsonResponseHandler, + downloadBlob, + postFormDataToApi, + postJsonToApi, +} from '@ai-sdk/provider-utils'; +import { OpenAIConfig } from '../openai-config'; +import { openaiFailedResponseHandler } from '../openai-error'; +import { openaiImageResponseSchema } from './openai-image-api'; +import { + OpenAIImageModelId, + hasDefaultResponseFormat, + modelMaxImagesPerCall, +} from './openai-image-options'; + +interface OpenAIImageModelConfig extends OpenAIConfig { + _internal?: { + currentDate?: () => Date; + }; +} + +export class OpenAIImageModel implements ImageModelV3 { + readonly specificationVersion = 'v3'; + + get maxImagesPerCall(): number { + return modelMaxImagesPerCall[this.modelId] ?? 1; + } + + get provider(): string { + return this.config.provider; + } + + constructor( + readonly modelId: OpenAIImageModelId, + private readonly config: OpenAIImageModelConfig, + ) {} + + async doGenerate({ + prompt, + files, + mask, + n, + size, + aspectRatio, + seed, + providerOptions, + headers, + abortSignal, + }: Parameters[0]): Promise< + Awaited> + > { + const warnings: Array = []; + + if (aspectRatio != null) { + warnings.push({ + type: 'unsupported', + feature: 'aspectRatio', + details: + 'This model does not support aspect ratio. Use `size` instead.', + }); + } + + if (seed != null) { + warnings.push({ type: 'unsupported', feature: 'seed' }); + } + + const currentDate = this.config._internal?.currentDate?.() ?? new Date(); + + if (files != null) { + const { value: response, responseHeaders } = await postFormDataToApi({ + url: this.config.url({ + path: '/images/edits', + modelId: this.modelId, + }), + headers: combineHeaders(this.config.headers(), headers), + formData: convertToFormData({ + model: this.modelId, + prompt, + image: await Promise.all( + files.map(file => + file.type === 'file' + ? new Blob( + [ + file.data instanceof Uint8Array + ? new Blob([file.data as BlobPart], { + type: file.mediaType, + }) + : new Blob([convertBase64ToUint8Array(file.data)], { + type: file.mediaType, + }), + ], + { type: file.mediaType }, + ) + : downloadBlob(file.url), + ), + ), + mask: mask != null ? await fileToBlob(mask) : undefined, + n, + size, + ...(providerOptions.openai ?? {}), + }), + failedResponseHandler: openaiFailedResponseHandler, + successfulResponseHandler: createJsonResponseHandler( + openaiImageResponseSchema, + ), + abortSignal, + fetch: this.config.fetch, + }); + + return { + images: response.data.map(item => item.b64_json), + warnings, + usage: + response.usage != null + ? { + inputTokens: response.usage.input_tokens ?? undefined, + outputTokens: response.usage.output_tokens ?? undefined, + totalTokens: response.usage.total_tokens ?? undefined, + } + : undefined, + response: { + timestamp: currentDate, + modelId: this.modelId, + headers: responseHeaders, + }, + providerMetadata: { + openai: { + images: response.data.map((item, index) => ({ + ...(item.revised_prompt + ? { revisedPrompt: item.revised_prompt } + : {}), + created: response.created ?? undefined, + size: response.size ?? undefined, + quality: response.quality ?? undefined, + background: response.background ?? undefined, + outputFormat: response.output_format ?? undefined, + ...distributeTokenDetails( + response.usage?.input_tokens_details, + index, + response.data.length, + ), + })), + }, + }, + }; + } + + const { value: response, responseHeaders } = await postJsonToApi({ + url: this.config.url({ + path: '/images/generations', + modelId: this.modelId, + }), + headers: combineHeaders(this.config.headers(), headers), + body: { + model: this.modelId, + prompt, + n, + size, + ...(providerOptions.openai ?? {}), + ...(!hasDefaultResponseFormat(this.modelId) + ? { response_format: 'b64_json' } + : {}), + }, + failedResponseHandler: openaiFailedResponseHandler, + successfulResponseHandler: createJsonResponseHandler( + openaiImageResponseSchema, + ), + abortSignal, + fetch: this.config.fetch, + }); + + return { + images: response.data.map(item => item.b64_json), + warnings, + usage: + response.usage != null + ? { + inputTokens: response.usage.input_tokens ?? undefined, + outputTokens: response.usage.output_tokens ?? undefined, + totalTokens: response.usage.total_tokens ?? undefined, + } + : undefined, + response: { + timestamp: currentDate, + modelId: this.modelId, + headers: responseHeaders, + }, + providerMetadata: { + openai: { + images: response.data.map((item, index) => ({ + ...(item.revised_prompt + ? { revisedPrompt: item.revised_prompt } + : {}), + created: response.created ?? undefined, + size: response.size ?? undefined, + quality: response.quality ?? undefined, + background: response.background ?? undefined, + outputFormat: response.output_format ?? undefined, + ...distributeTokenDetails( + response.usage?.input_tokens_details, + index, + response.data.length, + ), + })), + }, + }, + }; + } +} + +/** + * Distributes input token details evenly across images, with the remainder + * assigned to the last image so that summing across all entries gives the + * exact total. + */ +function distributeTokenDetails( + details: + | { image_tokens?: number | null; text_tokens?: number | null } + | null + | undefined, + index: number, + total: number, +): { imageTokens?: number; textTokens?: number } { + if (details == null) { + return {}; + } + + const result: { imageTokens?: number; textTokens?: number } = {}; + + if (details.image_tokens != null) { + const base = Math.floor(details.image_tokens / total); + const remainder = details.image_tokens - base * (total - 1); + result.imageTokens = index === total - 1 ? remainder : base; + } + + if (details.text_tokens != null) { + const base = Math.floor(details.text_tokens / total); + const remainder = details.text_tokens - base * (total - 1); + result.textTokens = index === total - 1 ? remainder : base; + } + + return result; +} + +type OpenAIImageEditInput = { + /** + * Allows to set transparency for the background of the generated image(s). + * This parameter is only supported for `gpt-image-1`. Must be one of + * `transparent`, `opaque` or `auto` (default value). When `auto` is used, the + * model will automatically determine the best background for the image. + * + * If `transparent`, the output format needs to support transparency, so it + * should be set to either `png` (default value) or `webp`. + * + */ + background?: 'transparent' | 'opaque' | 'auto'; + /** + * The image(s) to edit. Must be a supported image file or an array of images. + * + * For `gpt-image-1`, each image should be a `png`, `webp`, or `jpg` file less + * than 50MB. You can provide up to 16 images. + * + * For `dall-e-2`, you can only provide one image, and it should be a square + * `png` file less than 4MB. + * + */ + image: Blob | Blob[]; + input_fidelity?: ('high' | 'low') | null; + /** + * An additional image whose fully transparent areas (e.g. where alpha is zero) indicate where `image` should be edited. If there are multiple images provided, the mask will be applied on the first image. Must be a valid PNG file, less than 4MB, and have the same dimensions as `image`. + */ + mask?: Blob; + /** + * The model to use for image generation. Only `dall-e-2` and `gpt-image-1` are supported. Defaults to `dall-e-2` unless a parameter specific to `gpt-image-1` is used. + */ + model?: 'dall-e-2' | 'gpt-image-1' | 'gpt-image-1-mini' | (string & {}); + /** + * The number of images to generate. Must be between 1 and 10. + */ + n?: number; + /** + * The compression level (0-100%) for the generated images. This parameter + * is only supported for `gpt-image-1` with the `webp` or `jpeg` output + * formats, and defaults to 100. + * + */ + output_compression?: number; + /** + * The format in which the generated images are returned. This parameter is + * only supported for `gpt-image-1`. Must be one of `png`, `jpeg`, or `webp`. + * The default value is `png`. + * + */ + output_format?: 'png' | 'jpeg' | 'webp'; + partial_images?: number | null; + /** + * A text description of the desired image(s). The maximum length is 1000 characters for `dall-e-2`, and 32000 characters for `gpt-image-1`. + */ + prompt?: string; + /** + * The quality of the image that will be generated. `high`, `medium` and `low` are only supported for `gpt-image-1`. `dall-e-2` only supports `standard` quality. Defaults to `auto`. + * + */ + quality?: 'standard' | 'low' | 'medium' | 'high' | 'auto'; + /** + * The format in which the generated images are returned. Must be one of `url` or `b64_json`. URLs are only valid for 60 minutes after the image has been generated. This parameter is only supported for `dall-e-2`, as `gpt-image-1` will always return base64-encoded images. + */ + response_format?: 'url' | 'b64_json'; + /** + * The size of the generated images. Must be one of `1024x1024`, `1536x1024` (landscape), `1024x1536` (portrait), or `auto` (default value) for `gpt-image-1`, and one of `256x256`, `512x512`, or `1024x1024` for `dall-e-2`. + */ + size?: `${number}x${number}`; + /** + * Edit the image in streaming mode. Defaults to `false`. See the + * [Image generation guide](https://platform.openai.com/docs/guides/image-generation) for more information. + * + */ + stream?: boolean; + /** + * A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. [Learn more](https://platform.openai.com/docs/guides/safety-best-practices#end-user-ids). + * + */ + user?: string; +}; + +async function fileToBlob( + file: ImageModelV3File | undefined, +): Promise { + if (!file) return undefined; + + if (file.type === 'url') { + return downloadBlob(file.url); + } + + const data = + file.data instanceof Uint8Array + ? file.data + : convertBase64ToUint8Array(file.data); + + return new Blob([data as BlobPart], { type: file.mediaType }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/image/openai-image-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/image/openai-image-options.ts new file mode 100644 index 000000000..2ee92ea5e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/image/openai-image-options.ts @@ -0,0 +1,31 @@ +export type OpenAIImageModelId = + | 'dall-e-3' + | 'dall-e-2' + | 'gpt-image-1' + | 'gpt-image-1-mini' + | 'gpt-image-1.5' + | 'chatgpt-image-latest' + | (string & {}); + +// https://platform.openai.com/docs/guides/images +export const modelMaxImagesPerCall: Record = { + 'dall-e-3': 1, + 'dall-e-2': 10, + 'gpt-image-1': 10, + 'gpt-image-1-mini': 10, + 'gpt-image-1.5': 10, + 'chatgpt-image-latest': 10, +}; + +const defaultResponseFormatPrefixes = [ + 'chatgpt-image-', + 'gpt-image-1-mini', + 'gpt-image-1.5', + 'gpt-image-1', +]; + +export function hasDefaultResponseFormat(modelId: string): boolean { + return defaultResponseFormatPrefixes.some(prefix => + modelId.startsWith(prefix), + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/index.ts new file mode 100644 index 000000000..22e3ceed8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/index.ts @@ -0,0 +1,23 @@ +export { createOpenAI, openai } from './openai-provider'; +export type { OpenAIProvider, OpenAIProviderSettings } from './openai-provider'; +export type { + OpenAILanguageModelResponsesOptions, + /** @deprecated Use `OpenAILanguageModelResponsesOptions` instead. */ + OpenAILanguageModelResponsesOptions as OpenAIResponsesProviderOptions, +} from './responses/openai-responses-options'; +export type { + OpenAILanguageModelChatOptions, + /** @deprecated Use `OpenAILanguageModelChatOptions` instead. */ + OpenAILanguageModelChatOptions as OpenAIChatLanguageModelOptions, +} from './chat/openai-chat-options'; +export type { OpenAILanguageModelCompletionOptions } from './completion/openai-completion-options'; +export type { OpenAIEmbeddingModelOptions } from './embedding/openai-embedding-options'; +export type { OpenAISpeechModelOptions } from './speech/openai-speech-options'; +export type { OpenAITranscriptionModelOptions } from './transcription/openai-transcription-options'; +export type { + OpenaiResponsesProviderMetadata, + OpenaiResponsesReasoningProviderMetadata, + OpenaiResponsesTextProviderMetadata, + OpenaiResponsesSourceDocumentProviderMetadata, +} from './responses/openai-responses-provider-metadata'; +export { VERSION } from './version'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/internal/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/internal/index.ts new file mode 100644 index 000000000..0a79d3f71 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/internal/index.ts @@ -0,0 +1,19 @@ +export * from '../chat/openai-chat-language-model'; +export * from '../chat/openai-chat-options'; +export * from '../completion/openai-completion-language-model'; +export * from '../completion/openai-completion-options'; +export * from '../embedding/openai-embedding-model'; +export * from '../embedding/openai-embedding-options'; +export * from '../image/openai-image-model'; +export * from '../image/openai-image-options'; +export * from '../transcription/openai-transcription-model'; +export * from '../transcription/openai-transcription-options'; +export * from '../speech/openai-speech-model'; +export * from '../speech/openai-speech-options'; +export * from '../responses/openai-responses-language-model'; +export * from '../responses/openai-responses-provider-metadata'; +export * from '../tool/apply-patch'; +export * from '../tool/code-interpreter'; +export * from '../tool/file-search'; +export * from '../tool/image-generation'; +export * from '../tool/web-search-preview'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-config.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-config.ts new file mode 100644 index 000000000..6f41ff698 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-config.ts @@ -0,0 +1,18 @@ +import { FetchFunction } from '@ai-sdk/provider-utils'; + +export type OpenAIConfig = { + provider: string; + url: (options: { modelId: string; path: string }) => string; + headers: () => Record; + fetch?: FetchFunction; + generateId?: () => string; + /** + * File ID prefixes used to identify file IDs in Responses API. + * When undefined, all file data is treated as base64 content. + * + * Examples: + * - OpenAI: ['file-'] for IDs like 'file-abc123' + * - Azure OpenAI: ['assistant-'] for IDs like 'assistant-abc123' + */ + fileIdPrefixes?: readonly string[]; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-error.ts new file mode 100644 index 000000000..d8d59a515 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-error.ts @@ -0,0 +1,22 @@ +import { z } from 'zod/v4'; +import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils'; + +export const openaiErrorDataSchema = z.object({ + error: z.object({ + message: z.string(), + + // The additional information below is handled loosely to support + // OpenAI-compatible providers that have slightly different error + // responses: + type: z.string().nullish(), + param: z.any().nullish(), + code: z.union([z.string(), z.number()]).nullish(), + }), +}); + +export type OpenAIErrorData = z.infer; + +export const openaiFailedResponseHandler = createJsonErrorResponseHandler({ + errorSchema: openaiErrorDataSchema, + errorToMessage: data => data.error.message, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-language-model-capabilities.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-language-model-capabilities.ts new file mode 100644 index 000000000..3d926d6ca --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-language-model-capabilities.ts @@ -0,0 +1,55 @@ +export type OpenAILanguageModelCapabilities = { + isReasoningModel: boolean; + systemMessageMode: 'remove' | 'system' | 'developer'; + supportsFlexProcessing: boolean; + supportsPriorityProcessing: boolean; + + /** + * Allow temperature, topP, logProbs when reasoningEffort is none. + */ + supportsNonReasoningParameters: boolean; +}; + +export function getOpenAILanguageModelCapabilities( + modelId: string, +): OpenAILanguageModelCapabilities { + const supportsFlexProcessing = + modelId.startsWith('o3') || + modelId.startsWith('o4-mini') || + (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat')); + + const supportsPriorityProcessing = + modelId.startsWith('gpt-4') || + (modelId.startsWith('gpt-5') && + !modelId.startsWith('gpt-5-nano') && + !modelId.startsWith('gpt-5-chat') && + !modelId.startsWith('gpt-5.4-nano')) || + modelId.startsWith('o3') || + modelId.startsWith('o4-mini'); + + // Use allowlist approach: only known reasoning models should use 'developer' role + // This prevents issues with fine-tuned models, third-party models, and custom models + const isReasoningModel = + modelId.startsWith('o1') || + modelId.startsWith('o3') || + modelId.startsWith('o4-mini') || + (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat')); + + // https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility + // GPT-5.1, GPT-5.2, and GPT-5.4 support temperature, topP, logProbs when reasoningEffort is none + const supportsNonReasoningParameters = + modelId.startsWith('gpt-5.1') || + modelId.startsWith('gpt-5.2') || + modelId.startsWith('gpt-5.3') || + modelId.startsWith('gpt-5.4'); + + const systemMessageMode = isReasoningModel ? 'developer' : 'system'; + + return { + supportsFlexProcessing, + supportsPriorityProcessing, + isReasoningModel, + systemMessageMode, + supportsNonReasoningParameters, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-provider.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-provider.ts new file mode 100644 index 000000000..1dd6d7609 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-provider.ts @@ -0,0 +1,270 @@ +import { + EmbeddingModelV3, + ImageModelV3, + LanguageModelV3, + ProviderV3, + SpeechModelV3, + TranscriptionModelV3, +} from '@ai-sdk/provider'; +import { + FetchFunction, + loadApiKey, + loadOptionalSetting, + withoutTrailingSlash, + withUserAgentSuffix, +} from '@ai-sdk/provider-utils'; +import { OpenAIChatLanguageModel } from './chat/openai-chat-language-model'; +import { OpenAIChatModelId } from './chat/openai-chat-options'; +import { OpenAICompletionLanguageModel } from './completion/openai-completion-language-model'; +import { OpenAICompletionModelId } from './completion/openai-completion-options'; +import { OpenAIEmbeddingModel } from './embedding/openai-embedding-model'; +import { OpenAIEmbeddingModelId } from './embedding/openai-embedding-options'; +import { OpenAIImageModel } from './image/openai-image-model'; +import { OpenAIImageModelId } from './image/openai-image-options'; +import { openaiTools } from './openai-tools'; +import { OpenAIResponsesLanguageModel } from './responses/openai-responses-language-model'; +import { OpenAIResponsesModelId } from './responses/openai-responses-options'; +import { OpenAISpeechModel } from './speech/openai-speech-model'; +import { OpenAISpeechModelId } from './speech/openai-speech-options'; +import { OpenAITranscriptionModel } from './transcription/openai-transcription-model'; +import { OpenAITranscriptionModelId } from './transcription/openai-transcription-options'; +import { VERSION } from './version'; + +export interface OpenAIProvider extends ProviderV3 { + (modelId: OpenAIResponsesModelId): LanguageModelV3; + + /** + * Creates an OpenAI model for text generation. + */ + languageModel(modelId: OpenAIResponsesModelId): LanguageModelV3; + + /** + * Creates an OpenAI chat model for text generation. + */ + chat(modelId: OpenAIChatModelId): LanguageModelV3; + + /** + * Creates an OpenAI responses API model for text generation. + */ + responses(modelId: OpenAIResponsesModelId): LanguageModelV3; + + /** + * Creates an OpenAI completion model for text generation. + */ + completion(modelId: OpenAICompletionModelId): LanguageModelV3; + + /** + * Creates a model for text embeddings. + */ + embedding(modelId: OpenAIEmbeddingModelId): EmbeddingModelV3; + + /** + * Creates a model for text embeddings. + */ + embeddingModel(modelId: OpenAIEmbeddingModelId): EmbeddingModelV3; + + /** + * @deprecated Use `embedding` instead. + */ + textEmbedding(modelId: OpenAIEmbeddingModelId): EmbeddingModelV3; + + /** + * @deprecated Use `embeddingModel` instead. + */ + textEmbeddingModel(modelId: OpenAIEmbeddingModelId): EmbeddingModelV3; + + /** + * Creates a model for image generation. + */ + image(modelId: OpenAIImageModelId): ImageModelV3; + + /** + * Creates a model for image generation. + */ + imageModel(modelId: OpenAIImageModelId): ImageModelV3; + + /** + * Creates a model for transcription. + */ + transcription(modelId: OpenAITranscriptionModelId): TranscriptionModelV3; + + /** + * Creates a model for speech generation. + */ + speech(modelId: OpenAISpeechModelId): SpeechModelV3; + + /** + * OpenAI-specific tools. + */ + tools: typeof openaiTools; +} + +export interface OpenAIProviderSettings { + /** + * Base URL for the OpenAI API calls. + */ + baseURL?: string; + + /** + * API key for authenticating requests. + */ + apiKey?: string; + + /** + * OpenAI Organization. + */ + organization?: string; + + /** + * OpenAI project. + */ + project?: string; + + /** + * Custom headers to include in the requests. + */ + headers?: Record; + + /** + * Provider name. Overrides the `openai` default name for 3rd party providers. + */ + name?: string; + + /** + * Custom fetch implementation. You can use it as a middleware to intercept requests, + * or to provide a custom fetch implementation for e.g. testing. + */ + fetch?: FetchFunction; +} + +/** + * Create an OpenAI provider instance. + */ +export function createOpenAI( + options: OpenAIProviderSettings = {}, +): OpenAIProvider { + const baseURL = + withoutTrailingSlash( + loadOptionalSetting({ + settingValue: options.baseURL, + environmentVariableName: 'OPENAI_BASE_URL', + }), + ) ?? 'https://api.openai.com/v1'; + + const providerName = options.name ?? 'openai'; + + const getHeaders = () => + withUserAgentSuffix( + { + Authorization: `Bearer ${loadApiKey({ + apiKey: options.apiKey, + environmentVariableName: 'OPENAI_API_KEY', + description: 'OpenAI', + })}`, + 'OpenAI-Organization': options.organization, + 'OpenAI-Project': options.project, + ...options.headers, + }, + `ai-sdk/openai/${VERSION}`, + ); + + const createChatModel = (modelId: OpenAIChatModelId) => + new OpenAIChatLanguageModel(modelId, { + provider: `${providerName}.chat`, + url: ({ path }) => `${baseURL}${path}`, + headers: getHeaders, + fetch: options.fetch, + }); + + const createCompletionModel = (modelId: OpenAICompletionModelId) => + new OpenAICompletionLanguageModel(modelId, { + provider: `${providerName}.completion`, + url: ({ path }) => `${baseURL}${path}`, + headers: getHeaders, + fetch: options.fetch, + }); + + const createEmbeddingModel = (modelId: OpenAIEmbeddingModelId) => + new OpenAIEmbeddingModel(modelId, { + provider: `${providerName}.embedding`, + url: ({ path }) => `${baseURL}${path}`, + headers: getHeaders, + fetch: options.fetch, + }); + + const createImageModel = (modelId: OpenAIImageModelId) => + new OpenAIImageModel(modelId, { + provider: `${providerName}.image`, + url: ({ path }) => `${baseURL}${path}`, + headers: getHeaders, + fetch: options.fetch, + }); + + const createTranscriptionModel = (modelId: OpenAITranscriptionModelId) => + new OpenAITranscriptionModel(modelId, { + provider: `${providerName}.transcription`, + url: ({ path }) => `${baseURL}${path}`, + headers: getHeaders, + fetch: options.fetch, + }); + + const createSpeechModel = (modelId: OpenAISpeechModelId) => + new OpenAISpeechModel(modelId, { + provider: `${providerName}.speech`, + url: ({ path }) => `${baseURL}${path}`, + headers: getHeaders, + fetch: options.fetch, + }); + + const createLanguageModel = (modelId: OpenAIResponsesModelId) => { + if (new.target) { + throw new Error( + 'The OpenAI model function cannot be called with the new keyword.', + ); + } + + return createResponsesModel(modelId); + }; + + const createResponsesModel = (modelId: OpenAIResponsesModelId) => { + return new OpenAIResponsesLanguageModel(modelId, { + provider: `${providerName}.responses`, + url: ({ path }) => `${baseURL}${path}`, + headers: getHeaders, + fetch: options.fetch, + fileIdPrefixes: ['file-'], + }); + }; + + const provider = function (modelId: OpenAIResponsesModelId) { + return createLanguageModel(modelId); + }; + + provider.specificationVersion = 'v3' as const; + provider.languageModel = createLanguageModel; + provider.chat = createChatModel; + provider.completion = createCompletionModel; + provider.responses = createResponsesModel; + provider.embedding = createEmbeddingModel; + provider.embeddingModel = createEmbeddingModel; + provider.textEmbedding = createEmbeddingModel; + provider.textEmbeddingModel = createEmbeddingModel; + + provider.image = createImageModel; + provider.imageModel = createImageModel; + + provider.transcription = createTranscriptionModel; + provider.transcriptionModel = createTranscriptionModel; + + provider.speech = createSpeechModel; + provider.speechModel = createSpeechModel; + + provider.tools = openaiTools; + + return provider as OpenAIProvider; +} + +/** + * Default OpenAI provider instance. + */ +export const openai = createOpenAI(); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-tools.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-tools.ts new file mode 100644 index 000000000..c6192938b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/openai-tools.ts @@ -0,0 +1,138 @@ +import { applyPatch } from './tool/apply-patch'; +import { codeInterpreter } from './tool/code-interpreter'; +import { customTool } from './tool/custom'; +import { fileSearch } from './tool/file-search'; +import { imageGeneration } from './tool/image-generation'; +import { localShell } from './tool/local-shell'; +import { shell } from './tool/shell'; +import { toolSearch } from './tool/tool-search'; +import { webSearch } from './tool/web-search'; +import { webSearchPreview } from './tool/web-search-preview'; +import { mcp } from './tool/mcp'; + +export const openaiTools = { + /** + * The apply_patch tool lets GPT-5.1 create, update, and delete files in your + * codebase using structured diffs. Instead of just suggesting edits, the model + * emits patch operations that your application applies and then reports back on, + * enabling iterative, multi-step code editing workflows. + * + */ + applyPatch, + + /** + * Custom tools let callers constrain model output to a grammar (regex or + * Lark syntax). The model returns a `custom_tool_call` output item whose + * `input` field is a string matching the specified grammar. + * + * @param name - The name of the custom tool. + * @param description - An optional description of the tool. + * @param format - The output format constraint (grammar type, syntax, and definition). + */ + customTool, + + /** + * The Code Interpreter tool allows models to write and run Python code in a + * sandboxed environment to solve complex problems in domains like data analysis, + * coding, and math. + * + * @param container - The container to use for the code interpreter. + */ + codeInterpreter, + + /** + * File search is a tool available in the Responses API. It enables models to + * retrieve information in a knowledge base of previously uploaded files through + * semantic and keyword search. + * + * @param vectorStoreIds - The vector store IDs to use for the file search. + * @param maxNumResults - The maximum number of results to return. + * @param ranking - The ranking options to use for the file search. + * @param filters - The filters to use for the file search. + */ + fileSearch, + + /** + * The image generation tool allows you to generate images using a text prompt, + * and optionally image inputs. It leverages the GPT Image model, + * and automatically optimizes text inputs for improved performance. + * + * @param background - Background type for the generated image. One of 'auto', 'opaque', or 'transparent'. + * @param inputFidelity - Input fidelity for the generated image. One of 'low' or 'high'. + * @param inputImageMask - Optional mask for inpainting. Contains fileId and/or imageUrl. + * @param model - The image generation model to use. Default: gpt-image-1. + * @param moderation - Moderation level for the generated image. Default: 'auto'. + * @param outputCompression - Compression level for the output image (0-100). + * @param outputFormat - The output format of the generated image. One of 'png', 'jpeg', or 'webp'. + * @param partialImages - Number of partial images to generate in streaming mode (0-3). + * @param quality - The quality of the generated image. One of 'auto', 'low', 'medium', or 'high'. + * @param size - The size of the generated image. One of 'auto', '1024x1024', '1024x1536', or '1536x1024'. + */ + imageGeneration, + + /** + * Local shell is a tool that allows agents to run shell commands locally + * on a machine you or the user provides. + * + * Supported models: `gpt-5-codex` + */ + localShell, + + /** + * The shell tool allows the model to interact with your local computer through + * a controlled command-line interface. The model proposes shell commands; your + * integration executes them and returns the outputs. + * + * Available through the Responses API for use with GPT-5.1. + * + * WARNING: Running arbitrary shell commands can be dangerous. Always sandbox + * execution or add strict allow-/deny-lists before forwarding a command to + * the system shell. + */ + shell, + + /** + * Web search allows models to access up-to-date information from the internet + * and provide answers with sourced citations. + * + * @param searchContextSize - The search context size to use for the web search. + * @param userLocation - The user location to use for the web search. + */ + webSearchPreview, + + /** + * Web search allows models to access up-to-date information from the internet + * and provide answers with sourced citations. + * + * @param filters - The filters to use for the web search. + * @param searchContextSize - The search context size to use for the web search. + * @param userLocation - The user location to use for the web search. + */ + webSearch, + + /** + * MCP (Model Context Protocol) allows models to call tools exposed by + * remote MCP servers or service connectors. + * + * @param serverLabel - Label to identify the MCP server. + * @param allowedTools - Allowed tool names or filter object. + * @param authorization - OAuth access token for the MCP server/connector. + * @param connectorId - Identifier for a service connector. + * @param headers - Optional headers to include in MCP requests. + * // param requireApproval - Approval policy ('always'|'never'|filter object). (Removed - always 'never') + * @param serverDescription - Optional description of the server. + * @param serverUrl - URL for the MCP server. + */ + mcp, + + /** + * Tool search allows the model to dynamically search for and load deferred + * tools into the model's context as needed. This helps reduce overall token + * usage, cost, and latency by only loading tools when the model needs them. + * + * To use tool search, mark functions or namespaces with `defer_loading: true` + * in the tools array. The model will use tool search to load these tools + * when it determines they are needed. + */ + toolSearch, +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/convert-openai-responses-usage.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/convert-openai-responses-usage.ts new file mode 100644 index 000000000..b40b9dec6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/convert-openai-responses-usage.ts @@ -0,0 +1,53 @@ +import { LanguageModelV3Usage } from '@ai-sdk/provider'; + +export type OpenAIResponsesUsage = { + input_tokens: number; + output_tokens: number; + input_tokens_details?: { + cached_tokens?: number | null; + } | null; + output_tokens_details?: { + reasoning_tokens?: number | null; + } | null; +}; + +export function convertOpenAIResponsesUsage( + usage: OpenAIResponsesUsage | undefined | null, +): LanguageModelV3Usage { + if (usage == null) { + return { + inputTokens: { + total: undefined, + noCache: undefined, + cacheRead: undefined, + cacheWrite: undefined, + }, + outputTokens: { + total: undefined, + text: undefined, + reasoning: undefined, + }, + raw: undefined, + }; + } + + const inputTokens = usage.input_tokens; + const outputTokens = usage.output_tokens; + const cachedTokens = usage.input_tokens_details?.cached_tokens ?? 0; + const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? 0; + + return { + inputTokens: { + total: inputTokens, + noCache: inputTokens - cachedTokens, + cacheRead: cachedTokens, + cacheWrite: undefined, + }, + outputTokens: { + total: outputTokens, + text: outputTokens - reasoningTokens, + reasoning: reasoningTokens, + }, + raw: usage, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/convert-to-openai-responses-input.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/convert-to-openai-responses-input.ts new file mode 100644 index 000000000..712a403bd --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/convert-to-openai-responses-input.ts @@ -0,0 +1,839 @@ +import { + LanguageModelV3Prompt, + LanguageModelV3ToolApprovalResponsePart, + SharedV3Warning, + UnsupportedFunctionalityError, +} from '@ai-sdk/provider'; +import { + convertToBase64, + isNonNullable, + parseJSON, + parseProviderOptions, + ToolNameMapping, + validateTypes, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; +import { + applyPatchInputSchema, + applyPatchOutputSchema, +} from '../tool/apply-patch'; +import { + localShellInputSchema, + localShellOutputSchema, +} from '../tool/local-shell'; +import { shellInputSchema, shellOutputSchema } from '../tool/shell'; +import { + toolSearchInputSchema, + toolSearchOutputSchema, +} from '../tool/tool-search'; +import { + OpenAIResponsesCustomToolCallOutput, + OpenAIResponsesFunctionCallOutput, + OpenAIResponsesInput, + OpenAIResponsesReasoning, +} from './openai-responses-api'; + +/** + * Check if a string is a file ID based on the given prefixes + * Returns false if prefixes is undefined (disables file ID detection) + */ +function isFileId(data: string, prefixes?: readonly string[]): boolean { + if (!prefixes) return false; + return prefixes.some(prefix => data.startsWith(prefix)); +} + +export async function convertToOpenAIResponsesInput({ + prompt, + toolNameMapping, + systemMessageMode, + providerOptionsName, + fileIdPrefixes, + store, + hasConversation = false, + hasLocalShellTool = false, + hasShellTool = false, + hasApplyPatchTool = false, + customProviderToolNames, +}: { + prompt: LanguageModelV3Prompt; + toolNameMapping: ToolNameMapping; + systemMessageMode: 'system' | 'developer' | 'remove'; + providerOptionsName: string; + fileIdPrefixes?: readonly string[]; + store: boolean; + hasConversation?: boolean; // when true, skip assistant messages that already have item IDs + hasLocalShellTool?: boolean; + hasShellTool?: boolean; + hasApplyPatchTool?: boolean; + customProviderToolNames?: Set; +}): Promise<{ + input: OpenAIResponsesInput; + warnings: Array; +}> { + let input: OpenAIResponsesInput = []; + const warnings: Array = []; + const processedApprovalIds = new Set(); + + for (const { role, content } of prompt) { + switch (role) { + case 'system': { + switch (systemMessageMode) { + case 'system': { + input.push({ role: 'system', content }); + break; + } + case 'developer': { + input.push({ role: 'developer', content }); + break; + } + case 'remove': { + warnings.push({ + type: 'other', + message: 'system messages are removed for this model', + }); + break; + } + default: { + const _exhaustiveCheck: never = systemMessageMode; + throw new Error( + `Unsupported system message mode: ${_exhaustiveCheck}`, + ); + } + } + break; + } + + case 'user': { + input.push({ + role: 'user', + content: content.map((part, index) => { + switch (part.type) { + case 'text': { + return { type: 'input_text', text: part.text }; + } + case 'file': { + if (part.mediaType.startsWith('image/')) { + const mediaType = + part.mediaType === 'image/*' + ? 'image/jpeg' + : part.mediaType; + + return { + type: 'input_image', + ...(part.data instanceof URL + ? { image_url: part.data.toString() } + : typeof part.data === 'string' && + isFileId(part.data, fileIdPrefixes) + ? { file_id: part.data } + : { + image_url: `data:${mediaType};base64,${convertToBase64(part.data)}`, + }), + detail: + part.providerOptions?.[providerOptionsName]?.imageDetail, + }; + } else if (part.mediaType === 'application/pdf') { + if (part.data instanceof URL) { + return { + type: 'input_file', + file_url: part.data.toString(), + }; + } + return { + type: 'input_file', + ...(typeof part.data === 'string' && + isFileId(part.data, fileIdPrefixes) + ? { file_id: part.data } + : { + filename: part.filename ?? `part-${index}.pdf`, + file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`, + }), + }; + } else { + throw new UnsupportedFunctionalityError({ + functionality: `file part media type ${part.mediaType}`, + }); + } + } + } + }), + }); + + break; + } + + case 'assistant': { + const reasoningMessages: Record = {}; + + for (const part of content) { + switch (part.type) { + case 'text': { + const providerOpts = part.providerOptions?.[providerOptionsName]; + const id = providerOpts?.itemId as string | undefined; + const phase = providerOpts?.phase as + | 'commentary' + | 'final_answer' + | null + | undefined; + + // when using conversation, skip items that already exist in the conversation context to avoid "Duplicate item found" errors + if (hasConversation && id != null) { + break; + } + + // item references reduce the payload size + if (store && id != null) { + input.push({ type: 'item_reference', id }); + break; + } + + input.push({ + role: 'assistant', + content: [{ type: 'output_text', text: part.text }], + id, + ...(phase != null && { phase }), + }); + + break; + } + case 'tool-call': { + const id = (part.providerOptions?.[providerOptionsName]?.itemId ?? + ( + part as { + providerMetadata?: { + [providerOptionsName]?: { itemId?: string }; + }; + } + ).providerMetadata?.[providerOptionsName]?.itemId) as + | string + | undefined; + + if (hasConversation && id != null) { + break; + } + + const resolvedToolName = toolNameMapping.toProviderToolName( + part.toolName, + ); + + if (resolvedToolName === 'tool_search') { + if (store && id != null) { + input.push({ type: 'item_reference', id }); + break; + } + + const parsedInput = + typeof part.input === 'string' + ? await parseJSON({ + text: part.input, + schema: toolSearchInputSchema, + }) + : await validateTypes({ + value: part.input, + schema: toolSearchInputSchema, + }); + + const execution = + parsedInput.call_id != null ? 'client' : 'server'; + + input.push({ + type: 'tool_search_call', + id: id ?? part.toolCallId, + execution, + call_id: parsedInput.call_id ?? null, + status: 'completed', + arguments: parsedInput.arguments, + }); + break; + } + + if (part.providerExecuted) { + if (store && id != null) { + input.push({ type: 'item_reference', id }); + } + break; + } + + if (store && id != null) { + input.push({ type: 'item_reference', id }); + break; + } + + if (hasLocalShellTool && resolvedToolName === 'local_shell') { + const parsedInput = await validateTypes({ + value: part.input, + schema: localShellInputSchema, + }); + input.push({ + type: 'local_shell_call', + call_id: part.toolCallId, + id: id!, + action: { + type: 'exec', + command: parsedInput.action.command, + timeout_ms: parsedInput.action.timeoutMs, + user: parsedInput.action.user, + working_directory: parsedInput.action.workingDirectory, + env: parsedInput.action.env, + }, + }); + + break; + } + + if (hasShellTool && resolvedToolName === 'shell') { + const parsedInput = await validateTypes({ + value: part.input, + schema: shellInputSchema, + }); + input.push({ + type: 'shell_call', + call_id: part.toolCallId, + id: id!, + status: 'completed', + action: { + commands: parsedInput.action.commands, + timeout_ms: parsedInput.action.timeoutMs, + max_output_length: parsedInput.action.maxOutputLength, + }, + }); + + break; + } + + if (hasApplyPatchTool && resolvedToolName === 'apply_patch') { + const parsedInput = await validateTypes({ + value: part.input, + schema: applyPatchInputSchema, + }); + input.push({ + type: 'apply_patch_call', + call_id: parsedInput.callId, + id: id!, + status: 'completed', + operation: parsedInput.operation, + }); + + break; + } + + if (customProviderToolNames?.has(resolvedToolName)) { + input.push({ + type: 'custom_tool_call', + call_id: part.toolCallId, + name: resolvedToolName, + input: + typeof part.input === 'string' + ? part.input + : JSON.stringify(part.input), + id, + }); + break; + } + + input.push({ + type: 'function_call', + call_id: part.toolCallId, + name: resolvedToolName, + arguments: JSON.stringify(part.input), + id, + }); + break; + } + + // assistant tool result parts are from provider-executed tools: + case 'tool-result': { + // Skip execution-denied results - these are synthetic results from denied + // approvals and have no corresponding item in OpenAI's store. + // Check both the direct type and if it was transformed to json with execution-denied inside + if ( + part.output.type === 'execution-denied' || + (part.output.type === 'json' && + typeof part.output.value === 'object' && + part.output.value != null && + 'type' in part.output.value && + part.output.value.type === 'execution-denied') + ) { + break; + } + + if (hasConversation) { + break; + } + + const resolvedResultToolName = toolNameMapping.toProviderToolName( + part.toolName, + ); + + if (resolvedResultToolName === 'tool_search') { + const itemId = + ( + part.providerOptions?.[providerOptionsName] as + | { itemId?: string } + | undefined + )?.itemId ?? part.toolCallId; + + if (store) { + input.push({ type: 'item_reference', id: itemId }); + } else if (part.output.type === 'json') { + const parsedOutput = await validateTypes({ + value: part.output.value, + schema: toolSearchOutputSchema, + }); + + input.push({ + type: 'tool_search_output', + id: itemId, + execution: 'server', + call_id: null, + status: 'completed', + tools: parsedOutput.tools, + }); + } + + break; + } + + /* + * Shell tool results are separate output items (shell_call_output) + * with their own item IDs distinct from the shell_call's item ID. + * Since the pipeline only preserves the shell_call's item ID in + * callProviderMetadata, we reconstruct the full shell_call_output + * instead of using an item_reference with the wrong ID. + */ + if (hasShellTool && resolvedResultToolName === 'shell') { + if (part.output.type === 'json') { + const parsedOutput = await validateTypes({ + value: part.output.value, + schema: shellOutputSchema, + }); + input.push({ + type: 'shell_call_output', + call_id: part.toolCallId, + output: parsedOutput.output.map(item => ({ + stdout: item.stdout, + stderr: item.stderr, + outcome: + item.outcome.type === 'timeout' + ? { type: 'timeout' as const } + : { + type: 'exit' as const, + exit_code: item.outcome.exitCode, + }, + })), + }); + } + break; + } + + if (store) { + const itemId = + ( + part.providerOptions?.[providerOptionsName] as + | { itemId?: string } + | undefined + )?.itemId ?? part.toolCallId; + input.push({ type: 'item_reference', id: itemId }); + } else { + warnings.push({ + type: 'other', + message: `Results for OpenAI tool ${part.toolName} are not sent to the API when store is false`, + }); + } + + break; + } + + case 'reasoning': { + const providerOptions = await parseProviderOptions({ + provider: providerOptionsName, + providerOptions: part.providerOptions, + schema: openaiResponsesReasoningProviderOptionsSchema, + }); + + const reasoningId = providerOptions?.itemId; + + if (hasConversation && reasoningId != null) { + break; + } + + if (reasoningId != null) { + const reasoningMessage = reasoningMessages[reasoningId]; + + if (store) { + // use item references to refer to reasoning (single reference) + // when the first part is encountered + if (reasoningMessage === undefined) { + input.push({ type: 'item_reference', id: reasoningId }); + + // store unused reasoning message to mark id as used + reasoningMessages[reasoningId] = { + type: 'reasoning', + id: reasoningId, + summary: [], + }; + } + } else { + const summaryParts: Array<{ + type: 'summary_text'; + text: string; + }> = []; + + if (part.text.length > 0) { + summaryParts.push({ + type: 'summary_text', + text: part.text, + }); + } else if (reasoningMessage !== undefined) { + warnings.push({ + type: 'other', + message: `Cannot append empty reasoning part to existing reasoning sequence. Skipping reasoning part: ${JSON.stringify(part)}.`, + }); + } + + if (reasoningMessage === undefined) { + reasoningMessages[reasoningId] = { + type: 'reasoning', + id: reasoningId, + encrypted_content: + providerOptions?.reasoningEncryptedContent, + summary: summaryParts, + }; + input.push(reasoningMessages[reasoningId]); + } else { + reasoningMessage.summary.push(...summaryParts); + + // updated encrypted content to enable setting it in the last summary part: + if (providerOptions?.reasoningEncryptedContent != null) { + reasoningMessage.encrypted_content = + providerOptions.reasoningEncryptedContent; + } + } + } + } else { + // No itemId — fall back to encrypted_content if available. + // The OpenAI Responses API accepts reasoning items without an + // id when encrypted_content is provided, enabling multi-turn + // reasoning even when server-side item persistence is not used + // or when itemId has been stripped from providerOptions. + const encryptedContent = + providerOptions?.reasoningEncryptedContent; + + if (encryptedContent != null) { + const summaryParts: Array<{ + type: 'summary_text'; + text: string; + }> = []; + if (part.text.length > 0) { + summaryParts.push({ + type: 'summary_text', + text: part.text, + }); + } + input.push({ + type: 'reasoning', + encrypted_content: encryptedContent, + summary: summaryParts, + }); + } else { + warnings.push({ + type: 'other', + message: `Non-OpenAI reasoning parts are not supported. Skipping reasoning part: ${JSON.stringify(part)}.`, + }); + } + } + break; + } + } + } + + break; + } + + case 'tool': { + for (const part of content) { + if (part.type === 'tool-approval-response') { + const approvalResponse = + part as LanguageModelV3ToolApprovalResponsePart; + + if (processedApprovalIds.has(approvalResponse.approvalId)) { + continue; + } + processedApprovalIds.add(approvalResponse.approvalId); + + if (store) { + input.push({ + type: 'item_reference', + id: approvalResponse.approvalId, + }); + } + + input.push({ + type: 'mcp_approval_response', + approval_request_id: approvalResponse.approvalId, + approve: approvalResponse.approved, + }); + continue; + } + + const output = part.output; + + // Skip execution-denied with approvalId - already handled via tool-approval-response + if (output.type === 'execution-denied') { + const approvalId = ( + output.providerOptions?.openai as { approvalId?: string } + )?.approvalId; + + if (approvalId) { + continue; + } + } + + const resolvedToolName = toolNameMapping.toProviderToolName( + part.toolName, + ); + + if (resolvedToolName === 'tool_search' && output.type === 'json') { + const parsedOutput = await validateTypes({ + value: output.value, + schema: toolSearchOutputSchema, + }); + + input.push({ + type: 'tool_search_output', + execution: 'client', + call_id: part.toolCallId, + status: 'completed', + tools: parsedOutput.tools, + }); + continue; + } + + if ( + hasLocalShellTool && + resolvedToolName === 'local_shell' && + output.type === 'json' + ) { + const parsedOutput = await validateTypes({ + value: output.value, + schema: localShellOutputSchema, + }); + + input.push({ + type: 'local_shell_call_output', + call_id: part.toolCallId, + output: parsedOutput.output, + }); + continue; + } + + if ( + hasShellTool && + resolvedToolName === 'shell' && + output.type === 'json' + ) { + const parsedOutput = await validateTypes({ + value: output.value, + schema: shellOutputSchema, + }); + + input.push({ + type: 'shell_call_output', + call_id: part.toolCallId, + output: parsedOutput.output.map(item => ({ + stdout: item.stdout, + stderr: item.stderr, + outcome: + item.outcome.type === 'timeout' + ? { type: 'timeout' as const } + : { + type: 'exit' as const, + exit_code: item.outcome.exitCode, + }, + })), + }); + continue; + } + + if ( + hasApplyPatchTool && + part.toolName === 'apply_patch' && + output.type === 'json' + ) { + const parsedOutput = await validateTypes({ + value: output.value, + schema: applyPatchOutputSchema, + }); + + input.push({ + type: 'apply_patch_call_output', + call_id: part.toolCallId, + status: parsedOutput.status, + output: parsedOutput.output, + }); + continue; + } + + if (customProviderToolNames?.has(resolvedToolName)) { + let outputValue: OpenAIResponsesCustomToolCallOutput['output']; + switch (output.type) { + case 'text': + case 'error-text': + outputValue = output.value; + break; + case 'execution-denied': + outputValue = output.reason ?? 'Tool execution denied.'; + break; + case 'json': + case 'error-json': + outputValue = JSON.stringify(output.value); + break; + case 'content': + outputValue = output.value + .map(item => { + switch (item.type) { + case 'text': + return { type: 'input_text' as const, text: item.text }; + case 'image-data': + return { + type: 'input_image' as const, + image_url: `data:${item.mediaType};base64,${item.data}`, + }; + case 'image-url': + return { + type: 'input_image' as const, + image_url: item.url, + }; + case 'file-data': + return { + type: 'input_file' as const, + filename: item.filename ?? 'data', + file_data: `data:${item.mediaType};base64,${item.data}`, + }; + default: + warnings.push({ + type: 'other', + message: `unsupported custom tool content part type: ${item.type}`, + }); + return undefined; + } + }) + .filter(isNonNullable); + break; + default: + outputValue = ''; + } + input.push({ + type: 'custom_tool_call_output', + call_id: part.toolCallId, + output: outputValue, + } satisfies OpenAIResponsesCustomToolCallOutput); + continue; + } + + let contentValue: OpenAIResponsesFunctionCallOutput['output']; + switch (output.type) { + case 'text': + case 'error-text': + contentValue = output.value; + break; + case 'execution-denied': + contentValue = output.reason ?? 'Tool execution denied.'; + break; + case 'json': + case 'error-json': + contentValue = JSON.stringify(output.value); + break; + case 'content': + contentValue = output.value + .map(item => { + switch (item.type) { + case 'text': { + return { type: 'input_text' as const, text: item.text }; + } + + case 'image-data': { + return { + type: 'input_image' as const, + image_url: `data:${item.mediaType};base64,${item.data}`, + }; + } + + case 'image-url': { + return { + type: 'input_image' as const, + image_url: item.url, + }; + } + + case 'file-data': { + return { + type: 'input_file' as const, + filename: item.filename ?? 'data', + file_data: `data:${item.mediaType};base64,${item.data}`, + }; + } + + default: { + warnings.push({ + type: 'other', + message: `unsupported tool content part type: ${item.type}`, + }); + return undefined; + } + } + }) + .filter(isNonNullable); + break; + } + + input.push({ + type: 'function_call_output', + call_id: part.toolCallId, + output: contentValue, + }); + } + + break; + } + + default: { + const _exhaustiveCheck: never = role; + throw new Error(`Unsupported role: ${_exhaustiveCheck}`); + } + } + } + + // when store is false, remove reasoning parts without encrypted content + if ( + !store && + input.some( + item => + 'type' in item && + item.type === 'reasoning' && + item.encrypted_content == null, + ) + ) { + warnings.push({ + type: 'other', + message: + 'Reasoning parts without encrypted content are not supported when store is false. Skipping reasoning parts.', + }); + input = input.filter( + item => + !('type' in item) || + item.type !== 'reasoning' || + item.encrypted_content != null, + ); + } + + return { input, warnings }; +} + +const openaiResponsesReasoningProviderOptionsSchema = z.object({ + itemId: z.string().nullish(), + reasoningEncryptedContent: z.string().nullish(), +}); + +export type OpenAIResponsesReasoningProviderOptions = z.infer< + typeof openaiResponsesReasoningProviderOptionsSchema +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/map-openai-responses-finish-reason.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/map-openai-responses-finish-reason.ts new file mode 100644 index 000000000..f925d4992 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/map-openai-responses-finish-reason.ts @@ -0,0 +1,22 @@ +import { LanguageModelV3FinishReason } from '@ai-sdk/provider'; + +export function mapOpenAIResponseFinishReason({ + finishReason, + hasFunctionCall, +}: { + finishReason: string | null | undefined; + // flag that checks if there have been client-side tool calls (not executed by openai) + hasFunctionCall: boolean; +}): LanguageModelV3FinishReason['unified'] { + switch (finishReason) { + case undefined: + case null: + return hasFunctionCall ? 'tool-calls' : 'stop'; + case 'max_output_tokens': + return 'length'; + case 'content_filter': + return 'content-filter'; + default: + return hasFunctionCall ? 'tool-calls' : 'other'; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-api.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-api.ts new file mode 100644 index 000000000..511b000ff --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-api.ts @@ -0,0 +1,1371 @@ +import { JSONObject, JSONSchema7, JSONValue } from '@ai-sdk/provider'; +import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +const jsonValueSchema: z.ZodType = z.lazy(() => + z.union([ + z.string(), + z.number(), + z.boolean(), + z.null(), + z.array(jsonValueSchema), + z.record(z.string(), jsonValueSchema.optional()), + ]), +); + +export type OpenAIResponsesInput = Array; + +export type OpenAIResponsesInputItem = + | OpenAIResponsesSystemMessage + | OpenAIResponsesUserMessage + | OpenAIResponsesAssistantMessage + | OpenAIResponsesFunctionCall + | OpenAIResponsesFunctionCallOutput + | OpenAIResponsesCustomToolCall + | OpenAIResponsesCustomToolCallOutput + | OpenAIResponsesMcpApprovalResponse + | OpenAIResponsesComputerCall + | OpenAIResponsesLocalShellCall + | OpenAIResponsesLocalShellCallOutput + | OpenAIResponsesShellCall + | OpenAIResponsesShellCallOutput + | OpenAIResponsesApplyPatchCall + | OpenAIResponsesApplyPatchCallOutput + | OpenAIResponsesToolSearchCall + | OpenAIResponsesToolSearchOutput + | OpenAIResponsesReasoning + | OpenAIResponsesItemReference; + +export type OpenAIResponsesIncludeValue = + | 'web_search_call.action.sources' + | 'code_interpreter_call.outputs' + | 'computer_call_output.output.image_url' + | 'file_search_call.results' + | 'message.input_image.image_url' + | 'message.output_text.logprobs' + | 'reasoning.encrypted_content'; + +export type OpenAIResponsesIncludeOptions = + | Array + | undefined + | null; + +export type OpenAIResponsesApplyPatchOperationDiffDeltaChunk = { + type: 'response.apply_patch_call_operation_diff.delta'; + item_id: string; + output_index: number; + delta: string; + obfuscation?: string | null; +}; + +export type OpenAIResponsesApplyPatchOperationDiffDoneChunk = { + type: 'response.apply_patch_call_operation_diff.done'; + item_id: string; + output_index: number; + diff: string; +}; + +export type OpenAIResponsesSystemMessage = { + role: 'system' | 'developer'; + content: string; +}; + +export type OpenAIResponsesUserMessage = { + role: 'user'; + content: Array< + | { type: 'input_text'; text: string } + | { type: 'input_image'; image_url: string } + | { type: 'input_image'; file_id: string } + | { type: 'input_file'; file_url: string } + | { type: 'input_file'; filename: string; file_data: string } + | { type: 'input_file'; file_id: string } + >; +}; + +export type OpenAIResponsesAssistantMessage = { + role: 'assistant'; + content: Array<{ type: 'output_text'; text: string }>; + id?: string; + phase?: 'commentary' | 'final_answer' | null; +}; + +export type OpenAIResponsesFunctionCall = { + type: 'function_call'; + call_id: string; + name: string; + arguments: string; + id?: string; +}; + +export type OpenAIResponsesFunctionCallOutput = { + type: 'function_call_output'; + call_id: string; + output: + | string + | Array< + | { type: 'input_text'; text: string } + | { type: 'input_image'; image_url: string } + | { type: 'input_file'; filename: string; file_data: string } + >; +}; + +export type OpenAIResponsesCustomToolCall = { + type: 'custom_tool_call'; + id?: string; + call_id: string; + name: string; + input: string; +}; + +export type OpenAIResponsesCustomToolCallOutput = { + type: 'custom_tool_call_output'; + call_id: string; + output: OpenAIResponsesFunctionCallOutput['output']; +}; + +export type OpenAIResponsesMcpApprovalResponse = { + type: 'mcp_approval_response'; + approval_request_id: string; + approve: boolean; +}; + +export type OpenAIResponsesComputerCall = { + type: 'computer_call'; + id: string; + status?: string; +}; + +export type OpenAIResponsesLocalShellCall = { + type: 'local_shell_call'; + id: string; + call_id: string; + action: { + type: 'exec'; + command: string[]; + timeout_ms?: number; + user?: string; + working_directory?: string; + env?: Record; + }; +}; + +export type OpenAIResponsesLocalShellCallOutput = { + type: 'local_shell_call_output'; + call_id: string; + output: string; +}; + +/** + * Official OpenAI API Specifications: https://platform.openai.com/docs/api-reference/responses/object#responses-object-output-shell_tool_call + */ +export type OpenAIResponsesShellCall = { + type: 'shell_call'; + id: string; + call_id: string; + status: 'in_progress' | 'completed' | 'incomplete'; + action: { + commands: string[]; + timeout_ms?: number; + max_output_length?: number; + }; +}; + +export type OpenAIResponsesShellCallOutput = { + type: 'shell_call_output'; + id?: string; + call_id: string; + status?: 'in_progress' | 'completed' | 'incomplete'; + max_output_length?: number | null; + output: Array<{ + stdout: string; + stderr: string; + outcome: { type: 'timeout' } | { type: 'exit'; exit_code: number }; + }>; +}; + +export type OpenAIResponsesApplyPatchCall = { + type: 'apply_patch_call'; + id?: string; + call_id: string; + status: 'in_progress' | 'completed'; + operation: + | { + type: 'create_file'; + path: string; + diff: string; + } + | { + type: 'delete_file'; + path: string; + } + | { + type: 'update_file'; + path: string; + diff: string; + }; +}; + +export type OpenAIResponsesApplyPatchCallOutput = { + type: 'apply_patch_call_output'; + call_id: string; + status: 'completed' | 'failed'; + output?: string; +}; + +export type OpenAIResponsesToolSearchCall = { + type: 'tool_search_call'; + id: string; + execution: 'server' | 'client'; + call_id: string | null; + status: 'in_progress' | 'completed' | 'incomplete'; + arguments: unknown; +}; + +export type OpenAIResponsesToolSearchOutput = { + type: 'tool_search_output'; + id?: string; + execution: 'server' | 'client'; + call_id: string | null; + status: 'in_progress' | 'completed' | 'incomplete'; + tools: Array; +}; + +export type OpenAIResponsesItemReference = { + type: 'item_reference'; + id: string; +}; + +/** + * A filter used to compare a specified attribute key to a given value using a defined comparison operation. + */ +export type OpenAIResponsesFileSearchToolComparisonFilter = { + /** + * The key to compare against the value. + */ + key: string; + + /** + * Specifies the comparison operator: eq, ne, gt, gte, lt, lte, in, nin. + */ + type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'nin'; + + /** + * The value to compare against the attribute key; supports string, number, boolean, or array of string types. + */ + value: string | number | boolean | string[]; +}; + +/** + * Combine multiple filters using and or or. + */ +export type OpenAIResponsesFileSearchToolCompoundFilter = { + /** + * Type of operation: and or or. + */ + type: 'and' | 'or'; + + /** + * Array of filters to combine. Items can be ComparisonFilter or CompoundFilter. + */ + filters: Array< + | OpenAIResponsesFileSearchToolComparisonFilter + | OpenAIResponsesFileSearchToolCompoundFilter + >; +}; + +export type OpenAIResponsesTool = + | { + type: 'function'; + name: string; + description: string | undefined; + parameters: JSONSchema7; + strict?: boolean; + defer_loading?: boolean; + } + | { + type: 'apply_patch'; + } + | { + type: 'web_search'; + external_web_access: boolean | undefined; + filters: { allowed_domains: string[] | undefined } | undefined; + search_context_size: 'low' | 'medium' | 'high' | undefined; + user_location: + | { + type: 'approximate'; + city?: string; + country?: string; + region?: string; + timezone?: string; + } + | undefined; + } + | { + type: 'web_search_preview'; + search_context_size: 'low' | 'medium' | 'high' | undefined; + user_location: + | { + type: 'approximate'; + city?: string; + country?: string; + region?: string; + timezone?: string; + } + | undefined; + } + | { + type: 'code_interpreter'; + container: string | { type: 'auto'; file_ids: string[] | undefined }; + } + | { + type: 'file_search'; + vector_store_ids: string[]; + max_num_results: number | undefined; + ranking_options: + | { ranker?: string; score_threshold?: number } + | undefined; + filters: + | OpenAIResponsesFileSearchToolComparisonFilter + | OpenAIResponsesFileSearchToolCompoundFilter + | undefined; + } + | { + type: 'image_generation'; + background: 'auto' | 'opaque' | 'transparent' | undefined; + input_fidelity: 'low' | 'high' | undefined; + input_image_mask: + | { + file_id: string | undefined; + image_url: string | undefined; + } + | undefined; + model: string | undefined; + moderation: 'auto' | undefined; + output_compression: number | undefined; + output_format: 'png' | 'jpeg' | 'webp' | undefined; + partial_images: number | undefined; + quality: 'auto' | 'low' | 'medium' | 'high' | undefined; + size: 'auto' | '1024x1024' | '1024x1536' | '1536x1024' | undefined; + } + + /** + * Official OpenAI API Specifications: https://platform.openai.com/docs/api-reference/responses/create#responses_create-tools-mcp_tool + */ + | { + type: 'mcp'; + server_label: string; + allowed_tools: + | string[] + | { + read_only?: boolean; + tool_names?: string[]; + } + | undefined; + authorization: string | undefined; + connector_id: string | undefined; + headers: Record | undefined; + require_approval: + | 'always' + | 'never' + | { + never?: { tool_names?: string[] }; + } + | undefined; + server_description: string | undefined; + server_url: string | undefined; + } + | { + type: 'custom'; + name: string; + description?: string; + format?: + | { + type: 'grammar'; + syntax: 'regex' | 'lark'; + definition: string; + } + | { + type: 'text'; + }; + } + | { + type: 'local_shell'; + } + | { + type: 'shell'; + environment?: + | { + type: 'container_auto'; + file_ids?: string[]; + memory_limit?: '1g' | '4g' | '16g' | '64g'; + network_policy?: + | { type: 'disabled' } + | { + type: 'allowlist'; + allowed_domains: string[]; + domain_secrets?: Array<{ + domain: string; + name: string; + value: string; + }>; + }; + skills?: Array< + | { + type: 'skill_reference'; + skill_id: string; + version?: string; + } + | { + type: 'inline'; + name: string; + description: string; + source: { + type: 'base64'; + media_type: 'application/zip'; + data: string; + }; + } + >; + } + | { + type: 'container_reference'; + container_id: string; + } + | { + type: 'local'; + skills?: Array<{ + name: string; + description: string; + path: string; + }>; + }; + } + | { + type: 'tool_search'; + execution?: 'server' | 'client'; + description?: string; + parameters?: Record; + }; + +export type OpenAIResponsesReasoning = { + type: 'reasoning'; + id?: string; + encrypted_content?: string | null; + summary: Array<{ + type: 'summary_text'; + text: string; + }>; +}; + +export const openaiResponsesChunkSchema = lazySchema(() => + zodSchema( + z.union([ + z.object({ + type: z.literal('response.output_text.delta'), + item_id: z.string(), + delta: z.string(), + logprobs: z + .array( + z.object({ + token: z.string(), + logprob: z.number(), + top_logprobs: z.array( + z.object({ + token: z.string(), + logprob: z.number(), + }), + ), + }), + ) + .nullish(), + }), + z.object({ + type: z.enum(['response.completed', 'response.incomplete']), + response: z.object({ + incomplete_details: z.object({ reason: z.string() }).nullish(), + usage: z.object({ + input_tokens: z.number(), + input_tokens_details: z + .object({ cached_tokens: z.number().nullish() }) + .nullish(), + output_tokens: z.number(), + output_tokens_details: z + .object({ reasoning_tokens: z.number().nullish() }) + .nullish(), + }), + service_tier: z.string().nullish(), + }), + }), + z.object({ + type: z.literal('response.failed'), + response: z.object({ + error: z + .object({ + code: z.string().nullish(), + message: z.string(), + }) + .nullish(), + incomplete_details: z.object({ reason: z.string() }).nullish(), + usage: z + .object({ + input_tokens: z.number(), + input_tokens_details: z + .object({ cached_tokens: z.number().nullish() }) + .nullish(), + output_tokens: z.number(), + output_tokens_details: z + .object({ reasoning_tokens: z.number().nullish() }) + .nullish(), + }) + .nullish(), + service_tier: z.string().nullish(), + }), + }), + z.object({ + type: z.literal('response.created'), + response: z.object({ + id: z.string(), + created_at: z.number(), + model: z.string(), + service_tier: z.string().nullish(), + }), + }), + z.object({ + type: z.literal('response.output_item.added'), + output_index: z.number(), + item: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('message'), + id: z.string(), + phase: z.enum(['commentary', 'final_answer']).nullish(), + }), + z.object({ + type: z.literal('reasoning'), + id: z.string(), + encrypted_content: z.string().nullish(), + }), + z.object({ + type: z.literal('function_call'), + id: z.string(), + call_id: z.string(), + name: z.string(), + arguments: z.string(), + }), + z.object({ + type: z.literal('web_search_call'), + id: z.string(), + status: z.string(), + }), + z.object({ + type: z.literal('computer_call'), + id: z.string(), + status: z.string(), + }), + z.object({ + type: z.literal('file_search_call'), + id: z.string(), + }), + z.object({ + type: z.literal('image_generation_call'), + id: z.string(), + }), + z.object({ + type: z.literal('code_interpreter_call'), + id: z.string(), + container_id: z.string(), + code: z.string().nullable(), + outputs: z + .array( + z.discriminatedUnion('type', [ + z.object({ type: z.literal('logs'), logs: z.string() }), + z.object({ type: z.literal('image'), url: z.string() }), + ]), + ) + .nullable(), + status: z.string(), + }), + z.object({ + type: z.literal('mcp_call'), + id: z.string(), + status: z.string(), + approval_request_id: z.string().nullish(), + }), + z.object({ + type: z.literal('mcp_list_tools'), + id: z.string(), + }), + z.object({ + type: z.literal('mcp_approval_request'), + id: z.string(), + }), + z.object({ + type: z.literal('apply_patch_call'), + id: z.string(), + call_id: z.string(), + status: z.enum(['in_progress', 'completed']), + operation: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('create_file'), + path: z.string(), + diff: z.string(), + }), + z.object({ + type: z.literal('delete_file'), + path: z.string(), + }), + z.object({ + type: z.literal('update_file'), + path: z.string(), + diff: z.string(), + }), + ]), + }), + z.object({ + type: z.literal('custom_tool_call'), + id: z.string(), + call_id: z.string(), + name: z.string(), + input: z.string(), + }), + z.object({ + type: z.literal('shell_call'), + id: z.string(), + call_id: z.string(), + status: z.enum(['in_progress', 'completed', 'incomplete']), + action: z.object({ + commands: z.array(z.string()), + }), + }), + z.object({ + type: z.literal('shell_call_output'), + id: z.string(), + call_id: z.string(), + status: z.enum(['in_progress', 'completed', 'incomplete']), + output: z.array( + z.object({ + stdout: z.string(), + stderr: z.string(), + outcome: z.discriminatedUnion('type', [ + z.object({ type: z.literal('timeout') }), + z.object({ + type: z.literal('exit'), + exit_code: z.number(), + }), + ]), + }), + ), + }), + z.object({ + type: z.literal('tool_search_call'), + id: z.string(), + execution: z.enum(['server', 'client']), + call_id: z.string().nullable(), + status: z.enum(['in_progress', 'completed', 'incomplete']), + arguments: z.unknown(), + }), + z.object({ + type: z.literal('tool_search_output'), + id: z.string(), + execution: z.enum(['server', 'client']), + call_id: z.string().nullable(), + status: z.enum(['in_progress', 'completed', 'incomplete']), + tools: z.array(z.record(z.string(), jsonValueSchema.optional())), + }), + ]), + }), + z.object({ + type: z.literal('response.output_item.done'), + output_index: z.number(), + item: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('message'), + id: z.string(), + phase: z.enum(['commentary', 'final_answer']).nullish(), + }), + z.object({ + type: z.literal('reasoning'), + id: z.string(), + encrypted_content: z.string().nullish(), + }), + z.object({ + type: z.literal('function_call'), + id: z.string(), + call_id: z.string(), + name: z.string(), + arguments: z.string(), + status: z.literal('completed'), + }), + z.object({ + type: z.literal('custom_tool_call'), + id: z.string(), + call_id: z.string(), + name: z.string(), + input: z.string(), + status: z.literal('completed'), + }), + z.object({ + type: z.literal('code_interpreter_call'), + id: z.string(), + code: z.string().nullable(), + container_id: z.string(), + outputs: z + .array( + z.discriminatedUnion('type', [ + z.object({ type: z.literal('logs'), logs: z.string() }), + z.object({ type: z.literal('image'), url: z.string() }), + ]), + ) + .nullable(), + }), + z.object({ + type: z.literal('image_generation_call'), + id: z.string(), + result: z.string(), + }), + z.object({ + type: z.literal('web_search_call'), + id: z.string(), + status: z.string(), + action: z + .discriminatedUnion('type', [ + z.object({ + type: z.literal('search'), + query: z.string().nullish(), + sources: z + .array( + z.discriminatedUnion('type', [ + z.object({ type: z.literal('url'), url: z.string() }), + z.object({ type: z.literal('api'), name: z.string() }), + ]), + ) + .nullish(), + }), + z.object({ + type: z.literal('open_page'), + url: z.string().nullish(), + }), + z.object({ + type: z.literal('find_in_page'), + url: z.string().nullish(), + pattern: z.string().nullish(), + }), + ]) + .nullish(), + }), + z.object({ + type: z.literal('file_search_call'), + id: z.string(), + queries: z.array(z.string()), + results: z + .array( + z.object({ + attributes: z.record( + z.string(), + z.union([z.string(), z.number(), z.boolean()]), + ), + file_id: z.string(), + filename: z.string(), + score: z.number(), + text: z.string(), + }), + ) + .nullish(), + }), + z.object({ + type: z.literal('local_shell_call'), + id: z.string(), + call_id: z.string(), + action: z.object({ + type: z.literal('exec'), + command: z.array(z.string()), + timeout_ms: z.number().optional(), + user: z.string().optional(), + working_directory: z.string().optional(), + env: z.record(z.string(), z.string()).optional(), + }), + }), + z.object({ + type: z.literal('computer_call'), + id: z.string(), + status: z.literal('completed'), + }), + z.object({ + type: z.literal('mcp_call'), + id: z.string(), + status: z.string(), + arguments: z.string(), + name: z.string(), + server_label: z.string(), + output: z.string().nullish(), + error: z + .union([ + z.string(), + z + .object({ + type: z.string().optional(), + code: z.union([z.number(), z.string()]).optional(), + message: z.string().optional(), + }) + .loose(), + ]) + .nullish(), + approval_request_id: z.string().nullish(), + }), + z.object({ + type: z.literal('mcp_list_tools'), + id: z.string(), + server_label: z.string(), + tools: z.array( + z.object({ + name: z.string(), + description: z.string().optional(), + input_schema: z.any(), + annotations: z.record(z.string(), z.unknown()).optional(), + }), + ), + error: z + .union([ + z.string(), + z + .object({ + type: z.string().optional(), + code: z.union([z.number(), z.string()]).optional(), + message: z.string().optional(), + }) + .loose(), + ]) + .optional(), + }), + z.object({ + type: z.literal('mcp_approval_request'), + id: z.string(), + server_label: z.string(), + name: z.string(), + arguments: z.string(), + approval_request_id: z.string().optional(), + }), + z.object({ + type: z.literal('apply_patch_call'), + id: z.string(), + call_id: z.string(), + status: z.enum(['in_progress', 'completed']), + operation: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('create_file'), + path: z.string(), + diff: z.string(), + }), + z.object({ + type: z.literal('delete_file'), + path: z.string(), + }), + z.object({ + type: z.literal('update_file'), + path: z.string(), + diff: z.string(), + }), + ]), + }), + z.object({ + type: z.literal('shell_call'), + id: z.string(), + call_id: z.string(), + status: z.enum(['in_progress', 'completed', 'incomplete']), + action: z.object({ + commands: z.array(z.string()), + }), + }), + z.object({ + type: z.literal('shell_call_output'), + id: z.string(), + call_id: z.string(), + status: z.enum(['in_progress', 'completed', 'incomplete']), + output: z.array( + z.object({ + stdout: z.string(), + stderr: z.string(), + outcome: z.discriminatedUnion('type', [ + z.object({ type: z.literal('timeout') }), + z.object({ + type: z.literal('exit'), + exit_code: z.number(), + }), + ]), + }), + ), + }), + z.object({ + type: z.literal('tool_search_call'), + id: z.string(), + execution: z.enum(['server', 'client']), + call_id: z.string().nullable(), + status: z.enum(['in_progress', 'completed', 'incomplete']), + arguments: z.unknown(), + }), + z.object({ + type: z.literal('tool_search_output'), + id: z.string(), + execution: z.enum(['server', 'client']), + call_id: z.string().nullable(), + status: z.enum(['in_progress', 'completed', 'incomplete']), + tools: z.array(z.record(z.string(), jsonValueSchema.optional())), + }), + ]), + }), + z.object({ + type: z.literal('response.function_call_arguments.delta'), + item_id: z.string(), + output_index: z.number(), + delta: z.string(), + }), + z.object({ + type: z.literal('response.custom_tool_call_input.delta'), + item_id: z.string(), + output_index: z.number(), + delta: z.string(), + }), + z.object({ + type: z.literal('response.image_generation_call.partial_image'), + item_id: z.string(), + output_index: z.number(), + partial_image_b64: z.string(), + }), + z.object({ + type: z.literal('response.code_interpreter_call_code.delta'), + item_id: z.string(), + output_index: z.number(), + delta: z.string(), + }), + z.object({ + type: z.literal('response.code_interpreter_call_code.done'), + item_id: z.string(), + output_index: z.number(), + code: z.string(), + }), + z.object({ + type: z.literal('response.output_text.annotation.added'), + annotation: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('url_citation'), + start_index: z.number(), + end_index: z.number(), + url: z.string(), + title: z.string(), + }), + z.object({ + type: z.literal('file_citation'), + file_id: z.string(), + filename: z.string(), + index: z.number(), + }), + z.object({ + type: z.literal('container_file_citation'), + container_id: z.string(), + file_id: z.string(), + filename: z.string(), + start_index: z.number(), + end_index: z.number(), + }), + z.object({ + type: z.literal('file_path'), + file_id: z.string(), + index: z.number(), + }), + ]), + }), + z.object({ + type: z.literal('response.reasoning_summary_part.added'), + item_id: z.string(), + summary_index: z.number(), + }), + z.object({ + type: z.literal('response.reasoning_summary_text.delta'), + item_id: z.string(), + summary_index: z.number(), + delta: z.string(), + }), + z.object({ + type: z.literal('response.reasoning_summary_part.done'), + item_id: z.string(), + summary_index: z.number(), + }), + z.object({ + type: z.literal('response.apply_patch_call_operation_diff.delta'), + item_id: z.string(), + output_index: z.number(), + delta: z.string(), + obfuscation: z.string().nullish(), + }), + z.object({ + type: z.literal('response.apply_patch_call_operation_diff.done'), + item_id: z.string(), + output_index: z.number(), + diff: z.string(), + }), + z.object({ + type: z.literal('error'), + sequence_number: z.number(), + error: z.object({ + type: z.string(), + code: z.string(), + message: z.string(), + param: z.string().nullish(), + }), + }), + z + .object({ type: z.string() }) + .loose() + .transform(value => ({ + type: 'unknown_chunk' as const, + message: value.type, + })), // fallback for unknown chunks + ]), + ), +); + +export type OpenAIResponsesChunk = InferSchema< + typeof openaiResponsesChunkSchema +>; + +export type OpenAIResponsesLogprobs = NonNullable< + (OpenAIResponsesChunk & { + type: 'response.output_text.delta'; + })['logprobs'] +> | null; + +export type OpenAIResponsesWebSearchAction = NonNullable< + ((OpenAIResponsesChunk & { + type: 'response.output_item.done'; + })['item'] & { + type: 'web_search_call'; + })['action'] +>; + +export const openaiResponsesResponseSchema = lazySchema(() => + zodSchema( + z.object({ + id: z.string().optional(), + created_at: z.number().optional(), + error: z + .object({ + message: z.string(), + type: z.string(), + param: z.string().nullish(), + code: z.string(), + }) + .nullish(), + model: z.string().optional(), + output: z + .array( + z.discriminatedUnion('type', [ + z.object({ + type: z.literal('message'), + role: z.literal('assistant'), + id: z.string(), + phase: z.enum(['commentary', 'final_answer']).nullish(), + content: z.array( + z.object({ + type: z.literal('output_text'), + text: z.string(), + logprobs: z + .array( + z.object({ + token: z.string(), + logprob: z.number(), + top_logprobs: z.array( + z.object({ + token: z.string(), + logprob: z.number(), + }), + ), + }), + ) + .nullish(), + annotations: z.array( + z.discriminatedUnion('type', [ + z.object({ + type: z.literal('url_citation'), + start_index: z.number(), + end_index: z.number(), + url: z.string(), + title: z.string(), + }), + z.object({ + type: z.literal('file_citation'), + file_id: z.string(), + filename: z.string(), + index: z.number(), + }), + z.object({ + type: z.literal('container_file_citation'), + container_id: z.string(), + file_id: z.string(), + filename: z.string(), + start_index: z.number(), + end_index: z.number(), + }), + z.object({ + type: z.literal('file_path'), + file_id: z.string(), + index: z.number(), + }), + ]), + ), + }), + ), + }), + z.object({ + type: z.literal('web_search_call'), + id: z.string(), + status: z.string(), + action: z + .discriminatedUnion('type', [ + z.object({ + type: z.literal('search'), + query: z.string().nullish(), + sources: z + .array( + z.discriminatedUnion('type', [ + z.object({ type: z.literal('url'), url: z.string() }), + z.object({ + type: z.literal('api'), + name: z.string(), + }), + ]), + ) + .nullish(), + }), + z.object({ + type: z.literal('open_page'), + url: z.string().nullish(), + }), + z.object({ + type: z.literal('find_in_page'), + url: z.string().nullish(), + pattern: z.string().nullish(), + }), + ]) + .nullish(), + }), + z.object({ + type: z.literal('file_search_call'), + id: z.string(), + queries: z.array(z.string()), + results: z + .array( + z.object({ + attributes: z.record( + z.string(), + z.union([z.string(), z.number(), z.boolean()]), + ), + file_id: z.string(), + filename: z.string(), + score: z.number(), + text: z.string(), + }), + ) + .nullish(), + }), + z.object({ + type: z.literal('code_interpreter_call'), + id: z.string(), + code: z.string().nullable(), + container_id: z.string(), + outputs: z + .array( + z.discriminatedUnion('type', [ + z.object({ type: z.literal('logs'), logs: z.string() }), + z.object({ type: z.literal('image'), url: z.string() }), + ]), + ) + .nullable(), + }), + z.object({ + type: z.literal('image_generation_call'), + id: z.string(), + result: z.string(), + }), + z.object({ + type: z.literal('local_shell_call'), + id: z.string(), + call_id: z.string(), + action: z.object({ + type: z.literal('exec'), + command: z.array(z.string()), + timeout_ms: z.number().optional(), + user: z.string().optional(), + working_directory: z.string().optional(), + env: z.record(z.string(), z.string()).optional(), + }), + }), + z.object({ + type: z.literal('function_call'), + call_id: z.string(), + name: z.string(), + arguments: z.string(), + id: z.string(), + }), + z.object({ + type: z.literal('custom_tool_call'), + call_id: z.string(), + name: z.string(), + input: z.string(), + id: z.string(), + }), + z.object({ + type: z.literal('computer_call'), + id: z.string(), + status: z.string().optional(), + }), + z.object({ + type: z.literal('reasoning'), + id: z.string(), + encrypted_content: z.string().nullish(), + summary: z.array( + z.object({ + type: z.literal('summary_text'), + text: z.string(), + }), + ), + }), + z.object({ + type: z.literal('mcp_call'), + id: z.string(), + status: z.string(), + arguments: z.string(), + name: z.string(), + server_label: z.string(), + output: z.string().nullish(), + error: z + .union([ + z.string(), + z + .object({ + type: z.string().optional(), + code: z.union([z.number(), z.string()]).optional(), + message: z.string().optional(), + }) + .loose(), + ]) + .nullish(), + approval_request_id: z.string().nullish(), + }), + z.object({ + type: z.literal('mcp_list_tools'), + id: z.string(), + server_label: z.string(), + tools: z.array( + z.object({ + name: z.string(), + description: z.string().optional(), + input_schema: z.any(), + annotations: z.record(z.string(), z.unknown()).optional(), + }), + ), + error: z + .union([ + z.string(), + z + .object({ + type: z.string().optional(), + code: z.union([z.number(), z.string()]).optional(), + message: z.string().optional(), + }) + .loose(), + ]) + .optional(), + }), + z.object({ + type: z.literal('mcp_approval_request'), + id: z.string(), + server_label: z.string(), + name: z.string(), + arguments: z.string(), + approval_request_id: z.string().optional(), + }), + z.object({ + type: z.literal('apply_patch_call'), + id: z.string(), + call_id: z.string(), + status: z.enum(['in_progress', 'completed']), + operation: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('create_file'), + path: z.string(), + diff: z.string(), + }), + z.object({ + type: z.literal('delete_file'), + path: z.string(), + }), + z.object({ + type: z.literal('update_file'), + path: z.string(), + diff: z.string(), + }), + ]), + }), + z.object({ + type: z.literal('shell_call'), + id: z.string(), + call_id: z.string(), + status: z.enum(['in_progress', 'completed', 'incomplete']), + action: z.object({ + commands: z.array(z.string()), + }), + }), + z.object({ + type: z.literal('shell_call_output'), + id: z.string(), + call_id: z.string(), + status: z.enum(['in_progress', 'completed', 'incomplete']), + output: z.array( + z.object({ + stdout: z.string(), + stderr: z.string(), + outcome: z.discriminatedUnion('type', [ + z.object({ type: z.literal('timeout') }), + z.object({ + type: z.literal('exit'), + exit_code: z.number(), + }), + ]), + }), + ), + }), + z.object({ + type: z.literal('tool_search_call'), + id: z.string(), + execution: z.enum(['server', 'client']), + call_id: z.string().nullable(), + status: z.enum(['in_progress', 'completed', 'incomplete']), + arguments: z.unknown(), + }), + z.object({ + type: z.literal('tool_search_output'), + id: z.string(), + execution: z.enum(['server', 'client']), + call_id: z.string().nullable(), + status: z.enum(['in_progress', 'completed', 'incomplete']), + tools: z.array(z.record(z.string(), jsonValueSchema.optional())), + }), + ]), + ) + .optional(), + service_tier: z.string().nullish(), + incomplete_details: z.object({ reason: z.string() }).nullish(), + usage: z + .object({ + input_tokens: z.number(), + input_tokens_details: z + .object({ cached_tokens: z.number().nullish() }) + .nullish(), + output_tokens: z.number(), + output_tokens_details: z + .object({ reasoning_tokens: z.number().nullish() }) + .nullish(), + }) + .optional(), + }), + ), +); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-language-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-language-model.ts new file mode 100644 index 000000000..fe9616c81 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-language-model.ts @@ -0,0 +1,2256 @@ +import { + APICallError, + JSONValue, + LanguageModelV3, + LanguageModelV3Prompt, + LanguageModelV3CallOptions, + LanguageModelV3Content, + LanguageModelV3FinishReason, + LanguageModelV3GenerateResult, + LanguageModelV3ProviderTool, + LanguageModelV3StreamPart, + LanguageModelV3StreamResult, + LanguageModelV3ToolApprovalRequest, + SharedV3ProviderMetadata, + SharedV3Warning, +} from '@ai-sdk/provider'; +import { + combineHeaders, + createEventSourceResponseHandler, + createJsonResponseHandler, + createToolNameMapping, + generateId, + InferSchema, + parseProviderOptions, + ParseResult, + postJsonToApi, +} from '@ai-sdk/provider-utils'; +import { OpenAIConfig } from '../openai-config'; +import { openaiFailedResponseHandler } from '../openai-error'; +import { getOpenAILanguageModelCapabilities } from '../openai-language-model-capabilities'; +import { applyPatchInputSchema } from '../tool/apply-patch'; +import { + codeInterpreterInputSchema, + codeInterpreterOutputSchema, +} from '../tool/code-interpreter'; +import { fileSearchOutputSchema } from '../tool/file-search'; +import { imageGenerationOutputSchema } from '../tool/image-generation'; +import { localShellInputSchema } from '../tool/local-shell'; +import { mcpOutputSchema } from '../tool/mcp'; +import { shellInputSchema, shellOutputSchema } from '../tool/shell'; +import { + toolSearchInputSchema, + toolSearchOutputSchema, +} from '../tool/tool-search'; +import { webSearchOutputSchema } from '../tool/web-search'; +import { + convertOpenAIResponsesUsage, + OpenAIResponsesUsage, +} from './convert-openai-responses-usage'; +import { convertToOpenAIResponsesInput } from './convert-to-openai-responses-input'; +import { mapOpenAIResponseFinishReason } from './map-openai-responses-finish-reason'; +import { + OpenAIResponsesChunk, + openaiResponsesChunkSchema, + OpenAIResponsesIncludeOptions, + OpenAIResponsesIncludeValue, + OpenAIResponsesLogprobs, + openaiResponsesResponseSchema, + OpenAIResponsesWebSearchAction, + OpenAIResponsesApplyPatchOperationDiffDeltaChunk, + OpenAIResponsesApplyPatchOperationDiffDoneChunk, +} from './openai-responses-api'; +import { + OpenAIResponsesModelId, + openaiLanguageModelResponsesOptionsSchema, + TOP_LOGPROBS_MAX, +} from './openai-responses-options'; +import { prepareResponsesTools } from './openai-responses-prepare-tools'; +import { + ResponsesProviderMetadata, + ResponsesReasoningProviderMetadata, + ResponsesSourceDocumentProviderMetadata, + ResponsesTextProviderMetadata, +} from './openai-responses-provider-metadata'; + +/** + * Extracts a mapping from MCP approval request IDs to their corresponding tool call IDs + * from the prompt. When an MCP tool requires approval, we generate a tool call ID to track + * the pending approval in our system. When the user responds to the approval (and we + * continue the conversation), we need to map the approval request ID back to our tool call ID + * so that tool results reference the correct tool call. + */ +function extractApprovalRequestIdToToolCallIdMapping( + prompt: LanguageModelV3Prompt, +): Record { + const mapping: Record = {}; + for (const message of prompt) { + if (message.role !== 'assistant') continue; + for (const part of message.content) { + if (part.type !== 'tool-call') continue; + const approvalRequestId = part.providerOptions?.openai + ?.approvalRequestId as string | undefined; + if (approvalRequestId != null) { + mapping[approvalRequestId] = part.toolCallId; + } + } + } + return mapping; +} + +export class OpenAIResponsesLanguageModel implements LanguageModelV3 { + readonly specificationVersion = 'v3'; + + readonly modelId: OpenAIResponsesModelId; + + private readonly config: OpenAIConfig; + + constructor(modelId: OpenAIResponsesModelId, config: OpenAIConfig) { + this.modelId = modelId; + this.config = config; + } + + readonly supportedUrls: Record = { + 'image/*': [/^https?:\/\/.*$/], + 'application/pdf': [/^https?:\/\/.*$/], + }; + + get provider(): string { + return this.config.provider; + } + + private async getArgs({ + maxOutputTokens, + temperature, + stopSequences, + topP, + topK, + presencePenalty, + frequencyPenalty, + seed, + prompt, + providerOptions, + tools, + toolChoice, + responseFormat, + }: LanguageModelV3CallOptions) { + const warnings: SharedV3Warning[] = []; + const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId); + + if (topK != null) { + warnings.push({ type: 'unsupported', feature: 'topK' }); + } + + if (seed != null) { + warnings.push({ type: 'unsupported', feature: 'seed' }); + } + + if (presencePenalty != null) { + warnings.push({ type: 'unsupported', feature: 'presencePenalty' }); + } + + if (frequencyPenalty != null) { + warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' }); + } + + if (stopSequences != null) { + warnings.push({ type: 'unsupported', feature: 'stopSequences' }); + } + + const providerOptionsName = this.config.provider.includes('azure') + ? 'azure' + : 'openai'; + let openaiOptions = await parseProviderOptions({ + provider: providerOptionsName, + providerOptions, + schema: openaiLanguageModelResponsesOptionsSchema, + }); + + if (openaiOptions == null && providerOptionsName !== 'openai') { + openaiOptions = await parseProviderOptions({ + provider: 'openai', + providerOptions, + schema: openaiLanguageModelResponsesOptionsSchema, + }); + } + + const isReasoningModel = + openaiOptions?.forceReasoning ?? modelCapabilities.isReasoningModel; + + if (openaiOptions?.conversation && openaiOptions?.previousResponseId) { + warnings.push({ + type: 'unsupported', + feature: 'conversation', + details: 'conversation and previousResponseId cannot be used together', + }); + } + + const toolNameMapping = createToolNameMapping({ + tools, + providerToolNames: { + 'openai.code_interpreter': 'code_interpreter', + 'openai.file_search': 'file_search', + 'openai.image_generation': 'image_generation', + 'openai.local_shell': 'local_shell', + 'openai.shell': 'shell', + 'openai.web_search': 'web_search', + 'openai.web_search_preview': 'web_search_preview', + 'openai.mcp': 'mcp', + 'openai.apply_patch': 'apply_patch', + 'openai.tool_search': 'tool_search', + }, + resolveProviderToolName: tool => + tool.id === 'openai.custom' + ? (tool.args as { name?: string }).name + : undefined, + }); + + const customProviderToolNames = new Set(); + const { + tools: openaiTools, + toolChoice: openaiToolChoice, + toolWarnings, + } = await prepareResponsesTools({ + tools, + toolChoice, + toolNameMapping, + customProviderToolNames, + }); + + const { input, warnings: inputWarnings } = + await convertToOpenAIResponsesInput({ + prompt, + toolNameMapping, + systemMessageMode: + openaiOptions?.systemMessageMode ?? + (isReasoningModel + ? 'developer' + : modelCapabilities.systemMessageMode), + providerOptionsName, + fileIdPrefixes: this.config.fileIdPrefixes, + store: openaiOptions?.store ?? true, + hasConversation: openaiOptions?.conversation != null, + hasLocalShellTool: hasOpenAITool('openai.local_shell'), + hasShellTool: hasOpenAITool('openai.shell'), + hasApplyPatchTool: hasOpenAITool('openai.apply_patch'), + customProviderToolNames: + customProviderToolNames.size > 0 + ? customProviderToolNames + : undefined, + }); + + warnings.push(...inputWarnings); + + const strictJsonSchema = openaiOptions?.strictJsonSchema ?? true; + + let include: OpenAIResponsesIncludeOptions = openaiOptions?.include; + + function addInclude(key: OpenAIResponsesIncludeValue) { + if (include == null) { + include = [key]; + } else if (!include.includes(key)) { + include = [...include, key]; + } + } + + function hasOpenAITool(id: string) { + return ( + tools?.find(tool => tool.type === 'provider' && tool.id === id) != null + ); + } + + // when logprobs are requested, automatically include them: + const topLogprobs = + typeof openaiOptions?.logprobs === 'number' + ? openaiOptions?.logprobs + : openaiOptions?.logprobs === true + ? TOP_LOGPROBS_MAX + : undefined; + + if (topLogprobs) { + addInclude('message.output_text.logprobs'); + } + + // when a web search tool is present, automatically include the sources: + const webSearchToolName = ( + tools?.find( + tool => + tool.type === 'provider' && + (tool.id === 'openai.web_search' || + tool.id === 'openai.web_search_preview'), + ) as LanguageModelV3ProviderTool | undefined + )?.name; + + if (webSearchToolName) { + addInclude('web_search_call.action.sources'); + } + + // when a code interpreter tool is present, automatically include the outputs: + if (hasOpenAITool('openai.code_interpreter')) { + addInclude('code_interpreter_call.outputs'); + } + + const store = openaiOptions?.store; + + // store defaults to true in the OpenAI responses API, so check for false exactly: + if (store === false && isReasoningModel) { + addInclude('reasoning.encrypted_content'); + } + + const baseArgs = { + model: this.modelId, + input, + temperature, + top_p: topP, + max_output_tokens: maxOutputTokens, + + ...((responseFormat?.type === 'json' || openaiOptions?.textVerbosity) && { + text: { + ...(responseFormat?.type === 'json' && { + format: + responseFormat.schema != null + ? { + type: 'json_schema', + strict: strictJsonSchema, + name: responseFormat.name ?? 'response', + description: responseFormat.description, + schema: responseFormat.schema, + } + : { type: 'json_object' }, + }), + ...(openaiOptions?.textVerbosity && { + verbosity: openaiOptions.textVerbosity, + }), + }, + }), + + // provider options: + conversation: openaiOptions?.conversation, + max_tool_calls: openaiOptions?.maxToolCalls, + metadata: openaiOptions?.metadata, + parallel_tool_calls: openaiOptions?.parallelToolCalls, + previous_response_id: openaiOptions?.previousResponseId, + store, + user: openaiOptions?.user, + instructions: openaiOptions?.instructions, + service_tier: openaiOptions?.serviceTier, + include, + prompt_cache_key: openaiOptions?.promptCacheKey, + prompt_cache_retention: openaiOptions?.promptCacheRetention, + safety_identifier: openaiOptions?.safetyIdentifier, + top_logprobs: topLogprobs, + truncation: openaiOptions?.truncation, + + // model-specific settings: + ...(isReasoningModel && + (openaiOptions?.reasoningEffort != null || + openaiOptions?.reasoningSummary != null) && { + reasoning: { + ...(openaiOptions?.reasoningEffort != null && { + effort: openaiOptions.reasoningEffort, + }), + ...(openaiOptions?.reasoningSummary != null && { + summary: openaiOptions.reasoningSummary, + }), + }, + }), + }; + + // remove unsupported settings for reasoning models + // see https://platform.openai.com/docs/guides/reasoning#limitations + if (isReasoningModel) { + // when reasoning effort is none, gpt-5.1 models allow temperature, topP, logprobs + // https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility + if ( + !( + openaiOptions?.reasoningEffort === 'none' && + modelCapabilities.supportsNonReasoningParameters + ) + ) { + if (baseArgs.temperature != null) { + baseArgs.temperature = undefined; + warnings.push({ + type: 'unsupported', + feature: 'temperature', + details: 'temperature is not supported for reasoning models', + }); + } + + if (baseArgs.top_p != null) { + baseArgs.top_p = undefined; + warnings.push({ + type: 'unsupported', + feature: 'topP', + details: 'topP is not supported for reasoning models', + }); + } + } + } else { + if (openaiOptions?.reasoningEffort != null) { + warnings.push({ + type: 'unsupported', + feature: 'reasoningEffort', + details: 'reasoningEffort is not supported for non-reasoning models', + }); + } + + if (openaiOptions?.reasoningSummary != null) { + warnings.push({ + type: 'unsupported', + feature: 'reasoningSummary', + details: 'reasoningSummary is not supported for non-reasoning models', + }); + } + } + + // Validate flex processing support + if ( + openaiOptions?.serviceTier === 'flex' && + !modelCapabilities.supportsFlexProcessing + ) { + warnings.push({ + type: 'unsupported', + feature: 'serviceTier', + details: + 'flex processing is only available for o3, o4-mini, and gpt-5 models', + }); + // Remove from args if not supported + delete (baseArgs as any).service_tier; + } + + // Validate priority processing support + if ( + openaiOptions?.serviceTier === 'priority' && + !modelCapabilities.supportsPriorityProcessing + ) { + warnings.push({ + type: 'unsupported', + feature: 'serviceTier', + details: + 'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported', + }); + // Remove from args if not supported + delete (baseArgs as any).service_tier; + } + + const shellToolEnvType = ( + tools?.find( + tool => tool.type === 'provider' && tool.id === 'openai.shell', + ) as { args?: { environment?: { type?: string } } } | undefined + )?.args?.environment?.type; + + const isShellProviderExecuted = + shellToolEnvType === 'containerAuto' || + shellToolEnvType === 'containerReference'; + + return { + webSearchToolName, + args: { + ...baseArgs, + tools: openaiTools, + tool_choice: openaiToolChoice, + }, + warnings: [...warnings, ...toolWarnings], + store, + toolNameMapping, + providerOptionsName, + isShellProviderExecuted, + }; + } + + async doGenerate( + options: LanguageModelV3CallOptions, + ): Promise { + const { + args: body, + warnings, + webSearchToolName, + toolNameMapping, + providerOptionsName, + isShellProviderExecuted, + } = await this.getArgs(options); + const url = this.config.url({ + path: '/responses', + modelId: this.modelId, + }); + + const approvalRequestIdToDummyToolCallIdFromPrompt = + extractApprovalRequestIdToToolCallIdMapping(options.prompt); + + const { + responseHeaders, + value: response, + rawValue: rawResponse, + } = await postJsonToApi({ + url, + headers: combineHeaders(this.config.headers(), options.headers), + body, + failedResponseHandler: openaiFailedResponseHandler, + successfulResponseHandler: createJsonResponseHandler( + openaiResponsesResponseSchema, + ), + abortSignal: options.abortSignal, + fetch: this.config.fetch, + }); + + if (response.error) { + throw new APICallError({ + message: response.error.message, + url, + requestBodyValues: body, + statusCode: 400, + responseHeaders, + responseBody: rawResponse as string, + isRetryable: false, + }); + } + + const content: Array = []; + const logprobs: Array = []; + + // flag that checks if there have been client-side tool calls (not executed by openai) + let hasFunctionCall = false; + const hostedToolSearchCallIds: string[] = []; + + // map response content to content array (defined when there is no error) + for (const part of response.output!) { + switch (part.type) { + case 'reasoning': { + // when there are no summary parts, we need to add an empty reasoning part: + if (part.summary.length === 0) { + part.summary.push({ type: 'summary_text', text: '' }); + } + + for (const summary of part.summary) { + content.push({ + type: 'reasoning' as const, + text: summary.text, + providerMetadata: { + [providerOptionsName]: { + itemId: part.id, + reasoningEncryptedContent: part.encrypted_content ?? null, + } satisfies ResponsesReasoningProviderMetadata, + }, + }); + } + break; + } + + case 'image_generation_call': { + content.push({ + type: 'tool-call', + toolCallId: part.id, + toolName: toolNameMapping.toCustomToolName('image_generation'), + input: '{}', + providerExecuted: true, + }); + + content.push({ + type: 'tool-result', + toolCallId: part.id, + toolName: toolNameMapping.toCustomToolName('image_generation'), + result: { + result: part.result, + } satisfies InferSchema, + }); + + break; + } + + case 'tool_search_call': { + const toolCallId = part.call_id ?? part.id; + const isHosted = part.execution === 'server'; + + if (isHosted) { + hostedToolSearchCallIds.push(toolCallId); + } + + content.push({ + type: 'tool-call', + toolCallId, + toolName: toolNameMapping.toCustomToolName('tool_search'), + input: JSON.stringify({ + arguments: part.arguments, + call_id: part.call_id, + } satisfies InferSchema), + ...(isHosted ? { providerExecuted: true } : {}), + providerMetadata: { + [providerOptionsName]: { + itemId: part.id, + }, + }, + }); + + break; + } + + case 'tool_search_output': { + const toolCallId = + part.call_id ?? hostedToolSearchCallIds.shift() ?? part.id; + + content.push({ + type: 'tool-result', + toolCallId, + toolName: toolNameMapping.toCustomToolName('tool_search'), + result: { + tools: part.tools, + } satisfies InferSchema, + providerMetadata: { + [providerOptionsName]: { + itemId: part.id, + }, + }, + }); + + break; + } + + case 'local_shell_call': { + content.push({ + type: 'tool-call', + toolCallId: part.call_id, + toolName: toolNameMapping.toCustomToolName('local_shell'), + input: JSON.stringify({ + action: part.action, + } satisfies InferSchema), + providerMetadata: { + [providerOptionsName]: { + itemId: part.id, + }, + }, + }); + + break; + } + + case 'shell_call': { + content.push({ + type: 'tool-call', + toolCallId: part.call_id, + toolName: toolNameMapping.toCustomToolName('shell'), + input: JSON.stringify({ + action: { + commands: part.action.commands, + }, + } satisfies InferSchema), + ...(isShellProviderExecuted && { providerExecuted: true }), + providerMetadata: { + [providerOptionsName]: { + itemId: part.id, + }, + }, + }); + + break; + } + + case 'shell_call_output': { + content.push({ + type: 'tool-result', + toolCallId: part.call_id, + toolName: toolNameMapping.toCustomToolName('shell'), + result: { + output: part.output.map(item => ({ + stdout: item.stdout, + stderr: item.stderr, + outcome: + item.outcome.type === 'exit' + ? { + type: 'exit' as const, + exitCode: item.outcome.exit_code, + } + : { type: 'timeout' as const }, + })), + } satisfies InferSchema, + }); + break; + } + + case 'message': { + for (const contentPart of part.content) { + if ( + options.providerOptions?.[providerOptionsName]?.logprobs && + contentPart.logprobs + ) { + logprobs.push(contentPart.logprobs); + } + + const providerMetadata: SharedV3ProviderMetadata[string] = { + itemId: part.id, + ...(part.phase != null && { phase: part.phase }), + ...(contentPart.annotations.length > 0 && { + annotations: contentPart.annotations, + }), + } satisfies ResponsesTextProviderMetadata; + + content.push({ + type: 'text', + text: contentPart.text, + providerMetadata: { + [providerOptionsName]: providerMetadata, + }, + }); + + for (const annotation of contentPart.annotations) { + if (annotation.type === 'url_citation') { + content.push({ + type: 'source', + sourceType: 'url', + id: this.config.generateId?.() ?? generateId(), + url: annotation.url, + title: annotation.title, + }); + } else if (annotation.type === 'file_citation') { + content.push({ + type: 'source', + sourceType: 'document', + id: this.config.generateId?.() ?? generateId(), + mediaType: 'text/plain', + title: annotation.filename, + filename: annotation.filename, + providerMetadata: { + [providerOptionsName]: { + type: annotation.type, + fileId: annotation.file_id, + index: annotation.index, + } satisfies Extract< + ResponsesSourceDocumentProviderMetadata, + { type: 'file_citation' } + >, + }, + }); + } else if (annotation.type === 'container_file_citation') { + content.push({ + type: 'source', + sourceType: 'document', + id: this.config.generateId?.() ?? generateId(), + mediaType: 'text/plain', + title: annotation.filename, + filename: annotation.filename, + providerMetadata: { + [providerOptionsName]: { + type: annotation.type, + fileId: annotation.file_id, + containerId: annotation.container_id, + } satisfies Extract< + ResponsesSourceDocumentProviderMetadata, + { type: 'container_file_citation' } + >, + }, + }); + } else if (annotation.type === 'file_path') { + content.push({ + type: 'source', + sourceType: 'document', + id: this.config.generateId?.() ?? generateId(), + mediaType: 'application/octet-stream', + title: annotation.file_id, + filename: annotation.file_id, + providerMetadata: { + [providerOptionsName]: { + type: annotation.type, + fileId: annotation.file_id, + index: annotation.index, + } satisfies Extract< + ResponsesSourceDocumentProviderMetadata, + { type: 'file_path' } + >, + }, + }); + } + } + } + + break; + } + + case 'function_call': { + hasFunctionCall = true; + + content.push({ + type: 'tool-call', + toolCallId: part.call_id, + toolName: part.name, + input: part.arguments, + providerMetadata: { + [providerOptionsName]: { + itemId: part.id, + }, + }, + }); + break; + } + + case 'custom_tool_call': { + hasFunctionCall = true; + const toolName = toolNameMapping.toCustomToolName(part.name); + + content.push({ + type: 'tool-call', + toolCallId: part.call_id, + toolName, + input: JSON.stringify(part.input), + providerMetadata: { + [providerOptionsName]: { + itemId: part.id, + }, + }, + }); + break; + } + + case 'web_search_call': { + content.push({ + type: 'tool-call', + toolCallId: part.id, + toolName: toolNameMapping.toCustomToolName( + webSearchToolName ?? 'web_search', + ), + input: JSON.stringify({}), + providerExecuted: true, + }); + + content.push({ + type: 'tool-result', + toolCallId: part.id, + toolName: toolNameMapping.toCustomToolName( + webSearchToolName ?? 'web_search', + ), + result: mapWebSearchOutput(part.action), + }); + + break; + } + + case 'mcp_call': { + const toolCallId = + part.approval_request_id != null + ? (approvalRequestIdToDummyToolCallIdFromPrompt[ + part.approval_request_id + ] ?? part.id) + : part.id; + + const toolName = `mcp.${part.name}`; + + content.push({ + type: 'tool-call', + toolCallId, + toolName, + input: part.arguments, + providerExecuted: true, + dynamic: true, + }); + + content.push({ + type: 'tool-result', + toolCallId, + toolName, + result: { + type: 'call', + serverLabel: part.server_label, + name: part.name, + arguments: part.arguments, + ...(part.output != null ? { output: part.output } : {}), + ...(part.error != null + ? { error: part.error as unknown as JSONValue } + : {}), + } satisfies InferSchema, + providerMetadata: { + [providerOptionsName]: { + itemId: part.id, + }, + }, + }); + break; + } + + case 'mcp_list_tools': { + // skip + break; + } + + case 'mcp_approval_request': { + const approvalRequestId = part.approval_request_id ?? part.id; + const dummyToolCallId = this.config.generateId?.() ?? generateId(); + const toolName = `mcp.${part.name}`; + + content.push({ + type: 'tool-call', + toolCallId: dummyToolCallId, + toolName, + input: part.arguments, + providerExecuted: true, + dynamic: true, + }); + + content.push({ + type: 'tool-approval-request', + approvalId: approvalRequestId, + toolCallId: dummyToolCallId, + } satisfies LanguageModelV3ToolApprovalRequest); + break; + } + + case 'computer_call': { + content.push({ + type: 'tool-call', + toolCallId: part.id, + toolName: toolNameMapping.toCustomToolName('computer_use'), + input: '', + providerExecuted: true, + }); + + content.push({ + type: 'tool-result', + toolCallId: part.id, + toolName: toolNameMapping.toCustomToolName('computer_use'), + result: { + type: 'computer_use_tool_result', + status: part.status || 'completed', + }, + }); + break; + } + + case 'file_search_call': { + content.push({ + type: 'tool-call', + toolCallId: part.id, + toolName: toolNameMapping.toCustomToolName('file_search'), + input: '{}', + providerExecuted: true, + }); + + content.push({ + type: 'tool-result', + toolCallId: part.id, + toolName: toolNameMapping.toCustomToolName('file_search'), + result: { + queries: part.queries, + results: + part.results?.map(result => ({ + attributes: result.attributes, + fileId: result.file_id, + filename: result.filename, + score: result.score, + text: result.text, + })) ?? null, + } satisfies InferSchema, + }); + break; + } + + case 'code_interpreter_call': { + content.push({ + type: 'tool-call', + toolCallId: part.id, + toolName: toolNameMapping.toCustomToolName('code_interpreter'), + input: JSON.stringify({ + code: part.code, + containerId: part.container_id, + } satisfies InferSchema), + providerExecuted: true, + }); + + content.push({ + type: 'tool-result', + toolCallId: part.id, + toolName: toolNameMapping.toCustomToolName('code_interpreter'), + result: { + outputs: part.outputs, + } satisfies InferSchema, + }); + break; + } + + case 'apply_patch_call': { + content.push({ + type: 'tool-call', + toolCallId: part.call_id, + toolName: toolNameMapping.toCustomToolName('apply_patch'), + input: JSON.stringify({ + callId: part.call_id, + operation: part.operation, + } satisfies InferSchema), + providerMetadata: { + [providerOptionsName]: { + itemId: part.id, + }, + }, + }); + + break; + } + } + } + + const providerMetadata: SharedV3ProviderMetadata = { + [providerOptionsName]: { + responseId: response.id, + ...(logprobs.length > 0 ? { logprobs } : {}), + ...(typeof response.service_tier === 'string' + ? { serviceTier: response.service_tier } + : {}), + } satisfies ResponsesProviderMetadata, + }; + + const usage = response.usage!; // defined when there is no error + + return { + content, + finishReason: { + unified: mapOpenAIResponseFinishReason({ + finishReason: response.incomplete_details?.reason, + hasFunctionCall, + }), + raw: response.incomplete_details?.reason ?? undefined, + }, + usage: convertOpenAIResponsesUsage(usage), + request: { body }, + response: { + id: response.id, + timestamp: new Date(response.created_at! * 1000), + modelId: response.model, + headers: responseHeaders, + body: rawResponse, + }, + providerMetadata, + warnings, + }; + } + + async doStream( + options: LanguageModelV3CallOptions, + ): Promise { + const { + args: body, + warnings, + webSearchToolName, + toolNameMapping, + store, + providerOptionsName, + isShellProviderExecuted, + } = await this.getArgs(options); + + const { responseHeaders, value: response } = await postJsonToApi({ + url: this.config.url({ + path: '/responses', + modelId: this.modelId, + }), + headers: combineHeaders(this.config.headers(), options.headers), + body: { + ...body, + stream: true, + }, + failedResponseHandler: openaiFailedResponseHandler, + successfulResponseHandler: createEventSourceResponseHandler( + openaiResponsesChunkSchema, + ), + abortSignal: options.abortSignal, + fetch: this.config.fetch, + }); + + const self = this; + + const approvalRequestIdToDummyToolCallIdFromPrompt = + extractApprovalRequestIdToToolCallIdMapping(options.prompt); + + const approvalRequestIdToDummyToolCallIdFromStream = new Map< + string, + string + >(); + + let finishReason: LanguageModelV3FinishReason = { + unified: 'other', + raw: undefined, + }; + let usage: OpenAIResponsesUsage | undefined = undefined; + const logprobs: Array = []; + let responseId: string | null = null; + + const ongoingToolCalls: Record< + number, + | { + toolName: string; + toolCallId: string; + codeInterpreter?: { + containerId: string; + }; + applyPatch?: { + hasDiff: boolean; + endEmitted: boolean; + }; + toolSearchExecution?: 'server' | 'client'; + } + | undefined + > = {}; + + // set annotations in 'text-end' part providerMetadata. + const ongoingAnnotations: Array< + Extract< + OpenAIResponsesChunk, + { type: 'response.output_text.annotation.added' } + >['annotation'] + > = []; + + // track the phase of the current message being streamed + let activeMessagePhase: 'commentary' | 'final_answer' | undefined; + + // flag that checks if there have been client-side tool calls (not executed by openai) + let hasFunctionCall = false; + + const activeReasoning: Record< + string, + { + encryptedContent?: string | null; + // summary index as string to reasoning part state: + summaryParts: Record; + } + > = {}; + + let serviceTier: string | undefined; + const hostedToolSearchCallIds: string[] = []; + + return { + stream: response.pipeThrough( + new TransformStream< + ParseResult, + LanguageModelV3StreamPart + >({ + start(controller) { + controller.enqueue({ type: 'stream-start', warnings }); + }, + + transform(chunk, controller) { + if (options.includeRawChunks) { + controller.enqueue({ type: 'raw', rawValue: chunk.rawValue }); + } + + // handle failed chunk parsing / validation: + if (!chunk.success) { + finishReason = { unified: 'error', raw: undefined }; + controller.enqueue({ type: 'error', error: chunk.error }); + return; + } + + const value = chunk.value; + + if (isResponseOutputItemAddedChunk(value)) { + if (value.item.type === 'function_call') { + ongoingToolCalls[value.output_index] = { + toolName: value.item.name, + toolCallId: value.item.call_id, + }; + + controller.enqueue({ + type: 'tool-input-start', + id: value.item.call_id, + toolName: value.item.name, + }); + } else if (value.item.type === 'custom_tool_call') { + const toolName = toolNameMapping.toCustomToolName( + value.item.name, + ); + ongoingToolCalls[value.output_index] = { + toolName, + toolCallId: value.item.call_id, + }; + + controller.enqueue({ + type: 'tool-input-start', + id: value.item.call_id, + toolName, + }); + } else if (value.item.type === 'web_search_call') { + ongoingToolCalls[value.output_index] = { + toolName: toolNameMapping.toCustomToolName( + webSearchToolName ?? 'web_search', + ), + toolCallId: value.item.id, + }; + + controller.enqueue({ + type: 'tool-input-start', + id: value.item.id, + toolName: toolNameMapping.toCustomToolName( + webSearchToolName ?? 'web_search', + ), + providerExecuted: true, + }); + + controller.enqueue({ + type: 'tool-input-end', + id: value.item.id, + }); + + controller.enqueue({ + type: 'tool-call', + toolCallId: value.item.id, + toolName: toolNameMapping.toCustomToolName( + webSearchToolName ?? 'web_search', + ), + input: JSON.stringify({}), + providerExecuted: true, + }); + } else if (value.item.type === 'computer_call') { + ongoingToolCalls[value.output_index] = { + toolName: toolNameMapping.toCustomToolName('computer_use'), + toolCallId: value.item.id, + }; + + controller.enqueue({ + type: 'tool-input-start', + id: value.item.id, + toolName: toolNameMapping.toCustomToolName('computer_use'), + providerExecuted: true, + }); + } else if (value.item.type === 'code_interpreter_call') { + ongoingToolCalls[value.output_index] = { + toolName: + toolNameMapping.toCustomToolName('code_interpreter'), + toolCallId: value.item.id, + codeInterpreter: { + containerId: value.item.container_id, + }, + }; + + controller.enqueue({ + type: 'tool-input-start', + id: value.item.id, + toolName: + toolNameMapping.toCustomToolName('code_interpreter'), + providerExecuted: true, + }); + + controller.enqueue({ + type: 'tool-input-delta', + id: value.item.id, + delta: `{"containerId":"${value.item.container_id}","code":"`, + }); + } else if (value.item.type === 'file_search_call') { + controller.enqueue({ + type: 'tool-call', + toolCallId: value.item.id, + toolName: toolNameMapping.toCustomToolName('file_search'), + input: '{}', + providerExecuted: true, + }); + } else if (value.item.type === 'image_generation_call') { + controller.enqueue({ + type: 'tool-call', + toolCallId: value.item.id, + toolName: + toolNameMapping.toCustomToolName('image_generation'), + input: '{}', + providerExecuted: true, + }); + } else if (value.item.type === 'tool_search_call') { + const toolCallId = value.item.id; + const toolName = + toolNameMapping.toCustomToolName('tool_search'); + const isHosted = value.item.execution === 'server'; + + ongoingToolCalls[value.output_index] = { + toolName, + toolCallId, + toolSearchExecution: value.item.execution ?? 'server', + }; + + if (isHosted) { + controller.enqueue({ + type: 'tool-input-start', + id: toolCallId, + toolName, + providerExecuted: true, + }); + } + } else if (value.item.type === 'tool_search_output') { + // handled on output_item.done so we can pair it with the call + } else if ( + value.item.type === 'mcp_call' || + value.item.type === 'mcp_list_tools' || + value.item.type === 'mcp_approval_request' + ) { + // Emit MCP tool-call/approval parts on output_item.done instead, so we can: + // - alias mcp_call IDs when an approval_request_id is present + // - emit a proper tool-approval-request part for MCP approvals + } else if (value.item.type === 'apply_patch_call') { + const { call_id: callId, operation } = value.item; + + ongoingToolCalls[value.output_index] = { + toolName: toolNameMapping.toCustomToolName('apply_patch'), + toolCallId: callId, + applyPatch: { + // delete_file doesn't have diff + hasDiff: operation.type === 'delete_file', + endEmitted: operation.type === 'delete_file', + }, + }; + + controller.enqueue({ + type: 'tool-input-start', + id: callId, + toolName: toolNameMapping.toCustomToolName('apply_patch'), + }); + + if (operation.type === 'delete_file') { + const inputString = JSON.stringify({ + callId, + operation, + } satisfies InferSchema); + + controller.enqueue({ + type: 'tool-input-delta', + id: callId, + delta: inputString, + }); + + controller.enqueue({ + type: 'tool-input-end', + id: callId, + }); + } else { + controller.enqueue({ + type: 'tool-input-delta', + id: callId, + delta: `{"callId":"${escapeJSONDelta(callId)}","operation":{"type":"${escapeJSONDelta(operation.type)}","path":"${escapeJSONDelta(operation.path)}","diff":"`, + }); + } + } else if (value.item.type === 'shell_call') { + ongoingToolCalls[value.output_index] = { + toolName: toolNameMapping.toCustomToolName('shell'), + toolCallId: value.item.call_id, + }; + } else if (value.item.type === 'shell_call_output') { + // shell_call_output is handled in output_item.done + } else if (value.item.type === 'message') { + ongoingAnnotations.splice(0, ongoingAnnotations.length); + activeMessagePhase = value.item.phase ?? undefined; + controller.enqueue({ + type: 'text-start', + id: value.item.id, + providerMetadata: { + [providerOptionsName]: { + itemId: value.item.id, + ...(value.item.phase != null && { + phase: value.item.phase, + }), + }, + }, + }); + } else if ( + isResponseOutputItemAddedChunk(value) && + value.item.type === 'reasoning' + ) { + activeReasoning[value.item.id] = { + encryptedContent: value.item.encrypted_content, + summaryParts: { 0: 'active' }, + }; + + controller.enqueue({ + type: 'reasoning-start', + id: `${value.item.id}:0`, + providerMetadata: { + [providerOptionsName]: { + itemId: value.item.id, + reasoningEncryptedContent: + value.item.encrypted_content ?? null, + } satisfies ResponsesReasoningProviderMetadata, + }, + }); + } + } else if (isResponseOutputItemDoneChunk(value)) { + if (value.item.type === 'message') { + const phase = value.item.phase ?? activeMessagePhase; + activeMessagePhase = undefined; + controller.enqueue({ + type: 'text-end', + id: value.item.id, + providerMetadata: { + [providerOptionsName]: { + itemId: value.item.id, + ...(phase != null && { phase }), + ...(ongoingAnnotations.length > 0 && { + annotations: ongoingAnnotations, + }), + } satisfies ResponsesTextProviderMetadata, + }, + }); + } else if (value.item.type === 'function_call') { + ongoingToolCalls[value.output_index] = undefined; + hasFunctionCall = true; + + controller.enqueue({ + type: 'tool-input-end', + id: value.item.call_id, + }); + + controller.enqueue({ + type: 'tool-call', + toolCallId: value.item.call_id, + toolName: value.item.name, + input: value.item.arguments, + providerMetadata: { + [providerOptionsName]: { + itemId: value.item.id, + }, + }, + }); + } else if (value.item.type === 'custom_tool_call') { + ongoingToolCalls[value.output_index] = undefined; + hasFunctionCall = true; + const toolName = toolNameMapping.toCustomToolName( + value.item.name, + ); + + controller.enqueue({ + type: 'tool-input-end', + id: value.item.call_id, + }); + + controller.enqueue({ + type: 'tool-call', + toolCallId: value.item.call_id, + toolName, + input: JSON.stringify(value.item.input), + providerMetadata: { + [providerOptionsName]: { + itemId: value.item.id, + }, + }, + }); + } else if (value.item.type === 'web_search_call') { + ongoingToolCalls[value.output_index] = undefined; + + controller.enqueue({ + type: 'tool-result', + toolCallId: value.item.id, + toolName: toolNameMapping.toCustomToolName( + webSearchToolName ?? 'web_search', + ), + result: mapWebSearchOutput(value.item.action), + }); + } else if (value.item.type === 'computer_call') { + ongoingToolCalls[value.output_index] = undefined; + + controller.enqueue({ + type: 'tool-input-end', + id: value.item.id, + }); + + controller.enqueue({ + type: 'tool-call', + toolCallId: value.item.id, + toolName: toolNameMapping.toCustomToolName('computer_use'), + input: '', + providerExecuted: true, + }); + + controller.enqueue({ + type: 'tool-result', + toolCallId: value.item.id, + toolName: toolNameMapping.toCustomToolName('computer_use'), + result: { + type: 'computer_use_tool_result', + status: value.item.status || 'completed', + }, + }); + } else if (value.item.type === 'file_search_call') { + ongoingToolCalls[value.output_index] = undefined; + + controller.enqueue({ + type: 'tool-result', + toolCallId: value.item.id, + toolName: toolNameMapping.toCustomToolName('file_search'), + result: { + queries: value.item.queries, + results: + value.item.results?.map(result => ({ + attributes: result.attributes, + fileId: result.file_id, + filename: result.filename, + score: result.score, + text: result.text, + })) ?? null, + } satisfies InferSchema, + }); + } else if (value.item.type === 'code_interpreter_call') { + ongoingToolCalls[value.output_index] = undefined; + + controller.enqueue({ + type: 'tool-result', + toolCallId: value.item.id, + toolName: + toolNameMapping.toCustomToolName('code_interpreter'), + result: { + outputs: value.item.outputs, + } satisfies InferSchema, + }); + } else if (value.item.type === 'image_generation_call') { + controller.enqueue({ + type: 'tool-result', + toolCallId: value.item.id, + toolName: + toolNameMapping.toCustomToolName('image_generation'), + result: { + result: value.item.result, + } satisfies InferSchema, + }); + } else if (value.item.type === 'tool_search_call') { + const toolCall = ongoingToolCalls[value.output_index]; + const isHosted = value.item.execution === 'server'; + + if (toolCall != null) { + const toolCallId = isHosted + ? toolCall.toolCallId + : (value.item.call_id ?? value.item.id); + + if (isHosted) { + hostedToolSearchCallIds.push(toolCallId); + } else { + controller.enqueue({ + type: 'tool-input-start', + id: toolCallId, + toolName: toolCall.toolName, + }); + } + + controller.enqueue({ + type: 'tool-input-end', + id: toolCallId, + }); + + controller.enqueue({ + type: 'tool-call', + toolCallId, + toolName: toolCall.toolName, + input: JSON.stringify({ + arguments: value.item.arguments, + call_id: isHosted ? null : toolCallId, + } satisfies InferSchema), + ...(isHosted ? { providerExecuted: true } : {}), + providerMetadata: { + [providerOptionsName]: { + itemId: value.item.id, + }, + }, + }); + } + + ongoingToolCalls[value.output_index] = undefined; + } else if (value.item.type === 'tool_search_output') { + const toolCallId = + value.item.call_id ?? + hostedToolSearchCallIds.shift() ?? + value.item.id; + + controller.enqueue({ + type: 'tool-result', + toolCallId, + toolName: toolNameMapping.toCustomToolName('tool_search'), + result: { + tools: value.item.tools, + } satisfies InferSchema, + providerMetadata: { + [providerOptionsName]: { + itemId: value.item.id, + }, + }, + }); + } else if (value.item.type === 'mcp_call') { + ongoingToolCalls[value.output_index] = undefined; + + const approvalRequestId = + value.item.approval_request_id ?? undefined; + + // when MCP tools require approval, we track them with our own + // tool call IDs and then map OpenAI's approval_request_id back to our ID so results match. + const aliasedToolCallId = + approvalRequestId != null + ? (approvalRequestIdToDummyToolCallIdFromStream.get( + approvalRequestId, + ) ?? + approvalRequestIdToDummyToolCallIdFromPrompt[ + approvalRequestId + ] ?? + value.item.id) + : value.item.id; + + const toolName = `mcp.${value.item.name}`; + + controller.enqueue({ + type: 'tool-call', + toolCallId: aliasedToolCallId, + toolName, + input: value.item.arguments, + providerExecuted: true, + dynamic: true, + }); + + controller.enqueue({ + type: 'tool-result', + toolCallId: aliasedToolCallId, + toolName, + result: { + type: 'call', + serverLabel: value.item.server_label, + name: value.item.name, + arguments: value.item.arguments, + ...(value.item.output != null + ? { output: value.item.output } + : {}), + ...(value.item.error != null + ? { error: value.item.error as unknown as JSONValue } + : {}), + } satisfies InferSchema, + providerMetadata: { + [providerOptionsName]: { + itemId: value.item.id, + }, + }, + }); + } else if (value.item.type === 'mcp_list_tools') { + // Skip listTools - we don't expose this to the UI or send it back + ongoingToolCalls[value.output_index] = undefined; + + // skip + } else if (value.item.type === 'apply_patch_call') { + const toolCall = ongoingToolCalls[value.output_index]; + if ( + toolCall?.applyPatch && + !toolCall.applyPatch.endEmitted && + value.item.operation.type !== 'delete_file' + ) { + if (!toolCall.applyPatch.hasDiff) { + controller.enqueue({ + type: 'tool-input-delta', + id: toolCall.toolCallId, + delta: escapeJSONDelta(value.item.operation.diff), + }); + } + + controller.enqueue({ + type: 'tool-input-delta', + id: toolCall.toolCallId, + delta: '"}}', + }); + + controller.enqueue({ + type: 'tool-input-end', + id: toolCall.toolCallId, + }); + + toolCall.applyPatch.endEmitted = true; + } + + // Emit the final tool-call with complete diff when status is 'completed' + if (toolCall && value.item.status === 'completed') { + controller.enqueue({ + type: 'tool-call', + toolCallId: toolCall.toolCallId, + toolName: toolNameMapping.toCustomToolName('apply_patch'), + input: JSON.stringify({ + callId: value.item.call_id, + operation: value.item.operation, + } satisfies InferSchema), + providerMetadata: { + [providerOptionsName]: { + itemId: value.item.id, + }, + }, + }); + } + + ongoingToolCalls[value.output_index] = undefined; + } else if (value.item.type === 'mcp_approval_request') { + ongoingToolCalls[value.output_index] = undefined; + + const dummyToolCallId = + self.config.generateId?.() ?? generateId(); + const approvalRequestId = + value.item.approval_request_id ?? value.item.id; + approvalRequestIdToDummyToolCallIdFromStream.set( + approvalRequestId, + dummyToolCallId, + ); + + const toolName = `mcp.${value.item.name}`; + + controller.enqueue({ + type: 'tool-call', + toolCallId: dummyToolCallId, + toolName, + input: value.item.arguments, + providerExecuted: true, + dynamic: true, + }); + + controller.enqueue({ + type: 'tool-approval-request', + approvalId: approvalRequestId, + toolCallId: dummyToolCallId, + }); + } else if (value.item.type === 'local_shell_call') { + ongoingToolCalls[value.output_index] = undefined; + + controller.enqueue({ + type: 'tool-call', + toolCallId: value.item.call_id, + toolName: toolNameMapping.toCustomToolName('local_shell'), + input: JSON.stringify({ + action: { + type: 'exec', + command: value.item.action.command, + timeoutMs: value.item.action.timeout_ms, + user: value.item.action.user, + workingDirectory: value.item.action.working_directory, + env: value.item.action.env, + }, + } satisfies InferSchema), + providerMetadata: { + [providerOptionsName]: { itemId: value.item.id }, + }, + }); + } else if (value.item.type === 'shell_call') { + ongoingToolCalls[value.output_index] = undefined; + + controller.enqueue({ + type: 'tool-call', + toolCallId: value.item.call_id, + toolName: toolNameMapping.toCustomToolName('shell'), + input: JSON.stringify({ + action: { + commands: value.item.action.commands, + }, + } satisfies InferSchema), + ...(isShellProviderExecuted && { + providerExecuted: true, + }), + providerMetadata: { + [providerOptionsName]: { itemId: value.item.id }, + }, + }); + } else if (value.item.type === 'shell_call_output') { + controller.enqueue({ + type: 'tool-result', + toolCallId: value.item.call_id, + toolName: toolNameMapping.toCustomToolName('shell'), + result: { + output: value.item.output.map( + (item: { + stdout: string; + stderr: string; + outcome: + | { type: 'exit'; exit_code: number } + | { type: 'timeout' }; + }) => ({ + stdout: item.stdout, + stderr: item.stderr, + outcome: + item.outcome.type === 'exit' + ? { + type: 'exit' as const, + exitCode: item.outcome.exit_code, + } + : { type: 'timeout' as const }, + }), + ), + } satisfies InferSchema, + }); + } else if (value.item.type === 'reasoning') { + const activeReasoningPart = activeReasoning[value.item.id]; + + // get all active or can-conclude summary parts' ids + // to conclude ongoing reasoning parts: + const summaryPartIndices = Object.entries( + activeReasoningPart.summaryParts, + ) + .filter( + ([_, status]) => + status === 'active' || status === 'can-conclude', + ) + .map(([summaryIndex]) => summaryIndex); + + for (const summaryIndex of summaryPartIndices) { + controller.enqueue({ + type: 'reasoning-end', + id: `${value.item.id}:${summaryIndex}`, + providerMetadata: { + [providerOptionsName]: { + itemId: value.item.id, + reasoningEncryptedContent: + value.item.encrypted_content ?? null, + } satisfies ResponsesReasoningProviderMetadata, + }, + }); + } + + delete activeReasoning[value.item.id]; + } + } else if (isResponseFunctionCallArgumentsDeltaChunk(value)) { + const toolCall = ongoingToolCalls[value.output_index]; + + if (toolCall != null) { + controller.enqueue({ + type: 'tool-input-delta', + id: toolCall.toolCallId, + delta: value.delta, + }); + } + } else if (isResponseCustomToolCallInputDeltaChunk(value)) { + const toolCall = ongoingToolCalls[value.output_index]; + + if (toolCall != null) { + controller.enqueue({ + type: 'tool-input-delta', + id: toolCall.toolCallId, + delta: value.delta, + }); + } + } else if (isResponseApplyPatchCallOperationDiffDeltaChunk(value)) { + const toolCall = ongoingToolCalls[value.output_index]; + + if (toolCall?.applyPatch) { + controller.enqueue({ + type: 'tool-input-delta', + id: toolCall.toolCallId, + delta: escapeJSONDelta(value.delta), + }); + + toolCall.applyPatch.hasDiff = true; + } + } else if (isResponseApplyPatchCallOperationDiffDoneChunk(value)) { + const toolCall = ongoingToolCalls[value.output_index]; + + if (toolCall?.applyPatch && !toolCall.applyPatch.endEmitted) { + if (!toolCall.applyPatch.hasDiff) { + controller.enqueue({ + type: 'tool-input-delta', + id: toolCall.toolCallId, + delta: escapeJSONDelta(value.diff), + }); + + toolCall.applyPatch.hasDiff = true; + } + + controller.enqueue({ + type: 'tool-input-delta', + id: toolCall.toolCallId, + delta: '"}}', + }); + + controller.enqueue({ + type: 'tool-input-end', + id: toolCall.toolCallId, + }); + + toolCall.applyPatch.endEmitted = true; + } + } else if (isResponseImageGenerationCallPartialImageChunk(value)) { + controller.enqueue({ + type: 'tool-result', + toolCallId: value.item_id, + toolName: toolNameMapping.toCustomToolName('image_generation'), + result: { + result: value.partial_image_b64, + } satisfies InferSchema, + preliminary: true, + }); + } else if (isResponseCodeInterpreterCallCodeDeltaChunk(value)) { + const toolCall = ongoingToolCalls[value.output_index]; + + if (toolCall != null) { + controller.enqueue({ + type: 'tool-input-delta', + id: toolCall.toolCallId, + delta: escapeJSONDelta(value.delta), + }); + } + } else if (isResponseCodeInterpreterCallCodeDoneChunk(value)) { + const toolCall = ongoingToolCalls[value.output_index]; + + if (toolCall != null) { + controller.enqueue({ + type: 'tool-input-delta', + id: toolCall.toolCallId, + delta: '"}', + }); + + controller.enqueue({ + type: 'tool-input-end', + id: toolCall.toolCallId, + }); + + // immediately send the tool call after the input end: + controller.enqueue({ + type: 'tool-call', + toolCallId: toolCall.toolCallId, + toolName: + toolNameMapping.toCustomToolName('code_interpreter'), + input: JSON.stringify({ + code: value.code, + containerId: toolCall.codeInterpreter!.containerId, + } satisfies InferSchema), + providerExecuted: true, + }); + } + } else if (isResponseCreatedChunk(value)) { + responseId = value.response.id; + controller.enqueue({ + type: 'response-metadata', + id: value.response.id, + timestamp: new Date(value.response.created_at * 1000), + modelId: value.response.model, + }); + } else if (isTextDeltaChunk(value)) { + controller.enqueue({ + type: 'text-delta', + id: value.item_id, + delta: value.delta, + }); + + if ( + options.providerOptions?.[providerOptionsName]?.logprobs && + value.logprobs + ) { + logprobs.push(value.logprobs); + } + } else if (value.type === 'response.reasoning_summary_part.added') { + // the first reasoning start is pushed in isResponseOutputItemAddedReasoningChunk + if (value.summary_index > 0) { + const activeReasoningPart = activeReasoning[value.item_id]!; + + activeReasoningPart.summaryParts[value.summary_index] = + 'active'; + + // since there is a new active summary part, we can conclude all can-conclude summary parts + for (const summaryIndex of Object.keys( + activeReasoningPart.summaryParts, + )) { + if ( + activeReasoningPart.summaryParts[summaryIndex] === + 'can-conclude' + ) { + controller.enqueue({ + type: 'reasoning-end', + id: `${value.item_id}:${summaryIndex}`, + providerMetadata: { + [providerOptionsName]: { + itemId: value.item_id, + } satisfies ResponsesReasoningProviderMetadata, + }, + }); + activeReasoningPart.summaryParts[summaryIndex] = + 'concluded'; + } + } + + controller.enqueue({ + type: 'reasoning-start', + id: `${value.item_id}:${value.summary_index}`, + providerMetadata: { + [providerOptionsName]: { + itemId: value.item_id, + reasoningEncryptedContent: + activeReasoning[value.item_id]?.encryptedContent ?? + null, + } satisfies ResponsesReasoningProviderMetadata, + }, + }); + } + } else if (value.type === 'response.reasoning_summary_text.delta') { + controller.enqueue({ + type: 'reasoning-delta', + id: `${value.item_id}:${value.summary_index}`, + delta: value.delta, + providerMetadata: { + [providerOptionsName]: { + itemId: value.item_id, + } satisfies ResponsesReasoningProviderMetadata, + }, + }); + } else if (value.type === 'response.reasoning_summary_part.done') { + // when OpenAI stores the message data, we can immediately conclude the reasoning part + // since we do not need to send the encrypted content. + if (store) { + controller.enqueue({ + type: 'reasoning-end', + id: `${value.item_id}:${value.summary_index}`, + providerMetadata: { + [providerOptionsName]: { + itemId: value.item_id, + } satisfies ResponsesReasoningProviderMetadata, + }, + }); + + // mark the summary part as concluded + activeReasoning[value.item_id]!.summaryParts[ + value.summary_index + ] = 'concluded'; + } else { + // mark the summary part as can-conclude only + // because we need to have a final summary part with the encrypted content + activeReasoning[value.item_id]!.summaryParts[ + value.summary_index + ] = 'can-conclude'; + } + } else if (isResponseFinishedChunk(value)) { + finishReason = { + unified: mapOpenAIResponseFinishReason({ + finishReason: value.response.incomplete_details?.reason, + hasFunctionCall, + }), + raw: value.response.incomplete_details?.reason ?? undefined, + }; + usage = value.response.usage; + if (typeof value.response.service_tier === 'string') { + serviceTier = value.response.service_tier; + } + } else if (isResponseFailedChunk(value)) { + const incompleteReason = + value.response.incomplete_details?.reason; + finishReason = { + unified: incompleteReason + ? mapOpenAIResponseFinishReason({ + finishReason: incompleteReason, + hasFunctionCall, + }) + : 'error', + raw: incompleteReason ?? 'error', + }; + usage = value.response.usage ?? undefined; + } else if (isResponseAnnotationAddedChunk(value)) { + ongoingAnnotations.push(value.annotation); + if (value.annotation.type === 'url_citation') { + controller.enqueue({ + type: 'source', + sourceType: 'url', + id: self.config.generateId?.() ?? generateId(), + url: value.annotation.url, + title: value.annotation.title, + }); + } else if (value.annotation.type === 'file_citation') { + controller.enqueue({ + type: 'source', + sourceType: 'document', + id: self.config.generateId?.() ?? generateId(), + mediaType: 'text/plain', + title: value.annotation.filename, + filename: value.annotation.filename, + providerMetadata: { + [providerOptionsName]: { + type: value.annotation.type, + fileId: value.annotation.file_id, + index: value.annotation.index, + } satisfies Extract< + ResponsesSourceDocumentProviderMetadata, + { type: 'file_citation' } + >, + }, + }); + } else if (value.annotation.type === 'container_file_citation') { + controller.enqueue({ + type: 'source', + sourceType: 'document', + id: self.config.generateId?.() ?? generateId(), + mediaType: 'text/plain', + title: value.annotation.filename, + filename: value.annotation.filename, + providerMetadata: { + [providerOptionsName]: { + type: value.annotation.type, + fileId: value.annotation.file_id, + containerId: value.annotation.container_id, + } satisfies Extract< + ResponsesSourceDocumentProviderMetadata, + { type: 'container_file_citation' } + >, + }, + }); + } else if (value.annotation.type === 'file_path') { + controller.enqueue({ + type: 'source', + sourceType: 'document', + id: self.config.generateId?.() ?? generateId(), + mediaType: 'application/octet-stream', + title: value.annotation.file_id, + filename: value.annotation.file_id, + providerMetadata: { + [providerOptionsName]: { + type: value.annotation.type, + fileId: value.annotation.file_id, + index: value.annotation.index, + } satisfies Extract< + ResponsesSourceDocumentProviderMetadata, + { type: 'file_path' } + >, + }, + }); + } + } else if (isErrorChunk(value)) { + controller.enqueue({ type: 'error', error: value }); + } + }, + + flush(controller) { + const providerMetadata: SharedV3ProviderMetadata = { + [providerOptionsName]: { + responseId: responseId, + ...(logprobs.length > 0 ? { logprobs } : {}), + ...(serviceTier !== undefined ? { serviceTier } : {}), + } satisfies ResponsesProviderMetadata, + }; + + controller.enqueue({ + type: 'finish', + finishReason, + usage: convertOpenAIResponsesUsage(usage), + providerMetadata, + }); + }, + }), + ), + request: { body }, + response: { headers: responseHeaders }, + }; + } +} + +function isTextDeltaChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesChunk & { type: 'response.output_text.delta' } { + return chunk.type === 'response.output_text.delta'; +} + +function isResponseOutputItemDoneChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesChunk & { type: 'response.output_item.done' } { + return chunk.type === 'response.output_item.done'; +} + +function isResponseFinishedChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesChunk & { + type: 'response.completed' | 'response.incomplete'; +} { + return ( + chunk.type === 'response.completed' || chunk.type === 'response.incomplete' + ); +} + +function isResponseFailedChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesChunk & { type: 'response.failed' } { + return chunk.type === 'response.failed'; +} + +function isResponseCreatedChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesChunk & { type: 'response.created' } { + return chunk.type === 'response.created'; +} + +function isResponseFunctionCallArgumentsDeltaChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesChunk & { + type: 'response.function_call_arguments.delta'; +} { + return chunk.type === 'response.function_call_arguments.delta'; +} + +function isResponseCustomToolCallInputDeltaChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesChunk & { + type: 'response.custom_tool_call_input.delta'; +} { + return chunk.type === 'response.custom_tool_call_input.delta'; +} + +function isResponseImageGenerationCallPartialImageChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesChunk & { + type: 'response.image_generation_call.partial_image'; +} { + return chunk.type === 'response.image_generation_call.partial_image'; +} + +function isResponseCodeInterpreterCallCodeDeltaChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesChunk & { + type: 'response.code_interpreter_call_code.delta'; +} { + return chunk.type === 'response.code_interpreter_call_code.delta'; +} + +function isResponseCodeInterpreterCallCodeDoneChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesChunk & { + type: 'response.code_interpreter_call_code.done'; +} { + return chunk.type === 'response.code_interpreter_call_code.done'; +} + +function isResponseApplyPatchCallOperationDiffDeltaChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesApplyPatchOperationDiffDeltaChunk { + return chunk.type === 'response.apply_patch_call_operation_diff.delta'; +} + +function isResponseApplyPatchCallOperationDiffDoneChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesApplyPatchOperationDiffDoneChunk { + return chunk.type === 'response.apply_patch_call_operation_diff.done'; +} + +function isResponseOutputItemAddedChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesChunk & { type: 'response.output_item.added' } { + return chunk.type === 'response.output_item.added'; +} + +function isResponseAnnotationAddedChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesChunk & { + type: 'response.output_text.annotation.added'; +} { + return chunk.type === 'response.output_text.annotation.added'; +} + +function isErrorChunk( + chunk: OpenAIResponsesChunk, +): chunk is OpenAIResponsesChunk & { type: 'error' } { + return chunk.type === 'error'; +} + +function mapWebSearchOutput( + action: OpenAIResponsesWebSearchAction | null | undefined, +): InferSchema { + if (action == null) { + return {}; + } + + switch (action.type) { + case 'search': + return { + action: { type: 'search', query: action.query ?? undefined }, + // include sources when provided by the Responses API (behind include flag) + ...(action.sources != null && { sources: action.sources }), + }; + case 'open_page': + return { action: { type: 'openPage', url: action.url } }; + case 'find_in_page': + return { + action: { + type: 'findInPage', + url: action.url, + pattern: action.pattern, + }, + }; + } +} + +// The delta is embedded in a JSON string. +// To escape it, we use JSON.stringify and slice to remove the outer quotes. +function escapeJSONDelta(delta: string) { + return JSON.stringify(delta).slice(1, -1); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-options.ts new file mode 100644 index 000000000..4477d7a12 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-options.ts @@ -0,0 +1,317 @@ +import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +/** + * `top_logprobs` request body argument can be set to an integer between + * 0 and 20 specifying the number of most likely tokens to return at each + * token position, each with an associated log probability. + * + * @see https://platform.openai.com/docs/api-reference/responses/create#responses_create-top_logprobs + */ +export const TOP_LOGPROBS_MAX = 20; + +export const openaiResponsesReasoningModelIds = [ + 'o1', + 'o1-2024-12-17', + 'o3', + 'o3-2025-04-16', + 'o3-mini', + 'o3-mini-2025-01-31', + 'o4-mini', + 'o4-mini-2025-04-16', + 'gpt-5', + 'gpt-5-2025-08-07', + 'gpt-5-codex', + 'gpt-5-mini', + 'gpt-5-mini-2025-08-07', + 'gpt-5-nano', + 'gpt-5-nano-2025-08-07', + 'gpt-5-pro', + 'gpt-5-pro-2025-10-06', + 'gpt-5.1', + 'gpt-5.1-chat-latest', + 'gpt-5.1-codex-mini', + 'gpt-5.1-codex', + 'gpt-5.1-codex-max', + 'gpt-5.2', + 'gpt-5.2-chat-latest', + 'gpt-5.2-pro', + 'gpt-5.2-codex', + 'gpt-5.3-chat-latest', + 'gpt-5.3-codex', + 'gpt-5.4', + 'gpt-5.4-2026-03-05', + 'gpt-5.4-mini', + 'gpt-5.4-mini-2026-03-17', + 'gpt-5.4-nano', + 'gpt-5.4-nano-2026-03-17', + 'gpt-5.4-pro', + 'gpt-5.4-pro-2026-03-05', +] as const; + +export const openaiResponsesModelIds = [ + 'gpt-4.1', + 'gpt-4.1-2025-04-14', + 'gpt-4.1-mini', + 'gpt-4.1-mini-2025-04-14', + 'gpt-4.1-nano', + 'gpt-4.1-nano-2025-04-14', + 'gpt-4o', + 'gpt-4o-2024-05-13', + 'gpt-4o-2024-08-06', + 'gpt-4o-2024-11-20', + 'gpt-4o-audio-preview', + 'gpt-4o-audio-preview-2024-12-17', + 'gpt-4o-search-preview', + 'gpt-4o-search-preview-2025-03-11', + 'gpt-4o-mini-search-preview', + 'gpt-4o-mini-search-preview-2025-03-11', + 'gpt-4o-mini', + 'gpt-4o-mini-2024-07-18', + 'gpt-3.5-turbo-0125', + 'gpt-3.5-turbo', + 'gpt-3.5-turbo-1106', + 'gpt-5-chat-latest', + ...openaiResponsesReasoningModelIds, +] as const; + +export type OpenAIResponsesModelId = + | 'gpt-3.5-turbo-0125' + | 'gpt-3.5-turbo-1106' + | 'gpt-3.5-turbo' + | 'gpt-4.1-2025-04-14' + | 'gpt-4.1-mini-2025-04-14' + | 'gpt-4.1-mini' + | 'gpt-4.1-nano-2025-04-14' + | 'gpt-4.1-nano' + | 'gpt-4.1' + | 'gpt-4o-2024-05-13' + | 'gpt-4o-2024-08-06' + | 'gpt-4o-2024-11-20' + | 'gpt-4o-mini-2024-07-18' + | 'gpt-4o-mini' + | 'gpt-4o' + | 'gpt-5.1' + | 'gpt-5.1-2025-11-13' + | 'gpt-5.1-chat-latest' + | 'gpt-5.1-codex-mini' + | 'gpt-5.1-codex' + | 'gpt-5.1-codex-max' + | 'gpt-5.2' + | 'gpt-5.2-2025-12-11' + | 'gpt-5.2-chat-latest' + | 'gpt-5.2-pro' + | 'gpt-5.2-pro-2025-12-11' + | 'gpt-5.2-codex' + | 'gpt-5.3-chat-latest' + | 'gpt-5.3-codex' + | 'gpt-5.4' + | 'gpt-5.4-2026-03-05' + | 'gpt-5.4-mini' + | 'gpt-5.4-mini-2026-03-17' + | 'gpt-5.4-nano' + | 'gpt-5.4-nano-2026-03-17' + | 'gpt-5.4-pro' + | 'gpt-5.4-pro-2026-03-05' + | 'gpt-5-2025-08-07' + | 'gpt-5-chat-latest' + | 'gpt-5-codex' + | 'gpt-5-mini-2025-08-07' + | 'gpt-5-mini' + | 'gpt-5-nano-2025-08-07' + | 'gpt-5-nano' + | 'gpt-5-pro-2025-10-06' + | 'gpt-5-pro' + | 'gpt-5' + | 'o1-2024-12-17' + | 'o1' + | 'o3-2025-04-16' + | 'o3-mini-2025-01-31' + | 'o3-mini' + | 'o3' + | 'o4-mini' + | 'o4-mini-2025-04-16' + | (string & {}); + +// TODO AI SDK 6: use optional here instead of nullish +export const openaiLanguageModelResponsesOptionsSchema = lazySchema(() => + zodSchema( + z.object({ + /** + * The ID of the OpenAI Conversation to continue. + * You must create a conversation first via the OpenAI API. + * Cannot be used in conjunction with `previousResponseId`. + * Defaults to `undefined`. + * @see https://platform.openai.com/docs/api-reference/conversations/create + */ + conversation: z.string().nullish(), + + /** + * The set of extra fields to include in the response (advanced, usually not needed). + * Example values: 'reasoning.encrypted_content', 'file_search_call.results', 'message.output_text.logprobs'. + */ + include: z + .array( + z.enum([ + 'reasoning.encrypted_content', // handled internally by default, only needed for unknown reasoning models + 'file_search_call.results', + 'message.output_text.logprobs', + ]), + ) + .nullish(), + + /** + * Instructions for the model. + * They can be used to change the system or developer message when continuing a conversation using the `previousResponseId` option. + * Defaults to `undefined`. + */ + instructions: z.string().nullish(), + + /** + * Return the log probabilities of the tokens. Including logprobs will increase + * the response size and can slow down response times. However, it can + * be useful to better understand how the model is behaving. + * + * Setting to true will return the log probabilities of the tokens that + * were generated. + * + * Setting to a number will return the log probabilities of the top n + * tokens that were generated. + * + * @see https://platform.openai.com/docs/api-reference/responses/create + * @see https://cookbook.openai.com/examples/using_logprobs + */ + logprobs: z + .union([z.boolean(), z.number().min(1).max(TOP_LOGPROBS_MAX)]) + .optional(), + + /** + * The maximum number of total calls to built-in tools that can be processed in a response. + * This maximum number applies across all built-in tool calls, not per individual tool. + * Any further attempts to call a tool by the model will be ignored. + */ + maxToolCalls: z.number().nullish(), + + /** + * Additional metadata to store with the generation. + */ + metadata: z.any().nullish(), + + /** + * Whether to use parallel tool calls. Defaults to `true`. + */ + parallelToolCalls: z.boolean().nullish(), + + /** + * The ID of the previous response. You can use it to continue a conversation. + * Defaults to `undefined`. + */ + previousResponseId: z.string().nullish(), + + /** + * Sets a cache key to tie this prompt to cached prefixes for better caching performance. + */ + promptCacheKey: z.string().nullish(), + + /** + * The retention policy for the prompt cache. + * - 'in_memory': Default. Standard prompt caching behavior. + * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours. + * Currently only available for 5.1 series models. + * + * @default 'in_memory' + */ + promptCacheRetention: z.enum(['in_memory', '24h']).nullish(), + + /** + * Reasoning effort for reasoning models. Defaults to `medium`. If you use + * `providerOptions` to set the `reasoningEffort` option, this model setting will be ignored. + * Valid values: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' + * + * The 'none' type for `reasoningEffort` is only available for OpenAI's GPT-5.1 + * models. Also, the 'xhigh' type for `reasoningEffort` is only available for + * OpenAI's GPT-5.1-Codex-Max model. Setting `reasoningEffort` to 'none' or 'xhigh' with unsupported models will result in + * an error. + */ + reasoningEffort: z.string().nullish(), + + /** + * Controls reasoning summary output from the model. + * Set to "auto" to automatically receive the richest level available, + * or "detailed" for comprehensive summaries. + */ + reasoningSummary: z.string().nullish(), + + /** + * The identifier for safety monitoring and tracking. + */ + safetyIdentifier: z.string().nullish(), + + /** + * Service tier for the request. + * Set to 'flex' for 50% cheaper processing at the cost of increased latency (available for o3, o4-mini, and gpt-5 models). + * Set to 'priority' for faster processing with Enterprise access (available for gpt-4, gpt-5, gpt-5-mini, o3, o4-mini; gpt-5-nano is not supported). + * + * Defaults to 'auto'. + */ + serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).nullish(), + + /** + * Whether to store the generation. Defaults to `true`. + */ + store: z.boolean().nullish(), + + /** + * Whether to use strict JSON schema validation. + * Defaults to `true`. + */ + strictJsonSchema: z.boolean().nullish(), + + /** + * Controls the verbosity of the model's responses. Lower values ('low') will result + * in more concise responses, while higher values ('high') will result in more verbose responses. + * Valid values: 'low', 'medium', 'high'. + */ + textVerbosity: z.enum(['low', 'medium', 'high']).nullish(), + + /** + * Controls output truncation. 'auto' (default) performs truncation automatically; + * 'disabled' turns truncation off. + */ + truncation: z.enum(['auto', 'disabled']).nullish(), + + /** + * A unique identifier representing your end-user, which can help OpenAI to + * monitor and detect abuse. + * Defaults to `undefined`. + * @see https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids + */ + user: z.string().nullish(), + + /** + * Override the system message mode for this model. + * - 'system': Use the 'system' role for system messages (default for most models) + * - 'developer': Use the 'developer' role for system messages (used by reasoning models) + * - 'remove': Remove system messages entirely + * + * If not specified, the mode is automatically determined based on the model. + */ + systemMessageMode: z.enum(['system', 'developer', 'remove']).optional(), + + /** + * Force treating this model as a reasoning model. + * + * This is useful for "stealth" reasoning models (e.g. via a custom baseURL) + * where the model ID is not recognized by the SDK's allowlist. + * + * When enabled, the SDK applies reasoning-model parameter compatibility rules + * and defaults `systemMessageMode` to `developer` unless overridden. + */ + forceReasoning: z.boolean().optional(), + }), + ), +); + +export type OpenAILanguageModelResponsesOptions = InferSchema< + typeof openaiLanguageModelResponsesOptionsSchema +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-prepare-tools.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-prepare-tools.ts new file mode 100644 index 000000000..f96b5b667 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-prepare-tools.ts @@ -0,0 +1,433 @@ +import { + LanguageModelV3CallOptions, + SharedV3Warning, + UnsupportedFunctionalityError, +} from '@ai-sdk/provider'; +import { ToolNameMapping, validateTypes } from '@ai-sdk/provider-utils'; +import { codeInterpreterArgsSchema } from '../tool/code-interpreter'; +import { fileSearchArgsSchema } from '../tool/file-search'; +import { imageGenerationArgsSchema } from '../tool/image-generation'; +import { customArgsSchema } from '../tool/custom'; +import { mcpArgsSchema } from '../tool/mcp'; +import { shellArgsSchema } from '../tool/shell'; +import { toolSearchArgsSchema } from '../tool/tool-search'; +import { webSearchArgsSchema } from '../tool/web-search'; +import { webSearchPreviewArgsSchema } from '../tool/web-search-preview'; +import { OpenAIResponsesTool } from './openai-responses-api'; + +export async function prepareResponsesTools({ + tools, + toolChoice, + toolNameMapping, + customProviderToolNames, +}: { + tools: LanguageModelV3CallOptions['tools']; + toolChoice: LanguageModelV3CallOptions['toolChoice'] | undefined; + toolNameMapping?: ToolNameMapping; + customProviderToolNames?: Set; +}): Promise<{ + tools?: Array; + toolChoice?: + | 'auto' + | 'none' + | 'required' + | { type: 'file_search' } + | { type: 'web_search_preview' } + | { type: 'web_search' } + | { type: 'function'; name: string } + | { type: 'custom'; name: string } + | { type: 'code_interpreter' } + | { type: 'mcp' } + | { type: 'image_generation' } + | { type: 'apply_patch' }; + toolWarnings: SharedV3Warning[]; +}> { + // when the tools array is empty, change it to undefined to prevent errors: + tools = tools?.length ? tools : undefined; + + const toolWarnings: SharedV3Warning[] = []; + + if (tools == null) { + return { tools: undefined, toolChoice: undefined, toolWarnings }; + } + + const openaiTools: Array = []; + const resolvedCustomProviderToolNames = + customProviderToolNames ?? new Set(); + + for (const tool of tools) { + switch (tool.type) { + case 'function': { + const openaiOptions = tool.providerOptions?.openai as + | { deferLoading?: boolean } + | undefined; + const deferLoading = openaiOptions?.deferLoading; + + openaiTools.push({ + type: 'function', + name: tool.name, + description: tool.description, + parameters: tool.inputSchema, + ...(tool.strict != null ? { strict: tool.strict } : {}), + ...(deferLoading != null ? { defer_loading: deferLoading } : {}), + }); + break; + } + case 'provider': { + switch (tool.id) { + case 'openai.file_search': { + const args = await validateTypes({ + value: tool.args, + schema: fileSearchArgsSchema, + }); + + openaiTools.push({ + type: 'file_search', + vector_store_ids: args.vectorStoreIds, + max_num_results: args.maxNumResults, + ranking_options: args.ranking + ? { + ranker: args.ranking.ranker, + score_threshold: args.ranking.scoreThreshold, + } + : undefined, + filters: args.filters, + }); + + break; + } + case 'openai.local_shell': { + openaiTools.push({ + type: 'local_shell', + }); + break; + } + case 'openai.shell': { + const args = await validateTypes({ + value: tool.args, + schema: shellArgsSchema, + }); + + openaiTools.push({ + type: 'shell', + ...(args.environment && { + environment: mapShellEnvironment(args.environment), + }), + }); + break; + } + case 'openai.apply_patch': { + openaiTools.push({ + type: 'apply_patch', + }); + break; + } + case 'openai.web_search_preview': { + const args = await validateTypes({ + value: tool.args, + schema: webSearchPreviewArgsSchema, + }); + openaiTools.push({ + type: 'web_search_preview', + search_context_size: args.searchContextSize, + user_location: args.userLocation, + }); + break; + } + case 'openai.web_search': { + const args = await validateTypes({ + value: tool.args, + schema: webSearchArgsSchema, + }); + openaiTools.push({ + type: 'web_search', + filters: + args.filters != null + ? { allowed_domains: args.filters.allowedDomains } + : undefined, + external_web_access: args.externalWebAccess, + search_context_size: args.searchContextSize, + user_location: args.userLocation, + }); + break; + } + case 'openai.code_interpreter': { + const args = await validateTypes({ + value: tool.args, + schema: codeInterpreterArgsSchema, + }); + + openaiTools.push({ + type: 'code_interpreter', + container: + args.container == null + ? { type: 'auto', file_ids: undefined } + : typeof args.container === 'string' + ? args.container + : { type: 'auto', file_ids: args.container.fileIds }, + }); + break; + } + case 'openai.image_generation': { + const args = await validateTypes({ + value: tool.args, + schema: imageGenerationArgsSchema, + }); + + openaiTools.push({ + type: 'image_generation', + background: args.background, + input_fidelity: args.inputFidelity, + input_image_mask: args.inputImageMask + ? { + file_id: args.inputImageMask.fileId, + image_url: args.inputImageMask.imageUrl, + } + : undefined, + model: args.model, + moderation: args.moderation, + partial_images: args.partialImages, + quality: args.quality, + output_compression: args.outputCompression, + output_format: args.outputFormat, + size: args.size, + }); + break; + } + case 'openai.mcp': { + const args = await validateTypes({ + value: tool.args, + schema: mcpArgsSchema, + }); + + const mapApprovalFilter = (filter: { toolNames?: string[] }) => ({ + tool_names: filter.toolNames, + }); + + const requireApproval = args.requireApproval; + const requireApprovalParam: + | 'always' + | 'never' + | { + never?: { tool_names?: string[] }; + } + | undefined = + requireApproval == null + ? undefined + : typeof requireApproval === 'string' + ? requireApproval + : requireApproval.never != null + ? { never: mapApprovalFilter(requireApproval.never) } + : undefined; + + openaiTools.push({ + type: 'mcp', + server_label: args.serverLabel, + allowed_tools: Array.isArray(args.allowedTools) + ? args.allowedTools + : args.allowedTools + ? { + read_only: args.allowedTools.readOnly, + tool_names: args.allowedTools.toolNames, + } + : undefined, + authorization: args.authorization, + connector_id: args.connectorId, + headers: args.headers, + require_approval: requireApprovalParam ?? 'never', + server_description: args.serverDescription, + server_url: args.serverUrl, + }); + + break; + } + case 'openai.custom': { + const args = await validateTypes({ + value: tool.args, + schema: customArgsSchema, + }); + + openaiTools.push({ + type: 'custom', + name: args.name, + description: args.description, + format: args.format, + }); + resolvedCustomProviderToolNames.add(args.name); + break; + } + case 'openai.tool_search': { + const args = await validateTypes({ + value: tool.args, + schema: toolSearchArgsSchema, + }); + openaiTools.push({ + type: 'tool_search', + ...(args.execution != null ? { execution: args.execution } : {}), + ...(args.description != null + ? { description: args.description } + : {}), + ...(args.parameters != null + ? { parameters: args.parameters } + : {}), + }); + break; + } + } + break; + } + default: + toolWarnings.push({ + type: 'unsupported', + feature: `function tool ${tool}`, + }); + break; + } + } + + if (toolChoice == null) { + return { tools: openaiTools, toolChoice: undefined, toolWarnings }; + } + + const type = toolChoice.type; + + switch (type) { + case 'auto': + case 'none': + case 'required': + return { tools: openaiTools, toolChoice: type, toolWarnings }; + case 'tool': { + const resolvedToolName = + toolNameMapping?.toProviderToolName(toolChoice.toolName) ?? + toolChoice.toolName; + + return { + tools: openaiTools, + toolChoice: + resolvedToolName === 'code_interpreter' || + resolvedToolName === 'file_search' || + resolvedToolName === 'image_generation' || + resolvedToolName === 'web_search_preview' || + resolvedToolName === 'web_search' || + resolvedToolName === 'mcp' || + resolvedToolName === 'apply_patch' + ? { type: resolvedToolName } + : resolvedCustomProviderToolNames.has(resolvedToolName) + ? { type: 'custom', name: resolvedToolName } + : { type: 'function', name: resolvedToolName }, + toolWarnings, + }; + } + default: { + const _exhaustiveCheck: never = type; + throw new UnsupportedFunctionalityError({ + functionality: `tool choice type: ${_exhaustiveCheck}`, + }); + } + } +} + +function mapShellEnvironment(environment: { + type?: string; + [key: string]: unknown; +}): NonNullable< + Extract['environment'] +> { + if (environment.type === 'containerReference') { + const env = environment as { + type: 'containerReference'; + containerId: string; + }; + return { + type: 'container_reference', + container_id: env.containerId, + }; + } + + if (environment.type === 'containerAuto') { + const env = environment as { + type: 'containerAuto'; + fileIds?: string[]; + memoryLimit?: '1g' | '4g' | '16g' | '64g'; + networkPolicy?: { + type: string; + allowedDomains?: string[]; + domainSecrets?: Array<{ + domain: string; + name: string; + value: string; + }>; + }; + skills?: Array<{ + type: string; + skillId?: string; + version?: string; + name?: string; + description?: string; + source?: { type: string; mediaType: string; data: string }; + }>; + }; + + return { + type: 'container_auto', + file_ids: env.fileIds, + memory_limit: env.memoryLimit, + network_policy: + env.networkPolicy == null + ? undefined + : env.networkPolicy.type === 'disabled' + ? { type: 'disabled' as const } + : { + type: 'allowlist' as const, + allowed_domains: env.networkPolicy.allowedDomains!, + domain_secrets: env.networkPolicy.domainSecrets, + }, + skills: mapShellSkills(env.skills), + }; + } + + const env = environment as { + type?: 'local'; + skills?: Array<{ + name: string; + description: string; + path: string; + }>; + }; + return { + type: 'local', + skills: env.skills, + }; +} + +function mapShellSkills( + skills: + | Array<{ + type: string; + skillId?: string; + version?: string; + name?: string; + description?: string; + source?: { type: string; mediaType: string; data: string }; + }> + | undefined, +) { + return skills?.map(skill => + skill.type === 'skillReference' + ? { + type: 'skill_reference' as const, + skill_id: skill.skillId!, + version: skill.version, + } + : { + type: 'inline' as const, + name: skill.name!, + description: skill.description!, + source: { + type: 'base64' as const, + media_type: skill.source!.mediaType as 'application/zip', + data: skill.source!.data, + }, + }, + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-provider-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-provider-metadata.ts new file mode 100644 index 000000000..a0e245033 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/responses/openai-responses-provider-metadata.ts @@ -0,0 +1,62 @@ +import { + openaiResponsesChunkSchema, + OpenAIResponsesLogprobs, +} from './openai-responses-api'; +import { InferSchema } from '@ai-sdk/provider-utils'; + +type OpenaiResponsesChunk = InferSchema; + +type ResponsesOutputTextAnnotationProviderMetadata = Extract< + OpenaiResponsesChunk, + { type: 'response.output_text.annotation.added' } +>['annotation']; + +export type ResponsesProviderMetadata = { + responseId: string | null | undefined; + logprobs?: Array; + serviceTier?: string; +}; + +export type ResponsesReasoningProviderMetadata = { + itemId: string; + reasoningEncryptedContent?: string | null; +}; + +export type OpenaiResponsesReasoningProviderMetadata = { + openai: ResponsesReasoningProviderMetadata; +}; + +export type OpenaiResponsesProviderMetadata = { + openai: ResponsesProviderMetadata; +}; + +export type ResponsesTextProviderMetadata = { + itemId: string; + phase?: 'commentary' | 'final_answer' | null; + annotations?: Array; +}; + +export type OpenaiResponsesTextProviderMetadata = { + openai: ResponsesTextProviderMetadata; +}; + +export type ResponsesSourceDocumentProviderMetadata = + | { + type: 'file_citation'; + fileId: string; + index: number; + } + | { + type: 'container_file_citation'; + fileId: string; + containerId: string; + } + | { + type: 'file_path'; + fileId: string; + index: number; + }; + +export type OpenaiResponsesSourceDocumentProviderMetadata = { + openai: ResponsesSourceDocumentProviderMetadata; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/speech/openai-speech-api.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/speech/openai-speech-api.ts new file mode 100644 index 000000000..6dd14415f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/speech/openai-speech-api.ts @@ -0,0 +1,38 @@ +export type OpenAISpeechAPITypes = { + /** + * The voice to use when generating the audio. + * Supported voices are alloy, ash, ballad, coral, echo, fable, onyx, nova, sage, shimmer, and verse. + * @default 'alloy' + */ + voice?: + | 'alloy' + | 'ash' + | 'ballad' + | 'coral' + | 'echo' + | 'fable' + | 'onyx' + | 'nova' + | 'sage' + | 'shimmer' + | 'verse'; + + /** + * The speed of the generated audio. + * Select a value from 0.25 to 4.0. + * @default 1.0 + */ + speed?: number; + + /** + * The format of the generated audio. + * @default 'mp3' + */ + response_format?: 'mp3' | 'opus' | 'aac' | 'flac' | 'wav' | 'pcm'; + + /** + * Instructions for the speech generation e.g. "Speak in a slow and steady tone". + * Does not work with tts-1 or tts-1-hd. + */ + instructions?: string; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/speech/openai-speech-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/speech/openai-speech-model.ts new file mode 100644 index 000000000..05a2dea35 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/speech/openai-speech-model.ts @@ -0,0 +1,137 @@ +import { SpeechModelV3, SharedV3Warning } from '@ai-sdk/provider'; +import { + combineHeaders, + createBinaryResponseHandler, + parseProviderOptions, + postJsonToApi, +} from '@ai-sdk/provider-utils'; +import { OpenAIConfig } from '../openai-config'; +import { openaiFailedResponseHandler } from '../openai-error'; +import { OpenAISpeechAPITypes } from './openai-speech-api'; +import { + openaiSpeechModelOptionsSchema, + OpenAISpeechModelId, +} from './openai-speech-options'; + +interface OpenAISpeechModelConfig extends OpenAIConfig { + _internal?: { + currentDate?: () => Date; + }; +} + +export class OpenAISpeechModel implements SpeechModelV3 { + readonly specificationVersion = 'v3'; + + get provider(): string { + return this.config.provider; + } + + constructor( + readonly modelId: OpenAISpeechModelId, + private readonly config: OpenAISpeechModelConfig, + ) {} + + private async getArgs({ + text, + voice = 'alloy', + outputFormat = 'mp3', + speed, + instructions, + language, + providerOptions, + }: Parameters[0]) { + const warnings: SharedV3Warning[] = []; + + // Parse provider options + const openAIOptions = await parseProviderOptions({ + provider: 'openai', + providerOptions, + schema: openaiSpeechModelOptionsSchema, + }); + + // Create request body + const requestBody: Record = { + model: this.modelId, + input: text, + voice, + response_format: 'mp3', + speed, + instructions, + }; + + if (outputFormat) { + if (['mp3', 'opus', 'aac', 'flac', 'wav', 'pcm'].includes(outputFormat)) { + requestBody.response_format = outputFormat; + } else { + warnings.push({ + type: 'unsupported', + feature: 'outputFormat', + details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`, + }); + } + } + + // Add provider-specific options + if (openAIOptions) { + const speechModelOptions: OpenAISpeechAPITypes = {}; + + for (const key in speechModelOptions) { + const value = speechModelOptions[key as keyof OpenAISpeechAPITypes]; + if (value !== undefined) { + requestBody[key] = value; + } + } + } + + if (language) { + warnings.push({ + type: 'unsupported', + feature: 'language', + details: `OpenAI speech models do not support language selection. Language parameter "${language}" was ignored.`, + }); + } + + return { + requestBody, + warnings, + }; + } + + async doGenerate( + options: Parameters[0], + ): Promise>> { + const currentDate = this.config._internal?.currentDate?.() ?? new Date(); + const { requestBody, warnings } = await this.getArgs(options); + + const { + value: audio, + responseHeaders, + rawValue: rawResponse, + } = await postJsonToApi({ + url: this.config.url({ + path: '/audio/speech', + modelId: this.modelId, + }), + headers: combineHeaders(this.config.headers(), options.headers), + body: requestBody, + failedResponseHandler: openaiFailedResponseHandler, + successfulResponseHandler: createBinaryResponseHandler(), + abortSignal: options.abortSignal, + fetch: this.config.fetch, + }); + + return { + audio, + warnings, + request: { + body: JSON.stringify(requestBody), + }, + response: { + timestamp: currentDate, + modelId: this.modelId, + headers: responseHeaders, + body: rawResponse, + }, + }; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/speech/openai-speech-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/speech/openai-speech-options.ts new file mode 100644 index 000000000..f2442c010 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/speech/openai-speech-options.ts @@ -0,0 +1,26 @@ +import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export type OpenAISpeechModelId = + | 'tts-1' + | 'tts-1-1106' + | 'tts-1-hd' + | 'tts-1-hd-1106' + | 'gpt-4o-mini-tts' + | 'gpt-4o-mini-tts-2025-03-20' + | 'gpt-4o-mini-tts-2025-12-15' + | (string & {}); + +// https://platform.openai.com/docs/api-reference/audio/createSpeech +export const openaiSpeechModelOptionsSchema = lazySchema(() => + zodSchema( + z.object({ + instructions: z.string().nullish(), + speed: z.number().min(0.25).max(4.0).default(1.0).nullish(), + }), + ), +); + +export type OpenAISpeechModelOptions = InferSchema< + typeof openaiSpeechModelOptionsSchema +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/apply-patch.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/apply-patch.ts new file mode 100644 index 000000000..50b888679 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/apply-patch.ts @@ -0,0 +1,141 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +/** + * Schema for the apply_patch input - what the model sends. + * + * Refer the official spec here: https://platform.openai.com/docs/api-reference/responses/create#responses_create-input-input_item_list-item-apply_patch_tool_call + * + */ +export const applyPatchInputSchema = lazySchema(() => + zodSchema( + z.object({ + callId: z.string(), + operation: z.discriminatedUnion('type', [ + z.object({ + type: z.literal('create_file'), + path: z.string(), + diff: z.string(), + }), + z.object({ + type: z.literal('delete_file'), + path: z.string(), + }), + z.object({ + type: z.literal('update_file'), + path: z.string(), + diff: z.string(), + }), + ]), + }), + ), +); + +/** + * Schema for the apply_patch output - what we send back. + */ +export const applyPatchOutputSchema = lazySchema(() => + zodSchema( + z.object({ + status: z.enum(['completed', 'failed']), + output: z.string().optional(), + }), + ), +); + +/** + * Schema for tool arguments (configuration options). + * The apply_patch tool doesn't require any configuration options. + */ +export const applyPatchArgsSchema = lazySchema(() => zodSchema(z.object({}))); + +/** + * Type definitions for the apply_patch operations. + */ +export type ApplyPatchOperation = + | { + type: 'create_file'; + /** + * Path of the file to create relative to the workspace root. + */ + path: string; + /** + * Unified diff content to apply when creating the file. + */ + diff: string; + } + | { + type: 'delete_file'; + /** + * Path of the file to delete relative to the workspace root. + */ + path: string; + } + | { + type: 'update_file'; + /** + * Path of the file to update relative to the workspace root. + */ + path: string; + /** + * Unified diff content to apply to the existing file. + */ + diff: string; + }; + +/** + * The apply_patch tool lets GPT-5.1 create, update, and delete files in your + * codebase using structured diffs. Instead of just suggesting edits, the model + * emits patch operations that your application applies and then reports back on, + * enabling iterative, multi-step code editing workflows. + * + * The tool factory creates a provider-defined tool that: + * - Receives patch operations from the model (create_file, update_file, delete_file) + * - Returns the status of applying those patches (completed or failed) + * + */ +export const applyPatchToolFactory = createProviderToolFactoryWithOutputSchema< + { + /** + * The unique ID of the apply patch tool call generated by the model. + */ + callId: string; + + /** + * The specific create, delete, or update instruction for the apply_patch tool call. + */ + operation: ApplyPatchOperation; + }, + { + /** + * The status of the apply patch tool call output. + * - 'completed': The patch was applied successfully. + * - 'failed': The patch failed to apply. + */ + status: 'completed' | 'failed'; + + /** + * Optional human-readable log text from the apply patch tool + * (e.g., patch results or errors). + */ + output?: string; + }, + // No configuration options for apply_patch + {} +>({ + id: 'openai.apply_patch', + inputSchema: applyPatchInputSchema, + outputSchema: applyPatchOutputSchema, +}); + +/** + * The apply_patch tool lets GPT-5.1 create, update, and delete files in your + * codebase using structured diffs. Instead of just suggesting edits, the model + * emits patch operations that your application applies and then reports back on, + * enabling iterative, multi-step code editing workflows. + */ +export const applyPatch = applyPatchToolFactory; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/code-interpreter.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/code-interpreter.ts new file mode 100644 index 000000000..d921444de --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/code-interpreter.ts @@ -0,0 +1,104 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const codeInterpreterInputSchema = lazySchema(() => + zodSchema( + z.object({ + code: z.string().nullish(), + containerId: z.string(), + }), + ), +); + +export const codeInterpreterOutputSchema = lazySchema(() => + zodSchema( + z.object({ + outputs: z + .array( + z.discriminatedUnion('type', [ + z.object({ type: z.literal('logs'), logs: z.string() }), + z.object({ type: z.literal('image'), url: z.string() }), + ]), + ) + .nullish(), + }), + ), +); + +export const codeInterpreterArgsSchema = lazySchema(() => + zodSchema( + z.object({ + container: z + .union([ + z.string(), + z.object({ + fileIds: z.array(z.string()).optional(), + }), + ]) + .optional(), + }), + ), +); + +type CodeInterpreterArgs = { + /** + * The code interpreter container. + * Can be a container ID + * or an object that specifies uploaded file IDs to make available to your code. + */ + container?: string | { fileIds?: string[] }; +}; + +export const codeInterpreterToolFactory = + createProviderToolFactoryWithOutputSchema< + { + /** + * The code to run, or null if not available. + */ + code?: string | null; + + /** + * The ID of the container used to run the code. + */ + containerId: string; + }, + { + /** + * The outputs generated by the code interpreter, such as logs or images. + * Can be null if no outputs are available. + */ + outputs?: Array< + | { + type: 'logs'; + + /** + * The logs output from the code interpreter. + */ + logs: string; + } + | { + type: 'image'; + + /** + * The URL of the image output from the code interpreter. + */ + url: string; + } + > | null; + }, + CodeInterpreterArgs + >({ + id: 'openai.code_interpreter', + inputSchema: codeInterpreterInputSchema, + outputSchema: codeInterpreterOutputSchema, + }); + +export const codeInterpreter = ( + args: CodeInterpreterArgs = {}, // default +) => { + return codeInterpreterToolFactory(args); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/custom.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/custom.ts new file mode 100644 index 000000000..91c223852 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/custom.ts @@ -0,0 +1,64 @@ +import { + createProviderToolFactory, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const customArgsSchema = lazySchema(() => + zodSchema( + z.object({ + name: z.string(), + description: z.string().optional(), + format: z + .union([ + z.object({ + type: z.literal('grammar'), + syntax: z.enum(['regex', 'lark']), + definition: z.string(), + }), + z.object({ + type: z.literal('text'), + }), + ]) + .optional(), + }), + ), +); + +const customInputSchema = lazySchema(() => zodSchema(z.string())); + +export const customToolFactory = createProviderToolFactory< + string, + { + /** + * The name of the custom tool, used to identify it in the API. + */ + name: string; + + /** + * An optional description of what the tool does. + */ + description?: string; + + /** + * The output format specification for the tool. + * Omit for unconstrained text output. + */ + format?: + | { + type: 'grammar'; + syntax: 'regex' | 'lark'; + definition: string; + } + | { + type: 'text'; + }; + } +>({ + id: 'openai.custom', + inputSchema: customInputSchema, +}); + +export const customTool = (args: Parameters[0]) => + customToolFactory(args); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/file-search.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/file-search.ts new file mode 100644 index 000000000..a82a11e12 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/file-search.ts @@ -0,0 +1,145 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; +import { + OpenAIResponsesFileSearchToolComparisonFilter, + OpenAIResponsesFileSearchToolCompoundFilter, +} from '../responses/openai-responses-api'; + +const comparisonFilterSchema = z.object({ + key: z.string(), + type: z.enum(['eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'in', 'nin']), + value: z.union([z.string(), z.number(), z.boolean(), z.array(z.string())]), +}); + +const compoundFilterSchema: z.ZodType = z.object({ + type: z.enum(['and', 'or']), + filters: z.array( + z.union([comparisonFilterSchema, z.lazy(() => compoundFilterSchema)]), + ), +}); + +export const fileSearchArgsSchema = lazySchema(() => + zodSchema( + z.object({ + vectorStoreIds: z.array(z.string()), + maxNumResults: z.number().optional(), + ranking: z + .object({ + ranker: z.string().optional(), + scoreThreshold: z.number().optional(), + }) + .optional(), + filters: z + .union([comparisonFilterSchema, compoundFilterSchema]) + .optional(), + }), + ), +); + +export const fileSearchOutputSchema = lazySchema(() => + zodSchema( + z.object({ + queries: z.array(z.string()), + results: z + .array( + z.object({ + attributes: z.record(z.string(), z.unknown()), + fileId: z.string(), + filename: z.string(), + score: z.number(), + text: z.string(), + }), + ) + .nullable(), + }), + ), +); + +export const fileSearch = createProviderToolFactoryWithOutputSchema< + {}, + { + /** + * The search query to execute. + */ + queries: string[]; + + /** + * The results of the file search tool call. + */ + results: + | null + | { + /** + * Set of 16 key-value pairs that can be attached to an object. + * This can be useful for storing additional information about the object + * in a structured format, and querying for objects via API or the dashboard. + * Keys are strings with a maximum length of 64 characters. + * Values are strings with a maximum length of 512 characters, booleans, or numbers. + */ + attributes: Record; + + /** + * The unique ID of the file. + */ + fileId: string; + + /** + * The name of the file. + */ + filename: string; + + /** + * The relevance score of the file - a value between 0 and 1. + */ + score: number; + + /** + * The text that was retrieved from the file. + */ + text: string; + }[]; + }, + { + /** + * List of vector store IDs to search through. + */ + vectorStoreIds: string[]; + + /** + * Maximum number of search results to return. Defaults to 10. + */ + maxNumResults?: number; + + /** + * Ranking options for the search. + */ + ranking?: { + /** + * The ranker to use for the file search. + */ + ranker?: string; + + /** + * The score threshold for the file search, a number between 0 and 1. + * Numbers closer to 1 will attempt to return only the most relevant results, + * but may return fewer results. + */ + scoreThreshold?: number; + }; + + /** + * A filter to apply. + */ + filters?: + | OpenAIResponsesFileSearchToolComparisonFilter + | OpenAIResponsesFileSearchToolCompoundFilter; + } +>({ + id: 'openai.file_search', + inputSchema: z.object({}), + outputSchema: fileSearchOutputSchema, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/image-generation.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/image-generation.ts new file mode 100644 index 000000000..b7d2eb051 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/image-generation.ts @@ -0,0 +1,126 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const imageGenerationArgsSchema = lazySchema(() => + zodSchema( + z + .object({ + background: z.enum(['auto', 'opaque', 'transparent']).optional(), + inputFidelity: z.enum(['low', 'high']).optional(), + inputImageMask: z + .object({ + fileId: z.string().optional(), + imageUrl: z.string().optional(), + }) + .optional(), + model: z.string().optional(), + moderation: z.enum(['auto']).optional(), + outputCompression: z.number().int().min(0).max(100).optional(), + outputFormat: z.enum(['png', 'jpeg', 'webp']).optional(), + partialImages: z.number().int().min(0).max(3).optional(), + quality: z.enum(['auto', 'low', 'medium', 'high']).optional(), + size: z + .enum(['1024x1024', '1024x1536', '1536x1024', 'auto']) + .optional(), + }) + .strict(), + ), +); + +const imageGenerationInputSchema = lazySchema(() => zodSchema(z.object({}))); + +export const imageGenerationOutputSchema = lazySchema(() => + zodSchema(z.object({ result: z.string() })), +); + +type ImageGenerationArgs = { + /** + * Background type for the generated image. Default is 'auto'. + */ + background?: 'auto' | 'opaque' | 'transparent'; + + /** + * Input fidelity for the generated image. Default is 'low'. + */ + inputFidelity?: 'low' | 'high'; + + /** + * Optional mask for inpainting. + * Contains image_url (string, optional) and file_id (string, optional). + */ + inputImageMask?: { + /** + * File ID for the mask image. + */ + fileId?: string; + + /** + * Base64-encoded mask image. + */ + imageUrl?: string; + }; + + /** + * The image generation model to use. Default: gpt-image-1. + */ + model?: string; + + /** + * Moderation level for the generated image. Default: auto. + */ + moderation?: 'auto'; + + /** + * Compression level for the output image. Default: 100. + */ + outputCompression?: number; + + /** + * The output format of the generated image. One of png, webp, or jpeg. + * Default: png + */ + outputFormat?: 'png' | 'jpeg' | 'webp'; + + /** + * Number of partial images to generate in streaming mode, from 0 (default value) to 3. + */ + partialImages?: number; + + /** + * The quality of the generated image. + * One of low, medium, high, or auto. Default: auto. + */ + quality?: 'auto' | 'low' | 'medium' | 'high'; + + /** + * The size of the generated image. + * One of 1024x1024, 1024x1536, 1536x1024, or auto. + * Default: auto. + */ + size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024'; +}; + +const imageGenerationToolFactory = createProviderToolFactoryWithOutputSchema< + {}, + { + /** + * The generated image encoded in base64. + */ + result: string; + }, + ImageGenerationArgs +>({ + id: 'openai.image_generation', + inputSchema: imageGenerationInputSchema, + outputSchema: imageGenerationOutputSchema, +}); + +export const imageGeneration = ( + args: ImageGenerationArgs = {}, // default +) => { + return imageGenerationToolFactory(args); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/local-shell.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/local-shell.ts new file mode 100644 index 000000000..96bdb5db2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/local-shell.ts @@ -0,0 +1,72 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const localShellInputSchema = lazySchema(() => + zodSchema( + z.object({ + action: z.object({ + type: z.literal('exec'), + command: z.array(z.string()), + timeoutMs: z.number().optional(), + user: z.string().optional(), + workingDirectory: z.string().optional(), + env: z.record(z.string(), z.string()).optional(), + }), + }), + ), +); + +export const localShellOutputSchema = lazySchema(() => + zodSchema(z.object({ output: z.string() })), +); + +export const localShell = createProviderToolFactoryWithOutputSchema< + { + /** + * Execute a shell command on the server. + */ + action: { + type: 'exec'; + + /** + * The command to run. + */ + command: string[]; + + /** + * Optional timeout in milliseconds for the command. + */ + timeoutMs?: number; + + /** + * Optional user to run the command as. + */ + user?: string; + + /** + * Optional working directory to run the command in. + */ + workingDirectory?: string; + + /** + * Environment variables to set for the command. + */ + env?: Record; + }; + }, + { + /** + * The output of local shell tool call. + */ + output: string; + }, + {} +>({ + id: 'openai.local_shell', + inputSchema: localShellInputSchema, + outputSchema: localShellOutputSchema, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/mcp.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/mcp.ts new file mode 100644 index 000000000..57db1e99a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/mcp.ts @@ -0,0 +1,125 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { JSONValue } from '@ai-sdk/provider'; +import { z } from 'zod/v4'; + +const jsonValueSchema: z.ZodType = z.lazy(() => + z.union([ + z.string(), + z.number(), + z.boolean(), + z.null(), + z.array(jsonValueSchema), + z.record(z.string(), jsonValueSchema), + ]), +); + +export const mcpArgsSchema = lazySchema(() => + zodSchema( + z + .object({ + serverLabel: z.string(), + allowedTools: z + .union([ + z.array(z.string()), + z.object({ + readOnly: z.boolean().optional(), + toolNames: z.array(z.string()).optional(), + }), + ]) + .optional(), + authorization: z.string().optional(), + connectorId: z.string().optional(), + headers: z.record(z.string(), z.string()).optional(), + + requireApproval: z + .union([ + z.enum(['always', 'never']), + z.object({ + never: z + .object({ + toolNames: z.array(z.string()).optional(), + }) + .optional(), + }), + ]) + .optional(), + serverDescription: z.string().optional(), + serverUrl: z.string().optional(), + }) + .refine( + v => v.serverUrl != null || v.connectorId != null, + 'One of serverUrl or connectorId must be provided.', + ), + ), +); + +const mcpInputSchema = lazySchema(() => zodSchema(z.object({}))); + +export const mcpOutputSchema = lazySchema(() => + zodSchema( + z.object({ + type: z.literal('call'), + serverLabel: z.string(), + name: z.string(), + arguments: z.string(), + output: z.string().nullish(), + error: z.union([z.string(), jsonValueSchema]).optional(), + }), + ), +); + +type McpArgs = { + /** A label for this MCP server, used to identify it in tool calls. */ + serverLabel: string; + /** List of allowed tool names or a filter object. */ + allowedTools?: + | string[] + | { + readOnly?: boolean; + toolNames?: string[]; + }; + /** OAuth access token usable with the remote MCP server or connector. */ + authorization?: string; + /** Identifier for a service connector. */ + connectorId?: string; + /** Optional HTTP headers to send to the MCP server. */ + headers?: Record; + /** + * Which tools require approval before execution. + */ + requireApproval?: + | 'always' + | 'never' + | { + never?: { + toolNames?: string[]; + }; + }; + /** Optional description of the MCP server. */ + serverDescription?: string; + /** URL for the MCP server. One of serverUrl or connectorId must be provided. */ + serverUrl?: string; +}; + +export const mcpToolFactory = createProviderToolFactoryWithOutputSchema< + {}, + { + type: 'call'; + serverLabel: string; + name: string; + arguments: string; + output?: string | null; + error?: JSONValue; + }, + McpArgs +>({ + id: 'openai.mcp', + inputSchema: mcpInputSchema, + outputSchema: mcpOutputSchema, +}); + +export const mcp = (args: McpArgs) => mcpToolFactory(args); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/shell.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/shell.ts new file mode 100644 index 000000000..439b78ebf --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/shell.ts @@ -0,0 +1,203 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const shellInputSchema = lazySchema(() => + zodSchema( + z.object({ + action: z.object({ + commands: z.array(z.string()), + timeoutMs: z.number().optional(), + maxOutputLength: z.number().optional(), + }), + }), + ), +); + +export const shellOutputSchema = lazySchema(() => + zodSchema( + z.object({ + output: z.array( + z.object({ + stdout: z.string(), + stderr: z.string(), + outcome: z.discriminatedUnion('type', [ + z.object({ type: z.literal('timeout') }), + z.object({ type: z.literal('exit'), exitCode: z.number() }), + ]), + }), + ), + }), + ), +); + +const shellSkillsSchema = z + .array( + z.discriminatedUnion('type', [ + z.object({ + type: z.literal('skillReference'), + skillId: z.string(), + version: z.string().optional(), + }), + z.object({ + type: z.literal('inline'), + name: z.string(), + description: z.string(), + source: z.object({ + type: z.literal('base64'), + mediaType: z.literal('application/zip'), + data: z.string(), + }), + }), + ]), + ) + .optional(); + +export const shellArgsSchema = lazySchema(() => + zodSchema( + z.object({ + environment: z + .union([ + z.object({ + type: z.literal('containerAuto'), + fileIds: z.array(z.string()).optional(), + memoryLimit: z.enum(['1g', '4g', '16g', '64g']).optional(), + networkPolicy: z + .discriminatedUnion('type', [ + z.object({ type: z.literal('disabled') }), + z.object({ + type: z.literal('allowlist'), + allowedDomains: z.array(z.string()), + domainSecrets: z + .array( + z.object({ + domain: z.string(), + name: z.string(), + value: z.string(), + }), + ) + .optional(), + }), + ]) + .optional(), + skills: shellSkillsSchema, + }), + z.object({ + type: z.literal('containerReference'), + containerId: z.string(), + }), + z.object({ + type: z.literal('local').optional(), + skills: z + .array( + z.object({ + name: z.string(), + description: z.string(), + path: z.string(), + }), + ) + .optional(), + }), + ]) + .optional(), + }), + ), +); + +type ShellArgs = { + environment?: + | { + type: 'containerAuto'; + fileIds?: string[]; + memoryLimit?: '1g' | '4g' | '16g' | '64g'; + networkPolicy?: + | { type: 'disabled' } + | { + type: 'allowlist'; + allowedDomains: string[]; + domainSecrets?: Array<{ + domain: string; + name: string; + value: string; + }>; + }; + skills?: Array< + | { type: 'skillReference'; skillId: string; version?: string } + | { + type: 'inline'; + name: string; + description: string; + source: { + type: 'base64'; + mediaType: 'application/zip'; + data: string; + }; + } + >; + } + | { + type: 'containerReference'; + containerId: string; + } + | { + type?: 'local'; + skills?: Array<{ + name: string; + description: string; + path: string; + }>; + }; +}; + +export const shell = createProviderToolFactoryWithOutputSchema< + { + /** + * Shell tool action containing commands to execute. + */ + action: { + /** + * A list of shell commands to execute. + */ + commands: string[]; + + /** + * Optional timeout in milliseconds for the commands. + */ + timeoutMs?: number; + + /** + * Optional maximum number of characters to return from each command. + */ + maxOutputLength?: number; + }; + }, + { + /** + * An array of shell call output contents. + */ + output: Array<{ + /** + * Standard output from the command. + */ + stdout: string; + + /** + * Standard error from the command. + */ + stderr: string; + + /** + * The outcome of the shell execution - either timeout or exit with code. + */ + outcome: { type: 'timeout' } | { type: 'exit'; exitCode: number }; + }>; + }, + ShellArgs +>({ + id: 'openai.shell', + inputSchema: shellInputSchema, + outputSchema: shellOutputSchema, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/tool-search.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/tool-search.ts new file mode 100644 index 000000000..28d69eb47 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/tool-search.ts @@ -0,0 +1,98 @@ +import { JSONObject } from '@ai-sdk/provider'; +import { + createProviderToolFactoryWithOutputSchema, + FlexibleSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const toolSearchArgsSchema = lazySchema(() => + zodSchema( + z.object({ + execution: z.enum(['server', 'client']).optional(), + description: z.string().optional(), + parameters: z.record(z.string(), z.unknown()).optional(), + }), + ), +); + +export const toolSearchInputSchema = lazySchema(() => + zodSchema( + z.object({ + arguments: z.unknown().optional(), + call_id: z.string().nullish(), + }), + ), +); + +export const toolSearchOutputSchema: FlexibleSchema<{ + tools: Array; +}> = lazySchema(() => + zodSchema( + z.object({ + tools: z.array(z.record(z.string(), z.unknown())), + }), + ), +) as FlexibleSchema<{ tools: Array }>; + +const toolSearchToolFactory = createProviderToolFactoryWithOutputSchema< + { + /** + * The arguments from the tool_search_call. + * This is preserved for multi-turn conversation reconstruction. + */ + arguments?: unknown; + + /** + * The call ID from the tool_search_call. + * Present for client-executed tool search; null for hosted. + */ + call_id?: string | null; + }, + { + /** + * The tools that were loaded by the tool search. + * These are the deferred tools that the model requested to load. + * Each tool is represented as a JSON object with properties depending on its type. + * + * Common properties include: + * - `type`: The type of the tool (e.g., 'function', 'web_search', etc.) + * - `name`: The name of the tool (for function tools) + * - `description`: A description of the tool + * - `deferLoading`: Whether this tool was deferred (had defer_loading: true) + * - `parameters`: The JSON Schema for the function parameters (for function tools) + * - `strict`: Whether to enable strict schema adherence (for function tools) + */ + tools: Array; + }, + { + /** + * Whether the tool search is executed by the server (hosted) or client. + * - `'server'` (default): OpenAI performs the search across deferred tools. + * - `'client'`: The model emits a `tool_search_call` and your `execute` + * function performs the lookup, returning the tools to load. + */ + execution?: 'server' | 'client'; + + /** + * A description of the tool search capability. + * Only used for client-executed tool search. + */ + description?: string; + + /** + * JSON Schema for the search arguments your application expects. + * Only used for client-executed tool search. + */ + parameters?: Record; + } +>({ + id: 'openai.tool_search', + inputSchema: toolSearchInputSchema, + outputSchema: toolSearchOutputSchema, +}); + +export const toolSearch = ( + args: Parameters[0] = {}, +) => toolSearchToolFactory(args); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/web-search-preview.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/web-search-preview.ts new file mode 100644 index 000000000..24405147f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/web-search-preview.ts @@ -0,0 +1,141 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const webSearchPreviewArgsSchema = lazySchema(() => + zodSchema( + z.object({ + searchContextSize: z.enum(['low', 'medium', 'high']).optional(), + userLocation: z + .object({ + type: z.literal('approximate'), + country: z.string().optional(), + city: z.string().optional(), + region: z.string().optional(), + timezone: z.string().optional(), + }) + .optional(), + }), + ), +); + +export const webSearchPreviewInputSchema = lazySchema(() => + zodSchema(z.object({})), +); + +const webSearchPreviewOutputSchema = lazySchema(() => + zodSchema( + z.object({ + action: z + .discriminatedUnion('type', [ + z.object({ + type: z.literal('search'), + query: z.string().optional(), + }), + z.object({ + type: z.literal('openPage'), + url: z.string().nullish(), + }), + z.object({ + type: z.literal('findInPage'), + url: z.string().nullish(), + pattern: z.string().nullish(), + }), + ]) + .optional(), + }), + ), +); + +export const webSearchPreview = createProviderToolFactoryWithOutputSchema< + { + // Web search preview doesn't take input parameters - it's controlled by the prompt + }, + { + /** + * An object describing the specific action taken in this web search call. + * Includes details on how the model used the web (search, open_page, find_in_page). + */ + action?: + | { + /** + * Action type "search" - Performs a web search query. + */ + type: 'search'; + + /** + * The search query. + */ + query?: string; + } + | { + /** + * Action type "openPage" - Opens a specific URL from search results. + */ + type: 'openPage'; + + /** + * The URL opened by the model. + */ + url?: string | null; + } + | { + /** + * Action type "findInPage": Searches for a pattern within a loaded page. + */ + type: 'findInPage'; + + /** + * The URL of the page searched for the pattern. + */ + url?: string | null; + + /** + * The pattern or text to search for within the page. + */ + pattern?: string | null; + }; + }, + { + /** + * Search context size to use for the web search. + * - high: Most comprehensive context, highest cost, slower response + * - medium: Balanced context, cost, and latency (default) + * - low: Least context, lowest cost, fastest response + */ + searchContextSize?: 'low' | 'medium' | 'high'; + + /** + * User location information to provide geographically relevant search results. + */ + userLocation?: { + /** + * Type of location (always 'approximate') + */ + type: 'approximate'; + /** + * Two-letter ISO country code (e.g., 'US', 'GB') + */ + country?: string; + /** + * City name (free text, e.g., 'Minneapolis') + */ + city?: string; + /** + * Region name (free text, e.g., 'Minnesota') + */ + region?: string; + /** + * IANA timezone (e.g., 'America/Chicago') + */ + timezone?: string; + }; + } +>({ + id: 'openai.web_search_preview', + inputSchema: webSearchPreviewInputSchema, + outputSchema: webSearchPreviewOutputSchema, +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/web-search.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/web-search.ts new file mode 100644 index 000000000..2bceb6809 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/tool/web-search.ts @@ -0,0 +1,181 @@ +import { + createProviderToolFactoryWithOutputSchema, + lazySchema, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const webSearchArgsSchema = lazySchema(() => + zodSchema( + z.object({ + externalWebAccess: z.boolean().optional(), + filters: z + .object({ allowedDomains: z.array(z.string()).optional() }) + .optional(), + searchContextSize: z.enum(['low', 'medium', 'high']).optional(), + userLocation: z + .object({ + type: z.literal('approximate'), + country: z.string().optional(), + city: z.string().optional(), + region: z.string().optional(), + timezone: z.string().optional(), + }) + .optional(), + }), + ), +); + +const webSearchInputSchema = lazySchema(() => zodSchema(z.object({}))); + +export const webSearchOutputSchema = lazySchema(() => + zodSchema( + z.object({ + action: z + .discriminatedUnion('type', [ + z.object({ + type: z.literal('search'), + query: z.string().optional(), + }), + z.object({ + type: z.literal('openPage'), + url: z.string().nullish(), + }), + z.object({ + type: z.literal('findInPage'), + url: z.string().nullish(), + pattern: z.string().nullish(), + }), + ]) + .optional(), + sources: z + .array( + z.discriminatedUnion('type', [ + z.object({ type: z.literal('url'), url: z.string() }), + z.object({ type: z.literal('api'), name: z.string() }), + ]), + ) + .optional(), + }), + ), +); + +export const webSearchToolFactory = createProviderToolFactoryWithOutputSchema< + { + // Web search doesn't take input parameters - it's controlled by the prompt + }, + { + /** + * An object describing the specific action taken in this web search call. + * Includes details on how the model used the web (search, open_page, find_in_page). + */ + action?: + | { + /** + * Action type "search" - Performs a web search query. + */ + type: 'search'; + + /** + * The search query. + */ + query?: string; + } + | { + /** + * Action type "openPage" - Opens a specific URL from search results. + */ + type: 'openPage'; + + /** + * The URL opened by the model. + */ + url?: string | null; + } + | { + /** + * Action type "findInPage": Searches for a pattern within a loaded page. + */ + type: 'findInPage'; + + /** + * The URL of the page searched for the pattern. + */ + url?: string | null; + + /** + * The pattern or text to search for within the page. + */ + pattern?: string | null; + }; + + /** + * Optional sources cited by the model for the web search call. + */ + sources?: Array< + { type: 'url'; url: string } | { type: 'api'; name: string } + >; + }, + { + /** + * Whether to use external web access for fetching live content. + * - true: Fetch live web content (default) + * - false: Use cached/indexed results + */ + externalWebAccess?: boolean; + + /** + * Filters for the search. + */ + filters?: { + /** + * Allowed domains for the search. + * If not provided, all domains are allowed. + * Subdomains of the provided domains are allowed as well. + */ + allowedDomains?: string[]; + }; + + /** + * Search context size to use for the web search. + * - high: Most comprehensive context, highest cost, slower response + * - medium: Balanced context, cost, and latency (default) + * - low: Least context, lowest cost, fastest response + */ + searchContextSize?: 'low' | 'medium' | 'high'; + + /** + * User location information to provide geographically relevant search results. + */ + userLocation?: { + /** + * Type of location (always 'approximate') + */ + type: 'approximate'; + /** + * Two-letter ISO country code (e.g., 'US', 'GB') + */ + country?: string; + /** + * City name (free text, e.g., 'Minneapolis') + */ + city?: string; + /** + * Region name (free text, e.g., 'Minnesota') + */ + region?: string; + /** + * IANA timezone (e.g., 'America/Chicago') + */ + timezone?: string; + }; + } +>({ + id: 'openai.web_search', + inputSchema: webSearchInputSchema, + outputSchema: webSearchOutputSchema, +}); + +export const webSearch = ( + args: Parameters[0] = {}, // default +) => webSearchToolFactory(args); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-api.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-api.ts new file mode 100644 index 000000000..4753c65b6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-api.ts @@ -0,0 +1,37 @@ +import { lazySchema, zodSchema } from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export const openaiTranscriptionResponseSchema = lazySchema(() => + zodSchema( + z.object({ + text: z.string(), + language: z.string().nullish(), + duration: z.number().nullish(), + words: z + .array( + z.object({ + word: z.string(), + start: z.number(), + end: z.number(), + }), + ) + .nullish(), + segments: z + .array( + z.object({ + id: z.number(), + seek: z.number(), + start: z.number(), + end: z.number(), + text: z.string(), + tokens: z.array(z.number()), + temperature: z.number(), + avg_logprob: z.number(), + compression_ratio: z.number(), + no_speech_prob: z.number(), + }), + ) + .nullish(), + }), + ), +); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-model.ts new file mode 100644 index 000000000..ef5efa080 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-model.ts @@ -0,0 +1,232 @@ +import { + TranscriptionModelV3, + TranscriptionModelV3CallOptions, + SharedV3Warning, +} from '@ai-sdk/provider'; +import { + combineHeaders, + convertBase64ToUint8Array, + createJsonResponseHandler, + mediaTypeToExtension, + parseProviderOptions, + postFormDataToApi, +} from '@ai-sdk/provider-utils'; +import { OpenAIConfig } from '../openai-config'; +import { openaiFailedResponseHandler } from '../openai-error'; +import { openaiTranscriptionResponseSchema } from './openai-transcription-api'; +import { + OpenAITranscriptionModelId, + openAITranscriptionModelOptions, + OpenAITranscriptionModelOptions, +} from './openai-transcription-options'; + +export type OpenAITranscriptionCallOptions = Omit< + TranscriptionModelV3CallOptions, + 'providerOptions' +> & { + providerOptions?: { + openai?: OpenAITranscriptionModelOptions; + }; +}; + +interface OpenAITranscriptionModelConfig extends OpenAIConfig { + _internal?: { + currentDate?: () => Date; + }; +} + +// https://platform.openai.com/docs/guides/speech-to-text#supported-languages +const languageMap = { + afrikaans: 'af', + arabic: 'ar', + armenian: 'hy', + azerbaijani: 'az', + belarusian: 'be', + bosnian: 'bs', + bulgarian: 'bg', + catalan: 'ca', + chinese: 'zh', + croatian: 'hr', + czech: 'cs', + danish: 'da', + dutch: 'nl', + english: 'en', + estonian: 'et', + finnish: 'fi', + french: 'fr', + galician: 'gl', + german: 'de', + greek: 'el', + hebrew: 'he', + hindi: 'hi', + hungarian: 'hu', + icelandic: 'is', + indonesian: 'id', + italian: 'it', + japanese: 'ja', + kannada: 'kn', + kazakh: 'kk', + korean: 'ko', + latvian: 'lv', + lithuanian: 'lt', + macedonian: 'mk', + malay: 'ms', + marathi: 'mr', + maori: 'mi', + nepali: 'ne', + norwegian: 'no', + persian: 'fa', + polish: 'pl', + portuguese: 'pt', + romanian: 'ro', + russian: 'ru', + serbian: 'sr', + slovak: 'sk', + slovenian: 'sl', + spanish: 'es', + swahili: 'sw', + swedish: 'sv', + tagalog: 'tl', + tamil: 'ta', + thai: 'th', + turkish: 'tr', + ukrainian: 'uk', + urdu: 'ur', + vietnamese: 'vi', + welsh: 'cy', +}; + +export class OpenAITranscriptionModel implements TranscriptionModelV3 { + readonly specificationVersion = 'v3'; + + get provider(): string { + return this.config.provider; + } + + constructor( + readonly modelId: OpenAITranscriptionModelId, + private readonly config: OpenAITranscriptionModelConfig, + ) {} + + private async getArgs({ + audio, + mediaType, + providerOptions, + }: OpenAITranscriptionCallOptions) { + const warnings: SharedV3Warning[] = []; + + // Parse provider options + const openAIOptions = await parseProviderOptions({ + provider: 'openai', + providerOptions, + schema: openAITranscriptionModelOptions, + }); + + // Create form data with base fields + const formData = new FormData(); + const blob = + audio instanceof Uint8Array + ? new Blob([audio]) + : new Blob([convertBase64ToUint8Array(audio)]); + + formData.append('model', this.modelId); + const fileExtension = mediaTypeToExtension(mediaType); + formData.append( + 'file', + new File([blob], 'audio', { type: mediaType }), + `audio.${fileExtension}`, + ); + + // Add provider-specific options + if (openAIOptions) { + const transcriptionModelOptions = { + include: openAIOptions.include, + language: openAIOptions.language, + prompt: openAIOptions.prompt, + // https://platform.openai.com/docs/api-reference/audio/createTranscription#audio_createtranscription-response_format + // prefer verbose_json to get segments for models that support it + response_format: [ + 'gpt-4o-transcribe', + 'gpt-4o-mini-transcribe', + ].includes(this.modelId) + ? 'json' + : 'verbose_json', + temperature: openAIOptions.temperature, + timestamp_granularities: openAIOptions.timestampGranularities, + }; + + for (const [key, value] of Object.entries(transcriptionModelOptions)) { + if (value != null) { + if (Array.isArray(value)) { + for (const item of value) { + formData.append(`${key}[]`, String(item)); + } + } else { + formData.append(key, String(value)); + } + } + } + } + + return { + formData, + warnings, + }; + } + + async doGenerate( + options: OpenAITranscriptionCallOptions, + ): Promise>> { + const currentDate = this.config._internal?.currentDate?.() ?? new Date(); + const { formData, warnings } = await this.getArgs(options); + + const { + value: response, + responseHeaders, + rawValue: rawResponse, + } = await postFormDataToApi({ + url: this.config.url({ + path: '/audio/transcriptions', + modelId: this.modelId, + }), + headers: combineHeaders(this.config.headers(), options.headers), + formData, + failedResponseHandler: openaiFailedResponseHandler, + successfulResponseHandler: createJsonResponseHandler( + openaiTranscriptionResponseSchema, + ), + abortSignal: options.abortSignal, + fetch: this.config.fetch, + }); + + const language = + response.language != null && response.language in languageMap + ? languageMap[response.language as keyof typeof languageMap] + : undefined; + + return { + text: response.text, + segments: + response.segments?.map(segment => ({ + text: segment.text, + startSecond: segment.start, + endSecond: segment.end, + })) ?? + response.words?.map(word => ({ + text: word.word, + startSecond: word.start, + endSecond: word.end, + })) ?? + [], + language, + durationInSeconds: response.duration ?? undefined, + warnings, + response: { + timestamp: currentDate, + modelId: this.modelId, + headers: responseHeaders, + body: rawResponse, + }, + }; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-options.ts new file mode 100644 index 000000000..b992b423d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-options.ts @@ -0,0 +1,53 @@ +import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; + +export type OpenAITranscriptionModelId = + | 'whisper-1' + | 'gpt-4o-mini-transcribe' + | 'gpt-4o-mini-transcribe-2025-03-20' + | 'gpt-4o-mini-transcribe-2025-12-15' + | 'gpt-4o-transcribe' + | 'gpt-4o-transcribe-diarize' + | (string & {}); + +// https://platform.openai.com/docs/api-reference/audio/createTranscription +export const openAITranscriptionModelOptions = lazySchema(() => + zodSchema( + z.object({ + /** + * Additional information to include in the transcription response. + */ + + include: z.array(z.string()).optional(), + + /** + * The language of the input audio in ISO-639-1 format. + */ + language: z.string().optional(), + + /** + * An optional text to guide the model's style or continue a previous audio segment. + */ + prompt: z.string().optional(), + + /** + * The sampling temperature, between 0 and 1. + * @default 0 + */ + temperature: z.number().min(0).max(1).default(0).optional(), + + /** + * The timestamp granularities to populate for this transcription. + * @default ['segment'] + */ + timestampGranularities: z + .array(z.enum(['word', 'segment'])) + .default(['segment']) + .optional(), + }), + ), +); + +export type OpenAITranscriptionModelOptions = InferSchema< + typeof openAITranscriptionModelOptions +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/transcription-test.mp3 b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/transcription/transcription-test.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..6a4cf7b67483c076cebf897b5456f64d0372df90 GIT binary patch literal 40169 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 VY0mcaZ;SOm=>PwZ{$EGnzW{t`1;GFS literal 0 HcmV?d00001 diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/version.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/version.ts new file mode 100644 index 000000000..7a35d46f5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/openai/src/version.ts @@ -0,0 +1,6 @@ +// Version string of this package injected at build time. +declare const __PACKAGE_VERSION__: string | undefined; +export const VERSION: string = + typeof __PACKAGE_VERSION__ !== 'undefined' + ? __PACKAGE_VERSION__ + : '0.0.0-test'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/CHANGELOG.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/CHANGELOG.md new file mode 100644 index 000000000..2efe6d401 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/CHANGELOG.md @@ -0,0 +1,1574 @@ +# @ai-sdk/provider-utils + +## 4.0.21 + +### Patch Changes + +- 055cd68: fix: publish v6 to latest npm dist tag + +## 4.0.20 + +### Patch Changes + +- 64ac0fd: fix(security): validate redirect targets in download functions to prevent SSRF bypass + + Both `downloadBlob` and `download` now validate the final URL after following HTTP redirects, preventing attackers from bypassing SSRF protections via open redirects to internal/private addresses. + +## 4.0.19 + +### Patch Changes + +- ad4cfc2: Add URL validation to `downloadBlob` and `download` to prevent blind SSRF attacks. Private/internal IP addresses, localhost, and non-HTTP protocols are now rejected before fetching. + +## 4.0.18 + +### Patch Changes + +- 824b295: fix(provider-utils): prevent unicode escape bypass in secureJsonParse + +## 4.0.17 + +### Patch Changes + +- 08336f1: fix(bedrock): strip file extensions from filename + +## 4.0.16 + +### Patch Changes + +- 58bc42d: feat(provider/openai): support custom tools with alias mapping + +## 4.0.15 + +### Patch Changes + +- 4024a3a: security: prevent unbounded memory growth in download functions + + The `download()` and `downloadBlob()` functions now enforce a default 2 GiB size limit when downloading from user-provided URLs. Downloads that exceed this limit are aborted with a `DownloadError` instead of consuming unbounded memory and crashing the process. The `abortSignal` parameter is now passed through to `fetch()` in all download call sites. + + Added `download` option to `transcribe()` and `experimental_generateVideo()` for providing a custom download function. Use the new `createDownload({ maxBytes })` factory to configure download size limits. + +## 4.0.14 + +### Patch Changes + +- Updated dependencies [7168375] + - @ai-sdk/provider@3.0.8 + +## 4.0.13 + +### Patch Changes + +- Updated dependencies [53f6731] + - @ai-sdk/provider@3.0.7 + +## 4.0.12 + +### Patch Changes + +- 96936e5: fix(provider-utils): export only types from standard-schema package + +## 4.0.11 + +### Patch Changes + +- 2810850: fix(ai): improve type validation error messages with field paths and entity identifiers +- Updated dependencies [2810850] + - @ai-sdk/provider@3.0.6 + +## 4.0.10 + +### Patch Changes + +- 462ad00: fix(provider-utils): recognize bun fetch errors as retryable + +## 4.0.9 + +### Patch Changes + +- 4de5a1d: chore: excluded tests from src folder in npm package +- Updated dependencies [4de5a1d] + - @ai-sdk/provider@3.0.5 + +## 4.0.8 + +### Patch Changes + +- Updated dependencies [5c090e7] + - @ai-sdk/provider@3.0.4 + +## 4.0.7 + +### Patch Changes + +- 46f46e4: fix(provider-utils): improve tool type inference when using `inputExamples` with Zod schemas that use `.optional().default()` or `.refine()`. + +## 4.0.6 + +### Patch Changes + +- 1b11dcb: chore(ai): include sources in npm package +- Updated dependencies [1b11dcb] + - @ai-sdk/provider@3.0.3 + +## 4.0.5 + +### Patch Changes + +- 34d1c8a: fix(provider-utils): add additionalProperties field for standard schema function + +## 4.0.4 + +### Patch Changes + +- Updated dependencies [d937c8f] + - @ai-sdk/provider@3.0.2 + +## 4.0.3 + +### Patch Changes + +- 0b429d4: fix(provider-utils): handle anyOf/allOf/oneOf and definitions in addAdditionalPropertiesToJsonSchema + +## 4.0.2 + +### Patch Changes + +- 863d34f: fix: trigger release to update `@latest` +- Updated dependencies [863d34f] + - @ai-sdk/provider@3.0.1 + +## 4.0.1 + +### Patch Changes + +- 29264a3: feat: add MCP tool approval + +## 4.0.0 + +### Major Changes + +- dee8b05: ai SDK 6 beta + +### Minor Changes + +- 78928cb: release: start 5.1 beta + +### Patch Changes + +- 0adc679: feat(provider): shared spec v3 +- 50b70d6: feat(anthropic): add programmatic tool calling +- dce03c4: feat: tool input examples +- 3b1d015: feat(ai): Effect schema support +- 95f65c2: chore: use import \* from zod/v4 +- 016b111: fix(provider-utils): make ReadableStream.cancel() properly finalize async iterators +- 58920e0: refactor: consolidate header normalization across packages, remove duplicates, preserve custom headers +- 954c356: feat(openai): allow custom names for provider-defined tools +- 544d4e8: chore(specification): rename v3 provider defined tool to provider tool +- 521c537: feat(ai): Tool.needsApproval can be a function +- e8109d3: feat: tool execution approval +- 03849b0: move DelayedPromise into provider utils +- e06565c: feat(provider-utils): add needsApproval support to provider-defined tools +- 32d8dbb: fix(provider-utils): compatibility with V8 readonly execution environment +- d116b4b: feat(ai): arktype support +- 293a6b7: Added a title to the tools +- 703459a: feat: tool execution approval for dynamic tools +- 83e5744: feat: support async Tool.toModelOutput +- 7e32fea: feat(ai): valibot support +- 3ed5519: chore: rename ToolCallOptions to ToolExecutionOptions +- 8dac895: feat: `LanguageModelV3` +- cbb1d35: Update for provider-util changeset after change in PR #8588 +- 9061dc0: feat: image editing +- 32223c8: feat: add toolCallId arg to toModelOutput +- c1efac4: feat: add input arg to toModelOutput +- 4616b86: chore: update zod peer depenedency version +- 4f16c37: chore(provider-utils): upgrade eventsource-parser to 3.0.6 +- 81e29ab: chore: update docs +- 6306603: chore: replace Validator with Schema +- fca786b: feat(provider-utils): add MaybePromiseLike type +- 763d04a: feat: Standard JSON Schema support +- 3794514: feat: flexible tool output content support +- e9e157f: fix: generate zod4 json schema from input schema +- 960ec8f: chore: change argument of toModelOutput to parameter object +- 1bd7d32: feat: tool-specific strict mode +- f0b2157: fix: revert zod import change +- 95f65c2: chore: load zod schemas lazily +- Updated dependencies + - @ai-sdk/provider@3.0.0 + +## 4.0.0-beta.59 + +### Patch Changes + +- Updated dependencies [475189e] + - @ai-sdk/provider@3.0.0-beta.32 + +## 4.0.0-beta.58 + +### Patch Changes + +- Updated dependencies [2625a04] + - @ai-sdk/provider@3.0.0-beta.31 + +## 4.0.0-beta.57 + +### Patch Changes + +- Updated dependencies [cbf52cd] + - @ai-sdk/provider@3.0.0-beta.30 + +## 4.0.0-beta.56 + +### Patch Changes + +- Updated dependencies [9549c9e] + - @ai-sdk/provider@3.0.0-beta.29 + +## 4.0.0-beta.55 + +### Patch Changes + +- 50b70d6: feat(anthropic): add programmatic tool calling + +## 4.0.0-beta.54 + +### Patch Changes + +- 9061dc0: feat: image editing +- Updated dependencies [9061dc0] + - @ai-sdk/provider@3.0.0-beta.28 + +## 4.0.0-beta.53 + +### Patch Changes + +- Updated dependencies [366f50b] + - @ai-sdk/provider@3.0.0-beta.27 + +## 4.0.0-beta.52 + +### Patch Changes + +- 763d04a: feat: Standard JSON Schema support + +## 4.0.0-beta.51 + +### Patch Changes + +- c1efac4: feat: add input arg to toModelOutput + +## 4.0.0-beta.50 + +### Patch Changes + +- 32223c8: feat: add toolCallId arg to toModelOutput + +## 4.0.0-beta.49 + +### Patch Changes + +- 83e5744: feat: support async Tool.toModelOutput + +## 4.0.0-beta.48 + +### Patch Changes + +- 960ec8f: chore: change argument of toModelOutput to parameter object + +## 4.0.0-beta.47 + +### Patch Changes + +- e9e157f: fix: generate zod4 json schema from input schema + +## 4.0.0-beta.46 + +### Patch Changes + +- 81e29ab: chore: update docs + +## 4.0.0-beta.45 + +### Patch Changes + +- Updated dependencies [3bd2689] + - @ai-sdk/provider@3.0.0-beta.26 + +## 4.0.0-beta.44 + +### Patch Changes + +- Updated dependencies [53f3368] + - @ai-sdk/provider@3.0.0-beta.25 + +## 4.0.0-beta.43 + +### Patch Changes + +- dce03c4: feat: tool input examples +- Updated dependencies [dce03c4] + - @ai-sdk/provider@3.0.0-beta.24 + +## 4.0.0-beta.42 + +### Patch Changes + +- 3ed5519: chore: rename ToolCallOptions to ToolExecutionOptions + +## 4.0.0-beta.41 + +### Patch Changes + +- 1bd7d32: feat: tool-specific strict mode +- Updated dependencies [1bd7d32] + - @ai-sdk/provider@3.0.0-beta.23 + +## 4.0.0-beta.40 + +### Patch Changes + +- 544d4e8: chore(specification): rename v3 provider defined tool to provider tool +- Updated dependencies [544d4e8] + - @ai-sdk/provider@3.0.0-beta.22 + +## 4.0.0-beta.39 + +### Patch Changes + +- 954c356: feat(openai): allow custom names for provider-defined tools +- Updated dependencies [954c356] + - @ai-sdk/provider@3.0.0-beta.21 + +## 4.0.0-beta.38 + +### Patch Changes + +- 03849b0: move DelayedPromise into provider utils + +## 4.0.0-beta.37 + +### Patch Changes + +- Updated dependencies [457318b] + - @ai-sdk/provider@3.0.0-beta.20 + +## 4.0.0-beta.36 + +### Patch Changes + +- Updated dependencies [8d9e8ad] + - @ai-sdk/provider@3.0.0-beta.19 + +## 4.0.0-beta.35 + +### Patch Changes + +- Updated dependencies [10d819b] + - @ai-sdk/provider@3.0.0-beta.18 + +## 4.0.0-beta.34 + +### Patch Changes + +- Updated dependencies [db913bd] + - @ai-sdk/provider@3.0.0-beta.17 + +## 4.0.0-beta.33 + +### Patch Changes + +- Updated dependencies [b681d7d] + - @ai-sdk/provider@3.0.0-beta.16 + +## 4.0.0-beta.32 + +### Patch Changes + +- 32d8dbb: fix(provider-utils): compatibility with V8 readonly execution environment + +## 4.0.0-beta.31 + +### Patch Changes + +- Updated dependencies [bb36798] + - @ai-sdk/provider@3.0.0-beta.15 + +## 4.0.0-beta.30 + +### Patch Changes + +- 4f16c37: chore(provider-utils): upgrade eventsource-parser to 3.0.6 + +## 4.0.0-beta.29 + +### Patch Changes + +- Updated dependencies [af3780b] + - @ai-sdk/provider@3.0.0-beta.14 + +## 4.0.0-beta.28 + +### Patch Changes + +- 016b111: fix(provider-utils): make ReadableStream.cancel() properly finalize async iterators + +## 4.0.0-beta.27 + +### Patch Changes + +- Updated dependencies [37c58a0] + - @ai-sdk/provider@3.0.0-beta.13 + +## 4.0.0-beta.26 + +### Patch Changes + +- Updated dependencies [d1bdadb] + - @ai-sdk/provider@3.0.0-beta.12 + +## 4.0.0-beta.25 + +### Patch Changes + +- Updated dependencies [4c44a5b] + - @ai-sdk/provider@3.0.0-beta.11 + +## 4.0.0-beta.24 + +### Patch Changes + +- Updated dependencies [0c3b58b] + - @ai-sdk/provider@3.0.0-beta.10 + +## 4.0.0-beta.23 + +### Patch Changes + +- Updated dependencies [a755db5] + - @ai-sdk/provider@3.0.0-beta.9 + +## 4.0.0-beta.22 + +### Patch Changes + +- 58920e0: refactor: consolidate header normalization across packages, remove duplicates, preserve custom headers + +## 4.0.0-beta.21 + +### Patch Changes + +- 293a6b7: Added a title to the tools + +## 4.0.0-beta.20 + +### Patch Changes + +- fca786b: feat(provider-utils): add MaybePromiseLike type + +## 4.0.0-beta.19 + +### Patch Changes + +- 3794514: feat: flexible tool output content support +- Updated dependencies [3794514] + - @ai-sdk/provider@3.0.0-beta.8 + +## 4.0.0-beta.18 + +### Patch Changes + +- Updated dependencies [81d4308] + - @ai-sdk/provider@3.0.0-beta.7 + +## 4.0.0-beta.17 + +### Patch Changes + +- 703459a: feat: tool execution approval for dynamic tools + +## 4.0.0-beta.16 + +### Patch Changes + +- 6306603: chore: replace Validator with Schema + +## 4.0.0-beta.15 + +### Patch Changes + +- f0b2157: fix: revert zod import change + +## 4.0.0-beta.14 + +### Patch Changes + +- 3b1d015: feat(ai): Effect schema support + +## 4.0.0-beta.13 + +### Patch Changes + +- d116b4b: feat(ai): arktype support + +## 4.0.0-beta.12 + +### Patch Changes + +- 7e32fea: feat(ai): valibot support + +## 4.0.0-beta.11 + +### Patch Changes + +- 95f65c2: chore: use import \* from zod/v4 +- 95f65c2: chore: load zod schemas lazily + +## 4.0.0-beta.10 + +### Major Changes + +- dee8b05: ai SDK 6 beta + +### Patch Changes + +- Updated dependencies [dee8b05] + - @ai-sdk/provider@3.0.0-beta.6 + +## 3.1.0-beta.9 + +### Patch Changes + +- 521c537: feat(ai): Tool.needsApproval can be a function + +## 3.1.0-beta.8 + +### Patch Changes + +- e06565c: feat(provider-utils): add needsApproval support to provider-defined tools + +## 3.1.0-beta.7 + +### Patch Changes + +- e8109d3: feat: tool execution approval +- Updated dependencies + - @ai-sdk/provider@2.1.0-beta.5 + +## 3.1.0-beta.6 + +### Patch Changes + +- 0adc679: feat(provider): shared spec v3 +- Updated dependencies + - @ai-sdk/provider@2.1.0-beta.4 + +## 3.1.0-beta.5 + +### Patch Changes + +- 8dac895: feat: `LanguageModelV3` +- Updated dependencies [8dac895] + - @ai-sdk/provider@2.1.0-beta.3 + +## 3.1.0-beta.4 + +### Patch Changes + +- 4616b86: chore: update zod peer depenedency version + +## 3.1.0-beta.3 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.1.0-beta.2 + +## 3.1.0-beta.2 + +### Patch Changes + +- Updated dependencies [0c4822d] + - @ai-sdk/provider@2.1.0-beta.1 + +## 3.1.0-beta.1 + +### Patch Changes + +- cbb1d35: Update for provider-util changeset after change in PR #8588 + +## 3.1.0-beta.0 + +### Minor Changes + +- 78928cb: release: start 5.1 beta + +### Patch Changes + +- Updated dependencies [78928cb] + - @ai-sdk/provider@2.1.0-beta.0 + +## 3.0.9 + +### Patch Changes + +- 0294b58: feat(ai): set `ai`, `@ai-sdk/provider-utils`, and runtime in `user-agent` header + +## 3.0.8 + +### Patch Changes + +- 99964ed: fix(provider-utils): fix type inference for toModelOutput + +## 3.0.7 + +### Patch Changes + +- 886e7cd: chore(provider-utils): upgrade event-source parser to 3.0.5 + +## 3.0.6 + +### Patch Changes + +- 1b5a3d3: chore(provider-util): integrate zod-to-json-schema + +## 3.0.5 + +### Patch Changes + +- 0857788: fix(provider/groq): `experimental_transcribe` fails with valid Buffer + +## 3.0.4 + +### Patch Changes + +- 68751f9: fix(provider-utils): add inject json utility function + +## 3.0.3 + +### Patch Changes + +- 034e229: fix(provider/utils): fix FlexibleSchema type inference with zod/v3 +- f25040d: fix(provider-utils): fix tools type inference + +## 3.0.2 + +### Patch Changes + +- 38ac190: feat(ai): preliminary tool results + +## 3.0.1 + +### Patch Changes + +- 90d212f: feat (ai): add experimental tool call context + +## 3.0.0 + +### Major Changes + +- 5d142ab: remove deprecated `CoreToolCall` and `CoreToolResult` types +- d5f588f: AI SDK 5 +- e025824: refactoring (ai): restructure provider-defined tools +- 40acf9b: feat (ui): introduce ChatStore and ChatTransport +- 957b739: chore (provider-utils): rename TestServerCall.requestBody to requestBodyJson +- ea7a7c9: feat (ui): UI message metadata +- 41fa418: chore (provider-utils): return IdGenerator interface +- 71f938d: feat (ai): add output schema for tools + +### Patch Changes + +- a571d6e: chore(provider-utils): move ToolResultContent to provider-utils +- e7fcc86: feat (ai): introduce dynamic tools +- 45c1ea2: refactoring: introduce FlexibleSchema +- 060370c: feat(provider-utils): add TestServerCall#requestCredentials +- 0571b98: chore (provider-utils): update eventsource-parser to 3.0.3 +- 4fef487: feat: support for zod v4 for schema validation + + All these methods now accept both a zod v4 and zod v3 schemas for validation: + + - `generateObject()` + - `streamObject()` + - `generateText()` + - `experimental_useObject()` from `@ai-sdk/react` + - `streamUI()` from `@ai-sdk/rsc` + +- 0c0c0b3: refactor (provider-utils): move `customAlphabet()` method from `nanoid` into codebase +- 8ba77a7: chore (provider-utils): use eventsource-parser library +- a166433: feat: add transcription with experimental_transcribe +- 9f95b35: refactor (provider-utils): copy relevant code from `secure-json-parse` into codebase +- 66962ed: fix(packages): export node10 compatible types +- 05d2819: feat: allow zod 4.x as peer dependency +- ac34802: Add clear object function to StructuredObject +- 63d791d: chore (utils): remove unused test helpers +- 87b828f: fix(provider-utils): fix SSE parser bug (CRLF) +- bfdca8d: feat (ai): add InferToolInput and InferToolOutput helpers +- 0ff02bb: chore(provider-utils): move over jsonSchema +- 39a4fab: fix (provider-utils): detect failed fetch in browser environments +- 57edfcb: Adds support for async zod validators +- faf8446: chore (provider-utils): switch to standard-schema +- d1a034f: feature: using Zod 4 for internal stuff +- 88a8ee5: fix (ai): support abort during retry waits +- 205077b: fix: improve Zod compatibility +- 28a5ed5: refactoring: move tools helper into provider-utils +- dd5fd43: feat (ai): support dynamic tools in Chat onToolCall +- 383cbfa: feat (ai): add isAborted to onFinish callback for ui message streams +- Updated dependencies + - @ai-sdk/provider@2.0.0 + +## 3.0.0-beta.10 + +### Patch Changes + +- 88a8ee5: fix (ai): support abort during retry waits + +## 3.0.0-beta.9 + +### Patch Changes + +- Updated dependencies [27deb4d] + - @ai-sdk/provider@2.0.0-beta.2 + +## 3.0.0-beta.8 + +### Patch Changes + +- dd5fd43: feat (ai): support dynamic tools in Chat onToolCall + +## 3.0.0-beta.7 + +### Patch Changes + +- e7fcc86: feat (ai): introduce dynamic tools + +## 3.0.0-beta.6 + +### Patch Changes + +- ac34802: Add clear object function to StructuredObject + +## 3.0.0-beta.5 + +### Patch Changes + +- 57edfcb: Adds support for async zod validators +- 383cbfa: feat (ai): add isAborted to onFinish callback for ui message streams + +## 3.0.0-beta.4 + +### Patch Changes + +- 205077b: fix: improve Zod compatibility + +## 3.0.0-beta.3 + +### Patch Changes + +- 05d2819: feat: allow zod 4.x as peer dependency + +## 3.0.0-beta.2 + +### Patch Changes + +- 0571b98: chore (provider-utils): update eventsource-parser to 3.0.3 +- 39a4fab: fix (provider-utils): detect failed fetch in browser environments +- d1a034f: feature: using Zod 4 for internal stuff + +## 3.0.0-beta.1 + +### Major Changes + +- e025824: refactoring (ai): restructure provider-defined tools +- 71f938d: feat (ai): add output schema for tools + +### Patch Changes + +- 45c1ea2: refactoring: introduce FlexibleSchema +- bfdca8d: feat (ai): add InferToolInput and InferToolOutput helpers +- 28a5ed5: refactoring: move tools helper into provider-utils +- Updated dependencies + - @ai-sdk/provider@2.0.0-beta.1 + +## 3.0.0-alpha.15 + +### Patch Changes + +- 8ba77a7: chore (provider-utils): use eventsource-parser library +- Updated dependencies [48d257a] + - @ai-sdk/provider@2.0.0-alpha.15 + +## 3.0.0-alpha.14 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-alpha.14 + +## 3.0.0-alpha.13 + +### Patch Changes + +- Updated dependencies [68ecf2f] + - @ai-sdk/provider@2.0.0-alpha.13 + +## 3.0.0-alpha.12 + +### Patch Changes + +- Updated dependencies [e2aceaf] + - @ai-sdk/provider@2.0.0-alpha.12 + +## 3.0.0-alpha.11 + +### Patch Changes + +- Updated dependencies [c1e6647] + - @ai-sdk/provider@2.0.0-alpha.11 + +## 3.0.0-alpha.10 + +### Patch Changes + +- Updated dependencies [c4df419] + - @ai-sdk/provider@2.0.0-alpha.10 + +## 3.0.0-alpha.9 + +### Patch Changes + +- Updated dependencies [811dff3] + - @ai-sdk/provider@2.0.0-alpha.9 + +## 3.0.0-alpha.8 + +### Patch Changes + +- 4fef487: feat: support for zod v4 for schema validation + + All these methods now accept both a zod v4 and zod v3 schemas for validation: + + - `generateObject()` + - `streamObject()` + - `generateText()` + - `experimental_useObject()` from `@ai-sdk/react` + - `streamUI()` from `@ai-sdk/rsc` + +- Updated dependencies [9222aeb] + - @ai-sdk/provider@2.0.0-alpha.8 + +## 3.0.0-alpha.7 + +### Patch Changes + +- Updated dependencies [5c56081] + - @ai-sdk/provider@2.0.0-alpha.7 + +## 3.0.0-alpha.6 + +### Patch Changes + +- Updated dependencies [0d2c085] + - @ai-sdk/provider@2.0.0-alpha.6 + +## 3.0.0-alpha.4 + +### Patch Changes + +- Updated dependencies [dc714f3] + - @ai-sdk/provider@2.0.0-alpha.4 + +## 3.0.0-alpha.3 + +### Patch Changes + +- Updated dependencies [6b98118] + - @ai-sdk/provider@2.0.0-alpha.3 + +## 3.0.0-alpha.2 + +### Patch Changes + +- Updated dependencies [26535e0] + - @ai-sdk/provider@2.0.0-alpha.2 + +## 3.0.0-alpha.1 + +### Patch Changes + +- Updated dependencies [3f2f00c] + - @ai-sdk/provider@2.0.0-alpha.1 + +## 3.0.0-canary.19 + +### Patch Changes + +- faf8446: chore (provider-utils): switch to standard-schema + +## 3.0.0-canary.18 + +### Major Changes + +- 40acf9b: feat (ui): introduce ChatStore and ChatTransport + +## 3.0.0-canary.17 + +### Major Changes + +- ea7a7c9: feat (ui): UI message metadata + +## 3.0.0-canary.16 + +### Patch Changes + +- 87b828f: fix(provider-utils): fix SSE parser bug (CRLF) + +## 3.0.0-canary.15 + +### Major Changes + +- 41fa418: chore (provider-utils): return IdGenerator interface + +### Patch Changes + +- a571d6e: chore(provider-utils): move ToolResultContent to provider-utils +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.14 + +## 3.0.0-canary.14 + +### Major Changes + +- 957b739: chore (provider-utils): rename TestServerCall.requestBody to requestBodyJson + +### Patch Changes + +- Updated dependencies [9bd5ab5] + - @ai-sdk/provider@2.0.0-canary.13 + +## 3.0.0-canary.13 + +### Patch Changes + +- 0ff02bb: chore(provider-utils): move over jsonSchema +- Updated dependencies [7b3ae3f] + - @ai-sdk/provider@2.0.0-canary.12 + +## 3.0.0-canary.12 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.11 + +## 3.0.0-canary.11 + +### Patch Changes + +- 66962ed: fix(packages): export node10 compatible types +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.10 + +## 3.0.0-canary.10 + +### Patch Changes + +- Updated dependencies [e86be6f] + - @ai-sdk/provider@2.0.0-canary.9 + +## 3.0.0-canary.9 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.8 + +## 3.0.0-canary.8 + +### Major Changes + +- 5d142ab: remove deprecated `CoreToolCall` and `CoreToolResult` types + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.7 + +## 3.0.0-canary.7 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.6 + +## 3.0.0-canary.6 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.5 + +## 3.0.0-canary.5 + +### Patch Changes + +- Updated dependencies [6f6bb89] + - @ai-sdk/provider@2.0.0-canary.4 + +## 3.0.0-canary.4 + +### Patch Changes + +- Updated dependencies [d1a1aa1] + - @ai-sdk/provider@2.0.0-canary.3 + +## 3.0.0-canary.3 + +### Patch Changes + +- a166433: feat: add transcription with experimental_transcribe +- 9f95b35: refactor (provider-utils): copy relevant code from `secure-json-parse` into codebase +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.2 + +## 3.0.0-canary.2 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.1 + +## 3.0.0-canary.1 + +### Patch Changes + +- 060370c: feat(provider-utils): add TestServerCall#requestCredentials +- 0c0c0b3: refactor (provider-utils): move `customAlphabet()` method from `nanoid` into codebase +- 63d791d: chore (utils): remove unused test helpers + +## 3.0.0-canary.0 + +### Major Changes + +- d5f588f: AI SDK 5 + +### Patch Changes + +- Updated dependencies [d5f588f] + - @ai-sdk/provider@2.0.0-canary.0 + +## 2.2.3 + +### Patch Changes + +- 28be004: chore (provider-utils): add error method to TestStreamController + +## 2.2.2 + +### Patch Changes + +- b01120e: chore (provider-utils): update unified test server + +## 2.2.1 + +### Patch Changes + +- f10f0fa: fix (provider-utils): improve event source stream parsing performance + +## 2.2.0 + +### Minor Changes + +- 5bc638d: AI SDK 4.2 + +### Patch Changes + +- Updated dependencies [5bc638d] + - @ai-sdk/provider@1.1.0 + +## 2.1.15 + +### Patch Changes + +- d0c4659: feat (provider-utils): parseProviderOptions function + +## 2.1.14 + +### Patch Changes + +- Updated dependencies [0bd5bc6] + - @ai-sdk/provider@1.0.12 + +## 2.1.13 + +### Patch Changes + +- Updated dependencies [2e1101a] + - @ai-sdk/provider@1.0.11 + +## 2.1.12 + +### Patch Changes + +- 1531959: feat (provider-utils): add readable-stream to unified test server + +## 2.1.11 + +### Patch Changes + +- Updated dependencies [e1d3d42] + - @ai-sdk/provider@1.0.10 + +## 2.1.10 + +### Patch Changes + +- Updated dependencies [ddf9740] + - @ai-sdk/provider@1.0.9 + +## 2.1.9 + +### Patch Changes + +- Updated dependencies [2761f06] + - @ai-sdk/provider@1.0.8 + +## 2.1.8 + +### Patch Changes + +- 2e898b4: chore (ai): move mockId test helper into provider utils + +## 2.1.7 + +### Patch Changes + +- 3ff4ef8: feat (provider-utils): export removeUndefinedEntries for working with e.g. headers + +## 2.1.6 + +### Patch Changes + +- Updated dependencies [d89c3b9] + - @ai-sdk/provider@1.0.7 + +## 2.1.5 + +### Patch Changes + +- 3a602ca: chore (core): rename CoreTool to Tool + +## 2.1.4 + +### Patch Changes + +- 066206e: feat (provider-utils): move delay to provider-utils from ai + +## 2.1.3 + +### Patch Changes + +- 39e5c1f: feat (provider-utils): add getFromApi and response handlers for binary responses and status-code errors + +## 2.1.2 + +### Patch Changes + +- ed012d2: feat (provider): add metadata extraction mechanism to openai-compatible providers +- Updated dependencies [3a58a2e] + - @ai-sdk/provider@1.0.6 + +## 2.1.1 + +### Patch Changes + +- e7a9ec9: feat (provider-utils): include raw value in json parse results +- Updated dependencies [0a699f1] + - @ai-sdk/provider@1.0.5 + +## 2.1.0 + +### Minor Changes + +- 62ba5ad: release: AI SDK 4.1 + +## 2.0.8 + +### Patch Changes + +- 00114c5: feat: expose IDGenerator and createIdGenerator + +## 2.0.7 + +### Patch Changes + +- 90fb95a: chore (provider-utils): switch to unified test server +- e6dfef4: feat (provider/fireworks): Support add'l image models. +- 6636db6: feat (provider-utils): add unified test server + +## 2.0.6 + +### Patch Changes + +- 19a2ce7: feat (provider/fireworks): Add image model support. +- 6337688: feat: change image generation errors to warnings +- Updated dependencies + - @ai-sdk/provider@1.0.4 + +## 2.0.5 + +### Patch Changes + +- 5ed5e45: chore (config): Use ts-library.json tsconfig for no-UI libs. +- Updated dependencies [5ed5e45] + - @ai-sdk/provider@1.0.3 + +## 2.0.4 + +### Patch Changes + +- Updated dependencies [09a9cab] + - @ai-sdk/provider@1.0.2 + +## 2.0.3 + +### Patch Changes + +- 0984f0b: feat (provider-utils): Add resolvable type and utility routine. + +## 2.0.2 + +### Patch Changes + +- Updated dependencies [b446ae5] + - @ai-sdk/provider@1.0.1 + +## 2.0.1 + +### Patch Changes + +- c3ab5de: fix (provider-utils): downgrade nanoid and secure-json-parse (ESM compatibility) + +## 2.0.0 + +### Major Changes + +- b469a7e: chore: remove isXXXError methods +- b1da952: chore (provider-utils): remove convertStreamToArray +- 8426f55: chore (ai):increase id generator default size from 7 to 16. +- db46ce5: chore (provider-utils): remove isParseableJson export + +### Patch Changes + +- dce4158: chore (dependencies): update eventsource-parser to 3.0.0 +- dce4158: chore (dependencies): update nanoid to 5.0.8 +- Updated dependencies + - @ai-sdk/provider@1.0.0 + +## 2.0.0-canary.3 + +### Major Changes + +- 8426f55: chore (ai):increase id generator default size from 7 to 16. + +## 2.0.0-canary.2 + +### Patch Changes + +- dce4158: chore (dependencies): update eventsource-parser to 3.0.0 +- dce4158: chore (dependencies): update nanoid to 5.0.8 + +## 2.0.0-canary.1 + +### Major Changes + +- b1da952: chore (provider-utils): remove convertStreamToArray + +## 2.0.0-canary.0 + +### Major Changes + +- b469a7e: chore: remove isXXXError methods +- db46ce5: chore (provider-utils): remove isParseableJson export + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@1.0.0-canary.0 + +## 1.0.22 + +### Patch Changes + +- aa98cdb: chore: more flexible dependency versioning +- 7b937c5: feat (provider-utils): improve id generator robustness +- 811a317: feat (ai/core): multi-part tool results (incl. images) +- Updated dependencies + - @ai-sdk/provider@0.0.26 + +## 1.0.21 + +### Patch Changes + +- Updated dependencies [b9b0d7b] + - @ai-sdk/provider@0.0.25 + +## 1.0.20 + +### Patch Changes + +- Updated dependencies [d595d0d] + - @ai-sdk/provider@0.0.24 + +## 1.0.19 + +### Patch Changes + +- 273f696: fix (ai/provider-utils): expose size argument in generateId + +## 1.0.18 + +### Patch Changes + +- 03313cd: feat (ai): expose response id, response model, response timestamp in telemetry and api +- Updated dependencies + - @ai-sdk/provider@0.0.23 + +## 1.0.17 + +### Patch Changes + +- Updated dependencies [26515cb] + - @ai-sdk/provider@0.0.22 + +## 1.0.16 + +### Patch Changes + +- 09f895f: feat (ai/core): no-schema output for generateObject / streamObject + +## 1.0.15 + +### Patch Changes + +- d67fa9c: feat (provider/amazon-bedrock): add support for session tokens + +## 1.0.14 + +### Patch Changes + +- Updated dependencies [f2c025e] + - @ai-sdk/provider@0.0.21 + +## 1.0.13 + +### Patch Changes + +- Updated dependencies [6ac355e] + - @ai-sdk/provider@0.0.20 + +## 1.0.12 + +### Patch Changes + +- dd712ac: fix: use FetchFunction type to prevent self-reference + +## 1.0.11 + +### Patch Changes + +- Updated dependencies [dd4a0f5] + - @ai-sdk/provider@0.0.19 + +## 1.0.10 + +### Patch Changes + +- 4bd27a9: chore (ai/provider): refactor type validation +- 845754b: fix (ai/provider): fix atob/btoa execution on cloudflare edge workers +- Updated dependencies [4bd27a9] + - @ai-sdk/provider@0.0.18 + +## 1.0.9 + +### Patch Changes + +- Updated dependencies [029af4c] + - @ai-sdk/provider@0.0.17 + +## 1.0.8 + +### Patch Changes + +- Updated dependencies [d58517b] + - @ai-sdk/provider@0.0.16 + +## 1.0.7 + +### Patch Changes + +- Updated dependencies [96aed25] + - @ai-sdk/provider@0.0.15 + +## 1.0.6 + +### Patch Changes + +- 9614584: fix (ai/core): use Symbol.for +- 0762a22: feat (ai/core): support zod transformers in generateObject & streamObject + +## 1.0.5 + +### Patch Changes + +- a8d1c9e9: feat (ai/core): parallel image download +- Updated dependencies [a8d1c9e9] + - @ai-sdk/provider@0.0.14 + +## 1.0.4 + +### Patch Changes + +- 4f88248f: feat (core): support json schema + +## 1.0.3 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@0.0.13 + +## 1.0.2 + +### Patch Changes + +- Updated dependencies [b7290943] + - @ai-sdk/provider@0.0.12 + +## 1.0.1 + +### Patch Changes + +- d481729f: fix (ai/provider-utils): generalize to Error (DomException not always available) + +## 1.0.0 + +### Major Changes + +- 5edc6110: feat (provider-utils): change getRequestHeader() test helper to return Record (breaking change) + +### Patch Changes + +- 5edc6110: feat (provider-utils): add combineHeaders helper +- Updated dependencies [5edc6110] + - @ai-sdk/provider@0.0.11 + +## 0.0.16 + +### Patch Changes + +- 02f6a088: feat (provider-utils): add convertArrayToAsyncIterable test helper + +## 0.0.15 + +### Patch Changes + +- 85712895: feat (@ai-sdk/provider-utils): add createJsonStreamResponseHandler +- 85712895: chore (@ai-sdk/provider-utils): move test helper to provider utils + +## 0.0.14 + +### Patch Changes + +- 7910ae84: feat (providers): support custom fetch implementations + +## 0.0.13 + +### Patch Changes + +- Updated dependencies [102ca22f] + - @ai-sdk/provider@0.0.10 + +## 0.0.12 + +### Patch Changes + +- 09295e2e: feat (@ai-sdk/provider-utils): add download helper +- 043a5de2: fix (provider-utils): rename to isParsableJson +- Updated dependencies [09295e2e] + - @ai-sdk/provider@0.0.9 + +## 0.0.11 + +### Patch Changes + +- Updated dependencies [f39c0dd2] + - @ai-sdk/provider@0.0.8 + +## 0.0.10 + +### Patch Changes + +- Updated dependencies [8e780288] + - @ai-sdk/provider@0.0.7 + +## 0.0.9 + +### Patch Changes + +- 6a50ac4: feat (provider-utils): add loadSetting and convertAsyncGeneratorToReadableStream helpers +- Updated dependencies [6a50ac4] + - @ai-sdk/provider@0.0.6 + +## 0.0.8 + +### Patch Changes + +- Updated dependencies [0f6bc4e] + - @ai-sdk/provider@0.0.5 + +## 0.0.7 + +### Patch Changes + +- Updated dependencies [325ca55] + - @ai-sdk/provider@0.0.4 + +## 0.0.6 + +### Patch Changes + +- 276f22b: fix (ai/provider): improve request error handling + +## 0.0.5 + +### Patch Changes + +- Updated dependencies [41d5736] + - @ai-sdk/provider@0.0.3 + +## 0.0.4 + +### Patch Changes + +- 56ef84a: ai/core: fix abort handling in transformation stream + +## 0.0.3 + +### Patch Changes + +- 25f3350: ai/core: add support for getting raw response headers. +- Updated dependencies + - @ai-sdk/provider@0.0.2 + +## 0.0.2 + +### Patch Changes + +- eb150a6: ai/core: remove scaling of setting values (breaking change). If you were using the temperature, frequency penalty, or presence penalty settings, you need to update the providers and adjust the setting values. +- Updated dependencies [eb150a6] + - @ai-sdk/provider@0.0.1 + +## 0.0.1 + +### Patch Changes + +- 7b8791d: Rename baseUrl to baseURL. Automatically remove trailing slashes. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/README.md new file mode 100644 index 000000000..f7ee1685f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/README.md @@ -0,0 +1 @@ +# AI SDK - Provider Implementation Utilities diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/package.json new file mode 100644 index 000000000..a666da5df --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/package.json @@ -0,0 +1,81 @@ +{ + "name": "@ai-sdk/provider-utils", + "version": "4.0.21", + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "source": "./src/index.ts", + "files": [ + "dist/**/*", + "src", + "!src/**/*.test.ts", + "!src/**/*.test-d.ts", + "!src/**/__snapshots__", + "!src/**/__fixtures__", + "CHANGELOG.md", + "README.md", + "test.d.ts" + ], + "exports": { + "./package.json": "./package.json", + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + }, + "./test": { + "types": "./dist/test/index.d.ts", + "import": "./dist/test/index.mjs", + "module": "./dist/test/index.mjs", + "require": "./dist/test/index.js" + } + }, + "dependencies": { + "@standard-schema/spec": "^1.1.0", + "eventsource-parser": "^3.0.6", + "@ai-sdk/provider": "3.0.8" + }, + "devDependencies": { + "@types/node": "20.17.24", + "msw": "2.7.0", + "tsup": "^8", + "typescript": "5.8.3", + "zod": "3.25.76", + "@vercel/ai-tsconfig": "0.0.0" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + }, + "engines": { + "node": ">=18" + }, + "publishConfig": { + "access": "public" + }, + "homepage": "https://ai-sdk.dev/docs", + "repository": { + "type": "git", + "url": "git+https://github.com/vercel/ai.git" + }, + "bugs": { + "url": "https://github.com/vercel/ai/issues" + }, + "keywords": [ + "ai" + ], + "scripts": { + "build": "pnpm clean && tsup --tsconfig tsconfig.build.json", + "build:watch": "pnpm clean && tsup --watch", + "clean": "del-cli dist *.tsbuildinfo", + "lint": "eslint \"./**/*.ts*\"", + "type-check": "tsc --build", + "prettier-check": "prettier --check \"./**/*.ts*\"", + "test": "pnpm test:node && pnpm test:edge", + "test:update": "pnpm test:node -u", + "test:watch": "vitest --config vitest.node.config.js", + "test:edge": "vitest --config vitest.edge.config.js --run", + "test:node": "vitest --config vitest.node.config.js --run" + } +} \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/add-additional-properties-to-json-schema.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/add-additional-properties-to-json-schema.ts new file mode 100644 index 000000000..2c259bdad --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/add-additional-properties-to-json-schema.ts @@ -0,0 +1,53 @@ +import { JSONSchema7, JSONSchema7Definition } from '@ai-sdk/provider'; + +/** + * Recursively adds additionalProperties: false to the JSON schema. This is necessary because some providers (e.g. OpenAI) do not support additionalProperties: true. + */ +export function addAdditionalPropertiesToJsonSchema( + jsonSchema: JSONSchema7, +): JSONSchema7 { + if ( + jsonSchema.type === 'object' || + (Array.isArray(jsonSchema.type) && jsonSchema.type.includes('object')) + ) { + jsonSchema.additionalProperties = false; + const { properties } = jsonSchema; + if (properties != null) { + for (const key of Object.keys(properties)) { + properties[key] = visit(properties[key]); + } + } + } + + if (jsonSchema.items != null) { + jsonSchema.items = Array.isArray(jsonSchema.items) + ? jsonSchema.items.map(visit) + : visit(jsonSchema.items); + } + + if (jsonSchema.anyOf != null) { + jsonSchema.anyOf = jsonSchema.anyOf.map(visit); + } + + if (jsonSchema.allOf != null) { + jsonSchema.allOf = jsonSchema.allOf.map(visit); + } + + if (jsonSchema.oneOf != null) { + jsonSchema.oneOf = jsonSchema.oneOf.map(visit); + } + + const { definitions } = jsonSchema; + if (definitions != null) { + for (const key of Object.keys(definitions)) { + definitions[key] = visit(definitions[key]); + } + } + + return jsonSchema; +} + +function visit(def: JSONSchema7Definition): JSONSchema7Definition { + if (typeof def === 'boolean') return def; + return addAdditionalPropertiesToJsonSchema(def); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/combine-headers.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/combine-headers.ts new file mode 100644 index 000000000..5f842268d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/combine-headers.ts @@ -0,0 +1,11 @@ +export function combineHeaders( + ...headers: Array | undefined> +): Record { + return headers.reduce( + (combinedHeaders, currentHeaders) => ({ + ...combinedHeaders, + ...(currentHeaders ?? {}), + }), + {}, + ) as Record; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/convert-async-iterator-to-readable-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/convert-async-iterator-to-readable-stream.ts new file mode 100644 index 000000000..dd1121ca1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/convert-async-iterator-to-readable-stream.ts @@ -0,0 +1,47 @@ +/** + * Converts an AsyncIterator to a ReadableStream. + * + * @template T - The type of elements produced by the AsyncIterator. + * @param { } iterator - The AsyncIterator to convert. + * @returns {ReadableStream} - A ReadableStream that provides the same data as the AsyncIterator. + */ +export function convertAsyncIteratorToReadableStream( + iterator: AsyncIterator, +): ReadableStream { + let cancelled = false; + + return new ReadableStream({ + /** + * Called when the consumer wants to pull more data from the stream. + * + * @param {ReadableStreamDefaultController} controller - The controller to enqueue data into the stream. + * @returns {Promise} + */ + async pull(controller) { + if (cancelled) return; + try { + const { value, done } = await iterator.next(); + if (done) { + controller.close(); + } else { + controller.enqueue(value); + } + } catch (error) { + controller.error(error); + } + }, + /** + * Called when the consumer cancels the stream. + */ + async cancel(reason?: unknown) { + cancelled = true; + if (iterator.return) { + try { + await iterator.return(reason); + } catch { + // intentionally ignore errors during cancellation + } + } + }, + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/convert-image-model-file-to-data-uri.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/convert-image-model-file-to-data-uri.ts new file mode 100644 index 000000000..5115fb739 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/convert-image-model-file-to-data-uri.ts @@ -0,0 +1,19 @@ +import { ImageModelV3File } from '@ai-sdk/provider'; +import { convertUint8ArrayToBase64 } from './uint8-utils'; + +/** + * Convert an ImageModelV3File to a URL or data URI string. + * + * If the file is a URL, it returns the URL as-is. + * If the file is base64 data, it returns a data URI with the base64 data. + * If the file is a Uint8Array, it converts it to base64 and returns a data URI. + */ +export function convertImageModelFileToDataUri(file: ImageModelV3File): string { + if (file.type === 'url') return file.url; + + return `data:${file.mediaType};base64,${ + typeof file.data === 'string' + ? file.data + : convertUint8ArrayToBase64(file.data) + }`; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/convert-to-form-data.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/convert-to-form-data.ts new file mode 100644 index 000000000..c2459ef93 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/convert-to-form-data.ts @@ -0,0 +1,61 @@ +/** + * Converts an input object to FormData for multipart/form-data requests. + * + * Handles the following cases: + * - `null` or `undefined` values are skipped + * - Arrays with a single element are appended as a single value + * - Arrays with multiple elements are appended with `[]` suffix (e.g., `image[]`) + * unless `useArrayBrackets` is set to `false` + * - All other values are appended directly + * + * @param input - The input object to convert. Use a generic type for type validation. + * @param options - Optional configuration object. + * @param options.useArrayBrackets - Whether to add `[]` suffix for multi-element arrays. + * Defaults to `true`. Set to `false` for APIs that expect repeated keys without brackets. + * @returns A FormData object containing the input values. + * + * @example + * ```ts + * type MyInput = { + * model: string; + * prompt: string; + * images: Blob[]; + * }; + * + * const formData = convertToFormData({ + * model: 'gpt-image-1', + * prompt: 'A cat', + * images: [blob1, blob2], + * }); + * ``` + */ +export function convertToFormData>( + input: T, + options: { useArrayBrackets?: boolean } = {}, +): FormData { + const { useArrayBrackets = true } = options; + const formData = new FormData(); + + for (const [key, value] of Object.entries(input)) { + if (value == null) { + continue; + } + + if (Array.isArray(value)) { + if (value.length === 1) { + formData.append(key, value[0] as string | Blob); + continue; + } + + const arrayKey = useArrayBrackets ? `${key}[]` : key; + for (const item of value) { + formData.append(arrayKey, item as string | Blob); + } + continue; + } + + formData.append(key, value as string | Blob); + } + + return formData; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/create-tool-name-mapping.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/create-tool-name-mapping.ts new file mode 100644 index 000000000..7116dd242 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/create-tool-name-mapping.ts @@ -0,0 +1,82 @@ +import { + LanguageModelV3FunctionTool, + LanguageModelV3ProviderTool, +} from '@ai-sdk/provider'; + +/** + * Interface for mapping between custom tool names and provider tool names. + */ +export interface ToolNameMapping { + /** + * Maps a custom tool name (used by the client) to the provider's tool name. + * If the custom tool name does not have a mapping, returns the input name. + * + * @param customToolName - The custom name of the tool defined by the client. + * @returns The corresponding provider tool name, or the input name if not mapped. + */ + toProviderToolName: (customToolName: string) => string; + + /** + * Maps a provider tool name to the custom tool name used by the client. + * If the provider tool name does not have a mapping, returns the input name. + * + * @param providerToolName - The name of the tool as understood by the provider. + * @returns The corresponding custom tool name, or the input name if not mapped. + */ + toCustomToolName: (providerToolName: string) => string; +} + +/** + * @param tools - Tools that were passed to the language model. + * @param providerToolNames - Maps the provider tool ids to the provider tool names. + */ +export function createToolNameMapping({ + tools = [], + providerToolNames, + resolveProviderToolName, +}: { + /** + * Tools that were passed to the language model. + */ + tools: + | Array + | undefined; + + /** + * Maps the provider tool ids to the provider tool names. + */ + providerToolNames: Record<`${string}.${string}`, string>; + + /** + * Optional resolver for provider tool names that cannot be represented as + * static id -> name mappings (e.g. dynamic provider names). + */ + resolveProviderToolName?: ( + tool: LanguageModelV3ProviderTool, + ) => string | undefined; +}): ToolNameMapping { + const customToolNameToProviderToolName: Record = {}; + const providerToolNameToCustomToolName: Record = {}; + + for (const tool of tools) { + if (tool.type === 'provider') { + const providerToolName = + resolveProviderToolName?.(tool) ?? + (tool.id in providerToolNames ? providerToolNames[tool.id] : undefined); + + if (providerToolName == null) { + continue; + } + + customToolNameToProviderToolName[tool.name] = providerToolName; + providerToolNameToCustomToolName[providerToolName] = tool.name; + } + } + + return { + toProviderToolName: (customToolName: string) => + customToolNameToProviderToolName[customToolName] ?? customToolName, + toCustomToolName: (providerToolName: string) => + providerToolNameToCustomToolName[providerToolName] ?? providerToolName, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/delay.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/delay.ts new file mode 100644 index 000000000..a99ea5698 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/delay.ts @@ -0,0 +1,47 @@ +/** + * Creates a Promise that resolves after a specified delay + * @param delayInMs - The delay duration in milliseconds. If null or undefined, resolves immediately. + * @param signal - Optional AbortSignal to cancel the delay + * @returns A Promise that resolves after the specified delay + * @throws {DOMException} When the signal is aborted + */ +export async function delay( + delayInMs?: number | null, + options?: { + abortSignal?: AbortSignal; + }, +): Promise { + if (delayInMs == null) { + return Promise.resolve(); + } + + const signal = options?.abortSignal; + + return new Promise((resolve, reject) => { + if (signal?.aborted) { + reject(createAbortError()); + return; + } + + const timeoutId = setTimeout(() => { + cleanup(); + resolve(); + }, delayInMs); + + const cleanup = () => { + clearTimeout(timeoutId); + signal?.removeEventListener('abort', onAbort); + }; + + const onAbort = () => { + cleanup(); + reject(createAbortError()); + }; + + signal?.addEventListener('abort', onAbort); + }); +} + +function createAbortError(): DOMException { + return new DOMException('Delay was aborted', 'AbortError'); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/delayed-promise.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/delayed-promise.ts new file mode 100644 index 000000000..d25c8a2c5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/delayed-promise.ts @@ -0,0 +1,61 @@ +/** + * Delayed promise. It is only constructed once the value is accessed. + * This is useful to avoid unhandled promise rejections when the promise is created + * but not accessed. + */ +export class DelayedPromise { + private status: + | { type: 'pending' } + | { type: 'resolved'; value: T } + | { type: 'rejected'; error: unknown } = { type: 'pending' }; + private _promise: Promise | undefined; + private _resolve: undefined | ((value: T) => void) = undefined; + private _reject: undefined | ((error: unknown) => void) = undefined; + + get promise(): Promise { + if (this._promise) { + return this._promise; + } + + this._promise = new Promise((resolve, reject) => { + if (this.status.type === 'resolved') { + resolve(this.status.value); + } else if (this.status.type === 'rejected') { + reject(this.status.error); + } + + this._resolve = resolve; + this._reject = reject; + }); + + return this._promise; + } + + resolve(value: T): void { + this.status = { type: 'resolved', value }; + + if (this._promise) { + this._resolve?.(value); + } + } + + reject(error: unknown): void { + this.status = { type: 'rejected', error }; + + if (this._promise) { + this._reject?.(error); + } + } + + isResolved(): boolean { + return this.status.type === 'resolved'; + } + + isRejected(): boolean { + return this.status.type === 'rejected'; + } + + isPending(): boolean { + return this.status.type === 'pending'; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/download-blob.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/download-blob.ts new file mode 100644 index 000000000..56fdbc31f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/download-blob.ts @@ -0,0 +1,57 @@ +import { DownloadError } from './download-error'; +import { + readResponseWithSizeLimit, + DEFAULT_MAX_DOWNLOAD_SIZE, +} from './read-response-with-size-limit'; +import { validateDownloadUrl } from './validate-download-url'; + +/** + * Download a file from a URL and return it as a Blob. + * + * @param url - The URL to download from. + * @param options - Optional settings for the download. + * @param options.maxBytes - Maximum allowed download size in bytes. Defaults to 100 MiB. + * @param options.abortSignal - An optional abort signal to cancel the download. + * @returns A Promise that resolves to the downloaded Blob. + * + * @throws DownloadError if the download fails or exceeds maxBytes. + */ +export async function downloadBlob( + url: string, + options?: { maxBytes?: number; abortSignal?: AbortSignal }, +): Promise { + validateDownloadUrl(url); + try { + const response = await fetch(url, { + signal: options?.abortSignal, + }); + + // Validate final URL after redirects to prevent SSRF via open redirect + if (response.redirected) { + validateDownloadUrl(response.url); + } + + if (!response.ok) { + throw new DownloadError({ + url, + statusCode: response.status, + statusText: response.statusText, + }); + } + + const data = await readResponseWithSizeLimit({ + response, + url, + maxBytes: options?.maxBytes ?? DEFAULT_MAX_DOWNLOAD_SIZE, + }); + + const contentType = response.headers.get('content-type') ?? undefined; + return new Blob([data], contentType ? { type: contentType } : undefined); + } catch (error) { + if (DownloadError.isInstance(error)) { + throw error; + } + + throw new DownloadError({ url, cause: error }); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/download-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/download-error.ts new file mode 100644 index 000000000..455e5b377 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/download-error.ts @@ -0,0 +1,39 @@ +import { AISDKError } from '@ai-sdk/provider'; + +const name = 'AI_DownloadError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class DownloadError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly url: string; + readonly statusCode?: number; + readonly statusText?: string; + + constructor({ + url, + statusCode, + statusText, + cause, + message = cause == null + ? `Failed to download ${url}: ${statusCode} ${statusText}` + : `Failed to download ${url}: ${cause}`, + }: { + url: string; + statusCode?: number; + statusText?: string; + message?: string; + cause?: unknown; + }) { + super({ name, message, cause }); + + this.url = url; + this.statusCode = statusCode; + this.statusText = statusText; + } + + static isInstance(error: unknown): error is DownloadError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/extract-response-headers.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/extract-response-headers.ts new file mode 100644 index 000000000..4056ce2f5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/extract-response-headers.ts @@ -0,0 +1,9 @@ +/** + * Extracts the headers from a response object and returns them as a key-value object. + * + * @param response - The response object to extract headers from. + * @returns The headers as a key-value object. + */ +export function extractResponseHeaders(response: Response) { + return Object.fromEntries([...response.headers]); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/fetch-function.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/fetch-function.ts new file mode 100644 index 000000000..f7882f903 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/fetch-function.ts @@ -0,0 +1,4 @@ +/** + * Fetch function type (standardizes the version of fetch used). + */ +export type FetchFunction = typeof globalThis.fetch; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/generate-id.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/generate-id.ts new file mode 100644 index 000000000..32a8a53be --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/generate-id.ts @@ -0,0 +1,57 @@ +import { InvalidArgumentError } from '@ai-sdk/provider'; + +/** + * Creates an ID generator. + * The total length of the ID is the sum of the prefix, separator, and random part length. + * Not cryptographically secure. + * + * @param alphabet - The alphabet to use for the ID. Default: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'. + * @param prefix - The prefix of the ID to generate. Optional. + * @param separator - The separator between the prefix and the random part of the ID. Default: '-'. + * @param size - The size of the random part of the ID to generate. Default: 16. + */ +export const createIdGenerator = ({ + prefix, + size = 16, + alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', + separator = '-', +}: { + prefix?: string; + separator?: string; + size?: number; + alphabet?: string; +} = {}): IdGenerator => { + const generator = () => { + const alphabetLength = alphabet.length; + const chars = new Array(size); + for (let i = 0; i < size; i++) { + chars[i] = alphabet[(Math.random() * alphabetLength) | 0]; + } + return chars.join(''); + }; + + if (prefix == null) { + return generator; + } + + // check that the prefix is not part of the alphabet (otherwise prefix checking can fail randomly) + if (alphabet.includes(separator)) { + throw new InvalidArgumentError({ + argument: 'separator', + message: `The separator "${separator}" must not be part of the alphabet "${alphabet}".`, + }); + } + + return () => `${prefix}${separator}${generator()}`; +}; + +/** + * A function that generates an ID. + */ +export type IdGenerator = () => string; + +/** + * Generates a 16-character random string to use for IDs. + * Not cryptographically secure. + */ +export const generateId = createIdGenerator(); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/get-error-message.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/get-error-message.ts new file mode 100644 index 000000000..62c29e58a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/get-error-message.ts @@ -0,0 +1,15 @@ +export function getErrorMessage(error: unknown | undefined) { + if (error == null) { + return 'unknown error'; + } + + if (typeof error === 'string') { + return error; + } + + if (error instanceof Error) { + return error.message; + } + + return JSON.stringify(error); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/get-from-api.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/get-from-api.ts new file mode 100644 index 000000000..0a786dd06 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/get-from-api.ts @@ -0,0 +1,97 @@ +import { APICallError } from '@ai-sdk/provider'; +import { extractResponseHeaders } from './extract-response-headers'; +import { FetchFunction } from './fetch-function'; +import { handleFetchError } from './handle-fetch-error'; +import { isAbortError } from './is-abort-error'; +import { ResponseHandler } from './response-handler'; +import { getRuntimeEnvironmentUserAgent } from './get-runtime-environment-user-agent'; +import { withUserAgentSuffix } from './with-user-agent-suffix'; +import { VERSION } from './version'; + +// use function to allow for mocking in tests: +const getOriginalFetch = () => globalThis.fetch; + +export const getFromApi = async ({ + url, + headers = {}, + successfulResponseHandler, + failedResponseHandler, + abortSignal, + fetch = getOriginalFetch(), +}: { + url: string; + headers?: Record; + failedResponseHandler: ResponseHandler; + successfulResponseHandler: ResponseHandler; + abortSignal?: AbortSignal; + fetch?: FetchFunction; +}) => { + try { + const response = await fetch(url, { + method: 'GET', + headers: withUserAgentSuffix( + headers, + `ai-sdk/provider-utils/${VERSION}`, + getRuntimeEnvironmentUserAgent(), + ), + signal: abortSignal, + }); + + const responseHeaders = extractResponseHeaders(response); + + if (!response.ok) { + let errorInformation: { + value: Error; + responseHeaders?: Record | undefined; + }; + + try { + errorInformation = await failedResponseHandler({ + response, + url, + requestBodyValues: {}, + }); + } catch (error) { + if (isAbortError(error) || APICallError.isInstance(error)) { + throw error; + } + + throw new APICallError({ + message: 'Failed to process error response', + cause: error, + statusCode: response.status, + url, + responseHeaders, + requestBodyValues: {}, + }); + } + + throw errorInformation.value; + } + + try { + return await successfulResponseHandler({ + response, + url, + requestBodyValues: {}, + }); + } catch (error) { + if (error instanceof Error) { + if (isAbortError(error) || APICallError.isInstance(error)) { + throw error; + } + } + + throw new APICallError({ + message: 'Failed to process successful response', + cause: error, + statusCode: response.status, + url, + responseHeaders, + requestBodyValues: {}, + }); + } + } catch (error) { + throw handleFetchError({ error, url, requestBodyValues: {} }); + } +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/get-runtime-environment-user-agent.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/get-runtime-environment-user-agent.ts new file mode 100644 index 000000000..f553f7353 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/get-runtime-environment-user-agent.ts @@ -0,0 +1,24 @@ +export function getRuntimeEnvironmentUserAgent( + globalThisAny: any = globalThis as any, +): string { + // Browsers + if (globalThisAny.window) { + return `runtime/browser`; + } + + // Cloudflare Workers / Deno / Bun / Node.js >= 21.1 + if (globalThisAny.navigator?.userAgent) { + return `runtime/${globalThisAny.navigator.userAgent.toLowerCase()}`; + } + + // Nodes.js < 21.1 + if (globalThisAny.process?.versions?.node) { + return `runtime/node.js/${globalThisAny.process.version.substring(0)}`; + } + + if (globalThisAny.EdgeRuntime) { + return `runtime/vercel-edge`; + } + + return 'runtime/unknown'; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/handle-fetch-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/handle-fetch-error.ts new file mode 100644 index 000000000..d9774ab6b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/handle-fetch-error.ts @@ -0,0 +1,72 @@ +import { APICallError } from '@ai-sdk/provider'; +import { isAbortError } from './is-abort-error'; + +const FETCH_FAILED_ERROR_MESSAGES = ['fetch failed', 'failed to fetch']; + +const BUN_ERROR_CODES = [ + 'ConnectionRefused', + 'ConnectionClosed', + 'FailedToOpenSocket', + 'ECONNRESET', + 'ECONNREFUSED', + 'ETIMEDOUT', + 'EPIPE', +]; + +function isBunNetworkError(error: unknown): error is Error & { code?: string } { + if (!(error instanceof Error)) { + return false; + } + + const code = (error as any).code; + if (typeof code === 'string' && BUN_ERROR_CODES.includes(code)) { + return true; + } + + return false; +} + +export function handleFetchError({ + error, + url, + requestBodyValues, +}: { + error: unknown; + url: string; + requestBodyValues: unknown; +}) { + if (isAbortError(error)) { + return error; + } + + // unwrap original error when fetch failed (for easier debugging): + if ( + error instanceof TypeError && + FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase()) + ) { + const cause = (error as any).cause; + + if (cause != null) { + // Failed to connect to server: + return new APICallError({ + message: `Cannot connect to API: ${cause.message}`, + cause, + url, + requestBodyValues, + isRetryable: true, // retry when network error + }); + } + } + + if (isBunNetworkError(error)) { + return new APICallError({ + message: `Cannot connect to API: ${error.message}`, + cause: error, + url, + requestBodyValues, + isRetryable: true, + }); + } + + return error; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/index.ts new file mode 100644 index 000000000..dc1d45d76 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/index.ts @@ -0,0 +1,73 @@ +export * from './combine-headers'; +export { convertAsyncIteratorToReadableStream } from './convert-async-iterator-to-readable-stream'; +export { + createToolNameMapping, + type ToolNameMapping, +} from './create-tool-name-mapping'; +export * from './delay'; +export { DelayedPromise } from './delayed-promise'; +export * from './extract-response-headers'; +export { convertImageModelFileToDataUri } from './convert-image-model-file-to-data-uri'; +export { convertToFormData } from './convert-to-form-data'; +export { downloadBlob } from './download-blob'; +export { DownloadError } from './download-error'; +export { + readResponseWithSizeLimit, + DEFAULT_MAX_DOWNLOAD_SIZE, +} from './read-response-with-size-limit'; +export * from './fetch-function'; +export { createIdGenerator, generateId, type IdGenerator } from './generate-id'; +export * from './get-error-message'; +export * from './get-from-api'; +export { getRuntimeEnvironmentUserAgent } from './get-runtime-environment-user-agent'; +export { injectJsonInstructionIntoMessages } from './inject-json-instruction'; +export * from './is-abort-error'; +export { isNonNullable } from './is-non-nullable'; +export { isUrlSupported } from './is-url-supported'; +export * from './load-api-key'; +export { loadOptionalSetting } from './load-optional-setting'; +export { loadSetting } from './load-setting'; +export { type MaybePromiseLike } from './maybe-promise-like'; +export { mediaTypeToExtension } from './media-type-to-extension'; +export { normalizeHeaders } from './normalize-headers'; +export * from './parse-json'; +export { parseJsonEventStream } from './parse-json-event-stream'; +export { parseProviderOptions } from './parse-provider-options'; +export * from './post-to-api'; +export { + createProviderToolFactory, + createProviderToolFactoryWithOutputSchema, + type ProviderToolFactory, + type ProviderToolFactoryWithOutputSchema, +} from './provider-tool-factory'; +export * from './remove-undefined-entries'; +export * from './resolve'; +export * from './response-handler'; +export { + asSchema, + jsonSchema, + lazySchema, + zodSchema, + type FlexibleSchema, + type InferSchema, + type LazySchema, + type Schema, + type ValidationResult, +} from './schema'; +export { stripFileExtension } from './strip-file-extension'; +export * from './uint8-utils'; +export { validateDownloadUrl } from './validate-download-url'; +export * from './validate-types'; +export { VERSION } from './version'; +export { withUserAgentSuffix } from './with-user-agent-suffix'; +export * from './without-trailing-slash'; + +// folder re-exports +export * from './types'; + +// external re-exports +export type * from '@standard-schema/spec'; +export { + EventSourceParserStream, + type EventSourceMessage, +} from 'eventsource-parser/stream'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/inject-json-instruction.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/inject-json-instruction.ts new file mode 100644 index 000000000..f307b7595 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/inject-json-instruction.ts @@ -0,0 +1,63 @@ +import { + JSONSchema7, + LanguageModelV3Message, + LanguageModelV3Prompt, +} from '@ai-sdk/provider'; + +const DEFAULT_SCHEMA_PREFIX = 'JSON schema:'; +const DEFAULT_SCHEMA_SUFFIX = + 'You MUST answer with a JSON object that matches the JSON schema above.'; +const DEFAULT_GENERIC_SUFFIX = 'You MUST answer with JSON.'; + +export function injectJsonInstruction({ + prompt, + schema, + schemaPrefix = schema != null ? DEFAULT_SCHEMA_PREFIX : undefined, + schemaSuffix = schema != null + ? DEFAULT_SCHEMA_SUFFIX + : DEFAULT_GENERIC_SUFFIX, +}: { + prompt?: string; + schema?: JSONSchema7; + schemaPrefix?: string; + schemaSuffix?: string; +}): string { + return [ + prompt != null && prompt.length > 0 ? prompt : undefined, + prompt != null && prompt.length > 0 ? '' : undefined, // add a newline if prompt is not null + schemaPrefix, + schema != null ? JSON.stringify(schema) : undefined, + schemaSuffix, + ] + .filter(line => line != null) + .join('\n'); +} + +export function injectJsonInstructionIntoMessages({ + messages, + schema, + schemaPrefix, + schemaSuffix, +}: { + messages: LanguageModelV3Prompt; + schema?: JSONSchema7; + schemaPrefix?: string; + schemaSuffix?: string; +}): LanguageModelV3Prompt { + const systemMessage: LanguageModelV3Message = + messages[0]?.role === 'system' + ? { ...messages[0] } + : { role: 'system', content: '' }; + + systemMessage.content = injectJsonInstruction({ + prompt: systemMessage.content, + schema, + schemaPrefix, + schemaSuffix, + }); + + return [ + systemMessage, + ...(messages[0]?.role === 'system' ? messages.slice(1) : messages), + ]; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-abort-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-abort-error.ts new file mode 100644 index 000000000..195c6e473 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-abort-error.ts @@ -0,0 +1,8 @@ +export function isAbortError(error: unknown): error is Error { + return ( + (error instanceof Error || error instanceof DOMException) && + (error.name === 'AbortError' || + error.name === 'ResponseAborted' || // Next.js + error.name === 'TimeoutError') + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-async-iterable.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-async-iterable.ts new file mode 100644 index 000000000..1bd9ce1d3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-async-iterable.ts @@ -0,0 +1,3 @@ +export function isAsyncIterable(obj: any): obj is AsyncIterable { + return obj != null && typeof obj[Symbol.asyncIterator] === 'function'; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-non-nullable.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-non-nullable.ts new file mode 100644 index 000000000..39963ded3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-non-nullable.ts @@ -0,0 +1,12 @@ +/** + * Type guard that checks whether a value is not `null` or `undefined`. + * + * @template T - The type of the value to check. + * @param value - The value to check. + * @returns `true` if the value is neither `null` nor `undefined`, otherwise `false`. + */ +export function isNonNullable( + value: T | undefined | null, +): value is NonNullable { + return value != null; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-url-supported.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-url-supported.ts new file mode 100644 index 000000000..94db5e773 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/is-url-supported.ts @@ -0,0 +1,40 @@ +/** + * Checks if the given URL is supported natively by the model. + * + * @param mediaType - The media type of the URL. Case-sensitive. + * @param url - The URL to check. + * @param supportedUrls - A record where keys are case-sensitive media types (or '*') + * and values are arrays of RegExp patterns for URLs. + * + * @returns `true` if the URL matches a pattern under the specific media type + * or the wildcard '*', `false` otherwise. + */ +export function isUrlSupported({ + mediaType, + url, + supportedUrls, +}: { + mediaType: string; + url: string; + supportedUrls: Record; +}): boolean { + // standardize media type and url to lower case + url = url.toLowerCase(); + mediaType = mediaType.toLowerCase(); + + return ( + Object.entries(supportedUrls) + // standardize supported url map into lowercase prefixes: + .map(([key, value]) => { + const mediaType = key.toLowerCase(); + return mediaType === '*' || mediaType === '*/*' + ? { mediaTypePrefix: '', regexes: value } + : { mediaTypePrefix: mediaType.replace(/\*/, ''), regexes: value }; + }) + // gather all regexp pattern from matched media type prefixes: + .filter(({ mediaTypePrefix }) => mediaType.startsWith(mediaTypePrefix)) + .flatMap(({ regexes }) => regexes) + // check if any pattern matches the url: + .some(pattern => pattern.test(url)) + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/load-api-key.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/load-api-key.ts new file mode 100644 index 000000000..44d9c9967 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/load-api-key.ts @@ -0,0 +1,45 @@ +import { LoadAPIKeyError } from '@ai-sdk/provider'; + +export function loadApiKey({ + apiKey, + environmentVariableName, + apiKeyParameterName = 'apiKey', + description, +}: { + apiKey: string | undefined; + environmentVariableName: string; + apiKeyParameterName?: string; + description: string; +}): string { + if (typeof apiKey === 'string') { + return apiKey; + } + + if (apiKey != null) { + throw new LoadAPIKeyError({ + message: `${description} API key must be a string.`, + }); + } + + if (typeof process === 'undefined') { + throw new LoadAPIKeyError({ + message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`, + }); + } + + apiKey = process.env[environmentVariableName]; + + if (apiKey == null) { + throw new LoadAPIKeyError({ + message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`, + }); + } + + if (typeof apiKey !== 'string') { + throw new LoadAPIKeyError({ + message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`, + }); + } + + return apiKey; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/load-optional-setting.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/load-optional-setting.ts new file mode 100644 index 000000000..bce841c02 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/load-optional-setting.ts @@ -0,0 +1,30 @@ +/** + * Loads an optional `string` setting from the environment or a parameter. + * + * @param settingValue - The setting value. + * @param environmentVariableName - The environment variable name. + * @returns The setting value. + */ +export function loadOptionalSetting({ + settingValue, + environmentVariableName, +}: { + settingValue: string | undefined; + environmentVariableName: string; +}): string | undefined { + if (typeof settingValue === 'string') { + return settingValue; + } + + if (settingValue != null || typeof process === 'undefined') { + return undefined; + } + + settingValue = process.env[environmentVariableName]; + + if (settingValue == null || typeof settingValue !== 'string') { + return undefined; + } + + return settingValue; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/load-setting.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/load-setting.ts new file mode 100644 index 000000000..2042fcb89 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/load-setting.ts @@ -0,0 +1,62 @@ +import { LoadSettingError } from '@ai-sdk/provider'; + +/** + * Loads a `string` setting from the environment or a parameter. + * + * @param settingValue - The setting value. + * @param environmentVariableName - The environment variable name. + * @param settingName - The setting name. + * @param description - The description of the setting. + * @returns The setting value. + */ +export function loadSetting({ + settingValue, + environmentVariableName, + settingName, + description, +}: { + settingValue: string | undefined; + environmentVariableName: string; + settingName: string; + description: string; +}): string { + if (typeof settingValue === 'string') { + return settingValue; + } + + if (settingValue != null) { + throw new LoadSettingError({ + message: `${description} setting must be a string.`, + }); + } + + if (typeof process === 'undefined') { + throw new LoadSettingError({ + message: + `${description} setting is missing. ` + + `Pass it using the '${settingName}' parameter. ` + + `Environment variables is not supported in this environment.`, + }); + } + + settingValue = process.env[environmentVariableName]; + + if (settingValue == null) { + throw new LoadSettingError({ + message: + `${description} setting is missing. ` + + `Pass it using the '${settingName}' parameter ` + + `or the ${environmentVariableName} environment variable.`, + }); + } + + if (typeof settingValue !== 'string') { + throw new LoadSettingError({ + message: + `${description} setting must be a string. ` + + `The value of the ${environmentVariableName} environment variable is not a string.`, + }); + } + + return settingValue; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/maybe-promise-like.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/maybe-promise-like.ts new file mode 100644 index 000000000..f3dc1c577 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/maybe-promise-like.ts @@ -0,0 +1,3 @@ +export type MaybePromiseLike = + | T // Raw value + | PromiseLike; // Promise of value diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/media-type-to-extension.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/media-type-to-extension.ts new file mode 100644 index 000000000..40b475390 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/media-type-to-extension.ts @@ -0,0 +1,22 @@ +/** + * Maps a media type to its corresponding file extension. + * It was originally introduced to set a filename for audio file uploads + * in https://github.com/vercel/ai/pull/8159. + * + * @param mediaType The media type to map. + * @returns The corresponding file extension + * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types/Common_types + */ +export function mediaTypeToExtension(mediaType: string) { + const [_type, subtype = ''] = mediaType.toLowerCase().split('/'); + + return ( + { + mpeg: 'mp3', + 'x-wav': 'wav', + opus: 'ogg', + mp4: 'm4a', + 'x-m4a': 'm4a', + }[subtype] ?? subtype + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/normalize-headers.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/normalize-headers.ts new file mode 100644 index 000000000..ade0a3431 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/normalize-headers.ts @@ -0,0 +1,38 @@ +/** + * Normalizes different header inputs into a plain record with lower-case keys. + * Entries with `undefined` or `null` values are removed. + * + * @param headers - Input headers (`Headers`, tuples array, plain record) to normalize. + * @returns A record containing the normalized header entries. + */ +export function normalizeHeaders( + headers: + | HeadersInit + | Record + | Array<[string, string | undefined]> + | undefined, +): Record { + if (headers == null) { + return {}; + } + + const normalized: Record = {}; + + if (headers instanceof Headers) { + headers.forEach((value, key) => { + normalized[key.toLowerCase()] = value; + }); + } else { + if (!Array.isArray(headers)) { + headers = Object.entries(headers); + } + + for (const [key, value] of headers) { + if (value != null) { + normalized[key.toLowerCase()] = value; + } + } + } + + return normalized; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/parse-json-event-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/parse-json-event-stream.ts new file mode 100644 index 000000000..bd23542b9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/parse-json-event-stream.ts @@ -0,0 +1,33 @@ +import { + EventSourceMessage, + EventSourceParserStream, +} from 'eventsource-parser/stream'; +import { ParseResult, safeParseJSON } from './parse-json'; +import { FlexibleSchema } from './schema'; + +/** + * Parses a JSON event stream into a stream of parsed JSON objects. + */ +export function parseJsonEventStream({ + stream, + schema, +}: { + stream: ReadableStream; + schema: FlexibleSchema; +}): ReadableStream> { + return stream + .pipeThrough(new TextDecoderStream()) + .pipeThrough(new EventSourceParserStream()) + .pipeThrough( + new TransformStream>({ + async transform({ data }, controller) { + // ignore the 'DONE' event that e.g. OpenAI sends: + if (data === '[DONE]') { + return; + } + + controller.enqueue(await safeParseJSON({ text: data, schema })); + }, + }), + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/parse-json.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/parse-json.ts new file mode 100644 index 000000000..f6bcc5369 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/parse-json.ts @@ -0,0 +1,122 @@ +import { + JSONParseError, + JSONValue, + TypeValidationError, +} from '@ai-sdk/provider'; +import { secureJsonParse } from './secure-json-parse'; +import { safeValidateTypes, validateTypes } from './validate-types'; +import { FlexibleSchema } from './schema'; + +/** + * Parses a JSON string into an unknown object. + * + * @param text - The JSON string to parse. + * @returns {JSONValue} - The parsed JSON object. + */ +export async function parseJSON(options: { + text: string; + schema?: undefined; +}): Promise; +/** + * Parses a JSON string into a strongly-typed object using the provided schema. + * + * @template T - The type of the object to parse the JSON into. + * @param {string} text - The JSON string to parse. + * @param {Validator} schema - The schema to use for parsing the JSON. + * @returns {Promise} - The parsed object. + */ +export async function parseJSON(options: { + text: string; + schema: FlexibleSchema; +}): Promise; +export async function parseJSON({ + text, + schema, +}: { + text: string; + schema?: FlexibleSchema; +}): Promise { + try { + const value = secureJsonParse(text); + + if (schema == null) { + return value; + } + + return validateTypes({ value, schema }); + } catch (error) { + if ( + JSONParseError.isInstance(error) || + TypeValidationError.isInstance(error) + ) { + throw error; + } + + throw new JSONParseError({ text, cause: error }); + } +} + +export type ParseResult = + | { success: true; value: T; rawValue: unknown } + | { + success: false; + error: JSONParseError | TypeValidationError; + rawValue: unknown; + }; + +/** + * Safely parses a JSON string and returns the result as an object of type `unknown`. + * + * @param text - The JSON string to parse. + * @returns {Promise} Either an object with `success: true` and the parsed data, or an object with `success: false` and the error that occurred. + */ +export async function safeParseJSON(options: { + text: string; + schema?: undefined; +}): Promise>; +/** + * Safely parses a JSON string into a strongly-typed object, using a provided schema to validate the object. + * + * @template T - The type of the object to parse the JSON into. + * @param {string} text - The JSON string to parse. + * @param {Validator} schema - The schema to use for parsing the JSON. + * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object. + */ +export async function safeParseJSON(options: { + text: string; + schema: FlexibleSchema; +}): Promise>; +export async function safeParseJSON({ + text, + schema, +}: { + text: string; + schema?: FlexibleSchema; +}): Promise> { + try { + const value = secureJsonParse(text); + + if (schema == null) { + return { success: true, value: value as T, rawValue: value }; + } + + return await safeValidateTypes({ value, schema }); + } catch (error) { + return { + success: false, + error: JSONParseError.isInstance(error) + ? error + : new JSONParseError({ text, cause: error }), + rawValue: undefined, + }; + } +} + +export function isParsableJson(input: string): boolean { + try { + secureJsonParse(input); + return true; + } catch { + return false; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/parse-provider-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/parse-provider-options.ts new file mode 100644 index 000000000..aa11c5f07 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/parse-provider-options.ts @@ -0,0 +1,32 @@ +import { InvalidArgumentError } from '@ai-sdk/provider'; +import { safeValidateTypes } from './validate-types'; +import { FlexibleSchema } from './schema'; + +export async function parseProviderOptions({ + provider, + providerOptions, + schema, +}: { + provider: string; + providerOptions: Record | undefined; + schema: FlexibleSchema; +}): Promise { + if (providerOptions?.[provider] == null) { + return undefined; + } + + const parsedProviderOptions = await safeValidateTypes({ + value: providerOptions[provider], + schema, + }); + + if (!parsedProviderOptions.success) { + throw new InvalidArgumentError({ + argument: 'providerOptions', + message: `invalid ${provider} provider options`, + cause: parsedProviderOptions.error, + }); + } + + return parsedProviderOptions.value; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/post-to-api.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/post-to-api.ts new file mode 100644 index 000000000..6e387dda3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/post-to-api.ts @@ -0,0 +1,166 @@ +import { APICallError } from '@ai-sdk/provider'; +import { extractResponseHeaders } from './extract-response-headers'; +import { FetchFunction } from './fetch-function'; +import { handleFetchError } from './handle-fetch-error'; +import { isAbortError } from './is-abort-error'; +import { ResponseHandler } from './response-handler'; +import { getRuntimeEnvironmentUserAgent } from './get-runtime-environment-user-agent'; +import { withUserAgentSuffix } from './with-user-agent-suffix'; +import { VERSION } from './version'; + +// use function to allow for mocking in tests: +const getOriginalFetch = () => globalThis.fetch; + +export const postJsonToApi = async ({ + url, + headers, + body, + failedResponseHandler, + successfulResponseHandler, + abortSignal, + fetch, +}: { + url: string; + headers?: Record; + body: unknown; + failedResponseHandler: ResponseHandler; + successfulResponseHandler: ResponseHandler; + abortSignal?: AbortSignal; + fetch?: FetchFunction; +}) => + postToApi({ + url, + headers: { + 'Content-Type': 'application/json', + ...headers, + }, + body: { + content: JSON.stringify(body), + values: body, + }, + failedResponseHandler, + successfulResponseHandler, + abortSignal, + fetch, + }); + +export const postFormDataToApi = async ({ + url, + headers, + formData, + failedResponseHandler, + successfulResponseHandler, + abortSignal, + fetch, +}: { + url: string; + headers?: Record; + formData: FormData; + failedResponseHandler: ResponseHandler; + successfulResponseHandler: ResponseHandler; + abortSignal?: AbortSignal; + fetch?: FetchFunction; +}) => + postToApi({ + url, + headers, + body: { + content: formData, + values: Object.fromEntries((formData as any).entries()), + }, + failedResponseHandler, + successfulResponseHandler, + abortSignal, + fetch, + }); + +export const postToApi = async ({ + url, + headers = {}, + body, + successfulResponseHandler, + failedResponseHandler, + abortSignal, + fetch = getOriginalFetch(), +}: { + url: string; + headers?: Record; + body: { + content: string | FormData | Uint8Array; + values: unknown; + }; + failedResponseHandler: ResponseHandler; + successfulResponseHandler: ResponseHandler; + abortSignal?: AbortSignal; + fetch?: FetchFunction; +}) => { + try { + const response = await fetch(url, { + method: 'POST', + headers: withUserAgentSuffix( + headers, + `ai-sdk/provider-utils/${VERSION}`, + getRuntimeEnvironmentUserAgent(), + ), + body: body.content, + signal: abortSignal, + }); + + const responseHeaders = extractResponseHeaders(response); + + if (!response.ok) { + let errorInformation: { + value: Error; + responseHeaders?: Record | undefined; + }; + + try { + errorInformation = await failedResponseHandler({ + response, + url, + requestBodyValues: body.values, + }); + } catch (error) { + if (isAbortError(error) || APICallError.isInstance(error)) { + throw error; + } + + throw new APICallError({ + message: 'Failed to process error response', + cause: error, + statusCode: response.status, + url, + responseHeaders, + requestBodyValues: body.values, + }); + } + + throw errorInformation.value; + } + + try { + return await successfulResponseHandler({ + response, + url, + requestBodyValues: body.values, + }); + } catch (error) { + if (error instanceof Error) { + if (isAbortError(error) || APICallError.isInstance(error)) { + throw error; + } + } + + throw new APICallError({ + message: 'Failed to process successful response', + cause: error, + statusCode: response.status, + url, + responseHeaders, + requestBodyValues: body.values, + }); + } + } catch (error) { + throw handleFetchError({ error, url, requestBodyValues: body.values }); + } +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/provider-tool-factory.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/provider-tool-factory.ts new file mode 100644 index 000000000..2c29130e0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/provider-tool-factory.ts @@ -0,0 +1,125 @@ +import { tool, Tool, ToolExecuteFunction } from './types/tool'; +import { FlexibleSchema } from './schema'; + +export type ProviderToolFactory = ( + options: ARGS & { + execute?: ToolExecuteFunction; + needsApproval?: Tool['needsApproval']; + toModelOutput?: Tool['toModelOutput']; + onInputStart?: Tool['onInputStart']; + onInputDelta?: Tool['onInputDelta']; + onInputAvailable?: Tool['onInputAvailable']; + }, +) => Tool; + +export function createProviderToolFactory({ + id, + inputSchema, +}: { + id: `${string}.${string}`; + inputSchema: FlexibleSchema; +}): ProviderToolFactory { + return ({ + execute, + outputSchema, + needsApproval, + toModelOutput, + onInputStart, + onInputDelta, + onInputAvailable, + ...args + }: ARGS & { + execute?: ToolExecuteFunction; + outputSchema?: FlexibleSchema; + needsApproval?: Tool['needsApproval']; + toModelOutput?: Tool['toModelOutput']; + onInputStart?: Tool['onInputStart']; + onInputDelta?: Tool['onInputDelta']; + onInputAvailable?: Tool['onInputAvailable']; + }): Tool => + tool({ + type: 'provider', + id, + args, + inputSchema, + outputSchema, + execute, + needsApproval, + toModelOutput, + onInputStart, + onInputDelta, + onInputAvailable, + }); +} + +export type ProviderToolFactoryWithOutputSchema< + INPUT, + OUTPUT, + ARGS extends object, +> = ( + options: ARGS & { + execute?: ToolExecuteFunction; + needsApproval?: Tool['needsApproval']; + toModelOutput?: Tool['toModelOutput']; + onInputStart?: Tool['onInputStart']; + onInputDelta?: Tool['onInputDelta']; + onInputAvailable?: Tool['onInputAvailable']; + }, +) => Tool; + +export function createProviderToolFactoryWithOutputSchema< + INPUT, + OUTPUT, + ARGS extends object, +>({ + id, + inputSchema, + outputSchema, + supportsDeferredResults, +}: { + id: `${string}.${string}`; + inputSchema: FlexibleSchema; + outputSchema: FlexibleSchema; + /** + * Whether this provider-executed tool supports deferred results. + * + * When true, the tool result may not be returned in the same turn as the + * tool call (e.g., when using programmatic tool calling where a server tool + * triggers a client-executed tool, and the server tool's result is deferred + * until the client tool is resolved). + * + * @default false + */ + supportsDeferredResults?: boolean; +}): ProviderToolFactoryWithOutputSchema { + return ({ + execute, + needsApproval, + toModelOutput, + onInputStart, + onInputDelta, + onInputAvailable, + ...args + }: ARGS & { + execute?: ToolExecuteFunction; + needsApproval?: Tool['needsApproval']; + toModelOutput?: Tool['toModelOutput']; + onInputStart?: Tool['onInputStart']; + onInputDelta?: Tool['onInputDelta']; + onInputAvailable?: Tool['onInputAvailable']; + }): Tool => + tool({ + type: 'provider', + id, + args, + inputSchema, + outputSchema, + execute, + needsApproval, + toModelOutput, + onInputStart, + onInputDelta, + onInputAvailable, + supportsDeferredResults, + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/read-response-with-size-limit.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/read-response-with-size-limit.ts new file mode 100644 index 000000000..6be70d720 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/read-response-with-size-limit.ts @@ -0,0 +1,97 @@ +import { DownloadError } from './download-error'; + +/** + * Default maximum download size: 2 GiB. + * + * `fetch().arrayBuffer()` has ~2x peak memory overhead (undici buffers the + * body internally, then creates the JS ArrayBuffer), so very large downloads + * risk exceeding the default V8 heap limit on 64-bit systems and terminating + * the process with an out-of-memory error. + * + * Setting this limit converts an unrecoverable OOM crash into a catchable + * `DownloadError`. + */ +export const DEFAULT_MAX_DOWNLOAD_SIZE = 2 * 1024 * 1024 * 1024; + +/** + * Reads a fetch Response body with a size limit to prevent memory exhaustion. + * + * Checks the Content-Length header for early rejection, then reads the body + * incrementally via ReadableStream and aborts with a DownloadError when the + * limit is exceeded. + * + * @param response - The fetch Response to read. + * @param url - The URL being downloaded (used in error messages). + * @param maxBytes - Maximum allowed bytes. Defaults to DEFAULT_MAX_DOWNLOAD_SIZE. + * @returns A Uint8Array containing the response body. + * @throws DownloadError if the response exceeds maxBytes. + */ +export async function readResponseWithSizeLimit({ + response, + url, + maxBytes = DEFAULT_MAX_DOWNLOAD_SIZE, +}: { + response: Response; + url: string; + maxBytes?: number; +}): Promise { + // Early rejection based on Content-Length header + const contentLength = response.headers.get('content-length'); + if (contentLength != null) { + const length = parseInt(contentLength, 10); + if (!isNaN(length) && length > maxBytes) { + throw new DownloadError({ + url, + message: `Download of ${url} exceeded maximum size of ${maxBytes} bytes (Content-Length: ${length}).`, + }); + } + } + + const body = response.body; + + // Handle missing body (empty responses) + if (body == null) { + return new Uint8Array(0); + } + + const reader = body.getReader(); + const chunks: Uint8Array[] = []; + let totalBytes = 0; + + try { + while (true) { + const { done, value } = await reader.read(); + + if (done) { + break; + } + + totalBytes += value.length; + + if (totalBytes > maxBytes) { + throw new DownloadError({ + url, + message: `Download of ${url} exceeded maximum size of ${maxBytes} bytes.`, + }); + } + + chunks.push(value); + } + } finally { + try { + await reader.cancel(); + } finally { + reader.releaseLock(); + } + } + + // Concatenate chunks into a single Uint8Array + const result = new Uint8Array(totalBytes); + let offset = 0; + for (const chunk of chunks) { + result.set(chunk, offset); + offset += chunk.length; + } + + return result; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/remove-undefined-entries.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/remove-undefined-entries.ts new file mode 100644 index 000000000..bf315fad8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/remove-undefined-entries.ts @@ -0,0 +1,12 @@ +/** + * Removes entries from a record where the value is null or undefined. + * @param record - The input object whose entries may be null or undefined. + * @returns A new object containing only entries with non-null and non-undefined values. + */ +export function removeUndefinedEntries( + record: Record, +): Record { + return Object.fromEntries( + Object.entries(record).filter(([_key, value]) => value != null), + ) as Record; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/resolve.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/resolve.ts new file mode 100644 index 000000000..1ff8e7903 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/resolve.ts @@ -0,0 +1,17 @@ +import { MaybePromiseLike } from './maybe-promise-like'; + +export type Resolvable = MaybePromiseLike | (() => MaybePromiseLike); + +/** + * Resolves a value that could be a raw value, a Promise, a function returning a value, + * or a function returning a Promise. + */ +export async function resolve(value: Resolvable): Promise { + // If it's a function, call it to get the value/promise + if (typeof value === 'function') { + value = (value as Function)(); + } + + // Otherwise just resolve whatever we got (value or promise) + return Promise.resolve(value as T); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/response-handler.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/response-handler.ts new file mode 100644 index 000000000..b96834a96 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/response-handler.ts @@ -0,0 +1,186 @@ +import { APICallError, EmptyResponseBodyError } from '@ai-sdk/provider'; +import { extractResponseHeaders } from './extract-response-headers'; +import { parseJSON, ParseResult, safeParseJSON } from './parse-json'; +import { parseJsonEventStream } from './parse-json-event-stream'; +import { FlexibleSchema } from './schema'; + +export type ResponseHandler = (options: { + url: string; + requestBodyValues: unknown; + response: Response; +}) => PromiseLike<{ + value: RETURN_TYPE; + rawValue?: unknown; + responseHeaders?: Record; +}>; + +export const createJsonErrorResponseHandler = + ({ + errorSchema, + errorToMessage, + isRetryable, + }: { + errorSchema: FlexibleSchema; + errorToMessage: (error: T) => string; + isRetryable?: (response: Response, error?: T) => boolean; + }): ResponseHandler => + async ({ response, url, requestBodyValues }) => { + const responseBody = await response.text(); + const responseHeaders = extractResponseHeaders(response); + + // Some providers return an empty response body for some errors: + if (responseBody.trim() === '') { + return { + responseHeaders, + value: new APICallError({ + message: response.statusText, + url, + requestBodyValues, + statusCode: response.status, + responseHeaders, + responseBody, + isRetryable: isRetryable?.(response), + }), + }; + } + + // resilient parsing in case the response is not JSON or does not match the schema: + try { + const parsedError = await parseJSON({ + text: responseBody, + schema: errorSchema, + }); + + return { + responseHeaders, + value: new APICallError({ + message: errorToMessage(parsedError), + url, + requestBodyValues, + statusCode: response.status, + responseHeaders, + responseBody, + data: parsedError, + isRetryable: isRetryable?.(response, parsedError), + }), + }; + } catch (parseError) { + return { + responseHeaders, + value: new APICallError({ + message: response.statusText, + url, + requestBodyValues, + statusCode: response.status, + responseHeaders, + responseBody, + isRetryable: isRetryable?.(response), + }), + }; + } + }; + +export const createEventSourceResponseHandler = + ( + chunkSchema: FlexibleSchema, + ): ResponseHandler>> => + async ({ response }: { response: Response }) => { + const responseHeaders = extractResponseHeaders(response); + + if (response.body == null) { + throw new EmptyResponseBodyError({}); + } + + return { + responseHeaders, + value: parseJsonEventStream({ + stream: response.body, + schema: chunkSchema, + }), + }; + }; + +export const createJsonResponseHandler = + (responseSchema: FlexibleSchema): ResponseHandler => + async ({ response, url, requestBodyValues }) => { + const responseBody = await response.text(); + + const parsedResult = await safeParseJSON({ + text: responseBody, + schema: responseSchema, + }); + + const responseHeaders = extractResponseHeaders(response); + + if (!parsedResult.success) { + throw new APICallError({ + message: 'Invalid JSON response', + cause: parsedResult.error, + statusCode: response.status, + responseHeaders, + responseBody, + url, + requestBodyValues, + }); + } + + return { + responseHeaders, + value: parsedResult.value, + rawValue: parsedResult.rawValue, + }; + }; + +export const createBinaryResponseHandler = + (): ResponseHandler => + async ({ response, url, requestBodyValues }) => { + const responseHeaders = extractResponseHeaders(response); + + if (!response.body) { + throw new APICallError({ + message: 'Response body is empty', + url, + requestBodyValues, + statusCode: response.status, + responseHeaders, + responseBody: undefined, + }); + } + + try { + const buffer = await response.arrayBuffer(); + return { + responseHeaders, + value: new Uint8Array(buffer), + }; + } catch (error) { + throw new APICallError({ + message: 'Failed to read response as array buffer', + url, + requestBodyValues, + statusCode: response.status, + responseHeaders, + responseBody: undefined, + cause: error, + }); + } + }; + +export const createStatusCodeErrorResponseHandler = + (): ResponseHandler => + async ({ response, url, requestBodyValues }) => { + const responseHeaders = extractResponseHeaders(response); + const responseBody = await response.text(); + + return { + responseHeaders, + value: new APICallError({ + message: response.statusText, + url, + requestBodyValues: requestBodyValues as Record, + statusCode: response.status, + responseHeaders, + responseBody, + }), + }; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/schema.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/schema.ts new file mode 100644 index 000000000..74064de48 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/schema.ts @@ -0,0 +1,267 @@ +import { JSONSchema7, TypeValidationError } from '@ai-sdk/provider'; +import { StandardSchemaV1, StandardJSONSchemaV1 } from '@standard-schema/spec'; +import * as z3 from 'zod/v3'; +import * as z4 from 'zod/v4'; +import { addAdditionalPropertiesToJsonSchema } from './add-additional-properties-to-json-schema'; +import { zod3ToJsonSchema } from './to-json-schema/zod3-to-json-schema'; + +/** + * Used to mark schemas so we can support both Zod and custom schemas. + */ +const schemaSymbol = Symbol.for('vercel.ai.schema'); + +export type ValidationResult = + | { success: true; value: OBJECT } + | { success: false; error: Error }; + +export type Schema = { + /** + * Used to mark schemas so we can support both Zod and custom schemas. + */ + [schemaSymbol]: true; + + /** + * Schema type for inference. + */ + _type: OBJECT; + + /** + * Optional. Validates that the structure of a value matches this schema, + * and returns a typed version of the value if it does. + */ + readonly validate?: ( + value: unknown, + ) => ValidationResult | PromiseLike>; + + /** + * The JSON Schema for the schema. It is passed to the providers. + */ + readonly jsonSchema: JSONSchema7 | PromiseLike; +}; + +/** + * Creates a schema with deferred creation. + * This is important to reduce the startup time of the library + * and to avoid initializing unused validators. + * + * @param createValidator A function that creates a schema. + * @returns A function that returns a schema. + */ +export function lazySchema( + createSchema: () => Schema, +): LazySchema { + // cache the validator to avoid initializing it multiple times + let schema: Schema | undefined; + return () => { + if (schema == null) { + schema = createSchema(); + } + return schema; + }; +} + +export type LazySchema = () => Schema; + +export type ZodSchema = + | z3.Schema + | z4.core.$ZodType; + +export type StandardSchema = StandardSchemaV1 & + StandardJSONSchemaV1; + +export type FlexibleSchema = + | Schema + | LazySchema + | ZodSchema + | StandardSchema; + +export type InferSchema = + SCHEMA extends ZodSchema + ? T + : SCHEMA extends StandardSchema + ? T + : SCHEMA extends LazySchema + ? T + : SCHEMA extends Schema + ? T + : never; + +/** + * Create a schema using a JSON Schema. + * + * @param jsonSchema The JSON Schema for the schema. + * @param options.validate Optional. A validation function for the schema. + */ +export function jsonSchema( + jsonSchema: + | JSONSchema7 + | PromiseLike + | (() => JSONSchema7 | PromiseLike), + { + validate, + }: { + validate?: ( + value: unknown, + ) => ValidationResult | PromiseLike>; + } = {}, +): Schema { + return { + [schemaSymbol]: true, + _type: undefined as OBJECT, // should never be used directly + get jsonSchema() { + if (typeof jsonSchema === 'function') { + jsonSchema = jsonSchema(); // cache the function results + } + return jsonSchema; + }, + validate, + }; +} + +function isSchema(value: unknown): value is Schema { + return ( + typeof value === 'object' && + value !== null && + schemaSymbol in value && + value[schemaSymbol] === true && + 'jsonSchema' in value && + 'validate' in value + ); +} + +export function asSchema( + schema: FlexibleSchema | undefined, +): Schema { + return schema == null + ? jsonSchema({ properties: {}, additionalProperties: false }) + : isSchema(schema) + ? schema + : '~standard' in schema + ? schema['~standard'].vendor === 'zod' + ? zodSchema(schema as ZodSchema) + : standardSchema(schema as StandardSchema) + : schema(); +} + +function standardSchema( + standardSchema: StandardSchema, +): Schema { + return jsonSchema( + () => + addAdditionalPropertiesToJsonSchema( + standardSchema['~standard'].jsonSchema.input({ + target: 'draft-07', + }) as JSONSchema7, + ), + { + validate: async value => { + const result = await standardSchema['~standard'].validate(value); + return 'value' in result + ? { success: true, value: result.value } + : { + success: false, + error: new TypeValidationError({ + value, + cause: result.issues, + }), + }; + }, + }, + ); +} + +export function zod3Schema( + zodSchema: z3.Schema, + options?: { + /** + * Enables support for references in the schema. + * This is required for recursive schemas, e.g. with `z.lazy`. + * However, not all language models and providers support such references. + * Defaults to `false`. + */ + useReferences?: boolean; + }, +): Schema { + // default to no references (to support openapi conversion for google) + const useReferences = options?.useReferences ?? false; + + return jsonSchema( + // defer json schema creation to avoid unnecessary computation when only validation is needed + () => + zod3ToJsonSchema(zodSchema, { + $refStrategy: useReferences ? 'root' : 'none', + }) as JSONSchema7, + { + validate: async value => { + const result = await zodSchema.safeParseAsync(value); + return result.success + ? { success: true, value: result.data } + : { success: false, error: result.error }; + }, + }, + ); +} + +export function zod4Schema( + zodSchema: z4.core.$ZodType, + options?: { + /** + * Enables support for references in the schema. + * This is required for recursive schemas, e.g. with `z.lazy`. + * However, not all language models and providers support such references. + * Defaults to `false`. + */ + useReferences?: boolean; + }, +): Schema { + // default to no references (to support openapi conversion for google) + const useReferences = options?.useReferences ?? false; + + return jsonSchema( + // defer json schema creation to avoid unnecessary computation when only validation is needed + () => + addAdditionalPropertiesToJsonSchema( + z4.toJSONSchema(zodSchema, { + target: 'draft-7', + io: 'input', + reused: useReferences ? 'ref' : 'inline', + }) as JSONSchema7, + ), + { + validate: async value => { + const result = await z4.safeParseAsync(zodSchema, value); + return result.success + ? { success: true, value: result.data } + : { success: false, error: result.error }; + }, + }, + ); +} + +export function isZod4Schema( + zodSchema: z4.core.$ZodType | z3.Schema, +): zodSchema is z4.core.$ZodType { + // https://zod.dev/library-authors?id=how-to-support-zod-3-and-zod-4-simultaneously + return '_zod' in zodSchema; +} + +export function zodSchema( + zodSchema: + | z4.core.$ZodType + | z3.Schema, + options?: { + /** + * Enables support for references in the schema. + * This is required for recursive schemas, e.g. with `z.lazy`. + * However, not all language models and providers support such references. + * Defaults to `false`. + */ + useReferences?: boolean; + }, +): Schema { + if (isZod4Schema(zodSchema)) { + return zod4Schema(zodSchema, options); + } else { + return zod3Schema(zodSchema, options); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/secure-json-parse.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/secure-json-parse.ts new file mode 100644 index 000000000..52ff0e6ad --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/secure-json-parse.ts @@ -0,0 +1,96 @@ +// Licensed under BSD-3-Clause (this file only) +// Code adapted from https://github.com/fastify/secure-json-parse/blob/783fcb1b5434709466759847cec974381939673a/index.js +// +// Copyright (c) Vercel, Inc. (https://vercel.com) +// Copyright (c) 2019 The Fastify Team +// Copyright (c) 2019, Sideway Inc, and project contributors +// All rights reserved. +// +// The complete list of contributors can be found at: +// - https://github.com/hapijs/bourne/graphs/contributors +// - https://github.com/fastify/secure-json-parse/graphs/contributors +// - https://github.com/vercel/ai/commits/main/packages/provider-utils/src/secure-parse-json.ts +// +// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +const suspectProtoRx = + /"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/; +const suspectConstructorRx = + /"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/; + +function _parse(text: string) { + // Parse normally + const obj = JSON.parse(text); + + // Ignore null and non-objects + if (obj === null || typeof obj !== 'object') { + return obj; + } + + if ( + suspectProtoRx.test(text) === false && + suspectConstructorRx.test(text) === false + ) { + return obj; + } + + // Scan result for proto keys + return filter(obj); +} + +function filter(obj: any) { + let next = [obj]; + + while (next.length) { + const nodes = next; + next = []; + + for (const node of nodes) { + if (Object.prototype.hasOwnProperty.call(node, '__proto__')) { + throw new SyntaxError('Object contains forbidden prototype property'); + } + + if ( + Object.prototype.hasOwnProperty.call(node, 'constructor') && + node.constructor !== null && + typeof node.constructor === 'object' && + Object.prototype.hasOwnProperty.call(node.constructor, 'prototype') + ) { + throw new SyntaxError('Object contains forbidden prototype property'); + } + + for (const key in node) { + const value = node[key]; + if (value && typeof value === 'object') { + next.push(value); + } + } + } + } + return obj; +} + +export function secureJsonParse(text: string) { + const { stackTraceLimit } = Error; + try { + // Performance optimization, see https://github.com/fastify/secure-json-parse/pull/90 + Error.stackTraceLimit = 0; + } catch (e) { + // Fallback in case Error is immutable (v8 readonly) + return _parse(text); + } + + try { + return _parse(text); + } finally { + Error.stackTraceLimit = stackTraceLimit; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/strip-file-extension.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/strip-file-extension.ts new file mode 100644 index 000000000..03b1c8f0d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/strip-file-extension.ts @@ -0,0 +1,13 @@ +/** + * Strips file extension segments from a filename. + * + * Examples: + * - "report.pdf" -> "report" + * - "archive.tar.gz" -> "archive" + * - "filename" -> "filename" + */ +export function stripFileExtension(filename: string): string { + const firstDotIndex = filename.indexOf('.'); + + return firstDotIndex === -1 ? filename : filename.slice(0, firstDotIndex); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-array-to-async-iterable.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-array-to-async-iterable.ts new file mode 100644 index 000000000..7e1a6fbec --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-array-to-async-iterable.ts @@ -0,0 +1,9 @@ +export function convertArrayToAsyncIterable(values: T[]): AsyncIterable { + return { + async *[Symbol.asyncIterator]() { + for (const value of values) { + yield value; + } + }, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-array-to-readable-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-array-to-readable-stream.ts new file mode 100644 index 000000000..ac945e5e3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-array-to-readable-stream.ts @@ -0,0 +1,15 @@ +export function convertArrayToReadableStream( + values: T[], +): ReadableStream { + return new ReadableStream({ + start(controller) { + try { + for (const value of values) { + controller.enqueue(value); + } + } finally { + controller.close(); + } + }, + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-async-iterable-to-array.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-async-iterable-to-array.ts new file mode 100644 index 000000000..88e442fea --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-async-iterable-to-array.ts @@ -0,0 +1,9 @@ +export async function convertAsyncIterableToArray( + iterable: AsyncIterable, +): Promise { + const result: T[] = []; + for await (const item of iterable) { + result.push(item); + } + return result; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-readable-stream-to-array.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-readable-stream-to-array.ts new file mode 100644 index 000000000..307e33179 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-readable-stream-to-array.ts @@ -0,0 +1,14 @@ +export async function convertReadableStreamToArray( + stream: ReadableStream, +): Promise { + const reader = stream.getReader(); + const result: T[] = []; + + while (true) { + const { done, value } = await reader.read(); + if (done) break; + result.push(value); + } + + return result; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-response-stream-to-array.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-response-stream-to-array.ts new file mode 100644 index 000000000..3c1fa79b9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/convert-response-stream-to-array.ts @@ -0,0 +1,9 @@ +import { convertReadableStreamToArray } from './convert-readable-stream-to-array'; + +export async function convertResponseStreamToArray( + response: Response, +): Promise { + return convertReadableStreamToArray( + response.body!.pipeThrough(new TextDecoderStream()), + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/index.ts new file mode 100644 index 000000000..a8a334ea8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/index.ts @@ -0,0 +1,7 @@ +export * from './convert-array-to-async-iterable'; +export * from './convert-array-to-readable-stream'; +export * from './convert-async-iterable-to-array'; +export * from './convert-readable-stream-to-array'; +export * from './convert-response-stream-to-array'; +export * from './is-node-version'; +export * from './mock-id'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/is-node-version.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/is-node-version.ts new file mode 100644 index 000000000..51f35c604 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/is-node-version.ts @@ -0,0 +1,4 @@ +export function isNodeVersion(version: number) { + const nodeMajorVersion = parseInt(process.version.slice(1).split('.')[0], 10); + return nodeMajorVersion === version; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/mock-id.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/mock-id.ts new file mode 100644 index 000000000..45914a134 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/test/mock-id.ts @@ -0,0 +1,8 @@ +export function mockId({ + prefix = 'id', +}: { + prefix?: string; +} = {}): () => string { + let counter = 0; + return () => `${prefix}-${counter++}`; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/LICENSE new file mode 100644 index 000000000..b3b48f8f4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/LICENSE @@ -0,0 +1,16 @@ +ISC License + +Copyright (c) 2020, Stefan Terdell +Copyright (c) 2025, Vercel Inc. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/README.md new file mode 100644 index 000000000..ed978d3e8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/README.md @@ -0,0 +1,24 @@ +# `zod-to-json-schema` + +Originally copied from https://github.com/StefanTerdell/zod-to-json-schema because its `peerDependency` on `"zod": "^3.24.1"` while `ai` needs to support `zod@4` if users already use it. We want to avoid having both `zod@3` and `zod@4` in the dependency tree of our users. + +The code in this directory and sub-directories is released under the ISC license: + +``` +ISC License + +Copyright (c) 2020, Stefan Terdell +Copyright (c) 2025, Vercel Inc. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/get-relative-path.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/get-relative-path.ts new file mode 100644 index 000000000..cf80a293e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/get-relative-path.ts @@ -0,0 +1,7 @@ +export const getRelativePath = (pathA: string[], pathB: string[]) => { + let i = 0; + for (; i < pathA.length && i < pathB.length; i++) { + if (pathA[i] !== pathB[i]) break; + } + return [(pathA.length - i).toString(), ...pathB.slice(i)].join('/'); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/index.ts new file mode 100644 index 000000000..1d4d8a589 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/index.ts @@ -0,0 +1 @@ +export { zod3ToJsonSchema } from './zod3-to-json-schema'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/options.ts new file mode 100644 index 000000000..ab5b031c6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/options.ts @@ -0,0 +1,98 @@ +import { ZodSchema, ZodTypeDef } from 'zod/v3'; +import { Refs, Seen } from './refs'; +import { JsonSchema7Type } from './parse-types'; + +export type DateStrategy = + | 'format:date-time' + | 'format:date' + | 'string' + | 'integer'; + +export const ignoreOverride = Symbol( + 'Let zodToJsonSchema decide on which parser to use', +); + +export type OverrideCallback = ( + def: ZodTypeDef, + refs: Refs, + seen: Seen | undefined, + forceResolution?: boolean, +) => JsonSchema7Type | undefined | typeof ignoreOverride; + +export type PostProcessCallback = ( + jsonSchema: JsonSchema7Type | undefined, + def: ZodTypeDef, + refs: Refs, +) => JsonSchema7Type | undefined; + +export const jsonDescription: PostProcessCallback = (jsonSchema, def) => { + if (def.description) { + try { + return { + ...jsonSchema, + ...JSON.parse(def.description), + }; + } catch {} + } + + return jsonSchema; +}; + +export type Options = { + name: string | undefined; + $refStrategy: 'root' | 'relative' | 'none' | 'seen'; + basePath: string[]; + effectStrategy: 'input' | 'any'; + pipeStrategy: 'input' | 'output' | 'all'; + dateStrategy: DateStrategy | DateStrategy[]; + mapStrategy: 'entries' | 'record'; + removeAdditionalStrategy: 'passthrough' | 'strict'; + allowedAdditionalProperties: true | undefined; + rejectedAdditionalProperties: false | undefined; + strictUnions: boolean; + definitionPath: string; + definitions: Record; + errorMessages: boolean; + patternStrategy: 'escape' | 'preserve'; + applyRegexFlags: boolean; + emailStrategy: 'format:email' | 'format:idn-email' | 'pattern:zod'; + base64Strategy: 'format:binary' | 'contentEncoding:base64' | 'pattern:zod'; + nameStrategy: 'ref' | 'title'; + override?: OverrideCallback; + postProcess?: PostProcessCallback; +}; + +export const defaultOptions: Options = { + name: undefined, + $refStrategy: 'root', + basePath: ['#'], + effectStrategy: 'input', + pipeStrategy: 'all', + dateStrategy: 'format:date-time', + mapStrategy: 'entries', + removeAdditionalStrategy: 'passthrough', + allowedAdditionalProperties: true, + rejectedAdditionalProperties: false, + definitionPath: 'definitions', + strictUnions: false, + definitions: {}, + errorMessages: false, + patternStrategy: 'escape', + applyRegexFlags: false, + emailStrategy: 'format:email', + base64Strategy: 'contentEncoding:base64', + nameStrategy: 'ref', +}; + +export const getDefaultOptions = ( + options: Partial | string | undefined, +) => + (typeof options === 'string' + ? { + ...defaultOptions, + name: options, + } + : { + ...defaultOptions, + ...options, + }) as Options; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parse-def.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parse-def.ts new file mode 100644 index 000000000..b2f6b8d7b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parse-def.ts @@ -0,0 +1,109 @@ +import { ZodTypeDef } from 'zod/v3'; +import { Refs, Seen } from './refs'; +import { ignoreOverride } from './options'; +import { JsonSchema7Type } from './parse-types'; +import { selectParser } from './select-parser'; +import { getRelativePath } from './get-relative-path'; +import { parseAnyDef } from './parsers/any'; + +export function parseDef( + def: ZodTypeDef, + refs: Refs, + forceResolution = false, // Forces a new schema to be instantiated even though its def has been seen. Used for improving refs in definitions. See https://github.com/StefanTerdell/zod-to-json-schema/pull/61. +): JsonSchema7Type | undefined { + const seenItem = refs.seen.get(def); + + if (refs.override) { + const overrideResult = refs.override?.( + def, + refs, + seenItem, + forceResolution, + ); + + if (overrideResult !== ignoreOverride) { + return overrideResult; + } + } + + if (seenItem && !forceResolution) { + const seenSchema = get$ref(seenItem, refs); + + if (seenSchema !== undefined) { + return seenSchema; + } + } + + const newItem: Seen = { def, path: refs.currentPath, jsonSchema: undefined }; + + refs.seen.set(def, newItem); + + const jsonSchemaOrGetter = selectParser(def, (def as any).typeName, refs); + + // If the return was a function, then the inner definition needs to be extracted before a call to parseDef (recursive) + const jsonSchema = + typeof jsonSchemaOrGetter === 'function' + ? parseDef(jsonSchemaOrGetter(), refs) + : jsonSchemaOrGetter; + + if (jsonSchema) { + addMeta(def, refs, jsonSchema); + } + + if (refs.postProcess) { + const postProcessResult = refs.postProcess(jsonSchema, def, refs); + + newItem.jsonSchema = jsonSchema; + + return postProcessResult; + } + + newItem.jsonSchema = jsonSchema; + + return jsonSchema; +} + +const get$ref = ( + item: Seen, + refs: Refs, +): + | { + $ref: string; + } + | {} + | undefined => { + switch (refs.$refStrategy) { + case 'root': + return { $ref: item.path.join('/') }; + case 'relative': + return { $ref: getRelativePath(refs.currentPath, item.path) }; + case 'none': + case 'seen': { + if ( + item.path.length < refs.currentPath.length && + item.path.every((value, index) => refs.currentPath[index] === value) + ) { + console.warn( + `Recursive reference detected at ${refs.currentPath.join( + '/', + )}! Defaulting to any`, + ); + + return parseAnyDef(); + } + + return refs.$refStrategy === 'seen' ? parseAnyDef() : undefined; + } + } +}; + +const addMeta = ( + def: ZodTypeDef, + refs: Refs, + jsonSchema: JsonSchema7Type, +): JsonSchema7Type => { + if (def.description) { + jsonSchema.description = def.description; + } + return jsonSchema; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parse-types.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parse-types.ts new file mode 100644 index 000000000..2da338f12 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parse-types.ts @@ -0,0 +1,57 @@ +import { JsonSchema7AnyType } from './parsers/any'; +import { JsonSchema7ArrayType } from './parsers/array'; +import { JsonSchema7BigintType } from './parsers/bigint'; +import { JsonSchema7BooleanType } from './parsers/boolean'; +import { JsonSchema7DateType } from './parsers/date'; +import { JsonSchema7EnumType } from './parsers/enum'; +import { JsonSchema7AllOfType } from './parsers/intersection'; +import { JsonSchema7LiteralType } from './parsers/literal'; +import { JsonSchema7MapType } from './parsers/map'; +import { JsonSchema7NativeEnumType } from './parsers/native-enum'; +import { JsonSchema7NeverType } from './parsers/never'; +import { JsonSchema7NullType } from './parsers/null'; +import { JsonSchema7NullableType } from './parsers/nullable'; +import { JsonSchema7NumberType } from './parsers/number'; +import { JsonSchema7ObjectType } from './parsers/object'; +import { JsonSchema7RecordType } from './parsers/record'; +import { JsonSchema7SetType } from './parsers/set'; +import { JsonSchema7StringType } from './parsers/string'; +import { JsonSchema7TupleType } from './parsers/tuple'; +import { JsonSchema7UndefinedType } from './parsers/undefined'; +import { JsonSchema7UnionType } from './parsers/union'; +import { JsonSchema7UnknownType } from './parsers/unknown'; + +type JsonSchema7RefType = { $ref: string }; +type JsonSchema7Meta = { + title?: string; + default?: any; + description?: string; +}; + +export type JsonSchema7TypeUnion = + | JsonSchema7StringType + | JsonSchema7ArrayType + | JsonSchema7NumberType + | JsonSchema7BigintType + | JsonSchema7BooleanType + | JsonSchema7DateType + | JsonSchema7EnumType + | JsonSchema7LiteralType + | JsonSchema7NativeEnumType + | JsonSchema7NullType + | JsonSchema7NumberType + | JsonSchema7ObjectType + | JsonSchema7RecordType + | JsonSchema7TupleType + | JsonSchema7UnionType + | JsonSchema7UndefinedType + | JsonSchema7RefType + | JsonSchema7NeverType + | JsonSchema7MapType + | JsonSchema7AnyType + | JsonSchema7NullableType + | JsonSchema7AllOfType + | JsonSchema7UnknownType + | JsonSchema7SetType; + +export type JsonSchema7Type = JsonSchema7TypeUnion & JsonSchema7Meta; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/any.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/any.ts new file mode 100644 index 000000000..5e119edaa --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/any.ts @@ -0,0 +1,5 @@ +export type JsonSchema7AnyType = { $ref?: string }; + +export function parseAnyDef(): JsonSchema7AnyType { + return {}; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/array.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/array.ts new file mode 100644 index 000000000..940b10527 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/array.ts @@ -0,0 +1,38 @@ +import { ZodArrayDef, ZodFirstPartyTypeKind } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { JsonSchema7Type } from '../parse-types'; +import { Refs } from '../refs'; + +export type JsonSchema7ArrayType = { + type: 'array'; + items?: JsonSchema7Type; + minItems?: number; + maxItems?: number; +}; + +export function parseArrayDef(def: ZodArrayDef, refs: Refs) { + const res: JsonSchema7ArrayType = { + type: 'array', + }; + if ( + def.type?._def && + def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny + ) { + res.items = parseDef(def.type._def, { + ...refs, + currentPath: [...refs.currentPath, 'items'], + }); + } + + if (def.minLength) { + res.minItems = def.minLength.value; + } + if (def.maxLength) { + res.maxItems = def.maxLength.value; + } + if (def.exactLength) { + res.minItems = def.exactLength.value; + res.maxItems = def.exactLength.value; + } + return res; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/bigint.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/bigint.ts new file mode 100644 index 000000000..1185a6f81 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/bigint.ts @@ -0,0 +1,44 @@ +import { ZodBigIntDef } from 'zod/v3'; + +export type JsonSchema7BigintType = { + type: 'integer'; + format: 'int64'; + minimum?: BigInt; + exclusiveMinimum?: BigInt; + maximum?: BigInt; + exclusiveMaximum?: BigInt; + multipleOf?: BigInt; +}; + +export function parseBigintDef(def: ZodBigIntDef): JsonSchema7BigintType { + const res: JsonSchema7BigintType = { + type: 'integer', + format: 'int64', + }; + + if (!def.checks) return res; + + for (const check of def.checks) { + switch (check.kind) { + case 'min': + if (check.inclusive) { + res.minimum = check.value; + } else { + res.exclusiveMinimum = check.value; + } + break; + case 'max': + if (check.inclusive) { + res.maximum = check.value; + } else { + res.exclusiveMaximum = check.value; + } + + break; + case 'multipleOf': + res.multipleOf = check.value; + break; + } + } + return res; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/boolean.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/boolean.ts new file mode 100644 index 000000000..b6376346f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/boolean.ts @@ -0,0 +1,7 @@ +export type JsonSchema7BooleanType = { + type: 'boolean'; +}; + +export function parseBooleanDef(): JsonSchema7BooleanType { + return { type: 'boolean' }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/branded.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/branded.ts new file mode 100644 index 000000000..d388a2dbd --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/branded.ts @@ -0,0 +1,7 @@ +import { ZodBrandedDef } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { Refs } from '../refs'; + +export function parseBrandedDef(_def: ZodBrandedDef, refs: Refs) { + return parseDef(_def.type._def, refs); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/catch.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/catch.ts new file mode 100644 index 000000000..b20308ad6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/catch.ts @@ -0,0 +1,7 @@ +import { ZodCatchDef } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { Refs } from '../refs'; + +export const parseCatchDef = (def: ZodCatchDef, refs: Refs) => { + return parseDef(def.innerType._def, refs); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/date.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/date.ts new file mode 100644 index 000000000..a46832879 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/date.ts @@ -0,0 +1,64 @@ +import { ZodDateDef } from 'zod/v3'; +import { Refs } from '../refs'; +import { DateStrategy } from '../options'; + +export type JsonSchema7DateType = + | { + type: 'integer' | 'string'; + format: 'unix-time' | 'date-time' | 'date'; + minimum?: number; + maximum?: number; + } + | { + anyOf: JsonSchema7DateType[]; + }; + +export function parseDateDef( + def: ZodDateDef, + refs: Refs, + overrideDateStrategy?: DateStrategy, +): JsonSchema7DateType { + const strategy = overrideDateStrategy ?? refs.dateStrategy; + + if (Array.isArray(strategy)) { + return { + anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)), + }; + } + + switch (strategy) { + case 'string': + case 'format:date-time': + return { + type: 'string', + format: 'date-time', + }; + case 'format:date': + return { + type: 'string', + format: 'date', + }; + case 'integer': + return integerDateParser(def); + } +} + +const integerDateParser = (def: ZodDateDef) => { + const res: JsonSchema7DateType = { + type: 'integer', + format: 'unix-time', + }; + + for (const check of def.checks) { + switch (check.kind) { + case 'min': + res.minimum = check.value; + break; + case 'max': + res.maximum = check.value; + break; + } + } + + return res; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/default.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/default.ts new file mode 100644 index 000000000..26438e303 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/default.ts @@ -0,0 +1,14 @@ +import { ZodDefaultDef } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { JsonSchema7Type } from '../parse-types'; +import { Refs } from '../refs'; + +export function parseDefaultDef( + _def: ZodDefaultDef, + refs: Refs, +): JsonSchema7Type & { default: any } { + return { + ...parseDef(_def.innerType._def, refs), + default: _def.defaultValue(), + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/effects.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/effects.ts new file mode 100644 index 000000000..6f659c028 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/effects.ts @@ -0,0 +1,14 @@ +import { ZodEffectsDef } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { JsonSchema7Type } from '../parse-types'; +import { Refs } from '../refs'; +import { parseAnyDef } from './any'; + +export function parseEffectsDef( + _def: ZodEffectsDef, + refs: Refs, +): JsonSchema7Type | undefined { + return refs.effectStrategy === 'input' + ? parseDef(_def.schema._def, refs) + : parseAnyDef(); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/enum.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/enum.ts new file mode 100644 index 000000000..9a6e02384 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/enum.ts @@ -0,0 +1,13 @@ +import { ZodEnumDef } from 'zod/v3'; + +export type JsonSchema7EnumType = { + type: 'string'; + enum: string[]; +}; + +export function parseEnumDef(def: ZodEnumDef): JsonSchema7EnumType { + return { + type: 'string', + enum: Array.from(def.values), + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/intersection.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/intersection.ts new file mode 100644 index 000000000..e2916d249 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/intersection.ts @@ -0,0 +1,52 @@ +import { ZodIntersectionDef } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { JsonSchema7Type } from '../parse-types'; +import { Refs } from '../refs'; +import { JsonSchema7StringType } from './string'; + +export type JsonSchema7AllOfType = { + allOf: JsonSchema7Type[]; + unevaluatedProperties?: boolean; +}; + +const isJsonSchema7AllOfType = ( + type: JsonSchema7Type | JsonSchema7StringType, +): type is JsonSchema7AllOfType => { + if ('type' in type && type.type === 'string') return false; + return 'allOf' in type; +}; + +export function parseIntersectionDef( + def: ZodIntersectionDef, + refs: Refs, +): JsonSchema7AllOfType | JsonSchema7Type | undefined { + const allOf = [ + parseDef(def.left._def, { + ...refs, + currentPath: [...refs.currentPath, 'allOf', '0'], + }), + parseDef(def.right._def, { + ...refs, + currentPath: [...refs.currentPath, 'allOf', '1'], + }), + ].filter((x): x is JsonSchema7Type => !!x); + + const mergedAllOf: JsonSchema7Type[] = []; + // If either of the schemas is an allOf, merge them into a single allOf + allOf.forEach(schema => { + if (isJsonSchema7AllOfType(schema)) { + mergedAllOf.push(...schema.allOf); + } else { + let nestedSchema: JsonSchema7Type = schema; + if ( + 'additionalProperties' in schema && + schema.additionalProperties === false + ) { + const { additionalProperties, ...rest } = schema; + nestedSchema = rest; + } + mergedAllOf.push(nestedSchema); + } + }); + return mergedAllOf.length ? { allOf: mergedAllOf } : undefined; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/literal.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/literal.ts new file mode 100644 index 000000000..bb1c38407 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/literal.ts @@ -0,0 +1,29 @@ +import { ZodLiteralDef } from 'zod/v3'; + +export type JsonSchema7LiteralType = + | { + type: 'string' | 'number' | 'integer' | 'boolean'; + const: string | number | boolean; + } + | { + type: 'object' | 'array'; + }; + +export function parseLiteralDef(def: ZodLiteralDef): JsonSchema7LiteralType { + const parsedType = typeof def.value; + if ( + parsedType !== 'bigint' && + parsedType !== 'number' && + parsedType !== 'boolean' && + parsedType !== 'string' + ) { + return { + type: Array.isArray(def.value) ? 'array' : 'object', + }; + } + + return { + type: parsedType === 'bigint' ? 'integer' : parsedType, + const: def.value, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/map.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/map.ts new file mode 100644 index 000000000..b719f61fa --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/map.ts @@ -0,0 +1,47 @@ +import { ZodMapDef } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { JsonSchema7Type } from '../parse-types'; +import { Refs } from '../refs'; +import { parseAnyDef } from './any'; +import { JsonSchema7RecordType, parseRecordDef } from './record'; + +export type JsonSchema7MapType = { + type: 'array'; + maxItems: 125; + items: { + type: 'array'; + items: [JsonSchema7Type, JsonSchema7Type]; + minItems: 2; + maxItems: 2; + }; +}; + +export function parseMapDef( + def: ZodMapDef, + refs: Refs, +): JsonSchema7MapType | JsonSchema7RecordType { + if (refs.mapStrategy === 'record') { + return parseRecordDef(def, refs); + } + + const keys = + parseDef(def.keyType._def, { + ...refs, + currentPath: [...refs.currentPath, 'items', 'items', '0'], + }) || parseAnyDef(); + const values = + parseDef(def.valueType._def, { + ...refs, + currentPath: [...refs.currentPath, 'items', 'items', '1'], + }) || parseAnyDef(); + return { + type: 'array', + maxItems: 125, + items: { + type: 'array', + items: [keys, values], + minItems: 2, + maxItems: 2, + }, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/native-enum.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/native-enum.ts new file mode 100644 index 000000000..cff192520 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/native-enum.ts @@ -0,0 +1,31 @@ +import { ZodNativeEnumDef } from 'zod/v3'; + +export type JsonSchema7NativeEnumType = { + type: 'string' | 'number' | ['string', 'number']; + enum: (string | number)[]; +}; + +export function parseNativeEnumDef( + def: ZodNativeEnumDef, +): JsonSchema7NativeEnumType { + const object = def.values; + const actualKeys = Object.keys(def.values).filter((key: string) => { + return typeof object[object[key]] !== 'number'; + }); + + const actualValues = actualKeys.map((key: string) => object[key]); + + const parsedTypes = Array.from( + new Set(actualValues.map((values: string | number) => typeof values)), + ); + + return { + type: + parsedTypes.length === 1 + ? parsedTypes[0] === 'string' + ? 'string' + : 'number' + : ['string', 'number'], + enum: actualValues, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/never.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/never.ts new file mode 100644 index 000000000..7957830a2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/never.ts @@ -0,0 +1,9 @@ +import { JsonSchema7AnyType, parseAnyDef } from './any'; + +export type JsonSchema7NeverType = { + not: JsonSchema7AnyType; +}; + +export function parseNeverDef(): JsonSchema7NeverType | undefined { + return { not: parseAnyDef() }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/null.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/null.ts new file mode 100644 index 000000000..a1335a397 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/null.ts @@ -0,0 +1,9 @@ +export type JsonSchema7NullType = { + type: 'null'; +}; + +export function parseNullDef(): JsonSchema7NullType { + return { + type: 'null', + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/nullable.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/nullable.ts new file mode 100644 index 000000000..8e064381c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/nullable.ts @@ -0,0 +1,42 @@ +import { ZodNullableDef } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { JsonSchema7Type } from '../parse-types'; +import { Refs } from '../refs'; +import { JsonSchema7NullType } from './null'; +import { primitiveMappings } from './union'; + +export type JsonSchema7NullableType = + | { + anyOf: [JsonSchema7Type, JsonSchema7NullType]; + } + | { + type: [string, 'null']; + }; + +export function parseNullableDef( + def: ZodNullableDef, + refs: Refs, +): JsonSchema7NullableType | undefined { + if ( + ['ZodString', 'ZodNumber', 'ZodBigInt', 'ZodBoolean', 'ZodNull'].includes( + def.innerType._def.typeName, + ) && + (!def.innerType._def.checks || !def.innerType._def.checks.length) + ) { + return { + type: [ + primitiveMappings[ + def.innerType._def.typeName as keyof typeof primitiveMappings + ], + 'null', + ], + }; + } + + const base = parseDef(def.innerType._def, { + ...refs, + currentPath: [...refs.currentPath, 'anyOf', '0'], + }); + + return base && { anyOf: [base, { type: 'null' }] }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/number.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/number.ts new file mode 100644 index 000000000..318ee41eb --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/number.ts @@ -0,0 +1,44 @@ +import { ZodNumberDef } from 'zod/v3'; + +export type JsonSchema7NumberType = { + type: 'number' | 'integer'; + minimum?: number; + exclusiveMinimum?: number; + maximum?: number; + exclusiveMaximum?: number; + multipleOf?: number; +}; + +export function parseNumberDef(def: ZodNumberDef): JsonSchema7NumberType { + const res: JsonSchema7NumberType = { + type: 'number', + }; + + if (!def.checks) return res; + + for (const check of def.checks) { + switch (check.kind) { + case 'int': + res.type = 'integer'; + break; + case 'min': + if (check.inclusive) { + res.minimum = check.value; + } else { + res.exclusiveMinimum = check.value; + } + break; + case 'max': + if (check.inclusive) { + res.maximum = check.value; + } else { + res.exclusiveMaximum = check.value; + } + break; + case 'multipleOf': + res.multipleOf = check.value; + break; + } + } + return res; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/object.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/object.ts new file mode 100644 index 000000000..44ef33abf --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/object.ts @@ -0,0 +1,88 @@ +import { ZodObjectDef, ZodTypeAny } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { JsonSchema7Type } from '../parse-types'; +import { Refs } from '../refs'; + +export type JsonSchema7ObjectType = { + type: 'object'; + properties: Record; + additionalProperties?: boolean | JsonSchema7Type; + required?: string[]; +}; + +export function parseObjectDef(def: ZodObjectDef, refs: Refs) { + const result: JsonSchema7ObjectType = { + type: 'object', + properties: {}, + }; + + const required: string[] = []; + + const shape = def.shape(); + + for (const propName in shape) { + let propDef = shape[propName]; + + if (propDef === undefined || propDef._def === undefined) { + continue; + } + + const propOptional = safeIsOptional(propDef); + + const parsedDef = parseDef(propDef._def, { + ...refs, + currentPath: [...refs.currentPath, 'properties', propName], + propertyPath: [...refs.currentPath, 'properties', propName], + }); + + if (parsedDef === undefined) { + continue; + } + + result.properties[propName] = parsedDef; + + if (!propOptional) { + required.push(propName); + } + } + + if (required.length) { + result.required = required; + } + + const additionalProperties = decideAdditionalProperties(def, refs); + + if (additionalProperties !== undefined) { + result.additionalProperties = additionalProperties; + } + + return result; +} + +function decideAdditionalProperties(def: ZodObjectDef, refs: Refs) { + if (def.catchall._def.typeName !== 'ZodNever') { + return parseDef(def.catchall._def, { + ...refs, + currentPath: [...refs.currentPath, 'additionalProperties'], + }); + } + + switch (def.unknownKeys) { + case 'passthrough': + return refs.allowedAdditionalProperties; + case 'strict': + return refs.rejectedAdditionalProperties; + case 'strip': + return refs.removeAdditionalStrategy === 'strict' + ? refs.allowedAdditionalProperties + : refs.rejectedAdditionalProperties; + } +} + +function safeIsOptional(schema: ZodTypeAny): boolean { + try { + return schema.isOptional(); + } catch { + return true; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/optional.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/optional.ts new file mode 100644 index 000000000..0ff940676 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/optional.ts @@ -0,0 +1,23 @@ +import { ZodOptionalDef } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { JsonSchema7Type } from '../parse-types'; +import { Refs } from '../refs'; +import { parseAnyDef } from './any'; + +export const parseOptionalDef = ( + def: ZodOptionalDef, + refs: Refs, +): JsonSchema7Type | undefined => { + if (refs.currentPath.toString() === refs.propertyPath?.toString()) { + return parseDef(def.innerType._def, refs); + } + + const innerSchema = parseDef(def.innerType._def, { + ...refs, + currentPath: [...refs.currentPath, 'anyOf', '1'], + }); + + return innerSchema + ? { anyOf: [{ not: parseAnyDef() }, innerSchema] } + : parseAnyDef(); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/pipeline.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/pipeline.ts new file mode 100644 index 000000000..73bb89641 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/pipeline.ts @@ -0,0 +1,29 @@ +import { ZodPipelineDef } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { JsonSchema7Type } from '../parse-types'; +import { Refs } from '../refs'; +import { JsonSchema7AllOfType } from './intersection'; + +export const parsePipelineDef = ( + def: ZodPipelineDef, + refs: Refs, +): JsonSchema7AllOfType | JsonSchema7Type | undefined => { + if (refs.pipeStrategy === 'input') { + return parseDef(def.in._def, refs); + } else if (refs.pipeStrategy === 'output') { + return parseDef(def.out._def, refs); + } + + const a = parseDef(def.in._def, { + ...refs, + currentPath: [...refs.currentPath, 'allOf', '0'], + }); + const b = parseDef(def.out._def, { + ...refs, + currentPath: [...refs.currentPath, 'allOf', a ? '1' : '0'], + }); + + return { + allOf: [a, b].filter((x): x is JsonSchema7Type => x !== undefined), + }; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/promise.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/promise.ts new file mode 100644 index 000000000..35d43d8a9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/promise.ts @@ -0,0 +1,11 @@ +import { ZodPromiseDef } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { JsonSchema7Type } from '../parse-types'; +import { Refs } from '../refs'; + +export function parsePromiseDef( + def: ZodPromiseDef, + refs: Refs, +): JsonSchema7Type | undefined { + return parseDef(def.type._def, refs); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/readonly.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/readonly.ts new file mode 100644 index 000000000..048b6fcd2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/readonly.ts @@ -0,0 +1,7 @@ +import { ZodReadonlyDef } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { Refs } from '../refs'; + +export const parseReadonlyDef = (def: ZodReadonlyDef, refs: Refs) => { + return parseDef(def.innerType._def, refs); +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/record.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/record.ts new file mode 100644 index 000000000..03c76c034 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/record.ts @@ -0,0 +1,71 @@ +import { + ZodFirstPartyTypeKind, + ZodMapDef, + ZodRecordDef, + ZodTypeAny, +} from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { JsonSchema7Type } from '../parse-types'; +import { Refs } from '../refs'; +import { parseBrandedDef } from './branded'; +import { JsonSchema7EnumType } from './enum'; +import { JsonSchema7StringType, parseStringDef } from './string'; + +type JsonSchema7RecordPropertyNamesType = + | Omit + | Omit; + +export type JsonSchema7RecordType = { + type: 'object'; + additionalProperties?: JsonSchema7Type | true; + propertyNames?: JsonSchema7RecordPropertyNamesType; +}; + +export function parseRecordDef( + def: ZodRecordDef | ZodMapDef, + refs: Refs, +): JsonSchema7RecordType { + const schema: JsonSchema7RecordType = { + type: 'object', + additionalProperties: + parseDef(def.valueType._def, { + ...refs, + currentPath: [...refs.currentPath, 'additionalProperties'], + }) ?? refs.allowedAdditionalProperties, + }; + + if ( + def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString && + def.keyType._def.checks?.length + ) { + const { type, ...keyType } = parseStringDef(def.keyType._def, refs); + + return { + ...schema, + propertyNames: keyType, + }; + } else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) { + return { + ...schema, + propertyNames: { + enum: def.keyType._def.values, + }, + }; + } else if ( + def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded && + def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString && + def.keyType._def.type._def.checks?.length + ) { + const { type, ...keyType } = parseBrandedDef( + def.keyType._def, + refs, + ) as JsonSchema7StringType; + + return { + ...schema, + propertyNames: keyType, + }; + } + + return schema; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/set.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/set.ts new file mode 100644 index 000000000..a81f4b438 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/set.ts @@ -0,0 +1,35 @@ +import { ZodSetDef } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { JsonSchema7Type } from '../parse-types'; +import { Refs } from '../refs'; + +export type JsonSchema7SetType = { + type: 'array'; + uniqueItems: true; + items?: JsonSchema7Type; + minItems?: number; + maxItems?: number; +}; + +export function parseSetDef(def: ZodSetDef, refs: Refs): JsonSchema7SetType { + const items = parseDef(def.valueType._def, { + ...refs, + currentPath: [...refs.currentPath, 'items'], + }); + + const schema: JsonSchema7SetType = { + type: 'array', + uniqueItems: true, + items, + }; + + if (def.minSize) { + schema.minItems = def.minSize.value; + } + + if (def.maxSize) { + schema.maxItems = def.maxSize.value; + } + + return schema; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/string.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/string.ts new file mode 100644 index 000000000..9cc298da8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/string.ts @@ -0,0 +1,426 @@ +import { ZodStringDef } from 'zod/v3'; +import { Refs } from '../refs'; + +let emojiRegex: RegExp | undefined = undefined; + +/** + * Generated from the regular expressions found here as of 2024-05-22: + * https://github.com/colinhacks/zod/blob/master/src/types.ts. + * + * Expressions with /i flag have been changed accordingly. + */ +export const zodPatterns = { + /** + * `c` was changed to `[cC]` to replicate /i flag + */ + cuid: /^[cC][^\s-]{8,}$/, + cuid2: /^[0-9a-z]+$/, + ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/, + /** + * `a-z` was added to replicate /i flag + */ + email: + /^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/, + /** + * Constructed a valid Unicode RegExp + * + * Lazily instantiate since this type of regex isn't supported + * in all envs (e.g. React Native). + * + * See: + * https://github.com/colinhacks/zod/issues/2433 + * Fix in Zod: + * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b + */ + emoji: () => { + if (emojiRegex === undefined) { + emojiRegex = RegExp( + '^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$', + 'u', + ); + } + return emojiRegex; + }, + /** + * Unused + */ + uuid: /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/, + /** + * Unused + */ + ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/, + ipv4Cidr: + /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/, + /** + * Unused + */ + ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/, + ipv6Cidr: + /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/, + base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/, + base64url: + /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/, + nanoid: /^[a-zA-Z0-9_-]{21}$/, + jwt: /^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/, +} as const; + +export type JsonSchema7StringType = { + type: 'string'; + minLength?: number; + maxLength?: number; + format?: + | 'email' + | 'idn-email' + | 'uri' + | 'uuid' + | 'date-time' + | 'ipv4' + | 'ipv6' + | 'date' + | 'time' + | 'duration'; + pattern?: string; + allOf?: { + pattern: string; + }[]; + anyOf?: { + format: string; + }[]; + contentEncoding?: string; +}; + +export function parseStringDef( + def: ZodStringDef, + refs: Refs, +): JsonSchema7StringType { + const res: JsonSchema7StringType = { + type: 'string', + }; + + if (def.checks) { + for (const check of def.checks) { + switch (check.kind) { + case 'min': + res.minLength = + typeof res.minLength === 'number' + ? Math.max(res.minLength, check.value) + : check.value; + break; + case 'max': + res.maxLength = + typeof res.maxLength === 'number' + ? Math.min(res.maxLength, check.value) + : check.value; + + break; + case 'email': + switch (refs.emailStrategy) { + case 'format:email': + addFormat(res, 'email', check.message, refs); + break; + case 'format:idn-email': + addFormat(res, 'idn-email', check.message, refs); + break; + case 'pattern:zod': + addPattern(res, zodPatterns.email, check.message, refs); + break; + } + + break; + case 'url': + addFormat(res, 'uri', check.message, refs); + break; + case 'uuid': + addFormat(res, 'uuid', check.message, refs); + break; + case 'regex': + addPattern(res, check.regex, check.message, refs); + break; + case 'cuid': + addPattern(res, zodPatterns.cuid, check.message, refs); + break; + case 'cuid2': + addPattern(res, zodPatterns.cuid2, check.message, refs); + break; + case 'startsWith': + addPattern( + res, + RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), + check.message, + refs, + ); + break; + case 'endsWith': + addPattern( + res, + RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), + check.message, + refs, + ); + break; + case 'datetime': + addFormat(res, 'date-time', check.message, refs); + break; + case 'date': + addFormat(res, 'date', check.message, refs); + break; + case 'time': + addFormat(res, 'time', check.message, refs); + break; + case 'duration': + addFormat(res, 'duration', check.message, refs); + break; + case 'length': + res.minLength = + typeof res.minLength === 'number' + ? Math.max(res.minLength, check.value) + : check.value; + res.maxLength = + typeof res.maxLength === 'number' + ? Math.min(res.maxLength, check.value) + : check.value; + break; + case 'includes': { + addPattern( + res, + RegExp(escapeLiteralCheckValue(check.value, refs)), + check.message, + refs, + ); + break; + } + case 'ip': { + if (check.version !== 'v6') { + addFormat(res, 'ipv4', check.message, refs); + } + if (check.version !== 'v4') { + addFormat(res, 'ipv6', check.message, refs); + } + break; + } + case 'base64url': + addPattern(res, zodPatterns.base64url, check.message, refs); + break; + case 'jwt': + addPattern(res, zodPatterns.jwt, check.message, refs); + break; + case 'cidr': { + if (check.version !== 'v6') { + addPattern(res, zodPatterns.ipv4Cidr, check.message, refs); + } + if (check.version !== 'v4') { + addPattern(res, zodPatterns.ipv6Cidr, check.message, refs); + } + break; + } + case 'emoji': + addPattern(res, zodPatterns.emoji(), check.message, refs); + break; + case 'ulid': { + addPattern(res, zodPatterns.ulid, check.message, refs); + break; + } + case 'base64': { + switch (refs.base64Strategy) { + case 'format:binary': { + addFormat(res, 'binary' as any, check.message, refs); + break; + } + + case 'contentEncoding:base64': { + res.contentEncoding = 'base64'; + break; + } + + case 'pattern:zod': { + addPattern(res, zodPatterns.base64, check.message, refs); + break; + } + } + break; + } + case 'nanoid': { + addPattern(res, zodPatterns.nanoid, check.message, refs); + } + case 'toLowerCase': + case 'toUpperCase': + case 'trim': + break; + default: + /* c8 ignore next */ + ((_: never) => {})(check); + } + } + } + + return res; +} + +function escapeLiteralCheckValue(literal: string, refs: Refs): string { + return refs.patternStrategy === 'escape' + ? escapeNonAlphaNumeric(literal) + : literal; +} + +const ALPHA_NUMERIC = new Set( + 'ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789', +); + +function escapeNonAlphaNumeric(source: string) { + let result = ''; + + for (let i = 0; i < source.length; i++) { + if (!ALPHA_NUMERIC.has(source[i])) { + result += '\\'; + } + + result += source[i]; + } + + return result; +} + +// Adds a "format" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones. +function addFormat( + schema: JsonSchema7StringType, + value: Required['format'], + message: string | undefined, + refs: Refs, +) { + if (schema.format || schema.anyOf?.some(x => x.format)) { + if (!schema.anyOf) { + schema.anyOf = []; + } + + if (schema.format) { + schema.anyOf!.push({ + format: schema.format, + }); + delete schema.format; + } + + schema.anyOf!.push({ + format: value, + ...(message && + refs.errorMessages && { errorMessage: { format: message } }), + }); + } else { + schema.format = value; + } +} + +// Adds a "pattern" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones. +function addPattern( + schema: JsonSchema7StringType, + regex: RegExp, + message: string | undefined, + refs: Refs, +) { + if (schema.pattern || schema.allOf?.some(x => x.pattern)) { + if (!schema.allOf) { + schema.allOf = []; + } + + if (schema.pattern) { + schema.allOf!.push({ + pattern: schema.pattern, + }); + delete schema.pattern; + } + + schema.allOf!.push({ + pattern: stringifyRegExpWithFlags(regex, refs), + ...(message && + refs.errorMessages && { errorMessage: { pattern: message } }), + }); + } else { + schema.pattern = stringifyRegExpWithFlags(regex, refs); + } +} + +// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true +function stringifyRegExpWithFlags(regex: RegExp, refs: Refs): string { + if (!refs.applyRegexFlags || !regex.flags) { + return regex.source; + } + + // Currently handled flags + const flags = { + i: regex.flags.includes('i'), // Case-insensitive + m: regex.flags.includes('m'), // `^` and `$` matches adjacent to newline characters + s: regex.flags.includes('s'), // `.` matches newlines + }; + + // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril! + const source = flags.i ? regex.source.toLowerCase() : regex.source; + let pattern = ''; + let isEscaped = false; + let inCharGroup = false; + let inCharRange = false; + + for (let i = 0; i < source.length; i++) { + if (isEscaped) { + pattern += source[i]; + isEscaped = false; + continue; + } + + if (flags.i) { + if (inCharGroup) { + if (source[i].match(/[a-z]/)) { + if (inCharRange) { + pattern += source[i]; + pattern += `${source[i - 2]}-${source[i]}`.toUpperCase(); + inCharRange = false; + } else if (source[i + 1] === '-' && source[i + 2]?.match(/[a-z]/)) { + pattern += source[i]; + inCharRange = true; + } else { + pattern += `${source[i]}${source[i].toUpperCase()}`; + } + continue; + } + } else if (source[i].match(/[a-z]/)) { + pattern += `[${source[i]}${source[i].toUpperCase()}]`; + continue; + } + } + + if (flags.m) { + if (source[i] === '^') { + pattern += `(^|(?<=[\r\n]))`; + continue; + } else if (source[i] === '$') { + pattern += `($|(?=[\r\n]))`; + continue; + } + } + + if (flags.s && source[i] === '.') { + pattern += inCharGroup ? `${source[i]}\r\n` : `[${source[i]}\r\n]`; + continue; + } + + pattern += source[i]; + if (source[i] === '\\') { + isEscaped = true; + } else if (inCharGroup && source[i] === ']') { + inCharGroup = false; + } else if (!inCharGroup && source[i] === '[') { + inCharGroup = true; + } + } + + try { + new RegExp(pattern); + } catch { + console.warn( + `Could not convert regex pattern at ${refs.currentPath.join( + '/', + )} to a flag-independent form! Falling back to the flag-ignorant source`, + ); + return regex.source; + } + + return pattern; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/tuple.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/tuple.ts new file mode 100644 index 000000000..9a05c946c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/tuple.ts @@ -0,0 +1,61 @@ +import { ZodTupleDef, ZodTupleItems, ZodTypeAny } from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { JsonSchema7Type } from '../parse-types'; +import { Refs } from '../refs'; + +export type JsonSchema7TupleType = { + type: 'array'; + minItems: number; + items: JsonSchema7Type[]; +} & ( + | { + maxItems: number; + } + | { + additionalItems?: JsonSchema7Type; + } +); + +export function parseTupleDef( + def: ZodTupleDef, + refs: Refs, +): JsonSchema7TupleType { + if (def.rest) { + return { + type: 'array', + minItems: def.items.length, + items: def.items + .map((x, i) => + parseDef(x._def, { + ...refs, + currentPath: [...refs.currentPath, 'items', `${i}`], + }), + ) + .reduce( + (acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]), + [], + ), + additionalItems: parseDef(def.rest._def, { + ...refs, + currentPath: [...refs.currentPath, 'additionalItems'], + }), + }; + } else { + return { + type: 'array', + minItems: def.items.length, + maxItems: def.items.length, + items: def.items + .map((x, i) => + parseDef(x._def, { + ...refs, + currentPath: [...refs.currentPath, 'items', `${i}`], + }), + ) + .reduce( + (acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]), + [], + ), + }; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/undefined.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/undefined.ts new file mode 100644 index 000000000..0d18409fa --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/undefined.ts @@ -0,0 +1,11 @@ +import { JsonSchema7AnyType, parseAnyDef } from './any'; + +export type JsonSchema7UndefinedType = { + not: JsonSchema7AnyType; +}; + +export function parseUndefinedDef(): JsonSchema7UndefinedType { + return { + not: parseAnyDef(), + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/union.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/union.ts new file mode 100644 index 000000000..35730ea1a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/union.ts @@ -0,0 +1,144 @@ +import { + ZodDiscriminatedUnionDef, + ZodLiteralDef, + ZodTypeAny, + ZodUnionDef, +} from 'zod/v3'; +import { parseDef } from '../parse-def'; +import { JsonSchema7Type } from '../parse-types'; +import { Refs } from '../refs'; + +export const primitiveMappings = { + ZodString: 'string', + ZodNumber: 'number', + ZodBigInt: 'integer', + ZodBoolean: 'boolean', + ZodNull: 'null', +} as const; +type ZodPrimitive = keyof typeof primitiveMappings; +type JsonSchema7Primitive = + (typeof primitiveMappings)[keyof typeof primitiveMappings]; + +export type JsonSchema7UnionType = + | JsonSchema7PrimitiveUnionType + | JsonSchema7AnyOfType; + +type JsonSchema7PrimitiveUnionType = + | { + type: JsonSchema7Primitive | JsonSchema7Primitive[]; + } + | { + type: JsonSchema7Primitive | JsonSchema7Primitive[]; + enum: (string | number | bigint | boolean | null)[]; + }; + +type JsonSchema7AnyOfType = { + anyOf: JsonSchema7Type[]; +}; + +export function parseUnionDef( + def: ZodUnionDef | ZodDiscriminatedUnionDef, + refs: Refs, +): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | undefined { + const options: readonly ZodTypeAny[] = + def.options instanceof Map ? Array.from(def.options.values()) : def.options; + + // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf. + if ( + options.every( + x => + x._def.typeName in primitiveMappings && + (!x._def.checks || !x._def.checks.length), + ) + ) { + // all types in union are primitive and lack checks, so might as well squash into {type: [...]} + + const types = options.reduce((types: JsonSchema7Primitive[], x) => { + const type = primitiveMappings[x._def.typeName as ZodPrimitive]; //Can be safely casted due to row 43 + return type && !types.includes(type) ? [...types, type] : types; + }, []); + + return { + type: types.length > 1 ? types : types[0], + }; + } else if ( + options.every(x => x._def.typeName === 'ZodLiteral' && !x.description) + ) { + // all options literals + + const types = options.reduce( + (acc: JsonSchema7Primitive[], x: { _def: ZodLiteralDef }) => { + const type = typeof x._def.value; + switch (type) { + case 'string': + case 'number': + case 'boolean': + return [...acc, type]; + case 'bigint': + return [...acc, 'integer' as const]; + case 'object': + if (x._def.value === null) return [...acc, 'null' as const]; + case 'symbol': + case 'undefined': + case 'function': + default: + return acc; + } + }, + [], + ); + + if (types.length === options.length) { + // all the literals are primitive, as far as null can be considered primitive + + const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i); + return { + type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0], + enum: options.reduce( + (acc, x) => { + return acc.includes(x._def.value) ? acc : [...acc, x._def.value]; + }, + [] as (string | number | bigint | boolean | null)[], + ), + }; + } + } else if (options.every(x => x._def.typeName === 'ZodEnum')) { + return { + type: 'string', + enum: options.reduce( + (acc: string[], x) => [ + ...acc, + ...x._def.values.filter((x: string) => !acc.includes(x)), + ], + [], + ), + }; + } + + return asAnyOf(def, refs); +} + +const asAnyOf = ( + def: ZodUnionDef | ZodDiscriminatedUnionDef, + refs: Refs, +): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | undefined => { + const anyOf = ( + (def.options instanceof Map + ? Array.from(def.options.values()) + : def.options) as any[] + ) + .map((x, i) => + parseDef(x._def, { + ...refs, + currentPath: [...refs.currentPath, 'anyOf', `${i}`], + }), + ) + .filter( + (x): x is JsonSchema7Type => + !!x && + (!refs.strictUnions || + (typeof x === 'object' && Object.keys(x).length > 0)), + ); + + return anyOf.length ? { anyOf } : undefined; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/unknown.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/unknown.ts new file mode 100644 index 000000000..946a367a4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/unknown.ts @@ -0,0 +1,7 @@ +import { JsonSchema7AnyType, parseAnyDef } from './any'; + +export type JsonSchema7UnknownType = JsonSchema7AnyType; + +export function parseUnknownDef(): JsonSchema7UnknownType { + return parseAnyDef(); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/refs.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/refs.ts new file mode 100644 index 000000000..b951d0581 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/refs.ts @@ -0,0 +1,39 @@ +import { ZodTypeDef } from 'zod/v3'; +import { getDefaultOptions, Options } from './options'; +import { JsonSchema7Type } from './parse-types'; + +export type Refs = { + seen: Map; + currentPath: string[]; + propertyPath: string[] | undefined; +} & Options; + +export type Seen = { + def: ZodTypeDef; + path: string[]; + jsonSchema: JsonSchema7Type | undefined; +}; + +export const getRefs = (options?: string | Partial): Refs => { + const _options = getDefaultOptions(options); + const currentPath = + _options.name !== undefined + ? [..._options.basePath, _options.definitionPath, _options.name] + : _options.basePath; + return { + ..._options, + currentPath: currentPath, + propertyPath: undefined, + seen: new Map( + Object.entries(_options.definitions).map(([name, def]) => [ + def._def, + { + def: def._def, + path: [..._options.basePath, _options.definitionPath, name], + // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now. + jsonSchema: undefined, + }, + ]), + ), + }; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/select-parser.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/select-parser.ts new file mode 100644 index 000000000..b0ee33787 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/select-parser.ts @@ -0,0 +1,115 @@ +import { ZodFirstPartyTypeKind } from 'zod/v3'; +import { parseAnyDef } from './parsers/any'; +import { parseArrayDef } from './parsers/array'; +import { parseBigintDef } from './parsers/bigint'; +import { parseBooleanDef } from './parsers/boolean'; +import { parseBrandedDef } from './parsers/branded'; +import { parseCatchDef } from './parsers/catch'; +import { parseDateDef } from './parsers/date'; +import { parseDefaultDef } from './parsers/default'; +import { parseEffectsDef } from './parsers/effects'; +import { parseEnumDef } from './parsers/enum'; +import { parseIntersectionDef } from './parsers/intersection'; +import { parseLiteralDef } from './parsers/literal'; +import { parseMapDef } from './parsers/map'; +import { parseNativeEnumDef } from './parsers/native-enum'; +import { parseNeverDef } from './parsers/never'; +import { parseNullDef } from './parsers/null'; +import { parseNullableDef } from './parsers/nullable'; +import { parseNumberDef } from './parsers/number'; +import { parseObjectDef } from './parsers/object'; +import { parseOptionalDef } from './parsers/optional'; +import { parsePipelineDef } from './parsers/pipeline'; +import { parsePromiseDef } from './parsers/promise'; +import { parseRecordDef } from './parsers/record'; +import { parseSetDef } from './parsers/set'; +import { parseStringDef } from './parsers/string'; +import { parseTupleDef } from './parsers/tuple'; +import { parseUndefinedDef } from './parsers/undefined'; +import { parseUnionDef } from './parsers/union'; +import { parseUnknownDef } from './parsers/unknown'; +import { Refs } from './refs'; +import { parseReadonlyDef } from './parsers/readonly'; +import { JsonSchema7Type } from './parse-types'; + +export type InnerDefGetter = () => any; + +export const selectParser = ( + def: any, + typeName: ZodFirstPartyTypeKind, + refs: Refs, +): JsonSchema7Type | undefined | InnerDefGetter => { + switch (typeName) { + case ZodFirstPartyTypeKind.ZodString: + return parseStringDef(def, refs); + case ZodFirstPartyTypeKind.ZodNumber: + return parseNumberDef(def); + case ZodFirstPartyTypeKind.ZodObject: + return parseObjectDef(def, refs); + case ZodFirstPartyTypeKind.ZodBigInt: + return parseBigintDef(def); + case ZodFirstPartyTypeKind.ZodBoolean: + return parseBooleanDef(); + case ZodFirstPartyTypeKind.ZodDate: + return parseDateDef(def, refs); + case ZodFirstPartyTypeKind.ZodUndefined: + return parseUndefinedDef(); + case ZodFirstPartyTypeKind.ZodNull: + return parseNullDef(); + case ZodFirstPartyTypeKind.ZodArray: + return parseArrayDef(def, refs); + case ZodFirstPartyTypeKind.ZodUnion: + case ZodFirstPartyTypeKind.ZodDiscriminatedUnion: + return parseUnionDef(def, refs); + case ZodFirstPartyTypeKind.ZodIntersection: + return parseIntersectionDef(def, refs); + case ZodFirstPartyTypeKind.ZodTuple: + return parseTupleDef(def, refs); + case ZodFirstPartyTypeKind.ZodRecord: + return parseRecordDef(def, refs); + case ZodFirstPartyTypeKind.ZodLiteral: + return parseLiteralDef(def); + case ZodFirstPartyTypeKind.ZodEnum: + return parseEnumDef(def); + case ZodFirstPartyTypeKind.ZodNativeEnum: + return parseNativeEnumDef(def); + case ZodFirstPartyTypeKind.ZodNullable: + return parseNullableDef(def, refs); + case ZodFirstPartyTypeKind.ZodOptional: + return parseOptionalDef(def, refs); + case ZodFirstPartyTypeKind.ZodMap: + return parseMapDef(def, refs); + case ZodFirstPartyTypeKind.ZodSet: + return parseSetDef(def, refs); + case ZodFirstPartyTypeKind.ZodLazy: + return () => (def as any).getter()._def; + case ZodFirstPartyTypeKind.ZodPromise: + return parsePromiseDef(def, refs); + case ZodFirstPartyTypeKind.ZodNaN: + case ZodFirstPartyTypeKind.ZodNever: + return parseNeverDef(); + case ZodFirstPartyTypeKind.ZodEffects: + return parseEffectsDef(def, refs); + case ZodFirstPartyTypeKind.ZodAny: + return parseAnyDef(); + case ZodFirstPartyTypeKind.ZodUnknown: + return parseUnknownDef(); + case ZodFirstPartyTypeKind.ZodDefault: + return parseDefaultDef(def, refs); + case ZodFirstPartyTypeKind.ZodBranded: + return parseBrandedDef(def, refs); + case ZodFirstPartyTypeKind.ZodReadonly: + return parseReadonlyDef(def, refs); + case ZodFirstPartyTypeKind.ZodCatch: + return parseCatchDef(def, refs); + case ZodFirstPartyTypeKind.ZodPipeline: + return parsePipelineDef(def, refs); + case ZodFirstPartyTypeKind.ZodFunction: + case ZodFirstPartyTypeKind.ZodVoid: + case ZodFirstPartyTypeKind.ZodSymbol: + return undefined; + default: + /* c8 ignore next */ + return ((_: never) => undefined)(typeName); + } +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/zod3-to-json-schema.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/zod3-to-json-schema.ts new file mode 100644 index 000000000..8eb2c3069 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/zod3-to-json-schema.ts @@ -0,0 +1,93 @@ +import { ZodSchema } from 'zod/v3'; +import { Options } from './options'; +import { parseDef } from './parse-def'; +import { JsonSchema7Type } from './parse-types'; +import { getRefs } from './refs'; +import { parseAnyDef } from './parsers/any'; + +const zod3ToJsonSchema = ( + schema: ZodSchema, + options?: Partial | string, +): JsonSchema7Type & { + $schema?: string; + definitions?: { + [key: string]: JsonSchema7Type; + }; +} => { + const refs = getRefs(options); + + let definitions = + typeof options === 'object' && options.definitions + ? Object.entries(options.definitions).reduce( + (acc: { [key: string]: JsonSchema7Type }, [name, schema]) => ({ + ...acc, + [name]: + parseDef( + schema._def, + { + ...refs, + currentPath: [...refs.basePath, refs.definitionPath, name], + }, + true, + ) ?? parseAnyDef(), + }), + {}, + ) + : undefined; + + const name = + typeof options === 'string' + ? options + : options?.nameStrategy === 'title' + ? undefined + : options?.name; + + const main = + parseDef( + schema._def, + name === undefined + ? refs + : { + ...refs, + currentPath: [...refs.basePath, refs.definitionPath, name], + }, + false, + ) ?? (parseAnyDef() as JsonSchema7Type); + + const title = + typeof options === 'object' && + options.name !== undefined && + options.nameStrategy === 'title' + ? options.name + : undefined; + + if (title !== undefined) { + main.title = title; + } + + const combined: ReturnType = + name === undefined + ? definitions + ? { + ...main, + [refs.definitionPath]: definitions, + } + : main + : { + $ref: [ + ...(refs.$refStrategy === 'relative' ? [] : refs.basePath), + refs.definitionPath, + name, + ].join('/'), + [refs.definitionPath]: { + ...definitions, + [name]: main, + }, + }; + + combined.$schema = 'http://json-schema.org/draft-07/schema#'; + + return combined; +}; + +export { zod3ToJsonSchema }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/assistant-model-message.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/assistant-model-message.ts new file mode 100644 index 000000000..9f0a02cac --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/assistant-model-message.ts @@ -0,0 +1,39 @@ +import { + FilePart, + ReasoningPart, + TextPart, + ToolCallPart, + ToolResultPart, +} from './content-part'; +import { ProviderOptions } from './provider-options'; +import { ToolApprovalRequest } from './tool-approval-request'; + +/** + * An assistant message. It can contain text, tool calls, or a combination of text and tool calls. + */ +export type AssistantModelMessage = { + role: 'assistant'; + content: AssistantContent; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; +}; + +/** + * Content of an assistant message. + * It can be a string or an array of text, image, reasoning, redacted reasoning, and tool call parts. + */ +export type AssistantContent = + | string + | Array< + | TextPart + | FilePart + | ReasoningPart + | ToolCallPart + | ToolResultPart + | ToolApprovalRequest + >; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/content-part.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/content-part.ts new file mode 100644 index 000000000..92fb6e239 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/content-part.ts @@ -0,0 +1,379 @@ +import { JSONValue } from '@ai-sdk/provider'; +import { DataContent } from './data-content'; +import { ProviderOptions } from './provider-options'; + +/** + * Text content part of a prompt. It contains a string of text. + */ +export interface TextPart { + type: 'text'; + + /** + * The text content. + */ + text: string; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; +} + +/** + * Image content part of a prompt. It contains an image. + */ +export interface ImagePart { + type: 'image'; + + /** + * Image data. Can either be: + * + * - data: a base64-encoded string, a Uint8Array, an ArrayBuffer, or a Buffer + * - URL: a URL that points to the image + */ + image: DataContent | URL; + + /** + * Optional IANA media type of the image. + * + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType?: string; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; +} + +/** + * File content part of a prompt. It contains a file. + */ +export interface FilePart { + type: 'file'; + + /** + * File data. Can either be: + * + * - data: a base64-encoded string, a Uint8Array, an ArrayBuffer, or a Buffer + * - URL: a URL that points to the image + */ + data: DataContent | URL; + + /** + * Optional filename of the file. + */ + filename?: string; + + /** + * IANA media type of the file. + * + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType: string; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; +} + +/** + * Reasoning content part of a prompt. It contains a reasoning. + */ +export interface ReasoningPart { + type: 'reasoning'; + + /** + * The reasoning text. + */ + text: string; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; +} + +/** + * Tool call content part of a prompt. It contains a tool call (usually generated by the AI model). + */ +export interface ToolCallPart { + type: 'tool-call'; + + /** + * ID of the tool call. This ID is used to match the tool call with the tool result. + */ + toolCallId: string; + + /** + * Name of the tool that is being called. + */ + toolName: string; + + /** + * Arguments of the tool call. This is a JSON-serializable object that matches the tool's input schema. + */ + input: unknown; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; + + /** + * Whether the tool call was executed by the provider. + */ + providerExecuted?: boolean; +} + +/** + * Tool result content part of a prompt. It contains the result of the tool call with the matching ID. + */ +export interface ToolResultPart { + type: 'tool-result'; + + /** + * ID of the tool call that this result is associated with. + */ + toolCallId: string; + + /** + * Name of the tool that generated this result. + */ + toolName: string; + + /** + * Result of the tool call. This is a JSON-serializable object. + */ + output: ToolResultOutput; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; +} + +/** + * Output of a tool result. + */ +export type ToolResultOutput = + | { + /** + * Text tool output that should be directly sent to the API. + */ + type: 'text'; + value: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + type: 'json'; + value: JSONValue; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + /** + * Type when the user has denied the execution of the tool call. + */ + type: 'execution-denied'; + + /** + * Optional reason for the execution denial. + */ + reason?: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + type: 'error-text'; + value: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + type: 'error-json'; + value: JSONValue; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + type: 'content'; + value: Array< + | { + type: 'text'; + + /** + * Text content. + */ + text: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + /** + * @deprecated Use image-data or file-data instead. + */ + type: 'media'; + data: string; + mediaType: string; + } + | { + type: 'file-data'; + + /** + * Base-64 encoded media data. + */ + data: string; + + /** + * IANA media type. + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType: string; + + /** + * Optional filename of the file. + */ + filename?: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + type: 'file-url'; + + /** + * URL of the file. + */ + url: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + type: 'file-id'; + + /** + * ID of the file. + * + * If you use multiple providers, you need to + * specify the provider specific ids using + * the Record option. The key is the provider + * name, e.g. 'openai' or 'anthropic'. + */ + fileId: string | Record; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + /** + * Images that are referenced using base64 encoded data. + */ + type: 'image-data'; + + /** + * Base-64 encoded image data. + */ + data: string; + + /** + * IANA media type. + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + /** + * Images that are referenced using a URL. + */ + type: 'image-url'; + + /** + * URL of the image. + */ + url: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + /** + * Images that are referenced using a provider file id. + */ + type: 'image-file-id'; + + /** + * Image that is referenced using a provider file id. + * + * If you use multiple providers, you need to + * specify the provider specific ids using + * the Record option. The key is the provider + * name, e.g. 'openai' or 'anthropic'. + */ + fileId: string | Record; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + /** + * Custom content part. This can be used to implement + * provider-specific content parts. + */ + type: 'custom'; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + >; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/data-content.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/data-content.ts new file mode 100644 index 000000000..f36d785e5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/data-content.ts @@ -0,0 +1,4 @@ +/** + * Data content. Can either be a base64-encoded string, a Uint8Array, an ArrayBuffer, or a Buffer. + */ +export type DataContent = string | Uint8Array | ArrayBuffer | Buffer; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/execute-tool.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/execute-tool.ts new file mode 100644 index 000000000..7780d582f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/execute-tool.ts @@ -0,0 +1,27 @@ +import { isAsyncIterable } from '../is-async-iterable'; +import { ToolExecutionOptions, ToolExecuteFunction } from './tool'; + +export async function* executeTool({ + execute, + input, + options, +}: { + execute: ToolExecuteFunction; + input: INPUT; + options: ToolExecutionOptions; +}): AsyncGenerator< + { type: 'preliminary'; output: OUTPUT } | { type: 'final'; output: OUTPUT } +> { + const result = execute(input, options); + + if (isAsyncIterable(result)) { + let lastOutput: OUTPUT | undefined; + for await (const output of result) { + lastOutput = output; + yield { type: 'preliminary', output }; + } + yield { type: 'final', output: lastOutput! }; + } else { + yield { type: 'final', output: await result }; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/index.ts new file mode 100644 index 000000000..7cb7fb0e3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/index.ts @@ -0,0 +1,40 @@ +export type { + AssistantContent, + AssistantModelMessage, +} from './assistant-model-message'; +export type { + FilePart, + ImagePart, + ReasoningPart, + TextPart, + ToolCallPart, + ToolResultOutput, + ToolResultPart, +} from './content-part'; +export type { DataContent } from './data-content'; +export { executeTool } from './execute-tool'; +export type { ModelMessage } from './model-message'; +export type { ProviderOptions } from './provider-options'; +export type { SystemModelMessage } from './system-model-message'; +export { + dynamicTool, + tool, + type InferToolInput, + type InferToolOutput, + type Tool, + type ToolExecutionOptions, + type ToolExecuteFunction, + type ToolNeedsApprovalFunction, +} from './tool'; +export type { ToolApprovalRequest } from './tool-approval-request'; +export type { ToolApprovalResponse } from './tool-approval-response'; +export type { ToolCall } from './tool-call'; +export type { ToolContent, ToolModelMessage } from './tool-model-message'; +export type { ToolResult } from './tool-result'; +export type { UserContent, UserModelMessage } from './user-model-message'; +import type { ToolExecutionOptions } from './tool'; + +/** + * @deprecated Use ToolExecutionOptions instead. + */ +export type ToolCallOptions = ToolExecutionOptions; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/model-message.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/model-message.ts new file mode 100644 index 000000000..b0c5dda37 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/model-message.ts @@ -0,0 +1,14 @@ +import { AssistantModelMessage } from './assistant-model-message'; +import { SystemModelMessage } from './system-model-message'; +import { ToolModelMessage } from './tool-model-message'; +import { UserModelMessage } from './user-model-message'; + +/** + * A message that can be used in the `messages` field of a prompt. + * It can be a user message, an assistant message, or a tool message. + */ +export type ModelMessage = + | SystemModelMessage + | UserModelMessage + | AssistantModelMessage + | ToolModelMessage; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/provider-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/provider-options.ts new file mode 100644 index 000000000..8260c7ab2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/provider-options.ts @@ -0,0 +1,9 @@ +import { SharedV3ProviderOptions } from '@ai-sdk/provider'; + +/** + * Additional provider-specific options. + * + * They are passed through to the provider from the AI SDK and enable + * provider-specific functionality that can be fully encapsulated in the provider. + */ +export type ProviderOptions = SharedV3ProviderOptions; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/system-model-message.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/system-model-message.ts new file mode 100644 index 000000000..b35af571c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/system-model-message.ts @@ -0,0 +1,20 @@ +import { ProviderOptions } from './provider-options'; + +/** + * A system message. It can contain system information. + * + * Note: using the "system" part of the prompt is strongly preferred + * to increase the resilience against prompt injection attacks, + * and because not all providers support several system messages. + */ +export type SystemModelMessage = { + role: 'system'; + content: string; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-approval-request.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-approval-request.ts new file mode 100644 index 000000000..25d390bc5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-approval-request.ts @@ -0,0 +1,16 @@ +/** + * Tool approval request prompt part. + */ +export type ToolApprovalRequest = { + type: 'tool-approval-request'; + + /** + * ID of the tool approval. + */ + approvalId: string; + + /** + * ID of the tool call that the approval request is for. + */ + toolCallId: string; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-approval-response.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-approval-response.ts new file mode 100644 index 000000000..494bd5a4f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-approval-response.ts @@ -0,0 +1,27 @@ +/** + * Tool approval response prompt part. + */ +export type ToolApprovalResponse = { + type: 'tool-approval-response'; + + /** + * ID of the tool approval. + */ + approvalId: string; + + /** + * Flag indicating whether the approval was granted or denied. + */ + approved: boolean; + + /** + * Optional reason for the approval or denial. + */ + reason?: string; + + /** + * Flag indicating whether the tool call is provider-executed. + * Only provider-executed tool approval responses should be sent to the model. + */ + providerExecuted?: boolean; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-call.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-call.ts new file mode 100644 index 000000000..fb5919ab3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-call.ts @@ -0,0 +1,31 @@ +/** + * Typed tool call that is returned by generateText and streamText. + * It contains the tool call ID, the tool name, and the tool arguments. + */ +export interface ToolCall { + /** + * ID of the tool call. This ID is used to match the tool call with the tool result. + */ + toolCallId: string; + + /** + * Name of the tool that is being called. + */ + toolName: NAME; + + /** + * Arguments of the tool call. This is a JSON-serializable object that matches the tool's input schema. + */ + input: INPUT; + + /** + * Whether the tool call will be executed by the provider. + * If this flag is not set or is false, the tool call will be executed by the client. + */ + providerExecuted?: boolean; + + /** + * Whether the tool is dynamic. + */ + dynamic?: boolean; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-model-message.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-model-message.ts new file mode 100644 index 000000000..777d10f8b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-model-message.ts @@ -0,0 +1,23 @@ +import { ToolResultPart } from './content-part'; +import { ProviderOptions } from './provider-options'; +import { ToolApprovalResponse } from './tool-approval-response'; + +/** + * A tool message. It contains the result of one or more tool calls. + */ +export type ToolModelMessage = { + role: 'tool'; + content: ToolContent; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; +}; + +/** + * Content of a tool message. It is an array of tool result parts. + */ +export type ToolContent = Array; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-result.ts new file mode 100644 index 000000000..c54028dac --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool-result.ts @@ -0,0 +1,35 @@ +/** + * Typed tool result that is returned by `generateText` and `streamText`. + * It contains the tool call ID, the tool name, the tool arguments, and the tool result. + */ +export interface ToolResult { + /** + * ID of the tool call. This ID is used to match the tool call with the tool result. + */ + toolCallId: string; + + /** + * Name of the tool that was called. + */ + toolName: NAME; + + /** + * Arguments of the tool call. This is a JSON-serializable object that matches the tool's input schema. + */ + input: INPUT; + + /** + * Result of the tool call. This is the result of the tool's execution. + */ + output: OUTPUT; + + /** + * Whether the tool result has been executed by the provider. + */ + providerExecuted?: boolean; + + /** + * Whether the tool is dynamic. + */ + dynamic?: boolean; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool.ts new file mode 100644 index 000000000..b07089fe2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/tool.ts @@ -0,0 +1,324 @@ +import { JSONValue } from '@ai-sdk/provider'; +import { FlexibleSchema } from '../schema'; +import { ToolResultOutput } from './content-part'; +import { ModelMessage } from './model-message'; +import { ProviderOptions } from './provider-options'; + +/** + * Additional options that are sent into each tool call. + */ +export interface ToolExecutionOptions { + /** + * The ID of the tool call. You can use it e.g. when sending tool-call related information with stream data. + */ + toolCallId: string; + + /** + * Messages that were sent to the language model to initiate the response that contained the tool call. + * The messages **do not** include the system prompt nor the assistant response that contained the tool call. + */ + messages: ModelMessage[]; + + /** + * An optional abort signal that indicates that the overall operation should be aborted. + */ + abortSignal?: AbortSignal; + + /** + * User-defined context. + * + * Treat the context object as immutable inside tools. + * Mutating the context object can lead to race conditions and unexpected results + * when tools are called in parallel. + * + * If you need to mutate the context, analyze the tool calls and results + * in `prepareStep` and update it there. + * + * Experimental (can break in patch releases). + */ + experimental_context?: unknown; +} + +/** + * Function that is called to determine if the tool needs approval before it can be executed. + */ +export type ToolNeedsApprovalFunction = ( + input: INPUT, + options: { + /** + * The ID of the tool call. You can use it e.g. when sending tool-call related information with stream data. + */ + toolCallId: string; + + /** + * Messages that were sent to the language model to initiate the response that contained the tool call. + * The messages **do not** include the system prompt nor the assistant response that contained the tool call. + */ + messages: ModelMessage[]; + + /** + * Additional context. + * + * Experimental (can break in patch releases). + */ + experimental_context?: unknown; + }, +) => boolean | PromiseLike; + +export type ToolExecuteFunction = ( + input: INPUT, + options: ToolExecutionOptions, +) => AsyncIterable | PromiseLike | OUTPUT; + +// 0 extends 1 & N checks for any +// [N] extends [never] checks for never +type NeverOptional = 0 extends 1 & N + ? Partial + : [N] extends [never] + ? Partial> + : T; + +type ToolOutputProperties = NeverOptional< + OUTPUT, + | { + /** + * An async function that is called with the arguments from the tool call and produces a result. + * If not provided, the tool will not be executed automatically. + * + * @args is the input of the tool call. + * @options.abortSignal is a signal that can be used to abort the tool call. + */ + execute: ToolExecuteFunction; + + outputSchema?: FlexibleSchema; + } + | { + outputSchema: FlexibleSchema; + + execute?: never; + } +>; + +/** + * A tool contains the description and the schema of the input that the tool expects. + * This enables the language model to generate the input. + * + * The tool can also contain an optional execute function for the actual execution function of the tool. + */ +export type Tool< + INPUT extends JSONValue | unknown | never = any, + OUTPUT extends JSONValue | unknown | never = any, +> = { + /** + * An optional description of what the tool does. + * Will be used by the language model to decide whether to use the tool. + * Not used for provider-defined tools. + */ + description?: string; + + /** + * An optional title of the tool. + */ + title?: string; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; + + /** + * The schema of the input that the tool expects. + * The language model will use this to generate the input. + * It is also used to validate the output of the language model. + * + * You can use descriptions on the schema properties to make the input understandable for the language model. + */ + inputSchema: FlexibleSchema; + + /** + * An optional list of input examples that show the language + * model what the input should look like. + */ + inputExamples?: Array<{ input: NoInfer }>; + + /** + * Whether the tool needs approval before it can be executed. + */ + needsApproval?: + | boolean + | ToolNeedsApprovalFunction<[INPUT] extends [never] ? unknown : INPUT>; + + /** + * Strict mode setting for the tool. + * + * Providers that support strict mode will use this setting to determine + * how the input should be generated. Strict mode will always produce + * valid inputs, but it might limit what input schemas are supported. + */ + strict?: boolean; + + /** + * Optional function that is called when the argument streaming starts. + * Only called when the tool is used in a streaming context. + */ + onInputStart?: (options: ToolExecutionOptions) => void | PromiseLike; + + /** + * Optional function that is called when an argument streaming delta is available. + * Only called when the tool is used in a streaming context. + */ + onInputDelta?: ( + options: { inputTextDelta: string } & ToolExecutionOptions, + ) => void | PromiseLike; + + /** + * Optional function that is called when a tool call can be started, + * even if the execute function is not provided. + */ + onInputAvailable?: ( + options: { + input: [INPUT] extends [never] ? unknown : INPUT; + } & ToolExecutionOptions, + ) => void | PromiseLike; +} & ToolOutputProperties & { + /** + * Optional conversion function that maps the tool result to an output that can be used by the language model. + * + * If not provided, the tool result will be sent as a JSON object. + */ + toModelOutput?: (options: { + /** + * The ID of the tool call. You can use it e.g. when sending tool-call related information with stream data. + */ + toolCallId: string; + + /** + * The input of the tool call. + */ + input: [INPUT] extends [never] ? unknown : INPUT; + + /** + * The output of the tool call. + */ + output: 0 extends 1 & OUTPUT + ? any + : [OUTPUT] extends [never] + ? any + : NoInfer; + }) => ToolResultOutput | PromiseLike; + } & ( + | { + /** + * Tool with user-defined input and output schemas. + */ + type?: undefined | 'function'; + } + | { + /** + * Tool that is defined at runtime (e.g. an MCP tool). + * The types of input and output are not known at development time. + */ + type: 'dynamic'; + } + | { + /** + * Tool with provider-defined input and output schemas. + */ + type: 'provider'; + + /** + * The ID of the tool. Must follow the format `.`. + */ + id: `${string}.${string}`; + + /** + * The arguments for configuring the tool. Must match the expected arguments defined by the provider for this tool. + */ + args: Record; + + /** + * Whether this provider-executed tool supports deferred results. + * + * When true, the tool result may not be returned in the same turn as the + * tool call (e.g., when using programmatic tool calling where a server tool + * triggers a client-executed tool, and the server tool's result is deferred + * until the client tool is resolved). + * + * This flag allows the AI SDK to handle tool results that arrive without + * a matching tool call in the current response. + * + * @default false + */ + supportsDeferredResults?: boolean; + } + ); + +/** + * Infer the input type of a tool. + */ +export type InferToolInput = + TOOL extends Tool ? INPUT : never; + +/** + * Infer the output type of a tool. + */ +export type InferToolOutput = + TOOL extends Tool ? OUTPUT : never; + +/** + * Helper function for inferring the execute args of a tool. + */ +// Note: overload order is important for auto-completion +export function tool( + tool: Tool, +): Tool; +export function tool(tool: Tool): Tool; +export function tool(tool: Tool): Tool; +export function tool(tool: Tool): Tool; +export function tool(tool: any): any { + return tool; +} + +/** + * Defines a dynamic tool. + */ +export function dynamicTool(tool: { + description?: string; + title?: string; + providerOptions?: ProviderOptions; + inputSchema: FlexibleSchema; + execute: ToolExecuteFunction; + + /** + * Optional conversion function that maps the tool result to an output that can be used by the language model. + * + * If not provided, the tool result will be sent as a JSON object. + */ + toModelOutput?: (options: { + /** + * The ID of the tool call. You can use it e.g. when sending tool-call related information with stream data. + */ + toolCallId: string; + + /** + * The input of the tool call. + */ + input: unknown; + + /** + * The output of the tool call. + */ + output: unknown; + }) => ToolResultOutput | PromiseLike; + + /** + * Whether the tool needs approval before it can be executed. + */ + needsApproval?: boolean | ToolNeedsApprovalFunction; +}): Tool & { + type: 'dynamic'; +} { + return { ...tool, type: 'dynamic' }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/user-model-message.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/user-model-message.ts new file mode 100644 index 000000000..04ac1bf33 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/types/user-model-message.ts @@ -0,0 +1,22 @@ +import { FilePart, ImagePart, TextPart } from './content-part'; +import { ProviderOptions } from './provider-options'; + +/** + * A user message. It can contain text or a combination of text and images. + */ +export type UserModelMessage = { + role: 'user'; + content: UserContent; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; +}; + +/** + * Content of a user message. It can be a string or an array of text and image parts. + */ +export type UserContent = string | Array; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/uint8-utils.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/uint8-utils.ts new file mode 100644 index 000000000..b8063097d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/uint8-utils.ts @@ -0,0 +1,26 @@ +// btoa and atob need to be invoked as a function call, not as a method call. +// Otherwise CloudFlare will throw a +// "TypeError: Illegal invocation: function called with incorrect this reference" +const { btoa, atob } = globalThis; + +export function convertBase64ToUint8Array(base64String: string) { + const base64Url = base64String.replace(/-/g, '+').replace(/_/g, '/'); + const latin1string = atob(base64Url); + return Uint8Array.from(latin1string, byte => byte.codePointAt(0)!); +} + +export function convertUint8ArrayToBase64(array: Uint8Array): string { + let latin1string = ''; + + // Note: regular for loop to support older JavaScript versions that + // do not support for..of on Uint8Array + for (let i = 0; i < array.length; i++) { + latin1string += String.fromCodePoint(array[i]); + } + + return btoa(latin1string); +} + +export function convertToBase64(value: string | Uint8Array): string { + return value instanceof Uint8Array ? convertUint8ArrayToBase64(value) : value; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/validate-download-url.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/validate-download-url.ts new file mode 100644 index 000000000..7c026ad6b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/validate-download-url.ts @@ -0,0 +1,143 @@ +import { DownloadError } from './download-error'; + +/** + * Validates that a URL is safe to download from, blocking private/internal addresses + * to prevent SSRF attacks. + * + * @param url - The URL string to validate. + * @throws DownloadError if the URL is unsafe. + */ +export function validateDownloadUrl(url: string): void { + let parsed: URL; + try { + parsed = new URL(url); + } catch { + throw new DownloadError({ + url, + message: `Invalid URL: ${url}`, + }); + } + + // Only allow http and https protocols + if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') { + throw new DownloadError({ + url, + message: `URL scheme must be http or https, got ${parsed.protocol}`, + }); + } + + const hostname = parsed.hostname; + + // Block empty hostname + if (!hostname) { + throw new DownloadError({ + url, + message: `URL must have a hostname`, + }); + } + + // Block localhost and .local domains + if ( + hostname === 'localhost' || + hostname.endsWith('.local') || + hostname.endsWith('.localhost') + ) { + throw new DownloadError({ + url, + message: `URL with hostname ${hostname} is not allowed`, + }); + } + + // Check for IPv6 addresses (enclosed in brackets in URLs) + if (hostname.startsWith('[') && hostname.endsWith(']')) { + const ipv6 = hostname.slice(1, -1); + if (isPrivateIPv6(ipv6)) { + throw new DownloadError({ + url, + message: `URL with IPv6 address ${hostname} is not allowed`, + }); + } + return; + } + + // Check for IPv4 addresses + if (isIPv4(hostname)) { + if (isPrivateIPv4(hostname)) { + throw new DownloadError({ + url, + message: `URL with IP address ${hostname} is not allowed`, + }); + } + return; + } +} + +function isIPv4(hostname: string): boolean { + const parts = hostname.split('.'); + if (parts.length !== 4) return false; + return parts.every(part => { + const num = Number(part); + return ( + Number.isInteger(num) && num >= 0 && num <= 255 && String(num) === part + ); + }); +} + +function isPrivateIPv4(ip: string): boolean { + const parts = ip.split('.').map(Number); + const [a, b] = parts; + + // 0.0.0.0/8 + if (a === 0) return true; + // 10.0.0.0/8 + if (a === 10) return true; + // 127.0.0.0/8 + if (a === 127) return true; + // 169.254.0.0/16 + if (a === 169 && b === 254) return true; + // 172.16.0.0/12 + if (a === 172 && b >= 16 && b <= 31) return true; + // 192.168.0.0/16 + if (a === 192 && b === 168) return true; + + return false; +} + +function isPrivateIPv6(ip: string): boolean { + const normalized = ip.toLowerCase(); + + // ::1 (loopback) + if (normalized === '::1') return true; + // :: (unspecified) + if (normalized === '::') return true; + + // Check for IPv4-mapped addresses (::ffff:x.x.x.x or ::ffff:HHHH:HHHH) + if (normalized.startsWith('::ffff:')) { + const mappedPart = normalized.slice(7); + // Dotted-decimal form: ::ffff:127.0.0.1 + if (isIPv4(mappedPart)) { + return isPrivateIPv4(mappedPart); + } + // Hex form: ::ffff:7f00:1 (URL parser normalizes to this) + const hexParts = mappedPart.split(':'); + if (hexParts.length === 2) { + const high = parseInt(hexParts[0], 16); + const low = parseInt(hexParts[1], 16); + if (!isNaN(high) && !isNaN(low)) { + const a = (high >> 8) & 0xff; + const b = high & 0xff; + const c = (low >> 8) & 0xff; + const d = low & 0xff; + return isPrivateIPv4(`${a}.${b}.${c}.${d}`); + } + } + } + + // fc00::/7 (unique local addresses - fc00:: and fd00::) + if (normalized.startsWith('fc') || normalized.startsWith('fd')) return true; + + // fe80::/10 (link-local) + if (normalized.startsWith('fe80')) return true; + + return false; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/validate-types.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/validate-types.ts new file mode 100644 index 000000000..80abb4d8f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/validate-types.ts @@ -0,0 +1,87 @@ +import { TypeValidationContext, TypeValidationError } from '@ai-sdk/provider'; +import { FlexibleSchema, asSchema } from './schema'; + +/** + * Validates the types of an unknown object using a schema and + * return a strongly-typed object. + * + * @template T - The type of the object to validate. + * @param {string} options.value - The object to validate. + * @param {Validator} options.schema - The schema to use for validating the JSON. + * @param {TypeValidationContext} options.context - Optional context about what is being validated. + * @returns {Promise} - The typed object. + */ +export async function validateTypes({ + value, + schema, + context, +}: { + value: unknown; + schema: FlexibleSchema; + context?: TypeValidationContext; +}): Promise { + const result = await safeValidateTypes({ value, schema, context }); + + if (!result.success) { + throw TypeValidationError.wrap({ value, cause: result.error, context }); + } + + return result.value; +} + +/** + * Safely validates the types of an unknown object using a schema and + * return a strongly-typed object. + * + * @template T - The type of the object to validate. + * @param {string} options.value - The JSON object to validate. + * @param {Validator} options.schema - The schema to use for validating the JSON. + * @param {TypeValidationContext} options.context - Optional context about what is being validated. + * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object. + */ +export async function safeValidateTypes({ + value, + schema, + context, +}: { + value: unknown; + schema: FlexibleSchema; + context?: TypeValidationContext; +}): Promise< + | { + success: true; + value: OBJECT; + rawValue: unknown; + } + | { + success: false; + error: TypeValidationError; + rawValue: unknown; + } +> { + const actualSchema = asSchema(schema); + + try { + if (actualSchema.validate == null) { + return { success: true, value: value as OBJECT, rawValue: value }; + } + + const result = await actualSchema.validate(value); + + if (result.success) { + return { success: true, value: result.value, rawValue: value }; + } + + return { + success: false, + error: TypeValidationError.wrap({ value, cause: result.error, context }), + rawValue: value, + }; + } catch (error) { + return { + success: false, + error: TypeValidationError.wrap({ value, cause: error, context }), + rawValue: value, + }; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/version.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/version.ts new file mode 100644 index 000000000..7a35d46f5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/version.ts @@ -0,0 +1,6 @@ +// Version string of this package injected at build time. +declare const __PACKAGE_VERSION__: string | undefined; +export const VERSION: string = + typeof __PACKAGE_VERSION__ !== 'undefined' + ? __PACKAGE_VERSION__ + : '0.0.0-test'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/with-user-agent-suffix.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/with-user-agent-suffix.ts new file mode 100644 index 000000000..999795898 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/with-user-agent-suffix.ts @@ -0,0 +1,27 @@ +import { normalizeHeaders } from './normalize-headers'; + +/** + * Appends suffix parts to the `user-agent` header. + * If a `user-agent` header already exists, the suffix parts are appended to it. + * If no `user-agent` header exists, a new one is created with the suffix parts. + * Automatically removes undefined entries from the headers. + * + * @param headers - The original headers. + * @param userAgentSuffixParts - The parts to append to the `user-agent` header. + * @returns The new headers with the `user-agent` header set or updated. + */ +export function withUserAgentSuffix( + headers: HeadersInit | Record | undefined, + ...userAgentSuffixParts: string[] +): Record { + const normalizedHeaders = new Headers(normalizeHeaders(headers)); + + const currentUserAgentHeader = normalizedHeaders.get('user-agent') || ''; + + normalizedHeaders.set( + 'user-agent', + [currentUserAgentHeader, ...userAgentSuffixParts].filter(Boolean).join(' '), + ); + + return Object.fromEntries(normalizedHeaders.entries()); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/without-trailing-slash.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/without-trailing-slash.ts new file mode 100644 index 000000000..8d2ec1c04 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/src/without-trailing-slash.ts @@ -0,0 +1,3 @@ +export function withoutTrailingSlash(url: string | undefined) { + return url?.replace(/\/$/, ''); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/test.d.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/test.d.ts new file mode 100644 index 000000000..990366a86 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider-utils/test.d.ts @@ -0,0 +1 @@ +export * from './dist/test'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/CHANGELOG.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/CHANGELOG.md new file mode 100644 index 000000000..d8779066e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/CHANGELOG.md @@ -0,0 +1,979 @@ +# @ai-sdk/provider + +## 3.0.8 + +### Patch Changes + +- 7168375: feat (ai, provider): default global provider video model resolution + +## 3.0.7 + +### Patch Changes + +- 53f6731: feat (ai, provider): experimental generate video support + +## 3.0.6 + +### Patch Changes + +- 2810850: fix(ai): improve type validation error messages with field paths and entity identifiers + +## 3.0.5 + +### Patch Changes + +- 4de5a1d: chore: excluded tests from src folder in npm package + +## 3.0.4 + +### Patch Changes + +- 5c090e7: fix(ai): fix LanguageModelV2ProviderTool type + +## 3.0.3 + +### Patch Changes + +- 1b11dcb: chore(ai): include sources in npm package + +## 3.0.2 + +### Patch Changes + +- d937c8f: Add Image model middleware support via `wrapImageModel` and `ImageModelV3Middleware`. + +## 3.0.1 + +### Patch Changes + +- 863d34f: fix: trigger release to update `@latest` + +## 3.0.0 + +### Major Changes + +- dee8b05: ai SDK 6 beta + +### Minor Changes + +- 78928cb: release: start 5.1 beta + +### Patch Changes + +- 0c3b58b: fix(provider): add specificationVersion to ProviderV3 +- 0adc679: feat(provider): shared spec v3 +- d1bdadb: Added reranking model +- 046aa3b: feat(provider): speech model v3 spec +- 8d9e8ad: chore(provider): remove generics from EmbeddingModelV3 + + Before + + ```ts + model.textEmbeddingModel('my-model-id'); + ``` + + After + + ```ts + model.embeddingModel('my-model-id'); + ``` + +- dce03c4: feat: tool input examples +- 2625a04: feat(openai); update spec for mcp approval +- 37c58a0: This release introduces `wrapEmbeddingModel`, a new helper that brings embedding model customization capabilities similar to `wrapLanguageModel`. +- 2b0caef: feat(provider): add preliminary provider executed tool results to language model specification +- 954c356: feat(openai): allow custom names for provider-defined tools +- 544d4e8: chore(specification): rename v3 provider defined tool to provider tool +- 0c4822d: feat: `EmbeddingModelV3` +- 4c44a5b: fix(spec): allow `undefined` values in `JSONObject` type +- e8109d3: feat: tool execution approval +- ed329cb: feat: `Provider-V3` +- 53f3368: feat(provider): support embedding model call warnings in specification +- 3bd2689: feat: extended token usage +- bb36798: fix(spec): `LanguageModelV3ToolResult["result"]` change from `unknown` to `NonNullable` +- 8dac895: feat: `LanguageModelV3` +- a755db5: feat(provider): Add SharedV3Warning type +- 475189e: chore(specification): rename EmbeddingModelCallOptions +- 457318b: chore(provider,ai): switch to SharedV3Warning and unified warnings +- b681d7d: feat: expose usage tokens for 'generateImage' function +- db913bd: fix(google): add thought signature to gemini 3 pro image parts +- 9061dc0: feat: image editing +- 366f50b: chore(provider): add deprecated textEmbeddingModel and textEmbedding aliases +- 81d4308: feat: provider-executed dynamic tools +- 9549c9e: chore(specification): extract types +- af3780b: chore(provider): remove providerExecuted from LanguageModelV3ToolResult +- 522f6b8: feat: `ImageModelV3` +- 10d819b: fix(packages/provider): fix CallWarning and allow strings as type +- 3794514: feat: flexible tool output content support +- cbf52cd: feat: expose raw finish reason +- 1bd7d32: feat: tool-specific strict mode + +## 3.0.0-beta.32 + +### Patch Changes + +- 475189e: chore(specification): rename EmbeddingModelCallOptions + +## 3.0.0-beta.31 + +### Patch Changes + +- 2625a04: feat(openai); update spec for mcp approval + +## 3.0.0-beta.30 + +### Patch Changes + +- cbf52cd: feat: expose raw finish reason + +## 3.0.0-beta.29 + +### Patch Changes + +- 9549c9e: chore(specification): extract types + +## 3.0.0-beta.28 + +### Patch Changes + +- 9061dc0: feat: image editing + +## 3.0.0-beta.27 + +### Patch Changes + +- 366f50b: chore(provider): add deprecated textEmbeddingModel and textEmbedding aliases + +## 3.0.0-beta.26 + +### Patch Changes + +- 3bd2689: feat: extended token usage + +## 3.0.0-beta.25 + +### Patch Changes + +- 53f3368: feat(provider): support embedding model call warnings in specification + +## 3.0.0-beta.24 + +### Patch Changes + +- dce03c4: feat: tool input examples + +## 3.0.0-beta.23 + +### Patch Changes + +- 1bd7d32: feat: tool-specific strict mode + +## 3.0.0-beta.22 + +### Patch Changes + +- 544d4e8: chore(specification): rename v3 provider defined tool to provider tool + +## 3.0.0-beta.21 + +### Patch Changes + +- 954c356: feat(openai): allow custom names for provider-defined tools + +## 3.0.0-beta.20 + +### Patch Changes + +- 457318b: chore(provider,ai): switch to SharedV3Warning and unified warnings + +## 3.0.0-beta.19 + +### Patch Changes + +- 8d9e8ad: chore(provider): remove generics from EmbeddingModelV3 + + Before + + ```ts + model.textEmbeddingModel('my-model-id'); + ``` + + After + + ```ts + model.embeddingModel('my-model-id'); + ``` + +## 3.0.0-beta.18 + +### Patch Changes + +- 10d819b: fix(packages/provider): fix CallWarning and allow strings as type + +## 3.0.0-beta.17 + +### Patch Changes + +- db913bd: fix(google): add thought signature to gemini 3 pro image parts + +## 3.0.0-beta.16 + +### Patch Changes + +- b681d7d: feat: expose usage tokens for 'generateImage' function + +## 3.0.0-beta.15 + +### Patch Changes + +- bb36798: fix(spec): `LanguageModelV3ToolResult["result"]` change from `unknown` to `NonNullable` + +## 3.0.0-beta.14 + +### Patch Changes + +- af3780b: chore(provider): remove providerExecuted from LanguageModelV3ToolResult + +## 3.0.0-beta.13 + +### Patch Changes + +- 37c58a0: This release introduces `wrapEmbeddingModel`, a new helper that brings embedding model customization capabilities similar to `wrapLanguageModel`. + +## 3.0.0-beta.12 + +### Patch Changes + +- d1bdadb: Added reranking model + +## 3.0.0-beta.11 + +### Patch Changes + +- 4c44a5b: fix(spec): allow `undefined` values in `JSONObject` type + +## 3.0.0-beta.10 + +### Patch Changes + +- 0c3b58b: fix(provider): add specificationVersion to ProviderV3 + +## 3.0.0-beta.9 + +### Patch Changes + +- a755db5: feat(provider): Add SharedV3Warning type + +## 3.0.0-beta.8 + +### Patch Changes + +- 3794514: feat: flexible tool output content support + +## 3.0.0-beta.7 + +### Patch Changes + +- 81d4308: feat: provider-executed dynamic tools + +## 3.0.0-beta.6 + +### Major Changes + +- dee8b05: ai SDK 6 beta + +## 2.1.0-beta.5 + +### Patch Changes + +- 046aa3b: feat(provider): speech model v3 spec +- e8109d3: feat: tool execution approval + +## 2.1.0-beta.4 + +### Patch Changes + +- 0adc679: feat(provider): shared spec v3 +- 2b0caef: feat(provider): add preliminary provider executed tool results to language model specification + +## 2.1.0-beta.3 + +### Patch Changes + +- 8dac895: feat: `LanguageModelV3` + +## 2.1.0-beta.2 + +### Patch Changes + +- ed329cb: feat: `Provider-V3` +- 522f6b8: feat: `ImageModelV3` + +## 2.1.0-beta.1 + +### Patch Changes + +- 0c4822d: feat: `EmbeddingModelV3` + +## 2.1.0-beta.0 + +### Minor Changes + +- 78928cb: release: start 5.1 beta + +## 2.0.0 + +### Major Changes + +- 742b7be: feat: forward id, streaming start, streaming end of content blocks +- 7cddb72: refactoring (provider): collapse provider defined tools into single definition +- ccce59b: feat (provider): support changing provider, model, supportedUrls in middleware +- e2b9e4b: feat (provider): add name for provider defined tools for future validation +- 95857aa: chore: restructure language model supported urls +- 6f6bb89: chore (provider): cleanup request and rawRequest (language model v2) +- d1a1aa1: chore (provider): merge rawRequest into request (language model v2) +- 63f9e9b: chore (provider,ai): tools have input/output instead of args,result +- d5f588f: AI SDK 5 +- b6b43c7: chore: move warnings into stream-start part (spec) +- 411e483: chore (provider): refactor usage (language model v2) +- abf9a79: chore: rename mimeType to mediaType +- 14c9410: chore: refactor file towards source pattern (spec) +- e86be6f: chore: remove logprobs +- 0d06df6: chore (ai): remove v1 providers +- d9c98f4: chore: refactor reasoning parts (spec) +- a3f768e: chore: restructure reasoning support +- 7435eb5: feat: upgrade speech models to v2 specification +- 0054544: chore: refactor source parts (spec) +- 9e9c809: chore: refactor tool call and tool call delta parts (spec) +- 32831c6: chore: refactor text parts (spec) +- 6dc848c: chore (provider): remove image parts +- d0f9495: chore: refactor file parts (spec) +- 7979f7f: feat (provider): support reasoning tokens, cached input tokens, total token in usage information +- 44f4aba: feat: upgrade transcription models to v2 specification +- 7ea4132: chore: remove object generation mode +- 023ba40: feat (provider): support arbitrary media types in tool results +- e030615: chore (provider): remove prompt type from language model v2 spec +- 5e57fae: refactoring (provider): restructure tool result output +- c57e248: chore (provider): remove mode +- 3795467: chore: return content array from doGenerate (spec) +- 1766ede: chore: rename maxTokens to maxOutputTokens +- 33f4a6a: chore (provider): rename providerMetadata inputs to providerOptions + +### Patch Changes + +- dc714f3: release alpha.4 +- b5da06a: update to LanguageModelV2ProviderDefinedClientTool to add server side tool later on +- 48d257a: release alpha.15 +- 0d2c085: chore (provider): tweak provider definition +- 9222aeb: release alpha.8 +- e2aceaf: feat: add raw chunk support +- 7b3ae3f: chore (provider): change getSupportedUrls to supportedUrls (language model v2) +- a166433: feat: add transcription with experimental_transcribe +- 26735b5: chore(embedding-model): add v2 interface +- 443d8ec: feat(embedding-model-v2): add response body field +- a8c8bd5: feat(embed-many): respect supportsParallelCalls & concurrency +- 9bf7291: chore(providers/openai): enable structuredOutputs by default & switch to provider option +- 2e13791: feat(anthropic): add server-side web search support +- 472524a: spec (ai): add provider options to tools +- dd3ff01: chore: add language setting to speechv2 +- 9301f86: refactor (image-model): rename `ImageModelV1` to `ImageModelV2` +- 0a87932: core (ai): change transcription model mimeType to mediaType +- c4a2fec: chore (provider): extract shared provider options and metadata (spec) +- 79457bd: chore (provider): extract LanguageModelV2File +- 8aa9e20: feat: add speech with experimental_generateSpeech +- 4617fab: chore(embedding-models): remove remaining settings +- cb68df0: feat: add transcription and speech model support to provider registry +- ad80501: chore (provider): allow both binary and base64 file content (spec) + + Before + + ```ts + import { convertUint8ArrayToBase64 } from '@ai-sdk/provider-utils'; + + // Had to manually convert binary data to base64 + const fileData = new Uint8Array([0, 1, 2, 3]); + const filePart = { + type: 'file', + mediaType: 'application/pdf', + data: convertUint8ArrayToBase64(fileData), // Required conversion + }; + ``` + + After + + ```ts + // Can use binary data directly + const fileData = new Uint8Array([0, 1, 2, 3]); + const filePart = { + type: 'file', + mediaType: 'application/pdf', + data: fileData, // Direct Uint8Array support + }; + ``` + +- 68ecf2f: release alpha.13 +- 6b98118: release alpha.3 +- 3f2f00c: feat: `ImageModelV2#maxImagesPerCall` can be set to a function that returns a `number` or `undefined`, optionally as a promise + + pull request: https://github.com/vercel/ai/pull/6343 + +- 9bd5ab5: feat (provider): add providerMetadata to ImageModelV2 interface (#5977) + + The `experimental_generateImage` method from the `ai` package now returnes revised prompts for OpenAI's image models. + + ```js + const prompt = 'Santa Claus driving a Cadillac'; + + const { providerMetadata } = await experimental_generateImage({ + model: openai.image('dall-e-3'), + prompt, + }); + + const revisedPrompt = providerMetadata.openai.images[0]?.revisedPrompt; + + console.log({ + prompt, + revisedPrompt, + }); + ``` + +- 5c56081: release alpha.7 +- fd65bc6: chore(embedding-model-v2): rename rawResponse to response +- 26535e0: release alpha.2 +- 393138b: feat(embedding-model-v2): add providerOptions +- 7182d14: Remove `Experimental_LanguageModelV2Middleware` type +- c1e6647: release alpha.11 +- 811dff3: release alpha.9 +- f10304b: feat(tool-calling): don't require the user to have to pass parameters +- 27deb4d: feat (provider/gateway): Add providerMetadata to embeddings response +- c4df419: release alpha.10 + +## 2.0.0-beta.2 + +### Patch Changes + +- 27deb4d: feat (provider/gateway): Add providerMetadata to embeddings response + +## 2.0.0-beta.1 + +### Major Changes + +- 742b7be: feat: forward id, streaming start, streaming end of content blocks +- 7cddb72: refactoring (provider): collapse provider defined tools into single definition +- ccce59b: feat (provider): support changing provider, model, supportedUrls in middleware +- e2b9e4b: feat (provider): add name for provider defined tools for future validation +- 0d06df6: chore (ai): remove v1 providers +- 7435eb5: feat: upgrade speech models to v2 specification +- 44f4aba: feat: upgrade transcription models to v2 specification +- 023ba40: feat (provider): support arbitrary media types in tool results +- 5e57fae: refactoring (provider): restructure tool result output + +### Patch Changes + +- 472524a: spec (ai): add provider options to tools +- dd3ff01: chore: add language setting to speechv2 +- cb68df0: feat: add transcription and speech model support to provider registry + +## 2.0.0-alpha.15 + +### Patch Changes + +- 48d257a: release alpha.15 + +## 2.0.0-alpha.14 + +### Major Changes + +- 63f9e9b: chore (provider,ai): tools have input/output instead of args,result + +### Patch Changes + +- b5da06a: update to LanguageModelV2ProviderDefinedClientTool to add server side tool later on +- 2e13791: feat(anthropic): add server-side web search support + +## 2.0.0-alpha.13 + +### Patch Changes + +- 68ecf2f: release alpha.13 + +## 2.0.0-alpha.12 + +### Patch Changes + +- e2aceaf: feat: add raw chunk support + +## 2.0.0-alpha.11 + +### Patch Changes + +- c1e6647: release alpha.11 + +## 2.0.0-alpha.10 + +### Patch Changes + +- c4df419: release alpha.10 + +## 2.0.0-alpha.9 + +### Patch Changes + +- 811dff3: release alpha.9 + +## 2.0.0-alpha.8 + +### Patch Changes + +- 9222aeb: release alpha.8 + +## 2.0.0-alpha.7 + +### Patch Changes + +- 5c56081: release alpha.7 + +## 2.0.0-alpha.6 + +### Patch Changes + +- 0d2c085: chore (provider): tweak provider definition + +## 2.0.0-alpha.4 + +### Patch Changes + +- dc714f3: release alpha.4 + +## 2.0.0-alpha.3 + +### Patch Changes + +- 6b98118: release alpha.3 + +## 2.0.0-alpha.2 + +### Patch Changes + +- 26535e0: release alpha.2 + +## 2.0.0-alpha.1 + +### Patch Changes + +- 3f2f00c: feat: `ImageModelV2#maxImagesPerCall` can be set to a function that returns a `number` or `undefined`, optionally as a promise + + pull request: https://github.com/vercel/ai/pull/6343 + +## 2.0.0-canary.14 + +### Major Changes + +- 7979f7f: feat (provider): support reasoning tokens, cached input tokens, total token in usage information + +### Patch Changes + +- a8c8bd5: feat(embed-many): respect supportsParallelCalls & concurrency + +## 2.0.0-canary.13 + +### Patch Changes + +- 9bd5ab5: feat (provider): add providerMetadata to ImageModelV2 interface (#5977) + + The `experimental_generateImage` method from the `ai` package now returnes revised prompts for OpenAI's image models. + + ```js + const prompt = 'Santa Claus driving a Cadillac'; + + const { providerMetadata } = await experimental_generateImage({ + model: openai.image('dall-e-3'), + prompt, + }); + + const revisedPrompt = providerMetadata.openai.images[0]?.revisedPrompt; + + console.log({ + prompt, + revisedPrompt, + }); + ``` + +## 2.0.0-canary.12 + +### Patch Changes + +- 7b3ae3f: chore (provider): change getSupportedUrls to supportedUrls (language model v2) + +## 2.0.0-canary.11 + +### Major Changes + +- e030615: chore (provider): remove prompt type from language model v2 spec + +### Patch Changes + +- 9bf7291: chore(providers/openai): enable structuredOutputs by default & switch to provider option +- 4617fab: chore(embedding-models): remove remaining settings + +## 2.0.0-canary.10 + +### Major Changes + +- a3f768e: chore: restructure reasoning support + +### Patch Changes + +- 9301f86: refactor (image-model): rename `ImageModelV1` to `ImageModelV2` + +## 2.0.0-canary.9 + +### Major Changes + +- e86be6f: chore: remove logprobs + +## 2.0.0-canary.8 + +### Major Changes + +- 95857aa: chore: restructure language model supported urls +- 7ea4132: chore: remove object generation mode + +## 2.0.0-canary.7 + +### Major Changes + +- b6b43c7: chore: move warnings into stream-start part (spec) +- 3795467: chore: return content array from doGenerate (spec) + +### Patch Changes + +- 8aa9e20: feat: add speech with experimental_generateSpeech + +## 2.0.0-canary.6 + +### Major Changes + +- 14c9410: chore: refactor file towards source pattern (spec) +- d9c98f4: chore: refactor reasoning parts (spec) +- 0054544: chore: refactor source parts (spec) +- 9e9c809: chore: refactor tool call and tool call delta parts (spec) +- 32831c6: chore: refactor text parts (spec) +- d0f9495: chore: refactor file parts (spec) + +### Patch Changes + +- 26735b5: chore(embedding-model): add v2 interface +- 443d8ec: feat(embedding-model-v2): add response body field +- c4a2fec: chore (provider): extract shared provider options and metadata (spec) +- fd65bc6: chore(embedding-model-v2): rename rawResponse to response +- 393138b: feat(embedding-model-v2): add providerOptions +- 7182d14: Remove `Experimental_LanguageModelV2Middleware` type + +## 2.0.0-canary.5 + +### Major Changes + +- 411e483: chore (provider): refactor usage (language model v2) +- ad80501: chore (provider): allow both binary and base64 file content (spec) +- 1766ede: chore: rename maxTokens to maxOutputTokens + +### Patch Changes + +- 79457bd: chore (provider): extract LanguageModelV2File +- f10304b: feat(tool-calling): don't require the user to have to pass parameters + +## 2.0.0-canary.4 + +### Major Changes + +- 6f6bb89: chore (provider): cleanup request and rawRequest (language model v2) + +## 2.0.0-canary.3 + +### Major Changes + +- d1a1aa1: chore (provider): merge rawRequest into request (language model v2) + +## 2.0.0-canary.2 + +### Major Changes + +- abf9a79: chore: rename mimeType to mediaType +- 6dc848c: chore (provider): remove image parts + +### Patch Changes + +- a166433: feat: add transcription with experimental_transcribe +- 0a87932: core (ai): change transcription model mimeType to mediaType + +## 2.0.0-canary.1 + +### Major Changes + +- c57e248: chore (provider): remove mode +- 33f4a6a: chore (provider): rename providerMetadata inputs to providerOptions + +## 2.0.0-canary.0 + +### Major Changes + +- d5f588f: AI SDK 5 + +## 1.1.0 + +### Minor Changes + +- 5bc638d: AI SDK 4.2 + +## 1.0.12 + +### Patch Changes + +- 0bd5bc6: feat (ai): support model-generated files + +## 1.0.11 + +### Patch Changes + +- 2e1101a: feat (provider/openai): pdf input support + +## 1.0.10 + +### Patch Changes + +- e1d3d42: feat (ai): expose raw response body in generateText and generateObject + +## 1.0.9 + +### Patch Changes + +- ddf9740: feat (ai): add anthropic reasoning + +## 1.0.8 + +### Patch Changes + +- 2761f06: fix (ai/provider): publish with LanguageModelV1Source + +## 1.0.7 + +### Patch Changes + +- d89c3b9: feat (provider): add image model support to provider specification + +## 1.0.6 + +### Patch Changes + +- 3a58a2e: feat (ai/core): throw NoImageGeneratedError from generateImage when no predictions are returned. + +## 1.0.5 + +### Patch Changes + +- 0a699f1: feat: add reasoning token support + +## 1.0.4 + +### Patch Changes + +- 19a2ce7: feat (provider): add message option to UnsupportedFunctionalityError +- 6337688: feat: change image generation errors to warnings + +## 1.0.3 + +### Patch Changes + +- 5ed5e45: chore (config): Use ts-library.json tsconfig for no-UI libs. + +## 1.0.2 + +### Patch Changes + +- 09a9cab: feat (ai/core): add experimental generateImage function + +## 1.0.1 + +### Patch Changes + +- b446ae5: feat (provider): Define type for ObjectGenerationMode. + +## 1.0.0 + +### Major Changes + +- b469a7e: chore: remove isXXXError methods +- c0ddc24: chore (ai): remove toJSON method from AI SDK errors + +## 1.0.0-canary.0 + +### Major Changes + +- b469a7e: chore: remove isXXXError methods +- c0ddc24: chore (ai): remove toJSON method from AI SDK errors + +## 0.0.26 + +### Patch Changes + +- aa98cdb: chore: more flexible dependency versioning +- 1486128: feat: add supportsUrl to language model specification +- 7b937c5: feat (provider-utils): improve id generator robustness +- 3b1b69a: feat: provider-defined tools +- 811a317: feat (ai/core): multi-part tool results (incl. images) + +## 0.0.25 + +### Patch Changes + +- b9b0d7b: feat (ai): access raw request body + +## 0.0.24 + +### Patch Changes + +- d595d0d: feat (ai/core): file content parts + +## 0.0.23 + +### Patch Changes + +- 03313cd: feat (ai): expose response id, response model, response timestamp in telemetry and api +- 3be7c1c: fix (provider/anthropic): support prompt caching on assistant messages + +## 0.0.22 + +### Patch Changes + +- 26515cb: feat (ai/provider): introduce ProviderV1 specification + +## 0.0.21 + +### Patch Changes + +- f2c025e: feat (ai/core): prompt validation + +## 0.0.20 + +### Patch Changes + +- 6ac355e: feat (provider/anthropic): add cache control support + +## 0.0.19 + +### Patch Changes + +- dd4a0f5: fix (ai/provider): remove invalid check in isJSONParseError + +## 0.0.18 + +### Patch Changes + +- 4bd27a9: chore (ai/provider): refactor type validation + +## 0.0.17 + +### Patch Changes + +- 029af4c: feat (ai/core): support schema name & description in generateObject & streamObject + +## 0.0.16 + +### Patch Changes + +- d58517b: feat (ai/openai): structured outputs + +## 0.0.15 + +### Patch Changes + +- 96aed25: fix (ai/provider): release new version + +## 0.0.14 + +### Patch Changes + +- a8d1c9e9: feat (ai/core): parallel image download + +## 0.0.13 + +### Patch Changes + +- 2b9da0f0: feat (core): support stopSequences setting. +- a5b58845: feat (core): support topK setting +- 4aa8deb3: feat (provider): support responseFormat setting in provider api +- 13b27ec6: chore (ai/core): remove grammar mode + +## 0.0.12 + +### Patch Changes + +- b7290943: feat (ai/core): add token usage to embed and embedMany + +## 0.0.11 + +### Patch Changes + +- 5edc6110: feat (provider): add headers support to language and embedding model spec + +## 0.0.10 + +### Patch Changes + +- 102ca22f: fix (@ai-sdk/provider): fix TypeValidationError.isTypeValidationError + +## 0.0.9 + +### Patch Changes + +- 09295e2e: feat (@ai-sdk/provider): add DownloadError + +## 0.0.8 + +### Patch Changes + +- f39c0dd2: feat (provider): add toolChoice to language model specification + +## 0.0.7 + +### Patch Changes + +- 8e780288: feat (ai/provider): add "unknown" finish reason (for models that don't provide a finish reason) + +## 0.0.6 + +### Patch Changes + +- 6a50ac4: feat (provider): add additional error types + +## 0.0.5 + +### Patch Changes + +- 0f6bc4e: feat (ai/core): add embed function + +## 0.0.4 + +### Patch Changes + +- 325ca55: feat (ai/core): improve image content part error message + +## 0.0.3 + +### Patch Changes + +- 41d5736: ai/core: re-expose language model types. + +## 0.0.2 + +### Patch Changes + +- d6431ae: ai/core: add logprobs support (thanks @SamStenner for the contribution) +- 25f3350: ai/core: add support for getting raw response headers. + +## 0.0.1 + +### Patch Changes + +- eb150a6: ai/core: remove scaling of setting values (breaking change). If you were using the temperature, frequency penalty, or presence penalty settings, you need to update the providers and adjust the setting values. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/LICENSE new file mode 100644 index 000000000..6c16c29f4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/LICENSE @@ -0,0 +1,13 @@ +Copyright 2023 Vercel, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/README.md new file mode 100644 index 000000000..0e858d875 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/README.md @@ -0,0 +1 @@ +# AI SDK - Provider Language Model Specification diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/package.json new file mode 100644 index 000000000..6cbb699e3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/package.json @@ -0,0 +1,63 @@ +{ + "name": "@ai-sdk/provider", + "version": "3.0.8", + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "source": "./src/index.ts", + "files": [ + "dist/**/*", + "src", + "!src/**/*.test.ts", + "!src/**/*.test-d.ts", + "!src/**/__snapshots__", + "!src/**/__fixtures__", + "CHANGELOG.md", + "README.md" + ], + "exports": { + "./package.json": "./package.json", + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + } + }, + "dependencies": { + "json-schema": "^0.4.0" + }, + "devDependencies": { + "@types/json-schema": "7.0.15", + "@types/node": "20.17.24", + "tsup": "^8", + "typescript": "5.8.3", + "@vercel/ai-tsconfig": "0.0.0" + }, + "engines": { + "node": ">=18" + }, + "publishConfig": { + "access": "public" + }, + "homepage": "https://ai-sdk.dev/docs", + "repository": { + "type": "git", + "url": "git+https://github.com/vercel/ai.git" + }, + "bugs": { + "url": "https://github.com/vercel/ai/issues" + }, + "keywords": [ + "ai" + ], + "scripts": { + "build": "pnpm clean && tsup --tsconfig tsconfig.build.json", + "build:watch": "pnpm clean && tsup --watch", + "clean": "del-cli dist *.tsbuildinfo", + "lint": "eslint \"./**/*.ts*\"", + "type-check": "tsc --build", + "prettier-check": "prettier --check \"./**/*.ts*\"" + } +} \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model-middleware/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model-middleware/index.ts new file mode 100644 index 000000000..ca7b39f38 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model-middleware/index.ts @@ -0,0 +1 @@ +export * from './v3/index'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model-middleware/v3/embedding-model-v3-middleware.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model-middleware/v3/embedding-model-v3-middleware.ts new file mode 100644 index 000000000..c98f6c384 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model-middleware/v3/embedding-model-v3-middleware.ts @@ -0,0 +1,69 @@ +import { EmbeddingModelV3 } from '../../embedding-model/v3/embedding-model-v3'; +import { EmbeddingModelV3CallOptions } from '../../embedding-model/v3/embedding-model-v3-call-options'; + +/** + * Middleware for EmbeddingModelV3. + * This type defines the structure for middleware that can be used to modify + * the behavior of EmbeddingModelV3 operations. + */ +export type EmbeddingModelV3Middleware = { + /** + * Middleware specification version. Use `v3` for the current version. + */ + readonly specificationVersion: 'v3'; + + /** + * Override the provider name if desired. + * @param options.model - The embedding model instance. + */ + overrideProvider?: (options: { model: EmbeddingModelV3 }) => string; + + /** + * Override the model ID if desired. + * @param options.model - The embedding model instance. + */ + overrideModelId?: (options: { model: EmbeddingModelV3 }) => string; + + /** + * Override the limit of how many embeddings can be generated in a single API call if desired. + * @param options.model - The embedding model instance. + */ + overrideMaxEmbeddingsPerCall?: (options: { + model: EmbeddingModelV3; + }) => PromiseLike | number | undefined; + + /** + * Override support for handling multiple embedding calls in parallel, if desired.. + * @param options.model - The embedding model instance. + */ + overrideSupportsParallelCalls?: (options: { + model: EmbeddingModelV3; + }) => PromiseLike | boolean; + + /** + * Transforms the parameters before they are passed to the embed model. + * @param options - Object containing the type of operation and the parameters. + * @param options.params - The original parameters for the embedding model call. + * @returns A promise that resolves to the transformed parameters. + */ + transformParams?: (options: { + params: EmbeddingModelV3CallOptions; + model: EmbeddingModelV3; + }) => PromiseLike; + + /** + * Wraps the embed operation of the embedding model. + * + * @param options - Object containing the embed function, parameters, and model. + * @param options.doEmbed - The original embed function. + * @param options.params - The parameters for the embed call. If the + * `transformParams` middleware is used, this will be the transformed parameters. + * @param options.model - The embedding model instance. + * @returns A promise that resolves to the result of the generate operation. + */ + wrapEmbed?: (options: { + doEmbed: () => ReturnType; + params: EmbeddingModelV3CallOptions; + model: EmbeddingModelV3; + }) => Promise>>; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model-middleware/v3/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model-middleware/v3/index.ts new file mode 100644 index 000000000..00203ebee --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model-middleware/v3/index.ts @@ -0,0 +1 @@ +export * from './embedding-model-v3-middleware'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/index.ts new file mode 100644 index 000000000..f0a4a20cc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/index.ts @@ -0,0 +1,2 @@ +export * from './v3/index'; +export * from './v2/index'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v2/embedding-model-v2-embedding.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v2/embedding-model-v2-embedding.ts new file mode 100644 index 000000000..b6800300f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v2/embedding-model-v2-embedding.ts @@ -0,0 +1,5 @@ +/** + * An embedding is a vector, i.e. an array of numbers. + * It is e.g. used to represent a text as a vector of word embeddings. + */ +export type EmbeddingModelV2Embedding = Array; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v2/embedding-model-v2.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v2/embedding-model-v2.ts new file mode 100644 index 000000000..4129bde0d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v2/embedding-model-v2.ts @@ -0,0 +1,113 @@ +import { + SharedV2Headers, + SharedV2ProviderOptions, + SharedV2ProviderMetadata, +} from '../../shared'; +import { EmbeddingModelV2Embedding } from './embedding-model-v2-embedding'; + +/** + * Specification for an embedding model that implements the embedding model + * interface version 2. + * + * VALUE is the type of the values that the model can embed. + * This will allow us to go beyond text embeddings in the future, + * e.g. to support image embeddings + */ +export type EmbeddingModelV2 = { + /** + * The embedding model must specify which embedding model interface + * version it implements. This will allow us to evolve the embedding + * model interface and retain backwards compatibility. The different + * implementation versions can be handled as a discriminated union + * on our side. + */ + readonly specificationVersion: 'v2'; + + /** + * Name of the provider for logging purposes. + */ + readonly provider: string; + + /** + * Provider-specific model ID for logging purposes. + */ + readonly modelId: string; + + /** + * Limit of how many embeddings can be generated in a single API call. + * + * Use Infinity for models that do not have a limit. + */ + readonly maxEmbeddingsPerCall: + | PromiseLike + | number + | undefined; + + /** + * True if the model can handle multiple embedding calls in parallel. + */ + readonly supportsParallelCalls: PromiseLike | boolean; + + /** + * Generates a list of embeddings for the given input text. + * + * Naming: "do" prefix to prevent accidental direct usage of the method + * by the user. + */ + doEmbed(options: { + /** + * List of values to embed. + */ + values: Array; + + /** + * Abort signal for cancelling the operation. + */ + abortSignal?: AbortSignal; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV2ProviderOptions; + + /** + * Additional HTTP headers to be sent with the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; + }): PromiseLike<{ + /** + * Generated embeddings. They are in the same order as the input values. + */ + embeddings: Array; + + /** + * Token usage. We only have input tokens for embeddings. + */ + usage?: { tokens: number }; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + */ + providerMetadata?: SharedV2ProviderMetadata; + + /** + * Optional response information for debugging purposes. + */ + response?: { + /** + * Response headers. + */ + headers?: SharedV2Headers; + + /** + * The response body. + */ + body?: unknown; + }; + }>; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v2/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v2/index.ts new file mode 100644 index 000000000..ca4d0c8d9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v2/index.ts @@ -0,0 +1,2 @@ +export * from './embedding-model-v2'; +export * from './embedding-model-v2-embedding'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3-call-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3-call-options.ts new file mode 100644 index 000000000..a2f9e362e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3-call-options.ts @@ -0,0 +1,26 @@ +import { SharedV3Headers, SharedV3ProviderOptions } from '../../shared'; + +export type EmbeddingModelV3CallOptions = { + /** + * List of text values to generate embeddings for. + */ + values: Array; + + /** + * Abort signal for cancelling the operation. + */ + abortSignal?: AbortSignal; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV3ProviderOptions; + + /** + * Additional HTTP headers to be sent with the request. + * Only applicable for HTTP-based providers. + */ + headers?: SharedV3Headers; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3-embedding.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3-embedding.ts new file mode 100644 index 000000000..1060a4441 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3-embedding.ts @@ -0,0 +1,5 @@ +/** + * An embedding is a vector, i.e. an array of numbers. + * It is e.g. used to represent a text as a vector of word embeddings. + */ +export type EmbeddingModelV3Embedding = Array; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3-result.ts new file mode 100644 index 000000000..8407871fc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3-result.ts @@ -0,0 +1,48 @@ +import { + SharedV3Headers, + SharedV3ProviderMetadata, + SharedV3Warning, +} from '../../shared'; +import { EmbeddingModelV3Embedding } from './embedding-model-v3-embedding'; + +/** + * The result of a embedding model doEmbed call. + */ +export type EmbeddingModelV3Result = { + /** + * Generated embeddings. They are in the same order as the input values. + */ + embeddings: Array; + + /** + * Token usage. We only have input tokens for embeddings. + */ + usage?: { tokens: number }; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + */ + providerMetadata?: SharedV3ProviderMetadata; + + /** + * Optional response information for debugging purposes. + */ + response?: { + /** + * Response headers. + */ + headers?: SharedV3Headers; + + /** + * The response body. + */ + body?: unknown; + }; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + warnings: Array; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3.ts new file mode 100644 index 000000000..ba7762586 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/embedding-model-v3.ts @@ -0,0 +1,54 @@ +import { EmbeddingModelV3CallOptions } from './embedding-model-v3-call-options'; +import { EmbeddingModelV3Result } from './embedding-model-v3-result'; + +/** + * Specification for an embedding model that implements the embedding model + * interface version 3. + * + * It is specific to text embeddings. + */ +export type EmbeddingModelV3 = { + /** + * The embedding model must specify which embedding model interface + * version it implements. This will allow us to evolve the embedding + * model interface and retain backwards compatibility. The different + * implementation versions can be handled as a discriminated union + * on our side. + */ + readonly specificationVersion: 'v3'; + + /** + * Name of the provider for logging purposes. + */ + readonly provider: string; + + /** + * Provider-specific model ID for logging purposes. + */ + readonly modelId: string; + + /** + * Limit of how many embeddings can be generated in a single API call. + * + * Use Infinity for models that do not have a limit. + */ + readonly maxEmbeddingsPerCall: + | PromiseLike + | number + | undefined; + + /** + * True if the model can handle multiple embedding calls in parallel. + */ + readonly supportsParallelCalls: PromiseLike | boolean; + + /** + * Generates a list of embeddings for the given input text. + * + * Naming: "do" prefix to prevent accidental direct usage of the method + * by the user. + */ + doEmbed( + options: EmbeddingModelV3CallOptions, + ): PromiseLike; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/index.ts new file mode 100644 index 000000000..243f48514 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/embedding-model/v3/index.ts @@ -0,0 +1,4 @@ +export * from './embedding-model-v3'; +export * from './embedding-model-v3-call-options'; +export * from './embedding-model-v3-embedding'; +export * from './embedding-model-v3-result'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/ai-sdk-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/ai-sdk-error.ts new file mode 100644 index 000000000..f23b9b3b9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/ai-sdk-error.ts @@ -0,0 +1,62 @@ +/** + * Symbol used for identifying AI SDK Error instances. + * Enables checking if an error is an instance of AISDKError across package versions. + */ +const marker = 'vercel.ai.error'; +const symbol = Symbol.for(marker); + +/** + * Custom error class for AI SDK related errors. + * @extends Error + */ +export class AISDKError extends Error { + private readonly [symbol] = true; // used in isInstance + + /** + * The underlying cause of the error, if any. + */ + readonly cause?: unknown; + + /** + * Creates an AI SDK Error. + * + * @param {Object} params - The parameters for creating the error. + * @param {string} params.name - The name of the error. + * @param {string} params.message - The error message. + * @param {unknown} [params.cause] - The underlying cause of the error. + */ + constructor({ + name, + message, + cause, + }: { + name: string; + message: string; + cause?: unknown; + }) { + super(message); + + this.name = name; + this.cause = cause; + } + + /** + * Checks if the given error is an AI SDK Error. + * @param {unknown} error - The error to check. + * @returns {boolean} True if the error is an AI SDK Error, false otherwise. + */ + static isInstance(error: unknown): error is AISDKError { + return AISDKError.hasMarker(error, marker); + } + + protected static hasMarker(error: unknown, marker: string): boolean { + const markerSymbol = Symbol.for(marker); + return ( + error != null && + typeof error === 'object' && + markerSymbol in error && + typeof error[markerSymbol] === 'boolean' && + error[markerSymbol] === true + ); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/api-call-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/api-call-error.ts new file mode 100644 index 000000000..1423c05cf --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/api-call-error.ts @@ -0,0 +1,59 @@ +import { AISDKError } from './ai-sdk-error'; + +const name = 'AI_APICallError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class APICallError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly url: string; + readonly requestBodyValues: unknown; + readonly statusCode?: number; + + readonly responseHeaders?: Record; + readonly responseBody?: string; + + readonly isRetryable: boolean; + readonly data?: unknown; + + constructor({ + message, + url, + requestBodyValues, + statusCode, + responseHeaders, + responseBody, + cause, + isRetryable = statusCode != null && + (statusCode === 408 || // request timeout + statusCode === 409 || // conflict + statusCode === 429 || // too many requests + statusCode >= 500), // server error + data, + }: { + message: string; + url: string; + requestBodyValues: unknown; + statusCode?: number; + responseHeaders?: Record; + responseBody?: string; + cause?: unknown; + isRetryable?: boolean; + data?: unknown; + }) { + super({ name, message, cause }); + + this.url = url; + this.requestBodyValues = requestBodyValues; + this.statusCode = statusCode; + this.responseHeaders = responseHeaders; + this.responseBody = responseBody; + this.isRetryable = isRetryable; + this.data = data; + } + + static isInstance(error: unknown): error is APICallError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/empty-response-body-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/empty-response-body-error.ts new file mode 100644 index 000000000..a20e0baca --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/empty-response-body-error.ts @@ -0,0 +1,17 @@ +import { AISDKError } from './ai-sdk-error'; + +const name = 'AI_EmptyResponseBodyError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class EmptyResponseBodyError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + constructor({ message = 'Empty response body' }: { message?: string } = {}) { + super({ name, message }); + } + + static isInstance(error: unknown): error is EmptyResponseBodyError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/get-error-message.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/get-error-message.ts new file mode 100644 index 000000000..62c29e58a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/get-error-message.ts @@ -0,0 +1,15 @@ +export function getErrorMessage(error: unknown | undefined) { + if (error == null) { + return 'unknown error'; + } + + if (typeof error === 'string') { + return error; + } + + if (error instanceof Error) { + return error.message; + } + + return JSON.stringify(error); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/index.ts new file mode 100644 index 000000000..4e7d48251 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/index.ts @@ -0,0 +1,16 @@ +export { AISDKError } from './ai-sdk-error'; +export { APICallError } from './api-call-error'; +export { EmptyResponseBodyError } from './empty-response-body-error'; +export { getErrorMessage } from './get-error-message'; +export { InvalidArgumentError } from './invalid-argument-error'; +export { InvalidPromptError } from './invalid-prompt-error'; +export { InvalidResponseDataError } from './invalid-response-data-error'; +export { JSONParseError } from './json-parse-error'; +export { LoadAPIKeyError } from './load-api-key-error'; +export { LoadSettingError } from './load-setting-error'; +export { NoContentGeneratedError } from './no-content-generated-error'; +export { NoSuchModelError } from './no-such-model-error'; +export { TooManyEmbeddingValuesForCallError } from './too-many-embedding-values-for-call-error'; +export type { TypeValidationContext } from './type-validation-error'; +export { TypeValidationError } from './type-validation-error'; +export { UnsupportedFunctionalityError } from './unsupported-functionality-error'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/invalid-argument-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/invalid-argument-error.ts new file mode 100644 index 000000000..afdaa47a0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/invalid-argument-error.ts @@ -0,0 +1,32 @@ +import { AISDKError } from './ai-sdk-error'; + +const name = 'AI_InvalidArgumentError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * A function argument is invalid. + */ +export class InvalidArgumentError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly argument: string; + + constructor({ + message, + cause, + argument, + }: { + argument: string; + message: string; + cause?: unknown; + }) { + super({ name, message, cause }); + + this.argument = argument; + } + + static isInstance(error: unknown): error is InvalidArgumentError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/invalid-prompt-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/invalid-prompt-error.ts new file mode 100644 index 000000000..7e969887e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/invalid-prompt-error.ts @@ -0,0 +1,33 @@ +import { AISDKError } from './ai-sdk-error'; + +const name = 'AI_InvalidPromptError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * A prompt is invalid. This error should be thrown by providers when they cannot + * process a prompt. + */ +export class InvalidPromptError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly prompt: unknown; + + constructor({ + prompt, + message, + cause, + }: { + prompt: unknown; + message: string; + cause?: unknown; + }) { + super({ name, message: `Invalid prompt: ${message}`, cause }); + + this.prompt = prompt; + } + + static isInstance(error: unknown): error is InvalidPromptError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/invalid-response-data-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/invalid-response-data-error.ts new file mode 100644 index 000000000..20da72418 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/invalid-response-data-error.ts @@ -0,0 +1,31 @@ +import { AISDKError } from './ai-sdk-error'; + +const name = 'AI_InvalidResponseDataError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * Server returned a response with invalid data content. + * This should be thrown by providers when they cannot parse the response from the API. + */ +export class InvalidResponseDataError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly data: unknown; + + constructor({ + data, + message = `Invalid response data: ${JSON.stringify(data)}.`, + }: { + data: unknown; + message?: string; + }) { + super({ name, message }); + + this.data = data; + } + + static isInstance(error: unknown): error is InvalidResponseDataError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/json-parse-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/json-parse-error.ts new file mode 100644 index 000000000..6a39eca80 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/json-parse-error.ts @@ -0,0 +1,29 @@ +import { AISDKError } from './ai-sdk-error'; +import { getErrorMessage } from './get-error-message'; + +const name = 'AI_JSONParseError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class JSONParseError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly text: string; + + constructor({ text, cause }: { text: string; cause: unknown }) { + super({ + name, + message: + `JSON parsing failed: ` + + `Text: ${text}.\n` + + `Error message: ${getErrorMessage(cause)}`, + cause, + }); + + this.text = text; + } + + static isInstance(error: unknown): error is JSONParseError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/load-api-key-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/load-api-key-error.ts new file mode 100644 index 000000000..aa73983a3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/load-api-key-error.ts @@ -0,0 +1,17 @@ +import { AISDKError } from './ai-sdk-error'; + +const name = 'AI_LoadAPIKeyError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class LoadAPIKeyError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + constructor({ message }: { message: string }) { + super({ name, message }); + } + + static isInstance(error: unknown): error is LoadAPIKeyError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/load-setting-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/load-setting-error.ts new file mode 100644 index 000000000..b2b07553f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/load-setting-error.ts @@ -0,0 +1,17 @@ +import { AISDKError } from './ai-sdk-error'; + +const name = 'AI_LoadSettingError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class LoadSettingError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + constructor({ message }: { message: string }) { + super({ name, message }); + } + + static isInstance(error: unknown): error is LoadSettingError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/no-content-generated-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/no-content-generated-error.ts new file mode 100644 index 000000000..680a30d64 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/no-content-generated-error.ts @@ -0,0 +1,22 @@ +import { AISDKError } from './ai-sdk-error'; + +const name = 'AI_NoContentGeneratedError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * Thrown when the AI provider fails to generate any content. + */ +export class NoContentGeneratedError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + constructor({ + message = 'No content generated.', + }: { message?: string } = {}) { + super({ name, message }); + } + + static isInstance(error: unknown): error is NoContentGeneratedError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/no-such-model-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/no-such-model-error.ts new file mode 100644 index 000000000..252ff96b8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/no-such-model-error.ts @@ -0,0 +1,47 @@ +import { AISDKError } from './ai-sdk-error'; + +const name = 'AI_NoSuchModelError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class NoSuchModelError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly modelId: string; + readonly modelType: + | 'languageModel' + | 'embeddingModel' + | 'imageModel' + | 'transcriptionModel' + | 'speechModel' + | 'rerankingModel' + | 'videoModel'; + + constructor({ + errorName = name, + modelId, + modelType, + message = `No such ${modelType}: ${modelId}`, + }: { + errorName?: string; + modelId: string; + modelType: + | 'languageModel' + | 'embeddingModel' + | 'imageModel' + | 'transcriptionModel' + | 'speechModel' + | 'rerankingModel' + | 'videoModel'; + message?: string; + }) { + super({ name: errorName, message }); + + this.modelId = modelId; + this.modelType = modelType; + } + + static isInstance(error: unknown): error is NoSuchModelError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/too-many-embedding-values-for-call-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/too-many-embedding-values-for-call-error.ts new file mode 100644 index 000000000..17b6c26fc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/too-many-embedding-values-for-call-error.ts @@ -0,0 +1,40 @@ +import { AISDKError } from './ai-sdk-error'; + +const name = 'AI_TooManyEmbeddingValuesForCallError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class TooManyEmbeddingValuesForCallError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly provider: string; + readonly modelId: string; + readonly maxEmbeddingsPerCall: number; + readonly values: Array; + + constructor(options: { + provider: string; + modelId: string; + maxEmbeddingsPerCall: number; + values: Array; + }) { + super({ + name, + message: + `Too many values for a single embedding call. ` + + `The ${options.provider} model "${options.modelId}" can only embed up to ` + + `${options.maxEmbeddingsPerCall} values per call, but ${options.values.length} values were provided.`, + }); + + this.provider = options.provider; + this.modelId = options.modelId; + this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall; + this.values = options.values; + } + + static isInstance( + error: unknown, + ): error is TooManyEmbeddingValuesForCallError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/type-validation-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/type-validation-error.ts new file mode 100644 index 000000000..83f3c6e9d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/type-validation-error.ts @@ -0,0 +1,108 @@ +import { AISDKError } from './ai-sdk-error'; +import { getErrorMessage } from './get-error-message'; + +const name = 'AI_TypeValidationError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export interface TypeValidationContext { + /** + * Field path in dot notation (e.g., "message.metadata", "message.parts[3].data") + */ + field?: string; + + /** + * Entity name (e.g., tool name, data type name) + */ + entityName?: string; + + /** + * Entity identifier (e.g., message ID, tool call ID) + */ + entityId?: string; +} + +export class TypeValidationError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly value: unknown; + readonly context?: TypeValidationContext; + + constructor({ + value, + cause, + context, + }: { + value: unknown; + cause: unknown; + context?: TypeValidationContext; + }) { + let contextPrefix = 'Type validation failed'; + + if (context?.field) { + contextPrefix += ` for ${context.field}`; + } + + if (context?.entityName || context?.entityId) { + contextPrefix += ' ('; + const parts: string[] = []; + if (context.entityName) { + parts.push(context.entityName); + } + if (context.entityId) { + parts.push(`id: "${context.entityId}"`); + } + contextPrefix += parts.join(', '); + contextPrefix += ')'; + } + + super({ + name, + message: + `${contextPrefix}: ` + + `Value: ${JSON.stringify(value)}.\n` + + `Error message: ${getErrorMessage(cause)}`, + cause, + }); + + this.value = value; + this.context = context; + } + + static isInstance(error: unknown): error is TypeValidationError { + return AISDKError.hasMarker(error, marker); + } + + /** + * Wraps an error into a TypeValidationError. + * If the cause is already a TypeValidationError with the same value and context, it returns the cause. + * Otherwise, it creates a new TypeValidationError. + * + * @param {Object} params - The parameters for wrapping the error. + * @param {unknown} params.value - The value that failed validation. + * @param {unknown} params.cause - The original error or cause of the validation failure. + * @param {TypeValidationContext} params.context - Optional context about what is being validated. + * @returns {TypeValidationError} A TypeValidationError instance. + */ + static wrap({ + value, + cause, + context, + }: { + value: unknown; + cause: unknown; + context?: TypeValidationContext; + }): TypeValidationError { + if ( + TypeValidationError.isInstance(cause) && + cause.value === value && + cause.context?.field === context?.field && + cause.context?.entityName === context?.entityName && + cause.context?.entityId === context?.entityId + ) { + return cause; + } + + return new TypeValidationError({ value, cause, context }); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/unsupported-functionality-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/unsupported-functionality-error.ts new file mode 100644 index 000000000..679240d59 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/errors/unsupported-functionality-error.ts @@ -0,0 +1,26 @@ +import { AISDKError } from './ai-sdk-error'; + +const name = 'AI_UnsupportedFunctionalityError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class UnsupportedFunctionalityError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly functionality: string; + + constructor({ + functionality, + message = `'${functionality}' functionality not supported.`, + }: { + functionality: string; + message?: string; + }) { + super({ name, message }); + this.functionality = functionality; + } + + static isInstance(error: unknown): error is UnsupportedFunctionalityError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model-middleware/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model-middleware/index.ts new file mode 100644 index 000000000..ca7b39f38 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model-middleware/index.ts @@ -0,0 +1 @@ +export * from './v3/index'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model-middleware/v3/image-model-v3-middleware.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model-middleware/v3/image-model-v3-middleware.ts new file mode 100644 index 000000000..41340cbe0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model-middleware/v3/image-model-v3-middleware.ts @@ -0,0 +1,61 @@ +import { ImageModelV3 } from '../../image-model/v3/image-model-v3'; +import { ImageModelV3CallOptions } from '../../image-model/v3/image-model-v3-call-options'; + +/** + * Middleware for ImageModelV3. + * This type defines the structure for middleware that can be used to modify + * the behavior of ImageModelV3 operations. + */ +export type ImageModelV3Middleware = { + /** + * Middleware specification version. Use `v3` for the current version. + */ + readonly specificationVersion: 'v3'; + + /** + * Override the provider name if desired. + * @param options.model - The image model instance. + */ + overrideProvider?: (options: { model: ImageModelV3 }) => string; + + /** + * Override the model ID if desired. + * @param options.model - The image model instance. + */ + overrideModelId?: (options: { model: ImageModelV3 }) => string; + + /** + * Override the limit of how many images can be generated in a single API call if desired. + * @param options.model - The image model instance. + */ + overrideMaxImagesPerCall?: (options: { + model: ImageModelV3; + }) => ImageModelV3['maxImagesPerCall']; + + /** + * Transforms the parameters before they are passed to the image model. + * @param options - Object containing the parameters. + * @param options.params - The original parameters for the image model call. + * @returns A promise that resolves to the transformed parameters. + */ + transformParams?: (options: { + params: ImageModelV3CallOptions; + model: ImageModelV3; + }) => PromiseLike; + + /** + * Wraps the generate operation of the image model. + * + * @param options - Object containing the generate function, parameters, and model. + * @param options.doGenerate - The original generate function. + * @param options.params - The parameters for the generate call. If the + * `transformParams` middleware is used, this will be the transformed parameters. + * @param options.model - The image model instance. + * @returns A promise that resolves to the result of the generate operation. + */ + wrapGenerate?: (options: { + doGenerate: () => ReturnType; + params: ImageModelV3CallOptions; + model: ImageModelV3; + }) => Promise>>; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model-middleware/v3/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model-middleware/v3/index.ts new file mode 100644 index 000000000..dac856ba0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model-middleware/v3/index.ts @@ -0,0 +1 @@ +export * from './image-model-v3-middleware'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/index.ts new file mode 100644 index 000000000..f0a4a20cc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/index.ts @@ -0,0 +1,2 @@ +export * from './v3/index'; +export * from './v2/index'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/image-model-v2-call-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/image-model-v2-call-options.ts new file mode 100644 index 000000000..bbc4b7160 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/image-model-v2-call-options.ts @@ -0,0 +1,60 @@ +import { SharedV2ProviderOptions } from '../../shared'; + +export type ImageModelV2CallOptions = { + /** + * Prompt for the image generation. + */ + prompt: string; + + /** + * Number of images to generate. + */ + n: number; + + /** + * Size of the images to generate. + * Must have the format `{width}x{height}`. + * `undefined` will use the provider's default size. + */ + size: `${number}x${number}` | undefined; + + /** + * Aspect ratio of the images to generate. + * Must have the format `{width}:{height}`. + * `undefined` will use the provider's default aspect ratio. + */ + aspectRatio: `${number}:${number}` | undefined; + + /** + * Seed for the image generation. + * `undefined` will use the provider's default seed. + */ + seed: number | undefined; + + /** + * Additional provider-specific options that are passed through to the provider + * as body parameters. + * + * The outer record is keyed by the provider name, and the inner + * record is keyed by the provider-specific metadata key. + * ```ts + * { + * "openai": { + * "style": "vivid" + * } + * } + * ``` + */ + providerOptions: SharedV2ProviderOptions; + + /** + * Abort signal for cancelling the operation. + */ + abortSignal?: AbortSignal; + + /** + * Additional HTTP headers to be sent with the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/image-model-v2-call-warning.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/image-model-v2-call-warning.ts new file mode 100644 index 000000000..6ea317b67 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/image-model-v2-call-warning.ts @@ -0,0 +1,16 @@ +import { ImageModelV2CallOptions } from './image-model-v2-call-options'; + +/** + * Warning from the model provider for this call. The call will proceed, but e.g. + * some settings might not be supported, which can lead to suboptimal results. + */ +export type ImageModelV2CallWarning = + | { + type: 'unsupported-setting'; + setting: keyof ImageModelV2CallOptions; + details?: string; + } + | { + type: 'other'; + message: string; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/image-model-v2.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/image-model-v2.ts new file mode 100644 index 000000000..d00b63252 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/image-model-v2.ts @@ -0,0 +1,104 @@ +import { JSONArray, JSONValue } from '../../json-value'; +import { ImageModelV2CallOptions } from './image-model-v2-call-options'; +import { ImageModelV2CallWarning } from './image-model-v2-call-warning'; + +export type ImageModelV2ProviderMetadata = Record< + string, + { + images: JSONArray; + } & JSONValue +>; + +type GetMaxImagesPerCallFunction = (options: { + modelId: string; +}) => PromiseLike | number | undefined; + +/** + * Image generation model specification version 2. + */ +export type ImageModelV2 = { + /** + * The image model must specify which image model interface + * version it implements. This will allow us to evolve the image + * model interface and retain backwards compatibility. The different + * implementation versions can be handled as a discriminated union + * on our side. + */ + readonly specificationVersion: 'v2'; + + /** + * Name of the provider for logging purposes. + */ + readonly provider: string; + + /** + * Provider-specific model ID for logging purposes. + */ + readonly modelId: string; + + /** + * Limit of how many images can be generated in a single API call. + * Can be set to a number for a fixed limit, to undefined to use + * the global limit, or a function that returns a number or undefined, + * optionally as a promise. + */ + readonly maxImagesPerCall: number | undefined | GetMaxImagesPerCallFunction; + + /** + * Generates an array of images. + */ + doGenerate(options: ImageModelV2CallOptions): PromiseLike<{ + /** + * Generated images as base64 encoded strings or binary data. + * The images should be returned without any unnecessary conversion. + * If the API returns base64 encoded strings, the images should be returned + * as base64 encoded strings. If the API returns binary data, the images should + * be returned as binary data. + */ + images: Array | Array; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + warnings: Array; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + * + * The outer record is keyed by the provider name, and the inner + * record is provider-specific metadata. It always includes an + * `images` key with image-specific metadata + * + * ```ts + * { + * "openai": { + * "images": ["revisedPrompt": "Revised prompt here."] + * } + * } + * ``` + */ + providerMetadata?: ImageModelV2ProviderMetadata; + + /** + * Response information for telemetry and debugging purposes. + */ + response: { + /** + * Timestamp for the start of the generated response. + */ + timestamp: Date; + + /** + * The ID of the response model that was used to generate the response. + */ + modelId: string; + + /** + * Response headers. + */ + headers: Record | undefined; + }; + }>; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/index.ts new file mode 100644 index 000000000..8395d2fe0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v2/index.ts @@ -0,0 +1,6 @@ +export type { + ImageModelV2, + ImageModelV2ProviderMetadata, +} from './image-model-v2'; +export type { ImageModelV2CallOptions } from './image-model-v2-call-options'; +export type { ImageModelV2CallWarning } from './image-model-v2-call-warning'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3-call-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3-call-options.ts new file mode 100644 index 000000000..761dfc398 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3-call-options.ts @@ -0,0 +1,74 @@ +import { SharedV3ProviderOptions } from '../../shared'; +import { ImageModelV3File } from './image-model-v3-file'; + +export type ImageModelV3CallOptions = { + /** + * Prompt for the image generation. Some operations, like upscaling, may not require a prompt. + */ + prompt: string | undefined; + + /** + * Number of images to generate. + */ + n: number; + + /** + * Size of the images to generate. + * Must have the format `{width}x{height}`. + * `undefined` will use the provider's default size. + */ + size: `${number}x${number}` | undefined; + + /** + * Aspect ratio of the images to generate. + * Must have the format `{width}:{height}`. + * `undefined` will use the provider's default aspect ratio. + */ + aspectRatio: `${number}:${number}` | undefined; + + /** + * Seed for the image generation. + * `undefined` will use the provider's default seed. + */ + seed: number | undefined; + + /** + * Array of images for image editing or variation generation. + * The images should be provided as base64 encoded strings or binary data. + */ + files: ImageModelV3File[] | undefined; + + /** + * Mask image for inpainting operations. + * The mask should be provided as base64 encoded strings or binary data. + */ + mask: ImageModelV3File | undefined; + + /** + * Additional provider-specific options that are passed through to the provider + * as body parameters. + * + * The outer record is keyed by the provider name, and the inner + * record is keyed by the provider-specific metadata key. + * + * ```ts + * { + * "openai": { + * "style": "vivid" + * } + * } + * ``` + */ + providerOptions: SharedV3ProviderOptions; + + /** + * Abort signal for cancelling the operation. + */ + abortSignal?: AbortSignal; + + /** + * Additional HTTP headers to be sent with the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3-file.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3-file.ts new file mode 100644 index 000000000..1d37f2be1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3-file.ts @@ -0,0 +1,44 @@ +import { SharedV3ProviderMetadata } from '../../shared'; + +/** + * An image file that can be used for image editing or variation generation. + */ +export type ImageModelV3File = + | { + type: 'file'; + + /** + * The IANA media type of the file, e.g. `image/png`. Any string is supported. + * + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType: string; + + /** + * Generated file data as base64 encoded strings or binary data. + * + * The file data should be returned without any unnecessary conversion. + * If the API returns base64 encoded strings, the file data should be returned + * as base64 encoded strings. If the API returns binary data, the file data should + * be returned as binary data. + */ + data: string | Uint8Array; + + /** + * Optional provider-specific metadata for the file part. + */ + providerOptions?: SharedV3ProviderMetadata; + } + | { + type: 'url'; + + /** + * The URL of the image file. + */ + url: string; + + /** + * Optional provider-specific metadata for the file part. + */ + providerOptions?: SharedV3ProviderMetadata; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3-usage.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3-usage.ts new file mode 100644 index 000000000..7f523a2e9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3-usage.ts @@ -0,0 +1,19 @@ +/** + * Usage information for an image model call. + */ +export type ImageModelV3Usage = { + /** + * The number of input (prompt) tokens used. + */ + inputTokens: number | undefined; + + /** + * The number of output tokens used, if reported by the provider. + */ + outputTokens: number | undefined; + + /** + * The total number of tokens as reported by the provider. + */ + totalTokens: number | undefined; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3.ts new file mode 100644 index 000000000..b11a10150 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/image-model-v3.ts @@ -0,0 +1,110 @@ +import { JSONArray, JSONValue } from '../../json-value'; +import { ImageModelV3Usage } from './image-model-v3-usage'; +import { ImageModelV3CallOptions } from './image-model-v3-call-options'; +import { SharedV3Warning } from '../../shared/v3/shared-v3-warning'; + +export type ImageModelV3ProviderMetadata = Record< + string, + { + images: JSONArray; + } & JSONValue +>; + +type GetMaxImagesPerCallFunction = (options: { + modelId: string; +}) => PromiseLike | number | undefined; + +/** + * Image generation model specification version 3. + */ +export type ImageModelV3 = { + /** + * The image model must specify which image model interface + * version it implements. This will allow us to evolve the image + * model interface and retain backwards compatibility. The different + * implementation versions can be handled as a discriminated union + * on our side. + */ + readonly specificationVersion: 'v3'; + + /** + * Name of the provider for logging purposes. + */ + readonly provider: string; + + /** + * Provider-specific model ID for logging purposes. + */ + readonly modelId: string; + + /** + * Limit of how many images can be generated in a single API call. + * Can be set to a number for a fixed limit, to undefined to use + * the global limit, or a function that returns a number or undefined, + * optionally as a promise. + */ + readonly maxImagesPerCall: number | undefined | GetMaxImagesPerCallFunction; + + /** + * Generates an array of images. + */ + doGenerate(options: ImageModelV3CallOptions): PromiseLike<{ + /** + * Generated images as base64 encoded strings or binary data. + * The images should be returned without any unnecessary conversion. + * If the API returns base64 encoded strings, the images should be returned + * as base64 encoded strings. If the API returns binary data, the images should + * be returned as binary data. + */ + images: Array | Array; + + /** + * Warnings for the call, e.g. unsupported features. + */ + warnings: Array; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + * + * The outer record is keyed by the provider name, and the inner + * record is provider-specific metadata. It always includes an + * `images` key with image-specific metadata + * + * ```ts + * { + * "openai": { + * "images": ["revisedPrompt": "Revised prompt here."] + * } + * } + * ``` + */ + providerMetadata?: ImageModelV3ProviderMetadata; + + /** + * Response information for telemetry and debugging purposes. + */ + response: { + /** + * Timestamp for the start of the generated response. + */ + timestamp: Date; + + /** + * The ID of the response model that was used to generate the response. + */ + modelId: string; + + /** + * Response headers. + */ + headers: Record | undefined; + }; + + /** + * Optional token usage for the image generation call (if the provider reports it). + */ + usage?: ImageModelV3Usage; + }>; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/index.ts new file mode 100644 index 000000000..06494af86 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/image-model/v3/index.ts @@ -0,0 +1,7 @@ +export type { + ImageModelV3, + ImageModelV3ProviderMetadata, +} from './image-model-v3'; +export type { ImageModelV3CallOptions } from './image-model-v3-call-options'; +export type { ImageModelV3Usage } from './image-model-v3-usage'; +export type { ImageModelV3File } from './image-model-v3-file'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/index.ts new file mode 100644 index 000000000..8bfadb53f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/index.ts @@ -0,0 +1,16 @@ +export * from './embedding-model/index'; +export * from './errors/index'; +export * from './image-model/index'; +export * from './image-model-middleware/index'; +export * from './json-value/index'; +export * from './language-model-middleware/index'; +export * from './embedding-model-middleware/index'; +export * from './language-model/index'; +export * from './provider/index'; +export * from './reranking-model/index'; +export * from './shared/index'; +export * from './speech-model/index'; +export * from './transcription-model/index'; +export * from './video-model/index'; + +export type { JSONSchema7, JSONSchema7Definition } from 'json-schema'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/json-value/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/json-value/index.ts new file mode 100644 index 000000000..55bd352c7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/json-value/index.ts @@ -0,0 +1,2 @@ +export { isJSONArray, isJSONObject, isJSONValue } from './is-json'; +export type { JSONArray, JSONObject, JSONValue } from './json-value'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/json-value/is-json.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/json-value/is-json.ts new file mode 100644 index 000000000..a6c1c0e71 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/json-value/is-json.ts @@ -0,0 +1,40 @@ +import { JSONArray, JSONObject, JSONValue } from './json-value'; + +export function isJSONValue(value: unknown): value is JSONValue { + if ( + value === null || + typeof value === 'string' || + typeof value === 'number' || + typeof value === 'boolean' + ) { + return true; + } + + if (Array.isArray(value)) { + return value.every(isJSONValue); + } + + if (typeof value === 'object') { + return Object.entries(value).every( + ([key, val]) => + typeof key === 'string' && (val === undefined || isJSONValue(val)), + ); + } + + return false; +} + +export function isJSONArray(value: unknown): value is JSONArray { + return Array.isArray(value) && value.every(isJSONValue); +} + +export function isJSONObject(value: unknown): value is JSONObject { + return ( + value != null && + typeof value === 'object' && + Object.entries(value).every( + ([key, val]) => + typeof key === 'string' && (val === undefined || isJSONValue(val)), + ) + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/json-value/json-value.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/json-value/json-value.ts new file mode 100644 index 000000000..1ec7ab5cd --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/json-value/json-value.ts @@ -0,0 +1,17 @@ +/** + * A JSON value can be a string, number, boolean, object, array, or null. + * JSON values can be serialized and deserialized by the JSON.stringify and JSON.parse methods. + */ +export type JSONValue = + | null + | string + | number + | boolean + | JSONObject + | JSONArray; + +export type JSONObject = { + [key: string]: JSONValue | undefined; +}; + +export type JSONArray = JSONValue[]; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/index.ts new file mode 100644 index 000000000..f0a4a20cc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/index.ts @@ -0,0 +1,2 @@ +export * from './v3/index'; +export * from './v2/index'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v2/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v2/index.ts new file mode 100644 index 000000000..d41cfbd28 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v2/index.ts @@ -0,0 +1 @@ +export * from './language-model-v2-middleware'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v2/language-model-v2-middleware.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v2/language-model-v2-middleware.ts new file mode 100644 index 000000000..e548ef0c0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v2/language-model-v2-middleware.ts @@ -0,0 +1,82 @@ +import { LanguageModelV2 } from '../../language-model/v2/language-model-v2'; +import { LanguageModelV2CallOptions } from '../../language-model/v2/language-model-v2-call-options'; + +/** + * Experimental middleware for LanguageModelV2. + * This type defines the structure for middleware that can be used to modify + * the behavior of LanguageModelV2 operations. + */ +export type LanguageModelV2Middleware = { + /** + * Middleware specification version. Use `v2` for the current version. + */ + middlewareVersion?: 'v2' | undefined; // backwards compatibility + + /** + * Override the provider name if desired. + * @param options.model - The language model instance. + */ + overrideProvider?: (options: { model: LanguageModelV2 }) => string; + + /** + * Override the model ID if desired. + * @param options.model - The language model instance. + */ + overrideModelId?: (options: { model: LanguageModelV2 }) => string; + + /** + * Override the supported URLs if desired. + * @param options.model - The language model instance. + */ + overrideSupportedUrls?: (options: { + model: LanguageModelV2; + }) => PromiseLike> | Record; + + /** + * Transforms the parameters before they are passed to the language model. + * @param options - Object containing the type of operation and the parameters. + * @param options.type - The type of operation ('generate' or 'stream'). + * @param options.params - The original parameters for the language model call. + * @returns A promise that resolves to the transformed parameters. + */ + transformParams?: (options: { + type: 'generate' | 'stream'; + params: LanguageModelV2CallOptions; + model: LanguageModelV2; + }) => PromiseLike; + + /** + * Wraps the generate operation of the language model. + * @param options - Object containing the generate function, parameters, and model. + * @param options.doGenerate - The original generate function. + * @param options.doStream - The original stream function. + * @param options.params - The parameters for the generate call. If the + * `transformParams` middleware is used, this will be the transformed parameters. + * @param options.model - The language model instance. + * @returns A promise that resolves to the result of the generate operation. + */ + wrapGenerate?: (options: { + doGenerate: () => ReturnType; + doStream: () => ReturnType; + params: LanguageModelV2CallOptions; + model: LanguageModelV2; + }) => Promise>>; + + /** + * Wraps the stream operation of the language model. + * + * @param options - Object containing the stream function, parameters, and model. + * @param options.doGenerate - The original generate function. + * @param options.doStream - The original stream function. + * @param options.params - The parameters for the stream call. If the + * `transformParams` middleware is used, this will be the transformed parameters. + * @param options.model - The language model instance. + * @returns A promise that resolves to the result of the stream operation. + */ + wrapStream?: (options: { + doGenerate: () => ReturnType; + doStream: () => ReturnType; + params: LanguageModelV2CallOptions; + model: LanguageModelV2; + }) => PromiseLike>>; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v3/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v3/index.ts new file mode 100644 index 000000000..4e88a2ebf --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v3/index.ts @@ -0,0 +1 @@ +export * from './language-model-v3-middleware'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v3/language-model-v3-middleware.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v3/language-model-v3-middleware.ts new file mode 100644 index 000000000..854e9ea90 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model-middleware/v3/language-model-v3-middleware.ts @@ -0,0 +1,84 @@ +import { LanguageModelV3 } from '../../language-model/v3/language-model-v3'; +import { LanguageModelV3CallOptions } from '../../language-model/v3/language-model-v3-call-options'; +import { LanguageModelV3GenerateResult } from '../../language-model/v3/language-model-v3-generate-result'; +import { LanguageModelV3StreamResult } from '../../language-model/v3/language-model-v3-stream-result'; + +/** + * Experimental middleware for LanguageModelV3. + * This type defines the structure for middleware that can be used to modify + * the behavior of LanguageModelV3 operations. + */ +export type LanguageModelV3Middleware = { + /** + * Middleware specification version. Use `v3` for the current version. + */ + readonly specificationVersion: 'v3'; + + /** + * Override the provider name if desired. + * @param options.model - The language model instance. + */ + overrideProvider?: (options: { model: LanguageModelV3 }) => string; + + /** + * Override the model ID if desired. + * @param options.model - The language model instance. + */ + overrideModelId?: (options: { model: LanguageModelV3 }) => string; + + /** + * Override the supported URLs if desired. + * @param options.model - The language model instance. + */ + overrideSupportedUrls?: (options: { + model: LanguageModelV3; + }) => PromiseLike> | Record; + + /** + * Transforms the parameters before they are passed to the language model. + * @param options - Object containing the type of operation and the parameters. + * @param options.type - The type of operation ('generate' or 'stream'). + * @param options.params - The original parameters for the language model call. + * @returns A promise that resolves to the transformed parameters. + */ + transformParams?: (options: { + type: 'generate' | 'stream'; + params: LanguageModelV3CallOptions; + model: LanguageModelV3; + }) => PromiseLike; + + /** + * Wraps the generate operation of the language model. + * @param options - Object containing the generate function, parameters, and model. + * @param options.doGenerate - The original generate function. + * @param options.doStream - The original stream function. + * @param options.params - The parameters for the generate call. If the + * `transformParams` middleware is used, this will be the transformed parameters. + * @param options.model - The language model instance. + * @returns A promise that resolves to the result of the generate operation. + */ + wrapGenerate?: (options: { + doGenerate: () => PromiseLike; + doStream: () => PromiseLike; + params: LanguageModelV3CallOptions; + model: LanguageModelV3; + }) => PromiseLike; + + /** + * Wraps the stream operation of the language model. + * + * @param options - Object containing the stream function, parameters, and model. + * @param options.doGenerate - The original generate function. + * @param options.doStream - The original stream function. + * @param options.params - The parameters for the stream call. If the + * `transformParams` middleware is used, this will be the transformed parameters. + * @param options.model - The language model instance. + * @returns A promise that resolves to the result of the stream operation. + */ + wrapStream?: (options: { + doGenerate: () => PromiseLike; + doStream: () => PromiseLike; + params: LanguageModelV3CallOptions; + model: LanguageModelV3; + }) => PromiseLike; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/index.ts new file mode 100644 index 000000000..f0a4a20cc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/index.ts @@ -0,0 +1,2 @@ +export * from './v3/index'; +export * from './v2/index'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/index.ts new file mode 100644 index 000000000..b0bb4279e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/index.ts @@ -0,0 +1,18 @@ +export * from './language-model-v2'; +export * from './language-model-v2-call-options'; +export * from './language-model-v2-call-warning'; +export * from './language-model-v2-content'; +export * from './language-model-v2-data-content'; +export * from './language-model-v2-file'; +export * from './language-model-v2-finish-reason'; +export * from './language-model-v2-function-tool'; +export * from './language-model-v2-prompt'; +export * from './language-model-v2-provider-defined-tool'; +export * from './language-model-v2-reasoning'; +export * from './language-model-v2-response-metadata'; +export * from './language-model-v2-source'; +export * from './language-model-v2-stream-part'; +export * from './language-model-v2-text'; +export * from './language-model-v2-tool-call'; +export * from './language-model-v2-tool-choice'; +export * from './language-model-v2-usage'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-call-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-call-options.ts new file mode 100644 index 000000000..f21ce04f6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-call-options.ts @@ -0,0 +1,127 @@ +import { JSONSchema7 } from 'json-schema'; +import { SharedV2ProviderOptions } from '../../shared/v2/shared-v2-provider-options'; +import { LanguageModelV2FunctionTool } from './language-model-v2-function-tool'; +import { LanguageModelV2Prompt } from './language-model-v2-prompt'; +import { LanguageModelV2ProviderDefinedTool } from './language-model-v2-provider-defined-tool'; +import { LanguageModelV2ToolChoice } from './language-model-v2-tool-choice'; + +export type LanguageModelV2CallOptions = { + /** + * A language mode prompt is a standardized prompt type. + * + * Note: This is **not** the user-facing prompt. The AI SDK methods will map the + * user-facing prompt types such as chat or instruction prompts to this format. + * That approach allows us to evolve the user facing prompts without breaking + * the language model interface. + */ + prompt: LanguageModelV2Prompt; + + /** + * Maximum number of tokens to generate. + */ + maxOutputTokens?: number; + + /** + * Temperature setting. The range depends on the provider and model. + */ + temperature?: number; + + /** + * Stop sequences. + * If set, the model will stop generating text when one of the stop sequences is generated. + * Providers may have limits on the number of stop sequences. + */ + stopSequences?: string[]; + + /** + * Nucleus sampling. + */ + topP?: number; + + /** + * Only sample from the top K options for each subsequent token. + * + * Used to remove "long tail" low probability responses. + * Recommended for advanced use cases only. You usually only need to use temperature. + */ + topK?: number; + + /** + * Presence penalty setting. It affects the likelihood of the model to + * repeat information that is already in the prompt. + */ + presencePenalty?: number; + + /** + * Frequency penalty setting. It affects the likelihood of the model + * to repeatedly use the same words or phrases. + */ + frequencyPenalty?: number; + + /** + * Response format. The output can either be text or JSON. Default is text. + * + * If JSON is selected, a schema can optionally be provided to guide the LLM. + */ + responseFormat?: + | { type: 'text' } + | { + type: 'json'; + + /** + * JSON schema that the generated output should conform to. + */ + schema?: JSONSchema7; + + /** + * Name of output that should be generated. Used by some providers for additional LLM guidance. + */ + name?: string; + + /** + * Description of the output that should be generated. Used by some providers for additional LLM guidance. + */ + description?: string; + }; + + /** + * The seed (integer) to use for random sampling. If set and supported + * by the model, calls will generate deterministic results. + */ + seed?: number; + + /** + * The tools that are available for the model. + */ + tools?: Array< + LanguageModelV2FunctionTool | LanguageModelV2ProviderDefinedTool + >; + + /** + * Specifies how the tool should be selected. Defaults to 'auto'. + */ + toolChoice?: LanguageModelV2ToolChoice; + + /** + * Include raw chunks in the stream. Only applicable for streaming calls. + */ + includeRawChunks?: boolean; + + /** + * Abort signal for cancelling the operation. + */ + abortSignal?: AbortSignal; + + /** + * Additional HTTP headers to be sent with the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV2ProviderOptions; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-call-warning.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-call-warning.ts new file mode 100644 index 000000000..ba22880fc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-call-warning.ts @@ -0,0 +1,23 @@ +import { LanguageModelV2CallOptions } from './language-model-v2-call-options'; +import { LanguageModelV2FunctionTool } from './language-model-v2-function-tool'; +import { LanguageModelV2ProviderDefinedTool } from './language-model-v2-provider-defined-tool'; + +/** + * Warning from the model provider for this call. The call will proceed, but e.g. + * some settings might not be supported, which can lead to suboptimal results. + */ +export type LanguageModelV2CallWarning = + | { + type: 'unsupported-setting'; + setting: Omit; + details?: string; + } + | { + type: 'unsupported-tool'; + tool: LanguageModelV2FunctionTool | LanguageModelV2ProviderDefinedTool; + details?: string; + } + | { + type: 'other'; + message: string; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-content.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-content.ts new file mode 100644 index 000000000..19a063bc5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-content.ts @@ -0,0 +1,14 @@ +import { LanguageModelV2File } from './language-model-v2-file'; +import { LanguageModelV2Reasoning } from './language-model-v2-reasoning'; +import { LanguageModelV2Source } from './language-model-v2-source'; +import { LanguageModelV2Text } from './language-model-v2-text'; +import { LanguageModelV2ToolCall } from './language-model-v2-tool-call'; +import { LanguageModelV2ToolResult } from './language-model-v2-tool-result'; + +export type LanguageModelV2Content = + | LanguageModelV2Text + | LanguageModelV2Reasoning + | LanguageModelV2File + | LanguageModelV2Source + | LanguageModelV2ToolCall + | LanguageModelV2ToolResult; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-data-content.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-data-content.ts new file mode 100644 index 000000000..eed128e43 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-data-content.ts @@ -0,0 +1,4 @@ +/** + * Data content. Can be a Uint8Array, base64 encoded data as a string or a URL. + */ +export type LanguageModelV2DataContent = Uint8Array | string | URL; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-file.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-file.ts new file mode 100644 index 000000000..f887b5d34 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-file.ts @@ -0,0 +1,25 @@ +/** + * A file that has been generated by the model. + * Generated files as base64 encoded strings or binary data. + * The files should be returned without any unnecessary conversion. + */ +export type LanguageModelV2File = { + type: 'file'; + + /** + * The IANA media type of the file, e.g. `image/png` or `audio/mp3`. + * + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType: string; + + /** + * Generated file data as base64 encoded strings or binary data. + * + * The file data should be returned without any unnecessary conversion. + * If the API returns base64 encoded strings, the file data should be returned + * as base64 encoded strings. If the API returns binary data, the file data should + * be returned as binary data. + */ + data: string | Uint8Array; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-finish-reason.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-finish-reason.ts new file mode 100644 index 000000000..8a571f534 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-finish-reason.ts @@ -0,0 +1,20 @@ +/** + * Reason why a language model finished generating a response. + * + * Can be one of the following: + * - `stop`: model generated stop sequence + * - `length`: model generated maximum number of tokens + * - `content-filter`: content filter violation stopped the model + * - `tool-calls`: model triggered tool calls + * - `error`: model stopped because of an error + * - `other`: model stopped for other reasons + * - `unknown`: the model has not transmitted a finish reason + */ +export type LanguageModelV2FinishReason = + | 'stop' // model generated stop sequence + | 'length' // model generated maximum number of tokens + | 'content-filter' // content filter violation stopped the model + | 'tool-calls' // model triggered tool calls + | 'error' // model stopped because of an error + | 'other' // model stopped for other reasons + | 'unknown'; // the model has not transmitted a finish reason diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-function-tool.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-function-tool.ts new file mode 100644 index 000000000..b8cb325d9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-function-tool.ts @@ -0,0 +1,37 @@ +import { JSONSchema7 } from 'json-schema'; +import { SharedV2ProviderOptions } from '../../shared'; + +/** + * A tool has a name, a description, and a set of parameters. + * + * Note: this is **not** the user-facing tool definition. The AI SDK methods will + * map the user-facing tool definitions to this format. + */ +export type LanguageModelV2FunctionTool = { + /** + * The type of the tool (always 'function'). + */ + type: 'function'; + + /** + * The name of the tool. Unique within this model call. + */ + name: string; + + /** + * A description of the tool. The language model uses this to understand the + * tool's purpose and to provide better completion suggestions. + */ + description?: string; + + /** + * The parameters that the tool expects. The language model uses this to + * understand the tool's input requirements and to provide matching suggestions. + */ + inputSchema: JSONSchema7; + + /** + * The provider-specific options for the tool. + */ + providerOptions?: SharedV2ProviderOptions; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-prompt.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-prompt.ts new file mode 100644 index 000000000..29254c6f8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-prompt.ts @@ -0,0 +1,218 @@ +import { JSONValue } from '../../json-value/json-value'; +import { SharedV2ProviderOptions } from '../../shared/v2/shared-v2-provider-options'; +import { LanguageModelV2DataContent } from './language-model-v2-data-content'; + +/** + * A prompt is a list of messages. + * + * Note: Not all models and prompt formats support multi-modal inputs and + * tool calls. The validation happens at runtime. + * + * Note: This is not a user-facing prompt. The AI SDK methods will map the + * user-facing prompt types such as chat or instruction prompts to this format. + */ +export type LanguageModelV2Prompt = Array; + +export type LanguageModelV2Message = + // Note: there could be additional parts for each role in the future, + // e.g. when the assistant can return images or the user can share files + // such as PDFs. + ( + | { + role: 'system'; + content: string; + } + | { + role: 'user'; + content: Array; + } + | { + role: 'assistant'; + content: Array< + | LanguageModelV2TextPart + | LanguageModelV2FilePart + | LanguageModelV2ReasoningPart + | LanguageModelV2ToolCallPart + | LanguageModelV2ToolResultPart + >; + } + | { + role: 'tool'; + content: Array; + } + ) & { + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV2ProviderOptions; + }; + +/** + * Text content part of a prompt. It contains a string of text. + */ +export interface LanguageModelV2TextPart { + type: 'text'; + + /** + * The text content. + */ + text: string; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV2ProviderOptions; +} + +/** + * Reasoning content part of a prompt. It contains a string of reasoning text. + */ +export interface LanguageModelV2ReasoningPart { + type: 'reasoning'; + + /** + * The reasoning text. + */ + text: string; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV2ProviderOptions; +} + +/** + * File content part of a prompt. It contains a file. + */ +export interface LanguageModelV2FilePart { + type: 'file'; + + /** + * Optional filename of the file. + */ + filename?: string; + + /** + * File data. Can be a Uint8Array, base64 encoded data as a string or a URL. + */ + data: LanguageModelV2DataContent; + + /** + * IANA media type of the file. + * + * Can support wildcards, e.g. `image/*` (in which case the provider needs to take appropriate action). + * + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType: string; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV2ProviderOptions; +} + +/** + * Tool call content part of a prompt. It contains a tool call (usually generated by the AI model). + */ +export interface LanguageModelV2ToolCallPart { + type: 'tool-call'; + + /** + * ID of the tool call. This ID is used to match the tool call with the tool result. + */ + toolCallId: string; + + /** + * Name of the tool that is being called. + */ + toolName: string; + + /** + * Arguments of the tool call. This is a JSON-serializable object that matches the tool's input schema. + */ + input: unknown; + + /** + * Whether the tool call will be executed by the provider. + * If this flag is not set or is false, the tool call will be executed by the client. + */ + providerExecuted?: boolean; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV2ProviderOptions; +} + +/** + * Tool result content part of a prompt. It contains the result of the tool call with the matching ID. + */ +export interface LanguageModelV2ToolResultPart { + type: 'tool-result'; + + /** + * ID of the tool call that this result is associated with. + */ + toolCallId: string; + + /** + * Name of the tool that generated this result. + */ + toolName: string; + + /** + * Result of the tool call. + */ + output: LanguageModelV2ToolResultOutput; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV2ProviderOptions; +} + +export type LanguageModelV2ToolResultOutput = + | { type: 'text'; value: string } + | { type: 'json'; value: JSONValue } + | { type: 'error-text'; value: string } + | { type: 'error-json'; value: JSONValue } + | { + type: 'content'; + value: Array< + | { + type: 'text'; + + /** + * Text content. + */ + text: string; + } + | { + type: 'media'; + + /** + * Base-64 encoded media data. + */ + data: string; + + /** + * IANA media type. + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType: string; + } + >; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-provider-defined-tool.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-provider-defined-tool.ts new file mode 100644 index 000000000..8cf2eaa04 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-provider-defined-tool.ts @@ -0,0 +1,24 @@ +/** + * The configuration of a tool that is defined by the provider. + */ +export type LanguageModelV2ProviderDefinedTool = { + /** + * The type of the tool (always 'provider-defined'). + */ + type: 'provider-defined'; + + /** + * The ID of the tool. Should follow the format `.`. + */ + id: `${string}.${string}`; + + /** + * The name of the tool that the user must use in the tool set. + */ + name: string; + + /** + * The arguments for configuring the tool. Must match the expected arguments defined by the provider for this tool. + */ + args: Record; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-reasoning.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-reasoning.ts new file mode 100644 index 000000000..0b76933cb --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-reasoning.ts @@ -0,0 +1,14 @@ +import { SharedV2ProviderMetadata } from '../../shared'; + +/** + * Reasoning that the model has generated. + */ +export type LanguageModelV2Reasoning = { + type: 'reasoning'; + text: string; + + /** + * Optional provider-specific metadata for the reasoning part. + */ + providerMetadata?: SharedV2ProviderMetadata; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-response-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-response-metadata.ts new file mode 100644 index 000000000..6fe959a99 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-response-metadata.ts @@ -0,0 +1,16 @@ +export interface LanguageModelV2ResponseMetadata { + /** + * ID for the generated response, if the provider sends one. + */ + id?: string; + + /** + * Timestamp for the start of the generated response, if the provider sends one. + */ + timestamp?: Date; + + /** + * The ID of the response model that was used to generate the response, if the provider sends one. + */ + modelId?: string; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-source.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-source.ts new file mode 100644 index 000000000..25b59a45d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-source.ts @@ -0,0 +1,67 @@ +import { SharedV2ProviderMetadata } from '../../shared/v2/shared-v2-provider-metadata'; + +/** + * A source that has been used as input to generate the response. + */ +export type LanguageModelV2Source = + | { + type: 'source'; + + /** + * The type of source - URL sources reference web content. + */ + sourceType: 'url'; + + /** + * The ID of the source. + */ + id: string; + + /** + * The URL of the source. + */ + url: string; + + /** + * The title of the source. + */ + title?: string; + + /** + * Additional provider metadata for the source. + */ + providerMetadata?: SharedV2ProviderMetadata; + } + | { + type: 'source'; + + /** + * The type of source - document sources reference files/documents. + */ + sourceType: 'document'; + + /** + * The ID of the source. + */ + id: string; + + /** + * IANA media type of the document (e.g., 'application/pdf'). + */ + mediaType: string; + + /** + * The title of the document. + */ + title: string; + + /** + * Optional filename of the document. + */ + filename?: string; + + /** + * Additional provider metadata for the source. + */ + providerMetadata?: SharedV2ProviderMetadata; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-stream-part.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-stream-part.ts new file mode 100644 index 000000000..7ef46f3d5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-stream-part.ts @@ -0,0 +1,102 @@ +import { SharedV2ProviderMetadata } from '../../shared/v2/shared-v2-provider-metadata'; +import { LanguageModelV2CallWarning } from './language-model-v2-call-warning'; +import { LanguageModelV2File } from './language-model-v2-file'; +import { LanguageModelV2FinishReason } from './language-model-v2-finish-reason'; +import { LanguageModelV2ResponseMetadata } from './language-model-v2-response-metadata'; +import { LanguageModelV2Source } from './language-model-v2-source'; +import { LanguageModelV2ToolCall } from './language-model-v2-tool-call'; +import { LanguageModelV2ToolResult } from './language-model-v2-tool-result'; +import { LanguageModelV2Usage } from './language-model-v2-usage'; + +export type LanguageModelV2StreamPart = + // Text blocks: + | { + type: 'text-start'; + providerMetadata?: SharedV2ProviderMetadata; + id: string; + } + | { + type: 'text-delta'; + id: string; + providerMetadata?: SharedV2ProviderMetadata; + delta: string; + } + | { + type: 'text-end'; + providerMetadata?: SharedV2ProviderMetadata; + id: string; + } + + // Reasoning blocks: + | { + type: 'reasoning-start'; + providerMetadata?: SharedV2ProviderMetadata; + id: string; + } + | { + type: 'reasoning-delta'; + id: string; + providerMetadata?: SharedV2ProviderMetadata; + delta: string; + } + | { + type: 'reasoning-end'; + id: string; + providerMetadata?: SharedV2ProviderMetadata; + } + + // Tool calls and results: + | { + type: 'tool-input-start'; + id: string; + toolName: string; + providerMetadata?: SharedV2ProviderMetadata; + providerExecuted?: boolean; + } + | { + type: 'tool-input-delta'; + id: string; + delta: string; + providerMetadata?: SharedV2ProviderMetadata; + } + | { + type: 'tool-input-end'; + id: string; + providerMetadata?: SharedV2ProviderMetadata; + } + | LanguageModelV2ToolCall + | LanguageModelV2ToolResult + + // Files and sources: + | LanguageModelV2File + | LanguageModelV2Source + + // stream start event with warnings for the call, e.g. unsupported settings: + | { + type: 'stream-start'; + warnings: Array; + } + + // metadata for the response. + // separate stream part so it can be sent once it is available. + | ({ type: 'response-metadata' } & LanguageModelV2ResponseMetadata) + + // metadata that is available after the stream is finished: + | { + type: 'finish'; + usage: LanguageModelV2Usage; + finishReason: LanguageModelV2FinishReason; + providerMetadata?: SharedV2ProviderMetadata; + } + + // raw chunks if enabled + | { + type: 'raw'; + rawValue: unknown; + } + + // error parts are streamed, allowing for multiple errors + | { + type: 'error'; + error: unknown; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-text.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-text.ts new file mode 100644 index 000000000..622221513 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-text.ts @@ -0,0 +1,15 @@ +import { SharedV2ProviderMetadata } from '../../shared/v2/shared-v2-provider-metadata'; + +/** + * Text that the model has generated. + */ +export type LanguageModelV2Text = { + type: 'text'; + + /** + * The text content. + */ + text: string; + + providerMetadata?: SharedV2ProviderMetadata; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-tool-call.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-tool-call.ts new file mode 100644 index 000000000..eb1dc972b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-tool-call.ts @@ -0,0 +1,35 @@ +import { SharedV2ProviderMetadata } from '../../shared/v2/shared-v2-provider-metadata'; + +/** + * Tool calls that the model has generated. + */ +export type LanguageModelV2ToolCall = { + type: 'tool-call'; + + /** + * The identifier of the tool call. It must be unique across all tool calls. + */ + toolCallId: string; + + /** + * The name of the tool that should be called. + */ + toolName: string; + + /** + * Stringified JSON object with the tool call arguments. Must match the + * parameters schema of the tool. + */ + input: string; + + /** + * Whether the tool call will be executed by the provider. + * If this flag is not set or is false, the tool call will be executed by the client. + */ + providerExecuted?: boolean; + + /** + * Additional provider-specific metadata for the tool call. + */ + providerMetadata?: SharedV2ProviderMetadata; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-tool-choice.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-tool-choice.ts new file mode 100644 index 000000000..2c7d00c63 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-tool-choice.ts @@ -0,0 +1,5 @@ +export type LanguageModelV2ToolChoice = + | { type: 'auto' } // the tool selection is automatic (can be no tool) + | { type: 'none' } // no tool must be selected + | { type: 'required' } // one of the available tools must be selected + | { type: 'tool'; toolName: string }; // a specific tool must be selected: diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-tool-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-tool-result.ts new file mode 100644 index 000000000..5aa2b00a0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-tool-result.ts @@ -0,0 +1,40 @@ +import { SharedV2ProviderMetadata } from '../../shared/v2/shared-v2-provider-metadata'; + +/** + * Result of a tool call that has been executed by the provider. + */ +export type LanguageModelV2ToolResult = { + type: 'tool-result'; + + /** + * The ID of the tool call that this result is associated with. + */ + toolCallId: string; + + /** + * Name of the tool that generated this result. + */ + toolName: string; + + /** + * Result of the tool call. This is a JSON-serializable object. + */ + result: unknown; + + /** + * Optional flag if the result is an error or an error message. + */ + isError?: boolean; + + /** + * Whether the tool result was generated by the provider. + * If this flag is set to true, the tool result was generated by the provider. + * If this flag is not set or is false, the tool result was generated by the client. + */ + providerExecuted?: boolean; + + /** + * Additional provider-specific metadata for the tool result. + */ + providerMetadata?: SharedV2ProviderMetadata; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-usage.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-usage.ts new file mode 100644 index 000000000..0e87ff47c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2-usage.ts @@ -0,0 +1,34 @@ +/** + * Usage information for a language model call. + * + * If your API return additional usage information, you can add it to the + * provider metadata under your provider's key. + */ +export type LanguageModelV2Usage = { + /** + * The number of input (prompt) tokens used. + */ + inputTokens: number | undefined; + + /** + * The number of output (completion) tokens used. + */ + outputTokens: number | undefined; + + /** + * The total number of tokens as reported by the provider. + * This number might be different from the sum of `inputTokens` and `outputTokens` + * and e.g. include reasoning tokens or other overhead. + */ + totalTokens: number | undefined; + + /** + * The number of reasoning tokens used. + */ + reasoningTokens?: number | undefined; + + /** + * The number of cached input tokens. + */ + cachedInputTokens?: number | undefined; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2.ts new file mode 100644 index 000000000..b7d19762c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v2/language-model-v2.ts @@ -0,0 +1,137 @@ +import { SharedV2Headers } from '../../shared'; +import { SharedV2ProviderMetadata } from '../../shared/v2/shared-v2-provider-metadata'; +import { LanguageModelV2CallOptions } from './language-model-v2-call-options'; +import { LanguageModelV2CallWarning } from './language-model-v2-call-warning'; +import { LanguageModelV2Content } from './language-model-v2-content'; +import { LanguageModelV2FinishReason } from './language-model-v2-finish-reason'; +import { LanguageModelV2ResponseMetadata } from './language-model-v2-response-metadata'; +import { LanguageModelV2StreamPart } from './language-model-v2-stream-part'; +import { LanguageModelV2Usage } from './language-model-v2-usage'; + +/** + * Specification for a language model that implements the language model interface version 2. + */ +export type LanguageModelV2 = { + /** + * The language model must specify which language model interface version it implements. + */ + readonly specificationVersion: 'v2'; + + /** + * Name of the provider for logging purposes. + */ + readonly provider: string; + + /** + * Provider-specific model ID for logging purposes. + */ + readonly modelId: string; + + /** + * Supported URL patterns by media type for the provider. + * + * The keys are media type patterns or full media types (e.g. `*\/*` for everything, `audio/*`, `video/*`, or `application/pdf`). + * and the values are arrays of regular expressions that match the URL paths. + * + * The matching should be against lower-case URLs. + * + * Matched URLs are supported natively by the model and are not downloaded. + * + * @returns A map of supported URL patterns by media type (as a promise or a plain object). + */ + supportedUrls: + | PromiseLike> + | Record; + + /** + * Generates a language model output (non-streaming). + * + * Naming: "do" prefix to prevent accidental direct usage of the method + * by the user. + */ + doGenerate(options: LanguageModelV2CallOptions): PromiseLike<{ + /** + * Ordered content that the model has generated. + */ + content: Array; + + /** + * Finish reason. + */ + finishReason: LanguageModelV2FinishReason; + + /** + * Usage information. + */ + usage: LanguageModelV2Usage; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + */ + providerMetadata?: SharedV2ProviderMetadata; + + /** + * Optional request information for telemetry and debugging purposes. + */ + request?: { + /** + * Request HTTP body that was sent to the provider API. + */ + body?: unknown; + }; + + /** + * Optional response information for telemetry and debugging purposes. + */ + response?: LanguageModelV2ResponseMetadata & { + /** + * Response headers. + */ + headers?: SharedV2Headers; + + /** + * Response HTTP body. + */ + body?: unknown; + }; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + warnings: Array; + }>; + + /** + * Generates a language model output (streaming). + * + * Naming: "do" prefix to prevent accidental direct usage of the method + * by the user. + * + * @return A stream of higher-level language model output parts. + */ + doStream(options: LanguageModelV2CallOptions): PromiseLike<{ + stream: ReadableStream; + + /** + * Optional request information for telemetry and debugging purposes. + */ + request?: { + /** + * Request HTTP body that was sent to the provider API. + */ + body?: unknown; + }; + + /** + * Optional response data. + */ + response?: { + /** + * Response headers. + */ + headers?: SharedV2Headers; + }; + }>; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/index.ts new file mode 100644 index 000000000..4294793a4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/index.ts @@ -0,0 +1,21 @@ +export * from './language-model-v3'; +export * from './language-model-v3-call-options'; +export * from './language-model-v3-content'; +export * from './language-model-v3-data-content'; +export * from './language-model-v3-file'; +export * from './language-model-v3-finish-reason'; +export * from './language-model-v3-function-tool'; +export * from './language-model-v3-generate-result'; +export * from './language-model-v3-prompt'; +export * from './language-model-v3-provider-tool'; +export * from './language-model-v3-reasoning'; +export * from './language-model-v3-response-metadata'; +export * from './language-model-v3-source'; +export * from './language-model-v3-stream-part'; +export * from './language-model-v3-stream-result'; +export * from './language-model-v3-text'; +export * from './language-model-v3-tool-approval-request'; +export * from './language-model-v3-tool-call'; +export * from './language-model-v3-tool-choice'; +export * from './language-model-v3-tool-result'; +export * from './language-model-v3-usage'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-call-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-call-options.ts new file mode 100644 index 000000000..820438be6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-call-options.ts @@ -0,0 +1,125 @@ +import { JSONSchema7 } from 'json-schema'; +import { SharedV3ProviderOptions } from '../../shared/v3/shared-v3-provider-options'; +import { LanguageModelV3FunctionTool } from './language-model-v3-function-tool'; +import { LanguageModelV3Prompt } from './language-model-v3-prompt'; +import { LanguageModelV3ProviderTool } from './language-model-v3-provider-tool'; +import { LanguageModelV3ToolChoice } from './language-model-v3-tool-choice'; + +export type LanguageModelV3CallOptions = { + /** + * A language mode prompt is a standardized prompt type. + * + * Note: This is **not** the user-facing prompt. The AI SDK methods will map the + * user-facing prompt types such as chat or instruction prompts to this format. + * That approach allows us to evolve the user facing prompts without breaking + * the language model interface. + */ + prompt: LanguageModelV3Prompt; + + /** + * Maximum number of tokens to generate. + */ + maxOutputTokens?: number; + + /** + * Temperature setting. The range depends on the provider and model. + */ + temperature?: number; + + /** + * Stop sequences. + * If set, the model will stop generating text when one of the stop sequences is generated. + * Providers may have limits on the number of stop sequences. + */ + stopSequences?: string[]; + + /** + * Nucleus sampling. + */ + topP?: number; + + /** + * Only sample from the top K options for each subsequent token. + * + * Used to remove "long tail" low probability responses. + * Recommended for advanced use cases only. You usually only need to use temperature. + */ + topK?: number; + + /** + * Presence penalty setting. It affects the likelihood of the model to + * repeat information that is already in the prompt. + */ + presencePenalty?: number; + + /** + * Frequency penalty setting. It affects the likelihood of the model + * to repeatedly use the same words or phrases. + */ + frequencyPenalty?: number; + + /** + * Response format. The output can either be text or JSON. Default is text. + * + * If JSON is selected, a schema can optionally be provided to guide the LLM. + */ + responseFormat?: + | { type: 'text' } + | { + type: 'json'; + + /** + * JSON schema that the generated output should conform to. + */ + schema?: JSONSchema7; + + /** + * Name of output that should be generated. Used by some providers for additional LLM guidance. + */ + name?: string; + + /** + * Description of the output that should be generated. Used by some providers for additional LLM guidance. + */ + description?: string; + }; + + /** + * The seed (integer) to use for random sampling. If set and supported + * by the model, calls will generate deterministic results. + */ + seed?: number; + + /** + * The tools that are available for the model. + */ + tools?: Array; + + /** + * Specifies how the tool should be selected. Defaults to 'auto'. + */ + toolChoice?: LanguageModelV3ToolChoice; + + /** + * Include raw chunks in the stream. Only applicable for streaming calls. + */ + includeRawChunks?: boolean; + + /** + * Abort signal for cancelling the operation. + */ + abortSignal?: AbortSignal; + + /** + * Additional HTTP headers to be sent with the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV3ProviderOptions; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-content.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-content.ts new file mode 100644 index 000000000..9f0806e3a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-content.ts @@ -0,0 +1,16 @@ +import { LanguageModelV3File } from './language-model-v3-file'; +import { LanguageModelV3Reasoning } from './language-model-v3-reasoning'; +import { LanguageModelV3Source } from './language-model-v3-source'; +import { LanguageModelV3Text } from './language-model-v3-text'; +import { LanguageModelV3ToolApprovalRequest } from './language-model-v3-tool-approval-request'; +import { LanguageModelV3ToolCall } from './language-model-v3-tool-call'; +import { LanguageModelV3ToolResult } from './language-model-v3-tool-result'; + +export type LanguageModelV3Content = + | LanguageModelV3Text + | LanguageModelV3Reasoning + | LanguageModelV3File + | LanguageModelV3ToolApprovalRequest + | LanguageModelV3Source + | LanguageModelV3ToolCall + | LanguageModelV3ToolResult; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-data-content.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-data-content.ts new file mode 100644 index 000000000..ba1acdeea --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-data-content.ts @@ -0,0 +1,4 @@ +/** + * Data content. Can be a Uint8Array, base64 encoded data as a string or a URL. + */ +export type LanguageModelV3DataContent = Uint8Array | string | URL; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-file.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-file.ts new file mode 100644 index 000000000..5828ab4cc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-file.ts @@ -0,0 +1,32 @@ +import { SharedV3ProviderMetadata } from '../../shared'; + +/** + * A file that has been generated by the model. + * Generated files as base64 encoded strings or binary data. + * The files should be returned without any unnecessary conversion. + */ +export type LanguageModelV3File = { + type: 'file'; + + /** + * The IANA media type of the file, e.g. `image/png` or `audio/mp3`. + * + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType: string; + + /** + * Generated file data as base64 encoded strings or binary data. + * + * The file data should be returned without any unnecessary conversion. + * If the API returns base64 encoded strings, the file data should be returned + * as base64 encoded strings. If the API returns binary data, the file data should + * be returned as binary data. + */ + data: string | Uint8Array; + + /** + * Optional provider-specific metadata for the file part. + */ + providerMetadata?: SharedV3ProviderMetadata; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-finish-reason.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-finish-reason.ts new file mode 100644 index 000000000..9e3447620 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-finish-reason.ts @@ -0,0 +1,33 @@ +/** + * Reason why a language model finished generating a response. + * + * Contains both a unified finish reason and a raw finish reason from the provider. + * The unified finish reason is used to provide a consistent finish reason across different providers. + * The raw finish reason is used to provide the original finish reason from the provider. + */ +export type LanguageModelV3FinishReason = { + /** + * Unified finish reason. This enables using the same finish reason across different providers. + * + * Can be one of the following: + * - `stop`: model generated stop sequence + * - `length`: model generated maximum number of tokens + * - `content-filter`: content filter violation stopped the model + * - `tool-calls`: model triggered tool calls + * - `error`: model stopped because of an error + * - `other`: model stopped for other reasons + */ + unified: + | 'stop' + | 'length' + | 'content-filter' + | 'tool-calls' + | 'error' + | 'other'; + + /** + * Raw finish reason from the provider. + * This is the original finish reason from the provider. + */ + raw: string | undefined; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-function-tool.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-function-tool.ts new file mode 100644 index 000000000..4c00087b9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-function-tool.ts @@ -0,0 +1,53 @@ +import { JSONSchema7 } from 'json-schema'; +import { SharedV3ProviderOptions } from '../../shared'; +import { JSONObject } from '../../json-value'; + +/** + * A tool has a name, a description, and a set of parameters. + * + * Note: this is **not** the user-facing tool definition. The AI SDK methods will + * map the user-facing tool definitions to this format. + */ +export type LanguageModelV3FunctionTool = { + /** + * The type of the tool (always 'function'). + */ + type: 'function'; + + /** + * The name of the tool. Unique within this model call. + */ + name: string; + + /** + * A description of the tool. The language model uses this to understand the + * tool's purpose and to provide better completion suggestions. + */ + description?: string; + + /** + * The parameters that the tool expects. The language model uses this to + * understand the tool's input requirements and to provide matching suggestions. + */ + inputSchema: JSONSchema7; + + /** + * An optional list of input examples that show the language + * model what the input should look like. + */ + inputExamples?: Array<{ input: JSONObject }>; + + /** + * Strict mode setting for the tool. + * + * Providers that support strict mode will use this setting to determine + * how the input should be generated. Strict mode will always produce + * valid inputs, but it might limit what input schemas are supported. + */ + strict?: boolean; + + /** + * The provider-specific options for the tool. + */ + providerOptions?: SharedV3ProviderOptions; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-generate-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-generate-result.ts new file mode 100644 index 000000000..c06dbb1b2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-generate-result.ts @@ -0,0 +1,63 @@ +import { SharedV3Headers, SharedV3Warning } from '../../shared'; +import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata'; +import { LanguageModelV3Content } from './language-model-v3-content'; +import { LanguageModelV3FinishReason } from './language-model-v3-finish-reason'; +import { LanguageModelV3ResponseMetadata } from './language-model-v3-response-metadata'; +import { LanguageModelV3Usage } from './language-model-v3-usage'; + +/** + * The result of a language model doGenerate call. + */ +export type LanguageModelV3GenerateResult = { + /** + * Ordered content that the model has generated. + */ + content: Array; + + /** + * The finish reason. + */ + finishReason: LanguageModelV3FinishReason; + + /** + * The usage information. + */ + usage: LanguageModelV3Usage; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + */ + providerMetadata?: SharedV3ProviderMetadata; + + /** + * Optional request information for telemetry and debugging purposes. + */ + request?: { + /** + * Request HTTP body that was sent to the provider API. + */ + body?: unknown; + }; + + /** + * Optional response information for telemetry and debugging purposes. + */ + response?: LanguageModelV3ResponseMetadata & { + /** + * Response headers. + */ + headers?: SharedV3Headers; + + /** + * Response HTTP body. + */ + body?: unknown; + }; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + warnings: Array; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-prompt.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-prompt.ts new file mode 100644 index 000000000..8203afa64 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-prompt.ts @@ -0,0 +1,422 @@ +import { JSONValue } from '../../json-value/json-value'; +import { SharedV3ProviderOptions } from '../../shared/v3/shared-v3-provider-options'; +import { LanguageModelV3DataContent } from './language-model-v3-data-content'; + +/** + * A prompt is a list of messages. + * + * Note: Not all models and prompt formats support multi-modal inputs and + * tool calls. The validation happens at runtime. + * + * Note: This is not a user-facing prompt. The AI SDK methods will map the + * user-facing prompt types such as chat or instruction prompts to this format. + */ +export type LanguageModelV3Prompt = Array; + +export type LanguageModelV3Message = + // Note: there could be additional parts for each role in the future, + // e.g. when the assistant can return images or the user can share files + // such as PDFs. + ( + | { + role: 'system'; + content: string; + } + | { + role: 'user'; + content: Array; + } + | { + role: 'assistant'; + content: Array< + | LanguageModelV3TextPart + | LanguageModelV3FilePart + | LanguageModelV3ReasoningPart + | LanguageModelV3ToolCallPart + | LanguageModelV3ToolResultPart + >; + } + | { + role: 'tool'; + content: Array< + | LanguageModelV3ToolResultPart + | LanguageModelV3ToolApprovalResponsePart + >; + } + ) & { + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV3ProviderOptions; + }; + +/** + * Text content part of a prompt. It contains a string of text. + */ +export interface LanguageModelV3TextPart { + type: 'text'; + + /** + * The text content. + */ + text: string; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV3ProviderOptions; +} + +/** + * Reasoning content part of a prompt. It contains a string of reasoning text. + */ +export interface LanguageModelV3ReasoningPart { + type: 'reasoning'; + + /** + * The reasoning text. + */ + text: string; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV3ProviderOptions; +} + +/** + * File content part of a prompt. It contains a file. + */ +export interface LanguageModelV3FilePart { + type: 'file'; + + /** + * Optional filename of the file. + */ + filename?: string; + + /** + * File data. Can be a Uint8Array, base64 encoded data as a string or a URL. + */ + data: LanguageModelV3DataContent; + + /** + * IANA media type of the file. + * + * Can support wildcards, e.g. `image/*` (in which case the provider needs to take appropriate action). + * + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType: string; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV3ProviderOptions; +} + +/** + * Tool call content part of a prompt. It contains a tool call (usually generated by the AI model). + */ +export interface LanguageModelV3ToolCallPart { + type: 'tool-call'; + + /** + * ID of the tool call. This ID is used to match the tool call with the tool result. + */ + toolCallId: string; + + /** + * Name of the tool that is being called. + */ + toolName: string; + + /** + * Arguments of the tool call. This is a JSON-serializable object that matches the tool's input schema. + */ + input: unknown; + + /** + * Whether the tool call will be executed by the provider. + * If this flag is not set or is false, the tool call will be executed by the client. + */ + providerExecuted?: boolean; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV3ProviderOptions; +} + +/** + * Tool result content part of a prompt. It contains the result of the tool call with the matching ID. + */ +export interface LanguageModelV3ToolResultPart { + type: 'tool-result'; + + /** + * ID of the tool call that this result is associated with. + */ + toolCallId: string; + + /** + * Name of the tool that generated this result. + */ + toolName: string; + + /** + * Result of the tool call. + */ + output: LanguageModelV3ToolResultOutput; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV3ProviderOptions; +} + +/** + * Tool approval response content part of a prompt. It contains the user's + * decision to approve or deny a provider-executed tool call. + */ +export interface LanguageModelV3ToolApprovalResponsePart { + type: 'tool-approval-response'; + + /** + * ID of the approval request that this response refers to. + */ + approvalId: string; + + /** + * Whether the approval was granted (true) or denied (false). + */ + approved: boolean; + + /** + * Optional reason for approval or denial. + */ + reason?: string; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV3ProviderOptions; +} + +/** + * Result of a tool call. + */ +export type LanguageModelV3ToolResultOutput = + | { + /** + * Text tool output that should be directly sent to the API. + */ + type: 'text'; + value: string; + + /** + * Provider-specific options. + */ + providerOptions?: SharedV3ProviderOptions; + } + | { + type: 'json'; + value: JSONValue; + + /** + * Provider-specific options. + */ + providerOptions?: SharedV3ProviderOptions; + } + | { + /** + * Type when the user has denied the execution of the tool call. + */ + type: 'execution-denied'; + + /** + * Optional reason for the execution denial. + */ + reason?: string; + + /** + * Provider-specific options. + */ + providerOptions?: SharedV3ProviderOptions; + } + | { + type: 'error-text'; + value: string; + + /** + * Provider-specific options. + */ + providerOptions?: SharedV3ProviderOptions; + } + | { + type: 'error-json'; + value: JSONValue; + + /** + * Provider-specific options. + */ + providerOptions?: SharedV3ProviderOptions; + } + | { + type: 'content'; + value: Array< + | { + type: 'text'; + + /** + * Text content. + */ + text: string; + + /** + * Provider-specific options. + */ + providerOptions?: SharedV3ProviderOptions; + } + | { + type: 'file-data'; + + /** + * Base-64 encoded media data. + */ + data: string; + + /** + * IANA media type. + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType: string; + + /** + * Optional filename of the file. + */ + filename?: string; + + /** + * Provider-specific options. + */ + providerOptions?: SharedV3ProviderOptions; + } + | { + type: 'file-url'; + + /** + * URL of the file. + */ + url: string; + + /** + * Provider-specific options. + */ + providerOptions?: SharedV3ProviderOptions; + } + | { + type: 'file-id'; + + /** + * ID of the file. + * + * If you use multiple providers, you need to + * specify the provider specific ids using + * the Record option. The key is the provider + * name, e.g. 'openai' or 'anthropic'. + */ + fileId: string | Record; + + /** + * Provider-specific options. + */ + providerOptions?: SharedV3ProviderOptions; + } + | { + /** + * Images that are referenced using base64 encoded data. + */ + type: 'image-data'; + + /** + * Base-64 encoded image data. + */ + data: string; + + /** + * IANA media type. + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType: string; + + /** + * Provider-specific options. + */ + providerOptions?: SharedV3ProviderOptions; + } + | { + /** + * Images that are referenced using a URL. + */ + type: 'image-url'; + + /** + * URL of the image. + */ + url: string; + + /** + * Provider-specific options. + */ + providerOptions?: SharedV3ProviderOptions; + } + | { + /** + * Images that are referenced using a provider file id. + */ + type: 'image-file-id'; + + /** + * Image that is referenced using a provider file id. + * + * If you use multiple providers, you need to + * specify the provider specific ids using + * the Record option. The key is the provider + * name, e.g. 'openai' or 'anthropic'. + */ + fileId: string | Record; + + /** + * Provider-specific options. + */ + providerOptions?: SharedV3ProviderOptions; + } + | { + /** + * Custom content part. This can be used to implement + * provider-specific content parts. + */ + type: 'custom'; + + /** + * Provider-specific options. + */ + providerOptions?: SharedV3ProviderOptions; + } + >; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-provider-tool.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-provider-tool.ts new file mode 100644 index 000000000..4520aa7fc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-provider-tool.ts @@ -0,0 +1,28 @@ +/** + * The configuration of a provider tool. + * + * Provider tools are tools that are specific to a certain provider. + * The input and output schemas are defined be the provider, and + * some of the tools are also executed on the provider systems. + */ +export type LanguageModelV3ProviderTool = { + /** + * The type of the tool (always 'provider'). + */ + type: 'provider'; + + /** + * The ID of the tool. Should follow the format `.`. + */ + id: `${string}.${string}`; + + /** + * The name of the tool. Unique within this model call. + */ + name: string; + + /** + * The arguments for configuring the tool. Must match the expected arguments defined by the provider for this tool. + */ + args: Record; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-reasoning.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-reasoning.ts new file mode 100644 index 000000000..af55926a6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-reasoning.ts @@ -0,0 +1,14 @@ +import { SharedV3ProviderMetadata } from '../../shared'; + +/** + * Reasoning that the model has generated. + */ +export type LanguageModelV3Reasoning = { + type: 'reasoning'; + text: string; + + /** + * Optional provider-specific metadata for the reasoning part. + */ + providerMetadata?: SharedV3ProviderMetadata; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-response-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-response-metadata.ts new file mode 100644 index 000000000..b862e3584 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-response-metadata.ts @@ -0,0 +1,16 @@ +export interface LanguageModelV3ResponseMetadata { + /** + * ID for the generated response, if the provider sends one. + */ + id?: string; + + /** + * Timestamp for the start of the generated response, if the provider sends one. + */ + timestamp?: Date; + + /** + * The ID of the response model that was used to generate the response, if the provider sends one. + */ + modelId?: string; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-source.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-source.ts new file mode 100644 index 000000000..67d14082c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-source.ts @@ -0,0 +1,67 @@ +import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata'; + +/** + * A source that has been used as input to generate the response. + */ +export type LanguageModelV3Source = + | { + type: 'source'; + + /** + * The type of source - URL sources reference web content. + */ + sourceType: 'url'; + + /** + * The ID of the source. + */ + id: string; + + /** + * The URL of the source. + */ + url: string; + + /** + * The title of the source. + */ + title?: string; + + /** + * Additional provider metadata for the source. + */ + providerMetadata?: SharedV3ProviderMetadata; + } + | { + type: 'source'; + + /** + * The type of source - document sources reference files/documents. + */ + sourceType: 'document'; + + /** + * The ID of the source. + */ + id: string; + + /** + * IANA media type of the document (e.g., 'application/pdf'). + */ + mediaType: string; + + /** + * The title of the document. + */ + title: string; + + /** + * Optional filename of the document. + */ + filename?: string; + + /** + * Additional provider metadata for the source. + */ + providerMetadata?: SharedV3ProviderMetadata; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-stream-part.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-stream-part.ts new file mode 100644 index 000000000..f7915c438 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-stream-part.ts @@ -0,0 +1,106 @@ +import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata'; +import { SharedV3Warning } from '../../shared/v3/shared-v3-warning'; +import { LanguageModelV3File } from './language-model-v3-file'; +import { LanguageModelV3FinishReason } from './language-model-v3-finish-reason'; +import { LanguageModelV3ResponseMetadata } from './language-model-v3-response-metadata'; +import { LanguageModelV3Source } from './language-model-v3-source'; +import { LanguageModelV3ToolApprovalRequest } from './language-model-v3-tool-approval-request'; +import { LanguageModelV3ToolCall } from './language-model-v3-tool-call'; +import { LanguageModelV3ToolResult } from './language-model-v3-tool-result'; +import { LanguageModelV3Usage } from './language-model-v3-usage'; + +export type LanguageModelV3StreamPart = + // Text blocks: + | { + type: 'text-start'; + providerMetadata?: SharedV3ProviderMetadata; + id: string; + } + | { + type: 'text-delta'; + id: string; + providerMetadata?: SharedV3ProviderMetadata; + delta: string; + } + | { + type: 'text-end'; + providerMetadata?: SharedV3ProviderMetadata; + id: string; + } + + // Reasoning blocks: + | { + type: 'reasoning-start'; + providerMetadata?: SharedV3ProviderMetadata; + id: string; + } + | { + type: 'reasoning-delta'; + id: string; + providerMetadata?: SharedV3ProviderMetadata; + delta: string; + } + | { + type: 'reasoning-end'; + id: string; + providerMetadata?: SharedV3ProviderMetadata; + } + + // Tool calls and results: + | { + type: 'tool-input-start'; + id: string; + toolName: string; + providerMetadata?: SharedV3ProviderMetadata; + providerExecuted?: boolean; + dynamic?: boolean; + title?: string; + } + | { + type: 'tool-input-delta'; + id: string; + delta: string; + providerMetadata?: SharedV3ProviderMetadata; + } + | { + type: 'tool-input-end'; + id: string; + providerMetadata?: SharedV3ProviderMetadata; + } + | LanguageModelV3ToolApprovalRequest + | LanguageModelV3ToolCall + | LanguageModelV3ToolResult + + // Files and sources: + | LanguageModelV3File + | LanguageModelV3Source + + // stream start event with warnings for the call, e.g. unsupported settings: + | { + type: 'stream-start'; + warnings: Array; + } + + // metadata for the response. + // separate stream part so it can be sent once it is available. + | ({ type: 'response-metadata' } & LanguageModelV3ResponseMetadata) + + // metadata that is available after the stream is finished: + | { + type: 'finish'; + usage: LanguageModelV3Usage; + finishReason: LanguageModelV3FinishReason; + providerMetadata?: SharedV3ProviderMetadata; + } + + // raw chunks if enabled + | { + type: 'raw'; + rawValue: unknown; + } + + // error parts are streamed, allowing for multiple errors + | { + type: 'error'; + error: unknown; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-stream-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-stream-result.ts new file mode 100644 index 000000000..c9ed38907 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-stream-result.ts @@ -0,0 +1,32 @@ +import { SharedV3Headers } from '../../shared'; +import { LanguageModelV3StreamPart } from './language-model-v3-stream-part'; + +/** + * The result of a language model doStream call. + */ +export type LanguageModelV3StreamResult = { + /** + * The stream. + */ + stream: ReadableStream; + + /** + * Optional request information for telemetry and debugging purposes. + */ + request?: { + /** + * Request HTTP body that was sent to the provider API. + */ + body?: unknown; + }; + + /** + * Optional response data. + */ + response?: { + /** + * Response headers. + */ + headers?: SharedV3Headers; + }; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-text.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-text.ts new file mode 100644 index 000000000..a4adf690d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-text.ts @@ -0,0 +1,15 @@ +import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata'; + +/** + * Text that the model has generated. + */ +export type LanguageModelV3Text = { + type: 'text'; + + /** + * The text content. + */ + text: string; + + providerMetadata?: SharedV3ProviderMetadata; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-approval-request.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-approval-request.ts new file mode 100644 index 000000000..92c694933 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-approval-request.ts @@ -0,0 +1,27 @@ +import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata'; + +/** + * Tool approval request emitted by a provider for a provider-executed tool call. + * + * This is used for flows where the provider executes the tool (e.g. MCP tools) + * but requires an explicit user approval before continuing. + */ +export type LanguageModelV3ToolApprovalRequest = { + type: 'tool-approval-request'; + + /** + * ID of the approval request. This ID is referenced by the subsequent + * tool-approval-response (tool message) to approve or deny execution. + */ + approvalId: string; + + /** + * The tool call ID that this approval request is for. + */ + toolCallId: string; + + /** + * Additional provider-specific metadata for the approval request. + */ + providerMetadata?: SharedV3ProviderMetadata; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-call.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-call.ts new file mode 100644 index 000000000..66f7502e3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-call.ts @@ -0,0 +1,41 @@ +import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata'; + +/** + * Tool calls that the model has generated. + */ +export type LanguageModelV3ToolCall = { + type: 'tool-call'; + + /** + * The identifier of the tool call. It must be unique across all tool calls. + */ + toolCallId: string; + + /** + * The name of the tool that should be called. + */ + toolName: string; + + /** + * Stringified JSON object with the tool call arguments. Must match the + * parameters schema of the tool. + */ + input: string; + + /** + * Whether the tool call will be executed by the provider. + * If this flag is not set or is false, the tool call will be executed by the client. + */ + providerExecuted?: boolean; + + /** + * Whether the tool is dynamic, i.e. defined at runtime. + * For example, MCP (Model Context Protocol) tools that are executed by the provider. + */ + dynamic?: boolean; + + /** + * Additional provider-specific metadata for the tool call. + */ + providerMetadata?: SharedV3ProviderMetadata; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-choice.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-choice.ts new file mode 100644 index 000000000..3d386036e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-choice.ts @@ -0,0 +1,5 @@ +export type LanguageModelV3ToolChoice = + | { type: 'auto' } // the tool selection is automatic (can be no tool) + | { type: 'none' } // no tool must be selected + | { type: 'required' } // one of the available tools must be selected + | { type: 'tool'; toolName: string }; // a specific tool must be selected: diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-result.ts new file mode 100644 index 000000000..b53b7f141 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-tool-result.ts @@ -0,0 +1,51 @@ +import { JSONValue } from '../../json-value'; +import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata'; + +/** + * Result of a tool call that has been executed by the provider. + */ +export type LanguageModelV3ToolResult = { + type: 'tool-result'; + + /** + * The ID of the tool call that this result is associated with. + */ + toolCallId: string; + + /** + * Name of the tool that generated this result. + */ + toolName: string; + + /** + * Result of the tool call. This is a JSON-serializable object. + */ + result: NonNullable; + + /** + * Optional flag if the result is an error or an error message. + */ + isError?: boolean; + + /** + * Whether the tool result is preliminary. + * + * Preliminary tool results replace each other, e.g. image previews. + * There always has to be a final, non-preliminary tool result. + * + * If this flag is set to true, the tool result is preliminary. + * If this flag is not set or is false, the tool result is not preliminary. + */ + preliminary?: boolean; + + /** + * Whether the tool is dynamic, i.e. defined at runtime. + * For example, MCP (Model Context Protocol) tools that are executed by the provider. + */ + dynamic?: boolean; + + /** + * Additional provider-specific metadata for the tool result. + */ + providerMetadata?: SharedV3ProviderMetadata; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-usage.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-usage.ts new file mode 100644 index 000000000..b43bfdde3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3-usage.ts @@ -0,0 +1,59 @@ +import { JSONObject } from '../../json-value'; + +/** + * Usage information for a language model call. + */ +export type LanguageModelV3Usage = { + /** + * Information about the input tokens. + */ + inputTokens: { + /** + * The total number of input (prompt) tokens used. + */ + total: number | undefined; + + /** + * The number of non-cached input (prompt) tokens used. + */ + noCache: number | undefined; + + /** + * The number of cached input (prompt) tokens read. + */ + cacheRead: number | undefined; + + /** + * The number of cached input (prompt) tokens written. + */ + cacheWrite: number | undefined; + }; + + /** + * Information about the output tokens. + */ + outputTokens: { + /** + * The total number of output (completion) tokens used. + */ + total: number | undefined; + + /** + * The number of text tokens used. + */ + text: number | undefined; + + /** + * The number of reasoning tokens used. + */ + reasoning: number | undefined; + }; + + /** + * Raw usage information from the provider. + * + * This is the usage information in the shape that the provider returns. + * It can include additional information that is not part of the standard usage information. + */ + raw?: JSONObject; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3.ts new file mode 100644 index 000000000..4021d3dec --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/language-model/v3/language-model-v3.ts @@ -0,0 +1,61 @@ +import { LanguageModelV3CallOptions } from './language-model-v3-call-options'; +import { LanguageModelV3GenerateResult } from './language-model-v3-generate-result'; +import { LanguageModelV3StreamResult } from './language-model-v3-stream-result'; + +/** + * Specification for a language model that implements the language model interface version 3. + */ +export type LanguageModelV3 = { + /** + * The language model must specify which language model interface version it implements. + */ + readonly specificationVersion: 'v3'; + + /** + * Provider ID. + */ + readonly provider: string; + + /** + * Provider-specific model ID. + */ + readonly modelId: string; + + /** + * Supported URL patterns by media type for the provider. + * + * The keys are media type patterns or full media types (e.g. `*\/*` for everything, `audio/*`, `video/*`, or `application/pdf`). + * and the values are arrays of regular expressions that match the URL paths. + * + * The matching should be against lower-case URLs. + * + * Matched URLs are supported natively by the model and are not downloaded. + * + * @returns A map of supported URL patterns by media type (as a promise or a plain object). + */ + supportedUrls: + | PromiseLike> + | Record; + + /** + * Generates a language model output (non-streaming). + + * Naming: "do" prefix to prevent accidental direct usage of the method + * by the user. + */ + doGenerate( + options: LanguageModelV3CallOptions, + ): PromiseLike; + + /** + * Generates a language model output (streaming). + * + * Naming: "do" prefix to prevent accidental direct usage of the method + * by the user. + * + * @return A stream of higher-level language model output parts. + */ + doStream( + options: LanguageModelV3CallOptions, + ): PromiseLike; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/index.ts new file mode 100644 index 000000000..f0a4a20cc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/index.ts @@ -0,0 +1,2 @@ +export * from './v3/index'; +export * from './v2/index'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v2/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v2/index.ts new file mode 100644 index 000000000..08d9d6c4b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v2/index.ts @@ -0,0 +1 @@ +export type { ProviderV2 } from './provider-v2'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v2/provider-v2.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v2/provider-v2.ts new file mode 100644 index 000000000..8b8d8ec13 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v2/provider-v2.ts @@ -0,0 +1,64 @@ +import { EmbeddingModelV2 } from '../../embedding-model/v2/embedding-model-v2'; +import { ImageModelV2 } from '../../image-model/v2/image-model-v2'; +import { LanguageModelV2 } from '../../language-model/v2/language-model-v2'; +import { SpeechModelV2 } from '../../speech-model/v2/speech-model-v2'; +import { TranscriptionModelV2 } from '../../transcription-model/v2/transcription-model-v2'; + +/** + * Provider for language, text embedding, and image generation models. + */ +export interface ProviderV2 { + /** + * Returns the language model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {LanguageModel} The language model associated with the id + * + * @throws {NoSuchModelError} If no such model exists. + */ + languageModel(modelId: string): LanguageModelV2; + + /** + * Returns the text embedding model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {LanguageModel} The language model associated with the id + * + * @throws {NoSuchModelError} If no such model exists. + */ + textEmbeddingModel(modelId: string): EmbeddingModelV2; + + /** + * Returns the image model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {ImageModel} The image model associated with the id + */ + imageModel(modelId: string): ImageModelV2; + + /** + * Returns the transcription model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {TranscriptionModel} The transcription model associated with the id + */ + transcriptionModel?(modelId: string): TranscriptionModelV2; + + /** + * Returns the speech model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {SpeechModel} The speech model associated with the id + */ + speechModel?(modelId: string): SpeechModelV2; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v3/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v3/index.ts new file mode 100644 index 000000000..23561cb54 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v3/index.ts @@ -0,0 +1 @@ +export type { ProviderV3 } from './provider-v3'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v3/provider-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v3/provider-v3.ts new file mode 100644 index 000000000..98fc5a9b5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/provider/v3/provider-v3.ts @@ -0,0 +1,93 @@ +import { EmbeddingModelV3 } from '../../embedding-model/v3/embedding-model-v3'; +import { ImageModelV3 } from '../../image-model/v3/image-model-v3'; +import { LanguageModelV3 } from '../../language-model/v3/language-model-v3'; +import { RerankingModelV3 } from '../../reranking-model/v3/reranking-model-v3'; +import { SpeechModelV3 } from '../../speech-model/v3/speech-model-v3'; +import { TranscriptionModelV3 } from '../../transcription-model/v3/transcription-model-v3'; + +/** + * Provider for language, text embedding, and image generation models. + */ +export interface ProviderV3 { + readonly specificationVersion: 'v3'; + + /** + * Returns the language model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {LanguageModel} The language model associated with the id + * + * @throws {NoSuchModelError} If no such model exists. + */ + languageModel(modelId: string): LanguageModelV3; + + /** + * Returns the text embedding model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {LanguageModel} The language model associated with the id + * + * @throws {NoSuchModelError} If no such model exists. + */ + embeddingModel(modelId: string): EmbeddingModelV3; + + /** + * Returns the text embedding model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {EmbeddingModel} The embedding model associated with the id + * + * @throws {NoSuchModelError} If no such model exists. + * + * @deprecated Use `embeddingModel` instead. + */ + textEmbeddingModel?(modelId: string): EmbeddingModelV3; + + /** + * Returns the image model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {ImageModel} The image model associated with the id + */ + imageModel(modelId: string): ImageModelV3; + + /** + * Returns the transcription model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {TranscriptionModel} The transcription model associated with the id + */ + transcriptionModel?(modelId: string): TranscriptionModelV3; + + /** + * Returns the speech model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {SpeechModel} The speech model associated with the id + */ + speechModel?(modelId: string): SpeechModelV3; + + /** + * Returns the reranking model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {RerankingModel} The reranking model associated with the id + * + * @throws {NoSuchModelError} If no such model exists. + */ + rerankingModel?(modelId: string): RerankingModelV3; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/index.ts new file mode 100644 index 000000000..ca7b39f38 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/index.ts @@ -0,0 +1 @@ +export * from './v3/index'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/v3/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/v3/index.ts new file mode 100644 index 000000000..9d54b9093 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/v3/index.ts @@ -0,0 +1,2 @@ +export type { RerankingModelV3 } from './reranking-model-v3'; +export type { RerankingModelV3CallOptions } from './reranking-model-v3-call-options'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/v3/reranking-model-v3-call-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/v3/reranking-model-v3-call-options.ts new file mode 100644 index 000000000..8fd464664 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/v3/reranking-model-v3-call-options.ts @@ -0,0 +1,40 @@ +import { JSONObject } from '../../json-value'; +import { SharedV3Headers, SharedV3ProviderOptions } from '../../shared/v3'; + +export type RerankingModelV3CallOptions = { + /** + * Documents to rerank. + * Either a list of texts or a list of JSON objects. + */ + documents: + | { type: 'text'; values: string[] } + | { type: 'object'; values: JSONObject[] }; + + /** + * The query is a string that represents the query to rerank the documents against. + */ + query: string; + + /** + * Optional limit returned documents to the top n documents. + */ + topN?: number; + + /** + * Abort signal for cancelling the operation. + */ + abortSignal?: AbortSignal; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: SharedV3ProviderOptions; + + /** + * Additional HTTP headers to be sent with the request. + * Only applicable for HTTP-based providers. + */ + headers?: SharedV3Headers; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/v3/reranking-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/v3/reranking-model-v3.ts new file mode 100644 index 000000000..3c403a997 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/reranking-model/v3/reranking-model-v3.ts @@ -0,0 +1,90 @@ +import { + SharedV3Headers, + SharedV3ProviderMetadata, + SharedV3Warning, +} from '../../shared/v3/'; +import { RerankingModelV3CallOptions } from './reranking-model-v3-call-options'; + +/** + * Specification for a reranking model that implements the reranking model interface version 3. + */ +export type RerankingModelV3 = { + /** + * The reranking model must specify which reranking model interface version it implements. + */ + readonly specificationVersion: 'v3'; + + /** + * Provider ID. + */ + readonly provider: string; + + /** + * Provider-specific model ID. + */ + readonly modelId: string; + + /** + * Reranking a list of documents using the query. + */ + // Naming: "do" prefix to prevent accidental direct usage of the method by the user. + doRerank(options: RerankingModelV3CallOptions): PromiseLike<{ + /** + * Ordered list of reranked documents (via index before reranking). + * The documents are sorted by the descending order of relevance scores. + */ + ranking: Array<{ + /** + * The index of the document in the original list of documents before reranking. + */ + index: number; + + /** + * The relevance score of the document after reranking. + */ + relevanceScore: number; + }>; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerMetadata?: SharedV3ProviderMetadata; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + warnings?: Array; + + /** + * Optional response information for debugging purposes. + */ + response?: { + /** + * ID for the generated response, if the provider sends one. + */ + id?: string; + + /** + * Timestamp for the start of the generated response, if the provider sends one. + */ + timestamp?: Date; + + /** + * The ID of the response model that was used to generate the response, if the provider sends one. + */ + modelId?: string; + + /** + * Response headers. + */ + headers?: SharedV3Headers; + + /** + * Response body. + */ + body?: unknown; + }; + }>; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/index.ts new file mode 100644 index 000000000..f0a4a20cc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/index.ts @@ -0,0 +1,2 @@ +export * from './v3/index'; +export * from './v2/index'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/index.ts new file mode 100644 index 000000000..e41d84a34 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/index.ts @@ -0,0 +1,3 @@ +export * from './shared-v2-headers'; +export * from './shared-v2-provider-metadata'; +export * from './shared-v2-provider-options'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/shared-v2-headers.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/shared-v2-headers.ts new file mode 100644 index 000000000..4be7da5c1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/shared-v2-headers.ts @@ -0,0 +1 @@ +export type SharedV2Headers = Record; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/shared-v2-provider-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/shared-v2-provider-metadata.ts new file mode 100644 index 000000000..c3b880ca4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/shared-v2-provider-metadata.ts @@ -0,0 +1,27 @@ +import { JSONValue } from '../../json-value/json-value'; + +/** + * Additional provider-specific metadata. + * Metadata are additional outputs from the provider. + * They are passed through to the provider from the AI SDK + * and enable provider-specific functionality + * that can be fully encapsulated in the provider. + * + * This enables us to quickly ship provider-specific functionality + * without affecting the core AI SDK. + * + * The outer record is keyed by the provider name, and the inner + * record is keyed by the provider-specific metadata key. + * + * ```ts + * { + * "anthropic": { + * "cacheControl": { "type": "ephemeral" } + * } + * } + * ``` + */ +export type SharedV2ProviderMetadata = Record< + string, + Record +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/shared-v2-provider-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/shared-v2-provider-options.ts new file mode 100644 index 000000000..17c8c947c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v2/shared-v2-provider-options.ts @@ -0,0 +1,24 @@ +import { JSONValue } from '../../json-value/json-value'; + +/** + * Additional provider-specific options. + * Options are additional input to the provider. + * They are passed through to the provider from the AI SDK + * and enable provider-specific functionality + * that can be fully encapsulated in the provider. + * + * This enables us to quickly ship provider-specific functionality + * without affecting the core AI SDK. + * + * The outer record is keyed by the provider name, and the inner + * record is keyed by the provider-specific metadata key. + * + * ```ts + * { + * "anthropic": { + * "cacheControl": { "type": "ephemeral" } + * } + * } + * ``` + */ +export type SharedV2ProviderOptions = Record>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/index.ts new file mode 100644 index 000000000..4abdc44b3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/index.ts @@ -0,0 +1,4 @@ +export * from './shared-v3-headers'; +export * from './shared-v3-provider-metadata'; +export * from './shared-v3-provider-options'; +export * from './shared-v3-warning'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-headers.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-headers.ts new file mode 100644 index 000000000..02046309b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-headers.ts @@ -0,0 +1 @@ +export type SharedV3Headers = Record; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-provider-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-provider-metadata.ts new file mode 100644 index 000000000..635ab8fff --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-provider-metadata.ts @@ -0,0 +1,24 @@ +import { JSONObject } from '../../json-value/json-value'; + +/** + * Additional provider-specific metadata. + * Metadata are additional outputs from the provider. + * They are passed through to the provider from the AI SDK + * and enable provider-specific functionality + * that can be fully encapsulated in the provider. + * + * This enables us to quickly ship provider-specific functionality + * without affecting the core AI SDK. + * + * The outer record is keyed by the provider name, and the inner + * record is keyed by the provider-specific metadata key. + * + * ```ts + * { + * "anthropic": { + * "cacheControl": { "type": "ephemeral" } + * } + * } + * ``` + */ +export type SharedV3ProviderMetadata = Record; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-provider-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-provider-options.ts new file mode 100644 index 000000000..0d35c67ed --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-provider-options.ts @@ -0,0 +1,24 @@ +import { JSONObject } from '../../json-value/json-value'; + +/** + * Additional provider-specific options. + * Options are additional input to the provider. + * They are passed through to the provider from the AI SDK + * and enable provider-specific functionality + * that can be fully encapsulated in the provider. + * + * This enables us to quickly ship provider-specific functionality + * without affecting the core AI SDK. + * + * The outer record is keyed by the provider name, and the inner + * record is keyed by the provider-specific metadata key. + * + * ```ts + * { + * "anthropic": { + * "cacheControl": { "type": "ephemeral" } + * } + * } + * ``` + */ +export type SharedV3ProviderOptions = Record; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-warning.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-warning.ts new file mode 100644 index 000000000..1625a1c36 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/shared/v3/shared-v3-warning.ts @@ -0,0 +1,50 @@ +/** + * Warning from the model. + * + * For example, that certain features are unsupported or compatibility + * functionality is used (which might lead to suboptimal results). + */ +export type SharedV3Warning = + | { + /** + * A feature is not supported by the model. + */ + type: 'unsupported'; + + /** + * The feature that is not supported. + */ + feature: string; + + /** + * Additional details about the warning. + */ + details?: string; + } + | { + /** + * A compatibility feature is used that might lead to suboptimal results. + */ + type: 'compatibility'; + + /** + * The feature that is used in a compatibility mode. + */ + feature: string; + + /** + * Additional details about the warning. + */ + details?: string; + } + | { + /** + * Other warning. + */ + type: 'other'; + + /** + * The message of the warning. + */ + message: string; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/index.ts new file mode 100644 index 000000000..cc2132526 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/index.ts @@ -0,0 +1,2 @@ +export * from './v2/index'; +export * from './v3/index'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/index.ts new file mode 100644 index 000000000..548bb0dba --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/index.ts @@ -0,0 +1,3 @@ +export type { SpeechModelV2 } from './speech-model-v2'; +export type { SpeechModelV2CallOptions } from './speech-model-v2-call-options'; +export type { SpeechModelV2CallWarning } from './speech-model-v2-call-warning'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/speech-model-v2-call-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/speech-model-v2-call-options.ts new file mode 100644 index 000000000..94c2158a0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/speech-model-v2-call-options.ts @@ -0,0 +1,62 @@ +import { JSONValue } from '../../json-value/json-value'; + +type SpeechModelV2ProviderOptions = Record>; + +export type SpeechModelV2CallOptions = { + /** + * Text to convert to speech. + */ + text: string; + + /** + * The voice to use for speech synthesis. + * This is provider-specific and may be a voice ID, name, or other identifier. + */ + voice?: string; + + /** + * The desired output format for the audio e.g. "mp3", "wav", etc. + */ + outputFormat?: string; + + /** + * Instructions for the speech generation e.g. "Speak in a slow and steady tone". + */ + instructions?: string; + + /** + * The speed of the speech generation. + */ + speed?: number; + + /** + * The language for speech generation. This should be an ISO 639-1 language code (e.g. "en", "es", "fr") + * or "auto" for automatic language detection. Provider support varies. + */ + language?: string; + + /** + * Additional provider-specific options that are passed through to the provider + * as body parameters. + * + * The outer record is keyed by the provider name, and the inner + * record is keyed by the provider-specific metadata key. + * ```ts + * { + * "openai": {} + * } + * ``` + */ + providerOptions?: SpeechModelV2ProviderOptions; + + /** + * Abort signal for cancelling the operation. + */ + abortSignal?: AbortSignal; + + /** + * Additional HTTP headers to be sent with the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/speech-model-v2-call-warning.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/speech-model-v2-call-warning.ts new file mode 100644 index 000000000..95aa718f4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/speech-model-v2-call-warning.ts @@ -0,0 +1,16 @@ +import { SpeechModelV2CallOptions } from './speech-model-v2-call-options'; + +/** + * Warning from the model provider for this call. The call will proceed, but e.g. + * some settings might not be supported, which can lead to suboptimal results. + */ +export type SpeechModelV2CallWarning = + | { + type: 'unsupported-setting'; + setting: keyof SpeechModelV2CallOptions; + details?: string; + } + | { + type: 'other'; + message: string; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/speech-model-v2.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/speech-model-v2.ts new file mode 100644 index 000000000..ba6992b52 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v2/speech-model-v2.ts @@ -0,0 +1,89 @@ +import { JSONValue } from '../../json-value'; +import { SharedV2Headers } from '../../shared'; +import { SpeechModelV2CallOptions } from './speech-model-v2-call-options'; +import { SpeechModelV2CallWarning } from './speech-model-v2-call-warning'; + +/** + * Speech model specification version 2. + */ +export type SpeechModelV2 = { + /** + * The speech model must specify which speech model interface + * version it implements. This will allow us to evolve the speech + * model interface and retain backwards compatibility. The different + * implementation versions can be handled as a discriminated union + * on our side. + */ + readonly specificationVersion: 'v2'; + + /** + * Name of the provider for logging purposes. + */ + readonly provider: string; + + /** + * Provider-specific model ID for logging purposes. + */ + readonly modelId: string; + + /** + * Generates speech audio from text. + */ + doGenerate(options: SpeechModelV2CallOptions): PromiseLike<{ + /** + * Generated audio as an ArrayBuffer. + * The audio should be returned without any unnecessary conversion. + * If the API returns base64 encoded strings, the audio should be returned + * as base64 encoded strings. If the API returns binary data, the audio + * should be returned as binary data. + */ + audio: string | Uint8Array; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + warnings: Array; + + /** + * Optional request information for telemetry and debugging purposes. + */ + request?: { + /** + * Response body (available only for providers that use HTTP requests). + */ + body?: unknown; + }; + + /** + * Response information for telemetry and debugging purposes. + */ + response: { + /** + * Timestamp for the start of the generated response. + */ + timestamp: Date; + + /** + * The ID of the response model that was used to generate the response. + */ + modelId: string; + + /** + * Response headers. + */ + headers?: SharedV2Headers; + + /** + * Response body. + */ + body?: unknown; + }; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + */ + providerMetadata?: Record>; + }>; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v3/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v3/index.ts new file mode 100644 index 000000000..f35147e71 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v3/index.ts @@ -0,0 +1,2 @@ +export type { SpeechModelV3 } from './speech-model-v3'; +export type { SpeechModelV3CallOptions } from './speech-model-v3-call-options'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v3/speech-model-v3-call-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v3/speech-model-v3-call-options.ts new file mode 100644 index 000000000..39119b3da --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v3/speech-model-v3-call-options.ts @@ -0,0 +1,62 @@ +import { JSONObject } from '../../json-value/json-value'; + +type SpeechModelV3ProviderOptions = Record; + +export type SpeechModelV3CallOptions = { + /** + * Text to convert to speech. + */ + text: string; + + /** + * The voice to use for speech synthesis. + * This is provider-specific and may be a voice ID, name, or other identifier. + */ + voice?: string; + + /** + * The desired output format for the audio e.g. "mp3", "wav", etc. + */ + outputFormat?: string; + + /** + * Instructions for the speech generation e.g. "Speak in a slow and steady tone". + */ + instructions?: string; + + /** + * The speed of the speech generation. + */ + speed?: number; + + /** + * The language for speech generation. This should be an ISO 639-1 language code (e.g. "en", "es", "fr") + * or "auto" for automatic language detection. Provider support varies. + */ + language?: string; + + /** + * Additional provider-specific options that are passed through to the provider + * as body parameters. + * + * The outer record is keyed by the provider name, and the inner + * record is keyed by the provider-specific metadata key. + * ```ts + * { + * "openai": {} + * } + * ``` + */ + providerOptions?: SpeechModelV3ProviderOptions; + + /** + * Abort signal for cancelling the operation. + */ + abortSignal?: AbortSignal; + + /** + * Additional HTTP headers to be sent with the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v3/speech-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v3/speech-model-v3.ts new file mode 100644 index 000000000..65794e385 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/speech-model/v3/speech-model-v3.ts @@ -0,0 +1,89 @@ +import { JSONObject } from '../../json-value'; +import { SharedV2Headers } from '../../shared'; +import { SharedV3Warning } from '../../shared/v3/shared-v3-warning'; +import { SpeechModelV3CallOptions } from './speech-model-v3-call-options'; + +/** + * Speech model specification version 3. + */ +export type SpeechModelV3 = { + /** + * The speech model must specify which speech model interface + * version it implements. This will allow us to evolve the speech + * model interface and retain backwards compatibility. The different + * implementation versions can be handled as a discriminated union + * on our side. + */ + readonly specificationVersion: 'v3'; + + /** + * Name of the provider for logging purposes. + */ + readonly provider: string; + + /** + * Provider-specific model ID for logging purposes. + */ + readonly modelId: string; + + /** + * Generates speech audio from text. + */ + doGenerate(options: SpeechModelV3CallOptions): PromiseLike<{ + /** + * Generated audio as an ArrayBuffer. + * The audio should be returned without any unnecessary conversion. + * If the API returns base64 encoded strings, the audio should be returned + * as base64 encoded strings. If the API returns binary data, the audio + * should be returned as binary data. + */ + audio: string | Uint8Array; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + warnings: Array; + + /** + * Optional request information for telemetry and debugging purposes. + */ + request?: { + /** + * Response body (available only for providers that use HTTP requests). + */ + body?: unknown; + }; + + /** + * Response information for telemetry and debugging purposes. + */ + response: { + /** + * Timestamp for the start of the generated response. + */ + timestamp: Date; + + /** + * The ID of the response model that was used to generate the response. + */ + modelId: string; + + /** + * Response headers. + */ + headers?: SharedV2Headers; + + /** + * Response body. + */ + body?: unknown; + }; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + */ + providerMetadata?: Record; + }>; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/index.ts new file mode 100644 index 000000000..cc2132526 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/index.ts @@ -0,0 +1,2 @@ +export * from './v2/index'; +export * from './v3/index'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/index.ts new file mode 100644 index 000000000..ca92d8d1c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/index.ts @@ -0,0 +1,3 @@ +export type { TranscriptionModelV2 } from './transcription-model-v2'; +export type { TranscriptionModelV2CallOptions } from './transcription-model-v2-call-options'; +export type { TranscriptionModelV2CallWarning } from './transcription-model-v2-call-warning'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/transcription-model-v2-call-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/transcription-model-v2-call-options.ts new file mode 100644 index 000000000..b79facbc4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/transcription-model-v2-call-options.ts @@ -0,0 +1,48 @@ +import { JSONValue } from '../../json-value/json-value'; + +type TranscriptionModelV2ProviderOptions = Record< + string, + Record +>; + +export type TranscriptionModelV2CallOptions = { + /** + * Audio data to transcribe. + * Accepts a `Uint8Array` or `string`, where `string` is a base64 encoded audio file. + */ + audio: Uint8Array | string; + + /** + * The IANA media type of the audio data. + * + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType: string; + + /** + * Additional provider-specific options that are passed through to the provider + * as body parameters. + * + * The outer record is keyed by the provider name, and the inner + * record is keyed by the provider-specific metadata key. + * ```ts + * { + * "openai": { + * "timestampGranularities": ["word"] + * } + * } + * ``` + */ + providerOptions?: TranscriptionModelV2ProviderOptions; + + /** + * Abort signal for cancelling the operation. + */ + abortSignal?: AbortSignal; + + /** + * Additional HTTP headers to be sent with the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/transcription-model-v2-call-warning.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/transcription-model-v2-call-warning.ts new file mode 100644 index 000000000..b06780f60 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/transcription-model-v2-call-warning.ts @@ -0,0 +1,16 @@ +import { TranscriptionModelV2CallOptions } from './transcription-model-v2-call-options'; + +/** + * Warning from the model provider for this call. The call will proceed, but e.g. + * some settings might not be supported, which can lead to suboptimal results. + */ +export type TranscriptionModelV2CallWarning = + | { + type: 'unsupported-setting'; + setting: keyof TranscriptionModelV2CallOptions; + details?: string; + } + | { + type: 'other'; + message: string; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/transcription-model-v2.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/transcription-model-v2.ts new file mode 100644 index 000000000..28da8e735 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v2/transcription-model-v2.ts @@ -0,0 +1,117 @@ +import { JSONValue } from '../../json-value'; +import { SharedV2Headers } from '../../shared'; +import { TranscriptionModelV2CallOptions } from './transcription-model-v2-call-options'; +import { TranscriptionModelV2CallWarning } from './transcription-model-v2-call-warning'; + +/** + * Transcription model specification version 2. + */ +export type TranscriptionModelV2 = { + /** + * The transcription model must specify which transcription model interface + * version it implements. This will allow us to evolve the transcription + * model interface and retain backwards compatibility. The different + * implementation versions can be handled as a discriminated union + * on our side. + */ + readonly specificationVersion: 'v2'; + + /** + * Name of the provider for logging purposes. + */ + readonly provider: string; + + /** + * Provider-specific model ID for logging purposes. + */ + readonly modelId: string; + + /** + * Generates a transcript. + */ + doGenerate(options: TranscriptionModelV2CallOptions): PromiseLike<{ + /** + * The complete transcribed text from the audio. + */ + text: string; + + /** + * Array of transcript segments with timing information. + * Each segment represents a portion of the transcribed text with start and end times. + */ + segments: Array<{ + /** + * The text content of this segment. + */ + text: string; + /** + * The start time of this segment in seconds. + */ + startSecond: number; + /** + * The end time of this segment in seconds. + */ + endSecond: number; + }>; + + /** + * The detected language of the audio content, as an ISO-639-1 code (e.g., 'en' for English). + * May be undefined if the language couldn't be detected. + */ + language: string | undefined; + + /** + * The total duration of the audio file in seconds. + * May be undefined if the duration couldn't be determined. + */ + durationInSeconds: number | undefined; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + warnings: Array; + + /** + * Optional request information for telemetry and debugging purposes. + */ + request?: { + /** + * Raw request HTTP body that was sent to the provider API as a string (JSON should be stringified). + * Non-HTTP(s) providers should not set this. + */ + body?: string; + }; + + /** + * Response information for telemetry and debugging purposes. + */ + response: { + /** + * Timestamp for the start of the generated response. + */ + timestamp: Date; + + /** + * The ID of the response model that was used to generate the response. + */ + modelId: string; + + /** + * Response headers. + */ + headers?: SharedV2Headers; + + /** + * Response body. + */ + body?: unknown; + }; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + */ + providerMetadata?: Record>; + }>; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v3/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v3/index.ts new file mode 100644 index 000000000..0e2ca820e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v3/index.ts @@ -0,0 +1,2 @@ +export type { TranscriptionModelV3 } from './transcription-model-v3'; +export type { TranscriptionModelV3CallOptions } from './transcription-model-v3-call-options'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v3/transcription-model-v3-call-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v3/transcription-model-v3-call-options.ts new file mode 100644 index 000000000..380745ed1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v3/transcription-model-v3-call-options.ts @@ -0,0 +1,45 @@ +import { JSONObject } from '../../json-value/json-value'; + +type TranscriptionModelV3ProviderOptions = Record; + +export type TranscriptionModelV3CallOptions = { + /** + * Audio data to transcribe. + * Accepts a `Uint8Array` or `string`, where `string` is a base64 encoded audio file. + */ + audio: Uint8Array | string; + + /** + * The IANA media type of the audio data. + * + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType: string; + + /** + * Additional provider-specific options that are passed through to the provider + * as body parameters. + * + * The outer record is keyed by the provider name, and the inner + * record is keyed by the provider-specific metadata key. + * ```ts + * { + * "openai": { + * "timestampGranularities": ["word"] + * } + * } + * ``` + */ + providerOptions?: TranscriptionModelV3ProviderOptions; + + /** + * Abort signal for cancelling the operation. + */ + abortSignal?: AbortSignal; + + /** + * Additional HTTP headers to be sent with the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v3/transcription-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v3/transcription-model-v3.ts new file mode 100644 index 000000000..068155aab --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/transcription-model/v3/transcription-model-v3.ts @@ -0,0 +1,117 @@ +import { JSONObject } from '../../json-value'; +import { SharedV3Headers } from '../../shared'; +import { SharedV3Warning } from '../../shared/v3/shared-v3-warning'; +import { TranscriptionModelV3CallOptions } from './transcription-model-v3-call-options'; + +/** + * Transcription model specification version 3. + */ +export type TranscriptionModelV3 = { + /** + * The transcription model must specify which transcription model interface + * version it implements. This will allow us to evolve the transcription + * model interface and retain backwards compatibility. The different + * implementation versions can be handled as a discriminated union + * on our side. + */ + readonly specificationVersion: 'v3'; + + /** + * Name of the provider for logging purposes. + */ + readonly provider: string; + + /** + * Provider-specific model ID for logging purposes. + */ + readonly modelId: string; + + /** + * Generates a transcript. + */ + doGenerate(options: TranscriptionModelV3CallOptions): PromiseLike<{ + /** + * The complete transcribed text from the audio. + */ + text: string; + + /** + * Array of transcript segments with timing information. + * Each segment represents a portion of the transcribed text with start and end times. + */ + segments: Array<{ + /** + * The text content of this segment. + */ + text: string; + /** + * The start time of this segment in seconds. + */ + startSecond: number; + /** + * The end time of this segment in seconds. + */ + endSecond: number; + }>; + + /** + * The detected language of the audio content, as an ISO-639-1 code (e.g., 'en' for English). + * May be undefined if the language couldn't be detected. + */ + language: string | undefined; + + /** + * The total duration of the audio file in seconds. + * May be undefined if the duration couldn't be determined. + */ + durationInSeconds: number | undefined; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + warnings: Array; + + /** + * Optional request information for telemetry and debugging purposes. + */ + request?: { + /** + * Raw request HTTP body that was sent to the provider API as a string (JSON should be stringified). + * Non-HTTP(s) providers should not set this. + */ + body?: string; + }; + + /** + * Response information for telemetry and debugging purposes. + */ + response: { + /** + * Timestamp for the start of the generated response. + */ + timestamp: Date; + + /** + * The ID of the response model that was used to generate the response. + */ + modelId: string; + + /** + * Response headers. + */ + headers?: SharedV3Headers; + + /** + * Response body. + */ + body?: unknown; + }; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + */ + providerMetadata?: Record; + }>; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/index.ts new file mode 100644 index 000000000..ca7b39f38 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/index.ts @@ -0,0 +1 @@ +export * from './v3/index'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/index.ts new file mode 100644 index 000000000..ee43e873f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/index.ts @@ -0,0 +1,6 @@ +export type { + VideoModelV3 as Experimental_VideoModelV3, + VideoModelV3VideoData as Experimental_VideoModelV3VideoData, +} from './video-model-v3'; +export type { VideoModelV3CallOptions as Experimental_VideoModelV3CallOptions } from './video-model-v3-call-options'; +export type { VideoModelV3File as Experimental_VideoModelV3File } from './video-model-v3-file'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/video-model-v3-call-options.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/video-model-v3-call-options.ts new file mode 100644 index 000000000..032fce073 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/video-model-v3-call-options.ts @@ -0,0 +1,81 @@ +import { SharedV3ProviderOptions } from '../../shared'; +import { VideoModelV3File } from './video-model-v3-file'; + +export type VideoModelV3CallOptions = { + /** + * Text prompt for the video generation. + */ + prompt: string | undefined; + + /** + * Number of videos to generate. Default: 1. + * Most video models only support n=1 due to computational cost. + */ + n: number; + + /** + * Aspect ratio of the videos to generate. + * Must have the format `{width}:{height}`. + * `undefined` will use the provider's default aspect ratio. + * Common values: '16:9', '9:16', '1:1', '21:9', '4:3' + */ + aspectRatio: `${number}:${number}` | undefined; + + /** + * Resolution of the video to generate. + * Format: `{width}x{height}` (e.g., '1280x720', '1920x1080') + * `undefined` will use the provider's default resolution. + */ + resolution: `${number}x${number}` | undefined; + + /** + * Duration of the video in seconds. + * `undefined` will use the provider's default duration. + * Typically 3-10 seconds for most models. + */ + duration: number | undefined; + + /** + * Frames per second (FPS) for the video. + * `undefined` will use the provider's default FPS. + * Common values: 24, 30, 60 + */ + fps: number | undefined; + + /** + * Seed for deterministic video generation. + * `undefined` will use a random seed. + */ + seed: number | undefined; + + /** + * Input image for image-to-video generation. + * The image serves as the starting frame that the model will animate. + */ + image: VideoModelV3File | undefined; + + /** + * Additional provider-specific options that are passed through to the provider + * as body parameters. + * + * Example: + * { + * "fal": { + * "loop": true, + * "motionStrength": 0.8 + * } + * } + */ + providerOptions: SharedV3ProviderOptions; + + /** + * Abort signal for cancelling the operation. + */ + abortSignal?: AbortSignal; + + /** + * Additional HTTP headers to be sent with the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/video-model-v3-file.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/video-model-v3-file.ts new file mode 100644 index 000000000..6bd822ef3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/video-model-v3-file.ts @@ -0,0 +1,40 @@ +import { SharedV3ProviderMetadata } from '../../shared'; + +/** + * A video or image file that can be used for video editing or image-to-video generation. + * Supports both image inputs (for image-to-video) and video inputs (for editing). + */ +export type VideoModelV3File = + | { + type: 'file'; + + /** + * The IANA media type of the file. + * Video types: 'video/mp4', 'video/webm', 'video/quicktime' + * Image types: 'image/png', 'image/jpeg', 'image/webp' + */ + mediaType: string; + + /** + * File data as base64 encoded string or binary data. + */ + data: string | Uint8Array; + + /** + * Optional provider-specific metadata for the file part. + */ + providerOptions?: SharedV3ProviderMetadata; + } + | { + type: 'url'; + + /** + * The URL of the video or image file. + */ + url: string; + + /** + * Optional provider-specific metadata for the file part. + */ + providerOptions?: SharedV3ProviderMetadata; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/video-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/video-model-v3.ts new file mode 100644 index 000000000..bff43c3a0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@ai-sdk/provider/src/video-model/v3/video-model-v3.ts @@ -0,0 +1,132 @@ +import type { VideoModelV3CallOptions } from './video-model-v3-call-options'; +import type { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata'; +import type { SharedV3Warning } from '../../shared/v3/shared-v3-warning'; + +type GetMaxVideosPerCallFunction = (options: { + modelId: string; +}) => PromiseLike | number | undefined; + +/** + * Generated video data. Can be a URL, base64-encoded string, or binary data. + */ +export type VideoModelV3VideoData = + | { + /** + * Video available as a URL (most common for video providers). + */ + type: 'url'; + url: string; + mediaType: string; + } + | { + /** + * Video as base64-encoded string. + */ + type: 'base64'; + data: string; + mediaType: string; + } + | { + /** + * Video as binary data. + */ + type: 'binary'; + data: Uint8Array; + mediaType: string; + }; + +/** + * Video generation model specification version 3. + */ +export type VideoModelV3 = { + /** + * The video model must specify which video model interface + * version it implements. This will allow us to evolve the video + * model interface and retain backwards compatibility. The different + * implementation versions can be handled as a discriminated union + * on our side. + */ + readonly specificationVersion: 'v3'; + + /** + * Name of the provider for logging purposes. + */ + readonly provider: string; + + /** + * Provider-specific model ID for logging purposes. + */ + readonly modelId: string; + + /** + * Limit of how many videos can be generated in a single API call. + * Can be set to a number for a fixed limit, to undefined to use + * the global limit, or a function that returns a number or undefined, + * optionally as a promise. + * + * Most video models only support generating 1 video at a time due to + * computational cost. Default is typically 1. + */ + readonly maxVideosPerCall: number | undefined | GetMaxVideosPerCallFunction; + + /** + * Generates an array of videos. + */ + doGenerate(options: VideoModelV3CallOptions): PromiseLike<{ + /** + * Generated videos as URLs, base64 strings, or binary data. + * + * Most providers return URLs to video files (MP4, WebM) due to large file sizes. + * Use the discriminated union to indicate the type of video data being returned. + */ + videos: Array; + + /** + * Warnings for the call, e.g. unsupported features. + */ + warnings: Array; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + * + * The outer record is keyed by the provider name, and the inner + * record is provider-specific metadata. + * + * ```ts + * { + * "fal": { + * "videos": [{ + * "duration": 5.0, + * "fps": 24, + * "width": 1280, + * "height": 720 + * }] + * } + * } + * ``` + */ + providerMetadata?: SharedV3ProviderMetadata; + + /** + * Response information for telemetry and debugging purposes. + */ + response: { + /** + * Timestamp for the start of the generated response. + */ + timestamp: Date; + + /** + * The ID of the response model that was used to generate the response. + */ + modelId: string; + + /** + * Response headers. + */ + headers: Record | undefined; + }; + }>; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@esbuild/darwin-arm64/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@esbuild/darwin-arm64/README.md new file mode 100644 index 000000000..c2c0398db --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@esbuild/darwin-arm64/README.md @@ -0,0 +1,3 @@ +# esbuild + +This is the macOS ARM 64-bit binary for esbuild, a JavaScript bundler and minifier. See https://github.com/evanw/esbuild for details. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@esbuild/darwin-arm64/bin/esbuild b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@esbuild/darwin-arm64/bin/esbuild new file mode 100755 index 0000000000000000000000000000000000000000..073f4e8e8d07270dec127cdac20d53124821f51d GIT binary patch literal 10385218 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

iq-uo$YU}?qfm6nd%&2QGW@j7?$U2MRlmA=N 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 |5n<(-)ebYF~Bh63y`O8?lDH) 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
t(IXBflLo$aml7AzfHuY@Y>@lFb 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 z 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°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

&VblPTkW0ii# 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ˆ`9vMeoorgN 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%0D0@)zcAnF&>>JIGdEe|`>CG>{ zct3M{0rZdT@(;C6mQ-I`m(SiWcx}B!UdFl5TY|Cp$n|lrB`#o(rOveY+331*o*jIa zXH0unUuoLQ@H`{D&jauCz?s_01ZOX>#xbv+{m;ySuH^-+sIJYgw^Remp-70p9Ksq z*L~76Hx4q-RGT%qG9*ExIQ%e81?_j{pdr(kGVR$mwvB?esAqZzwgwXXYxU!#D7oK zoZly3y8E&~y8FoB!Vi)cQ16HQkNgXDPDZq){KCT22JY?mr9a3YQdd=FQLj4kOzT^N z3*oDs2O`0`wzme?eGoX`)F*1?vz4~YGd=CGHg4LZ=0N%5v{#xw&3@%mThH%fuTMo+ z$X?HG>aIUsKBTVyS$H47ySo2DU`X9Oa%uOXW1E}EqpKNe^5_&(Ux55-Yb5tN9KeP$ zYX#U{gX=8nLo_#$6V5nV!=>rAMslqW`qJbO9S*Q>Yza1(_KmrCuR&%9*hBUJxV{uT zWU_y(x&F(AWfi_<5&9_OY;nb1;=sB3_3rvBWLxlkb5`|h|MIKu`U2MzKJU_8WtCzgGcbr$4y**5Z!@iF!6Ee_l} zn2U>ENgKEqkh9$azRQ7qqZKfD+X-Ne1G9SusPf&suy66euJtO#e&dWG!5EU@pSBK9 zp+3n9#-O^^!oM4nnL$h&pGOkoF4Xqaq-Q^ieiZQf0^T1pl_OlO> zT%UBFJ%&TxHRR*%>y6T3SH)#lIcGv9S8_d){@97x zxcd4PVuW6OpV)8JjUH{)6^F3(Mp)_FJ5Se_U>BEE|G&h&3w%`dng4$#lPdue1d0|k z2>~IXqUGi+x=a!f1g*AUZI|wn5U$2ct^KXKXp@jAN>G_x8*(c|KVZmaSjb~`&(}EnNR1_eq5ERv+rcRwZ}c# z3y9rhzIn*Jd1=AHR&L-E#+Iz#Pj%>l2bnH%C$$2RmE})YEzAh^01tAwYy+MLX9Q)} zz=lLy1A?BdwA;x2ZCoGa`XblI^xpJfr16~Kumb}Em8?kw*}!xBI$vaOy3cdNH+_-) zT<39Zw5QkOS|wqyD8MgyDU)W*+|FHgu0}Prli^AI`DIt{NX-HP+*d z^_(zqBjF@qXq@(9Ks;F#vBdtU6F$6mlz zHW!;RwpsD!V>9i!Li@io*GD3yzUTS>jVJGo+t9HDuaUg>$gfL-YhNu3u6e7Rc)py# zZPSp2Hsu6j;zOBA2)HSzE`rYIGnUD61^hvF!m19kL7Ex`b)&({h1lrQv6-j_UmJXK z32|~&$W6l8g^X_xV_8KUo$3f|;Qj(^jT*-**r3|@XC8J=_7vfnw`FPeCr!1~4e7nF zHV{9vp8sb43uOOZW$Vu~|5NRL5j9h~OL=-L3jcNSZTHgs+EU*zEYdhDFxRWpKx(Aemsvx0*6;#aS3;ZzZ~_Y`@gU4RSwg<- z@YkiI4}>Naw7mQq{AqWAKn<2lC7H8z`YB3@K#T5W7@JyuE+~B4_{Fhd=#1G$kREjZ9mRS&kcUK z6g%0|*93D_(-xk0ZGPPo$KXFT*u*P=pZZoV-*VPXpB0DH4z2AFPD1ND@ACL6s7omu zeN1)vfawK$zGy;z`(YcOGx^O^=aT<{7UBj^IQ)^uP12I^QvP zlzfaGQ;1U??tiS`1^&mnra+rLIn}es&ly0@*BcjD+h%(v2BvxXb?ssgVZ5{N)r~Xv zD!J#rqdIZ+=Sk*S9k}8?%W|L9*=>QBJZ=pp7kGbWd4K9ISkOQR-He^!IR6FKyfWW>;E) z68r#dtgZ0lVQNnt#XkJ>W&WUO?&5Qyz4`vomf@xElwHUfrL~g-^Y31Kvcg;N&#$sp zTdc`}8tBI^Z1xY*hkb8?xmU+M_nja2Jez2qZ6GGeeRfyRv&+r1-NYui&wk)Os~u;a zMZkOa88|!G{yfP%^CUfkPC3smHqVN%=QmdReT^r(C;o-|tkxb&DRE40oAY{}U15G# ziN4`JyRPS%&pfNcr{q4n+I?o(&o)4Z-Dm8L!R9lt6RdXQ!*!os(eun6X9PXkeRg@z zvnl3xo}_1E-Dj3P&LU(f_jkqavs!x{O38C_pAC1PS)=Xw!Nc5Vl1I&FY^)k*9ed4v zroCo=w#TvoJa(UHui2l++Vf+txzFtD#epT@f5EbmS6pl8vf^@bTDpiGQfzqvahDC? zaWi>Rno0g(7j3*B>3%WD8I>g& zIgKTi*1?-SIgQJgFF#qr{c!{Rq3ZLezwaUc9!yJdYQxRucr0WYJC{=|IX?x)79#yIxpC!0hYrOU>YslX~ev*&wtZg>dhKBUjCij!u+(DZ$`dqYasW1Ma z$5*v0D-gR0e1UJs*CBcE)C(t@y1V;RQ-U)Oy3fI9vSNGeE-O(_{!>-@G|s;n5Uj;7 zY}Jkmym&3P->y<$4ScvNxAxHHezk{g$!~aq-1p;Ei_!xl^Wk036bGug7yHnDPjeGL zU&=kLk?h5L@rfRT?{{GbQA|Wfhj^gX5-s)yb`6t!JSOlr-^7-*03O#t4D)d9VrsqD2y$ED5W9Y>7v5Jj zan?H{#QV?<=2Op7yl)S9RaTf~Y+AdC?;XLJG3@Qh;T>y#65jX1i3o7DWnQ};Ywa2C zn|7>=Y}**IPa~+IwfARh4|#phoG7!XNuFMFsCQfTZ~B?vVBa!&O`q@7+V6;;7Fzz# z)2thxV?!!v zk?dgiccJOe18*%vb~g2P#%XUCw8#&38Sj}jgf7V@x*J|P0vM_d)fZR%slCQ($I)}l zvs9e2-*8_%ZSU2%8Ac^<~=8QZ{k+Zb;K<7KR^8f%f2{)Qd9xDNXEnNTRernl=-Ke9#l%iO6A=+NdTq!%UITF=~vOAKdYDF{9G0;D1xVmsC<$ED^lsf3l0_gT`a3O}hCybsS5p9C*?Wf;b$Cjx% z4rWYYboB`PH_HBsv4QzqmXuLoO{Ak-J=aNC$-^K8_Z9*QD|AK z`@|844k8B{9C627Bz$GO#7hy=>((fC&g-MSbDg&HxhB&~$$4kONqa0-3ZC{JlS?0u z(#{O%=>z=lv@)yx$e#MW=#OkmqIW$sg!=NbElG!{B(Kz^C8{ysHla3jtS^0{Jm2UO zIhV`7a&C%$B{Db7z`9lb)a%m{@z}Y(=uK((T+*mXmT&y%r^=mcy?y;S)<4C+TPZgGKXbedU5SoUW!3y7w$lpL>`pX= zTfy(!dA?IL&blMUeB;2cN^_O{PYe~ns!8bf?sT?qU(wz3ZD z4ak07)8D$Ijo2B*C_H67@I?G&;=%Jd)4G7O6l34^b+SLPg-ndLGMC$tfBB8BH6yK$ zD!?h-SM4xeuR*su+SPcd-#4E-arEKeoH+V^*9qCa>Ui&(Lced?eV#kQ=$i%D>x$ro zH5XeSMc5bm-Oa}yKJ><|&z)HP&EK48x$T(wok!2|{r9Z?;Ne5GQ*GKALp!f~?x=vL z>|`#wcLW>Kv;o!~yZF45`RI3TvMV`r4I_vAhB2yN(Pv#dn$mn@IMXV^+}qBv4s5x2 zVxTj(W_t;70VM~o3>@Wi9`9=3Mu~B|h1knS!7D9Q+KkUM4oA z*YkgLo_~Em^!)`Z6nP%Kw0xkA`}NLsuYC>IK=YQOpTG2JQz^NkMacbnw-P-y%$h}5 z%iktHv91Z&gq5 z$P4J1&)0^!-bRPL6W<^Ge!w$V-`tD-?e5|D%g6!j?Ql~WamV6mS%zopYGfwxLVH}_ z!_8^F^(Gd0d?2!)cA+KuJ@19$&1Jsye9ISp7kJ!7P0S0d+l!lIBfF!ZcUa~(M6NvF~aCH(m%xCWAORff!2$v5xjUEaWEe~d!pIO z7^i&veYZSzsQq8I@IA9S!v5XNxEipJ7T{}>j=4ZSH)w_QnT7D=_^;)ow|ToQi`nrT zYOfM~)BN6YeveF~-;1xyA6E*WFM@t8$ahW0Abj7o28H z`RSpyHS2+Q#<&RfSsPxH%s49fo;;5KKjEeEC$F!Ii;{CjC*ffQvXGVZXY8frw!QSo zFv&Nm_EK~HbA7rmy3`6;^GZ!@doekc;d1E6aB7Iw76rOzA_o)0?D?%n@r-Mon5ao@ z_>*@hbl1Cx@2?H{zF*uSc@? zO4&i-)oyNZI(xREHan2CV^N1uH1K&dbDfXBC`qBfLK0e$9O#oXcJp49fJJttkC1SYq; zea-W5mdaog50J%PP#^p9vl{o2+t9JJR(0B{mAhIEzUjN_tsO3;CMNUqVrO0S+frZi zaANbY)l?GO)cXwE8sfYp+d;DqShe;UzssP@F~*^|MAJ7l2sS=gX6n{T{}=4c8EwGN z@r@DVW(EG9_$`fp5Gol(F}7h$YD$nA4igd7uS3|zF++Pbw@OToHt)B=*EPTG?1}A+85{TkC$3|g&c3zxtDS#y1b&d5f8zxg7rjDm zx8iBAy&D|blp0I-0rO13A)dcG3mm%MpOAj$p^YMNQ8>{P+sM7YCx)R2obZ6-Hl1Aq&<)ZO6xBHCyWjzfDF?O5uY{zcXlKYT*#y^!^m z4QT}Y%)?rj=5t2%cm4O2QP*h1cddI=<5Bjbf8{!h@fTnpbNxWa$$b@^{-F=}ybeE1 zhEE1#c+#0$PcA6;YM9$a7eXs?O?>k~?bUMpl-ggSlTW6X1`BOntZO;^ZXf5h$sdnxqN|j3H}#I7lO5P1 z+C__@|I*>d+%xv1trusRbAn&vcf&ljKCP$DaeoMXCntlmGnn(J(Zs4|Sc%}6(qJjE zGorZ~2WvPFTW_Kh8m&A}(G8d8ZY9=6wV zu~ajbr~j*a;<$TmK3Tx;#!!n;ex+pGa`y;vK4w2&z+QQcci-hdjK4{_(En~eOCQW` z`By$0+;HMEnpA zZY|^*ALC!SgGasgxNl{RXAc;#dM|j}!2O-Hy^yu;LiX%H_KYKUVi#u3#cP!tr<#B1 zE$-Tvu=X)RL)SBxQTrWub=PE~`(*LYS))_ae9=cUgOW*> zB9nBmpNB!CL=)0(Ded8_f}8k(_QvMn`0OliAo41E<0kgTE#y!n@zf_5l_r+3u4Zp6 zBHsKa?BC4MtKYOSN&czY9_jt?AYt+!=jI9y(h2wTaK{ghXbhga?Hr5lyGQJBb02Mdb@EMJ{)T=enRKPr4Z3ak z8~V{tlGac0ao3o&JDp!vgZ|)QUo~5{JzV@ix$$-%c0P>ONwNLZSs06~)wL0N+QFG7 zPvvK|vYy+PabEWk>H!xJ$0Qo6dpAE-9_kv7e&Wfk-hkifh&O%gG-~fI zwm!*k4qMsPb;$c$dA9(24R*45v3zgI#zNMT|1vAHQM6}cA^r|{R}>z+k?TgC9Zx`zHP(E2Vp!h_A4?> zlj8B#r+Z71VbU>_J;^)TJM5z-o!QX)9npB%s_$TZh12?c8=nm=)w<=TmBa>lOSEo- z-F4%PmDr&2lE;&1tLW==Y*Xn2$V&n5wxDY@&$DfEvcoEOv5Mz4*K$v5$u$gZ)AtD1 z<{PX#q`SKBf*4J#cwP5 z9(Lx~JjVWx4bb%2%vJNMaqi1zCs;IJ>AdH6-s5WCbMCLl2Wj5x@7$-qlzyJBW<2C0(vJ%R$q44VGfs;?BTv?++xBgIG9TCXsvrC=d;uF=^e}kv9<&g- zZm?{7E3kdVyeYQ5x4{|7md5VY>)C70GvRUZ9_(J&ydqB_Th|N-hTmf^97ayqZtQs5 zWXGe{a&W!Qa$a;s;i>5JWriFrmgN!~xNXH2gokE#AVTed$oBv2{YzBsdIOjm16OBv66cuW=Zq0Q)~ z+R%@lR%}QfTQ8sgfkD-1j6BMFOZ|!Ps{CMu&f&nmcIos_nnWLZ>}#?!!c(Kb5&Ign ze@tN1)zE$HUmxtep1fpomf!hS@SH0xY-}FlIMRY20E@Rv=LQd6H!t{`Z`~ODaBm)Q z9QnZy-WeGDU=?}DkKRCDUITe~@Kwgxf&H)ZsoKzyyRdC9fS=RfF<|^Yv8#&L`RQ{` z97lboo%4WP70p9N7?f^k!9a4^#e1W9*whA1FS!+3VCyG#yzTNL@!vr``P<>!nG^Zt zij9fhg-!+z*>Z+$%l}@!$JE4)-%ftLcr-fR1LD!}V4V%#-QAD>+@SK&JBE3EQN|r( zy`y>k#ILt4gI}u#(mMD+1^oIUhhI;lPQXU?v>h93`1LmN>rcp8Zlf>p>lE4yzy2#? zQe1xR_G9w#(I?xHe>H}>UVPgF-&Q-aDQrE>x3?L-U6mI2MYI)ju~kM$6o9SUOX`^_#m|OHF)?sc(|FD!^3;e3m(qA1_gGy^MZ#b&ucS0 ze7feP8Uyg~o^gnWCyk>HUOom{wczeCI~tHv>ukMxn`{p0=TawOu)ib|y}L3GJ(D>Y z`6$azU4{(m=a2^i9cjN4o&0vzxY`P(=VZ6W^V3`7=qb`KSMKopV!-eJaBfHeKFMd` z(}m<06>#Q25q!62Ea(tz=Xpyy=_BXH(nMiNd2mFLKOtR3ddf=HRCT087pS3nprJN5 zP^-BkOTvd!=T5wJhC6p^FPJr?eYJhWnSap*R$}DGKQ?&+4VO`~w%Q-cSvGP9@gkHgy)E2=qr@E59Y zjYIPt$9=&v0!~N4>DXPhp*a2hOlPYw4tyCQo3CGYQZ&4vzx9!Lg=vFlZM>tH@Pd5W zh9|^{(duA+@g0^g`5pPV3I^NnjKs&$*E_PCCy!0`(d6&#*aF+Iy`-}y$++R-(=c#E z_7>S)pmU)%=HkKbqS%h)Imk9Nk2UF$GhF+}W44UQfkLNcL~J0j$4Y~pz5KJX14uUz zOk93u@++_#C7%}WKm8$aW?{CsH7z@hT1)9&uLG;P?DSSE+tcc?{2{O3f0F!` z&*~VhR$BPX%FMBB3Js( zQpcv1l_GcefWKqYGBhf>DJw7nekxuWsUnXSxkvs^c)O_+7^aUs>~nJ#A^UvvvJpFq zthB~atZ|s%j(2~%iM`04Z2LWSO6*!~r#R;s`_EJ0#}@FT03Bl?w#YX4dB@wxNbt{O zT4d|2nJx1fzih1?Z^Ju`9;pZ2!=W}9s%+(k^ZRZ$%H z%Ug*!Dtz+y`z=y?^@_@NoOB z5Kd$3r2_xFBYUloKJO+@ss%i|`DFK`>>#-`$Ov6eTcL-M5#C=V8R7KVZt@R)Ff7y8 zIqqwxWrLSb%LXfv4OBBpxn2vIqwGgoJ9K#?8+@=^vO#H|vca9ijkvObnY;K0YvRuR z$X-9=qNW$~e18@48ttm?p62@?GDG(Jr*(bK|L_9o=~&GU9iT5pN3iy9ya`1~THeY+2$#YPq_y#7bm|zTn`>63@7B z=p{=$i7aus3kPJ0|1lhpG3eLG80*(h4{p5Ju3@G1kj>v+55w23O9HDk4q&{IdVR<= z2V6aR(@1|JPvf9=!}^iJaT^!^J8Q9Z4E3cLL%;smUC2$yT{dRNbr}|C@0BGwIR|O^ z-+d~Xyyv{_82F&L5?vSZ&PUXxmMq0NrU}{i-9Fn3E-b0zx%jxfUxoz!WB@jHa3T&q zc=N3i;nvIS(?5r?e(g{)Y_-0A7=i!+F9|4pvZ0glq{m&V3#4E{gQm|kG-J2d<&yWde&;70Lb?=WO763_OSn2L@eOB7E8nUb#4RD>X3<+<{d;+BftS z+l}a}YS`y|hP_90iRbcd>vInsk-Z05N-)qfUEAOdad<;J<9x-L|DL3|Z_(Tti{>6@ zTx~mRjX$lYO$QI=({2Rb-Wzs5O@dt<*tIcE`Qv*3p7RZ{_hz@e#r}Gef7!0y;EGHh z*n(cN6TkjjzwVy*0RAJRdq~#<7qHQFjVK0&;CUQgcLbicFFUif9UI<$!CmkMH@dO$ zY>*GJnVcBLnLNigfvNaaX@ND_qW$E3sy&)kNIg?{Cw|@5eYAPlY4fn`Nf&@W;9~?h zlOLd*=U;9_{wd2)4sJ%vpZ~SzaijY_jla4o$Bt>*WM5mJ`?QJtd6T=KXYiz;ax-g~ zYYuT`(Wm_hKe6xYli%aFde6#-UyK0;+|D*Vc*N4(K`nt|gDWw0}HoN8jS6fa zmnF(Q@lnx3&sqB4*sFipbE5PS0f$WN*j!ISH3yR8s-{5ad+bZSo?YfV3xku5zeZ=$ zIuP&Y&Lz^!92@+>8yG+S+qEWEjImY%KkQ6vd+ba}<3Cu0O-J=JppzPxu`@k}ok_J2 z=9Z?!eC3~IY&q`O!1qNO8+aLciLn*iaCXO5k~}t^Ib%C+_1K$E!?s0ZYhqm0tRMEA z2yI7Sstx_ild?CRmV-<@*G}GRf^M(+n(R#nWN-S(G-GcvybXPEVt9`D0`?~6hP?^- zV@%+oQe@~k(DrpV20J!=CwS!Pn}QkVaYjm^CzvxP&ERJxJYyPq`-AK&=_678rIYBo znRXgzXWdRapE^>{SZ5;d)>w&A>|4KIFBE>8K-4uBdiUU=8sXw!b60Ws)b+v-I(8?z`X0rBkA{|w zr_FJk)0CajT7~UvQK3Ji+}TBi>MOIvvl%&Sn2`^WE5--@+OBgFijRZmjECnB%`Bm2 zRv?8V}VoiXT{AtJeY;ZaYT$0}hm^29{S>O;ppI;^6j!?+OpKJPn&tCXm zZ}_Y{JA4kF2|nL+;3Hp$@GSRxbYX;SWZ-!bwJenj-3y)v&jinJC&4or zHZELR`hd%~lHl@>4qS}A#B1BX2_^t%2A{TnF9pZ2JxJe=EVV+O*Ge5(E-&yL<4u3u zU$OyPiJiBb-V$G08(PgAv>t6si3vg9ZJ%$2o}#18&4_-*ErWCu^43%VZ*UnsQ-SzZb&|O!$bCDg~8H3yZh9vv<*58&T ztS!@n{VqYDlDz=?_8#EYiBBR*Ee6Rtu8tZ}f6(mSI_l<;{=^dXC%Zd3YVZDJH`n|< zCD@5}2(59u(rWKC< z1YIcSr^L{gsi*1D52?}Owb)~do2wE%I>)9*H`#sk zet#wVGe#VM=#j>tF}Cqr{7j*RtXmm$X$9-H(9k7&JY~SK6uPt*x>UqiN|zPyfd3yL z#4>R6Rp1A|kMetB!b*&6LYwP}1+vJ)wfE??CuR55`3HOW@1a|Ru*ErX2Fu=bXxAX* zBkZu}or!)ym%hk5U5_Wq{%W5I9|mvZtaW4pHZ%O^iqqy>Kz|>Ms z#HX+}RI)K?y%Ij7dciQI05N*J9z&!a`v-_3<|V!?_Az*Mu*ys{HQ+S-ut%G?zVlK&o?#Yo6(ic zvtLb5Y*tPRKH+^=WCo1Bja;U4N0gtUIz92JtQm5Z%>(kVA7@}oRorWO%Xe~Z`dSHn zjon@w;w*TZuA=)Gy2}1Bbd|Ms{fx@#H*|Hr*Vj1*KN0(*b98QS>ICcf&F>&rRylNa z95J`h)l$bVCA=10XdpgXH1)k-K^N%9p{d(k+m&c)1^D37RP7bXd~RQ&sbh%?nw`}46TI}w zv|tN+^JbT(Y97$k-t!oVk6QFJ=+48Yr>ExuJ-yVOhhl?z&jWg@xW9tC$L?r>p8B7i z9xQ{NRyyz!?LLYu?9kF}4cPl0QD4{h(9)j1WbYfKz8rg>+m~wLXx^pJ&|>;Z@9%A_ zGBmV!$EtK}8U^_!8*V8}MA>6Dew-h;5gMmHp;^8joMA6US?d^Uy&Rkou85{7j##u^ z_KLP@zQe!U>2JS7Yv1dkwHdZ84|zy6@Q4v=UFy)spOn=jnbzT9-(<|&4;!0$`^kw#Ei_cMLPT80=Q%iai zzJwGSIUX80%?b?*kCbd)lEE6?@5t(Qd{}ym;={`1ubm2vq37+yiJ4e0)@mQT=tomGu6vSlieHd#%Dek4$5|_+6T_PQ$cL z)C&}hcVcf9?I^!{@s0-8N%DU=GJwkyw@hW7Xrt)o(-R)*yBIz}d#OCp;S)xl_qKed z7!4<;E5YaF^%37#|HkRH`31bf$gg|t_{kh|p2(0M`Bijp@uu=n=6A25CSGQBB{|yW z9x-&8-?#7WR-KClPK+h^Yho-Xh^7)_*-eZkGAsPzc*mPp20Gyl9mQFOo|;%oc&+q> zrO2sij+`n#zvzSJkW5n_cp3Vzpl_O*%RF70$~z&&kaoaR!@S>DtfgpbPpoAMP4xt3 z!Q1saLs#9lHW6$2G_jU1{9&<{EpVNKT459S2qH;4(O_EsmZi;iu&z?wr+&B{!0BS#uGW!hFgYx9tkkeI3oB= zMnGS^1JWAHpsyLrN9-IyXt?1 zUmyI#neppRcWo5Q>*B;8h+o^Fz5lQ9>(}la`oOO;cMe~LU&x>TQ~YXHzh}U&k$)(D zF^)6g*X^&{G|a^>6aQiC5$E^NF6p0DnbxFXvQrTwoOMHK;x*`NH$H=v@WwE5pJKrk zzmBZWo{>G|^jT~6o*fWarnyan?%ZHvt9s;;jkEAU6F*`0&Mb7wamZlMYUB5X{=|eI zl2Nc}W?xHvT>OrksfWH2`F|lYo@kJ3pWj41`hTOXB4nHm)T0k$XH!hB&EsaCv|~8a zS|i@#)O(8O$YakH!;9E=C4$Q;CqA#(A4;}oVQhroUf2Vl7=7UHtKI-_6^v5sN7(Wf zFAtmClm0E_%5N*lxyt0z-?j;Ry!b?wKQWRsjL?`-K2)nJc)^cp1WuMirUJtxRY$aA4 z*r>J@I!(}0Z0s$Wfeq+H$_WsCm%V)RFnm6Yqdb3ZaK?G_f@Q;R48|U#rtG@xV6<7a z<7aXP*{onYb24XOF2F_(ZtC2r6#Fu`s@gbh@Lknd>6l*|nv^uh;=#a>IX;ZuX4iYE z+5W9Hu1x6Ae_~vOx4#3Ib&YT}>*(0a>$Ha8=VM7asx5zbO}x<&#Ut;{NR2nz$sXO$ zI_|X+-WRKU_|rneYDWYXQR6=juXE#UH(SITq6^mSqLu{tcMGkRPejoX_o7=?{rs{( zg;n=NcpdF9#@43{Y!4XN*5?O_V+*N1N_4;WZO!<Nsb($wYLozvuUU?uC&RewFgu zfwnIx?BxCxr?W10?%$uXF2-L29r_quE!nS?1Afb|6$Zy5(3YoC+Uyq$uj4*?$%d5s zxk2~+bt(7z_q_kpl>5Y4JMBN3a-SSVr~QXg?&k#y^Rczua&ch8AaIN^>&z12ST1wX z8F7Li{v__1HhmnGqvYrp=e+{U*YpW@q6@h$ceHXv}W9eg7`JP~~q+fO5Tr^Kx(M_&4o zY69QL993s3R!!a(wF09BX}<36LBw`=ja~g4DX<-6$F|=)IZ&rK@|f_%-oGz?9XweI zUV>ZQ-RB00{iIe4=Om^4{#>oi0qe7Yf!!BrZBGAwGrx~8jxghJ*GBoNQQFYjL<`D% z3$V-RY!LN1Gr#@`cu&uI9j8C7*JRd9pD$y*@>#Fr&!4Uj__e=KeZV}{DnIz?;eo-A zdc~G!@5u_Z)Bcf0>NY$|-G-&af`NOfbsGk@+~}@ZxxHrX`1y?D%Y_Qzk4I+e#YPav}yEsE4XUe*pv9vs7IFJ=r?wp zPVaGCn>3E(F`TLYr|5q*IpWe#KLuw{$2#%9DAR&$2$PR1~nb>(1#Rf~Uql0@$T(Q*rpI ze3xclX|8;?>kpmAm*`8MHfj9k+#BYkJ-e7OKft*?yOHs>IP2ir{vKGi_+%yHm5x`t zY}Cn0#wcAkN`Hc7GA_0{ZI5!=)3d#2Xmb{AUIYyG4Z%*DT^M+Pw%dX8{*lC)fu}A` zySOAg5e^HNT^zm;Jg{TF?0uR1`Bi+s$$noWPbc|(7m`=om)|#Iz{$zkBa{8UIbGSv zXY%_l!}inL@7rnc%Z>#kzu(w(iS7F681UIoT#Z|6HC|=s*XOf7HV#T=Pure5cj~ZawinU0x{J8q_?uifZ{=?i4)9-k2Wb72`%CIh}bF}%-OE;Ya_cSMPm^J_SG%BYd{)<2fxW_>A0rz>&MRN$%eBtbV7w!0eW4o*TI>%d&mK#OJrI zOAB^Pwe^fV@`7DiTrv7>>&kdm8!BNOMxHBo>J=dCCg&8t|rc-&ew(v&|4mVNVTiJl^uA4eZ6`;e3X4GyUjS{amo7+_bKmxRr{qq z@;>cvE2%38w9x(!Y2VgioH_`OO#3GJvyy4|IC6&OZ}d^4i=6f^Nyo&Gl<@SUW)5|J zMs8SnX!@-6Cu+zoECNpT(A+BG0u+N8A^*Rexc@eEG-$4gx6r<`eQD_}ic4DvpDRa4 zYd}9M;|z-`a83SiZ}!Q_(m!<8Z>7=A(z<4$e+ZBCyVvL|9o;Pbvxe2hmesluJw@>- zt}c+iC0RE126rJpTk|f(w^Fk`8iTGvKO_@AaGnbf+y1y{Yty0lZ?~BFM1Z@Q5A~BY zpGv+{`yohOpoH~Yf_Now@aSgFFarmx&~IY(XYS{gUj0x5a;=sAb;fg_Q^(it|DV}6 zukzm;uls}7FLB@CGi#QtFaNo-cF{cOe{pRnz#7{6NapGM$i3OA`bYt>&*RYdN8{t5 zPSWg4{6Xc<9NR<<8jmNSdR5SfgW&>f{+tC98%MnfY6LtB47%>5cG@N@G2?uHaAr|y z@S01?g0n9#=d94YU`KI&@W}Xq!J`w90d z1{BMrxL)m_e&~@$@3Iog)BJ=S#bjM$342+(##G)Ld$AusP$_<(vfyRY%kjAn#^*jH z_`%Mv5j(E9s(I|U8_^fP!+ACts%x{n(|fhgUIrFG>>X*GW1zQ|CO6;-kLc_jC%-f#@iPa|N%|px^@oxMs&U$*+5|1VPXO6bc zk$qa{aQx11sMexvFZi5qcW6P6zOmP)htLz~VXA$?Q+s|u`Tl7)Oix77Ih7N#^LhNv z<;-t9Gy}SU?ZD_>pi~d+1ZoFKMO9*=D2kyLc`5^1@Lh{tGQ6^r7UQ}TB zYM*LhyDCi}li2bGwwYvEL-lF&zGL4q{OAGXM%lL}0Xx^eC7Zwo>{vzcJe`Rbo1*iP ziKlgVr)tMY|BKDE{oZNR1scWg^}QJTvX|OG>%T5r&pCnHS*!3|#t(gq(ys0A=d9R5 z>aW4GN59nFRLfaEmPMU5=y`OS->HRR+ZhCp%GVwYA)kf9iXW)W3;Y>v%2yJdKzk2z z2CS1?i;gfU0`HKH^Ep0qeJ(;?694hYr*b`c-&Vm7Bh(F3Ke3x?sa@u+Ubv0iDr)4* zwo-=OVF7+=Qxo?Gme2Dedz_#Dy)#beTm;_Jdz|u%$u3te+{p4L?sMsjl)f55$HgnVY(AFM<=uX0jc~ z7GwJx3tG-&eLVCnnR}OFx~vI-wu!8%Gq+0W=A=1ub8v0qL(EHSY1R>0NII{<8*1&^ zyxR6vs(x^k^=@OI$tKtgADj)3U9xP^6^EVr)%c9f{G`9jHrcPq(F+)B8#vic`>HEu zbOFZR0seM!Ci`LHA+LqDOSfBqEVz>W)n0?m0N6PD4FC4Pz&|_lZm%I%0Gu}RH|=a? zKV{xM=I(dFjeUOq!7bTV;I(^aKbAep|C4xc-77v}7NWSG0S-#~t@aKFrX)S3R@HO^aFAMwo-ql^Lf^q zd<^nM<~5Ta;z#amChx;yy>x#=ku`6)VtjrN9e5g^UhWBni3!ePU&l6;q4V3ZCeiY` zQ26)Y>(iW(nqduYB!5QF7u}10S}`)nA`Mpa6Vemr^W4VY%L9{uY4|DPta-O^*7VQe z2cJt084<4Xp({)-K31C8OWx5OcwaKTQrn6hGJWvQJNVNJm3MT^lL$WrzXV6?p^sIy z{os`Y16A-!wKdhXi~f!}Ar|(~4=u$UKp%C^6?o0N2Qu(a{|>(PA$yp-B+a+=m%ZkD z%H2o(0ulN{M;hFGIdJo^F_v1ka>MAcwv{L6S z+0K5dYCxcRg2g#@0|K{BxG68_K=DH+cBJa;avHr zjZP3mekr+bd|-BF?V;PgVl26gMKu*RkfSkd8#s2BaSwxb%SYADy0w9aInco)tX;ny zSBF~Q#n|Ork9x;atD#@ZH)yvX{9O7#^#p(LVH2Y`peqV)AM1j?8DGT!XqX+VXw!uO zfxmwNKF=7$=Y?yoT|#_*s_;ubVEM5exVC}o?cj+E-y`75u`V0VUC_e!MGKud4L~l~ zjLduU!1TteGps}dGJ*PVZBREaUvzQ=eT*7s1s5+Lc`^>)KbGeSp~HsQEATaM;N}VJ zl}+pwZ)qr+S8B(l(EfVt%F;L@!Ls^-|KwWed(NSzx%fDRmI2k`n}Gb z)4dvM4j=>Y-s!f##xwW({$-2r?tEs=A#5DgwY;bI)xT^dy5{7NQ+$y6*6=Gmi}23! z=k$I~bse9xc;0=0=X_SIk!lslwyxam=FN8QR&&0`!~^yoV;1l9zNg=2ecPH$zWGPj zLfh4+?3b@F&Njx`Y-N}_P#N^QlYS$>APx-DZ?L9#tlfvA(2}3u?|J-VXi~Bc^>c8^ z@SF~El!`g$A~rDP`4IS`@#nBUhBl!q$X74}KJf`{eO%>9c|XH>pE#~W+_X7}cT)TO z%;_`UL7ob{?i2W6?{|LJ>m6G+8EABq#lTtfExHDMpZPX3-`%t9`8LctJ>QBx=3DU< z^Zi%nxx4?P#D{9WIcJ#f>+U$uGT&Y9J7<~iOTFGno-Z}&KPpA0W36|Ly5*5Wquw?( zl&gzMng2lMzlQny`TQ?cz6QTFMe9CYSJ^Xucdjqa+Ml}f+`ytdtE4xahdcdtpJDxf z>O8mC-iF0KV$}Lt`v=@PoCOy5x$m3>7C-9sP6{l*|4MvYfmGpWi1y;ks8~h%E)&0Z z$PU7%^af-}WYgZTdf+Qy)$KgD@ydqPWoLlZap&D0SjDoxL@zqrcLb}OkR_3m+BVJh z;kTI7HonxH=PMau1hiGxCz0t6!!vdxTeO##B_2Sg)A<3BP5rP5L67JonNGg#j+cD$ zh)c72y|b^^J7MrBc|FvxY+I&(Y6tBvEDfs8@p5ED@w_nmbed&##Tq>GTBw)V&vI*Y zTB}Q_(YcQrontMlbyqHDZ+;Wpe#^$~NTGw1Q;Kj*N*Mb+1Ja=NorEi{CyygS#m98QO2S#3K<3RiZ8wWOXjdy?B zx99@hXODEB>pRo>XF9Mr6J4osVI_H&eWJaxjU4a3=*kbAch9!|OWk+=AFcoO?s(6# z{#W;U=MP=~P0P-{{{Pv}8a(P2*6o>RPAtCdHz(Szv)63{dtG~XQ9kPf4;ZN{G%ZeT ztKR$bZ;7Wm8!a2^&c&>c{ObiRv(B(S*)HtQLif9!{?5kpKkfBS^4<}yw!QVpp)J=6 zSKm5u|1-x7uGS(q&p;j+wdR=#(AFJiB(Mdy>u1iThy+W0<_Yj3#S@D*@--Fco&*Z%8N-+28G?tISzx4(1W zISUWi+UuQUxW(T^enuy#1{Tfh$v4DzqkGht{Af46N_B9lCt++_(0=I`AN`%J2M*(z>{-JKbBxU{$mMRdRkAu_Accf)sCS}YNFuBFI#_Q;DT>RXDUm)%=Z(~`}}{v z|A+ir4{@&NF!Z*UtVHx>?4689wZ8>}`>9Rd_6^Tu)eQSMmY2dSULzJvd&}0zsBO>l zzq=gU1iwF+1N{f)lJVWOk^M`C)ya=B2G=%@9(=&HjmMdjbX3*M{|nmD_mQmmE7-=P=)@hlo=~*g3SlQlCq5^z zWjr>yZht76>*&Mq6Aw1>mDp^{u#I1xZ4Ji0imlW>$2>~E4>ERLW3-)YUyWs9U$yqI z&WfwgZdtg}^SE&GS_dbkSH=%}eOk8&{kZs$e=+b)vX4p6z8_g9gY(ZC`AyA@*wOGs zb{#JFNuMp%XXryN=R`I#&T8U$3as3&I%IR%WOBX4#Snk_F!7g<5`TF%yHG`vU8u{k z3q62c$hFDDv2|dR*;aDNguv0Pd$;HO4fY}CG?Y1M9!5U_uQiuPiqgz{E5Y?~&w%&5 zw}H=N_}u&5dft`IZUpnwvjwkU^FnqmhHu0yYs!LIcKz0s;G5bh!XETB+UaepJjcOt z*(w!ll1y{tj|~k6wo`1IqsEm%8^V9d4Q*54`AK%i8Q@JBI{XNHTMLlMDj84o_uuwm zKbS0g!N#ZUy)65I)-Uq=bA7Uliq4eb?>+U{xuP#6diQPY483V~417Erulv3;mmZyu zK4gDeLvDUw^2oK$`{WrVB4^NX%iVXN+dcAPFFp8AdcBhZ!@byTmttob&%POrJ?R~< zZwa`W3GTIngG;C@w1hQ0yu+@)bNB~#&7UQ#BR;Ol?bugjGbjeO_UFu&rL3vy#nizY zwYCki-R)%#OXbh43z_wKr`*>zzAj|{#=l+l-PMll7jB#K#q0M!`pVzib^P7m(f?$f zy`|cYI%9=O&Dr?G8zISiM77Tn; zFHZYHwc2WRrM8lv>+C7k%ctypH?ifo{ug8yFB>*SqHX=K}+8;M1Qy zV@e>~v-*j}=gkc+rRK-Y7u&Q!d`mXtrNrXMW_&ZTblOYUb&eM`OvA6l*~`!~<*EL< z{L?1U6WLPr8`qxPu@}1-`zo8bQqhj(1!G5rnNnn?`9nA{e^>M!=^@$wfT_75v}z+eny<8O^u;b zFk+lz(yS?2{JU$vL2IwNTe`B2gOQyhcC5$A$85WBV)+U1l7S zT>tj}Xk%~fl#g_-Z`1kI8ev~;0Qb7+^BDb$ZnrWAeJ5scn_?1cJpE1FXO#UYJyGve zqO%>tPQh6_lO=;Ib}u@}lW=2BV>RuL=W;kb9O9|EGSUgGv)>*ThimG`^6@>a&@7 zS;&9Qnio9leb)0jatYrDuD1f$DC_d1#>AX%nKUMc`jT)l0YjjKPH z$rXG|=3}mZV~Jv%k-_A^1ZJGT8KxU zdWJrM=O1;R%jL`Yrz--hndgOP==1tNexKV)X4rjt&d{fPDsAA;tJp(aoH2O=mt7hd z3C_H?CDF8=wNGA`VSoH_9xpj!$FjZq*L~xFi8FHch2+TIIMS9iml{54tJ}fN{qRB2 zg%0+X_KEnDXwwn!xHs=_BMwTuAKl@=it?+VvHqa>Tz^&I7W}HhVbNXDRN;6xy2(*^ z$ zLn1pP7l{s$oBnujneZW}P055Y`PyQGeKGcWtb;4`C=OjaRX)h*Z86CkvGmZXO@p8z z#IBu64@GBk5830?-oe05@?5I@Y>`=WPs>8qd=<4bI`GRESXqW4Qb zD^|RtPnn51iof`1Lu*lmOdo3^u8#I9Xm26yeYz>pbZS$ci4i;e#HUSOa-kF}sC)8v zlMi*=N*`^X+sQrYZ;DH-IET8qTKBp6Js#Uz?vrj;&wH``<-U5}lbjF-H+y7VXWb+hnEWxuYU=rer|5cX ztLw%aT~G3A7kZ{}O;^#Lqt(!d{T8u)o>1v{`1M48$p`4X&7N~ieCrBy^IN9+gCBYa zv~+vU=~_t*<3|SOH9mXaz3;49e(TA%GVGZAizl6&eA|`Z3qIrN-@4{L|6|Rbysj}5 zE&Q(iyB?fi&3m5v&wu{t>W4i8THo~KHNO9}l{l8=NpvjmBz9hooeTZ+5f3%y7Ogq- z;akt1xc!meoVfnE4^AAWo!#*JM{@k3+p!UUcpY{gPhK_nKToo88FN_(o<_k_7caxe zhn!o{G6no3R?Ot;>Dj`w;OCA3H;A-e9q z5PKMOU?*`eqtIE~sXM=c+Ay|!+n@diw5-6c)JA)%*Vf%_$##}#=h{wt_!B;gjk4zL zfgVS(i&00-J|oKV|D>HhbxxFGaYSP_i55+?<6rmrZJUg#-7?H$*KR?c6pU26QZO>t zn0+;MT!x+FJ5?|F3mX`<43<;F<;cs})u=g80S{6Qmm(*3egykcG-Q!e!{z3u9UIUs z#tyg5wE?My%ZJqWE<`U`Pd<42Fl2T7Q_1aUPUt9RPKxmmy}FgXQ8LEjj3-a=yDOO50Mze;~?KQlSH8ixDS|9PD zp3vfD%pDv!(;6-TrtQ7fQ0IoWvxcg5Re_$jkTrB;TYIlzqUFqM_~WECG_-vv=Z`Sn zO4jfq)^J~XX5+qHTEk4UhJxAEeXQZHF1FWD^NKrdXg*7lWF1>?^#?B+Zc*RNLp`3f zpzIV^vwkb62V&;I`t_cNyMFuKdGxV<*CwrB$~;)Vi_H36w4*XRb^RXul=Wk*@=HZV`yww$W*I1KkF3n8Ozx>@6Rkt9C?)UPU{C7xwRcx ztA;tobjCdLmgKAo}MPt=GGGyn9Z|<2bR|pQ4!XXq zfl~CvXp)TAk^4vBq1abX%Xnwuq1bosd<;1cxGEkC`FHS6V!=zX5eR<7RDHBwax`-? zb&MNT$2b*^84g_fg4q|~gK#$tY`zEFlrw^T*W`;B-KR0N?(hlceXWV|fu`|p@EhdU zRP?FyE)9=F9R9C;}o!px3CGI=KMA6>1hAXZL z%o^!0If|^Sa|G+uCa@k>+Ry0O$FMi*ywDLNt$A|>_HQgf-o0k|@{>0s@8;9?Ya>oh zKFa%ZF8^MTIPlhNWZnW~-K|B)rPSTc=6W&rFaCVZ>TFL=>qDO0#-rFV)kiya-Pj9O zBA!S5p%3{L%TI!~$et5AyCfWZ_$og^wW%--0ZBEwZp|Y(@Bd#~};ff-HOt zS(tm(b@+Ze-u3#@uwA9f!O9!#*YbaenMV#bbrn+N;GYc%>_%2h-ou~v`y=e(6g}-M zdl){q@+T*oI^M+&4qT3Sspa>SA2}tPag!Us-ixsgapv%596m=qe95luyd!zFo;VQ6 zt0}T7ZAey?tP{&4p5_IA;(|X-l2HdaGU{36n?7XJ1EzkfE2ENUD;d?}$f#+jWz++z zGq`(eihQ%ymFpy%*xZ&wbHO=poKi%1siL>6gxWRa!N!U(d+0%%Yj^%x?^BC^Fx9$Ad8 z5&<70$Rx-Q$BSwUuz3tJ{4j#N9l-`9`6TMtfNY;$stw4MQ3Alv&FOuF&vt#I{w*u` zjEurM8yUsU|NUFND}6S%rP}z~t9yhQ6;PhWPg!s z`1DzO`Sjb~v11NQF4FDDB>4I}h+#NmF46>eK6U}=w)UPI7#0SN3lN7)PNEYFj=|wZYiTRkkp99O>9bZF{1VUj%J7Iu&iqIoUn*$s4ZmWpXxD zJN+CcuDKGN?4aLHVvtIXJ#whz;%86jOyeT%cjo(j1;p6<8N2$@d+JNS)#t7AuJLu^ zhgCZp;OVA~@edyg66dNm6x(Im2-vY*8+*y+ZY{|l|Mbhe-N@%JP6^cYlFz%d|G(w! zjcbw5d%@qGzj(wZ_PcUuV$@GNimmJt;Iq|<2a=tIJfT1VGFTaSaMa|`NS?_>pR?;I z+WTfepzTSA-`Y7eJ-kXeG&fU6-Hi(p4!HdvC1*x@MwjwsoH0I4z6^O}2S*O{Haf*eEDjTyQ}ckj_8k$iw-_}EBXO=YjD_ke_%0o zVdEdi54_6WcggK32KYsMMvw0qouW6s#oiRHjC=obyK)!e=uL6>T^zm@pO6uXYmWd6 z@jKb&#gpUkyT$C^E!6rJzgvv15r@}FFRw%fh@zK^uO-vnFVS^mn0P&~g|=q`KjnO{ zm%Yu2n~Ng5+%U%GU-5eKd7%4}XXLk*JR|g1EVbzf76#^eg-;omwzXUk2}h|<+F)0Z*=(sR_!+e<5@e|#?q)c8+{47{xYA}n4IOc zZmd{jm<{g()R@<2*4EB*6-^{BIlNRcMXB%*fBp>GX>3vO=T|tx@DJtB3!yD%;?H5m z6Jgv@#@$R_=K^3|QfdWegVPJBb#Mv4HF^a)%(JY8Z1bM(?s>?u2Z_yV84ez9;{LLq zd6cK!gZGQ@`}~ag3h$S4e)>juGBQ%vCfZxy2T%Tc`aKg*mTlx3o);lQ6rJjR=@{pp zNzbZd97k&KU&4c1iHqv*@w8Smt}btGYxU@k#`1dXF))nXj;&<o`?`suh6eT8)x@<&{U$^V0OnD-Uy&_P>&v~@U~v<`3gxef=k4u6%r4u^ZK!`poC zKo4dOI_~oHtb^dMb7-G}$a}Ti#~*yBKk>`sPCXKDhRK({<~!7@ z^Jb;yOEZs;sfmv>UW?wW>R{~z3+DGZ+MaS16D=EL9{>hiRBOCp{2EUM>{iW}v ze4qCrF^J4(5xLC`mj94)npJxZS!3{elb3&apnD{CM&zpq@Ab}W9zhI+o7X%9nPFX0 z9R{^48O5}JtTgcpYQ7h;*G*nCJVAb}DkrZwRzD;)r+KN9(_BSeuaul-&J2@1dnr7m z%E@V7=TH3glj!k`TQXP_xK^m11o_gkMQT3pGY*|g8>XgQO$D(&22FBA)4TL+K_Vb-} z`8WNRc7(&KogsN>Bx}6c*wwwQQSV4-c3O*a%10q9PIY3(Ri{j~zVPwRi!zoNc+la% z+t#mpbS(q-@16zj|3O`D7w%EUDI9j;ubO3H<{+JF4DzCQ=l^Bz-Q%OG@BIHWGYJVK z2ndQTDui&0sAvJxS=uj?1h437HC^q}E|;J|V@0YiwrEKR3K}cSVw<+uMu>_7wNlXH zEbRiuO1s#K(5`K5m$@cj08vqyV$JXQ`kZr;lbCS(y5B#3kLB^;F`1b&=e$4f+vk1% zyi9F*tuu2)G;rq!H-Y>A!PtG*KkhTb&;dB zS*FG^(OMl%EUA{^HUst@X@ZjwrcsmH*4lXPS9&F4C9$didI$o!SGH*BV z-Il(QgA1yo2U}S~PQM5;9!=Hvk0i-&zr~!8w?^AIJvfPt@p#(u!q-;Pf>c$VC^`?{PtD_?gjHIp&$so6vA{w6Zs?r*}6C**H(o$)vM zZ3}-Jf3uh4ZxS#5gukiJ?Dr|gBdK{R2TstTdQmv2c zXBK9+*ZSO?ji1TdytNd`6=yNa=`+ke{w%YYZeo_zS0c@g4+dM_WIf2&adSS{wVMC= z!6W#T&`2{;guiBIeF^j;I)6eEe=-pmPMxsd^q9E1Sh3ObOuV*Fs~;V)Z<=(m;>`9u z23H?n-`KN0euJ6gu3m7TyKfrs!+)mk#(`@sdZ84(5E$UEV;{JnZBPcdSwTC%GE1r@SK)>c;q3CEZo6f{kxj8!v_QC7Gxs6j2X?yL~Qdlk+%n4 z+pb>@ArsOo9kL)hJAf=G7jPOjSAS%pUuRixbbxFE*#V~h7nzprv6uOUCO(HgPhZPA z8<`(N%=&n=^^XJ67XEaIfZC zX87F5Jp~{4Ipz2qdajv$(i5LE&-t1A9QH>&XD|B9eO3?gIcz9u@`l4RtW#@Nd`>*q z9-m{)iq8#)@6!D3#^=nQL2T}?npK&@zKP9y|Ie^_b3&QR|NhDIVXidu6VGa&S1&!) z_d068@~r1I`z!%{^qJAu*w-DpU1!&b5B%_f+q*Wjy?0Hq5X}qyujG+>YP()Ia5*pn zFLAz|GwV&9Z@HxzA@F39HJ*RSj`PhXj;L!DPuA-bU*=kVFCScS6~STOTRi2?wE`CI z)53kagXINa7^=A@^bI`g3++-pf$lvcU==^Ps>IAWneuO)ZRix=%ihxK15cD>UX7wF zh@n(J;mc@$!ZtSWYvzf&hVkzlChqLaIbr?woTe*|*yjomL#Um8EvOdNU2dK{maxh?&>u4lTl9$p{dn(w>oc^p3* z{z_D0*R!rvu_e2Iy;VIH{cro!TH{wmpFyFbc)nFE8l<_8sS%s*obNSWdy9Pzjm}Qo zn{)q$y(>94k$cPDO7zQBZPuOy zQfqMP!`$aIb8bk>`0jIX`hEMkiIZ5TIcJV%Bz@s0rJpC+vL<--O!r=U*IdpF$19lO zc;zSZZ%aM-w}_K}o6K2;iebKTFAk9*Yf1uoXxDY;G?NN>=SDt7dOJx z7>#(*rA@pzl&Oa%Db|~2y;*~-q69FP{k}3-f&Vj&x~*B%Ezo;&-ca>m;(O}ctWwU+ zDjODxR$yP35f`&_CfN?J+H?PY1uUX5Hh()$-p+XuE>C_9o;35tYHfauaGt=&{m$&r zA?(EoY(38M%IsYc2&N~)o8TK8KAM2`&FqUU@J$N+QglvexB8pNIh6N)d`j@4JnEp) z<3_H~*Z;+=lNddaG4@X5qfHL+oe!H}82ZP*b__C_MyIOhbOyep>;t#H%MT5j;b$i& zvt0h!KZ*uiulY>SV5iGZ^3QfNQ@hW*lYskqMJyT{s?-`!uzL!7Z$1X`sua5f1SW)sbrf=2HnTLrLWkLT=E2uafzBw?s z=N?{V^b*hJv&rGquoHN;v(|^)XY;=O+2ALzl;=4xnCGtdJeOJWw*Ir9+s<2s@Ik#_ z^E0C@Wma_WKwog*U>~uRbJxB`kFCpd$--)`E9E-myNola2bOSMN$_7h`cd3HkA8~4n$&UtqG^V(@2xa9`Un$>KI>T?nf+X zWm=^}xF-2FG;6go7IC(j)UBTWBWk%?SRc9|*2uBXy82g!a(>ipL=6=i_vYe zi(^Z!jwIf!j+(Q6v2ofKa<==zGxb?iI|vi5%gZy@I{z z71+0@SFk_!|IpRU2qQNbulowQkzVSPxHY|zp4Z)%1zX;@EcjOPvS4e=Wx@Temjw^L zcUkc54=)SOoKH*z-5Ss98%ZYN=~gRxX#3TX_jX?sd4GN=bLjFuk@s%Mi@aaK`4T*T z!1Yry1K#Q#HL_m)58-`7->*LeuHJc@+NYO|UAgm4bj+Qq6J2R#zQbI1t)VbrWqdQN zFno`#Ltjp4;63smSniKxpN+ghLlc82>t$jPnj@Wn z=l=bTHqO7bmRG=A!c8(TC_;`loNR)&;57;T?Rg6J+y>=}a?U3gydocevu~tjJ}||Y z`A}~e{Vlm_!cTm{ncI-4=oS8%VC3G$CvEuW$lg7njP9u%m}WGnHzn7}HN|)WG|#n}=e@}@s1u32Y35B>kzetQ zYSqP9UkpD2&b4QE)$Q&+l2~Ee^B019{XHDq$CeRSMz6bcTcCSDw*+)^`~kB!%+%~% z=mFmjI+x$;?*jcETAJsvMqjQkD4pi}ycG?ZT*oEhO5Ly0)))8<)TfLM>w52=6NlEx zWg(Mi*WbgLN!wTa!Dr%+VRh_v+Ix7$aL(Et1`ou`Y&rg0Qz#P(gfi?e{}n4^4#v@i zkv4}PGymt7M{HP!~x3qqM9^)_Bp6n?88 zXB;jic3{>*ZX8+_RQtnk5epwG+vVrlXFESLmJ`69$%5a`UHkc;$|ox0{glX`y3Et> zO?=)vPk;HqP-bV2^+H(=aW3*{X5I$9#mRwI#`Lo_cJ7;N1wYa;GmMXb-0=PHwJ&g= z{?KR!_pqpw@!)xaYLz$s9Q%X1q#5K(?Y+{OfzR(_&hHb0$zgs>J)cS$v(yGA*vFFcNANLY ztTp}|Gr|5$&SWfp8#RMAex{gxFqX&uoG1Np?%LJB9m}icJ@V**(d<8gK4$;975W|y zI5XWzEj3bt*sf|~a}h&|>o{Z#Kab*68`p|5m@?@(b7nOR=2^`dZ`I-@w( z9<8O;g$EmqJ{?!-DP9Ot?O_gScY zeM>0#KJO2Afnliw!{pn^rKm0jm<9Xa$ceVg+@?^_$Xp=b=-?rei7ubHF@n2=H~9PK z4$g!x(X%(PLoYo`>hMdUQykvM4i66-W`%$DB6)V?u(Z0EzBGU9D(r6Y`T}rx4>;61 zrKba|^Zmi>-R?RAXRH+;U&=b)hp!Lww|B3;)>)$;nW?s{7rZn-^jHV4js*7KduZ+Q z<2wQS{HZIMw{V!;-jDt^Inv;_!fsrw4gF~B4bD#G?`Ssm#slAUQ4R`Jc$H*dMgnz#Bw)>x4pOc4L?#r3LZ8Z(HPFZ5W&OuH@Q`<7n7`F!{z zL-0+sk2Rwgx10IZIjyU~k>(<(E>`;|;6u@w?ndx*Ir`7yR*pu+BoX_bGJMIq)3u zOWD5iO%Ai?duj3lI!gFU@VvxEOSO~i8)q~3nDf*G2ela6{?JyBOsp^1dR91LKIP(oM{d7_QZ!*@H!$p_Y!yhG4=WHtfGGNDJ%5N=HJ>gDybVN zPgQ0Ie=Z*gUERuaIZS#`yzq}{gePjiG=oF9y;=R_;ItR- zR{%?=>-b&rbbI#1SMT;cmg4q+$b$kiV6R4S42JN%rtH zsoS?QX>2S#FEv;_e0{^0{iu`tt@p+Uc2GOu%Ae-`rm=yVv8h^+l^SGEwHJyNT!!4~ zyaxDsz4ZGc;8J{GGru2+eVFa$4y&L$c4iH9kJn*K;Pc3KLKfKvE(o`sE&Gf(0lCEP zWN{aAELn{6{P;#Ai_6<(u`ZN(?#KA9!nNw7;Gs8vZ{(7_YM>*R{USQ!B#s``xf^j? zE_wE-aExaQe#IWTkxQ;QKm5kIJILn z=#f+OqDM|w9$QZ37tV9n-9>Kf8jI|;>`&dwPEWe}r7pVK<(18k_slCH53e*sAL(hs z%ZA@|Uaf!aG4%C%H|H#UUBtbluWRVjb@es65gJSk|EqY!qpyu#Mkk<`mlr_CIQlJq zIdWs3Yv*6Q`oicGU=ba5TixSDGgN-!JFTt-d@jXScjvKGm3%p}zqn82;N-kWYZ>Qb z=3Iq6Jr(~LTfNfETUlRp#zkh1`$rELTb($UvDMi#{NXlY)QZJ#V}0xSFWd9ojqnuk zDj(QY2g_E8>zvvOD@be+eR%HL%jmh4-Jxn@ZH+;{C>al`vi89vFEXWreQD5p21lM=>Bc! zO1JKkoX88aU#tvH`8cPTxhYZg8o@z-dDmuvm3{aE;$+Y|oy{o~H>|0n&SfCqn%oC^M$?0T|&^qd`T>ReCO_8$Iu z8-DY^++gZ8a>YB?3$|O)wzqY@Y2Qd&E9dXR57KAY_L(mb=ZdvqlVNL4zKFATu?>=~ z5uC-Ishn6Iyomo1jqku-c&$3R;v4LdO`)jf(CfNnYiUq6k?vDMJ^&somJhDF z+*)dsHM8oHJD69v30uT@p4mILS4Xej?ZjynUFKT!1T=pdWAni&%3{O@7uDGdyl>;^47SopofWb zjj$qbo$rh6pWu&-#+KrlmrSDX-K>k;R8Q-&_p^cF9CuxIeyV+4tI1D2qIF@rC_m*s z{}byXPvxghqV3+{FJ^zAdUyEf(Z_ARjk9*ycfZ26j6;9Xt#ANySipzAJIorre#Q@x zedDLOwA+oX1|OzZ`l4z0yBYpIN-XK-Ay!cu-cH}uE0~7A)AM;9auesgeI>GQcPNuy zX>s0|FR~B6z>f3TIpeJ*%sk?mUH$66InRARsn~I6nBH^0E97i~F5m5UzBB8ASN4}# zkIis;%D?kj+m=#KRJMGa=d^zHln25y44p3wFBW~Db9@{=_u}FY&b{NTKaO57dprGV z@mll*a`(6QJaIN^!&Jj$_V^~d{_C6#+0avm=|&O z)Pd-c8;H*gEGv4IJym|S`_GQ&e>(faP-lJZ`z!iA7knIVe`q03-tGR%?*}=*|DW6+ z79bODyetcxo%H_N)Z5O7EY|*z*C{>`qjo+qFhAJ*8gbi=19-DA|O8=Z~az2|lOC*BW#xe{9`w4w0j(ZNY34jzh3GI4PFNr|l= zZL(wI>UCFaeD7G38(pv1H@3&bGV z)}ZHGJl~3r;GQG4_BQp&_Wpx!g&tB}%+NC}`J~YX>YNKyx7x^FJP?}TU)ergarj~A zq&T`yIo`(hT%EBSXA0K??S7Q=g=hXAiQS)#KdJjlXUxE^x2lH`QwDeFk=R^lPzQei z>(l7hThRG#4PrHWWb*=Wxv)AaUtW0M%zi%;A3hFV63+TZiWdCdt*iM_9Slq2f9ghn1Vyk3UEL7-pvi*9G^q|$a9!e{tWaP%Iqv3HHgo={7^Ik&gh}9swS2w z7<%(O$&LNYj{M7OXW)O-gBSYf6ZJL?V@8Kw9R31$TSfnyZ>tqdpv#D>7~7^W_rH={!hl-omfj@W*$Q1l8NA*Hzf5`S8~5^gL(|wqjMSYk+m&)xid4 zWzAu|`fV=POLl{T)w!SHG44Uk3B76OcV!Ru1#j_n#NUwH-^@kk#s6HV-|5=@(DeX) z+DUjoy6pkh`xHK_iM`P?5Jz`yM!)Vww&;hR_v&cm-Fap{vLEAjA?mOMkMh)qA4A5t zk1J#L{+wrGi{{zrkTw6!{h*ERx1V^LcdWaPAU*d^tH4;!c$@szlD}FzfaD`^y(CcOXG*@1N}phnYo;gau;hzTA2X-e#!YZ zZoB)<&k~30P28xP`>l@I_e*0tuClV~s9&a6&}Vd^a_sUslSkQ~z?YrRXO^MEYwy*w z=A+<%HR<>4hnYBgPK@iHR!=PbJ+ILF^{f8b5BoIZgWqXZ!f%$^Ji3Z?(YG0O*Ve$= z($2nwf1!F< z74qJGUA`}Y1~O&vL%U{gTiyA3E6={a z_8k`vu4hey1QUCpc@^!veBKIAxG_32GZ{T>W+tPD&CKMo-eEH{na^hsM=~>x=*vl! zJrqoj>Tl!lw6;tf9%8{u~*{k2F zeb-)>NiC#5k2;-es2NMbo6IQBJo?2@WVtVt`4W6^@gnF;-n$0;A1nz)-W!0tg7X!; z9-`j;En+aK!T%I#9(rR$et1VM{J^#7{>QZc$(|N|=ZxkRyqo#HeD2*B_4(YgP^5MI znUMpN21nj5J1f$4t#827TC46kgWPhW%pW~ksCi+WVKU7hZCwE0W2+<fy>KiuEs3u+&41wW^;Z~qRP^fdPP zJ?z~xk(GnQ1uhI&FCm~&DM4S4UN zje6BwnQ+fZRUCgWxHNSrmyQpg$37tVr-)~HW*i^p2Yc9;m;G}@Je7Fc^)ZI7)p?IG z^xxEctFE$u+4!G=oc7jy@pl5@x3JL)fuR-sI758!HZ(^bq@SujYAbIY|4)&hSl08c zz_TB?WK-ZD3`*7C7?BQ7^BJ`knML^}x7MITwU+U>5Xv3#NAnNezq|6*pS<{K^Ty)~J9wiN-q>$=BfoVlyg?0BC%yiIN9?#p*Vs_H z)(SQ+vGXo_>9>sKpaTYW#E8`NR?X(g!e=K7gwu2e(|q-vjvjbp9R~Nfu)xYj2So_(y} zET#@~adm$9N7T5OYdi3x2iuZ3(qU{m?0e=o{67H#Vo1!@PN0*L zTdJe!&BVw=^J}?Bh20ynJwK~%F}mYdb4I+V9C|9t%^zilW0R%#0&DTjmY3#UVEE61 z|BjaBnfZ|D^>BiHYdW*M4DSI;9ACioIgIUq?<3y(_%Yy7oRPXX^{|;b7vPC+0xs&` z*0D!C(jU75-a8PueZzO=j6G5f@3jK^?Gx3H!Z{-J;mCfJEPn%ET6io#M;M&>@(j*a zaekn1cIheL><@zR1aS5;IBN!151eHc*||0kuFepyh8bMFP|-84;-Xs*xZ2nquE0|q ze4Qw+6fc+szDmKDViorw!~gltBfGA;b=AAm;k9kpQ#Rg48N9`bxe;r`x4s}ecM!2g z@Ls@vF5g_IJ>v;VV`IGC7ADw{T*eiEh)OeY_ zvaFAZSzPt!mAkI`(h~-Tl6Dvh3=G@wZx&3nmd~6YGS4(Kwt1$pd3mN{LHow`$KD-) zy?c6OpXZt8S=QO`hWe~~+dZYuGX?*Q(V<9zbS3g5Kh%%xh(BF<`6mzUB`cDTB6zY- zKC{A!vjyf9y*NGFmigns<;8_J2IIxU!7bC!Z(pVM{%eu>ZQQ z9r!SdJbZq17JCwUMes?t_;R=I+Hec!7tKY#zlq+h!nOwf{jBK#>p8f9=U_`6DlU<~ zWZ-n48G|O;v)`sS_z?Xyv3367+t0bW*5*O!LGhq^xjTF({3=Jcy-mGdbHfmH{Mqaq z=R{gJPNOdTtC6>xzQ#PvJ|>PRUN-hS_nBKJn{){O&*uL*kv9C8*peZU#17`O4m>B4 zPWqy)itn}Z%36%S#M;{98LUxtXECi+I@H8+M~1hpz+XyzYj;&&W*Eh-*Yog~79f+i zH(iRohQBl({W>4|5pQW7hi)`8I7Z?xG21NJEBu`^@R!DeZ{#7tzS@e9{SEf3*mM3M zz7?`s6ka?KSp_D=wpH7&`@6lq`+!G2|7dDm^mkFf%20Ed+4o#&u=kx-a33@|uO<}i zbGH>NI;T3?o4HlO&&lw29Gthyx^+$`SvNc!_k|C3;$e8#*kg80k@`^*71%v**gX7o zYGGa8e7`A+d})5CKAa!_#P(+&4Z=sek(1iXf_vx#d;)uq+Cfu8u%|DvUi8`f;P5c~ z>h=8}c77k5T4T@1<{Iz!i=6NOdwE;EaAABobVdbxT?0Om9~~8I-{-tDZ98;H8FY8| z5y^yPBj)UNN%Tq;dgbbT_B!-RXwKLdYtSosdCcFf#3ri1hk7HF`5AQ9^UWM)c(oJH z=Y2Vntf+}f)|4k3e+v9gPU3~+ihqiv7cj4aXEI|eyno4M!NXnfu^rwq`E=s22UgZZ z4+Q+t1K@ni8P>c5_~{2m=LQ>?zr3Fw>HUSd!Tp`|{wGCN=1Y<@BadUk z>rO|;z>#48gp2{VWb7ZQ^V!GW?K0-d7IOBf$X0b{+4@9Jon!YZ55J6F)t+qLD?GjY zuDxseAF(|@?)TYtUn@W!D2q7i6lT=&xh^vSAMVe z!-<;_KVt2n%~eo5UUqsgajid-tUaCcP;$*VDQ)BZQDS5D@yqRVPD}Hd-S?R9oiXS8%Go!fjfyv0 z+G*tp4ne#F8ZL}yH_N+UhCHDY-WG`Shyob zXl8%4AVaK~*!9ke>ORbW9AM6P(j2i#%Twpe!V_ZtT{1$kyEdJx}Ez%uMYSN zI@)}X56JcNj&Z$mlBySz9h(5wc+!`-hv(aP8z0^<02v2HAH3wnOFU`k)&B{6=iF|ge+}GmKxdn!MpF*OQZ2|n$tUU?f1qK zKNyStTm~(lk!1tT$QFcoTYQJ8Rr97k-o`_5uXkB10K%3n74|3dloR15!b2s{+Z@{ zh3V8Co6m{yROs_NbHf3ycWIK?0xvcAjINOUiT@Mt(a)tB=hY*_yZfWF-b4m~eH-UR z7u~QH*LoWG_zM;%KXfur3fEj(U z3&GcGB{xJ~zotC$`!93WMQuN0=O1nA7oK;mMQ){k`0g8d<#Xv5eQs>M!17=^r!?~l zxh!H=JBxmHrioo?wwm(#6BZn)Kgi$0|7kID4i3FU%LFq{gva5`q8R>F@Jaqcw4DrX zXQ+OW--xcQyedYfewfPfp-9)-c)?`yZop*nZopcFkJ1yY5uLGp>6ziTm=$-?w~m-S zL(lycxexUXl@JSwkH+@mxh@Y~4-X|qbMBbiFT{7^WiLO8mu7e2rL&H~ORipzA)n{| zTZeqQwF}?%lZ!$A^!|q~55vESYfIVtt`AQ9xHI4Wea*4;z;7S1uh+R^+ArTZ&h>)p zBJ6rscK%x6(G~2eg6&Wky^J16pzDoJ_v}Z1I)VGg_FIpWvwF}=KVUtsUOEk# zh{I3 zI&k{vuRNNxZ6@V4%^7nQ_ABwLUH+FVg9*-8lwT2ed9=}$v(a&jiHo_jQ=_@oAa`H6 z(|g}W=YC1&wXl!5fBStoL%RLG@UZHAZsy)@y^m@dsWTlU{(g!2kW0T`61klG)GOG% zvYQmYDB^6GHfq#Mv1j+97x$qT?fy>1bnPBbVpPi&(|vXs^$px>HG8ylUwaJ>z4f01 zx26V%a~V{Fvlkt?4_&Doc3S?Yqo*$GZwZ#ySLgfdt{6c*4SS04`8n1t*_S;(nclzN zoT(x{$O3;U&NNqSI1BuVw_SPGzH=zA3tuD0P5tdzPYLOhVtWsE?C<5O16cD%yEddo zwI(~*8`k*jT9em+y@%hN`DbcP*q6JzUygIX^bV)i72Kx;7((jFJC>n6>DC$hsSpFR?)S9F_YE6i{^d-*NYwZQq&;uNqdXwT3 z)ti|01^z_6iEz(7Rc|6%DX)05Y%iWAJKK+c@hj%l>%E!#gWVBB@2K9yPp+VedXq-# zO{QA`Q*W}EdXtx_HrK6hzqJ5Ato?eY-lU8iMun+2@mz1}O}Ia{f%kg(#e&K2 zyh^{;V5@D!_Dyi+y==2t@Kl0z>pJP%S=8PbI-}3;f4XP=-vXbtS?7GCnYe?i&pYg( zp=*DBxbt3e+cECt%D_DKhVFECaaSG(?yffFd92CRiw&ot7g>|$ADdR{EM(ZrQfIH2PyWZ_1q6mWwXgI)>@LX%YoOGhXQ(|WjC$^c3o%Y zj^6Gwu~y0QOyX%*JNFoQAG$7Z#U&$h%gkKFkMB3}g?9fb#qXu}^!fnTJjj}cQCm@+ z8^9jST3f(p!%UwfIT~=Fc)sWB-ODJhZs&x z>(lJ7)7evJp}*45z|5>gKT=<~T(zukQWGY3;IT&I~opcP^igwD$i4T>N6JJ*1V~v4!(q+G44-+mbeoTCv*jm$%zzKA21~2;> ziP2HhmW1XlyQu|-)`s@=zRZQtTz;1LG!AdZ#hbgS8HP7gt(+^tc{RSV)Kjy@+kK(v z1-C!C>w?#weYe5aw~81_`5gm7!9Cw$hOpvvjiJmIu8%{H%jV2{agWuvs)oOBVb1WL zM||_N&lnw!y(8Nt37@9W@8>Y<-s{I^p6ppZ_4_pVyM(;(1)RZi0cY?CmKyTG1{TiX zDd2Bim(Te<`969k;EC*1VNk!zel<7R>$*kJUORK6Be_QdIfZT1_w5Dtp=SU)GIKSs zn|t#2?ZDo^J!i1KPW55jKVJdX}@5M8^Vb+}q*P24-DvBkyE*gY%g7_p&CM8FB;Z z9{^|a`?s9oo0p5-^~eC~6qr4!HC)MieGYBPS8(qwU$%AQmT%gAGzCI?Q*yYM2pkgVx%SFf2_LCgq}K5GVNd+^c5@OPX&5xaXrB9OHs9w;z# zeTw+4JCj0r!?@WGeWowDrA7Xw&cq>KIoO_EGWd~B`{DX_zmom%aps`A`=P6kT3T#4 zO)U|6#pm>Tyu=KXDcCZaVZy$+-t9rs*%J?QpRw$#JLvC7==_5`Uo_EXMX`y<*RI(2d;ApOUyNU-{cSdRgVJO0-lSuE_i50- zzOHBbpWTK2ooFxHi1nNZ{rhyKe-89NYDH}vPYho#`g_kyfOo2OKSLDbP9oI<*X|n5AO#gx?_^W$DGU1M;PZ5nfsWi#@p1TgGCXYS)p6nb1dI1R!*beXY2-2P^kjB znuU@a=p%Qyb=SLJr8g89|3X~Irp4s&XP|}je|jMMJ9F3D_krsF)4mUEUDdOGlU~~9 z<~s3@!o51{B;#9SuWn(Mn{3hw_O%M)+=@%Pv2N)V)9;EL{pKv|G5OE(b6a>XTC3MM z{RaNwZv4V^zD#PUFWT~EAozsp&8p7~@9hmgeKNLXcpCYcXmsB?+YkN@^$_m+0`_41 zLh8JTixI!p`LX`R^jr>Q|G0>~l5?AVnl}!9I`n=~JFkB07tUR`E<@ElTSOA z8O>9f1@6M4xO^$&vvspKKRSv%LiJjv|8C});j7@w0e4aF?9iZeXhSRU&7Yp=SvGaAIQK%<*IS&IcCO@vy~d~5mBZ5o z+^@i+e}8qH`$_k`%00WYNB#{x+SMNE8k2tD0TVMd@cb>8ISBM&`#g0H+AGyFjs3ga zi8W4C>`lJM51*j+iNA+a??R1&jSKcs>C-rMf4vSat&I`d$y~`sxX+>srsc zUS?hKz_)vf1uySfzcHJ2b=qsawDGLrUyiee3xUDq8|9v_KgRXS=becz%vOCEHjCns zr%N~TsVe_Q7V27^bDX>OZN7JNf?3Y*-sLkNf2-bI-zRpE zPf-q1F{3TauPWqBZ}e0y`@zs_ta%}NNt!vMDgH(vIP@#{vh=RE;1{Bo*3VfG%Jil# zslm!=m5$j*d~ok}d?nzv=Sa!sVvdzFqoR&JYdx!(bK~}IFUjmf7s^IZkE436%zpny zSx_*&MQ@2aqhc)lU*#(ZuVYrlTB}dpmCULT@7+qA`yqVTE3sWI)-r}3nk%xcOc*{) zZMK-j#QDB6ff-x5Ws{X@!iU%X>*i1AjPMt!hE$);A{MHBSamZ4rm+WOgKmGHJ)7LM z_TwYOyj*#bd?v{8DsS{3S++dM{#B0KmgC~^`Qk5kzr)V-Ir8H2m26DO%kLWSq4;|w z@?z$NY$6v4eiNHJa*@fEC91z36l(&v{O!f*CBi8HMu4-$S@h-1uwEYt&Yr3s z7QT7Th$FMHSDKO82OSt(Km9>^7dPW0C+FujP=NI!CY(Q;LWU`3T)H__fVc@6?GFS=4R`?YJ68yJ0agWF_pYcuKgP~hNbfh z{=~H-;k}VuCm%kJ?zrN&)R3B5!hzv}9CQV8FPV4h#5?vMWI}r4W$qE@Z|G|0hmk#B zHG3(1tNoZdP7|Ay4Q%WMa_ib>X5wo{f84YEAs_vIWaD=JC$_T}>|t%s5leiNIt27q z4t&>kg*C65^Ci=3kbycM_C35j7=5=p5Nw-){YqT;KJw>~+$c z$y}p1HBY*0tnNi%Fg*if{h3B=j%3+@V2ZV+rs}--{^U!^@ej<3Ce{%vflkx$&7n(q ztd4Wx!I5628|edJ?!bib+Yi!*9sB0)ihSRWikSKU0(I|iGPyfL(?<0Hzyoo3AwfQi zI$3O<3D~F19U!)_866&j#wO>={`meTdI0#`8^_CK-x18ovFxFIU;BA@5cx1M9!HPf zf*!pI_?idTME{A`i@{ab`+U>0cAa_Pea79+calBhUxP!*VBxN|`uBn7aD}ha^-1^o zO7H|O->>Ks?)tnxyVn4BdSE6Ui>P1)kZ$?M86h z0^cVc-1511-9K|+Y+gdF2HZA-TgifWOFUrc4IYG77vJ)w5_`}AZzA8%p%d7bXQPv6 zqm$*&N4R{eK+2{RQc5aISsFjm5_Kt>i>CPjdA6$pdpzuWaWd}Z`Gyxgrmr?$$~ z=a>HI*!sLTd&Lp%Z}e^svQWkhyMFL0^Ayx?@?CmXV>#%CvJjt#_&gMx{a#1!iN(KD znzvcTEHKT{sO_x3%78~Ya+o>ikvSTCe?EI&vaItw=4tfP$Ud$?3F~~CJk~G_oj;@N z`853g^Um)R1BnOee44?Z{yggj2ZzGh7;tv7^ETBVbtSR*PUpiFTT$8AsqvPXlROjK zMQ43bJ5U@OM{PUtfWHzejF0C`2IeTo#zCjzYH~lJsB)`1E9B`btk++mK3loGTiO4% zylmIeYj033y!;Zys&(I|&`I9URgbT}1vgInD072!Z_^{pbL0;h``vTR16-r;lZD9G zQ1tmY@-OOftL`6uHw#`Lirr#r)~b!4zob&sfv*5(X11;b@cWs(JNyEPbtD{e&qdWLD%bx$iY`m`L zy~SSR_w>yNz~4eA_9i^xKMqQ)=oJ*+V@+1(+lte^#(KDJvTSSmLA%C=wKp~u+Ogp> zUcIql#dM)dyWVwUrpAuW;v58G4!`-Oqj&Wj;#KlL6*nwJcNbXxy2PgHD6cz)%oxSo zb*m`W6w2HLT=zL^jeS<{Sx39wpKTSp&n&?&>54nWfyQt?h~nyv z*pyGR=F!B~pZe&*hlRT~;_B`*J-FLhFzEDfg51crJkKm)c8}M0_xZN&8h#_bJNU{M z9r0OYm+Sq`YP}!2R(`biHzn5AU1vDIX(Kih!+wl|%fyPy(3SW);5oV3A1p=Qrk7ju zenb3Y5PgO3*LI$nya-((9rr%A+u<(XEpWb5Z^eJrsD_m~u>LnhE@L54}T}%?*KJ@$t`}?X4kc=r@Dk3++Vj zGME4Q`%GT5oxcb2>gT_qlcNt4H`sgn6Y8bao{mmTFhlzn-OSH6`w@8kxZgSL{kkrl z^TEH}XIpl}%*S!;2I<>}+8qG?~ZH@DOFZ?rRhA*f%(r>7Hk5KpC=~^H2^tcw9+1K{>1?4B|ce26s zD!rvwVpj%+eels_awZ9Mmu&vU@JYHDU$}`rEhBT{wVbuYyB>>?3(f(~IsZ_*Yw68T zyxT^uU2u*D&K71Y3?(+PjrT3wfAsIIpmM`Y%OBtM>%Xis*T#X%TuU#TuARwybM0R^ zZv=b@KZ-Z#Z^aGV&jeR@FtN8gH1zD5U2MNIJ+yRfzwba(WA8QD^NVh6q2IWv%lx7W z`XVcd)lDb2SCJP?--U10m={!DFxkW$g1rw#^YL^0qGt}U*Eaa_s-F0ZuRM==%=+8< zv#(r!V0;;8ts>(G(N9%f!$ZDVWqOla(YaIUK~t?` z9y7G(`0{t;O}HU)+84?r{il$7!tSmrrVgOcnKN18%$el#8Or7G`7Gi_sS4&yV#~Ln z57DJNi%N2s`*{C`yKYA}PG`0V@-LY(XGd&D*PuT?x({7}ADMhZ{EY6aBlfX?@3{6J zVso)&p-eS=s#<{I)B+?-Er8$9pZLqp0?s`iik+|(`kVKhKYBVeoJDPbpV|QSLDM(k zey3|o+-v!*`XOYCx!;Ta?%$Hx#1enda{7A1e)JXa_+*1Mb?7TMH`AK5XAO-1A^nj2 zO^z&+hn{NP&OB9mfm>^tqgBV>7X>1+-87f64n5aOENK55HV=-`Z=LsJsZ-4(7pobN z`9JYRT9=dt^A`JpE#Ojf*IhZW?U51T>U?U_{)cI49fOt+iI&6zlDomrLTI@JTF!@- zz#9k8SLz(r9el@rk+_TNz-2A8oegbALfbU7RW4t$Jp$S;hCZ4lAljPu4sCCSw%O2@ zYYlDP?{uwb>;5+F(ANE4v~~YhzCB&rLEF!sAZ>ra{O@jQyAT>;M|f$wPP8Syw|_Ua z@;mG~8qe$Zd?wy-KR+ttVnC^vFYxI?n|J1+xgbKmzMd; zC09=q2NB+9`Z{{AzfS+AY;S7ZGl@5>=vFg7C0_*8uUMs*apqpeNAzup&d`BeL`;nC{C@Eds!ti!B%!|TvTyE*sZ zENVv3$=JNh3l3joV>(x~*RNLTkCpS&KPqSbC8E|Iou)o?$KVz=93Ft@z^3T9T}V zxdvt}lGW61X8H5XMWTOc3G3IG4k7GT}ka9;8wXk@7g}ot~&}@19lPhj;5}o zacWSsr~zjEZZCRy=r-&%cs21FwpSZ6g59V6&WnTI;2?$#MBQaZ=l;0(e9*;V2zuAp z^ggd0NB6bclZoe%@_ipcyqgAX$`>)Z*Iy=yj zrOF=G^9KuA8c2;q_p-F}ShDo5UDkCHvSeuC$P&5s?q%tx!2AhW+JP(`MULdlAWL36 zTml|q_%qb7W)eF(WNBj`M<0!04##aa&2MyQUgDwoxjo?M5pXo~Bxydb3vNzSmXrbx*xzH3knVk9h zr>ZXuvwyd0ua~X2irEOOupe~2_nP+JH|$01oy@4}DVfpqPHEo|FYEsp?BTtetjr!} z7#|=nF^XQbX3l81^v)0J*}rzWwE!vZZR~tr)#LVC=4E?(+!E|%No+Osx>-)I+l1FT zdfWu(PT~qN_K&T^PUBqb_PI6VD~v(^r@8lPdfYav-;I8+ZRF+@$MOSL^G0kQY!d4F zO`lsqH8lz5dS6Cxy7dC9sq24Qu#w9&eQq1UkLSDw!RYq4>36REsdEOjKAlPWJaHn~V*kdWQ8?)J@AC*uShan2%ph-PZb2Y`a2WRStbM`>D$Vk2yThmF~l# zc>8JM;Y;qba=zWJJJ0Gt-W~*hC7ci9)t$%Nw~Aam0)IOm zyVxGx?XinIur9jHhILdoupT(ty>6H$TIW%t<zsL#GdSw2G+7ug!OS3*3Vn>N-wlw z4Y@qPc^EEUb9#XF9$<~<> z4=@A!RP6N2fHe=@QHAc`S4^K89)K*iKx`Yvi2@V#2lBl0EpO24BketmOJ zvCHrNLVK-$UTEtPFTbzqVXghN)|2F+4X3!)JeMxW=B#sVSfA?#)_?5**3{qGhfWgK zC8r2$j9EHe>GJsdCr+2#uQ+sp2VWX&uk~(ct#OaMOzL5+5!M<%$+cd6ifes}wHhA! z0`|c`8`djbSo?L@le#|~KU&ft{HDz2X)SFgX_IA<5zgd8gVKhJ(T&u8{{pMxJC zxv_Y?KN!ar_K^>gEvKB7s}GwpopnsSzSP7|bnP$R;=AqSmXPO}&^q^9yjMO6o3%(d zMF;pg$7k2eK5n;J9UJ*~4(!K_U!ga0uvc5R6W1cI)NYeF`3YiLtZ`(R+QdOi**}Mp z&+upa%4>*ejv=O5L`-uZF-=ddWO=S{BsKcECZ{EjPU9qZ7bW zi*4I4cJajfcAK;T+g@?$6;8ZTHmdOB;%g)E%0Gg)HN29K=@xI*Bg4P%<;W0mEdNLN z0N8=|e%sc=-q_IOF8n~;61-m=epc&1)_Ra3!>_fT7@vHj>)iF6xQ%UODB{A3ywCd3 zhV>d3R*$?7>H*e8z&ca1)%{-HEvzF?5!P=5tK_}qU8`N*7rkr4JPep!dH)(Pm7IjU z|DAe}e6e-^zop2n+j_&*wfAp$;Yeq_ky^pI(d_q6qBo3xiN5&g zUYEa|-;tMIqu)J;AN(G2f^M<-YeM)8@S|7+x-OFf-Yh$Yyk4`yp7QY3f%oj#{x3cF zkzUc~Cbr*AY~1LS5V7*-kfjNM_E@=U@}2l8d^akb2Rt*}0}$-=pROe45%Gdf!x+pleI0YxtaVZ4$dneTogxb5??y7Vsy1I2?UA z0)3c5AG&lW4zOHt0M)7}$79|*IiA_*!z}b6*BX83ey3}t58dCU9DV41FMa6#t(u7x z=M&7={Hj(*A8tY))Zn{;20L_`o-Nn9 z9DDYj6Tz)x&wkd$?J?|{c723Bn~%Nb>d=ME9BM@mRQfn0g1m|LAK7efEcCW4$4)y7 zzu^UYPe0AYC$)mE-Tnt=5qsC^+G%B4M?dB*oP_Pu96ssTfU(miyRc$Yu3m4$np^-} zqP-{IxV8sa&l0TonkNJ6=2L`qkPB;n?BAc*u)gTR>ZuD}*aNHwGQ_f&>3uS=E+-aTGRuq^}sq4 zo91Nj`VXfF>k1F7!lZz+CLXh4jVo3lJ>Ze8XL^A3 zO!4bU;x&4Tu%7OLwRE`+>(9G^_5L1UZ9PKV<|Og@=qbY5;_uJ{tLto7>$-vU`W|52 z3aqPo&O>+00~MzT>n}X8`j^#4eRsWz`CFZSoeKMJm)0w z`p7B5n#OlE@o(&b#9SNJhq{6Fx*lNt4`AJPl6akYim?8>2iDRm8`gj62G)^1z`8&&oMEzkpJeI=qA9?fZZ<~Hhcc!v7)RU@9u`=j(pYhIO} zTVPo`{2wiPI7IJM-OV4=uO4jewCC(`2BGHcokk9&d?4^r8^Z5Y=c71S{-2n$*N-`O zBP`YUxcl3Ll3}6DvybAt({~vfW^v|SZl|8?ozO&mPVvUlV7#nPQ0tSQEBG}}`eK}#Mo0GplhkcFPL$0IFXM{yVMtn4fWv*g*F@w z@LQg5YP9lih>RFi9w|7BdVij!IsbarY-WJ#Su-^ckk3uMKcAa=|Hh@k^bqE5suwHS z8UAzGTLgbI`RhrX4d>SKRy%RRRi3(n%X{GE7l3_L&-pwTm+dvYiZR>-PETc@_!+-7 z`V3y4#T>>@g@+qDc=)p8@bJ&Sb_^aS7VGfv&Wh)mGYI~>hQ}dwSCH04>7f1Gx{GLPawhhi9#y|S=)+H{lzf=sb zlPg+MY!&ZeRyNm~UeZctnD(X@NHa|LhUg>p<+qmcy42TuM-lx&OaH#~;T&I1-DGE$ zjrx<+ALi8Et}pln`i7X&-k)MWd1G!K7^M?h9N7H)R`;kRhoRoA5xh4uQPdmk^tTEo z^_1%T+v&hHXA*P$e7#$n{(=0cug{LFfNhKe*YuHgf2$X+nVPY4wV$|q^{$sr60Ri| z>a4K7Yp;X$$~)QdBs*uly~WOps1H*(pZ>UIW|3OA+~oFH5$@^|0@snne_kv!h_B~4!qpEy*9WjUmWlIlhuowpOL1{C7WDTnx3p| z^_!z_rI)pjDM#c}KPquj?G2hAqW<~<<`_IcZP3UpX7A#!sfR)P$ba19$Oe0zn?HHr z5TDTprhc#lwL8RicB;Pk)~Bcqw|t{y?Ac_m~;)zAt2^_f9@L z*)`kqE&Hs!mh%VVfj-Dm?%FT#cg)xnz1Lo8KJRTlzl6Up<-g8d8_#R0^Y=x(n*DMK zGsXIm*JSQ~s?ox4U}iwl?y29wS;w&@AdDR{lkfhtYES-E10Uv3Z~~~1)J~63bxG83hrHy72LNlEBIDzRY+zok}A-JX2w zodWjuhvrn?`|z`m?3(QBV`fzM?i~tF<{X-R%wCa=qx|9?=6%#~?Za~_UtD*`qr1lb z_Stu*)4Pq{Ebqg4C)0oAoA(yi>pJd^d7i7LoF>?WmU;ZL? z&Jru*qrW^}Wo6p)>eIpN0xRQJA4Vnhcj(u?;^CU^CBbxob*r@BAsjeG8@p-&!~&*jhU!xPQr% z;DNd+!Gp`D1m9jUC8&GNq*nO=XA#FQXI(cCN0`s-G|kXv?#p20&D0xF2ibBtb;CDM z-}8hOk*v+8_GdOZ^yc|?4djate^9T#M+Gd+#>?yjhTfXJ3$7*C0dztIXH=N^X27o6 z9J7A~vg~uRF9&~|M=O~6gTJ9?`sUT-S>^q~&2@QJ@gdf59rL6$-{nsHfAQ!%cvQSt z%e?f-)_~RkujBo`9TThpJ1+is#lsDKtaro<{coFh?>oPJWY0RXt@$-cLGVp(G2maj}jpn;-{NE(}^YQz<1XW7W_mdAbbw$UG#6+@;f?B2FGu$g`*WG_|~%3ORm z-|<=d%p~fC#3ws*p=o!togT{k@hV$(3~hOT_NPSKb46SF_~VnI?bL2)t2mf^JK)`Y zS_f@IqAlMU+D?YHQ@f$hoCKgpDJzLGj??DS~ECwYivsWimPgtPiO-*HtSVm z^MAfUjSaBs%sI)qx5lOkINED$z+u{1mwT?tYR=Ws98I?;Prr9+jwh_97w)thcP3@b7`IWtypP%(MVo4mFTkUnP1FUwvZB0-IL<${O|eXx5p7tz_Fm zUod^}No2=6zeqgsA3RTe{NB&y%kBjhuYLsnDEs0B;U^K$+~@*x9>RIx#YXi*E4;mdg*&(_w-Hj{I2w!rCKW1thl4-9OOQFub#_B=NzTxX;w6GqZM`O zT`hXwNFCKQyN=4>2|7zwy2I1mCy1vMx;4#SM{V0TR1>+lf5Q(Sw7$Jz3-6oyFaDvs zAMHPIVt7{^{B_o|mH)B8fVIEl^_S-F?6o_1{dfKkRUAZiT?KYrC9`y@uk!Yv_N47x;aM--q};cHi6(zYp>I5Wf%c`w+hm z@%s?J5Al0uBdrJpzx{XbJUXAT2lt_uKkhfMV@4AC$;{)baOQDU`hs2OaUJCVkE5&1TrFyt zXHZ|8mYu}DC;b>l|2)WjgfnJmuWg>|3ogNjX~F*3GQ*bP2Z*;dS~)vZW9aK2L*8@N z{<@6V63^Yhb9H}%b5kSS;Wx~OrYYp4f&2J~-x(Q3mSgO@!%PidaX4`ZzAHn=s5b&R z_Stg0)7?+g(`-3j%$#%mJrX(Aob)(+nYcWZK_5}?H!Pe+Uq3}pbMv(!`mLQAj(ciYNkXNh+;t4-$-C83p<21)Q<OF=*xXItIVbK2+>+=V*Lr$o&<;X9ItDRxO2QT!|VGC;pv=E=AS+DyWVm9 zl`GlbyZS4#wGEGgJK5TbkEGz2B=mFRB}sTB1uX;E-pRSZ3f@$oea)TBxI>qgVK=6r zZ45fqkf&Nm?X`TDY4T^-`_lZDx#K&;&*C5bH#`rW6RfB349=mM@ekOjp$)&t27Y)p z4&TS1%hfzX`{L6)!`Nc*d5e`>CwpFT+072jo1JI9!gHQtUU)OG@VX;iC3ul9aF&=9 z$~@WS{u8*r;Eq>SM-5)NMtg#H4?tIDlE4Z7+p!?aT=YiUeZ-dGCu&DCd*@r3TiW1-&F~F+ zCf2|nz7jvX-sTm_!Ek1Rl)ij1YhSowN#7&&Gpr+;~I5vTF)XEr_TbEIs!vS%Ptw~^Uf!L!6SmE5x`l&P?? z>XPsd`%qnneF&|*&j%*?LwbG;dKmq^fcNwH9N5yp)(pK{xSuUE#2$W&-2r^5hHB2t z&f3w!?~MKWHDYA=F|s*hH}GHcVV|=y7tTcwbIl~DuHW!BxEX#^Sw?VALf7UdnZDP6XJ1jFMFgJoaju6SS>g~W`xJRZ4JBjFbnc(^o4Aa>DVKS z6l1DGemm@cWNkqBmH&^nvw@GQyz~8;OkRl)5EK+_2mwPx#a0Dp>6S@?qM%|+6fJE- z2nrUha&1>F?IsuyH7ZQ8o3?Z}VAObm3JZGal-`XR6}{1l(AM4S-pjlu!GNGbWfp7h z_xGH0!XyUU?%k^&J~Np)^Su0@|NGnXJ?MwAIvcQs42-dT80Ts349~u2@;&bYeKHYS5auf687bFFuB?-5`T* z`>~_1EOz^tI{hg}IsVlg^`|_upZw|Fm%$xz^lYP#&s=F zrSEn8^7}JV*L;RdnoS?eF7SOHeOWhx1MiZ1@;0#Ru)Q^(BR&f~)SHF> zhQ0mv))klSU*X)tQs}c*yh;9JPqUSJzX{*pS|2?CGXiaI5W^h`j@DOz>~7bGti3J6kEYiO@Zv%m_TieB5%SqtU`JQJ-W`(ZP-dS(#J?sYLsCubqu%`*1);|>I4(7#HMguso&FvL% z$&uBL?~5}^C0iWZQFn@nkJbR+ICnD`9jSx381Fs4ok`7r?8O^z2Y&2XJT%h5_spGc zCuUPO_L}vz&@HaLxXQ5?w~2Rh7MHBTUfjnTl%u4(w`S_x!P#j`Ics#aEPnqad{b+R zvOcZnQl5!50>cgPtqLD=f)g%|fCJ>!6@-Qf4#@aeV;{dZb5?Wy$qMK0iGOBZy*IYB zyZ_D5qqBeKP94psUg?qD&i;k--rmo0_a52Z|IRUQ&3$){0h9aPeS12w?i~B6_U+y| zCium`izGM^2R9<%%nz1hd%63Lv5xN{k5m&J8AUznCSHaAz-l45pZ?qup3~=#$j1n5 zjQ!2sMdUzM&cp{%glr!RZY{=^je$S9?@j)UpUxCtFH6gY`A6C&B!N_p<-=eV)cX6Tm#lI8A9ZApeQCcfrA<1@DeF4<{aT z*QxU~ceDYUDEp29n^WDY&m^Z9>nM?8@0en{D`$-g|@6?}R zbe9wD&a3c3a4AY3n`flML=HnQ=-6kcf5-3i9eT=o>j*v#Y{3}M%U2@(W+U@PW*`R| zz|CS{4vb^K_>FInvs>Zhh@Yr;U&*^u&bVTxv4!+mo>9j7=mn`9ZBNH?*O0pD^Dy5; zjL3Q#e}dvYX*$*qwT9`eVXeCc^kek|ewsD()_%$Etu3@q_#J&bwwAg5%sss<70EBO zkJj|RODzEX|B2jetz9;>)+gQY1Z%&gkXPONuKe$c;fjCq{ct|F>=%iZDW`m1&(TH? zw=;CN8}~LEKXH9d$TBhX$)PKdkC8TdV9fZAeYm2^tZl`-pgr_5%Pt7|>=9RIa2CGQ zA>^Izm%p9<@`v)vQy+k@&rQO0xkGF_!0wf~g3(BKmvk49nhHWTg&) z2fzL~wb*|2NA|gh*!YQN_rChLb6@?5Vy&OgYlfRUN#Ae2F3{6{UEtvE>jIm6Gyfo+ zsT@72%G3FvLFtb_Mn^F6-a0#UI(r^O=QA>YbDGX4{*uF5f6Y3j_Z7q6qzmfviH)bw z|KLyl@yKQPRn}?#&*_74^uf5J53Wzw2P4#`<9nDUTkJpfm8XKhz_MokLHeTL5G%gV z&6RWXMEM+ar|m-ckaM?fZtIo2j{x%*M_DhZAC*U|QS9q@kCmDw8lzr7x}qn~??ax) z&p^QaHbwyE(F%_Yw456zWxRDRPWN$#e>jO z4>XNUKWUIPoQj^F(i*0+hFW(GEP?z?a++ymj3Q`<|vbUyKpf8l!% z$Bf;>9-kRxf9Rd-twH3}1==69EqQUZ(OHLq|3h0hLYv)N(P6;tNC`OLACAwdp!NDM zz`q*u@8aW|syZF<)}_VR zcC2&db;YXjxpm2?o5(@SXn2hpC)r|8b7z$DtqSoq=JNhkVm#TzRda=NIVUcR7wxXK_jyGZhtvHDP7oZoO6-Z`#xW&dhh}wfblx%b^J)U#17` z&BQ5UpOj(4k`G9{HTtnHbpdgOXS0SjJo}RMj?WruY~b6Wr`vtjrINF^&*1FY&m9%K zf(w#`7a$9#A`8EaEc{3CGrG%{^5kcX-~2!_XBTxFd}s7hWb0~ca%jV?_(nfLCq#Zm z`A#%-wo6lg(6hYX%Rl9`C8&Li0QZ0T0=WB6!hLRtc$6+y<>cK$@mOI3zaTB zBBpo1plO3 zdYs?R8F?|gPH5YU)nyQ?i!*OpzRh~suZyK;v1aLl>T&*Uey_jNdz^P}Vc#uQ*fMxC zEc8S-G}ICd<8v|n&53;+DWcb93$e*M*677BW6bv;Yt^g96wJIh=H)!=`4z8|&BlJt z{sXVTS@xQG^xkqaHgl6>Ge^;ljE|k?qQJt-+ZvkWK4Ns#^t*Sj2Tvp~dQ059n2WiK z8T%qp!ClPguZ!?o#qu-5v1ZNz9Z5V#ezVA0_bz5$1@8pDN!`W#FnfsLhmJPEcfp^* z?q&AqG0yo$j8F3t;<((!%-U{57df_*P8|c*`Lw&vXi0f0#`k615v;w>S_T~0ca-(T zv=(GcIdoEmzx;Oi!69maFYsH_PqdG6Y&5@Xt5rC!N1I3VgU4weJQ_1nk#^tq$aG$L zCeoadDqGCnn)sV}jJ?6UinTia;QZDe){y%jpCnRp9d>WZ^M*$5Ci59q!+E z=gGVbov9vQssHLg6Mj-_v{N%Fd#Dp!c@5tnGPNfN%oWcq`ctpD_c*e{m)evWv>(q6 zrZ!fk8Y7LsoS0*bdE_sMnArctp(y*V|L@dfpKeX_S#{wkI3s`JCCKBWTYcOa-5($3 zxa*2+xi4($Y6pB@?tcGI;9I1fv36NuPxeI`fy)kj9yk24aTT~-1pVo|YT3QAE5BM4 z+Ke8Pu8Sw$Ko5p*2xpC-6P+kJ#aY+Ut!1fnm=(Ko54Nsx-nzlvyR|m$b0=%_yKx0~ zZC_1a8{cVdFG@c>cy_2vYvVJ6&+y0pp|#CqZR^0bDeR50b)R3)wdfGQMRvAqJ@XoO zUZd;4#a@0h6FY(LL_gTA_-rSIHg_34d%b+azI3~lu{=5RvjdLqsqqyP(inHm=QUms z`oY2=_n}$#$m@Le88>FwM>xk3*Uq;`-M~F*-=uDu->jJDtm*p;c;z>DF65QZ?@Y5x z6Y+I{q`y4XNzAkh+U;g<2iohx@9$!7@ScOv`62M=1HL=#A4WdY@YWl!^Aq4i0=TB* zRt&f*AK)QyOnd`hXgIP1SV1GP{m=(A;^Fb%K$qToBku;tp3liE=;;9Cyw4at(6!{% zxr|}rxlQ;Nz?tN(zbu}6|5fl-_9fn$+{K#MpNZ!-vDP-?x%<8#p1T8Fa^ty?89(+maM|KZc`$y~o8#?4V7$e>|64HTeZR4Rabzq!Vx=R)HUN_d>x`~s zy<;U$(F57PayqJrhbUHT;y*5Yw5I#@8_9QmcQLvbHV=My&a55!xneBs~t+<49!6P(XLSsf&=%+o27;71Z&qH`-W zwn4s=0^`d|e(X2;MKwNz2>M05WJDkdof~}~x=+_LjIJozo~CE~H*(noqc74g+QnmA zfO7|Dw;Naw&^7)R-7L}q{dWMP-N<3a8%+0j(A`fG-J=uT<5hHzI5{Hn&7Z7k%W9oS zPO#{=S!d2`h*#nBz8@cJjN~&<0X%V_Pb`OX8%gYyT!_*ipkL&G2P5mk|MJPn{9@g| zN)r%riwpa5i-T*+?DBO%d)BvRDbDlG!U*wo`~hwZ+|c?e@Vbl`_zrR`6n|6<+{qa& zJFc8j&3W+qD@y}0YPWPI{#QzP?Vn38 z9ofl4b7QBRZF~XzdOmb|2mbjgbY$^_&TpYxlfpQL z7UpuE%Y&(9>V@FHJP?u1z~8yhYH#f@{Luyc8_vHGcJBt}od?ff3ZEX!9n1^C$&amY zaxQ-t`@)g6%#lBW+{*$xI^T^uEl9(`JA$gM8l_xc?Kjitx?c&sLvB$qv6q_Dur79t97yO$Eyb4cbt8bn@z6V zFgwn^+FNmzizJ?XW0)-^w|%c zpJ6{tkLo0QU*qn5&Fc?@Yq6u_z~Cw5M7`wHM0n-F-bzzPGMzPC44y539|E5Y#oMW~ ziUBv}RYw*w|HaHdo%t7dHQkv`O`K@5!l@CM1$`KrtOy1I(21dsdWSyp$WJ|5KY%_O z`E7e9^H|_YRv?j+6-ef11v(3|0$n4s0^Ost0td!s1>P^r3iK3b1rC;E1rANg3Vbj% zD{%PYtbnQ61C}*zo``Zz7C|R_#eW-FbNj4747kO?(*&@K0p|p8jzd>d#s&BF++l@l zZ+H4?*WN@gBjS;#0h=b->exf73$s$3nIT_YRLz-dz!Xy`t~`4fnJMw-5g(8`e{l_nd-bX*LL-#gtn0k32kY_y>fwrOx!L{Y!^@jO&vIW>|$hDL34drC__QD5x zhueNqn`?sSgyMGts|{E3J>*x}8HkggJ^${{8kJX3LH-mzrD-OI z>37MdvcMYr9OifA!k6Lq(f6B?qd%&4 zc^%Jra`)XoP)o|+=6Q6jI-VErOp+)0WL;sX6P{yo-}yUt)j0I4LgbE9Gs2pTZZ(Iw z4G%Trp0xRgM~UI`*^>3M0-3|C>D0G`RTsXQ{4nn8eLjo6-uH9=_G{d~O)ly3GU~;> zc?;38s>!kMoN{^Ke)g$#oXb7j+PmJDEaL8J&b4do<$;zAYkK+`d&%Xg23`s1OwY@g z@e;b;%JKQ8e@a7UFkI^!()0M~R^@l|@;gdL4Cy%Urr^DEe1Et7yqm0hEBHW6$cz3nr+g;1C7dqg5In)uvt#B8-0=R_4 zJNk4hc!AC>it*O`9fotz~jN0^!0SRxEF!XMBz8$I}`Dx} zGOSAy$a;KW#9w?4-;Za6qDlBZb43l`Vov5rEEs&Au9ms>`&+LjANU%3?L-S1;6nyv z*h|FARBQ8YZ>7mEt#^4g_l&DY!1+IdU%T&1&3naM3R=I$d%ebpzf9r1p%s_U#|q#H z)QBah5ld1d)=7<67d2wtjnt2Aq<*Z4`mtu}$6BZ#+d}==Rx5CLha(?;L*1q)A7TaU ziCVD)wPHzX#X6}K>!MbyyOBDwjnt7fQAgHH9a#%?WLu~s+Ztq?U|_kM`zjSo^2O+T z@aoSB#`WoYk*QX=Vqq}Q3>{X?4F)QpyNY?ifS=ds6f0H1xY$a8;K-o#T<(wzmaeej zM^o#Z!Gb*Ys2&|Ixv^!NsvwU0@VGuVduKr~8y1 z1s7ziMBYR9S0A|n-{0?kA49Kqg~r;O)XVRZ zuZA|$BOunC-IoV))~m#Z7`uPH&~WO7Mo=$wIx_P*VET2tvw3x(Ya_mb=DP5otrw~l zzo-khUVXf=1Rm7edzS6cPj2gqe(O3*>)K|$I2oTA>#EVZoc!C5Uvbv85Ex&<{yOhyL_T*npk5qYiv2W#%|UKO{CtJ-^BO{vaqM}OnsB-`;M-dpe8|iwe_sck51Q>@i{pgefpf`)H}h~ zKPx!1kLD6f!DVnq`USb=A3lRFRZZMu!fC#bR%L)FTkNL%0CgRO7)f9?9R zSzkIFvC-Hk=h>KHcg7vw`)!@+TJlVEo{i;v9t=F3#;ZJj`eD0MpZlOW-w}Q18--7( z7Do5dWTBtweh&HIBiP#NzY^mtJCSwDTT#8^P;9IS^wK$l-VAPCP@L~$*rJ)#MuIP4 z#pO0UhhEA#7&*6;n!)<2QVPG=1j{EoQ||ClY^){*xS=s|rN?(cVYr`eI6!F&I9-%aku1$GWx(x3b|4x%f#<%#s+|(9o`GVwUE2?2UD&$1H>Qo{U*` zZ3P#R?WR_%3mEUf|I9tj8Cljl?ZYz~(A`tz=x7?lt2b<4w)pr|je)P|#bpzY$Ei2$ zYQuKI_Z;a7rY^%TDA?()tg^qswqeY+;q-F}Knu)4EoS(E3)k(}mcEwO9CMCtH~vtLbG_ zj}N8L?dhm`a|Cu-5Zs7vKkCAKC0fF&M|sOkYXh zE&s84rp&+wT|`by6>+tiZ>rwF>WSZERqnP<=Cy3HvKxAd*)M_z$kvh_p1y`}um+8< zdG)fK$o1l_~*Wx>~H%WO&2V;0C>^s6Cy`dHGxA+nqq|=?vY|OQ!Xb*Q_+{dNa0wlD4v&rLa;Z|^ziLF9h+7TQV9qLVX8 zZal|M?&Ll5pNQuu$EY;f9t?Nx4ibw~&tU#`*O=V+C0q8rYUg5i%Pw(hGKl>5v_<$Ji47lK8qiEiF1b{ zvUHm#OMgnuglMc0A6Xoj8(SZm67OE=#{O1{cY8AAe8~{2r+tc5Imz&DpUFwAgLf<6 z>QuZt{|h`u!bA|0L53Mg8}r3r+Im9Wrt^_}T{T z$2eQ+rGZ}#b2_}9*td~+_g0;n*M0VPCuLp?`iXC0tcwymN$P(Vi@!=W2#Q@8Iinb;xvo<`O5Swa1HT#oq=;*MjTyoO3^Yf|wR( z(;9&@6=-x1^W z9sU(6uA5^S8*c^mr1HTuus+%5`p>cNvK{+wf$Y27{`OsAnteCYXY9KvT4P~<`%W;* zL?2pB+)VK%$-ekf&fpVhb~$GvIP9nkX9Mf~*m;Y}p{*Lu5*?9zmvD^Q?PQg)?Y0#y zacsK}seg+U_)^i0PF_l!IhTmfp_e@l|KJRbt*1UxQ^p(Cc?-EO^`|^!lWD+!kWrEmn9ju&6>NY=T$Cw$_--C6^CiInH6Ed%OTs85+PS!EdCM@FfbenJ!a!oejB3>nfJoz`!CakBYt!zR+ zuO--n4_H2I!UrBwPZ-Y@J1PJA+k_wd1M-h`X+1{%2|w6}p0Ccarc2+bb@v+GS*P0U zOEcK3$eU|E5N~vWFC&;-z(d_;WUL?Se_{cMCvz`Xoo35_R zx{R*Ot1BD!thO!--Sq82b>(e+`5if|8+jmpjo(K$Cb?&>jp@${P1=u4$N?Xb2lB6} zA9iP9B{>e)ljCqhKl@U;ayp!hOacZs4uIF2|8Wvtf=eHqfSJzzb@{&doxyj`LHexD zp^n#dxc^$?@ceJw=e@awM>Ci+9nMK|mxyJhl4D2NN#I6rB?D(;%L8Zp4F=BUZ{XYs zoReeEu#;78J{RZj!CK=RIm~N1tUvpfD~DP8AaZzHpB(OmUn3i1cf-5;!CdzuXN6w> zKfs(ZOfKEs%+U*841jyO92O1zfc=VZ7+u}vA)ch`q|ALfCEwXYjUDo9GLC? zM)E;-KP5T4PR=mS*%_NGZJzXV?i|hedNf4e;pBj`jph7xXZqk@dZs5h)4MoR>Cl6m z>3r`@WlP?{nVxXYGCT&e5HmAb)RgWb87JgEoClhTd1^?~yG)|Cei@@i~Y6Pr?QD|!{bl@1|Y zLVARB2=x`e!qctP6NYi6Tm9)q#zwAMnZ(DLV-5Vd4gOpPf8OZ&CO2Z=-hw?S9DAA^ zjhXl;i+N4&=dAvQy~y81@K)iN)3++i;m;H4{e{hX9yq2s43B0`PZs(lW1v0B4AFd? z^*j1quF>xvlivk8O82{5j{eYRYYh1AYwmZyxCx&S^HmJL$wu}yJo%&GhBjnNH}sRq z`zCyQlX)MNPQe+NIL62F$(&UmMFKdxoKkB14RrRB{e#6miMW^SH7v|7wX6tC>h@k^d;&qgHpW8Zt*AeD@ zW@{m@!}xa&|4ws1JDb-${u$Zk>c{qX9sPKQ+gr9zKlVHNacL#`v44Pmj0_U4XA{5b zY$mRZ%oH7|e~NIwY_v5!lYD9QK#BTq+g^F0@3Ba8F!eRzIkG7eTwP6!B#V5`WTP+8 zNgN`Z{5auN2Kz2&-_ot$L$^?${LPHHc~t)~XS!pS4mRe-Q;(^5J$!GJXuwBqz*zau z!TqH80W_P#T>`oI6S`}y@KSubGwESogdA(Zt}Z=@UCkW?y;k0Gbh*lw;q-{)4g%TO zIh9uhX6HE1`|u~4=chih*TxRl^VQ&?d44_f^4^bsP`tqpoai6aAzq;vzjXF()D86E zBC&n^gxmW3geErc#K6BITm+u|{DkNl$+6&J;b?I2dT{XuyR#i!Yy%guP5vw{egZDS z@7iZ!8%vLn9mC&A_+KYy*j*bmaRt@Kd2xjcfah3jkfn+#V2=zTuE1RoJ>~Ei^;&fL zoartNC%&)*I#Yb%OAE0@n8US2wx#=(o5=<7Y!S_G=7x84VT&k!Z)_XZrgaU$9;qPC zkQnZ7ScN@O?f6`_d2xm~b#v<&PjQB%*YEN!{Iqw#7oee^;jgev4*vzA-~TUkO!C!Y zce%B5%%}My<5W*GE@b!?cE4knW}6u86AQp=@Jje=;*GkC%6%rek^Ijtc;0;Wu%#@Z zoS5hWdW%Cpy;q|nQO6vg3+~NBUbG-9n!()`Uts3z_`HCPi6tRZe5&`o#M*Q7-S}-? zU9`7$wB6fosn&&lP~$?KqtCD-HRKl8`@+e&Zj57|^dL9J(GpA)j*&Oa-JJL#dB#~CH4$PsmWg#3J#-?uRuTAU(vxwAtyCT3Sk@#b)=`las{eO% zBKVs25CiYxhdC?G%bO!ncs)Al4d|o`?1Sy(3Z}(9ZX08zdITqEA>L9J_&ez(E3I(V zA}7Z*#%Crk6nrd|uZcOl`vD@*rSd%&lLupZFy+3u_mT_XKRhG36oc2qw$j&{@jG`r zzty?5e}=uawJgw%4DI1ruMSfDVjT19v)f+47CVHU!5rz|kK%iD!*CQHqC8~rIzQ`j z_^jqVnH%{AHI$minS*>w*3>C{Mm9#l<=EYI;eqEHK?foiBAncKrkz;n3m;rbT@q(} zkTYJTx@>dCu3f>|8eNxH>AK$eR&c)FyytVS4-fTqJRG&&In6pvF|2K>+a9WO?Ex2| z+1NrWb+F&Lp4J-UT!-phdsr*97+c63?p_XZzK3R9Pv4Up><{NHu#a-4j|41xU761g zU6Wxyc9wc#S7%YD)x9S6_-PVBYz_uFFcrxA+1}{;ejkgy#ik=@E%$Xh-J; zY@b=^o;h-)nrC!=s?mzFmWjOTS+*k}SI*Br27F29E!H{xc#Hauu3Sal^2I^>0rHl;ex=LH=vO-Z4EuwbXWBg# zqwPq}_3-%{>;ybM36HnYTS_m#ICLH{rEgSxUZ1$0oQ-57JSooEL63$XEyWgvAIV4c zBKaz+ABa}~BXrCJdB)>hI{EJNg1du@@eOC%NpP{VaE#r(!52P3Zq}_+tkRzPZ0?@P z=I)v7z%lafkAgGldfmJ5Vd-_Mlah}sT0z_cJu5c*q`f9xG2J$P#ql=qho3 zfOO{SOeXm}EJzO3at?}5AQ+sHKb ztluBoA50zPyYw|a=dSVKMsS+%pDBeFcFzjD39cQ44?F_iwt>UoUS%2QtEiA$cvY@@g6F+6in30fQ~H^F4re)|9j~3l zS?T?~*Hiay;?I*qkW$SMLW` zHwstX9Qy`(>pn_v-G{-|9v4>+4vwpPJX~!lH@Lb@y;IPA*GuiFf1)-q zk^?*{f`J=coz?hr{Z9YzymINQ{riW@*OO?@4WOfjX1=9_j)20k}3i|;&L=B@wfdrZ$xgg=N^SCea?XXo;45`0Z|n0phRPhMOR z$VPYW+TD8EhQ$!+MT@x`}UUXz)oiEQGS*Ua^v7gwCYc*usA87Fp!bOhx|6}JB7Q)D)4S^_MIS5Hga zQRet$nJ3Y51$*GL8SG~+`VG$mPg8sF3G0?jIp)5~-w=Vf#;WL5!QC3Yy?J&oa<8{{ zB>61(7<$3v!cxGt#cRy>?zF%Q(ow@W* ztyMhdEavOO18O^@ucUvkUV!O3Qq+I@_MY<`*!&)w`XmmV)LSK)~se>br4_hl7rT!&05}k%SMUw5A$m@mb z%@~rdEWcg3a8ml8&gpFRc{o3G`i<06cL78Ay!0lmBZ@pQzPns%0)oDGUT|V)>*X(< zhzvNkljr%p#qW(AVBP-?Kh$rJ?S%Ia*vC|t7i7BlPH)x97;w%gpwA$<^9b-M5x-{s ziIrukRio%5W^DEgLfkj7t^Cf6P%$~=6;J6NZ*nR9_k}grX8H#g^L-89PvrZy4ZV$u zBQDCp=f(HC$lX@19(w6{g~V{m$@x{j_RHjJSKJu9x5f%?uei~=S8G@We_vbK+bCJ5 z9w9N}Lc-5#_>E=wGreQlGeVEE&m*(v+8@uq+CGL1(K^JF?wpO@0#CYYzGa_rzArT# zyj~Apo4eR8V)TR&{#3n! zE&<;8(b3}g8LQAOgopRBR_&pPdns;U529tqrpk75svB;kcR;rC*l$fXuL^g( z-5ak69DvWg-+V=&2bw#$<%+LF0hAw^N|Da8+y>k7>~70)7nO{Z^=Xt*5|WM@xayYx!1^i;qJv@5L{(NUu*&n};3QG{*X{ zjCDSZPb2TSNB3Uk<_c`)nWuAu_mmA9E5x;UIcHN z##(RYWT>acfvo3t= zqt(wGNRrAfxGf7{`-6fZmpbW0$$(1Ya}NReR@=B zqB$d=9N{Rnr;(hiz>2KdWDSJJu3RamUc}k$2Ja@46xor;d57TRU=jF132VvmCznL@u`f@XU^y^+B5) z^$$0L4@rUE+(w)BLO(hL8hCZg>-S)vTLC4%}S3vzU8omgAQ~Hc_*=zO*zm zbRIg`$@&i6A0gXMHlXS|$QziC?jJnfSOHGN@4g~XoO^Qr?4N_h>oci)Fg~j+*RQ2MwVADd$Gr~5&&K<^cyIKA>G0Wh)!=`r z^=#qaba-5QS)c~mvE2V0ecZu68#y)*|EOt7#dn|wZDlNS0(M<$9jR_GauogF3jKTY zQTT5#FpF9Q${oCbK=~1CN=TuNB1Vkb9#b2 zr&q{x;;eei`N4B)$@yHxxkbUl8RYSsyw3r6ILU?mU^x0E?_65y!uRTIz%S`W3D%%| zwg}@!sZ-8I-&9QPi{{Dyf_XC2=BYZ>Jj7iNqPz7wzZ~E?(h93~Md!4Q+Dc&Pqq-NcO?A?p^)8NB4?`ow>=`&{-i*t9aEM z8qee#E(BMR_riY@>sX2&!5Sq)CVhkR=h+Hup9=i{(S_il%PZq|;ny6%FRQ`3CGZQ~ zUF_q1nfT={D^;l&SiHZlWHmG=era%Uz;{1(zl$v8zEf`v{dnbQc;y&)wSHdb)Ho!Bai8^*hyP_pZl&yqh}3)mEv)W8l$xhG)%rqKk=!uIT_D z%;(HG8$Szo`z)cJvxXjI!VlRyimA%ZQan_#&_pf#g}HT)hQ^3Nr*A)up0&VT#~r~` z44DyU{zNS_TZPV4qu2ud2Z_0k$v~f6OZ;Tr7~pmmwH3Z_*Lzl~yJf6>qBtk?-Kn}e zB!`{`R_O;dIf27Va{|ZwnW3Wt&gg9SjO6j}fAl^dLw{WeFJ7{U z`#f{eQ{e|oSo3Q3vBa`oSn{i-fmxsBOb=4ms@nL)#Ow;O6JtC_Y^0-XxUXXZb`rH$ z+b3WrslUu?>=%Eg=~Xim{(l-gVWl<73IVkw(Fin$9v%y5&GYq16;lJ2wut!S%WQeGiyA){Ev+j>AATCxGsL6-1KYBWv=Sg z8L7nFIgWn-xUdiW*}?5gep3=4mb1QkBeW&>)XfM9M-2~mVbsFf7mb$PIyAIdJ+gvD zp-y7ds@q!6cTRn0cIzX&H*(qI`30Q8f3mLp+?q5wQ2@@?|Mhj{w_~R`^2DjvzO_X1 zq<_73q?a|~lZz2YCXSfO#E+K1XW;oHVzZt5GvfGmBokga7ap*VTv6n}8`nX{y^eg9 zKl9%joWG5|j(%TFeYp7ca{T5)kqg8$rZttK7r^sx_XSfIA`gZk51vCFJcm4JqX$V8 z9J+l(@ZLv}2mHMpIbd=eLY(EPBfiCJqb9$7~u=ie=kJ;HP2$R@Y_He_ucz= z--G|?;B;ghd|mtTe4_pOj$C}YeQ3r=VkM*S-*ews0r!ph@!z92r1Ry)e@hIOz4puv zGA8wc_!(8pncZC$?!>>Av#c!DH3R=q?djyE;X@)%Z5ega-81O(vg34Hym%SBxVs71 zLNm)s=&OAjyus9c`FidHM|E$Wd@T6b@v-7~o{y)0 z^QI-_xX*-VE+rRzhU5vno8S1B`BJ6OQ)yOSL+MM_J3e1tgJ@+Lw6Y9eOtisD!BfC# zKeeHmp&ueQ%vqxQ^&79`8^i_Y6X&S3C)0=FJo+%4PalR{&hu&H|JY6LUVb$AUWhNV zmyx0Sy}kUX|6U&depxDCdw~~j`u-{Qa*t1OiFXR`E&7!w=dPu;H8KyJWbZy?U6lRD z*grn?QsHN|{Jy|J_kKzzl`fITn%|Ht)9;W)KbL*)J`=+~X7omK#S{mZ-?Iz9uj-X%hh%pArnF)OM zJUJzjGey_?Qr20D3kO2Idk4swwZKDihV^=K=8udWS?kIfK2MLy%y#zxPcm}G{1zBF z{BwdUUveD#g?;RH*BRR#Oud|8Js<0EYTN%>`7!~%aVq(8fcRn?a^`&CWO%S!FD{*X zAGMS01s$Ty{!Lo1jg$KJP-CB8RW1Hl(9b?kV8I=-GTGU-xS8g5Db8XbbuRc<1?>l($?=Tp+R)TyMem{0aUoeiP3rXMNx@x6ma+OgzY ze6DX4`TC}B)D465je^fFf_JNr^cn24uW!`xDWP(FuJ<(%2Xp5>{2 zuQ@s08uJ==ZP2a+gFwbVq5(I`A#!l zDM2qH-mxW^n(`3eLyO01@TQz9 zY5GNCE%q3DN&?Rl^L3|*RVu!tI7An`w~IKM_=#{pxgUB?wFB~rIK82j+lJRpisxor`ST=?_%BN-PN4h%6xg7u)nL^q6NiQ^UBk zA`pY0N1@}$6vo`anxT<0_Rtx>Dj=Mjjqa-&<=M!yu4V^j&Ye%x9ANJq$*~?&FK69V zaiX3(jMcA^_5H9-y`+csgVW3K8u6&!F8cSXmkRJq=NmIzII7OJ4VWc?Stn~EpRqN` zz6>7$Ho|?)aq~a+HXdV+qx7CgA7_#`&QfHR=Bmlznf_}T=RMN}4U|ALqsS!z4%N!h z0482OvfyIk+q}B6cfI;p|F5sZGl09P`2p@zBKPiFPM*f{sN&oC4aev|D|xycc{&$) z>hMjkk9AJyDaj|s6znzMu_pDj?q9R|u?w%B67ZYv8v^9oT>Kr|JHJ})W|Xc}mld?{ z%Of7Fn8k0#hn7G;=gvtrdSiRf$3-K|DS0Ot`iHXTi_215{MPe5z|+fH&^@asfETig z{=!4)1E*fWLrp9~pD#k6*XOdg6Y)m^$@VgH_i9(O^b7D;cdkBrN$7q0mW-Q$UX->^ z*0N2wmn^<2pqS$(ct9IAgm^(4J$;Jsc_&M*BL6mbn(%WKYgI0;-v7PU&1-u$GMe>H zKyQm}^trXb{m*xk3%kh2tK2@-{lEX2`~A^t@d+?iy6;kZq(;E(k(_n2_r=u5=yUB^ zdtajd+w8rIy}SO*ZKbzgYWDnvKD>=(sdxWoaF__cE_e4>;l7sf8i6m5r$$9*)sy{S zc~-&g4}vqL_E$r#=%W9ubpeZf=>N7$%j~h(U*D7M1|K-wg0I9X=&6CHWMMZYecYq| zY3+t5hZj8bsxPbImJ!r$TLm2n)|7@7oeopWA^MU6xxy0icql)n= zxG$st+e>@&a6@P8;jVB;eCdB6m!mubK1`bfPnv`6_ek<|KSXE-pq6Uv%B9Kw&m{Q_v;~^raVF?fiWNekMQ25okm-c!cwgAb-LA z7vk)(0{iD>;%{I6Q82Z_T0iYWzSsTd<&62|;HEDYtjmQY@)wmzJk)6Nf-yXOrO~4dB{bKHE#K%z0BS zdk(lZ2inkF;AUkI+Nfq7j_e!Ks{0f0HK3;(U&9{x8al3!k6~Er5BM%ZkGs2geKKf; zx>!dqa`cgSui}TPJmww3Tvf#Me7(Juo1r1;hr%88zSHkzM-_e6yYs<&tB=q0<@T)N zImvx;zf(_BZ~g{#V5R)-fIqLJ^iQ=L&Laaia)`FuZh35$Wb>a|SW1AW2| zHA-(djW~tkI@FC5qnL<4Y;|33D3=_!_y%YknSZDeUDQ0|EcGj38ez{t!K@j-7Cvk75&g!C@1|bzJ!bT4^eN@jy!aXMNO0zR#1#c^ z!R#V_@AVBlhxcZT9PFk1jMDf9AAa2oyNiBQ-Ca&ks$Wsl8OcHC$}i{pGQKb8dwKwN z(G!rmS1(?9E4|=8D;U$)i^|KHtp+EQkG2^;XyWmvU(%JwO^)+y;H=ze{Jf98jedc@ zLAL1(*Eg;jeAVAS3C@B0>+$3@u|?<#nM}K-fn*)Y;)xh zPbNP+3p{##cvgcyi?{lFS&N)UH z%jqNK!iDpYop+N9`xegLa{qJuUwOv9E4@ngU4B3NE>i1D`50F^uJL&x|6}NT@wI}5 zul4GydK=rX;C>D8G`bL2)uKy)FNwA2p72K9VV&UFT67y^S7iho?7}Z5n$!Eud1pu^FDp>p@@~&PbJ*r9`IBMpXOw#v3Y&+@l=H7~S z_to#*8+nv`k91x8b~;k;7$yLSPXgw=dEoAN9!|^ok#ha@T4;ho<8T!70we1X)aNV7I-X*UCa<=XJpV25ujQQQ9h~b4 zehY41u63@%#^za*kH=XohDNIB2^W=p#rUsZ$ulkdriR}xwNhUNHw;evh+e_e(ZrUr z&KBmA?5PRD=UqG?KJ{bvt^Mc>JR4toRm?;-vglYf(d4A1;_&1`_?06IxD%9TR$U7( ztzvxmopex*q2E@J<0e^`kp9nisu$PiioqnbR>q5n$9MSxT62u&S)3$}4D%N^)!cd?cVXD!}1ucVK|cbdbDbLE-NID95OT=%M8u5plE(FMQ7gGEkSdS zvbh%=zj=(@F`er~<2#=kdY_&q8s8gRHk|BZ_2u){p*6&p;#&buUBHGOZ13DU#`wvN zop2sC7zb*&Q^femr$U2y=4`i0_PTp<#(>A9&D8}AwbldZw(oDHMquX+_6KbXIR6{% z^DeOL^Dp(;7yfOAebME9`v5d^EAm=ALA~yvne{ajM}`vkrY?ZD82&Zb*!&K=Vmfsy z_d5PHr^l%DFEhrdOf$wf#=uUQ7UQ`x>j&F4Uf=o{L-xhM&orjaIRk!Kg@JpOBQ{stFhE6oy)Fm4@ok;aHNLQnY4>kJIf4lQ~MzaRJ+<2;rBj_mKN z*`SWx#F72vvgrM}e&Q?CY;BqkY&ttuJV?PQ9Bqv+x z4SoNz#h2~>)VJa`Wb$nEouS%iJv^|Mb>D@|LPuRS6@FUp@Y7_iqpO(S8h5eoD$$yi z>h5jYyPrOX4>S5{-GdnVtbI}%?D2H$xy*9yJZTZT74JLz){yd!8Qb4!M*x31u&JiEJr_bvRByoux>d(fq_ zsoj<&y^)2`z3w87ZK(?%zgWC}D16?zD?ofO4vwhKBeHIo zJ+L42L%>OE60eCX|9itV==j{((L9gZrNtIu}qa?W14 zN;?1hsRz~hM@QC$>%kG7z5a8~-^ovU@JgNk=liinccVMZ#z+32%uh^gg^lWrD=gD*N!{mjEC(ML~q0=P4 zGkQI_NTvqSdSdU$LgFQSulT{I_;$>*X}{N)$%;7v^({LW833KW^W?bTKKV13L61rD zSu`hp%jrS*3;bZ(KTRY)s5u9Wqn>e%r}!>O4pkPvH8mpWnwuC)do=L^Ugz^$#m{f1 zpHLF{q&gMRXpVgK$nXq&hPlMVU(dEK*-xI+Dsq^VN9@%`D{nYTUd7YoI295TU*+XN z?(lL#`^T*2y0~HRrn&!jv)u1gKiq^(6l1UHK2=kLhWw5-k>@0xrEvlIp!Wy5I>1+W zAhGmqe^HLpj$mpn`j>Y;%In%H9YZ-X*u8r?$ZtYF!IlXx{0ccW`;b%0ZyEr1;Xo%e zELo?q1Ut$2Bs^WQYhvKkD%Nfv^Rj~rpZh($+xvYtxX|5Zh3QLc{Md@$NN$>*QoP?- z-`l9Tn&vrxJ)yj`Xnt_}Px(9oZ#y~wmiI!}#-?)h%ii7a1J)m}_l4u&b^_c!5qJC6 z2&YG88@!H>=2f{=Q?dh^OSxI`>3p`~26)f{yK8qag|5zfpWQVYT4oQ9o#EUi`ty&7 zr?8fz?N&bf$&{VkMK`9Qa8J~Q^>}5h{30R2VAr^ z`G|$9Pmw$I8usR9$3LdKV{bBdRgyc!_v6tI;>=UaJPF1ToFjZbZNTTsi+EMB zWWVD#Ttlvs;tVfALu;7(Npgsw&llGGYH1+L%~jf%o~uM|%3yv&)lo?|kbR&%XdLln z`MIBhFK6@Fe(nLCgr8fm$dd0EIKRYN(9y$f@P$RJ!R1->SNr?zvb$s8+9dL<9UmFB zG~lK5^zm!Sz2o=Fz3XJ(`x#U4ldM<#tr~vgXU?0IgO+Das~!Z7NpgjRPw8;{t>jJ` z9Or2bs-v5k6)^P8S*P3i-*C@DcINz}(D(8=f&1`R8#?Fim}2T@jLfRY3Mk)llh1ly zI8j4R;X)U#R&Fq?Jg~+1O#8$3?@S)pizY|$tD*h>)7VW$@AJuS+6t~hKQY!s9PNl@ zT^RZU>yK=8^A85BwZy|o<+s(j`EAe-`3LK*x>6_q0Gn1mv&q0F1NfD@=cqme&77lP zdOPPhfj$H}#|+NV_zZ=k17H^e*IxdAz_rE5q5kl2^5Q&P6aEO_q!)h5noj7RS#sq> zQ!~*4yGxl(exbMIYrywI0zeA3r( z?l-g7bUePF{olf87r1zQGkf=P<(3hjQ?8s~B7fFI(KWjINXAKs2jHtZRUX}Y^hBs` zGgA+nS z$QxXT&P_fJ{+3|shn!_5Hh^?Aqvzm9=$vb%oO4h-!QWcI{RrND2h!8)siTPB4UCCH z*IZo`imV&jr*FUh27GTWW6ulH%f;6r-YuGkPhAqzxUxOOYl`7DrccJ?&@Oa}2zG*g z6XUmv59O{pD|BGX)!a*V4STxQ&YNu6`4{=PuPnnZE?~^@IiV%&#poI6(p}(;^7qDn z3z_fkO)=hCxx=TKIvjj(+G92TJ^4y>7ipCBcy_`sSa%sPDq7+XJwCK2kC6Hs?46uTPM*h^toezI;nTh_XL84>&zanS^`-y&qR<@9=!~>;7Qf{z)_e9% zCVvlwR*Q(k#}`;BpX4aANBW9tSrHPvFb;}ehYxnsLK zKB`%!m;IDb8NG!xUMIeA`KDyI8~;=V&*Kk^)z*dOGq`nBZbR;YmHQSgn|yr22rJw@ zJD8e$mKA;tfAhI3tbpKZ;_!d$z2w}iU}`5lzKhULw!!c8oyQ-g&urtnV)&yUcsq4i z!i!9|?laS|1C={h;4e*(yDVGKPpvO-&^hrHC%-svp5iN?&o4H9q^GSF zK{p@R_>tS8Uuf9mY~foKZKz%(j$MqmjW^ky&Dc-xLD%fn$=f4m4_G+9 z|4eYz(Gio#pw3I!;9E%f?DksGz2 zJ1EMLx82J{LpjWa&l5f&y1?hON3p;S#C=R&vJ(q*a1WhAvA{9lS6?hp>vPYkdpYX^ z$8{ftx4x^01s0>XbPo47yyW(Z626LG*E61aMP+I{bhL=qD@uMa=*sc0UmCjlb^M97 zLHzbkk0|fH$KKu%cC-x|0tRu`@C14LtF3cGs>e5ZgW%ksuwxB=@r=iNlsDD>ietA$ z!O_@8d`gTX{xB5$i!9|?;2YcM)d=Jmno+#e^l#zW_&R>m2p+@NE*G!5(^_#QFm3x5 zIeU8L@6GgsxE%hmW}-E{0{+x2n+n)$nnjF=F|_W5(1d8EhT5!h%ilm;GOTCbX5A)M z!Fd<+T?C#OZ6sfvy|qDSo6cg6-=M#7f3IHQeU<8u8uwW*1d+8Gx0-P!A1|9K+3MVp zDVQ1Ax{kGDudg0AAr#^6F0DuN{f{j&S$k^NTg@R8jEvr`jmONcXaltaZml?J=`<))jE8k zz^Ie+GVy~N(GmQPJ$Uz_gfH$V_u~*}`&4d4>M73F zhW}^|uLn|sXEnZF*YM1j1s}$*%k`&{@chkuhRujyg`7xWBs%#SeSH(qI`Qj(@ct6c ze3SYZsGrylYB?Eik+IQchHn3YJ>svsRPi##8CAf%dOyJrzh_?tw-xJz-)9ateovzp zECKGBJX_3jvI+gzK#JjJ00XT>GT?mZ!>p%nBKOooC%`t&IS*kThc`-x@U{M*fAKwL z4Z(hOzxQY)fgLUws?V2+9l+a07@I$%b*TD*iQYE?`~BFJ=oE^@nlrU>LtjqYukk@~ zrcwBSXi#u>bsOhwH#)HY9XSc+Z24PfYtFR_xQt?sg*<~l*mn_q3-*@7I$Y_;Z4x;t~6S{{KEdU+z!0pMX5~g{aXF2 zOhe0&EiTN6rFgI~HBI=c-&PC-cxmoD;OV^=d=m@c0i2;^rGt-?LR!zc!>s3@8h4Yu z%*tr+{W!Q`Cidwv=zjK(f*X3V^IoTSDL$z_epqbfbj0VgcX&_Y)71~X2;ZQ;7j*7# zEhk3&tN164b=L8n^5csq{|)oSST{XzAcs-vFg?=kX63-+5J54UX^zpkv-4&>80v}+!}yN=&|ojRql)G3Xlr`tI;K6ZHWS@t1d z^Xs2;m!Tgz82L@&4-1Jue2cgux$`x%13mS#=>ax75My29;qpIi^3D8%&Qj;Ab9L6> z>VWNzJd^DIkUc9#w4Yb;8!t9gdp-JK4l>d0zwlxEL?<4!)Q|pmZomARXgo6&D=rDd zOG*NXDJ6mA)RI8w#U+8R=_P^g86|-OGfM*RSCj;LW|ssG&MgTXnpYC|V17y9M9nah zpVGU#gC_lv8#Lmk_r4X~ z#k?-&?KTIP$`-pdI^7qJUF-{+9H8BqMi2F5uAW)U-4cS^ zN3(kygJZ?_F9=QL+#?;Csp!c)9p!kU`!?OW1G zch53BY;8GuLU;eUxT&nmqF z3)w7Les~{ahZr{D_pz%`5>RMZp9^J%SumQ*MMHmeuA0)(ii2+wMK_JUq$}$+yu^!J@&~y zBNup9a!J3bAaA&VKI_u)g5(W*FxoB{IdktRa(f#8l(_{fPgmQmJGppf{(ybo{YCrU zWUU}xQrQGg<^Rei{w}+tKOD+39XR-SwM?!@acDdHiR{ZvY47jFu@CpnO09C@*M0J~ zll{nUT|+LW-pe=lE$t1yKe5nf*P#o%g8XY=k8B;Vx9<$t+j@6z;|A<4_(gj|_gnN` z;f-&_=4JS7z#C-h^aObG#4Xmem7LiU@<3LSTXqX)w-VX06x>+G8LHp(l~?)cH=Wbd zex<*10(?3uAH}Du9xAo68>+CY%E00OxvctE4bMEhx8s>-KC1HNF9$Cx&!gtD>J8tD z_wg?apH<(K-0e#x+A~w#Q>l|{r?%+rj6fB=ZmJpMCB|6%!6SPgzxKJ0nAg<&7v%-- zUCg-pJL-<3bB?xT7+9SyTztDcP)C0doq?$_1&539SB^5VgAD#Jm{D1qQe)tcM7#%uy0RF#6 zt%!8L!SKI>So=Wy|ER2Q?rk3a|DL%|;(u^^j&MZu&{7_FX$<}im)EE-oa(idOE#7> zUcwpce7gfW-^`vGUME8 z)J%$ak04e)BbF{O!a5 z^<6h|$iWOLy$g6$<(>F{&P=W(m_QIv)FcE5;i4i4PHD>|0l{0*npRtOn_$3z(IR3C zEV={&qQ(|xv5hV5LWqD9v>;$%mhA#YL5;0k+PYhI%Um*oMaM{ zl-mCG&-3t{naMflec$i29 z?^;tdPb+J>z#3bp;~Qr#!MF7nW$Y64azFE0+ROM}df}b(8EcANZ-u$u@0;s=HD9IH_BI}{n=5-|z_(p~%#rcEhvjMWwX|6tDN>*jo({VV3< z=w&{Fiwf_~8#P8B1NS%34L)WM-aya!7`^X%aoVKTNz~JgU*VZtFv9it16p2h`*oUU zdfKyeV%@T5mu8ah1ndQtOS|k>-(KdM1C2-z-$TfEfl+^8sq{%?TrqP0ApW6ZbT^$V zIvPHV9M>K7=x84pI@%NLb>jzyjuy+GyVKDw(vQ149WB?SkNxl!c`nEN-hvOJ>%N}< z3co>@u{`kIXFsnOWHHBBy|_2M;BA>#7rpqbIhU?@^BczR;PdEB8*C2$Msz3a>H`;< zN1KknTwhAQzNfLl9tkvHt77-ads=v>;wktcXN#SI%n&_RbH=$+OFpaCucMC|@nF%* zN4wVzy{_WMO=#lMjK)Hql2e}3Fax13E4=37s7;Dqd# z#IaYuG}XOkj5Bf=Ur$s^2tNc)`_Mh8KlU{42cPjROH5j9aq+{yMIOZ}?9kT>@P+Q5 z8reKXiwMlETFlMEoRNuwJLnyo@MVadC1XkaO#EIFv!w1)=`hcXR5r=6t*P{EZGHO0 zrg_8m9g5RDKfVPUf4QAC8hQ*m@}B%>oeEa7ELfr6bO)<)U}fn}ZFZ?A<~%OOpZ#b- z#9x~)KF6ctgP;9FVzsOXpOT}Iag^PJjuT>TTdDW)E-%E^i>u4QjtcyiC{j8(?8rs2 zd7B0rvg^0-OADXGS8(}TJ>!hv`a50jKikXwjo?ra99o7SU=FqXs^fJ<)zBHbZ;ULbnyAJbs5`G(B5-i|w}M zq|>iQYN69zk4@%Uo9|43u)I!ACwf%LfFndi90b%q}IKN(HziG5b_ z6?`dM3QfKuewnwhw!v!~F^|poE(C_cXC&St`Rh|=5F0^nK}WeY_HR-jEBD>`9|CXF zXUiC3C&b<-u!{X2IEnsL3+^A#JW5w$eBodE`?(I;i(TLWe*ATs_7&IuL-6EUeDv&v z??8n|eD$&y?K=HQrGF3jN7)NLce@uAqucl5fnN5)g3WgXHq0ZRoZ!VW7uF=}OlO^f zH-a;QJ93Z2p1y0|Bej9>=!q@dD{D>zw$U1GVGFg#E!%Ald58FE1g?@(By~t~_JY&_ z%DMB>C*=(P!~8$X|8x95&;P6B9KPL*i+v~luomXiN+12q+x3M9mELH?<*ocwRoBGa z##npY+q`yv@p(1>ud(lq(3;A%*bQ%gfcORe-o_7zuk&tAY76Lte~0WNG^O?tnlktC zsO+QQm9n)CzzZKJRDPNZ#I-Hj@|(X8U8}hjok90HaR=XS-Y2;jAAlE5zJCawq}tuS z?F9}!ix>g((T8#Epv#@v6}PtI!fzk!nIBF04smGw`r@Np(Wn;*Zv3a%R{`eOgO1#r z&K1qk9MO91vce_i^CNV~SpE3*Ugjcrb9za%8Xae6Dg7@R+5fh}Y}F?rz%@Xfq_;A~ zRrJ8eN`J{>u3l*TRpu+>S@u7)q3r*1)BbYVYN-t`{P_pZ zSLrELr|9P;{!W>L5y#{V)C{xi6bOxhdoUh=1cD`iqI3 zRH@qhwAY*F+{j-4Ur z%f$8v>x~~ujkxeb>5F6WL*cDn&Nh)e4xu;rV{6{nNv`Lib3Zj&0ej!NnWH%OoizxJ z`ZLM-%`xcwTfownv%=%gL>`#yl>6i!pLvh)i*i%f%zO(!xah<9`@mTR_XQ^0AGiE2 zKNYyAhjY00v*``vwe*Jc&s@)^+0v?(U)2G3!|#$-cZgbp>?glO-6;LBV&D$_OcYoz zD0I5hZD|dXmn%G|mH#qV>$CXaWiO^2#;*!Lm%XxNq^wu^I?9?Fq&|Ly&Gid;b`U)W zhUm)AFMGpzVhgF+E1L4JtP5YQ@WB2ip7~6lx53|}{xJ^z7RP(zfOj1HEe`$`2Y-u$ zzs14d;^1#_buIkwcM|xvArlh8<@NT65u=&xntTxaY9k(!D73D*;r&M~IUHVJsO0b; zANZtNJ|jQn+$MOn)DV)hgFRYH&y!Mm+P4l_;b|GP!V}_MLKBNwTU#K@h-2i&MSPj~ zder>09m*cg%yzV}-%(v#c;>^6KRuI^O}Pq@=T5&S`O9R?<4dh2N zYYeg0Cf140ft>r2OP6(a!yhfbWZ2X>YGti_R%=D)Xky*6re@&dV~s(0tFh)>YRu4g zSaU0~xrNVua^S+~s+K&P$h-iV-tEvtp z8+0i;rR3vT^x>-&doI=W}A z{wePT1{2SMd!j?gbt5>~mwb^-8&~FR@xXp}(<=zwud7bDaHgRXT0AgTC+y&XY0zYP z9sRF&<{gW7y@$^uJ$vI1gIf*Sd`@fC*l?)?CCO{s6?%Z@d z+|Qtq--&;SJriE@ywu!wqZc-tVEBtxJV1QmuBeCM;AbAJ4EjSC;jk~zyTvZw*H&wUHm3`wDo(t z-UV+_dYAAi(Yr(s6TM6HFwwgXpl><5=v&&Pc71EfH+$B%6h1vhe+BZR+V|wGo6S8D z+ag8nOB-@R_AeSo%nLc>V{Q2Ub{4?nC60prUF2o{LQBGbv&nI=l@J3XZo3J*C7!Zy zg`C~R-l-l|d*h5AR?tyw%|#2mrzf9#v-vkK@GSf?Iw9|h%@-7!R6VTFKU5E^TI@3E zVa4x4i=vlEtgi_>ErgxcUV}A1!*vE7qSqc)d#6T5jJ#Ye>%N6G{-t&Ns+V>AGG-n9 z{!Z&ar#hNz6uG zsp}FLoPtN_{BH1d>c^4M0eDR#G9yp)8DOg9wCMHtEYQ1)V)Y}@yG5oYfWL7J(|rPwZH3L<6ZKs^*)jP^8KPm-bGv}fWL~`T~*u9K8xSsUh5sm zmxp?iFMGc@J+yw(nGUm5Zs9oBH-FVFJ?s>j@_{8&!stAK{756RMeG;dqzU?vM5O1f z^|zc1a_p4v3>#i-dh!O9Y@t3$$(HS=O)s+NLH;hXXI-4zw--8*`mzo>S(mMK(8>Q4 z^-L#IeylHi=PTGS&lq*Lmfy!KejH$%4-bwwjQx>4_!st|JATw^-lOUou#LpFlKVe< zGFqKYId(Sve1!(uDy6nWbNjgZsk;JfoRAYdBPF_$9>Ff1SCj@flB@H_v>m_aBZ~iywIXp7{yx<^K)( z{eN9eP4xkM(DWX{wo!EP>i4?L!HkPOZ~4cdn<>MvAE6srV?B7GU`HN<%)JJG!VZ}m zaCzE%Mx9?lEa?#ZO8E)2$M?#!7M+yx4)NW;iC@29%vhDjfBgHr!^{s5U&(6x_*;KA z)x8-%K7H9-#pKaYGguT<{(I@E)$Y6BDZcwRzud`pzcbc%KfS2KcQ5ajo)k)d$2ac7 zH@*#@y`Q>}`czw00Y3YK^M>x5jn96C)E$$fK@JuOp(o_Tx>Ck%mlOCGgm0Dr*JxC8N7KZnCJzT%7Qeg9?fRz;9P;s9-XVYUPr-L{ z1f0k){ROPo!olG&bMUj)TmKF?c$?thr_jrOU@keA%qzvjL7}?>V9puFY7VFI%ivQ0 z_Fr|40QP=zMQpce9zXTGtTp1#SmCi5y75lS=Jp*i{0oQak1n4@Csw?Q`RiYX7wva4 zF8nFUCid&jcAxa8hEIB*JjZ8wj#wHxGH~3%vo|9Ln4i~#fp2@E#IlXES{~FFRa0iKoE=tD9NzsWe( z@5+WDhmkXwA|hvOsqo`i*-=D{d}T}`pA0<^RBY1>H8Sg zJeGZ)=Iq`+w_-NE+2_*BcfR;1<8{{=`?6hm!!K7G`I~)R-v=h)FuB&?>wfBb%a?QZ zE;RgteuIlXMG|k^sm}H#KV}fHuzW?G*E^woz5RPxui)G9z3dD6c)Je^zH$e+X3gj8 z%tv^Dq9gdh=jaIDAo|Ruud^?FZl|M8@b8$<`LFj3fAKpW9EkkeN>2{#xG8nW@Z1hL z*n%Bn@ysNX9%KzQ<{GTnjp(_SoD|t3&j?R!n`F?CPkez#=*KIx#=X7T9Q9vZ$Ev=> z`(tc)8S4*>Y2g1guC{+e*8;Z6eh0Ru{jPMa1%mq~Y=7Prw#;4ljA5ID_h!t*q8s=N zbYtwx59L`tt9_y7!&i@PbyVxDTUFfFjxW#jvOgAm{2*o@wzk7Gvu;Y4eX!vEbMu~F z;e6za!}%*+;OtaA;1XQ5y});^312_3k(}rmCXD5~=&(u_m~d5a7N5uwV0W+!?6eNp zO}YZueN}Anz!!@%3H}J~e&u)AD|To$4f(ghu4Ldp0AoW2PIk>@-99_~G)?%a!LQrp z*9JrGCCPgEtnfm3HF-(;oUUu@;G0@6Ynw7kU--&R&?`B0%{g4ZM1CCksPcV9vaa;O zo1aiIu63o_O-78XHp_@{ag|hZwQ z;tztO|HU|)q(=s4Gz}Ek?MC(=K=yZqU5g>>JoKpd@wpv#LXXI~PCQr}-%eAn-`6wG z)6rk!u?-||+t7QB+=kW``jdbs!T#DC(bBkxpZ{(3(vuX~#?`3rD02kJ=aW41Ap6%u zK3|A@zGm{nPLtDjhMc}IIellz={rYG-+6NS1cw$%UeYApv#F1^CneqKdGxUB_^Tgp z{%E-SJgY&C*z%rCu{OC#u(04e3jaCl_P@uQ?$iC7Qmk^oma-C4#n*kJ(wJqDOWId z82EPT_m5vt_4~&!sQUfarW^hK`MtZmj)xB=xp14|NjV&Fus3Yf0Nj!CVb}x^aqLW!+*NWwO!fEyQWO!tl_JHGjZb@eDRIIS^7MPjU(`xWWqU)oP|dG7%JXk_Ji};7wlS_ zV%V!oO?bp%=e|Xrlsbd^PU`%j+b=3BWnC@5?3|}OvzN7e(Qyu;SAOdR`&f-_97WEg zz)O%ROW4m=_%K3clA=}OPyTA`80rQaQ}QFJ$Z+KKPEDKaTFQP)Pc)slsnkfzIe@0@ z>A(S=6+Qb}!2v$E<3Ja=ZQw$O-0t7Yny1{NFU*HdEW8|K?!z0+tY?9Nm$$d$Wk1)< zu6Vh?nA6AfDEINXeNLV5vP1W8nb|Y#T66eBdJh;wS*x7$4$vpbc(oH4>+i$|in`$1p5Ep}t>mGD^rkur58sYo1sNVN^E^tS z52@=PQZYjGqdchxR&|c%oWF0**|#124me9KrUkogrXNOfg2Xp1`6=^C@c+}ZWd?SY z(riBZ+uGX}MIO?0?s4p&|zUV+wM{jiTpA!deuV?f=4$cF6C-$|X7jy31)0#b} z4|y=lcP)TMy!CO&IbZ}oiOuu8SA0~aA5h+-^f`QzN{_3^biKTn_lrLOJ6ib|@I!av zsr80^bi3d#p9OclCk(%Z%%{l2L*~<72YLT32EN<@eKd_GUlt!<^NGU92-YUg#NIo@ zy!Wfz>$lq?ffKwRovZN!@)Z{AOMT;YkJVEoIfGng_N$(;N;lo;dKq7-PyB?~w!eR0 za+#%vvgBo;I{h-Vq=wL+o_&6cme^i1C;6E8V~9h? zOMXK;j*Jq#4zLd)a;F;#95SBD`(9QUSxp~7f#t7E-^Jb#xDf@nKOonKoHZkts^|S_ z>nnN-{;L&2c;?b7Iq);O!JEpby3h=^hvY>Kec#yQ2H@lC)_ZWImb`Z4TKgE7OOP^?9pi_6-dEdvj@B1UY?7P5ftISDkvx)@Q zjw_hc*SpS1#uvF7E0ZcZ#=ogB4P3kU(3UW7 zBOZ|KS|Rhs&!dZ-4Xv8_u^qDA|3jxachJi9z06r)b`IWS$xg}5@7K%y z!rOh%qr-8XO%8?BkjCaRN?-5FMC2#AjCQW$$YabPpE3Qj_0PBH=~Yv@&t=?cDnFYXrb9igNi)~P^>b_L(`|lc zyX+blv!+9=Nnrkt__(zkd|7Hx^DR-5a}3>E1DQ zZnamiK4`DoJxbVKwX*Kl&;8)I z>(yU;lxgc%p3QG9)YY$h?S$R!2k+AP&a{)-+q#A_ zPy8+|x-)X~-7g$}{D;5z=-wOO|LE}-&VR&u!e0C*H_LiPuzq7bk#WCf{p|aFzj^F{NBXQc&y^J;PJ5EqnlW9`V{D&v6|S&CfP^XJ8WgE7T2o7 z?XAY3i5df`$5nN>M|4#WCj8@{&@W?o;*Wb-L-7pk^{;D1H;vSfwOsE!5hZ8;UCxp% zzD-}4eNXQ?)q~7mXjI}Uy2QK9wLQ=J<#(MvF)Qd3)502C%sw&lIl4S96169L(lza9 zy6vm3R=&4F_pSWqT@z>Yju~j|y~v)0W*+?_GmrkA2H|5F;X1jf-NU<6JHK1WxGQ*fFa`T8O04@LJ-+0;H!a!K ze-E-S1)WX&`xl)adZ-zCZ5MrRe{9_vbCvztaaWJ}+|g`$Z42GP^W5&cdgfD&__5=} zkIh=McUf>0Kejzw^Ll6Bcy%xDk@{%KPYs;H4l1{+GiLm!Y!1Qs`*uRZ=&x4%)XF(| zIaQn3daA&Y37+Q@k8M50xmw5uAA8$cUKmNYIV0nc4-1hG_aPq^A|HhB`;b|W!vlBr z(Iz2Jq5BccH$9v!ze97G(AObkqVPehw$sXq>ReYs?*i&ada5hQ_+zx%c)#p@y2^tT ze6a(2qh^s@B5+vN7Ql~i2%5_VH&%dm!(MdeiT)uu1+jQ%*~P*y8e7=&M4ejZ4t)6G zZtx+|#D^B}q3z1?Ve}Q^!|-1AQRLQa^h%$J&sorlcRX~8FT_8Zn2uTJI!ESt1vr`z zGbis3Y#jU~7Vh6K@4&C1a39;w=({2|o#9tOUp-m?y~C3tg8x=-jem!M|1EdY$BfTI z@vYb-4-h>IyT23epSiPV+_z+|^x*KDd1SKwbNC`G-<0I1NS~Hc{7wPxDJ}t5(Z7a* zf407cPs_*sZIwBO{QinpEI#r~$5`}--lY|p=9-nN9j?ZH;wB*-x!?O!w*433B z*2+7?eivEr1?XY)70|@e~dl)v_)8x8&IZ_%62g*)qz@x9Ff`pS}8 zi+RL+(EVjD)Spdk!5$-LWl{@1FFk*aeNfdY^yPeF^q)SmWZ!L% z{_yy1AH4Qa)Hb+WZ1+hS*kI%z=kwWXzq;;4{8vh^M_x~1&sPvTiHE07qgRc0abe^I z{@&G&iR~%Wn=Kn;9ZoXy#lKWzF1 z`4rHs_jJb+8f?ak!x%1;#>Ck?$wH7^_}i`_@SAi zN72`cK08ysNjwI<>LPm3qEzh--x^|W)a^+uP+~i!^Hq%-I`t?cXQtH5nc*6kNu1H% z$Mu`(FBo|XY8{a;lx>v zvnjJ2=h9|5&S%VWe0av>$->*=$yq8#*Y5ht>)2%>>eb+*E!)X|JE&jong<7OR&{L5 zt340yB>m4j$($Ydc02o)=>gzq*Q-y==$UW4-^<@JzCG2kzJQ)$C!LYy;^U$gO?r#z z@V%BYYCG}YtjEulfxjcFXOw5>!w3IR>S%FllN3EV(aY^-{c%bhwx{W@%FS}f{#w4O z&bn^THPrt|Ubn^HEPvI830kY^ui6>wuljK>>yot`nhd_Nh9~Kd_VEipIR5cHuYR=A zc6E6+Yx`aw=hBJ%CjHWcw@Yj#|4U|1POg&Ab;tpK5c2lzrNGU`rg0?_al68vYr(aw4z0<=S6&Q%WVV7o#dxcYdc^$KDZUx z#y(z7W`HC;l|^Klkc^+o6fMJt zrDxWVmH05=-9uImb$uV6z1#*rE);$|Fr35n1pIiCHn8CY{&VpKMA;L|7tqOvF}1&n zf&O?t`M1zYU@dsZxWYR`pYwjoIfW970DgJmTjr{hCtfi2Z{L@1nfsFQSM1AW_>kd; z`g~qa+A{@_7G&4Q7ek{23E6JlV?N^H~oQc{V@mWkw{o(Pc zqqlq{_VXclA3F9<=@}rpc?J7*GqNDo#`anFnEJa89kifBJGgJvrk9S#?Na`a(UMDG zyla$t*CG5N*iGw1*NoqZp2+^_67ON}OkMM6dp-|)DgJ?N^wjt9IUD<^OT1@iHg=We zAE@aCwk;uDY_Fq|kB{$sLKe1%rVV!afU_TX`{A`8^Z62=W8r=lUMg@GyqP@)nHIti z&btJjB3mnvJ$~r_A>#9mOnDlOPOO4n{dV5vG;d|h>TM9m-ZoV*5Ltm>3)vJ55%d-P`f!mUQ+QzdIF9>Wa zjM!e#+_E;)uADFncqv#3T#=8aJqfHj@?E~!3#_cZXBEs_&dKtzW&>w6_l#biTaM2| z@Id(HB77bb@OeCm&!Y&R$CLOx;4fjlADzwN4=2)*0r)poq<`_;C8YzfzLWpeSs%*m zZI1X9eWFVkyghO&{`emupT6;%_dmK7e>^-fEb{AnL#Ye>v8lTYKNGo6-soC%_b~h1 zK=1zFf}3r%nT8G#wMTrPlD8!BmLr*8NPb=a>Xpl{rrUewBflel@WyMee)K)!2iBV4 zfklg0({k42gC=DUcB7+OJ(w?o!{h0jCvtfcv^`}YIv2Ehf!wTx*eR9_>)I2uH~rPx zpXjd6`DJ^1nY+;0#nH+hRXpNPzqm3U@vpaE8IO3Wm$8HBU(ypg0FRV;9Ah403ri0G z#bcy?5xZ9C>6u>MW91qBK;oK84t3P({WZM}?vwno7=NSKNZFjdwVrv&=X~VYI{9pl zk++@Cv2_&OvjY8LjjV%vvc*QBW><7ud44YQGyGsfU7H2YmfbJ5yJ7b$Uc9194Zw7P zH8AlX;GI3y0L1d0ijMvVxAg+Ilw0n1_x)0lJMH!!YKEp8{R6to2TpjCd|>!-Gqz5i z^n9xs=z5Q}UpM%2wWiMRoaCy3M`lw;nmL@_f%buQKGxy4XViVb)oUM6_dn|U;JOB` z^xFjg`nqO|AC5El`m1L$>VC`L>ec-jb;r0Kk9Q*&R|Na`yrp@DrYe*Q=jANo-?nDxk}#$$s1}bO?S;7&9zo~ zwm9AAG7BQxvheMX)ZN=}wz*#$O#YWWO~o{f-f+~85--kdWG&F zUumyBk_b*m>CLAhM|>x2j;A(21LE5P-{l;j9BKxXzmwQq4YJqIdu#>R=HUMp{9bac z0Z;y86raW3#%E^L)vCTM{9Wf9yRY$EAaVhpox}hhg%%rGmpZ?a>oCsAId#3zSB1yF4ZHmm`Ud05 z{i>G{?{8$?Potx&vAWzR?~=cZ?{6#kei(e0o>o8Pe%S+w<;xzZD|;ZN9m7$kNf63tFI8QJmKT<>8uzyf~MB;X(%sa57Frs2cT*d!547+s|v7p^! zIa7vt$h=h@FLNH=_)jOcq|#H}s~wxG#aD^GA~nUgw?rodx50C3vHz%3^>5Qn`!|{M zPv}3uoR^{ZsI~5Z7jFZuwbbD9{@^xx!!pKv&c|Usd&;osCGIEdjdJ$TSoGGezlZRB zN6EKrX8vvVp#~fZjjNCE5@$4cqQ>}w3yF1iu^z!e1OMpj%zB%EM~FS~iH*S=WSn{C z_(IFc;9Zh#tD@IWLni%_)OeNI#(4F{^)%o6GhQ<_rM}&Ei6`vT$Qv}qO{yEqxW3)! zr#+0_Ox>uQyC&nG!G|4Y+_U^Y$N%&E|0?g!Bo3|W%gs7;u_x`|si9L|=Nk4Jb`yMG zViOWKl)6RsM%DkWwD>;jmD;a&r<#19@9lgae9$>7$Ok-ZtEBczsx1H^!Pjw;w9^HLWh3t4B`n z#~-K-P%+UM-z+_8?xrsj`r*Xj5R)D<4SJ{)naW-TP8K)@04w?tUw8q2t_YJ3(J|R86Dg-SaNzy!9 zn5*oO)hjHt->A(?m^b%w340{pb2(ozao+IDjk)0KXnG8PSl|flFO0kbtpxc^(K5fQ zyfv9Se+zI=r@8aJeeSh47`PiSu3o-(n!7w7GxuFGcb@-i=02|L+}U@D%@{eK^brBp zKHx4e5m%7JLnR;!S#1aTI9mB={ufku-ywo3x~=DVi3pXOG`z%y`a>7^-RJ z7~1nSYbbc@SA8+=1}@>{F>{Ruo1WhCnJmN?U7c-Xoate z+%|ZZ^qcO!Phj``U7fprj8D5|GJbA&s^m_=Pm2Qeg%Od#eq^lleHEGOIpFi@ok-t*U>qi#%`{?Nt;}ZH+jeAHtRx)qg<%L?ms-gW2 zKDP)NwENTOgbUlrw;8WT#wXAZyb$}D{&B72$s^j%IYaE1o2oMBhbMnOCI!1 zoJ~XC^Jw(GvFLp_eF44iIjLPcbd9SIy8ObcmCkomLtjQ$#Yby%Jvr3ClZlM$=d8hD zf+O~;m`lGpp%=OO>DhUM`aQjF4A&v*b81~4*TMXc)`BO*^8;K}AA@-X5r1udWLTDy zGdnE)Hbn8amlxB^;HG?!9X=yG#_C_-r`NT}03Di`4t(VMP-;p;fNc^FR-00PV34ChQJ>@Lc5wYy^*OQbRjwQOFLK|zhMLS$&d4p}edV0lw}7+07jf42 zV$S+r##!IXIqSQUv%c4G)^`tuXj3X8>6Hj8UNJzyOo^%Zc7ipi(lolw1JoZ zT$y=Ud}`AY>0!4#!5v+m$p0j_cai3K2AnxejIJp$!M$m))4ds=*dg{%6}|P!=06+xpUHW_wd0s_n#|^ zFMpPJ=jDU;;@^8YM}k}*=5<5eK?iV4so*>FhHt3#7aHqNMj!nwZBYCA*JU^(M-#O- z3W0;_v;S7UBPi#z6>5k`hA5%d%3aeI%ADd&7M?^qZfqHw=ByxwJr|UgAM*X$Tm! zFuvfUz-I~Y+0SqN@DE-pwYfH81L>EeMVE3k*8rOq`4xY&a7V6xPxuvf1HUm>0Kb%8 z;CI{q0sJ<`z;ERLkMO(5Ji6lFe{cWG__sg5XZ&k6pZ|Y}e=}p?_n)`@AK+hxNx!w7 z>9@8k{P_C|vVLf&wdg3)f@cpj{d^`u5Ral z)8LW8@mjFWB9DXa) z72;fzrp!e5kXtxg0x@+zVaycIdVhl)1=Rt7u`*IoJs#@ksot7E0g+B z*Ry%ZkMYQlM^$`ioz>@T>zw>ZUx7Pz)TTMui^ziZK4%ZW-|u&Nw$0NcA!JG@F0m?v zOgW6s5AR)92Jc;?YZIF8*CHkAOinwx73ZVW>aH2=m)Cq=-YH`@-OsygZ+D;GKHVMO zJ;Qwjf7rYD!y531Z6$Ar-f9!~Z!*{QRPXDGQ)i%OxV~!~j5dNM!qq0?N~lRd0! z3G2e>DTW^aIb}O!3oohADRII_VuZUdEmYOgZ;O;9;8!E44`SjDpB%@aPh-kB#dcU~h$&`HJn1K*r#_;D$tZXcBXpWp^}h*Ov~->aT1q z+ua52`o~Jaqs6jrsXfH@;4JM`#MC|=$$A&F-n(s`*E_W!@|3mSsW#@}jBrj3^{Vm8 zuGMGQB01irCrXi-r3dw6Zx}ksI?=gvz@LwyjS4xhn=yRk8VUaFtD~lr_k0ZAbX`-T z$zQzK2?o5rrr_mG#6MH0IsDVn?bh4!f=3}iiZED!ZE~~guYCkKvuHakHj(9 z|Lc?7!41jo&;y*Q{8pJGa8h&V+~+Gc@J-Ggd<)%Yll1DuHuTrqU5@}aFMAZon29cT zuRB!bj2Q3M%y;828H0T!`uAJ84mmkn%UR#>0L8QRIbswQjJ~>>V2uK z)9wnec6pY(aff#nF>UO*yy4gc+#^0W%ctBmKlbxy0yuZYo(X{eE*E$+*2O$>x=x~_^Lr(87n&0s61~=ffv*_c%dxpe0tdOzyJm*lzxEDy@BwFJ z1F$PWKimL}rH{*M;1IhH-qGB@4F5HHrWacBW`Zj@d`3t2=5k%6d1TN3x7-)a4Sd`?gvKPB$KX%Ij z?3Q}$mLu3L4cILoV7Hvm94#Ljwo7!PX}hG!eoy833ZBPq*^Aw>AG_rMc1t~W%Mt9B z2JDs(uv<?dppVEW=B=X;U{{N}` zXZ%c4e}5L({?+=s-EQz_awad?<2#+d?IkuMbgs_)thIIG(I1%bQfK6L`P)0@-{kD; z9HFyq*kHAq$7!B@{@rcZZ`(Nk9be66dhQgwe2c3vvEsPx1>HR~^?vuT0Y&cY>%IXE z^l>*27y$rneLBUPowHXy2k0rmpAbi&J z0-uT)_?#T}dH9U@JHh8&@n6+UB96Fx*OkI&eJ}7y?+!kN2L9YJ4*V(XfJAH+LCC*mE=AI3XQpNw~$ITh~+2jU%PL-CGt;dsaSmUu_YMgFsw zE%jVO(;OCmei`1m3cp*tR`D;&Cy!54@|ps~iNzP~tCV{O)CJ4Q$=s+rh9D;%pYC+O zj=%WAbS=`lNO}}x*4;q7P5SeUyUuxnIA6Iln>b$?{A@CO9NFgE3-7C+My|*-&X$|z z2!1fl(R5;(BlO`kNAt;Pj?<^6InD&8Il|2CYh(5*ssziTJOlz`gL0?G@JaH@%K92))>plnQ>zOUt-<)_@&oB;dCsLekpu^ z2)~4H0s2=dx{T@_cfD)PR%o--85x@DbPvP7W2aZDCA0ARP8j{wPpXI7kuz1uUwk*i z2UmFF$$`znS2vXV#ZO;P{bFhQSl3kQ$5S#R)fMQ-Uf`03zAC+5T94@t`Fvr4Gcvw^ zh3DdI%_HA0{x07^o)YKHk*^jHJmmWgM$hw$$MPK~h;;}B51=($xGHP^G{zHTvk${=*z5AnOd{*_OvbBZ;0*Z0>a zXpv7|FLV47xLWuu_4Iz+PH(n zf&{NuaBWpIWW?9qje%8; zU@bD?P@?PfwVJC5oh}4?zU}g%*~G-D}GvNxF}HRG;#x$F$SMwacMib zH1e$Y(7ns3oyX2gPe`vy2R{`4uDsc`aNf|42boA_{-pJ$cF^@5)UZh}B+mA3%|4jma{b%K)j{xWEBDITty@^9j4rSsbAlG5!m&M|jtQdQE0r%!B~H*#Ngyyh7T9vqOG z8shLn4w`ey`b%@_18Jl%o}-mNs80zb3`A$I!n{PKNBqJoa`5^zVzIe?PQ;8u{jfzJ&)_?`YmO-F;@q4ENc+ zceqCm)7+!R=cXbwm;4JJZ-CaL(@-L^M;9dRk>Ek* zl9BuNXI*2!WsKCNbcTz{ZP5C-PFe3C(}f;}6-MS*?;i#|Sa2C>SMN_YaX-_<{Snt2 zxG(T|7JMBE?%&JvtW)9sE59v>Xj`VbZDXAg=vVEL;D0l+C>Hm&ywR|`jlhoL2zGi{<&KWoSz=!qfz)?X!w6m zlLPu$T1LD7SMtB+(zEWArd@b0O)J_)KG!Sgh0UcJdP<_I=S)WbAB7Aq)|1P#@lPa@ z%Ok#T^2{3Y{=9sBp8nLoAUlr@$r_+?0=8&|j1k#&7#Jp06hsn{-+fs3aOBp=Ox+z{ zVT&XYYaMd1j~f3FYqOOYxmL=Dj6Ed0Q(*d*`0Fc@Tn`IO7r;|WI^=`mDG!ndM=V~! z^g*4uW4p!hUi}})mt=l|_m z8shQx^l!QY>~AAw za^jG4*;;>*vu-cAAu{5*exI1X_vQCwx7d8y@U_jntAKaq^RCUjtAKa;6Z^Qm#TA|h zJH0E#y$Sz)k{~ToaVLllb!#@XAc)n}ml)*pal)uXTWo+8|gwFn|Q{ZA4-8zJh`GMw% zWACjxd*v@U#o9k0cQ=HN6^7SrFK{$bf7yu6x<+_9a1U|LcTj^Sw%Z(Q-pO~Yq2J;1 zVbmN`pFAD>97$bWGxd3|y!QS_@BDyXQslDDCbls>i`wJ&>Bq?DrbKO$@|oG=I{D0O z$RF7=EP>#h(0T7CxZ{d}c@Z&z!UIllia(qRX#wdzrhO^L0(9{kz7k;S19) z4|E+8e|BMlI%i1sVgq~O=N+-<{{=GA@w4}H`!oBy{b~2Q8wcIzZmL}62vtLWM=H?e zH2Rf@zKTzUcSycv0Geoo{*~Ud9G$PB!ZRk7vxrStHZF#5Lo-d(+Dd)|c@R6rk9v__ zl5qo^c{RhRXW^dJz;L)t+Y?+w-Upu#s`G|!a#`;Q$^Gfr(%6&n_o|$h$PvzgV^7}O zqB)Omp~gqvBRLPNE=1p;Z|i_Y_WEtUZy}F!aes1bOnRG*zo2oEQ{_g9~lcj zvc?iwI|^BQXMCTkJC&^Mqh#$P@WJOr)}H9lwb@J8RWBoJPk{f7)%9IxZo1cfcG7+B z^HaW#yw#Amy8Fg2+uU`?+(#^#E9*e!c3p=hbFa155u;Bleu>Q8DC-azBr><_I*`5D z@XO34+540~s^TVBpoY1!ciH%Igl6rlh=s)Luk4rjZ&veO`7FLE@k=$bwhibtbFs~u zfK|wzFe-}uyYgDCD3p}guq8dQLEfX{!N`hj;G*QeWRY98iRasK0vp&5E;KS%kpXc7 zw7e#G$P;2mF-9yu8TMW6MZpyrdo{Qc+)K_BdRS8zT(NM>zt+H!GH@gWj>vpVh>t%D zj$k(sA7{ScNK9N@*=lcQ_lzggWAMZpNBO_^Vp}r*72ry4Ok7+iF5V7@Zg8ct*1(na zcd@ph`L0mTz3$Va?{kO8f8Cu+Ts)7s_-NwdYrvIl;K~MUF|{6WrMvZjFYCnq`k}QR z17D6>G3l4Vmke1?hJi2ba}b@yS`Rprt8gZF-zsz@llPD-HrDl|>>KxiA8PLs@Z-e4 zWb7X}G9Uq+!;1{qL|#{jb+rNidEm=wd;F*=z}^op&r42jNa~l|ko+y@(mdU{EBRa6 zQh8SHm%VQOZJDE)T0METlxNYWM#;XtiTrNd&A12f7u0K>gyf`#()5Iehso;{d;j4q z@*)Rao9BC(T#9nVFPZaAuCzxlaV9XipS!`g16;XB@`M9Bkd2HvyUYEV^jQn+aC+>l zQPyHT*HmBOkvTTA7wFp)+t>@0A8pQWB|g^XCG+;VpZaHXbj{T~4_j6EA3R?9e&G4a z&sCpb#7VGC=dc&zJ9tQ4lj};nHTm=?NjuT7qn|4s#&88eDp5n(2N;mBwv4!NH zp&uIZJb9$V54y?*G&w-=JbAi3^{zlIISdGj+fE~7yo?PTmDnE@*UE~n< zLUhYDkK(`362hB@A(Iu&Cp2t%iF$T^E5Q#Yx`Fs>4LK)kx7UTg1->6(z8}JGPBIRA zBXYv~0XaO}E6>FLDRJWJ!T01PviED)dl^sm9v(w&3wVRCNaTdjeU8O=GW(c%QwK z?s9@XZr5FEJOAx{^KYWNXW zJBa~O$>*wxLw5+7Z_s_|f70${Wv*6WU=xeCtHDP~5qgRpVkjDRXcYrxJGUq@>n#l8YrSNL}mXXP_ z=j1*NhgZwK9w2x5O?b8H1qbc;p(WFPhR4}m-^hYzGnOga+j*S$)&4+^hb7zn=;7ik zR5S=(3r!A#XRn55Z;6Yq+Cnaq)M&x8)jJ-BXOlZDzBF=C#Fqvhvp-jFCZ|H4XH0pg z$gZZ1UvoEan~6<*uY2ot*dN1mcikA9dpI})j!&E{I0N0}!mou#3GEnb65kX#Qusn- zO%~tIvewiM-`*l?viLURORslDN9LSHz_;ImZy#7PY@hIsVbIc4Xvu;r@w`z2QyYBr z<)rw}(U3Rgn!M~TG<5J0lZF^WVnFRQw5@v@IttANwwW{(1FK=cL(Zxcc+7!@jJfFH zhv1p3m(1OFJ2WIdsMXMr5oeb3P;F*hz~Yzjb%V*rGyHmSbyxFwfcl z9q)YO#?HL+4a;9$Y1q?w)arkh){);MxjjB~S;0+u_3lZaZ^W8GFC8yC{K`kCu&2?d ziyo$Dz~PGP>GhBh7CU9cbxt?2zyWI>+<3ffyIb8?!WwfwS#dluMLjqA5b#&eX~uK; ze3$3$<~iei*Qxidz>gT459nQ!;Px-mJS!A!z<+qJ(1t}9_)m69j`-S4qc%k1x5L2k zRdI1utHAL&oV{S-_+fB70Dt#k2M2G`h>>a%uf)F4!FOn_R(E|%^u+PdDSS}kX2F{T z-){%s4Ik1o;QO=S`}5$t=!^24@N>CZ^NP*O65m-9yx>TdlYGB?^8E_jhX=zuY7@u> zOe7aD$=x&)U%{H&S!adkCsBIif^&zxoUzC};IYSKO%^Rn&Euog_sDpSFhlG8A2at$ z;6ZHuTLm~Fy!P-&)_`Bon@B#;`U+2lHAacv;~00FV>F1JEj0#1!2Jvx_8z!_pC(iA zY7MmmLn`>afZv^wM`G>kLL(lMmnZnukq_@>t>k`2HVxAD5Wk5CejOg1f8tGWssP-W zwdCQ;CHBnUm-4-obB?7qNj^T#EaJ$TuI(8rHXZv<&UrPmccK?Qk|6Leg#W%U)jjk< zO9=v*Ah4H>aoS7i+v)=XFn0LkVt^n^Ui7RwJ7xoj89t6bFQ9@ zr}JCZ3;FJ$BaJm~?e2Nbf>F;Czn{bN>YWwR6I2gZ5VtS3exs*~{N_dH`L;Dq#jR?b zL;Myy&I>W{N#b4$KEVGC@xh=o4iH$a>~21s#U$fw!tds^#?cITtl+oUeRv{foUZ#& z-tD`MbsZ!glE=FZ{vvyj5U%035!m}p*zUq-WS%RLbp^!fC4MYDY~;6C95G;J!XFtt zz?v_8v=sdLEq1=QcRMHPfuo0O;FDe7FSr^zUML6NFr|Yx93DeHW^EjNA>Q4zBf;IY zW~w_htHL8OcZpw#4rZMFl32I)Gx)?5_yjdjp&Wxx7=J^@L`Did2(LK%r)be8=q8K) zF~SEWXRs1GReBEp=2mhr$ORmVo!WJ7UFRNTtSu$zo$w=hxA<{3^8S0^$BnEbz&c9E zm3RpH)PPHXIW6b!&d(Aj%KeWico?)QW0#UkQ@RdZHuoWxmUGa{)!(75lvAkY(65jkUyViNQ&3y!Z-2leI_^vAAaTCYku~ zY546B?_gEqE4ZNiI^aSdVs6vHg;93!;0XDr#N9H9Ba6NNn2p@jjqvPJ?5AS(xfVTo zFn+fq_^~FS-=%1K_A_P~aUZuC_j`~1E!QeM%jjG7=o)8a3iY}8vx}OLy=OOQku$Tj zNVp6;6FpGHY|R+5%0nR*@-u2^<^7wD*r3u+pJAR`nP)chR5~tm^cRDN%%=%ieP$MC z0hU#G&Tc?|2meE2Yi)EgZ)fBcGfsHgjFmh_{n=|Pa$V<$nT#f0II6FT@$IyHIJxn} z%Nb`3KAbV}T4WpcV)M&W-DijyN-X#=>m!yBUdft5)zC2Ov0~wV>U{&yxzbCBz0Q}l zRI?T%j=0nENo*bFjGQO`K&^#1V*6THM+msL$HC1t2s};`Tg)W}o3J$Z^48n(BO_9^ zJx%B^C90R;t*%i&M|a`Ap*M4OBXdMAiA-j1q}TN@_D1agU>Wye}PVVPE!JYhhnxj3!wJ`_Z0*u%5kOZaM75Jb1_*=3YF) zUfijVaNWsXra0Q1>~zesGH8swS8 z`ox|qr03dJU~bVyvL07;iu{S8%(M9c=x8nUiXLRpKr;HQ@b-Zz2?tMVg^FA%UO6j!F(J%UfdpxUZPndHX zv_BW$FSNf?V&ij>jm?Z9F^wR5*hH-H9^fIrNxX3Q2F=~fenyE&wy`ehBhm>D(66jd z_>IWaRlHa7Dy27u=mdu=kWIj^aS`jiON%s5$0in;K~2HCBc15Ng?an2e;=FdbhnUi z8`ZB07vR4+pPbh4TED9rUdwiR&iy$$L23Y+s^A-ISU37(xK#6;E!I4TL>B~KE0phl ztm~1Vf&ZmW4}0XnF3F2V2Vi?&&HsUJ^ssfM)SLz?2e=z&vWIJc?Vy3~MsT!ok?v`n zF0laU<1S}J>_y~Hk#~_ZqRu4Xs_X;k(xmNmVskvf9$D`d{ao~PYkczMBaN&#$hx1w z9yuJBP=%~MmY^kwJ)(F`2z#WdQrRH*?8FAaHqME6-S)58+%l%Qmi952qs*_V5`3sF zLQnVx_QN+j)e<$a&nGMTDt;{fxOeyEN8STR8^BSE51)Zf!pkk(lYTx%4iC7;x`w&F z%(@i+-KXM|9dy1kKXQni1jVyJ2 zzQPc(R)3u4S+4g9pC)E@I*Zy0ljkW~113#XtQR~Euy(1XkQmH-@66t;?$Oar)IIt*b-i9 zwIM$yyMDUiQgsj$BPATSqu_bb3pJ`aaKprc2E_miUmy!`A>F?w%3YYQTC zWj+U3S74blBJdEuf|t)iKi0fAGw)9Kip*Z@jO3ClDD`&DCE76qZev{Ykq=3_y($wK zA$u$NUv6}QWaPtjf|I$LTgKDkwMZpCgqO91hSi#0)m-e1yrU&G9Oj*h206P<`iCXx z3G@$%SNu4HZXSiF%js{n@IQOHuLd=RQDRtnAxKUu?{|%Hg9Q zk>rq-4#F=5esI2DBmv)9(_OkFk(@H&xkD=2b;X@lK1mWeWB*Q$hR6r$Tc^$bfPR^_Uus2r`dr`?_M+H(hTH)U;bVSi*PB9|uo@iQ0I!^sAHl~k$e7bDE{Qene*4+uyEoLS z`Q~Hi8-E+8<~y6*gx2MnhnOYuXf(Zl;_IHCi!T&AEXez7@TJKZLgz|8GM4102g>zG zW4*u*pLPt*)CnGxvj_FyrkWpgX2N)c7T>T9TG;|!Du48!)(~Rupcm1H{y7DDVZUm? zBV$e(F8}fh&xBI=6u<8$_vc~!sv7p<6#DekZYMTDZqG=>9{&-yRARvy1tuKFgA z_MzWd@D?1X;k&Vqso;DHJfm-?ef*ys_AzEm<1AB~%7Kj?e`?H_k`EJ$3-W%$_U}{o zZrAt4;KF#`F*lvFH~VA1p-)vvk6xvB2tCHv^)cyo8GK=m@CEj?u}nAU6&WnDR%oxS zHr43!7f3bw{N?mjeg4Xb-OeX=TTbjYbO0PgE(pCfmO*pifUHf)A;xY(m!p>o`xYPW zgWgPBF0x|D?90CW%*)j0KKTjy+)x`E@j^+eeSbss7*juv-*eFsnr!(BekY;E=MPL zOM%5+Y_;9+%VIqSe)yvq|2^cVx0HA9g%)=s>x%PLUm;7rzA5WL{^=#u&N5G_Gm-N| zWelqya*(-+oGm4HNj|sBS#VOxS#ZUozW_L@{3EmUh?mcS7}?suT0}m1XYme;#*nA@ z$krXE*7#xihDrSA0KMR3e9QLT1})8CY?Z%2Zi~?L8R#Gk9-W1sGy_AiLBtjjUZD8t z{p|GvoWY8`n2XIU@3ZWSP-ec$o0*H;xP|x1_gwO3%8(g(rP?0h!NPBaAGZZk%)K@D zxYW2_%1P)HL!1G7>m?TQU1V4>_RnTy#;JJi z!rkbMIrNlEk)Cpu23(@c^vGF0%UQ&-*G3M$^fbE)`ZfFx=vGIimgg?^Ut+ncFC6-A zD2=_F>15tc#&<@n`L;el{S-X)EU-Gyo{H`mn3?bJE&z|gDL-`EK)!c*d`eaMZ0*<& z=8wKyrKeOaH1x1_k3k!+p@%(&9`E(SlPolmjUW>d2zd4_wN6wT{+X5eW@|*dQ z7Z2w@6FY&@;T57u`_r(@o#uNa#MJHCP0KoH#+z%NbH&x97X`2AU_;i7 zu=GS|B?O!j=Z&~5Hd_c79WiKSozO~|*v_m~{M1LFnPse9zK;a|-+^u{_zEnWfWNgD z)*i@y2&@I>0{d8a7X!EM;A6mMxXTBfR`=j*3Qo3rrZI;tCcmD`d2fE^Xz?>Ib5^}Zxpwd}-SrZCqvCOlXFczQ z4n=18q0teax3AS6<%)d`&o*>Z)4qmJm;97`9^Taiua-HB4lHs-e3)&>mHFhQ)eq3H zt94>_Hn+g4vJ0Gq@6Faa@bv&X33^gq{vdk9FC$jASTpbzTfBr=_-5>I!9~&Kx0*g9 zS@%luTip*&nW@LDd6;XKiI1BN8+@JR539un_ud45#(v#|4Nji`YVXO(x*xijiLQi= zJ@S&|;*c+ojcun+BZ-{(IBGSbT0*!98#^JJIw{tFgf)dWIrH4;{mJp#B%!hS(3to# z6>XK^-(19*=?lmwhQ@OG**oQ*v<2dTnU+^0@pI@G+&L<_N39Q;@$*H{?gFPr?wd16 zGxAU#05$@{^t|f zz&C$h?mi1wo2rq=cY!Cs$PbLfCxk2pk8gFI;%`D1@{G_=p}D_;>pkJIx(7TCfX5as zHQr_75I%>gykixAZ@k~`vFK5H!Oa2Bg$@s}-=)X~p+%K1#MO#p8#b}-`kz6cR9o-1 z-XVS^nPX3QUS`uKc&D?@?OG(b4c)36oUcXq@J@%PZ%6Nt^_sk(eT;4BXC^&7LeE2? zheszF^zhv&PWOA{aK29t=Wod26rH2ncf{}-@yUx0Xz?L>(!q<+|B;(sk)P0QNMtK? zjJ~kWibdQB42OZ=5{p2-3hf@%w3}Uv*e|(H^dud+_7<{Uk?*XfMD^df(e;R|u`oaK zF~48p_t;qYe)zNK3_j*1{tMANpSwdV+CokUeF!6Or^h!;2PUD4OxHGKNHhHYm61v} zT4&k5ucV`|3GHDkY)Th-4m`&jGV+S}J#y$gGU+U`rwKcq_^gVbjs~96mp%I_c=dAS z&j&{*yCw>bE|{D zZ{4N6Sju@U#AWvcYmGW9dFB)_7yJ(}53wWs=srI5A#$da{@Rf@sC-09E?)yZh#o8c z7STJsJAlyxz?}WrhOAb7nUK{b^KvhjVcYr5wOM=C%-UXLZQ1OZkF`x=T$zi^OXe}2 z?*>np?E1rx4W8f!k3R=rXjS0*w7{3o7JQp{kMMPYv!C}`vP|ABwsBDOyUzN#T328o z?_mv=jvlLbC_H4p%FsO?M)!ET%YI3Yda=1*z!r4rvt_*;@eVlImleBXDv7jZF$$i6VT0rJnKVGM-Rfcr8UG`_Qao_c|O~)+2Q*m ziL0lw|0#9r64|ptV9fL41B-==*eR-pf~z(DCdRk!7e9=zkhzxY#HnlzL-7-I_z0e{ zd<1GdRTG_pUMb^&hn9_UhOw0|q#QY;OP^pPZ|Dr~4KP1z+?9+g_gc@1@5dTndI=BJ z`ZU~*?kj%7xBs-d)7aKpzronSyU>>zKmND54j=RJ^UlC@XJq2_`imuL+C-80Lf^wB zmwOg5F3IJt?^({2QI8v%)z`6xo&%wO=ZUalcilx#uA64}yBE#4Vw z@y=311 z8+<$~_Ojrfz0J zN1sHiHE=WtU$x|f_|e6N^*&(aNlPwBHn~HI~UV%>OWQoIp675m#q?qHwUP6tkzTl>s$I#T939e3&} z@7<|8kM~K^CN>Y!BerB>5qVCx_#p2hhFYwpD1LSZ-9Lby(}+LD$c+@=n)27f({xwW z)$j!L8S?fcXV61}z&i|V{5%)tnIO;J4vjyg_i30;eYwbyCiqzm{8s54yyH6wLO1Y0 zo(~NIr-_Lyqt?UnZ8Y+JvHt?-EN$d%$aje=H6mjL7l7wck-GwiATV2xT_?ZGckx5X zXMv@BxA4dM9))Mw@C5|O`_AcWZu-w)s)dxd=#nGlOx^1TWglGyZ8bxo>Utgi8O-{blu{}=K93I0FF ze>o%5M=z1@@;L-ficT$c508N}+t+}{Z&r+RZN$%Uh&Y+#nT96ggGUEA zgAQ;Gd_=yyF*x4f=jT|jpMCQW(Id<7^@>ljF-K@xi_FF+T#BzZP^_7D2fkr^tFQf| z;jfOT&PRB%)O2EdsC^Tdt-@E4h|hN|u*$(!x8w7*;t|T94jl*#n;851H)t;k{Rqy8 zJTmMX>br<5U{6Gjmt3kA`fCP15;qxRh;LvU`x45*Zejd0<%W+g5g5q#|rWA{c*7t`#m+p~<{+KX(0r{D=ihKXaje ze31Ave-SZrH6>0&&kKnWy+O^X$|sT-5&bKca*wK)sJzPP*HxnvA4=~OAMy^eMH+MZ zIRZJhh(8nf46#Mx;e%VjG2)YZw$Q_PHT83bu8>)mo{A2o@@PjApUkXVGJyRXQUEWq z*98X^@QwmtEIs}+$;&Z(Z`fG_O2HM0wfZ-rZxdsIucGTFgdf|BO^huQTBbV!DYnRb zas|#L0vGV096SntsEPk&lAME)!Fz=F`S5>V0(lUNW5e<;2${O2je0pQVhgQG9#6J7UmO}CA4-N#jWE&UD{zX}XqBaVJR zPYsi=R`kN#`HuJJ>l5d{iXRhRHKw2Q|D)|qz^g3p{O{*E*%Q`6MMVvfHGowsi>d8! zP6DD(w=o@Soq5@1iPk!HMjdTQ1jHJuIhFqD)Xo4R;EA;`h-35jodKkRnyLuSbUMzI zoa_)*k-{lr-p}{GpZnw_B>8KaIt-X;eUdrfQ`4V)p&w_hT_x5^M?&rDa?n?oU)EOT;VqWRZ(8x{v z-|zP=i|B9YV>-T;8U1;SmUhpOyUg9TW(8?E!!m(*z3&-~OeJdwXV_)$mN7||5 zat8m_QDkk_$kx`EFSu_Y3;EGW?AgJik;IX9{Ap*9iNL!9?3rrqAK?3AeBZ|Rp-`XN zH~gI1UC>M?7tQjG-v*h?M+VG=ul23&3l2BYPBZPbEIF5UsxQ&41K`Easqd}7M+5H% zMLXFy?MLdq^|UW$KL>%2?6dZqIMG4o-3q(j1*=(4^s0L^zw_!%emHSOrnmJa)(CxV z&(VrYjJ-C@n#)F8f&b3Lqm+bW?`DK+_OpJWJN?pkbBIMD9_1GiYJlAoiM@0ib>xwC zzFmSm*3gSHF8M{Kx%YN2c6fS84RHhGk<&KcyRM|>NJ&Y}Hos4q{6Oa3M($0u_k8ZX zB$xt@Uc%O^@on?Hgy{RXp(9U0t9}72%w&DOl;$P2Wl-aXHFINkaP>yIH_*;`yn(Tb zRbJ@}p~Yr%r{n2>kqJ=6GBG@|u@#3&-|pt++nI@8O+Z&GBts&9OE= zapDwtw^Nhnl#M;B-&tW3t!-@nE;2o!h_rQR6KTT;O2Ok{%>cWA9!pivGM3L zz=!zkVa`)HfzAA5{HV9H-Zx>())-~W{vm6A6KkHu*v4VUE@jP$qj^8M?yTKSHIdj4 zhk08!gYWl0TfX z>48iuyPXhSLU#M^#pu@A-Ycy~vF|^EeEE1JCLY|t+TK2`ebx4mH!+nCcejV<+dnrS zx5lkUiA!TX?0q7hP0Sg*pamM<%x@!gsO;&TS;Tg3Y6?-9scnXGYlwA|osTW22Za98W+@VD#!yLEB%JHl8`z@r>)iw8`^ zMsYgSr}Dxq@BPHk;>1_dGHZW_PV&2~%PPOcy+5Q~T>HB@Ui3fPfBNK4y^AYPWqR)~ z4qa&YvAJRgJBSxnf$XZ;8Ofdj>9wa_#*5YqiizDa+r{HUUNGnd9hCix*jpM{? zUg9+0e*7wYGEIDPK<%y+`$0v>@X5{AR&p_Xa!~b@G#lSzbY|LW26kJJOkxg`VPAPCvjev+j*p8{J1wDj4RK<}A44bZtOK zO>Hjd=v%b^3U$K8*N;8O*+{^zWU05IsSCdpj@|o(@|r$>2Cv0V*pKT2{2qRleqQ!! z+V*23Za{AN5E$Lx!Do&~Q~1pOfX}>qE}v=m5Z!OTh0B$U!TmiH-6##XYt##j!5Q=?hCX{^sQ_{(S?`t&Er zK%=oOcioR41p9GYupin3H;-$0Hf#=VqvS&1y(?hj1DTm|t__stF$-O|q+f8X8VqQ0uHK`fPE@+2@> zK`o$7dfwL?pRyKv1eG#{Q|h$oFYRXg*F^P{ymHw+>Hzk zZSbSt?*IE$hmm=YAj=+wKJ+9*uSb3kg?iU+I9G;-Hb{o{H=0Nw^9Oyn~U7W1tWb7Yl zZ)i*Jv?H^KZk&Wpif-svG$D>``?swBKZm^W53oPT5fi)a!;RPwMI)y3|7FH2Ix+rA zKjzv_-Ir4EP=D?nXdYu98x4gF{oA~vVvMDKlf2R=pjS5`^B)G5 z`a+M7X7sH*ir&?aGvfL$xbO4;Xpe1kWONcRr1|vEw6e}|=CT7j2J|6u0=-jka3eHv zH1z99=+y!8y$_<7wxORM`3>;#p_eG2J>r;Zkd5)J=CdB|?EzOdCb`$e{sbXmK2sG=+b@aa+x#kfQ!*|T{z7}0i z--QSh*~>jK!}S~TkGf*tN9VMq84JWr>uGS>AFe5rEb=+g(`QKDNz zpd~%ftIq{bpPq4hI@0W^+Y7g+E%5mj#4Omqt&XGo$j6fRip*Z`xbnPu&*r0lgxrUgT1{eb#H$Y@S~0A?(Knn@bdTU-X0r?-V^+t)O%hG z^qzfxl-|QS7e$eq%p4EXKYGvR&#Cw9N!5GaVr<>$J*Hi^ABD+vA8pp%hyUAW#%|Jy zb}VOa?Xz*_-L;pycgIIvd)i+PowNH}Vc(loz+Qs4ope|yw}5{R@15N89&ig@4LmA& zgxuF-;OY@@_OS5v3Tz^Lb3!^TID3?9$r=aOslK;Y^KmUY?R(fab|Z7t8d<~O?Y}>r zg17Gld%ODFy=|yP*4Sk~{hh?ybphViTD(09-lp!4WR0WPO->+de2lE|@kGY6 z1li|7liO0Ix@RvlmiUqYk00y-k0*A<<8LvRHtuzg$K(Fj@wgXz?e-;gZ~uY$*}tK$ z*tjZ)gI@C;>OSR=C&gYok9}s+iLSAQTXR(8<>Y(j6rNYS007h1w3nQ}G z>bzUoypB<4+x?xy|7QdI-)-^#z+&EKK5ibzff<9}(E4MtWiWri&2eM}$)}Q4uf&#d zwUxp5lp*J|A?F+`@e^a1`#$9u6rw<((7&fp)HI3qBwJIfX<-DRY|8!>kFQC zu`#wRjudq_*2Cy!8sjgJ9p268Q%T;z`#B4~bUMfDQ>pw>@o=qoCF`xVeu%Xm%{q@} zjqP~OrHieMC(PJyAb++2omaIQBgjl?^kL$UiD^jZ%vZ%A@!{4%A_q~3pTe9+rJuLvE-az1#KyAL$xB84#UR+ z>|0rJDDUMOnOb-g$9^>oJM`*)w9hqh2Z@G3&`e^F&?TT#Uy1(UDd^PHZgmMGbI|Ab zM&u0X68c?6|5veIMweI>=w`qMaekZEQ=_069C%~F(9`AMz4BxPf3oGfdB~RU#wz(& zYvBGCJh*F}&z*;TuG5;Z9%-!cVfA<>Bai{mO5lwORs=coaTG%oOrI_8c$W ztc`pg<=A?Z%WVB<{fxg>V|DLp%!-{haTT??<$-PH!qM=-#eFX ze<%6fzJTBLjTqfpajvOys_2&LLMlh+2sVv_^WoJa84odH#O@h>cj|}0(E|a$n}069 zYXEk1#?5pqNMMn2RwZ?b9+oQpc0=@S;WwRtC*kg-`yJ)(1GTs%WE>R(KN3k zUk@8i=c{8s&Qt@V=~M)7UvCd_ACbcEVKrZQ)+um&mnu(`W^c$c>RqG#+~e`g$M1SgU5%tqodz5L&&K zHdTk%?(5aj%_~yily%g;)_2h94mf4)9G$*BSWEq#gwrl`T0VOCWz{rf%r;=N?MnK8 z1bn~G*b^X0UyDZRJN`%jm-lss%L?tC=<=1F>GHMot$W?jWpHB5dFk>`pvy;~%Qr)p z%{u<7y%ak{RT*@7hM(6qi@&R(%cFnQ{z^4|xfz^YDI1{i=k9DT-9hZYd#vBP$oB8z z1KCtqUUSztZ_jrs!-}D(de_g5?qdCS@J#m?abGzU5uO!LLt&kz=T#3t&lh_g^jvg& zD0F;rFH6UV26TKKbo`$z9XI>16GS}rw4Yc9JbXkf#yH^d*wc~3)_{&T7(06|c{gd$ zamgB@>!RbL=c477j(?u_G*;+%)k^62V$a$_MaK^VPw|cDG54{b@ckpJz=vnheJjCB zX!lU)_~NR7j=yZ^xS<~xXs=)HmX3GO4`hL+`z#&*SLSEvM{qAm$Dax4_{M;aR|a%^ z)%of8q6?wp^xu_^HzBt)2Xs6R4HsQcrQ@xYDfr>!nC|E}G`#VIrQ?;1y&?EJi68$% zI!xzt=Mzze;oKmX43JIyz3w(EExl zvb20mRJrw%?S2S7N8hTF9k?7j@p|&ZSD+89_Q}&Dm-{fX!7q@}Hlr_nhaA{`UkKOq zyUf&{t12$fr1so*OuPBb2;8pIK^htYdpRGl&bkB$}wa+T-TJ0c@ z*FC#7`Ap+ve(09&+11Hs6U{R}<=JTW%(vq#K+kmF4Ry~d>^?+@k95xzD`BsL*cRxs zd#3sz<{F-%u~eXEyJvmeGvAJ7Ei$=#Cf&kbk2c@IBa+YD9?XY7nfNo=KCr`_V^dJP z8TOJcc7>`Hj3w}O18XA{Z&uZhI1v}?fUmnsF$4IztK{>)86Nj-V(*U7)^8Y>?SEWU zdEt_K8(t&M4Ld>|GI2IBy{gS%a+O~r4iwzmfQ%gB`%G}Vc`&-b~>48}1%5gx=c@+}`T$k>jO%L%4^XZy@@8RSU7W+tBah!0;~Ye;bH9 zW=(9n$dr124KOUYHhq;}Ywmg6`%3a&k-0Y$m>uu#dG_9RVD&0@k6M$af9{P*-c$dX zZRNo2h~&MA=3X7}THx+c?@{lCxhJ@`V+qy=*d65VAxr8#k9%Km_o(5hdozJ!<(Szu zvwds_ezTMJMw|C4WY>VkJ`Ow#=2=*EVZ1TXK~KVS*yDQOO1UuDxRSbuVihEx|6l5@ z>$(8l!$$_q=lsS7=`@SWmFHQto;sPb^GL3mgU;4*e{{5A5;|BVyb@Skb20h~^<@9> z1NuasRaD#@%dc0{xBGhpyg{)hYTxLK$Z(lIBX$g)P~S%EEOr>_ z{L;6CACvpKxO!`+IcVgpJmSL#RAWEFZkXLh4tVLoImq@;;}=+hePTZNgndUg#L29Y zY=|G_z}LFk5W)8YPlpo+=S29fyvFdO0N0Pqk0>wrbK$!=gA1CH8jqE;;2La>1Dwrq zvuuv!hZ~#YU95*}j$P@9Y>;mimc(i=#ReQHulWEvvi~A4u|Hz$mYb7jGxGd;+L*{* zc5P$-rPM7m1lr_Y*U8LByw2Q{r_la?$9n}uHllZlS;@5aKi+kT> z4KGZ?E<@Z-0e?TpoKA6uhhXhmVsG_KV|3Raqf6Pn8;D;$7y5>ex|cm;p#gYXLanxi z(5pqn@=YU_Pj#IX%U8=B+L*&6KhMPS71DMgymc{lHpTLpzx{F1FVUC2@fnM|r+0k! z4&Mlm-LuQNu4cZu%vaxOPPXkarftpN{yi=#{$#%!ALTs8fzw!vgRF(V)7;%N^%qb1 zPH>u+@~wSuoLLulZGIVB12CH!Yde;CDh}W(ekEsI&9CAkTHp;1E(P~hAB*?(fmiga zz7N>>pTyCtF)2FWvkAw9Bq{ZnW|0aG}j@QGGzwcgO>Fd%>6cW8WLVUi7ZU7rSyh zaq9<`6F>cfaBK#(BLqJOw%ORmXORygtdnx!)``bJ50tMUd*^5Em)=X2Tio8b^(ton z-Ss4{yFUL4_Y%~0uVbvTO*WhBeq8shZs58gi2t7fzq$#2K9U;Qg~$&-pze4fwv@u* zQ}OS6cBUrrt9(dNC;(f5FrcpkQM?)Ew5oe zz@OgsvX|I_{B!sjKhd6#ZNrDh@>`z|@4l)yF~rmXm=yiH+tI_x>63h^x>s|lEztB# zL}x13y*YWcEBg1YMfRyujKpE`><=9!4@fc+ zaawV3Q8|ylMsAT@5&s{ITYVln8cFu+Xpv}?&Kg%f!2{F@`{CETSk)9i_RMXeSQ)ZO zC3DORd9SE0;YR8bie@Z$2K!e4|H_}xc%4784cV@g+W4c84an6q{*o;6L>6NwYh_>a zpaZA0^W=3}PO}(*+O$;Y0h<}$~gPMdj zCdc&}@Z&mi%w`bVA~|;|FyVPC=Ux)tw;JDa99f}(?`8rYv#qVXD)0e}n+=TAUIsnR zqn;KpQitqd>r>xwTIUIN)B^ALJ5C>eoeB$m@nH;Q+=DU-oAc9RttHY0F01~cgNwe< zh@p&k&=j7R@Vva{?|?H0AID45Y`wxII=?5QQ$AW8dQ<-@YqJwL+0FlTT;D-|53)w9 z(G_mz|F>92=>35?nMJJ+Fpm4M#bJ*d4LnWzVq{+>GGm!PH2TQHiwqyJFrUZ1=C=8F zdZp8_#kT>Ak~97z%^PT+54F#~$#e9@X&2#JzLaw$`+N5mOks_E7J95$ik} z`p~#KoG53F9}Cvl)mV_9`>(aegS;5B~Ic%v~&j#>IS$2a1S7+>mo{kdDOib-a@cHG!`9J4>? zIMP4QI9P)r$YG7_U%6~4?4QHYnY}(;g)TF(j(57H>WHRY1i~KM($a9U3xCl9W8`tHW$(af-r>UPW{5qI+e*F4r%G{8H@0Whm zKp z8^szKT1Bm!$MCUBW=PU1>fB6q{j1JR3a#q8E{feS{pXa#O0X}Sum8up>;FRf$EV+^ z|4XO=?E1gt{QcL>57&gT4dtpPkjBYcSln5B&i6o-df2zS z$oELD8#F#a?d(4VzlOVU6l7ZX8P=IMO?J#i1RSbB$~*9GbP|vQWVZa52^}N>r%&DH2d;fz!|9F+`77h;8<{W%B4ReqQf_L?ud*8c_+Fx_R z=IlX7zr|NH+U_)4}^EBC(;^ z)x~$+TvNwybsbkAw{#j8Fg@9g>yMOMyos(ITTd!f{nduEtKj<+>yTCB>%xg^`I|ME(7DadvP|b^ zUDl`*9q;lTI#en9J1y?Zw~KuuuPv9D$3rDv;$%aJJn!7<)Vgoi!ADg0jabOU;Z@k( zHcl>j2YPt;wVPs`EwT0Bv*;0R!r|V~nLgG3{YfBe_}C)4tXa1>&iWmEmRzq}(C162 z!GcaBzN(mo7XEI>wpEY5+T8bhTbc%DKC8NM&t2u!2*+G}`v%UrF4G3^sG4hQ$tF>2VEwE{F3OcO=bghqDhx5_3V6Lz7?qSAXUEoI# zPoidp#{W6tL-P}yzTE_zPO|fxeswr@Q&A*#OQbk<8~NF7FXzP$zt$^ubZ76_@%Q?~ zrWN2rTI?m_mD6JlwdFMv-JYKb=6WG#gE0;>SN6PtS}D!FvMSebR?YfenU%_+(0rYa z{~Yt(OMP$Y_-mQ(E%g>>MWftaORlZsZ_&ke@6%QC3#7uI+w1STwO}s~V`und)?(3r zvliGrQumrXFsnzq{S*$-{^#A#pK5->q0h0OCCowckvUhP8{5T!q12wie$hlur?G4G zMb7DBzc?^7QuIDKFV4QTkbU^H?F0I8nyfFK6s^BfUiE%@Dr$@D_Z!D>+-esCi^K@dn>no6O|X#wN3z+PT5FHO|+% zjPt|5w&L;6o{yYq>-|JzU&-!lUm=FEevqFSj!Y$=t!iV6FU$WgKbnmL$gfu2&c=pp z=7B%$KIrDFUQHc7k&%4YQeMb+Hm6|sUq*_=!&U32Wm`yR8&9w`meQ(w?Ui9NG&t4Cn)xBC?bE((9%EUhqv!EOXogJa} z<9XpN1WK$l*Y~k^yxZ7t17pX3d~7l`-MnbVv2^Op_%(6P0ggAMQ9nv`wL{fcwJ^p9 zz&&h|_4BdE(cT8WQQXl6eY35&XlK4RVI6arOD&}5$9ofILBl^@(z#CgkYJov&b=a9 z&-0w6$hx$*3^~635&B@fs!PB7cbrxC2y!&`q&ccx#XA~rZ^mNoxEfY-@ss?H z8s9_6XP*guYgC(zM=-sCFp;}Sb2ga3^2li=^hec04F^QQhc z;e_m@b7xL2T1{@r4q#(0ed+w{xt{mR++T9$?x$H3!{{Ee^Up@lkbVC#Vy=Ab`;mTr z?d9JLKV0mEw_N^B?_tjF9As)YGGC2(J?*68!{glB$lQj556epZ#8T?$r4R5X%)PL@ zW*#)589BCj4*T*T^M2W@*-s2g1pmfH{6{g?hl9URz^v2pLo z#0w1J|7oF85y=!g%LHvomS7h$F_!HZgz31Xj?0a^O{HaC*x1-dv@M4k%bk1V&AiU zYzJ;6YubC(uU5gm=h^>t*ak1>8StNomr>Kr$&DBwJ_X>$uSO|eb6w0|9E63%_b(gXW!w6W9c-4^IXBlN-Y zIi0*(@z1gHz|NO)g;US-kN~7_1Kx$6YsQv{&o@j^Wj7DjGcLya)pR@ zGPy!Qypz3mjk)LG&EB&)MGoHVy{pZ84&KZ?;+@oDKsj=M4Fz~h% z`}OkyyxBHvUk={vy=zSyF5b!BD>C;SyxG3&JqK_0Jv&DSZ}y)0Pfx;|y*JU^bMR){ zv;8`Fv+o7#6Tq8&Z=@X`_Z07B-?Q^}@Mhn$eK>ft_ePs<1#juVTL$nJ#5+|f-s!_~ z;A{qPHa`hxdy;VWfQ7T~s}4Qa@GMgkU-3>&z|BzBdQJdiia~KO*70m~)c7Q2?{~Ep zODs&)L2uVQX6f&rN^hTIU3#Lob&T81PiM)BcPWn$eA?r9%Jba2kvR^9r>ukSPJvD* z`1>3=De(FIBRQ0vWFzVeHU;NT$=_EvQ1Z}49r6%5T0Jt~TKs&R7h6-0uPcs>Bp=Q6 zUQg|vK4$$#_|M8B&<+Q`l0^#8pX!jCr!d|oWlboNYG=0RPGt~VkwI*Q&fw&%Ies6y%UgNy zns6fQdx>IV`?Y4yzgm(JPJBX*>H^~W@joW&#<0%lp!JjR>nxdZ`qQkbMqb-~fpT(s zM}7D}LAW4#>h~vCH4lZqB8Su=$H)1uo<17*t_gW>HS=D?9Iof=V&!TU!$%s2dWmJ( z>9wj=-h^Da7Fj`bQ|ocNWW_5vBLa6ZNL z>|r*0mh*wmH1*Bdu&N<;paq{Rd|B~G))#H!AUEs0$j$91S2eYV6FRFxxZ&&?&u@+- z#tR;xCpxR5{wVOh33xpbHfQ#>wjryvfYZ|F`QGR3ijkaMVQRWxg{)0Y_w`;Dbu6>Z zxfL6Rctx^f&qKbv9$9n0WK3!t|B6_M=liACK2}BUvSfB6SL;ly^y*nLWO@3l>r4JC zeT*y5h@MRAtZV!NSV`&{U7l?Wp4Bn#&{<-jS+n?y)I2e^@q%cawp9zZVMaLd<(ocU z*FQsl$WnEA{bO|(NOm3` z9k}@8RoYkC5<>E`G|(1%1}%sVG3RNFism7w)iqH2Xwt2*V^eR7ow)taV|~8r#rjS5 zV*_pt#Z*`Hy~ypc_irkVy?fg?Vn<8*#g5<7KX&ByFT{>y-HI-ITdZ-((xRqSzy@P% zVZB>l#J3F09J~+v8vPw&Z4MK2qnN`-4xCyg`q14zWZz6)3g0*JefmJJ(AY3`W*Hey zK84A^WLJ9p%t`1mynl!2F=G|13Qjq{#GDmz@NB!G#nN#fLw=9X=X~5=e(f8*pv8+j zXz_9UL`{o1W4RYG)zIN;>-(f0kzzwSe4iD_*6K&_ya;$M%OJ*(n#r@_V`ao0P3zD9 zm%_2UD$BndzsXxsoR~>Wg<^ekSA-JP_#SgtcHwb9DNfwMJBG*oBxK?z)t7jK_(D%S z;a~5BCouM&ctSC4I-c-~p|yF{#}(gU@&(A{=KA9<__Lq27H%DW5!m=JoOq`Y8|?mY z;-y)B)OTww{|Rf|##$f54m$~3;G&PH4?PF_(0=T?wAt0J`&Q8I*9)<`zDV50)G0;3 z#_k@^yEWD@prV^OhPNmNXBl&>%jy@aAK=$$P1J9^^0rvRn2MUmw0F<4=fvb3+;p3K z)}MRdLg;9pwQnC$licmw!7Fd?cHa*0PS<^l=iMG_DCuramY3gZ<}@HyU*gvs1a7Bi zPzw{CNjmuD@St9K<$J$4w%4;KKlBWJ7A)0%)IQD|tol@gh-3Sr!R3pQf%To*&^IU9 zuNCa`LuQZjs{fYXb7a9m@OkV{gL`-3se_2AOF6$@^58=30iX8GPs)SP%9v(Iv@M(EO@-mA&~vaoJYXkt;LTuiux1_$=zDl&wFJOxw*e z=wCN;&&jWg;l&YTH|byLIX2(K>Mb4mSFvk@d=u$Q(!aizyw{#7N#qJ*YCT4uVlya)SG$z+I+vz@??=OlUmd=Jx**j4 zPt{e1A*Wmhu1HrIimWMKkmh4+weq>iyGj`*_*cb+cVolfZ3l4m%SAYY9%ei07ed5EwA7>vvfK2vj z-;0y*pUFA)*~7w$XRRvqfqS2rX4Xez6x{1qHdL)y3%0EVjI|kkKz2Iegtf8y)!0+W zu_Ct(TTIyC4S5;hTJxGn%(ks(Ip&$pU8tK#4BZ%b7OCzCzs0D5BUNMuiRpY5iu!PU`YkD{xm zJ+j5$&N-U2*|pAu+LWvUUXO1(;PCFPL74Xi98WzU;CACKeM_PUZFFtw-56YuYc3d!{w}Q9~DkKNM8kM zUTnuGFJa;4dIRIlLrP-T6W^Y?A3KmIv=5I{OF5JE*}(cVv$h9V)1KC8M#?%3WqxjL zVxNC)#!aIQW6Qu_(#$+})8||CnU%6P!FdMbMzVg_tIsqqF=VyfAM9t;Oc)v+>DG#M zNv;)gMnhG^tX27Etku{a)+%+~>ar}KsmKGzvWU0ss;`xJMqfKHQ8+dziDPxQ@Evlm z^a8WD@E6g2!MF5b!MA=T6UA=_C%FFvcD)0{oJgm{_dT%b4q|glXa~HhzXKVXHs|#7 zwl2VKk&TV{dHB}S@(ZHRKD5Bt{45@c9%r}JfnyKRhWO0i@@t=o_G35Y-u=mY;xpN8 zvh&^J?qOHfJ=yu@yL-Oqt+guy-$8q#^Vw}XXs;Fgd?L^C8A}&zUu)ngf8pM*5WS~= z?%kHWC!Rw8*jm2s?om@v_hjdr>h6*2t9#-z#mRfNf8{lbZ`ppu1DHQNMSRQ7+x9Cy zBfe$d(|%;Pt%0YAZ`t?6XRKXWe9OLP=Peyte9OLP``FH&iEr6^;xo`M`Y1rYoPi94 z&QdD9YFLoBm;TAgRf>gfx&xbU3HjyJkTbPCsJWH4U>G&G(ktg#|LJCD8&iFu$2ePd zB>ZMR_+nx6MuXEsf}F{>A3=VaM9lUe=}i-&yZBr5$%jA1=}Y;Hjy638ZEBi?oVHuNjM zyqo9SXVA-OS2bqT|4!!VYKy^>tCoTb>C{kBjj>tX%=dc6GMxF&V+?9Hbl=! zGlJq=+kF(Axjm)!8Sh0>o(ZSydpb`hyG?ob?z<#Tfj@fYr#xGf{BFE?Ci&5Q$65w$ zjy2DA5U2EW{4|=&3i9heMV>Y9k~3%8<+=N|)O`zX>Deq~O!rLr_4d0W+b($Oo?Y*r zfou8>|9tY zN9=dkm}l6Mlg|P_P*pbeRWmOSp_u3 zeP@3;ry4r1^-Qgm-)Dp0zYl&_1;0NIexC_`qrvaf!LMpWs2ysrncp7-zsrN) zWx?-~;I|_9T^#&=FZg{V_KHI&<(EY-QI8Uox;iqN z>KfU*z(?@7j`!+$U$)#4oOSn{=hr6B>NaOld6kB?n6veAOzvt;+sRdRv=hG)8wG8p z;-ryDb@mTBnUhIhAxGKR=ym?jAo@lo9mklRty8}?KEU$N7&!%9`DfD{!#``pN5%id zC)Xe^e)Na4t3sC&=QV@+ig)=%=v5P1<{gv(CtEAZ${>=zl-@n-x^q>625POuB{>dERMZfa^~~Y`nu+KXIDY@ zUuow1)b}TI~}p>v{zA*W{El z4%vj%&u;owU*ajEyBeSJlST8%UovqtseEP;d#>+V=&wQYFSK|RG}xVwW@Yn{(S-{} zonGK&S7rsei<2X>&|MUNqS_}Oy320lsW)WTN4{=gon9wCFm?YM=xgTENNhImB7p>qwd)ytc}<2+m`_fXR%FJ6_n>j>uDUU_MSdd_i{4N+}>*)cd-9EgZ+Q` zzdQC{u%hp@A3g1V!^59%|Ccew|E>K$nE2E8e_rbTqkCkLZ}x`4Ckq4kdOE>ChfZx} z6Yb;Fq#kH%M9z}T06wO%zWS9;DA{r9sFK)xd~=FXSPPwQMczFK9&Hcm$^A%cNPAuD z$vK$@d34-(#_Mzn<*6w)aVdM2fliSg=zEf>=JM`n-ZglJuGd(S@-8_6>Er~cUH5Lj zdzXBGM(Ba+{;Aen9Nbd;kNgt9%lLFv4taR0h1nn)Ywn|uGUiNtD)xMnd~k>SJN}NK zOXr%rNgJ1J*Tw4IiUE-BJxeqlnR*5~uP-^0xrh#>e=!`(><=z-=FG4E^Xw||vJ#%T z`*uu^YWwD|0`ofXI|UWSeeI9&okD4 zW~^aoeg@-R?@=cbey8=)Itz~MdZR-jcMoU1wowO0<286uwveQ16Y}Y{yCMrko9^W+B_T`^m^cC25>Ut(X`kQ z#!#%ifi{N!jhZ&>`Aqs$t|M?%<>dHz^jSq4vSZJp&w2DYpFZc&=lm{x&ZE!y^!Y?e zpLf&eV)|T6pR#kfy-kI!GR7hpEeA$Zcsfml8*u>b@_6l=`v|u+Q*~VY-T^%&c z(X&+Ae#3?M<*-XnVLh|hgBJEcwQK|Eot5>l6Qn75#bN#HK`U+9WeQcY(=a|9b>Hz#_G;&YGS{J z1^X3etWC&18=z-8Z@HOqHl^&@GRE1&I4{%~nOiI43o))1Q^$y0X4Xx#A$6}R((y^d zKi0zI$)oK!qn&-o3HHOC(T-lVM|EGmdm6n;Z8GMeDLPd;?JuSNj?<|cp-pqUz@PNU zW5i8dj$SpJ`IvYRV{^3hTKsMUaPvI0P4H#p26V4eAD&$$d8Ym@E87e)=dOJvdc{MW z3vvy%Z`Q8qE_*hU;9Yw?Pda9am22LkPhAfOcQUk&!JNf6Q{@>mXXF{dVIa$xIZtHH zPKHU_ zkIzGKml@UXoMK)Ngq1Ug%$~+Q8$&9%F@A1fwh2C1H`T)r7;1Y7o#^oev#;I%iGM$K zno{s5D%-Q-4*L8jZ2_NZs|nuM4F8dxR=L=5`ey`?)SMpf;-fc~BN(5QzLpRp?(et&(o7k%^5 zY0qR25C3S_u<(y^yl407?A@I5XZMcqGb`0sh<;ni!)lg{oa}FLvcG?E{jrbguXPS< zpVDV6+j~Fzp~8o<({m~_GrWgirSF+Kqo%xX^vMUUy`!Er@NH~Jm6NaItbyd~D}V!C z7XXK{qxrxs_L9wB`RM51>3d*Q_u})DGP=uCAKwT}3O|7Lf%&xK{vHNg)lElc0JePS zfx*KynbGu>*l=gyJLeqj;_rST+Q2#5!;6RqC;>KD1L-k!sy*dpNAIF<$smj|(a41v;XzX!-Fo!k8bJt^wVAA zw;NZ5_~x?eX_*1c_XYQc;-_6z98(OIf%i1u*f$G_+xWEaz$Coa1Jez_b{#NJtN?j= zp4HQUS88h|njYy2^O@EC1oMlT&m%p+yzrm(Yy$Q_3+8Y8Eo}iOYD=^^3G=K~oIYeX z?GffX!C(i>Um_T!y=K86dy<4d+WVtn9y-vhJ?{qQJ=Y)muKrrtv(!G%2lMazEilWx z>sfKS7wz$r%)8o*_(&nVi}wbL66{t(k8{4uzL z-_hdE*Dda3(dPiKre3y=G2$6%27mr8!}OYTI& znNXtsR45VW+b30XVtC2EjmAGRA$sN^TXVw5ZRANPo-dLfDt+$Oas!XjM-=m;xXf?- zqqnm8XmR30;zH&V7t&f=oXGLUI!~m`*rhd3TWI{$oq^L>xcPEMy z@l(Z#`ZL7|o3}H_#Js#gtlSi0<;2r|e>paeZ$$L>ME(7d{=Ti_?<4yA&W^ti>hCWS z$A_&Y;~#YXwl{DfzwN|87r+aND56<`C*7+xHkvT8T7wk_U+TQ-uf5M#`4{2NlP*QH#q;o9skHg&VVCw=_5k})!?Z`}*-v8RKF zTo9cz!0Ax(dk`A{KW=7^_v3%}xi&Tq{NRni+f)BZJPOa&2E5eyN#!S)LA=Ef{G@BZ zE!Bln8y(-~S1&%#x3{KzD_GkNjOPzY`?pr|Ms5h;>AkfMG6l4rLU1U^4itjo=2AS(cBAdEt?FJrz5@PovXc-EsVW& zO{C~e`aViK$0Egv{E&D2Sk~&FO1Cukc=y=yP*D|mrDqEAOx?7P@s+O3CHI|k7D8W6 zFMTF=VC~gk7*KolyTIofzewNeEIQS|KJl8DIL`S6P49uX{O$bGs=M8W>~;vgpc+@I z8y+7NLH5q7ZfJ)G^LG<5N$4-w82VO^zrbHv|6XxXaj;Hr4w3GwSUA6Wrk(#D)fp8G z6g2sz8_~(yIWGlTR+_b7e$htiVP%n%Kb3i8A>(iK-h4G{!Q>+8SncS{<;avRS>Y`k zp??Dy|2nUH@8G%-(YyP4g?_khuiz>DO=6f>r#Sdt556~m?>gr~u+q$!^?h4qv7uSQ zas92B&OGSX3&`TOW_^D36_=U)B6sU6X1r_n`=yEpoj(-ZBpy_?FsrvmPUrD$FXBNb z;V;0hQQEdUlsL3AWNOpfT#0Pvuk*x>j}3icSab~WbWMy=F`?Iyv*BP@F`=7@lNf^B zWMV>t@w>4fB#)_WcQNe)6RfFO_h7Es#D}Jz{J!gI*tgnfwrM+Yw6`#$+ptkW!X&^gjSX7(05KJUxseI zNZ%pLR$${=X7zjnOWT-3IMDMeh=G!xzrMdW{te#Q5B*(>-Dm^8d+6z&Lg;B~YyolU zrHVzwzWRz_L%cyeq5;@}E)Q(l7D}{I$E}g^l@lAgmbqU((A!fyWP*uBUAFVox%qXx zE1tjiEpH|9pUBVSqm|#q_xT#Ukos;*p-)DR-bNp+anl*EW*Ihy=2zjV)NWr&AC0HH znl-`M;g9m|^Te#C6VHL{j@~muIXQ{OGgcl+S*P*w*MRv~i;X;T8SCZ#HuA{Jp@c7a z)h#!yNMqy_)>9erzD`b=_CP54!BN zbkwfzWpr~-c(~EQQjo7E*pnTSn8`$(xc7z^Ly~1nv+#|!P_r*B2l+5KV>N($`_K10lgL8Gr zrxmPoCTF7)4?3Zoy(z#KG>JTnwd}34hspL~{8`|I;ep^;HhtHn{0&}q`a8ZF*}lY2 z)YXE|CKmka=o1g1)2s$2m}|V&;$kX}#Y=4c=+TT(*T9m_8|Gcks&Quq4MVpfu1enp zv0URW<9+D}b*udZXE!Gbwug)Sa=&O4_0G`~u%_pc(H152EPsV_nx%!y@v+(Ejoh?HGilVL!R0^ ze;?=PedwF`aq;Wk_gH?t4IceExY@y%?YVd9#QHAv(xOvN1bq3P&U|^p+(_c>+(4$B zORfg%*Hy02njG98u4w~DHKud;^8!DSO&wn2-=q$23qDQlpKQ4cs8!LjF_f?|$7$H# z@bfa?v*H`Tdylfr#^OZRezi^us8OnQ`Zo1@&ouNgH8WesdDJ)MEbqyoSk^Zu7qyUg zK6nj!l-B3b^REx~Hr8iA^z28$`aIfYeZCt>Jm%KtyMN^RJjD8_X7NL#epx*>tx&YB zbu4vBemObzF0xiWwN^ve%Uh7I>X12g{)?-9WMX=N(SOtUkdK}l>m{_dNt!w=ocNX- zAGnjcf1>-!Y3sUhvmZm$hr7G zG8{Vy{?8yrw>~GW^gzGdB>s;I@PB#snF%?gQt>~x?TIXl|E-y6rMcjL?%5{|{!itM z(j4&rz;C>oT=4(kdGNoC`L=xq{^tewznHyvt`q)qCI#!C#DBN`-Qhp6B1Wg|3IBf+ zt~m(q%NFuK!TlS0!2M6*6At#e+wT_PeoCJP@2|9YfA4h`@9!&NFUL}A`&vJCG;HyH zcM9I;1$f`nx;VUVKi)ImFLmqE6W*tc@tk!@!TH!IKZ)~gTPMd}GC1Gc=u{TxZJph& zIR76STMsz@S8i-Q;e5*2bdIU=sN9+h-w%WD8^QMl0lqH;-*Z#&J*fvGQ%Dc&9q56V zgYVJ<4}XRp7<22|4ZeTLjlBnaPwIle+u_fF>jwi|--bSz#C3F$`7`~k(zQpz`ITZwPt)$o=z%cr|C1WJTxZ zqlZ)LuKq+gfeoa}E59;2?yI&wUgOblP1A|6eQ%Jbns?ELonDP>BdU*=`c28#kWY8o zns;tL91dt-49%u3;aWPpY%(&Nc-dTNuxM*OKGx?NLZweUH1n4&kBZ)T(I*y+{3S9N z`q&lGk@q8mNuFZgLdap4vkt1^Q5^Q7@Qpn>CvOfmhqtovMM|bx7fOVPF)hG$=`&aC zxX99((J#_Y-D>#J1@d8B6YcNXrM+T&*z$d(w)aZV9(ISsaNb#uj;a`Ty(3G?N~eA?wEaN?0GM}wgOpMex@6K9YSuk-@aKJ zDorOIGX0aKPmc1u+9vEg&G6smCG0h|=Fd>~d{!m4+d+a$_M7i?4%lsf_VKE8FI+Sk zJ6oJFnS9?aYqKR-8{x+gYRYuCezD-4jMVj`zJ1dY`lQ`>+V{8oi1m}*)aYyQ^5%VB z%|>{6%XxVD4I$)ac)4ojH_(=3`q}7d$n;eUkm*~I>0iS(Jrg{S!P9;4dXn-&u?;&L z8@#+qvizSP3wW00ItXsBfIMdHm3ea!g*qlR(*^;kbPc3dd-0`%(% z_Tx3^mzftlxx0D6i<#Ge=p}AmRt8Vb>-q08cFjw+L-FFS^Mcn7!zZ5q(6C=hH-7wQ zX@xHcw~)_{3@~yYcxP?1k!w3_f(w3a?el5B{z1(g>i&uTZU7HA;J4UyEjc)Qa%x16 zoxMbV%dV>TGWkaF_?f@Xsacy%el7Gswu99lINQB%=vGor$F~0+w>Qu~!BWu1`)VVT z@d~DPV~gK-QE0-BZfx*RLT>_l2mHs{J05^8i_dKA=jKVgwdl*$9X5@BKNQ#?I&20> zdio@|IgN1@P!~hCf(q=QOFqL6x@B5m3+at5q|oT<$+{S-Au&PiK@%hWJ8T-)V}E!a zTZUp7Y+jk{>gm-D$Ie>YD7+%Dk0i$?`^eCsE!jtum(!u+=T>WPWdD{9nVn;7I-92v zha{VhU)VAKo@_ehZXO*ro#Z@Z(@9s~flWtrZkhaP%wuUc^Y|w>k8alZG1mAvK7QFM zwZ@u9m|Wd8M~Us(87iuOHB?j#o?z#jD7eT#PHEZ{DiUwY_+Vs_;4L+W`$_gw_s9!L zJZEi6NnF{$n*F=_l8ucuYu;2`WMGYUR68fNE#24J{OxD7_j*cu`erS*?E=+ud9_$| z+$J>aEG}wbT{0PW^NaGcgtuhUpWa)C4P1TvmFoi=_;bXLIk~{lEo|U1*9SK6<`+B0 zESsil^;Oep27J zW3;{te?SMF`m@>&-^C7SQ-}W|zk2AA4*x|3wtnN+VvoMUx_y>EWBZLg<1uF%Cnjq> zsW%`zZlle6zBjpO1v=K;`_IMWG?q*GehmA<84Sj5taml02=&L;Qmd{cQeIO>PEt>}zRb<_B4}2m zGtHWODYBQwCtSbO&NcFb$+40iKz<=3tWg|7bjNh)lU}TYQ?d=CyqptjC z-+h+<9O&ct4|!SQKWFh10Pk(UyMD9LA7u}fuRDvnKkY%?AMKZH&lmmfGB(i#Zg zB!kM1t98$$?I0$A@hc`Egk24u z5Ebq$3m2c39FQg38gg`qIW%EYYewI0LEpCdAI7F;#=fVAv2SAR-_Y16*|DqbChTX; z*b-WH%3o#IQ+0Q)r0$M6KMkANyaiXDzR&Ah*-oC+F~)tYz$j14t6;I00b3~wzs zf^D4fOYZB<_;o(fFYp)lW$gVJyXGxB!BNJ2jBy_^cEMa|p3WAsc4>4mGl$hZ%%Pe& z4AUHtOH%#Css3)k#u4UqlzAOvUTx6TgDG~7Jmy!%zLaI;RhBWon-`8bJZ4tlF&p_$=1oI|sL{?msSi!M%YE0Uc>5`wHIGq=miH z@a$xMee(=^9;beHBQw{evsd|6CpTkH<&DT_4xih2zm>I^%DS|$E{fHVkI~eOeZWt& z?!>o#8-6I(E;T-?_m7E>LdV|$u5{J$Mc14kHa*Do%>k}b{jbf8Ars$gMrYsa=D;>F zUa=^W^W~#_oVn=lkz}} zPwQKKifsu)cgR+e~pdto1eiPi*N?`C1FOKg`n_K%;@L zV*KLT>!t_5;hk0wefT7NAHQiMdYx)>VACmWdbT*xpE=aGdo}X?86P0`%y~n|8pa+R ztj~@^&^_901b!rw%ikD(6?q0a_c-?dUFn&XyYO4DSuo=C1~0Snb<1BiyBsy0&;3=_ zsenCaPZC-$$usIpy1drxVPvFUjDH2O_o{(3>jJ;@AbX!%6_QgWvxAH>X6bxXe`6LTE zV)6^Gh^7PQb*sP$-YI~N_`tcvf$O4Y%Xsz-JdJpFuY6=Q!QaMi3C#)7r-6HF)(JOK z=}!GB8>jL2^sVd5fte6}*Rxh7)NfEOP#Q95$m&H&dR6}n`nGU`-xBaE%J;+gcF5Dz zhmj8&UJ^ksC%;j#tmxO7(GN66YXfDB*F^X5cLew>fNs?T$9^_`cII}u#*7{Fa^^Uc z>on|`A#9lSwAp~2aW-*$ZVrzD!}I9>Uiy~}b0+hX?Q(t6c9~&tS@g{07w~IyiWhHj zv~4fBz-m{q%IbfE+du4>mLH9ccDIMdAIlydWDNulZ?cDPA)Eg>W6{0Q!0XVFe(Y`5 zb2sZ}dCC>h-Nd%rT1*zNm$1jgPgG5-P`n@U6EAtCxx~0F%JwGYQWJU+@Z0Onkwwa5 zzhjfPGCm)gxQTf6msw}v?egu^w0k<#t&Q$2@KG{mcec6LgJ*TX<)sI(Z_-vtzuRL| zE-Z}|U-Auub90d4g>&vv-xY_2t#)MCTe z#yQQ0HsP0jIn0`iUMgNu`GB%jgy6NR7m``s{B&{RxBsR(ee4bUlhgrI_?+a5ML$!$ zs`46lK3h+^$^UcxIk6?3XjFZu3ynfAl|5xc>3qeCOj!TT`9*I~0}XwXv$u0ij-GT} z&MTC@WboJ7&qedzrakEe=w0WIpWJoHx?9r&nF4+#dA{Nwsk05-jzqUYc^o{hXIEfej`?QIZAUCBp`+MPM@{to? z_%F^~$9I{{?-=fnAxIQY3&SWQ-^d9XNJ}TXOayp{2^-rXRW}QYB$LDn-6+91{O^Np;Iil){+|NiTK9W`>4Ro&!WrRF zZuR;pLF^>-Zg#*^6yGCysNA?h!8o`(3)(aLD%-Yba{I0h`$nog<1N+4XDlhPn44WJ z<~(TH7XzG`1#LHc9bTCq*jHO#_qw&Oe%Y;q@hw>U>R@=7?5me%1~gCgI%Hpb-22R! zu?5VzOUzgjuS>v*Lq2mxzm)7ze6^c%e)a3jS#)wJ@Y}FDRHQi7VKYY-4QCF|%YMYX zGniwOWKH(vF$V+Kw*&(P6&zv7Gc>=Xd1Rv!A9+PYQnRxue9`Lxb8$5n8z+-;9 z;_-py{0=biA5=d!8e$h^Dr-IN4-Qvv=Dp`Gsd!&icL{!a__TF-bj zabiu?UIF+Qhu@r;^92)URW}q_cX>GR&Hp&LssjIJf!8~#XS1l=wH^NMUGlZ)T4FEi zxhHu^IU2v6PCP7a{Ym`h6m?C(E#ZdviOoC2rVXDFUlFenZ)rJ0Uh=+EhTio==f19e zh0aY~*gbta1^oAf@5h2?!uRQ{RqDL{1p0QY@QT9dBE_s2e);+7+i2$6(>%YBgkNh{ ziY)4YZP}GtI7?*YEN|RK^3Yq=RhZWQ&rMGguSEHLncIS>B-*V>`y(#$fw3XxtNI6@YvLth^d*_0Zj>uUS232IJ86XymoJ%20yy2NR>oYn}GW z)zLQT(m(fO$^jIgiJ%LY^glme-dTe0U$%kT5cy(WO}VLIc6Idc8B;Z}__@U5+qE2~ z{ASL5FR#h9{MxP0_;@8UuXqqL-F1x5{Vn@`-OC{xiw_OcxMagpEWQ`ytuNNxnR7B0 zKUfF!qvYIOEdCJM?i!1)n4J1EvX5FlN%;&Wc6n3C#Nu0B$-w9y#d<7nwek4UmFhMD zU-b7p`jV^r*34LJT)xd?$3G!?If<8#17{(|A-pVS?M=J`=aXXtD0~8cm*R<@m2J($ zKPW!OZ>yg|EawTYrkQx6hG#>TPh%5G!%om$Y|-7s7F7gsLe>^=W%SZ(&J$a-t#fRV z`)2GoWR-0;wx}N4Py@CfjkgIKQOk*N&Ev9d;B$F)4e>-N<1G%8+aAOd$*27|@kFvU zYb{g#Qx?{3o}2$?DRlTJlZ&!A3#li+mVqaq`eEQ^gfo6~(O;hIiSS!LU%phUHj+0H_Sa_tg44$zFC`jPJ61S>)MmO)m;0z=e*a? zJ)=DmSd-rjOu3ew&wO8Dzh9d&?iOSg*$!M^vU|8|*<0PUY_12r@Lu_Y+&#s{9(+1f z^z(7ySg)TM+gnxAPPc|!Flzo^fgP*&nh<{A^XE*wP<(zGJC?Q_jg3EDTr>;28?~#p zBHPxiA2MYhb*1(cczMz5f-`lRfQR)%vW$MKT9Wv^2AX^2mzjI2C8;$w_dI*gjHaWXE!{n(DPI1|Kg6o?Py}^7t*!$_nfh9dg6N&D5euvFFMD zY3i>ar?w(LxLSV0h&>)g9NpvH$PFK##RmoKEd%ya`$-*d9eLE31#8zdhyEnM_ zk2-g+n03P@-R-%1;^%_Xzo#a`W9&n@?C$8j$YNDGm+1ZfI=Sjm?mxo+T;%U*$lud4 zax14He~(=_`g9@oIAV?8S3bo-e5a%Fowl%d`Q+eEyr)He3C=x9?I9KBgfd; zP&@n=!=nAzBiVKW-+c$(qf7mmwLhOO)v}yCW8|Vk=pinrM0&aObEk*=D{E!__T+?P zlXLd4FT92w3>fUr?yI_`ipkFJ@7+I|b8U05b525jd7E=YZbaWKBtNQ<^Q|Wh_wIj- z=dHY7hhCu?nd4Y{JJ;;$tGSNTr+mnlah*$6PT~{$@dE8c5cq|t6_NftC3Xy znbQNtO~r0Qy@6jW4gB^IDpKyJlc*$jm;`#ut~= zsLtl;LBwhVV@Zw!xM^lA^^E1a7x4ULbg346J-k;!oz6zu5KOApfaaq-;a0v$i+j=5 z-P9ulHtJr+{?tOeDDCK7)qu#Q#_s}ZUM#|Yc+a@v*tdhRFBoa@Xi?xpya&JM5yn1= z7!BgZOB*!q-T2;q` zu$jt7Dwt7Rt>PiN<7Zoe;eelQc5$`;z_`TEBr}LczY_f242|CPC(!8Us2$xCjn*2f z7L4=jYTX?F+{ip;QomgMa|8TyL*N72$R6)zPgKjV4xSi?C)PuoMlf#49NOQmJafc= z&&M;bp3@SJ1Mk91 z;fZjwE)94`AFY2;unwMLD-*5>=l)0d3f#)SlI5jWP7*KY{CDM~H!?u(Jg%|+U0DrsXY3hS$C7S%KUb6tvsB6 zGQXMCo6N6lxp~z;=eno8J5Eh@w|70sD8Hf3onY~E4=LaZxxuQ`)1=1kY`ZMp4X%lp;8&aqScNeg2T4Uml2Ky1^xerdI{@aYSWlKKid z!BgzT5cHLqlFNV#SAQUN&ut!SX7$9BwHasDCae0(DeJNW{Xz0mg;^KbNzBwfy@VJipS~t!(Xn$*`)C9&ca_n}A*Zmd~vNZZoU@qrrZwI{pSmH-SeD@I=-` z_@g+ZU0z1*Mrw$!2PaLfiBFb4srnMaMaPdFe#)M+@dLYVCSC`8h=ZeAgQtK4Z>ASz zAKsq?j^2wbnL#WoIvF|gBct2EH)wvT%eOko`?@~CueBA0s&{dH)c2$PGReiDj?Yc( z`!U9O6g)qEQ#f|=&PeRktm0T=VTtj{-+zncZGUqYzwn(0=kPnUZ}j0ZFZL|C?)R@N zsX0+wQZp$uplkx929Krj8Vp78!#XsRkTa8BPMOP)CY5 zvPSTYS$iFx!~NX%{oLng z5pk3;*{w}n%~j$1hQiB{^N<%z-i7?gr{Pg&n7i;_af_#YLFfNEUp!~$tiYKnf8Z?h z>%MbfAbeZUHv06Qbo@c?S>s8w{-uHEvbD$-^C9hh==X&$&}Q#6@w^_@r`LtzXR3+< z=aPDZ3+AjX)}%XiiF#GnycWDfJZ7MgGsQKY+9AGpbUAZ*p1tdJe_$c-d+9-|fS(g+$cotX|d?sjL_t}s=uwRi~IM{(@$G8XMj|P@T4u@|}!`@dL3&mgl!-cAv zdGxizGW%?q6`elnc3g+J9NQ8R=b&>HA15#I#w`UMWWg?HCzE%~i;OIU+=XZUiHje7X40s``|8irn$FfkI#_rjDNH|Df}qki8snWihT+nz<{uxCwx1qcDtjS^`Z@3_oE&0*;>9+ z>?eG6a}oSUIq-aU(9L@v6`SvTm%(?sE>QpT{P85kfbwmWy-0je`Z0NV#Nfl9;Gv2o zL2pGC9v=QG<6DET)Q7Ls^n*VTzDV7i@(Arj)SoMFjygRLIpZ~l*3VE&+xtDV*s`-3 z@97WABiW4ibgxi6d#BGXX3cAiPj*yzWGAo%MvP%>_=ff{+MEERgKk`vfl-Y0gkSYM zMBjpwe)ogV$d@d52?vs>-)i8^I6f^5vO2K;gK5onUpy8A zHpoY3_Kqt&2OfUsce4WD!RNZ5A3jXQaw1P1g(uaHvP#ZE6KC+b?%`bMMacd$&<7S{ zADBUGu4*_uG|?)Yz5)D3Mr5B^rWy`=hJ1{lb^B$0R`bo_>!J1S!3exJQnQ`hWSzS# zd;!=zxxyS znZvn(7t5|Tu}v-Sq7QTZ0enRAxoSz)@NJZSYmq@+`{^>(+S^$J4Y=dgSnJq_&$73F zfG(`QI?ip_`%fOpNzJLuxz{@MC+7RRrwYRV&+K6rmRUKKNuP1>{xSBqUf6lg%thwE zXvKS_ay~X|o>ywwXXX}hkNO#@R(zy%T^G;4JMD5F0-nP|lEU+OmcR?HjOVO_@Vu9Y z=lnK!4s9DeXPzb=fpMGI17e!tQ=7%7zD^&V@F_z__p(=gM4jkFKIPGf#}6j){a?io z;5!=Y3EDOMfZrZ1P~R+anlYZne=L3=TtJ@+p9L4j`g2TdxNyO&>nq5|W^Hp=+wSew z_ExPe{K#udYkP*ZJw_0d0$E0oOH`<+>V8&j<@ebCX%46XJu zw7Q!!y2gON86&B2@hhtToW#7*1<4XX~zqh&!mj{Y__sdsZf&Y=I#?>@2ZLueSCFZ`eP zkJ)w_z3&{b_UJ=&^Z{#gHYun2vA;OFrtFbt_l5$8XfsNU<&L#>mx05sJraK7_}89* z-%2034ZJb>DzFD;vr6;264tbX4g^i^y>>x;F2$@zI;Z&jI5; z)R{@#YtPW9+RR2iAFgrnd)QdchG(xdIte&a3;xEyAGI%;=jqMC!1KiNEnQt)_=6Y6 z71p(sN1DOe6O2K1j80+KNc6olP@DJL5BS>o0A)kF)rHsTUPbW(e}lcY_7i++(N5+d zxL09Uc#%2RBwd5<-@AIfxn}IxVAh)JtBp-yRl@zBas4{$*od4cIC^KHyurQbpFXG> zSYX+&v!45q#g-t8$+p`Vb!q{4HpN7r=bj6WJu%gV#s8{3QR~MV9c143Yfh{|6MRwl z^tbkVZ|Rk7=AK{E^EnG{p3Pi7=jFi7^Eqz-50~_?wkE-sVjKN|7l`3Rw|iCb)yeod z*75w_8_OeWsJ%RWyAvNVgL|sKxr@B}Md-i6Tj|gr{Ly({rf47?1CwqLZ2+PXp_Yyy8I@ z?#a-e)?tbJyB1p5{Ws8ppECllol`2S4$Hzte%uu_I2r zg5K90ih=D)($^_Sq*&{{D6PT zZzx}bVE1vptxLeYBYrfLI&|sb$4Bn(zm-mRhpr4e&)<;XA8Dmi`L=B4=J`iV{wVmA z3ZJ`=dK2q%@T)?nqTl;eo9AcLl*YCt`$ZfaH!udT_W`#7e&@Xnyf4^@C#lYi&M_4{ zy*1M}&!|uIza8j7HS9BrRW)^;-Ro4*k9&=*-+JB3YuV?GZS-7GeD;Sey&AEfqi-D2 zS(dA?p})i#MUCuNZ{XM6r?G#AF%sLhuW#tcbaO^VDzR<%nOMgLdpaLJwVAlo67QYww>}$bo~@zQxA*L^)@Q@bvt8KYyk`%2&&r3GXHo2O-m^L0 zGjw|O=Sz5o4BXRs?|SnrUuWD>1Ns@x#{H)EtlSw(2-}d?rs6ftHMvP@b2>h5@0rfV zb)E&xvkKxny=N1=XO{D94d+dG&&GPsIA>XHnpiDjSOhzrjmvwSJn~vYgd#0E}b6xJhvjU%# z_e_2t=h_*|8e|ObSz7C}!Or~9{k&(+U*~Mxn%;^f9}*t&4fG@UOuw!nyFamb*HODE z3EO2#Z=;WG_Uiq;MO|`ZBY}4e0QdKaA1U^Sb1Rewu3V5w?A@l0o@KedD(Ae@I`G@X zSmTS3@5%U;=wJR-`K>4A>TyYd~^@%{$dzx zpFo$~Ye$#n9hWY-Zbz5qnM;>kx1&q*%%w~4wjEuXXD(fG-HtBJGnX#8z9L=HW;?nx z-??SH@g@4iBo;?1;ec~bJi6{y3A30L6^Bc+BWy_19y4Axi=jiDOo_V@`?wT zgRj%#nQ}4u1&D_uCbF=5m;L$cgZ4sdpG0qGeRA%p69E)x`NV0O$^tOU_^Bj zo2G_zp23)m{|E)f=35W@h&x%%w_72y^$*kE?YJHwl&}JCZ8GC`B~KG zw5*&^XK=^!W^_KjCik6j8eg*&A-*kgvB1rpbjO#GI6j`S_t~p8 zzF!xHquJCt;+~f~`9qCwEMr@VoOKiPYc7w}HkL=W?f$Szw)W0y-$z#lm#{;O^VvPV=C@BFOCJc`VITTRiT(E9Ir-i5u%D=36QdBL-uxZ>ru_%O zE!|f=fjaWL>tn<)GAHG1Het&@_8N6N@LMVeQgQev$=|M_p8H#S$sYxFG1j&teyLXF z55Sd-nN}qA+N{DQ$cht^t*vh$E2eiZI>H$T%xOTl&*QU=tVqoIvh<2ECT3kZ55jwM zkMk@P$F7_Q)dq9!jW+j`^Pv6G`PR9&6FNxu?)jYdD!3;Zy@|2EvC|h=vmzAVY4V{n z!^;ZcY0HU4kZy_&UH6JV0PT&Io!QfO)}Yg@lTROdoc5n?okIB9TE{Q4IZ^)pIW@`i z(V5mDe|M}w_J(X@o#=vZ!YhTp&X^qA*cN!L>RD`}5e|gE!p={)neECZ!EloMb=bdevc4{g{2ULCoH$^}x^j z-pEL_Hy(RKVtmpDCwBonXrH@~FZnw!WOLs8*ZiPOrdE432QRMB^r$d1a z8RRI8@hK*Av+BN9eVsKPgY6u7QoQ<2+8B>dd?I7QmKRTR*U|N3j~oMBr9-8%hDP7T zKB!#WH1@dEoxTejmIVX&(gOqfhHUK($B0ihutvThZZY17e)YQBrf0WNZJFz6*VK~| zZUD<&_;EC6!A5W`1$JdFtR(yz$lG@J!6kpdmrFmY0j0R7*1FHs zH%fKuJTXt-tmt@u{`6 z>s_xh*J;)NtiRZ5`nb5<(CcrDGyS++0Iic`=uzyw3+ea!{Qn967xRA_dyeA$cFFHb zyx;zVA5=ZceZ>Sm!e1{|{b6&hc(=6bCFXe=K8P;W^SSQW#xH5Z`>u@VU!lhO-0oTX zAG|rGuyLmqRxUs(v4h9I{ZUCXd1t4-6yhuoCy!t*@y_D64`Me~j2J#V`(jddcjDm7k;fBXc|uxW&yh#=xf!S43r0?}FLgW%Ad8yN zFL8FuODS2EFOi!t*OyhP{#0-4EzWOf-iQom@|JaW3-$Zh1AoN+t34pm4&N?U2ANQ~ z6<+_%8>t;iT>x(kg53kf&OZ9^?fhk3AHg^JK*+Km{)*3j=Hahbo_DSP8{=PaHHll<2khOi5s>l zcm9E0jK?@^K7o z!E^bMdZ<<>__>xjoMjH@_Glj785ItmI=r=ic&G<&&Ut7z4{~s}dh@u#IS(D@k~ojE zz~&q^9WR6XR^U!T#^UvmTk%cXRFJzGPQV;2NHF(B*q3zvemoV>cq$p{19Ha zCzE=c;(cAIv(De*t`1Ku>#91Og(s-TM2)>xet7=~@+BDK4(jgtds-#8b#L?Qx&y{;o}DYSnd~_rs4}{bV5e1+kIQeMWyem{{Az=qI;v z27Hg;mPGyO-Y@=tTifN-E^4~~GtuU;_k!`q*oQB&j_5drMutLXuHnA)*CJ?8^#yk! zAA0nKj5sn{3QZcB?Z$8|xKW7Qrf;I9@HDq=;mm#HHwkA{pG!D17rYqI*Rlt>IW!r_ zRa5AHBld~0)DE4EOl2eQY&}cv2l4C5b6o-*e~15GO#HXawS(hJxps2%vZ^29x+5KJ zmtBv2If@=MgXi+ex&F;%o_wxzFznNge4d8?#M2>OKsK1apWI_;NA(Ph+~Ubxn~LI< zj8QVv+jsxZ_!)O2OMIMv%gYl`E{Qjm-vYbOGq1(i{>eo;BpLSsbcJWI`TvI8fJx*Q zQzxxC2wZjc;4X6h2F=8Fjt!&^8ke19&~@ZQTGr;dyGDnb-vgIpSBIzJ2mCi=mgFGo zS>}sxTxNx}{;e?M{yiSdg6O|)ec=&X|GN6ZUTxv}Y#%&cF~XkQ+&{eST~`L_gty;J z-)4`3w;O#n8$B4F-Lby#AnFTyXL8LXS9UhJvf>X7@aa_ebOrk2B5==%OJ2BTPo$-) zqb@jzT6fWn?1h`KAKU@|=|nFqW({1u@SqnnalMNd1A*h);Mm*nJ;87uvduh#7tfSA z{+LOw&Y1iHcJssd2A##nzcTd@0zp;&P2$!D1mh&O7_Lo=d#d%ixLL>q7oVCbof1*fu2F&E*{UxxV0GzjO%N&fGaLuxVJ( zev9v3;@sVZ?3<$R6FfV<(jN%n2QuUC&RpTV{PPntk~*VCVD1*+kn0W7`mQn~JI zZBkc{3#4M7n6N%%duw!*yk?J=lG{}>VL0`l7>fsg`2&;c$i>AEeC&2#{KQIM{3&Ds zjiu9AC*JMCxbo2Rr`1W$O{zY2JLmENw-YNvPRtYYHZf1UtC**P?%4jIq1Xa)aX15) zysda~VR6j_}8s*kH%*zs!q8Zdl;NT%}-FI!3)}{T{%2 z01p!r&>2h;@m2OI4=$;!*@pVG(W&6;o4*YOZmmxnb1SgXp65zS27i;T@Dj)b!9uePKwV5+X4)`wB96`s07fdI2AQtNu5PxV_+wv%OS>y|ocZ7T~ z6FXjGB`_(zEl`FH>(kKNNXBpC&4v}l7ek}HKW?3PXEiV~>om-7)}^k>Idi&>xU}g! z*V+Jo`2X1OvHaF}Gz0G>*@>sHPs&crxUqL(Q_T*)HwC$A3U*@dNq&{AG)wu6mBg;~ zw(PV#pPfN$_?714!T)XiGlJ)m-?wb_V42s&S`oyK`AOgI;9Em`tX%`VZUZ$QJ6n6N zuUB~g81KEwdz-m_aYoRoCBr_}gpZWCj?IgA-Wa}E08hs*{{s2-KL*z8*k>hM-NiZb z+OyplleU^H;Ne8U7#u7I2W5ZQ0A4k~2bZ|@P%7Ya4b;k8LcNk{v?*KhQl2UHVgqZa z*az_oo|PO0&*ZP!Fl}5w*Se=V)%Ve!a^scHO=ibFz*GoETyjoavmB| ztx=K{Br|w<>jQytQmQq2C-!prxKtmk0li)^;j#}Z&r);w_5*Q@@F}T&;y?Q*1rESbg)&;ZrTW8rV;FvfnD78awDA&wnr$ zSu^W=OGy+NvIbewPhHmJo*_H6ud|=)d@<3m+1F$4zP`uV&)?eW#P{z(?qDs1FRkZBF{bh8 z1;x}m_u{rqu0|%`^S*L5rnzU#$4U}nvwjR4?g1-8Tn2XZFNXKhZ*(1JVbfpq z0I}yTu6TP;{Y2+1>{+V8&h>Tdi^~0~{}37lhifkeTW#FZH?&{YybS(w?aJr|XAivN z;B3vy;|4S8ePEe!aS|I92{`! zh3H=UbBk)w?M~8;Q@bRy`ncu<&R;R-`6zvDa_G?183txfu6}CuO6Fte1^6oOxn>h| za1YITubry;J>Y9UiIwBg6FpcPqPP% z3V&T|#oYVBKa1dj21me$B4o!2)S5N9tH7^rF5hntLdU*pV;{#SS2Y5CtC=<4!F=5I zCeWUj6V;D4irh0E^105Zy(n^mho3hk;Agbi#TWYW@TE1EX9wfn?%?MissCQ<{x&%d zIvO^#DDkt$3{CdD;H|^`X6(@n2_^RNi8Z(Bk z0z(rM}Yorsr(E?!=#?&3c1vt!*w(W7UtT>>wCfpJL3G`Q*V&P2Xxp>yZMlf(zT ze0AjePo1wWyGKn@Pk3^V>YIhX*b=ti`9EVzAlCJYwgm0%(#JesrRMGF^@{brk9m8( z%6-~@v#Irt@2e%5S_;T;iYNRHczQg`+B&IwFf!@d(2;5K5tqwHe82G#zX=@V^P{#x zbC7tw8LX>wPjO2b&8zVfmbTtgj8H~1d3_~cZ@s5DC1NFz6YuoyRVY3wqj@L3!>@Vw ze2PoTXwKu_WbUEskvHtvJfg_wg~SQk>DH)__dYdR_5Nz)bk@xoQ-$J?=%0IEY`v!# zBl;&!Z}^&kDbUJ@~b=d6vvlga;W!$)BEsW z$`^(2^VN$ZtYtHoBeMcC%Nnfwxt@|a#H*X&e@Xl{*WB~ugF5_hk_&!&qNUd|@Fb;z z*zg={^j>&ZN{+QPw}SfME+6WD$K`zOChW8(b^#oG8XVey@A{~f)O;_sgkC2PXCijS zx}OE@4GDZtb*U41-q*h%8xuTlPaDt6pfB+}`B$50H$4=*01V=dTsP8I< zui8ldQ5yM^ji))APwz43G&ZT`=%p1 zwD*q-7ZZHqW~{pytG-tsiT-f;!#bXUEdG?}7ymM28-!e>^N#mCJ}!`ij{Y8aCH*i3 zU3on?wZlqoz89Y0#eq6?TvE)LNYTl@c)x!LK2c;j=OTId`Z()lVp+kN);*JJ*?zHu zhgI*SzxL0`$V)#}O^)R1-O!GAK9b~@5$`#1X0lDSo{O}pO$YE~OvzFD-Z`J3O$S&2 zTBW_J^Nx zU1fedaRV#3ULW+e+L_-%w~`;_JbQ0qj8{2)LAKCi2aN6Q;3RBR#LhM6VS8?2uY8v8 zv|cl@Po=S5HLRD3mE*pA4eQ|n8(E)5>+vlc|G|2~;pqdy_2`=O8N;{vpNp@sW+}BI zp7+^xRernSCS>EJ&sFz|O5P%O`gvmZtBSZ^9$EVywPpCXERz~tWy6|(03ZD*yYGcd zi*he$oW;x8+xj?Xg4gqRdVh4TK5iYCUY4uVUll%oEqik>@|EEimll;?_$Y1Mg`G*I zzpKf#BGF7_bozgnyvLeMaD=|<*x%K!_s{DeV>|s{)7pRS6y)|htVnShwww{1;SDcc z+%s5s-#fDc8_+Qp04o!>1DqAJQv_bu-)=?fCR-6NcIWlHUH1Fx#8Tir0 zVOLnN+NtBLT6;%bUs1*5_ibCxx$wwE;fmSUZS!br&EG*=^phy#w(bSAy^1|Rxo%6- zlbtbdwi(z7o{GO|GaRuRdRk&`k{aR^H_V8-wHdvL0`N!ml&TR_#6hJ z>&>FQ0$+Rr`5ULJ#ly& z_@;3ldI)-D6kCelD*y4F)cyCK&Ek9v$y>@jU~TO;(RKHu>r$gC-dNDbJ~pJU-8|x2 zy8+u%1Ae#r(#Ru&ca~F+K{gh}z)gGiQq?q_1fa>O`?`B11ZQ)3v+J8pWe?)lSffe_E6t7QMB!bhBGpviYB5w>(eHoP}50 zEem_`zqj48-!iZj>}tTLmULuR1sxb8Fdu}wYf=2v>!4KFiJYFONNi?y{Ox5R#d zy84&B-wDi@kXO}^JJoI)c#nO2=r`;W*#8<(8=72v*9eER@Egck;$FEHe3npYGilmQxU1XDHwn1YHMq> z%!-t<{?vpnsYkw*?(!o0_>1H}rK7K;qpuW`|5Qe6}@e9BY8Tq+=k8(lLOy-#u4*3j?w{nepYJW2}akXpN`2HEw>QHZs4z#fOgO@y2|YH@dbd556Nu z(}u?z8&-YQZo&?gN)B^6`ilDVbR3N#l|J-WeGlWifviQ|O8hMNSPX2jPi?T!?;nf-%%m)SqK zcbWZz^V=@7fAHRA_K(dUWB;Iy%j_TAyUhN9&Ej7Tx{} zb-s0N;>=yT6%I8(FAiTG5mw#q7pVulA=rjy$xT1juZ80XCDuQTXkvr znbFB!K9{knX5CEaFLAGyd@5aSj`opHA%70o)$(e?s(T3CvU)0iDm9-x18haJcD8J7 zbnEptB44~=rB&{mJ?p}T9W7g5C%>ez_qZc9@CXZ;qtD~BjP20jbq=3jjc@3EYV|nx zoV{%)Jp810&)ZA?y~X9vBg1Wc-Q7!n)%L8Fue;4`&@($$468q%K;Mclt{Lbcgj(rmO zuc2Tnvid#9>ff+Wp5uAJ)%@!f?&0wr3v;!-0K}ll$5y#)^5-J1I5zoowU+vrhE3FA419@R8( zsy!Q>P2ZlPP0nYC*Py>d=driR?nyji?n~6So2R{v`gZ6hhE`k9$>s&)HB`c~g*eAVD|O)>aFpPxi;X8+BeYWCmTsmGUpDQ&dH zf3M9N`j9QxLZ@Wk`UO6ue>%$Fyysd<8t7x=>X6+ukGUD$GncN*f2^9Fs+H3S{44`M z#o{qvVrq^f`zD^Ra2nVh8`1|H?rWdC>00|Vu**eXoQ{kndzN@W9X2P&wv}AnC^+6> z#cKu2S-wE*c5E!vP(wE@Io8Y>!1&JX7j<(-#%vts}V~?B_3TSO&x4Y|uZJ-hOHv#Ko7umOmP6Y?= zu}_WthJ6N_9DIXiUq8xcfBt5_J?t7Qek=2r?0bwkjN`Aywve&;fy4b>lg!wt9}*vY zRWLr}7o0h<{2u#9zU0bMaz9l2xo(yfKZ(wJqD(MWoN6~R-D#K^5e**3IG! z&N9yXO>^?~j?>>M^r_=~e~NFLX=Asq>;9*SgI+@1yv{`5OU?7?zLd(HZr*x~*w(-Q zKk$FrX`sEvBh0zCU-IW>pb6e2@8=Wh{jvTQE$lFr}K zJ|H>Yxi`|>(>@>{iMfYtr1up6<-H>w=3I|5&nl4by=UTK&Ua2*$fm8&R43)j(6RTf z>@#09JVx;oU8?_{xjE-&cB#Id>wVaGjs$>;I|bhtN+O(@magpLt= zI=Fi+nzFoks$KSOp9UF+Lf ze@PoN5!m1ILde9Qy@B2~nD~C#Su?n1OyR-x-#v0`R>uB9>`|O)TsioLAb1`E&#Bvd zjp(2cbkG+%xYj-f4J$5I`0MbxRB%@3js&;NKqg-d&Aszm{0oWW0#~KCG=jHAu5riy zCUY*#N^R{|xF{XvxJ$!LAHwJ0KaJpdF?cu$JRC%(!LP6xdNyX+cNe}VyHt?- ztdnbFe*e$y?aOa+_QXfopKZ18MzL#@B3Jl;?RDfbvgeZPIl|O57d`2$j_KfL9|YkYM11#@$Ep%iQ^edd<8ax)yfsZ?($o;gMUN%Fnabf)l%^}I(BP& zbpxID9-uv4_oqG8Vir$x<`&%2er}xCVQ9jM#c%h__&I!btcMk^8{*i~x0BoI_&Y+} zXCEGdJ_B4W{(1fm^?b%Z zegpX6%rTFe;J)V7(9)pRd%5PG#XZ>&ocHq0y=kne@XXvZ^}v12JE6I2ynE%&w`&aF z^I+llb@1&iE6UTEeg5V(w3Cnih~4XK4Y>mjT%7mz@Lrjf$$Lpg1}Y$*+r&#jpNa3) z_X)<=5i?TXi`WwOh*h+uxRJVE*vR`J+hA9@7ajm!R;~UhZH(|N@q5X*?S9Mu)yG+f zyR{DTd-cKJl>q;<#XjTDxb?GIgC1=>X+AcnY2yMrh`);h57iY*CGSpgi{eFTXU4?` zDsG)In6n4?D;d%0|0{+csSer3cS3;{YCNxNX(`zO|H;>UVo3pH$z|)yhlT4GWty`y zymJc_3;A(vHXs-8+et3VQ20AA^5P+dlTNJ+Vgbfjk@^w947w@>hR3EYv4CAXmruVmaVI$6O1X37};_}F#ay^Wv^PMTFlLp&R11eu=>*+I>O;`=AFbC9A5gx za3%eVm-;%u-Q%Z%v-FW0+&PfWz?_W0@1oP+bNKIe5-K=Qx>@=sg+ z&Fg}J0>)>#|2+P83_0+l?B1=kSBq~ZT84k7)QXHpmZ(QQ*k04iKQ{_udG7jZ=MRjV%)~xobdj& zSEI*Gb^XomI5l?7aUK5VV*IAtS3Be3e7C`h?|%0gYVn~- z-m3?fSEGlmb!^wI>$(A3emU!!j~#Ihde)lsVtZW>o&=w)!{_kd-nZBw*E%-H)^FEg zgM3)uf)i_GgUp48(4Y8;gZJYN92Ae``12gy{m<~i)z;YGCB9?uKilwL)|9`{z%KgJeA?vUam=NEw)N^bcr`Y6>UZUFR&A=u6RBs9nGU_Yz~0h7 z%X;+%D-@{XtmYSh(@f54hBu#;|BLtt``5@1OOPLyKDPAm>p$N3KK>nZu9MTI&U@8OYuN)Fd>I;k;#Tm5GXj0YoqPNw3Vd8&!)CWu)+ocD;V0Js zPhETbM1G$akYN^E1=O>1=?(nu&AS`7RUA&s-lXvjksPss_f%`mjE~?GJ6*!6H6q)QlV8P|48X>*tvF`@ncwKo6aOn1*a&?zuou*UTkMSyOXo7Meol@- zO7%AmT&hB58ePZQ*N-5k0-kPi!Qn5$J@G_#nci%v!+ z1#Ypq@JZ1Ju*nwOfNjkb#x^-f{0H!ZMx8b6iw>9CTu$DC=IX#@lA)!Jzs-77-e$+< zL9gVm%=zslSGRNDPmE<^ERDs?hxi`Brj|U|);&fsO^l(jxSZ$Zk=HueZ{~cVJ-tZ} zshbGATsmkd^9SmOB5Qyzk~@*bBSCX6(#_%5ZaH7YUb;EI{Hm~Gpx~W$bf}|uu+OyS zj>RMs0P88L^Uk&WZ#B>qXUxZU_qDb{d>X69QKx;5_1VYROkemO z)mN07@20Qv!Qt#T;}yv-sKbfO8yjmA#^(P zDo3BDuY6(^SUYIc7rw>o%j(&#ug>73T9FRFa@Hb>Z_{gMbZa|TePTP`^4dYS(s(<9B~6|3c^5NbgR@HsGzbM+e@1A-kdatII*pVXs<6Tom>=&FP@U*+dbq z?_f%&bnnU29u3~z5r)uQyL~~iT-FWYb+jv8YwB>~A&!I`I|gI#hrU^a?pWH_dUzMS z-7@F-q=c)SaV#S>|1ucJ9-?^*1~=2c_dB2X2H8<+fq`mU#^42vh9@t8@p zE%{S&S0aqOIe*>jk27qf$Fy5_+Kah!w$z9F+go>U&fxv^fqx052)G(ZAMJ6Gmv{>nLqwo{zu|@RG+>OPNh19qUaj%}e zO#9by_Q^#1#P&7RgSiP=IoZ)=>XDB(pwBGv^ckJindH=nd5W`oqv-!NH?bE|E2iTa zAT?=S9K8mZqt{?_8ybGMyQ|mSgl;lcdQBHcuR*Si(U;L{65en840_ENN3V(Mea5CS ztwpCPa&?+}spW{=Jy`amwaC83k5Ai{k4__fsd#q2beheufbhWy&=R^uls58_)rBj; zYsCA9hu`Gc8dv9EgUsfg$5cD9Rqt=*C5rd0b8%`eIN|*+APyi2TSN@m!sHr)-(Iev zkpt1o9sG6lrai2S>M&x%LLmI4s4|dp;ty4fXy+@*@bT(bjEubmuxq( z8%k#k0pBt=MmdD;>%sSNV3-J7(SzXU$iVG&#zVkOdgB59%HQ>t`K>coQ>%Z&buPN2 zWVbuW>FsC_orAq9Q6G|A7KIiRhdv(tX*GFO^#j36=nXwF5(Upg&{h;a$~|!5hVWN} z3&>l>M(pB(^X%sE1kHo@g&$Gcb9ETA{?kFEDC??yp^3WLy3TibppUhmrdn&|Ukr~@ z`^bjan(1#qc(~de=(M#K{3@b`h3rb+UjCH!s6OBoJVmy5T^BR1cj-g-q$lM)@16sQ zu2BqsBrnXC-cg+H3xsYocJ0lwYhQg?Uqd?Y3x3+#7k;E)sW0v&_7$c55WFtP8Dr&U zk4X=IG@e?!%tiJvhgS01@m;}4dx&7PO0~tgmV7JP5KcI>aGgsFj;>P#-*R$cI_O6U zHrj*aBpNxMcb`nqkN@}iqip?-{dWH9|6Tt0e9m9TA6G&1|5N<&8P@em{IP;(|8MwX zf!5#Um!H5N*&qJb_#<>NG<>56+fU|?=KWg)+y5E)cFkpBE{&-M4B5`l{0dNz4 zT*_bZ$EVG2hd(~WwZ|Vbp$U&a2C*TDj^yi<3DuJy<{;-M+SkM<>)?G)_YM|LN8)MWCDlDjAGU+U(|EM+gM@004}%RuMs^9FYR zo$ccB5cZ;h+KW=1eI9-sgU6VCKH>e7tWB)I*^BgCJP#WSV=Ir`>+VGhTK6J%Z0=sP zr~O`JVErHCfHiG+`@GqUXbawx0Bgr?r}GbPNPy|T9r>W@7YY2urk_OrTPPFz1~3a{ zvZuh~oqZ!IyiI*Fr%w9>|D5%8d|ukyenvlyo!B1~Ki9rLrys9hY4+5_v0%&SIF`E@OZ2aUKm896|AX6qo_n5byE&utcI@X% zSAhSgSa13p8vc?uUn>}3UV(P~VK?d6UtWj)iohf6gv+Kcg>HnG*d#pK)dI9WuXLZI zOLzKwq4)fA?Vi_2_sDeQq98Fd`ZjT&O>9g3dF%ZH!!O$G%~52le0=&{&^fiHt@W(< zy@_~^{zHlPMg}_$Pl**HbB(26zDcI;S~GS->CHLF0*SV92R6>$A4;*}Cy-++Dy;Ac z=w~tUeKp9}vI)nEiL-%@WkYyLxVTb%gEbOg7HV0Q~n6c{sTCuXI}1( z&cT|;v%$#uU6`BdkM8FkW7Bu_JJIz%a!`$&qWBi%$ZD6a1mClJ(j9;DmwhGY_jGBW zA6M$b-$d@wd~)RGkt25iUb!Fn^>tz&j1JQ;ysDTz`VRV@<>Whw?rTcP`DJWQPLdZl zm{Lv5YE_K)@JqGwg$nE@Gm$HAW*&L?PN%^eW+MBI#}}Y>R8v+pC;ilvjiPI;r}l+v zKBnW_E=B(Lvj*6T<4s4|6IR0ekk=)H5|?*yG5Yt)J=g_kXDu}c1v}5Lww8LbdFm5e z!)j^{YFzazvBSoQK{^VrhbO3i-&S&q@vRjl`zwp^t?ixN@4{}&UnzfH9dQHW@~nXW z@o|BB(f#`1Uz2V!gYk3bH#v~#O(T3Ii^+j3;ylXn*PY zd%~Hd>fhH|D|S(@sE%Kv<-s|BH)MoM*+d!21JhiWvM>C^AeA~?QEc562YrDb5_j9Y92$EU`eHm5{oT*Je}nB^aF_ucCS<4u23U85m&0Ik^K|mG4h6hE7ZvL#(aEL zFrx9ESWbRDV>u0PIpyMw#-B|s?9nqKB9J-)tTp!-;(g-!K+s*rtP<)Cv???WMc~i@pJ`WvzV(7N}hx-e=L9Yj> zXTAFdr=E4GmDBtbYj6s>b!sBJwaOJsi!S`H8V_{1_IhW}_Gq@cKlz2;c>2TJ!JUq4 za0(e!HLFi2tb^$KV4)T7M$PIoS=}n%CT{ikoX>CTn(EZ7R&8VPmuJC`2Qz~4Y{r{o z_)FL3-Hh`z<2(a@IrY58+XcMo+K$IO<-xB5kEw>oqYVE@O!9TD%=KqCpMdY&hCx*}V6}5UWA3_jTwM97 zUA892MTbA6c873Zyz>_5Q2eUa@|C1yr0?Gg4X#^;%)I~@zM?r%N45txrk$zy1%q3D zG{wP(4bWc0N-MGv+H34Udv9=NOcS(MljhLd9Oz9kr`zds+Q6W_7JAD!^ac+^UQML4 z(H^`y(Afs)Y&-E6dCDJy&Kg!CZ$n$^YYntic;b6U3R5yF3!x>Sm0@UU4zx5!^@|f| zsTMklvoA%V6Y>7Uc8+Z#cjFauH@1J%E*xapLx%b68*cR5Hgt0(j z^pfh0zXQFz0KKSQd>;GpYUm}g-!;%gf5j0$-hW#i>%XM0ukZ!%tb&+d@%Y8sGpI#T zw+Fk4(OEc)FSBlUs7Z6^~DK*1!DB#&_ZJG{euUtVj+xb*2MOX{=|#sk%%Dr{;rG=fEl9 zvCh~L4`0FA)uoh86&gJn2F5v2w-~!Gr6OX^!gNuW+ z2U~e6IQvI@^#(49JpL2LcNtv3Z^m$F;de)FyFcVBl-zcIvBOt&-uQgv*q-3~RfezT zm^$R=;j16OSI<>?e6@8S*eu!YdT-1QUu_#ReDxRJm^<**6CKu3Yj~~_Si)yNfX`}g zNaV9Q@Y$R{ecw5U{tMQjJLU|7&*oI_@b_#!1E2jGeD?nIBKtS!8)d`Lvp+_j=Uk-~ z$D!q5ck1H~H*)+zPd6#P3i@Wu`S|xjS217kAx2yG{)5{5{+7G{*^!5mfRXS?GX4yV zH1+Tb`J?oA19I|w+9-fOBHP8!)7O%I@CWFqF}o-rzlr3_riIvwrL&+9)FbCKfXjM5 zme__#4^vBgL$N)UvwQpp@s}*L;>WU|+%hOHV`bAO_K#io@UErKCO(-y!v>lfJh2{K z>^|ig=DN?$44n^P_d)mj7Uz$|miHx(?ppHbK40p( z`|a@sjs5nE&`DBtMUhJ*j6HS$p12=A$DF;fH*LZXz&JH$jYa)vEaop` z(ci&&<%j$9?-C|A?1^UfvCO)RKyuI*pM@NpS(6dS{MNugl8^J1^U5RnzVgF=`B@vx zmHRy74RV?2$DFl{K39e=qu7owuSYia?mN1RS)awO?$S-T=;|(7SH<4u;xE|18N>s2 zSfkg#8U3$$ zCPjKv8yz64pC*>X(C#2BUj6f+{d00JpRFKnff##q>=MTCwdI<78d=<$}FE^qCG9^dlD0X=H0&6VUTxMMj9?VW=5 zJi3!kH58r7$i>JuljjVD=CUh~Qun$Unwt#G9Y>C9hVPm-eEq_2LC2@Sht0H^^Hi7c zFZerrZ7S#GA!BiNZ#A&)LOhh{Z*o>Jz8^ir%$dDoF1pA`zWvuM?S0hF{#UEy?Tl{J z&hEDV6gtC$5i6iLBYmrH);vSK74kJM*V}_zRC7PI4|L8PgV+g*u4zx_lQWRLfJHtw z2;v#yllO)KnT$*0tnB8DtC>C)8>>O|C^g1#7LnR`bwb@q!Ssazlebo3l)|p6wot%zv@!@VR%^zdzRB z!<>8Q!LY^Gy?H0{fcXt(WkB*I;<~p|S9s z`N2z=nl9ltB1Ve1IMy}f*a{E2wOmI|f)8Bf;&%`~*CcRlQhec$C;i$N_yXe-E@+)A z$rGu64cixS|7-asDU0~3U*&~oz-vyvcA=^U8-aNj9=kBbdU!Q!wlKq~W4thn7EXn$wC@ zdwxtg|JD9n#y)v3XYqM+hR&6%C>--}%EPtJ=xqr7n*08tVa2;F16RHVt}OKD7`*bn zY4PP4yz<`F+Aq8IM~5F;UTxl;4$gVc^lrZQ8yviyah_(Jw=+)V)p_rEZ3|btYwda7 zxV?KG&dj@$ygOi6_ogqfpduqYkMp4x?8*o~TFPJQ^*=s~bG{DrMb5ewIqP%wya#3l z7CtaAurQht7{PwB;JPm1`RpfmF`jqxt?*HQ?zjI$zS5)h83Ez_qu~A3;QgZ^^he?+ z#!R*Bj$?Q%|Cq zE7?wStH1lCa-BbWJj(sR)Zh~u^FLa>$NZURasI2Fj^n-eskZS3nyIzl$vmgK^L#X6 zo==sN8_GO?_nBV%-~DAU(DDUmo-O^naXRyC8Q}eP=Gij1{XAPnd(WMDwtUh1?aZ@f z!sYXP%*?abal!L*BwF{n=1V8b^Pvnn2^6G^u;j^LZPU!V?ODND0|AfcdLp=Nw zKk@qcGkZl``VHf~t2=op)JXXcioL%ec|cdK3k;7M=0UPqPm3mxGKQy@>Vj z+WK48)oU-5QDhenFOSr-u8Jvd#3tUvf5|S=34Yhxm0vp1QzoOQd|hiL`2{`Ye`0=j zT^o#FO>H%;%YRtuqifJb*!xD$fXB{&*BXApy?^=`{2BF0`1AYXcKCCZa1Z<$cm>=M z-h_ToY!~0EIFHOL`e-UWSY3;(cdL>0HhcImJ|A15#)a%3%5MiN@?6_wRu>nRxpM0= z$*l=AxlDTk^k(w=*P|y*XP?3@d`5NOWj~mJoRY8(e|6jSEAO!z*L{OJCf~HR2hQxn zS(5C5vkLgj9ykY^$UN3zCVS-$bfAa+($Xt+^DLdyFs9;%#rC2B(u0Cq{_B0tN`o%M zODy8*KVWQ$I?W^Of6{5>3(6lBj7NKMW^{oSKHuTJ`@Q#6J7^2ot?lX%o_zSdIzMS(C_dFH56mE^lGxgZcfmtuperpVj|IK_)fwAn1;&xn z86;+I0Xl~KK8i={H{{B7x=lP0^VFD?YpFH&>@YfK<$J_VT*um^lyLSTZO$aNabQ<; z1N3(PApBhB{5#ITBi3Orwt<^C547wEb%Kyr1)~^q(cg{O64Uxxuj;wtFq^RXVgH>Q z>TQ*ndmD=*$FL2K)jeW4<#)As4&nkiPb-cJ{f}`OEhECFbwhel?E< z)*t(CMEUQkOCa13o@B@tj92tbpH6$Ih1S+S$zfu(Mrhe*HP;R(7_9-uxUpTig5|!Qbc24?A1p z7%rP1wlw-Vl>0>CHl1acVUM%@H&9o>z_v?sKlJn_^mM1bL4uBs@1#`yqi?&uleYfx zoz&s)H}J)G;=#5FJ^MKDJ(d7pjjc-|^%WSy;H>n@bo?a)=M35geMMwLFtEUeAXo@* zEIaHlS+op(9^fezU`ulnd{tjUty%c)FCiVF8q zf6~+o+vCJ^EM!g=xgP4WxdOc>XM%6~#Ps zKHXFB>xLcpe70MW0?wt2Bd~oB+l((EIB-*kLAQ&uOdd?&DHIf>c+ZlC)RC8 z(0Q+y<;1&H62k$Wns~Q_Z-%FVca?7JwTs7^r^ab$k#>^dhvUE<`IcwkSCmX?{EEcg zFMWLWwtd9CDc5=F>;cmu`J$%N zhG?;NF5_PZ-+P|^-eb*}&yGFVe3vo~{A^KTEjr33zXrENlP%y&4BKEVmL6DbYBPNy zT=zxxkR47RW%QB68kD=WJN}zzF~$skiO2BIk*^XF-|)@@Vjbd*j6t>vUCWlgn7AC> z8<^zQtYjZ=V6WVOjfp<(`bJ}0Gjd@)6J<|x<_qp=PuuyW^HqBP1Acd$N4AUms!3ME z^OPGM8DZVBVx1)g{8anG-&_bC*0KM`w)3BO5ccVVi-GA|z%#ZT*a5Rzo=2gN8s51M zA13_uP(xDc{(XO0xO`vNCx7g-QY*c&Dfe{kCiWnF4uZG%fi-~N8)oPpq$e$=s7tfY9=mE^f}#^K3x^?fE8|A=I7 z4;EU})vlZ$#pj_loy?epyNNQp{2lsE{tn6P^1VoAH#z}ygYB!GPJsUZvAV|N@s?gc zF))&yIHUT<=GuYt^X59W`Z@mAF0$gmC+@xQ=n87&Eh07zyfJ$mJ`vC7d;DGYX4blt za}+Ce9>AYkdL{Dalka`hDQ}+T(pf8S_INVB3-M&>?9x})P$z69d~r5Dr@|D;teM95 z>+$Q@MPEQ?cBYs!J2}&Wn5ebH7r_gOU&LMqUrQz)@&)vX`i;;X>$lH(a?1wRul`~v zu*gcG))l_9K1G4rT=aRt9-KA&op~9)&6rGFox#7%>IuMRJ^K$enoOOrmyURIY=3UT z=iNEJ=_KjAc93V|cvfV$e9#tS>&08XiJc@d zKD%b9CBD|vqSj45a~{jymIY0ukmsIea@yHn$y-+~?ptS89iB7brT5vthDc{3uX@=& z>c%Lq+5$hWr5*d9Rvx}Jf310k7~GN$=x=6{HNeDraTe_Mov7Z6HhJMmiCBGyrZ)?>iv{WC?AxZY^uV!M z>4BQ1rJR9~TD?JWkY%?7_ArO~bMQ%cX6=W}kv$Q+ApRTTEzmpG68|1u=nK>?;Q#5M z(MOASriEj(utk)ou^1sFygU;nKb?Iocmc2md^)<{2#(%f=!>Z^) zYA`McAq(6RxXx#d@$tVFnyR5+!~cj66mJ)tdoYKVmTQR7`z-(a*yoFr+Sv&jIA6f* zvHMx)J-#h9?C&+aQ}Zsmz~2@MQ;6u0pbzu>o?Svg7@I&ntu3Rry$GBbAH!Ow&DX-8~FNL zk3j33lRP-w=ZRUSe!wDrms!_QQzfZ6nrD@$9>`1lEv8DehtC?sIH+w# zy+Z1Mo%O+6E0{-VZ_XV7pZZzBNWn|b9Zov+()*=W(p(?+h}V9i=tn;~%y)Au*mEk< zsoR=^o&%ind4KIo&mMm2^FM!I&!gzm(q%;B$nvfa!Pl-%h8YJkyT&mcy}&nUQXu~` z))>LXX`k^VwEtAM=MMLK;9oy=`%9STKJ*2}vP>uMQtc8`Q!<|1p~gkix9p&1%yj0_ zC)mZDMWwDh~}y;jQpHQx&^*SOQE zolwtrJNRxk{^2`qh@J>B7KP#vQchpL5h6k23us7Bhvu8}PBF;LdR)2Kn zT-9n9pAvCJxD=hj{#y)Q4kZ?8MT^<9>$v|kI^cDjAtG5vc0Vtt*-!36EY}x^-a-4f zqq|`PT-T-t9+Dndla^gr@dEnJSfc|X_Y4iM@jE);LTaB09C~=e@dK+0qve#U|6I`)*?U>ywbJCp-FLRPE+c*N69t{mvZj zP0WD?&pi1#e_Jpx-Ru*NUwiC5)T;xpl#9_0R^Zsj{nnmUcL3f6-6%&lYOYhNKjd!% z|FK`7D`ka^{i3`__=bOV-hG#6Mo#kf`U3Q8oi~NdA%3`EpUV%kS)+n-o;medcDecQ zXOoi5{{Mr??EgtA?e_oLmuaKN)$F^y?8ZgDNK-*7d^9z1d`N1bd1z|j#E8_u$uX&c zx~euJZA0e85dZ`&6ag_csuKuOf9ASuGZ*N@V?XViU#cFo(!bD!R$Fn zDQ3^0y1U_ zxJrF_W3O;6|sPNg**d!$s&leIfzVOPD)T{~pJ(I@#%>o=6O)Aib{Aa#9%@dMao zPbX#XKYeN8^3%TW{rHS8tMUwZvJjqn8}MJ))#3Hytl$%S3!go_%1SY@G2_yMfmJv9 z9b4_{0(A!&|V|Y@W8TlW(ohg~NQi1Rg&?Jl>x=w?aNxcm0HmCYJ?yQ}&>3U9A<8 ziPhfprOr5EwTkjuv>4fInT)}+* zE-x4u`(xk3t#hyJZ0=pcf3Nn~dlk>XSR>c5_olG-YE6*uOIVX9#i@S zf;%r|Scgs~W$k|n+<6JyImLP(1bpPq?V&(2Hg?$}lKWFfq+mjzZs3GK{g4TPhM^MzjUy%mn#N2Bh+b=@udw!4 zf8AQ)t%2mNQ!5!q$O@mD1#bht@y~%5vQ6+le14VmP4?j$WThy&LM?l(=;+K!E1uSm zy>h-qO?2^Z@}l_0sn_POK1QF%`M#O|C-`sXM%%)>e@wAf6kyAI4tjsdH(NqW;bTm^7vr7>Cu1kHx`qER3L8!p<8k>Dw!p$^ighhd3LoKF zY>aCsL>6%Egr*MHA{f(2Y?i009Q)Yg)Rgyr-*A&`7z85&DsiB)XQ&p_&oWd%XHXrd{SGz3Q7@Km7LkImvvxZS~n+e(}&&+^e-(2AmT2l*QOx;J1f%NRRnLOUYAT3fhZy2JLWf#W{9sm46kNBt5N;b&R1q zoSDknF1O-m%dE)hDa3`dCfc|9@LuimAn!nD;EMDyk3XK7N)97%)_amkYZ#~Xm$cEU z5q$pnV0?KI{^yD8JH()0sg2W9kj30~a>)-nj?L+jyMp%B?5(eLw<)#-1-Y{;J@H@_I8cK ziM2Y%d>>-I=g?oKF<%2KXv&iV&fczgt?oK|p`=Hbpxu-CeZc%)Wq#2)k6hT{_nVs8 zHRx++%=~&(PiAhxOKD>|wv`C)@_5?lQ;hXJUwPm_C`c|^$bS3pitN*Sx{;%nZJ#=l zgHAaiV9uDTy4^lDZ~`*X1Z1KK$V3y6iQpAW(Or9lA|CA4UvkgT@%G>}@VJK+@oKkA zUNbfITwV6~5FhRNXwOG`j&7U&YxdwY<|dn$r{Ct%PjL|0%+Ya=4+-&Ii0?vt7YZ!J z=4`qD9DO&#$a~}paeicGdwFjmetP7mS;l9RGFU#Fd(n$)9wS$F0XY2__{^CP%9m~G zno+qPd8&T)%x(31tVkNR%tm}Wx$INv$W!UA|3|*n&v=>59uyHBcR;|?}21JcYrqae1d)S2uqKLTU zXZr)B6+P67p{>33oFAD?HW*gH;+zz7pRdpN`wf#2T<$%;-yc674<6sicloUEef!ul z)mCWu{f^Hk?){w>v}mg%Q}JBB&-!HI2<`{Z9sSU$znQk=3!m!ve&WYCOy{8vK-j9e*k~TUFNzp1==V_xj9uUtN#Ai9F9NbRpeCmI&1m z_hxMwh5hg+JL5kF1B~_ zfz@9_j{DgF<4XxHV4ni=dzTIi9=_&G)m!B1s$K-P_;Gb@w2f?`*r8J6+Z-9J6Q6H` zzB2!J_9O?@&pqTksja2N8EZd(I5!aL8L&dVXLv$=3lhlHodbO=fIi-0VC9}X%XyzG z@83O#EA8A(JdxUw9^Fv>guihjIhb!zBlHdGsd>qJW$%?Aag@C~Mn0xDNi#xpnHBsFU|vTe|I;(ZGT%TzeT6oeG6UGj@$Nj zCtBMd`f&~PgW7Q~p*xGD8hYwYH1za6Y(x0#JJ8d*eZa~=)_F591r8_vFyEgD%}M+z zuwec5b&Wwe8Sqn6`%o~Zzki3Wo7h5}H}&mTZ}`;gn;Wmuu+NrpbY0Fn+552#;A<>x z@xV9H>pp;{97Imy8FUmG%?kcAx~Y6diK*5^eODIu%zeKM`-*T5dzfGElqSv$J-RFq ztNIhQ=#gc@$S=CTO7sWX7EgaRvYw)WHhy({_G{-^-R9Do&$feOtVMVO@-A&H!}i~R zywuj#54-v|LUoK?Ij;ZLI`XMZE_e4}LwP@9SGhko5Zl?|{x?DvHh=56vB5p*;7(Ce zJMK*AceYCHFCQ=`v?8-0v~1`tp~lte#0+*1HEixd-TfJy4>>c`w4vPJ4BWMB5DZ!- zZphRSK;MmZKBKRv~fA9ITRkqC2&A^zRmtZq{AK7E_l110<`iEyJwMGjbgP(QR zKF$Mgk@sZRk?&#V&+$Jxd($uvSfW3jM_k7^!?fSrwx(9LzM05sYPaE|HNSd9@_L+{ zAbU=7C%Bx?J01ADH^KJjWC;88PmYbJ5l zSAaQ1n4f$AI+tBO>cgywbXv*Bii3CG|DyM>Z60`sdedvLr36?T)y~ctOg(90bJq05 zPDXuQ(;v^I!xZwjVi_VUteOC}?_6x()2lz@{6p4qjuo3Un6uf@*(afcdhpjJ5YIUO zP1c?9CLkx|jeWW{g6=F^@H*P`qL2RW>1S$L&*D;IPxhkcZ^H}(f(!)7lu?u}#Z_R2Jm0Revr^IQOp*?;!sG<4C|xFu&5XG!uJr{R-QE7m(j>MQP2?%ive+Tew{D zmOVmsbAan9oC~}5JU^^2?-5!nemAslFf4wz!Q0NOZ|sZDk2dp&(=D;Adn3dti5@NP zwd_~&eaK#;wLD3?y%NX+XD@@SSw=$d;0dK_@*Apj}n>nQIkO8wx7>P5=;XdMbf@&tryqCc_jG>G2z^>q?*IFJoT~-xtS2A)G4kpTv;IfQ zOKWWY>8U;jt{#W(oB)68(AmQ1Y!P(326Ved?>DOdt(}%7+WfM!?f5$42)(w>5hX{` z^&7X_kFSGXd9jZ>e6R!kDYxm*dt;?vbfQ1doX7^~&t`mFqph8?DKr5y^=nvjo-LM7 zEj{qFcUfPbr)RrQZ5ecAnU#UxEHPRK{m93LXzrB`G4}%8o5Vdsld$iVK*I`0SOulj zsZySt!C~w6e=V_cK8cX)WMnyD!V8~mr2h^0NfHNqCsYERIsy(z=fS^rZOKkMS4sOL znr8v)>!9!70@jCc4X=jRiYBfxv0!E&BPD|WUf66!HxsIpJHUUh&~Cy1Q`ZD@l7WBZ zepgm~q7U#-JM)3_9L7*j+qux9BIrQTOExVM4u;bn-eKCv^aTy90<+;NYNCNR;S(Oe zEAQQPHS!YoM*=4aJ*)${pIsl!?pIoy@RTPsBz;b3Xy1ZR)__~!gK6-?^iX(pcVztO z$oMltjlftFFxGs693XJ98C*OJ{xtV`;#UUNN`N(R;V8Ip3|KzSvlGZ`?ws9o6&noC z=vF-(7`+^rlP$yW&~h8@v_BU6W8q(%k8MR~0A(YmM4}$QXh>UI&-QhEZH=KLm6EGP zN9v>GbuY7)*5hm0E1jYA+rfqD2^HDY2Pm>G4Mr+@+H1WrIasK*Hnhf;t*>CMBdoP( zifEqJTK3G_SnJzZYh%x3t#gPasOygWe9{vX%;-Irt~9W=tKmPT4*m0#o~M6$wv7E~ zu=nGD<4tF<9>*Li*FP6;Qi^2KcG8w-UIMx`!Xxd;E@F%y^DF8dz?EZd|SZ!EOGB~ z4uM|2E2xvlhAs}l}mRybl$0{)_6@R&q`~Ef$Jz= zmM7c(!uLeqQ##0(4U>p-$8OL(-4nyEx_z5xII>@N6U(7GMqXe>SIL2O6VX!-ruZWt zrTCAoPW2yd!=^OL{7`HFtQ7Ok6y&r~GoPu| z--Wz41=*`@m1n7k-&$*(Qwl{M^HbsxSGFbPYwmnRCi8AmqavGc13F4u7A6v{Q%|F8Y96z}E=8bcws}vj3 zz`KpkyNm4D=?^1&*?Z@Gee3p9&$>m>wb`#4t=C(1Lsctdl@dMXy$^qlIzfs(;n4rClCZzZ6@?N%>1RT`7M8d0o%vpRbwORthcz zc3@N3e%_{#Vq_%2fMft&1sjTcc7IETbAM~S!e_D79J~?OzR@ol)6|N*#CI)xcbGno zz%!#&(}4SF@;?|nIsS0~eKD!}7;;R6we$ef;g2i_mU{->_Rq4PiK_yXjIt&uUSImE zZb z@LzHZi&pqsPLrRriyAW?>)yl2KSx;OQN5r1)e-hG%3i5Po=vA!n@xTl(OLP`byiU~ z_9PiPM{GCtyk>M}lb6LjqrW8f5ZXhW(kL?)a4HcR@enw*$oTpbjIV$Fuh|peAPi0= zfm3ny=|5cV;1qUPyDo4XPJI;XL?gg0;mH@#h?oB1(1;81@I!3RUDAmE3GPNdu<>y9 zHPpndfPNUfq2>heul=xj(s}$5yooNFI&2@s*I^rktY_!wZGp$NtWNgV_Z+O8yh@Xk z7j^2eVM7j)ljp%MKZ&|03z1iB->S*St5nUygT%!M2i8+B3w!5*_P9v$@ops+CX={x z)napDqUj^(6nm+9Y$Nd>`I5*FGxgYf75aV&_R`1E4a3;)N=^wauD3PkbCEj!R=qQ*+$~8%y?krn_I|Zvo__2QZEPQlyAqnt!Ld@_QNlodN>rApqDibta~HtuDWl6P0{@Z*0Ai(T$e}i-N4`^;LNp4+O*B) zJ=!y3rACXs4Ou3eiM4+VGQwVB$sQ*Up$YiA{Wq3hbq6Bom-w;|h=-22f_(%3hDc@r z9=+5*(p+U1e-y?LK`&@zexmRCy@>bz__S z|E_R*f7iHO4-JXzcl>A{Lq8n;(tIdTBbkO+&~}-oi9I+Z9&>-!XD@1R7i3&Gmu=2m z8fd?fc3l`CMlTrI*Y&u5qjBx)dR(1lfC%F%(YWrF3{doDqzf5fU zP3T7^h6moM+GUb~bv;g->;Ah{@NbtB2gUCb{6ES6Q~Zx4SbYa^PSkB<0wH}1tQp&> z;?QmTbPxCpb(qNo`7&9=qA*FqVcY;+>f5l9ESjNB-pHPmsOGtmXaN$E>Oy9$WXx zAuD-|Y<}kZQs;aAj{p97+wMco-F38|9L>R|N?slQzG;5eZ9+YJC0ur8iHW<LQ-S=6GVFC$Yh?s~=_K^AD>okrem z0(QQe-d5Gj+Sc_-5WU`Rcn7qop>J-i2H$;_{H1*pVquMk_uReHI=J$o_Q*Z=xD4B@ zViPC#v?c;em77XOw!>1yfhAo9KRMWBkH2c`LwngP=|dhz-d^D3Q64zkk$y;bio9yq zhjaBOS08Y{*$n*^{m{E6e)d&xGwvJreaZFiH?`n4?-&`~$T(Z5Gk`Cv<#}UoZO=W{ zGsWw;@BDx@%4CfeZ1EVqu7Q4*L4OBYkMv__vE!&+O6Aa&%KUsEWWAZ z8?CXY(|21L+aT;V+8@`aruuFg2R^dcEXJU}hcOP(dF7ErXxpCKHNXh|9QIti3@wAD{E9CD&;%p@! zuT@SNb^RBPg^oNMh-F#}|J9;)SQr}U%5cbZ=#kX+SNv$XEz3PN_-D0`^;i#nCXETZ zW3i~6?!+oCf+iT8HRC()`zgaep>gJL)i@txobQ-%b}L?oOrmirwh}r~oWYSf#9HFaBl2<)z0Q`!9nBTgjg%|cmX`zU6&4R zK@aOIu&1m5=H9|jg*|L0dvQB{!9$K;a0M`+`exD-kGXqXo{d07(D}jt*O({JJ|0+gHeEedv2&)C0c6l!|Ui)`QA3tCRm8`R~0k zz!>w?oISS8)sBB*<}4lhPS#w%vyiju_CmkFKjQz81HHi-eGi?~y)bka8%vFg!|RaS zBs(^J3?1DYi21aK{Jk8yTSS}g{oxr_D6_vO)Qz~qM(A}CafdD*B|VQFRy3Bl!`0%w z=$Oib`myF@g z_$`abvp7b3i=PkHCZFAC_*cVuJh z78Rf5yHQQddmlVw3UcSi=#-1&>>+Q{wrmRxj!xM~-R#Yo$gRN0W>@aSPP3;I-^l%Y zN51hzb|;qy3`ADDsNLy}j`E%RO+GXo+1a)`fqR;Z3qOACKlkF#VsZDs5FYy<_{E0+ zH_*{o8S9?Kx*J&zUDV~#qQ9rV?YTgHdkh%)|H~fNi{7)x(k)~+_^NyS-lv`R_zUa? z?tZO>mtIu2c&qC@-VZEA-s-r=E+5)G+TP<#=X@EnkMN$Z_OYyseeBCV%D#LxF^{Kr z1!CW?_XJNv3yZ1a+=2Hxb~#f+0b1hnVAgb@e@Z;osk^8hd~yS^sc$9tW#2l3 z>>VHf(n7zoan1G<@7muJJGo)1KjRzL(oE>Usm)XUr&6qm8LA5i4aiXaLtUwvm&x_y zl<$U~1zzu?hE@jg_yJ^n=>U7!$K&M|x#*lpv5UT6wqhp^S~Z!}dK*Hmx4qOfFDe~x z>SCsD_^c`uITkx=%%)+NK@*b9c^*w~<@$qGH&hg>? zZJuAYw)$S}s14cHwAQk(w*SpoyLI|obC5oA~&~3i3ky`BvdE*lezpy`t+JUwHK@J2x%=Gv)0XA5l+a-)wLg z-_Vga8OsVgcU&<5P3$>xqLV*s$G;sOA%9S(_&4m=iWTlwcccFXYQuP`l`S46oo0C# z`Bu5Z;7@zuPrHyky3D&8XvYXIKCf%6K4a6ZhV~fYfp(0r=+8$^-c{WDTcL9<{i)-* zVuZ<4>zH#zjG}U(cMFuQdtn3Z9U>zmX7b`_4?2r{ zJ|MWB+C8~DyJO>iWXD-}q;&3XgL6VY;_Dl#dSSor9ctmbhN{{8zM0>;-<{t*LM|L6w)ap>9ckGVnmn-jG828?bxcA<~yQ`81%x0g7vb39wV zll)L@5OoJ{@b5<7S$+VRAU<*VRnz>FxrX_s?7#?rnS2YymJ@f_F?RPcaI4+7klpcF ziStZx&wqR2^C~;vjkud)@~A7%R<*TtXT9wh15X+?16ZeUcjAhFIw4rMqDLr;x(ps{ zoyZt&j>$MrCUlp07|Ex5(vdN?j0<`)kyV*bSb&>C4UuwxBeb)t zSmvqDoSV`f*>T&dvsKWu?V@K3Ob#G?)Pc)*cwD|9-;bOyZuM?_eEkEX9s@UT2RB!@ z`}mTKk56(%<6dwI-0aH77wJFH&e^qb&DdIZo_25({AvV08+gaq_ay%@*Fwpeaqs^Q zTz2I@?87mA^Qhz7Tix#4v&WN*4w*wPJd(PbLwdjbGUF(T9 zthTY=pDP9m+AiI{)%>>eBR}JJm$ZGJKqTzi%J6E3ZnP4c1nBhjN*Bi18O(qv1X$kwrbyvEzbT@G`b&G-D#niLo9O~Ps zk=SkOjWxT_qr>>=%)QOrn_=I};a(E85gX@0o0p(BO~iK6<^vy6_@5eDOpV0mj}!d+ zsJ-3XH!HXVTxiZt38|gM2hmOE*fkOr)2|wdBj9`;4h2<;6aOE}oqbyc}85{oZYtJegR_=BfB*Zp1e;E!2W<<_Nx-qxfc$fiwCv zwZP20@XcIoUg+HTOZo(_b?0UKXU@+H|IBaQd8szy#pZ>dhCV)Q!%s6PbC_x(Q9BL) z$5_U>F`xQCT361s0M?r)L1(bJs=krd7M~41qRWH*HHJy;KAZM2Y`|ypyv9H+KlyC5 zuJRYR*Bo@#R%1In(u!p>j>PWXiXwbBNq1zw`53+%jj0H~|3&$=>`g`B^8AbO>mD}0 zzRuxg_+MWB#GwiEp$SEz2|a9@Fqd{1lc5Q5@9%y7M#TuzG zQDP;v*O-WppIFcP#J^OOQ)42RdLvob<5W{2FXgidNz|Aqx4iociJer9iN}Ej>Cp1W z`S|Un#)S7D+rMaS z(#(6N|78I`x@YYLZDlGhp7mq=IbFQdc|1=72M_WezXI}G_h2D@pe$-O>?V$(*oBd} zm|MX~Z^22NjQt?6;=)G?ww=!PtE3A_-w5}IE&waYh}&~lU4e{Pvg6;dOP6{-dxNut z6(3>jk>#wzF!o{-HahAv?O*nf$DVA;2*h?*oHQSUojvuA1XtU$f`ww$y5HdZ87H4c`yR5W|W98VD zsfF-;U{L-@oq144jlgy6dshDS!FtZUTy^MlRd^oz&3pAlfeXeKy@$9J~wCA?nJHGANcH0j-ZGY8vS70;Pip(n>JmPCgR@Ic zr9p@8S+ebc6O6If-79N3$D{ZJW7IQ^Q-0cen49v)WzW}~?&AGzyx;TtD{FUodKMq! zec7{*@vgqnmHJl`wlTM3p6#zIr_b;Se0MtIc70ED4Z%~gJ;yNn)YUx4g3rawr)gzr z%|0ugI!qR4Vg+`Db>=DS^e%ajzF%G&%%#sp-f3c8UI6Cb;k{)3$HS`m4!*UX*l6?J zcZLU5TS#r|{D-&jkwy8vm@^u;UNtAQ?b?FS%Yj=sYw!}z8tg+ZbYFCme?}*n!&&Fc z{n4%Tg|61fd|DXO9gJnvZT{esiKVqaSxHP5coGIr>Q?}l^T8R`#ONV;wwxV5Ui6DD z$2!Dk#=712+PB)rD&MZgEE+7laPhB&-vMe!NdK*$3x2P_mr;Qaj{XnR|B?HYZl=z_U!I*4YGhxU*cZj`x2$B|E3g?= z5QA0$9bo<)I8R6W9?zPuAH6F5H;-HrB5}vN^ht_A!1Bqu^@^dEQ6h|55aj z^d-gDt~qDt#odK0E1D(wwH_FGVg>#$*2`_%&`x#k9?`Qt=<=6LEsTHF8pcV1C>DBjt<4l#uWW(N1ml?-*4mWv-IlI+|xL<7q|XavZwM)602`9za@uytG{o4 zLl@|4F~9A&L~nHgzYX0<2EO`OHL5)zzWj-56ecr9*&2!e{$_lBYxzi{kEWbU!oD}U zL%et0+@x6R-q9vMJhC^nrXhQbzj4GEf76&T{^l#k_*dkqh+T&1;?3F z&j9Bs!|!^wnj2ij!?( zf1AzzdaB>k{?=R<91VXE{9m;8=Z5^)M^D@PuQ9b;Q|zA_@l5bN&$$R(HOF`BJrncD zJ5~Ov@|d=+<{X{r-dH%BI7@?T&_2ez%>&Ga?X?Y0&x@&keBXq&s@8)^z@asYd{boq z9>KJsXUx4KuTvw3ev5t>@O!B-R1X})pJ&s`zRjLd_x=Cz6r?U$>_0+HpH%F4Ph$5?h0ax5@4k_Wy(ksDo6osy zyU_(2vWvmhVsNz>TrCDyi^0`mf6mB2D33akiZ8RM$=Di^4S*Pk?BV{V5ySn>V}|>6 zPiJNx-IpKJn7@Ce6*>xTyW?-nyUE`)e+Nv5@ zQ}mPAqr?R0JLPjO=eu(B)p>kJJw??BkA>;az$5gs@fmAXS8E@??zWxO9{cncg0<0e z!u_=3_mCy0H9S^3`d>sVQj1HG@3kN6YTf-9X7(eCzo%an2&HYb=cBr*$d}{Nw&cdf zGcKLGpf zLGh^4nzWNiH92DgA>s^nj>QIXIq?q1h<8}y>26|k?gZ|h@~F;fx~Z`<6Z^w9jIVcn z81V1%SWAyNd6trWMbAbvZu^_z!6E#}^mcn3fgOqsai6(klRV)5K9-m0k3_tF!PhkAG@qQKCgl0~ zoNsu9>l6<<34Gi2rMY!-$A1p4lsmYxcbLCv-!Omk{$YOIGq~~=xDx4a<4UqOb_AG3 zK8@w}wqdrtrfw3l3$^OAsOb=1lNhVp<%#7aA#*x$i19RNT)wrcaaT_4cJ|^O^7XLy z8hAN@tZ{Npeyr!C9>3=1{w>(=4P7`r;#U7bXoF+{(ZM;`U7qEvsvlnxsF}zp^TYc^MjsVBHMLlnL3I^5n zGxcTK6hFgWXMiuw?3HjuI>DgKe&&pq4BprCNj%q{>bc~xddX&EsbK?sh(H7F+>LJ4 z?|#-+<;54Gb@R<$>~DDmUI9Jb@=EUsKKyt~`1>PxTszHoYLz@Q#HRU$(0mVc>Fd#X z*EeC)ov%Zqp5iRZJ2{K8&693w;le);Y=Unb@+3v~Y=fVZb26tT&KJhK7F*|eR)n=* zkZ6s%r91JS(7CJ^Jq5+IQC#*BFx7AaSHguYQYsfP(4V|z%I$=+ALhJo`>~cY`C7bwdW2k{P(84m_$ymPI~0Fe-R`up0U7M8(;v@${cM z`j@rUz1JD~I`VpC<8PJMR@}Chztf7}CBN>mP0MTF`HueXR-8!;qVBJI!Bb$*d6b!R z7JtX{ifh@=i}8x(@QMTY+=X}I6*j)vGQ9Y)VBpp~YgL#v8ulE1cwkaGr)#~LqQ;>Iz*OMB(4(MYcqI|N+&9-xNSFFg}l7{d}|*cRl8 zcc1f2aNE9}wwr0Y4V&=W_j(KBWqzIgr98pktqO!{@p|hSa#N@tJ>s==WZyo>x4-c0 z)cxC$)1@agT$g9ZH8RKFclu@v-&EWatetLPCaoAdCNPm&?D>VmlRZP(o78C8&w+{W z+H&nN;HI-ox?<`7_cG~!1Ln0)qJ2i5W2}-J_7Appc8A_GwvGPn4^#}Mis9Sx4WBu@}G8 zH_{W}728!`I|JSjV11+$H>^mAHI^sD_AqCyyYS$4&i@%{=l@0%zUM7SPVpJ|e24Qj zUa)3QkUoDyna9Xq`X(m@8MHUL|C`pTMV9rNXy<*bS3_$;EP^gqzuHrycv02QQQaJU zukU2Dug6Az{a>lGc|W-T_au;O#JQQGG1jEN7`n5jtfsLQKVY1`@ts$Zk&y-JXZXR4Z!0kDI`n)xo-mVpl}M*drjJQhX{(7yegwbAb^aJO!CV$1`L!**Pm zHI8};*oQoidx$eAtML#M`=9sc#scsz+W(9CRDbH1KG8#b!N1U_d6&Kxvc9?aTHvLU z*-akRLi(*=ZTEXW{p$A+^;?w~OQ2uuTC{Ur@ONs5v5QBB8M|V7)rMQsGhCG)YhcW> z@#(kDCo85s-5W}KnJcYOqM_A+9oc>Po7xuge`Np3^8e>Oxv@OvfbK;6@UUP#b6cSG zWuLG$#1=YzxjM!Y=>KfNPqq~*q)mg5vZe6-H1ILJA~zN(&y9&z3x*_%gn^?7a5Qyj ze&{g#KrsH7fks!Seu;E4U(|Ci^d>V9@<4BGoyAxEi@#sMhYq+p%j1mW3TGVRL-siE zr7Q^eTkdk?kGrxa_-U*`kR%tPj*{x z`1Ka*v5bLEMWIvT%VF#X_Bz^nQQ;l%M`SWr#}Qv#1AmM61q@o-&zvW}Ml_q}yLf)o zk=c&2&XW1=x{mX3o#%&mF1tJPHnRLpzsU*xfW7NQT;(Co;uh}9b|0Oa=s!9!(SK}8 zqCdPQp`b1aJwGK7d!>pq7MOR@B5b?NPd1H!ayqC%Zr8xF?W0xH5A~vdhM!NE@S6dW zlTwSr3ys{deG@fmBx@D&w`9p&_F@Y9>Cgq936Xi=?tJVBXRX*3^c4nP>fb<-O1rH}+R|^~rtq?UUXIQueNFOknE&Hg%eo45kokGgt%PdpBIB;5-;0gA z(HZxT=u5wci4HJs@+@MFjI|NEQdf~r`z6>*IiHMvmYLXw;la8!pH?ByZQsNkk~ojB z5gO5SHW1r{PXj+@Q1SbkmvHAcXikK=&~9H3dhz$@Pk(14Q&5xGZhs}TteiD3@fy4u z&_K?474-C3=ye>e{Y%~FRSTRt0jrr?-HOCmxGJZn{@ENmPY}G2FI;09(1gwoHH`ldO|I%&tc#}=YjgJ z!d}bYUFidoPvh+thUQtLI@pUQ|0!78c-KboF{!u=ecP;SX{LeK@QjXf^4*_)F@5UB z*hMErpQfb>2YMIpndahv-DVDdO9qxbi}-?Q7QA*1aRS0+$-ufV8CWz^v{ZD}{XN;2 z)WmUs*QK>@!&OOzZLc-PjpQt)=jWf?YqgmWCOx?+>fK&`9hi-!Hrt|C*6q9^O$zKe|`=cuuH@wshZ??MikGE_0sw5)AEf zd21ni_aN(*2`(^5(yQc0EV zb>D+7gS}`%3*V-MINK$OxDxhi)TlrRU3GhL*%)dAoX=eiv!6G50m0fi_U(?OUK6n4R$A6o!Cze#$6Hw&Z!eFTpUy(utGaRJ(8!X+ z*teOZXsMT)n?sn7`M&gWe0<*OC!p2hyw3E%3mx^Wc`4WuZ+fmadV+c%p0qJHQpaU_|0imT_lS?Djd^@Lb~JQ`baV!6 z3S&aV8IAq#zpQ;~(FXJPZtzm?g-07Z!S-TL8uTPBTFBo~>?mWfH&4NbFv4q%lb-c; zZ3gjv9N7$HFAz-JD0~0pYl5TkEk{;3x|8t0dnfz@Th7w+_T*{UFr(0ES7z&RiPhJ@ zNtWb-w5Vs8JyvSx{l7leH@g_?M?bJu*}j6ygBEaBH$BPhe<5*};vdopa~xhHI%(sY zd;=NPFZQtdPR@J2_O_o?lNZ`^%$^}GT_0}fde&tf>H24Y&qm2V(z2ePiz?&ehPGG;E&HW@&z67 zCh|Y9BlQdBAHU9J?i!q55bT`53{Be;T}(PPy3oCvZiNCoi**17upm+AOD(b`gPXwF!8rzB&U2uIK9f9>qXXZ zr{?Ow>BZV~VN&Zm*lq73YqvIT?F>w^c2oahO%NPPFUV%S_{pZW6nG|XYFUCgP`nX~Y=vFQ9* z-Elsu{GG%;#Ev|&BiR}Ax^H_XJd5m%%*dJ0Ll^_{>q*9d%)DeoAf$7sB{NTAEwr{@ zYB%nQ-FTumCcAL!Ro2Oe$_*_UrF}PbtbyG(|H|2qyAu799kkv}JkvQb_L(w?)Ly6l z*u=cp@t!$G{<8UvUB^oCf{M!*9Ez9ve~aIPc8qTrn{C}LXh4fKVS&z;CI@5YV0<7v zFLZ3T;$=D;23oz{sk<=lBylIM?kT?RTVP4Psq~d)waYjEE!pb(9=^RB@$I#FQpR|G z;O?8v<2=o*4SVA18Comp84+hsG>6E1_O0%VVYOjaqF?@zw0h*sDd_1L$mz^=5%Cqv zh?mY!vc}CDXH_mDc1pGZ#XFe&Mb=Y%P3*9#1)+0!C)Q0tU(SGM3TL4gVXo%f2ITYj zywQJwhAOwCj(srsJe{83<6#O!^+Nw|=X@^?RM^H118%AB5T{`jNxKyd)9eAhqbN41`%HE zsp+gg$&Y39sUrK@b{4%Uucv`&y<3QU)5-jLxBZ_V)A z-|#N)2wv6xZ8{%=_JxnF*_YVg7F}Y#ZQXE*9Rm}&gy*z%7PwkWEedaz8JD~7$DhC^ z)K6z75d+6FbX~j7wtFT9_aqnVT#0+m{hj$@&p;-wyJndUcg!JvFSa{tldiQ{$=Xz4 zA7P!{Gckl?nz!a4z1N+4!$JIJ9}owU?dYLJ_SGHd?-*x2<1}Yu@XkW%FCW004hCYs zjeo{>dbR*Lzx`|s-gnQ&_$TI2Us2X>U$0}`!Yj*au2l_kN4GV5;I;RlG0$H6`1m2M zy?9gWhJM5qS?me)0lmI8`y1T1LYc$>%5FSp(3vXHEZI;K(DmvbV(oz4dcMO(gnl?O zc*&*6?GNS0j(zcg|g?`sSh_PH6{H|J(>KVBD- zoxf#uSq-vr>gVXotQxn>hiWr_0bCgTWsN)FBztIJh&?p%XzU?2 zvv#=n`8T!aiL$F2e#RP)>kJo9!2<;sf-%!JZ5e#0E#W)-FqAaF6H3nHOml3D8c!^Q!QL153s}sJq8!^l+%OGMNZFadH-%|&Q9pO zj*XAU;T~(|;MW1`-zNskI<4dFT1WK}cmB3$mstnaN$VgO{ld6B@bNHsas(a}Wev`s z>vH}~48`fSpR>VUH3QT8mz}Lr{CVf`zt+Y0iOoG=txXFSDmFI`4kr9pjGyrwW;{oj zM|)j;;W%{Eu62Hqc@T@Qe2P=dBOV9EZ|}e#j^1l(vJN?F6{J$1V^r@{!*A~Ze#BST zA@h~9$8RC8$R>rYf_iMjjZI6oN!hUE51UWi@L}wV^6k0r$e&6(6Lnp$HDu2^+XFW) z;`|rvrnYQ4AXty=z*)Dk!j_JC<@(mpL-t$rumxM9eNS{v_X6C@Gq7#HCt08O_9evD z^;Erx+}QDS^35lCYTC*Z9#q`#@zaU^W66{KO^mDg;FKE4zLHmOsK?hD=f~7os2?$IEk1R8 zIW>#0aV28oB8Ob0h3H zmS5oCIGp`2er%%D5GKZDab9f7P|L)M>9_9b`Fobn#15xa=KG%juBME%+Wp^pKFM?0 zy@EmcTr}_YZ-KuC^omCC|8N?9HugbrRrYz(*h_7hns@mKBSWzv<#nat-WDogi>R(N+ zsoy`XCbIgL2kYNRu8G{&^T7`EOuE2^-i|!l8{3K%O8AU@LslQ3Wc!-S?s5B5K0#8{ z!{37f{lCx-)36x*mzZML7PAf-CtFM**CZ#VSnJ(*4LWdKZ1tVTFR&L^y1p>kixb&v z*IrzPKd7viwX+<%rq=s=?zi}R9<}|n?cY9*fA-UtZ95;|#LQk|kI!&?aXWb7H1Y6#`LR)ca)wSM#10qD^&d{L#vfih*B_$pQtMuu zk4|Tgir01P;2SbB@ikt>gOIzNQLWsQBbyUq0b&Aji3y-C>Vcxc{}gN>m*Ev~i}xnf zfpdzBYTTULUMtDGx6wnKz#}_03kR>k#{(Wq{&wefg!kPsSlBbW>f<@SmHr_aaSG#Y z&g|CFhY2rg%1(&A%ethJr+fsRT;nbSpR-C6h~u$+smp-jmetE^^emkG(;W-RVagpl z0sSeX`T;#Fcb*~lnP<=UGtcgddzM8kW&*S>_u6lmXSefA?d_pf%3kEIqS?L4^~Hdx_i%)YVJvQkSuApXWtV|5R9jBU;CZHH4*!9 zXaCRAU!SYe9ON@7y^h>T=-We1y_v4~cz}7Rrq;#ix{rPEu@4!n6Edt>pLcW?LcHIJ z{)%6+R&Au_t8l9fUv)XLPNFw^xDS55CjW}^3>z7bos%RvT`_mI>~rE3V&-{gE%wOu zwmq`atw*v2n)U%T(B<19z944i$G009hhm|cfF;3%>?obbb?J*;%P$w3Zv$gqj(=@3 z{JN=Y@ZIj07_}B35REwSzRGq8JrH0AK!K@?s3X)UnHsEVh4R+$d zTgYt;Z@_;J?eK8U<5!I*F?*Mp+##OCh2O)_M9IDj@aHXLFXrBNuBsea(S?m$Si7#^ z;bQBOLMrEef7W;vRiN+5!(weZj{G6#p;I@A~?GNXk><9KduMWPXc|w1~ z-mK~@YvE+7CQeI=={ zwDWx_KeaB6zWxvUQG78urWeE%?}1Lt1Xtad;w)%Y1@RN+UfC5U&R8^}g4oyV!87F| zUB@*(wz$0w;*L#hG4X#FYh$d_hVp~{fQ~f-9cvfum|Vzv7s z-*uMtmqB->8wG&Bu53*|b)NtA**H78q3`74f`?(~-EEF+C>_S-A)1@?Yh4vrsB1;C z9m~+wI2JnnbTx)~&NIa@ysmN3ug*Hm=PZ&NIE!Q|XOv17jMuqkV_8CMn0-G^?-m}&KXri)dq6s@pE1VAn8uA~e2Wuf`tQ`h)^FvfAfp?dt1I3kJ8eAw zfxlr#?AC$5A)k_OeT9)hGvT8U_P)M*o~hmPjAT%sE5jb}d6XOFi(1gle!L@{QT8D7 zJ#v-o_hpA=@3&jaJoq3V+7WL9{q*mD zuUb-$POp9FC;s0(xVGZcs@9@QZQXQ(bB)+n+O6EQ`^sPwxS)58jhA;8C1Vdc-Q&T= z#n^13m--v8;d+8A<7wRMJuic?*A09Z`8V*q3p>um=11L)orcdB=KCcp7ZOueKgCmn z{#ThbbzpEIx`ho(8P$VF6GP1SUVv_H&YTkpjVuUly~?JW@{h?bsrWt7O_PrXJvDwc z?#pJV{4>$bP0&s9m+oysUlZMY$Iwk;!&$4N&`-C9o$8_JY#Y(f7tn_ePbsUZdW5s3 z!4)%R;wf%C)iz<&spQucmm(cl`fv5GkWt9(SBxR@Y%F7xRU>%410T{8*m+ZkpSc=X z9R-|b5Tm48Pipf~M|aM$cGpT*o4wdtb+4)Spc)TJ)j@tY8NAZp-Kt;V@5Xjn)K^V0 z64OpAS6|o@M7Q`*`E`*M2@i6P)v06XA;wPw4_F=Nr+E{67XM5`hmQ74j75tU_$&Hb z(Ex&d)Rc@bv0w ztB4I>k^5j%c5bZY9&B#d#*W}GJ2p2j=Fag%MlL=Jt+VJDIz(||?C5-arbV7u1?xIy zKw5?N^at!|CAQ?~;=~yCwgZy0Rnw=I?7s}~uE#t=Vmqbo7)`eVrx>S#;(5!g7k7xhgvZQV^R7uZ_qN;*3rEpe8k2cd$fCSPbVMH zYoGqTDgtb1OxoKP;R$W0vOX=q(;i|+1EQVVQ-iW!>z-^LmVD0GJhYZ>tflNdEwbkT z3(DnMpzpAA$ac66`t){^wX*@ZXaqj$i@dQG=+_kXWQFptWNU$D{qhDX`+ie8@Hc~x z^?~2A=Jl+x?6HC)*B;walxOm_Msd!9e!IM^g*o`PTYlMYd;=`}zg!1%Wq!U(OKW`8 z?>8~g#0RDfwQ3GygBr#C6l`yrcMG&jwivUwTqV!i_9DrGz&P)mqV9|AkH$wC>1}A| z@&Q(8MW)Bdpq*`+5$u_*JrnUI25MR}ID^s~=-RGH9$p8#CVqAs7wMP&{+Mm83Zz@F z9hsPGV*6U7y@SQHd9-cngEP@RlxL@YioKTU=T5KnATm02FNovE&Le$9II36#T{W*V zbdG3tzJGc*a?xfH2akRz-^z7sdj=OUp5gz$>wPznkF(732LsRA z{AT?>JTdK&YbV%nCMWj$YNxj58TNb@J~ZIN9g{f^gT97+=80{j23ca?L_;fNJ5Bnu zZCpbU@#4z)p$}7=hc)m>2ICvIt%jm}=^L0s`$u!Icl=av#=D959EPU%dLsc}{Q7ij zTmmIK|WP2No8ZP`U0A|5Xhd1Va|r+q$ak zmy)R^Kb5lvWynqmx7mIk`GK|`ZmY`Pm`psxg}%j$$)wH51P#RXH8Yk*@OPJGoqGCY zTR|hTOan5_3ShdC+`Z=ciLuAX2Wfhhm?z|6H`ej-0fCy9Dq?Mb5!I5o{eMy`=v?vy zji*U|Q0~{yM<&1@*YGNR5ce_gKfa#aY{s~@;~2Xii5nw1r%#N`302^0k^LZEK90(l zA2(jtzR+|iFQ&15i}6~F_c%F0fBZ+=&eqL#{C?{j=4$)$H{-i6!iT?=>m05xbLIW7 z?91Prf1xjbE57`f@#VjYFaHhXvA3Xi%^iLDbN=@A*2%?bBVW6*!{GKX>MbU+kHY8m zva!u0eifPK2=kv;X4l`r=5;{1^KNc^6c}5BPOUst;imppE~@gt^qu~8ztR1%-K+_B z*5rf^^`pKmJZ7aQQ1b)Mn6JEBevn?pIl9-IGo#meOupHj{y^v+`1g!c39(tHl4_26 zAJ{SDaN2{Sfpsc<9rrE2y_|)29hB<@g`!O%4=oJw^M^aDLWHf7nJH zoF1l5&x}9Mm3?G_;%`K6W_&o;fA{ss^7JwP!~Xsmf9~(6{R8ps_n`eNX@3^&YfLk? zC5Zo>f9I9lSdu%2R}x}{DbV=dr8ULW4=8c!<z9jN#y`&aJd`|lk|ot%-> z$r(wV94Fs@5c;Qgplt^l)6ov3F}OTUcAy4oU%PgoS@b=tmo@$*__e(!au@rFTrlAz z`|=3$*0uNDi~UQ9O}Uvov8x}w0v|~4XqY&0;KuHt+*V}CnEVSHWe)-0bLlG=+d@P#7GpSppCEEwzCT;_CMA;)i>cTYWJBbE zNx`;W$N{@L=EQ5>ZlCqgNb%`)^r_!N=u`Rp%HM@wRpye z9h$BE)*g#Dy1(1-BLD;BeFt`E9Br~M=csW0P;RSh(qdEnAS8~!@l4&!U2 z9p(FDQ@-OrKK(oRUwc(QdN*=Zwgb~e!1Q8Zx)_+|p0OSF6ioLpF->2^cBr;zCR-C` zigpOM8S^XP_I=QfXP@5o$)ton#S5@0iLR7!eTipRr$1BM`F6Ww=ag74kQ2Ra6h)r0dlK!5W4;Wu9gE<;1LFOli$i}*wE zP4qZS-H{ItwN;f<|3|v+dA6l>^6?XwQ=Mk zZNz_f1UVzW%nB-ocQSIbp`qw>&Ld7(RRNRFZeMs1@LnG5Lfo{ zc!VqOeq|Zs<1S>3L%>7?8KW7Ph$3U0xKPIU7I`vmjNoqSqH)en%^k!DrVt~TK@N)W z5&Q0TAF_doSpf(8f)j3@ir(?SkIg&yuk?=a^lQ;GXjxY|BkzHSven66p9zoY%Gb2p zd1vs`)bId5MAxL#dn`}I5G#4V_>gS%c79Jr_0RtDc~t}Pd>i4H=B#J&ubp;0p!;_d z&)*>)Q1;<{!~6G6QFgBWz!C%4S>WKYTTX$pU7JW1JS=zd94mE_o zZH0Q}dqRC?Cxny(@(40e9}HFtkI5W1TfrUShLHA|@}e2SXF841(`0S1+0 zUkdFrxcX>nP`DL*;ODhB-?GKLBRc6m6CUs3-J8HA?TKvb2%Y0*gGVR9?UqfSR-FV- zuVg)EflrE2a=$%}e0>62hvw$~);QhYH~B6cA2h*?FNbS=1+w@Gbargcj=lSUd%oh1 z$L!cY;e%|&1}|8j;#kSgrvKjK53c~v$VYP5S?lPo+bq`a1a+H7@tyhYxiYAnz?H1Q zEVBkZO`T2mJ=KWb%^JAxDvoODi-@Pwn#o)@XF0U&P>F)5*{*YD1!7CtTcdMk zS+N(M{^Xg9T_QU`0zKialJ$Cz-9ju|;QzJg3vEA9%+BpllX>`A)8~vxw zdi{NJIn(k=Z%n!YwQUP}A`ACS9x%aPmkj36GwS-bJlK$5ygA4J2Wru@US(C@xgoEn zJLlJ|p$6_c=9Eq@hwk6S*;>S`6nnTQxzny?WXEDoT0#sh>sm_QrLn~!>q*AeIyaP) z2LQj(8Vjbh?(SUN@o4O)&gS_~UnyHdU`KjWiqY5a0yo|VH@Y*QA*_dFbN5{<*JJc9 zy)Ru+SK6yQQI-*$`C%Y*3%_4mPi(2DUo;E+E#*wnM>$jUi=!D<3jFyE+Hm(a$%?Qd^J~%i}_XxcHHr~ zbI^RBL|Z#^4xjVF`?%%ug8SJ;!Zh7|vo&C#8o zaOOp7DNo7D4H0iyISRS3O);I!Nwq)AfSqRgY$Z=fzE)onc|xA<(IM29_K}zScyHf+ z-z(JIcJ{`_oull{dd4^sdrb>_Gxe3cP>ZuK?e*H&mtSgMkj;;>FR}xvubd~ScX6Y1 zrR3^Uz`ZNA5N1+M|0O(Wd*zi8|RCRrDE&)l)zjQr~UzKP$)_x}oU ziR5YJAWNxUy!;6Dz?f`aH@r<;u9Xh$};A%^DCG|Iey6GR2>t6(25{+37Z7Q*n4Bw@WV2z&L z0d1N@yh%IN3MH)3H)##GULnmyy?sK zkEK!X#F)%dV!wY*GCw2k;5SdTD#AHBTN zBLCv+=vVd`8mZMQSYLa7-K&?G-)b|hx{TkzY;0Pg70g0+nS`7@jdK>m(><}s{fYh~ z_yJ~&M;C!l&GHa846l*iAss|#Ih;TinoZ5Mlcwfcui{M3csoGe$PY~3NH25l+3dfq zuAP1JTJd$GQyLoR$uc~suCG-P1W(<2&$z!0pY0h{PK03UB(W*8Q><~@72EX-Vt$F& z+`yR7e=ZVxMh%!|=pgca;JmNUrGw*CNA(%j-mRmW&)P0y&oVg2O0-J4g=m%Nqw1zg z<{kkosrGh#AM`cn+}=&kQQys>Rj%K(8?@?v+8&1gF9}*T`IkANB!^bHv?d8!bvN&r z8fy-%QeQbv{hxhd=oDiwb@ECCKkm0r;_H~Nv5QWTS0Y``*6XN&!1{%eoo#)tM;H2B zV)gHuSQl(EQFyew?mBnoII@t=po!d{Z+tgl&c+sQ|C75X?AdVlcUh*{KkS>X3)aa! zgYjAYX05b8_|Ge+Q5!ir7hBInY&}!*{VpBv!5GL-ouE3Q(mS%?H7BGaJM#Z9>RWwT z8_MN$?fQ~MOs)&~k0-uO3CNVmyn82fdA0$;H@hmT&Eyu9hQEKKiTm~1vYh*wWf!1V;fly10Nxqr^^Rb&pd~Sx4hQr{hHj^bME^! z39)+C!o2s}PVeo>jXmSOwfJ|Hk#$o*P@t*si?J3iaHc&>nX@owaoRPVu=r@qVZG zHNGNed>cmin>LT|H*X!`*F7`7v(oRK_~VQV{7&ukQFwWSyFTEh=n{HgWpUY+hDXR2 z(>WGpT_*bFS;p(+2j6=D`5@053lD;q02f8TgVEX9zxZ0S&o8E);@MnNli#Jc#(wJc zj8@#r`h`}(`@U}bpYGLt|2As2yp&~q_($T74h^%GF2P1?Y?$OzoIng|3`oen2fz{EaL1%Qlb+pq9AVBT>`qKbk8jVxZd8EX z$hH%i^Q^EF{a_0ABJ5Z9&EYCLk+C^(pBUCt#7>+hcEX2^jB{4*J%+FE476i&?^VB& zUFe+z;#84Cl@k;-d`mR4CwxyjQEzmjKIrsz?1c7BHGbn^!9Aa;Gfdpl^;(>?`d%1& z_m}8@K`u1=>ei1i@t4SY^~|Y54zz4#?ES*H`KZ?B-K(ut=-U%yBfk>b@PXGFe*!*p zCD*#S`F`+Vg6QM~&7JF`-K>e((By zZ;eNPi$CXK3o)<)?eCapXxo)FhP4gI2YdtW#d1ekhPS%9_AFwEhpvPEPeMLGpEd16 zhtNKA zZ&|l#_&^jd7=T{OpAyC%H4^yUl4OndK9cW8udI!n_WCoC%Z6YFo>Gb|CD}tVHMp^y zde1As-6z1?2IyWRc-w?M!>w0$1iXs^yGKvw*|IzIA%g5P6CdAR#v_~@?TkbFAm6se zxMV~ibR^@vPx!0&bA1cJd+bwt$j6af%Y4Vz(HHnTVI(=*W9UbR4dEOX z&QoKK)P_lmuFtj#(x?sN>z%gW2Vc*)#af!BoSk{zSl>r4%zyhGbU;4AOxB?*zsql& z=K~&7T@t&-g<|*Sp}(1U%X#EPpu_D#$D^iCK^U1p{ut$#)#Ha*?@QXhuvfzVz_LK- z;E#=La3DU8FjH}a15$%~(DUPEgMuR+;t0{vhXtqj&Q!gvyz-$vg5}@%FNz~vjlTps z(RDp6#RJ>5``h6IzVXVvXHCvi{NDS3x5ug9D%hkB`_43U_&f1u9L1kO4q|Z`ek#Fg znB0cL=n5`Oe)DZ3vOady1q9yfGYDq{SU{s{EB1KJNP|%<-g_>5{0wUmvH;PzHwJ#tRw5iI)YFliX zTQY%w+(bAk=Kov!%ti zw_jdv}d{iQi(CTG5Hr00xNd*FAa)WmSexDOOQfE{>VgXm;Sus^L*G5Skwdul(< z&9RZSWQbi3esm!`L&2Mvu;^G2(WS(9C4XiA<*%F#@>lKwuz74_geR%^igU!6sQxvH zp%UCrY89&@bs^>ZcbUJ`;}M;62hU>jdRu*$z<2T0+jtf`L+)xTK85<1yH`ql3VKBd zoDO3DDkk=0CNZWZD#rA}Vn0^D-xB-rvebzhMxCgVNZiME;ymEnpYG%@{PWXV{$5Dj z$M!bjK6c_`spTyAfU{sPwt$b%j{A7?11s+1ee!vTb2=;TL&w+F4;;7SKE$u7KEu<+ zuNfQvVgDxaAKPeqA#$YsuF#xE^fdUjo7`s~_4)+gL~pzL)>Bmy)8V7;-qbW=|5iDP z{Ug?m??>ZTe~B|SiQh$rO49XOWuxF({0(+Yh{T78tSNY6$Affy|LdxQ#B)?5H%fk- z#I@cOedQv8f~P`bSHBDE0fC^z6I-rMZ6dCAJ#Iu;2X^pYa=; zjo{aeOx@dveO1Za3v-wUGJZvl;&+NSbN5aN++2yT1j5J*O~elj?!^)7m2ic}Nba9w zv>%$Q^rYC_X_X6DXypRN;bRP)BJLS|O2uivv9M;-Csuu%N4t$N!V^8F*f8JXJZ|Wa zSh?zfey5-BkW}gDq~z|UlDjwai>BepqW}L6nXs>Bd?2>0t=z-I+Qp{zJa!kUH!Ae? zvjyb65_glIXysBguMb$t`s}qy-6Hnt*a33a()H_)OAcFqy?ylo>VmuzpRxIRc+Dd6 zi`?AL`5>`tBFp>OlT7wP@_mwek1>=_8dzQrEG3p~9JH$P{jh0C{++u}DfQc=7OB9^0lWeNFK4>STfLL9eP59e#@ND_RBajdD|#)WugN-% zehJyK_8ILh{+-$HYo%9MF$1EH##djl=mPaBWID-tTmkGYdwpW{uhes5_0#Haa`kfl zuI8*1zBLxReFk@D3xBHzCW7B`2iRZ4c0F1*10`{;I^ePz{=bH^Smr&%#s}{A>kFNS z%QCQgCpI?VUp!DU#??dVmXdNKS!aTqxh75#=4H;$H~mqjNQOz(kE`$oDSN^Nk4KM!#EEf zxY%9uYwmdb2X{QCJ1;F+&6!^6NNDsR2cP)9$CcJz8+qbZk85u`WcVkzAFw0!p9bU@ zjo-;N4)?Tj9u)m!Pmx^U!;|)_1H3k%Hg^nX_+Jfs4+Wmw3!)v%dT;^ZS{I3S)-JBWTQb)H&ozEv6%%8YpKX4A> ze?L&|F&a1K7>9d&`}t4#_VZWwxQZX-Jo8uW(pHUeEu*fF><9DS)y>&Q&D+hHa!O<| z=t%rObI9vCm4N@pp*QAmm&U1fU2ErD%>RE=&;2It82n1v;UqrNhwW*b+&TA2qIW8G zsu}-#LfP2Q0Y^0tdu+y2yhV7A*wZqznVZ}VJ3`wum-vN|{58RuXSl=tpWNX-+Id+? z=2coA_KjV09_j6E!oK0TQp+0|;-2F~?O4GeEzdQ>ZTt_v|GR>Fhn+o?4*CUsdj@KG zcPyk`XYw`%XnC1VcTL(=i}y^r_vPcGwX_ls-wjK{=KM5y8~wGsNyWr6vZn$YllOJL zvti>(bk~e_>Ww`w*YjNMF9kN2*3SE*+f~z78!@LIKT4W*%+puPo8xfT+%fZsJ?6W{ z@lpr)-Us}c?l!(~xXsJ@Xq$eR=H^`KRBgvsO>q+EjVv~l`47dPUh3%7xSI6_p;z(0 zX0R_k+q=#A51y`yt)u-XXixM-Ro}ex4~^-UPc~-s`jK(hpgTE7(<3!VBIiL?hE;>4 zFhk{J6dmOp?Mi+b=Y*VXg{gNKVq1|~k0M*vBd-e2we55(?!(r&(qa1d!wbUrhv7>_ z)I6C^&663b=1HXPGBI`P{2``JVz4FFPH0tP?NqJNtfyTEYIDp&bkc)rEU|A|XUQQY z=O$DiX8a)Mgw!~Zoc((2-eGKF4ag4%@cn(p-Ja5~%v<`E^DmUu#Z_19fH$;VqgQgV zRoz>1u~i%)x!5X>kni(>vE*p0+5+1RSKa8bW?TCAClPpC^)BUJBk}ieZ!G_74`N#b zCi#DNm{YgL*GwkY$L9Y5)7)__^?| zSUQ5ox1u2%*NH*xyqj7(w@_;bJR0by#-ZTvYW_A=>1LLb{`o64i1kp8nIZ8PoF9Mv zz`FZx8*zaSblmuEWh(d3(kbGqee=)8wVwYMaZM9kTLG@^1J{E8Z*lF8|3|py`377Y zavoe;x*`VGR)A~!z=fdO{8x|v4A*W}{JK;1O_9G7B7et6{$3yXYvbk^KD)qMS5|^o z&d~32-_$eQHw8Z*=;6$?e`|7Fs?N|;$PyB#G8MijI+4%Wwfdi|lbS8rN02Y%tV@Bm zj=-Z*BJ?#2S!5QrmZR9BMRrbs&Te7t@_7jM^i*g~$+*1hzd+iObIzWl@N0Wr9r-@` zvz)`xpGEhV&-Qs|zjutg+K&}$BRe5G9;3EfP<*@S0y)TzH$T}TH@4y%$cVh63~(-Pu5=%vm!a>w1oULjUZqd3m`ir!@ zTd+y(Hnb6P_RWSjrXd%UA{RJ9oNw*YYKLB&Ry*v6oYm7k#?ZTRl+HG1vhd;_-nqs6 z%}V#qF5#YoV6LkG|Bcigk^1?i7jq6HZw%#(eD$wS?HRV%%7OCmo#Yve;l9^6a$K+P?34kTs|$5l2ebYo<^8D5N&M}d#E`N#M}DMbr+irKdgVvj$T8SMR&qz7_=1Vy z+9S9m@gI6ScmJU1Bh)*v;U7EZ->7wI^?#Ms{|~i1;M=?a zfCXnu+CPc4=*Tnny89jOc^@Boa?gH8*OGE#9Otw{p8AVE8+|D+4IHuMsn3C1IdNCE zJoOPcwO?e-r?tF~+I2ym>QZ|@^3?s8B2WF3yM`{)j_K67q5qn>1D5RBeB+D9WsHJu zYK(cGKl$XIQb(5(e^+dY$c>Yxo~d$BFY#I83!-%Zv2_SsSfx%=lOHR4DtB9NzWb>?b0h2Xvt}8$3+t1<3;2B2`oy;p z(Gl!@b1aHkU;C)_q1(y&ZmV9r=hTbOt9@II&0UR?5?LRgW#8%wtbLo(&8m-Zp?inT zrStwC+#`y;cQ#|*$~x}3wLkr*_OutYPT@?HE3cywdMLKh%^S1`d4$ zK7anwOULg|dhdAlgii%O8Z++&zuJ+D+VJF_WiP&{a#73gVSO<$@ZW9iy_^HGZaD`Y zp>B8cIRMR4v}nZ8_n~!YsGvlRS#$prPwlz&s+TN$y-STXZ|~v7>;rlipL5`?fw{W5 zl{!Egb#g@)e6}3lFSMEqeEf5X2jROrs6Q-gxWB`bd$K3IeEj}~_l`gP;vuyLeFptr z?4CDlk?e0;NqMm~e|7euOR?ulmy^9*JslqQclZ`OYy!_8QDc^aW!EWkS&s3$AO0Zz z{h@NMMZO>H=&Ifq-X-VJRtG+dt(MQC9GcU&=J%M7y>{xBv1c+eruJ9_U3S9%Ablm% zm({OTSHON2eq=xEQ`x(?)0+#3ts4zoNyy1NvBqH@8>L%!E#a5BN5{Xh#`13jM|n)~ zZM>Cl`8M#AP|oh#*D1xHutAHdiRxB&V-NLCVw_B^Y>(b_E`U3UC} zU0?9+U;StG1=U(({5>-FZPc+=b5%HpeS*)Em}}Z3?KKDTY+E$#gKtE`G1`apH2$<( z#h*ssnea)~H+U*AEV$XisDxGQbMejzyP2S>MovpvCCcSb>v z0zOYpqyA&s*fa9Efp+Ti8y5az|IQl<{)*p9a8%?S`MZ09wkbn%pOHC_dw?32#LL@q zPn68HL2OINyBov~a|g0R{oJCu4-a=kQ)?SL#1y6c-<7?+w!@_T|h5`S@HK;kQy3D&88eMvhIZgc*bBg~j z&Z#ZDJ{L~wANF+#PZ=e(Cb)aAt#=iDY3Hsj?$0ImO7y{|9P<^2w&{p7*PO-QFN0mJ z_=l|9UG?Z$;eofiB)4K}(S`XYCZhM8Gk%A@g&w5V#F2_P*9UgJ3H&&NyJ;hP@|*Zd z#3v>5kyzB|nzgO!PSDq3=J_e}thZ3}x-bD}pjCwfzJqPG>t^U8(A@#G>) zc#tX5sRLKdHd~Bg%D<7nEWBbkch2~&$DRG#I_^Q4T z+nhG~BdL!b61(6D@#%@3&a&V3{RO%Yv16jEtJ)_j$9A-LThocEF!pxpIjNYwMEohj zgNxDCiCY^XvDU(03ajvS@SI6Zmef7b(M^buG%*ip` z*s_RG`zU%$mHSIv*mH~-TWdwev}^H+>?LDf%b4=4>bo$WeTQ$kt=6iOkK)|Y$soaoeFl;oJXz)$whI6yHxmhF;WF8-6`BbUigkuP06_UAJuMVk2GM#ge7_ z=^{%fm1Occ30bL{AHo_7wd=Q zDIG1;lD)x&PGuhoLVsW8Uhd7u9xQoDrTET+_+f(;m%9WmLEf=t?{^umS@x#yzOP-F z?A=z~@H}{{*yG*MU|aU%36bBQe-Jx{&<%7cIry2_!u^sb&m1#=fgRg5{+^Rn+b)47 zxFc7-D{yL7olIgXw^0*3I!3F}*Ak;eonY*|y}keb`b1SZFMRsr$+wA3RQ`JCxR$k~qI=!9Gf~-UT-5xuV}jo1x54nC{09a@c4#F?r25%Rj*A+Yr&yq6(dQ|>%eiz+N^t?Lynh3s& z{VfC8RCvs}?cI^#u_u_=8h(zw>yOyGl<$-8PGQ3^v3H66X*GM3hRpMMmBSSK$uIAW*uA9Y z1@IHNivP%lalDQ^nyK}HLN=?sq!T%JVo2YZ+!`{?H9sdICFZMj{fo94ip2(@6v32bS&YS?3 zth+z3lWve$OC>wP-@C9c87dxsu=iftwZQ{7*m6w+>l9p16&t=*(?Ur{-_LIt=z>S6BQi8_bDLH1>^ z_dVtqLY@cDOwj}4EO~x|9p^0Z#e##gq!v5RS)8v*E~U<`6Fek81G}h&hlSvw?6Jt9 zat?L82G@--OP;Nxs|^`91aLE%GI@;0BQeCj&EN!K0aP_VD)X@L!Sz`$pCMMHZ|i zr>}eiGRFoR?Nts=r;UA6I{^ z__@c_Gxe4E>mN*P^Dy0<=%yAcwckW97Jb6bq3gTHiiIl!uOErvwCyvKI}x`~GdvSp zJ-Q+CjMUI6MK5g8f3J(+fq$?i%LIpcRPOetll7X3TRp~6dvJiYoN_BS?m=f=oh z9ZeyQZw~(I?`q}|?s`~&Y$dYVN-ec<0A~}m(##{o@LBggq*O=W_i&Bf2lqW3O^Gv) z7UsLsyIA$s>cA^}5}oVj$C0~h-Scam3Dj95j(IibY*_Ld$YtHSt#xg+54k_nzE{)A zAJFF+0xN&F{oOJDpZ@jQWjZTBU8*!_K35!KI$mVP!$Km4ZpIdT4eZhl+*Fyz1g zRm(d@9h(t3aVt)8KPB?y28naL?|9R2tM2M>Y=M_l2iElPJ}zf>8*7c8pY(N-J*_}y z75;*aDqHS{v;F;@A8Y0BSG;rq`pLcc`!m72j8QHAeg#vBhZ6h(o)g`<#!~K%vGJ=t ze(jWy$AvsJQhvK71E1k6;yzWayHsUkzKXpQeZ1dazS`7|T$qy0%lA}n;GSf?ovLq0 z4D-_Q_`xMdLx1-x2yxyVB`(Axh*IMF_ zZjksRz5T${&K)u)roek$T?niT8eSvT7u; z2|`oHW_e5#{2iI7sXGJe*`F=!|Mh>s?}8ntt{8rS?Q2$|_F77V$8`j`P3(vPX#doo zzE(Lu`S6RWQD>m++cfyatBfQ3q5ys&bl36CF-Gd!V~w<3*D785TsgrKb0#{rif0YC z)W~j$ElVaoE}6O&R?WCax0Bm|jK5Xa%(sZi6MI8j7%Z4lwQ65=g156RfH^3 z4~(%3?<&SF+;BwfRO!{^i7w5-7A&@-uYjjL2jg4JVM1gMB8T*5{68b>$b6LCrFHQB z%I-t%#v=a4xm4+ps_qc_?C@)NU-D07eOW_1E@v5cX+e7dkz1hsLD-d}WhGzb80IYJ zgV+fj)xElDN5xL~tgI2)$%(x|)yct@DX_A0RF5DpiCwQFbIf8)`K)RpkXI#s9f8TT zQny)m8+^Kr{-2yg`9#%L#F@Yx>24=x~!ZR(w* zd8bf^z`>ay^#twti*0x|W2k#DXiIH9v#yjpxcN?VEjrM({BN;!KKP3SEuk`lwQHf92}?fK+QS2AX)M_`N01I*~tAL&!oTs#2Xfsa;gq>j}AwPjBNheEM8;CAszIqOF(TYLc2&o8pO&>XY)j zJ@rl8VW=gjcnb^8y~!hpS9i&a{yd#pvI*3ZrOiN*?Nl3VxY7pM4p^2d*-qx(Y$r#? z4i1dNHY+lP+~d+BQ+%hpw%oo~Ui8P{K>Qu^9j5PN{INIaHS(UiZ9~xw z&I`uma4&^>PiRY=%ctz{N#6Y?wED5z)WKo@4OZ^8;9ew;Z$!gE5;2tpa_?b%9^_8{s3bILz=Qr&&KsuQ^Z}=h`CnDQqiphxBLI4Jmb+|*siIZ1r-|b9p$o#TIf)WWVK}JlPNVD>1_5 z$Zzme*R>s~6UIH(2^~|j#opUiz12TQ=I-13Xq&dZd$?oeCD)bSdoncc-x_QF z@z>mOimyY~r{cQd4T=}AJ{5;vDDm*jZ;jl^Np5&>imTC??>dy2?^>mg{wR^$4%yTC zS@^vA3a=XD@=eMWUqk15?rM_x$+;CmuI)fu!7Jf)2Y|cERhRRt(GA|_fL|W-24oEX z3Gnz;hdH_%@iFjNaI2=iv2xG!mtR!;#e>ZW{F?XJdltTtTahRJr_mX-=b84VYEN9# zx|`lVKArd%@UpR-IIDBv)6nzaQ~${CkKW&+D@OYwY#)U0)g04*f_(jAa_ZAJSc-uY+57lBXA-tRX~pQu_bcL9FY-}^|~e@Xwu9?`HOk}tlQ zdZ(Pvwwz?ulxo8VLC$!u!c$82kUf+=viDK;JiwkGV9&$sxspX9d-)I1KiN~+TWMqC zfV?m7+3n?ByT452o^&0XFR>X`UM6)sxgTNyGSG?#EcwTtgWX5;`|5sI#v0(8w|D$S zdhK|>zWWlbU1dZ^St@>wzmVhVn}mGuDm?QA`~C@AU%AA4C$f%j67tEboZsh~_Y2mV z?Rkst@)>j;&0AM%u4hJ`U6XQ%|JXD)e-XVOp?Vio` zK1N_iV!d`>qtOK_kZ*z$$C&llK9zpT^E7DX!zCxH|Jb}c2-Q>QQD0}^;j?7RFG|BsF5{<-J_;BR3Ey|&ON z`0H%OU)j$!;-0aZ`H@}FiCzyh-T=ed% zkz0_j1jf;FM9bcF@KymwMa%4W?A`@ggY4aRfulStnUgON24yv)s!TNBvmo&z95IFjmEt z)LUAJ%rqaqKG!MttDzST_Kp!)0&87E{+sVHbHEL$?Gjojb}UCDYs;&fn`@>Deq2YL zQTT$7&z6r^a?D!h`~!gzI4JT=h&`n4iWPT4|8?va()izx0^(S%%?>%k9@=f0L!?ObLtXNvJ$DR^B_Q=*_zbIo5V{B|-t;Sa8M+fh7 z^7~+QeqihFAkKz5-it@ap;nb@ zZ|l)@xmNoT(w=A49{otQUrKv-O#9JR`~K3NXVrd8r2X?+jpDob{o*HB?@7M-bm0M` ztoOR}o;=GLmT8Nw3i#jA=j8YM&zQc~jqP6ZP*xz z&+07C>o_lycvrsbE9d13%}89#`_TS6;IXP3ydRntelK$fK-0}U9~w@kpZW+rN7HfP z{j8h*53yArW??!>RM6Z*zZvO#P|PWmpyW|YO8)OQQr<~v2ju6N*@v28A+ zjcQ-k*V~n6-$3wdC1=nI-P}&SaAJd~^PW&WcJtR&8A_)f;cW+Ask|G0N8c7c%sb%q z3afTuJ@jqOp^sN|0pCF65?L?zhnHe=&&QT2_$%<6D)#pZrx{#^Js^tzT>{*K%Od^3 zyTcXmW8k+SF0OI`@N>@Sb=s-LRZfe*tvSaOxcvgS^+jhZ7Pv9@XkKmEQ_u_Hqi?@% z#oS2Tp4cVSny@Jp0VlClIDtnYHU(9)%d#mTmnC`sauT}2E+KruuIDB+)ofGXygC3* z$ayl0xk!wTd~UWWfIG^j06u-AO<@Z*g$uAHXuw!>%IFyCFt&sw>Su_ZGhOb?Mh>-n zD2c6X294mp$U+CO85}?!!vB(e06)sOIBkT;L{bk;$!zF(qp4>EZ_EqNisL?2&Y>et zmmAwb4z`0_cyQsM;ogwgtAq!`CzVeNo)tQh>k_*wcV)Wd9wxbq)$UVl`eKK*Yi`I{ zAvVwCFA}pwrj@yjCbr-J^5+6AxtjNO$$c~LpjXP;B#tx0UO)W>dZyC*J5_%O?CqLB z+jtgxy7-mEr&RqvO?k&|bQ`m=r;A@HGzt7eR+pT`0C6q_wRSC)Tq8Wms-^NQ`pc)( zgMPU~$6DL&Jc=AM+wS}UcIOj|v44|ehJ3GL@hrauXS=K)f06CG5j(ux`D)ks{k58_ z+-*wzU-gX6hMXmJkW&_qF^^)eqpo)2jqIN@?ha)6l*S64dul1QA!^}-&MbH$A9@g3 zV&lu4$IwhJ?-go#W$xlQGrb=%CCop4IOj1mca!SF+4vsM$;76-KeO=a{nR$~@R_?$ zyf^WV@Wzhu3-+XI9ZSlPU9O5eZ{zusykKfeiWcuavyL|4>dj;71|9)Cv;HGuaUbKDEu(_QEm{dJevHRS&F z0@frpVc`k#S8VeKW>K4EuVzk2bDM|eXeQ@uUe@1=UE8~8BOA9kT>cWyk#cGrEu>%e zMH_=1YO_}3f0cN<61V9lt|o`P^K0)uT@{!G?Ocz}P^_7s<;Jy=>lXqOnV7IF*)WKaF@7PW7QZ3vL^2pyG_sa4zo9U%i2`EcI{TtTjDF_J&^~- zqO+W=Q2vag8htC@Aaj3&^Fh`l@1Lx2pS7M{k@buvwskFi$lRylX9Eugq|2Fbg_f7l zL91Pxnozs$@9ud!v`@1&p+Fg&=tjkAkFJrCLQn>c^9CI~m-QT=c>%QyfE)m;8 zns{K@Ezh_v;|E4Ct&>sL z{bD1WmB#ZeJb&K^Z(rbQSm{=FPT`Gm|KAPR3kh!V9%}#4Mq8E+!uy23)Dv48X1@=E zZ?cDV#0@u4H{yyPpQ^$qu}cFkmwm?h#olm!)yP~khm_UmaXjzE_RGBejHAvHO}EaH z?Frtk&M6<|z#owxmKNZP;dlD#(dzdAxE(Bo?-gq1zyf4{YDenep!6rWD>2p6IUjc1 zo#`z`Mi>8s)ciT1<|?%=lB+9HwB_1G+G_`Z%^~JC9QqMhN5lD=2n@@ZkBTpj`F(ig z_oe?oV60*|E*k1R)UIq#+c19kEEvCiCo#POPhjX{{=1Nwd{fYcpm+a#&D^Tw^d#>e zPXPZZ3jWxmfITvd(3Bm|=AW-*s?I;EL=WMavlcxQ{(?M%9T8d^!W5nPzcI@CVf zGDQRrlzb6+Zlupf&iK~+cRhUa z1{Fx3L~ytjH|MJ*Z)Z-@Y9<7h7Mo?grMdLNh(Yy1o5ju`4cB8(DvyW**1| z-qe@#vxaAL;JZ`UgURsS+!nsua2I^{x(MGL1>bc#Tj5!Mc!b4wAKoZFrO*`k?qv9G zVO)goUi7W`ZowS*E@QRDck7>s;k%>01>Xg)@FTbIUFO~kxm4B@Nr+8T!)q+zrk~JbKUcT6ZLr_$B7KL#1kdM&28Z& zf13#}fw$(8_Y<1$HXlWnt3y8gEUWd|)fs*%JVopZ_50&p_3-Yn$Z{3&QZK5%Z(%2+ z9+{~gnK8I8-W8nanHOwy%v&My9rE&H$ae)1nI}idcb3d!%XioP1U|#~ZSk4EJ|4wq zn5(KE%sEw#jMoPlZwE5o4khCyC>c-LVnoI}6~k*-Q!+AytXI}5^5n@=@SB*m-Wpk} zuPVo-5%={N^4<>mleJ7&@?N}>_X0O*d5Oq-J5m#CcOvhFk@t2Y?=3{$+ljoF!WrgU zmV;kX%RcMf3FmnC=%ec06(TEgr_VxU#cjZ?saaN(`(oW2ZCTNr9f4aLJnLbBTZCsd z!z|C@S@Fn%YsO@`JOPp78n>Z_m64lsWYeCFq`!K=}elw5Vh=G95wBH$lDu2sAmnu_r1UCq4u zh{ZD#*iS#tO0H_O_%(7B{C<>olI$V68GC5@TjVO$$0Nv9fktrtgvB%EITxP!#Ugkn z-$nCGKe**Vu5vFRe=~v$9^@)}9G8s4dZPIJh8*N9nLB)bmmM1wVhrqSo&OR>Lq;7n@GRdmdV}d?G=~>m`^O+1x~Vt z=jm6T)mas^&Z?%SRHLb>lR@=lQ{a)w{`v>v7ZEwPEZckJXj^a^*bFCoZv#PVj3qJ# z&oYKO3*n;y<{fC?$p`|kB5TzLzB$;aU(jma;NH$+ zYAQ9b#^hV5p`<03Y$NVQeZM}pCiw@}cbR;bc)(MG9i=9DCjM^DsOCLry4V;GE{(r2 z)7uCx9UR=rkoWJ}>oE^5)6`vicMWqJj(a@jVr)NCu#4ni2lP>sQ10Z4*cp~C(45}2 z6TlJqdUKEOcwfm99`n$`$T{*;y=Bel=;vCq%(=rn-FyW5?UZ>vU+?be?Je%B_1BFtroWK&Dt&T< zw+}ex+Y9{^T6|049^`eMj*Y2RfqAXGC6A zd?m51F|h5$^0D9t))?y`QziaUN1n9jef&sUG=Da43`Y3MFQiYNRiDgT z`efcqbC#!3Km6g1ZO!{1ZI010?`FOdnfE+_4bKWT%sV1y1A|fC9nu##s?H2>IU;8( zo>DHlICBeuhe{Whd2(jlLx1vJ^qJ907Y8O;z$6F`L}Y9DNyN7Av}A*fONEEE^RAQe zOCsY(omsX$A$Y=q{q+JTo|PXT7zH_(B<^@RI!GM4NCJ9@eJ0=o8Ga4zmA?)hMr3^_ z=a)Snkv)+2nbYWq{$7_GZ#Q3 zR@_ybvcX9W*E=WRPZ;I4?oDRjB_DPga%tG94`?EWZ7TCVh;N}fwO#Fa?noKW-Dl&u z`)msLoIOsgP+&Cj6#a_ss_wMP6~5h`yB^?=!;p{eJX!TDJV@>_2~@N<+;Xp%eV0|x zq3Y;Mz4ENx+-1f1whWhZId;coNyu%<)V*zI1eRQHgsR3F^=lq+g(nk-PT#iO@tpTo z<+{x<`sJqEk=N+^AanIZ?zgmZf2a|Nzd!o^x-0&|T~M@Rp6V_r!8`jdsB1g1p2zT` za7JL)G3)7bAMh$>@9Kb|!QC!u|A-0fM{VwKYEo^(>)b0dRGa-g`<$L>#T*2k_ivOu z(sW>0pzQZQ+jy~j#?KL?UC{Z!MyX?&KEnQej;eQ&&Yf~r`=4x-Sf2E;+&`z@|7mj^ z^E=29>ALfvv#1Q%MQin;eX4t4Qc0+?*tE4F1NlHnNDQBnY0%^EPab_BRxZZJ$;Zi zPydnTDuu3OT<7i766ZJhJ;49yIa{^cld8k)o9)vIH9yB!n>>qOPJUkno@(H!ANy5i zS(^8%Y4VQbt|e7}%el*7_xT2LgaxP zxInQE-|VGQsJFH*#DuP7-~82F#=Tm+#L- zHxth@#@?tgq@RD$x2&(cWqsMr>%&KNA?q7*p0PJYjopBs#9rT<7qGsr=NV%~)ELtL zT6=x>w6TAiFKm6M-}&bKdoXJ3hRrSOTW|sE+kc)h3Zur5_1#0?E4|jm1ddJ4MF4prF zb2oNLC;tE5Z46rKQ1ZFR(Th3r2XUuy4s#edOfv>9c9=K(-eU}0Znd%b^FZ!2cF|_g zV9glxE80YOy>;fbSNR;R?*NQb^}$!2XYIXW)-L&a-?s0^&+fbVj#Ht%i(>kgSQoqR zB)1#BCj9#Bxl0VfPtMc#=L=fsTK24g7>DF(ZdWq=HkrJ~chMon!HfFO)OPo0-$q}g z&F+WKUFfoSf^`>_W(??kQ#)%b|tbvKlJTEmL9)B z?s9sE{p&~k%OK(=|G}L4!)pc((~bVfdRHRb4R}#E?D>fwF`2tw;QQHf21p){%$3jN zVy9P&tSWk4Uupu#dW1iT%qQ=oCueKP=;{1^gx|F$?X~89X{XkDC3m*0)s9_%9RDdc z*-Y&!>MPGw^_9hsC~MF4;^*mKRwFW;e>!>h`F7mM^wpFFMd~J%)omvZ$5W8@TwD57fQ!J^F)IUbFj=ekC3%upb-D3Um%^zpEm5 zx_@*C`FSt0J!hk1tLBotKGAbThl$AY8*EuRggh>`jCsIUp0kKEQhEOSk&l6KaE0X2 zN&P90I^!d9vRaEJ8@E?Bzh-!`591QG&e6X)ku543He~ApW0~(I*l@}QcwdxxvJSBs zkxyt4i(p1KJ2(eD!V21WJ+mck@3($8&M+lul9sy2+ z8OQ$I3@hXeCw3&M(jliH}q7fFE_Vk8M-Gy{zUj+BMLxo(xRE z%>?i%?w1}#E8dZBHW#Jz!|3(&txk;}FrPj)9yu@Ifg`o4#^ z7w|!@wc#?n7qr<(yo$gfi~UIjKB5cC`>We}ADyh#`_T11`+fFIa4bIwJblP*{$Tu> zszPX2=E=Ua!Y8?3$fn_!$&)4r$A$e4-F2|HtKihDIWAozx0C*Q(qA*qlK&Hpm(lz2 zG8n2Y%Zl z_#BPDUz3j=jg#a>Hsf-U!0wd`#bx)#fByJ9aC;*PZbvPc%=;#|McUNAQC2hSJaD`2 zTfof`fm`9XfZL>Vz->b;+}5|it&6~I{e|J&TIxCVyhO|P?Zr>J#^F+O3wu2bKC~4- zYKVP&bVISLZok7-CincE;H+Su%fSQAm|Z!)8G=osbYs|s&0s(0i<~hcUz~88f8aZ5 zD|VF7$68IC7FQeEsS)o6uO-${`d&cZXXq9B+?(T~R@+aW-1^7;EcA`(e_g8ZLI3xX48o5H&Jijco{`#;R z`j@!PtE2m)jr8ZM<+n<=IW+n=-jm#+uK${R;1Y zj9q9aXWK2Os+yY8$yH5?)QGhHhURk~rx2(6D*2%Nme2XKl^8j(CsrNgEZ=XzFa)f` z*RYVa+vm<0@rfM4w)Fw~EN68v(W@!DV?XaA&JN!ZY(F35xQ_0eqQ;#wiJa2HB=65A zQ{QBa#$E8bamnot<0yO9>843W=UelP)F1x9IQD@xPnD-m`}-zSn_{8W$5i~>p~6M3 zx-^eD9h`4qjR%ks4(=PNv$6D1Mmo3Se2}0H>}BVrN?Wt%c$`r z=e^uz_)g^978#m2BI9mTSCy=; z+H;ir#Xk9W*Ak zlq9!%ucCcyow1E~AC-$=Vd}J2b>=M8Ux3YrZwm@?5uh)$Qlt zJ6qeG#dlt*ZQ(mMO+R};`81W>85g17SlazHJYQ({{}kO`D?a_&99P2&=cnBt=7A6F z2X}$FRK8^t&Wn5?_?3Yi-~V!SXXx6GtgJn1>3z}os)4T#=rsB}yT60j8inQ$zzZHv z(z26Z;yyfT^9cP*9Rv?FKNI>NjcpKE!51|BW{3zoosDbQ|5r}yjK?b6?~{p^ip(Efu+nn7A9h^we^E_+%q9`|FfBA)4dHtscCc; z-G2<-uV|C*H{?X<{?N#8ru*0V{Tu0ieGA?9zPatQE{g7#wn_INTXeq`ny-hJ72VHK zbiZo{^bXzc3Pb;j?pL0J?sqD>Z{A0t``N%eLiZcaLH8SSJ{#hFAqob~biWe1pW`-% z+@|P$SG2s5L9IG%Rr|B({`Y@rMfcbjdV8O1P;|dkVme~!-lyu(^z*LZy#GH=_dB8c z_2;MiA58)u*bo1T7P_}_EQ;>4|F6(Jz5qq{o7`V3F>;6WFXId- z)t1MN&|VXnzdTZhQ{FG*`&Hl3UXy;3$GTmQGnRZWGSTDIy-g}0w}_+LF&$n@664a zApRHqDtu`8oU^)Vn~GE2H8ZGllti7QCM{`TIW0Wd{bLJ~;%W<1<7$iWcNUSGSG3%1Y@wb?IcL^F#(w_rlY17u__EBgq=5L)g^az3 z`aSA1=Vmd!%Jo{mY_YjYK8CClyMO1fHh<#|y4$pUXvC-Fca9T{ffYBHE_3KwF6k~2Uc&5*Yf_H zlmM*aYo`ILN0YP>(|*N$YQQQJSgntNRXMO)9|bGPTUjXi2Uk#A7PvLg-e6yo+1GSE zxkQ)mXg`j9mCxdz4YRLJ?5mI8_6t5BQ>bxxFNybL4?Hq9?_JM(>a&a+d9NU9e`H_m zJ?O^zWq(8;mi_6>=jh+Xju`#9L(J!-n9rhDM7Ou{grrte9QfdVO zFVQyD5m#4Vi`>2w8#%JMAKCox1E6DMv^r#E>QnthWNXRGRA=mVhifHwoB5%KdT4X! z?PFZ)vG4e(c~rz1x1cP^D}IhZDR#{Y&iU==w!ol3YPIrPfOdr<%jbX3+lv^|8^7Z2 z9Bi$@3b$FeJ;x<|hQxj#ew^)YVk6GhgTKrrMijmJI^uv!sa5qX@V5LuiTJZ6{|H@P z)vW91Jvp8DwMf6jXy6;t_?=p1haR+Ykhf~Pdy#L6{IBGIBx2A)#0B}o$PCy3g3FkH z?2ckE>$@%Oj#xl4JeY~+{-r*|bw)K|od)Ht~f4+O9+gQ{~GoBcv8;gfK#Ma+g z));0E0vmx*7+7sXACjEK57D(~-&AEt3GiCti7 zI(eN-thE-w+v?Ht!|3@9!6He65Z5u(P#-<5}}eac^AT#(UnF_mYt*4(J<3p7p--!HrdIybo_}HLm!@ z0{9+x-SExu4sj=YMH~HzPdyqR&YDN!LmPkA#(PuF^Ik9HwBk12qsI0(j@K)$Y|kBS zyq9~P_r~zv4Q;$P;ymva@!t2^c&~5Fdp4XOo1iUUBfL5aXD>fT+aNmfTQ{EFUe2g! znA?2^k*)vGMteDPqT4%>O@r<59iXF^F4bmdaOUTBB4=1?sj3($%TFxlnw&8z_K9}o zJcssaW|_);9qOH22M>mpZC`I-AF*)AZ)1^7;j!Wit?5pFmz}Tm<%2E$)GXTdmUh_k z;?b$2+a0spVaLm*&6v*E4XLvq+^f|{OnGPpdia-`%3lzlu05ZT%%`0F(9!ArD^9P3}WmTlcY z&3p{Gyf62?F66#f;wT4-%v%o(c4Q=YR}wdeK9aZQa{3#^c{bW@268!5I4eQ}>FaW> zMrxeb^<`YXx7$c;-DqHPUDwC=6mNUBb-!AB)vwr~V*CC3x9C@794l__+S4i)FkLf? zlAN_~cZjQPb)Ep*O-;m%rV|T*ykgHy<|%Wp>nnca_{QopO?i)9&Yh#kGi!LZa+MRS z}X!{Gz2_$ukRfXP)GUE$HB^4P|NO+w{92 zgZfsSn=P@9an%c@Z{`PF4Ig7jKL7SFoAUhNtUb4X^PFzicvvEM+N1hWaz+JD0!utn z<66Z8t9ZW(EB|jMcd~v~(K`Rn-<>)&>D1uriftAwH!N zVG9p=AX3pZJ4fzQn`j$%Kru;Q6D@-{N55701) zK9Ro;%++1s$+4HfXMZvB9&%Va;&VC>Pc#7=;{alP?)tiEgsgQ@qP8h8k$K$!A3$z% z64URa2ArOTY*jXbcm?;y+kbnaDg!@7-3|CZ+4I1}sJe2cZmX^wf0dky|9$~+&^Htj z$3b13wQ=#4YpIKqpv6~)C%Mg?=;2}fMLXS^OZbS&<%5qjR9HMDVaBx6@64w*4WFrp zZzRp=eL7f*zpX;zapZ114Vbt$CNjS;^YaCvpJIFw0-wmU%+G$Oj(OEH?=bx}F#ZAF z1%JDieBQKa5O6pYrw!l1nx;ULkAP1H;fWMPGp+h8Rt{q*vZgMq$?mtgzquaQ!TrQf z6oUKAP3CCN*|})@xrq)a0)52z&y}p?(VU*vC4VR|9hii`*E2i{S4z zwN~y3Ryu}NgTr3mzYE)5pRB77Yq9IORci^A*Rz&!XRT%W={uU&(&zMOxhsxw)`55R z?D4tqS8&z%zLvKNo5ubm?N}o^Yob;*FMN%A?>lvm?h$=79EmR$*a)8b!B@fCF!uNT z)YrRdp2K&(~_|=V~<#T|H)Z z|3#{Rxz5IV8fBz^CuANjiq{&Tp|ZN6kS zZR)te?Rw?+Zr6T2r6kjA%IkQI+jz;tU4hj2S$(=G?{u^j`1vToJo$? ze#z~^U#UK?&sDiz9zOf1wWM(_Het_hYU*eR-;w|Ig-+`DD!bfkf~SJ>2l+2{0?})Q z7mBQauY1D+EyXKq9RZGp=}%(+wACD1&#>yY$!BGTvnRk~;kGzFjY!sB&VLVZ55US^VwVrGFvqgN5*T_M+gq*6n>S zQ@5DtTU0qvnzWo_QX~e?9o%!+YWTUeAoI*Dc@o2=BWA z?C2juAM_KTA3aIyzbaDS<1K#kFSKO10J2C{iF|xMMNhW;ol2FA|O#T;gzDeEjE%1pe;U{(Mbr9U2&ROnf&+FNL!Idz)JW;Fm2_#I^g?!gQupUM5{4ofKT+Be2?Ob5SAbcI)3VF*5} zT*FhE`3AO6v4uQ)H~Xk^4fV#iI5#9FRh@t2S4y5?};GX7b855ChlH1fyBr=zDB0|pT%JzO`gy2fEtWA|d* z>^Jb~sP#SA_WCSZO!H2%*GE2KtM!pj`1g5{^^s5bjq7`W^|7y0<_&zk`okPzy2ltf zS7K|Az!lufJ6Ova;gJH{IAsI7(mPznuBDd1AaXw=GK7L{FSl7^k1f9RHenmjeI4)) z;3V+z^w-P*%;D~f+EtD}_R!uLGY7m*UQ)(9hSXn|d7j|$~7G~(Xb!0bziRg*B zf+IWOuZsRVDID1rgm!mYYq#+&n0BXeaPW`83+!L4;oi~s7O25I02|*RYt_QaRQ!JUW+TWBH zp0B&!nKAY1^fUTwZ0vbbk2W5<6&>zh^wXetzh2!i2YGmk?0-^q@%_YepGnO2mFh14 ze2+^fc3tRL(ef;}NFsEVVA=`?~a-#OLglIspRrsZsKeeZKq- z*atW(e4JD29l?`QkE*xP6C4R*-(54K=hb4zli!ujIj5{#i{en?XnR`u+Hhl^^IARUVCZo4?mO zRt`(x?4Eh=>6d5Rd%Bbwa+%wj@{V}83o?he0Y^&7>aFNsw+S3CQo3+}dz}iOIZ@^Q zGI8W_@*D+UMF#4~esZsmSI+vonws)P<$J}ee6Rjj zOZ}I`R{36XFGk=9XK)YvjbZv;4<0X3ciq$^4EXh)b)BqxOA4?7U>Di2R_o;*%^6id z&evGtw|ifqy_O3vD}(#{1(#S)FzhzxYh|u{Z2bQ9Wi_7;#@5YR{jX3r=n|0?uJ*3= zA=}I)_kel9mv-6pBV-ODXN+TB^4uG_03M*`BYJy~{z9+VF*AuOH(|$;<$I=o|7A5t z>OEMn!=@y2EGOP;EO`=J$ia{pkX&pv9(=aHMDJfE_pHkvaK;mxS)=L`l=95D<%>K< z1$HqXYk7jU840wdP3Q$|R`9HK)Ts=>!$dzUgs+4-QzSRj2cPgy1`d1{8I`k%_z2mb zgzClYkGw0opwhqKIez3r8DI1{@sB*OIcne1$m4~cm5%(?q9@4ftqj6*;%BY0%jND$rpU)2BZ!(OGMmn%H_jmJp9hVTyduE+C!v*+DUUQm9>a*@*n zw~7A{`HM3>uWkrF4d%X%xg*QXmNh;1;bYGXU|u`%qh5y}HC;~}mciI6nLlZX{l&k$7nLNu4=}xr^>$+^ZTU8@2}kXb(PNE%6xjoz*68O z-wXbU4bpy&hOxz4town)E+_g#^zUWBrvZ9QKtF5%{}a&>1zxtlNbai_*)>=J4nf~d z$hJ2UQy7M}Bu@BkY>7KFJjT2Ia*Wy`xkjj~Re$loz|KbFuuF`$iR}r!3M|@x-v|yX zSNQwSufbojKXU%|0ha>Mw~e>K3JY)joQLp1)5qsny#4nS@Qil_Zv_wGg{IUEs*lW5 z_|Oh;c0IV;g0~Bwm?mR^_if?sOE+_-3ZJ208M8a^lra>3s`*9mliw76@;4ekYnYRg zZ{m<|up`C66IX(t5)b@n44;deQFwX;_$fL@`i!j8K42?z&Vm+#oaw%Wc}CzBx0!ky zHL(~wI7i^)RCFC;T*B+2Jlz z^`)ft&17)h9pSORyy}!S_XwX5mTS`J%Vm+8kTNdD)swW zUvQMWCN$bz6HH6$FYSVZIRkmeZom7*6IH^mL$s@-U8rl4=;FJBgVDt!ZKL}?Q_Xob z*wV%2_o5ex>DRT_(k7m)lJm>Xx0ByQX0_X_pe}d@@$307qVq(JRlxf#{SWoNEAvlv z_YaNajEQQe>;uChbBcNA?=q(~9#<)`3&D}@n!>n>XF|i=l0Vnqve}P4EjD{!q6R;3 z^vBNNl70B-9`+#-{Ai!UcW&3S>@(tvCBNh*D*0um$S=9ct>qW7Rgcuoc0`+&;8Y+>M{mZrgp7gx+SF&{m=gbB*+RN|pS1Q1pMZ8On7Hy8 zu?2;K<6J^pfh><1+-dPx+pg{Z4tH3r)XcHn-2LmeV-MM))g(TcV#UY>>bAS-gS}tTxqpcKGM#qT+^+BjmN~rMSI~!uw+hlOM7!X! z&i#YD7o=^FxfaBWe#@9Zw6ko&&WEbR*Y3R(WxgXKO zb%|k*t9}=JkL&F2zpWFwPSO{4sFhk`$u@ie((e|Yh5p4}A~2V8Y$158CzaLsH#1f` zcBeGzcI8vIi*@$C@>JDm&gvI=N7~x&-N!rRdZ_kN>&ro0dd{2jPU*&Ok$0Y?4u;f& zPS@f~V&Bi_eRWrb#EEd;3H&}|>}VLy_y!mj*f3=5Hz!+Xd4RDpIh*`z$jQmIbavkg z@E`fBbb^W(S*qei_^p6=8;yF!+ST2>nF+*;@SUtz&T(xk`W*7D_-K5UyidP@HDxtd zjU~3Xv@`ahOZeZ#@Na6|0c_I}E5GEezF`nx)Cb3L}9>k_o= zM9zmP$YYl7EU`yctwMX=?=x>{FMTw}CSkuSl(U<-q%6xeq4bho#3hNJEX;Wu;G7QP zE3?-nyum>(OpdRY_m`~E-yI&xIVZN$=KeW*yVGWVu$Q-p`YY-=tGBY-tLMVr-V$np z6=i6~%znC2GQ?rUnF|bor;IB(Q9|pvI=%^Ndu7QT0lmKC6<@vOcYA2#0OGF4kL~6a zdxD%f9g!ZI6!sQ-+EcE9E|MIiFS$&y8RHXkpx7?*igJX3$^K z9pCl#x7zO-|1XC(F|s$79BGej*}_#V_hryKa&H52TU&N1!3*JcJ8n2xH5I)})!K1h zVKnmso{`+A z&}EW~-3PjfYjndyWseJ})g*DDQ>lxeul6La@mcKCPWB=v)mfWM?CscY9wX=S9BLrx z)If4j1IcLwx_exYbj3!Wl4F$O^IDBh!p%LHYx*zVldd^SM90eI9?a6M`s_@eGtg}x zA=YCGez zuu^jl^rKG)Sx2GPo;wGejRkym)7S5SFMfojau0C2=4jl?`j$6;*F$}$OYRl>kwML{ zCl#Js&rk4NSZ&SQ&)GzOuJm2{>~fyfyftFcBJUwPbe1)&MnBS!GxAfkO%B!&WDQxY z0T~|iIA@xgi#2XOYnsh_LDrSUx>~of=IdsiGiZ~`S_@e#Z3dQeW?B8nS{;o#pY3_v zN!!v??U;@}n!~wT(Qomd3hszheIv_CUFC|Xc}sj1JmZ)jyPbcSrtVefbj_J6Xl{27 z@u*W$sguHQ(!bQo5*Uqp0I6-#U{xADgy?o;#IT^qdxvg*E;ud*1d)J?Apy;q9&CIef@>a_6nc zV!_;GSLixoI&MgI)lW=zg(nf)aa*zrn(ZG#UJW9z#y^PMoJPJv9(91;_PFB7I}WB@ z-oL5oQfi7`W;E^R%!7~VLvqZmU9gi;t8U_Yr5A8^6Z=W7RB+j)(EVkG_^X1;sQI?y zhdj&oDLkhdVdN9&LD|5A$W2A$4LryF4@!;{evdpWzD>pN=TSc$-m-vuD;~>m*P!R^ zehlBG$h)Dgm-koxNakbBWw3YEx)>cx+R>k^LFO&v$vbxY2axfVjwN!o$kFtvbS&gU zyRE!uw||bc249WnSj#4|9_p7aiCJ^-S{FQS_6%qZ8k+5AzrXyBRmZ{)oo8~#gPeI1 zQz&O`^Y0?Bso&eF->;P4>8Id6@R~RdsVz~q519g*(~;p-+YIjNm3Gi$nT*$2o9zZ~ zONk3#eJ?mEdBxoA_!D`r{SS@cKDWBt5q)rjUEicDaYC8c9q7{VUKLoi5 zdgZP#eDItD(C}I%>&KO3@*ID2v1={$4dRJ!-J(5wybe7~_=LpHCuEFwt>d=@e%r4- zbi6+Do5UZDCAP8;`F&Rp)0X?dZ9lk;j0Oxxcn8aT+3Nsv5FfLWO_>*d+@*5Ac=Vj> za>u#WB4gFvFwWIG1AjJW-!xTYFs`~uOK9v_h;J7CM($Nv`zAJA*>CPvh;8>sftL3e zH4!Ba<`;aTIpi9!ULLhv6$Z`Mt+l6g6i9;BMp2f zGrvO4W~mdqg>!rAo$zmTFdzDn$l6miN2SP1KJ+k&ulkA_U+CW15{EPz9t!`;6TL&p zb^Ik3z*YL7K061Syjb)Y zSF3j}G2F7X+ zk$P;NtjUEoax9Jj2Vz=f4~kC#zB^88Ui+vsFFsP{q3G1yS!KQrB8$WG)cAmvtW*1K zv2eZGte_t)=$w@tGw)|)-r$5Qx2p4ST-scdjeO?N=E!qC$rX@uza=(B>R7ch#;)^@ z?XxAj&cpH4Hle$Ao`r*~+sHXgW9RR_h^stqPyP@pQ`F%%iKOLHBuVMZXb$a0_!et70zQvwhNQ`=BrP zMz4e(4DD~zgDAYQ=RO}?+(i$dY1U!=P2{5Zgp}F z96s^jvK8+RdrIW_gpr}nK8jQyQm;(LF1&eGx<~CHHx5(gBXsM*{w3DDYfG$ebN+xl zll;x0Il4K!zsFj-KV8n5F-OUJBVT%Vn6*juvk5w;=2BtL1%BAcJ8PV|h)yJH=3S|o zvUeRj$+*e%GZ_8}UsCo1@qeg!!bfB0`OO~lbk{(|=sD{l^vQkhjky=T8q1eNp3xsJ zQR^R6_T@pw>@7<6@l_Tgv-KwT#NbF+-bGi_!I9EbVtCQhABb7seXOs*;V&Z?dgA{-r0YV-9NEo`}t0Ibd>%!+UvizbNvg7)%tH`{kO6Hr}2r0c&74qS^rI} z|6bO=99#E?W&M|7zts7iE3qfYPWjGUd#wLjcm0phPv`nGt`C62JmlDB z;2>wThdGxiDLJWLYU(xs2Q~Lt+(7?-?^O3a;LcOVFLUj~czZsJ@8wwy_O5)^wCDP7 z8sf_9R~zN_+8565OI$Q(VUbiBvExdn#@nO82 zT_Smc_*8n>!?q&(No|-?&Ki@o7M)P^hbce#q`Dg|geR91FD7^_>oU~VA6n-?Kei;r z+i|btXs^_s+BKJ4-=46arE*Fq8ihUZAvEPHK0OybYbw_vT;a>|ty-&!;obBEH8#fo zG;6$+|4;G%N&ZXx*W>Dn&zw0vs_qlHPpDnYeTcOY8T2vrocYnl!kBmF$J{@_{VeiE zrOq?Bx--w8Y3#Q$Wa$$3wWocGkUjx#>1sRPjN)Q7Hg&X+5ce39yBytW%l6h)JvN`PTV&8L)-gc`taDw>5(N8S& z6f3+)3k-Y3|D?3LjJU<@X|(Uvo{XDY;ER8l|Fj>SM{SW@-GB$LornC4e{G!d^DokU z9`wn1i-_|`p$?cjr{#<21M#(6q2a+dka_m{=>r{gQL!&NkG)-vEuJ=2UyNB@8M9mq zax31=9@58{NB;>o>Q)W(CE-gYR?`%|adMPbBfBSYX7g9+vw%E^L_dCk$tAwThGbQT zPju17>6%r5jFm`yPIg7AUGHg6u~kT1U6bE`IR#rwU;JS+_2kxr;B4zm&H8W#bhb$J zh$L`Aa%i0xUCxMENlk^#)A3g@pUrzztfk_Cz;s;A&SI;8v8Y(fo!EYutD5I@KkX4i zKNGorhU`OP6v1Z~Cds>r#k}}k+uv~`=iV>KzwFhCSKwUY2J#p1MfgH;hRE0s^t)8_ zyMAT|dQSv+&b_bL*HGv6&Fx=eJ~$9r5*`s%=BZltdRt34vWDco5F%-)vzKKT7} z3#j2HHN*HOnKh9;HR8=;A2|{e@~%dAi*!HB@DgwqI=O!Uds5D|;qO6cNQCc|&x+rd zo!>3X{MOqZ@|7y>mikGIZx%gP~iT~-=`abr{Xtyb+q-QLN|nF7mX=Ua+$mLHqGlEyNQUQe<;S7ROKn>GlLu^@Za5p7v;;c*ICOX^@eYok#j zOEC^$0|{fla&0pA?!k5fO%NNDj3-az5$J}D=fcwNX8`}(r;O?Q?wIg%w@hVBGQaII zrh%Pf+R<%HJQv#%=Xd2HdxZ15#xzF8Bzkr^Gyqx^qRsI3ionb-OI@rq?BDjeS|NBw z2pe_?oh`U3-Ng2@R%%5Jdhfi%*(kk0ml|=RtBcIQoc23)E7HNkAad}TeN#9a>26|@ zzh?IPl15!eow|-5^9-;!T0GS}e&;mvH($HQY^zHn207h4b0Wh$vuX->e>Zg;SNfvp zUc|9mO{_&Tv3@O&J2_JH*JZcqS6kt~r0iu4w7Wb8CnPpY&iCnytw3aO=vAQM4Pg*euU2L0_zJA-UGWoLXZEO;@9PZQ^nhiY_8A{|`xr#qLNUYe>8?|GSFGrk8VZK+} z{UEyTyf(hn^tsNq_R5j7?%# z8j&@mZ}(p0b$REc7QZl;nD2(_Qu7G?G*w)SJtML80J8iRXuZqdHbCpc$nsK?Nch@H z^r%A#n#y;LL*F`tp9FvL2zhUg*g__;?=9G18B&mQWbxy~rdx77gCEQ}neP(ASiog!iJn*N~Oa6^rJ)E8n^A ze`6DT(1}G0PiCJW=BrXXEUxx7iTMJC+nsA3edlTM#tQ5kCE8%) z;+yOp)>HP>X7!GJzk&Ns8Y{9d_<5_~=PGOt$hR|SUvvI-;-`w=8`z1TL0}k}3M{99 z>$hWPE0B1Fc=mwyWE5FRYMBU+l(o%^@#USyHd{b#{lfH$z&qqkd{rN1bZC8A#dZ;~C zKb|;P^zx&?MDVu~JdZNh#TiHkc{awtcgQ}@R!^#6JKmNEX!?FV@LH0FN0d#{gF{m;hk_MJ_| zzTc3~_np+<;dJoamEpAe3gi4-aAFKDjGlGJ#due^_v~%8mh74Da2CmT8W`i3smZKq z$I=h>r5;@gsQ7~`j*bAp4LInP(ncaE5=Y3CFU^aBUdz=8B`IIz+k|J)up@J}UH zvOE5N`g?HTCgU9I-^Ti%iCO=&SsoeR@#9a9-ZLG#FE)pA_*sN&HnF}-Ym$}zsO}@l z$~Uj>sqH>bVk_mH@;)lIvYo$+?O$riKY&k2YRS*TW+V047N8%O1DkSaex$||KwjKg zeuDbk>-rewUit(+ksY3Z{z!=>d6>4&uN%1=kon1Rko_Qft5@WH;>vBgKiQ~IK7_u; zRlh@aA!c00pzLLgVSWL2Gsd9m(=i6APnU2lbwh^eW}i_Wv+p=$Vdyw<&{l|Xh4DWf z>R((ad*i7;W6NN@kNl6Hv%RTF@;};>?wC8mNX#^yL1OiEQKnb)qO5GIqtp0bGi3d z$J}2Pb1&zfyYKXkxfdUt`&?vs_g-WJ_kIJpC?ad!!1;)0`u3|QN5%S;BWt<#mUo!L zcYjW8{k9cIV-#m|8vCNav>UoS(u{{|cZF~lD*`x&4jrBc;OeX%R3}muQWHNbv9C>UR>niftvVOKaHpb)MwHVwu z2M!1>oP)QVUtbcKN_!~e6VrcNVx=E0_8mh%l>PJw`w5yo?%X<$?-9mvb`|p0f{WE> zSAi$&$#a}vzl=3-+v=c>NgMu+N0R;4F?`kn3z4ywTqm$dZw)^Tjsc6djP&}mclynb zzgcXy&9-6jNDo*n0u~CN9aua9&wPw_6dWGXrlkXibjFA>M`2M%YM|J~?!=Qyus4KPRp25s2fcA)1eT89iIv`%P_KYZJPbWYd z9wdMKFjs+t=qS&T^W*Yo{x)7{i1-Q>Ex~`i9vBt?zmrKe?Bx01O*@v4FwX4oTjw}m zr;YVgd-yJGcUlQJ$XJ$9r&wsgqC{=nBGzS17PVA_hF@V`Ut(Sdu(#^W2i)2{EM{IO zu@^iHJ_V5{f6RR3@A=N(B{mtK2eA;kwTwDE&AiuM-dEZ2+iUD=klzv?fDdJ-IxCZJ zWZ$j-8h#k@FX02fP}x2H>bvZ>E*o!}5$5mnPC&~UL#PtnP5Q+a^BrUedG;vni;N|B zmw|jGIq6HFm7?z)gtwlDw?;W9CJ1j0!CS+~TCpuK>__PRGw}|KD z>nqy~baJQYJHNno*>*rPq|F=;xuL|jo^$rw`eR*HG{0U48K;*84bP9^;{|Cu0tZemjEL zaq6Uv_4uuiTdUsv#lt`S=oc-&{^$p5q*uDZSuvj% zPJ(ZXT-Z1?;j`c(`z2D>$5+m`)Y^Gnyi%-nsioE#LQfSN_nmOQ~baUWbk9o}#Uh^FJMxzgE#yM!yjqJaFbbVz1 zzW94;XH{xe8#zyr3}Q)m) zriR;OY-5wK%dSAqlbGD-QEXB0lZT--e&iDTKR<6TclK?KeU0#2&UqFar`Sj(j?|7f zRk|}dG@Q$foHzb%X!}v@d)VqD&<8uu%u_34YMKY{T8Q6)@r1G4&Q14JJx4xv2{~x+ za+P^*x_!|F~Lm&VtNSWZonAcbhJJ z_e4`1x!U-5o3ZsL%`e!Ks3lgl#8Eqru{Y!6Z32HHe*DtlPmposz;jc{T?w-O5!QbW zI!L&ldwd(Vt(UqH@Xmwq?YNi7dxgI>;D1VBUp8cYq42YCp`jj|=Mv}`^iBMBjnK6Q z=gD7`$_zc zqJK#|x9lg;7xC?x-gKQ@1`m0NUNb0h_t?KTA0<|ZaS;Qia__yXHB;8biJ>3g$UN|& z^e8S@9oq0)8>y!RBc{!Gqw5?jk{$$eBzn6%^8RHP=pHIX)Q(MyAT z{{is=vxu*dSgM1>3`h>+=5y5k1fPTsHV}^|@c{oZ#gQ9`2axtUZ8O9J|sTyA_@-b-=_nUC;YU57?DBVKo0U_}~1q#EC~A@CSDMtYiGq1^&Py zuJ6Eazlx3Z9r&%w`+xeU?!5nc{MH|T({EmWpxFG=lQ!>H`Udb&`% zFZY`k-%j!lY+XU#)1{}L+>?cTo`rng;mGHg9Qiy8`FtRHiadWG`8+4Z)>CrQY(3=? z^7(W}KEG619C!m6`Y|hU;s9jx_s~xUScwxJgHFHqEo2o>R_kVbIFF-O$XEsTkE6F_ zQJd4HnIDs@c#iYC&M#umC_muM(1QW^1(S`wf|uY(PdVdr*eg3_jW+h|S@!EW&U!k( z2w8{xL)lLP6T$N*7utCK-Kl=_{W%)2)XhJB-J@)P)R@V_Mk)Hju|ycTQ zpFy0^Xz=(PXUQy!SNN=CzO(RM(Wi)gnRcG%BKJQ^JGRX*z4mtSCy4zp;6AfGZ0OX_?>fn^|*; z%|Q>9nCE8<05`J0je%w+crg|`gy^tKI5Y3kn&LnQ^4?%@YROZN@0rSazVer}3Fj&` z>nt?w{EU0elgON#pz)9OkU2%hd@M%hT+W=AAagE5=Bz-r)WvVjnP@6^1DMC=fHyH_ z(H(;DINP7z{qHB8zZc!{iS4(>moB-eA`=D^?=|%=D_{CrmG{l_*`;Md&#Q}MA*!^e7$;=Mv^1veySOK4y@ z^hR(-(L|oB9GCLvea%zJWu<=Fsb%;S;8`k{6&_>fN^k}P^u)~zh(bFW(}>B$Z!SLR zketW%kK*ONw_RNd#>{6O88r+hBkWF&KXm&~;4^UF+^f7HbvKUMyR zzx_S-$q-`^d~457P`-6p@2QutP3BBDJ0uqrJ?<@y`by|=Z==WMaITB&v$x3aG|}Va zcb@!~{LbUlbzy%sZgcIL-&J;kHgFw$NsDxmVETUO|^zjV?!x-PU5-IGpZ( zauvGVNiA_<_jaC9?Fg@vwx8fC`t4EezD_&kZ2A@dg2-?EpdV+5Py7xv@TbINLFXpA z{O#k*9a--EpL_7SJBc%JaU@pXJvU{5`SHvw^YXlb)Y6@<^jm=edTHPXz~w#Qf+(Bb8 z7vHk#U)u1=UU1-a=xV=t__|_XWy7f_uTk&Ilpxd`+PY50?GXd z_Qk?s5})0@o@4Nm#CGUb6xpC55&hju97G4YX1iv+_$BO~m+X3U$bTvy7+?3eqTE#F zqbizZ$10D&zdQ22VrwYl%0(U=wm~z8Z_~{YJ3MCY7TqfHrz)9c61qoGg>#ROxClF_ z$TE{=@qE8?ZZo#WP$Dr5$P^J|1&Pm+IE)|M&{2J%rhB~MwXBWMw2pn~#pvRplr*!E z@g5$Eo5@)?zKuD?VDPu^)j)YDo?#5n|Qrz%?reh#>!-U+%}QLgLV2Y ziJuDcPVl5=`ECWqAMl$#vV&QM=!y5h4?7P%C9bBiNVE27+G2^B-ZX{W+DN=FN_%^Oi}?LsL5FKxPdrdfrnwjRsAt%TiP5*3 z@~<+tzQW&kXx3KhXfwZ}wMHbvk)ejH5{Ezd7~i7?1d@WLzQ-9>V9i zQX6LsqHd5klQX`a*4LNM@*KZf^HyCvp^1LDQ)Gb}@l_rLt`m_N$D*5vuafUV-m9S{ z)Sdk`G6D9A&_wJdWBt}e>?A$c=mrO##1L9yN7-_lX4iA8OjJIsD7x^b8#N=!c+q)} z3v6d%Q#eg7S^ipo;ZW=Z3mAJCxJ74z@7NX^W@v%PbpAUz``8)QY88WwP)&mI$`9-u zx6;2PPK->)E-(YTXD{#lvYPlaV1fV67nJyH?Rw*9^~~o8`^ovvo30h2kMXx6qgMV_ zr}B8w_X~`z{Ep0|zE`>yI0T(tNxUBVy@H+8HhLBvB3ehB))71BQ0})Po7_R%lROju zO742{0kGjTGLEhIS~gPKD7fJ+GYsB@z!h0P_S-a(pAV_H{^7=}w^MU)88`^OOaE@) z(!R7KxyA)jb5HCz)a|1-_}V1s9k!gyV#|pzURmD-jPZLcW()Dx`HX2OJc>Mf>nG5T zY;B-zcji53F5}|=Tw+}xVp|V=hU&&=itbLt+{Hn%ksZe3xC%UIAf!tE0c^c z>u~H>=c_fz%i)ZR&{XIOGD|(rB9rm=p-b~FZF|VU(~UQIJ`10c2EK--@NR^7WS#|i zH_Y#gd@pOObXL|@+3_M7%GTyh&%}n;9~<7)<^}qQH*Tm3EFl07w>m=yh$xUTzG zWA1mxkxyRnuX=NGKz}PaAn(uNea{yA9d*Au=6-+7{h>HT+r*xEka`zFqasU*NqroA zUj*%`gw`!Y_nJpc>P%t`mtYT=K`zmBV%f_%?*^R7&P`WxZyb5X@wp||b}4&m27g^BpxQ6Z=~%J*e9f4$=jBG3-Udt^gX}@v?;omSX1shOW4HktCu1udt(!8okz+lkjBnILFR>)#iu+}Jni-eNJ^emJAJVVH z07;wQ;d^Ow;aJ9d((m*9Pk}G|0oR>eS)0;-0w&}mP5RNNv)mu*mLI;LX_E{O zdre2&%d7aJ!Bwr5+rR7`;s0`-i!8F8@AIMKx$CfHL-S`nqC?ZDeUP|pmk0bfx%?Bg zhwL1gIK`)%ptX&+Yt}*R`^%ZbMpfG<#fWq42MxFTt>^FyH01cLRq%0{tIVwfUOozX zFLB#~dtwhd46SdE^tEYjeyUA#%Ts;rm8oiPi9Gv9YRlX2peLz!$Qv(z(Rs&jJ|9Eh zRXzcBgiq4G&?#@1BofyRPZB+g`X`)o;%yxaPjYi}@~E#e2{|l?9A?YdB}&GY9L!Ac zMakERy2@o(&sc(q#f4GEt>o#t5sII*BoLomH>w*y=~x$Ub)@z4wb%LV`FX!+&#&~0 zzUY)ha>T}VqYdArFD1iHOjLC!&UpLz@W-5O({GwA&eZtA$ONcC=${gGL)WshQE9KSqt&h5_rR zV8Hs7{t_5Wwi?Tq;Llp(YhJj-*Rp7d@6?hdzShT=_&!{^#CLkx5}$3K7}X6DQf-&~}v3$z(aTmO&qx5oU@Mw`S8FY#FYc9;83 zIx%Z*O;?F)%HDX5(gngD*jJZ&ERjY3_*M4Mk`nX*beW|R6X@Yyx6ZPD>31jlBnPMO ztYn|tj$I$IuhMnI2P0>^$axf^C!XSeEB{aP{|x`z_}^zRW12^sALv&2B>R`X?&(J@ zBd+OpP}h(gmW0hEQvYb8#Gpt&(#JK7*Op(pYIBy6k0n0HtEp>q3$+{Lp$YJ)wXW}nYUT>p`&}KKJ+oFkLBcoG|xolt&X!=-q$V3nf&VUV&6OD6+c8Q{7hY2 z{B6dSdh`8e8$PlQy*#aYL6;-~d~^=JO_{pWY+{i=v%JXeq1jx#N8-nW=~ zb=;rEH=Igb_i5J0!*y1?-<*@|x32RePc;FfOo34eaO7O46mW_4k0h{;O(pz|-#lyJ z?=R98^%Jc|e#<)F%KYT_O!7G9K>O^oBkgnF+%^9pwRaj=L#d1Iws!>jy*fRyN{>gM zwEfHKyk+d1<5tg~cR33f=E4&z&?%bU$No=0f&)#gdGpK?%Uz%7dGt_lKysZLz=Ou> zGHW@oo}|aON?uIk$ztkq#kZFKPS!BFweGj%HEGH9tF`#55qd&>A!pVU#wS-5{^j}S zTeRe=lh|=Rz`237Xju~n&yv_ka%G%8(2)`rfa6y2J6EB-f7f(H3KuxkVYT#L&q#N;?fsJEb>Y ztnNuaE&?M(*NePXFrWYIm0;ZlY<@U9i-x5oQ9(SxOmM*dOt;zNoIL#+T?<%yvsd26m`+A{tXg6BC-i77JcuU!2 zwzKxU6Py@t{k9n1JQluI+F#iVi?g-e!n>o)b1U^O8mqj4ZJdGCG@br{q1c<+>zu3C z)^q1`9#(VFKwo=Jmg3pS#m5#P7q@g!4+a@x7ILSYiIoSf5S@H5I4JPl!aB)$SVx$X z^e5+G$(nZh*5?*mcTiVf`PMlPtFfvy&@{colK$lUt3vjc!f(#M(!p=}R`l`(=mnuw zaiRkNJI=pi+|R#Fe8DQ#l73>_kvT0G36Et?QWLnHIeoi`e6!)2Ir2u`y#8j7Y2vT= z3V!gt8=bju{#DPp*z_RNc*&g$XJ2)j%cI5CAa^d0_L$2P%mv)ad7^NSiM=h?EHejR zPYp8%UM0Y*r7}+0o*K}lS7K{xU_vIW^_H4rZA$ztFn_|nN#F>Ck;S_2FJ2^?;#1@pJX@LgXhyr)XTMf=Yw?dB% zo`i04FZ)1Z!R4AKam95*Y#i|pRo5WD!_a5pb&^*m*D(80_K-_MrL9|;kK2#5b%vO{ zehwcMzxf(yXBs^15OWisIr7rkwl{MOWIgLFYntup+nIOM|M_BT1M$@K!`UElRydJ8 znb^-4?999APyZ^mL&37ZU9;8Q*X*Yi#n!6=%OYS|ft-*CpKxFy<8#L#{deZoEGwh0 zyL_3?=@vOa$H(={tXlHXGbe^TGtGn0tHDZ(7E3YlxZhZ=(Zz?l$;d_-kw%#k8?U#kEj-1^OO_&PSl_8#o(V=w!to3VhGL zROTbsYr-sWW6jxOt4-ordG{>7+w)YyU(I z3g*?o9HY!p;<4Sca6=K~xJ4fF^x0oI9;+$eV>P#VM3+Cd2-}&gQ^r@n66nw~l>bsa z$A*@1m;G!b=LSWldaURa548m2tmJ#`dJoCy3CVMayGM4N1+7m0<2)ZW)d?bxiJi** z+a~$jcgvi=`OyWn{w?5sOGm2MNa0)88}kptlOBgxF_ye7WvV`%rtCL;joI?IC2su4x3k&0j*X}OYr$NJ9zHEBdE+d9Px~tNyC!ft2RR@gxvz~q!S{A9 zH2ZxKbRkk~rGbOOkI#{_For!JLFQ;c-iRW1gszsFDI>b^`dZdm)(4u74Nz*Pj4;+Q z#t3asWDTUfws`D%%x^Jt^&FGQ;MqCswToGwv!x~0X!Kl|_zW^}6LMoSa-+zGcAZM-lgO#icA*iEU8TKr5ncU4zSeDge{{yzwvT)oboMs- zX6tCY3>XY6JdhhbtbrVL}brYD|6VBY)X5L~Q zmAWJ4x2Q95{?__0!ed?A#$VNcan?fCs~hd@7QmO}^KcjmZ%s2g==9IAJ|bI)UK5##Y|C%anb_+)Wv`FEg}pu#nmCjF#rGlJ3-VqV`FpG8sUNJx z*C#>)qEE-Ke;FM{7ac~OojT5lgAR(!xC!26k0sLxS62pp`Qmx?e6QAD)%Mfy1LZ(> zn$ZDvtj30*rPYtow0dkz^?P&sD|}A-WZAm54DI=&(3lUL{3{_QJ1f8y*1-6uuKl;8 z0zNj0buEI&K_8mHH5q?ohD|G?%qNJwX$d&z!g{F-N7hQ#VK#A-?%!U(kNPTp18D17 ztzv?4_z<*}y)OJC#C)h<6Ob{vHqWMYWy&TopE1e3_}j$S7NXBEV~Q{~+3Qj0uh?5e ze;t1r-psl*0OKfYfb7`c?XUK8_IF3m{%9vmd#c?Y{SA`-pg(dZp1?`qrSd`;qYE>k zt0Q7ybdw9CnJ`6Ject!sM*PYB5Gt6Tz8>)CCjx$ojc! ztjCN|WQsS~W0yRmSjQ|?1LbvMbnogM`v}7w^R&-7=8tFeSjSI+Yn_bQ#W`RrFcvtv zuyx1$TV%fmB~!Eh@QJ9BKZP$yEj8f_!XJ`re@uR+!krn+cPwz4_}6gSN}o;B%dGRn zr--h789gP!nhI@eW-Kkh_Y`AjgGMU42<$F`mmh<>F02I3!atjUuh7a6bX3Ng<0Zx( z8&u;&Xx~_9;EXuyGBn`)^f+sFA8MstRctDYao)BG7d{xL}YegQj z>ew^%NsPKVggn2Yv;4kcYm1-ouGP$Vqi>adz4=lr2R!{;$+#nTmZ`jnURum0wPcv3p#- z(y?f-7+Fqyq%N+!E#r6gI&$B!667@*SIn5lH}RdsEI%ap!oBQ!gWqD;Z(yH`FJ0DG z&QlS6O5q7>{55dldiF)zY|YS+*K)Ls)`#E?!e7Ghm0!@`dn<&#lNW|RL->vGonX7o zhr;k3r=HCCw#VTI(0Ac!qVp=fWkrdS(b5@% z{Ov~ZLGa!=#yxtnE;TZ&vu)^8%sqXz$2!|u%z29al^-EUe*#ancaTd&?{e2e#kyv12Uf{INrsORR%eft$gx zPVBXuJyr3q?}dnoET_Mt$TlaCU)bX^HuTE=v27i5+7h0<4f|EoDsSKw>{rbruWY|+ zp$=*b_N!C$-%9_Yk32M5Gtm!sK8zjf!w$!eg?;EX>{!dO%j}c7!^n(b&P{e~S;!h* zqkn0aElY4O)|T}n;w)TSR+x4pN0I-_;q9wR1I;6$ag4(qgV?u5Vc&WozHikF%D&ZC z$qWxeTl&iRShjs@r)%GOSNH(-Ew^1|=ek1MLPMk$g3vj!K?t3boc2-UG|uzZ%^S-+ z=BwDe`f`r8vU$n8v3d12Z)`ZsJJWct#F;mCuh@BS!R|Ff<}LQ9M`i6kW8T=p#733# z#E?Dqo^k9_il?O1?g4+4O$wMrftlE(Lcmd-oj_iS?ENEasZ)(_?zNjPcGB6|=*EJV zl2Esv2axc-CYEXLcUo`$H@F zrT{vkbgfjwU~F;JTJu1IHbDbLJ{7$pI9Y7%auyY_W6H*Uv+=yZYclpbXml*RB*rPt z#S`|ltxv_*ioQIQF+JBmzN(3_HUq~a(2b@7<~vXeyxhF>gxk)8%(aOz%UtDr(f0eH zTl_A7m#vbsd70l{4gWEDSqB*B=GC?=eNe?psWF}v8{=$uO|gr)Z9fNJ+lpPRkv0`B zV;9@BQn!XNw#2>(Rfn-FHUr0``NQ@!vOd_%1JEV~bC)K#v>?oWi?H8Hft$b{8-ZHW z_&;lf3V->YcqsTev_fnE(2P!*AG#rOQc&mzaJBI;)fnfDS^Ac7!2IPeN;;WntDgk@I3}UI1^g0}bqfQ=(VP_i~-f zI~xTqd_U_29eIhmq0Ttk$M!SkXKRH$?E-sQYuBEl{IZq(yXng}K=0-65qM%`NkU+g z^r7%A#R${pOY7|X1DR82{y{1B3h1Nqg^2v1O)%bp#|2A!_k~>T^l=8;L_d5XL2ydw zaQI}2^)!4vdV86*k=O*;Z{YRu*gec1Irrjk$(Mt^25*nE(1Xl<)BaLDiyEsx=G%1U z=hoI3%DvPI7P;^m?#pQtAL8+Sv~m5Aj%g2G>o+Agw3vMMC_E+tUs3Z=vPMGfe?5gA z1HQD3_j3m)PIUckuK!Np9f5zH5_yGK47;XpDsqdhcmH~T_EIbBdzo15*Mx>=Xp7%L z7WwHj{&gqy^wx*CKZ9TKH_+SPT<1S=a;UZ#8|k#uia$y{fqu0YSYNjm_3ybCzLkIf z1)g=cO|*N-D@4v{FLmNGDpP&YH*|3I3$>4vr)vKl+N=JK4Y%?|{$6bDxk5ZNwQY&d zxUMrkBUGmuxw)EAOq@n2Q?q_L<3jadVoFLXCL()zlnx%u6rEJ_A>;M0K(?~uG)gZ^ zEc7Q6?Xk;v#xkBp=191+bKcbe6`zq@D)mqYc8kwwJP~I#y^kOFBzA>LZ=ea@*!Vtn z^SYr`BOUe`QU2cbMyNWQXQu-asL;LksdodtHX(*RW%*+e@7*@odqa0|~7wSU=mBtNdPTMOH}0_ZDSr;`frV#mWlbm$5;wH{$n_u{AF% z4YWx6$UHKiVaNxEp=EO3(P7TdOwbZUJ~*aiNOX$EcKDKtf%6h?oKPEP{BIvbM&Mg% zudyBa=(H(wnIb#BN2bo)o^x~kftA2|Zmt$+uY=YWXoY#KvG^pQm*`!@?Nr${IUAUF6j;i8=m=70 z(}*nf1|q;lop%=VO$B;IWNE3K^&W6x=fZ6;Fe$;eAuzGyq-0#)*3H8?YmqY%hCCzn zzBQv1KO3>hXJI$S{Qax}{R<7n-dGr7EkvJO#u-nQLB|%jQkv8kIzze?Rdp^u?TY<=){x81|E>yBR+8$^oN;k9XX|x-nfAJr6 z>B3UaRqS5wnYBs8VdW5ql|+s!{z$H8#HI~A7WTzgz_@$*3Qjm{p?n4SirQ$uZC#e{ zB0Qxhj=bf*dmcR(-qPDU`+B@%`w|8^wZO17ODr^XroRa-7 z>{-dNQ2UUY01f!|B1d#9NG!`tWRlaO55g-#iC#H-$_!0Jeneko@9dNq(*=S@N9?^R zJ~9{n%OMP*lhCS(>>c_}6C84W%f9(vo;93I^|^a+`W4!l?X)9!_@{gAHUtleO;xz) z(um3O{S{~gym5TkTWSeykoXh1m$TE((4I>#a@P>!3w%WGE@dzKU!ZRF$vb^zoKY(K zTh1GKl`+dc6`#j8nGdp=;J5gQs<;YW?@dN(ud!oToAwcBgnZEgd__hXaaZp$ll?yR z8}^|Su}52g?@{a+BFo4>6>sXzw)3}&kY~Ktb(3dWkWpHZXHFs4G}j~B9Er0U>yS-| zk5Telti+!S<9&OB}^9pr1yA+O>q zC05~0le|vWu@$^AlWj?3Uvj>TI3JdrOJ+u&g`3CAL297U;9sFyZgAt}p)| z=qc?;O%yx+(mp4AD|^KI#IQZW`^07_=i>Yt-SSy}&m>;WgM2UhMsxv3cT+OMo3s~U z{ltbFqTMs#P`FOF8o-5MzQ+nMS9i|{u1A@V=w5Q&3jHi*tV(8rehPl6_@yOI{1W@H zo%-Z<{E~Bprpa$Reksk@e4>o_L~N`zN`6o>-F)_ZGy7Y`F-iRr^ahD#5 z!Ij(Qx^w6uw{1mkYq`gPFLImP|0ZO$;jDMg6T|nsg3V8RxygV4N`ccTn}@n`?`C3`j!7TTyp2PMU2@8n@eso15wJ(IC5 z?3Xxt+Pvz&;Z>8++4&|6Y(=(m>0JtcQ+%5^2fYX1Zb07enj5_-+N`w z+;_@F!Y9EA*=rK}5zYrb*!IKF@kkxAd3lH7jVWH@&$Ay;mKR_=G?rf1=ULF5+|AKHV49&_dy8d=&+ZhC@t-8OZRo3IZlc?>wY z?Jkmbv7y*;r`_TAOQ+qoY)5XQ|G!Ia0xs9}L2hE)J>{ln-99A7V!hY82+!)tBc68O zSzl_k!Ml2UXGxEDl)U7(*Ieat8;hRam_K2PH)t;ZM za)G42m*jl4PPBRZSn_Dw)px=pf-Nqem2Qv@b@11 z*-hjJc4QEmaTWhFO`RB#P%APK&t<&$8rJsoHSGNWUqco9ksLtD6}5d0Ikgg_5nS~( z@(I6g%6XpAQsQIbgCgVFu(5M;Pu2M?f3aqqT1EaMbWp`uFT*c|pGgirlYh=(Mw; z?Ma*?ob#l{#UY`;w3CypovY$r+8c3wvAHaRv+DUxeW}29YI;=N zz*+TriaJ9>ax&b$e@)-+{W~%DN4S@{EBeS)_IT{?VX2xrr(OQOJ&W2As|EtML1sfu zf-m|3a9wjBXOY~`StQ>eFY{{7HyJ?QX%=~!_wf5(*8f>#B;uQT#1AcE&kOx&Y$9K- z6_{?IhBJM1=@~ib8U9`GZPs3*PW*%l>dqylQ;V(ewi5@*{-$Xlp8ejY1odn`@h(yWS$(V9-yYz-SiB2Y z`>o)r4AYjA$U|Vv?zm%dC-$4>l&|-A->zwA$4n-5!@1b+LVPFhbni>P?T)9h-!!iS zmet^VN~ZH|*BK7-otq~hdm(nbQrAJ`^Ahr^rKZER;Dzi<_n(r#OYQUR%p2IBrQOfB zi{J9S0QTR-cMvxd{}cQE;au)_+xIUF;(mXrZy)EcZ{$p}eVo4@4=oWC9-PAL8n z;+;Fl`|Tj_w~g(TA;B=3#fJA ztfRa~#~CHmi}I#YBlCqKqb#}N-LD_VCcF-K7O=NVvB6EM2!x9&0z>lUtfQ{+Mhj?n zvSvkrf3P~yoF(}U@Zmr1ReVO}kH-t2sS)`An|_UMAR8cq4>x`%Jg$Zu(&}58+horF zyUmR2uTkS%r^dO*jv-*KqLT-aUDUd9ezn+t<6pAj`xAuQ2mFJ-El*@}0S@={~n@pJQ(S@wd#4SnSxj z+54l*Hy`^q7rxIi27zhMHB|E)WzREojI+dnubd?g&)+Gwp5@39W$44hsM9Zg9yv>V zBRP9^T}T_&z4iCdr}ejcgo5jvpVD8SnEryC*?Fb@I@gjs^!S~mHCZmBf z!(O4!pzQmRz+z_CT0YftEk`ff%%MOKJ&Wfb5+mzjCJONToSuJzxw58(~-KrX+GW8CzvR9pfA)OB=<3x=(kon za#=U}?{&^MeL&>1?(|>e9yf3L`Yeg(!+x}lS^)D4d~wsL?HN-;!-IZ#+t)8v4?$;& z`z`rr#Jmfo~3N%ex}uc%Yl|efWLe*;C+KL5zeaxLQ5C zo>;=NPdcg_82_^ar<$vBrRLBm`Dv$BKP%)EWq}r;33|Njm4qN!Cdr~>~!`2*X9;m$EeSqJJI%g zMWE}a*Z2cxrlQBd`^4|6V>7uCn@M^?dKL95kB9Vhv6<|YSp7v}Gl7;>sC)|YzRJBu zU%_qq3PHEJwO4m1=lb;xnMiF5t~K_b>XvvL-4t2g?5e%& z9MLGzrk^}{#934fBI<4j`N*meCfX!W1Mwx;1O`(tb+p*OC&gu*9~s=IX5m2yyLqv z4oq?3hOO*$mAn4_U1wdmfdgZ}fiVdgRb#*b-IJkkK+dyxq!%2h65i|JK)3de+{yWn zcbOMIm_p2xW{$mEH^<-SQD=0J|E+L9%>^9jZ7wbjRJ(KO1qZHm=K>CN>)V|RI50-+ zXHSjUlg(NQ4k-Aqx&r)x{ZYw%dw}`|$aHO`Y7ZX!v^_Yd`yM?#v<6@VRra;oda| z_TGQHa}c<@{l>t&bKimc3g*FL-;39?=30*Uz87Tg|AN~8XZw&3JB)J<(C5zSerxQj z-+y=Anb$sg{rX>hwC;w}A91chE4HO+=klnB@qJyLqj#D;lG?2MZeuTfeTF<1G62;ul_gcMSD4b37Rfi{)9e|H;KSP^**Q2Wac;Aar@!n$3LK+xlKbhNbEuN4qq3@l2hJrJ%;7g=J_XSk zTdFGpr`A;jT9NTTgifCZ#%F{^5Gx~oAUE$y`~Xpj2SWgCFbNWa zDecOb)VcRR|B`VBI@pWINEhhm>%gytb%3W?r&tU9P^p52eD_E@zLZ74CZ!+s_S4V} z^+0&do!BPsf=|nNuzk2s;l8gKMxHFeegwZ+`)z2=X>@@I?a!X28M#U)`=a7Gi;%fa z@4b^T-^G}xm@_aUesQX~revCF+|_-(f<4x2^}$5LZ9fJ1W#OGk#>1@DVESqTCe)7ZFSvS& z^=e_QmcMJSRl?u6PRMLOrw*M}>a3Uewj%C&akhQzdU;u|P?dw<>!+A9j?ik($Xy$6 zMt_*_sq6JfZ|fBtZG;k^*%iA7Kl;(%v0m(}Q|zzS&$(X5^K2N(dNq0b*S62fk-91i z+H-SM+{~5)ZFiLYbqn%gLz&WP*Ukbi6~HCv_gjmpagROSjQBNc1Z^No1)w(pmu3Xs z08YSWIC$$xg?6MD8KtQlj-(~!zTI!tLf?ra}2gu1`^g)qT8`z8ch%wqu{NF_U$*!KWT54D( z`mJ~V9Akg3lbY%2tu35u_(|H;oiTb+3y%HeQ)fsl)T}sUZHbAmaB?%F&r+)`-CwA~ z^P=e9;$w7b0M<$kz%cf%&KiK!Tat5HXTvWVy`?^>4b$QL-iG{FKz_CO*6kR-+b@fa zN8at*S;{^r_{Z=?FN#y%uDz5EzYGum! z@E@AUcGRCSr2eW$a_kw4Z68c_<$NV$d~G5!9(_A>-DU&-5qm zJds1(vGh7mndmiP!;vx8NxL)U^_)eQ5%4 zo(P<6e`+V3#h?1L^zZmnrC%4en}%!FVC2razMiTQ{Hgor58g8mf2!1vjK!fXJ#hAa zz}W_1i!K}p(O$gN!;`uYJ#a6GzA9~{LsJCjWdDRpHJ@7p_!s14%03E}`gvAt-r(4c zW9`LnW9RK@FV-u{e9PfCIyhX6?i1XB55=ipYW#wApFux6@INQrk6qfo>q|FXu9n|L z{%e$9DUyx;i!F(|rob_$HdFWw*H{}(FpD~Eg9p{1qHeHo3v4N_-W#c@iDwb4%$9y2_;jn^KSYr%Dqa} zRFpmX@_yYQp7Quf;)u}crd{;ve^onX2e1_12mC3p>XVM~jm(9buE;L8AP?H()13Lr zcofbvwiaLuy+og!V1!p8$3%$Bs7f{el$Q#`=O&7fQR=IX*^TvKB5a z5A%27kC7bvoSGoNk2}9P_uY!a57jW*p661TXQIrLS~%p$b;1oAFS)ejZ;V@Ypa02u z@G`OWrVD=LYR6x`)_-E(5N+{%_*xLVqWI}f-e#W>DX~@w@_Ux^8(t-!TV`{pHR zjxmoC<{@L>ltfG{`yx~zbTX$_>?yLJbDx-XS@7i`6IjAB$J>%52*8ZQy3(Q-Z>$1!ZF2OzIY27EI(!^U=EX;aK!g z{M`-nkg3u*<9wuUwG%^UNchM%)GW zp%kvur43sK`&BwJ61JuYJX!Lr1*Qk6Rhakm7~@Cp;2%k({wlOMGF1zdVJ~bzw(98U zgRL-y|9#B|sMQpm;q?U*Q$&{7`2cpJDD+qM`YiVPt;iCaSc8+`5xN!Qv3VPIqMc%= z@Q;VL(TB(odwb;5y-D0arwqZqiA?ne8m6$m$P7cV54{{0U-dGv@siIk-%33`WZ!Y2 zOPa_GJC%*1#$$MamDFjMxwvga*MAk8?d{lX?=Xi_SGpiqrzVugyagHI0pztA8=dhZ zBlI?YWCO;ZX{5X3M>gm-eq@7xbH^{TLG1XE1%`@E=!v0wZh~!hQA7r+ak5CkpnJ{16Jp4IUu&L8svbdq%VoNC$7q!qsRc#PeNbdgbd)FKXlI_ zWPnI^u{DRj!bSMDRQ~Z0@Xb?e(tfawebrxll=;TbcY}NFyrXnq&RpUo0sG}DFsv(SWR*?-ezERuIeES9Y8*4v0@L%zJgTExa0J;uIM{Ej&`&5ZLkO|J+v z&#T}JpE!vlDQpH;Tfp1qZQ$B;@NPz&uVbX=$-VH^S#GS}9d^!`;FiG3wm*(CY6Vt; zS9g%x8G~0_%E+gc@kzd78F6dQJQ{CDcBKDJw|T7L!6#27W$5)u2XyMiBq`jIn7voP zt&6P+x6W$BLfLiRJ;p-h61N@c({1ZwEAb6I=KKq1&cU(87O@7qWiIpK6)oO`5tAh6 zG*_Een3`Oll#yJYtoZ{i-oo1C2iUK~#Ps(5;GACGU!Vn=*()vVl~Zkg>$ag(@F5J*#OlG9fxq1p160Ja9NEp?+&dLcQRI*m~|1T_X~M>(Hq% zYj@%2wmcl2;SV%MkQFw36+is#=ofdGb(}T+7H5sW!&&1ES?Prl)_(TGC04i;IY8-v zgN){7;09wx2J}UctC8CRk<9eM*zt@1g*|IEFo(!G=D;3kVErPQ*AzxrL#Z7c$;`If zm-G8N+t-a_v@hqA$~;tj?>WwNJPChXs0Lb}X-Ago^Eq z9b@zZdyEqqqudW=jPb--N=-YvZ6x8910rPugp z>u3FKdFQ`HKO4|Z-U+RtCKoY>P20TIsn@;MhkL!m%n#^B*UvIWwf?KTR`OfL7PZuN zkJgbwTYTjT5-ko!K z;WOs410359t`S4qHJ7XH*!GBhJzI1273cCs>|BsTd(P!YSD4H4o^xT(yc)+`{_`K0 z%Qogx!(52Z@0?4%GnaB_F8sdIx~z*m$jg`WeyhlhA!atZq10-uDFx3*2e;CiXm`bH`EUJBlpg1_WL zZD(Jx?jdB}FgPgd`y%z3BhbAz)-Y6$4nQ76Zan#vsm11yt4qvb*Od|jnZ=$Q2+tTq zOyo6YZk}J!*7oxL_8QkX*NA<+P@3Ki7jxYGRpqf%z1I}3yc4YUSoe)$&#&`f+q>Tk z)+`SYTM`IDYb0i-6L;z7Tg#!Z8=$XZ=UERO_G_1etEQXbBYtai&gJTM&e)SZBkjn& z)ctR-Ob|Qs0+9iuJd^WOR1NETZVc^VR&7*3SH9hTFf1Bp5Z~F7<=kv70Dwp5b z`jgb*i?99NVAdL#ej1KOX}=NNZU9GhJ)RoTx;lF%N`GQgvfE4Q9Ooa#z)ShYZByz~ zNSX|qz@~kpoyRTftz>xCyP5O2T6Pv&*Rzhp3pBIiZt67eA%CdC zK6@*a0v^?|XPC#9Kj1&y3%*qmyIf!F^JDK2*&=wvzL)xx)G6{cwCcVvGDtA%8zwb* zId}LfV>ahkffITpHr`C*y8`!Zj2oIFHu4ZT66|fo z2by_bONy@wBNq>0?@Rtfa)?H(Uo9KJZ3{&kf<}n-H`$5)ZrtCBNj!NI; zSw&ReqJx8*&e_K^>08>0(w53UCr3m0Pb2RJ`KCO{Td(oIhW_Wod8@oK2Fc?<&g>jR z=Cx+SKF-g8*9Xgq?_z!Bnj24D7U1zLdhW}Iihb;-38lQ#;Z5>M%&qXvec+_$9{e8Q ziqz@*`M|{W7vUGInL5{5^e%8~ElX$XT&#UR!#yg#Y6E zwrfRo#i|b`{whb0Yh8dHW&!t7TT5uCz~=BQkCBINJ_&p9uUQ|VfsLJbozShO_)ur; zZ-UqOugMRaZgQAO|I@h_s|7}`%pPHk@w6@1xlfc>|3aO2(Q{`#;Zgfv)szHYBCp68 zkaL|{UJ0%52<@7oSq+_Ii0d|nIA;v2+`UyZ!yL^RI;u2l?hmQG$aOY-%9&2^8DxB) zVLolw?2>vp%LUe~v*_u;y*gtM`sm-~;{Sh>7arY!+6`PQW0hmG8^T^+iHn$*wiYI*ZQwfs%x306A(FyP#=EQ@ob2J(N9 zog26`!53VWCHAYeDj)C&V-Wk5>eM%1C5M{3#vZp=MqvV1u_-R&x_Z!*Q0xSH`W(}}$Wyy}8(cV#hA;&B4~OaokswU3mqx-HTm$W7$^%rSSb6@PmAv&N{7|iSaBKKf`)0 zkjGX0)e@U2F`t`bVm>!_i}_r(YaqB?3E!U0|IKd^FA2>FgKJmud^5424e+xq5R(mk zZCktiP3*`e>Duv8FTQ_7YVG$lNtg{ z!%ZIYmF=2^gV}50C0=XrMy`*e^MG3saI3v8TV%AtFmh^`T>mh#Y6Mxey?mgO-NMMM z5oFf(8vFNPu_H{TokzLe&UF;mkz8-&I+`ozD230{FY74dXg{yoHwVieFYsDLLCGs- zd~^9d#Y^t(HEJH>^HR^T%Y}=09vP&bQ%l1t5u0OsLSQidr|?+%*!cf=dl&eq$}^Au zOeR;twL!6kHVNStQK@q4$hJ%f7ZEM(LQ8kuE@04rw6ZSkf=k;ZCP*u`a*A%crCY#= zIH9en_gVM9fLJd}R}rncwY$tUlMuX6yf9kL|NDE-Ig`l{Y~B6$&*#G@=gc|hy*&5# zd7tNb`8$)g4xHK#on{{VeXEtqH_tj|q%D z0xarj?`8h3B{%CZl@b!GZ-#2vaLH4)0kTt3Mu`6oxl@C{)D<4;G`qSm(KTH`|KDHqr-y>$h_BQ<9gt2)U~d_F3>}cVA6|!U{*5_DnD0-4%^u>MQhd{kP8xE!cj-OjI7f>7 zzss90w99>ida!+#s-E#d^qI~NO)|Gh$zz*8VS_axi2X$DDK6@iIrTm;RSa2R~R?G>NOsXXgY!vxF=aK*O zaq@pY!TmDszry`rasSu!S8QnZy*f9qvCTQlPI->XYutUh$k>4KqLM)NSOnvh;w#4B z_1{JRu7A$t-}~i9+J`MI+n;`difzC@_uCHanSJEN@*8U`=BmE=+orzx8&}^!&e)?C z>3KfplE+;9p*z8!Y9dr)N9Vy`g1d>s!#|s_r>-o<|*$Y|@jF&)@DQxMuFK{+{ zqr{bAkE83^6H0sbaMOQf*~0NGTR7Ec3nOzMP@akG3;jKiPuvbPkX#~Ls-S0~&b5Ia z2D0;t+3$}Z!On59Gh?9LMwd_ zFyeq)WAl06%71*Xe#53ytXz*`fROM1#b4d0-22~{znlYy9e0%L_(Wg&n$=@ZNALrE zUgKl^5?v3?*E7b6@Y*{5vpytNAVe;^t=eaI5>Jzyif(Pdwr1VXTg+M1*j_>6d&cU# zGV=Vj?tag$T@dF!ir$H!qlOBmCZ130N6&VW538vC`iqbcQ{k@$`i8bx|1eJS!dOqG z>aqRT)1THT@b{|Wd0TJBewxD`n(Pnb-%R&TTebS?(_QSTkB8@;7Cc(vv%Nm%!?(s> zbK2C}_TT?YIkeV}uuiK6e^H-X<@17C;3=ty9i!B-pO2X?9L z;0wO&-Uq&r)gHbK?D0o`?*D+dH#ploj!)IYTeI-?Jb2p#-qr!TDIbEjE#Peycms}S z;O&r$H~(BR_l8C-6Cr4s}f&!#d)VtRp@ZdhI>N&3?hczd-I4eZ~0v67pk| zU&VWW!+T%ly}#wXVES}=fc)P>PQ1;UD->@tqA%VC85dt?g`wwg{ZO_3`C9A&_R{3nx@q)Vt$F0|II;6XLI=o+w5DBTHxUc3ydlX?ofnsX8*#hH z%>Hrl$))1*>+PPg)P;!t`YmtA_rZu5@(68t_6>48^d>;OB_7? zIPoTnPn&oX#+rQ}MK1aCuMFk21dWUx`FUyt%!USM0XyVMesI^(24FRbSf&QccTzEC z4HfKfpfeiK9S4C`obkut@dP!BH_SfGFv$tz<>f+!<`#6Fhv>q@q?k?QN=fFIoe1%UB zvJd9KeD4oFBFuqjH}E_T?Eh%2G&wV=oi%}*2Y|ic=i`j)e(>5=W>3((tvM$zLpL`x z22WOMoexY`5o4I7-%k47OPpWoTfyzU#1K6NTouo;9DQEQ^<`Gk;mh#T#_-*?5HIjC zw>{!7Ogm%A*T@GJEk7D-mzrmDGkCib831lNT3#r$^Ldt6A$;fcWbo?YZtfKO55Qft z5FMX0hrcVc-{M)G?|}Js5;^tbEM4dK+ygH2th@TPd9^d1BQ2AP?UdVQO_hW5Y<&Lm z6a9Gzd}6EOTO8D%ho*j1e0~HTdiwWSZU4pJq4a%#k+VupS?3 zA1v%Y$9KQ~XQWwhoZ3+n_^$!xDq2{1?wPo`JZIdE!p*Ipv6~9|kNejjb=)5TH(woK zypkK)G*ofsIPv3-wtYF{yz|dE&Zz^8GtW9`c%m4d&o6d(#pAg-kbszaU)xuSUc%8+4P4$p3Rq~p~&o@iLdxozuyOkpotD^@HD$d zu#V@U^Jp8Lx8TnR>z7BK$*+0nd%rHncq#0$r1l0_cdE~+IcEBt{P=m z=Cs-PA#HxjozGq9&jQWoD--RHd%w}nJY>e6ji0j>Tc9z__2&4%G@WDVzyf-?M)SU) z#8!N_dC&Q6+n$y&w*1ZdO=~vbxNXmoGP{r*s3*yR+RI*Abg(tE5S#fJzUwCRpRs$d zlHIGE(E{L?-+m}(t_L*N1D~}kWrt_--1q{XE#jUr7@c9} z;nX3B;FF1B_igJpm!YA^Vtz;7-O}&(VIfO%yysH83EU`m!IO1^{||HQS;jhe0XeUW zWSgJG)_3Ro5Addm<7&=#;<$>KqsfQKBOWo2T$N9?pZtv0S7u&;*llz8eNLzXKZ}+1 z&xyZs`0;z6Qv6kaejE=S>}M^cb-;esO6;#L)xD21x&7#i(Yq#?oIv?&d?TpW(~!?T zR{{SEL(SMU@u^n24OrEk7;8s{6@-FrJ)(aNozh-nhhhl*@=_}F!5&> z*ni{9Wt)lJ)Lifx`HAPwqjr3izYhm1Oq|Ok`wN=ahO^_KfSk)c|5j|@T!oDK5jn2t zd~-gpgOhD7;AAOdR&A9S{C5?&$)=Is266@A*V^H8@r&n&YN;tQ@4Pu&lPf#A(BK%q zTp(V`|FXIKHV;~u4=pU06VRZ^gHWoQReq8{og1;-zaM&3X2fIdF}YGY89lG4{$?HN9%*>vE+rYrx30pFC;z_JU39Et%3S%4dm1#2NI9w1@4la{M1GE9`bY( zt;M0y%0t4>s5}zwajqgxWdeJgip9`b_c6r>7&}*S7EZ3nD)vaU-~Qkv{C4!~?zeBt z#0aq8ektb>m>2=}+hfF8$7jML;K!V=gN)XA$CEd*Co6AcGx0IVJf|Iak6Ki2y;q&7 zp#JmhZ-`FZ?=$V9e>%%A!#B1N-`M5UpR+>u5C`5)9Qb(hM+(UAoVBae?B7fze}ue0 z@;VCLxk*PW4#dgr$aia9e8-!cvnQXKo6b}4Yi`QzP#%dpH^u1~x^u@ifjxS1JD%Im zxk`D1EyZ#hnS%djS`|3_{cNX=ifQss5`)5Tb@{>Sa%{!?7wQ8ooWC&I#fRD!F7l9n zQR3y5ukm0%kgK7MHbKH?1k~) z`p)x=*`7;Ii{x&0PM2(;>wuY)w_MO(&$Z?mfgi*N!(2Y#92z&j>qF@OGyUoRjlCa@ z{#hq>w7h(wJx_j~|0DgsHSz59|Bu42Vr2e5rvC?!rT>4>|G#^48-V_6UE2L$(?2-8 z#H0Vuxb)9&e-8Tp!ry;1`d^wx%5CE{g;^aUv-=E8%z7G z|04D5|E@*utRr@Cy)T{IL|kRF@)`#R66|S|pr@*Rs~_rY@TJ#G3Wkn1Tj?I`B4_`o zoLVvLPZ4)rP5s(#>b2_qkagb7n~JOlF6Xz)`K`LBVg_-z4|Jn5o+eL5{OiTiDOM-R z|IdA!{g0|E0;?2jS5Hpa1(yf#+s@o^2{vm3@*NovYiJCw;JkB-dNcB^=)FVuul3H# zE!Ya)bLwlq8PD$*ANT?=(q6IgYtJkUbnCnkcNJGkEXM8BKBpEt`Ak;2Ydx{$)xnVL1}Dd()T|AvYkc;r4Kx7tdGWi9C!Z}(|rmd2x6$X{blw>FKj8+?O%ny~wOYRP5c+rz+cEA@-MJ|YBop}D3u zuHHY$y25+*Lgrbyc~+VAO!b4!d(_I+cf|Q+zI(!Z<|F@tXRIeO&-Q1YIsMgSJ$uA^ z*5rJ*8=Jrz%P+lW%E{ua4^wbs@>x@V*Z z;|R8IbPF~mI&T&GtBQB2;CblNCXeMo-H+j3bl!`t-p21b*EP=dZs|g7b59pud4nSh zw09CGhAF{*&Q8lZ8Nn`&iXO?`6-|pyMQ?`Ipc!v0-Nud#-ggCiJlKabL`$V5?1i*h z?9q-4bvM_f&-Vob$7dA=%HMZr@jBK-w?K=7e8Kd|&%V`qzTZlh`>gbApA|ShWof8~ zalgtO?qLod@2rAOTHqPt?9vJLp1X)!C?+?tgtpxL z_&KY;dWlVZY`Xh4;I_7g7!NDZXwIbjv_1ZAbO*5xvPBf58f9E&O$qN2=Xk`TR`VFy zlT&M)TIxAG`E{2k&04APLVE=5$tU20x1zvKxnW-0yNUHn0Mq0SY%|&uj>F7fzp3WG z_xt!A)Z=F_I-mH5C@}X?8$Yp@eKyX4@dd%TV9{7^=bz^fMZimp{n$9`i-+nzXpJ;L z7n{hJAO?ZB9qi#^`@|md1Cc+#B%RpQ7|wUclsPYnn1mSn+oCm_@kHJGN@{jQh#&E3 z9PDX&XD01Z+!8*u7io7TW2t04W9F-|x^2684bx*2&3ObPH_)!G$1=}ImCu}e5AKtyTybPTWB7zOlsTRuo&I zUsDJ4P2^T~jJ4mz*K6f9>Hk2+y;c`Y|0l7t+4L^?IuOl^mV26m8QS0PEA45g-uqkR zoV-b$%X5aU1Nji8n)n@0QV;EeXX1Kjz8o* z=4)be;_hGK(sb|Szz+(%cc?`58@0yiSowSn{vV%{2TvTK^5BX0W{ukbL;WfjegbP6@0>Uv`;^}I*RrOGQgdKM zCKtZM4r0HWJZ}2RZbx%dZKC&>+v$0ono%Z(>CZ2@bW zgJx~x%_*~{VNPZCLT^skbl#Y5Mh2*E&NIXsm^pd5@!4}?Ekm6i^5Z8wGJk1J`oK@- zhMponK1yHZ#9|75oujZxOb!J(-)?^Vh3anDj>SZt3;wkh^2y&H$M|_)G4R>rSB&RP8o$bZ_R0f&F`+lM&((~-qL+XmvFdvDI-AJ&hiZbb9{jeq93 z{IlQ9A#h+2ybs@i;h$d!c4y(AsUEFqZ6yBDx)fP6P#p=uJyS;_hj(s}{uzxt7w@=j z2+t-?6TUHVn(&R{H2*g>CGZ6pzS-o>WdOdhyt#OM z)Z>{I>gy~#lbn^sGj2b`G<+z(OcKBFZVdPi#4qnLe#0;5Gx5vSI;Y;{m#bBq4q9A6 zyzVvdi`Mu1S@Yj%_(f|1=R7HoUoQR-etAe^clpKZLpe{{Cz3u~1<$m=GcCpWTU!jz zO!yN!B??mJ6rY#s5j z@u_3qB!@Y6(uL53uE%53;G+Z1_-pAqxmXp`W&8w?VH(MoJSGsdqgDmf+w!<1=(t9biP2S>GXqTX^_d{G_6n zYw?pNMt!n6+P60B&{?%leBJdExqay!*$46E@{>|WB@0Yb|I8qAS-R~5e zrm-EzHoF|($b0xpuVZXIjIBX=E96)$x^e9zKf_)T)HI#z`xFfNq*eAJ$@Ege;Zg64?vy`bpI^%FkE}-9^gkjHn9T1u;hOfoa_AC z1T-VtCy)I2W@PRh&TM!1ZH!$DEqZ!)Gxp&;XnekCocysMeCpt4mTjx;b&P%enKa({ ztV83|_)gaopmF>z=}u_lAaE5PMJvm(AH=(&7x@KLzpE4cN4U@MY~v*R$K)<|0w2lJ zNKs9CBD|T(FWQ<~VLj*3-s;s8PuE*TTRUAI_4Xq=8UMK&KmOPVr&G$vb=R12h{`Om#e}p-G*ZeJR zznQ<{qX>Iosu7u(OdX!le)bCSH&l_2f?vLxJY*B6LcPeuWaP@|TAmYkP*oFnkr-x+ zf6o56Q;)6s3GI*fug4a}){SB3NJqpQ&@JykqrfQ!{VoP-1t>5s4d_d-`+qmDYbx_`Z zJ$&>Gey-Qq+Yt=A{lmd&88{sYPS0(RonoH&NM5U@HUvEWYMn1|qTUzyG(6dB4ez-V zznSs{;?Ux8)p0GfPF}!X#~^&1-In#BZ17%i-NQOHg?u~Cf8{v}#!>q6_LB_lz|Y4k z(K*ns)``h?z$bFL>o(+aeNEuix|+aiwVb)I+=-`s1A0n9SI4Qx8bLq8zvTV}({G@| zOMc&{lUA;&KE1|QvbAc2qhD`8C!K^}FUGDp$=Lr2nt6k7$JSD71zk6`09)~L>w%u< zt#tM9VAx*zlcUf5Zr|@``$nw23_s@7VLv^3s&_Z{Wor)-`)zCp-+1z5N_tjaW-VRv zg<$AQFV}o_#?G<^-bj7i-p1Pu{`A7 z1J=?P2c3KP!H=DL_@RHLw(cd?4fg=gV`H8AiBbPQ+;=YUJ2t_)|E9?gJ$636I^K)= zH=2B#V>7(x>z#UxmwNYq@6=55< z;Ok3Af`Km&Zw&7*Bwpk7-ldD^U$F4in7MaUH#u`}3c7R8dOt|qJn-qL20p-`LoldE zuAKV(kB**t{bz#Vb zdY%`31=HSKJh~MBz)Ky^;NR_%?1dgLWDJ7qVBqDo;eDrmW`1;cM8Z#z1Dn9j#LXYE07#+tX|a?W{c$RpoET@#h%T=Q?5?tAyjxY1{_$Ar zLBX=J(t2PbvS<>rrwiHBYZb4>C%Ckpd8IfjLOFVsBRNx%KKvpdlQ^Uih-%XcTZ>-sZebHd-Ep+=t?5*;4 z&JP_~FoJLST`@X3FL2wk-qsX-cimMJGBnmSrC;u?IV)-hI7J?)rsq|%McE%8UqIe5 zYvspowU*vhT!0Ole|QzOT6cchk$XEU9J!Tn<=#$ew628K6MjeT?VRMuy@V_Gc24u2 zJ92O5XS{ny?(LlG$i0Ls_mqRv{jimu2mE(h1xEJOeIw!Y z)g;+f?CU*@o^k0)xW4fcYUYW}e|Kjv9rOp&)c1KY1J`$Cr%{iF_OPAW<=5A@ z!iVz7b^+7u{?wlF+0$l)$+h*{y*rUtylZ%a?>yefte5CR>!sbq2}HRz>m{uh8T;5< zYeJQbpBRg@5B?BOx!+B@gZJexkMt13MU9~W$KP|7@k0ZwV_9>Jx7RTTGvCH>CRS@T zGQAj?4y{f;NSwL%Otjj>{Xn!@lS8Y&p-unysGZAtE8dE{P@O$%gz-V_E5}w?gq_nG zWbLH$BC!4WUpD}Kc72%~;5J|Z4Hmh0jewsVI3tT@+k1d>3OKVDgT2`pE^=j1J$6IA z_8nX}FE|UF1w+BtUB^%REbo~;j+B)a{DlYM;N7-9I_cxFadt9=-2;8F|C52IM@OO; z!Oh9P)4Io*^KkE7@Nl+wig?GPOJiegz{a92@$cKzc`@sGeiN;WFC6*i)P+$Eihgns z_y`U$@P9Tr=-_IIU4!kTvv`ZnWo^R#WO6%pE$itNxX`|Z;+-@G$rC3|tl_?I313fw zuR~|zE5m0`2Ga}RGvP6XPF4+o)DrB~=g|=h@C9QpIyIg8=Au1*?X#X(7fj#EUUv4o zDb_JgJsd}8Xid<$AD_Xaf(Nm2OQ4DQryo|XWpW>5zt^IF>%kMRUlth5{=#wgIvpRD zVw_}mQ!@}AcVe;{?pvTa?PpGp_Mem5HFXB|F$cz#JtnXJ6RhKIEf~CYh;Q)Lp=-W& z`tx7lyx_g?>|)kawAV?yF?`m~YEQj@b=P4ly$!qd2zG0)Z}{4->DJPV(H$qHJFwjj zQmA8W%hp8R(;Er+525v^(|Ls?{{t0xBQOG z-tXF~Z}}aWz2CJ}-*RR4Ta4+&Z&QCM&#_f+$5wrz=)4)d=+z6c1#iUY?1Cp~uTOW+5bM!{{ij1Yc=hg{rW2C=bwg^eqZ>X!42`ZQBJYdP4JpPiot;7^6(gI9T;1Tx zx@kjsznXVTkZI~OcUrn}97?7J*(bHES@txw zy}*Hoe95kF)sxB7liMA5yr??ZTzkINPT+B9TTN&Sz8B6hIZ1rXQmtFN_^-GO#Tmro z&?j= zk$?Gc`topf(?`J7yY%PjBgK!Kb-^hs?cwl{`a~b)t_3`MN4iV)&Nadz*B%a&;IIuG zHi5(0E)E^vDm9q1aF~m~!=LQKU)04LGS%!)%?EFt{=&mgfVU?M-U>5#)Bet`p?$c! zgK>*jM001uT^!scT-*g1zjt3n4GTZ?%|2b)5AN9WP3Ln4TAVqp0(be~t`6M!!JT5{ z{owB1edNNR2m97JoSTSF^!he31euvDKQ;jihZl?O)dSKgH8|tE*iQZARBH{f8DV1wcpldlg4cK(m zBLDCObdldxOsrJbdhV$~6g@~C*`@3P;0cOo(Vyet0fk--uVHJj2HBQE&ujn4tYK+eF|S^`$IZL?W>EVH-Z#G8tFV=qp#z__ z%pOKN>;IcqU;UY5fAHP#HFWC&WVB?m`rrD&n`XZ;(aO4H88#2&RXw1{v&gnZ=+t${ zk=~t0IkRZ(t*jIG@NENoy^rDR>LlLDv9r}b@le2}g>~YW#}G?Ld!5unko~5$hUTR9 zsHyZ^;l@cDUu3LL1cT4*DYopVzIFNb;_<;BJ~1x%!xC%9QPuA+Y20yig0GNTx#Skm zZx{Y6?V0uUM}D%~-=$uE+TWr-xYRAol?uU`236T`IpuNItHlUqWq(7_Uu0x_VG;Z7UhOTXItTTSqX6od4bL?d4bf{ zynrW*f3X7?FTfwd-rhKTz0wi+&idZd57WK~jH{3*k*WAY(8bNfi`HRl>I`rHHgxgq z#;_l`QZ+p2oJTUzO0OW6%ZrWJOg)jv6#OXAnE2lC`V{>o_QCDTjkBC~4SQ|@`m1Em z5Z#teGPb*2+a)$p{`kC}HKOmyRysjHPCcvq_Ejc!Y=Zq$`bzL#=Vags-ebHItpYE+ zKOXvqzn)9^i>Sxkuswy{vXXs2Z>&ySN@4pAgN^Odp}5d%flrM2xwebZ%dXwoq5Zba z$l&-?WEB0$?i|F}z59&q!g!4BQsvq%%;^l9WpO{71-f%=7AGHO!RZ5j&NwP!E@kL8 z?YoTvHiw|GC!w*!PF~m|(NYnzp^WvL_TEOp--n>3C!wXo!N3OSS9@>zXZGLRe6fX< z{qx0S>&1{Q2g^AN3p+Hvj6RWDx&GFb(3;^VWT1RlHRQQo#$HG9r>yCbdVGk`(*k0E z9A6acHtjRQM+^Uwb>(d4G7EhTZ^yxJ5}u9JGxlYS9Xn3%&DML1cy9r;GrP~XAv%mL zLEbPX(Uj-&5RFBVt+B;c*w}H6e*5hoz*jYxr?*okGdBzfDEXIytEUv%O$Tals^iIZ-a>uff zv3U0r%B@f#ywJ%w3gNR(#!<-n<=qYJuftDHyhvl%u`kBMmzMFjh&K+PSKo!+^q#q% z)pwnpYvuVSInQ$PO8grJugFQ`n`E#5GWMD-8)i*E8%|&NBDksr{xexKXZsU9_<$Er z=GY&ClX~F<7)Z8H6+XDuI#+94;YNO2*PocNpQ?G!*iVad{E4*#;3;by>plb@D}@ht z93zAau1ze0@W42p+*K1QcI{BrBVUcdR>XV8kAQvm1oSLiWpD(4$DnP4Bj9=lj%E&w zmtUQ{_2|4cyMMpmDwn0ETgJESEouqSOSlg1zX@zT$54Fe%)n}Z2v32_@{2}s%#_P~o&~ZQC)H-OL z^^4@gXFPgCj`X89WJ(mijV%ZE;NO!CvT+jlJ)}=Ez9riG`~~b)%;f#6kSEYjQ2r9m zsOkD=-;W_?Z+2d zw@cnFgpMkF9-Uli^pQFH=us<7f9S=}*?K?OOzt?}Ciy)HERuEjri!U4t$pM+Y7l?m zrBQm6*?=!CY-`w+Kf)N(lyeP6Z`P}HDDX9a%J<>jBMWKt@mBHj~ps|gM$pd z(fgahbqhGp2j2w_zPEY!&hzjMpBj8mq~9rxVeoy#!}kc`oAJgNr{t$2CyVU`!Z%|w z_-0HlzD?ULl9P-h244%`C#VJP-5cFC#g&=h+{;Oc7@O>3`(oPN?d>g>J9CcB%=iV& zoTZQA&`4s6)BX#z@7-5Mm#}Tb3A^0iPw|sce~1Guf3H%fJ_Omn~;f(0nJlL4Js{ zecw&rDb|@?tScUq{DC&ic~p$q!_iYeLjG{RdlCEp89B5pBZszm_KVpoS?u6wt#AZS zOCDu##Q23H$$#PJU2rNJTzHBxe-BqH%=+7_ap>^ohr#US#lTFwmm`1AHs?3bcVH%X z#ekb^5>GaNRG57en3;J3k0kR@p1b_ZMwSYv@Wn2lBe%Rhv<7zQ(Um*vfSFbmt1@yi20Z#|95{0}ag?Ls&n&qZo^YmI+?cg?J7fK3=%xSp z$XdU}oBe@Y8>{mo>vn9<2esA`{qGU|!;`)HtZ?uBc>$x#gH^WbJsCaD@5$!cK$2%k zcqR!QX7qV;o_)PJ6UyTS_blE4dBJ&hR@;v8c(&ca&%5$?AlZ^@!|~mJS0h`XaoK#5 zqy6MDW9}!92lzf)9{;T?+htS4ut7cASOsmQfJ2ewF|=#!LS%#+3(+T!7enjNyJ(|G zwBg=oXoLQZJchoEJcf=k@))~mV0rAqHCv7}J8S;Wi&lz&9egiY5^oL$Zgk~|?4=Uo zGe68;ien4KW&=0iC%Y*!5xmbrua-J%tvGTehHWyZRJ?43=S&R-V*9OtVm4TNWZ*Lf z`0VyTVnPz`fy5WRu~~sV;wF`}nf>(=Yzq9}F1&oapv3 zyRVN7e`eV&chkoib_?SgkUwW;^XJ*^mgmS%%(YwY8i+q@9eLi(disN5qcZXw{U`gx z*v6g6b7(f4TEw~@`J4m>=6oM`$i!Hn*RAKQy_49YIZ_%NB3uE8)?OSZ~_AM6i-B`X6 z?`hxSU2vQ6e=shMNn>-yHO=16xFiGROCtt`oaoGchOs$!dp0LyNg~4;_sC0K{8iCU z!u@?*tGg%2oD459N8^V?uKU@~h)`%V3gr!Q9h#e#nIHzaGXu~t7ck23_6uVBVgA>Xvt;KDI$ z?e`i&z0C!tw#1%@&nEBWxnsm|=v=9{SUYjnc)$GVJCHBR!Q1;8{6@E-v+L#tdZ}|( z$+;f-?p10>kQ`@uz>6;|KPswdQ#hyS7Pd@C;wUbNu#n;;%N0bWz!@Hld{8-36P z{l&LiX|+A10w1jCwbe=wG`8#AvF&4QJ&dh~u{E4y-OxyU_*TUdSfwWaSNhP&nQ-zM z=bAjwY4!!gMkQO3-Oxc7bk)6ty)5LdawcS#8hh{IAoD^l?I+(ndgJrA4kDDvF0=J7JX;FzKUFlWVIFF3;nr$rxxY(k34^C z-gfv5Pt%hY`vY#+S?8HRj{LCfx*MrMtvoG#(u zo7A<}wfHg822aWkVUCrJ$i7A^fRCa>K8pQn3)qeEVqj)ge{3pO{QWnfSc#Q>KdBDrG z%iNALSLNy{Crb41@q(#^nMLEGdC|UT9a!UwKi^(80IWA<<>m>t!d;;Y=Zt?qbvIuD zHuwhQ57alFZ{R)7_|(3Ya8V#%kV}Ji$`@4eIXh0Rzd<>$w?3|Y70#O(0QO$nEyz*D z({{SBPtuQfKb}0G0`Q&$_67KY3cLm8T%4bMWOacEHW@h>A@v6$E;!AWC$2mfBe zq3I)*HQ4@S4t}!X;?eX0#xM{~dpN2b109aB!XCVfKLp-Q%+I4`*;zlQZSVdpw0$I- zwheq;+P?40{b}2SZ`bW-(snj{wdb91;ro61_wF-x9`Mzkk789scl}_<+FyH$+DFco z`4LYS4TJX3KQEDQn$bVlcJ;vBY~Hy0H)g-j_`^o`*%q=9rdZ+puha*|l~4l!y)&0O zO^+8>%(zKDr;V3DSHb(fp?QynrzgYHRpk9CW~A|4yIu1h?eg?who`-HuaeDxO(r_O zLips`$f$D1Zm8g#2F05FGi^vNX-~1z-BXlo>PHvlLFM(0jPjTF(m~pjj_+5a1o&03 z-?Bn=Xc~vx&9obvlCd9-R9e+09wNKlIPGbCum3ogllOp-U3P|h5AtkG6*i=P6#cg%U9jB$MDzRuUc`*wc64ZEy2 z2wdFfk2}x*N6)wNd`r&r7o6uW>UlHI8*-jM{&C~Gen!tX@qB}2@@*6Jv6+0^&E)Cq zP>ut2B0FyjhIQU>FMAkQ|393gR9r-!L&4!|+?s^fkZX(V3CBmDQ{ANe*=5j&IR|Wt zef)3Td|RF;X(uu294Frv`zB6bCf_#e{dbp>Z%Z9Qzw&K21sNCLXiVhUZYIxm2YI%t z`;eloF8p%J3BURgYw6t^S3lB4uB~!^?_NFW5%$GL>YZ|OA2lChE&ArOMc)?kZ9&i2 zhpeRqCU-bzK3fN#&qLmPc%G!4%zV&C1I_0N&Bx0h&YF+LmOG~|+EX6zZ03~rOU-G` zBPHMV=2UIwq<6eI{VID-4f?i_Z;2=Qg|&2iNy(WwY94q_P2QY%o}``3oUR&pPPXRc z)sD=Wlg5`juWs5rj{IECylx6nscouDSY)I@SYWq&G6$>KSnyJ6=x+7cv zlQ@GU*Cyr$*(&>SGcsn+1yk(1*}p3IkuQ`yg>Q-VhSmxTcQ78>e1d(?yRn0IyLOQ4 z!=AR6xRHOO%?kFpcgYUQq5;i48*bh_m2>G_Pc(JsZ{4uv=&ygc*TADD1CNOY9?UZX zgWvz~>@euz*&l;J+=aodj91svFD6gOg+mi?s00po0tdwku=WMM7uzq;_HNfd5(751 z?0af29l0di&*(-E&YeAuZdCsKcj!m=CmXAgZQ*CPwDey6ExPOhgPcWhp6 zc_(9+%~inI7He$WPhdTv_yj|zV`@Xj)}ekOacMm(iD^@8xW=Quvb}4FSyk*>92hhq zUzN*0mNjmoj^9$UeM~%$8BaUoF|ojPtRpXqwf|6X}`eKWZ4^R3@_*Gr5JsufJqei7=H}5oBaD8Ouok$qRdnC>jX9_ z;Ns1(5PDX;smCYH?D29=Wx5#HRN`~S?m@?@J!-*ZjX%y>%Hzu`J(@(P#gOCKd^!Ik z&}53e__NYvq70ZgxdEPyJ0-VmXepQHHhG0L+hlsdDf4oKV*)r*>gPR%+a%H6S?i=j32yD zj~|0ZkO}fz>3S7*?JczF$;yiD&e}_Sw-VcSMT_=J8}3^P49UUnu&g5cKj;VF7`4Zo zdVw)`UH&qUzUtIZ+`-9OjhE{_8&`fL)@ax_r}4`x21_&@gSNf)@1uSEdDO>YzgB() z+V^a8cU?MN@wUSG657|bx0dzVj;ihDeESM*uQP3LQ;oG9v>kZ~{sj*S=$JU2Y7c(5 z^DGYkth&7>bS=JP+Sh)#nU}X7o=JaZJ^VZ}5qV_xw|LWgwp`Di=5pt59!=N-Y&dvC%{ z>VCNIPTK1WRcy~Q>wnkhgNz+-=c7M-_)YW1_(Q(G<8MV_$hV8X<4T~<@7%YNI(Fo% zhn(?Gw<|S%*%4VV@t%D`&mQd$6LcW7eX(7}vy2XO=^9$3Ccy+li_rKH(Sq=mc$E1f zbERukFW$R1>-&c-$9IJs);yxfWFLMEXn}ra+v#n&@T}?wPs2kGJ2b9%lQ`D{=<#ip zZ}!PdXMR)cnA%pI&lT(uy1e7yEF(J&&P*S!>}*mWp6tBekt-fdo}s-z879b<J^>9n-zem=<|s;@*r2 zAFS+^%$O=TUxP8BqmdVr?c3-_`dE5dzEI&`dpOt()2Y>HWY8tFscYkB*bARZX5nij z&m|l&cJ0OXx77|Z)z`vVpZ)0Sf(%`WkJ=D$(y=XZ(4B3D=ULkv8B#-91l6 zEEe36m)Y{e!`EecCLTLOeoVJ(^el(RcA2^nW%i|dw$sR#Bl5+};JzQ7_USD{r_F-N zPT&E*8NJ1|WXbPT$DQ9KOZw?8R~8r@hHurQnKAV9k?5Fy#M`PDZ|Io&f$6w3i)Jph z^K$0{Zn9-%HgC7lc80fiIDF^9_l?_J_zob$y7epvzTS5+J!=Io{cQ~+cV6Myhr!y6 zt<|B6Z)t2?42j36t!{8IVC6G6Q@3rd3y_auN`$6(s zNp2cBfj#7dwmm$yYYzTRCI+HEFAX50C4b;0^>c-XNA3s2BX|<;d;M(7>Zjj)a`0*9 zLz{_LoPI8GajN_5`9#;bx?nl7g!!y6GUihIA98V$)xMYi7Nh-q<}ix3bv;(Ry4~4} z_VB)ncFx9+U)3|wOBSy>JbtnLWj(vi*eUoh{q|qxj%Of#6uxeA=KD7L`v!m9oB3|d z#or)abcwc2v;&0c=9(_SB)O|!L^zrx6DpFLb~X#i%@p`RvR-`GMk>_KPrJ25kU$#6pt z4ba_oS6*?wiW;LG^snE}kXNj~R^%IcfRFO+-~WJqH@W>*^!0m!-}}?y^i02+@14j= zd?x9{CTy@~YUw~Py02v&tlu^xGg}#ho=uRJgc#6 zI1>g>=Z?ji(Qhm_X)GJ)x6Ofpu4{q8I{Mdd(lr&gS;kkOzH5L%5EwYL{5kuVUi+W1 zjP0Lmb7tt|C5KMFDBN;w=w!WvR}Wu5_1eOgH|TF)NeZX zVFF{(Gv)YKv{|8vJ2(>!oXH;$2ZxctR%kExo#YKZf$t(!R>K()P90IzbCf-_n?`Hs1Ndn@@)@0AE2z$H88L$M`o5z9`Nkt;}y#ZJXa5Hpb|1JAXVso{I= zn3~Y)adSd-=Rv2;t#hY8)U}s$*rq@OTjqpfvl_#PdwW}VyZ@oZqhzY^bF)q!B3 z;dbkWgXE)Bu*WwRpQ3WSQjD>Jx-Wh3Sae!+Iqt9j`Dn|kw%_lx{C#+0KRz3uRp4pv zsP7$Jb@0yq?^&hhy@B!Rw4Yo8K3ALtpU~9`&aAtdF>+Q(>#h&7@s;&G@izVFf!LXW z@bw6^Z}3H2OA@+G*3Aj%Y{3ZhW^hJ-kuBits>X1e;L#6fPJh`r``av>wVtux=fuB% z&z$ErB7?7Jvt?p83plSwIy8pv)^Bla1Lv%?@^**rvto{GJQ( zjVGY#3HXR7jjQ2&fH|Sg@)FKO8^oDtr6J`#T}w{5^6>_Pqv(3(SF|t`YikUbGQTJ? z9KQ&C!zWXK3Hq;7J}6}96Mrb0@i^ZqF8W$>V4fiENd8~R$Q9gM-1nUkWPH%bN}qk< z5cF79TZ;8b&18;Kk-N~TvF&)z)aXDSNzUbyE1l$7dwos~}2f*Z!{!Am~ii(dZ&`PY|+Iv;HeD^@k-=ljdRDYeCV?nFj9Ib5n; z=)_eyddO$LI2b+Tw&~?StL>6kzva}dK4?8xO}%P#PlwK+8AR+WLqjvJkjj9(rx|qR{ylTA>T3`$89eHZK%n4t;rM zoUfP#cf%j(6vaUNlX8cZBZ4lOmCGOQdB-8@>*Sty9NhuzcRGA>&1Y6Wl-O&fn8+WEjoG%5d(Pv@&j<^k{6p*-7@2k(6!yKoC~Xw)KP z*cI^Ql_6?>hYH8|LdE0qOm0$4b{zCBJnaR4k!7?4UB{qr)@|{x9Ra^j=lX&+R(Lp1Ah6lp)J!VXN$x{W8nLCWa!Q8c|O6Or)alwgh#s*4ejn` z-&bd~&Vf#R%ySns>E)-0HaGCSVBq~G*|fa#OuD>#09Z7U&(}=5#0;7`Pf5nq$(SVD z)#gd^I+{zV+lfw6%wS{*XIDXwqLo$9BR1E}P0-^i#ezWZUMvXtVI~$N_k2q6MPl@b z>RdXj|MFSra@oLixdA!`uG({DOw1j<5EJicT+rkyXmS(rAa&H?6d$VI>oL{hB>!yH z#%mwB8@iO->A9*f)1VtYvAMaB8O0~gw ze7qlJJnnu>hqn%kGfw#@UZ;+@t_@xAJ?jVdMc@sdd3Y3VMK7XpLn|h}*iV@e)~h_z zdwNITWZy@JS`RdHb_M&$+n&Im*}$46h|E*X750zP?74)a=(9@fg(Pd%Hs*3QuplSE znFnhewLPemF`|n^w{dJB_JFj<)1mcO9W*XoCV!FkkN2xKJNFa3{o@VTaqgaQY^GD| z0ol1Uft?k{&e6W`T-AA?uW{-JJ*iwbvnR~+*dk;)`g%V9b8Ax>SiAee>G!Y|_^xvi z@`yf@)KAwKy*=(I?P`n>)`S1V7qYF@HVZsf47Wl~jA6c6BW7Pa=St?ckANn1R)E%aL(R45#A+|)dJz9h zvVJS%+N}Ks$OYf`aaUIlgZ`?}iKD2W@5U@T>p$0?9n(LbGoKi|aig(iv6*CFj)M+Y zVK<6C&AgE{PCfd9cI6uxn^STS8z}GN$eAqNdQlP?w!qM8Mz?+wybz}xPS$$5weNgm z(Vukd)AW(5Dh_pTx57{AdSA9aEphZI{Yjs$cJ*mpw(i1qC`6y0d1k~=N1r0|J$)MZ zk}J2|F=fuyosHb04CrhBS<$e0~{qF%EXuywdjZbFG zQ;>%P7-}9-uo%->v}xA1CJBq!g>LGFMwZC=-000_|$ytO^5E#E`6fy|l+yez@4@KIB? zg8E_cq6MLR+axhjJ*yPwKmZoQA$! zcy|oU&C}O?xx!h#fnm^56>Z7yG|R$1a%x2_aq$xy=E_%mYn`)zm%k=(d)C^>;-Bzm z^8XC(K9TVqm>e?f-FPiy1~-X`T#p8i6Im0{CvZtetK9ks@bUq-X27^?IE`|3TvbNL zZIiAte(5U4HqoKSCoAw9yZ71?P;OsrBCrKcvC+tG_5)(@Yb`pTJ*fvG<$dF+fhVJk z$?HF#{+m2J@vZO_r7c&-_VrKS@p7mCz3Sh+_xevTX5nd^@?F>qQhdI~P{n;6_qDWJ z?1)!Q!j4Y7}dljE#;BKrzLsahX=61-3OTen))?NQFnj1(;j#gN;5 zbnn)V%Fvwhr#yeC`z%|Rdo)*-AL^zr$%O~K`Q*}F)m+};Y|xCnaP&I~Zp^9AUnL)v z)&lZRC2r#{@*=T}`PEzD%kSlkBV>q?0gS7!#$P%05mZ;N0KMeYAC&LKTFHeTEeuCcm>T68&@Rmh~|K!r4V~-V^e1Z@) zL*J|&)GwbPx`gw0mXS-aoScF>UwRNW+JBt8`XS%B@abaC4qxj_ch!{!y6Z~=lJ}xj z>46w@iw+D+znzbNWir0st@wU9D{S&X))VK$XO~wNvPN~zf;Oo!EcbQ_^U`2{zux56rC4(H(p@B3*SZd2ThEqbU<8s1)Z=$dSyyYx{=yMy}jpz zdfN&D_*Xe6&u>Q-bCz23Iic>lMS*U9=S-CJ@kcG4N!79T;6?U{x&piB{xZ%}ABit# z1phx4>fPZ!uNiLl_(yR5bAF%)U3mOno;3{R|1ka!58)@>_VcD$_N(y6iRPi9?zo>i zfWx(?v8~!S!S05Kx*2~@ZNA-&ueO_W*Sh_KY0qzWPaYELZp*W~XUS)`C@{Ogy5Ruu zk1R*7LjR`r5BxSB_(%CoYlk?$C!j<5kUOFKW1qvOLmowETf~M0&DjqT!2&#shGXD; zmx;F>Z~tV=saE1gwxt@WYYz{I-n|+n-SFb^T1O_&;fwJN9 zvC6CMGnutJdNPi#RqT_eA7w)uzA!R5ul-&0`&`D^C!-xZY(O1}F3Iy?Ho7tVXqHZN z>`fT;~2o zY^Qy^yA~SV1YGw5r+OAuqs-x0g<`3HxNJp5qH_uTz?Wn0%jRugDA*Sg^pXISL{hf~nvtLV1ZHgOi%I?gD1 z))#oQ4u0czo9FY9Yu6&zj#(oo*Pu%#(AN`YKdZ1uvhWmqt$mji-^kuQhi?k=#An0X z55Q-JZVwe0TJCPcPqNaob&kU%b7mv-z8AP}f?w8xyM6F&gKTHcW7>)ju9^Mf^*ZCS zsOP%(dzW@0+dA8<^dW4m_;O&l(@Ose8w+1fIKKUykh3;bty606BeO<2KHoqsdpJq@ zkzQn`l?)RYCcv(h0unS_a;E7BsmRIulX$gX;1YwEyEfZ??V*T;@Tuoy_ak zd2Z%kYr$8=m3s zTeZP-s8Hu>4veE$8#p6j6X&+A%fi*OHP8X845j3>TgPNP7b_^JJ=PgFIQ`a0E z#kasyT+2S9)-QhG>Go{lWef15eXVP=ZKT4D*PK2?+f}Te{Ts)h7Ja@0PE>V2(HeUABL0tur%!Uuz~j)~YvA>nsLy`pefyR}K5OgGnu38SXMA;n=M;GE z0?(#)HaO@3A68y}T#p4#zwm*-IdeiMFKG;4AR3~+wD!Z4Gj|+1=)ni@E@#y{XAR~X zTQ*J~33xjRj~&RNp9s$u7#bSZ{#pJ;Xe&y6;q$p3$i6f22ovEGWa`gHp1I!W+*ymy z1{*lr|JLl-=TEb*^}(=@W!8j(c?vo?QB@G=K}H-$Hgv+rE;5f9r$c#5#OlQ23Ft1l72Ls_ z-8Q7SRVu6)@Q+zcW7}X)?S+hjUnUFf8q};5fMnv#Ay7Msp*~pF0-!(Y@a7)DZoML|N zvhufTJ-7KhYTVUAqc|v=6&|oL=TUU{X zr#hqGW&IH6Y=Jk38_;?qLVT3yBhK7b(l;)e3OME3J>G!45#4fCy9Ma zjQW_frvi<`YaQC_``8y;-=sShy@Tyx$Lr7&^kICHS?`biA~<3H1Ao7H?#&^4{8zjC zeVf=@$=>gaxjxG5{k}%CA3E4B1|A-Mec!c0n!o2q?*yi@L-qj!T`O*^5Sz0TTo)3P z{O&TRma1SE1I|(K8eag7)IlTA2R@l27V#(2vCx)*|B04U+KW)lz;NLh&I^WKev8ek zy18m6sdkpr9=RphLPwOdApMiEM{Cg&@V;zR*`vZqC-8a_oKSOm<}2)X)!{D|P0N?9 zJ=n)M^Q*x4jB|2@8ArVAW7P+h`4_C9t^@@uJ ze9er-Z^kkQnOTFsxGu|IjBT5)klpFxqzxEF`AvIUxj5-=c5pHuoakEdbLfe5H#jK) zC(@yp`W&17IPjcvv5S}4;01Y{tZxi=!nY~-wyTYPT^tFPjxG85(+B*^U+kp)B>xlq zkMrNiUH%H*>z?>2r{zsVdi%TdHE#rs_dK)>*VmfhigI?G4^Mgs@Ovt+7raa zQLT{^b%g=#o4qQ1+=eW9)Jpdt_l_e|yO9T7`HpAEJo&D-0a!azk1v@W+P3+P7#o!Tn8BR9m z$Qr)u1ZUZ@MrXJGh8T-tN`iQxR7eDLJpl3~Blu`7fKE$19CToU%ywwI%s$Z!OlUv3U;bN1 z-emRzd0+D8HpUX=y3$Yk=tZ-(s+%A1LEj#1e@i>y0bR+Sa9`e+kulHfS#$qq?33_p zru}Q4Mb|s)w6V~SmwzpIWcD!ND~;ppj04;`dlk2}2zeb(gS z%FE&20IJ@6nqQ@oh~A6t-xMFmdXg!-yrs2ljm&M7BmX%4mH6^{}h z?myhG4g_$FPwdOd_w>~2&%3ga=jd2;nOg?}{jBwn(NpLF@BNL)&Un2e3$y1aIB9Hx zp=9J1WaJh%FF$vTG5lm*$Vk;1D8}aOTJ6>vpnuIVcYfa7V(8zGGPjG*HaF?u0p?bt zxw$&{!{#Ptyn&pKtHe=Sj738{@#vA5fQH6+Bay z1NSp@Ic#t%^lj~7S|VmJHUzdrYGFSyh1@AFsukkQAZkOxz-LEISX<5SRm(6XnK zzda&LCyxTBQ?UiKe%U)0pFT8J*T}myfzj?-#^RsjzjoF$3(b0_e|`BldKI0Q?nD-+ zkku#R`2p1zINl0vZih~nv9?(PtY=#3MGprZ}(Q09*RVie)hCi*rTC3miEdfzP~g znejl=bD`-?*r%%$8|IGZYUJl;;;-gon@Z1ZCjLruP%PQp0mgq5=RW_b~b4~5_Ee7jX`Or;I_jY6mLL3=VE`*wO_8N7}R(%k-n_PqOX_@9X3 zadNzu@SU??i|?=0sZR)9-K3fTuc3l5f5rDNUR_F%kW@F9l7&b0}9uXnGWAM zYZbS~IJ)y+Y1fe*1?>-KT|ba@{Y$RTDlZ3E!(2T4Eb=mE9rJLGyfpRV%--yo=O?gl z7mm&XcF@t>VaPD#Vhw8yv)&MFp+W5%zxWEUW=x#P6Rt3Do^F3qaE1?vD>uFi)q&NX zfb?{1abq|R%?d`W={j`oNT+BA2J#F(r7%_%OuN^krmH*83-s0Ul3lEH@#CZgOoT`70!^ymd0a zFP)2>bd4JeI(PMWQ*X+=Lx0MHacID)AABje4P@hYG-JSLcVL){!_kf5e}?a}_1T)- z^HR193B`KIMc*C_9blg$fjlo@FXIXFbgm^&NAbTFdl~p>(i7O^FJFsp%d4m0sC^+zH-|DxYD_<+Fe69X9cOL~o`ZNvYwx!%0-j-&IwbWi_&8wcg|d!b$E_1k#SAMJPV0R67a>bFv3 zbI(&^zLPWaHDk)}sbv0^S*s9N)8Njxaf0a=y=CUvB)x@vOEN#{jUT8__g;ESz5@dr z_Et1+?KuUr#*iKN)%;tdx5DV|j4b^R`i)FPUrj}xPI2Vv0k z=r(ZS>b4{9Ue5IBMD&z9#%ma(cP~93sX||4OXQbn1_>>OS_fAyFCuF(jbmzOWF)Maz7<5_X$iyAw$l`P4 zj48gUBEKe!#xwM7&N}GRU$td(s)=I@$C2&xiogr{Yd$iybGBvHxi!l8GNj*9vdP*n5}W72YHd6t@^*Tvw~!@MVrI^;!^` zL`KABK^y4(h~bA~dmR0^{7r4-K6>+PDd|=5fq3F+`tk0oym$i1Z)_>W+eKv;FlJ*9 zU_)i=%j==7uk*iLYZUb4+vEZ^K?i5WKRQwQi*d%h`MhBD0&t%K_h;^fP@fZ9c`WsE zJDFP&+##C|=a0xgyv5xU*}|Ska&)n?#({1<{Qu`d7ysZiIZOC2cJL41DsIByKkNPf zhF+ix2md^WFVdZSm->I1dl&Gis(bH$PbODD0l{0ngb*MEP^8?PV#_2!QK`iiTI@?( zE&%~ikID^sd@ zKi{?YnoL4M@tptrJb#{tCwtG{dtHC)`@62+qR(ghLfm%Q`F}M%|AW)>|LQ~D{8LU5 zJk|&P+WG$#&(3%LXLU9Iv@di1@74T+Ke5pr=l==nNkHQUZ$_Vc{%`po%>OaIJ<5MO z|KI2||F<9ue%QM`-*H*bDubV8J&`xzzd@6?YgFg~jTtx>g~twXf*-&tKd6$Ak#l92 z>KQ!H;_5xz&q0syfvd5RZtSm%U*y(ctTVAc&O9f;OwoC7_0zkzbgtM|^z)sS@KD9g zh}K;?x94HGxqn656Y1M;J&d#T{T+DFhrO>%`(|ywY(H%ug0xwEGdY&=NBdnp&GO!I zVuj=vz8}nm9tZa(Ch$^n4i^(ISmH}n4D#akmoXnE&RRNcVXa@WinOQD)x+v#*ItdC zUweV}&|bylH;}iu5L{|3Be&zS2&egudADr4`+D6P`cWq1f-M0B@+g-Fx_k-{a3*V!XFX^A!8J&U;jPa{{ zn6scJgPEIH1H^7PoC~e_*-TyNF~rcQy?*20Ry^*%(r!Bk+rEA7Ik?H21C4+2m#QLu z z!&3F3=NH2ACuKci>>HL>j=6;P7l{s`p)}4a|G&Q3FfAOPvNEFIwXY4@+v&-^WAbgk zHRj8C2OOaN)kXB#$36_bYx!{u+7UlKL)?b02T~vV4N{81RQwazj-EUrH2ELY*~<6k zTk4Eyp6{pKZ}Z>yv?qqf>-&kG{pJ3&{iVGfj~YDh|0lJBYn9c|Mq4Ov4)&FzKU|c~ zLlsrO=@Vtsw*1fl%8pT{_DPt2DvuQ7qJDbodThK6T6!B_8`$y+b=Z4hHD{$CfR>?Y*?_w}E4>n4$NJP6 zEYdTd=D`56?=^_Z4i=S?RA4^R@!L*_@RQ9yKk= ztZzlSzTRaO0*9;EHH)reY>a28V8X2{B=-+Hn${=7eza*R%~Bs@{G!M(*qiBX6cIi;=>|Ch9pbU{YBA zhB$bbppKR)Wr4%|ZDrjb;qTF9!BjumxsUfb<2?0xkuP+dac?GO%hs)OlEkqomP6mm zE~7IlTHnHVzl5__D8tqf1@~n0kAr>Kw^9w8vHwqzZ^{?YUixeBIW|KVNwDPD4a6`_ zDht1RdwKZ1J1WA*_Vx>(IM6@*?pqg!-+Skh@G-FD7+CTM{*+^Tr-e_j9`^crwQhr7 zpI}apttU3<40UjBPSoEETDri{k{!PX7(df*+TEcq^s|{hnz5Kd9qWlnIzxO9bKeRL zb6$MyQP~$ayZwqyh5wxV_FJQJ`)(LD*Ex9aqEV;s_4VCQ-`B;X``}mg@YMPo%Aie6 z#5mpb+w=c}?u;yc)rkAYe6r1~YaWujBiT28-?!<&xL zH;u94d$l%fe-!IhkwFt?Uc9~>rXQK}ag4qkhbL*Rw@{AGJ5qntmqGN!`k1eSzWQYK z2;JxTn7{8~?7j5qb^7#u_}eb}Gjf6xw(mX)t%#OB3EkMWkXn8gzFW*2^RIj_d>2+V zG8fpyLXGrYd|I}2<2$blDt^Dec!1;w@$byO=g{v)`ed*R{1$yhp)>K>A^6N+%g){K zn(H&KPO@GWEF5zBPA7N6t6qO>yydI(=ONlN0K0)`z9H`m;TSwA-tY6_*{9y$G+X<5 zpmBI9_OakD(RB-LcGr(nEBbEn=sO|a-t+U}SOxUH5nC7-X8HPd_B&(WOeHo#Lm7Pi z@8qShWA;;x*)-;4W*7Le-^Guqw6&3I;fKKv<~con%w>A~nA;BH$9?AbJ+J-O8RK`p zV|L@AwlNyBQQnyS75jGU`yNfNHh$)6`I#S7Ul=FNX=f~qGMB=_D=9&cnkgqF-gV16N&azNr|m7YZ!PW1fgfAh!p5pJ9(TV zZL_k)b)D*0+<@nwN%IX`|G_Tm*H}dtL$hz-FQqL}t&>a3q)XP94|Q`jzjFh+Bp4JE zzY{ikvO{0$POLZWOeNrTvK^`4)|L=G!}z}8>R7)}?sf0p*sfX`Pu5CwG2@T?m_=?l z)%&|YQrBYYS>W1zV*FNt?WY3U&rEDTmCEVh_YK>NU9+4V9#7=wuva^~ZXUY-8ZclU zx_?97)um;!{VWfr9546D>oF7UbpMR^|LZ1n|CyeDkZ)MC z5z`jzJ{8z~W@7irY|E;F$}KT}&tT7=Fb{u1A-0e1+P-bT`L}&bcWs~1b=#j++h?4+ z?Q?r$Z($tC<<%O)Ph9c9ygh?xyZkE^3kS(&0s9#n`r$Xxv6E(=gssMAWuJxgEZ*@M zx;SfhROq`r+iLfD-tW>RcCG3RyH>k=83)r^T{;;7oy5I+$(Id>kkLgaqH8OQV{1}w zP+Qj$>WcPb&7=26yQwR^uQdsV9dhgHOIM`609>S+81?77s?KF4m;5s4FaJWDN@2 zUZ*}?8(g72^>Yq$Fa5*H2A^cVdc!-EgKQN8mj@#&ch1T2lH+WE@4=(Um4fUYXN(e* zbx|wddN`3so2-suWF~YB@f~4>wR0Pt;vIKho~CW~-r8g0tFaS+6Y&kSU-JSE`q4H2 zRsudS9#PjmgA6@5Bp;30)3MssK{WP7Ysv!AslI@1Q|!U^IVr-&B|Y~n+@voWtM#-; zbAMJ_=%;DRRQ3}&&R5l@%063uq;{!2>NB<))27V!$VaB$bz^mpIVyYb^qW*$u(CuJRZ2bp1}D>F1A z7o_#6{ft=!`qYYZ=u@+xtuFMb7gFdq8!2lR`pt@%oZJw9)cd)G|@?YyAS8s>x|~9)HxnrNL%9z zsv>Xk`#$A9VBE}}$as06X##UGk-nj$MtLU&edxQJFSTcDd*_@Q+Hv!dx%NNzcXQS( zP`D{Tk%>9uy_+PK^vmYJ4!g!TxyfXYaiJBnKD|lWN;jne% zw~Y1#uUI2<@XeNk53{iGT!7A@z7^p=&S9_IcJgsdL~jm4n~I^{N{-Hzvx9+&y_}_U z_$^y`V|)!SOzcB0N_@CJ?zcJ(FRbLeyRr{T#`!n{&*$Y|l&w?iM}OPxn{IsfqCv86 zc8u?iZDF1^F)y3lc9zplc-%qO>&a(m=Ok=Txn@7#2<%h2rj4?dy+j+Ipp9E-V@z0VYJuGupe-^eMP2`#Q(S_tIhF&_xW)l+9xYIcc;HN_z=&87CJ9vW;yd zNnS$s)rBVd@>|&}J^k>AVED+GvhcAR%88fj$sYJ#?15)*`~tK8XSenMC&Bz4KMj^1 zd52g!6K^f~U74M-jsri5K*)t06yJri^rWWdG74 z$w*)VGE%+bE!I|eG7@~g5t%1(X@6Hn0te!oJ^x6?`~NfvIm6qR(69*_=bae%Y|hGN z9Av+-W1EC0X-`}W^w~<;M_9|lkfm-#mYRSpb=P?IfYJ6tz6)B*@qOR+;Jtem6ZiNG z<8#}h;gUyoN*?*z1IQfkBE>Wn1%s!3;I`p?$l~|#EK0e;@hs*vL)NIavDb;!E~Z~d z?2WF|vUsQSJ>gB&l4F^3&H-|5+BwMIifvj8UF>D9Nc@t)Tw##FQgBlW=cly*OA8jqtnF^PIBedTiG;*}9e{AD&moH{x zlTHvjp!>ndMmblieA&9#S54V*@TU>nX;{X8=EBGjkGbbW9u6Q^PlhhRChYy5Z4vt) z?NkmFXc`+!T81}uuVKLB_fzLGxBgeD+uo;nA(&?PGT3E!A>%`i<1qfU)L!)PZTNYf zL`GkOf7Z|f{CORA)Fk~}k36GsPRE{;C+Mftq1f{(#=0w-I*Xp*PolGHz@w5sF9;k! z*B&~(ER~`c(W zWzf?#*qOeUt_}62{i9ZuhHxnMw{@Mg*S=AvUqSNq+GmH;&#pDkUV^T7 z`hqE2PGMHx)-v`P4!){=9Oj;59Pa!mY7u!e0BH8Po zrThDF)8Cb>3G#k{6CSt9(LAyccq_|hJIwPIonV)vywQgo%4f%K5skYcHS5a zV=t~>mUT(!RB?9bOl5v(*)%77rY1i$XS@^sQ*Qelv2QXxUu!e2(ZjsouQBBpA-m}e z?_>LK4?m;wv-)n>;_KHskXWb_OPtin#n?|8{p=oe#5reJZ?jN|1HT-tCOJsz~>} zG=z+m9v|6K?f0Ls*FJZAUSgl1ozL@GxBtd?bk)8t*DW;i-=$N#Zijhvnn|C(12b)Z zBum+AVV%8p`_#U^(KFp=8EZ(nm0MnRruX4|*ZN+4>Uw24sS7W1d6CYU??qnP6Puh= zuUzsqsvV=9@QF?BYyE;;2ma!OY@JWit}T=q-|I{l_783@i!`oqA|(sKHZZlV?P}5_ z7lzLi=bOAYcl)c}JTfysaN9-Xg?T9#8o_7MyDdux5`pSvDaI9Zs6VcPpE4a zdl0u7Jh{N|nQYGcT;upd)0vk>Fmc=6KIzldHkZ+p^U6|xA|7A>zU{~7;nSy%gfMqS zFk&$Ge&jJQw*{IKJ&CT=u4B;nQRxaE)?T~NmwKI?(y!-SxZ!njN&%h&z~dr1ZTV!r#3b7Gd$ zrxhI#J}SAQPpzHr|9G$a`Tnx)*GHJ|qwKpo1{R%Q-j8R@`*qBFA27}E*q5Dy$KkJ< zcjK30-j8>f_ugjSzjyzCW8S^`k2C)#4txbaojd@< zU(o^m^M}4*`^UQP&_CAwJLHD{DC^$#?Kt}iPr#c_LJLPSXkiqzFbY~QzDj7}5&V>@ zb17JP5?VOo(gJ#qFaVz^7|`P*(!vqu|EzYr@s;qYw_SSp#;jmCbej`??DM|xKYuwZ zJOX+c;n9N`FX*AG@v`*L!;V)M^zf)1uk)mbv)b8tyr2o%a&XIoqxOtI7m@z(NDltq z|6LZC_%UZG=SfUIf^Hc4{iN`!Yl5j|7dfFZe<)9#iaV)`(P?Lq!)P0G{@wz~Cw-as ze#j;dd3M=rLT{e}1JD7t!25&1x0`EqCez?+CrWl<%D{d{rIB? zI)TCe>MI@nIVW(mj%iJtvsJ@%IkvcFv7 z+F!8o#~CN%qsn-HY!Lg)GSAQR5%_IaWA!e3>`zhWd+1)HSX-a<>@rKi;rHoNTh=A5 z10Nu7(Kqkk^VmZVz4b@1Y20074Caku44`*ogIWsT{;U7OVTZE%x0ZjynZCcrC3VG} z`hIl6*?n*Nl-GCo0l8CB>Aqv*>Zknang6^yx&OY0q zXYcTgxzt`)#kt#OYxL}Gp3&bJ{qeA_3=Z^#SPz<&pg z#V&@O1OHYedfZ9v^Y$G6FWMrzm$8ejcI{$nhxKhIj?<2}T)S9X58B|}<2wt>m#&!2 z1U9*Bd{#O5Die&;+UtUW8;24LLK|ckbbWjuL;nBvuD|@Ac7PXA@FD>wul*ssVFYLI z;LDkXU3wdOt9!nUoBM%!PORaKi|Oxn&kO!UyNnzFFVOxK?JI5+p0m#J5k}SxbyWVr z9leNiA>QS2_Txsgoro~`MezL2Lh`7B=SkCsyw+8w4az0po<&0&433Xh8~COx9N(ih zcsQ;&KKY+){X4+n_$m3E$*+2yb8z3n;ywGxv5Fruk^qnJ_wD z9GdAv&$_KkAG%p92fpg970QWGw`ktA6X%8Y@$6hQUnv_b^bH;MpTk({T7F{rh|v#f zMN7y3ll-30u;^EGtT7X2o^?hCb=xyK22Sqgj1JnExZ)Cb??lG+uIa~X86Gjsbf&i41g=+6WC z`O;@?W2>((Qv3mXiM593urF>l=RsP0`?T62T+C?W<0gOMsL+jSlXoWTx#oPeH|N3> z*)NjHJI}o9UUv6}{qFon8BgI`l<`$O!~nCu>=U8kXZ77ZTUUKg$1d-8Y3g^B9pic+ zG{t^L6Eo~+-#2l~mv=4)KOVBIkvY?`!HijAuiMUFs-51w+9?`U`}~YqCFh%HABFrS zCG^R*)uE2`m{PVKmkw=ZenkIU)mE<0YHQWF(6ObR*O7aEWo9|-9W~`Vs&;a1*Ac!V zc+Ci7hlx*P99Da|ZdgOw&)n$kXP$orc{61<@#hUI^yRjebIy?;8&XZ5PPuNdvBV26 zarZN4tf6Oa@GywyiknYkko;@Z)mgs#C2KD2Ut7%@f;XnyI*squKGxEF*3xFXmME7s zKCBIYYivmOYiS$fW!6##|DNsTciF6GFFGl^wl?WLV{L8hJl5x0TQ7E8TQ@NFW^M6% zmut%*j;_<%O0R$0X2y@4Oh$IF&+gT;7oeXEnZxn+wJ*>!t;vk<2AKUt*Mw&4*>gP0 zkVo8SBST-*vuAn6I``qjbIY3$nx@~MhEDn`_je#Pm3vFK%+Jp9_VK9KI*DsNKMmHr z0M@XMlg~jz&$_Xd`dygwp>mRY&owUgosweKHMziZytR}~`SKfPGe$niG*|k=zB`-< zYiOtOAwHfBF0JTu2rI-!#5}t15FhWyZKRYqrM47kAvog?zRwTTVN^m~pGoxb0xv zY8W%dNii+D*Ldl-CpjnMrjD zazk4+4jXO{#~)=3*gs>(U@pG1nCQBj?Ze;=&v0|5~q)HkNuVeH%{Q%$13y(>N(^UE^qCC;SB_cEX-> z^atM6IW2mA&|JIcAHAM&U1zS{IICZqYss+LwXd4%{#^I1ec4=J!gc@Jy&2d4o^c&9 z*O&6nCAGgW*Ozg9Y3*}dD_>HKGWVI^)t`RC}xw)$hsTTG^f7tty^d86?HwVL$dk67b=aLsckN^4McLwwf z-AN9)((GVFaWF6AS4|El|8zk?-D`dF>t1^t`LH;b{ndR+hp_IOCbRCyXYmp`iE>$s z9<$I(8mGASu52)0{<{mc&RCnPBPCxNz;!%gh_S?4_H8)3H}Ul9BH zQ!f5pABwH^h29cwjRYh3wxQ=uob@o7vmS2laMnW`u>x*<)~%=Am?h-_&aWK`O%y6V zpeJ%$Pqq2#+Gp9j*wC|zd(J;+>=oB!|GE1&z4)eU&W>-ok+C?0KfeH3em&Csn+d}IE)NZeS^qwdu{ zIdwJFLB_nWw&)_{-F>+xE;O}?z>f_8inBLXAUz{=TSTaBCZQwZ_TW z@NgGcniEW*XJiwSLSEcrpYCMO4k;K6sO#1Wc zl7C;ZF`51CA8d8<6swGWI23x$t!-hiq1K{e$&Al-niCm<-$oeI*2eiAZJgiH)+f9G zzi4u1c3^T(XJ_(D7loSf-zAHC%U@f)0KZLgHRHw_n~l9h{yS?gnF}siTM2%fYWZ!N zk3pZ*Cx2}wF3Deek7xwhPySkHIMPJFWHV9wO7OuXy|a*$$O?J%Mc*rz^g=L7Ic)I5 zvcBYlAvbr8KNJ>!=i78yGnlg-pJ7k!)bNoPZVxvPa>9p4_=q{o3YVZqtmn+{36FdI zz@O4pKk%o}kA9(F*nYVFlr+9RiGOW^?FaspbltWe_(mxAVBrHLd)j7TYr3LmY1?Yz zvZrx|&Q#`qBD|~udFwsS2c+$TiRo%2Mr#Oul-Hm;VO>++mLI*wo^1J5l&87#w~fqg z?O)qADG%sNo@{4h%wB?K`>B0-?A3zaCA$=AU9f(lte@DjU@DmHlxD_hy0J_JwGqBk z4zM}s$3;#~Xxqh#F&r53&tjbk>!87%ykqb^4_fSpeCeHk`~~))HspaX{i^t_Ed1S! z_%D;s3+(%__tj}$Da@9AX%LvLJsNX~*I1dKU02q}S2u7^Ffi*nXX#U{jadWS7}}Ws z8@n!HJZ25D_g~+2k?w~&OXIv3^FOfbLfwzC&zJ3zJU#1rd;is4im8}2$yrL=9PfW^ zm&RB5!u-VJu5hvr&*pdOLXzu??g&0O(YflYQRYJDKfAoH{ItvKTvY{p_exn$vU z7i$cVANFVPIPo{re{yJdm+wftJvN;2EOd}_-~pqpJ~B3R;vUAnglFKn&8gvH+^|p! z&!XeeU%(lomw`j{$*emo>nBQBAH!Yy#rJZs<9hdCOt_&K84bKnjK=;8mL&?&X^^QK z#)I3+Tld4FP$f3xjU%z$(zY1wiqg(~UapnjP`~+xI!zfK|FAaXIQ1&8j%+;lQn$Ug zwiD?M9dfPE7Y96bus^xueRlqx#Bi-C@RIS4u)opBYsg&j;;KkucoomcYtY5`-*TPC zzdavMRAUaF8rcC{dkQ+#86>N&g%^X5jo@)&B6BeT8lS-UGY5ItLSE~WSN9t9c?kN< zhwctRkB@nl{o0$)WI*dIgmfF*IE-AITWeG&Cx`EIPrZZTNuMi?oe`6BD3k z=(B0Gt1JFlxx4wz_(#0ojei80*3kAum$viRr=l~*^Pul+>e7gke5a0yJ=6{yHC?Oev%G! zPQRdY__U>SHwWLL8{9l~hrpR9C~y7N2D8KJy%> zwQYO}P zrJEuD1G=&6YJL}E=dP<^p|6}{d{$+wE77pu8yl@N!zaM}%(a9(jf{kiPQ1chL+P=| z?`AAMbv|R^@u|4-y=x6|pI$?qc||vC=waHvp8xCkzn1^5?If>u71x$m$9ls*iXHex zJ1-f+Uhl4W$$g$2<9Pp!zH0YR4G>Q`d;e6^0(79oE^k>hJQ#i&-olxItpmy9pgmQM zmDtt58OvXy@CC{ANo4zG`2Sr6J?l#Q_NXh31OvmaaSq;kRq(A@oQoGmJ}E784wiDS zbMl6=j@pWI;TVB>0sDQUXcTLFXNoYTxwQw`EXn)sQu+N5Ij}#VVt_yU% zYUQ2JXI(TR%jCdk8sQr`@S1FF*!e%s4mZ$eBU@ePV#f{FWbhnl!1A20($;fg2W@2x z4bQn$>&3foUoQ{+1D@mVtFzegg)YX_^5m)K7&pU{GsaCe<@Y(mQe$R#vNxVx@#IV# zNibgG%cjrb&7H>SFC)4hr=jOFP9xoM`aSJ3ocJ;|4b%ihc-F)#aV}vj5=hH@4gA?mr zTv>ok5kbb-6bFt5S5|;48^M*D?10G!fn7>x9mK#Q*&37B8k5MaN%jagk8lp=gCU%4 zXE3EX*nZ!Pp3*kW!xa7+OhM1In6i7UhbfEcANDFEude7GQwAbWcP)4HcQJ*sEvEcL zWeZb?OTZ2Trg;1FW>Ob*7);4{{~0g{`-m%d@J)hmi2v>uQ??;HcZVted>7b28N}=u z%!opNu?5W8vMTIORguPx;6lwL#;+`3*Le&2@L}X~?R}HZn7K!(87$Yir-x@bkv4RK zUxVFk=m^pkbdPR6eG1>Sc`{!cGG7!MVu!Jpu8=YIpZ|zspEdCO$Np2@js1+S$Nn=K z`x)my_N&-C)ZN&R?=<#SRyTQt7<-MaY^|;QKcc_rX6)fj9U(Tu;@1$$kex8fJZ0#~ z=oG_3g({!0DGZ+!jPGS9Gy5m8 zX?X2%)E=*#=4J3XY#SzT7j?B@6E4ju*igz@M?K(WxB9LQ^;lSXx`4c3gZsMez6*QY zcd_{n%L%3)q`gD2i4M(SK4^pLUIl%3Rd1}Nz23|^6B%~sTpZ(z?_$;(xbi4b{*6qLqe2Q+}pQK)UU!?rROTb6!mu*HlUZRunGm__pvawT6 z46USW{MOYbo<{m?C)#5U$0~kM^gWQWbv@8e+mRiKi8rw&_$PK+|Ad$S7@c%v=q}2R zf=51Vd$!!@}@actgC_x$c(@b2^c z-_8H$`0t+cm|we->#q48^c{EoXw%s9dp6Hwjm3k3o4e$9u0L&25AnN;(>B5=>skCO zxg359f7ATp!vTl=ffjgAGyF+1a{?T2&tCSMbM4$UsGI;fwRa34b_{xmR$#xu2J<)i z+@Rbdk{?A6;Pc;@x5<9^5Wk!C2L0*$^z>Q5%>TV-CiKmXpg>2Kh{EwsJ;{JANojg1nUWM@4`^OG#j4!2AL z(~(VD*rVCqJSB@K@m^KrhZ(jssX*4A`5R-;Y`5n|uV8EnnIGD?-5H$Dhamf^kG+aF z{;({Z+99y9m3mY;g0jD;+?dX~W;SNk z99Fs8u>lYET{iAU{B%L~d{+#uiYNz60vmZpd$4TdZq5orKU{Zw4h}Qto!5=#;Nebl z@KhJ$&3Vyg|MV^BM4A5PD0~q5O>HIqp_m-`gL?n#n~Aoqe_7#VFK)o6IPb@yH?!Y= zLifX0VqcFl{*~avMC|Q8?q?F*C6|9W}&)1N@p7&e9wdwLhRwxJSXmFMF zQzaXnmxJ{a&G@FEJ?S9k`~&)|yb_l~-=-cz1OC>Rm=9Y|C2?Gx>v@TB4z4K+mov8R zm|1^v`q4_@na9CqK+k zU%tt=ImDN{L3PQ$-wX~l30u<}A+ye|^1}ob8%Dm(h6V5ma4AOr zeXg&loi8v3;ytU0dx&#w_yYJ92b<5o|_w9t=%y&kz0pJ@LdEc;05t zX4c;POpNi3bm=PxI(`-UQl4iQC$9x(a$Ad_KVi=#(;wxBB!?607vJS$n$xA&=_fr_ z7IwcG*&#wNY>^*+{>22`38u=jj zYjiqf9#`+WI5hF&UFdWNy4UIE2D{TM`nfutTQ;)y$k0%g-9e}8=kEDoZN;g>=yVzH zUq8AFy@L0;vlHQ)=}NCaMj9I`g7zC;fR?tj>jdZv=Gn*e>^Yug=zQ2acFG6QPiy8y zH+~~Ccb1i@R?1fN0_*-cVkuZZFB0FPwPSx9v*$L~Z&MK3TiDzbp*f2g+p2emc!tSehQMqBK? zWK<)cqCeOigg4M$I|hHE+|J|Uj=`|dn>;($7{DLR7zjV^r%v@HeaR+5SpqeB8vzP7M7-eS*iO<#El8C#T6@DtSDC zT%|sJN`2y5HZ0lr2CLbpBKWb0S%<^KS-I z;T4j*KgaWg;kg6Mc`{q!V`apLR3LAN=luM`woR+Sv;<{Ufy=ABwr0i>UPe2MuuBqC zV)P)rYh-%bA->FELS7x>`<#{I@%?P@@`)^G+$1o;%n^KFyh!}o@O*e|d}c?U|H&r! z!~}T$OqJc9cl}?eL-7IC-d}PYxOF-`O`TE7R30kjbd$^{9Q%rWXMlT#kK};P?&lbNbyyN=*wNmk?;BaoQ;%SyV-I2d~p0z z;SVaEgG=Fe9~3(WALeYN=FQ07C7%hSm+Wqu$Qs^({Em$*{;v3+Vjc@>r!o(fjFrZA zE%968!HV0`zU8Lg-`>^OKX>!vfopC<3Ri;-z&zzjSkw zRJ_zT)KB#Bt#08F&C9H_8<`KD+dEV_ADpA#F~&eL-xchO zv9^Fl#z6R%%Y5m2F!%;drW#)irk;?D1Py{~_2tNXamjzs9|4=lN?LDPcbc2vu76@) zo}rAN^54>7nCq@|oT==C&Xf#auIa+NNl7_ z2RT9V!E=rdYc|q2!L>u@5i@asmjvXASWd&S(w@Vgab1J{|&nK|Mbujp0kQ;xXN z(5TKbKwkO#NKamw5R72A!v@{Ul~=|iuYjpWUdedB*C^x_Vi<^7j5G*yD;U3#K_f#a zCNpQ0(?mIW#86BI%ddF6W81djb8CKJ(VpKBL!q22%?nEvLjjbI4V|0^e}?X%*$DPV zW0%IxS6#Ut+NQ3x4Yvfg=Q-mv=Bw#@rMHi#GUH6ra?T{x8KafNyv`qhJPkg~AHZ1l z?B(v?$>_^3yX*VtuKWJ`>*zZ^Hq&?L&9+l*TTOo}=>^plpcOU2D$oRGwN>2RvW)BgJeXFI7us zT&H@5v);O>W1Hj(aKh-HtV#LEuB9&hmX2HD_raTypDJ8=L-K|3g&}K*j*M>%y2_Ss zjBzPfyYBc@DBg3$uHi$F8(9}Itr0NNm3PQ3MVk`(hBlcpynd(UM(T`#&*DkBv`2PK z-Aj&YfERX_9qpJ-v13a7iuxO4OqCNn6K53Xs4+dFobFspK9G~_YI{lE$3MIG+yrz6?F+mHu+ z_G4`-wtqN(GvX6%KGa2p!k>13ehl1^3?#d;@zpaoQLskyp2i<=L1#v*?(Xns;FaCs zPfr(rm?Minf4Z+K2ya^DFz_UJStX6zWFA~ z=?;Hl;6r!#bFdQpfex^1q~o;G_(NUigFmbKb%#GaUHr-D%TK!NyXKMl4EAQc|BU+X z#T_+3W44{L=XZxc+c=-6JN)@4`fJND_(M4z@P|4&;171OXz{u6r%GjJ;t%t47XEl^ zrHHj6ztZ{OPYm3XJ=)^WovNqA!=Fxd82lLz{($xJ9|?ahq%Pw7T>SBVH~0gtN#8N} zQ_LC`{y;|tf1oRaKa30bQ(b<$n?JwjVDN`EVdCakBNl(kXp>@i4F0H$PWWSJ6buyp zG~p+=_viA>H!zm%adS3ju!|GlQ4EiV6YI>iixaCeuB*824krfx#n1W_upaN#gQ=#ALn^=3K#-SXw4ZJ20Br!d2(tM?F>d*D6YO>RgE5m7Drd$K930D%(m*S*^OWBH*V!RB_JmBKY$zpJZbwu2DB+8ny zI8#Df%{P*BR7PiiIeFd&Hy% z&X9eBGN2oLMUf~pgkKc7dsOJMbY=$QCpTIAwx}g{OD>T>GuIjhr6K(R^^FwSHe**(<_7k(@I)x$kIg znsK=8w0y((VRt6+&&dxf+nnl^|70+D{wnpF=hUm`E3wPH`s1?jYuE-PH)NKRc`e_S zY~`+h1s@&jqg1p34Z;^A(Mq#kcSY#_yT3cvo7I06&n z>GyPznP45XfPPY4#MvP+)~#Y9z{8!2dx$LyrphQ2`l^?`gSL+;!#4E>>QJOba> zSaM(FcfwKflV{GIe5%5ZI9Px!CGAt~&c4=rKWzpVL}%DH+U;xLK@|E^{7tv^wOP=D z@o}c@Ym7tR(En+GcTir_EbLwMDQ)Yby#Ka+jd^aW%&gDY*GzrCvh`KE^(p=$v(9ep zYuJc-hc?WHPUyE}bid4gVbKB2M6F5#Ro*+IQM zWNWlHmUz()_+R1T%`L<)e%QMmZ*m@(6xfd4BL|=0eCL62qOC0IR?I~X@>!#v1t$ge z;uF+59?V*}k+?CvH@K=SFrVjxe^?P#j&S3%0AGY%`c3CpNH*E-+S3neU*c_?;qYFu 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

=j48J`xWPBZFTznm7 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

eC3HNMF)Mq=dMDpZ;Eip5QTw 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

l*aOFXkpJtKJy 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%0DQW_X#i)H%^PeYF=v@v~RQ|8Ptc2_=D_t}~^ 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%0AiQd$%;G>IpVr?!Qw}EECtjT zQ>MH)EnmsM;l^`;3af6MR%_d7<3wW%g&JXD3LNs!lu#->I^!SF;EhFQ;WjVS9!8GU zJFEqF!pRN`^FcGfA!!!HTDBdNjsQKQ&0&tV|B2S#+>I_Ld zrQG;0<74IOE_Pa(u&|3i67k~oQ;VURaU{4tBGDWX5RF+V!uT+U3;-?FCoB#sR>VEk zWiX$OfX&9&FdRavelb-%g`ug)#bXaJR^%g3HVe-R{00`50s#zEc0NlANIx)+n&O`| zCacba)z1kTU~8*(b<8uu#X2Aioz94*wI-!7%U0ZYW}Q+0gM*|NpxKS6_CP%JTn%x| zCkPGe6Q#7HFeziJ-XNsa>Gt}Ap98Ed3taUo;I)%U!6xB@KN=koU`EdmV;3h$W{IBo z6?R3+wl%$E2xR7Hyl)XB355Nuin&AI+%ER);EBcu^=7Ng7m-d<7m{1MRlfV@KD&fb zEm&v4k~N=fX_ZZ}mFj}b^YB%vXa#dtWG8^=C7z$)kEMq%DjQxTc(uBb0gWze=wU%d z%$0$SVW*&yHL`g`>x_*?qDol;ml{aHnU?w)F@JB)U@YwL7Ro5;l*G2o(dt#zxtCD4 zAmRnCs_?*>4QBcoN8KzRu{IqG3;kJj;KUAZ%bQdC9fbz>@Ce<%YNpT6yglXoV0fB7 z=)R0_6Rjn$7mgUXi4Kanx8W8jLxId#7Y_9b-S^U>adY|=UkomSlZy`uTj|RO_qXqV zwR3-GkF*BBCI9}A9D|O;YIx~2}DY&x+FDQWbyV;(YWZH18KH%o~$_35sqNR zOj5m#&-?9jX&Bmf@Othef;YRv2suag%VIvp+|v`=O<}H*AC0Mq(|AY+)){35O5u>{ zYY>*lQ^hw6BLr>AKXBf&8K}xT)y1Csvy)-7~1oD{uP>67**;0U@m z!i2k>$f)`ywyASZX*+XfP~shry)~lM@UVBKzbIW>F2^#6kRy)%iuSqr3mN`jU!H4y z`N)O9`1S2ycK^nHte;m~)#90K)gE9ttte$>p+fPWNZCx`2`eBPXmS}^Y_P>QBq3D> z#6U>7s(~qfR&_OmMn-i@G^;bXqvD-WvG|toFI7)24Q@2o?w|-CofLGLQ z3MCAt=&tA|8_ipl!Be*kO6qmlrIgOl)^O08_C~Gg zXf)|`dfh?4-yMy+oyMfz9o5I9KW+}X?E~P2&1v&s+8Fi@ z2BZFT+MABr!``@lFqk&FO+By0bVjX42Q!ZrGpH<3RbQ<@j>i*81|LbCW4p#1D7W33FvG9qN^Q_Q7_%MKRHr1gCF@PWb>@aahEfAG`Dyk6P*(df$nB3IR@F%2W9s@{-%qw20s@l8M zDL3`OcplNMjbXywDoT8YZ{*^keS;Bd(d#H5&3mcal`gvQ0lclUWER^FjpSs=!pmEN zwkWo!NUH@IVgMx}fS*=8Exnw7Pmsnj$R<^mCXLK zI{579@Y#mKbJ5|mgva5qO~I~+Kjf|2tkhrMcwHVK!J56WY4}L77~C+y;Xm1s;+abv zn^x|{L6`AzXU%4N&oF1@uq8{paeA;3eSIy`a_Io{3H@aQbefGT4e-qpQiqt0p>s+& z9SZIO*U1nbgm!`5Sp-%u;iHp3*NMz`I(pW@7gE8dHbYyF$yq3kQIuj%L(=B@`S_WAD+LEQtV=UfvSb z$U`a-ye2j$!`kwBitKfGkaR1~vOKM@1SAGBj5jvVYax%a(Vnz1&;W;w878|7^aLb) z0bbQb9CQX-ya;1UP> z8eDE0?GkBWcE60+usc#$csPb3gpJ3)JJTfjx=dz469)%MN?!suvWi0MmXFAL`m%rC z2$u?)z-SUnGxBtS!@_q3L8wDXICE5qs;V15yglS+J~7Da9dW- zWkkE`ZrKoV)_>*@p~t)z%ce~wQqf_s;20i`JtMf;n z{~dH&^=^-Z!`=Whyj!m~`Jmruw>osC?RJ~^2Qcg3HAb^DXxH1FUccV!HQIOxT7yQf z+35D0J<=1q{d%_%?_wRdO#Gz}P|E_zA(~;oFAvrQGj~EavYzAB8~KYnl=twMn;CA% z31a~kb4#v(hi1Uw#kABWqI*_*5u4`(_8gvp-zXX{nqX@TkNEh63)a>@%P}ZWS zBvVfgljFwR)$%+S6fp~nbKFuUn!IL%w_BG1R<>$&>2Bp?m zk>+JoE-15?R@OvC*klUqqy#Rrbli-~D4Q<%zzwuA^Rw0wnCE@Md@*2hB>!oV6e*9@@yG5y=6!%T32T4!rlA1 zc8DB~9910{j1cNH71ctFS`r)xJ_~w+!-h9m@+vcKG@MYkA_@#1)}{n?a2-tFgod_8 z6^jAbz&9(6db{80b=JSg8Dx1zZfjd`bmb8UA!p8U4%Dp1j~z%HH0tmdhFWPuG=UO` ztXg|P3kieE)yDcQLuVdlkUNt|4VsK}l=$az9gaeEX$3o^2N#!_Kf*f*E-GJdL7G1U zx4+?Vb4tpnEB82ahSHzY&odmCmB!iL}j9s2G!Vj$Q^2#sgh0J+iO&1WYLPQ)~VQ(oifNh0R zbdZI)7h$QW|7zYT9P33IuJc+HgSjN$6+!Ok#zMsV4sBQz-%dy*%aG4aoMC1v1ID2+ zOD;;QIY0^Pme{SG(yA)4;8y&ox}J19uiu&^Doht7yCF;Yhc!<53|>f3&<c35e~|@zSsb1yxPO115pMQqSFN868>X*wQyGKYoO0Z zS12)KC(fwFC^w)H&KaX!?U=@CKR7y@k=?xM?WjG^S=n7FJnpV9Q$NV_Q=c1Ze*o#R z+&0y*y6QOv1$0Ll_druHm^`UI8&x`}dtmR7@~Wk#em2UkTJtO==`+%GBo_$fQSMg= zH<2V&GnG0ZydE`xj}ex$7weZGI_`kwn;^K#+n=K5`dn{)tAgEt6GQX3_@H#eYJn-a>xnH^Y6IvZRCK)Tp3{u2Q^u5hzIiP_1|}@0 zEi1T#igp(GaSrOn6WY|=Y;ZxN_em`enU%zgpp~9A8y~bN$B^)AR+(7HA?!8xGlkA z7C!rC(bYq9P>qIEagi&q=Glkf*f~=~Uas-kOCDy$(!fz5V#U?z_MCL+^qmABPMo9J zv+1Pv!8@u`XZ{6g%z3R$K{KNRVPFvE#|9s9NF6y8s1tTGHED#ZXPrVsOY0N9NTms~ zO<=Xkm?32+=n1WLgK{oUsFUZ`FEau#eT3mn+hdVZDuNZwkuTOe48kKaU_dKoMB^E^ z1hK|~G?nThnb$abQcTO6%Xc<`YKM{+Nv4)&?r7G9jug^?&3_*`h@k$h+V&Nb5a-Mt zCTkgquqOZS>c9Z&yN9-C`0aeZBLvE%ojky%vPs`Am9WocTvlm(!MxG*0rwQ;7i6Ic z-7~=hVtql@gn1S;Vzznv_Tg!5GX3GUIe%_KlWnzg}PaZ1caZ zr9aj`Tl{n5$=!{=A8!1kU2I>LKUn`{{j>AvTCj0L#`$B1tz!l)dDS2h-|jj~pn zC|JCTR+6N&CLE1;u+IWmpU*n_`Z1Pw5%;g>WM9@*iVQrdi^h)47lM1sdO`UlthUUG z6RogSQfsxe*0VYUMaha@KGVxE43^PioB%H@cfw1j9GvQ3&aeVo`qgATzsPu+VVs{_ zRIw1wcF+^3NJ~cwX>Y6&N*ib{He8**AEKQsJTqBk^33-XkQ8&i`IU*3xoYIYv!j}S{9_ff7g$>H2}1d&o8|@; zN?~|W3w;q+kHE`lpk@^Zl}V`^!XA#T@VS9ct(3NoVRH3sb4q$z52w(2EBf#HRv?1G+J{o7!VulfZ1vYzFG(6+HN)phY|4t zzuIXusqxwB4py9Z^FuZ&KQw9`X?U_2Wlp8{f14C{?@gg|xV;y$DYAFv3FdR+3AEcL z7-+rNL_KBQ2DAxGE5}H=NZG!G7hC|PkPFNVK7Cno@BFo|!z<58DA(Qfj5#UDsD9*J zi1~(3UW%gm3B1EP3lP}=_1olLo08oxjaTs^OTOUq5IFH<$6XfeZA<}%FHzAYoS z2o-Rs-j2ji?j4@+1`!aNK1Fqla|DZ$4LT-iutAS1aUMbV0ERV`i-;mi69)40T1%s4SvX4T4swVGl()TPh`o>KZLm_lNy@t0$;*%bs9W&GqE2&ZdgUFPFUfe5&yQ2Ql=Iu4~S zVsBX+!I{n1TU-=O#Uqr9nySM?D_)uIbK=MMRY)Vu5F=-7#N2hJT*uK37V|c<)Vj1= z=jiFIu(sh?faI188KY+r;&U7g)8h}&(a;3LU_qG$Oj65el5^t zGpXd;6De8+2^0s$nXigu3RG72!eJwz4p?1~<>tLCN-w>)l(TGdIcIHTRj^wSbbB0} zT#HYK%}`#FjO^@EirA81Vv<;6lpIwB8^y(Dn-9Gg4b+^~)lepRSDjOHfm9tnX&lfF z5c87Sjmke9p@OOvnG{Oo)9mWrm4#%Cq}?wiWbAk}1~A9*OS!=^51Fqq<;q7)`>p=4 zO)zXuH?Syexa`gShmRh7_lF|6YU|4#bgmzcs6wHo^0f0qbmEi48i1eMv)kjtBguCB zaIfDu-=^R;eLTdC?ASz4kU6HER_-Mp;&V=9Q8GbX#n`x{4US*tWlSa$?v3wjm3zlS z;HS0+aJTI5C?pCoUV~Lss+6rMQGIo@T7$p1l_@pF{6VHULpu~LU@7q1`^TEfe2YcC z71Dl!$*+^f($IXRj&crk##zOzQ_FjXkkjfkSGi<=X2BI8<;{#BH;Eo(6p@rV~s5ZBNKRMX!W zp%^SB{lh`?ULtI9NXq^HnTPyx>;5ku(!rbY+P>w2e5EaaFCv1s6W22zbgI7OV6U;8 zda2@}x`RHi+^O97==H72aqVn8OMfIjTwL(8S-L;~iYLL+g~?vZvQsNadP5TOO2CWM zhvpXWN^3-uBZEU~?_J#2g_abKtwr~NQ(CvewkAYOMyIbAZQhK@$rLQi>v4VR(M3T&g zm^1=Prqd*)2J`vZl~}S#q`%oWmZ$0!Pe)t^ou4kbRsmV^_EUw4y zZ&qmOl_||cdJ2%Exk*xZ=SyUTS8vNFqJZtHf&rPQKn~W;>3P2>PnnF(Pw!MPKb3Gw ziK|Adazw53gm`ebyOrKRp~n2QLV`%;v(qywuR~-$YOZpbQJueR)L)=2X+fbYaTbe- zYF({W_GU%e@d0f~9A${Ilk(?7&Bz*VNp4AlO+8&$@;4hCSFC4fkq%Wv-l3d0SAv*c z6+$W+%PLRO_{^SwkOTVp_#G8?w%p~GT)Y4X@y6ooRVNRf6T=svwYvv6l>&ORQlXaw zT~gF51Qk)?OR7DjVG3xTu|ovrkhlHQAa55r@r}J~V%U{MbMKlrJ>! zsucW*MN@w&GD50)asYE7|Hz>TmQWBp>ZWB@Fh!dj|E}UPwr7z-W&wr8)1F8`JLP7P zF;r|gG?}alp-5&s-cnZHhabp!+rJ`9c;9gwR~*;YAzO^4Bk?u>^i`<0vU5;*gWFYH z-%Y6^LVL@;k$EECsL`s9-n1RFlWY0!#_ba}FvMi-{Rxdcj!bHWN$IVwOQg1L9v=0` zgY-5wtUo=)V~>Y#?%*Lv*Z}L`lF47a%ZGn@j+w z)`_!_U<0k@f{>cCnSkfhdi&R1f)+sl)nf1>Y+bNM8Q3 ztPHBO0@RD5z-zOnlJLNwr;>k5pqjJihqsHHKYBJf-$17#6aU3N1MJIbvaVyh=+{Va zVTdN2&mrbrr%hp3LC(B_O2o~p#Kc((M<ja%bK9=R z=MuevfJYMdz;DHYwUF3pMQyrkU!w_RRl;JxPWNTa-GE+IRk(kAew>{&8ii)76JzcW zffG3JZ`z(ds+B)br zCyha)-T{3`3PsD6i@RpG6L8snm^=WHJ5hJo2`xH59PPu&2q~qeaPfwfHble%&Q}-JQ}>anxq(G+oT&}%oQ^?tL{ zZVp@hPN&{HXm%!4BqDU&9k+&^c4x|?o5X#Gqh6~^jihONI3VcU9Cr^olfiV*9~}&u zgXV-HNC*9cc4IP{G%0J_X!pj`!DQHKG+K0NtdIKRdVScfGb3iv;|&Ls-jM2oliqkx zpAPHO&Ot%B*(c>^7DtXE$3z4m-oRk00BTddO8tUea0O`CjoB09rcdF3bS}|RFDuV* zR8OI@B+4?}X6^ZOO3y!<_;5amO^QyXWeHGW3>q%6j(Z^SNsAj2YKN* zNtuAg0L57>s-KZ@p-j{cIY=)@wWHJ9Dk^f@@7_>YIaX-SZTDwgqVxdE$Cd0w-u_u1 z@Q4DZ78Da3vVx!pcT61xdDHsqt0+BM(k616M(|waznczL3U*@y&AvW$yKoD}6iA!- z57>;mCvS?+JiJ-_y>sv-mdc6lwM!?97sMh(zmtEBRT3ACWDpn}Y|C4?$lh5pnNS*0 zQc}J|2Exs7hfp6}@{S>ZU1(KJh4r-BT8JIm#3#QxDZVo+(QC=*m9>{A+Io&jq;KD{ z(QwgunVHBixJ96Vwax@IjZ|5|5Gz#hInu1imnuQL&e6ao9 z!|g{q_bF_8CymmSLg6j(bY)U0YP?^eo_ToQeAIZ#1fi3nFLmAo35yWr?93jfq+Q=i z2bgOck8!#^#ou+Y!H;JD8kD;n(h9gm_-w>Tk_O_4ityiKgTAsbzBDdY#Wq)sQ&K7w zKrR*GkkTtvFwl#Q_*(R3SpDjUGGcH=F>=489NILrk9Ui zelxLMOQ17@L0}uIotQ@7(qXs9WbLE#^;%xTB?Kt% z`3p)XE)3@}sVe%K)!;+-k|$jHryW0iapy<*qkqcEjS(-q{XQ6X=~Bkt^_F=*Sa|0Y zX+O-O@Hj1vwAQh+)ODbo7nl__j)^=xrLlBJ-W}h_cN>&(0lQ|j@VMR7k zmMV0eG6X7z5;hzPcjf0{>>S?sUMH0Uvs$07(eANOo|DUz4M;XQtUcAQDba>@ym~Sv zvxL|Na%Ok|*M3n8v9=I&$`PU>M7r}0WO4<4%X5Np6EnuQ=roU@;nNq;-8k2`38Ih) zT9xa{=10L4IqC8xU*v39JR~{_;s&sJP`;^+G#J#>kjW5nTb8g)eRmeqFrw;t%1bEk zTmDj6%oVi*1%y_7k9&1R5Wu)da&{Z~j=Pf-)rKX@q>xI5lkS|Ph;+D^OVW9Q{ggHg z15}B$2I1C@rJFns>8j(`PDv4(DId?uF9I8_pK zdcjmGipHLJf2QY~r1Rozb89z$IG)9)yuZiMJl9rGij6!vEsLoGGCz zm4V?F&jd4Ve)nzxptvQ8hO0vqY4!C24E=&e7384jR_(a`2(%u_FC&y8b$RPeYWt}4 z&!F7~GTmr4dxLtrPQ@RP(Ot~xdZ*qS^jd>vuiox<08mpgXwdFA2QA9{G%57cY^c!B zpi2p%7C7p5ui5Qlj5j;|0e9CMV63}!u-6#4%~oUZ^Pkxr)H}?si;>-7m;nYe6^c4t ze(w)3_^DL{`Wk#U_-iH#k{k4PyV-5GbUu;;+Le?A*$IDJ@}tnJplWI{94ASPaIx^! zYg2|1Pu>&SGFmwa@`w7`yTh&sDH@Evy0!giZ|C05*4@4BswG4kwo02He3E6d!hyU}PvM+__L7(tMJ28&w!!u8 z-bEBkdqty~PByQ8SlmneXF4%EWsWBIS<>$;fkv^jL*l7uaHJ?gxMcVcV=%h{lmN3$PMh?#`!NedaOiFQ*r4A^>?+ z(Q4QSNP4sKdhVj#`HOBL2`Xj>Ss!2DVp&8#txy!l}zC@gve+Lb$e5a=>%t(1&H3?879$4mjS!` z4x&U+7h@adC9{tujg462u$$*h+(_l(CvuhDB_Pdx7D@A}#8PAMCL4_A_vSBG@R&YS9(@+B5h%sXRKk)0ET4ud zNnUCQmo9iugSfb}WEkgo-M`T<8~?`t-T62E&!RUA2QLdEKj)G?I3LXY0{K-RKHB*P z@mBf$_8;WnP(bDv3N&q%Y@ZaqnQUE$*&v19>a1`}@Oop0uFC_H#QwMVyIDR- z*VgeYvCG20gPxXi$gK(uY#=Gz^*Xh#I&^9nbQ}F?V@%jU!GvM6F|3csEo;}O(_wQm z>@_>1!9bl84qBuBsNF|P>Q4_Ebvi3_Q1g_{HXZk-1G*_Rx}D~@J|fUDYK#u*B*gVv zlY@T0HEE7p?E|7AZTc-t+TBs7-a1g%nK4fy5Yru@3f9}x!I-cH5tR|OAsKi?u}6Y3 z?LO@u2&x>6s2xtYrawGD{TsC>t;uLev}4qn_Ig-9z0RQ7rwPPl+-UZO&4Ytse?sGj zc7N0wH~O9KkkN>k^oako8sp})Gn$}RHX40Y(Lr~pj)1hLs8eck+#hxhM(yU9z7(U$ zU_czG-EI%a0Axztexo-$7)_`_*=tRi>6js>J+k#WydcV9eM~fGG$3+xFr3tTsJxxl zxJPE-kb;%trs7JY>7Y$}jDty|+wIh4+a*&Z3?CJ52v&6>+p&*+MU zt$}Ht$39m8KzBn2NtH-VE0>6pbC>iH_^6})Mau61}l_p)(u1xOJFt?K(YT{K7SX?$! zy|VLDR}`Ii{94O^)-Fh)%R6w%Na7tD1ijerPIf<<1jWhpReB-wdpJl|+Y&hr(oJ)g zg9rO%$z{foC%}4m)}TBDESu4VYMEqZHrB%)>Lb0yW@ZC6GCpTh#kWe<`ofo&+0f?k zFy5c(n>%H<g!ij~3}m5R&Ri^zBuC95Rnt_l73B%J=S$j*l|V_!2Ns}~##9)E2ADCO zD%YNY9;%y1vo%%E`#MHI2~Rtu`ZL8X}F3&%&~RaR3clX z$=q(#8Wp0>xS_q%Qn{JktY~HTOWPq`;SqZ}r+4VpH8Y0`B~avvWLuSuqGF&Ks9aJM z*zH36*D7BGpg|519l*3ihc?#v1~h!KaeBUCsaYFbkSVhIDG4@4mcea4+arSptTJ8V zwVm#-He!bO5*N{K82vCMf)bD*b{6Nqm@5<1?S2Ewyp|q%*2&;=jBB%P?Qd5y$`VmJiy3=7mY^eD`i?^$W#>qhe)e6!TdMIfPWTgIf<64r0ltxf;V zX8Kd+H(qZ2YK5=#i)dQ^dbnUCuEej#XBKv_e_!iQE47)fP){{|NGVV+NpgX|EeY4F zIMqegCZLuB2gVUs#VwQMRT7#|1bAD25J?RUip_bl+Sd{zerRSSQOkVCuT%RR7mqq< zIWc&WvHqMMAMgjn%IPlxab~rk;wOe*ia0%b7cw%0Tu$gP2Xo=MAi~F+D|CWa&vHK1 zrar7EOBA-Hk+7@2miz>XHLLuiPtx2`MOsIhe@eqLex_i{i_sAddosO7(~DPfl~jpn zYpnG&7);EEU-R)LF>{2?uA^#SJ{kAfD>@oCo-GTZ0zvWh!@2 zgr0I8xTITkj2$_V+g%!iW8L8DZDABp%pTAe4q`mmoepj0s94`<1Iy~P2R+n%s(LV5 zqusA#!_c9w(QFL*JcK89@eotkzSF}Qj$d2lKI$DRfuAj)86VenK|`Ldi5U0Am)vBB$*+J(`T|TRIsd^ zg(gsnsVs4Mzr^%Gb8zQtIZf{JjzKsKrYShP)l;pMO`-XjwwF|O&LF;79VsstxD2sz zH@iS6)D-1}F}`YyQXPn+BT-sp8@g_5nwl>8EJJQ3(RmWL2HGK=XVVmyH0hdL)*+k~ z;Nh^U$hf*M@ehHSwec}tQoISbY9gcq~-0;vtqkfzSV`B$cRuFNvD6GIMT6r zaXd*Zc<$<3623TE?UtX`xv{*(dcAkb^|a#R;z^T8g4)D;`GRFBZ^bt@Pmd>*-h5S( z@ae89Uxl2{AL+{4J?KKbaKm~fc(-)rx1$gxpf!afpTRiMVd^%s4gO(sP2Vz|9)2Mw z%tl=gmV`q|Rlpj>+zWH1`&RgG9$2-G8rnHYjvMvDe<*Uu-kgp4&)M|-eO}=q!MZi_ zTPipAZ{CUs9%N9s*DoP}y#1TnTz9hDrI+mf`|rJNb(m5I=*4n4NQXqGa4tzux9Xid zQ)(z`CaVdXU*7wC#ir@hcdXzJ)%`JKQA+33Z2next$fG(ZU5I^?!Z$JZ2PrI;AC)g zoE(-(fh&3_&AppJ$#)PzXuEfA-ZbG;+2|jWk zpE#OVqKPFp+9FQF%4IV-d4c;ts8*QqUEbd9FL_{8~ zJdqTNoa1$6#Xfb7nLGD1u)dt1_fOSMaxhj>0+(7)rzPE1QL5`%iNE(t)nv@yZcftp)C zJ_P}sLa=uH(yqukdw3$e+1wx~(qJL{yi+__C?_AY0J7@gi_b}Gzauk%B`&#p+=W>c zf=(d(8V1D0sXSygolAkY~RoX+Vh z$ZUn@iH!(Y6w^d=Fqf#Nf$IrvM8bMm7)Fe^qyw4y^FoHtxfzvsFm5TX%)e!gDC;*b z2|Y{0iIF7b=7vBBzSP-?5kfs$p-`2=)pG-+XP2}j0uv2TEG=RZG_^uK?$-wm0tIOJ zs_BOskD`rD(X7ihXtt=z*C8zfg&GVCnIo+x%DC(cRPYwj1wtDQwXGtC&}pNHxBJ8r zh`)52otEs0PM0H>=qC4GQ8%oahQjoM1G2iYnHRt7EPPiy6 zTkG(bII&s2A;ZG_*l<)L^R-dntW;Lflx&JCUs%;vyOmB~&s znd4pTz&Ip~&PNv4MDZ$naK6?7Thk=grN8qZsO_~6_xFL#1Za$Wz~ke!i_@?wKK|Io z`4G)lO{~r?;=b#}UdFYkon=Ia9`XdkM-QW*h zul(sx=;gC2NUN1Z{IevFtuFDJWDBrM4x6{GDoGR&3?&pthAW+_oD~`SFG8T z(4;R;9~{W^0er#>n2n`}FAocWE)5%25_HUXF}Mi%vccgv{sh1AgX{N|n&@#kMd*zA z?!lzJ$A^lYPiOaOo_9RmQN4~+8YXgn%+rIH-6YH0!M;BM4g7oky9dS60e_3eCVDDL*g${wP1Cir}way{hSX-mo~As7g@Yj}~TbM`pR9 ze5y=fU@n8YAc@chrDrff(5i@)%A@Jw_Uki?aa(Pmmt!mVo3M!SrV>^L4@vUZ3ptrG zSfel5D`8$dQQYkCYf&-Ac2&xkmwAIZv7v}>lgRs#1B3MD3v&`J zm7H;#|L_0L|J!4UqC5{_KS><8v-Ml_1eaV~%v}<;q30?sXey`I7M`ngW5Oh<;NkF+ z{l>m1XGVtw@yH34aGDDQnI|f7AODS?C%h2gKx0;qm5jiOl&6M5@?XB4l;u&^qx#P^s2S6ZDs~1fcARPQ!#nGw+f# zpVwX08pg1=YZNuG-^yKM0l1J?L#Tl=`Ib^tRWyinM*KWJv zSyjr=(3zwMOmX-ZJo?N6CTg5w1sH=Z)B=!CnO+=78_I zG~?d+VP)J#Y5P3bHN1?6se=Jth=lU z!#uFrr8q=Lua3~x3u7&q+jc(P?9@r+5-A+D$^#sSk@Hb{t%WBBGb_noJ&B9*^k*+e zvx}pPm&T3B&JzmToMu8cO=uBOsnkGl@zbx>8~onr*6L0EZSq;OSF5-9z16AJ+x**Z z@xx~we(&&Emw&r_*5$JvzxVj8&%ga9Ka4Zr_W|P!`XCu9HEOWe8a$)XX!FBoJcpo9 zjZ#_swD{@O8a#)fQLVu<8XZ3C@EOkmDpzapj7E>odW^$!8hys$8Q5|BbZbqXLD5Ej z`n4v{q2+O{$up=2&rh$`%*5nyjlKk))&uQ{5O`d^?$`9l4 z91DO93hfrA!Xa+xRe)x>%w0M^m&%l`Fr&nw793o`37SF)A<%iFB4p|Yk7SF)g z<%e;24z_8n#WR4`@zbrfc?M=MKmA&p=d^j3HqXE;=BHO{^BgSZTAOE(Xu%Jk@f@t< zTAODO-{ObQcn+3ujZ&8UH2Gm1o+%em0`SwTb$Je1B(*NjAP~q8pYfb7@6zQNUET%jzSiYAUEZb3Gw8*m$Yrg|bBImy z)35b-PLFr#@eHDv{O}pi0g_qk@r)kt(&JrvJg3LI^mqo*KYsX(=McWE^>{{)cj@si zJ)YC!U3xrkLQwLZ`2^Dej)YJHy5=Uw_dqtCn0U%S@lIep%x&olbGOP_b?^BjVt zwLZ`2^DZ;+7{FXJcF1iKYYe>2E5CFXAF23 zAf&Yc&l&J81D*jql^;IiIRoBhz%xkt;fHZ}&VY9r@QeZPLb#J7S%GnS=*m}2O>?&`UMF!D&zZZBOtX9`dR^G-vYm??iqGZ9 z(|6}bXR?bho4+Ox%_=)au!5vND%XjR6Eusqcf-o=@PNh}0;FB?u+sD{d)lgbnoz!M zqW0yA=S2qFWw*uG(Eh{GRRe5+;5H*vw)&TJcZ#;Tk2 ztuFT~+~JXLE!+&;`Y6h7vVMyfxJw~jfMNeZzT)`_RZ9Jp8Ds4P(+^LjLC)OQ>A&-x zU*wRSb#igyi_Q3=hEBJ3(=V#sto+(RHTgMOscno<1({#W4yCC4h}@J_x|hCM;|oH; zn%taQRIItMO|wcj)YErL-Qi7s@JhuPa)Xc|GKn3k%dh1F+kDuHIdM>`v@FNNe>}35>~=4l-emgC$UF& zP?#kQkYUJ>jAphN6?PQW(TI3sk4TxPu9}QB3qmN{NG+r68uND*Uaf=kBQiaXbz~V# zM?}%6$~S%GR(qF4mF={mA}F=0P^@+hGZ__ggiMnb?fk*XErn2R^OKRosxqky0W7#H zt;@lQ7JQA1bswp=2PaR;K2BqCjJN)z{`BcOzi?T79Ty{aFpQRXaRLYX%G0dP8jn_N)_4?~wWcdM;l4rSvHtkePwT2;4`cz- z)dTH+(?`7J(tf5{#-^4h8k-u^8IRW9_jzf@ABU-xH_J|6%+oVK` zKEcydW$yEI==fmP)=xes^%xY8gaVfq3Fta&I%@h>Uz7s`20XuIdz_;LT;~F6-qPLf^5GLBAA?NFlS8{xAURbn-@ISkx$Vs-M01Kt(XdunNt98;e#uyYtfbE8xYIKV3SI z`}h9jv-ne#C=sHVyKTXRIJVzkzh#t+L*`1skoAv70D;VtH&QR`VkP(uo|Ccxf;?4n zSuWP&e8_zk@FnFkP(JgtA|F!Ro)JJ^CM=^u2snUQFpym_kbHo1Bb5d+|Dcr` z(=wNC_h|%*&(eR=8%aZELn$NUr^EcH!yisbphyG=(J%|7J4HKeQ4+zGr$G%8tCo|{ z32TYs{$!-Zl15>jR5UtGp!hePjJVV14AK5D|Gt&VF1%AY7Pff?bs=V_4x;EV?vi?T zI=k4kObl^oUuMzd#)fNSg6|jqZ7a%*Gu zHq$dX?*0PK=gUh~p;CKpK$F*NT05+9SF_&eAwaPYUQ9cEc=Hjq>t;@A7q{yB0QP zqXFxm98Mcuv6;!VfgC=X4&WY`QNwmejNLg8cz1T&XXmw$ix<>y-&!dvSR(dq6iC*> z8gY4zya;SiHdzHDotv;`tN-(qCRmIoxqI=Wm3i`B4b|&OB7{xunO456crO?LE*{@y z0hk(*G)!s8OKOFiDp@#YOC{S*GuakpMO01!)r84P!cE z%)?Nk7ZyaIoefj6m(&JR2TDqV8CoW!^UShBaZ?uyw(92CDvM6xe_lVC8@U5oQf2T& zr%49*BE`Z}LUyQt%7{Mkk$`!;q;3`gE?mCVbbr;$9iYjm-oRGUElV&e+}c+BJun?U z*c2YkTT&DKNhxvpFr_zQf&vltHsM zL~zpZrGlHa%9l^{jjf7l*(dqcutDwVK7VaRyu*FhQw1mV@;V}n++@tV&v#Y(~y6UJd?llIWH8do`k3?B5`+7i+<*}?^=&2;&&7DH#uw0 z&F6C2{ZaX=5WP~>#m*2B3;=b|5G~qH#kH$u!|;nK;xEvmt>!Fo#+S(X7wH`emA@Q_ zS95FAn;1&U{k+D*{G_Mq3qKEbj^N4a3?-1@oVprMx>Tjm+ltgtKqNcgqA=rnG}RD1 z`wJC~jzuOx*op|sm#dFq3fAvXFcKTl&zXwFzI1KSyGU7o?YTEI{W-mvnz-n8lm6Oj zA?IZ^*}|ORE!zCL*s1i}{Zu``r2N;0AflBOmQ>=8J}6-kwsJ^2ST|_XtLe;?b^0%q zPDK$jz>dg5=At!sX{Dftv|xMPAEw2Y$NhKZhI%n9A<-UYmTF+-M}tgc+aDs`G^nb%87<$4j#L4(6%) z6_2<;#Ua(ei&IvN7>os;U$#O-A#>wtKqH>G-c;^HP{kNd^`=+H`kCdz=y#GC=d=}+ zU=+?9YSBug1cpyL4yW*i%L5&qa984J6|<05-VUSkE3FWWP=<$q_8j5cpsML~BhFBH zw0o!OWukA>36sSm;dvncmj;kifbo3669lt7hL&8+S9&M@1COH^mAmOwVwUF6k;C1o zAze(b<5%SoA7Ij2n!EJYbWt&4fEn$1-jT%Co|_DS?IckA??c+>I(4NCq;%z)M6gN8 z=Lq;S$vw|Y=a>C`aiulr>Kw(7dUT&wnp|{q2BqGVBESa?eSn;_4{qLEPcbmQj@y&7 zQ)8J%RY?3JlmKver&bUo0g5Ucm4@&{^dqbD@5V;b562hiyNsIeFd}+=vGzPUL}~V{ z*s-$r4E*(^CCs#@zeAY8<0$92Q}oVeTs}`@UuW=|%ITma61Kr`;_m>#^8w)`M@93y zzR7?5DD)4#O;`mfK4AoCp4r3$(WJocq=&a9x^uT4>#(x`FoMTxI>7(uL?K7uFi6m_G@M>#n*ik^aOR&OH%8?y8gW{8l$W`x0Ew`_tSKVob0bmSLK*V?Y; zYqh3#Flbg^t3|P8TDdyhr580@C3$6@E0$0?-jMcCl4Z@#a-#2bPqfu0yONHwfw6j) zkDCse=xH{NOSS&1h%}P}GbtNQ?wIjZs3mL3b-{Zk<}q~GkVtJP+%m>e%{NnWO4)@a z%gVNM-m;QS#hfs*QYfE^X_-89;|yX;=?5(Pe6p2c2w*?6C68^>XzQAya&vN-DJN0 zOWuQYHaIDQqAsh;^%Q*<9X({GDX5%SJ59mGg$+H7|Tb+Fr9EXnwjZZHWQ^8 zdgNndwy)yNxhefzi9d5dKzuWWe=h%T2K3kQCm;ueFZmPJ?;-!oN(^PnxbBQHd-}@q z(S7gJfOjpOx@>z%qgUR#U*}b_HI8e|Lt?pazzHt?_t5lQAu+rZmvx%b(Lp1ZF_M!J z+;R5SSF$$1xaQ+ocbJT@GM=zBM8MF)S*-~CS@C{2gD>2VUsmSnCQKOuN;N8a1~>FX zXBl^1Hz_;?W-DCPw00eC;|Xm3+0(G4qa^>{+_PDuJ=CW#k#LHT+B7j|bcG5;&&n3B zr7NIFRQBGwG9K#PliO4Z_vryx$cVif#i?BLvVB{rsQVONEmi6>uZB!>?!R<~-N4(K?QOcP;CKjkS!o{_0#$qkaC|`GUcyuzi&3=T&=k!>Q zualDmK$#;Ov|o0kEzAU^X|voXHC8rUnA$`&QsLxaV3HEZZ1npnekJ9U0&Asew3EGt z+BhDL&@t!c6hqlJP@L>5OQp-!tK3uet)rG~UL4c&H}A7yc7tzuB4%?CGTP<;6+Wsb zIE$X%_TxkiGJ!sf3bixUx#JbBCf;_uthB+u?&*pOYZ3u-i@gV%Gr0gciRJlq*(bTP zb8lOJ09>(U_JAwg4S!*9ZdJ9ZzjlBlVz}&m()!27J8@~6 z`f%yx8SnD{iqpo+j4y(%Ymw#0+nCa&L<}bW3$`95RbHO3JQGjG%PCQLm&)&-?sr!z zz?M8oL$+v@FWtMhPG9fLa4Dc*qve_#i_Wd$c zRLOYUA@1tE9F(P36GRZrkEjYe2JS6@MJ4 zo&dh$^BL;Y39?CyDlkEokdA}+6+m8e7BLbc@~<>gKcOmsa2 zbcjG(n1fUPc{Mz@jPZ9YkYxk>3EYDsbj7+HogAFTn`tJheX%f;`@`4jS&TwGn<*4R zX)0X0P-a~em#8rxv~Dq))MzXJ^xd65Btm>F!JDc^RsLXJrhRHj*C-LeLd<{t)*a9DuLctAmcuh|X;5ot!C(n)_7VY?rOx{6^!K$Fm|ulM-!&yvASz;Q)nl!2Fu>@GJDl zWSEtPGUE8w61w%RMRmMcuQ+}*8C`r+yJ_YBSTk;^QkzQuN?yK;Q~pTqHX(3iMi_@@ z5fy1P4N;&(GvUBeqP$X=BkPW2$f}^ynXtme3Nk2=rVQbAp#~Fj^3ewA9a8keKLzKb zoQil7{vCu+WS;Gcrh1B{KaOsO=Wt8OS}uDM0e zxrBPRuow;+%m3H+s#=rg>@%~n6Ij73-hd0{oO$Qd?Iq+ngUMHeLO?_pX#y*ztFGXX1< zEhri09aqxp{isGN49q2=(5f|H3kt!izh0T+ScbNt*YFuxbRRuG^cYI_rcx?Ez-*n; z0^7#siI^73#ws94i3H`-a5(94jbobqEV>KC&Z;D)j}-hDUaGh8x|#f^tIRs@IE&#J$ z;5E;$fXsR-Bp_K&Mhd9xJ$8E!$Cy`+(u{K7RcQec!1njrsDRSp(F8>@1QQ3DRQjb0 zXqfA+Vlk|!K(usGa}%Bhtb{LODLfz)51wvmXz_w#CW#G1Y)TWF$Kat^C=rG79Ga_# z@pBy2K6^{wIZP5U38z za^}}*e#HgxnT5jqca5p|s*OcNGu>5CNIH$>L3LL~plUjNph*78ZF#5-)wWnZX=wpm z)RxA#4~p5Az5&LsWYlz&MTVu~J^7ZUC}sX;m%+5n2EOAoJh@fT|7Gs4&p)e?u~$lo zUb~sJznkk%E1!L4B4hn2?>R?zr{}vDxZ4j!dQWZ|eRGU-FCi5D=D{=l#+fIUqu)G; zacaMNw1*Ep2IzOh98s6&SMmZrq;`e1;c|}*}Mp=#^*PaEiJ_ATtM<(0c_Wh z3XMZ12PeyKhF)SBLF}F=q>L|tFNAKa#8l5`UHj3_kzg66mAA!tqWeLih&u{ zumR12S7RdA1Cy{Y^}EM7P9{p~PEdn1`C0AkgQ;(?YZB~A4BAP4r?;`xNgBeouh2&>I6 z4(ze}Dxbo*w6;bXGby256LpE^OA`6@9~+d0YrvQUl9&gJ2#f@Mn7QxLq_i_}@>6K> z(t{taIz~&&8gJ<|kSPR|QCd`kx6E^Be{dV^J~9qUHet<+OIyl_N&|1e)Y+xU-G}d zx%QWXYkzs;+Q0li*Z$={Ui+8->)Jp6AJ_i*|Gf6k|LNL4{jb;l>3_cVPyfrczxe3d zU;KaUy$N_#MYc9vXV=L&`(z*qVF&~=0!bji$p9n_0kv(l)o%Ote7)U@IMK?WC}NKp zAS7W5GsqzG6y`96S?$(NL9&f8VwDJ~^QG_ILmPd!GM$p6?!5 z`>j=b)v8siR@JUO#xyz=8=W$ZSZ(MSL;DQf-O!y3LmRGK!=(&YoS{b=-WbD(HlqE8 z3;8a?m1?-s4Oh0|iZoo&hT$>r({Wl4OVv>Ww2_N)Zo_35t|CMCGK@aDWO5%v4>xqA ze&NYMpd1j&3^$Bo!^km=IKxo-g()LJ{q>7?^#P4AeAz~14_#i{4EnQ9Ex4>pYu^R^ z1?dm*On@1N1nz5gQ8myrG=(ywb*bQ&l_H?CQw8`rPYjq9G* zjT=|%#trjz{-a7a{Jp3Dj46M<8zmupnN0hx)X4Sby#HyFjs^LE4+! z4de#-wKp#jG*El4=K>@ z?7<-L10q0OK&haS+TFh&C|$ez6>4{y3xst10PT(&1VXulQQFWCyC2z(dl={6dKbaaG{=oG6XT%B};%F+?q5Ax{9 zQKLY)pd3)NjvPH&M~*agWKkL@8#D}5q$7t$f_j0v>&Ri5ph8f-j?8p{`sv7&P9P0J zUeaJ4nb<=|_Q1YwU36rpbR8KR2g0C>P1TXnZXFp_3>u&#O~|^3>c|MlDda22sV+Kd zWWJ6X(O*XurGv6T!!VrVbW~QBj_Nl=NA>9iLcI2M>!^&8AU`Mu)I&$54F{!wl#WV< zY_Hxrs`o$;$|ep1VQNV1rlYzf=%}uJK&Yd05(xSe@<5}IPSjC|u_#Y22>K#2K&ZzZ z1wx%}$h#ry#(u3qs6!714bV{r_F)c*awUUI&=Bp3DFTfGjn;V&DSC&&wm07ZfNf}%lgP%p?10_A~P-bf9+RD66oN*8px*^~ zgEScF98dy?<>Eofpst|qAk4t9+fc9-qXV-s2(oCSp;M5rLC8~>f)#CNI}$;VQ5gTl zowavl3J~)~Z_EwF7@NhzK?xWe7<;2Jo{J6bNyq%s6LZ4IzS`3(N_+f8IwA$*D$~>p zul`LN7&}Hx1}F{G50nmq?J=-D25pPU1fiWVXdirQz_-4lLE4NOrcI-ZHoL@VbI@>Y z7G>(#s6-vxD_6&M@26vnQgp08T6c;p(w!oP>Q22fbZi3b%)@-)j{(A#c+5@yIPHnW z9F&KV5}SiLs;l;34vFYyXm=FG_3%QZ`|8M;6z%C2rz3h}eD)uKyd>=&G!Sj;q1`%1 zM->j!?!lNlRgQKKMEjDlZ*UgkA92xX7<3NO5gcdzF>em_Yfm(EWWts__$JTPo>4B$ z!AY2RJ8MrL#874o<{iv$Loru-M`+KW99{9ryL#T|?-{;4!#Bk66&OAovx*I0q2cRq z_y!xk9K+Yw@bxo%8HO*_Fw+dPuVMBv%mIcu$T0gGW;H54P*2 z!9OAI6VTuF+~ys+qaUUe$B2HR|ctUeohGY=G$eJ zo;$|W^Dh4lIzQ2KFaJ|7{QR$a`k&swEZ{csF^IEGBX@-1!ZeYAp__^+APty?LrYgv z`$pq%kb>#GdzAL2bj36P7Z1olx4@M>G2OTlwI?GCm+8lsGN&!MPEgusohI=xmy6kN2Gka(=Cjw>j5YCw1 z;&ZhRQ?WN6-RM%_JwWl|x zVK0V4ALu~)a{53XA>Iw;i(w-|DzXb~M+o~mch^2l*=BsIHhbeRKeDHe9E32;OoUyg zHe({SnSjG)e=H3~qAgK9wQo=tlubrmm>y9kGO|$n`sTq${j}+a?(728hp9LTx{_ic z(_j0#_0c|mJnF$=ray)Orctv9`U-GpkB!hi9>SAc+Sh$J^uyLc@!B__EA(NyPJw?? z<6)0q`w;qOH%u)#SORn!jOhf2u|YUY4ddD_Pe=A1q_`>Pv+m2E}P#0b-_St~N7zY7>WQ)0F~y)8UIk?d^#^90EW0 z!<0S%whW4bF8Hz_Lz{iOW4QsjXyo-qe`49<8vvbV6l_g|UvS9kjd&Y{!<;WhN5;X1 zetvCcLH{uHQzH5~b0~&1rkqi3?HPf-^k51}EY>EbSWl{k?-5IVad_%AQb+d1VcG{j zV@mS*GqtbNC~c-9PKz!5RKT!vMC8mg&qmom);w`$JCnL3pS!(2N%HS@IyD~ z9S!}%2WwwMr1o|3KtJNwk9PIM;lPcl)D2rwF?P7bz|zXsyBo@){i$dleCqWhE=OUS z!?fz@orCE-19ijSsma=m9*L57qr0#pK|%x2}=`hQ_<1dj0MJ`Jy=$mntk0(o5^TL zJbV-fe|AB?WMd4YK5r`KiByckLd=^nm`7vLCs_J;BYGn4k;XF0+Z~6+Y{Uu=lS45F z`4GcdD4&LKmV!BG z^ZRPwP|PDkaSXs*;PWDm+@KWrG+u)s+pSQW{So_v;jaS3QaWM^#}Bg~`glYf#t-_w z7{19X0%3n{4hV6P+Y2!b-{G{z^ku@Q@N2|CZKhzJ>kYqm!(q8U{FIrdy?t?dF)SK$ z0sI<`V}SDDIDiEePPe=s#4P4)FP30l5ArcyyeT+VV9xXO&()rRh^urQUr@Kl-v@q9 z)}8{43!J8SqHrpPC6337KENqkbOh$r0a%ve6v2a~ho@_IUDfz5s7*%~#(`X*SRGT? z7nFwdK+s^&0MIbd5FK6Q1I2)1K~eh5)6t+OGtAO0)?jR1|-G1)OXCabUEN;F(qhR!r}wxI_Yda$8; z7&?io?wIsM5Zs#%73qUP`Jg^rxX1QM)3NBu*n&Xk1$a? zTH!$}Vqi(P6i||m>4THSoZdQSP%0=xM`vN??u+GqkzdDjD$p@8@L~o$n}c4=gU4}l z5bYbTJ7Hww+*?P-!(*61qEpaQJ+L3Me5}7%M-2px#LB1;M{IXKPPA}>gc&_19Vb*h zF*EeU4AB>}UOybAarBE!!$?oV>TC!`{U{tw(7TbvNGqHy#$slOg)CMDk=-$SBn`yK z?}=FeD_V>+H5D z@_D_`QZ;A_UQ>T43wN-8p6%Q+k$al_w*D0R87JG|v3PZOT*qT~Xwr2zaje}i5;qWV zSCn^5Lf;q3ao$*-WW8)87pv`y!}h0B@NB?CS^R?Kq{pY?>g|&c@zIiw>$`Hn^x>x; z$6al{L12G8l~>)ZFQNGO?Jqm&!+RN%v+UQ&Cp|fc-*4jI7sczya#0s|pzzExo@Y(X z;$P&FtD?MC%^Hzo@w`@T-Kw%K)>^y&yH(5UDgU4AW_!?Nd0lqeAbDk%-=`5*WlbAo zH4T@Z5dd_f^Cg|ou0go*jPG0_ zL)vG>0q#u{J9Szb_`PGRDR@CwK44>wP5FQg6l8J)VKSL|FI+kra|$aTp8BkWqJ6)I ztaVF>FAd{;Ove{a70AS&{|e1VkdQ#;yu*>^^WpXq#$=ZK88+LROc_6@89ndlv&6q- z1W%mg3|<+#c%$9Au?ly|AG{d<6dX?9vHjQ0I*w}YaQu*y$~U>~{$wXHAg#~u*b`T% zAF(5pw!g3RWdp`~3l~=0a6eE&@D5J?h(O*yMmR|Xp})m7Rx`4!Ua)V>IC++XZpgHI z&(0nHrT5&Qb%qhDv--`MOBttlYQ@R_SLTMtuYCH!@%wc?lkdOiPUzui!fk&9($Detr|__@HL+VYU~ApIwC2h%x1yQXMF&P;=$JyI?a|~I z?8Bo<&S;g^+QBPNMp$FV?h-r?#IKf5wFT^;v03Zr5~ho9Em@MbpmSKVhMMJATa~n7 zxP-7hFW|3|%J;|QAc_d)F*K|l))9j37^Rq~WV*VROwlu%WjuLpoVHNbEQR=%Xmrzo=Q zeBPnPtNKmp~-T1!!uuBvOdD|Z3AVN z#u^V#f)j(ay|ULP9x9>;YHXT%12S{?>Ww?5YEeANoeck9Do^13ACevvl~ z&&Fc)Wxsckjsw60c=P0jz{BR^f~9;5p{Po8%95@!9R0@i-E{42&lL z_+%22_R+0FF6-u}@wU*DgD7qb;mILOIunil&no<{D*M8R6|E5~vlb5^)?c>9WRHm{ z%o6-jWeHTeNdAn$cvQk~*5EmVp#{JJ1G25M_c9BA`UgRdhbHhhXE2`mFakfP!yNo2 z87l{Wu7)`S@c|cR^al=1&GQdoSdM3R+EY%4cdV(ERx+fm{Lr7~df-|9dFU?~o;49# zZRg#~G#8inWaKD35Ow{IywHwp7?Ynm7zX_eU)z_+y1v~x@@$FS{D~t%#~7M6&JQER zi}%_V@|E6O5Cb>iODS*@p5hso`>$lAQaN`Tm-nw^p)dbm$yoZtNB91CzySI<3zm*V zSK(1Xq;vU%QGwN1-wkrPlq<00@+g=0<#KtH8%nux`BI^Ev~>EB9mH(r{yZCN17PT^ zV=TV|=Zrsj`Z?@H2+s3i&!pndNDV;Q>t<=|foZe~Z%>TlqTc$O%(6z4$xDKVM|*2t zu^$h2x{f>SXX~8(VIO|S@#Tv09wm7|F*DYGWv%c%Xl7AQZD^^_`a&~ay zCACTT`>}XTU%q415uc2bTOnvi+qdvhI4slfPN>LP%T&ifJjuIJ!20H`BZ12#cw`QX z6tVe-(4$`Y1XXDLZ~ajOYf)x*9xkw9VQi0!uycEvV$mk+33058aCpFImxL8@Nak4` zZVy*v__2=qLeyESX-ikOb;eHX@HIK>4;A72dgC8Q8cP>m*Rqb^(0N@j%Sgjh=9Z|% zSwY+}{2X`SfGcMz;z){$h;5fu2Xc{_ntG~oZ0f1$dHJcQN>fj5&YhI|PU-XlZu0V( z8h>i$<1Zd;JUVg8gTFrh&Yq3$?Ai3_kDq+z+0;`Nsi$V9o~lkgwI%gbdFrWIk54;Q z2_2{FM?mMP(l)4rz4rhS)Y0;`+$UEZ+x@`j_AH!P9uQrWJQ?ONHclWnbR zcX7LE?d46_u9NL9Znx~cyan4svRxwErLtWq+gfh7uf4n-+jZR5&$)bP@8u(NE+5`| z`Ec#!!^>s6_VTf^%f}C1J~msn^JTk4wku>?a{2iF%g6RyKDJl3`z{~fd-*srg=L~n z*gEb7Yi*A&VA5SY)HKX*Sl+OrVdbx9H7sh_HTCq~({-o!ovAo8^Gxa4V+{+&H7tH<_rnd( zH>_>g*s!HxYs0q2RSi2DpKsXHu)ASzLtVqZhW!nP8p|5XU#@MeYOHRY)j0bnjWvz) z8yB2DG-b-^?WcE~-g$c0nb~LNoSFOf(UQ~kZyzn?ri`0%Zl-fHgPRI&W^%KJo3-4m z<7PcK8@SoX%_eR(V{?ph$0&DpoljB>{)cZ_n!L~i%#`qO(r+mUnp021|xnb*qR zKDH0(gP@(*aRT+Ho?3XSgc}6s!q>`9*QB0W#EeDEScHt-47QT{-#&Kqbp4qs&|H>; z%6CfkUjKjpJ0%_e)6zzd9*s@7h`(US&|!r|14ddq_#|=|Mm>R-yGo*kU<_#Uf4O4~OQAoCM7&putKYskw zspF>t#!s6z-jAI8cPeYI|G)E{%8vi2GB-Cb7k>ydcS!EgT>Q~R{5?*8R<1ugD>oOE z2g(N(fQEpEf`)+#K}FeFdH(Eh<)cQuQ@iTap@!OqW4}4kP%rC^nlbvDv*SJL~la3v~kEk#~% zH!2CPM0M>mVQOII^I(^5#AeMl?ts454ac#gW)4zS_1Rf%d)Fehk*cauw&lorq~^n{ zz>ZDWu>x$%QPj~^2k!*tz>L<7G~+1Lx6OpowwZO=dAWIcdHHz-c|-E>H#zZVPmA*X z`MLRd_+zH{JEQOKKJ;$g8npHORm<{+;t!V=<`?15ljh>jk>(c^6bvcA-|Q?XEGQb{ z&qYh}K>45o&=Am2&@fOTs0ftn=Z2EG6n*rOho-h1*$`MTySZ##bNT${@}uZwN!K=) zFK#YdD`|8+!eE`GAyC^~wxPLvR&#k>bJ=c5L!h*|Y*TaDR>|DbTvp#)wo9~CHJ5E+ zq6`YL-6jIqiv(1yVLr8O69E)27Xu)?gPAO{UDBuv2~@PYxojuX*wO|FKysraj7*d* zaq@S_UTk+amqR(KgE0QDmD($%EmjV!wW!lj zM!`JPZVeXfTGd>(pYnFu{bGNql!7G(#b(QgN9Fq_GNs??F6c+SVAqQV6j{Pd zSYEc-mZTU8E@KxRaP|He@ zM`DHKtdcD(0Sm7}m6d=ng28ex`a;s&yIL%tCkb>J8i*X!3x~sOlzQIjK1nmoo|nF` z90d&sd$`Nm!VHLo1xz{Ygc-2MN0FBEQa+aja#=SRY(AH@No*=D@(w zc`Zku!xT6fUx34((H{HQ0}~#2e5i4RYBdVM5-7{0Z+=E}kNryeG##NXCY|$x|jynJ{JY)QM9kOnq$XH%iz*NXg7|TsA zX6igpKBxdR1T+*h3{(gz0%7*UhLV{5u%T=&g>xyLOYvOF=dwU9OXRUcp6F(YJeJ5~ zi9D9bV~ISL$YY5-mdIy`e3m#jyJ1tq_QutXGk?9Xan6+uvvyutx3(HI{mS}zi?3{~ zs=BhVuI9?-BMTpX_~G#nKR)HDH}}1H0JITQ`{r>;?>N8wt$pYBzIE{Yy7P<9uQS^zgT{;;^NGUb1u%lIQL@Z#bp=gU)*|e*TuSvdoCWnc;r&arP7PXFDxbnKgs{OQP_j{F&x z^*~rG|EjR9ZmK|j1>`G`UxAzo$X6hLCh}*3p9y{@cz6J`1GJOcKvj~vyJ`1@Jx#m8 z?M`i)-84V7X%07YxtYgJ4L9>4wdukh&|dUL1$to*XfJx8;=(qhw;{a^=~|>~k*=jJ zXlVs>S6tW&4mKfOjWliE1dncljaxw5K>K0Ubl6z|nh9%Ye=VpEv=5s0A-9A^VGFCU zg<0r}Do{20p$b%uey9Rfqf`~B8l|d0Y;~2id^?a{*a?Ie(8pDvYV>Ut2=eI5edyzT zux=k(QU}@(Isn?-H0uIl4Yn}aB<3W|_+i{32V2A;wumiBBhH|eTi7F|7-@_%TEa*} z8e2pkWURQ8$U_=-$d>lf1F%SB5RbGL_9Gra5|LIKl88#A5tsIs{$QG0`UjRsgfbpc zRw5HICN^@*_=A3Iw?h+SkP%2p)+DVGeUzl#%ttP^R+}X@k-roD#XXEb#3bcpi`W!- zZW*VrO16weYQgA+o%FM{#aOm;*k|x9^RZ<=GEEDtG(Aiij9ui@d+1kg*%odok38nc zSO7AI_FCQ`*UTp-VKgoz*htIZH90mPlEo_cu+yv;g|C zMGQ@6lmp8-f}n@GcTtA5GUA#lCCw2(v#An1y^sBD8Mmp9l2nussnn1dIxH2oOc#-v z7xrKlMU6Sb(?;L-)1Tk_!;F6Y2aYWMk3N0JVED|E;l#njp;RJ6YQcrI7uH=^e__Lg zjToStVdB;c+hiieGzl{?QDA7-!MXe4+JhGkA>0n5;bm|N-OIsSDUMnPBi4g9(wOwj z!9V)hFJ4^t;`$f2zqskejjz_cI=^vw!@|b(@9x;txUq3V!;*%jZy%W7u&iNq;~K!mbWV`y*n(uCoH}9%BqTb@X%Fp*hZV5 z0bNd>q@8@|4dw6p)t=uR#5Irorw`x)$KlgQP9Hse?DX-|C(e|gnSN%*naX!6XTDQe zc4pPt-DmfltvkE_?18ff&mKB^`0SChN6(%(S8}fW-1KuZ&Q+Y7d9L!@taEeD&3*T| zsyCLOTXJsM8(UxB^~Su{=bu}A?)lei-(5cc^*v2HFRpFc<5S}EPm!Ek4~NP;N;0u zpBaY*;DZyMeDKH3rAL}eXYmY!|Mv&0W(9UE4a}R3lN+3>2R1y{wt0PE!`7C=8-mN$ zv`$|eT(Ue+H79UzZ`->yuzq)-rapLdQLuV(aL!_!?&Cba zy|g-Ta8t{n9f5gu!Pzt0_U{f>Eo|LX+Pd{{pr$f-xCH0!INNPqR2Qh)8(4Cnea0LZ z8(g^^<{|+NcH;1CD-qaf=U{PcH{-22P&2ZDmJtn zL3_6cD)t9v?hjO!H!plXP*AeFAdD8 z3e1@wnDbm%BtiYPRfi-&q>$V5h?+vU!7}!t|*sw0Jaa~~Z_P~}Efi0T@o0kQ)Zfah!GqAlf zu>E*oS9xI9vcRs*fn9ZhT_*y&D+0UMHLorW>{%1ovolav64*N@u)jR8e`jESZD9Y= zz`?bFgX@~t>L0>^5b*RKy8e=cxhPT<7Sz=`@`S!wfz!_6C32Fn%&%V!2>R0e0v4$hbxoN+i< zF*jJTH(0SDSg|WOb9Hd$-r&pwJmINa5v*DjtlkrxwJ12JCOG?8aMsb_oGrn*<-vIy zf;H=c^JWC+Zf)MOGdO>1aQ^Y&f>pu!2b;HU4=$b;T)aKFbbWBeq2ThW=IzUa&&_Y% zUfEo`AyBa(P_a0;vLyK2%C@o{E%TNKS1t{%ToGKkHn?haaMi-*9aX{S4+mGz2(Dca zTsI@QZf^ns=@WZY&FKS|8lJEx2tMRuWX&ar**-M)`iv0M_05i+R(b_c)|Jn9{TB_Hy)@^C6Ti?2`q;>!Lmf5AP z2WPe(Dr>Eu(K35q%bew{#}2n1U)*})a9hcYw$e3irMp|^Ep98@+cv$trDj&!^y7hT z``ap~w;f;IGQYO1dVX8=thVY^f$F-p>OF1T9&4MmscqKAw%M!N=B#gN zbKCN*ZO`Fa+uwjG?+cHn5+!QE{~ z7PTEc)Lyozy?jsm^!e@6SF~3iYM-^Veb%z}s-x}m>f37;w=bF1vI*OREt@yBuP6^3 z*xSBxeaqIJEn5$?Kfk7B+ursyv)b2eZC}5xWqV!whOOMj+*1Rd>k#Q$X&24aohcf!u#a zeO>gQQ{ND|*MXFK14y~w0=eT&Am!gu-x0YcAmuIsDR&9T{l8N`ko@1Pu_AXFNV&Ix zlzRur9nC<>w*c9mfEp+5X;lwNxi%onwF6o1T_EM(Q{!d-`#|ph0LcA+0&@R{YNF`> zNKF#CKLaWE7a-;S3gnKz0V)4?^|Z)+0;JqOft33c$o-$GXC?nCko@QHzgsDYjumu) z_kcIR6E*lOpc_0f0{sMGmj~@5dci}#%LGsKf%gI#zY3mmw}B_#j(DfNcOg!QcY~+BUk6Y82KXr8J>ZGoRR1P=zpb7W{0?~P{VsUo z_rO!{_rVi?puQz?|E{J8-V2`b@E_obKLpQmKLSs@4?N4=51u$yeOvM$P)`Yt1JC>i z!4n_Cc%=UyMH~~ygJ(N_44(KHc(&tl@Wct=F%Df5!4oHeXS*hYCq4n5{qrPv;uQ5g zvGXbQjNsE4_q2N|#tHEm@FsAY`gdvHv+5^;KLPJW{!hUZe+HiR{v15<7w~Hma1H!Q zT#I^%yHGE2H^vv`Uc>kzavmd|LHrQUqCD{&$`fBldEy%=PyDU=owWZ=^_k#X;296+ z!4oflr(6?w;zjTn_O46diN907l5&4gErNeE@Ldz+Up6uY-&QXRzN3PI%@{A#6U2BS zwjz#+ZHQxHJM5)D--W%z_gwEvx%XY~34Y)@C~|)?76^Wb@xXFdpqKXk6?%z(L;TXd zj}gDbPt>m^|DP%#_$ln7+-I?WKLwt4y`~!kPiuT`3H%#C%Kz5gmGR_OK=5vtJAwQ0 zp&q;>4fMKu3LouG6uB5TJ`#caPT+|>@WBRRk$Z^jzX!;2-^8np)blO(cZL6+d${ob z0eRNVF+P@eSC` z{I^gq@x1$j>@UUXMPKKVgTQM zA_m=f2_M+%ZWDah-7ff^8!tE`|9$t}f*-&?)bl5_kN6>Y?!N+__z`%_x9&fKC;r9F z7p0Z^ukPCf|K`Ta*5E&O-zoTsC)4vSr9A1tZv!(tw+r?G{~hpsJzo>PpXW`%lb#m@ zU-Y~#_=YdbH&Q9Q3F;Tj_2ml|_+IfHNB*n8^T1P4w?%zdsi@n5#lSm(-viziwIB-n zqZUQI90mEP#;8{WUj@(nQ_)|IM!D$QqfbP?2|OA7vfwMgx4{1f_#&_o|G59vn6Jh_ zf6UinZWFu{JnD(LE2b%?5qJ@J2KYPtBmaBwe+2#^u5a8RrQ-S}MI;STD#?@N6*QB4 zf{{s4g3(Daf}N7$1v@7V7aWl^QgBpKvEZ1b(SkQ6-7I(u=8L{cC3Aixy41}a_sNEO zKv09v0PhA*i~yet^nfRN)hmqeWK*>Y`mnBJ`ADqmh*98KE*dpqs_x{nwOJ`)%R zo)`~)Ah0udVuGu)#<)rDf|ufnUBR=yZs3Vr2U3pfKqA+HejwL@#3Un&<0HA3kuBI; zeO2sARu2nu9f){MPQ~$tn1=b3cBf-LC2}1|ySWY|_63hPP3{Mtmp$YK z0aE#BZs41i!5&3w{SY?f5QuBG;cpu0M%C08hLA9X#>gb#bIEyQ^0TfVi(h}@dQ9-A>bqPgC;v=M75q7P+VKnU#9v~)OaGT(y-O?wPrsLe zCzgX}KTQWuoB^KgssK-%37&c?!4s?0_a(ntO%t32p5K(z2;Mx97;E9{TQ*H}*;#Tn3k-QB&u{L>)*t

t>6xP#Do6Y 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%0A@MzJ9IJx% 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

hT<<>T!NxdTei=^Hh7Db2NMQH=hmD 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

ObDu>p*1cF!N{fV3(`0l%?5aD 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

`LmN(oz-B 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

ywW)?cnO-pTd% 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 gZr{5;~$ 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

14*y&XcTw$7)17pfz%55KJ&xcovPg<7O zwjZ8eym;l}C7=4NZldXV!0RD=;QQR*d5jxHC5N?g$cBFLsiuRg4eLPo=`cBwFX#v50pwybNH1eTy)OhbL|(B368b%b$t=>AD@=}9YYLMG_Bz7kh`wH5er%B6 z2SIVLjj45NcBu#UI$i3BzFwDpY>-!U>CxbL6jm%obeYxlTOI6;OqqnVY6CO}q;M`v zmqkM9;#>^rqT=eTM!Os00PH-1L%i(daf~`H4(k@zp;Y4+uBgIKbf(O!Sp{?CgSm1I z5>uXZ4~|t<(V%;?JDNNeJXckC92PIX($#}no|fzn!&4*%ckCe{98%>}9QCOqR$Rze z5w2TVzBJM;=+3TJGD73qj>@8aHNL59AE;zR?tP{*j8rup8WntXD5V9ys^mC0bu1Y( zsr1-gT5iD6lB1%!EHXgM5fUSp&w`dGt4P*_hzY-4Ig-1xU94&yadx6;a9oK}698Hr z(T+N2N6Z}|9uGfuWBfQ)5|u<(r+cL=4m({ED;CGvfzx5|XwH?njnV{+;sbaRm?bxI z7p<|2Aj_7M8b+;RN(pWtp$$H^*g@r8#j zUaqPlDSYKpamY`Wmlq$pT)NbaI?7uboxzt)r?zC~x0aEN87xV4hy{*Dk#>ofq*5pb zDR*!e)FYQF6m?`_T_sMRq844KLmq(K!SZ>p%*^8SOPMy7B3TkGOKMb!$2;8#C2e|S zDNO>FrQmTHYbC=>y87YeP_m>Jy{b?zxyv2zICC7KB|Qx+Zg?uUz>Fqg!4h|IB7-bg z;^$2lEY{=}$B3~wtTJ1$vfap~FuPfnl0;#oVP)y|qCU|(tuC8y(sWpjgT9aN(P@2d z_fqkMmtoaaCsrjM%?i0hs`rN;s#3kH>rC8x?O^k0LUDE9&Pl>YiQQ>#@pQ3-|cW6-@1gbdVTZU`{Q9*^bLwC)n29?@T)*pHbtqjRIxUpb94!a7bc@)i?6#QtL9ir-&M zTrt-X6Ia|d#l#i8w>ELrgf;1QMek3yj%=+`uioPAs<#zlfAMz3?=Rl2nCpnQEAF~t z;@F#Q7?Y_S%a++xwf-`S{FTRH3m5-P0{H5Xt-0Un2It;#}<85{A9Ns^Aj+w7# zt80&*vtQzJm({1976WbVoc`m{b8=i=Z#N*=Hf_kdo6?@%r;EKP=I55`ui)$4zo^tyK@IEUdA#u8LFW#jvQcHf%-ij7+7PogU{K zG3?U)=W)Do0hXBuP`B%NQpqsZS_qSz4JN}gkNz~E7>jjl^M$KN-R<$9A5JUoRLJzA zX&ii|607N@Z459tgDe=~cz_%y9tZ}JN^R(|sd`lK4(+qX6Bj3zh%;LGBp(#%^0 zTtXW+de6e)Jf0znzWDe^0k{WmlE%`c4|)fk-r(MalE5EZPx3Y##jCQY;1rPwh(j{( z0!U}6O)4{)JSuK9DX7pXwRRz_M{lGF_5eIW650t(jq)tEDH@Z>Us48Draw#pV+pd| zgLop9rzmLGVWG9ThmK2`8jcfq%#K@~ejSeJNOCn%DGB#uPhugJ9vQJ&srE{hctpGoMIvuP|8}GbnG5XKp9m7f?K02Zfq;EkbFnY;VAAHW{CF~k8zzMHI)@gwwJ2qPf{p-HlfUFFN7)EP3VAdR#Q$TYSsOf#h#GJL5C)(f-a3p1h1@FQ^cb&+jk*_rhu!aC@5btDhnZ8 zV9K>ajJirQu;8dO5muDkyUk)eQIM#QQogkzfBUc9YG1f}q4-Dxal-%6y@MN`r{Ue8 zcN0PCw>l*!x(Pwic0xV5(~Vd^7Rk|UI>&+I;;XZX7@EM0)r!;WEUo3%rHx7+ooF5% z_br0!a5bFez@jhCwF@NDz#~qsW4!rWICNu#SsdDKqum0hqaSb1%zWs zt=-P_&PH@Q3Xq<^>{?}AgB*|dsDgaS(gk^VA)^%YTk--EH5%RtMpY7|3QghM+rnWN zoK%lC#yzFfi}y7YP=o|v0bF#LUW1ZkwyH3X(hz&0xR(%e*#QWn5AzUc=O3!7DliPd z21H#bKBJd3C5Ng?xCp-1VZgh4wl=R7wj9B^m#E;|C!IS1Ha-grDq3B9P^L<(<;k9%usVc9iSXxt!5cIhqDs!o-Hs~<(TZe}(_&``Sr&TYPU|h&3 z$~mvZIjty#2W{N#OrrTvrg$j)S6ziG=%~~YuRvjipm^nySQUn5L1DOEDi|_>7=yow zc7F=8`gBngy235JtG9BCqn1kBi}_kJp-P6)5XG^ohIFP;aQ(GarS1g4M)RW!#C-HIC3~Wf4qmpf#F=SZ@T=ipre?O3~Sa@93^>QX&N}uvMo>Q}*vp z=O`GySSZU(Sew_CU05+~spbUtGK+v01(RW3SyGmdWe(;l4Rz9l#u_)hv1)hC8&+6~rgwJ>BzfIYn(%(Pl zPpz!{H=7E_*Z)`Q^TYVrm!3c=zg0L%B~~S^1l~F4FKx`1|AW+kZsa*W>RmK|OmY|2RJX zK5%>ppP!5GKL`BpLAfrTGdyc}2>+w_?UV65jdK4j@c#&&-vZpX;rZuy_b@(x5WlnR zci{6a`2FYc@H_v#4)hpaeF^^l7Ciq9&rbmED&Se>Ilz7SpT;{)_bc(8^6_){{Us>- zo1l&5UZX$x_lNMFpGE(^47jf2`AXnrnYU=%--FM8k7o|t|1Um25jejT^nMOLpV#;) zKa>~B5MgbZ`DTj-{`OtKL-}3-j?cvBNA>TY3I6>%w2@`_@4NN;G3fqw(DbW#{uewy zqj~q0x;-C{cmI>cKL!2Kk3Os6Ux(lM?g*cM8P7N9I{uY@|F<)I`9sk0QsDb+{C*3c z&sw;5H0*DIhBtq@!ux9|{{a5}EIeP1=Ng{>2QZJK%p36c9Xy66e*P@#`|Da(%zKU< z`3;{OA8!N9cjEa0JpUZeFXH(Ko=^WXD=Vvbw(z_XEPNLf!b`tkW##RE4)A#X9iHF9 zbM?k@!Z7oAjl%=;4|K_+#mAY!z(M_ zjpvEW7|X9v?_aitafs&uJnQ-$%iqNJuf`MN;dk@zGQPj*orh5A;8PzyHJMV0`2GCMcrc{j8OhcjB}E zGUyb168B5-`5c~K1qv2z>uc{Lb<}dTwRq%g`4;f#06rhn(Ph2fy#3 zuU`&XxP<4g0N-z;&ac7qzCQywLS0+H{Wrn?>*$N`d@1zU!z(NQ6whOLi1*4P7ge+M3r zFTZmRJ;itaM%+J`^E>gFGXF-G{bl{h-?IOH{4*48zW<>0w<-4@0sBXI`2ExH`?fCg za(sRlbc!j*&mYKvH@`oT`K^cVQ#^0Uy#H(X{%zK~@6ms+Tkrli{r9W!$+rC_KK~HU zr(sNxHyn5Tyo67V6Y^??&%cW2Z{hiVJccfQzF&Xu;j@j0@We~}{GI*5wi73HCExMi zZ{TmfyNdBa{mZ|piz(Oq{Xu;4H^T6Dj-z)%&y4Z;W<1}Fhhvwr&+-75Ph-dZFy0d< zWr;AvO*rEFD%gd#T&&~!GkA!H{a!Yw|5f0lZl#=)H`GalW4k|AV~q9LvhZ*ug60h?FK`16Mv-jsO>$~>sc@g3);zl(?U@;iA#8^O$tv@7`D z@W9wue3$)4*dIW7;(8xG`JH8c8GoBO;{n(>HvON6@1&J5m+-fZ)3k^0j19-Xzs4%Z zIrHoA{d@5c$7OUr%l-`RDlt&-!Lh_ZiVV=G4d0M9`iq-$W3}tD@nRm2@_&3{N_Zi=D zoykx8pOLkHW8vWMv`xM-^Uj9*QqrP-zlpyOGPF?^sXN(^lq<@N4galx{U7m=&$MA^ z^YZu8P1u8Ys7HSo@5qOLjnBNk`(3=JzNVaVo}pf&e&g6>{T~Ky;xs-8$`S-OFWx+z8%k-@vH)uukPFg%$qa~&*PJ_%=IMgD)OD{0NOLO2h5yJ zdMKalJEPaxcCLTk3L5E0A&==Bpf08#h5bjKvHv(WIBqDf_Z+0YL}KM#FBKK>i}j_AWN{-Hcy4t-6&{v7(ONIU%|^jR5w z%k>rIiG4#EqKvZ~#{}11M%Im7Q_hXtvz(a+9{Rjw9sN$g*|K?t-&mIaj1ExW^8f#L zG@tW-Rc}9pI=%txIJ*qTt(n)%`|KDn@A=6#^OLej8-_AUS>*gm{`>^!<`^};3%gCG zt|q$K$YGIww%6@>I-2V+(r@_1zB2laV~k^jI+}9Jf9xyM?_8S`C+#(kQMQxoL4Nk| zNxWPWQyw0}Cw)AB56}DYV{hNn_UbHhvBEv1#*zsPhgUqf0O1@9X*<<>oE;+wNn|VT5@C59=lm z3Cq8^#^Jc8Pn2Vy_A!059QXX4ep@sCX<`+)O&z0`xgy2AGR zQm+>IevPi6pO7*`KAUwYWrh7q9Zfnp?@~W=O=0+aBob;J3ewa>j->wmEehZH9N^w-2C9nQd3*NBa<9 z%~;R+)bhsWf4HFdvktg-qi)V`^mox#BHw7gzYpK}H*HaV{uI9d5+2&Ce-Ut(FT&S{ z&og{Jg3oWk=S_UR2hY#r`762(!t&os@%;<%T*C9-7W`t??+>6n%Ww|;R=oc^cwUR= zAK>{hJpAov@%j6BJ`MHoyZ!HrST~+d<~Qnd$}{a(mgicJ_AUSBocx2}ztKCCmHz{D z@wd;!=ZEpwb3WyWzZtvI=q37cO}`ec!3bw`AN!m-oic07A=fS630$1pzVynX&Y+xA zZ}J~y+01RUMTqks4Fc+dX)MST7~9y15AEZacXKMR{mbRX#C_gCug zw7vM<*k2#PciLctr5*M`Jh}Q7^$_1@oU7&y@xKD)vU4HrCf4&Perw|~@@EqTX&r(I~|iZVrB zb6sH8nUq!2w{J(g2YARM;AUCe3vmE!N;!t;esC4KU9!13-kD4zZTaFD+?Z~v0U`#+!@>EXYZ;oTY@gO_!)UjAnE z18F1fkK!Tyq~{-_9P4IZ{t(`?A1NEG_fuC@J1*dpIIiQL0FUz7BM=ZQqX1AHs7U{5u2xzX#9H;rVI2E89EHw$adT+G_L4rGL!$ zIv!$$_U#!!{7Y;Hhh{g@3wyb zdHp;0x|h{~lAqAc6Q zd5U_P{my#9f_S}i3uTto*1rf`#Gj>`{CpRFYqEF3cCzpO0C@QKFD{X8jseQM(J9m~ zW{zW<$fKfmy#z$P3Qykt6xZa0<3IA8pT-{K`utDA8k~BT^B4P{dNr$OIG$bf1NHMK zJp=zAo?Do&-iS|*XQRV8rj7pQnC4tTokCqg{YHIG`C%-^IXrjqd^aA`&(s%}@I9{| z8BbF-Mr>WrKIXqXJ!s-+vg3oXJX|Mc<7*gCvi9ng75W)yvzd4kwu$j1tjENfd_6Loz}OVCX89)k{VRAFhr;-iHv%_tFm}bns(d`&F+Rl}3)$Ed_N5sU{~E9yBlLIB zUqD|8eIm50^ZXy#m?e9SYy2RjiT|==<`>X`AH_qN`9Ac?`|wa7nDP4#{Pqb~(66vF zsROAe|2veSjBq{2_54RJq5XLNu%qONHmS`0kQvHQ2j4FN2kiyQ5OwB?v z{-o%LJ@D{T@UYLR3pie@>^a7-W@9$L88XLlZhU#QS-|0{IVuj8qjAF^`(C#Byh=U)&07`y!Q-=xMAdCT#{{xf=;W52BL z$ahygZ1iN2KaTZt%$vEv=p6Pd`Nu7!nq!v5JKCT> z4f?1TSs#7d{G@M`w9z+e>-3BG&UVpXdJ7MIyT^FG1rK9D=!-KpyqPz${X+cIp~Pc! zsPQ}S-OuBPG(3dQ?A-md#=*7| zFa62vi?7G~cWby0;*;|;=N?nvr(j+(J`mQ$dMR7P!#W?t@2rzH0pD>RtCCyd=0CQZ z{Nfz>K|GAtr43Fy#>h0=%oyG>xo{m%l({Tlj7`IMVbWx52F}g)JkB|s`wHYO=WcsG zw`~xvm57J(NB(l0k)Iql9IMp7v_s6i{c_-A+n^%U1j z?EkX0O4*u?GR1j_<0EV9a$a+>btw;K-+?kfdxZ3{&x~$i8U98a!pJJyK^f=!H)xo* z;q!O!P=@G(X4`%Q-@gd<2FnreH{Oc4KOj0NLRNHb%y$w$6t3_m~ZHgI2n?VuiGTmCM}(C*KUE85wt!|40> zYrLEfK8U}656>q&s@D9(_v`qcx29p;tc!GjJoz+h(-(@5+@msfd)AKT{yf`l?}3>Z z4`c7~JOX)Kr6+kt;SwIkOR;YlM`XrFmfzf$As-oUl(*+YJ;Z$+;&}(k{0JWMH2aUb zg=KzU*Tvskm=p-Z_wV})*vrB9Z^a|9`1}^UyMTw^NyD4)_mAU!-dsog9D~I5`Co~- z1)!&NFZe2@TUj4*QpU~i zKZxJR)3@R?>(8Vu!}jdqw_nEd>90|3BJGdjZ^GrZk!$3gTv2&FmNM8&M~c z7Pgb)$@lyW>8vwH+Wt>tlV#WUq{;BBuiMS~s0-{d{#N|PwsTHpJMI4E+{U(Y-`Sqy z$V1|$4kce%*LyUcAHyf>;k!H?p`0Rk5=kZWZoA|Wf1{|EjjGrj$BeG>U>klF=)Ya6<{F`@8T8%IX5_s3FF+&p2InBrl_*2oi0drkq;1E2X!_3> zgKJ_bIsbAVw#TQ5wWThi|A~9pj9;Rz<{U(P+~eoGO+OO%xfze~ofz-5U#Vwl|9m0d zF*bnzIIbC!X5t-bZ&F8_I051`XPAEi_J`R^eiz`)Ubfl0X8R0I>It50d~gfvI&0sV zaNPU0?G?gtkNpzrH9CxEBY8%WXVZv>ILzJyasT;iN*D2*Bxxl5q=)6Wzx_76C;X4& z)6mB~Z}tWExmYLnvHlt!b2f>1xZlowEuK#?d+1z~i{1mSi`SF0nXE7G+!*yC&%Kdu z(+<16te^1#W^N&UteZ5M_V-cG_u~0AJYRN0o%#Ix_+(6i;X8S0+Dks0`aXnmXE(7X zdknEt`213Q{u6vYunk>>=Ns{S;^Wwp#OLGq{Gajr@8IEiH}aEhENT~dN;=tBYzNyw zUXgzCmY?J&V;0Ci#w##(f%}MzRWN7G*iM!uuZ6ex`}zHZ2DXuOuzf|eWO(CEGW+4HK>P22m(;tox%t}zct>85 zM;xP!3*p?$I1`-$(~}XZS;%K^Y^Ds3+JqGuBBf|4~Lc z&g<9}woO4^u@4!R;8X2YRkiYb!k;mjEWs+?tj~Rc(exN*Z z-XlNA3-W|9%7!Oqys$kSGlnMir)js*+Z;dSkIg$Hj~p9s$76g6dZ?s4v2^kB57us)VwA%=+t# zo=~*VZ^+m!mZ2|_`=rzbT!%i7_ghb@a{mIKBRtPxocwKkazBJHq{;Zji(&(RN8?y~ zJ^C7tfg>%X&+M<5{T9+sc_y#Ezk~haM-mvqoBdqEvMk|Qp7_lAIYK$M->#44NF#Z} za$JY94#v~5U8IZq74O6M58?SC@Z%+KQ1Nk(;FEkIJo!alnfguLN zbKfZIQ~3kDv*YdxIc;RWMi*ha>}*mB9S#5ft# zZqk|EXEl4%dvD68f$cCnW?R@k)8@AT#_-qP=g!t)>Zc6bR=A$&hYsBVB8Dt<W&qSw#DBbcDATNWlyF2xx{_;#8>0mEi ztU_g%zIxfGG%jqZDn9ER4by^|OKEXyQAal%-#rh37^GT^ACUbS+4E-*IQ4hxchk@M zGxeLHA-Koevcfy(`M)%`yC=ByxAX86DS6N9zf&lPHk=~2?fLkx)bBa)u`HPC`@^s^ zBb0eD=;Ojp`^7kzA&v6Te#M)0Aer;=;9lyrT-Im5!BwLe@%9^x8~ZB<*BwZz{SHHB z+_7JbP68!rhQ??%KN41%7sIf72W-0YOxW++kbM741S)Woz5Tv>9CkbDHi229Nes#` z(&|OC%wiE0%roP#k1WYHQd~{cwZCgj7wvb@Z2e*9I9f!CUw|M*eN2Llp%)y@Q!JDh z+15m7BZ$2X7mV*dGYO+~j|J0dnCc!T?+uPR-8(7JdrY=%zv=g)h2B3ws#m404GT{O z5p@2vGqOQP0R~Dp)q6_Of;yQw?80XDFc>)$?B9p|XqF*Xb$KvKOHhP6$ZbH}E0N~4 zk)Tu|h)B9iNBzOQ#h1aznu!dlBiz_w$;_zB8@%l|y5I%--3W53)vCcGJ)*zZMX6Ya z;c-g3QcBw(7#(${(}5a=si_%i-bOe&Jvy4FYUq!SyU}S7h~|%LklTMo zxGN@w?>IFY0Ju=1I}AEwHTf7^v(E7ZD*fu^%!mc&p>k6A(e<;G97Wk)KklA}3q+9$ zjNapEfYt?_G?f!5^pvIm*%J(j)F8pT;b4^3C<}5(MrCD_@4B74xDhKQ3DhU4mO;#q zmCa$;0z={$Hb+(*C-MrcN>3aHibfFHgEmE(At(42L^7#mu>(X77h0tB%wU}98C*4l zE3)l2=~?8NJI~F7d8)P0a@mQb7xas@ZyM7x0oa+UNjKiET+Pk)8xS~1i6^eK2}Y9? zqSGnn^=F_WZNRRWOV2FKK-1IF94US6qTqgxUJyRo#i)rg0}q+_r)PGVDCo{X&Dk?B z$b#AYc#zV9@vm7v>Umn3$%|8t{yDa?W3d?=7xfYb&UiQ&&(jU%^+73e(eg#Cvpapv z1(|~5E-wqr0vA#Y#KXZ+s^^5E83r0*oy}7ULSD;|>7%>tO68XYQIfaW(J3$Wip6kD z-sLLp;CK+GrcNokD3Gcuy;w46=i{i;PtiG_^&d{r4b?$ewBL22Q7ek=IegQ7k-Y28 z`~8KNn6SFTY2ND*u3TJruLsP+`|0eVwBeLgn+%8rC?v^`-^G*EH0bm8XJuZWc5peB z48`2v?{pe{>VquAfS;b{|M+FpnVp=cZk7MVZ#pw&D9X?L zaxwnNC}R1k8&1wR!s1`~MbBzdAn9FI{%9)WK)yge@5vl1--cLcTHivk|I{zx@r8%t z8b+b$1^ESk%VaKJCgEvZ$VL@CXVn?0rL+KG&NzN%8uaFBV9UGSAdw__0ZehH$qUvQ zzkxF1?I!0bvhqJt0Kqp)DWT5#F2;!Y{@gsAiQt}?})z-U3K@*5r`^z`9QF=nY&@cu+VVp=G z#sZr6V-Btm*LTH4Ou|s6S}Dgbv7(kY*4(GQC$o}#KkW==i|c*52K7|isbiCf1G!%$Marblwxt6*Nn95pYDVXB6|IAF*C^K%d8r?^J= zGOkZ|;d$jW5l@qz;We5OmTSD@)*!t;YLO*#a(JA;%j9| z>Y-<3j+Snx2$||lA$WaY-5f<)P8Fp7(K1_1aq~+CAh;KFt-2JJX>1)EX!WKTt*}c| zZ)!?fkVl(VGgK)W?s)^4H6F?fL@VMi?1xjRFw!Ak&7^Pr_RO^3y>#i)BXOB%sMkSK z2(`qFkQdK~<6toEOIN2}K(BU$>*=@0;WP{r3JiFRbi(O~|4T`M5&I#QgNet_5@v{7 zKf-?krT&hanh5n^7!b8gwF`Chv%khP{eR4zcbr~TnfUK>&bj67@AOGB={=N54+$+4 zDGCUPE23+d6i7@mi79|(mrw*mKtL20OF~BkL{Lz1AqXO3T~KTYh=`(VT~tJr-}gE9 zzVEyvn`@tz!LL(m>O9sK0K|+2KuX^$hyro&D8C z-&}3fJL%0vENSaf{iuJHiucRbtW!du09&`Q+ly1#a}AD~OpeW-RyBZwbl{U^?hh#~ z(tBD%J$>dYUTMYkuJV0D&*?B-FKqc=Gle31!mQ=%9qxxoXfjLH>VpNhu_9lw&Rb(* z-3LHRr>@v^y2k^aeR^ZYnhlV5YM#h?uaEr)?Ne%Vq?zCCrzCxVWD= zD_FOl8Zi(r>MdV&YJaOp%Dw7VgOqXBw8j2xRC%iJbe&PvQ~dnZ%+gBmbQq_clJ+_K zuBqC&^lRUcPF=UAr}xyo*KIhp`wWHh;?rjC&HrArXU?8IbHS{6{Lh^^bFXDHmoDvD zIJf7Nc`B?bP0DbkHW&ZfdbDr<+dArq_L?i&DUbX=u5n`kBCJF$#Rb;A;ylK@MWI+AUG^9^7DHXmq^_m_ zG2=}AU*Kol=o!|4W17kQlC|dn6tho z^%G_(ef6`FP*A$z552y3aOQ5VRqNBcR+?qO`?5S`xqW%`$N6T>_V$iiMLkgMOpiK! zMbGN)2A_eJ+q_|oURrNP2W!ea1OwRnyS`1o*668fXx+;;ESobsy=#tvX^jfP4)5y5 zuARKu7n!mag5xdFej+5H}-w~qifrouTkry5RU zD(HfvD5d6&>3v-qnwZo@+~H--=0RaKyaF4StVLAVo%}#xnDoQ)nusyno6Hml)5wKlX< z*R1o#)ZsVyPTZC$@(#aDZT%0wMBN}Z{309q(c7LiI6nQl-HmcJx7F?x@uKAJfm*R| zH@k+sz0R}6;dc%5iYesEbhg`;myR{`Y#bn5n_CDO>N>+h8w|bNh8{;4iv2 zzQ^cNQ`85mO1;Gxy;0lzr)KFJ=4tTOG@fOL^cqYCHm&JiR;oP=)@TL;+*0pGDfIBr z=Z37yR;^!&pt&q{8x3qEE7RSBRxwnTHLH3ycC(~{-x`b z9(3dJ&}+%MO-ukjsjSB^hgmUpL~wcRSPq-X7N;?sK9sgJFO-b)!}58hedQ;+bPLJ#`o=uNEwjqd@w zw{O(b$TL{l@>M%zTf5mW=6Xrre%LJY?_~tpVO_kh9-9?KKx87R;T*?PNvJt-Fjo#EOZ!lP7qfI~5v{7$$c)1&_J;N)I+IAX%#gg0D)9vrL)=uqN)<{_!UN#h| z1EfY;hnLMqqjc9}QnI1%k~d{!rgz<@^r@i}E0(8AJ^O5Uvt##mnsoz1=V~adDLSl% zq#f$pvDBbh)~{Z+an@ssJmzR z@(tu0{AFtE8T=ih$KWq~8)^{5@{H*r_4Do6a9=jaC3G+o({{|b%kKMe4Bihq*kEg_ z*NY?l)HUept4>{s&9>o-)}qi;h~TTvynULohTz{c5Kg~w)v^L)g3XYq>e`-WNOi@& zg8g5rg{@{T)jS$mT&qu?`{k}%jx;B6vHf1wzAs^Rikp<4+*M-)j9n_iZpK0Z~jcGKVX6eJg%x~I1F>^p=Skd6Z z@Y!kr>|cKhnEq*LUmN?jKJ!j%Mf%*YIdoCSbmQr7>H7>PdmgVYb zP!~}{F-=Q_`-a4|%jb1-?U>?A50s5O<*hfrwr3e$pJnTaZdkXu7n4U8FP3$4u*|i1 zzlQb(%Qm3Sy7)a<-g=ewT=0@v%5r8kj-d~H_16uZsHY7CTK^Y=!s9eVr_}P?IB@N1 zLj%6&1mh}-rExHgnb)OJk&Q{7xHYO^z6Q@?2Ue?z-qhS!zUGl1nAU)!jjw>B7YVUY zVgJ~B)pq%!3{xl#Ji>n5P{GgVJ0ljl`EO9rb$$K0cPFKX_9hCw5uuTCZ3#>5m=HMl5?A@U*wCQ@Q8 zu#U1fEQ?;~pWf$z>YuL0RbNtjuZ|4Nm8$G7XRC;hl<;Y5S0KyQqK18n?qfn*ub1lg zQoqzith55vIAA}Uy1nk9PxYep6atZJjA1|_jptDJhX*lEUsa&GPgT#_shfK+K{mGz0xLXVSvLcv8s3dW{)hx z%$~VUhnHLXHN&AIE@t!LFqB|vy*y{+e4zq$9_HMjX- zkf>+e?a|Ddvnw>zdRK1RwBFxN-OOeIz3r;I{d4QLHM_R8XqMS9U!pL4P}!sbMp^7yEZi3%qcX7n>(enn!66RI*-y(rdCo9%07eXj#-zj+}yi54Qt!kRM&wF zp*!Q>q%+IZT;)Y z*-Mt9-}S|~`1*;h>7|8~IrQZP7X5mrI_<`tmd_&L>c#7o61U-Hq09l(2zR(-SNY#Q7|T;-;0n^nC952v-8&zLpaD@v&} zhMbzwu)ch~tJ0m^eJR9Hrn|Xng_In#S6n+&@3`8?^=O9d-4a|AgrsPep*^|FHnO>l z;3iy!wWr}1R5!2|BT{Bf-|`$@qqVY`eRAkRwP1ys!(-?Y9v*2A>$GForQW%5w??GX zqJC`s7#;v?``sEsormrmy;8uXAH!>>Uy&sl6nD4is^!BDWJ&Fg>eA25k3)|tE23d2 zJ*nh7j56R|YU!w>ATinN)}$Wk*I51(;t+-h8b$jZn%CkS{;_sd>WY7jomhi&5|!=U zDb?KVO444vrcrqCadZSu2G7lRyKN-||BI5$AK{?Gk1QH=64>O7hd47RzP1r8!Lx>b zwPZuj@>MDMea-cF!})73y#!r)dAg7BHCCb|Y2C*E&3rELXnpz$_3XSRwDMR%crVZ# zJ{1{keR&>VQ(tx)9=(V@8PDGBvgxA2rh$h1nqZJskUGF#BaKS8rY^xJ~6u7O(A7*AkOX(+j>uxeP{TvX5Hz-4F{|j8dyB_2k-7E-nkLO;A`uCeXe$^{D4r0 zp|Q82fC@ds8(?FhR2dn%A@rSfYcTDByXnL5nyTgQ-mQ?`dMVX72_smd6S12OZpxgy zuchp}dp7j0?;U2?wcqv3VQK7r9$pt~Lb@IbkXki|27lT}-2gOnfiuqVkx%Kz@cPxS zNS|gnbX%$V%3)((jrEq$p$mDrMD@r_t@1kM?yU2ytS`uqkka^gZ()FQru3E*X69TBglDpDaYk9pgy*o3AZNH}VuqUVfJY-|! z_4$WAlB~e6D;^fywNiG+5LyG@&kob_R%f7_8q$?Z_nFjdTIG7IKc}cWR=d+b(ZAB< zx&cA+vO8o08(uanSG!T)x1AJcgRaIv4f0m~6FW&}|Itp~G`N-r^i``HaH?23w9~wS zxuGBd1@%o@*?E|{i7Rt;WP)F<_VmqC#kKB1 zve?AzV_^8l&MHm&)7X)E^vRAz28*)aMXq{4!Onn6<7tF)mU9==>9Y<40&}`ouUNLM zXLY0Jc*ibg?e=q}?=;t(;f$j%c)1alyB?618OD$XRJ|({1WE&P57~Dg1~XJI28)&1 z0bc$DLSidc^b6M7AzK#Xg$&&o3cJ&6I|fw@nsulVXsc{3>5KH(8BY3)oPIdW?xj&Y zJ6|*P>ijXvJI}X#!_rgh8O^1aoK53ayLd54b@T2&UWU^z&M=TLrr+Pmjix*{eAuH*>iU_ z1q1UE*3z>nJ->BlUD=_?s$Nt@uZ<3?$eewK-y`zwZjZFcZuV$i>V_It@5#HnJ<=k> z?$IzOOtUSio!d4<$JfK|hgx6Rr24FgymWUMShIe3Q@MV4@U3-oNPfXa687n529TYN zebAj=!&#S&yP0;)ANq3c3Rda1mm#~`u)(IjuWYAd^O=<+4n<-6L80->E_>X#NlpX) z(|D(y_GZWIeueC26B-UR>>^&1_IB8v_bT1_GZf%;vklQ`@c3OdzLPCEJMaL_H&ly0 zU~*WQ21Hfv&{`VuH&j(=F2C7vS3~q+dP8+_8GJ@)@bh-|4@^mOqg|blgi;Z*^Mwn_Hno|^-Q=PFMn*4f50*D=eqbv<1Qt*(b zi2~JkaygoCbAwy+zLg_=D@TNf4`}6Qp+Q|Z_NF_RwzqfMUf9=O z;sKYdw_2pd8C;>ZdPHzvK3Xg58Qt4_yC;Qj9nkJc@~`@aPMdzCuJ`A@sPM1$_e4g)Lss0NR;e@%tFgbFhgZn1aDt46lid9Rv6;9ip8yZM~4 zATGFIq$2Yqma;9;AN@~kXhMn15z;isoB829bBuWt?~gHw7=}?4az~*_!W@%94dJO~ zWnx+#k0!U)tdG}8uQ4&}M8ZnMKrF?qJvBu!yH6#oT7CozT%p}xQ=T78G9yf@8O=R5 za|*o7xmo4{k@@^4muX`3Wk%0DcsPt@5YrVufWTfZ0`xN!WjjIH@W60!E--nMC#zL} zNHuWzs~Ecb4}`aIJx~(yf!DB~f7LMAo2{L~DV5q{}9+UC$pF1>Xf;bXP$Y z)|XgO^Me0Ozh7j=7Mb8}=5w;u$Tst?tpLy6VS=-5LXTK`XNx^k@={^0T;9czthetM z(d80XAlG0nvNlIY&D=^I_F_FmVsD&a$SMfv9YHkGgf?%bKnc{+p zWi(HF#gk1gnWUK#cQda`K%j%UxKzj$+m#ByH!KN*=!9To)Lv*(9BcS5QLp}&Of#uX zQsq(r4*YM4x=0_(y3#qfa#RY|BcSpoe8#MMnkAQ<5p>4++yOLkpgGLE&Y1juJnwG~ zHHYxLi06IH!R8{NcRO7YstdLu#5VwMUiRnSaV zUXit6K-^*!hG1k^NWvI!#f5yB17~weH%}h51O%QIC?=+z9jyywq>F5#WOjn)IZu|z z$)lG*sqYZxpO(_BH~7VLm6)pd%xBV^vy%gp1TG1>l7M7|l>cYQE?5Lyf|s4%FUq;# z60Wify1?nc92LAi%gcNJul!-K|Jr*c^6C3DrSU$nTwj^moBk;}uZ?w?+IJI-(-$U~ z?Se_#@%{W8S8uzPQ_JgB>yy@&;!FRh+WT65{mlMt(C!~e0#%L;=K2cLYSV0e-K-a? z6|R4#4K!3c;LVOD2g|Fu`qKN_)if>}Ow(#jV9u2Q%&zBF0@>F>T0_M9^r`Pn3aA}Z zQ^4++u66X49!@UJU%P5!Y3y5CTVIYH-}U9tr=7j`xoj{&fnxUYSe$41^>sJj(DAg& z+FJ!nt=bxhT*~HrnW*6z)=BQ#zwZvvciW};ev$2R?ER7pA{850O|m4oI#iYo9k|As z>$Q}XPdK?deHv-o>^f*eFRiGUlPC?L|L=9qyeD6hb@J~r*{&eR@&P&CMUM64SRtFF zEmxxiE0k#D;irii$JLtSjW)lEAO6!G@tA`(my;+iz^369xpFZoAVlPpBW;&A`Z3s@ z-1qS5?tbV=c|uHY<6N>fxX{5g5Hvz(_k_zK;F>uy-*&^B_J&OA93a0T#f+DtjI*1~ z8R8;mnq2G({5QEH7&|?1t~Dw$BQA9BhK{AQ?Q&g$NaxlpV@R+K9gsC2hWJgOUTbpF zPUCN;_gmzHa;9vN{F(Wnd_Ce%7?~tWOyZq2dgSZz?|JA^!>v|1H;{gncS>J>d$M(DOrso1>^nS{<--QR3_;#M~%mt1zKg z3;bN=u$IWyCw-w#dewBA7EM#hYlh=jU{!u>12oJH0?#-Ppv4NGP~lUI6CJw0EYC1r zP&pq*q|ooE10^LY16>upU$rtFn2nbSa;uZGB6Dpd*F^FqD?dcAG+)zY^mXeVW|Z=< zez`7^A6xmVmCJQiMakD;NahhE75(y~I0Mro3UinIC^k>>s%-2I0e`D{DinqIr)-Tpt|JYP(JGb zZ|EWZ1*Ih)NwTWWP2?L+%CenlFGlfyYE}0+`A=WfC5hbc%vbbPS$^x}GGktj%-?vcB8;hne zk_leic3>Qo<7}GpOhYcXF&9S+3pFpAW*T9i}KJP#w$uCAqmhKF5p9V$j%D2N3sIa z{+<9k2fmXK7IUUECLMBV`4QoE2We9BSG5WH8jFkupU%maqWsd>-x>Q`g$BB4 zU0r>f!nDbZGSeYxUS*9SeeEe^J1L!#ohfK!0u*gr_E28!If%I*BS^V4U}@U8kddJ> z%d!G&Y<=k!vSn8ZewdHSj9SUk&*C~+0jD(|LI@Ctr-@3laLkr;t|6*VA=k zZdS5$PCi>FE~da2Sq$dOk=z^U^1FzaN!k1+($#W7&YYh! z7v>nzTkFK@T}r$bxRL0x<=B&8Yc}c(4j^EDg)nDey{(h5a@L`nc zGNURUW+_iT%;V?29zSh@Tv60sIv7bc0h_9EMVcAScVhFESRRP&L$Nc(F}6ij4(&-( z2&R-QgUKo9M+tYa-J`xnu2iWBMQpNZHZ#lwlh66ZV(e9{^?g|>yhoZbZkvqSDzZ&V z{vI~moqx{xd*0vEluE;MN9~!lmScwJaUC0MDWL=ZBPZwP&0yEYr`W{-XcvU5g0KW(2pq>Z0c0^J6n33bh+)7C+^058_2Hlw6}Oc+WBriqT0M)2i=)?5hq$^sQiFP1sa zrsT?D$zX4!E&n7XR-?}aN#?Wi{}cG?a_he+mMHkVz^dSz_YS;!PgXAp&E+P(@(&3GcoU*My_#kr&BrOS|_K%-%{*Zh2b8r9ft6)P!t8NX^ZPf*aQ@}%K`VR=9X$b3;i=XPMT5(+M6m;&2bs7 z<14Nj@;M@ygdI|WRs~xTr+9g}lfSENb5Vp~{CQR9zGCG+trsC+(pZyp@W78!&==^9 zK>=Hc@v0TELCvKnnzxvxuE(qaE^9H{T3ri}L6LSO-tPe=`vdetK>kB3Kd?{@8|K`; zb$~(MfY=B(2J2NN_QKjFknbj1%OPw)M#I@&dc_C_*KR`n3+dSifKZc~XFm;VZZBbm zORDrLyAoEmR4s##_%sz$ZLY*V4e{US3HdaYoCi`;iTr0Z_>zsPE|rlFsf)-PR1J92 z$WM%*5^Mk_8EGok>}8f-O+VUej$Jlf;nz) zGb8kj+?fjjV5vdYt&u(Ifr~rHo<+_@t=1_{nA%EnbKK7umQSGW~n{+s2XCi2Jlxf&9;epx7g?f)ux^6h*aY*B5r_G zSwHQJAV`Z+*<30sU?)V$4W$b-q8b?)d|RS1c9h(r-^JX7GKJEZAg1pjGs6UR*x5Ug zE{(_Cqs$xWz_hR`LLbgJLMif!5 zuY)Xjme$N5D;8ad;7WdHF^NNPmsci^KU)xIhu?KLHOJygM@3#U8|5 zAnpQ|zx*teXX$}*VWogH|3}UAC&iP$LA&LdP@3(Pi7vK#t&*)@t1e{BO$ku}<`0p* zIFa)b=< z$3Y9VnBdiu7QO>pos85_ROUrt3^E0)*1#5;rKzLSb|9b`8Re7!>bjcjCh$4gj*-#1 zX)@K#paSJDQ|+Ew6=>95Bt1V{X2o;e95dg}8v{}-UWixN9GC=GVgA5`TEwVP_7fjR zs(fUgLPRomr)tukk@cdEnUrwwg z5ty+Uhv8_@QVs1$CG=w|-xL(nJfs1M|J1Y?lul7QK`mC4wuqCy$4sftXIj!vIN#$e zcU!&g@xGIqt}RRmwiRI{s&#eR-e^D4(wvdIS1T*U&Ylj^ZO67i-@cWY$NY?&kv58P zDuW%Azyx9B@f@`F>uWz|bxC7UaHy zTvPOm_r{|9fG!es&@4}u5!ErdfnA@d*iTj%`ll;$dj&kL(w{x#HwEN4I;u(1MMo!+ z9MjAt+tb^|9G)w{mX&gYo4zy+pgfgrU)l8(*bH})RWz-zCxRHg%*%_{R;J> zms#+t$QCpERTUWapjZ>b^Tjg|rK@5TiN)aT=BVAafSZKK;GMzJVaMb?SOUv0Q2lT| zW+`JA+80VXW0zLtXR6ozswBTGsmgK(0Sq9+e`(@#CHZ+tp4T;ipa}T$5mpYQs@ISyInhEhx)e}dYi z1{&nUrsUUru?xbVDnx$F*us0u3W;Z{au)_Q`BGWFSXM}!t@fjeT&Ib5m*w+i`2vI+ z1Sjq%`c6r1F3D|Wxl>&W)1hqO;E$wZgnh z{*H=a=Q9&`JBJW>H?oKMyhCb!vRVGC8EEWJTe)|s&rNjDX1Q_(4p3I{7EcAD6C%iULa~? z?F0rkwmgMAQ@!hTHXskVbSm_->^}=TpMs`gOhJ_?7!}+u%)yWG@)1dp&B04PkW&q> z=^S9pP3PcN>u#_}SN_+$=90FIS6ynC!1??aK4q(>PEUF%?9%}IY9Qc*J1C# z+=j|Q$f#i*rN+8Xsq+-SnCKLI3RuCFn^^Sn zP*88$EvQ#L)JJ(zbBHH3m!v9L@-%W$^F(kyhp)U-4dohQ;hkhD-j|TcmAYVcFIpzR z+Ym6K6EEObftq3PcJ^BdYI;|zw5|?)@Axjo9M|~Z0>UEEr!leU;>F1hAnc1GzeV`B zoff-$=zcDy135?ARd)g_(B2{No)KW#l_FQEz0f?YUiq(~XUl(AXVDV^#0D839}_6XgFh)WHL06bRaBk2&7m_pl~1(B?C#GgVMf}moiF~Yo^5G{q4nSy7Jh!Gg!f?y&<6BCrc z0(s&O@}?Mtw2Aehq@hAN2&MpjIDy3!2-nSnXszBZ(n5DU_ovKg07pgeXJTx*CiwL_ z-cFKvyq({MXdtTq4?s$L!FzQdDekip_*5Acvu1|>>6%Hu z>w97kc$eeSMY~-NxnJEY?-&1(+>e00%Py2(Q?qeHvlD_}YoNnGlD}3qd4hkj68wMP zf!^OJ2HUX`{72Q|X|EOYF(vp{E5X08B>z+FNAU9`-(2iR)(PS<@_tn}l&oLqAnOEU zbSXdnV5D^YWv7u;Rk=dr^p&oEB$5|H`JYfNKUfEAto)Xgm7f*KxsllljU}pG9d_5N zSr3Z)l8Jw-pTC3i$ktG<#k<7+UlI0fKN|m6h+=)If6p)V8jXK1ZX1(o56(U$y0>H3 z6uz8C`GZxfL&#I~3T7OFu`rw&m|e{ftH!ZWj9ewK(H81%CfSLoG81Krn;cJbQw`Ky z%{vo<)&xv!34W(!9NF@DweU2MaSY;S?^jhTbN(JTJReqjPJ;G?GF8HOG*ZilpP+Jf zHMwR}(ZB%pRHYs&4Dy-$&lFT@UM{IROeYAm6*wBM_2%HaLVt*}y2p!hwh5~g8w#wu z(wa|NbDfo2t^I`h{vK+QFRI)&M_OTgXhorli@ETXCeY%mO-z#t((1D~hWHSaL_A2aUl@?=%+X%eRX(X!cE z!S-&h)t)P*UzPDbhrp@KuM>a6(WYHPc4Akwoo=LkQ_2ggYK~=jtD{uqt1cC=ReeW& zGtGW_n~Yc5VVrGNeffHId6$-2>_%IrnbnTEiOeOS0-;uFqTOP;{oI89o-{lkUVFyp zIM|$xd(Cs!9z1NAv#(frK#gVjY|d^r?iyomHU_cmZewpk6O(Ueex+>AoQ;?>r0(-{ z&b*(gHfR0(Oa?#G2SlbaXGc(xP8GW|E;TxNeRFmLl*P{(F7nT*PxE%vV{s#N&K{@= z3PF9&5b;!aYK~TAG8nOCUIx=SJI-{fr!SqeG4?Hk&)K;DlR3ls5pJ`GBSmhr-xdFn zY=vmFPi0x<;xHKzdp6;h7W#IAf3msCJG6!>fNthfm!4l{EFzW`-Y1;L`l$}&G_AJW z@ThBj>M|C~5@o@$JT;GH&rpGKDs-s_enN05YdXxRIFfKGxUZ2Fo{Ap@5r3N)>3ctL_$_h*Ybur3i^#M4%2F?>qc$O`=(p=O*ar^?^#SK`yB@V;(HVUy5u|qolx3-qm^$tMoTDWO4}b$|Celaa-I`)N!J$k zu^EmK;(3b$N6@rs_So=4L>c0)6FHr>9xdCgWqR;9q#w&a)TQYS=q<0OOW#HemyOcH zQoLOX*C9Qa>lF#VPk=5omw(3c5ZinjWc~BgkYzv)FS!=76a*UimCE|ZnK!AlukoG< zB>pn6lFfOndzJRPbmaO66cu4pa-jwkr$$x`ORfYh!K~RQ>B9@uNvF(o3}wawCZa{6 z38HLqyiD>$WTL~@W2d3`O$@6r-HG%pk1#y})uqrpBbrW(({x1DTwzb_aj0}Ttbh|z z%Fz;BkB!-zazV>J!C&oKbDvhbmh<VCDqVQKBQlcMiwy`-rz;5 z4!Z;8U`FIzb9lbg^(KPP;T=t8f_b}Xu7!Kf#-w{vsuE}jek1Q_hW=}`w#_9V1HyrF z5g_Kdh#~?}VSo+u4BZ`rjt(Xdo$lYChDetjAdpjmUw zge zjK=rjM^qD!PUB;Wj5?2m`8~lizQyLKVJ0CCekRA8C8o7DlXI}&zdfDFY{x)d3TUm* zWbXf9Ch^3xPxT<|kX!7})f~CSCa;=Y&^6Jk2d>;%(#5OlLg*J_-Y+xLj*Fo)Z1Y^D zVHvvi(7$(m%Q5zpMl6fAaY+`jIpkQDQ5*h&R_IB4C*PV_%q-dVJ%g8FSNOCEY0srR zh0WH#PmMu9G1SQz$XB4JD*v>)2gE#rR$#vlXytbm`9TE(kdrsbv3?;vZq?`ef*Nn0 zwf0;!`+TG#M;py^XpNg7OBlI^n@5BjMdq5%>QWvfpA+n*ZoJ%zKDe=wQX?%w%OXEnc{Bb{l5gKDA?{XElht^fP5Md9~uHr_Zw) z;+S`2GZf{Xm;x^wuFqq(5T zJSJgI=RUHaX%Rum7@_u5SyrkVkYmmaw`g=zzL*r6iL?4=DfveU9!bkkgJuKc%%d=u zlz(D2$y2#fF>Ff|B9vGeB=N(O0-2=AvzG8>zrgL6)?f)=VwFz9r5>f57P>H=;fOvo zaEAtC7@Y=@CopaJ ze^oW9lE0@?x%JPfZk0Zt=u=Y3Jxyu6pX}c@rZhg6U)3;-vmxV{5KK5PSd?fyzC#Xa za_z`2>?zm&!sc})mDmVY`>q_~P3TRapUbJk5M%Hu5Xu-45?-qto4_a+oo?O(sdNY) z9oQb={P2J-EVdoYv-)}P_7JMA&~Z_V%ehHzR6<;XIgl1ZQGXpRVbz1^MEje?zOEKZ zHnWPtwkB|XJm1FA?wkF}dNT}=v1qNXufEXE%4|0TNHL%wnBWc|3S(dFt5ej1leoMc zgR1o>A|eh3A-h;BrvZ}b^qAEU&r>8Afzd1GiolT{lOCdV>28dyYKPKD&3QA1872+S zpqW9rZSuOU8a^=7->ttFw_;I`u8`m&h^aRM9|8!lS27q_0>jZyYYx_7>KoSQ8?e&u zBgMR0ZP||pNF0Y7{EIhytI|mx*tjVxf#5g`&BLX2snbZ!9!f%D;v3ly?$l76E`|$8 zXA6Nl%pkcbD5jf#!D;B@?8UTUJkkXt@O=XsOqNf<=0@Hg~0}m&!O!E zRrBc9Y1H}`YyXU2DM{Gd{*pe&E-Z4Y0kf+3#@Jj-ZDJzX;LX`?mBLP=VNX+mh6WHf zIv@fI13yR;oJ+X96)Fz4h`de?)6JcWD+h+b1rTeba~3Y+NkCrq2D_6xG-#8(7IqZ* zarjI&Gm#4wy!x-Zq_jJbf@~VC$_RSC0kNX$Jr_ILb6(Aj1uh>JwAOLpfZH>;g(evx z^fCQYxe16c^WeZ9b@6P1LU;r{A|*okQqR^l8RJob-4}$7>=QhTXsHvT=*B!A2gz6} z%d+mBY-6l(&^0-e9Pcq3xo7{AKVV7&7p=-ugAR@Q&0Q@QI{A;h!Dnkl;Rm;FkK5LW|k@^ zhpU3J5IKdE80mk4auR}CwO;T7v!X2i54P|J=Hn7fgDW6PbLpH${?dE;oX$*o2Sv(= z{`}WJ2hEk0(ZP*-%h)h5QQo-)dluTmF@?1*a8Z|g3ObYhe=aIqnwZ&8@ylAkm^sW& z3da*Qdg3VhrOaS)a-a)NuKMUq`k_mk4hJ`Lb_MJwlrSKeK|c;nKa7$GeP0ZY!KZGR zY)madz(yXPTrT(=Q>@3bc&x1XGGYqM4ITj+p7bKvRb3dD;`-bY*+6WPn~*Y^2u-~+ zcxI67bhvn6LT#PFOEjeWUswfD=rmMHOj7`3fhDX4Y2VvZhqQUH5ymOX=)!l)U=u^Eef6T}!24{eU{ zeClT#|F!;2HgKP27BMLr7_Pf}Ii$oy1t)d|AGc8wk3`zWyjaJOW+gAU&V24I zvR+4&V?IwTO*b2ez(+67Pb^P5DY%t=T+D1J=R1RPd0#B|hHO?fdHl2wB;{}8j#D+e zgj}N$VR6xJbRn8jt%vXR5Hzb(GQ&Y2x{q0-NFXr~i+oa!PtqA~Wf`1^@_&f!4E;R{ zK3Rs*{l0(|6>|;r?LUYKv-X*i&DF=>rsFT-h#-aeVFPB!bh5`VIFW;8W|-;8j9hR> zS-$TT>jsN`S_J_^`-ko*a&w!eH*=w9Yc1?(KYwoH!Cm z@6g~XU7Lu7C`0U$g!Rr)`_F?!66kjON{+!_BXX@;tV_sLPF^hHsEFBI3@B`6cqNcchYesvSr{uFX$}>Ux6WEg`j)S$i$}w!%C;W zAMWoLq#pf|{!78%dCmpBd*2~)u=%5~C+rZ}yL(~NqC8J#?_(DdvA@tR+Ly6aead)$ zuLRG+!`(RO%M`&Z58?CkJbVu>AE71reT4HF@HJ4@imc(naXR629vXw7_t zrvKAK%Q6uRqX3AeOMfzsnnTS=oVdh*L6tpfn_OliR$m5d8sU3j36`McFjO%3oqd&J zm!8K|U{4Ssl6$vCD9=@{yh|l*)3Ih!-SRC}`{G8{4$82s9 zeUl6Of(!^vQewou=yXkTJ_W_L$uV2;3HBb8Ar1CIJy2|1G59BQN=TX_g#tIh(Ll5+ zalFb-Xw^bm_`4=3En>W$Zz9a2%gPql8~$tZ}s+yKz{I76-vW3Um-$ zbrzE74O}-2j;RJ;VM`0IpaJkbCP-hYqk0UoT5mx^6VXd5;BnDoa3T11$QIDZ+@>^8 zW7}@AXgwuZ_jjyL=jT-NrYRVeKk8em6eXNszuTRLVhFntAJj)AGxHr)lY2RM{J<%>}SVyW-~TpVP%nPNG~;{ zTMr&PHpiSMGce4*7@6NkmQC7wo9!ApOql!&yib0mnRd1QE3E(DYliFB$j8>m$NM$$ zU%oWco|E%qs(xOpe#mdpFv(YjQ}xdx`K;9i`HJdQOjmN@8aZDZxkGOtl)G(>eXo3# zZ3Na_6opObB5)W*LV1O|%DExi!A~)Z&2&A5PtOAQqc}Fpv{Ig(QYuC(Cg|}lxn|M_jwln*I7Y%vGD%7GrehxcP7vB#eAY69U> zQ%H+XN&NlIp1Gt9=B==tQNh(5+JV0bEW`CPOWhebEyu_#wis^E@GJFiwz5eJQJgr< zW?2mO^~l6Hb0NFXTM796Arfw;=q-m&f-&`B&E-UJtzzM zD9cm88wQS+bpqSxjKQ(*6o|8i^2Q(%uJoMgic!)^>|*eX3T zQ3Fq^fGZ{#wtRRtGLQj%15u2ebq4fP3pq80T_v|9@~K2_OysMvawE=g<9MI~vZTs3 z2pAbJ@rkn#+n)%~rEXdEUSwTZ-LA~0ancybJ; zz`Pk-Izr`Kj4SqE@h)5p_8(3s*a4<(#RTzZ$URn-Kitx48j_}#R`RqZ9<95(+KD&F zj|yv%WFEEm&v$h;br`m~ZqMcJQs~M{93G;qX6;r*t7#ef%p1URO2I$bLgHDDgThZ% z6A6a`Y0$$=;9isiu{(Vrr<40~UjCMsSMn}mexONY(P=6YSfEQGWw zVM1!-E1Z1`LvB_b6bWslvZO)^1IS@9IynfYP#lU6)t?6#$OITTyucqEhh+kipLj$! zi{L;I(_-*rjg0(hPM*)n`*X5H{*=?hEkMoB!B5}^Fab4#ATsMbYURG-jN4IRYj7=F zJvjENHgh@EpfHVVvB>FR9w+B8T0TlH;)QCtu>8Qz$))lkrV-sRqnGcZUBqVRMP0%3 zl%c%`iuR!*c87b5@-PG?q;kh0fb|yPdkU6j?L$OlXyiJS@d5`Bu`76#^f8E{PVF<# z$dsp56rKMx)aaX%9FA&mk#wdX?N^9=Sd71qNRx8Gg=!8d%STmav}`nICpHIYXb_J4 zN=dPO2VG-B2-?SL={0MmSI=Wq;-ymwrG3=rdY@fbAN&#>e8Id$!J$Ty9_=nG$aVr; z8@KyeW4ATb*_IUdw##7}`t(gHoo>zuuawrSgxE!Ul@uF#oJ&)JC+IM>zKrt;SAu&^ zS|L5RiTwi0nr582N%uzMHQyVdOxV^I4Ry-#-S|M_n@-(K+yg}_=0Ep&Cv0exl4MCf5yLsFFhCM|2`$2$j z%KG5DsG_NCSHaj267}oZ9U`zrAcj(_-?Z`D9DlHfQY$N`YHOq1bhZ>Gx?P1``~G~% zEizektDN4FGm{`n{vDiInD=+~=sz5Z6xt zghh)h6I5keyj`$)Nfbm~!HZPxc?UOF(v^vfkXO?W!x^Pxg8S&r1&?7OIFzLo#SqEd zJKU-W+=DAmN4Mj&Ql)_HTSc~kOa7z7-^Xr6zI{wa6X0^8hPl`ak^4R%?m`(GEQf0{ zZRqf!xu8k@UX@p>_OECLqnRb8wkz;f5ISV+6Gitem=VGw7bl>+4J`08DgS`zD5b!! z)*O;Lnl;TJX$0aimSJp@J<=|O=ZM85dyc4pDd|-^Yme;6qUk+{&0O(7Etiyrp*LxtoKGoZFDt-Alz8M^4yB4^1BQ!k zNXKKx0ne8kA=aY^DZO6M-t8XYSh`e!H||AF9%p*^_-*Qo!Qeroml9&Y*S6YLQbF73?M^Z$&nI zLXIHJS7|B=0HVwcHdj9|R$f;sx-9NAfT#@N1q4oM+! zC*I~xA;xB#8|&}ot%#Zl=K-FSX#Y6QT6YG}PoS6L2`i&EP|Od+{7_nR7T+ql+ljr}hjWLpw+)ut z`rIvzx#!CJ$!#x$5)z36DMjT`qMpvh%YN0K=(dRLr6DHaUJ0ivgiV?&aa(}sTwT71 z4Gfi_BYjr!S-<6h8uc+8QedWhxHd+>D=aTQkHP|pGoQ55a%y#HP2Vt$T9-1}^c}nm zjX~?p-k^4S#o9cMaFGj=XC(L@lNf{G1eQVxRK(`qB4fCZm66;>acqon`^sVT=y2Ja zXPmd#{TE0(&mD3AC$bQlgIDknDU(u>3EU^j4DNf#Z0>Vp3iqjUl!lf?N7>^tNh;(F zDHWyK+=Gbp3Y;H`2Kbqu5=R^b$*+tW(cuueVhcXa!TwuGt+>)5Y$rDHp-o7v)R*$t zr@>4$-Bfr5a_-jEM1H;4(8fYy%P2w^=ZCY{VPx2J5sj`LQu?&FuBbd#lNf1&g*S^;^-OpTXRvefaelEJXg@BckKyfF?9gg& zr%`ivQ9fU^_aR2)?}2(EXfYT}OX@z>UGYAJM^1&D3J8)y$k>xRitb)`nkTI_q`a0c zC^T9iC7p!Vawxo-x5$p&=l%2+q1A-X*nOY2@{En2W9UqeBOF3QZB?u4r3T-hz zQdC9Aw@=}@XA^L`Kb=)7uTydYqrh>BS2~qvjtBxGDX2k#*5ZLS(%<(}0{f(F3R)3t z$51cFVJNbLy(&ZHiRQ?&{V_qVin%(ZSTW%&KetL5S1TyT8ln>eq`u%OY29BAu=C9G zgrJ~{;N0FH2-Ux7s6j{$QV;0Vume=7&q%CKKGhuHw5<7zB=xt>=SlCSd7;ml1T$Hj zs!pp0qRQ7)6nl+*-pg+T8YgczSBK_jA~xF@s= zKRUuw_yCU_=b*I3~6L_JS0 zJd>pu!7OZ~VB0H`2p3}@>|^Bn2&X!%238XzX^5AvOaTS-=mSE1cO5FyDglH$op=YI-meYe@}qht~m|2-AmdKw#S%;t}SJ zgc;Xat_By0p#qj3xs3eK6;w-?ihM}QxNyxU1bRS! zv5PPXMvvk7lEPaptx!XhXh5k>4ct3)VY^JZU*+k&?}xBd54v6>iCcpUadqo-hDr^K zST>6GMm6Gnn47&E>PZ8T6ZdIvN4mk^Bl&cK59ODP7Lra+)I^zc6GL^DcBr6*=^fK} zYS%8KUvxYYIAI4p+pHs**mCNWBOQLSdUTMNA z1c9Vo4SexGo3O>6pGF!U=Hm@>uNp>|fI49OF0atHs#C!a6DUlHIBsFPHF{rRF3)*B z5djMwT=Y7e99)fXCchSQR`z=?TaBd0PhDW-d?OE`2C_q%@Nk1^R|7Y%F!EueQJD5nk+7KJ{Zt2f>@M1%P7A_g=7_X{_2< zb>P@dwYL&2u6iqdV%gLFE-%ao8rB1QMEAi?(SnV_&jZhSPM5{3QR+~V%W0~rlWdbo zo+Ol%Bvj)~=<`Xqpjkh=+X*OOWpYLwrk`(Orv?%JO2i0;)q?8jkLl^G^oQ0AheOxa z*=*&!c{82>chZ<>U65EV`ON8g5hr&oNrLJ$q7pRNKNG(6)FFx$u!tloe5n^_Y*5{k zm<0`Sfdsd75QF3evl3!#zUG;kq=h=XW`?_)ipK>HQ?a*((KR64rb3;{?B0~efUKV5 zcXAU}xoTJNNjCGTP>+E?V=5RO`8-KNSPi}uMjQ+0-;VO8x_0aePhxszNF0Np>U!8h z^(`=AKGgh{5MV;}ZB+jkwNW=@q}pcX)|!z~YM`RqBFCocq}M6AHJ=#<)z)iG^%`TZ zHOVywl}z`oUoY*~$;9Ah^(`2)Hw>@BsmvUw0#=-liB9DqF!c|*i%q{Xbp8HMi}8mD z4^n>-*(W3UQDpNiPeqQc>uyxDp6r@}X^l!`RWlipX#%U2m_qF)B#EiTw%V!^tM(cL zm_+U2MEbr>-s+L3Rh^L4_XRJZvXuM}sc@Jp-Y9J3bOOI!m)dLyPg7*kLk3iZ*WWy1 zd0F+b`ezmwKZ;_e(%o90)~mr`7N=OXq-Rx(K*k~>?g*_F`=%;8dgKN5hh}z? zkA^@N2@`gFS7PxH+{9zctx4DxHifew^|eu)t}A>Z;e3gi$Qtm|U$iU0lVExVRXuS- zp{nZ8HaXctwar77U#s{g;HhL_4Lw*9<>_K^j0fuo4_1|cIM4<=fYOnXcC1p|NTn9t zS;M}NetCA6TyRvFr0k|b#~&C6&tXWL4ePY_7&NS-?2)|WpCdt9>L39Qx@A6#lQY(@Voyn7wyd5COg>}< zJtyOW4Zt4*J7LX)z(5oWEYX}kU>We!zIYU_w~&_qLd!F;NSLN7Vlm!wo6}#R3c6U9 zd_-=F*1Z>X=e!URQR0N)9g2vEFOb-lD(jkK>=4zg8wYu2SAM9=CuheKb66WQu_@~8 z<)@M8NSQbXKc%5P0B55b7WdW_-L1C{y_NJ<)?0xFC%)6H+JoyD0#x+$#%dW|nki$W z%rbMiGL${g#jTr;h9=wQt-Wc5h#Yjv)~IV2CBsxdTd4eVyUZB6gbeWo3+ni(f&bg{Krfux0ZL}gV zl0wHx1WEZAp@c$FQv_ms0|A zuADF3c4ikg?SthfVxAQ4habnO(N7|-vucXRM*Y4u2Vd}T(3(N62;H`cv*I}V4XOS0 zC|q6MT|Y^BWIXXAj`LSe#zm&2QHhUATySp5m-3X%duQ4~Z1|nzz2#HKx?R#@9hPliij-l3&#d5LH9dru?wUKA@ zPceT(?3NcXk`R$f#4<82fH}XDpw^bH;w3oP9b$XF>kH zF_s%*71q+UFNvM&KB&RFwMn~)qUv?{k(ikn$ow*DVPj;){8_2T4Co=ZkCRu43l%k3X~3A$UnC=2l`7ZNGS3!%ungk7CAwYbq@ZEbER^-G~o}T zhquY7myGtW$ED5bJrU==oMg@t*&xeUoGt9D zJBHarut6;UT@?K`l0QW9Ta6`QK`QmZ92A2$+P9JNMYXwb_AyJmf-^>@Ci`JLoLm=x zI13G2+~18w2Aasv3_`CaL5AkqIf|hnV8-eSUaJWaiBzAYgCD4&1MyfN+cI4j@>mw~ zWUhU=_T&^kaQ=3wV7^C3nE__YpVxb&@i zxxG&h{s26QMde3zRGtkHzZe(RO2YcstIJthaod_*@q zK4Wf9KPEoSKC-1{Z+$ZRw;W@R#v(em{d!5RlaJG=5LgXA5y$;|?oo6z`OY)oQCPzr<04LIPS~(rmP2$nC9{LQ zvtnD^WgI<`3vbWKZES7;aKFki|L9|i76kgC(>Fm)H_K^gj0HGC8O!$~^(jH=C+dXD z`8l~D2mKu_f6kd+`BPGVe=z#vC_KLBhjLMfh}glKh0>|)0u-TFs%oJx94d#&dv!Kr z)X?8SD&>!UNkkl;fZIX#4;Q=f^oPU2+D-TXrfw!p7x8lxS7m-W!3=ZF0bwQSgtQfM zv+?q`#EC}S>F$;1VQomAG{Bh=jGAQ?wkJuv65llEpVWCl~SP0}4Nc$7-P(#`|I{T-8go#+%_$C=j`m15O&uqV3N?$tPa1xpn@{A1C) zr0!c(?IP#(h6`{kkIsJkz+uNjrYN~R^tTV#EMfN5I9QB*2o>Oe=zoevg)@zZUs{+T zhnNY;c+h>kOz_tsGNE{_$Tcj@3(Ao25)oOy(AZ@2tCBhsI2unLva&5NTk~>hUOuG3 z%JPIBumbd%SB?+fQnIt?Mb1o8GcN|!hSdwet?!b-DI;j1|FW83<#*3Qq!kClCw!g zYdzQexRl^T_7uWEg4xW<(Z1~kzHN>#Wf?}e&at5`L{u+YmZV;6`M?Y;`xi);Me)Lk z^v{BLI75mHvb2%G?M=}GIzmwAKzwlr_Q#5xLQS%=xnupa`^0lHo zT9mIB<=aKrIU@kPUrY>#S>CH0%$YB!DeA9EeE0*pCPbHf!AE#10&smTl1CzW&YH&) zxhkQL>t&tXTb28&b~$uE$ILEdDHHJz%#Ou;`cCZ0<8j#W^C~Q9U2N#mXa;lfxQ70` z&AW2u?wouckkW(C@qveFO7dBLk&z{$2>5wV!B0ilp2CmDc&@kvL4dP3sK>7e<-Sy_ zwp1VSqwN&b)KrWMVY!LD&bmVa%Qbgq)h@vFAsjug*ts3sJA`1nAmxDyjnlya2>Zue zr8yj%et^77<~B~mzO~5-o^Of%M!yZ_QI2TEC73sVZ^|a(r6zN6*<4zVKU6kXlr`W( z{+Kr}=JjyOOF6$aAAW~T>vecP5}F6_*$8P3@cwdW__3a=@=(_0vP?eQEEi$?wI`z7 zzY)Q33aqe-$hH~+Y2eXw5bjH~uY3Etz$6cS@Fz_pU42NzJn}23l&i?Ad2@C_&hl~K zW(yx0^cTI0`R3nFt?S}nW^Dw)GK`Y**>s$w$bAxE{@4CfLG2+wDHE4e()F972b+X_ zvq?}h!gjf@J_*o?hDmrmQvmiifWKf4lZ9n)41G8$aiqqaY$C=7m$yYX(0y}rL2gps z@=(Ft#&N2CMf}>D`zk>H%A#D&39=Q1{?*0s&nl~k~JUn-`asb{vkT;3e!@;&s^^ZBCrLQ(Ev1+zeKz@^jELlCNU)9b6` z>wc9Sk4D&P4ptjl!LO7<`GG|L3wQOE0>fc*qe?pP;;`6+tm9V)2leVADT5IS=D`v_ z-Z3YeqVax;w%4a9>NiE6Y^Cd@|3twP7nYc)f{F_K4g#{fHk>Gl8=FnqxZsiY=qC)y zJXMsRDwTSu_kPnE(i!X@f6cqfNK z>d));pTQdw^Y>O^2Dfk=GbCx14&S~5SnG@~mG2kjxdJkMk6#e!9Gpu6vS<5l%5FAolaSCtP)Z=7 z1Oy93;3^gR9|3q ziEOr^=II!I7e^>`)(VkEeJEWGtkAp7iSF%zL1BACk|2Rw9uVqmA$M&`MrVy{v&abW^+C%EI!~Mk)KYBJ8pk zPDa%TN>ZDG0@5jzeZ;bjdIjY~riOROx(g$f)QN^f#9g#oe{^dvQkS?ZiG#9sgz~-( z1_T_sTfV&-z02T%DP~_Vj2?-|)Z}~eiLtulPc`$Qjx&Y>_o zbp}Aeb2`Z$0CMjrDa+qFmeW~hf;fo)6Gh3}kL!s~>0tyFM3#d(?EQ9%rC|`Y2f|NI zAqhdrpNV3>xfc_KlMMu(M01oP11`C>e0$#0sY={v!F|Puhi=z|@>0MargqUZ#6*H( zDBqULDQI{z9TouZxn=fR45iIP0*1H)HiFO)(ljA_ zVv5Re9n?7d8w7WFmZa?Ll>RXMY8qD>?$nGPgw^|-$PFSrdm7HLCG^Hmbl7!%pWu5 zM6(k(#2Bw>x2vc&lufo$(Ee4=fj|j(y6#SeVX-nj3>ISqK!@UEDv@q;J5jUK4PCTT zGIH;hrmp0!(><^iXAbxD&AP|3c00TsVN6d(Nd?+t>DmNFlTRPQd7)ggpm@=wT{q#G zvhd>Cy(8D29lflZy98+me6EQ*#(z*Q%v0)R@Q8EI5^9NR0y5gYWjiIaKN1o{Rx^qC zg`UFtn5j~Vdyw#i0|tJ)j#8h@q1E+*JsLp9M@xoSphB@lww4TRv$P3e+o|>#QQM}r z2`a%Rg%Q=c$$J9iKS!dwuBhAKvvjuD>>zV&{~tvfW@C1{MWJgqax)4aQZFo2q*~f$ z2erAyZT3bJvysbwuXAW8w~fv5bd}+(vX-koTC&GPBz?>t5BJxmtOi7O#>qB<9E6Tf z6#eYTreM2~kvxiq;@zD-(7EaJHc_r%5e@hNG+as(+IKKW91Oh9K zj&p1~!ghMt&J5eGuytXZMmv?J(S&kZVY+W7ZOKHmh}0%|5WTvYZQdA+2daY!<`*{r z^&cqk?m3o?97{NsaIAqiIW{^%Zl%5HXf6&-qep zE8|$AmTE>nCqTay`$M>uep5`ITXp{P&?wG$CN_Rq((hKbo>LVjOsD)FnlIr z2D(PIeWqYTve&z?>b5)Jk7*qe>fKgGl@9V^xri{BXd9Xo1hFBc^i~mb8np0}N~B;l zC~Q!XJX|7c!Y(OrPa97@(G#}CMAh>s*X$wu9MBH0KEJWfM)=_5M51t z1;9={6;1=V!OurQzX0x+$glCId!Z|!r0LG30?Jc3<&rdhCP|(LT#0)kND}Tbx?SlB zypbvgSxfx7B89eN;3=w+qG!i>$+KgIkpXYjv&*npC9b>7vV%gQUQ27E#i5u*PGPcW zrzz_61RvAtaxY-w2Tx!hlnzDgQK(WGt0!-&bl4T`B;*sNEkwU7;P~1NakqYh1dysaMgOP1<(#J-CV5bq^NZnw?PfCsx@S+a*=2r+BQEGHCup5x8d<3437pK_$PaWFHh|5<)WO zTObYcbi2b#{)m8DS#P`zhXdd}*&3P>`-X@y<>dearE|6ySj0&sm2wTDQo>?}AUfaV z3>3{`8;V7*KxNa@=oNbB^xG0#px~)yS$7UmD=i3k2QR57F|Py_Wv8!1%bGbWWA!Bg z;c-O+I%-a##)^0!+a*||^v4-WN)^YKVvTmqtx>UGsPJtqWX3}&2A6CRn8$yR-?LMZwb#$uvq2w- zpRpf@&yHgjjyXP8qThDluE31#E^pcuO<;q_me|UKMHd^vtS>5_l~E9w-Yy{7Bdz%H zmOUn2>A@B^mtN{=z4JoL9&Xt~9Cr`4!1+5`@!c)EtL5%&*=;TR?MKhOuVuIE^Bp?- zR&BtkK)Eom%|K)A6=rxxB}s~M2q)ki3i6U;mSh2mwCocFfXXVh)$&%Gd{&a$N*f!9 z(Q08k6_OOzgKdxkmi7@ai2ldn6%VW)os1Sq&RD@$-AgLN^j5pQ-EK#zXcK`O;PlVh z>=Z@faw`?F6kWIbQoCQvQz+}~-1hi_c00e_o!Bn(B!5-=NxL229uTK$$F_+PyE6$%kQH(l zV>=TsxpJtFEnzqg078-#jh2uH`0pX5AH%yKr&#n?GYnb&Q2?bS$KMCCRY+yMtzfr8 zJ^9I_peBb-E4eeMeizOn>(HI8!_J;7*b@clGxQ3ysS!y&18bNn5DfW#EIxaLvn2n) zwn2BG4ZI1ye9E~ewKWh3Z+TC+u(LlF4ca*Yl7QO;7OWa)bTrNfb!ova34`MDV^s1v ze~Q~mb|aFbzah|+a3S1q1-FzQs}h_z^0NZn%5+0=3T;(}hPQWu{pN0qXXQbH@59vL zI#^lc74yNi*$+C_ks?Z(jJoV&>mzXY;)p9#!>*z#34KM}eIi8I6|!ji9yQFsW1x_! zN^}|Y2-&Z~91tbY7oXc_m-V?z``k5s?w5VQL~(*u+^oFy0HFX^pr)kYxxGZ0Y+qar zmAkVr;0AGSYLALjs4_p4)_f>a;omZchmb&4bm0F++FM02`=nG=Fb@F5u*?zg5niRQ zV!{v?UXCJhn!I^kr@>;kpElV|86Kz&&WkPr^dhh(lk9M!CfmCRA(2SyWqB>F36S52IgGMXvv`Q5~#5VZ&gm@t;3p=E|Be*R{r@@P2 z87rsp*u$i_%?l&@Rv1`Wj;-z6C%f;t1ycqZgN^Ou?XWCO>5s0Jmj*!(A8c&*CR9Fh zzfp2eJ9QEim&(G&6Vvz=wI7PlxcFIYjIlcek_WPOxPf>~@?kxcABeZKxjlnE#Dc~9 zAtj%GeoER%8Z3B)+9;T8CE-Hg>`E0jPNMB6F_vCHwmE5dn6MPOhHx4p{}uhuKXD-W zk^vhaquP}FoBFc^qDr!6A>OODCrQAQ+!%bntJ~K0dH)6C8OYSv`2?i!AWZT`40zSV z9>W!-0ek`K!9k!$7*j}Cr)W^kZ_Y477Px~scM2toAWsTgN_fwB?~4wld=>L}v~$O6 zbY20`%efc-{%J((5Ve*lIr3zPR?^38QC)m=+I%@4FNBhy0>NXFF;kdY3@sw;>I1Vy z?uz^^{(zaj$g=-u2b3r`BwKL2Zehe2S!~pa4f>Cu2s)h1Q8Aj1%SJK!gv{=zU;Cz?t#vQ-I3?FXxO_V3zjxe@`W&C*LB&cL^toc)A z`f$k_{9t{nB`pTIx~Dd3I8SVmK=Ds|yz_~SU|C~f0^2VKC7D5uj36eaTU4$@j1;*5 z>GWhhvXOeQAomuAvRb|{Q~xVs?y%A@9BebJe87MpSr{?b7O`y=g5^4-;Gy4HGb6%% z#F*RD(_j&jT~n))=Y*D%P{i01Q|iX2EVHyu=$Wfkq8iZ{ ztbAxbBoWq!m#!@I?2rB-!}QgOT}7}#zFc*_f+F}e51}^!B!raC+$D*I=0sbkQz+3u zYDd^2%KCMIZYv%jK@IxdfwGWn$eHO11@vc0yVBVw`YXEm$&r5k zk^aE~R#TpQh_>q-401!+Y?=YVjS4@s|NUlkhGow-{nJfs3GZk20nS6lT=R?K(Dy{2 z{4|arDP!uxT!y)aRyG{L5Jlraa?n7;o{-xKM%ed70XK-(QIF^>-axSz#Nx6H1PSGI z6g-v6{017?5c2+z+6Z)@#Fk_~!=y;5Wh=X`cTacuXy`f{iYK_CbV79~nXv9h_BW0$a0QBT z>V|}Ff18*sEp!#MJ=pvb)1K!=`EQvD*F!gD)iNk(KhNuEYY6ZKgs@M&F)C~FsC>M$ z7T;2H4_4EMs?`^<6BPU7x&n~%Z?CS!m)G2iYI;MpdVevwk8c~yyDpXeuRkf|6tgCE zve~P=KWsp!RV=UqJemQyD_mFq_yneZX&wQe}B{6kw2}_*&zZf*5zvV41v`+J$KFY5@BY5GUnO=PdKA-DQUs*n>!?=VQ^RiddmrEL zsdZ+*;}-~E4|s^VKU+WF9#i33Jhy9H1TBQksU%EHH5ST@kRwT>TtY8BNl^_YcP&lr z=|J~wB1?A-`UQ{j*uGrb!JQz$eF(?rDH4a^E@bnzujK7| zJb`7N>v$ezQzkd=hRJ~+Vr4-kfiYG{n&&r4xRk`oDSAPwx_H;5ch~62&1%rJS+kE! zfMf;M_fVpxcD(~Sg@AN6CIN)s2aVcz#S6+?WDDYNqE3v>#&kyqXMq1fUGb$*VCNw! z1UL-pM2t*Ao7|EB_gM%S8-YktZ$!Q+Q-7YfbG=)v()krWi~ninOwN0Z#?evU?)4)5E7Dz%h7sf!V3MYb|{`^(#|Cp~Gu=jfcUL&6G2E?ARBJhtNC@PTis&dicD8%vraEPoWYr51-KwUaHXwE5d!Yr`7 z759?W!7xyy5*=VH&Kj>IdZi$<^2)S`Kup+E?A}P+TM1$!Bj6TA><%)Nh~Oe*Y{JM6 zNTC3J0clzR$dxVH0BsJy_GnQteJ8em#r~g34nMk{zn8d0R$7@9ckvXPkp_yvuXJy0 zhpYA&ebI#`=(6KR*X(9mv$c2zGU~{hT>yCtYjNc9A^4?2F+6xuDFwRb>Ujm9V^E&s z=zzvp?B8Q;4@ml0w}*$YH^K@mj-mSeN4^o+uY_;XF}9$-MG9EPMQ`PhIK8rA)evAc}kFft0 z%k)C12Qo4GEoZ@M^=;Z^z4adQQi`e~wCf;l-GiOK537VF_gUk9C?DgEzV4ZeyI8+C zcp66|{@SLt2@{aTxDGu`1+`LgR)Wnc10TFDHhveMU(Dqf3*K>r<+sfL*1L-_DcME7 zalW_HEj~*^bODPqlgSruoUSMHeeiCF=mrY@XIwA4&uY378Pd^m*~gCYH9E^&Wyv)% z{-`LCeAnoTdg$!R6MZ@P4dIo%W4oFN3(3eALJh2oBUgKw02&nZ*AMzL#Vl{0l zgHv&Bc@(RokA=%t6vkX%uoZ>d%HgeWeZfbQ{!xy82n8&(WPYgoDKX_Jit!jE!>)g% z_EKsu!x=m)dXhBkZlKBbTOjS$>4Q&2;4S z)ZnYSGJD(U$Z;tR7sCQ|NmV^U=dibrj!-w^A3{EJ>>a2he@yI^{0MtTnhxQL zdLlo>-p|6Jd*~>aA7bzPaOnEPR^*4+`(-$EIjx`aL+srW4xO3US@|LM9tekE@+anp z*n1`%B4~eUeu%v{!Xc>7yPzy1W$(Rk=v8H^ghTB8$Z4qb4Wn$i&SLM(aOjrUZp{y| zcX>EOheP@t>MZuI4~Ie(rErM7N5UZ*l#%hHv)Fqf99k0F!TBNf{_57^j?|faie=1M z?49H_h!JU!L+qU!4&C7G#{4YyuJW63*3n*JkoqBeFNL#0?tVDL-rM2OpPl`MQ~1x` zA+aw1oU`ZiL+l+F4n0KpLw<<8)5D?LoZX%uV(-#$=vNfa%nz}5T{v`MNZ!}w*}E$o z3P~T~j_f@ax4j&DjK3qofQ->G0>ew;)PtNY&M(N`-@>848cAp2*X%7xG~O2^T8BgI z9h zMVf?Qmf+j}=D0|U(knzfT5^e@*|maOB_WR`;)#FvY(Aj#xxZECbrOcY)Ue@MMpOqPNue0(`0%wt+g6<`_+;eEkqQXmCS5~vYg54Yp+F1 z&9#y>TO>47WoGS`Oiy!?bv9Mz%4d>wTcI>u^4XT+!HAS-&BYOm#iO;cZDboK8@1*m zz0XhPwIK7hX|hRcbKA@|Pc~}>1t?k2`8k89Rkv(m)jn8mwx3|ngHl&42`W0)+oV}->; zPJ0Fkt-O%>1jq4+GyIYE1o;&Akl+o=%fvAFr^2pKTd4c9CX@Q}#M-#}5^4duCbR2m z(~|m#-GpS4p!v4Buevp4I+0`YD2oYwA^8j;b4Q4qe5>{1bcQ^)pOS4;$jxBV8$_Iu z=DLQTVT-MC5O>5K_hJ3EF+wUiO2H;cUR;y-EiTcsVHQovcvgfyp0y<267su{Z_Z$a zS^XB`n_yf;OnQNTf#^7U>V#^A-}x^6+IN+rzv!162}U;uh!8xa=e?4mBXChh1O|6V zJ}RN8a3l+ll!Zr8R>PLCbX~mL&rklN?IXv(hKMLFaDYJQ6O@nxz=^!AU5iIj+5C%Wj;n%~Yu#S{C^n&v@`{Wx175xUon9YTnN(!9m z)MXffG>0H5S2@drv|~AOO-(qeN+-z1Bk~k1=>i!wYF9K<`LY=e|WQyB_l5um~q;gyM zCu$w(StH(aF!^O z6gUKJ4J=I}^4wjr!lPYEgUj`}@nQe-Vf&fu(R`*f)4W+jJhKDpP=Y>HdBsGk6q*EJ zv9HR&u2~ASOZ4mi?^TwzK-#%}9TRBY*4ElT-Y?$Y@7KbTe3V7ck_pK`SxizIL;T7) z|JD`4uEQyd&1E_=E=s)1?sqq}n$2fZPXCNl{GCbaocrN=NFW9H?-zSDn4);PSSNT0LB{ zK-S(5-GBMr5y=P8aA}%lLs~?>=0d|>iUqCZLbK6KEfN#^kF4Rhr0^^!-Qwa~nHqnS z^EmR-dV|_~eQh(^i215chW}uX`Pj_4iyR_c7H1VK5J887rcv=!C^RkpHXiN{qwU{yoc{6Amvg}QFY zXkXmVwK2U)D-dlJ3Cns~;jV(EXg;XJs-TNha0XJUBQ!!-WSx@1CuvhYFyq(TQe%ss zYnt^RijG;4j3_Y{RuZ=hZa*ef4sQNdmmUkKI~aQfuVm=kqu}sK^mM%pec?f4Ry3&$ zbJsDbB*Pi86=R~8K_*)-UL8lRK!;P^E5SomX#zEmiL&GuYY@6Uyk2w`u2U&XjX=Ob zfx3Xe049Kb(xcVwXl@}I?v5@Z{CtF{(+Vn_1&l7>C}&lHQwz>AoLwC{n}_W{^a@sT zyD+v(Vt28&;Ea%|fGCq@a$E~_V|+O%kC_{nk5I>qDA(b_5W^VCi^sb467~xda1+e) z9e}S`2z$loQ9bFu7P>zyv?mshTHoATdnZpWBx$~I4bk2z`0nxjKbH6>$jpPIR_qxW zG5mQ2+K7o$65}oQOX;)`o7>2Okv+)>_mOeSWAXH5aU5S)SsfnPf{(`YUgDL%7o%ZC zP1bpJ@~Y|;-4D|Eds2UIN=}06<6Tws*MOD8DG+Ok^5kDb$3wUJbL`)WL)_9l)<6hW z+FH=2x(I&OPSCu{13;B2n7UCA^8Y7n?^K84?9^Rp7TWn3dzma{*o><-0n!XkEA ziLh(D=+8OgK4UvKYh0EUQ=(s;JJ{@N6y2u+%0&gcy$IR34Lg?A;-{T|8SMdVA@kdo zSNv%ewiM#vpl1$+M|H!rS2xP0)XtI5xvRA|ppLdB0fvr}eqw2?`#7_6hlU zU4o~9regqT*v-I(OpM7|N*XD~zX%c)A{}R`Bc35Mc8eQ>r4;5tImp0MvP~OYiR5Gw z)!SCNR*M~3chXhwbv+%VuBVuOYvW7f(!s_+`%sM#>11L$#UtXw196}uDTa-FHF{)4el?uF^c&Zo)W!MDMH1t5MXHtQTq}>DA5rOw@1IDx-59_88Yb& zyb-fh9hXIyl)^8d&PWdKl-w>oRi(p+3jr;KP{+9vMLK?E)o>&os!oW*QAZ2-t6UEV z*%dw$WKwK|y^iQjTBO-SK zk>>rIa`M|UGTZqze-RdT;|x?;A1s$qn0DAK>7iR)*~#pv&~RWrGD zf3$P}dNjzgfK&LX;3;KY;iZZba@oq}Ybk!^mCc=>ZbFLsAR!_YH;FtzN^UZ@PXV$t zFhY3Zj}V>;K!AfVyE7mvZTwP{Uaw+K?ZZ}~8me`LVQuQ&}Xz82&8tPHoGn5=H`fITY)ZGP2xxO|n5E6VXl%0R@Uz(cWY6d=c z)u3O8*8B%mTg=!4^?C=b%`rD8WU{LM7NYWO?p9p3Qws(4gEd55sRyPGUw3>sCjyjz>B)RJ9J91ru!h^#uEf5Ja$D#md=ROcHmG<;-mF$1sJb7xrACc-zUKOINj}sS zMe^|o=@)jB)!2nqbtyrrDGceYtw&F@O5__i2 zKaN&~*H;k;7>8*|j%OCJgbSw~!E@AUC)NFVb$4#vpH(Mk7$o$?SwIwHDIe^OHWHH( zOdO2EmbL6iB3ju)>IMw2lk>;5-YD6Vv3~{K8Nbc*C3{Y)5z1uA?y1}TR9U4(4(pZb zYP$PLZ35>hC}rrHx2W%!Uq+Q)B!nfYKZ+^m`R{8c_c!hLO%eUSmy90b8rh< z3~b5k1*30CG25GbTYglCA4F)(>z|T|sDvEZ4*<8zs6UYnFl+^n!8mH8JfT@3Q6Qrk z_l)jxR~r&Ga%rFZ(Z%undZ0MOc4A?Q0MBG1Av0m@IrhXCc&OD^n_XRdaL#yYh2t>C zz_Y_=gr_7OArj5s*l*DIbNirFUHO5tw(U*hvNZQHZ`a&;%a zW8o{wf7s5TEmoRr7r*J2)pQ*-NLBNPEV{idPlr=H`P^w6!Zy~5o@$7q^Q0n5)Qjgn zif(@cd?>w%7DIbPg`tflv<6K82XZvrh;9W5Y1q&Nz}SU?$SdPHg8SOU77SN%X=k4} zychTB82Q`??}dHnZrPDm(hJM}#3-s8(CGHQK(E%Me-KhitO z{_e8fr8Dm?H?AN39nONs%YG|{(Mg0!mm8x}h_E4e7!00yR?=Aq!XFYN@r2ANQ4fXa zS|tR+LC0>esEbIjT=J7ktsF*)${R1w}iFHwev_Du6_St#U4I z!k#CiNB9Mbkgo8Qa!AV2q{E?b22 zs<6Gi(`D~>x%ax)Y+-c0ai< zjt|m6wa9viHh0MhlA?2Nd=~1oYT5R<{MVQ zNiAupl;!Mewf^pxwE%XL^~wv*)DrPK42bfW-<=+FXOyX;ljzx z57b(P$Qc`7BNr#3)ddnHhaeV^emUAP5g8OhA$5z~E+3dJ0)A=~KD^l%3ZK8&qAQ^3 z{5mb-$FfSLk!@<55Vfo*W~6L_ft{V%UU;e<_(1Sw9`#$&tAHnk=IMpiD=TK7-`FM9 zP#Tpv1R#Hg#VPi#o#`B6c$0}5>7-nF(2M?#jdL?5g4>HQ?5SltTbo2{w;VWnN_Cf9 zgcubk!f~qDtQm*Be4DG2`ENQu6fm+z^ja^9S;21W7QF8yF2SxRYs=r?WruY7rJYTz zhn;>|rybehkLj>~b_(J*_u30R{*@l+?{ndIFEXiiWS72sxHp?*$M)!I$Kx1au420( ze6zHV8km4RMXm(mCA+KRlRWx;0z7C0`eD$>xtu8Z@;^b;HF6y`_CG_|lg`g~>WL9d z$Uda!5aJg?M_?Ba{Ww_tR2GSXQd5#tBh<>}gSFpbtn@?DeaAA=0g>KEw75#Qw`1W@n|Mr9M?XCTOvoPWgWQC11 zcx6q3$pKZhwk6YfD!8#_1+lGmBe(fxuolReG>6wrUfG6-#>*}G^%&SroMKY6DY=h< zK`CU`yR~6nz%P@i0ama&H6bpU;-?aW36$l&{n$4(#m!+a>U z*-p6k*W7mz9KUAYOH$j@ebe@^g@E8;XS)=3a}SYC>EbtdK5o~7gpZ`c6eyT5Ae0hm zMH1tNOhX8mVjh$n5Sp{kox&5k@RV8pls??NG`~B#)1^PgCeM>nHo`47=~6gtY?sn* z?hq!?pXlPFU80ULIa!)51+UL_L)$n;`C`nSP%vbQk;e|W#mYnYqjrTn^fFj(7z~!x zu%$)CMt$Vc86S;cBz%FHa8K9`EKfSr~Dmha(623vZmh|O0*Wh z`j}2Od5?7byg>ZgayLYkp#}B1217b>f3t}7JkLb zBSk=ypi8#|Lp<60yV%_#qd46ZoWddoZ@?v*w1$eBh|J92+_?dJN;&r6LF2wc;d~7F z4AQ6slBCl%>qa!&B}Q!jGAi=9GS z>45SZ_|L{;6P1tP4AA;>T4}v*H3rYIl+59od6gcmG|4UWCLlS4X;M5CG7LJhA|;jR z1|8xsHC^I*J=$NRt$|O~h)K@uIf*H@DL>nhAlncyhsO$|*AlZGYb${mi$E0_fGM;I zvj>7Gdx)V#V}_Q7yDnsbJ6^rJRJ6#AMP36!bryP^S*ih<+WhI!A|(eJ{Qz{wANqe< z?O+~WvAv0%Vnk!uuNj8@GqzpoPeDEGM~Q7ye^4PT4<)rn=?ua*HS&o2=!)`L+s_Ul z!-Pbs5fJ?diWx=!g&{Qr#q8q(X~+j%!-|_|$nsdYdML0_uY2$c|Aeb`P;t+XXQIdN zH!g{$7jcYNzwh?--?x2JUV85s^aJZf|C2WSTPS;g;IBmP^Y7(YK^$$o6Kci6Bpo_7 zj`ZvO53wIlqn*2p{x^uDT1aJntSo!|`F$WI`Sk8DQ;{+OXb~)Vl?lX{uWAY4VF#w? zyntdO2$iH<#nJRxgfStrG5oaOBRtS`mL3r!*PEj2H63*Ud8m=1&rb5uG`Q>ZE-ltU ztgqROXc=qpORrmZ#Rgh*~&unSv(65q03p)re!6#VA@3 z?`M-~Y1SC2jOl+2xLZu0`gGRO)5h`~IXxQ#J>#*Z5{x#VTcsFGuK*pFtsni?XQ&!5 zpfmK4Fv+seRDUdVMb;NR+G@~vL|S{KCL}XQXM4V8yFZr9os!?p@gN@1q)?NeY2NDx zR-@?+@VF~FBTl(!tX3^r$OJeaA$Jx9H1IWz8(mI)T1`}gQBMv6=lh>FLgt5+x;8!A z0n*nhYg@B{Isqj{MIwh-nG9A3*yr0UdIHg3(cnm2mj(AaZq%E+KX_kzZZEK}BUmF? z60C<#cWjsr@+=i)9Q&1Va{peS0)Od4dns6vU)~#s9GQH@Y_4Z6xgMrUSUwVBQ09q1 zrI2?i4kFuXB6l;(#CH&dn=E(hoCX1MhuLZ9&C|CGvHf`488jaDcGpsIrFFp9p=f!M zk)x9qGSC%tLUZSjP&eNWabnm2O~3w%-;OoihRJQos`3*D$Cyzj6`Q1Jz2E_WLA1IF zM{^LdslnadCkusph)UxcuSi3|t(R@WxWZQ)1}l2WQ=)k!R3c~eI!nYaT> z(R36C)m=|q{BUFJ`%v=F2;;!p z#m<&W5z)SUH~vSoel*J9{4@10N{IfZ+ZQrQia5nnVs}Scx)(M~r6(LIL_;DXy^{Fn z5<57vA3!AC*WtxTHUzy(3UT(Fl;3~%VD0DrCqMrPy2WF^3wTFkF-HWRe+|vt-HVxq zlp$N9dt96Nt3p`gL{ob6Slp>9w~w~UM9f_Q}n7> znhd6KT7hm!bmI1^H@r528GH!|krfO>%yp{-t4zY$?!a$CEn^aEJaGnX6wuBS35$K> zuwoVl`DUEQ_gEQPW%JA?m!@-cs)v)5R~tRLdTBOC*Q6rsnw2@DM?c#E(Tt8LG6RVF zP`>Wy_zaAda?Q$FVOLm?=zZ8y^(>91cUk0Kv{v#2&&%FSm-){+ud{6CazWywEXvZqS!N2)6f zO?$3nFP1P$Kp9}G4-{(;%ioEo6cXZzAV+kH$>!3#OV)t~)y##qs&aNw$|x5|U@XWdBO+E5W?y`;xy5DP4QfzNU0WUw$Y2HF8?4CjV1Tvo;h zz|+}lyK|Gb_j2#{Gor%pSmV5bxu6$X|U?42;? z6=hWOm*T=JG1Xxn35QO_V#oLe=)}I1Grg@xpUA5)rr?V_rX3gtVjv=W0bM9Wl?4MH zRk}M8$^!Zx{*IX7y^5U?Mt7@5cWMC9 zWu>k>#7b<1#l!#CcnY#MN&iX-N9jq&xG{bW{4P}nOvW{3EI_OR&o)1qnodlPwlqZM zfV;sZ21S>kq!$^B{3}WwLpnqhCC-j2%wt8+NMg)DDC?U*)b*N_2sM%y{a`#0W8;y% z$0o%S+XpLgX`*AVg4vzorvzk-na-VNOb9IJ>w(v}uoep!ewVxo0&)K5ZS}k=13Tli% zVCc$=VQF-Q9VnvT$AePk1Eps?$i{amp#$GzpeybEyxPU)L1mZ>@hlRnU4{cTcu%)3 zZG~eu8^gZdi(C7xRPk%w=&Uw)1yT>1FI%Ju9D0r<_+JEL%ByrdKo8NX81}c-?DiT^ zyi>I={Umo<&7Q5f@1b}NBDAGvH<9Mkvz zfR>x{;g{lapa$MnXQ#K-&T4Z~Jze}YqwoUP6W*{Kq)oyWx;z(qtsAdEm9(7vvBA)P+#q~ft`%1zluZ}; zrP+dy6e&0bC`Hj1;)7(@S_2~lXssFO^Y4UaeUlla;)L*LVXRhd8ugFuDb5ph6vL5On#YVU&?aJakR@s0Pe`s)dbc+~Zfv++&j|#CKPgy~oP%!6; zk)G?TDcyZ~jg*C1yc*HpJJMR=q|{Co-O(SR{5H!^7Nw^E6`vW03Mio~VV_DnVP*^ z!#Ob7HubCdAq4D`+HGmO`)7*)>(riaVdm63NrFEtd@IzPEAT++i5qbbn=L>Qvr><2w|8j^V}EV= zhg%fxIkOxesuJ*`w4p#Q5SrvBx#=Y7O^+$QC{?wc8Zwc+!RmA!*~XzkY-Gde%hUG zfT8(M1$9@!$^%H4WItfjU7EE~ws{(#_re6bI&kVidna`%wG&DdWX00(Y-)#z$Wr9F z;*TC9!|~z_aD4cquLDxLFTD=KP3L`h+$mXR)rG%=@As?8cB5GH9bwH>HxKZR;LUer zx}z(MHA^kin z{u8~!d-AcKYPcID{@+-OudmsPnq5b%9NmseRX@{Fb0T)#o8o@Bs>`lcx9r>G{}i&V zUV*)kHCC%LQ~nmqn!P>cR(`r3Uv7DR!n1XEUtRnfv1SDwV6i?Hl4si7 z&r`RkXY5t&Dm=KDDXuQ*v86qgg1aRg`f(4ysIWX5ZcQG15Y1UNAR)SGs`P(ErE!5w zH#o*~@p-#o#S|5NC|Hd8u)EFR(_q}4teN727w?Gu!$DTo+>0{t7)p&P%A)CtNCG?9S=6V{tIK z`}%CPPnTBem#dGM4%GP;8H4eXdcW z(VifagF8LcQsp3mIDg;DYc}52vU^zszQuG*U^;l?X>u`>uxT(;oJ#)1a^3{`LTnIK z#?XAkN{_BeMhs&ZNlg4d_vbufRO;hQw#g&r!?y6KZ5SPj(Gvkxi|VkXa6195-d>cK zLw28+VtXaFKZdMTGFD%w`x=3PvAq%7UuZiOQ!&>Fo4v%Wlc;(4C*BvTut261BeRy9 z22xSR$F{ct#AXCOtp3j=?zO~TO&sQoI6mKbEGQ(UUz}mEo52Eei=8{j`6~b<#-ZY5 znHWaR)t73m2KgO0n032aX7VbK*D=RQ}AkD=9|{mi>ly`$>J zsUDB*4t^@p;`56lSt+SYt3k>q5WSf482xrw>@JAOr zsRFC>#xdMFGM*(vVSQ}8N*qHd8z1(khb=`JIkNt$Z-o%mZQVA&%bpbx^7G^4EzLi% z{X*f#Mo&UarO#R#P^J{JkmLO+hcu-akOh><0{XC>`i}ABC!0*;CtLj_8+8+Ww>^3h zOI-p(v8&4N{<6JaQ61%%O3J!@oH->TibG4Pc5u}$ZWWdztdw(u=}A?7MtiD7n4FWx z$~1IJZYcAt9~Sd@P%`*<{1+wi3GBD(8gOXpaP*>RMZX~kUp5&gEtnSc(|E-iuJ1m!l4|3lDdDhuC+{iNcMd!M-!%-j>!~r z<^W|$Y)pM{)IL5j)SKG^g)yMo=rYb}8{1LJmmhIdISaGnPPQz}QT)+4qWZY}-`7#@ z#oP0KWV@nZ)TFo(kXGy*qTR!{=P9(|{EA&rv0F&XDY#?H0P^0FzX$V>-Hs{4_{aA5 zCA*)BX?DY>gY$Qu48ABDprR;}V^E&?(aew0Kylnv979cuM|cL3SIDw)Rf->0!IsTuS#2cG6!qV}kPt(CClNF#c-8qBvps+5na*pZdmF<3n8*h&SnDF{$0 z|5SM6$>fZpxmcsZirYeg0%gWS40c)}V6sf4B1B*py3%m30AZjC{=6Er8*tVB;B*M^Mj! z&>stRl&aY0eo2W+yNL!i2$3abN}3)bD5c!fbT&>xl7a$I*7&sxHHdydsg!U%;4EMih znb&6Wfm%@g9~s0((W6b2UVMk~YQ!C^P8#$e*U=-Uc2AX7l=e_)NLEKKWU4@)E*nht zjJs@ClAB1HsLN%;bw|Y5FUyRQVegzE+e*LYg4aelEPw-0Mid-f!N@eVz?224M-2%E z$i&g1^bfJ)YVPEkol8m_3Z!j@Fv$X*oIWk*2hM6iJ{fKuZuC>AuRi`nh`d zM}!CXF4xa#$=K+aPFTpfO?QFRwt_#dSv!$E|I4OvByJLq1(BM7#uRAPXL9L)4o=vQ zFdyssyP@?+X%9CssejmPX)THS z15~OA+^*L_Qi8z3tze!;F)5bRf&)c=(~E<@*I!~ebC`k}oCB&#QO8M|Z`6l?Wd9*NH+s}4u$KlmEGo4iopLNX7wrC|$TXryR zMstU{c!?|-i(E`dA*(;Zb)5F1Fr+VKMAjkDU1aD=EUxpy`)2l<$%Gi$<{A!sA3YNp zI3Z~n&6hfxHEKlSUU!oGG-*3CX=>K6aGW9=CfBBH6x}J6mZVecz;X2tfnPrpW?74w z%lzF}J4t46#ZF%Evtq&T8^ZhBN&mnyEPhb(+t7!Bo^K*QHOLRQQh$hKmn2$P=(TzD zo$E{ctI_SaemLhRp%~-IL~(GFFQuQyCoiU5#061Q_CACc(n{6VBrLJ9EUl5tc&gB- z5>4Fa)W5smQN;#Q%?%3CEBVEL6)sNp9;GX8_Ba&nPSP^C(cRzXs(DGgd%o>%3e9Ji z6n`ggAsb8kft1!` z2gQ1r+p~1CotfD=q=#fwhI32f^dP3)woIQ%-Idg^u{-3!bq^!(*?W3Eb{R9PfPeB; z^wwa}tV{VMV*g7qFzGY<0sOEEonMB6BP)xMThA7o8g7jcLzI&1%B#bMbqa9WGrsn`L~VE+t0KSdR9S^pj$xcuN+$>-A#a5R7skT%qT5TD>Nu4@ zlyk6&B?n=lD`BY+_hB>YCKznQpqKY{tRKjl>W&^Rl~5DBQsJ<%hGNr;Y*$Gg?!aQS zumquTGh<#hYrR=9+n{t0*P?%vhEH`4FAy<_OgqXpaB^7l+80Kf%<4ABP}999HH z2TK0ETw$gO&B$J^Fh7Wi%TY{$r`$OosrP#bokW7f0zEZqcs#}X@UlNAu02nEa(8suz8t@T zoj{bi${*QuOB7OJhgSTNC3h4864d#yEPXe1e^RPg`p-07EV-68+FbBpW|s-LBYgOA zCB_1OR_bQ}?;OFN2`1n+H^Ci^ZxBkH#6(~Tg<~%>1s(`iF(w0Kb4HE-fhQtAJm`s8 z8NJapQgyWeYZDr@)Vi>d#c|Ix%6FnC;@nOL(*ZZ+CZvX+F^Sg3SE4s7=`hl;igZ2llpG?^mS4cmd!L~|RINf(!x zaw5tX@g>fk;F7TK!nQMP8?$4WvaP*A^ghZe7~h7d-AnUwpDU_AE#m8)X8&zpgw4mM zED3NBeCSpgS4HK(_m8U>y4_DI?nF4FryKOCnDWv1>^wfBi4Lha2AFIau@;wbj0l?= zA^fVgOBzIcZZW2Wh#E!xs%SJWm%&)1M5T7H@JTU9_a#nv0wg3Ou3UsVpZAM`yCDLmWU*v zee6?Pw1S*myRc3PWxNeirc!b~Yt%yc9p;r!IedSW2LMhCbT%j$_{j#ybfVYdnaFkQ zfrg`>vNq;%*BYWELvgb~lUN+S8a><~r|d^%cU0MbP_xB#j6C*QDOM0S;cGIeOHyQR zq-+F9f%0lLcU@jRykcJ6SoIf{SLcj4UL)qJ%v} zXd-N;wEKOj4OPg_4b_zk{!;XDcX{1@P4EJfeQC`usM+B)GJWbB*m?DMl08)WB*f9J zlgn#H6+>i*hphI5xka^j!YEE06L8`fhL*$qMAp9)AW6HBC5)_4VsN0EYh^@X2`h@y zMyrauWaU#PUO|D@myk?2GF@Xzo#L9VQKM^Rpxb$2q=dk;g;fCA!;7w;bpJ{Tv*n?0 z&sDr_2)`vxpi)pR6#~ntUhtO+(~tLqW!?+!20;>m)eXo4fIi0`2w+Xt7Go=mSuU~= z;FpN4)wvU;HR6PKrfrQdoti2>1(){hX7mrnQCRq~VeH9dQL`vUM?9rrH;#^GS=Ihf zwuy-4H;=nfWuFp+o=z+>+ezrtke1aoG zSD$BGBpSX_cIcqaY7XR;z>XYOgDavLEevGpW1~-^OWOQTns#ziK`spCl&1aZqeEGQ zR@1cOo5*rf{CINRnC-}=gGE2lf*L@0%FzE7mVs3#uO>P72wc4%fy}m~HsKU;iVC~V zlKokg`8o}A^>9_{jeOA2lo$hZuzBk#W%{6~19s91oSo;S6>5yKsa`Y1=uU-}NZ4bI zAOn2SZExGzPQC}B5dsF#06zq3bxB6!2pR}r>~=IlMZ?h4*q|=gK61H*bE4Ozl&`wt z9&Rt>xbJ#WQAe)Vx9TG8x(Mdkk&7&hzZ&msU$vb(SG`9!tM|jtI#_T;cXEfF*g`0ZEz}eQ z3LJN@K=^r73__$a0l-X3+9I2t12~O#E^(tWF<}Ydq0EyEJChl;bb^Esj z@WdVFZK)@olF0{g27>K_;6tbyyHXQ9@ylQ?Mq&EgbDz+Uk$X^ecAg(wpuedPdkWXj z)a^8UnyM70Ikq;*K5vKAjCa9&p6~Cja0ftRk^UxR9U(}|lH+c~2@MLI>I!!`1om$s z9(&bHwuw+c5Ci2Y5JWCPx6*hXgUeBT4=Hz@s7qT(xod?1qnhTEBr0X93qcXfkXduugm9^pS zsVt5ZE5Ov|a6EFXvtnzRe(gc2$}zjaA=SwF8jF9SUX&L|ZhY!Apjpo$Djd zI#l!}($$nT>azFZPdw$~#12awb+i$+VC*G4x>b|~o|sVb!<=6PN}zqNos+;dVCN;4CVj+u{* z1o#2PX>L|!rkf?PJY#`Pl1lb zTNU`$&n(WW@jiKKW0?ES@-s`b=8Rl<%Eq>l=Qn|(z`s*oC||Km0g8q2BTuQPYJB7= zV?O6{;KAXD@9 zpdC8FP9L;0^y&0LF7Xc>L(Vp`pNBEsrWI{_(OVEX#@Ur6ySQYRl-&99P@=>U+t%j3 z`s|5$7f z7wMc!E*#-JV!QNWe*#GeqslXBjpsP7Z10knKuV!Yk1NN=Qx__|v`ncai0~=Z;z_ts zS+-wD|6Gp$LPO(t-e^O{^RvdCST|e8DHgE-^PDXRQr*aB=O@^-4a zXYLH;WyT87A+ay@&w-8<5KQcuOz=KENd0?ZG=P2Me5Z#6w}Lo5NzC`B;NnD`^sN8) z3moqJd5OCscEkrQSkeeVC~$PLo5!u|w^N&>5NxIJwl*}Gf)e|((@fE-o1@9R6~R8{ZY zvt=?%GLy+al4%79>nfDkhGQJZYRyH=;CFj@x?jST$E|2x<$)WVki5U1GS8No5qVGXE9oGuUM$Mq-@CGkas268Ob^>E9RJHL0hKN3nlt>Muc( z!Uh8A*FUnoA4%PVsXfF`5os~wvG{(Lno3b{O7K5V(_K(&3kis#6(D@>7P|l7`W%)Q z;D?w{W;m9pR0Ob^(rd9$cC(SzJMgTv@T?8QAj3wP0Pjjg&9TFBTc}xn-xrX9Rhmyi zMP(yaTSCB>EZoT}x{{^=g>q|_hE^cQgZI@glgU3Pm>wWS?>lhLWt`=xSDuq?m^Y<}o%Z9-5k z$rFHcvJ((yfH0rH2@y;I6}UJnA3#8JK&QmZ^BRYkC99kEl~SP;91q(I4I{9FkPazW zzpMBc6h7ilA+i>EhguvMS}`$!`7c-eUn|TgBa_hYDbs~T*(->u+R5Wsa^%E>UO?EK zBf;S`Fhx~UilI^iL>NLrKrNuHSU?^@_sB)b8b<_{Vn7h-m=vuy5D|@|6Rz2b$TJO~ zI|4Z6eIiO0`v@_pe%=NkZYLOaGe<-x2=km*K>9i(GYsitv$&nG7KQW3k0)0tgiw-9 zl*FZaQ*3>npAIipMNGApYw####wBAbb{auH-g2rQ3`8b8!F7a2yZ8W)Y#$QxH{2W< z<%rS1f+M3X?^G(2di4&CSTO~a@lkJ{ELUX+F$;~gBoJ{~$UmPYtzc;27LGV_X^ErU zT6AZ}MGG0lR=YM9SChvOO|(`$Pa8ok+||mBpP3-p!)chO@90g?xQT`6|FL2h>zQkA z`(m+rQVGVAWGgsYto+`M>ej)_Eu>m8gaL?4;1=jo+~V9A5~O*UK@g9O=Dh%)9T_D? zLOFteVFdh6YiYu9Wcj0ZD1Ojg{I(Po+OQ?|hy5l^OgcXr!x;~4CNv)m{`u67MuBG# z&Mu63+!xDDDEJ3^5aG`I^AOB{F0P&U{jG9cJs-bWli7rxHDtsXOjC_|a-JMHm|QG`Ififs z9@WFYmTP)ytPb8}uqOkH-8DMvLi%p%tZ!Pnl4BspRIY;^0-YO(XKje~BzNW6-`_gc zR|<354Mu-FigaSVyhZ~n)+sqLNwNv|;s|pfq-4Mhg$FMw_gO>f1Cdn^@5q_SdOV$C zK_G`_2=GcJr@2CvG3Iz+;}|FKT%!wF?*$g5d-=UVRA%4rHF@u9vK&91JkW$F-Jg^B zxSjwByRwIvZO!#Pxxb#mJnsE&nTP~cf6G{09_%4WP*yiRcWU%Wm63G|@m3ZsFvj@| z*WotA?@}v<=kJZR(6F=?oxP7NwI9Ll4Ppx|d91kC;rFIIG>$VC;~(N<{W14HD59haCn?WR-)HI}{@Tq;&(URLR##nJ?%H zzXV9!TWDX!^+<^6k^^Sp9j$qQ}=VurpNMk2ahUmXLlB;Vn zTPf{BC64~-uQR4g9#gZUskp*Z@5DoPx?{00>tW4PMkqNcB4muKe_xENKRed38N*3I zRDvDi53|GJdAs;UNVbQ#!zzn5m?I8j5p$%;nSh4zR(Z!1#JK&tPGnsjN!Ur@1Y z)V9xEOveLYg}E)tAzvdR_g}~%tD)8EO3e?h@uf`>NrwEedm<0dD6g&LzLC4LaFyoO zl{uNsE&Ecbb{@3I4M`0n)vS(r@mp1S%GcB>TO*_M6?u(Lb$oqv2~X`GynE5JWVpxj z5(@1viK9}8@5^P@n_XMBJN4kFRQ+*P`&)*^OV7*q$UXl;ra=Ir@*L%PL@rJb{!1cP z5?s7ucHlEZq2`v6@L0pLB1(p~P^p!bzvPu`(bpWT4T$1$2bGN~W6qvL3@>?3)T|(l(2wGvu7;W8@=>|6#CuqiV<09B~QGPOha#*HKky2+eaIz&k1Ez*!+9T0qJ=mpxJ* z&JK9jAQZ7D{fz`o`Yd3vpb|SaiqzW~RVK|nA{*dWiS_swGAG3eUgl}c{jCw+E&>{f zx-^GKPLbypgW{qW6M&P#vKHAwK4;$BuPeIx>IQ4%ws?*E8`z*XoA0j>NQ6Aq-=~$zx5KOKYvrhySOOixsrC zKa$N#F}0g?C%Yfo_OZcaWsCax?^1E} z=sAeWiO!O}X&DMTBb(&YZ`3+caUhgvk-&&oR6Y?6 zyAwjEW(AR>PsR;DwqNpOD?8XeWCudeKLFD{HMdh>y2>Xp+OlN@2g7|UwCd;jCk*1MaFE>We&Nlc7)A#!tz zz$ziKC9aieai7}ftfB6>MKD@qyNHL-ACLUWX!o~YwEXEU|5QbBuaD8)gKJDjaBX7u>2`ccWy8O8 z+uyqF^=@}*;QE-1+SSPKYEduam}cW79OXUk%pP|}kFDrQ1A)Jd6S~VdQD7wZl1v{O zceETk{~oUIp|lC8&6Ke`p=-EOi&s7PC%W8kyX>_tNY>R|{<1Dx9dqOX+lBu+didH} zc+@QZ5!Lz zb}kl0D(%qNzPTfzx;wcYS!%l+wAk%xdvf#L{O$x!?!AFb?Mu&wy0od4#%r&^-At{J@#}DcqIW)S|ne>5L)iC9(UthyRa8L_)^nOCpiN9;8!{@ zR8t(wZlzAV`$^Lk>F6sO?lso9|8v#-Nr5@9R1F)-D^(ox-|c9wQylu2YwmOuDVu^* zM^hvMb1{5K;oZBzn%~9{k<>DODTIB1r<4?>;qn`ba9Cb}J@?9wuQ1pS5qHiITL+7Z zBy$Q2#~yc8`tSwzyP~LfYEeROzA8tIHDX7n5Hlk8{Z#m*)etDLi@byK2Ki*%b!79o z2Rq#Zo%XZN@Nj3KZ2ujdZUTxyjd;Ul_7O5u4z%|pB}}HS1*DCB5g8(@v4Xb;85-FY zT>*4`sgYgYaF;d0>P8iThH>m|(=oP#<8-mnuOy|qaKS%Bo*#iaNisr>{q1Zo9hS0q z3((M@!I&uJ?27~{=1a~&d~9^8y@>x9D{n-qY8#0dB9+#WM)Fuq&h1A@ezey;)@#rA zvbrwr_2>86nqJ^Xt7evo?t`L&%lBVM16S!BEUG-t-+M*oPUz?4Z>e;9c6nZH}#{!mEkTwndl0)?8BO~jP^EP?XFYXufWLDI^0WAnEu#s1ob%oLZdze zW^c{F_=7<}7pQ&|UkxcjU+QwFt3Mz#?uy{QW1{jx73Pva|;U*R_o_jz(- zU(CboKpTap8~M$h?v~Ce=&iJw9mngx#+iHve%*zFgp3=nGmltx!4u-%=w-qqsaPt3 zfqK0+hJUNc|ljUIY0yv-)3SK_>Go4x55}smxC0-YQr}o>KRM78{ zFX^m)kv0Gyzl$xTmRp~=_Pj5o$t{D>-e_hNcLo-^NbpkuB(pXpM0@iz=s&_t7W)0B zk@I)!=L5uujBS^^$`#ZK5X_EZH{+RPq>slg*^^j@aopW*B+{|}ie!ugRxq`N{T@B* zutFT(O_+J0j^u|8CT|P@t7y1HY`t=VUp2ulkj%zAcGX@-gA3<>JxLPj`e8jfPs_~X z{{=y!%^u>_ui_DW@pk{C=o@@sf~4faH&}mb-CPnF#Hg4j$wGcyuSg1SL=vxqM&DKC9u319VNR^~HV-k>@_Nww#VGWyY7bjA}YTzU31q`co#_$sA>-Pnrmidm>(Qm8CZg+mApau5#nBojh5Wzkf>D z72#hU0r~+*i+B74rar_T>Wtx{0iMM|aScam$yS{HB|5m8iz zXqGLel8ze@_h}~!Ht*O(HS6Uy3A^?KQ?bP|19tO(-6ctdhPA12@5E!2+)iTjT5Y=*DjX%+$OEZ57=>VDL{WL z(UkTJUD&hW)=aeO~1^ zwGSyA?T$9iUk!~W&x3P#0YXH>NUTWwru(KWJO3NOk{yVJgBDv--3{l5=uB0e2I!X) zxCfjwg}%o1Q_wHphWj{jR+6ixW#1aGYX8J^ZEtWl;lP6};0*d*aIR{eNLRgUMgHH(Eu*o{#r` zaR#&b)luDe{S3*DF?1CLYJ@-{*iOYgIN9Gb*&vwC-7`64>1~t!9h2=RdnPZP5n{HM~RL=P%}vIh|a&STvrBoUDa^G8J_ z2Y_wn(*mt4Z45!l#sirb?j)D$chTJCdj}(^ii{lq1E}yFV7S2_nvLUfK|}fh*fy6Bca3Ys?k*LpEARrhORnI<*79E z&xx_%BS4ZyPL28$A4!b0T4$B0vcfB?Z0F9LJchyOja0ohB-TI@!&nyx03Skx#=OIO zPjc35c^b6ZFr+ILYG)?mhg0p15gUdOEVNO~oj)6~hesgT&yO^Cui3Y!+I3S=+}`eX z_TqL0QQBUNxQ4JWDppLaD<)&0hFwy(0{LSl#if&@B@mKQu;T*R`;))TCgl&y`Ai|n zJ+nc#KTQ|9{Q%hI_`{`K@Qaz_+*RVJ&y{|@oRYU1uyRDkTEhNuNn;NC z9dVJp<%pgxlD4-TeTzUAfBDZxgfMTtx||*VpCdqoQN->;f&7i|3f)pH;$$4$2rrrX`)=Ug@0uH5*XA8-y>`-}1K z*UYvXHvay0eV^I0^>@q1}PRX>9qdf8dUjwHuvj|#Z)v)cFQ zvl_$4bfGrO(y^g*B%VVIS3GA{IyZjC0TDlMmTeh7Z)4lW&$O3}pD}I5&%0p=&^>7? zSyEF;uv;lWD{0^n$web>(O@7QBtNiiMgp>_X1wFbxGhA>h!q`^k_YA?&X%ZVLV%gg zc2fw{A4VmVmq5;E#&A9 z_V)52?jSDpK_{ojyI?NpAh4(l0ju}V%_EkUNoNrs7Z2PuFF<89$9#MBywDSN4DYU1 zASlJ6eVl=*TH9@DH6jN8ovYV*bFhWG}@hcw>x&gdyTvl?tsGo9NW0Ej}`uyXVa;&6;{$-7Avu);6TXT#M-EWYobbp%7R0aw$M)fF1P~f9p zbLRwiHb4V*-w3uUq!$Fch+vj##sAK`-!lh{>cftZf6|Ic*qg&NZb<`+^L4Uj)boQ? zxXyru94v%@60CLbPST=h~Ob` z4YMT~t8}Xt##psVY8o(Vc3{B7vq^ucfw<6$`d&qPQS{L-qpjdBetLJ@W^p@NEucEN z%A+xEWxcACgC0yIajIUE_}dIAmb4Le@5!igeu?7uqV$+$|L8Zci?F8ZMjTxh3*Ne` z^pJm`4_uMB2k^L#`wA!Lzeo4xaNK^?-ozWT>}r?XpXU^>X1ZTb?Tys^J$1(_n|Di~ zHs4;NN*o3DoE?+d*E3qA=0BjKHl}A3AxgCUIJH|-`h?t_*$PE-PxX(dwm!8Box8}f z%`VpCC{Ao|LTmqkW!hd~gMt1v1=|SwpGsocq8BsY*KjJ)0_2^zW`XzENWAQh~QAp@WV3G@_!*SZKW zG}80^a5mH$mXJ&Ad|6)N4V8@o^gZCjUDnvjww{vQL;fFx%2g*2f*`c6q|KN@*N=1v z=O@n2rl|dUIO6eO>#-rkw~n~o=W&`NEc=Ov^u0GZt5RAOwH#cz*x@FJF`oQ#vm1o$ zgfL(Qyxa)HC$dIW{_D7v@WeYDs8qtP0S_pF(fTBBCn~sxilMsP^O#(nd*0cx-j4C^H19}ySwZo1Kb3{tg^$T~ zWkR7MhlA}L_fRDro`Ia;o-VHO1O&>tC!GBm8In7?qrE#y`FtYJAsk2RxBPoj^rTxc z7XFKICB!=5HxGxq&)_oLBCTgTk$}Z%O2s^vueS#mnQT@#Z&HM`+`ZZ@cAy3-N&seB zUjPwdv^eOz?||rrF3Km8XXm=|Xpv++_f(^+jJ67$IFtHXA~|$0pGbx&#dBzpLFTY} zw!~-{hh@Qr4jZH)#2`F+%4Va0V${X70Y4LW55{Lj9W1vAk_TpEomf_)8aCmvW1g2| ze~aXlDs1)VB}$*To5)VKYzeDpQSvbLCNM)hPgs(wg-|u( z?3%|<^B1$_geRHf8wmWbX(w5;qiRNO=Cx8VS@aR)3Xj$DCFTpRF2zwqw&G8%Im!Eu;x?L4L=@uZ z^QlbaFcaAY2gFL6u5_P2-`PsHqpH9zs{l@kF0wpQXoPzcX~AV^8Nw^Yd*Ezha(_co zjQdv2uGZtpo66RXs@qva!?>^3q4dYs-Agr%`s-zVF~QEHjzqW_ox@#UMoZ=xU;dyB zi@HHF%+=-WH5y28J^n5!=M;TUjGz8h%a4ZY|r7%Wa|S z_OgAuOc-Rihi28_@=wZkYuR%f%7)%XpGU9z-Bb2=V<&RAl(T!wrPEZ@Ld(SCB9uda zs{jKdS7i_sCC?#)j*Hq?{P&^u3W8BK3}`BfFMg^<+zN+cRPf>^1@Pd+c_${<9?E?6 z`H2W>lL+L1B4WN8W-LCPRGSQ2OR*-53TW5{W`cCHN>~ZJ%F&N1bzSIvPP=zt4*u5Qf2bIf8cxxAD)Zz#3{e;uqO9n+ z*$7Xi>6jWXex8e0ABk6=x@DDOBKfxA6D989k8q!GygIhbwkUD5@`;ICX4~2)GWJXH z8#OdhBvXwdGw6%CdmzT&+{ZA(-7wd^lRLoS{9Sn7p)nYLY8j<_T`Q%l9J%fiskGB_ z(CRvK{T-;O-wR;;RiD4+DI??JzT}A?n!8D7zXziX)J;MGTFOBjLFtTBBYN~H2v2cE z|2@giDOoTGva<+1J=i{M2h*+ZP;PK={4uwEN^4dZP_)SZ+3;ifB57hby6sXDOLv6e zPK%uZ?FWXKaGaZ4X@_EY{g?dLzN-O&{v8 zfr0p4iilJ5@1rgTz~L#-PQAY&z+1yNQ4iWH{j(Auw{e@mi@;++nrbGnfW;H zqyz#XTf)9;ZZeRaWV5;A>Av(;tTN6{@fhuy>(l9~>F5MYOcr(I)~3dRCM$3nC$EVD z-5|9n^LssIf1P`Rnuw`>_JX#17KW*V!T%@T#JM};GbQ@E*#?2{M6MSdZT{tdk{&NhjlfCwganf;qVt=M=VAIo< zny1`ZXrnemQZ#6u$0e6;hTEdbOM%Q4f*1~2nw-f5ZG6qjq(Zg9MZk{d^!L5|86go}=H&|1HFbAP* zCn#`2-5*o8lj;HhvxEn}6h_wQ#&7~DXMqyiSllOUP4RCv2&4WtGA#;=aHF#C; zBLs?7gaw!V%unM|TJQBRQ8F5S)@b2qB!`SdIP_3Ph@TB;+*Hw{<}^RzgTD__s2UOX z8#MC|=2%2$u>iR6L-O2?Q&kFA7j>6KIRzrzksLat=WI&vxk}u2CBG-Aff7Bshajj3 zl3;gplW|yU>K=Fg$??y1RrE(p*P7vp8Gl!D$Y4U%U5&uG%M4=%1VKEkibN5LicDA| zWW0<$!HVKnDam9DW+r#|jMAJ8j(4QPd9Rdc#^H6%b2x6Bkqtx5GM; z7ZC*Fs-kx7?Fg9^Q&%7(6sS-rI+6v|!^!kT=NI+lED2bddsgOW{Q~4K)&Wh#^<1d2V$8su=UQj~H*%vr;`&*K!brVE%#3FWa#`Gy;y938N-inZ)4$Qc zLK8#s7Vd}T^q+AaaYf{uB1qmp=uq;vkX`wr00vb_b*w^;i%3xYFr~EtF~0nX$6+7G zG+uH)fZZ_}G4TIA{@rdVX(R7O&beC0Iq!r1o!Fr6l=kgk$=rpG9};X7&)?BMX;^~6 zxW#^}SR0%qt^8OjhnP_*)A<7{v;!~g`CZFolA*4;R zsae#jWkjzy_T~7&*gJuSpH%h3nlgD1dvuXoG-M+XfloG}kOWlsq4N?K+C*s(?gU%p(5mMkRLD-xQJzyd&Z<}kO5D1`!0#N}@Py}7C!jxJdX($><-W?4jMbGr|`AB>VCh+yl z2&8HR(ophyluUSW2QTiLf#~iS3V*9v8g#wP$e=X8ly`-u-dI$Cj+`m(VOpPK$LeH8 zQ;fp`jRcitQmwkNQ>wUrIkb?Hq8&mBYSe?(@&-0=4YO%chpJ*ha@C<^K`U9AM?gXk zG|`)Aj#Yb&IS$qvAG#bLx|yt21*h*|zzD0gw!R(Q>QDxd;W%ZNVuTm)?A!4{|C|vi zB;r-WN~x;%>`LO^rkJ-VdC7JN$)b1^&(g$(zTEX={faiQYI0^N+=dX0&h2b5aw+mq zq^FC?`g2i+1!)2tfeQViD=r7Y#q5f7h5tNX#y1zYJu<#6Xi>DoKI-oUCnd4U)1&Tys%%4JuWxnmT_Bt91&>2 zPG5KKI3h^tZa^tWSNfU@pUOVj&C##9dUAX@o2beX%J#tg8elpzLFZXfBjmxEZYCrf z0g-1QVbqWnriYy*G01$%^iGX5vfqBB9E~$!O!n2f-IVKdz;Sb}lCxHqvn$FZXT^V! zT!^y5{KHg#0alVcAlZ?QJAk~IkE?l~ku#g~z&D{MJ3>9y2!*OqfhG8B?cyh6O2uy| z)G8$`Bnz_TuH#LU(t9Nq#>*?&<5?RCynRNVx!;uCbE>*c5;q=UqVI)RGN>cukT1ry zcIR67=@Hn(TUme2am4BxN3W^Led?k#j6p1CtLpuik0zh#v^O1zq2W!$ zyak&lcU0x?p!fseCpm4LfXo&FnGo==vxr0q*4v&D4>8rTbh5Zu+@bv+HC|dq`Jt`k zm1_1yP^_)?pbv?*L#v22kR6u!2MoO`WOWhLUpyQ)Jla02;XBS>M*}AzDCxlpRPPDO zS=cn-MJvLJhM}(np)hbQ$Cv`EVX2Q%5fZZSd_ z03w@qw-QtReT|&P*(`wjp?3C{iirMA4a)CiBu8&W{9X+U?bf)NNEl%x3yd<{pm6be zjRIpOxlb6cM@9R&l4|{V&2*AxTPrvfrq?K=9hb9~sI0VFnR;cte48Vh&yTssow^Bu zBmfhY3ayW`G{bMk2VCAv|3Y9={CiafIw~Rau+PYJ;aLGibOjgyO_QcIIdbl9>_JtE zPE5)hRPY?YK;R0ax%W@P-jND{HY*c*jUbNpFBw7+FxUmMjv*ACO62PAC05q@(!tgM z0v}o9@Lt&0e6g?m3)N)7?#YT4`V_dMtCbLmq|Z}QI7zl#JVKKpkTd>0}m zREd0-Z_xP}iEGuhJh78v5#<=2eC6q?bO{>-*LAjdBcfE0CTvzPsQMrhDz|Of9?2U3 zF#mFJjP~?ycSBF>7E<|m(h-VvlORTi^gh3(+XSn%`WjT-T;!FGLYE5u-=gjz2A{QJ zr-hZ)aekYFhvX(AN0Ge9?qLP4^Y2DGTIa)BW^qA-MtU|_p_6OQ%LX>XH&{(h>MKnk ztG8-*mi#>>ySr4mtK{!2ICcP<72Sb`}MBrt91eYvIca_DgQ;Lz3G%pf0#A!?d_S zN3lvf8zV9-bdGX&u0W-Wg^~W~emjZ&bh#;L_8imQ%JhFxVXyVJ_2Z0u!4SOPlPK7o zJkW=Th)*3wlX%XydHiej>^$jjuchH{Vn-U-B*^+C$a*KaTC``uP{E9JCtD9Di->Vj zI48swmRW;Us$NbCGv9i1Dz9KF#+konqb(3Z54NZc+c(WFHf^QpUTuWuVOf^uv&!rO zII(=iOtLZ#c+(1u6oz-jB1Li~pQVoLh5E)rjV5o%j)J*9V{L$nD!f!jjE`K6U;#bp zWS&w_D~oNuFip1JFqe= z$h^=M8K7kQttH!U31Q$!4|BsmJt(BC$s&j;@n|t`iLA&FEneV441k9%htiK6{VY^x z;%Ws6_NAYi_$DRql@V1-Zn#Tbt>TYtS_B+4f&VR%1jHW52gnS;0?hX}M*tvij%z zk^XabBy#aC{&3XrBUAQ_Jso#PI*#bQv;9un>V|zT9BGH)s+wi{^2^WJ$MG$2PRgsA zTxwYhCU#LENRK7;^`L%66YNH*tz-{>-c|+bmWB%VfRPhKbbRo~1WzqGsssJe*<<97 zrT(7O{e+buUld~zO)hyNxNgG;V(T3Wv%4*Y_CUbhQ|1ZyyT{vqQp3`rGXK=vGW)Fk zmP(c0p2Y_3b*Szlq|Bu!id{XlR0pdkKDHVz$cTo5qE$0bRV)AI)?wTZ|V`JdFt_nr@SuCIk$y*~3 zv0=tDO_l|Y&T=#3ck{xgd_P~TH*F?+4#Dlpyz`J4Stme^j`r#?d#GZL1!6Im8^;&h85qHE{8C#O*$I=^{IEHnw~#KvI^C*>kKJ5S%n*wG z#?UU{_YeFwAgXx~w6#CJHuSFJRbG>m^%BrdvNp84?bqUkPnvte9Q5T1Z%f+Pc&n(* z;RWC>0Vmz(?Z1SgAGCwTG0qi)@Qi<|4WLQ(f9-BFpm>4VK6aOAITrhB_%|l?UR>+Z z8af6$82YSBoEOVitdL$08ez-hBxGvSj zr6yn&7SL-)PDzfHS?ry)_fP}k{q9|8Y-M;`Kl96*bU;{!@28A=vL;2;fhkN}3(9Oe zsxEDa;|Q}DRUpS5&^o$@qORr1wk?8?a}We>uF}_I-*9WkY~9$EwstH_wmtNIxp)2j z(FeRIG%y94YgJyqK1Dw#@<`h*ZK)kxJr#)dH+ytMWM# z(tAAt(Pieh3VbD1VuuDDvKXLR#PGGZV8W%|Z@m2`X!g9>3nu@Yb1Yc!+4=S6ALXhDEWGY_^($3@bD6%~IqGziRzuX02aRCj^i-_OKP;aOEt)^WsZAQ<-^a_%?r%f+u&^!4*k6x+F7?OB5Y(xk~}Y&S8i}+vtj*B+l578 zPg2E6vE&zo79os}us=1Q?x*>geg?%uW@U3ZGLKr{&d=}Kob#X{ek=T=6xdZo3ER;Y z`knnw=_0=irtn>DcfXtM>G!}Lx!1fUZlAIJTr8_QMkDBn?{WvIbz>|BPhblf$DrbH zav%0WRse&N#sPTo7Ghw-GJe;XA zvWyG6xFx-_>;AdAJzMuL5_1>-h?PZF&PvBM{0R-;jg*$yeo5FbNtiPINJz)zRoW;w z8I)@zpAX5(qKRF<0iPY~2+Y|+pL~8|at{&a#O|J9euawuX3Q$;oTipQ!AR(4N8$JL zaa$A7`~0FIj2m;o(#yk@k^@73G$aQ4h941U=O!GBiarV z&tlt^-|IV|0?T!NI#4u@&*A9S@YY@Zeo(9#_EW!cjrdq##!hV#k34?L0Mzd6X8H9> zyP(IE&qc7*-)!hD++n;my8rE<1S0OZb{AWxkxL#|2#z;dbkR;Z!e>(TSVa0-K zQxNZ(?xSdet-|b8p%|tt_KQSfQP&t+^vqK#P9$CtOD&qf%4LoOwgcK358o?wkH@>!PjVr5G9!&WV9 zZ&2)cJA@Mi5-U}>vhGq&o^cR)rUln*ggvIjk2VhFdfhx$aYWbC%;;5VXCIc6?Jzx+ z-0tw7D#cg{xHIiT)2{P06Ij3#o*W&24>&Kn0|zJaV3BC~v4k~1@*1QT@CK2M5~`38 ze3FzJ)kP@IbSTYs1o-a9`j=ua%2@K;2H>%UfW~bpA$ET{;q#w$--te_tAicxJ_d%I zsp{H*;6oDUFAr|5yn=QUbI0?1OpEy%vN*tCOhgzFYOrKJh~4o$3KEt^z~!S?gN2T) z4C_YDMA5b#r?Vz@Pqyol!@kq0g(>g<*q5_XpmuqyRNrX7BY8~jjSy}WK)-{;6RtOh zuOhW)K4wpS%%1)j$BW*kd|Ll8d-P-W*guXv`Y~y~k9k9RSWh63Z(Rfcqr3@*`KKho zm1UXwUr%|Kb&JLhRkXuI8reuelddMR6Qu!EH)Mgrs6_E~!VV+qQpK){#a{9YXzMy# z9kjdy28=OHE~Xm{W4_$k8CmQ1Qoo_E*g(L$T=}!f8dVkjT>g2wK#CH>=AaktR+nBv zt=i`>;Vl5CmtyAxK*Po;V3tagRb*5Yf+P^vVr6{KwNTd1kmAfjB9Z5fU{9sC%$BF_ z|JWzp&bE_YLFz<}a7J9D`JK-0mkLpO0D_!u66R7ce;VPw@1*ovrmA#V_^hx1TOcJ9 zIFyoK4vhJenJ7Mx-ZjI4zKc+WMyak&%FAtrh7mn)OEi{xM9|)dvfXh@AN7dF8l7jq zllSrc$;o5bfuI0a=EBo!Nit%fG;V-?z*^b=5OViarsCJBFnV>_&xMGfNJGmTJklAN z4nM5lK_EeV1VYSmN zoN9wqTL5TGKjp@tegwE+P!$0p8$yn0I<|6>OINxX=Q~^JylRcDuofW))03TZ%#y74 ziS}G@&mwL>Q5XeLagsK+09txp9OSYgce7%dVA*r1&nV4eWcJz-TQ@Qgw;zn#nQKRK zE{`2I5`mqMHg}ZS(dOeeJIdVAW=C0mkYCz$ySdw93l3Cl1VTcJZZ`}XjpB@>t#K6T zN7u1bz#50HM*0}U7*c;KRyDOhK*{O=?WaR$oK49_iS{e0mIi@3!7a0oAmSUV_`?(* za!_%kjnjyjq9ql}%l(&qigVtpmYS?i8psmVJ`)jp$WJUvTewb?Qg?kcW3CMLCru1? zf|m$$Qt~n0IG26I{RiR)SItu5KIlvkjy2zh4Qw2CJOKai1D>SFgiQ&8#E0!?2#lm) z!11z(%sOQ^^AF0uQ1lt3dL)=x#&bfb~bgSvNQ_6=dkc2-V`Oz29<118)Mpk#r~u)fp4f;#E!dA5F-a zj1nHS0Z9`3aI{>?Wk`Q!Vx&CbAV6Z#+6a%hEfxF8{-sl#JK6QdZF$@3Hq(-K_~0bI z!Tj9jtRGC1h#p$_SjSM}_rYgO78HFluaFx;T-Cn}bPD$)`FaD!^EtQzQ+?k63q4jTd|a-`B|ah(xn1CY1#%*7gizjIpJ zZ=PBtn_QU+3sHN+TF>ul$wSdM!5H!UF>k5_=aT&gi5L>dczC7?yn!IX z8<;XW115AT)8x@3kU6QvnIZ4rC;Ja4t1+fQ@1b8zc+q)cMZbNxH6FFBXK>i`midgjiP?0jM7iGcVLWGQ!Nmh6mD`Xm#d zUxdyXYvr`UeDN2Ne8$c4Z4kT)f*|LsnPK!)`HL!;=|D+(!c3;?d-31zoemT6*A`gNVj&Cjt-Ro8wna*{`S@f@CI8^?xBt zmP_;GR~@oB)F6*pa!UJGBJ{Z{qBgu*b*)ajgmMs*MSrQAC9u~`rmQRRHP}PfW@utZtDPy3w2rDx^E}C(S zS<}2LW*j3)WTrKufnCuJGxY;RQY_v)xnCEMN)^dLE~3I7zv|!-npnIcr$8}cJXcb6`wxJgPm zE?b*>!WQorwE-|`#ePdFW3;Ggb+Si{BWs`w(U-LbFh%qcUaZtlU*+6WvYn7hOy<8* zSNq;D#bzK}^CO`@oPn`w3Yh_lEV`81I;aQOI9_|@Y&%?62#fQK*g>Mruh6-r$pELMdh7Kh~QIQ2Vj z$#psxR+GguNKq;Anvpz!Jr=vVI>_Qm^O#_G=-X;`dkvWXq-J;2a!P|R-71Y8w+u<@ zy7T)$hWCUQM&0fmN)=#z0_GV!^3pAln0k2yUbTaOOOx9Tu5tbbw|#OI3BGaFspix< zbvw77^&$4?)?3;ZY`cXEwu67E>VH6x3Tu@P4vd)o9{d6(0?v`!n;yn;DaXESv%)9> zP^Fmo4!=_%_*|L0g9wk?^FUIA;iXm4`{85_8MnGxY0q!~km^C~kuX5@j-5A36<)-p04J)FyKmE*qC&!`z1Fb5HaP!YoqvA_ zuQzP9G+|-jhSTkjC4XTTzX)ej+RDBk8oV+2(sz3@m{2T>Nm3WOPi1lD`G$%Yb7gJvD{Jp2Yy{o z7PpdTC_%@>gEBrb#kS!#f@KXRN0Yu1ksm7;wV|vxC%eI)}tk z-abS^wCL%(aI1gN4gjM-zEH31Z`DdIo;=L4P5NDUci1-;G42kBx;X{7MS&IasjR>b z|CuN|_8>bx)+K)=SA~X^M}VS&_9Wn}w88TQu0C?u%gHNU1Y#f;vD8X-8-eBsOEEsC zg=dSp*l0^!0a+dqlS;Atu9M%v3{=SktgMWIR+j{K6|D)tC7J&^1;|OVSYhVnhU;u| ziT{hcI$E85$+g{t!ZqymW@~xTty3gNIVH2WSAkMnI7ZY6)37LUtc$fT$#Llp5S1QY z)q}X$l#WIxY>8>!JUOdJ=z#p924ayu@?;7UYy6c4DqUhGXZG-P90UW@0L4wi@3Nvfc7S-0S|dV*aMcSih*3H~D+%v5&) zWw~Z^`+S%$iChu?_W(5LG>D(k{{fmnu$msSmoOlfCVM4nQWblu@W(94L<|4%jye+X z6{;x871u!>y<~BTYWYZ$$zlm#dil0cLb*sjX9pmuQxwDcXo}SS#bw{GuiF|?zQBNVOo>AwxeVHSy_tWd{G263oeGrS>)XLg)TXXdg|N;#R%F( zBE3kKHbe$Xh&@~-xt3P8^BB_I+v>b*yZmhjD9tcZ{Hx0Tva($+)7)i9>uq`NnzFmH zY*%pj*h?OV6n zx2`5+W}=U}XG;Ewl07LHJy8mZHJ2p$WXU~Rvd1{eou8oE3CyMBM&Xpv6Q+AecN3_k zd5fRJ)Te5roQ$PACf7sfFzUi-nAA8uEbb_%awpva+~ltw)S$J?O@%_UBakC;wQHwO z(e?VikS0r8^TTX6t28^5Mv@0m1S6<3Ik(7x$lS%=eObJp3BdoNH~Sg69K;#qjT8Y> z(i|>Q6i$#{Pb0k_EhJs<>Nw}uyNfKoRURjlf9V8Z<$00pIycO=U645tOXM@n_xJF! z?7dunKGx?sey(NjALWb#HL>~ICMK&9-n8tvM}>UkQTO$n#-9!w92CJ(EQ+7rL9dhw z;iwn1Sl8|%XKyt9R~rOR+25M>&4&LO4TWP61YuLZ^Zp@kKlAYC7d!0brkyt1&gr*{ z`_(A=!76Ydt=+jp+(#JEkx1(qVLb@$OKoyxp4-j#bNe9BZD%93|GfUr3OPa&GW1_2VaXBL zy^+ebE>uJ*I!`2;B3T5g{*+}%!?vh^x}J10_5$>g%9P3|TjypN6N|yj)#lYymS9u% z=A+s{Fg?Yf@~tLpw8C$}olC{qh%HYB27VwFTL5S{-Lsrd)_Q6wrjfOn`U>|2iI z9ZDUlJihb*c&V%aOSAd-80U8`Ana!sKb*#Gd49&Rz6JUGbU~V&mS!gmGT1iL^mq2N zND3$(=v?)&nbXpAGQ6>*`M$Hwg%xn;%VkX43^W$>&#C7q`@+%#8H)nv%D6ch zk8*!H7o@zyrPv=R#&$%yukBabw-{%QZ?fe2G<#&gem-Ci%bl$Yt1RwQ1Ki{O0lSwH zK5k`yyPEc?!M?s>9L=xwTXd27RhGU%Xe|^6xKq~zYd&B&4d-XTp{x4P*%&=DICkP&Qvvg73)41K`O#pPZl|Kxo_u0X< zJ#5d)9z@_D-0@*|aPNox!QHpZqfmGeN_?C1n!u~ct2+K2XOwsGSfy{XE{+>lu>OHQ z*Wb5iLqyMc;+GM@;fdcee<>Ob1bGl#I>*_td$ncH6AHkg5u0LD-5mS49j%k`G1z{7 zTevK+tX41s2V@jyQ~YST+u`0RuGab})qE;GX|6gU#f4364)UG#cD8Ov>3z zDRcp87o?k}UcgUO?16Z~#>0K8l6El)h5*c#%2-UldqOc7sqdD&mxqst^XmaMZ9NPi ziag_wo01I_1HyU0ZaUeNs8{)QbvlRRP+csYt!8LE+u%F+zzF(Q@EXO%_yqKB0&hq0N z7`v}u=c<3O@S^!Ym=W_9Bj2*|eU6m>U_)GC+LudotQ0p8QJ$5aHv zu;Ms(Z9O1n_P9$iGBL7$DDF4cNunJM=cv_3 zCY_ctyM*JJyD-a&{kSb(j$}dg>uzj51huD?^p9EiQ&ERNArRIzAdFRL61=wD z9KvWjf_zfM8%&nawD}jx$+=efh+o!};{CoIll^3~w`-mM784JqEQ*wMGsrTaXe-{M z1iN5-kU&udYGq#V5XA`istVGS2{)U?v&M24c#izL3z1V&8o6fa)PaE+gtz*OxMnL7W`=?!@++RS*gKb6a!<$S7ROO& zpdPAAj}jj$PSHD%lh1_+B(KP^fe%v}ivW%ZMezmz}sE8VQKgb=zn##I(DeRpcr?OA1= zgfCVIQ!c3>=mg)xa%w7t$u%S%ruEq%z;J0OB^l^fwfbrTC3FTN|w};6DVo}y_a;Llrhx3 zWC`8V`)l%5OG)`+=1;&R#uF0cFZLv}Y>a~?s$;XqjqRtCC4Pw~)YTE@DyQ6b7`qm^ zExI^hOY(ho)<7C_h=ffOI*XqNjNPfR^c2d8K2VSZr`&zsz7w5t_W>p?ZdS}6%@N@K zdu9gKf*_Fcu&TbE6Pp4Qk=9|3(Ixk+mw0~-uEd$k$wij7;>r0_&;yARLA}i|e(KlU z5JZUc99?rUfCbmw&a!;f=RjwmR<_(Nc~jE;!AwUS90O#zOlB12_PD0Sadk_40k(azljKRw=TXkhw*RD#GT8pTEUdw>${9b(!Y$&dg28-D@=&3s zhR?pFl}=V32oVF?a9`1dt$6(X#s%3tS&~B$<7#ZoTjoDv%kq!V83L5sOn{PmSlSw+55@hd8J2Eu4KO*XIJD00zXRUx9f95XA05Z>OWCu&Da$PMG8M5rhRd=hJMX+eW zoO`SO{%ZcMTIJfByCArWa8^K>us5fZc*4;z69U8zfmN6q5lKiF0JOQ1HP+k97O4+K zA0V0e!{f;=Kerq-sS*)}+Z_{bd5RnHsxrXOEnOU8MJf#pPxYF^jV_S6exvf&%OCe2 zOXK%*XfRKa+w*IFRn0D_`HQF|2-86Vx7+e?zs!50?<{EH4vKiN*O9yY`aXN2FGfIA z!o##sqXnja6$^s>8Vc+O!|f4K!JW9O2&V+iz&v+3Oi0+Pcw7~SM zTs}}8EcaE9Vv(rNynlltsde{zS=9aM^>AT5pr>3|M_WN#>vk8YBEw2DH$b4Ds4#;+ zyFrEp(N@*qr=(;AjmtXB5R{<-TBL5KEefMpVBvfy-MMGfQws*A6LpH zyOO9rmhVMP!5k3Y+VsOVWK@47WodeQM*937EZYuuL?KQ)zZ`JV%7_OY1Yf0w$C6jo zCKj?boMO%6;m)Bf`Ex5%+7)XGNuf5x!%j?2qYVb0Hv~)3(GNsIv`_(fOG@(0>(yqr zVTsN1Q#~MVjpp0e4?#7VUEU{)-{$+sk1yNNwB!dJSw$QOyTkPj`(DG=QLZuf59RhC zFt&&C!28%(P$qX(8!ScSezYl8AOx^&d>N$Q; z_-iv@_O%5JX^@VxQePhDxWA=E4F*jc70=p>BSnE>GP~WBVnr}U3@V(W;wm85JZW=R z7@Fmh?!IO}MzjM9iD#faPlEmy8|_a^{z{2UDc2AJAqHfp*}SD`w{_aZl=m+i<%kA9zFaj7XkTl+#r$<~2$OpH+Fu`yeeJDZQ#VzK<^_ZKCAXpH1LkbOyel1o z@M1NR{vw6pmvMk3!Y~h75qUZhI})Gplx+ZO-q#(Ep(}4VM)@~DJq=KI6F0b|DF6uZ zA`nKBYr3!qz`z;euba)^HgTT*KjO|iPO9o|`1g0ty)$!XW@l#$>@LgpLT^j23rGs^>LGk0z|<#&F)*!7gSFL1Ujc@zHtB1$WeqoZyPg9$}zUKlAvj2WqDpKhtm#dQr+ z4ZP+P5z;pf^|ymJV}>;=wdmuSY5a*hguGOMiLktNxSo=27b?!L9vTcIgi>4}rM4xR z4t|^OspxmkOuOr{&G!nuFA7vm5U-SnvSuAN7JN{$md|KCAIj#sRydwxF3J;%DC6%6 zzg;YU&+5^bEXk9FdGbzy*@Vm}9~79)TIwFLQT~}xt>^Xv_B`QG06(rS&Rnj#Iecru zYwxiSd3#sAeV#3p=L^kquD!n?Lyi{85)deSccI)@Xztb4HlP7h2Z3GDbw47*QpDbD zDrCbb3eA;|3eDC+n4jZp58#6x#Q&S}WLchZZNPV+#>zhck1T0NOXRwy&VN%42aQ8T0Dn7lgmW~U`(M3h`9h_f&?W~VnbuY z(nI}WY46>3u}5qS$vNioOcW!*JZ}9}nz1B{*yngGcC#`TEJ-UkYg&;hsa8-H7|(p~ zYn&N^`Dshdf=Am$Ak4>`@(Y&b0|xD!HjDs1P0k8|)d|%u#tH(*tkpuOtRq(Jlr%Ri z^R7X(C3cr_)tUEaA4`(r?SEjQSvhBcVs*%6=gc8B3`DTLKGxn~G+{s5pU76NARaW{M z(2SPQ$kpkNBn?KP1nYnuZd5NLbbswoSkvk zqhcX=yGjL^=zgvpc$=78aUxh&62HB@yxKmvUW?1GZ*Tvu-&6^~K6{R&Nnp}{r@otV zSxRt^7L>QEO61lOxue9~USepC%rAn}Z7o7#hJXjp>22o~*`M0W>qX{Z)z$%@Oii9T zhbZhlTVkH)y5Q{gvYea**V&uht zK}*})&q|oWSZq*^T~4^GFFgjE9RgUxK_>tV7w{K|XLF zK30267GXbw8iy>YgoML-Nxi89uha%*sw>5m+yM{dMtpQhDc`}|)A?JPK~C-{prTcv3VW<{(?yqWJcHJN&POsG1O*UfbGyOj23+x74pINBF36vOtw zA!e{DyEhRc*&@lLyeXmM-oO@d+ab&&fUZNtwC0o~cpT|(B6vaC|N7|U&jM!yXg z81abl$%Wp!Qe06#UmJlUx4H^ea9JzvafC|UVQW2T6qySzw&h$XlS`zow3n_1?R zz#8SSM%U>|pTjr#xCC(cs7P1%zEY@(FP{|2XJl9A1of&QR-s6~F2ZkJRnhO1n)gfP zfk0LS=7GSjbgZNOsRV$0xWwLHA}dN1&bjtZ+-H6bX#P`>ynOp&zPzBb@0;iI{ZRoi zCCxjV>J+SGdw&pK3gi+*b*SkI_!%@|o^%vK@f{0`1`A`S$u!5`=BPDSRbrGT;))Wq z5{NDV41S_os=``RgO6#QL3BxUWx+dH@^1LuTY1o4aF7_X<9)zfLSUZnEi3~rV+6|T zG{E-+1d;1E_?jYWh(XEvITC=7JjUBz2EZx`)a2@%P7mPA*gPs*;^K>3!eOSv*s(4b zbDm%8v?ec=V_MSTsFZ61#FTVMfuS#D)D4to3be3{QfzPIWiq`9oQ&4;{*uU z9@Q&GpcU8OQc8`pFi;4^^NfGCaYr*zo48HnR?zK&3hj1ar6;4jNWFwFB~`Dtf@n}c087G8}W(!+G=YuuoxLnXt!RGaf>^T*3UWLqe?UUu1b>-%UGJ8jv z{8Xj@*i;E`1R8N?qf=g`1z!GMk=<0mOx;>$?<+&+_C}HaZhI73xD#>W*hBlJMZ}_ zq`QyUfacvId8bG=6){Wi6VP(kd{np`awE#IXcvImQAu9WbhV7n?$MmFcWK zU*%J6Qa-I+6lLFBZIe4-jY^22iN&5F=|Uo77-*KGT*i!l|({rOnt z9eM})dBu@__UMfE8?y+4dW%CK;#z~H~ ztms@f^;gO6FF{8&&4xD*0QL z>Lr&GR0DiCv~O_HIv(i z7RFX7wc=`eqj)dqLs)TAoi}+=fdjk^OQI?*k=%}MABNstweapvw~4w-{94 zYS|Aj)!1iiWL*tCU>5=98|$*0>sVb#p!~ghPqfQy>c|#TG3rmMlPX019;K>hv47NQ zz@E85QY=5=Dxc2%e6*2tV1nODOC z&8f8uYN4c>Q-oVm#!B^Oq-jzH2U{`6RMt^}q)CoE3o;{GmZB$#HVdX~c?9alfqJBiCl)3M zm0~f8zV}#Xa&_n&7s!%&mg}uL`&ym6U8g>FKE067J7ss!L;46)QoG0HT2KMS{;;#m zHRg+Yd9B_7_lxzge?MrMcKdT@X5{8Nh3hZCGVrBpj*J|ydM;I@#+ZtL7q&X*sTz7ayP`LX=$FoVN*<`QE9+cOi8-myuCJ#P zKh$QM>X48()Y+%%P~X;2Z(ctI(ha#oQ<;gnxZXH|R*P?`Mwg?uK7!fYSeJUH- z!K%f<_jXvzy#nv+ZuZVjat{kAk90DRb&^rL?>Da=prfQ|)JZH_y2DW9!fLw7idnpW zVZX+}e&sk84CESbMy`JI9>{T!mEfVF`y`;-fLGRgw|lHoE~{Zx&aIJic$bT7*svQq z%e$TBozAkUGrI*@#4nZ)TwR;$Pe>05~oSZlmT>Z z*qSGJN|v#8^43sP+;u|{+DBdF<1Q8yr+eI1;eezaH0bBmL%KcUB75CWN71BZn4eKZ zD4}$5WL=oN0<}9uS^+b;U9%=KjL8-j-$VQ~R zDQ#KQ!0|^BLmMH82wCU?Bf(_&rN3HmliqSI89t}G?&x_WkE4foyHerb_W*$Pf-SVb5F&ABpZj~xRnMWFtGy_N9W^HhIxm7 zbe1qZI*Z<&)5%n%oI|Q3)>rSkUVLQY7t1WCh$?h#lz5qoNJoFsH^u>uUM`5R~;Swwobl@-kI?Sd+5Tg>LtHN zH2{v@&Mz*h@UhYNowLj*L*%m|I)dPmA#%8kmcMkD>$=O@?uxnZIz=uUE+5v*TlL_G zm|Qws)(+>sOWdzt_W~7X#9+ebr5G0&99+z08k(nOAR* zW^caIU0&^OzO1+3*UNX&FJIT&pNHuV(>-Rc9nOtd0DpGS7d>IL1b1*ugB}ye_5`Nb zDY1;Y*?~at4G&}2K{g<~oQu`Kr`1d|@i?{v04W)2EfwX7xILri7ecnxDgscYR7NoX z6}hIVgsz{lhQ_M`WDLdJME=KZemYOX^JfhP*s6Hd@S4D@11~LIRm>}x$>O$$+q7_- zaPK9tQ_U&9zB;69aNO=DSBrf_;o zi1I^B&a~URFj{3-E-03}3lgik$wR&E@?r$*Ce4Op>`TLB?J2RQK4xR@?55sa=Jqi^ z_;PkHU3%wRvxQCH9`?ua@Q?SF+kRs{7%6x6v5)l$Ug>RL)eGP0q42P*5Buwl-u|+T z+?0`9GK6r*Z5e-6wJyDEbLTwVhmTqn;qUJ2)p|*t{ie71zBj5f1rc8!aX&Tnv4iQ$ z?r2Wz6zt6*nEOV<^y3?YnZe~ii22j)-BguPgb9nM$P&5-h`=P{G60^(g74zG;QLWr zreP!!*k{2-`41s8Zc4&g-r2ul&2Jw=C$5m~ekDxiFW?=GezfTQlR; zwSKA7m*f()kSmqQHf2cbP!u)0aCdBl>QiB;ohmBht7yZtHM@0F*@fMp2I^2zZ<_AL zcollL^`)!op!ctyG8eZ-t`S+%OP1+p^P~6nVxvhNEko}?oJp>8B`Z$Ew*WTLK+(D(1W>ERGmjd4M zzC68zT7(*8UI{tKgV$F2sZtUYGaJCtIs>#xK;Pcgb(pim6!Y2=laO{ zKFDm2zmvcAX6=5hM1H+1Q$H4Tm(Ps&ehvAxBHTyBtmit%quf+G0VznfvdK9xJn_Zx z_XFykEROrG9pc)Ku06!HN!Lc_On09fTzjxGA zM@|oEjw+w5PbSH8x8N7JRFB54)?&u42e<)7m{K|Ycr%9`k=01|;5h#_xHQvzPA1JZo{mzN@y?i6*0aMY^Iy9Z?SXawt)#?sZ|RxSUaNk44|mbKJ9{oO=+iS>QaCFZ8_jZ$tHswm$5%;mC{{J#7G-;z9)#ZJ zer%gUz~=0}?5BGg?Av9fO%@Tc_=Qc@OR*b$i~6npy~p&vl%b#Z|)KJ#HPV=#VPjP z277)({$(OJ_QjWngu{iVX|TC}i2b3rCC&FX-){FU?WPz(4CY6*!;%NgowR5O(Fe=&FsjP2XpKi&<^Ydg$w4X;+m=M=Wp#NCq#Ex+(!!ibIO(UuIMB84~R(b z&a&iIV?Mx6$#)?&xN-+KyCV+|;!c+g%3eN*WaQfh=o2pd zt+{qEE2zoa9&$zcng%zkxIRa0+kM-m1Js8{x+e1FSQ6meKY;nXaG?CP7rtP8FfR;B zzc`31w+*s827!T;A>gU!l*GB+k~3^wxy1B^Ofn&2~md)H5cZPO50G}ta3EK3I4 zWrIQ6R}Yr62LpVs1+rdU9+nJpKsSW0yf8pVb@>o(y>*a$G)RpGazod)oqTU6p0 zbe$&qh;qrFcB8>o^cO|*FZQ)-`^q!WB-Ivi?QeNz^>)!V|{+XaK=d^%1a zH~iw>mkx-*hg>?i&2X+5tRsQ-Y8}pwf%emZ^4Y-F2Y*C{xjhW$+uqay!Wb4^oBIUd zG*Bj)6$4q2F9+MN2itoG7Cy;(`)~D?%aw0P$Y03f7bC$x-QDE?`k8@r_l_ZQ`w->? z6_$Uo$_BG}b@8YA@94b_G5Zn(OB$2xQy2`T*bX7=luQHiWM88Hn5nz^*_->BTj17o zef5vqFX_9-PT$ufMqN>rIw0MgF7gq6KB|aHoBd2D0)n$dEBCS26AK#ejfsg>O_ip@ z)X^E6(=QvxYFvRtn~yH41|aVRFA$op#2xjl8&jAl#JtdLh@X=mFYeKcr%;#`%CG2^ z5G+kEtNduHqk7C^#iN7m@ByP2X?#HVUh1oWLXlo#N~_YS-EC*CM_CCAZ^->q7w1@5 z9^~h$aMLHL)q%*}a-Z$-MaW@^oQNi(iI>DT5PKupsPw`JDGlE|I zJA_YT&rJOf?f(XU&i=_XF&HNHYzfqj+s>Ed0`|N+`69`^RF6RkuGIId#9Slkzes|# zj@L?Jp_uE1_%Cy8`!>!tq`Ef4xn$-KM!?Dr&Rv-api2|fm%#NXO-)#no59zAgzHA-8a_?=j4kbWnb zA9vq_x+im)x!kjjoX2C#ImTaL?D@uC3<(b|FqunrX)iOul}4^GosRHViJ{mJnJ*ub zyu*{%MeO1Ahz*81gPFycDVj%qQ)F~iF;;acD#}{*P%dl35-HnL=#1<+-qNA5g#*pC z13@3_8svor|0S@Q{?Y!uLH;=qynojq`JlJreLh@2#4a3yw>vK5y8C2fGcMUNfGQAb zq-rpzQB^WS=77&ojMOhw_-m2gB`XucaFpA3dsx^ghqz^0+H3kHPUlSicXc`D^9SvbEp zzG6L55FcWC5q^P3h5XnT)b^GellvxbE2-da-vjXyYh3 z+HjH_PE6Ib_?x}#rAi+i>B-LT7srb(v9*`IySM#*2&rSm{4@mRsCI%HDfHJPd;16i zQX$ML>0FGJPmL&XGH|kK3Di@>(+))rIub3on$is9Ir+)FV&eF7buo%^IGT`4&q?-}Ob(#wCaSFlNFr|?kfbI9L{Mm|Y7R&C#AM_*;uO{47pj(W z@ABbl!(jo=)sD~aCFg3#&(SY)hW)$l;w>1`I7V^*+n)aUy$FTV`47klhFL(<$!Kt# zKTPdfQO6((x;{Ec1$N?TednLmBty=ERSmWATbp|Ql&hYzNwS24WZo3>xWE!RO;RLD zr5%G9$s^H`+*aN{IvQCpa2ch88}UxwT3hI7qL!|g4@?R!HUt6^^(4s6A2 z6;JMLT-1cB(AD5)$rghTzuvMG$OzTIq87G1?{!T*!>(g+pAXM&*E`TjeCRc`Mn|+g zylIkfv^sbC%g8yE{3qhUY9|2kk`ijEv+4P+eMY{`R)_K+OYOmSHz`NK_&lh zzo-B0d+5z;jIZk_Yx|jh41?FXZkWAdm|UsC4qXrN0v z&!^%qytYB!8!DUWnmp&8_+q0x^Pir$wwrwAp17(J261JBJg853!(I1Qqdfedu6w8( zn^}9hrI8`rsT9aLKR|cYTOx~})Ce=#)JiASQxRBeGrT^86-0)?ftLmY0CB}&_B{B& zW@-xTVnuPVi;$>GPPk1H6GQAM(gb<%Io6tO z?c?gt4h{hcvTzyOD5G0{8-*}x>;$#+G?7+Pkwwl~DCBxT^ddEKr2L3rE7!plb_QUJ zn+=PQMFe3L-oqmq69~&032+wh=V~5PEc|#rpm_ApX;dx22zK{7BNPlajg*bLS2)i@nn9g)(L4Lez9S!cVj`S-jw3Ye^S;po_9jdEq9d8d(` zdrhO|+kK7rsG~AevpJ7y5A-C=5T-YQpPX)+dq*&$U&)Su=FWlUk>N6LgnTueiyj*; zSB$_Jphh<71q3I{4I_EV`bPWrMtQk065e1!a`ltE!by9;1Dgf`psMOI_BckbD1~BR ze8U0;P>jcqAcm_Lm_3)DRgrr)8$|bp-cUr!{?rV^BEU%SUQpQTC7MUE z`sPhk78L{jUuQdObXK!iEw!m@O--OKJ-p(4H@xC)X0+{$M{pnCBgCh;UN!5TyzfWH zerl8n%uCZqyQ`6b?rby{^_Hc*Wl3)h1Nyd6zG;;28!-=PWZO?e{ib2S&_%=iD~Gw| zxU6xH6ZfrKj4dPNA0vLT7;75ktC6~Uz8x)JbdqP_z5e5lSlvr*Xml8AH1nuy@OVEt zx1U@Q^{h>rmwEjHybEA43ILUkglxOe70qhSlHi0B#2$>6g|*a00kT>M0QN2HWK>%L zLa0d5x&*pZMVi*Gb*W0Dy&~1l9roXMQVqDv*dB@AuNfZvPzXZM%w z{p6=#E#w#d+E|_MW4CEkKskG<8mFtcXf~U&pio^9bgyZsvQx!@(jY_xN+Kv9+cnB< zpSh#$52NJAQMy1(!$%`!>qxrt-EjNka5pb!kJ{tBMEhj@NLf4b7t?#+DEba&hKbGr z74`*J^HB%AKX3dL0W!jf^68jqgJfb^%vcjKyPP z+eWjXD@NP9N6USq*(IuYyLHcuV6z}j@4)_tC3i{!FyOw z@Aj%n>=;P#}QSzAf`R0MliE6p#hZ*XZq~xbWW|@-d565J;j!~9dSIKooTOBJ> z2uCzKFG-%G-}tO~Rj+DPgmuj*!-uOO9CG`Z%w1#PRz9@4H(nkkt4IA}@m7vjVr{aq z43aSFFC|#P^j6XIN#}~5dPQYn+>_qB;~1${GSIQ%plGc;GTdJ_oM~@wpi^q%#M22a!ewX? z@W-;XF^G%QjAxFkm|LIseD8_z_OD~C5{GBT*wtg?-7%DD*PMK+vV@j7ZiCHk(+Lwx zlGV361>z~Mh2(PoIC!O($0`*h)is!b>S*foAJCyCV`SMFu6|a}+0lFsmJbgvvdbJK z<&jNs9A6>o7juC1qE> zh&o_~L!AeBL$r0PcMte!3c_fqN7}Z6RYd$Lk)!=m&^~7@njr1o&x*E}jk7n5lf~mY zXpEhLklG3E9J|LEdpwly_cq_{O-nDCFnBK`kB(*I|B4AS&o|0yH`a3}*uhM2gdZ;8 zLRIy4HkD|Kx+uGf->(}q%j$x5t9QGzqD?~go0nJEDpEux9!pi}vRHa9V#@BBNWu)( zhsn#u(IMt7Z9Smp^jM_sz5To^C#FnQw2T=}v)=O)W7qD@1iU)lzA#>18sCiO*0Nvr zFq+p<7n5`}!foXBBvgFmJ}H(6rkem?exR&{;t21yecT!dSnq%9nYrD35W|t*E zz3RDN-bMs2-@TTg;rk|`;XivKJ$!lsZW#|ukS8XHDbZZmDlvFNuT?(*GhlN)-QCZQWL z;3Yjh#+w0om!9Q&KTlGMML;M?ITDmw;RG$(M8M{$qZoFmOmp0{)|F#P321>UbGG1$BJ0d1_G$do)ekqx$NA6D+B3A(|y zPGaQ1r>{BxwE`i<15e4+5Vstv~nLFvSc47Xx=1Lc{&qC za%0(^7;b-ViwOEbEmo6@ChA;1KUwFJz+%9i3D(cEVL+k{y^>kh*o3$lC&hj}3Fu-` zn0NukhX|kLDHJ(p46Wgm{lDR?O{^+j&l=U3&OEP69Dcg3#0qGs#M%S6ASg~Vy)Kp< zx4ViKY0d+s-ry%G@|Nz$wDXw*8%COMM_MEfiM=@zpHNLPu9e+GGPSuvYP+wxV?PLW zLV53(_Jd#diN7z2d#~>YxWf+k@a5=h@)&m#%a8)@8hOO5)+mh7MZ;<`6BkPd{mg++ zQ6a6XdpFLPN2bVR7w=!nO8qR^4@?3ev{Kly6Bd_A5}Mb4r+!rfD3)f9PhIN8`uM`tQfa&gTRp38&Gb9?=o z&6;C@^m+T*pQgxaKFU_blx-tt#S5WK`wd#f*7JSc5eHj}dzKP^RQO3(+JKbo$1`1dohTux9v^Es!_ z0<>UO=?o5YJf864uIicucv8?Klhy2axus+(QO+6Wjo>Z(EYVOqBUqU&#~CpI8s!o_H@GpusZ$B~leL0h@{3tLdHL z@i4zIb`)Sbp~`vc8U|T{;#s3oU!gS;S#{F>s2i^a`$b1nNm!Xl@vCb2{|k6*GM#n_ z@nh4Y_%ZNOJ3z6_vC8OCd5^dG9JvYAIBjamyZpe|%_G%;?&AI6NqxWrgA@BFD>qik z4VBumP^Zb)r{QSlfXH|Ln#(KY-b$g>Za+|InkwX{a{0Mj-aAz`pDG`mDqBwFHXofT zpPgzis*rgV@~?8)`5%AJ%98yRr!70szgRWg{EJ;y>0j9L`I1Wc+rEmQu0Bx4s{qlA zk>=3>ykpH6(^C(|$cmZpf5QhrUbW~>-NpQop&r&zC|BX!(qO6`B(TaTGc}G`bJMpy zmZw3V;Q5X@*q(Fnh~!(9>d0q}a&|(YG%M62!uUxdDNTQvwPBrkb@8?w2#lA@zg&-( z9%$dMFz;1J)DoX?Ac2tPt^H*ysbbs&eqJGW? z(E@x@Vb85Jb1G$?o0Z_4N@=PzKUL7`j0JNl4P{wjTsxWJ8Z@Q6mW5!0KvA}`2{l_M zS?v|xF{CqMR!A^ywKwGL2&3}y#bJ@N5v3XfZ{oG65G?@=BS!`X7JK z%5w)O1ig5WzeRPM3PGQg`|+?JWRAj?jHI!0$#b9f0RZ6}mN3 z4Y*EepCXG0L^RJc;PZ=Pq&ea_d46FINh@-gKE9POc`~x3(ReT7NuYm7fa3+1Ky{gy zF>Wf!lc6CKs*CcycMs78()g3g0IC1FL$fWg4dQTsjPLwHj^4;?F|Vb(mhm$2P08d& z%?h=zYmabk*NsVawa36x10tBg`~JM=d&>_^oO7r>?@;WWm;&t-oSz854$nE*TzN2f zNkj{EwY&;7TN0*M6gK7}tvg8`|FotlRUE~8LRKGU*Br)nVtk~FcCJgRyjAO&P=g0{ zugngl29qG4F}0>2gxG`sHf^(2eD$G9%x=VP+mB=@Z*E!s;PG8VN%U-|8{`9 ze1Kdw)n9DQw+G9TL*$l2WXYipgH46tzHqQY+Lcqy+Jj`>LGn*`zn2cewR|r&W`RFe z_owSFdz5jxJz9uC1eQvtF$1m8*y{aP}5)pd~@ei>}$p>oeG|VdaW86cIP?i*nGUL0x^m#j(ni|He>%Y zy!F%L&HpGjK_g zV`bxXvuU~^r+N>#-ZSKPs>4!@-TVoFr=bKr!j=D zr`pe_%Cc!F-X@r%xkq0vPRf@D`(GanWNkZak3)I+K_yY$(rHYG5}NrSjbAgsX5oQc^jDFm=_+Sg*itgBQLIrXa?W&}jCqG^ejaXp?^GT1 zk29oNstkx6UbqVi0^`?X3iD-I7KPxQS;Z}OOR>CCEL9w>2cs<0S~;>bhe4a*<{bIU zRJm@dJUUgL&=MwZq9Wq>h7R&}2N^;@7&yVz1gDr;vApH(^lEXif!rJ{l~nU_B8aiO&RiwD_(0X~*w2m{tZ zZ`4;5Tm;RKs8BYv>Zao0*XC^Loz(7M%$T})JC9%<2uI-x7+1I3jNLU&zMfV_uwokv(@<4R zmMRNG^>C(7ZL!^ys1`TE$0i(JjC_ZZ-olx15LP~&q1){Xp1@x8<@)Km-QGXKYL3Db zic8*<5>SLk4VD_Wj-ud9rzeQC1#R0>cRc0V-m7);)Fme5Rpp*tjV?fOaTMAaiEPp5 zp6>UAw_;{28+&|)eQAc|Th)qhoMAW3K<1{56@01$pCtUP3ICIXdN}$FHB^ zx;+!6nDK`NWXtA)hrtX{5khwQy-9eEPiJPon5hdaYiGzhs=V0WQMV@7Ug!=m@C#@8 zx$=;^+0Qe5jnYAfBHP@7m9zNzLnvFx;a!dAkejI$GlTKWxk8c!B^wyIL7MK^EjHzN zQ2CQyRuei>q>u>=3)S%n_hN&DuI_ocZaW8#6C(5j5n0o<)+>8op&DXUMxv24+LWnH z$>qR64^!`EEXSKSOE(FRzjiW3Lgd`T<($Liyu+d2SPy|nLy759TS#Wk%iJ*DoEe~c zM)D~$C0Gf7N#;-G0$cA^ILh6!)&LbPDoiSdWneD*M+;WmCT*ZWW2m7%gfODAcWfx8 z1U-^ZvapCPjXa!4G}J+E6LYIXvSoBHhE-B9%o zYQl`XT#CFqW;5`A9iia+<1A&5Y1`;Ci$w$<=L4E93LNPK3CC1 ze>A;VE7k<14H;sp<=)w{e73n?Tf~J|W}*@zivE|D^}xtr{m zEst`By>XWOFxxa8sZcmaH18&_9Ik zi9Og(n8E#qtrkCEY~;yRX!YLt0oB3{<;j7CZ^d%>6Wcyi_3WSVvf3i11lVLry02~ zlrIzV)hwO&RY&_fB7FtFQW{Sd9UWVIG;V9px}UE;+T494glWrcyK%O>Kbwt@^vL}; z%-SP6_Zd7nH&U{U{4opq_-pQ!#hwlygVp9}`|?pN%MAJZk+NnsBqmz*?Q~V?MJGsR z7gTwj;fa)d18845*_P?H!vF!e2{o9+QWRVSx8~$JT?4gM$VUcST2S034^gVTg)pY8 zU^MG2?1m~7nxq^f;^oI+lL3Jue5!}4vWtWUv%d=T9Ov?hYaNytM9JRXnqxo~D8YGA z*g>_&3_9jlp$bq_DaG*Kjglf>LmZeYz+8l&Lp7<0f~hy^gp!cB#h?SxkR2Y4uv-oo zX@2xE>FqowuEgb`W9+J9cmhF9N9kq??AynfvvY%axn{#L`gzV#cJ5K*jk)A#dzd-Y zzx?Q&M~(_s9hLXUQFhf)_;&R6llzWdSL6Wx~r5Aj0tbJ5T zzVcgE{sma5zHOC|xM~n8p&at2t7B{*zra$5Dq>zizwC634I22%4J}T5xYko+3h^;# z0=t~fw#&f*$mZs;+aHZIN;!!A^CK4|ro*9Fc_&S6BFdXa^%N;pl_vl_j~*irA7g(w-p)M%4e{+Kn7dAp7u?`4 zKf&L497z9~#pV-`AJ29lpFaVYZsJ@(WM7?Nzdj+>4wfmxc~do9fgrLd7(*;s zYa-Qj2FRrcXt{zw<1k?OA}r^8-!sM56;Z3q!rx6vBDhdU=|o(e32i*qEIw8Vh2y^S zP@b?Ap%qcR=}yc-y_*fdr3Z6R;)EVMEZ6(^B=S5bhzmE@6DeVrQ4NF@@q?S=kow&C z_pxTT?N4I%>bSWgE?1)sZa(LRxV*_S{laB?LoCQMDghkG!+BGUx|V&VoSd!_uJtMf zrn!5w8a`mot@GahFSc=BBb2l~dYLcZbnsq3IYv@nT^jmf zmcWR~7hczNx3v;KJ5by9YxHRl~K z^N+_%LF&yu<^T<*XgVIP(>_WSc-1@csJ%H3WaKDPE^B$FN|wkDdRM3)NemJtfN5cr zR>Y-SLp2=PPMj7KE~_X(b~fJ$Kut1JH*fqbhN;>>99H082O->a@Gd?D3{0@&@iLDw z$Qvh{w@(iK(5jUDZ~vrdESZy;{|8Rat~{AiJ-?$Pnws`ldKdv0NJcfOs;Y3kKG6Xe zlY)9I){f)`?VTG{Mzt0Q$`HI*i{4Z@=Ct<={owgoXu+)~`gfe@=K;7e_%6rtM`@pD z6#`Bg?o+JcK5AJ@49x(Jx11WQwAJirrPRzV}A{}fG z_ZHY5s8kF6PLXES;@MUm)rU%;QB|#eQ(m84S!rp5U0I;NQ6K3Lwn~MOQ#%<@P6NEO z^GZP>e+lIC{1|p$b#?svN%GQ3)S8aTC8sF5yZkiSW&cC)LKBHaPSOqCbecb~xkx^e#2o-FG@I;@W@ciL8W3*Wy%IV(>pJ)itsdQ-NLD)WK3q?Sn%hu}1gDuHep zl5RwLjL6qjhN<&frg@u(-n!Er7b&vgT(7Yj8x%aO%vL8Fngs9yEz>E}ZtL#XFcTcf%Gf<@`4q{{ z0ZAUgR+E$ptRwevT$hlUoKUQ41|SSjYPI0CfJM0ujzmR8it*g=eBC_}&K zOu76_d)b+??o8=rdovHOohi%DWHEZ!p0vR2nX>9kCc4%^OC98s1YKv!$}@?ghpL}x z9y=5AfZnJG-r0Wndk*gWJywt(e$RHtFWM0{Kk$}1bb$EG6W_gPtCs^unKcMtD z8aEnpwcivK=^o*}G;A~(o?dvZ#!t(&A}*quHgunjYop_B+Z=cN`RI^;tz@o~ zSj(y0C}{c2jiO(>dYgzN0MP~UqfE`Vn`>84ZdeKOPLO43s&2Y zO_p(32@67eE5U$@ihi*2vw|A-ezNQCa^DD_)hiSRK`hjfJSv4;^W__L@w0GQ|}`AQ8GWE&G$L73wDA$&)n?+qsppFj1ZW;1UF>+ zu*p1R%rb=$Ivo}>)|Oe>U)lvgxD%rSc@w;Y-O>L&iF%I<(%5DADI{3BCs^%L?4U|G zb+Bwv#zp}iBq*ouR7w(|-oS-WVg%3-D6J?V1(U$(<-7`bS<-uDN@^X5`8ZVLD;;q! z6^Oi1YyiocGZiN2tSCC|WUUx56n8KL!~g)f-qkFCT!uYbNz^vV&@nh98g-5YRq7k& zJ;#LPa&0ZO@=#;{)t6^{dC<>1%)WLLtUj5gpeIETZU7moAQ=4H%G`FJ~LB;meo4d`-S>-0vOC1Jr=_zd`p%bDzRf zQeFsh-(;K1#vro^U`>`K2?^m(SHOoX#RJ$0TQ4M0CXfET@G+wb{-Tp1voSyKkW(?eFi8Pcq_gf;tQbD4KFO?n`Z;ZU}9K|c4!HIy}LQ45=k=V`dlWsePa+c~;0?MqA zKCBj?*ld(*Jdywfir>)Hd1&$Ew{lzxeRoc1J29>0rieSX2eVJ)1ii`mVmMFdrR6*G z329N}h6+SY=sLrJJVUE;-BZj>i;6T2OM;>ztYZt?oTR!)@al)lf}!3Mh%qpQVS##y zj_kzd4e>8tZjwDskKW$H62k{dG#7_YJ`xx`K!CCinr?x5#VBGzyt?uI2UiY$>NZS&;DJqq<2I5`+@NT>-i_F7nP71$gv#k4}~n6k%& zG^Q=%>=bE&)lt1!5uAdQNNaI0HFjZ{`o+VW9~kqlWIDiHJa7vSR9;6u6Me*6_&c^f z0>z6C1PZkK5sI>K;|ASyR)n(LO^OA8KAED-4i^HB?sfl0W z-qn)G185f;^PHITL`L(D5@j!YNYWcgjC@>+d^6U3pHvh2WO>@^VBrh62Z}UUJ3fF- z_1?Pkpg6EH3M&k?Nd_s$Yt9OJQhc^O(x2@gX=a-v+w<=8J8 zDncrjZQRkuxQCTGoyig<$|}6nxZp&Ub6RR}C%lDt`kx2LGt2I2kzIDUPO^{gd7*SA zCC%+pf&l&VO`4X3N%ddLhj^8HJ&Rp&5w4xlXlxyxwYCmx{c*F2YI)#AKc}= zOmCAYaJOQ8k@@oVHtm{0-O6MI^;?7Bdezj+DKhGzBCH;$Dq?2j=jEi@0nT{P`gGyb-m7cd+%prO#56>;;S*SA~ z+I<0Rc^o5x*xp1O^+_ z5~~bcHYK)!;tIX^Dv;(W@~Di5W|hDY;%w3Ej0 zo}+fNMvEd7+0l{C0?sN}WB!c2ZH+lY4+r?~?`Zh=W?GoE2ig30` zn(jpBMeP9Z{m93O)qo&V9tJkafGxTig5fB=o-5rUBHf{zYLUYsLl-lKlb-1V?}U#% zFp`#g<8oizxVGTlxN2t%BEFS_;vEqft&jU7tgQ+5mp6c&xVb$px2ewZ_IT_r((1&8 zR;6IJCx7!3vLFFno@=D3_4cyeCMCYSXIdv_R>Q2Qy7qmx%_2Lfc35H|;F zDzq4rL+P|zOc>Fm7Rn`iL7@^?7$F-J$Ml;8VT9gNwx#?=&M+8{=j&iLDIJ#o!TO+b zr6*5=OM&aO`(|bsn1b^qz5qh`qB0NDb7lZ3ho_E}W8_3R1ZpRD zX@`x9t2c_=;<`u@;m}+{opZnn)N%#kEiS=qR}gVwq`oWe{utXWF!_^E7*7iJncz{Y2Xayfzod64rG6>69Dy@U zu8?wNs`#YdC(z;Ac33gGxV@#ji2wfRHvJ3#|idAP-qh+;d zSx@iSOL`+07i7J0>KB4>5PYG#fjO$6ej_k1n_b#5+#}JcbkxXH{h(2&UG+O_#E`Sz z=~djy=T>>%j2NX{daM4 zgm=1T+EOPf6e`1#K$mjl2%3AD-YJiqn`!e$`JJ4>Ml4pGhr@&Zu8+;)czCoz-m|(J zp3#LgbH&&Cu*GVo)KG8soZD9lWSSe#G0LzBCPnl?yearjcKOm2JQCZ5Bi!i~_Xs#| zo9y+J6h0}q6LOhvP8YQk>+DAF1upN29hL{RM6J+qa2}Z)=|Y3_>g~P-T<4BgWUILL*JtF(iz0JKet$mvEW_Bq`q z5cYT_DMKhc9j6KlS#bC=e7Y>vtm$xE(<&SlQfMq^AGpbcK0!5E0QMuW z=|EcFxk`Q5R+4Uv(?KM(Fs!a?t32w6TEKZlYcA}guOX|T^e44RZ{aI}X^*zIDXkPR zF7oB||9r>ytbF$Gcid*>+h5=DCo2nJ3XHBZbO zk%of(Fvq`OEn%YssRwj6)-D#J%K3^t;VjVPx=ZI0%W+L0*9W-^wFN06m8wF+mSJ}K zoh@=!1~*a$yAn4;rO_`6+{OREM+`AF=6(tHOXsJiWnwt6_%=Uvm1xaPe7nre3G`^h zlIk+=1zEy~q*E45gQRLomeVusHIyXBWZOfclDP%>z?n;ZVA|zTbm^4h!XiNhBE`A9 zQpAcE;_RnRf4RJpB@OA0*}PnQ_o+uF6}^)ki}Q+tkTL}z4ug~LAdo~2uPS_{b9t%z zC&f|E^1aiEvq@yV&GD@Fgh^J&Xj6qy6!C%a?UW8|V%Ggn1w^=pWt3HcJQC2xA0mbT z1|1`5@@^3KR=kKXiYLro(ZhZcbgXIjSu-gA zEWT^`O#CPc^UMN6M(EgfsXX7L(I)_mdvR7jcn(F3xPxB9o5Zp=AY4)b^EJs?4-3e@ zcLXJox-j!IjBrnLB`Gr~z~aN=5}DHlbUXm36}|d7{dqCQ6!-H-1PGZ8PRoZb7azK} zFz1;!z{^0)GC#J&x9h|_E2^_uEB-o#{a7CS#OsoNMbq{vv-LE9h`zo)UQ8W_dKoZ%LShS9+`o)dM-X%JL>R_A1t40AGmmhW{gCu-2g}x5Rai7%-79tZ$ zekLG3vM^R))j*B^x1TOZNpaex6OhtO`+{~+j{BqC+?zHn2?WxtL$xzX1m_#o)-d-e zOcbG;cU^-q`1zFRoUwY?nqF(YNvievJs%_we821ZxH(uq6d_bXdpHgOI!H)?{!yW@)C)nqybl-4Rz`!frUL?cUE$XvCUs<*~Zis--w;Yh&AQ=c0q94bD%3KVJ zWH;plAq}Kwc0+F&cFTZ?o#Z}Tk5d|RrBh;LeC&*7>Y;oC$N0?zDzfz=9t?pHh~^s5 zCz3jV(#&34Vec8`RFQ0=Z~&}*$Fm+2wB~~joxa1pj&`z1f)O3$twS>e@^U2Akt^2G zJyN^E$~e*lL?&_)`It63u{kFKKZGo3I`{vl3k^o%UFg}7>ruv`w7}r_|M%sikgHCN zld-@YSOZlH+cikgs_(6YDk4c3k~dXCwIoT1v`L#A6w>D5g)U)10FNBD3p&si1s!Qi z5P~Eu4Jv8Nf@<1|pq92OsHd$7I@8vXZB)WeL3i3NK~LIlL2ud~K?7~C0DE89Cm2B6 zHyA|QA8ak*z+f2d;9vwT*{o@Y2cu~lgNYIk(|(9o;aCR^K$L^zxj>gjW_*r~!`YXB zsI$?chdN>j69J?)Ow)#8mNq9uc$2)an6_Qmk+vkPq%8|;X{*A{v~^*3+Ad*l+8$v) z+CJeR+Wz4%+QH#S+Tr0C+EL-&v}40bv=hSpXeWmU(e57}Mtg8LgLY~-i}vvFXxiD~ z@wCT;C)1t~o=$s8cn0ln!vCiIukeqwe+Zi(pYo@0p1#eI@LciFaYEUw2C&mY?3JpS zRCOnalow_--9@}Wdc4x!pJVl~KlViAupDSzu}rliNmzV}9f3UOn?Lbww9g4MOjq!U zTr6^tm?OwYiT3_58Dje*9ah6{@x~S~gOrhBPwFmJKSq>%v?+@tr{t>V9_n@%b;^nq zftrQv3iMO^)6!2x{`%eZ69a|TJ6Nn4F+(tK)W4(UCZU6;YWBh9OrA_PD+Jl{2=p>M z_E(Qb=E`G$$`>MbvhC4L=B^gn<6Il}4yZ$_?Bvv1Fg2-dQbIv>Ppt>sk8EP_DH^&2 z##M$KacB*L1uy;8_Z!&xz05>A!5or0m@y~)og!bU+L#}3q0mVvg$|XNY885HH;ekl zZsztl3k(!jf$vXB5)`=B<0iWlsD zHRvgDL>WsD4wGDO?=*4`v;|LJYOiBDxWdG*q&w{ty(a8b*wPxauPT>gei6a6duwbf zw`SIJ;b;vkStrGgDX^oDmE{09D;PdBmqF}I`#%grF?EOnL-jx-yt|013hCOGT+OF=7q!L$0F2bXVA+(cW5Qxd`-hxAnyZWf zD&Fw3Z~L~2O|1DvK^%>9%HxSP`-iG0%*he_@L7b6i^pKhNTm!7v6i z#^_?1lm}&bbSDcoQZ6;+y&uHpt5qJ#c$LXxB7J!O>{BthSAIZtz!p zVA7$-1PbGRp{%PW2|hsWS_-dldEPQ8a?DQQ+nWKnMRn8KNgtqVG6(Jw+EUk+xi;Zi z{_X0vixTxcdcYv@7&Sb}(d<1Z^ zBW))LB>D&iIAb=$m&ykj*{rOg{(YFSr`as%dr>S)hslW*Gkdsvv9d&94X*I*WpOvE z3klG-MfT&Q`6-m2L)_sRB(^@C8eqXR@M`3A-_-E~KyU{?^#oqrwp1M$NG#57X}x_h@N zz1PLmZOY^9*0}j9E?>tf8w(nR4RLVoQ^TG3c*6%5vw6<9w;;zk` zCa#|xw#ah-TwXDEop2wXvt9gc3}7x{t$=rNzJfI3th7(5Cs&bFF?F%91Bu&;=okL~ z%ql2_#WRT?LUXXJPbOx_-6;pY*Cpk$B*&Jg{0X3okx~i(bdU{tY-viar^valng}!p zbv&&W_n3s8lQ8oVa(05`RrV=lDkr}A=L({U70ek zrR@4t;)g^t+WRq)_#!T!sMY2lDS21#w>fU#Eo(#bjH;J!Ps{cc{-4G2*EB`_AkVgoZD;RJn){OS zK+>#C%GuEjJO+17x6hIbk}Px!?tMCBTd!wkZHeQ5Ur5_$(oEx1);wy_U!nivw|moe z1(sHukbj2e)llwCNBxpl!^8s#|6LUzfKw&~-&Hn27ynNLHg|>MC})3%r1+hhujXN` zJ~__wG^8JPE9rJSyaL}+Ir+4?QkW{pxFjsBMNynkKA6f9!OGT(<`F1urvywR6WA?* zzlTLrOU|1f7Dxyhfi3hrp~8p;{1TpBB z*UIyPaux~!;E(Vw%~33gof7N~2ERY;@9)5JRl3jw52gK8Y1k)(G+g=zm_EU^IsS?q z`7kXXr|qX{^BLvnRfEq2lP-YBJ4m)720rTsO_}k`FBW9k4?(vb@*6uLnsVQ+1Q+!H z-?@PXB_#Q+&HA}&w9wEB{9m;kF=iU?fGo?$q`McKPwVHDcOGSC!DMKvkf_&&c3mjX zhE)8N=R*5($cTLTM`+&+<&Dt36#^r6lOFA+=n%x~`KF&@G(7keWpiiU^{^Wn+oB8jK5c*_ii52WBW-*k4D!Av;F)m00M4)O}{C^lb4?w%BGT-lS zt+n?)z1^0Z-1LNW2qb`@Ku7{c1&Lxo!2!{kv4P0g<~cKjPy_^wfOJTR0Rn?ajYE-y zUPJ^$L`4#cG#NkyREoUcf9-RxfX;i9o3qb8yRP!BuNRxNQZB0PxGnOt`M6(f^SED% z+hU*N@LEH+Fy?gj{mIGL4GA*Uv_Un~=}5*U`&}E3_fE_Rfm8^X2>}=JjmWO^uzh3N z$2JFua9%>`G#cdXv+~LsaM+{4v~EH=4kb4yFbMJQ{US?MhPt$`Pd+#*IVsvErRN8U zs{dG_6-48pzjRHoQBE%F^*7hU9d*0C?(eMAM0H;iJ#vK$%j})#3O=|v*+c?M{R1gn zX8r=R3u)mnnH3+yJY5Ae^Hrg=uc8;`kgA%UP6WVln5;fH2|ZRlIi^osM*3bDu?%i9 zgY7?~Q9c_y25;Wvj=3~|FL}+%qF+xwI3YQ&k8wod=1|2*5fdBZkZ1I;UO1TO&_NqH z1s6osX~v%1j=+r^wslJA(C zpo!1IW#EGv;do^dUQVKXJs`vyZ1J-JLzWU>-fDJ|<*t=%56WUh7ZzV~$k}-qWOFVU zK}#s7GadzH(ieO+XW?HzdtAG5Jo zA?1}{mof}IilI*4OBrl-aJ}>m-6sxPHWBPm$Eqcvh=CSZYVfNxWOi~JF9xpUSxFsN zyt!35c5}Q|whVo&^--Y`v-K~tInrZI1vZyXf*)hOGr z<`%3UPX}=jkp)-Q40Xd9^mhSkh^>akz~v3tT;fnEmSf{F&!)<|0-W@@h5E{PdmDjm zEPepVB)ZZYxk9~`t}Lb-b!7IX*~Bo(CYB}2bL zpeHErQVYM4s9{L`Y^6|@oT|kdA1`cI#+{2M%o}b(DOozuZ31o{-6r%V50b(fZI77l z%ZXH0LvD7q!G&Mo=Afe}_f#T$4O$Hl62J>{!W#x$f!#VDPc0UW zvH`p#!yMin8j106Q|w4b4Z_PbCmrU21(B|DGa1)a?sIXwbS3zB>A0m~k3rt*ctQhAI<3ifvGdj5pN*yU{!}p-mons%w*t~#= z_>s4VFp`BbNGrnu?_oh1}O#%jlE0z=~`}AqD1i&VRVZb zAqJMT+0#+X$VK3c;8vqSw;u-lWS{o_QI9{qo5tiYE%qA*5UlrKu6~(!zhN23gCe*; z;Qtl|i0)AXDq8WNxO=>Y^*&fwTc5gHGW(QN<;#H}1n55mds$SChe`|+J0*XDzp(KA zmyrT?Kt?FLo$z&2fij);_5_0ud+Qc~E>P$YRaes*mrqF<;pgI5UK)oCrWF&Prk9CQ zV)|myVEV`5tFDniH3e(ZjbJa08jf1e$BZM52Y6(Po9r|_nCD3CG)-{6%>6UHS>_6@ z0g54@y~R{&dNq~RNq?Qnd}3_`l?-wPi;~GN$E}~}Ce^s3rLHkv%&Yxf2JlVEoRx1a3{nqoR2j<@>1I~_kW+u848Uw{PQTnWN@l9A3& z^mb*|#a8R&>DTY@lejZYR2_<{CW*epOpEEmN!WaH>$ACJyr_cBJJyY2! zxq{jKW#r}tAwrA%W?7ofFEw(CDQM+C1ld#?3uptA3;YqrHZo^q_T`0Es-tG)N!C*$ zyrR}m)v`L|5YehkW@1zr5J6Q2>Y2nflf!1bbDGSpo)3vrVVk0zW$7W1gBB1|TWWhu z=0lp-($wU1G7LhYkf3N~%`Q&u`x>oxc=AxuFy3#+RqTX{ZRRI4)QvC$yGv-3!{#Ko zM}Kyno{{&vbUV=e5Mo7HdbmMrlO}wLe)IO1W?;gYEVuMG3l3P%OXId_MkL(J76!hDyc| z?Cr#|Uj|{y4@GXUCs}7e6{&@(8{-1*vf>arusrX^ACk%Nt|y%qyu2CXoIs}DN$c@B z0fx)4G%ymZNE$soIjM#nk~ZJugz|3#l3+Xi-2xZ_)#DpH#1Rkx-_kgVIoMUHigL{bPSYgt1h)_B&!h-Wn=+uRitSVKw_~yv2NGZ>>%+M@;Yy$)W9~@wb(Px+|NYiMl07I=6J%iMGbz4`5&^}tW7s_F8CVdQoVjFLvNb^CD zV5>biDln2}8B`7y)Urv3n07r14O_kphYyz3vaszN$VE#BueHiZeTtzm_`ogvP_}3G zA=`8J z;bqdb;dTGk&aX(p^vDn?yxOYN&OsZlDOm-lBA;S<0BIo-;BLigKgo>wXhl3kZOZ(yv(3;GUdtKqN<$#2>|Zi^!(PTQk&J>gdii<%`{? z+}3!u;odAuNb0spFCaCX1PrCh_Hfq7j(L@FKl=KO0-g^9k-0*#|E$zv&(o z4uK?|_R#$MgoVIG>2p4;<{~;c!o?3Ol^?~v}e z{SJP|Rh$^hV$BVuhSH>=IHRH4jvaln{;Bi_G8X{s8rJB`8 zV+aq=(8@`XByFUmuUfiY$F~u|(R6RIQ3~xz8%1`+vRJEHuqsXXXQYc7zkF*FsFSFR zUS!YF_Wc&r-X7>-@SXd8TU@}4J;3$1d;JN$_MMKM0GXj!>g~GDujs`UlZin@q&fmX zH9nFjVIh_YCqj6t#~xDrZ66e;;&u}al1C$SKVmhc=U9u95KFl6NdRUk`7aWO1(GEo zuVcMnR;9h+4#tY*f{0mimuK#Djp1n-oWvDO2p~0yX;ZizE+r@3)DVCjTjZ>_8s%@TJ2Swmv z{H4$ZcX7+FY&Ada{}E){a;Mh98&$k1Xr?_~bx&0t+b1}}aHz=@Ire7PHnX2MaSFb# znLX#z*Q--px@d$u{vKmW;0*<@2SKS)?PbEB>5$SgQgIeOK>-fbT7lk(+zA}|z-|q= zinO{pecXVCBPMSx$L+cNsL(%pK%e?gu{8Fq9{YqH>&R|zee5}Xe$yF?_vCS8I8!^- zat3#Ne8%*+WuNidEN*AZ!<*3oHc@t0-4CiM7%Y5&R7*|!v|9v;eWev(WPjIi_sgcN ze=Tl7M`A~iI2=NxgrfJi(^rH2v}Omof3^P;KFSoI$L03(CYFZtTF3+Ew%n?>Kj11P zTd;BkgtVQV8Xs{=&5rEeI17aOeAEA~>7GIRDZu^fo5`=sV#>nx9-V#KsoiLm%ZwRV z+epuEOhQ@gE^DNhHU`lPxnDKHFLmsJMtGt@ZJ+l+{=0Gwb1X&P5_ceTk`cn#>$6Ip z_LKRbr;I;wE3b}{mS0gZm&%{|2TY~Ri~SM;fKsGq#aWl@IGT}#NF=UNuQys8Ya{Sg za~6!N)o@0$p7H%@-}F)Gz<3Njn;}&bv>xzWu>DeEWdPPb$( zLM#EEc%hPeL&W_r4rEJ>Nyaze7a+F=x5nHB8jYH7reh$>lfVpojRMg?)mVzsG|J&^ zlWiSwOkpmYJiMPLx43^xAPBG_{S54^FdLLGEjmw3=l4`3&=UQTC-{KdEPt6*2Axt!Ahud?Vy4P7hH&lv#_32)LSK2W#cO6E3WYz6)%b6Fe}Mahxgr!fYJ~RQS*Iodu$c3z$NbaEG% zEGRk~^pNuni!PsIQdTGgmkF1(i8kpNA3+*>cu@iVLMea=q7~U9lnQDTHil7u?Yt-H zw#NHC(5z)Hm%qm?ZlB~YJ{t!o19zY$%BqLk(4+9t2v8YVD&Ahk@}O`HF-8oIhcgLV zGCdNO`c%G4uqA;j-c!SH;F6aUG)Dq!5*S-@Eo|!`TV}X z5N^$USHZWMdW{LBL<(9UfPNvB?l4lK4u{E@0Ho9 z{!epX9#M~*z zrUKXB$->(#$JEUg_G1)%?#`OsUh{X?Jil0)?sRk(rPInet4^cktCNp5V%RE2W2KRP z1V{l+iBG=}6i{JA%gn!^R0FLxBJJY_UM6n{qbd$S@Y^D(KnvAW?siDw9nNj#@8jwd zz;8x7ceD4=PFxuL>Q;76%e^PtlCc$zC?5Kshzd!v1=jXyHWSP`)18G>4c3@Sa5+~h zsOkq0pKqY_WO=d9v8+bjAKX2?nAn=z(}Rm#QS@5h$0zo6OUO(7!&|hVZfV zSTvR_BYv2`X_8X`9K?5LJZ_2`lt(S$HeeL%^Q zkmaU1WU->DUyHbLxkcm{-e5H?`Djn0*WH8)-P&KMe!iAm0+S*#!NW^qz{ILkAlm}9 z#qn*a80RC2#h&SK13)o(O&9Ia}&Id5u9R4WX(L>v09wlNH zD6b2DZk;SyoIIku{rVH~ac)wWC_i3iwuEGX%-1J?pXSC2;CH4A`!%{t))VTvq)zO@ z>(-w)i2I+bJ5PgnWA zmEKnQZQ}NTxZN#om#&1@SW-e$;m}aj`PhfbdrpM$oX0Vc?VhEltp&gRwAoYE6VK;+ zl0&rjc%39Hc+Yn7U=xw<_0+Er6MmxB?qey&M@9Q-W+tW|vYRt^TV}U%4hDq1Rye>9 zAUD_n?m&;(oxS-uC`0Mt9{>xC;1Jl{YK_- z6*^5iWVsCKW#MKRuOciDFC4q7Zr9eeD6)PmXXnRsF~lp=1QN%Da~uAOhTjvny=>Nm zP`cH-+kD0r{T`^8M&MfQQAuR?_;4@89rf%0)j+rN@Afr`Of1rH7SQa`s3G?R^HTlH_dqx!=*qP>Z-k8H0JI!CTG#}5SkYg@q0TNJ~y%H~H%EDYAbV>ww& zfWcPnE&W!5knduxJ}UA~iR8Wk-89&7VsBE3N#`l11Jb zCPTienyw7yc`J1Q{s3{q`#}~Zd{{cV2IR%sW$+t7GJPm5utjRUwpHY3U_G^^qL`O4 zZFZh4tq=|tv>qq-0CwP!7#R%d@cjiC#hL*r!olK9j-WhTu5wIkcR-rSvz9Hko$W_v z8;o-pp6v426YM!Rr1_5!aH7D0zMnseOcbk@RwA6R{`5}L=H=yPvbciNl(eP#1iVco zF2a)?XKqcyzDG!Z!_IBk+D3rofkhH>z$Zh}soKp)lnZE+#&Cm8S+6#IHg41PEbql~ z;xj%_;(o`_0RDY}!Y8f%n(|?D1h9zPY9Cm-Z?L#(AKjIIH1whRNM1wHjhv}>jdPeW ziG+Pn2$OH(&Si&nzm|w8rxMPdzTe^oV{ga?^nehX^Ng7xo$ZUNijGV zqISpXt$xCSCigLEQ($%Id+bt)ihs-pXJ;`A9{t;WIBR|!Wp#uT213?%AX)|=unCX@ zi?8`ExrtH=Fn4~7^5&# zH|@|K7&84GS>7IzB0q30b$ z435ZsMx50K+dU$@(t5a$g=I9b3%Z?dCr84;aoeH6A0>o|@ahR1&fVY z-Ip27_N8N`I^}11ABZV#o6K&FSxvj0wb+(QJU75Pg7q`IDi7C66Y<075OSAy&wKk( z+`mEZAOUHFNp{`0^SV--(;nHk8t$dsy_{1E>3p)|J6oOEIhh?R?HD-tv0PM3>NjpU zM?NWJZ@{j7I1F5N3Mm*m>5m(XVcYHI>KaU@5<1Go5!>=zZK4*h!AZl1;wch6MmX;V zD$4qW$uoz+OUbpv5WI&WsA&im&|Lwt)Vl)ezT_rkUJ(h+s{YkbW8!a8L4c75z=o<_ zg(A$Zt-4n`4xkQ#X1acTZnxxib8dIQTtkwnK^~dd?Gbxx#q4i|AUYXlB+d|z7QH}! z!vOFp_^2aor9{!~<93Py_E~dpou#SFQc9C)S7RQZx6W2O&RHMFeZA2boxB2;VL_y5 zTYg;%o20e+wVZ#9nL8=9hvWWZ!Yp4#aEt%6>;yq-p*FNI9_J?^6s7uIn3~wiE!^AIk2SWf9wpuc zhcc<;)#%ioL?%amcAs-&m|ikdk=vP*C9Fw5wJ=cd?QaF3sQ^$K0f=}s1To*==o^58 zDG}sAy(AZnkK&FT?nbzUg(>V!?Il?zW*x4zp26fV~MX{+q0Vmi~6!Xx>|{l|^MW1ZxfYBowWjhws06jbL3*koWd zH_%_Zv4nda_~CH$koLp8i!D}HnqT0mKcdEnvb47s2#)kWtoW-dI0C+fE&Lt43?#+* z8*{r$%QvQR0u+9dYu3&)e^JTEW7A!^WEOV!m+bo`H`$iU`_f>i9x;2Era`P8;%KOFF9dmK0{?&SJ}aFHMzgp7IZ{wr4-i-%R5dAr2)IcueDVi zW6?EwMvhNRmemjjAeZW%95AsPcEY6c3wQ)-o1av+=>?OPMuXp{aYE!6{wk@B{ zX$0vB!!E%43=~9FR1(clmG>PO+aCvms%SS@7zhAumSlqZG$yVPwGa|*OM4ne7=&3T z!$~{lDej(~7;RBykmlC=rpdy2!yr0LC*rpQJ^!gj^khkHlju9?0h(4N6OhS_c!JW# znthHe7xrw~9RI?TQ7O#aEo7k>ydFGa|LdXYpJ`RvEtfHrzY6PNl%&Joi)J# zVq|X?+Rk#V!7Dwk&GE^)I>Sjiy_#KCvrB7sMa^Gcd%I9|h<#00G~DXCEwSB+`zG50 zqc71axO-~uS0J+32`t$s)e(GuQ|V6nCDQRa`(wTF3I#Y-z>>HZfPlN1A}CUfva%(( z;$B{{mn-&0O+fTx(rwr6oLF6Ri5*(CFz+9Ll4 z0_D&Kl2IC_l`huvE9>@4=T@|goplA-LK<{8*4<5Ye`DRI+o_a5t=llhT;9rdv5T_w zo(yFb=5M!+IFiDLuz~wq%&{T1gg^Zg4vdILB7r=@5Hk4?JB)7y(b~Aq@YkLpb3lyH z$MtFe#)}M+c$F0^p0cFr_#$2HY^k|=v`Mw`+Eh?iENqM*Jn_JJTqm88V-u21Eqn}s z>6dHvMq>n_;e*k!nH0@H4Df$!_+=m?6a$CVyKsJAE93!Q6>4>K9g;F~QHJ4yfI_S|;;!Zzq>J~{I~Y5Rw76J62{e`=?fw(INK_T7f)DgI&?v_^>OQ5|=C z6ZlxuwC^=X;N#dH`v#IFqz%#IK-j4dI8^6>58A|yEp_s-j{jb#P7!YW^9iPM_Mc7B z;+L_QK!0hj1Y3ul?3R$er0|(-!$DBv9D3ZZoScg3!%Gy;gqe(# z{6o^L-t{R1(u#2|mbo(97r*<)M+oyn^)Y?X)jqmolL@OeJtYsQ3kx4do=o-UDO*ULntb4hHOg^ zO-JNrq(01(n#SrZM;**a?#zDt1sCp@oItc1GbIZ+##xcv>>jC%YyO4~zAi`rC3>zu z1j7{;PQ)32w6^J4Qgbg3*b?MFo!NBhF>phWJ$ykQdfx?n=I#Wk#Cm*#UV>r(TM$MD zZht&=7J+2;6T8~=1-Az9H6O~&{UQ3k!`d6}17iq{4Qz3KshcejYR zwi35ay5WVLxGJECe2WQUG{L=Rx%vnO7)UnsW0(u!$G!Gqul=Fd-Q8*ellS<674GJ6g!0{y7LR9zNfKjaWRj~RYB@& z%qE8-<1&yu+aD*JBEfY0{ZY78>vbos#-odsEP4>veC$VWvTQ&Lm=XASzdhJ*$Mtk^ z)24oW@bQ`B-{IDd@KQVMNPHVR3P_@r zf~vGts>7Hx1LG$o)opJHO`rTc_S<~8rGvYmdA9R1a}|k&b0gt!yuZ*E&KHY{DCky2a>>Gk>7tDdzAyY zZg>BF9aSwI259a)M7l7B#1mVL1ks2U;EqasR*G9~DY@EV(uQxcJ^WrExROoIH?t3= z@3T4ie5OuLp3ZJ4*-uOUWbcnqDqa7Ev%LVR?@1xzFY@6&DlO)?1D$L6dCWcv<|$~F z{XRo z7Z2}@_<&%agdh9cSgCKP7Ax^x1XD!=0$GpK$1Od_`(-YC&rl4)Jkc=T=|t(j>gKuG zIMZ?>FCZFb7b+t63Ayez@_HHJf^0tsq+Zc4#O?=<3{uv&!m#2ItW4SCQMH*(^zc{n z;H1Lze43j%5=Eo1QR<6V=BM-0=|uPgeamd7sQmatGUm9h+1ND<;pjXRG=p(=TI}^E zmsKP;(6&QM8s)ouScfbvwT1stX4kRr&vo`Se>PSZiR%8;3L*)HZ)Fj)-{+JsL^>Q` zJn~d4yG5n|z66B2O1}HJeBqn{p26R@1sV4}y)>#E8(}n}0G4ucg@WM@%hik{%eb$G z8%UFq>YXoQQ{|ybOUGAP&qg!=;XSy+FA4Xif=gPqnxBUW1vFq$9W4y?wPkjDmS zoSqz2DnshxBAid-|KR-9gs~v?f82kV7#DY2WW)iVGVDzoW!Rsk_wuhPk=OTQ7}cLp zgtDx(!ZPkdcaX+~&zwi6c8)4`AJZbJspxEC!6eoT=Pkyj}$Ym@zhT+vtCXOcT` z*gze?>X3MmBSE}<4=+%)UmAq{w0Z`^I2>A}xQ6KVKx|jz*?m$CEW+%wpvt&KOW(Q7 z<_pxLGI$s5k@seqwX_-3CLE$$bHPA094MUTfQ&T41ThpqMn~9;L63k)qD=5#yxPU1 zsa(>zA_r6>B*iNV$f}KiZwV7VOO>bfCHL2|adtiOoB3yQ*3P}yYk?4U=dhD=p8B+W!GEz3&!&R{C3Ziw0u>M7S0e3!K$w>oA8VWt>*n0I~`%RVQ zyP;;+#D_0$pn!h3Z~j%`gIg7qLpF455rrnw)y+|{R}eh_O0$WI$77uhHRkz zL7cS+!6Au)zpidSBFe1p*lM{5ww=G0AFWgpCXyj5mvF=vXW!8-hTn)@gIIoZ@f{2zudnY_lo8S<-Becz*)N3*uOBpRZ zIBh+$&}u7PXPBEq+~Vj+HyE}>ZhwZJZ9BQBm5p|Xw(M!eO#iN_?`uMOZLn*CUtb1v z-H|QSzn9kl7WWDmpFdelODMu{6jScG!UNfPa*K7bA_ya;g8&&wLulV&m0>h{aNSyM z6<%%oYY90jhuqyF=qL9Wtl@huY5}wj`|tR+D_VXQZ<3S)iqTu-BP_F(9$OuGl9r&` zzmgo^&L)sQdt-dklZ+K$jPkgymOtL|<0GTQ0P!q#i)Seo1(*1Uh94-Zy}e(hsMos2 zIjY5jI;7aPfU#X?)NIICG{B`WTXztJQW_i)dKQYY7uUOBO zHo_SlYyKxtS*ygY=gL>K@9skVYL&YzoMYpeykwgkMJ^evQJj)|aXHLJ`Bm>;^R$|k z1skP`17KPPtw#}#ujtCZJ@ZFze=5eU#&t0$9?zw>Uw2qQv0uqP2%m&|IBDcg1CU*< zit%kYL&7(i0EcJhA^0AXF~R+-pWwFe9rP&fWTozZZWbI^FNcP#mw9?z;PSWZ(=SW@ z;*P(afTHZ>wtopT3h;eYZr=o)(d}Q?ahG@O3Pf6HOz=;2!dLzCZqxvIKLLV*vs%lQ z;slN}H;I7eQRxK9YI*oR6hp4pxF@o_aG7LAa8$zd!i1we8Gzw}3X`N#YNlp4+*k?y zu}Pv6E#rkibH?;c7-6d>`_25+3W&+$h)~(gO|{J`yKF}`lwl*Dho5g1O@qy z$z_px5p$UXr4!O>NU@rNNqQ1;D4~DDPwnl`9i`3{&z1bww-T%AT37$GN+$Ltcf*tL z$cno*bJvg>5S&Q7P(<*G&=BqlEgj)9rB##Lv))_8fK1sKyWV%Hl`iAZlRONbVp6te zX)E{#S!sn0gKZ{4QN!+w|C1IUGvKBvTn1)x4qeTP0b~|Zalr4nQqaw2?v;IV5o`z z9Y?6pjt)%@ehe|-BkYW;mb{0`31ZSD!y%7iLsNK;+{4DDlgr6PZ)+mlod5JjZ=3v_ zxGitQTWgJNOS*~^?90h9T%Jvedg3X}J=ytL#YD2(B(}Tw#f&Q|2(}H*IGf3bcxAuP zc2JogkV(1JQd$>3#}Rgkw<`=3w#Kidsex78I@7Y>_xfz&m7+DQ6A(UtlM$5h6^Xu{E4-&k=}P%n%h`eWL*rC z-6+2hpKT0jP#URFFt_YWUgqGYD&;5$3lazQ0KGVh91Fp)04r&E8?dS*{0@d$G~I~X zdqg?=y>aW~cD!N^*H|Nt?0m*?oJNgL;N$uI;p7FTRz4Ddz$xC&qccV_1raS6EhGSq z1|JX|f9&YDw$R*XEB?QQ07>IDH%1=3y5Tg2wiB4}+Q>cTn-RgxfpJ5h>h2?hUM2F6b* z+!N-bbQ;GHF{dfMA~;a^^uvO_!VP?@LrM%nCl11P$qG%}M_|H)xhb}I6go6Y61wyg z;Prtp=z5Dn!MhgfqV0Ijf)?sGkBV=NRRGG~8Adb0OWH8mhTtpq1 zH?@{ko-SXOeE`3ZW!bymz~_C9eepsZ7-Ogffpr&J=>nT@p)z^Zl3$fce$9i^?`C#& z1{Roa^H8$39luY;SqFUpA#gP;7(LtCJJ29>FgnPGn6^+e1bCCLvEWYg?_ZZZF&yLY zm)!WRD2EsF@O&wKuB2rZv5FQ?S;kAOVom>@l7CVe-ZjB-l^MYf3|K#0{gx<|IK{ZR zRVW{oMM}tVkBGo{Gp;C9cgzPETdCnU*|rsiDYrio>q z+L7kx*ld!Af+R9qY%43air@^=y1rKqQScZVs9sjA!yf0dx!LC-K#OfQ<1scGMQ3ny zX7-QWqfIPY9?kpKESow-!ZZ7VEQL2F8<8K|UUa94^R!&j6kdrEm9DRHXAvDN0 zR9w?dP{k7EL6$aAOVL+w3)lyO#j(8AoA>BWv_#Q?CoZ5K7LEcJ>v0j~O!k80&MNve z4Kstx;^5KJWKxd4>g#}&YU3ap0xhd-!b*c&VFApO*Qz-xVW=uk$2+YK4jzJA0Ch93 z;0@uH?Rb6@+&DTpKHB7Yhg1|VIR6}Xie^irhN4?{mkFSbZaGb^Q9$A*+fTeo0gr?_ zMKs$3Y=*t_eVTlGNZUZNs+QfBhMUvumek#t`a4p8JN}RA0Lbf35@|4J?!qiTKWpA% z;YK+U-(~6b;6hqDkq%by8qJYrBhGQ|)5Y`%;wo|?>Z8D4=VlhC=y4WxfWx2*C zBo86>V`SjNKndeCqR*PkSC#$|H=0$Y-jyX0>oH%ngY1j$pa!4x!<6>=Fkp4ip2_nh z!t7yD+*h`rmEHYH=I$IxM;|IvdH0cE_oRj%;aiK|kO+ou2DlR8} zl3X9FC;aorMdnb^&~h+h=S+YvWOO zp$bcap0f*VPTUU>G}3)e=OEac#BmJ*IVRZ;i4OuE)JDbmUD9w@HXIRBWUm$c-dwf& zluh>A^OPt1*F~!>Rcn7t@ybM>w(|cOm!cBr{fQz z9ausl$=R1+BEElKc$W%!@E6c3Pe%DKWoAG6SnRCabz0rX)pABXI}hWN)}dm~u?@Le z*G^3lmq4bLpIiC>hz&cN8{7fi%1*Y#zc0QAO`j4)`lBr%sU9ZS)yw|P{|h;qX*iZk zDjES>>e06hMhy-L$?{X~Sfhu%_BHLa?O$!VafL!ag0ADBOK12u>i+rKTL9|(7<0E( z*w%fL7DM%M*H~_)$>nM-G$VLT@W;aUkLnU;B$mifSh_9D5CcQ)(ONzbC0cn|Rr&C( zB&{_BP~3JzIkV;*zOhNS<%hi+&g{Ow$|v+~jb^!m)`(}xpRedH4lRsZL>~KYgto7- zX+Xsk@oUM&tqQz5vBQ_k%ytQHNOduz4e+ive?v^M$8^E@@W9E?(F#2KIC7r^5!Gol zdW!fXVF34u$cBeEfHN>ugt!!79OfGU&*~AbU=0TV<_pYqF;?qB3xdvvTG{U#{zaCY z-QMuCSWLs5z{~h!B2H+HVL-rjHJU)wJ_fq>lZLyi;hu8g8RyB%^elXv@Ju7l zkGg}=Q3y4s`8|Gy5P|IDpA}|9*hAn0GQ_u`*JY^5aqM9U7(x7a3Ad^uuyBtS|M->Y z+tyIv=A<@E3`Cn7hV#mJo8X{j@=}H_arp)}v>x~9H8wk0LnN2b5vKC|yk@z`l}t0a z1$;n#QPfSe3ii`Y6nB_M>2$vqWGUUZlU&i}R%yn_Mo#HmwbT>91!^5&vZa`kfdmb4 zuFV8(qQcl8($H*xNJa}) zK>|OlQK%5>Kb=5yDaP~YMY>?9Yk@9dZeL@i$E@?HS!~+-9y3sOmYm%Io4npu_V6sd zp=H;%>?U{_EK6`3j01Fy^gNY-7wzaKfcxW?zqrM0f0~!_Rl=borypkTW5^1<;?sr8 zm6ywOF*>B>7!)nCgZiStnBr!10xQz~*$%2)tAvCuZa@AVOF15!#%qoH;wiXkw3c?D3BK zt+u4MM(%ghv`Xc)u4>+5(f}mPSn1d8tRBCr2iMZlB|V^q3{IILu0=#C&;_>1dorCt zDB$He@UZf}&1XusuxVMZ3{hFwmLyxnJOSnKPFnDN5T3M@iyddiDu~6fQss|FJD)sI zO7(4(>L}tBl4yu;5|H7#O_I8od$RBKyk#iPM7jcEFX(Y=dw2nAEr8=kd3JB!nB;e% z6=M;OqGCA%pLJB>D#8s{m6*nY#h5Cno`{S58taLS!niL+Q_n$Tlha8tEWWXXlPPS$ z$?aJ89w<(M*`nUWS~52?Ai@4SPhZIWcnI>4n@auwcEAOGcUiZztj2X&$vV7^eDgQi z9)%RJPjZW#K3JiQNeQi`)Wg#ImfWOq6FH0za5f&j2Ld;ksYAkynji1S@`BNLNfp7d zxK`~(2YQpkkz_!sT6l7t!#@IHu+3`7-}J$RwxGku?mDpaDz2zsPo6%eH;tUm*A zm3#&%*3(hOH5AVi$Z@v{t`{S(#O^9@BMZ$gepf*e6T8Uois2L#rW|_M6qFb)AY{vS z_c#H$G!+90+!#A$W|7H^ZksZcqvJSLW~+Xb8*d-ia}8Gv5Y-gQc^2+Ij4ZSR@Zn!f z(G%57>ktAd_yu5HroBs5-31<sA9 zF^A#dd(?Rg7`fFsL36>#|naLVaD4ELI$o5%yBs2g|fQzNNToFi40PjJnynt4RY)?E?nze+}4wE*$IU9 zaAV!oTaH@b-|*kc-BJ2JIwxpYUTHNqYxwzNp?^p!(Gx=zpqJUlivbTK&&RYiVPAi- zbKiH>i`^E=GUGe?d2APiBS{`u+|w27e%S z)?geWo+*xf3u>uqscfNFYfQwB6pk^WOpIT?sq=(w?AWHx$2XEM{(1Mgr@DzD%1>M4 zDRWU5SBcwJ+>VReX57}FwxOqN@zdtwm5txU{(DHNGOSX=f^DuzBFq}2WWrZddweQ!EbJhzMQ8!Vgf9!e=LGpvUZ=^q0KQF_-( zE2KxGH;gJ_do6F;-N@2iy&~ZAmF4mF=yp%+GOF z+9N4R0E);uVy%RfG;q$9-yR_wj6l6U1m9Zxp&aP`3C|a<07y9{rgJDcUYcach{x*? z7fS>&4%ZmSMbr=tKTsvn@H-q)V7E`AvMi+QQ$lu+3&q{z{CzGQQwD!;v3>oi_#tZkR?ZTCWzCQ0tajgNuE~1Y{1Z00L%m-c&5_nqf33E?c{Ry)t zExX25u5}g4NYA%Dd#`o;<~}lmbFN(MU*qgr=dW=*sgYddOW$z+0pOgffN_TPPp(1U z;Xj#w$!wNi?ff~;?+A5w_ON2 z4y&Zg1F;-jd6w)f<@dOy_6=LE#dWG{oG2Yg*SHq!bi}A6nM2jO=_Kgka4AgjgK*vN zXE!c7Ml);RkH)ak0)#g>5k${&9qu5*E4|WU;7h&jOol5(8kWm4#o!U+3C59c#|9Km zkr&F>BQ}4vY*dn42#9cBzEf*K=sJhFSt$uc0*YP1k?1zO2v=f}-l?&`b5)67m~P`W zDc4bGhZV5aRV$R?^=n-?-=#;n{6AX%PF!2vNEv=3eE{3O%MLHO-+;eJVb~KG`0OyV z)vj ziX{0^_ymgVD6}u8QrT`yGt?7L17Tb+iyXt~GeRd`(QsUN5veQauXz~>w_v{{w)ADA zGEf1lB3{Yj8XqS4iD61UIh{h$h_(VBR@vZ6X_|w=EWcW6rR2QHNrW1jjpQ>WSNj}| z{E|O7e1$fsjVXEs_~IT+%pB25$ zzBq&LiQAxT3QxLmmn&13zueWYaB19E3WIp0aRpTsv|o?g0iF!w9=Ugkrc{-jZ1wbm z0GQcrseLoE2_Tb`L;d$YeSw5ESbZ}J(sAu*3`dP02o2w#qUp`?wIWQ5V&=c`m_R3h zUR>5rcK}1w+%z|dv1C{N;qZ_i)$KT5;nABROK3pRypxOxlD_wP+ zn?>f4BU5)6Odtf}R2AKP4unj#bx99oBuT5kKeIDeSdnqN@N1_ z89BcKEyy9yMB%)_U18Ss4;nqAvY z1V}#g34kW_5%HFzFp#JK@FkXlv;yF@ie0+o%VgJ;SBKjQ+nk5HMNM7KrHLpxcwhG)fIbDk`&JdJi*G|qRP2KQAX_%YK(pskER5{~5 z*-h~>m`u*5w|$MhJh?c{uWh?4+kRa;T-kQ(+S%=W*|c;z&eYdRZE{5$9SU!&;>?{A zPRpzoLrTeB2r7$86Nt(PLcv(2Ks2u^hJ;s+O0G?dA?c2Tkx*eVBhxe^o#^YpF+FZV zF)L`+l`zxNAEo8%XhsA(%?Wxwjgh9KlU&F1b*^9`cUZ~dJQxQ(m+kC!RKVG|6EzXU<(9+lhDVY93=l2$1%yeoh9?|ED%odEKT?} zal-u@f-zF~8gRZJF^srSS&pdW(x3U#{l0XMv-|j^)KJpKc6+-$%M7|*!toz6=?G3h- zXfHa6_;ilS(QaGG1JYM{Q+#(^5iI|HhE1H6C)L_zIkr|%X8GKZokkr`xqkW$dbr4O z0SDBlEhsZ-*TRSw-#odB{PjWNj~1=$a$CYNuCkMXbz6}oMJ2nV_&1cMJt-aqC&=eM{I|037dZv(0H?-R z9?(O}1zI#)>|?93)H31n01-`9p%9(X52GoG>&ILT=+B@zcNLANeSL0IZO3A7#eqF zYB#0!TpY)@@%3k>VPkHO=l-|3XNyOCB}1?9>(o7%vP~aMOL1Gv{WtUQKo(b@@c&n| z`gR2Ys^kerHAeFYrk)5BBfedPyF2JWS;4c*$^@5LuI$j2-l5EmgrIUKEmbdhaF{0xVR_`FjZ#9&>Or>PIx#E{OyN#SICAP3n z9XnLHb>zxN`37-NpgFt`&|xUvvI_W6V_BgGQ3c4*;QkER@%fN6L+xd@v2B~$|F98p z>2WuBsf(te%ba8HGB@TF7fvPlNV1R&RwY|#J9EF*nB=aDUDrf(zOvL4Mnx|7sZk=p z-7H;zzUO!nvPoWh&H0zmsI|h;E&Lz^RFky2k@HF8$G;XhmatP?&QEv#VfErM5}D|X z^jqYV3;zUQeIDiZ=lDj0TZp`3X;A^0KT0fA9v*cBVUrjtoK*bgc@@{)C->6o;wV~% zPfno;0N$37QyEs+JVH}NXSQ*(-6Bu|E(Bs_WF{qO)s8e_(?M?22=D+hcj9;^$0!(9 zGXA17^2AHK=G<1PnPcknWdC(&spYR2y$#cSs|@lG?#Yqvs&mR<2}*@S5?oFnMxQy? z)h{LQi|b$|++^uSgDuFD>*QwO)5n8*I6&IrI+)h4u#^u3M!(2gB;Ae0v6>wjrsj$i zQx*>)mS8QRoOBiGOQRa+!z)?AkGpqlG}#p3IO4Xw$sBp^<9;b_8}SI&WE;&5AK`kA zk8JCljS$n`XzwReK1tomt`{%V3jV>c_o)4eHNTd5gHOh7;tK8cm!kXzK)l^%(?cOw zyA4qQ%ZI&ykUQzo6eJhQN=vs z^+5_3+(Uq+W64z@R8}dMd8infb?6@ccZ$F%0~zjl*%G1xklGK#pGpB(k`jpk0jB)No=T*SCLgU8~%phBuhf)2Gb+inKS zEUUj|B~Zpf+#Z<@SPK2cA_)E<`B(JXM%wu^5k{zm#$eA6By72@)c4<*>i4p50pK zI=#qIFHV|9?r~d!?cB?bz>#5KI4>%`riURs1m~hQ;Y1mJwnmi2a+4X>Vn!i=kf8(+ zLIh=A6{iXQg$MJAm(pS*1L_d)~TNOo=O+=8{3`TdJ-yC2IwqKHbB%s6# zfxQ&{;#;(eWk`;EVKoqS%x<8!!H5Xk$(Ls*>tJdq-NaDiKG(;!df;?nYDzNECuD~n zWf8Om(-~z(V(cfg{qs+{{c9-4;3uQB!HD6q!DLnOS)>*=ZB!b@lUvz$TPT{2Y`LT5 zPQO_sJF~=1c~y^9vI&q=SL-!en&4;L^khDwHOi1k2I-!+FI;jIxP)Q z1c;O^t;Ka6L|T$n1!P{su0on2#jLc6H;hP=EsuHz!hDg)lFL;l2bM32yx@zd6XZQS zjH@ad7JrdTyWi#H672E-woEF^S*Lctn(PmX@#@5V(g>Ciq6yQ3(hk-O4mjQ9ZY^RC zCv9ZO97THzf`rbSGO8>(A4Xw@$!+YH~nw^x|Lb-`qEF3|J`qplNtc z*zFnTVC6t=de)(ODns?wXUIJF1_Qz*zwPNd^SZOY$ZzLw?#W+uFpBi-?Premt%`rf zb;xd%4dma|YzR$yle2)70MyPimJ!Dhd9fdgx7J$I;)Yq2dJC9{7VxYiLV)!lI%bj8 zS#F~7jVc5HZ1hJ`%NE|d-yw4KHhX#~I;}rQEb}KZUK3XFfWZ=;$~H?L(6sF(5Ws`e z8NBh0kln7gmYbomp`>`1 zA4C?$+462%?`(scz8=#1tQ!KZpOl`d^Q2+A>yO(e9)29tL2Pj237hgH)|dSxo_idF1YuWtTL+gw*;!Y<*}GdJc^PK5Aij~2%Ta6J z^!Lu-ka504Y2*_%FEXY1(62vnZHFrb8DxBaB83+qJJKv zqQYlA;k5t`6MHOaEd>LS@jc z@}CoAG8~|;CjNqv`2$xu{F)65a1O459RwPc){ZKQ*zpM0k)|GzTI?SM1%O8Wx{RNU zQ_7`Gl)B=XvSesVvN)3Y+k&e9vRrZQB}Wp7h{{(GChgD+xpXa<1r3AwiJx?*ax#>q z*e2pa(PH`gpUqImXRmp8C=tT0G@rsgDhT~jFiH_2?;fApaj7jQ8(m5QD!W-_h*XT| z>R?x4Oik^y)V6`r0q2O>71VvWdSVK}ngqxxh{k+@!XqGyfHy9Rdrz9iyx1$v!fVt(E=jQ+w`4xd!W<_Ro zKz2zc)h`fDF7kJbNrqa<37{{LT3(Q%s;OaAXzClMD)~V8)iF~a#Dal?`C%)>S%!;r zXVl&3LP{47kAE-J2zieW6k6MYO<<#o#7i6DBC%(M$_i!nL@4hvHz@Vh5S~u3JeIvH zS>f{zw$yRp`qakTHX17kmtNg)(`}-~s;IbJI5!q@FcZ#xjDNT723jn$|3&)(>Y|2y zp6Vb&^fe&wPN#?43Ub_g+^#^rg{f)Zh*sz`5E`aw0C!E?*d)jb`yL=x5$2jv+YHDd z1W2|C>q9_REtU;dSua_vFyhUP``fHXtR0&88PMqDYTWLX+zoGxs6y|%J9wp0L1Q#U zg$|=OwfQIn%p%hnNcIwdq!$)HzzTO@zQRRz#xm=|efk!I4x{mqBl%BXK0TUq*y{j&@TA4^WcR*1Sq8VE7L6(!)K z$~LSTt*-l7$SB|FwtKnEil3+5Yt8*G_~*M#C*fDobQ}TkcXR2^-EsEz-H1shVYcx0 zeho5?zU~M}-286KbG2LrhN>T4F(I)?^LLag&t(vEHG#|tTy!3k@! z29y$Y!_8Yn^J2KzL~v9exiyAZ^~8>nag%TE!iTF7_w(cqX*samvL?Z`r}^}BQQeKP zUOkyWK;5T_H?ngI)ex&NBML=NiY_{tnW#Bu5mutdQOG&CJ=eROv&>vwm=6z!{3lWZb1 z1Gz5K(?JN+HzOqx_dz&a1z%~)dg`Q9cG*-ohcN*gW8{qVWCEIaItmD?SvF8-l?XAI z2yL0n0M%fXxpWHXm!`XXL-6gmv|tv ziSvXkG5vfx*+ddujY*c3NHyJ{d?k1`)u5MZE5%m3^NC>=QG6z*Y1-rr{u`LQ71gbi zhs=HGV!W;J_D6X%$%FGukN=;2*01&Mg6_?*+z&f@#Mu#E9?!R9{de~BC|-QW3-bT$ z>=p9Kdpn!-?Bd|`51nAeF7S3CDiTLIGYSc~e6%AD22FIWU8~$gHpwz5A8rsAl0)#FzW?a1>Ci#HK`Q~ zd`T$;%))8pSvw;=3D@nCZtpKf z$W2$u`@2xcXg!^QsYtfEF)W++a$TMdmImBh>eXa6p4=k(-VrH+a-ZzYNe5Jqj#t1f zVx(n7^E-_1RC-43?y7^Ml!6nxn?H+(&Qlve7XM#PM_N3P2YSZ;2bk-eB2TbnR2Mgt z1)1h+s4x`6?U29YPTU*l5d%H&rJfq00F8A3I&7SuoAoby=Z6{ITYyWE;x)(L?=#~(E8Uk zUtdG(&5=C(JLD%8W~=iaMNjqcsZhJ=W%udiUUWgUoc8J;fXiM5cE32rFD(*|#Tk{a z8p_ciCqNBiFygoq>Xny^d>fx2m?9(>58|j2_8T8%ydu#+KaBZm%ScjXWEz{3oLS3| zgTBH9weVxDPOUo;iPkjvFgg>enc9DMkK$VIG+Uz=_iGB``jET+mw*yih zOd2zCB9V9zt2c_uAIiPRlVaeoVEcy0G3WWO+oMrBy+mD>AG@p@d_h&2S)d2A=Km${ z&ExE<%DmsbhCQ6IPR(;_N>%1SLc$ON2_YmAnUq06g(!%MiX+{2UzGxZMnps!5osg= z(ufE$h%_Qi!eB(3rcqH5fgnTFv~q2v5p7<0zrVH5shk98+t0n9_x^EH*~8hx+G}{$ zv!3~3oyWMI-w1|9RU8y33Frxh#7cHi)JFuF^RQ1m*%JFP?uS#})$EegZLCR!#nm)A zub4cVVw`hP>b{`$6osR;Uq~@SJU3e{(VbN{JYS9oAzjhfu7>AS(aR-}23>&)B{fV@^JNvilTJd1$ z_4;{wa4EWZ8Pn;zi{1AZo9`_)_i1ncIfO(!cNvW&;g`8{Z&AJk;eT+k`4JI2kXAZ# z&tmh<#`Sv_o9~9}_J@mu&sMjerVR>P&RZ(!Omb( ze7q*(vPKDh(kwYOiH=PtX#O-a%M)YC&-Syb7;RN&Bhle%7Cj77(fk06Z%7DB<1aMk z?~Ru|t{typs>7qd3;<0kKaEWTj#&v&&S`pEMJaS<5N5pkgV+(Nk+nIt4~dlh zj<4Pe%7^_ClRZ;H7}0MM@34-N4dx_f%C2Uy+ubfsb|;chf*2zCWh%SpdyKu?B%4`7 zsRd{)%t+aiX_Tmhk8V#qV)y7-LP#)*(d_KQ_Cw~w>4&P(?}!3y|5&z{R19w5LRy!S zM#b;OWa)s$<^ZM7(Bo$pJylcCq=25@LDJ6p~D zB07K2YJbv--0sJ%tn5j4Yb!mSiQ1QhNhB$}0Rl*hDjdVWb*5pTMVAqd!u(e8tKIL~ z7|AaxX0>|^w=Ui+gX#(@LLh??0Jukq)*hdNve|Q^tEwc!Xf;&@o5WIvY!FHGcu5FQ z06AfYO2cHaQe-k=Xn{5x0zpBY?C)GOQI0nA(-2|gn{ZkHCQtI!2X*o4g8xdm_=J94 zQt)32zka7*=N9~D!mpR~>!nQIAH069CJ*VN2&}@dOZ4lB%>N?%x>~;;%>0kSFD#m@ z*_`?BgkSgQ*R7fVr||2C`gKj_zZ!l`&}uHQ&LD!*KOenVKc1s?h~F32kI0*jn*r@9T%3sR0? ziqY#w;1q(P4}gHZLPxSJpg8eDJl@0O17<9GxL$={)sN4)diZvXIC zGIRCz4}a}7K73wSfPHjn{di6NIH6QGF1p1NJ;Gfff=y#9H@myM{epKF^PE9!pjJBU z5c3ZDP5t-+QGtR39nU}nq!1Sq9TB{^rWYn2=L5WYk7$}YikiSOFfZfw`tkeq<3k)N zHriT0K3BhfIz6oG=X2CxT~_~nZTt!UyVdP%G^QzMJc76~8DE|@yI zbn5J?sWYaKnV-yy=i7O1xPU#F-9iXRX#9d4pL{Jf67>H zg-fP^R#Qlv>AOZ$lW%(>NqDrZ=z@_{7O{b?1hm!xE7NPboyL7CEYFmebAVa#Y|5HrwV@yyt551|UD5?r6-@S(5nI%RjfTkigF zun0iBv=}Efn&DuyG-`-g%^4;Qd&Y*baNGNThcUF9jN51!$t3zdVVLmL&#lLY=#eou z8?noXd7;hxp^aK){+TxO>o&8EAB2MB$_9|ntMpPnFnEwXA!Cj(H1_>~318AO8pixk zW)({5BGTJ=aFn8_1=RE!Z3ohY1OwM2(GMQkj<_pz;&F$5wB3$Cwt`>Si9)otCwjN$ zGV=mXLrXp5l11~)fo6YPk)q9==Cd7Ug?qDmzD+YH5E={_$O|fJg^#Xj$7PZ23NsvC zSldpHScs1v5g#FpvD2CC&8{}Z?;GoqJ(F#^O915Q|=J#?rrym~y0xT9z^dzv+;t3Zb@7&mBqMn8u_u;Mp@&p~; z?usJZ^Zs3|UQnB`GW5OTuyTT4;#r96xPaG=D+^fRghW%2Byled* zrIx#7VLu%9Gtu_WjEEb%j--NM&w@1&v_TlzBM@L&%}yA8gywr6xtG5cq#WN*cK(cKBN+tC1{sC?u51gS(`MQ>4v?k|#uof7U+30QFW)_W+S=A+X~K?t(1 zRtPrF7UQ$}j=|TPgCrB$BYLKVth61>yxF0n2Z0s&5tGfDv+FA6>rzWy*J5r)<-p9q zMTC8yS;$;r;ItTc0?Bm7hsAFPdMm^&gh!Cst~}e8GE7Vm8As5yZjb1Oet2^f_W}89 zDnHQA)aK{I^&?#mxuGwp6I-oIR~vPWdtq9 zx`pShSqlJbSfZCq7IgmI(bwr!8moYf_@KpYS?0#6H;|ZPm|}oLMjopZwL=E2FJW|e ztxE!3F$HWaWBCvSU`t@O?^kn>DY;x6mrLa+r;G(5cbF78>KYO13agzv)l&G}=$c%K zs!*?s%_>0oV0#eM(vg@2XY~J=Ukr#U5>(LF%Gg4zE%;9*6;5rLYTr1@Ee_$J!OO>pInu7`t!xrE7c4O_MWrTg zLxFYi(KfmKea}M@xu2EI!)1KwijHI-h#xCSmkfD(mBE4;=@%DJN6?VjcA+YAw04j+ z%o{lNocx2RF@*gsK)=Vi1Cg;Xy@9)j!5%79@D za)h1O?_wK&k)>=Krt#Q9e=bc4S&*-lS&dL`<})dJsQ4*HyC55g91|UuW1>+WsK^f( zKFl2+aK70E%oWF7(ap>#j1J{F#7K5R_nd3nhzau$tJ zI1X@gel5CcqOo4BodtxCvsKt;f$ip}Cp$#1(1vV=bPjZJE=#ZfMjn9#3poVja2itG z==t>hF7E$mepZfdm`G~oM@j;A-+=iSj^=>@clUtZJYc@VFDCxI1Li36ZzE=M#JoIg zP9HHp90dyS#mLZgAMv`sVKE1 zn1HcQhjT*-TXa{}Vs|_HuqYkPM5x?&7n0$K$&j6PAB&PFCM-Yc5L&~^sc{M8kW<0P z_(Q^s0>My}pH_+*+df7|FYiK8QCXHnOJyA1Xq}Ej(am5zdx_+s2B|0uA-q%`YVp&Q zP8+4COJUI!!Iw03IcB52zyy;z5Xegf3@Wa3r{XbkizQh-(Y!<;Id3Loi-{fvf2TS2 zVDisO43XFq&GF_0tr+$lhIvMyUqm%R8)7^81YcuRv;xQBJ2V(9gqAWF8w~SKt|g&~ zL{6Kk3vpqyF$6IQF`k<0fClstoBdpS>hMeT=Ys@?@L0I=jk3STnkQp(qMeM*cXadn zwvek%%kIaa^U(y1fvRWtQSnHL?-j342rN!tS!J3?y)k6bs0EItKo!v^AON34TKh8O zwi^%ol`pf5EUf@$#l%&1wb)WsQa<#5ne4{3IAL zrnz7QkM`K!Dqg(G0jOCNw{6w_#=M&<1C{QLDx(HVAxRB82U3G(&B|$;r zwlHW^lNtS*k35|}f)yky2u&o2g?OZ@zZGXD`oYIX3%2P&cas$rsBuK&9q+|RwV@6g zMETQM^_5n+rG=SQY-D^O!Mz)%SHhfttsG3I(*<(6Be7{lm;cER>DnO$taF-4PSw zefzIcSLnO~q4lfXwdfx3Yw&4Rsf3`TP#ZsP58qon1S1b_-`R8LGd9{es>C8AqF@ zo_VoGENBuyP&-mV^5r}rTshhxf^#~?>7>E}`OgRW$IHqX`W_-(p*j!s7FC+>PVeM~&l{U&2q7{@BK=UPM{+Gk5QqgJk0F4mzDIAV{+M2DLGI@TfK5LI# z>VCwSaxre$ND;sllt_n!H}ztml-laVL!keA!QBhly4hkxzlS8qtW7V;Swn5NYdam+ zY?GEV)_FC5Dm|E3s|%AqEO0L^Fpn;%J%%5R`{$YN{+Z@qXPO6Rnjg%p>pw48NF#o< zp!Smm!2F%_f%TvRooRkFGc@G^rRVK4KL~d&S?Hgh>9)-@zs_%Nok`%b@cC2%yHRyh(2d3zEfZ{`$8{5Fx*N6I8rCySBk2D1 z_9RI1Xxr=sh5F9rNEH1y2q-h?A@c7@`8h)kbj8?MaXTCGsf)QSrFJ@sB+w z-Yp2ZE7RSWL)bihdPAyRI(YZ!406Yau|v~Im|vmxRp#{7j2E0q`iC`0RBu`1u3uwr zSfiHUuskf42j@RnO=DgmZ06p!{Zvu@E4+nwcTKZ*PNU@iJixtp0LFR=M#vIXS@#dZ z7_EM`-4Fl17D;Io9Uuh241%}m`2OY6(^5zoEf4Hz(ILdE`Y0Y#0?7HyH#kybq8C4k zT-u^kQW9xh6wL8II{Os!`ta;36J2FhE4(ReQu1sP%hA1*e9Bn>DNFs2+gU8tj7t6~HOSQS&q*tJ$zDvfOJfM7S znlR=+js1&t%|t>0bzo_ z%zvilJSaw7%EWvE3hsdVa^cBO!uYO+P~ysJT0JZ@k9WfsE$Ds=TpD>p4^NKx2NPXg zOuwqmOY8;~hXPy&IRmW3v4D|GWPvTtX@x8`Sj_3*aD}4~GT57^bi&gPObta>D23QA z`O=R;JtNSC1pY%L@yMRFU02J7}I@$ z1h5)i1e(_~8|ufKO3A+|LcSh>!8rmU&7~$g)w~;A_169C$5OPZq;*}a?Wck<@&zSS zt6GTEwY1%_*2r|qd_K)BlrJiI`-aR4J2L!# zoAh_4@-1Wbw=c1Vom)Vv96MCZPh>2(b0x?V-LHS(67lTTe4$|G+ie*{SSp)XC}O_D zAb!!NQl!I|k;T+}Iu;%CKqiw1$dmy)lPOWkg{jt^z%|W1+Sw%{IURG6Z*ft zU~egy{|Ipg77C#SjHNx=TF4T?bx~<(P#DxOo$pjY2np-Dphby~LCYlY&Lh@Caf@o) zojOjML4l>!?jY?Fh}#|OYC~NM_3oWnKhCNjf$Spn{)g0DDg*966wFIxNJ*9IsEjR* zmaiG+E6UbtpDAGXx2G-zv_|Ejic5sWz_7_Y9Ui$B7k1=l;)9TAnLmb$n~LtefJ+O8 z^K{>T=Pt}_I)DAM&~if#GuQ;B~YSee2MFw zHNX?es2#ytq?G)uXdgjD3&vqSgo;hd>EH@F>5iMf$#`aPP?xBQ%PaDg0 zsazbxibzX$+%uNV#$1x?x<4(t2)P6`%PeN799iPbuUUrEr;6tHIzCghd$V$Ct^N|f ztCtoLd6P;(_pV_@kfo6MEo`O)byrD;+)kfXO&P&$TD&p1K!Z8YaIVc>rvf$<&GmZu z+G4zjp7o`pNoT^$;^UaBGZ*MX#2*{MYYH<{0uh#66%VxH#&q= zYIuL@qgY;F8{Ws;;Pav$5_2vG9(4BIf!jWwSsRutd{=jM3fQ5O!&KjvLPrb%r|B94uZ2+bU2GLVsFA@BmgQ_K2pq z5f=y`z*W!yS26#KOA1DrbcAQyQK-5~2-;HZ3s-s#0)Pr^N8Gz$*bKGxm9em7V?Ha1 z!X`7ckp=a1+m27>Z%oSAw?~)6X`AEil<38mAp4{Hy+e+KG$~02>+FU%qmrAq(FRg1 zYaT!sP-_J%Te}>#qVG77PQ_Xb43+|9vadsCU#$$=axv7O|2_JO93V>DVlx6fl(xn= zfH0nq#rCJMc?gkP?=PWXlW;wGL^SK}M28ci0q-5+`MN^+$X!^oiapc;KOsu-3dztM ziGE9?!?Ng#PUsXNC`&b^WB`M=Yo{2~TN@7cEQUbN2PE<^ALfM*#V7ERvK_%T>+_^h z1uBK)HbX*AsvS@>X{%>hcP1pk z1ISAeKr*2(B)N(8Nd@TrK%6GaTQ+7UZTt8^n|#UQKjnkZT#v_Q*5kKjxbckluvUi!Gd)?n-OxWAtR zoqD#59wymN=JRJ$@}JvhbzTVj35%{&VFxwS zMb9Cm#OZ_vYoO@^BpW@fEB%(pAjUnC+TW&m9&D*;=z(Wa|67Fdz9J`f{*Y;?;$d6> zs6`1eKk`O%jsO3P)g+4c!y%zVRA`)uF30s#Zum#xQ8d0Aeb zsBmEih$!+jIw(9F!yd*b3!?4nmyKy;h;-rHzsw@M1|Vak8RL8p2y$LL(=G~QjVT@a zfxNoX!=Xm4d8_YaoxC? zTv_y&6(JE)2&)!5T{u4o&}nzxc9DQooAFj;z8Q=voKJ4uuec0D%WSk}f=mwkMORn( z!beysKTMx}M)8Zz#za@Y(q0QwY_Gx&8T{Vg@gdNa1JPCw^VbSYZ1JlfPoPcz+-Um>0c zGh5$^Vp>e}3?LJPq6(}^PkQqWrIl`XmkJCX748)JzcXs zd)_bG%zbUlmlZ|YIdU}vI-t?a;%AXiwg ztVJ(!%DBMBBGsf%gbLT&o^`<9B6(12B}N09JGJtdPr1rb>6m#OzkKwXst zY!EOB_r{_E5ePC_-z;>$$-Hr+=rqW*G+MDRyf-(xC}zL{+elqS$^f9(X!1ygTOb~$ z1(GY~58l2gb|2=0&wzV5&P2SjK1sfexCue|equC{pid{SQ>PFFAjcX=t7Ib50Y(U( za;$oJ#I(5$C@e-RmPh9%_=DltNH1$rXg&;@QMBP`zj1uhEFAzFVWFXd6SpW@F%aDa z3?U0e-UXasq-8^-NG1YCP~~XFbXoc%HG-!)C$?~a=fv@+nM^z!atG&Ni#&m>8Fk?c zGl$__TVPR482HEGqTeU}JEk2^Ku}};9qrCXk$kb93D|MP6!XX$FZ3V(R4$^A$Jg6% z=-I-ee1$0@%=iZrJZaGVw({$8EZzgRir$#%nvmlf2N<(!WtS;CRiT9>t6xudX-Me; zsmHq_xsVB5YGO(b{yA|tpBBzbe5W?Ah%-(5JU<`x{`^9JIxtF|#mW?gi?|-oE6d#` zC*KkmYFW%>(D33FD3#yQiaI3NzY!4Q(orfcm> z-u}_M0rL%?-k-V<7CwqUBq1SOI{ zTB8Z>fxzwW6Mtdi$h9z;NcqF&@#93Y>BXXXpsvzx(QaxO4pQ`aj&?PAG-l)5W92Z7_R6$gssrJRaW|c<+nFdxFix3cH_K zQP|I|O!qIZN)Iq=Dyz+b@$39S@#{-d$_P}*smYXq8s$Puzq=I-EzNvc^2K&16d9} z1NEvKApA6YDOQUool;znb>O;5<8_Q~?wPKq;m%&=X$U`_wmeNEI7YYdv@UrrQF)Hh zt@TS8m#FY0IeKram&vjrNjelZT{G;K`{miP+OQq!81_TOXeA50y0~eM*2fpxsj2H( zW2E4lx|U20BP>K1!ilD*f&Zx|^SLlRw4V}L5qemgXG0x%RVW^^(N-4|<2-*y zMb%+5)VDo)F)yys!u;|2i#S^_h|RsZy`NO8@Ym?;9Y2)ehY@w=;;dv>pla!}`r!pAqIdalP}`U3eX)LNNqHaH+lU7%SUnhZr7aCW+t_sCY zvO@f+aaBzZSeD=`(TloT<_WbUG-R@dMS6CSdYA?Wg#O?6Fbxd@M#R%7nn`;YZI!47 zg%(W?w-9U`!P#G4BC1-Ih*_&jRDXmHnOxoyolc42YThMzpWxvYoiTMI^h(|>leQ%~ zYwAYmn7n5ueM@xq)Q!+LdFM=KEzvpLxIkilt$ytJYaH`4@1a_8K)U14JhUy`$Kp_r zld?DeNf`)aS{h}7@mNq;+xUy_ll#WhU$`}k<)F+O@l<{*ugR+u9*q}sO1SY$#~tx5 zWnga9e81j49KuBr>3;MGVe{#MXd6ctosIF1eqD?*8js(w-w^iKg#8U+e@ock9`<*I zy|wH8*=D0h;D4@(E>rxJ+*76b>&@qln&#_GzF#6);;a5`U)xoN2(MSReS7KkR-!=E zT>UGyihvkXnoT|1*$GwAMO%A(w2keV9{sk_^Y!CP_2XH+`StU9eRKiaMfKm8)sI)z zkGIs1n|bE``uRf~U4%*C|F?f0+X-r*Uits+<|7zN5q0m2`sf9;f>UGCINN>{G-}gx zIV|a3>K{zo>86r&bAnhCK*r-S2m_Oa9ZT(%!Yrenpd7}>7pWc49b4ktbZl^8-q=i=N zP5o-jgB_pG%hml?yT0?cw%6jd=Ko(*3UZA#^xPXG>mE;E_j2kH2<4x6?GJCS!vDdu zu(GVtEH<9>*LjEXeH%^Z8VA-E2a92cd^ERtY0+Jo@(ov6T2MUb_fCJTQaDG{uX@z0 z;VF$sV33D9S+8!$FYf&6_TS<0u#Oe^(8D`D?xNo`T@l+ooKn+2OMLcmB&5}R;+-MV#CyRW>Nk`_;S7aEE8M}ARuuzLtA2UK!KUz0TNx*+D^K` zm+8G#k_Z8By^;Afhm)eNgwM2!O4#Xv#;f5-<*1Dtt_6bPng8z5DR5yWh(m1e{JWuu z$8FyhYofc5+NsHu4Wi+Ul(b9_$uXqqhipZQqz}93#rm0AeYTV*;g8&@Q|I{=-M_ki z%|$m&-Azb*)hO%Usk0w8-G8j!A6E~F2?!A8$hw!8VxxN`kDluG=CfCp0gxf| zM#U3qk`2Y7CUo;_mXSBRX%90MUM^2n-~qXlHCI5tlx4Wlu*URhY77;@rnga%QoSs~ z%HT)*in5x@er1#3?OG`bW=s%TqGOq3n1Q}_DMSrY;4WbQqHyHN`d?l;@Uz2p&>Ztz zWMRS>@F;H{wf&0q!xFDpIulV@ahgYq6SEcA{9tF~i+5O0T!?#Ye0ReI>H*wJEU^cG zc9d1)$g-lD==p-r>#kA(NJJ)$h{6zhqjY_Yc>a-~5!Gv$7$`ax#z4B=-Bbt6zzv(e zeO6m?W}7*;E%{8_)c1PzJ-IfA?;&xMeG)S$d`Bq+MZcUHPa;FdEh#2SmM`97;%}k_ zuh$rBCm;!JVs5Cz4PPWc=f4C!c?jxdkBiq%)s*CLs%etfw905pmNz{atMMLo7uG+T zqDib!1@z#u`smIpCGTM(119jTLB-2m^e>Eo6u=l68{D@U6ZD$lT3I#cQ!xn^apRzQ zu@BZuGqE4W9g`2_s!MXyGm%2dG^~(RK-Cp-+ouYcJo8a(ow(cvhk)&k?ib0;N}GFW zghVsJot3yM(reE`$-tGa<8pf-u5?MCBX7fCEZs}9!aFTk3F3;MtFYJhs7_?&;d@*R z)#&2D#Zd{V@@n;kYT31sUmHcUvAqosB!1M*)#UL+?^W;sUSa^LNp1^8Yov*ix_E7C z^8@4g17koBuc%d1&n;>cvOCW(Jr`gDL(LLDKwnAaCTY;5KjdYH8%tl<4>z3;HJ#^o zeYleE`(LJAq?VHwRDxgfH_GRbEhKEBe8^h&V^b`X|H~Gt(e&ckqDk?Yu|(=y4JtXt z9*JC-Po&QBlGvfcA{A7tis79giC-* z=9gzvQk@~Q-1^>;`jtIUe?J(PAC1#b+D|08i+r0m!H>W4|i6M$LES-f=s+Zz%YLz=g7JWQO>n+l)07v-y;d63izNrYZiWm~Jcxu#?bv8l8j19g=({lBL+6CGo>z ztD1vP|16hR|1f{zdx<&OY>0_=8DxK(aN>agLLB@s3wtm(X6iO%=QXN-Bu;l>N-Ugij!O!FJ*V>{Fq8Im%e zgh5a=VXbFkty9Y}oLJt&=9Z-@(U^I}l1sj3%-1E<6X76Z+#alCW&W*EDOZQ+{LGIB z+#TMqe$osH*;h{u^%ChAWTjKb{^%*6pjdwa*aKEPJ}Ks+5L(<^F7scmd_^6{@j63@ z4vyatD1i^F@)f5bA}VSeF*>T|$XFG8<#&>v=sEBSHZu51B*X#ujEuYVewFv>f1nxE zBj^l0*cM$HCtrjfaE?J^4zNfxAg4Y5qHKP`s-&JHC{dhz#hML{7-dtB*B6`;;XIOE zqw}zp$C@%JkiM318u{nP7%WPuf{L(DuG?X<-h^nA9V`n8>rtY3H}o`iw7Uv&#c8jxkc%2>0J$ERdyeO80*01sv|JMwn zIv%8;YARHMW>d(Jk7b!7yQI_g%Jgfdrtvt#}=JwzLly z)dAm6AhAIYU0oTqBQrrAft2xeDhrt15sEs=8B6$Kyh8ru%^$;_KmQ>m}&9G`g1IP@w*sWAlx$ z*9+yW(+y)yhnWy`4o+C|Ii;fi<;+%R2|n=?YkwBor(#2Zir+~)Mc$e1r~db(1dyuN z%lhj%XY$`((LM5CXDhg!H(v_Bf6B~J)C6w*K&SuMc!~>8$_K@ptstUMCN}QYJgTRN zVHRG*5-+@UKbY2k&D+a7%%O!vbcC*H2Qve^9&Gm;@J)h=bbUc1ZUeamu%ge`Ukb!) z<_iG2@)3Ma$8+6Z`~txMNaqoXBC!DwtU^PI1F8X=RZl(eA%C^;-@t*@UqELA0?ZzW zzyJ*Sn1#vdvpVur=7Fx*l#@@ypJWk4kX--Ea}T`Uega?d6V0jSllFKtwnb$_V4Oxd z_aOfH_1|Y1bEYxadr5vKf2>pO>BgL9Ed1&lLcW1r%pxBw8Phq8dnRhg4!Vg~S*(H?7-%)v6ro0 zm+zEC2DCUqE*o1lph_<)Z?I#S{Rl>dCc(JT?XY3+Xp$LZ4%%U>&`>gITG_Rld1skj zSrN3B&}6%K+MZN(ZyEd9<*YrdOAJ5O_nZ)&0lUQ|X0OsJkmT#lDtmxEOs0g8^>QNt z`G;Yr1(aC7hV>8uTI_1G#;h(O`m*9tKH{*~n`z7#d>s_Ww5l`;6A@|Dyy!sY zj|f4?dO&4Zp;QpPgh>2;UZS9ys_;ZUL@g|0cq(DYY%wbw+hVZ)EQP&SfJ{o3^|VU{ z89^eLgAW`*-Tg|l%q=Gp{oa1hI`f=D!p@=kEC|!{oL9KG@FB;#9lRN^#ei;&m&Ifr z1cudbV0CP`^ZK-^6GiR8mr$2YCf#T-8lO;@#_FEY=~~al*SlKWCF)LX7@@cLB3{-2 zTN!VpGFVE|giR(3ZxiG(j;d>-OZ2w99>e>!v`g!jN?15m0^hFK@lb-K4eL$UI`uE! z3hZ;whZcD*R6F=YZ=DgJMKCxmXY{2wGiu0KTc#8tWErheGD~QjG0V)2d~OF`{A!*s z|73}IMx2J>^l59iTJeyfUT@$%I%X7eTPS(rg#sVlfdgSx6f8g()Zli-+y)oQd|_97 zFu-9^bRkqo2p&bS5EkjGAFOD$smZhRfv+&3T19GSey$4X36wz|U@Wbl_afA&wuZJE z!oAb~Y>Q=fT?S;;ppa6C{bpk>k1d{!WF!_F@)OK@q3ZA2>GH#}U;unTU&Zvx!qw!a zE76ByulLrWRg0m}p&_+GewOwqk`y!oovWH=)UE>IUY#D@50@h-sx*l9ZW;%06nty$ zb8hFqj6|!tGSUHpGWQJZP`%~t6>lDYZ+5-L!td8o?g0XQ35?S;MA>1Fg(-FKs zZimCZ8up0d%Te_Zq%nA2B!zOR%J68ZZTEjL_651wF}0kn($-{#T^AdIwBPUOCbK@5 z%3m3~2jaf{kO7LuTmU3ygarh~#rt8{%t&`I==k5-R54BP&b1$jq7kOfY+y|!1^C4~ zHxVsD{HG>h2FxU~9$|z85~&=GHD`j{P8OFzI9H+r?Q!YaIzV9eAOR!cJ0#I8dgV7m z61-g|%O~0qKcN=5F+nn@54BKZB!CD)!aK|W2@1mux65K&3&T?to}!D12!o_k(>FF) zbWS?FWg&+t20cG-wNTlVw;0{vUnXXl*n_?}>9(_Zbey{^j=!w5%c?;SWmD@ODu-AT zBn1H~^oc)e{^o`{!-sLb`+6K-$BUYuv84*nCgwj9X1of*m6n27ox9-neX_xJU8$+3 zTe08*3v~^wJP6gfU%`{QK*{N`fj3<#8 zk3m?RnM(_fY>ZbTaVw++fxW&aT)~HtcOt>!n!2rB!FyX--*Eq>yiMl7fY)5pz8cQE zo338I376E0#EmMKO0I_)Oh;4m78dbg-%lo990W+it3`dV z1#*MFQhyZ!gu(%dqGM#c{Q{CdcRIXgggu-k-jIzq*|i(3*<@YV&)UeqClz_shR}6* zX<&Vi1-?F7?%-EeT3qfewM6%@PBAQ73Cy;mwDJ??W9Dcq^hwO?&1vN3HI4*R#$4&- zvrYhBFhvKmge(^h66;UcgVBlJeHt4yp$mwaJNYKywMRN3PbGT6M;s2)By5C$bgA+ZQAlR<%kt1 zCt*Tp!cYv}6+FN^SFWOAw%W2{d$I8hpDw-dq=CKr7?YAjDqeLd^V2BhHM0tC> z8ILFM;)V2+8y4}R5Uxljrr+s2GmDrJ4dlO^Q3Z1(f!B(n6&O5%A#ll1JDvJ9<{-D4cqS_#BnfeB_A@KY>mA30Biwra3>ZrHbWQid zGmJp}}GR_-%20T86CG6z~DRi>QnYvCH<+aZFy z>5lu-Jj5C71}e?baCOYh3{TB+xDJtNN>46uyNBZ*Zi(BAdg|J;c!k-oV^ug`jb`+S zXo64jAFI1n=70j5jxk#on`5g+$1?1M#g;n|A5o=5qQSEihRi5~wVT;Jp2hWHLxKd+ z&ei?Q8n-v&rYHFwh&Oc95$GlWJI06MSmC(yBtSuWM5GKF^aS3FU>BuHr7wc3RTq*f zDPpQj#K9Et9XTNf3)7%KXT@w;w5Q!QofBNttlg7UXE6{=XHyZ@D5{Mho{CVZPyvmL z<|G6Ni*4w8myoKCFG}^3MF-mPbi$0A2|HexaHD3V$hl*ya1IN)!i>bxBD*Nvg&8ir z$x^<#7qy4WW(=Vl0gXP^in8`P@6y0Q!w?jXe zclnb-b&672+)7<3O56Zwj5D}udDs)N=6l9mVd66hI)Sv_jnxSYskE>dNz{dawA#fl zx?0EjFEvQu9-ieEJ>PEk6M>UMIv%c!?{4btGQCy6jv`M&R{&`oqCC$c*DKLd9&e=+ z760fR=Iw-b&Zn0;is_=Mlp=THs^t1bE=jF1X{L)#>Vr-?DqE1^JZHidgA7m5Ta5EvAWEwk*$que?i|y`k;ibS0$=KEV zIZged!IR3C_V(Dhp}kQ56=vC(R<0b-L^dkoEAl<^s;c=hEJ=blV2B+kC9;&+$Cg=q zI-?o{7Xk}XE~Lah$eSmY1Dq}aD;_{IQ`B|y-7%?G*qdOotR$YR`&ft3zL`cjxx!HxC-J>6-{UB=r$Ls`nZ6q1B zBRwFOf>P2kIteQABGRkELZ01aVv*Y|OyxGv(cx$*t05wJSK4Wg1rR#l8og+wUA!H- z+oT%|nK1b5{e%Id`-FW0aft4W9w4XVTs-!rB@ASu#6Lpgj(jd{>OJp|XPT+6gk{tv zEbHNj2~@yILa*&Wp*RyB0%IXs<|qRPX~1E>79vTblpHHT5rp;kt-?m4iA2&I4Mrjm zFEZM>Tt=HFs$czh+aiG~Owa14Bb{KTtVV9irV>77zq{qM1XJ78^7ufaz{# zE(08Zz@v1j<;{6#eRemRA-j=AvxH*RoUW$kC=p6?bHE1sTH=|BuGj;G_+COejJn9H z(5~avuES}QV=FC-qmCj$Ko%Zjj<#$i&WEDq=pJR_Tn1~^3K|D$s{Ra(VoxY^4DrD_ zu$KW&Wy~SF_sq;90_6h2*pYq!@@bls@%m#KIFwLzP&df^@(~jdAD557+Zb4lfIl%O zt``cgvx&tRipa;*^rwEx|2T8es;Qs4xYNx&^P8ccHJx_+1LyB}g-04!g5)JMEnIt* z5=2ex_}Bb#oi{eYSYyUw)`wn-GGDoDhOr%tf)B=yB?ne#l=0G(64@=dgxd@<868XY z-yUI~|9Et}f)p{0;4_1DjhH6~9l$J+$_Pjddw!Klg*Z;rN{oG8p*0@%71?kQL2xRKm#@>*dqwWtvY=H_R8hsQ6}Uzaz+! ztcTUu%;bcs6LY5G2I0mu`^9+!^SemMCf+UeV~_-pPa}-ntmaP+^11wzX|x%xG)Ff( zeey+P|4WD_aXWpkE``F~UcECve2!}=9B(@klJL24%`h=UU2NTK5>gkS$u=Q05s1+y zh6YV^IO<%`mLJ&%(Bq&$0gz!%as;*U2ZaFpWSq zhXwS3ZXTF?r8{zmtGfe(iSF~pbx8n*C{{26C2v<~jqXlQBYKay8OGXK?OsT3&IVGV-)6b)q+c}%fFvPZ3Xj6h|?vb#sWO<(izypxk_gueCS_l6SPPi=ooY-73?^jc|VPA5%ub(n<3Bvv_x)*{=*ZAXiRGvmwBG0g147gE{7#e$>i60zNLw5Xc5sShtd&1 z%YODFz+0e1RHykaWEr0T*0qF*tkTle*fK3$CxnE?&`ESVEh`GG5I7fDF9Eq_ACJYY zB;rLrKgEe^VXg4d2Ky}fP9c7V8ELTPk+4^woWvg+T}E@Kiq2l8=$3fbP&5cdnDy(X zNdRs)N(pf2bTfhoa(Z=ybrsN6JO*lNW+MIYYz`W^CEA+8h}J0>(z>ZFXo#p!9vsa< zFLMRSwZ;h|fnQ;!OO8#awv!O%D3oof*^fm<0jB>k5s`dBYJU_%BHwAM4|19&52naD zi(!wnlVYIQ;4{!nvo48z+71BFw&1NVW@dfnKb;ZG+I=&zw>1BQ{ko0bF zs&v_#0VCK4wWwLf7xirCT0$TZUu&Z;BB#;AYQ&-HslraIk?RdE?- zp<%tD=cq4BUc1NbRVxsCXKE~(#QP(`oH66c1Wo%=%3!+9Alc-5W*QlPL7^HVvo5uC z^BrPC?li+sWahI4a}E&|Eywc;{;SRJ4PA^FJ-It^=cjfr-${RI`ZJz(8URV=XFI`% zQB8;m;RExy3225c_ICCT_qv5RMEJIYjaC5a<8ckEgn5XO%LxJ;QD8L3$x8VI>gpiN z=^5yHq;0qrhex zp?nO;l=l~oK^Hv-&e9mPykZPyFb0&aF}Q*;IR1Y$1_P>>_Nt}oDJ z?I4U(GrSR^OYO-l#(b=XWjmo{PeO#&elUtAzz)Qc4*#}NV35Q z8!+!f-cy7Wz&cW0YTTjufkldzOQ6`{=0yid*ZH`4;}(PUh}{B3o1~+T&Z?D6r^Eb) zVE(2bK?HK5^d{r3Hx4&NEfr511ogAr>_S^hYyWM=ew%lxhb1nZXi^lUz7K|O_2+vh0 zwiNnrGWHuhVzKsk`#RZqRKmU|><-m_51Cfc?grw)x>arnwg)G$a?= z8Y1t$oi$SF2vDOUo0ZKHzmRIM3Se5Z)Xo79BRUML3z8Ch5_;n0;K|iyyjrUMb=#8k zgE9p|M7M%q{KN^yI-8DRcrZ9+yrB>2&^yh*LniIb&%STS^yuU7nSpyHk_l%R*370< zP-{9Tzw#TCj>Plqd+MCa-_U_M8r*LOG)QvTCKSn}Z9`PC_sBI zjcsgmT+Pp7`3d~dY8L0kc7sL?zanGaMi8@Z7O3`O#SElrl|9}Z>|4?<_U&zb?6Gwf z;tYR5BE89cDyIXIjWQlu5cV^}K4-mZ3KE_i#rVu+TgYslA#w`PtVQP{;uZ_evWmP+ zM@9qVUWrFh=76hF;}9#I#j8yGP3Aln=y^wPLrD%dabx}GQ?}4q`J9%f^RWDie`ecm zvgx~^{gTfZdyYwG)w_B&T`eud_LXO1hpwyW9&CXYdXY^4ICDTYE_CR0OzB4G(#3S? z-Wz@+id1?Mk3r437Hr}`=dH6A!R5^#e>3xdXd|r7n4Ro@RRiiu5}0! zr$f*F+PK?u6k`GOX7E7QMjOX>xYkNTX(5q?F*F!uUO?)}3JO%}_9HFrA+q~W!{&vC zRcVYQAIV|StsaE|!8(&~cyqHSP^@M~D}+ze9uf0*yxENSQoJE*8igIl$Br)=4}NO{ z{6;}_!NfT4lgg=SR6GL3F)s`#T0X1>NLNB2sK9`IA#DlK2+9dY@C8xDi`?FBVM5k{ zI^sW&YC`2gG-xT<6@cRP;Pbb<58`?aTlca!DxP5?qFI*>^b_2n^^owc$Mr&8LVuEv zfvA;8*=IrDK{b2$Rk0Cbez>~;!T1C%&g-PB!GO>lNI9e^<(caNV>B45Aeiw+<1Ry_ z%Mb}&I&zeZs~>p(8CIQJHy_gU{1PsBVj@OB9hyC8VNMDqu`65Tcb) zVsmm+F-+(WV0a{ZfX$}UgsiA66~dT;KGU1quOTPrK47dgYmKTtKwj!3P1B-e>qlP&;#V#MG6T}?#sUzM@)Gj#HAxMuTQ;Q2omb(zI z&Io<+V*-hK_f1+II{yyuzT@3C+D*^s)4Q1!I=BPO3_q>jzQgji?M?OruE?|~bTO?8 zat-{9%4{T9p-&JRQ%mZxXLJQ#EC9W75n&kx<8IvNFnVBAlI*Nt1+1z~3KHZw--n@@ z%7tV&0sT~u?XJQAJE)PBawv%Q1c!XydQjn^|gE4?gC_ifL?eXRWuDz31(i?uQbg4+KnT8s|l{}m7 zShEADSrR>{CVbJ5IdZCUD0tS3wN8L^DStu*u?hLhDu`9l4%PddHRofBZr(|EHP`F_ z9?L1MgEo4z$@hf)DPg}l>Iy06AVBD#imqPRNVo}BMm_gsV@^V1r+z3l;@*(i2-jQ(++%<#IOQvfDSEY?ai-*nT2sO&F7t7gx3vEE= z!(&SCbZ;}qCY5x*q!U}j20?lvHJA?#cz}8-IfgR9pW?j+?EXxfHov>;PkFw8>h^8+ z7HQ>3Yeg(?*hc5*W}B{WxyGz(X^*P+nCL!ol@&;)DqJM#D9cx)o=A{sJ~|BAGD3b8 z)PFQ&23d-C;a3HuJB_7noO9Q*ON?=6coVHOy<4Q;)%U3C5CzLjj5KS^SPPr7rx`Jw zyhSkB>V9q8TUG+dkloO#-NGK+B2_&fl`?*QxTeesNXh%KO*#dcC2wb>wEKp{O(760 zH21_7QQoa#Ukm%v7Sk0~LCqH`2Uxv%5@VB7fRXXy0I;896ZwJqo{zMffeg!b7TKDn zXGUc?ue#mLqRQfOq3!_xQD`EFv_S;YTuJ?zR3v@8uX{_MdAx5$*uOLE)3CQ;-xu~h zTlz4@y&Xy%WChhr{!&bg!W?(51z+>W5XgFHAgtZym^~G(KJ6$-_&LMP1fIcGj25ds z=-8%c>#?8NBP3IC=b!=5x$H-=tjr;) z*L&>>g$)l47#FNxMmCVhuIvrOBwo zKHy&RqyV*n5umMrf!x{#{9ODrw7TgE15*Z%rw9mIgWa#QXUZpoHg)&|n9*JSBMexa za+6y4zh|P+fcJ;`kFO&UNR`Nu+hDtd#i>6=KrB|(l&^*iW7OC}#j;+Iqe7;h`l`I0 zB&lLGqt8P>lcXNiif9bN)Fbm`qh3Wy?f0$0^x0WZ8GMiu1&!HJvp2QkhHAA=6J?Xx zdn1%q^|0t#G#T~gNoU%Q^H~xYdHR^eFjN(x>UiCvdLNJtRCTK#RW@V6yNL1B>`hZQ z*>C2-yccb>l>KhHy`8Pd_FeH?-E2M4!zq~&3t;N^1H1ZDz5tH;2PDuhVJl{PfF+ho z?#%dDl8L22_b%Y0UaW@TzqkLk6%m^B4#L56GgjFY+$!leYY9Du;P8?Rm`K6#y4q!~ z%gogX@6oq_lKHfPrk5S|yTAYe6dF)4K$-LXK8f3lZl@!FGsc3A5--hwpiai6qC_|_ z58+)NU|*#7(sBVY@dK&(x74!# zb_#TW<}{$xRAe)rv}z4CM}mkwEwB{tVSa*t4W-$_-6=$UDc+;W{r7XSc7__6Z{N(U z0puZj?8#W}$Uqy&rn>GOz3$)F0 zFk8VP9RY{DC+u^Z>Nke-eb=${*VfzUUQhyY&uI(T<5vj90CenVo@H1J>Zxwq2Oxvjx8u6zIm-4bBC&m4zW+y-y2^z6-(G!d4|x|6A<<|qtb zps9*rP*egm2+=*%)Ly`27iJWYAvn#=<&EGR7OY6JbTOSo@V}~i`r8JH7RcN$?CvPI(a11DrJzIZ-Op+RgByAV{1x z%4e$P)|~E=mo+6j049RHlFA+VW86xYni4CaDE>ehl41ptAJ!>fh~TzGKO^&!88?Fm zgb4A#5<0&C0iK%oI(E3LF{U#R3&bo?_@64d72+{XN4a{aAZaueeNvBV)#lZh_5#h) zR=t<4wyZU}4TcAiS)E=jVW7UvJAm0I*8;4PZ{y2B%hLbwsg{&Zxq!a^7|AZIk`DFN$Qi%)C7dY^z1Rl=LV)W_6CCZ4rL(Icp| z0JaQ~>YdizBM=~DKEi+sn!5_H@CC}1@oS3P#s z3PNUL%Hm3+ETp*nTqR(vKPTx8lmo=H1HF>3_LG8CFr ztlWiUkl}^k&7Uoyy{4(+KKLd}Fov>1#-e%|KtKjKISkRL{U8NksFfTaoV~PIBgEJA z;DKKTqZKb7xvYn+2Xt6a0pXhu({yAj7NN}J9 zL34f<6q4Wx@yM{T?G>fnBXnZxuQfMaGqlx8P zCI8DLFt-+WM(6*PK8Iik+-nzOTA<{8A%h3ZYP$ll9P?Db*$)xXL)f>|c}rqZ5et1J z4@JljFVC`clfg9)E;SeA%>*yHrp;q`J#A%l4fFtzub1JVLF7cqz!IU1$xI`j%o2JK z=}m>@5|20lA=rFLf+r`KecAfiWdBuSlTBFTe3bJswpO+dOdqCwQB>VN(b+OdV~QzV z6mWyMgUfKBf#}q@onYp&8jCZ717~{MbOI=Z>E{eF48|buC#=P}241QgKGtn8=5hua zuv~8>jY-88A#xzoBHj}$FoaVOafqR*$_QH(33eCW6_lQxY(9PI46K9}PN z#}&MP%ABGdBU>PbV(PW_Z8J6ua zm1JlFzo_*ngVV;YF>+cfgi}`e7AoF*#i~Kx#Dsf+yw&{EfXUMWA_MLzc z#dQgp&ERV%{J7a*ihm6YgV{pW+$J%ex8EYdpT8Fj3kw&ryp<%W5yK#f6YDI`*uoZ) zI6)k=5=Rf8L1_zJaCun~%RA<4rdU8`57y|x_--FH!|%&8``U3_T$ExAR~29hRNLCk zl7eOlM18r55wY-#67~^l=G|`JUz`bzCM0eMeXwxqynsF&l7Y;uNvTk*+P6?WK*PkX zKDQI?QlT~0F!v1NG7|~_kPS?Dr@Hf~K!tr=Jp9Gnp9*ja3Xi6{! z0Y|zwLv}(ko8#>Vx&0p9o5G(bQjK@9uAh*+iG7$$jeBktDE$rg&HhczrKJb)#=$)M z#`pm6?({k>1)NK|7WTN}2Y~-;yH=!D;(tO%X!(>psSU$NIjUp?7C{h&>3agEsj~k0 ztOK7)fLY_EX*C8F%6mi-kZp^i9(E8salVi4fTvWqg78FfK8yeKb8Nga%uJNVrNpbn zmC;&|BOOg(PvoielKjG^IV5y$h^lDtJL0{jqGu6DL-cD68ie%<@Zj@m(p)^O>PVXy z6w$|FYcUMtWx0t_4S^7q5myu_iqLwo=GTGO2+nh>i8e{C1~p=a0eff?CeM&*Ew=Hy zovVFjo*9#pT@qlP8wM-uX-PZ)XJ&GS5#KQAwuP&754N1EK!Mnm36Pl-`I+b_EkuaQ zbTG$(#)s`N6Sc>@$%DqAjb~`m64i=&Fm+b(c3FHi+)4|wA7AWq*NFsIyOxMyr&S_X z=CY(V&hdB(T_5Cil1qT}iRU&Py_O>Pi<_4mj7&riZGcb~mieb%#{{_IuG6$f+YN_H+22Q@Iy zNhq5a8%#!U!|8-oO!CDRtQr1}g)-cz+AIu|vkx|hZ|s%Sr!GF_cfxB@E}z!00osRd zK~6!nCGJ}iyXbc%q-g>D5$pF0$@aD<5FPmm4+1&YXtA%dcde8V&TGZA6s=970W=gA zO~;l6O1-^p2(hHJYjOH7$^{J*4%D?zIJyCxl5lQZg$wwDAsdKLDryE(g;^k|2GI>r zKJY4%qIf!)7c}oV2$wG*WYaS5+)l}R7zis8jU#uQ6h6jSa-TdF+fT_j<~kU7#V-Lh7be^sU#)oqC0Fi5d3Vy zc{ViZSnGWCq}dZ1`^ODeIIeUq-lYjh0#U_}ZUi9<@J|Nm#D6@bbB4XD|qHcY-@^m>{iSU^JC^MYefp=Yg%P z@j60Zc*y?>EMzI1i;5c2kwQXYnqBNl{v)^6r{R~tFh0eCXs`Nf*?`zuNv*B8p})gKi>~@K}44aCjTk1Fa&So$xQrzYuDeCh-R}wjAvVKIoe; zcsrI&v&l1oDL&3P^yfMXG_RJ_a<}@zjT=|mwzXVGJ@-?@d<=Kk2ba!gq$Vhdh^5_C zU_JG*Em)yY?9QDk>~XW%_2veG(lHGt&v`bOq@3C%=6+yyofR&!s51gbM3NF|%CWbR z{*|}sE{DcA+DQmU3j))XAnPk+!D+Xn5iy5j%DUuXTqsnFi*gU646ywK9rh`TtlMV+ z>(ALg*wcgs#diQfli)<_ADkt8HzUE~s5!H8b(_G`=)LH)!gbOPpoUe=-^?NmMt+f2 z;WnUu3AEfE%_ih&!h+n{>cKnJg0t1Dx}5{CtA6a6u(5LSlnCo=UfKpLY*2IPyWA)z zYHkYvECWnx-YSBJ74U9s0@W{|`c;;R<(hxA?pZA zLW}4NSDxJF>~?2Aa^!tY%cw0&ejN$UojvE=!>mU(+sSYL(z%xiSm)f!XuH`om10>h zD82y^KDh0t;U!RVm^$KW6K`xl5G@O?(NHCfci^F;-^`uvP!5!S*73+QKtlV7D{WSgb)&Tn>`9N0v!oavf*J$^x#y9KM1Be+)}l< z)vqzZ|6ckA3$(h)A);CG1ksAYYgp7U_W@%yyV&D~v)U9c&k?XIz&MG|k=m9}bTVSK zY8Q3a%0)E(xQ9GuwI{_@0&K#28h-A-zY$r@_cJC<*+l2CGz--?X~ZdRh-!H+foEQz zN|D)7SdHCLaP%Jnp^{GZy~q?>WCvOHk$NR|sCuU9$nTdA`Lm8P-BCvCVB z5?G?q<~|4YyOc0LY+>#$EB%DQK|TnH#KyZ62dR`DaH)M5#&apQF_&49D8rX1Tk}>C zB8`thy|;rlD#*(c|26wGAn_@v?FATYUK*U1%?iP z0K_d}CM5exflN03J7mz3y5*3&0vObmNO0hxl2Y7*s+Sr={0W%v5a|J4y)rG=U(a13 z=8k7xVW5r z871@_mR1-(HbBbM4#G%6s)oO?9%Z{_Y>@zS;wSMHU=}BmZ@kqbZp)onYSbI_9lAN@EqSKHu=8h zfWU>iIa(3YjSWt4w2^1qMCYR=qnqpP>p>v=u5iwj9h|GVa-E?_iCo9D za|q3by@#i|LT|#eD`JNBCYcb7aYEUf< zIo}8-1(d;{7KR5!R(N0KO(Ei8a!MSXDmWnGH@Y3?PFGO37S{)YNgx%Eirvw%Zvmy@ zk{Cy)$I)rcpv?ZH*d5`aY7X~g5O9Yem__Nx-}`v`t#fZGn8^#s=fc;@VPW@oC%kt$iipqdX@yPwjnmMP+)%Kfq@_xb@w=TiI1+0-9fMlc8M2( zfl9)z^7ei2F7r`$e4+D?ns>=YzXb5nUwjz%A4!*6x1@sLO~>>>O?j;nSS z);IE1R(B1e2JJSK6vhtaDq>Mb$PUoA;#Y=U(AA2>?M~VnnWZ55I!OKYEaV15)*1Dn z2E#6rDEdTTalM5W?V0E%v9N`m#W3OnD;;6xy280LoIg8ppXSQK45KtCgCqv32{}kr z17zfz*Y-aVl9&t32%nAe#8p0@t{U7_a(1Y5hr6VPFoM6AJKJDxAD6V-ud!1QAN!oSUs;mD&;_)V0sXEv2f@&l zQR7_s8ebk6O{m&=k)0mdzOfxnR3BhyMQn$~c4#aZy23?2h%y+u!nuo38d3ggg;{l1 zIij|n@81GLmwQ_uC*L8oE!&oNvzidZlnTZIw1lYpO~??|5d?MpUm!>XV}tjApekZa z+(pH{q!KXTecvBOEC& zi!joM1O91*b0M5-8xVDr8_f7Ftf2Y1i=+H6eGIgy>I`>;difC_Kkm!z#nnmt69^>)b_@sx#k|5n#vjR9+M>nuZ(g2XWuLMy*jYg| zp?jJBamHav8s|HJ{LWmtz}8nI1VmwtASQ8FNCZ>>#cEZoMd7u^lOKLbI5*Z{CK5U_ z5%C;d2&6EjvZ>MzH6u_V(tXlk$_DK-;X<5}OemE40wH3K>BQ1V?|0Dy+Hd|XgZ_tH zdX9iia0PUI-!(3y7|gAI?(80gC1=H-@3gb+X0LlYkI3cD{WC<$BhDUoF&OO1Ljbq3+GHEyE>ziG)7*l}A4#>MBiUcHw5@8Rb{Sj!{AL6UvZd?eoRI~=6 zIG;lxP&`9<6(A{(_x@a8dNhfz%vTnKN$^fWV;W1p6LFzoVRN^>>1vVlqdshR{yMIBD4V=4}*$zO5jf|ZJ<10^Gto7encW58Nv#yxP;Lv z9QY9Mi(#=#b?aeF@UYx_dgVKm$D<+hf!btuz0yMK8wgwm90K3`j^Zfq+67 zN%_$0-7hX zT>{D#%2&$osSG=|Q3~V>Y3RNtdA+1=z#vd5d5OX`v|$pgu>xh3h{KBm=bfbL#jjv~ zI8P1dbPd_0$}(S&{87zs0O0=j09>uw1mN_OH-ymz;sTfPCWxyPJyT(#bqBeTd8QiI zkM&C7D-oe(>}whDe=W@-J>tqn>{0g-YQZ=#IX&;bm&aOF_EkmOt8txSS7;`Ro>SHB z0JpZAoq#As@=W)6M1^*k#rKTLevCpUff4mDzUk~ zGp|{DG}W58(30=r$B^33>5;z`q1eWy@S}vKaHE{ZSqfM3qg8$g`I|c4rsoXDEmFsk z;^>yd-)P2rcj$LJM(oUO6VG~?$-4C-gjk=(M-<`{@{`N(7@J;`x1&>(>$U@3K3M5+ z>{$_j&Yh7bX52P`JfUG!IfsLB-M9k9lxaiJh9R%>k{jY~TaIxGVEbr~wsxa#k=7qT zRCgoR9d-JAjWUS`?XPC@P?~{kC6<~i5vP)TQf!1QVIoF=Xy`5A9rzQ}qvI__^?D5` z5Sd!5Vr5Xl4%;e7w^M76aT6}H8j&;hR)}(pT&f+4sGS%py$~#{am+QjZ*PlRF;YUb zj};)21~jztSp#i%gSQb0D{m zCEEiq&Q6yQo8NcJ*P!gtSc|ZxFTg{-&rsqq+0W+fm-*!N&1YrPJid@O-gqYOp3S>w z@|cddBqL3Fv6rH|Ifj`4-wTsBzlCszpxvc1x&ZE5(|gSB zGz2EAL<{>nVh14hNYP_P#Zgi>hU@i!9E=Sg1> z^)>Zv)2K*ew2i=C8tnz7$SKDB3OSFf`4mWvLb6?EEU;Po1A?YI03Ws*af3tZMOVng zse|fy2=twh>LwuOFyqaxYZx@H>bhFcnLC$mmoF{YTImVBttr^*f?Zp%>(tRJ3;wD? zd}YCYsE+<9Je}Op>kD>6!LC>Lt|Q%FzOM<*tO@-c)>_6^h`YcpgU15>|W zf$ijtye%u(hScp>hz~5-Dvi`B;eFMLR3QSRxo=~pmQsz-+r~d=>JdO>R%8rd()a_l zhf~?H1v{=_M--xC1UJ*0mVfhUw}3RyS0%TURfXFK6UDf9u&wtHCUXeV9+p(Lf^6<6 zErwEDuTV#7gz*C7&^TpdrQ)>es2a;`Vb?ey5-U`KuB8#qkk49(0bjHKP>8&4SJ`%9 zKDG(xcqKaDu-vqrYqVwUJ5h_aa@}id*Ykj`2oGwUPd0TrsAQqf?1YuPJv?ySAK3qe`k&4bz}tLfl#np&->teAlX!rTTFo z!=6?4AaJIBQvOr4p^9kkw` zX7K-~Z7|z}0+o=ud)fn;u(Y*lhm^+#X&;BKGGlKct1)wk(ur^Cje3O1r61CBdE(>1OnfA?AKCtg zxh59NE@@;W-qwVKl0m`7P^*2L)rCdmXL7Gom+0ZFE+|7p8lf(jiRz@i*4Cun zcBdA`V?i_xOJa>F2>^$1$T*(&tQS_<_GNDVOu`<<$I!~M<1thG{67f ziEX(<{b9VcaTOydaQ_I8xMfD~yWS1bBrgc(X&YFg(SDZe0End-K#qa423NEltqFFW z%rc`(!aJ9aM8o6~?k!?ExanzrD!!EkKhT6$)=u;l#sf}bJG?x2Dg$V(4>E*NCNAdi zLWmavY8V{D>I-C2Dt0sXQF4qco$pHfG^*E66=Mq_Q#ycQh@AkKK&el8G z(5-jHaCYlZ*+(PH29hm5Bt;EYcI5c-vp_@k(d@#`q zkvxbyD6|&i(j5k*9Rt1jZXspyru23vLg2^UPRH^i$B+Kp49VF=_JAlwIvTepi@nx#I}8)Da9|Wr1l#!Tq?TY}}zktdD$* zPVNv_3+GbVAFD2TKNi4pq8E$BC_AyGSmm@MsMt-|SgnWCj@uK0EKPJk4XFt`pt&LS zTR5t*EOeLowha#V?=+kjhO?h^&WHQS=Sq0eKIxq}+`nVedFKt9ZW@9)FiHsy>F3_Z zaj%-vl{<_`>g1GZOMmJK1D0N6$*ImxaS`Veg>cU?hcP{93_XH7GrKzlt7g^#m=N!q zJZL;h^XZtqFCq!=FMPTypr928R7x149Sd1af#Bii0v0$&Xhbbm< z%O82;yL#hd-jD$*Fe3qMzK!priwI+DUx54nWD~rk5X16KR%c}Dq6J*V+w1x*CW`Bl zFl!6KJu%<319e2pWbre@pF>FT{P|DCBFh2Mh+ISP*j;q^(G9alk5< zOLLKmPAhL+ii%s~n6*$Uu3&sUVMnm@N{3BBX(b6Q520X|bb`{hg|WqcfPO3KEGWhB zn4n<#CW9_3k_3ZXt;`(O-~3(2xsSa*Xvi{?>vx2n^s+6nSN#>j*1Uer2it?l?-C(q z%&$r|Sa5p#J{PTwVv1aySy4!dAQ&M-kW4dBu8pu#r1bETtFx3P+Ib((I;*vc+{Va7 z=&Rf(x+e*iE6${>{sL|%Njl9<&37Tu#s-ZgF{Jrt9PS#E#?t?2%x)iJcgWlSjv;LG z=z@TT$p6GVqIj|?Lnjc()9*>Vh8h z8v&s2mr0Q-FWY~j=XE5e@n=f=K-ySBM=W$97DWCQ<7NDilYToc_#^iNvAto}{vI$r zsd&t3yb>-99G7>;<_oRhKWFRW+WMG)9fS5@94!R*7wn$I<4CU`Pl;=%#zyK!<`w&l zi5IRRys^7w%-uZ3wm`21`_e`kF691^F?;x}&kr7NA{n5F6&1VNCF#d9Nhqrc%KK)Z zJRSf*rGkJklttn`olp*g?gMW3!W0x#6?Qc=%FbWL3nL-~7(ixG>9eHc%VR%F@+>V2 z{(=hXZcT|wS3qISW+nwN!ZVryfP*d+Rt-DJ@|2$5Y1m43_SgENes+(BFH{F>1Ib{7 zX(}SdsGmI&8*Dal7m>u!_AHRng6!PIN=*EVV(yZBa$*7$Vcz0A1}>%KgrrHjvKzL&d%BMG&~sy=j_Sk`&pBo|IMWP6;x2l zO>4&sG=ywZ*fu4H+iVvy~@y0dduJbZQgnN_w;=n+M}{3zAJ|NVkooHaY*Zs%rOS;DP ztuYz?{=~VbyKKKoc)`Ck7V*Mmqju>i$SnM90daX=da5h`&;DH)KRnuNKk9Xa1Uy1+ zz!2A%(w%PhSNia|Q504Dbc}p|u|*AmABlz-UE5`6VoYntcghR>LSpy%(>m>RMWem6 z%XaYVl~eESKasxurn22A2dneCa1N;WU&WXlIyB{I@3qoDjSWDFr|vCJzh?iy$4PY5 zm_K;TjvTW?Q3NQ^b!At-BVDA$->0jvt=zpbib;VB-T3ZkK5qv}(+X1)J!1GnxhE`s znb@tuO}2lV?SnL*nh$KVLtsPf&^9|<*CX2OC|%EMcSjM8`%ixVXks>ug5_n)_0*_6 zJIa;8d|c0nNi=FN>B(`70aYKf1k3xCy3S6kDt%Vd+b>B-Uclo$iv9_nOka`spU(F5G?Pow{3hutSTY)xb2 zp27eC|K%4u?8;8t{_Wo9`Kg^7-@mBSlGaN)?YEt8^KNu`r>)Yvr*yh=0U-9=)L-5i zpW11Ace;bJC%=B%FOTiCW%_c{dn-EK6+L2Z+;@BI;-2_C{)m!tf(=%gWV&$B{Od;Z z5_M45+qdTzop!5Ay{*&T)of4ni%$1u4|w0%D?RpV4|~pUde|p}Wq<&zaNlV3lTmli zX!P^ZK$5=7e&t?q_B-dXmVG(Xlk&OU;$zUI;K! zeYE7sx!hYxd(!SH9OY^m7xNY?SGKIw_`5=c$_DLF_^zj9vHt=(IQbs3t7FUs;UXI{ zIU!)?pJ4kA3`WoaJd3sG6Ztl@A36YQc}PSM5b2-!+*_4oXhkmywJ85gj2PMowoFum z5O9&?uu!ccV4(7SH!&{ zFF*NE&4Z^H?(#PdL z=01Vabq_46T(n2ar^=t4`>5Xe8^_en-#a!6@L2vW;aH0D9hTXlu zf;})C{cPCo9_IC*4MUj5?(Sjt^I@o5ez|{`S3v;c;s_l!VAQ@h3QC=0$rK@P zM@-Z17$RAb@-r}NQKW?llrR{!P6&9e3hn});g53Q4+uIUwzNBf7I#Dd zarqKomXHblqwI2JV8R|9SbF5K@uzc=d`w%TbCR3cASp5`eHu~dDdM7cGd;$vW?wS^ z#_ea^6*vQZOED&xBGigenf>ZGWaK9%eG$JH+Cz#?VDaT6|e#AZ$#qqRnZQkCU`W zbiwJ-Bx;4GeGw}>k^biy88V@fkqewplj#WwFV3{&--~z91*p1!d9lR7IPf_%3DxgXfdv7VngRs`B-EhP2`e{?0OM#Rvm0&DNwE z^IsPg{mS7CC}Bxo^$du2L+uR?T8l^RnJ1W*bq)DA0D+JjIT1`f9)nzh(Hr6>R*M=BYuA#yFDr=1 zH-}CXbfs58kgMEW<>M>8ztCp|(W-u0Ro^4dB}H1L9x|`ZIYoZl8Z+DV++{J$C+W3f zJ2@2UvxE!v=2Lf{_b110MI1lp%xR$tudoD3%@Bh^xU^z=g4k z!6hX;O$Y%ioqoui)`g5XVZ8|)VMe=H+Q;ORUwC`eV*u|S_x>?No}KG6#1P~@K)P&{ zSvyr06qAg#2Mna97r7LSRX%r89BEQ~u3Cf#1|Q-rOUJ-8Yd9POi{yg!Y$s((0u z%dwMmu&t!ss}VF;7%+VzanB~jJVT}iEB3xJ@vvpLVGYewqR+AZ=^8EojQ<}y2tyap zXPUbPyQ>Ia$Gx2$;L?Rym?{J}gO4fkb~vz+;R`+}qdS;YE9L3;18*98{;Hlce zcu&bKtDy`b1``YJ#;UuuS}Y-xQ<0S9riSIpU_)37*%H5;;#S$ND`jCj9?sR3i0H4Y z=Me`2L<-_YQtpU3DIgM+X*z%yA-Fdk4a(wFPf`P$a$^E?(U?X`Ho^csfr~X5(?KIB%+jTFDwj#iBvGt znu1j_ze8pEofHyA#&(F3Fs##znQcvzR{3`X-}NM%eK`Nar2BuJbk93+t}5a%5Qu*U z4F5HY^Iti(%w5=#Kd;p;AgDA%%6D7s?pA*%`N@ImyBl^(!)|TZa}9gGVHY**;)Y$@ zu+>=zAtxMBOZ*zy)TqhV*t8v4>!zq-|5-ipNVAaX7Uya4Ka6jF?kJTi~s zlqaHgnMdy2Gj;owvo|a88x_ua-91sar=8!Y+VV)adA;K9uY;}K>y_xViaS#;@elkK zoRDz4OY$?rrwYD0q(T`xU^BSt@hH9PmKkcGx zs_r{<%DHQ*(PI_&FztCT&54d)_>(-Rr}=GZNvuLwIunTGhwF0aM);yfcF(GOIF|yLr=uWfW%% zVA$Az-^V)IJ>QCn8oBkI$^C8iA~co#swMeNi@TUea%F#g+1*ffkG0w3ZMN~e5nnwS zKu!1xuv$m%4tt zuxbH$BeGSzYuK5!Ln$U2;9>7}U$p==trY-btDz1|59`*oWwYqt&I zynnkbZ?|v;X(V{uwYehk-diIDn1E-W*yc$(!mf%KNg7U;ly(~i9`v3c3b=H3z@kYw zM+zHK?PBV*3(v@%im#`CqZ}`<6whjRXSZ88`|nrcODbsH6B0CMgtWtv1I{1Ye=uWDbAJ*7x!oPY_K?2(3hy5UxKxQ!rxYO9^q8us*)TJ3m6CO)RszOC!w zt#+uc2etm$ACw|@Y%5EZqE@sL6k_7;@K&0^HeO{fMDX*;=s1f`GZJR)1A@q4P|_Uk zGCUv9vf_UTxyPi3?!bFH`E5P^X0ji=OpqQ)g47=k@y%bk-`3g9AFbOPb^Bf2{X(KY z+`1!s+`D1!BR|#8ZvMR=lAMMump8e>%@^Gpb+@cx8|v=Oy8CfGsHNuE!YETp&0wUJ z#mV6xIR1Mos~PU)y8WhZuM)-)Db$9#pXq0C?3ll~-qe}g33V#=W^pu3+L|E=<@^#z zSdtI0Eav3LkX$sfm6c|cG zIFk-H$kRSz3~qK*h8Zf*bp+RJBg=_k$;Lq;^vuoZ$8W;skyC4yTg+a@zRL7tq|Xgz zFgR|JjG?qGSYmskO>X0MMoCte)(64`0#$_sNfL$**)z041)dXE)80{fC$q?s51P~k zQVA_9e`rI=mX&X{aGAQH1RbiFqJ`mfXh){}zlKXgpUNFIgRpyv9XrjAn+9D|jjr7y zUCq|g=Q>h6fcNh6FDn!jlmYCvBSP8~cWfm&p;AA-;!dsTkyF>Q~gNvOxZnJEx@QEx~&lCkSiQ0V}e?lLq_RQ z&{Zq!KaY9F|BM{g6C7{-rfEen=H3JAFMqcwh%=EaxW6TZEPQT@$A)J#Gv_aWD0hTA z=n*+rsKa>`$zpD`ty)Trcf#>0e^NWcm3w#wLEuFMYYG(=0=hJNB5HIvP@`?(e3Dz^ zpsq#P-Q#kn&djfvZbwe1o;tHgGzZQdZp6)WGyME$E5Efs!qY7VgCXI)ynh$gN2I3* zVo79$FMGJ6Bb@@N6i;YQ&Bl@%*&S-l znLy#jGUV7JL^)CB+tx9Y(DqfBNj3ND%uO6TQDe7fxW~;9%q{m`q1hmlnuXiSmWXuO zBmMT=2Vo|E)fFxo*)+NQyuX5VDAH+5K8X=dC@Ax=jfmUyiWM3o<+UOo6YF4vr8Oc< zktag~pr4KtMiKN(3a(?-1N1veibTF&3?LXI`6NOqC1l5Q@hUfSrOS*E^fe34eaL?} z@5XZvi!QyD)<-u2dl-NCXOsLbgh2}7c+_1b5SY&u&Y%NMo&;s;020M$L>nx|M@03? zD+qpmS@f|D-j+piI7b_x`0JGq#P4?>0H18L3(^t=A|hfyd^Kb%S`~;0IVt+P;M(yb zXGOF|EG1$tC*6Ulm{>9GjBSZ`m9rprGni_cQ>5)fZVBCm2&k}rgl^jWF1gzky$i!E z@9QY>lU)7XL{H_B{E))KI{Cpuy~-H2=Z=BIW&L62*03uZ_;d+vR+$;6 z;4^aWl{2Eu{a`4&2%=M;n_C^F2ZmVFcVM$*!rb~Oy-2Ct@dSQ`#HABl^$G>0 z4mul&yc-cs4MZJ zeqr`7anGT@kuKeXoexo`L8vb}5{^<{r^ z!S*rqgG;RsPHoP^N@nF$41 z&OMSB4|po*2Z%>(mF$~}@B4(UhEIqNL&QS0Q6lJJ;5H0hCXY*AT;{0S_}&9%U4Uc!pj%?dHl*qR*h$ z9i{xZjg`CQF*MR45~#Esx}$trkb4Av4_NvufrV}=7)`z&!hORirtB>21LEt z^YVRq_Y3xE)HTycf)OEjZD2X&Y%i+Z);@#To?mKPfZvB99Oi=Bk1o1f^X?{Qgg=N7 zYC&y*#(=DWc6HHR1J1H5krIGc5$Ym9rMWHsV6ZJ-dUY@-fkYr$cpauV#v-T?Pe&52 zzGE|h8kH>psRJr-P-0B%feYCv5N6*_v{4|Eq=j=3| z;|CZ=nOXTNn^3|1ltJSskf_hcBf))?vY6~P0WOEAC)p%qB1KsZLDxWE5cZGvn0nsT zqS2e&ap8AC3;PlRLYELDfIo<5*8D)!UtJmM!{?G#OE&<9BGCdP6pBKMPetaoYQCik zzru_oGwVR2G6l-#5QnMxAOjJ*UEIe(9v@)Azq6el6alK`thuiSpfiMzbVO~66CyUq ze!7g!EA$hhaftG$(C~pe2Wb#8ph1o#YNg3touiU9_73&a)PWcayzWsq0zZK~bD4Cl z9WzB}lx8I8UXz)n86(i!>3n@$npX?=g?W`O@{YETfT~v6;7Un5@qpz#9L{ax)9VeE zr%+cH2OUc1=9aax%zoamyJY=SooYGJ_I0rjZ__v2|AeMYnZ z=$EAinutlqLF+iQ2Ego0c?fW$4MeHX_8erRZ9@@LS3WsyteyiDpk3JwV(YVc7VV^>9bd9<+9d#l9T5}kE1Di(+F}>9R3{V?i)krT z%5)emXudSsGTSP^#i9tLX2Rl=u47E zc<8*X?Xi8Q*Ya$W(#C)PyWRFC*8<$axOssaVRPh`4sLLMD{$0P^e^SP=HA9OG0b9E93#LBt+3{1{MwXVA)pqxrEqsobm5qz9tS-2gFeB zFUmq$u10&dhVh5YNf`5?+?!JpM&a>phKS{eIoX7(k~H{CFZ2kz3T>4J4rwqq46|f~ z*p5!jY9aT-K31sM8fL#Dda{bKv&iRWnA9#v!Xx|B2bC(-*7ab|6FmZ2?0lf7Nynjc z0U3xK2e2AVa$IyAwE;>rrb(*VOp%z8PIaAvT}4pag}XkH{^G`jI0}fWm6TGbQD8JL zx0)Q)b^{hdm3y~x$04^S!v`dQz0hU*blcJWlMM5Y(yvkUN}qeO&(DzkBfRW3?(!*i zl|(`?G0|*3o$j9M+8p9u?TfaE&gzfP@2_kX|FSQ+Zz50y1W7aMYTkW{9>I8QA8oDC zBA^%DCtWKTCCs!o8JK@UkP4k>?rSM&I$98V~28{yz6mpFP;e_^j_^SnZg8of*<^ z_dD*LKbBMHVf}2yn%?2&>=zvPxX#`j*fE7q6Ruj4EeLJEEKhdcK(`^q?!v5Il`jsJ z_o?za7>rFnaZ7V|52erb#V_{R3u?#3W;ac-@AlgT{hsrg{dPvbdlGtzNQ?vizyVv{ zfeAC*eteFawrZkjy_AQ&0>h!8@dDA%$W|;uL^sG@Av7~`yQ`V#-vA8w^(MXo@PtE= zjF_Lo-kddf`-uhvtZf3+KY;fZ=AIu)_wSDn=(lh6(}~a8%l&p^zunaDIj`=wYx^g& zP`~Q6SA+>8d$!k}>Scx=@3lvCUEgaD>Uv+Vd!gT6BnJs<);Ruwx_U)_6JKvdH(@U} zc9WIZ8ZF5>scO1`Pz_8zi*hID>CR7b~E-GM{)Ce<~8au(GEaBQQxCMXgMTDWrWVD&}{m+;zk0z5VWie!E{Ce3Xt3*{UJV?zka%0#zu_2rircqXnJh z2-XT1q)K5wpnsdUR_XlgP~EJF>P{a?uO4u#2kct1%D9^bZ0}*)XPC2leF!oma0k?q z#lhNCoqF6G>eJx91BAqc*Q3!*RTC0u^WHi?KP4*&@!U`Oo=LrT#GV`p z2vx#9;^7a%;M+m{SP8b{Rfj0R19^x7PU!d3{b*c^`@){7MlQ{2ZAX$pg1)SwSayhF zBRnQA6cFbDYrSehqEkbs-`fQtp+%HV?1Ewp^tX1wIk{t|rB95zr^hLjq$I%enjyPu z$auENF8y)+8b!B^yDPYhW)SnJJ#2snj@cn&5VY{)@mxNh;jSFod;`3BJenE3HXgq@ zUfCx8!FY1JJNvc&ojg6kfX@5=%=rp+bGBrWC$m3S3Fj?zyUZ48h)P(Q)N5~pXvcH+ zO{W2v()dTlClQ1r_S{HD5RTZo5t{PA2vf`T?h(6F*E>d-qjHth+$aJO{)Rp(m>ncj z*3(%?PV?$%O)@C@BbeKCXe!s*{53}8w5~M(-m)#ytH=H7al3Y$k-dE!KICWPwtn2! zjoTgL_TzDP_c-QJR1nit*LmxB6IlC0t*C0l4i#jY4I-{#wHS6N-V!Q#zeZctCt+kK zHqt&86(~Ah>*fZXLDw2m%3QZa@zAMu_*7dlH9B&tZK$|?&_y8FRnHJg`V--ZI}e!} z$XM^Tp#jXpjMQ#h(;kfSB-Yrde2>mZU3xY zGtGWG)wZ)+r`gIa?C$B4RgY!DVACX6t^x{C#V7RTVZ2TbM~D?=yzt?!2t*-;GL% zCnuOHCBCe`j#b$&>h1{L;f*e3DIKIB=9zFo7|384rO5GS19 z6IhTps?kxkmhCE?)hrM$@wCBW+EWLjWAP>L$9z?U1vE>y6%`5>Vn zPMy?@1i5cYEJ&^Zj|c%8Xe!ZF%|l#Jv4gKeNPONVPNRqWkzF)4)4_*J{#Cw{SdTdQ zh0uOwOeLF#On)NmT2h&ewa@}gi>+6GDdJ~uHbiGzuNh!ZkEA$11~lBw={a}b8OM`zhZbL_%7Fww*up5yoHOCD%x+dc%v_ij4| zH+74s1%j!AeN#zrBQ)%toY@0fWo^PzRhZ?GOoEI~abDO<85*Pra1!j`!`dp`$Oc)T z^vM3BK8?v5%$+(9oC#-)94jfk(h|MY(xGT<^n&mXAYu_OWbUBV3C6|wOz!2}4oW5+ z*A5B*3=@8{={Z|AnTcHLaNvfZv}r>UB`+e-fSlKpSV zZZ3tquVz0kMe9rM-cod5DIqT~o!1aQRf>LBa=$6r%cW#Pmp$E;vad2ONi^brQi^_B za<`SDAC|OF@~pQx?S}=#tYPeSvusf&9Xp(XL&*@Pn_XC~2oc{&xR9^ov5e%kK+j7f zcpo!yl|DgpcN3Zg(TzWFFL996d<&YtOEfe*>F*ib%MwauNPMIer*#EfmFS|Eqlcr9 zqr{=@0AFcfTbl-}gyZdnNqSQ{4#ZwfCT+5?N%ztXZF;8r(%Zf(#%*$~Z(pJ)FZ{R# z_NtWzN{iB)yLCY_)BSR;-8>hgxvBn^x%NX$=Ac4=#u!a{T=fsmwe@d#rY~MbM_PqFr+4fLmmrQqO=}+5u-l&8- zf3{sTo1u&B%-MF@Yyf!GZ2OL`C(O2EbvU26c^Hc$>72?qWVRis>+;#Qudd5xyQAmXF`LHXo&NrL?(uo?_0#Q!=@K5>WAogT z^Zbp|-A&WkJ7E=2Na%|A#s6}idug6@RV0QQijS49Tv+99VaOi@{dz9fZ~Mid4@{SnxB7i8a9i4v zmaS3BY-`&@?{x3*gw5&R!EN6Q+E_YsJFs7k<9B$=&JAFQq&yIK^<0n8QE<=%aMzUSYx!H1dz)yrRYh)D&XSC)nUX(&CQvomo zjzc8bQvZK=OMxJ#5yHRaqNXS+|(>mqU?6V4}ORb}Yf2;#B}+6|huM zl!@4I;qtZCOY(u-ev4DwU(rs6Z<;caKE7e^sImhVGZ~4t%p>3ODjTa!6AxB}XFh*% z@r{LR+|mlHfzwVi3X8b=?^xD;Ref3 zYE+L#r?yuyw{~&yh(*Dp+4gR;{o33CL$?1A74A1=2QPAmEK0w<2#?n4n}f|+n~}|0 zFZuR(QjCCfxr=HXKoa8ipmt#X5Cj!-w=OQ8xLN5(4%rHoe%O#5y~rK2DE&?-{eYoj z?ykkfGZt+=PlpWJ3gl%B%K?M7zoO;uH)wn7x@^$i&^#drTDi!rT9m#rP<>fb^+$$4 z?FzH<(Bk6v-ZBvv)a*P>#JM%QD4U2gYj&ERoLaM$x}IFK6LmeIX6Gz&=PpW*u2qjx zbof6~~ z8531SwDsoV;*S>ve|5P^T+;BzjM}$H>F4DQck80!PZr_STs>rz<=4lIbD5az0QA6= z{;nb$(VAP5tvRsCM{)-&Dc;+h&MXkXb%S%LW|2SH`|pHAk@w8EJLlV7^OIK=`BxVaI6kXXagNBiov{iy zAWR_FF#!c?cY#IFYCuwj9blD>N|$ljl5~TB>k@eXQM+JNiu@lpa9>FFUhMZ-TmzAZ zPK~Q^65Zk+9{^5Fxc-||Y$l=Z5r$ck9=JF4cG3;IBYW+f#dcCJOvFjOc6_fL*&C(R6Zy%G>g~jH|L|TnAuIR*jbUq%Q>apK zL)}O)kIqVqsQ{44shfUg|1&{&-va-ga46Nllr9d8=)gMSl|Q+pa9VGCW^Z(Lvms~p z+O^Gwuo{eC$bluAB1(!^t2t-)cAnPjPp3IyY`ptuHa2xa!7!5(O_KYsnuP90O=3My zG>N8Qq1|kdVrH+Bhgvarz?P&&$8ZzSM`$dG2_K==U+kV-Y~dU|vDp7qQ&MFoMjs>f zM={z0sR``@hDF|ly=<+$a}6cd-8rO)j~{TqdAooV{un%d)i$xzkw1CB ziup4J?BoG|@DhL65`X9t|7vIT@PQ_@?o1s(>r_TKzY)U3N4Xysl2#0a2-or)1_an(Wou17#ZF4_42dgh z;?k+1U1}S3VQB>{vPu4tqdT`A&lh)pYO)fnyS*tg?6PUdemX80tIa&;h|yQ`F3o@9zrJ8&RDU3&09 zvvT1sMTnsCJh_2+8iYI$A95*9Fg#opjjx2simEG#^!`ApcA9f%0*SqFx5#TItcWES ztZ~TEk&$kVrt4Q>b>%T`rV5v8?WA(@h;xrqLNrkV6nXYl6|)t-qBBUr&Mzk+5Ano{ zl;XxVNVwy}83h9OyM=Q>@g%GAK$t#U9D3JqVW=m!U%U2ccS>7&ew!7s%qtX5E87WW z5>d)DEU}es#Z%h~)xKM*d3+6CmPl_(7)C570HoX63b(gaX2fHmm(C3{QaY4pqLY;H zU>Zd87BolnxQ^Xn#f=eAaR@(e^@8ymqM~mKv!o=yQJlhJJf31LR*1^QQh|tF!s<)w zfM2p*A$ME{vqn0xhTD&b1{>9066G~@S&BBYQFBV-RoP~X=Qz8A6%()bbJlrV??1ba ziL0)%++96L*5$u6-_O&aI<8uzMC2oX5Sz<^$F>Vf}PE*m`=XvU~Z!YqALTw?vtr4yugBF~1 zL&6{h=nQaIAh+BYGEhW)nOiKz1xT#k!GNI&*8UKaSfWsq9U6@EtN>3#!VO-h7SzKB zbxJboF@nnfvfW;7_a`&+4jb!L7OlkKFKUlVl?ffwR)8tE0@pgo$PPVCqoot+7{uq{ zaFla?S-x{aV#`3@Ukh1n8NNUMkAi5S3#K)Tkllu@eM#2G7B@}a9tjZ#$3g;zWj3J3 zyS-x8Mo#e#OSY%`aK6-;i;Cywfv)rNwi8b4`S0bMi5~KxNi7u6u(BW`6_p%<%>-GQ z@}3}grieY_J%#=Ui(psqGi07CViVh@Vhyt|yJ$*V)-(*GWl33MHv*7Ec4k?&gMFOJ z;nNc0K-3hKj$BmYbI}0ygDDtdxErT*WW~tFnqrWlsu*}_Hbq9C#AY<9t=S|(X6pM8 zEoj}CJv!zd8RPo~;{gViP#fK#MCZgO&gEi3c0u6`+9j_939XNp;`6^g{;PFt=SXs8 z87js|SN7oGn8{!;j61XVtGUkN#3a=c8oC%)Z1n!~s6vt4}n-v9li-#!s7;fVumr!DbY#*1xxTbO<}`kd|I_KcTAI~O5?p}r#bP>*46`B0C4kjQD_ z*)DI5i1y>Q#(xE}+`Ao^LXvw2+PssnP1D@DScsu~Y|oDs2Mg$26tx^Rp<*C)=4)hc z@8>9|-zZT+DS87UCPN79vgj!>FvD>VV{a_x6}AkIg%An{$R$cW`Z8?oB&3pGJid-N z783tw@*&?f6tU6dBa&gOBTZjIm`EaiZ+_?tykXhpHa{YH!{Qb=7_&shq9sE%%vDR2 z7T8#{1?z@|=fe@tOmGy@dwGJJO?q!$w3zouS?9yyx7=95l4x6gSz=rIaP+)0VhOu< zw8FAPTH*{Y|G+}@c}Ks4ZC~8gy(ik$2!KE7m)$%;UdBJdTNeGbeFPZ)YlSOQ*s|K+ zMSp95=l*u?C+zR-6aMe}=Y{}c>|cZsiazv=^K44?%t#I_#@&_ttMa?9okc{kj8AnqzI8Gf>C~bw9PuKA)`awI$|J9!zFeVj{JG(!@#it zi6HwGu{$m%xG{LnjIcz+2oX_>c?)Xy@LnAaVk-?|W7g&bgh&2FLL5(96%%0CogCXK zV%OB8a318z=FhWV35-mCwRcS;mGi;j%T@()QlUDsuS0Mrl{)D+>V=uG{PGC_1+UUu zYUJ1!5`9Ou0#dYbw-ZC!D?1>K>=Ild-S$9dNdrtg5r3P%$<{J~usKWua}bqn4n?ZUJeNEgq*IYI5R*c-D*8oM z)gok=4~7YOR713Sv}XrMOC|%Id!)IS5md37qn4QMf;rdjfuJcXV0)$si0Eo5PaM?5s1Z^sQDlIk{r)D0D8^`c)Ym@)?Mz17?(z4jT}7di?4TO#)46jqDCt zEiJ6^VR}~Ksx?IG$J`(t37*Gt*@yV@@6O!=pUA?!&gwrfn_HNLhmuSR$=BD!ZB_c4 z$Gn;#-xNc`s|W&u_Da4Li-J`Ui?9%^iC0-Uv^rVIz@03AKm-Db#$7{40AB%HCF6gP zY>Wmu#>{YjPdG1>fn>Daau<>wx{-!FwTf9nC$*(wVy19%+K9_ohWNC_%}S>zdnCU# z5G2SuOuAOY6k3*%Hgy~rK&M6Y3kaQJ>0Br5rwYC!n&XE+%7a93_IOJW0fe@=!6!4zp)ip)S@5!80bEy!u}%@1#MKhYz;ZCZ8YWh3SjbF2>2V|?)|@FPOHFW; zO@3ddCzNP?R&IS7|0o~JjDu# zkmb5bqZv??rQEZ{DEBIdiltgM!V3*GNP@D#QsD6NgA`Cu4u)v35T3+(Qq?xkGc1yd z5+Z2Il%`42=RJ#iq=+-ZGwltOtgIsn*VG&cLf9>%i>#&w-w9un7Xl9X^6(ekGm7<^|Bvo{5fjs-y9Qjc##`v$bw&IByZo zFIl*B{|V{fn_*)TUfg_#2JH#@DOuBM<5!Ly-&DjM@!yi zyAwEVcmHXSCg@U>66-PoYY=e*QAfMIm(NrjdGC>2fH?$MEmikHSkHSa>GKLsJhM!ZpbUm?zf*e*1&$H&A zVQ2$V8i6r(g)Bu7$*7%@xcw5_H?if3?N2b#Bzh%|UMEqt?Te1z>HIn}5S+#c z@)Z3T9f?DZj*vfH616vn^l0`j?c|E5_YnrJ0B0Ac@a`pE5Tz_q9-DAtN7F=+I$B~t z1v_4mR{@ej;0(nr>QH8runn;lwLs8WUaNSmZMlXeu{NK4!V_)Sb_aK;D4dE#{4skj z{j@gPSP_R+1%$hRlf8_Pu;E_0muYEGzaOFM8DHZZ4oYa(TEEH;bN~Z|*<1Me-01lDQlCoZR1YJ>A^# zG|kR7(#UW<$=oOT3IBeDP&rzUjxu+Ot`{5fdw$cWpNxr>@@+*t@aLI<)a)`#7nug_7`CpLe~ zm^TaE{JH+R0x`6ALXTQs0o`IzzPO(;D{a2U@q8s%n zu351=KPABgzt9`^E23Eu`Aq^kD-uH?VY4U>R8ZB9&5}NYEN< z5JNl&SJeUqj&ZcJ`-^QutnaG31EX|hvSPgB4w2mnXd|P1wy+jjO@NQ4{&qyA>=nuEb zp)CIdIm;M_a`Z_Al&&OY2hJ7ifBz;1_c_xXldX6osjX+%l1_!s% zj~bj=3p;c$Xo120)Jn(MhjVcy%OWb)(;D%qE9DT!b3sKMq_3B14W1>r`#{eAHH(;CwNy30Kp~U-=<|_)_~pYW4jo|Iy8@pSG=%+C2?-G5P-M6U2Q+w-!k!z0_XDr)d%w_ zEszrW?N;&rqAdybkzX5s^8YY)9sqV!_5PnzX6DZA_inG*-6Wer5|WUFKq#SwCMr^- zNfG2(@UK1_*hoSZ5m9NPlF(65u%H4;A_9t{An+8+GZBF&D2RZ)x}+RjxDK<2&%WjvBPO(@SD#EAh?86K10}nC|he1@Jld5K<~(U z$#s{Kzsj%lNs7Xdijh?cHw>!AirFp{0pE#(c~*-ab=kuf>_fK`dq7}Z?XiJ-TDk#= zoBxQG{Uqfwts_*IgoR!xWg#n`l}_L|;HQ9Ukx+0`MJhvWj3B3+q{)+24bJKXf1k6r z1kuT|y`7kTP5*dW`DCF5m6{Y=GNpymN)F7#s+!GuIxJ~RN zW(x8M9sY#6WPUCaT(E^ZJ&tBkMn3`%N2sHG)&nvZOUZokvYrlByN)eq4jpDcK)K%2 zdK%V7@Yha@3M>lx*9SaU`Z$+1(lrt8pfF{C$jhg%+OWdtOJXLZjY0%y;O(_$pEU+a zK(>ae{Snbp_23j=Q=-K2NJOto4u z!a>_v?(lzM6X^u(w3dUFj@>H7N6y1H3kFNAXv&URfriJGJk3m9Q?G$;6tk@YN*0TKS5j2X_> zWNgtm0Am^qpllW&f%urA-3i&R#u@{=W`A@qV+0ThAo*8_nnTh0O>PnHoaXa9k;9{Z zYNW*71I}>2P(s){3ATa2iT{MEnC1bdSb=WJ9I_$N_o*BS>#uo((Vq4Sly3)^*#IPl zKa|wShRp#~A_%aBL+lZ@NhF)_4GQiA!Scj^w2lyDX*Gp3mAc7R{EjUsKahdnH7sM9 z$N(8__Py|YNVtSFjl0r7P%L+IHbAetVmK!oY#KFR5#1nkK{bL%wpVB?p-X^;fr{bw z#M6%*F}R^v3pP(0a;Z|RZ`ljAu?;jK9Y7sOj5^m?WJL&l80G2FPg->_{Pno2wT0$y zOQXPaVM`@=;my6mo5@R@5g<|GsnL^3ZgD6BDi#vgAiakl_hhD#UfSh@zv0gV)R>* zZV(tyg7dM!VVF>%YRT8~YBNV>(^Uygn6%bGF0|-9LSGE;H)VD79RujtHO7C_*gK5> zzVY|5Z1@%Q)*1&Xa&ntu1o5GCjMus#-}rsY(ls+PPp9JAW)(NteiVET=>zp%Z#+_o zs}0j9P)8M*{Rha*H zt6;TkJ8<~@Jk5e|=42j!tADe7lRw$M!N1GDbFAZGp-IuUX~%)TGMfS>uZ_+6R*$aI zrXbOLl}rzqT0l!Q{18@Z8)v^Up*ZykNT`KAflIb5@XowInE{HfgaKvNAcXS*t4Oq3 zQ>v-;?3F*~1?Y$wyf6q)J>sX@QRO((3oQ&wn9K2*Y~k3l9nluEWpS37S-h&H0L%?K znbfrD8jAhA`5aWSHz`IBrs;QBN8p<8CHC8iy^BT3HwYW^xtMlc5&J7+dsXbOjqP=@ zzclujf$!5&d{5%<97~uxFrksk6-w(0(9lwG2h!Ns{XkZ9pS1y>$9 zB3!i=!dBryNcfj!(G-Eh!_qmBf`Wd`fVUW+=<}5T{eMFZXrC?mKNjutMgOOw{d3X( zU(x>-$!9udEI$$OG*2Lz9Qs)XTNZq8Uhu`lDYEC4{6|an0^&lH>?cb8jFLZ-hN<9d z@SkE#UMTa_Z_5hg{`<23L)ku8_P;Ls$B?mVOxD)Yub|mx2ES3YU#i+K=XQyj!A}Vk zFR1vBlkK(QFRs{2D*l{`KbH`u%;2q6|HZ0=l&j5>05$O#>;$MmAqdpeHv`&wfSU7~ zDd_}M=gJ022`tG7a;VYh|C)f0_UAQ^$I`EA{?|48Sj|6N^N)at0+OmE8|wbAV~GPM zO@N)2=THXhbdgK9#a10C*a2r!g%Y+;gdIhJP!B?68Coq8bW_av^Ct56VnCi>snf2T z>i*`sy`}EIQnz2N`)lj|IuvN3U1NqhQm}4BocO&{@ zo9Y$^YtCs<_wt4h7VG|;hCR38|5o>ZAFn$QCuqAjsXHK?MyQ+LQ;*_&%Uaa?rD6Ne zH-4|JnN^?9U&m&x()?x7b8YEwq?^FktZ9GUw2vvn6f_oMAoR?k#Sg2+_c#0l4f|lj zlT7B3hQFub?@B5LiG3c^beRfnCIK<@7nC|Wzh=mV#9j4N$bDY^gn3Y`85|CX`gNSbxprsWXeYh7gD0=)@FAa!C;#wG9saW&{tEor zwB%Rzrhnr>Jo)!t|F2$B>-rUac4eP`q1V4ia^0~eJTwpn zx8v>s`>g?mtsI-uYx`-(<^BG%{q~A}e`UYDs^5RI-(S=p+VSlHe>?3cDt#ejW$W;9 zGx`bKVSu`;MLc~*ej66=jjN5l#`uekM*}ntbz5Mij_7GENL z*y|Gixx{`x@t;ooXIj)kwVx=;qMRLc?^Oa{6+rw`w$pC^yKejYZvTgF`&_sGb+>

-A8kMw7^G;eYA^@mip+8K04p{=rRsq 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 z z>fDG00>54SL*%Z-f6-s1i+4os-pJk)MfXPP9{lj5aF~~i7DWt|S{T_gqG(~H&WO~b z?2`7eD0)0nk40*wGB+i9FLemrx`!O+=yLqnOPBpDXl@le5a|bbQ1nq0eH^KeBK2Nm z-;JX8BK2;h-iX4YeI|?%nL zYL7eftc!h{7*z=P>gQb8bj8!oyy#+ohmk8Jz@7)xmz;Ui#r{cOIyWyeCq}XF(U;DB z9GRoz*!TQP=N86*P3+(NOXnVq%rjB!N9jxFUX9GVQS8U_OXuDq5>*uYaUVISKaK)s zVdPEjjm%?F>?d^Oiq&sWtFM_(m7&WofE|#M80%xd1UU1Vh>Cs=THQ!Ss=GW z=8otK3;*)S{DD5j>FAynnZ;3@f~-)!GB^JBjnV(unWLlFgZ#+-30A8Y2JRlG?iI=* zQ1`g#Zl~^Y>S1Re8kzP7#oY8h>?6H&Bc1enUEcpnr=_ahMcn7{tYA4#!}}I_^4nhij^^qGWj{f3V@i~(|4C#LEJg6gR?0$T&#@O1{@~ouXKf8CYwf1!T192ih zOoGW_krlOma2md7$k9Bq7D9?`lWzuNK-rHR=EWk1;3x*A=|z*9o~>8NKnM+xYsuE9 z5h?@1qBTGXxi&#EsE-QzT^~7xg#8-`#<<~dEj-gzG&Y#H;RG{YnQ6mjv^LZF44GUi zlYui;nbbDbOo^sNk~L}F%8Y0_%+K`d`fj}rOwjDc(MD=xwNWxNg4I-;*jdr0YL?nG z-aOh&Z4RCNZ{b#5TLxR{E#qyXt<^SaYr9=UHgmOYvO~1J+JUSsJ4HLHoz#v+SPDau z*WxbG&LZx$yG6T7em%QKv^$Zecei^+UsHRkuSK(?z0~Z1z0B;G&t$J~&jC`}$DB*l z!0u*`n5(JnYIckHJvD^LF?Xc4quD9uS=6>SJH$Ml+O}r9nEp@`{(v4P%>2M+X7iZ- z)4Hjd74t^aHZe0}-jUiyX5*N*PSo@b%=**UGc)?9n;9|V!nt+Lw3v~?*kO_*RJGYB z!URB+|9#Y}d*`W>G=1-uu4$c~*CQINgK#soNa%P1()UuYRr9n7)jrD8!(Ad0n1N~1 z9Kx~b9Ws9;LLIz{*2}U&r~Q#goADQL;+5DVHDnNiVVc*rm}J8Ak#>VW;7_g-&x>A*{J-Pc6oReI7aE z)Dv0#WEv3a#zZYmuw@AJh0v41wFwdKi@}AM1cetTjpz3=Qh05qPi@1V7!`IZE6kxt z7MU50j8LaIDbqV=dJw{;+S{%Ci*GPeLd4&%GUpOb0M_u##GT7L!!q(hVC|%cIn32b za8x5ChJi$!n3oQ#0R5a<(Ak7u8Iv=Sm#pwu;Xd^XH1Do-k^DKUmVdYRg)b+4n zG|@b_!!-2K-@vYidC_|0nvyA-*N4|qxTt+D3ReuJ6&F}P9>i@PFS=$`^1QwEPPvUdnIK=P)OPCJWY4k#9UN{0oBg6m_ zu{C!M%zCKlwW-i1c`)RQ!vY()#Yqb8g9NeN{ARl93a2zimOa~U&B%#fP2w3cdSyKW zFdu?!=Nf!`5v4_XKi}VVeeVGCIP)H6Mq<&Rbe~wgQ(vtHLc}C9!#@$j`8}qcouv)M zH@F*{IM!r@U32}%7x6; zMe)gIL1^;{T>|1ijnpRyab)6KB=SCXyO?gE1|pqS6x-2|sJw3+gtr#lwT1ASf}%7U zH3#q0Vg$Tq3O@vAw>9j#>_~%pWu$IFl@36-ABzNJCZf@!(!`}k zU#fx+REQ&gO^c=R_YvVs3>anB7XlL(Ie4mIkPc5v&~u^)TbG$EWae~b9xaj(i;fWX zJ6&W#%gDw}C&l!id!R;HqIX`bvCB{G??Z87oKxDj)i2s@Gk2C){&y8yWzk}%2Pg`G zK)1!eE39QJBmRxzvemqRw-Th0$&A5OLj2mh#n?56;T^WI;Z|am+UkF>ZRXxmd`EF) z_1=<~)w@bfU#W0fB(pASHQBf7J2N)(Y6y_CU%~|jlP6GhUp7$-3^8> zNy-pMtOaD}2~k(1pJOv`l;T%bKlVBQ*qI5tYmUQi0-7y?^hLf=%X}h4! zv7&jrsGr5>1;srfTg50<^3&mMBuiR|BvNLJd5%y`BDEuXiy!76`e9~(8SJzi>+AiC zu`QZYV*lM3xk@XK+=3&?oP~Cg<^Nx$=*m(;_AG%c-c;AFDnwTo)Kvv_eF5}zN^Z44 zAk~I*ofikp%c1rj>z>G(>zJ^VF;W*7f~yL#|M_ahXsKlLxuRr#Q}W0d`p?t!TljLa zhZ&)T3z%;EZ8NKfc`MNY^n^oDmH0ErW`;eMc@)4Z0b!F;p$mH;5T`0ZEBi-3yM*Z1 z2wTax$WAd=uT-BaHCIpd6l@aM7^75mkw_%M%X>xSX9dquHp;V6I@h`E-tEz2prSkM9(eK7W+0ty1=}w z^v1a>i@}Y>*xzB~oW8rzkcX4%huOSFpkx#W9^e33I?fU`b)??QIzpw=t$zhw1H{+C z0v-6kx9HJ))8bKw1pw&k5v8`#8;Xa)eaKP-R=^Y@`WhMcELLS;C3%*&09ayvzE~XG ztG+DyGVx{V^1g+yf8UoABuCbq!v6XIy?^0=dSgZA`2MgakrUCQ9x3a`%kaE+lnZxC zE`>_;N2_`Rf+a@kl!{-n^DFf9&5Hi8!mif^=BohHb;*KG*)uvV=20+q;4#!6(z@n z)3W+bx0KX1C4FtFbZaU0*Z4dAv7~Mtxl>kb_BfK={T`Y6cQC@}RZ@j2sWOmarDO^` zG_K?<2ufPVZl$+?AM7zL(3E47QLZJaWzpaXO_115 zy!=@vZ?KRG3=GST?V9%@-l#`i*&LdULy3K^O8rEP)x}aNrVhVG;)eo3;HB^RNZ$W#TDCT|lt$_x?zY3!k6QMvc;p@LuMSWg-4FzwhZTM#&Y7aADrZ(z zvEP(g!k7gtO0fPXgytgd60c7`WMQKP_^)b3(EhKg@kdqlkE;5gs`{+TKwIeTv#V}V zl@K;@m`77rFpr0YN6>MEuT|VCvAV(DreRlL^mt}$WcHATFk}0tTLn83zP*Eb3=iv< zEkj~PoTKb03_<{*7Hl`^7M6EVCLG;3#dUINLf8mVK9w`StHtM4M~3%T<#Z!k$8Tgg zUlx67eMy2sHnP_ZiHqbib%{XZ9ui)y8DMtTG?gV3HIsa#dn( zNz~1WzBbVx$UA*O5dL!6UMKQ+dKuj01@q>Ua`b6geNt8*mc4-fq?(`jc{O5e2^|KR z29Sp8>`HWcMV(erODf@=L3}ILRH_;eVhG6lkfHY~lVFrxP_%kwdq%QTJ*i!qth@Ri79tDqHQ%JX{x+9+%F)R!uI~&sxI3^Q}w{`vsfNHw3+GZ(j@XE~{^Ppt!+ zN7oDU#18fB7JYe(;BZKlwY1I^U>n%<*g|a39=2m#mo9j3@CZPT>`s%}jhGF=-~DK_ zatQOhMMf8n4H#odj1<{ZglU)#3FakA!6tFqCt?M)u)H2=(T}!(kFgPeI}wDn&Uu6VC9?$irFWYT5_U^`>(%)$frC;(yak}g!61GVB1b?T8 zC9=VS*7z4KBMXK-1(tWYyFf20lAyd#_U;t{i4mZL6fEz$}4{(E; z?w8~RVkh@2wq-FW6_aKDtG)gH;!#MDV^`G;yxlJ`JfPJSq3yHOp&Rl6OkNsuu)t@D zBVVnxRZ=5bZCXpj2(EPQmicpA{D_#bdg<2P^ zUJfE&%t~V>GlWRY%N1kjU}MK3F>5gFYh`X~kFOJe^5d|yMP7TAnIl${b87qB1O6j( zXM0{?;kQ8OKd=^fRDjWl%`(_r)yl-(!!vg4#;z~o8L^$*o?eTabJ|Hk zevHZ2?T{F$I=dSlWnChdvFbk!Jd#Sni-kQFmvG~jR><-7m;*$6w;YU#PlGOw#=g) zm|6Q8s@#KP6o=&On6J7IN#m64r4NY?(Fd!8^&wW82vYLDG?nC<{5OR`Q3saz zIqNlHc5#nqo5ZZI5z*nB`ro7Xw0>8sZ|Q%x$FB}KBJC#_{Y&H9mza@YBRV?Y=<~#8 zRWJ$K;VTfQg6*3AB;v_kBrdk;f?AW1S3)<8PKROGZmLHM3qb@8woH+M2s7jN@6?ll zT@(*;l+HjRb|;)F5^FD?hp6I}sv|hKJ$@~F@gv=%J|Pm zHPT9?h*D&^m}}wWE@C6_ub?(Cu7ps+5SLYrYD56IV)5|D6gIOVFPB=ers@@JVI2<~ z%>0}#g9L<}1Sa9ncp0#a`7L4D@RUlurkcz4uV~+^seQwydivX4n_5!utMTGxMfgA2 zWO`fuQS7bDC+aTSWAI|!!=KCc?CL+;{58{iYdxBCj$=#T-r2KVZ#U=iJyB+Xn8s=S zHJm^9!l;pSgTzy=N%|CzzeOr7Q)yz)?t_1lKkv0F;$tBE7`vXizOFWNrr!BKV)0fZGn z2ZXeX#xIN1@+k7<_kCGxYKfOcF%X#Z5T$#5sj@Ct>vcVG<}Ae6tgshl;3q^Anc&ba zRmkV{Qf0caj11x+?uWrfL@PG6UA{BIR|xgImW!@Y?h+NZF&DT1=sT1{t+|HA8Dz;frf~w9&U)T0YMACib5S=IfwObnG_cIsxiGq$_Ow+@@6(`uvHQ-PW)2I zBP+@xHY?9cC2+E%@cpWZmR0th!~KJ2j<5nL=M(Vw-7+_!v0xw=GK}eki-Eup@j72@ zOKV6r<^~$mdOO|;<|RfDBlz(M=dX#xiR3R8i`$dbzYiNcg zERc%wIsF@n40VjLpNWn|a3(JS#NtB>Ihf}$4C=-(RKm&lq2y`sPGUwY@-}g;fkB$l zc(Ow&aGc`h!75!Gb$Z~yE^nC-Q*9Ck-DuJkSp>a=^CYzD>Ygl>p8QigBC)1D5qlnj zl>45P(w=OF;|XU)vy-lx5)+FeXmx)){07TSibsnccYfWMkuSZ6>TxOy&MSil0|1v4 zk-2JbTaS2u4^prA9v{!bwU3a)SZCw=*)`||gP`A5_C4fWq zxJSV1?*6J5pKc&Mt5NrwN|zz&XZb!I+^qE6ztpA>Tz;NH-zCrcN_+0`VOy< z2V3n4tU^+(jdrM2_afF_9}}iPcgDMj`+AIF|FtaUx~RqQUY1|8uAoTBLLuZDD@}3; z5CRDEiX2f3vV=fo6u3-v;vNb*Gh(I!CuB%TT<(Pu@3Z|$Uu`fL$d7hIgA9FsE!14- zHl&ln6r874ieFVIyaBiZRyFG<(=wTbVdp0`#{>^CnUVxG@JEhMCY*_6NW_3ftLfm( z$#i9$eZn|N@8yLCM1lqLBbP}>K6|THFKKnDQ47pquYFP5zlpPA@UpgV>)=D3dtC?j z8afqDY>c6(gc%~g_{EeiA_5S@nISerKfsX1#ap6Uma*sH7m(6sDa%AY#Tp$m2u7uV zgN+!9V5o>hOlg7#h>s$k4+KTe=OhUgP8%4f>|`&sn3# zsUpJ_d(z4F5FLeK$}wye4jC?n2viaR^J+|XSk{YtmKessBgWPqHzv!qxnbQHW<4hF z*OFW(duj9UDvj@k`{G>}0g63A<~QJ8Au81N>gQM_ZKfoWhoFepY>I*e!Me+>`b1l@ z-ABPOR;{q=HmiPT%wkR8aH28}s$etl$b6vDObMy>v6?5!ri!8XB*=4fLV`othm z2bWp7=`x#L0q?8+%eo7!y3S^Aux1BSPp&f7|3IGob@62tD14X&FFrUio0DOS zrhC916UMTI*uh&0UIQd9C|k?|+AzKl$dq+1W>gB(Kr8DU`^FNhIt85u={CysOLQfy zKL+%mhj2$Ot$w7wM98olnBMd$R=gUY9cL%H32Jh7Qe_>S`ln{67_frw4w3jei984y z^i5BVgt&eH+mXQ87(oLyj>&$xhncqo-WH2?m2mY651Z9<2Wi!So@4#$Cd%D8Dm;sO zd2#}Jh~Z0zQtA?1)Jq8J?i@EMKwVkfHHJAJPQr>bHGY zqh+24%df^*BV7%KlgtZHX8{aFNOW5Bi?8nJ9D~8h0tg9@aWvG?zxK2taOqgxQ!Ds7 zB=N?cWW2>PZUoUZ_f#UWo+YETr5~)V^afu!RFlo7;l?N<fP* znG@vd4gA#`>PcUD^`KcdTt^tvC3=0<`x0%%XyrJyQ|3YF>hTDZ@XktC#7yuAGth@z z1-jPJ8YA1wL;bairw`QB3)&M;Ez8JcbDS!V5lj~jhhqvHvPr~z52yU^lCJW$$7*r(V=-hP6#`|JPM0?=Z?La-L9;;(5B@!IEJ?O?o0!Z-9Xy#X2Bpiu_wU^0*ls+eF2 z0U0!Xnxy6GfDvqz5++~9M)5o7d;uFWqbKTc0X<+H>F+Jmm<6QK zB)+ON%ltZ>HOh2k6 zhMQzzs<-Bu8$>6tHTrP(6McB`ClSPkIXt9Z{mER_TkUa~MUi{n=@;-EC;pjLuR9E< zS|eeh9~47Dk`NKeJ5t9)cu?Ux)kN%Ugv%EmKTR!oN&Pxvn;DUubqjNIH4*!qRBj?z zj9Nl0?eN09{$0L!VLsy9;=K7?K5eO9nD4;=DvLP$UylSLC3}}MExEeAN%klqbi~}| zk759kr6S4Bn?Do2H!|l{*ldrN?NV}*i#O>pNKLEUL_qH&NE|-Vi^?rUE<5b?f(=3> z6m-z2i}xbeAh8le0RcnViUBHqw#D`crVUo5Q+HK6ao6`kClC_L!mUdBRwimylJ#ZX zmuD&ek@&L9mmR(gS0;Jp^ah<-5Hlk{GNP48kBUbljew7bX}5S@wBW&w{{!K5#^!W4 zh!F;nXceT|kWZ}Q6*?}diJlON70Uzj8f@XBbw$U~h7hD}Pxp(F9a7*{Fu`zR6nl8C zNc!aY+wtLu4+NxpnX>lr$3$j>uuIlii9tmNhk9&n9#7bJhC0&iWLPa16Albeh3c_- zsRrifnyH@CaK3~Q5rIm(r^z(DMKW9&qlcr+B4ksjJ#_rG3+6@onpoe2#Y>!A8>4i- zBGzZ6;ZWFf=)}74m0-D1b_fcGbq4dv+_3)8P-EDQECP;@;PflCTBSp=S~*UQ@?2la z4cZ2qV#kc83(^hY0GD7NEI@(i14+1ghPT)EqifX<1lMx(p;4Y4AI7MgF4F0RRL^HT`J}$;o;*i@R8@fx4@rjm1g@B zcesM@&$V>059I5*)LERkP?wopZ9sBuKoWvuLIH;_nhB@sh|@=S+oO%h^%D`Y4#*Qju@Xck=@3RK}h zSQq|~f=S{YEEKuYAJR%xNZJKb)?5hz4a{J>gNDfJvN+$LO!7T-Oer8>_&?DBilt)l z4bcz0UNldekhVcmy{VsJ4x^JJ)emId($xouU}awB-eY*b8ObBId?H zYOMY_>4+S;%I}lVH^}QCHYMlz3hDjd3*f&A=`Eh7Tk(s^{Y53uDEAvhDnvzwfNJjG z!XZgLw`*ayWLL+JT{d}HtApi1A}}dN;!{QceyQC8V)xrqv^!nGv5S?X82lmYgf3@- zpw|3gBTn?K!B{;yzE!*Pi8bS9N~8gIV6>^8279wMrbS`Wg$DNu?N-oVUI>*}A0kG2 z02>--@!dK^{XogvOT+}-+ojJ*rLf)%pB6D>BBZFE1hzwi%=}>r>Um|UW4iLudp-3w{7wQsQgWo^rY9DFB`@Qx*mdcO^jpAh z0!az6Tkd5e9mP>65Op{2wgHz!?8dR)E-qou8tI|o$!oQZ&5dsxH_$e!b@W70bxvA) zqp3AKIan2La=BZ`sVr_rHz9j7ud#Ov;ZLY8a|09$f@ACI34tldI5QqP(i9i4(8^*> zZ$U2#aYL@7L-J!_{YC!no{9auz(Ch%Y|)3y7+AHB>qnT7Om>sn)+wyrGPN)zndZn| z;--(m)3AW2;jE4IM)6FyNk5-@rL>u2~tWRZ+>86Mbo$%A&8g z`f__;4*PP*m!o_+*_Q{dBqa9n>Y$@^iZ%6`gy`6dpHu{H3xj>H(v!w&qX_s<1*xES4qr2Ij6n-yN_yX1@l7 zejK0 z8imx5enU;ko(`kNX$Uo&+n!|hir+JHP*KZ<#~oE zRoOx?@jMiummb5+aIq|HVs@tT@lIB0C(d6vunpQ!Rzn5ze-v(zW)YURn}lsaiSW{$ zSTjf2QqpPH!Kao$p~CO7xP$v34-TSpBGoMr#-s;C*$KQeg7G-ak5QO-tD<#?M!jDS z_u?dphrFp9o>i4WZ(t_=SA8%)0z3f#)|I)yN^%H@TOyX4Rvv+2pA4_pv+U?qDDjud zQ&OEv`Aa97TiX5E7GGYU{vf^6!C(4WeI*7&$E)g(qyN-DR{y#GQEsm4kYW^YjP__|G^3|cH#cGz+hLbAL0pO z+skW-Qv^!~)r>^nF8N_&d0ZzAw-_b2@(9KuRK9?2jtsMP+nb)Z6L zJ|JHlX1$=MEF*z3To-pMCB+)nxMkK*Q54KM>D7JZMsL_Sr#(ZD>q?)F;+lOH}7#F%|PktBzMQGFMB;7KXx*+yu%+W)?gb zuC=&b|i@An~BOp`>E6AJ%xQg-Oj03icW}Wmr zCF>2xo~Y%6AopQFytUxNKz|T8Uze7@#_H9Wh%ovMGA-iOPf8H(C4ZZ8bOr-nf}cX4 zgj_DAL>}=Gfi;eUXzNCT#DhebLkFSp2R!7Gt2dRGq3b=ZcA)$=NLlqz6&NJab1# zeGm@Yb)M|2j6#SdEnO3uy&^WvSkZJ&@)jCK&l4L;;ACG!QW76pa-o)agKV~3$mc_` za~HSGL-iu!MBDwoh1p$^BfGCmZ#e4ndg->@W-yu($>_WRvi< znDsqB!DprmZUs`4!LsgMXm^bZzy}Bhwd3B3A%dQzcjULNB0UPa9im1VXLY3d2_@GB^1L|)Yqwrfm`~Sz;hzfX zc4%<5r#eEBt59|W@(}KX&SkpDN+nES(uMKtKeGVK`AFBfG45;TuB^Kk&mFRMsFqq@ z3_7jE7G;NeB3pPe8xCNLBAv(wSnBT=3-1;&CBg*sp*Vg# z4)&*yC_d?-u(gbpU>aBowh^pz5_Yp}nBKI55z2LOQsklf0(dTUAwoWt;6j~VG0Hz2 zk#hkzadzIdCCIL-$2Kfr#L_N}s4$HVIDMc8eEd8;fOm6t znB{;mI?G}A6x>U=E|1pzj7$ZFwjZ;KL~qR0bdun`zmQiGtS#m$ouqy!RB;F@73u?R z9msDZ)oXiobs(FobYy#q*h*wYY$^!rY!H|DvaJKMYQb|{tZj~FSmMp#2~55V+VKD! z5_*$DJPMQ-6Yk>B7F|D#MKm`!TYYYcUJ86>C4CuAF_}m6gl8uTMipfN!$y2B$uI>! z=iNC(4+lq&)Pk{mgu$0d@SvmB!-;zA3oZK5Bp3pNjnD)?WtcE2VnAX>fG>iF#UdXb z7z9_;YZbW~(vV~rq{m3TiF-d6XX3z@L%y8h%VA$0<;&ui%Jll!w~zfCyV&DZD=TkE z4%Q`^vkD^95`ohoJE731vK!9ky9k}+5Ed+#SwKQEnLFU8KtJ>ON7~YEbsoDXOsH|qVq%b55b%F72L~t zzto+5Ht(*@yR{&$Z1!O8@I*emzo73csQU|Cr&xe&$vi2+NrV^xFkkWq8N@bV!#;gd z!JP_B!H`Fgut*%kH+1s49-Voq zNLogtZw~cxbR1xi6c^v0sQc)lN&fJ|8?tpCr6OT4072T=D@Od$% zAoiBG}a{WK)R!dBC3!4CWYaKaZN1*a^q z)((CsiBY_;4;vBmmkGB!FP25{xB z?8t=3%j6#`6&^2zc=><_5E_v$xI-N+NQ7DOL@a6LS)h=uur~Qt$*3NzL)K`yaw~Pk z7q9#s0WaiA8|8c1bOq))Y(W%AF~MNC2Ra_h1j}bIjKfZBAVzq2f=aFj(uJ`VHJJ3R zjcm!h4U7h>FNf7`+S+P*N80rMjo)srw*Oy#J97Obye!siOcGia8NY=+6~_o_fLz$; zfpE~b36(xddcq;?bb}hcs9Y%eX=%r#T4cAOTqhhYknYbzWK$O%oLFTE{0r!bd=`>L z1_PBclBQ9BpbwjdW+)d93b^roLePN-DXs6vzL~{g4Rq0(bkwlBYOmI7ot;T{tsb_u zw-(zvd*Go2g;;Yui)AvSi0g@358+ZJ!f-XI#p(3hzphnxddO;ejaf)iTW@aOD0tGyU=6s$X=E}a4<9t z5vf3tVu<+$MszuhV8Nw`)EH}m`eX?wG4id#H=%ZO+`G*l;qfGEEgd#LgsE6QHS$gc z^CHL#8XkUShL%ChAxCY|+v{B$d2h{IFh(dS^IkQ%wl7gr%7WT0bC%@#!SD)>jHw(D zVNn!G!e${>I=G<_l_jjw*6+?dj%5nj2W5GHX~?Q7 z8iLz$Zbi=AmLs$lLrNEsTVOIlABK_Xbs{;SI*F~6X;En&lvy782EHT%3Q7Ld+C8ok z7xFy>-zK_C+*`(xU$!*ng*2O;|4qOdIIiCZ@m%N>$j3*}-f+XKe8XLZ_-+XDMvl`V z2E}=$iZHEE9}#YQ$>&iL^e;*9*S^2=9lDE?RHtLc~w&)CQ9eXM#^>qj(# zV<83}(e+1l@`xVK*@)x7Unp^~@#Vpp{Sa%vRv%O@w?F@i#uDj3P85(`b+u=Pp$G zcS>DERu`5<75^eZN-#*WlYPsR7PAoVay=U=p=Vg9Uw8X~C3kgu5G)iW3LeqgtWfr5 zMX7I7=5B7G?-NrOd45w$1<9X*+rTfiJ{7-T!l~+@+K{WH(iOH(R4}SC4DcD>w^s2qAh|+MCaKq z7t`VPJh#LO2V3_R^D&oB2e4-VQ1ljx1oVP0!H=L584^hWhiKNI79y+|EKVw(boLKKtSsY5bvwST0aTlh;VX|)8{#iyxgg5YW5iIj^opO zqTD|e;V96+zO4BElxSl4d`P)RRfrvqz{Q9F_foz>wVb2fZ&+Z&sq@5$IZwL_ba*a0 z6?>U8+k^dC;3!C#6H#wqFw8CBxQ5t1E+bWdELLo`>`rD^jMQbnf(X~l3ZLi zVxT={h+~Er(F=$G(EG+&7koyDbaV@^G>8A4OkkUvBTqu}v+D(uDjfT-14)MZd6Xob2b@s3Xl0 zGRL_sS%@;vFa33R zWN?I{uGh^@(>MSwQlkhlA;?4EW_;Qg zAa()_rN`iYq&}i>c{M{aia?d?E^>tAfi{2* zGOB#PXC=7w98f3r68%BCI(qa{k$8mWnw)vH=+!br5-9=sjH-^Y^^BrIH#e&C=WkVv z%}3C*!R3+(_GkmKiFet%#=UPs@_%W4zES5H1`yivb1|>wQr<}nD2}uG7E!t0nlqRO z3k3mb^*Zc6*R(9OZ4!umjM|81h$BBQS#yeYr(1H!{1az!8*W?Pwp{g#ROScR0k^V` z&hSfhh((*~;Zd-)hppLBpbAO4C9YkYJ571a3W*T3_pw=N{ zCGQ;hjIvOJgZPpZqbNHIADvwa-zs;Y0V$N*YPr^~w()pnwdh=H(pIRqw7AxpHXw+x z=<)}3)HkNP9J+DzS;S7CLwW27f}TQsf6=aZE;TPW!*i%L+WS2#PoK-idjjE3iR8(k zyb;h;bihJsZid5tPg|jNiRisbmsXgw~rx$uHHM>Sjx?aeq>o^8^}S< zc^4xP!N%09nH3>xL{^hgXNKmikWw!qO`*rrBKL{(-w8jbPY%qBfqOX+lpeUh$mc_W zdsIH}2;AL4_%2J90Osn9z?@E|7FK^^Z!qR6^zlYtN6a~Mbm-=b{b_984%~Y|`0$7> z@fxY11(4P41woWS)tnQ$-w@O;Oaq+>&t~j**gCi1K^|^c5Ax8FdM8ioiW#G#z@W`QQoG;_1Qu}(bsWi*r>(5smf>e?EY{=)7DewmQc&cVA!+LJCo|2my zlC>qN4uHJHKeGTbk88WgZ#YOshMyg?B?=Wv-d>zGmW7Ualu`d}pw11zBBXki0~8{% zCl-2&r3#=}BD)0U_0YW)65Xi=Y0f=NP!7Rc*M<5w?dI3*@eQGVsbYWKuK4E?;hJxw3X1EG633|q`dl2O4SZ_0{Kxy-7!W{4m$L0VW);(pdCNFeAXMkgtB zh%Vcw*C9-90b5xjl~?5;iJp=?IX0BPykXdw&&5^ z2E<+`)zz4u%-s=A>?{BoaBtf3ep&q;0S38x{v!6xuZ0BhXO$zSeaE4lpCqzKvX(QC zw>3B6AYL%aVJf<2{3nReI6aUQ>$C*H!*+z#DQ>xKaKDM1CK+rRZ4od6ByyLW{^hw5nR)7`a;r zClsu$PmA2bh>1Qna>qyEuy6{&OXz-t(6i5nh`yG?rW#+HWIhc=47}zYRh_(-YXl_X zyqSuD)1cpoZ3sQLmPaB|Z`bSj`jHGKlzR)J!XfsJ@hD%1>_%8-d=qhQHQQQnRqiVL z$6Z`T6abL|F#fPW2!T*Fx*{Tx)}#-=527IXGL8-VNJ%ofGER)~>1OcEN^yMzTw7%57Ov44V`1%-Mw)%1h zUk1K(zD$4B@9UHTs)u+`9qY@8l2m_31RhXj-^lrzAy;#@aZW%sJTg9Fo8iKk12Yfe zXAL&#h}p(llK`tO)+`Kv10(@vKthDwc>tGKmp2ow41xuEDzSmcr&G{9p`?B(cAcf* z{gQf0(mlQ(0hPy<3dfXy$|4bi&yL+9;wgfGZYUM5E15^UX$W-3$-q?dUgKwEBzY`$ ze~!a55$lAfifNPVG#YRth_!G#U{gd)iPxaz-;N9Kpk%;R2Fw|_O5U`Zo$0;DWq~P` zE6tjDQJRUcOysYaOnImgS_?u_u(Koeya%BU%%&r~7f@XQQx$Mwk1aN;u!lncN-nGg zU69pbP%X68JxIZ%qC!3susQ^=8ViWAv<28>FFJ>jk-Sp|6Doo=NxLUXkcpJHX(`kX z^b(30P2zaO_;$C~cs`-h}!E`)J3fxqXkWPOD*FoE10tUq?5#Eg1 zso&0=fFZNM_v$HLT2z;!6O{_ZEBy|RIiIa%=yS9J!>_EwesD}I|NmQKQL%Ube=UL5)il* zhrM$a2TbrV0srg8`p1rOGtya;fo0o zGXmAGWeb1HqHIAz=wW(;>Nuo@NZjh;zb$N0A7ciy%>W{_^L4yf!DVIr8)3Rry{}y4 z^uJ5H*p=i7fU!H6vjf=f#trFaVNgJv3Iz?0tRG#ZH;j3?6unvs z&$IRti+R5}&6=l6(X%KRn}WrdMOpP(_d*~>2o2|@5sJ3v8?nQ#a zfzeEvkK95UCQ(LXbs5fwHAc!hF2E@;e|%u6}fwVULuVxf3GYp`pc z3+FpOS<&h8?a0aH++ur7K1F+)R+8P!TH?GZX_MN$2w@7Kg9KvPw%cs?qfi+Yc2RDg zZoqgARjP6~s7A}t3ybi;c=}kZ@WxKdruR+@3i~khgZ2Qszr>Y&;nrZm{Y+j z{bpC0Z+Jdu-W35Dj(YO>7*O7FU*}|*`t^Bz=6|!)9|b^YXizqasj?Wr1QXj^Bilm| zGRV6vL-!-G1Oj!aU;$N^zZrLob$bTe!Uo#ju2SlEDiD65RSNU+9ktYZdiOQs-ZO5i zU@E2dUbWPd?Dg_^tJH4{zTPPHqTYShxEGCE8w|q9SMmJO*24R=*4ta99yW52mO>%C zB=;Nlgu0EdQ0fP(z6%#2TM7LA+@}xTO12WhO;T{Fo*r)89Y%h%YFB)0k)_&yhsmlh zy3nARH}s;*^(uc6u_89m7x8W!sjTuzA6w=cebX_+-ZWpG#SXpcJiW@_bg`cDCSHEr zus3~d8Kh%QP9659(+wK@LvNxEaBaGdSB};9oQLHulmKcE?5yV?HESQPV>E2;P}viW zoaf6@WtWyc-QZAb1LflJUa&$K*Q@sD^YG{8g`t5{Ot$iSz4w~XmEkU&b>siK%#fRu z7}6?{1x@(%uxg&b0Ts}$gBrHi`j=s~ zF3D@Xy;bYYB7gO@-Y4dMad+gk`ZM>v04b(cOANYIDm~S#`o(mvHucdAIpElK>5kM$FM!B-q5uA_m9dOOCT7Sg&jI#Jy%U8f5B1?Rw#|SP@+>uH%jY0y; znY&Vgd$rP0cEqrzJ~^z?y?sl+)U5Lh^0coK%{KRC-$;JlV-mnuS=qz}=iR=E?+vSM zOMpzbo!P8yTSAEISMO>*<+j%+!moQvf?3K&?1sgt-H1IpMjATe$Jtf8aSUn@W9;N+ zZ4>1LojTcuW+OL6p9sIW5)01N+Q!(CzP7bgF5zptYFKSbzTk+mS({bgBGiTj0~{-! z;1VHWy#sLn^A4EsgvfN$@5^ogJ)9Np&Yzzm)C zU}Uw*Qd%1TvRAY8IQflV3M0AqX*be6X@a9smviPa=gxP<3&3(!Dk=NZQuSx{S-dUh z@BM6Wx>N5bpRu1dpD~|ypFy^-KF!{6?qyee#T7S?FLt;L2_Ccdar@n$T94v^k9krh zFrQ$h?hO9`R+QU`-(SEva659cRM+sqoP3SnuYJVtzcx##Aqt)^LD#{^$p@zA&Si=y z*J_ko5}7^Guh|`&k=@a|**)qj?w<6Oc2E1tyJvmXeX^PIgZgG>(EPV*im;E_8wgp{HcZF*=%dcZ5`{(PJwRz4J4n$Ga_GOuT{@I3b zeN9ED;)ZsMX1OiRR{q(RW(%Hig?rLZG|O#gKIxxrXSh@0%57(NYL?sC?Bbv8Y+5j4StfcR;Xz@TKN=e%XA*KmW3P ziRWCgln)NRUj9b2{5Q?F{BveSg>&>`zBdMThOhev!4LhjA0R+A*$>PQ9pYN|1Bcc6 zPevWeH1W9(lK}t1+SiAP97;XeVPXy!$Byb#ceDgY$pGG#^89#SIyTRbdEs2mpTjQp zMc~#k;!cv_L>Yh@&GVls!D)H^QVc5_Ie@-c-O9O(anm6<;u*NQmH!$EuFdmb zBXYIozedcp;;s?vQ+JcF4hL>&pCBM5* zEW3=(f3)N8&r5L+FmAGZFUoV=C($DkJS@SZt+zZT=J7l~KA|5af5qPcY`bS9cv=i> z^IwbeM(OEtA%l@+V%bRbZObHhPT%405Om5c7nESjFR{YS%gRtMzASaXe-IECQK|Zm z{3Alo&|fo0%f;TjTrVk9l`&5dhfu}N6FemlVnuXQ5L`XaW@I4AN_^>29OiC*R5TL|5{38=Pxh zo?dE$Yk`Wf|HUm>cmTp1Uhv%7JX*$nWdUf$IIV6o|ckj_AFM=^Ukz&kSY9~%~)Q%_&Vp<;xX{8%xE ztl5>>_brZX!3PSDYmuMkMUD{jgEdn9->^Rk{|onEsL>tFl=KR8P~_d6GNasQxgr<79C#fpHux{PI!bVMbVc#YUA6>v z2jZrYiTiK?^wYlF`ZW3&<5ZfyY9GgiTeZU&Gx-kPd@u{*t3%DlUTYOb$-mieh6nn2 zfhz>x#C9HudbOjK*k25Jk|M7Pe?RBg)9~d$dspR zI9osU(|$I6%51yF&)f{`VrE!4u!s7UZB@eKTt3vO+5N`2m*7;pUmM6eI$ar@{jjR| zQB+v_659b(*S`p+yFk!j3Jb^Td$;!Qoo?1&<9pY#n}?gw;M_0Z7zUk2lxak<@HQ;< z@Im9ALO~6WK@9BITLVj;>OVPW!@|4pSanr{=g31=t@J(g7)`{dmj5mU-9vMBf+Zhw z7OiTh0$S$mqt*_FBWR_<&T$_(XH^d8=PbE!2=YIevwVwA(qdsbjADDEaktaeQQ-xy zFc(!QfamI=mJXkuMB@vKAr5vadyH}DN)mMu!GSqKpo?z>r$bS5Xx1p`HB36!T<8qB zU+50-8+u+tI3q0FqOaCZb;*gw9dDfazIJlDmD3a__#Z> zlOPSXBhyLTpP-(*7GcOqc%B@_f;F++b5B3{y3(ajH-fC8L5L%o9JU_s1t!d9#9c@u zS?~Y@1+fYY0^~LTgA~0iRVGNeMo}BxyO3#gr+x-ZYkH6{utUup-h*Ro6)Ua6BJDwx z3vk^=?_>RMh%KaLCz(ywSaw^xUbtacI9$sv6Zab4@$jPL=Nm8*e#mmRT9bFzuCnJ) zJ$u`IhUVM$mVC^&{mlVxe>p(s8;fnHaJQiF0(P7BDsi`qMO>mQpijMZ00-}l62@r5{tv9Ryi#2jc^9|sHKVSKVC8FL`JORcV&O>!e*#xB)LdRaJZ#V)KWeG3m4YTzP zd%G{`3yyBR;CYdk1ULEljJQwak(DoaLhP?rzTghAWab6G5j2V%oQ~)G3tkm_w}cP! z0v*#YwZ@c9JoyN0A}Bn9+{}EKqXvH$bM%^h7M^VE;U+v%w==)?89=H7@+)hdHE&A+_~oR4;y=n32&qP5nATnyv#kuJig{K%Zz=_}^2ub_Ao{-rgBIZD;x zM-j6cpoBWqXZ$+dE(r9RBe$#TgbD|n3Wjhjpsj+{rUPxjtEz*bIQksRP4pd^*mj`JFsHw*BJ&%kzzWQ}*`hbf5m4PcxrxQnJ&}ZbUUqcdI_mrKdzkyrdh7tbT@4PcTY0CXWAI91Fpw$ zjyH&DoA4X)n{X6)roS0S$WfhMpH^w!kDKMnTxe6>_{12bks4t$@g_pDs z1#faS8kiLB4wGXLw}$Sx&>oK}ggGHZIWUcnRZZ5mkPv}g9t5X`cCPV}50WF$1BwHC zG#HC43t&80!WP8#a_4^TkbtrhVI(GQtooah%R_^+&@02-qi9k6yMN$;EI~g}RSLEE za*87yf6=*DFqW$1#S=_Ks0wE@ZB4l-l=qx_U+o<*TEedX+c<#J?S3=CuRjEliq>zA z+T4}Glz1pWo)ZNR2JVqS!f-otLf}pc+$YV>6m@cGq-{7{HJ86B-@tP6*MWO3V9VP} z?iAV4{6K%4c`S6l3f<1;sL;*DaK?NN*5M$>Z6e>MmUkkVYh(^Q&(QbJ3ju2Lml?U# z$OQ&BF}L|&ht5Z6o{ZcxkvoWUC)aD_A$u&=9QH`V{!2W?_hN0(1Cb!GxfV&5IV5t2 z6BwQ_9&AC-eCRsx>+I=~n}=}U{K%Xax(l>Xr)XS`zb30RC3!8v;~;W`zxWS*B*asK zhko+o+LFYARGg!n+Ic!|VS+3A2c6KKJ?+I-4sct#FS%a#eYc}~2%l(fTemJe@Coia z?j?cebjHq8s84>;5A0uE^zaxG3>eACqWRFGcc1l1u56eVMU=eOEOq!a=E6cB}LmGCp z$X!u*2EKEctFMRdO~!3)>z)?OC*l2YY6UozP?Q2(PJSn#*vi@nFC(CnM zknVlu)F^xiMFd)T+|cA#oz>rkjs>tt^*zxlFsj7L3QM;Voc7!hp)3Upnx&c%D5Wkh zqDkEGNYG}W4qZZ(U1mGK1;Y|@YJ(7YO9QM}HEa-@GK?mDb+`l1i$3RGoNeLHw&84y zK5ymY_jGu3;ALuVtB^qBG>-Na<%Y6(NGj-{reSSvD2w7tm~v0q>-ny#C_4Ix)U>59 zt@Y)aghhWn)j!*c^Ux3#O_7T4fdcM}W>O71`%hs+n<;Y(oz$Y)*koy=Tu0kxLhUlC zH!v?)PbR~aFS|Xk$ekLkmo#vFLpZOV?Ry(#ymSnVuXYnU3Y-y}njj5d#S@QeODoHy zQ@Lqq>EwzWn7IaMa?*sNl+d2!BPtFHwE@f^FoobdQi+M>!~NcXpb6tfTka7dXF$ff zF`G=#9O|DqkA{`N&rjARFGde;{R|F%xQW}ix`hrE6KB&3e0w%MW4DezLAqT4W>((8 zZ6EC9b}W7>&sE$x_zcf>>;A01i5L!h$eyytUZ0b_EP>QypXM9)vfMEo8AtTFaIf&+ zl!8sgU^M~b(764l>>GYQQULswyiEMX-Yq7e$IOb+ur-M z6rL-_CkJvyAQ(**!{Y;UTu{gE1k@ORUEDb-Fee6$Q@}FS1G?ZbqZpnNn3IFXX@Nv2 z46{;Xq29&h>(rn@P2kk9J@o!LdjAZTchFc62v$9MpC=(k#XMOM;EkiP2ve@s6RT$Y z7wa#75?U_T$csr(xCS90HN%vb;aZ&RDv3x7K5J$=E|UP zZGgVls<}$!TH31X+Q3{B)UFF;;;>v*+I3qi*L8te64Y*hSu-pb;Rxi8)*EjK%=JOz zmO!Qq%hlkG_q6J|B``M!wOa$3IxJTYb=}vh>(;<54H~xxvi`7KedPK@E7$FTxh-hi z8OVmia*ZI@gRM8-8JIhQ+TDR{JS^8pRK_1}<+?jCcWJH|_>Mi1(zf~+;86gsob!L= z*ZZI}sw3%hSm+wov_4m(w)|NANwYRkN5v9=!AivYQULx$Rk0>>nd$sAKTHewsu zc<3m7#JS$f?{7lBCj@3$ZV#dE+;p$j)?i0s*T(RQz+ylF7J#q1e%(nivQ z!nG+i(tcIoEH|=|*g}|UqcR3RN>XKKtJiAS$lxOs{Jv4^7~7>r(IG+KYn@|z)DjQp zUpD(#)aeAMaK`WWyZ?{Y);myO$7D;f8%3{DY*6*+Q@Bin^<*IhAe*3>y?jQBlM~}xx_f-gsepOXK=b1#}zfDyQb5+1EA|3rz z3iyK20uFg)aaDbj!y{P{=KLc2VJJ&9woUeaD1XLtYA9C~b3SBCbMPPJeqWK}>xb1o zH2`wZLmk43tP2Xw_bv_ok$8nud z4CZO^bA}avJA$@s4k>i#dH$uZMDlXvUWx4dVsMd`x^h^lS+V@JRqBICuJWbcjiBk3 z6uh(;+@Pgy8&>Lg4V}__*U_=u;Y%H^QB~aGvAww%+^wY^99C*xET^_gof6B#z7$m* z7rWzQdtWj5m6rNVy6R-QB$o4ArLZel=1VPzac}7s#P;c8@Pd~5UApS@cp%12YqN!S z$Fjngx;2)iv7^G*|M}dnTXS~FomwiM#t!VYy096`)w=GE?e#0);f_KF)|PIKtv8I* zHxZBb4@Fh)dZ6U)Di!Z86(_}KmU8tj^SJ%|hq#FLS_`^2s~y4l8kGGmm3Xo#j&_$M zW?gpKFXqmDkz24uc7Q*44IYRpub<*|tun5Vrb7?-XArmkS*mw3uHdxdUCckzO^~e> zXAgCraYf`8LQ(o>YZdz_o#`26SH)z)mCb`MYdhxO9pHGp= zJm(5kzm1yp!l3fcHr6{CS8ihqb?V;7nXt7u(`YF(+umCC8|HykFi zn#L7(RO8C)TDiGOH-r43&Vu%cZw+TnT`ScNMc2w}Svl3G@;TA1T20G}J7`&{8;U&7 zd@tA6k>gD7X8sP6&hx}Amg0GmqCdsE>`oxv#*%98&b7y=Hd9KQ)!9QqxT!>iVmQh0YTUta7Ok6{up9I-Q8s&K8j7 zgHqx}K<68Au{xD4mU5kCID=8d1o)!Q>Y(AecJQ={cZ{IhcIgP~$lijD8C*zMO@X`_ zo9E*-3Z9>e?eF676)c9Y&@#{GWnPHQ6KgJWe{31Grzmr@mbo!6b5m?CUvrsrV|z^; z;(fgE0XAy(iK2V9s8YedaV3}LHCz^(g=?`js?pgt`wyB!Z9Qiy%>+IN`9*3vo!);8?J!~J!raDrm*%8(&y&H@8!XsMd z{Eun)Ymo&(c%P}IGSU5)HdW7jPeh8+dM%XUi?k&ZWp?OGP9A#6n-SdZp|*kYENfyP zDS9VAE6S<5QKwIV{zchSkv*a4PAl3!MBytsw-ri_@QYx$V3h5$%L_)EJ-4eyQq-RN z=LDm1;dX82J8Ik=$h(pG?aDR|@4sgw3!e2FN-jUwGFU5nymUaI zUr*cziK>Lm!xmG)E->Z~iF-3~zfa^%2wT+wTc8#HGH=Wyk-1~djkzJRzlg$nY0ME? z`;&=#AyKu3*?RS2;$HI-_@lWBZj1zM_L|6C8(GlTmj2Z6&pS7=*F@pZsqsxLjqQDj zd&Jk_?T#1bZCVtWlh<6s(UCnf3Qwa31g>b&A}3oO*tYaZ({|DR;Qy)fPx|_Mm*F9P zNC?{Hg`j;1ANvqkTJQ`(sMv>avEc=nW10fcaXhOdR8)bd3KvIm-y$vQKonK z@+ttWbF>7WGZ2nynaMma79PoxQ!_aubEjwaj0}r}Gczw=Jk19P+@vMffV1&hDO{MX zDqlPnX@mT(q>`{(Q+c^0uaxXLS(_*@FmIL&K?hexCY+UdG2%U`yFc~bQ&bAs5+mN% zUiR2bo=)Afu-y?OI$~0E$d6Uq9)=KB=ExYhba-vnw|}T2k{`(rD$f*%=}yi@7q>&zN1JE_Imv!|Lnh;X=QgQn@k3y(F+ZXec z9y}3sBk(&^(J3T+w`=l?a{U!NVDoX0>08}Jyw!wbZLlfA%crxj({^Rg;6uC(t5=}a z-4rAJhW(nY9p!c1+rQ1De6Pm?A=d+RJZcf&bLtR%J;E`mOXw&#+r+(Qsx)f3l*LP2 zt^nY*BraXUBre4OdkZgdNfHf3Z!2K>_RI1Bc#n?sXH8>&Y6;6H&onJmEzTv z;#Cz0u<&?*q#q>5SnNqFQF$8yo3kHnH=aabNZY$i6?t|1JhI(JXsOFcye#0eph!Qe zy8N3o$S%#?;blwnOt8Sbtk0mev34S`8^ znw>p+ZYp!qY%Y$yGPeNfJ!qyZTdnj(sa)7r`q@mL_oWx5vM|jSrS{jp^qpGz_p6om zi**PIe<&q{pT7F)6vjn%MJj(NufheOwg0fh)huLruRNSw0O&4lYvbFQ{MoS~= z*>$OX%eV0v1=ELAc%wt@_yH^DS-E6&%-`dGeJ}eQ&oL*pfbROu9r$T0&)IfVvFl!Z zrKRIeYdJ*7wW-<>p0TS@24h!4igJn}_fU|Z=a8noo}9wSDTy2v%`GPKJXK%kM3x5B zM4!W6?hL^{G=N7*i_`d34-Pqbu?D3xhm;w;ET5-EVuWls0L`4lu)cGVqOwX=y?qE3?$P90NKH+6W=nO(JKmED3e zJNJ&N)u3`NK+pVY8}9H@MJ_M9pW|%D<1DHur1;9Fr1zBF{bjI_-;~{Q_BzU=@lK#B zhhMfTctD?YR+m+WZ~9l1sZg%Psa^HqH9TBgHfw_s41x_zaD8r)BUppm&)rjv?yan* zCQ`@N$1lo!kxlgHJF^F~N;XBPHfToaR&LLdFvx}!C*tsOmR4&UufxA%Q(;eZL0_@C z=|a0ZBwQ$pR9$7N-@@5Wk!eY-qo=vKBFU1@NzB}&aBuFU9~6P@3^$D83Xj*=i3=~` zgr2E*Lblp|c|<1nRdv4vgmMfc0URo#2l;-9L;_o}*I&h<*M3(!{bv~a3+ zBIu&)Zj-ZO@|{G_l`c-PMR<+Ic*YW(;HrT+vJ&XIRk$MeVWv@)UsiL)*%n}2HP774 zo|UCPQxD0yGv#In?eufbI%x-H_`2fD(fuS=Cn{u0Qj5I?n*>GQ6ebN()U>k2Ivu)) zbC^KU70BLMvZZQS*rCMz1oF4&35u?1I{o9qtUAmV^v7x*&A+!M57*kz^S}^30WCX* zLU&c%ow$m-xaJn94}Nt9%RTQ@O!2ZP=w}MVg=?vjF?(_KF?%YLGiy3#k7n{q4=E0* z>X^M!bIWSQ<+b9nnvU6Xe$1B3TFaDi(J|Ab0Pxzd&nw(i4+-<5je+NNW;Iw;b*EN? z1ywh{8eCDegWy0#9FTce>m5KmwP8Z#NGU4Cz|6EQvLTrH zZpPJ0EMjq0F0ScT{zfLRXW1K>J+JC6tJjWWzAbBwGInPqnMsTw5A!adc>be$Cf#8t&uRp6}xafR5d z;q(!n_KdhEUV&GYWo25-5j3H(<6Ow63bVE8>i~gYt4CMX#HL0TzISA5_E;Q1xH&Nd}Q8owcr# zBf2J$x{|^JM6uVYQ(g_azF8Lfo|XD)S$grI6X}}za8l&(3h49@IdDov zI|Uf>x3c`ToV{Px-dqLOcJdEP{EevCa?fgSq27~MzU6|7Jm}wYY(_Leg$a(e46kW~+`r2K1sR*@4b+0QEW7i1Z-&~&~I(> zrKWroc}IudOS#U5B&4OLgp{ZKAX)~Su?BL|ri`@Il#%juQ17K&XGlq#BurCEiv7(b z8Ou|yvq8HyWXP13q_otOl#*vdm6a;tkxj81k!Mr1zjI<|Q`xM!X-z}9-=th;n=00A zH}h8fZIZQf3FKnmtGUDL%2!@Y_!WhaAX|T_x%X@C&oy};HDBc`Uqnv%b;WOR&s5BV zl_B^te1p5QVxOplk5h+Vm6iRxVy|pX zrw*YiGGh*RQN>(XaTitO!iw74{jqMDbT<(2?r*Gd`(VvIQW+Z4e^p2O$tbjW2()4SB+H~9BMo>$T5}u_oIwfVvJnYWY7{%&)^;3 z*+}Lzbqeep`31>0M}=4tID5TVvx{qlgy` z)L9a{sMIO36E2cG7=(CynxRp>TW1124~KngE)hQxM5Cz)k}>ug=k`i-8f zhIj90Y9heBfK5YMhad?^5KRC4>Ee9LInJY9Y%wpxkg6kkI_9+rG{d2$)k9MPM z;JKrHW@l)d(E+!KoQKyJ+SZErtf~bIq|c}M`Hud)F<;w^uZ;y=ycVXZEha=#rZtHh zr_JLV)M*pcJkM~|360$=4e+b5;_y3*0%{8LTuEYDBuT|hY_@7wKbC9xaqVYBA@p`} z+nKsHFLKk&-uO>=mzM(Y7S>lo%TB4w)18Wz9bcE@>hAcuUD{Bz?36BdTvzeRD+g;jiFT;$e$rrmyeXA*7?6PkA%TD)rC%vTK;a3lK9;s6Z#RoL$pt{*O zhi4mO-_r?su08LGpc(lfC=JxkTAJWTH(RDYi8u8rQEfQ?YTJ2!XM?so#btaRED!6A zLDg_`gXX@MAU{=Es2Yj(aZH(BgdH-QsX`-v*=hL#Os}BC_1_%6SlseX`F*GRBM-(R zL301*c2om3KI!+}ZJXB5yXEhlZWf@xfuiyJr#)>PmF0B0EYa%h(YPqkK4Q-@W?`2* zw+oXlVnHLn8+03aVcnD6x?f%9#hmyek`dN*xf6P9SM;;)<}^l)4S<*n;(kEW+XZtP z1CO~^!gy*=vpIgN*CY5@KFQ52)|$ra#)g?m0o599u*%ku)SDYXB~tlmX9kVg3*PAZ zr&Mhaq1t!gMupkEK6s|WaHf*>MG>Hl)xPqF%7jKtbdI{wT@aym6rsy|0jC5#!1S3_ z>Ze1Nx1Y%n6t3ejbNJ=PYJl&VhMd)-fba2!Jl1fJH|$~E3iuxCarg8T@9inx)1!cI zc_S*^LM1Z4CuiKD+0zgpQj6ui9MIKhQeHr^+1;{Gt4*J3$dirisfInW+a23&|Ii3u zX`o!8RlU>Dol4$qnBT6fXE@&ZY{UM(5x&+?CdmSs(YB$u`NU@&V!EYZSBBZ<&5;X_ zYIiu9-|LxgXY|U#-nOX{m_vKhb9!ZQuRPYH^KUVMloUf?Lv-$^z3%Ov=91b($30(8 z)A0mv^5wJvFoQ_1tF!44FL^}DrGy3}?;m^pR_wX2f9qwi3v>I{JgyAqfFDjB(zI}H zpAM<+f&>)^*awOJ><2dY;ZX9;x|2+F?6@wZO%ht8o<9X=W_b=vnj!?y`90P351bqIoWPpcH3 z(#9_A!@W%!&+B6of2`McEOvbIR=4?MH=9yxVm9d1il3GUSW~?V$D0Kmv)3>NgjF#~ z?kk%xh{^%mR-;uP_^uQ_=!0Vm>}6&nWK~-yg@Z(AW1+I~V+Msi9=dG=rB>WVE9J3T zLi=rs0Gf1X^Sm7mVlmUxfDD!!P{gB0)UAW3$dDpHdcZBjLPy_IWP=6&^LKf96I~M5 z?>8-D-caxZ92i5)k3CV9*gE2YB1tcRB%$~C&84_BK|K8N>0n!)ZQ9PAKOeo+uqR(& z3eWYU+ob3eOthR@f_Vk03i3Z1O-CZ7U<`x@B#S$L`h53sqJgx z)g5-H5Mq7UFp<%SYz_B@9d$JZAQ=DU-xFTa(-d6fzS`UQCd$MHd+qT|Y%irqVPbdbu0nS+f7P5zakMovu@N-VP`SBB z=dj$;W3F7;#^GyvagSZn6JAYwjGHCvt4yOjB-n^lu#q6x$SK!us96h~HMn<(*wyE0 zcf35pL)jNbFyen0A#ab6w??ca_oADK?9IZyYJ{?fXZM>s`plhuVdgF!5iK6!_gZ6! z^{1HG7VM`4KUaXDyMGJ{r8aE&ei;YEZ@_&RsxVm*@oZeUb$~nGo_ggrsq}-2lG!SI zS#woP+K9%bTjjVR*sAcA&)TZ6T$}G#4Lu&09rIfMzz#j2&2=&f1;B6|I}+b%NYC=E zRRN2t6M{PyPC@i+ecz4JZc8=k(4_MxQQ;dm7wd<9y@`Ne`CfgE|6PXxse#D$!zQXlvhHh0EALH2SQ zZE3VUy^2E8hHxTI`KVlMTs{xq_cI(9K$F2IP5fU@0yA~E(v2SwabpI)VA2pC4{wjI z(;9WdM?XM^55;(Wv))rjs$v0WNcYgd!&{TrE66gj7n2vt+Prc-2 zb-?J+1&X1|j8_R8ZqWSAad+m&sd9N0c`= z`+@R|H1+=K$o=|DJtM=)7`{ug zLlXT$J4)dni;($EurVKxQ8ypPKwNOAs;doKm+!Fkfo=8MLu_=o4Q~;1A1@8Y+sBxZ zCcF#*<;Sd*7gM6lG4w^)Z|F5rTdK|pimp@%O9Q@kU`Y&P5s;}<%Lb4_u9UHmE9^cR z*VmQ_&uJ%tC*5i3aEW*tNGJ<&&-5ux)WrJ$2_2BP?Ig#^aQ&t^E8JBL9i)=Flals2S`{yZO-U&oE%uUQIDz z51I9|Og`=Xe%$Bx+R&$+ZRtkyO~zzCN$?I!yyVGnn3;w&Oz{AC`$Su=t5_;>UBs+n z*7Qj?1k?y%{b=b{{#S>Mx_tm6YYtbe9h9>N4nE<9-Gqn-I0B?xw;|e=+ix14*1|7T zdE-V*|A7J#T=9+pj3?5#?gyrB`xxIbynHl1BUFyQ7JJN*L3DHwVgDCyTFKF!nY0Z| zug{FYq=|bWc+W0{!bX7K0Z$_>%$=SNE>$8aCwF#TYINa7I|}|=f}OG*d(aVc9KlYt z*&-*XOUMzelg-m#`#GE3AC z6*B?gZ{;Q{m$MLvE^wKZC2Xw}i(!SZri%nud`q2e%neI*h(|5P0+1y9i{3pcEI~lA zG3s6XO@R%gtON-p#Ssj)lS|Z&^wN^Kx+GVzUhI8A^Z+^u!QJ#*fMJHQm$94JBb@!I zlOvot%$W;Zu#m-R4rL+*hq>Zn{avUVgtEJJ#_D3|nakYI`uX;=-{$q%NON?9l;`80Jk75FS#`_*7#q zLCD~O8~I%3!PVAYWzAVAj5E~gX1xRRxlzGq8161vP;?6wrk)&_xj{H5FvBJ#6)H)O zyPC;zb09|qa-8?;#+00mY8JDz%v&xt4yS8OYX<)zm>1y5Pb9@p$an-S4aDF~Nm^Kv zyYpucdr1)ZAaqI@T`-=GW&Sc@{Tg2yMK?v^-y?2ew@u){{7<(gKlXlG(uV23pgX7q z8wOn#C#B6vd_-XW-P63fq%b=5^hbbBrE#BP`fbiHl%mma6zc)cnNl7KD`L|+S7aoG zA;3b?_{=k?doN^l8?dwVyYC{K2H*zv+ZU?Tegb5R8TLQ@KRd_{re8p(O zVp)1&v#`v@pdS^)N27aG#E7)3MYaWq>_rQg7mqaF?+i0KeIjOvMo#2Y`_mltZC1>x>y}J~5cDuxd3p8LXy@lxo zo@=BLW8BL~BU1#ye=LZf@&lp5LmdwPTTGy{*{XC>Q8q2%RE#IUb8_HXhp?={!o<9x z6BwU%?-7_cV1s8gDiDu4jJF!OP0|>>P{LhNiy9O^RgotZ=OYv?tV&!!0=h$0ls{cj zwpflAgDp07*fBWceY{frWyRu|_$L}1rMqlqiTRGC;ev|HXLaf-gRoywWX+w6ffny3 zmMxAEq6dm$H-7W6)bDC!U6vJd8uNEvrFweBqAkGP&H2PAcokobM8h`OjcNHNP!s0}$NhAiJQoM4#m9vS zAHXvkZ&Nv%BC0B>iojEkOQWBq;Zb6@Pr!5Uz@tfUJsS|ATdxj_SA}k#GI?~H(sls> zU|K3ux9Ulg0Lv>SSrq?r1|4ulD0ii|532(Ib`F>jb~jha#{RiqGu+MX8>Vvx^l+1! zzZ1!;MASOujo5K?rhqy6t#C3e$Qg|~5psCJdYg=V@n6h1T;J8qSi3>k0Kuu!8B@%7 zJ0Z+uV|4wB^=gupiXBN;HH)k3Mk%2$T}P>_f6}NCwP+w+w`4l~YVEg2v2E_gYCV^( z!cEwAP`#gstI@iEpqk$!M*x66jS_benGhhfyQ5yMjV@M`J^RYN^$|&b+>>^*rV_rytb@={nl+-H(vDTtRvo;zt=SnuwtX1-hb0kg(?iBm52|SmgtefE@ zrueX#P&hV=weMfH<~4R9=6ue9fQ7J7*$zb{r6w zbVDheld*$+&i-6IW0m6=tTwWnDq65Soavcg<9rGW40hPCRJZfFQh1y|PSChIfmrjP z+E}Q}QILOKUJS5 zKK&P;PWGu=8a1eQ2e>l;HaT3T00aS!U@1kqo$=rdCQvv}Wao%@L#18jo5KC{n?y>H zE7uYB5ZpC(b>KueCsa%pxYz#Y&ag6Ye=I9Mo`uLp6Gsqix)EEa z=ua7ZwpXaYK50UnWxs6X5DmC)?cB0EN(Wu1`3IQiE5yQ5Gc@bPj05s9s3#B>$c%DzFIqi=LQN`ID!6V?v~?g3fP-masua?Gg7qaU;ZP@;U> zq9H04pT506S00cj94YLVdF$7Fo+neu0}s@Xv>G|FNdT&lwv9sOw;taBkfRx;a8xjk zO<7^nAaaOOt=u4MP>;f@widpT8R%#<`Y{=#ZA$z76+C4Jnxwk!Q^In<))En?n!v^` z4NLg&gwk{6QpSiGx6Qb%Wt)Vr;Zo*W?~mHtY+?D04ikvj(rKO;{9$SHc#H3H_p2NUurl-| z`D%i|89RXLwkkqNF-h3hlAX!54o4@4)~UY}^gI{`Bv8T)?nY1!1MVf8*S4^mcW~6V z2sny`XC!S%4F&*E2iJciY_I)#^o^*87lrbQMxp<0)x24i-&X@93Si$joRsKi5&@Sf zu~5K`m`KK;p=;#)N_dKOCnHT(FS7i*L!!F{!mDhal;|0W){{vr8soR3uV^Q4%p2-3)n_noUqF$z%$)$!P1{*Tfa#$S^b`tW4 z_D-a1beW0P(RGPp{AXO5_18OKf*w%_p^lcRS0#g(cuxXSQoX(hq&2XAHPMGA8UcX+ zGYe7iR}~GitX|SGNN?mLtVhI$?l^=MmrUCf*G3szlIFw{c}mRyRU5va=$ zm`kn|xm4r;K5p*_->f4`YxhG$Mc3MBG(bZ|n^;QG;fJ~C2p3J&?g=-v=iBHa8>RLv z8!fOAL&V+G9%-YaZ8R8OK-(VI4k?QHECvNiBA{YMd>R{kL7k5c9wF^c`O zjXto^j%JqsaKIt}z&#k*MfM}e^d;6_3l$HYo)Go0gMLbJXUvU-E;+SzLjzfW5y33; zgt;=-Vr7__aUAIUD0<}~mnFauLB}~1)n!~2adMi2eH^iPPRJMe%ayb|@P zbq=W4o~8vlL$!Upk#lWVD-=AyA9YLgzDyr2PzD5a5GM0r2mK2S?_{F+wAmQU ztDng0RU8^*QE#y??K11&$pYktYMdF_4d<@6I%1L;=bG(bRP|h}Q4Kpt`t8 zv~lNV(WVo&h&C^7HEv5BTybc4!Sa@Y8b|geChmtdvaV(FgKMrAOtm$;O)@2^1)oT! zCa8L`Pjs*+gj*9+Ly8`t^%NdJfI$E;BxiNZ@L;MzczAiS^iW`y45&QP{X~mQF5Ioc zeEPRX^HkBL!W)9}--zG?^W`LI6o^pCcr!StH=cyhR!T=QJulFKyir84>X&r7>ZZ$< zq9k&Xt%zk-((q};r_QHeZae>pKmS*s=6QDX=NtNTqEC%a2Up-1=Omc|q}^rLCU0i0 zB%9kU(6-v5xOs7lY!05tC7L7AT&eqX@9}1Wj87+wTW$hEtn?uY%P1coDsqTy!P$)Q z#R(IanRVl<;O{n z#a3PS?j>n5K|usi2A5=rzc0w|Uy17#RuDL4Vygd+%dvl#gB3Ueb`Uu9FM&f8$n`;b zOW=`vCHROpia_j%kX9?M{clL~?gxzW^3*;bL@x#5r*UR1?*p7s{z;hm0A4ffS?7;d4QzJQCVF_YNFf10!~+`^?9ln=v>%mF zo5Wo0Apn>&2f{t7xDCLDs;F5h#o8XI?X1dvSNWVl3jefCnAn^OP*yYN{} z77@DDR!JuuIAGBQ7>ED^b-=*hfB~tewQ)VLfsJ%#eNk_Wmy|6=MEx^H76&Hwuw^9D zsVYmi%0#c@>3m8+A=I?<^E@4|D%&T?cMEq%F$^f>4lo@U#TcjpzX3o*ObBpxNCsPq znOwP!KrM?I#EKeR6dEwf2jH4F;45$mnrZf>5225O1$NSWD+{di>5qNd@6*JmFXK_RHWQCY!Tk5@S{#bC>e0fAr?%bG`=vQjo-2D6o>GQo5l5zS9d3c7 zCjlZv(MwTOR8GHx(Sf!hza@wwCWC&z-wj}K!9R&7VHv?Jg(hS3L=`nOhboLsny6LS zlYGzp*#4*azWqN`a;(TG&{zdlif+GOl|L&s42bfAqaqU1_u}Y%EcwNhi`p@i7ny#5}NM29EQ1W|xA&AuK-Z^qnR7Dq3{(GIpmU7e_~P-{uCyI&;HLkT$F zZAo;e{w_(P8?=^-ljyP}`YL1jZngYYHB9*ftM2Hnt<#|ajCCUFbp03bBo>vQS%5wM z=k{tl`174;`=vUeiUv=K%rFh1*a5$!Th?>qS)FCVB{!0FO0{f!IRxkUa<#WIvtGvi zbVph*M|r5^2>wCMz6L1Lo~$wBo`+ci5Co;;mn9z!Kr60=RIu1YNy@OOi=ZS^yYPD5 z6LlAXMMdCHDK1BQ`kmhEAQg4HFMUKZsQ1njO;xk&BzzNoEjmcPCI`9ZZ_@njZ~kU$ z_$8$DL0yGcmE*PY58;&(_1sYvgO5tLgdW&T_fj}JbThd^D2b!e$UBR{7ow68W=fSZ|K7ezDt&ScD$+CKJ{L&Thm-jwbfq5Fb;5@2u~`!&fZFSpsGoPG5Nn_jt%Z&qo;NSf7kZE}$#EJ9>2Q~I4_N}Jn|rOjO~?Ok z3yJ7iOf^U&+(DtKx$l=1qa04W(*O~>+quL<#pAf%N!64x>4A)jD!K)AEX^{zctjSa#@?I_c9-$pZInpKj|@=hHpf&cEl+H<|Bra&Ne0x>c}c?^ZXk@4*8)_&c7p_FaNRCbPvH zDKI*Fddq#`krK|9$y>Uu)UhaA3Luq@3nP6ElLe;9ln$;e<+7bClHgKQwqSJMnIs`5 zh?8nC*col*0TOp3=?EGGyI@}NxjI}3WmJs7G6{>7uojH1YFGywG3kxmV=1Xq!-aK? zt)sJ}-dSf)0uP7h5v+mvO2mkZ;RFR2mCS`W`cq~-jL+<>tbBGBUWKxMu!u0pcCgV| z#{=WJ3B%CZt8kXY=j8};C+%yOX7qUoSBEFYI?a`3{*|+_6p7H}^0Pq^%8_Qe-94rRZRF zF^#lL%8AEbd#dG1SPrwve39Z!v)pfGg_T*(_%vxtoj-4^fT%o4J~=*~kd9}XW>DAN zQBN3*!2qzr5r^L>Tvv|ED9MJ(Un+(55;B7aOYuWs)#i?pd9KI)rYE_(WKJtZC+hrL zq9fRZG>uz;Z1$eG()^9D1JhPrMTIYwUrO|>epV48u-7m09Bd2{-vyvn%)O7$fn)-I zSKVG1CW;=w;`Yl7Q8ojj=PV|Fe`{UgDzXN3$L_mCe{Uk?pto3N?Zq{=8o##4@<|qv z5}TGDWyuF&JO=u-!VyPnv$afPmtQWsFB4g=vE4~)K5Z-mCp}3vrO)cK#U3f~Y>AJQ zafPetd-@5?4QS`!w_ljyW-*x>=kE%I4YcKae4ixiG+N}JJ}RtONqv~!$pb8uppMY25F#;0zzH1T&zKIJ^4@k-yz z=A|vP^`8oMWicO;uk-W*?Cr17gd(P@*e570s$;-a}dd0lWSo5be7<^uIGAKxeM^&O{ z%i&uYCJ?V?I00-eJq3SImf?6m%Fy00?bKttlC;W~!wAyPh%)(h1`2^;Zo#^;W)N(3 zOAy9Bx~`!$CT_I7N!%c3jJ>iN(D$Skv4<%1N?BLyF#PHSIMeQp*IO3L@;LG7zx&j+ z-7)^Wv+e#`{=D0#pYmzo)1puFvU#bsmwD#PE_0N$*v6+ZDZ+TTK%Ro=^C>f|c%-DQ zN6LN&>Ly3ZPJrOu3ilJ$$1JqLVk_raxzi@Z-0W5#(|mpa9oM7>9#7;k?n$we724H6 zIS9m{`D{TV^YvMk_z1Zu`?(4;a$ZtC9jCTz>RMH5ySevBQhreHT?!9U=WX~tC&k&# zVjouQ&DH4EYPbS1d-y>GFvX_8I1zzNJ=l6zOUQU2Mi}nw>1z2I0>*@W0n;DGBpOQf z%y!$|>VqCbWMp|qOHX68zK@}5Gzb0#UF;F6Lo`mUO-BJ3Mwzh)L%r<+bFpmuZ34JV zum~CtDO@6o4a7;ghuyMLiu!p8#1fC!vVQ_5uvzg6kuBMOw_$1_+S9d0gzPfx?lQPh zF-_GMD!Tp3uw>_{?bKE7+)XJ0v%w0HS;qM^Z9A{D?kFA5;fEQU*B0w6%!l|;CG4P# z`ob3DEG`^c2k6pkL&F64T%t`X+P~J?xJ_@@u;4G-tK;&OF(WglCTG{A2%{3It39h0 zEvSWW)ta24(KchLz!Z}5Eu4y%J4Aby((nv z(=k5HO%^Kt97V}eVc$*mFnbQdu#V$eyrL}Cx+Fa z15f5QQ3W;je|`4rs_kg%NRDJJ!>bO9{LWy=S<_nsUDq;2RhEq0H-G?yPu_$%F$j$S zix6hxz9H{V3ujB%8;xKH8DMZpSf>EdG}ac6?Da*psR*GV6ryY1>$EswNS$pJAbi`WP8x^I?-!F;p1F8ook7sDer0wNnoakip|wAnNA~5EwIY zPy>a>@_BW%v2Xn%sa+_fjSFS4@FpLq&iHk1K=3579O_pzEF@KVJpcoBlY9Z$hl$!< z^TFrFn*xkQUdIS1wxizJ>gp*<@tXY$g*pqjh->>sFz6T0NWVxzpZ5B6-4%@PzO$q- zm#nr(rx!u_kpEc3=CF;BEUJK8=MlZs5n-l<V#a1R&zlQ7szyjU$1zbb!LYqe5nujj2Tc#^_ z_Dxyc`F^fiLf>PO@)LfFyBbzAGGqNpA$}=$3xz>9hQ(gQimHLm&`e&9r@W|yvP+e5 z-NY1YTQ-W=^fJv5kAgZ+VqHc^xljz%MG%jQCIj6fcm`hw-|YuuJ{VTd&dkC6s%TvI zaX60n3k>7{ZC$%?3b>>iOQMMH1(dq7lyR1*LrGn$x+~#4(!sWdJX70Ra1zyN2*L3E zTCSQ6*q><0+J25r@{=W>IHk7pd-J*1ek;%9e5U+(h{sYHM^1&Idoxc5e2IRpMij0C z;{u#xA;t=1S`ybn*)mFtzGFacPs4mVyw66ruW-f&DtUPSxDJxH^t@g@Uyx2nN zGuc?8DkINit_rDNM!pDA%*2xWj6B51;*t(`UB(bheg$GTKhbAFFGAzNEn)Q|j$jF$ z(UoH?FWC?iPeBD5cGuQeu%*FUHhR^DzqQeF8y=j(U_pG)fRp5Ufmo#%UHK(UJ0Wxu zv}{fU9|>PoYCs#ea($q`>qZ4vx#$uH)E2w5t2Os0h4|wbZx!lR`JK$K;-UoiVCLqy zsbcaiYGr-$pi~GzweE+0ZtHB((&X~9evp~NF1NYchL4;G*|3S(Hu($=va03rS*_Tc zbXwjWyMHwgAa^qe>Z^sqTDl0)nTdiDs0`gl7b#JXg3;R|X?pon(AU@V*e|FK^uoyhU7Gpi&Eo-XoDtZUz zwbVTD9^(OaqMj2Ej=zxX*U6C-)@49%(#_{)>AVFjJG_JEezjn4$~yLY!&p2*>aM^7 zgTb8(SIlPfO~ycyRiK z(texzHtYmTZGoSAOpS%087hP*Vs7NZ^YhjK*J#a5dY+AOEjC6_DU&6%2|FBsb6w3g zOR{O+IMBSU{bwq+EXYCo3j2aGJtYPkqi0}0Dpd6R%BQ8S>`Vm?>M|9WnNJFT&dSl( zbpav}%jcTLVz$!_xmE4KqYL|?I16Ut>rh!8K&8s6Q_=K(TQFQ1!*y^Ow+fd^*q-8W z<6^164lNgc95=jTh*2*bcZsdD5{>*y+&f}N^R8Lu|03?a1MR5F{qK3!S~IizK4+g^ zl5=uSdO|`11OkBsQs`BR^dwZpf+(P%5~@;ch=~5w1n^oAEXY;liiwEW%k^3iOCkz_ zD5BTi@_xQ+_JI@7_r1S=-kXz|J$v@ds?U1*^Q>^Qyh)v%91eiSmr5z2Vnvmxnqnjz zm_B}v6tlkQz({eeXB@`(gZJu9spZIcRs|1sptgx)WI~pxS+c-zvV34iz6TOvaQab zq+1Ejxg9ZzgfER!HA9c2g3+2E7)XF04yx{7ItV|Kg8*P{RdApkLLfefOymwvn&-Jy zUeaL~)8BOSsH_)FQsfUx;WbIJAfg|weX*r1 zbkXLK9<*)?ODjkLS7IW26={_#s18Q zsD&phIup{9{VDEbBB^%l(iK>1ardTTXc9;9sqcBTse`5`{ekz6%vN=2EWP`hw2eSi ze|rcPxpifJqRQ}}@Y|~e(y)$`$Kfo-p-XM`r*8Hn88{=Jv(2o6+wF|!&va9c-#NLP zR->8>NOA5m$#QVY0BvrsvDdPJv|!Te=hnh!zTg%CD21`(;J*sy9Z$CQ6&_;+ z*L@N58QJe2+W6&`y(F$sQPdROV(MnnWaRE-3a%GJHro3M18E2mGrzIl{X~nAa_xZ^mTqfp<{(_2G%V07J zBi+hC8&%;rPDcs%5~i-9+w6%z5A+_UmD0mX89cR{vJOaY^zwR#lhP!{CaGBremzc? zLtP$cs}~hb7wCp*00WP0w_aXfmVB6YOQV3kxmYRFS)jC{m-QQbPjb(s-v!4*5rT07 zCCI*zWcwyydXNIo#bbx4!x-=k4^f6yLZewmQ-_p8GRn*k7C>|q1`5{ZJe>8aw5-DY z+bvs^FK#ARglxOZFN4vb^9&E`S))hRZs<@N&#g(<+##Nct}JE-P;`rrh9Wh7}!nB!%TUuZa0>B~L-7v(IA(io8Gk2e~GhUfcyW^m;;TY@fKq8k=eK z8&MUQE$hm=yOPU5O13rFHV`oHGmTV_r!yV{SEo7gP!k%sB6Wti^d`y|dL{05CLV7r z?^1ZamN#WW0pc=ot73IwGxPsO5XE<;1f=be>&6_dSvg@iYDxwC5= z173!;pbJ_=9f)dRpLh*gs+P*W*43Kmnvgv`LM{kOhbVVJ#8XMfv75tid*e!cP{K%k zj+8S^HQS#>k5>#X4=XB~v{`mw>%5NS+j;r-nT>Te?18LJA}OBYSig)g3QS%_{9!_H zK?Qr~Tgu-`HKjnLI-?i_%Lz?mV ziTgV~9}X@Zk{+CLgn#;;%8NVsKC7O<^Z)GrzkdFdthGk9NK2C*+>EuUgdWv=aOIGN z2j`GO5U;bPcDuI^X=f1h0TY|l{N3RR$eys5d%MDi%b5Y&zeu#z&VKKI1or`_2TL8QH#BN z$ER7U_fM4lc?W6YX-fENEc=yq;s5mMuQ-2DZGSkcgB@dJhY2V-m~W9O;!c4}AQir= zcDM*NRO2t*WLiwSLU$^=(KNO^5=y`xU?0Pg9;Rqwrxuv?Vuzu)p-b}#?;f`B1FQVd zDnB66h+ptWVI*M@s^m!BBU*2ug6yxl(0W=Bxo>F^Y8)b*@7D`3;ZwpRWJkg*H!VBT zEtKO|37O={RC^G0u#D6b5pp@IU~dCO!y`bh;ypYN#QB2m(aYBP1`?GzsrZ$h(BrS2 za=mS!rqGGE_Qy@Q|C=WhAe9lgU5 z?+sti_L<=FcJG!2wjv@k7yS5Nm-Tb!Nkj2{%0dU|?4jbF?>qPC zzkcU8&Tn(sPkBeW(6&Bm&!}sf8_$#VqKo65&Uh~LPRC7p=CF7@WzwDE-F+wB>D`!D z7_?P>W%sInz^!*>&Sx#Nef-J*5T@J-93`eucf-nYuB5`q+s8h9PT@(%XN}K&+xLs7 z`&La^>2)Upb>GUg{cFCewGs~m${UNn_O7fXe{!YG&fg~l!~u%>lADwg^Nr5H!lQnK z;DWQs%Uhix+MjLN*v(4oL-rqTqM|~{#b;rk;!5a8cXZ{xw@o+1&ianUDglBFk{M6--!otfo?LKAfVoM8u@ABX3**O&RISUUcX&oLZ);oKn z&#&I!rPUDOt0e_BMTZyU*Y3^N;(iSNr_smx;-r z!1o>C^1HND3ik}KKC^QS-|i zn-lv0Z@eJiskU=ixGymeIWZ5lB|N=*-?F0o`chAvL%yHwYx@;tmX@ch@|F1-Ht}1L zrM0Ey19<+xu|x8Mb2hfcy^d3k9%6lVJUc=jpYKx|E)Au_%aZSg?E1Q0UANbxr$r|D zOt5>qkdJEiLmJB%ZMF1ahHN4$6qAU!gw!V?g!?E-Mem>MMTN#FvhNYCHsBk0zQB6m zE7)bMkLYHw%OJX)u~9?s;OdWk%}9qdQ%X%E4b$7v9?XC^E&;rSaWt*vP@;j7 za+gHOHf%&Zy9VhVBPlW7%|R7RPzEOtOR2% zH>@W*;C{L#$)r1NPHjs%GoA-Fr&Ve}`}GtGebgH&7PmM}?qHZz9h^`Zt9tQ!3ItSq zy6{DJv8LH_%8j|bAVPEyWh0er%kMATY36K|Q_WaBf1$WleA#o-57Q@I7rz$g{&>GQ z?-8#j7ng6v5PA)0*f6?0=dME3Q{H+^Q;6B(D=W`4nLhz-Mpz*T|e&aL2@vgZ;vzt=;Y{>5q!=F=V z(C{p9q$9C(#fB>%3;A7P7;DUj!*CyW!Qf#*&o@H;-Y|S?pq<0-4*8eE@X~>vfpM30 z|G?)zR%?Ia^9TL#kG%hz59?6>O%M;+>Lf4#ouGR1HUZ}|`7S_Fk`&R2Bjaz9CKQ*w zoV&7ZFKK_yj!zZ$bYJNbhk%T_D>DoHZk?Z_lVp9_$q{*-l`r)$6``(YsCUKPc8`RGOm(!H|(^dsIr0iK%>WG3&m*WQPefVnT2y-&z+ z;<307X*-u~lyF;*cze`WesA`rfA(m*)c9yGcAST;A zp8K**O!&(w3cuJufWaMbzk)DIw2^%D7F2LiP7;3y#zwA%qUJfC8xS9mtnNj*msoqU zdP1?8RsGW9nuu>Kj^cimBvw&A`lYwacN1}iY?vh_e}k*N6BG?fJO=ht( zxvu5k-4Sm+&>`QQcDmfoOUlVN38_KdCcy8oe=phHI4U8`)f6zp0!{Ij$5AFO@d?YD zmLFq;CDDQ7BN)17bsMN=xxI{aDqvu0z(j}EQN9`F5)>V z$-CUS2{z>`U3fj|hcrC6@HxAhPpH@R`YJzlENBb?`+R_744+Ay2>4ys(uG8V#qvck z!yN}~4CR(YIpI^lbHPF$+eH6m2z^dp@;i{hNF1lL`jUU#*)?%ZAUh5Uc&2ZBmu8QCn6 z#%OLdefm_kW~Oij+FhQQ6=z@m6BCuww(;0DTjBX!6x+B(a9aG!4dlJ&?Yito#tjcCU zHq}o-nP0%BG74x`m9mDSXFN#nhGV3%O<-z%M(Qeo`5222au zUG3AIK<@Rd+Fl7lf6!l$uk1q%lJZIM5BDwZ6#}~KGUzhezr_4($_g5eD&P)ef+Nfk zun`C%Za+aP21h7|Frc%s2&ZuL%pWQrW{yTN{UINM9l`-piOg}%V!3zWA=b2BTF~r( z69zu|y0R(hC^OTYJm~V*_}AKN>aWFQ5`zSjP(cUreH>gu1vrqO3&xmi1qP$?>DXch zI+9R6AzEUtmKP4aV+gW9$?{BfL%~ET+&6eVrmAK|b*{iye(7dLcT`eOv@g+D2;BLuI-#kBB zArZS9DUZ^ICWEGXYisa$4%e8raZJLH%3j-Q-^UMuZcWWE9HM<>IvUC^VFwPij5KXB zde%^mQBB@s|aqM z7l+qY*;6cbLnvf2m_!{F`sVijC!=8stEN;4rQOKaA=_0xNZ?{Wl@|5jlU$xQ0XRRG zff>>GI*U^A*YnM3BMAqOR!4r8G5L2{@+f-5s+)a;?eC9v$FXUx*%>yMhB&nEVW`n&aLrn92Kl|C9IUa(`d^h@M^Uf}SO|&@Xd)lln%DUKJV9 zgHe9$@FZSxyHWZclydk#DP@EDfqp;@EI_>0+Ww@P5ts9!}a zOn0_2pT^LR+G>uewWV}jSF7B(oy#+G@FGJB&BHcO#%j6*SO|7l5d2F?JY9W(I}EtN zp{F*8tK1^8H6K>*?Kr$C%9yuCu!1e>?Cn0htGD;Co(;19K}|Gge_8UlF1ONGt)T&Cz>o z>zK1xnceB`$qjgo+powTqI9nBcT!?Hdy^90{nhNMXomWmm;56bo6d+-vUgJ-Or`Vh zfph>47?E)-2-%g==3d5lRv}J^Q<=Ta+gMiv6ANW>A3XWIY-JV0J?ouj0|p`uyK+ej z!7{ruB|H>+B;^aGg3>a#kWaeXjRsC8!|8lxmtkt`?i_1W5hEV+<)6~jg2bF4w6(VH)PQT|gT8!@#y35)O?DL1ixUpr zuOz?4Yo-cw6?lG&^=KEhk7i^dA_Ad}!Du;NOL9n*)~_rSc&G9ipgsN_ia6qU3rr^s zJj6IYx5cJz=J!9uoH(K;Jktpr5&$AT9xRDd53*QqA$c`?SCqV>V!}h50v_4>NLG^D z1sO!Esl1Bt@YnVoDgj%3583M3RxOX`FzK4D)biw_{K?ckk=idAcktAYQrM3U z+}dSqKy!fia4&X=AW2iuadbJ=HI z@@9xskpCvtu)B5#VYTiF0G59^xFgS~rgh;wds#T5#Ks+2wYdxMxR32tgP-KB)9p0R zVW&F|JI$RAo<~;3HY8ssY&Kq6ZRzFSpr~J5&LS6+*;VGRWSN*ea#sq&%h-TY+@+FV zyslEaSRjpsu^-tQno4+sw^!T6qz>Xf0T9KvF}}_4uf|b>tN7fU_Afif=N7fU?ZLOb z;&XctfYBo9mC9V+{&fwb_XBfpH2((6-e^oe!#L5~SK3iB^3lTM!>iqewC^Nf>DT}I z@iU9Z-3!{KpR1PG`ThcqS9=xk3VS(icwsE;)wJXMlw|}`e5HpXgY>z^!?)A_-g2;2 zjMTF5N(kRc?L6kR0es`mpa=TRYih+xfnK(4rufMh%TI(Y>% zC&F7(;uK-6V3n0;yIC`m`^m84x94sHh_E-XMW8|g*^Y>u>|Dw>dq#Y-Grl<{-@Q;{ zLKi0w5imysv5W?H5Bv$NACfbb;+n|O3G<77l%5l7p3VVD&@wj!XW>YK9Z`r(P;;d! zm9=Uy)oimxTO~^7@!VF($n));6`U^FPS6`k3rMv|)ou7!Q^;$xJj{zC93wzGkB^YF zcN`8$)MPZ|8Yv=P!@{Gug>JD5#~?XVjxA6Ii-lq%cxcUVL> zORKW81~ePkp4x`&Djz@cc)l~lk5AZkh+?I_KCF|>CA6DX`pZO$F+u(3=I8g4zKT_g zeNTQ9WCZ4l(Ich}1YJCZc@7f;&&i(v*9I|yC=%7?8lR=AC!mt)=6AU{OXpNh;fH*S z_ei^+jq(d#{E#8)ZuTSKvmpT5Xx(+$d_EQCgCRGY6R#x};;GJ?_o?6gNnd52&Wez>xtz$c7e(mR1g@;XC zcQ9o08D?|ay26jTSaqjR?2GMeDm*8B5vw*%IqSODy}+Z?*@#&K^o|zj4s##2{*PGB z&NmS1^N`5&%QQs&3##Y1IVf+!%j{g;27+IqTf7!tYHKKawI`77nX+PTkN(%e#)F#z zZI~$QMyrk6{zU8DXm*ahD4b|Z*{Nru%#>TDbNm5}#W|Fn9%rwNg;F1J3onJjpJ$&W z{iBs%23yfXc2V&WV-v4e*`v}f_B3jMF(&!Ht$F74fz`G=UF%OJPxV1N48wtheXZHy z&Y|hCT8OYPyH31+f-OsTb4&Wi+dX+j6$T|%B);R~a2czUxtu%kJmZN$uIJg0=XO@* zOn(MmZJ9qYC9?$Z<8mS${2qwKV&?ZCWNht3DbvA-=Vt5N`o0rwj~#0!ZfFm`yI(TV z_jGsLBcn}gZHetpY53`}jqt8d|17_~*yMC?^buadm;A2CrE!+oSXs`qf)H$`3C zJ&Nz~!ttJT{SG5@hQLWF+S|mT*Zs2PzS4!NCKgiw(yiv+YyCGH@d?GWzoPjX|DMTD z04STRA6nPwm=#G@fo!fXgGa#29r&R1;c4FiZ_|gHzpkhGw-~u~=jF3YGeFUOejXln zeX!A|m8#W#e|C!idUsJxkM{fWl)mZpk!qvXN9jU3Z-dIBevvv5vH;u7uwzAnXh^3^ z4uML4$Pq31*6BOQ-qB@j|8ArV6~2H&f_1k+@(w|xcz(zY_YWB^riiny#0rVXrOQSm zavAY6^g4o0-laD-HK5a~#=e{M_=KFkN+1`c5f%av@<{4=l1J>27ikBPqbt zmU8uWgx(f;%F|sMxL9VmRi?yL_R|q;Kq#5R^5!bNnc-g9Q{3I(4hXo*!ZNS+`*Geo zkb<;{XQW&en}_lA;qI{PP|X(=SV)8dVi!pR%NBf*s<9$?38p2-?_%+>4bP6 z?;UyYq{nxh62G79PU$__)~2WWlc-03hbvT((bb`URm7=NS|vxv?%e*D+IcD|dx3SVL!#RiT2J>VC!AncvBOpr3@BvCz zM1n{-O=iA;Ny&Yk*xTSomcxSt4)G;(p1u}2skF+qS3{Nt?P3TfN_>3PDxCxl6xX%n z0n4`t0sgg39>JA=6E^s)Ze}=jx~Fpcb#8Zpd(zvSyVU1L15$_P2W0n%m;EceOM7|f zJ%{V1-a9p453M*OKPgipCVJuCq{h?erQvuP38n6Cf%%l#nFX37k79w3J4sbwS+Qu5 zr@XU@{T;n(zNtK8W7#&9ze0WuKHli!M=PH5jU*SURM)5LX0B(<*XQf}`fOblLTY@! z5Yn@MB#9zD-D%I$*CHfR?+oynrzD|B-THwu@-V#KuOn7~jbBl${-ZPfYbTmAHL@bt z4zl3P#Cf=c3dcK3@gz@nZJv&VXh1)1B^9 z5`zfG?V_vno+YEBBZ^xsSezaPy>z99@g~O-T4-=*U8_pF`S~`d4?TnZ`_p*kHnwTA z?4#yBV%?;fM(_t(By3>oZd0b>kuRG2g7stK&m7xHK25aJZ<_mt4SY-Yf8_FQu4^lv zm`!Z1z4qlQxh_9f&rx|Q^lo=h#z#p}NC0me1~nQpIaUikVI5~h{zzb;)bu5SqvDO3 z@MEKlu1r?Ue1jiM;*0Q(~V+A z?ilZyp3b9s9MSxHBKMWrOjrmsC{Ze@Vm+74dLhiy{$#Ey)eV&z*}|(m5zj^CL`Q$q z<3W!Os>^i`bjhc+tDk0THP?ZJZah4|nUZNY+3YBtpp_}q(@)18rSg2Jlz=g}-q!7v zd|f_MU$yK@<{0IB84$z(9L$({__NSOJh#G9wCU6ooQJqnR2NSf-d?QwVso^M;aK-#%1b^O3+`8_tObjfvGRM8O|Y;4;WT`$ zaZ!*P3iIPo6kbd7G+)qQ+)5n|b8YJNut&X@zR|lk_|lW~z<%w*Z)q!^{suYqR>C`W zeD*0l^&3~_^ViOvbPo04#2c}M1sJLS?$d{SbwU0*v<{Vrz2M|IC}*@XktOWMZCr5_ zA=l?OS-d8W8E3= z^>Z)dUg@7aHE(@wT`74opXlNlPl?FzFKzwSuS_D`^pX? zhC9aR%I*)~YbNfGCI637{@-Y@pEGu^K;mYW+yiCz*>ZWw zG5A<3!YV$GV4(xwy>1nMQ{5Vvfd(p;N)u^F=A-X9eGXC*1p{`0oh4iqS(ldg5^_ku zR|SQI2t&O_GM8$1e;2VIoxX+b+J!zkHdK`j+Vu{(K|HW=$(lDvoArkl!6EGzsm2DQ zw7)u@yKt;cDgEI#!3U&($;Xpi2VTcew@C(Riz{{|O z0Z1CMsHB)|sRW(UxP)DKTES7vIPab9_>I!xy>upb3_cCsjgV8I*ss^QFABODiPgAi z_Oest3JB&7L536kNHg)}~Oy9D&5@m$#s;;Qvt zBsaqBRer6Vx`e1u^bK|PRf(TS*w)`!W0+5gcgpoC$+sNNyEI48<3Hkjr1sf2**_6! z>h@F{0PCt+Q7%cOT+|ns((<|PW@op!(yV-T`)V9BfQ|Ju{KE{ee}gOG>rdI0Y1tUM z4RuHU!Aisg6wPQ9Z#lE`G>bQK{Dlq)}B*4FknZ zr_m|d$*_zkhf~7I0mW*5Qt3p`Zv)91YJVX0pF@ZRoY!l`hSQ`Y@;Ex9Dtx0k&VLCR z*&;&ucfpHL^WQyLj@=L5+Roa0X*y%w+04kOmGHVATvGsBl`SUfDuL z29L|o>ePXNGA3uDFR321&-TIMI|8=WfM$TGPx5(@fIexIkM+lNBuA8I@Z2cq5onth z0c>_W&y;efQET@)KgpliZ1-?ULV&KbUk3j;6Gs=>Mu#qvjRN!D9)35JP3%1;pHB2e@QFSWEuIVg(q zCCP18zJzvPM7zVF+tRJ{WJy#7@~N%M&D^I1m+(cI>ic3-7OD}w%M$iK5T#MQLYaUA z6R-VZwXUlj9pv9D`YJbHwJ+i%4P+C~_tb^^#tkDNEQ%^n( zJ|URL*acuNWDz?F$l>688Adi~M(g-HaUs9S!N49z7$DgtHjjQJ8{AIY%{I86c&^3s z&fBps_0FK^wd4ZJGR8%@_Ym9IExAdu`zB7yQ?L)5oUhH`GEvB5;n1|gZ_r%SZ(_vA z$|ilPP>+7o5bzG4uv_hWe1`G}Z5u*y*hGccK*8Rb;(09F*bGFEwRC%nebzP`&MN71 z&VJ%fHR+vM#cf9}gKTABjU%wy)J3c~l*g2rMH7A#@FXEizzw)^Y9Eib+(W@O_hnCY z+2dV~ut+lCAZWarm%jFcqW`&LM<*-yKSK_i8XWh&Lw6RW5KIci-+Uzc31T1u#em$j(DM0;BZaoiAAy9CRET}LF z{u>x0l4K?%SnC=%0>3G!;|MIcb>1!WP(wC2eR&wDlmm67G3MnM8{4k+(j@6v32JlH)U{UjkY z327SRqE23xoXtc3Rz>SJvH_4HkN^@!5LY&e{2HiB<7^V#sfcxLkR7nNR4 zc@a{w`PmtnFOdxBHTXkcWA20IZ!`BJ2A`$D06U~sKr=}`M*vK*zP|(dj(vd7T7sCg zhzSJMXe#K#ZNUC>`fxyL-~ZPh%q~y+zi2-$1kY;!31s@L;kYv2ojSSUB4_~O!U%i< zKuFB6m}~gEf#fbAPtaVT4(4CqE_HIPxSUbUuaFzR0uOscWx#OL8E!5L$IP+~sO*7Q zHnZ9Z@7PEl!w4t@RQir9{}8@32#RXhS^4N>&Kr0WMDc;;NZ?PI;z-^Eyi(L!ipn@r z4y_j*`KcIV=a(w^vB`rttEUR8WntpfAq(%WewrJ@3Nu8NH;avR`8|M+rVZ3Xm_Z}} zShw7t&Hs(tY*Grw6zWcQM&~#Kp`e)M4Vq;dGwM!(K5%nB?Bh(x>rS+6^!X!?T@tjSZhm-z(5IgID9bWosqt&c7%yvgwo;Zq>+`VR> zQTcB*e}e_~6$+|}l*0tyv$q?STnZcGH`s8|j+06GgRe?AT=badUcX?CAtiv%kAhH# zV^a>BsD3EvADUEsFVznv-<_yl6okwHWSb#H_W*MaVUCaEaWnBKLSd_9)f!7Ip*1v6c|KSGm027}CqROTD(B(=%w z)X)HAG^m?~fwHSzd}21OcE(Sn7Jh@%ob zwo!`Ax;$z6$?x_pay4p}B3<{Sv{*{}MfYJ*VP3h<73`vXNJwI4euVpT5i199PoM_k zbLX}1NWH6RA~7Uvc-3RO0bfnyKrK!GX1M2(=^;Xhxhsvv2a4+NeS_r4U%s`GF1w#}i{CZjjV)49FG z>SA%kQQ3bdq@M`>`u4@PN=22lNxTd~ z=QN%JVk&NDfjM3*%+)x>t{pzLMn*5?Dd;BFy+Zkf5Fgn?&E(B7w?xHZ`O=wf{0PI6TJ0=pa?szV5cF2`u$jw+KcoxMK zkhzR%^W*_0RHN=+jAztKfF97ST94OOB(x-D_&C_XeyJE0#{a#MHarM=B_@tO2@<=v zTlQGN9pjH0VPsEMsnXcdTOooyQDTw&tl*Ygel-jv@jMzK`F?86fjmUV{4ywUo;=EH zF5Tvi-Rf8uwRmQkA$&K<>p7G4M9dkm?JEn>nBkKX(#O2}xxgl%LnT(k0~F#2=G^_xAJpiYbDPGuGBU5yK~u(ZZVteoK)yaWf+Jb5Q!bMzVQ2$2Du`bEv4 zy+5(YH2jP)^#?0Wm7S!~p@|OfjhMKKE7%us5C?Y{HG3ZK-^eR$$i|e?xc%V?mPOW& zr}=+qWc$kQ*rz+$N105_c-WU%=Dmqu;%TuAKSYpOtrZ5(0{#NwV_Fwh&URwuFTt_{ zI?uPIcloWUZA&}jd3HRf@!S{BN5u2t@w`_&&y45Y;`zl}8PVPzxu=!;D%}{2NLH71 z^8NS-qB#R15OsDO&I5A5oAa#uZ#G_HPrU4f@c~@5c*s(Hy6gfz**hAA0oogka6-j= zV>U|3{X&3d?=)KhI4k4pa(kQkezNdppHK?cHUo)D6sMWjpsp8YLve{B8w+LDyv*B} zn`UF#N(TKWpr?+jCg0JT`ITi)GP|Ks#%^k}HS@&;yK&Z;2KQccT<$Yu;`IalgEXA! zO3x&}j4Jl7pulo8QR9C)?6 zK);b@6%e{w6hRaQ2!FG;xB74cf)@H-eqThcDZ{r&9P37~(xlo6D!UY%Tr7CELCdpL znPDq1=f8n%m<5+CSQi+}Q^_B&)btb znCQsgM4ip+Lbw*#>v%I7`gENA1@u;i%Moh9cr}Ep$6Fyo?k-U_1%nGoeTC5~Kj7_4 zzV&6#*pc*1+@XHWE>~av=IyV(c3E(ja?5WB7%gg71$Sj|SB3muE4_^gEn#wgo2%VO zvUB?*MdNapm9JA!LF>(U4LEzVE4>Mer0KUSQWpkLx zO)Q68vn_jkK#_R4JD2N}kPcnHL%0Dnbz(T*t@NbT0nP4OKD0LGj`dR!8V?Awn=iwT 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 z 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%0D&;! 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

xBVgkn9j@?GEO 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

p{1A9cgPOrc2G;y6v=lh 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
xR1|_@uo>ELYAe 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 z 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

< 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

7Cyxp8=qls?J-E#g&X+0iNEVY2WgeG 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%0A6PP8hD%e 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

LwzgprT`7A^i3xBB7w7V_+ft&L$$E zprT`7A^h$pBB7w7V_+eCdJ~aQP|-245PokHkx)?4F|ZJRe-n{VP|-245dL5jkx)?4 zF|ZKYCL*DrqGMno{NW}dp`fB;U?Kd`CL*DrqGMno{P89tp`fB;U?Kd;CL*DrqQ9c= ziZHMczPE`;D5&TdSP0?&+xd`CP|-245Wa5{kx)?4F|ZKcu!%@0sOT722;aYnNGPc2 z7+45Du!%@0sOT722tT-qNGPc27+45Dw24S4sOT722tT}uNGPc27+46$CL*DrqGMno z{KzIEp`fB;U?IG56Om9*(J`N16Om9*(J`C6jXE!EQGj;NGPc27+45z*+e81RCEk1gtu-Y5(+9h1{T6kY$6g0 zDmn%h!cT4@5(+9h1{T6kZ6Xp1Dmn%h!cT7^5(+9h1{T84Y$6g0Dmn%h!nuh^D5&Td zSO`D6iAX4@=onZCKevfUD5&TdSO`DAiAX4@=onZCZ`(v96jXE!EQGgjA`%KJItCWP zJ2u(#UwJ(QqM;+Xy=PQ33`~S;b08t3qG4bn{O0CBLPkZyz(n}1&4GlBiiUxS@UhK- zgp7)Yfr;?(&4GlBiiUxS@QKZVgp7)Yfr;?R&4GlBiiUxS@Ttv#gp7)Yfr(Hz2NE(W z8g3IXu<#(fRod&}Sk$pzPhZ{^=W7$;CpHHnl3xs#*UtvgF|ZKcwuwk6sOT722yfp+ zBotJ13@n6qY$6g0Dmn%h!aFw+2?Z4$0}CN-A`%KJItCWPyEYLC1r;3w3*p_Hh=hWQ zj)8^no=rqT!SM1k@gTfsb0FeGLcxWKhK?J@dp8jY83h+A8XmJ6zPgDx@z@dGw~08B zkYAB385b&svuWZ%_~-q!9+6NGetYjYaH2}<7+9|?|FWZqgo28W>1D6RUAAG_9HRM3 z(~bV>3+5|QY$0hf<9hYrb;hFLLPhx3ojD?*N$VJxSg*A2>__{7h48mxG^xX5Z=Ez5OE?Q<3dG4$Blu72jK&o0}&@O3NBPMbPP-^JUDecy?T!e6%98A zCKkd!ZVp78$SAl_(Q#v7;z9VQ&4Gx7jDiad9XAFR9)!6$a3Ue2prRpqNJuEC=onZC z@7zQr6jXE!EQGX)NGPc27+47J+C(H2RCEk1gm-Tu5(+9h1{T75HW3L06&(W$;k}!P zgo28WfraqCO+-RLMaRHGc>g9Mp`fB;U?F^96Om9*(J`7 z!t>g+W8y(*n*%4pzuLr!gxmL*0}Btr*Ea_uP9)@4q^gVy6%98ACLUyM6jU^XKinKR z5q@vieBeYvM!|)y*o}#W2jSl~5hs%RGA>j!+^;m#UD0u4ASs)1p`xKM!|)KjwEx&g^Gq7 z0~60HO?L+t9)zEl=8nByx9xx1QABvlE_R}zVIbLCP|-245dM7=kx)?4F|ZK6zKKXE zsOT722x}9O@Vq)Cs^}P42;bO5Botf-f3`b*AmT*$;6CyL5hoI=5)Bt?osA}Rt=$iv4 zl1h^(<3f>Ev5a%|w;l~0HwGpa9)ve<4n%Yn+^?#f0u3EE1}3V^?NtId1|}9Bgt$2n z5x%m^9*8)RkWn2+Lq}Djq2tED#KME{md$~P8a53bHwGpa9)$1P9EdoPkWnxU#Bd%= zEL5}K&~am6B79?WAmT(qM!{0)gXCw}83h+A8ai$aOe{PI-?upsaUvn3;6g=1$BluB zg$Lmcn*$Li5;6)dR5Wzl7?@ai5WatNAmT(q#`Bqd_~C7PG!8_Z7$$yVA^f*2h&Yju zQE;K6y&|VTL&uGQiG>H@t(yZ8;hVcd2dd46jvE6L3lG9iYz{;WC-B6=gYebOfhtQw z$NegSiG>H@CpQP;i=WtIa3W#6aSz?Z!h`Umn*$Li5;6)dR5Wzl7?@ai5PocPAmT(q zM!|)OhK?Hp6AKT*k8ch{oJhzhxKPp1absX2nwj%8J-@WSz-#EZF)*?4ApG*?K*WiJ zjDial4IMWICKeuqU)dapIFXQ1aG|21!9RIyDMu7&ctAkZfk3MvMc61R2- z7M@o(99zbPiiR5l6A!BD8*U6tEIc^gv57blzNM!~D5&TdSP0Lq{=kWZjDm`WjvEsT z55l)M5hoHdE>tvh3{2EF?X{_6U?IGD6Om9*(J`WCQLP15xz(V-XO+-RLMaRHG_~s@ep`fDU|0m%-d#;Ji12KP3 zKG+Mau|^OCNCG6m3d!y!cGmfKR3G(`ZOJ1SiI!Z(s-tRJmFh>G>QtvBTN?FIr+V&d z_R9s^_^z&dv#(|24feUE{D>4pL zGz?rwzX(=j9H?j*xR8DstjIV}(J*i!{VG_IaiF4M;6nO!up;9?MZ>^_^qXKs#(|24 zfeY!k!HSII<{PomD;fqaq;Cc*G7eNU3|vTOup;9?MZ>^_^sQh;#(|24feY!|!HSFn z6%7Ly(szOt83!sF1}>!U1}icSR5T1+NZ$+U8)ID>1}>yG1uHTRR5T1+NdFwH$T(2Z zFmNH2U`57(iiUv;>0g2s83!sF1}>yG2P-lTR5T1+NN)*NWE`ky7`Tw$8m!1TP|+}O zA-yeFk#V4+VcmLV9noBI7_s!@z~~zFmLi#{3zv*4z+rjzWApP8D?I+@cZ^4F)9R-(< z#fjyY!HNwT2MQ`4=omP0A^j>?uwuiG0|gZg9RnvO(yxPRLJxE-%2s6TI8g9FL&v~{ zdE;ju>E&Kdupwhd`c1T3upwi|frIw2%61e~WEDFK zDjw)}N|T0x6Bj0y-vui+WE?0M0-Tsgp9&UisQxkMfsTO_7bdb7xg7-+4;+@R;DLsY zf%Lv$!G??-2MSK@uDkIoBDG+}hKwBr6%VvKE5HLCAM^gE?-$Dv8N+u?zRj!Tn?^yk5f4f*C%k=k+GC@UEH zo~SAwXy~|9Or&1~3s!8%*pWUK98v`p4>a^U_2+_OV9{f!IB{Vj{W4fE{LJ#ae{hM3 z^rK+GiVYb%4y^iacL0}g;=)8$u_JvtvI|yhIPQuRQ5LMY{yZwG$PYAh44k-7{e{j4 z8af6}T$o624i>D~kg?-HLB#_N9RnvWOr*C23s!8%*irF7L&w003lr(B!GaYVGIks& zsCb~EW8lPviS)K$!HNwTJ1QP%=omP0VIsXfSg>M4#*PC86%RCY44k+yk=_w3Sg|2v zzf-ore(wWRJkXKf;l!h&Vcy`1uHTRR5T1+Nbe3- zWE`ky7`Tw`SHD-qK3%Y4L&k7{Cni>J^%=+gevgKM3+em8ii`sl4Fea_4}ujL2Pzr{ zE~G11k#V4+Vc0~HMe7m`2sxZZ#B@iVbP z3pQL|Q9INk<3L5jz=ibHU`57(iiUv;>1)A?i~|)70~gZQgB2MEDjEhZq<;-oWE`ky z7`TxBEm)CpprT>mLi$FqB4d2m*Ab+T_&S1&0~HMe7t%+A6&VLA8U`+;j|D3-4pcM@ zTu3cgk#V4+Vc94M%Gpxs&jNcccQ$H0jT6X^xPf)yJwn!!5; zPORPuH)Jcc<3PC=3=cGP3|#t7q+bUM4%bmou`1h;vEL~J?MPpUC<|6>$k=h9px#-1 z3o0IH#^@Mm$~p#490n>FqMW!ek-iu#Sg|4F(sv^LCRlJ8VyUd1v&;UwG-(@cuJHlSg|4BS+yH7sL>X3W$k=h9da^$5$16GpPF$EsFANr}*pTlsPk|NrejcEp;(=j) z*FDJ;vs#gHV7P=66X|oof(;ov3MwAx7&tMJJ|8UDkg=nn;(>l=4c_h^_^weNQ#*PCO4FlJm^*Pva{AH9CR5Wx9T$o6I z6=YM}aiAbQEm%=yA86%UtOdgXy`aqj5~!3^G>NqUykg86&t3CEVZNHFnGZO4IKj) zCaT5{bfjlR*@6ujI}TJl(9m(>!bEy@uwp~Tj)IB@8V1fgW$+Udm$HfFIl+o{FE%cu zC0LPhprT>mLV8B9BI7_s!@z~~%wR>vfr^HK3+Y+Gii`sl4FeZe2P`#5QfiTEQmfP@ zwMngi9jSb`liKfgQpep+sz{}0M{2=}?N0rT6!ML-9S6#tQc+OR&@qs{5-eD;q3ZTP zL&w003-d1XaeU&!MEYs4V8w=v9mkzD#*TvYoM1)9fr^HK6PM}Ed(JPGRhFg7oBzA$ zfrkFdCqy?~n8>dRb`(@Jbey;_1xRlRR*Y}{hq#zCSh1m~sAzYSPyYL8@~I%b;J-vW zY^ZpkW8lKX^1@(6#*TuDhK^~B^wwZSf8T$OP`K{YxBpY5Fp<9#>?o*c=s0m9eK%OJ zA)^Ri(e8oj{~iP3!bE;&u%n=&q2FcS{Xe4&4ISxw!GaAL2MQi&7&y^i{69t(7q%b% zUUb9!=pRJ9j|D5{Gym7fJ}X$Uq2hs#f$bmvFaqGXQ_qgF0|f&oCem|)ZPx<_rqxJq z3sw|ODjGWG&;I9V^7CLt{i}Z$wJ3U2G<54caA6{UFW6B~(a>??Li&ENU_<_I#DX2) z4+;iOOr#$KD>m#nQ1L+jv;P|1aABHcdV8>$X^L|6jU^HoVbuiuwX;Rfr1Ab22M5*tv~=km!HVsl>^~eRH!3RH-Q?w( z;6TAtk!rAFdxa)AP;OLIw7bbGHNk;`sUp2ISkYhNG~&WU&cTkNNkzleKlTk2mVtbA7I8dJczeQwpq$OC;pBtxk zU?M*+*ilf?J!A$h^uIL&T$q}qHP|psJiR+uu^py?1La0VMZ254Rudd3m@3kHf)(5A zG{J##qoSgrztURa!n{$D-W#mgUM~s`lp7Tl4gFQ3;KIC7k=_@q*xn!t4wM@e6%GB> zqTs?rx7Y*Mz3k50z=etYqhLotMMKAl3+czff`W>Mj`WjY!G??j1rIa~oapbib8umM zb$s||6bzi0NUsT2Y}j$!**97j9Oy5#OK@Q#zbx2MT5P0>hVBtQaADq0^dCfOM?pnH z$B7H+3Kne0ck1I2G~>WF5){$Q}9prWDQWuJ*FuV^T~wp2_@ zoPHi`sCb}b;KIZ*gB2M&w$Dbqj063Ht`Zlz2h>2ZRuv7~hhl0O2MPvGOr#G7D>h8s z(g%VS+iT+ylyRV7;KW3FU9e)qjsy8G{!64#FmPfbZNZ8SI}TJl&@pgf-eo2^aNW~= z_n$|Y{)1tio06Tk^VAR zup#3>!2=BgCnnNg1uHfbbE#<9-VhVdC>S^~k=_`r*s$Zcvu|~~aiI9gM8$Y(Eayai zTd<>`qM_r&h4l7d!PxB=^nVHlE=)5`9|=};Cw^ce|038?P|?tF;zIgmuwcAgWEAl# z+8x=l56t^6yeLvT3M!^{>7&7lf{KRziU>L|kzX0?=vHmu!bE;ku%n=&q2t7b?W^&1 zGvh$Pz=?_UwP3}D9S15N=oq*#v3xyPk+EZYn_G(m^Cj^tNjcb1@j%DG{8fA!q+bUs zwr9nASjK_zlK9R!k#n%4prWDU#D(;?!GaAL)9R*=1uLdok^VB+Q1L*=K>1vpvWkZ7 z?Jf%k%Clo?6%8HfIl+QrjEaWs$G;bS(eHhViTsXWM?pnH$B7H61`EowWB*k&6x*?) zBmF8^up#3>!2=BgC#LzO7OdzdIZ$LP8n&NAS;mx29}iX(R5Wx=2D+!kz=etY*TIg0 ziiVC87t-GZ3pQjND3}IHp9ofL{~UWf<3Pc{iHTH#6&rROC<0V82sU`57` z@{u@~6%E}n9k`G`8fWl8!N7@$^s!*YcJmI$00)Nf7bbH0zhX!fR5Wy)xR9P0EU5qR z$I%2G=^ujy8!`?QJkT(3Vj}IqiVZssR6NizaA9Kkr(i|Kj)IEqH}NpaI8fZsiiUaL znJ@f71i<#`cn!^%YSX8J6$KRy+fSV%Oxg75U`1CpZmjc#iQIx61r-e)`OUFk4ipTW zm`HC4R&3aDpqul+g=ymHGx+2mMGtJKc%Wn8!o>2aU`57`f{KQY6Bp8_g9RHh4ir4l zuvOa(2e!Y82Xe-Nf`Jng>92$SVejp@(0}ruB8v+X`KQ5-f{KQY6Bp9Yf(08gx=-SP z3lsTO!H)99Sjmcp;;vRSY+s79j04?b4|E?G0~hLj9Y}u@EZC55J|6eHVBo|=`b4l| z!!%_2Ot7N^# z$~|W^Or*~SD~5%*Fz+RKain$>)H|hJMZ;8Q1L*=K+eH|f`Jng>2IZ;8}}$Z zFIcgyLB@e$A6%HouMT#U=SOWtLsvF%VIsdK*wOz~C|u}n=)iT~TI5d#I|?cqI`XH2 z0|f&oCeo*a6&vbb#AiT5N7{k~8!`?QJkT(3Vj{gLSg~Qpfo_a}3)B5bJy@}QHp(&% z6bzi0NIh7wVK|5v=6x=I9;qD#6%8FHE~FVO*pSgJ_P~X*{z(KtL-}ny^eY-ViaA%b zJ7q^SbflLC3pQj-?b7Fh75#O7x`hi9{V)w&*xnfryo>|ex8hq-MnM;J;JU*jzbx2M zP%%AZ(wBo3+s}S4+F}0nzl(~$304%ds%V({roRhTY^ZpkV_^PSY|QlM!HVq#LB?^X z{yv%S^~k^VuMdwF3Ze=gWjP|?saO)Y&sSW!^X&|ho)aG?la(a@3pF<7u6qhsL0 zMBalP1r-zNpMn(|Djw(u9SArb{6%8Fzl=P)wML|VF_uLrh<~;6+-R!peUpV8wRx9#@3pPQ5M8Lczd^iS+hh#fBXRrt3&w4OVQw_`QgSB3seWm5saN zE3x4!8nzz0E@OMIx!}O`;g!A}Oaao@f)(Ak;~pIO9l?%*iiVC87mB_W4b#?3uMRd; zJkT+)jhJ7?ai{(^R;^&*#6)_jl%VPB!HWEv2v9I^Vj>+u(WIhb`=wRG_C9NX1N{w- z1};qGHwHVVzUg0s6;6^id zf{KQTbOtNZ>tl=!6%TX_(~eJfHcx??&p?^FAmNbM-7Xy`a` zA^kR3upy&}SJ9Ba;o*jX6BFs1!HNw#4pcnQF>qmGIfE4$`<;4stYpE!iHY={V8whoHF({~L=s0m9zb_~lI5CmlAFSB0qmG z`Ejr!V@E+nL&u2==_kR04H*Xt9%vXiF_C^6tk|&QK*a+c0~aQip9L#2b`(@Jbey=5 zejY5?ka3{kfrfz-6KMu3HtaZ1@j%DGg^A@C!HSF>1r-e)CoZI41`9T194L68Vc^6> z`c<%E!;S+L4|EJ%m{@)ttjO3=P|?tF;zIgOuwX+*arP@3Cen9<72V@-;KD@yU9h8| zqM_r&g_Pn)e+xEb6hSN69o`4-z;%E0-l$053s!U=-~(NNfeRD)iNTJ7iiVC87t)i0 z1sn36dcU^<9N4}dAD4ppQ<{sz=(PKsaMoi;C!N7@$^vz(! zhN4GB!$i7*72B`kMrCx*;(_aaDkDFF9R(E)9Vaf7e~f=AtY|3PA4e7q9qC2Ef(;o5 z3Woc8Vcxg<$&uPoP|?tF;zD{#uwX+*|3=JU;6naD%LjY~P7@kcqsToQ1L*=K+&V3A^%I1 z9Vi$$F_GRZrCs_-u%aldXy{092^MU~C>mEZOr)O%E4FXNjmkJsFmPfbeLGmOp$j^2 zVIsdZ*ile1)Bh5EpBSvjKlqO^1_}nwJNpd3vW|xS#$e#WM1E7SqhI>sx>L^4g^B#3 zU`IhkL&u2=+rv{H2gY06Urgk;20Qv+#83DJE~K}`Wv$py@j%D8Q(i9zF61Z0l^-Y= zIMIb4xUjuF0%RO07&tMJ-VyY->4po%9js``AC7A~P%v;}B7G!Sv0=x7@pkbrMM*yk zR&1r-hb zE)%(;-D4olU`4Tr^vItDIGEPoTM z$k??!Zc+1Rj?wxD{kn9iU&FdiY65e-P8sq^1Ff^<;n4Es%Yq#clcjNw-p5y z4HM}%!HWEDqha90M0!t9(a@3J8!Xt6Z>rY?6bzi0Nbd|*Y}j$2;(?BV3lqz`f)yD% z3hJFQ@rrg|!gu2|9w-<%F_FF(tk^JcVIqG&*ilf?&@qKizYSKT`A3n$hKdI|1};o2 zzX(=j>?o*c=s0m9{W4gvA>%;70}TTw`cvX|4_rv^jul$5q2hs#feRDMdx8}iI|?cq zI!;_j?+q4g$am^T|1nZHP%KkL!@O7Rcad7ry=e_}J7-|td+2?U+EGyNlpYlgQ(1a{ zu%Y6Cj)AFNO844jxq?+;dN*m0oZ zfsTO-6U!r5k+GwoqM_r&h4g`7!G??j1rIa~oR~--3|4H|aiHRXj)4mk%ZGv$89NFp z8ahr~NFNRsY{)oJ@Ib@BiHY=)V8wSy%m`E*Hv0=x7iU&FdE=(*R4_0LCC^m3K!@T$NGb6R4prT=WsuOjSy-8!>#6r>N zFmPfbeLzZ+^z2|oQC88BJ{T<6kWsX&Xm{$Rt{3TL!GaAL2MQi&7&tMJ{w`RtVG5d_ z6RaqxXz1?DxNpys;)A(h;KW3FaPR zrsoGM#;5)y%8)-D>?o*c=s0m9eI{72A>%;70}TTwCemkv6&rROsCb}b;KIbxgB2M& z3Mv{pPFzTz3l?n1I8g9F!@!A&^!Z@Lh8+hg9_SdjFtL0gSdp=#prWDU#D(<5V8Mor z0|gH>44jxqUkb|C;wMxU4dcF{$nSA~F`w#tz|(>i`3LbW=0L%~iHURtD>f86qN1UT zH*npN(X|_x$Uh8r6jU^HY#;c;Xo3S%(DbLlielSVbfk|33pQjF?J63!uloTV4)o9c z`> zWGfox^Ws+o(;BSUKK29`7?d}~Yd}TA{7R5Uuwp~S104ew=3Vx#{}g4I$nOqz6jU^H zoVbwQ6D*kD{-el#Cs?szyw^R)M1EheWBd4jjVumKHzoa9u%e)%VSAbv7IZ&f8@Mo$ zpC0TesA%XoaUm_if(`jjeIwR1hU-&@oUn zu4s2Rqor>KEBf=}UJhJHe-@vED>hU-&@pgfV)^r6MaGWm9jT!s{cW&dL&kxE2O0)W zOr)0vD>m#nkbe|M@<74BiHY>%V8w>vc2DH@yZhLF6?-G&!1jq)p^Soo6BFr^LAOi; z7p6r_F9=rj_JpX#g^B#}U`IhkL&u5h&fb&6g^B!=U`IhkL%+)mSOoBk$Pu{~Q46xoV~u54h+rWXe*w&&=9B3seWl?_bU z^par3_FO$sWGfoFvVkd^a9@g(4Lc50 zJkT+4VPg4Rup(neK}AEyi3=&kE9Zg@83zg;Xc#!r9qfS%+pl6@WgI9Uhyzy9(2+hE zEZC57px}XqffEzyL&1s-I}TJl&@pgfV)<~eB4bBEMMKB-(LanPIMA2>9HDSwB0nS8 zQBcu;9alMUp?d`zxG?WGvX@0_M?pnH$B7H+?}7yzG7c0x(6D{XOmU!p&<((aiTt5p zN5{a0^o2NsD>hU-&@r%m>klFT4s1{N{SpTX22O0hjf>7W(0}|NqZSvsuO0)}{UrqX zy}^$8Rj<=u3s!8Xc%WmTc-&MpjNipT7bbH0KO!CqDjGVrX032w3XuLGSkZlkj{Af3 zr7@w3hK}^IV8Mor0|gJXJ1bO0!?bGY+rf$rQ$_m6U`0Vi!}i5k_KX7s11BcZmxAph ze;n;_pkUy{MEYp3V#AID6%TX_T$ors7OcqFQBcv)apFR1!GaAL2g=P7d!wRZy2`W% zEBZ6z;0#=t$j=IP6jU^HoVbvl9W2<8Q3S1M*go-usK9}OffEzylfjA&I}S_%(mw?& zw)OWT6pCy`L)UoVy1OBND%ep_(a>??!uD}{5(l;~{QJmadt&U^i~|J&CnnO9f)yJ& z2Ch46uMJ%Ht`jtUF(|fAMMFpWa-v~aX0tfnsJ!EiU zB7Y>^Lxun_dyD z*uM2&BNPr444jxq-wsx6*m0oZfsTO-6U%pk6&X7UDjGUYTu9#y7Hr5kQ1C#*z=?_U zyJ6%ErpN+VdYq2hs#ai{!p z!N7%y{JvmEK}AEyi3{od!GaAL2MQi&7&tMJ9zpr5_y%6l(4P@cseudIQ{qHr94Ht# zF_E4ctk^K08Qs#ef)(3W;{r1d6bzi0NM8%ecjBy8G?bUd2U&7Hr5kQ1C#*z=?_Us$j*2^qD`3EH+d;&@pgfV)<;aB4bBEMMKAl3#kVSHe?(q zc%Y&Gb=;4E3*}pJw<;Ra$NxCS#fFLpItDIGET0HgWb7!YXy`a`A$>Afup#3>!2=Bg zCnnOTf)(4%6>n)72fBygz=h(*S2T2_uLlb@WOUz62QEzHCj~nSDjGUYTu4t27Hr5k zQ1C#*z=?_Ulwie%9S15N*goyaj|20cqAa~USh1nvfsTO-6U!@t6&X7UDjGUYTu84B z7Hr5kQ1C#*z=?_UDk%@6^vYnx{F~TP>BYf{?Il6Rfo|CcE==Tq4R#b%bT1tP7bfy^ zf*l1F4IL*gq~`_;He?i2t7zySwO?>yB7ZE{v3>UsB8vmlgwnqSD>hU-&@t|mz5^F} zlf{LJ{PAGNG>!DCU`6)=H14+`*@|{oXgqM;-H<;K?C5@PbKt_%BfUCUQBcvaeIsU? zaiCz}#6 z9PEJ$6Zyx%j)IDYjuRKsPl5#-G7c0x&@gbKEb`(@Jbey>EtXn&9VIqGr*inS9X!k&F#lVG${H^M;IK*zv^iRJ6Tii{lv6%8FHE~I}A7Hr5kQ1C#*z=?_UZ^4QU zI}TJl&@r&}Ka9vYuzgMz2f8mI1JkxhN3ddhemq(-iflzgx0?noOyo}mJEkV-wZV#M z52bGhD>hU-&@t|mvoLVoDG%QZ^L`dTFH$=SDjGUYTu5uMU_(YRjf#f;{NIm(FlE#0 zf)xc74HN10!HVrqqesTppAab=C>S^~kvS^~k-i%g164Fkvr1R6 zVJb^+3RVhU-&@pcOUgU*|{E1*kK}AEyi3{nI!GaAL z2MQi&7&tMJJ{7Fku;W0*104ewCYDbJD>8NzR5Wy)xR5>*EZC57px}XqffEzyv%!iD zI}TJl&@pgfV(Gz(j2#6P4IL*gq|XHlHe?(qc%Wh6#6m#nQ1L*=z=etB%fX6_9R(E)9Vad%zqqqt zL&kw}^Bk`(Xz0%k1}^m1`xkt4pI`$Qwku9W#({!?6BFr&!S0pB4odCh}*3 z9r@*^hJt|;6X_MfiVZssR6NizaA9J3Ww0V+M?pnH$B7H+Rl$M{83zg;Xc#y#kzO6F z*s$Y3#RDA!7bce11S>Lj6jU^HoVbvVV8Mor0|gH>44jxquMJjg*m0oZfsTO-6U*y@ z6&X7UDjGUYTu84E7Hr5kQ1C#*z=?_UhG4~p9S15N=oq*#vAi)@k+GwoqM_r&h4iLi zLH9v0aG~3T0~fY0$A?2k^=i=2k^UlBup#3>!2=BgC;Dea#)a?o*c=s0m9y(U<&A>%-~ z%YG1}WgOU^8WYMmP%v;}B0Viwv0=x7iU&FdE=(*>4_0LCD5z-YH=lE(aAEs`g}{Mr ziFO$U11BcZGlCTxb{wd9pkv^|#PZBwMaGVTiiUpkc~irMiTs6N$FzRw3RY}ienQmZ zK*7L?iS(6V#fBZno!#P0XB;RPI5Cl46s*{=<3Pm&-82R+6bGlGq5DQP?ypsAoZpNC z1p_B0(({8A8_EwOUPZ(9qafqJ@Gign&Bqr}?q4njE==UV3w9J#%#X!SyiyBR40qweME=uYM?pnH zzst;}{{JN1SMxPTognBBuyesiOib)<#NO>*Y`{fdbob2er%R0B;0vEZLP`OW3Saod zXJZe(FbxTfNqpg}v5DW`Q*-k~R=P@Gboi3RYA!?C2NYwzzO2 zzbwY3U_-^gfr<3;U_r+CWc>U66BFfA!HSB89UTWwqT zu%e=2N5@nweI!_rzoVDfF#WMndfY}tM#CK)11BbKPXr4JR#Y_X=s0kqz2#pb0UhbB z!3`M&8!GPDF>qiay)9Ufv0_8R9UTKFCT?4>pkPHsL;ijI1yjL>YJ?hgRP)=gqa*z> zxFMrp%A8uTV2C@fge%L8%M}$3-C;R!ULou6#6X7mpMnJ$ z4R>^mEA+D1DFY|^yL@Ox)%u1V6Y1ZA1^pFIiG0YzeX*fl$kMPQKN%BWP%&^|BCWxK zj1?Oi?&ugeF>!lCups|FDA-Uja9|?+Ay|;HVnf3n9RnvOZhs6G6s)Mfi-~I3F?BF~ zG+2;d8M~~YV&K3;dR4F>U;H^{pZd93W9{!qMr3`~@VgB2AG zJ30=WNUsTQ=-M)HVxr_=MMcAoj;R^x55a<|8R=ueg6^mqm?*CZR#Y_X=s0j9y)w8V zqgkg;Mz*R+8XRnr=Fc$yYe3>=t9?+g}Xtk}?S zN5{a4dEp-EXJ30pH zA7daIcH{?RE(RE?AJUVnf3n9RnvOZl4bp z6s)Ld*wJy|MEXK-Lq@@diaT};9GFO73>IWmJ!;r7kv0J=NpH zMEQQOqC3|HPE3>;tf*+%(Q)8J`crU2M!|-PJ9Z2l$RGS4kq;aCmt(UJoah=faAKnT zAXt%q7@aBDkbe{7S5VPq88|Ufei*EnFOTP2dPT4xzcMJ;P}Bbvy~K`=^z`6{jDr4$ zcr_R}(Zvm%m?+N(R#Y@ht0a9YSTHp={Wi!KGpZ`sFqKHp3>IWG+|elYQq2i7m0|zG3n}P)yD>hVJZP<}#oH+#>rf&z+ zcY`T4-Gc?)sXS0!Htfi+inxO5GJQH&(8Y}_^+oaFwqoGGM0#!*EWNM}id<4LkZ3=YiX>qrNL17!4ii-N6l2w;FcjXT_WsR16%LNDl<% zQMbgvfr(Ut1^MF9xNpIRih%Lb)c5p*R!SqLG>49KD{;?ZjL;i_NY?u~O`ctqVqyOls(IZTh9|tQc8g_IX zI5CZL`b@AO|0LoHDh3Wrq$606v0_72wqd_&$yO|;%kf& z1>J-WoY&N%JSSLD(XNop4f|EhNDiEsC_fEWR5a}9IB+6A9t|(p(4PnfPE3?1gB2AG zJ36Koq%Q;u`n!FRhZFNco6{}GXt<+epeoz2BR@Cd3N}>azr>kcu%UZK4V>ujabHaP zEj?z_q2Z2>ffEzA*9Hp;R@7I;^Q~b=K5QXuSLmlgn4gP-EPXy$P+k&jC~J&M#lV4y z^oC$TMtxcQlYw{~BX8a9$yC^Gba| zgjQ5E^dA{hoS3E}eKA-tefgLk4;Exp2@N~)&z>6hMa95@iS+YeLB@&=^(X%lwO~j6 zb8L-<9sRwg78CWaao#uV=qiaeI&>~kI^XDkpB{+QLv#`>4iZ?!yO&t3aND9L^s_7 zCnm}-f)y1FJ;%-)I5EvfdS8&ya7V|$iHY0$g9QaEDjIfl%m<_9^y*+ieo?f!pkm;_ zM0#=1f2K1yF)jJD2MgwF2m?*ypR^)G+6m00?22Mz4osw9 z1q(7(Y-q-BzXlO$32w+J=wJOO9Slx%#Rg7HlwSucDjIfl95|6b5c6BGq5oQcablvJ z!HSN76ZuVX#ujYo|0xwGCdzMu6&(X7CdzMv75&Xo!N7_7a13n2j{Y8-3H5jJYS7Rx zUK6PUC#ES&UkVm^p_3MvK;Or*C33o^?2)Mzs*1`bT5{|pvn ztk^L1GW{c1P)GE)VQNeIO0b|y9XPLi>Ayuj?8twQ$7jKYih%(z87nq4+|e;`V&e86!GeMn6%9K&@~<@<8>$u7uwQGlYQq2i7m`ROs21sjHmIx(*)OHYkfp`u|&zv7H(!;ay+Ix(-~>m?CdQPD80zw=sz zD8C6-R5a}9IB;HUZLL$p}yh2M=|Wkr(wc|{OZ_I1@o2hPMBU5EJ)vq7t#e8 z4R>@5oS3+MJ6KS#qM~6($AJ^+JHZVZ1sf{v*pXiz6l_=Mx6$7X6$1w*((i%=87nr- zN8&h4j|L0M+hc!hs2Dgfk=_w3$e89W{d=$=|EKZ8hKl_AIDrc)rd5)j5iIC`Ff*7a ze+*W1sRJjf>Kk@Uq^|`FrnQk?8e}xw(J@fvYuK+6NM8>Y>* zV~R`P3>H*0?8v{h+OeTtSkLWR)JU%gZpbJYnAhbiBebHTA-yWdXt<+epu8$hsfvLE z6DbD^GFEJ8xT9m>#Ki5vU_rr(iiRB>CCAMx1`bT52ZQ{)7^{K}?L%H`kv<&UkWsLq z;*K2y2PV=-f(02f@$p2e*_Df7IdUn2RCFC)GG^ibQKJo$lv>~kq`9+aoMnA zic8;@`e%C@0|zG3UxEc0D>gLT(J^ph;`Y~ILBV>3p75rMfddoi$zVaoiVY2S)CmxwFaFp*voEa;|ZpquG|c}@I75n55v(3KcCF~y~agN%kd zItJ=XBVWUgY5AmY1q+6Go7d$1%`~E-VMoV-6Y1~44H*R+D(=`Za9kmSJyHH=fy((CcUlUurpkm;_ zM0zCX@(r9Sv18ysSHZw}Rdsa`>CxbZjDq@*yJ5%F-}EO3^2NguSFoX4ISo7V zUt^*QDh3Wrq`w6VGFEKpul%RTjEVB9U`0j4j*bH-QVwp&D41H6UK1=BdNi-Tl?bh< zXy{iKoam-(V50mZSWzE|)P@~XSJQWc1yfb&u^^-2j*fx+XcQ~hP=655t%jld6Xoy0 zii(CE9S2TK6{Hd@DF2AKih%hD<+Gt!XnkJF3n!?C5$lFkPk}1`GN%ADAc~3071z?C8jkN6iHrx`T0GUWiLi1Pi(oWMHDC z|1)Yv{d1IP=oc~%oL4bf1}4hWgBA73$kMPQuR+0vF3Z3~c}B2eN=9A z4osvq=<*GmC~t`;NyWf{iS*WBLB@&=4R_QxMgWnj*bH-ref*c!Gdm>#x+(b9}QMiH0@@pj1?QEvZ)3Ox;76?l(z>fDjIfl95|8Q5!}$#GH@clJ(hPt z#lV4y^p2puFY-0)$RCTTD5w}XFp)kUEXWt{j}iqNx*mqY5D@wSwwmql#Ie~IUQ!8Awd$H9X9$(V|Q zih%U_nL0eqCCf4ISy7!3`M&Q@(Tr3%b!A*ASyT&xoT+ZP>4T z%8sjotEzX!<%)`iDPQ_&uwaTy?+!8=?&ugOum0z#00Rdm(nG<5j1?Oi?&ugeF>!l1 zSWvK{qG3nB;=-yOk)9hY$XKymmrs9c)PfD;lkp!RKQU206|9(MCjBBv8XRTr*Ehj zI53euA1ugNv7zCPj)4;sw=V<>3RYA!?C3afB7HHqA){bJ#T`2a4osvySdg(|L&F^% z11BbKUkVl!tf*+%(Q)8J`f_kXM!|-PJ9Z2lm`Gm<7G$j0&~Qh`z=?_5SAzuwE4nj# z;JiZ57ear51e{msg+izwjm6clW19H%t6;%==6{dNX9Wu~8t&*AI5Ba1AXreaqM~6( z$AJ^+*})AN1sf{v*fDTmB0VQqkg;Mz!yO$1Cnj#UU_rr(iiRB>Ws4sQHdG88m`HCA z7G$j0&~Qh`z=?_5JAwt(=r-)vINPS_{lS8ahC4b2rp)Qr!Gem09o=3XsJ0tf*+%(XTkoXxOg?eIN$AU_-^gfr<1%A(_*E1`C?F9UbXI z!3`M&^~#4G!^8T-MEP{EqM~6($AJ^+Gr=5QTk1=plim!iHY*z zU`0hk`be-Kqv4K@fvUcS9l1qZ!G?-~0~6`rgk(;?4Hh(UJ37)wgBvmm>Xi>WCerVM z1^H1ADs-6#PE3@K1uH7r6;iBWNBVdqEXZiMqhnxR`Fu%qL^ ziK>Ez9r+VceZhu`fddoilR`45KLiW%XXEb)3pP{?9GFO-3l?Oo*wAoC$H0k++vkG? z1uH5V#^3yh#V}F+9;~Qn*wJy|MEXZ?Lq@@diaT};9GFPy|BJRDW5tGsJ30nVOx&Ix zEGSq}(XgZAz=`yX;D(HX4Hb9n7&tJIo*692Sh1nuj*fv76Srpt3kp_LH0lYQq2i7m0|zG3vx5a0D>gLT(J^ph;`W?iLBWcOh8-OTPNZ9KLq@@diaT};9GFPY z4Hjgq*wAoC$H0k++w+121uH5Vc61y#k)9vikWsLq;*K2y2PV=Bf(02XHZqqy z_QGI6!HSB89UTWwq!$G@WE5jfJs1`bT5mj(+mR&1CmNHbW_eM35M zVxl}0tf*+%(Q)8JdN{Ztqg9GFO-2^M5b#nPXG1r-fD`lC;Y3NXz=`gE`$qv4K@fvH&fbFiSI zVMi`eRYCqtWG>iHF>qiaeO5@Z^p{{kS9YMfY}k<>Q#1P4{wcEHyh6SqI5AP47p$mg z*wJy|M0$R3Lq@@diaT};9GFNi2o_|l*wAoC$H0k++Y5sQ1uH5Vc61y#kzN$skWsLq z;*K2y2PV>sg9RBYHZqqywgd~N!A^e-7IZsmT-yreWxffEzA z*9Hp;R#Y_X=vSN;H0(%UFeGTWqhnxRS<-)rno-fPqwCwaI*9UxU`0j4j*jw=`08Lo z#lV4yl;ZV#LB@&=4R>@5oS3*hJy=k%BLCHr$AXOiS({uLB@&=Q`6Ejf(6~(22MRAShpswXvaM;J`%sO0XcKzr?`e zMAf&39sT+nG@O{IehqKfuiwRy-WlAGQLv$2aj%bmW?ryiUgP&bRKK9V|NqdB;KaNx zUl0$u6BFfy!HSB89UTWwq!$G@WEAvgJTsgB8OFotP+J z4OUb%?C8kPis}nC^e3YFffLhj!s+$Fg1-9qwV0@{j=MGN=tvI*H_Ruag0uz;^1~5V zu%Tk$Kz=-`FW4}C5OF6a$`6AT6%GBRmH{sZK|23)-O3w}!UH_5r^O{I1`bT594yFKv7z^PR~|T#J{yy~Afw@qj)4;sx6cI& z3RYA!?C8k9ipNR8hMfNQxWsma-eqND;J`$Bcd#I1#fFAE<`<*Bv2ggkK5$Abm+$Nx2Mgn9MtxzWJ|`8mKi!GRXR|gh?BZuNBIv8$H0M!^sQh)M#sR3X7)SMSA!ce3N}>S zv18!CMEdt&LB@&=4R>@5RHN3gqkJ_cYD2}qfr<3*LH+r^MhWaFulwgHfr^0x6Y2HA zf{Ya#8t&*AI5Ba1JXlb$qM~6($JFNZ{9wWG7Zta^1q(8&gogbJi92v&URmB4>!4vr z)ysw*9qDVq4H*Uf6&5f~Ox33s1Pk(aVlE3dR16%LNZ$<>WQ3zWs`RSf{*f7@gMia8oM(LdnL7gd8Ac66;8$e)hB6>P{qiw+h{`O=Gn z1ygGJOt4_el724p=i_yzV&K3;`a-ZEW5tGsJ30nVOjLJk*fFfXi86u}6%9K&rp##x z7UZwRXcSZo9GFO74;Eys*wAoC$H0k+TMrf#tf**L$bB1j)NjU$Xy{1)5!{eb(2eB4 ziTc@~VMj;)Tu`uKJQ=6=L|KCs`I#0qHca`_=Ys|L;#sm_L;ic5F9rDl3D_{jrGH3x zwghbG;s(0<22P|m#)pfHhC4b2rh!N=2^Lf|?8x7Xc`MjZF>qiaeLq-`F%?TM4Ho3b zZ7_7H1Lu_w+uj&42%PE3?<1uH5Vrp)PO!Gh)>>qzf+t|6mfL&Y6C z1`gCO#P~Jr=-JlAiHZEyIA01jOw*m-5G?4oc%d4YD9;U6R5a}9$X|?m6l}<^ep+0j zV&K3;dMM}*Y7kD;tH0PWjYj%*kkN2Q$H0^?y*yZuzY}o<6$1w*(s#xE-6??bk6=Yb z!;X#vCsK;9xNb;~#3#*+hC8ONraf3t-J_u+jo^lia)q8_-D5*d@maE={Ln(ez=4VM zqhLWsf3;D=iFq~c>CwIg)j%}t=+^E){b+oz($JAU7Tl0gu%Y6P9Rmj@(#L}Z8AF36 z%8!E;6%9N3#Y5VR6W#0&Oq7R%6%`FTIu4xw^HMDjs|EcvE-_Ia308CroY&=}E-_I` zu%ct9>(6~Ti3L60_^n5YsO_A84C9hlerelJ2RDjLdbo)(uFI53eO2^M6m*sjZ) z1%eIJjnXTF1^s>gNhMB9>xk7J?yA^Ec+A^*Np}bD}P`5~J*iqfQVMo`rf&7zL-USr{2PV=H zEXe3@kE#aFDE;ih%9Jrz#)=IC6XmtRii(CE9S2V2mudkvbn`nfQJx4^ zSv18!CM0zw>kg;Mz!yO$1CnjzsSWvK{qG3nJ zffMPm;D-FXc>gQdP~R4>k_{bc3vS4-FdEn}^*8+_Sdh_hN5?>ZrDE8SkBBSSP%&^| zBKqiaeJNOw(VriqF>oS% zD9*YC84Y)I44jy_eK=T9u%dtKpCTVlswrh7+6`dM&8MnP3o!;bEU>w)w72^;0z!HSB89UTWwr1u0jWE56(b5GO1?zSB3*TU1L;quB9yl>kX0W27 zVMo7Mtq7dRPyDm$gNlIz6Y0rdLB@&=4R>@5oS3++!GeMn6%9K&ruC8@4i*fnX_(XNmz4LkCmqDKW40|zG3pMwP%Q;GDNU_tstRJtIe;f{`hDqq8n^2>{|SC3Hs60E3b*wL>zB^q|* zzeYmAhKhj$6X|ckf{fu{JTXx|60E3b*wJy|L~6ke(|uD37WAu9oR}zo4^~t(?C4jV zVhuaWKO$j6#lV4yl>VQ%5i+I{>9Jrz7dLQTsVGkmR#Y_X=vSO#4f|EW8*Ch$m?&=y zR!mvaYl8*lP4Nxd9XmP(4xE@sZw_u)kkQpQa9$zj_=$NP>#vK@ii(CE9S2UN*9SLb z6jYPau%o;o_TYw!fddoijlqJ96&o7v=omOLaeGs+pkPHs!;XH%8K#CE6X|uqg6?zA zK()6Tc66j)2RCGtizl8I?L)=Dfr<2Fupnc_hU#t&JIY66TsBk;9GFNS3l?Oo*wApt zR7-k&upoUr;ud5y+|e;`V&e9RU_rr(s+NWw`5Cb~3pP{?9GFPY3>IX}s~L|+*##91 z`*r!%cnUS_7)J8MyvFp5(29zN{O^&kU_<)Ph+B}+a7V|$yz+f5GA}5ss7u=9h(BEXw;JiYn_QXV4gB2AGJ30=W7)E?v6YxnBfQp749S2UN zPX#wj!kC3Ilh6c7&tJI{t_(6Sh1nuj*fv76Suzx3kp_LH0iXo6CWz zTj>u$M#CK)1L?h9tkG~s$H0k+TMZTztf*+%(Q)9!)Ry$7U_pL^WrpFC+=+?u7f8!`$uRCFJQ2Tr7~M%;pohC4b2PE6eXJy=k%qM~6(NA9sK3O4k&m}E?p zw+1V!{xcu%e=2N562Rf%CehS{iobKgQG+Y^WGG zFp;LXx2XW-eKBPlDh3Wrr1u94GFEJ8xT9m>#Ki3b!GdYP(l>$yQzO$`f&~=~JNmUs zF1){-nAhvf;}Kd>(XgZAz=`xka6?AH*mM;Wqia{SAMQhr@!5hC4b2PE6eX5iBTJQPHrYqiay&zbSQI%-eG2ZgDXe1`eTZ0u94Ldpx zoS4d{cLoc}+ahj5#lV4yv;_+?R&1!sHtZPMcVeQvFj!I1u%lxtk=_+7Xr^&T|DO{Y zq1)esjDmXQ!;bu-sHI>-#lV4y^x|Ma##Ai5J6JGOdSYJp_(z0RRJ1E3U&D@+{_iM@ zjD|Zp2IiITJ&}1qMZ=DMEq+v|W5bS)^ugeUjDignckCEAFp)kKEXY`~VY+2{Z?K>| zJ=(XSV&K3;dPY#?YuHi6HSFj}&kSzJD5$UcACV6`%C} zffEzA?*t19R#Y_X=s0j9eK)uvqhLe5c+B^m*pa^$5Bh=)6$1w*($|9p87nq4+|e;` zVxoTYzeN`8mpX!SrQj`c=?f4xH%X25OHnXxPz_z7gDz zQLv%njvWIB`iJ}t0ZvSGV=!=DAt%y_iSqVfMMc9f8Yd>o`+^nq+tKER9p$9oBsb)T{IBFtF>qiaJsdQjop*GkdvHTW z!G?OpeOeqg^e_HvREiV*1O7MzCnoxbtrDD==)+4OPE3^V1uH5Vc68)-#drDz8!Col z?!>%Ky=O&eMMXomkOt0cN!dLOJL^mi}xEV zOq34tv8!`$uRNS#+;J`%sY>>~`0RkTTsD<{49G58!844Or!^b1sN+gG~CfKaAM;2>|jB`ivImLcLz@N_c$GK zqP*j2Q8OwA4oswX1`9G)Y$#ukdD~Dia9|?!U_r);4Gnj644jy_eIr;6^g~83h|E?$|MKU?TlTupnc_hK4&j22M=ez7;GeSW(fiqho#|&Y|?lU_ttb5HcF> z=omOLacjYXf)y1FJ30=WNdFexkWsLq;*K2y2PV?>SGJ#vU&9AZq_;)u7i2Wt(J^ph z;pl2;k zRQG7uue-g%lLQmxmBEUNh8-PKiS&_RL3vfgZKxPHFp+YwAfqbLup>V^-Yp6?R16%L zNY4>^Z=5Qr1`CF&PE3>sgB2AGJNm_k^c*Lu`Wkk0q+4)9M!7!S9m6qqVqOQ{yCSrrqG3nJffMbK|2GoQksb|h$SBxQamS8< z0~4tP3o=%0Xt<+e;Kao3v0y>Lii(CE9S2UN*9JFa6l|!tW5>XOiS)W)LB@&=4R>@5 zoS3-1K3Gt&qM~6($AJ^+@!*Dxf(;dS>=-yOk)8+^WUScGa7V|$iHX~j!GeMn6%GGC zN%z%k%~2+Z`r_QqMD#?=oO9+s&=K7ceY$76$1w*(g%b7?@@W+MEya$1vTvGNKXYfWRxrQny6f`p$j!|VxoK~SW(fC z-xuGe6l_sfddoi!$E&C<~DGm%NsZ`Q9cr^sAyN}{n1Cmj{IRSRM^nJ?BR-u z@|9pkMZ=DM9lG=H*X_XxPzl;6!>LxFMrpL&Y6Cdea+D%%A_SX#0y`!8H2xV6dP+s4`AW zq!v*YWHj8-F>qqy_F%A}U`0j4j*bK8b@-IcfD`>8BfyFNfbT(YqI~0@W0t5GI53gE z87#lzSR9mWHM=t-tl)?Mi(=DmU!NPX+}Wdb9s9FXW{k1Pl6uN-@ztY47616h1vK$mm)OoLB0R zcvhU4D31m!DjIfl95|7_8{Cjlu%Y6P9Rmj@(qmF@bmxClu%J6f11BcR$AT68QznBG z6XnyviuzQ{qhUw>VNkGLsn^A+y<iSz;~ZPO7f=uYUsiHY*@U`0j4 zj*bH-^6R7Df(?0(dv?Kw{7~F|3N};>9GFO-4Ei1qjDZvBYteQ=M#CK)11BbKUk?@( ztjKRLDr}gpiu6#hpjv~59UbX~!3`M&11IK{_o7IxsA$M9^Nk2LRN)(TOjXj0g9RB4 zcXSMtPdqIGpkm;_M0y}tkg;OJz=?^{f)y1FJ30=W*P#^}IMHo^f%Do754qGZQGXN# z4Lhp8KW*5rzeGiPXK+JCLH%Y#ZrIV09u98EDA-VO$Buym`HfB^Hgp%nz(n~>up<9B zhE}j)x~$U2g9YUcaRc2@F>qiay)jsjFW#g}Y**?(|68O`9*p(dP%&^|B0Ur=$XKzV ze<0qV22M=lOFsz~^y_^W$gijv|7Nl=S-hzyVJ30nV z%q#EZv3Cc~D`ns(Cdwy+6%`HLS`D1&&ceV%`E0Nvzu9tP!&tq3V4}P=SW(fiqvODd z^tRxJjDjxwzjbkC!Kc|D%q6{!^!4dqjD zOWRN}a9|>RI>@h#yJNwIF7m*M=>ki?aryl!4jXoKc?0vI{}NR`87%0Za{1xJME-TO zDA|pKZg;e3AH1?->Johim4!dDp-&|pb9qB3k41PRpo=KU_-@JkUkwO z$RAP#8|sCEhW)BiRl$aesUUqOSdc%g3O3XW1r7UECNSGOoS5iuu{&{MqO8G+iiREi!dM1Q zRJX{69UbYV!3`PZO1(7#6l~~U6a^2TshN`^fW)U_t(vmBfbniMSdYc66i%f*ZP1F>s=r>cEMK^0Ht>MML-S zA2=~l-X5%|XxPzl;6!>ya6?A9Qt$q!NMXbLxzFOi@L3%BxiPJR4HW|iCerhQ1sN+g zG~CfKaAM;2{9r-Bis>As&jkzWGvdqshK?$)VMqV6bBPlZ= zd3&&;qG3nB^0a8!kw5#iXn~4>0~6^UEXY`~p*zU~C-TSb4Q$BIj2RVFOs6)zJXny? za7V|$Y!NCw7%Z5^m%b1zm_nsz1^MC~F{6SF6$1w*(mR6%8U537%?zB#uZS)SHdG88 zm`JY-@+Zs<8@dxPa9*bZWe-;LulcNt6IFnQ9UbXa!3`M&{Z;YU8931mci_ZCc~`Ka zqG3lz{GwaQGXjZkA@xflQGDK9o0))!;X&h-Qb3df(;dS>=-!EowtD# z6XmPHiu}9iw_w9G-}J>`L4LsAz=n$HT`Il9s}-tx4g1yN-Ep=GHdG88m`Gc&AYRFIbSVVnf3n)1=eyg9ZK7vAG6LOq72QR#Y_X z=$Iy*z7#CTua50gu%Tk$z(o4@p#L_0qdjnV?%v*?AV5G=L}4guLUbQ2F~m7>kctd zz7eeG7&wt1(h)Y~=R_X``I8E;VaiLlpjzyP9sTWp7x6GZ6Suzf*2MY>T$3xSF9NU)-QE{4&tqiWW$W0>!WiSnUfMMcAoe(~D>6)kWgy*XIWOkuy~ zf%LlIhKz#xy#F2bu%jE=z=>%r>FdFQuEoHKiSqhjMMcASQ~*@X8g}H*#;z;aP%#yx zZv+c+jcFBB3>=t99}X5|R4p2Iba?|OCdx;G6%`FTI>vX66#cPa;6(payrm7CD4%~? zj2RUJ2PV=Nf(02XHl#PiYAncTxT9kr-z^C?$*+@p?eMCk|IsH0EU2Od1I_W#lV4y^d@;0aiV-NSW(fiqvODN9ezG8rhyaF*J$b8K}N$J9Rt-c8g^9u zHgu#n2RCGtEA=_23>(_J-5HR!;D(HX4HZ-P^sQjQ^zC{2u7?O3?&ugeF>!k=SWvK{ zqG3nB@n3py-wr2Qu0nrl&=IUDjIfl95^xhKSv4^ z<=erEiiRB>2Tr8#1UF<9Y^bkZW1PkhK1K5!HW9VsNAq)I@9Uf!GdW^r8QWP z(Qrq{xDe{Z{6buz>5IXF@wfuyFU4WOhWxkatzbibYlJG;P%&^|BE2o>PeiDJ6aBOH zB&y*y?C9=N11BcR`+^k}4LdpxoJj8vZpbK@?})eh^v+;GbA9aSNKXbgWE5k_n)E} zHcV@pz7s5{PDR6hofM?E2RCFC3{RmG6Qu6{paWn84Y)I44jy_ z{VrHgu%e=2N5_E^>G#1683h|E?$|MKU?R<6LB@&=4R>@5oS3-%Ay`nbqM~8$=KIxP z!LW2E=CzXVh}4RTcBPz!h8_9y9$wf`FD8B^u-NU&fEmEIXF$Y{8uV_d23 z{)`h<+lC!oqiaJrpd+s85ej4LkA|%ncjz^ZwsBL>0MV zN59_8k$>npjf#N-6X^&RWUSaQMM>Wc7UZwRsVLY`FBCNFSCx0g3KeXq$o~=FG8Js7 z7&tJIUK1?H=-;urI59;|j|B_*-5m}mCc0%BI5AN^8LX&i*wK-{Xc4iYzB@+Ru%jbw z!3`PZN_|N)Y^Vm*uwO${W#Gg_c~7vSqM?7^JsT$`%9Fv0{AGP$!;p7kqWmCOk-wrI zHgtIdCnm~M!HT@Aj15EHiHY*VU`76_de|^cD}66mkiVuB8>+m9{VIKD?6rct#VcpQ zhKhj$6X`uc{z2UN3pP{?9GFN?1q(7(Y-qS+>O75LLEfJhL9wA?;J`%sYOo+<#fB#Ki4I z!GeMn)9BOpg9Y6n2Tn|s4+bkL+LcndVZWL=jRPkp%GZJw6%9K&4xE?*q$h&~-Buo` z4jXn1SIUWras(^#zsCK!V8c{7{UBIS(Xb=G%jJUZg=*luUae3*5Ui+Z*wJy|MEYQG zLq(gvJGwO($X|DV!G`{s_%?6g#6L?3hSLupqxXrd80db;gP5lSuk~P@frx4LiELf%c|&7245}-W=SJ zQLv%njvWIBCemAi1sN+gG~CfKaAM-N1`7&SR5a}9IB+7pHMk)^E9OzKA^k9J(ishR zbPSxBxE;ZQf)(lbCwW0e!yO$1Cnjz`3KkTssA$;Hao|Myad1OM!G?-E_Uq8OY}hfc zX+1mUwxDC+M4kUVDr2}B=XG6vC{imb8g_IXIFV{_Lq@syKn!C;#lV4y^ub_3#)=IM zcXSM#n7Dl?SWvK{qG3lz{)S5u+m(9wX^}$3z=4VMtzbdMitRf5rYP7@pA*Z}uwN;g zW=BVQTW~{0!G?-Eb_^VtNN*1oWUScGa7V|$iHX}gf&~RDDjIfl95|8Q8QhR>F@=H+ z`49g+4l(VL^rK)w_iz|EF;RXLteD!S=LQS<=e*$J#6%UPVZY+Jp$tri>Bqr>^4YjQ zR}37ONcUhtMpe0CN0&EnVxoL5SW(fiqocetzIoqJF>qiay(?Idv0_8R9UTKFCT{Nz z78IqW^aOFsz~)UU^U6G7&uXCT*(_M1`bT5 z4+je}R%~dvqhsL2#O))&f`Szl4Ldr@)BktGL&d;>iS)0*f{Ya#8t&*AI5Ba1MzEk@ zMMcAojsqvsGlLs43N}>Sv18!CM0!@RAY;XbhC4b2PE6dM9V{qVQPHrY=-yOk#50)j1?Oi?&ugeF>!ltu%KW?MZ=Dc11FN-oZZmfvlYwe(^6+1s&-OZpbLuP;tkOfddoim%)OJ6&o7v=omOLar;%UpkPHs!;X#v zC(^Hj8!`$uRNS#+;J`%sO|T$i#fFAEItETm-2A=If`aw>^B-T^44l`uIG^`~z=n!} z0~6^B!Ger>of+(yNIwe}bSGtCUgzkeky=sFu9SKWJJQFZAfw@qj&bGrXM#IA()WTJ zG72_S+_7Wez(g9sf{Ya#8t&*AnAfO&9z$DDUKDv7Dh3Wrq!$MZGFEJ8xT9m>#Kdh0 z78IIQ^GdlmPfV0A1}iEWc68+L7%n!9pNfKs^0Qz?endTNSL&y+ zI2$Sk4osw<1q(7(Y-qS6KPn!!EA^!q%Z7@90~6`X!Ge78U2U-;{XF6=$Y{8uW8lQZ z?H9p$eQ{5=E5h9U37MEOOqA`kVjVaPi%QO;mReq23ln5Lh887vs8oR}!T z3|8bPG{c4=@5Ds;Rj?v|Up;K-pYZS1aAKl89={#l(UG1AZpbLuP;tkOfddoi`@w>Y z{*8FW9yqU*54R^KN)J|4H0ht36-LRv} z8#pmheiN+7&yOkv+m-rwJO?WV4osv^1oK}9~4VnY?L zp(8yI+>lW)4Jf@JSkMi3;KW4vZLnf~GnPF)94x3dQp1ie-oSZ9M%QfMyaJ&7E?6-? z9e?wbJ`*gMEn1`pg9RB4cXSNo&-zm-Y{=h=u@r2mey`EcuitPy6fFuiR16%LNS_Sq zJwi3?=vHIk#Qej5k9vO$rm3c11q=Fh-@u89s-R)Ns+j7)c}@C4LHc#Dp#NSKoS3Kz z8ulw?kUKikr-B!QW5tGsJ30nVOx#`(EGSsfe{M-|BE2*| z!Y{~ZxT9m>#Ki4o!GeMn6%9K&4xC6Y4{pdP*idoDj)4RHmodnJ6WtSR;KW2ZgB2AG zJ30=WNWTnj819oNCd!k+ii(CE9S2UN9|SjK6l|y$FO18eVaKrH=C$=c9jO%+4f#b; zrC`HEdU3FzyN(9R9*@Nh6$1w*(pQ588U1r{T@IW`KZ@UwFUTlZQQsRY*|1|8Q2I=; zAfw@qj&Y?7ZQw-haW84;NZ$@_$UkzA#fG{><%S(ym4S)!onS?NNt70BsDFy-H}vbe z#EI$*Hgu$41vg|AY^WEmt%e=xr4e~SM)~&BqB1H54osx)1Pd}&Y?xQ5-~N{kqoDuEsl|zDm!#hX3-V750~;#3-8pcgf62QyChE%~uVKe@^`u9F1sM(Z>+t1K zrC`H&Z#?%;OqBNpD=HeMdg&Fxg6@;`z=?_Sx?n{`!;XHT*}!=PxV97~%45NbiiRB> z2TtTiV+sY^mHM>{8x;cwCem+$1sN+gG~7`wcEgVGXXgVGre#XM4Ho1hF0g`%fddoiN5O)OZle#(Yu|r7QY$JN`sZR1 z2PVqrgB2C+O1&~RO~a1*U0WGD#$&;W{HiD|*pPCtV48mVW3Zs_CXEvl^~W*XhK}@; z;D(HX4Hb9n7&tJIei|&u=#P1Q!-=Z%h8@$~(iegS`QnR_DySGZFp<6#=?g`^Lt{V{61Jw(XgZAz=<@28!8%hgD>jse%?$$wCepWp1sT%>)1QL{-8DU~3mfIHu5(nS z4f|Ek_8B;l{~T`~1@+(Juwh64sx5_y{OZUn*w95DIMKhRGN#h>@4Ke( zIIqor9lEAZ%UVK144kN6i$AGq*fG8F zr1u9I4R>@5)c=TqH|)r-kN2E{4HW|iCej;%1^MFqpV0yv@)zT^qM%~nKz>bxFW4}z z38w!Vp^)G6cTtKi=)gpIW3Zy4VMoUlD!n#X(7*1Ego!G0!;bQVCC0#kiS+$oLB@&= zQ?vB+U_t(Noc)4|fddoiJHdjCszt+&@_2k0tr$2kk)8+^WUScGa7V|$iHY0yg9QaE zDjKFP)4v7_h5=2KM}id<4Lkakr*gxN{MFcI1sf^`4osx4$+K4HwO}Yu1}iEWc61y# zG4+w25iBS_h`fq{0~6_~U_r);4OO#-9o-ffIIqp%0W_|skka(bU_t(+9g7Y1LP5ih z{x?rLoR}91(zAjE{Q+NjiS*rILB{-Eyzr$FEU5n(qi@)eACJ6( z4HW~&m9hpWCdv$`Q>rR16%LNIwb|WUScG zlNG{wrR1HMC_fHXR5a}9IB;HvPZtFzra`7>2MhAAO$Hn4g@T6ts`49Eu%TiqNY4ot zUu%g>d1Lw7`P#z0bR5a}97n%*6m^x3d3l>ZttI|t?j4p5BM3*-( zQC}Z<4LkDRV)O<5`!Vo=6Zs8MTCiavy)jsjzZXL**ibQWU?PoRK}LV3Dd5CJc~-EZ zW8lO@d3La(W8g$}BWu{vk-i?>kWtW|qZv+gc>^aV$~S@)6%G0KwhuOR`(WU_b_B}L zf)y1FJ30=Ws9%bwX~T|c4>j!QH{-*JiSpcFMgDmNDA-Uja9|?+B3O{IV#9ng&S3gM zuwa^2`ev{oqv4K@f&5fdF4)k88aS_@C}*&uqG3nJf%7`FO9oC%J1nLD5q(Uniw)i0 z7&tLe9uHPjH0M0sAYBERSF;}9FV zynz!F<@v#i{0Gy*hWtl|*w9rOIMIz|;KW4vb+DqMA^jpox*((Bj*fv76Sp&1P_Uw+ zVMo7sfwAC3|8i{1ffEzuE5VBXLX~l1%1e8&Afw@qX;Y`?1`GO&w8cbuaj+tNF5Y(+ zWHj8-F>qqy_W58z!HSB89UTWw)EE6rlwwCUmWKTrl^556=`cMnSWw>-`?O(4M^(_U zBR?D$Nx_DSfddoiTR}I=ffG~P^!#8!UzFm+M0rWDqJQEaq7)}4$^*fQiiRB>2Tr6G z+>lYw3~0Ybh17!^GRl>Db4;~h!;p7kURAywsTCCs={v!KjD|Zp2I>#v4$`oro7=#7 z&GLx6ffMDCXtAMU;J`$BG^m!YVMqB*Tpt@M1`bT5-v$dZR&3}mH4L06e~j;pHdG88 zm`HyL7G$j0&~Qh7BJM~98+sESCnoAkAS%V83p}imJ=uP2jb&W!G^cEy02*RC;HyAYc3-ZW#p|Dh3Wrq^E)f8QmX>44mkq z44kO%3L19w3(W>jOq3r6D=HdxbmSb73pV6;N2r1g6KM+;O*&I53fZ6fDT- zua3wAC%PyDC+d5Gh8-RG!PuPz8@eb1Cnm~|gB2AGJ38`TZ5nKtZWQU|L3Mf>cI3aQ zhYc0^y)lA<4gH(GcECjbNrW%h(0>{XoR}y-3szJ#?C2LScbCVBZu<PHAetJ-_U8#SSLjHN2qk;_;0|zG3FM*F(j?f&5I(uwALw z`Ev;j9GFP25Aw5A#)fVe59DVnz;>mcBZYiZfbB{>R|@%g3b3KRBBC_p=PST=rCuO~ zZcWFvuqfF&qrN{T*svpiASl>Se;TuF=tw^cZpbgx5jNykM&||jMGCNCnE6C`L$IQv zT`8xwVMl(SS0UsVi-PS+EmD~3rI!W^Qu%L@LUq`%Un!5{j+ElH=Z1`e4Hb9n7&tJm z$S>0erf<8`lfi5G*KIQPHrYoRbnTF!4xE@5 z3Q`UhTmEXY`~U58JPYqelQ#lV4y^sm8!j1?Oi?&wbj11F}u^o(FZ zM#CK)11BbK&kPn6tmsb#11G9kHtg4Y-|seu`kT1U8+LSGd<>kJC=UiJDjIfl95|64 z3U0_K=!aq8yi)f4d2RmdGC1OJMMc9jzVvUwf^Lul=|@qzAfw@qj)7cbCl+kTFNxD# zuwAJiN0ki~0|zG3Po!QS+dI7>SkSHHz=?_StYAe&!;X#vC(^Tn8|HK4{Utrmn+&RH zHSCy1nm!yX$mkx611BcRzXdDu3nEIvhAB#Vb+DidFmPgC@iZGaF;QL}tf()FC=ENR zC=EO6Mk%m$Nt^XF>t`8*~HwDUmxKLHdN%_#Lci^ zL&d;>iS*lGLB{-fJWrZhs8Xm#fJ8%e$g>-pozDmd??OB#lS>)Q-rT*xc@`ced+%dg^tpjg9RB=ko3A> z!H{=e1*q~G_N(-YB9&erEU0gZdJQ`|@){IusMuo^QzE@JSdejw*+klr-XJg3 zZNZqLVEIFkv0_8R9UTKFCT@QW78I;k>Ww~FU`NM+6X{LC4H*T)d6`%~A7rf9Ffg%v zA;?&ygA5Nv7zCPj&bppxM58!Yml*GL&F^%11BbKZw(fVug6#A6U#S(j1?Oi z?idC+v3xPeSh1lA)p26t_O@U_!HSB89UTWwjQ9V2w8ip)AY;XbhC4b2PE3@yM}UeQ z9S2UNcLX@5oS3-% zHCRxvqJ1!?+Hqpy_Mu=w!HSB89UbYLaT+r=RNS#+;6Qmx?68U*9S2UNHMk+8U|?c- zYml*GL&F^%1LbW&#g2{xC(_%48!`%pZ8oudDacr{p*$P|uh`LX;6(aXaKlh}V)=5A zv0}r}(ZuqOAY;XbhC4b2$~%LK9UTWwq;~~3WE2b?O)OstGFEKpagM8-S;LNgrT#Ih zzCDf#Hq`6zU*maP(Qrqpe;0X3?}&OC1?d@4no+Q#|6>eE-HGyHO))f>SF3kMYIwVv zNFNVwSkRRAtICD8^9m4w%e$hmqM>|5bfkC3VMf96kI{p~MB0Lej)C%?prYY?Sv(ig z%RROnruPO5GKPswq-O><3R_+KLu>QxOp`h{1jf%AH~Lit^= zqM~6(M?QU`$A-m_3pP|8HSFk?W}qp}?~i^9HdIXY(wl+>Q(pQ&uppyj;KW2#xnW2B zVB|II=$H!9n}Y@ULy=dop<*J{U_r)y&FERNd=(9Mcv(-+jzmVmdL4c==2x(x*+d-! z2To+K{c6ms!N($1G2}~3l#k2Dz{C+XPPL40B7Hb0pHLOeVaK=%J`$;lhV;=OqhLm) z6rV$emJ{R3M*3LL&@oUx9#k~!uZS}_rP3#Y1sNR!CnlKK?prMCnNa*Moz4OL#ljxNB!bePs)!SqFJdX;ZuF|KI|kRA*cWONLi zm{&^W_K;GH3wOJTWe+k|Y$%_I9Z=D5$Bs45#PUiP$0s9F!G?-vpgW2xQ(pR1uplG7 z)r2q{o|vfe8uqKyR=qvP&TZBe{;L`F(^0o!N5|?{QSo#AN73FUJ{tBbB}~V_aYg-1 zG^}VypA9k!hVCZvgF(RtzmrXG*9H1j7bhn2@8hmhu%Tk$z(ktCf{gmhxG^>CxJMUF z^d0pcF&lRD3#|rDOq4$aD=Hdx^ow6b;DHm}R0dA$(PQ~sM6YN_55&37C|I#!*c~S( zmahgGD>kHeSRbU%N2moEL+Oc$-$G~x=1ei!)2+Bh-?uy+`tMVFl z^y|}uLl_`Hl%l&2hx|K#e$5X^u)ySjUZ#ihW40wpkv^;4r8tR z6$B^dbr|{e%W>4Oqa%MMDA-UhjHzMAl$Z8kLB_Bu{Yv4)M7hNkP|{QpI`_*vs;i=QU`j_N3W zri1kEU_rxL&0DG4 zNbmWtQGjM&?dTXvPfRS|4l-73Xd|wS9UTM5l~Q_QV);&xv0_8h<&N^r=xsyAP-Tv0_7dpZTJFE4tj# zF_fN|SRM~DR%~cb>K7dY2by?0%BS4eFl^R|<*^`R#fFAE()WUl4Hb9n7&xw!5lk#k z1Q{zfv~R`DsN=-Mtp^JVR#Y_X=s0j9eLJ`zqhLeD`0GDJWGsIRGFEJ8xT9m>#KbNA zV>Cm-dZk9ptzt*VffMQR;D%v>CnlEf2N^3ir1v|kC_T>QhKix|#KiJskg;Mzc`DA} zhKhzec7M1TKU1Le?O;Jh$H0k+`kkO*N52k@X-E2iA);T~1Lu|UteV#Y>v@s7VHntn ziRA}D#)=J1s2$~z=xsyAPrydTphYSrB4Lj2F;;YDvhC4b2PE6dM zA1o+XG2--A(HnMj&ZSbZ)AHWql`w8W+Ej~q-1N9 zktREtC}kr}DPMYT|BC51-E`AUH}C<5kFw~Ce$f|w(M`YTrkkGgSQ|d@^6BNDy{>XU z&;7mt*3;v&o1PJ5oG*%x#K6QteR0r`{{46}Mk~LGLsfL7_x`=O9pwjco{EkQryUPW zEYv>*4I6eGIIl}f9at7f_aLL-ygvV!Sg2158aC`WaN>@M^yJ_Hr}GR_%>^N}Z zj)~p&KJfRVg9Eo1I-)HX>4QPW=`;fq3-zTz!)D5k1L;FS#&V|g;~=A4BtK=)v0>nj zh4hFZqhPnxfztv56APQq+K%J;)FC}3ctAl#$A%jY4BXLu@9r3W08T9AHw6U^9XoC~ zF|h0}eK^P%-hvDHCqY3&#~Dw!|BG12)Z?0Ocw!;{G$?53NFT8{_MgPL51bgP6ASrg zK|w=D{ZYK}J2vdNT|Mg^80JkZQ-Hbz&jUprE0n{@4z%VaE+a zbz&j^A}DC+*hL;lKZ~@Cf}uLGkbfBzG<4LTL`KJk9XAZsiG}>DprD~6ebjj|q)n_V zS9M|`|2imW=%_!9jE)UEZrA0%h%3#y2X3x@9&4W%s5f7?IHH(7W*<0B)j5zpZX6qS z92o9gNS}zyj1jli8EbFYFN`0!OZi2N7gVHAx)VDN3@4jd$iE2+8amRa+=gM5iG`s$ zv5Qmx}#)ciYtM|)T^u$1VY7`188iqe{E~F0x56IYYV&IO6 z@*l+g(T43zEacw>1q~g$GajhFiu{fZLv>;yub`lzqy9V&)v;m64fTVui48k$IFLRR z6jU^H3@oG%2M@>?f+iO7?}LJdj`V4-71FO`;~51*bz&j^At-3*s57?Pv0=vz^`qXp z*lpvy_JTX+b!mZ#h5W~$prK>8s{_M^Cf2nz)rp1tr=Xyrqy8ec(XnC24b3ZS#>7JY zb5PLGkq(aq`)?xlz=@$cv5@}~6f|_yUq(*Hh8?$SOtu*l3;C}>K|{wb_CWn@Bz9~V zsuK%2{p)cr8anE)WMjjQ8;0t{LViS0(9n@StVq)Rp+d)P}yLx{Ye^}XY;KUsh>CM3d3Mz)%7V>w3f`*PAH=JJWX!mF{ zTKb&Fiya5j=Z#^mcC>rhT(Nhi1G6AxT@&b%{Y+$ z5Kp$CVvo7QjD=xnA^kBJerhbF96VrGIIk+!wdQFP*iAVxaKG+QIIxhu9AxY`kiKFJ zx7g1SZFh0tjH~*zSZu?N8|t4Te#4IXiP-;!fpzub*7Wq4TTs!E{v0IyMa4v5+1eWE8Ar;ok=t>1$4a9S73ajbS+K!tV08#(eB17V_hR zf`*Rt4GSQpeh);4xK}EwbYhockF(_#0*hL>0QYY4x zuR5`ipA-}{bfiB93KIQBct^ zR3{elvx0(#j`S_(#s27sJaA&DPAueS2L%lsDgBcuprE2*s7@^8=L7`}9lOW_^)Zpw zv0qevu3XiLh5Uk`prIo@Dl#$(DjJ6B#6o^yP|(nkzT>>u z9~Y4aP7KwFh5VwRprIo@Ix;c}DjK$HJscTc3sBHv2@bogN%al0>1#idYD*O zPhopPT<$n#eqG5Qf3;D%CK|@FSZu~K;pku=g2L|q_-wQSzIB~~B z`hM_$^t$-XS3$>y8x9QIv5;OLWE3=X3@qd~1O*KpJ8n2JFtPB^gN)&T3%Ldb4ITAU z{wRXo#!pNvJp3TYsAw2&TgWd73K}{F7V=Ajf`*RakG%`|E&d#VhK?OKoER7H{HJjT z^1Fh9hK?OKoEVr`*QLmX{IZ~+p<_7ALcRwD4IMjf7$z^|mj?w69qETLrJ!TO4F?A9 zsBeuEZ8&h^j*0ZP-~j~{`@0+|~KHSSmn>3c!O_LKN;*zP!yei}TWpki2bAw44)J_-x<(>@v470#=Q`pjU% zj{3~V-LT_^^sJzuq9HviCKpr;D=(b?aa1Z%82dVqs?fWWp^Anv25Q*VPYY_A}DC+ z*e!Tmt3EI8>ew(;Cl>N6gMx;R^q)j~O#JxED5z){W=t&PR|N$P9q9*7g!KGK%qSSD z6AQTo1q~hPv5}EcP|>hiZ^wbtLmXIF&^^X7x`%jPX_#2orR5j$tAm1uj{4qz8W}in z;*N>52M;Ky=-4nUu#jI96f|@UEacY)1q~eo3;Az@f`*QPh5WjpprK=6A-_H-Xz18I zh=+J7%SYn(l@%LyPw7DVVUV%oK>Cp}>^P8qYz#XNq@NhWjsxkZ#<1f+`k688IFNpB z44co$j`QjnJCLR+*#6U)p>rVp!Z>yuNWV0O-CUgm=~u>ai}B%^Of2L#1O*KpySWGU z7sR{fz=@$cv5em+2)zMnU?m zdvUrPm{=&0UA5=L%erC5?drMdK>D3Eu)Q>H+Hv5-aG>(C=v8!VI6douiG}>eprD~& zz1TpHHZ8P^Ik2peULIr=Y%y(*c8iu?7Sq$RHJs`L6AMR7%cgCwh^rk3PE>{RN2hFV;jrkyMEawpu)Q{_I}V)JrNV*ow=q`Hv0=p?mriLXuHiESccQzsiEM+z{JA#=3vKx6ZI{@hW+B&PORRd zEhFizK}JE3@!=h@ke(Yn;BezW`CL4fijLvqG_jE16cjXcq`!E!7$PPXhU&yZ{=1-{ zp(8!ScVtFEMZ-{?SjcY<3K}|gkq7p-McRQALv>;yza=PW=tz%`jEsVchM_vKklz{< zG<2lDIxp%LX&oDe>cm2RTTsx@k)9A483h#$Lv>;yZ$Uvr$1d_fdV8d06b#jgh5YuQ zprIo@F)}g=DjJ6B#6o^YP|(nk(%+8)hO~)w<*H6B7+A>f4GJ1M1{U%j6f|@UEadkE1q~hN6^@C8-ADDrz#ZGW6>#9h!+#Oydxa14 zd*Z61V?&N&S6r^rdkvvrS2*4Wd?BtX zI!+8slrIJq9VZ6n)$<$|(no{(+<1#@*m1*w^BVI;Jg;{n?pM!Ko><7YprD~6J>D^} z%Q$dis7@^8j|K$|9Vy3al~GX9FjOZN^2dULhK^n2f%>sX>)0?O@gMx;R^t8yx zD5z){suK(O6G1^kM|y(uB7Hp4G75(3#6tdLP|(nko*o$)1r-fLbz&iZDkx~^*hL-~ z(k9lGt2(ieKOGb_bfjlQMn*wJ!%&@A$VX7n(2<_#yx2bxkq1r;)rp1tnV_JdBRw-R zG72gh((~e7S5VQ=u^~OvKTJeLL&t{w>RlVcf%?hVP{(qao)l!%NBz?%V8g&23+d58 zMnOZz-FJZdcN{1)KHwD{8wT!JNWaiCIXyYZ*o_@Hk$xFGprB$3yXNA+X?$EoEYx2G z4I6fpFU3c_qGNdi=~F>Q!NA1AY2Ls@IfIIh{nMskpdP`79qBVcLB;SAFXYb#1q~g; z@9r1!78Epe?6~2?xW@cbniCTX4{r=IDjGKIIB?>QiTb8s!+{fbOr*aH9#BxxvEhaT z>CHhw$A%jY4BWAh-V$UKG;|Cs@bI=EqrN?!(1rsi?wCmL2p&*S zk>2MmjgAdB92mG`A-zAyC>R!4$nOja8aj5|aAKgoE7)-0#2pjq-N6G2Dh3wvdxC<7 zjvY6g7)U?+w__eUHr#Mv;Eww9V8ekEcTA)iJYaaYuj?)E^2Ef#!!Lr2iiUxO{L7%A zp<~DG>iyTziFQOwPw_Q?Gp=@>14HepYS?k$Zaf>ujsw&9(~M)e`fp;F(Q>ri;DHiX zHCl_-qixalXt!ubwDfdqV8f0BXB3AC&xnhRdt6PUKFbpe`Ex-*L&t9Zf#GXmVqISl zsuK(O^FcvFM|xKLG{`8ZXc(#!3;7E{K|@D+rp;piY(yS7F;piO@)v`GhK}^?$jB(D zXxOcHV3;?tkiQfZG<2kA*#YY3BDZ71P@P!FXHd}4k)9K283h#$yY&vFXImc2YxCd6 zOCBvpE75AS7Oh9yqV1Z=2X1k7L_4F6X!mF{+KQI`Mtn@lc!;YUtwh@m92oXEv5>zU z6f|_C67w?B=i|&71w(aWA%7((Xy`~KPMT3r(J)je7V=kvf`*P=SjgWF3K}}n3t|Tu1r-fLbz&iZCn#v>NH4HS3~3YV%2l0M$lnbL8amPo zBO{}rqG6~`EadM61q~g$$OHQskq1r;)rp1t{h*+sBfTgxG72ghhU&yZ{y|XC(2-u~ zyr^G}w2lo!bz&jkgMx;R^y0|KD5z){suK(Ohe1I@$1d_f`bwl_6b#jgh5VzSprIqx z$jB(DXjs>JFLEO6I56Bcv5wWE51itM|27V8f2|^`M|${7ppY3`{I+ z-w1XbI5Ff*EaaaD1q~gk#^y8XH{*_u4MTNeAOrf`W#Q^b+UAkT$WdT-Aw%{Oh2gp(DK_ zGBOG(8v5VFfvkDp7FS2KGunuD_n+>cSjfK#3K}}n%l>{8kiH$8$|xAB6ASsbK|w=D zdS&b)qoAT;x88wa-o!%wT~N@_kzQ^G7;-1pwFA|Og}j1-hK}^ANXsawXxOcHT#K4F zv5hGol!7U zCl>Nwf`W#Q^qNS_D5z-It#@FUH?ffa8Wc2iq-F;gawpcc1J#Lzoc@it7Y!ZhwUL%l zP|+|{Cl>M}f`W#QUF3oN`w@BI#891B$d3#P8amS7Mn*_lQj`SL5#*jF%u58tbh5Qf{G;};fM0!JHWfW923^OJc^5cVo zhK^nAf&GUOd*H-Somj|E2nrfHQjd&`f{J#H+0<(t3MH;~ode@5{$`JA*58_i7FWZn z6ASr?K|w>uZtj8lqu6D~hM_vKke?J3G<2jl+Aj(!8q$wrfr5(kI-A0d1H%Fn3;D@G zK|@D+z1uLXGO;jJCl>Nkf`W#Q^rqNGMnOfxP@P!FPYnthI(Cr<_Mb%BffGY@Vj<_C zprIrEU1VewR5T3LiG}>MprD~6y}@}=e;R2W8;0t{LVkKs(9n_I92pq}6%9jmVj({x zC}`-|MIJ~$i?ob_p*pdUpBWT1bfmXLMn*wJ!%&@A$j=H28ah&UUJPjy>&jJ~Sjf)~ z3K}}nTO%W*prT=@PAuf-1O*KpyT}9k&m;1{iJ>~NkV{a|(2?F285so?4c*7hjERN( z+@PSLBfZg?QD-D}Y#6E&3;B6LK|@E{A}6DuqG6~`Eac}01q~g$$OGvYk(N;~R3{el z3xa}%j`a4($SA027^)Ks`GrA2Lq~d(^I}MwSXZv<#6o^iP|(nk-VqrY1r-gOFTh{M zN(WBVUj-c-_L#AB(yxPzf`N&JTTI)26P+Cg&Z`&W<+pKF(XrvQtWNq}kWnyV{Jc7t zSh!n%MQ6u>6Xo|oMaPC|ZJqRoAfsSeTW4TiLrDL9-1x`n>^N}ZA;!y}qEpeaA;lO9u^L70;{R7b}Xz18+!-;{3bzORa7xIgP zf`*Rz-uM;xh65+=m`Ho@fP#wQwuM}Sf`*P^%0hl$P|(n^fr0zgGkGC@Feqr~*m1*&ap4FH`6WR?Lr48}ti0jCi906JZ-NKx zI5DyC@Y^7xqG4bm|1KzK=-6>XT0ud_h8qqH+);lYY&dY@j*0Y#-~si`@xJO9nAqYy zSl?nC!*M4T@=Jq)hK^z0MEz^LVLLVq)rp1tvY?=$BfT@eS~3bM8ur-5Fk@mNzdR^t z=%{bCQKa+_V+sm}>cm2RMNrVtk=_+K83h#$Lv>;yzcMIj=olg=hO~)w<*H6BLVkuW5ZCLSjevp3K}}ndm|^KprYZFZN|hx{@b9Sp<{@hNRNud zjDn#$v5;RE6f|_CJ#sP%DjJ4tGbR@D>w|)Zj{0`z#*jF%u58tbh5Uw~prIqZFLE*p zDjJ6B#6s>tK|{w7Ik7)FA`hGxsuK(OjX^;}M|yu`WE501+@0BsiG}>8prE0nzQdVO z9}|fk8;0t{LjJp;prIpuAaXJaDjJ6B#6o^^P|(mZL{6l~Mp{O}P@P!FZwU$-I?@Lt zBcq_AVW>_l`nd^N>di{78Epe zOfSa^;@^u}NG}W?Fs>pN^4o)ghK^yk6Z_+0w+BuP)rp1tj-a5SBYoJGQBcvY-a{;~ zVaG6eA-^*yXy_PN$nOdY8aj4AZca=rJp3`psAw2i$bSk78aj5|kp3JLbZofcz`z~# ze~9)jFDC{j(&OVm1r_6K{~%(q#SPO;ye>f;;=tv)rjEsVchM_vKkUtU>G;|D+6ZI*P*0EuzPAueGP|(nk zJ`oui1r-fLbz&iZG$?53s2^}%q^Cw&M!`^>SjZm>3K}}nCnF=HprWD2>waE~U}9m* z!HxqbwwPO<7M+TY4GZb%K}NxDU7dl6gB1LxJV_A}$EqGQ7u<4Y$!E66Aq z*1tNKSl8v(eFtH@$j<T8>sf=y76Tq8R^>aSTk<7%v~zK}U~Dj@#9H_CJi}FtEo;!y*&6xH_WMo3$~#%o7Xw z<3T|~$1rcAJ||Y}*f3Nl7V;;8f`*Rtsd%$w6jU^vcJWcWz%X}WA%8L`Xy_Q`O{5ap z83jXiVj+JjC}`+NpN_S1DGdqJ?{z=I-$SBfT~5KVtlhHvFge-oV0Xw*wRDMR89?{ZRake#3zicTA)Y z2M;Ky7@x4pg?)T7t~v(h)${Zw7V>9;f`*RzDYs$R#l*r;omj}94GJ1M(r3IbD5z*S zuk|odKP>|T6ZJ5Lfr;|X_)4khI59A>JW#O{3;A(k9lG zt2(iezY-KQ^y|`@zYsYY1r-g$jERN()u5oEqkhhrvA;B851bgP6ASrkK|w=D`eI~c z6jU?})rp1t^`M}kV~CunFN?H}4MTNeA%7z%Xy`~^ij0hciiV*&v5>zR6f|_y&pR*D z%OfqLV5m+kujvG#l zYwUx5KaGinhYtlA6%8A995_)w9Bepn;*N>*k>CLZ6&)MKum8PBL;g)r(9p5th7$u5 z3lF~yGAbH2>^N}Zj*0ZU-~j~{9ouzzi>I;Sz==C1(no^_6jTf>@M^oHO81r;3|Za6S-$3p5sMnOZzjvG!4Oe{RSG03Q&igRo@aN>@M^y%OM z1@+=D@f(K?2Tt5Ek^UMyV8@Axg@^R-L@p{C(kLi%WsQ7|m9kRK5g zG<58^Aw4oE=-6<>fq^@AZ-MiAA6z)^LOwhLG<58^;lx1wOt9g=i906JXM+b6RO~PL zM==ir_p9e@>pJSk92E^6J8n2JFtJb{73bJ+;KUsh>CwRhdVJMw(dvjlA8i=EZYLJ< zcY=b3j`{^ZKv4fSo>a$%p*pdUzZ(=ZbfmBNB1b_*!?51OFmGZZe=jI#=%`<`1EkkQ zZbrdSomj}<4+@umo1NJKUW9! z4H2q9yl>nCl>My3K}}nh>VPaiiV*&v5ACinNXm zLv>;y|1v0O=t$p+jEsVchM_vKkbe~vG;|D+6Y1|FEu&zlPAueK2L%ls>D!T!QBcv4 z{@1wQjERN(o1mbfqkhYoF(gi`D_eD9A^$cgXy{1aiJXjriiV*&v5;y|2`;a=&0XzUevclTE~W=IW{}3;9n$K|@FSeq>}6R5T3LiG}>g%OswnDkJp9#*r1@HW5@04eLVg+bz)-S;S)hdMZ<<22Tlxsv|GrZ3kn)KcHD4c zpng8saNxup6X^@V0}3hz7V;N^f`*PAH=Gz3Ubuz)h@haMV_+daGAL;1*!>r%PfRR4 zY(Yjv!-gFPPTVn3-yUo@aN>@M^p4;G1r;3|Za7fC6erqn;KUsh=?orFP%mEk&*Kgp zIB~~BdRg#*f{Km}HyjwaV95`{uMEX?lfP#vS4e7nHje?3HV+RNQ06H0xXbN`zr}A-zA?abjSZ`#s-w7;adoABf_H9qEHXLB+sA`jD}23&X&= zdS1ebh5YECprK=koY<{$;KWd!SjdkF3K}}n4}Eo`prT#9@7N0l7S3nI|5C`nLV8)e zjs+DB=~Mq|jG>~TUzZ<_4Q<#_zwcS0epe9E{~oIwniz%_hK1L)`pcvDfMN3!3;D4@ zK|@FVfe56JL}Et4P@P!Fj|&PKI?|6k78F!83=1rzTd?EAxGrt&y!MCt)wABjLVgGe z8ajqePSlUaQXLzH>cm2Rd{EHPk$xPz$|$I4c!;N2z88DNI< z!HyeFj0=+|hLcY$;yKQ$<5=tw{FOi@tLuHJ8AFC7~O z?pR2_H5TU^Vkd^>CKhrI3K}}o8}w#f7s}}fG73(c z8JO4J-sK;gD-295l%L0xijM6wF}CBtd7&^cQD@LGFp*vvpTvTShSN`{fpztqbz&hu zJ1A)AsK2l>>SrUoW5ZCLSjf)_3K}}nFFi#RR5T3LiG^H(f`*PEaw2^$(lQE$>cm2R zZcxzBk$x2!83h#$Lv>;yKQAa~=%~MRUJPjy>&jJ~Sjf*03K}}nuOlO)prT=@PAudX z1O*KpL*&H%`G`DlVyI3mk&#hQ(J)je7V?XNf`*RzE9XW1LZo$U7^)Ks z`Ncs&Lr3~;WMmXnGz`^=gGZazdR^t=onbYuLuenI@06fFZl%>8*Vr-aKCycFXUGS z1q~eo3;9(+K|{yDLT*7pL&v~EesxgL&@r%(UlSBGbPO!y*9HX*9RmybZ-at{j)8^z zx}cz;V_+e_J}7ADs1Na6HXJx{$3%L3@PJ|RLViO~(9kikkb6+j&@ud9D=p+l1qBTq zJ8n2JFtPCP=pdt_VOVq_zcDCi=t!TAzgZS^Y`EdTz#R+e2r>$GM?EpI@bH8nqoQG8 zAwMxFXz18+!|=zxh5YTHprK>O4JQWDlj635jtw^)7`R_OM_tHo3JMxJ>XT#Mh65+= zm`G0v9&q?EJy6d0m{xRbxWxzgh;~L>2GW;1O+z1R3SxseVOv0}~7NF+szI9S2U_F|m0& z@7H@8>(8;t^p_xG#OBLiqf^nZ-tRqcY~PG6?>KN?*w4VkLVXAtHtaZXqCP(8*f4O% zLV7}wQBZ&6Cmv2a7?`-nMrX7YE&bmyC;eNIgah>tF{h)9*lI<`hSSmm6YENPV)Pm| z>^N|uJT@L(MaPDLI~LO8f{cQOj?)+Bz{FX+nJ{sB&kRf~)K>-#4{@{{?R-QWYG7VH zC!1K#lfD&Xl#3_Djw?Dg4BWAho*ZNp)IWM$I4v+Ru`YZh($j*Bf*m)U7?@aiczTdg z(QrD?z{GlF940*~$QZ&Wwr@x7jsxd~O%6<~YtK)KUc-hR2TqI+{_lu5IK>)8)+E@ zLv>;yzcnam=+|YuYttVhC!?UEU6+4$7Id7~nwY5G@Wuxw%3p$tj`LOCOPE-wEoc|+ zH*H{|{x#^>z848Q4xA`Yjdx5%$A*DB7E%r}3QiyFfr*9s5HxJqap1%q6W#V~Wnkj; z0U4NBsLu!*HtaZX;*N>*%-{iAEL_sR9Jiw5#K62RJ)VJyh5G8CVR!!{Vs1spz(o0e zJgAC}4W~yjFtJdd7Bp)7o~xTg}Q=<4Li!?Aw40;C}`+7Z0b?5fr^eZhDNm0#lXCVJ*I()h5DMHp*%X~RdftYoK7+@u~42K zkE5bv!@wO2=@~&rL4AysvE5^V9S2Tq-T^xfoJh|K9#BxxvEhaT19zO3ADFm%GLMZ; zMaMMs?0+|g(6M3Qj)nA`Afuq6W5*4r<;Jxp>f?fr^20b!MaPEI6Bw9S*8_QG^cpto zIB=pqE9lrTaK}P=c92nU${mOk#^w3P@P!F?+6MS zI?|saBcq_AVW>_lD9pl>JuFryUP;;_p2vk zVj;gbC}`*y?wuI+Jh86bt4=KBJt%1CNPmr;W)xJkYb@TO+s|U99S2SfcP-@i1qBWL z>cw5BPuIXieUjs${KO?Xh8rdp^815=hK}L3iTd-%?$|I?Cl>Mtf`W#Ql>W6SprE25 z%~+tI;>5tjLj8PvMmHQdamPgZLhyisijM8Ne6sUmJU9MAv5=k@JRqZ>V*5p;?Kp5E z{l9Um`zPuzW2j@pc&fi8BIlr>p<~Al=~pqipknyKTFBoE3K}|g+;C#xA$DP{Vv#X;6z=)h8@Ft^=Y<&Wi0(Z$S625 zFtM=xA=q)?#JnERAEQ^%v0XT`)hG72%I}NR;XDiJZ-WO6=UzD76zv{uMypS^N36I? z|6kk?Ek`TSYP6v^(c-Eb@d27x$R7*}8anDTEQ|D~*l$L`P@P!F9|{T@I?^NJW0+A; z(J)je7V?LKf`*PEa$-oESXZv<#6tc^P|(nk9vK-K1r_b;J=0+@%$r!qx1gY*W0*Iw z|2e`BoEWMT3;Cl#K|@D+lpUa;qG9t|Jj*Un{(rXaBzT_XE)e_JbMbA$HskRU;jp8R zj_}wHJ3Qgj*e4&Yn{S$j^cY@@kg)V%2A@)(rL?E^(w-6s3bdv6(w^E|8ze$YX-_SP z1|dlHViW#;T8upeei8Y3ncu9+TDyK-UESaR4`R52iXF{y(K&GnrN0R>R$PtoB4eOO z>kuB8IMLFNL?;fECk7Qej+pCINk1E8tQbbSS1@tn7V-V(qSDZDU`Bj>Qd9~mcAUmn zNly+kR-}IsGpYL@h$e#*UY^WIa{lu{BiSxb|dM8fgPX{YDRHP@xnUJxfV8hURB7Y`W zv7w^8*fGbzL|Mhqo)&A+aiBas*wHXdGBFG_aU%a}uwp|+d5J-ho)PnAtQdMHPUK$; zR&1ykPmb-FIFX(bEEvX{Xf9;O{c46A${T_m4OgT$1}h3S44g=B3Kk6i?9_?$vS2~R ziebf1q-O@r9LIe&+|YC!7KB+&EJ{v5^XgDx%!$f(h9fne4yd4c!3>_2gW$|9% zz`zX?C(_G{aKb|SqcSTGEFqG=xY7;Y#pk3GMm;fjvq&i#=e zCdwaLNi?g`aUlIwuwX^O@f42>G4D0Aofvv2&illF9kmTR8ji)hn0I0aowhH1F332Y z1nJp9#)`wEqk)MNWe+y&Xc#6wk)9Kb`*=v74;ExJy~lkLls~fdC^?!t8q#xv6$Jw) z((^Q3IVMiz9<10uSh1mEShIOwJ)~z^Ta>rPwP#1e z^ygE861}4gD#4s>XeqIa%6Xh4gaNO4v6X(78k$)JAT%+00abSH( zP*Abon}6(bg~NCQ6Q|zv(ja5Sfq{t=?PWp7f%5X8V#kT}iXdaffq{t=`zwQnjsxqf zf`W=2CsGMARvZ|ZIPXncbfSDWZt-_?9Jpa3{Z_DGMZv&{d<#}=sA#z2z(D!!U`NM+ z8z$241PfLa45!bD{PkePhKhj``5VEC4HW|?@(5OJs7UYmrx8QNjw?C_Za9(N8)U55 zP?5giGapp!xT0g=h7;+FLB@*Vm3Jb)Fj%pnqT!14qF_bEjw?C_ZugqaI+4E_tk_WR zwI7XXRVGg4Zv`thRFv2Lqo|?1I!=;~14Hk`iTv$g#fFOEB|UK>Jv&&?V%di=2PVod z1{LdTV)TNF9Ye=N`uS*Pthm|=%bGZmzZ0z3P*Hx#=osdjI5G52oXEc!tk_V|Ey7w) zoJh|J797!ei_*NKIWTa;#2KCGQ4zNAiTxL1xeXl$%AdHJVBkc0MZ8a3QLv$6$H0m7 z%3wjpit(pLLHa?w;mcUjaK(XfuRYz{K}@W%wk66IW&J{ILP5RPHoFn)YppdZcAVb* zrFR7xD;lmiFp$=N8k1l}!xaYxCQd9b2{H;c9M)i9-fLnLC(28M4Lce-4%{%2UKT7^ zfB7H9Y^Z2r9S73Og9R%JDt27aF>u3Sl!1xziilP07`Wj?dS#HYVnap473;73qZkDh z<8}XKjEocI^}&Ypi*XcI6bzh5zZ4wzc`;G`EY6Poj=QCXjv;oUIs;y3T2!om6K74q zj)5Caq!d|G_L%E1?Z8BNeNeGmlZJj@C+y~G=s1v`7%W&(Fl^(*iSmYE!(rrsiE`R9 ztZ&dnz1Ox_TE&hN>6e3y6~k;NhCeqa^7n!j8!8&EI51FN94GgVjsrJLq%~O3aA4xZ z@{%B7_3Q8OMD+F>zvjw>eR z20(gKjGVDz=$$x`e>+&Qp<-CIi4*C$!GfW8;za(PV8w=tVUZKV(k9OPa`jG}$lnWA zY^WHPF>xY2FIX`2PMpZU8?4w+QQl#D(P}KR|Sh1mESjNPO^!#AKFy2IY za|~6n<3xH(kg;N5;zWCE&~adWTToE3V|YQF$iEk?*ig}M#esn>PTlnOm~}A&}_tkfg9$%>Gg6Vy**gaaA4qu@{V9f!xibB!HR+n z11HiREND0|a6|c0tig_kD>{ZR(oCEvFLvOtqoL!t$KDmYv!SD`(NVEu;D!_FB|*lD z(;VsDLB480R4^6v*LHdG8Ry@?a)1;K*y@;DE6bR4*0BE2G5Q2x?|5(6j7Ux{Jh zyw}_wPMpX`uwp|+!xaYxCQh_31sw+_PAp#zG72{AXy`alz7kaI=s0l0MEYv5U`0X2 zj`X!4V@1V|D>?>lIFY^{WULqt%8B$|hevGUME*vwVnap46$b_;&O7&G{$8gKn&WX` z;>7aGAfsTz{DfBC5sA`1Wp{`U%zHn& zj{T!iYv?#oVy+(L`sV*7DmXB3!^Da7mS91~ih>OlI~uO&I52R-#EJCQU_r);f(;cr z8m{O#FmS`fiS)K$LB@)L4HY{YuIM;0aKprj^!8vu#)^Us6+0TP=r}NN!^Da7j$lE? zih>OlI~uO&I52R-#EJCIU_r);f(;cr8m{O#FmS`fiL?g`GFB99sMyhPMaO}G8zxSq zcLfVFRupWg*wJuB$AN(xCQhVx2MaP*6l|#2(Qrk_fq@$)PNeq)3o=#|Y^d1La7D*~ zfg2`Hr1u63GFB99sMyhPMaO}G8zxSq_XP_wRupWg*wJuB$AN(xCQhXH2MaP*6l|#2 z(Qrk_fq@$)PNWY63o=#|Y^d1La7D*~fg2`Hq!uj5SW&Q{Vn@Rj9R~((m^hI>7%a$G zQLv$6N5d5z2L^7KIFUXSEXY_8Z5|IQLv$6N5d5z2L^7KIFUXUEXY_hNDt0tn(Q#nlhKUpD)4_s_ z6$KkAb~IekabVzvi4*BF!Geqx1sf`MG+fc|&DZ^J(L~3Afg2`Hq}K-vGFB99sMyhP zMaO}G8zxSqHv|hZRupWg*wJuB$AN(xCQhU`1`9G)6l|#2(Qrk_fq@$)PNX*l3o=#| zY^d1La7D*~fg2`Hq#7*9SW&Q{Vn@Rj9R~((m^hK%94yFKQLv$6N5d5z2L^7KIFa5G zEXY_OlI~uO&I52R-#EJB-U_r);f(;cr8m{O#FmS`fiS+JZLB@)L z4HY{YuIM;0aKprj^qycr#)^Us6+0TP=r}NN!^Da7-e5t-ih>OlI~uO&I52R-#EJC2 zU_r);f(;cr8m{O#FmS`fiS+(pLB@)L4HY{YuIM;0aKprj^nqYO#)^Us6+0TP=r}NN z!^DZyf(02X3N}>iXt<)|z`zX?C(;Ll1sN*}HdO3rxT530zzq{8(uaZt87m4lRP1QD zqT|584HGBQhl2$fD+)GL>}a^6iXt<)|z`zX?C(=iQ1sN*} zHdO3rxT530zzq{8(#L`Y87m4lRP1QDqT|584HGBQ$AbkKD+)GL>}a^+3@-oOBQF2! z5to1dh|B-}h|B-+h|B-^h|9lt#O22yarwzdT$cap5tkh0_>UfOxkZV8JN~l#$B($I zQMQQJD0|eeQI06_^V&=N+UBzSNc2A{`lG~S=}SCOy~GpMOOF!I?JnuRj`An}UQCFB z9UV8MKMhtCY^d1La7D*~fg2`Hq(2K5WUMIIP_d)oih&dT6#MU^66J`p+Ndb;bmDT2 zazr_!EdMzAqTK$QSag*53E?F^{=cmMNz|k4QLf7W5MxC-qTHf=Mp^zzOcy17?S9Eo zwy5t>u2JIA#pM=di+GK4jS^`wE~j|>e@0pU)0jWX7G;lejdDb}MLDA^|5?QT$Cxk5 z5#<(TMmeJ_|5Ge8${J-iU6dorEy@{X`Ol*-$`)mhvi!F(eUvRqjdG3H5#<);)c;?^ z^ij4bdz5RGBT8iZzC_xuOMIpEa{ZrUU7{ROZc%2GGs^PMV(ciZ64Px_cGE{WqO|`Y z%A5cF2%zJ@zzq{8(p!QB87m4lRP1QDqT|584HGBQTZ07|D+)GL>}a^6iXt<)|z`zX?C(_%41sN*}HdO3rxT530zzq{8(mR3$87m4lRP1QDqT|58 z4HGBQJA>wgiPEFANQihDzaKA=`i&onv1imuWS6*XsE~W&(jfQ5rJL@+#ECqD6%{)= z4z!QPpdAOM*opkjU`54_VHr0}oJf&k;j$n@QiqGA4wnrwJ6vRTxHMeRabVb@p*A5= z!$qQoOF>0Lx9|fKC-S#~6%{)=4osZ5+KKtwQCm^5qhlg}C#dL_Cbz<6;06g6E)pzU zx}gq~cm9)@L@l|LFX#p+E=m;*9Rm~TT|q%bL&v~GdN)24WE501bPPnfCpOaX*W3BL8N@R-}(ePxU7R6N|q-1v@%!NKXq^ zR9rD|B0oLY&~RX4c}7sMqvMA3%wR>u6$2;ovw{r`2PT$h2L(GiZb;7wR#aRua3bem zL&JfI<+(w@j*c7B^MVx>R}7rU&kr^<9GF;M5ESg_xFNkTSW$7sz=`~#U_--!iRHyX z!H$j_(i*I&xMJW$eo3&Q;lRZ5(x6~R#|`Oa!HSA222SLc2OAm=Of0Vm3U+kdkX{+A zsJLR_M1EDUq2a*9Qi6gV9XF&`2P-PB7&wt%6KrTWFtPl6P_U!phV%=;ii#@+PUP1H z8yXHwEWa2O?C7{5{Zg=^;);P2c?&i)9GF;sIVjlCaYOo*U`53h11Iw9f(;D^CYIL+ z1v@%!NN)&MR9rD|BEK=%&~RX4c~elZqvM8DgB2B544lYs4mLC#m{{Ht6zu4@A-y$N zQE|nlc68j3-W#l_xMJW$eqXSm;lRZ5{-9t-#|`NN!HSA222SJ_Y-l(zv3xKn z*wJxA`cSZ<;);P2`NP46h65AJM}mSK9XF(p1}iGA7&wtX7HnuZFtL0*DA>_)L%Iel zDy|qfkv|b^XgDyjd@?B5(Q!liRIsArih&dP)4_&@0~5<6(;R#aRua3cR& zu%Y3=#L|O;9UV8MUk_GPTrqGWe>T|AaA0Ejji6vh#|`Oo!HSA222SM92OAm=Oe|jr z3U+kdkiHnKsJLR_L_UHI4F@KcF9iiVI&Mf`4pvlLF>oS(CD_n#U}E`dP_U!phV->y zMa2~ZC-T>W4Gjk-mTv?FJ34MiBUn*!#lVUD&0s^rfr;f?LBWoW8`8If6%|(uoXFn^ zHZ&ZVSbj4o*wJxA`fjkI;);P2`L}`%4F@KcTTrm0AG|R#aRua3cRzu%Y3=#PZic!H$j_(hq_a6;}+L$bS=TXgDyj zr1(^-U`NLd>50LLiYo?ATG#r>%el953(Q!k1Qm~@pih&dP$-#z(0~59TqD=MxSIFWrYx1r&{#PYPDU`NLd>FL3WiYo?A&kPE7bli}h6|AVZ zV&Fu6cCex0z{K*LpkPPG4JijJDy|qfk)IoEXgDyjJTEBN(Q!k1ez2nAih&dP1;K`f z0~5;&gMu9$H>4K@D=Mz=&-7eQ#-;)(&;KQ8$d!3HTnE>eJ8B>uQ8uMEolQv)<~3{0et z2N?ww4IKj$=^A7dR5Wx9Or%c)83h#$9Rm~TlR-v7MMKBHMEX>aQBcv)F))!n9b^<# zG;|D1q*um=@)-pU9RulAK}JDC$3QAUMnOZzKzenMQP9vakX{pH6f|@Uq@NEm3K}{F z(r04DGYTpiItC`vuLc0xuN*XV3`|I?8}FKf zf{KO?>1pHrbC4oU>?Nb1LK4|{Cmjq-q)6*}$&l(b-ctt+9Rm|75}C%k>!6^bp<_V8 z(@Tovq?e3>iUz4mF9Q=P(uZC$q!f+!-a$jhz=SNJ@h&`&CG=9!&>>%FydMuzr0l$8 z6jVs)d6CfbGBA<;FvyV6Gv1>I4Z{JLNZ)lRP*Bm(F))#SE66CQXy_Q2NVg!PprWB; zU?Tl?kWo<4&@nKPekaH%sOa}iz=X7;ajy|bJ9?>T=opYn^pYY^=q00|qCpnX%fLj6 zgq@d+0=Yvk4IKj$a(c!+Nl;MH&@mvpXFRJ9G72ghGJeLrOHfeJ&>{C{+{FYb@_b%03Mym)jr*BkU?N4@&r60>pmAptG;|D1$hjH! zI6*;0L&t#3n3oiJDK8lX6%DdhUIr#oq?5d4$T}H!KtV&tz=VvGaW51UR5Wx9$TWFL z$#WqTR7gA-_ea6NM0#S7ArEETDFqE30~4}Q#ywL|P|?saASdM|{albyP$4sA+(!ii z6X{7ohWwOqM-?=53{0da2eMRN3Mv{p2IQ)|q^ATK1r-glR$c}s(o=&Bxhvz&D`@B# zn2^CT?!khBiiQrECF5=^NKXqg3MwRgjQg@+U?N4X$9U!y$p093Xo38XmyUr6c^%_k zEhwmH=#Vlo?%Dz=6E7JB6%8E&6X{t&Mu8lJ@qjGo7?_ZaF7D}qf{KO?N$2A3E|7HY zl2K40)m+@?1p^Z)a?8atv_QVOxZ?}to4a%jOh`W$_kMx&bC-&Sj)4i;=q?!r74pr+ z{a`RKks<@!B|}!YxHAkIItC`BZHs%vprE3mV?c7XOL}3DQBct!@mV~M3ntQwf((hq z;tn!s=opxg%`5IDgMx~NjsYpN;$dBoQBWaoR@`3(0~6^bL52)kaiQU8LoT8@3>$ph7C9 zxN8drCemwy47rmoawo<8ThK8uA%Rld#03Qv4IR=WU8F~fhlxQ(K}CbCMe$fMm`JY; zG76*viU*8A$H0W-G?xs?X)YBF9Rm|`)m$y2OLXpkrV{ zf|rW~FY!n+sA%XIkVhpRP6inT6|$mSI%Gw;Or+NZ8Iq)2DkMp{bPP<$baIjDBpzJ` z6%8G-fLtch8-k32iUx^0;&Em$k=__&$i;D~kc;EeF)$&E#zhv5c*Gf0G<3*yagpmH z9(D#91r;(*)@3IBytwBaX zg%lL=ZM9%vBE2ohkc=X}j}|m^3{0fA2N?ww4IKj$l1{`o$%29kStjCJW5K{gdS{R! z-^4|}iFlwIbPP;LAaRjEA|9;<6%8E&vPi^3)*z#xqM>78-uZ6S(z}BN(gern3_*(2 ztd|UlY2$N-Kw{eXoFN#Pki9iNX9x-^8af6h(&qyiSmSespx&DnnSU!-QPFW=;zYg$ z6&=zo#3N!c$hi>r3qk&EF?3Ai-wB#YI!cc3h3@FMAw4%(QE|nevw!G>zrjjzPfnn+&_G72ghItC`v*Mf|KiiVDXiS+d#qoAUpV_+hE zL({>#-H$X*NS$$!IwNlNg9EqE#+&@|o|vPep<`eoy*J1xcYHUmqM>78BAFwjSkN?l zRol^UMaKadBjSq*!Gzoq@c~58UKpcv3{2$jMTg81mjxLs3N})a$n|iM z>mk1A5Zo|v-m#MYCG1OjU&PWUEC>Y^4IKj$>61Z5K}AEyz(o2~uoylYzS@NPy@)k* z3{0fo4KfNU8af6h()WXmf{KQYfr<2cK}JDEL&v~G`u!lIprWB;U?R;RqoAUpV_+iv zL9n6Wz{K*0LBWoW8`2*ID=MxSIFbK2*wAobV)>JxU`NLd=}&_d6;}+L$bSY0r8%iP z1}4(`f`W#AZ+$v3Mv{p1}4%IgN%ZThK_-W^s_-mK}AEyz(o4FAfuq7p<`eoJt@d2 zsA%XIm`G0!G72ghItGdtShFWP24r%H!x(f7OvvAIk-sIr)f7~8FV2bavDkGtOq@s` z4;EysDA-W3qv48<0|PfqoJfASu^?kb!G?+*4Oes=7-)aslRKn83^E!Hq(2fvLr3~! zF*J0fKM_MiNBUDSG<2jt6GKBsI>pe?k^Wo^4ISw(#L&=@{!$DL9qF%v6%8HfuY-(+ zj`RaDG<2lD5ktd)l;RY~Xy`~!6hlM5*Y2Nz;y`mUT<>QDWc0bn=o8;~3%bAd1ODNL zxQ7ig3Mv}>8v=0;8%(6g0~`0SL4ho>aSt1G3`|HB8~3n5K}AEyz(jggkWo<4&@nKP zN{~@d(aF0xtf{KQYfr<1BK}JDEL&v~GdTo$V zP|?saFp+*S$SA02=opwtzZ7H?R5Wx9OeDXT$|$I4=opwzniEn!U8H=9??na+GFB99 zsE`5bA_G)>Ych}q>LLx)W%ZY-V8albNG-^}8@Dg z+%Rz>eI;0sv7%r@#g2w6It~onFmWP%HCT|bqF_VCj)p5b4h-BdaUy*!Sdg)zU_-@@ zhATP_4BRkrB7Hqrkg=j*L&c7UD>@Dg+%Rz>eIrDC2 z4x|rhB7Im52hvA^6%7Z{N5#;PKBk5P>EpqQhIG|L!-4b(F*F=VpAS`q+i#>f%I8T97w;Ri390#nmCX?uZaWc3&Dzp z1L=!mXgH7#O&myH(!_!EDT_ z8V;myiJ{>@`nD$0cY+lS2hwkfq2WOKt|kto-wIYV97s1YG#p63Erx~z>377?kiMsh zh6Cw$#n6zxuZf2AdzxrCkbYkiX$C7A4x~R2L&Jgehhk_rkp4&v4F}R6i=iR?i6$Bj zq(2oy!-4c?VrWRGCK?W;Ki5S13pJ#_3|2H8NPi`Uh6CxZ#n5md{Xh&22h!hYA|-DO zk)EiA^s{P6KNqZMIFOzshK2*_$(l${QA2vF8V;l-SkZ7GJxvn_($j+#4F}RQ#L$qQ zsfmX4EHxZR&(_3&^c+p3tcLX5K!VozjgvRRkfk*)rNI^XdvRN^V)`q2`0F=tyZ~tg`V7ElraQNHTkoWcISY*3ti2=K<1(B9>85A^U9ncsm$KKNr&#`=#D@&OP?w z=*W;{Ha@rvR#fchI52S{|9-HdVn@e;i4%DSD=Kz$9GJM>Hw!1yw}J&3D+)GL>}a^6 zBRwT<3RhHIF>oS3HQ3N_U}9NOB(Q!k1X0W2- zih&dPS;2;e0~5=$gMu9$H>BqTD=MxSXkH%&(({594F}Tm#gP9X_I*WjGIWglX>o7f zdz}$74#(S%;EMFSFeBgFJ<;5oQpPB?66Zy}?&@quuF?3AiKNmyC zM00K&NG}K)(g%W!f{KQYfr-?DjB>|WQqk_`3+8=0Y}*YJC(<=okg=lOuUBgI-b6?K zi(o~?j*bHpC(1`-U9Ol|eWctljB>-oiS&tJ!SM89BE3JzD5z-Y7?>z;3pP~jXt<)| zz`zaJf>so4sMyhPMaO~smqB?_T*9kbdb?3jP|+|GW-UDq;&VRupVlOp-B;lK(0g2B>;>RI!eU zCU(VYwyt)d+=u$>s8w`KDTb$m~BNx7At7xEgr6IsMyhPMaO}G8zxSqGgy$Z zqF_VCj)p5b4h-BdaU%VBupnba!G?+*4Oes=7`S2LMEZ+hLB@)L4HY{YuIM;0aKprj z^q0Ycj1>hNDt0tn(Q#nlhKUpDuYv^`D+)GL>}a^67~Jn z9qH)?K*NFb3^6nuNY50*Fxz<_N!-15=&~P9z(n~CF$_#B zp9=~qt{9jopARYqCdwDYaK*sH^2MN_;);QZ

HY2If8XB{2+4lrM|nih+spm7wB^ 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�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 literal 0 HcmV?d00001 diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@esbuild/darwin-arm64/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@esbuild/darwin-arm64/package.json new file mode 100644 index 000000000..dc469443c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@esbuild/darwin-arm64/package.json @@ -0,0 +1,20 @@ +{ + "name": "@esbuild/darwin-arm64", + "version": "0.27.4", + "description": "The macOS ARM 64-bit binary for esbuild, a JavaScript bundler.", + "repository": { + "type": "git", + "url": "git+https://github.com/evanw/esbuild.git" + }, + "license": "MIT", + "preferUnplugged": true, + "engines": { + "node": ">=18" + }, + "os": [ + "darwin" + ], + "cpu": [ + "arm64" + ] +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@opentelemetry/api/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@opentelemetry/api/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@opentelemetry/api/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@opentelemetry/api/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@opentelemetry/api/README.md new file mode 100644 index 000000000..59d4cd7a0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@opentelemetry/api/README.md @@ -0,0 +1,116 @@ +# OpenTelemetry API for JavaScript + +

+ +API Reference +  •   +Documentation +
+ + NPM Release + +
+

+ +This package provides everything needed to interact with the OpenTelemetry API, including all TypeScript interfaces, enums, and no-op implementations. It is intended for use both on the server and in the browser. + +The methods in this package perform no operations by default. This means they can be safely called by a library or end-user application whether there is an SDK registered or not. In order to generate and export telemetry data, you will also need an SDK such as the [OpenTelemetry JS SDK][opentelemetry-js]. + +## Tracing Quick Start + +### You Will Need + +- An application you wish to instrument +- [OpenTelemetry JS SDK][opentelemetry-js] +- Node.js >=8.5.0 (14+ is preferred) or an ECMAScript 5+ compatible browser + +**Note:** ECMAScript 5+ compatibility is for this package only. Please refer to the documentation for the SDK you are using to determine its minimum ECMAScript version. + +**Note for library authors:** Only your end users will need an OpenTelemetry SDK. If you wish to support OpenTelemetry in your library, you only need to use the OpenTelemetry API. For more information, please read the [tracing documentation][docs-tracing]. + +### Install Dependencies + +```sh +npm install @opentelemetry/api @opentelemetry/sdk-trace-base +``` + +### Trace Your Application + +In order to get started with tracing, you will need to first register an SDK. The SDK you are using may provide a convenience method which calls the registration methods for you, but if you would like to call them directly they are documented here: [SDK registration methods][docs-sdk-registration]. + +Once you have registered an SDK, you can start and end spans. A simple example of basic SDK registration and tracing a simple operation is below. The example should export spans to the console once per second. For more information, see the [tracing documentation][docs-tracing]. + +```javascript +const { trace } = require("@opentelemetry/api"); +const { BasicTracerProvider, ConsoleSpanExporter, SimpleSpanProcessor } = require("@opentelemetry/sdk-trace-base"); + +// Create and register an SDK +const provider = new BasicTracerProvider(); +provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter())); +trace.setGlobalTracerProvider(provider); + +// Acquire a tracer from the global tracer provider which will be used to trace the application +const name = 'my-application-name'; +const version = '0.1.0'; +const tracer = trace.getTracer(name, version); + +// Trace your application by creating spans +async function operation() { + const span = tracer.startSpan("do operation"); + + // mock some work by sleeping 1 second + await new Promise((resolve, reject) => { + setTimeout(resolve, 1000); + }) + + span.end(); +} + +async function main() { + while (true) { + await operation(); + } +} + +main(); +``` + +## Version Compatibility + +Because the npm installer and node module resolution algorithm could potentially allow two or more copies of any given package to exist within the same `node_modules` structure, the OpenTelemetry API takes advantage of a variable on the `global` object to store the global API. When an API method in the API package is called, it checks if this `global` API exists and proxies calls to it if and only if it is a compatible API version. This means if a package has a dependency on an OpenTelemetry API version which is not compatible with the API used by the end user, the package will receive a no-op implementation of the API. + +## Upgrade Guidelines + +### 0.21.0 to 1.0.0 + +No breaking changes + +### 0.20.0 to 0.21.0 + +- [#78](https://github.com/open-telemetry/opentelemetry-js-api/issues/78) `api.context.bind` arguments reversed and `context` is now a required argument. +- [#46](https://github.com/open-telemetry/opentelemetry-js-api/issues/46) Noop classes and singletons are no longer exported. To create a noop span it is recommended to use `api.trace.wrapSpanContext` with `INVALID_SPAN_CONTEXT` instead of using the `NOOP_TRACER`. + +### 1.0.0-rc.3 to 0.20.0 + +- Removing `TimedEvent` which was not part of spec +- `HttpBaggage` renamed to `HttpBaggagePropagator` +- [#45](https://github.com/open-telemetry/opentelemetry-js-api/pull/45) `Span#context` renamed to `Span#spanContext` +- [#47](https://github.com/open-telemetry/opentelemetry-js-api/pull/47) `getSpan`/`setSpan`/`getSpanContext`/`setSpanContext` moved to `trace` namespace +- [#55](https://github.com/open-telemetry/opentelemetry-js-api/pull/55) `getBaggage`/`setBaggage`/`createBaggage` moved to `propagation` namespace + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[opentelemetry-js]: https://github.com/open-telemetry/opentelemetry-js + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/api/LICENSE +[docs-tracing]: https://github.com/open-telemetry/opentelemetry-js/blob/main/doc/tracing.md +[docs-sdk-registration]: https://github.com/open-telemetry/opentelemetry-js/blob/main/doc/sdk-registration.md diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@opentelemetry/api/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@opentelemetry/api/package.json new file mode 100644 index 000000000..f7ba45f96 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@opentelemetry/api/package.json @@ -0,0 +1,113 @@ +{ + "name": "@opentelemetry/api", + "version": "1.9.0", + "description": "Public API for OpenTelemetry", + "main": "build/src/index.js", + "module": "build/esm/index.js", + "esnext": "build/esnext/index.js", + "types": "build/src/index.d.ts", + "browser": { + "./src/platform/index.ts": "./src/platform/browser/index.ts", + "./build/esm/platform/index.js": "./build/esm/platform/browser/index.js", + "./build/esnext/platform/index.js": "./build/esnext/platform/browser/index.js", + "./build/src/platform/index.js": "./build/src/platform/browser/index.js" + }, + "exports": { + ".": { + "module": "./build/esm/index.js", + "esnext": "./build/esnext/index.js", + "types": "./build/src/index.d.ts", + "default": "./build/src/index.js" + }, + "./experimental": { + "module": "./build/esm/experimental/index.js", + "esnext": "./build/esnext/experimental/index.js", + "types": "./build/src/experimental/index.d.ts", + "default": "./build/src/experimental/index.js" + } + }, + "repository": "open-telemetry/opentelemetry-js", + "scripts": { + "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "codecov:browser": "nyc report --reporter=json && codecov -f coverage/*.json -p ../", + "codecov:webworker": "nyc report --reporter=json && codecov -f coverage/*.json -p ../", + "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "docs": "typedoc", + "docs:deploy": "gh-pages --dist docs/out", + "docs:test": "linkinator docs/out --silent && linkinator docs/*.md *.md --markdown --silent", + "lint:fix": "eslint . --ext .ts --fix", + "lint": "eslint . --ext .ts", + "test:browser": "karma start --single-run", + "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", + "test:eol": "ts-mocha -p tsconfig.json 'test/**/*.test.ts'", + "test:webworker": "karma start karma.worker.js --single-run", + "cycle-check": "dpdm --exit-code circular:1 src/index.ts", + "version": "node ../scripts/version-update.js", + "prewatch": "npm run precompile", + "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "peer-api-check": "node ../scripts/peer-api-check.js" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "browser", + "tracing", + "profiling", + "stats", + "monitoring" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + }, + "files": [ + "build/esm/**/*.js", + "build/esm/**/*.js.map", + "build/esm/**/*.d.ts", + "build/esnext/**/*.js", + "build/esnext/**/*.js.map", + "build/esnext/**/*.d.ts", + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "@types/mocha": "10.0.6", + "@types/node": "18.6.5", + "@types/sinon": "17.0.3", + "@types/webpack": "5.28.5", + "@types/webpack-env": "1.16.3", + "babel-plugin-istanbul": "6.1.1", + "codecov": "3.8.3", + "cross-var": "1.1.0", + "dpdm": "3.13.1", + "karma": "6.4.3", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.1", + "karma-mocha": "2.0.1", + "karma-mocha-webworker": "1.3.0", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "5.0.1", + "lerna": "6.6.2", + "memfs": "3.5.3", + "mocha": "10.2.0", + "nyc": "15.1.0", + "sinon": "15.1.2", + "ts-loader": "9.5.1", + "ts-mocha": "10.0.0", + "typescript": "4.4.4", + "unionfs": "4.5.4", + "webpack": "5.89.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/api", + "sideEffects": false, + "gitHead": "c4d3351b6b3f5593c8d7cbfec97b45cea9fe1511" +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@standard-schema/spec/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@standard-schema/spec/LICENSE new file mode 100644 index 000000000..ea54e0dda --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@standard-schema/spec/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Colin McDonnell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@standard-schema/spec/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@standard-schema/spec/README.md new file mode 100644 index 000000000..f9813ffa8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@standard-schema/spec/README.md @@ -0,0 +1,198 @@ +

+ Standard Schema fire logo +
+ Standard Schema

+

+ A family of specs for interoperable TypeScript +
+ standardschema.dev +

+
+ + + +The Standard Schema project is a set of interfaces that standardize the provision and consumption of shared functionality in the TypeScript ecosystem. + +Its goal is to allow tools to accept a single input that includes all the types and capabilities they need— no library-specific adapters, no extra dependencies. The result is an ecosystem that's fair for implementers, friendly for consumers, and open for end users. + +## The specifications + +The specifications can be found below in their entirety. Libraries wishing to implement a spec can copy/paste the code block below into their codebase. They're also available at `@standard-schema/spec` on [npm](https://www.npmjs.com/package/@standard-schema/spec) and [JSR](https://jsr.io/@standard-schema/spec). + +```ts +// ######################### +// ### Standard Typed ### +// ######################### + +/** The Standard Typed interface. This is a base type extended by other specs. */ +export interface StandardTypedV1 { + /** The Standard properties. */ + readonly "~standard": StandardTypedV1.Props; +} + +export declare namespace StandardTypedV1 { + /** The Standard Typed properties interface. */ + export interface Props { + /** The version number of the standard. */ + readonly version: 1; + /** The vendor name of the schema library. */ + readonly vendor: string; + /** Inferred types associated with the schema. */ + readonly types?: Types | undefined; + } + + /** The Standard Typed types interface. */ + export interface Types { + /** The input type of the schema. */ + readonly input: Input; + /** The output type of the schema. */ + readonly output: Output; + } + + /** Infers the input type of a Standard Typed. */ + export type InferInput = NonNullable< + Schema["~standard"]["types"] + >["input"]; + + /** Infers the output type of a Standard Typed. */ + export type InferOutput = NonNullable< + Schema["~standard"]["types"] + >["output"]; +} + +// ########################## +// ### Standard Schema ### +// ########################## + +/** The Standard Schema interface. */ +export interface StandardSchemaV1 { + /** The Standard Schema properties. */ + readonly "~standard": StandardSchemaV1.Props; +} + +export declare namespace StandardSchemaV1 { + /** The Standard Schema properties interface. */ + export interface Props + extends StandardTypedV1.Props { + /** Validates unknown input values. */ + readonly validate: ( + value: unknown, + options?: StandardSchemaV1.Options | undefined + ) => Result | Promise>; + } + + /** The result interface of the validate function. */ + export type Result = SuccessResult | FailureResult; + + /** The result interface if validation succeeds. */ + export interface SuccessResult { + /** The typed output value. */ + readonly value: Output; + /** A falsy value for `issues` indicates success. */ + readonly issues?: undefined; + } + + export interface Options { + /** Explicit support for additional vendor-specific parameters, if needed. */ + readonly libraryOptions?: Record | undefined; + } + + /** The result interface if validation fails. */ + export interface FailureResult { + /** The issues of failed validation. */ + readonly issues: ReadonlyArray; + } + + /** The issue interface of the failure output. */ + export interface Issue { + /** The error message of the issue. */ + readonly message: string; + /** The path of the issue, if any. */ + readonly path?: ReadonlyArray | undefined; + } + + /** The path segment interface of the issue. */ + export interface PathSegment { + /** The key representing a path segment. */ + readonly key: PropertyKey; + } + + /** The Standard types interface. */ + export interface Types + extends StandardTypedV1.Types {} + + /** Infers the input type of a Standard. */ + export type InferInput = + StandardTypedV1.InferInput; + + /** Infers the output type of a Standard. */ + export type InferOutput = + StandardTypedV1.InferOutput; +} + +// ############################### +// ### Standard JSON Schema ### +// ############################### + +/** The Standard JSON Schema interface. */ +export interface StandardJSONSchemaV1 { + /** The Standard JSON Schema properties. */ + readonly "~standard": StandardJSONSchemaV1.Props; +} + +export declare namespace StandardJSONSchemaV1 { + /** The Standard JSON Schema properties interface. */ + export interface Props + extends StandardTypedV1.Props { + /** Methods for generating the input/output JSON Schema. */ + readonly jsonSchema: StandardJSONSchemaV1.Converter; + } + + /** The Standard JSON Schema converter interface. */ + export interface Converter { + /** Converts the input type to JSON Schema. May throw if conversion is not supported. */ + readonly input: ( + options: StandardJSONSchemaV1.Options + ) => Record; + /** Converts the output type to JSON Schema. May throw if conversion is not supported. */ + readonly output: ( + options: StandardJSONSchemaV1.Options + ) => Record; + } + + /** + * The target version of the generated JSON Schema. + * + * It is *strongly recommended* that implementers support `"draft-2020-12"` and `"draft-07"`, as they are both in wide use. All other targets can be implemented on a best-effort basis. Libraries should throw if they don't support a specified target. + * + * The `"openapi-3.0"` target is intended as a standardized specifier for OpenAPI 3.0 which is a superset of JSON Schema `"draft-04"`. + */ + export type Target = + | "draft-2020-12" + | "draft-07" + | "openapi-3.0" + // Accepts any string for future targets while preserving autocomplete + | ({} & string); + + /** The options for the input/output methods. */ + export interface Options { + /** Specifies the target version of the generated JSON Schema. Support for all versions is on a best-effort basis. If a given version is not supported, the library should throw. */ + readonly target: Target; + + /** Explicit support for additional vendor-specific parameters, if needed. */ + readonly libraryOptions?: Record | undefined; + } + + /** The Standard types interface. */ + export interface Types + extends StandardTypedV1.Types {} + + /** Infers the input type of a Standard. */ + export type InferInput = + StandardTypedV1.InferInput; + + /** Infers the output type of a Standard. */ + export type InferOutput = + StandardTypedV1.InferOutput; +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@standard-schema/spec/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@standard-schema/spec/package.json new file mode 100644 index 000000000..62bb55187 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@standard-schema/spec/package.json @@ -0,0 +1,52 @@ +{ + "name": "@standard-schema/spec", + "description": "A family of specs for interoperable TypeScript", + "version": "1.1.0", + "license": "MIT", + "author": "Colin McDonnell", + "homepage": "https://standardschema.dev", + "repository": { + "type": "git", + "url": "https://github.com/standard-schema/standard-schema" + }, + "keywords": [ + "typescript", + "schema", + "validation", + "standard", + "interface" + ], + "type": "module", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "standard-schema-spec": "./src/index.ts", + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + } + }, + "sideEffects": false, + "files": [ + "dist" + ], + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "tsup": "^8.3.0", + "typescript": "^5.6.2" + }, + "scripts": { + "lint": "pnpm biome lint ./src", + "format": "pnpm biome format --write ./src", + "check": "pnpm biome check ./src", + "build": "tsup" + } +} \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/CHANGELOG.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/CHANGELOG.md new file mode 100644 index 000000000..c811d675d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/CHANGELOG.md @@ -0,0 +1,83 @@ +# @vercel/oidc + +## 3.1.0 + +### Minor Changes + +- Allow vercel/oidc to refresh the vercel CLI auth token when running locally ([#14543](https://github.com/vercel/vercel/pull/14543)) + +### Patch Changes + +- improve error messages for package consumers ([#14449](https://github.com/vercel/vercel/pull/14449)) + +## 3.0.5 + +### Patch Changes + +- Fix OIDC token expiry check ([#14306](https://github.com/vercel/vercel/pull/14306)) + +## 3.0.4 + +### Patch Changes + +- Fix directory permissions so that files can be created under the OIDC data directory in linux ([#14214](https://github.com/vercel/vercel/pull/14214)) + +## 3.0.3 + +### Patch Changes + +- fix(oidc): add `"workflow"` as export condition ([#14103](https://github.com/vercel/vercel/pull/14103)) + +## 3.0.2 + +### Patch Changes + +- fix(oidc): add `"react-native"` as export condition ([#14066](https://github.com/vercel/vercel/pull/14066)) + +## 3.0.1 + +### Patch Changes + +- feat(oidc): export `getContext()` method ([#14027](https://github.com/vercel/vercel/pull/14027)) + +- feat(oidc): add conditional export for browsers ([#14027](https://github.com/vercel/vercel/pull/14027)) + + Introduces a browser export with mock methods that don't require access to a file system or environment variables. This makes `@vercel/oidc` usable for universal libraries that are run in both frontend and backend. + +- fix(oidc): remove `ms` dependency ([#14027](https://github.com/vercel/vercel/pull/14027)) + +## 3.0.0 + +### Major Changes + +- Drop Node.js 18, bump minimum to Node.js 20 ([#13856](https://github.com/vercel/vercel/pull/13856)) + +## 2.0.2 + +### Patch Changes + +- fix "Cannot find module" error caused by dynamically importing files without their extensions ([#13815](https://github.com/vercel/vercel/pull/13815)) + +## 2.0.1 + +### Patch Changes + +- Fix package versions for oidc-aws-credentials-provider, vercel/functions, and publish the next version of vercel/oidc ([#13765](https://github.com/vercel/vercel/pull/13765)) + +## 2.1.0 + +### Minor Changes + +- Add refresh token ability to @vercel/oidc ([#13608](https://github.com/vercel/vercel/pull/13608)) + +## 2.0.0 + +### Major Changes + +- extract oidc and aws oidc credential helpers from @vercel/functions into @vercel/oidc and @vercel/oidc-aws-credentials-provider. @vercel/functions re-exports the new functions as deprecated to maintain backwards compatibility. ([#13548](https://github.com/vercel/vercel/pull/13548)) + +## 1.0.0 + +### Major Changes + +- Initial release ([#13548](https://github.com/vercel/vercel/pull/13548)) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/LICENSE new file mode 100644 index 000000000..5454d6d51 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2017 Vercel, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/README.md new file mode 100644 index 000000000..2e268553b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/README.md @@ -0,0 +1,3 @@ +# `@vercel/oidc` + +Runtime OIDC helper methods intended to be used with your Vercel Functions diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/docs/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/docs/README.md new file mode 100644 index 000000000..abdfce1f4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/docs/README.md @@ -0,0 +1,104 @@ +# @vercel/oidc + +## Table of contents + +### Functions + +- [getContext](README.md#getcontext) +- [getVercelOidcToken](README.md#getverceloidctoken) +- [getVercelOidcTokenSync](README.md#getverceloidctokensync) + +## Functions + +### getContext + +▸ **getContext**(): `Context` + +#### Returns + +`Context` + +#### Defined in + +[get-context.ts:7](https://github.com/vercel/vercel/blob/main/packages/oidc/src/get-context.ts#L7) + +--- + +### getVercelOidcToken + +▸ **getVercelOidcToken**(): [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)<`string`\> + +Gets the current OIDC token from the request context or the environment variable. + +Do not cache this value, as it is subject to change in production! + +This function is used to retrieve the OIDC token from the request context or the environment variable. +It checks for the `x-vercel-oidc-token` header in the request context and falls back to the `VERCEL_OIDC_TOKEN` environment variable if the header is not present. + +Unlike the `getVercelOidcTokenSync` function, this function will refresh the token if it is expired in a development environment. + +**`Throws`** + +If the `x-vercel-oidc-token` header is missing from the request context and the environment variable `VERCEL_OIDC_TOKEN` is not set. If the token +is expired in a development environment, will also throw an error if the token cannot be refreshed: no CLI credentials are available, CLI credentials are expired, no project configuration is available +or the token refresh request fails. + +**`Example`** + +```js +// Using the OIDC token +getVercelOidcToken() + .then(token => { + console.log('OIDC Token:', token); + }) + .catch(error => { + console.error('Error:', error.message); + }); +``` + +#### Returns + +[`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)<`string`\> + +A promise that resolves to the OIDC token. + +#### Defined in + +[get-vercel-oidc-token.ts:30](https://github.com/vercel/vercel/blob/main/packages/oidc/src/get-vercel-oidc-token.ts#L30) + +--- + +### getVercelOidcTokenSync + +▸ **getVercelOidcTokenSync**(): `string` + +Gets the current OIDC token from the request context or the environment variable. + +Do not cache this value, as it is subject to change in production! + +This function is used to retrieve the OIDC token from the request context or the environment variable. +It checks for the `x-vercel-oidc-token` header in the request context and falls back to the `VERCEL_OIDC_TOKEN` environment variable if the header is not present. + +This function will not refresh the token if it is expired. For refreshing the token, use the @{link getVercelOidcToken} function. + +**`Throws`** + +If the `x-vercel-oidc-token` header is missing from the request context and the environment variable `VERCEL_OIDC_TOKEN` is not set. + +**`Example`** + +```js +// Using the OIDC token +const token = getVercelOidcTokenSync(); +console.log('OIDC Token:', token); +``` + +#### Returns + +`string` + +The OIDC token. + +#### Defined in + +[get-vercel-oidc-token.ts:85](https://github.com/vercel/vercel/blob/main/packages/oidc/src/get-vercel-oidc-token.ts#L85) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/package.json new file mode 100644 index 000000000..0987ee2cc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/@vercel/oidc/package.json @@ -0,0 +1,52 @@ +{ + "name": "@vercel/oidc", + "description": "Runtime OIDC helpers intended for use with Vercel Functions", + "homepage": "https://vercel.com", + "files": [ + "**/*.js", + "**/*.d.ts", + "**/*.md" + ], + "types": "./dist/index.d.ts", + "exports": { + ".": { + "browser": "./dist/index-browser.js", + "react-native": "./dist/index-browser.js", + "workflow": "./dist/index-browser.js", + "import": "./dist/index.js", + "require": "./dist/index.js" + } + }, + "version": "3.1.0", + "repository": { + "directory": "packages/oidc", + "type": "git", + "url": "git+https://github.com/vercel/vercel.git" + }, + "bugs": { + "url": "https://github.com/vercel/vercel/issues" + }, + "devDependencies": { + "tinyspawn": "1.3.1", + "typedoc": "0.24.6", + "typedoc-plugin-markdown": "4.1.2", + "typedoc-plugin-mdn-links": "3.2.3", + "typescript": "4.9.5", + "vitest": "2.0.1" + }, + "peerDependenciesMeta": {}, + "engines": { + "node": ">= 20" + }, + "license": "Apache-2.0", + "publishConfig": { + "access": "public" + }, + "scripts": { + "pretest": "pnpm run build:code", + "test": "vitest", + "build": "pnpm run build:code && pnpm run build:docs", + "build:code": "node ../../utils/build.mjs", + "build:docs": "typedoc && prettier --write docs/**/*.md docs/*.md" + } +} \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/CHANGELOG.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/CHANGELOG.md new file mode 100644 index 000000000..020243747 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/CHANGELOG.md @@ -0,0 +1,7508 @@ +# ai + +## 6.0.138 + +### Patch Changes + +- Updated dependencies [0db5cd8] + - @ai-sdk/gateway@3.0.80 + +## 6.0.137 + +### Patch Changes + +- Updated dependencies [3caa544] + - @ai-sdk/gateway@3.0.79 + +## 6.0.136 + +### Patch Changes + +- Updated dependencies [763e178] + - @ai-sdk/gateway@3.0.78 + +## 6.0.135 + +### Patch Changes + +- df6a330: chore(ai): remove all experimental agent events + +## 6.0.134 + +### Patch Changes + +- ed6876b: chore(ai): remove all experimental embed events + +## 6.0.133 + +### Patch Changes + +- 055cd68: fix: publish v6 to latest npm dist tag +- Updated dependencies [d99eb91] +- Updated dependencies [055cd68] + - @ai-sdk/gateway@3.0.77 + - @ai-sdk/provider-utils@4.0.21 + +## 6.0.132 + +### Patch Changes + +- 28fd5a5: README updates + +## 6.0.131 + +### Patch Changes + +- 14f25f9: feat(ai): introduce experimental callbacks for embed function + +## 6.0.130 + +### Patch Changes + +- Updated dependencies [25af909] + - @ai-sdk/gateway@3.0.76 + +## 6.0.129 + +### Patch Changes + +- Updated dependencies [f95e0c0] + - @ai-sdk/gateway@3.0.75 + +## 6.0.128 + +### Patch Changes + +- Updated dependencies [7324b56] + - @ai-sdk/gateway@3.0.74 + +## 6.0.127 + +### Patch Changes + +- Updated dependencies [ac0c407] +- Updated dependencies [e748159] + - @ai-sdk/gateway@3.0.73 + +## 6.0.126 + +### Patch Changes + +- 578615a: Remove custom User-Agent header from HttpChatTransport to fix CORS preflight failures in Safari and Firefox + +## 6.0.125 + +### Patch Changes + +- Updated dependencies [5ffb1ad] +- Updated dependencies [f5bf0c6] + - @ai-sdk/gateway@3.0.72 + +## 6.0.124 + +### Patch Changes + +- Updated dependencies [55ccbe2] + - @ai-sdk/gateway@3.0.71 + +## 6.0.123 + +### Patch Changes + +- ffe0f90: fix(anthropic): preserve the error code returned by model + +## 6.0.122 + +### Patch Changes + +- Updated dependencies [ca0b430] + - @ai-sdk/gateway@3.0.70 + +## 6.0.121 + +### Patch Changes + +- Updated dependencies [efdaefc] + - @ai-sdk/gateway@3.0.69 + +## 6.0.120 + +### Patch Changes + +- 78c0e26: feat(ai): pass result provider metadata across the stream + +## 6.0.119 + +### Patch Changes + +- ab286f1: fix(ai): doStream should reflect transformed values +- d68b122: feat(ai): add missing usage attributes + +## 6.0.118 + +### Patch Changes + +- 64ac0fd: fix(security): validate redirect targets in download functions to prevent SSRF bypass + + Both `downloadBlob` and `download` now validate the final URL after following HTTP redirects, preventing attackers from bypassing SSRF protections via open redirects to internal/private addresses. + +- Updated dependencies [64ac0fd] + - @ai-sdk/provider-utils@4.0.20 + - @ai-sdk/gateway@3.0.68 + +## 6.0.117 + +### Patch Changes + +- d23121f: chore(ai): add optional ChatRequestOptions to `addToolApprovalResponse` and `addToolOutput` +- Updated dependencies [2589004] + - @ai-sdk/gateway@3.0.67 + +## 6.0.116 + +### Patch Changes + +- ad4cfc2: Add URL validation to `downloadBlob` and `download` to prevent blind SSRF attacks. Private/internal IP addresses, localhost, and non-HTTP protocols are now rejected before fetching. +- Updated dependencies [ad4cfc2] + - @ai-sdk/provider-utils@4.0.19 + - @ai-sdk/gateway@3.0.66 + +## 6.0.115 + +### Patch Changes + +- Updated dependencies [824b295] + - @ai-sdk/provider-utils@4.0.18 + - @ai-sdk/gateway@3.0.65 + +## 6.0.114 + +### Patch Changes + +- 2291047: fix(ai): fix missing support for image thought signatures (e.g. for Gemini image models) + +## 6.0.113 + +### Patch Changes + +- 70d3980: fix(ai): use errorMode 'text' in approval continuation to preserve tool error messages + +## 6.0.112 + +### Patch Changes + +- Updated dependencies [db3d4ca] + - @ai-sdk/gateway@3.0.64 + +## 6.0.111 + +### Patch Changes + +- 2129c82: feat(ai): register global telemetry integrations + +## 6.0.110 + +### Patch Changes + +- Updated dependencies [1b01ec1] +- Updated dependencies [8df8e11] + - @ai-sdk/gateway@3.0.63 + +## 6.0.109 + +### Patch Changes + +- Updated dependencies [10bec50] + - @ai-sdk/gateway@3.0.62 + +## 6.0.108 + +### Patch Changes + +- 2a4f512: feat(ai): add telemetry interface and registry + +## 6.0.107 + +### Patch Changes + +- Updated dependencies [08336f1] + - @ai-sdk/provider-utils@4.0.17 + - @ai-sdk/gateway@3.0.61 + +## 6.0.106 + +### Patch Changes + +- Updated dependencies [29e9f4d] + - @ai-sdk/gateway@3.0.60 + +## 6.0.105 + +### Patch Changes + +- Updated dependencies [58bc42d] + - @ai-sdk/provider-utils@4.0.16 + - @ai-sdk/gateway@3.0.59 + +## 6.0.104 + +### Patch Changes + +- Updated dependencies [1330f2f] + - @ai-sdk/gateway@3.0.58 + +## 6.0.103 + +### Patch Changes + +- Updated dependencies [ba63bc2] + - @ai-sdk/gateway@3.0.57 + +## 6.0.102 + +### Patch Changes + +- Updated dependencies [45f0a7f] + - @ai-sdk/gateway@3.0.56 + +## 6.0.101 + +### Patch Changes + +- 5230482: fix(ai): Don't create duplicate tool parts when models call non-existent tools + +## 6.0.100 + +### Patch Changes + +- b7fba77: feat(ai): add event notifiers to core functions + +## 6.0.99 + +### Patch Changes + +- Updated dependencies [e8172b6] + - @ai-sdk/gateway@3.0.55 + +## 6.0.98 + +### Patch Changes + +- Updated dependencies [0c9395b] + - @ai-sdk/gateway@3.0.54 + +## 6.0.97 + +### Patch Changes + +- ebfdad1: feat(ai): experimental callbacks in ToolLoopAgent + +## 6.0.96 + +### Patch Changes + +- 30c9de6: feat(ai): experimental callbacks for streamText + +## 6.0.95 + +### Patch Changes + +- Updated dependencies [73b7e09] + - @ai-sdk/gateway@3.0.53 + +## 6.0.94 + +### Patch Changes + +- Updated dependencies [363fa44] + - @ai-sdk/gateway@3.0.52 + +## 6.0.93 + +### Patch Changes + +- d3769ec: feat(ai): add experimental callbacks in generateText + +## 6.0.92 + +### Patch Changes + +- Updated dependencies [765b013] + - @ai-sdk/gateway@3.0.51 + +## 6.0.91 + +### Patch Changes + +- Updated dependencies [a433cd3] + - @ai-sdk/gateway@3.0.50 + +## 6.0.90 + +### Patch Changes + +- 98e83ab: Fix `useChat` status briefly flashing to `submitted` on page load when `resume: true` is set and there is no active stream to resume. The `reconnectToStream` check is now performed before setting status to `submitted`, so status stays `ready` when the server responds with 204 (no active stream). + +## 6.0.89 + +### Patch Changes + +- Updated dependencies [5f693c8] + - @ai-sdk/gateway@3.0.49 + +## 6.0.88 + +### Patch Changes + +- Updated dependencies [2a1c664] + - @ai-sdk/gateway@3.0.48 + +## 6.0.87 + +### Patch Changes + +- Updated dependencies [6bbd05b] + - @ai-sdk/gateway@3.0.47 + +## 6.0.86 + +### Patch Changes + +- Updated dependencies [f75f18c] + - @ai-sdk/gateway@3.0.46 + +## 6.0.85 + +### Patch Changes + +- Updated dependencies [e858654] + - @ai-sdk/gateway@3.0.45 + +## 6.0.84 + +### Patch Changes + +- 4024a3a: security: prevent unbounded memory growth in download functions + + The `download()` and `downloadBlob()` functions now enforce a default 2 GiB size limit when downloading from user-provided URLs. Downloads that exceed this limit are aborted with a `DownloadError` instead of consuming unbounded memory and crashing the process. The `abortSignal` parameter is now passed through to `fetch()` in all download call sites. + + Added `download` option to `transcribe()` and `experimental_generateVideo()` for providing a custom download function. Use the new `createDownload({ maxBytes })` factory to configure download size limits. + +- Updated dependencies [4024a3a] + - @ai-sdk/provider-utils@4.0.15 + - @ai-sdk/gateway@3.0.44 + +## 6.0.83 + +### Patch Changes + +- Updated dependencies [b424e50] + - @ai-sdk/gateway@3.0.43 + +## 6.0.82 + +### Patch Changes + +- Updated dependencies [1819bc1] + - @ai-sdk/gateway@3.0.42 + +## 6.0.81 + +### Patch Changes + +- ee4beee: feat(ai): add onStepFinish callback to createUIMessageStream + +## 6.0.80 + +### Patch Changes + +- Updated dependencies [99fbed8] + - @ai-sdk/gateway@3.0.41 + +## 6.0.79 + +### Patch Changes + +- Updated dependencies [a2208a2] + - @ai-sdk/gateway@3.0.40 + +## 6.0.78 + +### Patch Changes + +- 59fcf30: fix(ai): make experimental_context required in ToolLoopAgentOnFinishCallback + + This fixes a type inconsistency where `ToolLoopAgentOnFinishCallback` had `experimental_context` as optional while `StreamTextOnFinishCallback` and `GenerateTextOnFinishCallback` had it as required. Since `ToolLoopAgent` delegates to `streamText`/`generateText`, and both always pass `experimental_context` when invoking the callback, the types should match. + +## 6.0.77 + +### Patch Changes + +- Updated dependencies [eea5d30] + - @ai-sdk/gateway@3.0.39 + +## 6.0.76 + +### Patch Changes + +- Updated dependencies [70028ab] + - @ai-sdk/gateway@3.0.38 + +## 6.0.75 + +### Patch Changes + +- 7168375: feat (ai, provider): default global provider video model resolution +- Updated dependencies [7168375] + - @ai-sdk/provider@3.0.8 + - @ai-sdk/gateway@3.0.37 + - @ai-sdk/provider-utils@4.0.14 + +## 6.0.74 + +### Patch Changes + +- 471009b: fix(ai): pass reasoning text in telemetry + +## 6.0.73 + +### Patch Changes + +- Updated dependencies [9892c58] + - @ai-sdk/gateway@3.0.36 + +## 6.0.72 + +### Patch Changes + +- Updated dependencies [8e2eaac] + - @ai-sdk/gateway@3.0.35 + +## 6.0.71 + +### Patch Changes + +- Updated dependencies [4867635] + - @ai-sdk/gateway@3.0.34 + +## 6.0.70 + +### Patch Changes + +- Updated dependencies [ae30443] + - @ai-sdk/gateway@3.0.33 + +## 6.0.69 + +### Patch Changes + +- d659305: fix(ai): auto-populate `originalMessages` in `createAgentUIStream` + +## 6.0.68 + +### Patch Changes + +- 8bf2660: chore(ai): export `DefaultGeneratedFile` + +## 6.0.67 + +### Patch Changes + +- 53f6731: feat (ai, provider): experimental generate video support +- Updated dependencies [53f6731] + - @ai-sdk/provider@3.0.7 + - @ai-sdk/gateway@3.0.32 + - @ai-sdk/provider-utils@4.0.13 + +## 6.0.66 + +### Patch Changes + +- Updated dependencies [96936e5] + - @ai-sdk/provider-utils@4.0.12 + - @ai-sdk/gateway@3.0.31 + +## 6.0.65 + +### Patch Changes + +- Updated dependencies [1a74972] + - @ai-sdk/gateway@3.0.30 + +## 6.0.64 + +### Patch Changes + +- ce9daa3: Fixed 'reasoning part reasoning-0 not found' error by ensuring 'reasoning-start' event is emitted for empty thinking blocks (eg. ) + +## 6.0.63 + +### Patch Changes + +- be95579: fix(ui): respect `Promise` when returned by `sendAutomaticallyWhen` + +## 6.0.62 + +### Patch Changes + +- 2810850: fix(ai): improve type validation error messages with field paths and entity identifiers +- Updated dependencies [2810850] + - @ai-sdk/provider-utils@4.0.11 + - @ai-sdk/provider@3.0.6 + - @ai-sdk/gateway@3.0.29 + +## 6.0.61 + +### Patch Changes + +- Updated dependencies [1524271] + - @ai-sdk/gateway@3.0.28 + +## 6.0.60 + +### Patch Changes + +- 5fc42fa: feat(ai): add experimental retention setting + +## 6.0.59 + +### Patch Changes + +- Updated dependencies [0acff64] + - @ai-sdk/gateway@3.0.27 + +## 6.0.58 + +### Patch Changes + +- Updated dependencies [a8be296] + - @ai-sdk/gateway@3.0.26 + +## 6.0.57 + +### Patch Changes + +- 65865d8: Fix handling of error results in deferrable tools + +## 6.0.56 + +### Patch Changes + +- Updated dependencies [15a78c7] + - @ai-sdk/gateway@3.0.25 + +## 6.0.55 + +### Patch Changes + +- 43a74df: chore(ai): add skill to README + +## 6.0.54 + +### Patch Changes + +- 2f8ac87: docs(ai): fix incorrect and outdated jsdoc + +## 6.0.53 + +### Patch Changes + +- 7ee3f10: chore: updated docs + +## 6.0.52 + +### Patch Changes + +- Updated dependencies [462ad00] + - @ai-sdk/provider-utils@4.0.10 + - @ai-sdk/gateway@3.0.24 + +## 6.0.51 + +### Patch Changes + +- ea0feb5: fix(ai): clean up step timeout when error occurs in streamText + +## 6.0.50 + +### Patch Changes + +- Updated dependencies [cbf1704] + - @ai-sdk/gateway@3.0.23 + +## 6.0.49 + +### Patch Changes + +- ded661b: feat(ai): add onStepFinish to agent.generate and agent.stream + +## 6.0.48 + +### Patch Changes + +- 4de5a1d: chore: excluded tests from src folder in npm package +- Updated dependencies [4de5a1d] + - @ai-sdk/gateway@3.0.22 + - @ai-sdk/provider@3.0.5 + - @ai-sdk/provider-utils@4.0.9 + +## 6.0.47 + +### Patch Changes + +- Updated dependencies [2b8369d] + - @ai-sdk/gateway@3.0.21 + +## 6.0.46 + +### Patch Changes + +- Updated dependencies [8dc54db] + - @ai-sdk/gateway@3.0.20 + +## 6.0.45 + +### Patch Changes + +- Updated dependencies [c60fdd8] + - @ai-sdk/gateway@3.0.19 + +## 6.0.44 + +### Patch Changes + +- Updated dependencies [7af4eb4] + - @ai-sdk/gateway@3.0.18 + +## 6.0.43 + +### Patch Changes + +- 2dc9bfa: fix(ai): handle provider-executed tools and tool-approval-response in validation + + - Skip validation for tool calls with `providerExecuted: true` (deferred results) + - Map approvalId to toolCallId for proper tool-approval-response handling + - Filter out empty tool messages after content filtering + - Fixes MissingToolResultError for async and approval-based tool flows + +## 6.0.42 + +### Patch Changes + +- Updated dependencies [66d78d5] + - @ai-sdk/gateway@3.0.17 + +## 6.0.41 + +### Patch Changes + +- 84b6e6d: Revert "feat(ai): expose token usage in useChat onFinish callback#11871 + +## 6.0.40 + +### Patch Changes + +- ab57783: Add usage information to onFinish callback in useChat + +## 6.0.39 + +### Patch Changes + +- 4e28ba0: fix(ai): propagate providerMetadata during input-streaming state + + Provider-executed tools (like MCP tools) need to send metadata during the streaming phase, but the implementation only set `callProviderMetadata` when `part.state === "input-available"`. This fix removes the overly-restrictive state check and adds `callProviderMetadata` to the input-streaming state types and schemas. + +## 6.0.38 + +### Patch Changes + +- Updated dependencies [5c090e7] + - @ai-sdk/provider@3.0.4 + - @ai-sdk/gateway@3.0.16 + - @ai-sdk/provider-utils@4.0.8 + +## 6.0.37 + +### Patch Changes + +- b5dab9b: fix(ai): maintain OpenTelemetry context across async generator yields + + Fixes an issue where OpenTelemetry context was lost at async generator yield boundaries, causing nested ToolLoopAgent spans to escape to the parent agent's level in observability platforms. + + The fix ensures that when `recordSpan` is used with async generators (e.g., in tool execution), the active context is explicitly maintained using `context.with()`, preventing span hierarchy corruption in nested agent scenarios. + + Closes #11720 + +## 6.0.36 + +### Patch Changes + +- 46f46e4: fix(provider-utils): improve tool type inference when using `inputExamples` with Zod schemas that use `.optional().default()` or `.refine()`. +- Updated dependencies [46f46e4] + - @ai-sdk/provider-utils@4.0.7 + - @ai-sdk/gateway@3.0.15 + +## 6.0.35 + +### Patch Changes + +- d7e7f1f: Add descriptive error messages for malformed UIMessageStream chunks. + +## 6.0.34 + +### Patch Changes + +- 1b11dcb: chore(ai): include sources in npm package +- Updated dependencies [1b11dcb] + - @ai-sdk/provider-utils@4.0.6 + - @ai-sdk/provider@3.0.3 + - @ai-sdk/gateway@3.0.14 + +## 6.0.33 + +### Patch Changes + +- 0ca078c: fix(ai): pass providerMetadata in smooth stream to preserve thinking tag + +## 6.0.32 + +### Patch Changes + +- ec24401: chore(ai): include docs in npm package + +## 6.0.31 + +### Patch Changes + +- Updated dependencies [92b339b] + - @ai-sdk/gateway@3.0.13 + +## 6.0.30 + +### Patch Changes + +- Updated dependencies [34d1c8a] + - @ai-sdk/provider-utils@4.0.5 + - @ai-sdk/gateway@3.0.12 + +## 6.0.29 + +### Patch Changes + +- fdce123: docs: update README with usage example for @ai-sdk/anthropic + +## 6.0.28 + +### Patch Changes + +- d4486d2: fix(ai): do not cleanup AsyncIterableStream twice + +## 6.0.27 + +### Patch Changes + +- Updated dependencies [891a60a] + - @ai-sdk/gateway@3.0.11 + +## 6.0.26 + +### Patch Changes + +- 40d4997: feat(ai): add middleware for extracting JSON + +## 6.0.25 + +### Patch Changes + +- b64f256: Add `elementStream` to `streamText` for streaming individual array elements when using `output: Output.array()`. + +## 6.0.24 + +### Patch Changes + +- 4f236c8: feat(ai): per-chunk timeouts for streamText + +## 6.0.23 + +### Patch Changes + +- a4c680a: feat(ai): per-step timeouts for generateText and streamText +- 8c6f067: feat(ai): support Intl.Segmenter in smoothStream + +## 6.0.22 + +### Patch Changes + +- f0d29de: chore(ai): remove \_internal.currentDate from streamText + +## 6.0.21 + +### Patch Changes + +- 9667780: fix(ai): preserve `rawInput` in `safeValidateUIMessages` for `output-error` tool parts + + Fixes #11406 + +## 6.0.20 + +### Patch Changes + +- f748c46: Updated Unified Provider Architecture section in README to describe AI Gateway as the default. + +## 6.0.19 + +### Patch Changes + +- Updated dependencies [2696fd2] + - @ai-sdk/gateway@3.0.10 + +## 6.0.18 + +### Patch Changes + +- d6ec0e2: chore(ai): remove \_internal.currentDate from generateText + +## 6.0.17 + +### Patch Changes + +- af0955e: streamText should throw timeout error with proper cause when it times out + +## 6.0.16 + +### Patch Changes + +- 81adf59: feat(ai): introduce timeout configuration object + +## 6.0.15 + +### Patch Changes + +- 3a73fb3: Include abort reason in stream chunks and document the new field + +## 6.0.14 + +### Patch Changes + +- 3f9453f: feat(ai): add timeout option to generateText, streamText, and Agent + +## 6.0.13 + +### Patch Changes + +- e2c445d: feat(ai): smoothStream reasoning support + +## 6.0.12 + +### Patch Changes + +- d937c8f: Add Image model middleware support via `wrapImageModel` and `ImageModelV3Middleware`. +- Updated dependencies [d937c8f] + - @ai-sdk/provider@3.0.2 + - @ai-sdk/gateway@3.0.9 + - @ai-sdk/provider-utils@4.0.4 + +## 6.0.11 + +### Patch Changes + +- Updated dependencies [8ec1984] + - @ai-sdk/gateway@3.0.8 + +## 6.0.10 + +### Patch Changes + +- ae26f95: Add missing `.catch()` handler to `executeToolCall` promise in `runToolsTransformation` to prevent potential stream hang when the promise rejects. + +## 6.0.9 + +### Patch Changes + +- 4e90233: feat(ui): add DirectChatTransport + +## 6.0.8 + +### Patch Changes + +- Updated dependencies [0b429d4] + - @ai-sdk/provider-utils@4.0.3 + - @ai-sdk/gateway@3.0.7 + +## 6.0.7 + +### Patch Changes + +- Updated dependencies [74c0157] + - @ai-sdk/gateway@3.0.6 + +## 6.0.6 + +### Patch Changes + +- Updated dependencies [7ee2d12] + - @ai-sdk/gateway@3.0.5 + +## 6.0.5 + +### Patch Changes + +- 863d34f: fix: trigger release to update `@latest` +- Updated dependencies [863d34f] + - @ai-sdk/gateway@3.0.4 + - @ai-sdk/provider@3.0.1 + - @ai-sdk/provider-utils@4.0.2 + +## 6.0.4 + +### Patch Changes + +- Updated dependencies [1dad057] + - @ai-sdk/gateway@3.0.3 + +## 6.0.3 + +### Patch Changes + +- 29264a3: feat: add MCP tool approval +- Updated dependencies [29264a3] + - @ai-sdk/provider-utils@4.0.1 + - @ai-sdk/gateway@3.0.2 + +## 6.0.2 + +### Patch Changes + +- 129ff26: fix(ai): skip tool input validation in `safeValidateUIMessages` when `output-error` state has undefined input + + Fixes #11392 + +- Updated dependencies [c0c8a0e] + - @ai-sdk/gateway@3.0.1 + +## 6.0.1 + +### Patch Changes + +- Updated dependencies [387980f] + - @ai-sdk/gateway@3.0.0 + +## 6.0.0 + +### Major Changes + +- dee8b05: ai SDK 6 beta + +### Minor Changes + +- 78928cb: release: start 5.1 beta + +### Patch Changes + +- 0c3b58b: fix(provider): add specificationVersion to ProviderV3 +- 58920e0: fix(ai): do not drop custom headers in HttpChatTransport +- a7da2b6: feat(agent): change output generics +- 0adc679: feat(provider): shared spec v3 +- 50b70d6: feat(anthropic): add programmatic tool calling +- 2d28066: chore(agent): limit agent call parameters +- fca786b: feat(agent): configurable call options +- 046aa3b: feat(provider): speech model v3 spec +- e1f6e8e: feat(ai): add Output.json() +- 8d9e8ad: chore(provider): remove generics from EmbeddingModelV3 + + Before + + ```ts + model.textEmbeddingModel("my-model-id"); + ``` + + After + + ```ts + model.embeddingModel("my-model-id"); + ``` + +- b67d224: Fixes an issue where `providerMetadata` and `providerExecuted` were lost when tool input validation failed +- ab6f01a: Improve ai gateway error message when api key is not present +- 9388ff1: feat(ui): add isDataUIPart helper +- dce03c4: feat: tool input examples +- 2625a04: feat(openai); update spec for mcp approval +- 37c58a0: This release introduces `wrapEmbeddingModel`, a new helper that brings embedding model customization capabilities similar to `wrapLanguageModel`. +- 4e2b04d: fix(gateway): throw error with user-friendly message in non-production environments if `AI_GATEWAY_API_KEY` is not configured +- ab1087b: feat(ai): `chat.addToolResult()` is now `chat.addToolOutput()` +- bb10a89: fix(ai): mcp errors to be jsonrpc 2.0 compliant +- 457f1c6: feat(ai): onFinish callback for generateText +- 95f65c2: chore: use import \* from zod/v4 +- 754df61: fix(ai): correct type field in arrayOutputStrategy from 'enum' to 'array' +- 58920e0: refactor: consolidate header normalization across packages, remove duplicates, preserve custom headers +- 954c356: feat(openai): allow custom names for provider-defined tools +- 7fdd89d: feat(agent): export AgentCallParameters and AgentStreamParameters types +- eca63f3: feat(ai): add OAuth for MCP clients + refactor to new package + + This change replaces + + ```ts + import { experimental_createMCPClient } from "ai"; + import { Experimental_StdioMCPTransport } from "ai/mcp-stdio"; + ``` + + with + + ```ts + import { experimental_createMCPClient } from "@ai-sdk/mcp"; + import { Experimental_StdioMCPTransport } from "@ai-sdk/mcp/mcp-stdio"; + ``` + +- 90e5bdd: chore(ai): restructure agent files +- 42cf7ed: fix(agent): use tool.toModelOutput when available +- 544d4e8: chore(specification): rename v3 provider defined tool to provider tool +- 4812235: fix(ai): add missing export for `LoadSettingError` +- 7f2c9b6: fix(ui): do not submit automatically when server return with error +- 614599a: chore(ai): deprecate generateObject and streamObject +- 0c4822d: feat: `EmbeddingModelV3` +- e062079: chore(agent): move Agent.respond into createAgentStreamResponse function +- 2b49dae: feat(agent): support UIMessageStreamOptions in createAgentStreamResponse +- ee651d7: `https://v6.ai-sdk.dev` -> `https://ai-sdk.dev` +- 5a4e732: Export `parseJsonEventStream` and `uiMessageChunkSchema` from "ai" package +- f733285: fix(ai): only parse experimental_output in generateText when finishReason is stop +- 9b83947: feat(ai): add convertDataPart option to convertToModelMessages + + Add optional convertDataPart callback for converting custom data parts (URLs, code files, etc.) to text or file parts that models can process. Fully type-safe using existing UIMessage generics. + +- 7eca093: fix(ai): update `uiMessageChunkSchema` to satisfy the `UIMessageChunk` type +- 077aea3: feat(ai): stable structured output on generateText, streamText, and ToolLoopAgent +- 9f20c87: chore: updated README +- 521c537: feat(ai): Tool.needsApproval can be a function +- 7169511: feat(agent): support context in onFinish callback +- e8109d3: feat: tool execution approval +- 03849b0: move DelayedPromise into provider utils +- ed329cb: feat: `Provider-V3` +- 22ef5c6: feat(ai): Output.text() is default output mode +- 9ba4324: feat(ai): support SystemModelMessage[] in system and instructions properties +- 3bd2689: feat: extended token usage +- 293a6b7: Added a title to the tools +- 7c3c216: fixed docs and exported NoSpeechGeneratedError +- c62ecf0: feat(ai): add support for v2 specs in transcription and speech models +- d1bdadb: Added experimental_rerank support +- 703459a: feat: tool execution approval for dynamic tools +- 3071620: fix header loss when statusText is undefined in writeHead +- 7e4649f: fix(core): Fix image download behavior when the initial model is swapped out during prepareStep +- 48454ab: fix(ai): handle backpressure in `writeToServerResponse` +- e06b663: feat(agent): support experimental stream transforms +- 83e5744: feat: support async Tool.toModelOutput +- 8c98371: Extend addToolResult to support error results +- b1405bf: feat(ai): send context into streamText / generateText onFinish callbacks +- a5e152d: fix(ai): back version support for V2 providers +- aa0515c: feat(ai): move Agent to stable +- f6f0c5a: chore: remove zod from ui packages +- 3ed5519: chore: rename ToolCallOptions to ToolExecutionOptions +- eb8d1cb: fix not catching of empty arrays in validateUIMessage +- e7d9b00: feat(agent): add optional name property to agent +- d5b25ee: feat(ai): add Output.array() +- d7bae86: feat(ai): add Output.choice() +- 8dac895: feat: `LanguageModelV3` +- a755db5: feat(ai): improve warnings with provider and model id +- 1c2a4c1: fix(ai): remove outdated jsdoc param descriptions +- 686103c: chore(ai): export ContentPart type +- 0d6c0d8: chore(ai): remove deprecated CodeMessage type and related types and functions +- 9b8d17e: fix(agent): move provider options to main agent config +- 79a8e7f: feat(agent): support abortSignal in createAgentUIStream +- d59ce25: fix(ai): do not mutate middleware array argument when wrapping +- 475189e: chore(specification): rename EmbeddingModelCallOptions +- 3d83f38: chore(ai): improve addToolInputExamplesMiddleware +- 457318b: chore(provider,ai): switch to SharedV3Warning and unified warnings +- b681d7d: feat: expose usage tokens for 'generateImage' function +- c99da05: feat(ai): add onFinish to Agent +- db913bd: fix(google): add thought signature to gemini 3 pro image parts +- 9061dc0: feat: image editing +- 8445d70: feat: export GatewayModelId and use to type LanguageModel +- 32223c8: feat: add toolCallId arg to toModelOutput +- 8370068: fix(provider/google): preserve thoughtSignature through tool execution +- 5e313e3: fix(agent): do not allow static tools when tools is empty +- db62f7d: Added schema name and description for generateText and output +- a7f6f81: Add safeValidateUIMessages utility to validate UI messages without throwing, returning a success/failure result object like Zod’s safeParse +- 79ba99f: feat(agent): add message metadata support when inferring UI messages +- c98373a: chore(agent): rename createAgentStreamResponse to createAgentUIStreamResponse +- 846e80e: fix(ai): bind functions for v2 -> v3 adapter +- bbdcb81: Add experimental_context parameter to prepareStep callback +- 67a407c: chore(ai): add warning when using v2 models with AISDK v6 +- 9524761: chore(ai): rename relevanceScore to score +- ca13d26: feat(ai): add output to StreamTextResult +- 4616b86: chore: update zod peer depenedency version +- a322efa: Added finishReason on useChat onFinish callbck +- 2d166e4: feat(provider/gateway): add support for image models +- 384142c: feat(agent): add abortSignal parameter to generate and stream +- 36b175c: chore(ai): change output generics +- 2b1bf9d: feat(ai): add pruneMessages helper function +- 81d4308: feat: provider-executed dynamic tools +- e0d1ea9: fix(ai): align logic of text-end with reasoning-end +- 2406576: chore(agent): rename messages property on agent ui stream functions to uiMessages +- b1aeea7: feat(ai): set default stopWhen on Agent to stepCountIs(20) +- dce4e7b: chore(agent): rename system to instructions +- 4ece5f9: feat(agent): add experimental_download to ToolLoopAgent +- a417a34: feat(agent): introduce version property +- 637eaa4: feat(ai): print model warnings in embed and embedMany +- 177b475: fix(ai): download files when intermediate file cannot be downloaded +- 21e20c0: feat(provider): transcription model v3 spec +- afe7093: feat: add middleware for tool input examples +- 61f7b0f: chore(agent): rename BasicAgent to ToolLoopAgent +- af9dab3: fix(ai): remove unused mode setting from generateObject and streamObject +- 522f6b8: feat: `ImageModelV3` +- 97b1d77: fix(ui): Don't resend messages for providerExecuted tools in lastAssistantMessageIsCompleteWithToolCalls and lastAssistantMessageIsCompleteWithApprovalResponses +- 69768c2: chore(ai): remove UI message reference from model message validation +- 27e8c3a: chore(ai): rename Agent to BasicAgent, introduce Agent interface +- 81e29ab: feat(ai): allow modifying experimental context in prepareStep +- 7da02d2: fix(ai): prune messages properly when toolCalls set to 'before-last-message' +- 763d04a: feat: Standard JSON Schema support +- 95b77e2: feat(agent): extract createAgentUIStream, add pipeAgentUIStreamToResponse +- 3794514: feat: flexible tool output content support +- cbf52cd: feat: expose raw finish reason +- 14ca35d: feat: add support for v2 specs +- 10c1322: fix: moved dependency `@ai-sdk/test-server` to devDependencies +- dcdac8c: chore(ai): rename tool helpers +- 960ec8f: chore: change argument of toModelOutput to parameter object +- b59d924: feat(ai): support SystemModelMessage in system and instructions properties +- 1bd7d32: feat: tool-specific strict mode +- 95f65c2: chore: load zod schemas lazily +- Updated dependencies + - @ai-sdk/provider@3.0.0 + - @ai-sdk/gateway@2.0.0 + - @ai-sdk/provider-utils@4.0.0 + +## 6.0.0-beta.169 + +### Patch Changes + +- ee651d7: `https://v6.ai-sdk.dev` -> `https://ai-sdk.dev` + +## 6.0.0-beta.168 + +### Patch Changes + +- Updated dependencies [7294355] + - @ai-sdk/gateway@2.0.0-beta.93 + +## 6.0.0-beta.167 + +### Patch Changes + +- 475189e: chore(specification): rename EmbeddingModelCallOptions +- Updated dependencies [475189e] + - @ai-sdk/provider@3.0.0-beta.32 + - @ai-sdk/gateway@2.0.0-beta.92 + - @ai-sdk/provider-utils@4.0.0-beta.59 + +## 6.0.0-beta.166 + +### Patch Changes + +- 9f20c87: chore: updated README + +## 6.0.0-beta.165 + +### Patch Changes + +- 2625a04: feat(openai); update spec for mcp approval +- Updated dependencies [2625a04] + - @ai-sdk/provider@3.0.0-beta.31 + - @ai-sdk/gateway@2.0.0-beta.91 + - @ai-sdk/provider-utils@4.0.0-beta.58 + +## 6.0.0-beta.164 + +### Patch Changes + +- cbf52cd: feat: expose raw finish reason +- Updated dependencies [cbf52cd] + - @ai-sdk/provider@3.0.0-beta.30 + - @ai-sdk/gateway@2.0.0-beta.90 + - @ai-sdk/provider-utils@4.0.0-beta.57 + +## 6.0.0-beta.163 + +### Patch Changes + +- Updated dependencies [9549c9e] + - @ai-sdk/provider@3.0.0-beta.29 + - @ai-sdk/gateway@2.0.0-beta.89 + - @ai-sdk/provider-utils@4.0.0-beta.56 + +## 6.0.0-beta.162 + +### Patch Changes + +- 50b70d6: feat(anthropic): add programmatic tool calling +- Updated dependencies [50b70d6] + - @ai-sdk/provider-utils@4.0.0-beta.55 + - @ai-sdk/gateway@2.0.0-beta.88 + +## 6.0.0-beta.161 + +### Patch Changes + +- Updated dependencies [ee71658] + - @ai-sdk/gateway@2.0.0-beta.87 + +## 6.0.0-beta.160 + +### Patch Changes + +- 9061dc0: feat: image editing +- Updated dependencies [9061dc0] + - @ai-sdk/provider-utils@4.0.0-beta.54 + - @ai-sdk/provider@3.0.0-beta.28 + - @ai-sdk/gateway@2.0.0-beta.86 + +## 6.0.0-beta.159 + +### Patch Changes + +- 3071620: fix header loss when statusText is undefined in writeHead +- Updated dependencies [870297d] + - @ai-sdk/gateway@2.0.0-beta.85 + +## 6.0.0-beta.158 + +### Patch Changes + +- Updated dependencies [366f50b] + - @ai-sdk/provider@3.0.0-beta.27 + - @ai-sdk/gateway@2.0.0-beta.84 + - @ai-sdk/provider-utils@4.0.0-beta.53 + +## 6.0.0-beta.157 + +### Patch Changes + +- 763d04a: feat: Standard JSON Schema support +- Updated dependencies [763d04a] + - @ai-sdk/provider-utils@4.0.0-beta.52 + - @ai-sdk/gateway@2.0.0-beta.83 + +## 6.0.0-beta.156 + +### Patch Changes + +- 2406576: chore(agent): rename messages property on agent ui stream functions to uiMessages + +## 6.0.0-beta.155 + +### Patch Changes + +- Updated dependencies [c1efac4] + - @ai-sdk/provider-utils@4.0.0-beta.51 + - @ai-sdk/gateway@2.0.0-beta.82 + +## 6.0.0-beta.154 + +### Patch Changes + +- 32223c8: feat: add toolCallId arg to toModelOutput +- Updated dependencies [32223c8] + - @ai-sdk/provider-utils@4.0.0-beta.50 + - @ai-sdk/gateway@2.0.0-beta.81 + +## 6.0.0-beta.153 + +### Patch Changes + +- 83e5744: feat: support async Tool.toModelOutput +- Updated dependencies [83e5744] + - @ai-sdk/provider-utils@4.0.0-beta.49 + - @ai-sdk/gateway@2.0.0-beta.80 + +## 6.0.0-beta.152 + +### Patch Changes + +- 960ec8f: chore: change argument of toModelOutput to parameter object +- Updated dependencies [960ec8f] + - @ai-sdk/provider-utils@4.0.0-beta.48 + - @ai-sdk/gateway@2.0.0-beta.79 + +## 6.0.0-beta.151 + +### Patch Changes + +- dcdac8c: chore(ai): rename tool helpers + +## 6.0.0-beta.150 + +### Patch Changes + +- db62f7d: Added schema name and description for generateText and output + +## 6.0.0-beta.149 + +### Patch Changes + +- 4e2b04d: fix(gateway): throw error with user-friendly message in non-production environments if `AI_GATEWAY_API_KEY` is not configured + +## 6.0.0-beta.148 + +### Patch Changes + +- Updated dependencies [f18ef7f] + - @ai-sdk/gateway@2.0.0-beta.78 + +## 6.0.0-beta.147 + +### Patch Changes + +- 637eaa4: feat(ai): print model warnings in embed and embedMany + +## 6.0.0-beta.146 + +### Patch Changes + +- Updated dependencies [e9e157f] + - @ai-sdk/provider-utils@4.0.0-beta.47 + - @ai-sdk/gateway@2.0.0-beta.77 + +## 6.0.0-beta.145 + +### Patch Changes + +- Updated dependencies [34ee8d0] + - @ai-sdk/gateway@2.0.0-beta.76 + +## 6.0.0-beta.144 + +### Patch Changes + +- ab6f01a: Improve ai gateway error message when api key is not present + +## 6.0.0-beta.143 + +### Patch Changes + +- 81e29ab: feat(ai): allow modifying experimental context in prepareStep +- Updated dependencies [81e29ab] + - @ai-sdk/provider-utils@4.0.0-beta.46 + - @ai-sdk/gateway@2.0.0-beta.75 + +## 6.0.0-beta.142 + +### Patch Changes + +- 7169511: feat(agent): support context in onFinish callback +- bbdcb81: Add experimental_context parameter to prepareStep callback + +## 6.0.0-beta.141 + +### Patch Changes + +- b1405bf: feat(ai): send context into streamText / generateText onFinish callbacks + +## 6.0.0-beta.140 + +### Patch Changes + +- 7fdd89d: feat(agent): export AgentCallParameters and AgentStreamParameters types + +## 6.0.0-beta.139 + +### Patch Changes + +- 3bd2689: feat: extended token usage +- Updated dependencies [3bd2689] + - @ai-sdk/provider@3.0.0-beta.26 + - @ai-sdk/gateway@2.0.0-beta.74 + - @ai-sdk/provider-utils@4.0.0-beta.45 + +## 6.0.0-beta.138 + +### Patch Changes + +- Updated dependencies [53f3368] + - @ai-sdk/provider@3.0.0-beta.25 + - @ai-sdk/gateway@2.0.0-beta.73 + - @ai-sdk/provider-utils@4.0.0-beta.44 + +## 6.0.0-beta.137 + +### Patch Changes + +- 9ba4324: feat(ai): support SystemModelMessage[] in system and instructions properties + +## 6.0.0-beta.136 + +### Patch Changes + +- 3d83f38: chore(ai): improve addToolInputExamplesMiddleware + +## 6.0.0-beta.135 + +### Patch Changes + +- afe7093: feat: add middleware for tool input examples + +## 6.0.0-beta.134 + +### Patch Changes + +- 686103c: chore(ai): export ContentPart type + +## 6.0.0-beta.133 + +### Patch Changes + +- dce03c4: feat: tool input examples +- Updated dependencies [dce03c4] + - @ai-sdk/provider-utils@4.0.0-beta.43 + - @ai-sdk/provider@3.0.0-beta.24 + - @ai-sdk/gateway@2.0.0-beta.72 + +## 6.0.0-beta.132 + +### Patch Changes + +- af9dab3: fix(ai): remove unused mode setting from generateObject and streamObject + +## 6.0.0-beta.131 + +### Patch Changes + +- 3ed5519: chore: rename ToolCallOptions to ToolExecutionOptions +- Updated dependencies [3ed5519] + - @ai-sdk/provider-utils@4.0.0-beta.42 + - @ai-sdk/gateway@2.0.0-beta.71 + +## 6.0.0-beta.130 + +### Patch Changes + +- 1bd7d32: feat: tool-specific strict mode +- Updated dependencies [1bd7d32] + - @ai-sdk/provider-utils@4.0.0-beta.41 + - @ai-sdk/provider@3.0.0-beta.23 + - @ai-sdk/gateway@2.0.0-beta.70 + +## 6.0.0-beta.129 + +### Patch Changes + +- 67a407c: chore(ai): add warning when using v2 models with AISDK v6 + +## 6.0.0-beta.128 + +### Patch Changes + +- Updated dependencies [b1624f0] + - @ai-sdk/gateway@2.0.0-beta.69 + +## 6.0.0-beta.127 + +### Patch Changes + +- 614599a: chore(ai): deprecate generateObject and streamObject + +## 6.0.0-beta.126 + +### Patch Changes + +- b67d224: Fixes an issue where `providerMetadata` and `providerExecuted` were lost when tool input validation failed + +## 6.0.0-beta.125 + +### Patch Changes + +- 0d6c0d8: chore(ai): remove deprecated CodeMessage type and related types and functions + +## 6.0.0-beta.124 + +### Patch Changes + +- 544d4e8: chore(specification): rename v3 provider defined tool to provider tool +- Updated dependencies [544d4e8] + - @ai-sdk/provider-utils@4.0.0-beta.40 + - @ai-sdk/provider@3.0.0-beta.22 + - @ai-sdk/gateway@2.0.0-beta.68 + +## 6.0.0-beta.123 + +### Patch Changes + +- 954c356: feat(openai): allow custom names for provider-defined tools +- Updated dependencies [954c356] + - @ai-sdk/provider-utils@4.0.0-beta.39 + - @ai-sdk/provider@3.0.0-beta.21 + - @ai-sdk/gateway@2.0.0-beta.67 + +## 6.0.0-beta.122 + +### Patch Changes + +- 03849b0: move DelayedPromise into provider utils +- Updated dependencies [03849b0] + - @ai-sdk/provider-utils@4.0.0-beta.38 + - @ai-sdk/gateway@2.0.0-beta.66 + +## 6.0.0-beta.121 + +### Patch Changes + +- Updated dependencies [cdd0bc2] + - @ai-sdk/gateway@2.0.0-beta.65 + +## 6.0.0-beta.120 + +### Patch Changes + +- 457318b: chore(provider,ai): switch to SharedV3Warning and unified warnings +- Updated dependencies [457318b] + - @ai-sdk/provider@3.0.0-beta.20 + - @ai-sdk/gateway@2.0.0-beta.64 + - @ai-sdk/provider-utils@4.0.0-beta.37 + +## 6.0.0-beta.119 + +### Patch Changes + +- b59d924: feat(ai): support SystemModelMessage in system and instructions properties + +## 6.0.0-beta.118 + +### Patch Changes + +- 8d9e8ad: chore(provider): remove generics from EmbeddingModelV3 + + Before + + ```ts + model.textEmbeddingModel("my-model-id"); + ``` + + After + + ```ts + model.embeddingModel("my-model-id"); + ``` + +- Updated dependencies [8d9e8ad] + - @ai-sdk/provider@3.0.0-beta.19 + - @ai-sdk/gateway@2.0.0-beta.63 + - @ai-sdk/provider-utils@4.0.0-beta.36 + +## 6.0.0-beta.117 + +### Patch Changes + +- Updated dependencies [10d819b] + - @ai-sdk/provider@3.0.0-beta.18 + - @ai-sdk/gateway@2.0.0-beta.62 + - @ai-sdk/provider-utils@4.0.0-beta.35 + +## 6.0.0-beta.116 + +### Patch Changes + +- 4ece5f9: feat(agent): add experimental_download to ToolLoopAgent + +## 6.0.0-beta.115 + +### Patch Changes + +- 7da02d2: fix(ai): prune messages properly when toolCalls set to 'before-last-message' + +## 6.0.0-beta.114 + +### Patch Changes + +- 69768c2: chore(ai): remove UI message reference from model message validation + +## 6.0.0-beta.113 + +### Patch Changes + +- 79a8e7f: feat(agent): support abortSignal in createAgentUIStream + +## 6.0.0-beta.112 + +### Patch Changes + +- e06b663: feat(agent): support experimental stream transforms + +## 6.0.0-beta.111 + +### Patch Changes + +- Updated dependencies [e8694af] + - @ai-sdk/gateway@2.0.0-beta.61 + +## 6.0.0-beta.110 + +### Patch Changes + +- db913bd: fix(google): add thought signature to gemini 3 pro image parts +- Updated dependencies [db913bd] + - @ai-sdk/provider@3.0.0-beta.17 + - @ai-sdk/gateway@2.0.0-beta.60 + - @ai-sdk/provider-utils@4.0.0-beta.34 + +## 6.0.0-beta.109 + +### Patch Changes + +- 79ba99f: feat(agent): add message metadata support when inferring UI messages + +## 6.0.0-beta.108 + +### Patch Changes + +- Updated dependencies [5dd4c6a] + - @ai-sdk/gateway@2.0.0-beta.59 + +## 6.0.0-beta.107 + +### Patch Changes + +- 8445d70: feat: export GatewayModelId and use to type LanguageModel + +## 6.0.0-beta.106 + +### Patch Changes + +- Updated dependencies [1425df5] + - @ai-sdk/gateway@2.0.0-beta.58 + +## 6.0.0-beta.105 + +### Patch Changes + +- Updated dependencies [bca7e61] + - @ai-sdk/gateway@2.0.0-beta.57 + +## 6.0.0-beta.104 + +### Patch Changes + +- 2d166e4: feat(provider/gateway): add support for image models +- Updated dependencies [2d166e4] + - @ai-sdk/gateway@2.0.0-beta.56 + +## 6.0.0-beta.103 + +### Patch Changes + +- Updated dependencies [cc5170d] + - @ai-sdk/gateway@2.0.0-beta.55 + +## 6.0.0-beta.102 + +### Patch Changes + +- Updated dependencies [5f66123] + - @ai-sdk/gateway@2.0.0-beta.54 + +## 6.0.0-beta.101 + +### Patch Changes + +- Updated dependencies [3782645] + - @ai-sdk/gateway@2.0.0-beta.53 + +## 6.0.0-beta.100 + +### Patch Changes + +- 8370068: fix(provider/google): preserve thoughtSignature through tool execution + +## 6.0.0-beta.99 + +### Patch Changes + +- 384142c: feat(agent): add abortSignal parameter to generate and stream + +## 6.0.0-beta.98 + +### Patch Changes + +- b681d7d: feat: expose usage tokens for 'generateImage' function +- Updated dependencies [b681d7d] + - @ai-sdk/provider@3.0.0-beta.16 + - @ai-sdk/gateway@2.0.0-beta.52 + - @ai-sdk/provider-utils@4.0.0-beta.33 + +## 6.0.0-beta.97 + +### Patch Changes + +- Updated dependencies [32d8dbb] + - @ai-sdk/provider-utils@4.0.0-beta.32 + - @ai-sdk/gateway@2.0.0-beta.51 + +## 6.0.0-beta.96 + +### Patch Changes + +- a322efa: Added finishReason on useChat onFinish callbck + +## 6.0.0-beta.95 + +### Patch Changes + +- eb8d1cb: fix not catching of empty arrays in validateUIMessage + +## 6.0.0-beta.94 + +### Patch Changes + +- ab1087b: feat(ai): `chat.addToolResult()` is now `chat.addToolOutput()` + +## 6.0.0-beta.93 + +### Patch Changes + +- Updated dependencies [bb36798] + - @ai-sdk/provider@3.0.0-beta.15 + - @ai-sdk/gateway@2.0.0-beta.50 + - @ai-sdk/provider-utils@4.0.0-beta.31 + +## 6.0.0-beta.92 + +### Patch Changes + +- 97b1d77: fix(ui): Don't resend messages for providerExecuted tools in lastAssistantMessageIsCompleteWithToolCalls and lastAssistantMessageIsCompleteWithApprovalResponses + +## 6.0.0-beta.91 + +### Patch Changes + +- Updated dependencies [4f16c37] + - @ai-sdk/provider-utils@4.0.0-beta.30 + - @ai-sdk/gateway@2.0.0-beta.49 + +## 6.0.0-beta.90 + +### Patch Changes + +- Updated dependencies [af3780b] + - @ai-sdk/provider@3.0.0-beta.14 + - @ai-sdk/gateway@2.0.0-beta.48 + - @ai-sdk/provider-utils@4.0.0-beta.29 + +## 6.0.0-beta.89 + +### Patch Changes + +- d59ce25: fix(ai): do not mutate middleware array argument when wrapping + +## 6.0.0-beta.88 + +### Patch Changes + +- 22ef5c6: feat(ai): Output.text() is default output mode + +## 6.0.0-beta.87 + +### Patch Changes + +- ca13d26: feat(ai): add output to StreamTextResult + +## 6.0.0-beta.86 + +### Patch Changes + +- 36b175c: chore(ai): change output generics + +## 6.0.0-beta.85 + +### Patch Changes + +- Updated dependencies [96322b7] + - @ai-sdk/gateway@2.0.0-beta.47 + +## 6.0.0-beta.84 + +### Patch Changes + +- Updated dependencies [016b111] + - @ai-sdk/provider-utils@4.0.0-beta.28 + - @ai-sdk/gateway@2.0.0-beta.46 + +## 6.0.0-beta.83 + +### Patch Changes + +- e1f6e8e: feat(ai): add Output.json() + +## 6.0.0-beta.82 + +### Patch Changes + +- 37c58a0: This release introduces `wrapEmbeddingModel`, a new helper that brings embedding model customization capabilities similar to `wrapLanguageModel`. +- Updated dependencies [37c58a0] + - @ai-sdk/provider@3.0.0-beta.13 + - @ai-sdk/gateway@2.0.0-beta.45 + - @ai-sdk/provider-utils@4.0.0-beta.27 + +## 6.0.0-beta.81 + +### Patch Changes + +- Updated dependencies [7d73922] + - @ai-sdk/gateway@2.0.0-beta.44 + +## 6.0.0-beta.80 + +### Patch Changes + +- 9524761: chore(ai): rename relevanceScore to score + +## 6.0.0-beta.79 + +### Patch Changes + +- d1bdadb: Added experimental_rerank support +- Updated dependencies [d1bdadb] + - @ai-sdk/provider@3.0.0-beta.12 + - @ai-sdk/gateway@2.0.0-beta.43 + - @ai-sdk/provider-utils@4.0.0-beta.26 + +## 6.0.0-beta.78 + +### Patch Changes + +- Updated dependencies [4c44a5b] + - @ai-sdk/provider@3.0.0-beta.11 + - @ai-sdk/gateway@2.0.0-beta.42 + - @ai-sdk/provider-utils@4.0.0-beta.25 + +## 6.0.0-beta.77 + +### Patch Changes + +- 0c3b58b: fix(provider): add specificationVersion to ProviderV3 +- Updated dependencies [0c3b58b] + - @ai-sdk/provider@3.0.0-beta.10 + - @ai-sdk/gateway@2.0.0-beta.41 + - @ai-sdk/provider-utils@4.0.0-beta.24 + +## 6.0.0-beta.76 + +### Patch Changes + +- a755db5: feat(ai): improve warnings with provider and model id +- Updated dependencies [a755db5] + - @ai-sdk/provider@3.0.0-beta.9 + - @ai-sdk/gateway@2.0.0-beta.40 + - @ai-sdk/provider-utils@4.0.0-beta.23 + +## 6.0.0-beta.75 + +### Patch Changes + +- 58920e0: fix(ai): do not drop custom headers in HttpChatTransport +- 58920e0: refactor: consolidate header normalization across packages, remove duplicates, preserve custom headers +- Updated dependencies [58920e0] + - @ai-sdk/provider-utils@4.0.0-beta.22 + - @ai-sdk/gateway@2.0.0-beta.39 + +## 6.0.0-beta.74 + +### Patch Changes + +- 293a6b7: Added a title to the tools +- Updated dependencies [293a6b7] + - @ai-sdk/provider-utils@4.0.0-beta.21 + - @ai-sdk/gateway@2.0.0-beta.38 + +## 6.0.0-beta.73 + +### Patch Changes + +- 754df61: fix(ai): correct type field in arrayOutputStrategy from 'enum' to 'array' + +## 6.0.0-beta.72 + +### Patch Changes + +- eca63f3: feat(ai): add OAuth for MCP clients + refactor to new package + + This change replaces + + ```ts + import { experimental_createMCPClient } from "ai"; + import { Experimental_StdioMCPTransport } from "ai/mcp-stdio"; + ``` + + with + + ```ts + import { experimental_createMCPClient } from "@ai-sdk/mcp"; + import { Experimental_StdioMCPTransport } from "@ai-sdk/mcp/mcp-stdio"; + ``` + +## 6.0.0-beta.71 + +### Patch Changes + +- 077aea3: feat(ai): stable structured output on generateText, streamText, and ToolLoopAgent + +## 6.0.0-beta.70 + +### Patch Changes + +- d7bae86: feat(ai): add Output.choice() + +## 6.0.0-beta.69 + +### Patch Changes + +- d5b25ee: feat(ai): add Output.array() + +## 6.0.0-beta.68 + +### Patch Changes + +- 9b83947: feat(ai): add convertDataPart option to convertToModelMessages + + Add optional convertDataPart callback for converting custom data parts (URLs, code files, etc.) to text or file parts that models can process. Fully type-safe using existing UIMessage generics. + +## 6.0.0-beta.67 + +### Patch Changes + +- Updated dependencies [2b6a848] + - @ai-sdk/gateway@2.0.0-beta.37 + +## 6.0.0-beta.66 + +### Patch Changes + +- fca786b: feat(agent): configurable call options +- Updated dependencies [fca786b] + - @ai-sdk/provider-utils@4.0.0-beta.20 + - @ai-sdk/gateway@2.0.0-beta.36 + +## 6.0.0-beta.65 + +### Patch Changes + +- dce4e7b: chore(agent): rename system to instructions + +## 6.0.0-beta.64 + +### Patch Changes + +- 2d28066: chore(agent): limit agent call parameters + +## 6.0.0-beta.63 + +### Patch Changes + +- a7da2b6: feat(agent): change output generics + +## 6.0.0-beta.62 + +### Patch Changes + +- 95b77e2: feat(agent): extract createAgentUIStream, add pipeAgentUIStreamToResponse + +## 6.0.0-beta.61 + +### Patch Changes + +- c98373a: chore(agent): rename createAgentStreamResponse to createAgentUIStreamResponse + +## 6.0.0-beta.60 + +### Patch Changes + +- 2b49dae: feat(agent): support UIMessageStreamOptions in createAgentStreamResponse + +## 6.0.0-beta.59 + +### Patch Changes + +- e062079: chore(agent): move Agent.respond into createAgentStreamResponse function + +## 6.0.0-beta.58 + +### Patch Changes + +- a417a34: feat(agent): introduce version property + +## 6.0.0-beta.57 + +### Patch Changes + +- 61f7b0f: chore(agent): rename BasicAgent to ToolLoopAgent + +## 6.0.0-beta.56 + +### Patch Changes + +- 3794514: feat: flexible tool output content support +- Updated dependencies [3794514] + - @ai-sdk/provider-utils@4.0.0-beta.19 + - @ai-sdk/provider@3.0.0-beta.8 + - @ai-sdk/gateway@2.0.0-beta.35 + +## 6.0.0-beta.55 + +### Patch Changes + +- 42cf7ed: fix(agent): use tool.toModelOutput when available + +## 6.0.0-beta.54 + +### Patch Changes + +- 9388ff1: feat(ui): add isDataUIPart helper + +## 6.0.0-beta.53 + +### Patch Changes + +- Updated dependencies [2f8b0c8] + - @ai-sdk/gateway@2.0.0-beta.34 + +## 6.0.0-beta.52 + +### Patch Changes + +- Updated dependencies [1890317] + - @ai-sdk/gateway@2.0.0-beta.33 + +## 6.0.0-beta.51 + +### Patch Changes + +- 5e313e3: fix(agent): do not allow static tools when tools is empty + +## 6.0.0-beta.50 + +### Patch Changes + +- 4812235: fix(ai): add missing export for `LoadSettingError` +- 81d4308: feat: provider-executed dynamic tools +- Updated dependencies [81d4308] + - @ai-sdk/provider@3.0.0-beta.7 + - @ai-sdk/gateway@2.0.0-beta.32 + - @ai-sdk/provider-utils@4.0.0-beta.18 + +## 6.0.0-beta.49 + +### Patch Changes + +- 703459a: feat: tool execution approval for dynamic tools +- Updated dependencies [703459a] + - @ai-sdk/provider-utils@4.0.0-beta.17 + - @ai-sdk/gateway@2.0.0-beta.31 + +## 6.0.0-beta.48 + +### Patch Changes + +- 7f2c9b6: fix(ui): do not submit automatically when server return with error + +## 6.0.0-beta.47 + +### Patch Changes + +- c62ecf0: feat(ai): add support for v2 specs in transcription and speech models + +## 6.0.0-beta.46 + +### Patch Changes + +- Updated dependencies [0a2ff8a] + - @ai-sdk/gateway@2.0.0-beta.30 + +## 6.0.0-beta.45 + +### Patch Changes + +- 48454ab: fix(ai): handle backpressure in `writeToServerResponse` + +## 6.0.0-beta.44 + +### Patch Changes + +- 2b1bf9d: feat(ai): add pruneMessages helper function + +## 6.0.0-beta.43 + +### Patch Changes + +- 27e8c3a: chore(ai): rename Agent to BasicAgent, introduce Agent interface + +## 6.0.0-beta.42 + +### Patch Changes + +- Updated dependencies [6306603] + - @ai-sdk/provider-utils@4.0.0-beta.16 + - @ai-sdk/gateway@2.0.0-beta.29 + +## 6.0.0-beta.41 + +### Patch Changes + +- Updated dependencies [f0b2157] + - @ai-sdk/gateway@2.0.0-beta.28 + - @ai-sdk/provider-utils@4.0.0-beta.15 + +## 6.0.0-beta.40 + +### Patch Changes + +- Updated dependencies [3b1d015] + - @ai-sdk/provider-utils@4.0.0-beta.14 + - @ai-sdk/gateway@2.0.0-beta.27 + +## 6.0.0-beta.39 + +### Patch Changes + +- f6f0c5a: chore: remove zod from ui packages + +## 6.0.0-beta.38 + +### Patch Changes + +- Updated dependencies [d116b4b] + - @ai-sdk/provider-utils@4.0.0-beta.13 + - @ai-sdk/gateway@2.0.0-beta.26 + +## 6.0.0-beta.37 + +### Patch Changes + +- Updated dependencies [7e32fea] + - @ai-sdk/provider-utils@4.0.0-beta.12 + - @ai-sdk/gateway@2.0.0-beta.25 + +## 6.0.0-beta.36 + +### Patch Changes + +- Updated dependencies [0e29b8b] + - @ai-sdk/gateway@2.0.0-beta.24 + +## 6.0.0-beta.35 + +### Patch Changes + +- Updated dependencies [acc14d8] + - @ai-sdk/gateway@2.0.0-beta.23 + +## 6.0.0-beta.34 + +### Patch Changes + +- bb10a89: fix(ai): mcp errors to be jsonrpc 2.0 compliant + +## 6.0.0-beta.33 + +### Patch Changes + +- f733285: fix(ai): only parse experimental_output in generateText when finishReason is stop + +## 6.0.0-beta.32 + +### Patch Changes + +- 7e4649f: fix(core): Fix image download behavior when the initial model is swapped out during prepareStep + +## 6.0.0-beta.31 + +### Patch Changes + +- 95f65c2: chore: use import \* from zod/v4 +- 95f65c2: chore: load zod schemas lazily +- Updated dependencies + - @ai-sdk/provider-utils@4.0.0-beta.11 + - @ai-sdk/gateway@2.0.0-beta.22 + +## 6.0.0-beta.30 + +### Patch Changes + +- Updated dependencies [7b1b1b1] + - @ai-sdk/gateway@2.0.0-beta.21 + +## 6.0.0-beta.29 + +### Major Changes + +- dee8b05: ai SDK 6 beta + +### Patch Changes + +- Updated dependencies [dee8b05] + - @ai-sdk/gateway@2.0.0-beta.20 + - @ai-sdk/provider@3.0.0-beta.6 + - @ai-sdk/provider-utils@4.0.0-beta.10 + +## 5.1.0-beta.28 + +### Patch Changes + +- 521c537: feat(ai): Tool.needsApproval can be a function +- Updated dependencies [521c537] + - @ai-sdk/provider-utils@3.1.0-beta.9 + - @ai-sdk/gateway@1.1.0-beta.19 + +## 5.1.0-beta.27 + +### Patch Changes + +- Updated dependencies [e06565c] + - @ai-sdk/provider-utils@3.1.0-beta.8 + - @ai-sdk/gateway@1.1.0-beta.18 + +## 5.1.0-beta.26 + +### Patch Changes + +- c99da05: feat(ai): add onFinish to Agent + +## 5.1.0-beta.25 + +### Patch Changes + +- 457f1c6: feat(ai): onFinish callback for generateText + +## 5.1.0-beta.24 + +### Patch Changes + +- 90e5bdd: chore(ai): restructure agent files + +## 5.1.0-beta.23 + +### Patch Changes + +- Updated dependencies [1d8ea2c] + - @ai-sdk/gateway@1.1.0-beta.17 + +## 5.1.0-beta.22 + +### Patch Changes + +- 046aa3b: feat(provider): speech model v3 spec +- e8109d3: feat: tool execution approval +- a5e152d: fix(ai): back version support for V2 providers +- 21e20c0: feat(provider): transcription model v3 spec +- Updated dependencies + - @ai-sdk/provider@2.1.0-beta.5 + - @ai-sdk/provider-utils@3.1.0-beta.7 + - @ai-sdk/gateway@1.1.0-beta.16 + +## 5.1.0-beta.21 + +### Patch Changes + +- Updated dependencies [ef62178] + - @ai-sdk/gateway@1.1.0-beta.15 + +## 5.1.0-beta.20 + +### Patch Changes + +- 846e80e: fix(ai): bind functions for v2 -> v3 adapter +- Updated dependencies [a90dca6] + - @ai-sdk/gateway@1.1.0-beta.14 + +## 5.1.0-beta.19 + +### Patch Changes + +- aa0515c: feat(ai): move Agent to stable +- e7d9b00: feat(agent): add optional name property to agent +- b1aeea7: feat(ai): set default stopWhen on Agent to stepCountIs(20) + +## 5.1.0-beta.18 + +### Patch Changes + +- 0adc679: feat(provider): shared spec v3 +- 9b8d17e: fix(agent): move provider options to main agent config +- Updated dependencies + - @ai-sdk/provider-utils@3.1.0-beta.6 + - @ai-sdk/provider@2.1.0-beta.4 + - @ai-sdk/gateway@1.1.0-beta.13 + +## 5.1.0-beta.17 + +### Patch Changes + +- Updated dependencies [e6bfe91] + - @ai-sdk/gateway@1.1.0-beta.12 + +## 5.1.0-beta.16 + +### Patch Changes + +- 14ca35d: feat: add support for v2 specs +- Updated dependencies [636e614] + - @ai-sdk/gateway@1.1.0-beta.11 + +## 5.1.0-beta.15 + +### Patch Changes + +- Updated dependencies [9f6149e] + - @ai-sdk/gateway@1.1.0-beta.10 + +## 5.1.0-beta.14 + +### Patch Changes + +- 7c3c216: fixed docs and exported NoSpeechGeneratedError +- 8dac895: feat: `LanguageModelV3` +- e0d1ea9: fix(ai): align logic of text-end with reasoning-end +- 10c1322: fix: moved dependency `@ai-sdk/test-server` to devDependencies +- Updated dependencies [8dac895] + - @ai-sdk/provider-utils@3.1.0-beta.5 + - @ai-sdk/provider@2.1.0-beta.3 + - @ai-sdk/gateway@1.1.0-beta.9 + +## 5.1.0-beta.13 + +### Patch Changes + +- 1c2a4c1: fix(ai): remove outdated jsdoc param descriptions + +## 5.1.0-beta.12 + +### Patch Changes + +- Updated dependencies [c823faf] + - @ai-sdk/gateway@1.1.0-beta.8 + +## 5.1.0-beta.11 + +### Patch Changes + +- 4616b86: chore: update zod peer depenedency version +- Updated dependencies [4616b86] + - @ai-sdk/provider-utils@3.1.0-beta.4 + - @ai-sdk/gateway@1.1.0-beta.7 + +## 5.1.0-beta.10 + +### Patch Changes + +- 8c98371: Extend addToolResult to support error results + +## 5.1.0-beta.9 + +### Patch Changes + +- ed329cb: feat: `Provider-V3` +- 177b475: fix(ai): download files when intermediate file cannot be downloaded +- 522f6b8: feat: `ImageModelV3` +- Updated dependencies + - @ai-sdk/gateway@1.1.0-beta.6 + - @ai-sdk/provider@2.1.0-beta.2 + - @ai-sdk/provider-utils@3.1.0-beta.3 + +## 5.1.0-beta.8 + +### Patch Changes + +- 7eca093: fix(ai): update `uiMessageChunkSchema` to satisfy the `UIMessageChunk` type + +## 5.1.0-beta.7 + +### Patch Changes + +- 5a4e732: Export `parseJsonEventStream` and `uiMessageChunkSchema` from "ai" package + +## 5.1.0-beta.6 + +### Patch Changes + +- 0c4822d: feat: `EmbeddingModelV3` +- Updated dependencies + - @ai-sdk/gateway@1.1.0-beta.5 + - @ai-sdk/provider@2.1.0-beta.1 + - @ai-sdk/provider-utils@3.1.0-beta.2 + +## 5.1.0-beta.5 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/gateway@1.1.0-beta.4 + +## 5.1.0-beta.4 + +### Patch Changes + +- Updated dependencies [ea9ca31] + - @ai-sdk/gateway@1.1.0-beta.3 + +## 5.1.0-beta.3 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/gateway@1.1.0-beta.2 + +## 5.1.0-beta.2 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/test-server@1.0.0-beta.0 + - @ai-sdk/provider-utils@3.1.0-beta.1 + - @ai-sdk/gateway@1.1.0-beta.1 + +## 5.1.0-beta.1 + +### Patch Changes + +- a7f6f81: Add safeValidateUIMessages utility to validate UI messages without throwing, returning a success/failure result object like Zod’s safeParse + +## 5.1.0-beta.0 + +### Minor Changes + +- 78928cb: release: start 5.1 beta + +### Patch Changes + +- Updated dependencies [78928cb] + - @ai-sdk/gateway@1.1.0-beta.0 + - @ai-sdk/provider@2.1.0-beta.0 + - @ai-sdk/provider-utils@3.1.0-beta.0 + +## 5.0.45 + +### Patch Changes + +- 76024fc: fix(ai): fix static tool call and result detection when dynamic is undefined +- 93d8b60: fix(ai): do not filter zero-length text parts that have provider options +- d8eb31f: fix(ai): fix webp image detection from base64 + +## 5.0.44 + +### Patch Changes + +- Updated dependencies [f49f924] + - @ai-sdk/gateway@1.0.23 + +## 5.0.43 + +### Patch Changes + +- 0294b58: feat(ai): set `ai`, `@ai-sdk/provider-utils`, and runtime in `user-agent` header +- Updated dependencies [0294b58] + - @ai-sdk/provider-utils@3.0.9 + - @ai-sdk/gateway@1.0.22 + +## 5.0.42 + +### Patch Changes + +- de5c066: fix(ai): forwarded providerExecuted flag in validateUIMessages + +## 5.0.41 + +### Patch Changes + +- cd91e4b: fix(ai): use correct type for reasoning outputs + +## 5.0.40 + +### Patch Changes + +- Updated dependencies [4ee3719] + - @ai-sdk/gateway@1.0.21 + +## 5.0.39 + +### Patch Changes + +- a0a725f: feat (ai): export createGateway + +## 5.0.38 + +### Patch Changes + +- Updated dependencies [350a328] + - @ai-sdk/gateway@1.0.20 + +## 5.0.37 + +### Patch Changes + +- d6785d7: feat (ai): add tool and agent helpers + +## 5.0.36 + +### Patch Changes + +- ccc2ded: feat (ai): export gateway provider + +## 5.0.35 + +### Patch Changes + +- 99c946a: export missing type + +## 5.0.34 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/gateway@1.0.19 + +## 5.0.33 + +### Patch Changes + +- Updated dependencies [5d59a8c] + - @ai-sdk/gateway@1.0.18 + +## 5.0.32 + +### Patch Changes + +- Updated dependencies [b6005cd] + - @ai-sdk/gateway@1.0.17 + +## 5.0.31 + +### Patch Changes + +- Updated dependencies [99964ed] + - @ai-sdk/provider-utils@3.0.8 + - @ai-sdk/gateway@1.0.16 + +## 5.0.30 + +### Patch Changes + +- 7fcc6be: feat(ai): throw InvalidArgumentError when messages is not provided + +## 5.0.29 + +### Patch Changes + +- e0e9449: feat(ui): sent isAbort, isDisconnect, isError in useChat onFinish callback + +## 5.0.28 + +### Patch Changes + +- 4b81e7d: fix(ai): remove vitest dependency from test exports +- d68a4f2: feat(ai): log warnings + +## 5.0.27 + +### Patch Changes + +- ca40fac: feat(ai): support custom download functions (experimental) + +## 5.0.26 + +### Patch Changes + +- 33cf848: feat(ai): pass messages to `useChat({ onFinish })` +- Updated dependencies + - @ai-sdk/gateway@1.0.15 + +## 5.0.25 + +### Patch Changes + +- ca65923: fix(ai): remove use of `expect()` from production code +- Updated dependencies [886e7cd] + - @ai-sdk/provider-utils@3.0.7 + - @ai-sdk/gateway@1.0.14 + +## 5.0.24 + +### Patch Changes + +- f8f3682: fix: call onFinish when stream is cancelled in toUIMessageStream + + Previously, onFinish was only called on normal stream completion. Now it's also called when the reader is cancelled (e.g., browser close, navigation), ensuring partial messages are persisted. + +- Updated dependencies + - @ai-sdk/provider-utils@3.0.6 + - @ai-sdk/gateway@1.0.13 + +## 5.0.23 + +### Patch Changes + +- 5099b3d: fix(ai): make `chat.addToolResult()` compatible with dynamic tool calls +- 7a2bf8d: fix(ai): support loop breaking behavior in async iterable stream +- Updated dependencies + - @ai-sdk/gateway@1.0.12 + +## 5.0.22 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/gateway@1.0.11 + +## 5.0.21 + +### Patch Changes + +- 581abea: fix(ai): call abort callback when stream is aborted during tool execution +- 3c178ec: feat(ai): improved type checking for prompt/messages input +- Updated dependencies [0857788] + - @ai-sdk/provider-utils@3.0.5 + - @ai-sdk/gateway@1.0.10 + +## 5.0.20 + +### Patch Changes + +- 8a87693: fix(ai) Make sure warnings promise in streamObject is resolved and properly collects and passes warnings + +## 5.0.19 + +### Patch Changes + +- 8da6e9c: fix(ai): use parsed tool input if possible when validation fails + +## 5.0.18 + +### Patch Changes + +- Updated dependencies [8b96f99] + - @ai-sdk/gateway@1.0.9 + +## 5.0.17 + +### Patch Changes + +- 4176ecb: feat(ai): add reasoning text to generateObject result +- 20f23f9: feat(ai): export LanguageModelMiddleware type + +## 5.0.16 + +### Patch Changes + +- Updated dependencies [68751f9] + - @ai-sdk/provider-utils@3.0.4 + - @ai-sdk/gateway@1.0.8 + +## 5.0.15 + +### Patch Changes + +- ca4f68f: feat(ai): add validateUIMessages function +- Updated dependencies [28a4006] + - @ai-sdk/gateway@1.0.7 + +## 5.0.14 + +### Patch Changes + +- 7729e32: fix(ai): expand mp3 detection to support all mpeg frame headers + +## 5.0.13 + +### Patch Changes + +- a7b2e66: Added providerOptions to agent stream and generate calls +- 9bed210: ### `extractReasoningMiddleware()`: delay sending `text-start` chunk to prevent rendering final text before reasoning + + When wrapping a text stream in `extractReasoningMiddleware()`, delay queing the `text-start` chunk until either `reasoning-start` chunk was queued or the first `text-delta` chunk is about to be queued, whichever comes first. + + https://github.com/vercel/ai/pull/8036 + +## 5.0.12 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/gateway@1.0.6 + - @ai-sdk/provider-utils@3.0.3 + +## 5.0.11 + +### Patch Changes + +- 38ac190: feat(ai): preliminary tool results +- e3a63cb: fix(ai): streamText promises reject when stream has errors +- Updated dependencies + - @ai-sdk/provider-utils@3.0.2 + - @ai-sdk/gateway@1.0.5 + +## 5.0.10 + +### Patch Changes + +- 63a5dc5: fix(ai): convert user message text/file part provider metadata in convertToModelMessages + +## 5.0.9 + +### Patch Changes + +- afd5c2a: fix(ai): preserve filename for file parts in convertToModelMessages + +## 5.0.8 + +### Patch Changes + +- Updated dependencies [35f93ce] + - @ai-sdk/gateway@1.0.4 + +## 5.0.7 + +### Patch Changes + +- 8e72304: fix (ai): handle invalid tool calls + +## 5.0.6 + +### Patch Changes + +- d983eee: feat(ai): allow passing model string for embeddings + +## 5.0.5 + +### Patch Changes + +- Updated dependencies [893aed6] + - @ai-sdk/gateway@1.0.3 + +## 5.0.4 + +### Patch Changes + +- Updated dependencies [444df49] + - @ai-sdk/gateway@1.0.2 + +## 5.0.3 + +### Patch Changes + +- 90d212f: feat (ai): add experimental tool call context +- Updated dependencies + - @ai-sdk/gateway@1.0.1 + - @ai-sdk/provider-utils@3.0.1 + +## 5.0.2 + +### Patch Changes + +- 401d73e: fix (ai): support dynamic tool calls in lastAssistantMessageIsCompleteWithToolCalls +- 69fde99: Set status to ready when reconnect stream is null + +## 5.0.1 + +### Patch Changes + +- 4d0c108: fix(ai/ui): convert provider metadata for system messages to model messages + +## 5.0.0 + +### Major Changes + +- e1cbf8a: chore(@ai-sdk/rsc): extract to separate package +- a847c3e: chore: rename reasoning to reasoningText etc +- 13fef90: chore (ai): remove automatic conversion of UI messages to model messages +- d964901: - remove setting temperature to `0` by default + - remove `null` option from `DefaultSettingsMiddleware` + - remove setting defaults for `temperature` and `stopSequences` in `ai` to enable middleware changes +- 0a710d8: feat (ui): typed tool parts in ui messages +- 9ad0484: feat (ai): automatic tool execution error handling +- 63f9e9b: chore (provider,ai): tools have input/output instead of args,result +- ab7ccef: chore (ai): change source ui message parts to source-url +- d5f588f: AI SDK 5 +- ec78cdc: chore (ai): remove "data" UIMessage role +- 6a83f7d: refactoring (ai): restructure message metadata transfer +- db345da: chore (ai): remove exports of internal ui functions +- 496bbc1: chore (ui): inline/remove ChatRequest type +- 72d7d72: chore (ai): stable activeTools +- 40acf9b: feat (ui): introduce ChatStore and ChatTransport +- 98f25e5: chore (ui): remove managed chat inputs +- 2d03e19: chore (ai): remove StreamCallbacks.onCompletion +- da70d79: chore (ai): remove getUIText helper +- c60f895: chore (ai): remove useChat keepLastMessageOnError +- 0560977: chore (ai): improve consistency of generate text result, stream text result, and step result +- 9477ebb: chore (ui): remove useAssistant hook (**breaking change**) +- 1f55c21: chore (ai): send reasoning to the client by default +- e7dc6c7: chore (ai): remove onResponse callback +- 8b86e99: chore (ai): replace `Message` with `UIMessage` +- 04d5063: chore (ai): rename default provider global to AI_SDK_DEFAULT_PROVIDER +- 319b989: chore (ai): remove content from ui messages +- 14c9410: chore: refactor file towards source pattern (spec) +- a34eb39: chore (ai): remove `data` and `allowEmptySubmit` from `ChatRequestOptions` +- f04fb4a: chore (ai): replace useChat attachments with file ui parts +- f7e8bf4: chore (ai): flatten ui message stream parts +- 257224b: chore (ai): separate TextStreamChatTransport +- fd1924b: chore (ai): remove redundant `mimeType` property +- 2524fc7: chore (ai): remove ui message toolInvocations property +- 6fba4c7: chore (ai): remove deprecated experimental_providerMetadata +- b4b4bb2: chore (ui): rename experimental_resume to resumeStream +- 441d042: chore (ui): data stream protocol v2 with SSEs +- ef256ed: chore (ai): refactor and use chatstore in svelte +- 516be5b: ### Move Image Model Settings into generate options + + Image Models no longer have settings. Instead, `maxImagesPerCall` can be passed directly to `generateImage()`. All other image settings can be passed to `providerOptions[provider]`. + + Before + + ```js + await generateImage({ + model: luma.image("photon-flash-1", { + maxImagesPerCall: 5, + pollIntervalMillis: 500, + }), + prompt, + n: 10, + }); + ``` + + After + + ```js + await generateImage({ + model: luma.image("photon-flash-1"), + prompt, + n: 10, + maxImagesPerCall: 5, + providerOptions: { + luma: { pollIntervalMillis: 5 }, + }, + }); + ``` + + Pull Request: https://github.com/vercel/ai/pull/6180 + +- a662dea: chore (ai): remove sendExtraMessageFields +- d884051: feat (ai): simplify default provider setup +- e8324c5: feat (ai): add args callbacks to tools +- fafc3f2: chore (ai): change file to parts to use urls instead of data +- 1ed0287: chore (ai): stable sendStart/sendFinish options +- c7710a9: chore (ai): rename DataStreamToSSETransformStream to JsonToSseTransformStream +- bfbfc4c: feat (ai): streamText/generateText: totalUsage contains usage for all steps. usage is for a single step. +- 9ae327d: chore (ui): replace chat store concept with chat instances +- 9315076: chore (ai): rename continueUntil to stopWhen. Rename maxSteps stop condition to stepCountIs. +- 247ee0c: chore (ai): remove steps from tool invocation ui parts +- 109c0ac: chore (ai): rename id to chatId (in post request, resume request, and useChat) +- 954aa73: feat (ui): extended regenerate support +- 33eb499: feat (ai): inject message id in createUIMessageStream +- 901df02: feat (ui): use UI_MESSAGE generic +- 4892798: chore (ai): always stream tool calls +- c25cbce: feat (ai): use console.error as default error handler for streamText and streamObject +- b33ed7a: chore (ai): rename DataStream* to UIMessage* +- ed675de: feat (ai): add ui data parts +- 7bb58d4: chore (ai): restructure prepareRequest +- ea7a7c9: feat (ui): UI message metadata +- 0463011: fix (ai): update source url stream part +- dcc549b: remove StreamTextResult.mergeIntoDataStream method + rename DataStreamOptions.getErrorMessage to onError + add pipeTextStreamToResponse function + add createTextStreamResponse function + change createDataStreamResponse function to accept a DataStream and not a DataStreamWriter + change pipeDataStreamToResponse function to accept a DataStream and not a DataStreamWriter + change pipeDataStreamToResponse function to have a single parameter +- 35fc02c: chore (ui): rename RequestOptions to CompletionRequestOptions +- 64f6d64: feat (ai): replace maxSteps with continueUntil (generateText) +- 175b868: chore (ai): rename reasoning UI parts 'reasoning' property to 'text' +- 60e2c56: feat (ai): restructure chat transports +- 765f1cd: chore (ai): remove deprecated useChat isLoading helper +- cb2b53a: chore (ai): refactor header preparation +- e244a78: chore (ai): remove StreamData and mergeStreams +- d306260: feat (ai): replace maxSteps with continueUntil (streamText) +- 4bfe9ec: chore (ai): remove ui message reasoning property +- 1766ede: chore: rename maxTokens to maxOutputTokens +- 2877a74: chore (ai): remove ui message data property +- 1409e13: chore (ai): remove experimental continueSteps +- b32e192: chore (ai): rename reasoning to reasoningText, rename reasoningDetails to reasoning (streamText, generateText) +- 92cb0a2: chore (ai): rename CoreMessage to ModelMessage +- 2b637d6: chore (ai): rename UIMessageStreamPart to UIMessageChunk + +### Minor Changes + +- b7eae2d: feat (core): Add finishReason field to NoObjectGeneratedError +- bcea599: feat (ai): add content to generateText result +- 48d675a: feat (ai): add content to streamText result +- c9ad635: feat (ai): add filename to file ui parts + +### Patch Changes + +- a571d6e: chore(provider-utils): move ToolResultContent to provider-utils +- de2d2ab: feat(ai): add provider and provider registry middleware functionality +- c22ad54: feat(smooth-stream): chunking callbacks +- d88455d: feat (ai): expose http chat transport type +- e7fcc86: feat (ai): introduce dynamic tools +- da1e6f0: feat (ui): add generics to ui message stream parts +- 48378b9: fix (ai): send null as tool output when tools return undefined +- 5d1e3ba: chore (ai): remove provider re-exports +- 93d53a1: chore (ai): remove cli +- e90d45d: chore (rsc): move HANGING_STREAM_WARNING_TIME constant into @ai-sdk/rsc package +- b32c141: feat (ai): add array support to stopWhen +- bc3109f: chore (ai): push stream-callbacks into langchain/llamaindex adapters +- 0d9583c: fix (ai): use user-provided media type when available +- 38ae5cc: feat (ai): export InferUIMessageChunk type +- 10b21eb: feat(cli): add ai command line interface +- 9e40cbe: Allow destructuring output and errorText on `ToolUIPart` type +- 6909543: feat (ai): support system parameter in Agent constructor +- 86cfc72: feat (ai): add ignoreIncompleteToolCalls option to convertToModelMessages +- 377bbcf: fix (ui): tool input can be undefined during input-streaming +- d8aeaef: feat(providers/fal): add transcribe +- ae77a99: chore (ai): rename text and reasoning chunks in streamText fullstream +- 4fef487: feat: support for zod v4 for schema validation + + All these methods now accept both a zod v4 and zod v3 schemas for validation: + + - `generateObject()` + - `streamObject()` + - `generateText()` + - `experimental_useObject()` from `@ai-sdk/react` + - `streamUI()` from `@ai-sdk/rsc` + +- b1e3abd: feat (ai): expose ui message stream headers +- 4f3e637: fix (ui): avoid caching globalThis.fetch in case it is patched by other libraries +- 14cb3be: chore(providers/llamaindex): extract to separate package +- 1f6ce57: feat (ai): infer tool call types in the `onToolCall` callback +- 16ccfb2: feat (ai): add readUIMessageStream helper +- 225f087: fix (ai/mcp): prevent mutation of customEnv +- ce1d1f3: feat (ai): export mock image, speech, and transcription models +- fc0380b: feat (ui): resolvable header, body, credentials in http chat transport +- 6622441: feat (ai): add static/dynamic toolCalls/toolResults helpers +- 4048ce3: fix (ai): add tests and examples for openai responses +- 6c42e56: feat (ai): validate ui stream data chunks +- bedb239: chore (ai): make ui stream parts value optional when it's not required +- 9b4d074: feat(streamObject): add enum support +- c8fce91: feat (ai): add experimental Agent abstraction +- 655cf3c: feat (ui): add onFinish to createUIMessageStream +- 3e10408: fix(utils/detect-mimetype): add support for detecting id3 tags +- d5ae088: feat (ui): add sendAutomaticallyWhen to Chat +- ced8eee: feat(ai): re-export zodSchema from main package +- c040e2f: fix (ui): inject generated response message id +- d3960e3: selectTelemetryAttributes more robustness +- faea29f: fix (provider/openai): multi-step reasoning with text +- 66af894: fix (ai): respect content order in toResponseMessages +- 332167b: chore (ai): move maxSteps into UseChatOptions +- 6b1c55c: feat (ai): introduce GLOBAL_DEFAULT_PROVIDER +- 5a975a4: feat (ui): update Chat tool result submission +- 507ac1d: fix (ui/react): update messages immediately with the submitted user message +- a166433: feat: add transcription with experimental_transcribe +- 26735b5: chore(embedding-model): add v2 interface +- c93a8bc: chore(ai): export AsyncIterableStream type from async-iterable-stream module +- 0d2c085: feat (ai): support string model ids through gateway +- 2b9bbcd: feat (ai): improve prompt validation error message +- a8c8bd5: feat(embed-many): respect supportsParallelCalls & concurrency +- 75c3396: fix (ai): handle errors in 2nd streamText doStream call +- cb9c9e4: remove deprecated `experimental_wrapLanguageModel` +- 9bf7291: chore(providers/openai): enable structuredOutputs by default & switch to provider option +- 9b0da33: fix (ai): do not send id with start unless specified +- 28ad69e: fix(react-native): support experimental_attachments without FileList global +- 0b78e17: chore(ai/generateObject): simplify function signature +- 20398f2: feat: ai sdk cli documentation + adjusted default model +- 66962ed: fix(packages): export node10 compatible types +- b71fe8d: fix(ai): remove jsondiffpatch dependency +- 7827a49: fix (ai/core): refactor `toResponseMessages` to filter out empty string/content +- bd8a36c: feat(embedding-model-v2/embedMany): add response body field +- d9209ca: fix (image-model): `specificationVersion: v1` -> `v2` +- b346545: feat (ai): add data ui part schemas +- 05d2819: feat: allow zod 4.x as peer dependency +- f2b041e: Fix custom `fetch` in HttpChatTransport +- 2a62513: Fix error thrown when emptying messages in onError or onFinish +- 143c55b: feat (ai): export Chat callback types +- 9301f86: refactor (image-model): rename `ImageModelV1` to `ImageModelV2` +- 904fa5e: feat (ai/core): add terminateOnError option to readUIMessageStream +- 0a87932: core (ai): change transcription model mimeType to mediaType +- 1675396: fix: avoid job executor deadlock when adding tool result +- 51f497d: feat (ai): step input message modification in prepareStep +- cee64b2: fix(otel): change back toolCall attributes of input/output back to args/result for compatibility +- f04ffe4: feat (ui): add onData callback to Chat +- bc24722: feat (ai): Add finishReason as a promise on StreamObjectResult to match StreamTextResult +- b6f9f3c: remove deprecated `CoreTool*` types +- 8aa9e20: feat: add speech with experimental_generateSpeech +- 4617fab: chore(embedding-models): remove remaining settings +- 8255639: ### Fix use with Google APIs + zod v4's `.literal()` schema + + Before [zod@3.25.49](https://github.com/colinhacks/zod/releases/tag/v3.25.49), requests to Google's APIs failed due to a missing `type` in the provided schema. The problem has been resolved for the `ai` SDK by bumping our `zod` peer dependencies to `^3.25.49`. + + pull request: https://github.com/vercel/ai/pull/6609 + +- f81c720: chore(ai): bundle dependencies in CLI binary +- cf9af6e: feat (ai): allow sync prepareStep +- ee38081: Add support for audio/webm to detect-media-type +- 2e4f9e4: feat (ai): improved error messages when using gateway +- 3e3b9df: fix (ai/mcp): better support for zero-argument MCP tools +- cda32ba: fix (ai): send `start` part in correct position in stream (streamText) +- 48a7606: feat (ai): support changing the system prompt in prepareSteps +- cb68df0: feat: add transcription and speech model support to provider registry +- db64cbe: fix (provider/openai): multi-step reasoning with tool calls +- 97c35c0: feat (ui): transient data parts +- 26695a3: feat (ui): add state for text and reasoning ui message parts +- 90ac328: fix (ui): tool part metadata support in ui messages +- 60132dd: fixed date formatting for updated mcp protocol version +- 4a1e0c8: fix(ai-cli): fix bundling and improve authentication error handling +- c6b64a7: feat (ai): allow async prepareRequest on HttpChatTransport +- fccf75c: update mcp protocol version +- 9121250: Expose provider metadata as an attribute on exported OTEL spans +- ea27cc6: chore (ai): use JSONValue definition from provider +- 90ca2b9: feat(ai): Record tool call errors on tool call spans recorded in `generateText` and `streamText`. +- 50f0362: fix (ai): fix experimental sendStart/sendFinish options in streamText +- 825e8d7: release alpha.5 +- 7d97ab6: release alpha.4 +- 0ff02bb: chore(provider-utils): move over jsonSchema +- 4f3776c: feat (ai): add InferUITools helper +- 9338f3e: fix (ai): throw error for v1 models +- 92c8e66: fix(ai/core): properly handle custom separator in provider registry +- 53569b8: feat (ai): add experimental repairText function to streamObject +- 82aa95d: fix (ai): merge data ui stream parts correctly +- e7d2ce3: feat: provider-executed tools +- add5ac1: feat (ai): make streamText toUIMessageStream async iterable +- 37a916d: feat (ai): add prepareSteps to streamText +- 30ac566: fix (ui): text message metadata support in ui messages +- 8026705: fix (core): send buffered text in smooth stream when stream parts change +- 9bd5ab5: feat (provider): add providerMetadata to ImageModelV2 interface (#5977) + + The `experimental_generateImage` method from the `ai` package now returnes revised prompts for OpenAI's image models. + + ```js + const prompt = "Santa Claus driving a Cadillac"; + + const { providerMetadata } = await experimental_generateImage({ + model: openai.image("dall-e-3"), + prompt, + }); + + const revisedPrompt = providerMetadata.openai.images[0]?.revisedPrompt; + + console.log({ + prompt, + revisedPrompt, + }); + ``` + +- ec5933d: chore (ai/mcp): add `assertCapability` method to experimental MCP client +- 09f41ac: fix (ui): add message metadata in Chat.sendMessage +- ff1c81a: feat (ai): add streamText onAbort callback +- af1d5a5: fix(ai): Unexpected reasoning-start event in extract reasoning middleware +- cb3b9c9: fix (ai): catch errors in ui message stream +- 86293e5: fix (ai): use correct generateMessageId in streamText toUIMessageStream +- d1a034f: feature: using Zod 4 for internal stuff +- fd65bc6: chore(embedding-model-v2): rename rawResponse to response +- d92b9a8: fix(ai): add support for MCP protocol version 2025-06-18 +- 102b066: fix (ai): fix invalid fetch call +- 142576e: feat (ui): support message replacement in chat via messageId param on sendMessage +- 84343eb: fix (ui): call sendAutomaticallyWhen with updated messages +- a76a62b: feat (ai): add experimental prepareStep callback to generateText +- 89ba235: fix (ui): support tool names with dash +- 8e31d46: feat (ai): export SourceDocumentUIPart +- bd398e4: fix (core): improve error handling in streamText's consumeStream method +- 88a8ee5: fix (ai): support abort during retry waits +- 205077b: fix: improve Zod compatibility +- d91b50d: chore(ui-utils): merge into ai package +- e4c8647: feat (ui): allow asynchronous onFinish in createUIMessageStream +- c808e4d: fix (ui): do not send changing assistant message ids when onFinish is provided +- e862b5b: feat (ai): allow sync tool.execute +- 395c85e: feat (ai): add consumeSseStream option to UI message stream responses +- 5bdff05: Removed deprecated `options.throwErrorForEmptyVectors` from `cosineSimilarity()`. Since `throwErrorForEmptyVectors` was the only option the entire `options` argument was removed. + + ```diff + - cosineSimilarity(vector1, vector2, options) + +cosineSimilarity(vector1, vector2) + ``` + +- 13b4f46: feat (ai): export experimental MCPClient and MCPClientConfig interfaces +- a4f3007: chore: remove ai/react +- 8e64e9c: feat (ai): allow using provider default temperature by specifying null +- b983b51: feat (ai): support model message array in prompt +- 56c232b: fix (ai): remove outdated sendStart jsdoc +- 7324c21: fix (ai/telemetry): Avoid JSON.stringify on Uint8Arrays for telemetry +- f10304b: feat(tool-calling): don't require the user to have to pass parameters +- dd5fd43: feat (ai): support dynamic tools in Chat onToolCall +- a753b3a: feat (provider/anthropic): cache control for tools +- 383cbfa: feat (ai): add isAborted to onFinish callback for ui message streams +- 27deb4d: feat (provider/gateway): Add providerMetadata to embeddings response +- 5f2b3d4: chore (ai): stable prepareStep +- 4c8f834: feat: automatically respect rate limit headers in retry logic + + Added automatic support for respecting rate limit headers (`retry-after-ms` and `retry-after`) in the SDK's retry logic. When these headers are present and contain reasonable values (0-60 seconds), the retry mechanism will use the server-specified delay instead of exponential backoff. This matches the behavior of Anthropic and OpenAI client SDKs and improves rate limit handling without requiring any API changes. + +- f2c7f19: feat (ui): add Chat.clearError() +- 7bd025b: fix (ai): fix sync tool execute with streamText +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0 + - @ai-sdk/provider@2.0.0 + - @ai-sdk/gateway@1.0.0 + +## 5.0.0-beta.34 + +### Patch Changes + +- 53569b8: feat (ai): add experimental repairText function to streamObject +- 88a8ee5: fix (ai): support abort during retry waits +- f2c7f19: feat (ui): add Chat.clearError() +- Updated dependencies + - @ai-sdk/gateway@1.0.0-beta.19 + - @ai-sdk/provider-utils@3.0.0-beta.10 + +## 5.0.0-beta.33 + +### Patch Changes + +- 48378b9: fix (ai): send null as tool output when tools return undefined +- 93d53a1: chore (ai): remove cli +- 27deb4d: feat (provider/gateway): Add providerMetadata to embeddings response +- Updated dependencies [27deb4d] + - @ai-sdk/gateway@1.0.0-beta.18 + - @ai-sdk/provider@2.0.0-beta.2 + - @ai-sdk/provider-utils@3.0.0-beta.9 + +## 5.0.0-beta.32 + +### Patch Changes + +- bc24722: feat (ai): Add finishReason as a promise on StreamObjectResult to match StreamTextResult +- 13b4f46: feat (ai): export experimental MCPClient and MCPClientConfig interfaces +- 56c232b: fix (ai): remove outdated sendStart jsdoc + +## 5.0.0-beta.31 + +### Patch Changes + +- 6622441: feat (ai): add static/dynamic toolCalls/toolResults helpers +- ced8eee: feat(ai): re-export zodSchema from main package +- cee64b2: fix(otel): change back toolCall attributes of input/output back to args/result for compatibility +- ee38081: Add support for audio/webm to detect-media-type +- dd5fd43: feat (ai): support dynamic tools in Chat onToolCall +- Updated dependencies [dd5fd43] + - @ai-sdk/provider-utils@3.0.0-beta.8 + - @ai-sdk/gateway@1.0.0-beta.17 + +## 5.0.0-beta.30 + +### Patch Changes + +- Updated dependencies [fedb55e] + - @ai-sdk/gateway@1.0.0-beta.16 + +## 5.0.0-beta.29 + +### Patch Changes + +- e7fcc86: feat (ai): introduce dynamic tools +- d92b9a8: fix(ai): add support for MCP protocol version 2025-06-18 +- Updated dependencies [e7fcc86] + - @ai-sdk/provider-utils@3.0.0-beta.7 + - @ai-sdk/gateway@1.0.0-beta.15 + +## 5.0.0-beta.28 + +### Patch Changes + +- 84343eb: fix (ui): call sendAutomaticallyWhen with updated messages +- a753b3a: feat (provider/anthropic): cache control for tools +- Updated dependencies [ac34802] + - @ai-sdk/provider-utils@3.0.0-beta.6 + - @ai-sdk/gateway@1.0.0-beta.14 + +## 5.0.0-beta.27 + +### Patch Changes + +- d5ae088: feat (ui): add sendAutomaticallyWhen to Chat +- Updated dependencies + - @ai-sdk/gateway@1.0.0-beta.13 + +## 5.0.0-beta.26 + +### Patch Changes + +- ae77a99: chore (ai): rename text and reasoning chunks in streamText fullstream +- 1f6ce57: feat (ai): infer tool call types in the `onToolCall` callback +- 5a975a4: feat (ui): update Chat tool result submission +- 2a62513: Fix error thrown when emptying messages in onError or onFinish +- 904fa5e: feat (ai/core): add terminateOnError option to readUIMessageStream +- f81c720: chore(ai): bundle dependencies in CLI binary +- Updated dependencies [70ebead] + - @ai-sdk/gateway@1.0.0-beta.12 + +## 5.0.0-beta.25 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/gateway@1.0.0-beta.11 + +## 5.0.0-beta.24 + +### Patch Changes + +- add5ac1: feat (ai): make streamText toUIMessageStream async iterable +- ff1c81a: feat (ai): add streamText onAbort callback +- e4c8647: feat (ui): allow asynchronous onFinish in createUIMessageStream +- 383cbfa: feat (ai): add isAborted to onFinish callback for ui message streams +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-beta.5 + - @ai-sdk/gateway@1.0.0-beta.10 + +## 5.0.0-beta.23 + +### Patch Changes + +- 89ba235: fix (ui): support tool names with dash + +## 5.0.0-beta.22 + +### Patch Changes + +- de2d2ab: feat(ai): add provider and provider registry middleware functionality +- 6c42e56: feat (ai): validate ui stream data chunks +- c93a8bc: chore(ai): export AsyncIterableStream type from async-iterable-stream module +- 20398f2: feat: ai sdk cli documentation + adjusted default model +- 86293e5: fix (ai): use correct generateMessageId in streamText toUIMessageStream +- 205077b: fix: improve Zod compatibility +- Updated dependencies [205077b] + - @ai-sdk/provider-utils@3.0.0-beta.4 + - @ai-sdk/gateway@1.0.0-beta.9 + +## 5.0.0-beta.21 + +### Patch Changes + +- 38ae5cc: feat (ai): export InferUIMessageChunk type +- faea29f: fix (provider/openai): multi-step reasoning with text +- 90ac328: fix (ui): tool part metadata support in ui messages +- 4a1e0c8: fix(ai-cli): fix bundling and improve authentication error handling +- 30ac566: fix (ui): text message metadata support in ui messages + +## 5.0.0-beta.20 + +### Patch Changes + +- 4c8f834: feat: automatically respect rate limit headers in retry logic + + Added automatic support for respecting rate limit headers (`retry-after-ms` and `retry-after`) in the SDK's retry logic. When these headers are present and contain reasonable values (0-60 seconds), the retry mechanism will use the server-specified delay instead of exponential backoff. This matches the behavior of Anthropic and OpenAI client SDKs and improves rate limit handling without requiring any API changes. + +## 5.0.0-beta.19 + +### Patch Changes + +- 10b21eb: feat(cli): add ai command line interface +- 75c3396: fix (ai): handle errors in 2nd streamText doStream call +- 05d2819: feat: allow zod 4.x as peer dependency +- db64cbe: fix (provider/openai): multi-step reasoning with tool calls +- Updated dependencies [05d2819] + - @ai-sdk/provider-utils@3.0.0-beta.3 + - @ai-sdk/gateway@1.0.0-beta.8 + +## 5.0.0-beta.18 + +### Patch Changes + +- d3960e3: selectTelemetryAttributes more robustness +- 9338f3e: fix (ai): throw error for v1 models + +## 5.0.0-beta.17 + +### Patch Changes + +- Updated dependencies [c190907] + - @ai-sdk/gateway@1.0.0-beta.7 + +## 5.0.0-beta.16 + +### Patch Changes + +- Updated dependencies [9e16bfd] + - @ai-sdk/gateway@1.0.0-beta.6 + +## 5.0.0-beta.15 + +### Patch Changes + +- 8e31d46: feat (ai): export SourceDocumentUIPart + +## 5.0.0-beta.14 + +### Patch Changes + +- Updated dependencies [30ab1de] + - @ai-sdk/gateway@1.0.0-beta.5 + +## 5.0.0-beta.13 + +### Patch Changes + +- 377bbcf: fix (ui): tool input can be undefined during input-streaming +- ce1d1f3: feat (ai): export mock image, speech, and transcription models +- c040e2f: fix (ui): inject generated response message id +- c808e4d: fix (ui): do not send changing assistant message ids when onFinish is provided + +## 5.0.0-beta.12 + +### Patch Changes + +- fc0380b: feat (ui): resolvable header, body, credentials in http chat transport +- 51f497d: feat (ai): step input message modification in prepareStep +- 4f3776c: feat (ai): add InferUITools helper + +## 5.0.0-beta.11 + +### Patch Changes + +- 9e40cbe: Allow destructuring output and errorText on `ToolUIPart` type + +## 5.0.0-beta.10 + +### Major Changes + +- 2b637d6: chore (ai): rename UIMessageStreamPart to UIMessageChunk + +### Patch Changes + +- 16ccfb2: feat (ai): add readUIMessageStream helper +- 90ca2b9: feat(ai): Record tool call errors on tool call spans recorded in `generateText` and `streamText`. +- af1d5a5: fix(ai): Unexpected reasoning-start event in extract reasoning middleware + +## 5.0.0-beta.9 + +### Patch Changes + +- 86cfc72: feat (ai): add ignoreIncompleteToolCalls option to convertToModelMessages + +## 5.0.0-beta.8 + +### Patch Changes + +- 6909543: feat (ai): support system parameter in Agent constructor +- c8fce91: feat (ai): add experimental Agent abstraction +- 9121250: Expose provider metadata as an attribute on exported OTEL spans +- Updated dependencies [97fedf9] + - @ai-sdk/gateway@1.0.0-beta.4 + +## 5.0.0-beta.7 + +### Patch Changes + +- 60132dd: fixed date formatting for updated mcp protocol version + +## 5.0.0-beta.6 + +### Patch Changes + +- 143c55b: feat (ai): export Chat callback types +- f04ffe4: feat (ui): add onData callback to Chat +- 97c35c0: feat (ui): transient data parts +- fccf75c: update mcp protocol version + +## 5.0.0-beta.5 + +### Patch Changes + +- 4f3e637: fix (ui): avoid caching globalThis.fetch in case it is patched by other libraries + +## 5.0.0-beta.4 + +### Patch Changes + +- 09f41ac: fix (ui): add message metadata in Chat.sendMessage + +## 5.0.0-beta.3 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/gateway@1.0.0-beta.3 + +## 5.0.0-beta.2 + +### Patch Changes + +- 0d9583c: fix (ai): use user-provided media type when available +- c6b64a7: feat (ai): allow async prepareRequest on HttpChatTransport +- cb3b9c9: fix (ai): catch errors in ui message stream +- d1a034f: feature: using Zod 4 for internal stuff +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-beta.2 + - @ai-sdk/gateway@1.0.0-beta.2 + +## 5.0.0-beta.1 + +### Major Changes + +- 9ad0484: feat (ai): automatic tool execution error handling + +### Patch Changes + +- d88455d: feat (ai): expose http chat transport type +- 4048ce3: fix (ai): add tests and examples for openai responses +- f2b041e: Fix custom `fetch` in HttpChatTransport +- cb68df0: feat: add transcription and speech model support to provider registry +- 26695a3: feat (ui): add state for text and reasoning ui message parts +- e7d2ce3: feat: provider-executed tools +- 102b066: fix (ai): fix invalid fetch call +- e862b5b: feat (ai): allow sync tool.execute +- 7bd025b: fix (ai): fix sync tool execute with streamText +- Updated dependencies + - @ai-sdk/provider@2.0.0-beta.1 + - @ai-sdk/provider-utils@3.0.0-beta.1 + - @ai-sdk/gateway@1.0.0-beta.1 + +## 5.0.0-alpha.15 + +### Major Changes + +- 04d5063: chore (ai): rename default provider global to AI_SDK_DEFAULT_PROVIDER +- b4b4bb2: chore (ui): rename experimental_resume to resumeStream +- d884051: feat (ai): simplify default provider setup +- 954aa73: feat (ui): extended regenerate support +- 60e2c56: feat (ai): restructure chat transports + +### Patch Changes + +- b1e3abd: feat (ai): expose ui message stream headers +- 142576e: feat (ui): support message replacement in chat via messageId param on sendMessage +- 395c85e: feat (ai): add consumeSseStream option to UI message stream responses +- Updated dependencies + - @ai-sdk/provider@2.0.0-alpha.15 + - @ai-sdk/provider-utils@3.0.0-alpha.15 + - @ai-sdk/gateway@1.0.0-alpha.15 + +## 5.0.0-alpha.14 + +### Major Changes + +- 63f9e9b: chore (provider,ai): tools have input/output instead of args,result + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-alpha.14 + - @ai-sdk/gateway@1.0.0-alpha.14 + - @ai-sdk/provider-utils@3.0.0-alpha.14 + +## 5.0.0-alpha.13 + +### Major Changes + +- 0a710d8: feat (ui): typed tool parts in ui messages +- 6a83f7d: refactoring (ai): restructure message metadata transfer +- 1f55c21: chore (ai): send reasoning to the client by default +- 33eb499: feat (ai): inject message id in createUIMessageStream +- 901df02: feat (ui): use UI_MESSAGE generic + +### Patch Changes + +- Updated dependencies [68ecf2f] + - @ai-sdk/provider@2.0.0-alpha.13 + - @ai-sdk/gateway@1.0.0-alpha.13 + - @ai-sdk/provider-utils@3.0.0-alpha.13 + +## 5.0.0-alpha.12 + +### Major Changes + +- 4892798: chore (ai): always stream tool calls + +### Patch Changes + +- da1e6f0: feat (ui): add generics to ui message stream parts +- Updated dependencies [e2aceaf] + - @ai-sdk/gateway@1.0.0-alpha.12 + - @ai-sdk/provider@2.0.0-alpha.12 + - @ai-sdk/provider-utils@3.0.0-alpha.12 + +## 5.0.0-alpha.11 + +### Major Changes + +- e8324c5: feat (ai): add args callbacks to tools + +### Patch Changes + +- Updated dependencies [c1e6647] + - @ai-sdk/provider@2.0.0-alpha.11 + - @ai-sdk/gateway@1.0.0-alpha.11 + - @ai-sdk/provider-utils@3.0.0-alpha.11 + +## 5.0.0-alpha.10 + +### Major Changes + +- 98f25e5: chore (ui): remove managed chat inputs +- 7bb58d4: chore (ai): restructure prepareRequest + +### Patch Changes + +- Updated dependencies [c4df419] + - @ai-sdk/provider@2.0.0-alpha.10 + - @ai-sdk/gateway@1.0.0-alpha.10 + - @ai-sdk/provider-utils@3.0.0-alpha.10 + +## 5.0.0-alpha.9 + +### Major Changes + +- 9ae327d: chore (ui): replace chat store concept with chat instances + +### Patch Changes + +- 8255639: ### Fix use with Google APIs + zod v4's `.literal()` schema + + Before [zod@3.25.49](https://github.com/colinhacks/zod/releases/tag/v3.25.49), requests to Google's APIs failed due to a missing `type` in the provided schema. The problem has been resolved for the `ai` SDK by bumping our `zod` peer dependencies to `^3.25.49`. + + pull request: https://github.com/vercel/ai/pull/6609 + +- Updated dependencies + - @ai-sdk/gateway@1.0.0-alpha.9 + - @ai-sdk/provider@2.0.0-alpha.9 + - @ai-sdk/provider-utils@3.0.0-alpha.9 + +## 5.0.0-alpha.8 + +### Major Changes + +- c25cbce: feat (ai): use console.error as default error handler for streamText and streamObject + +### Patch Changes + +- 4fef487: feat: support for zod v4 for schema validation + + All these methods now accept both a zod v4 and zod v3 schemas for validation: + + - `generateObject()` + - `streamObject()` + - `generateText()` + - `experimental_useObject()` from `@ai-sdk/react` + - `streamUI()` from `@ai-sdk/rsc` + +- 6b1c55c: feat (ai): introduce GLOBAL_DEFAULT_PROVIDER +- 2e4f9e4: feat (ai): improved error messages when using gateway +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-alpha.8 + - @ai-sdk/provider@2.0.0-alpha.8 + - @ai-sdk/gateway@1.0.0-alpha.8 + +## 5.0.0-alpha.7 + +### Major Changes + +- db345da: chore (ai): remove exports of internal ui functions +- 247ee0c: chore (ai): remove steps from tool invocation ui parts + +### Patch Changes + +- 9b0da33: fix (ai): do not send id with start unless specified +- Updated dependencies [5c56081] + - @ai-sdk/provider@2.0.0-alpha.7 + - @ai-sdk/gateway@1.0.0-alpha.7 + - @ai-sdk/provider-utils@3.0.0-alpha.7 + +## 5.0.0-alpha.6 + +### Patch Changes + +- 0d2c085: feat (ai): support string model ids through gateway +- 48a7606: feat (ai): support changing the system prompt in prepareSteps +- Updated dependencies + - @ai-sdk/provider@2.0.0-alpha.6 + - @ai-sdk/gateway@1.0.0-alpha.6 + - @ai-sdk/provider-utils@3.0.0-alpha.6 + +## 5.0.0-alpha.5 + +### Major Changes + +- ef256ed: chore (ai): refactor and use chatstore in svelte +- 1ed0287: chore (ai): stable sendStart/sendFinish options + +### Patch Changes + +- 655cf3c: feat (ui): add onFinish to createUIMessageStream +- 1675396: fix: avoid job executor deadlock when adding tool result +- cf9af6e: feat (ai): allow sync prepareStep +- 825e8d7: release alpha.5 +- 7324c21: fix (ai/telemetry): Avoid JSON.stringify on Uint8Arrays for telemetry + +## 5.0.0-alpha.4 + +### Major Changes + +- 72d7d72: chore (ai): stable activeTools +- 9315076: chore (ai): rename continueUntil to stopWhen. Rename maxSteps stop condition to stepCountIs. + +### Patch Changes + +- b32c141: feat (ai): add array support to stopWhen +- 7d97ab6: release alpha.4 +- 37a916d: feat (ai): add prepareSteps to streamText +- 5f2b3d4: chore (ai): stable prepareStep +- Updated dependencies [dc714f3] + - @ai-sdk/provider@2.0.0-alpha.4 + - @ai-sdk/provider-utils@3.0.0-alpha.4 + +## 5.0.0-alpha.3 + +### Major Changes + +- ab7ccef: chore (ai): change source ui message parts to source-url +- 257224b: chore (ai): separate TextStreamChatTransport +- 0463011: fix (ai): update source url stream part +- d306260: feat (ai): replace maxSteps with continueUntil (streamText) + +### Patch Changes + +- Updated dependencies [6b98118] + - @ai-sdk/provider@2.0.0-alpha.3 + - @ai-sdk/provider-utils@3.0.0-alpha.3 + +## 5.0.0-alpha.2 + +### Patch Changes + +- 82aa95d: fix (ai): merge data ui stream parts correctly +- Updated dependencies [26535e0] + - @ai-sdk/provider@2.0.0-alpha.2 + - @ai-sdk/provider-utils@3.0.0-alpha.2 + +## 5.0.0-alpha.1 + +### Major Changes + +- 109c0ac: chore (ai): rename id to chatId (in post request, resume request, and useChat) + +### Patch Changes + +- b346545: feat (ai): add data ui part schemas +- Updated dependencies [3f2f00c] + - @ai-sdk/provider@2.0.0-alpha.1 + - @ai-sdk/provider-utils@3.0.0-alpha.1 + +## 5.0.0-canary.24 + +### Major Changes + +- f7e8bf4: chore (ai): flatten ui message stream parts +- ed675de: feat (ai): add ui data parts +- 64f6d64: feat (ai): replace maxSteps with continueUntil (generateText) + +### Patch Changes + +- bedb239: chore (ai): make ui stream parts value optional when it's not required +- 507ac1d: fix (ui/react): update messages immediately with the submitted user message +- 2b9bbcd: feat (ai): improve prompt validation error message +- cda32ba: fix (ai): send `start` part in correct position in stream (streamText) +- 50f0362: fix (ai): fix experimental sendStart/sendFinish options in streamText +- Updated dependencies [faf8446] + - @ai-sdk/provider-utils@3.0.0-canary.19 + +## 5.0.0-canary.23 + +### Major Changes + +- 40acf9b: feat (ui): introduce ChatStore and ChatTransport + +### Patch Changes + +- Updated dependencies [40acf9b] + - @ai-sdk/provider-utils@3.0.0-canary.18 + +## 5.0.0-canary.22 + +### Major Changes + +- e7dc6c7: chore (ai): remove onResponse callback +- a34eb39: chore (ai): remove `data` and `allowEmptySubmit` from `ChatRequestOptions` +- b33ed7a: chore (ai): rename DataStream* to UIMessage* +- 765f1cd: chore (ai): remove deprecated useChat isLoading helper + +## 5.0.0-canary.21 + +### Major Changes + +- d964901: - remove setting temperature to `0` by default + - remove `null` option from `DefaultSettingsMiddleware` + - remove setting defaults for `temperature` and `stopSequences` in `ai` to enable middleware changes +- 0560977: chore (ai): improve consistency of generate text result, stream text result, and step result +- 516be5b: ### Move Image Model Settings into generate options + + Image Models no longer have settings. Instead, `maxImagesPerCall` can be passed directly to `generateImage()`. All other image settings can be passed to `providerOptions[provider]`. + + Before + + ```js + await generateImage({ + model: luma.image("photon-flash-1", { + maxImagesPerCall: 5, + pollIntervalMillis: 500, + }), + prompt, + n: 10, + }); + ``` + + After + + ```js + await generateImage({ + model: luma.image("photon-flash-1"), + prompt, + n: 10, + maxImagesPerCall: 5, + providerOptions: { + luma: { pollIntervalMillis: 5 }, + }, + }); + ``` + + Pull Request: https://github.com/vercel/ai/pull/6180 + +- bfbfc4c: feat (ai): streamText/generateText: totalUsage contains usage for all steps. usage is for a single step. +- ea7a7c9: feat (ui): UI message metadata +- 1409e13: chore (ai): remove experimental continueSteps + +### Patch Changes + +- 66af894: fix (ai): respect content order in toResponseMessages +- Updated dependencies [ea7a7c9] + - @ai-sdk/provider-utils@3.0.0-canary.17 + +## 5.0.0-canary.20 + +### Major Changes + +- 13fef90: chore (ai): remove automatic conversion of UI messages to model messages +- 496bbc1: chore (ui): inline/remove ChatRequest type +- da70d79: chore (ai): remove getUIText helper +- c7710a9: chore (ai): rename DataStreamToSSETransformStream to JsonToSseTransformStream +- 35fc02c: chore (ui): rename RequestOptions to CompletionRequestOptions +- b983b51: feat (ai): support model message array in prompt + +### Minor Changes + +- bcea599: feat (ai): add content to generateText result +- 48d675a: feat (ai): add content to streamText result + +### Patch Changes + +- e90d45d: chore (rsc): move HANGING_STREAM_WARNING_TIME constant into @ai-sdk/rsc package +- bc3109f: chore (ai): push stream-callbacks into langchain/llamaindex adapters +- Updated dependencies [87b828f] + - @ai-sdk/provider-utils@3.0.0-canary.16 + +## 5.0.0-canary.19 + +### Major Changes + +- 2d03e19: chore (ai): remove StreamCallbacks.onCompletion +- 319b989: chore (ai): remove content from ui messages +- 441d042: chore (ui): data stream protocol v2 with SSEs +- dcc549b: remove StreamTextResult.mergeIntoDataStream method + rename DataStreamOptions.getErrorMessage to onError + add pipeTextStreamToResponse function + add createTextStreamResponse function + change createDataStreamResponse function to accept a DataStream and not a DataStreamWriter + change pipeDataStreamToResponse function to accept a DataStream and not a DataStreamWriter + change pipeDataStreamToResponse function to have a single parameter +- cb2b53a: chore (ai): refactor header preparation +- e244a78: chore (ai): remove StreamData and mergeStreams + +## 5.0.0-canary.18 + +### Major Changes + +- c60f895: chore (ai): remove useChat keepLastMessageOnError +- a662dea: chore (ai): remove sendExtraMessageFields + +### Patch Changes + +- a571d6e: chore(provider-utils): move ToolResultContent to provider-utils +- 332167b: chore (ai): move maxSteps into UseChatOptions +- a8c8bd5: feat(embed-many): respect supportsParallelCalls & concurrency +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.15 + - @ai-sdk/provider@2.0.0-canary.14 + +## 5.0.0-canary.17 + +### Major Changes + +- f04fb4a: chore (ai): replace useChat attachments with file ui parts +- fd1924b: chore (ai): remove redundant `mimeType` property +- fafc3f2: chore (ai): change file to parts to use urls instead of data +- 92cb0a2: chore (ai): rename CoreMessage to ModelMessage + +### Minor Changes + +- c9ad635: feat (ai): add filename to file ui parts + +### Patch Changes + +- 9bd5ab5: feat (provider): add providerMetadata to ImageModelV2 interface (#5977) + + The `experimental_generateImage` method from the `ai` package now returnes revised prompts for OpenAI's image models. + + ```js + const prompt = "Santa Claus driving a Cadillac"; + + const { providerMetadata } = await experimental_generateImage({ + model: openai.image("dall-e-3"), + prompt, + }); + + const revisedPrompt = providerMetadata.openai.images[0]?.revisedPrompt; + + console.log({ + prompt, + revisedPrompt, + }); + ``` + +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.14 + - @ai-sdk/provider@2.0.0-canary.13 + +## 5.0.0-canary.16 + +### Major Changes + +- ec78cdc: chore (ai): remove "data" UIMessage role +- 8b86e99: chore (ai): replace `Message` with `UIMessage` +- 2524fc7: chore (ai): remove ui message toolInvocations property +- 175b868: chore (ai): rename reasoning UI parts 'reasoning' property to 'text' + +### Patch Changes + +- 9b4d074: feat(streamObject): add enum support +- 28ad69e: fix(react-native): support experimental_attachments without FileList global +- ec5933d: chore (ai/mcp): add `assertCapability` method to experimental MCP client + +## 5.0.0-canary.15 + +### Major Changes + +- 4bfe9ec: chore (ai): remove ui message reasoning property +- 2877a74: chore (ai): remove ui message data property + +### Patch Changes + +- d9209ca: fix (image-model): `specificationVersion: v1` -> `v2` +- ea27cc6: chore (ai): use JSONValue definition from provider +- 0ff02bb: chore(provider-utils): move over jsonSchema +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.12 + - @ai-sdk/provider-utils@3.0.0-canary.13 + +## 5.0.0-canary.14 + +### Patch Changes + +- 9bf7291: chore(providers/openai): enable structuredOutputs by default & switch to provider option +- 4617fab: chore(embedding-models): remove remaining settings +- a76a62b: feat (ai): add experimental prepareStep callback to generateText +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.11 + - @ai-sdk/provider-utils@3.0.0-canary.12 + +## 5.0.0-canary.13 + +### Patch Changes + +- 14cb3be: chore(providers/llamaindex): extract to separate package +- 66962ed: fix(packages): export node10 compatible types +- 9301f86: refactor (image-model): rename `ImageModelV1` to `ImageModelV2` +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.11 + - @ai-sdk/provider@2.0.0-canary.10 + +## 5.0.0-canary.12 + +### Patch Changes + +- Updated dependencies [e86be6f] + - @ai-sdk/provider@2.0.0-canary.9 + - @ai-sdk/provider-utils@3.0.0-canary.10 + +## 5.0.0-canary.11 + +### Patch Changes + +- 8e64e9c: feat (ai): allow using provider default temperature by specifying null +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.8 + - @ai-sdk/provider-utils@3.0.0-canary.9 + +## 5.0.0-canary.10 + +### Patch Changes + +- d8aeaef: feat(providers/fal): add transcribe +- 3e10408: fix(utils/detect-mimetype): add support for detecting id3 tags + +## 5.0.0-canary.9 + +### Major Changes + +- a847c3e: chore: rename reasoning to reasoningText etc +- b32e192: chore (ai): rename reasoning to reasoningText, rename reasoningDetails to reasoning (streamText, generateText) + +### Patch Changes + +- cb9c9e4: remove deprecated `experimental_wrapLanguageModel` +- 8aa9e20: feat: add speech with experimental_generateSpeech +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.8 + - @ai-sdk/provider@2.0.0-canary.7 + +## 5.0.0-canary.8 + +### Major Changes + +- 14c9410: chore: refactor file towards source pattern (spec) + +### Patch Changes + +- 5d1e3ba: chore (ai): remove provider re-exports +- 26735b5: chore(embedding-model): add v2 interface +- 7827a49: fix (ai/core): refactor `toResponseMessages` to filter out empty string/content +- bd8a36c: feat(embedding-model-v2/embedMany): add response body field +- b6f9f3c: remove deprecated `CoreTool*` types +- 92c8e66: fix(ai/core): properly handle custom separator in provider registry +- fd65bc6: chore(embedding-model-v2): rename rawResponse to response +- 5bdff05: Removed deprecated `options.throwErrorForEmptyVectors` from `cosineSimilarity()`. Since `throwErrorForEmptyVectors` was the only option the entire `options` argument was removed. + + ```diff + - cosineSimilarity(vector1, vector2, options) + +cosineSimilarity(vector1, vector2) + ``` + +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.6 + - @ai-sdk/provider-utils@3.0.0-canary.7 + +## 5.0.0-canary.7 + +### Major Changes + +- 6fba4c7: chore (ai): remove deprecated experimental_providerMetadata +- 1766ede: chore: rename maxTokens to maxOutputTokens + +### Patch Changes + +- 0b78e17: chore(ai/generateObject): simplify function signature +- 3e3b9df: fix (ai/mcp): better support for zero-argument MCP tools +- f10304b: feat(tool-calling): don't require the user to have to pass parameters +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.5 + - @ai-sdk/provider-utils@3.0.0-canary.6 + +## 5.0.0-canary.6 + +### Patch Changes + +- Updated dependencies [6f6bb89] + - @ai-sdk/provider@2.0.0-canary.4 + - @ai-sdk/provider-utils@3.0.0-canary.5 + +## 5.0.0-canary.5 + +### Patch Changes + +- b71fe8d: fix(ai): remove jsondiffpatch dependency +- d91b50d: chore(ui-utils): merge into ai package +- Updated dependencies [d1a1aa1] + - @ai-sdk/provider@2.0.0-canary.3 + - @ai-sdk/provider-utils@3.0.0-canary.4 + +## 5.0.0-canary.4 + +### Major Changes + +- e1cbf8a: chore(@ai-sdk/rsc): extract to separate package + +### Patch Changes + +- 225f087: fix (ai/mcp): prevent mutation of customEnv +- a166433: feat: add transcription with experimental_transcribe +- 0a87932: core (ai): change transcription model mimeType to mediaType +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.3 + - @ai-sdk/provider@2.0.0-canary.2 + - @ai-sdk/ui-utils@2.0.0-canary.3 + +## 5.0.0-canary.3 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider@2.0.0-canary.1 + - @ai-sdk/provider-utils@3.0.0-canary.2 + - @ai-sdk/ui-utils@2.0.0-canary.2 + +## 5.0.0-canary.2 + +### Patch Changes + +- bd398e4: fix (core): improve error handling in streamText's consumeStream method + +## 5.0.0-canary.1 + +### Minor Changes + +- b7eae2d: feat (core): Add finishReason field to NoObjectGeneratedError + +### Patch Changes + +- c22ad54: feat(smooth-stream): chunking callbacks +- a4f3007: chore: remove ai/react +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.1 + - @ai-sdk/ui-utils@2.0.0-canary.1 + +## 5.0.0-canary.0 + +### Major Changes + +- d5f588f: AI SDK 5 +- 9477ebb: chore (ui): remove useAssistant hook (**breaking change**) + +### Patch Changes + +- 8026705: fix (core): send buffered text in smooth stream when stream parts change +- Updated dependencies + - @ai-sdk/provider-utils@3.0.0-canary.0 + - @ai-sdk/ui-utils@2.0.0-canary.0 + - @ai-sdk/react@2.0.0-canary.0 + - @ai-sdk/provider@2.0.0-canary.0 + +## 4.2.10 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/react@1.2.5 + - @ai-sdk/provider-utils@2.2.3 + - @ai-sdk/ui-utils@1.2.4 + +## 4.2.9 + +### Patch Changes + +- Updated dependencies [b01120e] + - @ai-sdk/provider-utils@2.2.2 + - @ai-sdk/react@1.2.4 + - @ai-sdk/ui-utils@1.2.3 + +## 4.2.8 + +### Patch Changes + +- 65243ce: fix (ui): introduce step start parts +- Updated dependencies [65243ce] + - @ai-sdk/ui-utils@1.2.2 + - @ai-sdk/react@1.2.3 + +## 4.2.7 + +### Patch Changes + +- e14c066: fix (ai/core): convert user ui messages with only parts (no content) to core messages + +## 4.2.6 + +### Patch Changes + +- 625591b: feat (ai/core): auto-complete for provider registry +- 6a1506f: feat (ai/core): custom separator support for provider registry +- ea3d998: chore (ai/core): move provider registry to stable + +## 4.2.5 + +### Patch Changes + +- Updated dependencies [d92fa29] + - @ai-sdk/react@1.2.2 + +## 4.2.4 + +### Patch Changes + +- 3d6d96d: fix (ai/core): validate that messages are not empty + +## 4.2.3 + +### Patch Changes + +- 0b3bf29: fix (ai/core): custom env support for stdio MCP transport + +## 4.2.2 + +### Patch Changes + +- f10f0fa: fix (provider-utils): improve event source stream parsing performance +- Updated dependencies [f10f0fa] + - @ai-sdk/provider-utils@2.2.1 + - @ai-sdk/react@1.2.1 + - @ai-sdk/ui-utils@1.2.1 + +## 4.2.1 + +### Patch Changes + +- b796152: feat (ai/core): add headers to MCP SSE transport +- 06361d6: feat (ai/core): expose JSON RPC types (MCP) + +## 4.2.0 + +### Minor Changes + +- 5bc638d: AI SDK 4.2 + +### Patch Changes + +- Updated dependencies [5bc638d] + - @ai-sdk/provider@1.1.0 + - @ai-sdk/provider-utils@2.2.0 + - @ai-sdk/react@1.2.0 + - @ai-sdk/ui-utils@1.2.0 + +## 4.1.66 + +### Patch Changes + +- 5d0fc29: chore (ai): improve cosine similarity calculation + +## 4.1.65 + +### Patch Changes + +- 16c444f: fix (ai): expose ai/mcp-stdio + +## 4.1.64 + +### Patch Changes + +- Updated dependencies [d0c4659] + - @ai-sdk/provider-utils@2.1.15 + - @ai-sdk/react@1.1.25 + - @ai-sdk/ui-utils@1.1.21 + +## 4.1.63 + +### Patch Changes + +- 0bd5bc6: feat (ai): support model-generated files +- Updated dependencies [0bd5bc6] + - @ai-sdk/provider@1.0.12 + - @ai-sdk/provider-utils@2.1.14 + - @ai-sdk/ui-utils@1.1.20 + - @ai-sdk/react@1.1.24 + +## 4.1.62 + +### Patch Changes + +- c9ed3c4: feat: enable custom mcp transports + breaking change: remove internal stdio transport creation + +## 4.1.61 + +### Patch Changes + +- 2e1101a: feat (provider/openai): pdf input support +- Updated dependencies [2e1101a] + - @ai-sdk/provider@1.0.11 + - @ai-sdk/provider-utils@2.1.13 + - @ai-sdk/ui-utils@1.1.19 + - @ai-sdk/react@1.1.23 + +## 4.1.60 + +### Patch Changes + +- 0b8797f: feat (ai/core): expose response body for each generateText step + +## 4.1.59 + +### Patch Changes + +- dd18049: fix (ai/core): suppress next.js warnings for node.js specific code path + +## 4.1.58 + +### Patch Changes + +- e9897eb: fix (ai/core): move process access into functions and use globalThis + +## 4.1.57 + +### Patch Changes + +- 092fdaa: feat (ai/core): add defaultSettingsMiddleware + +## 4.1.56 + +### Patch Changes + +- 80be82b: feat (ai/core): add simulateStreamingMiddleware +- 8109a24: fix (ai/core): limit node imports to types where possible + +## 4.1.55 + +### Patch Changes + +- 1531959: feat (ai/core): add MCP client for using MCP tools +- Updated dependencies [1531959] + - @ai-sdk/provider-utils@2.1.12 + - @ai-sdk/react@1.1.22 + - @ai-sdk/ui-utils@1.1.18 + +## 4.1.54 + +### Patch Changes + +- ee1c787: fix (ai/core): correct spread apply order to fix extract reasoning middleware with generateText + +## 4.1.53 + +### Patch Changes + +- e1d3d42: feat (ai): expose raw response body in generateText and generateObject +- Updated dependencies [e1d3d42] + - @ai-sdk/provider@1.0.10 + - @ai-sdk/provider-utils@2.1.11 + - @ai-sdk/ui-utils@1.1.17 + - @ai-sdk/react@1.1.21 + +## 4.1.52 + +### Patch Changes + +- 5329a69: fix (ai/core): fix duplicated reasoning in streamText onFinish and messages + +## 4.1.51 + +### Patch Changes + +- 0cb2647: feat (ai/core): add streamText sendStart & sendFinish data stream options + +## 4.1.50 + +### Patch Changes + +- ae98f0d: fix (ai/core): forward providerOptions for text, image, and file parts + +## 4.1.49 + +### Patch Changes + +- dc027d3: fix (ai/core): add reasoning support to appendResponseMessages + +## 4.1.48 + +### Patch Changes + +- Updated dependencies [6255fbc] + - @ai-sdk/react@1.1.20 + +## 4.1.47 + +### Patch Changes + +- Updated dependencies [da5c734] + - @ai-sdk/react@1.1.19 + +## 4.1.46 + +### Patch Changes + +- ddf9740: feat (ai): add anthropic reasoning +- Updated dependencies [ddf9740] + - @ai-sdk/provider@1.0.9 + - @ai-sdk/ui-utils@1.1.16 + - @ai-sdk/provider-utils@2.1.10 + - @ai-sdk/react@1.1.18 + +## 4.1.45 + +### Patch Changes + +- 93bd5a0: feat (ai/ui): add writeSource to createDataStream + +## 4.1.44 + +### Patch Changes + +- f8e7df2: fix (ai/core): add `startWithReasoning` option to `extractReasoningMiddleware` + +## 4.1.43 + +### Patch Changes + +- ef2e23b: feat (ai/core): add experimental repairText function to generateObject + +## 4.1.42 + +### Patch Changes + +- Updated dependencies [2761f06] + - @ai-sdk/provider@1.0.8 + - @ai-sdk/provider-utils@2.1.9 + - @ai-sdk/ui-utils@1.1.15 + - @ai-sdk/react@1.1.17 + +## 4.1.41 + +### Patch Changes + +- Updated dependencies [60c3220] + - @ai-sdk/react@1.1.16 + +## 4.1.40 + +### Patch Changes + +- Updated dependencies [c43df41] + - @ai-sdk/react@1.1.15 + +## 4.1.39 + +### Patch Changes + +- 075a9a9: fix (ai): improve tsdoc on custom provider + +## 4.1.38 + +### Patch Changes + +- 4c9c194: chore (ai): add description to provider-defined tools for better accessibility +- 2e898b4: chore (ai): move mockId test helper into provider utils +- Updated dependencies [2e898b4] + - @ai-sdk/provider-utils@2.1.8 + - @ai-sdk/react@1.1.14 + - @ai-sdk/ui-utils@1.1.14 + +## 4.1.37 + +### Patch Changes + +- c1e10d1: chore: export UIMessage type + +## 4.1.36 + +### Patch Changes + +- Updated dependencies [3ff4ef8] + - @ai-sdk/provider-utils@2.1.7 + - @ai-sdk/react@1.1.13 + - @ai-sdk/ui-utils@1.1.13 + +## 4.1.35 + +### Patch Changes + +- 166e09e: feat (ai/ui): forward source parts to useChat +- Updated dependencies [166e09e] + - @ai-sdk/ui-utils@1.1.12 + - @ai-sdk/react@1.1.12 + +## 4.1.34 + +### Patch Changes + +- dc49119: chore: deprecate ai/react + +## 4.1.33 + +### Patch Changes + +- 74f0f0e: chore (ai/core): move providerMetadata to stable + +## 4.1.32 + +### Patch Changes + +- c128ca5: fix (ai/core): fix streamText onFinish messages with structured output + +## 4.1.31 + +### Patch Changes + +- b30b1cc: feat (ai/core): add onError callback to streamObject + +## 4.1.30 + +### Patch Changes + +- 4ee5b6f: fix (core): remove invalid providerOptions from streamObject onFinish callback + +## 4.1.29 + +### Patch Changes + +- 605de49: feat (ai/core): export callback types + +## 4.1.28 + +### Patch Changes + +- 6eb7fc4: feat (ai/core): url source support + +## 4.1.27 + +### Patch Changes + +- Updated dependencies [318b351] + - @ai-sdk/ui-utils@1.1.11 + - @ai-sdk/react@1.1.11 + +## 4.1.26 + +### Patch Changes + +- 34983d4: fix (ai/core): bind supportsUrl when creating wrapper + +## 4.1.25 + +### Patch Changes + +- 5a21310: fix (ai/core): use ai types on custom provider to prevent ts error + +## 4.1.24 + +### Patch Changes + +- 38142b8: feat (ai/core): introduce streamText consumeStream + +## 4.1.23 + +### Patch Changes + +- b08f7c1: fix (ai/core): suppress errors in textStream + +## 4.1.22 + +### Patch Changes + +- 2bec72a: feat (ai/core): add onError callback to streamText + +## 4.1.21 + +### Patch Changes + +- d387989: feat (ai/core): re-export zodSchema + +## 4.1.20 + +### Patch Changes + +- bcc61d4: feat (ui): introduce message parts for useChat +- Updated dependencies [bcc61d4] + - @ai-sdk/ui-utils@1.1.10 + - @ai-sdk/react@1.1.10 + +## 4.1.19 + +### Patch Changes + +- Updated dependencies [6b8cc14] + - @ai-sdk/ui-utils@1.1.9 + - @ai-sdk/react@1.1.9 + +## 4.1.18 + +### Patch Changes + +- 6a1acfe: fix (ai/core): revert '@internal' tag on function definitions due to build impacts + +## 4.1.17 + +### Patch Changes + +- 5af8cdb: fix (ai/core): support this reference in model.supportsUrl implementations + +## 4.1.16 + +### Patch Changes + +- 7e299a4: feat (ai/core): wrapLanguageModel can apply multiple middlewares + +## 4.1.15 + +### Patch Changes + +- d89c3b9: feat (provider): add image model support to provider specification +- d89c3b9: feat (core): type ahead for model ids with custom provider +- 08f54fc: chore (ai/core): move custom provider to stable +- Updated dependencies [d89c3b9] + - @ai-sdk/provider@1.0.7 + - @ai-sdk/provider-utils@2.1.6 + - @ai-sdk/ui-utils@1.1.8 + - @ai-sdk/react@1.1.8 + +## 4.1.14 + +### Patch Changes + +- ca89615: fix (ai/core): only append assistant response at the end when there is a final user message + +## 4.1.13 + +### Patch Changes + +- 999085e: feat (ai/core): add write function to DataStreamWriter + +## 4.1.12 + +### Patch Changes + +- 0d2d9bf: fix (ui): single assistant message with multiple tool steps +- Updated dependencies + - @ai-sdk/react@1.1.7 + - @ai-sdk/ui-utils@1.1.7 + +## 4.1.11 + +### Patch Changes + +- 4c58da5: chore (core): move providerOptions to stable + +## 4.1.10 + +### Patch Changes + +- bf2c9c6: feat (core): move middleware to stable + +## 4.1.9 + +### Patch Changes + +- 3a602ca: chore (core): rename CoreTool to Tool +- Updated dependencies [3a602ca] + - @ai-sdk/provider-utils@2.1.5 + - @ai-sdk/ui-utils@1.1.6 + - @ai-sdk/react@1.1.6 + +## 4.1.8 + +### Patch Changes + +- 92f5f36: feat (core): add extractReasoningMiddleware + +## 4.1.7 + +### Patch Changes + +- 066206e: feat (provider-utils): move delay to provider-utils from ai +- Updated dependencies [066206e] + - @ai-sdk/provider-utils@2.1.4 + - @ai-sdk/react@1.1.5 + - @ai-sdk/ui-utils@1.1.5 + +## 4.1.6 + +### Patch Changes + +- Updated dependencies [39e5c1f] + - @ai-sdk/provider-utils@2.1.3 + - @ai-sdk/react@1.1.4 + - @ai-sdk/ui-utils@1.1.4 + +## 4.1.5 + +### Patch Changes + +- 9ce598c: feat (ai/ui): add reasoning support to useChat +- Updated dependencies [9ce598c] + - @ai-sdk/ui-utils@1.1.3 + - @ai-sdk/react@1.1.3 + +## 4.1.4 + +### Patch Changes + +- caaad11: feat (ai/core): re-export languagemodelv1 types for middleware implementations +- caaad11: feat (ai/core): expose TelemetrySettings type + +## 4.1.3 + +### Patch Changes + +- 7f30a77: feat (core): export core message schemas +- 4298996: feat (core): add helper for merging single client message + +## 4.1.2 + +### Patch Changes + +- 3c5fafa: chore (ai/core): move streamText toolCallStreaming option to stable +- 3a58a2e: feat (ai/core): throw NoImageGeneratedError from generateImage when no predictions are returned. +- Updated dependencies + - @ai-sdk/provider-utils@2.1.2 + - @ai-sdk/react@1.1.2 + - @ai-sdk/provider@1.0.6 + - @ai-sdk/ui-utils@1.1.2 + +## 4.1.1 + +### Patch Changes + +- 0a699f1: feat: add reasoning token support +- Updated dependencies + - @ai-sdk/ui-utils@1.1.1 + - @ai-sdk/provider-utils@2.1.1 + - @ai-sdk/provider@1.0.5 + - @ai-sdk/react@1.1.1 + +## 4.1.0 + +### Minor Changes + +- 62ba5ad: release: AI SDK 4.1 + +### Patch Changes + +- Updated dependencies [62ba5ad] + - @ai-sdk/provider-utils@2.1.0 + - @ai-sdk/react@1.1.0 + - @ai-sdk/ui-utils@1.1.0 + +## 4.0.41 + +### Patch Changes + +- Updated dependencies [44f04d5] + - @ai-sdk/react@1.0.14 + +## 4.0.40 + +### Patch Changes + +- 33592d2: fix (ai/core): switch to json schema 7 target for zod to json schema conversion +- Updated dependencies [33592d2] + - @ai-sdk/ui-utils@1.0.12 + - @ai-sdk/react@1.0.13 + +## 4.0.39 + +### Patch Changes + +- 00114c5: feat: expose IDGenerator and createIdGenerator +- 00114c5: feat (ui): generate and forward message ids for response messages +- Updated dependencies + - @ai-sdk/provider-utils@2.0.8 + - @ai-sdk/ui-utils@1.0.11 + - @ai-sdk/react@1.0.12 + +## 4.0.38 + +### Patch Changes + +- 0118fa7: fix (ai/core): handle empty tool invocation array in convertToCoreMessages + +## 4.0.37 + +### Patch Changes + +- 8304ed8: feat (ai/core): Add option `throwErrorForEmptyVectors` to cosineSimilarity +- ed28182: feat (ai/ui): add appendResponseMessages helper + +## 4.0.36 + +### Patch Changes + +- Updated dependencies [37f4510] + - @ai-sdk/ui-utils@1.0.10 + - @ai-sdk/react@1.0.11 + +## 4.0.35 + +### Patch Changes + +- 3491f78: feat (ai/core): support multiple stream text transforms + +## 4.0.34 + +### Patch Changes + +- 2495973: feat (ai/core): use openai compatible mode for json schema conversion +- 2495973: fix (ai/core): duplicate instead of using reference in json schema +- Updated dependencies + - @ai-sdk/ui-utils@1.0.9 + - @ai-sdk/react@1.0.10 + +## 4.0.33 + +### Patch Changes + +- 5510ee7: feat (ai/core): add stopStream option to streamText transforms + +## 4.0.32 + +### Patch Changes + +- de66619: feat (ai/core): add tool call id to ToolExecution error + +## 4.0.31 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/provider-utils@2.0.7 + - @ai-sdk/react@1.0.9 + - @ai-sdk/ui-utils@1.0.8 + +## 4.0.30 + +### Patch Changes + +- e4ce80c: fix (ai/core): prevent onFinish from masking stream errors + +## 4.0.29 + +### Patch Changes + +- a92f5f6: feat (ai/core): generate many images with parallel model calls + +## 4.0.28 + +### Patch Changes + +- 19a2ce7: feat (ai/core): add aspectRatio and seed options to generateImage +- 6337688: feat: change image generation errors to warnings +- 8b422ea: feat (ai/core): add caching to generated images +- Updated dependencies + - @ai-sdk/provider@1.0.4 + - @ai-sdk/provider-utils@2.0.6 + - @ai-sdk/ui-utils@1.0.7 + - @ai-sdk/react@1.0.8 + +## 4.0.27 + +### Patch Changes + +- a56734f: feat (ai/core): export simulateReadableStream in ai package +- 9589601: feat (ai/core): support null delay in smoothStream +- e3cc23a: feat (ai/core): support regexp chunking pattern in smoothStream +- e463e73: feat (ai/core): support skipping delays in simulateReadableStream + +## 4.0.26 + +### Patch Changes + +- a8f3242: feat (ai/core): add line chunking mode to smoothStream + +## 4.0.25 + +### Patch Changes + +- 0823899: fix (ai/core): throw error when accessing output when no output is defined in generateText (breaking/experimental) + +## 4.0.24 + +### Patch Changes + +- ae0485b: feat (ai/core): add experimental output setting to streamText + +## 4.0.23 + +### Patch Changes + +- bc4cd19: feat (ai/core): consolidate whitespace in smooth stream + +## 4.0.22 + +### Patch Changes + +- Updated dependencies [5ed5e45] + - @ai-sdk/provider-utils@2.0.5 + - @ai-sdk/provider@1.0.3 + - @ai-sdk/react@1.0.7 + - @ai-sdk/ui-utils@1.0.6 + +## 4.0.21 + +### Patch Changes + +- a8669a2: fix (ai/core): prefer auto-detected image mimetype +- 6fb3e91: fix (ai/core): include type in generateText toolResults result property. + +## 4.0.20 + +### Patch Changes + +- da9d240: fix (ai/core): suppress errors caused by writing to closed stream +- 6f1bfde: fix (ai/core): invoke streamText tool call repair when tool cannot be found + +## 4.0.19 + +### Patch Changes + +- c3a6065: fix (ai/core): apply transform before callbacks and resolvables + +## 4.0.18 + +### Patch Changes + +- 304e6d3: feat (ai/core): standardize generateObject, streamObject, and output errors to NoObjectGeneratedError +- 304e6d3: feat (ai/core): add additional information to NoObjectGeneratedError + +## 4.0.17 + +### Patch Changes + +- 54bbf21: fix (ai/core): change streamText.experimental_transform signature to support tool type inference + +## 4.0.16 + +### Patch Changes + +- e3fac3f: fix (ai/core): change smoothStream default delay to 10ms + +## 4.0.15 + +### Patch Changes + +- cc16a83: feat (ai/core): add smoothStream helper +- cc16a83: feat (ai/core): add experimental transform option to streamText + +## 4.0.14 + +### Patch Changes + +- 09a9cab: feat (ai/core): add experimental generateImage function +- Updated dependencies [09a9cab] + - @ai-sdk/provider@1.0.2 + - @ai-sdk/provider-utils@2.0.4 + - @ai-sdk/ui-utils@1.0.5 + - @ai-sdk/react@1.0.6 + +## 4.0.13 + +### Patch Changes + +- 9f32213: feat (ai/core): add experimental tool call repair + +## 4.0.12 + +### Patch Changes + +- 5167bec: fix (ai/core): forward streamText errors as error parts +- 0984f0b: feat (ai/core): add ToolExecutionError type +- Updated dependencies [0984f0b] + - @ai-sdk/provider-utils@2.0.3 + - @ai-sdk/react@1.0.5 + - @ai-sdk/ui-utils@1.0.4 + +## 4.0.11 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/ui-utils@1.0.3 + - @ai-sdk/react@1.0.4 + +## 4.0.10 + +### Patch Changes + +- 913872d: fix (ai/core): track promise from async createDataStream.execute + +## 4.0.9 + +### Patch Changes + +- fda9695: feat (ai/core): reworked data stream management + +## 4.0.8 + +### Patch Changes + +- a803d76: feat (ai/core): pass toolCallId option into tool execute function + +## 4.0.7 + +### Patch Changes + +- 5b4f07b: fix (ai/core): change default error message for data streams to "An error occurred." + +## 4.0.6 + +### Patch Changes + +- fc18132: feat (ai/core): experimental output for generateText +- 2779f6d: fix (ai/core): do not send maxRetries into providers + +## 4.0.5 + +### Patch Changes + +- Updated dependencies [630ac31] + - @ai-sdk/react@1.0.3 + +## 4.0.4 + +### Patch Changes + +- 6ff6689: fix (ai): trigger onFinal when stream adapter finishes +- 6ff6689: chore (ai): deprecate onCompletion (stream callbacks) + +## 4.0.3 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/ui-utils@1.0.2 + - @ai-sdk/provider@1.0.1 + - @ai-sdk/react@1.0.2 + - @ai-sdk/provider-utils@2.0.2 + +## 4.0.2 + +### Patch Changes + +- Updated dependencies [c3ab5de] + - @ai-sdk/provider-utils@2.0.1 + - @ai-sdk/react@1.0.1 + - @ai-sdk/ui-utils@1.0.1 + +## 4.0.1 + +### Patch Changes + +- b117255: feat (ai/core): add messages to tool call options + +## 4.0.0 + +### Major Changes + +- 4e38b38: chore (ai): remove LanguageModelResponseMetadataWithHeaders type +- 8bf5756: chore: remove legacy function/tool calling +- f0cb69d: chore (ai/core): remove experimental function exports +- da8c609: chore (ai): remove Tokens RSC helper +- cbab571: chore (ai): remove ExperimentalXXXMessage types +- b469a7e: chore: remove isXXXError methods +- 54cb888: chore (ai): remove experimental_StreamData export +- 4d61295: chore (ai): remove streamToResponse and streamingTextResponse +- 9a3d741: chore (ai): remove ExperimentalTool export +- 064257d: chore (ai/core): rename simulateReadableStream values parameter to chunks +- 60e69ed: chore (ai/core): remove ai-stream related methods from streamText +- a4f8ce9: chore (ai): AssistantResponse cleanups +- d3ae4f6: chore (ui/react): remove useObject setInput helper +- 7264b0a: chore (ai): remove responseMessages property from streamText/generateText result +- b801982: chore (ai/core): remove init option from streamText result methods +- f68d7b1: chore (ai/core): streamObject returns result immediately (no Promise) +- 6090cea: chore (ai): remove rawResponse from generate/stream result objects +- 073f282: chore (ai): remove AIStream and related exports +- 1c58337: chore (ai): remove 2.x prompt helpers +- a40a93d: chore (ai/ui): remove vue, svelte, solid re-export and dependency +- a7ad35a: chore: remove legacy providers & rsc render +- c0ddc24: chore (ai): remove toJSON method from AI SDK errors +- 007cb81: chore (ai): change `streamText` warnings result to Promise +- effbce3: chore (ai): remove responseMessage from streamText onFinish callback +- 545d133: chore (ai): remove deprecated roundtrip settings from streamText / generateText +- 7e89ccb: chore: remove nanoid export +- f967199: chore (ai/core): streamText returns result immediately (no Promise) +- 62d08fd: chore (ai): remove TokenUsage, CompletionTokenUsage, and EmbeddingTokenUsage types +- e5d2ce8: chore (ai): remove deprecated provider registry exports +- 70ce742: chore (ai): remove experimental_continuationSteps option +- 2f09717: chore (ai): remove deprecated telemetry data +- 0827bf9: chore (ai): remove LangChain adapter `toAIStream` method + +### Patch Changes + +- dce4158: chore (dependencies): update eventsource-parser to 3.0.0 +- f0ec721: chore (ai): remove openai peer dependency +- f9bb30c: chore (ai): remove unnecessary dev dependencies +- b053413: chore (ui): refactorings & README update +- Updated dependencies + - @ai-sdk/react@1.0.0 + - @ai-sdk/ui-utils@1.0.0 + - @ai-sdk/provider-utils@2.0.0 + - @ai-sdk/provider@1.0.0 + +## 4.0.0-canary.13 + +### Major Changes + +- 064257d: chore (ai/core): rename simulateReadableStream values parameter to chunks + +### Patch Changes + +- Updated dependencies + - @ai-sdk/react@1.0.0-canary.9 + - @ai-sdk/ui-utils@1.0.0-canary.9 + +## 4.0.0-canary.12 + +### Patch Changes + +- b053413: chore (ui): refactorings & README update +- Updated dependencies [b053413] + - @ai-sdk/ui-utils@1.0.0-canary.8 + - @ai-sdk/react@1.0.0-canary.8 + +## 4.0.0-canary.11 + +### Major Changes + +- f68d7b1: chore (ai/core): streamObject returns result immediately (no Promise) +- f967199: chore (ai/core): streamText returns result immediately (no Promise) + +## 4.0.0-canary.10 + +### Major Changes + +- effbce3: chore (ai): remove responseMessage from streamText onFinish callback + +### Patch Changes + +- Updated dependencies [fe4f109] + - @ai-sdk/ui-utils@1.0.0-canary.7 + - @ai-sdk/react@1.0.0-canary.7 + +## 4.0.0-canary.9 + +### Patch Changes + +- f0ec721: chore (ai): remove openai peer dependency + +## 4.0.0-canary.8 + +### Major Changes + +- 007cb81: chore (ai): change `streamText` warnings result to Promise + +### Patch Changes + +- Updated dependencies [70f28f6] + - @ai-sdk/ui-utils@1.0.0-canary.6 + - @ai-sdk/react@1.0.0-canary.6 + +## 4.0.0-canary.7 + +### Major Changes + +- 4e38b38: chore (ai): remove LanguageModelResponseMetadataWithHeaders type +- 54cb888: chore (ai): remove experimental_StreamData export +- 9a3d741: chore (ai): remove ExperimentalTool export +- a4f8ce9: chore (ai): AssistantResponse cleanups +- 7264b0a: chore (ai): remove responseMessages property from streamText/generateText result +- 62d08fd: chore (ai): remove TokenUsage, CompletionTokenUsage, and EmbeddingTokenUsage types +- e5d2ce8: chore (ai): remove deprecated provider registry exports +- 70ce742: chore (ai): remove experimental_continuationSteps option +- 0827bf9: chore (ai): remove LangChain adapter `toAIStream` method + +## 4.0.0-canary.6 + +### Major Changes + +- b801982: chore (ai/core): remove init option from streamText result methods + +### Patch Changes + +- f9bb30c: chore (ai): remove unnecessary dev dependencies + +## 4.0.0-canary.5 + +### Major Changes + +- 4d61295: chore (ai): remove streamToResponse and streamingTextResponse +- d3ae4f6: chore (ui/react): remove useObject setInput helper +- 6090cea: chore (ai): remove rawResponse from generate/stream result objects +- 2f09717: chore (ai): remove deprecated telemetry data + +### Patch Changes + +- Updated dependencies + - @ai-sdk/ui-utils@1.0.0-canary.5 + - @ai-sdk/react@1.0.0-canary.5 + - @ai-sdk/provider-utils@2.0.0-canary.3 + +## 4.0.0-canary.4 + +### Major Changes + +- f0cb69d: chore (ai/core): remove experimental function exports +- da8c609: chore (ai): remove Tokens RSC helper +- cbab571: chore (ai): remove ExperimentalXXXMessage types +- 60e69ed: chore (ai/core): remove ai-stream related methods from streamText +- 073f282: chore (ai): remove AIStream and related exports +- 545d133: chore (ai): remove deprecated roundtrip settings from streamText / generateText + +### Patch Changes + +- dce4158: chore (dependencies): update eventsource-parser to 3.0.0 +- Updated dependencies + - @ai-sdk/provider-utils@2.0.0-canary.2 + - @ai-sdk/react@1.0.0-canary.4 + - @ai-sdk/ui-utils@1.0.0-canary.4 + +## 4.0.0-canary.3 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/react@1.0.0-canary.3 + - @ai-sdk/provider-utils@2.0.0-canary.1 + - @ai-sdk/ui-utils@1.0.0-canary.3 + +## 4.0.0-canary.2 + +### Major Changes + +- b469a7e: chore: remove isXXXError methods +- c0ddc24: chore (ai): remove toJSON method from AI SDK errors + +### Patch Changes + +- Updated dependencies + - @ai-sdk/react@1.0.0-canary.2 + - @ai-sdk/provider-utils@2.0.0-canary.0 + - @ai-sdk/provider@1.0.0-canary.0 + - @ai-sdk/ui-utils@1.0.0-canary.2 + +## 4.0.0-canary.1 + +### Major Changes + +- 8bf5756: chore: remove legacy function/tool calling + +### Patch Changes + +- 1c58337: chore (ai): remove 2.x prompt helpers +- Updated dependencies [8bf5756] + - @ai-sdk/ui-utils@1.0.0-canary.1 + - @ai-sdk/react@1.0.0-canary.1 + +## 4.0.0-canary.0 + +### Major Changes + +- a40a93d: chore (ai/ui): remove vue, svelte, solid re-export and dependency + +### Patch Changes + +- a7ad35a: chore: remove legacy providers & rsc render +- 7e89ccb: chore: remove nanoid export +- Updated dependencies + - @ai-sdk/react@1.0.0-canary.0 + - @ai-sdk/ui-utils@1.0.0-canary.0 + +## 3.4.33 + +### Patch Changes + +- ac380e3: fix (provider/anthropic): continuation mode with 3+ steps + +## 3.4.32 + +### Patch Changes + +- 6bb9e51: fix (ai/core): expose response.messages in streamText + +## 3.4.31 + +### Patch Changes + +- Updated dependencies [2dfb93e] + - @ai-sdk/react@0.0.70 + +## 3.4.30 + +### Patch Changes + +- Updated dependencies [a85c965] + - @ai-sdk/ui-utils@0.0.50 + - @ai-sdk/react@0.0.69 + - @ai-sdk/solid@0.0.54 + - @ai-sdk/svelte@0.0.57 + - @ai-sdk/vue@0.0.59 + +## 3.4.29 + +### Patch Changes + +- 54b56f7: feat (ai/core): send tool and tool choice telemetry data + +## 3.4.28 + +### Patch Changes + +- 29f1390: feat (ai/test): add simulateReadableStream helper + +## 3.4.27 + +### Patch Changes + +- fa772ae: feat (ai/core): automatically convert ui messages to core messages + +## 3.4.26 + +### Patch Changes + +- 57f39ea: feat (ai/core): support multi-modal tool results in convertToCoreMessages + +## 3.4.25 + +### Patch Changes + +- 6e0fa1c: fix (ai/core): wait for tool results to arrive before sending finish event + +## 3.4.24 + +### Patch Changes + +- d92fd9f: feat (ui/svelte): support Svelte 5 peer dependency +- Updated dependencies [d92fd9f] + - @ai-sdk/svelte@0.0.56 + +## 3.4.23 + +### Patch Changes + +- 8301e41: fix (ai/react): update React peer dependency version to allow rc releases. +- Updated dependencies [8301e41] + - @ai-sdk/react@0.0.68 + +## 3.4.22 + +### Patch Changes + +- Updated dependencies [3bf8da0] + - @ai-sdk/ui-utils@0.0.49 + - @ai-sdk/react@0.0.67 + - @ai-sdk/solid@0.0.53 + - @ai-sdk/svelte@0.0.55 + - @ai-sdk/vue@0.0.58 + +## 3.4.21 + +### Patch Changes + +- 3954471: (experimental) fix passing "experimental_toToolResultContent" into PoolResultPart + +## 3.4.20 + +### Patch Changes + +- aa98cdb: chore: more flexible dependency versioning +- 1486128: feat: add supportsUrl to language model specification +- 3b1b69a: feat: provider-defined tools +- 85b98da: revert fix (ai/core): handle tool calls without results in message conversion +- 7ceed77: feat (ai/core): expose response message for each step +- 811a317: feat (ai/core): multi-part tool results (incl. images) +- Updated dependencies + - @ai-sdk/provider-utils@1.0.22 + - @ai-sdk/provider@0.0.26 + - @ai-sdk/ui-utils@0.0.48 + - @ai-sdk/svelte@0.0.54 + - @ai-sdk/react@0.0.66 + - @ai-sdk/vue@0.0.57 + - @ai-sdk/solid@0.0.52 + +## 3.4.19 + +### Patch Changes + +- b9b0d7b: feat (ai): access raw request body +- Updated dependencies [b9b0d7b] + - @ai-sdk/provider@0.0.25 + - @ai-sdk/provider-utils@1.0.21 + - @ai-sdk/ui-utils@0.0.47 + - @ai-sdk/react@0.0.65 + - @ai-sdk/solid@0.0.51 + - @ai-sdk/svelte@0.0.53 + - @ai-sdk/vue@0.0.56 + +## 3.4.18 + +### Patch Changes + +- 95c67b4: fix (ai/core): handle tool calls without results in message conversion + +## 3.4.17 + +### Patch Changes + +- e4ff512: fix (core): prevent unnecessary input/output serialization when telemetry is not enabled + +## 3.4.16 + +### Patch Changes + +- 01dcc44: feat (ai/core): add experimental activeTools option to generateText and streamText + +## 3.4.15 + +### Patch Changes + +- Updated dependencies [98a3b08] + - @ai-sdk/react@0.0.64 + +## 3.4.14 + +### Patch Changes + +- e930f40: feat (ai/core): expose core tool result and tool call types + +## 3.4.13 + +### Patch Changes + +- fc39158: fix (ai/core): add abortSignal to tool helper function + +## 3.4.12 + +### Patch Changes + +- a23da5b: feat (ai/core): forward abort signal to tools + +## 3.4.11 + +### Patch Changes + +- caedcda: feat (ai/ui): add setData helper to useChat +- Updated dependencies [caedcda] + - @ai-sdk/svelte@0.0.52 + - @ai-sdk/react@0.0.63 + - @ai-sdk/solid@0.0.50 + - @ai-sdk/vue@0.0.55 + +## 3.4.10 + +### Patch Changes + +- 0b557d7: feat (ai/core): add tracer option to telemetry settings +- 44f6bc5: feat (ai/core): expose StepResult type + +## 3.4.9 + +### Patch Changes + +- d347538: fix (ai/core): export FilePart interface + +## 3.4.8 + +### Patch Changes + +- Updated dependencies [b5f577e] + - @ai-sdk/vue@0.0.54 + +## 3.4.7 + +### Patch Changes + +- db04700: feat (core): support converting attachments to file parts +- 988707c: feat (ai/core): automatically download files from urls + +## 3.4.6 + +### Patch Changes + +- d595d0d: feat (ai/core): file content parts +- Updated dependencies [d595d0d] + - @ai-sdk/provider@0.0.24 + - @ai-sdk/provider-utils@1.0.20 + - @ai-sdk/ui-utils@0.0.46 + - @ai-sdk/react@0.0.62 + - @ai-sdk/solid@0.0.49 + - @ai-sdk/svelte@0.0.51 + - @ai-sdk/vue@0.0.53 + +## 3.4.5 + +### Patch Changes + +- cd77c5d: feat (ai/core): add isContinued to steps +- Updated dependencies [cd77c5d] + - @ai-sdk/ui-utils@0.0.45 + - @ai-sdk/react@0.0.61 + - @ai-sdk/solid@0.0.48 + - @ai-sdk/svelte@0.0.50 + - @ai-sdk/vue@0.0.52 + +## 3.4.4 + +### Patch Changes + +- 4db074b: fix (ai/core): correct whitespace in generateText continueSteps +- 1297e1b: fix (ai/core): correct whitespace in streamText continueSteps + +## 3.4.3 + +### Patch Changes + +- b270ae3: feat (ai/core): streamText continueSteps (experimental) +- b270ae3: chore (ai/core): rename generateText continuationSteps to continueSteps + +## 3.4.2 + +### Patch Changes + +- e6c7e98: feat (ai/core): add continuationSteps to generateText + +## 3.4.1 + +### Patch Changes + +- Updated dependencies [7e7104f] + - @ai-sdk/react@0.0.60 + +## 3.4.0 + +### Minor Changes + +- c0cea03: release (ai): 3.4 + +## 3.3.44 + +### Patch Changes + +- Updated dependencies [d3933e0] + - @ai-sdk/vue@0.0.51 + +## 3.3.43 + +### Patch Changes + +- fea6bec: fix (ai/core): support tool calls without arguments + +## 3.3.42 + +### Patch Changes + +- de37aee: feat (ai): Add support for LlamaIndex + +## 3.3.41 + +### Patch Changes + +- Updated dependencies [692e265] + - @ai-sdk/vue@0.0.50 + +## 3.3.40 + +### Patch Changes + +- a91c308: feat (ai/core): add responseMessages to streamText + +## 3.3.39 + +### Patch Changes + +- 33cf3e1: feat (ai/core): add providerMetadata to StepResult +- 17ee757: feat (ai/core): add onStepFinish callback to generateText + +## 3.3.38 + +### Patch Changes + +- 83da52c: feat (ai/core): add onStepFinish callback to streamText + +## 3.3.37 + +### Patch Changes + +- Updated dependencies [273f696] + - @ai-sdk/provider-utils@1.0.19 + - @ai-sdk/react@0.0.59 + - @ai-sdk/solid@0.0.47 + - @ai-sdk/svelte@0.0.49 + - @ai-sdk/ui-utils@0.0.44 + - @ai-sdk/vue@0.0.49 + +## 3.3.36 + +### Patch Changes + +- a3882f5: feat (ai/core): add steps property to streamText result and onFinish callback +- 1f590ef: chore (ai): rename roundtrips to steps +- 7e82d36: fix (ai/core): pass topK to providers +- Updated dependencies + - @ai-sdk/react@0.0.58 + - @ai-sdk/ui-utils@0.0.43 + - @ai-sdk/solid@0.0.46 + - @ai-sdk/svelte@0.0.48 + - @ai-sdk/vue@0.0.48 + +## 3.3.35 + +### Patch Changes + +- 14210d5: feat (ai/core): add sendUsage information to streamText data stream methods +- Updated dependencies [14210d5] + - @ai-sdk/ui-utils@0.0.42 + - @ai-sdk/react@0.0.57 + - @ai-sdk/solid@0.0.45 + - @ai-sdk/svelte@0.0.47 + - @ai-sdk/vue@0.0.47 + +## 3.3.34 + +### Patch Changes + +- a0403d6: feat (react): support sending attachments using append +- 678449a: feat (ai/core): export test helpers +- ff22fac: fix (ai/rsc): streamUI onFinish is called when tool calls have finished +- Updated dependencies [a0403d6] + - @ai-sdk/react@0.0.56 + +## 3.3.33 + +### Patch Changes + +- cbddc83: fix (ai/core): filter out empty text parts + +## 3.3.32 + +### Patch Changes + +- ce7a4af: feat (ai/core): support providerMetadata in functions + +## 3.3.31 + +### Patch Changes + +- 561fd7e: feat (ai/core): add output: enum to generateObject + +## 3.3.30 + +### Patch Changes + +- 6ee1f8e: feat (ai/core): add toDataStream to streamText result + +## 3.3.29 + +### Patch Changes + +- 1e3dfd2: feat (ai/core): enhance pipeToData/TextStreamResponse methods + +## 3.3.28 + +### Patch Changes + +- db61c53: feat (ai/core): middleware support + +## 3.3.27 + +### Patch Changes + +- 03313cd: feat (ai): expose response id, response model, response timestamp in telemetry and api +- 3be7c1c: fix (provider/anthropic): support prompt caching on assistant messages +- Updated dependencies + - @ai-sdk/provider-utils@1.0.18 + - @ai-sdk/provider@0.0.23 + - @ai-sdk/react@0.0.55 + - @ai-sdk/solid@0.0.44 + - @ai-sdk/svelte@0.0.46 + - @ai-sdk/ui-utils@0.0.41 + - @ai-sdk/vue@0.0.46 + +## 3.3.26 + +### Patch Changes + +- Updated dependencies [4ab883f] + - @ai-sdk/react@0.0.54 + +## 3.3.25 + +### Patch Changes + +- 4f1530f: feat (ai/core): add OpenTelemetry Semantic Conventions for GenAI operations to v1.27.0 of standard +- dad775f: feat (ai/core): add finish event and avg output tokens per second (telemetry) + +## 3.3.24 + +### Patch Changes + +- d87a655: fix (ai/core): provide fallback when globalThis.performance is not available + +## 3.3.23 + +### Patch Changes + +- b55e6f7: fix (ai/core): streamObject text stream in array mode must not include elements: prefix. + +## 3.3.22 + +### Patch Changes + +- a5a56fd: fix (ai/core): only send roundtrip-finish event after async tool calls are done + +## 3.3.21 + +### Patch Changes + +- aa2dc58: feat (ai/core): add maxToolRoundtrips to streamText +- Updated dependencies [aa2dc58] + - @ai-sdk/ui-utils@0.0.40 + - @ai-sdk/react@0.0.53 + - @ai-sdk/solid@0.0.43 + - @ai-sdk/svelte@0.0.45 + - @ai-sdk/vue@0.0.45 + +## 3.3.20 + +### Patch Changes + +- 7807677: fix (rsc): Deep clone currentState in getMutableState() + +## 3.3.19 + +### Patch Changes + +- 7235de0: fix (ai/core): convertToCoreMessages accepts Message[] + +## 3.3.18 + +### Patch Changes + +- 9e3b5a5: feat (ai/core): add experimental_customProvider +- 26515cb: feat (ai/provider): introduce ProviderV1 specification +- Updated dependencies [26515cb] + - @ai-sdk/provider@0.0.22 + - @ai-sdk/provider-utils@1.0.17 + - @ai-sdk/ui-utils@0.0.39 + - @ai-sdk/react@0.0.52 + - @ai-sdk/solid@0.0.42 + - @ai-sdk/svelte@0.0.44 + - @ai-sdk/vue@0.0.44 + +## 3.3.17 + +### Patch Changes + +- d151349: feat (ai/core): array output for generateObject / streamObject +- Updated dependencies [d151349] + - @ai-sdk/ui-utils@0.0.38 + - @ai-sdk/react@0.0.51 + - @ai-sdk/solid@0.0.41 + - @ai-sdk/svelte@0.0.43 + - @ai-sdk/vue@0.0.43 + +## 3.3.16 + +### Patch Changes + +- 09f895f: feat (ai/core): no-schema output for generateObject / streamObject +- Updated dependencies [09f895f] + - @ai-sdk/provider-utils@1.0.16 + - @ai-sdk/react@0.0.50 + - @ai-sdk/solid@0.0.40 + - @ai-sdk/svelte@0.0.42 + - @ai-sdk/ui-utils@0.0.37 + - @ai-sdk/vue@0.0.42 + +## 3.3.15 + +### Patch Changes + +- b5a82b7: chore (ai): update zod-to-json-schema to 3.23.2 +- Updated dependencies [b5a82b7] + - @ai-sdk/ui-utils@0.0.36 + - @ai-sdk/react@0.0.49 + - @ai-sdk/solid@0.0.39 + - @ai-sdk/svelte@0.0.41 + - @ai-sdk/vue@0.0.41 + +## 3.3.14 + +### Patch Changes + +- Updated dependencies [d67fa9c] + - @ai-sdk/provider-utils@1.0.15 + - @ai-sdk/react@0.0.48 + - @ai-sdk/solid@0.0.38 + - @ai-sdk/svelte@0.0.40 + - @ai-sdk/ui-utils@0.0.35 + - @ai-sdk/vue@0.0.40 + +## 3.3.13 + +### Patch Changes + +- 412f943: fix (ai/core): make Buffer validation optional for environments without buffer + +## 3.3.12 + +### Patch Changes + +- f2c025e: feat (ai/core): prompt validation +- Updated dependencies [f2c025e] + - @ai-sdk/provider@0.0.21 + - @ai-sdk/provider-utils@1.0.14 + - @ai-sdk/ui-utils@0.0.34 + - @ai-sdk/react@0.0.47 + - @ai-sdk/solid@0.0.37 + - @ai-sdk/svelte@0.0.39 + - @ai-sdk/vue@0.0.39 + +## 3.3.11 + +### Patch Changes + +- 03eb0f4: feat (ai/core): add "ai.operationId" telemetry attribute +- 099db96: feat (ai/core): add msToFirstChunk telemetry data +- Updated dependencies [b6c1dee] + - @ai-sdk/react@0.0.46 + +## 3.3.10 + +### Patch Changes + +- Updated dependencies [04084a3] + - @ai-sdk/vue@0.0.38 + +## 3.3.9 + +### Patch Changes + +- 6ac355e: feat (provider/anthropic): add cache control support +- b56dee1: chore (ai): deprecate prompt helpers +- Updated dependencies [6ac355e] + - @ai-sdk/provider@0.0.20 + - @ai-sdk/provider-utils@1.0.13 + - @ai-sdk/ui-utils@0.0.33 + - @ai-sdk/react@0.0.45 + - @ai-sdk/solid@0.0.36 + - @ai-sdk/svelte@0.0.38 + - @ai-sdk/vue@0.0.37 + +## 3.3.8 + +### Patch Changes + +- Updated dependencies [dd712ac] + - @ai-sdk/provider-utils@1.0.12 + - @ai-sdk/ui-utils@0.0.32 + - @ai-sdk/react@0.0.44 + - @ai-sdk/solid@0.0.35 + - @ai-sdk/svelte@0.0.37 + - @ai-sdk/vue@0.0.36 + +## 3.3.7 + +### Patch Changes + +- eccbd8e: feat (ai/core): add onChunk callback to streamText +- Updated dependencies [dd4a0f5] + - @ai-sdk/provider@0.0.19 + - @ai-sdk/provider-utils@1.0.11 + - @ai-sdk/ui-utils@0.0.31 + - @ai-sdk/react@0.0.43 + - @ai-sdk/solid@0.0.34 + - @ai-sdk/svelte@0.0.36 + - @ai-sdk/vue@0.0.35 + +## 3.3.6 + +### Patch Changes + +- e9c891d: feat (ai/react): useObject supports non-Zod schemas +- 3719e8a: chore (ai/core): provider registry code improvements +- Updated dependencies + - @ai-sdk/ui-utils@0.0.30 + - @ai-sdk/react@0.0.42 + - @ai-sdk/provider-utils@1.0.10 + - @ai-sdk/provider@0.0.18 + - @ai-sdk/solid@0.0.33 + - @ai-sdk/svelte@0.0.35 + - @ai-sdk/vue@0.0.34 + +## 3.3.5 + +### Patch Changes + +- 9ada023: feat (ai/core): mask data stream error messages with streamText +- Updated dependencies [e5b58f3] + - @ai-sdk/ui-utils@0.0.29 + - @ai-sdk/react@0.0.41 + - @ai-sdk/solid@0.0.32 + - @ai-sdk/svelte@0.0.34 + - @ai-sdk/vue@0.0.33 + +## 3.3.4 + +### Patch Changes + +- 029af4c: feat (ai/core): support schema name & description in generateObject & streamObject +- 3806c0c: chore (ai/ui): increase stream data warning timeout to 15 seconds +- db0118a: feat (ai/core): export Schema type +- Updated dependencies [029af4c] + - @ai-sdk/provider@0.0.17 + - @ai-sdk/provider-utils@1.0.9 + - @ai-sdk/ui-utils@0.0.28 + - @ai-sdk/react@0.0.40 + - @ai-sdk/solid@0.0.31 + - @ai-sdk/svelte@0.0.33 + - @ai-sdk/vue@0.0.32 + +## 3.3.3 + +### Patch Changes + +- d58517b: feat (ai/openai): structured outputs +- Updated dependencies [d58517b] + - @ai-sdk/provider@0.0.16 + - @ai-sdk/provider-utils@1.0.8 + - @ai-sdk/ui-utils@0.0.27 + - @ai-sdk/react@0.0.39 + - @ai-sdk/solid@0.0.30 + - @ai-sdk/svelte@0.0.32 + - @ai-sdk/vue@0.0.31 + +## 3.3.2 + +### Patch Changes + +- Updated dependencies [96aed25] + - @ai-sdk/provider@0.0.15 + - @ai-sdk/provider-utils@1.0.7 + - @ai-sdk/ui-utils@0.0.26 + - @ai-sdk/react@0.0.38 + - @ai-sdk/solid@0.0.29 + - @ai-sdk/svelte@0.0.31 + - @ai-sdk/vue@0.0.30 + +## 3.3.1 + +### Patch Changes + +- 9614584: fix (ai/core): use Symbol.for +- 0762a22: feat (ai/core): support zod transformers in generateObject & streamObject +- Updated dependencies + - @ai-sdk/provider-utils@1.0.6 + - @ai-sdk/react@0.0.37 + - @ai-sdk/solid@0.0.28 + - @ai-sdk/svelte@0.0.30 + - @ai-sdk/ui-utils@0.0.25 + - @ai-sdk/vue@0.0.29 + +## 3.3.0 + +### Minor Changes + +- dbc3afb7: chore (ai): release AI SDK 3.3 + +### Patch Changes + +- b9827186: feat (ai/core): update operation.name telemetry attribute to include function id and detailed name + +## 3.2.45 + +### Patch Changes + +- Updated dependencies [5be25124] + - @ai-sdk/ui-utils@0.0.24 + - @ai-sdk/react@0.0.36 + - @ai-sdk/solid@0.0.27 + - @ai-sdk/svelte@0.0.29 + - @ai-sdk/vue@0.0.28 + +## 3.2.44 + +### Patch Changes + +- Updated dependencies [a147d040] + - @ai-sdk/react@0.0.35 + +## 3.2.43 + +### Patch Changes + +- Updated dependencies [b68fae4f] + - @ai-sdk/react@0.0.34 + +## 3.2.42 + +### Patch Changes + +- f63c99e7: feat (ai/core): record OpenTelemetry gen_ai attributes +- Updated dependencies [fea7b604] + - @ai-sdk/ui-utils@0.0.23 + - @ai-sdk/react@0.0.33 + - @ai-sdk/solid@0.0.26 + - @ai-sdk/svelte@0.0.28 + - @ai-sdk/vue@0.0.27 + +## 3.2.41 + +### Patch Changes + +- a12044c7: feat (ai/core): add recordInputs / recordOutputs setting to telemetry options +- Updated dependencies [1d93d716] + - @ai-sdk/ui-utils@0.0.22 + - @ai-sdk/react@0.0.32 + - @ai-sdk/solid@0.0.25 + - @ai-sdk/svelte@0.0.27 + - @ai-sdk/vue@0.0.26 + +## 3.2.40 + +### Patch Changes + +- f56b7e66: feat (ai/ui): add toDataStreamResponse to LangchainAdapter. + +## 3.2.39 + +### Patch Changes + +- b694f2f9: feat (ai/svelte): add tool calling support to useChat +- Updated dependencies [b694f2f9] + - @ai-sdk/svelte@0.0.26 + +## 3.2.38 + +### Patch Changes + +- 5c4b8cfc: chore (ai/core): rename ai stream methods to data stream (in streamText, LangChainAdapter). +- c450fcf7: feat (ui): invoke useChat onFinish with finishReason and tokens +- e4a1719f: chore (ai/ui): rename streamMode to streamProtocol +- 10158bf2: fix (ai/core): generateObject.doGenerate sets object telemetry attribute +- Updated dependencies + - @ai-sdk/ui-utils@0.0.21 + - @ai-sdk/svelte@0.0.25 + - @ai-sdk/react@0.0.31 + - @ai-sdk/solid@0.0.24 + - @ai-sdk/vue@0.0.25 + +## 3.2.37 + +### Patch Changes + +- b2bee4c5: fix (ai/ui): send data, body, headers in useChat().reload +- Updated dependencies [b2bee4c5] + - @ai-sdk/svelte@0.0.24 + - @ai-sdk/react@0.0.30 + - @ai-sdk/solid@0.0.23 + +## 3.2.36 + +### Patch Changes + +- a8d1c9e9: feat (ai/core): parallel image download +- cfa360a8: feat (ai/core): add telemetry support to embedMany function. +- 49808ca5: feat (ai/core): add telemetry to streamObject +- Updated dependencies [a8d1c9e9] + - @ai-sdk/provider-utils@1.0.5 + - @ai-sdk/provider@0.0.14 + - @ai-sdk/react@0.0.29 + - @ai-sdk/svelte@0.0.23 + - @ai-sdk/ui-utils@0.0.20 + - @ai-sdk/vue@0.0.24 + - @ai-sdk/solid@0.0.22 + +## 3.2.35 + +### Patch Changes + +- 1be014b7: feat (ai/core): add telemetry support for embed function. +- 4f88248f: feat (core): support json schema +- 0d545231: chore (ai/svelte): change sswr into optional peer dependency +- Updated dependencies [4f88248f] + - @ai-sdk/provider-utils@1.0.4 + - @ai-sdk/react@0.0.28 + - @ai-sdk/svelte@0.0.22 + - @ai-sdk/ui-utils@0.0.19 + - @ai-sdk/vue@0.0.23 + - @ai-sdk/solid@0.0.21 + +## 3.2.34 + +### Patch Changes + +- 2b9da0f0: feat (core): support stopSequences setting. +- a5b58845: feat (core): support topK setting +- 420f170f: chore (ai/core): use interfaces for core function results +- 13b27ec6: chore (ai/core): remove grammar mode +- 644f6582: feat (ai/core): add telemetry to generateObject +- Updated dependencies + - @ai-sdk/provider@0.0.13 + - @ai-sdk/provider-utils@1.0.3 + - @ai-sdk/react@0.0.27 + - @ai-sdk/svelte@0.0.21 + - @ai-sdk/ui-utils@0.0.18 + - @ai-sdk/solid@0.0.20 + - @ai-sdk/vue@0.0.22 + +## 3.2.33 + +### Patch Changes + +- 4b2c09d9: feat (ai/ui): add mutator function support to useChat / setMessages +- 281e7662: chore: add description to ai package +- Updated dependencies + - @ai-sdk/ui-utils@0.0.17 + - @ai-sdk/svelte@0.0.20 + - @ai-sdk/react@0.0.26 + - @ai-sdk/solid@0.0.19 + - @ai-sdk/vue@0.0.21 + +## 3.2.32 + +### Patch Changes + +- Updated dependencies [5b7b3bbe] + - @ai-sdk/ui-utils@0.0.16 + - @ai-sdk/react@0.0.25 + - @ai-sdk/solid@0.0.18 + - @ai-sdk/svelte@0.0.19 + - @ai-sdk/vue@0.0.20 + +## 3.2.31 + +### Patch Changes + +- b86af092: feat (ai/core): add langchain stream event v2 support to LangChainAdapter + +## 3.2.30 + +### Patch Changes + +- Updated dependencies [19c3d50f] + - @ai-sdk/react@0.0.24 + - @ai-sdk/vue@0.0.19 + +## 3.2.29 + +### Patch Changes + +- e710b388: fix (ai/core): race condition in mergeStreams +- 6078a690: feat (ai/core): introduce stream data support in toAIStreamResponse + +## 3.2.28 + +### Patch Changes + +- 68d1f78c: fix (ai/core): do not construct object promise in streamObject result until requested +- f0bc1e79: feat (ai/ui): add system message support to convertToCoreMessages +- 1f67fe49: feat (ai/ui): stream tool calls with streamText and useChat +- Updated dependencies [1f67fe49] + - @ai-sdk/ui-utils@0.0.15 + - @ai-sdk/react@0.0.23 + - @ai-sdk/solid@0.0.17 + - @ai-sdk/svelte@0.0.18 + - @ai-sdk/vue@0.0.18 + +## 3.2.27 + +### Patch Changes + +- 811f4493: fix (ai/core): generateText token usage is sum over all roundtrips + +## 3.2.26 + +### Patch Changes + +- 8f545ce9: fix (ai/core): forward request headers in generateObject and streamObject + +## 3.2.25 + +### Patch Changes + +- 99ddbb74: feat (ai/react): add experimental support for managing attachments to useChat +- Updated dependencies [99ddbb74] + - @ai-sdk/ui-utils@0.0.14 + - @ai-sdk/react@0.0.22 + - @ai-sdk/solid@0.0.16 + - @ai-sdk/svelte@0.0.17 + - @ai-sdk/vue@0.0.17 + +## 3.2.24 + +### Patch Changes + +- f041c056: feat (ai/core): add roundtrips property to generateText result + +## 3.2.23 + +### Patch Changes + +- a6cb2c8b: feat (ai/ui): add keepLastMessageOnError option to useChat +- Updated dependencies [a6cb2c8b] + - @ai-sdk/ui-utils@0.0.13 + - @ai-sdk/svelte@0.0.16 + - @ai-sdk/react@0.0.21 + - @ai-sdk/solid@0.0.15 + - @ai-sdk/vue@0.0.16 + +## 3.2.22 + +### Patch Changes + +- 53fccf1c: fix (ai/core): report error on controller +- dd0d854e: feat (ai/vue): add useAssistant +- Updated dependencies [dd0d854e] + - @ai-sdk/vue@0.0.15 + +## 3.2.21 + +### Patch Changes + +- 56bbc2a7: feat (ai/ui): set body and headers directly on options for handleSubmit and append +- Updated dependencies [56bbc2a7] + - @ai-sdk/ui-utils@0.0.12 + - @ai-sdk/svelte@0.0.15 + - @ai-sdk/react@0.0.20 + - @ai-sdk/solid@0.0.14 + - @ai-sdk/vue@0.0.14 + +## 3.2.20 + +### Patch Changes + +- 671331b6: feat (core): add experimental OpenTelemetry support for generateText and streamText + +## 3.2.19 + +### Patch Changes + +- b7290943: chore (ai/core): rename TokenUsage type to CompletionTokenUsage +- b7290943: feat (ai/core): add token usage to embed and embedMany +- Updated dependencies [b7290943] + - @ai-sdk/provider@0.0.12 + - @ai-sdk/provider-utils@1.0.2 + - @ai-sdk/react@0.0.19 + - @ai-sdk/svelte@0.0.14 + - @ai-sdk/ui-utils@0.0.11 + - @ai-sdk/solid@0.0.13 + - @ai-sdk/vue@0.0.13 + +## 3.2.18 + +### Patch Changes + +- Updated dependencies [70d18003] + - @ai-sdk/react@0.0.18 + +## 3.2.17 + +### Patch Changes + +- 3db90c3d: allow empty handleSubmit submissions for useChat +- abb22602: feat (ai): verify that system messages have string content +- 5c1f0bd3: fix unclosed streamable value console message +- Updated dependencies + - @ai-sdk/react@0.0.17 + - @ai-sdk/svelte@0.0.13 + - @ai-sdk/solid@0.0.12 + - @ai-sdk/vue@0.0.12 + - @ai-sdk/provider-utils@1.0.1 + - @ai-sdk/ui-utils@0.0.10 + +## 3.2.16 + +### Patch Changes + +- Updated dependencies [3f756a6b] + - @ai-sdk/react@0.0.16 + +## 3.2.15 + +### Patch Changes + +- 6c99581e: fix (ai/react): stop() on useObject does not throw error and clears isLoading +- Updated dependencies [6c99581e] + - @ai-sdk/react@0.0.15 + +## 3.2.14 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/react@0.0.14 + - @ai-sdk/ui-utils@0.0.9 + - @ai-sdk/solid@0.0.11 + - @ai-sdk/svelte@0.0.12 + - @ai-sdk/vue@0.0.11 + +## 3.2.13 + +### Patch Changes + +- d3100b9c: feat (ai/ui): support custom fetch function in useChat, useCompletion, useAssistant, useObject +- Updated dependencies [d3100b9c] + - @ai-sdk/ui-utils@0.0.8 + - @ai-sdk/svelte@0.0.11 + - @ai-sdk/react@0.0.13 + - @ai-sdk/solid@0.0.10 + - @ai-sdk/vue@0.0.10 + +## 3.2.12 + +### Patch Changes + +- 5edc6110: feat (ai/core): add custom request header support +- Updated dependencies + - @ai-sdk/provider@0.0.11 + - @ai-sdk/provider-utils@1.0.0 + - @ai-sdk/react@0.0.12 + - @ai-sdk/svelte@0.0.10 + - @ai-sdk/ui-utils@0.0.7 + - @ai-sdk/solid@0.0.9 + - @ai-sdk/vue@0.0.9 + +## 3.2.11 + +### Patch Changes + +- c908f741: chore (ui/solid): update solidjs useChat and useCompletion to feature parity with React +- 827ef450: feat (ai/ui): improve error handling in useAssistant +- Updated dependencies + - @ai-sdk/solid@0.0.8 + - @ai-sdk/svelte@0.0.9 + - @ai-sdk/react@0.0.11 + +## 3.2.10 + +### Patch Changes + +- Updated dependencies + - @ai-sdk/react@0.0.10 + +## 3.2.9 + +### Patch Changes + +- 82d9c8de: feat (ai/ui): make event in useAssistant submitMessage optional +- Updated dependencies + - @ai-sdk/svelte@0.0.8 + - @ai-sdk/react@0.0.9 + - @ai-sdk/vue@0.0.8 + +## 3.2.8 + +### Patch Changes + +- 54bf4083: feat (ai/react): control request body in useChat +- Updated dependencies [54bf4083] + - @ai-sdk/ui-utils@0.0.6 + - @ai-sdk/react@0.0.8 + - @ai-sdk/solid@0.0.7 + - @ai-sdk/svelte@0.0.7 + - @ai-sdk/vue@0.0.7 + +## 3.2.7 + +### Patch Changes + +- d42b8907: feat (ui): make event in handleSubmit optional +- Updated dependencies [d42b8907] + - @ai-sdk/svelte@0.0.6 + - @ai-sdk/react@0.0.7 + - @ai-sdk/solid@0.0.6 + - @ai-sdk/vue@0.0.6 + +## 3.2.6 + +### Patch Changes + +- 74e28222: fix (ai/rsc): "could not find InternalStreamableUIClient" bug + +## 3.2.5 + +### Patch Changes + +- 4d426d0c: fix (ai): split provider and model ids correctly in the provider registry + +## 3.2.4 + +### Patch Changes + +- Updated dependencies [3cb103bc] + - @ai-sdk/react@0.0.6 + +## 3.2.3 + +### Patch Changes + +- 89b7552b: chore (ai): remove deprecation from ai/react imports, add experimental_useObject +- Updated dependencies [02f6a088] + - @ai-sdk/provider-utils@0.0.16 + - @ai-sdk/react@0.0.5 + - @ai-sdk/svelte@0.0.5 + - @ai-sdk/ui-utils@0.0.5 + - @ai-sdk/solid@0.0.5 + - @ai-sdk/vue@0.0.5 + +## 3.2.2 + +### Patch Changes + +- 0565cd72: feat (ai/core): add toJsonResponse to generateObject result. + +## 3.2.1 + +### Patch Changes + +- 008725ec: feat (ai): add textStream, toTextStreamResponse(), and pipeTextStreamToResponse() to streamObject +- 520fb2d5: feat (rsc): add streamUI onFinish callback +- Updated dependencies + - @ai-sdk/react@0.0.4 + - @ai-sdk/ui-utils@0.0.4 + - @ai-sdk/solid@0.0.4 + - @ai-sdk/svelte@0.0.4 + - @ai-sdk/vue@0.0.4 + +## 3.2.0 + +### Minor Changes + +- 85ef6d18: chore (ai): AI SDK 3.2 release + +### Patch Changes + +- b965dd2d: fix (core): pass settings correctly for generateObject and streamObject + +## 3.1.37 + +### Patch Changes + +- 85712895: chore (@ai-sdk/provider-utils): move test helper to provider utils +- Updated dependencies + - @ai-sdk/provider-utils@0.0.15 + - @ai-sdk/react@0.0.3 + - @ai-sdk/svelte@0.0.3 + - @ai-sdk/ui-utils@0.0.3 + - @ai-sdk/solid@0.0.3 + - @ai-sdk/vue@0.0.3 + +## 3.1.36 + +### Patch Changes + +- 4728c37f: feat (core): add text embedding model support to provider registry +- 8c49166e: chore (core): rename experimental_createModelRegistry to experimental_createProviderRegistry +- Updated dependencies [7910ae84] + - @ai-sdk/provider-utils@0.0.14 + - @ai-sdk/react@0.0.2 + - @ai-sdk/svelte@0.0.2 + - @ai-sdk/ui-utils@0.0.2 + - @ai-sdk/solid@0.0.2 + - @ai-sdk/vue@0.0.2 + +## 3.1.35 + +### Patch Changes + +- 06123501: feat (core): support https and data url strings in image parts + +## 3.1.34 + +### Patch Changes + +- d25566ac: feat (core): add cosineSimilarity helper function +- 87a5d27e: feat (core): introduce InvalidMessageRoleError. + +## 3.1.33 + +### Patch Changes + +- 6fb14b5d: chore (streams): deprecate nanoid export. +- 05536768: feat (core): add experimental model registry + +## 3.1.32 + +### Patch Changes + +- 3cabf078: fix(ai/rsc): Refactor streamable UI internal implementation + +## 3.1.31 + +### Patch Changes + +- 85f209a4: chore: extracted ui library support into separate modules +- 85f209a4: removed (streams): experimental_StreamingReactResponse was removed. Please use AI SDK RSC instead. +- Updated dependencies [85f209a4] + - @ai-sdk/ui-utils@0.0.1 + - @ai-sdk/svelte@0.0.1 + - @ai-sdk/react@0.0.1 + - @ai-sdk/solid@0.0.1 + - @ai-sdk/vue@0.0.1 + +## 3.1.30 + +### Patch Changes + +- fcf4323b: fix (core): filter out empty assistant text messages + +## 3.1.29 + +### Patch Changes + +- 28427d3e: feat (core): add streamObject onFinish callback + +## 3.1.28 + +### Patch Changes + +- 102ca22f: feat (core): add object promise to streamObject result +- Updated dependencies [102ca22f] + - @ai-sdk/provider@0.0.10 + - @ai-sdk/provider-utils@0.0.13 + +## 3.1.27 + +### Patch Changes + +- c9198d4d: feat (ui): send annotation and data fields in useChat when sendExtraMessageFields is true +- Updated dependencies + - @ai-sdk/provider@0.0.9 + - @ai-sdk/provider-utils@0.0.12 + +## 3.1.26 + +### Patch Changes + +- 5ee44cae: feat (provider): langchain StringOutputParser support + +## 3.1.25 + +### Patch Changes + +- ff281126: fix(ai/rsc): Remove extra reconcilation of streamUI + +## 3.1.24 + +### Patch Changes + +- 93cae126: fix(ai/rsc): Fix unsafe {} type in application code for StreamableValue +- 08b5c509: feat (core): add tokenUsage to streamObject result + +## 3.1.23 + +### Patch Changes + +- c03cafe6: chore (core, ui): rename maxAutomaticRoundtrips to maxToolRoundtrips + +## 3.1.22 + +### Patch Changes + +- 14bb8694: chore (ui): move maxAutomaticRoundtrips and addToolResult out of experimental + +## 3.1.21 + +### Patch Changes + +- 213f2411: fix (core,streams): support ResponseInit variants +- 09698bca: chore (streams): deprecate streaming helpers that have a provider replacement + +## 3.1.20 + +### Patch Changes + +- 0e1da476: feat (core): add maxAutomaticRoundtrips setting to generateText + +## 3.1.19 + +### Patch Changes + +- 9882d24b: fix (ui/svelte): send data to server +- 131bbd3e: fix (ui): remove console.log statements + +## 3.1.18 + +### Patch Changes + +- f9dee8ac: fix(ai/rsc): Fix types for createStreamableValue and createStreamableUI +- 1c0ebf8e: feat (core): add responseMessages to generateText result + +## 3.1.17 + +### Patch Changes + +- 92b993b7: ai/rsc: improve getAIState and getMutableAIState types +- 7de628e9: chore (ui): deprecate old function/tool call handling +- 7de628e9: feat (ui): add onToolCall handler to useChat + +## 3.1.16 + +### Patch Changes + +- f39c0dd2: feat (core, rsc): add toolChoice setting +- Updated dependencies [f39c0dd2] + - @ai-sdk/provider@0.0.8 + - @ai-sdk/provider-utils@0.0.11 + +## 3.1.15 + +### Patch Changes + +- 8e780288: feat (ai/core): add onFinish callback to streamText +- 8e780288: feat (ai/core): add text, toolCalls, and toolResults promises to StreamTextResult (matching the generateText result API with async methods) +- Updated dependencies [8e780288] + - @ai-sdk/provider@0.0.7 + - @ai-sdk/provider-utils@0.0.10 + +## 3.1.14 + +### Patch Changes + +- 6109c6a: feat (ai/react): add experimental_maxAutomaticRoundtrips to useChat + +## 3.1.13 + +### Patch Changes + +- 60117c9: dependencies (ai/ui): add React 18.3 and 19 support (peer dependency) +- Updated dependencies + - @ai-sdk/provider@0.0.6 + - @ai-sdk/provider-utils@0.0.9 + +## 3.1.12 + +### Patch Changes + +- ae05fb7: feat (ai/streams): add StreamData support to streamToResponse + +## 3.1.11 + +### Patch Changes + +- a085d42: fix (ai/ui): decouple StreamData chunks from LLM stream + +## 3.1.10 + +### Patch Changes + +- 3a21030: feat (ai/core): add embedMany function + +## 3.1.9 + +### Patch Changes + +- 18a9655: feat (ai/svelte): add useAssistant + +## 3.1.8 + +### Patch Changes + +- 0f6bc4e: feat (ai/core): add embed function +- Updated dependencies [0f6bc4e] + - @ai-sdk/provider@0.0.5 + - @ai-sdk/provider-utils@0.0.8 + +## 3.1.7 + +### Patch Changes + +- f617b97: feat (ai): support client/server tool calls with useChat and streamText + +## 3.1.6 + +### Patch Changes + +- 2e78acb: Deprecate StreamingReactResponse (use AI SDK RSC instead). +- 8439884: ai/rsc: make RSC streamable utils chainable +- 325ca55: feat (ai/core): improve image content part error message +- Updated dependencies [325ca55] + - @ai-sdk/provider@0.0.4 + - @ai-sdk/provider-utils@0.0.7 + +## 3.1.5 + +### Patch Changes + +- 5b01c13: feat (ai/core): add system message support in messages list + +## 3.1.4 + +### Patch Changes + +- ceb44bc: feat (ai/ui): add stop() helper to useAssistant (important: AssistantResponse now requires OpenAI SDK 4.42+) +- 37c9d4c: feat (ai/streams): add LangChainAdapter.toAIStream() + +## 3.1.3 + +### Patch Changes + +- 970a099: fix (ai/core): streamObject fixes partial json with empty objects correctly +- 1ac2390: feat (ai/core): add usage and finishReason to streamText result. +- Updated dependencies [276f22b] + - @ai-sdk/provider-utils@0.0.6 + +## 3.1.2 + +### Patch Changes + +- d1b1880: fix (ai/core): allow reading streams in streamText result multiple times + +## 3.1.1 + +### Patch Changes + +- 0f77132: ai/rsc: remove experimental\_ from streamUI + +## 3.1.0 + +### Minor Changes + +- 73356a9: Move AI Core functions out of experimental (streamText, generateText, streamObject, generateObject). + +## 3.0.35 + +### Patch Changes + +- 41d5736: ai/core: re-expose language model types. +- b4c68ec: ai/rsc: ReadableStream as provider for createStreamableValue; add .append() method +- Updated dependencies [41d5736] + - @ai-sdk/provider@0.0.3 + - @ai-sdk/provider-utils@0.0.5 + +## 3.0.34 + +### Patch Changes + +- b9a831e: ai/rsc: add experimental_streamUI() + +## 3.0.33 + +### Patch Changes + +- 56ef84a: ai/core: fix abort handling in transformation stream +- Updated dependencies [56ef84a] + - @ai-sdk/provider-utils@0.0.4 + +## 3.0.32 + +### Patch Changes + +- 0e0d2af: ai/core: add pipeTextStreamToResponse helper to streamText. + +## 3.0.31 + +### Patch Changes + +- 74c63b1: ai/core: add toAIStreamResponse() helper to streamText. + +## 3.0.30 + +### Patch Changes + +- e7e5898: use-assistant: fix missing message content + +## 3.0.29 + +### Patch Changes + +- 22a737e: Fix: mark useAssistant as in progress for append/submitMessage. + +## 3.0.28 + +### Patch Changes + +- d6431ae: ai/core: add logprobs support (thanks @SamStenner for the contribution) +- 25f3350: ai/core: add support for getting raw response headers. +- Updated dependencies + - @ai-sdk/provider@0.0.2 + - @ai-sdk/provider-utils@0.0.3 + +## 3.0.27 + +### Patch Changes + +- eb150a6: ai/core: remove scaling of setting values (breaking change). If you were using the temperature, frequency penalty, or presence penalty settings, you need to update the providers and adjust the setting values. +- Updated dependencies [eb150a6] + - @ai-sdk/provider-utils@0.0.2 + - @ai-sdk/provider@0.0.1 + +## 3.0.26 + +### Patch Changes + +- f90f6a1: ai/core: add pipeAIStreamToResponse() to streamText result. + +## 3.0.25 + +### Patch Changes + +- 1e84d6d: Fix: remove mistral lib type dependency. +- 9c2a049: Add append() helper to useAssistant. + +## 3.0.24 + +### Patch Changes + +- e94fb32: feat(ai/rsc): Make `onSetAIState` and `onGetUIState` stable + +## 3.0.23 + +### Patch Changes + +- 66b5892: Add streamMode parameter to useChat and useCompletion. +- Updated dependencies [7b8791d] + - @ai-sdk/provider-utils@0.0.1 + +## 3.0.22 + +### Patch Changes + +- d544886: Breaking change: extract experimental AI core provider packages. They can now be imported with e.g. import { openai } from '@ai-sdk/openai' after adding them to a project. +- ea6b0e1: Expose formatStreamPart, parseStreamPart, and readDataStream helpers. + +## 3.0.21 + +### Patch Changes + +- 87d3db5: Extracted @ai-sdk/provider package +- 8c40f8c: ai/core: Fix openai provider streamObject for gpt-4-turbo +- 5cd29bd: ai/core: add toTextStreamResponse() method to streamText result + +## 3.0.20 + +### Patch Changes + +- f42bbb5: Remove experimental from useAssistant and AssistantResponse. +- 149fe26: Deprecate +- 2eb4b55: Remove experimental\_ prefix from StreamData. +- e45fa96: Add stream support for Bedrock/Cohere. +- a6b2500: Deprecated the `experimental_streamData: true` setting from AIStreamCallbacksAndOptions. You can delete occurrences in your code. The stream data protocol is now used by default. + +## 3.0.19 + +### Patch Changes + +- 4f4c7f5: ai/core: Anthropic tool call support + +## 3.0.18 + +### Patch Changes + +- 63d587e: Add Anthropic provider for ai/core functions (no tool calling). +- 63d587e: Add automatic mime type detection for images in ai/core prompts. + +## 3.0.17 + +### Patch Changes + +- 2b991c4: Add Google Generative AI provider for ai/core functions. + +## 3.0.16 + +### Patch Changes + +- a54ea77: feat(ai/rsc): add `useStreamableValue` + +## 3.0.15 + +### Patch Changes + +- 4aed2a5: Add JSDoc comments for ai/core functions. +- cf8d12f: Export experimental language model specification under `ai/spec`. + +## 3.0.14 + +### Patch Changes + +- 8088de8: fix(ai/rsc): improve typings for `StreamableValue` +- 20007b9: feat(ai/rsc): support string diff and patch in streamable value +- 6039460: Support Bedrock Anthropic Stream for Messages API. +- e83bfe3: Added experimental ai/core functions (streamText, generateText, streamObject, generateObject). Add OpenAI and Mistral language model providers. + +## 3.0.13 + +### Patch Changes + +- 026d061: Expose setMessages in useAssistant hook +- 42209be: AssistantResponse: specify forwardStream return type. + +## 3.0.12 + +### Patch Changes + +- b99b008: fix(ai/rsc): avoid appending boundary if the same reference was passed + +## 3.0.11 + +### Patch Changes + +- ce009e2: Added OpenAI assistants streaming. +- 3f9bf3e: Updates types to OpenAI SDK 4.29.0 + +## 3.0.10 + +### Patch Changes + +- 33d261a: fix(ai/rsc): Fix .append() behavior + +## 3.0.9 + +### Patch Changes + +- 81ca3d6: fix(ai/rsc): improve .done() argument type + +## 3.0.8 + +### Patch Changes + +- a94aab2: ai/rsc: optimize streamable value stream size + +## 3.0.7 + +### Patch Changes + +- 9a9ae73: feat(ai/rsc): readStreamableValue + +## 3.0.6 + +### Patch Changes + +- 1355ad0: Fix: experimental_onToolCall is called with parsed tool args +- 9348f06: ai/rsc: improve dev error and warnings by trying to detect hanging streams +- 8be9404: fix type resolution + +## 3.0.5 + +### Patch Changes + +- a973f1e: Support Anthropic SDK v0.15.0 +- e25f3ca: type improvements + +## 3.0.4 + +### Patch Changes + +- 7962862: fix `useActions` type inference +- aab5324: Revert "fix(render): parse the args based on the zod schema" +- fe55612: Bump OpenAI dependency to 4.28.4; fix type error in render + +## 3.0.3 + +### Patch Changes + +- 4d816ca: fix(render): parse the args based on the zod schema +- d158a47: fix potential race conditions + +## 3.0.2 + +### Patch Changes + +- 73bd06e: fix(useActions): return typed object + +## 3.0.1 + +### Patch Changes + +- ac20a25: ai/rsc: fix text response and async generator +- b88778f: Added onText callback for text tokens. + +## 3.0.0 + +### Major Changes + +- 51054a9: add ai/rsc + +## 2.2.37 + +### Patch Changes + +- a6b5764: Add support for Mistral's JavaScript SDK + +## 2.2.36 + +### Patch Changes + +- 141f0ce: Fix: onFinal callback is invoked with text from onToolCall when onToolCall returns string + +## 2.2.35 + +### Patch Changes + +- b717dad: Adding Inkeep as a stream provider + +## 2.2.34 + +### Patch Changes + +- 2c8ffdb: cohere-stream: support AsyncIterable +- ed1e278: Message annotations handling for all Message types + +## 2.2.33 + +### Patch Changes + +- 8542ae7: react/use-assistant: add onError handler +- 97039ff: OpenAIStream: Add support for the Azure OpenAI client library + +## 2.2.32 + +### Patch Changes + +- 7851fa0: StreamData: add `annotations` and `appendMessageAnnotation` support + +## 2.2.31 + +### Patch Changes + +- 9b89c4d: react/use-assistant: Expose setInput +- 75751c9: ai/react: Add experimental_onToolCall to useChat. + +## 2.2.30 + +### Patch Changes + +- ac503e0: ai/solid: add chat request options to useChat +- b78a73e: Add GoogleGenerativeAIStream for Gemini support +- 5220336: ai/svelte: Add experimental_onToolCall to useChat. +- ef99062: Add support for the Anthropic message API +- 5220336: Add experimental_onToolCall to OpenAIStream. +- ac503e0: ai/vue: add chat request options to useChat + +## 2.2.29 + +### Patch Changes + +- 5a9ae2e: ai/prompt: add `experimental_buildOpenAIMessages` to validate and cast AI SDK messages to OpenAI messages + +## 2.2.28 + +### Patch Changes + +- 07a679c: Add data message support to useAssistant & assistantResponse. +- fbae595: ai/react: `api` functions are no longer used as a cache key in `useChat` + +## 2.2.27 + +### Patch Changes + +- 0fd1205: ai/vue: Add complex response parsing and StreamData support to useCompletion +- a7dc746: experimental_useAssistant: Expose extra fetch options +- 3dcf01e: ai/react Add data support to useCompletion +- 0c3b338: ai/svelte: Add complex response parsing and StreamData support to useCompletion +- 8284777: ai/solid: Add complex response parsing and StreamData support to useCompletion + +## 2.2.26 + +### Patch Changes + +- df1ad33: ai/vue: Add complex response parsing and StreamData support to useChat +- 3ff8a56: Add `generateId` to use-chat params to allow overriding message ID generation +- 6c2a49c: ai/react experimental_useAssistant() submit can be called without an event +- 8b4f7d1: ai/react: Add complex response parsing and StreamData support to useCompletion + +## 2.2.25 + +### Patch Changes + +- 1e61c69: chore: specify the minimum react version to 18 +- 6aec2d2: Expose threadId in useAssistant +- c2369df: Add AWS Bedrock support +- 223fde3: ai/svelte: Add complex response parsing and StreamData support to useChat + +## 2.2.24 + +### Patch Changes + +- 69ca8f5: ai/react: add experimental_useAssistant hook and experimental_AssistantResponse +- 3e2299e: experimental_StreamData/StreamingReactResponse: optimize parsing, improve types +- 70bd2ac: ai/solid: add experimental_StreamData support to useChat + +## 2.2.23 + +### Patch Changes + +- 5a04321: add StreamData support to StreamingReactResponse, add client-side data API to react/use-chat + +## 2.2.22 + +### Patch Changes + +- 4529831: ai/react: Do not store initialMessages in useState +- db5378c: experimental_StreamData: fix data type to be JSONValue + +## 2.2.21 + +### Patch Changes + +- 2c8d4bd: Support openai@4.16.0 and later + +## 2.2.20 + +### Patch Changes + +- 424d5ee: experimental_StreamData: fix trailing newline parsing bug in decoder +- c364c6a: cohere: fix closing cohere stream, avoids response from hanging + +## 2.2.19 + +### Patch Changes + +- 699552d: add experimental_StreamingReactResponse + +## 2.2.18 + +### Patch Changes + +- 0bd27f6: react/use-chat: allow client-side handling of function call without following response + +## 2.2.17 + +### Patch Changes + +- 5ed581d: Use interface instead of type for Message to allow declaration merging +- 9adec1e: vue and solid: fix including `function_call` and `name` fields in subsequent requests + +## 2.2.16 + +### Patch Changes + +- e569688: Fix for #637, resync interfaces + +## 2.2.15 + +### Patch Changes + +- c5d1857: fix: return complete response in onFinish when onCompletion isn't passed +- c5d1857: replicate-stream: fix types for replicate@0.20.0+ + +## 2.2.14 + +### Patch Changes + +- 6229d6b: openai: fix OpenAIStream types with openai@4.11+ + +## 2.2.13 + +### Patch Changes + +- a4a997f: all providers: reset error message on (re)submission + +## 2.2.12 + +### Patch Changes + +- cb181b4: ai/vue: wrap body with unref to support reactivity + +## 2.2.11 + +### Patch Changes + +- 2470658: ai/react: fix: handle partial chunks in react getStreamedResponse when using experimental_StreamData + +## 2.2.10 + +### Patch Changes + +- 8a2cbaf: vue/use-completion: fix: don't send network request for loading state" +- bbf4403: langchain-stream: return langchain `writer` from LangChainStream + +## 2.2.9 + +### Patch Changes + +- 3fc2b32: ai/vue: fix: make body parameter reactive + +## 2.2.8 + +### Patch Changes + +- 26bf998: ai/react: make reload/complete/append functions stable via useCallback + +## 2.2.7 + +### Patch Changes + +- 2f97630: react/use-chat: fix aborting clientside function calls too early +- 1157340: fix: infinite loop for experimental stream data (#484) + +## 2.2.6 + +### Patch Changes + +- e5bf68d: react/use-chat: fix experimental functions returning proper function messages + + Closes #478 + +## 2.2.5 + +### Patch Changes + +- e5bf68d: react/use-chat: fix experimental functions returning proper function messages + + Closes #478 + +## 2.2.4 + +### Patch Changes + +- 7b389a7: fix: improve safety for type check in openai-stream + +## 2.2.3 + +### Patch Changes + +- 867a3f9: Fix client-side function calling (#467, #469) + + add Completion type from the `openai` SDK to openai-stream (#472) + +## 2.2.2 + +### Patch Changes + +- 84e0cc8: Add experimental_StreamData and new opt-in wire protocol to enable streaming additional data. See https://github.com/vercel/ai/pull/425. + + Changes `onCompletion` back to run every completion, including recursive function calls. Adds an `onFinish` callback that runs once everything has streamed. + + If you're using experimental function handlers on the server _and_ caching via `onCompletion`, + you may want to adjust your caching code to account for recursive calls so the same key isn't used. + + ``` + let depth = 0 + + const stream = OpenAIStream(response, { + async onCompletion(completion) { + depth++ + await kv.set(key + '_' + depth, completion) + await kv.expire(key + '_' + depth, 60 * 60) + } + }) + ``` + +## 2.2.1 + +### Patch Changes + +- 04084a8: openai-stream: fix experimental_onFunctionCall types for OpenAI SDK v4 + +## 2.2.0 + +### Minor Changes + +- dca1ed9: Update packages and examples to use OpenAI SDK v4 + +## 2.1.34 + +### Patch Changes + +- c2917d3: Add support for the Anthropic SDK, newer Anthropic API versions, and improve Anthropic error handling + +## 2.1.33 + +### Patch Changes + +- 4ef8015: Prevent `isLoading` in vue integration from triggering extraneous network requests + +## 2.1.32 + +### Patch Changes + +- 5f91427: ai/svelte: fix isLoading return value + +## 2.1.31 + +### Patch Changes + +- ab2b973: fix pnpm-lock.yaml + +## 2.1.30 + +### Patch Changes + +- 4df2a49: Fix termination of ReplicateStream by removing the terminating `{}`from output + +## 2.1.29 + +### Patch Changes + +- 3929a41: Add ReplicateStream helper + +## 2.1.28 + +### Patch Changes + +- 9012e17: react/svelte/vue: fix making unnecessary SWR request to API endpoint + +## 2.1.27 + +### Patch Changes + +- 3d29799: React/Svelte/Vue: keep isLoading in sync between hooks with the same ID. + + React: don't throw error when submitting + +## 2.1.26 + +### Patch Changes + +- f50d9ef: Add experimental_buildLlama2Prompt helper for Hugging Face + +## 2.1.25 + +### Patch Changes + +- 877c16f: ai/react: don't throw error if onError is passed + +## 2.1.24 + +### Patch Changes + +- f3f5866: Adds SolidJS support and SolidStart example + +## 2.1.23 + +### Patch Changes + +- 0ebc2f0: streams/openai-stream: don't call onStart/onCompletion when recursing + +## 2.1.22 + +### Patch Changes + +- 9320e95: Add (experimental) prompt construction helpers for StarChat and OpenAssistant +- e3a7ec8: Support <|end|> token for StarChat beta in huggingface-stream + +## 2.1.21 + +### Patch Changes + +- 561a49a: Providing a function to `function_call` request parameter of the OpenAI Chat Completions API no longer breaks OpenAI function stream parsing. + +## 2.1.20 + +### Patch Changes + +- e361114: OpenAI functions: allow returning string in callback + +## 2.1.19 + +### Patch Changes + +- e4281ca: Add experimental server-side OpenAI function handling + +## 2.1.18 + +### Patch Changes + +- 6648b21: Add experimental client side OpenAI function calling to Svelte bindings +- e5b983f: feat(streams): add http error handling for openai + +## 2.1.17 + +### Patch Changes + +- 3ed65bf: Remove dependency on node crypto API + +## 2.1.16 + +### Patch Changes + +- 8bfb43d: Fix svelte peer dependency version + +## 2.1.15 + +### Patch Changes + +- 4a2b978: Update cohere stream and add docs + +## 2.1.14 + +### Patch Changes + +- 3164adb: Fix regression with generated ids + +## 2.1.13 + +### Patch Changes + +- fd82961: Use rfc4122 IDs when generating chat/completion IDs + +## 2.1.12 + +### Patch Changes + +- b7b93e5: Add RSC to ai/react + +## 2.1.11 + +### Patch Changes + +- 8bf637a: Fix langchain handlers so that they now are correctly invoked and update examples and docs to show correct usage (passing the handlers to `llm.call` and not the model itself). + +## 2.1.10 + +### Patch Changes + +- a7b3d0e: Experimental support for OpenAI function calling + +## 2.1.9 + +### Patch Changes + +- 9cdf968: core/react: add Tokens react server component + +## 2.1.8 + +### Patch Changes + +- 44d9879: Support extra request options in chat and completion hooks + +## 2.1.7 + +### Patch Changes + +- bde3898: Allow an async onResponse callback in useChat/useCompletion + +## 2.1.6 + +### Patch Changes + +- 23f0899: Set stream: true when decoding streamed chunks + +## 2.1.5 + +### Patch Changes + +- 89938b0: Provider direct callback handlers in LangChain now that `CallbackManager` is deprecated. + +## 2.1.4 + +### Patch Changes + +- c16d650: Improve type saftey for AIStream. Added JSDoc comments. + +## 2.1.3 + +### Patch Changes + +- a9591fe: Add `createdAt` on `user` input message in `useChat` (it was already present in `assistant` messages) + +## 2.1.2 + +### Patch Changes + +- f37d4ec: fix bundling + +## 2.1.1 + +### Patch Changes + +- 9fdb51a: fix: add better typing for store within svelte implementation (#104) + +## 2.1.0 + +### Minor Changes + +- 71f9c51: This adds Vue support for `ai` via the `ai/vue` subpath export. Vue composables `useChat` and `useCompletion` are provided. + +### Patch Changes + +- ad54c79: add tests + +## 2.0.1 + +### Patch Changes + +- be90740: - Switches `LangChainStream` helper callback `handler` to return use `handleChainEnd` instead of `handleLLMEnd` so as to work with sequential chains + +## 2.0.0 + +### Major Changes + +- 095de43: New package name! + +## 0.0.14 + +### Patch Changes + +- c6586a2: Add onError callback, include response text in error if response is not okay + +## 0.0.13 + +### Patch Changes + +- c1f4a91: Throw error when provided AI response isn't valid + +## 0.0.12 + +### Patch Changes + +- ea4e66a: improve API types + +## 0.0.11 + +### Patch Changes + +- a6bc35c: fix package exports for react and svelte subpackages + +## 0.0.10 + +### Patch Changes + +- 56f9537: add svelte apis + +## 0.0.9 + +### Patch Changes + +- 78477d3: - Create `/react` sub-package. + - Create `import { useChat, useCompletion } from 'ai/react'` and mark React as an optional peer dependency so we can add more framework support in the future. + - Also renamed `set` to `setMessages` and `setCompletion` to unify the API naming as we have `setInput` too. + - Added an `sendExtraMessageFields` field to `useChat` that defaults to `false`, to prevent OpenAI errors when `id` is not filtered out. +- c4c1be3: useCompletion.handleSubmit does not clear the input anymore +- 7de2185: create /react export + +## 0.0.8 + +### Patch Changes + +- fc83e95: Implement new start-of-stream newline trimming +- 2c6fa04: Optimize callbacks TransformStream to be more memory efficient when `onCompletion` is not specified + +## 0.0.7 + +### Patch Changes + +- fdfef52: - Splits the `EventSource` parser into a reusable helper + - Uses a `TransformStream` for this, so the stream respects back-pressure + - Splits the "forking" stream for callbacks into a reusable helper + - Changes the signature for `customParser` to avoid Stringify -> Encode -> Decode -> Parse round trip + - Uses ?.() optional call syntax for callbacks + - Uses string.includes to perform newline checking + - Handles the `null` `res.body` case + - Fixes Anthropic's streaming responses + - Anthropic returns cumulative responses, not deltas like OpenAI + - https://github.com/hwchase17/langchain/blob/3af36943/langchain/llms/anthropic.py#L190-L193 + +## 0.0.6 + +### Patch Changes + +- d70a9e7: Add streamToResponse +- 47b85b2: Improve abortController and callbacks of `useChat` +- 6f7b43a: Export `UseCompletionHelpers` as a TypeScript type alias + +## 0.0.5 + +### Patch Changes + +- 4405a8a: fix duplicated `'use client'` directives + +## 0.0.4 + +### Patch Changes + +- b869104: Added `LangChainStream`, `useCompletion`, and `useChat` + +## 0.0.3 + +### Patch Changes + +- 677d222: add useCompletion + +## 0.0.2 + +### Patch Changes + +- af400e2: Fix release script + +## 0.0.1 + +### Patch Changes + +- b7e227d: Add `useChat` hook + +## 0.0.2 + +### Patch Changes + +- 9a8a845: Testing out release diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/LICENSE new file mode 100644 index 000000000..6c16c29f4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/LICENSE @@ -0,0 +1,13 @@ +Copyright 2023 Vercel, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/README.md new file mode 100644 index 000000000..35d4302c2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/README.md @@ -0,0 +1,238 @@ +![hero illustration](./assets/hero.gif) + +# AI SDK + +The [AI SDK](https://ai-sdk.dev/docs) is a provider-agnostic TypeScript toolkit designed to help you build AI-powered applications and agents using popular UI frameworks like Next.js, React, Svelte, Vue, Angular, and runtimes like Node.js. + +To learn more about how to use the AI SDK, check out our [API Reference](https://ai-sdk.dev/docs/reference) and [Documentation](https://ai-sdk.dev/docs). + +## Installation + +You will need Node.js 18+ and npm (or another package manager) installed on your local development machine. + +```shell +npm install ai +``` + +## Skill for Coding Agents + +If you use coding agents such as Claude Code or Cursor, we highly recommend adding the AI SDK skill to your repository: + +```shell +npx skills add vercel/ai +``` + +## Unified Provider Architecture + +The AI SDK provides a [unified API](https://ai-sdk.dev/docs/foundations/providers-and-models) to interact with model providers like [OpenAI](https://ai-sdk.dev/providers/ai-sdk-providers/openai), [Anthropic](https://ai-sdk.dev/providers/ai-sdk-providers/anthropic), [Google](https://ai-sdk.dev/providers/ai-sdk-providers/google-generative-ai), and [more](https://ai-sdk.dev/providers/ai-sdk-providers). + +By default, the AI SDK uses the [Vercel AI Gateway](https://vercel.com/docs/ai-gateway) to give you access to all major providers out of the box. Just pass a model string for any supported model: + +```ts +const result = await generateText({ + model: 'anthropic/claude-opus-4.6', // or 'openai/gpt-5.4', 'google/gemini-3-flash', etc. + prompt: 'Hello!', +}); +``` + +You can also connect to providers directly using their SDK packages: + +```shell +npm install @ai-sdk/openai @ai-sdk/anthropic @ai-sdk/google +``` + +```ts +import { anthropic } from '@ai-sdk/anthropic'; + +const result = await generateText({ + model: anthropic('claude-opus-4-6'), // or openai('gpt-5.4'), google('gemini-3-flash'), etc. + prompt: 'Hello!', +}); +``` + +## Usage + +### Generating Text + +```ts +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: 'openai/gpt-5.4', // use Vercel AI Gateway + prompt: 'What is an agent?', +}); +``` + +### Generating Structured Data + +```ts +import { generateText, Output } from 'ai'; +import { z } from 'zod'; + +const { output } = await generateText({ + model: 'openai/gpt-5.4', + output: Output.object({ + schema: z.object({ + recipe: z.object({ + name: z.string(), + ingredients: z.array( + z.object({ name: z.string(), amount: z.string() }), + ), + steps: z.array(z.string()), + }), + }), + }), + prompt: 'Generate a lasagna recipe.', +}); +``` + +### Agents + +```ts +import { ToolLoopAgent } from 'ai'; + +const sandboxAgent = new ToolLoopAgent({ + model: 'openai/gpt-5.4', + system: 'You are an agent with access to a shell environment.', + tools: { + shell: openai.tools.localShell({ + execute: async ({ action }) => { + const [cmd, ...args] = action.command; + const sandbox = await getSandbox(); // Vercel Sandbox + const command = await sandbox.runCommand({ cmd, args }); + return { output: await command.stdout() }; + }, + }), + }, +}); +``` + +### UI Integration + +The [AI SDK UI](https://ai-sdk.dev/docs/ai-sdk-ui/overview) module provides a set of hooks that help you build chatbots and generative user interfaces. These hooks are framework agnostic, so they can be used in Next.js, React, Svelte, and Vue. + +You need to install the package for your framework, e.g.: + +```shell +npm install @ai-sdk/react +``` + +#### Agent @/agent/image-generation-agent.ts + +```ts +import { openai } from '@ai-sdk/openai'; +import { ToolLoopAgent, InferAgentUIMessage } from 'ai'; + +export const imageGenerationAgent = new ToolLoopAgent({ + model: 'openai/gpt-5.4', + tools: { + generateImage: openai.tools.imageGeneration({ + partialImages: 3, + }), + }, +}); + +export type ImageGenerationAgentMessage = InferAgentUIMessage< + typeof imageGenerationAgent +>; +``` + +#### Route (Next.js App Router) @/app/api/chat/route.ts + +```tsx +import { imageGenerationAgent } from '@/agent/image-generation-agent'; +import { createAgentUIStreamResponse } from 'ai'; + +export async function POST(req: Request) { + const { messages } = await req.json(); + + return createAgentUIStreamResponse({ + agent: imageGenerationAgent, + messages, + }); +} +``` + +#### UI Component for Tool @/component/image-generation-view.tsx + +```tsx +import { openai } from '@ai-sdk/openai'; +import { UIToolInvocation } from 'ai'; + +export default function ImageGenerationView({ + invocation, +}: { + invocation: UIToolInvocation>; +}) { + switch (invocation.state) { + case 'input-available': + return
Generating image...
; + case 'output-available': + return ; + } +} +``` + +#### Page @/app/page.tsx + +```tsx +'use client'; + +import { ImageGenerationAgentMessage } from '@/agent/image-generation-agent'; +import ImageGenerationView from '@/component/image-generation-view'; +import { useChat } from '@ai-sdk/react'; + +export default function Page() { + const { messages, status, sendMessage } = + useChat(); + + const [input, setInput] = useState(''); + const handleSubmit = e => { + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }; + + return ( +
+ {messages.map(message => ( +
+ {`${message.role}: `} + {message.parts.map((part, index) => { + switch (part.type) { + case 'text': + return
{part.text}
; + case 'tool-generateImage': + return ; + } + })} +
+ ))} + +
+ setInput(e.target.value)} + disabled={status !== 'ready'} + /> +
+
+ ); +} +``` + +## Templates + +We've built [templates](https://ai-sdk.dev/docs/introduction#templates) that include AI SDK integrations for different use cases, providers, and frameworks. You can use these templates to get started with your AI-powered application. + +## Community + +The AI SDK community can be found on [the Vercel Community](https://community.vercel.com/c/ai-sdk/62) where you can ask questions, voice ideas, and share your projects with other people. + +## Contributing + +Contributions to the AI SDK are welcome and highly appreciated. However, before you jump right into it, we would like you to review our [Contribution Guidelines](https://github.com/vercel/ai/blob/main/CONTRIBUTING.md) to make sure you have smooth experience contributing to AI SDK. + +## Authors + +This library is created by [Vercel](https://vercel.com) and [Next.js](https://nextjs.org) team members, with contributions from the [Open Source Community](https://github.com/vercel/ai/graphs/contributors). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/00-introduction/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/00-introduction/index.mdx new file mode 100644 index 000000000..3474a23b5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/00-introduction/index.mdx @@ -0,0 +1,76 @@ +--- +title: AI SDK by Vercel +description: The AI SDK is the TypeScript toolkit for building AI applications and agents with React, Next.js, Vue, Svelte, Node.js, and more. +--- + +# AI SDK + +The AI SDK is the TypeScript toolkit designed to help developers build AI-powered applications and agents with React, Next.js, Vue, Svelte, Node.js, and more. + +## Why use the AI SDK? + +Integrating large language models (LLMs) into applications is complicated and heavily dependent on the specific model provider you use. + +The AI SDK standardizes integrating artificial intelligence (AI) models across [supported providers](/docs/foundations/providers-and-models). This enables developers to focus on building great AI applications, not waste time on technical details. + +For example, here’s how you can generate text with various models using the AI SDK: + + + +The AI SDK has two main libraries: + +- **[AI SDK Core](/docs/ai-sdk-core):** A unified API for generating text, structured objects, tool calls, and building agents with LLMs. +- **[AI SDK UI](/docs/ai-sdk-ui):** A set of framework-agnostic hooks for quickly building chat and generative user interface. + +## Model Providers + +The AI SDK supports [multiple model providers](/providers). + + + +## Templates + +We've built some [templates](https://vercel.com/templates?type=ai) that include AI SDK integrations for different use cases, providers, and frameworks. You can use these templates to get started with your AI-powered application. + +### Starter Kits + + + +### Feature Exploration + + + +### Frameworks + + + +### Generative UI + + + +### Security + + + +## Join our Community + +If you have questions about anything related to the AI SDK, you're always welcome to ask our community on [the Vercel Community](https://community.vercel.com/c/ai-sdk/62). + +## `llms.txt` (for Cursor, Windsurf, Copilot, Claude etc.) + +You can access the entire AI SDK documentation in Markdown format at [ai-sdk.dev/llms.txt](/llms.txt). This can be used to ask any LLM (assuming it has a big enough context window) questions about the AI SDK based on the most up-to-date documentation. + +### Example Usage + +For instance, to prompt an LLM with questions about the AI SDK: + +1. Copy the documentation contents from [ai-sdk.dev/llms.txt](/llms.txt) +2. Use the following prompt format: + +```prompt +Documentation: +{paste documentation here} +--- +Based on the above documentation, answer the following: +{your question} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/01-overview.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/01-overview.mdx new file mode 100644 index 000000000..4544d98d5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/01-overview.mdx @@ -0,0 +1,43 @@ +--- +title: Overview +description: An overview of foundational concepts critical to understanding the AI SDK +--- + +# Overview + + + This page is a beginner-friendly introduction to high-level artificial + intelligence (AI) concepts. To dive right into implementing the AI SDK, feel + free to skip ahead to our [quickstarts](/docs/getting-started) or learn about + our [supported models and providers](/docs/foundations/providers-and-models). + + +The AI SDK standardizes integrating artificial intelligence (AI) models across [supported providers](/docs/foundations/providers-and-models). This enables developers to focus on building great AI applications, not waste time on technical details. + +For example, here’s how you can generate text with various models using the AI SDK: + + + +To effectively leverage the AI SDK, it helps to familiarize yourself with the following concepts: + +## Generative Artificial Intelligence + +**Generative artificial intelligence** refers to models that predict and generate various types of outputs (such as text, images, or audio) based on what’s statistically likely, pulling from patterns they’ve learned from their training data. For example: + +- Given a photo, a generative model can generate a caption. +- Given an audio file, a generative model can generate a transcription. +- Given a text description, a generative model can generate an image. + +## Large Language Models + +A **large language model (LLM)** is a subset of generative models focused primarily on **text**. An LLM takes a sequence of words as input and aims to predict the most likely sequence to follow. It assigns probabilities to potential next sequences and then selects one. The model continues to generate sequences until it meets a specified stopping criterion. + +LLMs learn by training on massive collections of written text, which means they will be better suited to some use cases than others. For example, a model trained on GitHub data would understand the probabilities of sequences in source code particularly well. + +However, it's crucial to understand LLMs' limitations. When asked about less known or absent information, like the birthday of a personal relative, LLMs might "hallucinate" or make up information. It's essential to consider how well-represented the information you need is in the model. + +## Embedding Models + +An **embedding model** is used to convert complex data (like words or images) into a dense vector (a list of numbers) representation, known as an embedding. Unlike generative models, embedding models do not generate new text or data. Instead, they provide representations of semantic and syntactic relationships between entities that can be used as input for other models or other natural language processing tasks. + +In the next section, you will learn about the difference between models providers and models, and which ones are available in the AI SDK. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/02-providers-and-models.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/02-providers-and-models.mdx new file mode 100644 index 000000000..d6593368c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/02-providers-and-models.mdx @@ -0,0 +1,160 @@ +--- +title: Providers and Models +description: Learn about the providers and models available in the AI SDK. +--- + +# Providers and Models + +Companies such as OpenAI and Anthropic (providers) offer access to a range of large language models (LLMs) with differing strengths and capabilities through their own APIs. + +Each provider typically has its own unique method for interfacing with their models, complicating the process of switching providers and increasing the risk of vendor lock-in. + +To solve these challenges, AI SDK Core offers a standardized approach to interacting with LLMs through a [language model specification](https://github.com/vercel/ai/tree/main/packages/provider/src/language-model/v3) that abstracts differences between providers. This unified interface allows you to switch between providers with ease while using the same API for all providers. + +Here is an overview of the AI SDK Provider Architecture: + + + +## AI SDK Providers + +The AI SDK comes with a wide range of providers that you can use to interact with different language models: + +- [xAI Grok Provider](/providers/ai-sdk-providers/xai) (`@ai-sdk/xai`) +- [OpenAI Provider](/providers/ai-sdk-providers/openai) (`@ai-sdk/openai`) +- [Azure OpenAI Provider](/providers/ai-sdk-providers/azure) (`@ai-sdk/azure`) +- [Anthropic Provider](/providers/ai-sdk-providers/anthropic) (`@ai-sdk/anthropic`) +- [Amazon Bedrock Provider](/providers/ai-sdk-providers/amazon-bedrock) (`@ai-sdk/amazon-bedrock`) +- [Google Generative AI Provider](/providers/ai-sdk-providers/google-generative-ai) (`@ai-sdk/google`) +- [Google Vertex Provider](/providers/ai-sdk-providers/google-vertex) (`@ai-sdk/google-vertex`) +- [Mistral Provider](/providers/ai-sdk-providers/mistral) (`@ai-sdk/mistral`) +- [Together.ai Provider](/providers/ai-sdk-providers/togetherai) (`@ai-sdk/togetherai`) +- [Cohere Provider](/providers/ai-sdk-providers/cohere) (`@ai-sdk/cohere`) +- [Fireworks Provider](/providers/ai-sdk-providers/fireworks) (`@ai-sdk/fireworks`) +- [DeepInfra Provider](/providers/ai-sdk-providers/deepinfra) (`@ai-sdk/deepinfra`) +- [DeepSeek Provider](/providers/ai-sdk-providers/deepseek) (`@ai-sdk/deepseek`) +- [Cerebras Provider](/providers/ai-sdk-providers/cerebras) (`@ai-sdk/cerebras`) +- [Groq Provider](/providers/ai-sdk-providers/groq) (`@ai-sdk/groq`) +- [Perplexity Provider](/providers/ai-sdk-providers/perplexity) (`@ai-sdk/perplexity`) +- [ElevenLabs Provider](/providers/ai-sdk-providers/elevenlabs) (`@ai-sdk/elevenlabs`) +- [LMNT Provider](/providers/ai-sdk-providers/lmnt) (`@ai-sdk/lmnt`) +- [Hume Provider](/providers/ai-sdk-providers/hume) (`@ai-sdk/hume`) +- [Rev.ai Provider](/providers/ai-sdk-providers/revai) (`@ai-sdk/revai`) +- [Deepgram Provider](/providers/ai-sdk-providers/deepgram) (`@ai-sdk/deepgram`) +- [Gladia Provider](/providers/ai-sdk-providers/gladia) (`@ai-sdk/gladia`) +- [AssemblyAI Provider](/providers/ai-sdk-providers/assemblyai) (`@ai-sdk/assemblyai`) +- [Baseten Provider](/providers/ai-sdk-providers/baseten) (`@ai-sdk/baseten`) + +You can also use the [OpenAI Compatible provider](/providers/openai-compatible-providers) with OpenAI-compatible APIs: + +- [LM Studio](/providers/openai-compatible-providers/lmstudio) +- [Heroku](/providers/openai-compatible-providers/heroku) + +Our [language model specification](https://github.com/vercel/ai/tree/main/packages/provider/src/language-model/v3) is published as an open-source package, which you can use to create [custom providers](/providers/community-providers/custom-providers). + +The open-source community has created the following providers: + +- [Ollama Provider](/providers/community-providers/ollama) (`ollama-ai-provider`) +- [FriendliAI Provider](/providers/community-providers/friendliai) (`@friendliai/ai-provider`) +- [Portkey Provider](/providers/community-providers/portkey) (`@portkey-ai/vercel-provider`) +- [Cloudflare Workers AI Provider](/providers/community-providers/cloudflare-workers-ai) (`workers-ai-provider`) +- [OpenRouter Provider](/providers/community-providers/openrouter) (`@openrouter/ai-sdk-provider`) +- [Apertis Provider](/providers/community-providers/apertis) (`@apertis/ai-sdk-provider`) +- [Aihubmix Provider](/providers/community-providers/aihubmix) (`@aihubmix/ai-sdk-provider`) +- [Requesty Provider](/providers/community-providers/requesty) (`@requesty/ai-sdk`) +- [Crosshatch Provider](/providers/community-providers/crosshatch) (`@crosshatch/ai-provider`) +- [Mixedbread Provider](/providers/community-providers/mixedbread) (`mixedbread-ai-provider`) +- [Voyage AI Provider](/providers/community-providers/voyage-ai) (`voyage-ai-provider`) +- [Mem0 Provider](/providers/community-providers/mem0) (`@mem0/vercel-ai-provider`) +- [Letta Provider](/providers/community-providers/letta) (`@letta-ai/vercel-ai-sdk-provider`) +- [Hindsight Provider](/providers/community-providers/hindsight) (`@vectorize-io/hindsight-ai-sdk`) +- [Supermemory Provider](/providers/community-providers/supermemory) (`@supermemory/tools`) +- [Spark Provider](/providers/community-providers/spark) (`spark-ai-provider`) +- [AnthropicVertex Provider](/providers/community-providers/anthropic-vertex-ai) (`anthropic-vertex-ai`) +- [LangDB Provider](/providers/community-providers/langdb) (`@langdb/vercel-provider`) +- [Dify Provider](/providers/community-providers/dify) (`dify-ai-provider`) +- [Sarvam Provider](/providers/community-providers/sarvam) (`sarvam-ai-provider`) +- [Claude Code Provider](/providers/community-providers/claude-code) (`ai-sdk-provider-claude-code`) +- [Browser AI Provider](/providers/community-providers/browser-ai) (`browser-ai`) +- [Gemini CLI Provider](/providers/community-providers/gemini-cli) (`ai-sdk-provider-gemini-cli`) +- [A2A Provider](/providers/community-providers/a2a) (`a2a-ai-provider`) +- [SAP-AI Provider](/providers/community-providers/sap-ai) (`@mymediset/sap-ai-provider`) +- [AI/ML API Provider](/providers/community-providers/aimlapi) (`@ai-ml.api/aimlapi-vercel-ai`) +- [MCP Sampling Provider](/providers/community-providers/mcp-sampling) (`@mcpc-tech/mcp-sampling-ai-provider`) +- [ACP Provider](/providers/community-providers/acp) (`@mcpc-tech/acp-ai-provider`) +- [OpenCode Provider](/providers/community-providers/opencode-sdk) (`ai-sdk-provider-opencode-sdk`) +- [Codex CLI Provider](/providers/community-providers/codex-cli) (`ai-sdk-provider-codex-cli`) +- [Soniox Provider](/providers/community-providers/soniox) (`@soniox/vercel-ai-sdk-provider`) +- [Zhipu (Z.AI) Provider](/providers/community-providers/zhipu) (`zhipu-ai-provider`) +- [OLLM Provider](/providers/community-providers/ollm) (`@ofoundation/ollm`) + +## Self-Hosted Models + +You can access self-hosted models with the following providers: + +- [Ollama Provider](/providers/community-providers/ollama) +- [LM Studio](/providers/openai-compatible-providers/lmstudio) +- [Baseten](/providers/ai-sdk-providers/baseten) +- [Browser AI](/providers/community-providers/browser-ai) + +Additionally, any self-hosted provider that supports the OpenAI specification can be used with the [OpenAI Compatible Provider](/providers/openai-compatible-providers). + +## Model Capabilities + +The AI providers support different language models with various capabilities. +Here are the capabilities of popular models: + +| Provider | Model | Image Input | Object Generation | Tool Usage | Tool Streaming | +| -------------------------------------------------- | ------------------------------------------- | ------------------- | ------------------- | ------------------- | ------------------- | +| [xAI Grok](/providers/ai-sdk-providers/xai) | `grok-4` | | | | | +| [xAI Grok](/providers/ai-sdk-providers/xai) | `grok-3` | | | | | +| [xAI Grok](/providers/ai-sdk-providers/xai) | `grok-3-mini` | | | | | +| [Vercel](/providers/ai-sdk-providers/vercel) | `v0-1.0-md` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5.4-pro` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5.4` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5.4-mini` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5.4-nano` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5.3-chat-latest` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5.2-pro` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5.2-chat-latest` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5.2` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5-mini` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5-nano` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5.1-chat-latest` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5.1-codex-mini` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5.1-codex` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5.1` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5-codex` | | | | | +| [OpenAI](/providers/ai-sdk-providers/openai) | `gpt-5-chat-latest` | | | | | +| [Anthropic](/providers/ai-sdk-providers/anthropic) | `claude-opus-4-6` | | | | | +| [Anthropic](/providers/ai-sdk-providers/anthropic) | `claude-sonnet-4-6` | | | | | +| [Anthropic](/providers/ai-sdk-providers/anthropic) | `claude-opus-4-5` | | | | | +| [Anthropic](/providers/ai-sdk-providers/anthropic) | `claude-opus-4-1` | | | | | +| [Anthropic](/providers/ai-sdk-providers/anthropic) | `claude-opus-4-0` | | | | | +| [Anthropic](/providers/ai-sdk-providers/anthropic) | `claude-sonnet-4-0` | | | | | +| [Mistral](/providers/ai-sdk-providers/mistral) | `pixtral-large-latest` | | | | | +| [Mistral](/providers/ai-sdk-providers/mistral) | `mistral-large-latest` | | | | | +| [Mistral](/providers/ai-sdk-providers/mistral) | `mistral-medium-latest` | | | | | +| [Mistral](/providers/ai-sdk-providers/mistral) | `mistral-medium-2505` | | | | | +| [Mistral](/providers/ai-sdk-providers/mistral) | `mistral-small-latest` | | | | | +| [Mistral](/providers/ai-sdk-providers/mistral) | `pixtral-12b-2409` | | | | | +| [DeepSeek](/providers/ai-sdk-providers/deepseek) | `deepseek-chat` | | | | | +| [DeepSeek](/providers/ai-sdk-providers/deepseek) | `deepseek-reasoner` | | | | | +| [Cerebras](/providers/ai-sdk-providers/cerebras) | `llama3.1-8b` | | | | | +| [Cerebras](/providers/ai-sdk-providers/cerebras) | `llama3.1-70b` | | | | | +| [Cerebras](/providers/ai-sdk-providers/cerebras) | `llama3.3-70b` | | | | | +| [Groq](/providers/ai-sdk-providers/groq) | `meta-llama/llama-4-scout-17b-16e-instruct` | | | | | +| [Groq](/providers/ai-sdk-providers/groq) | `llama-3.3-70b-versatile` | | | | | +| [Groq](/providers/ai-sdk-providers/groq) | `llama-3.1-8b-instant` | | | | | +| [Groq](/providers/ai-sdk-providers/groq) | `mixtral-8x7b-32768` | | | | | +| [Groq](/providers/ai-sdk-providers/groq) | `gemma2-9b-it` | | | | | + + + This table is not exhaustive. Additional models can be found in the provider + documentation pages and on the provider websites. + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/03-prompts.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/03-prompts.mdx new file mode 100644 index 000000000..712cf0eea --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/03-prompts.mdx @@ -0,0 +1,616 @@ +--- +title: Prompts +description: Learn about the Prompt structure used in the AI SDK. +--- + +# Prompts + +Prompts are instructions that you give a [large language model (LLM)](/docs/foundations/overview#large-language-models) to tell it what to do. +It's like when you ask someone for directions; the clearer your question, the better the directions you'll get. + +Many LLM providers offer complex interfaces for specifying prompts. They involve different roles and message types. +While these interfaces are powerful, they can be hard to use and understand. + +In order to simplify prompting, the AI SDK supports text, message, and system prompts. + +## Text Prompts + +Text prompts are strings. +They are ideal for simple generation use cases, +e.g. repeatedly generating content for variants of the same prompt text. + +You can set text prompts using the `prompt` property made available by AI SDK functions like [`streamText`](/docs/reference/ai-sdk-core/stream-text) or [`generateText`](/docs/reference/ai-sdk-core/generate-text). +You can structure the text in any way and inject variables, e.g. using a template literal. + +```ts highlight="3" +const result = await generateText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', +}); +``` + +You can also use template literals to provide dynamic data to your prompt. + +```ts highlight="3-5" +const result = await generateText({ + model: __MODEL__, + prompt: + `I am planning a trip to ${destination} for ${lengthOfStay} days. ` + + `Please suggest the best tourist activities for me to do.`, +}); +``` + +## System Prompts + +System prompts are the initial set of instructions given to models that help guide and constrain the models' behaviors and responses. +You can set system prompts using the `system` property. +System prompts work with both the `prompt` and the `messages` properties. + +```ts highlight="3-6" +const result = await generateText({ + model: __MODEL__, + system: + `You help planning travel itineraries. ` + + `Respond to the users' request with a list ` + + `of the best stops to make in their destination.`, + prompt: + `I am planning a trip to ${destination} for ${lengthOfStay} days. ` + + `Please suggest the best tourist activities for me to do.`, +}); +``` + + + When you use a message prompt, you can also use system messages instead of a + system prompt. + + +## Message Prompts + +A message prompt is an array of user, assistant, and tool messages. +They are great for chat interfaces and more complex, multi-modal prompts. +You can use the `messages` property to set message prompts. + +Each message has a `role` and a `content` property. The content can either be text (for user and assistant messages), or an array of relevant parts (data) for that message type. + +```ts highlight="3-7" +const result = await generateText({ + model: __MODEL__, + messages: [ + { role: 'user', content: 'Hi!' }, + { role: 'assistant', content: 'Hello, how can I help?' }, + { role: 'user', content: 'Where can I buy the best Currywurst in Berlin?' }, + ], +}); +``` + +Instead of sending a text in the `content` property, you can send an array of parts that includes a mix of text and other content parts. + + + Not all language models support all message and content types. For example, + some models might not be capable of handling multi-modal inputs or tool + messages. [Learn more about the capabilities of select + models](./providers-and-models#model-capabilities). + + +### Provider Options + +You can pass through additional provider-specific metadata to enable provider-specific functionality at 3 levels. + +#### Function Call Level + +Functions like [`streamText`](/docs/reference/ai-sdk-core/stream-text#provider-options) or [`generateText`](/docs/reference/ai-sdk-core/generate-text#provider-options) accept a `providerOptions` property. + +Adding provider options at the function call level should be used when you do not need granular control over where the provider options are applied. + +```ts +const { text } = await generateText({ + model: azure('your-deployment-name'), + providerOptions: { + openai: { + reasoningEffort: 'low', + }, + }, +}); +``` + +#### Message Level + +For granular control over applying provider options at the message level, you can pass `providerOptions` to the message object: + +```ts +import { ModelMessage } from 'ai'; + +const messages: ModelMessage[] = [ + { + role: 'system', + content: 'Cached system message', + providerOptions: { + // Sets a cache control breakpoint on the system message + anthropic: { cacheControl: { type: 'ephemeral' } }, + }, + }, +]; +``` + +#### Message Part Level + +Certain provider-specific options require configuration at the message part level: + +```ts +import { ModelMessage } from 'ai'; + +const messages: ModelMessage[] = [ + { + role: 'user', + content: [ + { + type: 'text', + text: 'Describe the image in detail.', + providerOptions: { + openai: { imageDetail: 'low' }, + }, + }, + { + type: 'image', + image: + 'https://github.com/vercel/ai/blob/main/examples/ai-functions/data/comic-cat.png?raw=true', + // Sets image detail configuration for image part: + providerOptions: { + openai: { imageDetail: 'low' }, + }, + }, + ], + }, +]; +``` + + + AI SDK UI hooks like [`useChat`](/docs/reference/ai-sdk-ui/use-chat) return + arrays of `UIMessage` objects, which do not support provider options. We + recommend using the + [`convertToModelMessages`](/docs/reference/ai-sdk-ui/convert-to-model-messages) + function to convert `UIMessage` objects to + [`ModelMessage`](/docs/reference/ai-sdk-core/model-message) objects before + applying or appending message(s) or message parts with `providerOptions`. + + +### User Messages + +#### Text Parts + +Text content is the most common type of content. It is a string that is passed to the model. + +If you only need to send text content in a message, the `content` property can be a string, +but you can also use it to send multiple content parts. + +```ts highlight="7-10" +const result = await generateText({ + model: __MODEL__, + messages: [ + { + role: 'user', + content: [ + { + type: 'text', + text: 'Where can I buy the best Currywurst in Berlin?', + }, + ], + }, + ], +}); +``` + +#### Image Parts + +User messages can include image parts. An image can be one of the following: + +- base64-encoded image: + - `string` with base-64 encoded content + - data URL `string`, e.g. `data:image/png;base64,...` +- binary image: + - `ArrayBuffer` + - `Uint8Array` + - `Buffer` +- URL: + - http(s) URL `string`, e.g. `https://example.com/image.png` + - `URL` object, e.g. `new URL('https://example.com/image.png')` + +##### Example: Binary image (Buffer) + +```ts highlight="8-11" +const result = await generateText({ + model, + messages: [ + { + role: 'user', + content: [ + { type: 'text', text: 'Describe the image in detail.' }, + { + type: 'image', + image: fs.readFileSync('./data/comic-cat.png'), + }, + ], + }, + ], +}); +``` + +##### Example: Base-64 encoded image (string) + +```ts highlight="8-11" +const result = await generateText({ + model: __MODEL__, + messages: [ + { + role: 'user', + content: [ + { type: 'text', text: 'Describe the image in detail.' }, + { + type: 'image', + image: fs.readFileSync('./data/comic-cat.png').toString('base64'), + }, + ], + }, + ], +}); +``` + +##### Example: Image URL (string) + +```ts highlight="8-12" +const result = await generateText({ + model: __MODEL__, + messages: [ + { + role: 'user', + content: [ + { type: 'text', text: 'Describe the image in detail.' }, + { + type: 'image', + image: + 'https://github.com/vercel/ai/blob/main/examples/ai-functions/data/comic-cat.png?raw=true', + }, + ], + }, + ], +}); +``` + +#### File Parts + + + Only a few providers and models currently support file parts: [Google + Generative AI](/providers/ai-sdk-providers/google-generative-ai), [Google + Vertex AI](/providers/ai-sdk-providers/google-vertex), + [OpenAI](/providers/ai-sdk-providers/openai) (for `wav` and `mp3` audio with + `gpt-4o-audio-preview`), [Anthropic](/providers/ai-sdk-providers/anthropic), + [OpenAI](/providers/ai-sdk-providers/openai) (for `pdf`). + + +User messages can include file parts. A file can be one of the following: + +- base64-encoded file: + - `string` with base-64 encoded content + - data URL `string`, e.g. `data:image/png;base64,...` +- binary data: + - `ArrayBuffer` + - `Uint8Array` + - `Buffer` +- URL: + - http(s) URL `string`, e.g. `https://example.com/some.pdf` + - `URL` object, e.g. `new URL('https://example.com/some.pdf')` + +You need to specify the MIME type of the file you are sending. + +##### Example: PDF file from Buffer + +```ts highlight="12-15" +import { google } from '@ai-sdk/google'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: google('gemini-2.5-flash'), + messages: [ + { + role: 'user', + content: [ + { type: 'text', text: 'What is the file about?' }, + { + type: 'file', + mediaType: 'application/pdf', + data: fs.readFileSync('./data/example.pdf'), + filename: 'example.pdf', // optional, not used by all providers + }, + ], + }, + ], +}); +``` + +##### Example: mp3 audio file from Buffer + +```ts highlight="12-14" +import { openai } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-4o-audio-preview'), + messages: [ + { + role: 'user', + content: [ + { type: 'text', text: 'What is the audio saying?' }, + { + type: 'file', + mediaType: 'audio/mpeg', + data: fs.readFileSync('./data/galileo.mp3'), + }, + ], + }, + ], +}); +``` + +#### Custom Download Function (Experimental) + +You can use custom download functions to implement throttling, retries, authentication, caching, and more. + +The default download implementation automatically downloads files in parallel when they are not supported by the model. + +Custom download function can be passed via the `experimental_download` property: + +```ts +const result = await generateText({ + model: __MODEL__, + experimental_download: async ( + requestedDownloads: Array<{ + url: URL; + isUrlSupportedByModel: boolean; + }>, + ): PromiseLike< + Array<{ + data: Uint8Array; + mediaType: string | undefined; + } | null> + > => { + // ... download the files and return an array with similar order + }, + messages: [ + { + role: 'user', + content: [ + { + type: 'file', + data: new URL('https://api.company.com/private/document.pdf'), + mediaType: 'application/pdf', + }, + ], + }, + ], +}); +``` + + + The `experimental_download` option is experimental and may change in future + releases. + + +### Assistant Messages + +Assistant messages are messages that have a role of `assistant`. +They are typically previous responses from the assistant +and can contain text, reasoning, and tool call parts. + +#### Example: Assistant message with text content + +```ts highlight="5" +const result = await generateText({ + model: __MODEL__, + messages: [ + { role: 'user', content: 'Hi!' }, + { role: 'assistant', content: 'Hello, how can I help?' }, + ], +}); +``` + +#### Example: Assistant message with text content in array + +```ts highlight="7" +const result = await generateText({ + model: __MODEL__, + messages: [ + { role: 'user', content: 'Hi!' }, + { + role: 'assistant', + content: [{ type: 'text', text: 'Hello, how can I help?' }], + }, + ], +}); +``` + +#### Example: Assistant message with tool call content + +```ts highlight="7-14" +const result = await generateText({ + model: __MODEL__, + messages: [ + { role: 'user', content: 'How many calories are in this block of cheese?' }, + { + role: 'assistant', + content: [ + { + type: 'tool-call', + toolCallId: '12345', + toolName: 'get-nutrition-data', + input: { cheese: 'Roquefort' }, + }, + ], + }, + ], +}); +``` + +#### Example: Assistant message with file content + + + This content part is for model-generated files. Only a few models support + this, and only for file types that they can generate. + + +```ts highlight="9-11" +const result = await generateText({ + model: __MODEL__, + messages: [ + { role: 'user', content: 'Generate an image of a roquefort cheese!' }, + { + role: 'assistant', + content: [ + { + type: 'file', + mediaType: 'image/png', + data: fs.readFileSync('./data/roquefort.jpg'), + }, + ], + }, + ], +}); +``` + +### Tool messages + + + [Tools](/docs/foundations/tools) (also known as function calling) are programs + that you can provide an LLM to extend its built-in functionality. This can be + anything from calling an external API to calling functions within your UI. + Learn more about Tools in [the next section](/docs/foundations/tools). + + +For models that support [tool](/docs/foundations/tools) calls, assistant messages can contain tool call parts, and tool messages can contain tool output parts. +A single assistant message can call multiple tools, and a single tool message can contain multiple tool results. + +```ts highlight="14-42" +const result = await generateText({ + model: __MODEL__, + messages: [ + { + role: 'user', + content: [ + { + type: 'text', + text: 'How many calories are in this block of cheese?', + }, + { type: 'image', image: fs.readFileSync('./data/roquefort.jpg') }, + ], + }, + { + role: 'assistant', + content: [ + { + type: 'tool-call', + toolCallId: '12345', + toolName: 'get-nutrition-data', + input: { cheese: 'Roquefort' }, + }, + // there could be more tool calls here (parallel calling) + ], + }, + { + role: 'tool', + content: [ + { + type: 'tool-result', + toolCallId: '12345', // needs to match the tool call id + toolName: 'get-nutrition-data', + output: { + type: 'json', + value: { + name: 'Cheese, roquefort', + calories: 369, + fat: 31, + protein: 22, + }, + }, + }, + // there could be more tool results here (parallel calling) + ], + }, + ], +}); +``` + +#### Multi-modal Tool Results + +Tool results can be multi-part and multi-modal, e.g. a text and an image. +You can use `output: { type: 'content', value: [...] }` to specify multi-part tool results. + +```ts highlight="14-27" +const result = await generateText({ + model: __MODEL__, + messages: [ + // ... + { + role: 'tool', + content: [ + { + type: 'tool-result', + toolCallId: '12345', // needs to match the tool call id + toolName: 'get-nutrition-data', + // for models that do not support multi-part tool results, + // you can include a regular output part: + output: { + type: 'json', + value: { + name: 'Cheese, roquefort', + calories: 369, + fat: 31, + protein: 22, + }, + }, + }, + { + type: 'tool-result', + toolCallId: '12345', // needs to match the tool call id + toolName: 'get-nutrition-data', + // for models that support multi-part tool results, + // you can include a multi-part content part: + output: { + type: 'content', + value: [ + { + type: 'text', + text: 'Here is the nutrition data for the cheese:', + }, + { + type: 'image-data', + data: fs + .readFileSync('./data/roquefort-nutrition-data.png') + .toString('base64'), + mediaType: 'image/png', + }, + ], + }, + }, + ], + }, + ], +}); +``` + +### System Messages + +System messages are messages that are sent to the model before the user messages to guide the assistant's behavior. +You can alternatively use the `system` property. + +```ts highlight="4" +const result = await generateText({ + model: __MODEL__, + messages: [ + { role: 'system', content: 'You help planning travel itineraries.' }, + { + role: 'user', + content: + 'I am planning a trip to Berlin for 3 days. Please suggest the best tourist activities for me to do.', + }, + ], +}); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/04-tools.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/04-tools.mdx new file mode 100644 index 000000000..1a400842a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/04-tools.mdx @@ -0,0 +1,251 @@ +--- +title: Tools +description: Learn about tools with the AI SDK. +--- + +# Tools + +While [large language models (LLMs)](/docs/foundations/overview#large-language-models) have incredible generation capabilities, +they struggle with discrete tasks (e.g. mathematics) and interacting with the outside world (e.g. getting the weather). + +Tools are actions that an LLM can invoke. +The results of these actions can be reported back to the LLM to be considered in the next response. + +For example, when you ask an LLM for the "weather in London", and there is a weather tool available, it could call a tool +with London as the argument. The tool would then fetch the weather data and return it to the LLM. The LLM can then use this +information in its response. + +## What is a tool? + +A tool is an object that can be called by the model to perform a specific task. +You can use tools with [`generateText`](/docs/reference/ai-sdk-core/generate-text) +and [`streamText`](/docs/reference/ai-sdk-core/stream-text) by passing one or more tools to the `tools` parameter. + +A tool consists of three properties: + +- **`description`**: An optional description of the tool that can influence when the tool is picked. +- **`inputSchema`**: A [Zod schema](/docs/reference/ai-sdk-core/zod-schema) or a [JSON schema](/docs/reference/ai-sdk-core/json-schema) that defines the input required for the tool to run. The schema is consumed by the LLM, and also used to validate the LLM tool calls. +- **`execute`**: An optional async function that is called with the arguments from the tool call. + + + `streamUI` uses UI generator tools with a `generate` function that can return + React components. + + +If the LLM decides to use a tool, it will generate a tool call. +Tools with an `execute` function are run automatically when these calls are generated. +The output of the tool calls are returned using tool result objects. + +You can automatically pass tool results back to the LLM +using [multi-step calls](/docs/ai-sdk-core/tools-and-tool-calling#multi-step-calls) with `streamText` and `generateText`. + +## Types of Tools + +The AI SDK supports three types of tools, each with different trade-offs: + +### Custom Tools + +Custom tools are tools you define entirely yourself, including the description, input schema, and execute function. They are provider-agnostic and give you full control. + +```ts +import { tool } from 'ai'; +import { z } from 'zod'; + +const weatherTool = tool({ + description: 'Get the weather in a location', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + // Your implementation + return { temperature: 72, conditions: 'sunny' }; + }, +}); +``` + +**When to use**: When you need full control, want provider portability, or are implementing application-specific functionality. + +### Provider-Defined Tools + +Provider-defined tools are tools where the provider specifies the tool's `inputSchema` and `description`, but you provide the `execute` function. These are sometimes called "client tools" because execution happens on your side. + +Examples include Anthropic's `bash` and `text_editor` tools. The model has been specifically trained to use these tools effectively, which can result in better performance for supported tasks. + +```ts +import { anthropic } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: anthropic('claude-opus-4-5'), + tools: { + bash: anthropic.tools.bash_20250124({ + execute: async ({ command }) => { + // Your implementation to run the command + return runCommand(command); + }, + }), + }, + prompt: 'List files in the current directory', +}); +``` + +**When to use**: When the provider offers a tool the model is trained to use well, and you want better performance for that specific task. + +### Provider-Executed Tools + +Provider-executed tools are tools that run entirely on the provider's servers. You configure them, but the provider handles execution. These are sometimes called "server-side tools". + +Examples include OpenAI's web search and Anthropic's code execution. These provide out-of-the-box functionality without requiring you to set up infrastructure. + +```ts +import { openai } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-5.2'), + tools: { + web_search: openai.tools.webSearch(), + }, + prompt: 'What happened in the news today?', +}); +``` + +**When to use**: When you want powerful functionality (like web search or sandboxed code execution) without managing the infrastructure yourself. + +### Comparison + +| Aspect | Custom Tools | Provider-Defined Tools | Provider-Executed Tools | +| ------------------ | ------------------------ | ---------------------- | ----------------------- | +| **Execution** | Your code | Your code | Provider's servers | +| **Schema** | You define | Provider defines | Provider defines | +| **Portability** | Works with any provider | Provider-specific | Provider-specific | +| **Model Training** | General tool use | Optimized for the tool | Optimized for the tool | +| **Setup** | You implement everything | You implement execute | Configuration only | + + + Provider-defined and provider-executed tools are documented in each provider's + page. See [Anthropic Provider](/providers/ai-sdk-providers/anthropic) and + [OpenAI Provider](/providers/ai-sdk-providers/openai) for examples. + + +## Schemas + +Schemas are used to define and validate the [tool input](/docs/ai-sdk-core/tools-and-tool-calling), tools outputs, and structured output generation. + +The AI SDK supports the following schemas: + +- [Zod](https://zod.dev/) v3 and v4 directly or via [`zodSchema()`](/docs/reference/ai-sdk-core/zod-schema) +- [Valibot](https://valibot.dev/) via [`valibotSchema()`](/docs/reference/ai-sdk-core/valibot-schema) from `@ai-sdk/valibot` +- [Standard JSON Schema](https://standardschema.dev/json-schema) compatible schemas +- Raw JSON schemas via [`jsonSchema()`](/docs/reference/ai-sdk-core/json-schema) + + + You can also use schemas for structured output generation with + [`generateText`](/docs/reference/ai-sdk-core/generate-text) and + [`streamText`](/docs/reference/ai-sdk-core/stream-text) using the `output` + setting. + + +## Tool Packages + +Given tools are JavaScript objects, they can be packaged and distributed through npm like any other library. This makes it easy to share reusable tools across projects and with the community. + +### Using Ready-Made Tool Packages + +Install a tool package and import the tools you need: + +```bash +pnpm add some-tool-package +``` + +Then pass them directly to `generateText`, `streamText`, or your agent definition: + +```ts highlight="2, 8" +import { generateText, stepCountIs } from 'ai'; +import { searchTool } from 'some-tool-package'; + +const { text } = await generateText({ + model: 'anthropic/claude-haiku-4.5', + prompt: 'When was Vercel Ship AI?', + tools: { + webSearch: searchTool, + }, + stopWhen: stepCountIs(10), +}); +``` + +### Publishing Your Own Tools + +You can publish your own tool packages to npm for others to use. Simply export your tool objects from your package: + +```ts filename="my-tools/index.ts" +import { tool } from 'ai'; +import { z } from 'zod'; + +export const myTool = tool({ + description: 'A helpful tool', + inputSchema: z.object({ + query: z.string(), + }), + execute: async ({ query }) => { + // your tool logic + return result; + }, +}); +``` + +Anyone can then install and use your tools by importing them. + +To get started, you can use the [AI SDK Tool Package Template](https://github.com/vercel-labs/ai-sdk-tool-as-package-template) which provides a ready-to-use starting point for publishing your own tools. + +## Toolsets + +When you work with tools, you typically need a mix of application-specific tools and general-purpose tools. The community has created various toolsets and resources to help you build and use tools. + +### Ready-to-Use Tool Packages + +These packages provide pre-built tools you can install and use immediately: + +- **[@exalabs/ai-sdk](https://www.npmjs.com/package/@exalabs/ai-sdk)** - Web search tool that lets AI search the web and get real-time information. +- **[@parallel-web/ai-sdk-tools](https://www.npmjs.com/package/@parallel-web/ai-sdk-tools)** - Web search and extract tools powered by Parallel Web API for real-time information and content extraction. +- **[@perplexity-ai/ai-sdk](https://www.npmjs.com/package/@perplexity-ai/ai-sdk)** - Search the web with real-time results and advanced filtering powered by Perplexity's Search API. +- **[@tavily/ai-sdk](https://www.npmjs.com/package/@tavily/ai-sdk)** - Search, extract, crawl, and map tools for enterprise-grade agents to explore the web in real-time. +- **[Stripe agent tools](https://docs.stripe.com/agents?framework=vercel)** - Tools for interacting with Stripe. +- **[StackOne ToolSet](https://docs.stackone.com/agents/typescript/frameworks/vercel-ai-sdk)** - Agentic integrations for hundreds of [enterprise SaaS](https://www.stackone.com/integrations) platforms. +- **[agentic](https://docs.agentic.so/marketplace/ts-sdks/ai-sdk)** - A collection of 20+ tools that connect to external APIs such as [Exa](https://exa.ai/) or [E2B](https://e2b.dev/). +- **[Amazon Bedrock AgentCore](https://github.com/aws/bedrock-agentcore-sdk-typescript)** - Fully managed AI agent services including [**Browser**](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/built-in-tools.html) (a fast and secure cloud-based browser runtime to enable agents to interact with web applications, fill forms, navigate websites, and extract information) and [**Code Interpreter**](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/built-in-tools.html) (an isolated sandbox environment for agents to execute code in Python, JavaScript, and TypeScript, enhancing accuracy and expanding ability to solve complex end-to-end tasks). +- **[@airweave/vercel-ai-sdk](https://www.npmjs.com/package/@airweave/vercel-ai-sdk)** - Unified semantic search across 35+ data sources (Notion, Slack, Google Drive, databases, and more) for AI agents. +- **[Composio](https://docs.composio.dev/providers/vercel)** - 250+ tools like GitHub, Gmail, Salesforce and [more](https://composio.dev/tools). +- **[JigsawStack](http://www.jigsawstack.com/docs/integration/vercel)** - Over 30+ small custom fine-tuned models available for specific uses. +- **[AI Tools Registry](https://ai-tools-registry.vercel.app)** - A Shadcn-compatible tool definitions and components registry for the AI SDK. +- **[Toolhouse](https://docs.toolhouse.ai/toolhouse/toolhouse-sdk/using-vercel-ai)** - AI function-calling in 3 lines of code for over 25 different actions. +- **[bash-tool](https://www.npmjs.com/package/bash-tool)** - Provides `bash`, `readFile`, and `writeFile` tools for AI agents. Supports [@vercel/sandbox](https://vercel.com/docs/vercel-sandbox) for full VM isolation. + +### MCP Tools + +These are pre-built tools available as MCP servers: + +- **[Smithery](https://smithery.ai/docs/integrations/vercel_ai_sdk)** - An open marketplace of 6,000+ MCPs, including [Browserbase](https://browserbase.com/) and [Exa](https://exa.ai/). +- **[Pipedream](https://pipedream.com/docs/connect/mcp/ai-frameworks/vercel-ai-sdk)** - Developer toolkit that lets you easily add 3,000+ integrations to your app or AI agent. +- **[Apify](https://docs.apify.com/platform/integrations/vercel-ai-sdk)** - Apify provides a [marketplace](https://apify.com/store) of thousands of tools for web scraping, data extraction, and browser automation. + +### Tool Building Tutorials + +These tutorials and guides help you build your own tools that integrate with specific services: + +- **[browserbase](https://docs.browserbase.com/integrations/vercel/introduction#vercel-ai-integration)** - Tutorial for building browser tools that run a headless browser. +- **[browserless](https://docs.browserless.io/ai-integrations/vercel-ai-sdk)** - Guide for integrating browser automation (self-hosted or cloud-based). +- **[AI Tool Maker](https://github.com/nihaocami/ai-tool-maker)** - A CLI utility to generate AI SDK tools from OpenAPI specs. +- **[Interlify](https://www.interlify.com/docs/integrate-with-vercel-ai)** - Guide for converting APIs into tools. +- **[DeepAgent](https://deepagent.amardeep.space/docs/vercel-ai-sdk)** - A suite of 50+ AI tools and integrations, seamlessly connecting with APIs like Tavily, E2B, Airtable and [more](https://deepagent.amardeep.space/docs). + + + Do you have open source tools or tool libraries that are compatible with the + AI SDK? Please [file a pull request](https://github.com/vercel/ai/pulls) to + add them to this list. + + +## Learn more + +The AI SDK Core [Tool Calling](/docs/ai-sdk-core/tools-and-tool-calling) +and [Agents](/docs/agents) documentation has more information about tools and tool calling. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/05-streaming.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/05-streaming.mdx new file mode 100644 index 000000000..a4434b08f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/05-streaming.mdx @@ -0,0 +1,62 @@ +--- +title: Streaming +description: Why use streaming for AI applications? +--- + +# Streaming + +Streaming conversational text UIs (like ChatGPT) have gained massive popularity over the past few months. This section explores the benefits and drawbacks of streaming and blocking interfaces. + +[Large language models (LLMs)](/docs/foundations/overview#large-language-models) are extremely powerful. However, when generating long outputs, they can be very slow compared to the latency you're likely used to. If you try to build a traditional blocking UI, your users might easily find themselves staring at loading spinners for 5, 10, even up to 40s waiting for the entire LLM response to be generated. This can lead to a poor user experience, especially in conversational applications like chatbots. Streaming UIs can help mitigate this issue by **displaying parts of the response as they become available**. + +
+ + + + + + +
+ +## Real-world Examples + +Here are 2 examples that illustrate how streaming UIs can improve user experiences in a real-world setting – the first uses a blocking UI, while the second uses a streaming UI. + +### Blocking UI + + + +### Streaming UI + + + +As you can see, the streaming UI is able to start displaying the response much faster than the blocking UI. This is because the blocking UI has to wait for the entire response to be generated before it can display anything, while the streaming UI can display parts of the response as they become available. + +While streaming interfaces can greatly enhance user experiences, especially with larger language models, they aren't always necessary or beneficial. If you can achieve your desired functionality using a smaller, faster model without resorting to streaming, this route can often lead to simpler and more manageable development processes. + +However, regardless of the speed of your model, the AI SDK is designed to make implementing streaming UIs as simple as possible. In the example below, we stream text generation in under 10 lines of code using the SDK's [`streamText`](/docs/reference/ai-sdk-core/stream-text) function: + +```ts +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +const { textStream } = streamText({ + model: __MODEL__, + prompt: 'Write a poem about embedding models.', +}); + +for await (const textPart of textStream) { + console.log(textPart); +} +``` + +For an introduction to streaming UIs and the AI SDK, check out our [Getting Started guides](/docs/getting-started). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/06-provider-options.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/06-provider-options.mdx new file mode 100644 index 000000000..44201184a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/06-provider-options.mdx @@ -0,0 +1,337 @@ +--- +title: Provider Options +description: Learn how to use provider-specific options to control reasoning, caching, and other advanced features. +--- + +# Provider Options + +Provider options let you pass provider-specific configuration that goes beyond the [standard settings](/docs/ai-sdk-core/settings) shared by all providers. They are set via the `providerOptions` property on functions like `generateText` and `streamText`. + +```ts +const result = await generateText({ + model: openai('gpt-5.2'), + prompt: 'Explain quantum entanglement.', + providerOptions: { + openai: { + reasoningEffort: 'low', + }, + }, +}); +``` + +Provider options are namespaced by the provider name (e.g. `openai`, `anthropic`) so you can even include options for multiple providers in the same call — only the options matching the active provider are used. See [Prompts: Provider Options](/docs/foundations/prompts#provider-options) for details on applying options at the message and message-part level. + +## Common Provider Options + +The sections below cover the most frequently used provider options, focusing on reasoning and output control for OpenAI and Anthropic. For a complete reference, see the individual provider pages: + +- [OpenAI provider options](/providers/ai-sdk-providers/openai) +- [Anthropic provider options](/providers/ai-sdk-providers/anthropic) + +--- + +## OpenAI + +### Reasoning Effort + +For reasoning models (e.g. `o3`, `o4-mini`, `gpt-5.2`), `reasoningEffort` controls how much internal reasoning the model performs before responding. Lower values are faster and cheaper; higher values produce more thorough answers. + +```ts +import { + openai, + type OpenAILanguageModelResponsesOptions, +} from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const { text, usage, providerMetadata } = await generateText({ + model: openai('gpt-5.2'), + prompt: 'Invent a new holiday and describe its traditions.', + providerOptions: { + openai: { + reasoningEffort: 'low', // 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' + } satisfies OpenAILanguageModelResponsesOptions, + }, +}); + +console.log('Reasoning tokens:', providerMetadata?.openai?.reasoningTokens); +``` + +| Value | Behavior | +| ----------- | ------------------------------------------ | +| `'none'` | No reasoning (GPT-5.1 models only) | +| `'minimal'` | Bare-minimum reasoning | +| `'low'` | Fast, concise reasoning | +| `'medium'` | Balanced (default) | +| `'high'` | Thorough reasoning | +| `'xhigh'` | Maximum reasoning (GPT-5.1-Codex-Max only) | + + + `'none'` and `'xhigh'` are only supported on specific models. Using them with + unsupported models will result in an error. + + +### Reasoning Summary + +When working with reasoning models, you may want to see _how_ the model arrived at its answer. The `reasoningSummary` option surfaces the model's thought process. + +#### Streaming + +```ts +import { + openai, + type OpenAILanguageModelResponsesOptions, +} from '@ai-sdk/openai'; +import { streamText } from 'ai'; + +const result = streamText({ + model: openai('gpt-5.2'), + prompt: 'Tell me about the Mission burrito debate in San Francisco.', + providerOptions: { + openai: { + reasoningSummary: 'detailed', // 'auto' | 'detailed' + } satisfies OpenAILanguageModelResponsesOptions, + }, +}); + +for await (const part of result.fullStream) { + if (part.type === 'reasoning') { + console.log(`Reasoning: ${part.textDelta}`); + } else if (part.type === 'text-delta') { + process.stdout.write(part.textDelta); + } +} +``` + +#### Non-streaming + +```ts +import { + openai, + type OpenAILanguageModelResponsesOptions, +} from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-5.2'), + prompt: 'Tell me about the Mission burrito debate in San Francisco.', + providerOptions: { + openai: { + reasoningSummary: 'auto', + } satisfies OpenAILanguageModelResponsesOptions, + }, +}); + +console.log('Reasoning:', result.reasoning); +``` + +| Value | Behavior | +| ------------ | ------------------------------ | +| `'auto'` | Condensed summary of reasoning | +| `'detailed'` | Comprehensive reasoning output | + +### Text Verbosity + +Control the length and detail of the model's text response independently of reasoning: + +```ts +import { + openai, + type OpenAILanguageModelResponsesOptions, +} from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-5-mini'), + prompt: 'Write a poem about a boy and his first pet dog.', + providerOptions: { + openai: { + textVerbosity: 'low', // 'low' | 'medium' | 'high' + } satisfies OpenAILanguageModelResponsesOptions, + }, +}); +``` + +| Value | Behavior | +| ---------- | -------------------------------- | +| `'low'` | Terse, minimal responses | +| `'medium'` | Balanced detail (default) | +| `'high'` | Verbose, comprehensive responses | + +--- + +## Anthropic + +### Thinking (Extended Reasoning) + +Anthropic's thinking feature gives Claude models a dedicated "thinking" phase before they respond. You enable it by providing a `thinking` object with a token budget. + +```ts +import { anthropic, AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const { text, reasoning, reasoningText } = await generateText({ + model: anthropic('claude-opus-4-20250514'), + prompt: 'How many people will live in the world in 2040?', + providerOptions: { + anthropic: { + thinking: { type: 'enabled', budgetTokens: 12000 }, + } satisfies AnthropicLanguageModelOptions, + }, +}); + +console.log('Reasoning:', reasoningText); +console.log('Answer:', text); +``` + +The `budgetTokens` value sets the upper limit on how many tokens the model can use for its internal reasoning. Higher budgets allow deeper reasoning but increase latency and cost. + + + Thinking is supported on `claude-opus-4-20250514`, `claude-sonnet-4-20250514`, + and `claude-sonnet-4-5-20250929` models. + + +### Effort + +The `effort` option provides a simpler way to control reasoning depth without specifying a token budget. It affects thinking, text responses, and function calls. + +```ts +import { anthropic, AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const { text, usage } = await generateText({ + model: anthropic('claude-opus-4-20250514'), + prompt: 'How many people will live in the world in 2040?', + providerOptions: { + anthropic: { + effort: 'low', // 'low' | 'medium' | 'high' + } satisfies AnthropicLanguageModelOptions, + }, +}); +``` + +| Value | Behavior | +| ---------- | ------------------------------------ | +| `'low'` | Minimal reasoning, fastest responses | +| `'medium'` | Balanced reasoning | +| `'high'` | Thorough reasoning (default) | + +### Fast Mode + +For `claude-opus-4-6`, the `speed` option enables approximately 2.5x faster output token speeds: + +```ts +import { anthropic, AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: anthropic('claude-opus-4-6'), + prompt: 'Write a short poem about the sea.', + providerOptions: { + anthropic: { + speed: 'fast', // 'fast' | 'standard' + } satisfies AnthropicLanguageModelOptions, + }, +}); +``` + +--- + +## Combining Options + +You can combine multiple provider options in a single call. For example, using both reasoning effort and reasoning summaries with OpenAI: + +```ts +import { + openai, + type OpenAILanguageModelResponsesOptions, +} from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-5.2'), + prompt: 'What are the implications of quantum computing for cryptography?', + providerOptions: { + openai: { + reasoningEffort: 'high', + reasoningSummary: 'detailed', + } satisfies OpenAILanguageModelResponsesOptions, + }, +}); +``` + +Or enabling thinking with a low effort level for Anthropic: + +```ts +import { anthropic, AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: anthropic('claude-opus-4-20250514'), + prompt: 'Explain the Riemann hypothesis in simple terms.', + providerOptions: { + anthropic: { + thinking: { type: 'enabled', budgetTokens: 8000 }, + effort: 'medium', + } satisfies AnthropicLanguageModelOptions, + }, +}); +``` + +## Using Provider Options with the AI Gateway + +Provider options work the same way when using the [Vercel AI Gateway](/providers/ai-sdk-providers/ai-gateway). Use the underlying provider name (e.g. `openai`, `anthropic`) as the key — not `gateway`. The AI Gateway forwards these options to the target provider automatically. + +```ts +import type { OpenAILanguageModelResponsesOptions } from '@ai-sdk/openai'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: 'openai/gpt-5.2', // AI Gateway model string + prompt: 'What are the implications of quantum computing for cryptography?', + providerOptions: { + openai: { + reasoningEffort: 'high', + reasoningSummary: 'detailed', + } satisfies OpenAILanguageModelResponsesOptions, + }, +}); +``` + +You can also combine gateway-specific options (like routing and fallbacks) with provider-specific options in the same call: + +```ts +import type { AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import type { GatewayLanguageModelOptions } from '@ai-sdk/gateway'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: 'anthropic/claude-sonnet-4', + prompt: 'Explain quantum computing', + providerOptions: { + // Gateway-specific: control routing + gateway: { + order: ['vertex', 'anthropic'], + } satisfies GatewayLanguageModelOptions, + // Provider-specific: enable reasoning + anthropic: { + thinking: { type: 'enabled', budgetTokens: 12000 }, + } satisfies AnthropicLanguageModelOptions, + }, +}); +``` + +For more on gateway routing, fallbacks, and other gateway-specific options, see the [AI Gateway provider documentation](/providers/ai-sdk-providers/ai-gateway#provider-options). + +## Type Safety + +Each provider exports a type for its options, which you can use with `satisfies` to get autocomplete and catch typos at build time: + +```ts +import { type OpenAILanguageModelResponsesOptions } from '@ai-sdk/openai'; +import { type AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +``` + +For a full list of available options, see the provider-specific documentation: + +- [OpenAI Provider](/providers/ai-sdk-providers/openai) +- [Anthropic Provider](/providers/ai-sdk-providers/anthropic) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/index.mdx new file mode 100644 index 000000000..320dd0997 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-foundations/index.mdx @@ -0,0 +1,49 @@ +--- +title: Foundations +description: A section that covers foundational knowledge around LLMs and concepts crucial to the AI SDK +--- + +# Foundations + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/00-choosing-a-provider.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/00-choosing-a-provider.mdx new file mode 100644 index 000000000..70ed1f7a4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/00-choosing-a-provider.mdx @@ -0,0 +1,110 @@ +--- +title: Choosing a Provider +description: Learn how to configure and authenticate with AI providers in the AI SDK. +--- + +# Choosing a Provider + +The AI SDK supports dozens of model providers through [first-party](/providers/ai-sdk-providers), [OpenAI-compatible](/providers/openai-compatible-providers), and [community](/providers/community-providers) packages. + +```ts +import { generateText } from 'ai'; +__PROVIDER_IMPORT__; + +const { text } = await generateText({ + model: __MODEL__, + prompt: 'What is love?', +}); +``` + +## AI Gateway + +The [Vercel AI Gateway](/providers/ai-sdk-providers/ai-gateway) is the fastest way to get started with the AI SDK. Access models from OpenAI, Anthropic, Google, and other providers. Authenticate with [OIDC](https://ai-sdk.dev/providers/ai-sdk-providers/ai-gateway#oidc-authentication-vercel-deployments) or an AI Gateway API key + +
+ } + > + Get an API Key + +
+ +Add your API key to your environment: + +```env filename=".env.local" +AI_GATEWAY_API_KEY=your_api_key_here +``` + +The AI Gateway is the default [global provider](/docs/ai-sdk-core/provider-management#global-provider-configuration), so you can access models using a simple string: + +```ts +import { generateText } from 'ai'; + +const { text } = await generateText({ + model: 'anthropic/claude-sonnet-4.5', + prompt: 'What is love?', +}); +``` + +You can also explicitly import and use the gateway provider: + +```ts +// Option 1: Import from 'ai' package (included by default) +import { gateway } from 'ai'; +model: gateway('anthropic/claude-sonnet-4.5'); + +// Option 2: Install and import from '@ai-sdk/gateway' package +import { gateway } from '@ai-sdk/gateway'; +model: gateway('anthropic/claude-sonnet-4.5'); +``` + +## Using Dedicated Providers + +You can also use [first-party](/providers/ai-sdk-providers), [OpenAI-compatible](/providers/openai-compatible-providers), and [community](/providers/community-providers) provider packages directly. Install the package and create a provider instance. For example, to use Anthropic: + +
+ + + + + + + + + + + + + + +
+ +```ts +import { anthropic } from '@ai-sdk/anthropic'; + +model: anthropic('claude-sonnet-4-5'); +``` + +You can change the default global provider so string model references use your preferred provider everywhere in your application. Learn more about [provider management](/docs/ai-sdk-core/provider-management#global-provider-configuration). + +See [available providers](/providers/ai-sdk-providers) for setup instructions for each provider. + +## Custom Providers + +You can build your own provider to integrate any service with the AI SDK. The AI SDK provides a [Language Model Specification](https://github.com/vercel/ai/tree/main/packages/provider/src/language-model/v3) that ensures compatibility across providers. + +```ts +import { generateText } from 'ai'; +import { yourProvider } from 'your-custom-provider'; + +const { text } = await generateText({ + model: yourProvider('your-model-id'), + prompt: 'What is love?', +}); +``` + +See [Writing a Custom Provider](/providers/community-providers/custom-providers) for a complete guide. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/01-navigating-the-library.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/01-navigating-the-library.mdx new file mode 100644 index 000000000..b7147a626 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/01-navigating-the-library.mdx @@ -0,0 +1,85 @@ +--- +title: Navigating the Library +description: Learn how to navigate the AI SDK. +--- + +# Navigating the Library + +The AI SDK is a powerful toolkit for building AI applications. This page will help you pick the right tools for your requirements. + +Let’s start with a quick overview of the AI SDK, which is comprised of three parts: + +- **[AI SDK Core](/docs/ai-sdk-core/overview):** A unified, provider agnostic API for generating text, structured objects, and tool calls with LLMs. +- **[AI SDK UI](/docs/ai-sdk-ui/overview):** A set of framework-agnostic hooks for building chat and generative user interfaces. +- [AI SDK RSC](/docs/ai-sdk-rsc/overview): Stream generative user interfaces with React Server Components (RSC). Development is currently experimental and we recommend using [AI SDK UI](/docs/ai-sdk-ui/overview). + +## Choosing the Right Tool for Your Environment + +When deciding which part of the AI SDK to use, your first consideration should be the environment and existing stack you are working with. Different components of the SDK are tailored to specific frameworks and environments. + +| Library | Purpose | Environment Compatibility | +| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | +| [AI SDK Core](/docs/ai-sdk-core/overview) | Call any LLM with unified API (e.g. [generateText](/docs/reference/ai-sdk-core/generate-text) and [streamText](/docs/reference/ai-sdk-core/stream-text)) | Any JS environment (e.g. Node.js, Deno, Browser) | +| [AI SDK UI](/docs/ai-sdk-ui/overview) | Build streaming chat and generative UIs (e.g. [useChat](/docs/reference/ai-sdk-ui/use-chat)) | React & Next.js, Vue & Nuxt, Svelte & SvelteKit | +| [AI SDK RSC](/docs/ai-sdk-rsc/overview) | Stream generative UIs from Server to Client (e.g. [streamUI](/docs/reference/ai-sdk-rsc/stream-ui)). Development is currently experimental and we recommend using [AI SDK UI](/docs/ai-sdk-ui/overview). | Any framework that supports React Server Components (e.g. Next.js) | + +## Environment Compatibility + +These tools have been designed to work seamlessly with each other and it's likely that you will be using them together. Let's look at how you could decide which libraries to use based on your application environment, existing stack, and requirements. + +The following table outlines AI SDK compatibility based on environment: + +| Environment | [AI SDK Core](/docs/ai-sdk-core/overview) | [AI SDK UI](/docs/ai-sdk-ui/overview) | [AI SDK RSC](/docs/ai-sdk-rsc/overview) | +| --------------------- | ----------------------------------------- | ------------------------------------- | --------------------------------------- | +| None / Node.js / Deno | | | | +| Vue / Nuxt | | | | +| Svelte / SvelteKit | | | | +| Next.js Pages Router | | | | +| Next.js App Router | | | | + +## When to use AI SDK UI + +AI SDK UI provides a set of framework-agnostic hooks for quickly building **production-ready AI-native applications**. It offers: + +- Full support for streaming chat and client-side generative UI +- Utilities for handling common AI interaction patterns (i.e. chat, completion, assistant) +- Production-tested reliability and performance +- Compatibility across popular frameworks + +## AI SDK UI Framework Compatibility + +AI SDK UI supports the following frameworks: [React](https://react.dev/), [Svelte](https://svelte.dev/), and [Vue.js](https://vuejs.org/). Here is a comparison of the supported functions across these frameworks: + +| Function | React | Svelte | Vue.js | +| ---------------------------------------------------------- | ------------------- | ------------------- | ------------------- | +| [useChat](/docs/reference/ai-sdk-ui/use-chat) | | | | +| [useChat](/docs/reference/ai-sdk-ui/use-chat) tool calling | | | | +| [useCompletion](/docs/reference/ai-sdk-ui/use-completion) | | | | +| [useObject](/docs/reference/ai-sdk-ui/use-object) | | | | + + + [Contributions](https://github.com/vercel/ai/blob/main/CONTRIBUTING.md) are + welcome to implement missing features for non-React frameworks. + + +## When to use AI SDK RSC + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +[React Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components) +(RSCs) provide a new approach to building React applications that allow components +to render on the server, fetch data directly, and stream the results to the client, +reducing bundle size and improving performance. They also introduce a new way to +call server-side functions from anywhere in your application called [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations). + +AI SDK RSC provides a number of utilities that allow you to stream values and UI directly from the server to the client. However, **it's important to be aware of current limitations**: + +- **Cancellation**: currently, it is not possible to abort a stream using Server Actions. This will be improved in future releases of React and Next.js. +- **Increased Data Transfer**: using [`createStreamableUI`](/docs/reference/ai-sdk-rsc/create-streamable-ui) can lead to quadratic data transfer (quadratic to the length of generated text). You can avoid this using [ `createStreamableValue` ](/docs/reference/ai-sdk-rsc/create-streamable-value) instead, and rendering the component client-side. +- **Re-mounting Issue During Streaming**: when using `createStreamableUI`, components re-mount on `.done()`, causing [flickering](https://github.com/vercel/ai/issues/2232). + +Given these limitations, **we recommend using [AI SDK UI](/docs/ai-sdk-ui/overview) for production applications**. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/02-nextjs-app-router.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/02-nextjs-app-router.mdx new file mode 100644 index 000000000..64eece823 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/02-nextjs-app-router.mdx @@ -0,0 +1,559 @@ +--- +title: Next.js App Router +description: Learn how to build your first agent with the AI SDK and Next.js App Router. +--- + +# Next.js App Router Quickstart + +The AI SDK is a powerful TypeScript library designed to help developers build AI-powered applications. + +In this quickstart tutorial, you'll build a simple agent with a streaming chat user interface. Along the way, you'll learn key concepts and techniques that are fundamental to using the AI SDK in your own projects. + +If you are unfamiliar with the concepts of [Prompt Engineering](/docs/advanced/prompt-engineering) and [HTTP Streaming](/docs/foundations/streaming), you can optionally read these documents first. + +## Prerequisites + +To follow this quickstart, you'll need: + +- Node.js 18+ and pnpm installed on your local development machine. +- A [ Vercel AI Gateway ](https://vercel.com/ai-gateway) API key. + +If you haven't obtained your Vercel AI Gateway API key, you can do so by [signing up](https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai&title=Go+to+AI+Gateway) on the Vercel website. + +## Create Your Application + +Start by creating a new Next.js application. This command will create a new directory named `my-ai-app` and set up a basic Next.js application inside it. + +
+ + Be sure to select yes when prompted to use the App Router and Tailwind CSS. + If you are looking for the Next.js Pages Router quickstart guide, you can + find it [here](/docs/getting-started/nextjs-pages-router). + +
+ + + +Navigate to the newly created directory: + + + +### Install dependencies + +Install `ai` and `@ai-sdk/react`, the AI package and AI SDK's React hooks. The AI SDK's [ Vercel AI Gateway provider ](/providers/ai-sdk-providers/ai-gateway) ships with the `ai` package. You'll also install `zod`, a schema validation library used for defining tool inputs. + + + This guide uses the Vercel AI Gateway provider so you can access hundreds of + models from different providers with one API key, but you can switch to any + provider or model by installing its package. Check out available [AI SDK + providers](/providers/ai-sdk-providers) for more information. + + +
+ + + + + + + + + + + + + + + + +
+ +### Configure your AI Gateway API key + +Create a `.env.local` file in your project root and add your AI Gateway API key. This key authenticates your application with Vercel AI Gateway. + + + +Edit the `.env.local` file: + +```env filename=".env.local" +AI_GATEWAY_API_KEY=xxxxxxxxx +``` + +Replace `xxxxxxxxx` with your actual Vercel AI Gateway API key. + + + The AI SDK's Vercel AI Gateway Provider will default to using the + `AI_GATEWAY_API_KEY` environment variable. + + +## Create a Route Handler + +Create a route handler, `app/api/chat/route.ts` and add the following code: + +```tsx filename="app/api/chat/route.ts" +import { streamText, UIMessage, convertToModelMessages } from 'ai'; +__PROVIDER_IMPORT__; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse(); +} +``` + +Let's take a look at what is happening in this code: + +1. Define an asynchronous `POST` request handler and extract `messages` from the body of the request. The `messages` variable contains a history of the conversation between you and the chatbot and provides the chatbot with the necessary context to make the next generation. The `messages` are of UIMessage type, which are designed for use in application UI - they contain the entire message history and associated metadata like timestamps. +2. Call [`streamText`](/docs/reference/ai-sdk-core/stream-text), which is imported from the `ai` package. This function accepts a configuration object that contains a `model` provider and `messages` (defined in step 1). You can pass additional [settings](/docs/ai-sdk-core/settings) to further customize the model's behavior. The `messages` key expects a `ModelMessage[]` array. This type is different from `UIMessage` in that it does not include metadata, such as timestamps or sender information. To convert between these types, we use the `convertToModelMessages` function, which strips the UI-specific metadata and transforms the `UIMessage[]` array into the `ModelMessage[]` format that the model expects. +3. The `streamText` function returns a [`StreamTextResult`](/docs/reference/ai-sdk-core/stream-text#result-object). This result object contains the [ `toUIMessageStreamResponse` ](/docs/reference/ai-sdk-core/stream-text#to-ui-message-stream-response) function which converts the result to a streamed response object. +4. Finally, return the result to the client to stream the response. + +This Route Handler creates a POST request endpoint at `/api/chat`. + +## Choosing a Provider + +The AI SDK supports dozens of model providers through [first-party](/providers/ai-sdk-providers), [OpenAI-compatible](/providers/openai-compatible-providers), and [ community ](/providers/community-providers) packages. + +This quickstart uses the [Vercel AI Gateway](https://vercel.com/ai-gateway) provider, which is the default [global provider](/docs/ai-sdk-core/provider-management#global-provider-configuration). This means you can access models using a simple string in the model configuration: + +```ts +model: __MODEL__; +``` + +You can also explicitly import and use the gateway provider in two other equivalent ways: + +```ts +// Option 1: Import from 'ai' package (included by default) +import { gateway } from 'ai'; +model: gateway('anthropic/claude-sonnet-4.5'); + +// Option 2: Install and import from '@ai-sdk/gateway' package +import { gateway } from '@ai-sdk/gateway'; +model: gateway('anthropic/claude-sonnet-4.5'); +``` + +### Using other providers + +To use a different provider, install its package and create a provider instance. For example, to use OpenAI directly: + +
+ + + + + + + + + + + + + + + + +
+ +```ts +import { openai } from '@ai-sdk/openai'; + +model: openai('gpt-5.1'); +``` + +#### Updating the global provider + +You can change the default global provider so string model references use your preferred provider everywhere in your application. Learn more about [provider management](/docs/ai-sdk-core/provider-management#global-provider-configuration). + +Pick the approach that best matches how you want to manage providers across your application. + +## Wire up the UI + +Now that you have a Route Handler that can query an LLM, it's time to setup your frontend. The AI SDK's [ UI ](/docs/ai-sdk-ui) package abstracts the complexity of a chat interface into one hook, [`useChat`](/docs/reference/ai-sdk-ui/use-chat). + +Update your root page (`app/page.tsx`) with the following code to show a list of chat messages and provide a user message input: + +```tsx filename="app/page.tsx" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; + +export default function Chat() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat(); + return ( +
+ {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, i) => { + switch (part.type) { + case 'text': + return
{part.text}
; + } + })} +
+ ))} + +
{ + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }} + > + setInput(e.currentTarget.value)} + /> +
+
+ ); +} +``` + + + Make sure you add the `"use client"` directive to the top of your file. This + allows you to add interactivity with JavaScript. + + +This page utilizes the `useChat` hook, which will, by default, use the `POST` API route you created earlier (`/api/chat`). The hook provides functions and state for handling user input and form submission. The `useChat` hook provides multiple utility functions and state variables: + +- `messages` - the current chat messages (an array of objects with `id`, `role`, and `parts` properties). +- `sendMessage` - a function to send a message to the chat API. + +The component uses local state (`useState`) to manage the input field value, and handles form submission by calling `sendMessage` with the input text and then clearing the input field. + +The LLM's response is accessed through the message `parts` array. Each message contains an ordered array of `parts` that represents everything the model generated in its response. These parts can include plain text, reasoning tokens, and more that you will see later. The `parts` array preserves the sequence of the model's outputs, allowing you to display or process each component in the order it was generated. + +## Running Your Application + +With that, you have built everything you need for your chatbot! To start your application, use the command: + + + +Head to your browser and open http://localhost:3000. You should see an input field. Test it out by entering a message and see the AI chatbot respond in real-time! The AI SDK makes it fast and easy to build AI chat interfaces with Next.js. + +## Enhance Your Chatbot with Tools + +While large language models (LLMs) have incredible generation capabilities, they struggle with discrete tasks (e.g. mathematics) and interacting with the outside world (e.g. getting the weather). This is where [tools](/docs/ai-sdk-core/tools-and-tool-calling) come in. + +Tools are actions that an LLM can invoke. The results of these actions can be reported back to the LLM to be considered in the next response. + +For example, if a user asks about the current weather, without tools, the model would only be able to provide general information based on its training data. But with a weather tool, it can fetch and provide up-to-date, location-specific weather information. + +Let's enhance your chatbot by adding a simple weather tool. + +### Update Your Route Handler + +Modify your `app/api/chat/route.ts` file to include the new weather tool: + +```tsx filename="app/api/chat/route.ts" highlight="1,11-25" +import { streamText, UIMessage, convertToModelMessages, tool } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +In this updated code: + +1. You import the `tool` function from the `ai` package and `z` from `zod` for schema validation. +2. You define a `tools` object with a `weather` tool. This tool: + + - Has a description that helps the model understand when to use it. + - Defines `inputSchema` using a Zod schema, specifying that it requires a `location` string to execute this tool. The model will attempt to extract this input from the context of the conversation. If it can't, it will ask the user for the missing information. + - Defines an `execute` function that simulates getting weather data (in this case, it returns a random temperature). This is an asynchronous function running on the server so you can fetch real data from an external API. + +Now your chatbot can "fetch" weather information for any location the user asks about. When the model determines it needs to use the weather tool, it will generate a tool call with the necessary input. The `execute` function will then be automatically run, and the tool output will be added to the `messages` as a `tool` message. + +Try asking something like "What's the weather in New York?" and see how the model uses the new tool. + +Notice the blank response in the UI? This is because instead of generating a text response, the model generated a tool call. You can access the tool call and subsequent tool result on the client via the `tool-weather` part of the `message.parts` array. + + + Tool parts are always named `tool-{toolName}`, where `{toolName}` is the key + you used when defining the tool. In this case, since we defined the tool as + `weather`, the part type is `tool-weather`. + + +### Update the UI + +To display the tool invocation in your UI, update your `app/page.tsx` file: + +```tsx filename="app/page.tsx" highlight="18-22" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; + +export default function Chat() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat(); + return ( +
+ {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, i) => { + switch (part.type) { + case 'text': + return
{part.text}
; + case 'tool-weather': + return ( +
+                    {JSON.stringify(part, null, 2)}
+                  
+ ); + } + })} +
+ ))} + +
{ + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }} + > + setInput(e.currentTarget.value)} + /> +
+
+ ); +} +``` + +With this change, you're updating the UI to handle different message parts. For text parts, you display the text content as before. For weather tool invocations, you display a JSON representation of the tool call and its result. + +Now, when you ask about the weather, you'll see the tool call and its result displayed in your chat interface. + +## Enabling Multi-Step Tool Calls + +You may have noticed that while the tool is now visible in the chat interface, the model isn't using this information to answer your original query. This is because once the model generates a tool call, it has technically completed its generation. + +To solve this, you can enable multi-step tool calls using `stopWhen`. By default, `stopWhen` is set to `stepCountIs(1)`, which means generation stops after the first step when there are tool results. By changing this condition, you can allow the model to automatically send tool results back to itself to trigger additional generations until your specified stopping condition is met. In this case, you want the model to continue generating so it can use the weather tool results to answer your original question. + +### Update Your Route Handler + +Modify your `app/api/chat/route.ts` file to include the `stopWhen` condition: + +```tsx filename="app/api/chat/route.ts" highlight="16" +import { + streamText, + UIMessage, + convertToModelMessages, + tool, + stepCountIs, +} from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + stopWhen: stepCountIs(5), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + onStepFinish: ({ toolResults }) => { + console.log(toolResults); + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +In this updated code: + +1. You set `stopWhen` to be when `stepCountIs` 5, allowing the model to use up to 5 "steps" for any given generation. +2. You add an `onStepFinish` callback to log any `toolResults` from each step of the interaction, helping you understand the model's tool usage. + +Head back to the browser and ask about the weather in a location. You should now see the model using the weather tool results to answer your question. + +By setting `stopWhen: stepCountIs(5)`, you're allowing the model to use up to 5 "steps" for any given generation. This enables more complex interactions and allows the model to gather and process information over several steps if needed. You can see this in action by adding another tool to convert the temperature from Celsius to Fahrenheit. + +### Add another tool + +Update your `app/api/chat/route.ts` file to add a new tool to convert the temperature from Fahrenheit to Celsius: + +```tsx filename="app/api/chat/route.ts" highlight="31-46" +import { + streamText, + UIMessage, + convertToModelMessages, + tool, + stepCountIs, +} from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + stopWhen: stepCountIs(5), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + convertFahrenheitToCelsius: tool({ + description: 'Convert a temperature in fahrenheit to celsius', + inputSchema: z.object({ + temperature: z + .number() + .describe('The temperature in fahrenheit to convert'), + }), + execute: async ({ temperature }) => { + const celsius = Math.round((temperature - 32) * (5 / 9)); + return { + celsius, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +### Update Your Frontend + +update your `app/page.tsx` file to render the new temperature conversion tool: + +```tsx filename="app/page.tsx" highlight="19" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; + +export default function Chat() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat(); + return ( +
+ {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, i) => { + switch (part.type) { + case 'text': + return
{part.text}
; + case 'tool-weather': + case 'tool-convertFahrenheitToCelsius': + return ( +
+                    {JSON.stringify(part, null, 2)}
+                  
+ ); + } + })} +
+ ))} + +
{ + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }} + > + setInput(e.currentTarget.value)} + /> +
+
+ ); +} +``` + +This update handles the new `tool-convertFahrenheitToCelsius` part type, displaying the temperature conversion tool calls and results in the UI. + +Now, when you ask "What's the weather in New York in celsius?", you should see a more complete interaction: + +1. The model will call the weather tool for New York. +2. You'll see the tool output displayed. +3. It will then call the temperature conversion tool to convert the temperature from Fahrenheit to Celsius. +4. The model will then use that information to provide a natural language response about the weather in New York. + +This multi-step approach allows the model to gather information and use it to provide more accurate and contextual responses, making your chatbot considerably more useful. + +This simple example demonstrates how tools can expand your model's capabilities. You can create more complex tools to integrate with real APIs, databases, or any other external systems, allowing the model to access and process real-world data in real-time. Tools bridge the gap between the model's knowledge cutoff and current information. + +## Where to Next? + +You've built an AI chatbot using the AI SDK! From here, you have several paths to explore: + +- To learn more about the AI SDK, read through the [documentation](/docs). +- If you're interested in diving deeper with guides, check out the [RAG (retrieval-augmented generation)](/cookbook/guides/rag-chatbot) and [multi-modal chatbot](/cookbook/guides/multi-modal-chatbot) guides. +- To jumpstart your first AI project, explore available [templates](https://vercel.com/templates?type=ai). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/03-nextjs-pages-router.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/03-nextjs-pages-router.mdx new file mode 100644 index 000000000..2dc6665aa --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/03-nextjs-pages-router.mdx @@ -0,0 +1,542 @@ +--- +title: Next.js Pages Router +description: Learn how to build your first agent with the AI SDK and Next.js Pages Router. +--- + +# Next.js Pages Router Quickstart + +The AI SDK is a powerful TypeScript library designed to help developers build AI-powered applications. + +In this quickstart tutorial, you'll build a simple agent with a streaming chat user interface. Along the way, you'll learn key concepts and techniques that are fundamental to using the AI SDK in your own projects. + +If you are unfamiliar with the concepts of [Prompt Engineering](/docs/advanced/prompt-engineering) and [HTTP Streaming](/docs/foundations/streaming), you can optionally read these documents first. + +## Prerequisites + +To follow this quickstart, you'll need: + +- Node.js 18+ and pnpm installed on your local development machine. +- A [ Vercel AI Gateway ](https://vercel.com/ai-gateway) API key. + +If you haven't obtained your Vercel AI Gateway API key, you can do so by [signing up](https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai&title=Go+to+AI+Gateway) on the Vercel website. + +## Setup Your Application + +Start by creating a new Next.js application. This command will create a new directory named `my-ai-app` and set up a basic Next.js application inside it. + + + Be sure to select no when prompted to use the App Router. If you are looking + for the Next.js App Router quickstart guide, you can find it + [here](/docs/getting-started/nextjs-app-router). + + + + +Navigate to the newly created directory: + + + +### Install dependencies + +Install `ai` and `@ai-sdk/react`, the AI package and AI SDK's React hooks. The AI SDK's [ Vercel AI Gateway provider ](/providers/ai-sdk-providers/ai-gateway) ships with the `ai` package. You'll also install `zod`, a schema validation library used for defining tool inputs. + + + This guide uses the Vercel AI Gateway provider so you can access hundreds of + models from different providers with one API key, but you can switch to any + provider or model by installing its package. Check out available [AI SDK + providers](/providers/ai-sdk-providers) for more information. + + +
+ + + + + + + + + + + + + + + + +
+ +### Configure your AI Gateway API key + +Create a `.env.local` file in your project root and add your AI Gateway API key. This key authenticates your application with the Vercel AI Gateway. + + + +Edit the `.env.local` file: + +```env filename=".env.local" +AI_GATEWAY_API_KEY=xxxxxxxxx +``` + +Replace `xxxxxxxxx` with your actual Vercel AI Gateway API key. + + + The AI SDK's Vercel AI Gateway Provider will default to using the + `AI_GATEWAY_API_KEY` environment variable. + + +## Create a Route Handler + + + As long as you are on Next.js 13+, you can use Route Handlers (using the App + Router) alongside the Pages Router. This is recommended to enable you to use + the Web APIs interface/signature and to better support streaming. + + +Create a Route Handler (`app/api/chat/route.ts`) and add the following code: + +```tsx filename="app/api/chat/route.ts" +import { streamText, UIMessage, convertToModelMessages } from 'ai'; +__PROVIDER_IMPORT__; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse(); +} +``` + +Let's take a look at what is happening in this code: + +1. Define an asynchronous `POST` request handler and extract `messages` from the body of the request. The `messages` variable contains a history of the conversation between you and the chatbot and provides the chatbot with the necessary context to make the next generation. The `messages` are of UIMessage type, which are designed for use in application UI - they contain the entire message history and associated metadata like timestamps. +2. Call [`streamText`](/docs/reference/ai-sdk-core/stream-text), which is imported from the `ai` package. This function accepts a configuration object that contains a `model` provider and `messages` (defined in step 1). You can pass additional [settings](/docs/ai-sdk-core/settings) to further customize the model's behavior. The `messages` key expects a `ModelMessage[]` array. This type is different from `UIMessage` in that it does not include metadata, such as timestamps or sender information. To convert between these types, we use the `convertToModelMessages` function, which strips the UI-specific metadata and transforms the `UIMessage[]` array into the `ModelMessage[]` format that the model expects. +3. The `streamText` function returns a [`StreamTextResult`](/docs/reference/ai-sdk-core/stream-text#result-object). This result object contains the [ `toUIMessageStreamResponse` ](/docs/reference/ai-sdk-core/stream-text#to-ui-message-stream-response) function which converts the result to a streamed response object. +4. Finally, return the result to the client to stream the response. + +This Route Handler creates a POST request endpoint at `/api/chat`. + +## Choosing a Provider + +The AI SDK supports dozens of model providers through [first-party](/providers/ai-sdk-providers), [OpenAI-compatible](/providers/openai-compatible-providers), and [ community ](/providers/community-providers) packages. + +This quickstart uses the [Vercel AI Gateway](https://vercel.com/ai-gateway) provider, which is the default [global provider](/docs/ai-sdk-core/provider-management#global-provider-configuration). This means you can access models using a simple string in the model configuration: + +```ts +model: __MODEL__; +``` + +You can also explicitly import and use the gateway provider in two other equivalent ways: + +```ts +// Option 1: Import from 'ai' package (included by default) +import { gateway } from 'ai'; +model: gateway('anthropic/claude-sonnet-4.5'); + +// Option 2: Install and import from '@ai-sdk/gateway' package +import { gateway } from '@ai-sdk/gateway'; +model: gateway('anthropic/claude-sonnet-4.5'); +``` + +### Using other providers + +To use a different provider, install its package and create a provider instance. For example, to use OpenAI directly: + +
+ + + + + + + + + + + + + + + + +
+ +```ts +import { openai } from '@ai-sdk/openai'; + +model: openai('gpt-5.1'); +``` + +#### Updating the global provider + +You can change the default global provider so string model references use your preferred provider everywhere in your application. Learn more about [provider management](/docs/ai-sdk-core/provider-management#global-provider-configuration). + +Pick the approach that best matches how you want to manage providers across your application. + +## Wire up the UI + +Now that you have an API route that can query an LLM, it's time to setup your frontend. The AI SDK's [ UI ](/docs/ai-sdk-ui) package abstract the complexity of a chat interface into one hook, [`useChat`](/docs/reference/ai-sdk-ui/use-chat). + +Update your root page (`pages/index.tsx`) with the following code to show a list of chat messages and provide a user message input: + +```tsx filename="pages/index.tsx" +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; + +export default function Chat() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat(); + return ( +
+ {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, i) => { + switch (part.type) { + case 'text': + return
{part.text}
; + } + })} +
+ ))} + +
{ + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }} + > + setInput(e.currentTarget.value)} + /> +
+
+ ); +} +``` + +This page utilizes the `useChat` hook, which will, by default, use the `POST` API route you created earlier (`/api/chat`). The hook provides functions and state for handling user input and form submission. The `useChat` hook provides multiple utility functions and state variables: + +- `messages` - the current chat messages (an array of objects with `id`, `role`, and `parts` properties). +- `sendMessage` - a function to send a message to the chat API. + +The component uses local state (`useState`) to manage the input field value, and handles form submission by calling `sendMessage` with the input text and then clearing the input field. + +The LLM's response is accessed through the message `parts` array. Each message contains an ordered array of `parts` that represents everything the model generated in its response. These parts can include plain text, reasoning tokens, and more that you will see later. The `parts` array preserves the sequence of the model's outputs, allowing you to display or process each component in the order it was generated. + +## Running Your Application + +With that, you have built everything you need for your chatbot! To start your application, use the command: + + + +Head to your browser and open http://localhost:3000. You should see an input field. Test it out by entering a message and see the AI chatbot respond in real-time! The AI SDK makes it fast and easy to build AI chat interfaces with Next.js. + +## Enhance Your Chatbot with Tools + +While large language models (LLMs) have incredible generation capabilities, they struggle with discrete tasks (e.g. mathematics) and interacting with the outside world (e.g. getting the weather). This is where [tools](/docs/ai-sdk-core/tools-and-tool-calling) come in. + +Tools are actions that an LLM can invoke. The results of these actions can be reported back to the LLM to be considered in the next response. + +For example, if a user asks about the current weather, without tools, the model would only be able to provide general information based on its training data. But with a weather tool, it can fetch and provide up-to-date, location-specific weather information. + +### Update Your Route Handler + +Let's start by giving your chatbot a weather tool. Update your Route Handler (`app/api/chat/route.ts`): + +```tsx filename="app/api/chat/route.ts" highlight="1,11-25" +import { streamText, UIMessage, convertToModelMessages, tool } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +In this updated code: + +1. You import the `tool` function from the `ai` package and `z` from `zod` for schema validation. +2. You define a `tools` object with a `weather` tool. This tool: + + - Has a description that helps the model understand when to use it. + - Defines `inputSchema` using a Zod schema, specifying that it requires a `location` string to execute this tool. The model will attempt to extract this input from the context of the conversation. If it can't, it will ask the user for the missing information. + - Defines an `execute` function that simulates getting weather data (in this case, it returns a random temperature). This is an asynchronous function running on the server so you can fetch real data from an external API. + +Now your chatbot can "fetch" weather information for any location the user asks about. When the model determines it needs to use the weather tool, it will generate a tool call with the necessary input. The `execute` function will then be automatically run, and the tool output will be added to the `messages` as a `tool` message. + +Try asking something like "What's the weather in New York?" and see how the model uses the new tool. + +Notice the blank response in the UI? This is because instead of generating a text response, the model generated a tool call. You can access the tool call and subsequent tool result on the client via the `tool-weather` part of the `message.parts` array. + + + Tool parts are always named `tool-{toolName}`, where `{toolName}` is the key + you used when defining the tool. In this case, since we defined the tool as + `weather`, the part type is `tool-weather`. + + +### Update the UI + +To display the tool invocations in your UI, update your `pages/index.tsx` file: + +```tsx filename="pages/index.tsx" highlight="16-21" +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; + +export default function Chat() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat(); + return ( +
+ {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, i) => { + switch (part.type) { + case 'text': + return
{part.text}
; + case 'tool-weather': + return ( +
+                    {JSON.stringify(part, null, 2)}
+                  
+ ); + } + })} +
+ ))} + +
{ + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }} + > + setInput(e.currentTarget.value)} + /> +
+
+ ); +} +``` + +With this change, you're updating the UI to handle different message parts. For text parts, you display the text content as before. For weather tool invocations, you display a JSON representation of the tool call and its result. + +Now, when you ask about the weather, you'll see the tool call and its result displayed in your chat interface. + +## Enabling Multi-Step Tool Calls + +You may have noticed that while the tool is now visible in the chat interface, the model isn't using this information to answer your original query. This is because once the model generates a tool call, it has technically completed its generation. + +To solve this, you can enable multi-step tool calls using `stopWhen`. By default, `stopWhen` is set to `stepCountIs(1)`, which means generation stops after the first step when there are tool results. By changing this condition, you can allow the model to automatically send tool results back to itself to trigger additional generations until your specified stopping condition is met. In this case, you want the model to continue generating so it can use the weather tool results to answer your original question. + +### Update Your Route Handler + +Modify your `app/api/chat/route.ts` file to include the `stopWhen` condition: + +```tsx filename="app/api/chat/route.ts" highlight="16" +import { + streamText, + UIMessage, + convertToModelMessages, + tool, + stepCountIs, +} from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + stopWhen: stepCountIs(5), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +Head back to the browser and ask about the weather in a location. You should now see the model using the weather tool results to answer your question. + +By setting `stopWhen: stepCountIs(5)`, you're allowing the model to use up to 5 "steps" for any given generation. This enables more complex interactions and allows the model to gather and process information over several steps if needed. You can see this in action by adding another tool to convert the temperature from Celsius to Fahrenheit. + +### Add another tool + +Update your `app/api/chat/route.ts` file to add a new tool to convert the temperature from Fahrenheit to Celsius: + +```tsx filename="app/api/chat/route.ts" highlight="31-46" +import { + streamText, + UIMessage, + convertToModelMessages, + tool, + stepCountIs, +} from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + stopWhen: stepCountIs(5), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + convertFahrenheitToCelsius: tool({ + description: 'Convert a temperature in fahrenheit to celsius', + inputSchema: z.object({ + temperature: z + .number() + .describe('The temperature in fahrenheit to convert'), + }), + execute: async ({ temperature }) => { + const celsius = Math.round((temperature - 32) * (5 / 9)); + return { + celsius, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +### Update Your Frontend + +Update your `pages/index.tsx` file to render the new temperature conversion tool: + +```tsx filename="pages/index.tsx" highlight="17" +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; + +export default function Chat() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat(); + return ( +
+ {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, i) => { + switch (part.type) { + case 'text': + return
{part.text}
; + case 'tool-weather': + case 'tool-convertFahrenheitToCelsius': + return ( +
+                    {JSON.stringify(part, null, 2)}
+                  
+ ); + } + })} +
+ ))} + +
{ + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }} + > + setInput(e.currentTarget.value)} + /> +
+
+ ); +} +``` + +This update handles the new `tool-convertFahrenheitToCelsius` part type, displaying the temperature conversion tool calls and results in the UI. + +Now, when you ask "What's the weather in New York in celsius?", you should see a more complete interaction: + +1. The model will call the weather tool for New York. +2. You'll see the tool output displayed. +3. It will then call the temperature conversion tool to convert the temperature from Fahrenheit to Celsius. +4. The model will then use that information to provide a natural language response about the weather in New York. + +This multi-step approach allows the model to gather information and use it to provide more accurate and contextual responses, making your chatbot considerably more useful. + +This simple example demonstrates how tools can expand your model's capabilities. You can create more complex tools to integrate with real APIs, databases, or any other external systems, allowing the model to access and process real-world data in real-time. Tools bridge the gap between the model's knowledge cutoff and current information. + +## Where to Next? + +You've built an AI chatbot using the AI SDK! From here, you have several paths to explore: + +- To learn more about the AI SDK, read through the [documentation](/docs). +- If you're interested in diving deeper with guides, check out the [RAG (retrieval-augmented generation)](/cookbook/guides/rag-chatbot) and [multi-modal chatbot](/cookbook/guides/multi-modal-chatbot) guides. +- To jumpstart your first AI project, explore available [templates](https://vercel.com/templates?type=ai). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/04-svelte.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/04-svelte.mdx new file mode 100644 index 000000000..5fce3b049 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/04-svelte.mdx @@ -0,0 +1,627 @@ +--- +title: Svelte +description: Learn how to build your first agent with the AI SDK and Svelte. +--- + +# Svelte Quickstart + +The AI SDK is a powerful TypeScript library designed to help developers build AI-powered applications. + +In this quickstart tutorial, you'll build a simple agent with a streaming chat user interface. Along the way, you'll learn key concepts and techniques that are fundamental to using the SDK in your own projects. + +If you are unfamiliar with the concepts of [Prompt Engineering](/docs/advanced/prompt-engineering) and [HTTP Streaming](/docs/foundations/streaming), you can optionally read these documents first. + +## Prerequisites + +To follow this quickstart, you'll need: + +- Node.js 18+ and pnpm installed on your local development machine. +- A [ Vercel AI Gateway ](https://vercel.com/ai-gateway) API key. + +If you haven't obtained your Vercel AI Gateway API key, you can do so by [signing up](https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai&title=Go+to+AI+Gateway) on the Vercel website. + +## Set Up Your Application + +Start by creating a new SvelteKit application. This command will create a new directory named `my-ai-app` and set up a basic SvelteKit application inside it. + + + +Navigate to the newly created directory: + + + +### Install Dependencies + +Install `ai` and `@ai-sdk/svelte`, the AI package and AI SDK's Svelte bindings. The AI SDK's [ Vercel AI Gateway provider ](/providers/ai-sdk-providers/ai-gateway) ships with the `ai` package. You'll also install `zod`, a schema validation library used for defining tool inputs. + + + This guide uses the Vercel AI Gateway provider so you can access hundreds of + models from different providers with one API key, but you can switch to any + provider or model by installing its package. Check out available [AI SDK + providers](/providers/ai-sdk-providers) for more information. + +
+ + + + + + + + + + + + + + +
+ +### Configure your AI Gateway API key + +Create a `.env.local` file in your project root and add your AI Gateway API key. This key authenticates your application with the Vercel AI Gateway. + + + +Edit the `.env.local` file: + +```env filename=".env.local" +AI_GATEWAY_API_KEY=xxxxxxxxx +``` + +Replace `xxxxxxxxx` with your actual Vercel AI Gateway API key. + + + The AI SDK's Vercel AI Gateway Provider will default to using the + `AI_GATEWAY_API_KEY` environment variable. Vite does not automatically load + environment variables onto `process.env`, so you'll need to import + `AI_GATEWAY_API_KEY` from `$env/static/private` in your code (see below). + + +## Create an API route + +Create a SvelteKit Endpoint, `src/routes/api/chat/+server.ts` and add the following code: + +```tsx filename="src/routes/api/chat/+server.ts" +import { + streamText, + type UIMessage, + convertToModelMessages, + createGateway, +} from 'ai'; + +import { AI_GATEWAY_API_KEY } from '$env/static/private'; + +const gateway = createGateway({ + apiKey: AI_GATEWAY_API_KEY, +}); + +export async function POST({ request }) { + const { messages }: { messages: UIMessage[] } = await request.json(); + + const result = streamText({ + model: gateway('anthropic/claude-sonnet-4.5'), + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse(); +} +``` + + + If you see type errors with `AI_GATEWAY_API_KEY` or your `POST` function, run + the dev server. + + +Let's take a look at what is happening in this code: + +1. Create a gateway provider instance with the `createGateway` function from the `ai` package. +2. Define a `POST` request handler and extract `messages` from the body of the request. The `messages` variable contains a history of the conversation between you and the chatbot and provides the chatbot with the necessary context to make the next generation. The `messages` are of UIMessage type, which are designed for use in application UI - they contain the entire message history and associated metadata like timestamps. +3. Call [`streamText`](/docs/reference/ai-sdk-core/stream-text), which is imported from the `ai` package. This function accepts a configuration object that contains a `model` provider (defined in step 1) and `messages` (defined in step 2). You can pass additional [settings](/docs/ai-sdk-core/settings) to further customize the model's behavior. The `messages` key expects a `ModelMessage[]` array. This type is different from `UIMessage` in that it does not include metadata, such as timestamps or sender information. To convert between these types, we use the `convertToModelMessages` function, which strips the UI-specific metadata and transforms the `UIMessage[]` array into the `ModelMessage[]` format that the model expects. +4. The `streamText` function returns a [`StreamTextResult`](/docs/reference/ai-sdk-core/stream-text#result-object). This result object contains the [ `toUIMessageStreamResponse` ](/docs/reference/ai-sdk-core/stream-text#to-ui-message-stream-response) function which converts the result to a streamed response object. +5. Return the result to the client to stream the response. + +## Choosing a Provider + +The AI SDK supports dozens of model providers through [first-party](/providers/ai-sdk-providers), [OpenAI-compatible](/providers/openai-compatible-providers), and [ community ](/providers/community-providers) packages. + +This quickstart uses the [Vercel AI Gateway](https://vercel.com/ai-gateway) provider, which is the default [global provider](/docs/ai-sdk-core/provider-management#global-provider-configuration). This means you can access models using a simple string in the model configuration: + +```ts +model: __MODEL__; +``` + +You can also explicitly import and use the gateway provider in two other equivalent ways: + +```ts +// Option 1: Import from 'ai' package (included by default) +import { gateway } from 'ai'; +model: gateway('anthropic/claude-sonnet-4.5'); + +// Option 2: Install and import from '@ai-sdk/gateway' package +import { gateway } from '@ai-sdk/gateway'; +model: gateway('anthropic/claude-sonnet-4.5'); +``` + +### Using other providers + +To use a different provider, install its package and create a provider instance. For example, to use OpenAI directly: + +
+ + + + + + + + + + + + + + + + +
+ +```ts +import { openai } from '@ai-sdk/openai'; + +model: openai('gpt-5.1'); +``` + +#### Updating the global provider + +You can change the default global provider so string model references use your preferred provider everywhere in your application. Learn more about [provider management](/docs/ai-sdk-core/provider-management#global-provider-configuration). + +Pick the approach that best matches how you want to manage providers across your application. + +## Wire up the UI + +Now that you have an API route that can query an LLM, it's time to set up your frontend. The AI SDK's [UI](/docs/ai-sdk-ui) package abstracts the complexity of a chat interface into one class, `Chat`. +Its properties and API are largely the same as React's [`useChat`](/docs/reference/ai-sdk-ui/use-chat). + +Update your root page (`src/routes/+page.svelte`) with the following code to show a list of chat messages and provide a user message input: + +```svelte filename="src/routes/+page.svelte" + + +
+
    + {#each chat.messages as message, messageIndex (messageIndex)} +
  • +
    {message.role}
    +
    + {#each message.parts as part, partIndex (partIndex)} + {#if part.type === 'text'} +
    {part.text}
    + {/if} + {/each} +
    +
  • + {/each} +
+
+ + +
+
+``` + +This page utilizes the `Chat` class, which will, by default, use the `POST` route handler you created earlier. The class provides functions and state for handling user input and form submission. The `Chat` class provides multiple utility functions and state variables: + +- `messages` - the current chat messages (an array of objects with `id`, `role`, and `parts` properties). +- `sendMessage` - a function to send a message to the chat API. + +The component uses local state to manage the input field value, and handles form submission by calling `sendMessage` with the input text and then clearing the input field. + +The LLM's response is accessed through the message `parts` array. Each message contains an ordered array of `parts` that represents everything the model generated in its response. These parts can include plain text, reasoning tokens, and more that you will see later. The `parts` array preserves the sequence of the model's outputs, allowing you to display or process each component in the order it was generated. + +## Running Your Application + +With that, you have built everything you need for your chatbot! To start your application, use the command: + + + +Head to your browser and open http://localhost:5173. You should see an input field. Test it out by entering a message and see the AI chatbot respond in real-time! The AI SDK makes it fast and easy to build AI chat interfaces with Svelte. + +## Enhance Your Chatbot with Tools + +While large language models (LLMs) have incredible generation capabilities, they struggle with discrete tasks (e.g. mathematics) and interacting with the outside world (e.g. getting the weather). This is where [tools](/docs/ai-sdk-core/tools-and-tool-calling) come in. + +Tools are actions that an LLM can invoke. The results of these actions can be reported back to the LLM to be considered in the next response. + +For example, if a user asks about the current weather, without tools, the model would only be able to provide general information based on its training data. But with a weather tool, it can fetch and provide up-to-date, location-specific weather information. + +Let's enhance your chatbot by adding a simple weather tool. + +### Update Your API Route + +Modify your `src/routes/api/chat/+server.ts` file to include the new weather tool: + +```tsx filename="src/routes/api/chat/+server.ts" highlight="2,3,17-31" +import { + createGateway, + streamText, + type UIMessage, + convertToModelMessages, + tool, + stepCountIs, +} from 'ai'; +import { z } from 'zod'; + +import { AI_GATEWAY_API_KEY } from '$env/static/private'; + +const gateway = createGateway({ + apiKey: AI_GATEWAY_API_KEY, +}); + +export async function POST({ request }) { + const { messages }: { messages: UIMessage[] } = await request.json(); + + const result = streamText({ + model: gateway('anthropic/claude-sonnet-4.5'), + messages: await convertToModelMessages(messages), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +In this updated code: + +1. You import the `tool` function from the `ai` package and `z` from `zod` for schema validation. +2. You define a `tools` object with a `weather` tool. This tool: + + - Has a description that helps the model understand when to use it. + - Defines `inputSchema` using a Zod schema, specifying that it requires a `location` string to execute this tool. The model will attempt to extract this input from the context of the conversation. If it can't, it will ask the user for the missing information. + - Defines an `execute` function that simulates getting weather data (in this case, it returns a random temperature). This is an asynchronous function running on the server so you can fetch real data from an external API. + +Now your chatbot can "fetch" weather information for any location the user asks about. When the model determines it needs to use the weather tool, it will generate a tool call with the necessary input. The `execute` function will then be automatically run, and the tool output will be added to the `messages` as a `tool` message. + +Try asking something like "What's the weather in New York?" and see how the model uses the new tool. + +Notice the blank response in the UI? This is because instead of generating a text response, the model generated a tool call. You can access the tool call and subsequent tool result on the client via the `tool-weather` part of the `message.parts` array. + + + Tool parts are always named `tool-{toolName}`, where `{toolName}` is the key + you used when defining the tool. In this case, since we defined the tool as + `weather`, the part type is `tool-weather`. + + +### Update the UI + +To display the tool invocation in your UI, update your `src/routes/+page.svelte` file: + +```svelte filename="src/routes/+page.svelte" + + +
+
    + {#each chat.messages as message, messageIndex (messageIndex)} +
  • +
    {message.role}
    +
    + {#each message.parts as part, partIndex (partIndex)} + {#if part.type === 'text'} +
    {part.text}
    + {:else if part.type === 'tool-weather'} +
    {JSON.stringify(part, null, 2)}
    + {/if} + {/each} +
    +
  • + {/each} +
+
+ + +
+
+``` + +With this change, you're updating the UI to handle different message parts. For text parts, you display the text content as before. For weather tool invocations, you display a JSON representation of the tool call and its result. + +Now, when you ask about the weather, you'll see the tool call and its result displayed in your chat interface. + +## Enabling Multi-Step Tool Calls + +You may have noticed that while the tool is now visible in the chat interface, the model isn't using this information to answer your original query. This is because once the model generates a tool call, it has technically completed its generation. + +To solve this, you can enable multi-step tool calls using `stopWhen`. By default, `stopWhen` is set to `stepCountIs(1)`, which means generation stops after the first step when there are tool results. By changing this condition, you can allow the model to automatically send tool results back to itself to trigger additional generations until your specified stopping condition is met. In this case, you want the model to continue generating so it can use the weather tool results to answer your original question. + +### Update Your API Route + +Modify your `src/routes/api/chat/+server.ts` file to include the `stopWhen` condition: + +```ts filename="src/routes/api/chat/+server.ts" highlight="15" +import { + createGateway, + streamText, + type UIMessage, + convertToModelMessages, + tool, + stepCountIs, +} from 'ai'; +import { z } from 'zod'; + +import { AI_GATEWAY_API_KEY } from '$env/static/private'; + +const gateway = createGateway({ + apiKey: AI_GATEWAY_API_KEY, +}); + +export async function POST({ request }) { + const { messages }: { messages: UIMessage[] } = await request.json(); + + const result = streamText({ + model: gateway('anthropic/claude-sonnet-4.5'), + messages: await convertToModelMessages(messages), + stopWhen: stepCountIs(5), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +Head back to the browser and ask about the weather in a location. You should now see the model using the weather tool results to answer your question. + +By setting `stopWhen: stepCountIs(5)`, you're allowing the model to use up to 5 "steps" for any given generation. This enables more complex interactions and allows the model to gather and process information over several steps if needed. You can see this in action by adding another tool to convert the temperature from Fahrenheit to Celsius. + +### Add another tool + +Update your `src/routes/api/chat/+server.ts` file to add a new tool to convert the temperature from Fahrenheit to Celsius: + +```tsx filename="src/routes/api/chat/+server.ts" highlight="32-45" +import { + createGateway, + streamText, + type UIMessage, + convertToModelMessages, + tool, + stepCountIs, +} from 'ai'; +import { z } from 'zod'; + +import { AI_GATEWAY_API_KEY } from '$env/static/private'; + +const gateway = createGateway({ + apiKey: AI_GATEWAY_API_KEY, +}); + +export async function POST({ request }) { + const { messages }: { messages: UIMessage[] } = await request.json(); + + const result = streamText({ + model: gateway('anthropic/claude-sonnet-4.5'), + messages: await convertToModelMessages(messages), + stopWhen: stepCountIs(5), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + convertFahrenheitToCelsius: tool({ + description: 'Convert a temperature in fahrenheit to celsius', + inputSchema: z.object({ + temperature: z + .number() + .describe('The temperature in fahrenheit to convert'), + }), + execute: async ({ temperature }) => { + const celsius = Math.round((temperature - 32) * (5 / 9)); + return { + celsius, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +### Update Your Frontend + +Update your UI to handle the new temperature conversion tool by modifying the tool part handling: + +```svelte filename="src/routes/+page.svelte" highlight="17" + + +
+
    + {#each chat.messages as message, messageIndex (messageIndex)} +
  • +
    {message.role}
    +
    + {#each message.parts as part, partIndex (partIndex)} + {#if part.type === 'text'} +
    {part.text}
    + {:else if part.type === 'tool-weather' || part.type === 'tool-convertFahrenheitToCelsius'} +
    {JSON.stringify(part, null, 2)}
    + {/if} + {/each} +
    +
  • + {/each} +
+
+ + +
+
+``` + +This update handles the new `tool-convertFahrenheitToCelsius` part type, displaying the temperature conversion tool calls and results in the UI. + +Now, when you ask "What's the weather in New York in celsius?", you should see a more complete interaction: + +1. The model will call the weather tool for New York. +2. You'll see the tool output displayed. +3. It will then call the temperature conversion tool to convert the temperature from Fahrenheit to Celsius. +4. The model will then use that information to provide a natural language response about the weather in New York. + +This multi-step approach allows the model to gather information and use it to provide more accurate and contextual responses, making your chatbot considerably more useful. + +This simple example demonstrates how tools can expand your model's capabilities. You can create more complex tools to integrate with real APIs, databases, or any other external systems, allowing the model to access and process real-world data in real-time. Tools bridge the gap between the model's knowledge cutoff and current information. + +## How does `@ai-sdk/svelte` differ from `@ai-sdk/react`? + +The surface-level difference is that Svelte uses classes to manage state, whereas React uses hooks, so `useChat` in React is `Chat` in Svelte. Other than that, there are a few things to keep in mind: + +### 1. Arguments to classes aren't reactive by default + +Unlike in React, where hooks are rerun any time their containing component is invalidated, code in the `script` block of a Svelte component is only run once when the component is created. +This means that, if you want arguments to your class to be reactive, you need to make sure you pass a _reference_ into the class, rather than a value: + +```svelte + +``` + +Keep in mind that this normally doesn't matter; most parameters you'll pass into the Chat class are static (for example, you typically wouldn't expect your `onError` handler to change). + +### 2. You can't destructure class properties + +In vanilla JavaScript, destructuring class properties copies them by value and "disconnects" them from their class instance: + +```js +const classInstance = new Whatever(); +classInstance.foo = 'bar'; +const { foo } = classInstance; +classInstance.foo = 'baz'; + +console.log(foo); // 'bar' +``` + +The same is true of classes in Svelte: + +```svelte + +``` + +### 3. Instance synchronization requires context + +In React, hook instances with the same `id` are synchronized -- so two instances of `useChat` will have the same `messages`, `status`, etc. if they have the same `id`. +For most use cases, you probably don't need this behavior -- but if you do, you can create a context in your root layout file using `createAIContext`: + +```svelte + + +{@render children()} +``` + +## Where to Next? + +You've built an AI chatbot using the AI SDK! From here, you have several paths to explore: + +- To learn more about the AI SDK, read through the [documentation](/docs). +- If you're interested in diving deeper with guides, check out the [RAG (retrieval-augmented generation)](/cookbook/guides/rag-chatbot) and [multi-modal chatbot](/cookbook/guides/multi-modal-chatbot) guides. +- To jumpstart your first AI project, explore available [templates](https://vercel.com/templates?type=ai). +- To learn more about Svelte, check out the [official documentation](https://svelte.dev/docs/svelte). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/05-nuxt.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/05-nuxt.mdx new file mode 100644 index 000000000..450be07d5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/05-nuxt.mdx @@ -0,0 +1,566 @@ +--- +title: Vue.js (Nuxt) +description: Learn how to build your first agent with the AI SDK and Vue.js (Nuxt). +--- + +# Vue.js (Nuxt) Quickstart + +The AI SDK is a powerful TypeScript library designed to help developers build AI-powered applications. + +In this quickstart tutorial, you'll build a simple agent with a streaming chat user interface. Along the way, you'll learn key concepts and techniques that are fundamental to using the SDK in your own projects. + +If you are unfamiliar with the concepts of [Prompt Engineering](/docs/advanced/prompt-engineering) and [HTTP Streaming](/docs/foundations/streaming), you can optionally read these documents first. + +## Prerequisites + +To follow this quickstart, you'll need: + +- Node.js 18+ and pnpm installed on your local development machine. +- A [ Vercel AI Gateway ](https://vercel.com/ai-gateway) API key. + +If you haven't obtained your Vercel AI Gateway API key, you can do so by [signing up](https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai&title=Go+to+AI+Gateway) on the Vercel website. + +## Setup Your Application + +Start by creating a new Nuxt application. This command will create a new directory named `my-ai-app` and set up a basic Nuxt application inside it. + + + +Navigate to the newly created directory: + + + +### Install dependencies + +Install `ai` and `@ai-sdk/vue`. The Vercel AI Gateway provider ships with the `ai` package. + + + The AI SDK is designed to be a unified interface to interact with any large + language model. This means that you can change model and providers with just + one line of code! Learn more about [available providers](/providers) and + [building custom providers](/providers/community-providers/custom-providers) + in the [providers](/providers) section. + +
+ + + + + + + + + + + + + + + + +
+ +### Configure Vercel AI Gateway API key + +Create a `.env` file in your project root and add your Vercel AI Gateway API Key. This key is used to authenticate your application with the Vercel AI Gateway service. + + + +Edit the `.env` file: + +```env filename=".env" +NUXT_AI_GATEWAY_API_KEY=xxxxxxxxx +``` + +Replace `xxxxxxxxx` with your actual Vercel AI Gateway API key and configure the environment variable in `nuxt.config.ts`: + +```ts filename="nuxt.config.ts" +export default defineNuxtConfig({ + // rest of your nuxt config + runtimeConfig: { + aiGatewayApiKey: '', + }, +}); +``` + + + This guide uses Nuxt's runtime config to manage the API key. The `NUXT_` + prefix in the environment variable allows Nuxt to automatically load it into + the runtime config. While the AI Gateway Provider also supports a default + `AI_GATEWAY_API_KEY` environment variable, this approach provides better + integration with Nuxt's configuration system. + + +## Create an API route + +Create an API route, `server/api/chat.ts` and add the following code: + +```typescript filename="server/api/chat.ts" +import { + streamText, + UIMessage, + convertToModelMessages, + createGateway, +} from 'ai'; + +export default defineLazyEventHandler(async () => { + const apiKey = useRuntimeConfig().aiGatewayApiKey; + if (!apiKey) throw new Error('Missing AI Gateway API key'); + const gateway = createGateway({ + apiKey: apiKey, + }); + + return defineEventHandler(async (event: any) => { + const { messages }: { messages: UIMessage[] } = await readBody(event); + + const result = streamText({ + model: gateway('anthropic/claude-sonnet-4.5'), + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse(); + }); +}); +``` + +Let's take a look at what is happening in this code: + +1. Create a gateway provider instance with the `createGateway` function from the `ai` package. +2. Define an Event Handler and extract `messages` from the body of the request. The `messages` variable contains a history of the conversation between you and the chatbot and provides the chatbot with the necessary context to make the next generation. The `messages` are of UIMessage type, which are designed for use in application UI - they contain the entire message history and associated metadata like timestamps. +3. Call [`streamText`](/docs/reference/ai-sdk-core/stream-text), which is imported from the `ai` package. This function accepts a configuration object that contains a `model` provider (defined in step 1) and `messages` (defined in step 2). You can pass additional [settings](/docs/ai-sdk-core/settings) to further customize the model's behavior. The `messages` key expects a `ModelMessage[]` array. This type is different from `UIMessage` in that it does not include metadata, such as timestamps or sender information. To convert between these types, we use the `convertToModelMessages` function, which strips the UI-specific metadata and transforms the `UIMessage[]` array into the `ModelMessage[]` format that the model expects. +4. The `streamText` function returns a [`StreamTextResult`](/docs/reference/ai-sdk-core/stream-text#result). This result object contains the [ `toUIMessageStreamResponse` ](/docs/reference/ai-sdk-core/stream-text#to-ui-message-stream-response) function which converts the result to a streamed response object. +5. Return the result to the client to stream the response. + +## Choosing a Provider + +The AI SDK supports dozens of model providers through [first-party](/providers/ai-sdk-providers), [OpenAI-compatible](/providers/openai-compatible-providers), and [ community ](/providers/community-providers) packages. + +This quickstart uses the [Vercel AI Gateway](https://vercel.com/ai-gateway) provider, which is the default [global provider](/docs/ai-sdk-core/provider-management#global-provider-configuration). This means you can access models using a simple string in the model configuration: + +```ts +model: __MODEL__; +``` + +You can also explicitly import and use the gateway provider in two other equivalent ways: + +```ts +// Option 1: Import from 'ai' package (included by default) +import { gateway } from 'ai'; +model: gateway('anthropic/claude-sonnet-4.5'); + +// Option 2: Install and import from '@ai-sdk/gateway' package +import { gateway } from '@ai-sdk/gateway'; +model: gateway('anthropic/claude-sonnet-4.5'); +``` + +### Using other providers + +To use a different provider, install its package and create a provider instance. For example, to use OpenAI directly: + +
+ + + + + + + + + + + + + + + + +
+ +```ts +import { openai } from '@ai-sdk/openai'; + +model: openai('gpt-5.1'); +``` + +## Wire up the UI + +Now that you have an API route that can query an LLM, it's time to setup your frontend. The AI SDK's [ UI ](/docs/ai-sdk-ui/overview) package abstract the complexity of a chat interface into one hook, [`useChat`](/docs/reference/ai-sdk-ui/use-chat). + +Update your root page (`pages/index.vue`) with the following code to show a list of chat messages and provide a user message input: + +```typescript filename="pages/index.vue" + + + +``` + + + If your project has `app.vue` instead of `pages/index.vue`, delete the + `app.vue` file and create a new `pages/index.vue` file with the code above. + + +This page utilizes the `useChat` hook, which will, by default, use the API route you created earlier (`/api/chat`). The hook provides functions and state for handling user input and form submission. The `useChat` hook provides multiple utility functions and state variables: + +- `messages` - the current chat messages (an array of objects with `id`, `role`, and `parts` properties). +- `sendMessage` - a function to send a message to the chat API. + +The component uses local state (`ref`) to manage the input field value, and handles form submission by calling `sendMessage` with the input text and then clearing the input field. + +The LLM's response is accessed through the message `parts` array. Each message contains an ordered array of `parts` that represents everything the model generated in its response. These parts can include plain text, reasoning tokens, and more that you will see later. The `parts` array preserves the sequence of the model's outputs, allowing you to display or process each component in the order it was generated. + +## Running Your Application + +With that, you have built everything you need for your chatbot! To start your application, use the command: + + + +Head to your browser and open http://localhost:3000. You should see an input field. Test it out by entering a message and see the AI chatbot respond in real-time! The AI SDK makes it fast and easy to build AI chat interfaces with Nuxt. + +## Enhance Your Chatbot with Tools + +While large language models (LLMs) have incredible generation capabilities, they struggle with discrete tasks (e.g. mathematics) and interacting with the outside world (e.g. getting the weather). This is where [tools](/docs/ai-sdk-core/tools-and-tool-calling) come in. + +Tools are actions that an LLM can invoke. The results of these actions can be reported back to the LLM to be considered in the next response. + +For example, if a user asks about the current weather, without tools, the model would only be able to provide general information based on its training data. But with a weather tool, it can fetch and provide up-to-date, location-specific weather information. + +Let's enhance your chatbot by adding a simple weather tool. + +### Update Your API Route + +Modify your `server/api/chat.ts` file to include the new weather tool: + +```typescript filename="server/api/chat.ts" highlight="1,16-32" +import { + createGateway, + streamText, + UIMessage, + convertToModelMessages, + tool, +} from 'ai'; +import { z } from 'zod'; + +export default defineLazyEventHandler(async () => { + const apiKey = useRuntimeConfig().aiGatewayApiKey; + if (!apiKey) throw new Error('Missing AI Gateway API key'); + const gateway = createGateway({ + apiKey: apiKey, + }); + + return defineEventHandler(async (event: any) => { + const { messages }: { messages: UIMessage[] } = await readBody(event); + + const result = streamText({ + model: gateway('anthropic/claude-sonnet-4.5'), + messages: await convertToModelMessages(messages), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z + .string() + .describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); + }); +}); +``` + +In this updated code: + +1. You import the `tool` function from the `ai` package and `z` from `zod` for schema validation. +2. You define a `tools` object with a `weather` tool. This tool: + + - Has a description that helps the model understand when to use it. + - Defines `inputSchema` using a Zod schema, specifying that it requires a `location` string to execute this tool. The model will attempt to extract this input from the context of the conversation. If it can't, it will ask the user for the missing information. + - Defines an `execute` function that simulates getting weather data (in this case, it returns a random temperature). This is an asynchronous function running on the server so you can fetch real data from an external API. + +Now your chatbot can "fetch" weather information for any location the user asks about. When the model determines it needs to use the weather tool, it will generate a tool call with the necessary input. The `execute` function will then be automatically run, and the tool output will be added to the `messages` as a `tool` message. + +Try asking something like "What's the weather in New York?" and see how the model uses the new tool. + +Notice the blank response in the UI? This is because instead of generating a text response, the model generated a tool call. You can access the tool call and subsequent tool result on the client via the `tool-weather` part of the `message.parts` array. + + + Tool parts are always named `tool-{toolName}`, where `{toolName}` is the key + you used when defining the tool. In this case, since we defined the tool as + `weather`, the part type is `tool-weather`. + + +### Update the UI + +To display the tool invocation in your UI, update your `pages/index.vue` file: + +```typescript filename="pages/index.vue" highlight="16-18" + + + +``` + +With this change, you're updating the UI to handle different message parts. For text parts, you display the text content as before. For weather tool invocations, you display a JSON representation of the tool call and its result. + +Now, when you ask about the weather, you'll see the tool call and its result displayed in your chat interface. + +## Enabling Multi-Step Tool Calls + +You may have noticed that while the tool is now visible in the chat interface, the model isn't using this information to answer your original query. This is because once the model generates a tool call, it has technically completed its generation. + +To solve this, you can enable multi-step tool calls using `stopWhen`. By default, `stopWhen` is set to `stepCountIs(1)`, which means generation stops after the first step when there are tool results. By changing this condition, you can allow the model to automatically send tool results back to itself to trigger additional generations until your specified stopping condition is met. In this case, you want the model to continue generating so it can use the weather tool results to answer your original question. + +### Update Your API Route + +Modify your `server/api/chat.ts` file to include the `stopWhen` condition: + +```typescript filename="server/api/chat.ts" highlight="22" +import { + createGateway, + streamText, + UIMessage, + convertToModelMessages, + tool, + stepCountIs, +} from 'ai'; +import { z } from 'zod'; + +export default defineLazyEventHandler(async () => { + const apiKey = useRuntimeConfig().aiGatewayApiKey; + if (!apiKey) throw new Error('Missing AI Gateway API key'); + const gateway = createGateway({ + apiKey: apiKey, + }); + + return defineEventHandler(async (event: any) => { + const { messages }: { messages: UIMessage[] } = await readBody(event); + + const result = streamText({ + model: gateway('anthropic/claude-sonnet-4.5'), + messages: await convertToModelMessages(messages), + stopWhen: stepCountIs(5), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z + .string() + .describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); + }); +}); +``` + +Head back to the browser and ask about the weather in a location. You should now see the model using the weather tool results to answer your question. + +By setting `stopWhen: stepCountIs(5)`, you're allowing the model to use up to 5 "steps" for any given generation. This enables more complex interactions and allows the model to gather and process information over several steps if needed. You can see this in action by adding another tool to convert the temperature from Fahrenheit to Celsius. + +### Add another tool + +Update your `server/api/chat.ts` file to add a new tool to convert the temperature from Fahrenheit to Celsius: + +```typescript filename="server/api/chat.ts" highlight="32-45" +import { + createGateway, + streamText, + UIMessage, + convertToModelMessages, + tool, + stepCountIs, +} from 'ai'; +import { z } from 'zod'; + +export default defineLazyEventHandler(async () => { + const apiKey = useRuntimeConfig().aiGatewayApiKey; + if (!apiKey) throw new Error('Missing AI Gateway API key'); + const gateway = createGateway({ + apiKey: apiKey, + }); + + return defineEventHandler(async (event: any) => { + const { messages }: { messages: UIMessage[] } = await readBody(event); + + const result = streamText({ + model: gateway('anthropic/claude-sonnet-4.5'), + messages: await convertToModelMessages(messages), + stopWhen: stepCountIs(5), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z + .string() + .describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + convertFahrenheitToCelsius: tool({ + description: 'Convert a temperature in fahrenheit to celsius', + inputSchema: z.object({ + temperature: z + .number() + .describe('The temperature in fahrenheit to convert'), + }), + execute: async ({ temperature }) => { + const celsius = Math.round((temperature - 32) * (5 / 9)); + return { + celsius, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); + }); +}); +``` + +### Update Your Frontend + +Update your UI to handle the new temperature conversion tool by modifying the tool part handling: + +```typescript filename="pages/index.vue" highlight="24" + + + +``` + +This update handles the new `tool-convertFahrenheitToCelsius` part type, displaying the temperature conversion tool calls and results in the UI. + +Now, when you ask "What's the weather in New York in celsius?", you should see a more complete interaction: + +1. The model will call the weather tool for New York. +2. You'll see the tool output displayed. +3. It will then call the temperature conversion tool to convert the temperature from Fahrenheit to Celsius. +4. The model will then use that information to provide a natural language response about the weather in New York. + +This multi-step approach allows the model to gather information and use it to provide more accurate and contextual responses, making your chatbot considerably more useful. + +This simple example demonstrates how tools can expand your model's capabilities. You can create more complex tools to integrate with real APIs, databases, or any other external systems, allowing the model to access and process real-world data in real-time. Tools bridge the gap between the model's knowledge cutoff and current information. + +## Where to Next? + +You've built an AI chatbot using the AI SDK! From here, you have several paths to explore: + +- To learn more about the AI SDK, read through the [documentation](/docs). +- If you're interested in diving deeper with guides, check out the [RAG (retrieval-augmented generation)](/cookbook/guides/rag-chatbot) and [multi-modal chatbot](/cookbook/guides/multi-modal-chatbot) guides. +- To jumpstart your first AI project, explore available [templates](https://vercel.com/templates?type=ai). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/06-nodejs.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/06-nodejs.mdx new file mode 100644 index 000000000..defe541ef --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/06-nodejs.mdx @@ -0,0 +1,512 @@ +--- +title: Node.js +description: Learn how to build your first agent with the AI SDK and Node.js. +--- + +# Node.js Quickstart + +The AI SDK is a powerful TypeScript library designed to help developers build AI-powered applications. + +In this quickstart tutorial, you'll build a simple agent with a streaming chat user interface. Along the way, you'll learn key concepts and techniques that are fundamental to using the SDK in your own projects. + +If you are unfamiliar with the concepts of [Prompt Engineering](/docs/advanced/prompt-engineering) and [HTTP Streaming](/docs/foundations/streaming), you can optionally read these documents first. + +## Prerequisites + +To follow this quickstart, you'll need: + +- Node.js 18+ and pnpm installed on your local development machine. +- A [ Vercel AI Gateway ](https://vercel.com/ai-gateway) API key. + +If you haven't obtained your Vercel AI Gateway API key, you can do so by [signing up](https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai&title=Go+to+AI+Gateway) on the Vercel website. + +## Setup Your Application + +Start by creating a new directory using the `mkdir` command. Change into your new directory and then run the `pnpm init` command. This will create a `package.json` in your new directory. + +```bash +mkdir my-ai-app +cd my-ai-app +pnpm init +``` + +### Install Dependencies + +Install `ai`, the AI SDK, along with other necessary dependencies. + + + The AI SDK is designed to be a unified interface to interact with any large + language model. This means that you can change model and providers with just + one line of code! Learn more about [available providers](/providers) and + [building custom providers](/providers/community-providers/custom-providers) + in the [providers](/providers) section. + + +```bash +pnpm add ai zod dotenv +pnpm add -D @types/node tsx typescript +``` + +The `ai` package contains the AI SDK. You will use `zod` to define type-safe schemas that you will pass to the large language model (LLM). You will use `dotenv` to access environment variables (your Vercel AI Gateway key) within your application. There are also three development dependencies, installed with the `-D` flag, that are necessary to run your TypeScript code. + +### Configure Vercel AI Gateway API key + +Create a `.env` file in your project's root directory and add your Vercel AI Gateway API Key. This key is used to authenticate your application with the Vercel AI Gateway service. + + + +Edit the `.env` file: + +```env filename=".env" +AI_GATEWAY_API_KEY=xxxxxxxxx +``` + +Replace `xxxxxxxxx` with your actual Vercel AI Gateway API key. + + + The AI SDK will use the `AI_GATEWAY_API_KEY` environment variable to + authenticate with Vercel AI Gateway. + + +## Create Your Application + +Create an `index.ts` file in the root of your project and add the following code: + +```ts filename="index.ts" +import { ModelMessage, streamText } from 'ai'; +__PROVIDER_IMPORT__; +import 'dotenv/config'; +import * as readline from 'node:readline/promises'; + +const terminal = readline.createInterface({ + input: process.stdin, + output: process.stdout, +}); + +const messages: ModelMessage[] = []; + +async function main() { + while (true) { + const userInput = await terminal.question('You: '); + + messages.push({ role: 'user', content: userInput }); + + const result = streamText({ + model: __MODEL__, + messages, + }); + + let fullResponse = ''; + process.stdout.write('\nAssistant: '); + for await (const delta of result.textStream) { + fullResponse += delta; + process.stdout.write(delta); + } + process.stdout.write('\n\n'); + + messages.push({ role: 'assistant', content: fullResponse }); + } +} + +main().catch(console.error); +``` + +Let's take a look at what is happening in this code: + +1. Set up a readline interface to take input from the terminal, enabling interactive sessions directly from the command line. +2. Initialize an array called `messages` to store the history of your conversation. This history allows the agent to maintain context in ongoing dialogues. +3. In the `main` function: + +- Prompt for and capture user input, storing it in `userInput`. +- Add user input to the `messages` array as a user message. +- Call [`streamText`](/docs/reference/ai-sdk-core/stream-text), which is imported from the `ai` package. This function accepts a configuration object that contains a `model` provider and `messages`. +- Iterate over the text stream returned by the `streamText` function (`result.textStream`) and print the contents of the stream to the terminal. +- Add the assistant's response to the `messages` array. + +## Running Your Application + +With that, you have built everything you need for your agent! To start your application, use the command: + + + +You should see a prompt in your terminal. Test it out by entering a message and see the AI agent respond in real-time! The AI SDK makes it fast and easy to build AI chat interfaces with Node.js. + +## Choosing a Provider + +The AI SDK supports dozens of model providers through [first-party](/providers/ai-sdk-providers), [OpenAI-compatible](/providers/openai-compatible-providers), and [ community ](/providers/community-providers) packages. + +This quickstart uses the [Vercel AI Gateway](https://vercel.com/ai-gateway) provider, which is the default [global provider](/docs/ai-sdk-core/provider-management#global-provider-configuration). This means you can access models using a simple string in the model configuration: + +```ts +model: __MODEL__; +``` + +You can also explicitly import and use the gateway provider in two other equivalent ways: + +```ts +// Option 1: Import from 'ai' package (included by default) +import { gateway } from 'ai'; +model: gateway('anthropic/claude-sonnet-4.5'); + +// Option 2: Install and import from '@ai-sdk/gateway' package +import { gateway } from '@ai-sdk/gateway'; +model: gateway('anthropic/claude-sonnet-4.5'); +``` + +### Using other providers + +To use a different provider, install its package and create a provider instance. For example, to use OpenAI directly: + +
+ + + + + + + + + + + + + + + + +
+ +```ts +import { openai } from '@ai-sdk/openai'; + +model: openai('gpt-5.1'); +``` + +## Enhance Your Agent with Tools + +While large language models (LLMs) have incredible generation capabilities, they struggle with discrete tasks (e.g. mathematics) and interacting with the outside world (e.g. getting the weather). This is where [tools](/docs/ai-sdk-core/tools-and-tool-calling) come in. + +Tools are actions that an LLM can invoke. The results of these actions can be reported back to the LLM to be considered in the next response. + +For example, if a user asks about the current weather, without tools, the agent would only be able to provide general information based on its training data. But with a weather tool, it can fetch and provide up-to-date, location-specific weather information. + +Let's enhance your agent by adding a simple weather tool. + +### Update Your Application + +Modify your `index.ts` file to include the new weather tool: + +```ts filename="index.ts" highlight="2,4,24-37" +import { ModelMessage, streamText, tool } from 'ai'; +__PROVIDER_IMPORT__; +import 'dotenv/config'; +import { z } from 'zod'; +import * as readline from 'node:readline/promises'; + +const terminal = readline.createInterface({ + input: process.stdin, + output: process.stdout, +}); + +const messages: ModelMessage[] = []; + +async function main() { + while (true) { + const userInput = await terminal.question('You: '); + + messages.push({ role: 'user', content: userInput }); + + const result = streamText({ + model: __MODEL__, + messages, + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z + .string() + .describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + }); + + let fullResponse = ''; + process.stdout.write('\nAssistant: '); + for await (const delta of result.textStream) { + fullResponse += delta; + process.stdout.write(delta); + } + process.stdout.write('\n\n'); + + messages.push({ role: 'assistant', content: fullResponse }); + } +} + +main().catch(console.error); +``` + +In this updated code: + +1. You import the `tool` function from the `ai` package. +2. You define a `tools` object with a `weather` tool. This tool: + + - Has a description that helps the agent understand when to use it. + - Defines `inputSchema` using a Zod schema, specifying that it requires a `location` string to execute this tool. The agent will attempt to extract this input from the context of the conversation. If it can't, it will ask the user for the missing information. + - Defines an `execute` function that simulates getting weather data (in this case, it returns a random temperature). This is an asynchronous function running on the server so you can fetch real data from an external API. + +Now your agent can "fetch" weather information for any location the user asks about. When the agent determines it needs to use the weather tool, it will generate a tool call with the necessary parameters. The `execute` function will then be automatically run, and the results will be used by the agent to generate its response. + +Try asking something like "What's the weather in New York?" and see how the agent uses the new tool. + +Notice the blank "assistant" response? This is because instead of generating a text response, the agent generated a tool call. You can access the tool call and subsequent tool result in the `toolCall` and `toolResult` keys of the result object. + +```typescript highlight="46-47" +import { ModelMessage, streamText, tool } from 'ai'; +__PROVIDER_IMPORT__; +import 'dotenv/config'; +import { z } from 'zod'; +import * as readline from 'node:readline/promises'; + +const terminal = readline.createInterface({ + input: process.stdin, + output: process.stdout, +}); + +const messages: ModelMessage[] = []; + +async function main() { + while (true) { + const userInput = await terminal.question('You: '); + + messages.push({ role: 'user', content: userInput }); + + const result = streamText({ + model: __MODEL__, + messages, + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z + .string() + .describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + }); + + let fullResponse = ''; + process.stdout.write('\nAssistant: '); + for await (const delta of result.textStream) { + fullResponse += delta; + process.stdout.write(delta); + } + process.stdout.write('\n\n'); + + console.log(await result.toolCalls); + console.log(await result.toolResults); + messages.push({ role: 'assistant', content: fullResponse }); + } +} + +main().catch(console.error); +``` + +Now, when you ask about the weather, you'll see the tool call and its result displayed in your chat interface. + +## Enabling Multi-Step Tool Calls + +You may have noticed that while the tool results are visible in the chat interface, the agent isn't using this information to answer your original query. This is because once the agent generates a tool call, it has technically completed its generation. + +To solve this, you can enable multi-step tool calls using `stopWhen`. This feature will automatically send tool results back to the agent to trigger an additional generation until the stopping condition you define is met. In this case, you want the agent to answer your question using the results from the weather tool. + +### Update Your Application + +Modify your `index.ts` file to configure stopping conditions with `stopWhen`: + +```ts filename="index.ts" highlight="38-41" +import { ModelMessage, streamText, tool, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; +import 'dotenv/config'; +import { z } from 'zod'; +import * as readline from 'node:readline/promises'; + +const terminal = readline.createInterface({ + input: process.stdin, + output: process.stdout, +}); + +const messages: ModelMessage[] = []; + +async function main() { + while (true) { + const userInput = await terminal.question('You: '); + + messages.push({ role: 'user', content: userInput }); + + const result = streamText({ + model: __MODEL__, + messages, + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z + .string() + .describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + stopWhen: stepCountIs(5), + onStepFinish: async ({ toolResults }) => { + if (toolResults.length) { + console.log(JSON.stringify(toolResults, null, 2)); + } + }, + }); + + let fullResponse = ''; + process.stdout.write('\nAssistant: '); + for await (const delta of result.textStream) { + fullResponse += delta; + process.stdout.write(delta); + } + process.stdout.write('\n\n'); + + messages.push({ role: 'assistant', content: fullResponse }); + } +} + +main().catch(console.error); +``` + +In this updated code: + +1. You set `stopWhen` to be when `stepCountIs` 5, allowing the agent to use up to 5 "steps" for any given generation. +2. You add an `onStepFinish` callback to log any `toolResults` from each step of the interaction, helping you understand the agent's tool usage. This means we can also delete the `toolCall` and `toolResult` `console.log` statements from the previous example. + +Now, when you ask about the weather in a location, you should see the agent using the weather tool results to answer your question. + +By setting `stopWhen: stepCountIs(5)`, you're allowing the agent to use up to 5 "steps" for any given generation. This enables more complex interactions and allows the agent to gather and process information over several steps if needed. You can see this in action by adding another tool to convert the temperature from Celsius to Fahrenheit. + +### Adding a second tool + +Update your `index.ts` file to add a new tool to convert the temperature from Celsius to Fahrenheit: + +```ts filename="index.ts" highlight="37-48" +import { ModelMessage, streamText, tool, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; +import 'dotenv/config'; +import { z } from 'zod'; +import * as readline from 'node:readline/promises'; + +const terminal = readline.createInterface({ + input: process.stdin, + output: process.stdout, +}); + +const messages: ModelMessage[] = []; + +async function main() { + while (true) { + const userInput = await terminal.question('You: '); + + messages.push({ role: 'user', content: userInput }); + + const result = streamText({ + model: __MODEL__, + messages, + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z + .string() + .describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + convertFahrenheitToCelsius: tool({ + description: 'Convert a temperature in fahrenheit to celsius', + inputSchema: z.object({ + temperature: z + .number() + .describe('The temperature in fahrenheit to convert'), + }), + execute: async ({ temperature }) => { + const celsius = Math.round((temperature - 32) * (5 / 9)); + return { + celsius, + }; + }, + }), + }, + stopWhen: stepCountIs(5), + onStepFinish: async ({ toolResults }) => { + if (toolResults.length) { + console.log(JSON.stringify(toolResults, null, 2)); + } + }, + }); + + let fullResponse = ''; + process.stdout.write('\nAssistant: '); + for await (const delta of result.textStream) { + fullResponse += delta; + process.stdout.write(delta); + } + process.stdout.write('\n\n'); + + messages.push({ role: 'assistant', content: fullResponse }); + } +} + +main().catch(console.error); +``` + +Now, when you ask "What's the weather in New York in celsius?", you should see a more complete interaction: + +1. The agent will call the weather tool for New York. +2. You'll see the tool result logged. +3. It will then call the temperature conversion tool to convert the temperature from Fahrenheit to Celsius. +4. The agent will then use that information to provide a natural language response about the weather in New York. + +This multi-step approach allows the agent to gather information and use it to provide more accurate and contextual responses, making your agent considerably more useful. + +This example demonstrates how tools can expand your agent's capabilities. You can create more complex tools to integrate with real APIs, databases, or any other external systems, allowing the agent to access and process real-world data in real-time and perform actions that interact with the outside world. Tools bridge the gap between the agent's knowledge cutoff and current information, while also enabling it to take meaningful actions beyond just generating text responses. + +## Where to Next? + +You've built an AI agent using the AI SDK! From here, you have several paths to explore: + +- To learn more about the AI SDK, read through the [documentation](/docs). +- If you're interested in diving deeper with guides, check out the [RAG (retrieval-augmented generation)](/cookbook/guides/rag-chatbot) and [multi-modal chatbot](/cookbook/guides/multi-modal-chatbot) guides. +- To jumpstart your first AI project, explore available [templates](https://vercel.com/templates?type=ai). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/07-expo.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/07-expo.mdx new file mode 100644 index 000000000..c4bfcb8a4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/07-expo.mdx @@ -0,0 +1,766 @@ +--- +title: Expo +description: Learn how to build your first agent with the AI SDK and Expo. +--- + +# Expo Quickstart + +In this quickstart tutorial, you'll build a simple agent with a streaming chat user interface with [Expo](https://expo.dev/). Along the way, you'll learn key concepts and techniques that are fundamental to using the SDK in your own projects. + +If you are unfamiliar with the concepts of [Prompt Engineering](/docs/advanced/prompt-engineering) and [HTTP Streaming](/docs/foundations/streaming), you can optionally read these documents first. + +## Prerequisites + +To follow this quickstart, you'll need: + +- Node.js 18+ and pnpm installed on your local development machine. +- A [ Vercel AI Gateway ](https://vercel.com/ai-gateway) API key. + +If you haven't obtained your Vercel AI Gateway API key, you can do so by [signing up](https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai&title=Go+to+AI+Gateway) on the Vercel website. + +## Create Your Application + +Start by creating a new Expo application. This command will create a new directory named `my-ai-app` and set up a basic Expo application inside it. + + + +Navigate to the newly created directory: + + + +This guide requires Expo 52 or higher. + +### Install dependencies + +Install `ai` and `@ai-sdk/react`, the AI package and AI SDK's React hooks. The AI SDK's [ Vercel AI Gateway provider ](/providers/ai-sdk-providers/ai-gateway) ships with the `ai` package. You'll also install `zod`, a schema validation library used for defining tool inputs. + + + This guide uses the Vercel AI Gateway provider so you can access hundreds of + models from different providers with one API key, but you can switch to any + provider or model by installing its package. Check out available [AI SDK + providers](/providers/ai-sdk-providers) for more information. + + +
+ + + + + + + + + + + + + + +
+ +### Configure your AI Gateway API key + +Create a `.env.local` file in your project root and add your AI Gateway API key. This key authenticates your application with the Vercel AI Gateway. + + + +Edit the `.env.local` file: + +```env filename=".env.local" +AI_GATEWAY_API_KEY=xxxxxxxxx +``` + +Replace `xxxxxxxxx` with your actual Vercel AI Gateway API key. + + + The AI SDK's Vercel AI Gateway Provider will default to using the + `AI_GATEWAY_API_KEY` environment variable. + + +## Create an API Route + +Create a route handler, `app/api/chat+api.ts` and add the following code: + +```tsx filename="app/api/chat+api.ts" +import { streamText, UIMessage, convertToModelMessages } from 'ai'; +__PROVIDER_IMPORT__; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse({ + headers: { + 'Content-Type': 'application/octet-stream', + 'Content-Encoding': 'none', + }, + }); +} +``` + +Let's take a look at what is happening in this code: + +1. Define an asynchronous `POST` request handler and extract `messages` from the body of the request. The `messages` variable contains a history of the conversation between you and the chatbot and provides the chatbot with the necessary context to make the next generation. +2. Call [`streamText`](/docs/reference/ai-sdk-core/stream-text), which is imported from the `ai` package. This function accepts a configuration object that contains a `model` provider (imported from `ai`) and `messages` (defined in step 1). You can pass additional [settings](/docs/ai-sdk-core/settings) to further customize the model's behavior. +3. The `streamText` function returns a [`StreamTextResult`](/docs/reference/ai-sdk-core/stream-text#result-object). This result object contains the [ `toUIMessageStreamResponse` ](/docs/reference/ai-sdk-core/stream-text#to-ui-message-stream-response) function which converts the result to a streamed response object. +4. Finally, return the result to the client to stream the response. + +This API route creates a POST request endpoint at `/api/chat`. + +## Choosing a Provider + +The AI SDK supports dozens of model providers through [first-party](/providers/ai-sdk-providers), [OpenAI-compatible](/providers/openai-compatible-providers), and [ community ](/providers/community-providers) packages. + +This quickstart uses the [Vercel AI Gateway](https://vercel.com/ai-gateway) provider, which is the default [global provider](/docs/ai-sdk-core/provider-management#global-provider-configuration). This means you can access models using a simple string in the model configuration: + +```ts +model: __MODEL__; +``` + +You can also explicitly import and use the gateway provider in two other equivalent ways: + +```ts +// Option 1: Import from 'ai' package (included by default) +import { gateway } from 'ai'; +model: gateway('anthropic/claude-sonnet-4.5'); + +// Option 2: Install and import from '@ai-sdk/gateway' package +import { gateway } from '@ai-sdk/gateway'; +model: gateway('anthropic/claude-sonnet-4.5'); +``` + +### Using other providers + +To use a different provider, install its package and create a provider instance. For example, to use OpenAI directly: + +
+ + + + + + + + + + + + + + + + +
+ +```ts +import { openai } from '@ai-sdk/openai'; + +model: openai('gpt-5.1'); +``` + +#### Updating the global provider + +You can change the default global provider so string model references use your preferred provider everywhere in your application. Learn more about [provider management](/docs/ai-sdk-core/provider-management#global-provider-configuration). + +Pick the approach that best matches how you want to manage providers across your application. + +## Wire up the UI + +Now that you have an API route that can query an LLM, it's time to setup your frontend. The AI SDK's [ UI ](/docs/ai-sdk-ui) package abstracts the complexity of a chat interface into one hook, [`useChat`](/docs/reference/ai-sdk-ui/use-chat). + +Update your root page (`app/(tabs)/index.tsx`) with the following code to show a list of chat messages and provide a user message input: + +```tsx filename="app/(tabs)/index.tsx" +import { generateAPIUrl } from '@/utils'; +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; +import { fetch as expoFetch } from 'expo/fetch'; +import { useState } from 'react'; +import { View, TextInput, ScrollView, Text, SafeAreaView } from 'react-native'; + +export default function App() { + const [input, setInput] = useState(''); + const { messages, error, sendMessage } = useChat({ + transport: new DefaultChatTransport({ + fetch: expoFetch as unknown as typeof globalThis.fetch, + api: generateAPIUrl('/api/chat'), + }), + onError: error => console.error(error, 'ERROR'), + }); + + if (error) return {error.message}; + + return ( + + + + {messages.map(m => ( + + + {m.role} + {m.parts.map((part, i) => { + switch (part.type) { + case 'text': + return {part.text}; + } + })} + + + ))} + + + + setInput(e.nativeEvent.text)} + onSubmitEditing={e => { + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }} + autoFocus={true} + /> + + + + ); +} +``` + +This page utilizes the `useChat` hook, which will, by default, use the `POST` API route you created earlier (`/api/chat`). The hook provides functions and state for handling user input and form submission. The `useChat` hook provides multiple utility functions and state variables: + +- `messages` - the current chat messages (an array of objects with `id`, `role`, and `parts` properties). +- `sendMessage` - a function to send a message to the chat API. + +The component uses local state (`useState`) to manage the input field value, and handles form submission by calling `sendMessage` with the input text and then clearing the input field. + +The LLM's response is accessed through the message `parts` array. Each message contains an ordered array of `parts` that represents everything the model generated in its response. These parts can include plain text, reasoning tokens, and more that you will see later. The `parts` array preserves the sequence of the model's outputs, allowing you to display or process each component in the order it was generated. + + + You use the expo/fetch function instead of the native node fetch to enable + streaming of chat responses. This requires Expo 52 or higher. + + +### Create the API URL Generator + +Because you're using expo/fetch for streaming responses instead of the native fetch function, you'll need an API URL generator to ensure you are using the correct base url and format depending on the client environment (e.g. web or mobile). Create a new file called `utils.ts` in the root of your project and add the following code: + +```ts filename="utils.ts" +import Constants from 'expo-constants'; + +export const generateAPIUrl = (relativePath: string) => { + const origin = Constants.experienceUrl.replace('exp://', 'http://'); + + const path = relativePath.startsWith('/') ? relativePath : `/${relativePath}`; + + if (process.env.NODE_ENV === 'development') { + return origin.concat(path); + } + + if (!process.env.EXPO_PUBLIC_API_BASE_URL) { + throw new Error( + 'EXPO_PUBLIC_API_BASE_URL environment variable is not defined', + ); + } + + return process.env.EXPO_PUBLIC_API_BASE_URL.concat(path); +}; +``` + +This utility function handles URL generation for both development and production environments, ensuring your API calls work correctly across different devices and configurations. + + + Before deploying to production, you must set the `EXPO_PUBLIC_API_BASE_URL` + environment variable in your production environment. This variable should + point to the base URL of your API server. + + +## Running Your Application + +With that, you have built everything you need for your chatbot! To start your application, use the command: + + + +Head to your browser and open http://localhost:8081. You should see an input field. Test it out by entering a message and see the AI chatbot respond in real-time! The AI SDK makes it fast and easy to build AI chat interfaces with Expo. + + + If you experience "Property `structuredClone` doesn't exist" errors on mobile, + add the [polyfills described below](#polyfills). + + +## Enhance Your Chatbot with Tools + +While large language models (LLMs) have incredible generation capabilities, they struggle with discrete tasks (e.g. mathematics) and interacting with the outside world (e.g. getting the weather). This is where [tools](/docs/ai-sdk-core/tools-and-tool-calling) come in. + +Tools are actions that an LLM can invoke. The results of these actions can be reported back to the LLM to be considered in the next response. + +For example, if a user asks about the current weather, without tools, the model would only be able to provide general information based on its training data. But with a weather tool, it can fetch and provide up-to-date, location-specific weather information. + +Let's enhance your chatbot by adding a simple weather tool. + +### Update Your API route + +Modify your `app/api/chat+api.ts` file to include the new weather tool: + +```tsx filename="app/api/chat+api.ts" highlight="2,11-25" +import { streamText, UIMessage, convertToModelMessages, tool } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse({ + headers: { + 'Content-Type': 'application/octet-stream', + 'Content-Encoding': 'none', + }, + }); +} +``` + +In this updated code: + +1. You import the `tool` function from the `ai` package and `z` from `zod` for schema validation. +2. You define a `tools` object with a `weather` tool. This tool: + + - Has a description that helps the model understand when to use it. + - Defines `inputSchema` using a Zod schema, specifying that it requires a `location` string to execute this tool. The model will attempt to extract this input from the context of the conversation. If it can't, it will ask the user for the missing information. + - Defines an `execute` function that simulates getting weather data (in this case, it returns a random temperature). This is an asynchronous function running on the server so you can fetch real data from an external API. + +Now your chatbot can "fetch" weather information for any location the user asks about. When the model determines it needs to use the weather tool, it will generate a tool call with the necessary input. The `execute` function will then be automatically run, and the tool output will be added to the `messages` as a `tool` message. + + + You may need to restart your development server for the changes to take + effect. + + +Try asking something like "What's the weather in New York?" and see how the model uses the new tool. + +Notice the blank response in the UI? This is because instead of generating a text response, the model generated a tool call. You can access the tool call and subsequent tool result on the client via the `tool-weather` part of the `message.parts` array. + + + Tool parts are always named `tool-{toolName}`, where `{toolName}` is the key + you used when defining the tool. In this case, since we defined the tool as + `weather`, the part type is `tool-weather`. + + +### Update the UI + +To display the weather tool invocation in your UI, update your `app/(tabs)/index.tsx` file: + +```tsx filename="app/(tabs)/index.tsx" highlight="31-35" +import { generateAPIUrl } from '@/utils'; +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; +import { fetch as expoFetch } from 'expo/fetch'; +import { useState } from 'react'; +import { View, TextInput, ScrollView, Text, SafeAreaView } from 'react-native'; + +export default function App() { + const [input, setInput] = useState(''); + const { messages, error, sendMessage } = useChat({ + transport: new DefaultChatTransport({ + fetch: expoFetch as unknown as typeof globalThis.fetch, + api: generateAPIUrl('/api/chat'), + }), + onError: error => console.error(error, 'ERROR'), + }); + + if (error) return {error.message}; + + return ( + + + + {messages.map(m => ( + + + {m.role} + {m.parts.map((part, i) => { + switch (part.type) { + case 'text': + return {part.text}; + case 'tool-weather': + return ( + + {JSON.stringify(part, null, 2)} + + ); + } + })} + + + ))} + + + + setInput(e.nativeEvent.text)} + onSubmitEditing={e => { + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }} + autoFocus={true} + /> + + + + ); +} +``` + + + You may need to restart your development server for the changes to take + effect. + + +With this change, you're updating the UI to handle different message parts. For text parts, you display the text content as before. For weather tool invocations, you display a JSON representation of the tool call and its result. + +Now, when you ask about the weather, you'll see the tool call and its result displayed in your chat interface. + +## Enabling Multi-Step Tool Calls + +You may have noticed that while the tool results are visible in the chat interface, the model isn't using this information to answer your original query. This is because once the model generates a tool call, it has technically completed its generation. + +To solve this, you can enable multi-step tool calls using `stopWhen`. By default, `stopWhen` is set to `stepCountIs(1)`, which means generation stops after the first step when there are tool results. By changing this condition, you can allow the model to automatically send tool results back to itself to trigger additional generations until your specified stopping condition is met. In this case, you want the model to continue generating so it can use the weather tool results to answer your original question. + +### Update Your API Route + +Modify your `app/api/chat+api.ts` file to include the `stopWhen` condition: + +```tsx filename="app/api/chat+api.ts" highlight="10" +import { + streamText, + UIMessage, + convertToModelMessages, + tool, + stepCountIs, +} from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + stopWhen: stepCountIs(5), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse({ + headers: { + 'Content-Type': 'application/octet-stream', + 'Content-Encoding': 'none', + }, + }); +} +``` + + + You may need to restart your development server for the changes to take + effect. + + +Head back to the Expo app and ask about the weather in a location. You should now see the model using the weather tool results to answer your question. + +By setting `stopWhen: stepCountIs(5)`, you're allowing the model to use up to 5 "steps" for any given generation. This enables more complex interactions and allows the model to gather and process information over several steps if needed. You can see this in action by adding another tool to convert the temperature from Fahrenheit to Celsius. + +### Add More Tools + +Update your `app/api/chat+api.ts` file to add a new tool to convert the temperature from Fahrenheit to Celsius: + +```tsx filename="app/api/chat+api.ts" highlight="28-41" +import { + streamText, + UIMessage, + convertToModelMessages, + tool, + stepCountIs, +} from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + stopWhen: stepCountIs(5), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + convertFahrenheitToCelsius: tool({ + description: 'Convert a temperature in fahrenheit to celsius', + inputSchema: z.object({ + temperature: z + .number() + .describe('The temperature in fahrenheit to convert'), + }), + execute: async ({ temperature }) => { + const celsius = Math.round((temperature - 32) * (5 / 9)); + return { + celsius, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse({ + headers: { + 'Content-Type': 'application/octet-stream', + 'Content-Encoding': 'none', + }, + }); +} +``` + + + You may need to restart your development server for the changes to take + effect. + + +### Update the UI for the new tool + +To display the temperature conversion tool invocation in your UI, update your `app/(tabs)/index.tsx` file to handle the new tool part: + +```tsx filename="app/(tabs)/index.tsx" highlight="37-42" +import { generateAPIUrl } from '@/utils'; +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; +import { fetch as expoFetch } from 'expo/fetch'; +import { useState } from 'react'; +import { View, TextInput, ScrollView, Text, SafeAreaView } from 'react-native'; + +export default function App() { + const [input, setInput] = useState(''); + const { messages, error, sendMessage } = useChat({ + transport: new DefaultChatTransport({ + fetch: expoFetch as unknown as typeof globalThis.fetch, + api: generateAPIUrl('/api/chat'), + }), + onError: error => console.error(error, 'ERROR'), + }); + + if (error) return {error.message}; + + return ( + + + + {messages.map(m => ( + + + {m.role} + {m.parts.map((part, i) => { + switch (part.type) { + case 'text': + return {part.text}; + case 'tool-weather': + case 'tool-convertFahrenheitToCelsius': + return ( + + {JSON.stringify(part, null, 2)} + + ); + } + })} + + + ))} + + + + setInput(e.nativeEvent.text)} + onSubmitEditing={e => { + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }} + autoFocus={true} + /> + + + + ); +} +``` + + + You may need to restart your development server for the changes to take + effect. + + +Now, when you ask "What's the weather in New York in celsius?", you should see a more complete interaction: + +1. The model will call the weather tool for New York. +2. You'll see the tool result displayed. +3. It will then call the temperature conversion tool to convert the temperature from Fahrenheit to Celsius. +4. The model will then use that information to provide a natural language response about the weather in New York. + +This multi-step approach allows the model to gather information and use it to provide more accurate and contextual responses, making your chatbot considerably more useful. + +This simple example demonstrates how tools can expand your model's capabilities. You can create more complex tools to integrate with real APIs, databases, or any other external systems, allowing the model to access and process real-world data in real-time. Tools bridge the gap between the model's knowledge cutoff and current information. + +## Polyfills + +Several functions that are internally used by the AI SDK might not available in the Expo runtime depending on your configuration and the target platform. + +First, install the following packages: + +
+ + + + + + + + + + + + + + +
+ +Then create a new file in the root of your project with the following polyfills: + +```ts filename="polyfills.js" +import { Platform } from 'react-native'; +import structuredClone from '@ungap/structured-clone'; + +if (Platform.OS !== 'web') { + const setupPolyfills = async () => { + const { polyfillGlobal } = await import( + 'react-native/Libraries/Utilities/PolyfillFunctions' + ); + + const { TextEncoderStream, TextDecoderStream } = await import( + '@stardazed/streams-text-encoding' + ); + + if (!('structuredClone' in global)) { + polyfillGlobal('structuredClone', () => structuredClone); + } + + polyfillGlobal('TextEncoderStream', () => TextEncoderStream); + polyfillGlobal('TextDecoderStream', () => TextDecoderStream); + }; + + setupPolyfills(); +} + +export {}; +``` + +Finally, import the polyfills in your root `_layout.tsx`: + +```ts filename="_layout.tsx" +import '@/polyfills'; +``` + +## Where to Next? + +You've built an AI chatbot using the AI SDK! From here, you have several paths to explore: + +- To learn more about the AI SDK, read through the [documentation](/docs). +- If you're interested in diving deeper with guides, check out the [RAG (retrieval-augmented generation)](/cookbook/guides/rag-chatbot) and [multi-modal chatbot](/cookbook/guides/multi-modal-chatbot) guides. +- To jumpstart your first AI project, explore available [templates](https://vercel.com/templates?type=ai). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/08-tanstack-start.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/08-tanstack-start.mdx new file mode 100644 index 000000000..067097575 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/08-tanstack-start.mdx @@ -0,0 +1,583 @@ +--- +title: TanStack Start +description: Learn how to build your first agent with the AI SDK and TanStack Start. +--- + +# TanStack Start Quickstart + +The AI SDK is a powerful TypeScript library designed to help developers build AI-powered applications. + +In this quickstart tutorial, you'll build a simple agent with a streaming chat user interface. Along the way, you'll learn key concepts and techniques that are fundamental to using the AI SDK in your own projects. + +If you are unfamiliar with the concepts of [Prompt Engineering](/docs/advanced/prompt-engineering) and [HTTP Streaming](/docs/foundations/streaming), you can optionally read these documents first. + +## Prerequisites + +To follow this quickstart, you'll need: + +- Node.js 18+ and pnpm installed on your local development machine. +- A [ Vercel AI Gateway ](https://vercel.com/ai-gateway) API key. + +If you haven't obtained your Vercel AI Gateway API key, you can do so by [signing up](https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai&title=Go+to+AI+Gateway) on the Vercel website. + +## Create Your Application + +Start by creating a new TanStack Start application. This command will create a new directory named `my-ai-app` and set up a basic TanStack Start application inside it. + + + +Navigate to the newly created directory: + + + +### Install dependencies + +Install `ai` and `@ai-sdk/react`, the AI package and AI SDK's React hooks. The AI SDK's [ Vercel AI Gateway provider ](/providers/ai-sdk-providers/ai-gateway) ships with the `ai` package. You'll also install `zod`, a schema validation library used for defining tool inputs. + + + This guide uses the Vercel AI Gateway provider so you can access hundreds of + models from different providers with one API key, but you can switch to any + provider or model by installing its package. Check out available [AI SDK + providers](/providers/ai-sdk-providers) for more information. + + +
+ + + + + + + + + + + + + + + + +
+ +### Configure your AI Gateway API key + +Create a `.env` file in your project root and add your AI Gateway API key. This key authenticates your application with Vercel AI Gateway. + + + +Edit the `.env` file: + +```env filename=".env" +AI_GATEWAY_API_KEY=xxxxxxxxx +``` + +Replace `xxxxxxxxx` with your actual Vercel AI Gateway API key. + + + The AI SDK's Vercel AI Gateway Provider will default to using the + `AI_GATEWAY_API_KEY` environment variable. + + +## Create a Route Handler + +Create a route handler, `src/routes/api/chat.ts` and add the following code: + +```tsx filename="src/routes/api/chat.ts" +import { streamText, UIMessage, convertToModelMessages } from 'ai'; +__PROVIDER_IMPORT__; +import { createFileRoute } from '@tanstack/react-router'; + +export const Route = createFileRoute('/api/chat')({ + server: { + handlers: { + POST: async ({ request }) => { + const { messages }: { messages: UIMessage[] } = await request.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse(); + }, + }, + }, +}); +``` + +Let's take a look at what is happening in this code: + +1. Define an asynchronous `POST` request handler using TanStack Start's server routes and extract `messages` from the body of the request. The `messages` variable contains a history of the conversation between you and the chatbot and provides the chatbot with the necessary context to make the next generation. The `messages` are of UIMessage type, which are designed for use in application UI - they contain the entire message history and associated metadata like timestamps. +2. Call [`streamText`](/docs/reference/ai-sdk-core/stream-text), which is imported from the `ai` package. This function accepts a configuration object that contains a `model` provider and `messages` (defined in step 1). You can pass additional [settings](/docs/ai-sdk-core/settings) to further customize the model's behavior. The `messages` key expects a `ModelMessage[]` array. This type is different from `UIMessage` in that it does not include metadata, such as timestamps or sender information. To convert between these types, we use the `convertToModelMessages` function, which strips the UI-specific metadata and transforms the `UIMessage[]` array into the `ModelMessage[]` format that the model expects. +3. The `streamText` function returns a [`StreamTextResult`](/docs/reference/ai-sdk-core/stream-text#result-object). This result object contains the [ `toUIMessageStreamResponse` ](/docs/reference/ai-sdk-core/stream-text#to-ui-message-stream-response) function which converts the result to a streamed response object. +4. Finally, return the result to the client to stream the response. + +This Route Handler creates a POST request endpoint at `/api/chat`. + +## Choosing a Provider + +The AI SDK supports dozens of model providers through [first-party](/providers/ai-sdk-providers), [OpenAI-compatible](/providers/openai-compatible-providers), and [ community ](/providers/community-providers) packages. + +This quickstart uses the [Vercel AI Gateway](https://vercel.com/ai-gateway) provider, which is the default [global provider](/docs/ai-sdk-core/provider-management#global-provider-configuration). This means you can access models using a simple string in the model configuration: + +```ts +model: __MODEL__; +``` + +You can also explicitly import and use the gateway provider in two other equivalent ways: + +```ts +// Option 1: Import from 'ai' package (included by default) +import { gateway } from 'ai'; +model: gateway('anthropic/claude-sonnet-4.5'); + +// Option 2: Install and import from '@ai-sdk/gateway' package +import { gateway } from '@ai-sdk/gateway'; +model: gateway('anthropic/claude-sonnet-4.5'); +``` + +### Using other providers + +To use a different provider, install its package and create a provider instance. For example, to use OpenAI directly: + +
+ + + + + + + + + + + + + + + + +
+ +```ts +import { openai } from '@ai-sdk/openai'; + +model: openai('gpt-5.1'); +``` + +#### Updating the global provider + +You can change the default global provider so string model references use your preferred provider everywhere in your application. Learn more about [provider management](/docs/ai-sdk-core/provider-management#global-provider-configuration). + +Pick the approach that best matches how you want to manage providers across your application. + +## Wire up the UI + +Now that you have a Route Handler that can query an LLM, it's time to setup your frontend. The AI SDK's [ UI ](/docs/ai-sdk-ui) package abstracts the complexity of a chat interface into one hook, [`useChat`](/docs/reference/ai-sdk-ui/use-chat). + +Update your index route (`src/routes/index.tsx`) with the following code to show a list of chat messages and provide a user message input: + +```tsx filename="src/routes/index.tsx" +import { createFileRoute } from '@tanstack/react-router'; +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; + +export const Route = createFileRoute('/')({ + component: Chat, +}); + +function Chat() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat(); + return ( +
+ {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, i) => { + switch (part.type) { + case 'text': + return
{part.text}
; + } + })} +
+ ))} + +
{ + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }} + > + setInput(e.currentTarget.value)} + /> +
+
+ ); +} +``` + +This page utilizes the `useChat` hook, which will, by default, use the `POST` API route you created earlier (`/api/chat`). The hook provides functions and state for handling user input and form submission. The `useChat` hook provides multiple utility functions and state variables: + +- `messages` - the current chat messages (an array of objects with `id`, `role`, and `parts` properties). +- `sendMessage` - a function to send a message to the chat API. + +The component uses local state (`useState`) to manage the input field value, and handles form submission by calling `sendMessage` with the input text and then clearing the input field. + +The LLM's response is accessed through the message `parts` array. Each message contains an ordered array of `parts` that represents everything the model generated in its response. These parts can include plain text, reasoning tokens, and more that you will see later. The `parts` array preserves the sequence of the model's outputs, allowing you to display or process each component in the order it was generated. + +## Running Your Application + +With that, you have built everything you need for your chatbot! To start your application, use the command: + + + +Head to your browser and open http://localhost:3000. You should see an input field. Test it out by entering a message and see the AI chatbot respond in real-time! The AI SDK makes it fast and easy to build AI chat interfaces with TanStack Start. + +## Enhance Your Chatbot with Tools + +While large language models (LLMs) have incredible generation capabilities, they struggle with discrete tasks (e.g. mathematics) and interacting with the outside world (e.g. getting the weather). This is where [tools](/docs/ai-sdk-core/tools-and-tool-calling) come in. + +Tools are actions that an LLM can invoke. The results of these actions can be reported back to the LLM to be considered in the next response. + +For example, if a user asks about the current weather, without tools, the model would only be able to provide general information based on its training data. But with a weather tool, it can fetch and provide up-to-date, location-specific weather information. + +Let's enhance your chatbot by adding a simple weather tool. + +### Update Your Route Handler + +Modify your `src/routes/api/chat.ts` file to include the new weather tool: + +```tsx filename="src/routes/api/chat.ts" highlight="2,13-27" +import { streamText, UIMessage, convertToModelMessages, tool } from 'ai'; +__PROVIDER_IMPORT__; +import { createFileRoute } from '@tanstack/react-router'; +import { z } from 'zod'; + +export const Route = createFileRoute('/api/chat')({ + server: { + handlers: { + POST: async ({ request }) => { + const { messages }: { messages: UIMessage[] } = await request.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z + .string() + .describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); + }, + }, + }, +}); +``` + +In this updated code: + +1. You import the `tool` function from the `ai` package and `z` from `zod` for schema validation. +2. You define a `tools` object with a `weather` tool. This tool: + + - Has a description that helps the model understand when to use it. + - Defines `inputSchema` using a Zod schema, specifying that it requires a `location` string to execute this tool. The model will attempt to extract this input from the context of the conversation. If it can't, it will ask the user for the missing information. + - Defines an `execute` function that simulates getting weather data (in this case, it returns a random temperature). This is an asynchronous function running on the server so you can fetch real data from an external API. + +Now your chatbot can "fetch" weather information for any location the user asks about. When the model determines it needs to use the weather tool, it will generate a tool call with the necessary input. The `execute` function will then be automatically run, and the tool output will be added to the `messages` as a `tool` message. + +Try asking something like "What's the weather in New York?" and see how the model uses the new tool. + +Notice the blank response in the UI? This is because instead of generating a text response, the model generated a tool call. You can access the tool call and subsequent tool result on the client via the `tool-weather` part of the `message.parts` array. + + + Tool parts are always named `tool-{toolName}`, where `{toolName}` is the key + you used when defining the tool. In this case, since we defined the tool as + `weather`, the part type is `tool-weather`. + + +### Update the UI + +To display the tool invocation in your UI, update your `src/routes/index.tsx` file: + +```tsx filename="src/routes/index.tsx" highlight="16-21" +import { createFileRoute } from '@tanstack/react-router'; +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; + +export const Route = createFileRoute('/')({ + component: Chat, +}); + +function Chat() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat(); + return ( +
+ {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, i) => { + switch (part.type) { + case 'text': + return
{part.text}
; + case 'tool-weather': + return ( +
+                    {JSON.stringify(part, null, 2)}
+                  
+ ); + } + })} +
+ ))} + +
{ + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }} + > + setInput(e.currentTarget.value)} + /> +
+
+ ); +} +``` + +With this change, you're updating the UI to handle different message parts. For text parts, you display the text content as before. For weather tool invocations, you display a JSON representation of the tool call and its result. + +Now, when you ask about the weather, you'll see the tool call and its result displayed in your chat interface. + +## Enabling Multi-Step Tool Calls + +You may have noticed that while the tool is now visible in the chat interface, the model isn't using this information to answer your original query. This is because once the model generates a tool call, it has technically completed its generation. + +To solve this, you can enable multi-step tool calls using `stopWhen`. By default, `stopWhen` is set to `stepCountIs(1)`, which means generation stops after the first step when there are tool results. By changing this condition, you can allow the model to automatically send tool results back to itself to trigger additional generations until your specified stopping condition is met. In this case, you want the model to continue generating so it can use the weather tool results to answer your original question. + +### Update Your Route Handler + +Modify your `src/routes/api/chat.ts` file to include the `stopWhen` condition: + +```tsx filename="src/routes/api/chat.ts" +import { + streamText, + UIMessage, + convertToModelMessages, + tool, + stepCountIs, +} from 'ai'; +__PROVIDER_IMPORT__; +import { createFileRoute } from '@tanstack/react-router'; +import { z } from 'zod'; + +export const Route = createFileRoute('/api/chat')({ + server: { + handlers: { + POST: async ({ request }) => { + const { messages }: { messages: UIMessage[] } = await request.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + stopWhen: stepCountIs(5), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z + .string() + .describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); + }, + }, + }, +}); +``` + +In this updated code, you set `stopWhen` to be when `stepCountIs(5)`, allowing the model to use up to 5 "steps" for any given generation. + +Head back to the browser and ask about the weather in a location. You should now see the model using the weather tool results to answer your question. + +By setting `stopWhen: stepCountIs(5)`, you're allowing the model to use up to 5 "steps" for any given generation. This enables more complex interactions and allows the model to gather and process information over several steps if needed. You can see this in action by adding another tool to convert the temperature from Celsius to Fahrenheit. + +### Add another tool + +Update your `src/routes/api/chat.ts` file to add a new tool to convert the temperature from Fahrenheit to Celsius: + +```tsx filename="src/routes/api/chat.ts" highlight="34-47" +import { + streamText, + UIMessage, + convertToModelMessages, + tool, + stepCountIs, +} from 'ai'; +__PROVIDER_IMPORT__; +import { createFileRoute } from '@tanstack/react-router'; +import { z } from 'zod'; + +export const Route = createFileRoute('/api/chat')({ + server: { + handlers: { + POST: async ({ request }) => { + const { messages }: { messages: UIMessage[] } = await request.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + stopWhen: stepCountIs(5), + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z + .string() + .describe('The location to get the weather for'), + }), + execute: async ({ location }) => { + const temperature = Math.round(Math.random() * (90 - 32) + 32); + return { + location, + temperature, + }; + }, + }), + convertFahrenheitToCelsius: tool({ + description: 'Convert a temperature in fahrenheit to celsius', + inputSchema: z.object({ + temperature: z + .number() + .describe('The temperature in fahrenheit to convert'), + }), + execute: async ({ temperature }) => { + const celsius = Math.round((temperature - 32) * (5 / 9)); + return { + celsius, + }; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); + }, + }, + }, +}); +``` + +### Update Your Frontend + +update your `src/routes/index.tsx` file to render the new temperature conversion tool: + +```tsx filename="src/routes/index.tsx" highlight="21" +import { createFileRoute } from '@tanstack/react-router'; +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; + +export const Route = createFileRoute('/')({ + component: Chat, +}); + +function Chat() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat(); + return ( +
+ {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, i) => { + switch (part.type) { + case 'text': + return
{part.text}
; + case 'tool-weather': + case 'tool-convertFahrenheitToCelsius': + return ( +
+                    {JSON.stringify(part, null, 2)}
+                  
+ ); + } + })} +
+ ))} + +
{ + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }} + > + setInput(e.currentTarget.value)} + /> +
+
+ ); +} +``` + +This update handles the new `tool-convertFahrenheitToCelsius` part type, displaying the temperature conversion tool calls and results in the UI. + +Now, when you ask "What's the weather in New York in celsius?", you should see a more complete interaction: + +1. The model will call the weather tool for New York. +2. You'll see the tool output displayed. +3. It will then call the temperature conversion tool to convert the temperature from Fahrenheit to Celsius. +4. The model will then use that information to provide a natural language response about the weather in New York. + +This multi-step approach allows the model to gather information and use it to provide more accurate and contextual responses, making your chatbot considerably more useful. + +This simple example demonstrates how tools can expand your model's capabilities. You can create more complex tools to integrate with real APIs, databases, or any other external systems, allowing the model to access and process real-world data in real-time. Tools bridge the gap between the model's knowledge cutoff and current information. + +## Where to Next? + +You've built an AI chatbot using the AI SDK! From here, you have several paths to explore: + +- To learn more about the AI SDK, read through the [documentation](/docs). +- If you're interested in diving deeper with guides, check out the [RAG (retrieval-augmented generation)](/cookbook/guides/rag-chatbot) and [multi-modal chatbot](/cookbook/guides/multi-modal-chatbot) guides. +- To jumpstart your first AI project, explore available [templates](https://vercel.com/templates?type=ai). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/09-coding-agents.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/09-coding-agents.mdx new file mode 100644 index 000000000..ad8d89392 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/09-coding-agents.mdx @@ -0,0 +1,179 @@ +--- +title: Coding Agents +description: Learn how to set up the AI SDK for use with coding agents, including installing skills, accessing bundled docs, and using DevTools. +--- + +# Getting Started with Coding Agents + +This page explains how to get the most out of the AI SDK when working inside a coding agent (such as Claude Code, Codex, OpenCode, Cursor, or any other AI-assisted development environment). + +## Install the AI SDK Skill + +The fastest way to give your coding agent deep knowledge of the AI SDK is to install the official AI SDK skill. Skills are lightweight markdown files that load specialized instructions into your agent's context on demand — so your agent knows exactly how to use the SDK without you needing to explain it. + +Install the AI SDK skill using `npx skills add`: + +```bash +npx skills add vercel/ai +``` + +This installs the skill into your agent's specific skills directory (e.g., `.claude/skills`, `.codex/skills`). If you select more than one agent, the CLI creates symlinks so each agent can discover the skill. Use `-a` to specify agents directly — for example, `-a amp` installs into the universal `.agents/skills` directory. Use `-y` for non-interactive installation. + +Once installed, any agent that supports the [Agent Skills](https://agentskills.io) format will automatically discover and load the skill when working on AI SDK tasks. + + + Agent Skills use **progressive disclosure**: your agent loads only the skill's + name and description at startup. The full instructions are only pulled into + context when the task calls for it, keeping your agent fast and focused. + + +## Docs and Source Code in `node_modules` + +Once you've installed the `ai` package, you already have the full AI SDK documentation and source code available locally inside `node_modules`. Your coding agent can read these directly — no internet access required. + +Install the `ai` package if you haven't already: + +
+ + + + + + + + + + + + + + +
+ +After installation, your agent can reference the bundled source code and documentation at paths like: + +``` +node_modules/ai/src/ # Full source code organized by module +node_modules/ai/docs/ # Official documentation with examples +``` + +This means your agent can look up accurate API signatures, implementations, and usage examples directly from the installed package — ensuring it always uses the version of the SDK that's actually installed in your project. + +## Install DevTools + +AI SDK DevTools gives you full visibility into your AI SDK calls during development. It captures LLM requests, responses, tool calls, token usage, and multi-step interactions, and displays them in a local web UI. + + + AI SDK DevTools is experimental and intended for local development only. Do + not use in production environments. + + +Install the DevTools package: + +
+ + + + + + + + + + + + + + +
+ +### Add the middleware + +Wrap your language model with the DevTools middleware using [`wrapLanguageModel`](/docs/ai-sdk-core/middleware): + +```ts +import { wrapLanguageModel, gateway } from 'ai'; +import { devToolsMiddleware } from '@ai-sdk/devtools'; + +const model = wrapLanguageModel({ + model: gateway('anthropic/claude-sonnet-4.5'), + middleware: devToolsMiddleware(), +}); +``` + +Use the wrapped model with any AI SDK Core function: + +```ts +import { generateText } from 'ai'; + +const result = await generateText({ + model, // wrapped model with DevTools middleware + prompt: 'What cities are in the United States?', +}); +``` + +### Launch the viewer + +Start the DevTools viewer in a separate terminal: + +```bash +npx @ai-sdk/devtools +``` + +Open [http://localhost:4983](http://localhost:4983) to inspect your AI SDK interactions in real time. + +## Inspecting Tool Calls and Outputs + +DevTools captures and displays the following for every call: + +- **Input parameters and prompts** — the complete input sent to your LLM +- **Output content and tool calls** — generated text and tool invocations +- **Token usage and timing** — resource consumption and latency per step +- **Raw provider data** — complete request and response payloads + +For multi-step agent interactions, DevTools groups everything into **runs** (a complete interaction) and **steps** (each individual LLM call within it), making it easy to trace exactly what your agent did and why. + +You can also log tool results directly in code during development: + +```ts +import { streamText, tool, stepCountIs } from 'ai'; +import { z } from 'zod'; + +const result = streamText({ + model, + prompt: "What's the weather in New York in celsius?", + tools: { + weather: tool({ + description: 'Get the weather in a location (fahrenheit)', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => ({ + location, + temperature: Math.round(Math.random() * (90 - 32) + 32), + }), + }), + }, + stopWhen: stepCountIs(5), + onStepFinish: async ({ toolResults }) => { + if (toolResults.length) { + console.log(JSON.stringify(toolResults, null, 2)); + } + }, +}); +``` + +The `onStepFinish` callback fires after each LLM step and prints any tool results to your terminal — useful for quick debugging without opening the DevTools UI. + + + DevTools stores all AI interactions in a local `.devtools/generations.json` + file. It automatically adds `.devtools` to your `.gitignore` to prevent + committing sensitive interaction data. + + +## Where to Next? + +- Learn about [Agent Skills](https://agentskills.io/specification) to understand the full skill format. +- Read the [DevTools reference](/docs/ai-sdk-core/devtools) for a complete list of captured data and configuration options. +- Explore [Tools and Tool Calling](/docs/ai-sdk-core/tools-and-tool-calling) to build agents that can take real-world actions. +- Check out the [Add Skills to Your Agent](/cookbook/guides/agent-skills) cookbook guide for a step-by-step integration walkthrough. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/index.mdx new file mode 100644 index 000000000..e1ab30273 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/02-getting-started/index.mdx @@ -0,0 +1,44 @@ +--- +title: Getting Started +description: Welcome to the AI SDK documentation! +--- + +# Getting Started + +The following guides are intended to provide you with an introduction to some of the core features provided by the AI SDK. + + + +## Backend Framework Examples + +You can also use [AI SDK Core](/docs/ai-sdk-core/overview) and [AI SDK UI](/docs/ai-sdk-ui/overview) with the following backend frameworks: + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/01-overview.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/01-overview.mdx new file mode 100644 index 000000000..a1bcc696e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/01-overview.mdx @@ -0,0 +1,96 @@ +--- +title: Overview +description: Learn how to build agents with the AI SDK. +--- + +# Agents + +Agents are **large language models (LLMs)** that use **tools** in a **loop** to accomplish tasks. + +These components work together: + +- **LLMs** process input and decide the next action +- **Tools** extend capabilities beyond text generation (reading files, calling APIs, writing to databases) +- **Loop** orchestrates execution through: + - **Context management** - Maintaining conversation history and deciding what the model sees (input) at each step + - **Stopping conditions** - Determining when the loop (task) is complete + +## ToolLoopAgent Class + +The ToolLoopAgent class handles these three components. Here's an agent that uses multiple tools in a loop to accomplish a task: + +```ts +import { ToolLoopAgent, stepCountIs, tool } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const weatherAgent = new ToolLoopAgent({ + model: __MODEL__, + tools: { + weather: tool({ + description: 'Get the weather in a location (in Fahrenheit)', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => ({ + location, + temperature: 72 + Math.floor(Math.random() * 21) - 10, + }), + }), + convertFahrenheitToCelsius: tool({ + description: 'Convert temperature from Fahrenheit to Celsius', + inputSchema: z.object({ + temperature: z.number().describe('Temperature in Fahrenheit'), + }), + execute: async ({ temperature }) => { + const celsius = Math.round((temperature - 32) * (5 / 9)); + return { celsius }; + }, + }), + }, + // Agent's default behavior is to stop after a maximum of 20 steps + // stopWhen: stepCountIs(20), +}); + +const result = await weatherAgent.generate({ + prompt: 'What is the weather in San Francisco in celsius?', +}); + +console.log(result.text); // agent's final answer +console.log(result.steps); // steps taken by the agent +``` + +The agent automatically: + +1. Calls the `weather` tool to get the temperature in Fahrenheit +2. Calls `convertFahrenheitToCelsius` to convert it +3. Generates a final text response with the result + +The ToolLoopAgent handles the loop, context management, and stopping conditions. + +## Why Use the ToolLoopAgent? + +The ToolLoopAgent is the recommended approach for building agents with the AI SDK because it: + +- **Reduces boilerplate** - Manages loops and message arrays +- **Improves reusability** - Define once, use throughout your application +- **Simplifies maintenance** - Single place to update agent configuration + +For most use cases, start with the ToolLoopAgent. Use core functions (`generateText`, `streamText`) when you need explicit control over each step for complex structured workflows. + +## Structured Workflows + +Agents are flexible and powerful, but non-deterministic. When you need reliable, repeatable outcomes with explicit control flow, use core functions with structured workflow patterns combining: + +- Conditional statements for explicit branching +- Standard functions for reusable logic +- Error handling for robustness +- Explicit control flow for predictability + +[Explore workflow patterns](/docs/agents/workflows) to learn more about building structured, reliable systems. + +## Next Steps + +- **[Building Agents](/docs/agents/building-agents)** - Guide to creating agents with the ToolLoopAgent +- **[Workflow Patterns](/docs/agents/workflows)** - Structured patterns using core functions for complex workflows +- **[Loop Control](/docs/agents/loop-control)** - Execution control with stopWhen and prepareStep diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/02-building-agents.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/02-building-agents.mdx new file mode 100644 index 000000000..6efa9c686 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/02-building-agents.mdx @@ -0,0 +1,407 @@ +--- +title: Building Agents +description: Complete guide to creating agents with the ToolLoopAgent. +--- + +# Building Agents + +The ToolLoopAgent provides a structured way to encapsulate LLM configuration, tools, and behavior into reusable components. It handles the agent loop for you, allowing the LLM to call tools multiple times in sequence to accomplish complex tasks. Define agents once and use them across your application. + +## Why Use the ToolLoopAgent Class? + +When building AI applications, you often need to: + +- **Reuse configurations** - Same model settings, tools, and prompts across different parts of your application +- **Maintain consistency** - Ensure the same behavior and capabilities throughout your codebase +- **Simplify API routes** - Reduce boilerplate in your endpoints +- **Type safety** - Get full TypeScript support for your agent's tools and outputs + +The ToolLoopAgent class provides a single place to define your agent's behavior. + +## Creating an Agent + +Define an agent by instantiating the ToolLoopAgent class with your desired configuration: + +```ts +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; + +const myAgent = new ToolLoopAgent({ + model: __MODEL__, + instructions: 'You are a helpful assistant.', + tools: { + // Your tools here + }, +}); +``` + +## Configuration Options + +The ToolLoopAgent accepts all the same settings as `generateText` and `streamText`. Configure: + +### Model and System Instructions + +```ts +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + instructions: 'You are an expert software engineer.', +}); +``` + +### Tools + +Provide tools that the agent can use to accomplish tasks: + +```ts +import { ToolLoopAgent, tool } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const codeAgent = new ToolLoopAgent({ + model: __MODEL__, + tools: { + runCode: tool({ + description: 'Execute Python code', + inputSchema: z.object({ + code: z.string(), + }), + execute: async ({ code }) => { + // Execute code and return result + return { output: 'Code executed successfully' }; + }, + }), + }, +}); +``` + +### Loop Control + +By default, agents run for 20 steps (`stopWhen: stepCountIs(20)`). In each step, the model either generates text or calls a tool. If it generates text, the agent completes. If it calls a tool, the AI SDK executes that tool. + +To let agents call multiple tools in sequence, configure `stopWhen` to allow more steps. After each tool execution, the agent triggers a new generation where the model can call another tool or generate text: + +```ts +import { ToolLoopAgent, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + stopWhen: stepCountIs(20), // Allow up to 20 steps +}); +``` + +Each step represents one generation (which results in either text or a tool call). The loop continues until: + +- A finish reasoning other than tool-calls is returned, or +- A tool that is invoked does not have an execute function, or +- A tool call needs approval, or +- A stop condition is met + +You can combine multiple conditions: + +```ts +import { ToolLoopAgent, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + stopWhen: [ + stepCountIs(20), // Maximum 20 steps + yourCustomCondition(), // Custom logic for when to stop + ], +}); +``` + +Learn more about [loop control and stop conditions](/docs/agents/loop-control). + +### Tool Choice + +Control how the agent uses tools: + +```ts +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + tools: { + // your tools here + }, + toolChoice: 'required', // Force tool use + // or toolChoice: 'none' to disable tools + // or toolChoice: 'auto' (default) to let the model decide +}); +``` + +You can also force the use of a specific tool: + +```ts +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + tools: { + weather: weatherTool, + cityAttractions: attractionsTool, + }, + toolChoice: { + type: 'tool', + toolName: 'weather', // Force the weather tool to be used + }, +}); +``` + +### Structured Output + +Define structured output schemas: + +```ts +import { ToolLoopAgent, Output, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const analysisAgent = new ToolLoopAgent({ + model: __MODEL__, + output: Output.object({ + schema: z.object({ + sentiment: z.enum(['positive', 'neutral', 'negative']), + summary: z.string(), + keyPoints: z.array(z.string()), + }), + }), + stopWhen: stepCountIs(10), +}); + +const { output } = await analysisAgent.generate({ + prompt: 'Analyze customer feedback from the last quarter', +}); +``` + +## Define Agent Behavior with System Instructions + +System instructions define your agent's behavior, personality, and constraints. They set the context for all interactions and guide how the agent responds to user queries and uses tools. + +### Basic System Instructions + +Set the agent's role and expertise: + +```ts +const agent = new ToolLoopAgent({ + model: __MODEL__, + instructions: + 'You are an expert data analyst. You provide clear insights from complex data.', +}); +``` + +### Detailed Behavioral Instructions + +Provide specific guidelines for agent behavior: + +```ts +const codeReviewAgent = new ToolLoopAgent({ + model: __MODEL__, + instructions: `You are a senior software engineer conducting code reviews. + + Your approach: + - Focus on security vulnerabilities first + - Identify performance bottlenecks + - Suggest improvements for readability and maintainability + - Be constructive and educational in your feedback + - Always explain why something is an issue and how to fix it`, +}); +``` + +### Constrain Agent Behavior + +Set boundaries and ensure consistent behavior: + +```ts +const customerSupportAgent = new ToolLoopAgent({ + model: __MODEL__, + instructions: `You are a customer support specialist for an e-commerce platform. + + Rules: + - Never make promises about refunds without checking the policy + - Always be empathetic and professional + - If you don't know something, say so and offer to escalate + - Keep responses concise and actionable + - Never share internal company information`, + tools: { + checkOrderStatus, + lookupPolicy, + createTicket, + }, +}); +``` + +### Tool Usage Instructions + +Guide how the agent should use available tools: + +```ts +const researchAgent = new ToolLoopAgent({ + model: __MODEL__, + instructions: `You are a research assistant with access to search and document tools. + + When researching: + 1. Always start with a broad search to understand the topic + 2. Use document analysis for detailed information + 3. Cross-reference multiple sources before drawing conclusions + 4. Cite your sources when presenting information + 5. If information conflicts, present both viewpoints`, + tools: { + webSearch, + analyzeDocument, + extractQuotes, + }, +}); +``` + +### Format and Style Instructions + +Control the output format and communication style: + +```ts +const technicalWriterAgent = new ToolLoopAgent({ + model: __MODEL__, + instructions: `You are a technical documentation writer. + + Writing style: + - Use clear, simple language + - Avoid jargon unless necessary + - Structure information with headers and bullet points + - Include code examples where relevant + - Write in second person ("you" instead of "the user") + + Always format responses in Markdown.`, +}); +``` + +## Using an Agent + +Once defined, you can use your agent in three ways: + +### Generate Text + +Use `generate()` for one-time text generation: + +```ts +const result = await myAgent.generate({ + prompt: 'What is the weather like?', +}); + +console.log(result.text); +``` + +### Stream Text + +Use `stream()` for streaming responses: + +```ts +const result = await myAgent.stream({ + prompt: 'Tell me a story', +}); + +for await (const chunk of result.textStream) { + console.log(chunk); +} +``` + +### Respond to UI Messages + +Use `createAgentUIStreamResponse()` to create API responses for client applications: + +```ts +// In your API route (e.g., app/api/chat/route.ts) +import { createAgentUIStreamResponse } from 'ai'; + +export async function POST(request: Request) { + const { messages } = await request.json(); + + return createAgentUIStreamResponse({ + agent: myAgent, + uiMessages: messages, + }); +} +``` + +### Track Step Progress + +Use `onStepFinish` to track each step's progress, including token usage. +The callback receives a `stepNumber` (zero-based) to identify which step just completed: + +```ts +const result = await myAgent.generate({ + prompt: 'Research and summarize the latest AI trends', + onStepFinish: async ({ stepNumber, usage, finishReason, toolCalls }) => { + console.log(`Step ${stepNumber} completed:`, { + inputTokens: usage.inputTokens, + outputTokens: usage.outputTokens, + finishReason, + toolsUsed: toolCalls?.map(tc => tc.toolName), + }); + }, +}); +``` + +You can also define `onStepFinish` in the constructor for agent-wide tracking. When both constructor and method callbacks are provided, both are called (constructor first, then the method callback): + +```ts +const agent = new ToolLoopAgent({ + model: __MODEL__, + onStepFinish: async ({ stepNumber, usage }) => { + // Agent-wide logging + console.log(`Agent step ${stepNumber}:`, usage.totalTokens); + }, +}); + +// Method-level callback runs after constructor callback +const result = await agent.generate({ + prompt: 'Hello', + onStepFinish: async ({ stepNumber, usage }) => { + // Per-call tracking (e.g., for billing) + await trackUsage(stepNumber, usage); + }, +}); +``` + +## End-to-end Type Safety + +You can infer types for your agent's `UIMessage`s: + +```ts +import { ToolLoopAgent, InferAgentUIMessage } from 'ai'; + +const myAgent = new ToolLoopAgent({ + // ... configuration +}); + +// Infer the UIMessage type for UI components or persistence +export type MyAgentUIMessage = InferAgentUIMessage; +``` + +Use this type in your client components with `useChat`: + +```tsx filename="components/chat.tsx" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import type { MyAgentUIMessage } from '@/agent/my-agent'; + +export function Chat() { + const { messages } = useChat(); + // Full type safety for your messages and tools +} +``` + +## Next Steps + +Now that you understand building agents, you can: + +- Explore [workflow patterns](/docs/agents/workflows) for structured patterns using core functions +- Learn about [loop control](/docs/agents/loop-control) for advanced execution control +- See [manual loop examples](/cookbook/node/manual-agent-loop) for custom workflow implementations diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/03-workflows.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/03-workflows.mdx new file mode 100644 index 000000000..3f58c1d0b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/03-workflows.mdx @@ -0,0 +1,386 @@ +--- +title: Workflow Patterns +description: Learn workflow patterns for building reliable agents with the AI SDK. +--- + +# Workflow Patterns + +Combine the building blocks from the [overview](/docs/agents/overview) with these patterns to add structure and reliability to your agents: + +- [Sequential Processing](#sequential-processing-chains) - Steps executed in order +- [Parallel Processing](#parallel-processing) - Independent tasks run simultaneously +- [Evaluation/Feedback Loops](#evaluator-optimizer) - Results checked and improved iteratively +- [Orchestration](#orchestrator-worker) - Coordinating multiple components +- [Routing](#routing) - Directing work based on context + +## Choose Your Approach + +Consider these key factors: + +- **Flexibility vs Control** - How much freedom does the LLM need vs how tightly you must constrain its actions? +- **Error Tolerance** - What are the consequences of mistakes in your use case? +- **Cost Considerations** - More complex systems typically mean more LLM calls and higher costs +- **Maintenance** - Simpler architectures are easier to debug and modify + +**Start with the simplest approach that meets your needs**. Add complexity only when required by: + +1. Breaking down tasks into clear steps +2. Adding tools for specific capabilities +3. Implementing feedback loops for quality control +4. Introducing multiple agents for complex workflows + +Let's look at examples of these patterns in action. + +## Patterns with Examples + +These patterns, adapted from [Anthropic's guide on building effective agents](https://www.anthropic.com/research/building-effective-agents), serve as building blocks you can combine to create comprehensive workflows. Each pattern addresses specific aspects of task execution. Combine them thoughtfully to build reliable solutions for complex problems. + +## Sequential Processing (Chains) + +The simplest workflow pattern executes steps in a predefined order. Each step's output becomes input for the next step, creating a clear chain of operations. Use this pattern for tasks with well-defined sequences, like content generation pipelines or data transformation processes. + +```ts +import { generateText, Output } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +async function generateMarketingCopy(input: string) { + const model = __MODEL__; + + // First step: Generate marketing copy + const { text: copy } = await generateText({ + model, + prompt: `Write persuasive marketing copy for: ${input}. Focus on benefits and emotional appeal.`, + }); + + // Perform quality check on copy + const { output: qualityMetrics } = await generateText({ + model, + output: Output.object({ + schema: z.object({ + hasCallToAction: z.boolean(), + emotionalAppeal: z.number().min(1).max(10), + clarity: z.number().min(1).max(10), + }), + }), + prompt: `Evaluate this marketing copy for: + 1. Presence of call to action (true/false) + 2. Emotional appeal (1-10) + 3. Clarity (1-10) + + Copy to evaluate: ${copy}`, + }); + + // If quality check fails, regenerate with more specific instructions + if ( + !qualityMetrics.hasCallToAction || + qualityMetrics.emotionalAppeal < 7 || + qualityMetrics.clarity < 7 + ) { + const { text: improvedCopy } = await generateText({ + model, + prompt: `Rewrite this marketing copy with: + ${!qualityMetrics.hasCallToAction ? '- A clear call to action' : ''} + ${qualityMetrics.emotionalAppeal < 7 ? '- Stronger emotional appeal' : ''} + ${qualityMetrics.clarity < 7 ? '- Improved clarity and directness' : ''} + + Original copy: ${copy}`, + }); + return { copy: improvedCopy, qualityMetrics }; + } + + return { copy, qualityMetrics }; +} +``` + +## Routing + +This pattern lets the model decide which path to take through a workflow based on context and intermediate results. The model acts as an intelligent router, directing the flow of execution between different branches of your workflow. Use this when handling varied inputs that require different processing approaches. In the example below, the first LLM call's results determine the second call's model size and system prompt. + +```ts +import { generateText, Output } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +async function handleCustomerQuery(query: string) { + const model = __MODEL__; + + // First step: Classify the query type + const { output: classification } = await generateText({ + model, + output: Output.object({ + schema: z.object({ + reasoning: z.string(), + type: z.enum(['general', 'refund', 'technical']), + complexity: z.enum(['simple', 'complex']), + }), + }), + prompt: `Classify this customer query: + ${query} + + Determine: + 1. Query type (general, refund, or technical) + 2. Complexity (simple or complex) + 3. Brief reasoning for classification`, + }); + + // Route based on classification + // Set model and system prompt based on query type and complexity + const { text: response } = await generateText({ + model: + classification.complexity === 'simple' + ? 'openai/gpt-4o-mini' + : 'openai/o4-mini', + system: { + general: + 'You are an expert customer service agent handling general inquiries.', + refund: + 'You are a customer service agent specializing in refund requests. Follow company policy and collect necessary information.', + technical: + 'You are a technical support specialist with deep product knowledge. Focus on clear step-by-step troubleshooting.', + }[classification.type], + prompt: query, + }); + + return { response, classification }; +} +``` + +## Parallel Processing + +Break down tasks into independent subtasks that execute simultaneously. This pattern uses parallel execution to improve efficiency while maintaining the benefits of structured workflows. For example, analyze multiple documents or process different aspects of a single input concurrently (like code review). + +```ts +import { generateText, Output } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +// Example: Parallel code review with multiple specialized reviewers +async function parallelCodeReview(code: string) { + const model = __MODEL__; + + // Run parallel reviews + const [securityReview, performanceReview, maintainabilityReview] = + await Promise.all([ + generateText({ + model, + system: + 'You are an expert in code security. Focus on identifying security vulnerabilities, injection risks, and authentication issues.', + output: Output.object({ + schema: z.object({ + vulnerabilities: z.array(z.string()), + riskLevel: z.enum(['low', 'medium', 'high']), + suggestions: z.array(z.string()), + }), + }), + prompt: `Review this code: + ${code}`, + }), + + generateText({ + model, + system: + 'You are an expert in code performance. Focus on identifying performance bottlenecks, memory leaks, and optimization opportunities.', + output: Output.object({ + schema: z.object({ + issues: z.array(z.string()), + impact: z.enum(['low', 'medium', 'high']), + optimizations: z.array(z.string()), + }), + }), + prompt: `Review this code: + ${code}`, + }), + + generateText({ + model, + system: + 'You are an expert in code quality. Focus on code structure, readability, and adherence to best practices.', + output: Output.object({ + schema: z.object({ + concerns: z.array(z.string()), + qualityScore: z.number().min(1).max(10), + recommendations: z.array(z.string()), + }), + }), + prompt: `Review this code: + ${code}`, + }), + ]); + + const reviews = [ + { ...securityReview.output, type: 'security' }, + { ...performanceReview.output, type: 'performance' }, + { ...maintainabilityReview.output, type: 'maintainability' }, + ]; + + // Aggregate results using another model instance + const { text: summary } = await generateText({ + model, + system: 'You are a technical lead summarizing multiple code reviews.', + prompt: `Synthesize these code review results into a concise summary with key actions: + ${JSON.stringify(reviews, null, 2)}`, + }); + + return { reviews, summary }; +} +``` + +## Orchestrator-Worker + +A primary model (orchestrator) coordinates the execution of specialized workers. Each worker optimizes for a specific subtask, while the orchestrator maintains overall context and ensures coherent results. This pattern excels at complex tasks requiring different types of expertise or processing. + +```ts +import { generateText, Output } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +async function implementFeature(featureRequest: string) { + // Orchestrator: Plan the implementation + const { output: implementationPlan } = await generateText({ + model: __MODEL__, + output: Output.object({ + schema: z.object({ + files: z.array( + z.object({ + purpose: z.string(), + filePath: z.string(), + changeType: z.enum(['create', 'modify', 'delete']), + }), + ), + estimatedComplexity: z.enum(['low', 'medium', 'high']), + }), + }), + system: + 'You are a senior software architect planning feature implementations.', + prompt: `Analyze this feature request and create an implementation plan: + ${featureRequest}`, + }); + + // Workers: Execute the planned changes + const fileChanges = await Promise.all( + implementationPlan.files.map(async file => { + // Each worker is specialized for the type of change + const workerSystemPrompt = { + create: + 'You are an expert at implementing new files following best practices and project patterns.', + modify: + 'You are an expert at modifying existing code while maintaining consistency and avoiding regressions.', + delete: + 'You are an expert at safely removing code while ensuring no breaking changes.', + }[file.changeType]; + + const { output: change } = await generateText({ + model: __MODEL__, + output: Output.object({ + schema: z.object({ + explanation: z.string(), + code: z.string(), + }), + }), + system: workerSystemPrompt, + prompt: `Implement the changes for ${file.filePath} to support: + ${file.purpose} + + Consider the overall feature context: + ${featureRequest}`, + }); + + return { + file, + implementation: change, + }; + }), + ); + + return { + plan: implementationPlan, + changes: fileChanges, + }; +} +``` + +## Evaluator-Optimizer + +Add quality control to workflows with dedicated evaluation steps that assess intermediate results. Based on the evaluation, the workflow proceeds, retries with adjusted parameters, or takes corrective action. This creates robust workflows capable of self-improvement and error recovery. + +```ts +import { generateText, Output } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +async function translateWithFeedback(text: string, targetLanguage: string) { + let currentTranslation = ''; + let iterations = 0; + const MAX_ITERATIONS = 3; + + // Initial translation + const { text: translation } = await generateText({ + model: __MODEL__, + system: 'You are an expert literary translator.', + prompt: `Translate this text to ${targetLanguage}, preserving tone and cultural nuances: + ${text}`, + }); + + currentTranslation = translation; + + // Evaluation-optimization loop + while (iterations < MAX_ITERATIONS) { + // Evaluate current translation + const { output: evaluation } = await generateText({ + model: __MODEL__, + output: Output.object({ + schema: z.object({ + qualityScore: z.number().min(1).max(10), + preservesTone: z.boolean(), + preservesNuance: z.boolean(), + culturallyAccurate: z.boolean(), + specificIssues: z.array(z.string()), + improvementSuggestions: z.array(z.string()), + }), + }), + system: 'You are an expert in evaluating literary translations.', + prompt: `Evaluate this translation: + + Original: ${text} + Translation: ${currentTranslation} + + Consider: + 1. Overall quality + 2. Preservation of tone + 3. Preservation of nuance + 4. Cultural accuracy`, + }); + + // Check if quality meets threshold + if ( + evaluation.qualityScore >= 8 && + evaluation.preservesTone && + evaluation.preservesNuance && + evaluation.culturallyAccurate + ) { + break; + } + + // Generate improved translation based on feedback + const { text: improvedTranslation } = await generateText({ + model: __MODEL__, + system: 'You are an expert literary translator.', + prompt: `Improve this translation based on the following feedback: + ${evaluation.specificIssues.join('\n')} + ${evaluation.improvementSuggestions.join('\n')} + + Original: ${text} + Current Translation: ${currentTranslation}`, + }); + + currentTranslation = improvedTranslation; + iterations++; + } + + return { + finalTranslation: currentTranslation, + iterationsRequired: iterations, + }; +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/04-loop-control.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/04-loop-control.mdx new file mode 100644 index 000000000..e293fcf03 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/04-loop-control.mdx @@ -0,0 +1,394 @@ +--- +title: Loop Control +description: Control agent execution with built-in loop management using stopWhen and prepareStep +--- + +# Loop Control + +You can control both the execution flow and the settings at each step of the agent loop. The loop continues until: + +- A finish reasoning other than tool-calls is returned, or +- A tool that is invoked does not have an execute function, or +- A tool call needs approval, or +- A stop condition is met + +The AI SDK provides built-in loop control through two parameters: `stopWhen` for defining stopping conditions and `prepareStep` for modifying settings (model, tools, messages, and more) between steps. + +## Stop Conditions + +The `stopWhen` parameter controls when to stop execution when there are tool results in the last step. By default, agents stop after 20 steps using `stepCountIs(20)`. + +When you provide `stopWhen`, the agent continues executing after tool calls until a stopping condition is met. When the condition is an array, execution stops when any of the conditions are met. + +### Use Built-in Conditions + +The AI SDK provides several built-in stopping conditions: + +```ts +import { ToolLoopAgent, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + tools: { + // your tools + }, + stopWhen: stepCountIs(20), // Default state: stop after 20 steps maximum +}); + +const result = await agent.generate({ + prompt: 'Analyze this dataset and create a summary report', +}); +``` + +### Combine Multiple Conditions + +Combine multiple stopping conditions. The loop stops when it meets any condition: + +```ts +import { ToolLoopAgent, stepCountIs, hasToolCall } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + tools: { + // your tools + }, + stopWhen: [ + stepCountIs(20), // Maximum 20 steps + hasToolCall('someTool'), // Stop after calling 'someTool' + ], +}); + +const result = await agent.generate({ + prompt: 'Research and analyze the topic', +}); +``` + +### Create Custom Conditions + +Build custom stopping conditions for specific requirements: + +```ts +import { ToolLoopAgent, StopCondition, ToolSet } from 'ai'; +__PROVIDER_IMPORT__; + +const tools = { + // your tools +} satisfies ToolSet; + +const hasAnswer: StopCondition = ({ steps }) => { + // Stop when the model generates text containing "ANSWER:" + return steps.some(step => step.text?.includes('ANSWER:')) ?? false; +}; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + tools, + stopWhen: hasAnswer, +}); + +const result = await agent.generate({ + prompt: 'Find the answer and respond with "ANSWER: [your answer]"', +}); +``` + +Custom conditions receive step information across all steps: + +```ts +const budgetExceeded: StopCondition = ({ steps }) => { + const totalUsage = steps.reduce( + (acc, step) => ({ + inputTokens: acc.inputTokens + (step.usage?.inputTokens ?? 0), + outputTokens: acc.outputTokens + (step.usage?.outputTokens ?? 0), + }), + { inputTokens: 0, outputTokens: 0 }, + ); + + const costEstimate = + (totalUsage.inputTokens * 0.01 + totalUsage.outputTokens * 0.03) / 1000; + return costEstimate > 0.5; // Stop if cost exceeds $0.50 +}; +``` + +## Prepare Step + +The `prepareStep` callback runs before each step in the loop and defaults to the initial settings if you don't return any changes. Use it to modify settings, manage context, or implement dynamic behavior based on execution history. + +### Dynamic Model Selection + +Switch models based on step requirements: + +```ts +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: 'openai/gpt-4o-mini', // Default model + tools: { + // your tools + }, + prepareStep: async ({ stepNumber, messages }) => { + // Use a stronger model for complex reasoning after initial steps + if (stepNumber > 2 && messages.length > 10) { + return { + model: __MODEL__, + }; + } + // Continue with default settings + return {}; + }, +}); + +const result = await agent.generate({ + prompt: '...', +}); +``` + +### Context Management + +Manage growing conversation history in long-running loops: + +```ts +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + tools: { + // your tools + }, + prepareStep: async ({ messages }) => { + // Keep only recent messages to stay within context limits + if (messages.length > 20) { + return { + messages: [ + messages[0], // Keep system instructions + ...messages.slice(-10), // Keep last 10 messages + ], + }; + } + return {}; + }, +}); + +const result = await agent.generate({ + prompt: '...', +}); +``` + +### Tool Selection + +Control which tools are available at each step: + +```ts +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + tools: { + search: searchTool, + analyze: analyzeTool, + summarize: summarizeTool, + }, + prepareStep: async ({ stepNumber, steps }) => { + // Search phase (steps 0-2) + if (stepNumber <= 2) { + return { + activeTools: ['search'], + toolChoice: 'required', + }; + } + + // Analysis phase (steps 3-5) + if (stepNumber <= 5) { + return { + activeTools: ['analyze'], + }; + } + + // Summary phase (step 6+) + return { + activeTools: ['summarize'], + toolChoice: 'required', + }; + }, +}); + +const result = await agent.generate({ + prompt: '...', +}); +``` + +You can also force a specific tool to be used: + +```ts +prepareStep: async ({ stepNumber }) => { + if (stepNumber === 0) { + // Force the search tool to be used first + return { + toolChoice: { type: 'tool', toolName: 'search' }, + }; + } + + if (stepNumber === 5) { + // Force the summarize tool after analysis + return { + toolChoice: { type: 'tool', toolName: 'summarize' }, + }; + } + + return {}; +}; +``` + +### Message Modification + +Transform messages before sending them to the model: + +```ts +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + tools: { + // your tools + }, + prepareStep: async ({ messages, stepNumber }) => { + // Summarize tool results to reduce token usage + const processedMessages = messages.map(msg => { + if (msg.role === 'tool' && msg.content.length > 1000) { + return { + ...msg, + content: summarizeToolResult(msg.content), + }; + } + return msg; + }); + + return { messages: processedMessages }; + }, +}); + +const result = await agent.generate({ + prompt: '...', +}); +``` + +## Access Step Information + +Both `stopWhen` and `prepareStep` receive detailed information about the current execution: + +```ts +prepareStep: async ({ + model, // Current model configuration + stepNumber, // Current step number (0-indexed) + steps, // All previous steps with their results + messages, // Messages to be sent to the model +}) => { + // Access previous tool calls and results + const previousToolCalls = steps.flatMap(step => step.toolCalls); + const previousResults = steps.flatMap(step => step.toolResults); + + // Make decisions based on execution history + if (previousToolCalls.some(call => call.toolName === 'dataAnalysis')) { + return { + toolChoice: { type: 'tool', toolName: 'reportGenerator' }, + }; + } + + return {}; +}, +``` + +## Forced Tool Calling + +You can force the agent to always use tools by combining `toolChoice: 'required'` with a `done` tool that has no `execute` function. This pattern ensures the agent uses tools for every step and stops only when it explicitly signals completion. + +```ts +import { ToolLoopAgent, tool } from 'ai'; +import { z } from 'zod'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + tools: { + search: searchTool, + analyze: analyzeTool, + done: tool({ + description: 'Signal that you have finished your work', + inputSchema: z.object({ + answer: z.string().describe('The final answer'), + }), + // No execute function - stops the agent when called + }), + }, + toolChoice: 'required', // Force tool calls at every step +}); + +const result = await agent.generate({ + prompt: 'Research and analyze this topic, then provide your answer.', +}); + +// extract answer from done tool call +const toolCall = result.staticToolCalls[0]; // tool call from final step +if (toolCall?.toolName === 'done') { + console.log(toolCall.input.answer); +} +``` + +Key aspects of this pattern: + +- **`toolChoice: 'required'`**: Forces the model to call a tool at every step instead of generating text directly. This ensures the agent follows a structured workflow. +- **`done` tool without `execute`**: A tool that has no `execute` function acts as a termination signal. When the agent calls this tool, the loop stops because there's no function to execute. +- **Accessing results**: The final answer is available in `result.staticToolCalls`, which contains tool calls that weren't executed. + +This pattern is useful when you want the agent to always use specific tools for operations (like code execution or data retrieval) rather than attempting to answer directly. + +## Manual Loop Control + +For scenarios requiring complete control over the agent loop, you can use AI SDK Core functions (`generateText` and `streamText`) to implement your own loop management instead of using `stopWhen` and `prepareStep`. This approach provides maximum flexibility for complex workflows. + +### Implementing a Manual Loop + +Build your own agent loop when you need full control over execution: + +```ts +import { generateText, ModelMessage } from 'ai'; +__PROVIDER_IMPORT__; + +const messages: ModelMessage[] = [{ role: 'user', content: '...' }]; + +let step = 0; +const maxSteps = 10; + +while (step < maxSteps) { + const result = await generateText({ + model: __MODEL__, + messages, + tools: { + // your tools here + }, + }); + + messages.push(...result.response.messages); + + if (result.text) { + break; // Stop when model generates text + } + + step++; +} +``` + +This manual approach gives you complete control over: + +- Message history management +- Step-by-step decision making +- Custom stopping conditions +- Dynamic tool and model selection +- Error handling and recovery + +[Learn more about manual agent loops in the cookbook](/cookbook/node/manual-agent-loop). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/05-configuring-call-options.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/05-configuring-call-options.mdx new file mode 100644 index 000000000..cb6b5533a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/05-configuring-call-options.mdx @@ -0,0 +1,286 @@ +--- +title: Configuring Call Options +description: Pass type-safe runtime inputs to dynamically configure agent behavior. +--- + +# Configuring Call Options + +Call options allow you to pass type-safe structured inputs to your agent. Use them to dynamically modify any agent setting based on the specific request. + +## Why Use Call Options? + +When you need agent behavior to change based on runtime context: + +- **Add dynamic context** - Inject retrieved documents, user preferences, or session data into prompts +- **Select models dynamically** - Choose faster or more capable models based on request complexity +- **Configure tools per request** - Pass user location to search tools or adjust tool behavior +- **Customize provider options** - Set reasoning effort, temperature, or other provider-specific settings + +Without call options, you'd need to create multiple agents or handle configuration logic outside the agent. + +## How It Works + +Define call options in three steps: + +1. **Define the schema** - Specify what inputs you accept using `callOptionsSchema` +2. **Configure with `prepareCall`** - Use those inputs to modify agent settings +3. **Pass options at runtime** - Provide the options when calling `generate()` or `stream()` + +## Basic Example + +Add user context to your agent's prompt at runtime: + +```ts +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const supportAgent = new ToolLoopAgent({ + model: __MODEL__, + callOptionsSchema: z.object({ + userId: z.string(), + accountType: z.enum(['free', 'pro', 'enterprise']), + }), + instructions: 'You are a helpful customer support agent.', + prepareCall: ({ options, ...settings }) => ({ + ...settings, + instructions: + settings.instructions + + `\nUser context: +- Account type: ${options.accountType} +- User ID: ${options.userId} + +Adjust your response based on the user's account level.`, + }), +}); + +// Call the agent with specific user context +const result = await supportAgent.generate({ + prompt: 'How do I upgrade my account?', + options: { + userId: 'user_123', + accountType: 'free', + }, +}); +``` + +The `options` parameter is now required and type-checked. If you don't provide it or pass incorrect types, TypeScript will error. + +## Modifying Agent Settings + +Use `prepareCall` to modify any agent setting. Return only the settings you want to change. + +### Dynamic Model Selection + +Choose models based on request characteristics: + +```ts +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const agent = new ToolLoopAgent({ + model: __MODEL__, // Default model + callOptionsSchema: z.object({ + complexity: z.enum(['simple', 'complex']), + }), + prepareCall: ({ options, ...settings }) => ({ + ...settings, + model: + options.complexity === 'simple' ? 'openai/gpt-4o-mini' : 'openai/o1-mini', + }), +}); + +// Use faster model for simple queries +await agent.generate({ + prompt: 'What is 2+2?', + options: { complexity: 'simple' }, +}); + +// Use more capable model for complex reasoning +await agent.generate({ + prompt: 'Explain quantum entanglement', + options: { complexity: 'complex' }, +}); +``` + +### Dynamic Tool Configuration + +Configure tools based on runtime context: + +```ts +import { openai } from '@ai-sdk/openai'; +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const newsAgent = new ToolLoopAgent({ + model: __MODEL__, + callOptionsSchema: z.object({ + userCity: z.string().optional(), + userRegion: z.string().optional(), + }), + tools: { + web_search: openai.tools.webSearch(), + }, + prepareCall: ({ options, ...settings }) => ({ + ...settings, + tools: { + web_search: openai.tools.webSearch({ + searchContextSize: 'low', + userLocation: { + type: 'approximate', + city: options.userCity, + region: options.userRegion, + country: 'US', + }, + }), + }, + }), +}); + +await newsAgent.generate({ + prompt: 'What are the top local news stories?', + options: { + userCity: 'San Francisco', + userRegion: 'California', + }, +}); +``` + +### Provider-Specific Options + +Configure provider settings dynamically: + +```ts +import { openai, OpenAILanguageModelResponsesOptions } from '@ai-sdk/openai'; +import { ToolLoopAgent } from 'ai'; +import { z } from 'zod'; + +const agent = new ToolLoopAgent({ + model: 'openai/o3', + callOptionsSchema: z.object({ + taskDifficulty: z.enum(['low', 'medium', 'high']), + }), + prepareCall: ({ options, ...settings }) => ({ + ...settings, + providerOptions: { + openai: { + reasoningEffort: options.taskDifficulty, + } satisfies OpenAILanguageModelResponsesOptions, + }, + }), +}); + +await agent.generate({ + prompt: 'Analyze this complex scenario...', + options: { taskDifficulty: 'high' }, +}); +``` + +## Advanced Patterns + +### Retrieval Augmented Generation (RAG) + +Fetch relevant context and inject it into your prompt: + +```ts +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const ragAgent = new ToolLoopAgent({ + model: __MODEL__, + callOptionsSchema: z.object({ + query: z.string(), + }), + prepareCall: async ({ options, ...settings }) => { + // Fetch relevant documents (this can be async) + const documents = await vectorSearch(options.query); + + return { + ...settings, + instructions: `Answer questions using the following context: + +${documents.map(doc => doc.content).join('\n\n')}`, + }; + }, +}); + +await ragAgent.generate({ + prompt: 'What is our refund policy?', + options: { query: 'refund policy' }, +}); +``` + +The `prepareCall` function can be async, enabling you to fetch data before configuring the agent. + +### Combining Multiple Modifications + +Modify multiple settings together: + +```ts +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + callOptionsSchema: z.object({ + userRole: z.enum(['admin', 'user']), + urgency: z.enum(['low', 'high']), + }), + tools: { + readDatabase: readDatabaseTool, + writeDatabase: writeDatabaseTool, + }, + prepareCall: ({ options, ...settings }) => ({ + ...settings, + // Upgrade model for urgent requests + model: options.urgency === 'high' ? __MODEL__ : settings.model, + // Limit tools based on user role + activeTools: + options.userRole === 'admin' + ? ['readDatabase', 'writeDatabase'] + : ['readDatabase'], + // Adjust instructions + instructions: `You are a ${options.userRole} assistant. +${options.userRole === 'admin' ? 'You have full database access.' : 'You have read-only access.'}`, + }), +}); + +await agent.generate({ + prompt: 'Update the user record', + options: { + userRole: 'admin', + urgency: 'high', + }, +}); +``` + +## Using with createAgentUIStreamResponse + +Pass call options through API routes to your agent: + +```ts filename="app/api/chat/route.ts" +import { createAgentUIStreamResponse } from 'ai'; +import { myAgent } from '@/ai/agents/my-agent'; + +export async function POST(request: Request) { + const { messages, userId, accountType } = await request.json(); + + return createAgentUIStreamResponse({ + agent: myAgent, + messages, + options: { + userId, + accountType, + }, + }); +} +``` + +## Next Steps + +- Learn about [loop control](/docs/agents/loop-control) for execution management +- Explore [workflow patterns](/docs/agents/workflows) for complex multi-step processes diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/06-memory.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/06-memory.mdx new file mode 100644 index 000000000..3422cca72 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/06-memory.mdx @@ -0,0 +1,222 @@ +--- +title: Memory +description: Add persistent memory to your agent using provider-defined tools, memory providers, or a custom tool. +--- + +# Memory + +Memory lets your agent save information and recall it later. Without memory, every conversation starts fresh. With memory, your agent builds context over time, recalls previous interactions, and adapts to the user. + +## Three Approaches + +You can add memory to your agent with the AI SDK in three ways, each with different tradeoffs: + +| Approach | Effort | Flexibility | Provider Lock-in | +| ------------------------------------------------- | ------ | ----------- | -------------------------- | +| [Provider-Defined Tools](#provider-defined-tools) | Low | Medium | Yes | +| [Memory Providers](#memory-providers) | Low | Low | Depends on memory provider | +| [Custom Tool](#custom-tool) | High | High | No | + +## Provider-Defined Tools + +[Provider-defined tools](/docs/foundations/tools#types-of-tools) are tools where the provider specifies the tool's `inputSchema` and `description`, but you provide the `execute` function. The model has been trained to use these tools, which can result in better performance compared to custom tools. + +### Anthropic Memory Tool + +The [Anthropic Memory Tool](https://platform.claude.com/docs/en/agents-and-tools/tool-use/memory-tool) gives Claude a structured interface for managing a `/memories` directory. Claude reads its memory before starting tasks, creates and updates files as it works, and references them in future conversations. + +```ts +import { anthropic } from '@ai-sdk/anthropic'; +import { ToolLoopAgent } from 'ai'; + +const memory = anthropic.tools.memory_20250818({ + execute: async action => { + // `action` contains `command`, `path`, and other fields + // depending on the command (view, create, str_replace, + // insert, delete, rename). + // Implement your storage backend here. + // Return the result as a string. + }, +}); + +const agent = new ToolLoopAgent({ + model: 'anthropic/claude-haiku-4.5', + tools: { memory }, +}); + +const result = await agent.generate({ + prompt: 'Remember that my favorite editor is Neovim', +}); +``` + +The tool receives structured commands (`view`, `create`, `str_replace`, `insert`, `delete`, `rename`), each with a `path` scoped to `/memories`. Your `execute` function maps these to your storage backend (the filesystem, a database, or any other persistence layer). + +**When to use this**: you want memory with minimal implementation effort and are already using Anthropic models. The tradeoff is provider lock-in, since this tool only works with Claude. + +## Memory Providers + +Another approach is to use a provider that has memory built in. These providers wrap an external memory service and expose it through the AI SDK's standard interface. Memory storage, retrieval, and injection happen transparently, and you do not define any tools yourself. + +### Letta + +[Letta](https://letta.com) provides agents with persistent long-term memory. You create an agent on Letta's platform (cloud or self-hosted), configure its memory there, and use the AI SDK provider to interact with it. Letta's agent runtime handles memory management (core memory, archival memory, recall). + +```bash +pnpm add @letta-ai/vercel-ai-sdk-provider +``` + +```ts +import { lettaCloud } from '@letta-ai/vercel-ai-sdk-provider'; +import { ToolLoopAgent } from 'ai'; + +const agent = new ToolLoopAgent({ + model: lettaCloud(), + providerOptions: { + letta: { + agent: { id: 'your-agent-id' }, + }, + }, +}); + +const result = await agent.generate({ + prompt: 'Remember that my favorite editor is Neovim', +}); +``` + +You can also use Letta's built-in memory tools alongside custom tools: + +```ts +import { lettaCloud } from '@letta-ai/vercel-ai-sdk-provider'; +import { ToolLoopAgent } from 'ai'; + +const agent = new ToolLoopAgent({ + model: lettaCloud(), + tools: { + core_memory_append: lettaCloud.tool('core_memory_append'), + memory_insert: lettaCloud.tool('memory_insert'), + memory_replace: lettaCloud.tool('memory_replace'), + }, + providerOptions: { + letta: { + agent: { id: 'your-agent-id' }, + }, + }, +}); + +const stream = agent.stream({ + prompt: 'What do you remember about me?', +}); +``` + +See the [Letta provider documentation](/providers/community-providers/letta) for full setup and configuration. + +### Mem0 + +[Mem0](https://mem0.ai) adds a memory layer on top of any supported LLM provider. It automatically extracts memories from conversations, stores them, and retrieves relevant ones for future prompts. + +```bash +pnpm add @mem0/vercel-ai-provider +``` + +```ts +import { createMem0 } from '@mem0/vercel-ai-provider'; +import { ToolLoopAgent } from 'ai'; + +const mem0 = createMem0({ + provider: 'openai', + mem0ApiKey: process.env.MEM0_API_KEY, + apiKey: process.env.OPENAI_API_KEY, +}); + +const agent = new ToolLoopAgent({ + model: mem0('gpt-4.1', { user_id: 'user-123' }), +}); + +const { text } = await agent.generate({ + prompt: 'Remember that my favorite editor is Neovim', +}); +``` + +Mem0 works across multiple LLM providers (OpenAI, Anthropic, Google, Groq, Cohere). You can also manage memories explicitly: + +```ts +import { addMemories, retrieveMemories } from '@mem0/vercel-ai-provider'; + +await addMemories(messages, { user_id: 'user-123' }); +const context = await retrieveMemories(prompt, { user_id: 'user-123' }); +``` + +See the [Mem0 provider documentation](/providers/community-providers/mem0) for full setup and configuration. + +### Supermemory + +[Supermemory](https://supermemory.ai) is a long-term memory platform that adds persistent, self-growing memory to your AI applications. It provides tools that handle saving and retrieving memories automatically through semantic search. + +```bash +pnpm add @supermemory/tools +``` + +```ts +__PROVIDER_IMPORT__; +import { supermemoryTools } from '@supermemory/tools/ai-sdk'; +import { ToolLoopAgent } from 'ai'; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + tools: supermemoryTools(process.env.SUPERMEMORY_API_KEY!), +}); + +const result = await agent.generate({ + prompt: 'Remember that my favorite editor is Neovim', +}); +``` + +Supermemory works with any AI SDK provider. The tools give the model `addMemory` and `searchMemories` operations that handle storage and retrieval. + +See the [Supermemory provider documentation](/providers/community-providers/supermemory) for full setup and configuration. + +### Hindsight + +[Hindsight](/providers/community-providers/hindsight) provides agents with persistent memory through five tools: `retain`, `recall`, `reflect`, `getMentalModel`, and `getDocument`. It can be self-hosted with Docker or used as a cloud service. + +```bash +pnpm add @vectorize-io/hindsight-ai-sdk @vectorize-io/hindsight-client +``` + +```ts +__PROVIDER_IMPORT__; +import { HindsightClient } from '@vectorize-io/hindsight-client'; +import { createHindsightTools } from '@vectorize-io/hindsight-ai-sdk'; +import { ToolLoopAgent, stepCountIs } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const client = new HindsightClient({ baseUrl: process.env.HINDSIGHT_API_URL }); + +const agent = new ToolLoopAgent({ + model: __MODEL__, + tools: createHindsightTools({ client, bankId: 'user-123' }), + stopWhen: stepCountIs(10), + instructions: 'You are a helpful assistant with long-term memory.', +}); + +const result = await agent.generate({ + prompt: 'Remember that my favorite editor is Neovim', +}); +``` + +The `bankId` identifies the memory store and is typically a user ID. In multi-user apps, call `createHindsightTools` inside your request handler so each request gets the right bank. Hindsight works with any AI SDK provider. + +See the [Hindsight provider documentation](/providers/community-providers/hindsight) for full setup and configuration. + +**When to use memory providers**: these providers are a good fit when you want memory without building any storage infrastructure. The tradeoff is that the provider controls memory behavior, so you have less visibility into what gets stored and how it is retrieved. You also take on a dependency on an external service. + +## Custom Tool + +Building your own memory tool from scratch is the most flexible approach. You control the storage format, the interface, and the retrieval logic. This requires the most upfront work but gives you full ownership of how memory works, with no provider lock-in and no external dependencies. + +There are two common patterns: + +- **Structured actions**: you define explicit operations (`view`, `create`, `update`, `search`) and handle structured input yourself. Safe by design since you control every operation. +- **Bash-backed**: you give the model a sandboxed bash environment to compose shell commands (`cat`, `grep`, `sed`, `echo`) for flexible memory access. More powerful but requires command validation for safety. + +For a full walkthrough of implementing a custom memory tool with a bash-backed interface, AST-based command validation, and filesystem persistence, see the **[Build a Custom Memory Tool](/cookbook/guides/custom-memory-tool)** recipe. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/06-subagents.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/06-subagents.mdx new file mode 100644 index 000000000..b13c1ecaa --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/06-subagents.mdx @@ -0,0 +1,362 @@ +--- +title: Subagents +description: Delegate context-heavy tasks to specialized subagents while keeping the main agent focused. +--- + +# Subagents + +A subagent is an agent that a parent agent can invoke. The parent delegates work via a tool, and the subagent executes autonomously before returning a result. + +## How It Works + +1. **Define a subagent** with its own model, instructions, and tools +2. **Create a tool that calls it** for the main agent to use +3. **Subagent runs independently with its own context window** +4. **Return a result** (optionally streaming progress to the UI) +5. **Control what the model sees** using `toModelOutput` to summarize + +## When to Use Subagents + +Subagents add latency and complexity. Use them when the benefits outweigh the costs: + +| Use Subagents When | Avoid Subagents When | +| ----------------------------------------------- | ------------------------------ | +| Tasks require exploring large amounts of tokens | Tasks are simple and focused | +| You need to parallelize independent research | Sequential processing suffices | +| Context would grow beyond model limits | Context stays manageable | +| You want to isolate tool access by capability | All tools can safely coexist | + +## Why Use Subagents? + +### Offloading Context-Heavy Tasks + +Some tasks require exploring large amounts of information—reading files, searching codebases, or researching topics. Running these in the main agent consumes context quickly, making the agent less coherent over time. + +With subagents, you can: + +- Spin up a dedicated agent that uses hundreds of thousands of tokens +- Have it return only a focused summary (perhaps 1,000 tokens) +- Keep your main agent's context clean and coherent + +The subagent does the heavy lifting while the main agent stays focused on orchestration. + +### Parallelizing Independent Work + +For tasks like exploring a codebase, you can spawn multiple subagents to research different areas simultaneously. Each returns a summary, and the main agent synthesizes the findings—without paying the context cost of all that exploration. + +### Specialized Orchestration + +A less common but valid pattern is using a main agent purely for orchestration, delegating to specialized subagents for different types of work. For example: + +- An exploration subagent with read-only tools for researching codebases +- A coding subagent with file editing tools +- An integration subagent with tools for a specific platform or API + +This creates a clear separation of concerns, though context offloading and parallelization are the more common motivations for subagents. + +## Basic Subagent Without Streaming + +The simplest subagent pattern requires no special machinery. Your main agent has a tool that calls another agent in its `execute` function: + +```ts +import { ToolLoopAgent, tool } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +// Define a subagent for research tasks +const researchSubagent = new ToolLoopAgent({ + model: __MODEL__, + instructions: `You are a research agent. +Summarize your findings in your final response.`, + tools: { + read: readFileTool, // defined elsewhere + search: searchTool, // defined elsewhere + }, +}); + +// Create a tool that delegates to the subagent +const researchTool = tool({ + description: 'Research a topic or question in depth.', + inputSchema: z.object({ + task: z.string().describe('The research task to complete'), + }), + execute: async ({ task }, { abortSignal }) => { + const result = await researchSubagent.generate({ + prompt: task, + abortSignal, + }); + return result.text; + }, +}); + +// Main agent uses the research tool +const mainAgent = new ToolLoopAgent({ + model: __MODEL__, + instructions: 'You are a helpful assistant that can delegate research tasks.', + tools: { + research: researchTool, + }, +}); +``` + +This works well when you don't need to show the subagent's progress in the UI. The tool call blocks until the subagent completes, then returns the final text response. + +### Handling Cancellation + +When the user cancels a request, the `abortSignal` propagates to the subagent. Always pass it through to ensure cleanup: + +```ts +execute: async ({ task }, { abortSignal }) => { + const result = await researchSubagent.generate({ + prompt: task, + abortSignal, // Cancels subagent if main request is aborted + }); + return result.text; +}, +``` + +If you abort the signal, the subagent stops executing and throws an `AbortError`. The main agent's tool execution fails, which stops the main loop. + +To avoid errors about incomplete tool calls in subsequent messages, use `convertToModelMessages` with `ignoreIncompleteToolCalls`: + +```ts +import { convertToModelMessages } from 'ai'; + +const modelMessages = await convertToModelMessages(messages, { + ignoreIncompleteToolCalls: true, +}); +``` + +This filters out tool calls that don't have corresponding results. Learn more in the [convertToModelMessages](/docs/reference/ai-sdk-ui/convert-to-model-messages) reference. + +## Streaming Subagent Progress + +When you want to show incremental progress as the subagent works, use [**preliminary tool results**](/docs/ai-sdk-core/tools-and-tool-calling#preliminary-tool-results). This pattern uses a generator function that yields partial updates to the UI. + +### How Preliminary Tool Results Work + +Change your `execute` function from a regular function to an async generator (`async function*`). Each `yield` sends a preliminary result to the frontend: + +```ts +execute: async function* ({ /* input */ }) { + // ... do work ... + yield partialResult; + // ... do more work ... + yield updatedResult; +} +``` + +### Building the Complete Message + +Each `yield` **replaces** the previous output entirely (it does not append). This means you need a way to accumulate the subagent's response into a complete message that grows over time. + +The `readUIMessageStream` utility handles this. It reads each chunk from the stream and builds an ever-growing `UIMessage` containing all parts received so far: + +```ts +import { readUIMessageStream, tool } from 'ai'; +import { z } from 'zod'; + +const researchTool = tool({ + description: 'Research a topic or question in depth.', + inputSchema: z.object({ + task: z.string().describe('The research task to complete'), + }), + execute: async function* ({ task }, { abortSignal }) { + // Start the subagent with streaming + const result = await researchSubagent.stream({ + prompt: task, + abortSignal, + }); + + // Each iteration yields a complete, accumulated UIMessage + for await (const message of readUIMessageStream({ + stream: result.toUIMessageStream(), + })) { + yield message; + } + }, +}); +``` + +Each yielded `message` is a complete `UIMessage` containing all the subagent's parts up to that point (text, tool calls, and tool results). The frontend simply replaces its display with each new message. + +## Controlling What the Model Sees + +Here's where subagents become powerful for context management. The full `UIMessage` with all the subagent's work is stored in the message history and displayed in the UI. But you can control what the main agent's model actually sees using `toModelOutput`. + +### How It Works + +The `toModelOutput` function maps the tool's output to the tokens sent to the model: + +```ts +const researchTool = tool({ + description: 'Research a topic or question in depth.', + inputSchema: z.object({ + task: z.string().describe('The research task to complete'), + }), + execute: async function* ({ task }, { abortSignal }) { + const result = await researchSubagent.stream({ + prompt: task, + abortSignal, + }); + + for await (const message of readUIMessageStream({ + stream: result.toUIMessageStream(), + })) { + yield message; + } + }, + toModelOutput: ({ output: message }) => { + // Extract just the final text as a summary + const lastTextPart = message?.parts.findLast(p => p.type === 'text'); + return { + type: 'text', + value: lastTextPart?.text ?? 'Task completed.', + }; + }, +}); +``` + +With this setup: + +- **Users see**: The full subagent execution—every tool call, every intermediate step +- **The model sees**: Just the final summary text + +The subagent might use 100,000 tokens exploring and reasoning, but the main agent only consumes the summary. This keeps the main agent coherent and focused. + +### Write Subagent Instructions for Summarization + +For `toModelOutput` to extract a useful summary, your subagent must produce one. Add explicit instructions like this: + +```ts +const researchSubagent = new ToolLoopAgent({ + model: __MODEL__, + instructions: `You are a research agent. Complete the task autonomously. + +IMPORTANT: When you have finished, write a clear summary of your findings as your final response. +This summary will be returned to the main agent, so include all relevant information.`, + tools: { + read: readFileTool, + search: searchTool, + }, +}); +``` + +Without this instruction, the subagent might not produce a comprehensive summary. It could simply say "Done", leaving `toModelOutput` with nothing useful to extract. + +## Rendering Subagents in the UI (with useChat) + +To display streaming progress, check the tool part's `state` and `preliminary` flag. + +### Tool Part States + +| State | Description | +| ------------------ | ------------------------------------------ | +| `input-streaming` | Tool input being generated | +| `input-available` | Tool ready to execute | +| `output-available` | Tool produced output (check `preliminary`) | +| `output-error` | Tool execution failed | + +### Detecting Streaming vs Complete + +```tsx +const hasOutput = part.state === 'output-available'; +const isStreaming = hasOutput && part.preliminary === true; +const isComplete = hasOutput && !part.preliminary; +``` + +### Type Safety for Subagent Output + +Export types alongside your agents for use in UI components: + +```ts filename="lib/agents.ts" +import { ToolLoopAgent, InferAgentUIMessage } from 'ai'; + +export const mainAgent = new ToolLoopAgent({ + // ... configuration with researchTool +}); + +// Export the main agent message type for the chat UI +export type MainAgentMessage = InferAgentUIMessage; +``` + +### Render Messages and Subagent Output + +This example uses the types defined above to render both the main agent's messages and the subagent's streamed output: + +```tsx +'use client'; + +import { useChat } from '@ai-sdk/react'; +import type { MainAgentMessage } from '@/lib/agents'; + +export function Chat() { + const { messages } = useChat(); + + return ( +
+ {messages.map(message => + message.parts.map((part, i) => { + switch (part.type) { + case 'text': + return

{part.text}

; + case 'tool-research': + return ( +
+ {part.state !== 'input-streaming' && ( +
Research: {part.input.task}
+ )} + {part.state === 'output-available' && ( +
+ {part.output.parts.map((nestedPart, i) => { + switch (nestedPart.type) { + case 'text': + return

{nestedPart.text}

; + default: + return null; + } + })} +
+ )} +
+ ); + default: + return null; + } + }), + )} +
+ ); +} +``` + +## Caveats + +### No Tool Approvals in Subagents + +Subagent tools cannot use `needsApproval`. All tools must execute automatically without user confirmation. + +### Subagent Context is Isolated + +Each subagent invocation starts with a fresh context window. This is one of the key benefits of subagents: they don't inherit the accumulated context from the main agent, which is exactly what allows them to do heavy exploration without bloating the main conversation. + +If you need to give a subagent access to the conversation history, the `messages` are available in the tool's execute function alongside `abortSignal`: + +```ts +execute: async ({ task }, { abortSignal, messages }) => { + const result = await researchSubagent.generate({ + messages: [ + ...messages, // The main agent's conversation history + { role: 'user', content: task }, // The specific task for this invocation + ], + abortSignal, + }); + return result.text; +}, +``` + +Use this sparingly since passing full history defeats some of the context isolation benefits. + +### Streaming Adds Complexity + +The basic pattern (no streaming) is simpler to implement and debug. Only add streaming when you need to show real-time progress in the UI. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/index.mdx new file mode 100644 index 000000000..156c35407 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-agents/index.mdx @@ -0,0 +1,46 @@ +--- +title: Agents +description: An overview of building agents with the AI SDK. +--- + +# Agents + +The following section shows you how to build agents with the AI SDK - systems where large language models (LLMs) use tools in a loop to accomplish tasks. + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/01-overview.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/01-overview.mdx new file mode 100644 index 000000000..5a3917e13 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/01-overview.mdx @@ -0,0 +1,31 @@ +--- +title: Overview +description: An overview of AI SDK Core. +--- + +# AI SDK Core + +Large Language Models (LLMs) are advanced programs that can understand, create, and engage with human language on a large scale. +They are trained on vast amounts of written material to recognize patterns in language and predict what might come next in a given piece of text. + +AI SDK Core **simplifies working with LLMs by offering a standardized way of integrating them into your app** - so you can focus on building great AI applications for your users, not waste time on technical details. + +For example, here’s how you can generate text with various models using the AI SDK: + + + +## AI SDK Core Functions + +AI SDK Core has various functions designed for [text generation](./generating-text), [structured data generation](./generating-structured-data), and [tool usage](./tools-and-tool-calling). +These functions take a standardized approach to setting up [prompts](./prompts) and [settings](./settings), making it easier to work with different models. + +- [`generateText`](/docs/ai-sdk-core/generating-text): Generates text and [tool calls](./tools-and-tool-calling). + This function is ideal for non-interactive use cases such as automation tasks where you need to write text (e.g. drafting email or summarizing web pages) and for agents that use tools. +- [`streamText`](/docs/ai-sdk-core/generating-text): Stream text and tool calls. + You can use the `streamText` function for interactive use cases such as [chat bots](/docs/ai-sdk-ui/chatbot) and [content streaming](/docs/ai-sdk-ui/completion). + +Both `generateText` and `streamText` support [structured output](/docs/ai-sdk-core/generating-structured-data) via the `output` property (e.g. `Output.object()`, `Output.array()`), allowing you to generate typed, schema-validated data for information extraction, synthetic data generation, classification tasks, and [streaming generated UIs](/docs/ai-sdk-ui/object-generation). + +## API Reference + +Please check out the [AI SDK Core API Reference](/docs/reference/ai-sdk-core) for more details on each function. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/05-generating-text.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/05-generating-text.mdx new file mode 100644 index 000000000..e5db18021 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/05-generating-text.mdx @@ -0,0 +1,707 @@ +--- +title: Generating Text +description: Learn how to generate text with the AI SDK. +--- + +# Generating and Streaming Text + +Large language models (LLMs) can generate text in response to a prompt, which can contain instructions and information to process. +For example, you can ask a model to come up with a recipe, draft an email, or summarize a document. + +The AI SDK Core provides two functions to generate text and stream it from LLMs: + +- [`generateText`](#generatetext): Generates text for a given prompt and model. +- [`streamText`](#streamtext): Streams text from a given prompt and model. + +Advanced LLM features such as [tool calling](./tools-and-tool-calling) and [structured data generation](./generating-structured-data) are built on top of text generation. + +## `generateText` + +You can generate text using the [`generateText`](/docs/reference/ai-sdk-core/generate-text) function. This function is ideal for non-interactive use cases where you need to write text (e.g. drafting email or summarizing web pages) and for agents that use tools. + +```tsx +import { generateText } from 'ai'; +__PROVIDER_IMPORT__; + +const { text } = await generateText({ + model: __MODEL__, + prompt: 'Write a vegetarian lasagna recipe for 4 people.', +}); +``` + +You can use more [advanced prompts](./prompts) to generate text with more complex instructions and content: + +```tsx +import { generateText } from 'ai'; +__PROVIDER_IMPORT__; + +const { text } = await generateText({ + model: __MODEL__, + system: + 'You are a professional writer. ' + + 'You write simple, clear, and concise content.', + prompt: `Summarize the following article in 3-5 sentences: ${article}`, +}); +``` + +The result object of `generateText` contains several promises that resolve when all required data is available: + +- `result.content`: The content that was generated in the last step. +- `result.text`: The generated text. +- `result.reasoning`: The full reasoning that the model has generated in the last step. +- `result.reasoningText`: The reasoning text of the model (only available for some models). +- `result.files`: The files that were generated in the last step. +- `result.sources`: Sources that have been used as references in the last step (only available for some models). +- `result.toolCalls`: The tool calls that were made in the last step. +- `result.toolResults`: The results of the tool calls from the last step. +- `result.finishReason`: The reason the model finished generating text. +- `result.rawFinishReason`: The raw reason why the generation finished (from the provider). +- `result.usage`: The usage of the model during the final step of text generation. +- `result.totalUsage`: The total usage across all steps (for multi-step generations). +- `result.warnings`: Warnings from the model provider (e.g. unsupported settings). +- `result.request`: Additional request information. +- `result.response`: Additional response information, including response messages and body. +- `result.providerMetadata`: Additional provider-specific metadata. +- `result.steps`: Details for all steps, useful for getting information about intermediate steps. +- `result.output`: The generated structured output using the `output` specification. + +### Accessing response headers & body + +Sometimes you need access to the full response from the model provider, +e.g. to access some provider-specific headers or body content. + +You can access the raw response headers and body using the `response` property: + +```ts +import { generateText } from 'ai'; + +const result = await generateText({ + // ... +}); + +console.log(JSON.stringify(result.response.headers, null, 2)); +console.log(JSON.stringify(result.response.body, null, 2)); +``` + +### `onFinish` callback + +When using `generateText`, you can provide an `onFinish` callback that is triggered after the last step is finished ( +[API Reference](/docs/reference/ai-sdk-core/generate-text#on-finish) +). +It contains the text, usage information, finish reason, messages, steps, total usage, and more: + +```tsx highlight="6-8" +import { generateText } from 'ai'; +__PROVIDER_IMPORT__; + +const result = await generateText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', + onFinish({ text, finishReason, usage, response, steps, totalUsage }) { + // your own logic, e.g. for saving the chat history or recording usage + + const messages = response.messages; // messages that were generated + }, +}); +``` + +### Lifecycle callbacks (experimental) + + + Experimental callbacks are subject to breaking changes in incremental package + releases. + + +`generateText` provides several experimental lifecycle callbacks that let you hook into different phases of the generation process. +These are useful for logging, observability, debugging, and custom telemetry. +Errors thrown inside these callbacks are silently caught and do not break the generation flow. + +```tsx +import { generateText } from 'ai'; +__PROVIDER_IMPORT__; + +const result = await generateText({ + model: __MODEL__, + prompt: 'What is the weather in San Francisco?', + tools: { + // ... your tools + }, + + experimental_onStart({ model, settings, functionId }) { + console.log('Generation started', { model, functionId }); + }, + + experimental_onStepStart({ stepNumber, model, promptMessages }) { + console.log(`Step ${stepNumber} starting`, { model: model.modelId }); + }, + + experimental_onToolCallStart({ toolName, toolCallId, input }) { + console.log(`Tool call starting: ${toolName}`, { toolCallId }); + }, + + experimental_onToolCallFinish({ toolName, durationMs, error }) { + console.log(`Tool call finished: ${toolName} (${durationMs}ms)`, { + success: !error, + }); + }, + + onStepFinish({ stepNumber, finishReason, usage }) { + console.log(`Step ${stepNumber} finished`, { finishReason, usage }); + }, +}); +``` + +The available lifecycle callbacks are: + +- **`experimental_onStart`**: Called once when the `generateText` operation begins, before any LLM calls. Receives model info, prompt, settings, and telemetry metadata. +- **`experimental_onStepStart`**: Called before each step (LLM call). Receives the step number, model, prompt messages being sent, tools, and prior steps. +- **`experimental_onToolCallStart`**: Called right before a tool's `execute` function runs. Receives the tool name, call ID, and input. +- **`experimental_onToolCallFinish`**: Called right after a tool's `execute` function completes or errors. Receives the tool name, call ID, input, output (or undefined on error), error (or undefined on success), and `durationMs`. +- **`onStepFinish`**: Called after each step finishes. Now also includes `stepNumber` (zero-based index of the completed step). + +## `streamText` + +Depending on your model and prompt, it can take a large language model (LLM) up to a minute to finish generating its response. This delay can be unacceptable for interactive use cases such as chatbots or real-time applications, where users expect immediate responses. + +AI SDK Core provides the [`streamText`](/docs/reference/ai-sdk-core/stream-text) function which simplifies streaming text from LLMs: + +```ts +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +const result = streamText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', +}); + +// example: use textStream as an async iterable +for await (const textPart of result.textStream) { + console.log(textPart); +} +``` + + + `result.textStream` is both a `ReadableStream` and an `AsyncIterable`. + + + + `streamText` immediately starts streaming and suppresses errors to prevent + server crashes. Use the `onError` callback to log errors. + + +You can use `streamText` on its own or in combination with [AI SDK +UI](/examples/next-pages/basics/streaming-text-generation) and [AI SDK +RSC](/examples/next-app/basics/streaming-text-generation). +The result object contains several helper functions to make the integration into [AI SDK UI](/docs/ai-sdk-ui) easier: + +- `result.toUIMessageStreamResponse()`: Creates a UI Message stream HTTP response (with tool calls etc.) that can be used in a Next.js App Router API route. +- `result.pipeUIMessageStreamToResponse()`: Writes UI Message stream delta output to a Node.js response-like object. +- `result.toTextStreamResponse()`: Creates a simple text stream HTTP response. +- `result.pipeTextStreamToResponse()`: Writes text delta output to a Node.js response-like object. + + + `streamText` is using backpressure and only generates tokens as they are + requested. You need to consume the stream in order for it to finish. + + +It also provides several promises that resolve when the stream is finished: + +- `result.content`: The content that was generated in the last step. +- `result.text`: The generated text. +- `result.reasoning`: The full reasoning that the model has generated. +- `result.reasoningText`: The reasoning text of the model (only available for some models). +- `result.files`: Files that have been generated by the model in the last step. +- `result.sources`: Sources that have been used as references in the last step (only available for some models). +- `result.toolCalls`: The tool calls that have been executed in the last step. +- `result.toolResults`: The tool results that have been generated in the last step. +- `result.finishReason`: The reason the model finished generating text. +- `result.rawFinishReason`: The raw reason why the generation finished (from the provider). +- `result.usage`: The usage of the model during the final step of text generation. +- `result.totalUsage`: The total usage across all steps (for multi-step generations). +- `result.warnings`: Warnings from the model provider (e.g. unsupported settings). +- `result.steps`: Details for all steps, useful for getting information about intermediate steps. +- `result.request`: Additional request information from the last step. +- `result.response`: Additional response information from the last step. +- `result.providerMetadata`: Additional provider-specific metadata from the last step. + +### `onError` callback + +`streamText` immediately starts streaming to enable sending data without waiting for the model. +Errors become part of the stream and are not thrown to prevent e.g. servers from crashing. + +To log errors, you can provide an `onError` callback that is triggered when an error occurs. + +```tsx highlight="6-8" +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +const result = streamText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', + onError({ error }) { + console.error(error); // your error logging logic here + }, +}); +``` + +### `onChunk` callback + +When using `streamText`, you can provide an `onChunk` callback that is triggered for each chunk of the stream. + +It receives the following chunk types: + +- `text` +- `reasoning` +- `source` +- `tool-call` +- `tool-input-start` +- `tool-input-delta` +- `tool-result` +- `raw` + +```tsx highlight="6-11" +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +const result = streamText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', + onChunk({ chunk }) { + // implement your own logic here, e.g.: + if (chunk.type === 'text') { + console.log(chunk.text); + } + }, +}); +``` + +### `onFinish` callback + +When using `streamText`, you can provide an `onFinish` callback that is triggered when the stream is finished ( +[API Reference](/docs/reference/ai-sdk-core/stream-text#on-finish) +). +It contains the text, usage information, finish reason, messages, steps, total usage, and more: + +```tsx highlight="6-8" +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +const result = streamText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', + onFinish({ text, finishReason, usage, response, steps, totalUsage }) { + // your own logic, e.g. for saving the chat history or recording usage + + const messages = response.messages; // messages that were generated + }, +}); +``` + +### Lifecycle callbacks (experimental) + + + Experimental callbacks are subject to breaking changes in incremental package + releases. + + +`streamText` provides several experimental lifecycle callbacks that let you hook into different phases of the streaming process. +These are useful for logging, observability, debugging, and custom telemetry. +Errors thrown inside these callbacks are silently caught and do not break the streaming flow. + +```tsx +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +const result = streamText({ + model: __MODEL__, + prompt: 'What is the weather in San Francisco?', + tools: { + // ... your tools + }, + + experimental_onStart({ model, system, prompt, messages }) { + console.log('Streaming started', { model, prompt }); + }, + + experimental_onStepStart({ stepNumber, model, messages }) { + console.log(`Step ${stepNumber} starting`, { model: model.modelId }); + }, + + experimental_onToolCallStart({ toolCall }) { + console.log(`Tool call starting: ${toolCall.toolName}`, { + toolCallId: toolCall.toolCallId, + }); + }, + + experimental_onToolCallFinish({ toolCall, durationMs, success, error }) { + console.log(`Tool call finished: ${toolCall.toolName} (${durationMs}ms)`, { + success, + }); + }, + + onStepFinish({ finishReason, usage }) { + console.log('Step finished', { finishReason, usage }); + }, +}); +``` + +The available lifecycle callbacks are: + +- **`experimental_onStart`**: Called once when the `streamText` operation begins, before any LLM calls. Receives model info, prompt, settings, and telemetry metadata. +- **`experimental_onStepStart`**: Called before each step (LLM call). Receives the step number, model, messages being sent, tools, and prior steps. +- **`experimental_onToolCallStart`**: Called right before a tool's `execute` function runs. Receives the tool call object, messages, and context. +- **`experimental_onToolCallFinish`**: Called right after a tool's `execute` function completes or errors. Receives the tool call object, `durationMs`, and a discriminated union with `success`/`output` or `success`/`error`. +- **`onStepFinish`**: Called after each step finishes. Receives the finish reason, usage, and other step details. + +### `fullStream` property + +You can read a stream with all events using the `fullStream` property. +This can be useful if you want to implement your own UI or handle the stream in a different way. +Here is an example of how to use the `fullStream` property: + +```tsx +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const result = streamText({ + model: __MODEL__, + tools: { + cityAttractions: { + inputSchema: z.object({ city: z.string() }), + execute: async ({ city }) => ({ + attractions: ['attraction1', 'attraction2', 'attraction3'], + }), + }, + }, + prompt: 'What are some San Francisco tourist attractions?', +}); + +for await (const part of result.fullStream) { + switch (part.type) { + case 'start': { + // handle start of stream + break; + } + case 'start-step': { + // handle start of step + break; + } + case 'text-start': { + // handle text start + break; + } + case 'text-delta': { + // handle text delta here + break; + } + case 'text-end': { + // handle text end + break; + } + case 'reasoning-start': { + // handle reasoning start + break; + } + case 'reasoning-delta': { + // handle reasoning delta here + break; + } + case 'reasoning-end': { + // handle reasoning end + break; + } + case 'source': { + // handle source here + break; + } + case 'file': { + // handle file here + break; + } + case 'tool-call': { + switch (part.toolName) { + case 'cityAttractions': { + // handle tool call here + break; + } + } + break; + } + case 'tool-input-start': { + // handle tool input start + break; + } + case 'tool-input-delta': { + // handle tool input delta + break; + } + case 'tool-input-end': { + // handle tool input end + break; + } + case 'tool-result': { + switch (part.toolName) { + case 'cityAttractions': { + // handle tool result here + break; + } + } + break; + } + case 'tool-error': { + // handle tool error + break; + } + case 'finish-step': { + // handle finish step + break; + } + case 'finish': { + // handle finish here + break; + } + case 'error': { + // handle error here + break; + } + case 'raw': { + // handle raw value + break; + } + } +} +``` + +### Stream transformation + +You can use the `experimental_transform` option to transform the stream. +This is useful for e.g. filtering, changing, or smoothing the text stream. + +The transformations are applied before the callbacks are invoked and the promises are resolved. +If you e.g. have a transformation that changes all text to uppercase, the `onFinish` callback will receive the transformed text. + +#### Smoothing streams + +The AI SDK Core provides a [`smoothStream` function](/docs/reference/ai-sdk-core/smooth-stream) that +can be used to smooth out text and reasoning streaming. + +```tsx highlight="6" +import { smoothStream, streamText } from 'ai'; + +const result = streamText({ + model, + prompt, + experimental_transform: smoothStream(), +}); +``` + +#### Custom transformations + +You can also implement your own custom transformations. +The transformation function receives the tools that are available to the model, +and returns a function that is used to transform the stream. +Tools can either be generic or limited to the tools that you are using. + +Here is an example of how to implement a custom transformation that converts +all text to uppercase: + +```ts +import { streamText, type TextStreamPart, type ToolSet } from 'ai'; + +const upperCaseTransform = + () => + (options: { tools: TOOLS; stopStream: () => void }) => + new TransformStream, TextStreamPart>({ + transform(chunk, controller) { + controller.enqueue( + // for text-delta chunks, convert the text to uppercase: + chunk.type === 'text-delta' + ? { ...chunk, text: chunk.text.toUpperCase() } + : chunk, + ); + }, + }); +``` + +You can also stop the stream using the `stopStream` function. +This is e.g. useful if you want to stop the stream when model guardrails are violated, e.g. by generating inappropriate content. + +When you invoke `stopStream`, it is important to simulate the `finish-step` and `finish` events to guarantee that a well-formed stream is returned +and all callbacks are invoked. + +```ts +import { streamText, type TextStreamPart, type ToolSet } from 'ai'; + +const stopWordTransform = + () => + ({ stopStream }: { stopStream: () => void }) => + new TransformStream, TextStreamPart>({ + // note: this is a simplified transformation for testing; + // in a real-world version more there would need to be + // stream buffering and scanning to correctly emit prior text + // and to detect all STOP occurrences. + transform(chunk, controller) { + if (chunk.type !== 'text-delta') { + controller.enqueue(chunk); + return; + } + + if (chunk.text.includes('STOP')) { + // stop the stream + stopStream(); + + // simulate the finish-step event + controller.enqueue({ + type: 'finish-step', + finishReason: 'stop', + rawFinishReason: 'stop', + usage: { + completionTokens: NaN, + promptTokens: NaN, + totalTokens: NaN, + }, + response: { + id: 'response-id', + modelId: 'mock-model-id', + timestamp: new Date(0), + }, + providerMetadata: undefined, + }); + + // simulate the finish event + controller.enqueue({ + type: 'finish', + finishReason: 'stop', + rawFinishReason: 'stop', + totalUsage: { + completionTokens: NaN, + promptTokens: NaN, + totalTokens: NaN, + }, + }); + + return; + } + + controller.enqueue(chunk); + }, + }); +``` + +#### Multiple transformations + +You can also provide multiple transformations. They are applied in the order they are provided. + +```tsx highlight="4" +const result = streamText({ + model, + prompt, + experimental_transform: [firstTransform, secondTransform], +}); +``` + +## Sources + +Some providers such as [Perplexity](/providers/ai-sdk-providers/perplexity#sources) and +[Google Generative AI](/providers/ai-sdk-providers/google-generative-ai#sources) include sources in the response. + +Currently sources are limited to web pages that ground the response. +You can access them using the `sources` property of the result. + +Each `url` source contains the following properties: + +- `id`: The ID of the source. +- `url`: The URL of the source. +- `title`: The optional title of the source. +- `providerMetadata`: Provider metadata for the source. + +When you use `generateText`, you can access the sources using the `sources` property: + +```ts +const result = await generateText({ + model: 'google/gemini-2.5-flash', + tools: { + google_search: google.tools.googleSearch({}), + }, + prompt: 'List the top 5 San Francisco news from the past week.', +}); + +for (const source of result.sources) { + if (source.sourceType === 'url') { + console.log('ID:', source.id); + console.log('Title:', source.title); + console.log('URL:', source.url); + console.log('Provider metadata:', source.providerMetadata); + console.log(); + } +} +``` + +When you use `streamText`, you can access the sources using the `fullStream` property: + +```tsx +const result = streamText({ + model: 'google/gemini-2.5-flash', + tools: { + google_search: google.tools.googleSearch({}), + }, + prompt: 'List the top 5 San Francisco news from the past week.', +}); + +for await (const part of result.fullStream) { + if (part.type === 'source' && part.sourceType === 'url') { + console.log('ID:', part.id); + console.log('Title:', part.title); + console.log('URL:', part.url); + console.log('Provider metadata:', part.providerMetadata); + console.log(); + } +} +``` + +The sources are also available in the `result.sources` promise. + +## Examples + +You can see `generateText` and `streamText` in action using various frameworks in the following examples: + +### `generateText` + + + +### `streamText` + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/10-generating-structured-data.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/10-generating-structured-data.mdx new file mode 100644 index 000000000..1bc827bfa --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/10-generating-structured-data.mdx @@ -0,0 +1,498 @@ +--- +title: Generating Structured Data +description: Learn how to generate structured data with the AI SDK. +--- + +# Generating Structured Data + +While text generation can be useful, your use case will likely call for generating structured data. +For example, you might want to extract information from text, classify data, or generate synthetic data. + +Many language models are capable of generating structured data, often defined as using "JSON modes" or "tools". +However, you need to manually provide schemas and then validate the generated data as LLMs can produce incorrect or incomplete structured data. + +The AI SDK standardises structured object generation across model providers +using the `output` property on [`generateText`](/docs/reference/ai-sdk-core/generate-text) +and [`streamText`](/docs/reference/ai-sdk-core/stream-text). +You can use [Zod schemas](/docs/reference/ai-sdk-core/zod-schema), [Valibot](/docs/reference/ai-sdk-core/valibot-schema), or [JSON schemas](/docs/reference/ai-sdk-core/json-schema) to specify the shape of the data that you want, +and the AI model will generate data that conforms to that structure. + + + Structured output generation is part of the `generateText` and `streamText` + flow. This means you can combine it with tool calling in the same request. + + +## Generating Structured Outputs + +Use `generateText` with `Output.object()` to generate structured data from a prompt. +The schema is also used to validate the generated data, ensuring type safety and correctness. + +```ts +import { generateText, Output } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const { output } = await generateText({ + model: __MODEL__, + output: Output.object({ + schema: z.object({ + recipe: z.object({ + name: z.string(), + ingredients: z.array( + z.object({ name: z.string(), amount: z.string() }), + ), + steps: z.array(z.string()), + }), + }), + }), + prompt: 'Generate a lasagna recipe.', +}); +``` + + + Structured output generation counts as a step in the AI SDK's multi-turn + execution model (where each model call or tool execution is one step). When + combining with tools, account for this in your `stopWhen` configuration. + + +### Accessing response headers & body + +Sometimes you need access to the full response from the model provider, +e.g. to access some provider-specific headers or body content. + +You can access the raw response headers and body using the `response` property: + +```ts +import { generateText, Output } from 'ai'; + +const result = await generateText({ + // ... + output: Output.object({ schema }), +}); + +console.log(JSON.stringify(result.response.headers, null, 2)); +console.log(JSON.stringify(result.response.body, null, 2)); +``` + +## Stream Structured Outputs + +Given the added complexity of returning structured data, model response time can be unacceptable for your interactive use case. +With `streamText` and `output`, you can stream the model's structured response as it is generated. + +```ts +import { streamText, Output } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const { partialOutputStream } = streamText({ + model: __MODEL__, + output: Output.object({ + schema: z.object({ + recipe: z.object({ + name: z.string(), + ingredients: z.array( + z.object({ name: z.string(), amount: z.string() }), + ), + steps: z.array(z.string()), + }), + }), + }), + prompt: 'Generate a lasagna recipe.', +}); + +// use partialOutputStream as an async iterable +for await (const partialObject of partialOutputStream) { + console.log(partialObject); +} +``` + +You can consume the structured output on the client with the [`useObject`](/docs/reference/ai-sdk-ui/use-object) hook. + +### Error Handling in Streams + +`streamText` starts streaming immediately. When errors occur during streaming, they become part of the stream rather than thrown exceptions (to prevent stream crashes). + +To handle errors, provide an `onError` callback: + +```tsx highlight="5-7" +import { streamText, Output } from 'ai'; + +const result = streamText({ + // ... + output: Output.object({ schema }), + onError({ error }) { + console.error(error); // log to your error tracking service + }, +}); +``` + +For non-streaming error handling with `generateText`, see the [Error Handling](#error-handling) section below. + +## Output Types + +The AI SDK supports multiple ways of specifying the expected structure of generated data via the `Output` object. You can select from various strategies for structured/text generation and validation. + +### `Output.text()` + +Use `Output.text()` to generate plain text from a model. This option doesn't enforce any schema on the result: you simply receive the model's text as a string. This is the default behavior when no `output` is specified. + +```ts +import { generateText, Output } from 'ai'; + +const { output } = await generateText({ + // ... + output: Output.text(), + prompt: 'Tell me a joke.', +}); +// output will be a string (the joke) +``` + +### `Output.object()` + +Use `Output.object({ schema })` to generate a structured object based on a schema (for example, a Zod schema). The output is type-validated to ensure the returned result matches the schema. + +```ts +import { generateText, Output } from 'ai'; +import { z } from 'zod'; + +const { output } = await generateText({ + // ... + output: Output.object({ + schema: z.object({ + name: z.string(), + age: z.number().nullable(), + labels: z.array(z.string()), + }), + }), + prompt: 'Generate information for a test user.', +}); +// output will be an object matching the schema above +``` + + + Partial outputs streamed via `streamText` cannot be validated against your + provided schema, as incomplete data may not yet conform to the expected + structure. + + +### `Output.array()` + +Use `Output.array({ element })` to specify that you expect an array of typed objects from the model, where each element should conform to a schema (defined in the `element` property). + +```ts +import { generateText, Output } from 'ai'; +import { z } from 'zod'; + +const { output } = await generateText({ + // ... + output: Output.array({ + element: z.object({ + location: z.string(), + temperature: z.number(), + condition: z.string(), + }), + }), + prompt: 'List the weather for San Francisco and Paris.', +}); +// output will be an array of objects like: +// [ +// { location: 'San Francisco', temperature: 70, condition: 'Sunny' }, +// { location: 'Paris', temperature: 65, condition: 'Cloudy' }, +// ] +``` + +When streaming arrays with `streamText`, you can use `elementStream` to receive each completed element as it is generated: + +```ts +import { streamText, Output } from 'ai'; +import { z } from 'zod'; + +const { elementStream } = streamText({ + // ... + output: Output.array({ + element: z.object({ + name: z.string(), + class: z.string(), + description: z.string(), + }), + }), + prompt: 'Generate 3 hero descriptions for a fantasy role playing game.', +}); + +for await (const hero of elementStream) { + console.log(hero); // Each hero is complete and validated +} +``` + + + Each element emitted by `elementStream` is complete and validated against your + element schema. This differs from `partialOutputStream`, which streams the + entire partial array including incomplete elements. + + +### `Output.choice()` + +Use `Output.choice({ options })` when you expect the model to choose from a specific set of string options, such as for classification or fixed-enum answers. + +```ts +import { generateText, Output } from 'ai'; + +const { output } = await generateText({ + // ... + output: Output.choice({ + options: ['sunny', 'rainy', 'snowy'], + }), + prompt: 'Is the weather sunny, rainy, or snowy today?', +}); +// output will be one of: 'sunny', 'rainy', or 'snowy' +``` + +You can provide any set of string options, and the output will always be a single string value that matches one of the specified options. The AI SDK validates that the result matches one of your options, and will throw if the model returns something invalid. + +This is especially useful for making classification-style generations or forcing valid values for API compatibility. + +### `Output.json()` + +Use `Output.json()` when you want to generate and parse unstructured JSON values from the model, without enforcing a specific schema. This is useful if you want to capture arbitrary objects, flexible structures, or when you want to rely on the model's natural output rather than rigid validation. + +```ts +import { generateText, Output } from 'ai'; + +const { output } = await generateText({ + // ... + output: Output.json(), + prompt: + 'For each city, return the current temperature and weather condition as a JSON object.', +}); + +// output could be any valid JSON, for example: +// { +// "San Francisco": { "temperature": 70, "condition": "Sunny" }, +// "Paris": { "temperature": 65, "condition": "Cloudy" } +// } +``` + +With `Output.json`, the AI SDK only checks that the response is valid JSON; it doesn't validate the structure or types of the values. If you need schema validation, use the `.object` or `.array` outputs instead. + +For more advanced validation or different structures, see [the Output API reference](/docs/reference/ai-sdk-core/output). + +## Generating Structured Outputs with Tools + +One of the key advantages of using structured output with `generateText` and `streamText` is the ability to combine it with tool calling. + +```ts +import { generateText, Output, tool, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const { output } = await generateText({ + model: __MODEL__, + tools: { + weather: tool({ + description: 'Get the weather for a location', + inputSchema: z.object({ location: z.string() }), + execute: async ({ location }) => { + // fetch weather data + return { temperature: 72, condition: 'sunny' }; + }, + }), + }, + output: Output.object({ + schema: z.object({ + summary: z.string(), + recommendation: z.string(), + }), + }), + stopWhen: stepCountIs(5), + prompt: 'What should I wear in San Francisco today?', +}); +``` + + + When using tools with structured output, remember that generating the + structured output counts as a step. Configure `stopWhen` to allow enough steps + for both tool execution and output generation. + + +## Property Descriptions + +You can add `.describe("...")` to individual schema properties to give the model hints about what each property is for. This helps improve the quality and accuracy of generated structured data: + +```ts highlight="5,9" +import { generateText, Output } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const { output } = await generateText({ + model: __MODEL__, + output: Output.object({ + schema: z.object({ + name: z.string().describe('The name of the recipe'), + ingredients: z + .array( + z.object({ + name: z.string(), + amount: z + .string() + .describe('The amount of the ingredient (grams or ml)'), + }), + ) + .describe('List of ingredients with amounts'), + steps: z.array(z.string()).describe('Step-by-step cooking instructions'), + }), + }), + prompt: 'Generate a lasagna recipe.', +}); +``` + +Property descriptions are particularly useful for: + +- Clarifying ambiguous property names +- Specifying expected formats or conventions +- Providing context for complex nested structures + +## Output Name and Description + +You can optionally specify a `name` and `description` for the output. These are used by some providers for additional LLM guidance, e.g. via tool or schema name. + +```ts highlight="6-7" +import { generateText, Output } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const { output } = await generateText({ + model: __MODEL__, + output: Output.object({ + name: 'Recipe', + description: 'A recipe for a dish.', + schema: z.object({ + name: z.string(), + ingredients: z.array(z.object({ name: z.string(), amount: z.string() })), + steps: z.array(z.string()), + }), + }), + prompt: 'Generate a lasagna recipe.', +}); +``` + +This works with all output types that support structured generation: + +- `Output.object({ name, description, schema })` +- `Output.array({ name, description, element })` +- `Output.choice({ name, description, options })` +- `Output.json({ name, description })` + +## Accessing Reasoning + +You can access the reasoning used by the language model to generate the object via the `reasoning` property on the result. This property contains a string with the model's thought process, if available. + +```ts +import { generateText, Output } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const result = await generateText({ + model: __MODEL__, // must be a reasoning model + output: Output.object({ + schema: z.object({ + recipe: z.object({ + name: z.string(), + ingredients: z.array( + z.object({ + name: z.string(), + amount: z.string(), + }), + ), + steps: z.array(z.string()), + }), + }), + }), + prompt: 'Generate a lasagna recipe.', +}); + +console.log(result.reasoningText); +``` + +## Error Handling + +When `generateText` with structured output cannot generate a valid object, it throws a [`AI_NoObjectGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-object-generated-error). + +This error occurs when the AI provider fails to generate a parsable object that conforms to the schema. +It can arise due to the following reasons: + +- The model failed to generate a response. +- The model generated a response that could not be parsed. +- The model generated a response that could not be validated against the schema. + +The error preserves the following information to help you log the issue: + +- `text`: The text that was generated by the model. This can be the raw text or the tool call text, depending on the object generation mode. +- `response`: Metadata about the language model response, including response id, timestamp, and model. +- `usage`: Request token usage. +- `cause`: The cause of the error (e.g. a JSON parsing error). You can use this for more detailed error handling. + +```ts +import { generateText, Output, NoObjectGeneratedError } from 'ai'; + +try { + await generateText({ + model, + output: Output.object({ schema }), + prompt, + }); +} catch (error) { + if (NoObjectGeneratedError.isInstance(error)) { + console.log('NoObjectGeneratedError'); + console.log('Cause:', error.cause); + console.log('Text:', error.text); + console.log('Response:', error.response); + console.log('Usage:', error.usage); + } +} +``` + +## More Examples + +You can see structured output generation in action using various frameworks in the following examples: + +### `generateText` with Output + + + +### `streamText` with Output + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx new file mode 100644 index 000000000..eb340ad24 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx @@ -0,0 +1,1148 @@ +--- +title: Tool Calling +description: Learn about tool calling and multi-step calls (using stopWhen) with AI SDK Core. +--- + +# Tool Calling + +As covered under Foundations, [tools](/docs/foundations/tools) are objects that can be called by the model to perform a specific task. +AI SDK Core tools contain several core elements: + +- **`description`**: An optional description of the tool that can influence when the tool is picked. +- **`inputSchema`**: A [Zod schema](/docs/foundations/tools#schemas) or a [JSON schema](/docs/reference/ai-sdk-core/json-schema) that defines the input parameters. The schema is consumed by the LLM, and also used to validate the LLM tool calls. +- **`execute`**: An optional async function that is called with the inputs from the tool call. It produces a value of type `RESULT` (generic type). It is optional because you might want to forward tool calls to the client or to a queue instead of executing them in the same process. +- **`strict`**: _(optional, boolean)_ Enables strict tool calling when supported by the provider + + + You can use the [`tool`](/docs/reference/ai-sdk-core/tool) helper function to + infer the types of the `execute` parameters. + + +The `tools` parameter of `generateText` and `streamText` is an object that has the tool names as keys and the tools as values: + +```ts highlight="6-17" +import { z } from 'zod'; +import { generateText, tool, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; + +const result = await generateText({ + model: __MODEL__, + tools: { + weather: tool({ + description: 'Get the weather in a location', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => ({ + location, + temperature: 72 + Math.floor(Math.random() * 21) - 10, + }), + }), + }, + stopWhen: stepCountIs(5), + prompt: 'What is the weather in San Francisco?', +}); +``` + + + When a model uses a tool, it is called a "tool call" and the output of the + tool is called a "tool result". + + +Tool calling is not restricted to only text generation. +You can also use it to render user interfaces (Generative UI). + +## Strict Mode + +When enabled, language model providers that support strict tool calling will only generate tool calls that are valid according to your defined `inputSchema`. +This increases the reliability of tool calling. +However, not all schemas may be supported in strict mode, and what is supported depends on the specific provider. + +By default, strict mode is disabled. You can enable it per-tool by setting `strict: true`: + +```ts +tool({ + description: 'Get the weather in a location', + inputSchema: z.object({ + location: z.string(), + }), + strict: true, // Enable strict validation for this tool + execute: async ({ location }) => ({ + // ... + }), +}); +``` + + + Not all providers or models support strict mode. For those that do not, this + option is ignored. + + +## Input Examples + +You can specify example inputs for your tools to help guide the model on how input data should be structured. +When supported by providers, input examples can help when JSON schema itself does not fully specify the intended +usage or when there are optional values. + +```ts +tool({ + description: 'Get the weather in a location', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + inputExamples: [ + { input: { location: 'San Francisco' } }, + { input: { location: 'London' } }, + ], + execute: async ({ location }) => { + // ... + }, +}); +``` + + + Only the Anthropic providers supports tool input examples natively. Other + providers ignore the setting. + + +## Tool Execution Approval + +By default, tools with an `execute` function run automatically as the model calls them. You can require approval before execution by setting `needsApproval`: + +```ts highlight="13" +import { tool } from 'ai'; +import { z } from 'zod'; + +const runCommand = tool({ + description: 'Run a shell command', + inputSchema: z.object({ + command: z.string().describe('The shell command to execute'), + }), + needsApproval: true, + execute: async ({ command }) => { + // your command execution logic here + }, +}); +``` + +This is useful for tools that perform sensitive operations like executing commands, processing payments, modifying data, and more potentially dangerous actions. + +### How It Works + +When a tool requires approval, `generateText` and `streamText` don't pause execution. Instead, they complete and return `tool-approval-request` parts in the result content. This means the approval flow requires two calls to the model: the first returns the approval request, and the second (after receiving the approval response) either executes the tool or informs the model that approval was denied. + +Here's the complete flow: + +1. Call `generateText` with a tool that has `needsApproval: true` +2. Model generates a tool call +3. `generateText` returns with `tool-approval-request` parts in `result.content` +4. Your app requests an approval and collects the user's decision +5. Add a `tool-approval-response` to the messages array +6. Call `generateText` again with the updated messages +7. If approved, the tool runs and returns a result. If denied, the model sees the denial and responds accordingly. + +### Handling Approval Requests + +After calling `generateText` or `streamText`, check `result.content` for `tool-approval-request` parts: + +```ts +import { type ModelMessage, generateText } from 'ai'; + +const messages: ModelMessage[] = [ + { role: 'user', content: 'Remove the most recent file' }, +]; +const result = await generateText({ + model: __MODEL__, + tools: { runCommand }, + messages, +}); + +messages.push(...result.response.messages); + +for (const part of result.content) { + if (part.type === 'tool-approval-request') { + console.log(part.approvalId); // Unique ID for this approval request + console.log(part.toolCall); // Contains toolName, input, etc. + } +} +``` + +To respond, create a `tool-approval-response` and add it to your messages: + +```ts +import { type ToolApprovalResponse } from 'ai'; + +const approvals: ToolApprovalResponse[] = []; + +for (const part of result.content) { + if (part.type === 'tool-approval-request') { + const response: ToolApprovalResponse = { + type: 'tool-approval-response', + approvalId: part.approvalId, + approved: true, // or false to deny + reason: 'User confirmed the command', // Optional context for the model + }; + approvals.push(response); + } +} + +// add approvals to messages +messages.push({ role: 'tool', content: approvals }); +``` + +Then call `generateText` again with the updated messages. If approved, the tool executes. If denied, the model receives the denial and can respond accordingly. + + + When a tool execution is denied, consider adding a system instruction like + "When a tool execution is not approved, do not retry it" to prevent the model + from attempting the same call again. + + +### Dynamic Approval + +You can make approval decisions based on tool input by providing an async function: + +```ts +const paymentTool = tool({ + description: 'Process a payment', + inputSchema: z.object({ + amount: z.number(), + recipient: z.string(), + }), + needsApproval: async ({ amount }) => amount > 1000, + execute: async ({ amount, recipient }) => { + return await processPayment(amount, recipient); + }, +}); +``` + +In this example, only transactions over $1000 require approval. Smaller transactions execute automatically. + +### Tool Execution Approval with useChat + +When using `useChat`, the approval flow is handled through UI state. See [Chatbot Tool Usage](/docs/ai-sdk-ui/chatbot-tool-usage#tool-execution-approval) for details on handling approvals in your UI with `addToolApprovalResponse`. + +## Multi-Step Calls (using stopWhen) + +With the `stopWhen` setting, you can enable multi-step calls in `generateText` and `streamText`. When `stopWhen` is set and the model generates a tool call, the AI SDK will trigger a new generation passing in the tool result until there are no further tool calls or the stopping condition is met. + + + The `stopWhen` conditions are only evaluated when the last step contains tool + results. + + +By default, when you use `generateText` or `streamText`, it triggers a single generation. This works well for many use cases where you can rely on the model's training data to generate a response. However, when you provide tools, the model now has the choice to either generate a normal text response, or generate a tool call. If the model generates a tool call, its generation is complete and that step is finished. + +You may want the model to generate text after the tool has been executed, either to summarize the tool results in the context of the users query. In many cases, you may also want the model to use multiple tools in a single response. This is where multi-step calls come in. + +You can think of multi-step calls in a similar way to a conversation with a human. When you ask a question, if the person does not have the requisite knowledge in their common knowledge (a model's training data), the person may need to look up information (use a tool) before they can provide you with an answer. In the same way, the model may need to call a tool to get the information it needs to answer your question where each generation (tool call or text generation) is a step. + +### Example + +In the following example, there are two steps: + +1. **Step 1** + 1. The prompt `'What is the weather in San Francisco?'` is sent to the model. + 1. The model generates a tool call. + 1. The tool call is executed. +1. **Step 2** + 1. The tool result is sent to the model. + 1. The model generates a response considering the tool result. + +```ts highlight="18-19" +import { z } from 'zod'; +import { generateText, tool, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; + +const { text, steps } = await generateText({ + model: __MODEL__, + tools: { + weather: tool({ + description: 'Get the weather in a location', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => ({ + location, + temperature: 72 + Math.floor(Math.random() * 21) - 10, + }), + }), + }, + stopWhen: stepCountIs(5), // stop after a maximum of 5 steps if tools were called + prompt: 'What is the weather in San Francisco?', +}); +``` + +You can use `streamText` in a similar way. + +### Steps + +To access intermediate tool calls and results, you can use the `steps` property in the result object +or the `streamText` `onFinish` callback. +It contains all the text, tool calls, tool results, and more from each step. + +#### Example: Extract tool results from all steps + +```ts highlight="3,9-10" +import { generateText } from 'ai'; +__PROVIDER_IMPORT__; + +const { steps } = await generateText({ + model: __MODEL__, + stopWhen: stepCountIs(10), + // ... +}); + +// extract all tool calls from the steps: +const allToolCalls = steps.flatMap(step => step.toolCalls); +``` + +### `onStepFinish` callback + +When using `generateText` or `streamText`, you can provide an `onStepFinish` callback that +is triggered when a step is finished, +i.e. all text deltas, tool calls, and tool results for the step are available. +When you have multiple steps, the callback is triggered for each step. + +The callback receives a `stepNumber` (zero-based) to identify which step just completed: + +```tsx highlight="5-8" +import { generateText } from 'ai'; + +const result = await generateText({ + // ... + onStepFinish({ + stepNumber, + text, + toolCalls, + toolResults, + finishReason, + usage, + }) { + console.log(`Step ${stepNumber} finished (${finishReason})`); + // your own logic, e.g. for saving the chat history or recording usage + }, +}); +``` + +### Tool execution lifecycle callbacks + +You can use `experimental_onToolCallStart` and `experimental_onToolCallFinish` to observe tool execution. +These callbacks are called right before and after each tool's `execute` function, giving you +visibility into tool execution timing, inputs, outputs, and errors: + +```tsx highlight="5-14" +import { generateText } from 'ai'; + +const result = await generateText({ + // ... model, tools, prompt + experimental_onToolCallStart({ toolName, toolCallId, input }) { + console.log(`Calling tool: ${toolName}`, { toolCallId, input }); + }, + experimental_onToolCallFinish({ + toolName, + toolCallId, + output, + error, + durationMs, + }) { + if (error) { + console.error(`Tool ${toolName} failed after ${durationMs}ms:`, error); + } else { + console.log(`Tool ${toolName} completed in ${durationMs}ms`, { output }); + } + }, +}); +``` + +Errors thrown inside these callbacks are silently caught and do not break the generation flow. + +### `prepareStep` callback + +The `prepareStep` callback is called before a step is started. + +It is called with the following parameters: + +- `model`: The model that was passed into `generateText`. +- `stopWhen`: The stopping condition that was passed into `generateText`. +- `stepNumber`: The number of the step that is being executed. +- `steps`: The steps that have been executed so far. +- `messages`: The messages that will be sent to the model for the current step. +- `experimental_context`: The context passed via the `experimental_context` setting (experimental). + +You can use it to provide different settings for a step, including modifying the input messages. + +```tsx highlight="5-7" +import { generateText } from 'ai'; + +const result = await generateText({ + // ... + prepareStep: async ({ model, stepNumber, steps, messages }) => { + if (stepNumber === 0) { + return { + // use a different model for this step: + model: modelForThisParticularStep, + // force a tool choice for this step: + toolChoice: { type: 'tool', toolName: 'tool1' }, + // limit the tools that are available for this step: + activeTools: ['tool1'], + }; + } + + // when nothing is returned, the default settings are used + }, +}); +``` + +#### Message Modification for Longer Agentic Loops + +In longer agentic loops, you can use the `messages` parameter to modify the input messages for each step. This is particularly useful for prompt compression: + +```tsx +prepareStep: async ({ stepNumber, steps, messages }) => { + // Compress conversation history for longer loops + if (messages.length > 20) { + return { + messages: messages.slice(-10), + }; + } + + return {}; +}, +``` + +#### Provider Options for Step Configuration + +You can use `providerOptions` in `prepareStep` to pass provider-specific configuration for each step. This is useful for features like Anthropic's code execution container persistence: + +```tsx +import { forwardAnthropicContainerIdFromLastStep } from '@ai-sdk/anthropic'; + +// Propagate container ID from previous step for code execution continuity +prepareStep: forwardAnthropicContainerIdFromLastStep, +``` + +## Response Messages + +Adding the generated assistant and tool messages to your conversation history is a common task, +especially if you are using multi-step tool calls. + +Both `generateText` and `streamText` have a `response.messages` property that you can use to +add the assistant and tool messages to your conversation history. +It is also available in the `onFinish` callback of `streamText`. + +The `response.messages` property contains an array of `ModelMessage` objects that you can add to your conversation history: + +```ts +import { generateText, ModelMessage } from 'ai'; + +const messages: ModelMessage[] = [ + // ... +]; + +const { response } = await generateText({ + // ... + messages, +}); + +// add the response messages to your conversation history: +messages.push(...response.messages); // streamText: ...((await response).messages) +``` + +## Dynamic Tools + +AI SDK Core supports dynamic tools for scenarios where tool schemas are not known at compile time. This is useful for: + +- MCP (Model Context Protocol) tools without schemas +- User-defined functions at runtime +- Tools loaded from external sources + +### Using dynamicTool + +The `dynamicTool` helper creates tools with unknown input/output types: + +```ts +import { dynamicTool } from 'ai'; +import { z } from 'zod'; + +const customTool = dynamicTool({ + description: 'Execute a custom function', + inputSchema: z.object({}), + execute: async input => { + // input is typed as 'unknown' + // You need to validate/cast it at runtime + const { action, parameters } = input as any; + + // Execute your dynamic logic + return { result: `Executed ${action}` }; + }, +}); +``` + +### Type-Safe Handling + +When using both static and dynamic tools, use the `dynamic` flag for type narrowing: + +```ts +const result = await generateText({ + model: __MODEL__, + tools: { + // Static tool with known types + weather: weatherTool, + // Dynamic tool + custom: dynamicTool({ + /* ... */ + }), + }, + onStepFinish: ({ toolCalls, toolResults }) => { + // Type-safe iteration + for (const toolCall of toolCalls) { + if (toolCall.dynamic) { + // Dynamic tool: input is 'unknown' + console.log('Dynamic:', toolCall.toolName, toolCall.input); + continue; + } + + // Static tool: full type inference + switch (toolCall.toolName) { + case 'weather': + console.log(toolCall.input.location); // typed as string + break; + } + } + }, +}); +``` + +## Preliminary Tool Results + +You can return an `AsyncIterable` over multiple results. +In this case, the last value from the iterable is the final tool result. + +This can be used in combination with generator functions to e.g. stream status information +during the tool execution: + +```ts +tool({ + description: 'Get the current weather.', + inputSchema: z.object({ + location: z.string(), + }), + async *execute({ location }) { + yield { + status: 'loading' as const, + text: `Getting weather for ${location}`, + weather: undefined, + }; + + await new Promise(resolve => setTimeout(resolve, 3000)); + + const temperature = 72 + Math.floor(Math.random() * 21) - 10; + + yield { + status: 'success' as const, + text: `The weather in ${location} is ${temperature}°F`, + temperature, + }; + }, +}); +``` + +## Tool Choice + +You can use the `toolChoice` setting to influence when a tool is selected. +It supports the following settings: + +- `auto` (default): the model can choose whether and which tools to call. +- `required`: the model must call a tool. It can choose which tool to call. +- `none`: the model must not call tools +- `{ type: 'tool', toolName: string (typed) }`: the model must call the specified tool + +```ts highlight="18" +import { z } from 'zod'; +import { generateText, tool } from 'ai'; +__PROVIDER_IMPORT__; + +const result = await generateText({ + model: __MODEL__, + tools: { + weather: tool({ + description: 'Get the weather in a location', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => ({ + location, + temperature: 72 + Math.floor(Math.random() * 21) - 10, + }), + }), + }, + toolChoice: 'required', // force the model to call a tool + prompt: 'What is the weather in San Francisco?', +}); +``` + +## Tool Execution Options + +When tools are called, they receive additional options as a second parameter. + +### Tool Call ID + +The ID of the tool call is forwarded to the tool execution. +You can use it e.g. when sending tool-call related information with stream data. + +```ts highlight="14-20" +import { + streamText, + tool, + createUIMessageStream, + createUIMessageStreamResponse, +} from 'ai'; + +export async function POST(req: Request) { + const { messages } = await req.json(); + + const stream = createUIMessageStream({ + execute: ({ writer }) => { + const result = streamText({ + // ... + messages, + tools: { + myTool: tool({ + // ... + execute: async (args, { toolCallId }) => { + // return e.g. custom status for tool call + writer.write({ + type: 'data-tool-status', + id: toolCallId, + data: { + name: 'myTool', + status: 'in-progress', + }, + }); + // ... + }, + }), + }, + }); + + writer.merge(result.toUIMessageStream()); + }, + }); + + return createUIMessageStreamResponse({ stream }); +} +``` + +### Messages + +The messages that were sent to the language model to initiate the response that contained the tool call are forwarded to the tool execution. +You can access them in the second parameter of the `execute` function. +In multi-step calls, the messages contain the text, tool calls, and tool results from all previous steps. + +```ts highlight="8-9" +import { generateText, tool } from 'ai'; + +const result = await generateText({ + // ... + tools: { + myTool: tool({ + // ... + execute: async (args, { messages }) => { + // use the message history in e.g. calls to other language models + return { ... }; + }, + }), + }, +}); +``` + +### Abort Signals + +The abort signals from `generateText` and `streamText` are forwarded to the tool execution. +You can access them in the second parameter of the `execute` function and e.g. abort long-running computations or forward them to fetch calls inside tools. + +```ts highlight="6,11,14" +import { z } from 'zod'; +import { generateText, tool } from 'ai'; +__PROVIDER_IMPORT__; + +const result = await generateText({ + model: __MODEL__, + abortSignal: myAbortSignal, // signal that will be forwarded to tools + tools: { + weather: tool({ + description: 'Get the weather in a location', + inputSchema: z.object({ location: z.string() }), + execute: async ({ location }, { abortSignal }) => { + return fetch( + `https://api.weatherapi.com/v1/current.json?q=${location}`, + { signal: abortSignal }, // forward the abort signal to fetch + ); + }, + }), + }, + prompt: 'What is the weather in San Francisco?', +}); +``` + +### Context (experimental) + +You can pass in arbitrary context from `generateText` or `streamText` via the `experimental_context` setting. +This context is available in the `experimental_context` tool execution option. + +```ts +const result = await generateText({ + // ... + tools: { + someTool: tool({ + // ... + execute: async (input, { experimental_context: context }) => { + const typedContext = context as { example: string }; // or use type validation library + // ... + }, + }), + }, + experimental_context: { example: '123' }, +}); +``` + +## Tool Input Lifecycle Hooks + +The following tool input lifecycle hooks are available: + +- **`onInputStart`**: Called when the model starts generating the input (arguments) for the tool call +- **`onInputDelta`**: Called for each chunk of text as the input is streamed +- **`onInputAvailable`**: Called when the complete input is available and validated + +`onInputStart` and `onInputDelta` are only called in streaming contexts (when using `streamText`). They are not called when using `generateText`. + +### Example + +```ts highlight="15-23" +import { streamText, tool } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const result = streamText({ + model: __MODEL__, + tools: { + getWeather: tool({ + description: 'Get the weather in a location', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => ({ + temperature: 72 + Math.floor(Math.random() * 21) - 10, + }), + onInputStart: () => { + console.log('Tool call starting'); + }, + onInputDelta: ({ inputTextDelta }) => { + console.log('Received input chunk:', inputTextDelta); + }, + onInputAvailable: ({ input }) => { + console.log('Complete input:', input); + }, + }), + }, + prompt: 'What is the weather in San Francisco?', +}); +``` + +## Types + +Modularizing your code often requires defining types to ensure type safety and reusability. +To enable this, the AI SDK provides several helper types for tools, tool calls, and tool results. + +You can use them to strongly type your variables, function parameters, and return types +in parts of the code that are not directly related to `streamText` or `generateText`. + +Each tool call is typed with `ToolCall`, depending +on the tool that has been invoked. +Similarly, the tool results are typed with `ToolResult`. + +The tools in `streamText` and `generateText` are defined as a `ToolSet`. +The type inference helpers `TypedToolCall` +and `TypedToolResult` can be used to +extract the tool call and tool result types from the tools. + +```ts highlight="18-19,23-24" +import { TypedToolCall, TypedToolResult, generateText, tool } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const myToolSet = { + firstTool: tool({ + description: 'Greets the user', + inputSchema: z.object({ name: z.string() }), + execute: async ({ name }) => `Hello, ${name}!`, + }), + secondTool: tool({ + description: 'Tells the user their age', + inputSchema: z.object({ age: z.number() }), + execute: async ({ age }) => `You are ${age} years old!`, + }), +}; + +type MyToolCall = TypedToolCall; +type MyToolResult = TypedToolResult; + +async function generateSomething(prompt: string): Promise<{ + text: string; + toolCalls: Array; // typed tool calls + toolResults: Array; // typed tool results +}> { + return generateText({ + model: __MODEL__, + tools: myToolSet, + prompt, + }); +} +``` + +## Handling Errors + +The AI SDK has three tool-call related errors: + +- [`NoSuchToolError`](/docs/reference/ai-sdk-errors/ai-no-such-tool-error): the model tries to call a tool that is not defined in the tools object +- [`InvalidToolInputError`](/docs/reference/ai-sdk-errors/ai-invalid-tool-input-error): the model calls a tool with inputs that do not match the tool's input schema +- [`ToolCallRepairError`](/docs/reference/ai-sdk-errors/ai-tool-call-repair-error): an error that occurred during tool call repair + +When tool execution fails (errors thrown by your tool's `execute` function), the AI SDK adds them as `tool-error` content parts to enable automated LLM roundtrips in multi-step scenarios. + +### `generateText` + +`generateText` throws errors for tool schema validation issues and other errors, and can be handled using a `try`/`catch` block. Tool execution errors appear as `tool-error` parts in the result steps: + +```ts +try { + const result = await generateText({ + //... + }); +} catch (error) { + if (NoSuchToolError.isInstance(error)) { + // handle the no such tool error + } else if (InvalidToolInputError.isInstance(error)) { + // handle the invalid tool inputs error + } else { + // handle other errors + } +} +``` + +Tool execution errors are available in the result steps: + +```ts +const { steps } = await generateText({ + // ... +}); + +// check for tool errors in the steps +const toolErrors = steps.flatMap(step => + step.content.filter(part => part.type === 'tool-error'), +); + +toolErrors.forEach(toolError => { + console.log('Tool error:', toolError.error); + console.log('Tool name:', toolError.toolName); + console.log('Tool input:', toolError.input); +}); +``` + +### `streamText` + +`streamText` sends errors as part of the full stream. Tool execution errors appear as `tool-error` parts, while other errors appear as `error` parts. + +When using `toUIMessageStreamResponse`, you can pass an `onError` function to extract the error message from the error part and forward it as part of the stream response: + +```ts +const result = streamText({ + // ... +}); + +return result.toUIMessageStreamResponse({ + onError: error => { + if (NoSuchToolError.isInstance(error)) { + return 'The model tried to call a unknown tool.'; + } else if (InvalidToolInputError.isInstance(error)) { + return 'The model called a tool with invalid inputs.'; + } else { + return 'An unknown error occurred.'; + } + }, +}); +``` + +## Tool Call Repair + + + The tool call repair feature is experimental and may change in the future. + + +Language models sometimes fail to generate valid tool calls, +especially when the input schema is complex or the model is smaller. + +If you use multiple steps, those failed tool calls will be sent back to the LLM +in the next step to give it an opportunity to fix it. +However, you may want to control how invalid tool calls are repaired without requiring +additional steps that pollute the message history. + +You can use the `experimental_repairToolCall` function to attempt to repair the tool call +with a custom function. + +You can use different strategies to repair the tool call: + +- Use a model with structured outputs to generate the inputs. +- Send the messages, system prompt, and tool schema to a stronger model to generate the inputs. +- Provide more specific repair instructions based on which tool was called. + +### Example: Use a model with structured outputs for repair + +```ts +import { openai } from '@ai-sdk/openai'; +import { generateText, NoSuchToolError, Output, tool } from 'ai'; + +const result = await generateText({ + model, + tools, + prompt, + + experimental_repairToolCall: async ({ + toolCall, + tools, + inputSchema, + error, + }) => { + if (NoSuchToolError.isInstance(error)) { + return null; // do not attempt to fix invalid tool names + } + + const tool = tools[toolCall.toolName as keyof typeof tools]; + + const { output: repairedArgs } = await generateText({ + model: __MODEL__, + output: Output.object({ schema: tool.inputSchema }), + prompt: [ + `The model tried to call the tool "${toolCall.toolName}"` + + ` with the following inputs:`, + JSON.stringify(toolCall.input), + `The tool accepts the following schema:`, + JSON.stringify(inputSchema(toolCall)), + 'Please fix the inputs.', + ].join('\n'), + }); + + return { ...toolCall, input: JSON.stringify(repairedArgs) }; + }, +}); +``` + +### Example: Use the re-ask strategy for repair + +```ts +import { openai } from '@ai-sdk/openai'; +import { generateText, NoSuchToolError, tool } from 'ai'; + +const result = await generateText({ + model, + tools, + prompt, + + experimental_repairToolCall: async ({ + toolCall, + tools, + error, + messages, + system, + }) => { + const result = await generateText({ + model, + system, + messages: [ + ...messages, + { + role: 'assistant', + content: [ + { + type: 'tool-call', + toolCallId: toolCall.toolCallId, + toolName: toolCall.toolName, + input: toolCall.input, + }, + ], + }, + { + role: 'tool' as const, + content: [ + { + type: 'tool-result', + toolCallId: toolCall.toolCallId, + toolName: toolCall.toolName, + output: error.message, + }, + ], + }, + ], + tools, + }); + + const newToolCall = result.toolCalls.find( + newToolCall => newToolCall.toolName === toolCall.toolName, + ); + + return newToolCall != null + ? { + type: 'tool-call' as const, + toolCallId: toolCall.toolCallId, + toolName: toolCall.toolName, + input: JSON.stringify(newToolCall.input), + } + : null; + }, +}); +``` + +## Active Tools + +Language models can only handle a limited number of tools at a time, depending on the model. +To allow for static typing using a large number of tools and limiting the available tools to the model at the same time, +the AI SDK provides the `activeTools` property. + +It is an array of tool names that are currently active. +By default, the value is `undefined` and all tools are active. + +```ts highlight="7" +import { openai } from '@ai-sdk/openai'; +import { generateText } from 'ai'; +__PROVIDER_IMPORT__; + +const { text } = await generateText({ + model: __MODEL__, + tools: myToolSet, + activeTools: ['firstTool'], +}); +``` + +## Multi-modal Tool Results + + + Multi-modal tool results are experimental and supported by Anthropic, OpenAI, + and Google (Gemini 3 models). + + +For Google, use base64 media parts (`image-data` / `file-data`) or base64 +`data:` URLs in URL-style parts. Remote HTTP(S) URLs in tool-result URL parts +are not supported. + +In order to send multi-modal tool results, e.g. screenshots, back to the model, +they need to be converted into a specific format. + +AI SDK Core tools have an optional `toModelOutput` function +that converts the tool result into a content part. + +Here is an example for converting a screenshot into a content part: + +```ts highlight="22-27" +const result = await generateText({ + model: __MODEL__, + tools: { + computer: anthropic.tools.computer_20241022({ + // ... + async execute({ action, coordinate, text }) { + switch (action) { + case 'screenshot': { + return { + type: 'image', + data: fs + .readFileSync('./data/screenshot-editor.png') + .toString('base64'), + }; + } + default: { + return `executed ${action}`; + } + } + }, + + // map to tool result content for LLM consumption: + toModelOutput({ output }) { + return { + type: 'content', + value: + typeof output === 'string' + ? [{ type: 'text', text: output }] + : [{ type: 'media', data: output.data, mediaType: 'image/png' }], + }; + }, + }), + }, + // ... +}); +``` + +## Extracting Tools + +Once you start having many tools, you might want to extract them into separate files. +The `tool` helper function is crucial for this, because it ensures correct type inference. + +Here is an example of an extracted tool: + +```ts filename="tools/weather-tool.ts" highlight="1,4-5" +import { tool } from 'ai'; +import { z } from 'zod'; + +// the `tool` helper function ensures correct type inference: +export const weatherTool = tool({ + description: 'Get the weather in a location', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }) => ({ + location, + temperature: 72 + Math.floor(Math.random() * 21) - 10, + }), +}); +``` + +## MCP Tools + +The AI SDK supports connecting to Model Context Protocol (MCP) servers to access their tools. +MCP enables your AI applications to discover and use tools across various services through a standardized interface. + +For detailed information about MCP tools, including initialization, transport options, and usage patterns, see the [MCP Tools documentation](/docs/ai-sdk-core/mcp-tools). + +### AI SDK Tools vs MCP Tools + +In most cases, you should define your own AI SDK tools for production applications. They provide full control, type safety, and optimal performance. MCP tools are best suited for rapid development iteration and scenarios where users bring their own tools. + +| Aspect | AI SDK Tools | MCP Tools | +| ---------------------- | --------------------------------------------------------- | ----------------------------------------------------- | +| **Type Safety** | Full static typing end-to-end | Dynamic discovery at runtime | +| **Execution** | Same process as your request (low latency) | Separate server (network overhead) | +| **Prompt Control** | Full control over descriptions and schemas | Controlled by MCP server owner | +| **Schema Control** | You define and optimize for your model | Controlled by MCP server owner | +| **Version Management** | Full visibility over updates | Can update independently (version skew risk) | +| **Authentication** | Same process, no additional auth required | Separate server introduces additional auth complexity | +| **Best For** | Production applications requiring control and performance | Development iteration, user-provided tools | + +## Examples + +You can see tools in action using various frameworks in the following examples: + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/16-mcp-tools.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/16-mcp-tools.mdx new file mode 100644 index 000000000..cbe7d7284 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/16-mcp-tools.mdx @@ -0,0 +1,383 @@ +--- +title: Model Context Protocol (MCP) +description: Learn how to connect to Model Context Protocol (MCP) servers and use their tools with AI SDK Core. +--- + +# Model Context Protocol (MCP) + +The AI SDK supports connecting to [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) servers to access their tools, resources, and prompts. +This enables your AI applications to discover and use capabilities across various services through a standardized interface. + + + If you're using OpenAI's Responses API, you can also use the built-in + `openai.tools.mcp` tool, which provides direct MCP server integration without + needing to convert tools. See the [OpenAI provider + documentation](/providers/ai-sdk-providers/openai#mcp-tool) for details. + + +## Initializing an MCP Client + +We recommend using HTTP transport (like `StreamableHTTPClientTransport`) for production deployments. The stdio transport should only be used for connecting to local servers as it cannot be deployed to production environments. + +Create an MCP client using one of the following transport options: + +- **HTTP transport (Recommended)**: Either configure HTTP directly via the client using `transport: { type: 'http', ... }`, or use MCP's official TypeScript SDK `StreamableHTTPClientTransport` +- SSE (Server-Sent Events): An alternative HTTP-based transport +- `stdio`: For local development only. Uses standard input/output streams for local MCP servers + +### HTTP Transport (Recommended) + +For production deployments, we recommend using the HTTP transport. You can configure it directly on the client: + +```typescript +import { createMCPClient } from '@ai-sdk/mcp'; + +const mcpClient = await createMCPClient({ + transport: { + type: 'http', + url: 'https://your-server.com/mcp', + + // optional: configure HTTP headers + headers: { Authorization: 'Bearer my-api-key' }, + + // optional: provide an OAuth client provider for automatic authorization + authProvider: myOAuthClientProvider, + + // optional: reject redirect responses to prevent SSRF + redirect: 'error', + }, +}); +``` + +Alternatively, you can use `StreamableHTTPClientTransport` from MCP's official TypeScript SDK: + +```typescript +import { createMCPClient } from '@ai-sdk/mcp'; +import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'; + +const url = new URL('https://your-server.com/mcp'); +const mcpClient = await createMCPClient({ + transport: new StreamableHTTPClientTransport(url, { + sessionId: 'session_123', + }), +}); +``` + +### SSE Transport + +SSE provides an alternative HTTP-based transport option. Configure it with a `type` and `url` property. You can also provide an `authProvider` for OAuth: + +```typescript +import { createMCPClient } from '@ai-sdk/mcp'; + +const mcpClient = await createMCPClient({ + transport: { + type: 'sse', + url: 'https://my-server.com/sse', + + // optional: configure HTTP headers + headers: { Authorization: 'Bearer my-api-key' }, + + // optional: provide an OAuth client provider for automatic authorization + authProvider: myOAuthClientProvider, + + // optional: reject redirect responses to prevent SSRF + redirect: 'error', + }, +}); +``` + +### Stdio Transport (Local Servers) + + + The stdio transport should only be used for local servers. + + +The Stdio transport can be imported from either the MCP SDK or the AI SDK: + +```typescript +import { createMCPClient } from '@ai-sdk/mcp'; +import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'; +// Or use the AI SDK's stdio transport: +// import { Experimental_StdioMCPTransport as StdioClientTransport } from '@ai-sdk/mcp/mcp-stdio'; + +const mcpClient = await createMCPClient({ + transport: new StdioClientTransport({ + command: 'node', + args: ['src/stdio/dist/server.js'], + }), +}); +``` + +### Custom Transport + +You can also bring your own transport by implementing the `MCPTransport` interface for specific requirements not covered by the standard transports. + + + The client returned by the `createMCPClient` function is a + lightweight client intended for use in tool conversion. It currently does not + support all features of the full MCP client, such as: session + management, resumable streams, and receiving notifications. + +Authorization via OAuth is supported when using the AI SDK MCP HTTP or SSE +transports by providing an `authProvider`. + + + +### Closing the MCP Client + +After initialization, you should close the MCP client based on your usage pattern: + +- For short-lived usage (e.g., single requests), close the client when the response is finished +- For long-running clients (e.g., command line apps), keep the client open but ensure it's closed when the application terminates + +When streaming responses, you can close the client when the LLM response has finished. For example, when using `streamText`, you should use the `onFinish` callback: + +```typescript +const mcpClient = await createMCPClient({ + // ... +}); + +const tools = await mcpClient.tools(); + +const result = await streamText({ + model: __MODEL__, + tools, + prompt: 'What is the weather in Brooklyn, New York?', + onFinish: async () => { + await mcpClient.close(); + }, +}); +``` + +When generating responses without streaming, you can use try/finally or cleanup functions in your framework: + +```typescript +import { createMCPClient, type MCPClient } from '@ai-sdk/mcp'; + +let mcpClient: MCPClient | undefined; + +try { + mcpClient = await createMCPClient({ + // ... + }); +} finally { + await mcpClient?.close(); +} +``` + +## Using MCP Tools + +The client's `tools` method acts as an adapter between MCP tools and AI SDK tools. It supports two approaches for working with tool schemas: + +### Schema Discovery + +With schema discovery, all tools offered by the server are automatically listed, and input parameter types are inferred based on the schemas provided by the server: + +```typescript +const tools = await mcpClient.tools(); +``` + +This approach is simpler to implement and automatically stays in sync with server changes. However, you won't have TypeScript type safety during development, and all tools from the server will be loaded + +### Schema Definition + +For better type safety and control, you can define the tools and their input schemas explicitly in your client code: + +```typescript +import { z } from 'zod'; + +const tools = await mcpClient.tools({ + schemas: { + 'get-data': { + inputSchema: z.object({ + query: z.string().describe('The data query'), + format: z.enum(['json', 'text']).optional(), + }), + }, + // For tools with zero inputs, you should use an empty object: + 'tool-with-no-args': { + inputSchema: z.object({}), + }, + }, +}); +``` + +This approach provides full TypeScript type safety and IDE autocompletion, letting you catch parameter mismatches during development. When you define `schemas`, the client only pulls the explicitly defined tools, keeping your application focused on the tools it needs + +### Typed Tool Outputs + +When MCP servers return `structuredContent` (per the [MCP specification](https://modelcontextprotocol.io/specification/2025-06-18/server/tools#structured-content)), you can define an `outputSchema` to get typed tool results: + +```typescript +import { z } from 'zod'; + +const tools = await mcpClient.tools({ + schemas: { + 'get-weather': { + inputSchema: z.object({ + location: z.string(), + }), + // Define outputSchema for typed results + outputSchema: z.object({ + temperature: z.number(), + conditions: z.string(), + humidity: z.number(), + }), + }, + }, +}); + +const result = await tools['get-weather'].execute( + { location: 'New York' }, + { messages: [], toolCallId: 'weather-1' }, +); + +console.log(`Temperature: ${result.temperature}°C`); +``` + +When `outputSchema` is provided: + +- The client extracts `structuredContent` from the tool result +- The output is validated against your schema at runtime +- You get full TypeScript type safety for the result + +If the server doesn't return `structuredContent`, the client falls back to parsing JSON from the text content. If neither is available or validation fails, an error is thrown. + + + Without `outputSchema`, the tool returns the raw `CallToolResult` object + containing `content` and optional `isError` fields. + + +## Using MCP Resources + +According to the [MCP specification](https://modelcontextprotocol.io/docs/learn/server-concepts#resources), resources are **application-driven** data sources that provide context to the model. Unlike tools (which are model-controlled), your application decides when to fetch and pass resources as context. + +The MCP client provides three methods for working with resources: + +### Listing Resources + +List all available resources from the MCP server: + +```typescript +const resources = await mcpClient.listResources(); +``` + +### Reading Resource Contents + +Read the contents of a specific resource by its URI: + +```typescript +const resourceData = await mcpClient.readResource({ + uri: 'file:///example/document.txt', +}); +``` + +### Listing Resource Templates + +Resource templates are dynamic URI patterns that allow flexible queries. List all available templates: + +```typescript +const templates = await mcpClient.listResourceTemplates(); +``` + +## Using MCP Prompts + + + MCP Prompts is an experimental feature and may change in the future. + + +According to the MCP specification, prompts are user-controlled templates that servers expose for clients to list and retrieve with optional arguments. + +### Listing Prompts + +```typescript +const prompts = await mcpClient.experimental_listPrompts(); +``` + +### Getting a Prompt + +Retrieve prompt messages, optionally passing arguments defined by the server: + +```typescript +const prompt = await mcpClient.experimental_getPrompt({ + name: 'code_review', + arguments: { code: 'function add(a, b) { return a + b; }' }, +}); +``` + +## Handling Elicitation Requests + +Elicitation is a mechanism where MCP servers can request additional information from the client during tool execution. For example, a server might need user input to complete a registration form or confirmation for a sensitive operation. + + + It is up to the client application to handle elicitation requests properly. + The MCP client simply surfaces these requests from the server to your + application code. + + +### Enabling Elicitation Support + +To enable elicitation, you need to advertise the capability when creating the MCP client: + +```typescript +const mcpClient = await createMCPClient({ + transport: { + type: 'sse', + url: 'https://your-server.com/sse', + }, + capabilities: { + elicitation: {}, + }, +}); +``` + +### Registering an Elicitation Handler + +Use the `onElicitationRequest` method to register a handler that will be called when the server requests input: + +```typescript +import { ElicitationRequestSchema } from '@ai-sdk/mcp'; + +mcpClient.onElicitationRequest(ElicitationRequestSchema, async request => { + // request.params.message: A message describing what input is needed + // request.params.requestedSchema: JSON schema defining the expected input structure + + // Get input from the user (implement according to your application's needs) + const userInput = await getInputFromUser( + request.params.message, + request.params.requestedSchema, + ); + + // Return the result with one of three actions: + return { + action: 'accept', // or 'decline' or 'cancel' + content: userInput, // only required when action is 'accept' + }; +}); +``` + +### Elicitation Response Actions + +Your handler must return an object with an `action` field that can be one of: + +- `'accept'`: User provided the requested information. Must include `content` with the data. +- `'decline'`: User chose not to provide the information. +- `'cancel'`: User cancelled the operation entirely. + +## Examples + +You can see MCP in action in the following examples: + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/20-prompt-engineering.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/20-prompt-engineering.mdx new file mode 100644 index 000000000..29c4deed2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/20-prompt-engineering.mdx @@ -0,0 +1,146 @@ +--- +title: Prompt Engineering +description: Learn how to develop prompts with AI SDK Core. +--- + +# Prompt Engineering + +## Tips + +### Prompts for Tools + +When you create prompts that include tools, getting good results can be tricky as the number and complexity of your tools increases. + +Here are a few tips to help you get the best results: + +1. Use a model that is strong at tool calling, such as `gpt-5` or `gpt-4.1`. Weaker models will often struggle to call tools effectively and flawlessly. +1. Keep the number of tools low, e.g. to 5 or less. +1. Keep the complexity of the tool parameters low. Complex Zod schemas with many nested and optional elements, unions, etc. can be challenging for the model to work with. +1. Use semantically meaningful names for your tools, parameters, parameter properties, etc. The more information you pass to the model, the better it can understand what you want. +1. Add `.describe("...")` to your Zod schema properties to give the model hints about what a particular property is for. +1. When the output of a tool might be unclear to the model and there are dependencies between tools, use the `description` field of a tool to provide information about the output of the tool execution. +1. You can include example input/outputs of tool calls in your prompt to help the model understand how to use the tools. Keep in mind that the tools work with JSON objects, so the examples should use JSON. + +In general, the goal should be to give the model all information it needs in a clear way. + +### Tool & Structured Data Schemas + +The mapping from Zod schemas to LLM inputs (typically JSON schema) is not always straightforward, since the mapping is not one-to-one. + +#### Zod Dates + +Zod expects JavaScript Date objects, but models return dates as strings. +You can specify and validate the date format using `z.string().datetime()` or `z.string().date()`, +and then use a Zod transformer to convert the string to a Date object. + +```ts highlight="8-11" +const result = await generateText({ + model: __MODEL__, + output: Output.object({ + schema: z.object({ + events: z.array( + z.object({ + event: z.string(), + date: z + .string() + .date() + .transform(value => new Date(value)), + }), + ), + }), + }), + prompt: 'List 5 important events from the year 2000.', +}); +``` + +#### Optional Parameters + +When working with tools that have optional parameters, you may encounter compatibility issues with certain providers that use strict schema validation. + + + This is particularly relevant for OpenAI models with structured outputs + (strict mode). + + +For maximum compatibility, optional parameters should use `.nullable()` instead of `.optional()`: + +```ts highlight="6,7,16,17" +// This may fail with strict schema validation +const failingTool = tool({ + description: 'Execute a command', + inputSchema: z.object({ + command: z.string(), + workdir: z.string().optional(), // This can cause errors + timeout: z.string().optional(), + }), +}); + +// This works with strict schema validation +const workingTool = tool({ + description: 'Execute a command', + inputSchema: z.object({ + command: z.string(), + workdir: z.string().nullable(), // Use nullable instead + timeout: z.string().nullable(), + }), +}); +``` + +#### Temperature Settings + +For tool calls and object generation, it's recommended to use `temperature: 0` to ensure deterministic and consistent results: + +```ts highlight="3" +const result = await generateText({ + model: __MODEL__, + temperature: 0, // Recommended for tool calls + tools: { + myTool: tool({ + description: 'Execute a command', + inputSchema: z.object({ + command: z.string(), + }), + }), + }, + prompt: 'Execute the ls command', +}); +``` + +Lower temperature values reduce randomness in model outputs, which is particularly important when the model needs to: + +- Generate structured data with specific formats +- Make precise tool calls with correct parameters +- Follow strict schemas consistently + +## Debugging + +### Inspecting Warnings + +Not all providers support all AI SDK features. +Providers either throw exceptions or return warnings when they do not support a feature. +To check if your prompt, tools, and settings are handled correctly by the provider, you can check the call warnings: + +```ts +const result = await generateText({ + model: __MODEL__, + prompt: 'Hello, world!', +}); + +console.log(result.warnings); +``` + +### HTTP Request Bodies + +You can inspect the raw HTTP request bodies for models that expose them, e.g. [OpenAI](/providers/ai-sdk-providers/openai). +This allows you to inspect the exact payload that is sent to the model provider in the provider-specific way. + +Request bodies are available via the `request.body` property of the response: + +```ts highlight="6" +const result = await generateText({ + model: __MODEL__, + prompt: 'Hello, world!', +}); + +console.log(result.request.body); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/25-settings.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/25-settings.mdx new file mode 100644 index 000000000..f19eb3e8d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/25-settings.mdx @@ -0,0 +1,198 @@ +--- +title: Settings +description: Learn how to configure the AI SDK. +--- + +# Settings + +Large language models (LLMs) typically provide settings to augment their output. + +All AI SDK functions support the following common settings in addition to the model, the [prompt](./prompts), and additional provider-specific settings: + +```ts highlight="3-5" +const result = await generateText({ + model: __MODEL__, + maxOutputTokens: 512, + temperature: 0.3, + maxRetries: 5, + prompt: 'Invent a new holiday and describe its traditions.', +}); +``` + + + Some providers do not support all common settings. If you use a setting with a + provider that does not support it, a warning will be generated. You can check + the `warnings` property in the result object to see if any warnings were + generated. + + +### `maxOutputTokens` + +Maximum number of tokens to generate. + +### `temperature` + +Temperature setting. + +The value is passed through to the provider. The range depends on the provider and model. +For most providers, `0` means almost deterministic results, and higher values mean more randomness. + +It is recommended to set either `temperature` or `topP`, but not both. + +In AI SDK 5.0, temperature is no longer set to `0` by default. + +### `topP` + +Nucleus sampling. + +The value is passed through to the provider. The range depends on the provider and model. +For most providers, nucleus sampling is a number between 0 and 1. +E.g. 0.1 would mean that only tokens with the top 10% probability mass are considered. + +It is recommended to set either `temperature` or `topP`, but not both. + +### `topK` + +Only sample from the top K options for each subsequent token. + +Used to remove "long tail" low probability responses. +Recommended for advanced use cases only. You usually only need to use `temperature`. + +### `presencePenalty` + +The presence penalty affects the likelihood of the model to repeat information that is already in the prompt. + +The value is passed through to the provider. The range depends on the provider and model. +For most providers, `0` means no penalty. + +### `frequencyPenalty` + +The frequency penalty affects the likelihood of the model to repeatedly use the same words or phrases. + +The value is passed through to the provider. The range depends on the provider and model. +For most providers, `0` means no penalty. + +### `stopSequences` + +The stop sequences to use for stopping the text generation. + +If set, the model will stop generating text when one of the stop sequences is generated. +Providers may have limits on the number of stop sequences. + +### `seed` + +It is the seed (integer) to use for random sampling. +If set and supported by the model, calls will generate deterministic results. + +### `maxRetries` + +Maximum number of retries. Set to 0 to disable retries. Default: `2`. + +### `abortSignal` + +An optional abort signal that can be used to cancel the call. + +The abort signal can e.g. be forwarded from a user interface to cancel the call, +or to define a timeout using `AbortSignal.timeout`. + +#### Example: AbortSignal.timeout + +```ts +const result = await generateText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', + abortSignal: AbortSignal.timeout(5000), // 5 seconds +}); +``` + +### `timeout` + +An optional timeout in milliseconds. The call will be aborted if it takes longer than the specified duration. + +This is a convenience parameter that creates an abort signal internally. It can be used alongside `abortSignal` - if both are provided, the call will abort when either condition is met. + +You can specify the timeout either as a number (milliseconds) or as an object with `totalMs`, `stepMs`, and/or `chunkMs` properties: + +- `totalMs`: The total timeout for the entire call including all steps. +- `stepMs`: The timeout for each individual step (LLM call). This is useful for multi-step generations where you want to limit the time spent on each step independently. +- `chunkMs`: The timeout between stream chunks (streaming only). The call will abort if no new chunk is received within this duration. This is useful for detecting stalled streams. + +#### Example: 5 second timeout (number format) + +```ts +const result = await generateText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', + timeout: 5000, // 5 seconds +}); +``` + +#### Example: 5 second total timeout (object format) + +```ts +const result = await generateText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', + timeout: { totalMs: 5000 }, // 5 seconds +}); +``` + +#### Example: 10 second step timeout + +```ts +const result = await generateText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', + timeout: { stepMs: 10000 }, // 10 seconds per step +}); +``` + +#### Example: Combined total and step timeout + +```ts +const result = await generateText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', + timeout: { + totalMs: 60000, // 60 seconds total + stepMs: 10000, // 10 seconds per step + }, +}); +``` + +#### Example: Per-chunk timeout for streaming (streamText only) + +```ts +const result = streamText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', + timeout: { chunkMs: 5000 }, // abort if no chunk received for 5 seconds +}); +``` + +### `headers` + +Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers. + +You can use the request headers to provide additional information to the provider, +depending on what the provider supports. For example, some observability providers support +headers such as `Prompt-Id`. + +```ts +import { generateText } from 'ai'; +__PROVIDER_IMPORT__; + +const result = await generateText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', + headers: { + 'Prompt-Id': 'my-prompt-id', + }, +}); +``` + + + The `headers` setting is for request-specific headers. You can also set + `headers` in the provider configuration. These headers will be sent with every + request made by the provider. + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/30-embeddings.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/30-embeddings.mdx new file mode 100644 index 000000000..fabf47b99 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/30-embeddings.mdx @@ -0,0 +1,246 @@ +--- +title: Embeddings +description: Learn how to embed values with the AI SDK. +--- + +# Embeddings + +Embeddings are a way to represent words, phrases, or images as vectors in a high-dimensional space. +In this space, similar words are close to each other, and the distance between words can be used to measure their similarity. + +## Embedding a Single Value + +The AI SDK provides the [`embed`](/docs/reference/ai-sdk-core/embed) function to embed single values, which is useful for tasks such as finding similar words +or phrases or clustering text. +You can use it with embeddings models, e.g. `openai.embeddingModel('text-embedding-3-large')` or `mistral.embeddingModel('mistral-embed')`. + +```tsx +import { embed } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +// 'embedding' is a single embedding object (number[]) +const { embedding } = await embed({ + model: 'openai/text-embedding-3-small', + value: 'sunny day at the beach', +}); +``` + +## Embedding Many Values + +When loading data, e.g. when preparing a data store for retrieval-augmented generation (RAG), +it is often useful to embed many values at once (batch embedding). + +The AI SDK provides the [`embedMany`](/docs/reference/ai-sdk-core/embed-many) function for this purpose. +Similar to `embed`, you can use it with embeddings models, +e.g. `openai.embeddingModel('text-embedding-3-large')` or `mistral.embeddingModel('mistral-embed')`. + +```tsx +import { openai } from '@ai-sdk/openai'; +import { embedMany } from 'ai'; + +// 'embeddings' is an array of embedding objects (number[][]). +// It is sorted in the same order as the input values. +const { embeddings } = await embedMany({ + model: 'openai/text-embedding-3-small', + values: [ + 'sunny day at the beach', + 'rainy afternoon in the city', + 'snowy night in the mountains', + ], +}); +``` + +## Embedding Similarity + +After embedding values, you can calculate the similarity between them using the [`cosineSimilarity`](/docs/reference/ai-sdk-core/cosine-similarity) function. +This is useful to e.g. find similar words or phrases in a dataset. +You can also rank and filter related items based on their similarity. + +```ts highlight={"2,10"} +import { openai } from '@ai-sdk/openai'; +import { cosineSimilarity, embedMany } from 'ai'; + +const { embeddings } = await embedMany({ + model: 'openai/text-embedding-3-small', + values: ['sunny day at the beach', 'rainy afternoon in the city'], +}); + +console.log( + `cosine similarity: ${cosineSimilarity(embeddings[0], embeddings[1])}`, +); +``` + +## Token Usage + +Many providers charge based on the number of tokens used to generate embeddings. +Both `embed` and `embedMany` provide token usage information in the `usage` property of the result object: + +```ts highlight={"4,9"} +import { openai } from '@ai-sdk/openai'; +import { embed } from 'ai'; + +const { embedding, usage } = await embed({ + model: 'openai/text-embedding-3-small', + value: 'sunny day at the beach', +}); + +console.log(usage); // { tokens: 10 } +``` + +## Settings + +### Provider Options + +Embedding model settings can be configured using `providerOptions` for provider-specific parameters: + +```ts highlight={"5-9"} +import { openai } from '@ai-sdk/openai'; +import { embed } from 'ai'; + +const { embedding } = await embed({ + model: 'openai/text-embedding-3-small', + value: 'sunny day at the beach', + providerOptions: { + openai: { + dimensions: 512, // Reduce embedding dimensions + }, + }, +}); +``` + +### Parallel Requests + +The `embedMany` function now supports parallel processing with configurable `maxParallelCalls` to optimize performance: + +```ts highlight={"4"} +import { openai } from '@ai-sdk/openai'; +import { embedMany } from 'ai'; + +const { embeddings, usage } = await embedMany({ + maxParallelCalls: 2, // Limit parallel requests + model: 'openai/text-embedding-3-small', + values: [ + 'sunny day at the beach', + 'rainy afternoon in the city', + 'snowy night in the mountains', + ], +}); +``` + +### Retries + +Both `embed` and `embedMany` accept an optional `maxRetries` parameter of type `number` +that you can use to set the maximum number of retries for the embedding process. +It defaults to `2` retries (3 attempts in total). You can set it to `0` to disable retries. + +```ts highlight={"7"} +import { openai } from '@ai-sdk/openai'; +import { embed } from 'ai'; + +const { embedding } = await embed({ + model: 'openai/text-embedding-3-small', + value: 'sunny day at the beach', + maxRetries: 0, // Disable retries +}); +``` + +### Abort Signals and Timeouts + +Both `embed` and `embedMany` accept an optional `abortSignal` parameter of +type [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) +that you can use to abort the embedding process or set a timeout. + +```ts highlight={"7"} +import { openai } from '@ai-sdk/openai'; +import { embed } from 'ai'; + +const { embedding } = await embed({ + model: 'openai/text-embedding-3-small', + value: 'sunny day at the beach', + abortSignal: AbortSignal.timeout(1000), // Abort after 1 second +}); +``` + +### Custom Headers + +Both `embed` and `embedMany` accept an optional `headers` parameter of type `Record` +that you can use to add custom headers to the embedding request. + +```ts highlight={"7"} +import { openai } from '@ai-sdk/openai'; +import { embed } from 'ai'; + +const { embedding } = await embed({ + model: 'openai/text-embedding-3-small', + value: 'sunny day at the beach', + headers: { 'X-Custom-Header': 'custom-value' }, +}); +``` + +## Response Information + +Both `embed` and `embedMany` return response information that includes the raw provider response: + +```ts highlight={"4,9"} +import { openai } from '@ai-sdk/openai'; +import { embed } from 'ai'; + +const { embedding, response } = await embed({ + model: 'openai/text-embedding-3-small', + value: 'sunny day at the beach', +}); + +console.log(response); // Raw provider response +``` + +## Embedding Middleware + +You can enhance embedding models, e.g. to set default values, using +`wrapEmbeddingModel` and `EmbeddingModelMiddleware`. + +Here is an example that uses the built-in `defaultEmbeddingSettingsMiddleware`: + +```ts +import { + defaultEmbeddingSettingsMiddleware, + embed, + wrapEmbeddingModel, + gateway, +} from 'ai'; + +const embeddingModelWithDefaults = wrapEmbeddingModel({ + model: gateway.embeddingModel('google/gemini-embedding-001'), + middleware: defaultEmbeddingSettingsMiddleware({ + settings: { + providerOptions: { + google: { + outputDimensionality: 256, + taskType: 'CLASSIFICATION', + }, + }, + }, + }), +}); +``` + +## Embedding Providers & Models + +Several providers offer embedding models: + +| Provider | Model | Embedding Dimensions | Multimodal | +| ----------------------------------------------------------------------------------------- | ------------------------------- | -------------------- | ------------------- | +| [OpenAI](/providers/ai-sdk-providers/openai#embedding-models) | `text-embedding-3-large` | 3072 | | +| [OpenAI](/providers/ai-sdk-providers/openai#embedding-models) | `text-embedding-3-small` | 1536 | | +| [OpenAI](/providers/ai-sdk-providers/openai#embedding-models) | `text-embedding-ada-002` | 1536 | | +| [Google Generative AI](/providers/ai-sdk-providers/google-generative-ai#embedding-models) | `gemini-embedding-001` | 3072 | | +| [Google Generative AI](/providers/ai-sdk-providers/google-generative-ai#embedding-models) | `gemini-embedding-2-preview` | 3072 | | +| [Mistral](/providers/ai-sdk-providers/mistral#embedding-models) | `mistral-embed` | 1024 | | +| [Cohere](/providers/ai-sdk-providers/cohere#embedding-models) | `embed-english-v3.0` | 1024 | | +| [Cohere](/providers/ai-sdk-providers/cohere#embedding-models) | `embed-multilingual-v3.0` | 1024 | | +| [Cohere](/providers/ai-sdk-providers/cohere#embedding-models) | `embed-english-light-v3.0` | 384 | | +| [Cohere](/providers/ai-sdk-providers/cohere#embedding-models) | `embed-multilingual-light-v3.0` | 384 | | +| [Cohere](/providers/ai-sdk-providers/cohere#embedding-models) | `embed-english-v2.0` | 4096 | | +| [Cohere](/providers/ai-sdk-providers/cohere#embedding-models) | `embed-english-light-v2.0` | 1024 | | +| [Cohere](/providers/ai-sdk-providers/cohere#embedding-models) | `embed-multilingual-v2.0` | 768 | | +| [Amazon Bedrock](/providers/ai-sdk-providers/amazon-bedrock#embedding-models) | `amazon.titan-embed-text-v1` | 1536 | | +| [Amazon Bedrock](/providers/ai-sdk-providers/amazon-bedrock#embedding-models) | `amazon.titan-embed-text-v2:0` | 1024 | | diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/31-reranking.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/31-reranking.mdx new file mode 100644 index 000000000..533e0a956 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/31-reranking.mdx @@ -0,0 +1,218 @@ +--- +title: Reranking +description: Learn how to rerank documents with the AI SDK. +--- + +# Reranking + +Reranking is a technique used to improve search relevance by reordering a set of documents based on their relevance to a query. +Unlike embedding-based similarity search, reranking models are specifically trained to understand the relationship between queries and documents, +often producing more accurate relevance scores. + +## Reranking Documents + +The AI SDK provides the [`rerank`](/docs/reference/ai-sdk-core/rerank) function to rerank documents based on their relevance to a query. +You can use it with reranking models, e.g. `cohere.reranking('rerank-v3.5')` or `bedrock.reranking('cohere.rerank-v3-5:0')`. + +```tsx +import { rerank } from 'ai'; +import { cohere } from '@ai-sdk/cohere'; + +const documents = [ + 'sunny day at the beach', + 'rainy afternoon in the city', + 'snowy night in the mountains', +]; + +const { ranking } = await rerank({ + model: cohere.reranking('rerank-v3.5'), + documents, + query: 'talk about rain', + topN: 2, // Return top 2 most relevant documents +}); + +console.log(ranking); +// [ +// { originalIndex: 1, score: 0.9, document: 'rainy afternoon in the city' }, +// { originalIndex: 0, score: 0.3, document: 'sunny day at the beach' } +// ] +``` + +## Working with Object Documents + +Reranking also supports structured documents (JSON objects), making it ideal for searching through databases, emails, or other structured content: + +```tsx +import { rerank } from 'ai'; +import { cohere } from '@ai-sdk/cohere'; + +const documents = [ + { + from: 'Paul Doe', + subject: 'Follow-up', + text: 'We are happy to give you a discount of 20% on your next order.', + }, + { + from: 'John McGill', + subject: 'Missing Info', + text: 'Sorry, but here is the pricing information from Oracle: $5000/month', + }, +]; + +const { ranking, rerankedDocuments } = await rerank({ + model: cohere.reranking('rerank-v3.5'), + documents, + query: 'Which pricing did we get from Oracle?', + topN: 1, +}); + +console.log(rerankedDocuments[0]); +// { from: 'John McGill', subject: 'Missing Info', text: '...' } +``` + +## Understanding the Results + +The `rerank` function returns a comprehensive result object: + +```ts +import { cohere } from '@ai-sdk/cohere'; +import { rerank } from 'ai'; + +const { ranking, rerankedDocuments, originalDocuments } = await rerank({ + model: cohere.reranking('rerank-v3.5'), + documents: ['sunny day at the beach', 'rainy afternoon in the city'], + query: 'talk about rain', +}); + +// ranking: sorted array of { originalIndex, score, document } +// rerankedDocuments: documents sorted by relevance (convenience property) +// originalDocuments: original documents array +``` + +Each item in the `ranking` array contains: + +- `originalIndex`: Position in the original documents array +- `score`: Relevance score (typically 0-1, where higher is more relevant) +- `document`: The original document + +## Settings + +### Top-N Results + +Use `topN` to limit the number of results returned. This is useful for retrieving only the most relevant documents: + +```ts highlight={"7"} +import { cohere } from '@ai-sdk/cohere'; +import { rerank } from 'ai'; + +const { ranking } = await rerank({ + model: cohere.reranking('rerank-v3.5'), + documents: ['doc1', 'doc2', 'doc3', 'doc4', 'doc5'], + query: 'relevant information', + topN: 3, // Return only top 3 most relevant documents +}); +``` + +### Provider Options + +Reranking model settings can be configured using `providerOptions` for provider-specific parameters: + +```ts highlight={"8-12"} +import { cohere } from '@ai-sdk/cohere'; +import { rerank } from 'ai'; + +const { ranking } = await rerank({ + model: cohere.reranking('rerank-v3.5'), + documents: ['sunny day at the beach', 'rainy afternoon in the city'], + query: 'talk about rain', + providerOptions: { + cohere: { + maxTokensPerDoc: 1000, // Limit tokens per document + }, + }, +}); +``` + +### Retries + +The `rerank` function accepts an optional `maxRetries` parameter of type `number` +that you can use to set the maximum number of retries for the reranking process. +It defaults to `2` retries (3 attempts in total). You can set it to `0` to disable retries. + +```ts highlight={"7"} +import { cohere } from '@ai-sdk/cohere'; +import { rerank } from 'ai'; + +const { ranking } = await rerank({ + model: cohere.reranking('rerank-v3.5'), + documents: ['sunny day at the beach', 'rainy afternoon in the city'], + query: 'talk about rain', + maxRetries: 0, // Disable retries +}); +``` + +### Abort Signals and Timeouts + +The `rerank` function accepts an optional `abortSignal` parameter of +type [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) +that you can use to abort the reranking process or set a timeout. + +```ts highlight={"7"} +import { cohere } from '@ai-sdk/cohere'; +import { rerank } from 'ai'; + +const { ranking } = await rerank({ + model: cohere.reranking('rerank-v3.5'), + documents: ['sunny day at the beach', 'rainy afternoon in the city'], + query: 'talk about rain', + abortSignal: AbortSignal.timeout(5000), // Abort after 5 seconds +}); +``` + +### Custom Headers + +The `rerank` function accepts an optional `headers` parameter of type `Record` +that you can use to add custom headers to the reranking request. + +```ts highlight={"7"} +import { cohere } from '@ai-sdk/cohere'; +import { rerank } from 'ai'; + +const { ranking } = await rerank({ + model: cohere.reranking('rerank-v3.5'), + documents: ['sunny day at the beach', 'rainy afternoon in the city'], + query: 'talk about rain', + headers: { 'X-Custom-Header': 'custom-value' }, +}); +``` + +## Response Information + +The `rerank` function returns response information that includes the raw provider response: + +```ts highlight={"4,10"} +import { cohere } from '@ai-sdk/cohere'; +import { rerank } from 'ai'; + +const { ranking, response } = await rerank({ + model: cohere.reranking('rerank-v3.5'), + documents: ['sunny day at the beach', 'rainy afternoon in the city'], + query: 'talk about rain', +}); + +console.log(response); // { id, timestamp, modelId, headers, body } +``` + +## Reranking Providers & Models + +Several providers offer reranking models: + +| Provider | Model | +| ----------------------------------------------------------------------------- | ------------------------------------- | +| [Cohere](/providers/ai-sdk-providers/cohere#reranking-models) | `rerank-v3.5` | +| [Cohere](/providers/ai-sdk-providers/cohere#reranking-models) | `rerank-english-v3.0` | +| [Cohere](/providers/ai-sdk-providers/cohere#reranking-models) | `rerank-multilingual-v3.0` | +| [Amazon Bedrock](/providers/ai-sdk-providers/amazon-bedrock#reranking-models) | `amazon.rerank-v1:0` | +| [Amazon Bedrock](/providers/ai-sdk-providers/amazon-bedrock#reranking-models) | `cohere.rerank-v3-5:0` | +| [Together.ai](/providers/ai-sdk-providers/togetherai#reranking-models) | `Salesforce/Llama-Rank-v1` | +| [Together.ai](/providers/ai-sdk-providers/togetherai#reranking-models) | `mixedbread-ai/Mxbai-Rerank-Large-V2` | diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/35-image-generation.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/35-image-generation.mdx new file mode 100644 index 000000000..0b1f99acb --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/35-image-generation.mdx @@ -0,0 +1,341 @@ +--- +title: Image Generation +description: Learn how to generate images with the AI SDK. +--- + +# Image Generation + +The AI SDK provides the [`generateImage`](/docs/reference/ai-sdk-core/generate-image) +function to generate images based on a given prompt using an image model. + +```tsx +import { generateImage } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const { image } = await generateImage({ + model: openai.image('dall-e-3'), + prompt: 'Santa Claus driving a Cadillac', +}); +``` + +You can access the image data using the `base64` or `uint8Array` properties: + +```tsx +const base64 = image.base64; // base64 image data +const uint8Array = image.uint8Array; // Uint8Array image data +``` + +## Settings + +### Size and Aspect Ratio + +Depending on the model, you can either specify the size or the aspect ratio. + +##### Size + +The size is specified as a string in the format `{width}x{height}`. +Models only support a few sizes, and the supported sizes are different for each model and provider. + +```tsx highlight={"7"} +import { generateImage } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const { image } = await generateImage({ + model: openai.image('dall-e-3'), + prompt: 'Santa Claus driving a Cadillac', + size: '1024x1024', +}); +``` + +##### Aspect Ratio + +The aspect ratio is specified as a string in the format `{width}:{height}`. +Models only support a few aspect ratios, and the supported aspect ratios are different for each model and provider. + +```tsx highlight={"7"} +import { generateImage } from 'ai'; +import { vertex } from '@ai-sdk/google-vertex'; + +const { image } = await generateImage({ + model: vertex.image('imagen-4.0-generate-001'), + prompt: 'Santa Claus driving a Cadillac', + aspectRatio: '16:9', +}); +``` + +### Generating Multiple Images + +`generateImage` also supports generating multiple images at once: + +```tsx highlight={"7"} +import { generateImage } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const { images } = await generateImage({ + model: openai.image('dall-e-2'), + prompt: 'Santa Claus driving a Cadillac', + n: 4, // number of images to generate +}); +``` + + + `generateImage` will automatically call the model as often as needed (in + parallel) to generate the requested number of images. + + +Each image model has an internal limit on how many images it can generate in a single API call. The AI SDK manages this automatically by batching requests appropriately when you request multiple images using the `n` parameter. By default, the SDK uses provider-documented limits (for example, DALL-E 3 can only generate 1 image per call, while DALL-E 2 supports up to 10). + +If needed, you can override this behavior using the `maxImagesPerCall` setting when generating your image. This is particularly useful when working with new or custom models where the default batch size might not be optimal: + +```tsx +const { images } = await generateImage({ + model: openai.image('dall-e-2'), + prompt: 'Santa Claus driving a Cadillac', + maxImagesPerCall: 5, // Override the default batch size + n: 10, // Will make 2 calls of 5 images each +}); +``` + +### Providing a Seed + +You can provide a seed to the `generateImage` function to control the output of the image generation process. +If supported by the model, the same seed will always produce the same image. + +```tsx highlight={"7"} +import { generateImage } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const { image } = await generateImage({ + model: openai.image('dall-e-3'), + prompt: 'Santa Claus driving a Cadillac', + seed: 1234567890, +}); +``` + +### Provider-specific Settings + +Image models often have provider- or even model-specific settings. +You can pass such settings to the `generateImage` function +using the `providerOptions` parameter. The options for the provider +(`openai` in the example below) become request body properties. + +```tsx highlight={"9"} +import { generateImage } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const { image } = await generateImage({ + model: openai.image('dall-e-3'), + prompt: 'Santa Claus driving a Cadillac', + size: '1024x1024', + providerOptions: { + openai: { style: 'vivid', quality: 'hd' }, + }, +}); +``` + +### Abort Signals and Timeouts + +`generateImage` accepts an optional `abortSignal` parameter of +type [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) +that you can use to abort the image generation process or set a timeout. + +```ts highlight={"7"} +import { openai } from '@ai-sdk/openai'; +import { generateImage } from 'ai'; + +const { image } = await generateImage({ + model: openai.image('dall-e-3'), + prompt: 'Santa Claus driving a Cadillac', + abortSignal: AbortSignal.timeout(1000), // Abort after 1 second +}); +``` + +### Custom Headers + +`generateImage` accepts an optional `headers` parameter of type `Record` +that you can use to add custom headers to the image generation request. + +```ts highlight={"7"} +import { openai } from '@ai-sdk/openai'; +import { generateImage } from 'ai'; + +const { image } = await generateImage({ + model: openai.image('dall-e-3'), + prompt: 'Santa Claus driving a Cadillac', + headers: { 'X-Custom-Header': 'custom-value' }, +}); +``` + +### Warnings + +If the model returns warnings, e.g. for unsupported parameters, they will be available in the `warnings` property of the response. + +```tsx +const { image, warnings } = await generateImage({ + model: openai.image('dall-e-3'), + prompt: 'Santa Claus driving a Cadillac', +}); +``` + +### Additional provider-specific meta data + +Some providers expose additional meta data for the result overall or per image. + +```tsx +const prompt = 'Santa Claus driving a Cadillac'; + +const { image, providerMetadata } = await generateImage({ + model: openai.image('dall-e-3'), + prompt, +}); + +const revisedPrompt = providerMetadata.openai.images[0]?.revisedPrompt; + +console.log({ + prompt, + revisedPrompt, +}); +``` + +The outer key of the returned `providerMetadata` is the provider name. The inner values are the metadata. An `images` key is always present in the metadata and is an array with the same length as the top level `images` key. + +### Error Handling + +When `generateImage` cannot generate a valid image, it throws a [`AI_NoImageGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-image-generated-error). + +This error occurs when the AI provider fails to generate an image. It can arise due to the following reasons: + +- The model failed to generate a response +- The model generated a response that could not be parsed + +The error preserves the following information to help you log the issue: + +- `responses`: Metadata about the image model responses, including timestamp, model, and headers. +- `cause`: The cause of the error. You can use this for more detailed error handling + +```ts +import { generateImage, NoImageGeneratedError } from 'ai'; + +try { + await generateImage({ model, prompt }); +} catch (error) { + if (NoImageGeneratedError.isInstance(error)) { + console.log('NoImageGeneratedError'); + console.log('Cause:', error.cause); + console.log('Responses:', error.responses); + } +} +``` + +## Image Middleware + +You can enhance image models, e.g. to set default values or implement logging, using +`wrapImageModel` and `ImageModelV3Middleware`. + +Here is an example that sets a default size when none is provided: + +```ts +import { generateImage, wrapImageModel } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const model = wrapImageModel({ + model: openai.image('gpt-image-1'), + middleware: { + specificationVersion: 'v3', + transformParams: async ({ params }) => ({ + ...params, + size: params.size ?? '1024x1024', + }), + }, +}); + +const { image } = await generateImage({ + model, + prompt: 'Santa Claus driving a Cadillac', +}); +``` + +## Generating Images with Language Models + +Some language models such as Google `gemini-2.5-flash-image` support multi-modal outputs including images. +With such models, you can access the generated images using the `files` property of the response. + +```ts +import { google } from '@ai-sdk/google'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: google('gemini-2.5-flash-image'), + prompt: 'Generate an image of a comic cat', +}); + +for (const file of result.files) { + if (file.mediaType.startsWith('image/')) { + // The file object provides multiple data formats: + // Access images as base64 string, Uint8Array binary data, or check type + // - file.base64: string (data URL format) + // - file.uint8Array: Uint8Array (binary data) + // - file.mediaType: string (e.g. "image/png") + } +} +``` + +## Image Models + +| Provider | Model | Support sizes (`width x height`) or aspect ratios (`width : height`) | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [xAI Grok](/providers/ai-sdk-providers/xai#image-models) | `grok-imagine-image` | `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3`, `2:1`, `1:2`, `19.5:9`, `9:19.5`, `20:9`, `9:20`, `auto` | +| [OpenAI](/providers/ai-sdk-providers/openai#image-models) | `gpt-image-1` | 1024x1024, 1536x1024, 1024x1536 | +| [OpenAI](/providers/ai-sdk-providers/openai#image-models) | `dall-e-3` | 1024x1024, 1792x1024, 1024x1792 | +| [OpenAI](/providers/ai-sdk-providers/openai#image-models) | `dall-e-2` | 256x256, 512x512, 1024x1024 | +| [Amazon Bedrock](/providers/ai-sdk-providers/amazon-bedrock#image-models) | `amazon.nova-canvas-v1:0` | 320-4096 (multiples of 16), 1:4 to 4:1, max 4.2M pixels | +| [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/flux/dev` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 | +| [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/flux-lora` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 | +| [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/fast-sdxl` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 | +| [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/flux-pro/v1.1-ultra` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 | +| [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/ideogram/v2` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 | +| [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/recraft-v3` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 | +| [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/stable-diffusion-3.5-large` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 | +| [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/hyper-sdxl` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 | +| [DeepInfra](/providers/ai-sdk-providers/deepinfra#image-models) | `stabilityai/sd3.5` | 1:1, 16:9, 1:9, 3:2, 2:3, 4:5, 5:4, 9:16, 9:21 | +| [DeepInfra](/providers/ai-sdk-providers/deepinfra#image-models) | `black-forest-labs/FLUX-1.1-pro` | 256-1440 (multiples of 32) | +| [DeepInfra](/providers/ai-sdk-providers/deepinfra#image-models) | `black-forest-labs/FLUX-1-schnell` | 256-1440 (multiples of 32) | +| [DeepInfra](/providers/ai-sdk-providers/deepinfra#image-models) | `black-forest-labs/FLUX-1-dev` | 256-1440 (multiples of 32) | +| [DeepInfra](/providers/ai-sdk-providers/deepinfra#image-models) | `black-forest-labs/FLUX-pro` | 256-1440 (multiples of 32) | +| [DeepInfra](/providers/ai-sdk-providers/deepinfra#image-models) | `stabilityai/sd3.5-medium` | 1:1, 16:9, 1:9, 3:2, 2:3, 4:5, 5:4, 9:16, 9:21 | +| [DeepInfra](/providers/ai-sdk-providers/deepinfra#image-models) | `stabilityai/sdxl-turbo` | 1:1, 16:9, 1:9, 3:2, 2:3, 4:5, 5:4, 9:16, 9:21 | +| [Replicate](/providers/ai-sdk-providers/replicate) | `black-forest-labs/flux-schnell` | 1:1, 2:3, 3:2, 4:5, 5:4, 16:9, 9:16, 9:21, 21:9 | +| [Replicate](/providers/ai-sdk-providers/replicate) | `recraft-ai/recraft-v3` | 1024x1024, 1365x1024, 1024x1365, 1536x1024, 1024x1536, 1820x1024, 1024x1820, 1024x2048, 2048x1024, 1434x1024, 1024x1434, 1024x1280, 1280x1024, 1024x1707, 1707x1024 | +| [Google](/providers/ai-sdk-providers/google-generative-ai#image-models) | `imagen-4.0-generate-001` | 1:1, 3:4, 4:3, 9:16, 16:9 | +| [Google](/providers/ai-sdk-providers/google-generative-ai#image-models) | `imagen-4.0-fast-generate-001` | 1:1, 3:4, 4:3, 9:16, 16:9 | +| [Google](/providers/ai-sdk-providers/google-generative-ai#image-models) | `imagen-4.0-ultra-generate-001` | 1:1, 3:4, 4:3, 9:16, 16:9 | +| [Google Vertex](/providers/ai-sdk-providers/google-vertex#image-models) | `imagen-4.0-generate-001` | 1:1, 3:4, 4:3, 9:16, 16:9 | +| [Google Vertex](/providers/ai-sdk-providers/google-vertex#image-models) | `imagen-4.0-fast-generate-001` | 1:1, 3:4, 4:3, 9:16, 16:9 | +| [Google Vertex](/providers/ai-sdk-providers/google-vertex#image-models) | `imagen-4.0-ultra-generate-001` | 1:1, 3:4, 4:3, 9:16, 16:9 | +| [Google Vertex](/providers/ai-sdk-providers/google-vertex#image-models) | `imagen-3.0-fast-generate-001` | 1:1, 3:4, 4:3, 9:16, 16:9 | +| [Fireworks](/providers/ai-sdk-providers/fireworks#image-models) | `accounts/fireworks/models/flux-1-dev-fp8` | 1:1, 2:3, 3:2, 4:5, 5:4, 16:9, 9:16, 9:21, 21:9 | +| [Fireworks](/providers/ai-sdk-providers/fireworks#image-models) | `accounts/fireworks/models/flux-1-schnell-fp8` | 1:1, 2:3, 3:2, 4:5, 5:4, 16:9, 9:16, 9:21, 21:9 | +| [Fireworks](/providers/ai-sdk-providers/fireworks#image-models) | `accounts/fireworks/models/playground-v2-5-1024px-aesthetic` | 640x1536, 768x1344, 832x1216, 896x1152, 1024x1024, 1152x896, 1216x832, 1344x768, 1536x640 | +| [Fireworks](/providers/ai-sdk-providers/fireworks#image-models) | `accounts/fireworks/models/japanese-stable-diffusion-xl` | 640x1536, 768x1344, 832x1216, 896x1152, 1024x1024, 1152x896, 1216x832, 1344x768, 1536x640 | +| [Fireworks](/providers/ai-sdk-providers/fireworks#image-models) | `accounts/fireworks/models/playground-v2-1024px-aesthetic` | 640x1536, 768x1344, 832x1216, 896x1152, 1024x1024, 1152x896, 1216x832, 1344x768, 1536x640 | +| [Fireworks](/providers/ai-sdk-providers/fireworks#image-models) | `accounts/fireworks/models/SSD-1B` | 640x1536, 768x1344, 832x1216, 896x1152, 1024x1024, 1152x896, 1216x832, 1344x768, 1536x640 | +| [Fireworks](/providers/ai-sdk-providers/fireworks#image-models) | `accounts/fireworks/models/stable-diffusion-xl-1024-v1-0` | 640x1536, 768x1344, 832x1216, 896x1152, 1024x1024, 1152x896, 1216x832, 1344x768, 1536x640 | +| [Luma](/providers/ai-sdk-providers/luma#image-models) | `photon-1` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 | +| [Luma](/providers/ai-sdk-providers/luma#image-models) | `photon-flash-1` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 | +| [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `stabilityai/stable-diffusion-xl-base-1.0` | 512x512, 768x768, 1024x1024 | +| [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-dev` | 512x512, 768x768, 1024x1024 | +| [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-dev-lora` | 512x512, 768x768, 1024x1024 | +| [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-schnell` | 512x512, 768x768, 1024x1024 | +| [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-canny` | 512x512, 768x768, 1024x1024 | +| [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-depth` | 512x512, 768x768, 1024x1024 | +| [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-redux` | 512x512, 768x768, 1024x1024 | +| [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1.1-pro` | 512x512, 768x768, 1024x1024 | +| [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-pro` | 512x512, 768x768, 1024x1024 | +| [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-schnell-Free` | 512x512, 768x768, 1024x1024 | +| [Black Forest Labs](/providers/ai-sdk-providers/black-forest-labs#image-models) | `flux-kontext-pro` | From 3:7 (portrait) to 7:3 (landscape) | +| [Black Forest Labs](/providers/ai-sdk-providers/black-forest-labs#image-models) | `flux-kontext-max` | From 3:7 (portrait) to 7:3 (landscape) | +| [Black Forest Labs](/providers/ai-sdk-providers/black-forest-labs#image-models) | `flux-pro-1.1-ultra` | From 3:7 (portrait) to 7:3 (landscape) | +| [Black Forest Labs](/providers/ai-sdk-providers/black-forest-labs#image-models) | `flux-pro-1.1` | From 3:7 (portrait) to 7:3 (landscape) | +| [Black Forest Labs](/providers/ai-sdk-providers/black-forest-labs#image-models) | `flux-pro-1.0-fill` | From 3:7 (portrait) to 7:3 (landscape) | + +Above are a small subset of the image models supported by the AI SDK providers. For more, see the respective provider documentation. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/36-transcription.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/36-transcription.mdx new file mode 100644 index 000000000..cb09365b8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/36-transcription.mdx @@ -0,0 +1,227 @@ +--- +title: Transcription +description: Learn how to transcribe audio with the AI SDK. +--- + +# Transcription + +Transcription is an experimental feature. + +The AI SDK provides the [`transcribe`](/docs/reference/ai-sdk-core/transcribe) +function to transcribe audio using a transcription model. + +```ts +import { experimental_transcribe as transcribe } from 'ai'; +import { openai } from '@ai-sdk/openai'; +import { readFile } from 'fs/promises'; + +const transcript = await transcribe({ + model: openai.transcription('whisper-1'), + audio: await readFile('audio.mp3'), +}); +``` + +The `audio` property can be a `Uint8Array`, `ArrayBuffer`, `Buffer`, `string` (base64 encoded audio data), or a `URL`. + +To access the generated transcript: + +```ts +const text = transcript.text; // transcript text e.g. "Hello, world!" +const segments = transcript.segments; // array of segments with start and end times, if available +const language = transcript.language; // language of the transcript e.g. "en", if available +const durationInSeconds = transcript.durationInSeconds; // duration of the transcript in seconds, if available +``` + +## Settings + +### Provider-Specific settings + +Transcription models often have provider or model-specific settings which you can set using the `providerOptions` parameter. + +```ts highlight="8-12" +import { experimental_transcribe as transcribe } from 'ai'; +import { openai } from '@ai-sdk/openai'; +import { readFile } from 'fs/promises'; + +const transcript = await transcribe({ + model: openai.transcription('whisper-1'), + audio: await readFile('audio.mp3'), + providerOptions: { + openai: { + timestampGranularities: ['word'], + }, + }, +}); +``` + +### Download Size Limits + +When `audio` is a URL, the SDK downloads the file with a default **2 GiB** size limit. +You can customize this using `createDownload`: + +```ts highlight="1,8" +import { experimental_transcribe as transcribe, createDownload } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const transcript = await transcribe({ + model: openai.transcription('whisper-1'), + audio: new URL('https://example.com/audio.mp3'), + download: createDownload({ maxBytes: 50 * 1024 * 1024 }), // 50 MB limit +}); +``` + +You can also provide a fully custom download function: + +```ts highlight="6-12" +import { experimental_transcribe as transcribe } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const transcript = await transcribe({ + model: openai.transcription('whisper-1'), + audio: new URL('https://example.com/audio.mp3'), + download: async ({ url }) => { + const res = await myAuthenticatedFetch(url); + return { + data: new Uint8Array(await res.arrayBuffer()), + mediaType: res.headers.get('content-type') ?? undefined, + }; + }, +}); +``` + +If a download exceeds the size limit, a `DownloadError` is thrown: + +```ts +import { experimental_transcribe as transcribe, DownloadError } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +try { + await transcribe({ + model: openai.transcription('whisper-1'), + audio: new URL('https://example.com/audio.mp3'), + }); +} catch (error) { + if (DownloadError.isInstance(error)) { + console.log('Download failed:', error.message); + } +} +``` + +### Abort Signals and Timeouts + +`transcribe` accepts an optional `abortSignal` parameter of +type [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) +that you can use to abort the transcription process or set a timeout. + +This is particularly useful when combined with URL downloads to prevent long-running requests: + +```ts highlight="8" +import { openai } from '@ai-sdk/openai'; +import { experimental_transcribe as transcribe } from 'ai'; + +const transcript = await transcribe({ + model: openai.transcription('whisper-1'), + audio: new URL('https://example.com/audio.mp3'), + abortSignal: AbortSignal.timeout(5000), // Abort after 5 seconds +}); +``` + +### Custom Headers + +`transcribe` accepts an optional `headers` parameter of type `Record` +that you can use to add custom headers to the transcription request. + +```ts highlight="8" +import { openai } from '@ai-sdk/openai'; +import { experimental_transcribe as transcribe } from 'ai'; +import { readFile } from 'fs/promises'; + +const transcript = await transcribe({ + model: openai.transcription('whisper-1'), + audio: await readFile('audio.mp3'), + headers: { 'X-Custom-Header': 'custom-value' }, +}); +``` + +### Warnings + +Warnings (e.g. unsupported parameters) are available on the `warnings` property. + +```ts +import { openai } from '@ai-sdk/openai'; +import { experimental_transcribe as transcribe } from 'ai'; +import { readFile } from 'fs/promises'; + +const transcript = await transcribe({ + model: openai.transcription('whisper-1'), + audio: await readFile('audio.mp3'), +}); + +const warnings = transcript.warnings; +``` + +### Error Handling + +When `transcribe` cannot generate a valid transcript, it throws a [`AI_NoTranscriptGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-transcript-generated-error). + +This error can arise for any of the following reasons: + +- The model failed to generate a response +- The model generated a response that could not be parsed + +The error preserves the following information to help you log the issue: + +- `responses`: Metadata about the transcription model responses, including timestamp, model, and headers. +- `cause`: The cause of the error. You can use this for more detailed error handling. + +```ts +import { + experimental_transcribe as transcribe, + NoTranscriptGeneratedError, +} from 'ai'; +import { openai } from '@ai-sdk/openai'; +import { readFile } from 'fs/promises'; + +try { + await transcribe({ + model: openai.transcription('whisper-1'), + audio: await readFile('audio.mp3'), + }); +} catch (error) { + if (NoTranscriptGeneratedError.isInstance(error)) { + console.log('NoTranscriptGeneratedError'); + console.log('Cause:', error.cause); + console.log('Responses:', error.responses); + } +} +``` + +## Transcription Models + +| Provider | Model | +| ------------------------------------------------------------------------- | ------------------------ | +| [OpenAI](/providers/ai-sdk-providers/openai#transcription-models) | `whisper-1` | +| [OpenAI](/providers/ai-sdk-providers/openai#transcription-models) | `gpt-4o-transcribe` | +| [OpenAI](/providers/ai-sdk-providers/openai#transcription-models) | `gpt-4o-mini-transcribe` | +| [ElevenLabs](/providers/ai-sdk-providers/elevenlabs#transcription-models) | `scribe_v1` | +| [ElevenLabs](/providers/ai-sdk-providers/elevenlabs#transcription-models) | `scribe_v1_experimental` | +| [Groq](/providers/ai-sdk-providers/groq#transcription-models) | `whisper-large-v3-turbo` | +| [Groq](/providers/ai-sdk-providers/groq#transcription-models) | `whisper-large-v3` | +| [Azure OpenAI](/providers/ai-sdk-providers/azure#transcription-models) | `whisper-1` | +| [Azure OpenAI](/providers/ai-sdk-providers/azure#transcription-models) | `gpt-4o-transcribe` | +| [Azure OpenAI](/providers/ai-sdk-providers/azure#transcription-models) | `gpt-4o-mini-transcribe` | +| [Rev.ai](/providers/ai-sdk-providers/revai#transcription-models) | `machine` | +| [Rev.ai](/providers/ai-sdk-providers/revai#transcription-models) | `low_cost` | +| [Rev.ai](/providers/ai-sdk-providers/revai#transcription-models) | `fusion` | +| [Deepgram](/providers/ai-sdk-providers/deepgram#transcription-models) | `base` (+ variants) | +| [Deepgram](/providers/ai-sdk-providers/deepgram#transcription-models) | `enhanced` (+ variants) | +| [Deepgram](/providers/ai-sdk-providers/deepgram#transcription-models) | `nova` (+ variants) | +| [Deepgram](/providers/ai-sdk-providers/deepgram#transcription-models) | `nova-2` (+ variants) | +| [Deepgram](/providers/ai-sdk-providers/deepgram#transcription-models) | `nova-3` (+ variants) | +| [Gladia](/providers/ai-sdk-providers/gladia#transcription-models) | `default` | +| [AssemblyAI](/providers/ai-sdk-providers/assemblyai#transcription-models) | `best` | +| [AssemblyAI](/providers/ai-sdk-providers/assemblyai#transcription-models) | `nano` | +| [Fal](/providers/ai-sdk-providers/fal#transcription-models) | `whisper` | +| [Fal](/providers/ai-sdk-providers/fal#transcription-models) | `wizper` | + +Above are a small subset of the transcription models supported by the AI SDK providers. For more, see the respective provider documentation. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/37-speech.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/37-speech.mdx new file mode 100644 index 000000000..94aa47aad --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/37-speech.mdx @@ -0,0 +1,169 @@ +--- +title: Speech +description: Learn how to generate speech from text with the AI SDK. +--- + +# Speech + +Speech is an experimental feature. + +The AI SDK provides the [`generateSpeech`](/docs/reference/ai-sdk-core/generate-speech) +function to generate speech from text using a speech model. + +```ts +import { experimental_generateSpeech as generateSpeech } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const audio = await generateSpeech({ + model: openai.speech('tts-1'), + text: 'Hello, world!', + voice: 'alloy', +}); +``` + +### Language Setting + +You can specify the language for speech generation (provider support varies): + +```ts +import { experimental_generateSpeech as generateSpeech } from 'ai'; +import { lmnt } from '@ai-sdk/lmnt'; + +const audio = await generateSpeech({ + model: lmnt.speech('aurora'), + text: 'Hola, mundo!', + language: 'es', // Spanish +}); +``` + +To access the generated audio: + +```ts +const audioData = result.audio.uint8Array; // audio data as Uint8Array +// or +const audioBase64 = result.audio.base64; // audio data as base64 string +``` + +## Settings + +### Provider-Specific settings + +You can set model-specific settings with the `providerOptions` parameter. + +```ts highlight="7-11" +import { experimental_generateSpeech as generateSpeech } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const audio = await generateSpeech({ + model: openai.speech('tts-1'), + text: 'Hello, world!', + providerOptions: { + openai: { + // ... + }, + }, +}); +``` + +### Abort Signals and Timeouts + +`generateSpeech` accepts an optional `abortSignal` parameter of +type [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) +that you can use to abort the speech generation process or set a timeout. + +```ts highlight="7" +import { openai } from '@ai-sdk/openai'; +import { experimental_generateSpeech as generateSpeech } from 'ai'; + +const audio = await generateSpeech({ + model: openai.speech('tts-1'), + text: 'Hello, world!', + abortSignal: AbortSignal.timeout(1000), // Abort after 1 second +}); +``` + +### Custom Headers + +`generateSpeech` accepts an optional `headers` parameter of type `Record` +that you can use to add custom headers to the speech generation request. + +```ts highlight="7" +import { openai } from '@ai-sdk/openai'; +import { experimental_generateSpeech as generateSpeech } from 'ai'; + +const audio = await generateSpeech({ + model: openai.speech('tts-1'), + text: 'Hello, world!', + headers: { 'X-Custom-Header': 'custom-value' }, +}); +``` + +### Warnings + +Warnings (e.g. unsupported parameters) are available on the `warnings` property. + +```ts +import { openai } from '@ai-sdk/openai'; +import { experimental_generateSpeech as generateSpeech } from 'ai'; + +const audio = await generateSpeech({ + model: openai.speech('tts-1'), + text: 'Hello, world!', +}); + +const warnings = audio.warnings; +``` + +### Error Handling + +When `generateSpeech` cannot generate a valid audio, it throws a [`AI_NoSpeechGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-speech-generated-error). + +This error can arise for any of the following reasons: + +- The model failed to generate a response +- The model generated a response that could not be parsed + +The error preserves the following information to help you log the issue: + +- `responses`: Metadata about the speech model responses, including timestamp, model, and headers. +- `cause`: The cause of the error. You can use this for more detailed error handling. + +```ts +import { + experimental_generateSpeech as generateSpeech, + NoSpeechGeneratedError, +} from 'ai'; +import { openai } from '@ai-sdk/openai'; + +try { + await generateSpeech({ + model: openai.speech('tts-1'), + text: 'Hello, world!', + }); +} catch (error) { + if (NoSpeechGeneratedError.isInstance(error)) { + console.log('AI_NoSpeechGeneratedError'); + console.log('Cause:', error.cause); + console.log('Responses:', error.responses); + } +} +``` + +## Speech Models + +| Provider | Model | +| ------------------------------------------------------------------ | ------------------------ | +| [OpenAI](/providers/ai-sdk-providers/openai#speech-models) | `tts-1` | +| [OpenAI](/providers/ai-sdk-providers/openai#speech-models) | `tts-1-hd` | +| [OpenAI](/providers/ai-sdk-providers/openai#speech-models) | `gpt-4o-mini-tts` | +| [ElevenLabs](/providers/ai-sdk-providers/elevenlabs#speech-models) | `eleven_v3` | +| [ElevenLabs](/providers/ai-sdk-providers/elevenlabs#speech-models) | `eleven_multilingual_v2` | +| [ElevenLabs](/providers/ai-sdk-providers/elevenlabs#speech-models) | `eleven_flash_v2_5` | +| [ElevenLabs](/providers/ai-sdk-providers/elevenlabs#speech-models) | `eleven_flash_v2` | +| [ElevenLabs](/providers/ai-sdk-providers/elevenlabs#speech-models) | `eleven_turbo_v2_5` | +| [ElevenLabs](/providers/ai-sdk-providers/elevenlabs#speech-models) | `eleven_turbo_v2` | +| [LMNT](/providers/ai-sdk-providers/lmnt#speech-models) | `aurora` | +| [LMNT](/providers/ai-sdk-providers/lmnt#speech-models) | `blizzard` | +| [Hume](/providers/ai-sdk-providers/hume#speech-models) | `default` | + +Above are a small subset of the speech models supported by the AI SDK providers. For more, see the respective provider documentation. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/38-video-generation.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/38-video-generation.mdx new file mode 100644 index 000000000..18abd7137 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/38-video-generation.mdx @@ -0,0 +1,366 @@ +--- +title: Video Generation +description: Learn how to generate videos with the AI SDK. +--- + +# Video Generation + + + Video generation is an experimental feature. The API may change in future + versions. + + +The AI SDK provides the [`experimental_generateVideo`](/docs/reference/ai-sdk-core/generate-video) +function to generate videos based on a given prompt using a video model. + +```tsx +import { experimental_generateVideo as generateVideo } from 'ai'; +import { fal } from '@ai-sdk/fal'; + +const { video } = await generateVideo({ + model: fal.video('luma-dream-machine/ray-2'), + prompt: 'A cat walking on a treadmill', +}); +``` + +You can access the video data using the `base64` or `uint8Array` properties: + +```tsx +const base64 = video.base64; // base64 video data +const uint8Array = video.uint8Array; // Uint8Array video data +``` + +## Settings + +### Aspect Ratio + +The aspect ratio is specified as a string in the format `{width}:{height}`. +Models only support a few aspect ratios, and the supported aspect ratios are different for each model and provider. + +```tsx highlight={"7"} +import { experimental_generateVideo as generateVideo } from 'ai'; +import { fal } from '@ai-sdk/fal'; + +const { video } = await generateVideo({ + model: fal.video('luma-dream-machine/ray-2'), + prompt: 'A cat walking on a treadmill', + aspectRatio: '16:9', +}); +``` + +### Resolution + +The resolution is specified as a string in the format `{width}x{height}`. +Models only support specific resolutions, and the supported resolutions are different for each model and provider. + +```tsx highlight={"7"} +import { experimental_generateVideo as generateVideo } from 'ai'; +import { google } from '@ai-sdk/google'; + +const { video } = await generateVideo({ + model: google.video('veo-2.0-generate-001'), + prompt: 'A serene mountain landscape at sunset', + resolution: '1280x720', +}); +``` + +### Duration + +Some video models support specifying the duration of the generated video in seconds. + +```tsx highlight={"7"} +import { experimental_generateVideo as generateVideo } from 'ai'; +import { fal } from '@ai-sdk/fal'; + +const { video } = await generateVideo({ + model: fal.video('luma-dream-machine/ray-2'), + prompt: 'A timelapse of clouds moving across the sky', + duration: 5, +}); +``` + +### Frames Per Second (FPS) + +Some video models allow you to specify the frames per second for the generated video. + +```tsx highlight={"7"} +import { experimental_generateVideo as generateVideo } from 'ai'; +import { fal } from '@ai-sdk/fal'; + +const { video } = await generateVideo({ + model: fal.video('luma-dream-machine/ray-2'), + prompt: 'A hummingbird in slow motion', + fps: 24, +}); +``` + +### Generating Multiple Videos + +`experimental_generateVideo` supports generating multiple videos at once: + +```tsx highlight={"7"} +import { experimental_generateVideo as generateVideo } from 'ai'; +import { google } from '@ai-sdk/google'; + +const { videos } = await generateVideo({ + model: google.video('veo-2.0-generate-001'), + prompt: 'A rocket launching into space', + n: 3, // number of videos to generate +}); +``` + + + `experimental_generateVideo` will automatically call the model as often as + needed (in parallel) to generate the requested number of videos. + + +Each video model has an internal limit on how many videos it can generate in a single API call. The AI SDK manages this automatically by batching requests appropriately when you request multiple videos using the `n` parameter. Most video models only support generating 1 video per call due to computational cost. + +If needed, you can override this behavior using the `maxVideosPerCall` setting: + +```tsx +const { videos } = await generateVideo({ + model: google.video('veo-2.0-generate-001'), + prompt: 'A rocket launching into space', + maxVideosPerCall: 2, // Override the default batch size + n: 4, // Will make 2 calls of 2 videos each +}); +``` + +### Image-to-Video Generation + +Some video models support generating videos from an input image. You can provide an image using the prompt object: + +```tsx highlight={"7-10"} +import { experimental_generateVideo as generateVideo } from 'ai'; +import { fal } from '@ai-sdk/fal'; + +const { video } = await generateVideo({ + model: fal.video('hunyuan-video'), + prompt: { + image: 'https://example.com/my-image.png', + text: 'Animate this image with gentle motion', + }, +}); +``` + +You can also provide the image as a base64-encoded string or `Uint8Array`: + +```tsx +const { video } = await generateVideo({ + model: fal.video('hunyuan-video'), + prompt: { + image: imageBase64String, // or imageUint8Array + text: 'Animate this image', + }, +}); +``` + +### Providing a Seed + +You can provide a seed to the `experimental_generateVideo` function to control the output of the video generation process. +If supported by the model, the same seed will always produce the same video. + +```tsx highlight={"7"} +import { experimental_generateVideo as generateVideo } from 'ai'; +import { fal } from '@ai-sdk/fal'; + +const { video } = await generateVideo({ + model: fal.video('luma-dream-machine/ray-2'), + prompt: 'A cat walking on a treadmill', + seed: 1234567890, +}); +``` + +### Provider-specific Settings + +Video models often have provider- or even model-specific settings. +You can pass such settings to the `experimental_generateVideo` function +using the `providerOptions` parameter. The options for the provider +become request body properties. + +```tsx highlight={"8-10"} +import { experimental_generateVideo as generateVideo } from 'ai'; +import { fal } from '@ai-sdk/fal'; + +const { video } = await generateVideo({ + model: fal.video('luma-dream-machine/ray-2'), + prompt: 'A cat walking on a treadmill', + aspectRatio: '16:9', + providerOptions: { + fal: { loop: true, motionStrength: 0.8 }, + }, +}); +``` + +### Abort Signals and Timeouts + +`experimental_generateVideo` accepts an optional `abortSignal` parameter of +type [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) +that you can use to abort the video generation process or set a timeout. + +```ts highlight={"7"} +import { fal } from '@ai-sdk/fal'; +import { experimental_generateVideo as generateVideo } from 'ai'; + +const { video } = await generateVideo({ + model: fal.video('luma-dream-machine/ray-2'), + prompt: 'A cat walking on a treadmill', + abortSignal: AbortSignal.timeout(60000), // Abort after 60 seconds +}); +``` + + + Video generation typically takes longer than image generation. Consider using + longer timeouts (60 seconds or more) depending on the model and video length. + + +### Polling Timeout + +Video generation is an asynchronous process that can take several minutes to complete. Most providers use a polling mechanism where the SDK periodically checks if the video is ready. The default polling timeout is typically 5 minutes, which may not be sufficient for longer videos or certain models. + +You can configure the polling timeout using provider-specific options. Each provider exports a type for its options that you can use with `satisfies` for type safety: + +```tsx highlight={"10-12"} +import { experimental_generateVideo as generateVideo } from 'ai'; +import { fal, type FalVideoModelOptions } from '@ai-sdk/fal'; + +const { video } = await generateVideo({ + model: fal.video('luma-dream-machine/ray-2'), + prompt: 'A cinematic timelapse of a city from dawn to dusk', + duration: 10, + providerOptions: { + fal: { + pollTimeoutMs: 600000, // 10 minutes + } satisfies FalVideoModelOptions, + }, +}); +``` + + + For production use, we recommend setting `pollTimeoutMs` to at least 10 + minutes (600000ms) to account for varying generation times across different + models and video lengths. + + +### Custom Headers + +`experimental_generateVideo` accepts an optional `headers` parameter of type `Record` +that you can use to add custom headers to the video generation request. + +```ts highlight={"7"} +import { fal } from '@ai-sdk/fal'; +import { experimental_generateVideo as generateVideo } from 'ai'; + +const { video } = await generateVideo({ + model: fal.video('luma-dream-machine/ray-2'), + prompt: 'A cat walking on a treadmill', + headers: { 'X-Custom-Header': 'custom-value' }, +}); +``` + +### Warnings + +If the model returns warnings, e.g. for unsupported parameters, they will be available in the `warnings` property of the response. + +```tsx +const { video, warnings } = await generateVideo({ + model: fal.video('luma-dream-machine/ray-2'), + prompt: 'A cat walking on a treadmill', +}); +``` + +### Additional Provider-specific Metadata + +Some providers expose additional metadata for the result overall or per video. + +```tsx +const prompt = 'A cat walking on a treadmill'; + +const { video, providerMetadata } = await generateVideo({ + model: fal.video('luma-dream-machine/ray-2'), + prompt, +}); + +// Access provider-specific metadata +const videoMetadata = providerMetadata.fal?.videos[0]; +console.log({ + duration: videoMetadata?.duration, + fps: videoMetadata?.fps, + width: videoMetadata?.width, + height: videoMetadata?.height, +}); +``` + +The outer key of the returned `providerMetadata` is the provider name. The inner values are the metadata. A `videos` key is typically present in the metadata and is an array with the same length as the top level `videos` key. + +When generating multiple videos with `n > 1`, you can also access per-call metadata through the `responses` array: + +```tsx +const { videos, responses } = await generateVideo({ + model: google.video('veo-2.0-generate-001'), + prompt: 'A rocket launching into space', + n: 5, // May require multiple API calls +}); + +// Access metadata from each individual API call +for (const response of responses) { + console.log({ + timestamp: response.timestamp, + modelId: response.modelId, + // Per-call provider metadata (lossless) + providerMetadata: response.providerMetadata, + }); +} +``` + +### Error Handling + +When `experimental_generateVideo` cannot generate a valid video, it throws a [`AI_NoVideoGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-video-generated-error). + +This error occurs when the AI provider fails to generate a video. It can arise due to the following reasons: + +- The model failed to generate a response +- The model generated a response that could not be parsed + +The error preserves the following information to help you log the issue: + +- `responses`: Metadata about the video model responses, including timestamp, model, and headers. +- `cause`: The cause of the error. You can use this for more detailed error handling + +```ts +import { + experimental_generateVideo as generateVideo, + NoVideoGeneratedError, +} from 'ai'; + +try { + await generateVideo({ model, prompt }); +} catch (error) { + if (NoVideoGeneratedError.isInstance(error)) { + console.log('NoVideoGeneratedError'); + console.log('Cause:', error.cause); + console.log('Responses:', error.responses); + } +} +``` + +## Video Models + +| Provider | Model | Features | +| ----------------------------------------------------------------------- | --------------------------- | -------------------------------------- | +| [FAL](/providers/ai-sdk-providers/fal#video-models) | `luma-dream-machine/ray-2` | Text-to-video, image-to-video | +| [FAL](/providers/ai-sdk-providers/fal#video-models) | `minimax-video` | Text-to-video | +| [Google](/providers/ai-sdk-providers/google-generative-ai#video-models) | `veo-2.0-generate-001` | Text-to-video, up to 4 videos per call | +| [Google Vertex](/providers/ai-sdk-providers/google-vertex#video-models) | `veo-3.1-generate-001` | Text-to-video, audio generation | +| [Google Vertex](/providers/ai-sdk-providers/google-vertex#video-models) | `veo-3.1-fast-generate-001` | Text-to-video, audio generation | +| [Google Vertex](/providers/ai-sdk-providers/google-vertex#video-models) | `veo-3.0-generate-001` | Text-to-video, audio generation | +| [Google Vertex](/providers/ai-sdk-providers/google-vertex#video-models) | `veo-3.0-fast-generate-001` | Text-to-video, audio generation | +| [Google Vertex](/providers/ai-sdk-providers/google-vertex#video-models) | `veo-2.0-generate-001` | Text-to-video, up to 4 videos per call | +| [Kling AI](/providers/ai-sdk-providers/klingai#video-models) | `kling-v2.6-t2v` | Text-to-video | +| [Kling AI](/providers/ai-sdk-providers/klingai#video-models) | `kling-v2.6-i2v` | Image-to-video | +| [Kling AI](/providers/ai-sdk-providers/klingai#video-models) | `kling-v2.6-motion-control` | Motion control | +| [Replicate](/providers/ai-sdk-providers/replicate#video-models) | `minimax/video-01` | Text-to-video | +| [xAI](/providers/ai-sdk-providers/xai#video-models) | `grok-imagine-video` | Text-to-video, image-to-video, editing | + +Above are a small subset of the video models supported by the AI SDK providers. For more, see the respective provider documentation. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/40-middleware.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/40-middleware.mdx new file mode 100644 index 000000000..0f6c1346e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/40-middleware.mdx @@ -0,0 +1,485 @@ +--- +title: Language Model Middleware +description: Learn how to use middleware to enhance the behavior of language models +--- + +# Language Model Middleware + +Language model middleware is a way to enhance the behavior of language models +by intercepting and modifying the calls to the language model. + +It can be used to add features like guardrails, RAG, caching, and logging +in a language model agnostic way. Such middleware can be developed and +distributed independently from the language models that they are applied to. + +## Using Language Model Middleware + +You can use language model middleware with the `wrapLanguageModel` function. +It takes a language model and a language model middleware and returns a new +language model that incorporates the middleware. + +```ts +import { wrapLanguageModel, streamText } from 'ai'; + +const wrappedLanguageModel = wrapLanguageModel({ + model: yourModel, + middleware: yourLanguageModelMiddleware, +}); +``` + +The wrapped language model can be used just like any other language model, e.g. in `streamText`: + +```ts highlight="2" +const result = streamText({ + model: wrappedLanguageModel, + prompt: 'What cities are in the United States?', +}); +``` + +## Multiple middlewares + +You can provide multiple middlewares to the `wrapLanguageModel` function. +The middlewares will be applied in the order they are provided. + +```ts +const wrappedLanguageModel = wrapLanguageModel({ + model: yourModel, + middleware: [firstMiddleware, secondMiddleware], +}); + +// applied as: firstMiddleware(secondMiddleware(yourModel)) +``` + +## Built-in Middleware + +The AI SDK comes with several built-in middlewares that you can use to configure language models: + +- `extractReasoningMiddleware`: Extracts reasoning information from the generated text and exposes it as a `reasoning` property on the result. +- `extractJsonMiddleware`: Extracts JSON from text content by stripping markdown code fences. Useful when using `Output.object()` with models that wrap JSON responses in code blocks. +- `simulateStreamingMiddleware`: Simulates streaming behavior with responses from non-streaming language models. +- `defaultSettingsMiddleware`: Applies default settings to a language model. +- `addToolInputExamplesMiddleware`: Adds tool input examples to tool descriptions for providers that don't natively support the `inputExamples` property. + +### Extract Reasoning + +Some providers and models expose reasoning information in the generated text using special tags, +e.g. <think> and </think>. + +The `extractReasoningMiddleware` function can be used to extract this reasoning information and expose it as a `reasoning` property on the result. + +```ts +import { wrapLanguageModel, extractReasoningMiddleware } from 'ai'; + +const model = wrapLanguageModel({ + model: yourModel, + middleware: extractReasoningMiddleware({ tagName: 'think' }), +}); +``` + +You can then use that enhanced model in functions like `generateText` and `streamText`. + +The `extractReasoningMiddleware` function also includes a `startWithReasoning` option. +When set to `true`, the reasoning tag will be prepended to the generated text. +This is useful for models that do not include the reasoning tag at the beginning of the response. +For more details, see the [DeepSeek R1 guide](/cookbook/guides/r1#deepseek-r1-middleware). + +### Extract JSON + +Some models wrap JSON responses in markdown code fences (e.g., ` ```json ... ``` `) even when you request structured output. + +The `extractJsonMiddleware` function strips these code fences from the response, making it compatible with `Output.object()`. + +```ts +import { + wrapLanguageModel, + extractJsonMiddleware, + Output, + generateText, +} from 'ai'; +import { z } from 'zod'; + +const model = wrapLanguageModel({ + model: yourModel, + middleware: extractJsonMiddleware(), +}); + +const result = await generateText({ + model, + output: Output.object({ + schema: z.object({ + name: z.string(), + ingredients: z.array(z.string()), + }), + }), + prompt: 'Generate a recipe.', +}); +``` + +You can also provide a custom transform function for models that use different formatting: + +```ts +const model = wrapLanguageModel({ + model: yourModel, + middleware: extractJsonMiddleware({ + transform: text => text.replace(/^PREFIX/, '').replace(/SUFFIX$/, ''), + }), +}); +``` + +### Simulate Streaming + +The `simulateStreamingMiddleware` function can be used to simulate streaming behavior with responses from non-streaming language models. +This is useful when you want to maintain a consistent streaming interface even when using models that only provide complete responses. + +```ts +import { wrapLanguageModel, simulateStreamingMiddleware } from 'ai'; + +const model = wrapLanguageModel({ + model: yourModel, + middleware: simulateStreamingMiddleware(), +}); +``` + +### Default Settings + +The `defaultSettingsMiddleware` function can be used to apply default settings to a language model. + +```ts +import { wrapLanguageModel, defaultSettingsMiddleware } from 'ai'; + +const model = wrapLanguageModel({ + model: yourModel, + middleware: defaultSettingsMiddleware({ + settings: { + temperature: 0.5, + maxOutputTokens: 800, + providerOptions: { openai: { store: false } }, + }, + }), +}); +``` + +### Add Tool Input Examples + +The `addToolInputExamplesMiddleware` function adds tool input examples to tool descriptions. +This is useful for providers that don't natively support the `inputExamples` property on tools. +The middleware serializes the examples into the tool's description text so models can still benefit from seeing example inputs. + +```ts +import { wrapLanguageModel, addToolInputExamplesMiddleware } from 'ai'; + +const model = wrapLanguageModel({ + model: yourModel, + middleware: addToolInputExamplesMiddleware({ + prefix: 'Input Examples:', + }), +}); +``` + +When you define a tool with `inputExamples`, the middleware will append them to the tool's description: + +```ts +import { generateText, tool } from 'ai'; +import { z } from 'zod'; + +const result = await generateText({ + model, // wrapped model from above + tools: { + weather: tool({ + description: 'Get the weather in a location', + inputSchema: z.object({ + location: z.string(), + }), + inputExamples: [ + { input: { location: 'San Francisco' } }, + { input: { location: 'London' } }, + ], + }), + }, + prompt: 'What is the weather in Tokyo?', +}); +``` + +The tool description will be transformed to: + +``` +Get the weather in a location + +Input Examples: +{"location":"San Francisco"} +{"location":"London"} +``` + +#### Options + +- `prefix` (optional): A prefix text to prepend before the examples. Default: `'Input Examples:'`. +- `format` (optional): A custom formatter function for each example. Receives the example object and its index. Default: `JSON.stringify(example.input)`. +- `remove` (optional): Whether to remove the `inputExamples` property from the tool after adding them to the description. Default: `true`. + +```ts +const model = wrapLanguageModel({ + model: yourModel, + middleware: addToolInputExamplesMiddleware({ + prefix: 'Input Examples:', + format: (example, index) => + `${index + 1}. ${JSON.stringify(example.input)}`, + remove: true, + }), +}); +``` + +## Community Middleware + +The AI SDK provides a Language Model Middleware specification. Community members can develop middleware that adheres to this specification, making it compatible with the AI SDK ecosystem. + +Here are some community middlewares that you can explore: + +### Custom tool call parser + +The [Custom tool call parser](https://github.com/minpeter/ai-sdk-tool-call-middleware) middleware extends tool call capabilities to models that don't natively support the OpenAI-style `tools` parameter. This includes many self-hosted and third-party models that lack native function calling features. + + + Using this middleware on models that support native function calls may result + in unintended performance degradation, so check whether your model supports + native function calls before deciding to use it. + + +This middleware enables function calling capabilities by converting function schemas into prompt instructions and parsing the model's responses into structured function calls. It works by transforming the JSON function definitions into natural language instructions the model can understand, then analyzing the generated text to extract function call attempts. This approach allows developers to use the same function calling API across different model providers, even with models that don't natively support the OpenAI-style function calling format, providing a consistent function calling experience regardless of the underlying model implementation. + +The `@ai-sdk-tool/parser` package offers three middleware variants: + +- `createToolMiddleware`: A flexible function for creating custom tool call middleware tailored to specific models +- `hermesToolMiddleware`: Ready-to-use middleware for Hermes & Qwen format function calls +- `gemmaToolMiddleware`: Pre-configured middleware for Gemma 3 model series function call format + +Here's how you can enable function calls with Gemma models that don't support them natively: + +```ts +import { wrapLanguageModel } from 'ai'; +import { gemmaToolMiddleware } from '@ai-sdk-tool/parser'; + +const model = wrapLanguageModel({ + model: openrouter('google/gemma-3-27b-it'), + middleware: gemmaToolMiddleware, +}); +``` + +Find more examples at this [link](https://github.com/minpeter/ai-sdk-tool-call-middleware/tree/main/examples/core/src). + +## Implementing Language Model Middleware + + + Implementing language model middleware is advanced functionality and requires + a solid understanding of the [language model + specification](https://github.com/vercel/ai/blob/v5/packages/provider/src/language-model/v2/language-model-v2.ts). + + +You can implement any of the following three function to modify the behavior of the language model: + +1. `transformParams`: Transforms the parameters before they are passed to the language model, for both `doGenerate` and `doStream`. +2. `wrapGenerate`: Wraps the `doGenerate` method of the [language model](https://github.com/vercel/ai/blob/v5/packages/provider/src/language-model/v2/language-model-v2.ts). + You can modify the parameters, call the language model, and modify the result. +3. `wrapStream`: Wraps the `doStream` method of the [language model](https://github.com/vercel/ai/blob/v5/packages/provider/src/language-model/v2/language-model-v2.ts). + You can modify the parameters, call the language model, and modify the result. + +Here are some examples of how to implement language model middleware: + +## Examples + + + These examples are not meant to be used in production. They are just to show + how you can use middleware to enhance the behavior of language models. + + +### Logging + +This example shows how to log the parameters and generated text of a language model call. + +```ts +import type { + LanguageModelV3Middleware, + LanguageModelV3StreamPart, +} from '@ai-sdk/provider'; + +export const yourLogMiddleware: LanguageModelV3Middleware = { + wrapGenerate: async ({ doGenerate, params }) => { + console.log('doGenerate called'); + console.log(`params: ${JSON.stringify(params, null, 2)}`); + + const result = await doGenerate(); + + console.log('doGenerate finished'); + console.log(`generated text: ${result.text}`); + + return result; + }, + + wrapStream: async ({ doStream, params }) => { + console.log('doStream called'); + console.log(`params: ${JSON.stringify(params, null, 2)}`); + + const { stream, ...rest } = await doStream(); + + let generatedText = ''; + const textBlocks = new Map(); + + const transformStream = new TransformStream< + LanguageModelV3StreamPart, + LanguageModelV3StreamPart + >({ + transform(chunk, controller) { + switch (chunk.type) { + case 'text-start': { + textBlocks.set(chunk.id, ''); + break; + } + case 'text-delta': { + const existing = textBlocks.get(chunk.id) || ''; + textBlocks.set(chunk.id, existing + chunk.delta); + generatedText += chunk.delta; + break; + } + case 'text-end': { + console.log( + `Text block ${chunk.id} completed:`, + textBlocks.get(chunk.id), + ); + break; + } + } + + controller.enqueue(chunk); + }, + + flush() { + console.log('doStream finished'); + console.log(`generated text: ${generatedText}`); + }, + }); + + return { + stream: stream.pipeThrough(transformStream), + ...rest, + }; + }, +}; +``` + +### Caching + +This example shows how to build a simple cache for the generated text of a language model call. + +```ts +import type { LanguageModelV3Middleware } from '@ai-sdk/provider'; + +const cache = new Map(); + +export const yourCacheMiddleware: LanguageModelV3Middleware = { + wrapGenerate: async ({ doGenerate, params }) => { + const cacheKey = JSON.stringify(params); + + if (cache.has(cacheKey)) { + return cache.get(cacheKey); + } + + const result = await doGenerate(); + + cache.set(cacheKey, result); + + return result; + }, + + // here you would implement the caching logic for streaming +}; +``` + +### Retrieval Augmented Generation (RAG) + +This example shows how to use RAG as middleware. + + + Helper functions like `getLastUserMessageText` and `findSources` are not part + of the AI SDK. They are just used in this example to illustrate the concept of + RAG. + + +```ts +import type { LanguageModelV3Middleware } from '@ai-sdk/provider'; + +export const yourRagMiddleware: LanguageModelV3Middleware = { + transformParams: async ({ params }) => { + const lastUserMessageText = getLastUserMessageText({ + prompt: params.prompt, + }); + + if (lastUserMessageText == null) { + return params; // do not use RAG (send unmodified parameters) + } + + const instruction = + 'Use the following information to answer the question:\n' + + findSources({ text: lastUserMessageText }) + .map(chunk => JSON.stringify(chunk)) + .join('\n'); + + return addToLastUserMessage({ params, text: instruction }); + }, +}; +``` + +### Guardrails + +Guard rails are a way to ensure that the generated text of a language model call +is safe and appropriate. This example shows how to use guardrails as middleware. + +```ts +import type { LanguageModelV3Middleware } from '@ai-sdk/provider'; + +export const yourGuardrailMiddleware: LanguageModelV3Middleware = { + wrapGenerate: async ({ doGenerate }) => { + const { text, ...rest } = await doGenerate(); + + // filtering approach, e.g. for PII or other sensitive information: + const cleanedText = text?.replace(/badword/g, ''); + + return { text: cleanedText, ...rest }; + }, + + // here you would implement the guardrail logic for streaming + // Note: streaming guardrails are difficult to implement, because + // you do not know the full content of the stream until it's finished. +}; +``` + +## Configuring Per Request Custom Metadata + +To send and access custom metadata in Middleware, you can use `providerOptions`. This is useful when building logging middleware where you want to pass additional context like user IDs, timestamps, or other contextual data that can help with tracking and debugging. + +```ts +import { generateText, wrapLanguageModel } from 'ai'; +__PROVIDER_IMPORT__; +import type { LanguageModelV3Middleware } from '@ai-sdk/provider'; + +export const yourLogMiddleware: LanguageModelV3Middleware = { + wrapGenerate: async ({ doGenerate, params }) => { + console.log('METADATA', params?.providerMetadata?.yourLogMiddleware); + const result = await doGenerate(); + return result; + }, +}; + +const { text } = await generateText({ + model: wrapLanguageModel({ + model: __MODEL__, + middleware: yourLogMiddleware, + }), + prompt: 'Invent a new holiday and describe its traditions.', + providerOptions: { + yourLogMiddleware: { + hello: 'world', + }, + }, +}); + +console.log(text); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/45-provider-management.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/45-provider-management.mdx new file mode 100644 index 000000000..cea3b0339 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/45-provider-management.mdx @@ -0,0 +1,349 @@ +--- +title: Provider & Model Management +description: Learn how to work with multiple providers and models +--- + +# Provider & Model Management + +When you work with multiple providers and models, it is often desirable to manage them in a central place +and access the models through simple string ids. + +The AI SDK offers [custom providers](/docs/reference/ai-sdk-core/custom-provider) and +a [provider registry](/docs/reference/ai-sdk-core/provider-registry) for this purpose: + +- With **custom providers**, you can pre-configure model settings, provide model name aliases, + and limit the available models. +- The **provider registry** lets you mix multiple providers and access them through simple string ids. + +You can mix and match custom providers, the provider registry, and [middleware](/docs/ai-sdk-core/middleware) in your application. + +## Custom Providers + +You can create a [custom provider](/docs/reference/ai-sdk-core/custom-provider) using `customProvider`. + +### Example: custom model settings + +You might want to override the default model settings for a provider or provide model name aliases +with pre-configured settings. + +```ts +import { + gateway, + customProvider, + defaultSettingsMiddleware, + wrapLanguageModel, +} from 'ai'; + +// custom provider with different provider options: +export const openai = customProvider({ + languageModels: { + // replacement model with custom provider options: + 'gpt-5.1': wrapLanguageModel({ + model: gateway('openai/gpt-5.1'), + middleware: defaultSettingsMiddleware({ + settings: { + providerOptions: { + openai: { + reasoningEffort: 'high', + }, + }, + }, + }), + }), + // alias model with custom provider options: + 'gpt-5.1-high-reasoning': wrapLanguageModel({ + model: gateway('openai/gpt-5.1'), + middleware: defaultSettingsMiddleware({ + settings: { + providerOptions: { + openai: { + reasoningEffort: 'high', + }, + }, + }, + }), + }), + }, + fallbackProvider: gateway, +}); +``` + +### Example: model name alias + +You can also provide model name aliases, so you can update the model version in one place in the future: + +```ts +import { customProvider, gateway } from 'ai'; + +// custom provider with alias names: +export const anthropic = customProvider({ + languageModels: { + opus: gateway('anthropic/claude-opus-4.1'), + sonnet: gateway('anthropic/claude-sonnet-4.5'), + haiku: gateway('anthropic/claude-haiku-4.5'), + }, + fallbackProvider: gateway, +}); +``` + +### Example: limit available models + +You can limit the available models in the system, even if you have multiple providers. + +```ts +import { + customProvider, + defaultSettingsMiddleware, + wrapLanguageModel, + gateway, +} from 'ai'; + +export const myProvider = customProvider({ + languageModels: { + 'text-medium': gateway('anthropic/claude-3-5-sonnet-20240620'), + 'text-small': gateway('openai/gpt-5-mini'), + 'reasoning-medium': wrapLanguageModel({ + model: gateway('openai/gpt-5.1'), + middleware: defaultSettingsMiddleware({ + settings: { + providerOptions: { + openai: { + reasoningEffort: 'high', + }, + }, + }, + }), + }), + 'reasoning-fast': wrapLanguageModel({ + model: gateway('openai/gpt-5.1'), + middleware: defaultSettingsMiddleware({ + settings: { + providerOptions: { + openai: { + reasoningEffort: 'low', + }, + }, + }, + }), + }), + }, + embeddingModels: { + embedding: gateway.embeddingModel('openai/text-embedding-3-small'), + }, + // no fallback provider +}); +``` + +## Provider Registry + +You can create a [provider registry](/docs/reference/ai-sdk-core/provider-registry) with multiple providers and models using `createProviderRegistry`. + +### Setup + +```ts filename={"registry.ts"} +import { anthropic } from '@ai-sdk/anthropic'; +import { openai } from '@ai-sdk/openai'; +import { createProviderRegistry, gateway } from 'ai'; + +export const registry = createProviderRegistry({ + // register provider with prefix and default setup using gateway: + gateway, + + // register provider with prefix and direct provider import: + anthropic, + openai, +}); +``` + +### Setup with Custom Separator + +By default, the registry uses `:` as the separator between provider and model IDs. You can customize this separator: + +```ts filename={"registry.ts"} +import { anthropic } from '@ai-sdk/anthropic'; +import { openai } from '@ai-sdk/openai'; +import { createProviderRegistry, gateway } from 'ai'; + +export const customSeparatorRegistry = createProviderRegistry( + { + gateway, + anthropic, + openai, + }, + { separator: ' > ' }, +); +``` + +### Example: Use language models + +You can access language models by using the `languageModel` method on the registry. +The provider id will become the prefix of the model id: `providerId:modelId`. + +```ts highlight={"5"} +import { generateText } from 'ai'; +import { registry } from './registry'; + +const { text } = await generateText({ + model: registry.languageModel('openai:gpt-5.1'), // default separator + // or with custom separator: + // model: customSeparatorRegistry.languageModel('openai > gpt-5.1'), + prompt: 'Invent a new holiday and describe its traditions.', +}); +``` + +### Example: Use text embedding models + +You can access text embedding models by using the `.embeddingModel` method on the registry. +The provider id will become the prefix of the model id: `providerId:modelId`. + +```ts highlight={"5"} +import { embed } from 'ai'; +import { registry } from './registry'; + +const { embedding } = await embed({ + model: registry.embeddingModel('openai:text-embedding-3-small'), + value: 'sunny day at the beach', +}); +``` + +### Example: Use image models + +You can access image models by using the `imageModel` method on the registry. +The provider id will become the prefix of the model id: `providerId:modelId`. + +```ts highlight={"5"} +import { generateImage } from 'ai'; +import { registry } from './registry'; + +const { image } = await generateImage({ + model: registry.imageModel('openai:dall-e-3'), + prompt: 'A beautiful sunset over a calm ocean', +}); +``` + +## Combining Custom Providers, Provider Registry, and Middleware + +The central idea of provider management is to set up a file that contains all the providers and models you want to use. +You may want to pre-configure model settings, provide model name aliases, limit the available models, and more. + +Here is an example that implements the following concepts: + +- pass through gateway with a namespace prefix (here: `gateway > *`) +- pass through a full provider with a namespace prefix (here: `xai > *`) +- setup an OpenAI-compatible provider with custom api key and base URL (here: `custom > *`) +- setup model name aliases (here: `anthropic > fast`, `anthropic > writing`, `anthropic > reasoning`) +- pre-configure model settings (here: `anthropic > reasoning`) +- validate the provider-specific options (here: `AnthropicLanguageModelOptions`) +- use a fallback provider (here: `anthropic > *`) +- limit a provider to certain models without a fallback (here: `groq > gemma2-9b-it`, `groq > qwen-qwq-32b`) +- define a custom separator for the provider registry (here: `>`) + +```ts +import { anthropic, AnthropicLanguageModelOptions } from '@ai-sdk/anthropic'; +import { createOpenAICompatible } from '@ai-sdk/openai-compatible'; +import { xai } from '@ai-sdk/xai'; +import { groq } from '@ai-sdk/groq'; +import { + createProviderRegistry, + customProvider, + defaultSettingsMiddleware, + gateway, + wrapLanguageModel, +} from 'ai'; + +export const registry = createProviderRegistry( + { + // pass through gateway with a namespace prefix + gateway, + + // pass through full providers with namespace prefixes + xai, + + // access an OpenAI-compatible provider with custom setup + custom: createOpenAICompatible({ + name: 'provider-name', + apiKey: process.env.CUSTOM_API_KEY, + baseURL: 'https://api.custom.com/v1', + }), + + // setup model name aliases + anthropic: customProvider({ + languageModels: { + fast: anthropic('claude-haiku-4-5'), + + // simple model + writing: anthropic('claude-sonnet-4-5'), + + // extended reasoning model configuration: + reasoning: wrapLanguageModel({ + model: anthropic('claude-sonnet-4-5'), + middleware: defaultSettingsMiddleware({ + settings: { + maxOutputTokens: 100000, // example default setting + providerOptions: { + anthropic: { + thinking: { + type: 'enabled', + budgetTokens: 32000, + }, + } satisfies AnthropicLanguageModelOptions, + }, + }, + }), + }), + }, + fallbackProvider: anthropic, + }), + + // limit a provider to certain models without a fallback + groq: customProvider({ + languageModels: { + 'gemma2-9b-it': groq('gemma2-9b-it'), + 'qwen-qwq-32b': groq('qwen-qwq-32b'), + }, + }), + }, + { separator: ' > ' }, +); + +// usage: +const model = registry.languageModel('anthropic > reasoning'); +``` + +## Global Provider Configuration + +The AI SDK 5 includes a global provider feature that allows you to specify a model using just a plain model ID string: + +```ts +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +const result = await streamText({ + model: __MODEL__, // Uses the global provider (defaults to gateway) + prompt: 'Invent a new holiday and describe its traditions.', +}); +``` + +By default, the global provider is set to the Vercel AI Gateway. + +### Customizing the Global Provider + +You can set your own preferred global provider: + +```ts filename="setup.ts" +import { openai } from '@ai-sdk/openai'; + +// Initialize once during startup: +globalThis.AI_SDK_DEFAULT_PROVIDER = openai; +``` + +```ts filename="app.ts" +import { streamText } from 'ai'; + +const result = await streamText({ + model: 'gpt-5.1', // Uses OpenAI provider without prefix + prompt: 'Invent a new holiday and describe its traditions.', +}); +``` + +This simplifies provider usage and makes it easier to switch between providers without changing your model references throughout your codebase. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/50-error-handling.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/50-error-handling.mdx new file mode 100644 index 000000000..2d62e395b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/50-error-handling.mdx @@ -0,0 +1,149 @@ +--- +title: Error Handling +description: Learn how to handle errors in the AI SDK Core +--- + +# Error Handling + +## Handling regular errors + +Regular errors are thrown and can be handled using the `try/catch` block. + +```ts highlight="3,8-10" +import { generateText } from 'ai'; +__PROVIDER_IMPORT__; + +try { + const { text } = await generateText({ + model: __MODEL__, + prompt: 'Write a vegetarian lasagna recipe for 4 people.', + }); +} catch (error) { + // handle error +} +``` + +See [Error Types](/docs/reference/ai-sdk-errors) for more information on the different types of errors that may be thrown. + +## Handling streaming errors (simple streams) + +When errors occur during streams that do not support error chunks, +the error is thrown as a regular error. +You can handle these errors using the `try/catch` block. + +```ts highlight="3,12-14" +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +try { + const { textStream } = streamText({ + model: __MODEL__, + prompt: 'Write a vegetarian lasagna recipe for 4 people.', + }); + + for await (const textPart of textStream) { + process.stdout.write(textPart); + } +} catch (error) { + // handle error +} +``` + +## Handling streaming errors (streaming with `error` support) + +Full streams support error parts. +You can handle those parts similar to other parts. +It is recommended to also add a try-catch block for errors that +happen outside of the streaming. + +```ts highlight="13-21" +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +try { + const { fullStream } = streamText({ + model: __MODEL__, + prompt: 'Write a vegetarian lasagna recipe for 4 people.', + }); + + for await (const part of fullStream) { + switch (part.type) { + // ... handle other part types + + case 'error': { + const error = part.error; + // handle error + break; + } + + case 'abort': { + // handle stream abort + break; + } + + case 'tool-error': { + const error = part.error; + // handle error + break; + } + } + } +} catch (error) { + // handle error +} +``` + +## Handling stream aborts + +When streams are aborted (e.g., via chat stop button), you may want to perform cleanup operations like updating stored messages in your UI. Use the `onAbort` callback to handle these cases. + +The `onAbort` callback is called when a stream is aborted via `AbortSignal`, but `onFinish` is not called. This ensures you can still update your UI state appropriately. + +```ts highlight="5-9" +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +const { textStream } = streamText({ + model: __MODEL__, + prompt: 'Write a vegetarian lasagna recipe for 4 people.', + onAbort: ({ steps }) => { + // Update stored messages or perform cleanup + console.log('Stream aborted after', steps.length, 'steps'); + }, + onFinish: ({ steps, totalUsage }) => { + // This is called on normal completion + console.log('Stream completed normally'); + }, +}); + +for await (const textPart of textStream) { + process.stdout.write(textPart); +} +``` + +The `onAbort` callback receives: + +- `steps`: An array of all completed steps before the abort + +You can also handle abort events directly in the stream: + +```ts highlight="10-13" +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +const { fullStream } = streamText({ + model: __MODEL__, + prompt: 'Write a vegetarian lasagna recipe for 4 people.', +}); + +for await (const chunk of fullStream) { + switch (chunk.type) { + case 'abort': { + // Handle abort directly in stream + console.log('Stream was aborted'); + break; + } + // ... handle other part types + } +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/55-testing.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/55-testing.mdx new file mode 100644 index 000000000..ef1fc703f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/55-testing.mdx @@ -0,0 +1,219 @@ +--- +title: Testing +description: Learn how to use AI SDK Core mock providers for testing. +--- + +# Testing + +Testing language models can be challenging, because they are non-deterministic +and calling them is slow and expensive. + +To enable you to unit test your code that uses the AI SDK, the AI SDK Core +includes mock providers and test helpers. You can import the following helpers from `ai/test`: + +- `MockEmbeddingModelV3`: A mock embedding model using the [embedding model v3 specification](https://github.com/vercel/ai/blob/main/packages/provider/src/embedding-model/v3/embedding-model-v3.ts). +- `MockLanguageModelV3`: A mock language model using the [language model v3 specification](https://github.com/vercel/ai/blob/main/packages/provider/src/language-model/v3/language-model-v3.ts). +- `mockId`: Provides an incrementing integer ID. +- `mockValues`: Iterates over an array of values with each call. Returns the last value when the array is exhausted. + +You can also import [`simulateReadableStream`](/docs/reference/ai-sdk-core/simulate-readable-stream) from `ai` to simulate a readable stream with delays. + +With mock providers and test helpers, you can control the output of the AI SDK +and test your code in a repeatable and deterministic way without actually calling +a language model provider. + +## Examples + +You can use the test helpers with the AI Core functions in your unit tests: + +### generateText + +```ts +import { generateText } from 'ai'; +import { MockLanguageModelV3 } from 'ai/test'; + +const result = await generateText({ + model: new MockLanguageModelV3({ + doGenerate: async () => ({ + content: [{ type: 'text', text: `Hello, world!` }], + finishReason: { unified: 'stop', raw: undefined }, + usage: { + inputTokens: { + total: 10, + noCache: 10, + cacheRead: undefined, + cacheWrite: undefined, + }, + outputTokens: { + total: 20, + text: 20, + reasoning: undefined, + }, + }, + warnings: [], + }), + }), + prompt: 'Hello, test!', +}); +``` + +### streamText + +```ts +import { streamText, simulateReadableStream } from 'ai'; +import { MockLanguageModelV3 } from 'ai/test'; + +const result = streamText({ + model: new MockLanguageModelV3({ + doStream: async () => ({ + stream: simulateReadableStream({ + chunks: [ + { type: 'text-start', id: 'text-1' }, + { type: 'text-delta', id: 'text-1', delta: 'Hello' }, + { type: 'text-delta', id: 'text-1', delta: ', ' }, + { type: 'text-delta', id: 'text-1', delta: 'world!' }, + { type: 'text-end', id: 'text-1' }, + { + type: 'finish', + finishReason: { unified: 'stop', raw: undefined }, + logprobs: undefined, + usage: { + inputTokens: { + total: 3, + noCache: 3, + cacheRead: undefined, + cacheWrite: undefined, + }, + outputTokens: { + total: 10, + text: 10, + reasoning: undefined, + }, + }, + }, + ], + }), + }), + }), + prompt: 'Hello, test!', +}); +``` + +### generateText with Output + +```ts +import { generateText, Output } from 'ai'; +import { MockLanguageModelV3 } from 'ai/test'; +import { z } from 'zod'; + +const result = await generateText({ + model: new MockLanguageModelV3({ + doGenerate: async () => ({ + content: [{ type: 'text', text: `{"content":"Hello, world!"}` }], + finishReason: { unified: 'stop', raw: undefined }, + usage: { + inputTokens: { + total: 10, + noCache: 10, + cacheRead: undefined, + cacheWrite: undefined, + }, + outputTokens: { + total: 20, + text: 20, + reasoning: undefined, + }, + }, + warnings: [], + }), + }), + output: Output.object({ schema: z.object({ content: z.string() }) }), + prompt: 'Hello, test!', +}); +``` + +### streamText with Output + +```ts +import { streamText, Output, simulateReadableStream } from 'ai'; +import { MockLanguageModelV3 } from 'ai/test'; +import { z } from 'zod'; + +const result = streamText({ + model: new MockLanguageModelV3({ + doStream: async () => ({ + stream: simulateReadableStream({ + chunks: [ + { type: 'text-start', id: 'text-1' }, + { type: 'text-delta', id: 'text-1', delta: '{ ' }, + { type: 'text-delta', id: 'text-1', delta: '"content": ' }, + { type: 'text-delta', id: 'text-1', delta: `"Hello, ` }, + { type: 'text-delta', id: 'text-1', delta: `world` }, + { type: 'text-delta', id: 'text-1', delta: `!"` }, + { type: 'text-delta', id: 'text-1', delta: ' }' }, + { type: 'text-end', id: 'text-1' }, + { + type: 'finish', + finishReason: { unified: 'stop', raw: undefined }, + logprobs: undefined, + usage: { + inputTokens: { + total: 3, + noCache: 3, + cacheRead: undefined, + cacheWrite: undefined, + }, + outputTokens: { + total: 10, + text: 10, + reasoning: undefined, + }, + }, + }, + ], + }), + }), + }), + output: Output.object({ schema: z.object({ content: z.string() }) }), + prompt: 'Hello, test!', +}); +``` + +### Simulate UI Message Stream Responses + +You can also simulate [UI Message Stream](/docs/ai-sdk-ui/stream-protocol#ui-message-stream) responses for testing, +debugging, or demonstration purposes. + +Here is a Next example: + +```ts filename="route.ts" +import { simulateReadableStream } from 'ai'; + +export async function POST(req: Request) { + return new Response( + simulateReadableStream({ + initialDelayInMs: 1000, // Delay before the first chunk + chunkDelayInMs: 300, // Delay between chunks + chunks: [ + `data: {"type":"start","messageId":"msg-123"}\n\n`, + `data: {"type":"text-start","id":"text-1"}\n\n`, + `data: {"type":"text-delta","id":"text-1","delta":"This"}\n\n`, + `data: {"type":"text-delta","id":"text-1","delta":" is an"}\n\n`, + `data: {"type":"text-delta","id":"text-1","delta":" example."}\n\n`, + `data: {"type":"text-end","id":"text-1"}\n\n`, + `data: {"type":"finish"}\n\n`, + `data: [DONE]\n\n`, + ], + }).pipeThrough(new TextEncoderStream()), + { + status: 200, + headers: { + 'Content-Type': 'text/event-stream', + 'Cache-Control': 'no-cache', + Connection: 'keep-alive', + 'x-vercel-ai-ui-message-stream': 'v1', + }, + }, + ); +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/60-telemetry.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/60-telemetry.mdx new file mode 100644 index 000000000..9d020df00 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/60-telemetry.mdx @@ -0,0 +1,391 @@ +--- +title: Telemetry +description: Using OpenTelemetry with AI SDK Core +--- + +# Telemetry + + + AI SDK Telemetry is experimental and may change in the future. + + +The AI SDK uses [OpenTelemetry](https://opentelemetry.io/) to collect telemetry data. +OpenTelemetry is an open-source observability framework designed to provide +standardized instrumentation for collecting telemetry data. + +Check out the [AI SDK Observability Integrations](/providers/observability) +to see providers that offer monitoring and tracing for AI SDK applications. + +## Enabling telemetry + +For Next.js applications, please follow the [Next.js OpenTelemetry guide](https://nextjs.org/docs/app/building-your-application/optimizing/open-telemetry) to enable telemetry first. + +You can then use the `experimental_telemetry` option to enable telemetry on specific function calls while the feature is experimental: + +```ts highlight="4" +const result = await generateText({ + model: __MODEL__, + prompt: 'Write a short story about a cat.', + experimental_telemetry: { isEnabled: true }, +}); +``` + +When telemetry is enabled, you can also control if you want to record the input values and the output values for the function. +By default, both are enabled. You can disable them by setting the `recordInputs` and `recordOutputs` options to `false`. + +Disabling the recording of inputs and outputs can be useful for privacy, data transfer, and performance reasons. +You might for example want to disable recording inputs if they contain sensitive information. + +## Telemetry Metadata + +You can provide a `functionId` to identify the function that the telemetry data is for, +and `metadata` to include additional information in the telemetry data. + +```ts highlight="6-10" +const result = await generateText({ + model: __MODEL__, + prompt: 'Write a short story about a cat.', + experimental_telemetry: { + isEnabled: true, + functionId: 'my-awesome-function', + metadata: { + something: 'custom', + someOtherThing: 'other-value', + }, + }, +}); +``` + +## Custom Tracer + +You may provide a `tracer` which must return an OpenTelemetry `Tracer`. This is useful in situations where +you want your traces to use a `TracerProvider` other than the one provided by the `@opentelemetry/api` singleton. + +```ts highlight="7" +const tracerProvider = new NodeTracerProvider(); +const result = await generateText({ + model: __MODEL__, + prompt: 'Write a short story about a cat.', + experimental_telemetry: { + isEnabled: true, + tracer: tracerProvider.getTracer('ai'), + }, +}); +``` + +## Telemetry Integrations + +Telemetry integrations let you hook into the generation lifecycle to build custom observability — logging, analytics, DevTools, or any other monitoring system. Instead of wiring up individual callbacks on every call, you implement a `TelemetryIntegration` once and pass it via `experimental_telemetry.integrations`. + +### Using an integration + +Pass one or more integrations to any `generateText` or `streamText` call: + +```ts highlight="6-8" +import { streamText } from 'ai'; +import { devToolsIntegration } from '@ai-sdk/devtools'; + +const result = streamText({ + model: openai('gpt-4o'), + prompt: 'Hello!', + experimental_telemetry: { + isEnabled: true, + integrations: [devToolsIntegration()], + }, +}); +``` + +You can combine multiple integrations — they all receive the same lifecycle events: + +```ts +experimental_telemetry: { + isEnabled: true, + integrations: [devToolsIntegration(), otelIntegration(), customLogger()], +}, +``` + +Errors inside integrations are caught and do not break the generation flow. + +### Building a custom integration + +Implement the `TelemetryIntegration` interface from the `ai` package. All methods are optional — implement only the lifecycle events you care about: + +```ts +import type { TelemetryIntegration } from 'ai'; +import { bindTelemetryIntegration } from 'ai'; + +class MyIntegration implements TelemetryIntegration { + async onStart(event) { + console.log('Generation started:', event.model.modelId); + } + + async onStepFinish(event) { + console.log( + `Step ${event.stepNumber} done:`, + event.usage.totalTokens, + 'tokens', + ); + } + + async onToolCallFinish(event) { + if (event.success) { + console.log( + `Tool "${event.toolCall.toolName}" took ${event.durationMs}ms`, + ); + } else { + console.error(`Tool "${event.toolCall.toolName}" failed:`, event.error); + } + } + + async onFinish(event) { + console.log('Done. Total tokens:', event.totalUsage.totalTokens); + } +} + +export function myIntegration(): TelemetryIntegration { + return bindTelemetryIntegration(new MyIntegration()); +} +``` + +Use `bindTelemetryIntegration` for class-based integrations to ensure `this` is correctly bound when methods are extracted and called as callbacks. + +### Available lifecycle methods + + void | PromiseLike', + description: + 'Called when the generation operation begins, before any LLM calls.', + }, + { + name: 'onStepStart', + type: '(event: OnStepStartEvent) => void | PromiseLike', + description: + 'Called when a step (LLM call) begins, before the provider is called.', + }, + { + name: 'onToolCallStart', + type: '(event: OnToolCallStartEvent) => void | PromiseLike', + description: "Called when a tool's execute function is about to run.", + }, + { + name: 'onToolCallFinish', + type: '(event: OnToolCallFinishEvent) => void | PromiseLike', + description: "Called when a tool's execute function completes or errors.", + }, + { + name: 'onStepFinish', + type: '(event: OnStepFinishEvent) => void | PromiseLike', + description: 'Called when a step (LLM call) completes.', + }, + { + name: 'onFinish', + type: '(event: OnFinishEvent) => void | PromiseLike', + description: + 'Called when the entire generation completes (all steps finished).', + }, + ]} +/> + +The event types for each method are the same as the corresponding [event callbacks](/docs/ai-sdk-core/event-listeners). See the event callbacks documentation for the full property reference of each event. + +## Collected Data + +### generateText function + +`generateText` records 3 types of spans: + +- `ai.generateText` (span): the full length of the generateText call. It contains 1 or more `ai.generateText.doGenerate` spans. + It contains the [basic LLM span information](#basic-llm-span-information) and the following attributes: + + - `operation.name`: `ai.generateText` and the functionId that was set through `telemetry.functionId` + - `ai.operationId`: `"ai.generateText"` + - `ai.prompt`: the prompt that was used when calling `generateText` + - `ai.response.text`: the text that was generated + - `ai.response.toolCalls`: the tool calls that were made as part of the generation (stringified JSON) + - `ai.response.finishReason`: the reason why the generation finished + - `ai.settings.maxOutputTokens`: the maximum number of output tokens that were set + +- `ai.generateText.doGenerate` (span): a provider doGenerate call. It can contain `ai.toolCall` spans. + It contains the [call LLM span information](#call-llm-span-information) and the following attributes: + + - `operation.name`: `ai.generateText.doGenerate` and the functionId that was set through `telemetry.functionId` + - `ai.operationId`: `"ai.generateText.doGenerate"` + - `ai.prompt.messages`: the messages that were passed into the provider + - `ai.prompt.tools`: array of stringified tool definitions. The tools can be of type `function` or `provider-defined-client`. + Function tools have a `name`, `description` (optional), and `inputSchema` (JSON schema). + Provider-defined-client tools have a `name`, `id`, and `input` (Record). + - `ai.prompt.toolChoice`: the stringified tool choice setting (JSON). It has a `type` property + (`auto`, `none`, `required`, `tool`), and if the type is `tool`, a `toolName` property with the specific tool. + - `ai.response.text`: the text that was generated + - `ai.response.toolCalls`: the tool calls that were made as part of the generation (stringified JSON) + - `ai.response.finishReason`: the reason why the generation finished + +- `ai.toolCall` (span): a tool call that is made as part of the generateText call. See [Tool call spans](#tool-call-spans) for more details. + +### streamText function + +`streamText` records 3 types of spans and 2 types of events: + +- `ai.streamText` (span): the full length of the streamText call. It contains a `ai.streamText.doStream` span. + It contains the [basic LLM span information](#basic-llm-span-information) and the following attributes: + + - `operation.name`: `ai.streamText` and the functionId that was set through `telemetry.functionId` + - `ai.operationId`: `"ai.streamText"` + - `ai.prompt`: the prompt that was used when calling `streamText` + - `ai.response.text`: the text that was generated + - `ai.response.toolCalls`: the tool calls that were made as part of the generation (stringified JSON) + - `ai.response.finishReason`: the reason why the generation finished + - `ai.settings.maxOutputTokens`: the maximum number of output tokens that were set + +- `ai.streamText.doStream` (span): a provider doStream call. + This span contains an `ai.stream.firstChunk` event and `ai.toolCall` spans. + It contains the [call LLM span information](#call-llm-span-information) and the following attributes: + + - `operation.name`: `ai.streamText.doStream` and the functionId that was set through `telemetry.functionId` + - `ai.operationId`: `"ai.streamText.doStream"` + - `ai.prompt.messages`: the messages that were passed into the provider + - `ai.prompt.tools`: array of stringified tool definitions. The tools can be of type `function` or `provider-defined-client`. + Function tools have a `name`, `description` (optional), and `inputSchema` (JSON schema). + Provider-defined-client tools have a `name`, `id`, and `input` (Record). + - `ai.prompt.toolChoice`: the stringified tool choice setting (JSON). It has a `type` property + (`auto`, `none`, `required`, `tool`), and if the type is `tool`, a `toolName` property with the specific tool. + - `ai.response.text`: the text that was generated + - `ai.response.toolCalls`: the tool calls that were made as part of the generation (stringified JSON) + - `ai.response.msToFirstChunk`: the time it took to receive the first chunk in milliseconds + - `ai.response.msToFinish`: the time it took to receive the finish part of the LLM stream in milliseconds + - `ai.response.avgCompletionTokensPerSecond`: the average number of completion tokens per second + - `ai.response.finishReason`: the reason why the generation finished + +- `ai.toolCall` (span): a tool call that is made as part of the generateText call. See [Tool call spans](#tool-call-spans) for more details. + +- `ai.stream.firstChunk` (event): an event that is emitted when the first chunk of the stream is received. + + - `ai.response.msToFirstChunk`: the time it took to receive the first chunk + +- `ai.stream.finish` (event): an event that is emitted when the finish part of the LLM stream is received. + +It also records a `ai.stream.firstChunk` event when the first chunk of the stream is received. + +### Deprecated object APIs + + + `generateObject` and `streamObject` are deprecated. Use `generateText` and + `streamText` with the `output` property instead. + + +If you still run deprecated object APIs, you will see legacy span names: + +- `generateObject`: `ai.generateObject`, `ai.generateObject.doGenerate` +- `streamObject`: `ai.streamObject`, `ai.streamObject.doStream`, `ai.stream.firstChunk` + +Legacy object spans include the same core metadata as other LLM spans, plus +object-specific attributes such as `ai.schema.*`, `ai.response.object`, and +`ai.settings.output`. + +### embed function + +`embed` records 2 types of spans: + +- `ai.embed` (span): the full length of the embed call. It contains 1 `ai.embed.doEmbed` spans. + It contains the [basic embedding span information](#basic-embedding-span-information) and the following attributes: + + - `operation.name`: `ai.embed` and the functionId that was set through `telemetry.functionId` + - `ai.operationId`: `"ai.embed"` + - `ai.value`: the value that was passed into the `embed` function + - `ai.embedding`: a JSON-stringified embedding + +- `ai.embed.doEmbed` (span): a provider doEmbed call. + It contains the [basic embedding span information](#basic-embedding-span-information) and the following attributes: + + - `operation.name`: `ai.embed.doEmbed` and the functionId that was set through `telemetry.functionId` + - `ai.operationId`: `"ai.embed.doEmbed"` + - `ai.values`: the values that were passed into the provider (array) + - `ai.embeddings`: an array of JSON-stringified embeddings + +### embedMany function + +`embedMany` records 2 types of spans: + +- `ai.embedMany` (span): the full length of the embedMany call. It contains 1 or more `ai.embedMany.doEmbed` spans. + It contains the [basic embedding span information](#basic-embedding-span-information) and the following attributes: + + - `operation.name`: `ai.embedMany` and the functionId that was set through `telemetry.functionId` + - `ai.operationId`: `"ai.embedMany"` + - `ai.values`: the values that were passed into the `embedMany` function + - `ai.embeddings`: an array of JSON-stringified embedding + +- `ai.embedMany.doEmbed` (span): a provider doEmbed call. + It contains the [basic embedding span information](#basic-embedding-span-information) and the following attributes: + + - `operation.name`: `ai.embedMany.doEmbed` and the functionId that was set through `telemetry.functionId` + - `ai.operationId`: `"ai.embedMany.doEmbed"` + - `ai.values`: the values that were sent to the provider + - `ai.embeddings`: an array of JSON-stringified embeddings for each value + +## Span Details + +### Basic LLM span information + +Many spans that use LLMs (`ai.generateText`, `ai.generateText.doGenerate`, `ai.streamText`, `ai.streamText.doStream`) contain the following attributes: + +- `resource.name`: the functionId that was set through `telemetry.functionId` +- `ai.model.id`: the id of the model +- `ai.model.provider`: the provider of the model +- `ai.request.headers.*`: the request headers that were passed in through `headers` +- `ai.response.providerMetadata`: provider specific metadata returned with the generation response +- `ai.settings.maxRetries`: the maximum number of retries that were set +- `ai.telemetry.functionId`: the functionId that was set through `telemetry.functionId` +- `ai.telemetry.metadata.*`: the metadata that was passed in through `telemetry.metadata` +- `ai.usage.completionTokens`: the number of completion tokens that were used +- `ai.usage.promptTokens`: the number of prompt tokens that were used + +### Call LLM span information + +Spans that correspond to individual LLM calls (`ai.generateText.doGenerate`, `ai.streamText.doStream`) contain +[basic LLM span information](#basic-llm-span-information) and the following attributes: + +- `ai.response.model`: the model that was used to generate the response. This can be different from the model that was requested if the provider supports aliases. +- `ai.response.id`: the id of the response. Uses the ID from the provider when available. +- `ai.response.timestamp`: the timestamp of the response. Uses the timestamp from the provider when available. +- [Semantic Conventions for GenAI operations](https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/) + - `gen_ai.system`: the provider that was used + - `gen_ai.request.model`: the model that was requested + - `gen_ai.request.temperature`: the temperature that was set + - `gen_ai.request.max_tokens`: the maximum number of tokens that were set + - `gen_ai.request.frequency_penalty`: the frequency penalty that was set + - `gen_ai.request.presence_penalty`: the presence penalty that was set + - `gen_ai.request.top_k`: the topK parameter value that was set + - `gen_ai.request.top_p`: the topP parameter value that was set + - `gen_ai.request.stop_sequences`: the stop sequences + - `gen_ai.response.finish_reasons`: the finish reasons that were returned by the provider + - `gen_ai.response.model`: the model that was used to generate the response. This can be different from the model that was requested if the provider supports aliases. + - `gen_ai.response.id`: the id of the response. Uses the ID from the provider when available. + - `gen_ai.usage.input_tokens`: the number of prompt tokens that were used + - `gen_ai.usage.output_tokens`: the number of completion tokens that were used + +### Basic embedding span information + +Many spans that use embedding models (`ai.embed`, `ai.embed.doEmbed`, `ai.embedMany`, `ai.embedMany.doEmbed`) contain the following attributes: + +- `ai.model.id`: the id of the model +- `ai.model.provider`: the provider of the model +- `ai.request.headers.*`: the request headers that were passed in through `headers` +- `ai.settings.maxRetries`: the maximum number of retries that were set +- `ai.telemetry.functionId`: the functionId that was set through `telemetry.functionId` +- `ai.telemetry.metadata.*`: the metadata that was passed in through `telemetry.metadata` +- `ai.usage.tokens`: the number of tokens that were used +- `resource.name`: the functionId that was set through `telemetry.functionId` + +### Tool call spans + +Tool call spans (`ai.toolCall`) contain the following attributes: + +- `operation.name`: `"ai.toolCall"` +- `ai.operationId`: `"ai.toolCall"` +- `ai.toolCall.name`: the name of the tool +- `ai.toolCall.id`: the id of the tool call +- `ai.toolCall.args`: the input parameters of the tool call +- `ai.toolCall.result`: the output result of the tool call. Only available if the tool call is successful and the result is serializable. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/65-devtools.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/65-devtools.mdx new file mode 100644 index 000000000..451265af8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/65-devtools.mdx @@ -0,0 +1,107 @@ +--- +title: DevTools +description: Debug and inspect AI SDK applications with DevTools +--- + +# DevTools + + + AI SDK DevTools is experimental and intended for local development only. Do + not use in production environments. + + +AI SDK DevTools gives you full visibility over your AI SDK calls with [`generateText`](/docs/reference/ai-sdk-core/generate-text), [`streamText`](/docs/reference/ai-sdk-core/stream-text), and [`ToolLoopAgent`](/docs/reference/ai-sdk-core/tool-loop-agent). It helps you debug and inspect LLM requests, responses, tool calls, and multi-step interactions through a web-based UI. + +DevTools is composed of two parts: + +1. **Middleware**: Captures runs and steps from your AI SDK calls +2. **Viewer**: A web UI to inspect the captured data + +## Installation + +Install the DevTools package: + +```bash +pnpm add @ai-sdk/devtools +``` + +## Requirements + +- AI SDK v6 beta (`ai@^6.0.0-beta.0`) +- Node.js compatible runtime + +## Using DevTools + +### Add the middleware + +Wrap your language model with the DevTools middleware using [`wrapLanguageModel`](/docs/ai-sdk-core/middleware): + +```ts +import { wrapLanguageModel, gateway } from 'ai'; +import { devToolsMiddleware } from '@ai-sdk/devtools'; + +const model = wrapLanguageModel({ + model: gateway('anthropic/claude-sonnet-4.5'), + middleware: devToolsMiddleware(), +}); +``` + +The wrapped model can be used with any AI SDK Core function: + +```ts highlight="4" +import { generateText } from 'ai'; + +const result = await generateText({ + model, // wrapped model with DevTools + prompt: 'What cities are in the United States?', +}); +``` + +### Launch the viewer + +Start the DevTools viewer: + +```bash +npx @ai-sdk/devtools +``` + +Open [http://localhost:4983](http://localhost:4983) to view your AI SDK interactions. + +## Captured data + +The DevTools middleware captures the following information from your AI SDK calls: + +- **Input parameters and prompts**: View the complete input sent to your LLM +- **Output content and tool calls**: Inspect generated text and tool invocations +- **Token usage and timing**: Monitor resource consumption and performance +- **Raw provider data**: Access complete request and response payloads + +### Runs and steps + +DevTools organizes captured data into runs and steps: + +- **Run**: A complete multi-step AI interaction, grouped by the initial prompt +- **Step**: A single LLM call within a run (e.g., one `generateText` or `streamText` call) + +Multi-step interactions, such as those created by tool calling or agent loops, are grouped together as a single run with multiple steps. + +## How it works + +The DevTools middleware intercepts all `generateText` and `streamText` calls through the [language model middleware](/docs/ai-sdk-core/middleware) system. Captured data is stored locally in a JSON file (`.devtools/generations.json`) and served through a web UI built with Hono and React. + + + The middleware automatically adds `.devtools` to your `.gitignore` file. + Verify that `.devtools` is in your `.gitignore` to ensure you don't commit + sensitive AI interaction data to your repository. + + +## Security considerations + +DevTools stores all AI interactions locally in plain text files, including: + +- User prompts and messages +- LLM responses +- Tool call arguments and results +- API request and response data + +**Only use DevTools in local development environments.** Do not enable DevTools in production or when handling sensitive data. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/65-event-listeners.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/65-event-listeners.mdx new file mode 100644 index 000000000..1b161418c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/65-event-listeners.mdx @@ -0,0 +1,915 @@ +--- +title: Event Callbacks +description: Subscribe to lifecycle events in generateText and streamText calls +--- + +# Event Callbacks + +The AI SDK provides per-call event callbacks that you can pass to `generateText` and `streamText` to observe lifecycle events. This is useful for building observability tools, logging systems, analytics, and debugging utilities. + +## Basic Usage + +Pass callbacks directly to `generateText` or `streamText`: + +```ts +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-4o'), + prompt: 'What is the weather in San Francisco?', + experimental_onStart: event => { + console.log('Generation started:', event.model.modelId); + }, + onFinish: event => { + console.log('Generation finished:', event.totalUsage); + }, +}); +``` + +## Available Callbacks + + void | Promise', + description: 'Called when generation begins, before any LLM calls.', + }, + { + name: 'experimental_onStepStart', + type: '(event: OnStepStartEvent) => void | Promise', + description: + 'Called when a step (LLM call) begins, before the provider is called.', + }, + { + name: 'experimental_onToolCallStart', + type: '(event: OnToolCallStartEvent) => void | Promise', + description: "Called when a tool's execute function is about to run.", + }, + { + name: 'experimental_onToolCallFinish', + type: '(event: OnToolCallFinishEvent) => void | Promise', + description: "Called when a tool's execute function completes or errors.", + }, + { + name: 'onStepFinish', + type: '(event: OnStepFinishEvent) => void | Promise', + description: 'Called when a step (LLM call) completes.', + }, + { + name: 'onFinish', + type: '(event: OnFinishEvent) => void | Promise', + description: + 'Called when the entire generation completes (all steps finished).', + }, + ]} +/> + +## Event Reference + +### `experimental_onStart` + +Called when the generation operation begins, before any LLM calls are made. + +```ts +const result = await generateText({ + model: openai('gpt-4o'), + prompt: 'Hello!', + experimental_onStart: event => { + console.log('Model:', event.model.modelId); + console.log('Temperature:', event.temperature); + }, +}); +``` + + | undefined', + description: 'The system message(s) provided to the model.', + }, + { + name: 'prompt', + type: 'string | Array | undefined', + description: + 'The prompt string or array of messages if using the prompt option.', + }, + { + name: 'messages', + type: 'Array | undefined', + description: 'The messages array if using the messages option.', + }, + { + name: 'tools', + type: 'ToolSet | undefined', + description: 'The tools available for this generation.', + }, + { + name: 'toolChoice', + type: 'ToolChoice | undefined', + description: 'The tool choice strategy for this generation.', + }, + { + name: 'activeTools', + type: 'Array | undefined', + description: 'Limits which tools are available for the model to call.', + }, + { + name: 'maxOutputTokens', + type: 'number | undefined', + description: 'Maximum number of tokens to generate.', + }, + { + name: 'temperature', + type: 'number | undefined', + description: 'Sampling temperature for generation.', + }, + { + name: 'topP', + type: 'number | undefined', + description: 'Top-p (nucleus) sampling parameter.', + }, + { + name: 'topK', + type: 'number | undefined', + description: 'Top-k sampling parameter.', + }, + { + name: 'presencePenalty', + type: 'number | undefined', + description: 'Presence penalty for generation.', + }, + { + name: 'frequencyPenalty', + type: 'number | undefined', + description: 'Frequency penalty for generation.', + }, + { + name: 'stopSequences', + type: 'string[] | undefined', + description: 'Sequences that will stop generation.', + }, + { + name: 'seed', + type: 'number | undefined', + description: 'Random seed for reproducible generation.', + }, + { + name: 'maxRetries', + type: 'number', + description: 'Maximum number of retries for failed requests.', + }, + { + name: 'timeout', + type: 'TimeoutConfiguration | undefined', + description: 'Timeout configuration for the generation.', + }, + { + name: 'headers', + type: 'Record | undefined', + description: 'Additional HTTP headers sent with the request.', + }, + { + name: 'providerOptions', + type: 'ProviderOptions | undefined', + description: 'Additional provider-specific options.', + }, + { + name: 'stopWhen', + type: 'StopCondition | Array | undefined', + description: 'Condition(s) for stopping the generation.', + }, + { + name: 'output', + type: 'Output | undefined', + description: 'The output specification for structured outputs.', + }, + { + name: 'abortSignal', + type: 'AbortSignal | undefined', + description: 'Abort signal for cancelling the operation.', + }, + { + name: 'include', + type: '{ requestBody?: boolean; responseBody?: boolean } | undefined', + description: + 'Settings for controlling what data is included in step results.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata passed to the generation.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object that flows through the entire generation lifecycle.', + }, + ]} +/> + +### `experimental_onStepStart` + +Called before each step (LLM call) begins. Useful for tracking multi-step generations. + +```ts +const result = await generateText({ + model: openai('gpt-4o'), + prompt: 'Hello!', + experimental_onStepStart: event => { + console.log('Step:', event.stepNumber); + console.log('Messages:', event.messages.length); + }, +}); +``` + + | undefined', + description: 'The system message for this step.', + }, + { + name: 'messages', + type: 'Array', + description: 'The messages that will be sent to the model for this step.', + }, + { + name: 'tools', + type: 'ToolSet | undefined', + description: 'The tools available for this generation.', + }, + { + name: 'toolChoice', + type: 'LanguageModelV3ToolChoice | undefined', + description: 'The tool choice configuration for this step.', + }, + { + name: 'activeTools', + type: 'Array | undefined', + description: 'Limits which tools are available for this step.', + }, + { + name: 'steps', + type: 'ReadonlyArray', + description: + 'Array of results from previous steps (empty for first step).', + }, + { + name: 'providerOptions', + type: 'ProviderOptions | undefined', + description: 'Additional provider-specific options for this step.', + }, + { + name: 'timeout', + type: 'TimeoutConfiguration | undefined', + description: 'Timeout configuration for the generation.', + }, + { + name: 'headers', + type: 'Record | undefined', + description: 'Additional HTTP headers sent with the request.', + }, + { + name: 'stopWhen', + type: 'StopCondition | Array | undefined', + description: 'Condition(s) for stopping the generation.', + }, + { + name: 'output', + type: 'Output | undefined', + description: 'The output specification for structured outputs.', + }, + { + name: 'abortSignal', + type: 'AbortSignal | undefined', + description: 'Abort signal for cancelling the operation.', + }, + { + name: 'include', + type: '{ requestBody?: boolean; responseBody?: boolean } | undefined', + description: + 'Settings for controlling what data is included in step results.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata from telemetry settings.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object. May be updated from prepareStep between steps.', + }, + ]} +/> + +### `experimental_onToolCallStart` + +Called before a tool's `execute` function runs. + +```ts +const result = await generateText({ + model: openai('gpt-4o'), + prompt: 'What is the weather?', + tools: { getWeather }, + experimental_onToolCallStart: event => { + console.log('Tool:', event.toolCall.toolName); + console.log('Input:', event.toolCall.input); + }, +}); +``` + +', + description: + 'The conversation messages available at tool execution time.', + }, + { + name: 'abortSignal', + type: 'AbortSignal | undefined', + description: 'Signal for cancelling the operation.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata from telemetry settings.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object flowing through the generation.', + }, + ]} +/> + +### `experimental_onToolCallFinish` + +Called after a tool's `execute` function completes or errors. Uses a discriminated union on the `success` field. + +```ts +const result = await generateText({ + model: openai('gpt-4o'), + prompt: 'What is the weather?', + tools: { getWeather }, + experimental_onToolCallFinish: event => { + console.log('Tool:', event.toolCall.toolName); + console.log('Duration:', event.durationMs, 'ms'); + + if (event.success) { + console.log('Output:', event.output); + } else { + console.error('Error:', event.error); + } + }, +}); +``` + +', + description: + 'The conversation messages available at tool execution time.', + }, + { + name: 'abortSignal', + type: 'AbortSignal | undefined', + description: 'Signal for cancelling the operation.', + }, + { + name: 'durationMs', + type: 'number', + description: 'Execution time of the tool call in milliseconds.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata from telemetry settings.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object flowing through the generation.', + }, + { + name: 'success', + type: 'boolean', + description: + 'Discriminator indicating whether the tool call succeeded. When true, output is available. When false, error is available.', + }, + { + name: 'output', + type: 'unknown', + description: + "The tool's return value (only present when success is true).", + }, + { + name: 'error', + type: 'unknown', + description: + 'The error that occurred during tool execution (only present when success is false).', + }, + ]} +/> + +### `onStepFinish` + +Called after each step (LLM call) completes. Provides the full `StepResult`. + +```ts +const result = await generateText({ + model: openai('gpt-4o'), + prompt: 'Hello!', + onStepFinish: event => { + console.log('Step:', event.stepNumber); + console.log('Finish reason:', event.finishReason); + console.log('Tokens:', event.usage.totalTokens); + }, +}); +``` + +', + description: 'The tool calls that were made during the generation.', + }, + { + name: 'toolResults', + type: 'Array', + description: 'The results of the tool calls.', + }, + { + name: 'content', + type: 'Array', + description: 'The content that was generated in this step.', + }, + { + name: 'reasoning', + type: 'Array', + description: 'The reasoning that was generated during the generation.', + }, + { + name: 'reasoningText', + type: 'string | undefined', + description: 'The reasoning text that was generated.', + }, + { + name: 'files', + type: 'Array', + description: 'The files that were generated during the generation.', + }, + { + name: 'sources', + type: 'Array', + description: 'The sources that were used to generate the text.', + }, + { + name: 'warnings', + type: 'CallWarning[] | undefined', + description: 'Warnings from the model provider.', + }, + { + name: 'request', + type: 'LanguageModelRequestMetadata', + description: 'Additional request information.', + }, + { + name: 'response', + type: 'LanguageModelResponseMetadata', + description: + 'Additional response information including id, modelId, timestamp, headers, and messages.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata from telemetry settings.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object flowing through the generation.', + }, + { + name: 'providerMetadata', + type: 'ProviderMetadata | undefined', + description: 'Additional provider-specific metadata.', + }, + ]} +/> + +### `onFinish` + +Called when the entire generation completes (all steps finished). Includes aggregated data. + +```ts +const result = await generateText({ + model: openai('gpt-4o'), + prompt: 'Hello!', + onFinish: event => { + console.log('Total steps:', event.steps.length); + console.log('Total tokens:', event.totalUsage.totalTokens); + console.log('Final text:', event.text); + }, +}); +``` + +', + description: 'Array containing results from all steps in the generation.', + }, + { + name: 'totalUsage', + type: 'LanguageModelUsage', + description: 'Aggregated token usage across all steps.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: + 'The total number of input tokens used across all steps.', + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: + 'The total number of output tokens used across all steps.', + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: 'The total number of tokens used across all steps.', + }, + ], + }, + ], + }, + { + name: 'stepNumber', + type: 'number', + description: 'Zero-based index of the final step.', + }, + { + name: 'model', + type: '{ provider: string; modelId: string }', + description: 'Information about the model that produced the final step.', + }, + { + name: 'finishReason', + type: "'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other'", + description: 'The unified reason why the generation finished.', + }, + { + name: 'usage', + type: 'LanguageModelUsage', + description: 'The token usage from the final step only (not aggregated).', + }, + { + name: 'text', + type: 'string', + description: 'The full text that has been generated.', + }, + { + name: 'toolCalls', + type: 'Array', + description: 'The tool calls that were made in the final step.', + }, + { + name: 'toolResults', + type: 'Array', + description: 'The results of the tool calls from the final step.', + }, + { + name: 'content', + type: 'Array', + description: 'The content that was generated in the final step.', + }, + { + name: 'reasoning', + type: 'Array', + description: 'The reasoning that was generated.', + }, + { + name: 'reasoningText', + type: 'string | undefined', + description: 'The reasoning text that was generated.', + }, + { + name: 'files', + type: 'Array', + description: 'Files that were generated in the final step.', + }, + { + name: 'sources', + type: 'Array', + description: + 'Sources that have been used as input to generate the response.', + }, + { + name: 'warnings', + type: 'CallWarning[] | undefined', + description: 'Warnings from the model provider.', + }, + { + name: 'request', + type: 'LanguageModelRequestMetadata', + description: 'Additional request information from the final step.', + }, + { + name: 'response', + type: 'LanguageModelResponseMetadata', + description: 'Additional response information from the final step.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata from telemetry settings.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: 'The final state of the user-defined context object.', + }, + { + name: 'providerMetadata', + type: 'ProviderMetadata | undefined', + description: 'Additional provider-specific metadata from the final step.', + }, + ]} +/> + +## Use Cases + +### Logging and Debugging + +```ts +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-4o'), + prompt: 'Hello!', + experimental_onStart: event => { + console.log(`[${new Date().toISOString()}] Generation started`, { + model: event.model.modelId, + provider: event.model.provider, + }); + }, + onStepFinish: event => { + console.log( + `[${new Date().toISOString()}] Step ${event.stepNumber} finished`, + { + finishReason: event.finishReason, + tokens: event.usage.totalTokens, + }, + ); + }, + onFinish: event => { + console.log(`[${new Date().toISOString()}] Generation complete`, { + totalSteps: event.steps.length, + totalTokens: event.totalUsage.totalTokens, + }); + }, +}); +``` + +### Tool Execution Monitoring + +```ts +import { generateText } from 'ai'; + +const result = await generateText({ + model: openai('gpt-4o'), + prompt: 'What is the weather?', + tools: { getWeather }, + experimental_onToolCallStart: event => { + console.log(`Tool "${event.toolCall.toolName}" starting...`); + }, + experimental_onToolCallFinish: event => { + if (event.success) { + console.log( + `Tool "${event.toolCall.toolName}" completed in ${event.durationMs}ms`, + ); + } else { + console.error(`Tool "${event.toolCall.toolName}" failed:`, event.error); + } + }, +}); +``` + +## Error Handling + +Errors thrown inside callbacks are caught and do not break the generation flow. This ensures that monitoring code cannot disrupt your application: + +```ts +const result = await generateText({ + model: openai('gpt-4o'), + prompt: 'Hello!', + experimental_onStart: () => { + throw new Error('This error is caught internally'); + // Generation continues normally + }, +}); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/index.mdx new file mode 100644 index 000000000..1fbebbd49 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/03-ai-sdk-core/index.mdx @@ -0,0 +1,93 @@ +--- +title: AI SDK Core +description: Learn about AI SDK Core. +--- + +# AI SDK Core + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/01-overview.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/01-overview.mdx new file mode 100644 index 000000000..4e141fae7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/01-overview.mdx @@ -0,0 +1,44 @@ +--- +title: Overview +description: An overview of AI SDK UI. +--- + +# AI SDK UI + +AI SDK UI is designed to help you build interactive chat, completion, and assistant applications with ease. It is a **framework-agnostic toolkit**, streamlining the integration of advanced AI functionalities into your applications. + +AI SDK UI provides robust abstractions that simplify the complex tasks of managing chat streams and UI updates on the frontend, enabling you to develop dynamic AI-driven interfaces more efficiently. With three main hooks — **`useChat`**, **`useCompletion`**, and **`useObject`** — you can incorporate real-time chat capabilities, text completions, streamed JSON, and interactive assistant features into your app. + +- **[`useChat`](/docs/ai-sdk-ui/chatbot)** offers real-time streaming of chat messages, abstracting state management for inputs, messages, loading, and errors, allowing for seamless integration into any UI design. +- **[`useCompletion`](/docs/ai-sdk-ui/completion)** enables you to handle text completions in your applications, managing the prompt input and automatically updating the UI as new completions are streamed. +- **[`useObject`](/docs/ai-sdk-ui/object-generation)** is a hook that allows you to consume streamed JSON objects, providing a simple way to handle and display structured data in your application. + +These hooks are designed to reduce the complexity and time required to implement AI interactions, letting you focus on creating exceptional user experiences. + +## UI Framework Support + +AI SDK UI supports the following frameworks: [React](https://react.dev/), [Svelte](https://svelte.dev/), [Vue.js](https://vuejs.org/), +[Angular](https://angular.dev/), and [SolidJS](https://www.solidjs.com/). + +Here is a comparison of the supported functions across these frameworks: + +| | [useChat](/docs/reference/ai-sdk-ui/use-chat) | [useCompletion](/docs/reference/ai-sdk-ui/use-completion) | [useObject](/docs/reference/ai-sdk-ui/use-object) | +| --------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------- | +| React `@ai-sdk/react` | | | | +| Vue.js `@ai-sdk/vue` | | | | +| Svelte `@ai-sdk/svelte` | Chat | Completion | StructuredObject | +| Angular `@ai-sdk/angular` | Chat | Completion | StructuredObject | +| [SolidJS](https://github.com/kodehort/ai-sdk-solid) (community) | | | | + +## Framework Examples + +Explore these example implementations for different frameworks: + +- [**Next.js**](https://github.com/vercel/ai/tree/main/examples/next-openai) +- [**Nuxt**](https://github.com/vercel/ai/tree/main/examples/nuxt-openai) +- [**SvelteKit**](https://github.com/vercel/ai/tree/main/examples/sveltekit-openai) +- [**Angular**](https://github.com/vercel/ai/tree/main/examples/angular) + +## API Reference + +Please check out the [AI SDK UI API Reference](/docs/reference/ai-sdk-ui) for more details on each function. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/02-chatbot.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/02-chatbot.mdx new file mode 100644 index 000000000..58a17743e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/02-chatbot.mdx @@ -0,0 +1,1313 @@ +--- +title: Chatbot +description: Learn how to use the useChat hook. +--- + +# Chatbot + +The `useChat` hook makes it effortless to create a conversational user interface for your chatbot application. It enables the streaming of chat messages from your AI provider, manages the chat state, and updates the UI automatically as new messages arrive. + +To summarize, the `useChat` hook provides the following features: + +- **Message Streaming**: All the messages from the AI provider are streamed to the chat UI in real-time. +- **Managed States**: The hook manages the states for input, messages, status, error and more for you. +- **Seamless Integration**: Easily integrate your chat AI into any design or layout with minimal effort. + +In this guide, you will learn how to use the `useChat` hook to create a chatbot application with real-time message streaming. +Check out our [chatbot with tools guide](/docs/ai-sdk-ui/chatbot-tool-usage) to learn how to use tools in your chatbot. +Let's start with the following example first. + +## Example + +```tsx filename='app/page.tsx' +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; +import { useState } from 'react'; + +export default function Page() { + const { messages, sendMessage, status } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + }), + }); + const [input, setInput] = useState(''); + + return ( + <> + {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, index) => + part.type === 'text' ? {part.text} : null, + )} +
+ ))} + +
{ + e.preventDefault(); + if (input.trim()) { + sendMessage({ text: input }); + setInput(''); + } + }} + > + setInput(e.target.value)} + disabled={status !== 'ready'} + placeholder="Say something..." + /> + +
+ + ); +} +``` + +```ts filename='app/api/chat/route.ts' +import { convertToModelMessages, streamText, UIMessage } from 'ai'; +__PROVIDER_IMPORT__; + +// Allow streaming responses up to 30 seconds +export const maxDuration = 30; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + system: 'You are a helpful assistant.', + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse(); +} +``` + + + The UI messages have a new `parts` property that contains the message parts. + We recommend rendering the messages using the `parts` property instead of the + `content` property. The parts property supports different message types, + including text, tool invocation, and tool result, and allows for more flexible + and complex chat UIs. + + +In the `Page` component, the `useChat` hook will request to your AI provider endpoint whenever the user sends a message using `sendMessage`. +The messages are then streamed back in real-time and displayed in the chat UI. + +This enables a seamless chat experience where the user can see the AI response as soon as it is available, +without having to wait for the entire response to be received. + +## Customized UI + +`useChat` also provides ways to manage the chat message states via code, show status, and update messages without being triggered by user interactions. + +### Status + +The `useChat` hook returns a `status`. It has the following possible values: + +- `submitted`: The message has been sent to the API and we're awaiting the start of the response stream. +- `streaming`: The response is actively streaming in from the API, receiving chunks of data. +- `ready`: The full response has been received and processed; a new user message can be submitted. +- `error`: An error occurred during the API request, preventing successful completion. + +You can use `status` for e.g. the following purposes: + +- To show a loading spinner while the chatbot is processing the user's message. +- To show a "Stop" button to abort the current message. +- To disable the submit button. + +```tsx filename='app/page.tsx' highlight="6,22-29,36" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; +import { useState } from 'react'; + +export default function Page() { + const { messages, sendMessage, status, stop } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + }), + }); + const [input, setInput] = useState(''); + + return ( + <> + {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, index) => + part.type === 'text' ? {part.text} : null, + )} +
+ ))} + + {(status === 'submitted' || status === 'streaming') && ( +
+ {status === 'submitted' && } + +
+ )} + +
{ + e.preventDefault(); + if (input.trim()) { + sendMessage({ text: input }); + setInput(''); + } + }} + > + setInput(e.target.value)} + disabled={status !== 'ready'} + placeholder="Say something..." + /> + +
+ + ); +} +``` + +### Error State + +Similarly, the `error` state reflects the error object thrown during the fetch request. +It can be used to display an error message, disable the submit button, or show a retry button: + + + We recommend showing a generic error message to the user, such as "Something + went wrong." This is a good practice to avoid leaking information from the + server. + + +```tsx file="app/page.tsx" highlight="6,20-27,33" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; +import { useState } from 'react'; + +export default function Chat() { + const { messages, sendMessage, error, regenerate } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + }), + }); + const [input, setInput] = useState(''); + + return ( +
+ {messages.map(m => ( +
+ {m.role}:{' '} + {m.parts.map((part, index) => + part.type === 'text' ? {part.text} : null, + )} +
+ ))} + + {error && ( + <> +
An error occurred.
+ + + )} + +
{ + e.preventDefault(); + if (input.trim()) { + sendMessage({ text: input }); + setInput(''); + } + }} + > + setInput(e.target.value)} + disabled={error != null} + /> +
+
+ ); +} +``` + +Please also see the [error handling](/docs/ai-sdk-ui/error-handling) guide for more information. + +### Modify messages + +Sometimes, you may want to directly modify some existing messages. For example, a delete button can be added to each message to allow users to remove them from the chat history. + +The `setMessages` function can help you achieve these tasks: + +```tsx +const { messages, setMessages } = useChat() + +const handleDelete = (id) => { + setMessages(messages.filter(message => message.id !== id)) +} + +return <> + {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, index) => ( + part.type === 'text' ? ( + {part.text} + ) : null + ))} + +
+ ))} + ... +``` + +You can think of `messages` and `setMessages` as a pair of `state` and `setState` in React. + +### Cancellation and regeneration + +It's also a common use case to abort the response message while it's still streaming back from the AI provider. You can do this by calling the `stop` function returned by the `useChat` hook. + +```tsx +const { stop, status } = useChat() + +return <> + + ... +``` + +When the user clicks the "Stop" button, the fetch request will be aborted. This avoids consuming unnecessary resources and improves the UX of your chatbot application. + +Similarly, you can also request the AI provider to reprocess the last message by calling the `regenerate` function returned by the `useChat` hook: + +```tsx +const { regenerate, status } = useChat(); + +return ( + <> + + ... + +); +``` + +When the user clicks the "Regenerate" button, the AI provider will regenerate the last message and replace the current one correspondingly. + +### Throttling UI Updates + +This feature is currently only available for React. + +By default, the `useChat` hook will trigger a render every time a new chunk is received. +You can throttle the UI updates with the `experimental_throttle` option. + +```tsx filename="page.tsx" highlight="2-3" +const { messages, ... } = useChat({ + // Throttle the messages and data updates to 50ms: + experimental_throttle: 50 +}) +``` + +## Event Callbacks + +`useChat` provides optional event callbacks that you can use to handle different stages of the chatbot lifecycle: + +- `onFinish`: Called when the assistant response is completed. The event includes the response message, all messages, and flags for abort, disconnect, and errors. +- `onError`: Called when an error occurs during the fetch request. +- `onData`: Called whenever a data part is received. + +These callbacks can be used to trigger additional actions, such as logging, analytics, or custom UI updates. + +```tsx +import { UIMessage } from 'ai'; + +const { + /* ... */ +} = useChat({ + onFinish: ({ message, messages, isAbort, isDisconnect, isError }) => { + // use information to e.g. update other UI states + }, + onError: error => { + console.error('An error occurred:', error); + }, + onData: data => { + console.log('Received data part from server:', data); + }, +}); +``` + +It's worth noting that you can abort the processing by throwing an error in the `onData` callback. This will trigger the `onError` callback and stop the message from being appended to the chat UI. This can be useful for handling unexpected responses from the AI provider. + +## Request Configuration + +### Custom headers, body, and credentials + +By default, the `useChat` hook sends a HTTP POST request to the `/api/chat` endpoint with the message list as the request body. You can customize the request in two ways: + +#### Hook-Level Configuration (Applied to all requests) + +You can configure transport-level options that will be applied to all requests made by the hook: + +```tsx +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; + +const { messages, sendMessage } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/custom-chat', + headers: { + Authorization: 'your_token', + }, + body: { + user_id: '123', + }, + credentials: 'same-origin', + }), +}); +``` + +#### Dynamic Hook-Level Configuration + +You can also provide functions that return configuration values. This is useful for authentication tokens that need to be refreshed, or for configuration that depends on runtime conditions: + +```tsx +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; + +const { messages, sendMessage } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/custom-chat', + headers: () => ({ + Authorization: `Bearer ${getAuthToken()}`, + 'X-User-ID': getCurrentUserId(), + }), + body: () => ({ + sessionId: getCurrentSessionId(), + preferences: getUserPreferences(), + }), + credentials: () => 'include', + }), +}); +``` + + + For component state that changes over time, use `useRef` to store the current + value and reference `ref.current` in your configuration function, or prefer + request-level options (see next section) for better reliability. + + +#### Request-Level Configuration (Recommended) + + + **Recommended**: Use request-level options for better flexibility and control. + Request-level options take precedence over hook-level options and allow you to + customize each request individually. + + +```tsx +// Pass options as the second parameter to sendMessage +sendMessage( + { text: input }, + { + headers: { + Authorization: 'Bearer token123', + 'X-Custom-Header': 'custom-value', + }, + body: { + temperature: 0.7, + max_tokens: 100, + user_id: '123', + }, + metadata: { + userId: 'user123', + sessionId: 'session456', + }, + }, +); +``` + +The request-level options are merged with hook-level options, with request-level options taking precedence. On your server side, you can handle the request with this additional information. + +### Setting custom body fields per request + +You can configure custom `body` fields on a per-request basis using the second parameter of the `sendMessage` function. +This is useful if you want to pass in additional information to your backend that is not part of the message list. + +```tsx filename="app/page.tsx" highlight="20-25" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; + +export default function Chat() { + const { messages, sendMessage } = useChat(); + const [input, setInput] = useState(''); + + return ( +
+ {messages.map(m => ( +
+ {m.role}:{' '} + {m.parts.map((part, index) => + part.type === 'text' ? {part.text} : null, + )} +
+ ))} + +
{ + event.preventDefault(); + if (input.trim()) { + sendMessage( + { text: input }, + { + body: { + customKey: 'customValue', + }, + }, + ); + setInput(''); + } + }} + > + setInput(e.target.value)} /> +
+
+ ); +} +``` + +You can retrieve these custom fields on your server side by destructuring the request body: + +```ts filename="app/api/chat/route.ts" highlight="3,4" +export async function POST(req: Request) { + // Extract additional information ("customKey") from the body of the request: + const { messages, customKey }: { messages: UIMessage[]; customKey: string } = + await req.json(); + //... +} +``` + +## Message Metadata + +You can attach custom metadata to messages for tracking information like timestamps, model details, and token usage. + +```ts +// Server: Send metadata about the message +return result.toUIMessageStreamResponse({ + messageMetadata: ({ part }) => { + if (part.type === 'start') { + return { + createdAt: Date.now(), + model: 'gpt-5.1', + }; + } + + if (part.type === 'finish') { + return { + totalTokens: part.totalUsage.totalTokens, + }; + } + }, +}); +``` + +```tsx +// Client: Access metadata via message.metadata +{ + messages.map(message => ( +
+ {message.role}:{' '} + {message.metadata?.createdAt && + new Date(message.metadata.createdAt).toLocaleTimeString()} + {/* Render message content */} + {message.parts.map((part, index) => + part.type === 'text' ? {part.text} : null, + )} + {/* Show token count if available */} + {message.metadata?.totalTokens && ( + {message.metadata.totalTokens} tokens + )} +
+ )); +} +``` + +For complete examples with type safety and advanced use cases, see the [Message Metadata documentation](/docs/ai-sdk-ui/message-metadata). + +## Transport Configuration + +You can configure custom transport behavior using the `transport` option to customize how messages are sent to your API: + +```tsx filename="app/page.tsx" +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; + +export default function Chat() { + const { messages, sendMessage } = useChat({ + id: 'my-chat', + transport: new DefaultChatTransport({ + prepareSendMessagesRequest: ({ id, messages }) => { + return { + body: { + id, + message: messages[messages.length - 1], + }, + }; + }, + }), + }); + + // ... rest of your component +} +``` + +The corresponding API route receives the custom request format: + +```ts filename="app/api/chat/route.ts" +export async function POST(req: Request) { + const { id, message } = await req.json(); + + // Load existing messages and add the new one + const messages = await loadMessages(id); + messages.push(message); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse(); +} +``` + +### Advanced: Trigger-based routing + +For more complex scenarios like message regeneration, you can use trigger-based routing: + +```tsx filename="app/page.tsx" +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; + +export default function Chat() { + const { messages, sendMessage, regenerate } = useChat({ + id: 'my-chat', + transport: new DefaultChatTransport({ + prepareSendMessagesRequest: ({ id, messages, trigger, messageId }) => { + if (trigger === 'submit-user-message') { + return { + body: { + trigger: 'submit-user-message', + id, + message: messages[messages.length - 1], + messageId, + }, + }; + } else if (trigger === 'regenerate-assistant-message') { + return { + body: { + trigger: 'regenerate-assistant-message', + id, + messageId, + }, + }; + } + throw new Error(`Unsupported trigger: ${trigger}`); + }, + }), + }); + + // ... rest of your component +} +``` + +The corresponding API route would handle different triggers: + +```ts filename="app/api/chat/route.ts" +export async function POST(req: Request) { + const { trigger, id, message, messageId } = await req.json(); + + const chat = await readChat(id); + let messages = chat.messages; + + if (trigger === 'submit-user-message') { + // Handle new user message + messages = [...messages, message]; + } else if (trigger === 'regenerate-assistant-message') { + // Handle message regeneration - remove messages after messageId + const messageIndex = messages.findIndex(m => m.id === messageId); + if (messageIndex !== -1) { + messages = messages.slice(0, messageIndex); + } + } + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse(); +} +``` + +To learn more about building custom transports, refer to the [Transport API documentation](/docs/ai-sdk-ui/transport). + +### Direct Agent Transport + +For scenarios where you want to communicate directly with an Agent without going through HTTP, you can use `DirectChatTransport`. This is useful for: + +- Server-side rendering scenarios +- Testing without network +- Single-process applications + +```tsx filename="app/page.tsx" +import { useChat } from '@ai-sdk/react'; +import { DirectChatTransport, ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + instructions: 'You are a helpful assistant.', +}); + +export default function Chat() { + const { messages, sendMessage, status } = useChat({ + transport: new DirectChatTransport({ agent }), + }); + + return ( + <> + {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, index) => + part.type === 'text' ? {part.text} : null, + )} +
+ ))} + + + + ); +} +``` + +The `DirectChatTransport` invokes the agent's `stream()` method directly, converting UI messages to model messages and streaming the response back as UI message chunks. + +For more details, see the [DirectChatTransport reference](/docs/reference/ai-sdk-ui/direct-chat-transport). + +## Controlling the response stream + +With `streamText`, you can control how error messages and usage information are sent back to the client. + +### Error Messages + +By default, the error message is masked for security reasons. +The default error message is "An error occurred." +You can forward error messages or send your own error message by providing a `getErrorMessage` function: + +```ts filename="app/api/chat/route.ts" highlight="13-27" +import { convertToModelMessages, streamText, UIMessage } from 'ai'; +__PROVIDER_IMPORT__; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse({ + onError: error => { + if (error == null) { + return 'unknown error'; + } + + if (typeof error === 'string') { + return error; + } + + if (error instanceof Error) { + return error.message; + } + + return JSON.stringify(error); + }, + }); +} +``` + +### Usage Information + +Track token consumption and resource usage with [message metadata](/docs/ai-sdk-ui/message-metadata): + +1. Define a custom metadata type with usage fields (optional, for type safety) +2. Attach usage data using `messageMetadata` in your response +3. Display usage metrics in your UI components + +Usage data is attached as metadata to messages and becomes available once the model completes its response generation. + +```ts +import { openai } from '@ai-sdk/openai'; +import { + convertToModelMessages, + streamText, + UIMessage, + type LanguageModelUsage, +} from 'ai'; +__PROVIDER_IMPORT__; + +// Create a new metadata type (optional for type-safety) +type MyMetadata = { + totalUsage: LanguageModelUsage; +}; + +// Create a new custom message type with your own metadata +export type MyUIMessage = UIMessage; + +export async function POST(req: Request) { + const { messages }: { messages: MyUIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse({ + originalMessages: messages, + messageMetadata: ({ part }) => { + // Send total usage when generation is finished + if (part.type === 'finish') { + return { totalUsage: part.totalUsage }; + } + }, + }); +} +``` + +Then, on the client, you can access the message-level metadata. + +```tsx +'use client'; + +import { useChat } from '@ai-sdk/react'; +import type { MyUIMessage } from './api/chat/route'; +import { DefaultChatTransport } from 'ai'; + +export default function Chat() { + // Use custom message type defined on the server (optional for type-safety) + const { messages } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + }), + }); + + return ( +
+ {messages.map(m => ( +
+ {m.role === 'user' ? 'User: ' : 'AI: '} + {m.parts.map(part => { + if (part.type === 'text') { + return part.text; + } + })} + {/* Render usage via metadata */} + {m.metadata?.totalUsage && ( +
Total usage: {m.metadata?.totalUsage.totalTokens} tokens
+ )} +
+ ))} +
+ ); +} +``` + +You can also access your metadata from the `onFinish` callback of `useChat`: + +```tsx +'use client'; + +import { useChat } from '@ai-sdk/react'; +import type { MyUIMessage } from './api/chat/route'; +import { DefaultChatTransport } from 'ai'; + +export default function Chat() { + // Use custom message type defined on the server (optional for type-safety) + const { messages } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + }), + onFinish: ({ message }) => { + // Access message metadata via onFinish callback + console.log(message.metadata?.totalUsage); + }, + }); +} +``` + +### Text Streams + +`useChat` can handle plain text streams by setting the `streamProtocol` option to `text`: + +```tsx filename="app/page.tsx" highlight="7" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { TextStreamChatTransport } from 'ai'; + +export default function Chat() { + const { messages } = useChat({ + transport: new TextStreamChatTransport({ + api: '/api/chat', + }), + }); + + return <>...; +} +``` + +This configuration also works with other backend servers that stream plain text. +Check out the [stream protocol guide](/docs/ai-sdk-ui/stream-protocol) for more information. + + + When using `TextStreamChatTransport`, tool calls, usage information and finish + reasons are not available. + + +## Reasoning + +Some models such as DeepSeek `deepseek-r1` +and Anthropic `claude-sonnet-4-5-20250929` support reasoning tokens. +These tokens are typically sent before the message content. +You can forward them to the client with the `sendReasoning` option: + +```ts filename="app/api/chat/route.ts" highlight="13" +import { convertToModelMessages, streamText, UIMessage } from 'ai'; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: 'deepseek/deepseek-r1', + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse({ + sendReasoning: true, + }); +} +``` + +On the client side, you can access the reasoning parts of the message object. + +Reasoning parts have a `text` property that contains the reasoning content. + +```tsx filename="app/page.tsx" +messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, index) => { + // text parts: + if (part.type === 'text') { + return
{part.text}
; + } + + // reasoning parts: + if (part.type === 'reasoning') { + return
{part.text}
; + } + })} +
+)); +``` + +## Sources + +Some providers such as [Perplexity](/providers/ai-sdk-providers/perplexity#sources) and +[Google Generative AI](/providers/ai-sdk-providers/google-generative-ai#sources) include sources in the response. + +Currently sources are limited to web pages that ground the response. +You can forward them to the client with the `sendSources` option: + +```ts filename="app/api/chat/route.ts" highlight="13" +import { convertToModelMessages, streamText, UIMessage } from 'ai'; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: 'perplexity/sonar-pro', + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse({ + sendSources: true, + }); +} +``` + +On the client side, you can access source parts of the message object. +There are two types of sources: `source-url` for web pages and `source-document` for documents. +Here is an example that renders both types of sources: + +```tsx filename="app/page.tsx" +messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + + {/* Render URL sources */} + {message.parts + .filter(part => part.type === 'source-url') + .map(part => ( + + [ + + {part.title ?? new URL(part.url).hostname} + + ] + + ))} + + {/* Render document sources */} + {message.parts + .filter(part => part.type === 'source-document') + .map(part => ( + + [{part.title ?? `Document ${part.id}`}] + + ))} +
+)); +``` + +## Image Generation + +Some models such as Google `gemini-2.5-flash-image` support image generation. +When images are generated, they are exposed as files to the client. +On the client side, you can access file parts of the message object +and render them as images. + +```tsx filename="app/page.tsx" +messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, index) => { + if (part.type === 'text') { + return
{part.text}
; + } else if (part.type === 'file' && part.mediaType.startsWith('image/')) { + return Generated image; + } + })} +
+)); +``` + +## Attachments + +The `useChat` hook supports sending file attachments along with a message as well as rendering them on the client. This can be useful for building applications that involve sending images, files, or other media content to the AI provider. + +There are two ways to send files with a message: using a `FileList` object from file inputs or using an array of file objects. + +### FileList + +By using `FileList`, you can send multiple files as attachments along with a message using the file input element. The `useChat` hook will automatically convert them into data URLs and send them to the AI provider. + + + Currently, only `image/*` and `text/*` content types get automatically + converted into [multi-modal content + parts](/docs/foundations/prompts#multi-modal-messages). You will need to + handle other content types manually. + + +```tsx filename="app/page.tsx" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { useRef, useState } from 'react'; + +export default function Page() { + const { messages, sendMessage, status } = useChat(); + + const [input, setInput] = useState(''); + const [files, setFiles] = useState(undefined); + const fileInputRef = useRef(null); + + return ( +
+
+ {messages.map(message => ( +
+
{`${message.role}: `}
+ +
+ {message.parts.map((part, index) => { + if (part.type === 'text') { + return {part.text}; + } + + if ( + part.type === 'file' && + part.mediaType?.startsWith('image/') + ) { + return {part.filename}; + } + + return null; + })} +
+
+ ))} +
+ +
{ + event.preventDefault(); + if (input.trim()) { + sendMessage({ + text: input, + files, + }); + setInput(''); + setFiles(undefined); + + if (fileInputRef.current) { + fileInputRef.current.value = ''; + } + } + }} + > + { + if (event.target.files) { + setFiles(event.target.files); + } + }} + multiple + ref={fileInputRef} + /> + setInput(e.target.value)} + disabled={status !== 'ready'} + /> +
+
+ ); +} +``` + +### File Objects + +You can also send files as objects along with a message. This can be useful for sending pre-uploaded files or data URLs. + +```tsx filename="app/page.tsx" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; +import { FileUIPart } from 'ai'; + +export default function Page() { + const { messages, sendMessage, status } = useChat(); + + const [input, setInput] = useState(''); + const [files] = useState([ + { + type: 'file', + filename: 'earth.png', + mediaType: 'image/png', + url: 'https://example.com/earth.png', + }, + { + type: 'file', + filename: 'moon.png', + mediaType: 'image/png', + url: 'data:image/png;base64,iVBORw0KGgo...', + }, + ]); + + return ( +
+
+ {messages.map(message => ( +
+
{`${message.role}: `}
+ +
+ {message.parts.map((part, index) => { + if (part.type === 'text') { + return {part.text}; + } + + if ( + part.type === 'file' && + part.mediaType?.startsWith('image/') + ) { + return {part.filename}; + } + + return null; + })} +
+
+ ))} +
+ +
{ + event.preventDefault(); + if (input.trim()) { + sendMessage({ + text: input, + files, + }); + setInput(''); + } + }} + > + setInput(e.target.value)} + disabled={status !== 'ready'} + /> +
+
+ ); +} +``` + +## Type Inference for Tools + +When working with tools in TypeScript, AI SDK UI provides type inference helpers to ensure type safety for your tool inputs and outputs. + +### InferUITool + +The `InferUITool` type helper infers the input and output types of a single tool for use in UI messages: + +```tsx +import { InferUITool } from 'ai'; +import { z } from 'zod'; + +const weatherTool = { + description: 'Get the current weather', + inputSchema: z.object({ + location: z.string().describe('The city and state'), + }), + execute: async ({ location }) => { + return `The weather in ${location} is sunny.`; + }, +}; + +// Infer the types from the tool +type WeatherUITool = InferUITool; +// This creates a type with: +// { +// input: { location: string }; +// output: string; +// } +``` + +### InferUITools + +The `InferUITools` type helper infers the input and output types of a `ToolSet`: + +```tsx +import { InferUITools, ToolSet } from 'ai'; +import { z } from 'zod'; + +const tools = { + weather: { + description: 'Get the current weather', + inputSchema: z.object({ + location: z.string().describe('The city and state'), + }), + execute: async ({ location }) => { + return `The weather in ${location} is sunny.`; + }, + }, + calculator: { + description: 'Perform basic arithmetic', + inputSchema: z.object({ + operation: z.enum(['add', 'subtract', 'multiply', 'divide']), + a: z.number(), + b: z.number(), + }), + execute: async ({ operation, a, b }) => { + switch (operation) { + case 'add': + return a + b; + case 'subtract': + return a - b; + case 'multiply': + return a * b; + case 'divide': + return a / b; + } + }, + }, +} satisfies ToolSet; + +// Infer the types from the tool set +type MyUITools = InferUITools; +// This creates a type with: +// { +// weather: { input: { location: string }; output: string }; +// calculator: { input: { operation: 'add' | 'subtract' | 'multiply' | 'divide'; a: number; b: number }; output: number }; +// } +``` + +### Using Inferred Types + +You can use these inferred types to create a custom UIMessage type and pass it to various AI SDK UI functions: + +```tsx +import { InferUITools, UIMessage, UIDataTypes } from 'ai'; + +type MyUITools = InferUITools; +type MyUIMessage = UIMessage; +``` + +Pass the custom type to `useChat` or `createUIMessageStream`: + +```tsx +import { useChat } from '@ai-sdk/react'; +import { createUIMessageStream } from 'ai'; +import type { MyUIMessage } from './types'; + +// With useChat +const { messages } = useChat(); + +// With createUIMessageStream +const stream = createUIMessageStream(/* ... */); +``` + +This provides full type safety for tool inputs and outputs on the client and server. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx new file mode 100644 index 000000000..9b6186492 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx @@ -0,0 +1,535 @@ +--- +title: Chatbot Message Persistence +description: Learn how to store and load chat messages in a chatbot. +--- + +# Chatbot Message Persistence + +Being able to store and load chat messages is crucial for most AI chatbots. +In this guide, we'll show how to implement message persistence with `useChat` and `streamText`. + + + This guide does not cover authorization, error handling, or other real-world + considerations. It is intended to be a simple example of how to implement + message persistence. + + +## Starting a new chat + +When the user navigates to the chat page without providing a chat ID, +we need to create a new chat and redirect to the chat page with the new chat ID. + +```tsx filename="app/chat/page.tsx" +import { redirect } from 'next/navigation'; +import { createChat } from '@util/chat-store'; + +export default async function Page() { + const id = await createChat(); // create a new chat + redirect(`/chat/${id}`); // redirect to chat page, see below +} +``` + +Our example chat store implementation uses files to store the chat messages. +In a real-world application, you would use a database or a cloud storage service, +and get the chat ID from the database. +That being said, the function interfaces are designed to be easily replaced with other implementations. + +```tsx filename="util/chat-store.ts" +import { generateId } from 'ai'; +import { existsSync, mkdirSync } from 'fs'; +import { writeFile } from 'fs/promises'; +import path from 'path'; + +export async function createChat(): Promise { + const id = generateId(); // generate a unique chat ID + await writeFile(getChatFile(id), '[]'); // create an empty chat file + return id; +} + +function getChatFile(id: string): string { + const chatDir = path.join(process.cwd(), '.chats'); + if (!existsSync(chatDir)) mkdirSync(chatDir, { recursive: true }); + return path.join(chatDir, `${id}.json`); +} +``` + +## Loading an existing chat + +When the user navigates to the chat page with a chat ID, we need to load the chat messages from storage. + +The `loadChat` function in our file-based chat store is implemented as follows: + +```tsx filename="util/chat-store.ts" +import { UIMessage } from 'ai'; +import { readFile } from 'fs/promises'; + +export async function loadChat(id: string): Promise { + return JSON.parse(await readFile(getChatFile(id), 'utf8')); +} + +// ... rest of the file +``` + +## Validating messages on the server + +When processing messages on the server that contain tool calls, custom metadata, or data parts, you should validate them using `validateUIMessages` before sending them to the model. + +### Validation with tools + +When your messages include tool calls, validate them against your tool definitions: + +```tsx filename="app/api/chat/route.ts" highlight="7-25,32-37" +import { + convertToModelMessages, + streamText, + UIMessage, + validateUIMessages, + tool, +} from 'ai'; +import { z } from 'zod'; +import { loadChat, saveChat } from '@util/chat-store'; +import { openai } from '@ai-sdk/openai'; +import { dataPartsSchema, metadataSchema } from '@util/schemas'; + +// Define your tools +const tools = { + weather: tool({ + description: 'Get weather information', + parameters: z.object({ + location: z.string(), + units: z.enum(['celsius', 'fahrenheit']), + }), + execute: async ({ location, units }) => { + /* tool implementation */ + }, + }), + // other tools +}; + +export async function POST(req: Request) { + const { message, id } = await req.json(); + + // Load previous messages from database + const previousMessages = await loadChat(id); + + // Append new message to previousMessages messages + const messages = [...previousMessages, message]; + + // Validate loaded messages against + // tools, data parts schema, and metadata schema + const validatedMessages = await validateUIMessages({ + messages, + tools, // Ensures tool calls in messages match current schemas + dataPartsSchema, + metadataSchema, + }); + + const result = streamText({ + model: 'openai/gpt-5-mini', + messages: convertToModelMessages(validatedMessages), + tools, + }); + + return result.toUIMessageStreamResponse({ + originalMessages: messages, + onFinish: ({ messages }) => { + saveChat({ chatId: id, messages }); + }, + }); +} +``` + +### Handling validation errors + +Handle validation errors gracefully when messages from the database don't match current schemas: + +```tsx filename="app/api/chat/route.ts" highlight="3,10-24" +import { + convertToModelMessages, + streamText, + validateUIMessages, + TypeValidationError, +} from 'ai'; +import { type MyUIMessage } from '@/types'; + +export async function POST(req: Request) { + const { message, id } = await req.json(); + + // Load and validate messages from database + let validatedMessages: MyUIMessage[]; + + try { + const previousMessages = await loadMessagesFromDB(id); + validatedMessages = await validateUIMessages({ + // append the new message to the previous messages: + messages: [...previousMessages, message], + tools, + metadataSchema, + }); + } catch (error) { + if (error instanceof TypeValidationError) { + // Log validation error for monitoring + console.error('Database messages validation failed:', error); + // Could implement message migration or filtering here + // For now, start with empty history + validatedMessages = []; + } else { + throw error; + } + } + + // Continue with validated messages... +} +``` + +## Displaying the chat + +Once messages are loaded from storage, you can display them in your chat UI. Here's how to set up the page component and the chat display: + +```tsx filename="app/chat/[id]/page.tsx" +import { loadChat } from '@util/chat-store'; +import Chat from '@ui/chat'; + +export default async function Page(props: { params: Promise<{ id: string }> }) { + const { id } = await props.params; + const messages = await loadChat(id); + return ; +} +``` + +The chat component uses the `useChat` hook to manage the conversation: + +```tsx filename="ui/chat.tsx" highlight="10-16" +'use client'; + +import { UIMessage, useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; +import { useState } from 'react'; + +export default function Chat({ + id, + initialMessages, +}: { id?: string | undefined; initialMessages?: UIMessage[] } = {}) { + const [input, setInput] = useState(''); + const { sendMessage, messages } = useChat({ + id, // use the provided chat ID + messages: initialMessages, // load initial messages + transport: new DefaultChatTransport({ + api: '/api/chat', + }), + }); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + if (input.trim()) { + sendMessage({ text: input }); + setInput(''); + } + }; + + // simplified rendering code, extend as needed: + return ( +
+ {messages.map(m => ( +
+ {m.role === 'user' ? 'User: ' : 'AI: '} + {m.parts + .map(part => (part.type === 'text' ? part.text : '')) + .join('')} +
+ ))} + +
+ setInput(e.target.value)} + placeholder="Type a message..." + /> + +
+
+ ); +} +``` + +## Storing messages + +`useChat` sends the chat id and the messages to the backend. + + + The `useChat` message format is different from the `ModelMessage` format. The + `useChat` message format is designed for frontend display, and contains + additional fields such as `id` and `createdAt`. We recommend storing the + messages in the `useChat` message format. + +When loading messages from storage that contain tools, metadata, or custom data +parts, validate them using `validateUIMessages` before processing (see the +[validation section](#validating-messages-from-database) above). + + + +Storing messages is done in the `onFinish` callback of the `toUIMessageStreamResponse` function. +`onFinish` receives the complete messages including the new AI response as `UIMessage[]`. + +```tsx filename="app/api/chat/route.ts" highlight="6,11-17" +import { openai } from '@ai-sdk/openai'; +import { saveChat } from '@util/chat-store'; +import { convertToModelMessages, streamText, UIMessage } from 'ai'; + +export async function POST(req: Request) { + const { messages, chatId }: { messages: UIMessage[]; chatId: string } = + await req.json(); + + const result = streamText({ + model: 'openai/gpt-5-mini', + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse({ + originalMessages: messages, + onFinish: ({ messages }) => { + saveChat({ chatId, messages }); + }, + }); +} +``` + +The actual storage of the messages is done in the `saveChat` function, which in +our file-based chat store is implemented as follows: + +```tsx filename="util/chat-store.ts" +import { UIMessage } from 'ai'; +import { writeFile } from 'fs/promises'; + +export async function saveChat({ + chatId, + messages, +}: { + chatId: string; + messages: UIMessage[]; +}): Promise { + const content = JSON.stringify(messages, null, 2); + await writeFile(getChatFile(chatId), content); +} + +// ... rest of the file +``` + +## Message IDs + +In addition to a chat ID, each message has an ID. +You can use this message ID to e.g. manipulate individual messages. + +### Client-side vs Server-side ID Generation + +By default, message IDs are generated client-side: + +- User message IDs are generated by the `useChat` hook on the client +- AI response message IDs are generated by `streamText` on the server + +For applications without persistence, client-side ID generation works perfectly. +However, **for persistence, you need server-side generated IDs** to ensure consistency across sessions and prevent ID conflicts when messages are stored and retrieved. + +### Setting Up Server-side ID Generation + +When implementing persistence, you have two options for generating server-side IDs: + +1. **Using `generateMessageId` in `toUIMessageStreamResponse`** +2. **Setting IDs in your start message part with `createUIMessageStream`** + +#### Option 1: Using `generateMessageId` in `toUIMessageStreamResponse` + +You can control the ID format by providing ID generators using [`createIdGenerator()`](/docs/reference/ai-sdk-core/create-id-generator): + +```tsx filename="app/api/chat/route.ts" highlight="7-11" +import { createIdGenerator, streamText } from 'ai'; + +export async function POST(req: Request) { + // ... + const result = streamText({ + // ... + }); + + return result.toUIMessageStreamResponse({ + originalMessages: messages, + // Generate consistent server-side IDs for persistence: + generateMessageId: createIdGenerator({ + prefix: 'msg', + size: 16, + }), + onFinish: ({ messages }) => { + saveChat({ chatId, messages }); + }, + }); +} +``` + +#### Option 2: Setting IDs with `createUIMessageStream` + +Alternatively, you can use `createUIMessageStream` to control the message ID by writing a start message part: + +```tsx filename="app/api/chat/route.ts" highlight="8-18" +import { + generateId, + streamText, + createUIMessageStream, + createUIMessageStreamResponse, +} from 'ai'; + +export async function POST(req: Request) { + const { messages, chatId } = await req.json(); + + const stream = createUIMessageStream({ + execute: ({ writer }) => { + // Write start message part with custom ID + writer.write({ + type: 'start', + messageId: generateId(), // Generate server-side ID for persistence + }); + + const result = streamText({ + model: 'openai/gpt-5-mini', + messages: await convertToModelMessages(messages), + }); + + writer.merge(result.toUIMessageStream({ sendStart: false })); // omit start message part + }, + originalMessages: messages, + onFinish: ({ responseMessage }) => { + // save your chat here + }, + }); + + return createUIMessageStreamResponse({ stream }); +} +``` + + + For client-side applications that don't require persistence, you can still customize client-side ID generation: + +```tsx filename="ui/chat.tsx" +import { createIdGenerator } from 'ai'; +import { useChat } from '@ai-sdk/react'; + +const { ... } = useChat({ + generateId: createIdGenerator({ + prefix: 'msgc', + size: 16, + }), + // ... +}); +``` + + + +## Sending only the last message + +Once you have implemented message persistence, you might want to send only the last message to the server. +This reduces the amount of data sent to the server on each request and can improve performance. + +To achieve this, you can provide a `prepareSendMessagesRequest` function to the transport. +This function receives the messages and the chat ID, and returns the request body to be sent to the server. + +```tsx filename="ui/chat.tsx" highlight="7-12" +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; + +const { + // ... +} = useChat({ + // ... + transport: new DefaultChatTransport({ + api: '/api/chat', + // only send the last message to the server: + prepareSendMessagesRequest({ messages, id }) { + return { body: { message: messages[messages.length - 1], id } }; + }, + }), +}); +``` + +On the server, you can then load the previous messages and append the new message to the previous messages. If your messages contain tools, metadata, or custom data parts, you should validate them: + +```tsx filename="app/api/chat/route.ts" highlight="2-11,14-18" +import { convertToModelMessages, UIMessage, validateUIMessages } from 'ai'; +// import your tools and schemas + +export async function POST(req: Request) { + // get the last message from the client: + const { message, id } = await req.json(); + + // load the previous messages from the server: + const previousMessages = await loadChat(id); + + // validate messages if they contain tools, metadata, or data parts: + const validatedMessages = await validateUIMessages({ + // append the new message to the previous messages: + messages: [...previousMessages, message], + tools, // if using tools + metadataSchema, // if using custom metadata + dataSchemas, // if using custom data parts + }); + + const result = streamText({ + // ... + messages: convertToModelMessages(validatedMessages), + }); + + return result.toUIMessageStreamResponse({ + originalMessages: validatedMessages, + onFinish: ({ messages }) => { + saveChat({ chatId: id, messages }); + }, + }); +} +``` + +## Handling client disconnects + +By default, the AI SDK `streamText` function uses backpressure to the language model provider to prevent +the consumption of tokens that are not yet requested. + +However, this means that when the client disconnects, e.g. by closing the browser tab or because of a network issue, +the stream from the LLM will be aborted and the conversation may end up in a broken state. + +Assuming that you have a [storage solution](#storing-messages) in place, you can use the `consumeStream` method to consume the stream on the backend, +and then save the result as usual. +`consumeStream` effectively removes the backpressure, +meaning that the result is stored even when the client has already disconnected. + +```tsx filename="app/api/chat/route.ts" highlight="19-21" +import { convertToModelMessages, streamText, UIMessage } from 'ai'; +import { saveChat } from '@util/chat-store'; + +export async function POST(req: Request) { + const { messages, chatId }: { messages: UIMessage[]; chatId: string } = + await req.json(); + + const result = streamText({ + model, + messages: await convertToModelMessages(messages), + }); + + // consume the stream to ensure it runs to completion & triggers onFinish + // even when the client response is aborted: + result.consumeStream(); // no await + + return result.toUIMessageStreamResponse({ + originalMessages: messages, + onFinish: ({ messages }) => { + saveChat({ chatId, messages }); + }, + }); +} +``` + +When the client reloads the page after a disconnect, the chat will be restored from the storage solution. + + + In production applications, you would also track the state of the request (in + progress, complete) in your stored messages and use it on the client to cover + the case where the client reloads the page after a disconnection, but the + streaming is not yet complete. + + +For more robust handling of disconnects, you may want to add resumability on disconnects. Check out the [Chatbot Resume Streams](/docs/ai-sdk-ui/chatbot-resume-streams) documentation to learn more. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/03-chatbot-resume-streams.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/03-chatbot-resume-streams.mdx new file mode 100644 index 000000000..e2d981236 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/03-chatbot-resume-streams.mdx @@ -0,0 +1,263 @@ +--- +title: Chatbot Resume Streams +description: Learn how to resume chatbot streams after client disconnects. +--- + +# Chatbot Resume Streams + +`useChat` supports resuming ongoing streams after page reloads. Use this feature to build applications with long-running generations. + + + Stream resumption is not compatible with abort functionality. Closing a tab or + refreshing the page triggers an abort signal that will break the resumption + mechanism. Do not use `resume: true` if you need abort functionality in your + application. See + [troubleshooting](/docs/troubleshooting/abort-breaks-resumable-streams) for + more details. + + +## How stream resumption works + +Stream resumption requires persistence for messages and active streams in your application. The AI SDK provides tools to connect to storage, but you need to set up the storage yourself. + +**The AI SDK provides:** + +- A `resume` option in `useChat` that automatically reconnects to active streams +- Access to the outgoing stream through the `consumeSseStream` callback +- Automatic HTTP requests to your resume endpoints + +**You build:** + +- Storage to track which stream belongs to each chat +- Redis to store the UIMessage stream +- Two API endpoints: POST to create streams, GET to resume them +- Integration with [`resumable-stream`](https://www.npmjs.com/package/resumable-stream) to manage Redis storage + +## Prerequisites + +To implement resumable streams in your chat application, you need: + +1. **The `resumable-stream` package** - Handles the publisher/subscriber mechanism for streams +2. **A Redis instance** - Stores stream data (e.g. [Redis through Vercel](https://vercel.com/marketplace/redis)) +3. **A persistence layer** - Tracks which stream ID is active for each chat (e.g. database) + +## Implementation + +### 1. Client-side: Enable stream resumption + +Use the `resume` option in the `useChat` hook to enable stream resumption. When `resume` is true, the hook automatically attempts to reconnect to any active stream for the chat on mount: + +```tsx filename="app/chat/[chatId]/chat.tsx" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport, type UIMessage } from 'ai'; + +export function Chat({ + chatData, + resume = false, +}: { + chatData: { id: string; messages: UIMessage[] }; + resume?: boolean; +}) { + const { messages, sendMessage, status } = useChat({ + id: chatData.id, + messages: chatData.messages, + resume, // Enable automatic stream resumption + transport: new DefaultChatTransport({ + // You must send the id of the chat + prepareSendMessagesRequest: ({ id, messages }) => { + return { + body: { + id, + message: messages[messages.length - 1], + }, + }; + }, + }), + }); + + return
{/* Your chat UI */}
; +} +``` + + + You must send the chat ID with each request (see + `prepareSendMessagesRequest`). + + +When you enable `resume`, the `useChat` hook makes a `GET` request to `/api/chat/[id]/stream` on mount to check for and resume any active streams. + +Let's start by creating the POST handler to create the resumable stream. + +### 2. Create the POST handler + +The POST handler creates resumable streams using the `consumeSseStream` callback: + +```ts filename="app/api/chat/route.ts" +import { openai } from '@ai-sdk/openai'; +import { readChat, saveChat } from '@util/chat-store'; +import { + convertToModelMessages, + generateId, + streamText, + type UIMessage, +} from 'ai'; +import { after } from 'next/server'; +import { createResumableStreamContext } from 'resumable-stream'; + +export async function POST(req: Request) { + const { + message, + id, + }: { + message: UIMessage | undefined; + id: string; + } = await req.json(); + + const chat = await readChat(id); + let messages = chat.messages; + + messages = [...messages, message!]; + + // Clear any previous active stream and save the user message + saveChat({ id, messages, activeStreamId: null }); + + const result = streamText({ + model: 'openai/gpt-5-mini', + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse({ + originalMessages: messages, + generateMessageId: generateId, + onFinish: ({ messages }) => { + // Clear the active stream when finished + saveChat({ id, messages, activeStreamId: null }); + }, + async consumeSseStream({ stream }) { + const streamId = generateId(); + + // Create a resumable stream from the SSE stream + const streamContext = createResumableStreamContext({ waitUntil: after }); + await streamContext.createNewResumableStream(streamId, () => stream); + + // Update the chat with the active stream ID + saveChat({ id, activeStreamId: streamId }); + }, + }); +} +``` + +### 3. Implement the GET handler + +Create a GET handler at `/api/chat/[id]/stream` that: + +1. Reads the chat ID from the route params +2. Loads the chat data to check for an active stream +3. Returns 204 (No Content) if no stream is active +4. Resumes the existing stream if one is found + +```ts filename="app/api/chat/[id]/stream/route.ts" +import { readChat } from '@util/chat-store'; +import { UI_MESSAGE_STREAM_HEADERS } from 'ai'; +import { after } from 'next/server'; +import { createResumableStreamContext } from 'resumable-stream'; + +export async function GET( + _: Request, + { params }: { params: Promise<{ id: string }> }, +) { + const { id } = await params; + + const chat = await readChat(id); + + if (chat.activeStreamId == null) { + // no content response when there is no active stream + return new Response(null, { status: 204 }); + } + + const streamContext = createResumableStreamContext({ + waitUntil: after, + }); + + return new Response( + await streamContext.resumeExistingStream(chat.activeStreamId), + { headers: UI_MESSAGE_STREAM_HEADERS }, + ); +} +``` + + + The `after` function from Next.js allows work to continue after the response + has been sent. This ensures that the resumable stream persists in Redis even + after the initial response is returned to the client, enabling reconnection + later. + + +## How it works + +### Request lifecycle + +![Diagram showing the architecture and lifecycle of resumable stream requests](https://e742qlubrjnjqpp0.public.blob.vercel-storage.com/resume-stream-diagram.png) + +The diagram above shows the complete lifecycle of a resumable stream: + +1. **Stream creation**: When you send a new message, the POST handler uses `streamText` to generate the response. The `consumeSseStream` callback creates a resumable stream with a unique ID and stores it in Redis through the `resumable-stream` package +2. **Stream tracking**: Your persistence layer saves the `activeStreamId` in the chat data +3. **Client reconnection**: When the client reconnects (page reload), the `resume` option triggers a GET request to `/api/chat/[id]/stream` +4. **Stream recovery**: The GET handler checks for an `activeStreamId` and uses `resumeExistingStream` to reconnect. If no active stream exists, it returns a 204 (No Content) response +5. **Completion cleanup**: When the stream finishes, the `onFinish` callback clears the `activeStreamId` by setting it to `null` + +## Customize the resume endpoint + +By default, the `useChat` hook makes a GET request to `/api/chat/[id]/stream` when resuming. Customize this endpoint, credentials, and headers, using the `prepareReconnectToStreamRequest` option in `DefaultChatTransport`: + +```tsx filename="app/chat/[chatId]/chat.tsx" +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; + +export function Chat({ chatData, resume }) { + const { messages, sendMessage } = useChat({ + id: chatData.id, + messages: chatData.messages, + resume, + transport: new DefaultChatTransport({ + // Customize reconnect settings (optional) + prepareReconnectToStreamRequest: ({ id }) => { + return { + api: `/api/chat/${id}/stream`, // Default pattern + // Or use a different pattern: + // api: `/api/streams/${id}/resume`, + // api: `/api/resume-chat?id=${id}`, + credentials: 'include', // Include cookies/auth + headers: { + Authorization: 'Bearer token', + 'X-Custom-Header': 'value', + }, + }; + }, + }), + }); + + return
{/* Your chat UI */}
; +} +``` + +This lets you: + +- Match your existing API route structure +- Add query parameters or custom paths +- Integrate with different backend architectures + +## Important considerations + +- **Incompatibility with abort**: Stream resumption is not compatible with abort functionality. Closing a tab or refreshing the page triggers an abort signal that will break the resumption mechanism. Do not use `resume: true` if you need abort functionality in your application +- **Stream expiration**: Streams in Redis expire after a set time (configurable in the `resumable-stream` package) +- **Multiple clients**: Multiple clients can connect to the same stream simultaneously +- **Error handling**: When no active stream exists, the GET handler returns a 204 (No Content) status code +- **Security**: Ensure proper authentication and authorization for both creating and resuming streams +- **Race conditions**: Clear the `activeStreamId` when starting a new stream to prevent resuming outdated streams + +
+ diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx new file mode 100644 index 000000000..3c06b2e4a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx @@ -0,0 +1,682 @@ +--- +title: Chatbot Tool Usage +description: Learn how to use tools with the useChat hook. +--- + +# Chatbot Tool Usage + +With [`useChat`](/docs/reference/ai-sdk-ui/use-chat) and [`streamText`](/docs/reference/ai-sdk-core/stream-text), you can use tools in your chatbot application. +The AI SDK supports three types of tools in this context: + +1. Automatically executed server-side tools +2. Automatically executed client-side tools +3. Tools that require user interaction, such as confirmation dialogs + +The flow is as follows: + +1. The user enters a message in the chat UI. +1. The message is sent to the API route. +1. In your server side route, the language model generates tool calls during the `streamText` call. +1. All tool calls are forwarded to the client. +1. Server-side tools are executed using their `execute` method and their results are forwarded to the client. +1. Client-side tools that should be automatically executed are handled with the `onToolCall` callback. + You must call `addToolOutput` to provide the tool result. +1. Client-side tool that require user interactions can be displayed in the UI. + The tool calls and results are available as tool invocation parts in the `parts` property of the last assistant message. +1. When the user interaction is done, `addToolOutput` can be used to add the tool result to the chat. +1. The chat can be configured to automatically submit when all tool results are available using `sendAutomaticallyWhen`. + This triggers another iteration of this flow. + +The tool calls and tool executions are integrated into the assistant message as typed tool parts. +A tool part is at first a tool call, and then it becomes a tool result when the tool is executed. +The tool result contains all information about the tool call as well as the result of the tool execution. + + + Tool result submission can be configured using the `sendAutomaticallyWhen` + option. You can use the `lastAssistantMessageIsCompleteWithToolCalls` helper + to automatically submit when all tool results are available. This simplifies + the client-side code while still allowing full control when needed. + + +## Example + +In this example, we'll use three tools: + +- `getWeatherInformation`: An automatically executed server-side tool that returns the weather in a given city. +- `askForConfirmation`: A user-interaction client-side tool that asks the user for confirmation. +- `getLocation`: An automatically executed client-side tool that returns a random city. + +### API route + +```tsx filename='app/api/chat/route.ts' +import { convertToModelMessages, streamText, UIMessage } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +// Allow streaming responses up to 30 seconds +export const maxDuration = 30; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + tools: { + // server-side tool with execute function: + getWeatherInformation: { + description: 'show the weather in a given city to the user', + inputSchema: z.object({ city: z.string() }), + execute: async ({}: { city: string }) => { + const weatherOptions = ['sunny', 'cloudy', 'rainy', 'snowy', 'windy']; + return weatherOptions[ + Math.floor(Math.random() * weatherOptions.length) + ]; + }, + }, + // client-side tool that starts user interaction: + askForConfirmation: { + description: 'Ask the user for confirmation.', + inputSchema: z.object({ + message: z.string().describe('The message to ask for confirmation.'), + }), + }, + // client-side tool that is automatically executed on the client: + getLocation: { + description: + 'Get the user location. Always ask for confirmation before using this tool.', + inputSchema: z.object({}), + }, + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +### Client-side page + +The client-side page uses the `useChat` hook to create a chatbot application with real-time message streaming. +Tool calls are displayed in the chat UI as typed tool parts. +Please make sure to render the messages using the `parts` property of the message. + +There are three things worth mentioning: + +1. The [`onToolCall`](/docs/reference/ai-sdk-ui/use-chat#on-tool-call) callback is used to handle client-side tools that should be automatically executed. + In this example, the `getLocation` tool is a client-side tool that returns a random city. + You call `addToolOutput` to provide the result (without `await` to avoid potential deadlocks). + + + Always check `if (toolCall.dynamic)` first in your `onToolCall` handler. + Without this check, TypeScript will throw an error like: `Type 'string' is + not assignable to type '"toolName1" | "toolName2"'` when you try to use + `toolCall.toolName` in `addToolOutput`. + + +2. The [`sendAutomaticallyWhen`](/docs/reference/ai-sdk-ui/use-chat#send-automatically-when) option with `lastAssistantMessageIsCompleteWithToolCalls` helper automatically submits when all tool results are available. + +3. The `parts` array of assistant messages contains tool parts with typed names like `tool-askForConfirmation`. + The client-side tool `askForConfirmation` is displayed in the UI. + It asks the user for confirmation and displays the result once the user confirms or denies the execution. + The result is added to the chat using `addToolOutput` with the `tool` parameter for type safety. + +```tsx filename='app/page.tsx' highlight="2,6,10,14-20" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { + DefaultChatTransport, + lastAssistantMessageIsCompleteWithToolCalls, +} from 'ai'; +import { useState } from 'react'; + +export default function Chat() { + const { messages, sendMessage, addToolOutput } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + }), + + sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls, + + // run client-side tools that are automatically executed: + async onToolCall({ toolCall }) { + // Check if it's a dynamic tool first for proper type narrowing + if (toolCall.dynamic) { + return; + } + + if (toolCall.toolName === 'getLocation') { + const cities = ['New York', 'Los Angeles', 'Chicago', 'San Francisco']; + + // No await - avoids potential deadlocks + addToolOutput({ + tool: 'getLocation', + toolCallId: toolCall.toolCallId, + output: cities[Math.floor(Math.random() * cities.length)], + }); + } + }, + }); + const [input, setInput] = useState(''); + + return ( + <> + {messages?.map(message => ( +
+ {`${message.role}: `} + {message.parts.map(part => { + switch (part.type) { + // render text parts as simple text: + case 'text': + return part.text; + + // for tool parts, use the typed tool part names: + case 'tool-askForConfirmation': { + const callId = part.toolCallId; + + switch (part.state) { + case 'input-streaming': + return ( +
Loading confirmation request...
+ ); + case 'input-available': + return ( +
+ {part.input.message} +
+ + +
+
+ ); + case 'output-available': + return ( +
+ Location access allowed: {part.output} +
+ ); + case 'output-error': + return
Error: {part.errorText}
; + } + break; + } + + case 'tool-getLocation': { + const callId = part.toolCallId; + + switch (part.state) { + case 'input-streaming': + return ( +
Preparing location request...
+ ); + case 'input-available': + return
Getting location...
; + case 'output-available': + return
Location: {part.output}
; + case 'output-error': + return ( +
+ Error getting location: {part.errorText} +
+ ); + } + break; + } + + case 'tool-getWeatherInformation': { + const callId = part.toolCallId; + + switch (part.state) { + // example of pre-rendering streaming tool inputs: + case 'input-streaming': + return ( +
{JSON.stringify(part, null, 2)}
+ ); + case 'input-available': + return ( +
+ Getting weather information for {part.input.city}... +
+ ); + case 'output-available': + return ( +
+ Weather in {part.input.city}: {part.output} +
+ ); + case 'output-error': + return ( +
+ Error getting weather for {part.input.city}:{' '} + {part.errorText} +
+ ); + } + break; + } + } + })} +
+
+ ))} + +
{ + e.preventDefault(); + if (input.trim()) { + sendMessage({ text: input }); + setInput(''); + } + }} + > + setInput(e.target.value)} /> +
+ + ); +} +``` + +### Error handling + +Sometimes an error may occur during client-side tool execution. Use the `addToolOutput` method with a `state` of `output-error` and `errorText` value instead of `output` record the error. + +```tsx filename='app/page.tsx' highlight="19,36-41" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { + DefaultChatTransport, + lastAssistantMessageIsCompleteWithToolCalls, +} from 'ai'; +import { useState } from 'react'; + +export default function Chat() { + const { messages, sendMessage, addToolOutput } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + }), + + sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls, + + // run client-side tools that are automatically executed: + async onToolCall({ toolCall }) { + // Check if it's a dynamic tool first for proper type narrowing + if (toolCall.dynamic) { + return; + } + + if (toolCall.toolName === 'getWeatherInformation') { + try { + const weather = await getWeatherInformation(toolCall.input); + + // No await - avoids potential deadlocks + addToolOutput({ + tool: 'getWeatherInformation', + toolCallId: toolCall.toolCallId, + output: weather, + }); + } catch (err) { + addToolOutput({ + tool: 'getWeatherInformation', + toolCallId: toolCall.toolCallId, + state: 'output-error', + errorText: 'Unable to get the weather information', + }); + } + } + }, + }); +} +``` + +## Tool Execution Approval + +Tool execution approval lets you require user confirmation before a server-side tool runs. Unlike [client-side tools](#example) that execute in the browser, tools with approval still execute on the server—but only after the user approves. + +Use tool execution approval when you want to: + +- Confirm sensitive operations (payments, deletions, external API calls) +- Let users review tool inputs before execution +- Add human oversight to automated workflows + +For tools that need to run in the browser (updating UI state, accessing browser APIs), use client-side tools instead. + +### Server Setup + +Enable approval by setting `needsApproval` on your tool. See [Tool Execution Approval](/docs/ai-sdk-core/tools-and-tool-calling#tool-execution-approval) for configuration options including dynamic approval based on input. + +```tsx filename='app/api/chat/route.ts' +import { streamText, tool } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +export async function POST(req: Request) { + const { messages } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages, + tools: { + getWeather: tool({ + description: 'Get the weather in a location', + inputSchema: z.object({ + city: z.string(), + }), + needsApproval: true, + execute: async ({ city }) => { + const weather = await fetchWeather(city); + return weather; + }, + }), + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +### Client-Side Approval UI + +When a tool requires approval, the tool part state is `approval-requested`. Use `addToolApprovalResponse` to approve or deny: + +```tsx filename='app/page.tsx' +'use client'; + +import { useChat } from '@ai-sdk/react'; + +export default function Chat() { + const { messages, addToolApprovalResponse } = useChat(); + + return ( + <> + {messages.map(message => ( +
+ {message.parts.map(part => { + if (part.type === 'tool-getWeather') { + switch (part.state) { + case 'approval-requested': + return ( +
+

Get weather for {part.input.city}?

+ + +
+ ); + case 'output-available': + return ( +
+ Weather in {part.input.city}: {part.output} +
+ ); + } + } + // Handle other part types... + })} +
+ ))} + + ); +} +``` + +### Auto-Submit After Approval + + + If nothing happens after you approve a tool execution, make sure you either + call `sendMessage` manually or configure `sendAutomaticallyWhen` on the + `useChat` hook. + + +Use `lastAssistantMessageIsCompleteWithApprovalResponses` to automatically continue the conversation after approvals: + +```tsx +import { useChat } from '@ai-sdk/react'; +import { lastAssistantMessageIsCompleteWithApprovalResponses } from 'ai'; + +const { messages, addToolApprovalResponse } = useChat({ + sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithApprovalResponses, +}); +``` + +## Dynamic Tools + +When using dynamic tools (tools with unknown types at compile time), the UI parts use a generic `dynamic-tool` type instead of specific tool types: + +```tsx filename='app/page.tsx' +{ + message.parts.map((part, index) => { + switch (part.type) { + // Static tools with specific (`tool-${toolName}`) types + case 'tool-getWeatherInformation': + return ; + + // Dynamic tools use generic `dynamic-tool` type + case 'dynamic-tool': + return ( +
+

Tool: {part.toolName}

+ {part.state === 'input-streaming' && ( +
{JSON.stringify(part.input, null, 2)}
+ )} + {part.state === 'output-available' && ( +
{JSON.stringify(part.output, null, 2)}
+ )} + {part.state === 'output-error' && ( +
Error: {part.errorText}
+ )} +
+ ); + } + }); +} +``` + +Dynamic tools are useful when integrating with: + +- MCP (Model Context Protocol) tools without schemas +- User-defined functions loaded at runtime +- External tool providers + +## Tool call streaming + +Tool call streaming is **enabled by default** in AI SDK 5.0, allowing you to stream tool calls while they are being generated. This provides a better user experience by showing tool inputs as they are generated in real-time. + +```tsx filename='app/api/chat/route.ts' +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + // toolCallStreaming is enabled by default in v5 + // ... + }); + + return result.toUIMessageStreamResponse(); +} +``` + +With tool call streaming enabled, partial tool calls are streamed as part of the data stream. +They are available through the `useChat` hook. +The typed tool parts of assistant messages will also contain partial tool calls. +You can use the `state` property of the tool part to render the correct UI. + +```tsx filename='app/page.tsx' highlight="9,10" +export default function Chat() { + // ... + return ( + <> + {messages?.map(message => ( +
+ {message.parts.map(part => { + switch (part.type) { + case 'tool-askForConfirmation': + case 'tool-getLocation': + case 'tool-getWeatherInformation': + switch (part.state) { + case 'input-streaming': + return
{JSON.stringify(part.input, null, 2)}
; + case 'input-available': + return
{JSON.stringify(part.input, null, 2)}
; + case 'output-available': + return
{JSON.stringify(part.output, null, 2)}
; + case 'output-error': + return
Error: {part.errorText}
; + } + } + })} +
+ ))} + + ); +} +``` + +## Step start parts + +When you are using multi-step tool calls, the AI SDK will add step start parts to the assistant messages. +If you want to display boundaries between tool calls, you can use the `step-start` parts as follows: + +```tsx filename='app/page.tsx' +// ... +// where you render the message parts: +message.parts.map((part, index) => { + switch (part.type) { + case 'step-start': + // show step boundaries as horizontal lines: + return index > 0 ? ( +
+
+
+ ) : null; + case 'text': + // ... + case 'tool-askForConfirmation': + case 'tool-getLocation': + case 'tool-getWeatherInformation': + // ... + } +}); +// ... +``` + +## Server-side Multi-Step Calls + +You can also use multi-step calls on the server-side with `streamText`. +This works when all invoked tools have an `execute` function on the server side. + +```tsx filename='app/api/chat/route.ts' highlight="15-21,24" +import { convertToModelMessages, streamText, UIMessage, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + tools: { + getWeatherInformation: { + description: 'show the weather in a given city to the user', + inputSchema: z.object({ city: z.string() }), + // tool has execute function: + execute: async ({}: { city: string }) => { + const weatherOptions = ['sunny', 'cloudy', 'rainy', 'snowy', 'windy']; + return weatherOptions[ + Math.floor(Math.random() * weatherOptions.length) + ]; + }, + }, + }, + stopWhen: stepCountIs(5), + }); + + return result.toUIMessageStreamResponse(); +} +``` + +## Errors + +Language models can make errors when calling tools. +By default, these errors are masked for security reasons, and show up as "An error occurred" in the UI. + +To surface the errors, you can use the `onError` function when calling `toUIMessageResponse`. + +```tsx +export function errorHandler(error: unknown) { + if (error == null) { + return 'unknown error'; + } + + if (typeof error === 'string') { + return error; + } + + if (error instanceof Error) { + return error.message; + } + + return JSON.stringify(error); +} +``` + +```tsx +const result = streamText({ + // ... +}); + +return result.toUIMessageStreamResponse({ + onError: errorHandler, +}); +``` + +In case you are using `createUIMessageResponse`, you can use the `onError` function when calling `toUIMessageResponse`: + +```tsx +const response = createUIMessageResponse({ + // ... + async execute(dataStream) { + // ... + }, + onError: error => `Custom error: ${error.message}`, +}); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/04-generative-user-interfaces.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/04-generative-user-interfaces.mdx new file mode 100644 index 000000000..33355da27 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/04-generative-user-interfaces.mdx @@ -0,0 +1,389 @@ +--- +title: Generative User Interfaces +description: Learn how to build Generative UI with AI SDK UI. +--- + +# Generative User Interfaces + +Generative user interfaces (generative UI) is the process of allowing a large language model (LLM) to go beyond text and "generate UI". This creates a more engaging and AI-native experience for users. + + + +At the core of generative UI are [ tools ](/docs/ai-sdk-core/tools-and-tool-calling), which are functions you provide to the model to perform specialized tasks like getting the weather in a location. The model can decide when and how to use these tools based on the context of the conversation. + +Generative UI is the process of connecting the results of a tool call to a React component. Here's how it works: + +1. You provide the model with a prompt or conversation history, along with a set of tools. +2. Based on the context, the model may decide to call a tool. +3. If a tool is called, it will execute and return data. +4. This data can then be passed to a React component for rendering. + +By passing the tool results to React components, you can create a generative UI experience that's more engaging and adaptive to your needs. + +## Build a Generative UI Chat Interface + +Let's create a chat interface that handles text-based conversations and incorporates dynamic UI elements based on model responses. + +### Basic Chat Implementation + +Start with a basic chat implementation using the `useChat` hook: + +```tsx filename="app/page.tsx" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; + +export default function Page() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat(); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }; + + return ( +
+ {messages.map(message => ( +
+
{message.role === 'user' ? 'User: ' : 'AI: '}
+
+ {message.parts.map((part, index) => { + if (part.type === 'text') { + return {part.text}; + } + return null; + })} +
+
+ ))} + +
+ setInput(e.target.value)} + placeholder="Type a message..." + /> + +
+
+ ); +} +``` + +To handle the chat requests and model responses, set up an API route: + +```ts filename="app/api/chat/route.ts" +import { streamText, convertToModelMessages, UIMessage, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; + +export async function POST(request: Request) { + const { messages }: { messages: UIMessage[] } = await request.json(); + + const result = streamText({ + model: __MODEL__, + system: 'You are a friendly assistant!', + messages: await convertToModelMessages(messages), + stopWhen: stepCountIs(5), + }); + + return result.toUIMessageStreamResponse(); +} +``` + +This API route uses the `streamText` function to process chat messages and stream the model's responses back to the client. + +### Create a Tool + +Before enhancing your chat interface with dynamic UI elements, you need to create a tool and corresponding React component. A tool will allow the model to perform a specific action, such as fetching weather information. + +Create a new file called `ai/tools.ts` with the following content: + +```ts filename="ai/tools.ts" +import { tool as createTool } from 'ai'; +import { z } from 'zod'; + +export const weatherTool = createTool({ + description: 'Display the weather for a location', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async function ({ location }) { + await new Promise(resolve => setTimeout(resolve, 2000)); + return { weather: 'Sunny', temperature: 75, location }; + }, +}); + +export const tools = { + displayWeather: weatherTool, +}; +``` + +In this file, you've created a tool called `weatherTool`. This tool simulates fetching weather information for a given location. This tool will return simulated data after a 2-second delay. In a real-world application, you would replace this simulation with an actual API call to a weather service. + +### Update the API Route + +Update the API route to include the tool you've defined: + +```ts filename="app/api/chat/route.ts" highlight="3,8,14" +import { streamText, convertToModelMessages, UIMessage, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; +import { tools } from '@/ai/tools'; + +export async function POST(request: Request) { + const { messages }: { messages: UIMessage[] } = await request.json(); + + const result = streamText({ + model: __MODEL__, + system: 'You are a friendly assistant!', + messages: await convertToModelMessages(messages), + stopWhen: stepCountIs(5), + tools, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +Now that you've defined the tool and added it to your `streamText` call, let's build a React component to display the weather information it returns. + +### Create UI Components + +Create a new file called `components/weather.tsx`: + +```tsx filename="components/weather.tsx" +type WeatherProps = { + temperature: number; + weather: string; + location: string; +}; + +export const Weather = ({ temperature, weather, location }: WeatherProps) => { + return ( +
+

Current Weather for {location}

+

Condition: {weather}

+

Temperature: {temperature}°C

+
+ ); +}; +``` + +This component will display the weather information for a given location. It takes three props: `temperature`, `weather`, and `location` (exactly what the `weatherTool` returns). + +### Render the Weather Component + +Now that you have your tool and corresponding React component, let's integrate them into your chat interface. You'll render the Weather component when the model calls the weather tool. + +To check if the model has called a tool, you can check the `parts` array of the UIMessage object for tool-specific parts. In AI SDK 5.0, tool parts use typed naming: `tool-${toolName}` instead of generic types. + +Update your `page.tsx` file: + +```tsx filename="app/page.tsx" highlight="4,9,14-15,19-46" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; +import { Weather } from '@/components/weather'; + +export default function Page() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat(); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }; + + return ( +
+ {messages.map(message => ( +
+
{message.role === 'user' ? 'User: ' : 'AI: '}
+
+ {message.parts.map((part, index) => { + if (part.type === 'text') { + return {part.text}; + } + + if (part.type === 'tool-displayWeather') { + switch (part.state) { + case 'input-available': + return
Loading weather...
; + case 'output-available': + return ( +
+ +
+ ); + case 'output-error': + return
Error: {part.errorText}
; + default: + return null; + } + } + + return null; + })} +
+
+ ))} + +
+ setInput(e.target.value)} + placeholder="Type a message..." + /> + +
+
+ ); +} +``` + +In this updated code snippet, you: + +1. Use manual input state management with `useState` instead of the built-in `input` and `handleInputChange`. +2. Use `sendMessage` instead of `handleSubmit` to send messages. +3. Check the `parts` array of each message for different content types. +4. Handle tool parts with type `tool-displayWeather` and their different states (`input-available`, `output-available`, `output-error`). + +This approach allows you to dynamically render UI components based on the model's responses, creating a more interactive and context-aware chat experience. + +## Expanding Your Generative UI Application + +You can enhance your chat application by adding more tools and components, creating a richer and more versatile user experience. Here's how you can expand your application: + +### Adding More Tools + +To add more tools, simply define them in your `ai/tools.ts` file: + +```ts +// Add a new stock tool +export const stockTool = createTool({ + description: 'Get price for a stock', + inputSchema: z.object({ + symbol: z.string().describe('The stock symbol to get the price for'), + }), + execute: async function ({ symbol }) { + // Simulated API call + await new Promise(resolve => setTimeout(resolve, 2000)); + return { symbol, price: 100 }; + }, +}); + +// Update the tools object +export const tools = { + displayWeather: weatherTool, + getStockPrice: stockTool, +}; +``` + +Now, create a new file called `components/stock.tsx`: + +```tsx +type StockProps = { + price: number; + symbol: string; +}; + +export const Stock = ({ price, symbol }: StockProps) => { + return ( +
+

Stock Information

+

Symbol: {symbol}

+

Price: ${price}

+
+ ); +}; +``` + +Finally, update your `page.tsx` file to include the new Stock component: + +```tsx +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; +import { Weather } from '@/components/weather'; +import { Stock } from '@/components/stock'; + +export default function Page() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat(); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }; + + return ( +
+ {messages.map(message => ( +
+
{message.role}
+
+ {message.parts.map((part, index) => { + if (part.type === 'text') { + return {part.text}; + } + + if (part.type === 'tool-displayWeather') { + switch (part.state) { + case 'input-available': + return
Loading weather...
; + case 'output-available': + return ( +
+ +
+ ); + case 'output-error': + return
Error: {part.errorText}
; + default: + return null; + } + } + + if (part.type === 'tool-getStockPrice') { + switch (part.state) { + case 'input-available': + return
Loading stock price...
; + case 'output-available': + return ( +
+ +
+ ); + case 'output-error': + return
Error: {part.errorText}
; + default: + return null; + } + } + + return null; + })} +
+
+ ))} + +
+ setInput(e.target.value)} + /> + +
+
+ ); +} +``` + +By following this pattern, you can continue to add more tools and components, expanding the capabilities of your Generative UI application. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/05-completion.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/05-completion.mdx new file mode 100644 index 000000000..808e8fbbc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/05-completion.mdx @@ -0,0 +1,181 @@ +--- +title: Completion +description: Learn how to use the useCompletion hook. +--- + +# Completion + +The `useCompletion` hook allows you to create a user interface to handle text completions in your application. It enables the streaming of text completions from your AI provider, manages the state for chat input, and updates the UI automatically as new messages are received. + + + The `useCompletion` hook is now part of the `@ai-sdk/react` package. + + +In this guide, you will learn how to use the `useCompletion` hook in your application to generate text completions and stream them in real-time to your users. + +## Example + +```tsx filename='app/page.tsx' +'use client'; + +import { useCompletion } from '@ai-sdk/react'; + +export default function Page() { + const { completion, input, handleInputChange, handleSubmit } = useCompletion({ + api: '/api/completion', + }); + + return ( +
+ + +
{completion}
+
+ ); +} +``` + +```ts filename='app/api/completion/route.ts' +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +// Allow streaming responses up to 30 seconds +export const maxDuration = 30; + +export async function POST(req: Request) { + const { prompt }: { prompt: string } = await req.json(); + + const result = streamText({ + model: __MODEL__, + prompt, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +In the `Page` component, the `useCompletion` hook will request to your AI provider endpoint whenever the user submits a message. The completion is then streamed back in real-time and displayed in the UI. + +This enables a seamless text completion experience where the user can see the AI response as soon as it is available, without having to wait for the entire response to be received. + +## Customized UI + +`useCompletion` also provides ways to manage the prompt via code, show loading and error states, and update messages without being triggered by user interactions. + +### Loading and error states + +To show a loading spinner while the chatbot is processing the user's message, you can use the `isLoading` state returned by the `useCompletion` hook: + +```tsx +const { isLoading, ... } = useCompletion() + +return( + <> + {isLoading ? : null} + +) +``` + +Similarly, the `error` state reflects the error object thrown during the fetch request. It can be used to display an error message, or show a toast notification: + +```tsx +const { error, ... } = useCompletion() + +useEffect(() => { + if (error) { + toast.error(error.message) + } +}, [error]) + +// Or display the error message in the UI: +return ( + <> + {error ?
{error.message}
: null} + +) +``` + +### Controlled input + +In the initial example, we have `handleSubmit` and `handleInputChange` callbacks that manage the input changes and form submissions. These are handy for common use cases, but you can also use uncontrolled APIs for more advanced scenarios such as form validation or customized components. + +The following example demonstrates how to use more granular APIs like `setInput` with your custom input and submit button components: + +```tsx +const { input, setInput } = useCompletion(); + +return ( + <> + setInput(value)} /> + +); +``` + +### Cancelation + +It's also a common use case to abort the response message while it's still streaming back from the AI provider. You can do this by calling the `stop` function returned by the `useCompletion` hook. + +```tsx +const { stop, isLoading, ... } = useCompletion() + +return ( + <> + + +) +``` + +When the user clicks the "Stop" button, the fetch request will be aborted. This avoids consuming unnecessary resources and improves the UX of your application. + +### Throttling UI Updates + +This feature is currently only available for React. + +By default, the `useCompletion` hook will trigger a render every time a new chunk is received. +You can throttle the UI updates with the `experimental_throttle` option. + +```tsx filename="page.tsx" highlight="2-3" +const { completion, ... } = useCompletion({ + // Throttle the completion and data updates to 50ms: + experimental_throttle: 50 +}) +``` + +## Event Callbacks + +`useCompletion` also provides optional event callbacks that you can use to handle different stages of the chatbot lifecycle. These callbacks can be used to trigger additional actions, such as logging, analytics, or custom UI updates. + +```tsx +const { ... } = useCompletion({ + onFinish: (prompt: string, completion: string) => { + console.log('Finished streaming completion:', completion) + }, + onError: (error: Error) => { + console.error('An error occurred:', error) + }, +}) +``` + +## Configure Request Options + +By default, the `useCompletion` hook sends a HTTP POST request to the `/api/completion` endpoint with the prompt as part of the request body. You can customize the request by passing additional options to the `useCompletion` hook: + +```tsx +const { messages, input, handleInputChange, handleSubmit } = useCompletion({ + api: '/api/custom-completion', + headers: { + Authorization: 'your_token', + }, + body: { + user_id: '123', + }, + credentials: 'same-origin', +}); +``` + +In this example, the `useCompletion` hook sends a POST request to the `/api/completion` endpoint with the specified headers, additional body fields, and credentials for that fetch request. On your server side, you can handle the request with these additional information. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/08-object-generation.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/08-object-generation.mdx new file mode 100644 index 000000000..164d3eb14 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/08-object-generation.mdx @@ -0,0 +1,344 @@ +--- +title: Object Generation +description: Learn how to use the useObject hook. +--- + +# Object Generation + + + `useObject` is an experimental feature and only available in React, Svelte, + and Vue. + + +The [`useObject`](/docs/reference/ai-sdk-ui/use-object) hook allows you to create interfaces that represent a structured JSON object that is being streamed. + +In this guide, you will learn how to use the `useObject` hook in your application to generate UIs for structured data on the fly. + +## Example + +The example shows a small notifications demo app that generates fake notifications in real-time. + +### Schema + +It is helpful to set up the schema in a separate file that is imported on both the client and server. + +```ts filename='app/api/notifications/schema.ts' +import { z } from 'zod'; + +// define a schema for the notifications +export const notificationSchema = z.object({ + notifications: z.array( + z.object({ + name: z.string().describe('Name of a fictional person.'), + message: z.string().describe('Message. Do not use emojis or links.'), + }), + ), +}); +``` + +### Client + +The client uses [`useObject`](/docs/reference/ai-sdk-ui/use-object) to stream the object generation process. + +The results are partial and are displayed as they are received. +Please note the code for handling `undefined` values in the JSX. + +```tsx filename='app/page.tsx' +'use client'; + +import { experimental_useObject as useObject } from '@ai-sdk/react'; +import { notificationSchema } from './api/notifications/schema'; + +export default function Page() { + const { object, submit } = useObject({ + api: '/api/notifications', + schema: notificationSchema, + }); + + return ( + <> + + + {object?.notifications?.map((notification, index) => ( +
+

{notification?.name}

+

{notification?.message}

+
+ ))} + + ); +} +``` + +### Server + +On the server, we use [`streamText`](/docs/reference/ai-sdk-core/stream-text) with [`Output.object()`](/docs/reference/ai-sdk-core/output#output-object) to stream the object generation process. + +```typescript filename='app/api/notifications/route.ts' +import { streamText, Output } from 'ai'; +__PROVIDER_IMPORT__; +import { notificationSchema } from './schema'; + +// Allow streaming responses up to 30 seconds +export const maxDuration = 30; + +export async function POST(req: Request) { + const context = await req.json(); + + const result = streamText({ + model: __MODEL__, + output: Output.object({ schema: notificationSchema }), + prompt: + `Generate 3 notifications for a messages app in this context:` + context, + }); + + return result.toTextStreamResponse(); +} +``` + +## Enum Output Mode + +When you need to classify or categorize input into predefined options, you can use the `enum` output mode with `useObject`. This requires a specific schema structure where the object has `enum` as a key with `z.enum` containing your possible values. + +### Example: Text Classification + +This example shows how to build a simple text classifier that categorizes statements as true or false. + +#### Client + +When using `useObject` with enum output mode, your schema must be an object with `enum` as the key: + +```tsx filename='app/classify/page.tsx' +'use client'; + +import { experimental_useObject as useObject } from '@ai-sdk/react'; +import { z } from 'zod'; + +export default function ClassifyPage() { + const { object, submit, isLoading } = useObject({ + api: '/api/classify', + schema: z.object({ enum: z.enum(['true', 'false']) }), + }); + + return ( + <> + + + {object &&
Classification: {object.enum}
} + + ); +} +``` + +#### Server + +On the server, use `streamText` with `Output.choice()` to stream the classification result: + +```typescript filename='app/api/classify/route.ts' +import { streamText, Output } from 'ai'; +__PROVIDER_IMPORT__; + +export async function POST(req: Request) { + const context = await req.json(); + + const result = streamText({ + model: __MODEL__, + output: Output.choice({ options: ['true', 'false'] }), + prompt: `Classify this statement as true or false: ${context}`, + }); + + return result.toTextStreamResponse(); +} +``` + +## Customized UI + +`useObject` also provides ways to show loading and error states: + +### Loading State + +The `isLoading` state returned by the `useObject` hook can be used for several +purposes: + +- To show a loading spinner while the object is generated. +- To disable the submit button. + +```tsx filename='app/page.tsx' highlight="6,13-20,24" +'use client'; + +import { experimental_useObject as useObject } from '@ai-sdk/react'; + +export default function Page() { + const { isLoading, object, submit } = useObject({ + api: '/api/notifications', + schema: notificationSchema, + }); + + return ( + <> + {isLoading && } + + + + {object?.notifications?.map((notification, index) => ( +
+

{notification?.name}

+

{notification?.message}

+
+ ))} + + ); +} +``` + +### Stop Handler + +The `stop` function can be used to stop the object generation process. This can be useful if the user wants to cancel the request or if the server is taking too long to respond. + +```tsx filename='app/page.tsx' highlight="6,14-16" +'use client'; + +import { experimental_useObject as useObject } from '@ai-sdk/react'; + +export default function Page() { + const { isLoading, stop, object, submit } = useObject({ + api: '/api/notifications', + schema: notificationSchema, + }); + + return ( + <> + {isLoading && ( + + )} + + + + {object?.notifications?.map((notification, index) => ( +
+

{notification?.name}

+

{notification?.message}

+
+ ))} + + ); +} +``` + +### Error State + +Similarly, the `error` state reflects the error object thrown during the fetch request. +It can be used to display an error message, or to disable the submit button: + + + We recommend showing a generic error message to the user, such as "Something + went wrong." This is a good practice to avoid leaking information from the + server. + + +```tsx file="app/page.tsx" highlight="6,13" +'use client'; + +import { experimental_useObject as useObject } from '@ai-sdk/react'; + +export default function Page() { + const { error, object, submit } = useObject({ + api: '/api/notifications', + schema: notificationSchema, + }); + + return ( + <> + {error &&
An error occurred.
} + + + + {object?.notifications?.map((notification, index) => ( +
+

{notification?.name}

+

{notification?.message}

+
+ ))} + + ); +} +``` + +## Event Callbacks + +`useObject` provides optional event callbacks that you can use to handle life-cycle events. + +- `onFinish`: Called when the object generation is completed. +- `onError`: Called when an error occurs during the fetch request. + +These callbacks can be used to trigger additional actions, such as logging, analytics, or custom UI updates. + +```tsx filename='app/page.tsx' highlight="10-20" +'use client'; + +import { experimental_useObject as useObject } from '@ai-sdk/react'; +import { notificationSchema } from './api/notifications/schema'; + +export default function Page() { + const { object, submit } = useObject({ + api: '/api/notifications', + schema: notificationSchema, + onFinish({ object, error }) { + // typed object, undefined if schema validation fails: + console.log('Object generation completed:', object); + + // error, undefined if schema validation succeeds: + console.log('Schema validation error:', error); + }, + onError(error) { + // error during fetch request: + console.error('An error occurred:', error); + }, + }); + + return ( +
+ + + {object?.notifications?.map((notification, index) => ( +
+

{notification?.name}

+

{notification?.message}

+
+ ))} +
+ ); +} +``` + +## Configure Request Options + +You can configure the API endpoint, optional headers and credentials using the `api`, `headers` and `credentials` settings. + +```tsx highlight="2-5" +const { submit, object } = useObject({ + api: '/api/use-object', + headers: { + 'X-Custom-Header': 'CustomValue', + }, + credentials: 'include', + schema: yourSchema, +}); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/20-streaming-data.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/20-streaming-data.mdx new file mode 100644 index 000000000..c85e678c2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/20-streaming-data.mdx @@ -0,0 +1,397 @@ +--- +title: Streaming Custom Data +description: Learn how to stream custom data from the server to the client. +--- + +# Streaming Custom Data + +It is often useful to send additional data alongside the model's response. +For example, you may want to send status information, the message ids after storing them, +or references to content that the language model is referring to. + +The AI SDK provides several helpers that allows you to stream additional data to the client +and attach it to the `UIMessage` parts array: + +- `createUIMessageStream`: creates a data stream +- `createUIMessageStreamResponse`: creates a response object that streams data +- `pipeUIMessageStreamToResponse`: pipes a data stream to a server response object + +The data is streamed as part of the response stream using Server-Sent Events. + +## Setting Up Type-Safe Data Streaming + +First, define your custom message type with data part schemas for type safety: + +```tsx filename="ai/types.ts" +import { UIMessage } from 'ai'; + +// Define your custom message type with data part schemas +export type MyUIMessage = UIMessage< + never, // metadata type + { + weather: { + city: string; + weather?: string; + status: 'loading' | 'success'; + }; + notification: { + message: string; + level: 'info' | 'warning' | 'error'; + }; + } // data parts type +>; +``` + +## Streaming Data from the Server + +In your server-side route handler, you can create a `UIMessageStream` and then pass it to `createUIMessageStreamResponse`: + +```tsx filename="route.ts" +import { openai } from '@ai-sdk/openai'; +import { + createUIMessageStream, + createUIMessageStreamResponse, + streamText, + convertToModelMessages, +} from 'ai'; +__PROVIDER_IMPORT__; +import type { MyUIMessage } from '@/ai/types'; + +export async function POST(req: Request) { + const { messages } = await req.json(); + + const stream = createUIMessageStream({ + execute: ({ writer }) => { + // 1. Send initial status (transient - won't be added to message history) + writer.write({ + type: 'data-notification', + data: { message: 'Processing your request...', level: 'info' }, + transient: true, // This part won't be added to message history + }); + + // 2. Send sources (useful for RAG use cases) + writer.write({ + type: 'source', + value: { + type: 'source', + sourceType: 'url', + id: 'source-1', + url: 'https://weather.com', + title: 'Weather Data Source', + }, + }); + + // 3. Send data parts with loading state + writer.write({ + type: 'data-weather', + id: 'weather-1', + data: { city: 'San Francisco', status: 'loading' }, + }); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + onFinish() { + // 4. Update the same data part (reconciliation) + writer.write({ + type: 'data-weather', + id: 'weather-1', // Same ID = update existing part + data: { + city: 'San Francisco', + weather: 'sunny', + status: 'success', + }, + }); + + // 5. Send completion notification (transient) + writer.write({ + type: 'data-notification', + data: { message: 'Request completed', level: 'info' }, + transient: true, // Won't be added to message history + }); + }, + }); + + writer.merge(result.toUIMessageStream()); + }, + }); + + return createUIMessageStreamResponse({ stream }); +} +``` + + + You can also send stream data from custom backends, e.g. Python / FastAPI, + using the [UI Message Stream + Protocol](/docs/ai-sdk-ui/stream-protocol#ui-message-stream-protocol). + + +## Types of Streamable Data + +### Data Parts (Persistent) + +Regular data parts are added to the message history and appear in `message.parts`: + +```tsx +writer.write({ + type: 'data-weather', + id: 'weather-1', // Optional: enables reconciliation + data: { city: 'San Francisco', status: 'loading' }, +}); +``` + +### Sources + +Sources are useful for RAG implementations where you want to show which documents or URLs were referenced: + +```tsx +writer.write({ + type: 'source', + value: { + type: 'source', + sourceType: 'url', + id: 'source-1', + url: 'https://example.com', + title: 'Example Source', + }, +}); +``` + +### Transient Data Parts (Ephemeral) + +Transient parts are sent to the client but not added to the message history. They are only accessible via the `onData` useChat handler: + +```tsx +// server +writer.write({ + type: 'data-notification', + data: { message: 'Processing...', level: 'info' }, + transient: true, // Won't be added to message history +}); + +// client +const [notification, setNotification] = useState(); + +const { messages } = useChat({ + onData: ({ data, type }) => { + if (type === 'data-notification') { + setNotification({ message: data.message, level: data.level }); + } + }, +}); +``` + +## Data Part Reconciliation + +When you write to a data part with the same ID, the client automatically reconciles and updates that part. This enables powerful dynamic experiences like: + +- **Collaborative artifacts** - Update code, documents, or designs in real-time +- **Progressive data loading** - Show loading states that transform into final results +- **Live status updates** - Update progress bars, counters, or status indicators +- **Interactive components** - Build UI elements that evolve based on user interaction + +The reconciliation happens automatically - simply use the same `id` when writing to the stream. + +## Processing Data on the Client + +### Using the onData Callback + +The `onData` callback is essential for handling streaming data, especially transient parts: + +```tsx filename="page.tsx" +import { useChat } from '@ai-sdk/react'; +import type { MyUIMessage } from '@/ai/types'; + +const { messages } = useChat({ + api: '/api/chat', + onData: dataPart => { + // Handle all data parts as they arrive (including transient parts) + console.log('Received data part:', dataPart); + + // Handle different data part types + if (dataPart.type === 'data-weather') { + console.log('Weather update:', dataPart.data); + } + + // Handle transient notifications (ONLY available here, not in message.parts) + if (dataPart.type === 'data-notification') { + showToast(dataPart.data.message, dataPart.data.level); + } + }, +}); +``` + +**Important:** Transient data parts are **only** available through the `onData` callback. They will not appear in the `message.parts` array since they're not added to message history. + +### Rendering Persistent Data Parts + +You can filter and render data parts from the message parts array: + +```tsx filename="page.tsx" +const result = ( + <> + {messages?.map(message => ( +
+ {/* Render weather data parts */} + {message.parts + .filter(part => part.type === 'data-weather') + .map((part, index) => ( +
+ {part.data.status === 'loading' ? ( + <>Getting weather for {part.data.city}... + ) : ( + <> + Weather in {part.data.city}: {part.data.weather} + + )} +
+ ))} + + {/* Render text content */} + {message.parts + .filter(part => part.type === 'text') + .map((part, index) => ( +
{part.text}
+ ))} + + {/* Render sources */} + {message.parts + .filter(part => part.type === 'source') + .map((part, index) => ( +
+ Source: {part.title} +
+ ))} +
+ ))} + +); +``` + +### Complete Example + +```tsx filename="page.tsx" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; +import type { MyUIMessage } from '@/ai/types'; + +export default function Chat() { + const [input, setInput] = useState(''); + + const { messages, sendMessage } = useChat({ + api: '/api/chat', + onData: dataPart => { + // Handle transient notifications + if (dataPart.type === 'data-notification') { + console.log('Notification:', dataPart.data.message); + } + }, + }); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }; + + return ( + <> + {messages?.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + + {/* Render weather data */} + {message.parts + .filter(part => part.type === 'data-weather') + .map((part, index) => ( + + {part.data.status === 'loading' ? ( + <>Getting weather for {part.data.city}... + ) : ( + <> + Weather in {part.data.city}: {part.data.weather} + + )} + + ))} + + {/* Render text content */} + {message.parts + .filter(part => part.type === 'text') + .map((part, index) => ( +
{part.text}
+ ))} +
+ ))} + +
+ setInput(e.target.value)} + placeholder="Ask about the weather..." + /> + +
+ + ); +} +``` + +## Use Cases + +- **RAG Applications** - Stream sources and retrieved documents +- **Real-time Status** - Show loading states and progress updates +- **Collaborative Tools** - Stream live updates to shared artifacts +- **Analytics** - Send usage data without cluttering message history +- **Notifications** - Display temporary alerts and status messages + +## Message Metadata vs Data Parts + +Both [message metadata](/docs/ai-sdk-ui/message-metadata) and data parts allow you to send additional information alongside messages, but they serve different purposes: + +### Message Metadata + +Message metadata is best for **message-level information** that describes the message as a whole: + +- Attached at the message level via `message.metadata` +- Sent using the `messageMetadata` callback in `toUIMessageStreamResponse` +- Ideal for: timestamps, model info, token usage, user context +- Type-safe with custom metadata types + +```ts +// Server: Send metadata about the message +return result.toUIMessageStreamResponse({ + messageMetadata: ({ part }) => { + if (part.type === 'finish') { + return { + model: part.response.modelId, + totalTokens: part.totalUsage.totalTokens, + createdAt: Date.now(), + }; + } + }, +}); +``` + +### Data Parts + +Data parts are best for streaming **dynamic arbitrary data**: + +- Added to the message parts array via `message.parts` +- Streamed using `createUIMessageStream` and `writer.write()` +- Can be reconciled/updated using the same ID +- Support transient parts that don't persist +- Ideal for: dynamic content, loading states, interactive components + +```ts +// Server: Stream data as part of message content +writer.write({ + type: 'data-weather', + id: 'weather-1', + data: { city: 'San Francisco', status: 'loading' }, +}); +``` + +For more details on message metadata, see the [Message Metadata documentation](/docs/ai-sdk-ui/message-metadata). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/21-error-handling.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/21-error-handling.mdx new file mode 100644 index 000000000..4eb32374a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/21-error-handling.mdx @@ -0,0 +1,190 @@ +--- +title: Error Handling +description: Learn how to handle errors in the AI SDK UI +--- + +# Error Handling and warnings + +## Warnings + +The AI SDK shows warnings when something might not work as expected. +These warnings help you fix problems before they cause errors. + +### When Warnings Appear + +Warnings are shown in the browser console when: + +- **Unsupported features**: You use a feature or setting that is not supported by the AI model (e.g., certain options or parameters). +- **Compatibility warnings**: A feature is used in a compatibility mode, which might work differently or less optimally than intended. +- **Other warnings**: The AI model reports another type of issue, such as general problems or advisory messages. + +### Warning Messages + +All warnings start with "AI SDK Warning:" so you can easily find them. For example: + +``` +AI SDK Warning: The feature "temperature" is not supported by this model +``` + +### Turning Off Warnings + +By default, warnings are shown in the console. You can control this behavior: + +#### Turn Off All Warnings + +Set a global variable to turn off warnings completely: + +```ts +globalThis.AI_SDK_LOG_WARNINGS = false; +``` + +#### Custom Warning Handler + +You can also provide your own function to handle warnings. +It receives provider id, model id, and a list of warnings. + +```ts +globalThis.AI_SDK_LOG_WARNINGS = ({ warnings, provider, model }) => { + // Handle warnings your own way +}; +``` + +## Error Handling + +### Error Helper Object + +Each AI SDK UI hook also returns an [error](/docs/reference/ai-sdk-ui/use-chat#error) object that you can use to render the error in your UI. +You can use the error object to show an error message, disable the submit button, or show a retry button. + + + We recommend showing a generic error message to the user, such as "Something + went wrong." This is a good practice to avoid leaking information from the + server. + + +```tsx file="app/page.tsx" highlight="7,18-25,31" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; + +export default function Chat() { + const [input, setInput] = useState(''); + const { messages, sendMessage, error, regenerate } = useChat(); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }; + + return ( +
+ {messages.map(m => ( +
+ {m.role}:{' '} + {m.parts + .filter(part => part.type === 'text') + .map(part => part.text) + .join('')} +
+ ))} + + {error && ( + <> +
An error occurred.
+ + + )} + +
+ setInput(e.target.value)} + disabled={error != null} + /> +
+
+ ); +} +``` + +#### Alternative: replace last message + +Alternatively you can write a custom submit handler that replaces the last message when an error is present. + +```tsx file="app/page.tsx" highlight="17-23,35" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; + +export default function Chat() { + const [input, setInput] = useState(''); + const { sendMessage, error, messages, setMessages } = useChat(); + + function customSubmit(event: React.FormEvent) { + event.preventDefault(); + + if (error != null) { + setMessages(messages.slice(0, -1)); // remove last message + } + + sendMessage({ text: input }); + setInput(''); + } + + return ( +
+ {messages.map(m => ( +
+ {m.role}:{' '} + {m.parts + .filter(part => part.type === 'text') + .map(part => part.text) + .join('')} +
+ ))} + + {error &&
An error occurred.
} + +
+ setInput(e.target.value)} /> +
+
+ ); +} +``` + +### Error Handling Callback + +Errors can be processed by passing an [`onError`](/docs/reference/ai-sdk-ui/use-chat#on-error) callback function as an option to the [`useChat`](/docs/reference/ai-sdk-ui/use-chat) or [`useCompletion`](/docs/reference/ai-sdk-ui/use-completion) hooks. +The callback function receives an error object as an argument. + +```tsx file="app/page.tsx" highlight="6-9" +import { useChat } from '@ai-sdk/react'; + +export default function Page() { + const { + /* ... */ + } = useChat({ + // handle error: + onError: error => { + console.error(error); + }, + }); +} +``` + +### Injecting Errors for Testing + +You might want to create errors for testing. +You can easily do so by throwing an error in your route handler: + +```ts file="app/api/chat/route.ts" +export async function POST(req: Request) { + throw new Error('This is a test error'); +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/21-transport.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/21-transport.mdx new file mode 100644 index 000000000..c3a6d0e6b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/21-transport.mdx @@ -0,0 +1,174 @@ +--- +title: Transport +description: Learn how to use custom transports with useChat. +--- + +# Transport + +The `useChat` transport system provides fine-grained control over how messages are sent to your API endpoints and how responses are processed. This is particularly useful for alternative communication protocols like WebSockets, custom authentication patterns, or specialized backend integrations. + +## Default Transport + +By default, `useChat` uses HTTP POST requests to send messages to `/api/chat`: + +```tsx +import { useChat } from '@ai-sdk/react'; + +// Uses default HTTP transport +const { messages, sendMessage } = useChat(); +``` + +This is equivalent to: + +```tsx +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; + +const { messages, sendMessage } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + }), +}); +``` + +## Custom Transport Configuration + +Configure the default transport with custom options: + +```tsx +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; + +const { messages, sendMessage } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/custom-chat', + headers: { + Authorization: 'Bearer your-token', + 'X-API-Version': '2024-01', + }, + credentials: 'include', + }), +}); +``` + +### Dynamic Configuration + +You can also provide functions that return configuration values. This is useful for authentication tokens that need to be refreshed, or for configuration that depends on runtime conditions: + +```tsx +const { messages, sendMessage } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + headers: () => ({ + Authorization: `Bearer ${getAuthToken()}`, + 'X-User-ID': getCurrentUserId(), + }), + body: () => ({ + sessionId: getCurrentSessionId(), + preferences: getUserPreferences(), + }), + credentials: () => 'include', + }), +}); +``` + +### Request Transformation + +Transform requests before sending to your API: + +```tsx +const { messages, sendMessage } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + prepareSendMessagesRequest: ({ id, messages, trigger, messageId }) => { + return { + headers: { + 'X-Session-ID': id, + }, + body: { + messages: messages.slice(-10), // Only send last 10 messages + trigger, + messageId, + }, + }; + }, + }), +}); +``` + +## Direct Agent Transport + +For scenarios where you want to communicate directly with an [Agent](/docs/reference/ai-sdk-core/agent) without going through HTTP, you can use `DirectChatTransport`. This transport invokes the agent's `stream()` method directly in-process. + +This is useful for: + +- **Server-side rendering**: Run the agent on the server without an API endpoint +- **Testing**: Test chat functionality without network requests +- **Single-process applications**: Desktop or CLI apps where client and agent run together + +```tsx +import { useChat } from '@ai-sdk/react'; +import { DirectChatTransport, ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + instructions: 'You are a helpful assistant.', + tools: { + weather: weatherTool, + }, +}); + +const { messages, sendMessage } = useChat({ + transport: new DirectChatTransport({ agent }), +}); +``` + +### How It Works + +Unlike `DefaultChatTransport` which sends HTTP requests: + +1. `DirectChatTransport` validates incoming UI messages +2. Converts them to model messages using `convertToModelMessages` +3. Calls the agent's `stream()` method directly +4. Returns the result as a UI message stream via `toUIMessageStream()` + +### Configuration Options + +You can pass additional options to customize the stream output: + +```tsx +const transport = new DirectChatTransport({ + agent, + // Pass options to the agent + options: { customOption: 'value' }, + // Configure what's sent to the client + sendReasoning: true, + sendSources: true, +}); +``` + + + `DirectChatTransport` does not support stream reconnection since there is no + persistent server-side stream. The `reconnectToStream()` method always returns + `null`. + + +For complete API details, see the [DirectChatTransport reference](/docs/reference/ai-sdk-ui/direct-chat-transport). + +## Building Custom Transports + +To understand how to build your own transport, refer to the source code of the default implementation: + +- **[DefaultChatTransport](https://github.com/vercel/ai/blob/main/packages/ai/src/ui/default-chat-transport.ts)** - The complete default HTTP transport implementation +- **[HttpChatTransport](https://github.com/vercel/ai/blob/main/packages/ai/src/ui/http-chat-transport.ts)** - Base HTTP transport with request handling +- **[ChatTransport Interface](https://github.com/vercel/ai/blob/main/packages/ai/src/ui/chat-transport.ts)** - The transport interface you need to implement + +These implementations show you exactly how to: + +- Handle the `sendMessages` method +- Process UI message streams +- Transform requests and responses +- Handle errors and connection management + +The transport system gives you complete control over how your chat application communicates, enabling integration with any backend protocol or service. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/24-reading-ui-message-streams.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/24-reading-ui-message-streams.mdx new file mode 100644 index 000000000..b9949c235 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/24-reading-ui-message-streams.mdx @@ -0,0 +1,104 @@ +--- +title: Reading UIMessage Streams +description: Learn how to read UIMessage streams. +--- + +# Reading UI Message Streams + +`UIMessage` streams are useful outside of traditional chat use cases. You can consume them for terminal UIs, custom stream processing on the client, or React Server Components (RSC). + +The `readUIMessageStream` helper transforms a stream of `UIMessageChunk` objects into an `AsyncIterableStream` of `UIMessage` objects, allowing you to process messages as they're being constructed. + +## Basic Usage + +```tsx +import { readUIMessageStream, streamText } from 'ai'; +__PROVIDER_IMPORT__; + +async function main() { + const result = streamText({ + model: __MODEL__, + prompt: 'Write a short story about a robot.', + }); + + for await (const uiMessage of readUIMessageStream({ + stream: result.toUIMessageStream(), + })) { + console.log('Current message state:', uiMessage); + } +} +``` + +## Tool Calls Integration + +Handle streaming responses that include tool calls: + +```tsx +import { readUIMessageStream, streamText, tool } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +async function handleToolCalls() { + const result = streamText({ + model: __MODEL__, + tools: { + weather: tool({ + description: 'Get the weather in a location', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: ({ location }) => ({ + location, + temperature: 72 + Math.floor(Math.random() * 21) - 10, + }), + }), + }, + prompt: 'What is the weather in Tokyo?', + }); + + for await (const uiMessage of readUIMessageStream({ + stream: result.toUIMessageStream(), + })) { + // Handle different part types + uiMessage.parts.forEach(part => { + switch (part.type) { + case 'text': + console.log('Text:', part.text); + break; + case 'tool-call': + console.log('Tool called:', part.toolName, 'with args:', part.args); + break; + case 'tool-result': + console.log('Tool result:', part.result); + break; + } + }); + } +} +``` + +## Resuming Conversations + +Resume streaming from a previous message state: + +```tsx +import { readUIMessageStream, streamText } from 'ai'; +__PROVIDER_IMPORT__; + +async function resumeConversation(lastMessage: UIMessage) { + const result = streamText({ + model: __MODEL__, + messages: [ + { role: 'user', content: 'Continue our previous conversation.' }, + ], + }); + + // Resume from the last message + for await (const uiMessage of readUIMessageStream({ + stream: result.toUIMessageStream(), + message: lastMessage, // Resume from this message + })) { + console.log('Resumed message:', uiMessage); + } +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/25-message-metadata.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/25-message-metadata.mdx new file mode 100644 index 000000000..151f047cb --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/25-message-metadata.mdx @@ -0,0 +1,152 @@ +--- +title: Message Metadata +description: Learn how to attach and use metadata with messages in AI SDK UI +--- + +# Message Metadata + +Message metadata allows you to attach custom information to messages at the message level. This is useful for tracking timestamps, model information, token usage, user context, and other message-level data. + +## Overview + +Message metadata differs from [data parts](/docs/ai-sdk-ui/streaming-data) in that it's attached at the message level rather than being part of the message content. While data parts are ideal for dynamic content that forms part of the message, metadata is perfect for information about the message itself. + +## Getting Started + +Here's a simple example of using message metadata to track timestamps and model information: + +### Defining Metadata Types + +First, define your metadata type for type safety: + +```tsx filename="app/types.ts" +import { UIMessage } from 'ai'; +import { z } from 'zod'; + +// Define your metadata schema +export const messageMetadataSchema = z.object({ + createdAt: z.number().optional(), + model: z.string().optional(), + totalTokens: z.number().optional(), +}); + +export type MessageMetadata = z.infer; + +// Create a typed UIMessage +export type MyUIMessage = UIMessage; +``` + +### Sending Metadata from the Server + +Use the `messageMetadata` callback in `toUIMessageStreamResponse` to send metadata at different streaming stages: + +```ts filename="app/api/chat/route.ts" highlight="11-20" +import { convertToModelMessages, streamText } from 'ai'; +__PROVIDER_IMPORT__; +import type { MyUIMessage } from '@/types'; + +export async function POST(req: Request) { + const { messages }: { messages: MyUIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse({ + originalMessages: messages, // pass this in for type-safe return objects + messageMetadata: ({ part }) => { + // Send metadata when streaming starts + if (part.type === 'start') { + return { + createdAt: Date.now(), + model: 'your-model-id', + }; + } + + // Send additional metadata when streaming completes + if (part.type === 'finish') { + return { + totalTokens: part.totalUsage.totalTokens, + }; + } + }, + }); +} +``` + + + To enable type-safe metadata return object in `messageMetadata`, pass in the + `originalMessages` parameter typed to your UIMessage type. + + +### Accessing Metadata on the Client + +Access metadata through the `message.metadata` property: + +```tsx filename="app/page.tsx" highlight="8,18-23" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; +import type { MyUIMessage } from '@/types'; + +export default function Chat() { + const { messages } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + }), + }); + + return ( +
+ {messages.map(message => ( +
+
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.metadata?.createdAt && ( + + {new Date(message.metadata.createdAt).toLocaleTimeString()} + + )} +
+ + {/* Render message content */} + {message.parts.map((part, index) => + part.type === 'text' ?
{part.text}
: null, + )} + + {/* Display additional metadata */} + {message.metadata?.totalTokens && ( +
+ {message.metadata.totalTokens} tokens +
+ )} +
+ ))} +
+ ); +} +``` + + + For streaming arbitrary data that changes during generation, consider using + [data parts](/docs/ai-sdk-ui/streaming-data) instead. + + +## Common Use Cases + +Message metadata is ideal for: + +- **Timestamps**: When messages were created or completed +- **Model Information**: Which AI model was used +- **Token Usage**: Track costs and usage limits +- **User Context**: User IDs, session information +- **Performance Metrics**: Generation time, time to first token +- **Quality Indicators**: Finish reason, confidence scores + +## See Also + +- [Chatbot Guide](/docs/ai-sdk-ui/chatbot#message-metadata) - Message metadata in the context of building chatbots +- [Streaming Data](/docs/ai-sdk-ui/streaming-data#message-metadata-vs-data-parts) - Comparison with data parts +- [UIMessage Reference](/docs/reference/ai-sdk-core/ui-message) - Complete UIMessage type reference diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/50-stream-protocol.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/50-stream-protocol.mdx new file mode 100644 index 000000000..a9a343da5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/50-stream-protocol.mdx @@ -0,0 +1,477 @@ +--- +title: Stream Protocols +description: Learn more about the supported stream protocols in the AI SDK. +--- + +# Stream Protocols + +AI SDK UI functions such as `useChat` and `useCompletion` support both text streams and data streams. +The stream protocol defines how the data is streamed to the frontend on top of the HTTP protocol. + +This page describes both protocols and how to use them in the backend and frontend. + +You can use this information to develop custom backends and frontends for your use case, e.g., +to provide compatible API endpoints that are implemented in a different language such as Python. + +For instance, here's an example using [FastAPI](https://github.com/vercel/ai/tree/main/examples/next-fastapi) as a backend. + +## Text Stream Protocol + +A text stream contains chunks in plain text, that are streamed to the frontend. +Each chunk is then appended together to form a full text response. + +Text streams are supported by `useChat`, `useCompletion`, and `useObject`. +When you use `useChat` or `useCompletion`, you need to enable text streaming +by setting the `streamProtocol` options to `text`. + +You can generate text streams with `streamText` in the backend. +When you call `toTextStreamResponse()` on the result object, +a streaming HTTP response is returned. + + + Text streams only support basic text data. If you need to stream other types + of data such as tool calls, use data streams. + + +### Text Stream Example + +Here is a Next.js example that uses the text stream protocol: + +```tsx filename='app/page.tsx' +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { TextStreamChatTransport } from 'ai'; +import { useState } from 'react'; + +export default function Chat() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat({ + transport: new TextStreamChatTransport({ api: '/api/chat' }), + }); + + return ( +
+ {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, i) => { + switch (part.type) { + case 'text': + return
{part.text}
; + } + })} +
+ ))} + +
{ + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }} + > + setInput(e.currentTarget.value)} + /> +
+
+ ); +} +``` + +```ts filename='app/api/chat/route.ts' +import { streamText, UIMessage, convertToModelMessages } from 'ai'; +__PROVIDER_IMPORT__; + +// Allow streaming responses up to 30 seconds +export const maxDuration = 30; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + }); + + return result.toTextStreamResponse(); +} +``` + +## Data Stream Protocol + +A data stream follows a special protocol that the AI SDK provides to send information to the frontend. + +The data stream protocol uses Server-Sent Events (SSE) format for improved standardization, keep-alive through ping, reconnect capabilities, and better cache handling. + + + When you provide data streams from a custom backend, you need to set the + `x-vercel-ai-ui-message-stream` header to `v1`. + + +The following stream parts are currently supported: + +### Message Start Part + +Indicates the beginning of a new message with metadata. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"start","messageId":"..."} + +``` + +### Text Parts + +Text content is streamed using a start/delta/end pattern with unique IDs for each text block. + +#### Text Start Part + +Indicates the beginning of a text block. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"text-start","id":"msg_68679a454370819ca74c8eb3d04379630dd1afb72306ca5d"} + +``` + +#### Text Delta Part + +Contains incremental text content for the text block. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"text-delta","id":"msg_68679a454370819ca74c8eb3d04379630dd1afb72306ca5d","delta":"Hello"} + +``` + +#### Text End Part + +Indicates the completion of a text block. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"text-end","id":"msg_68679a454370819ca74c8eb3d04379630dd1afb72306ca5d"} + +``` + +### Reasoning Parts + +Reasoning content is streamed using a start/delta/end pattern with unique IDs for each reasoning block. + +#### Reasoning Start Part + +Indicates the beginning of a reasoning block. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"reasoning-start","id":"reasoning_123"} + +``` + +#### Reasoning Delta Part + +Contains incremental reasoning content for the reasoning block. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"reasoning-delta","id":"reasoning_123","delta":"This is some reasoning"} + +``` + +#### Reasoning End Part + +Indicates the completion of a reasoning block. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"reasoning-end","id":"reasoning_123"} + +``` + +### Source Parts + +Source parts provide references to external content sources. + +#### Source URL Part + +References to external URLs. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"source-url","sourceId":"https://example.com","url":"https://example.com"} + +``` + +#### Source Document Part + +References to documents or files. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"source-document","sourceId":"https://example.com","mediaType":"file","title":"Title"} + +``` + +### File Part + +The file parts contain references to files with their media type. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"file","url":"https://example.com/file.png","mediaType":"image/png"} + +``` + +### Data Parts + +Custom data parts allow streaming of arbitrary structured data with type-specific handling. + +Format: Server-Sent Event with JSON object where the type includes a custom suffix + +Example: + +``` +data: {"type":"data-weather","data":{"location":"SF","temperature":100}} + +``` + +The `data-*` type pattern allows you to define custom data types that your frontend can handle specifically. + +### Error Part + +The error parts are appended to the message as they are received. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"error","errorText":"error message"} + +``` + +### Tool Input Start Part + +Indicates the beginning of tool input streaming. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"tool-input-start","toolCallId":"call_fJdQDqnXeGxTmr4E3YPSR7Ar","toolName":"getWeatherInformation"} + +``` + +### Tool Input Delta Part + +Incremental chunks of tool input as it's being generated. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"tool-input-delta","toolCallId":"call_fJdQDqnXeGxTmr4E3YPSR7Ar","inputTextDelta":"San Francisco"} + +``` + +### Tool Input Available Part + +Indicates that tool input is complete and ready for execution. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"tool-input-available","toolCallId":"call_fJdQDqnXeGxTmr4E3YPSR7Ar","toolName":"getWeatherInformation","input":{"city":"San Francisco"}} + +``` + +### Tool Output Available Part + +Contains the result of tool execution. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"tool-output-available","toolCallId":"call_fJdQDqnXeGxTmr4E3YPSR7Ar","output":{"city":"San Francisco","weather":"sunny"}} + +``` + +### Start Step Part + +A part indicating the start of a step. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"start-step"} + +``` + +### Finish Step Part + +A part indicating that a step (i.e., one LLM API call in the backend) has been completed. + +This part is necessary to correctly process multiple stitched assistant calls, e.g. when calling tools in the backend, and using steps in `useChat` at the same time. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"finish-step"} + +``` + +### Finish Message Part + +A part indicating the completion of a message. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"finish"} + +``` + +### Abort Part + +Indicates the stream was aborted. + +Format: Server-Sent Event with JSON object + +Example: + +``` +data: {"type":"abort","reason":"user cancelled"} + +``` + +### Stream Termination + +The stream ends with a special `[DONE]` marker. + +Format: Server-Sent Event with literal `[DONE]` + +Example: + +``` +data: [DONE] + +``` + +The data stream protocol is supported +by `useChat` and `useCompletion` on the frontend and used by default. +`useCompletion` only supports the `text` and `data` stream parts. + +On the backend, you can use `toUIMessageStreamResponse()` from the `streamText` result object to return a streaming HTTP response. + +### UI Message Stream Example + +Here is a Next.js example that uses the UI message stream protocol: + +```tsx filename='app/page.tsx' +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { useState } from 'react'; + +export default function Chat() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat(); + + return ( +
+ {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, i) => { + switch (part.type) { + case 'text': + return
{part.text}
; + } + })} +
+ ))} + +
{ + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }} + > + setInput(e.currentTarget.value)} + /> +
+
+ ); +} +``` + +```ts filename='app/api/chat/route.ts' +import { streamText, UIMessage, convertToModelMessages } from 'ai'; +__PROVIDER_IMPORT__; + +// Allow streaming responses up to 30 seconds +export const maxDuration = 30; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse(); +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/index.mdx new file mode 100644 index 000000000..cd7333342 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/04-ai-sdk-ui/index.mdx @@ -0,0 +1,64 @@ +--- +title: AI SDK UI +description: Learn about the AI SDK UI. +--- + +# AI SDK UI + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/01-overview.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/01-overview.mdx new file mode 100644 index 000000000..bbd221ff7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/01-overview.mdx @@ -0,0 +1,45 @@ +--- +title: Overview +description: An overview of AI SDK RSC. +--- + +# AI SDK RSC + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + + + The `@ai-sdk/rsc` package is compatible with frameworks that support React + Server Components. + + +[React Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components) (RSC) allow you to write UI that can be rendered on the server and streamed to the client. RSCs enable [ Server Actions ](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations#with-client-components), a new way to call server-side code directly from the client just like any other function with end-to-end type-safety. This combination opens the door to a new way of building AI applications, allowing the large language model (LLM) to generate and stream UI directly from the server to the client. + +## AI SDK RSC Functions + +AI SDK RSC has various functions designed to help you build AI-native applications with React Server Components. These functions: + +1. Provide abstractions for building Generative UI applications. + - [`streamUI`](/docs/reference/ai-sdk-rsc/stream-ui): calls a model and allows it to respond with React Server Components. + - [`useUIState`](/docs/reference/ai-sdk-rsc/use-ui-state): returns the current UI state and a function to update the UI State (like React's `useState`). UI State is the visual representation of the AI state. + - [`useAIState`](/docs/reference/ai-sdk-rsc/use-ai-state): returns the current AI state and a function to update the AI State (like React's `useState`). The AI state is intended to contain context and information shared with the AI model, such as system messages, function responses, and other relevant data. + - [`useActions`](/docs/reference/ai-sdk-rsc/use-actions): provides access to your Server Actions from the client. This is particularly useful for building interfaces that require user interactions with the server. + - [`createAI`](/docs/reference/ai-sdk-rsc/create-ai): creates a client-server context provider that can be used to wrap parts of your application tree to easily manage both UI and AI states of your application. +2. Make it simple to work with streamable values between the server and client. + - [`createStreamableValue`](/docs/reference/ai-sdk-rsc/create-streamable-value): creates a stream that sends values from the server to the client. The value can be any serializable data. + - [`readStreamableValue`](/docs/reference/ai-sdk-rsc/read-streamable-value): reads a streamable value from the client that was originally created using `createStreamableValue`. + - [`createStreamableUI`](/docs/reference/ai-sdk-rsc/create-streamable-ui): creates a stream that sends UI from the server to the client. + - [`useStreamableValue`](/docs/reference/ai-sdk-rsc/use-streamable-value): accepts a streamable value created using `createStreamableValue` and returns the current value, error, and pending state. + +## Templates + +Check out the following templates to see AI SDK RSC in action. + + + +## API Reference + +Please check out the [AI SDK RSC API Reference](/docs/reference/ai-sdk-rsc) for more details on each function. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/02-streaming-react-components.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/02-streaming-react-components.mdx new file mode 100644 index 000000000..1dc6ff5d2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/02-streaming-react-components.mdx @@ -0,0 +1,209 @@ +--- +title: Streaming React Components +description: Overview of streaming RSCs +--- + +import { UIPreviewCard, Card } from '@/components/home/card'; +import { EventPlanning } from '@/components/home/event-planning'; +import { Searching } from '@/components/home/searching'; +import { Weather } from '@/components/home/weather'; + +# Streaming React Components + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +The RSC API allows you to stream React components from the server to the client with the [`streamUI`](/docs/reference/ai-sdk-rsc/stream-ui) function. This is useful when you want to go beyond raw text and stream components to the client in real-time. + +Similar to [ AI SDK Core ](/docs/ai-sdk-core/overview) APIs (like [ `streamText` ](/docs/reference/ai-sdk-core/stream-text)), `streamUI` provides a single function to call a model and allow it to respond with React Server Components. +It supports the same model interfaces as AI SDK Core APIs. + +### Concepts + +To give the model the ability to respond to a user's prompt with a React component, you can leverage [tools](/docs/ai-sdk-core/tools-and-tool-calling). + + + Remember, tools are like programs you can give to the model, and the model can + decide as and when to use based on the context of the conversation. + + +With the `streamUI` function, **you provide tools that return React components**. With the ability to stream components, the model is akin to a dynamic router that is able to understand the user's intention and display relevant UI. + +At a high level, the `streamUI` works like other AI SDK Core functions: you can provide the model with a prompt or some conversation history and, optionally, some tools. If the model decides, based on the context of the conversation, to call a tool, it will generate a tool call. The `streamUI` function will then run the respective tool, returning a React component. If the model doesn't have a relevant tool to use, it will return a text generation, which will be passed to the `text` function, for you to handle (render and return as a React component). + +Remember, the `streamUI` function must return a React component. + +```tsx +const result = await streamUI({ + model: openai('gpt-4o'), + prompt: 'Get the weather for San Francisco', + text: ({ content }) =>
{content}
, + tools: {}, +}); +``` + +This example calls the `streamUI` function using OpenAI's `gpt-4o` model, passes a prompt, specifies how the model's plain text response (`content`) should be rendered, and then provides an empty object for tools. Even though this example does not define any tools, it will stream the model's response as a `div` rather than plain text. + +### Adding A Tool + +Using tools with `streamUI` is similar to how you use tools with `generateText` and `streamText`. +A tool is an object that has: + +- `description`: a string telling the model what the tool does and when to use it +- `inputSchema`: a Zod schema describing what the tool needs in order to run +- `generate`: an asynchronous function that will be run if the model calls the tool. This must return a React component + +Let's expand the previous example to add a tool. + +```tsx highlight="6-14" +const result = await streamUI({ + model: openai('gpt-4o'), + prompt: 'Get the weather for San Francisco', + text: ({ content }) =>
{content}
, + tools: { + getWeather: { + description: 'Get the weather for a location', + inputSchema: z.object({ location: z.string() }), + generate: async function* ({ location }) { + yield ; + const weather = await getWeather(location); + return ; + }, + }, + }, +}); +``` + +This tool would be run if the user asks for the weather for their location. If the user hasn't specified a location, the model will ask for it before calling the tool. When the model calls the tool, the generate function will initially return a loading component. This component will show until the awaited call to `getWeather` is resolved, at which point, the model will stream the `` to the user. + + + Note: This example uses a [ generator function + ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*) + (`function*`), which allows you to pause its execution and return a value, + then resume from where it left off on the next call. This is useful for + handling data streams, as you can fetch and return data from an asynchronous + source like an API, then resume the function to fetch the next chunk when + needed. By yielding values one at a time, generator functions enable efficient + processing of streaming data without blocking the main thread. + + +## Using `streamUI` with Next.js + +Let's see how you can use the example above in a Next.js application. + +To use `streamUI` in a Next.js application, you will need two things: + +1. A Server Action (where you will call `streamUI`) +2. A page to call the Server Action and render the resulting components + +### Step 1: Create a Server Action + + + Server Actions are server-side functions that you can call directly from the + frontend. For more info, see [the + documentation](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations#with-client-components). + + +Create a Server Action at `app/actions.tsx` and add the following code: + +```tsx filename="app/actions.tsx" +'use server'; + +import { streamUI } from '@ai-sdk/rsc'; +import { openai } from '@ai-sdk/openai'; +import { z } from 'zod'; + +const LoadingComponent = () => ( +
getting weather...
+); + +const getWeather = async (location: string) => { + await new Promise(resolve => setTimeout(resolve, 2000)); + return '82°F️ ☀️'; +}; + +interface WeatherProps { + location: string; + weather: string; +} + +const WeatherComponent = (props: WeatherProps) => ( +
+ The weather in {props.location} is {props.weather} +
+); + +export async function streamComponent() { + const result = await streamUI({ + model: openai('gpt-4o'), + prompt: 'Get the weather for San Francisco', + text: ({ content }) =>
{content}
, + tools: { + getWeather: { + description: 'Get the weather for a location', + inputSchema: z.object({ + location: z.string(), + }), + generate: async function* ({ location }) { + yield ; + const weather = await getWeather(location); + return ; + }, + }, + }, + }); + + return result.value; +} +``` + +The `getWeather` tool should look familiar as it is identical to the example in the previous section. In order for this tool to work: + +1. First define a `LoadingComponent`, which renders a pulsing `div` that will show some loading text. +2. Next, define a `getWeather` function that will timeout for 2 seconds (to simulate fetching the weather externally) before returning the "weather" for a `location`. Note: you could run any asynchronous TypeScript code here. +3. Finally, define a `WeatherComponent` which takes in `location` and `weather` as props, which are then rendered within a `div`. + +Your Server Action is an asynchronous function called `streamComponent` that takes no inputs, and returns a `ReactNode`. Within the action, you call the `streamUI` function, specifying the model (`gpt-4o`), the prompt, the component that should be rendered if the model chooses to return text, and finally, your `getWeather` tool. Last but not least, you return the resulting component generated by the model with `result.value`. + +To call this Server Action and display the resulting React Component, you will need a page. + +### Step 2: Create a Page + +Create or update your root page (`app/page.tsx`) with the following code: + +```tsx filename="app/page.tsx" +'use client'; + +import { useState } from 'react'; +import { Button } from '@/components/ui/button'; +import { streamComponent } from './actions'; + +export default function Page() { + const [component, setComponent] = useState(); + + return ( +
+
{ + e.preventDefault(); + setComponent(await streamComponent()); + }} + > + +
+
{component}
+
+ ); +} +``` + +This page is first marked as a client component with the `"use client";` directive given it will be using hooks and interactivity. On the page, you render a form. When that form is submitted, you call the `streamComponent` action created in the previous step (just like any other function). The `streamComponent` action returns a `ReactNode` that you can then render on the page using React state (`setComponent`). + +## Going beyond a single prompt + +You can now allow the model to respond to your prompt with a React component. However, this example is limited to a static prompt that is set within your Server Action. You could make this example interactive by turning it into a chatbot. + +Learn how to stream React components with the Next.js App Router using `streamUI` with this [example](/examples/next-app/interface/route-components). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/03-generative-ui-state.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/03-generative-ui-state.mdx new file mode 100644 index 000000000..b8bb3cb09 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/03-generative-ui-state.mdx @@ -0,0 +1,279 @@ +--- +title: Managing Generative UI State +description: Overview of the AI and UI states +--- + +# Managing Generative UI State + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +State is an essential part of any application. State is particularly important in AI applications as it is passed to large language models (LLMs) on each request to ensure they have the necessary context to produce a great generation. Traditional chatbots are text-based and have a structure that mirrors that of any chat application. + +For example, in a chatbot, state is an array of `messages` where each `message` has: + +- `id`: a unique identifier +- `role`: who sent the message (user/assistant/system/tool) +- `content`: the content of the message + +This state can be rendered in the UI and sent to the model without any modifications. + +With Generative UI, the model can now return a React component, rather than a plain text message. The client can render that component without issue, but that state can't be sent back to the model because React components aren't serialisable. So, what can you do? + +**The solution is to split the state in two, where one (AI State) becomes a proxy for the other (UI State)**. + +One way to understand this concept is through a Lego analogy. Imagine a 10,000 piece Lego model that, once built, cannot be easily transported because it is fragile. By taking the model apart, it can be easily transported, and then rebuilt following the steps outlined in the instructions pamphlet. In this way, the instructions pamphlet is a proxy to the physical structure. Similarly, AI State provides a serialisable (JSON) representation of your UI that can be passed back and forth to the model. + +## What is AI and UI State? + +The RSC API simplifies how you manage AI State and UI State, providing a robust way to keep them in sync between your database, server and client. + +### AI State + +AI State refers to the state of your application in a serialisable format that will be used on the server and can be shared with the language model. + +For a chat app, the AI State is the conversation history (messages) between the user and the assistant. Components generated by the model would be represented in a JSON format as a tool alongside any necessary props. AI State can also be used to store other values and meta information such as `createdAt` for each message and `chatId` for each conversation. The LLM reads this history so it can generate the next message. This state serves as the source of truth for the current application state. + + + **Note**: AI state can be accessed/modified from both the server and the + client. + + +### UI State + +UI State refers to the state of your application that is rendered on the client. It is a fully client-side state (similar to `useState`) that can store anything from JavaScript values to React elements. UI state is a list of actual UI elements that are rendered on the client. + +**Note**: UI State can only be accessed client-side. + +## Using AI / UI State + +### Creating the AI Context + +AI SDK RSC simplifies managing AI and UI state across your application by providing several hooks. These hooks are powered by [ React context ](https://react.dev/reference/react/hooks#context-hooks) under the hood. + +Notably, this means you do not have to pass the message history to the server explicitly for each request. You also can access and update your application state in any child component of the context provider. As you begin building [multistep generative interfaces](/docs/ai-sdk-rsc/multistep-interfaces), this will be particularly helpful. + +To use `@ai-sdk/rsc` to manage AI and UI State in your application, you can create a React context using [`createAI`](/docs/reference/ai-sdk-rsc/create-ai): + +```tsx filename='app/actions.tsx' +// Define the AI state and UI state types +export type ServerMessage = { + role: 'user' | 'assistant'; + content: string; +}; + +export type ClientMessage = { + id: string; + role: 'user' | 'assistant'; + display: ReactNode; +}; + +export const sendMessage = async (input: string): Promise => { + "use server" + ... +} +``` + +```tsx filename='app/ai.ts' +import { createAI } from '@ai-sdk/rsc'; +import { ClientMessage, ServerMessage, sendMessage } from './actions'; + +export type AIState = ServerMessage[]; +export type UIState = ClientMessage[]; + +// Create the AI provider with the initial states and allowed actions +export const AI = createAI({ + initialAIState: [], + initialUIState: [], + actions: { + sendMessage, + }, +}); +``` + +You must pass Server Actions to the `actions` object. + +In this example, you define types for AI State and UI State, respectively. + +Next, wrap your application with your newly created context. With that, you can get and set AI and UI State across your entire application. + +```tsx filename='app/layout.tsx' +import { type ReactNode } from 'react'; +import { AI } from './ai'; + +export default function RootLayout({ + children, +}: Readonly<{ children: ReactNode }>) { + return ( + + + {children} + + + ); +} +``` + +## Reading UI State in Client + +The UI state can be accessed in Client Components using the [`useUIState`](/docs/reference/ai-sdk-rsc/use-ui-state) hook provided by the RSC API. The hook returns the current UI state and a function to update the UI state like React's `useState`. + +```tsx filename='app/page.tsx' +'use client'; + +import { useUIState } from '@ai-sdk/rsc'; + +export default function Page() { + const [messages, setMessages] = useUIState(); + + return ( +
    + {messages.map(message => ( +
  • {message.display}
  • + ))} +
+ ); +} +``` + +## Reading AI State in Client + +The AI state can be accessed in Client Components using the [`useAIState`](/docs/reference/ai-sdk-rsc/use-ai-state) hook provided by the RSC API. The hook returns the current AI state. + +```tsx filename='app/page.tsx' +'use client'; + +import { useAIState } from '@ai-sdk/rsc'; + +export default function Page() { + const [messages, setMessages] = useAIState(); + + return ( +
    + {messages.map(message => ( +
  • {message.content}
  • + ))} +
+ ); +} +``` + +## Reading AI State on Server + +The AI State can be accessed within any Server Action provided to the `createAI` context using the [`getAIState`](/docs/reference/ai-sdk-rsc/get-ai-state) function. It returns the current AI state as a read-only value: + +```tsx filename='app/actions.ts' +import { getAIState } from '@ai-sdk/rsc'; + +export async function sendMessage(message: string) { + 'use server'; + + const history = getAIState(); + + const response = await generateText({ + model: __MODEL__, + messages: [...history, { role: 'user', content: message }], + }); + + return response; +} +``` + + + Remember, you can only access state within actions that have been passed to + the `createAI` context within the `actions` key. + + +## Updating AI State on Server + +The AI State can also be updated from within your Server Action with the [`getMutableAIState`](/docs/reference/ai-sdk-rsc/get-mutable-ai-state) function. This function is similar to `getAIState`, but it returns the state with methods to read and update it: + +```tsx filename='app/actions.ts' +import { getMutableAIState } from '@ai-sdk/rsc'; + +export async function sendMessage(message: string) { + 'use server'; + + const history = getMutableAIState(); + + // Update the AI state with the new user message. + history.update([...history.get(), { role: 'user', content: message }]); + + const response = await generateText({ + model: __MODEL__, + messages: history.get(), + }); + + // Update the AI state again with the response from the model. + history.done([...history.get(), { role: 'assistant', content: response }]); + + return response; +} +``` + + + It is important to update the AI State with new responses using `.update()` + and `.done()` to keep the conversation history in sync. + + +## Calling Server Actions from the Client + +To call the `sendMessage` action from the client, you can use the [`useActions`](/docs/reference/ai-sdk-rsc/use-actions) hook. The hook returns all the available Actions that were provided to `createAI`: + +```tsx filename='app/page.tsx' +'use client'; + +import { useActions, useUIState } from '@ai-sdk/rsc'; +import { AI } from './ai'; + +export default function Page() { + const { sendMessage } = useActions(); + const [messages, setMessages] = useUIState(); + + const handleSubmit = async event => { + event.preventDefault(); + + setMessages([ + ...messages, + { id: Date.now(), role: 'user', display: event.target.message.value }, + ]); + + const response = await sendMessage(event.target.message.value); + + setMessages([ + ...messages, + { id: Date.now(), role: 'assistant', display: response }, + ]); + }; + + return ( + <> +
    + {messages.map(message => ( +
  • {message.display}
  • + ))} +
+
+ + +
+ + ); +} +``` + +When the user submits a message, the `sendMessage` action is called with the message content. The response from the action is then added to the UI state, updating the displayed messages. + + + Important! Don't forget to update the UI State after you call your Server + Action otherwise the streamed component will not show in the UI. + + +To learn more, check out this [example](/examples/next-app/state-management/ai-ui-states) on managing AI and UI state using `@ai-sdk/rsc`. + +--- + +Next, you will learn how you can save and restore state with `@ai-sdk/rsc`. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/03-saving-and-restoring-states.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/03-saving-and-restoring-states.mdx new file mode 100644 index 000000000..8e9462ba1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/03-saving-and-restoring-states.mdx @@ -0,0 +1,105 @@ +--- +title: Saving and Restoring States +description: Saving and restoring AI and UI states with onGetUIState and onSetAIState +--- + +# Saving and Restoring States + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +AI SDK RSC provides convenient methods for saving and restoring AI and UI state. This is useful for saving the state of your application after every model generation, and restoring it when the user revisits the generations. + +## AI State + +### Saving AI state + +The AI state can be saved using the [`onSetAIState`](/docs/reference/ai-sdk-rsc/create-ai#on-set-ai-state) callback, which gets called whenever the AI state is updated. In the following example, you save the chat history to a database whenever the generation is marked as done. + +```tsx filename='app/ai.ts' +export const AI = createAI({ + actions: { + continueConversation, + }, + onSetAIState: async ({ state, done }) => { + 'use server'; + + if (done) { + saveChatToDB(state); + } + }, +}); +``` + +### Restoring AI state + +The AI state can be restored using the [`initialAIState`](/docs/reference/ai-sdk-rsc/create-ai#initial-ai-state) prop passed to the context provider created by the [`createAI`](/docs/reference/ai-sdk-rsc/create-ai) function. In the following example, you restore the chat history from a database when the component is mounted. + +```tsx file='app/layout.tsx' +import { ReactNode } from 'react'; +import { AI } from './ai'; + +export default async function RootLayout({ + children, +}: Readonly<{ children: ReactNode }>) { + const chat = await loadChatFromDB(); + + return ( + + + {children} + + + ); +} +``` + +## UI State + +### Saving UI state + +The UI state cannot be saved directly, since the contents aren't yet serializable. Instead, you can use the AI state as proxy to store details about the UI state and use it to restore the UI state when needed. + +### Restoring UI state + +The UI state can be restored using the AI state as a proxy. In the following example, you restore the chat history from the AI state when the component is mounted. You use the [`onGetUIState`](/docs/reference/ai-sdk-rsc/create-ai#on-get-ui-state) callback to listen for SSR events and restore the UI state. + +```tsx filename='app/ai.ts' +export const AI = createAI({ + actions: { + continueConversation, + }, + onGetUIState: async () => { + 'use server'; + + const historyFromDB: ServerMessage[] = await loadChatFromDB(); + const historyFromApp: ServerMessage[] = getAIState(); + + // If the history from the database is different from the + // history in the app, they're not in sync so return the UIState + // based on the history from the database + + if (historyFromDB.length !== historyFromApp.length) { + return historyFromDB.map(({ role, content }) => ({ + id: generateId(), + role, + display: + role === 'function' ? ( + + ) : ( + content + ), + })); + } + }, +}); +``` + +To learn more, check out this [example](/examples/next-app/state-management/save-and-restore-states) that persists and restores states in your Next.js application. + +--- + +Next, you will learn how you can use `@ai-sdk/rsc` functions like `useActions` and `useUIState` to create interactive, multistep interfaces. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/04-multistep-interfaces.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/04-multistep-interfaces.mdx new file mode 100644 index 000000000..6634f8ce4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/04-multistep-interfaces.mdx @@ -0,0 +1,282 @@ +--- +title: Multistep Interfaces +description: Overview of Building Multistep Interfaces with AI SDK RSC +--- + +# Designing Multistep Interfaces + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +Multistep interfaces refer to user interfaces that require multiple independent steps to be executed in order to complete a specific task. + +For example, if you wanted to build a Generative UI chatbot capable of booking flights, it could have three steps: + +- Search all flights +- Pick flight +- Check availability + +To build this kind of application you will leverage two concepts, **tool composition** and **application context**. + +**Tool composition** is the process of combining multiple [tools](/docs/ai-sdk-core/tools-and-tool-calling) to create a new tool. This is a powerful concept that allows you to break down complex tasks into smaller, more manageable steps. In the example above, _"search all flights"_, _"pick flight"_, and _"check availability"_ come together to create a holistic _"book flight"_ tool. + +**Application context** refers to the state of the application at any given point in time. This includes the user's input, the output of the language model, and any other relevant information. In the example above, the flight selected in _"pick flight"_ would be used as context necessary to complete the _"check availability"_ task. + +## Overview + +In order to build a multistep interface with `@ai-sdk/rsc`, you will need a few things: + +- A Server Action that calls and returns the result from the `streamUI` function +- Tool(s) (sub-tasks necessary to complete your overall task) +- React component(s) that should be rendered when the tool is called +- A page to render your chatbot + +The general flow that you will follow is: + +- User sends a message (calls your Server Action with `useActions`, passing the message as an input) +- Message is appended to the AI State and then passed to the model alongside a number of tools +- Model can decide to call a tool, which will render the `` component +- Within that component, you can add interactivity by using `useActions` to call the model with your Server Action and `useUIState` to append the model's response (``) to the UI State +- And so on... + +## Implementation + +The turn-by-turn implementation is the simplest form of multistep interfaces. In this implementation, the user and the model take turns during the conversation. For every user input, the model generates a response, and the conversation continues in this turn-by-turn fashion. + +In the following example, you specify two tools (`searchFlights` and `lookupFlight`) that the model can use to search for flights and lookup details for a specific flight. + +```tsx filename="app/actions.tsx" +import { streamUI } from '@ai-sdk/rsc'; +import { openai } from '@ai-sdk/openai'; +import { z } from 'zod'; + +const searchFlights = async ( + source: string, + destination: string, + date: string, +) => { + return [ + { + id: '1', + flightNumber: 'AA123', + }, + { + id: '2', + flightNumber: 'AA456', + }, + ]; +}; + +const lookupFlight = async (flightNumber: string) => { + return { + flightNumber: flightNumber, + departureTime: '10:00 AM', + arrivalTime: '12:00 PM', + }; +}; + +export async function submitUserMessage(input: string) { + 'use server'; + + const ui = await streamUI({ + model: openai('gpt-4o'), + system: 'you are a flight booking assistant', + prompt: input, + text: async ({ content }) =>
{content}
, + tools: { + searchFlights: { + description: 'search for flights', + inputSchema: z.object({ + source: z.string().describe('The origin of the flight'), + destination: z.string().describe('The destination of the flight'), + date: z.string().describe('The date of the flight'), + }), + generate: async function* ({ source, destination, date }) { + yield `Searching for flights from ${source} to ${destination} on ${date}...`; + const results = await searchFlights(source, destination, date); + + return ( +
+ {results.map(result => ( +
+
{result.flightNumber}
+
+ ))} +
+ ); + }, + }, + lookupFlight: { + description: 'lookup details for a flight', + inputSchema: z.object({ + flightNumber: z.string().describe('The flight number'), + }), + generate: async function* ({ flightNumber }) { + yield `Looking up details for flight ${flightNumber}...`; + const details = await lookupFlight(flightNumber); + + return ( +
+
Flight Number: {details.flightNumber}
+
Departure Time: {details.departureTime}
+
Arrival Time: {details.arrivalTime}
+
+ ); + }, + }, + }, + }); + + return ui.value; +} +``` + +Next, create an AI context that will hold the UI State and AI State. + +```ts filename='app/ai.ts' +import { createAI } from '@ai-sdk/rsc'; +import { submitUserMessage } from './actions'; + +export const AI = createAI({ + initialUIState: [], + initialAIState: [], + actions: { + submitUserMessage, + }, +}); +``` + +Next, wrap your application with your newly created context. + +```tsx filename='app/layout.tsx' +import { type ReactNode } from 'react'; +import { AI } from './ai'; + +export default function RootLayout({ + children, +}: Readonly<{ children: ReactNode }>) { + return ( + + + {children} + + + ); +} +``` + +To call your Server Action, update your root page with the following: + +```tsx filename="app/page.tsx" +'use client'; + +import { useState } from 'react'; +import { AI } from './ai'; +import { useActions, useUIState } from '@ai-sdk/rsc'; + +export default function Page() { + const [input, setInput] = useState(''); + const [conversation, setConversation] = useUIState(); + const { submitUserMessage } = useActions(); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setInput(''); + setConversation(currentConversation => [ + ...currentConversation, +
{input}
, + ]); + const message = await submitUserMessage(input); + setConversation(currentConversation => [...currentConversation, message]); + }; + + return ( +
+
+ {conversation.map((message, i) => ( +
{message}
+ ))} +
+
+
+ setInput(e.target.value)} + /> + +
+
+
+ ); +} +``` + +This page pulls in the current UI State using the `useUIState` hook, which is then mapped over and rendered in the UI. To access the Server Action, you use the `useActions` hook which will return all actions that were passed to the `actions` key of the `createAI` function in your `actions.tsx` file. Finally, you call the `submitUserMessage` function like any other TypeScript function. This function returns a React component (`message`) that is then rendered in the UI by updating the UI State with `setConversation`. + +In this example, to call the next tool, the user must respond with plain text. **Given you are streaming a React component, you can add a button to trigger the next step in the conversation**. + +To add user interaction, you will have to convert the component into a client component and use the `useAction` hook to trigger the next step in the conversation. + +```tsx filename="components/flights.tsx" +'use client'; + +import { useActions, useUIState } from '@ai-sdk/rsc'; +import { ReactNode } from 'react'; + +interface FlightsProps { + flights: { id: string; flightNumber: string }[]; +} + +export const Flights = ({ flights }: FlightsProps) => { + const { submitUserMessage } = useActions(); + const [_, setMessages] = useUIState(); + + return ( +
+ {flights.map(result => ( +
+
{ + const display = await submitUserMessage( + `lookupFlight ${result.flightNumber}`, + ); + + setMessages((messages: ReactNode[]) => [...messages, display]); + }} + > + {result.flightNumber} +
+
+ ))} +
+ ); +}; +``` + +Now, update your `searchFlights` tool to render the new `` component. + +```tsx filename="actions.tsx" +... +searchFlights: { + description: 'search for flights', + inputSchema: z.object({ + source: z.string().describe('The origin of the flight'), + destination: z.string().describe('The destination of the flight'), + date: z.string().describe('The date of the flight'), + }), + generate: async function* ({ source, destination, date }) { + yield `Searching for flights from ${source} to ${destination} on ${date}...`; + const results = await searchFlights(source, destination, date); + return (); + }, +} +... +``` + +In the above example, the `Flights` component is used to display the search results. When the user clicks on a flight number, the `lookupFlight` tool is called with the flight number as a parameter. The `submitUserMessage` action is then called to trigger the next step in the conversation. + +Learn more about tool calling in Next.js App Router by checking out examples [here](/examples/next-app/tools). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/05-streaming-values.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/05-streaming-values.mdx new file mode 100644 index 000000000..ff7614a9c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/05-streaming-values.mdx @@ -0,0 +1,157 @@ +--- +title: Streaming Values +description: Overview of streaming RSCs +--- + +import { UIPreviewCard, Card } from '@/components/home/card'; +import { EventPlanning } from '@/components/home/event-planning'; +import { Searching } from '@/components/home/searching'; +import { Weather } from '@/components/home/weather'; + +# Streaming Values + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +The RSC API provides several utility functions to allow you to stream values from the server to the client. This is useful when you need more granular control over what you are streaming and how you are streaming it. + + + These utilities can also be paired with [AI SDK Core](/docs/ai-sdk-core) + functions like [`streamText`](/docs/reference/ai-sdk-core/stream-text) to + easily stream LLM generations from the server to the client. + + +There are two functions provided by the RSC API that allow you to create streamable values: + +- [`createStreamableValue`](/docs/reference/ai-sdk-rsc/create-streamable-value) - creates a streamable (serializable) value, with full control over how you create, update, and close the stream. +- [`createStreamableUI`](/docs/reference/ai-sdk-rsc/create-streamable-ui) - creates a streamable React component, with full control over how you create, update, and close the stream. + +## `createStreamableValue` + +The RSC API allows you to stream serializable JavaScript values from the server to the client using [`createStreamableValue`](/docs/reference/ai-sdk-rsc/create-streamable-value), such as strings, numbers, objects, and arrays. + +This is useful when you want to stream: + +- Text generations from the language model in real-time. +- Buffer values of image and audio generations from multi-modal models. +- Progress updates from multi-step agent runs. + +## Creating a Streamable Value + +You can import `createStreamableValue` from `@ai-sdk/rsc` and use it to create a streamable value. + +```tsx file='app/actions.ts' +'use server'; + +import { createStreamableValue } from '@ai-sdk/rsc'; + +export const runThread = async () => { + const streamableStatus = createStreamableValue('thread.init'); + + setTimeout(() => { + streamableStatus.update('thread.run.create'); + streamableStatus.update('thread.run.update'); + streamableStatus.update('thread.run.end'); + streamableStatus.done('thread.end'); + }, 1000); + + return { + status: streamableStatus.value, + }; +}; +``` + +## Reading a Streamable Value + +You can read streamable values on the client using `readStreamableValue`. It returns an async iterator that yields the value of the streamable as it is updated: + +```tsx file='app/page.tsx' +import { readStreamableValue } from '@ai-sdk/rsc'; +import { runThread } from '@/actions'; + +export default function Page() { + return ( + + ); +} +``` + +Learn how to stream a text generation (with `streamText`) using the Next.js App Router and `createStreamableValue` in this [example](/examples/next-app/basics/streaming-text-generation). + +## `createStreamableUI` + +`createStreamableUI` creates a stream that holds a React component. Unlike AI SDK Core APIs, this function does not call a large language model. Instead, it provides a primitive that can be used to have granular control over streaming a React component. + +## Using `createStreamableUI` + +Let's look at how you can use the `createStreamableUI` function with a Server Action. + +```tsx filename='app/actions.tsx' +'use server'; + +import { createStreamableUI } from '@ai-sdk/rsc'; + +export async function getWeather() { + const weatherUI = createStreamableUI(); + + weatherUI.update(
Loading...
); + + setTimeout(() => { + weatherUI.done(
It's a sunny day!
); + }, 1000); + + return weatherUI.value; +} +``` + +First, you create a streamable UI with an empty state and then update it with a loading message. After 1 second, you mark the stream as done passing in the actual weather information as its final value. The `.value` property contains the actual UI that can be sent to the client. + +## Reading a Streamable UI + +On the client side, you can call the `getWeather` Server Action and render the returned UI like any other React component. + +```tsx filename='app/page.tsx' +'use client'; + +import { useState } from 'react'; +import { readStreamableValue } from '@ai-sdk/rsc'; +import { getWeather } from '@/actions'; + +export default function Page() { + const [weather, setWeather] = useState(null); + + return ( +
+ + + {weather} +
+ ); +} +``` + +When the button is clicked, the `getWeather` function is called, and the returned UI is set to the `weather` state and rendered on the page. Users will see the loading message first and then the actual weather information after 1 second. + +Learn more about handling multiple streams in a single request in the [Multiple Streamables](/docs/advanced/multiple-streamables) guide. + +Learn more about handling state for more complex use cases with [ AI/UI State ](/docs/ai-sdk-rsc/generative-ui-state). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/06-loading-state.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/06-loading-state.mdx new file mode 100644 index 000000000..bd3e31d78 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/06-loading-state.mdx @@ -0,0 +1,273 @@ +--- +title: Handling Loading State +description: Overview of handling loading state with AI SDK RSC +--- + +# Handling Loading State + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +Given that responses from language models can often take a while to complete, it's crucial to be able to show loading state to users. This provides visual feedback that the system is working on their request and helps maintain a positive user experience. + +There are three approaches you can take to handle loading state with the AI SDK RSC: + +- Managing loading state similar to how you would in a traditional Next.js application. This involves setting a loading state variable in the client and updating it when the response is received. +- Streaming loading state from the server to the client. This approach allows you to track loading state on a more granular level and provide more detailed feedback to the user. +- Streaming loading component from the server to the client. This approach allows you to stream a React Server Component to the client while awaiting the model's response. + +## Handling Loading State on the Client + +### Client + +Let's create a simple Next.js page that will call the `generateResponse` function when the form is submitted. The function will take in the user's prompt (`input`) and then generate a response (`response`). To handle the loading state, use the `loading` state variable. When the form is submitted, set `loading` to `true`, and when the response is received, set it back to `false`. While the response is being streamed, the input field will be disabled. + +```tsx filename='app/page.tsx' +'use client'; + +import { useState } from 'react'; +import { generateResponse } from './actions'; +import { readStreamableValue } from '@ai-sdk/rsc'; + +// Force the page to be dynamic and allow streaming responses up to 30 seconds +export const maxDuration = 30; + +export default function Home() { + const [input, setInput] = useState(''); + const [generation, setGeneration] = useState(''); + const [loading, setLoading] = useState(false); + + return ( +
+
{generation}
+
{ + e.preventDefault(); + setLoading(true); + const response = await generateResponse(input); + + let textContent = ''; + + for await (const delta of readStreamableValue(response)) { + textContent = `${textContent}${delta}`; + setGeneration(textContent); + } + setInput(''); + setLoading(false); + }} + > + { + setInput(event.target.value); + }} + /> + +
+
+ ); +} +``` + +### Server + +Now let's implement the `generateResponse` function. Use the `streamText` function to generate a response to the input. + +```typescript filename='app/actions.ts' +'use server'; + +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; +import { createStreamableValue } from '@ai-sdk/rsc'; + +export async function generateResponse(prompt: string) { + const stream = createStreamableValue(); + + (async () => { + const { textStream } = streamText({ + model: __MODEL__, + prompt, + }); + + for await (const text of textStream) { + stream.update(text); + } + + stream.done(); + })(); + + return stream.value; +} +``` + +## Streaming Loading State from the Server + +If you are looking to track loading state on a more granular level, you can create a new streamable value to store a custom variable and then read this on the frontend. Let's update the example to create a new streamable value for tracking loading state: + +### Server + +```typescript filename='app/actions.ts' highlight='9,22,25' +'use server'; + +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; +import { createStreamableValue } from '@ai-sdk/rsc'; + +export async function generateResponse(prompt: string) { + const stream = createStreamableValue(); + const loadingState = createStreamableValue({ loading: true }); + + (async () => { + const { textStream } = streamText({ + model: __MODEL__, + prompt, + }); + + for await (const text of textStream) { + stream.update(text); + } + + stream.done(); + loadingState.done({ loading: false }); + })(); + + return { response: stream.value, loadingState: loadingState.value }; +} +``` + +### Client + +```tsx filename='app/page.tsx' highlight="22,30-34" +'use client'; + +import { useState } from 'react'; +import { generateResponse } from './actions'; +import { readStreamableValue } from '@ai-sdk/rsc'; + +// Force the page to be dynamic and allow streaming responses up to 30 seconds +export const maxDuration = 30; + +export default function Home() { + const [input, setInput] = useState(''); + const [generation, setGeneration] = useState(''); + const [loading, setLoading] = useState(false); + + return ( +
+
{generation}
+
{ + e.preventDefault(); + setLoading(true); + const { response, loadingState } = await generateResponse(input); + + let textContent = ''; + + for await (const responseDelta of readStreamableValue(response)) { + textContent = `${textContent}${responseDelta}`; + setGeneration(textContent); + } + for await (const loadingDelta of readStreamableValue(loadingState)) { + if (loadingDelta) { + setLoading(loadingDelta.loading); + } + } + setInput(''); + setLoading(false); + }} + > + { + setInput(event.target.value); + }} + /> + +
+
+ ); +} +``` + +This allows you to provide more detailed feedback about the generation process to your users. + +## Streaming Loading Components with `streamUI` + +If you are using the [ `streamUI` ](/docs/reference/ai-sdk-rsc/stream-ui) function, you can stream the loading state to the client in the form of a React component. `streamUI` supports the usage of [ JavaScript generator functions ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*), which allow you to yield some value (in this case a React component) while some other blocking work completes. + +## Server + +```ts +'use server'; + +import { openai } from '@ai-sdk/openai'; +import { streamUI } from '@ai-sdk/rsc'; + +export async function generateResponse(prompt: string) { + const result = await streamUI({ + model: openai('gpt-4o'), + prompt, + text: async function* ({ content }) { + yield
loading...
; + return
{content}
; + }, + }); + + return result.value; +} +``` + + + Remember to update the file from `.ts` to `.tsx` because you are defining a + React component in the `streamUI` function. + + +## Client + +```tsx +'use client'; + +import { useState } from 'react'; +import { generateResponse } from './actions'; +import { readStreamableValue } from '@ai-sdk/rsc'; + +// Force the page to be dynamic and allow streaming responses up to 30 seconds +export const maxDuration = 30; + +export default function Home() { + const [input, setInput] = useState(''); + const [generation, setGeneration] = useState(); + + return ( +
+
{generation}
+
{ + e.preventDefault(); + const result = await generateResponse(input); + setGeneration(result); + setInput(''); + }} + > + { + setInput(event.target.value); + }} + /> + +
+
+ ); +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/08-error-handling.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/08-error-handling.mdx new file mode 100644 index 000000000..d8f158214 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/08-error-handling.mdx @@ -0,0 +1,94 @@ +--- +title: Error Handling +description: Learn how to handle errors with the AI SDK. +--- + +# Error Handling + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +Two categories of errors can occur when working with the RSC API: errors while streaming user interfaces and errors while streaming other values. + +## Handling UI Errors + +To handle errors while generating UI, the [`streamableUI`](/docs/reference/ai-sdk-rsc/create-streamable-ui) object exposes an `error()` method. + +```tsx filename='app/actions.tsx' +'use server'; + +import { createStreamableUI } from '@ai-sdk/rsc'; + +export async function getStreamedUI() { + const ui = createStreamableUI(); + + (async () => { + ui.update(
loading
); + const data = await fetchData(); + ui.done(
{data}
); + })().catch(e => { + ui.error(
Error: {e.message}
); + }); + + return ui.value; +} +``` + +With this method, you can catch any error with the stream, and return relevant UI. On the client, you can also use a [React Error Boundary](https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary) to wrap the streamed component and catch any additional errors. + +```tsx filename='app/page.tsx' +import { getStreamedUI } from '@/actions'; +import { useState } from 'react'; +import { ErrorBoundary } from './ErrorBoundary'; + +export default function Page() { + const [streamedUI, setStreamedUI] = useState(null); + + return ( +
+ + {streamedUI} +
+ ); +} +``` + +## Handling Other Errors + +To handle other errors while streaming, you can return an error object that the receiver can use to determine why the failure occurred. + +```tsx filename='app/actions.tsx' +'use server'; + +import { createStreamableValue } from '@ai-sdk/rsc'; +import { fetchData, emptyData } from '../utils/data'; + +export const getStreamedData = async () => { + const streamableData = createStreamableValue(emptyData); + + (async () => { + const data1 = await fetchData(); + streamableData.update(data1); + + const data2 = await fetchData(); + streamableData.update(data2); + + const data3 = await fetchData(); + streamableData.done(data3); + })().catch(e => { + streamableData.error(e); + }); + + return { data: streamableData.value }; +}; +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/09-authentication.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/09-authentication.mdx new file mode 100644 index 000000000..82f0403ee --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/09-authentication.mdx @@ -0,0 +1,42 @@ +--- +title: Handling Authentication +description: Learn how to authenticate with the AI SDK. +--- + +# Authentication + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +The RSC API makes extensive use of [`Server Actions`](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations) to power streaming values and UI from the server. + +Server Actions are exposed as public, unprotected endpoints. As a result, you should treat Server Actions as you would public-facing API endpoints and ensure that the user is authorized to perform the action before returning any data. + +```tsx filename="app/actions.tsx" +'use server'; + +import { cookies } from 'next/headers'; +import { createStreamableUI } from '@ai-sdk/rsc'; +import { validateToken } from '../utils/auth'; + +export const getWeather = async () => { + const token = cookies().get('token'); + + if (!token || !validateToken(token)) { + return { + error: 'This action requires authentication', + }; + } + const streamableDisplay = createStreamableUI(null); + + streamableDisplay.update(); + streamableDisplay.done(); + + return { + display: streamableDisplay.value, + }; +}; +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx new file mode 100644 index 000000000..cee2eee26 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx @@ -0,0 +1,722 @@ +--- +title: Migrating from RSC to UI +description: Learn how to migrate from AI SDK RSC to AI SDK UI. +--- + +# Migrating from RSC to UI + +This guide helps you migrate from AI SDK RSC to AI SDK UI. + +## Background + +The AI SDK has two packages that help you build the frontend for your applications – [AI SDK UI](/docs/ai-sdk-ui) and [AI SDK RSC](/docs/ai-sdk-rsc). + +We introduced support for using [React Server Components](https://react.dev/reference/rsc/server-components) (RSC) within the AI SDK to simplify building generative user interfaces for frameworks that support RSC. + +However, given we're pushing the boundaries of this technology, AI SDK RSC currently faces significant limitations that make it unsuitable for stable production use. + +- It is not possible to abort a stream using server actions. This will be improved in future releases of React and Next.js [(1122)](https://github.com/vercel/ai/issues/1122). +- When using `createStreamableUI` and `streamUI`, components remount on `.done()`, causing them to flicker [(2939)](https://github.com/vercel/ai/issues/2939). +- Many suspense boundaries can lead to crashes [(2843)](https://github.com/vercel/ai/issues/2843). +- Using `createStreamableUI` can lead to quadratic data transfer. You can avoid this using createStreamableValue instead, and rendering the component client-side. +- Closed RSC streams cause update issues [(3007)](https://github.com/vercel/ai/issues/3007). + +Due to these limitations, AI SDK RSC is marked as experimental, and we do not recommend using it for stable production environments. + +As a result, we strongly recommend migrating to AI SDK UI, which has undergone extensive development to provide a more stable and production grade experience. + +In building [v0](https://v0.dev), we have invested considerable time exploring how to create the best chat experience on the web. AI SDK UI ships with many of these best practices and commonly used patterns like [language model middleware](/docs/ai-sdk-core/middleware), [multi-step tool calls](/docs/ai-sdk-core/tools-and-tool-calling#multi-step-calls), [attachments](/docs/ai-sdk-ui/chatbot#attachments-experimental), [telemetry](/docs/ai-sdk-core/telemetry), [provider registry](/docs/ai-sdk-core/provider-management#provider-registry), and many more. These features have been considerately designed into a neat abstraction that you can use to reliably integrate AI into your applications. + +## Streaming Chat Completions + +### Basic Setup + +The `streamUI` function executes as part of a server action as illustrated below. + +#### Before: Handle generation and rendering in a single server action + +```tsx filename="@/app/actions.tsx" +import { openai } from '@ai-sdk/openai'; +import { getMutableAIState, streamUI } from '@ai-sdk/rsc'; + +export async function sendMessage(message: string) { + 'use server'; + + const messages = getMutableAIState('messages'); + + messages.update([...messages.get(), { role: 'user', content: message }]); + + const { value: stream } = await streamUI({ + model: openai('gpt-4o'), + system: 'you are a friendly assistant!', + messages: messages.get(), + text: async function* ({ content, done }) { + // process text + }, + tools: { + // tool definitions + }, + }); + + return stream; +} +``` + +#### Before: Call server action and update UI state + +The chat interface calls the server action. The response is then saved using the `useUIState` hook. + +```tsx filename="@/app/page.tsx" +'use client'; + +import { useState, ReactNode } from 'react'; +import { useActions, useUIState } from '@ai-sdk/rsc'; + +export default function Page() { + const { sendMessage } = useActions(); + const [input, setInput] = useState(''); + const [messages, setMessages] = useUIState(); + + return ( +
+ {messages.map(message => message)} + +
{ + const response: ReactNode = await sendMessage(input); + setMessages(msgs => [...msgs, response]); + }} + > + + +
+
+ ); +} +``` + +The `streamUI` function combines generating text and rendering the user interface. To migrate to AI SDK UI, you need to **separate these concerns** – streaming generations with `streamText` and rendering the UI with `useChat`. + +#### After: Replace server action with route handler + +The `streamText` function executes as part of a route handler and streams the response to the client. The `useChat` hook on the client decodes this stream and renders the response within the chat interface. + +```ts filename="@/app/api/chat/route.ts" +import { streamText } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +export async function POST(request) { + const { messages } = await request.json(); + + const result = streamText({ + model: __MODEL__, + system: 'you are a friendly assistant!', + messages, + tools: { + // tool definitions + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +#### After: Update client to use chat hook + +```tsx filename="@/app/page.tsx" +'use client'; + +import { useChat } from '@ai-sdk/react'; + +export default function Page() { + const { messages, input, setInput, handleSubmit } = useChat(); + + return ( +
+ {messages.map(message => ( +
+
{message.role}
+
{message.content}
+
+ ))} + +
+ { + setInput(event.target.value); + }} + /> + +
+
+ ); +} +``` + +### Parallel Tool Calls + +In AI SDK RSC, `streamUI` does not support parallel tool calls. You will have to use a combination of `streamText`, `createStreamableUI` and `createStreamableValue`. + +With AI SDK UI, `useChat` comes with built-in support for parallel tool calls. You can define multiple tools in the `streamText` and have them called them in parallel. The `useChat` hook will then handle the parallel tool calls for you automatically. + +### Multi-Step Tool Calls + +In AI SDK RSC, `streamUI` does not support multi-step tool calls. You will have to use a combination of `streamText`, `createStreamableUI` and `createStreamableValue`. + +With AI SDK UI, `useChat` comes with built-in support for multi-step tool calls. You can set `maxSteps` in the `streamText` function to define the number of steps the language model can make in a single call. The `useChat` hook will then handle the multi-step tool calls for you automatically. + +### Generative User Interfaces + +The `streamUI` function uses `tools` as a way to execute functions based on user input and renders React components based on the function output to go beyond text in the chat interface. + +#### Before: Render components within the server action and stream to client + +```tsx filename="@/app/actions.tsx" +import { z } from 'zod'; +import { streamUI } from '@ai-sdk/rsc'; +import { openai } from '@ai-sdk/openai'; +import { getWeather } from '@/utils/queries'; +import { Weather } from '@/components/weather'; + +const { value: stream } = await streamUI({ + model: openai('gpt-4o'), + system: 'you are a friendly assistant!', + messages, + text: async function* ({ content, done }) { + // process text + }, + tools: { + displayWeather: { + description: 'Display the weather for a location', + inputSchema: z.object({ + latitude: z.number(), + longitude: z.number(), + }), + generate: async function* ({ latitude, longitude }) { + yield
Loading weather...
; + + const { value, unit } = await getWeather({ latitude, longitude }); + + return ; + }, + }, + }, +}); +``` + +As mentioned earlier, `streamUI` generates text and renders the React component in a single server action call. + +#### After: Replace with route handler and stream props data to client + +The `streamText` function streams the props data as response to the client, while `useChat` decode the stream as `toolInvocations` and renders the chat interface. + +```ts filename="@/app/api/chat/route.ts" +import { z } from 'zod'; +import { openai } from '@ai-sdk/openai'; +import { getWeather } from '@/utils/queries'; +import { streamText } from 'ai'; + +export async function POST(request) { + const { messages } = await request.json(); + + const result = streamText({ + model: __MODEL__, + system: 'you are a friendly assistant!', + messages, + tools: { + displayWeather: { + description: 'Display the weather for a location', + parameters: z.object({ + latitude: z.number(), + longitude: z.number(), + }), + execute: async function ({ latitude, longitude }) { + const props = await getWeather({ latitude, longitude }); + return props; + }, + }, + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +#### After: Update client to use chat hook and render components using tool invocations + +```tsx filename="@/app/page.tsx" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import { Weather } from '@/components/weather'; + +export default function Page() { + const { messages, input, setInput, handleSubmit } = useChat(); + + return ( +
+ {messages.map(message => ( +
+
{message.role}
+
{message.content}
+ +
+ {message.toolInvocations.map(toolInvocation => { + const { toolName, toolCallId, state } = toolInvocation; + + if (state === 'result') { + const { result } = toolInvocation; + + return ( +
+ {toolName === 'displayWeather' ? ( + + ) : null} +
+ ); + } else { + return ( +
+ {toolName === 'displayWeather' ? ( +
Loading weather...
+ ) : null} +
+ ); + } + })} +
+
+ ))} + +
+ { + setInput(event.target.value); + }} + /> + +
+
+ ); +} +``` + +### Handling Client Interactions + +With AI SDK RSC, components streamed to the client can trigger subsequent generations by calling the relevant server action using the `useActions` hooks. This is possible as long as the component is a descendant of the `` context provider. + +#### Before: Use actions hook to send messages + +```tsx filename="@/app/components/list-flights.tsx" +'use client'; + +import { useActions, useUIState } from '@ai-sdk/rsc'; + +export function ListFlights({ flights }) { + const { sendMessage } = useActions(); + const [_, setMessages] = useUIState(); + + return ( +
+ {flights.map(flight => ( +
{ + const response = await sendMessage( + `I would like to choose flight ${flight.id}!`, + ); + + setMessages(msgs => [...msgs, response]); + }} + > + {flight.name} +
+ ))} +
+ ); +} +``` + +#### After: Use another chat hook with same ID from the component + +After switching to AI SDK UI, these messages are synced by initializing the `useChat` hook in the component with the same `id` as the parent component. + +```tsx filename="@/app/components/list-flights.tsx" +'use client'; + +import { useChat } from '@ai-sdk/react'; + +export function ListFlights({ chatId, flights }) { + const { append } = useChat({ + id: chatId, + body: { id: chatId }, + maxSteps: 5, + }); + + return ( +
+ {flights.map(flight => ( +
{ + await append({ + role: 'user', + content: `I would like to choose flight ${flight.id}!`, + }); + }} + > + {flight.name} +
+ ))} +
+ ); +} +``` + +### Loading Indicators + +In AI SDK RSC, you can use the `initial` parameter of `streamUI` to define the component to display while the generation is in progress. + +#### Before: Use `loading` to show loading indicator + +```tsx filename="@/app/actions.tsx" +import { openai } from '@ai-sdk/openai'; +import { streamUI } from '@ai-sdk/rsc'; + +const { value: stream } = await streamUI({ + model: openai('gpt-4o'), + system: 'you are a friendly assistant!', + messages, + initial:
Loading...
, + text: async function* ({ content, done }) { + // process text + }, + tools: { + // tool definitions + }, +}); + +return stream; +``` + +With AI SDK UI, you can use the tool invocation state to show a loading indicator while the tool is executing. + +#### After: Use tool invocation state to show loading indicator + +```tsx filename="@/app/components/message.tsx" +'use client'; + +export function Message({ role, content, toolInvocations }) { + return ( +
+
{role}
+
{content}
+ + {toolInvocations && ( +
+ {toolInvocations.map(toolInvocation => { + const { toolName, toolCallId, state } = toolInvocation; + + if (state === 'result') { + const { result } = toolInvocation; + + return ( +
+ {toolName === 'getWeather' ? ( + + ) : null} +
+ ); + } else { + return ( +
+ {toolName === 'getWeather' ? ( + + ) : ( +
Loading...
+ )} +
+ ); + } + })} +
+ )} +
+ ); +} +``` + +### Saving Chats + +Before implementing `streamUI` as a server action, you should create an `` provider and wrap your application at the root layout to sync the AI and UI states. During initialization, you typically use the `onSetAIState` callback function to track updates to the AI state and save it to the database when `done(...)` is called. + +#### Before: Save chats using callback function of context provider + +```ts filename="@/app/actions.ts" +import { createAI } from '@ai-sdk/rsc'; +import { saveChat } from '@/utils/queries'; + +export const AI = createAI({ + initialAIState: {}, + initialUIState: {}, + actions: { + // server actions + }, + onSetAIState: async ({ state, done }) => { + 'use server'; + + if (done) { + await saveChat(state); + } + }, +}); +``` + +#### After: Save chats using callback function of `streamText` + +With AI SDK UI, you will save chats using the `onFinish` callback function of `streamText` in your route handler. + +```ts filename="@/app/api/chat/route.ts" +import { openai } from '@ai-sdk/openai'; +import { saveChat } from '@/utils/queries'; +import { streamText, convertToModelMessages } from 'ai'; + +export async function POST(request) { + const { id, messages } = await request.json(); + + const coreMessages = await convertToModelMessages(messages); + + const result = streamText({ + model: __MODEL__, + system: 'you are a friendly assistant!', + messages: coreMessages, + onFinish: async ({ response }) => { + try { + await saveChat({ + id, + messages: [...coreMessages, ...response.messages], + }); + } catch (error) { + console.error('Failed to save chat'); + } + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +### Restoring Chats + +When using AI SDK RSC, the `useUIState` hook contains the UI state of the chat. When restoring a previously saved chat, the UI state needs to be loaded with messages. + +Similar to how you typically save chats in AI SDK RSC, you should use the `onGetUIState` callback function to retrieve the chat from the database, convert it into UI state, and return it to be accessible through `useUIState`. + +#### Before: Load chat from database using callback function of context provider + +```ts filename="@/app/actions.ts" +import { createAI } from '@ai-sdk/rsc'; +import { loadChatFromDB, convertToUIState } from '@/utils/queries'; + +export const AI = createAI({ + actions: { + // server actions + }, + onGetUIState: async () => { + 'use server'; + + const chat = await loadChatFromDB(); + const uiState = convertToUIState(chat); + + return uiState; + }, +}); +``` + +AI SDK UI uses the `messages` field of `useChat` to store messages. To load messages when `useChat` is mounted, you should use `initialMessages`. + +As messages are typically loaded from the database, we can use a server actions inside a Page component to fetch an older chat from the database during static generation and pass the messages as props to the `` component. + +#### After: Load chat from database during static generation of page + +```tsx filename="@/app/chat/[id]/page.tsx" +import { Chat } from '@/app/components/chat'; +import { getChatById } from '@/utils/queries'; + +// link to example implementation: https://github.com/vercel/ai-chatbot/blob/00b125378c998d19ef60b73fe576df0fe5a0e9d4/lib/utils.ts#L87-L127 +import { convertToUIMessages } from '@/utils/functions'; + +export default async function Page({ params }: { params: any }) { + const { id } = params; + const chatFromDb = await getChatById({ id }); + + const chat: Chat = { + ...chatFromDb, + messages: convertToUIMessages(chatFromDb.messages), + }; + + return ; +} +``` + +#### After: Pass chat messages as props and load into chat hook + +```tsx filename="@/app/components/chat.tsx" +'use client'; + +import { Message } from 'ai'; +import { useChat } from '@ai-sdk/react'; + +export function Chat({ + id, + initialMessages, +}: { + id; + initialMessages: Array; +}) { + const { messages } = useChat({ + id, + initialMessages, + }); + + return ( +
+ {messages.map(message => ( +
+
{message.role}
+
{message.content}
+
+ ))} +
+ ); +} +``` + +## Streaming Object Generation + +The `createStreamableValue` function streams any serializable data from the server to the client. As a result, this function allows you to stream object generations from the server to the client when paired with `streamText` and `Output`. + +#### Before: Use streamable value to stream object generations + +```ts filename="@/app/actions.ts" +import { Output, streamText } from 'ai'; +import { openai } from '@ai-sdk/openai'; +import { createStreamableValue } from '@ai-sdk/rsc'; +import { notificationsSchema } from '@/utils/schemas'; + +export async function generateSampleNotifications() { + 'use server'; + + const stream = createStreamableValue(); + + (async () => { + const { partialOutputStream } = streamText({ + model: __MODEL__, + system: 'generate sample ios messages for testing', + prompt: 'messages from a family group chat during diwali, max 4', + output: Output.object({ schema: notificationsSchema }), + }); + + for await (const partialObject of partialOutputStream) { + stream.update(partialObject); + } + })(); + + stream.done(); + + return { partialNotificationsStream: stream.value }; +} +``` + +#### Before: Read streamable value and update object + +```tsx filename="@/app/page.tsx" +'use client'; + +import { useState } from 'react'; +import { readStreamableValue } from '@ai-sdk/rsc'; +import { generateSampleNotifications } from '@/app/actions'; + +export default function Page() { + const [notifications, setNotifications] = useState(null); + + return ( +
+ +
+ ); +} +``` + +To migrate to AI SDK UI, you should use the `useObject` hook and implement `streamText` with `Output` within your route handler. + +#### After: Replace with route handler and stream text response + +```ts filename="@/app/api/object/route.ts" +import { Output, streamText } from 'ai'; +import { openai } from '@ai-sdk/openai'; +import { notificationSchema } from '@/utils/schemas'; + +export async function POST(req: Request) { + const context = await req.json(); + + const result = streamText({ + model: __MODEL__, + output: Output.object({ schema: notificationSchema }), + prompt: + `Generate 3 notifications for a messages app in this context:` + context, + }); + + return result.toTextStreamResponse(); +} +``` + +#### After: Use object hook to decode stream and update object + +```tsx filename="@/app/page.tsx" +'use client'; + +import { useObject } from '@ai-sdk/react'; +import { notificationSchema } from '@/utils/schemas'; + +export default function Page() { + const { object, submit } = useObject({ + api: '/api/object', + schema: notificationSchema, + }); + + return ( +
+ + + {object?.notifications?.map((notification, index) => ( +
+

{notification?.name}

+

{notification?.message}

+
+ ))} +
+ ); +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/index.mdx new file mode 100644 index 000000000..7713bbdbe --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/05-ai-sdk-rsc/index.mdx @@ -0,0 +1,63 @@ +--- +title: AI SDK RSC +description: Learn about AI SDK RSC. +collapsed: true +--- + +# AI SDK RSC + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/01-prompt-engineering.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/01-prompt-engineering.mdx new file mode 100644 index 000000000..1ce6c2e79 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/01-prompt-engineering.mdx @@ -0,0 +1,96 @@ +--- +title: Prompt Engineering +description: Learn how to engineer prompts for LLMs with the AI SDK +--- + +# Prompt Engineering + +## What is a Large Language Model (LLM)? + +A Large Language Model is essentially a prediction engine that takes a sequence of words as input and aims to predict the most likely sequence to follow. It does this by assigning probabilities to potential next sequences and then selecting one. The model continues to generate sequences until it meets a specified stopping criterion. + +These models learn by training on massive text corpuses, which means they will be better suited to some use cases than others. For example, a model trained on GitHub data would understand the probabilities of sequences in source code particularly well. However, it's crucial to understand that the generated sequences, while often seeming plausible, can sometimes be random and not grounded in reality. As these models become more accurate, many surprising abilities and applications emerge. + +## What is a prompt? + +Prompts are the starting points for LLMs. They are the inputs that trigger the model to generate text. The scope of prompt engineering involves not just crafting these prompts but also understanding related concepts such as hidden prompts, tokens, token limits, and the potential for prompt hacking, which includes phenomena like jailbreaks and leaks. + +## Why is prompt engineering needed? + +Prompt engineering currently plays a pivotal role in shaping the responses of LLMs. It allows us to tweak the model to respond more effectively to a broader range of queries. This includes the use of techniques like semantic search, command grammars, and the ReActive model architecture. The performance, context window, and cost of LLMs varies between models and model providers which adds further constraints to the mix. For example, the GPT-4 model is more expensive than GPT-3.5-turbo and significantly slower, but it can also be more effective at certain tasks. And so, like many things in software engineering, there is a trade-offs between cost and performance. + +To assist with comparing and tweaking LLMs, we've built an AI playground that allows you to compare the performance of different models side-by-side online. When you're ready, you can even generate code with the AI SDK to quickly use your prompt and your selected model into your own applications. + +## Example: Build a Slogan Generator + +### Start with an instruction + +Imagine you want to build a slogan generator for marketing campaigns. Creating catchy slogans isn't always straightforward! + +First, you'll need a prompt that makes it clear what you want. Let's start with an instruction. Submit this prompt to generate your first completion. + + + +Not bad! Now, try making your instruction more specific. + + + +Introducing a single descriptive term to our prompt influences the completion. Essentially, crafting your prompt is the means by which you "instruct" or "program" the model. + +### Include examples + +Clear instructions are key for quality outcomes, but that might not always be enough. Let's try to enhance your instruction further. + + + +These slogans are fine, but could be even better. It appears the model overlooked the 'live' part in our prompt. Let's change it slightly to generate more appropriate suggestions. + +Often, it's beneficial to both demonstrate and tell the model your requirements. Incorporating examples in your prompt can aid in conveying patterns or subtleties. Test this prompt that carries a few examples. + + + +Great! Incorporating examples of expected output for a certain input prompted the model to generate the kind of names we aimed for. + +### Tweak your settings + +Apart from designing prompts, you can influence completions by tweaking model settings. A crucial setting is the **temperature**. + +You might have seen that the same prompt, when repeated, yielded the same or nearly the same completions. This happens when your temperature is at 0. + +Attempt to re-submit the identical prompt a few times with temperature set to 1. + + + +Notice the difference? With a temperature above 0, the same prompt delivers varied completions each time. + +Keep in mind that the model forecasts the text most likely to follow the preceding text. Temperature, a value from 0 to 1, essentially governs the model's confidence level in making these predictions. A lower temperature implies lesser risks, leading to more precise and deterministic completions. A higher temperature yields a broader range of completions. + +For your slogan generator, you might want a large pool of name suggestions. A moderate temperature of 0.6 should serve well. + +## Recommended Resources + +Prompt Engineering is evolving rapidly, with new methods and research papers surfacing every week. Here are some resources that we've found useful for learning about and experimenting with prompt engineering: + +- [The Vercel AI Playground](/playground) +- [Brex Prompt Engineering](https://github.com/brexhq/prompt-engineering) +- [Prompt Engineering Guide by Dair AI](https://www.promptingguide.ai/) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/02-stopping-streams.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/02-stopping-streams.mdx new file mode 100644 index 000000000..ef6dec443 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/02-stopping-streams.mdx @@ -0,0 +1,184 @@ +--- +title: Stopping Streams +description: Learn how to cancel streams with the AI SDK +--- + +# Stopping Streams + +Canceling ongoing streams is often needed. +For example, users might want to stop a stream when they realize that the response is not what they want. + +The different parts of the AI SDK support canceling streams in different ways. + +## AI SDK Core + +The AI SDK functions have an `abortSignal` argument that you can use to cancel a stream. +You would use this if you want to cancel a stream from the server side to the LLM API, e.g. by +forwarding the `abortSignal` from the request. + +```tsx highlight="10,11,12-16" +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +export async function POST(req: Request) { + const { prompt } = await req.json(); + + const result = streamText({ + model: __MODEL__, + prompt, + // forward the abort signal: + abortSignal: req.signal, + onAbort: ({ steps }) => { + // Handle cleanup when stream is aborted + console.log('Stream aborted after', steps.length, 'steps'); + // Persist partial results to database + }, + }); + + return result.toTextStreamResponse(); +} +``` + +## AI SDK UI + +The hooks, e.g. `useChat` or `useCompletion`, provide a `stop` helper function that can be used to cancel a stream. +This will cancel the stream from the client side to the server. + + + Stream abort functionality is not compatible with stream resumption. If you're + using `resume: true` in `useChat`, the abort functionality will break the + resumption mechanism. Choose either abort or resume functionality, but not + both. + + +```tsx file="app/page.tsx" highlight="9,18-20" +'use client'; + +import { useCompletion } from '@ai-sdk/react'; + +export default function Chat() { + const { input, completion, stop, status, handleSubmit, handleInputChange } = + useCompletion(); + + return ( +
+ {(status === 'submitted' || status === 'streaming') && ( + + )} + {completion} +
+ +
+
+ ); +} +``` + +## Handling stream abort cleanup + +When streams are aborted, you may need to perform cleanup operations such as persisting partial results or cleaning up resources. The `onAbort` callback provides a way to handle these scenarios on the server side. + +Unlike `onFinish`, which is called when a stream completes normally, `onAbort` is specifically called when a stream is aborted via `AbortSignal`. This distinction allows you to handle normal completion and aborted streams differently. + + + For UI message streams (`toUIMessageStreamResponse`), the `onFinish` callback + also receives an `isAborted` parameter that indicates whether the stream was + aborted. This allows you to handle both completion and abort scenarios in a + single callback. + + +```tsx highlight="8-12" +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +const result = streamText({ + model: __MODEL__, + prompt: 'Write a long story...', + abortSignal: controller.signal, + onAbort: ({ steps }) => { + // Called when stream is aborted - persist partial results + await savePartialResults(steps); + await logAbortEvent(steps.length); + }, + onFinish: ({ steps, totalUsage }) => { + // Called when stream completes normally + await saveFinalResults(steps, totalUsage); + }, +}); +``` + +The `onAbort` callback receives: + +- `steps`: Array of all completed steps before the abort occurred + +This is particularly useful for: + +- Persisting partial conversation history to database +- Saving partial progress for later continuation +- Cleaning up server-side resources or connections +- Logging abort events for analytics + +You can also handle abort events directly in the stream using the `abort` stream part: + +```tsx highlight="8-12" +for await (const part of result.fullStream) { + switch (part.type) { + case 'text-delta': + // Handle text delta content + break; + case 'abort': + // Handle abort event directly in stream + console.log('Stream was aborted'); + break; + // ... other cases + } +} +``` + +## UI Message Streams + +When using `toUIMessageStreamResponse`, you need to handle stream abortion slightly differently. The `onFinish` callback receives an `isAborted` parameter, and you should pass the `consumeStream` function to ensure proper abort handling: + +```tsx highlight="5,19,20-24,26" +import { openai } from '@ai-sdk/openai'; +import { + consumeStream, + convertToModelMessages, + streamText, + UIMessage, +} from 'ai'; +__PROVIDER_IMPORT__; + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + abortSignal: req.signal, + }); + + return result.toUIMessageStreamResponse({ + onFinish: async ({ isAborted }) => { + if (isAborted) { + console.log('Stream was aborted'); + // Handle abort-specific cleanup + } else { + console.log('Stream completed normally'); + // Handle normal completion + } + }, + consumeSseStream: consumeStream, + }); +} +``` + +The `consumeStream` function is necessary for proper abort handling in UI message streams. It ensures that the stream is properly consumed even when aborted, preventing potential memory leaks or hanging connections. + +## AI SDK RSC + + + The AI SDK RSC does not currently support stopping streams. + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/03-backpressure.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/03-backpressure.mdx new file mode 100644 index 000000000..1b512d36b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/03-backpressure.mdx @@ -0,0 +1,173 @@ +--- +title: Backpressure +description: How to handle backpressure and cancellation when working with the AI SDK +--- + +# Stream Back-pressure and Cancellation + +This page focuses on understanding back-pressure and cancellation when working with streams. You do not need to know this information to use the AI SDK, but for those interested, it offers a deeper dive on why and how the SDK optimally streams responses. + +In the following sections, we'll explore back-pressure and cancellation in the context of a simple example program. We'll discuss the issues that can arise from an eager approach and demonstrate how a lazy approach can resolve them. + +## Back-pressure and Cancellation with Streams + +Let's begin by setting up a simple example program: + +```jsx +// A generator that will yield positive integers +async function* integers() { + let i = 1; + while (true) { + console.log(`yielding ${i}`); + yield i++; + + await sleep(100); + } +} +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +// Wraps a generator into a ReadableStream +function createStream(iterator) { + return new ReadableStream({ + async start(controller) { + for await (const v of iterator) { + controller.enqueue(v); + } + controller.close(); + }, + }); +} + +// Collect data from stream +async function run() { + // Set up a stream of integers + const stream = createStream(integers()); + + // Read values from our stream + const reader = stream.getReader(); + for (let i = 0; i < 10_000; i++) { + // we know our stream is infinite, so there's no need to check `done`. + const { value } = await reader.read(); + console.log(`read ${value}`); + + await sleep(1_000); + } +} +run(); +``` + +In this example, we create an async-generator that yields positive integers, a `ReadableStream` that wraps our integer generator, and a reader which will read values out of our stream. Notice, too, that our integer generator logs out `"yielding ${i}"`, and our reader logs out `"read ${value}"`. Both take an arbitrary amount of time to process data, represented with a 100ms sleep in our generator, and a 1sec sleep in our reader. + +## Back-pressure + +If you were to run this program, you'd notice something funny. We'll see roughly 10 "yield" logs for every "read" log. This might seem obvious, the generator can push values 10x faster than the reader can pull them out. But it represents a problem, our `stream` has to maintain an ever expanding queue of items that have been pushed in but not pulled out. + +The problem stems from the way we wrap our generator into a stream. Notice the use of `for await (…)` inside our `start` handler. This is an **eager** for-loop, and it is constantly running to get the next value from our generator to be enqueued in our stream. This means our stream does not respect back-pressure, the signal from the consumer to the producer that more values aren't needed _yet_. We've essentially spawned a thread that will perpetually push more data into the stream, one that runs as fast as possible to push new data immediately. Worse, there's no way to signal to this thread to stop running when we don't need additional data. + +To fix this, `ReadableStream` allows a `pull` handler. `pull` is called every time the consumer attempts to read more data from our stream (if there's no data already queued internally). But it's not enough to just move the `for await(…)` into `pull`, we also need to convert from an eager enqueuing to a **lazy** one. By making these 2 changes, we'll be able to react to the consumer. If they need more data, we can easily produce it, and if they don't, then we don't need to spend any time doing unnecessary work. + +```jsx +function createStream(iterator) { + return new ReadableStream({ + async pull(controller) { + const { value, done } = await iterator.next(); + + if (done) { + controller.close(); + } else { + controller.enqueue(value); + } + }, + }); +} +``` + +Our `createStream` is a little more verbose now, but the new code is important. First, we need to manually call our `iterator.next()` method. This returns a `Promise` for an object with the type signature `{ done: boolean, value: T }`. If `done` is `true`, then we know that our iterator won't yield any more values and we must `close` the stream (this allows the consumer to know that the stream is also finished producing values). Else, we need to `enqueue` our newly produced value. + +When we run this program, we see that our "yield" and "read" logs are now paired. We're no longer yielding 10x integers for every read! And, our stream now only needs to maintain 1 item in its internal buffer. We've essentially given control to the consumer, so that it's responsible for producing new values as it needs it. Neato! + +## Cancellation + +Let's go back to our initial eager example, with 1 small edit. Now instead of reading 10,000 integers, we're only going to read 3: + +```jsx +// A generator that will yield positive integers +async function* integers() { + let i = 1; + while (true) { + console.log(`yielding ${i}`); + yield i++; + + await sleep(100); + } +} +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +// Wraps a generator into a ReadableStream +function createStream(iterator) { + return new ReadableStream({ + async start(controller) { + for await (const v of iterator) { + controller.enqueue(v); + } + controller.close(); + }, + }); +} +// Collect data from stream +async function run() { + // Set up a stream that of integers + const stream = createStream(integers()); + + // Read values from our stream + const reader = stream.getReader(); + // We're only reading 3 items this time: + for (let i = 0; i < 3; i++) { + // we know our stream is infinite, so there's no need to check `done`. + const { value } = await reader.read(); + console.log(`read ${value}`); + + await sleep(1000); + } +} +run(); +``` + +We're back to yielding 10x the number of values read. But notice now, after we've read 3 values, we're continuing to yield new values. We know that our reader will never read another value, but our stream doesn't! The eager `for await (…)` will continue forever, loudly enqueuing new values into our stream's buffer and increasing our memory usage until it consumes all available program memory. + +The fix to this is exactly the same: use `pull` and manual iteration. By producing values _**lazily**_, we tie the lifetime of our integer generator to the lifetime of the reader. Once the reads stop, the yields will stop too: + +```jsx +// Wraps a generator into a ReadableStream +function createStream(iterator) { + return new ReadableStream({ + async pull(controller) { + const { value, done } = await iterator.next(); + + if (done) { + controller.close(); + } else { + controller.enqueue(value); + } + }, + }); +} +``` + +Since the solution is the same as implementing back-pressure, it shows that they're just 2 facets of the same problem: Pushing values into a stream should be done **lazily**, and doing it eagerly results in expected problems. + +## Tying Stream Laziness to AI Responses + +Now let's imagine you're integrating AIBot service into your product. Users will be able to prompt "count from 1 to infinity", the browser will fetch your AI API endpoint, and your servers connect to AIBot to get a response. But "infinity" is, well, infinite. The response will never end! + +After a few seconds, the user gets bored and navigates away. Or maybe you're doing local development and a hot-module reload refreshes your page. The browser will have ended its connection to the API endpoint, but will your server end its connection with AIBot? + +If you used the eager `for await (...)` approach, then the connection is still running and your server is asking for more and more data from AIBot. Our server spawned a "thread" and there's no signal when we can end the eager pulls. Eventually, the server is going to run out of memory (remember, there's no active fetch connection to read the buffering responses and free them). + +{/* When we started writing the streaming code for the AI SDK, we confirm aborting a fetch will end a streamed response from Next.js */} + +With the lazy approach, this is taken care of for you. Because the stream will only request new data from AIBot when the consumer requests it, navigating away from the page naturally frees all resources. The fetch connection aborts and the server can clean up the response. The `ReadableStream` tied to that response can now be garbage collected. When that happens, the connection it holds to AIBot can then be freed. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/04-caching.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/04-caching.mdx new file mode 100644 index 000000000..0ba3dc3cc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/04-caching.mdx @@ -0,0 +1,169 @@ +--- +title: Caching +description: How to handle caching when working with the AI SDK +--- + +# Caching Responses + +Depending on the type of application you're building, you may want to cache the responses you receive from your AI provider, at least temporarily. + +## Using Language Model Middleware (Recommended) + +The recommended approach to caching responses is using [language model middleware](/docs/ai-sdk-core/middleware) +and the [`simulateReadableStream`](/docs/reference/ai-sdk-core/simulate-readable-stream) function. + +Language model middleware is a way to enhance the behavior of language models by intercepting and modifying the calls to the language model. +Let's see how you can use language model middleware to cache responses. + +```ts filename="ai/middleware.ts" +import { Redis } from '@upstash/redis'; +import { + type LanguageModelV3, + type LanguageModelV3Middleware, + type LanguageModelV3StreamPart, + simulateReadableStream, +} from 'ai'; + +const redis = new Redis({ + url: process.env.KV_URL, + token: process.env.KV_TOKEN, +}); + +export const cacheMiddleware: LanguageModelV3Middleware = { + wrapGenerate: async ({ doGenerate, params }) => { + const cacheKey = JSON.stringify(params); + + const cached = (await redis.get(cacheKey)) as Awaited< + ReturnType + > | null; + + if (cached !== null) { + return { + ...cached, + response: { + ...cached.response, + timestamp: cached?.response?.timestamp + ? new Date(cached?.response?.timestamp) + : undefined, + }, + }; + } + + const result = await doGenerate(); + + redis.set(cacheKey, result); + + return result; + }, + wrapStream: async ({ doStream, params }) => { + const cacheKey = JSON.stringify(params); + + // Check if the result is in the cache + const cached = await redis.get(cacheKey); + + // If cached, return a simulated ReadableStream that yields the cached result + if (cached !== null) { + // Format the timestamps in the cached response + const formattedChunks = (cached as LanguageModelV3StreamPart[]).map(p => { + if (p.type === 'response-metadata' && p.timestamp) { + return { ...p, timestamp: new Date(p.timestamp) }; + } else return p; + }); + return { + stream: simulateReadableStream({ + initialDelayInMs: 0, + chunkDelayInMs: 10, + chunks: formattedChunks, + }), + }; + } + + // If not cached, proceed with streaming + const { stream, ...rest } = await doStream(); + + const fullResponse: LanguageModelV3StreamPart[] = []; + + const transformStream = new TransformStream< + LanguageModelV3StreamPart, + LanguageModelV3StreamPart + >({ + transform(chunk, controller) { + fullResponse.push(chunk); + controller.enqueue(chunk); + }, + flush() { + // Store the full response in the cache after streaming is complete + redis.set(cacheKey, fullResponse); + }, + }); + + return { + stream: stream.pipeThrough(transformStream), + ...rest, + }; + }, +}; +``` + + + This example uses `@upstash/redis` to store and retrieve the assistant's + responses but you can use any KV storage provider you would like. + + +`LanguageModelV3Middleware` has two methods: `wrapGenerate` and `wrapStream`. `wrapGenerate` is called when using [`generateText`](/docs/reference/ai-sdk-core/generate-text), while `wrapStream` is called when using [`streamText`](/docs/reference/ai-sdk-core/stream-text). + +For `wrapGenerate`, you can cache the response directly. Instead, for `wrapStream`, you cache an array of the stream parts, which can then be used with [`simulateReadableStream`](/docs/ai-sdk-core/testing#simulate-data-stream-protocol-responses) function to create a simulated `ReadableStream` that returns the cached response. In this way, the cached response is returned chunk-by-chunk as if it were being generated by the model. You can control the initial delay and delay between chunks by adjusting the `initialDelayInMs` and `chunkDelayInMs` parameters of `simulateReadableStream`. + +You can see a full example of caching with Redis in a Next.js application in our [Caching Middleware Recipe](/cookbook/next/caching-middleware). + +## Using Lifecycle Callbacks + +Alternatively, each AI SDK Core function has special lifecycle callbacks you can use. The one of interest is likely `onFinish`, which is called when the generation is complete. This is where you can cache the full response. + +Here's an example of how you can implement caching using Vercel KV and Next.js to cache the OpenAI response for 1 hour: + +This example uses [Upstash Redis](https://upstash.com/docs/redis/overall/getstarted) and Next.js to cache the response for 1 hour. + +```tsx filename="app/api/chat/route.ts" +import { convertToModelMessages, streamText, UIMessage } from 'ai'; +__PROVIDER_IMPORT__; +import { Redis } from '@upstash/redis'; + +// Allow streaming responses up to 30 seconds +export const maxDuration = 30; + +const redis = new Redis({ + url: process.env.KV_URL, + token: process.env.KV_TOKEN, +}); + +export async function POST(req: Request) { + const { messages }: { messages: UIMessage[] } = await req.json(); + + // come up with a key based on the request: + const key = JSON.stringify(messages); + + // Check if we have a cached response + const cached = (await redis.get(key)) as string | null; + if (cached != null) { + return new Response(cached, { + status: 200, + headers: { 'Content-Type': 'text/plain' }, + }); + } + + // Call the language model: + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + async onFinish({ text }) { + // Cache the response text: + await redis.set(key, text); + await redis.expire(key, 60 * 60); + }, + }); + + // Respond with the stream + return result.toUIMessageStreamResponse(); +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/05-multiple-streamables.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/05-multiple-streamables.mdx new file mode 100644 index 000000000..bcad57613 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/05-multiple-streamables.mdx @@ -0,0 +1,68 @@ +--- +title: Multiple Streamables +description: Learn to handle multiple streamables in your application. +--- + +# Multiple Streams + +## Multiple Streamable UIs + +The AI SDK RSC APIs allow you to compose and return any number of streamable UIs, along with other data, in a single request. This can be useful when you want to decouple the UI into smaller components and stream them separately. + +```tsx file='app/actions.tsx' +'use server'; + +import { createStreamableUI } from '@ai-sdk/rsc'; + +export async function getWeather() { + const weatherUI = createStreamableUI(); + const forecastUI = createStreamableUI(); + + weatherUI.update(
Loading weather...
); + forecastUI.update(
Loading forecast...
); + + getWeatherData().then(weatherData => { + weatherUI.done(
{weatherData}
); + }); + + getForecastData().then(forecastData => { + forecastUI.done(
{forecastData}
); + }); + + // Return both streamable UIs and other data fields. + return { + requestedAt: Date.now(), + weather: weatherUI.value, + forecast: forecastUI.value, + }; +} +``` + +The client side code is similar to the previous example, but the [tool call](/docs/ai-sdk-core/tools-and-tool-calling) will return the new data structure with the weather and forecast UIs. Depending on the speed of getting weather and forecast data, these two components might be updated independently. + +## Nested Streamable UIs + +You can stream UI components within other UI components. This allows you to create complex UIs that are built up from smaller, reusable components. In the example below, we pass a `historyChart` streamable as a prop to a `StockCard` component. The StockCard can render the `historyChart` streamable, and it will automatically update as the server responds with new data. + +```tsx file='app/actions.tsx' +async function getStockHistoryChart({ symbol: string }) { + 'use server'; + + const ui = createStreamableUI(); + + // We need to wrap this in an async IIFE to avoid blocking. + (async () => { + const price = await getStockPrice({ symbol }); + + // Show a spinner as the history chart for now. + const historyChart = createStreamableUI(); + ui.done(); + + // Getting the history data and then update that part of the UI. + const historyData = await fetch('https://my-stock-data-api.com'); + historyChart.done(); + })(); + + return ui; +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/06-rate-limiting.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/06-rate-limiting.mdx new file mode 100644 index 000000000..03d7825e8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/06-rate-limiting.mdx @@ -0,0 +1,60 @@ +--- +title: Rate Limiting +description: Learn how to rate limit your application. +--- + +# Rate Limiting + +Rate limiting helps you protect your APIs from abuse. It involves setting a +maximum threshold on the number of requests a client can make within a +specified timeframe. This simple technique acts as a gatekeeper, +preventing excessive usage that can degrade service performance and incur +unnecessary costs. + +## Rate Limiting with Vercel KV and Upstash Ratelimit + +In this example, you will protect an API endpoint using [Vercel KV](https://vercel.com/storage/kv) +and [Upstash Ratelimit](https://github.com/upstash/ratelimit). + +```tsx filename='app/api/generate/route.ts' +import kv from '@vercel/kv'; +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; +import { Ratelimit } from '@upstash/ratelimit'; +import { NextRequest } from 'next/server'; + +// Allow streaming responses up to 30 seconds +export const maxDuration = 30; + +// Create Rate limit +const ratelimit = new Ratelimit({ + redis: kv, + limiter: Ratelimit.fixedWindow(5, '30s'), +}); + +export async function POST(req: NextRequest) { + // call ratelimit with request ip + const ip = req.ip ?? 'ip'; + const { success, remaining } = await ratelimit.limit(ip); + + // block the request if unsuccessful + if (!success) { + return new Response('Ratelimited!', { status: 429 }); + } + + const { messages } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +## Simplify API Protection + +With Vercel KV and Upstash Ratelimit, it is possible to protect your APIs +from such attacks with ease. To learn more about how Ratelimit works and +how it can be configured to your needs, see [Ratelimit Documentation](https://upstash.com/docs/oss/sdks/ts/ratelimit/overview). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/07-rendering-ui-with-language-models.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/07-rendering-ui-with-language-models.mdx new file mode 100644 index 000000000..08549d2c4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/07-rendering-ui-with-language-models.mdx @@ -0,0 +1,225 @@ +--- +title: Rendering UI with Language Models +description: Rendering UI with Language Models +--- + +# Rendering User Interfaces with Language Models + +Language models generate text, so at first it may seem like you would only need to render text in your application. + +```tsx highlight="16" filename="app/actions.tsx" +const text = generateText({ + model: __MODEL__, + system: 'You are a friendly assistant', + prompt: 'What is the weather in SF?', + tools: { + getWeather: { + description: 'Get the weather for a location', + inputSchema: z.object({ + city: z.string().describe('The city to get the weather for'), + unit: z + .enum(['C', 'F']) + .describe('The unit to display the temperature in'), + }), + execute: async ({ city, unit }) => { + const weather = getWeather({ city, unit }); + return `It is currently ${weather.value}°${unit} and ${weather.description} in ${city}!`; + }, + }, + }, +}); +``` + +Above, the language model is passed a [tool](/docs/ai-sdk-core/tools-and-tool-calling) called `getWeather` that returns the weather information as text. However, instead of returning text, if you return a JSON object that represents the weather information, you can use it to render a React component instead. + +```tsx highlight="18-23" filename="app/action.ts" +const text = generateText({ + model: __MODEL__, + system: 'You are a friendly assistant', + prompt: 'What is the weather in SF?', + tools: { + getWeather: { + description: 'Get the weather for a location', + inputSchema: z.object({ + city: z.string().describe('The city to get the weather for'), + unit: z + .enum(['C', 'F']) + .describe('The unit to display the temperature in'), + }), + execute: async ({ city, unit }) => { + const weather = getWeather({ city, unit }); + const { temperature, unit, description, forecast } = weather; + + return { + temperature, + unit, + description, + forecast, + }; + }, + }, + }, +}); +``` + +Now you can use the object returned by the `getWeather` function to conditionally render a React component `` that displays the weather information by passing the object as props. + +```tsx filename="app/page.tsx" +return ( +
+ {messages.map(message => { + // Check assistant message parts for tool results + if (message.role === 'assistant') { + return message.parts.map(part => { + if ( + part.type === 'tool-weather' && + part.state === 'output-available' + ) { + const { temperature, unit, description, forecast } = part.output; + + return ( + + ); + } + }); + } + })} +
+); +``` + +Here's a little preview of what that might look like. + +
+ +
+ +Rendering interfaces as part of language model generations elevates the user experience of your application, allowing people to interact with language models beyond text. + +They also make it easier for you to interpret [sequential tool calls](/docs/ai-sdk-rsc/multistep-interfaces) that take place in multiple steps and help identify and debug where the model reasoned incorrectly. + +## Rendering Multiple User Interfaces + +To recap, an application has to go through the following steps to render user interfaces as part of model generations: + +1. The user prompts the language model. +2. The language model generates a response that includes a tool call. +3. The tool call returns a JSON object that represents the user interface. +4. The response is sent to the client. +5. The client receives the response and checks if the latest message was a tool call. +6. If it was a tool call, the client renders the user interface based on the JSON object returned by the tool call. + +Most applications have multiple tools that are called by the language model, and each tool can return a different user interface. + +For example, a tool that searches for courses can return a list of courses, while a tool that searches for people can return a list of people. As this list grows, the complexity of your application will grow as well and it can become increasingly difficult to manage these user interfaces. + +```tsx filename='app/page.tsx' +{ + message.parts.map(part => { + if (part.state !== 'output-available') return null; + + switch (part.type) { + case 'tool-api-search-course': + return ; + case 'tool-api-search-profile': + return ; + case 'tool-api-meetings': + return ; + case 'tool-api-search-building': + return ; + case 'tool-api-events': + return ; + case 'tool-api-meals': + return ; + case 'text': + return
{part.text}
; + default: + return null; + } + }); +} +``` + +## Rendering User Interfaces on the Server + +The **AI SDK RSC (`@ai-sdk/rsc`)** takes advantage of RSCs to solve the problem of managing all your React components on the client side, allowing you to render React components on the server and stream them to the client. + +Rather than conditionally rendering user interfaces on the client based on the data returned by the language model, you can directly stream them from the server during a model generation. + +```tsx highlight="3,22-31,38" filename="app/action.ts" +import { createStreamableUI } from '@ai-sdk/rsc' + +const uiStream = createStreamableUI(); + +const text = generateText({ + model: __MODEL__, + system: 'you are a friendly assistant' + prompt: 'what is the weather in SF?' + tools: { + getWeather: { + description: 'Get the weather for a location', + inputSchema: z.object({ + city: z.string().describe('The city to get the weather for'), + unit: z + .enum(['C', 'F']) + .describe('The unit to display the temperature in') + }), + execute: async ({ city, unit }) => { + const weather = getWeather({ city, unit }) + const { temperature, unit, description, forecast } = weather + + uiStream.done( + + ) + } + } + } +}) + +return { + display: uiStream.value +} +``` + +The [`createStreamableUI`](/docs/reference/ai-sdk-rsc/create-streamable-ui) function belongs to the `@ai-sdk/rsc` module and creates a stream that can send React components to the client. + +On the server, you render the `` component with the props passed to it, and then stream it to the client. On the client side, you only need to render the UI that is streamed from the server. + +```tsx filename="app/page.tsx" highlight="4" +return ( +
+ {messages.map(message => ( +
{message.display}
+ ))} +
+); +``` + +Now the steps involved are simplified: + +1. The user prompts the language model. +2. The language model generates a response that includes a tool call. +3. The tool call renders a React component along with relevant props that represent the user interface. +4. The response is streamed to the client and rendered directly. + +> **Note:** You can also render text on the server and stream it to the client using React Server Components. This way, all operations from language model generation to UI rendering can be done on the server, while the client only needs to render the UI that is streamed from the server. + +Check out this [example](/examples/next-app/interface/stream-component-updates) for a full illustration of how to stream component updates with React Server Components in Next.js App Router. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/08-model-as-router.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/08-model-as-router.mdx new file mode 100644 index 000000000..f19aea1b2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/08-model-as-router.mdx @@ -0,0 +1,120 @@ +--- +title: Language Models as Routers +description: Generative User Interfaces and Language Models as Routers +--- + +# Generative User Interfaces + +Since language models can render user interfaces as part of their generations, the resulting model generations are referred to as generative user interfaces. + +In this section we will learn more about generative user interfaces and their impact on the way AI applications are built. + +## Deterministic Routes and Probabilistic Routing + +Generative user interfaces are not deterministic in nature because they depend on the model's generation output. Since these generations are probabilistic in nature, it is possible for every user query to result in a different user interface. + +Users expect their experience using your application to be predictable, so non-deterministic user interfaces can sound like a bad idea at first. However, language models can be set up to limit their generations to a particular set of outputs using their ability to call functions. + +When language models are provided with a set of function definitions and instructed to execute any of them based on user query, they do either one of the following things: + +- Execute a function that is most relevant to the user query. +- Not execute any function if the user query is out of bounds of the set of functions available to them. + +```tsx filename='app/actions.ts' +const sendMessage = (prompt: string) => + generateText({ + model: __MODEL__, + system: 'you are a friendly weather assistant!', + prompt, + tools: { + getWeather: { + description: 'Get the weather in a location', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + execute: async ({ location }: { location: string }) => ({ + location, + temperature: 72 + Math.floor(Math.random() * 21) - 10, + }), + }, + }, + }); + +sendMessage('What is the weather in San Francisco?'); // getWeather is called +sendMessage('What is the weather in New York?'); // getWeather is called +sendMessage('What events are happening in London?'); // No function is called +``` + +This way, it is possible to ensure that the generations result in deterministic outputs, while the choice a model makes still remains to be probabilistic. + +This emergent ability exhibited by a language model to choose whether a function needs to be executed or not based on a user query is believed to be models emulating "reasoning". + +As a result, the combination of language models being able to reason which function to execute as well as render user interfaces at the same time gives you the ability to build applications where language models can be used as a router. + +## Language Models as Routers + +Historically, developers had to write routing logic that connected different parts of an application to be navigable by a user and complete a specific task. + +In web applications today, most of the routing logic takes place in the form of routes: + +- `/login` would navigate you to a page with a login form. +- `/user/john` would navigate you to a page with profile details about John. +- `/api/events?limit=5` would display the five most recent events from an events database. + +While routes help you build web applications that connect different parts of an application into a seamless user experience, it can also be a burden to manage them as the complexity of applications grow. + +Next.js has helped reduce complexity in developing with routes by introducing: + +- File-based routing system +- Dynamic routing +- API routes +- Middleware +- App router, and so on... + +With language models becoming better at reasoning, we believe that there is a future where developers only write core application specific components while models take care of routing them based on the user's state in an application. + +With generative user interfaces, the language model decides which user interface to render based on the user's state in the application, giving users the flexibility to interact with your application in a conversational manner instead of navigating through a series of predefined routes. + +### Routing by parameters + +For routes like: + +- `/profile/[username]` +- `/search?q=[query]` +- `/media/[id]` + +that have segments dependent on dynamic data, the language model can generate the correct parameters and render the user interface. + +For example, when you're in a search application, you can ask the language model to search for artworks from different artists. The language model will call the search function with the artist's name as a parameter and render the search results. + +
+ +
+ +### Routing by sequence + +For actions that require a sequence of steps to be completed by navigating through different routes, the language model can generate the correct sequence of routes to complete in order to fulfill the user's request. + +For example, when you're in a calendar application, you can ask the language model to schedule a happy hour evening with your friends. The language model will then understand your request and will perform the right sequence of [tool calls](/docs/ai-sdk-core/tools-and-tool-calling) to: + +1. Lookup your calendar +2. Lookup your friends' calendars +3. Determine the best time for everyone +4. Search for nearby happy hour spots +5. Create an event and send out invites to your friends + +
+ +
+ +Just by defining functions to lookup contacts, pull events from a calendar, and search for nearby locations, the model is able to sequentially navigate the routes for you. + +To learn more, check out these [examples](/examples/next-app/interface) using the `streamUI` function to stream generative user interfaces to the client based on the response from the language model. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/09-multistep-interfaces.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/09-multistep-interfaces.mdx new file mode 100644 index 000000000..a43daa846 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/09-multistep-interfaces.mdx @@ -0,0 +1,115 @@ +--- +title: Multistep Interfaces +description: Concepts behind building multistep interfaces +--- + +# Multistep Interfaces + +Multistep interfaces refer to user interfaces that require multiple independent steps to be executed in order to complete a specific task. + +In order to understand multistep interfaces, it is important to understand two concepts: + +- Tool composition +- Application context + +**Tool composition** is the process of combining multiple [tools](/docs/ai-sdk-core/tools-and-tool-calling) to create a new tool. This is a powerful concept that allows you to break down complex tasks into smaller, more manageable steps. + +**Application context** refers to the state of the application at any given point in time. This includes the user's input, the output of the language model, and any other relevant information. + +When designing multistep interfaces, you need to consider how the tools in your application can be composed together to form a coherent user experience as well as how the application context changes as the user progresses through the interface. + +## Application Context + +The application context can be thought of as the conversation history between the user and the language model. The richer the context, the more information the model has to generate relevant responses. + +In the context of multistep interfaces, the application context becomes even more important. This is because **the user's input in one step may affect the output of the model in the next step**. + +For example, consider a meal logging application that helps users track their daily food intake. The language model is provided with the following tools: + +- `log_meal` takes in parameters like the name of the food, the quantity, and the time of consumption to log a meal. +- `delete_meal` takes in the name of the meal to be deleted. + +When the user logs a meal, the model generates a response confirming the meal has been logged. + +```txt highlight="2" +User: Log a chicken shawarma for lunch. +Tool: log_meal("chicken shawarma", "250g", "12:00 PM") +Model: Chicken shawarma has been logged for lunch. +``` + +Now when the user decides to delete the meal, the model should be able to reference the previous step to identify the meal to be deleted. + +```txt highlight="7" +User: Log a chicken shawarma for lunch. +Tool: log_meal("chicken shawarma", "250g", "12:00 PM") +Model: Chicken shawarma has been logged for lunch. +... +... +User: I skipped lunch today, can you update my log? +Tool: delete_meal("chicken shawarma") +Model: Chicken shawarma has been deleted from your log. +``` + +In this example, managing the application context is important for the model to generate the correct response. The model needs to have information about the previous actions in order for it to use generate the parameters for the `delete_meal` tool. + +## Tool Composition + +Tool composition is the process of combining multiple tools to create a new tool. This involves defining the inputs and outputs of each tool, as well as how they interact with each other. + +The design of how these tools can be composed together to form a multistep interface is crucial to both the user experience of your application and the model's ability to generate the correct output. + +For example, consider a flight booking assistant that can help users book flights. The assistant can be designed to have the following tools: + +- `searchFlights`: Searches for flights based on the user's query. +- `lookupFlight`: Looks up details of a specific flight based on the flight number. +- `bookFlight`: Books a flight based on the user's selection. + +The `searchFlights` tool is called when the user wants to lookup flights for a specific route. This would typically mean the tool should be able to take in parameters like the origin and destination of the flight. + +The `lookupFlight` tool is called when the user wants to get more details about a specific flight. This would typically mean the tool should be able to take in parameters like the flight number and return information about seat availability. + +The `bookFlight` tool is called when the user decides to book a flight. In order to identify the flight to book, the tool should be able to take in parameters like the flight number, trip date, and passenger details. + +So the conversation between the user and the model could look like this: + +```txt highlight="8" +User: I want to book a flight from New York to London. +Tool: searchFlights("New York", "London") +Model: Here are the available flights from New York to London. +User: I want to book flight number BA123 on 12th December for myself and my wife. +Tool: lookupFlight("BA123") -> "4 seats available" +Model: Sure, there are seats available! Can you provide the names of the passengers? +User: John Doe and Jane Doe. +Tool: bookFlight("BA123", "12th December", ["John Doe", "Jane Doe"]) +Model: Your flight has been booked! +``` + +In the last tool call, the `bookFlight` tool does not include passenger details as it is not available in the application context. As a result, it requests the user to provide the passenger details before proceeding with the booking. + +Looking up passenger information could've been another tool that the model could've called before calling the `bookFlight` tool assuming that the user is logged into the application. This way, the model does not have to ask the user for the passenger details and can proceed with the booking. + +```txt highlight="5,6" +User: I want to book a flight from New York to London. +Tool: searchFlights("New York", "London") +Model: Here are the available flights from New York to London. +User: I want to book flight number BA123 on 12th December for myself and my wife. +Tool: lookupContacts() -> ["John Doe", "Jane Doe"] +Tool: bookFlight("BA123", "12th December", ["John Doe", "Jane Doe"]) +Model: Your flight has been booked! +``` + +The `lookupContacts` tool is called before the `bookFlight` tool to ensure that the passenger details are available in the application context when booking the flight. This way, the model can reduce the number of steps required from the user and use its ability to call tools that populate its context and use that information to complete the booking process. + +Now, let's introduce another tool called `lookupBooking` that can be used to show booking details by taking in the name of the passenger as parameter. This tool can be composed with the existing tools to provide a more complete user experience. + +```txt highlight="2-4" +User: What's the status of my wife's upcoming flight? +Tool: lookupContacts() -> ["John Doe", "Jane Doe"] +Tool: lookupBooking("Jane Doe") -> "BA123 confirmed" +Tool: lookupFlight("BA123") -> "Flight BA123 is scheduled to depart on 12th December." +Model: Your wife's flight BA123 is confirmed and scheduled to depart on 12th December. +``` + +In this example, the `lookupBooking` tool is used to provide the user with the status of their wife's upcoming flight. By composing this tool with the existing tools, the model is able to generate a response that includes the booking status and the departure date of the flight without requiring the user to provide additional information. + +As a result, the more tools you design that can be composed together, the more complex and powerful your application can become. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/09-sequential-generations.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/09-sequential-generations.mdx new file mode 100644 index 000000000..6fd140a7e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/09-sequential-generations.mdx @@ -0,0 +1,55 @@ +--- +title: Sequential Generations +description: Learn how to implement sequential generations ("chains") with the AI SDK +--- + +# Sequential Generations + +When working with the AI SDK, you may want to create sequences of generations (often referred to as "chains" or "pipes"), where the output of one becomes the input for the next. This can be useful for creating more complex AI-powered workflows or for breaking down larger tasks into smaller, more manageable steps. + +## Example + +In a sequential chain, the output of one generation is directly used as input for the next generation. This allows you to create a series of dependent generations, where each step builds upon the previous one. + +Here's an example of how you can implement sequential actions: + +```typescript +import { generateText } from 'ai'; +__PROVIDER_IMPORT__; + +async function sequentialActions() { + // Generate blog post ideas + const ideasGeneration = await generateText({ + model: __MODEL__, + prompt: 'Generate 10 ideas for a blog post about making spaghetti.', + }); + + console.log('Generated Ideas:\n', ideasGeneration); + + // Pick the best idea + const bestIdeaGeneration = await generateText({ + model: __MODEL__, + prompt: `Here are some blog post ideas about making spaghetti: +${ideasGeneration} + +Pick the best idea from the list above and explain why it's the best.`, + }); + + console.log('\nBest Idea:\n', bestIdeaGeneration); + + // Generate an outline + const outlineGeneration = await generateText({ + model: __MODEL__, + prompt: `We've chosen the following blog post idea about making spaghetti: +${bestIdeaGeneration} + +Create a detailed outline for a blog post based on this idea.`, + }); + + console.log('\nBlog Post Outline:\n', outlineGeneration); +} + +sequentialActions().catch(console.error); +``` + +In this example, we first generate ideas for a blog post, then pick the best idea, and finally create an outline based on that idea. Each step uses the output from the previous step as input for the next generation. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/10-vercel-deployment-guide.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/10-vercel-deployment-guide.mdx new file mode 100644 index 000000000..ecca31146 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/10-vercel-deployment-guide.mdx @@ -0,0 +1,117 @@ +--- +title: Vercel Deployment Guide +description: Learn how to deploy an AI application to production on Vercel +--- + +# Vercel Deployment Guide + +In this guide, you will deploy an AI application to [Vercel](https://vercel.com) using [Next.js](https://nextjs.org) (App Router). + +Vercel is a platform for developers that provides the tools, workflows, and infrastructure you need to build and deploy your web apps faster, without the need for additional configuration. + +Vercel allows for automatic deployments on every branch push and merges onto the production branch of your GitHub, GitLab, and Bitbucket projects. It is a great option for deploying your AI application. + +## Before You Begin + +To follow along with this guide, you will need: + +- a Vercel account +- an account with a Git provider (this tutorial will use [Github](https://github.com)) +- an OpenAI API key + +This guide will teach you how to deploy the application you built in the Next.js (App Router) quickstart tutorial to Vercel. If you haven’t completed the quickstart guide, you can start with [this repo](https://github.com/vercel-labs/ai-sdk-deployment-guide). + +## Commit Changes + +Vercel offers a powerful git-centered workflow that automatically deploys your application to production every time you push to your repository’s main branch. + +Before committing your local changes, make sure that you have a `.gitignore`. Within your `.gitignore`, ensure that you are excluding your environment variables (`.env`) and your node modules (`node_modules`). + +If you have any local changes, you can commit them by running the following commands: + +```bash +git add . +git commit -m "init" +``` + +## Create Git Repo + +You can create a GitHub repository from within your terminal, or on [github.com](https://github.com/). For this tutorial, you will use the GitHub CLI ([more info here](https://cli.github.com/)). + +To create your GitHub repository: + +1. Navigate to [github.com](http://github.com/) +2. In the top right corner, click the "plus" icon and select "New repository" +3. Pick a name for your repository (this can be anything) +4. Click "Create repository" + +Once you have created your repository, GitHub will redirect you to your new repository. + +1. Scroll down the page and copy the commands under the title "...or push an existing repository from the command line" +2. Go back to the terminal, paste and then run the commands + +Note: if you run into the error "error: remote origin already exists.", this is because your local repository is still linked to the repository you cloned. To "unlink", you can run the following command: + +```bash +rm -rf .git +git init +git add . +git commit -m "init" +``` + +Rerun the code snippet from the previous step. + +## Import Project in Vercel + +On the [New Project](https://vercel.com/new) page, under the **Import Git Repository** section, select the Git provider that you would like to import your project from. Follow the prompts to sign in to your GitHub account. + +Once you have signed in, you should see your newly created repository from the previous step in the "Import Git Repository" section. Click the "Import" button next to that project. + +### Add Environment Variables + +Your application uses environment secrets to store your OpenAI API key using a `.env.local` file locally in development. To add this API key to your production deployment, expand the "Environment Variables" section and paste in your `.env.local` file. Vercel will automatically parse your variables and enter them in the appropriate `key:value` format. + +### Deploy + +Press the **Deploy** button. Vercel will create the Project and deploy it based on the chosen configurations. + +### Enjoy the confetti! + +To view your deployment, select the Project in the dashboard and then select the **Domain**. This page is now visible to anyone who has the URL. + +## Considerations + +When deploying an AI application, there are infrastructure-related considerations to be aware of. + +### Function Duration + +In most cases, you will call the large language model (LLM) on the server. By default, Vercel serverless functions have a maximum duration of 10 seconds on the Hobby Tier. Depending on your prompt, it can take an LLM more than this limit to complete a response. If the response is not resolved within this limit, the server will throw an error. + +You can specify the maximum duration of your Vercel function using [route segment config](https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config). To update your maximum duration, add the following route segment config to the top of your route handler or the page which is calling your server action. + +```ts +export const maxDuration = 30; +``` + +You can increase the max duration to 60 seconds on the Hobby Tier. For other tiers, [see the documentation](https://vercel.com/docs/functions/runtimes#max-duration) for limits. + +## Security Considerations + +Given the high cost of calling an LLM, it's important to have measures in place that can protect your application from abuse. + +### Rate Limit + +Rate limiting is a method used to regulate network traffic by defining a maximum number of requests that a client can send to a server within a given time frame. + +Follow [this guide](https://vercel.com/guides/securing-ai-app-rate-limiting) to add rate limiting to your application. + +### Firewall + +A firewall helps protect your applications and websites from DDoS attacks and unauthorized access. + +[Vercel Firewall](https://vercel.com/docs/security/vercel-firewall) is a set of tools and infrastructure, created specifically with security in mind. It automatically mitigates DDoS attacks and Enterprise teams can get further customization for their site, including dedicated support and custom rules for IP blocking. + +## Troubleshooting + +- Streaming not working when [proxied](/docs/troubleshooting/streaming-not-working-when-proxied) +- Experiencing [Timeouts](/docs/troubleshooting/timeout-on-vercel) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/index.mdx new file mode 100644 index 000000000..897d26702 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/06-advanced/index.mdx @@ -0,0 +1,11 @@ +--- +title: Advanced +description: Learn how to use advanced functionality within the AI SDK and RSC API. +collapsed: true +--- + +# Advanced + +This section covers advanced topics and concepts for the AI SDK and RSC API. Working with LLMs often requires a different mental model compared to traditional software development. + +After these concepts, you should have a better understanding of the paradigms behind the AI SDK and RSC API, and how to use them to build more AI applications. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx new file mode 100644 index 000000000..b810f307a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx @@ -0,0 +1,2715 @@ +--- +title: generateText +description: API Reference for generateText. +--- + +# `generateText()` + +Generates text and calls tools for a given prompt using a language model. + +It is ideal for non-interactive use cases such as automation tasks where you need to write text (e.g. drafting email or summarizing web pages) and for agents that use tools. + +```ts +import { generateText } from 'ai'; +__PROVIDER_IMPORT__; + +const { text } = await generateText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', +}); + +console.log(text); +``` + +To see `generateText` in action, check out [these examples](#examples). + +## Import + + + +## API Signature + +### Parameters + +', + description: 'The input prompt to generate the text from.', + }, + { + name: 'messages', + type: 'Array', + description: + 'A list of messages that represent a conversation. Automatically converts UI messages from the useChat hook.', + properties: [ + { + type: 'SystemModelMessage', + parameters: [ + { + name: 'role', + type: "'system'", + description: 'The role for the system message.', + }, + { + name: 'content', + type: 'string', + description: 'The content of the message.', + }, + ], + }, + { + type: 'UserModelMessage', + parameters: [ + { + name: 'role', + type: "'user'", + description: 'The role for the user message.', + }, + { + name: 'content', + type: 'string | Array', + description: 'The content of the message.', + properties: [ + { + type: 'TextPart', + parameters: [ + { + name: 'type', + type: "'text'", + description: 'The type of the message part.', + }, + { + name: 'text', + type: 'string', + description: 'The text content of the message part.', + }, + ], + }, + { + type: 'ImagePart', + parameters: [ + { + name: 'type', + type: "'image'", + description: 'The type of the message part.', + }, + { + name: 'image', + type: 'string | Uint8Array | Buffer | ArrayBuffer | URL', + description: + 'The image content of the message part. String are either base64 encoded content, base64 data URLs, or http(s) URLs.', + }, + { + name: 'mediaType', + type: 'string', + description: + 'The IANA media type of the image. Optional.', + isOptional: true, + }, + ], + }, + { + type: 'FilePart', + parameters: [ + { + name: 'type', + type: "'file'", + description: 'The type of the message part.', + }, + { + name: 'data', + type: 'string | Uint8Array | Buffer | ArrayBuffer | URL', + description: + 'The file content of the message part. String are either base64 encoded content, base64 data URLs, or http(s) URLs.', + }, + { + name: 'mediaType', + type: 'string', + description: 'The IANA media type of the file.', + }, + ], + }, + ], + }, + ], + }, + { + type: 'AssistantModelMessage', + parameters: [ + { + name: 'role', + type: "'assistant'", + description: 'The role for the assistant message.', + }, + { + name: 'content', + type: 'string | Array', + description: 'The content of the message.', + properties: [ + { + type: 'TextPart', + parameters: [ + { + name: 'type', + type: "'text'", + description: 'The type of the message part.', + }, + { + name: 'text', + type: 'string', + description: 'The text content of the message part.', + }, + ], + }, + { + type: 'ReasoningPart', + parameters: [ + { + name: 'type', + type: "'reasoning'", + description: 'The type of the message part.', + }, + { + name: 'text', + type: 'string', + description: 'The reasoning text.', + }, + ], + }, + { + type: 'FilePart', + parameters: [ + { + name: 'type', + type: "'file'", + description: 'The type of the message part.', + }, + { + name: 'data', + type: 'string | Uint8Array | Buffer | ArrayBuffer | URL', + description: + 'The file content of the message part. String are either base64 encoded content, base64 data URLs, or http(s) URLs.', + }, + { + name: 'mediaType', + type: 'string', + description: 'The IANA media type of the file.', + }, + { + name: 'filename', + type: 'string', + description: 'The name of the file.', + isOptional: true, + }, + ], + }, + { + type: 'ToolCallPart', + parameters: [ + { + name: 'type', + type: "'tool-call'", + description: 'The type of the message part.', + }, + { + name: 'toolCallId', + type: 'string', + description: 'The id of the tool call.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool, which typically would be the name of the function.', + }, + { + name: 'input', + type: 'object based on zod schema', + description: + 'Input (parameters) generated by the model to be used by the tool.', + }, + ], + }, + ], + }, + ], + }, + { + type: 'ToolModelMessage', + parameters: [ + { + name: 'role', + type: "'tool'", + description: 'The role for the assistant message.', + }, + { + name: 'content', + type: 'Array', + description: 'The content of the message.', + properties: [ + { + type: 'ToolResultPart', + parameters: [ + { + name: 'type', + type: "'tool-result'", + description: 'The type of the message part.', + }, + { + name: 'toolCallId', + type: 'string', + description: + 'The id of the tool call the result corresponds to.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool the result corresponds to.', + }, + { + name: 'output', + type: 'unknown', + description: + 'The result returned by the tool after execution.', + }, + { + name: 'isError', + type: 'boolean', + isOptional: true, + description: + 'Whether the result is an error or an error message.', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + name: 'tools', + type: 'ToolSet', + description: + 'Tools that are accessible to and can be called by the model. The model needs to support calling tools.', + properties: [ + { + type: 'Tool', + parameters: [ + { + name: 'description', + isOptional: true, + type: 'string', + description: + 'Information about the purpose of the tool including details on how and when it can be used by the model.', + }, + { + name: 'inputSchema', + type: 'Zod Schema | JSON Schema', + description: + 'The schema of the input that the tool expects. The language model will use this to generate the input. It is also used to validate the output of the language model. Use descriptions to make the input understandable for the language model. You can either pass in a Zod schema or a JSON schema (using the `jsonSchema` function).', + }, + { + name: 'execute', + isOptional: true, + type: 'async (parameters: T, options: ToolExecutionOptions) => RESULT', + description: + 'An async function that is called with the arguments from the tool call and produces a result. If not provided, the tool will not be executed automatically.', + properties: [ + { + type: 'ToolExecutionOptions', + parameters: [ + { + name: 'toolCallId', + type: 'string', + description: + 'The ID of the tool call. You can use it e.g. when sending tool-call related information with stream data.', + }, + { + name: 'messages', + type: 'ModelMessage[]', + description: + 'Messages that were sent to the language model to initiate the response that contained the tool call. The messages do not include the system prompt nor the assistant response that contained the tool call.', + }, + { + name: 'abortSignal', + type: 'AbortSignal', + description: + 'An optional abort signal that indicates that the overall operation should be aborted.', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + name: 'toolChoice', + isOptional: true, + type: '"auto" | "none" | "required" | { "type": "tool", "toolName": string }', + description: + 'The tool choice setting. It specifies how tools are selected for execution. The default is "auto". "none" disables tool execution. "required" requires tools to be executed. { "type": "tool", "toolName": string } specifies a specific tool to execute.', + }, + { + name: 'maxOutputTokens', + type: 'number', + isOptional: true, + description: 'Maximum number of tokens to generate.', + }, + { + name: 'temperature', + type: 'number', + isOptional: true, + description: + 'Temperature setting. The value is passed through to the provider. The range depends on the provider and model. It is recommended to set either `temperature` or `topP`, but not both.', + }, + { + name: 'topP', + type: 'number', + isOptional: true, + description: + 'Nucleus sampling. The value is passed through to the provider. The range depends on the provider and model. It is recommended to set either `temperature` or `topP`, but not both.', + }, + { + name: 'topK', + type: 'number', + isOptional: true, + description: + 'Only sample from the top K options for each subsequent token. Used to remove "long tail" low probability responses. Recommended for advanced use cases only. You usually only need to use temperature.', + }, + { + name: 'presencePenalty', + type: 'number', + isOptional: true, + description: + 'Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt. The value is passed through to the provider. The range depends on the provider and model.', + }, + { + name: 'frequencyPenalty', + type: 'number', + isOptional: true, + description: + 'Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases. The value is passed through to the provider. The range depends on the provider and model.', + }, + { + name: 'stopSequences', + type: 'string[]', + isOptional: true, + description: + 'Sequences that will stop the generation of the text. If the model generates any of these sequences, it will stop generating further text.', + }, + { + name: 'seed', + type: 'number', + isOptional: true, + description: + 'The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results.', + }, + { + name: 'maxRetries', + type: 'number', + isOptional: true, + description: + 'Maximum number of retries. Set to 0 to disable retries. Default: 2.', + }, + { + name: 'abortSignal', + type: 'AbortSignal', + isOptional: true, + description: + 'An optional abort signal that can be used to cancel the call.', + }, + { + name: 'timeout', + type: 'number | { totalMs?: number; stepMs?: number }', + isOptional: true, + description: + 'Timeout in milliseconds. Can be specified as a number or as an object with totalMs and/or stepMs properties. totalMs sets the total timeout for the entire call. stepMs sets the timeout for each individual step (LLM call), useful for multi-step generations. Can be used alongside abortSignal.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: + 'Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.', + }, + { + name: 'experimental_telemetry', + type: 'TelemetrySettings', + isOptional: true, + description: 'Telemetry configuration. Experimental feature.', + properties: [ + { + type: 'TelemetrySettings', + parameters: [ + { + name: 'isEnabled', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable telemetry. Disabled by default while experimental.', + }, + { + name: 'recordInputs', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable input recording. Enabled by default.', + }, + { + name: 'recordOutputs', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable output recording. Enabled by default.', + }, + { + name: 'functionId', + type: 'string', + isOptional: true, + description: + 'Identifier for this function. Used to group telemetry data by function.', + }, + { + name: 'metadata', + isOptional: true, + type: 'Record | Array | Array>', + description: + 'Additional information to include in the telemetry data.', + }, + ], + }, + ], + }, + { + name: 'providerOptions', + type: 'Record | undefined', + isOptional: true, + description: + 'Provider-specific options. The outer key is the provider name. The inner values are the metadata. Details depend on the provider.', + }, + { + name: 'activeTools', + type: 'Array', + isOptional: true, + description: + 'Limits the tools that are available for the model to call without changing the tool call and result types in the result. All tools are active by default.', + }, + { + name: 'stopWhen', + type: 'StopCondition | Array>', + isOptional: true, + description: + 'Condition for stopping the generation when there are tool results in the last step. When the condition is an array, any of the conditions can be met to stop the generation. Default: stepCountIs(1).', + }, + { + name: 'prepareStep', + type: '(options: PrepareStepOptions) => PrepareStepResult | Promise>', + isOptional: true, + description: + 'Optional function that you can use to provide different settings for a step. You can modify the model, tool choices, active tools, system prompt, and input messages for each step.', + properties: [ + { + type: 'PrepareStepFunction', + parameters: [ + { + name: 'options', + type: 'object', + description: 'The options for the step.', + properties: [ + { + type: 'PrepareStepOptions', + parameters: [ + { + name: 'steps', + type: 'Array>', + description: 'The steps that have been executed so far.', + }, + { + name: 'stepNumber', + type: 'number', + description: + 'The number of the step that is being executed.', + }, + { + name: 'model', + type: 'LanguageModel', + description: 'The model that is being used.', + }, + { + name: 'messages', + type: 'Array', + description: + 'The messages that will be sent to the model for the current step.', + }, + { + name: 'experimental_context', + type: 'unknown', + isOptional: true, + description: + 'The context passed via the experimental_context setting (experimental).', + }, + ], + }, + ], + }, + ], + }, + { + type: 'PrepareStepResult', + description: + 'Return value that can modify settings for the current step.', + parameters: [ + { + name: 'model', + type: 'LanguageModel', + isOptional: true, + description: + 'Optionally override which LanguageModel instance is used for this step.', + }, + { + name: 'toolChoice', + type: 'ToolChoice', + isOptional: true, + description: + 'Optionally set which tool the model must call, or provide tool call configuration for this step.', + }, + { + name: 'activeTools', + type: 'Array', + isOptional: true, + description: + 'If provided, only these tools are enabled/available for this step.', + }, + { + name: 'system', + type: 'string | SystemModelMessage | SystemModelMessage[]', + isOptional: true, + description: + 'Optionally override the system message(s) sent to the model for this step.', + }, + { + name: 'messages', + type: 'Array', + isOptional: true, + description: + 'Optionally override the full set of messages sent to the model for this step.', + }, + { + name: 'experimental_context', + type: 'unknown', + isOptional: true, + description: + 'Context that is passed into tool execution. Experimental. Changing the context will affect the context in this step and all subsequent steps.', + }, + { + name: 'providerOptions', + type: 'ProviderOptions', + isOptional: true, + description: + 'Additional provider-specific options for this step. Can be used to pass provider-specific configuration such as container IDs for Anthropic code execution.', + }, + ], + }, + ], + }, + { + name: 'experimental_context', + type: 'unknown', + isOptional: true, + description: + 'Context that is passed into tool execution. Experimental (can break in patch releases).', + }, + { + name: 'experimental_download', + type: '(requestedDownloads: Array<{ url: URL; isUrlSupportedByModel: boolean }>) => Promise>', + isOptional: true, + description: + 'Custom download function to control how URLs are fetched when they appear in prompts. By default, files are downloaded if the model does not support the URL for the given media type. Experimental feature. Return null to pass the URL directly to the model (when supported), or return downloaded content with data and media type.', + }, + { + name: 'experimental_include', + type: '{ requestBody?: boolean; responseBody?: boolean }', + isOptional: true, + description: + 'Controls inclusion of request and response bodies in step results. By default, bodies are included. When processing many large payloads (e.g., images), set requestBody and/or responseBody to false to reduce memory usage. Experimental feature.', + properties: [ + { + type: 'Object', + parameters: [ + { + name: 'requestBody', + type: 'boolean', + isOptional: true, + description: + 'Whether to include the request body in step results. The request body can be large when sending images or files. Default: true.', + }, + { + name: 'responseBody', + type: 'boolean', + isOptional: true, + description: + 'Whether to include the response body in step results. Default: true.', + }, + ], + }, + ], + }, + { + name: 'experimental_repairToolCall', + type: '(options: ToolCallRepairOptions) => Promise', + isOptional: true, + description: + 'A function that attempts to repair a tool call that failed to parse. Return either a repaired tool call or null if the tool call cannot be repaired.', + properties: [ + { + type: 'ToolCallRepairOptions', + parameters: [ + { + name: 'system', + type: 'string | SystemModelMessage | SystemModelMessage[] | undefined', + description: 'The system prompt.', + }, + { + name: 'messages', + type: 'ModelMessage[]', + description: 'The messages in the current generation step.', + }, + { + name: 'toolCall', + type: 'LanguageModelV3ToolCall', + description: 'The tool call that failed to parse.', + }, + { + name: 'tools', + type: 'TOOLS', + description: 'The tools that are available.', + }, + { + name: 'parameterSchema', + type: '(options: { toolName: string }) => JSONSchema7', + description: + 'A function that returns the JSON Schema for a tool.', + }, + { + name: 'error', + type: 'NoSuchToolError | InvalidToolInputError', + description: + 'The error that occurred while parsing the tool call.', + }, + ], + }, + ], + }, + { + name: 'output', + type: 'Output', + isOptional: true, + description: + 'Specification for parsing structured outputs from the LLM response.', + properties: [ + { + type: 'Output', + parameters: [ + { + name: 'Output.text()', + type: 'Output', + description: + 'Output specification for text generation (default).', + }, + { + name: 'Output.object()', + type: 'Output', + description: + 'Output specification for typed object generation using schemas. When the model generates a text response, it will return an object that matches the schema.', + properties: [ + { + type: 'Options', + parameters: [ + { + name: 'schema', + type: 'Schema', + description: 'The schema of the object to generate.', + }, + { + name: 'name', + type: 'string', + isOptional: true, + description: + 'Optional name of the output. Used by some providers for additional LLM guidance.', + }, + { + name: 'description', + type: 'string', + isOptional: true, + description: + 'Optional description of the output. Used by some providers for additional LLM guidance.', + }, + ], + }, + ], + }, + { + name: 'Output.array()', + type: 'Output', + description: + 'Output specification for array generation. When the model generates a text response, it will return an array of elements.', + properties: [ + { + type: 'Options', + parameters: [ + { + name: 'element', + type: 'Schema', + description: + 'The schema of the array elements to generate.', + }, + { + name: 'name', + type: 'string', + isOptional: true, + description: + 'Optional name of the output. Used by some providers for additional LLM guidance.', + }, + { + name: 'description', + type: 'string', + isOptional: true, + description: + 'Optional description of the output. Used by some providers for additional LLM guidance.', + }, + ], + }, + ], + }, + { + name: 'Output.choice()', + type: 'Output', + description: + 'Output specification for choice generation. When the model generates a text response, it will return a one of the choice options.', + properties: [ + { + type: 'Options', + parameters: [ + { + name: 'options', + type: 'Array', + description: 'The available choices.', + }, + { + name: 'name', + type: 'string', + isOptional: true, + description: + 'Optional name of the output. Used by some providers for additional LLM guidance.', + }, + { + name: 'description', + type: 'string', + isOptional: true, + description: + 'Optional description of the output. Used by some providers for additional LLM guidance.', + }, + ], + }, + ], + }, + { + name: 'Output.json()', + type: 'Output', + description: + 'Output specification for unstructured JSON generation. When the model generates a text response, it will return a JSON object.', + properties: [ + { + type: 'Options', + parameters: [ + { + name: 'name', + type: 'string', + isOptional: true, + description: + 'Optional name of the output. Used by some providers for additional LLM guidance.', + }, + { + name: 'description', + type: 'string', + isOptional: true, + description: + 'Optional description of the output. Used by some providers for additional LLM guidance.', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + name: 'experimental_onStart', + type: '(event: OnStartEvent) => PromiseLike | void', + isOptional: true, + description: + 'Callback that is called when the generateText operation begins, before any LLM calls are made. Errors thrown in this callback are silently caught and do not break the generation flow. Experimental (can break in patch releases).', + properties: [ + { + type: 'OnStartEvent', + parameters: [ + { + name: 'model', + type: '{ provider: string; modelId: string }', + description: 'The model being used for the generation.', + }, + { + name: 'system', + type: 'string | SystemModelMessage | Array | undefined', + description: 'The system message(s) provided to the model.', + }, + { + name: 'prompt', + type: 'string | Array | undefined', + description: + 'The prompt string or array of messages if using the prompt option.', + }, + { + name: 'messages', + type: 'Array | undefined', + description: 'The messages array if using the messages option.', + }, + { + name: 'tools', + type: 'TOOLS | undefined', + description: 'The tools available for this generation.', + }, + { + name: 'toolChoice', + type: 'ToolChoice | undefined', + description: 'The tool choice strategy for this generation.', + }, + { + name: 'activeTools', + type: 'Array | undefined', + description: + 'Limits which tools are available for the model to call.', + }, + { + name: 'maxOutputTokens', + type: 'number | undefined', + description: 'Maximum number of tokens to generate.', + }, + { + name: 'temperature', + type: 'number | undefined', + description: 'Sampling temperature for generation.', + }, + { + name: 'topP', + type: 'number | undefined', + description: 'Top-p (nucleus) sampling parameter.', + }, + { + name: 'topK', + type: 'number | undefined', + description: 'Top-k sampling parameter.', + }, + { + name: 'presencePenalty', + type: 'number | undefined', + description: 'Presence penalty for generation.', + }, + { + name: 'frequencyPenalty', + type: 'number | undefined', + description: 'Frequency penalty for generation.', + }, + { + name: 'stopSequences', + type: 'string[] | undefined', + description: 'Sequences that will stop generation.', + }, + { + name: 'seed', + type: 'number | undefined', + description: 'Random seed for reproducible generation.', + }, + { + name: 'maxRetries', + type: 'number', + description: 'Maximum number of retries for failed requests.', + }, + { + name: 'timeout', + type: 'number | { totalMs?: number; stepMs?: number; chunkMs?: number } | undefined', + description: + 'Timeout configuration for the generation. Can be a number (milliseconds) or an object with totalMs, stepMs, chunkMs.', + }, + { + name: 'headers', + type: 'Record | undefined', + description: 'Additional HTTP headers sent with the request.', + }, + { + name: 'providerOptions', + type: 'ProviderOptions | undefined', + description: 'Additional provider-specific options.', + }, + { + name: 'stopWhen', + type: 'StopCondition | Array> | undefined', + description: + 'Condition(s) for stopping the generation. When the condition is an array, any of the conditions can be met to stop.', + }, + { + name: 'output', + type: 'OUTPUT | undefined', + description: + 'The output specification for structured outputs, if configured.', + }, + { + name: 'abortSignal', + type: 'AbortSignal | undefined', + description: 'Abort signal for cancelling the operation.', + }, + { + name: 'include', + type: '{ requestBody?: boolean; responseBody?: boolean } | undefined', + description: + 'Settings for controlling what data is included in step results.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata passed to the generation.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object that flows through the entire generation lifecycle.', + }, + ], + }, + ], + }, + { + name: 'experimental_onStepStart', + type: '(event: OnStepStartEvent) => PromiseLike | void', + isOptional: true, + description: + 'Callback that is called when a step (LLM call) begins, before the provider is called. Errors thrown in this callback are silently caught and do not break the generation flow. Experimental (can break in patch releases).', + properties: [ + { + type: 'OnStepStartEvent', + parameters: [ + { + name: 'stepNumber', + type: 'number', + description: 'Zero-based index of the current step.', + }, + { + name: 'model', + type: '{ provider: string; modelId: string }', + description: 'The model being used for this step.', + }, + { + name: 'system', + type: 'string | SystemModelMessage | Array | undefined', + description: 'The system message for this step.', + }, + { + name: 'messages', + type: 'Array', + description: + 'The messages that will be sent to the model for this step. Uses the user-facing ModelMessage format. May be overridden by prepareStep.', + }, + { + name: 'tools', + type: 'TOOLS | undefined', + description: 'The tools available for this generation.', + }, + { + name: 'toolChoice', + type: 'LanguageModelV3ToolChoice | undefined', + description: 'The tool choice configuration for this step.', + }, + { + name: 'activeTools', + type: 'Array | undefined', + description: 'Limits which tools are available for this step.', + }, + { + name: 'steps', + type: 'ReadonlyArray>', + description: + 'Array of results from previous steps (empty for first step).', + }, + { + name: 'providerOptions', + type: 'ProviderOptions | undefined', + description: + 'Additional provider-specific options for this step.', + }, + { + name: 'timeout', + type: 'number | { totalMs?: number; stepMs?: number; chunkMs?: number } | undefined', + description: + 'Timeout configuration for the generation. Can be a number (milliseconds) or an object with totalMs, stepMs, chunkMs.', + }, + { + name: 'headers', + type: 'Record | undefined', + description: 'Additional HTTP headers sent with the request.', + }, + { + name: 'stopWhen', + type: 'StopCondition | Array> | undefined', + description: + 'Condition(s) for stopping the generation. When the condition is an array, any of the conditions can be met to stop.', + }, + { + name: 'output', + type: 'OUTPUT | undefined', + description: + 'The output specification for structured outputs, if configured.', + }, + { + name: 'abortSignal', + type: 'AbortSignal | undefined', + description: 'Abort signal for cancelling the operation.', + }, + { + name: 'include', + type: '{ requestBody?: boolean; responseBody?: boolean } | undefined', + description: + 'Settings for controlling what data is included in step results.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata from telemetry settings.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object. May be updated from prepareStep between steps.', + }, + ], + }, + ], + }, + { + name: 'experimental_onToolCallStart', + type: '(event: OnToolCallStartEvent) => PromiseLike | void', + isOptional: true, + description: + "Callback that is called right before a tool's execute function runs. Errors thrown in this callback are silently caught and do not break the generation flow. Experimental (can break in patch releases).", + properties: [ + { + type: 'OnToolCallStartEvent', + parameters: [ + { + name: 'stepNumber', + type: 'number | undefined', + description: + 'The zero-based index of the current step where this tool call occurs. May be undefined in streaming contexts.', + }, + { + name: 'model', + type: '{ provider: string; modelId: string } | undefined', + description: + 'Information about the model being used. May be undefined in streaming contexts.', + }, + { + name: 'toolCall', + type: 'TypedToolCall', + description: + 'The full tool call object containing toolName, toolCallId, input, and metadata.', + }, + { + name: 'messages', + type: 'Array', + description: + 'The conversation messages available at tool execution time.', + }, + { + name: 'abortSignal', + type: 'AbortSignal | undefined', + description: 'Signal for cancelling the operation.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata from telemetry settings.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object flowing through the generation.', + }, + ], + }, + ], + }, + { + name: 'experimental_onToolCallFinish', + type: '(event: OnToolCallFinishEvent) => PromiseLike | void', + isOptional: true, + description: + "Callback that is called right after a tool's execute function completes (or errors). Uses a discriminated union on the `success` field: when `success: true`, `output` contains the tool result; when `success: false`, `error` contains the error. Errors thrown in this callback are silently caught and do not break the generation flow. Experimental (can break in patch releases).", + properties: [ + { + type: 'OnToolCallFinishEvent', + parameters: [ + { + name: 'stepNumber', + type: 'number | undefined', + description: + 'The zero-based index of the current step where this tool call occurred. May be undefined in streaming contexts.', + }, + { + name: 'model', + type: '{ provider: string; modelId: string } | undefined', + description: + 'Information about the model being used. May be undefined in streaming contexts.', + }, + { + name: 'toolCall', + type: 'TypedToolCall', + description: + 'The full tool call object containing toolName, toolCallId, input, and metadata.', + }, + { + name: 'messages', + type: 'Array', + description: + 'The conversation messages available at tool execution time.', + }, + { + name: 'abortSignal', + type: 'AbortSignal | undefined', + description: 'Signal for cancelling the operation.', + }, + { + name: 'durationMs', + type: 'number', + description: + 'The wall-clock duration of the tool execution in milliseconds.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata from telemetry settings.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object flowing through the generation.', + }, + { + name: 'success', + type: 'boolean', + description: + 'Discriminator indicating whether the tool call succeeded. When true, output is available. When false, error is available.', + }, + { + name: 'output', + type: 'unknown', + description: + "The tool's return value (only present when `success: true`).", + }, + { + name: 'error', + type: 'unknown', + description: + 'The error that occurred during tool execution (only present when `success: false`).', + }, + ], + }, + ], + }, + { + name: 'onStepFinish', + type: '(stepResult: StepResult) => Promise | void', + isOptional: true, + description: + 'Callback that is called when a step is finished. Receives a StepResult object.', + properties: [ + { + type: 'StepResult', + parameters: [ + { + name: 'stepNumber', + type: 'number', + description: 'Zero-based index of this step.', + }, + { + name: 'model', + type: '{ provider: string; modelId: string }', + description: + 'Information about the model that produced this step.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata from telemetry settings.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object flowing through the generation.', + }, + { + name: 'content', + type: 'Array>', + description: 'The content that was generated in this step.', + }, + { + name: 'text', + type: 'string', + description: 'The generated text.', + }, + { + name: 'reasoning', + type: 'Array', + description: + 'The reasoning that was generated during the generation.', + }, + { + name: 'reasoningText', + type: 'string | undefined', + description: + 'The reasoning text that was generated during the generation.', + }, + { + name: 'files', + type: 'Array', + description: + 'The files that were generated during the generation.', + }, + { + name: 'sources', + type: 'Array', + description: 'The sources that were used to generate the text.', + }, + { + name: 'toolCalls', + type: 'Array>', + description: + 'The tool calls that were made during the generation.', + }, + { + name: 'staticToolCalls', + type: 'Array>', + description: 'The static tool calls that were made in this step.', + }, + { + name: 'dynamicToolCalls', + type: 'Array', + description: + 'The dynamic tool calls that were made in this step.', + }, + { + name: 'toolResults', + type: 'Array>', + description: 'The results of the tool calls.', + }, + { + name: 'staticToolResults', + type: 'Array>', + description: + 'The static tool results that were made in this step.', + }, + { + name: 'dynamicToolResults', + type: 'Array', + description: + 'The dynamic tool results that were made in this step.', + }, + { + name: 'finishReason', + type: '"stop" | "length" | "content-filter" | "tool-calls" | "error" | "other"', + description: 'The unified reason why the generation finished.', + }, + { + name: 'rawFinishReason', + type: 'string | undefined', + description: + 'The raw reason why the generation finished (from the provider).', + }, + { + name: 'usage', + type: 'LanguageModelUsage', + description: 'The token usage of the generated text.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: + 'The total number of input (prompt) tokens used.', + }, + { + name: 'inputTokenDetails', + type: 'LanguageModelInputTokenDetails', + description: + 'Detailed information about the input (prompt) tokens.', + properties: [ + { + type: 'LanguageModelInputTokenDetails', + parameters: [ + { + name: 'noCacheTokens', + type: 'number | undefined', + description: + 'The number of non-cached input (prompt) tokens used.', + }, + { + name: 'cacheReadTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens read.', + }, + { + name: 'cacheWriteTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens written.', + }, + ], + }, + ], + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: + 'The number of total output (completion) tokens used.', + }, + { + name: 'outputTokenDetails', + type: 'LanguageModelOutputTokenDetails', + description: + 'Detailed information about the output (completion) tokens.', + properties: [ + { + type: 'LanguageModelOutputTokenDetails', + parameters: [ + { + name: 'textTokens', + type: 'number | undefined', + description: 'The number of text tokens used.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + description: + 'The number of reasoning tokens used.', + }, + ], + }, + ], + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: 'The total number of tokens used.', + }, + { + name: 'raw', + type: 'object | undefined', + isOptional: true, + description: + "Raw usage information from the provider. This is the provider's original usage information and may include additional fields.", + }, + ], + }, + ], + }, + { + name: 'warnings', + type: 'CallWarning[] | undefined', + description: + 'Warnings from the model provider (e.g. unsupported settings).', + }, + { + name: 'request', + type: 'LanguageModelRequestMetadata', + description: 'Additional request information.', + }, + { + name: 'response', + type: 'LanguageModelResponseMetadata & { messages: Array; body?: unknown }', + description: 'Additional response information.', + properties: [ + { + type: 'Response', + parameters: [ + { + name: 'id', + type: 'string', + description: + 'The response identifier. The AI SDK uses the ID from the provider response when available, and generates an ID otherwise.', + }, + { + name: 'modelId', + type: 'string', + description: + 'The model that was used to generate the response.', + }, + { + name: 'timestamp', + type: 'Date', + description: 'The timestamp of the response.', + }, + { + name: 'headers', + isOptional: true, + type: 'Record', + description: 'Optional response headers.', + }, + { + name: 'messages', + type: 'Array', + description: + 'The response messages that were generated during the call.', + }, + { + name: 'body', + isOptional: true, + type: 'unknown', + description: + 'Response body (available only for providers that use HTTP requests).', + }, + ], + }, + ], + }, + { + name: 'providerMetadata', + type: 'ProviderMetadata | undefined', + isOptional: true, + description: + 'Additional provider-specific metadata. They are passed through from the provider to the AI SDK and enable provider-specific results that can be fully encapsulated in the provider.', + }, + ], + }, + ], + }, + { + name: 'onFinish', + type: '(event: StepResult & { steps: StepResult[]; totalUsage: LanguageModelUsage }) => PromiseLike | void', + isOptional: true, + description: + 'Callback that is called when the entire generation completes (all steps finished). The event includes the final step result properties along with aggregated data from all steps.', + properties: [ + { + type: 'OnFinishEvent', + parameters: [ + { + name: 'stepNumber', + type: 'number', + description: 'Zero-based index of the final step.', + }, + { + name: 'model', + type: '{ provider: string; modelId: string }', + description: + 'Information about the model that produced the final step.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata from telemetry settings.', + }, + { + name: 'finishReason', + type: '"stop" | "length" | "content-filter" | "tool-calls" | "error" | "other"', + description: 'The unified reason why the generation finished.', + }, + { + name: 'rawFinishReason', + type: 'string | undefined', + description: + 'The raw reason why the generation finished (from the provider).', + }, + { + name: 'usage', + type: 'LanguageModelUsage', + description: + 'The token usage from the final step only (not aggregated).', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: + 'The total number of input (prompt) tokens used.', + }, + { + name: 'inputTokenDetails', + type: 'LanguageModelInputTokenDetails', + description: + 'Detailed information about the input (prompt) tokens.', + properties: [ + { + type: 'LanguageModelInputTokenDetails', + parameters: [ + { + name: 'noCacheTokens', + type: 'number | undefined', + description: + 'The number of non-cached input (prompt) tokens used.', + }, + { + name: 'cacheReadTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens read.', + }, + { + name: 'cacheWriteTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens written.', + }, + ], + }, + ], + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: + 'The number of total output (completion) tokens used.', + }, + { + name: 'outputTokenDetails', + type: 'LanguageModelOutputTokenDetails', + description: + 'Detailed information about the output (completion) tokens.', + properties: [ + { + type: 'LanguageModelOutputTokenDetails', + parameters: [ + { + name: 'textTokens', + type: 'number | undefined', + description: 'The number of text tokens used.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + description: + 'The number of reasoning tokens used.', + }, + ], + }, + ], + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: 'The total number of tokens used.', + }, + { + name: 'raw', + type: 'object | undefined', + isOptional: true, + description: + "Raw usage information from the provider. This is the provider's original usage information and may include additional fields.", + }, + ], + }, + ], + }, + { + name: 'totalUsage', + type: 'LanguageModelUsage', + description: + 'Aggregated token usage across all steps. This is the sum of the usage from each individual step.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: + 'The total number of input (prompt) tokens used across all steps.', + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: + 'The total number of output (completion) tokens used across all steps.', + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: + 'The total number of tokens used across all steps.', + }, + ], + }, + ], + }, + { + name: 'content', + type: 'Array>', + description: 'The content that was generated in the final step.', + }, + { + name: 'providerMetadata', + type: 'ProviderMetadata | undefined', + description: + 'Additional provider-specific metadata from the final step.', + }, + { + name: 'text', + type: 'string', + description: 'The full text that has been generated.', + }, + { + name: 'reasoningText', + type: 'string | undefined', + description: + 'The reasoning text of the model (only available for some models).', + }, + { + name: 'reasoning', + type: 'Array', + description: + 'The reasoning details of the model (only available for some models).', + properties: [ + { + type: 'ReasoningDetail', + parameters: [ + { + name: 'type', + type: "'text'", + description: 'The type of the reasoning detail.', + }, + { + name: 'text', + type: 'string', + description: 'The text content (only for type "text").', + }, + { + name: 'signature', + type: 'string', + isOptional: true, + description: 'Optional signature (only for type "text").', + }, + ], + }, + { + type: 'ReasoningDetail', + parameters: [ + { + name: 'type', + type: "'redacted'", + description: 'The type of the reasoning detail.', + }, + { + name: 'data', + type: 'string', + description: + 'The redacted data content (only for type "redacted").', + }, + ], + }, + ], + }, + { + name: 'sources', + type: 'Array', + description: + 'Sources that have been used as input to generate the response. For multi-step generation, the sources are accumulated from all steps.', + properties: [ + { + type: 'Source', + parameters: [ + { + name: 'sourceType', + type: "'url'", + description: + 'A URL source. This is return by web search RAG models.', + }, + { + name: 'id', + type: 'string', + description: 'The ID of the source.', + }, + { + name: 'url', + type: 'string', + description: 'The URL of the source.', + }, + { + name: 'title', + type: 'string', + isOptional: true, + description: 'The title of the source.', + }, + { + name: 'providerMetadata', + type: 'SharedV2ProviderMetadata', + isOptional: true, + description: + 'Additional provider metadata for the source.', + }, + ], + }, + ], + }, + { + name: 'files', + type: 'Array', + description: 'Files that were generated in the final step.', + properties: [ + { + type: 'GeneratedFile', + parameters: [ + { + name: 'base64', + type: 'string', + description: 'File as a base64 encoded string.', + }, + { + name: 'uint8Array', + type: 'Uint8Array', + description: 'File as a Uint8Array.', + }, + { + name: 'mediaType', + type: 'string', + description: 'The IANA media type of the file.', + }, + ], + }, + ], + }, + { + name: 'toolCalls', + type: 'Array>', + description: + 'The tool calls that were made during the generation.', + }, + { + name: 'staticToolCalls', + type: 'Array>', + description: + 'The static tool calls that were made in the final step.', + }, + { + name: 'dynamicToolCalls', + type: 'Array', + description: + 'The dynamic tool calls that were made in the final step.', + }, + { + name: 'toolResults', + type: 'Array>', + description: 'The results of the tool calls.', + }, + { + name: 'staticToolResults', + type: 'Array>', + description: + 'The static tool results that were made in the final step.', + }, + { + name: 'dynamicToolResults', + type: 'Array', + description: + 'The dynamic tool results that were made in the final step.', + }, + { + name: 'warnings', + type: 'CallWarning[] | undefined', + description: + 'Warnings from the model provider (e.g. unsupported settings).', + }, + { + name: 'request', + type: 'LanguageModelRequestMetadata', + description: + 'Additional request information from the final step.', + }, + { + name: 'response', + type: 'LanguageModelResponseMetadata & { messages: Array; body?: unknown }', + description: + 'Additional response information from the final step.', + properties: [ + { + type: 'Response', + parameters: [ + { + name: 'id', + type: 'string', + description: + 'The response identifier. The AI SDK uses the ID from the provider response when available, and generates an ID otherwise.', + }, + { + name: 'modelId', + type: 'string', + description: + 'The model that was used to generate the response. The AI SDK uses the response model from the provider response when available, and the model from the function call otherwise.', + }, + { + name: 'timestamp', + type: 'Date', + description: + 'The timestamp of the response. The AI SDK uses the response timestamp from the provider response when available, and creates a timestamp otherwise.', + }, + { + name: 'headers', + isOptional: true, + type: 'Record', + description: 'Optional response headers.', + }, + { + name: 'messages', + type: 'Array', + description: + 'The response messages that were generated during the call. It consists of an assistant message, potentially containing tool calls. When there are tool results, there is an additional tool message with the tool results that are available. If there are tools that do not have execute functions, they are not included in the tool results and need to be added separately.', + }, + ], + }, + ], + }, + { + name: 'steps', + type: 'Array', + description: + 'Response information for every step. You can use this to get information about intermediate steps, such as the tool calls or the response headers.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'The final state of the user-defined context object. This reflects any modifications made during the generation lifecycle via prepareStep or tool execution.', + }, + ], + }, + ], + }, + ]} +/> + +### Returns + +>', + description: 'The content that was generated in the last step.', + }, + { + name: 'text', + type: 'string', + description: 'The generated text by the model.', + }, + { + name: 'reasoning', + type: 'Array', + description: + 'The full reasoning that the model has generated in the last step.', + properties: [ + { + type: 'ReasoningOutput', + parameters: [ + { + name: 'type', + type: "'reasoning'", + description: 'The type of the message part.', + }, + { + name: 'text', + type: 'string', + description: 'The reasoning text.', + }, + { + name: 'providerMetadata', + type: 'SharedV2ProviderMetadata', + isOptional: true, + description: 'Additional provider metadata for the source.', + }, + ], + }, + ], + }, + { + name: 'reasoningText', + type: 'string | undefined', + description: + 'The reasoning text that the model has generated in the last step. Can be undefined if the model has only generated text.', + }, + { + name: 'sources', + type: 'Array', + description: + 'Sources that have been used as input to generate the response. For multi-step generation, the sources are accumulated from all steps.', + properties: [ + { + type: 'Source', + parameters: [ + { + name: 'sourceType', + type: "'url'", + description: + 'A URL source. This is return by web search RAG models.', + }, + { + name: 'id', + type: 'string', + description: 'The ID of the source.', + }, + { + name: 'url', + type: 'string', + description: 'The URL of the source.', + }, + { + name: 'title', + type: 'string', + isOptional: true, + description: 'The title of the source.', + }, + { + name: 'providerMetadata', + type: 'SharedV2ProviderMetadata', + isOptional: true, + description: 'Additional provider metadata for the source.', + }, + ], + }, + ], + }, + { + name: 'files', + type: 'Array', + description: 'Files that were generated in the final step.', + properties: [ + { + type: 'GeneratedFile', + parameters: [ + { + name: 'base64', + type: 'string', + description: 'File as a base64 encoded string.', + }, + { + name: 'uint8Array', + type: 'Uint8Array', + description: 'File as a Uint8Array.', + }, + { + name: 'mediaType', + type: 'string', + description: 'The IANA media type of the file.', + }, + ], + }, + ], + }, + { + name: 'toolCalls', + type: 'ToolCallArray', + description: 'The tool calls that were made in the last step.', + }, + { + name: 'toolResults', + type: 'ToolResultArray', + description: 'The results of the tool calls from the last step.', + }, + { + name: 'staticToolCalls', + type: 'Array>', + description: + 'The static tool calls that have been executed in the last step.', + }, + { + name: 'dynamicToolCalls', + type: 'Array', + description: + 'The dynamic tool calls that have been executed in the last step.', + }, + { + name: 'staticToolResults', + type: 'Array>', + description: + 'The static tool results that have been generated in the last step.', + }, + { + name: 'dynamicToolResults', + type: 'Array', + description: + 'The dynamic tool results that have been generated in the last step.', + }, + { + name: 'finishReason', + type: "'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other'", + description: 'The reason the model finished generating the text.', + }, + { + name: 'rawFinishReason', + type: 'string | undefined', + description: + 'The raw reason why the generation finished (from the provider).', + }, + { + name: 'usage', + type: 'LanguageModelUsage', + description: 'The token usage of the last step.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: 'The total number of input (prompt) tokens used.', + }, + { + name: 'inputTokenDetails', + type: 'LanguageModelInputTokenDetails', + description: + 'Detailed information about the input (prompt) tokens. See also: cached tokens and non-cached tokens.', + properties: [ + { + type: 'LanguageModelInputTokenDetails', + parameters: [ + { + name: 'noCacheTokens', + type: 'number | undefined', + description: + 'The number of non-cached input (prompt) tokens used.', + }, + { + name: 'cacheReadTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens read.', + }, + { + name: 'cacheWriteTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens written.', + }, + ], + }, + ], + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: + 'The number of total output (completion) tokens used.', + }, + { + name: 'outputTokenDetails', + type: 'LanguageModelOutputTokenDetails', + description: + 'Detailed information about the output (completion) tokens.', + properties: [ + { + type: 'LanguageModelOutputTokenDetails', + parameters: [ + { + name: 'textTokens', + type: 'number | undefined', + description: 'The number of text tokens used.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + description: 'The number of reasoning tokens used.', + }, + ], + }, + ], + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: 'The total number of tokens used.', + }, + { + name: 'raw', + type: 'object | undefined', + isOptional: true, + description: + "Raw usage information from the provider. This is the provider's original usage information and may include additional fields.", + }, + ], + }, + ], + }, + { + name: 'totalUsage', + type: 'LanguageModelUsage', + description: + 'The total token usage of all steps. When there are multiple steps, the usage is the sum of all step usages.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: 'The number of input (prompt) tokens used.', + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: 'The number of output (completion) tokens used.', + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: + 'The total number of tokens as reported by the provider. This number might be different from the sum of inputTokens and outputTokens and e.g. include reasoning tokens or other overhead.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + isOptional: true, + description: 'The number of reasoning tokens used.', + }, + { + name: 'cachedInputTokens', + type: 'number | undefined', + isOptional: true, + description: 'The number of cached input tokens.', + }, + ], + }, + ], + }, + { + name: 'request', + type: 'LanguageModelRequestMetadata', + isOptional: true, + description: 'Request metadata.', + properties: [ + { + type: 'LanguageModelRequestMetadata', + parameters: [ + { + name: 'body', + type: 'string', + description: + 'Raw request HTTP body that was sent to the provider API as a string (JSON should be stringified).', + }, + ], + }, + ], + }, + { + name: 'response', + type: 'LanguageModelResponseMetadata', + isOptional: true, + description: 'Response metadata.', + properties: [ + { + type: 'LanguageModelResponseMetadata', + parameters: [ + { + name: 'id', + type: 'string', + description: + 'The response identifier. The AI SDK uses the ID from the provider response when available, and generates an ID otherwise.', + }, + { + name: 'modelId', + type: 'string', + description: + 'The model that was used to generate the response. The AI SDK uses the response model from the provider response when available, and the model from the function call otherwise.', + }, + { + name: 'timestamp', + type: 'Date', + description: + 'The timestamp of the response. The AI SDK uses the response timestamp from the provider response when available, and creates a timestamp otherwise.', + }, + { + name: 'headers', + isOptional: true, + type: 'Record', + description: 'Optional response headers.', + }, + { + name: 'body', + isOptional: true, + type: 'unknown', + description: 'Optional response body.', + }, + { + name: 'messages', + type: 'Array', + description: + 'The response messages that were generated during the call. It consists of an assistant message, potentially containing tool calls. When there are tool results, there is an additional tool message with the tool results that are available. If there are tools that do not have execute functions, they are not included in the tool results and need to be added separately.', + }, + ], + }, + ], + }, + { + name: 'warnings', + type: 'Warning[] | undefined', + description: + 'Warnings from the model provider (e.g. unsupported settings).', + }, + { + name: 'providerMetadata', + type: 'ProviderMetadata | undefined', + description: + 'Optional metadata from the provider. The outer key is the provider name. The inner values are the metadata. Details depend on the provider.', + }, + { + name: 'output', + type: 'Output', + isOptional: true, + description: 'Experimental setting for generating structured outputs.', + }, + { + name: 'steps', + type: 'Array>', + description: + 'Response information for every step. You can use this to get information about intermediate steps, such as the tool calls or the response headers.', + properties: [ + { + type: 'StepResult', + parameters: [ + { + name: 'stepNumber', + type: 'number', + description: 'The zero-based index of this step.', + }, + { + name: 'model', + type: '{ provider: string; modelId: string }', + description: + 'Information about the model that produced this step.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata from telemetry settings.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object flowing through the generation.', + }, + { + name: 'content', + type: 'Array>', + description: 'The content that was generated in the last step.', + }, + { + name: 'text', + type: 'string', + description: 'The generated text.', + }, + { + name: 'reasoning', + type: 'Array', + description: + 'The reasoning that was generated during the generation.', + properties: [ + { + type: 'ReasoningPart', + parameters: [ + { + name: 'type', + type: "'reasoning'", + description: 'The type of the message part.', + }, + { + name: 'text', + type: 'string', + description: 'The reasoning text.', + }, + ], + }, + ], + }, + { + name: 'reasoningText', + type: 'string | undefined', + description: + 'The reasoning text that was generated during the generation.', + }, + { + name: 'files', + type: 'Array', + description: + 'The files that were generated during the generation.', + properties: [ + { + type: 'GeneratedFile', + parameters: [ + { + name: 'base64', + type: 'string', + description: 'File as a base64 encoded string.', + }, + { + name: 'uint8Array', + type: 'Uint8Array', + description: 'File as a Uint8Array.', + }, + { + name: 'mediaType', + type: 'string', + description: 'The IANA media type of the file.', + }, + ], + }, + ], + }, + { + name: 'sources', + type: 'Array', + description: 'The sources that were used to generate the text.', + properties: [ + { + type: 'Source', + parameters: [ + { + name: 'sourceType', + type: "'url'", + description: + 'A URL source. This is return by web search RAG models.', + }, + { + name: 'id', + type: 'string', + description: 'The ID of the source.', + }, + { + name: 'url', + type: 'string', + description: 'The URL of the source.', + }, + { + name: 'title', + type: 'string', + isOptional: true, + description: 'The title of the source.', + }, + { + name: 'providerMetadata', + type: 'SharedV2ProviderMetadata', + isOptional: true, + description: + 'Additional provider metadata for the source.', + }, + ], + }, + ], + }, + { + name: 'toolCalls', + type: 'ToolCallArray', + description: + 'The tool calls that were made during the generation.', + }, + { + name: 'toolResults', + type: 'ToolResultArray', + description: 'The results of the tool calls.', + }, + { + name: 'finishReason', + type: "'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other'", + description: 'The reason why the generation finished.', + }, + { + name: 'rawFinishReason', + type: 'string | undefined', + description: + 'The raw reason why the generation finished (from the provider).', + }, + { + name: 'usage', + type: 'LanguageModelUsage', + description: 'The token usage of the generated text.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: + 'The total number of input (prompt) tokens used.', + }, + { + name: 'inputTokenDetails', + type: 'LanguageModelInputTokenDetails', + description: + 'Detailed information about the input (prompt) tokens. See also: cached tokens and non-cached tokens.', + properties: [ + { + type: 'LanguageModelInputTokenDetails', + parameters: [ + { + name: 'noCacheTokens', + type: 'number | undefined', + description: + 'The number of non-cached input (prompt) tokens used.', + }, + { + name: 'cacheReadTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens read.', + }, + { + name: 'cacheWriteTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens written.', + }, + ], + }, + ], + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: + 'The number of total output (completion) tokens used.', + }, + { + name: 'outputTokenDetails', + type: 'LanguageModelOutputTokenDetails', + description: + 'Detailed information about the output (completion) tokens.', + properties: [ + { + type: 'LanguageModelOutputTokenDetails', + parameters: [ + { + name: 'textTokens', + type: 'number | undefined', + description: 'The number of text tokens used.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + description: + 'The number of reasoning tokens used.', + }, + ], + }, + ], + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: 'The total number of tokens used.', + }, + { + name: 'raw', + type: 'object | undefined', + isOptional: true, + description: + "Raw usage information from the provider. This is the provider's original usage information and may include additional fields.", + }, + ], + }, + ], + }, + { + name: 'warnings', + type: 'Warning[] | undefined', + description: + 'Warnings from the model provider (e.g. unsupported settings).', + }, + { + name: 'request', + type: 'LanguageModelRequestMetadata', + description: 'Additional request information.', + properties: [ + { + type: 'LanguageModelRequestMetadata', + parameters: [ + { + name: 'body', + type: 'string', + description: + 'Raw request HTTP body that was sent to the provider API as a string (JSON should be stringified).', + }, + ], + }, + ], + }, + { + name: 'response', + type: 'LanguageModelResponseMetadata', + description: 'Additional response information.', + properties: [ + { + type: 'LanguageModelResponseMetadata', + parameters: [ + { + name: 'id', + type: 'string', + description: + 'The response identifier. The AI SDK uses the ID from the provider response when available, and generates an ID otherwise.', + }, + { + name: 'modelId', + type: 'string', + description: + 'The model that was used to generate the response. The AI SDK uses the response model from the provider response when available, and the model from the function call otherwise.', + }, + { + name: 'timestamp', + type: 'Date', + description: + 'The timestamp of the response. The AI SDK uses the response timestamp from the provider response when available, and creates a timestamp otherwise.', + }, + { + name: 'headers', + isOptional: true, + type: 'Record', + description: 'Optional response headers.', + }, + { + name: 'body', + isOptional: true, + type: 'unknown', + description: + 'Response body (available only for providers that use HTTP requests).', + }, + { + name: 'messages', + type: 'Array', + description: + 'The response messages that were generated during the call. Response messages can be either assistant messages or tool messages. They contain a generated id.', + }, + ], + }, + ], + }, + { + name: 'providerMetadata', + type: 'ProviderMetadata | undefined', + description: + 'Additional provider-specific metadata. They are passed through from the provider to the AI SDK and enable provider-specific results that can be fully encapsulated in the provider.', + }, + ], + }, + ], + }, + ]} +/> + +## Examples + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx new file mode 100644 index 000000000..7b4f9ba23 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx @@ -0,0 +1,3656 @@ +--- +title: streamText +description: API Reference for streamText. +--- + +# `streamText()` + +Streams text generations from a language model. + +You can use the streamText function for interactive use cases such as chat bots and other real-time applications. You can also generate UI components with tools. + +```ts +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +const { textStream } = streamText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', +}); + +for await (const textPart of textStream) { + process.stdout.write(textPart); +} +``` + +To see `streamText` in action, check out [these examples](#examples). + +## Import + + + +## API Signature + +### Parameters + +', + description: 'The input prompt to generate the text from.', + }, + { + name: 'messages', + type: 'Array', + description: + 'A list of messages that represent a conversation. Automatically converts UI messages from the useChat hook.', + properties: [ + { + type: 'SystemModelMessage', + parameters: [ + { + name: 'role', + type: "'system'", + description: 'The role for the system message.', + }, + { + name: 'content', + type: 'string', + description: 'The content of the message.', + }, + ], + }, + { + type: 'UserModelMessage', + parameters: [ + { + name: 'role', + type: "'user'", + description: 'The role for the user message.', + }, + { + name: 'content', + type: 'string | Array', + description: 'The content of the message.', + properties: [ + { + type: 'TextPart', + parameters: [ + { + name: 'type', + type: "'text'", + description: 'The type of the message part.', + }, + { + name: 'text', + type: 'string', + description: 'The text content of the message part.', + }, + ], + }, + { + type: 'ImagePart', + parameters: [ + { + name: 'type', + type: "'image'", + description: 'The type of the message part.', + }, + { + name: 'image', + type: 'string | Uint8Array | Buffer | ArrayBuffer | URL', + description: + 'The image content of the message part. String are either base64 encoded content, base64 data URLs, or http(s) URLs.', + }, + { + name: 'mediaType', + type: 'string', + isOptional: true, + description: 'The IANA media type of the image.', + }, + ], + }, + { + type: 'FilePart', + parameters: [ + { + name: 'type', + type: "'file'", + description: 'The type of the message part.', + }, + { + name: 'data', + type: 'string | Uint8Array | Buffer | ArrayBuffer | URL', + description: + 'The file content of the message part. String are either base64 encoded content, base64 data URLs, or http(s) URLs.', + }, + { + name: 'mediaType', + type: 'string', + description: 'The IANA media type of the file.', + }, + ], + }, + ], + }, + ], + }, + { + type: 'AssistantModelMessage', + parameters: [ + { + name: 'role', + type: "'assistant'", + description: 'The role for the assistant message.', + }, + { + name: 'content', + type: 'string | Array', + description: 'The content of the message.', + properties: [ + { + type: 'TextPart', + parameters: [ + { + name: 'type', + type: "'text'", + description: 'The type of the message part.', + }, + { + name: 'text', + type: 'string', + description: 'The text content of the message part.', + }, + ], + }, + { + type: 'ReasoningPart', + parameters: [ + { + name: 'type', + type: "'reasoning'", + description: 'The type of the reasoning part.', + }, + { + name: 'text', + type: 'string', + description: 'The reasoning text.', + }, + ], + }, + { + type: 'FilePart', + parameters: [ + { + name: 'type', + type: "'file'", + description: 'The type of the message part.', + }, + { + name: 'data', + type: 'string | Uint8Array | Buffer | ArrayBuffer | URL', + description: + 'The file content of the message part. String are either base64 encoded content, base64 data URLs, or http(s) URLs.', + }, + { + name: 'mediaType', + type: 'string', + description: 'The IANA media type of the file.', + }, + { + name: 'filename', + type: 'string', + description: 'The name of the file.', + isOptional: true, + }, + ], + }, + { + type: 'ToolCallPart', + parameters: [ + { + name: 'type', + type: "'tool-call'", + description: 'The type of the message part.', + }, + { + name: 'toolCallId', + type: 'string', + description: 'The id of the tool call.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool, which typically would be the name of the function.', + }, + { + name: 'input', + type: 'object based on zod schema', + description: + 'Parameters generated by the model to be used by the tool.', + }, + ], + }, + ], + }, + ], + }, + { + type: 'ToolModelMessage', + parameters: [ + { + name: 'role', + type: "'tool'", + description: 'The role for the assistant message.', + }, + { + name: 'content', + type: 'Array', + description: 'The content of the message.', + properties: [ + { + type: 'ToolResultPart', + parameters: [ + { + name: 'type', + type: "'tool-result'", + description: 'The type of the message part.', + }, + { + name: 'toolCallId', + type: 'string', + description: + 'The id of the tool call the result corresponds to.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool the result corresponds to.', + }, + { + name: 'result', + type: 'unknown', + description: + 'The result returned by the tool after execution.', + }, + { + name: 'isError', + type: 'boolean', + isOptional: true, + description: + 'Whether the result is an error or an error message.', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + name: 'tools', + type: 'ToolSet', + description: + 'Tools that are accessible to and can be called by the model. The model needs to support calling tools.', + properties: [ + { + type: 'Tool', + parameters: [ + { + name: 'description', + isOptional: true, + type: 'string', + description: + 'Information about the purpose of the tool including details on how and when it can be used by the model.', + }, + { + name: 'inputSchema', + type: 'Zod Schema | JSON Schema', + description: + 'The schema of the input that the tool expects. The language model will use this to generate the input. It is also used to validate the output of the language model. Use descriptions to make the input understandable for the language model. You can either pass in a Zod schema or a JSON schema (using the `jsonSchema` function).', + }, + { + name: 'execute', + isOptional: true, + type: 'async (parameters: T, options: ToolExecutionOptions) => RESULT', + description: + 'An async function that is called with the arguments from the tool call and produces a result. If not provided, the tool will not be executed automatically.', + properties: [ + { + type: 'ToolExecutionOptions', + parameters: [ + { + name: 'toolCallId', + type: 'string', + description: + 'The ID of the tool call. You can use it e.g. when sending tool-call related information with stream data.', + }, + { + name: 'messages', + type: 'ModelMessage[]', + description: + 'Messages that were sent to the language model to initiate the response that contained the tool call. The messages do not include the system prompt nor the assistant response that contained the tool call.', + }, + { + name: 'abortSignal', + type: 'AbortSignal', + description: + 'An optional abort signal that indicates that the overall operation should be aborted.', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + name: 'toolChoice', + isOptional: true, + type: '"auto" | "none" | "required" | { "type": "tool", "toolName": string }', + description: + 'The tool choice setting. It specifies how tools are selected for execution. The default is "auto". "none" disables tool execution. "required" requires tools to be executed. { "type": "tool", "toolName": string } specifies a specific tool to execute.', + }, + { + name: 'maxOutputTokens', + type: 'number', + isOptional: true, + description: 'Maximum number of tokens to generate.', + }, + { + name: 'temperature', + type: 'number', + isOptional: true, + description: + 'Temperature setting. The value is passed through to the provider. The range depends on the provider and model. It is recommended to set either `temperature` or `topP`, but not both.', + }, + { + name: 'topP', + type: 'number', + isOptional: true, + description: + 'Nucleus sampling. The value is passed through to the provider. The range depends on the provider and model. It is recommended to set either `temperature` or `topP`, but not both.', + }, + { + name: 'topK', + type: 'number', + isOptional: true, + description: + 'Only sample from the top K options for each subsequent token. Used to remove "long tail" low probability responses. Recommended for advanced use cases only. You usually only need to use temperature.', + }, + { + name: 'presencePenalty', + type: 'number', + isOptional: true, + description: + 'Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt. The value is passed through to the provider. The range depends on the provider and model.', + }, + { + name: 'frequencyPenalty', + type: 'number', + isOptional: true, + description: + 'Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases. The value is passed through to the provider. The range depends on the provider and model.', + }, + { + name: 'stopSequences', + type: 'string[]', + isOptional: true, + description: + 'Sequences that will stop the generation of the text. If the model generates any of these sequences, it will stop generating further text.', + }, + { + name: 'seed', + type: 'number', + isOptional: true, + description: + 'The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results.', + }, + { + name: 'maxRetries', + type: 'number', + isOptional: true, + description: + 'Maximum number of retries. Set to 0 to disable retries. Default: 2.', + }, + { + name: 'abortSignal', + type: 'AbortSignal', + isOptional: true, + description: + 'An optional abort signal that can be used to cancel the call.', + }, + { + name: 'timeout', + type: 'number | { totalMs?: number; stepMs?: number; chunkMs?: number }', + isOptional: true, + description: + 'Timeout in milliseconds. Can be specified as a number or as an object with totalMs, stepMs, and/or chunkMs properties. totalMs sets the total timeout for the entire call. stepMs sets the timeout for each individual step (LLM call), useful for multi-step generations. chunkMs sets the timeout between stream chunks - the call will abort if no new chunk is received within this duration, useful for detecting stalled streams. Can be used alongside abortSignal.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: + 'Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.', + }, + { + name: 'experimental_telemetry', + type: 'TelemetrySettings', + isOptional: true, + description: 'Telemetry configuration. Experimental feature.', + properties: [ + { + type: 'TelemetrySettings', + parameters: [ + { + name: 'isEnabled', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable telemetry. Disabled by default while experimental.', + }, + { + name: 'recordInputs', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable input recording. Enabled by default.', + }, + { + name: 'recordOutputs', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable output recording. Enabled by default.', + }, + { + name: 'functionId', + type: 'string', + isOptional: true, + description: + 'Identifier for this function. Used to group telemetry data by function.', + }, + { + name: 'metadata', + isOptional: true, + type: 'Record | Array | Array>', + description: + 'Additional information to include in the telemetry data.', + }, + ], + }, + ], + }, + { + name: 'experimental_transform', + type: 'StreamTextTransform | Array', + isOptional: true, + description: + 'Optional stream transformations. They are applied in the order they are provided. The stream transformations must maintain the stream structure for streamText to work correctly.', + properties: [ + { + type: 'StreamTextTransform', + parameters: [ + { + name: 'transform', + type: '(options: TransformOptions) => TransformStream, TextStreamPart>', + description: 'A transformation that is applied to the stream.', + properties: [ + { + type: 'TransformOptions', + parameters: [ + { + name: 'stopStream', + type: '() => void', + description: 'A function that stops the stream.', + }, + { + name: 'tools', + type: 'TOOLS', + description: 'The tools that are available.', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + name: 'includeRawChunks', + type: 'boolean', + isOptional: true, + description: + 'Whether to include raw chunks from the provider in the stream. When enabled, you will receive raw chunks with type "raw" that contain the unprocessed data from the provider. This allows access to cutting-edge provider features not yet wrapped by the AI SDK. Defaults to false.', + }, + { + name: 'providerOptions', + type: 'Record | undefined', + isOptional: true, + description: + 'Provider-specific options. The outer key is the provider name. The inner values are the metadata. Details depend on the provider.', + }, + { + name: 'activeTools', + type: 'Array | undefined', + isOptional: true, + description: + 'The tools that are currently active. All tools are active by default.', + }, + { + name: 'stopWhen', + type: 'StopCondition | Array>', + isOptional: true, + description: + 'Condition for stopping the generation when there are tool results in the last step. When the condition is an array, any of the conditions can be met to stop the generation. Default: stepCountIs(1).', + }, + { + name: 'prepareStep', + type: '(options: PrepareStepOptions) => PrepareStepResult | Promise>', + isOptional: true, + description: + 'Optional function that you can use to provide different settings for a step. You can modify the model, tool choices, active tools, system prompt, and input messages for each step.', + properties: [ + { + type: 'PrepareStepFunction', + parameters: [ + { + name: 'options', + type: 'object', + description: 'The options for the step.', + properties: [ + { + type: 'PrepareStepOptions', + parameters: [ + { + name: 'steps', + type: 'Array>', + description: 'The steps that have been executed so far.', + }, + { + name: 'stepNumber', + type: 'number', + description: + 'The number of the step that is being executed.', + }, + { + name: 'model', + type: 'LanguageModel', + description: 'The model that is being used.', + }, + { + name: 'messages', + type: 'Array', + description: + 'The messages that will be sent to the model for the current step.', + }, + { + name: 'experimental_context', + type: 'unknown', + isOptional: true, + description: + 'The context passed via the experimental_context setting (experimental).', + }, + ], + }, + ], + }, + ], + }, + { + type: 'PrepareStepResult', + description: + 'Return value that can modify settings for the current step.', + parameters: [ + { + name: 'model', + type: 'LanguageModel', + isOptional: true, + description: + 'Optionally override which LanguageModel instance is used for this step.', + }, + { + name: 'toolChoice', + type: 'ToolChoice', + isOptional: true, + description: + 'Optionally set which tool the model must call, or provide tool call configuration for this step.', + }, + { + name: 'activeTools', + type: 'Array', + isOptional: true, + description: + 'If provided, only these tools are enabled/available for this step.', + }, + { + name: 'system', + type: 'string | SystemModelMessage | SystemModelMessage[]', + isOptional: true, + description: + 'Optionally override the system message(s) sent to the model for this step.', + }, + { + name: 'messages', + type: 'Array', + isOptional: true, + description: + 'Optionally override the full set of messages sent to the model for this step.', + }, + { + name: 'experimental_context', + type: 'unknown', + isOptional: true, + description: + 'Context that is passed into tool execution. Experimental. Changing the context will affect the context in this step and all subsequent steps.', + }, + { + name: 'providerOptions', + type: 'ProviderOptions', + isOptional: true, + description: + 'Additional provider-specific options for this step. Can be used to pass provider-specific configuration such as container IDs for Anthropic code execution.', + }, + ], + }, + ], + }, + { + name: 'experimental_context', + type: 'unknown', + isOptional: true, + description: + 'Context that is passed into tool execution. Experimental (can break in patch releases).', + }, + { + name: 'experimental_download', + type: '(requestedDownloads: Array<{ url: URL; isUrlSupportedByModel: boolean }>) => Promise>', + isOptional: true, + description: + 'Custom download function to control how URLs are fetched when they appear in prompts. By default, files are downloaded if the model does not support the URL for the given media type. Experimental feature. Return null to pass the URL directly to the model (when supported), or return downloaded content with data and media type.', + }, + { + name: 'experimental_include', + type: '{ requestBody?: boolean }', + isOptional: true, + description: + 'Controls inclusion of request body in step results. By default, the body is included. When processing many large payloads (e.g., images), set requestBody to false to reduce memory usage. Experimental feature.', + properties: [ + { + type: 'Object', + parameters: [ + { + name: 'requestBody', + type: 'boolean', + isOptional: true, + description: + 'Whether to include the request body in step results. The request body can be large when sending images or files. Default: true.', + }, + ], + }, + ], + }, + { + name: 'experimental_repairToolCall', + type: '(options: ToolCallRepairOptions) => Promise', + isOptional: true, + description: + 'A function that attempts to repair a tool call that failed to parse. Return either a repaired tool call or null if the tool call cannot be repaired.', + properties: [ + { + type: 'ToolCallRepairOptions', + parameters: [ + { + name: 'system', + type: 'string | SystemModelMessage | SystemModelMessage[] | undefined', + description: 'The system prompt.', + }, + { + name: 'messages', + type: 'ModelMessage[]', + description: 'The messages in the current generation step.', + }, + { + name: 'toolCall', + type: 'LanguageModelV3ToolCall', + description: 'The tool call that failed to parse.', + }, + { + name: 'tools', + type: 'TOOLS', + description: 'The tools that are available.', + }, + { + name: 'parameterSchema', + type: '(options: { toolName: string }) => JSONSchema7', + description: + 'A function that returns the JSON Schema for a tool.', + }, + { + name: 'error', + type: 'NoSuchToolError | InvalidToolInputError', + description: + 'The error that occurred while parsing the tool call.', + }, + ], + }, + ], + }, + { + name: 'onChunk', + type: '(event: OnChunkResult) => Promise |void', + isOptional: true, + description: + 'Callback that is called for each chunk of the stream. The stream processing will pause until the callback promise is resolved.', + properties: [ + { + type: 'OnChunkResult', + parameters: [ + { + name: 'chunk', + type: 'TextStreamPart', + description: 'The chunk of the stream.', + properties: [ + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'text'", + description: + 'The type to identify the object as text delta.', + }, + { + name: 'text', + type: 'string', + description: 'The text delta.', + }, + ], + }, + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'reasoning'", + description: + 'The type to identify the object as reasoning.', + }, + { + name: 'text', + type: 'string', + description: 'The reasoning text delta.', + }, + ], + }, + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'source'", + description: 'The type to identify the object as source.', + }, + { + name: 'source', + type: 'Source', + description: 'The source.', + }, + ], + }, + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'tool-call'", + description: + 'The type to identify the object as tool call.', + }, + { + name: 'toolCallId', + type: 'string', + description: 'The id of the tool call.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool, which typically would be the name of the function.', + }, + { + name: 'input', + type: 'object based on zod schema', + description: + 'Parameters generated by the model to be used by the tool.', + }, + ], + }, + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'tool-call-streaming-start'", + description: + 'Indicates the start of a tool call streaming. Only available when streaming tool calls.', + }, + { + name: 'toolCallId', + type: 'string', + description: 'The id of the tool call.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool, which typically would be the name of the function.', + }, + ], + }, + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'tool-call-delta'", + description: + 'The type to identify the object as tool call delta. Only available when streaming tool calls.', + }, + { + name: 'toolCallId', + type: 'string', + description: 'The id of the tool call.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool, which typically would be the name of the function.', + }, + { + name: 'argsTextDelta', + type: 'string', + description: 'The text delta of the tool call arguments.', + }, + ], + }, + { + type: 'TextStreamPart', + description: 'The result of a tool call execution.', + parameters: [ + { + name: 'type', + type: "'tool-result'", + description: + 'The type to identify the object as tool result.', + }, + { + name: 'toolCallId', + type: 'string', + description: 'The id of the tool call.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool, which typically would be the name of the function.', + }, + { + name: 'input', + type: 'object based on zod schema', + description: + 'Parameters generated by the model to be used by the tool.', + }, + { + name: 'output', + type: 'any', + description: + 'The result returned by the tool after execution has completed.', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + name: 'onError', + type: '(event: OnErrorResult) => Promise |void', + isOptional: true, + description: + 'Callback that is called when an error occurs during streaming. You can use it to log errors.', + properties: [ + { + type: 'OnErrorResult', + parameters: [ + { + name: 'error', + type: 'unknown', + description: 'The error that occurred.', + }, + ], + }, + ], + }, + { + name: 'output', + type: 'Output', + isOptional: true, + description: + 'Specification for parsing structured outputs from the LLM response.', + properties: [ + { + type: 'Output', + parameters: [ + { + name: 'Output.text()', + type: 'Output', + description: + 'Output specification for text generation (default).', + }, + { + name: 'Output.object()', + type: 'Output', + description: + 'Output specification for typed object generation using schemas. When the model generates a text response, it will return an object that matches the schema.', + properties: [ + { + type: 'Options', + parameters: [ + { + name: 'schema', + type: 'Schema', + description: 'The schema of the object to generate.', + }, + { + name: 'name', + type: 'string', + isOptional: true, + description: + 'Optional name of the output. Used by some providers for additional LLM guidance.', + }, + { + name: 'description', + type: 'string', + isOptional: true, + description: + 'Optional description of the output. Used by some providers for additional LLM guidance.', + }, + ], + }, + ], + }, + { + name: 'Output.array()', + type: 'Output', + description: + 'Output specification for array generation. When the model generates a text response, it will return an array of elements.', + properties: [ + { + type: 'Options', + parameters: [ + { + name: 'element', + type: 'Schema', + description: + 'The schema of the array elements to generate.', + }, + { + name: 'name', + type: 'string', + isOptional: true, + description: + 'Optional name of the output. Used by some providers for additional LLM guidance.', + }, + { + name: 'description', + type: 'string', + isOptional: true, + description: + 'Optional description of the output. Used by some providers for additional LLM guidance.', + }, + ], + }, + ], + }, + { + name: 'Output.choice()', + type: 'Output', + description: + 'Output specification for choice generation. When the model generates a text response, it will return a one of the choice options.', + properties: [ + { + type: 'Options', + parameters: [ + { + name: 'options', + type: 'Array', + description: 'The available choices.', + }, + { + name: 'name', + type: 'string', + isOptional: true, + description: + 'Optional name of the output. Used by some providers for additional LLM guidance.', + }, + { + name: 'description', + type: 'string', + isOptional: true, + description: + 'Optional description of the output. Used by some providers for additional LLM guidance.', + }, + ], + }, + ], + }, + { + name: 'Output.json()', + type: 'Output', + description: + 'Output specification for unstructured JSON generation. When the model generates a text response, it will return a JSON object.', + properties: [ + { + type: 'Options', + parameters: [ + { + name: 'name', + type: 'string', + isOptional: true, + description: + 'Optional name of the output. Used by some providers for additional LLM guidance.', + }, + { + name: 'description', + type: 'string', + isOptional: true, + description: + 'Optional description of the output. Used by some providers for additional LLM guidance.', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + name: 'onStepFinish', + type: '(result: onStepFinishResult) => Promise | void', + isOptional: true, + description: 'Callback that is called when a step is finished.', + properties: [ + { + type: 'onStepFinishResult', + parameters: [ + { + name: 'stepType', + type: '"initial" | "continue" | "tool-result"', + description: + 'The type of step. The first step is always an "initial" step, and subsequent steps are either "continue" steps or "tool-result" steps.', + }, + { + name: 'finishReason', + type: '"stop" | "length" | "content-filter" | "tool-calls" | "error" | "other"', + description: + 'The unified finish reason why the generation finished.', + }, + { + name: 'rawFinishReason', + type: 'string | undefined', + description: + 'The raw reason why the generation finished (from the provider).', + }, + { + name: 'usage', + type: 'LanguageModelUsage', + description: 'The token usage of the step.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: + 'The total number of input (prompt) tokens used.', + }, + { + name: 'inputTokenDetails', + type: 'LanguageModelInputTokenDetails', + description: + 'Detailed information about the input (prompt) tokens. See also: cached tokens and non-cached tokens.', + properties: [ + { + type: 'LanguageModelInputTokenDetails', + parameters: [ + { + name: 'noCacheTokens', + type: 'number | undefined', + description: + 'The number of non-cached input (prompt) tokens used.', + }, + { + name: 'cacheReadTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens read.', + }, + { + name: 'cacheWriteTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens written.', + }, + ], + }, + ], + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: + 'The number of total output (completion) tokens used.', + }, + { + name: 'outputTokenDetails', + type: 'LanguageModelOutputTokenDetails', + description: + 'Detailed information about the output (completion) tokens.', + properties: [ + { + type: 'LanguageModelOutputTokenDetails', + parameters: [ + { + name: 'textTokens', + type: 'number | undefined', + description: 'The number of text tokens used.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + description: + 'The number of reasoning tokens used.', + }, + ], + }, + ], + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: 'The total number of tokens used.', + }, + { + name: 'raw', + type: 'object | undefined', + isOptional: true, + description: + "Raw usage information from the provider. This is the provider's original usage information and may include additional fields.", + }, + ], + }, + ], + }, + { + name: 'text', + type: 'string', + description: 'The full text that has been generated.', + }, + { + name: 'reasoningText', + type: 'string | undefined', + description: + 'The reasoning text of the model (only available for some models).', + }, + { + name: 'sources', + type: 'Array', + description: + 'Sources that have been used as input to generate the response. For multi-step generation, the sources are accumulated from all steps.', + properties: [ + { + type: 'Source', + parameters: [ + { + name: 'sourceType', + type: "'url'", + description: + 'A URL source. This is return by web search RAG models.', + }, + { + name: 'id', + type: 'string', + description: 'The ID of the source.', + }, + { + name: 'url', + type: 'string', + description: 'The URL of the source.', + }, + { + name: 'title', + type: 'string', + isOptional: true, + description: 'The title of the source.', + }, + { + name: 'providerMetadata', + type: 'SharedV2ProviderMetadata', + isOptional: true, + description: + 'Additional provider metadata for the source.', + }, + ], + }, + ], + }, + { + name: 'files', + type: 'Array', + description: 'All files that were generated in this step.', + properties: [ + { + type: 'GeneratedFile', + parameters: [ + { + name: 'base64', + type: 'string', + description: 'File as a base64 encoded string.', + }, + { + name: 'uint8Array', + type: 'Uint8Array', + description: 'File as a Uint8Array.', + }, + { + name: 'mediaType', + type: 'string', + description: 'The IANA media type of the file.', + }, + ], + }, + ], + }, + { + name: 'toolCalls', + type: 'ToolCall[]', + description: 'The tool calls that have been executed.', + }, + { + name: 'toolResults', + type: 'ToolResult[]', + description: 'The tool results that have been generated.', + }, + { + name: 'warnings', + type: 'Warning[] | undefined', + description: + 'Warnings from the model provider (e.g. unsupported settings).', + }, + { + name: 'response', + type: 'Response', + isOptional: true, + description: 'Response metadata.', + properties: [ + { + type: 'Response', + parameters: [ + { + name: 'id', + type: 'string', + description: + 'The response identifier. The AI SDK uses the ID from the provider response when available, and generates an ID otherwise.', + }, + { + name: 'modelId', + type: 'string', + description: + 'The model that was used to generate the response. The AI SDK uses the response model from the provider response when available, and the model from the function call otherwise.', + }, + { + name: 'timestamp', + type: 'Date', + description: + 'The timestamp of the response. The AI SDK uses the response timestamp from the provider response when available, and creates a timestamp otherwise.', + }, + { + name: 'headers', + isOptional: true, + type: 'Record', + description: 'Optional response headers.', + }, + ], + }, + ], + }, + { + name: 'isContinued', + type: 'boolean', + description: + 'True when there will be a continuation step with a continuation text.', + }, + { + name: 'providerMetadata', + type: 'Record | undefined', + isOptional: true, + description: + 'Optional metadata from the provider. The outer key is the provider name. The inner values are the metadata. Details depend on the provider.', + }, + ], + }, + ], + }, + { + name: 'onFinish', + type: '(result: OnFinishResult) => Promise | void', + isOptional: true, + description: + 'Callback that is called when the LLM response and all request tool executions (for tools that have an `execute` function) are finished.', + properties: [ + { + type: 'OnFinishResult', + parameters: [ + { + name: 'finishReason', + type: '"stop" | "length" | "content-filter" | "tool-calls" | "error" | "other"', + description: + 'The unified finish reason why the generation finished.', + }, + { + name: 'rawFinishReason', + type: 'string | undefined', + description: + 'The raw reason why the generation finished (from the provider).', + }, + { + name: 'usage', + type: 'LanguageModelUsage', + description: 'The token usage of last step.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: + 'The total number of input (prompt) tokens used.', + }, + { + name: 'inputTokenDetails', + type: 'LanguageModelInputTokenDetails', + description: + 'Detailed information about the input (prompt) tokens. See also: cached tokens and non-cached tokens.', + properties: [ + { + type: 'LanguageModelInputTokenDetails', + parameters: [ + { + name: 'noCacheTokens', + type: 'number | undefined', + description: + 'The number of non-cached input (prompt) tokens used.', + }, + { + name: 'cacheReadTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens read.', + }, + { + name: 'cacheWriteTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens written.', + }, + ], + }, + ], + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: + 'The number of total output (completion) tokens used.', + }, + { + name: 'outputTokenDetails', + type: 'LanguageModelOutputTokenDetails', + description: + 'Detailed information about the output (completion) tokens.', + properties: [ + { + type: 'LanguageModelOutputTokenDetails', + parameters: [ + { + name: 'textTokens', + type: 'number | undefined', + description: 'The number of text tokens used.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + description: + 'The number of reasoning tokens used.', + }, + ], + }, + ], + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: 'The total number of tokens used.', + }, + { + name: 'raw', + type: 'object | undefined', + isOptional: true, + description: + "Raw usage information from the provider. This is the provider's original usage information and may include additional fields.", + }, + ], + }, + ], + }, + { + name: 'totalUsage', + type: 'LanguageModelUsage', + description: 'The total token usage from all steps.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: 'The number of input (prompt) tokens used.', + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: + 'The number of output (completion) tokens used.', + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: + 'The total number of tokens as reported by the provider. This number might be different from the sum of inputTokens and outputTokens and e.g. include reasoning tokens or other overhead.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + isOptional: true, + description: 'The number of reasoning tokens used.', + }, + { + name: 'cachedInputTokens', + type: 'number | undefined', + isOptional: true, + description: 'The number of cached input tokens.', + }, + ], + }, + ], + }, + { + name: 'providerMetadata', + type: 'Record | undefined', + description: + 'Optional metadata from the provider. The outer key is the provider name. The inner values are the metadata. Details depend on the provider.', + }, + { + name: 'text', + type: 'string', + description: 'The full text that has been generated.', + }, + { + name: 'reasoning', + type: 'string | undefined', + description: + 'The reasoning text of the model (only available for some models).', + }, + { + name: 'reasoning', + type: 'Array', + description: + 'The reasoning details of the model (only available for some models).', + properties: [ + { + type: 'ReasoningDetail', + parameters: [ + { + name: 'type', + type: "'text'", + description: 'The type of the reasoning detail.', + }, + { + name: 'text', + type: 'string', + description: 'The text content (only for type "text").', + }, + { + name: 'signature', + type: 'string', + isOptional: true, + description: 'Optional signature (only for type "text").', + }, + ], + }, + { + type: 'ReasoningDetail', + parameters: [ + { + name: 'type', + type: "'redacted'", + description: 'The type of the reasoning detail.', + }, + { + name: 'data', + type: 'string', + description: + 'The redacted data content (only for type "redacted").', + }, + ], + }, + ], + }, + { + name: 'sources', + type: 'Array', + description: + 'Sources that have been used as input to generate the response. For multi-step generation, the sources are accumulated from all steps.', + properties: [ + { + type: 'Source', + parameters: [ + { + name: 'sourceType', + type: "'url'", + description: + 'A URL source. This is return by web search RAG models.', + }, + { + name: 'id', + type: 'string', + description: 'The ID of the source.', + }, + { + name: 'url', + type: 'string', + description: 'The URL of the source.', + }, + { + name: 'title', + type: 'string', + isOptional: true, + description: 'The title of the source.', + }, + { + name: 'providerMetadata', + type: 'SharedV2ProviderMetadata', + isOptional: true, + description: + 'Additional provider metadata for the source.', + }, + ], + }, + ], + }, + { + name: 'files', + type: 'Array', + description: 'Files that were generated in the final step.', + properties: [ + { + type: 'GeneratedFile', + parameters: [ + { + name: 'base64', + type: 'string', + description: 'File as a base64 encoded string.', + }, + { + name: 'uint8Array', + type: 'Uint8Array', + description: 'File as a Uint8Array.', + }, + { + name: 'mediaType', + type: 'string', + description: 'The IANA media type of the file.', + }, + ], + }, + ], + }, + { + name: 'toolCalls', + type: 'ToolCall[]', + description: 'The tool calls that have been executed.', + }, + { + name: 'toolResults', + type: 'ToolResult[]', + description: 'The tool results that have been generated.', + }, + { + name: 'warnings', + type: 'Warning[] | undefined', + description: + 'Warnings from the model provider (e.g. unsupported settings).', + }, + { + name: 'response', + type: 'Response', + isOptional: true, + description: 'Response metadata.', + properties: [ + { + type: 'Response', + parameters: [ + { + name: 'id', + type: 'string', + description: + 'The response identifier. The AI SDK uses the ID from the provider response when available, and generates an ID otherwise.', + }, + { + name: 'modelId', + type: 'string', + description: + 'The model that was used to generate the response. The AI SDK uses the response model from the provider response when available, and the model from the function call otherwise.', + }, + { + name: 'timestamp', + type: 'Date', + description: + 'The timestamp of the response. The AI SDK uses the response timestamp from the provider response when available, and creates a timestamp otherwise.', + }, + { + name: 'headers', + isOptional: true, + type: 'Record', + description: 'Optional response headers.', + }, + { + name: 'messages', + type: 'Array', + description: + 'The response messages that were generated during the call. It consists of an assistant message, potentially containing tool calls. When there are tool results, there is an additional tool message with the tool results that are available. If there are tools that do not have execute functions, they are not included in the tool results and need to be added separately.', + }, + ], + }, + ], + }, + { + name: 'steps', + type: 'Array', + description: + 'Response information for every step. You can use this to get information about intermediate steps, such as the tool calls or the response headers.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: 'The experimental context.', + }, + ], + }, + ], + }, + { + name: 'onAbort', + type: '(event: OnAbortResult) => Promise | void', + isOptional: true, + description: + 'Callback that is called when a stream is aborted via AbortSignal. You can use it to perform cleanup operations.', + properties: [ + { + type: 'OnAbortResult', + parameters: [ + { + name: 'steps', + type: 'Array', + description: 'Details for all previously finished steps.', + }, + ], + }, + ], + }, + { + name: 'experimental_onStart', + type: '(event: OnStartEvent) => PromiseLike | void', + isOptional: true, + description: + 'Callback that is called when the streamText operation begins, before any LLM calls are made. Errors thrown in this callback are silently caught and do not break the generation flow. Experimental (can break in patch releases).', + properties: [ + { + type: 'OnStartEvent', + parameters: [ + { + name: 'model', + type: '{ provider: string; modelId: string }', + description: 'The model being used for the generation.', + }, + { + name: 'system', + type: 'string | SystemModelMessage | Array | undefined', + description: 'The system message(s) provided to the model.', + }, + { + name: 'prompt', + type: 'string | Array | undefined', + description: + 'The prompt string or array of messages if using the prompt option.', + }, + { + name: 'messages', + type: 'Array | undefined', + description: 'The messages array if using the messages option.', + }, + { + name: 'tools', + type: 'TOOLS | undefined', + description: 'The tools available for this generation.', + }, + { + name: 'toolChoice', + type: 'ToolChoice | undefined', + description: 'The tool choice strategy for this generation.', + }, + { + name: 'activeTools', + type: 'Array | undefined', + description: + 'Limits which tools are available for the model to call.', + }, + { + name: 'maxOutputTokens', + type: 'number | undefined', + description: 'Maximum number of tokens to generate.', + }, + { + name: 'temperature', + type: 'number | undefined', + description: 'Sampling temperature for generation.', + }, + { + name: 'topP', + type: 'number | undefined', + description: 'Top-p (nucleus) sampling parameter.', + }, + { + name: 'topK', + type: 'number | undefined', + description: 'Top-k sampling parameter.', + }, + { + name: 'presencePenalty', + type: 'number | undefined', + description: 'Presence penalty for generation.', + }, + { + name: 'frequencyPenalty', + type: 'number | undefined', + description: 'Frequency penalty for generation.', + }, + { + name: 'stopSequences', + type: 'string[] | undefined', + description: 'Sequences that will stop generation.', + }, + { + name: 'seed', + type: 'number | undefined', + description: 'Random seed for reproducible generation.', + }, + { + name: 'maxRetries', + type: 'number', + description: 'Maximum number of retries for failed requests.', + }, + { + name: 'timeout', + type: 'number | { totalMs?: number; stepMs?: number; chunkMs?: number } | undefined', + description: + 'Timeout configuration for the generation. Can be a number (milliseconds) or an object with totalMs, stepMs, chunkMs.', + }, + { + name: 'headers', + type: 'Record | undefined', + description: 'Additional HTTP headers sent with the request.', + }, + { + name: 'providerOptions', + type: 'ProviderOptions | undefined', + description: 'Additional provider-specific options.', + }, + { + name: 'stopWhen', + type: 'StopCondition | Array> | undefined', + description: + 'Condition(s) for stopping the generation. When the condition is an array, any of the conditions can be met to stop.', + }, + { + name: 'output', + type: 'OUTPUT | undefined', + description: + 'The output specification for structured outputs, if configured.', + }, + { + name: 'abortSignal', + type: 'AbortSignal | undefined', + description: 'Abort signal for cancelling the operation.', + }, + { + name: 'include', + type: '{ requestBody?: boolean } | undefined', + description: + 'Settings for controlling what data is included in step results.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata passed to the generation.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object that flows through the entire generation lifecycle.', + }, + ], + }, + ], + }, + { + name: 'experimental_onStepStart', + type: '(event: OnStepStartEvent) => PromiseLike | void', + isOptional: true, + description: + 'Callback that is called when a step (LLM call) begins, before the provider is called. Errors thrown in this callback are silently caught and do not break the generation flow. Experimental (can break in patch releases).', + properties: [ + { + type: 'OnStepStartEvent', + parameters: [ + { + name: 'stepNumber', + type: 'number', + description: 'Zero-based index of the current step.', + }, + { + name: 'model', + type: '{ provider: string; modelId: string }', + description: 'The model being used for this step.', + }, + { + name: 'system', + type: 'string | SystemModelMessage | Array | undefined', + description: 'The system message for this step.', + }, + { + name: 'messages', + type: 'Array', + description: + 'The messages that will be sent to the model for this step. Uses the user-facing ModelMessage format. May be overridden by prepareStep.', + }, + { + name: 'tools', + type: 'TOOLS | undefined', + description: 'The tools available for this generation.', + }, + { + name: 'toolChoice', + type: 'LanguageModelV3ToolChoice | undefined', + description: 'The tool choice configuration for this step.', + }, + { + name: 'activeTools', + type: 'Array | undefined', + description: 'Limits which tools are available for this step.', + }, + { + name: 'steps', + type: 'ReadonlyArray>', + description: + 'Array of results from previous steps (empty for the first step).', + }, + { + name: 'providerOptions', + type: 'ProviderOptions | undefined', + description: + 'Additional provider-specific options for this step.', + }, + { + name: 'timeout', + type: 'number | { totalMs?: number; stepMs?: number; chunkMs?: number } | undefined', + description: 'Timeout configuration for the generation.', + }, + { + name: 'headers', + type: 'Record | undefined', + description: 'Additional HTTP headers sent with the request.', + }, + { + name: 'stopWhen', + type: 'StopCondition | Array> | undefined', + description: 'Condition(s) for stopping the generation.', + }, + { + name: 'output', + type: 'OUTPUT | undefined', + description: + 'The output specification for structured outputs, if configured.', + }, + { + name: 'abortSignal', + type: 'AbortSignal | undefined', + description: 'Abort signal for cancelling the operation.', + }, + { + name: 'include', + type: '{ requestBody?: boolean } | undefined', + description: + 'Settings for controlling what data is included in step results.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata from telemetry settings.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object. May be updated from prepareStep between steps.', + }, + ], + }, + ], + }, + { + name: 'experimental_onToolCallStart', + type: '(event: OnToolCallStartEvent) => PromiseLike | void', + isOptional: true, + description: + "Callback that is called right before a tool's execute function runs. Errors thrown in this callback are silently caught and do not break the generation flow. Experimental (can break in patch releases).", + properties: [ + { + type: 'OnToolCallStartEvent', + parameters: [ + { + name: 'stepNumber', + type: 'number | undefined', + description: + 'The zero-based index of the current step where this tool call occurs. May be undefined in streaming contexts.', + }, + { + name: 'model', + type: '{ provider: string; modelId: string } | undefined', + description: + 'Information about the model being used. May be undefined in streaming contexts.', + }, + { + name: 'toolCall', + type: 'TypedToolCall', + description: + 'The full tool call object containing toolName, toolCallId, input, and metadata.', + }, + { + name: 'messages', + type: 'Array', + description: + 'The conversation messages available at tool execution time.', + }, + { + name: 'abortSignal', + type: 'AbortSignal | undefined', + description: 'Signal for cancelling the operation.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata from telemetry settings.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object flowing through the generation.', + }, + ], + }, + ], + }, + { + name: 'experimental_onToolCallFinish', + type: '(event: OnToolCallFinishEvent) => PromiseLike | void', + isOptional: true, + description: + "Callback that is called right after a tool's execute function completes (or errors). Uses a discriminated union on the `success` field: when `success: true`, `output` contains the tool result; when `success: false`, `error` contains the error. Errors thrown in this callback are silently caught and do not break the generation flow. Experimental (can break in patch releases).", + properties: [ + { + type: 'OnToolCallFinishEvent', + parameters: [ + { + name: 'stepNumber', + type: 'number | undefined', + description: + 'The zero-based index of the current step where this tool call occurred. May be undefined in streaming contexts.', + }, + { + name: 'model', + type: '{ provider: string; modelId: string } | undefined', + description: + 'Information about the model being used. May be undefined in streaming contexts.', + }, + { + name: 'toolCall', + type: 'TypedToolCall', + description: + 'The full tool call object containing toolName, toolCallId, input, and metadata.', + }, + { + name: 'messages', + type: 'Array', + description: + 'The conversation messages available at tool execution time.', + }, + { + name: 'abortSignal', + type: 'AbortSignal | undefined', + description: 'Signal for cancelling the operation.', + }, + { + name: 'durationMs', + type: 'number', + description: + 'The wall-clock duration of the tool execution in milliseconds.', + }, + { + name: 'functionId', + type: 'string | undefined', + description: + 'Identifier from telemetry settings for grouping related operations.', + }, + { + name: 'metadata', + type: 'Record | undefined', + description: 'Additional metadata from telemetry settings.', + }, + { + name: 'experimental_context', + type: 'unknown', + description: + 'User-defined context object flowing through the generation.', + }, + { + name: 'success', + type: 'boolean', + description: + 'Discriminator indicating whether the tool call succeeded. When true, output is available. When false, error is available.', + }, + { + name: 'output', + type: 'unknown', + description: + "The tool's return value (only present when `success: true`).", + }, + { + name: 'error', + type: 'unknown', + description: + 'The error that occurred during tool execution (only present when `success: false`).', + }, + ], + }, + ], + }, + ]} +/> + +### Returns + +>>', + description: 'The content that was generated in the last step. Automatically consumes the stream.', + }, + { + name: 'finishReason', + type: "PromiseLike<'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other'>", + description: + 'The reason why the generation finished. Automatically consumes the stream.', + }, + { + name: 'rawFinishReason', + type: 'PromiseLike', + description: + 'The raw reason why the generation finished (from the provider).', + }, + { + name: 'usage', + type: 'Promise', + description: + 'The token usage of the last step. Automatically consumes the stream.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: 'The number of input (prompt) tokens used.', + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: 'The number of output (completion) tokens used.', + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: + 'The total number of tokens as reported by the provider. This number might be different from the sum of inputTokens and outputTokens and e.g. include reasoning tokens or other overhead.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + isOptional: true, + description: 'The number of reasoning tokens used.', + }, + { + name: 'cachedInputTokens', + type: 'number | undefined', + isOptional: true, + description: 'The number of cached input tokens.', + }, + ], + }, + ], + }, + { + name: 'totalUsage', + type: 'Promise', + description: 'The total token usage of the generated response. When there are multiple steps, the usage is the sum of all step usages. Automatically consumes the stream.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: 'The total number of input (prompt) tokens used.', + }, + { + name: 'inputTokenDetails', + type: 'LanguageModelInputTokenDetails', + description: + 'Detailed information about the input (prompt) tokens. See also: cached tokens and non-cached tokens.', + properties: [ + { + type: 'LanguageModelInputTokenDetails', + parameters: [ + { + name: 'noCacheTokens', + type: 'number | undefined', + description: + 'The number of non-cached input (prompt) tokens used.', + }, + { + name: 'cacheReadTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens read.', + }, + { + name: 'cacheWriteTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens written.', + }, + ], + }, + ], + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: 'The number of total output (completion) tokens used.', + }, + { + name: 'outputTokenDetails', + type: 'LanguageModelOutputTokenDetails', + description: + 'Detailed information about the output (completion) tokens.', + properties: [ + { + type: 'LanguageModelOutputTokenDetails', + parameters: [ + { + name: 'textTokens', + type: 'number | undefined', + description: 'The number of text tokens used.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + description: 'The number of reasoning tokens used.', + }, + ], + }, + ], + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: 'The total number of tokens used.', + }, + { + name: 'raw', + type: 'object | undefined', + isOptional: true, + description: 'Raw usage information from the provider. This is the provider\'s original usage information and may include additional fields.', + }, + ], + }, + ], + }, + { + name: 'providerMetadata', + type: 'Promise', + description: + 'Additional provider-specific metadata from the last step. Metadata is passed through from the provider to the AI SDK and enables provider-specific results that can be fully encapsulated in the provider.', + }, + { + name: 'text', + type: 'Promise', + description: + 'The full text that has been generated. Automatically consumes the stream.', + }, + { + name: 'reasoning', + type: 'Promise>', + description: + 'The full reasoning that the model has generated in the last step. Automatically consumes the stream.', + properties: [ + { + type: 'ReasoningOutput', + parameters: [ + { + name: 'type', + type: "'reasoning'", + description: 'The type of the message part.', + }, + { + name: 'text', + type: 'string', + description: 'The reasoning text.', + }, + { + name: 'providerMetadata', + type: 'SharedV2ProviderMetadata', + isOptional: true, + description: 'Additional provider metadata for the source.', + }, + ], + }, + ], + }, + { + name: 'reasoningText', + type: 'Promise', + description: + 'The reasoning text that the model has generated in the last step. Can be undefined if the model has only generated text. Automatically consumes the stream.', + }, + { + name: 'sources', + type: 'Promise>', + description: + 'Sources that have been used as input to generate the response. For multi-step generation, the sources are accumulated from all steps. Automatically consumes the stream.', + properties: [ + { + type: 'Source', + parameters: [ + { + name: 'sourceType', + type: "'url'", + description: + 'A URL source. This is return by web search RAG models.', + }, + { + name: 'id', + type: 'string', + description: 'The ID of the source.', + }, + { + name: 'url', + type: 'string', + description: 'The URL of the source.', + }, + { + name: 'title', + type: 'string', + isOptional: true, + description: 'The title of the source.', + }, + { + name: 'providerMetadata', + type: 'SharedV2ProviderMetadata', + isOptional: true, + description: 'Additional provider metadata for the source.', + }, + ], + }, + ], + }, + { + name: 'files', + type: 'Promise>', + description: + 'Files that were generated in the final step. Automatically consumes the stream.', + properties: [ + { + type: 'GeneratedFile', + parameters: [ + { + name: 'base64', + type: 'string', + description: 'File as a base64 encoded string.', + }, + { + name: 'uint8Array', + type: 'Uint8Array', + description: 'File as a Uint8Array.', + }, + { + name: 'mediaType', + type: 'string', + description: 'The IANA media type of the file.', + }, + ], + }, + ], + }, + { + name: 'toolCalls', + type: 'Promise[]>', + description: + 'The tool calls that have been executed. Automatically consumes the stream.', + }, + { + name: 'toolResults', + type: 'Promise[]>', + description: + 'The tool results that have been generated. Resolved when the all tool executions are finished.', + }, + { + name: 'staticToolCalls', + type: 'PromiseLike>>', + description: 'The static tool calls that have been executed in the last step.', + }, + { + name: 'dynamicToolCalls', + type: 'PromiseLike>', + description: 'The dynamic tool calls that have been executed in the last step.', + }, + { + name: 'staticToolResults', + type: 'PromiseLike>>', + description: 'The static tool results that have been generated in the last step.', + }, + { + name: 'dynamicToolResults', + type: 'PromiseLike>', + description: 'The dynamic tool results that have been generated in the last step.', + }, + { + name: 'request', + type: 'Promise', + description: 'Additional request information from the last step.', + properties: [ + { + type: 'LanguageModelRequestMetadata', + parameters: [ + { + name: 'body', + type: 'string', + description: + 'Raw request HTTP body that was sent to the provider API as a string (JSON should be stringified).', + }, + ], + }, + ], + }, + { + name: 'response', + type: 'Promise; }>', + description: 'Additional response information from the last step.', + properties: [ + { + type: 'LanguageModelResponseMetadata', + parameters: [ + { + name: 'id', + type: 'string', + description: + 'The response identifier. The AI SDK uses the ID from the provider response when available, and generates an ID otherwise.', + }, + { + name: 'modelId', + type: 'string', + description: + 'The model that was used to generate the response. The AI SDK uses the response model from the provider response when available, and the model from the function call otherwise.', + }, + { + name: 'timestamp', + type: 'Date', + description: + 'The timestamp of the response. The AI SDK uses the response timestamp from the provider response when available, and creates a timestamp otherwise.', + }, + { + name: 'headers', + isOptional: true, + type: 'Record', + description: 'Optional response headers.', + }, + { + name: 'messages', + type: 'Array', + description: + 'The response messages that were generated during the call. It consists of an assistant message, potentially containing tool calls. When there are tool results, there is an additional tool message with the tool results that are available. If there are tools that do not have execute functions, they are not included in the tool results and need to be added separately.', + }, + ], + }, + ], + }, + { + name: 'warnings', + type: 'Promise', + description: + 'Warnings from the model provider (e.g. unsupported settings) for the first step.', + }, + { + name: 'steps', + type: 'Promise>', + description: + 'Response information for every step. You can use this to get information about intermediate steps, such as the tool calls or the response headers.', + properties: [ + { + type: 'StepResult', + parameters: [ + { + name: 'stepType', + type: '"initial" | "continue" | "tool-result"', + description: + 'The type of step. The first step is always an "initial" step, and subsequent steps are either "continue" steps or "tool-result" steps.', + }, + { + name: 'text', + type: 'string', + description: 'The generated text by the model.', + }, + { + name: 'reasoning', + type: 'string | undefined', + description: + 'The reasoning text of the model (only available for some models).', + }, + { + name: 'sources', + type: 'Array', + description: 'Sources that have been used as input.', + properties: [ + { + type: 'Source', + parameters: [ + { + name: 'sourceType', + type: "'url'", + description: + 'A URL source. This is return by web search RAG models.', + }, + { + name: 'id', + type: 'string', + description: 'The ID of the source.', + }, + { + name: 'url', + type: 'string', + description: 'The URL of the source.', + }, + { + name: 'title', + type: 'string', + isOptional: true, + description: 'The title of the source.', + }, + { + name: 'providerMetadata', + type: 'SharedV2ProviderMetadata', + isOptional: true, + description: + 'Additional provider metadata for the source.', + }, + ], + }, + ], + }, + { + name: 'files', + type: 'Array', + description: 'Files that were generated in this step.', + properties: [ + { + type: 'GeneratedFile', + parameters: [ + { + name: 'base64', + type: 'string', + description: 'File as a base64 encoded string.', + }, + { + name: 'uint8Array', + type: 'Uint8Array', + description: 'File as a Uint8Array.', + }, + { + name: 'mediaType', + type: 'string', + description: 'The IANA media type of the file.', + }, + ], + }, + ], + }, + { + name: 'toolCalls', + type: 'array', + description: 'A list of tool calls made by the model.', + }, + { + name: 'toolResults', + type: 'array', + description: + 'A list of tool results returned as responses to earlier tool calls.', + }, + { + name: 'finishReason', + type: "'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other'", + description: 'The reason the model finished generating the text.', + }, + { + name: 'rawFinishReason', + type: 'string | undefined', + description: + 'The raw reason why the generation finished (from the provider).', + }, + { + name: 'usage', + type: 'LanguageModelUsage', + description: 'The token usage of the generated text.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: 'The total number of input (prompt) tokens used.', + }, + { + name: 'inputTokenDetails', + type: 'LanguageModelInputTokenDetails', + description: + 'Detailed information about the input (prompt) tokens. See also: cached tokens and non-cached tokens.', + properties: [ + { + type: 'LanguageModelInputTokenDetails', + parameters: [ + { + name: 'noCacheTokens', + type: 'number | undefined', + description: + 'The number of non-cached input (prompt) tokens used.', + }, + { + name: 'cacheReadTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens read.', + }, + { + name: 'cacheWriteTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens written.', + }, + ], + }, + ], + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: 'The number of total output (completion) tokens used.', + }, + { + name: 'outputTokenDetails', + type: 'LanguageModelOutputTokenDetails', + description: + 'Detailed information about the output (completion) tokens.', + properties: [ + { + type: 'LanguageModelOutputTokenDetails', + parameters: [ + { + name: 'textTokens', + type: 'number | undefined', + description: 'The number of text tokens used.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + description: 'The number of reasoning tokens used.', + }, + ], + }, + ], + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: 'The total number of tokens used.', + }, + { + name: 'raw', + type: 'object | undefined', + isOptional: true, + description: 'Raw usage information from the provider. This is the provider\'s original usage information and may include additional fields.', + }, + ], + }, + ], + }, + { + name: 'request', + type: 'RequestMetadata', + isOptional: true, + description: 'Request metadata.', + properties: [ + { + type: 'RequestMetadata', + parameters: [ + { + name: 'body', + type: 'string', + description: + 'Raw request HTTP body that was sent to the provider API as a string (JSON should be stringified).', + }, + ], + }, + ], + }, + { + name: 'response', + type: 'ResponseMetadata', + isOptional: true, + description: 'Response metadata.', + properties: [ + { + type: 'ResponseMetadata', + parameters: [ + { + name: 'id', + type: 'string', + description: + 'The response identifier. The AI SDK uses the ID from the provider response when available, and generates an ID otherwise.', + }, + { + name: 'modelId', + type: 'string', + description: + 'The model that was used to generate the response. The AI SDK uses the response model from the provider response when available, and the model from the function call otherwise.', + }, + { + name: 'timestamp', + type: 'Date', + description: + 'The timestamp of the response. The AI SDK uses the response timestamp from the provider response when available, and creates a timestamp otherwise.', + }, + { + name: 'headers', + isOptional: true, + type: 'Record', + description: 'Optional response headers.', + }, + { + name: 'messages', + type: 'Array', + description: + 'The response messages that were generated during the call. It consists of an assistant message, potentially containing tool calls. When there are tool results, there is an additional tool message with the tool results that are available. If there are tools that do not have execute functions, they are not included in the tool results and need to be added separately.', + }, + ], + }, + ], + }, + { + name: 'warnings', + type: 'Warning[] | undefined', + description: + 'Warnings from the model provider (e.g. unsupported settings).', + }, + { + name: 'isContinued', + type: 'boolean', + description: + 'True when there will be a continuation step with a continuation text.', + }, + { + name: 'providerMetadata', + type: 'Record | undefined', + isOptional: true, + description: + 'Optional metadata from the provider. The outer key is the provider name. The inner values are the metadata. Details depend on the provider.', + }, + ], + }, + ], + }, + { + name: 'textStream', + type: 'AsyncIterableStream', + description: + 'A text stream that returns only the generated text deltas. You can use it as either an AsyncIterable or a ReadableStream. When an error occurs, the stream will throw the error.', + }, + { + name: 'fullStream', + type: 'AsyncIterable> & ReadableStream>', + description: + 'A stream with all events, including text deltas, tool calls, tool results, and errors. You can use it as either an AsyncIterable or a ReadableStream. Only errors that stop the stream, such as network errors, are thrown.', + properties: [ + { + type: 'TextStreamPart', + description: 'Text content part from ContentPart', + parameters: [ + { + name: 'type', + type: "'text'", + description: 'The type to identify the object as text.', + }, + { + name: 'text', + type: 'string', + description: 'The text content.', + }, + ], + }, + { + type: 'TextStreamPart', + description: 'Reasoning content part from ContentPart', + parameters: [ + { + name: 'type', + type: "'reasoning'", + description: 'The type to identify the object as reasoning.', + }, + { + name: 'text', + type: 'string', + description: 'The reasoning text.', + }, + { + name: 'providerMetadata', + type: 'ProviderMetadata', + isOptional: true, + description: 'Optional provider metadata for the reasoning.', + }, + ], + }, + + { + type: 'TextStreamPart', + description: 'Source content part from ContentPart', + parameters: [ + { + name: 'type', + type: "'source'", + description: 'The type to identify the object as source.', + }, + { + name: 'sourceType', + type: "'url'", + description: 'A URL source. This is returned by web search RAG models.', + }, + { + name: 'id', + type: 'string', + description: 'The ID of the source.', + }, + { + name: 'url', + type: 'string', + description: 'The URL of the source.', + }, + { + name: 'title', + type: 'string', + isOptional: true, + description: 'The title of the source.', + }, + { + name: 'providerMetadata', + type: 'ProviderMetadata', + isOptional: true, + description: 'Additional provider metadata for the source.', + }, + ], + }, + { + type: 'TextStreamPart', + description: 'File content part from ContentPart', + parameters: [ + { + name: 'type', + type: "'file'", + description: 'The type to identify the object as file.', + }, + { + name: 'file', + type: 'GeneratedFile', + description: 'The file.', + properties: [ + { + type: 'GeneratedFile', + parameters: [ + { + name: 'base64', + type: 'string', + description: 'File as a base64 encoded string.', + }, + { + name: 'uint8Array', + type: 'Uint8Array', + description: 'File as a Uint8Array.', + }, + { + name: 'mediaType', + type: 'string', + description: 'The IANA media type of the file.', + }, + ], + }, + ], + }, + ], + }, + { + type: 'TextStreamPart', + description: 'Tool call from ContentPart', + parameters: [ + { + name: 'type', + type: "'tool-call'", + description: 'The type to identify the object as tool call.', + }, + { + name: 'toolCallId', + type: 'string', + description: 'The id of the tool call.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool, which typically would be the name of the function.', + }, + { + name: 'input', + type: 'object based on tool parameters', + description: + 'Parameters generated by the model to be used by the tool. The type is inferred from the tool definition.', + }, + ], + }, + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'tool-call-streaming-start'", + description: + 'Indicates the start of a tool call streaming. Only available when streaming tool calls.', + }, + { + name: 'toolCallId', + type: 'string', + description: 'The id of the tool call.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool, which typically would be the name of the function.', + }, + ], + }, + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'tool-call-delta'", + description: + 'The type to identify the object as tool call delta. Only available when streaming tool calls.', + }, + { + name: 'toolCallId', + type: 'string', + description: 'The id of the tool call.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool, which typically would be the name of the function.', + }, + { + name: 'argsTextDelta', + type: 'string', + description: 'The text delta of the tool call arguments.', + }, + ], + }, + { + type: 'TextStreamPart', + description: 'Tool result from ContentPart', + parameters: [ + { + name: 'type', + type: "'tool-result'", + description: 'The type to identify the object as tool result.', + }, + { + name: 'toolCallId', + type: 'string', + description: 'The id of the tool call.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool, which typically would be the name of the function.', + }, + { + name: 'input', + type: 'object based on tool parameters', + description: + 'Parameters that were passed to the tool. The type is inferred from the tool definition.', + }, + { + name: 'output', + type: 'tool execution return type', + description: + 'The result returned by the tool after execution has completed. The type is inferred from the tool execute function return type.', + }, + ], + }, + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'start-step'", + description: 'Indicates the start of a new step in the stream.', + }, + { + name: 'request', + type: 'LanguageModelRequestMetadata', + description: + 'Information about the request that was sent to the language model provider.', + properties: [ + { + type: 'LanguageModelRequestMetadata', + parameters: [ + { + name: 'body', + type: 'string', + description: + 'Raw request HTTP body that was sent to the provider API as a string.', + }, + ], + }, + ], + }, + { + name: 'warnings', + type: 'Warning[]', + description: + 'Warnings from the model provider (e.g. unsupported settings).', + }, + ], + }, + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'finish-step'", + description: + 'Indicates the end of the current step in the stream.', + }, + { + name: 'response', + type: 'LanguageModelResponseMetadata', + description: + 'Response metadata from the language model provider.', + properties: [ + { + type: 'LanguageModelResponseMetadata', + parameters: [ + { + name: 'id', + type: 'string', + description: + 'The response identifier. The AI SDK uses the ID from the provider response when available, and generates an ID otherwise.', + }, + { + name: 'modelId', + type: 'string', + description: + 'The model that was used to generate the response. The AI SDK uses the response model from the provider response when available, and the model from the function call otherwise.', + }, + { + name: 'timestamp', + type: 'Date', + description: + 'The timestamp of the response. The AI SDK uses the response timestamp from the provider response when available, and creates a timestamp otherwise.', + }, + { + name: 'headers', + type: 'Record', + description: 'The response headers.', + }, + ], + }, + ], + }, + { + name: 'usage', + type: 'LanguageModelUsage', + description: 'The token usage of the generated text.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: 'The total number of input (prompt) tokens used.', + }, + { + name: 'inputTokenDetails', + type: 'LanguageModelInputTokenDetails', + description: + 'Detailed information about the input (prompt) tokens. See also: cached tokens and non-cached tokens.', + properties: [ + { + type: 'LanguageModelInputTokenDetails', + parameters: [ + { + name: 'noCacheTokens', + type: 'number | undefined', + description: + 'The number of non-cached input (prompt) tokens used.', + }, + { + name: 'cacheReadTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens read.', + }, + { + name: 'cacheWriteTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens written.', + }, + ], + }, + ], + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: 'The number of total output (completion) tokens used.', + }, + { + name: 'outputTokenDetails', + type: 'LanguageModelOutputTokenDetails', + description: + 'Detailed information about the output (completion) tokens.', + properties: [ + { + type: 'LanguageModelOutputTokenDetails', + parameters: [ + { + name: 'textTokens', + type: 'number | undefined', + description: 'The number of text tokens used.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + description: 'The number of reasoning tokens used.', + }, + ], + }, + ], + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: 'The total number of tokens used.', + }, + { + name: 'raw', + type: 'object | undefined', + isOptional: true, + description: 'Raw usage information from the provider. This is the provider\'s original usage information and may include additional fields.', + }, + ], + }, + ], + }, + { + name: 'finishReason', + type: "'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other'", + description: 'The reason the model finished generating the text.', + }, + { + name: 'rawFinishReason', + type: 'string | undefined', + description: + 'The raw reason why the generation finished (from the provider).', + }, + { + name: 'providerMetadata', + type: 'ProviderMetadata | undefined', + isOptional: true, + description: + 'Optional metadata from the provider. The outer key is the provider name. The inner values are the metadata. Details depend on the provider.', + }, + ], + }, + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'start'", + description: 'Indicates the start of the stream.', + }, + ], + }, + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'finish'", + description: 'The type to identify the object as finish.', + }, + { + name: 'finishReason', + type: "'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other'", + description: 'The reason the model finished generating the text.', + }, + { + name: 'rawFinishReason', + type: 'string | undefined', + description: + 'The raw reason why the generation finished (from the provider).', + }, + { + name: 'totalUsage', + type: 'LanguageModelUsage', + description: 'The total token usage of the generated text.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: 'The total number of input (prompt) tokens used.', + }, + { + name: 'inputTokenDetails', + type: 'LanguageModelInputTokenDetails', + description: + 'Detailed information about the input (prompt) tokens. See also: cached tokens and non-cached tokens.', + properties: [ + { + type: 'LanguageModelInputTokenDetails', + parameters: [ + { + name: 'noCacheTokens', + type: 'number | undefined', + description: + 'The number of non-cached input (prompt) tokens used.', + }, + { + name: 'cacheReadTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens read.', + }, + { + name: 'cacheWriteTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens written.', + }, + ], + }, + ], + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: 'The number of total output (completion) tokens used.', + }, + { + name: 'outputTokenDetails', + type: 'LanguageModelOutputTokenDetails', + description: + 'Detailed information about the output (completion) tokens.', + properties: [ + { + type: 'LanguageModelOutputTokenDetails', + parameters: [ + { + name: 'textTokens', + type: 'number | undefined', + description: 'The number of text tokens used.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + description: 'The number of reasoning tokens used.', + }, + ], + }, + ], + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: 'The total number of tokens used.', + }, + { + name: 'raw', + type: 'object | undefined', + isOptional: true, + description: 'Raw usage information from the provider. This is the provider\'s original usage information and may include additional fields.', + }, + ], + }, + ], + }, + ], + }, + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'reasoning-part-finish'", + description: 'Indicates the end of a reasoning part.', + }, + ], + }, + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'error'", + description: 'The type to identify the object as error.', + }, + { + name: 'error', + type: 'unknown', + description: + 'Describes the error that may have occurred during execution.', + }, + ], + }, + { + type: 'TextStreamPart', + parameters: [ + { + name: 'type', + type: "'abort'", + description: 'The type to identify the object as abort.', + }, + { + name: 'reason', + type: 'unknown', + isOptional: true, + description: + 'Optional abort reason (from AbortSignal.reason) when the stream is aborted.', + }, + ], + }, + ], + }, + { + name: 'partialOutputStream', + type: 'AsyncIterableStream', + description: + 'A stream of partial parsed outputs. It uses the `output` specification. AsyncIterableStream is defined as AsyncIterable & ReadableStream.', + }, + { + name: 'elementStream', + type: 'AsyncIterableStream', + description: + 'A stream of individual array elements as they complete. Only available when using `output: Output.array()`. Each element is complete and validated against the element schema. AsyncIterableStream is defined as AsyncIterable & ReadableStream.', + }, + { + name: 'output', + type: 'Promise', + description: + 'The complete parsed output. It uses the `output` specification.', + }, + { + name: 'consumeStream', + type: '(options?: ConsumeStreamOptions) => Promise', + description: + 'Consumes the stream without processing the parts. This is useful to force the stream to finish. If an error occurs, it is passed to the optional `onError` callback.', + properties: [ + { + type: 'ConsumeStreamOptions', + parameters: [ + { + name: 'onError', + type: '(error: unknown) => void', + isOptional: true, + description: 'The error callback.', + }, + ], + }, + ], + }, + { + name: 'toUIMessageStream', + type: '(options?: UIMessageStreamOptions) => AsyncIterableStream', + description: + 'Converts the result to a UI message stream. Returns an AsyncIterableStream that can be used as both an AsyncIterable and a ReadableStream.', + properties: [ + { + type: 'UIMessageStreamOptions', + parameters: [ + { + name: 'originalMessages', + type: 'UIMessage[]', + isOptional: true, + description: 'The original messages.', + }, + { + name: 'onFinish', + type: '(options: { messages: UIMessage[]; isContinuation: boolean; responseMessage: UIMessage; isAborted: boolean; }) => void', + isOptional: true, + description: 'Callback function called when the stream finishes. Provides the updated list of UI messages, whether the response is a continuation, the response message, and whether the stream was aborted.', + }, + { + name: 'messageMetadata', + type: '(options: { part: TextStreamPart & { type: "start" | "finish" | "start-step" | "finish-step"; }; }) => unknown', + isOptional: true, + description: 'Extracts message metadata that will be sent to the client. Called on start and finish events.', + }, + { + name: 'sendReasoning', + type: 'boolean', + isOptional: true, + description: + 'Send reasoning parts to the client. Defaults to false.', + }, + { + name: 'sendSources', + type: 'boolean', + isOptional: true, + description: + 'Send source parts to the client. Defaults to false.', + }, + { + name: 'sendFinish', + type: 'boolean', + isOptional: true, + description: + 'Send the finish event to the client. Defaults to true.', + }, + { + name: 'sendStart', + type: 'boolean', + isOptional: true, + description: + 'Send the message start event to the client. Set to false if you are using additional streamText calls and the message start event has already been sent. Defaults to true.', + }, + { + name: 'onError', + type: '(error: unknown) => string', + isOptional: true, + description: + 'Process an error, e.g. to log it. Returns error message to include in the data stream. Defaults to () => "An error occurred."', + }, + { + name: 'consumeSseStream', + type: '(stream: ReadableStream) => Promise', + isOptional: true, + description: + 'Function to consume the SSE stream. Required for proper abort handling in UI message streams. Use the `consumeStream` function from the AI SDK.', + }, + ], + }, + ], + }, + { + name: 'pipeUIMessageStreamToResponse', + type: '(response: ServerResponse, options?: ResponseInit & UIMessageStreamOptions) => void', + description: + 'Writes UI message stream output to a Node.js response-like object.', + properties: [ + { + type: 'ResponseInit & UIMessageStreamOptions', + parameters: [ + { + name: 'status', + type: 'number', + isOptional: true, + description: 'The response status code.', + }, + { + name: 'statusText', + type: 'string', + isOptional: true, + description: 'The response status text.', + }, + { + name: 'headers', + type: 'HeadersInit', + isOptional: true, + description: 'The response headers.', + }, + ], + }, + ], + }, + { + name: 'pipeTextStreamToResponse', + type: '(response: ServerResponse, init?: ResponseInit) => void', + description: + 'Writes text delta output to a Node.js response-like object. It sets a `Content-Type` header to `text/plain; charset=utf-8` and writes each text delta as a separate chunk.', + properties: [ + { + type: 'ResponseInit', + parameters: [ + { + name: 'status', + type: 'number', + isOptional: true, + description: 'The response status code.', + }, + { + name: 'statusText', + type: 'string', + isOptional: true, + description: 'The response status text.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: 'The response headers.', + }, + ], + }, + ], + }, + { + name: 'toUIMessageStreamResponse', + type: '(options?: ResponseInit & UIMessageStreamOptions) => Response', + description: + 'Converts the result to a streamed response object with a UI message stream.', + properties: [ + { + type: 'ResponseInit & UIMessageStreamOptions', + parameters: [ + { + name: 'status', + type: 'number', + isOptional: true, + description: 'The response status code.', + }, + { + name: 'statusText', + type: 'string', + isOptional: true, + description: 'The response status text.', + }, + { + name: 'headers', + type: 'HeadersInit', + isOptional: true, + description: 'The response headers.', + }, + ], + }, + ], + }, + { + name: 'toTextStreamResponse', + type: '(init?: ResponseInit) => Response', + description: + 'Creates a simple text stream response. Each text delta is encoded as UTF-8 and sent as a separate chunk. Non-text-delta events are ignored.', + properties: [ + { + type: 'ResponseInit', + parameters: [ + { + name: 'status', + type: 'number', + isOptional: true, + description: 'The response status code.', + }, + { + name: 'statusText', + type: 'string', + isOptional: true, + description: 'The response status text.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: 'The response headers.', + }, + ], + }, + ], + }, + +]} +/> + +## Examples + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/05-embed.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/05-embed.mdx new file mode 100644 index 000000000..dacd22021 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/05-embed.mdx @@ -0,0 +1,197 @@ +--- +title: embed +description: API Reference for embed. +--- + +# `embed()` + +Generate an embedding for a single value using an embedding model. + +This is ideal for use cases where you need to embed a single value to e.g. retrieve similar items or to use the embedding in a downstream task. + +```ts +import { embed } from 'ai'; + +const { embedding } = await embed({ + model: 'openai/text-embedding-3-small', + value: 'sunny day at the beach', +}); +``` + +## Import + + + +## API Signature + +### Parameters + +', + isOptional: true, + description: + 'Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.', + }, + { + name: 'providerOptions', + type: 'ProviderOptions', + isOptional: true, + description: + 'Provider-specific options that are passed through to the provider.', + }, + { + name: 'experimental_telemetry', + type: 'TelemetrySettings', + isOptional: true, + description: 'Telemetry configuration. Experimental feature.', + properties: [ + { + type: 'TelemetrySettings', + parameters: [ + { + name: 'isEnabled', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable telemetry. Disabled by default while experimental.', + }, + { + name: 'recordInputs', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable input recording. Enabled by default.', + }, + { + name: 'recordOutputs', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable output recording. Enabled by default.', + }, + { + name: 'functionId', + type: 'string', + isOptional: true, + description: + 'Identifier for this function. Used to group telemetry data by function.', + }, + { + name: 'metadata', + isOptional: true, + type: 'Record | Array | Array>', + description: + 'Additional information to include in the telemetry data.', + }, + { + name: 'tracer', + type: 'Tracer', + isOptional: true, + description: 'A custom tracer to use for the telemetry data.', + }, + ], + }, + ], + }, + ]} +/> + +### Returns + +', + description: 'Response headers.', + }, + { + name: 'body', + type: 'unknown', + isOptional: true, + description: 'The response body.', + }, + ], + }, + ], + }, + { + name: 'providerMetadata', + type: 'ProviderMetadata | undefined', + isOptional: true, + description: + 'Optional metadata from the provider. The outer key is the provider name. The inner values are the metadata. Details depend on the provider.', + }, + ]} +/> diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx new file mode 100644 index 000000000..f19dbdc54 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx @@ -0,0 +1,191 @@ +--- +title: embedMany +description: API Reference for embedMany. +--- + +# `embedMany()` + +Embed several values using an embedding model. + +`embedMany` automatically splits large requests into smaller chunks if the model +has a limit on how many embeddings can be generated in a single call. + +```ts +import { embedMany } from 'ai'; + +const { embeddings } = await embedMany({ + model: 'openai/text-embedding-3-small', + values: [ + 'sunny day at the beach', + 'rainy afternoon in the city', + 'snowy night in the mountains', + ], +}); +``` + +## Import + + + +## API Signature + +### Parameters + +', + description: 'The values to embed.', + }, + { + name: 'maxRetries', + type: 'number', + isOptional: true, + description: + 'Maximum number of retries. Set to 0 to disable retries. Default: 2.', + }, + { + name: 'abortSignal', + type: 'AbortSignal', + isOptional: true, + description: + 'An optional abort signal that can be used to cancel the call.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: + 'Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.', + }, + { + name: 'providerOptions', + type: 'ProviderOptions', + isOptional: true, + description: + 'Provider-specific options that are passed through to the provider.', + }, + { + name: 'maxParallelCalls', + type: 'number', + isOptional: true, + description: + 'Maximum number of concurrent requests to the provider. Default: Infinity.', + }, + { + name: 'experimental_telemetry', + type: 'TelemetrySettings', + isOptional: true, + description: 'Telemetry configuration. Experimental feature.', + properties: [ + { + type: 'TelemetrySettings', + parameters: [ + { + name: 'isEnabled', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable telemetry. Disabled by default while experimental.', + }, + { + name: 'recordInputs', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable input recording. Enabled by default.', + }, + { + name: 'recordOutputs', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable output recording. Enabled by default.', + }, + { + name: 'functionId', + type: 'string', + isOptional: true, + description: + 'Identifier for this function. Used to group telemetry data by function.', + }, + { + name: 'metadata', + isOptional: true, + type: 'Record | Array | Array>', + description: + 'Additional information to include in the telemetry data.', + }, + { + name: 'tracer', + type: 'Tracer', + isOptional: true, + description: 'A custom tracer to use for the telemetry data.', + }, + ], + }, + ], + }, + ]} +/> + +### Returns + +', + description: 'The values that were embedded.', + }, + { + name: 'embeddings', + type: 'number[][]', + description: 'The embeddings. They are in the same order as the values.', + }, + { + name: 'usage', + type: 'EmbeddingModelUsage', + description: 'The token usage for generating the embeddings.', + properties: [ + { + type: 'EmbeddingModelUsage', + parameters: [ + { + name: 'tokens', + type: 'number', + description: 'The total number of input tokens.', + }, + ], + }, + ], + }, + { + name: 'warnings', + type: 'Warning[]', + description: + 'Warnings from the model provider (e.g. unsupported settings).', + }, + { + name: 'providerMetadata', + type: 'ProviderMetadata | undefined', + isOptional: true, + description: + 'Optional metadata from the provider. The outer key is the provider name. The inner values are the metadata. Details depend on the provider.', + }, + { + name: 'responses', + type: 'Array<{ headers?: Record; body?: unknown } | undefined>', + isOptional: true, + description: + 'Optional raw response data from each chunk request. There may be multiple responses if the request was split into multiple chunks.', + }, + ]} +/> diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/06-rerank.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/06-rerank.mdx new file mode 100644 index 000000000..da67c99cc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/06-rerank.mdx @@ -0,0 +1,309 @@ +--- +title: rerank +description: API Reference for rerank. +--- + +# `rerank()` + +Rerank a set of documents based on their relevance to a query using a reranking model. + +This is ideal for improving search relevance by reordering documents, emails, or other content based on semantic understanding of the query and documents. + +```ts +import { cohere } from '@ai-sdk/cohere'; +import { rerank } from 'ai'; + +const { ranking } = await rerank({ + model: cohere.reranking('rerank-v3.5'), + documents: ['sunny day at the beach', 'rainy afternoon in the city'], + query: 'talk about rain', +}); +``` + +## Import + + + +## API Signature + +### Parameters + +', + description: + 'The documents to rerank. Can be an array of strings or JSON objects.', + }, + { + name: 'query', + type: 'string', + description: 'The search query to rank documents against.', + }, + { + name: 'topN', + type: 'number', + isOptional: true, + description: + 'Maximum number of top documents to return. If not specified, all documents are returned.', + }, + { + name: 'maxRetries', + type: 'number', + isOptional: true, + description: + 'Maximum number of retries. Set to 0 to disable retries. Default: 2.', + }, + { + name: 'abortSignal', + type: 'AbortSignal', + isOptional: true, + description: + 'An optional abort signal that can be used to cancel the call.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: + 'Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.', + }, + { + name: 'providerOptions', + type: 'ProviderOptions', + isOptional: true, + description: 'Provider-specific options for the reranking request.', + }, + { + name: 'experimental_telemetry', + type: 'TelemetrySettings', + isOptional: true, + description: 'Telemetry configuration. Experimental feature.', + properties: [ + { + type: 'TelemetrySettings', + parameters: [ + { + name: 'isEnabled', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable telemetry. Disabled by default while experimental.', + }, + { + name: 'recordInputs', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable input recording. Enabled by default.', + }, + { + name: 'recordOutputs', + type: 'boolean', + isOptional: true, + description: + 'Enable or disable output recording. Enabled by default.', + }, + { + name: 'functionId', + type: 'string', + isOptional: true, + description: + 'Identifier for this function. Used to group telemetry data by function.', + }, + { + name: 'metadata', + isOptional: true, + type: 'Record | Array | Array>', + description: + 'Additional information to include in the telemetry data.', + }, + { + name: 'tracer', + type: 'Tracer', + isOptional: true, + description: 'A custom tracer to use for the telemetry data.', + }, + ], + }, + ], + }, + ]} +/> + +### Returns + +', + description: 'The original documents array in their original order.', + }, + { + name: 'rerankedDocuments', + type: 'Array', + description: 'The documents sorted by relevance score (descending).', + }, + { + name: 'ranking', + type: 'Array>', + description: 'Array of ranking items with scores and indices.', + properties: [ + { + type: 'RankingItem', + parameters: [ + { + name: 'originalIndex', + type: 'number', + description: + 'The index of the document in the original documents array.', + }, + { + name: 'score', + type: 'number', + description: + 'The relevance score for the document (typically 0-1, where higher is more relevant).', + }, + { + name: 'document', + type: 'VALUE', + description: 'The document itself.', + }, + ], + }, + ], + }, + { + name: 'response', + type: 'Response', + description: 'Response data.', + properties: [ + { + type: 'Response', + parameters: [ + { + name: 'id', + isOptional: true, + type: 'string', + description: 'The response ID from the provider.', + }, + { + name: 'timestamp', + type: 'Date', + description: 'The timestamp of the response.', + }, + { + name: 'modelId', + type: 'string', + description: 'The model ID used for reranking.', + }, + { + name: 'headers', + isOptional: true, + type: 'Record', + description: 'Response headers.', + }, + { + name: 'body', + type: 'unknown', + isOptional: true, + description: 'The raw response body.', + }, + ], + }, + ], + }, + { + name: 'providerMetadata', + type: 'ProviderMetadata | undefined', + isOptional: true, + description: + 'Optional metadata from the provider. The outer key is the provider name. The inner values are the metadata. Details depend on the provider.', + }, + ]} +/> + +## Examples + +### String Documents + +```ts +import { cohere } from '@ai-sdk/cohere'; +import { rerank } from 'ai'; + +const { ranking, rerankedDocuments } = await rerank({ + model: cohere.reranking('rerank-v3.5'), + documents: [ + 'sunny day at the beach', + 'rainy afternoon in the city', + 'snowy night in the mountains', + ], + query: 'talk about rain', + topN: 2, +}); + +console.log(rerankedDocuments); +// ['rainy afternoon in the city', 'sunny day at the beach'] + +console.log(ranking); +// [ +// { originalIndex: 1, score: 0.9, document: 'rainy afternoon...' }, +// { originalIndex: 0, score: 0.3, document: 'sunny day...' } +// ] +``` + +### Object Documents + +```ts +import { cohere } from '@ai-sdk/cohere'; +import { rerank } from 'ai'; + +const documents = [ + { + from: 'Paul Doe', + subject: 'Follow-up', + text: 'We are happy to give you a discount of 20%.', + }, + { + from: 'John McGill', + subject: 'Missing Info', + text: 'Here is the pricing from Oracle: $5000/month', + }, +]; + +const { ranking } = await rerank({ + model: cohere.reranking('rerank-v3.5'), + documents, + query: 'Which pricing did we get from Oracle?', + topN: 1, +}); + +console.log(ranking[0].document); +// { from: 'John McGill', subject: 'Missing Info', ... } +``` + +### With Provider Options + +```ts +import { cohere } from '@ai-sdk/cohere'; +import { rerank } from 'ai'; + +const { ranking } = await rerank({ + model: cohere.reranking('rerank-v3.5'), + documents: ['sunny day at the beach', 'rainy afternoon in the city'], + query: 'talk about rain', + providerOptions: { + cohere: { + maxTokensPerDoc: 1000, + }, + }, +}); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx new file mode 100644 index 000000000..b8bda5a08 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx @@ -0,0 +1,251 @@ +--- +title: generateImage +description: API Reference for generateImage. +--- + +# `generateImage()` + +Generates images based on a given prompt using an image model. + +It is ideal for use cases where you need to generate images programmatically, +such as creating visual content or generating images for data augmentation. + +```ts +import { generateImage } from 'ai'; + +const { images } = await generateImage({ + model: openai.image('dall-e-3'), + prompt: 'A futuristic cityscape at sunset', + n: 3, + size: '1024x1024', +}); + +console.log(images); +``` + +## Import + + + +## API Signature + +### Parameters + +', + description: + 'an image item can be one of: base64-encoded string, a `Uint8Array`, an `ArrayBuffer`, or a `Buffer`.', + }, + { + name: 'text', + type: 'string', + description: 'The text prompt.', + }, + { + name: 'mask', + type: 'DataContent', + description: + 'base64-encoded string, a `Uint8Array`, an `ArrayBuffer`, or a `Buffer`.', + }, + ], + }, + ], + }, + { + name: 'n', + type: 'number', + isOptional: true, + description: 'Number of images to generate.', + }, + { + name: 'size', + type: 'string', + isOptional: true, + description: + 'Size of the images to generate. Format: `{width}x{height}`.', + }, + { + name: 'aspectRatio', + type: 'string', + isOptional: true, + description: + 'Aspect ratio of the images to generate. Format: `{width}:{height}`.', + }, + { + name: 'seed', + type: 'number', + isOptional: true, + description: 'Seed for the image generation.', + }, + { + name: 'providerOptions', + type: 'ProviderOptions', + isOptional: true, + description: 'Additional provider-specific options.', + }, + { + name: 'maxImagesPerCall', + type: 'number', + isOptional: true, + description: + 'Maximum number of images to generate per API call. When n exceeds this value, multiple API calls will be made.', + }, + { + name: 'maxRetries', + type: 'number', + isOptional: true, + description: 'Maximum number of retries. Default: 2.', + }, + { + name: 'abortSignal', + type: 'AbortSignal', + isOptional: true, + description: 'An optional abort signal to cancel the call.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: 'Additional HTTP headers for the request.', + }, + ]} +/> + +### Returns + +', + description: 'All images that were generated.', + properties: [ + { + type: 'GeneratedFile', + parameters: [ + { + name: 'base64', + type: 'string', + description: 'Image as a base64 encoded string.', + }, + { + name: 'uint8Array', + type: 'Uint8Array', + description: 'Image as a Uint8Array.', + }, + { + name: 'mediaType', + type: 'string', + description: 'The IANA media type of the image.', + }, + ], + }, + ], + }, + { + name: 'warnings', + type: 'Warning[]', + description: + 'Warnings from the model provider (e.g. unsupported settings).', + }, + { + name: 'usage', + type: 'ImageModelUsage', + description: 'The usage statistics for the image generation.', + properties: [ + { + type: 'ImageModelUsage', + parameters: [ + { + name: 'imagesGenerated', + type: 'number', + description: 'The total number of images generated.', + }, + ], + }, + ], + }, + { + name: 'providerMetadata', + type: 'ImageModelProviderMetadata', + isOptional: true, + description: + 'Optional metadata from the provider. The outer key is the provider name. The inner values are the metadata. An `images` key is always present in the metadata and is an array with the same length as the top level `images` key. Details depend on the provider.', + }, + { + name: 'responses', + type: 'Array', + description: + 'Response metadata from the provider. There may be multiple responses if we made multiple calls to the model.', + properties: [ + { + type: 'ImageModelResponseMetadata', + parameters: [ + { + name: 'timestamp', + type: 'Date', + description: 'Timestamp for the start of the generated response.', + }, + { + name: 'modelId', + type: 'string', + description: + 'The ID of the response model that was used to generate the response.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: 'Response headers.', + }, + ], + }, + ], + }, + ]} +/> diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx new file mode 100644 index 000000000..d17a96e7d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx @@ -0,0 +1,152 @@ +--- +title: transcribe +description: API Reference for transcribe. +--- + +# `transcribe()` + +`transcribe` is an experimental feature. + +Generates a transcript from an audio file. + +```ts +import { experimental_transcribe as transcribe } from 'ai'; +import { openai } from '@ai-sdk/openai'; +import { readFile } from 'fs/promises'; + +const { text: transcript } = await transcribe({ + model: openai.transcription('whisper-1'), + audio: await readFile('audio.mp3'), +}); + +console.log(transcript); +``` + +## Import + + + +## API Signature + +### Parameters + +', + isOptional: true, + description: 'Additional provider-specific options.', + }, + { + name: 'maxRetries', + type: 'number', + isOptional: true, + description: 'Maximum number of retries. Default: 2.', + }, + { + name: 'abortSignal', + type: 'AbortSignal', + isOptional: true, + description: 'An optional abort signal to cancel the call.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: 'Additional HTTP headers for the request.', + }, + { + name: 'download', + type: '(options: { url: URL; abortSignal?: AbortSignal }) => Promise<{ data: Uint8Array; mediaType: string | undefined }>', + isOptional: true, + description: + 'Custom download function for fetching audio from URLs. Use `createDownload()` from `ai` to create a download function with custom size limits, e.g. `createDownload({ maxBytes: 50 * 1024 * 1024 })`. Default: built-in download with 2 GiB limit.', + }, + ]} +/> + +### Returns + +', + description: + 'An array of transcript segments, each containing a portion of the transcribed text along with its start and end times in seconds.', + }, + { + name: 'language', + type: 'string | undefined', + description: + 'The language of the transcript in ISO-639-1 format e.g. "en" for English.', + }, + { + name: 'durationInSeconds', + type: 'number | undefined', + description: 'The duration of the transcript in seconds.', + }, + { + name: 'warnings', + type: 'Warning[]', + description: + 'Warnings from the model provider (e.g. unsupported settings).', + }, + { + name: 'providerMetadata', + type: 'Record', + isOptional: true, + description: + 'Optional metadata from the provider. The outer key is the provider name. The inner values are the metadata. Details depend on the provider.', + }, + { + name: 'responses', + type: 'Array', + description: + 'Response metadata from the provider. There may be multiple responses if we made multiple calls to the model.', + properties: [ + { + type: 'TranscriptionModelResponseMetadata', + parameters: [ + { + name: 'timestamp', + type: 'Date', + description: 'Timestamp for the start of the generated response.', + }, + { + name: 'modelId', + type: 'string', + description: + 'The ID of the response model that was used to generate the response.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: 'Response headers.', + }, + ], + }, + ], + }, + ]} +/> diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx new file mode 100644 index 000000000..0839e9da7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx @@ -0,0 +1,221 @@ +--- +title: generateSpeech +description: API Reference for generateSpeech. +--- + +# `generateSpeech()` + +`generateSpeech` is an experimental feature. + +Generates speech audio from text. + +```ts +import { experimental_generateSpeech as generateSpeech } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const { audio } = await generateSpeech({ + model: openai.speech('tts-1'), + text: 'Hello from the AI SDK!', + voice: 'alloy', +}); + +console.log(audio); +``` + +## Examples + +### OpenAI + +```ts +import { experimental_generateSpeech as generateSpeech } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const { audio } = await generateSpeech({ + model: openai.speech('tts-1'), + text: 'Hello from the AI SDK!', + voice: 'alloy', +}); +``` + +### ElevenLabs + +```ts +import { experimental_generateSpeech as generateSpeech } from 'ai'; +import { elevenlabs } from '@ai-sdk/elevenlabs'; + +const { audio } = await generateSpeech({ + model: elevenlabs.speech('eleven_multilingual_v2'), + text: 'Hello from the AI SDK!', + voice: 'your-voice-id', // Required: get this from your ElevenLabs account +}); +``` + +## Import + + + +## API Signature + +### Parameters + +', + isOptional: true, + description: 'Additional provider-specific options.', + }, + { + name: 'maxRetries', + type: 'number', + isOptional: true, + description: 'Maximum number of retries. Default: 2.', + }, + { + name: 'abortSignal', + type: 'AbortSignal', + isOptional: true, + description: 'An optional abort signal to cancel the call.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: 'Additional HTTP headers for the request.', + }, + ]} +/> + +### Returns + +', + isOptional: true, + description: + 'Optional metadata from the provider. The outer key is the provider name. The inner values are the metadata. Details depend on the provider.', + }, + { + name: 'responses', + type: 'Array', + description: + 'Response metadata from the provider. There may be multiple responses if we made multiple calls to the model.', + properties: [ + { + type: 'SpeechModelResponseMetadata', + parameters: [ + { + name: 'timestamp', + type: 'Date', + description: 'Timestamp for the start of the generated response.', + }, + { + name: 'modelId', + type: 'string', + description: + 'The ID of the response model that was used to generate the response.', + }, + { + name: 'body', + isOptional: true, + type: 'unknown', + description: 'Optional response body.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: 'Response headers.', + }, + ], + }, + ], + }, + ]} +/> diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/13-generate-video.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/13-generate-video.mdx new file mode 100644 index 000000000..77084e9e3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/13-generate-video.mdx @@ -0,0 +1,264 @@ +--- +title: experimental_generateVideo +description: API Reference for experimental_generateVideo. +--- + +# `experimental_generateVideo()` + + + Video generation is an experimental feature. The API may change in future + versions. + + +Generates videos based on a given prompt using a video model. + +It is ideal for use cases where you need to generate videos programmatically, +such as creating visual content, animations, or generating videos from images. + +```ts +import { experimental_generateVideo as generateVideo } from 'ai'; + +const { videos } = await generateVideo({ + model: fal.video('luma-dream-machine/ray-2'), + prompt: 'A cat walking on a treadmill', + aspectRatio: '16:9', +}); + +console.log(videos); +``` + +## Import + + + +## API Signature + +### Parameters + +', + isOptional: true, + description: 'Additional HTTP headers for the request.', + }, + { + name: 'download', + type: '(options: { url: URL; abortSignal?: AbortSignal }) => Promise<{ data: Uint8Array; mediaType: string | undefined }>', + isOptional: true, + description: + 'Custom download function for fetching videos from URLs. Use `createDownload()` from `ai` to create a download function with custom size limits, e.g. `createDownload({ maxBytes: 50 * 1024 * 1024 })`. Default: built-in download with 2 GiB limit.', + }, + ]} +/> + +### Returns + +', + description: 'All videos that were generated.', + properties: [ + { + type: 'GeneratedFile', + parameters: [ + { + name: 'base64', + type: 'string', + description: 'Video as a base64 encoded string.', + }, + { + name: 'uint8Array', + type: 'Uint8Array', + description: 'Video as a Uint8Array.', + }, + { + name: 'mediaType', + type: 'string', + description: + 'The IANA media type of the video (e.g., video/mp4).', + }, + ], + }, + ], + }, + { + name: 'warnings', + type: 'Warning[]', + description: + 'Warnings from the model provider (e.g. unsupported settings).', + }, + { + name: 'providerMetadata', + type: 'VideoModelProviderMetadata', + isOptional: true, + description: + 'Optional metadata from the provider. The outer key is the provider name. The inner values are the metadata. A `videos` key is typically present in the metadata and is an array with the same length as the top level `videos` key. Details depend on the provider.', + }, + { + name: 'responses', + type: 'Array', + description: + 'Response metadata from the provider. There may be multiple responses if we made multiple calls to the model.', + properties: [ + { + type: 'VideoModelResponseMetadata', + parameters: [ + { + name: 'timestamp', + type: 'Date', + description: 'Timestamp for the start of the generated response.', + }, + { + name: 'modelId', + type: 'string', + description: + 'The ID of the response model that was used to generate the response.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: 'Response headers.', + }, + { + name: 'providerMetadata', + type: 'VideoModelProviderMetadata', + isOptional: true, + description: + 'Provider-specific metadata for this individual API call. Useful for accessing per-call metadata when multiple calls are made.', + }, + ], + }, + ], + }, + ]} +/> diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/15-agent.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/15-agent.mdx new file mode 100644 index 000000000..aed1ffc69 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/15-agent.mdx @@ -0,0 +1,210 @@ +--- +title: Agent (Interface) +description: API Reference for the Agent interface. +--- + +# `Agent` (interface) + +The `Agent` interface defines a contract for agents that can generate or stream AI-generated responses in response to prompts. Agents may encapsulate advanced logic such as tool usage, multi-step workflows, or prompt handling, enabling both simple and autonomous AI agents. + +Implementations of the `Agent` interface—such as `ToolLoopAgent`—fulfill the same contract and integrate seamlessly with all SDK APIs and utilities that expect an agent. This design allows users to supply custom agent classes or wrappers for third-party chains, while maximizing compatibility with AI SDK features. + +## Interface Definition + +```ts +import { ModelMessage } from '@ai-sdk/provider-utils'; +import { ToolSet } from '../generate-text/tool-set'; +import { Output } from '../generate-text/output'; +import { GenerateTextResult } from '../generate-text/generate-text-result'; +import { StreamTextResult } from '../generate-text/stream-text-result'; + +export type AgentCallParameters = ([ + CALL_OPTIONS, +] extends [never] + ? { options?: never } + : { options: CALL_OPTIONS }) & + ( + | { + /** + * A prompt. It can be either a text prompt or a list of messages. + * + * You can either use `prompt` or `messages` but not both. + */ + prompt: string | Array; + + /** + * A list of messages. + * + * You can either use `prompt` or `messages` but not both. + */ + messages?: never; + } + | { + /** + * A list of messages. + * + * You can either use `prompt` or `messages` but not both. + */ + messages: Array; + + /** + * A prompt. It can be either a text prompt or a list of messages. + * + * You can either use `prompt` or `messages` but not both. + */ + prompt?: never; + } + ) & { + /** + * Abort signal. + */ + abortSignal?: AbortSignal; + /** + * Timeout in milliseconds. Can be specified as a number or as an object with a totalMs property. + * The call will be aborted if it takes longer than the specified timeout. + * Can be used alongside abortSignal. + */ + timeout?: number | { totalMs?: number }; + /** + * Callback that is called when each step (LLM call) is finished, including intermediate steps. + */ + onStepFinish?: ToolLoopAgentOnStepFinishCallback; + }; + +/** + * An Agent receives a prompt (text or messages) and generates or streams an output + * that consists of steps, tool calls, data parts, etc. + * + * You can implement your own Agent by implementing the `Agent` interface, + * or use the `ToolLoopAgent` class. + */ +export interface Agent< + CALL_OPTIONS = never, + TOOLS extends ToolSet = {}, + OUTPUT extends Output = never, +> { + /** + * The specification version of the agent interface. This will enable + * us to evolve the agent interface and retain backwards compatibility. + */ + readonly version: 'agent-v1'; + + /** + * The id of the agent. + */ + readonly id: string | undefined; + + /** + * The tools that the agent can use. + */ + readonly tools: TOOLS; + + /** + * Generates an output from the agent (non-streaming). + */ + generate( + options: AgentCallParameters, + ): PromiseLike>; + + /** + * Streams an output from the agent (streaming). + */ + stream( + options: AgentStreamParameters, + ): PromiseLike>; +} +``` + +## Core Properties & Methods + +| Name | Type | Description | +| ------------ | ------------------------------------------------ | ------------------------------------------------------------------- | +| `version` | `'agent-v1'` | Interface version for compatibility. | +| `id` | `string \| undefined` | Optional agent identifier. | +| `tools` | `ToolSet` | The set of tools available to this agent. | +| `generate()` | `PromiseLike>` | Generates full, non-streaming output for a text prompt or messages. | +| `stream()` | `PromiseLike>` | Streams output (chunks or steps) for a text prompt or messages. | + +## Generic Parameters + +| Parameter | Default | Description | +| -------------- | ------- | -------------------------------------------------------------------------- | +| `CALL_OPTIONS` | `never` | Optional type for additional call options that can be passed to the agent. | +| `TOOLS` | `{}` | The type of the tool set available to this agent. | +| `OUTPUT` | `never` | The type of additional output data that the agent can produce. | + +## Method Parameters + +Both `generate()` and `stream()` accept an `AgentCallParameters` object with: + +- `prompt` (optional): A string prompt or array of `ModelMessage` objects +- `messages` (optional): An array of `ModelMessage` objects (mutually exclusive with `prompt`) +- `options` (optional): Additional call options when `CALL_OPTIONS` is not `never` +- `abortSignal` (optional): An `AbortSignal` to cancel the operation +- `timeout` (optional): A timeout in milliseconds. Can be specified as a number or as an object with a `totalMs` property. The call will be aborted if it takes longer than the specified timeout. Can be used alongside `abortSignal`. +- `onStepFinish` (optional): A callback invoked after each agent step (LLM/tool call) completes. Useful for tracking token usage or logging. + +## Example: Custom Agent Implementation + +Here's how you might implement your own Agent: + +```ts +import { Agent, GenerateTextResult, StreamTextResult } from 'ai'; +import type { ModelMessage } from '@ai-sdk/provider-utils'; + +class MyEchoAgent implements Agent { + version = 'agent-v1' as const; + id = 'echo'; + tools = {}; + + async generate({ prompt, messages, abortSignal }) { + const text = prompt ?? JSON.stringify(messages); + return { text, steps: [] }; + } + + async stream({ prompt, messages, abortSignal }) { + const text = prompt ?? JSON.stringify(messages); + return { + textStream: (async function* () { + yield text; + })(), + }; + } +} +``` + +## Usage: Interacting with Agents + +All SDK utilities that accept an agent—including [`createAgentUIStream`](/docs/reference/ai-sdk-core/create-agent-ui-stream), [`createAgentUIStreamResponse`](/docs/reference/ai-sdk-core/create-agent-ui-stream-response), and [`pipeAgentUIStreamToResponse`](/docs/reference/ai-sdk-core/pipe-agent-ui-stream-to-response)—expect an object adhering to the `Agent` interface. + +You can use the official [`ToolLoopAgent`](/docs/reference/ai-sdk-core/tool-loop-agent) (recommended for multi-step AI workflows with tool use), or supply your own implementation: + +```ts +import { ToolLoopAgent, createAgentUIStream } from "ai"; + +const agent = new ToolLoopAgent({ ... }); + +const stream = await createAgentUIStream({ + agent, + messages: [{ role: "user", content: "What is the weather in NYC?" }] +}); + +for await (const chunk of stream) { + console.log(chunk); +} +``` + +## See Also + +- [`ToolLoopAgent`](/docs/reference/ai-sdk-core/tool-loop-agent) — Official multi-step agent implementation +- [`createAgentUIStream`](/docs/reference/ai-sdk-core/create-agent-ui-stream) +- [`GenerateTextResult`](/docs/reference/ai-sdk-core/generate-text) +- [`StreamTextResult`](/docs/reference/ai-sdk-core/stream-text) + +## Notes + +- Agents should define their `tools` property, even if empty (`{}`), for compatibility with SDK utilities. +- The interface accepts both plain prompts and message arrays as input, but only one at a time. +- The `CALL_OPTIONS` generic parameter allows agents to accept additional call-specific options when needed. +- The `abortSignal` parameter enables cancellation of agent operations. +- This design is extensible for both complex autonomous agents and simple LLM wrappers. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx new file mode 100644 index 000000000..8fca0171c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx @@ -0,0 +1,498 @@ +--- +title: ToolLoopAgent +description: API Reference for the ToolLoopAgent class. +--- + +# `ToolLoopAgent` + +Creates a reusable AI agent capable of generating text, streaming responses, and using tools over multiple steps (a reasoning-and-acting loop). `ToolLoopAgent` is ideal for building autonomous, multi-step agents that can take actions, call tools, and reason over the results until a stop condition is reached. + +Unlike single-step calls like `generateText()`, an agent can iteratively invoke tools, collect tool results, and decide next actions until completion or user approval is required. + +```ts +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + instructions: 'You are a helpful assistant.', + tools: { + weather: weatherTool, + calculator: calculatorTool, + }, +}); + +const result = await agent.generate({ + prompt: 'What is the weather in NYC?', +}); + +console.log(result.text); +``` + +To see `ToolLoopAgent` in action, check out [these examples](#examples). + +## Import + + + +## Constructor + +### Parameters + +', + isOptional: true, + description: + 'A set of tools the agent can call. Keys are tool names. Tools require the underlying model to support tool calling.', + }, + { + name: 'toolChoice', + type: 'ToolChoice', + isOptional: true, + description: + "Tool call selection strategy. Options: 'auto' | 'none' | 'required' | { type: 'tool', toolName: string }. Default: 'auto'.", + }, + { + name: 'stopWhen', + type: 'StopCondition | StopCondition[]', + isOptional: true, + description: + 'Condition(s) for ending the agent loop. Default: stepCountIs(20).', + }, + { + name: 'activeTools', + type: 'Array', + isOptional: true, + description: + 'Limits the subset of tools that are available in a specific call.', + }, + { + name: 'output', + type: 'Output', + isOptional: true, + description: + 'Optional structured output specification, for parsing responses into typesafe data.', + }, + { + name: 'prepareStep', + type: 'PrepareStepFunction', + isOptional: true, + description: + 'Optional function to mutate step settings or inject state for each agent step.', + }, + { + name: 'experimental_repairToolCall', + type: 'ToolCallRepairFunction', + isOptional: true, + description: + 'Optional callback to attempt automatic recovery when a tool call cannot be parsed.', + }, + { + name: 'onStepFinish', + type: 'ToolLoopAgentOnStepFinishCallback', + isOptional: true, + description: + 'Callback invoked after each agent step (LLM/tool call) completes. If also specified in `generate()` or `stream()`, both callbacks are called (constructor first).', + }, + { + name: 'onFinish', + type: 'ToolLoopAgentOnFinishCallback', + isOptional: true, + description: + 'Callback that is called when all agent steps are finished and the response is complete. Receives step results, total usage, experimental_context, functionId, and metadata. If also specified in `generate()` or `stream()`, both callbacks are called (constructor first).', + }, + { + name: 'experimental_context', + type: 'unknown', + isOptional: true, + description: + 'Experimental: Custom context object passed to each tool call.', + }, + { + name: 'experimental_telemetry', + type: 'TelemetrySettings', + isOptional: true, + description: 'Experimental: Optional telemetry configuration.', + }, + { + name: 'experimental_download', + type: 'DownloadFunction | undefined', + isOptional: true, + description: + 'Experimental: Custom download function for fetching files/URLs for tool or model use. By default, files are downloaded if the model does not support the URL for a given media type.', + }, + { + name: 'maxOutputTokens', + type: 'number', + isOptional: true, + description: 'Maximum number of tokens the model is allowed to generate.', + }, + { + name: 'temperature', + type: 'number', + isOptional: true, + description: + 'Sampling temperature, controls randomness. Passed through to the model.', + }, + { + name: 'topP', + type: 'number', + isOptional: true, + description: + 'Top-p (nucleus) sampling parameter. Passed through to the model.', + }, + { + name: 'topK', + type: 'number', + isOptional: true, + description: 'Top-k sampling parameter. Passed through to the model.', + }, + { + name: 'presencePenalty', + type: 'number', + isOptional: true, + description: 'Presence penalty parameter. Passed through to the model.', + }, + { + name: 'frequencyPenalty', + type: 'number', + isOptional: true, + description: 'Frequency penalty parameter. Passed through to the model.', + }, + { + name: 'stopSequences', + type: 'string[]', + isOptional: true, + description: + 'Custom token sequences which stop the model output. Passed through to the model.', + }, + { + name: 'seed', + type: 'number', + isOptional: true, + description: 'Seed for deterministic generation (if supported).', + }, + { + name: 'maxRetries', + type: 'number', + isOptional: true, + description: 'How many times to retry on failure. Default: 2.', + }, + { + name: 'providerOptions', + type: 'ProviderOptions', + isOptional: true, + description: 'Additional provider-specific configuration.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: + 'Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.', + }, + { + name: 'callOptionsSchema', + type: 'FlexibleSchema', + isOptional: true, + description: + 'Optional schema for custom call options that can be passed when calling generate() or stream().', + }, + { + name: 'prepareCall', + type: 'PrepareCallFunction', + isOptional: true, + description: + 'Optional function to prepare call-specific settings based on the call options.', + }, + { + name: 'id', + type: 'string', + isOptional: true, + description: 'Custom agent identifier.', + }, + ]} +/> + +## Methods + +### `generate()` + +Generates a response and triggers tool calls as needed, running the agent loop and returning the final result. Returns a promise resolving to a `GenerateTextResult`. + +```ts +const result = await agent.generate({ + prompt: 'What is the weather like?', +}); +``` + +', + description: 'A text prompt or message array.', + }, + { + name: 'messages', + type: 'Array', + description: 'A full conversation history as a list of model messages.', + }, + { + name: 'abortSignal', + type: 'AbortSignal', + isOptional: true, + description: + 'An optional abort signal that can be used to cancel the call.', + }, + { + name: 'timeout', + type: 'number | { totalMs?: number; stepMs?: number; chunkMs?: number }', + isOptional: true, + description: + 'Timeout in milliseconds. Can be specified as a number or as an object with totalMs, stepMs, and/or chunkMs properties. The call will be aborted if it takes longer than the specified timeout. Can be used alongside abortSignal.', + }, + { + name: 'options', + type: 'CALL_OPTIONS', + isOptional: true, + description: + 'Custom call options when the agent is configured with a callOptionsSchema.', + }, + { + name: 'onStepFinish', + type: 'ToolLoopAgentOnStepFinishCallback', + isOptional: true, + description: + 'Callback invoked after each agent step (LLM/tool call) completes. If also specified in the constructor, both callbacks are called (constructor first, then this one).', + }, + ]} +/> + +#### Returns + +The `generate()` method returns a `GenerateTextResult` object (see [`generateText`](/docs/reference/ai-sdk-core/generate-text#returns) for details). + +### `stream()` + +Streams a response from the agent, including agent reasoning and tool calls, as they occur. Returns a `StreamTextResult`. + +```ts +const stream = agent.stream({ + prompt: 'Tell me a story about a robot.', +}); + +for await (const chunk of stream.textStream) { + console.log(chunk); +} +``` + +', + description: 'A text prompt or message array.', + }, + { + name: 'messages', + type: 'Array', + description: 'A full conversation history as a list of model messages.', + }, + { + name: 'abortSignal', + type: 'AbortSignal', + isOptional: true, + description: + 'An optional abort signal that can be used to cancel the call.', + }, + { + name: 'timeout', + type: 'number | { totalMs?: number; stepMs?: number; chunkMs?: number }', + isOptional: true, + description: + 'Timeout in milliseconds. Can be specified as a number or as an object with totalMs, stepMs, and/or chunkMs properties. The call will be aborted if it takes longer than the specified timeout. Can be used alongside abortSignal.', + }, + { + name: 'options', + type: 'CALL_OPTIONS', + isOptional: true, + description: + 'Custom call options when the agent is configured with a callOptionsSchema.', + }, + { + name: 'experimental_transform', + type: 'StreamTextTransform | Array', + isOptional: true, + description: + 'Optional stream transformation(s). They are applied in the order provided and must maintain the stream structure. See `streamText` docs for details.', + }, + { + name: 'onStepFinish', + type: 'ToolLoopAgentOnStepFinishCallback', + isOptional: true, + description: + 'Callback invoked after each agent step (LLM/tool call) completes. If also specified in the constructor, both callbacks are called (constructor first, then this one).', + }, + ]} +/> + +#### Returns + +The `stream()` method returns a `StreamTextResult` object (see [`streamText`](/docs/reference/ai-sdk-core/stream-text#returns) for details). + +## Types + +### `InferAgentUIMessage` + +Infers the UI message type for the given agent instance. Useful for type-safe UI and message exchanges. + +#### Basic Example + +```ts +import { ToolLoopAgent, InferAgentUIMessage } from 'ai'; + +const weatherAgent = new ToolLoopAgent({ + model: __MODEL__, + tools: { weather: weatherTool }, +}); + +type WeatherAgentUIMessage = InferAgentUIMessage; +``` + +#### Example with Message Metadata + +You can provide a second type argument to customize the metadata for each message. This is useful for tracking rich metadata returned by the agent (such as createdAt, tokens, finish reason, etc.). + +```ts +import { ToolLoopAgent, InferAgentUIMessage } from 'ai'; +import { z } from 'zod'; + +// Example schema for message metadata +const exampleMetadataSchema = z.object({ + createdAt: z.number().optional(), + model: z.string().optional(), + totalTokens: z.number().optional(), + finishReason: z.string().optional(), +}); +type ExampleMetadata = z.infer; + +// Define agent as usual +const metadataAgent = new ToolLoopAgent({ + model: __MODEL__, + // ...other options +}); + +// Type-safe UI message type with custom metadata +type MetadataAgentUIMessage = InferAgentUIMessage< + typeof metadataAgent, + ExampleMetadata +>; +``` + +## Examples + +### Basic Agent with Tools + +```ts +import { ToolLoopAgent, stepCountIs } from 'ai'; +import { weatherTool, calculatorTool } from './tools'; + +const assistant = new ToolLoopAgent({ + model: __MODEL__, + instructions: 'You are a helpful assistant.', + tools: { + weather: weatherTool, + calculator: calculatorTool, + }, + stopWhen: stepCountIs(3), +}); + +const result = await assistant.generate({ + prompt: 'What is the weather in NYC and what is 100 * 25?', +}); + +console.log(result.text); +console.log(result.steps); // Array of all steps taken by the agent +``` + +### Streaming Agent Response + +```ts +const agent = new ToolLoopAgent({ + model: __MODEL__, + instructions: 'You are a creative storyteller.', +}); + +const stream = agent.stream({ + prompt: 'Tell me a short story about a time traveler.', +}); + +for await (const chunk of stream.textStream) { + process.stdout.write(chunk); +} +``` + +### Agent with Output Parsing + +```ts +import { z } from 'zod'; + +const analysisAgent = new ToolLoopAgent({ + model: __MODEL__, + output: { + schema: z.object({ + sentiment: z.enum(['positive', 'negative', 'neutral']), + score: z.number(), + summary: z.string(), + }), + }, +}); + +const result = await analysisAgent.generate({ + prompt: 'Analyze this review: "The product exceeded my expectations!"', +}); + +console.log(result.output); +// Typed as { sentiment: 'positive' | 'negative' | 'neutral', score: number, summary: string } +``` + +### Example: Approved Tool Execution + +```ts +import { openai } from '@ai-sdk/openai'; +import { ToolLoopAgent } from 'ai'; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + instructions: 'You are an agent with access to a weather API.', + tools: { + weather: openai.tools.weather({ + /* ... */ + }), + }, + // Optionally require approval, etc. +}); + +const result = await agent.generate({ + prompt: 'Is it raining in Paris today?', +}); +console.log(result.text); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/17-create-agent-ui-stream.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/17-create-agent-ui-stream.mdx new file mode 100644 index 000000000..aa47fca9c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/17-create-agent-ui-stream.mdx @@ -0,0 +1,154 @@ +--- +title: createAgentUIStream +description: API Reference for the createAgentUIStream utility. +--- + +# `createAgentUIStream` + +The `createAgentUIStream` function executes an [Agent](/docs/reference/ai-sdk-core/agent), consumes an array of UI messages, and streams the agent's output as UI message chunks via an async iterable. This enables real-time, incremental rendering of AI assistant output with full access to tool use, intermediate reasoning, and interactive UI features in your own runtime—perfect for building chat APIs, dashboards, or bots powered by agents. + +## Import + + + +## Usage + +```ts +import { ToolLoopAgent, createAgentUIStream } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + instructions: 'You are a helpful assistant.', + tools: { weather: weatherTool, calculator: calculatorTool }, +}); + +export async function* streamAgent( + uiMessages: unknown[], + abortSignal?: AbortSignal, +) { + const stream = await createAgentUIStream({ + agent, + uiMessages, + abortSignal, + // ...other options (see below) + }); + + for await (const chunk of stream) { + yield chunk; // Each chunk is a UI message output from the agent. + } +} +``` + +## Parameters + + + +## Returns + +A `Promise>`, where each yielded chunk is a UI message output from the agent (see [`UIMessage`](/docs/reference/ai-sdk-core/ui-message)). This can be consumed with any async iterator loop, or piped to a streaming HTTP response, socket, or any other sink. + +## Example + +```ts +import { createAgentUIStream } from 'ai'; + +const controller = new AbortController(); + +const stream = await createAgentUIStream({ + agent, + uiMessages: [{ role: 'user', content: 'What is the weather in SF today?' }], + abortSignal: controller.signal, + sendStart: true, + // ...other UIMessageStreamOptions +}); + +for await (const chunk of stream) { + // Each chunk is a UI message update — stream it to your client, dashboard, logs, etc. + console.log(chunk); +} + +// Call controller.abort() to cancel the agent operation early. +``` + +## How It Works + +1. **UI Message Validation:** The input `uiMessages` array is validated and normalized using the agent's `tools` definition. Any invalid messages cause an error. +2. **Conversion to Model Messages:** The validated UI messages are converted into model-specific message format, as required by the agent. +3. **Agent Streaming:** The agent's `.stream({ prompt, ... })` method is invoked with the converted model messages, optional call options, abort signal, and any experimental transforms. +4. **UI Message Stream Building:** The result stream is converted and exposed as a streaming async iterable of UI message chunks for you to consume. + +## Notes + +- The agent **must** implement the `.stream({ prompt, ... })` method and define its supported `tools` property. +- This utility returns an async iterable for maximal streaming flexibility. For HTTP responses, see [`createAgentUIStreamResponse`](/docs/reference/ai-sdk-core/create-agent-ui-stream-response) (Web) or [`pipeAgentUIStreamToResponse`](/docs/reference/ai-sdk-core/pipe-agent-ui-stream-to-response) (Node.js). +- The `uiMessages` parameter is named `uiMessages`, **not** just `messages`. +- You can provide advanced options via `UIMessageStreamOptions` (for example, to include sources or usage). +- To cancel the stream, pass an [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) via the `abortSignal` parameter. + +## See Also + +- [`Agent`](/docs/reference/ai-sdk-core/agent) +- [`ToolLoopAgent`](/docs/reference/ai-sdk-core/tool-loop-agent) +- [`UIMessage`](/docs/reference/ai-sdk-core/ui-message) +- [`createAgentUIStreamResponse`](/docs/reference/ai-sdk-core/create-agent-ui-stream-response) +- [`pipeAgentUIStreamToResponse`](/docs/reference/ai-sdk-core/pipe-agent-ui-stream-to-response) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/18-create-agent-ui-stream-response.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/18-create-agent-ui-stream-response.mdx new file mode 100644 index 000000000..2272ad411 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/18-create-agent-ui-stream-response.mdx @@ -0,0 +1,173 @@ +--- +title: createAgentUIStreamResponse +description: API Reference for the createAgentUIStreamResponse utility. +--- + +# `createAgentUIStreamResponse` + +The `createAgentUIStreamResponse` function executes an [Agent](/docs/reference/ai-sdk-core/agent), runs its streaming output as a UI message stream, and returns an HTTP [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) object whose body is the live, streaming UI message output. This is designed for API routes that deliver real-time agent results, such as chat endpoints or streaming tool-use operations. + +## Import + + + +## Usage + +```ts +import { ToolLoopAgent, createAgentUIStreamResponse } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + instructions: 'You are a helpful assistant.', + tools: { weather: weatherTool, calculator: calculatorTool }, +}); + +export async function POST(request: Request) { + const { messages } = await request.json(); + + // Optional: support cancellation (aborts on disconnect, etc.) + const abortController = new AbortController(); + + return createAgentUIStreamResponse({ + agent, + uiMessages: messages, + abortSignal: abortController.signal, // optional + // ...other UIMessageStreamOptions like sendSources, experimental_transform, etc. + }); +} +``` + +## Parameters + + }) => PromiseLike | void', + isRequired: false, + description: + 'Optional function to consume the SSE stream. When provided, this function will be called with the SSE stream to handle consumption.', + }, + ]} +/> + +## Returns + +A `Promise` whose `body` is a streaming UI message output from the agent. Use this as the return value of API/server handlers in serverless, Next.js, Express, Hono, or edge runtime contexts. + +## Example: Next.js API Route Handler + +```ts +import { createAgentUIStreamResponse } from 'ai'; +import { MyCustomAgent } from '@/agent/my-custom-agent'; + +export async function POST(request: Request) { + const { messages } = await request.json(); + + return createAgentUIStreamResponse({ + agent: MyCustomAgent, + uiMessages: messages, + sendSources: true, // (optional) + // headers, status, abortSignal, and other UIMessageStreamOptions also supported + }); +} +``` + +## How It Works + +- 1. **UI Message Validation:** Validates the incoming `uiMessages` array according to the agent's specified tools and requirements. +- 2. **Model Message Conversion:** Converts validated UI messages into the internal model message format for the agent. +- 3. **Streaming Agent Output:** Invokes the agent’s `.stream({ prompt, ... })` to get a stream of chunks (steps/UI messages). +- 4. **HTTP Response Creation:** Wraps the output stream as a readable HTTP `Response` object that streams UI message chunks to the client. + +## Notes + +- Your agent **must** implement `.stream({ prompt, ... })` and define a `tools` property (even if it's just `{}`) to work with this function. +- **Server Only:** This API should only be called in backend/server-side contexts (API routes, edge/serverless/server route handlers, etc.). Not for browser use. +- Additional options (`headers`, `status`, UI stream options, transforms, etc.) are available for advanced scenarios. +- This leverages [ReadableStream](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) so your platform/client must support HTTP streaming consumption. + +## See Also + +- [`Agent`](/docs/reference/ai-sdk-core/agent) +- [`ToolLoopAgent`](/docs/reference/ai-sdk-core/tool-loop-agent) +- [`UIMessage`](/docs/reference/ai-sdk-core/ui-message) +- [`createAgentUIStream`](/docs/reference/ai-sdk-core/create-agent-ui-stream) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/18-pipe-agent-ui-stream-to-response.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/18-pipe-agent-ui-stream-to-response.mdx new file mode 100644 index 000000000..1b2b6b494 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/18-pipe-agent-ui-stream-to-response.mdx @@ -0,0 +1,150 @@ +--- +title: pipeAgentUIStreamToResponse +description: API Reference for the pipeAgentUIStreamToResponse utility. +--- + +# `pipeAgentUIStreamToResponse` + +The `pipeAgentUIStreamToResponse` function runs an [Agent](/docs/reference/ai-sdk-core/agent) and streams the resulting UI message output directly to a Node.js [`ServerResponse`](https://nodejs.org/api/http.html#class-httpserverresponse) object. This is ideal for building real-time streaming API endpoints (for chat, tool use, etc.) in Node.js-based frameworks like Express, Hono, or custom Node servers. + +## Import + + + +## Usage + +```ts +import { pipeAgentUIStreamToResponse } from 'ai'; +import { MyAgent } from './agent'; + +export async function handler(req, res) { + const { messages } = JSON.parse(req.body); + + await pipeAgentUIStreamToResponse({ + response: res, // Node.js ServerResponse + agent: MyAgent, + uiMessages: messages, // Required: array of input UI messages + // abortSignal: optional AbortSignal for cancellation + // status: 200, + // headers: { ... }, + // ...other optional UI message stream options + }); +} +``` + +## Parameters + + + +## Returns + +A `Promise`. The function completes when the UI message stream has been fully sent to the provided ServerResponse. + +## Example: Express Route Handler + +```ts +import { pipeAgentUIStreamToResponse } from 'ai'; +import { openaiWebSearchAgent } from './openai-web-search-agent'; + +app.post('/chat', async (req, res) => { + // Use req.body.messages as input UI messages + await pipeAgentUIStreamToResponse({ + response: res, + agent: openaiWebSearchAgent, + uiMessages: req.body.messages, + // abortSignal: yourController.signal + // status: 200, + // headers: { ... }, + // ...more options + }); +}); +``` + +## How It Works + +1. **Runs the Agent:** Calls the agent’s `.stream` method with the provided UI messages and options, converting them into model messages as needed. +2. **Streams UI Message Output:** Pipes the agent output as a UI message stream to the `ServerResponse`, sending data via streaming HTTP responses (including appropriate headers). +3. **Abort Signal Handling:** If `abortSignal` is supplied, streaming is cancelled as soon as the signal is triggered (such as on client disconnect). +4. **No Response Return:** Unlike Edge/serverless APIs that return a `Response`, this function writes bytes directly to the ServerResponse and does not return a response object. + +## Notes + +- **Abort Handling:** For best robustness, use an `AbortSignal` (for example, wired to Express/Hono client disconnects) to ensure quick cancellation of agent computation and streaming. +- **Node.js Only:** Only works with Node.js [ServerResponse](https://nodejs.org/api/http.html#class-httpserverresponse) objects (e.g., in Express, Hono’s node adapter, etc.), not Edge/serverless/web Response APIs. +- **Streaming Support:** Make sure your client (and any proxies) correctly support streaming HTTP responses for full effect. +- **Parameter Names:** The property for input messages is `uiMessages` (not `messages`) for consistency with SDK agent utilities. + +## See Also + +- [`createAgentUIStreamResponse`](/docs/reference/ai-sdk-core/create-agent-ui-stream-response) +- [`Agent`](/docs/reference/ai-sdk-core/agent) +- [`UIMessage`](/docs/reference/ai-sdk-core/ui-message) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/20-tool.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/20-tool.mdx new file mode 100644 index 000000000..c402d81c0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/20-tool.mdx @@ -0,0 +1,209 @@ +--- +title: tool +description: Helper function for tool type inference +--- + +# `tool()` + +Tool is a helper function that infers the tool input for its `execute` method. + +It does not have any runtime behavior, but it helps TypeScript infer the types of the input for the `execute` method. + +Without this helper function, TypeScript is unable to connect the `inputSchema` property to the `execute` method, +and the argument types of `execute` cannot be inferred. + +```ts highlight={"1,4,9,10"} +import { tool } from 'ai'; +import { z } from 'zod'; + +export const weatherTool = tool({ + description: 'Get the weather in a location', + inputSchema: z.object({ + location: z.string().describe('The location to get the weather for'), + }), + // location below is inferred to be a string: + execute: async ({ location }) => ({ + location, + temperature: 72 + Math.floor(Math.random() * 21) - 10, + }), +}); +``` + +## Import + + + +## API Signature + +### Parameters + + boolean | Promise)', + description: + 'Whether the tool needs user approval before execution. Can be a boolean or a function that receives the tool arguments and returns a boolean.', + }, + { + name: 'inputSchema', + type: 'Zod Schema | JSON Schema', + description: + 'The schema of the input that the tool expects. The language model will use this to generate the input. It is also used to validate the output of the language model. Use descriptions to make the input understandable for the language model. You can either pass in a Zod schema or a JSON schema (using the `jsonSchema` function).', + }, + { + name: 'inputExamples', + isOptional: true, + type: 'Array<{ input: INPUT }>', + description: + 'An optional list of input examples that show the language model what the input should look like.', + }, + { + name: 'strict', + isOptional: true, + type: 'boolean', + description: + 'Strict mode setting for the tool. Providers that support strict mode will use this setting to determine how the input should be generated. Strict mode will always produce valid inputs, but it might limit what input schemas are supported.', + }, + { + name: 'execute', + isOptional: true, + type: 'async (input: INPUT, options: ToolExecutionOptions) => RESULT | Promise | AsyncIterable', + description: + 'An async function that is called with the arguments from the tool call and produces a result or a results iterable. If an iterable is provided, all results but the last one are considered preliminary. If not provided, the tool will not be executed automatically.', + properties: [ + { + type: 'ToolExecutionOptions', + parameters: [ + { + name: 'toolCallId', + type: 'string', + description: + 'The ID of the tool call. You can use it e.g. when sending tool-call related information with stream data.', + }, + { + name: 'messages', + type: 'ModelMessage[]', + description: + 'Messages that were sent to the language model to initiate the response that contained the tool call. The messages do not include the system prompt nor the assistant response that contained the tool call.', + }, + { + name: 'abortSignal', + type: 'AbortSignal', + isOptional: true, + description: + 'An optional abort signal that indicates that the overall operation should be aborted.', + }, + { + name: 'experimental_context', + type: 'unknown', + isOptional: true, + description: + 'Context that is passed into tool execution. Experimental (can break in patch releases).', + }, + ], + }, + ], + }, + { + name: 'outputSchema', + isOptional: true, + type: 'Zod Schema | JSON Schema', + description: + 'The schema of the output that the tool produces. Used for type inference.', + }, + { + name: 'toModelOutput', + isOptional: true, + type: '({toolCallId: string; input: INPUT; output: OUTPUT}) => ToolResultOutput | PromiseLike', + description: + 'Optional conversion function that maps the tool result to an output that can be used by the language model. If not provided, the tool result will be sent as a JSON object.', + }, + { + name: 'onInputStart', + isOptional: true, + type: '(options: ToolExecutionOptions) => void | PromiseLike', + description: + 'Optional function that is called when the argument streaming starts. Only called when the tool is used in a streaming context.', + }, + { + name: 'onInputDelta', + isOptional: true, + type: '(options: { inputTextDelta: string } & ToolExecutionOptions) => void | PromiseLike', + description: + 'Optional function that is called when an argument streaming delta is available. Only called when the tool is used in a streaming context.', + }, + { + name: 'onInputAvailable', + isOptional: true, + type: '(options: { input: INPUT } & ToolExecutionOptions) => void | PromiseLike', + description: + 'Optional function that is called when a tool call can be started, even if the execute function is not provided.', + }, + { + name: 'providerOptions', + isOptional: true, + type: 'ProviderOptions', + description: + 'Additional provider-specific metadata. They are passed through to the provider from the AI SDK and enable provider-specific functionality that can be fully encapsulated in the provider.', + }, + { + name: 'type', + isOptional: true, + type: "'function' | 'provider-defined'", + description: + 'The type of the tool. Defaults to "function" for regular tools. Use "provider-defined" for provider-specific tools.', + }, + { + name: 'id', + isOptional: true, + type: 'string', + description: + 'The ID of the tool for provider-defined tools. Should follow the format `.`. Required when type is "provider-defined".', + }, + { + name: 'name', + isOptional: true, + type: 'string', + description: + 'The name of the tool that the user must use in the tool set. Required when type is "provider-defined".', + }, + { + name: 'args', + isOptional: true, + type: 'Record', + description: + 'The arguments for configuring the tool. Must match the expected arguments defined by the provider for this tool. Required when type is "provider-defined".', + }, + ], + }, + ], + }, + ]} +/> + +### Returns + +The tool that was passed in. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx new file mode 100644 index 000000000..012ce20b8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx @@ -0,0 +1,223 @@ +--- +title: dynamicTool +description: Helper function for creating dynamic tools with unknown types +--- + +# `dynamicTool()` + +The `dynamicTool` function creates tools where the input and output types are not known at compile time. This is useful for scenarios such as: + +- MCP (Model Context Protocol) tools without schemas +- User-defined functions loaded at runtime +- Tools loaded from external sources or databases +- Dynamic tool generation based on user input + +Unlike the regular `tool` function, `dynamicTool` accepts and returns `unknown` types, allowing you to work with tools that have runtime-determined schemas. + +```ts highlight={"1,4,9,10,11"} +import { dynamicTool } from 'ai'; +import { z } from 'zod'; + +export const customTool = dynamicTool({ + description: 'Execute a custom user-defined function', + inputSchema: z.object({}), + // input is typed as 'unknown' + execute: async input => { + const { action, parameters } = input as any; + + // Execute your dynamic logic + return { + result: `Executed ${action} with ${JSON.stringify(parameters)}`, + }; + }, +}); +``` + +## Import + + + +## API Signature + +### Parameters + + boolean | Promise)', + description: + 'Whether the tool needs user approval before execution. Can be a boolean or a function that receives the tool arguments and returns a boolean.' + }, + { + name: 'inputSchema', + type: 'FlexibleSchema', + description: + 'The schema of the input that the tool expects. While the type is unknown, a schema is still required for validation. You can use Zod schemas with z.unknown() or z.any() for fully dynamic inputs.' + }, + { + name: 'execute', + type: 'ToolExecuteFunction', + description: + 'An async function that is called with the arguments from the tool call. The input is typed as unknown and must be validated/cast at runtime.', + properties: [ + { + type: "ToolExecutionOptions", + parameters: [ + { + name: 'toolCallId', + type: 'string', + description: 'The ID of the tool call.', + }, + { + name: "messages", + type: "ModelMessage[]", + description: "Messages that were sent to the language model." + }, + { + name: "abortSignal", + type: "AbortSignal", + isOptional: true, + description: "An optional abort signal." + }, + { + name: "experimental_context", + type: "unknown", + isOptional: true, + description: "Context that is passed into tool execution. Experimental (can break in patch releases)." + } + ] + } + ] + }, + { + name: 'outputSchema', + isOptional: true, + type: 'Zod Schema | JSON Schema', + description: + 'The schema of the output that the tool produces. Used for validation and type inference.' + }, + { + name: 'toModelOutput', + isOptional: true, + type: '({toolCallId: string; input: unknown; output: unknown}) => ToolResultOutput | PromiseLike', + description: 'Optional conversion function that maps the tool result to an output that can be used by the language model.' + }, + { + name: 'onInputStart', + isOptional: true, + type: '(options: ToolExecutionOptions) => void | PromiseLike', + description: + 'Optional function that is called when the argument streaming starts. Only called when the tool is used in a streaming context.' + }, + { + name: 'onInputDelta', + isOptional: true, + type: '(options: { inputTextDelta: string } & ToolExecutionOptions) => void | PromiseLike', + description: + 'Optional function that is called when an argument streaming delta is available. Only called when the tool is used in a streaming context.' + }, + { + name: 'onInputAvailable', + isOptional: true, + type: '(options: { input: unknown } & ToolExecutionOptions) => void | PromiseLike', + description: + 'Optional function that is called when a tool call can be started, even if the execute function is not provided.' + }, + { + name: 'providerOptions', + isOptional: true, + type: 'ProviderOptions', + description: 'Additional provider-specific metadata.' + } + ] + } + ] + } + +]} +/> + +### Returns + +A `Tool` with `type: 'dynamic'` that can be used with `generateText`, `streamText`, and other AI SDK functions. + +## Type-Safe Usage + +When using dynamic tools alongside static tools, you need to check the `dynamic` flag for proper type narrowing: + +```ts +const result = await generateText({ + model: __MODEL__, + tools: { + // Static tool with known types + weather: weatherTool, + // Dynamic tool with unknown types + custom: dynamicTool({ + /* ... */ + }), + }, + onStepFinish: ({ toolCalls, toolResults }) => { + for (const toolCall of toolCalls) { + if (toolCall.dynamic) { + // Dynamic tool: input/output are 'unknown' + console.log('Dynamic tool:', toolCall.toolName); + console.log('Input:', toolCall.input); + continue; + } + + // Static tools have full type inference + switch (toolCall.toolName) { + case 'weather': + // TypeScript knows the exact types + console.log(toolCall.input.location); // string + break; + } + } + }, +}); +``` + +## Usage with `useChat` + +When used with useChat (`UIMessage` format), dynamic tools appear as `dynamic-tool` parts: + +```tsx +{ + message.parts.map(part => { + switch (part.type) { + case 'dynamic-tool': + return ( +
+

Tool: {part.toolName}

+
{JSON.stringify(part.input, null, 2)}
+
+ ); + // ... handle other part types + } + }); +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx new file mode 100644 index 000000000..2d9009d20 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx @@ -0,0 +1,423 @@ +--- +title: createMCPClient +description: Create a client for connecting to MCP servers +--- + +# `createMCPClient()` + +Creates a lightweight Model Context Protocol (MCP) client that connects to an MCP server. The client provides: + +- **Tools**: Automatic conversion between MCP tools and AI SDK tools +- **Resources**: Methods to list, read, and discover resource templates from MCP servers +- **Prompts**: Methods to list available prompts and retrieve prompt messages +- **Elicitation**: Support for handling server requests for additional input during tool execution + +It currently does not support accepting notifications from an MCP server, and custom configuration of the client. + +## Import + + + +## API Signature + +### Parameters + + Promise', + description: 'A method that starts the transport', + }, + { + name: 'send', + type: '(message: JSONRPCMessage) => Promise', + description: + 'A method that sends a message through the transport', + }, + { + name: 'close', + type: '() => Promise', + description: 'A method that closes the transport', + }, + { + name: 'onclose', + type: '() => void', + description: + 'A method that is called when the transport is closed', + }, + { + name: 'onerror', + type: '(error: Error) => void', + description: + 'A method that is called when the transport encounters an error', + }, + { + name: 'onmessage', + type: '(message: JSONRPCMessage) => void', + description: + 'A method that is called when the transport receives a message', + }, + ], + }, + { + type: 'MCPTransportConfig', + parameters: [ + { + name: 'type', + type: "'sse' | 'http", + description: 'Use Server-Sent Events for communication', + }, + { + name: 'url', + type: 'string', + description: 'URL of the MCP server', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: + 'Additional HTTP headers to be sent with requests.', + }, + { + name: 'authProvider', + type: 'OAuthClientProvider', + isOptional: true, + description: + 'Optional OAuth provider for authorization to access protected remote MCP servers.', + }, + { + name: 'redirect', + type: "'follow' | 'error'", + isOptional: true, + description: + "Controls how HTTP redirects are handled for transport requests. Set to 'error' to reject any redirect response, preventing servers from redirecting requests to unintended hosts. Defaults to 'follow'.", + }, + ], + }, + ], + }, + { + name: 'name', + type: 'string', + isOptional: true, + description: 'Client name. Defaults to "ai-sdk-mcp-client"', + }, + { + name: 'version', + type: 'string', + isOptional: true, + description: 'Client version. Defaults to "1.0.0"', + }, + { + name: 'onUncaughtError', + type: '(error: unknown) => void', + isOptional: true, + description: 'Handler for uncaught errors', + }, + { + name: 'capabilities', + type: 'ClientCapabilities', + isOptional: true, + description: + 'Optional client capabilities to advertise during initialization. For example, set { elicitation: {} } to enable handling elicitation requests from the server.', + }, + ], + }, + ], + }, + ]} +/> + +### Returns + +Returns a Promise that resolves to an `MCPClient` with the following methods: + + Promise>`, + description: 'Gets the tools available from the MCP server.', + properties: [ + { + type: 'options', + parameters: [ + { + name: 'schemas', + type: 'TOOL_SCHEMAS', + isOptional: true, + description: + 'Schema definitions for compile-time type checking. When not provided, schemas are inferred from the server. Each tool schema can include inputSchema for typed inputs, and optionally outputSchema for typed outputs when the server returns structuredContent.', + }, + ], + }, + { + type: 'TOOL_SCHEMAS', + parameters: [ + { + name: 'inputSchema', + type: 'FlexibleSchema', + description: + 'Zod schema or JSON schema defining the expected input parameters for the tool.', + }, + { + name: 'outputSchema', + type: 'FlexibleSchema', + isOptional: true, + description: + 'Zod schema or JSON schema defining the expected output structure. When provided, the client extracts and validates structuredContent from tool results, giving you typed outputs.', + }, + ], + }, + ], + }, + { + name: 'listResources', + type: `async (options?: { + params?: PaginatedRequest['params']; + options?: RequestOptions; + }) => Promise`, + description: 'Lists all available resources from the MCP server.', + properties: [ + { + type: 'options', + parameters: [ + { + name: 'params', + type: "PaginatedRequest['params']", + isOptional: true, + description: 'Optional pagination parameters including cursor.', + }, + { + name: 'options', + type: 'RequestOptions', + isOptional: true, + description: + 'Optional request options including signal and timeout.', + }, + ], + }, + ], + }, + { + name: 'readResource', + type: `async (args: { + uri: string; + options?: RequestOptions; + }) => Promise`, + description: 'Reads the contents of a specific resource by URI.', + properties: [ + { + type: 'args', + parameters: [ + { + name: 'uri', + type: 'string', + description: 'The URI of the resource to read.', + }, + { + name: 'options', + type: 'RequestOptions', + isOptional: true, + description: + 'Optional request options including signal and timeout.', + }, + ], + }, + ], + }, + { + name: 'listResourceTemplates', + type: `async (options?: { + options?: RequestOptions; + }) => Promise`, + description: + 'Lists all available resource templates from the MCP server.', + properties: [ + { + type: 'options', + parameters: [ + { + name: 'options', + type: 'RequestOptions', + isOptional: true, + description: + 'Optional request options including signal and timeout.', + }, + ], + }, + ], + }, + { + name: 'experimental_listPrompts', + type: `async (options?: { + params?: PaginatedRequest['params']; + options?: RequestOptions; + }) => Promise`, + description: + 'Lists available prompts from the MCP server. This method is experimental and may change in the future.', + properties: [ + { + type: 'options', + parameters: [ + { + name: 'params', + type: "PaginatedRequest['params']", + isOptional: true, + description: 'Optional pagination parameters including cursor.', + }, + { + name: 'options', + type: 'RequestOptions', + isOptional: true, + description: + 'Optional request options including signal and timeout.', + }, + ], + }, + ], + }, + { + name: 'experimental_getPrompt', + type: `async (args: { + name: string; + arguments?: Record; + options?: RequestOptions; + }) => Promise`, + description: + 'Retrieves a prompt by name, optionally passing arguments. This method is experimental and may change in the future.', + properties: [ + { + type: 'args', + parameters: [ + { + name: 'name', + type: 'string', + description: 'Prompt name to retrieve.', + }, + { + name: 'arguments', + type: 'Record', + isOptional: true, + description: 'Optional arguments to fill into the prompt.', + }, + { + name: 'options', + type: 'RequestOptions', + isOptional: true, + description: + 'Optional request options including signal and timeout.', + }, + ], + }, + ], + }, + { + name: 'onElicitationRequest', + type: `( + schema: typeof ElicitationRequestSchema, + handler: (request: ElicitationRequest) => Promise | ElicitResult + ) => void`, + description: + 'Registers a handler for elicitation requests from the MCP server. The handler receives requests when the server needs additional input during tool execution.', + properties: [ + { + type: 'parameters', + parameters: [ + { + name: 'schema', + type: 'typeof ElicitationRequestSchema', + description: + 'The schema to validate requests against. Must be ElicitationRequestSchema.', + }, + { + name: 'handler', + type: '(request: ElicitationRequest) => Promise | ElicitResult', + description: + 'A function that handles the elicitation request. The request contains a message and requestedSchema. The handler must return an object with an action ("accept", "decline", or "cancel") and optionally content when accepting.', + }, + ], + }, + ], + }, + { + name: 'close', + type: '() => Promise', + description: + 'Closes the connection to the MCP server and cleans up resources.', + }, + ]} +/> + +## Example + +```typescript +import { createMCPClient } from '@ai-sdk/mcp'; +import { generateText } from 'ai'; +import { Experimental_StdioMCPTransport } from '@ai-sdk/mcp/mcp-stdio'; + +let client; + +try { + client = await createMCPClient({ + transport: new Experimental_StdioMCPTransport({ + command: 'node server.js', + }), + }); + + const tools = await client.tools(); + + const response = await generateText({ + model: __MODEL__, + tools, + messages: [{ role: 'user', content: 'Query the data' }], + }); + + console.log(response); +} catch (error) { + console.error('Error:', error); +} finally { + // ensure the client is closed even if an error occurs + if (client) { + await client.close(); + } +} +``` + +## Error Handling + +The client throws `MCPClientError` for: + +- Client initialization failures +- Protocol version mismatches +- Missing server capabilities +- Connection failures + +For tool execution, errors are propagated as `CallToolError` errors. + +For unknown errors, the client exposes an `onUncaughtError` callback that can be used to manually log or handle errors that are not covered by known error types. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/24-mcp-stdio-transport.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/24-mcp-stdio-transport.mdx new file mode 100644 index 000000000..63dc5b0db --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/24-mcp-stdio-transport.mdx @@ -0,0 +1,68 @@ +--- +title: Experimental_StdioMCPTransport +description: Create a transport for Model Context Protocol (MCP) clients to communicate with MCP servers using standard input and output streams +--- + +# `Experimental_StdioMCPTransport` + +Creates a transport for Model Context Protocol (MCP) clients to communicate with MCP servers using standard input and output streams. This transport is only supported in Node.js environments. + +This feature is experimental and may change or be removed in the future. + +## Import + + + +## API Signature + +### Parameters + +', + isOptional: true, + description: + 'The environment variables to set for the MCP server.', + }, + { + name: 'stderr', + type: 'IOType | Stream | number', + isOptional: true, + description: "The stream to write the MCP server's stderr to.", + }, + { + name: 'cwd', + type: 'string', + isOptional: true, + description: 'The current working directory for the MCP server.', + }, + ], + }, + ], + }, + ]} +/> diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/25-json-schema.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/25-json-schema.mdx new file mode 100644 index 000000000..75f9e11f6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/25-json-schema.mdx @@ -0,0 +1,94 @@ +--- +title: jsonSchema +description: Helper function for creating JSON schemas +--- + +# `jsonSchema()` + +`jsonSchema` is a helper function that creates a JSON schema object that is compatible with the AI SDK. +It takes the JSON schema and an optional validation function as inputs, and can be typed. + +You can use it to [generate structured data](/docs/ai-sdk-core/generating-structured-data) and in [tools](/docs/ai-sdk-core/tools-and-tool-calling). + +`jsonSchema` is an alternative to using Zod schemas that provides you with flexibility in dynamic situations +(e.g. when using OpenAPI definitions) or for using other validation libraries. + +```ts +import { jsonSchema } from 'ai'; + +const mySchema = jsonSchema<{ + recipe: { + name: string; + ingredients: { name: string; amount: string }[]; + steps: string[]; + }; +}>({ + type: 'object', + properties: { + recipe: { + type: 'object', + properties: { + name: { type: 'string' }, + ingredients: { + type: 'array', + items: { + type: 'object', + properties: { + name: { type: 'string' }, + amount: { type: 'string' }, + }, + required: ['name', 'amount'], + }, + }, + steps: { + type: 'array', + items: { type: 'string' }, + }, + }, + required: ['name', 'ingredients', 'steps'], + }, + }, + required: ['recipe'], +}); +``` + +## Import + + + +## API Signature + +### Parameters + + { success: true; value: OBJECT } | { success: false; error: Error };', + description: + 'A function that validates the value against the JSON schema. If the value is valid, the function should return an object with a `success` property set to `true` and a `value` property set to the validated value. If the value is invalid, the function should return an object with a `success` property set to `false` and an `error` property set to the error.', + }, + ], + }, + ], + }, + ]} +/> + +### Returns + +A JSON schema object that is compatible with the AI SDK. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/26-zod-schema.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/26-zod-schema.mdx new file mode 100644 index 000000000..5293083d0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/26-zod-schema.mdx @@ -0,0 +1,109 @@ +--- +title: zodSchema +description: Helper function for creating Zod schemas +--- + +# `zodSchema()` + +`zodSchema` is a helper function that converts a Zod schema into a JSON schema object that is compatible with the AI SDK. +It takes a Zod schema and optional configuration as inputs, and returns a typed schema. + +You can use it to [generate structured data](/docs/ai-sdk-core/generating-structured-data) and in [tools](/docs/ai-sdk-core/tools-and-tool-calling). + + + You can also pass Zod objects directly to the AI SDK functions. Internally, + the AI SDK will convert the Zod schema to a JSON schema using `zodSchema()`. + However, if you want to specify options such as `useReferences`, you can pass + the `zodSchema()` helper function instead. + + + + When using `.meta()` or `.describe()` to add metadata to your Zod schemas, + make sure these methods are called **at the end** of the schema chain. + + metadata is attached to a specific schema + instance, and most schema methods (`.min()`, `.optional()`, `.extend()`, etc.) + return a new schema instance that does not inherit metadata from the previous one. + Due to Zod's immutability, metadata is only included in the JSON schema output + if `.meta()` or `.describe()` is the last method in the chain. + +```ts +// ❌ Metadata will be lost - .min() returns a new instance without metadata +z.string().meta({ describe: 'first name' }).min(1); + +// ✅ Metadata is preserved - .meta() is the final method +z.string().min(1).meta({ describe: 'first name' }); +``` + + + +## Example with recursive schemas + +```ts +import { zodSchema } from 'ai'; +import { z } from 'zod'; + +// Define a base category schema +const baseCategorySchema = z.object({ + name: z.string(), +}); + +// Define the recursive Category type +type Category = z.infer & { + subcategories: Category[]; +}; + +// Create the recursive schema using z.lazy +const categorySchema: z.ZodType = baseCategorySchema.extend({ + subcategories: z.lazy(() => categorySchema.array()), +}); + +// Create the final schema with useReferences enabled for recursive support +const mySchema = zodSchema( + z.object({ + category: categorySchema, + }), + { useReferences: true }, +); +``` + +## Import + + + +## API Signature + +### Parameters + + + +### Returns + +A Schema object that is compatible with the AI SDK, containing both the JSON schema representation and validation functionality. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/27-valibot-schema.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/27-valibot-schema.mdx new file mode 100644 index 000000000..6a90e144b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/27-valibot-schema.mdx @@ -0,0 +1,58 @@ +--- +title: valibotSchema +description: Helper function for creating Valibot schemas +--- + +# `valibotSchema()` + +`valibotSchema` is a helper function that converts a Valibot schema into a JSON schema object +that is compatible with the AI SDK. +It takes a Valibot schema as input, and returns a typed schema. + +You can use it to [generate structured data](/docs/ai-sdk-core/generating-structured-data) and +in [tools](/docs/ai-sdk-core/tools-and-tool-calling). + +## Example + +```ts +import { valibotSchema } from '@ai-sdk/valibot'; +import { object, string, array } from 'valibot'; + +const recipeSchema = valibotSchema( + object({ + name: string(), + ingredients: array( + object({ + name: string(), + amount: string(), + }), + ), + steps: array(string()), + }), +); +``` + +## Import + + + +## API Signature + +### Parameters + +', + description: 'The Valibot schema definition.', + }, + ]} +/> + +### Returns + +A Schema object that is compatible with the AI SDK, containing both the JSON schema representation and validation functionality. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/28-output.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/28-output.mdx new file mode 100644 index 000000000..d06cf473e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/28-output.mdx @@ -0,0 +1,342 @@ +--- +title: Output +description: API Reference for Output. +--- + +# `Output` + +The `Output` object provides output specifications for structured data generation with [`generateText`](/docs/reference/ai-sdk-core/generate-text) and [`streamText`](/docs/reference/ai-sdk-core/stream-text). It allows you to specify the expected shape of the generated data and handles validation automatically. + +```ts +import { generateText, Output } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const { output } = await generateText({ + model: __MODEL__, + output: Output.object({ + schema: z.object({ + name: z.string(), + age: z.number(), + }), + }), + prompt: 'Generate a user profile.', +}); +``` + +## Import + + + +## Output Types + +### `Output.text()` + +Output specification for plain text generation. This is the default behavior when no `output` is specified. + +```ts +import { generateText, Output } from 'ai'; + +const { output } = await generateText({ + model: yourModel, + output: Output.text(), + prompt: 'Tell me a joke.', +}); +// output is a string +``` + +#### Parameters + +No parameters required. + +#### Returns + +An `Output` specification that generates plain text without schema validation. + +--- + +### `Output.object()` + +Output specification for typed object generation using schemas. The output is validated against the provided schema to ensure type safety. + +```ts +import { generateText, Output } from 'ai'; +import { z } from 'zod'; + +const { output } = await generateText({ + model: yourModel, + output: Output.object({ + schema: z.object({ + name: z.string(), + age: z.number().nullable(), + labels: z.array(z.string()), + }), + }), + prompt: 'Generate information for a test user.', +}); +// output matches the schema type +``` + +#### Parameters + +', + description: + 'The schema that defines the structure of the object to generate. Supports Zod schemas, Standard JSON schemas, and custom JSON schemas.', + }, + { + name: 'name', + type: 'string', + isOptional: true, + description: + 'Optional name of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema name.', + }, + { + name: 'description', + type: 'string', + isOptional: true, + description: + 'Optional description of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema description.', + }, + ]} +/> + +#### Returns + +An `Output>` specification where: + +- Complete output is fully validated against the schema +- Partial output (during streaming) is a deep partial version of the schema type + + + Partial outputs streamed via `streamText` cannot be validated against your + provided schema, as incomplete data may not yet conform to the expected + structure. + + +--- + +### `Output.array()` + +Output specification for generating arrays of typed elements. Each element is validated against the provided element schema. + +```ts +import { generateText, Output } from 'ai'; +import { z } from 'zod'; + +const { output } = await generateText({ + model: yourModel, + output: Output.array({ + element: z.object({ + location: z.string(), + temperature: z.number(), + condition: z.string(), + }), + }), + prompt: 'List the weather for San Francisco and Paris.', +}); +// output is an array of weather objects +``` + +#### Parameters + +', + description: + 'The schema that defines the structure of each array element. Supports Zod schemas, Valibot schemas, or JSON schemas.', + }, + { + name: 'name', + type: 'string', + isOptional: true, + description: + 'Optional name of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema name.', + }, + { + name: 'description', + type: 'string', + isOptional: true, + description: + 'Optional description of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema description.', + }, + ]} +/> + +#### Returns + +An `Output, Array>` specification where: + +- Complete output is an array with all elements validated +- Partial output contains only fully validated elements (incomplete elements are excluded) + +#### Streaming with `elementStream` + +When using `streamText` with `Output.array()`, you can iterate over elements as they are generated using `elementStream`: + +```ts +import { streamText, Output } from 'ai'; +import { z } from 'zod'; + +const { elementStream } = streamText({ + model: yourModel, + output: Output.array({ + element: z.object({ + name: z.string(), + class: z.string(), + description: z.string(), + }), + }), + prompt: 'Generate 3 hero descriptions for a fantasy role playing game.', +}); + +for await (const hero of elementStream) { + console.log(hero); // Each hero is complete and validated +} +``` + + + Each element emitted by `elementStream` is complete and validated against your + element schema, ensuring type safety for each item as it is generated. + + +--- + +### `Output.choice()` + +Output specification for selecting from a predefined set of string options. Useful for classification tasks or fixed-enum answers. + +```ts +import { generateText, Output } from 'ai'; + +const { output } = await generateText({ + model: yourModel, + output: Output.choice({ + options: ['sunny', 'rainy', 'snowy'] as const, + }), + prompt: 'Is the weather sunny, rainy, or snowy today?', +}); +// output is 'sunny' | 'rainy' | 'snowy' +``` + +#### Parameters + +', + description: + 'An array of string options that the model can choose from. The output will be exactly one of these values.', + }, + { + name: 'name', + type: 'string', + isOptional: true, + description: + 'Optional name of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema name.', + }, + { + name: 'description', + type: 'string', + isOptional: true, + description: + 'Optional description of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema description.', + }, + ]} +/> + +#### Returns + +An `Output` specification where: + +- Complete output is validated to be exactly one of the provided options + +--- + +### `Output.json()` + +Output specification for unstructured JSON generation. Use this when you want to generate arbitrary JSON without enforcing a specific schema. + +```ts +import { generateText, Output } from 'ai'; + +const { output } = await generateText({ + model: yourModel, + output: Output.json(), + prompt: + 'For each city, return the current temperature and weather condition as a JSON object.', +}); +// output is any valid JSON value +``` + +#### Parameters + + + +#### Returns + +An `Output` specification that: + +- Validates that the output is valid JSON +- Does not enforce any specific structure + + + With `Output.json()`, the AI SDK only checks that the response is valid JSON; + it doesn't validate the structure or types of the values. If you need schema + validation, use `Output.object()` or `Output.array()` instead. + + +## Error Handling + +When `generateText` with structured output cannot generate a valid object, it throws a [`NoObjectGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-object-generated-error). + +```ts +import { generateText, Output, NoObjectGeneratedError } from 'ai'; + +try { + await generateText({ + model: yourModel, + output: Output.object({ schema }), + prompt: 'Generate a user profile.', + }); +} catch (error) { + if (NoObjectGeneratedError.isInstance(error)) { + console.log('NoObjectGeneratedError'); + console.log('Cause:', error.cause); + console.log('Text:', error.text); + console.log('Response:', error.response); + console.log('Usage:', error.usage); + } +} +``` + +## See also + +- [Generating Structured Data](/docs/ai-sdk-core/generating-structured-data) +- [`generateText()`](/docs/reference/ai-sdk-core/generate-text) +- [`streamText()`](/docs/reference/ai-sdk-core/stream-text) +- [`zod-schema`](/docs/reference/ai-sdk-core/zod-schema) +- [`json-schema`](/docs/reference/ai-sdk-core/json-schema) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/30-model-message.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/30-model-message.mdx new file mode 100644 index 000000000..8e108ffe6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/30-model-message.mdx @@ -0,0 +1,415 @@ +--- +title: ModelMessage +description: Message types for AI SDK Core (API Reference) +--- + +# `ModelMessage` + +`ModelMessage` represents the fundamental message structure used with AI SDK Core functions. +It encompasses various message types that can be used in the `messages` field of any AI SDK Core functions. + +You can access the Zod schema for `ModelMessage` with the `modelMessageSchema` export. + +## `ModelMessage` Types + +### `SystemModelMessage` + +A system message that can contain system information. + +```typescript +type SystemModelMessage = { + role: 'system'; + content: string; +}; +``` + +You can access the Zod schema for `SystemModelMessage` with the `systemModelMessageSchema` export. + + + Using the "system" property instead of a system message is recommended to + enhance resilience against prompt injection attacks. + + +### `UserModelMessage` + +A user message that can contain text or a combination of text, images, and files. + +```typescript +type UserModelMessage = { + role: 'user'; + content: UserContent; +}; + +type UserContent = string | Array; +``` + +You can access the Zod schema for `UserModelMessage` with the `userModelMessageSchema` export. + +### `AssistantModelMessage` + +An assistant message that can contain text, tool calls, or a combination of both. + +```typescript +type AssistantModelMessage = { + role: 'assistant'; + content: AssistantContent; +}; + +type AssistantContent = string | Array; +``` + +You can access the Zod schema for `AssistantModelMessage` with the `assistantModelMessageSchema` export. + +### `ToolModelMessage` + +A tool message that contains the result of one or more tool calls. + +```typescript +type ToolModelMessage = { + role: 'tool'; + content: ToolContent; +}; + +type ToolContent = Array; +``` + +You can access the Zod schema for `ToolModelMessage` with the `toolModelMessageSchema` export. + +## `ModelMessage` Parts + +### `TextPart` + +Represents a text content part of a prompt. It contains a string of text. + +```typescript +export interface TextPart { + type: 'text'; + /** + * The text content. + */ + text: string; +} +``` + +### `ImagePart` + +Represents an image part in a user message. + +```typescript +export interface ImagePart { + type: 'image'; + + /** + * Image data. Can either be: + * - data: a base64-encoded string, a Uint8Array, an ArrayBuffer, or a Buffer + * - URL: a URL that points to the image + */ + image: DataContent | URL; + + /** + * Optional IANA media type of the image. + * We recommend leaving this out as it will be detected automatically. + */ + mediaType?: string; +} +``` + +### `FilePart` + +Represents a file part in a user message. + +```typescript +export interface FilePart { + type: 'file'; + + /** + * File data. Can either be: + * - data: a base64-encoded string, a Uint8Array, an ArrayBuffer, or a Buffer + * - URL: a URL that points to the file + */ + data: DataContent | URL; + + /** + * Optional filename of the file. + */ + filename?: string; + + /** + * IANA media type of the file. + */ + mediaType: string; +} +``` + +### `ToolCallPart` + +Represents a tool call content part of a prompt, typically generated by the AI model. + +```typescript +export interface ToolCallPart { + type: 'tool-call'; + + /** + * ID of the tool call. This ID is used to match the tool call with the tool result. + */ + toolCallId: string; + + /** + * Name of the tool that is being called. + */ + toolName: string; + + /** + * Arguments of the tool call. This is a JSON-serializable object that matches the tool's input schema. + */ + args: unknown; +} +``` + +### `ToolResultPart` + +Represents the result of a tool call in a tool message. + +```typescript +export interface ToolResultPart { + type: 'tool-result'; + + /** + * ID of the tool call that this result is associated with. + */ + toolCallId: string; + + /** + * Name of the tool that generated this result. + */ + toolName: string; + + /** + * Result of the tool call. This is a JSON-serializable object. + */ + output: LanguageModelV3ToolResultOutput; + + /** + Additional provider-specific metadata. They are passed through + to the provider from the AI SDK and enable provider-specific + functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; +} +``` + +### `LanguageModelV3ToolResultOutput` + +```ts +/** + * Output of a tool result. + */ +export type ToolResultOutput = + | { + /** + * Text tool output that should be directly sent to the API. + */ + type: 'text'; + value: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + type: 'json'; + value: JSONValue; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + /** + * Type when the user has denied the execution of the tool call. + */ + type: 'execution-denied'; + + /** + * Optional reason for the execution denial. + */ + reason?: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + type: 'error-text'; + value: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + type: 'error-json'; + value: JSONValue; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + type: 'content'; + value: Array< + | { + type: 'text'; + + /** +Text content. +*/ + text: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + /** + * @deprecated Use image-data or file-data instead. + */ + type: 'media'; + data: string; + mediaType: string; + } + | { + type: 'file-data'; + + /** +Base-64 encoded media data. +*/ + data: string; + + /** +IANA media type. +@see https://www.iana.org/assignments/media-types/media-types.xhtml +*/ + mediaType: string; + + /** + * Optional filename of the file. + */ + filename?: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + type: 'file-url'; + + /** + * URL of the file. + */ + url: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + type: 'file-id'; + + /** + * ID of the file. + * + * If you use multiple providers, you need to + * specify the provider specific ids using + * the Record option. The key is the provider + * name, e.g. 'openai' or 'anthropic'. + */ + fileId: string | Record; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + /** + * Images that are referenced using base64 encoded data. + */ + type: 'image-data'; + + /** +Base-64 encoded image data. +*/ + data: string; + + /** +IANA media type. +@see https://www.iana.org/assignments/media-types/media-types.xhtml +*/ + mediaType: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + /** + * Images that are referenced using a URL. + */ + type: 'image-url'; + + /** + * URL of the image. + */ + url: string; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + /** + * Images that are referenced using a provider file id. + */ + type: 'image-file-id'; + + /** + * Image that is referenced using a provider file id. + * + * If you use multiple providers, you need to + * specify the provider specific ids using + * the Record option. The key is the provider + * name, e.g. 'openai' or 'anthropic'. + */ + fileId: string | Record; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + | { + /** + * Custom content part. This can be used to implement + * provider-specific content parts. + */ + type: 'custom'; + + /** + * Provider-specific options. + */ + providerOptions?: ProviderOptions; + } + >; + }; +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx new file mode 100644 index 000000000..a2e9fc956 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx @@ -0,0 +1,246 @@ +--- +title: UIMessage +description: API Reference for UIMessage +--- + +# `UIMessage` + +`UIMessage` serves as the source of truth for your application's state, representing the complete message history including metadata, data parts, and all contextual information. In contrast to `ModelMessage`, which represents the state or context passed to the model, `UIMessage` contains the full application state needed for UI rendering and client-side functionality. + +## Type Safety + +`UIMessage` is designed to be type-safe and accepts three generic parameters to ensure proper typing throughout your application: + +1. **`METADATA`** - Custom metadata type for additional message information +2. **`DATA_PARTS`** - Custom data part types for structured data components +3. **`TOOLS`** - Tool definitions for type-safe tool interactions + +## Creating Your Own UIMessage Type + +Here's an example of how to create a custom typed UIMessage for your application: + +```typescript +import { InferUITools, ToolSet, UIMessage, tool } from 'ai'; +import z from 'zod'; + +const metadataSchema = z.object({ + someMetadata: z.string().datetime(), +}); + +type MyMetadata = z.infer; + +const dataPartSchema = z.object({ + someDataPart: z.object({}), + anotherDataPart: z.object({}), +}); + +type MyDataPart = z.infer; + +const tools = { + someTool: tool({}), +} satisfies ToolSet; + +type MyTools = InferUITools; + +export type MyUIMessage = UIMessage; +``` + +## `UIMessage` Interface + +```typescript +interface UIMessage< + METADATA = unknown, + DATA_PARTS extends UIDataTypes = UIDataTypes, + TOOLS extends UITools = UITools, +> { + /** + * A unique identifier for the message. + */ + id: string; + + /** + * The role of the message. + */ + role: 'system' | 'user' | 'assistant'; + + /** + * The metadata of the message. + */ + metadata?: METADATA; + + /** + * The parts of the message. Use this for rendering the message in the UI. + */ + parts: Array>; +} +``` + +## `UIMessagePart` Types + +### `TextUIPart` + +A text part of a message. + +```typescript +type TextUIPart = { + type: 'text'; + /** + * The text content. + */ + text: string; + /** + * The state of the text part. + */ + state?: 'streaming' | 'done'; +}; +``` + +### `ReasoningUIPart` + +A reasoning part of a message. + +```typescript +type ReasoningUIPart = { + type: 'reasoning'; + /** + * The reasoning text. + */ + text: string; + /** + * The state of the reasoning part. + */ + state?: 'streaming' | 'done'; + /** + * The provider metadata. + */ + providerMetadata?: Record; +}; +``` + +### `ToolUIPart` + +A tool part of a message that represents tool invocations and their results. + + + The type is based on the name of the tool (e.g., `tool-someTool` for a tool + named `someTool`). + + +```typescript +type ToolUIPart = ValueOf<{ + [NAME in keyof TOOLS & string]: { + type: `tool-${NAME}`; + toolCallId: string; + } & ( + | { + state: 'input-streaming'; + input: DeepPartial | undefined; + providerExecuted?: boolean; + output?: never; + errorText?: never; + } + | { + state: 'input-available'; + input: TOOLS[NAME]['input']; + providerExecuted?: boolean; + output?: never; + errorText?: never; + } + | { + state: 'output-available'; + input: TOOLS[NAME]['input']; + output: TOOLS[NAME]['output']; + errorText?: never; + providerExecuted?: boolean; + } + | { + state: 'output-error'; + input: TOOLS[NAME]['input']; + output?: never; + errorText: string; + providerExecuted?: boolean; + } + ); +}>; +``` + +### `SourceUrlUIPart` + +A source URL part of a message. + +```typescript +type SourceUrlUIPart = { + type: 'source-url'; + sourceId: string; + url: string; + title?: string; + providerMetadata?: Record; +}; +``` + +### `SourceDocumentUIPart` + +A document source part of a message. + +```typescript +type SourceDocumentUIPart = { + type: 'source-document'; + sourceId: string; + mediaType: string; + title: string; + filename?: string; + providerMetadata?: Record; +}; +``` + +### `FileUIPart` + +A file part of a message. + +```typescript +type FileUIPart = { + type: 'file'; + /** + * IANA media type of the file. + */ + mediaType: string; + /** + * Optional filename of the file. + */ + filename?: string; + /** + * The URL of the file. + * It can either be a URL to a hosted file or a Data URL. + */ + url: string; +}; +``` + +### `DataUIPart` + +A data part of a message for custom data types. + + + The type is based on the name of the data part (e.g., `data-someDataPart` for + a data part named `someDataPart`). + + +```typescript +type DataUIPart = ValueOf<{ + [NAME in keyof DATA_TYPES & string]: { + type: `data-${NAME}`; + id?: string; + data: DATA_TYPES[NAME]; + }; +}>; +``` + +### `StepStartUIPart` + +A step boundary part of a message. + +```typescript +type StepStartUIPart = { + type: 'step-start'; +}; +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/32-validate-ui-messages.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/32-validate-ui-messages.mdx new file mode 100644 index 000000000..1c30ff1a2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/32-validate-ui-messages.mdx @@ -0,0 +1,101 @@ +--- +title: validateUIMessages +description: API Reference for validateUIMessages +--- + +# `validateUIMessages` + +`validateUIMessages` is an async function that validates UI messages against schemas for metadata, data parts, and tools. It ensures type safety and data integrity for your message arrays before processing or rendering. + +## Basic Usage + +Simple validation without custom schemas: + +```typescript +import { validateUIMessages } from 'ai'; + +const messages = [ + { + id: '1', + role: 'user', + parts: [{ type: 'text', text: 'Hello!' }], + }, +]; + +const validatedMessages = await validateUIMessages({ + messages, +}); +``` + +## Advanced Usage + +Comprehensive validation with custom metadata, data parts, and tools: + +```typescript +import { validateUIMessages, tool } from 'ai'; +import { z } from 'zod'; + +// Define schemas +const metadataSchema = z.object({ + timestamp: z.string().datetime(), + userId: z.string(), +}); + +const dataSchemas = { + chart: z.object({ + data: z.array(z.number()), + labels: z.array(z.string()), + }), + image: z.object({ + url: z.string().url(), + caption: z.string(), + }), +}; + +const tools = { + weather: tool({ + description: 'Get weather info', + parameters: z.object({ + location: z.string(), + }), + execute: async ({ location }) => `Weather in ${location}: sunny`, + }), +}; + +// Messages with custom parts +const messages = [ + { + id: '1', + role: 'user', + metadata: { timestamp: '2024-01-01T00:00:00Z', userId: 'user123' }, + parts: [ + { type: 'text', text: 'Show me a chart' }, + { + type: 'data-chart', + data: { data: [1, 2, 3], labels: ['A', 'B', 'C'] }, + }, + ], + }, + { + id: '2', + role: 'assistant', + parts: [ + { + type: 'tool-weather', + toolCallId: 'call_123', + state: 'output-available', + input: { location: 'San Francisco' }, + output: 'Weather in San Francisco: sunny', + }, + ], + }, +]; + +// Validate with all schemas +const validatedMessages = await validateUIMessages({ + messages, + metadataSchema, + dataSchemas, + tools, +}); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/33-safe-validate-ui-messages.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/33-safe-validate-ui-messages.mdx new file mode 100644 index 000000000..2a4bd4a45 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/33-safe-validate-ui-messages.mdx @@ -0,0 +1,113 @@ +--- +title: safeValidateUIMessages +description: API Reference for safeValidateUIMessages +--- + +# `safeValidateUIMessages` + +`safeValidateUIMessages` is an async function that validates UI messages like [`validateUIMessages`](https://ai-sdk.dev/docs/reference/ai-sdk-core/validate-ui-messages), but instead of throwing it returns an object with a `success` key and either `data` or `error`. + +## Basic Usage + +Simple validation without custom schemas: + +```typescript +import { safeValidateUIMessages } from 'ai'; + +const messages = [ + { + id: '1', + role: 'user', + parts: [{ type: 'text', text: 'Hello!' }], + }, +]; + +const result = await safeValidateUIMessages({ + messages, +}); + +if (!result.success) { + console.error(result.error.message); +} else { + const validatedMessages = result.data; +} +``` + +## Advanced Usage + +Comprehensive validation with custom metadata, data parts, and tools: + +```typescript +import { safeValidateUIMessages, tool } from 'ai'; +import { z } from 'zod'; + +// Define schemas +const metadataSchema = z.object({ + timestamp: z.string().datetime(), + userId: z.string(), +}); + +const dataSchemas = { + chart: z.object({ + data: z.array(z.number()), + labels: z.array(z.string()), + }), + image: z.object({ + url: z.string().url(), + caption: z.string(), + }), +}; + +const tools = { + weather: tool({ + description: 'Get weather info', + parameters: z.object({ + location: z.string(), + }), + execute: async ({ location }) => `Weather in ${location}: sunny`, + }), +}; + +// Messages with custom parts +const messages = [ + { + id: '1', + role: 'user', + metadata: { timestamp: '2024-01-01T00:00:00Z', userId: 'user123' }, + parts: [ + { type: 'text', text: 'Show me a chart' }, + { + type: 'data-chart', + data: { data: [1, 2, 3], labels: ['A', 'B', 'C'] }, + }, + ], + }, + { + id: '2', + role: 'assistant', + parts: [ + { + type: 'tool-weather', + toolCallId: 'call_123', + state: 'output-available', + input: { location: 'San Francisco' }, + output: 'Weather in San Francisco: sunny', + }, + ], + }, +]; + +// Validate with all schemas +const result = await safeValidateUIMessages({ + messages, + metadataSchema, + dataSchemas, + tools, +}); + +if (!result.success) { + console.error(result.error.message); +} else { + const validatedMessages = result.data; +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx new file mode 100644 index 000000000..4b435d495 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx @@ -0,0 +1,198 @@ +--- +title: createProviderRegistry +description: Registry for managing multiple providers and models (API Reference) +--- + +# `createProviderRegistry()` + +When you work with multiple providers and models, it is often desirable to manage them +in a central place and access the models through simple string ids. + +`createProviderRegistry` lets you create a registry with multiple providers that you +can access by their ids in the format `providerId:modelId`. + +### Setup + +You can create a registry with multiple providers and models using `createProviderRegistry`. + +```ts +import { anthropic } from '@ai-sdk/anthropic'; +import { createOpenAI } from '@ai-sdk/openai'; +import { createProviderRegistry } from 'ai'; + +export const registry = createProviderRegistry({ + // register provider with prefix and default setup: + anthropic, + + // register provider with prefix and custom setup: + openai: createOpenAI({ + apiKey: process.env.OPENAI_API_KEY, + }), +}); +``` + +### Custom Separator + +By default, the registry uses `:` as the separator between provider and model IDs. You can customize this separator by passing a `separator` option: + +```ts +const registry = createProviderRegistry( + { + anthropic, + openai, + }, + { separator: ' > ' }, +); + +// Now you can use the custom separator +const model = registry.languageModel('anthropic > claude-3-opus-20240229'); +``` + +### Language models + +You can access language models by using the `languageModel` method on the registry. +The provider id will become the prefix of the model id: `providerId:modelId`. + +```ts highlight={"5"} +import { generateText } from 'ai'; +import { registry } from './registry'; + +const { text } = await generateText({ + model: registry.languageModel('openai:gpt-4.1'), + prompt: 'Invent a new holiday and describe its traditions.', +}); +``` + +### Text embedding models + +You can access text embedding models by using the `.embeddingModel` method on the registry. +The provider id will become the prefix of the model id: `providerId:modelId`. + +```ts highlight={"5"} +import { embed } from 'ai'; +import { registry } from './registry'; + +const { embedding } = await embed({ + model: registry.embeddingModel('openai:text-embedding-3-small'), + value: 'sunny day at the beach', +}); +``` + +### Image models + +You can access image models by using the `imageModel` method on the registry. +The provider id will become the prefix of the model id: `providerId:modelId`. + +```ts highlight={"5"} +import { generateImage } from 'ai'; +import { registry } from './registry'; + +const { image } = await generateImage({ + model: registry.imageModel('openai:dall-e-3'), + prompt: 'A beautiful sunset over a calm ocean', +}); +``` + +## Import + + + +## API Signature + +### Parameters + +', + description: + 'The unique identifier for the provider. It should be unique within the registry.', + properties: [ + { + type: 'Provider', + parameters: [ + { + name: 'languageModel', + type: '(id: string) => LanguageModel', + description: + 'A function that returns a language model by its id.', + }, + { + name: 'embeddingModel', + type: '(id: string) => EmbeddingModel', + description: + 'A function that returns a text embedding model by its id.', + }, + { + name: 'imageModel', + type: '(id: string) => ImageModel', + description: 'A function that returns an image model by its id.', + }, + ], + }, + ], + }, + { + name: 'options', + type: 'object', + isOptional: true, + description: 'Optional configuration for the registry.', + properties: [ + { + type: 'Options', + parameters: [ + { + name: 'separator', + type: 'string', + isOptional: true, + description: + 'Custom separator between provider and model IDs. Defaults to ":".', + }, + { + name: 'languageModelMiddleware', + type: 'LanguageModelMiddleware | LanguageModelMiddleware[]', + isOptional: true, + description: + 'Middleware to wrap all language models obtained from the registry.', + }, + { + name: 'imageModelMiddleware', + type: 'ImageModelMiddleware | ImageModelMiddleware[]', + isOptional: true, + description: + 'Middleware to wrap all image models obtained from the registry.', + }, + ], + }, + ], + }, + ]} +/> + +### Returns + +The `createProviderRegistry` function returns a `Provider` instance. It has the following methods: + + LanguageModel', + description: + 'A function that returns a language model by its id (format: providerId:modelId)', + }, + { + name: 'embeddingModel', + type: '(id: string) => EmbeddingModel', + description: + 'A function that returns a text embedding model by its id (format: providerId:modelId)', + }, + { + name: 'imageModel', + type: '(id: string) => ImageModel', + description: + 'A function that returns an image model by its id (format: providerId:modelId)', + }, + ]} +/> diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx new file mode 100644 index 000000000..7dd300923 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx @@ -0,0 +1,157 @@ +--- +title: customProvider +description: Custom provider that uses models from a different provider (API Reference) +--- + +# `customProvider()` + +With a custom provider, you can map ids to any model. +This allows you to set up custom model configurations, alias names, and more. +The custom provider also supports a fallback provider, which is useful for +wrapping existing providers and adding additional functionality. + +### Example: custom model settings + +You can create a custom provider using `customProvider`. + +```ts +import { openai } from '@ai-sdk/openai'; +import { customProvider } from 'ai'; + +// custom provider with different model settings: +export const myOpenAI = customProvider({ + languageModels: { + // replacement model with custom settings: + 'gpt-5': wrapLanguageModel({ + model: openai('gpt-5'), + middleware: defaultSettingsMiddleware({ + settings: { + providerOptions: { + openai: { + reasoningEffort: 'high', + }, + }, + }, + }), + }), + // alias model with custom settings: + 'gpt-4o-reasoning-high': wrapLanguageModel({ + model: openai('gpt-4o'), + middleware: defaultSettingsMiddleware({ + settings: { + providerOptions: { + openai: { + reasoningEffort: 'high', + }, + }, + }, + }), + }), + }, + fallbackProvider: openai, +}); +``` + +## Import + + + +## API Signature + +### Parameters + +', + isOptional: true, + description: + 'A record of language models, where keys are model IDs and values are LanguageModel instances.', + }, + { + name: '.embeddingModels', + type: 'Record>', + isOptional: true, + description: + 'A record of text embedding models, where keys are model IDs and values are EmbeddingModel instances.', + }, + { + name: 'imageModels', + type: 'Record', + isOptional: true, + description: + 'A record of image models, where keys are model IDs and values are image model instances.', + }, + { + name: 'transcriptionModels', + type: 'Record', + isOptional: true, + description: + 'A record of transcription models, where keys are model IDs and values are TranscriptionModel instances.', + }, + { + name: 'speechModels', + type: 'Record', + isOptional: true, + description: + 'A record of speech models, where keys are model IDs and values are SpeechModel instances.', + }, + { + name: 'rerankingModels', + type: 'Record', + isOptional: true, + description: + 'A record of reranking models, where keys are model IDs and values are RerankingModel instances.', + }, + { + name: 'fallbackProvider', + type: 'Provider', + isOptional: true, + description: + 'An optional fallback provider to use when a requested model is not found in the custom provider.', + }, + ]} +/> + +### Returns + +The `customProvider` function returns a `Provider` instance. It has the following methods: + + LanguageModel', + description: + 'A function that returns a language model by its id (format: providerId:modelId)', + }, + { + name: 'embeddingModel', + type: '(id: string) => EmbeddingModel', + description: + 'A function that returns a text embedding model by its id (format: providerId:modelId)', + }, + { + name: 'imageModel', + type: '(id: string) => ImageModel', + description: + 'A function that returns an image model by its id (format: providerId:modelId)', + }, + { + name: 'transcriptionModel', + type: '(id: string) => TranscriptionModel', + description: 'A function that returns a transcription model by its id.', + }, + { + name: 'speechModel', + type: '(id: string) => SpeechModel', + description: 'A function that returns a speech model by its id.', + }, + { + name: 'rerankingModel', + type: '(id: string) => RerankingModel', + description: 'A function that returns a reranking model by its id.', + }, + ]} +/> diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/50-cosine-similarity.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/50-cosine-similarity.mdx new file mode 100644 index 000000000..0788496ff --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/50-cosine-similarity.mdx @@ -0,0 +1,52 @@ +--- +title: cosineSimilarity +description: Calculate the cosine similarity between two vectors (API Reference) +--- + +# `cosineSimilarity()` + +When you want to compare the similarity of embeddings, standard vector similarity metrics +like cosine similarity are often used. + +`cosineSimilarity` calculates the cosine similarity between two vectors. +A high value (close to 1) indicates that the vectors are very similar, while a low value (close to -1) indicates that they are different. + +```ts +import { cosineSimilarity, embedMany } from 'ai'; + +const { embeddings } = await embedMany({ + model: 'openai/text-embedding-3-small', + values: ['sunny day at the beach', 'rainy afternoon in the city'], +}); + +console.log( + `cosine similarity: ${cosineSimilarity(embeddings[0], embeddings[1])}`, +); +``` + +## Import + + + +## API Signature + +### Parameters + + + +### Returns + +A number between -1 and 1 representing the cosine similarity between the two vectors. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx new file mode 100644 index 000000000..86a9013e7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx @@ -0,0 +1,59 @@ +--- +title: wrapLanguageModel +description: Function for wrapping a language model with middleware (API Reference) +--- + +# `wrapLanguageModel()` + +The `wrapLanguageModel` function provides a way to enhance the behavior of language models +by wrapping them with middleware. +See [Language Model Middleware](/docs/ai-sdk-core/middleware) for more information on middleware. + +```ts +import { wrapLanguageModel, gateway } from 'ai'; + +const wrappedLanguageModel = wrapLanguageModel({ + model: gateway('openai/gpt-4.1'), + middleware: yourLanguageModelMiddleware, +}); +``` + +## Import + + + +## API Signature + +### Parameters + + + +### Returns + +A new `LanguageModelV3` instance with middleware applied. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx new file mode 100644 index 000000000..eba0ad304 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx @@ -0,0 +1,64 @@ +--- +title: wrapImageModel +description: Function for wrapping an image model with middleware (API Reference) +--- + +# `wrapImageModel()` + +The `wrapImageModel` function provides a way to enhance the behavior of image models +by wrapping them with middleware. + +```ts +import { generateImage, wrapImageModel } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const model = wrapImageModel({ + model: openai.image('gpt-image-1'), + middleware: yourImageModelMiddleware, +}); + +const { image } = await generateImage({ + model, + prompt: 'Santa Claus driving a Cadillac', +}); +``` + +## Import + + + +## API Signature + +### Parameters + + + +### Returns + +A new `ImageModelV3` instance with middleware applied. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx new file mode 100644 index 000000000..23834c72b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx @@ -0,0 +1,74 @@ +--- +title: LanguageModelV3Middleware +description: Middleware for enhancing language model behavior (API Reference) +--- + +# `LanguageModelV3Middleware` + + + Language model middleware is an experimental feature. + + +Language model middleware provides a way to enhance the behavior of language models +by intercepting and modifying the calls to the language model. It can be used to add +features like guardrails, RAG, caching, and logging in a language model agnostic way. + +See [Language Model Middleware](/docs/ai-sdk-core/middleware) for more information. + +## Import + + + +## API Signature + + PromiseLike', + isOptional: true, + description: + 'Transforms the parameters before they are passed to the language model.', + }, + { + name: 'wrapGenerate', + type: '({ doGenerate: () => PromiseLike, doStream: () => PromiseLike, params: LanguageModelV3CallOptions, model: LanguageModelV3 }) => PromiseLike', + isOptional: true, + description: + 'Wraps the generate operation of the language model. Receives both doGenerate and doStream functions.', + }, + { + name: 'wrapStream', + type: '({ doGenerate: () => PromiseLike, doStream: () => PromiseLike, params: LanguageModelV3CallOptions, model: LanguageModelV3 }) => PromiseLike', + isOptional: true, + description: + 'Wraps the stream operation of the language model. Receives both doGenerate and doStream functions.', + }, + { + name: 'overrideProvider', + type: '(options: { model: LanguageModelV3 }) => string', + isOptional: true, + description: 'Override the provider ID of the model.', + }, + { + name: 'overrideModelId', + type: '(options: { model: LanguageModelV3 }) => string', + isOptional: true, + description: 'Override the model ID of the model.', + }, + { + name: 'overrideSupportedUrls', + type: '(options: { model: LanguageModelV3 }) => PromiseLike> | Record', + isOptional: true, + description: 'Override the supported URLs for the model.', + }, + ]} +/> diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx new file mode 100644 index 000000000..f9b1ed1d8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx @@ -0,0 +1,68 @@ +--- +title: extractReasoningMiddleware +description: Middleware that extracts XML-tagged reasoning sections from generated text +--- + +# `extractReasoningMiddleware()` + +`extractReasoningMiddleware` is a middleware function that extracts XML-tagged reasoning sections from generated text and exposes them separately from the main text content. This is particularly useful when you want to separate an AI model's reasoning process from its final output. + +```ts +import { extractReasoningMiddleware } from 'ai'; + +const middleware = extractReasoningMiddleware({ + tagName: 'reasoning', + separator: '\n', +}); +``` + +## Import + + + +## API Signature + +### Parameters + + + +### Returns + +Returns a middleware object that: + +- Processes both streaming and non-streaming responses +- Extracts content between specified XML tags as reasoning +- Removes the XML tags and reasoning from the main text +- Adds a `reasoning` property to the result containing the extracted content +- Maintains proper separation between text sections using the specified separator + +### Type Parameters + +The middleware works with the `LanguageModelV3StreamPart` type for streaming responses. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/67-simulate-streaming-middleware.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/67-simulate-streaming-middleware.mdx new file mode 100644 index 000000000..23900c299 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/67-simulate-streaming-middleware.mdx @@ -0,0 +1,71 @@ +--- +title: simulateStreamingMiddleware +description: Middleware that simulates streaming for non-streaming language models +--- + +# `simulateStreamingMiddleware()` + +`simulateStreamingMiddleware` is a middleware function that simulates streaming behavior with responses from non-streaming language models. This is useful when you want to maintain a consistent streaming interface even when using models that only provide complete responses. + +```ts +import { simulateStreamingMiddleware } from 'ai'; + +const middleware = simulateStreamingMiddleware(); +``` + +## Import + + + +## API Signature + +### Parameters + +This middleware doesn't accept any parameters. + +### Returns + +Returns a middleware object that: + +- Takes a complete response from a language model +- Converts it into a simulated stream of chunks +- Properly handles various response components including: + - Text content + - Reasoning (as string or array of objects) + - Tool calls + - Metadata and usage information + - Warnings + +### Usage Example + +```ts +import { streamText } from 'ai'; +import { wrapLanguageModel } from 'ai'; +import { simulateStreamingMiddleware } from 'ai'; + +// Example with a non-streaming model +const result = streamText({ + model: wrapLanguageModel({ + model: nonStreamingModel, + middleware: simulateStreamingMiddleware(), + }), + prompt: 'Your prompt here', +}); + +// Now you can use the streaming interface +for await (const chunk of result.fullStream) { + // Process streaming chunks +} +``` + +## How It Works + +The middleware: + +1. Awaits the complete response from the language model +2. Creates a `ReadableStream` that emits chunks in the correct sequence +3. Simulates streaming by breaking down the response into appropriate chunk types +4. Preserves all metadata, reasoning, tool calls, and other response properties diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx new file mode 100644 index 000000000..35a581ab5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx @@ -0,0 +1,80 @@ +--- +title: defaultSettingsMiddleware +description: Middleware that applies default settings for language models +--- + +# `defaultSettingsMiddleware()` + +`defaultSettingsMiddleware` is a middleware function that applies default settings to language model calls. This is useful when you want to establish consistent default parameters across multiple model invocations. + +```ts +import { defaultSettingsMiddleware } from 'ai'; + +const middleware = defaultSettingsMiddleware({ + settings: { + temperature: 0.7, + maxOutputTokens: 1000, + // other settings... + }, +}); +``` + +## Import + + + +## API Signature + +### Parameters + +The middleware accepts a configuration object with the following properties: + +- `settings`: An object containing default parameter values to apply to language model calls. These can include any valid `LanguageModelV3CallOptions` properties and optional provider metadata. + +### Returns + +Returns a middleware object that: + +- Merges the default settings with the parameters provided in each model call +- Ensures that explicitly provided parameters take precedence over defaults +- Merges provider metadata objects + +### Usage Example + +```ts +import { streamText, wrapLanguageModel, defaultSettingsMiddleware } from 'ai'; + +// Create a model with default settings +const modelWithDefaults = wrapLanguageModel({ + model: gateway('anthropic/claude-sonnet-4.5'), + middleware: defaultSettingsMiddleware({ + settings: { + providerOptions: { + openai: { + reasoningEffort: 'high', + }, + }, + }, + }), +}); + +// Use the model - default settings will be applied +const result = await streamText({ + model: modelWithDefaults, + prompt: 'Your prompt here', + // These parameters will override the defaults + temperature: 0.8, +}); +``` + +## How It Works + +The middleware: + +1. Takes a set of default settings as configuration +2. Merges these defaults with the parameters provided in each model call +3. Ensures that explicitly provided parameters take precedence over defaults +4. Merges provider metadata objects from both sources diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/69-add-tool-input-examples-middleware.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/69-add-tool-input-examples-middleware.mdx new file mode 100644 index 000000000..c2fa7e2c1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/69-add-tool-input-examples-middleware.mdx @@ -0,0 +1,155 @@ +--- +title: addToolInputExamplesMiddleware +description: Middleware that appends tool input examples to tool descriptions. +--- + +# `addToolInputExamplesMiddleware` + +`addToolInputExamplesMiddleware` is a middleware function that appends input examples to tool descriptions. This is especially useful for language model providers that **do not natively support the `inputExamples` property**—the middleware serializes and injects the examples into the tool's `description` so models can learn from them. + +## Import + + + +## API + +### Signature + +```ts +function addToolInputExamplesMiddleware(options?: { + prefix?: string; + format?: (example: { input: JSONObject }, index: number) => string; + remove?: boolean; +}): LanguageModelMiddleware; +``` + +### Parameters + + string', + isOptional: true, + description: + 'Optional custom formatter for each example. Receives the example object and its index. Default: JSON.stringify(example.input).', + }, + { + name: 'remove', + type: 'boolean', + isOptional: true, + description: + 'Whether to remove the `inputExamples` property from the tool after adding them to the description. Default: true.', + }, + ]} +/> + +### Returns + +A [LanguageModelMiddleware](/docs/ai-sdk-core/middleware) that: + +- Locates function tools with an `inputExamples` property. +- Serializes each input example (by default as JSON, or using your custom formatter). +- Prepends a section at the end of the tool description containing all formatted examples, prefixed by the `prefix`. +- Removes the `inputExamples` property from the tool (unless `remove: false`). +- Passes through all other tools (including those without examples) unchanged. + +## Usage Example + +```ts +import { + generateText, + tool, + wrapLanguageModel, + addToolInputExamplesMiddleware, +} from 'ai'; +import { openai } from '@ai-sdk/openai'; +import { z } from 'zod'; + +const model = wrapLanguageModel({ + model: __MODEL__, + middleware: addToolInputExamplesMiddleware({ + prefix: 'Input Examples:', + format: (example, index) => + `${index + 1}. ${JSON.stringify(example.input)}`, + }), +}); + +const result = await generateText({ + model, + tools: { + weather: tool({ + description: 'Get the weather in a location', + inputSchema: z.object({ location: z.string() }), + inputExamples: [ + { input: { location: 'San Francisco' } }, + { input: { location: 'London' } }, + ], + }), + }, + prompt: 'What is the weather in Tokyo?', +}); +``` + +## How It Works + +1. For every function tool that defines `inputExamples`, the middleware: + + - Formats each example with the `format` function (default: JSON.stringify). + - Builds a section like: + + ``` + Input Examples: + {"location":"San Francisco"} + {"location":"London"} + ``` + + - Appends this section to the end of the tool's `description`. + +2. By default, it removes the `inputExamples` property after appending to prevent duplication (can be disabled with `remove: false`). +3. Tools without input examples or non-function tools are left unmodified. + +> **Tip:** This middleware is especially useful with providers such as OpenAI or Anthropic, where native support for `inputExamples` is not available. + +## Example effect + +If your original tool definition is: + +```ts +{ + type: 'function', + name: 'weather', + description: 'Get the weather in a location', + inputSchema: { ... }, + inputExamples: [ + { input: { location: 'San Francisco' } }, + { input: { location: 'London' } } + ] +} +``` + +After applying the middleware (with default settings), the tool passed to the model will look like: + +```ts +{ + type: 'function', + name: 'weather', + description: `Get the weather in a location + +Input Examples: +{"location":"San Francisco"} +{"location":"London"}`, + inputSchema: { ... } + // inputExamples is removed by default +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/70-extract-json-middleware.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/70-extract-json-middleware.mdx new file mode 100644 index 000000000..ec9504c2b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/70-extract-json-middleware.mdx @@ -0,0 +1,147 @@ +--- +title: extractJsonMiddleware +description: Middleware that extracts JSON from text content by stripping markdown code fences +--- + +# `extractJsonMiddleware()` + +`extractJsonMiddleware` is a middleware function that extracts JSON from text content by stripping markdown code fences and other formatting. This is useful when using `Output.object()` with models that wrap JSON responses in markdown code blocks (e.g., ` ```json ... ``` `). + +```ts +import { extractJsonMiddleware } from 'ai'; + +const middleware = extractJsonMiddleware(); +``` + +## Import + + + +## API Signature + +### Parameters + + string', + isOptional: true, + description: + 'Custom transform function to apply to text content. Receives the raw text and should return the transformed text. If not provided, the default transform strips markdown code fences.', + }, + ]} +/> + +### Returns + +Returns a middleware object that: + +- Processes both streaming and non-streaming responses +- Strips markdown code fences (` ```json ` and ` ``` `) from text content +- Applies custom transformations when a `transform` function is provided +- Maintains proper streaming behavior with efficient buffering + +## Usage Examples + +### Basic Usage + +Strip markdown code fences from model responses when using structured output: + +```ts +import { + generateText, + wrapLanguageModel, + extractJsonMiddleware, + Output, +} from 'ai'; +import { z } from 'zod'; + +const result = await generateText({ + model: wrapLanguageModel({ + model: yourModel, + middleware: extractJsonMiddleware(), + }), + output: Output.object({ + schema: z.object({ + recipe: z.object({ + name: z.string(), + steps: z.array(z.string()), + }), + }), + }), + prompt: 'Generate a lasagna recipe.', +}); + +console.log(result.output); +``` + +### With Streaming + +The middleware also works with streaming responses: + +```ts +import { + streamText, + wrapLanguageModel, + extractJsonMiddleware, + Output, +} from 'ai'; +import { z } from 'zod'; + +const { partialOutputStream } = streamText({ + model: wrapLanguageModel({ + model: yourModel, + middleware: extractJsonMiddleware(), + }), + output: Output.object({ + schema: z.object({ + recipe: z.object({ + ingredients: z.array(z.string()), + steps: z.array(z.string()), + }), + }), + }), + prompt: 'Generate a detailed recipe.', +}); + +for await (const partialObject of partialOutputStream) { + console.log(partialObject); +} +``` + +### Custom Transform Function + +For models that use different formatting, you can provide a custom transform: + +```ts +import { extractJsonMiddleware } from 'ai'; + +const middleware = extractJsonMiddleware({ + transform: text => + text + .replace(/^PREFIX/, '') + .replace(/SUFFIX$/, '') + .trim(), +}); +``` + +## How It Works + +The middleware handles text content in two ways: + +### Non-Streaming (generateText) + +1. Receives the complete response from the model +2. Applies the transform function to strip markdown fences (or custom formatting) +3. Returns the cleaned text content + +### Streaming (streamText) + +1. Buffers initial content to detect markdown fence prefixes (` ```json\n `) +2. If a fence is detected, strips the prefix and switches to streaming mode +3. Maintains a small suffix buffer to handle the closing fence (` \n``` `) +4. When the stream ends, strips any trailing fence from the buffer +5. For custom transforms, buffers all content and applies the transform at the end + +This approach ensures efficient streaming while correctly handling code fences that may be split across multiple chunks. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/70-step-count-is.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/70-step-count-is.mdx new file mode 100644 index 000000000..b0fa00766 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/70-step-count-is.mdx @@ -0,0 +1,84 @@ +--- +title: stepCountIs +description: API Reference for stepCountIs. +--- + +# `stepCountIs()` + +Creates a stop condition that stops when the number of steps reaches a specified count. + +This function is used with `stopWhen` in `generateText` and `streamText` to control when a tool-calling loop should stop based on the number of steps executed. + +```ts +import { generateText, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; + +const result = await generateText({ + model: __MODEL__, + tools: { + // your tools + }, + // Stop after 5 steps + stopWhen: stepCountIs(5), +}); +``` + +## Import + + + +## API Signature + +### Parameters + + + +### Returns + +A `StopCondition` function that returns `true` when the step count reaches the specified number. The function can be used with the `stopWhen` parameter in `generateText` and `streamText`. + +## Examples + +### Basic Usage + +Stop after 3 steps: + +```ts +import { generateText, stepCountIs } from 'ai'; + +const result = await generateText({ + model: yourModel, + tools: yourTools, + stopWhen: stepCountIs(3), +}); +``` + +### Combining with Other Conditions + +You can combine multiple stop conditions in an array: + +```ts +import { generateText, stepCountIs, hasToolCall } from 'ai'; + +const result = await generateText({ + model: yourModel, + tools: yourTools, + // Stop after 10 steps OR when finalAnswer tool is called + stopWhen: [stepCountIs(10), hasToolCall('finalAnswer')], +}); +``` + +## See also + +- [`hasToolCall()`](/docs/reference/ai-sdk-core/has-tool-call) +- [`generateText()`](/docs/reference/ai-sdk-core/generate-text) +- [`streamText()`](/docs/reference/ai-sdk-core/stream-text) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/71-has-tool-call.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/71-has-tool-call.mdx new file mode 100644 index 000000000..da79a656d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/71-has-tool-call.mdx @@ -0,0 +1,120 @@ +--- +title: hasToolCall +description: API Reference for hasToolCall. +--- + +# `hasToolCall()` + +Creates a stop condition that stops when a specific tool is called. + +This function is used with `stopWhen` in `generateText` and `streamText` to control when a tool-calling loop should stop based on whether a particular tool has been invoked. + +```ts +import { generateText, hasToolCall } from 'ai'; +__PROVIDER_IMPORT__; + +const result = await generateText({ + model: __MODEL__, + tools: { + weather: weatherTool, + finalAnswer: finalAnswerTool, + }, + // Stop when the finalAnswer tool is called + stopWhen: hasToolCall('finalAnswer'), +}); +``` + +## Import + + + +## API Signature + +### Parameters + + + +### Returns + +A `StopCondition` function that returns `true` when the specified tool is called in the current step. The function can be used with the `stopWhen` parameter in `generateText` and `streamText`. + +## Examples + +### Basic Usage + +Stop when a specific tool is called: + +```ts +import { generateText, hasToolCall } from 'ai'; + +const result = await generateText({ + model: yourModel, + tools: { + submitAnswer: submitAnswerTool, + search: searchTool, + }, + stopWhen: hasToolCall('submitAnswer'), +}); +``` + +### Combining with Other Conditions + +You can combine multiple stop conditions in an array: + +```ts +import { generateText, hasToolCall, stepCountIs } from 'ai'; + +const result = await generateText({ + model: yourModel, + tools: { + weather: weatherTool, + search: searchTool, + finalAnswer: finalAnswerTool, + }, + // Stop when weather tool is called OR finalAnswer is called OR after 5 steps + stopWhen: [ + hasToolCall('weather'), + hasToolCall('finalAnswer'), + stepCountIs(5), + ], +}); +``` + +### Agent Pattern + +Common pattern for agents that run until they provide a final answer: + +```ts +import { generateText, hasToolCall } from 'ai'; + +const result = await generateText({ + model: yourModel, + tools: { + search: searchTool, + calculate: calculateTool, + finalAnswer: { + description: 'Provide the final answer to the user', + parameters: z.object({ + answer: z.string(), + }), + execute: async ({ answer }) => answer, + }, + }, + stopWhen: hasToolCall('finalAnswer'), +}); +``` + +## See also + +- [`stepCountIs()`](/docs/reference/ai-sdk-core/step-count-is) +- [`generateText()`](/docs/reference/ai-sdk-core/generate-text) +- [`streamText()`](/docs/reference/ai-sdk-core/stream-text) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/75-simulate-readable-stream.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/75-simulate-readable-stream.mdx new file mode 100644 index 000000000..af6069466 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/75-simulate-readable-stream.mdx @@ -0,0 +1,94 @@ +--- +title: simulateReadableStream +description: Create a ReadableStream that emits values with configurable delays +--- + +# `simulateReadableStream()` + +`simulateReadableStream` is a utility function that creates a ReadableStream which emits provided values sequentially with configurable delays. This is particularly useful for testing streaming functionality or simulating time-delayed data streams. + +```ts +import { simulateReadableStream } from 'ai'; + +const stream = simulateReadableStream({ + chunks: ['Hello', ' ', 'World'], + initialDelayInMs: 100, + chunkDelayInMs: 50, +}); +``` + +## Import + + + +## API Signature + +### Parameters + + + +### Returns + +Returns a `ReadableStream` that: + +- Emits each value from the provided `chunks` array sequentially +- Waits for `initialDelayInMs` before emitting the first value (if not `null`) +- Waits for `chunkDelayInMs` between emitting subsequent values (if not `null`) +- Closes automatically after all chunks have been emitted + +### Type Parameters + +- `T`: The type of values contained in the chunks array and emitted by the stream + +## Examples + +### Basic Usage + +```ts +const stream = simulateReadableStream({ + chunks: ['Hello', ' ', 'World'], +}); +``` + +### With Delays + +```ts +const stream = simulateReadableStream({ + chunks: ['Hello', ' ', 'World'], + initialDelayInMs: 1000, // Wait 1 second before first chunk + chunkDelayInMs: 500, // Wait 0.5 seconds between chunks +}); +``` + +### Without Delays + +```ts +const stream = simulateReadableStream({ + chunks: ['Hello', ' ', 'World'], + initialDelayInMs: null, // No initial delay + chunkDelayInMs: null, // No delay between chunks +}); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx new file mode 100644 index 000000000..61230f633 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx @@ -0,0 +1,145 @@ +--- +title: smoothStream +description: Stream transformer for smoothing text and reasoning output +--- + +# `smoothStream()` + +`smoothStream` is a utility function that creates a TransformStream +for the `streamText` `transform` option +to smooth out text and reasoning streaming by buffering and releasing complete chunks with configurable delays. +This creates a more natural reading experience when streaming text and reasoning responses. + +```ts highlight={"6-9"} +import { smoothStream, streamText } from 'ai'; + +const result = streamText({ + model, + prompt, + experimental_transform: smoothStream({ + delayInMs: 20, // optional: defaults to 10ms + chunking: 'line', // optional: defaults to 'word' + }), +}); +``` + +## Import + + + +## API Signature + +### Parameters + + string | undefined | null', + isOptional: true, + description: + 'Controls how text and reasoning content is chunked for streaming. Use "word" to stream word by word (default), "line" to stream line by line, an Intl.Segmenter for locale-aware word segmentation (recommended for CJK languages), or provide a custom callback or RegExp pattern for custom chunking.', + }, + ]} +/> + +#### Word chunking caveats with non-latin languages + +The word based chunking **does not work well** with the following languages that do not delimit words with spaces: + +- Chinese +- Japanese +- Korean +- Vietnamese +- Thai + +#### Using Intl.Segmenter (recommended) + +For these languages, we recommend using `Intl.Segmenter` for proper locale-aware word segmentation. +This is the preferred approach as it provides accurate word boundaries for CJK and other languages. + + + `Intl.Segmenter` is available in Node.js 16+ and all modern browsers (Chrome + 87+, Firefox 125+, Safari 14.1+). + + +```tsx filename="Japanese example with Intl.Segmenter" +import { smoothStream, streamText } from 'ai'; +__PROVIDER_IMPORT__; + +const segmenter = new Intl.Segmenter('ja', { granularity: 'word' }); + +const result = streamText({ + model: __MODEL__, + prompt: 'Your prompt here', + experimental_transform: smoothStream({ + chunking: segmenter, + }), +}); +``` + +```tsx filename="Chinese example with Intl.Segmenter" +import { smoothStream, streamText } from 'ai'; +__PROVIDER_IMPORT__; + +const segmenter = new Intl.Segmenter('zh', { granularity: 'word' }); + +const result = streamText({ + model: __MODEL__, + prompt: 'Your prompt here', + experimental_transform: smoothStream({ + chunking: segmenter, + }), +}); +``` + +#### Regex based chunking + +To use regex based chunking, pass a `RegExp` to the `chunking` option. + +```ts +// To split on underscores: +smoothStream({ + chunking: /_+/, +}); + +// Also can do it like this, same behavior +smoothStream({ + chunking: /[^_]*_/, +}); +``` + +#### Custom callback chunking + +To use a custom callback for chunking, pass a function to the `chunking` option. + +```ts +smoothStream({ + chunking: text => { + const findString = 'some string'; + const index = text.indexOf(findString); + + if (index === -1) { + return null; + } + + return text.slice(0, index) + findString; + }, +}); +``` + +### Returns + +Returns a `TransformStream` that: + +- Buffers incoming text and reasoning chunks +- Releases content when the chunking pattern is encountered +- Adds configurable delays between chunks for smooth output +- Passes through non-text/reasoning chunks (like tool calls, step-finish events) immediately diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/90-generate-id.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/90-generate-id.mdx new file mode 100644 index 000000000..ba04219d4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/90-generate-id.mdx @@ -0,0 +1,30 @@ +--- +title: generateId +description: Generate a unique identifier (API Reference) +--- + +# `generateId()` + +Generates a unique identifier. + +This is the same id generator used by the AI SDK. + +```ts +import { generateId } from 'ai'; + +const id = generateId(); +``` + +## Import + + + +## API Signature + +### Returns + +A string representing the generated ID. + +## See also + +- [`createIdGenerator()`](/docs/reference/ai-sdk-core/create-id-generator) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/91-create-id-generator.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/91-create-id-generator.mdx new file mode 100644 index 000000000..81b4286b8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/91-create-id-generator.mdx @@ -0,0 +1,89 @@ +--- +title: createIdGenerator +description: Create a customizable unique identifier generator (API Reference) +--- + +# `createIdGenerator()` + +Creates a customizable ID generator function. You can configure the alphabet, prefix, separator, and default size of the generated IDs. + +```ts +import { createIdGenerator } from 'ai'; + +const generateCustomId = createIdGenerator({ + prefix: 'user', + separator: '_', +}); + +const id = generateCustomId(); // Example: "user_1a2b3c4d5e6f7g8h" +``` + +## Import + + + +## API Signature + +### Parameters + + + +### Returns + +Returns a function that generates IDs based on the configured options. + +### Notes + +- The generator uses non-secure random generation and should not be used for security-critical purposes. +- The separator character must not be part of the alphabet to ensure reliable prefix checking. + +## Example + +```ts +// Create a custom ID generator for user IDs +const generateUserId = createIdGenerator({ + prefix: 'user', + separator: '_', + size: 8, +}); + +// Generate IDs +const id1 = generateUserId(); // e.g., "user_1a2b3c4d" +``` + +## See also + +- [`generateId()`](/docs/reference/ai-sdk-core/generate-id) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/92-default-generated-file.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/92-default-generated-file.mdx new file mode 100644 index 000000000..469a5b07d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/92-default-generated-file.mdx @@ -0,0 +1,68 @@ +--- +title: DefaultGeneratedFile +description: API Reference for DefaultGeneratedFile. +--- + +# `DefaultGeneratedFile` + +A concrete implementation of the `GeneratedFile` interface that provides lazy conversion between base64 and Uint8Array formats. + +```ts +import { DefaultGeneratedFile } from 'ai'; + +const file = new DefaultGeneratedFile({ + data: uint8ArrayData, + mediaType: 'image/png', +}); + +console.log(file.base64); // Automatically converted to base64 +console.log(file.uint8Array); // Original Uint8Array +``` + +## Import + + + +## Constructor + +### Parameters + + + +## Properties + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/index.mdx new file mode 100644 index 000000000..2a7fc2b96 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/01-ai-sdk-core/index.mdx @@ -0,0 +1,160 @@ +--- +title: AI SDK Core +description: Reference documentation for the AI SDK Core +collapsed: true +--- + +# AI SDK Core + +[AI SDK Core](/docs/ai-sdk-core) is a set of functions that allow you to interact with language models and other AI models. +These functions are designed to be easy-to-use and flexible, allowing you to generate text, structured data, +and embeddings from language models and other AI models. + +AI SDK Core contains the following main functions: + + + +It also contains the following helper functions: + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx new file mode 100644 index 000000000..6678afd04 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx @@ -0,0 +1,493 @@ +--- +title: useChat +description: API reference for the useChat hook. +--- + +# `useChat()` + +Allows you to easily create a conversational user interface for your chatbot application. It enables the streaming of chat messages from your AI provider, manages the chat state, and updates the UI automatically as new messages are received. + + + The `useChat` API has been significantly updated in AI SDK 5.0. It now uses a + transport-based architecture and no longer manages input state internally. See + the [migration + guide](/docs/migration-guides/migration-guide-5-0#usechat-changes) for + details. + + +## Import + + + + + + + + + + + + + + + + +## API Signature + +### Parameters + +', + isOptional: true, + description: + 'An existing Chat instance to use. If provided, other parameters are ignored.', + }, + { + name: 'transport', + type: 'ChatTransport', + isOptional: true, + description: + 'The transport to use for sending messages. Defaults to DefaultChatTransport with `/api/chat` endpoint.', + properties: [ + { + type: 'DefaultChatTransport', + parameters: [ + { + name: 'api', + type: "string = '/api/chat'", + isOptional: true, + description: 'The API endpoint for chat requests.', + }, + { + name: 'credentials', + type: 'RequestCredentials', + isOptional: true, + description: 'The credentials mode for fetch requests.', + }, + { + name: 'headers', + type: 'Record | Headers', + isOptional: true, + description: 'HTTP headers to send with requests.', + }, + { + name: 'body', + type: 'object', + isOptional: true, + description: 'Extra body object to send with requests.', + }, + { + name: 'fetch', + type: 'FetchFunction', + isOptional: true, + description: + 'Custom fetch implementation. You can use it as a middleware to intercept requests, or to provide a custom fetch implementation for e.g. testing.', + }, + { + name: 'prepareSendMessagesRequest', + type: 'PrepareSendMessagesRequest', + isOptional: true, + description: + 'A function to customize the request before chat API calls.', + properties: [ + { + type: 'PrepareSendMessagesRequest', + parameters: [ + { + name: 'options', + type: 'PrepareSendMessageRequestOptions', + description: 'Options for preparing the request', + properties: [ + { + type: 'PrepareSendMessageRequestOptions', + parameters: [ + { + name: 'id', + type: 'string', + description: 'The chat ID', + }, + { + name: 'messages', + type: 'UIMessage[]', + description: 'Current messages in the chat', + }, + { + name: 'requestMetadata', + type: 'unknown', + description: 'The request metadata', + }, + { + name: 'body', + type: 'Record | undefined', + description: 'The request body', + }, + { + name: 'credentials', + type: 'RequestCredentials | undefined', + description: 'The request credentials', + }, + { + name: 'headers', + type: 'HeadersInit | undefined', + description: 'The request headers', + }, + { + name: 'api', + type: 'string', + description: `The API endpoint to use for the request. If not specified, it defaults to the transport’s API endpoint: /api/chat.`, + }, + { + name: 'trigger', + type: "'submit-message' | 'regenerate-message'", + description: 'The trigger for the request', + }, + { + name: 'messageId', + type: 'string | undefined', + description: 'The message ID if applicable', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + name: 'prepareReconnectToStreamRequest', + type: 'PrepareReconnectToStreamRequest', + isOptional: true, + description: + 'A function to customize the request before reconnect API call.', + properties: [ + { + type: 'PrepareReconnectToStreamRequest', + parameters: [ + { + name: 'options', + type: 'PrepareReconnectToStreamRequestOptions', + description: + 'Options for preparing the reconnect request', + properties: [ + { + type: 'PrepareReconnectToStreamRequestOptions', + parameters: [ + { + name: 'id', + type: 'string', + description: 'The chat ID', + }, + { + name: 'requestMetadata', + type: 'unknown', + description: 'The request metadata', + }, + { + name: 'body', + type: 'Record | undefined', + description: 'The request body', + }, + { + name: 'credentials', + type: 'RequestCredentials | undefined', + description: 'The request credentials', + }, + { + name: 'headers', + type: 'HeadersInit | undefined', + description: 'The request headers', + }, + { + name: 'api', + type: 'string', + description: `The API endpoint to use for the request. If not specified, it defaults to the transport’s API endpoint combined with the chat ID: /api/chat/{chatId}/stream.`, + }, + ], + }, + ], + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + name: 'id', + type: 'string', + isOptional: true, + description: + 'A unique identifier for the chat. If not provided, a random one will be generated.', + }, + { + name: 'messages', + type: 'UIMessage[]', + isOptional: true, + description: 'Initial chat messages to populate the conversation with.', + }, + { + name: 'messageMetadataSchema', + type: 'FlexibleSchema', + isOptional: true, + description: 'Schema for validating message metadata.', + }, + { + name: 'dataPartSchemas', + type: 'UIDataTypesToSchemas', + isOptional: true, + description: 'Schemas for validating data parts in messages.', + }, + { + name: 'generateId', + type: 'IdGenerator', + isOptional: true, + description: + 'A function to generate unique IDs for messages and the chat. If not provided, the default AI SDK generateId is used.', + }, + { + name: 'onToolCall', + type: '({toolCall: ToolCall}) => void | Promise', + isOptional: true, + description: + 'Optional callback function that is invoked when a tool call is received. You must call addToolOutput to provide the tool result.', + }, + { + name: 'sendAutomaticallyWhen', + type: '(options: { messages: UIMessage[] }) => boolean | PromiseLike', + isOptional: true, + description: + 'When provided, this function will be called when the stream is finished or a tool call is added to determine if the current messages should be resubmitted. You can use the lastAssistantMessageIsCompleteWithToolCalls helper for common scenarios.', + }, + { + name: 'onFinish', + type: '(options: OnFinishOptions) => void', + isOptional: true, + description: 'Called when the assistant response has finished streaming.', + properties: [ + { + type: 'OnFinishOptions', + parameters: [ + { + name: 'message', + type: 'UIMessage', + description: 'The response message.', + }, + { + name: 'messages', + type: 'UIMessage[]', + description: 'All messages including the response message', + }, + { + name: 'isAbort', + type: 'boolean', + description: + 'True when the request has been aborted by the client.', + }, + { + name: 'isDisconnect', + type: 'boolean', + description: + 'True if the server has been disconnected, e.g. because of a network error.', + }, + { + name: 'isError', + type: 'boolean', + description: `True if errors during streaming caused the response to stop early.`, + }, + { + name: 'finishReason', + type: "'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other'", + isOptional: true, + description: + 'The reason why the model finished generating the response. Undefined if the finish reason was not provided by the model.', + }, + ], + }, + ], + }, + { + name: 'onError', + type: '(error: Error) => void', + isOptional: true, + description: + 'Callback function to be called when an error is encountered.', + }, + { + name: 'onData', + type: '(dataPart: DataUIPart) => void', + isOptional: true, + description: + 'Optional callback function that is called when a data part is received.', + }, + { + name: 'experimental_throttle', + type: 'number', + isOptional: true, + description: + 'Custom throttle wait in ms for the chat messages and data updates. Default is undefined, which disables throttling.', + }, + { + name: 'resume', + type: 'boolean', + isOptional: true, + description: + 'Whether to resume an ongoing chat generation stream. Defaults to false.', + }, + ]} +/> + +### Returns + + Promise', + description: + 'Function to send a new message to the chat. This will trigger an API call to generate the assistant response. If a messageId is provided, the message will be replaced (useful for editing). If no message is provided, resubmits the current messages (useful after adding tool outputs).', + properties: [ + { + type: 'ChatRequestOptions', + parameters: [ + { + name: 'headers', + type: 'Record | Headers', + isOptional: true, + description: + 'Additional headers that should be to be passed to the API endpoint.', + }, + { + name: 'body', + type: 'object', + isOptional: true, + description: + 'Additional body JSON properties that should be sent to the API endpoint.', + }, + { + name: 'metadata', + type: 'unknown', + isOptional: true, + description: 'Additional data to be sent to the API endpoint.', + }, + ], + }, + ], + }, + { + name: 'regenerate', + type: '(options?: { messageId?: string } & ChatRequestOptions) => Promise', + description: + 'Function to regenerate the last assistant message or a specific message. If no messageId is provided, regenerates the last assistant message. Accepts ChatRequestOptions for headers, body, and metadata.', + }, + { + name: 'stop', + type: '() => void', + description: + 'Function to abort the current streaming response from the assistant.', + }, + { + name: 'clearError', + type: '() => void', + description: 'Clears the error state.', + }, + { + name: 'resumeStream', + type: '() => void', + description: + 'Function to resume an interrupted streaming response. Useful when a network error occurs during streaming.', + }, + { + name: 'addToolOutput', + type: '(options: { tool: string; toolCallId: string; output: unknown } | { tool: string; toolCallId: string; state: "output-error", errorText: string }) => void', + description: + 'Function to add a tool result to the chat. This will update the chat messages with the tool result. If sendAutomaticallyWhen is configured, it may trigger an automatic submission.', + }, + { + name: 'addToolApprovalResponse', + type: '(options: { id: string; approved: boolean; reason?: string }) => void | PromiseLike', + description: + 'Function to respond to a tool approval request. The id should match the approval id from the tool call. If sendAutomaticallyWhen is configured, it may trigger an automatic submission.', + }, + { + name: 'addToolResult', + type: '(options: { tool: string; toolCallId: string; output: unknown } | { tool: string; toolCallId: string; state: "output-error", errorText: string }) => void', + description: 'Deprecated. Use addToolOutput instead.', + }, + { + name: 'setMessages', + type: '(messages: UIMessage[] | ((messages: UIMessage[]) => UIMessage[])) => void', + description: + 'Function to update the messages state locally without triggering an API call. Useful for optimistic updates.', + }, + ]} +/> + +## Learn more + +- [Chatbot](/docs/ai-sdk-ui/chatbot) +- [Chatbot with Tools](/docs/ai-sdk-ui/chatbot-tool-usage) +- [UIMessage](/docs/reference/ai-sdk-core/ui-message) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/02-use-completion.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/02-use-completion.mdx new file mode 100644 index 000000000..430709708 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/02-use-completion.mdx @@ -0,0 +1,185 @@ +--- +title: useCompletion +description: API reference for the useCompletion hook. +--- + +# `useCompletion()` + +Allows you to create text completion based capabilities for your application. It enables the streaming of text completions from your AI provider, manages the state for chat input, and updates the UI automatically as new messages are received. + +## Import + + + + + + + + + + + + + + + + +## API Signature + +### Parameters + + void', + description: + 'An optional callback function that is called when the completion stream ends.', + }, + { + name: 'onError', + type: '(error: Error) => void', + description: + 'An optional callback that will be called when the chat stream encounters an error.', + }, + { + name: 'headers', + type: 'Record | Headers', + description: + 'An optional object of headers to be passed to the API endpoint.', + }, + { + name: 'body', + type: 'object', + description: + 'An optional, additional body object to be passed to the API endpoint.', + }, + { + name: 'credentials', + type: "'omit' | 'same-origin' | 'include'", + description: + 'An optional literal that sets the mode of credentials to be used on the request. Defaults to same-origin.', + }, + { + name: 'streamProtocol', + type: "'text' | 'data'", + isOptional: true, + description: + 'An optional literal that sets the type of stream to be used. Defaults to `data`. If set to `text`, the stream will be treated as a text stream.', + }, + { + name: 'fetch', + type: 'FetchFunction', + isOptional: true, + description: + 'Optional. A custom fetch function to be used for the API call. Defaults to the global fetch function.', + }, + { + name: 'experimental_throttle', + type: 'number', + isOptional: true, + description: + 'React only. Custom throttle wait time in milliseconds for the completion and data updates. When specified, throttles how often the UI updates during streaming. Default is undefined, which disables throttling.', + }, + +]} +/> + +### Returns + + | Headers, body?: object }) => Promise', + description: + 'Function to execute text completion based on the provided prompt. Returns the completion result when finished.', + }, + { + name: 'error', + type: 'undefined | Error', + description: 'The error thrown during the completion process, if any.', + }, + { + name: 'setCompletion', + type: '(completion: string) => void', + description: 'Function to update the `completion` state.', + }, + { + name: 'stop', + type: '() => void', + description: 'Function to abort the current API request.', + }, + { + name: 'input', + type: 'string', + description: 'The current value of the input field.', + }, + { + name: 'setInput', + type: 'React.Dispatch>', + description: 'Function to update the input value.', + }, + { + name: 'handleInputChange', + type: '(event: any) => void', + description: + "Handler for the `onChange` event of the input field to control the input's value.", + }, + { + name: 'handleSubmit', + type: '(event?: { preventDefault?: () => void }) => void', + description: + 'Form submission handler that automatically resets the input field and appends a user message.', + }, + { + name: 'isLoading', + type: 'boolean', + description: + 'Boolean flag indicating whether a fetch operation is currently in progress.', + }, + ]} +/> diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/03-use-object.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/03-use-object.mdx new file mode 100644 index 000000000..611f36c8b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/03-use-object.mdx @@ -0,0 +1,196 @@ +--- +title: useObject +description: API reference for the useObject hook. +--- + +# `experimental_useObject()` + + + `useObject` is an experimental feature and only available in React, Svelte, + and Vue. + + +Allows you to consume text streams that represent a JSON object and parse them into a complete object based on a schema. +You can use it together with [`streamText`](/docs/reference/ai-sdk-core/stream-text) and [`Output.object()`](/docs/reference/ai-sdk-core/output#output-object) in the backend. + +```tsx +'use client'; + +import { experimental_useObject as useObject } from '@ai-sdk/react'; + +export default function Page() { + const { object, submit } = useObject({ + api: '/api/use-object', + schema: z.object({ content: z.string() }), + }); + + return ( +
+ + {object?.content &&

{object.content}

} +
+ ); +} +``` + +## Import + + + + + + + + + + + + + +## API Signature + +### Parameters + + | undefined', + isOptional: true, + description: 'An value for the initial object. Optional.', + }, + { + name: 'fetch', + type: 'FetchFunction', + isOptional: true, + description: + 'A custom fetch function to be used for the API call. Defaults to the global fetch function. Optional.', + }, + { + name: 'headers', + type: 'Record | Headers', + isOptional: true, + description: + 'A headers object to be passed to the API endpoint. Optional.', + }, + { + name: 'credentials', + type: 'RequestCredentials', + isOptional: true, + description: + 'The credentials mode to be used for the fetch request. Possible values are: "omit", "same-origin", "include". Optional.', + }, + { + name: 'onError', + type: '(error: Error) => void', + isOptional: true, + description: + 'Callback function to be called when an error is encountered. Optional.', + }, + { + name: 'onFinish', + type: '(result: OnFinishResult) => void', + isOptional: true, + description: 'Called when the streaming response has finished.', + properties: [ + { + type: 'OnFinishResult', + parameters: [ + { + name: 'object', + type: 'T | undefined', + description: + 'The generated object (typed according to the schema). Can be undefined if the final object does not match the schema.', + }, + { + name: 'error', + type: 'Error | undefined', + description: + 'Optional error object. This is e.g. a TypeValidationError when the final object does not match the schema.', + }, + ], + }, + ], + }, + ]} +/> + +### Returns + + void', + description: 'Calls the API with the provided input as JSON body.', + }, + { + name: 'object', + type: 'DeepPartial | undefined', + description: + 'The current value for the generated object. Updated as the API streams JSON chunks.', + }, + { + name: 'error', + type: 'Error | undefined', + description: 'The error object if the API call fails.', + }, + { + name: 'isLoading', + type: 'boolean', + description: + 'Boolean flag indicating whether a request is currently in progress.', + }, + { + name: 'stop', + type: '() => void', + description: 'Function to abort the current API request.', + }, + { + name: 'clear', + type: '() => void', + description: 'Function to clear the object state.', + }, + ]} +/> + +## Examples + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx new file mode 100644 index 000000000..cbf63060c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx @@ -0,0 +1,231 @@ +--- +title: convertToModelMessages +description: Convert useChat messages to ModelMessages for AI functions (API Reference) +--- + +# `convertToModelMessages()` + +The `convertToModelMessages` function is used to transform an array of UI messages from the `useChat` hook into an array of `ModelMessage` objects. These `ModelMessage` objects are compatible with AI core functions like `streamText`. + +```ts filename="app/api/chat/route.ts" +import { convertToModelMessages, streamText } from 'ai'; +__PROVIDER_IMPORT__; + +export async function POST(req: Request) { + const { messages } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse(); +} +``` + +## Import + + + +## API Signature + +### Parameters + + TextPart | FilePart | undefined }', + description: + 'Optional configuration object. Provide tools to enable multi-modal tool responses. Set ignoreIncompleteToolCalls to true to skip tool calls without results (default: false). Use convertDataPart to transform custom data parts into model-compatible content.', + }, + ]} +/> + +### Returns + +A Promise that resolves to an array of [`ModelMessage`](/docs/reference/ai-sdk-core/model-message) objects. + +', + type: 'Promise', + description: + 'A Promise that resolves to an array of ModelMessage objects', + }, + ]} +/> + +## Multi-modal Tool Responses + +The `convertToModelMessages` function supports tools that can return multi-modal content. This is useful when tools need to return non-text content like images. + +```ts +import { tool } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const screenshotTool = tool({ + inputSchema: z.object({}), + execute: async () => 'imgbase64', + toModelOutput: ({ output }) => [{ type: 'image', data: output }], +}); + +const result = streamText({ + model: __MODEL__, + messages: convertToModelMessages(messages, { + tools: { + screenshot: screenshotTool, + }, + }), +}); +``` + +Tools can implement the optional `toModelOutput` method to transform their results into multi-modal content. The content is an array of content parts, where each part has a `type` (e.g., 'text', 'image') and corresponding data. + +## Custom Data Part Conversion + +The `convertToModelMessages` function supports converting custom data parts attached to user messages. This is useful when users need to include additional context (URLs, code files, JSON configs) with their messages. + +### Basic Usage + +By default, data parts in user messages are filtered out during conversion. To include them, provide a `convertDataPart` callback that transforms data parts into text or file parts that the model can understand: + +```ts filename="app/api/chat/route.ts" +import { convertToModelMessages, streamText } from 'ai'; + +type CustomUIMessage = UIMessage< + never, + { + url: { url: string; title: string; content: string }; + 'code-file': { filename: string; code: string; language: string }; + } +>; + +export async function POST(req: Request) { + const { messages } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: convertToModelMessages(messages, { + convertDataPart: part => { + // Convert URL attachments to text + if (part.type === 'data-url') { + return { + type: 'text', + text: `[Reference: ${part.data.title}](${part.data.url})\n\n${part.data.content}`, + }; + } + + // Convert code file attachments + if (part.type === 'data-code-file') { + return { + type: 'text', + text: `\`\`\`${part.data.language}\n// ${part.data.filename}\n${part.data.code}\n\`\`\``, + }; + } + + // Other data parts are ignored + }, + }), + }); + + return result.toUIMessageStreamResponse(); +} +``` + +### Use Cases + +**Attaching URL Content** +Allow users to attach URLs to their messages, with the content fetched and formatted for the model: + +```ts +// Client side +sendMessage({ + parts: [ + { type: 'text', text: 'Analyze this article' }, + { + type: 'data-url', + data: { + url: 'https://example.com/article', + title: 'Important Article', + content: '...', + }, + }, + ], +}); +``` + +**Including Code Files as Context** +Let users reference code files in their conversations: + +```ts +convertDataPart: part => { + if (part.type === 'data-code-file') { + return { + type: 'text', + text: `\`\`\`${part.data.language}\n${part.data.code}\n\`\`\``, + }; + } +}; +``` + +**Selective Inclusion** +Only data parts for which you return a text or file model message part are included, +all other data parts are ignored. + +```ts +const result = convertToModelMessages< + UIMessage< + unknown, + { + url: { url: string; title: string }; + code: { code: string; language: string }; + note: { text: string }; + } + > +>(messages, { + convertDataPart: part => { + if (part.type === 'data-url') { + return { + type: 'text', + text: `[${part.data.title}](${part.data.url})`, + }; + } + + // data-code and data-node are ignored + }, +}); +``` + +### Type Safety + +The generic parameter ensures full type safety for your custom data parts: + +```ts +type MyUIMessage = UIMessage< + unknown, + { + url: { url: string; content: string }; + config: { key: string; value: string }; + } +>; + +// TypeScript knows the exact shape of part.data +convertToModelMessages(messages, { + convertDataPart: part => { + if (part.type === 'data-url') { + // part.data is typed as { url: string; content: string } + return { type: 'text', text: part.data.url }; + } + // Return undefined to skip this part + }, +}); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/32-prune-messages.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/32-prune-messages.mdx new file mode 100644 index 000000000..c8bc4f8ef --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/32-prune-messages.mdx @@ -0,0 +1,108 @@ +--- +title: pruneMessages +description: API Reference for pruneMessages. +--- + +# `pruneMessages()` + +The `pruneMessages` function is used to prune or filter an array of `ModelMessage` objects. This is useful for reducing message context (to save tokens), removing intermediate reasoning, or trimming tool calls and empty messages before sending to an LLM. + +```ts filename="app/api/chat/route.ts" +import { pruneMessages, streamText } from 'ai'; +__PROVIDER_IMPORT__; + +export async function POST(req: Request) { + const { messages } = await req.json(); + + const prunedMessages = pruneMessages({ + messages, + reasoning: 'before-last-message', + toolCalls: 'before-last-2-messages', + emptyMessages: 'remove', + }); + + const result = streamText({ + model: __MODEL__, + messages: prunedMessages, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +## Import + + + +## API Signature + +### Parameters + +`, + description: + 'How to prune tool call/results/approval content. Can specify a strategy string or an array for per-tool fine control. Default: [] (empty array, equivalent to "none").', + }, + { + name: 'emptyMessages', + type: `'keep' | 'remove'`, + description: + 'Whether to keep or remove messages whose content is empty after pruning. Default: "remove".', + }, + ]} +/> + +### Returns + +An array of [`ModelMessage`](/docs/reference/ai-sdk-core/model-message) objects, pruned according to the provided options. + + + +## Example Usage + +```ts +import { pruneMessages } from 'ai'; + +const pruned = pruneMessages({ + messages, + reasoning: 'all', // Remove all reasoning parts + toolCalls: 'before-last-message', // Remove tool calls except those in the last message +}); +``` + +## Pruning Options + +- **reasoning:** Removes reasoning parts from assistant messages. Use `'all'` to remove all, `'before-last-message'` to keep reasoning in the last message, or `'none'` to retain all reasoning. +- **toolCalls:** Prune tool-call, tool-result, and tool-approval chunks from assistant/tool messages. Default is an empty array (no pruning). Options include: + - `'all'`: Prune all such content. + - `'before-last-message'`: Prune except in the last message. + - `'before-last-N-messages'`: Prune except in the last N messages. + - `'none'`: Do not prune. + - Or provide an array for per-tool fine control, e.g., `[{ type: 'before-last-message', tools: ['search', 'calculator'] }]` to prune only specific tools. +- **emptyMessages:** Set to `'remove'` (default) to exclude messages that have no content after pruning. + +> **Tip**: `pruneMessages` is typically used prior to sending a context window to an LLM to reduce message/token count, especially after a series of tool-calls and approvals. + +For advanced usage and the full list of possible message parts, see [`ModelMessage`](/docs/reference/ai-sdk-core/model-message) and [`pruneMessages` implementation](https://github.com/vercel/ai/blob/main/packages/ai/src/generate-text/prune-messages.ts). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx new file mode 100644 index 000000000..fb7bcbf52 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx @@ -0,0 +1,162 @@ +--- +title: createUIMessageStream +description: API Reference for createUIMessageStream. +--- + +# `createUIMessageStream` + +The `createUIMessageStream` function allows you to create a readable stream for UI messages with advanced features like message merging, error handling, and finish callbacks. + +## Import + + + +## Example + +```tsx +const existingMessages: UIMessage[] = [ + /* ... */ +]; + +const stream = createUIMessageStream({ + async execute({ writer }) { + // Start a text message + // Note: The id must be consistent across text-start, text-delta, and text-end steps + // This allows the system to correctly identify they belong to the same text block + writer.write({ + type: 'text-start', + id: 'example-text', + }); + + // Write a message chunk + writer.write({ + type: 'text-delta', + id: 'example-text', + delta: 'Hello', + }); + + // End the text message + writer.write({ + type: 'text-end', + id: 'example-text', + }); + + // Merge another stream from streamText + const result = streamText({ + model: __MODEL__, + prompt: 'Write a haiku about AI', + }); + + writer.merge(result.toUIMessageStream()); + }, + onError: error => `Custom error: ${error.message}`, + originalMessages: existingMessages, + onFinish: ({ messages, isContinuation, responseMessage }) => { + console.log('Stream finished with messages:', messages); + }, +}); +``` + +## API Signature + +### Parameters + + Promise | void', + description: + 'A function that receives a writer instance and can use it to write UI message chunks to the stream.', + properties: [ + { + type: 'UIMessageStreamWriter', + parameters: [ + { + name: 'write', + type: '(part: UIMessageChunk) => void', + description: 'Writes a UI message chunk to the stream.', + }, + { + name: 'merge', + type: '(stream: ReadableStream) => void', + description: + 'Merges the contents of another UI message stream into this stream.', + }, + { + name: 'onError', + type: '(error: unknown) => string', + description: + 'Error handler that is used by the stream writer for handling errors in merged streams.', + }, + ], + }, + ], + }, + { + name: 'onError', + type: '(error: unknown) => string', + description: + 'A function that handles errors and returns an error message string. By default, it returns the error message.', + }, + { + name: 'originalMessages', + type: 'UIMessage[] | undefined', + description: + 'The original messages. If provided, persistence mode is assumed and a message ID is provided for the response message.', + }, + { + name: 'onFinish', + type: '(options: { messages: UIMessage[]; isContinuation: boolean; isAborted: boolean; responseMessage: UIMessage; finishReason?: FinishReason }) => PromiseLike | void', + description: + 'A callback function that is called when the stream finishes.', + properties: [ + { + type: 'FinishOptions', + parameters: [ + { + name: 'messages', + type: 'UIMessage[]', + description: 'The updated list of UI messages.', + }, + { + name: 'isContinuation', + type: 'boolean', + description: + 'Indicates whether the response message is a continuation of the last original message, or if a new message was created.', + }, + { + name: 'isAborted', + type: 'boolean', + description: 'Indicates whether the stream was aborted.', + }, + { + name: 'responseMessage', + type: 'UIMessage', + description: + 'The message that was sent to the client as a response (including the original message if it was extended).', + }, + { + name: 'finishReason', + type: 'FinishReason | undefined', + description: + "The reason why the generation finished. One of: 'stop', 'length', 'content-filter', 'tool-calls', 'error', or 'other'.", + }, + ], + }, + ], + }, + { + name: 'generateId', + type: 'IdGenerator | undefined', + description: + 'A function to generate unique IDs for messages. Uses the default ID generator if not provided.', + }, + ]} +/> + +### Returns + +`ReadableStream` + +A readable stream that emits UI message chunks. The stream automatically handles error propagation, merging of multiple streams, and proper cleanup when all operations are complete. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx new file mode 100644 index 000000000..c98802fc2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx @@ -0,0 +1,119 @@ +--- +title: createUIMessageStreamResponse +description: API Reference for createUIMessageStreamResponse. +--- + +# `createUIMessageStreamResponse` + +The `createUIMessageStreamResponse` function creates a Response object that streams UI messages to the client. + +## Import + + + +## Example + +```tsx +import { + createUIMessageStream, + createUIMessageStreamResponse, + streamText, +} from 'ai'; +__PROVIDER_IMPORT__; + +const response = createUIMessageStreamResponse({ + status: 200, + statusText: 'OK', + headers: { + 'Custom-Header': 'value', + }, + stream: createUIMessageStream({ + execute({ writer }) { + // Write custom data (type must be 'data-') + writer.write({ + type: 'data-message', + data: { content: 'Hello' }, + }); + + // Write text content using start/delta/end pattern + writer.write({ + type: 'text-start', + id: 'greeting-text', + }); + writer.write({ + type: 'text-delta', + id: 'greeting-text', + delta: 'Hello, world!', + }); + writer.write({ + type: 'text-end', + id: 'greeting-text', + }); + + // Write source information (flat properties, not nested) + writer.write({ + type: 'source-url', + sourceId: 'source-1', + url: 'https://example.com', + title: 'Example Source', + }); + + // Merge with LLM stream + const result = streamText({ + model: __MODEL__, + prompt: 'Say hello', + }); + + writer.merge(result.toUIMessageStream()); + }, + }), +}); +``` + +## API Signature + +### Parameters + +', + description: 'The UI message stream to send to the client.', + }, + { + name: 'status', + type: 'number', + isOptional: true, + description: 'The status code for the response. Defaults to 200.', + }, + { + name: 'statusText', + type: 'string', + isOptional: true, + description: 'The status text for the response.', + }, + { + name: 'headers', + type: 'Headers | Record', + isOptional: true, + description: 'Additional headers for the response.', + }, + { + name: 'consumeSseStream', + type: '(options: { stream: ReadableStream }) => PromiseLike | void', + isOptional: true, + description: + 'Optional callback to consume the Server-Sent Events stream.', + }, + ]} +/> + +### Returns + +`Response` + +A Response object that streams UI message chunks with the specified status, headers, and content. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx new file mode 100644 index 000000000..39254752f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx @@ -0,0 +1,77 @@ +--- +title: pipeUIMessageStreamToResponse +description: Learn to use pipeUIMessageStreamToResponse helper function to pipe streaming data to a ServerResponse object. +--- + +# `pipeUIMessageStreamToResponse` + +The `pipeUIMessageStreamToResponse` function pipes streaming data to a Node.js ServerResponse object (see [Streaming Data](/docs/ai-sdk-ui/streaming-data)). + +## Import + + + +## Example + +```tsx +pipeUIMessageStreamToResponse({ + response: serverResponse, + status: 200, + statusText: 'OK', + headers: { + 'Custom-Header': 'value', + }, + stream: myUIMessageStream, + consumeSseStream: ({ stream }) => { + // Optional: consume the SSE stream independently + console.log('Consuming SSE stream:', stream); + }, +}); +``` + +## API Signature + +### Parameters + +', + description: 'The UI message stream to pipe to the response.', + }, + { + name: 'status', + type: 'number', + isOptional: true, + description: 'The status code for the response.', + }, + { + name: 'statusText', + type: 'string', + isOptional: true, + description: 'The status text for the response.', + }, + { + name: 'headers', + type: 'Headers | Record', + isOptional: true, + description: 'Additional headers for the response.', + }, + { + name: 'consumeSseStream', + type: '({ stream }: { stream: ReadableStream }) => PromiseLike | void', + isOptional: true, + description: + 'Optional function to consume the SSE stream independently. The stream is teed and this function receives a copy.', + }, + ]} +/> diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/43-read-ui-message-stream.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/43-read-ui-message-stream.mdx new file mode 100644 index 000000000..d35a82415 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/43-read-ui-message-stream.mdx @@ -0,0 +1,57 @@ +--- +title: readUIMessageStream +description: API Reference for readUIMessageStream. +--- + +# readUIMessageStream + +Transforms a stream of `UIMessageChunk`s into an `AsyncIterableStream` of `UIMessage`s. + +UI message streams are useful outside of Chat use cases, e.g. for terminal UIs, custom stream consumption on the client, or RSC (React Server Components). + +## Import + +```tsx +import { readUIMessageStream } from 'ai'; +``` + +## API Signature + +### Parameters + +', + description: 'The stream of UIMessageChunk objects to read.', + }, + { + name: 'onError', + type: '(error: unknown) => void', + isOptional: true, + description: + 'A function that is called when an error occurs during stream processing.', + }, + { + name: 'terminateOnError', + type: 'boolean', + isOptional: true, + description: + 'Whether to terminate the stream if an error occurs. Defaults to false.', + }, + ]} +/> + +### Returns + +An `AsyncIterableStream` of `UIMessage`s. Each stream part represents a different state of the same message as it is being completed. + +For comprehensive examples and use cases, see [Reading UI Message Streams](/docs/ai-sdk-ui/reading-ui-message-streams). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/46-infer-ui-tools.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/46-infer-ui-tools.mdx new file mode 100644 index 000000000..d49b59cf0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/46-infer-ui-tools.mdx @@ -0,0 +1,99 @@ +--- +title: InferUITools +description: API Reference for InferUITools. +--- + +# InferUITools + +Infers the input and output types of a `ToolSet`. + +This type helper is useful when working with tools in TypeScript to ensure type safety for your tool inputs and outputs in `UIMessage`s. + +## Import + +```tsx +import { InferUITools } from 'ai'; +``` + +## API Signature + +### Type Parameters + + + +### Returns + +A type that maps each tool in the tool set to its inferred input and output types. + +The resulting type has the shape: + +```typescript +{ + [NAME in keyof TOOLS & string]: { + input: InferToolInput; + output: InferToolOutput; + }; +} +``` + +## Examples + +### Basic Usage + +```tsx +import { InferUITools } from 'ai'; +import { z } from 'zod'; + +const tools = { + weather: { + description: 'Get the current weather', + inputSchema: z.object({ + location: z.string().describe('The city and state'), + }), + execute: async ({ location }) => { + return `The weather in ${location} is sunny.`; + }, + }, + calculator: { + description: 'Perform basic arithmetic', + inputSchema: z.object({ + operation: z.enum(['add', 'subtract', 'multiply', 'divide']), + a: z.number(), + b: z.number(), + }), + execute: async ({ operation, a, b }) => { + switch (operation) { + case 'add': + return a + b; + case 'subtract': + return a - b; + case 'multiply': + return a * b; + case 'divide': + return a / b; + } + }, + }, +}; + +// Infer the types from the tool set +type MyUITools = InferUITools; +// This creates a type with: +// { +// weather: { input: { location: string }; output: string }; +// calculator: { input: { operation: 'add' | 'subtract' | 'multiply' | 'divide'; a: number; b: number }; output: number }; +// } +``` + +## Related + +- [`InferUITool`](/docs/reference/ai-sdk-ui/infer-ui-tool) - Infer types for a single tool +- [`useChat`](/docs/reference/ai-sdk-ui/use-chat) - Chat hook that supports typed tools diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/47-infer-ui-tool.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/47-infer-ui-tool.mdx new file mode 100644 index 000000000..549154d41 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/47-infer-ui-tool.mdx @@ -0,0 +1,75 @@ +--- +title: InferUITool +description: API Reference for InferUITool. +--- + +# InferUITool + +Infers the input and output types of a tool. + +This type helper is useful when working with individual tools to ensure type safety for your tool inputs and outputs in `UIMessage`s. + +## Import + +```tsx +import { InferUITool } from 'ai'; +``` + +## API Signature + +### Type Parameters + + + +### Returns + +A type that contains the inferred input and output types of the tool. + +The resulting type has the shape: + +```typescript +{ + input: InferToolInput; + output: InferToolOutput; +} +``` + +## Examples + +### Basic Usage + +```tsx +import { InferUITool } from 'ai'; +import { z } from 'zod'; + +const weatherTool = { + description: 'Get the current weather', + inputSchema: z.object({ + location: z.string().describe('The city and state'), + }), + execute: async ({ location }) => { + return `The weather in ${location} is sunny.`; + }, +}; + +// Infer the types from the tool +type WeatherUITool = InferUITool; +// This creates a type with: +// { +// input: { location: string }; +// output: string; +// } +``` + +## Related + +- [`InferUITools`](/docs/reference/ai-sdk-ui/infer-ui-tools) - Infer types for a tool set +- [`ToolUIPart`](/docs/reference/ai-sdk-core/ui-message#tooluipart) - Tool part type for UI messages diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/50-direct-chat-transport.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/50-direct-chat-transport.mdx new file mode 100644 index 000000000..c7283eea7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/50-direct-chat-transport.mdx @@ -0,0 +1,333 @@ +--- +title: DirectChatTransport +description: API Reference for the DirectChatTransport class. +--- + +# `DirectChatTransport` + +A transport that directly communicates with an [Agent](/docs/reference/ai-sdk-core/agent) in-process, without going through HTTP. This is useful for: + +- Server-side rendering scenarios +- Testing without network +- Single-process applications + +Unlike `DefaultChatTransport` which sends HTTP requests to an API endpoint, `DirectChatTransport` invokes the agent's `stream()` method directly and converts the result to a UI message stream. + +```tsx +import { useChat } from '@ai-sdk/react'; +import { DirectChatTransport, ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + instructions: 'You are a helpful assistant.', +}); + +export default function Chat() { + const { messages, sendMessage, status } = useChat({ + transport: new DirectChatTransport({ agent }), + }); + + // ... render chat UI +} +``` + +## Import + + + +## Constructor + +### Parameters + + METADATA | undefined', + isOptional: true, + description: + 'Extracts message metadata that will be sent to the client. Called on `start` and `finish` events.', + }, + { + name: 'sendReasoning', + type: 'boolean', + isOptional: true, + description: 'Send reasoning parts to the client. Defaults to true.', + }, + { + name: 'sendSources', + type: 'boolean', + isOptional: true, + description: 'Send source parts to the client. Defaults to false.', + }, + { + name: 'sendFinish', + type: 'boolean', + isOptional: true, + description: + 'Send the finish event to the client. Set to false if you are using additional streamText calls that send additional data. Defaults to true.', + }, + { + name: 'sendStart', + type: 'boolean', + isOptional: true, + description: + 'Send the message start event to the client. Set to false if you are using additional streamText calls and the message start event has already been sent. Defaults to true.', + }, + { + name: 'onError', + type: '(error: unknown) => string', + isOptional: true, + description: + "Process an error, e.g. to log it. Defaults to `() => 'An error occurred.'`. Return the error message to include in the data stream.", + }, + ]} +/> + +## Methods + +### `sendMessages()` + +Sends messages to the agent and returns a streaming response. This method validates and converts UI messages to model messages, calls the agent's `stream()` method, and returns the result as a UI message stream. + +```ts +const stream = await transport.sendMessages({ + chatId: 'chat-123', + trigger: 'submit-message', + messages: [...], + abortSignal: controller.signal, +}); +``` + + | Headers', + isOptional: true, + description: 'Additional headers (ignored by DirectChatTransport).', + }, + { + name: 'body', + type: 'object', + isOptional: true, + description: + 'Additional body properties (ignored by DirectChatTransport).', + }, + { + name: 'metadata', + type: 'unknown', + isOptional: true, + description: 'Custom metadata (ignored by DirectChatTransport).', + }, + ]} +/> + +#### Returns + +Returns a `Promise>` - a stream of UI message chunks that can be processed by the chat UI. + +### `reconnectToStream()` + +Direct transport does not support reconnection since there is no persistent server-side stream to reconnect to. + +#### Returns + +Always returns `Promise`. + +## Examples + +### Basic Usage + +```tsx +import { useChat } from '@ai-sdk/react'; +import { DirectChatTransport, ToolLoopAgent } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const agent = new ToolLoopAgent({ + model: openai('gpt-4o'), + instructions: 'You are a helpful assistant.', +}); + +export default function Chat() { + const { messages, sendMessage, status } = useChat({ + transport: new DirectChatTransport({ agent }), + }); + + return ( +
+ {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, index) => + part.type === 'text' ? {part.text} : null, + )} +
+ ))} + +
+ ); +} +``` + +### With Agent Tools + +```tsx +import { useChat } from '@ai-sdk/react'; +import { DirectChatTransport, ToolLoopAgent, tool } from 'ai'; +import { openai } from '@ai-sdk/openai'; +import { z } from 'zod'; + +const weatherTool = tool({ + description: 'Get the current weather', + parameters: z.object({ + location: z.string().describe('The city and state'), + }), + execute: async ({ location }) => { + return `The weather in ${location} is sunny and 72°F.`; + }, +}); + +const agent = new ToolLoopAgent({ + model: openai('gpt-4o'), + instructions: 'You are a helpful assistant with access to weather data.', + tools: { weather: weatherTool }, +}); + +export default function Chat() { + const { messages, sendMessage } = useChat({ + transport: new DirectChatTransport({ agent }), + }); + + // ... render chat UI with tool results +} +``` + +### With Custom Agent Options + +```tsx +import { useChat } from '@ai-sdk/react'; +import { DirectChatTransport, ToolLoopAgent } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const agent = new ToolLoopAgent<{ userId: string }>({ + model: openai('gpt-4o'), + prepareCall: ({ options, ...rest }) => ({ + ...rest, + providerOptions: { + openai: { user: options.userId }, + }, + }), +}); + +export default function Chat({ userId }: { userId: string }) { + const { messages, sendMessage } = useChat({ + transport: new DirectChatTransport({ + agent, + options: { userId }, + }), + }); + + // ... render chat UI +} +``` + +### With Reasoning + +```tsx +import { useChat } from '@ai-sdk/react'; +import { DirectChatTransport, ToolLoopAgent } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const agent = new ToolLoopAgent({ + model: openai('o1-preview'), +}); + +export default function Chat() { + const { messages, sendMessage } = useChat({ + transport: new DirectChatTransport({ + agent, + sendReasoning: true, + }), + }); + + return ( +
+ {messages.map(message => ( +
+ {message.parts.map((part, index) => { + if (part.type === 'text') { + return

{part.text}

; + } + if (part.type === 'reasoning') { + return ( +
+                  {part.text}
+                
+ ); + } + return null; + })} +
+ ))} +
+ ); +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/index.mdx new file mode 100644 index 000000000..4fcd13c3c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/02-ai-sdk-ui/index.mdx @@ -0,0 +1,89 @@ +--- +title: AI SDK UI +description: Reference documentation for the AI SDK UI +collapsed: true +--- + +# AI SDK UI + +[AI SDK UI](/docs/ai-sdk-ui) is designed to help you build interactive chat, completion, and assistant applications with ease. +It is a framework-agnostic toolkit, streamlining the integration of advanced AI functionalities into your applications. + +AI SDK UI contains the following hooks: + + + +## UI Framework Support + +AI SDK UI supports the following frameworks: [React](https://react.dev/), [Svelte](https://svelte.dev/), [Vue.js](https://vuejs.org/), +[Angular](https://angular.dev/), and [SolidJS](https://www.solidjs.com/). + +Here is a comparison of the supported functions across these frameworks: + +| | [useChat](/docs/reference/ai-sdk-ui/use-chat) | [useCompletion](/docs/reference/ai-sdk-ui/use-completion) | [useObject](/docs/reference/ai-sdk-ui/use-object) | +| --------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------- | +| React `@ai-sdk/react` | | | | +| Vue.js `@ai-sdk/vue` | Chat | | | +| Svelte `@ai-sdk/svelte` | Chat | Completion | StructuredObject | +| Angular `@ai-sdk/angular` | Chat | Completion | StructuredObject | +| [SolidJS](https://github.com/kodehort/ai-sdk-solid) (community) | | | | + + + [Contributions](https://github.com/vercel/ai/blob/main/CONTRIBUTING.md) are + welcome to implement missing features for non-React frameworks. + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/01-stream-ui.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/01-stream-ui.mdx new file mode 100644 index 000000000..14544d78f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/01-stream-ui.mdx @@ -0,0 +1,767 @@ +--- +title: streamUI +description: Reference for the streamUI function from the AI SDK RSC +--- + +# `streamUI` + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +A helper function to create a streamable UI from LLM providers. This function is similar to AI SDK Core APIs and supports the same model interfaces. + +To see `streamUI` in action, check out [these examples](#examples). + +## Import + + + +## Parameters + + | Array', + description: + 'A list of messages that represent a conversation. Automatically converts UI messages from the useChat hook.', + properties: [ + { + type: 'SystemModelMessage', + parameters: [ + { + name: 'role', + type: "'system'", + description: 'The role for the system message.', + }, + { + name: 'content', + type: 'string', + description: 'The content of the message.', + }, + ], + }, + { + type: 'UserModelMessage', + parameters: [ + { + name: 'role', + type: "'user'", + description: 'The role for the user message.', + }, + { + name: 'content', + type: 'string | Array', + description: 'The content of the message.', + properties: [ + { + type: 'TextPart', + parameters: [ + { + name: 'type', + type: "'text'", + description: 'The type of the message part.', + }, + { + name: 'text', + type: 'string', + description: 'The text content of the message part.', + }, + ], + }, + { + type: 'ImagePart', + parameters: [ + { + name: 'type', + type: "'image'", + description: 'The type of the message part.', + }, + { + name: 'image', + type: 'string | Uint8Array | Buffer | ArrayBuffer | URL', + description: + 'The image content of the message part. String are either base64 encoded content, base64 data URLs, or http(s) URLs.', + }, + { + name: 'mediaType', + type: 'string', + isOptional: true, + description: + 'The IANA media type of the image. Optional.', + }, + ], + }, + { + type: 'FilePart', + parameters: [ + { + name: 'type', + type: "'file'", + description: 'The type of the message part.', + }, + { + name: 'data', + type: 'string | Uint8Array | Buffer | ArrayBuffer | URL', + description: + 'The file content of the message part. String are either base64 encoded content, base64 data URLs, or http(s) URLs.', + }, + { + name: 'mediaType', + type: 'string', + description: 'The IANA media type of the file.', + }, + ], + }, + ], + }, + ], + }, + { + type: 'AssistantModelMessage', + parameters: [ + { + name: 'role', + type: "'assistant'", + description: 'The role for the assistant message.', + }, + { + name: 'content', + type: 'string | Array', + description: 'The content of the message.', + properties: [ + { + type: 'TextPart', + parameters: [ + { + name: 'type', + type: "'text'", + description: 'The type of the message part.', + }, + { + name: 'text', + type: 'string', + description: 'The text content of the message part.', + }, + ], + }, + { + type: 'ToolCallPart', + parameters: [ + { + name: 'type', + type: "'tool-call'", + description: 'The type of the message part.', + }, + { + name: 'toolCallId', + type: 'string', + description: 'The id of the tool call.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool, which typically would be the name of the function.', + }, + { + name: 'args', + type: 'object based on zod schema', + description: + 'Parameters generated by the model to be used by the tool.', + }, + ], + }, + ], + }, + ], + }, + { + type: 'ToolModelMessage', + parameters: [ + { + name: 'role', + type: "'tool'", + description: 'The role for the assistant message.', + }, + { + name: 'content', + type: 'Array', + description: 'The content of the message.', + properties: [ + { + type: 'ToolResultPart', + parameters: [ + { + name: 'type', + type: "'tool-result'", + description: 'The type of the message part.', + }, + { + name: 'toolCallId', + type: 'string', + description: + 'The id of the tool call the result corresponds to.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool the result corresponds to.', + }, + { + name: 'result', + type: 'unknown', + description: + 'The result returned by the tool after execution.', + }, + { + name: 'isError', + type: 'boolean', + isOptional: true, + description: + 'Whether the result is an error or an error message.', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + name: 'maxOutputTokens', + type: 'number', + isOptional: true, + description: 'Maximum number of tokens to generate.', + }, + { + name: 'temperature', + type: 'number', + isOptional: true, + description: + 'Temperature setting. The value is passed through to the provider. The range depends on the provider and model. It is recommended to set either `temperature` or `topP`, but not both.', + }, + { + name: 'topP', + type: 'number', + isOptional: true, + description: + 'Nucleus sampling. The value is passed through to the provider. The range depends on the provider and model. It is recommended to set either `temperature` or `topP`, but not both.', + }, + { + name: 'topK', + type: 'number', + isOptional: true, + description: + 'Only sample from the top K options for each subsequent token. Used to remove "long tail" low probability responses. Recommended for advanced use cases only. You usually only need to use temperature.', + }, + { + name: 'presencePenalty', + type: 'number', + isOptional: true, + description: + 'Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt. The value is passed through to the provider. The range depends on the provider and model.', + }, + { + name: 'frequencyPenalty', + type: 'number', + isOptional: true, + description: + 'Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases. The value is passed through to the provider. The range depends on the provider and model.', + }, + { + name: 'stopSequences', + type: 'string[]', + isOptional: true, + description: + 'Sequences that will stop the generation of the text. If the model generates any of these sequences, it will stop generating further text.', + }, + { + name: 'seed', + type: 'number', + isOptional: true, + description: + 'The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results.', + }, + { + name: 'maxRetries', + type: 'number', + isOptional: true, + description: + 'Maximum number of retries. Set to 0 to disable retries. Default: 2.', + }, + { + name: 'abortSignal', + type: 'AbortSignal', + isOptional: true, + description: + 'An optional abort signal that can be used to cancel the call.', + }, + { + name: 'headers', + type: 'Record', + isOptional: true, + description: + 'Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.', + }, + { + name: 'tools', + type: 'ToolSet', + description: + 'Tools that are accessible to and can be called by the model.', + properties: [ + { + type: 'Tool', + parameters: [ + { + name: 'description', + isOptional: true, + type: 'string', + description: + 'Information about the purpose of the tool including details on how and when it can be used by the model.', + }, + { + name: 'inputSchema', + type: 'zod schema', + description: + 'The typed schema that describes the parameters of the tool that can also be used to validation and error handling.', + }, + { + name: 'generate', + isOptional: true, + type: '(async (parameters) => ReactNode) | AsyncGenerator', + description: + 'A function or a generator function that is called with the arguments from the tool call and yields React nodes as the UI.', + }, + ], + }, + ], + }, + { + name: 'toolChoice', + isOptional: true, + type: '"auto" | "none" | "required" | { "type": "tool", "toolName": string }', + description: + 'The tool choice setting. It specifies how tools are selected for execution. The default is "auto". "none" disables tool execution. "required" requires tools to be executed. { "type": "tool", "toolName": string } specifies a specific tool to execute.', + }, + { + name: 'text', + isOptional: true, + type: '(Text) => ReactNode', + description: 'Callback to handle the generated tokens from the model.', + properties: [ + { + type: 'Text', + parameters: [ + { + name: 'content', + type: 'string', + description: 'The full content of the completion.', + }, + { name: 'delta', type: 'string', description: 'The delta.' }, + { name: 'done', type: 'boolean', description: 'Is it done?' }, + ], + }, + ], + }, + { + name: 'providerOptions', + type: 'Record | undefined', + isOptional: true, + description: + 'Provider-specific options. The outer key is the provider name. The inner values are the metadata. Details depend on the provider.', + }, + { + name: 'onFinish', + type: '(result: OnFinishResult) => void', + isOptional: true, + description: + 'Callback that is called when the LLM response and all request tool executions (for tools that have a `generate` function) are finished.', + properties: [ + { + type: 'OnFinishResult', + parameters: [ + { + name: 'usage', + type: 'LanguageModelUsage', + description: 'The token usage of the generated text.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: 'The total number of input (prompt) tokens used.', + }, + { + name: 'inputTokenDetails', + type: 'LanguageModelInputTokenDetails', + description: + 'Detailed information about the input (prompt) tokens. See also: cached tokens and non-cached tokens.', + properties: [ + { + type: 'LanguageModelInputTokenDetails', + parameters: [ + { + name: 'noCacheTokens', + type: 'number | undefined', + description: + 'The number of non-cached input (prompt) tokens used.', + }, + { + name: 'cacheReadTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens read.', + }, + { + name: 'cacheWriteTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens written.', + }, + ], + }, + ], + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: 'The number of total output (completion) tokens used.', + }, + { + name: 'outputTokenDetails', + type: 'LanguageModelOutputTokenDetails', + description: + 'Detailed information about the output (completion) tokens.', + properties: [ + { + type: 'LanguageModelOutputTokenDetails', + parameters: [ + { + name: 'textTokens', + type: 'number | undefined', + description: 'The number of text tokens used.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + description: 'The number of reasoning tokens used.', + }, + ], + }, + ], + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: 'The total number of tokens used.', + }, + { + name: 'raw', + type: 'object | undefined', + isOptional: true, + description: 'Raw usage information from the provider. This is the provider\'s original usage information and may include additional fields.', + }, + ], + }, + ], + }, + { + name: 'value', + type: 'ReactNode', + description: 'The final ui node that was generated.', + }, + { + name: 'warnings', + type: 'Warning[] | undefined', + description: + 'Warnings from the model provider (e.g. unsupported settings).', + }, + { + name: 'response', + type: 'Response', + description: 'Optional response data.', + properties: [ + { + type: 'Response', + parameters: [ + { + name: 'headers', + isOptional: true, + type: 'Record', + description: 'Response headers.', + }, + ], + }, + ], + }, + ], + }, + ], + }, + +]} +/> + +## Returns + +', + description: 'Response headers.', + }, + ], + }, + ], + }, + { + name: 'warnings', + type: 'Warning[] | undefined', + description: + 'Warnings from the model provider (e.g. unsupported settings).', + }, + { + name: 'stream', + type: 'AsyncIterable & ReadableStream', + description: + 'A stream with all events, including text deltas, tool calls, tool results, and errors. You can use it as either an AsyncIterable or a ReadableStream. When an error occurs, the stream will throw the error.', + properties: [ + { + type: 'StreamPart', + parameters: [ + { + name: 'type', + type: "'text-delta'", + description: 'The type to identify the object as text delta.', + }, + { + name: 'textDelta', + type: 'string', + description: 'The text delta.', + }, + ], + }, + { + type: 'StreamPart', + parameters: [ + { + name: 'type', + type: "'tool-call'", + description: 'The type to identify the object as tool call.', + }, + { + name: 'toolCallId', + type: 'string', + description: 'The id of the tool call.', + }, + { + name: 'toolName', + type: 'string', + description: + 'The name of the tool, which typically would be the name of the function.', + }, + { + name: 'args', + type: 'object based on zod schema', + description: + 'Parameters generated by the model to be used by the tool.', + }, + ], + }, + { + type: 'StreamPart', + parameters: [ + { + name: 'type', + type: "'error'", + description: 'The type to identify the object as error.', + }, + { + name: 'error', + type: 'Error', + description: + 'Describes the error that may have occurred during execution.', + }, + ], + }, + { + type: 'StreamPart', + parameters: [ + { + name: 'type', + type: "'finish'", + description: 'The type to identify the object as finish.', + }, + { + name: 'finishReason', + type: "'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other'", + description: 'The reason the model finished generating the text.', + }, + { + name: 'usage', + type: 'LanguageModelUsage', + description: 'The token usage of the generated text.', + properties: [ + { + type: 'LanguageModelUsage', + parameters: [ + { + name: 'inputTokens', + type: 'number | undefined', + description: + 'The total number of input (prompt) tokens used.', + }, + { + name: 'inputTokenDetails', + type: 'LanguageModelInputTokenDetails', + description: + 'Detailed information about the input (prompt) tokens. See also: cached tokens and non-cached tokens.', + properties: [ + { + type: 'LanguageModelInputTokenDetails', + parameters: [ + { + name: 'noCacheTokens', + type: 'number | undefined', + description: + 'The number of non-cached input (prompt) tokens used.', + }, + { + name: 'cacheReadTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens read.', + }, + { + name: 'cacheWriteTokens', + type: 'number | undefined', + description: + 'The number of cached input (prompt) tokens written.', + }, + ], + }, + ], + }, + { + name: 'outputTokens', + type: 'number | undefined', + description: + 'The number of total output (completion) tokens used.', + }, + { + name: 'outputTokenDetails', + type: 'LanguageModelOutputTokenDetails', + description: + 'Detailed information about the output (completion) tokens.', + properties: [ + { + type: 'LanguageModelOutputTokenDetails', + parameters: [ + { + name: 'textTokens', + type: 'number | undefined', + description: 'The number of text tokens used.', + }, + { + name: 'reasoningTokens', + type: 'number | undefined', + description: + 'The number of reasoning tokens used.', + }, + ], + }, + ], + }, + { + name: 'totalTokens', + type: 'number | undefined', + description: 'The total number of tokens used.', + }, + { + name: 'raw', + type: 'object | undefined', + isOptional: true, + description: + "Raw usage information from the provider. This is the provider's original usage information and may include additional fields.", + }, + ], + }, + ], + }, + ], + }, + ], + }, + ]} +/> + +## Examples + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/02-create-ai.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/02-create-ai.mdx new file mode 100644 index 000000000..ad6508bd2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/02-create-ai.mdx @@ -0,0 +1,90 @@ +--- +title: createAI +description: Reference for the createAI function from the AI SDK RSC +--- + +# `createAI` + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +Creates a client-server context provider that can be used to wrap parts of your application tree to easily manage both UI and AI states of your application. + +## Import + + + +## API Signature + +### Parameters + +', + description: 'Server side actions that can be called from the client.', + }, + { + name: 'initialAIState', + type: 'any', + description: 'Initial AI state to be used in the client.', + }, + { + name: 'initialUIState', + type: 'any', + description: 'Initial UI state to be used in the client.', + }, + { + name: 'onGetUIState', + type: '() => UIState', + description: 'is called during SSR to compare and update UI state.', + }, + { + name: 'onSetAIState', + type: '(Event) => void', + description: + 'is triggered whenever an update() or done() is called by the mutable AI state in your action, so you can safely store your AI state in the database.', + properties: [ + { + type: 'Event', + parameters: [ + { + name: 'state', + type: 'AIState', + description: 'The resulting AI state after the update.', + }, + { + name: 'done', + type: 'boolean', + description: + 'Whether the AI state updates have been finalized or not.', + }, + ], + }, + ], + }, + ]} +/> + +### Returns + +It returns an `` context provider. + +## Examples + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/03-create-streamable-ui.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/03-create-streamable-ui.mdx new file mode 100644 index 000000000..fe602d330 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/03-create-streamable-ui.mdx @@ -0,0 +1,91 @@ +--- +title: createStreamableUI +description: Reference for the createStreamableUI function from the AI SDK RSC +--- + +# `createStreamableUI` + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +Create a stream that sends UI from the server to the client. On the client side, it can be rendered as a normal React node. + +## Import + + + +## API Signature + +### Parameters + + + +### Returns + + + +### Methods + + void', + description: + 'Updates the current UI node. It takes a new UI node and replaces the old one.', + }, + { + name: 'append', + type: '(ReactNode) => void', + description: + 'Appends a new UI node to the end of the old one. Once appended a new UI node, the previous UI node cannot be updated anymore.', + }, + { + name: 'done', + type: '(ReactNode | null) => void', + description: + 'Marks the UI node as finalized and closes the stream. Once called, the UI node cannot be updated or appended anymore. This method is always required to be called, otherwise the response will be stuck in a loading state.', + }, + { + name: 'error', + type: '(Error) => void', + description: + 'Signals that there is an error in the UI stream. It will be thrown on the client side and caught by the nearest error boundary component.', + }, + ]} +/> + +## Examples + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/04-create-streamable-value.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/04-create-streamable-value.mdx new file mode 100644 index 000000000..96b23f937 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/04-create-streamable-value.mdx @@ -0,0 +1,78 @@ +--- +title: createStreamableValue +description: Reference for the createStreamableValue function from the AI SDK RSC +--- + +# `createStreamableValue` + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +Create a stream that sends values from the server to the client. The value can be any serializable data. + +## Import + + + +## API Signature + +### Parameters + + + +### Returns + + + +### Methods + + StreamableValueWrapper', + description: 'Updates the current value with a new one.', + }, + { + name: 'append', + type: '(value: T) => StreamableValueWrapper', + description: + 'Appends a delta string to the current value. It requires the current value of the streamable to be a string.', + }, + { + name: 'done', + type: '(value?: T) => StreamableValueWrapper', + description: + 'Marks the value as finalized. You can either call it without any parameters or with a new value as the final state. Once called, the value cannot be updated or appended anymore. This method is always required to be called, otherwise the response will be stuck in a loading state.', + }, + { + name: 'error', + type: '(error: any) => StreamableValueWrapper', + description: + 'Signals that there is an error in the value stream. It will be thrown on the client side when consumed via `readStreamableValue` or `useStreamableValue`.', + }, + ]} +/> diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/05-read-streamable-value.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/05-read-streamable-value.mdx new file mode 100644 index 000000000..7aa784559 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/05-read-streamable-value.mdx @@ -0,0 +1,79 @@ +--- +title: readStreamableValue +description: Reference for the readStreamableValue function from the AI SDK RSC +--- + +# `readStreamableValue` + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +It is a function that helps you read the streamable value from the client that was originally created using [`createStreamableValue`](/docs/reference/ai-sdk-rsc/create-streamable-value) on the server. + +## Import + + + +## Example + +```ts filename="app/actions.ts" +async function generate() { + 'use server'; + const streamable = createStreamableValue(''); + + streamable.append('Hello'); + streamable.append(' '); + streamable.append('World'); + streamable.done(); + + return streamable.value; +} +``` + +```tsx filename="app/page.tsx" highlight="12" +import { readStreamableValue } from '@ai-sdk/rsc'; + +export default function Page() { + const [generation, setGeneration] = useState(''); + + return ( +
+ +
+ ); +} +``` + +## API Signature + +### Parameters + + + +### Returns + +It returns an async iterator that contains the values emitted by the streamable value. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/06-get-ai-state.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/06-get-ai-state.mdx new file mode 100644 index 000000000..373c7dfd9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/06-get-ai-state.mdx @@ -0,0 +1,50 @@ +--- +title: getAIState +description: Reference for the getAIState function from the AI SDK RSC +--- + +# `getAIState` + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +Get the current AI state. + +## Import + + + +## API Signature + +### Parameters + + + +### Returns + +The AI state. + +## Examples + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/07-get-mutable-ai-state.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/07-get-mutable-ai-state.mdx new file mode 100644 index 000000000..b650e7775 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/07-get-mutable-ai-state.mdx @@ -0,0 +1,70 @@ +--- +title: getMutableAIState +description: Reference for the getMutableAIState function from the AI SDK RSC +--- + +# `getMutableAIState` + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +Get a mutable copy of the AI state. You can use this to update the state in the server. + +## Import + + + +## API Signature + +### Parameters + + + +### Returns + +The mutable AI state. + +### Methods + + void', + description: 'Updates the AI state with the new state.', + }, + { + name: 'done', + type: '(newState: any) => void', + description: + 'Updates the AI state with the new state, marks it as finalized and closes the stream.', + }, + ]} +/> + +## Examples + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/08-use-ai-state.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/08-use-ai-state.mdx new file mode 100644 index 000000000..2dc8fbbf4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/08-use-ai-state.mdx @@ -0,0 +1,26 @@ +--- +title: useAIState +description: Reference for the useAIState function from the AI SDK RSC +--- + +# `useAIState` + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +It is a hook that enables you to read and update the AI state. The AI state is shared globally between all `useAIState` hooks under the same `` provider. + +The AI state is intended to contain context and information shared with the AI model, such as system messages, function responses, and other relevant data. + +## Import + + + +## API Signature + +### Returns + +Similar to useState, it is an array where the first element is the current AI state and the second element is a function to update the state. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/09-use-actions.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/09-use-actions.mdx new file mode 100644 index 000000000..16e084395 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/09-use-actions.mdx @@ -0,0 +1,42 @@ +--- +title: useActions +description: Reference for the useActions function from the AI SDK RSC +--- + +# `useActions` + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +It is a hook to help you access your Server Actions from the client. This is particularly useful for building interfaces that require user interactions with the server. + +It is required to access these server actions via this hook because they are patched when passed through the context. Accessing them directly may result in a [Cannot find Client Component error](/docs/troubleshooting/server-actions-in-client-components). + +## Import + + + +## API Signature + +### Returns + +`Record`, a dictionary of server actions. + +## Examples + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/10-use-ui-state.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/10-use-ui-state.mdx new file mode 100644 index 000000000..d9b8535f1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/10-use-ui-state.mdx @@ -0,0 +1,35 @@ +--- +title: useUIState +description: Reference for the useUIState function from the AI SDK RSC +--- + +# `useUIState` + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +It is a hook that enables you to read and update the UI State. The state is client-side and can contain functions, React nodes, and other data. UIState is the visual representation of the AI state. + +## Import + + + +## API Signature + +### Returns + +Similar to useState, it is an array, where the first element is the current UI state and the second element is the function that updates the state. + +## Examples + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/11-use-streamable-value.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/11-use-streamable-value.mdx new file mode 100644 index 000000000..352ef4d55 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/11-use-streamable-value.mdx @@ -0,0 +1,46 @@ +--- +title: useStreamableValue +description: Reference for the useStreamableValue function from the AI SDK RSC +--- + +# `useStreamableValue` + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +It is a React hook that takes a streamable value created using [`createStreamableValue`](/docs/reference/ai-sdk-rsc/create-streamable-value) and returns the current value, error, and pending state. + +## Import + + + +## Example + +This is useful for consuming streamable values received from a component's props. + +```tsx +function MyComponent({ streamableValue }) { + const [data, error, pending] = useStreamableValue(streamableValue); + + if (pending) return
Loading...
; + if (error) return
Error: {error.message}
; + + return
Data: {data}
; +} +``` + +## API Signature + +### Parameters + +It accepts a streamable value created using `createStreamableValue`. + +### Returns + +It is an array, where the first element contains the data, the second element contains an error if it is thrown anytime during the stream, and the third is a boolean indicating if the value is pending. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/20-render.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/20-render.mdx new file mode 100644 index 000000000..274150ee2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/20-render.mdx @@ -0,0 +1,266 @@ +--- +title: render (Removed) +description: Reference for the render function from the AI SDK RSC +--- + +# `render` (Removed) + +"render" has been removed in AI SDK 4.0. + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + +A helper function to create a streamable UI from LLM providers. This function is similar to AI SDK Core APIs and supports the same model interfaces. + +> **Note**: `render` has been deprecated in favor of [`streamUI`](/docs/reference/ai-sdk-rsc/stream-ui). During migration, please ensure that the `messages` parameter follows the updated [specification](/docs/reference/ai-sdk-rsc/stream-ui#messages). + +## Import (No longer available) + +The following import will no longer work since `render` has been removed: + + + +Use [`streamUI`](/docs/reference/ai-sdk-rsc/stream-ui) instead. + +## API Signature + +### Parameters + +', + description: 'A list of messages that represent a conversation.', + properties: [ + { + type: 'SystemMessage', + parameters: [ + { + name: 'role', + type: "'system'", + description: 'The role for the system message.', + }, + { + name: 'content', + type: 'string', + description: 'The content of the message.', + }, + ], + }, + { + type: 'UserMessage', + parameters: [ + { + name: 'role', + type: "'user'", + description: 'The role for the user message.', + }, + { + name: 'content', + type: 'string', + description: 'The content of the message.', + }, + ], + }, + { + type: 'AssistantMessage', + parameters: [ + { + name: 'role', + type: "'assistant'", + description: 'The role for the assistant message.', + }, + { + name: 'content', + type: 'string', + description: 'The content of the message.', + }, + { + name: 'tool_calls', + type: 'ToolCall[]', + description: 'A list of tool calls made by the model.', + properties: [ + { + type: 'ToolCall', + parameters: [ + { + name: 'id', + type: 'string', + description: 'The id of the tool call.', + }, + { + name: 'type', + type: "'function'", + description: 'The type of the tool call.', + }, + { + name: 'function', + type: 'Function', + description: 'The function to call.', + properties: [ + { + type: 'Function', + parameters: [ + { + name: 'name', + type: 'string', + description: 'The name of the function.', + }, + { + name: 'arguments', + type: 'string', + description: 'The arguments of the function.', + }, + ], + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + type: 'ToolMessage', + parameters: [ + { + name: 'role', + type: "'tool'", + description: 'The role for the tool message.', + }, + { + name: 'content', + type: 'string', + description: 'The content of the message.', + }, + { + name: 'toolCallId', + type: 'string', + description: 'The id of the tool call.', + }, + ], + }, + ], + }, + { + name: 'functions', + type: 'ToolSet', + isOptional: true, + description: + 'Tools that are accessible to and can be called by the model.', + properties: [ + { + type: 'Tool', + parameters: [ + { + name: 'description', + isOptional: true, + type: 'string', + description: + 'Information about the purpose of the tool including details on how and when it can be used by the model.', + }, + { + name: 'parameters', + type: 'zod schema', + description: + 'The typed schema that describes the parameters of the tool that can also be used to validation and error handling.', + }, + { + name: 'render', + isOptional: true, + type: 'async (parameters) => any', + description: + 'An async function that is called with the arguments from the tool call and produces a result.', + }, + ], + }, + ], + }, + { + name: 'tools', + type: 'ToolSet', + isOptional: true, + description: + 'Tools that are accessible to and can be called by the model.', + properties: [ + { + type: 'Tool', + parameters: [ + { + name: 'description', + isOptional: true, + type: 'string', + description: + 'Information about the purpose of the tool including details on how and when it can be used by the model.', + }, + { + name: 'parameters', + type: 'zod schema', + description: + 'The typed schema that describes the parameters of the tool that can also be used to validation and error handling.', + }, + { + name: 'render', + isOptional: true, + type: 'async (parameters) => any', + description: + 'An async function that is called with the arguments from the tool call and produces a result.', + }, + ], + }, + ], + }, + { + name: 'text', + isOptional: true, + type: '(Text) => ReactNode', + description: 'Callback to handle the generated tokens from the model.', + properties: [ + { + type: 'Text', + parameters: [ + { + name: 'content', + type: 'string', + description: 'The full content of the completion.', + }, + { name: 'delta', type: 'string', description: 'The delta.' }, + { name: 'done', type: 'boolean', description: 'Is it done?' }, + ], + }, + ], + }, + { + name: 'temperature', + isOptional: true, + type: 'number', + description: 'The temperature to use for the model.', + }, + ]} +/> + +### Returns + +It can return any valid ReactNode. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/index.mdx new file mode 100644 index 000000000..4fca5a9ac --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/03-ai-sdk-rsc/index.mdx @@ -0,0 +1,67 @@ +--- +title: AI SDK RSC +description: Reference documentation for the AI SDK RSC +collapsed: true +--- + +# AI SDK RSC + + + AI SDK RSC is currently experimental. We recommend using [AI SDK + UI](/docs/ai-sdk-ui/overview) for production. For guidance on migrating from + RSC to UI, see our [migration guide](/docs/ai-sdk-rsc/migrating-to-ui). + + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-api-call-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-api-call-error.mdx new file mode 100644 index 000000000..bf7ecbc33 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-api-call-error.mdx @@ -0,0 +1,31 @@ +--- +title: AI_APICallError +description: Learn how to fix AI_APICallError +--- + +# AI_APICallError + +This error occurs when an API call fails. + +## Properties + +- `url`: The URL of the API request that failed +- `requestBodyValues`: The request body values sent to the API +- `statusCode`: The HTTP status code returned by the API (optional) +- `responseHeaders`: The response headers returned by the API (optional) +- `responseBody`: The response body returned by the API (optional) +- `isRetryable`: Whether the request can be retried based on the status code +- `data`: Any additional data associated with the error (optional) +- `cause`: The underlying error that caused the API call to fail (optional) + +## Checking for this Error + +You can check if an error is an instance of `AI_APICallError` using: + +```typescript +import { APICallError } from 'ai'; + +if (APICallError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-download-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-download-error.mdx new file mode 100644 index 000000000..889b3dc44 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-download-error.mdx @@ -0,0 +1,28 @@ +--- +title: AI_DownloadError +description: Learn how to fix AI_DownloadError +--- + +# AI_DownloadError + +This error occurs when a download fails. + +## Properties + +- `url`: The URL that failed to download +- `statusCode`: The HTTP status code returned by the server (optional) +- `statusText`: The HTTP status text returned by the server (optional) +- `cause`: The underlying error that caused the download to fail (optional) +- `message`: The error message containing details about the download failure (optional, auto-generated) + +## Checking for this Error + +You can check if an error is an instance of `AI_DownloadError` using: + +```typescript +import { DownloadError } from 'ai'; + +if (DownloadError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-empty-response-body-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-empty-response-body-error.mdx new file mode 100644 index 000000000..9175cc458 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-empty-response-body-error.mdx @@ -0,0 +1,24 @@ +--- +title: AI_EmptyResponseBodyError +description: Learn how to fix AI_EmptyResponseBodyError +--- + +# AI_EmptyResponseBodyError + +This error occurs when the server returns an empty response body. + +## Properties + +- `message`: The error message + +## Checking for this Error + +You can check if an error is an instance of `AI_EmptyResponseBodyError` using: + +```typescript +import { EmptyResponseBodyError } from 'ai'; + +if (EmptyResponseBodyError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-argument-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-argument-error.mdx new file mode 100644 index 000000000..a61ddf15b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-argument-error.mdx @@ -0,0 +1,26 @@ +--- +title: AI_InvalidArgumentError +description: Learn how to fix AI_InvalidArgumentError +--- + +# AI_InvalidArgumentError + +This error occurs when an invalid argument was provided. + +## Properties + +- `parameter`: The name of the parameter that is invalid +- `value`: The invalid value +- `message`: The error message + +## Checking for this Error + +You can check if an error is an instance of `AI_InvalidArgumentError` using: + +```typescript +import { InvalidArgumentError } from 'ai'; + +if (InvalidArgumentError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content-error.mdx new file mode 100644 index 000000000..d4f81ca12 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content-error.mdx @@ -0,0 +1,26 @@ +--- +title: AI_InvalidDataContentError +description: How to fix AI_InvalidDataContentError +--- + +# AI_InvalidDataContentError + +This error occurs when the data content provided in a multi-modal message part is invalid. Check out the [ prompt examples for multi-modal messages ](/docs/foundations/prompts#message-prompts). + +## Properties + +- `content`: The invalid content value +- `cause`: The underlying error that caused this error (optional) +- `message`: The error message describing the expected and received content types (optional, auto-generated) + +## Checking for this Error + +You can check if an error is an instance of `AI_InvalidDataContentError` using: + +```typescript +import { InvalidDataContentError } from 'ai'; + +if (InvalidDataContentError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-message-role-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-message-role-error.mdx new file mode 100644 index 000000000..47df50e8f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-message-role-error.mdx @@ -0,0 +1,25 @@ +--- +title: AI_InvalidMessageRoleError +description: Learn how to fix AI_InvalidMessageRoleError +--- + +# AI_InvalidMessageRoleError + +This error occurs when an invalid message role is provided. + +## Properties + +- `role`: The invalid role value +- `message`: The error message (optional, auto-generated from `role`) + +## Checking for this Error + +You can check if an error is an instance of `AI_InvalidMessageRoleError` using: + +```typescript +import { InvalidMessageRoleError } from 'ai'; + +if (InvalidMessageRoleError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-prompt-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-prompt-error.mdx new file mode 100644 index 000000000..03f50c976 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-prompt-error.mdx @@ -0,0 +1,47 @@ +--- +title: AI_InvalidPromptError +description: Learn how to fix AI_InvalidPromptError +--- + +# AI_InvalidPromptError + +This error occurs when the prompt provided is invalid. + +## Potential Causes + +### UI Messages + +You are passing a `UIMessage[]` as messages into e.g. `streamText`. + +You need to first convert them to a `ModelMessage[]` using `convertToModelMessages()`. + +```typescript +import { type UIMessage, generateText, convertToModelMessages } from 'ai'; + +const messages: UIMessage[] = [ + /* ... */ +]; + +const result = await generateText({ + // ... + messages: await convertToModelMessages(messages), +}); +``` + +## Properties + +- `prompt`: The invalid prompt value +- `message`: The error message (required in constructor) +- `cause`: The cause of the error (optional) + +## Checking for this Error + +You can check if an error is an instance of `AI_InvalidPromptError` using: + +```typescript +import { InvalidPromptError } from 'ai'; + +if (InvalidPromptError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-response-data-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-response-data-error.mdx new file mode 100644 index 000000000..3f69bdeb8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-response-data-error.mdx @@ -0,0 +1,25 @@ +--- +title: AI_InvalidResponseDataError +description: Learn how to fix AI_InvalidResponseDataError +--- + +# AI_InvalidResponseDataError + +This error occurs when the server returns a response with invalid data content. + +## Properties + +- `data`: The invalid response data value +- `message`: The error message + +## Checking for this Error + +You can check if an error is an instance of `AI_InvalidResponseDataError` using: + +```typescript +import { InvalidResponseDataError } from 'ai'; + +if (InvalidResponseDataError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-error.mdx new file mode 100644 index 000000000..04fd96156 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-error.mdx @@ -0,0 +1,24 @@ +--- +title: AI_InvalidToolApprovalError +description: Learn how to fix AI_InvalidToolApprovalError +--- + +# AI_InvalidToolApprovalError + +This error occurs when a tool approval response references an unknown `approvalId`. No matching `tool-approval-request` was found in the message history. + +## Properties + +- `approvalId`: The approval ID that was not found + +## Checking for this Error + +You can check if an error is an instance of `AI_InvalidToolApprovalError` using: + +```typescript +import { InvalidToolApprovalError } from 'ai'; + +if (InvalidToolApprovalError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-input-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-input-error.mdx new file mode 100644 index 000000000..1d48209b3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-input-error.mdx @@ -0,0 +1,27 @@ +--- +title: AI_InvalidToolInputError +description: Learn how to fix AI_InvalidToolInputError +--- + +# AI_InvalidToolInputError + +This error occurs when invalid tool input was provided. + +## Properties + +- `toolName`: The name of the tool with invalid inputs +- `toolInput`: The invalid tool inputs +- `message`: The error message +- `cause`: The cause of the error + +## Checking for this Error + +You can check if an error is an instance of `AI_InvalidToolInputError` using: + +```typescript +import { InvalidToolInputError } from 'ai'; + +if (InvalidToolInputError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-json-parse-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-json-parse-error.mdx new file mode 100644 index 000000000..9b04e885f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-json-parse-error.mdx @@ -0,0 +1,25 @@ +--- +title: AI_JSONParseError +description: Learn how to fix AI_JSONParseError +--- + +# AI_JSONParseError + +This error occurs when JSON fails to parse. + +## Properties + +- `text`: The text value that could not be parsed +- `cause`: The underlying parsing error (required in constructor) + +## Checking for this Error + +You can check if an error is an instance of `AI_JSONParseError` using: + +```typescript +import { JSONParseError } from 'ai'; + +if (JSONParseError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-load-api-key-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-load-api-key-error.mdx new file mode 100644 index 000000000..4efc6fefa --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-load-api-key-error.mdx @@ -0,0 +1,24 @@ +--- +title: AI_LoadAPIKeyError +description: Learn how to fix AI_LoadAPIKeyError +--- + +# AI_LoadAPIKeyError + +This error occurs when API key is not loaded successfully. + +## Properties + +- `message`: The error message + +## Checking for this Error + +You can check if an error is an instance of `AI_LoadAPIKeyError` using: + +```typescript +import { LoadAPIKeyError } from 'ai'; + +if (LoadAPIKeyError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-load-setting-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-load-setting-error.mdx new file mode 100644 index 000000000..0540e4a4c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-load-setting-error.mdx @@ -0,0 +1,24 @@ +--- +title: AI_LoadSettingError +description: Learn how to fix AI_LoadSettingError +--- + +# AI_LoadSettingError + +This error occurs when a setting is not loaded successfully. + +## Properties + +- `message`: The error message + +## Checking for this Error + +You can check if an error is an instance of `AI_LoadSettingError` using: + +```typescript +import { LoadSettingError } from 'ai'; + +if (LoadSettingError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-message-conversion-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-message-conversion-error.mdx new file mode 100644 index 000000000..3b89c9394 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-message-conversion-error.mdx @@ -0,0 +1,25 @@ +--- +title: AI_MessageConversionError +description: Learn how to fix AI_MessageConversionError +--- + +# AI_MessageConversionError + +This error occurs when message conversion fails. + +## Properties + +- `originalMessage`: The original message that failed conversion +- `message`: The error message + +## Checking for this Error + +You can check if an error is an instance of `AI_MessageConversionError` using: + +```typescript +import { MessageConversionError } from 'ai'; + +if (MessageConversionError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-content-generated-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-content-generated-error.mdx new file mode 100644 index 000000000..08985768b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-content-generated-error.mdx @@ -0,0 +1,24 @@ +--- +title: AI_NoContentGeneratedError +description: Learn how to fix AI_NoContentGeneratedError +--- + +# AI_NoContentGeneratedError + +This error occurs when the AI provider fails to generate content. + +## Properties + +- `message`: The error message (optional, defaults to `'No content generated.'`) + +## Checking for this Error + +You can check if an error is an instance of `AI_NoContentGeneratedError` using: + +```typescript +import { NoContentGeneratedError } from 'ai'; + +if (NoContentGeneratedError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-image-generated-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-image-generated-error.mdx new file mode 100644 index 000000000..e5f4a7c2b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-image-generated-error.mdx @@ -0,0 +1,36 @@ +--- +title: AI_NoImageGeneratedError +description: Learn how to fix AI_NoImageGeneratedError +--- + +# AI_NoImageGeneratedError + +This error occurs when the AI provider fails to generate an image. +It can arise due to the following reasons: + +- The model failed to generate a response. +- The model generated an invalid response. + +## Properties + +- `message`: The error message (optional, defaults to `'No image generated.'`). +- `responses`: Metadata about the image model responses, including timestamp, model, and headers (optional). +- `cause`: The cause of the error. You can use this for more detailed error handling (optional). + +## Checking for this Error + +You can check if an error is an instance of `AI_NoImageGeneratedError` using: + +```typescript +import { generateImage, NoImageGeneratedError } from 'ai'; + +try { + await generateImage({ model, prompt }); +} catch (error) { + if (NoImageGeneratedError.isInstance(error)) { + console.log('NoImageGeneratedError'); + console.log('Cause:', error.cause); + console.log('Responses:', error.responses); + } +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-object-generated-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-object-generated-error.mdx new file mode 100644 index 000000000..3d26e08a4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-object-generated-error.mdx @@ -0,0 +1,43 @@ +--- +title: AI_NoObjectGeneratedError +description: Learn how to fix AI_NoObjectGeneratedError +--- + +# AI_NoObjectGeneratedError + +This error occurs when the AI provider fails to generate a parsable object that conforms to the schema. +It can arise due to the following reasons: + +- The model failed to generate a response. +- The model generated a response that could not be parsed. +- The model generated a response that could not be validated against the schema. + +## Properties + +- `message`: The error message (optional, defaults to `'No object generated.'`). +- `text`: The text that was generated by the model. This can be the raw text or the tool call text, depending on the object generation mode (optional). +- `response`: Metadata about the language model response, including response id, timestamp, and model (required in constructor). +- `usage`: Request token usage (required in constructor). +- `finishReason`: Request finish reason. For example 'length' if model generated maximum number of tokens, this could result in a JSON parsing error (required in constructor). +- `cause`: The cause of the error (e.g. a JSON parsing error). You can use this for more detailed error handling (optional). + +## Checking for this Error + +You can check if an error is an instance of `AI_NoObjectGeneratedError` using: + +```typescript +import { generateText, NoObjectGeneratedError, Output } from 'ai'; + +try { + await generateText({ model, output: Output.object({ schema }), prompt }); +} catch (error) { + if (NoObjectGeneratedError.isInstance(error)) { + console.log('NoObjectGeneratedError'); + console.log('Cause:', error.cause); + console.log('Text:', error.text); + console.log('Response:', error.response); + console.log('Usage:', error.usage); + console.log('Finish Reason:', error.finishReason); + } +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-output-generated-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-output-generated-error.mdx new file mode 100644 index 000000000..bb18a991c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-output-generated-error.mdx @@ -0,0 +1,25 @@ +--- +title: AI_NoOutputGeneratedError +description: Learn how to fix AI_NoOutputGeneratedError +--- + +# AI_NoOutputGeneratedError + +This error is thrown when no LLM output was generated, e.g. because of errors. + +## Properties + +- `message`: The error message (optional, defaults to `'No output generated.'`) +- `cause`: The underlying error that caused no output to be generated (optional) + +## Checking for this Error + +You can check if an error is an instance of `AI_NoOutputGeneratedError` using: + +```typescript +import { NoOutputGeneratedError } from 'ai'; + +if (NoOutputGeneratedError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-speech-generated-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-speech-generated-error.mdx new file mode 100644 index 000000000..2b8e08f44 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-speech-generated-error.mdx @@ -0,0 +1,24 @@ +--- +title: AI_NoSpeechGeneratedError +description: Learn how to fix AI_NoSpeechGeneratedError +--- + +# AI_NoSpeechGeneratedError + +This error occurs when no audio could be generated from the input. + +## Properties + +- `responses`: Array of speech model response metadata (required in constructor) + +## Checking for this Error + +You can check if an error is an instance of `AI_NoSpeechGeneratedError` using: + +```typescript +import { NoSpeechGeneratedError } from 'ai'; + +if (NoSpeechGeneratedError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-such-model-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-such-model-error.mdx new file mode 100644 index 000000000..bfe1122c8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-such-model-error.mdx @@ -0,0 +1,26 @@ +--- +title: AI_NoSuchModelError +description: Learn how to fix AI_NoSuchModelError +--- + +# AI_NoSuchModelError + +This error occurs when a model ID is not found. + +## Properties + +- `modelId`: The ID of the model that was not found +- `modelType`: The type of model (`'languageModel'`, `'embeddingModel'`, `'imageModel'`, `'transcriptionModel'`, `'speechModel'`, or `'rerankingModel'`) +- `message`: The error message (optional, auto-generated from `modelId` and `modelType`) + +## Checking for this Error + +You can check if an error is an instance of `AI_NoSuchModelError` using: + +```typescript +import { NoSuchModelError } from 'ai'; + +if (NoSuchModelError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-such-provider-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-such-provider-error.mdx new file mode 100644 index 000000000..0a914de89 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-such-provider-error.mdx @@ -0,0 +1,28 @@ +--- +title: AI_NoSuchProviderError +description: Learn how to fix AI_NoSuchProviderError +--- + +# AI_NoSuchProviderError + +This error occurs when a provider ID is not found. + +## Properties + +- `providerId`: The ID of the provider that was not found +- `availableProviders`: Array of available provider IDs +- `modelId`: The ID of the model +- `modelType`: The type of model +- `message`: The error message + +## Checking for this Error + +You can check if an error is an instance of `AI_NoSuchProviderError` using: + +```typescript +import { NoSuchProviderError } from 'ai'; + +if (NoSuchProviderError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-such-tool-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-such-tool-error.mdx new file mode 100644 index 000000000..9eccd8dee --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-such-tool-error.mdx @@ -0,0 +1,26 @@ +--- +title: AI_NoSuchToolError +description: Learn how to fix AI_NoSuchToolError +--- + +# AI_NoSuchToolError + +This error occurs when a model tries to call an unavailable tool. + +## Properties + +- `toolName`: The name of the tool that was not found +- `availableTools`: Array of available tool names (optional) +- `message`: The error message (optional, auto-generated from `toolName` and `availableTools`) + +## Checking for this Error + +You can check if an error is an instance of `AI_NoSuchToolError` using: + +```typescript +import { NoSuchToolError } from 'ai'; + +if (NoSuchToolError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-transcript-generated-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-transcript-generated-error.mdx new file mode 100644 index 000000000..83925f3d9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-transcript-generated-error.mdx @@ -0,0 +1,24 @@ +--- +title: AI_NoTranscriptGeneratedError +description: Learn how to fix AI_NoTranscriptGeneratedError +--- + +# AI_NoTranscriptGeneratedError + +This error occurs when no transcript could be generated from the input. + +## Properties + +- `responses`: Array of transcription model response metadata (required in constructor) + +## Checking for this Error + +You can check if an error is an instance of `AI_NoTranscriptGeneratedError` using: + +```typescript +import { NoTranscriptGeneratedError } from 'ai'; + +if (NoTranscriptGeneratedError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-video-generated-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-video-generated-error.mdx new file mode 100644 index 000000000..5ef23b107 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-no-video-generated-error.mdx @@ -0,0 +1,39 @@ +--- +title: AI_NoVideoGeneratedError +description: Learn how to fix AI_NoVideoGeneratedError +--- + +# AI_NoVideoGeneratedError + +This error occurs when the AI provider fails to generate a video. +It can arise due to the following reasons: + +- The model failed to generate a response. +- The model generated an invalid response. + +## Properties + +- `message`: The error message (optional, defaults to `'No video generated.'`). +- `responses`: Metadata about the video model responses, including timestamp, model, and headers (optional). +- `cause`: The cause of the error. You can use this for more detailed error handling (optional). + +## Checking for this Error + +You can check if an error is an instance of `AI_NoVideoGeneratedError` using: + +```typescript +import { + experimental_generateVideo as generateVideo, + NoVideoGeneratedError, +} from 'ai'; + +try { + await generateVideo({ model, prompt }); +} catch (error) { + if (NoVideoGeneratedError.isInstance(error)) { + console.log('NoVideoGeneratedError'); + console.log('Cause:', error.cause); + console.log('Responses:', error.responses); + } +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-retry-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-retry-error.mdx new file mode 100644 index 000000000..56396444c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-retry-error.mdx @@ -0,0 +1,27 @@ +--- +title: AI_RetryError +description: Learn how to fix AI_RetryError +--- + +# AI_RetryError + +This error occurs when a retry operation fails. + +## Properties + +- `reason`: The reason for the retry failure +- `lastError`: The most recent error that occurred during retries +- `errors`: Array of all errors that occurred during retry attempts +- `message`: The error message + +## Checking for this Error + +You can check if an error is an instance of `AI_RetryError` using: + +```typescript +import { RetryError } from 'ai'; + +if (RetryError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-too-many-embedding-values-for-call-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-too-many-embedding-values-for-call-error.mdx new file mode 100644 index 000000000..e8ee26b54 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-too-many-embedding-values-for-call-error.mdx @@ -0,0 +1,27 @@ +--- +title: AI_TooManyEmbeddingValuesForCallError +description: Learn how to fix AI_TooManyEmbeddingValuesForCallError +--- + +# AI_TooManyEmbeddingValuesForCallError + +This error occurs when too many values are provided in a single embedding call. + +## Properties + +- `provider`: The AI provider name +- `modelId`: The ID of the embedding model +- `maxEmbeddingsPerCall`: The maximum number of embeddings allowed per call +- `values`: The array of values that was provided + +## Checking for this Error + +You can check if an error is an instance of `AI_TooManyEmbeddingValuesForCallError` using: + +```typescript +import { TooManyEmbeddingValuesForCallError } from 'ai'; + +if (TooManyEmbeddingValuesForCallError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-tool-call-not-found-for-approval-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-tool-call-not-found-for-approval-error.mdx new file mode 100644 index 000000000..4e6f60963 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-tool-call-not-found-for-approval-error.mdx @@ -0,0 +1,25 @@ +--- +title: AI_ToolCallNotFoundForApprovalError +description: Learn how to fix AI_ToolCallNotFoundForApprovalError +--- + +# AI_ToolCallNotFoundForApprovalError + +This error occurs when a tool approval request references a tool call that was not found. This can happen when processing provider-emitted approval requests (e.g., MCP flows) where the referenced tool call ID does not exist. + +## Properties + +- `toolCallId`: The tool call ID that was not found +- `approvalId`: The approval request ID + +## Checking for this Error + +You can check if an error is an instance of `AI_ToolCallNotFoundForApprovalError` using: + +```typescript +import { ToolCallNotFoundForApprovalError } from 'ai'; + +if (ToolCallNotFoundForApprovalError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-tool-call-repair-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-tool-call-repair-error.mdx new file mode 100644 index 000000000..baac4eced --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-tool-call-repair-error.mdx @@ -0,0 +1,28 @@ +--- +title: ToolCallRepairError +description: Learn how to fix AI SDK ToolCallRepairError +--- + +# ToolCallRepairError + +This error occurs when there is a failure while attempting to repair an invalid tool call. +This typically happens when the AI attempts to fix either +a `NoSuchToolError` or `InvalidToolInputError`. + +## Properties + +- `originalError`: The original error that triggered the repair attempt (either `NoSuchToolError` or `InvalidToolInputError`) +- `message`: The error message +- `cause`: The underlying error that caused the repair to fail + +## Checking for this Error + +You can check if an error is an instance of `ToolCallRepairError` using: + +```typescript +import { ToolCallRepairError } from 'ai'; + +if (ToolCallRepairError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-type-validation-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-type-validation-error.mdx new file mode 100644 index 000000000..8e5b95874 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-type-validation-error.mdx @@ -0,0 +1,25 @@ +--- +title: AI_TypeValidationError +description: Learn how to fix AI_TypeValidationError +--- + +# AI_TypeValidationError + +This error occurs when type validation fails. + +## Properties + +- `value`: The value that failed validation +- `cause`: The underlying validation error (required in constructor) + +## Checking for this Error + +You can check if an error is an instance of `AI_TypeValidationError` using: + +```typescript +import { TypeValidationError } from 'ai'; + +if (TypeValidationError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-ui-message-stream-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-ui-message-stream-error.mdx new file mode 100644 index 000000000..f98cf9c09 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-ui-message-stream-error.mdx @@ -0,0 +1,67 @@ +--- +title: AI_UIMessageStreamError +description: Learn how to fix AI_UIMessageStreamError +--- + +# AI_UIMessageStreamError + +This error occurs when a UI message stream contains invalid or out-of-sequence chunks. + +Common causes: + +- Receiving a `text-delta` chunk without a preceding `text-start` chunk +- Receiving a `text-end` chunk without a preceding `text-start` chunk +- Receiving a `reasoning-delta` chunk without a preceding `reasoning-start` chunk +- Receiving a `reasoning-end` chunk without a preceding `reasoning-start` chunk +- Receiving a `tool-input-delta` chunk without a preceding `tool-input-start` chunk +- Attempting to access a tool invocation that doesn't exist + +This error often surfaces when an upstream request fails **before any tokens are streamed** and a custom transport tries to write an inline error message to the UI stream without the proper start chunk. + +## Properties + +- `chunkType`: The type of chunk that caused the error (e.g., `text-delta`, `reasoning-end`, `tool-input-delta`) +- `chunkId`: The ID associated with the failing chunk (part ID or toolCallId) +- `message`: The error message with details about what went wrong + +## Checking for this Error + +You can check if an error is an instance of `AI_UIMessageStreamError` using: + +```typescript +import { UIMessageStreamError } from 'ai'; + +if (UIMessageStreamError.isInstance(error)) { + console.log('Chunk type:', error.chunkType); + console.log('Chunk ID:', error.chunkId); + // Handle the error +} +``` + +## Common Solutions + +1. **Ensure proper chunk ordering**: Always send a `*-start` chunk before any `*-delta` or `*-end` chunks for the same ID: + + ```typescript + // Correct order + writer.write({ type: 'text-start', id: 'my-text' }); + writer.write({ type: 'text-delta', id: 'my-text', delta: 'Hello' }); + writer.write({ type: 'text-end', id: 'my-text' }); + ``` + +2. **Verify IDs match**: Ensure the `id` used in `*-delta` and `*-end` chunks matches the `id` used in the corresponding `*-start` chunk. + +3. **Handle error paths correctly**: When writing error messages in custom transports, ensure you emit the full start/delta/end sequence: + + ```typescript + // When handling errors in custom transports + writer.write({ type: 'text-start', id: errorId }); + writer.write({ + type: 'text-delta', + id: errorId, + delta: 'Request failed...', + }); + writer.write({ type: 'text-end', id: errorId }); + ``` + +4. **Check stream producer logic**: Review your streaming implementation to ensure chunks are sent in the correct order, especially when dealing with concurrent operations or merged streams. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-unsupported-functionality-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-unsupported-functionality-error.mdx new file mode 100644 index 000000000..eeebe1339 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/ai-unsupported-functionality-error.mdx @@ -0,0 +1,25 @@ +--- +title: AI_UnsupportedFunctionalityError +description: Learn how to fix AI_UnsupportedFunctionalityError +--- + +# AI_UnsupportedFunctionalityError + +This error occurs when functionality is not supported. + +## Properties + +- `functionality`: The name of the unsupported functionality +- `message`: The error message (optional, auto-generated from `functionality`) + +## Checking for this Error + +You can check if an error is an instance of `AI_UnsupportedFunctionalityError` using: + +```typescript +import { UnsupportedFunctionalityError } from 'ai'; + +if (UnsupportedFunctionalityError.isInstance(error)) { + // Handle the error +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/index.mdx new file mode 100644 index 000000000..720366ff1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/05-ai-sdk-errors/index.mdx @@ -0,0 +1,39 @@ +--- +title: AI SDK Errors +description: Troubleshooting information for common AI SDK errors. +collapsed: true +--- + +# AI SDK Errors + +- [AI_APICallError](/docs/reference/ai-sdk-errors/ai-api-call-error) +- [AI_DownloadError](/docs/reference/ai-sdk-errors/ai-download-error) +- [AI_EmptyResponseBodyError](/docs/reference/ai-sdk-errors/ai-empty-response-body-error) +- [AI_InvalidArgumentError](/docs/reference/ai-sdk-errors/ai-invalid-argument-error) +- [AI_InvalidDataContentError](/docs/reference/ai-sdk-errors/ai-invalid-data-content-error) +- [AI_InvalidMessageRoleError](/docs/reference/ai-sdk-errors/ai-invalid-message-role-error) +- [AI_InvalidPromptError](/docs/reference/ai-sdk-errors/ai-invalid-prompt-error) +- [AI_InvalidResponseDataError](/docs/reference/ai-sdk-errors/ai-invalid-response-data-error) +- [AI_InvalidToolApprovalError](/docs/reference/ai-sdk-errors/ai-invalid-tool-approval-error) +- [AI_InvalidToolInputError](/docs/reference/ai-sdk-errors/ai-invalid-tool-input-error) +- [AI_JSONParseError](/docs/reference/ai-sdk-errors/ai-json-parse-error) +- [AI_LoadAPIKeyError](/docs/reference/ai-sdk-errors/ai-load-api-key-error) +- [AI_LoadSettingError](/docs/reference/ai-sdk-errors/ai-load-setting-error) +- [AI_MessageConversionError](/docs/reference/ai-sdk-errors/ai-message-conversion-error) +- [AI_NoSpeechGeneratedError](/docs/reference/ai-sdk-errors/ai-no-speech-generated-error) +- [AI_NoContentGeneratedError](/docs/reference/ai-sdk-errors/ai-no-content-generated-error) +- [AI_NoImageGeneratedError](/docs/reference/ai-sdk-errors/ai-no-image-generated-error) +- [AI_NoTranscriptGeneratedError](/docs/reference/ai-sdk-errors/ai-no-transcript-generated-error) +- [AI_NoVideoGeneratedError](/docs/reference/ai-sdk-errors/ai-no-video-generated-error) +- [AI_NoObjectGeneratedError](/docs/reference/ai-sdk-errors/ai-no-object-generated-error) +- [AI_NoOutputGeneratedError](/docs/reference/ai-sdk-errors/ai-no-output-generated-error) +- [AI_NoSuchModelError](/docs/reference/ai-sdk-errors/ai-no-such-model-error) +- [AI_NoSuchProviderError](/docs/reference/ai-sdk-errors/ai-no-such-provider-error) +- [AI_NoSuchToolError](/docs/reference/ai-sdk-errors/ai-no-such-tool-error) +- [AI_RetryError](/docs/reference/ai-sdk-errors/ai-retry-error) +- [AI_ToolCallNotFoundForApprovalError](/docs/reference/ai-sdk-errors/ai-tool-call-not-found-for-approval-error) +- [AI_ToolCallRepairError](/docs/reference/ai-sdk-errors/ai-tool-call-repair-error) +- [AI_TooManyEmbeddingValuesForCallError](/docs/reference/ai-sdk-errors/ai-too-many-embedding-values-for-call-error) +- [AI_TypeValidationError](/docs/reference/ai-sdk-errors/ai-type-validation-error) +- [AI_UIMessageStreamError](/docs/reference/ai-sdk-errors/ai-ui-message-stream-error) +- [AI_UnsupportedFunctionalityError](/docs/reference/ai-sdk-errors/ai-unsupported-functionality-error) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/index.mdx new file mode 100644 index 000000000..7f0b0454c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/07-reference/index.mdx @@ -0,0 +1,28 @@ +--- +title: Reference +description: Reference documentation for the AI SDK +--- + +# API Reference + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/00-versioning.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/00-versioning.mdx new file mode 100644 index 000000000..ab49bccc9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/00-versioning.mdx @@ -0,0 +1,46 @@ +--- +title: Versioning +description: Understand how the AI SDK approaches versioning. +--- + +# Versioning + +Each version number follows the format: `MAJOR.MINOR.PATCH` + +- **Major**: Breaking API updates that require code changes. +- **Minor**: Blog post that aggregates new features and improvements into a public release that highlights benefits. +- **Patch**: New features and bug fixes. + +## API Stability + +We communicate the stability of our APIs as follows: + +### Stable APIs + +All APIs without special prefixes are considered stable and ready for production use. We maintain backward compatibility for stable features and only introduce breaking changes in major releases. + +### Experimental APIs + +APIs prefixed with `experimental_` or `Experimental_` (e.g. `experimental_generateImage()`) are in development and can change in any releases. To use experimental APIs safely: + +1. Test them first in development, not production +2. Review release notes before upgrading +3. Prepare for potential code updates + + + If you use experimental APIs, make sure to pin your AI SDK version number + exactly (avoid using ^ or ~ version ranges) to prevent unexpected breaking + changes. + + +### Deprecated APIs + +APIs marked as `deprecated` will be removed in future major releases. You can wait until the major release to update your code. To handle deprecations: + +1. Switch to the recommended alternative API +2. Follow the migration guide (released alongside major releases) + + + For major releases, we provide automated codemods where possible to help + migrate your code to the new version. + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/24-migration-guide-6-0.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/24-migration-guide-6-0.mdx new file mode 100644 index 000000000..e39c684e9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/24-migration-guide-6-0.mdx @@ -0,0 +1,823 @@ +--- +title: Migrate AI SDK 5.x to 6.0 +description: Learn how to upgrade AI SDK 5.x to 6.0. +--- + +# Migrate AI SDK 5.x to 6.0 + +## Recommended Migration Process + +1. Backup your project. If you use a versioning control system, make sure all previous versions are committed. +1. Upgrade to AI SDK 6.0. +1. Follow the breaking changes guide below. +1. Verify your project is working as expected. +1. Commit your changes. + +## AI SDK 6.0 Package Versions + +You need to update the following packages to the latest versions in your `package.json` file(s): + +- `ai` package: `^6.0.0` +- `@ai-sdk/provider` package: `^3.0.0` +- `@ai-sdk/provider-utils` package: `^4.0.0` +- `@ai-sdk/*` packages: `^3.0.0` + +An example upgrade command would be: + +``` +pnpm install ai@latest @ai-sdk/react@latest @ai-sdk/openai@latest +``` + +## Codemods + +The AI SDK provides Codemod transformations to help upgrade your codebase when a +feature is deprecated, removed, or otherwise changed. + +Codemods are transformations that run on your codebase automatically. They +allow you to easily apply many changes without having to manually go through +every file. + +You can run all v6 codemods (v5 → v6 migration) by running the following command +from the root of your project: + +```sh +npx @ai-sdk/codemod v6 +``` + + + There is also an `npx @ai-sdk/codemod upgrade` command, but it runs all + codemods from all versions (v4, v5, and v6). Use `v6` when upgrading from v5. + + +Individual codemods can be run by specifying the name of the codemod: + +```sh +npx @ai-sdk/codemod +``` + +For example, to run a specific v6 codemod: + +```sh +npx @ai-sdk/codemod v6/rename-text-embedding-to-embedding src/ +``` + + + Codemods are intended as a tool to help you with the upgrade process. They may + not cover all of the changes you need to make. You may need to make additional + changes manually. + + +## Codemod Table + +| Codemod Name | Description | +| -------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `rename-text-embedding-to-embedding` | Renames `textEmbeddingModel` to `embeddingModel` and `textEmbedding` to `embedding` on providers | +| `rename-mock-v2-to-v3` | Renames V2 mock classes from `ai/test` to V3 (e.g., `MockLanguageModelV2` → `MockLanguageModelV3`) | +| `rename-tool-call-options-to-tool-execution-options` | Renames the `ToolCallOptions` type to `ToolExecutionOptions` | +| `rename-core-message-to-model-message` | Renames the `CoreMessage` type to `ModelMessage` | +| `rename-converttocoremessages-to-converttomodelmessages` | Renames `convertToCoreMessages` function to `convertToModelMessages` | +| `rename-vertex-provider-metadata-key` | Renames `google` to `vertex` in `providerMetadata` and `providerOptions` for Google Vertex files | +| `wrap-tomodeloutput-parameter` | Wraps `toModelOutput` parameter in object destructuring (`output` → `{ output }`) | +| `add-await-converttomodelmessages` | Adds `await` to `convertToModelMessages` calls (now async in AI SDK 6) | + +## AI SDK Core + +### `Experimental_Agent` to `ToolLoopAgent` Class + +The `Experimental_Agent` class has been replaced with the `ToolLoopAgent` class. Two key changes: + +1. The `system` parameter has been renamed to `instructions` +2. The default `stopWhen` has changed from `stepCountIs(1)` to `stepCountIs(20)` + +```tsx filename="AI SDK 5" +import { Experimental_Agent as Agent, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new Agent({ + model: __MODEL__, + system: 'You are a helpful assistant.', + tools: { + // your tools here + }, + stopWhen: stepCountIs(20), // Required for multi-step agent loops +}); + +const result = await agent.generate({ + prompt: 'What is the weather in San Francisco?', +}); +``` + +```tsx filename="AI SDK 6" +import { ToolLoopAgent } from 'ai'; +__PROVIDER_IMPORT__; + +const agent = new ToolLoopAgent({ + model: __MODEL__, + instructions: 'You are a helpful assistant.', + tools: { + // your tools here + }, + // stopWhen defaults to stepCountIs(20) +}); + +const result = await agent.generate({ + prompt: 'What is the weather in San Francisco?', +}); +``` + +Learn more about [building agents](/docs/agents/building-agents). + +### `CoreMessage` Removal + +The deprecated `CoreMessage` type and related functions have been removed ([PR #10710](https://github.com/vercel/ai/pull/10710)). Replace `convertToCoreMessages` with `convertToModelMessages`. + +```tsx filename="AI SDK 5" +import { convertToCoreMessages, type CoreMessage } from 'ai'; + +const coreMessages = convertToCoreMessages(messages); // CoreMessage[] +``` + +```tsx filename="AI SDK 6" +import { convertToModelMessages, type ModelMessage } from 'ai'; + +const modelMessages = await convertToModelMessages(messages); // ModelMessage[] +``` + + + Use the `rename-core-message-to-model-message` and + `rename-converttocoremessages-to-converttomodelmessages` codemods to + automatically update your codebase. + + +### `generateObject` and `streamObject` Deprecation + +`generateObject` and `streamObject` have been deprecated ([PR #10754](https://github.com/vercel/ai/pull/10754)). +They will be removed in a future version. +Use `generateText` and `streamText` with an `output` setting instead. + +```tsx filename="AI SDK 5" +import { generateObject } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const { object } = await generateObject({ + model: __MODEL__, + schema: z.object({ + recipe: z.object({ + name: z.string(), + ingredients: z.array(z.object({ name: z.string(), amount: z.string() })), + steps: z.array(z.string()), + }), + }), + prompt: 'Generate a lasagna recipe.', +}); +``` + +```tsx filename="AI SDK 6" +import { generateText, Output } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const { output } = await generateText({ + model: __MODEL__, + output: Output.object({ + schema: z.object({ + recipe: z.object({ + name: z.string(), + ingredients: z.array( + z.object({ name: z.string(), amount: z.string() }), + ), + steps: z.array(z.string()), + }), + }), + }), + prompt: 'Generate a lasagna recipe.', +}); +``` + +For streaming structured data, replace `streamObject` with `streamText`: + +```tsx filename="AI SDK 5" +import { streamObject } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const { partialObjectStream } = streamObject({ + model: __MODEL__, + schema: z.object({ + recipe: z.object({ + name: z.string(), + ingredients: z.array(z.object({ name: z.string(), amount: z.string() })), + steps: z.array(z.string()), + }), + }), + prompt: 'Generate a lasagna recipe.', +}); + +for await (const partialObject of partialObjectStream) { + console.log(partialObject); +} +``` + +```tsx filename="AI SDK 6" +import { streamText, Output } from 'ai'; +__PROVIDER_IMPORT__; +import { z } from 'zod'; + +const { partialOutputStream } = streamText({ + model: __MODEL__, + output: Output.object({ + schema: z.object({ + recipe: z.object({ + name: z.string(), + ingredients: z.array( + z.object({ name: z.string(), amount: z.string() }), + ), + steps: z.array(z.string()), + }), + }), + }), + prompt: 'Generate a lasagna recipe.', +}); + +for await (const partialObject of partialOutputStream) { + console.log(partialObject); +} +``` + +Learn more about [generating structured data](/docs/ai-sdk-core/generating-structured-data). + +### async `convertToModelMessages` + +`convertToModelMessages()` is async in AI SDK 6 to support async `Tool.toModelOutput()`. + +```tsx filename="AI SDK 5" +import { convertToModelMessages } from 'ai'; + +const modelMessages = convertToModelMessages(uiMessages); +``` + +```tsx filename="AI SDK 6" +import { convertToModelMessages } from 'ai'; + +const modelMessages = await convertToModelMessages(uiMessages); +``` + + + Use the `add-await-converttomodelmessages` codemod to automatically update + your codebase. + + +### `Tool.toModelOutput` changes + +`toModelOutput()` receives a parameter object with an `output` property in AI SDK 6. + +In AI SDK 5, the `output` was the arguments. + +```tsx filename="AI SDK 5" +import { tool } from 'ai'; + +const someTool = tool({ + // ... + toModelOutput: output => { + // ... + }, +}); +``` + +```tsx filename="AI SDK 6" +import { tool } from 'ai'; + +const someTool = tool({ + // ... + toModelOutput: ({ output }) => { + // ... + }, +}); +``` + + + Use the `wrap-tomodeloutput-parameter` codemod to automatically update your + codebase. + + +### `cachedInputTokens` and `reasoningTokens` in `LanguageModelUsage` Deprecation + +`cachedInputTokens` and `reasoningTokens` in `LanguageModelUsage` have been deprecated. + +You can replace `cachedInputTokens` with `inputTokenDetails.cacheReadTokens` +and `reasoningTokens` with `outputTokenDetails.reasoningTokens`. + +### `ToolCallOptions` to `ToolExecutionOptions` Rename + +The `ToolCallOptions` type has been renamed to `ToolExecutionOptions` +and is now deprecated. + + + Use the `rename-tool-call-options-to-tool-execution-options` codemod to + automatically update your codebase. + + +### Per-Tool Strict Mode + +Strict mode for tools is now controlled by setting `strict` on each tool ([PR #10817](https://github.com/vercel/ai/pull/10817)). This enables fine-grained control over strict tool calls, which is important since strict mode depends on the specific tool input schema. + +```tsx filename="AI SDK 5" +__PROVIDER_IMPORT__; +import { streamText, tool } from 'ai'; +import { z } from 'zod'; + +// Tool strict mode was controlled by strictJsonSchema +const result = streamText({ + model: __MODEL__, + tools: { + calculator: tool({ + description: 'A simple calculator', + inputSchema: z.object({ + expression: z.string(), + }), + execute: async ({ expression }) => { + const result = eval(expression); + return { result }; + }, + }), + }, + providerOptions: { + openai: { + strictJsonSchema: true, // Applied to all tools + }, + }, +}); +``` + +```tsx filename="AI SDK 6" +__PROVIDER_IMPORT__; +import { streamText, tool } from 'ai'; +import { z } from 'zod'; + +const result = streamText({ + model: __MODEL__, + tools: { + calculator: tool({ + description: 'A simple calculator', + inputSchema: z.object({ + expression: z.string(), + }), + execute: async ({ expression }) => { + const result = eval(expression); + return { result }; + }, + strict: true, // Control strict mode per tool + }), + }, +}); +``` + +### Flexible Tool Content + +AI SDK 6 introduces more flexible tool output and result content support ([PR #9605](https://github.com/vercel/ai/pull/9605)), enabling richer tool interactions and better support for complex tool execution patterns. + +### `ToolCallRepairFunction` Signature + +The `system` parameter in the `ToolCallRepairFunction` type now accepts `SystemModelMessage` in addition to `string` ([PR #10635](https://github.com/vercel/ai/pull/10635)). This allows for more flexible system message configuration, including provider-specific options like caching. + +```tsx filename="AI SDK 5" +import type { ToolCallRepairFunction } from 'ai'; + +const repairToolCall: ToolCallRepairFunction = async ({ + system, // type: string | undefined + messages, + toolCall, + tools, + inputSchema, + error, +}) => { + // ... +}; +``` + +```tsx filename="AI SDK 6" +import type { ToolCallRepairFunction, SystemModelMessage } from 'ai'; + +const repairToolCall: ToolCallRepairFunction = async ({ + system, // type: string | SystemModelMessage | undefined + messages, + toolCall, + tools, + inputSchema, + error, +}) => { + // Handle both string and SystemModelMessage + const systemText = typeof system === 'string' ? system : system?.content; + // ... +}; +``` + +### Embedding Model Method Rename + +The `textEmbeddingModel` and `textEmbedding` methods on providers have been renamed to `embeddingModel` and `embedding` respectively. Additionally, generics have been removed from `EmbeddingModel`, `embed`, and `embedMany` ([PR #10592](https://github.com/vercel/ai/pull/10592)). + +```tsx filename="AI SDK 5" +import { openai } from '@ai-sdk/openai'; +import { embed } from 'ai'; + +// Using the full method name +const model = openai.textEmbeddingModel('text-embedding-3-small'); + +// Using the shorthand +const model = openai.textEmbedding('text-embedding-3-small'); + +const { embedding } = await embed({ + model: openai.textEmbedding('text-embedding-3-small'), + value: 'sunny day at the beach', +}); +``` + +```tsx filename="AI SDK 6" +import { openai } from '@ai-sdk/openai'; +import { embed } from 'ai'; + +// Using the full method name +const model = openai.embeddingModel('text-embedding-3-small'); + +// Using the shorthand +const model = openai.embedding('text-embedding-3-small'); + +const { embedding } = await embed({ + model: openai.embedding('text-embedding-3-small'), + value: 'sunny day at the beach', +}); +``` + + + Use the `rename-text-embedding-to-embedding` codemod to automatically update + your codebase. + + +### Warning Logger + +AI SDK 6 introduces a warning logger that outputs deprecation warnings and best practice recommendations ([PR #8343](https://github.com/vercel/ai/pull/8343)). + +To disable warning logging, set the `AI_SDK_LOG_WARNINGS` environment variable to `false`: + +```bash +export AI_SDK_LOG_WARNINGS=false +``` + +### Warning Type Unification + +Separate warning types for each generation function have been consolidated into a single `Warning` type exported from the `ai` package ([PR #10631](https://github.com/vercel/ai/pull/10631)). + +```tsx filename="AI SDK 5" +// Separate warning types for each generation function +import type { + CallWarning, + ImageModelCallWarning, + SpeechWarning, + TranscriptionWarning, +} from 'ai'; +``` + +```tsx filename="AI SDK 6" +// Single Warning type for all generation functions +import type { Warning } from 'ai'; +``` + +### Finish reason "unknown" merged into "other" + +The `unknown` finish reason has been removed. It is now returned as `other`. + +## AI SDK UI + +### Tool UI Part Helper Functions Rename + +The tool UI part helper functions have been renamed to better reflect their purpose and to accommodate both static and dynamic tool parts ([PR #XXXX](https://github.com/vercel/ai/pull/XXXX)). + +#### `isToolUIPart` → `isStaticToolUIPart` + +The `isToolUIPart` function has been renamed to `isStaticToolUIPart` to clarify that it checks for static tool parts only. + +```tsx filename="AI SDK 5" +import { isToolUIPart } from 'ai'; + +// Check if a part is a tool UI part +if (isToolUIPart(part)) { + console.log(part.toolName); +} +``` + +```tsx filename="AI SDK 6" +import { isStaticToolUIPart } from 'ai'; + +// Check if a part is a static tool UI part +if (isStaticToolUIPart(part)) { + console.log(part.toolName); +} +``` + +#### `isToolOrDynamicToolUIPart` → `isToolUIPart` + +The `isToolOrDynamicToolUIPart` function has been renamed to `isToolUIPart`. The old name is deprecated but still available. + +```tsx filename="AI SDK 5" +import { isToolOrDynamicToolUIPart } from 'ai'; + +// Check if a part is either a static or dynamic tool UI part +if (isToolOrDynamicToolUIPart(part)) { + console.log('Tool part found'); +} +``` + +```tsx filename="AI SDK 6" +import { isToolUIPart } from 'ai'; + +// Check if a part is either a static or dynamic tool UI part +if (isToolUIPart(part)) { + console.log('Tool part found'); +} +``` + +#### `getToolName` → `getStaticToolName` + +The `getToolName` function has been renamed to `getStaticToolName` to clarify that it returns the tool name from static tool parts only. + +```tsx filename="AI SDK 5" +import { getToolName } from 'ai'; + +// Get the tool name from a tool part +const name = getToolName(toolPart); +``` + +```tsx filename="AI SDK 6" +import { getStaticToolName } from 'ai'; + +// Get the tool name from a static tool part +const name = getStaticToolName(toolPart); +``` + +#### `getToolOrDynamicToolName` → `getToolName` + +The `getToolOrDynamicToolName` function has been renamed to `getToolName`. The old name is deprecated but still available. + +```tsx filename="AI SDK 5" +import { getToolOrDynamicToolName } from 'ai'; + +// Get the tool name from either a static or dynamic tool part +const name = getToolOrDynamicToolName(toolPart); +``` + +```tsx filename="AI SDK 6" +import { getToolName } from 'ai'; + +// Get the tool name from either a static or dynamic tool part +const name = getToolName(toolPart); +``` + +## Providers + +### OpenAI + +#### `strictJsonSchema` Defaults to True + +The `strictJsonSchema` setting for JSON outputs and tool calls is enabled by default ([PR #10752](https://github.com/vercel/ai/pull/10752)). This improves stability and ensures valid JSON output that matches your schema. + +However, strict mode is stricter about schema requirements. If you receive schema rejection errors, adjust your schema (for example, use `null` instead of `undefined`) or disable strict mode. + +```tsx filename="AI SDK 5" +import { openai } from '@ai-sdk/openai'; +import { generateObject } from 'ai'; +import { z } from 'zod'; + +// strictJsonSchema was false by default +const result = await generateObject({ + model: openai('gpt-5.1'), + schema: z.object({ + name: z.string(), + }), + prompt: 'Generate a person', +}); +``` + +```tsx filename="AI SDK 6" +import { openai } from '@ai-sdk/openai'; +import { generateObject } from 'ai'; +import { z } from 'zod'; + +// strictJsonSchema is true by default +const result = await generateObject({ + model: openai('gpt-5.1'), + schema: z.object({ + name: z.string(), + }), + prompt: 'Generate a person', +}); + +// Disable strict mode if needed +const resultNoStrict = await generateObject({ + model: openai('gpt-5.1'), + schema: z.object({ + name: z.string(), + }), + prompt: 'Generate a person', + providerOptions: { + openai: { + strictJsonSchema: false, + } satisfies OpenAIResponsesProviderOptions, + }, +}); +``` + +#### `structuredOutputs` Option Removed from Chat Model + +The `structuredOutputs` provider option has been removed from chat models ([PR #10752](https://github.com/vercel/ai/pull/10752)). Use `strictJsonSchema` instead. + +### Azure + +#### Default Provider Uses Responses API + +The `@ai-sdk/azure` provider now uses the Responses API by default when calling `azure()` ([PR #9868](https://github.com/vercel/ai/pull/9868)). To use the previous Chat Completions API behavior, use `azure.chat()` instead. + +```tsx filename="AI SDK 5" +import { azure } from '@ai-sdk/azure'; + +// Used Chat Completions API +const model = azure('gpt-4o'); +``` + +```tsx filename="AI SDK 6" +import { azure } from '@ai-sdk/azure'; + +// Now uses Responses API by default +const model = azure('gpt-4o'); + +// Use azure.chat() for Chat Completions API +const chatModel = azure.chat('gpt-4o'); + +// Use azure.responses() explicitly for Responses API +const responsesModel = azure.responses('gpt-4o'); +``` + + + The Responses and Chat Completions APIs have different behavior and defaults. + If you depend on the Chat Completions API, switch your model instance to + `azure.chat()` and audit your configuration. + + +#### Responses API `providerMetadata` and `providerOptions` Key + +For the **Responses API**, the `@ai-sdk/azure` provider now uses `azure` as the key for `providerMetadata` and `providerOptions` instead of `openai`. The `openai` key is still supported for `providerOptions` input, but resulting `providerMetadata` output now uses `azure`. + +```tsx filename="AI SDK 5" +import { azure } from '@ai-sdk/azure'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: azure.responses('gpt-5-mini'), // use your own deployment + prompt: 'Hello', + providerOptions: { + openai: { + // AI SDK 5: use `openai` key for Responses API options + reasoningSummary: 'auto', + }, + }, +}); + +// Accessed metadata via 'openai' key +console.log(result.providerMetadata?.openai?.responseId); +``` + +```tsx filename="AI SDK 6" +import { azure } from '@ai-sdk/azure'; +import { generateText } from 'ai'; + +const result = await generateText({ + // azure() now uses the Responses API by default + model: azure('gpt-5-mini'), // use your own deployment + prompt: 'Hello', + providerOptions: { + azure: { + // AI SDK 6: use `azure` key for Responses API options + reasoningSummary: 'auto', + }, + }, +}); + +// Access metadata via 'azure' key +console.log(result.providerMetadata?.azure?.responseId); +``` + +### Anthropic + +#### Structured Outputs Mode + +Anthropic has [ introduced native structured outputs for Claude Sonnet 4.5 and later models ](https://www.claude.com/blog/structured-outputs-on-the-claude-developer-platform). The `@ai-sdk/anthropic` provider now includes a `structuredOutputMode` option to control how structured outputs are generated ([PR #10502](https://github.com/vercel/ai/pull/10502)). + +The available modes are: + +- `'outputFormat'`: Use Anthropic's native `output_format` parameter +- `'jsonTool'`: Use a special JSON tool to specify the structured output format +- `'auto'` (default): Use `'outputFormat'` when supported by the model, otherwise fall back to `'jsonTool'` + +```tsx filename="AI SDK 6" +import { anthropic } from '@ai-sdk/anthropic'; +import { generateObject } from 'ai'; +import { z } from 'zod'; + +const result = await generateObject({ + model: anthropic('claude-sonnet-4-5-20250929'), + schema: z.object({ + name: z.string(), + age: z.number(), + }), + prompt: 'Generate a person', + providerOptions: { + anthropic: { + // Explicitly set the structured output mode (optional) + structuredOutputMode: 'outputFormat', + } satisfies AnthropicProviderOptions, + }, +}); +``` + +### Google Vertex + +#### `providerMetadata` and `providerOptions` Key + +The `@ai-sdk/google-vertex` provider now uses `vertex` as the key for `providerMetadata` and `providerOptions` instead of `google`. The `google` key is still supported for `providerOptions` input, but resulting `providerMetadata` output now uses `vertex`. + +```tsx filename="AI SDK 5" +import { vertex } from '@ai-sdk/google-vertex'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: vertex('gemini-2.5-flash'), + providerOptions: { + google: { + safetySettings: [ + /* ... */ + ], + }, // Used 'google' key + }, + prompt: 'Hello', +}); + +// Accessed metadata via 'google' key +console.log(result.providerMetadata?.google?.safetyRatings); +``` + +```tsx filename="AI SDK 6" +import { vertex } from '@ai-sdk/google-vertex'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: vertex('gemini-2.5-flash'), + providerOptions: { + vertex: { + safetySettings: [ + /* ... */ + ], + }, // Now uses 'vertex' key + }, + prompt: 'Hello', +}); + +// Access metadata via 'vertex' key +console.log(result.providerMetadata?.vertex?.safetyRatings); +``` + + + Use the `rename-vertex-provider-metadata-key` codemod to automatically update + your codebase. + + +## `ai/test` + +### Mock Classes + +V2 mock classes have been removed from the `ai/test` module. Use the new V3 mock classes instead for testing. + +```tsx filename="AI SDK 5" +import { + MockEmbeddingModelV2, + MockImageModelV2, + MockLanguageModelV2, + MockProviderV2, + MockSpeechModelV2, + MockTranscriptionModelV2, +} from 'ai/test'; +``` + +```tsx filename="AI SDK 6" +import { + MockEmbeddingModelV3, + MockImageModelV3, + MockLanguageModelV3, + MockProviderV3, + MockSpeechModelV3, + MockTranscriptionModelV3, +} from 'ai/test'; +``` + + + Use the `rename-mock-v2-to-v3` codemod to automatically update your codebase. + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/25-migration-guide-5-0-data.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/25-migration-guide-5-0-data.mdx new file mode 100644 index 000000000..428111a17 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/25-migration-guide-5-0-data.mdx @@ -0,0 +1,882 @@ +--- +title: Migrate Your Data to AI SDK 5.0 +description: Learn how to migrate your persisted messages and chat data from AI SDK 4.x to 5.0. +--- + +# Migrate Your Data to AI SDK 5.0 + +AI SDK 5.0 introduces changes to the message structure and persistence patterns. Unlike code migrations that can often be automated with codemods, data migration depends on your specific persistence approach, database schema, and application requirements. + +**This guide helps you get your application working with AI SDK 5.0 first** using a runtime conversion layer. This allows you to update your app immediately without database migrations blocking you. You can then migrate your data schema at your own pace. + +## Recommended Migration Process + +Follow this two-phase approach for a safe migration: + +### Phase 1: Get Your App Working (Runtime Conversion) + +**Goal:** Update your application to AI SDK 5.0 without touching your database. + +1. Update dependencies (install v4 types alongside v5) +2. Add conversion functions to transform between v4 and v5 message formats +3. Update data fetching logic to convert messages when reading from the database +4. Update the rest of your application code to AI SDK 5.0 (see the [main migration guide](/docs/migration-guides/migration-guide-5-0)) + +Your database schema remains unchanged during Phase 1. You're only adding a conversion layer that transforms messages at runtime. + +**Timeline:** Can be completed in hours or days. + +### Phase 2: Migrate to V5 Schema (Recommended) + +**Goal:** Migrate your data to a v5-compatible schema, eliminating the runtime conversion overhead. + +While Phase 1 gets you working immediately, migrate your schema soon after completing Phase 1. This phase uses a side-by-side migration approach with an equivalent v5 schema: + +1. Create `messages_v5` table alongside existing `messages` table +2. Start dual-writing to both tables (with conversion) +3. Run a background migration to convert existing messages +4. Switch reads to the v5 schema +5. Remove conversion from your route handlers +6. Remove dual-write (write only to v5) +7. Drop old tables + +**Timeline:** Do this soon after Phase 1. + +**Why this matters:** + +- Removes runtime conversion overhead +- Eliminates technical debt early +- Type safety with v5 message format +- Easier to maintain and extend + +## Understanding the Changes + +Before starting, understand the main persistence-related changes in AI SDK 5.0: + +**AI SDK 4.0:** + +- `content` field for text +- `reasoning` as a top-level property +- `toolInvocations` as a top-level property +- `parts` (optional) ordered array + +**AI SDK 5.0:** + +- `parts` array is the single source of truth +- `content` is removed (deprecated) and accessed via a `text` part +- `reasoning` is removed and replaced with a `reasoning` part +- `toolInvocations` is removed and replaced with `tool-${toolName}` parts with `input`/`output` (renamed from `args`/`result`) +- `data` role removed (use data parts instead) + +## Phase 1: Runtime Conversion Pattern + +This creates a conversion layer without making changes to your database schema. + +### Step 1: Update Dependencies + +To get proper TypeScript types for your v4 messages, install the v4 package alongside v5 using npm aliases: + +```json filename="package.json" +{ + "dependencies": { + "ai": "^5.0.0", + "ai-legacy": "npm:ai@^4.3.2" + } +} +``` + +Run: + +```bash +pnpm install +``` + +Import v4 types for proper type safety: + +```tsx +import type { Message as V4Message } from 'ai-legacy'; +import type { UIMessage } from 'ai'; +``` + +### Step 2: Add Conversion Functions + +Create type guards to detect which message format you're working with, and build a conversion function that handles all v4 message types: + +```tsx +import type { + ToolInvocation, + Message as V4Message, + UIMessage as LegacyUIMessage, +} from 'ai-legacy'; +import type { ToolUIPart, UIMessage, UITools } from 'ai'; + +export type MyUIMessage = UIMessage; + +type V4Part = NonNullable[number]; +type V5Part = MyUIMessage['parts'][number]; + +// Type definitions for V4 parts +type V4ToolInvocationPart = Extract; + +type V4ReasoningPart = Extract; + +type V4SourcePart = Extract; + +type V4FilePart = Extract; + +// Type guards +function isV4Message(msg: V4Message | MyUIMessage): msg is V4Message { + return ( + 'toolInvocations' in msg || + (msg?.parts?.some(p => p.type === 'tool-invocation') ?? false) || + msg?.role === 'data' || + ('reasoning' in msg && typeof msg.reasoning === 'string') || + (msg?.parts?.some(p => 'args' in p || 'result' in p) ?? false) || + (msg?.parts?.some(p => 'reasoning' in p && 'details' in p) ?? false) || + (msg?.parts?.some( + p => p.type === 'file' && 'mimeType' in p && 'data' in p, + ) ?? + false) + ); +} + +function isV4ToolInvocationPart(part: unknown): part is V4ToolInvocationPart { + return ( + typeof part === 'object' && + part !== null && + 'type' in part && + part.type === 'tool-invocation' && + 'toolInvocation' in part + ); +} + +function isV4ReasoningPart(part: unknown): part is V4ReasoningPart { + return ( + typeof part === 'object' && + part !== null && + 'type' in part && + part.type === 'reasoning' && + 'reasoning' in part + ); +} + +function isV4SourcePart(part: unknown): part is V4SourcePart { + return ( + typeof part === 'object' && + part !== null && + 'type' in part && + part.type === 'source' && + 'source' in part + ); +} + +function isV4FilePart(part: unknown): part is V4FilePart { + return ( + typeof part === 'object' && + part !== null && + 'type' in part && + part.type === 'file' && + 'mimeType' in part && + 'data' in part + ); +} + +// State mapping +const V4_TO_V5_STATE_MAP = { + 'partial-call': 'input-streaming', + call: 'input-available', + result: 'output-available', +} as const; + +function convertToolInvocationState( + v4State: ToolInvocation['state'], +): 'input-streaming' | 'input-available' | 'output-available' { + return V4_TO_V5_STATE_MAP[v4State] ?? 'output-available'; +} + +// Tool conversion +function convertV4ToolInvocationToV5ToolUIPart( + toolInvocation: ToolInvocation, +): ToolUIPart { + return { + type: `tool-${toolInvocation.toolName}`, + toolCallId: toolInvocation.toolCallId, + input: toolInvocation.args, + output: + toolInvocation.state === 'result' ? toolInvocation.result : undefined, + state: convertToolInvocationState(toolInvocation.state), + }; +} + +// Part converters +function convertV4ToolInvocationPart(part: V4ToolInvocationPart): V5Part { + return convertV4ToolInvocationToV5ToolUIPart(part.toolInvocation); +} + +function convertV4ReasoningPart(part: V4ReasoningPart): V5Part { + return { type: 'reasoning', text: part.reasoning }; +} + +function convertV4SourcePart(part: V4SourcePart): V5Part { + return { + type: 'source-url', + url: part.source.url, + sourceId: part.source.id, + title: part.source.title, + }; +} + +function convertV4FilePart(part: V4FilePart): V5Part { + return { + type: 'file', + mediaType: part.mimeType, + url: part.data, + }; +} + +function convertPart(part: V4Part | V5Part): V5Part { + if (isV4ToolInvocationPart(part)) { + return convertV4ToolInvocationPart(part); + } + if (isV4ReasoningPart(part)) { + return convertV4ReasoningPart(part); + } + if (isV4SourcePart(part)) { + return convertV4SourcePart(part); + } + if (isV4FilePart(part)) { + return convertV4FilePart(part); + } + // Already V5 format + return part; +} + +// Message conversion +function createBaseMessage( + msg: V4Message | MyUIMessage, + index: number, +): Pick { + return { + id: msg.id || `msg-${index}`, + role: msg.role === 'data' ? 'assistant' : msg.role, + }; +} + +function convertDataMessage(msg: V4Message, index: number): MyUIMessage { + return { + ...createBaseMessage(msg, index), + parts: [ + { + type: 'data-custom', + data: msg.data || msg.content, + }, + ], + }; +} + +function buildPartsFromTopLevelFields(msg: V4Message): MyUIMessage['parts'] { + const parts: MyUIMessage['parts'] = []; + + if (msg.reasoning) { + parts.push({ type: 'reasoning', text: msg.reasoning }); + } + + if (msg.toolInvocations) { + parts.push( + ...msg.toolInvocations.map(convertV4ToolInvocationToV5ToolUIPart), + ); + } + + if (msg.content && typeof msg.content === 'string') { + parts.push({ type: 'text', text: msg.content }); + } + + return parts; +} + +function convertPartsArray(parts: V4Part[]): MyUIMessage['parts'] { + return parts.map(convertPart); +} + +export function convertV4MessageToV5( + msg: V4Message | MyUIMessage, + index: number, +): MyUIMessage { + if (!isV4Message(msg)) { + return msg as MyUIMessage; + } + + if (msg.role === 'data') { + return convertDataMessage(msg, index); + } + + const base = createBaseMessage(msg, index); + const parts = msg.parts + ? convertPartsArray(msg.parts) + : buildPartsFromTopLevelFields(msg); + + return { ...base, parts }; +} + +// V5 to V4 conversion +function convertV5ToolUIPartToV4ToolInvocation( + part: ToolUIPart, +): ToolInvocation { + const state = + part.state === 'input-streaming' + ? 'partial-call' + : part.state === 'input-available' + ? 'call' + : 'result'; + + const toolName = part.type.startsWith('tool-') + ? part.type.slice(5) + : part.type; + + const base = { + toolCallId: part.toolCallId, + toolName, + args: part.input, + state, + }; + + if (state === 'result' && part.output !== undefined) { + return { ...base, state: 'result' as const, result: part.output }; + } + + return base as ToolInvocation; +} + +export function convertV5MessageToV4(msg: MyUIMessage): LegacyUIMessage { + const parts: V4Part[] = []; + + const base: LegacyUIMessage = { + id: msg.id, + role: msg.role, + content: '', + parts, + }; + + let textContent = ''; + let reasoning: string | undefined; + const toolInvocations: ToolInvocation[] = []; + + for (const part of msg.parts) { + if (part.type === 'text') { + textContent = part.text; + parts.push({ type: 'text', text: part.text }); + } else if (part.type === 'reasoning') { + reasoning = part.text; + parts.push({ + type: 'reasoning', + reasoning: part.text, + details: [{ type: 'text', text: part.text }], + }); + } else if (part.type.startsWith('tool-')) { + const toolInvocation = convertV5ToolUIPartToV4ToolInvocation( + part as ToolUIPart, + ); + parts.push({ type: 'tool-invocation', toolInvocation: toolInvocation }); + toolInvocations.push(toolInvocation); + } else if (part.type === 'source-url') { + parts.push({ + type: 'source', + source: { + id: part.sourceId, + url: part.url, + title: part.title, + sourceType: 'url', + }, + }); + } else if (part.type === 'file') { + parts.push({ + type: 'file', + mimeType: part.mediaType, + data: part.url, + }); + } else if (part.type === 'data-custom') { + base.data = part.data; + } + } + + if (textContent) { + base.content = textContent; + } + + if (reasoning) { + base.reasoning = reasoning; + } + + if (toolInvocations.length > 0) { + base.toolInvocations = toolInvocations; + } + + if (parts.length > 0) { + base.parts = parts; + } + return base; +} +``` + +### Step 3: Convert Messages When Reading + +Apply the conversion when loading messages from your database: + +Adapt this code to your specific database and ORM. + +```tsx +import { convertV4MessageToV5, type MyUIMessage } from './conversion'; + +export async function loadChat(chatId: string): Promise { + // Fetch messages from your database (pseudocode - update based on your data access layer) + const rawMessages = await db + .select() + .from(messages) + .where(eq(messages.chatId, chatId)) + .orderBy(messages.createdAt); + + // Convert on read + return rawMessages.map((msg, index) => convertV4MessageToV5(msg, index)); +} +``` + +### Step 4: Convert Messages When Saving + +In Phase 1, your application runs on v5 but your database stores v4 format. Convert messages inline in your route handlers before passing them to your database functions: + +```tsx +import { + convertV5MessageToV4, + convertV4MessageToV5, + type MyUIMessage, +} from './conversion'; +import { upsertMessage, loadChat } from './db/actions'; +import { streamText, generateId, convertToModelMessages } from 'ai'; +__PROVIDER_IMPORT__; + +export async function POST(req: Request) { + const { message, chatId }: { message: MyUIMessage; chatId: string } = + await req.json(); + + // Convert and save incoming user message (v5 to v4 inline) + await upsertMessage({ + chatId, + id: message.id, + message: convertV5MessageToV4(message), // convert to v4 + }); + + // Load previous messages (already in v5 format) + const previousMessages = await loadChat(chatId); + const messages = [...previousMessages, message]; + + const result = streamText({ + model: __MODEL__, + messages: convertToModelMessages(messages), + tools: { + // Your tools here + }, + }); + + return result.toUIMessageStreamResponse({ + generateMessageId: generateId, + originalMessages: messages, + onFinish: async ({ responseMessage }) => { + // Convert and save assistant response (v5 to v4 inline) + await upsertMessage({ + chatId, + id: responseMessage.id, + message: convertV5MessageToV4(responseMessage), + }); + }, + }); +} +``` + +Keep your `upsertMessage` (or equivalent) function unchanged to continue working with v4 messages. + +With Steps 3 and 4 complete, you have a bidirectional conversion layer: + +- **Reading:** v4 (database) → v5 (application) +- **Writing:** v5 (application) → v4 (database) + +Your database schema remains unchanged, but your application now works with v5 format. + +**What's next:** Follow the main migration guide to update the rest of your application code to AI SDK 5.0, including API routes, components, and other code that uses the AI SDK. Then proceed to Phase 2. + +See the [main migration guide](/docs/migration-guides/migration-guide-5-0) for details. + +## Phase 2: Side-by-Side Schema Migration + +Now that your application is updated to AI SDK 5.0 and working with the runtime conversion layer from Phase 1, you have a fully functional system. However, **the conversion functions are only a temporary solution**. Your database still stores messages in the v4 format, which means: + +- Every read operation requires runtime conversion overhead +- You maintain backward compatibility code indefinitely +- Future features require working with the legacy schema + +**Phase 2 migrates your message history to the v5 schema**, eliminating the conversion layer and enabling better performance and long-term maintainability. + +This phase uses a simplified approach: create a new `messages_v5` table with the same structure as your current `messages` table, but storing v5-formatted message parts. + + +**Adapt phase 2 examples to your setup** + +These code examples demonstrate migration patterns. Your implementation will differ based on your database (Postgres, MySQL, SQLite), ORM (Drizzle, Prisma, raw SQL), schema design, and data persistence patterns. + +Use these examples as a guide, then adapt them to your specific setup. + + + +### Overview: Migration Strategy + +1. **Create `messages_v5` table** alongside existing `messages` table +2. **Dual-write** new messages to both schemas (with conversion) +3. **Background migration** to convert existing messages +4. **Verify** data integrity +5. **Update read functions** to use `messages_v5` schema +6. **Remove conversion** from route handlers +7. **Remove dual-write** (write only to `messages_v5`) +8. **Clean up** old tables + +This ensures your application keeps running throughout the migration with no data loss risk. + +### Step 1: Create V5 Schema Alongside V4 + +Create a new `messages_v5` table with the same structure as your existing table, but designed to store v5 message parts: + +**Existing v4 Schema (keep running):** + +```typescript +import { UIMessage } from 'ai-legacy'; + +export const messages = pgTable('messages', { + id: varchar() + .primaryKey() + .$defaultFn(() => nanoid()), + chatId: varchar() + .references(() => chats.id, { onDelete: 'cascade' }) + .notNull(), + createdAt: timestamp().defaultNow().notNull(), + parts: jsonb().$type().notNull(), + role: text().$type().notNull(), +}); +``` + +**New v5 Schema (create alongside):** + +```typescript +import { MyUIMessage } from './conversion'; + +export const messages_v5 = pgTable('messages_v5', { + id: varchar() + .primaryKey() + .$defaultFn(() => nanoid()), + chatId: varchar() + .references(() => chats.id, { onDelete: 'cascade' }) + .notNull(), + createdAt: timestamp().defaultNow().notNull(), + parts: jsonb().$type().notNull(), + role: text().$type().notNull(), +}); +``` + +Run your migration to create the new table: + +```bash +pnpm drizzle-kit generate +pnpm drizzle-kit migrate +``` + +### Step 2: Implement Dual-Write for New Messages + +Update your save functions to write to both schemas during the migration period. This ensures new messages are available in both formats: + +```typescript +import { convertV4MessageToV5 } from './conversion'; +import { messages, messages_v5 } from './schema'; +import type { UIMessage } from 'ai-legacy'; + +export const upsertMessage = async ({ + chatId, + message, + id, +}: { + id: string; + chatId: string; + message: UIMessage; // Still accepts v4 format +}) => { + return await db.transaction(async tx => { + // Write to v4 schema (existing) + const [result] = await tx + .insert(messages) + .values({ + chatId, + parts: message.parts ?? [], + role: message.role, + id, + }) + .onConflictDoUpdate({ + target: messages.id, + set: { + parts: message.parts ?? [], + chatId, + }, + }) + .returning(); + + // Convert and write to v5 schema (new) + const v5Message = convertV4MessageToV5( + { + ...message, + content: '', + }, + 0, + ); + + await tx + .insert(messages_v5) + .values({ + chatId, + parts: v5Message.parts ?? [], + role: v5Message.role, + id, + }) + .onConflictDoUpdate({ + target: messages_v5.id, + set: { + parts: v5Message.parts ?? [], + chatId, + }, + }); + + return result; + }); +}; +``` + +### Step 3: Migrate Existing Messages + +Create a script to migrate existing messages from v4 to v5 schema: + +```typescript +import { convertV4MessageToV5 } from './conversion'; +import { db } from './db'; +import { messages, messages_v5 } from './db/schema'; + +async function migrateExistingMessages() { + console.log('Starting migration of existing messages...'); + + // Get all v4 messages that haven't been migrated yet + const migratedIds = await db.select({ id: messages_v5.id }).from(messages_v5); + + const migratedIdSet = new Set(migratedIds.map(m => m.id)); + + const allMessages = await db.select().from(messages); + const unmigrated = allMessages.filter(msg => !migratedIdSet.has(msg.id)); + + console.log(`Found ${unmigrated.length} messages to migrate`); + + let migrated = 0; + let errors = 0; + const batchSize = 100; + + for (let i = 0; i < unmigrated.length; i += batchSize) { + const batch = unmigrated.slice(i, i + batchSize); + + await db.transaction(async tx => { + for (const msg of batch) { + try { + // Convert message to v5 format + const v5Message = convertV4MessageToV5( + { + id: msg.id, + content: '', + role: msg.role, + parts: msg.parts, + createdAt: msg.createdAt, + }, + 0, + ); + + // Insert into v5 messages table + await tx.insert(messages_v5).values({ + id: v5Message.id, + chatId: msg.chatId, + role: v5Message.role, + parts: v5Message.parts, + createdAt: msg.createdAt, + }); + + migrated++; + } catch (error) { + console.error(`Error migrating message ${msg.id}:`, error); + errors++; + } + } + }); + + console.log(`Progress: ${migrated}/${unmigrated.length} messages migrated`); + } + + console.log(`Migration complete: ${migrated} migrated, ${errors} errors`); +} + +// Run migration +migrateExistingMessages().catch(console.error); +``` + +This script: + +- Only migrates messages that haven't been migrated yet +- Uses batching for better performance +- Can be run multiple times safely +- Can be stopped and resumed + +### Step 4: Verify Migration + +Create a verification script to ensure data integrity: + +```typescript +import { count } from 'drizzle-orm'; +import { db } from './db'; +import { messages, messages_v5 } from './db/schema'; + +async function verifyMigration() { + // Count messages in both schemas + const v4Count = await db.select({ count: count() }).from(messages); + const v5Count = await db.select({ count: count() }).from(messages_v5); + + console.log('Migration Status:'); + console.log(`V4 Messages: ${v4Count[0].count}`); + console.log(`V5 Messages: ${v5Count[0].count}`); + console.log( + `Migration progress: ${((v5Count[0].count / v4Count[0].count) * 100).toFixed(2)}%`, + ); +} + +verifyMigration().catch(console.error); +``` + +### Step 5: Read from V5 Schema + +Once migration is complete, update your read functions to use the new v5 schema. Since the data is now in v5 format, you don't need conversion: + +```typescript +import type { MyUIMessage } from './conversion'; + +export const loadChat = async (chatId: string): Promise => { + // Load from v5 schema - no conversion needed + const messages = await db + .select() + .from(messages_v5) + .where(eq(messages_v5.chatId, chatId)) + .orderBy(messages_v5.createdAt); + + return messages; +}; +``` + +### Step 6: Write to V5 Schema Only + +Once your read functions work with v5 and your background migration is complete, stop dual-writing and only write to v5: + +```typescript +import type { MyUIMessage } from './conversion'; + +export const upsertMessage = async ({ + chatId, + message, + id, +}: { + id: string; + chatId: string; + message: MyUIMessage; // Now accepts v5 format +}) => { + // Write to v5 schema only + const [result] = await db + .insert(messages_v5) + .values({ + chatId, + parts: message.parts ?? [], + role: message.role, + id, + }) + .onConflictDoUpdate({ + target: messages_v5.id, + set: { + parts: message.parts ?? [], + chatId, + }, + }) + .returning(); + + return result; +}; +``` + +Update your route handler to pass v5 messages directly: + +```tsx +export async function POST(req: Request) { + const { message, chatId }: { message: MyUIMessage; chatId: string } = + await req.json(); + + // Pass v5 message directly - no conversion needed + await upsertMessage({ + chatId, + id: message.id, + message, + }); + + const previousMessages = await loadChat(chatId); + const messages = [...previousMessages, message]; + + const result = streamText({ + model: __MODEL__, + messages: convertToModelMessages(messages), + tools: { + // Your tools here + }, + }); + + return result.toUIMessageStreamResponse({ + generateMessageId: generateId, + originalMessages: messages, + onFinish: async ({ responseMessage }) => { + await upsertMessage({ + chatId, + id: responseMessage.id, + message: responseMessage, // No conversion needed + }); + }, + }); +} +``` + +### Step 7: Complete the Switch + +Once verification passes and you're confident in the migration: + +1. **Remove conversion functions**: Delete the v4↔v5 conversion utilities +2. **Remove `ai-legacy` dependency**: Uninstall the v4 types package +3. **Test thoroughly**: Ensure your application works correctly with v5 schema +4. **Monitor**: Watch for issues in production +5. **Clean up**: After a safe period (1-2 weeks), drop the old table + +```sql +-- After confirming everything works +DROP TABLE messages; + +-- Optionally rename v5 table to standard name +ALTER TABLE messages_v5 RENAME TO messages; +``` + +**Phase 2 is now complete.** Your application is fully migrated to v5 schema with no runtime conversion overhead. + +## Community Resources + +The following community members have shared their migration experiences: + +- [AI SDK Migration: Handling Previously Saved Messages](https://jhakim.com/blog/ai-sdk-migration-handling-previously-saved-messages) - Detailed transformation function implementation +- [How we migrated Atypica.ai to AI SDK v5 without breaking 10M+ chat histories](https://blog.web3nomad.com/p/how-we-migrated-atypicaai-to-ai-sdk-v5-without-breaking-10m-chat-histories) - Runtime conversion approach for large-scale migration + +For more API change details, see the [main migration guide](/docs/migration-guides/migration-guide-5-0). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/26-migration-guide-5-0.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/26-migration-guide-5-0.mdx new file mode 100644 index 000000000..1bc43d198 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/26-migration-guide-5-0.mdx @@ -0,0 +1,3427 @@ +--- +title: Migrate AI SDK 4.x to 5.0 +description: Learn how to upgrade AI SDK 4.x to 5.0. +--- + +# Migrate AI SDK 4.x to 5.0 + +## Recommended Migration Process + +1. Backup your project. If you use a versioning control system, make sure all previous versions are committed. +1. Upgrade to AI SDK 5.0. +1. Automatically migrate your code using one of these approaches: + - Use the [AI SDK 5 Migration MCP Server](#ai-sdk-5-migration-mcp-server) for AI-assisted migration in Cursor or other MCP-compatible coding agents + - Use [codemods](#codemods) to automatically transform your code +1. Follow the breaking changes guide below. +1. Verify your project is working as expected. +1. Commit your changes. + +## AI SDK 5 Migration MCP Server + +The [AI SDK 5 Migration Model Context Protocol (MCP) Server](https://github.com/vercel-labs/ai-sdk-5-migration-mcp-server) provides an automated way to migrate your project using a coding agent. This server has been designed for Cursor, but should work with any coding agent that supports MCP. + +To get started, create or edit `.cursor/mcp.json` in your project: + +```json +{ + "mcpServers": { + "ai-sdk-5-migration": { + "url": "https://ai-sdk-5-migration-mcp-server.vercel.app/api/mcp" + } + } +} +``` + +After saving, open the command palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows/Linux) and search for "View: Open MCP Settings". Verify the new server appears and is toggled on. + +Then use this prompt: + +``` +Please migrate this project to AI SDK 5 using the ai-sdk-5-migration mcp server. Start by creating a checklist. +``` + +For more information, see the [AI SDK 5 Migration MCP Server repository](https://github.com/vercel-labs/ai-sdk-5-migration-mcp-server). + +## AI SDK 5.0 Package Versions + +You need to update the following packages to the following versions in your `package.json` file(s): + +- `ai` package: `5.0.0` +- `@ai-sdk/provider` package: `2.0.0` +- `@ai-sdk/provider-utils` package: `3.0.0` +- `@ai-sdk/*` packages: `2.0.0` (other `@ai-sdk` packages) + +Additionally, you need to update the following peer dependencies: + +- `zod` package: `4.1.8` or later (recommended to avoid TypeScript performance issues) + +An example upgrade command would be: + +``` +npm install ai @ai-sdk/react @ai-sdk/openai zod@^4.1.8 +``` + + + If you encounter TypeScript performance issues after upgrading, ensure you're + using Zod 4.1.8 or later. If the issue persists, update your `tsconfig.json` + to use `moduleResolution: "nodenext"`. See the [TypeScript performance + troubleshooting guide](/docs/troubleshooting/typescript-performance-zod) for + more details. + + +## Codemods + +The AI SDK provides Codemod transformations to help upgrade your codebase when a +feature is deprecated, removed, or otherwise changed. + +Codemods are transformations that run on your codebase automatically. They +allow you to easily apply many changes without having to manually go through +every file. + + + Codemods are intended as a tool to help you with the upgrade process. They may + not cover all of the changes you need to make. You may need to make additional + changes manually. + + +You can run all codemods provided as part of the 5.0 upgrade process by running +the following command from the root of your project: + +```sh +npx @ai-sdk/codemod upgrade +``` + +To run only the v5 codemods (v4 → v5 migration): + +```sh +npx @ai-sdk/codemod v5 +``` + +Individual codemods can be run by specifying the name of the codemod: + +```sh +npx @ai-sdk/codemod +``` + +For example, to run a specific v5 codemod: + +```sh +npx @ai-sdk/codemod v5/rename-format-stream-part src/ +``` + +See also the [table of codemods](#codemod-table). In addition, the latest set of +codemods can be found in the +[`@ai-sdk/codemod`](https://github.com/vercel/ai/tree/main/packages/codemod/src/codemods) +repository. + +## AI SDK Core Changes + +### generateText and streamText Changes + +#### Maximum Output Tokens + +The `maxTokens` parameter has been renamed to `maxOutputTokens` for clarity. + +```tsx filename="AI SDK 4.0" +const result = await generateText({ + model: __MODEL__, + maxTokens: 1024, + prompt: 'Hello, world!', +}); +``` + +```tsx filename="AI SDK 5.0" +const result = await generateText({ + model: __MODEL__, + maxOutputTokens: 1024, + prompt: 'Hello, world!', +}); +``` + +### Message and Type System Changes + +#### Core Type Renames + +##### `CoreMessage` → `ModelMessage` + +```tsx filename="AI SDK 4.0" +import { CoreMessage } from 'ai'; +``` + +```tsx filename="AI SDK 5.0" +import { ModelMessage } from 'ai'; +``` + +##### `Message` → `UIMessage` + +```tsx filename="AI SDK 4.0" +import { Message, CreateMessage } from 'ai'; +``` + +```tsx filename="AI SDK 5.0" +import { UIMessage, CreateUIMessage } from 'ai'; +``` + +##### `convertToCoreMessages` → `convertToModelMessages` + +```tsx filename="AI SDK 4.0" +import { convertToCoreMessages, streamText } from 'ai'; + +const result = await streamText({ + model: __MODEL__, + messages: convertToCoreMessages(messages), +}); +``` + +```tsx filename="AI SDK 5.0" +import { convertToModelMessages, streamText } from 'ai'; + +const result = await streamText({ + model: __MODEL__, + messages: convertToModelMessages(messages), +}); +``` + + + For more information about model messages, see the [Model Message + reference](/docs/reference/ai-sdk-core/model-message). + + +### UIMessage Changes + +#### Content → Parts Array + +For `UIMessage`s (previously called `Message`), the `.content` property has been replaced with a `parts` array structure. + +```tsx filename="AI SDK 4.0" +import { type Message } from 'ai'; // v4 Message type + +// Messages (useChat) - had content property +const message: Message = { + id: '1', + role: 'user', + content: 'Bonjour!', +}; +``` + +```tsx filename="AI SDK 5.0" +import { type UIMessage, type ModelMessage } from 'ai'; + +// UIMessages (useChat) - now use parts array +const uiMessage: UIMessage = { + id: '1', + role: 'user', + parts: [{ type: 'text', text: 'Bonjour!' }], +}; +``` + +#### Data Role Removed + +The `data` role has been removed from UI messages. + +```tsx filename="AI SDK 4.0" +const message = { + role: 'data', + content: 'Some content', + data: { customField: 'value' }, +}; +``` + +```tsx filename="AI SDK 5.0" +// V5: Use UI message streams with custom data parts +const stream = createUIMessageStream({ + execute({ writer }) { + // Write custom data instead of message annotations + writer.write({ + type: 'data-custom', + id: 'custom-1', + data: { customField: 'value' }, + }); + }, +}); +``` + +#### UIMessage Reasoning Structure + +The reasoning property on UI messages has been moved to parts. + +```tsx filename="AI SDK 4.0" +const message: Message = { + role: 'assistant', + content: 'Hello', + reasoning: 'I will greet the user', +}; +``` + +```tsx filename="AI SDK 5.0" +const message: UIMessage = { + role: 'assistant', + parts: [ + { + type: 'reasoning', + text: 'I will greet the user', + }, + { + type: 'text', + text: 'Hello', + }, + ], +}; +``` + +#### Reasoning Part Property Rename + +The `reasoning` property on reasoning UI parts has been renamed to `text`. + +```tsx filename="AI SDK 4.0" +{ + message.parts.map((part, index) => { + if (part.type === 'reasoning') { + return ( +
+ {part.reasoning} +
+ ); + } + }); +} +``` + +```tsx filename="AI SDK 5.0" +{ + message.parts.map((part, index) => { + if (part.type === 'reasoning') { + return ( +
+ {part.text} +
+ ); + } + }); +} +``` + +### File Part Changes + +File parts now use `.url` instead of `.data` and `.mimeType`. + +```tsx filename="AI SDK 4.0" +{ + messages.map(message => ( +
+ {message.parts.map((part, index) => { + if (part.type === 'text') { + return
{part.text}
; + } else if (part.type === 'file' && part.mimeType.startsWith('image/')) { + return ( + + ); + } + })} +
+ )); +} +``` + +```tsx filename="AI SDK 5.0" +{ + messages.map(message => ( +
+ {message.parts.map((part, index) => { + if (part.type === 'text') { + return
{part.text}
; + } else if ( + part.type === 'file' && + part.mediaType.startsWith('image/') + ) { + return ; + } + })} +
+ )); +} +``` + +### Stream Data Removal + +The `StreamData` class has been completely removed and replaced with UI message streams for custom data. + +```tsx filename="AI SDK 4.0" +import { StreamData } from 'ai'; + +const streamData = new StreamData(); +streamData.append('custom-data'); +streamData.close(); +``` + +```tsx filename="AI SDK 5.0" +import { createUIMessageStream, createUIMessageStreamResponse } from 'ai'; + +const stream = createUIMessageStream({ + execute({ writer }) { + // Write custom data parts + writer.write({ + type: 'data-custom', + id: 'custom-1', + data: 'custom-data', + }); + + // Can merge with LLM streams + const result = streamText({ + model: __MODEL__, + messages, + }); + + writer.merge(result.toUIMessageStream()); + }, +}); + +return createUIMessageStreamResponse({ stream }); +``` + +### Custom Data Streaming: writeMessageAnnotation/writeData Removed + +The `writeMessageAnnotation` and `writeData` methods from `DataStreamWriter` have been removed. Instead, use custom data parts with the new `UIMessage` stream architecture. + +```tsx filename="AI SDK 4.0" +import { createDataStreamResponse, streamText } from 'ai'; + +export async function POST(req: Request) { + const { messages } = await req.json(); + + return createDataStreamResponse({ + execute: dataStream => { + // Write general data + dataStream.writeData('call started'); + + const result = streamText({ + model: __MODEL__, + messages, + onChunk() { + // Write message annotations + dataStream.writeMessageAnnotation({ + status: 'streaming', + timestamp: Date.now(), + }); + }, + onFinish() { + // Write final annotations + dataStream.writeMessageAnnotation({ + id: generateId(), + completed: true, + }); + + dataStream.writeData('call completed'); + }, + }); + + result.mergeIntoDataStream(dataStream); + }, + }); +} +``` + +```tsx filename="AI SDK 5.0" +import { + createUIMessageStream, + createUIMessageStreamResponse, + streamText, + generateId, +} from 'ai'; + +export async function POST(req: Request) { + const { messages } = await req.json(); + + const stream = createUIMessageStream({ + execute: ({ writer }) => { + const statusId = generateId(); + + // Write general data (transient - not added to message history) + writer.write({ + type: 'data-status', + id: statusId, + data: { status: 'call started' }, + }); + + const result = streamText({ + model: __MODEL__, + messages, + onChunk() { + // Write data parts that update during streaming + writer.write({ + type: 'data-status', + id: statusId, + data: { + status: 'streaming', + timestamp: Date.now(), + }, + }); + }, + onFinish() { + // Write final data parts + writer.write({ + type: 'data-status', + id: statusId, + data: { + status: 'completed', + }, + }); + }, + }); + + writer.merge(result.toUIMessageStream()); + }, + }); + + return createUIMessageStreamResponse({ stream }); +} +``` + + + For more detailed information about streaming custom data in v5, see the + [Streaming Data guide](/docs/ai-sdk-ui/streaming-data). + + +##### Provider Metadata → Provider Options + +The `providerMetadata` input parameter has been renamed to `providerOptions`. Note that the returned metadata in results is still called `providerMetadata`. + +```tsx filename="AI SDK 4.0" +const result = await generateText({ + model: 'openai/gpt-5', + prompt: 'Hello', + providerMetadata: { + openai: { store: false }, + }, +}); +``` + +```tsx filename="AI SDK 5.0" +const result = await generateText({ + model: 'openai/gpt-5', + prompt: 'Hello', + providerOptions: { + // Input parameter renamed + openai: { store: false }, + }, +}); + +// Returned metadata still uses providerMetadata: +console.log(result.providerMetadata?.openai); +``` + +#### Tool Definition Changes (parameters → inputSchema) + +Tool definitions have been updated to use `inputSchema` instead of `parameters` and error classes have been renamed. + +```tsx filename="AI SDK 4.0" +import { tool } from 'ai'; + +const weatherTool = tool({ + description: 'Get the weather for a city', + parameters: z.object({ + city: z.string(), + }), + execute: async ({ city }) => { + return `Weather in ${city}`; + }, +}); +``` + +```tsx filename="AI SDK 5.0" +import { tool } from 'ai'; + +const weatherTool = tool({ + description: 'Get the weather for a city', + inputSchema: z.object({ + city: z.string(), + }), + execute: async ({ city }) => { + return `Weather in ${city}`; + }, +}); +``` + +#### Tool Result Content: experimental_toToolResultContent → toModelOutput + +The `experimental_toToolResultContent` option has been renamed to `toModelOutput` and is no longer experimental. + +```tsx filename="AI SDK 4.0" +const screenshotTool = tool({ + description: 'Take a screenshot', + parameters: z.object({}), + execute: async () => { + const imageData = await takeScreenshot(); + return imageData; // base64 string + }, + experimental_toToolResultContent: result => [{ type: 'image', data: result }], +}); +``` + +```tsx filename="AI SDK 5.0" +const screenshotTool = tool({ + description: 'Take a screenshot', + inputSchema: z.object({}), + execute: async () => { + const imageData = await takeScreenshot(); + return imageData; + }, + toModelOutput: result => ({ + type: 'content', + value: [{ type: 'media', mediaType: 'image/png', data: result }], + }), +}); +``` + +### Tool Property Changes (args/result → input/output) + +Tool call and result properties have been renamed for better consistency with schemas. + +```tsx filename="AI SDK 4.0" +// Tool calls used "args" and "result" +for await (const part of result.fullStream) { + switch (part.type) { + case 'tool-call': + console.log('Tool args:', part.args); + break; + case 'tool-result': + console.log('Tool result:', part.result); + break; + } +} +``` + +```tsx filename="AI SDK 5.0" +// Tool calls now use "input" and "output" +for await (const part of result.fullStream) { + switch (part.type) { + case 'tool-call': + console.log('Tool input:', part.input); + break; + case 'tool-result': + console.log('Tool output:', part.output); + break; + } +} +``` + +### Tool Execution Error Handling + +The `ToolExecutionError` class has been removed. Tool execution errors now appear as `tool-error` content parts in the result steps, enabling automated LLM roundtrips in multi-step scenarios. + +```tsx filename="AI SDK 4.0" +import { ToolExecutionError } from 'ai'; + +try { + const result = await generateText({ + // ... + }); +} catch (error) { + if (error instanceof ToolExecutionError) { + console.log('Tool execution failed:', error.message); + console.log('Tool name:', error.toolName); + console.log('Tool input:', error.toolInput); + } +} +``` + +```tsx filename="AI SDK 5.0" +// Tool execution errors now appear in result steps +const { steps } = await generateText({ + // ... +}); + +// check for tool errors in the steps +const toolErrors = steps.flatMap(step => + step.content.filter(part => part.type === 'tool-error'), +); + +toolErrors.forEach(toolError => { + console.log('Tool error:', toolError.error); + console.log('Tool name:', toolError.toolName); + console.log('Tool input:', toolError.input); +}); +``` + +For streaming scenarios, tool execution errors appear as `tool-error` parts in the stream, while other errors appear as `error` parts. + +### Tool Call Streaming Now Default (toolCallStreaming Removed) + +The `toolCallStreaming` option has been removed in AI SDK 5.0. Tool call streaming is now always enabled by default. + +```tsx filename="AI SDK 4.0" +const result = streamText({ + model: __MODEL__, + messages, + toolCallStreaming: true, // Optional parameter to enable streaming + tools: { + weatherTool, + searchTool, + }, +}); +``` + +```tsx filename="AI SDK 5.0" +const result = streamText({ + model: __MODEL__, + messages: convertToModelMessages(messages), + // toolCallStreaming removed - streaming is always enabled + tools: { + weatherTool, + searchTool, + }, +}); +``` + +### Tool Part Type Changes (UIMessage) + +In v5, UI tool parts use typed naming: `tool-${toolName}` instead of generic types. + +```tsx filename="AI SDK 4.0" +// Generic tool-invocation type +{ + message.parts.map(part => { + if (part.type === 'tool-invocation') { + return
{part.toolInvocation.toolName}
; + } + }); +} +``` + +```tsx filename="AI SDK 5.0" +// Type-safe tool parts with specific names +{ + message.parts.map(part => { + switch (part.type) { + case 'tool-getWeatherInformation': + return
Getting weather...
; + case 'tool-askForConfirmation': + return
Asking for confirmation...
; + } + }); +} +``` + +### Dynamic Tools Support + +AI SDK 5.0 introduces dynamic tools for handling tools with unknown types at development time, such as MCP tools without schemas or user-defined functions at runtime. + +#### New dynamicTool Helper + +The new `dynamicTool` helper function allows you to define tools where the input and output types are not known at compile time. + +```tsx filename="AI SDK 5.0" +import { dynamicTool } from 'ai'; +import { z } from 'zod'; + +// Define a dynamic tool +const runtimeTool = dynamicTool({ + description: 'A tool defined at runtime', + inputSchema: z.object({}), + execute: async input => { + // Input and output are typed as 'unknown' + return { result: `Processed: ${input.query}` }; + }, +}); +``` + +#### MCP Tools Without Schemas + +MCP tools that don't provide schemas are now automatically treated as dynamic tools: + +```tsx filename="AI SDK 5.0" +import { MCPClient } from 'ai'; + +const client = new MCPClient({ + /* ... */ +}); +const tools = await client.getTools(); + +// Tools without schemas are now 'dynamic' type +// and won't break type inference when mixed with static tools +``` + +#### Type-Safe Handling with Mixed Tools + +When using both static and dynamic tools together, use the `dynamic` flag for type narrowing: + +```tsx filename="AI SDK 5.0" +const result = await generateText({ + model: __MODEL__, + tools: { + // Static tool with known types + weather: weatherTool, + // Dynamic tool with unknown types + customDynamicTool: dynamicTool({ + /* ... */ + }), + }, + onStepFinish: step => { + // Handle tool calls with type safety + for (const toolCall of step.toolCalls) { + if (toolCall.dynamic) { + // Dynamic tool: input/output are 'unknown' + console.log('Dynamic tool called:', toolCall.toolName); + continue; + } + + // Static tools have full type inference + switch (toolCall.toolName) { + case 'weather': + // TypeScript knows the exact types + console.log(toolCall.input.location); // string + break; + } + } + }, +}); +``` + +#### New dynamic-tool UI Part + +UI messages now include a `dynamic-tool` part type for rendering dynamic tool invocations: + +```tsx filename="AI SDK 5.0" +{ + message.parts.map((part, index) => { + switch (part.type) { + // Static tools use specific types + case 'tool-weather': + return
Weather: {part.input.city}
; + + // Dynamic tools use the generic dynamic-tool type + case 'dynamic-tool': + return ( +
+ Dynamic tool: {part.toolName} +
{JSON.stringify(part.input, null, 2)}
+
+ ); + } + }); +} +``` + +#### Breaking Change: Type Narrowing Required for Tool Calls and Results + +When iterating over `toolCalls` and `toolResults`, you now need to check the `dynamic` flag first for proper type narrowing: + +```tsx filename="AI SDK 4.0" +// Direct type checking worked without dynamic flag +onStepFinish: step => { + for (const toolCall of step.toolCalls) { + switch (toolCall.toolName) { + case 'weather': + console.log(toolCall.input.location); // typed as string + break; + case 'search': + console.log(toolCall.input.query); // typed as string + break; + } + } +}; +``` + +```tsx filename="AI SDK 5.0" +// Must check dynamic flag first for type narrowing +onStepFinish: step => { + for (const toolCall of step.toolCalls) { + // Check if it's a dynamic tool first + if (toolCall.dynamic) { + console.log('Dynamic tool:', toolCall.toolName); + console.log('Input:', toolCall.input); // typed as unknown + continue; + } + + // Now TypeScript knows it's a static tool + switch (toolCall.toolName) { + case 'weather': + console.log(toolCall.input.location); // typed as string + break; + case 'search': + console.log(toolCall.input.query); // typed as string + break; + } + } +}; +``` + +### Tool UI Part State Changes + +Tool UI parts now use more granular states that better represent the streaming lifecycle and error handling. + +```tsx filename="AI SDK 4.0" +// Old states +{ + message.parts.map(part => { + if (part.type === 'tool-invocation') { + switch (part.toolInvocation.state) { + case 'partial-call': + return
Loading...
; + case 'call': + return ( +
+ Tool called with {JSON.stringify(part.toolInvocation.args)} +
+ ); + case 'result': + return
Result: {part.toolInvocation.result}
; + } + } + }); +} +``` + +```tsx filename="AI SDK 5.0" +// New granular states +{ + message.parts.map(part => { + switch (part.type) { + case 'tool-getWeatherInformation': + switch (part.state) { + case 'input-streaming': + return
{JSON.stringify(part.input, null, 2)}
; + case 'input-available': + return
Getting weather for {part.input.city}...
; + case 'output-available': + return
Weather: {part.output}
; + case 'output-error': + return
Error: {part.errorText}
; + } + } + }); +} +``` + +**State Changes:** + +- `partial-call` → `input-streaming` (tool input being streamed) +- `call` → `input-available` (tool input complete, ready to execute) +- `result` → `output-available` (tool execution successful) +- New: `output-error` (tool execution failed) + +#### Rendering Tool Invocations (Catch-All Pattern) + +In v4, you typically rendered tool invocations using a catch-all `tool-invocation` type. In v5, the **recommended approach is to handle each tool specifically using its typed part name (e.g., `tool-getWeather`)**. However, if you need a catch-all pattern for rendering all tool invocations the same way, you can use the `isToolUIPart` and `getToolName` helper functions as a fallback. + +```tsx filename="AI SDK 4.0" +{ + message.parts.map((part, index) => { + switch (part.type) { + case 'text': + return
{part.text}
; + case 'tool-invocation': + const { toolInvocation } = part; + return ( +
+ + {toolInvocation.toolName} + {toolInvocation.state === 'result' ? ( + Click to expand + ) : ( + calling... + )} + + {toolInvocation.state === 'result' ? ( +
+
{JSON.stringify(toolInvocation.result, null, 2)}
+
+ ) : null} +
+ ); + } + }); +} +``` + +```tsx filename="AI SDK 5.0" +import { isToolUIPart, getToolName } from 'ai'; + +{ + message.parts.map((part, index) => { + switch (part.type) { + case 'text': + return
{part.text}
; + default: + if (isToolUIPart(part)) { + const toolInvocation = part; + return ( +
+ + {getToolName(toolInvocation)} + {toolInvocation.state === 'output-available' ? ( + Click to expand + ) : ( + calling... + )} + + {toolInvocation.state === 'output-available' ? ( +
+
{JSON.stringify(toolInvocation.output, null, 2)}
+
+ ) : null} +
+ ); + } + } + }); +} +``` + +#### Media Type Standardization + +`mimeType` has been renamed to `mediaType` for consistency. Both image and file types are supported in model messages. + +```tsx filename="AI SDK 4.0" +const result = await generateText({ + model: someModel, + messages: [ + { + role: 'user', + content: [ + { type: 'text', text: 'What do you see?' }, + { + type: 'image', + image: new Uint8Array([0, 1, 2, 3]), + mimeType: 'image/png', + }, + { + type: 'file', + data: contents, + mimeType: 'application/pdf', + }, + ], + }, + ], +}); +``` + +```tsx filename="AI SDK 5.0" +const result = await generateText({ + model: someModel, + messages: [ + { + role: 'user', + content: [ + { type: 'text', text: 'What do you see?' }, + { + type: 'image', + image: new Uint8Array([0, 1, 2, 3]), + mediaType: 'image/png', + }, + { + type: 'file', + data: contents, + mediaType: 'application/pdf', + }, + ], + }, + ], +}); +``` + +### Reasoning Support + +#### Reasoning Text Property Rename + +The `.reasoning` property has been renamed to `.reasoningText` for multi-step generations. + +```tsx filename="AI SDK 4.0" +for (const step of steps) { + console.log(step.reasoning); +} +``` + +```tsx filename="AI SDK 5.0" +for (const step of steps) { + console.log(step.reasoningText); +} +``` + +#### Generate Text Reasoning Property Changes + +In `generateText()` and `streamText()` results, reasoning properties have been renamed. + +```tsx filename="AI SDK 4.0" +const result = await generateText({ + model: anthropic('claude-sonnet-4-20250514'), + prompt: 'Explain your reasoning', +}); + +console.log(result.reasoning); // String reasoning text +console.log(result.reasoningDetails); // Array of reasoning details +``` + +```tsx filename="AI SDK 5.0" +const result = await generateText({ + model: anthropic('claude-sonnet-4-20250514'), + prompt: 'Explain your reasoning', +}); + +console.log(result.reasoningText); // String reasoning text +console.log(result.reasoning); // Array of reasoning details +``` + +### Continuation Steps Removal + +The `experimental_continueSteps` option has been removed from `generateText()`. + +```tsx filename="AI SDK 4.0" +const result = await generateText({ + experimental_continueSteps: true, + // ... +}); +``` + +```tsx filename="AI SDK 5.0" +const result = await generateText({ + // experimental_continueSteps has been removed + // Use newer models with higher output token limits instead + // ... +}); +``` + +### Image Generation Changes + +Image model settings have been moved to `providerOptions`. + +```tsx filename="AI SDK 4.0" +await generateImage({ + model: luma.image('photon-flash-1', { + maxImagesPerCall: 5, + pollIntervalMillis: 500, + }), + prompt, + n: 10, +}); +``` + +```tsx filename="AI SDK 5.0" +await generateImage({ + model: luma.image('photon-flash-1'), + prompt, + n: 10, + maxImagesPerCall: 5, + providerOptions: { + luma: { pollIntervalMillis: 500 }, + }, +}); +``` + +### Step Result Changes + +#### Step Type Removal + +The `stepType` property has been removed from step results. + +```tsx filename="AI SDK 4.0" +steps.forEach(step => { + switch (step.stepType) { + case 'initial': + console.log('Initial step'); + break; + case 'tool-result': + console.log('Tool result step'); + break; + case 'done': + console.log('Final step'); + break; + } +}); +``` + +```tsx filename="AI SDK 5.0" +steps.forEach((step, index) => { + if (index === 0) { + console.log('Initial step'); + } else if (step.toolResults.length > 0) { + console.log('Tool result step'); + } else { + console.log('Final step'); + } +}); +``` + +### Step Control: maxSteps → stopWhen + +For core functions like `generateText` and `streamText`, the `maxSteps` parameter has been replaced with `stopWhen`, which provides more flexible control over multi-step execution. The `stopWhen` parameter defines conditions for stopping the generation **when the last step contains tool results**. When multiple conditions are provided as an array, the generation stops if any condition is met. + +```tsx filename="AI SDK 4.0" +// V4: Simple numeric limit +const result = await generateText({ + model: __MODEL__, + messages, + maxSteps: 5, // Stop after a maximum of 5 steps +}); + +// useChat with maxSteps +const { messages } = useChat({ + maxSteps: 3, // Stop after a maximum of 3 steps +}); +``` + +```tsx filename="AI SDK 5.0" +import { stepCountIs, hasToolCall } from 'ai'; + +// V5: Server-side - flexible stopping conditions with stopWhen +const result = await generateText({ + model: __MODEL__, + messages, + // Only triggers when last step has tool results + stopWhen: stepCountIs(5), // Stop at step 5 if tools were called +}); + +// Server-side - stop when specific tool is called +const result = await generateText({ + model: __MODEL__, + messages, + stopWhen: hasToolCall('finalizeTask'), // Stop when finalizeTask tool is called +}); +``` + +**Common stopping patterns:** + +```tsx filename="AI SDK 5.0" +// Stop after N steps (equivalent to old maxSteps) +// Note: Only applies when the last step has tool results +stopWhen: stepCountIs(5); + +// Stop when specific tool is called +stopWhen: hasToolCall('finalizeTask'); + +// Multiple conditions (stops if ANY condition is met) +stopWhen: [ + stepCountIs(10), // Maximum 10 steps + hasToolCall('submitOrder'), // Or when order is submitted +]; + +// Custom condition based on step content +stopWhen: ({ steps }) => { + const lastStep = steps[steps.length - 1]; + // Custom logic - only triggers if last step has tool results + return lastStep?.text?.includes('COMPLETE'); +}; +``` + +**Important:** The `stopWhen` conditions are only evaluated when the last step contains tool results. + +#### Usage vs Total Usage + +Usage properties now distinguish between single step and total usage. + +```tsx filename="AI SDK 4.0" +// usage contained total token usage across all steps +console.log(result.usage); +``` + +```tsx filename="AI SDK 5.0" +// usage contains token usage from the final step only +console.log(result.usage); +// totalUsage contains total token usage across all steps +console.log(result.totalUsage); +``` + +## AI SDK UI Changes + +### Package Structure Changes + +### `@ai-sdk/rsc` Package Extraction + +The `ai/rsc` export has been extracted to a separate package `@ai-sdk/rsc`. + +```tsx filename="AI SDK 4.0" +import { createStreamableValue } from 'ai/rsc'; +``` + +```tsx filename="AI SDK 5.0" +import { createStreamableValue } from '@ai-sdk/rsc'; +``` + +Don't forget to install the new package: `npm install @ai-sdk/rsc` + +### React UI Hooks Moved to `@ai-sdk/react` + +The deprecated `ai/react` export has been removed in favor of `@ai-sdk/react`. + +```tsx filename="AI SDK 4.0" +import { useChat } from 'ai/react'; +``` + +```tsx filename="AI SDK 5.0" +import { useChat } from '@ai-sdk/react'; +``` + + + Don't forget to install the new package: `npm install @ai-sdk/react` + + +### useChat Changes + +The `useChat` hook has undergone significant changes in v5, with new transport architecture, removal of managed input state, and more. + +#### maxSteps Removal + +The `maxSteps` parameter has been removed from `useChat`. You should now use server-side `stopWhen` conditions for multi-step tool execution control, and manually submit tool results and trigger new messages for client-side tool calls. + +```tsx filename="AI SDK 4.0" +const { messages, sendMessage } = useChat({ + maxSteps: 5, // Automatic tool result submission +}); +``` + +```tsx filename="AI SDK 5.0" +// Server-side: Use stopWhen for multi-step control +import { streamText, convertToModelMessages, stepCountIs } from 'ai'; +__PROVIDER_IMPORT__; + +const result = await streamText({ + model: __MODEL__, + messages: convertToModelMessages(messages), + stopWhen: stepCountIs(5), // Stop after 5 steps with tool calls +}); + +// Client-side: Configure automatic submission +import { useChat } from '@ai-sdk/react'; +import { + DefaultChatTransport, + lastAssistantMessageIsCompleteWithToolCalls, +} from 'ai'; + +const { messages, sendMessage, addToolOutput } = useChat({ + // Automatically submit when all tool results are available + sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls, + + async onToolCall({ toolCall }) { + const result = await executeToolCall(toolCall); + + // Important: Don't await addToolOutput inside onToolCall to avoid deadlocks + addToolOutput({ + tool: toolCall.toolName, + toolCallId: toolCall.toolCallId, + output: result, + }); + }, +}); +``` + + + Important: When using `sendAutomaticallyWhen`, don't use `await` with + `addToolOutput` inside `onToolCall` as it can cause deadlocks. The `await` is + useful when you're not using automatic submission and need to ensure the + messages are updated before manually calling `sendMessage()`. + + +This change provides more flexibility for handling tool calls and aligns client behavior with server-side multi-step execution patterns. + +For more details on the new tool submission approach, see the [Tool Result Submission Changes](#tool-result-submission-changes) section below. + +#### Initial Messages Renamed + +The `initialMessages` option has been renamed to `messages`. + +```tsx filename="AI SDK 4.0" +import { useChat, type Message } from '@ai-sdk/react'; + +function ChatComponent({ initialMessages }: { initialMessages: Message[] }) { + const { messages } = useChat({ + initialMessages: initialMessages, + // ... + }); + + // your component +} +``` + +```tsx filename="AI SDK 5.0" +import { useChat, type UIMessage } from '@ai-sdk/react'; + +function ChatComponent({ initialMessages }: { initialMessages: UIMessage[] }) { + const { messages } = useChat({ + messages: initialMessages, + // ... + }); + + // your component +} +``` + +#### Sharing Chat Instances + +In v4, you could share chat state between components by using the same `id` parameter in multiple `useChat` hooks. + +```tsx filename="AI SDK 4.0" +// Component A +const { messages } = useChat({ + id: 'shared-chat', + api: '/api/chat', +}); + +// Component B - would share the same chat state +const { messages } = useChat({ + id: 'shared-chat', + api: '/api/chat', +}); +``` + +In v5, you need to explicitly share chat instances by passing a shared `Chat` instance. + +```tsx filename="AI SDK 5.0" +// e.g. Store Chat instance in React Context and create a custom hook + +// Component A +const { chat } = useSharedChat(); // Custom hook that accesses shared Chat from context + +const { messages, sendMessage } = useChat({ + chat, // Pass the shared chat instance +}); + +// Component B - shares the same chat instance +const { chat } = useSharedChat(); // Same hook to access shared Chat from context + +const { messages } = useChat({ + chat, // Same shared chat instance +}); +``` + +For a complete example of sharing chat state across components, see the [Share Chat State Across Components](/cookbook/next/use-shared-chat-context) recipe. + +#### Chat Transport Architecture + +Configuration is now handled through transport objects instead of direct API options. + +```tsx filename="AI SDK 4.0" +import { useChat } from '@ai-sdk/react'; + +const { messages } = useChat({ + api: '/api/chat', + credentials: 'include', + headers: { 'Custom-Header': 'value' }, +}); +``` + +```tsx filename="AI SDK 5.0" +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; + +const { messages } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + credentials: 'include', + headers: { 'Custom-Header': 'value' }, + }), +}); +``` + +#### Removed Managed Input State + +The `useChat` hook no longer manages input state internally. You must now manage input state manually. + +```tsx filename="AI SDK 4.0" +import { useChat } from '@ai-sdk/react'; + +export default function Page() { + const { messages, input, handleInputChange, handleSubmit } = useChat({ + api: '/api/chat', + }); + + return ( +
+ + +
+ ); +} +``` + +```tsx filename="AI SDK 5.0" +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; +import { useState } from 'react'; + +export default function Page() { + const [input, setInput] = useState(''); + const { messages, sendMessage } = useChat({ + transport: new DefaultChatTransport({ api: '/api/chat' }), + }); + + const handleSubmit = e => { + e.preventDefault(); + sendMessage({ text: input }); + setInput(''); + }; + + return ( +
+ setInput(e.target.value)} /> + +
+ ); +} +``` + +#### Message Sending: `append` → `sendMessage` + +The `append` function has been replaced with `sendMessage` and requires structured message format. + +```tsx filename="AI SDK 4.0" +const { append } = useChat(); + +// Simple text message +append({ role: 'user', content: 'Hello' }); + +// With custom body +append( + { + role: 'user', + content: 'Hello', + }, + { body: { imageUrl: 'https://...' } }, +); +``` + +```tsx filename="AI SDK 5.0" +const { sendMessage } = useChat(); + +// Simple text message (most common usage) +sendMessage({ text: 'Hello' }); + +// Or with explicit parts array +sendMessage({ + parts: [{ type: 'text', text: 'Hello' }], +}); + +// With custom body (via request options) +sendMessage( + { role: 'user', parts: [{ type: 'text', text: 'Hello' }] }, + { body: { imageUrl: 'https://...' } }, +); +``` + +#### Message Regeneration: `reload` → `regenerate` + +The `reload` function has been renamed to `regenerate` with enhanced functionality. + +```tsx filename="AI SDK 4.0" +const { reload } = useChat(); + +// Regenerate last message +reload(); +``` + +```tsx filename="AI SDK 5.0" +const { regenerate } = useChat(); + +// Regenerate last message +regenerate(); + +// Regenerate specific message +regenerate({ messageId: 'message-123' }); +``` + +#### onResponse Removal + +The `onResponse` callback has been removed from `useChat` and `useCompletion`. + +```tsx filename="AI SDK 4.0" +const { messages } = useChat({ + onResponse(response) { + // handle response + }, +}); +``` + +```tsx filename="AI SDK 5.0" +const { messages } = useChat({ + // onResponse is no longer available +}); +``` + +#### Send Extra Message Fields Default + +The `sendExtraMessageFields` option has been removed and is now the default behavior. + +```tsx filename="AI SDK 4.0" +const { messages } = useChat({ + sendExtraMessageFields: true, +}); +``` + +```tsx filename="AI SDK 5.0" +const { messages } = useChat({ + // sendExtraMessageFields is now the default +}); +``` + +#### Keep Last Message on Error Removal + +The `keepLastMessageOnError` option has been removed as it's no longer needed. + +```tsx filename="AI SDK 4.0" +const { messages } = useChat({ + keepLastMessageOnError: true, +}); +``` + +```tsx filename="AI SDK 5.0" +const { messages } = useChat({ + // keepLastMessageOnError is no longer needed +}); +``` + +#### Chat Request Options Changes + +The `data` and `allowEmptySubmit` options have been removed from `ChatRequestOptions`. + +```tsx filename="AI SDK 4.0" +handleSubmit(e, { + data: { imageUrl: 'https://...' }, + body: { custom: 'value' }, + allowEmptySubmit: true, +}); +``` + +```tsx filename="AI SDK 5.0" +sendMessage( + { + /* yourMessage */ + }, + { + body: { + custom: 'value', + imageUrl: 'https://...', // Move data to body + }, + }, +); +``` + +#### Request Options Type Rename + +`RequestOptions` has been renamed to `CompletionRequestOptions`. + +```tsx filename="AI SDK 4.0" +import type { RequestOptions } from 'ai'; +``` + +```tsx filename="AI SDK 5.0" +import type { CompletionRequestOptions } from 'ai'; +``` + +#### addToolResult Renamed to addToolOutput + +The `addToolResult` method has been renamed to `addToolOutput`. Additionally, the `result` parameter has been renamed to `output` for consistency with other tool-related APIs. + +```tsx filename="AI SDK 4.0" +const { addToolResult } = useChat(); + +// Add tool result with 'result' parameter +addToolResult({ + toolCallId: 'tool-call-123', + result: 'Weather: 72°F, sunny', +}); +``` + +```tsx filename="AI SDK 5.0" +const { addToolOutput } = useChat(); + +// Add tool output with 'output' parameter and 'tool' name for type safety +addToolOutput({ + tool: 'getWeather', + toolCallId: 'tool-call-123', + output: 'Weather: 72°F, sunny', +}); +``` + + + `addToolResult` is still available but deprecated. It will be removed in + version 6. + + +#### Tool Result Submission Changes + +The automatic tool result submission behavior has been updated in `useChat` and the `Chat` component. You now have more control and flexibility over when tool results are submitted. + +- `onToolCall` no longer supports returning values to automatically submit tool results +- You must explicitly call `addToolOutput` to provide tool results +- Use `sendAutomaticallyWhen` with `lastAssistantMessageIsCompleteWithToolCalls` helper for automatic submission +- Important: Don't use `await` with `addToolOutput` inside `onToolCall` to avoid deadlocks +- The `maxSteps` parameter has been removed from the `Chat` component and `useChat` hook +- For multi-step tool execution, use server-side `stopWhen` conditions instead (see [maxSteps Removal](#maxsteps-removal)) + +```tsx filename="AI SDK 4.0" +const { messages, sendMessage, addToolResult } = useChat({ + maxSteps: 5, // Removed in v5 + + // Automatic submission by returning a value + async onToolCall({ toolCall }) { + if (toolCall.toolName === 'getLocation') { + const cities = ['New York', 'Los Angeles', 'Chicago', 'San Francisco']; + return cities[Math.floor(Math.random() * cities.length)]; + } + }, +}); +``` + +```tsx filename="AI SDK 5.0" +import { useChat } from '@ai-sdk/react'; +import { + DefaultChatTransport, + lastAssistantMessageIsCompleteWithToolCalls, +} from 'ai'; + +const { messages, sendMessage, addToolOutput } = useChat({ + // Automatic submission with helper + sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls, + + async onToolCall({ toolCall }) { + if (toolCall.toolName === 'getLocation') { + const cities = ['New York', 'Los Angeles', 'Chicago', 'San Francisco']; + + // Important: Don't await inside onToolCall to avoid deadlocks + addToolOutput({ + tool: 'getLocation', + toolCallId: toolCall.toolCallId, + output: cities[Math.floor(Math.random() * cities.length)], + }); + } + }, +}); +``` + +#### Loading State Changes + +The deprecated `isLoading` helper has been removed in favor of `status`. + +```tsx filename="AI SDK 4.0" +const { isLoading } = useChat(); +``` + +```tsx filename="AI SDK 5.0" +const { status } = useChat(); +// Use state instead of isLoading for more granular control +``` + +#### Resume Stream Support + +The resume functionality has been moved from `experimental_resume` to `resumeStream`. + +```tsx filename="AI SDK 4.0" +// Resume was experimental +const { messages } = useChat({ + experimental_resume: true, +}); +``` + +```tsx filename="AI SDK 5.0" +const { messages } = useChat({ + resumeStream: true, // Resume interrupted streams +}); +``` + +#### Dynamic Body Values + +In v4, the `body` option in useChat configuration would dynamically update with component state changes. In v5, the `body` value is only captured at the first render and remains static throughout the component lifecycle. + +```tsx filename="AI SDK 4.0" +const [temperature, setTemperature] = useState(0.7); + +const { messages } = useChat({ + api: '/api/chat', + body: { + temperature, // This would update dynamically in v4 + }, +}); +``` + +```tsx filename="AI SDK 5.0" +const [temperature, setTemperature] = useState(0.7); + +// Option 1: Use request-level configuration (Recommended) +const { messages, sendMessage } = useChat({ + transport: new DefaultChatTransport({ api: '/api/chat' }), +}); + +// Pass dynamic values at request time +sendMessage( + { text: input }, + { + body: { + temperature, // Current temperature value at request time + }, + }, +); + +// Option 2: Use function configuration with useRef +const temperatureRef = useRef(temperature); +temperatureRef.current = temperature; + +const { messages } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + body: () => ({ + temperature: temperatureRef.current, + }), + }), +}); +``` + +For more details on request configuration, see the [Chatbot guide](/docs/ai-sdk-ui/chatbot#request-configuration). + +#### Usage Information + +In v4, usage information was directly accessible through the `onFinish` callback's options parameter. In v5, usage data is attached as metadata to individual messages using the `messageMetadata` function in `toUIMessageStreamResponse`. + +```tsx filename="AI SDK 4.0" +const { messages } = useChat({ + onFinish(message, options) { + const usage = options.usage; + console.log('Usage:', usage); + }, +}); +``` + +```tsx filename="AI SDK 5.0" +import { + convertToModelMessages, + streamText, + UIMessage, + type LanguageModelUsage, +} from 'ai'; +__PROVIDER_IMPORT__; + +// Create a new metadata type (optional for type-safety) +type MyMetadata = { + totalUsage: LanguageModelUsage; +}; + +// Create a new custom message type with your own metadata +export type MyUIMessage = UIMessage; + +export async function POST(req: Request) { + const { messages }: { messages: MyUIMessage[] } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse({ + originalMessages: messages, + messageMetadata: ({ part }) => { + // Send total usage when generation is finished + if (part.type === 'finish') { + return { totalUsage: part.totalUsage }; + } + }, + }); +} +``` + +Then, on the client, you can access the message-level metadata. + +```tsx filename="AI SDK 5.0 - Client" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import type { MyUIMessage } from './api/chat/route'; +import { DefaultChatTransport } from 'ai'; + +export default function Chat() { + // Use custom message type defined on the server (optional for type-safety) + const { messages } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + }), + }); + + return ( +
+ {messages.map(m => ( +
+ {m.role === 'user' ? 'User: ' : 'AI: '} + {m.parts.map(part => { + if (part.type === 'text') { + return part.text; + } + })} + {/* Render usage via metadata */} + {m.metadata?.totalUsage && ( +
Total usage: {m.metadata?.totalUsage.totalTokens} tokens
+ )} +
+ ))} +
+ ); +} +``` + +You can also access your metadata from the `onFinish` callback of `useChat`: + +```tsx filename="AI SDK 5.0 - onFinish" +'use client'; + +import { useChat } from '@ai-sdk/react'; +import type { MyUIMessage } from './api/chat/route'; +import { DefaultChatTransport } from 'ai'; + +export default function Chat() { + // Use custom message type defined on the server (optional for type-safety) + const { messages } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + }), + onFinish: ({ message }) => { + // Access message metadata via onFinish callback + console.log(message.metadata?.totalUsage); + }, + }); +} +``` + +#### Request Body Preparation: experimental_prepareRequestBody → prepareSendMessagesRequest + +The `experimental_prepareRequestBody` option has been replaced with `prepareSendMessagesRequest` in the transport configuration. + +```tsx filename="AI SDK 4.0" +import { useChat } from '@ai-sdk/react'; + +const { messages } = useChat({ + api: '/api/chat', + // Only send the last message to the server: + experimental_prepareRequestBody({ messages, id }) { + return { message: messages[messages.length - 1], id }; + }, +}); +``` + +```tsx filename="AI SDK 5.0" +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; + +const { messages } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + // Only send the last message to the server: + prepareSendMessagesRequest({ messages, id }) { + return { body: { message: messages[messages.length - 1], id } }; + }, + }), +}); +``` + +### `@ai-sdk/vue` Changes + +The Vue.js integration has been completely restructured, replacing the `useChat` composable with a `Chat` class. + +#### useChat Replaced with Chat Class + +```typescript filename="@ai-sdk/vue v1" + +``` + +```typescript filename="@ai-sdk/vue v2" + +``` + +#### Message Structure Changes + +Messages now use a `parts` array instead of a `content` string. + +```typescript filename="@ai-sdk/vue v1" + +``` + +```typescript filename="@ai-sdk/vue v2" + +``` + +### `@ai-sdk/svelte` Changes + +The Svelte integration has also been updated with new constructor patterns and readonly properties. + +#### Constructor API Changes + +```js filename="@ai-sdk/svelte v1" +import { Chat } from '@ai-sdk/svelte'; + +const chatInstance = Chat({ + api: '/api/chat', +}); +``` + +```js filename="@ai-sdk/svelte v2" +import { Chat } from '@ai-sdk/svelte'; +import { DefaultChatTransport } from 'ai'; + +const chatInstance = Chat(() => ({ + transport: new DefaultChatTransport({ api: '/api/chat' }), +})); +``` + +##### Properties Made Readonly + +Properties are now readonly and must be updated using setter methods. + +```js filename="@ai-sdk/svelte v1" +// Direct property mutation was allowed +chatInstance.messages = [...chatInstance.messages, newMessage]; +``` + +```js filename="@ai-sdk/svelte v2" +// Must use setter methods +chatInstance.setMessages([...chatInstance.messages, newMessage]); +``` + +##### Removed Managed Input + +Like React and Vue, input management has been removed from the Svelte integration. + +```js filename="@ai-sdk/svelte v1" +// Input was managed internally +const { messages, input, handleSubmit } = chatInstance; +``` + +```js filename="@ai-sdk/svelte v2" +// Must manage input state manually +let input = ''; +const { messages, sendMessage } = chatInstance; + +const handleSubmit = () => { + sendMessage({ text: input }); + input = ''; +}; +``` + +#### `@ai-sdk/ui-utils` Package Removal + +The `@ai-sdk/ui-utils` package has been removed and its exports moved to the main `ai` package. + +```tsx filename="AI SDK 4.0" +import { getTextFromDataUrl } from '@ai-sdk/ui-utils'; +``` + +```tsx filename="AI SDK 5.0" +import { getTextFromDataUrl } from 'ai'; +``` + +**Note**: `processDataStream` was removed entirely in v5.0. Use `readUIMessageStream` instead for processing UI message streams, or use the more configurable Chat/useChat APIs for most use cases. + +### useCompletion Changes + +The `data` property has been removed from the `useCompletion` hook. + +```tsx filename="AI SDK 4.0" +const { + completion, + handleSubmit, + data, // No longer available +} = useCompletion(); +``` + +```tsx filename="AI SDK 5.0" +const { + completion, + handleSubmit, + // data property removed entirely +} = useCompletion(); +``` + +### useAssistant Removal + +The `useAssistant` hook has been removed. + +```tsx filename="AI SDK 4.0" +import { useAssistant } from '@ai-sdk/react'; +``` + +```tsx filename="AI SDK 5.0" +// useAssistant has been removed +// Use useChat with appropriate configuration instead +``` + +For an implementation of the assistant functionality with AI SDK v5, see this [example repository](https://github.com/vercel-labs/ai-sdk-openai-assistants-api). + +#### Attachments → File Parts + +The `experimental_attachments` property has been replaced with the parts array. + +```tsx filename="AI SDK 4.0" +{ + messages.map(message => ( +
+ {message.content} + +
+ {message.experimental_attachments?.map((attachment, index) => + attachment.contentType?.includes('image/') ? ( + {attachment.name} + ) : attachment.contentType?.includes('text/') ? ( +
+ {getTextFromDataUrl(attachment.url)} +
+ ) : null, + )} +
+
+ )); +} +``` + +```tsx filename="AI SDK 5.0" +{ + messages.map(message => ( +
+ {message.parts.map((part, index) => { + if (part.type === 'text') { + return
{part.text}
; + } + + if (part.type === 'file' && part.mediaType?.startsWith('image/')) { + return ( +
+ +
+ ); + } + })} +
+ )); +} +``` + + + Some models do not support text files (text/plain, text/markdown, text/csv, + etc.) as file parts. For text files, you can read and send the context as a text part + instead: + +```tsx +// Instead of this: +{ type: 'file', data: buffer, mediaType: 'text/plain' } + +// Do this: +{ type: 'text', text: buffer.toString('utf-8') } +``` + + + +### Embedding Changes + +#### Provider Options for Embeddings + +Embedding model settings now use provider options instead of model parameters. + +```tsx filename="AI SDK 4.0" +const { embedding } = await embed({ + model: openai('text-embedding-3-small', { + dimensions: 10, + }), +}); +``` + +```tsx filename="AI SDK 5.0" +const { embedding } = await embed({ + model: openai('text-embedding-3-small'), + providerOptions: { + openai: { + dimensions: 10, + }, + }, +}); +``` + +#### Raw Response → Response + +The `rawResponse` property has been renamed to `response`. + +```tsx filename="AI SDK 4.0" +const { rawResponse } = await embed(/* */); +``` + +```tsx filename="AI SDK 5.0" +const { response } = await embed(/* */); +``` + +#### Parallel Requests in embedMany + +`embedMany` now makes parallel requests with a configurable `maxParallelCalls` option. + +```tsx filename="AI SDK 5.0" +const { embeddings, usage } = await embedMany({ + maxParallelCalls: 2, // Limit parallel requests + model: 'openai/text-embedding-3-small', + values: [ + 'sunny day at the beach', + 'rainy afternoon in the city', + 'snowy night in the mountains', + ], +}); +``` + +#### LangChain Adapter Moved to `@ai-sdk/langchain` + +The `LangChainAdapter` has been moved to `@ai-sdk/langchain` and the API has been updated to use UI message streams. + +```tsx filename="AI SDK 4.0" +import { LangChainAdapter } from 'ai'; + +const response = LangChainAdapter.toDataStreamResponse(stream); +``` + +```tsx filename="AI SDK 5.0" +import { toUIMessageStream } from '@ai-sdk/langchain'; +import { createUIMessageStreamResponse } from 'ai'; + +const response = createUIMessageStreamResponse({ + stream: toUIMessageStream(stream), +}); +``` + + + Don't forget to install the new package: `npm install @ai-sdk/langchain` + + +#### LlamaIndex Adapter Moved to `@ai-sdk/llamaindex` + +The `LlamaIndexAdapter` has been extracted to a separate package `@ai-sdk/llamaindex` and follows the same UI message stream pattern. + +```tsx filename="AI SDK 4.0" +import { LlamaIndexAdapter } from 'ai'; + +const response = LlamaIndexAdapter.toDataStreamResponse(stream); +``` + +```tsx filename="AI SDK 5.0" +import { toUIMessageStream } from '@ai-sdk/llamaindex'; +import { createUIMessageStreamResponse } from 'ai'; + +const response = createUIMessageStreamResponse({ + stream: toUIMessageStream(stream), +}); +``` + + + Don't forget to install the new package: `npm install @ai-sdk/llamaindex` + + +## Streaming Architecture + +The streaming architecture has been completely redesigned in v5 to support better content differentiation, concurrent streaming of multiple parts, and improved real-time UX. + +### Stream Protocol Changes + +#### Stream Protocol: Single Chunks → Start/Delta/End Pattern + +The fundamental streaming pattern has changed from single chunks to a three-phase pattern with unique IDs for each content block. + +```tsx filename="AI SDK 4.0" +for await (const chunk of result.fullStream) { + switch (chunk.type) { + case 'text-delta': { + process.stdout.write(chunk.textDelta); + break; + } + } +} +``` + +```tsx filename="AI SDK 5.0" +for await (const chunk of result.fullStream) { + switch (chunk.type) { + case 'text-start': { + // New: Initialize a text block with unique ID + console.log(`Starting text block: ${chunk.id}`); + break; + } + case 'text-delta': { + // Changed: Now includes ID and uses 'delta' property + process.stdout.write(chunk.delta); // Changed from 'textDelta' + break; + } + case 'text-end': { + // New: Finalize the text block + console.log(`Completed text block: ${chunk.id}`); + break; + } + } +} +``` + +#### Reasoning Streaming Pattern + +Reasoning content now follows the same start/delta/end pattern: + +```tsx filename="AI SDK 4.0" +for await (const chunk of result.fullStream) { + switch (chunk.type) { + case 'reasoning': { + // Single chunk with full reasoning text + console.log('Reasoning:', chunk.text); + break; + } + } +} +``` + +```tsx filename="AI SDK 5.0" +for await (const chunk of result.fullStream) { + switch (chunk.type) { + case 'reasoning-start': { + console.log(`Starting reasoning block: ${chunk.id}`); + break; + } + case 'reasoning-delta': { + process.stdout.write(chunk.delta); + break; + } + case 'reasoning-end': { + console.log(`Completed reasoning block: ${chunk.id}`); + break; + } + } +} +``` + +#### Tool Input Streaming + +Tool inputs can now be streamed as they're being generated: + +```tsx filename="AI SDK 5.0" +for await (const chunk of result.fullStream) { + switch (chunk.type) { + case 'tool-input-start': { + console.log(`Starting tool input for ${chunk.toolName}: ${chunk.id}`); + break; + } + case 'tool-input-delta': { + // Stream the JSON input as it's being generated + process.stdout.write(chunk.delta); + break; + } + case 'tool-input-end': { + console.log(`Completed tool input: ${chunk.id}`); + break; + } + case 'tool-call': { + // Final tool call with complete input + console.log('Tool call:', chunk.toolName, chunk.input); + break; + } + } +} +``` + +#### onChunk Callback Changes + +The `onChunk` callback now receives the new streaming chunk types with IDs and the start/delta/end pattern. + +```tsx filename="AI SDK 4.0" +const result = streamText({ + model: __MODEL__, + prompt: 'Write a story', + onChunk({ chunk }) { + switch (chunk.type) { + case 'text-delta': { + // Single property with text content + console.log('Text delta:', chunk.textDelta); + break; + } + } + }, +}); +``` + +```tsx filename="AI SDK 5.0" +const result = streamText({ + model: __MODEL__, + prompt: 'Write a story', + onChunk({ chunk }) { + switch (chunk.type) { + case 'text-delta': { + // Text chunks now use single 'text' type + console.log('Text chunk:', chunk.text); + break; + } + case 'reasoning': { + // Reasoning chunks use single 'reasoning' type + console.log('Reasoning chunk:', chunk.text); + break; + } + case 'source': { + console.log('Source chunk:', chunk); + break; + } + case 'tool-call': { + console.log('Tool call:', chunk.toolName, chunk.input); + break; + } + case 'tool-input-start': { + console.log( + `Tool input started for ${chunk.toolName}:`, + chunk.toolCallId, + ); + break; + } + case 'tool-input-delta': { + console.log(`Tool input delta for ${chunk.toolCallId}:`, chunk.delta); + break; + } + case 'tool-result': { + console.log('Tool result:', chunk.output); + break; + } + case 'raw': { + console.log('Raw chunk:', chunk); + break; + } + } + }, +}); +``` + +#### File Stream Parts Restructure + +File parts in streams have been flattened. + +```tsx filename="AI SDK 4.0" +for await (const chunk of result.fullStream) { + switch (chunk.type) { + case 'file': { + console.log('Media type:', chunk.file.mediaType); + console.log('File data:', chunk.file.data); + break; + } + } +} +``` + +```tsx filename="AI SDK 5.0" +for await (const chunk of result.fullStream) { + switch (chunk.type) { + case 'file': { + console.log('Media type:', chunk.mediaType); + console.log('File data:', chunk.data); + break; + } + } +} +``` + +#### Source Stream Parts Restructure + +Source stream parts have been flattened. + +```tsx filename="AI SDK 4.0" +for await (const part of result.fullStream) { + if (part.type === 'source' && part.source.sourceType === 'url') { + console.log('ID:', part.source.id); + console.log('Title:', part.source.title); + console.log('URL:', part.source.url); + } +} +``` + +```tsx filename="AI SDK 5.0" +for await (const part of result.fullStream) { + if (part.type === 'source' && part.sourceType === 'url') { + console.log('ID:', part.id); + console.log('Title:', part.title); + console.log('URL:', part.url); + } +} +``` + +#### Finish Event Changes + +Stream finish events have been renamed for consistency. + +```tsx filename="AI SDK 4.0" +for await (const part of result.fullStream) { + switch (part.type) { + case 'step-finish': { + console.log('Step finished:', part.finishReason); + break; + } + case 'finish': { + console.log('Usage:', part.usage); + break; + } + } +} +``` + +```tsx filename="AI SDK 5.0" +for await (const part of result.fullStream) { + switch (part.type) { + case 'finish-step': { + // Renamed from 'step-finish' + console.log('Step finished:', part.finishReason); + break; + } + case 'finish': { + console.log('Total Usage:', part.totalUsage); // Changed from 'usage' + break; + } + } +} +``` + +### Stream Protocol Changes + +#### Proprietary Protocol -> Server-Sent Events + +The data stream protocol has been updated to use Server-Sent Events. + +```tsx filename="AI SDK 4.0" +import { createDataStream, formatDataStreamPart } from 'ai'; + +const dataStream = createDataStream({ + execute: writer => { + writer.writeData('initialized call'); + writer.write(formatDataStreamPart('text', 'Hello')); + writer.writeSource({ + type: 'source', + sourceType: 'url', + id: 'source-1', + url: 'https://example.com', + title: 'Example Source', + }); + }, +}); +``` + +```tsx filename="AI SDK 5.0" +import { createUIMessageStream } from 'ai'; + +const stream = createUIMessageStream({ + execute: ({ writer }) => { + writer.write({ type: 'data', value: ['initialized call'] }); + writer.write({ type: 'text', value: 'Hello' }); + writer.write({ + type: 'source-url', + value: { + type: 'source', + id: 'source-1', + url: 'https://example.com', + title: 'Example Source', + }, + }); + }, +}); +``` + +#### Data Stream Response Helper Functions Renamed + +The streaming API has been completely restructured from data streams to UI message streams. + +```tsx filename="AI SDK 4.0" +// Express/Node.js servers +app.post('/stream', async (req, res) => { + const result = streamText({ + model: __MODEL__, + prompt: 'Generate content', + }); + + result.pipeDataStreamToResponse(res); +}); + +// Next.js API routes +const result = streamText({ + model: __MODEL__, + prompt: 'Generate content', +}); + +return result.toDataStreamResponse(); +``` + +```tsx filename="AI SDK 5.0" +// Express/Node.js servers +app.post('/stream', async (req, res) => { + const result = streamText({ + model: __MODEL__, + prompt: 'Generate content', + }); + + result.pipeUIMessageStreamToResponse(res); +}); + +// Next.js API routes +const result = streamText({ + model: __MODEL__, + prompt: 'Generate content', +}); + +return result.toUIMessageStreamResponse(); +``` + +#### Stream Transform Function Renaming + +Various stream-related functions have been renamed for consistency. + +```tsx filename="AI SDK 4.0" +import { DataStreamToSSETransformStream } from 'ai'; +``` + +```tsx filename="AI SDK 5.0" +import { JsonToSseTransformStream } from 'ai'; +``` + +#### Error Handling: getErrorMessage → onError + +The `getErrorMessage` option in `toDataStreamResponse` has been replaced with `onError` in `toUIMessageStreamResponse`, providing more control over error forwarding to the client. + +By default, error messages are NOT sent to the client to prevent leaking sensitive information. The `onError` callback allows you to explicitly control what error information is forwarded to the client. + +```tsx filename="AI SDK 4.0" +return result.toDataStreamResponse({ + getErrorMessage: error => { + // Return sanitized error data to send to client + // Only return what you want the client to see! + return { + errorCode: 'STREAM_ERROR', + message: 'An error occurred while processing your request', + // In production, avoid sending error.message directly to prevent information leakage + }; + }, +}); +``` + +```tsx filename="AI SDK 5.0" +return result.toUIMessageStreamResponse({ + onError: error => { + // Return sanitized error data to send to client + // Only return what you want the client to see! + return { + errorCode: 'STREAM_ERROR', + message: 'An error occurred while processing your request', + // In production, avoid sending error.message directly to prevent information leakage + }; + }, +}); +``` + +### Utility Changes + +#### ID Generation Changes + +The `createIdGenerator()` function now requires a `size` argument. + +```tsx filename="AI SDK 4.0" +const generator = createIdGenerator({ prefix: 'msg' }); +const id = generator(16); // Custom size at call time +``` + +```tsx filename="AI SDK 5.0" +const generator = createIdGenerator({ prefix: 'msg', size: 16 }); +const id = generator(); // Fixed size from creation +``` + +#### IDGenerator → IdGenerator + +The type name has been updated. + +```tsx filename="AI SDK 4.0" +import { IDGenerator } from 'ai'; +``` + +```tsx filename="AI SDK 5.0" +import { IdGenerator } from 'ai'; +``` + +### Provider Interface Changes + +#### Language Model V2 Import + +`LanguageModelV3` must now be imported from `@ai-sdk/provider`. + +```tsx filename="AI SDK 4.0" +import { LanguageModelV3 } from 'ai'; +``` + +```tsx filename="AI SDK 5.0" +import { LanguageModelV3 } from '@ai-sdk/provider'; +``` + +#### Middleware Rename + +`LanguageModelV1Middleware` has been renamed and moved. + +```tsx filename="AI SDK 4.0" +import { LanguageModelV1Middleware } from 'ai'; +``` + +```tsx filename="AI SDK 5.0" +import { LanguageModelV3Middleware } from '@ai-sdk/provider'; +``` + +#### Usage Token Properties + +Token usage properties have been renamed for consistency. + +```tsx filename="AI SDK 4.0" +// In language model implementations +{ + usage: { + promptTokens: 10, + completionTokens: 20 + } +} +``` + +```tsx filename="AI SDK 5.0" +// In language model implementations +{ + usage: { + inputTokens: 10, + outputTokens: 20, + totalTokens: 30 // Now required + } +} +``` + +#### Stream Part Type Changes + +The `LanguageModelV3StreamPart` type has been expanded to support the new streaming architecture with start/delta/end patterns and IDs. + +```tsx filename="AI SDK 4.0" +// V4: Simple stream parts +type LanguageModelV3StreamPart = + | { type: 'text-delta'; textDelta: string } + | { type: 'reasoning'; text: string } + | { type: 'tool-call'; toolCallId: string; toolName: string; input: string }; +``` + +```tsx filename="AI SDK 5.0" +// V5: Enhanced stream parts with IDs and lifecycle events +type LanguageModelV3StreamPart = + // Text blocks with start/delta/end pattern + | { + type: 'text-start'; + id: string; + providerMetadata?: SharedV2ProviderMetadata; + } + | { + type: 'text-delta'; + id: string; + delta: string; + providerMetadata?: SharedV2ProviderMetadata; + } + | { + type: 'text-end'; + id: string; + providerMetadata?: SharedV2ProviderMetadata; + } + + // Reasoning blocks with start/delta/end pattern + | { + type: 'reasoning-start'; + id: string; + providerMetadata?: SharedV2ProviderMetadata; + } + | { + type: 'reasoning-delta'; + id: string; + delta: string; + providerMetadata?: SharedV2ProviderMetadata; + } + | { + type: 'reasoning-end'; + id: string; + providerMetadata?: SharedV2ProviderMetadata; + } + + // Tool input streaming + | { + type: 'tool-input-start'; + id: string; + toolName: string; + providerMetadata?: SharedV2ProviderMetadata; + } + | { + type: 'tool-input-delta'; + id: string; + delta: string; + providerMetadata?: SharedV2ProviderMetadata; + } + | { + type: 'tool-input-end'; + id: string; + providerMetadata?: SharedV2ProviderMetadata; + } + + // Enhanced tool calls + | { + type: 'tool-call'; + toolCallId: string; + toolName: string; + input: string; + providerMetadata?: SharedV2ProviderMetadata; + } + + // Stream lifecycle events + | { type: 'stream-start'; warnings: Array } + | { + type: 'finish'; + usage: LanguageModelV3Usage; + finishReason: LanguageModelV3FinishReason; + providerMetadata?: SharedV2ProviderMetadata; + }; +``` + +#### Raw Response → Response + +Provider response objects have been updated. + +```tsx filename="AI SDK 4.0" +// In language model implementations +{ + rawResponse: { + /* ... */ + } +} +``` + +```tsx filename="AI SDK 5.0" +// In language model implementations +{ + response: { + /* ... */ + } +} +``` + +#### `wrapLanguageModel` now stable + +```tsx filename="AI SDK 4.0" +import { experimental_wrapLanguageModel } from 'ai'; +``` + +```tsx filename="AI SDK 5.0" +import { wrapLanguageModel } from 'ai'; +``` + +#### `activeTools` No Longer Experimental + +```tsx filename="AI SDK 4.0" +const result = await generateText({ + model: __MODEL__, + messages, + tools: { weatherTool, locationTool }, + experimental_activeTools: ['weatherTool'], +}); +``` + +```tsx filename="AI SDK 5.0" +const result = await generateText({ + model: __MODEL__, + messages, + tools: { weatherTool, locationTool }, + activeTools: ['weatherTool'], // No longer experimental +}); +``` + +#### `prepareStep` No Longer Experimental + +The `experimental_prepareStep` option has been promoted and no longer requires the experimental prefix. + +```tsx filename="AI SDK 4.0" +const result = await generateText({ + model: __MODEL__, + messages, + tools: { weatherTool, locationTool }, + experimental_prepareStep: ({ steps, stepNumber, model }) => { + console.log('Preparing step:', stepNumber); + return { + activeTools: ['weatherTool'], + system: 'Be helpful and concise.', + }; + }, +}); +``` + +```tsx filename="AI SDK 5.0" +const result = await generateText({ + model: __MODEL__, + messages, + tools: { weatherTool, locationTool }, + prepareStep: ({ steps, stepNumber, model }) => { + console.log('Preparing step:', stepNumber); + return { + activeTools: ['weatherTool'], + system: 'Be helpful and concise.', + // Can also configure toolChoice, model, etc. + }; + }, +}); +``` + +The `prepareStep` function receives `{ steps, stepNumber, model }` and can return: + +- `model`: Different model for this step +- `activeTools`: Which tools to make available +- `toolChoice`: Tool selection strategy +- `system`: System message for this step +- `undefined`: Use default settings + +### Temperature Default Removal + +Temperature is no longer set to `0` by default. + +```tsx filename="AI SDK 4.0" +await generateText({ + model: __MODEL__, + prompt: 'Write a creative story', + // Implicitly temperature: 0 +}); +``` + +```tsx filename="AI SDK 5.0" +await generateText({ + model: __MODEL__, + prompt: 'Write a creative story', + temperature: 0, // Must explicitly set +}); +``` + +## Message Persistence Changes + + + If you have persisted messages in a database, see the [Data Migration + Guide](/docs/migration-guides/migration-guide-5-0-data) for comprehensive + guidance on migrating your stored message data to the v5 format. + + +In v4, you would typically use helper functions like `appendResponseMessages` or `appendClientMessage` to format messages in the `onFinish` callback of `streamText`: + +```tsx filename="AI SDK 4.0" +import { + streamText, + convertToModelMessages, + appendClientMessage, + appendResponseMessages, +} from 'ai'; + +const updatedMessages = appendClientMessage({ + messages, + message: lastUserMessage, +}); + +const result = streamText({ + model: __MODEL__, + messages: updatedMessages, + experimental_generateMessageId: () => generateId(), // ID generation on streamText + onFinish: async ({ responseMessages, usage }) => { + // Use helper functions to format messages + const finalMessages = appendResponseMessages({ + messages: updatedMessages, + responseMessages, + }); + + // Save formatted messages to database + await saveMessages(finalMessages); + }, +}); +``` + +In v5, message persistence is now handled through the `toUIMessageStreamResponse` method, which automatically formats response messages in the `UIMessage` format: + +```tsx filename="AI SDK 5.0" +import { streamText, convertToModelMessages, UIMessage } from 'ai'; + +const messages: UIMessage[] = [ + // Your existing messages in UIMessage format +]; + +const result = streamText({ + model: __MODEL__, + messages: convertToModelMessages(messages), + // experimental_generateMessageId removed from here +}); + +return result.toUIMessageStreamResponse({ + originalMessages: messages, // IMPORTANT: Required to prevent duplicate messages + generateMessageId: () => generateId(), // IMPORTANT: Required for proper message ID generation + onFinish: ({ messages, responseMessage }) => { + // messages contains all messages (original + response) in UIMessage format + saveChat({ chatId, messages }); + + // responseMessage contains just the generated message in UIMessage format + saveMessage({ chatId, message: responseMessage }); + }, +}); +``` + + + **Important:** When using `toUIMessageStreamResponse`, you should always + provide both `originalMessages` and `generateMessageId` parameters. Without + these, you may experience duplicate or repeated assistant messages in your UI. + For more details, see [Troubleshooting: Repeated Assistant + Messages](/docs/troubleshooting/repeated-assistant-messages). + + +### Message ID Generation + +The `experimental_generateMessageId` option has been moved from `streamText` configuration to `toUIMessageStreamResponse`, as it's designed for use with `UIMessage`s rather than `ModelMessage`s. + +```tsx filename="AI SDK 4.0" +const result = streamText({ + model: __MODEL__, + messages, + experimental_generateMessageId: () => generateId(), +}); +``` + +```tsx filename="AI SDK 5.0" +const result = streamText({ + model: __MODEL__, + messages: convertToModelMessages(messages), +}); + +return result.toUIMessageStreamResponse({ + generateMessageId: () => generateId(), // No longer experimental + // ... +}); +``` + +For more details on message IDs and persistence, see the [Chatbot Message Persistence guide](/docs/ai-sdk-ui/chatbot-message-persistence#message-ids). + +### Using createUIMessageStream + +For more complex scenarios, especially when working with data parts, you can use `createUIMessageStream`: + +```tsx filename="AI SDK 5.0 - Advanced" +import { + createUIMessageStream, + createUIMessageStreamResponse, + streamText, + convertToModelMessages, + UIMessage, +} from 'ai'; + +const stream = createUIMessageStream({ + originalMessages: messages, + generateId: generateId, // Required for proper message ID generation + execute: ({ writer }) => { + // Write custom data parts + writer.write({ + type: 'data', + data: { status: 'processing', timestamp: Date.now() }, + }); + + // Stream the AI response + const result = streamText({ + model: __MODEL__, + messages: convertToModelMessages(messages), + }); + + writer.merge(result.toUIMessageStream()); + }, + onFinish: ({ messages }) => { + // messages contains all messages (original + response + data parts) in UIMessage format + saveChat({ chatId, messages }); + }, +}); + +return createUIMessageStreamResponse({ stream }); +``` + +## Provider & Model Changes + +### OpenAI + +#### Default Provider Instance Uses Responses API + +In AI SDK 5, the default OpenAI provider instance uses the Responses API, while AI SDK 4 used the Chat Completions API. The Chat Completions API remains fully supported and you can use it with `openai.chat(...)`. + +```tsx filename="AI SDK 4.0" +import { openai } from '@ai-sdk/openai'; + +const defaultModel = openai('gpt-4.1-mini'); // Chat Completions API +``` + +```tsx filename="AI SDK 5.0" +import { openai } from '@ai-sdk/openai'; + +const defaultModel = openai('gpt-4.1-mini'); // Responses API + +// Specify a specific API when needed: +const chatCompletionsModel = openai.chat('gpt-4.1-mini'); +const responsesModel = openai.responses('gpt-4.1-mini'); +``` + + + The Responses and Chat Completions APIs have different behavior and defaults. + If you depend on the Chat Completions API, switch your model instance to + `openai.chat(...)` and audit your configuration. + + +#### Strict Schemas (`strictSchemas`) with Responses API + +In AI SDK 4.0, you could set the `strictSchemas` option on Responses models (which defaulted to `true`). This option has been renamed to `strictJsonSchema` in AI SDK 5.0 and now defaults to `false`. + +```tsx filename="AI SDK 4.0" +import { z } from 'zod'; +import { generateObject } from 'ai'; +import { openai, type OpenAIResponsesProviderOptions } from '@ai-sdk/openai'; + +const result = await generateObject({ + model: openai.responses('gpt-4.1'), + schema: z.object({ + // ... + }), + providerOptions: { + openai: { + strictSchemas: true, // default behavior in AI SDK 4 + } satisfies OpenAIResponsesProviderOptions, + }, +}); +``` + +```tsx filename="AI SDK 5.0" +import { z } from 'zod'; +import { generateObject } from 'ai'; +import { openai, type OpenAIResponsesProviderOptions } from '@ai-sdk/openai'; + +const result = await generateObject({ + model: openai('gpt-4.1-2024'), // uses Responses API + schema: z.object({ + // ... + }), + providerOptions: { + openai: { + strictJsonSchema: true, // defaults to false, opt back in to the AI SDK 4 strict behavior + } satisfies OpenAIResponsesProviderOptions, + }, +}); +``` + +If you call `openai.chat(...)` to use the Chat Completions API directly, you can type it with `OpenAIChatLanguageModelOptions`. AI SDK 5 adds the same `strictJsonSchema` option there as well. + +#### Structured Outputs + +The `structuredOutputs` option is now configured using provider options rather than as a setting on the model instance. + +```tsx filename="AI SDK 4.0" +import { z } from 'zod'; +import { generateObject } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const result = await generateObject({ + model: openai('gpt-4.1', { structuredOutputs: true }), // use Chat Completions API + schema: z.object({ name: z.string() }), +}); +``` + +```tsx filename="AI SDK 5.0 (Chat Completions API)" +import { z } from 'zod'; +import { generateObject } from 'ai'; +import { openai, type OpenAIChatLanguageModelOptions } from '@ai-sdk/openai'; + +const result = await generateObject({ + model: openai.chat('gpt-4.1'), // use Chat Completions API + schema: z.object({ name: z.string() }), + providerOptions: { + openai: { + structuredOutputs: true, + } satisfies OpenAIChatLanguageModelOptions, + }, +}); +``` + +#### Compatibility Option Removal + +The `compatibility` option has been removed; strict compatibility mode is now the default. + +```tsx filename="AI SDK 4.0" +const openai = createOpenAI({ + compatibility: 'strict', +}); +``` + +```tsx filename="AI SDK 5.0" +const openai = createOpenAI({ + // strict compatibility is now the default +}); +``` + +#### Legacy Function Calls Removal + +The `useLegacyFunctionCalls` option has been removed. + +```tsx filename="AI SDK 4.0" +const result = streamText({ + model: openai('gpt-4.1', { useLegacyFunctionCalls: true }), +}); +``` + +```tsx filename="AI SDK 5.0" +const result = streamText({ + model: openai('gpt-4.1'), +}); +``` + +#### Simulate Streaming + +The `simulateStreaming` model option has been replaced with middleware. + +```tsx filename="AI SDK 4.0" +const result = generateText({ + model: openai('gpt-4.1', { simulateStreaming: true }), + prompt: 'Hello, world!', +}); +``` + +```tsx filename="AI SDK 5.0" +import { simulateStreamingMiddleware, wrapLanguageModel } from 'ai'; + +const model = wrapLanguageModel({ + model: openai('gpt-4.1'), + middleware: simulateStreamingMiddleware(), +}); + +const result = generateText({ + model, + prompt: 'Hello, world!', +}); +``` + +### Google + +#### Search Grounding is now a provider defined tool + +Search Grounding is now called "Google Search" and is now a provider defined tool. + +```tsx filename="AI SDK 4.0" +const { text, providerMetadata } = await generateText({ + model: google('gemini-1.5-pro', { + useSearchGrounding: true, + }), + prompt: 'List the top 5 San Francisco news from the past week.', +}); +``` + +```tsx filename="AI SDK 5.0" +import { google } from '@ai-sdk/google'; +const { text, sources, providerMetadata } = await generateText({ + model: google('gemini-1.5-pro'), + prompt: + 'List the top 5 San Francisco news from the past week.' + tools: { + google_search: google.tools.googleSearch({}), + }, +}); +``` + +### Amazon Bedrock + +#### Snake Case → Camel Case + +Provider options have been updated to use camelCase. + +```tsx filename="AI SDK 4.0" +const result = await generateText({ + model: bedrock('amazon.titan-tg1-large'), + prompt: 'Hello, world!', + providerOptions: { + bedrock: { + reasoning_config: { + /* ... */ + }, + }, + }, +}); +``` + +```tsx filename="AI SDK 5.0" +const result = await generateText({ + model: bedrock('amazon.titan-tg1-large'), + prompt: 'Hello, world!', + providerOptions: { + bedrock: { + reasoningConfig: { + /* ... */ + }, + }, + }, +}); +``` + +### Provider-Utils Changes + +Deprecated `CoreTool*` types have been removed. + +```tsx filename="AI SDK 4.0" +import { + CoreToolCall, + CoreToolResult, + CoreToolResultUnion, + CoreToolCallUnion, + CoreToolChoice, +} from '@ai-sdk/provider-utils'; +``` + +```tsx filename="AI SDK 5.0" +import { + ToolCall, + ToolResult, + TypedToolResult, + TypedToolCall, + ToolChoice, +} from '@ai-sdk/provider-utils'; +``` + +## Troubleshooting + +### TypeScript Performance Issues with Zod + +If you experience TypeScript server crashes, slow type checking, or errors like "Type instantiation is excessively deep and possibly infinite" when using Zod with AI SDK 5.0: + +1. **First, ensure you're using Zod 4.1.8 or later** - this version includes a fix for module resolution issues that cause TypeScript performance problems. + +2. If the issue persists, update your `tsconfig.json` to use `moduleResolution: "nodenext"`: + +```json +{ + "compilerOptions": { + "moduleResolution": "nodenext" + // ... other options + } +} +``` + +This resolves the TypeScript performance issues while allowing you to continue using the standard Zod import. If this doesn't resolve the issue, you can try using a version-specific import path as an alternative solution. For detailed troubleshooting steps, see [TypeScript performance issues with Zod](/docs/troubleshooting/typescript-performance-zod). + +## Codemod Table + +The following table lists available codemods for the AI SDK 5.0 upgrade +process. +For more information, see the [Codemods](#codemods) section. + +| Change | Codemod | +| ------------------------------------------------ | ----------------------------------------------------- | +| **AI SDK Core Changes** | | +| Flatten streamText file properties | `v5/flatten-streamtext-file-properties` | +| ID Generation Changes | `v5/require-createIdGenerator-size-argument` | +| IDGenerator → IdGenerator | `v5/rename-IDGenerator-to-IdGenerator` | +| Import LanguageModelV3 from provider package | `v5/import-LanguageModelV3-from-provider-package` | +| Migrate to data stream protocol v2 | `v5/migrate-to-data-stream-protocol-v2` | +| Move image model maxImagesPerCall | `v5/move-image-model-maxImagesPerCall` | +| Move LangChain adapter | `v5/move-langchain-adapter` | +| Move maxSteps to stopWhen | `v5/move-maxsteps-to-stopwhen` | +| Move provider options | `v5/move-provider-options` | +| Move React to AI SDK | `v5/move-react-to-ai-sdk` | +| Move UI utils to AI | `v5/move-ui-utils-to-ai` | +| Remove experimental wrap language model | `v5/remove-experimental-wrap-language-model` | +| Remove experimental activeTools | `v5/remove-experimental-activetools` | +| Remove experimental prepareStep | `v5/remove-experimental-preparestep` | +| Remove experimental continueSteps | `v5/remove-experimental-continuesteps` | +| Remove experimental temperature | `v5/remove-experimental-temperature` | +| Remove experimental truncate | `v5/remove-experimental-truncate` | +| Remove experimental OpenAI compatibility | `v5/remove-experimental-openai-compatibility` | +| Remove experimental OpenAI legacy function calls | `v5/remove-experimental-openai-legacy-function-calls` | +| Remove experimental OpenAI structured outputs | `v5/remove-experimental-openai-structured-outputs` | +| Remove experimental OpenAI store | `v5/remove-experimental-openai-store` | +| Remove experimental OpenAI user | `v5/remove-experimental-openai-user` | +| Remove experimental OpenAI parallel tool calls | `v5/remove-experimental-openai-parallel-tool-calls` | +| Remove experimental OpenAI response format | `v5/remove-experimental-openai-response-format` | +| Remove experimental OpenAI logit bias | `v5/remove-experimental-openai-logit-bias` | +| Remove experimental OpenAI logprobs | `v5/remove-experimental-openai-logprobs` | +| Remove experimental OpenAI seed | `v5/remove-experimental-openai-seed` | +| Remove experimental OpenAI service tier | `v5/remove-experimental-openai-service-tier` | +| Remove experimental OpenAI top logprobs | `v5/remove-experimental-openai-top-logprobs` | +| Remove experimental OpenAI transform | `v5/remove-experimental-openai-transform` | +| Remove experimental OpenAI stream options | `v5/remove-experimental-openai-stream-options` | +| Remove experimental OpenAI prediction | `v5/remove-experimental-openai-prediction` | +| Remove experimental Anthropic caching | `v5/remove-experimental-anthropic-caching` | +| Remove experimental Anthropic computer use | `v5/remove-experimental-anthropic-computer-use` | +| Remove experimental Anthropic PDF support | `v5/remove-experimental-anthropic-pdf-support` | +| Remove experimental Anthropic prompt caching | `v5/remove-experimental-anthropic-prompt-caching` | +| Remove experimental Google search grounding | `v5/remove-experimental-google-search-grounding` | +| Remove experimental Google code execution | `v5/remove-experimental-google-code-execution` | +| Remove experimental Google cached content | `v5/remove-experimental-google-cached-content` | +| Remove experimental Google custom headers | `v5/remove-experimental-google-custom-headers` | +| Rename format stream part | `v5/rename-format-stream-part` | +| Rename parse stream part | `v5/rename-parse-stream-part` | +| Replace image type with file type | `v5/replace-image-type-with-file-type` | +| Replace LlamaIndex adapter | `v5/replace-llamaindex-adapter` | +| Replace onCompletion with onFinal | `v5/replace-oncompletion-with-onfinal` | +| Replace provider metadata with provider options | `v5/replace-provider-metadata-with-provider-options` | +| Replace rawResponse with response | `v5/replace-rawresponse-with-response` | +| Replace redacted reasoning type | `v5/replace-redacted-reasoning-type` | +| Replace simulate streaming | `v5/replace-simulate-streaming` | +| Replace textDelta with text | `v5/replace-textdelta-with-text` | +| Replace usage token properties | `v5/replace-usage-token-properties` | +| Restructure file stream parts | `v5/restructure-file-stream-parts` | +| Restructure source stream parts | `v5/restructure-source-stream-parts` | +| RSC package | `v5/rsc-package` | + +## Changes Between v5 Beta Versions + +This section documents breaking changes between different beta versions of AI SDK 5.0. If you're upgrading from an earlier v5 beta version to a later one, check this section for any changes that might affect your code. + +### fullStream Type Rename: text/reasoning → text-delta/reasoning-delta + +The chunk types in `fullStream` have been renamed for consistency with UI streams and language model streams. + +```tsx filename="AI SDK 5.0 (before beta.26)" +for await (const chunk of result.fullStream) { + switch (chunk.type) { + case 'text-delta': { + process.stdout.write(chunk.text); + break; + } + case 'reasoning': { + console.log('Reasoning:', chunk.text); + break; + } + } +} +``` + +```tsx filename="AI SDK 5.0 (beta.26 and later)" +for await (const chunk of result.fullStream) { + switch (chunk.type) { + case 'text-delta': { + process.stdout.write(chunk.text); + break; + } + case 'reasoning-delta': { + console.log('Reasoning:', chunk.text); + break; + } + } +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/27-migration-guide-4-2.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/27-migration-guide-4-2.mdx new file mode 100644 index 000000000..39e4f3b8b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/27-migration-guide-4-2.mdx @@ -0,0 +1,99 @@ +--- +title: Migrate AI SDK 4.1 to 4.2 +description: Learn how to upgrade AI SDK 4.1 to 4.2. +--- + +# Migrate AI SDK 4.1 to 4.2 + + + Check out the [AI SDK 4.2 release blog + post](https://vercel.com/blog/ai-sdk-4-2) for more information about the + release. + + +This guide will help you upgrade to AI SDK 4.2: + +## Stable APIs + +The following APIs have been moved to stable and no longer have the `experimental_` prefix: + +- `customProvider` +- `providerOptions` (renamed from `providerMetadata` for provider-specific inputs) +- `providerMetadata` (for provider-specific outputs) +- `toolCallStreaming` option for `streamText` + +## Dependency Versions + +AI SDK requires a non-optional `zod` dependency with version `^3.23.8`. + +## UI Message Parts + +In AI SDK 4.2, we've redesigned how `useChat` handles model outputs with message parts and multiple steps. +This is a significant improvement that simplifies rendering complex, multi-modal AI responses in your UI. + +### What's Changed + +Assistant messages with tool calling now get combined into a single message with multiple parts, rather than creating separate messages for each step. +This change addresses two key developments in AI applications: + +1. **Diverse Output Types**: Models now generate more than just text; they produce reasoning steps, sources, and tool calls. +2. **Interleaved Outputs**: In multi-step agent use-cases, these different output types are frequently interleaved. + +### Benefits of the New Approach + +Previously, `useChat` stored different output types separately, which made it challenging to maintain the correct sequence in your UI when these elements were interleaved in a response, +and led to multiple consecutive assistant messages when there were tool calls. For example: + +```javascript +message.content = "Final answer: 42"; +message.reasoning = "First I'll calculate X, then Y..."; +message.toolInvocations = [{toolName: "calculator", args: {...}}]; +``` + +This structure was limiting. The new message parts approach replaces separate properties with an ordered array that preserves the exact sequence: + +```javascript +message.parts = [ + { type: "text", text: "Final answer: 42" }, + { type: "reasoning", reasoning: "First I'll calculate X, then Y..." }, + { type: "tool-invocation", toolInvocation: { toolName: "calculator", args: {...} } }, +]; +``` + +### Migration + +Existing applications using the previous message format will need to update their UI components to handle the new `parts` array. +The fields from the previous format are still available for backward compatibility, but we recommend migrating to the new format for better support of multi-modal and multi-step interactions. + +You can use the `useChat` hook with the new message parts as follows: + +```javascript +function Chat() { + const { messages } = useChat(); + return ( +
+ {messages.map(message => + message.parts.map((part, i) => { + switch (part.type) { + case 'text': + return

{part.text}

; + case 'source': + return

{part.source.url}

; + case 'reasoning': + return
{part.reasoning}
; + case 'tool-invocation': + return
{part.toolInvocation.toolName}
; + case 'file': + return ( + + ); + } + }), + )} +
+ ); +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/28-migration-guide-4-1.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/28-migration-guide-4-1.mdx new file mode 100644 index 000000000..0d5101f48 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/28-migration-guide-4-1.mdx @@ -0,0 +1,14 @@ +--- +title: Migrate AI SDK 4.0 to 4.1 +description: Learn how to upgrade AI SDK 4.0 to 4.1. +--- + +# Migrate AI SDK 4.0 to 4.1 + + + Check out the [AI SDK 4.1 release blog + post](https://vercel.com/blog/ai-sdk-4-1) for more information about the + release. + + +No breaking changes in this release. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/29-migration-guide-4-0.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/29-migration-guide-4-0.mdx new file mode 100644 index 000000000..5e34e9645 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/29-migration-guide-4-0.mdx @@ -0,0 +1,1157 @@ +--- +title: Migrate AI SDK 3.4 to 4.0 +description: Learn how to upgrade AI SDK 3.4 to 4.0. +--- + +# Migrate AI SDK 3.4 to 4.0 + + + Check out the [AI SDK 4.0 release blog + post](https://vercel.com/blog/ai-sdk-4-0) for more information about the + release. + + +## Recommended Migration Process + +1. Backup your project. If you use a versioning control system, make sure all previous versions are committed. +1. [Migrate to AI SDK 3.4](/docs/migration-guides/migration-guide-3-4). +1. Upgrade to AI SDK 4.0. +1. Automatically migrate your code using [codemods](#codemods). + > If you don't want to use codemods, we recommend resolving all deprecation warnings before upgrading to AI SDK 4.0. +1. Follow the breaking changes guide below. +1. Verify your project is working as expected. +1. Commit your changes. + +## AI SDK 4.0 package versions + +You need to update the following packages to the following versions in your `package.json` file(s): + +- `ai` package: `4.0.*` +- `ai-sdk@provider-utils` package: `2.0.*` +- `ai-sdk/*` packages: `1.0.*` (other `@ai-sdk` packages) + +## Codemods + +The AI SDK provides Codemod transformations to help upgrade your codebase when a +feature is deprecated, removed, or otherwise changed. + +Codemods are transformations that run on your codebase programmatically. They +allow you to easily apply many changes without having to manually go through +every file. + + + Codemods are intended as a tool to help you with the upgrade process. They may + not cover all of the changes you need to make. You may need to make additional + changes manually. + + +You can run all codemods provided as part of the 4.0 upgrade process by running +the following command from the root of your project: + +```sh +npx @ai-sdk/codemod upgrade +``` + +To run only the v4 codemods: + +```sh +npx @ai-sdk/codemod v4 +``` + +Individual codemods can be run by specifying the name of the codemod: + +```sh +npx @ai-sdk/codemod +``` + +For example, to run a specific v4 codemod: + +```sh +npx @ai-sdk/codemod v4/replace-baseurl src/ +``` + +See also the [table of codemods](#codemod-table). In addition, the latest set of +codemods can be found in the +[`@ai-sdk/codemod`](https://github.com/vercel/ai/tree/main/packages/codemod/src/codemods) +repository. + +## Provider Changes + +### Removed `baseUrl` option + +The `baseUrl` option has been removed from all providers. Please use the `baseURL` option instead. + +```ts filename="AI SDK 3.4" +const perplexity = createOpenAI({ + // ... + baseUrl: 'https://api.perplexity.ai/', +}); +``` + +```ts filename="AI SDK 4.0" +const perplexity = createOpenAI({ + // ... + baseURL: 'https://api.perplexity.ai/', +}); +``` + +### Anthropic Provider + +#### Removed `Anthropic` facade + +The `Anthropic` facade has been removed from the Anthropic provider. +Please use the `anthropic` object or the `createAnthropic` function instead. + +```ts filename="AI SDK 3.4" +const anthropic = new Anthropic({ + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const anthropic = createAnthropic({ + // ... +}); +``` + +#### Removed `topK` setting + + + There is no codemod available for this change. Please review and update your + code manually. + + +The model specific `topK` setting has been removed from the Anthropic provider. +You can use the standard `topK` setting instead. + +```ts filename="AI SDK 3.4" +const result = await generateText({ + model: anthropic('claude-3-5-sonnet-latest', { + topK: 0.5, + }), +}); +``` + +```ts filename="AI SDK 4.0" +const result = await generateText({ + model: anthropic('claude-3-5-sonnet-latest'), + topK: 0.5, +}); +``` + +### Google Generative AI Provider + +#### Removed `Google` facade + +The `Google` facade has been removed from the Google Generative AI provider. +Please use the `google` object or the `createGoogleGenerativeAI` function instead. + +```ts filename="AI SDK 3.4" +const google = new Google({ + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const google = createGoogleGenerativeAI({ + // ... +}); +``` + +#### Removed `topK` setting + + + There is no codemod available for this change. Please review and update your + code manually. + + +The model-specific `topK` setting has been removed from the Google Generative AI provider. +You can use the standard `topK` setting instead. + +```ts filename="AI SDK 3.4" +const result = await generateText({ + model: google('gemini-1.5-flash', { + topK: 0.5, + }), +}); +``` + +```ts filename="AI SDK 4.0" +const result = await generateText({ + model: google('gemini-1.5-flash'), + topK: 0.5, +}); +``` + +### Google Vertex Provider + +#### Removed `topK` setting + + + There is no codemod available for this change. Please review and update your + code manually. + + +The model-specific `topK` setting has been removed from the Google Vertex provider. +You can use the standard `topK` setting instead. + +```ts filename="AI SDK 3.4" +const result = await generateText({ + model: vertex('gemini-1.5-flash', { + topK: 0.5, + }), +}); +``` + +```ts filename="AI SDK 4.0" +const result = await generateText({ + model: vertex('gemini-1.5-flash'), + topK: 0.5, +}); +``` + +### Mistral Provider + +#### Removed `Mistral` facade + +The `Mistral` facade has been removed from the Mistral provider. +Please use the `mistral` object or the `createMistral` function instead. + +```ts filename="AI SDK 3.4" +const mistral = new Mistral({ + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const mistral = createMistral({ + // ... +}); +``` + +### OpenAI Provider + +#### Removed `OpenAI` facade + +The `OpenAI` facade has been removed from the OpenAI provider. +Please use the `openai` object or the `createOpenAI` function instead. + +```ts filename="AI SDK 3.4" +const openai = new OpenAI({ + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const openai = createOpenAI({ + // ... +}); +``` + +### LangChain Adapter + +#### Removed `toAIStream` + +The `toAIStream` function has been removed from the LangChain adapter. +Please use the `toDataStream` function instead. + +```ts filename="AI SDK 3.4" +LangChainAdapter.toAIStream(stream); +``` + +```ts filename="AI SDK 4.0" +LangChainAdapter.toDataStream(stream); +``` + +## AI SDK Core Changes + +### `streamText` returns immediately + +Instead of returning a Promise, the `streamText` function now returns immediately. +It is not necessary to await the result of `streamText`. + +```ts filename="AI SDK 3.4" +const result = await streamText({ + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const result = streamText({ + // ... +}); +``` + +### `streamObject` returns immediately + +Instead of returning a Promise, the `streamObject` function now returns immediately. +It is not necessary to await the result of `streamObject`. + +```ts filename="AI SDK 3.4" +const result = await streamObject({ + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const result = streamObject({ + // ... +}); +``` + +### Remove roundtrips + +The `maxToolRoundtrips` and `maxAutomaticRoundtrips` options have been removed from the `generateText` and `streamText` functions. +Please use the `maxSteps` option instead. + +The `roundtrips` property has been removed from the `GenerateTextResult` type. +Please use the `steps` property instead. + +```ts filename="AI SDK 3.4" +const { text, roundtrips } = await generateText({ + maxToolRoundtrips: 1, // or maxAutomaticRoundtrips + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const { text, steps } = await generateText({ + maxSteps: 2, + // ... +}); +``` + +### Removed `nanoid` export + +The `nanoid` export has been removed. Please use [`generateId`](/docs/reference/ai-sdk-core/generate-id) instead. + +```ts filename="AI SDK 3.4" +import { nanoid } from 'ai'; +``` + +```ts filename="AI SDK 4.0" +import { generateId } from 'ai'; +``` + +### Increased default size of generated IDs + + + There is no codemod available for this change. Please review and update your + code manually. + + +The [`generateId`](/docs/reference/ai-sdk-core/generate-id) function now +generates 16-character IDs. The previous default was 7 characters. + +This might e.g. require updating your database schema if you limit the length of +IDs. + +```ts filename="AI SDK 4.0" +import { generateId } from 'ai'; + +const id = generateId(); // now 16 characters +``` + +### Removed `ExperimentalMessage` types + +The following types have been removed: + +- `ExperimentalMessage` (use `ModelMessage` instead) +- `ExperimentalUserMessage` (use `CoreUserMessage` instead) +- `ExperimentalAssistantMessage` (use `CoreAssistantMessage` instead) +- `ExperimentalToolMessage` (use `CoreToolMessage` instead) + +```ts filename="AI SDK 3.4" +import { + ExperimentalMessage, + ExperimentalUserMessage, + ExperimentalAssistantMessage, + ExperimentalToolMessage, +} from 'ai'; +``` + +```ts filename="AI SDK 4.0" +import { + ModelMessage, + CoreUserMessage, + CoreAssistantMessage, + CoreToolMessage, +} from 'ai'; +``` + +### Removed `ExperimentalTool` type + +The `ExperimentalTool` type has been removed. Please use the `CoreTool` type instead. + +```ts filename="AI SDK 3.4" +import { ExperimentalTool } from 'ai'; +``` + +```ts filename="AI SDK 4.0" +import { CoreTool } from 'ai'; +``` + +### Removed experimental AI function exports + +The following exports have been removed: + +- `experimental_generateText` (use `generateText` instead) +- `experimental_streamText` (use `streamText` instead) +- `experimental_generateObject` (use `generateObject` instead) +- `experimental_streamObject` (use `streamObject` instead) + +```ts filename="AI SDK 3.4" +import { + experimental_generateText, + experimental_streamText, + experimental_generateObject, + experimental_streamObject, +} from 'ai'; +``` + +```ts filename="AI SDK 4.0" +import { generateText, streamText, generateObject, streamObject } from 'ai'; +``` + +### Removed AI-stream related methods from `streamText` + +The following methods have been removed from the `streamText` result: + +- `toAIStream` +- `pipeAIStreamToResponse` +- `toAIStreamResponse` + +Use the `toDataStream`, `pipeDataStreamToResponse`, and `toDataStreamResponse` functions instead. + +```ts filename="AI SDK 3.4" +const result = await streamText({ + // ... +}); + +result.toAIStream(); +result.pipeAIStreamToResponse(response); +result.toAIStreamResponse(); +``` + +```ts filename="AI SDK 4.0" +const result = streamText({ + // ... +}); + +result.toDataStream(); +result.pipeDataStreamToResponse(response); +result.toUIMessageStreamResponse(); +``` + +### Renamed "formatStreamPart" to "formatDataStreamPart" + +The `formatStreamPart` function has been renamed to `formatDataStreamPart`. + +```ts filename="AI SDK 3.4" +formatStreamPart('text', 'Hello, world!'); +``` + +```ts filename="AI SDK 4.0" +formatDataStreamPart('text', 'Hello, world!'); +``` + +### Renamed "parseStreamPart" to "parseDataStreamPart" + +The `parseStreamPart` function has been renamed to `parseDataStreamPart`. + +```ts filename="AI SDK 3.4" +const part = parseStreamPart(line); +``` + +```ts filename="AI SDK 4.0" +const part = parseDataStreamPart(line); +``` + +### Renamed `TokenUsage`, `CompletionTokenUsage` and `EmbeddingTokenUsage` types + +The `TokenUsage`, `CompletionTokenUsage` and `EmbeddingTokenUsage` types have +been renamed to `LanguageModelUsage` (for the first two) and +`EmbeddingModelUsage` (for the last). + +```ts filename="AI SDK 3.4" +import { TokenUsage, CompletionTokenUsage, EmbeddingTokenUsage } from 'ai'; +``` + +```ts filename="AI SDK 4.0" +import { LanguageModelUsage, EmbeddingModelUsage } from 'ai'; +``` + +### Removed deprecated telemetry data + + + There is no codemod available for this change. Please review and update your + code manually. + + +The following telemetry data values have been removed: + +- `ai.finishReason` (now in `ai.response.finishReason`) +- `ai.result.object` (now in `ai.response.object`) +- `ai.result.text` (now in `ai.response.text`) +- `ai.result.toolCalls` (now in `ai.response.toolCalls`) +- `ai.stream.msToFirstChunk` (now in `ai.response.msToFirstChunk`) + +This change will apply to observability providers and any scripts or automation that you use for processing telemetry data. + +### Provider Registry + +#### Removed experimental_Provider, experimental_ProviderRegistry, and experimental_ModelRegistry + +The `experimental_Provider` interface, `experimental_ProviderRegistry` interface, and `experimental_ModelRegistry` interface have been removed. +Please use the `Provider` interface instead. + +```ts filename="AI SDK 3.4" +import { experimental_Provider, experimental_ProviderRegistry } from 'ai'; +``` + +```ts filename="AI SDK 4.0" +import { Provider } from 'ai'; +``` + + + The model registry is not available any more. Please [register + providers](/docs/reference/ai-sdk-core/provider-registry#setup) instead. + + +#### Removed `experimental_​createModelRegistry` function + +The `experimental_createModelRegistry` function has been removed. +Please use the `experimental_createProviderRegistry` function instead. + +```ts filename="AI SDK 3.4" +import { experimental_createModelRegistry } from 'ai'; +``` + +```ts filename="AI SDK 4.0" +import { experimental_createProviderRegistry } from 'ai'; +``` + + + The model registry is not available any more. Please [register + providers](/docs/reference/ai-sdk-core/provider-registry#setup) instead. + + +### Removed `rawResponse` from results + + + There is no codemod available for this change. Please review and update your + code manually. + + +The `rawResponse` property has been removed from the `generateText`, `streamText`, `generateObject`, and `streamObject` results. +You can use the `response` property instead. + +```ts filename="AI SDK 3.4" +const { text, rawResponse } = await generateText({ + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const { text, response } = await generateText({ + // ... +}); +``` + +### Removed `init` option from `pipeDataStreamToResponse` and `toDataStreamResponse` + + + There is no codemod available for this change. Please review and update your + code manually. + + +The `init` option has been removed from the `pipeDataStreamToResponse` and `toDataStreamResponse` functions. +You can set the values from `init` directly into the `options` object. + +```ts filename="AI SDK 3.4" +const result = await streamText({ + // ... +}); + +result.toUIMessageStreamResponse(response, { + init: { + headers: { + 'X-Custom-Header': 'value', + }, + }, + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const result = streamText({ + // ... +}); + +result.toUIMessageStreamResponse(response, { + headers: { + 'X-Custom-Header': 'value', + }, + // ... +}); +``` + +### Removed `responseMessages` from `generateText` and `streamText` + + + There is no codemod available for this change. Please review and update your + code manually. + + +The `responseMessages` property has been removed from the `generateText` and `streamText` results. +This includes the `onFinish` callback. +Please use the `response.messages` property instead. + +```ts filename="AI SDK 3.4" +const { text, responseMessages } = await generateText({ + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const { text, response } = await generateText({ + // ... +}); + +const responseMessages = response.messages; +``` + +### Removed `experimental_​continuationSteps` option + +The `experimental_continuationSteps` option has been removed from the `generateText` function. +Please use the `experimental_continueSteps` option instead. + +```ts filename="AI SDK 3.4" +const result = await generateText({ + experimental_continuationSteps: true, + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const result = await generateText({ + experimental_continueSteps: true, + // ... +}); +``` + +### Removed `LanguageModelResponseMetadataWithHeaders` type + +The `LanguageModelResponseMetadataWithHeaders` type has been removed. +Please use the `LanguageModelResponseMetadata` type instead. + +```ts filename="AI SDK 3.4" +import { LanguageModelResponseMetadataWithHeaders } from 'ai'; +``` + +```ts filename="AI SDK 4.0" +import { LanguageModelResponseMetadata } from 'ai'; +``` + +#### Changed `streamText` warnings result to Promise + + + There is no codemod available for this change. Please review and update your + code manually. + + +The `warnings` property of the `StreamTextResult` type is now a Promise. + +```ts filename="AI SDK 3.4" +const result = await streamText({ + // ... +}); + +const warnings = result.warnings; +``` + +```ts filename="AI SDK 4.0" +const result = streamText({ + // ... +}); + +const warnings = await result.warnings; +``` + +#### Changed `streamObject` warnings result to Promise + + + There is no codemod available for this change. Please review and update your + code manually. + + +The `warnings` property of the `StreamObjectResult` type is now a Promise. + +```ts filename="AI SDK 3.4" +const result = await streamObject({ + // ... +}); + +const warnings = result.warnings; +``` + +```ts filename="AI SDK 4.0" +const result = streamObject({ + // ... +}); + +const warnings = await result.warnings; +``` + +#### Renamed `simulateReadableStream` `values` to `chunks` + + + There is no codemod available for this change. Please review and update your + code manually. + + +The `simulateReadableStream` function from `ai/test` has been renamed to `chunks`. + +```ts filename="AI SDK 3.4" +import { simulateReadableStream } from 'ai/test'; + +const stream = simulateReadableStream({ + values: [1, 2, 3], + chunkDelayInMs: 100, +}); +``` + +```ts filename="AI SDK 4.0" +import { simulateReadableStream } from 'ai/test'; + +const stream = simulateReadableStream({ + chunks: [1, 2, 3], + chunkDelayInMs: 100, +}); +``` + +## AI SDK RSC Changes + + + There are no codemods available for the changes in this section. Please review + and update your code manually. + + +### Removed `render` function + +The AI SDK RSC 3.0 `render` function has been removed. +Please use the `streamUI` function instead or [switch to AI SDK UI](/docs/ai-sdk-rsc/migrating-to-ui). + +```ts filename="AI SDK 3.0" +import { render } from '@ai-sdk/rsc'; +``` + +```ts filename="AI SDK 4.0" +import { streamUI } from '@ai-sdk/rsc'; +``` + +## AI SDK UI Changes + +### Removed Svelte, Vue, and SolidJS exports + + + This codemod only operates on `.ts` and `.tsx` files. If you have code in + files with other suffixes, please review and update your code manually. + + +The `ai` package no longer exports Svelte, Vue, and SolidJS UI integrations. +You need to install the `@ai-sdk/svelte`, `@ai-sdk/vue`, and `@ai-sdk/solid` packages directly. + +```ts filename="AI SDK 3.4" +import { useChat } from 'ai/svelte'; +``` + +```ts filename="AI SDK 4.0" +import { useChat } from '@ai-sdk/svelte'; +``` + +### Removed `experimental_StreamData` + +The `experimental_StreamData` export has been removed. +Please use the `StreamData` export instead. + +```ts filename="AI SDK 3.4" +import { experimental_StreamData } from 'ai'; +``` + +```ts filename="AI SDK 4.0" +import { StreamData } from 'ai'; +``` + +### `useChat` hook + + + There are no codemods available for the changes in this section. Please review + and update your code manually. + + +#### Removed `streamMode` setting + +The `streamMode` options has been removed from the `useChat` hook. +Please use the `streamProtocol` parameter instead. + +```ts filename="AI SDK 3.4" +const { messages } = useChat({ + streamMode: 'text', + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const { messages } = useChat({ + streamProtocol: 'text', + // ... +}); +``` + +#### Replaced roundtrip setting with `maxSteps` + +The following options have been removed from the `useChat` hook: + +- `experimental_maxAutomaticRoundtrips` +- `maxAutomaticRoundtrips` +- `maxToolRoundtrips` + +Please use the [`maxSteps`](/docs/ai-sdk-core/tools-and-tool-calling#multi-step-calls) option instead. +The value of `maxSteps` is equal to roundtrips + 1. + +```ts filename="AI SDK 3.4" +const { messages } = useChat({ + experimental_maxAutomaticRoundtrips: 2, + // or maxAutomaticRoundtrips + // or maxToolRoundtrips + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const { messages } = useChat({ + maxSteps: 3, // 2 roundtrips + 1 + // ... +}); +``` + +#### Removed `options` setting + +The `options` parameter in the `useChat` hook has been removed. +Please use the `headers` and `body` parameters instead. + +```ts filename="AI SDK 3.4" +const { messages } = useChat({ + options: { + headers: { + 'X-Custom-Header': 'value', + }, + }, + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const { messages } = useChat({ + headers: { + 'X-Custom-Header': 'value', + }, + // ... +}); +``` + +#### Removed `experimental_addToolResult` method + +The `experimental_addToolResult` method has been removed from the `useChat` hook. +Please use the `addToolResult` method instead. + +```ts filename="AI SDK 3.4" +const { messages, experimental_addToolResult } = useChat({ + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const { messages, addToolResult } = useChat({ + // ... +}); +``` + +#### Changed default value of `keepLastMessageOnError` to true and deprecated the option + +The `keepLastMessageOnError` option has been changed to default to `true`. +The option will be removed in the next major release. + +```ts filename="AI SDK 3.4" +const { messages } = useChat({ + keepLastMessageOnError: true, + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const { messages } = useChat({ + // ... +}); +``` + +### `useCompletion` hook + + + There are no codemods available for the changes in this section. Please review + and update your code manually. + + +#### Removed `streamMode` setting + +The `streamMode` options has been removed from the `useCompletion` hook. +Please use the `streamProtocol` parameter instead. + +```ts filename="AI SDK 3.4" +const { text } = useCompletion({ + streamMode: 'text', + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const { text } = useCompletion({ + streamProtocol: 'text', + // ... +}); +``` + +### `useAssistant` hook + +#### Removed `experimental_useAssistant` export + +The `experimental_useAssistant` export has been removed from the `useAssistant` hook. +Please use the `useAssistant` hook directly instead. + +```ts filename="AI SDK 3.4" +import { experimental_useAssistant } from '@ai-sdk/react'; +``` + +```ts filename="AI SDK 4.0" +import { useAssistant } from '@ai-sdk/react'; +``` + +#### Removed `threadId` and `messageId` from `AssistantResponse` + + + There is no codemod available for this change. Please review and update your + code manually. + + +The `threadId` and `messageId` parameters have been removed from the `AssistantResponse` function. +Please use the `threadId` and `messageId` variables from the outer scope instead. + +```ts filename="AI SDK 3.4" +return AssistantResponse( + { threadId: myThreadId, messageId: myMessageId }, + async ({ forwardStream, sendDataMessage, threadId, messageId }) => { + // use threadId and messageId here + }, +); +``` + +```ts filename="AI SDK 4.0" +return AssistantResponse( + { threadId: myThreadId, messageId: myMessageId }, + async ({ forwardStream, sendDataMessage }) => { + // use myThreadId and myMessageId here + }, +); +``` + +#### Removed `experimental_​AssistantResponse` export + + + There is no codemod available for this change. Please review and update your + code manually. + + +The `experimental_AssistantResponse` export has been removed. +Please use the `AssistantResponse` function directly instead. + +```ts filename="AI SDK 3.4" +import { experimental_AssistantResponse } from 'ai'; +``` + +```ts filename="AI SDK 4.0" +import { AssistantResponse } from 'ai'; +``` + +### `experimental_useObject` hook + + + There are no codemods available for the changes in this section. Please review + and update your code manually. + + +The `setInput` helper has been removed from the `experimental_useObject` hook. +Please use the `submit` helper instead. + +```ts filename="AI SDK 3.4" +const { object, setInput } = useObject({ + // ... +}); +``` + +```ts filename="AI SDK 4.0" +const { object, submit } = useObject({ + // ... +}); +``` + +## AI SDK Errors + +### Removed `isXXXError` static methods + +The `isXXXError` static methods have been removed from AI SDK errors. +Please use the `isInstance` method of the corresponding error class instead. + +```ts filename="AI SDK 3.4" +import { APICallError } from 'ai'; + +APICallError.isAPICallError(error); +``` + +```ts filename="AI SDK 4.0" +import { APICallError } from 'ai'; + +APICallError.isInstance(error); +``` + +### Removed `toJSON` method + + + There is no codemod available for this change. Please review and update your + code manually. + + +The `toJSON` method has been removed from AI SDK errors. + +## AI SDK 2.x Legacy Changes + + + There are no codemods available for the changes in this section. Please review + and update your code manually. + + +### Removed 2.x legacy providers + +Legacy providers from AI SDK 2.x have been removed. Please use the new [AI SDK provider architecture](/docs/foundations/providers-and-models) instead. + +#### Removed 2.x legacy function and tool calling + +The legacy `function_call` and `tools` options have been removed from `useChat` and `Message`. +The `name` property from the `Message` type has been removed. +Please use the [AI SDK Core tool calling](/docs/ai-sdk-core/tools-and-tool-calling) instead. + +### Removed 2.x prompt helpers + +Prompt helpers for constructing message prompts are no longer needed with the AI SDK provider architecture and have been removed. + +### Removed 2.x `AIStream` + +The `AIStream` function and related exports have been removed. +Please use the [`streamText`](/docs/reference/ai-sdk-core/stream-text) function and its `toDataStream()` method instead. + +### Removed 2.x `StreamingTextResponse` + +The `StreamingTextResponse` function has been removed. +Please use the [`streamText`](/docs/reference/ai-sdk-core/stream-text) function and its `toDataStreamResponse()` method instead. + +### Removed 2.x `streamToResponse` + +The `streamToResponse` function has been removed. +Please use the [`streamText`](/docs/reference/ai-sdk-core/stream-text) function and its `pipeDataStreamToResponse()` method instead. + +### Removed 2.x RSC `Tokens` streaming + +The legacy `Tokens` RSC streaming from 2.x has been removed. +`Tokens` were implemented prior to AI SDK RSC and are no longer needed. + +## Codemod Table + +The following table lists codemod availability for the AI SDK 4.0 upgrade +process. Note the codemod `upgrade` command will run all of them for you. This +list is provided to give visibility into which migrations have some automation. +It can also be helpful to find the codemod names if you'd like to run a subset +of codemods. For more, see the [Codemods](#codemods) section. + +| Change | Codemod | +| --------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | +| **Provider Changes** | | +| Removed baseUrl option | `v4/replace-baseurl` | +| **Anthropic Provider** | | +| Removed Anthropic facade | `v4/remove-anthropic-facade` | +| Removed topK setting | _N/A_ | +| **Google Generative AI Provider** | | +| Removed Google facade | `v4/remove-google-facade` | +| Removed topK setting | _N/A_ | +| **Google Vertex Provider** | | +| Removed topK setting | _N/A_ | +| **Mistral Provider** | | +| Removed Mistral facade | `v4/remove-mistral-facade` | +| **OpenAI Provider** | | +| Removed OpenAI facade | `v4/remove-openai-facade` | +| **LangChain Adapter** | | +| Removed toAIStream | `v4/replace-langchain-toaistream` | +| **AI SDK Core Changes** | | +| streamText returns immediately | `v4/remove-await-streamtext` | +| streamObject returns immediately | `v4/remove-await-streamobject` | +| Remove roundtrips | `v4/replace-roundtrips-with-maxsteps` | +| Removed nanoid export | `v4/replace-nanoid` | +| Increased default size of generated IDs | _N/A_ | +| Removed ExperimentalMessage types | `v4/remove-experimental-message-types` | +| Removed ExperimentalTool type | `v4/remove-experimental-tool` | +| Removed experimental AI function exports | `v4/remove-experimental-ai-fn-exports` | +| Removed AI-stream related methods from streamText | `v4/remove-ai-stream-methods-from-stream-text-result` | +| Renamed "formatStreamPart" to "formatDataStreamPart" | `v4/rename-format-stream-part` | +| Renamed "parseStreamPart" to "parseDataStreamPart" | `v4/rename-parse-stream-part` | +| Renamed TokenUsage, CompletionTokenUsage and EmbeddingTokenUsage types | `v4/replace-token-usage-types` | +| Removed deprecated telemetry data | _N/A_ | +| **Provider Registry** | | +| → Removed experimental_Provider, experimental_ProviderRegistry, and experimental_ModelRegistry | `v4/remove-deprecated-provider-registry-exports` | +| → Removed experimental_createModelRegistry function | _N/A_ | +| Removed rawResponse from results | _N/A_ | +| Removed init option from pipeDataStreamToResponse and toDataStreamResponse | _N/A_ | +| Removed responseMessages from generateText and streamText | _N/A_ | +| Removed experimental_continuationSteps option | `v4/replace-continuation-steps` | +| Removed LanguageModelResponseMetadataWithHeaders type | `v4/remove-metadata-with-headers` | +| Changed streamText warnings result to Promise | _N/A_ | +| Changed streamObject warnings result to Promise | _N/A_ | +| Renamed simulateReadableStream values to chunks | _N/A_ | +| **AI SDK RSC Changes** | | +| Removed render function | _N/A_ | +| **AI SDK UI Changes** | | +| Removed Svelte, Vue, and SolidJS exports | `v4/rewrite-framework-imports` | +| Removed experimental_StreamData | `v4/remove-experimental-streamdata` | +| **useChat hook** | | +| Removed streamMode setting | _N/A_ | +| Replaced roundtrip setting with maxSteps | `v4/replace-roundtrips-with-maxsteps` | +| Removed options setting | _N/A_ | +| Removed experimental_addToolResult method | _N/A_ | +| Changed default value of keepLastMessageOnError to true and deprecated the option | _N/A_ | +| **useCompletion hook** | | +| Removed streamMode setting | _N/A_ | +| **useAssistant hook** | | +| Removed experimental_useAssistant export | `v4/remove-experimental-useassistant` | +| Removed threadId and messageId from AssistantResponse | _N/A_ | +| Removed experimental_AssistantResponse export | _N/A_ | +| **experimental_useObject hook** | | +| Removed setInput helper | _N/A_ | +| **AI SDK Errors** | | +| Removed isXXXError static methods | `v4/remove-isxxxerror` | +| Removed toJSON method | _N/A_ | +| **AI SDK 2.x Legacy Changes** | | +| Removed 2.x legacy providers | _N/A_ | +| Removed 2.x legacy function and tool calling | _N/A_ | +| Removed 2.x prompt helpers | _N/A_ | +| Removed 2.x AIStream | _N/A_ | +| Removed 2.x StreamingTextResponse | _N/A_ | +| Removed 2.x streamToResponse | _N/A_ | +| Removed 2.x RSC Tokens streaming | _N/A_ | diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/36-migration-guide-3-4.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/36-migration-guide-3-4.mdx new file mode 100644 index 000000000..b08f9d171 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/36-migration-guide-3-4.mdx @@ -0,0 +1,14 @@ +--- +title: Migrate AI SDK 3.3 to 3.4 +description: Learn how to upgrade AI SDK 3.3 to 3.4. +--- + +# Migrate AI SDK 3.3 to 3.4 + + + Check out the [AI SDK 3.4 release blog + post](https://vercel.com/blog/ai-sdk-3-4) for more information about the + release. + + +No breaking changes in this release. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/37-migration-guide-3-3.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/37-migration-guide-3-3.mdx new file mode 100644 index 000000000..72a22d0e6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/37-migration-guide-3-3.mdx @@ -0,0 +1,64 @@ +--- +title: Migrate AI SDK 3.2 to 3.3 +description: Learn how to upgrade AI SDK 3.2 to 3.3. +--- + +# Migrate AI SDK 3.2 to 3.3 + + + Check out the [AI SDK 3.3 release blog + post](https://vercel.com/blog/vercel-ai-sdk-3-3) for more information about + the release. + + +No breaking changes in this release. + +The following changelog encompasses all changes made in the 3.2.x series, +introducing significant improvements and new features across the AI SDK and its associated libraries: + +## New Features + +### Open Telemetry Support + +- Added experimental [OpenTelemetry support](/docs/ai-sdk-core/telemetry#telemetry) for all [AI SDK Core functions](/docs/ai-sdk-core/overview#ai-sdk-core-functions), enabling better observability and tracing capabilities. + +### AI SDK UI Improvements + +- Introduced the experimental **`useObject`** hook (for React) that can be used in conjunction with **`streamObject`** on the backend to enable seamless streaming of structured data. +- Enhanced **`useChat`** with experimental support for attachments and streaming tool calls, providing more versatile chat functionalities. +- Patched **`useChat`** to prevent empty submissions, improving the quality of user interactions by ensuring that only intended inputs are processed. +- Fix **`useChat`**'s **`reload`** function, now correctly sending data, body, and headers. +- Implemented **`setThreadId`** helper for **`useAssistant`**, simplifying thread management. +- Documented the stream data protocol for **`useChat`** and **`useCompletion`**, allowing developers to use these functions with any backend. The stream data protocol also enables the use of custom frontends with **`streamText`**. +- Added support for custom fetch functions and request body customization, offering greater control over API interactions. +- Added **`onFinish`** to **`useChat`** hook for access to token usage and finish reason. + +### Core Enhancements + +- Implemented support for sending custom request headers, enabling more tailored API requests. +- Added raw JSON schema support alongside existing Zod support, providing more options for schema and data validation. +- Introduced usage information for **`embed`** and **`embedMany`** functions, offering insights into token usage. +- Added support for additional settings including **`stopSequences`** and **`topK`**, allowing for finer control over text generation. +- Provided access to information for all steps on **`generateText`**, providing access to intermediate tool calls and results. + +### New Providers + +- [AWS Bedrock provider](/providers/ai-sdk-providers/amazon-bedrock). + +### Provider Improvements + +- Enhanced existing providers including Anthropic, Google, Azure, and OpenAI with various improvements and bug fixes. +- Upgraded the LangChain adapter with StreamEvent v2 support and introduced the **`toDataStreamResponse`** function, enabling conversion of LangChain output streams to data stream responses. +- Added legacy function calling support to the OpenAI provider. +- Updated Mistral AI provider with fixes and improvements for tool calling support. + +### UI Framework Support Expansion + +- SolidJS: Updated **`useChat`** and **`useCompletion`** to achieve feature parity with React implementations. +- Vue.js: Introduced **`useAssistant`** hook. +- Vue.js / Nuxt: [Updated examples](https://github.com/vercel/ai/tree/main/examples/nuxt-openai) to showcase latest features and best practices. +- Svelte: Added tool calling support to **`useChat`.** + +## Fixes and Improvements + +- Resolved various issues across different components of the SDK, including race conditions, error handling, and state management. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/38-migration-guide-3-2.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/38-migration-guide-3-2.mdx new file mode 100644 index 000000000..d0c1cac44 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/38-migration-guide-3-2.mdx @@ -0,0 +1,46 @@ +--- +title: Migrate AI SDK 3.1 to 3.2 +description: Learn how to upgrade AI SDK 3.1 to 3.2. +--- + +# Migrate AI SDK 3.1 to 3.2 + + + Check out the [AI SDK 3.2 release blog + post](https://vercel.com/blog/introducing-vercel-ai-sdk-3-2) for more + information about the release. + + +This guide will help you upgrade to AI SDK 3.2: + +- Experimental `StreamingReactResponse` functionality has been removed +- Several features have been deprecated +- UI framework integrations have moved to their own Node modules + +## Upgrading + +### AI SDK + +To update to AI SDK version 3.2, run the following command using your preferred package manager: + + + +## Removed Functionality + +The experimental `StreamingReactResponse` has been removed. You can use [AI SDK RSC](/docs/ai-sdk-rsc/overview) to build streaming UIs. + +## Deprecated Functionality + +The `nanoid` export has been deprecated. Please use [`generateId`](/docs/reference/ai-sdk-core/generate-id) instead. + +## UI Package Separation + +AI SDK UI supports several frameworks: [React](https://react.dev/), [Svelte](https://svelte.dev/), [Vue.js](https://vuejs.org/), and [SolidJS](https://www.solidjs.com/). + +The integrations (other than React and RSC) have moved to separate Node modules. You need to update the import and require statements as follows: + +- Change `ai/svelte` to `@ai-sdk/svelte` +- Change `ai/vue` to `@ai-sdk/vue` +- Change `ai/solid` to `@ai-sdk/solid` + +The old exports are still available but will be removed in a future release. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/39-migration-guide-3-1.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/39-migration-guide-3-1.mdx new file mode 100644 index 000000000..91f5eb965 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/39-migration-guide-3-1.mdx @@ -0,0 +1,168 @@ +--- +title: Migrate AI SDK 3.0 to 3.1 +description: Learn how to upgrade AI SDK 3.0 to 3.1. +--- + +# Migrate AI SDK 3.0 to 3.1 + + + Check out the [AI SDK 3.1 release blog + post](https://vercel.com/blog/vercel-ai-sdk-3-1-modelfusion-joins-the-team) + for more information about the release. + + +This guide will help you: + +- Upgrade to AI SDK 3.1 +- Migrate from Legacy Providers to AI SDK Core +- Migrate from [`render`](/docs/reference/ai-sdk-rsc/render) to [`streamUI`](/docs/reference/ai-sdk-rsc/stream-ui) + +Upgrading to AI SDK 3.1 does not require using the newly released AI SDK Core API or [`streamUI`](/docs/reference/ai-sdk-rsc/stream-ui) function. + +## Upgrading + +### AI SDK + +To update to AI SDK version 3.1, run the following command using your preferred package manager: + + + +## Next Steps + +The release of AI SDK 3.1 introduces several new features that improve the way you build AI applications with the SDK: + +- AI SDK Core, a brand new unified API for interacting with large language models (LLMs). +- [`streamUI`](/docs/reference/ai-sdk-rsc/stream-ui), a new abstraction, built upon AI SDK Core functions that simplifies building streaming UIs. + +## Migrating from Legacy Providers to AI SDK Core + +Prior to AI SDK Core, you had to use a model provider's SDK to query their models. + +In the following Route Handler, you use the OpenAI SDK to query their model. You then pipe that response into the `OpenAIStream` function which returns a [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) that you can pass to the client using a new `StreamingTextResponse`. + +```tsx +import OpenAI from 'openai'; +import { OpenAIStream, StreamingTextResponse } from 'ai'; + +const openai = new OpenAI({ + apiKey: process.env.OPENAI_API_KEY!, +}); + +export async function POST(req: Request) { + const { messages } = await req.json(); + + const response = await openai.chat.completions.create({ + model: 'gpt-4.1', + stream: true, + messages, + }); + + const stream = OpenAIStream(response); + + return new StreamingTextResponse(stream); +} +``` + +With AI SDK Core you have a unified API for any provider that implements the [AI SDK Language Model Specification](/providers/community-providers/custom-providers). + +Let’s take a look at the example above, but refactored to utilize the AI SDK Core API alongside the AI SDK OpenAI provider. In this example, you import the LLM function you want to use from the `ai` package, import the OpenAI provider from `@ai-sdk/openai`, and then you call the model and return the response using the `toDataStreamResponse()` helper function. + +```tsx +import { streamText } from 'ai'; +import { openai } from '@ai-sdk/openai'; +__PROVIDER_IMPORT__; + +export async function POST(req: Request) { + const { messages } = await req.json(); + + const result = await streamText({ + model: __MODEL__, + messages, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +## Migrating from `render` to `streamUI` + +The AI SDK RSC API was launched as part of version 3.0. This API introduced the [`render`](/docs/reference/ai-sdk-rsc/render) function, a helper function to create streamable UIs with OpenAI models. With the new AI SDK Core API, it became possible to make streamable UIs possible with any compatible provider. + +The following example Server Action uses the `render` function using the model provider directly from OpenAI. You first create an OpenAI provider instance with the OpenAI SDK. Then, you pass it to the provider key of the render function alongside a tool that returns a React Server Component, defined in the `render` key of the tool. + +```tsx +import { render } from '@ai-sdk/rsc'; +import OpenAI from 'openai'; +import { z } from 'zod'; +import { Spinner, Weather } from '@/components'; +import { getWeather } from '@/utils'; + +const openai = new OpenAI(); + +async function submitMessage(userInput = 'What is the weather in SF?') { + 'use server'; + + return render({ + provider: openai, + model: 'gpt-4.1', + messages: [ + { role: 'system', content: 'You are a helpful assistant' }, + { role: 'user', content: userInput }, + ], + text: ({ content }) =>

{content}

, + tools: { + get_city_weather: { + description: 'Get the current weather for a city', + parameters: z + .object({ + city: z.string().describe('the city'), + }) + .required(), + render: async function* ({ city }) { + yield ; + const weather = await getWeather(city); + return ; + }, + }, + }, + }); +} +``` + +With the new [`streamUI`](/docs/reference/ai-sdk-rsc/stream-ui) function, you can now use any compatible AI SDK provider. In this example, you import the AI SDK OpenAI provider. Then, you pass it to the [`model`](/docs/reference/ai-sdk-rsc/stream-ui#model) key of the new [`streamUI`](/docs/reference/ai-sdk-rsc/stream-ui) function. Finally, you declare a tool and return a React Server Component, defined in the [`generate`](/docs/reference/ai-sdk-rsc/stream-ui#tools-generate) key of the tool. + +```tsx +import { streamUI } from '@ai-sdk/rsc'; +import { openai } from '@ai-sdk/openai'; +import { z } from 'zod'; +import { Spinner, Weather } from '@/components'; +import { getWeather } from '@/utils'; + +async function submitMessage(userInput = 'What is the weather in SF?') { + 'use server'; + + const result = await streamUI({ + model: __MODEL__, + system: 'You are a helpful assistant', + messages: [{ role: 'user', content: userInput }], + text: ({ content }) =>

{content}

, + tools: { + get_city_weather: { + description: 'Get the current weather for a city', + parameters: z + .object({ + city: z.string().describe('Name of the city'), + }) + .required(), + generate: async function* ({ city }) { + yield ; + const weather = await getWeather(city); + return ; + }, + }, + }, + }); + + return result.value; +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/index.mdx new file mode 100644 index 000000000..e076b4434 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/08-migration-guides/index.mdx @@ -0,0 +1,22 @@ +--- +title: Migration Guides +description: Learn how to upgrade between Vercel AI versions. +collapsed: true +--- + +# Migration Guides + +- [ Migrate AI SDK 5.x to 6.0 ](/docs/migration-guides/migration-guide-6-0) +- [ Migrate AI SDK 4.x to 5.0 ](/docs/migration-guides/migration-guide-5-0) +- [ Migrate your data to AI SDK 5.0 ](/docs/migration-guides/migration-guide-5-0-data) +- [ Migrate AI SDK 4.1 to 4.2 ](/docs/migration-guides/migration-guide-4-2) +- [ Migrate AI SDK 4.0 to 4.1 ](/docs/migration-guides/migration-guide-4-1) +- [ Migrate AI SDK 3.4 to 4.0 ](/docs/migration-guides/migration-guide-4-0) +- [ Migrate AI SDK 3.3 to 3.4 ](/docs/migration-guides/migration-guide-3-4) +- [ Migrate AI SDK 3.2 to 3.3 ](/docs/migration-guides/migration-guide-3-3) +- [ Migrate AI SDK 3.1 to 3.2 ](/docs/migration-guides/migration-guide-3-2) +- [ Migrate AI SDK 3.0 to 3.1 ](/docs/migration-guides/migration-guide-3-1) + +## Versioning + +- [ Versioning ](/docs/migration-guides/versioning) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/01-azure-stream-slow.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/01-azure-stream-slow.mdx new file mode 100644 index 000000000..09cfdee89 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/01-azure-stream-slow.mdx @@ -0,0 +1,33 @@ +--- +title: Azure OpenAI Slow to Stream +description: Learn to troubleshoot Azure OpenAI slow to stream issues. +--- + +# Azure OpenAI Slow To Stream + +## Issue + +When using OpenAI hosted on Azure, streaming is slow and in big chunks. + +## Cause + +This is a Microsoft Azure issue. Some users have reported the following solutions: + +- **Update Content Filtering Settings**: + Inside [Azure AI Studio](https://ai.azure.com/), within "Shared resources" > "Content filters", create a new + content filter and set the "Streaming mode (Preview)" under "Output filter" from "Default" + to "Asynchronous Filter". + +## Solution + +You can use the [`smoothStream` transformation](/docs/ai-sdk-core/generating-text#smoothing-streams) to stream each word individually. + +```tsx highlight="6" +import { smoothStream, streamText } from 'ai'; + +const result = streamText({ + model, + prompt, + experimental_transform: smoothStream(), +}); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/03-server-actions-in-client-components.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/03-server-actions-in-client-components.mdx new file mode 100644 index 000000000..f2fb7b78c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/03-server-actions-in-client-components.mdx @@ -0,0 +1,40 @@ +--- +title: Server Actions in Client Components +description: Troubleshooting errors related to server actions in client components. +--- + +# Server Actions in Client Components + +You may use Server Actions in client components, but sometimes you may encounter the following issues. + +## Issue + +It is not allowed to define inline `"use server"` annotated Server Actions in Client Components. + +## Solution + +To use Server Actions in a Client Component, you can either: + +- Export them from a separate file with `"use server"` at the top. +- Pass them down through props from a Server Component. +- Implement a combination of [`createAI`](/docs/reference/ai-sdk-rsc/create-ai) and [`useActions`](/docs/reference/ai-sdk-rsc/use-actions) hooks to access them. + +Learn more about [Server Actions and Mutations](https://nextjs.org/docs/app/api-reference/functions/server-actions#with-client-components). + +```ts file='actions.ts' +'use server'; + +import { generateText } from 'ai'; +__PROVIDER_IMPORT__; + +export async function getAnswer(question: string) { + 'use server'; + + const { text } = await generateText({ + model: __MODEL__, + prompt: question, + }); + + return { answer: text }; +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/04-strange-stream-output.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/04-strange-stream-output.mdx new file mode 100644 index 000000000..10f39df08 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/04-strange-stream-output.mdx @@ -0,0 +1,36 @@ +--- +title: useChat/useCompletion stream output contains 0:... instead of text +description: How to fix strange stream output in the UI +--- + +# useChat/useCompletion stream output contains 0:... instead of text + +## Issue + +I am using custom client code to process a server response that is sent using `StreamingTextResponse`. I am using version `3.0.20` or newer of the AI SDK. When I send a query, the UI streams text such as `0: "Je"`, `0: " suis"`, `0: "des"...` instead of the text that I’m looking for. + +## Background + +The AI SDK has switched to the stream data protocol in version `3.0.20`. It sends different stream parts to support data, tool calls, etc. What you see is the raw stream data protocol response. + +## Solution + +You have several options: + +1. Use the AI Core [`streamText`](/docs/reference/ai-sdk-core/stream-text) function to send a raw text stream: + + ```tsx + export async function POST(req: Request) { + const { prompt } = await req.json(); + + const result = streamText({ + model: openai.completion('gpt-3.5-turbo-instruct'), + maxOutputTokens: 2000, + prompt, + }); + + return result.toTextStreamResponse(); + } + ``` + +2. Pin the AI SDK version to `3.0.19` . This will keep the raw text stream. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/05-streamable-ui-errors.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/05-streamable-ui-errors.mdx new file mode 100644 index 000000000..e11bc16e2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/05-streamable-ui-errors.mdx @@ -0,0 +1,16 @@ +--- +title: Streamable UI Errors +description: Troubleshooting errors related to streamable UI. +--- + +# Streamable UI Component Error + +## Issue + +- Variable Not Found +- Cannot find `div` +- `Component` refers to a value, but is being used as a type + +## Solution + +If you encounter these errors when working with streamable UIs within server actions, it is likely because the file ends in `.ts` instead of `.tsx`. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/05-tool-invocation-missing-result.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/05-tool-invocation-missing-result.mdx new file mode 100644 index 000000000..4ecc36ee7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/05-tool-invocation-missing-result.mdx @@ -0,0 +1,106 @@ +--- +title: Tool Invocation Missing Result Error +description: How to fix the "ToolInvocation must have a result" error when using tools without execute functions +--- + +# Tool Invocation Missing Result Error + +## Issue + +When using `generateText()` or `streamText()`, you may encounter the error "ToolInvocation must have a result" when a tool without an `execute` function is called. + +## Cause + +The error occurs when you define a tool without an `execute` function and don't provide the result through other means (like `useChat`'s `onToolCall` or `addToolOutput` functions). + +Each time a tool is invoked, the model expects to receive a result before continuing the conversation. Without a result, the model cannot determine if the tool call succeeded or failed and the conversation state becomes invalid. + +## Solution + +You have two options for handling tool results: + +1. Server-side execution using tools with an `execute` function: + +```tsx +const tools = { + weather: tool({ + description: 'Get the weather in a location', + parameters: z.object({ + location: z + .string() + .describe('The city and state, e.g. "San Francisco, CA"'), + }), + execute: async ({ location }) => { + // Fetch and return weather data + return { temperature: 72, conditions: 'sunny', location }; + }, + }), +}; +``` + +2. Client-side execution with `useChat` (omitting the `execute` function), you must provide results using `addToolOutput`: + +```tsx +import { useChat } from '@ai-sdk/react'; +import { + DefaultChatTransport, + lastAssistantMessageIsCompleteWithToolCalls, +} from 'ai'; + +const { messages, sendMessage, addToolOutput } = useChat({ + // Automatically submit when all tool results are available + sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls, + + // Handle tool calls in onToolCall + onToolCall: async ({ toolCall }) => { + if (toolCall.toolName === 'getLocation') { + try { + const result = await getLocationData(); + + // Important: Don't await inside onToolCall to avoid deadlocks + addToolOutput({ + tool: 'getLocation', + toolCallId: toolCall.toolCallId, + output: result, + }); + } catch (err) { + // Important: Don't await inside onToolCall to avoid deadlocks + addToolOutput({ + tool: 'getLocation', + toolCallId: toolCall.toolCallId, + state: 'output-error', + errorText: 'Failed to get location', + }); + } + } + }, +}); +``` + +```tsx +// For interactive UI elements: +const { messages, sendMessage, addToolOutput } = useChat({ + transport: new DefaultChatTransport({ api: '/api/chat' }), + sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls, +}); + +// Inside your JSX, when rendering tool calls: +; +``` + + + Whether handling tools on the server or client, each tool call must have a + corresponding result before the conversation can continue. + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/06-streaming-not-working-when-deployed.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/06-streaming-not-working-when-deployed.mdx new file mode 100644 index 000000000..6df54ee80 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/06-streaming-not-working-when-deployed.mdx @@ -0,0 +1,31 @@ +--- +title: Streaming Not Working When Deployed +description: Troubleshooting streaming issues in deployed apps. +--- + +# Streaming Not Working When Deployed + +## Issue + +Streaming with the AI SDK works in my local development environment. +However, when deploying, streaming does not work in the deployed app. +Instead of streaming, only the full response is returned after a while. + +## Cause + +The causes of this issue are varied and depend on the deployment environment. + +## Solution + +You can try the following: + +- add `'Transfer-Encoding': 'chunked'` and/or `Connection: 'keep-alive'` headers + + ```tsx + return result.toUIMessageStreamResponse({ + headers: { + 'Transfer-Encoding': 'chunked', + Connection: 'keep-alive', + }, + }); + ``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/06-streaming-not-working-when-proxied.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/06-streaming-not-working-when-proxied.mdx new file mode 100644 index 000000000..ffab2b947 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/06-streaming-not-working-when-proxied.mdx @@ -0,0 +1,31 @@ +--- +title: Streaming Not Working When Proxied +description: Troubleshooting streaming issues in proxied apps. +--- + +# Streaming Not Working When Proxied + +## Issue + +Streaming with the AI SDK doesn't work in local development environment, or deployed in some proxy environments. +Instead of streaming, only the full response is returned after a while. + +## Cause + +The causes of this issue are caused by the proxy middleware. + +If the middleware is configured to compress the response, it will cause the streaming to fail. + +## Solution + +You can try the following, the solution only affects the streaming API: + +- add `'Content-Encoding': 'none'` headers + + ```tsx + return result.toUIMessageStreamResponse({ + headers: { + 'Content-Encoding': 'none', + }, + }); + ``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/06-timeout-on-vercel.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/06-timeout-on-vercel.mdx new file mode 100644 index 000000000..f0abd6d89 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/06-timeout-on-vercel.mdx @@ -0,0 +1,60 @@ +--- +title: Getting Timeouts When Deploying on Vercel +description: Learn how to fix timeouts and cut off responses when deploying to Vercel. +--- + +# Getting Timeouts When Deploying on Vercel + +## Issue + +Streaming with the AI SDK works in my local development environment. +However, when I'm deploying to Vercel, longer responses get chopped off in the UI and I'm seeing timeouts in the Vercel logs or I'm seeing the error: `Uncaught (in promise) Error: Connection closed`. + +## Solution + +With Vercel's [Fluid Compute](https://vercel.com/docs/fluid-compute), the default function duration is now **5 minutes (300 seconds)** across all plans. This should be sufficient for most streaming applications. + +If you need to extend the timeout for longer-running processes, you can increase the `maxDuration` setting: + +### Next.js (App Router) + +Add the following to your route file or the page you are calling your Server Action from: + +```tsx +export const maxDuration = 600; +``` + + + Setting `maxDuration` above 300 seconds requires a Pro or Enterprise plan. + + +### Other Frameworks + +For other frameworks, you can set timeouts in your `vercel.json` file: + +```json +{ + "functions": { + "api/chat/route.ts": { + "maxDuration": 600 + } + } +} +``` + + + Setting `maxDuration` above 300 seconds requires a Pro or Enterprise plan. + + +### Maximum Duration Limits + +The maximum duration you can set depends on your Vercel plan: + +- **Hobby**: Up to 300 seconds (5 minutes) +- **Pro**: Up to 800 seconds (~13 minutes) +- **Enterprise**: Up to 800 seconds (~13 minutes) + +## Learn more + +- [Fluid Compute Default Settings](https://vercel.com/docs/fluid-compute#default-settings-by-plan) +- [Configuring Maximum Duration for Vercel Functions](https://vercel.com/docs/functions/configuring-functions/duration) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/07-unclosed-streams.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/07-unclosed-streams.mdx new file mode 100644 index 000000000..d85635f96 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/07-unclosed-streams.mdx @@ -0,0 +1,34 @@ +--- +title: Unclosed Streams +description: Troubleshooting errors related to unclosed streams. +--- + +# Unclosed Streams + +Sometimes streams are not closed properly, which can lead to unexpected behavior. The following are some common issues that can occur when streams are not closed properly. + +## Issue + +The streamable UI has been slow to update. + +## Solution + +This happens when you create a streamable UI using [`createStreamableUI`](/docs/reference/ai-sdk-rsc/create-streamable-ui) and fail to close the stream. +In order to fix this, you must ensure you close the stream by calling the [`.done()`](/docs/reference/ai-sdk-rsc/create-streamable-ui#done) method. +This will ensure the stream is closed. + +```tsx file='app/actions.tsx' +import { createStreamableUI } from '@ai-sdk/rsc'; + +const submitMessage = async () => { + 'use server'; + + const stream = createStreamableUI('1'); + + stream.update('2'); + stream.append('3'); + stream.done('4'); // [!code ++] + + return stream.value; +}; +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/08-use-chat-failed-to-parse-stream.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/08-use-chat-failed-to-parse-stream.mdx new file mode 100644 index 000000000..512bd7a62 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/08-use-chat-failed-to-parse-stream.mdx @@ -0,0 +1,26 @@ +--- +title: useChat Failed to Parse Stream +description: Troubleshooting errors related to the Use Chat Failed to Parse Stream error. +--- + +# `useChat` "Failed to Parse Stream String" Error + +## Issue + +I am using [`useChat`](/docs/reference/ai-sdk-ui/use-chat) or [`useCompletion`](/docs/reference/ai-sdk-ui/use-completion), and I am getting a `"Failed to parse stream string. Invalid code"` error. I am using version `3.0.20` or newer of the AI SDK. + +## Background + +The AI SDK has switched to the stream data protocol in version `3.0.20`. +[`useChat`](/docs/reference/ai-sdk-ui/use-chat) and [`useCompletion`](/docs/reference/ai-sdk-ui/use-completion) expect stream parts that support data, tool calls, etc. +What you see is a failure to parse the stream. +This can be caused by using an older version of the AI SDK in the backend, by providing a text stream using a custom provider, or by using a raw LangChain stream result. + +## Solution + +You can switch [`useChat`](/docs/reference/ai-sdk-ui/use-chat) and [`useCompletion`](/docs/reference/ai-sdk-ui/use-completion) to raw text stream processing with the [`streamProtocol`](/docs/reference/ai-sdk-ui/use-completion#stream-protocol) parameter. +Set it to `text` as follows: + +```tsx +const { messages, append } = useChat({ streamProtocol: 'text' }); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/09-client-stream-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/09-client-stream-error.mdx new file mode 100644 index 000000000..95751a6e0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/09-client-stream-error.mdx @@ -0,0 +1,25 @@ +--- +title: Server Action Plain Objects Error +description: Troubleshooting errors related to using AI SDK Core functions with Server Actions. +--- + +# "Only plain objects can be passed from client components" Server Action Error + +## Issue + +I am using [`streamText`](/docs/reference/ai-sdk-core/stream-text) with Server Actions, and I am getting a `"only plain objects and a few built ins can be passed from client components"` error. + +## Background + +This error occurs when you're trying to return a non-serializable object from a Server Action to a Client Component. The streamText function likely returns an object with methods or complex structures that can't be directly serialized and passed to the client. + +## Solution + +To fix this issue, you need to ensure that you're only returning serializable data from your Server Action. Here's how you can modify your approach: + +1. Instead of returning the entire result object from streamText, extract only the necessary serializable data. +2. Use the [`createStreamableValue`](/docs/reference/ai-sdk-rsc/create-streamable-value) function to create a streamable value that can be safely passed to the client. + +Here's an example that demonstrates how to implement this solution: [Streaming Text Generation](/examples/next-app/basics/streaming-text-generation). + +This approach ensures that only serializable data (the text) is passed to the client, avoiding the "only plain objects" error. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/10-use-chat-tools-no-response.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/10-use-chat-tools-no-response.mdx new file mode 100644 index 000000000..2716258ee --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/10-use-chat-tools-no-response.mdx @@ -0,0 +1,32 @@ +--- +title: useChat No Response +description: Troubleshooting errors related to the Use Chat Failed to Parse Stream error. +--- + +# `useChat` No Response + +## Issue + +I am using [`useChat`](/docs/reference/ai-sdk-ui/use-chat). +When I log the incoming messages on the server, I can see the tool call and the tool result, but the model does not respond with anything. + +## Solution + +To resolve this issue, convert the incoming messages to the `ModelMessage` format using the [`convertToModelMessages`](/docs/reference/ai-sdk-ui/convert-to-model-messages) function. + +```tsx highlight="9" +import { openai } from '@ai-sdk/openai'; +import { convertToModelMessages, streamText } from 'ai'; +__PROVIDER_IMPORT__; + +export async function POST(req: Request) { + const { messages } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + }); + + return result.toUIMessageStreamResponse(); +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/11-use-chat-custom-request-options.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/11-use-chat-custom-request-options.mdx new file mode 100644 index 000000000..77be0ff93 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/11-use-chat-custom-request-options.mdx @@ -0,0 +1,149 @@ +--- +title: Custom headers, body, and credentials not working with useChat +description: Troubleshooting errors related to custom request configuration in useChat hook +--- + +# Custom headers, body, and credentials not working with useChat + +## Issue + +When using the `useChat` hook, custom request options like headers, body fields, and credentials configured directly on the hook are not being sent with the request: + +```tsx +// These options are not sent with the request +const { messages, sendMessage } = useChat({ + headers: { + Authorization: 'Bearer token123', + }, + body: { + user_id: '123', + }, + credentials: 'include', +}); +``` + +## Background + +The `useChat` hook has changed its API for configuring request options. Direct options like `headers`, `body`, and `credentials` on the hook itself are no longer supported. Instead, you need to use the `transport` configuration with `DefaultChatTransport` or pass options at the request level. + +## Solution + +There are three ways to properly configure request options with `useChat`: + +### Option 1: Request-Level Configuration (Recommended for Dynamic Values) + +For dynamic values that change over time, the recommended approach is to pass options when calling `sendMessage`: + +```tsx +const { messages, sendMessage } = useChat(); + +// Send options with each message +sendMessage( + { text: input }, + { + headers: { + Authorization: `Bearer ${getAuthToken()}`, // Dynamic auth token + 'X-Request-ID': generateRequestId(), + }, + body: { + temperature: 0.7, + max_tokens: 100, + user_id: getCurrentUserId(), // Dynamic user ID + sessionId: getCurrentSessionId(), // Dynamic session + }, + }, +); +``` + +This approach ensures that the most up-to-date values are always sent with each request. + +### Option 2: Hook-Level Configuration with Static Values + +For static values that don't change during the component lifecycle, use the `DefaultChatTransport`: + +```tsx +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; + +const { messages, sendMessage } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + headers: { + 'X-API-Version': 'v1', // Static API version + 'X-App-ID': 'my-app', // Static app identifier + }, + body: { + model: 'gpt-5.1', // Default model + stream: true, // Static configuration + }, + credentials: 'include', // Static credentials policy + }), +}); +``` + +### Option 3: Hook-Level Configuration with Resolvable Functions + +If you need dynamic values at the hook level, you can use functions that return configuration values. However, request-level configuration is generally preferred for better reliability: + +```tsx +import { useChat } from '@ai-sdk/react'; +import { DefaultChatTransport } from 'ai'; + +const { messages, sendMessage } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + headers: () => ({ + Authorization: `Bearer ${getAuthToken()}`, + 'X-User-ID': getCurrentUserId(), + }), + body: () => ({ + sessionId: getCurrentSessionId(), + preferences: getUserPreferences(), + }), + credentials: () => (isAuthenticated() ? 'include' : 'same-origin'), + }), +}); +``` + + + For component state that changes over time, request-level configuration + (Option 1) is recommended. If using hook-level functions, consider using + `useRef` to store current values and reference `ref.current` in your + configuration function. + + +### Combining Hook and Request Level Options + +Request-level options take precedence over hook-level options: + +```tsx +// Hook-level default configuration +const { messages, sendMessage } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + headers: { + 'X-API-Version': 'v1', + }, + body: { + model: 'gpt-5.1', + }, + }), +}); + +// Override or add options per request +sendMessage( + { text: input }, + { + headers: { + 'X-API-Version': 'v2', // This overrides the hook-level header + 'X-Request-ID': '123', // This is added + }, + body: { + model: 'gpt-5-mini', // This overrides the hook-level body field + temperature: 0.5, // This is added + }, + }, +); +``` + +For more details on request configuration, see the [Request Configuration](/docs/ai-sdk-ui/chatbot#request-configuration) documentation. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/12-typescript-performance-zod.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/12-typescript-performance-zod.mdx new file mode 100644 index 000000000..6cbc3fc02 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/12-typescript-performance-zod.mdx @@ -0,0 +1,46 @@ +--- +title: TypeScript performance issues with Zod and AI SDK 5 +description: Troubleshooting TypeScript server crashes and slow performance when using Zod with AI SDK 5 +--- + +# TypeScript performance issues with Zod and AI SDK 5 + +## Issue + +When using the AI SDK 5 with Zod, you may experience: + +- TypeScript server crashes or hangs +- Extremely slow type checking in files that import AI SDK functions +- Error messages like "Type instantiation is excessively deep and possibly infinite" +- IDE becoming unresponsive when working with AI SDK code + +## Background + +The AI SDK 5 has specific compatibility requirements with Zod versions. When importing Zod using the standard import path (`import { z } from 'zod'`), TypeScript's type inference can become excessively complex, leading to performance degradation or crashes. + +## Solution + +### Upgrade Zod to 4.1.8 or Later + +The primary solution is to upgrade to Zod version 4.1.8 or later, which includes a fix for this module resolution issue: + +```bash +pnpm add zod@^4.1.8 +``` + +This version resolves the underlying problem where different module resolution settings were causing TypeScript to load the same Zod declarations twice, leading to expensive structural comparisons. + +### Alternative: Update TypeScript Configuration + +If upgrading Zod isn't possible, you can update your `tsconfig.json` to use `moduleResolution: "nodenext"`: + +```json +{ + "compilerOptions": { + "moduleResolution": "nodenext" + // ... other options + } +} +``` + +This resolves the TypeScript performance issues while allowing you to continue using the standard Zod import. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/12-use-chat-an-error-occurred.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/12-use-chat-an-error-occurred.mdx new file mode 100644 index 000000000..d814cbf60 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/12-use-chat-an-error-occurred.mdx @@ -0,0 +1,59 @@ +--- +title: useChat "An error occurred" +description: Troubleshooting errors related to the "An error occurred" error in useChat. +--- + +# `useChat` "An error occurred" + +## Issue + +I am using [`useChat`](/docs/reference/ai-sdk-ui/use-chat) and I get the error "An error occurred". + +## Background + +Error messages from `streamText` are masked by default when using `toDataStreamResponse` for security reasons (secure-by-default). +This prevents leaking sensitive information to the client. + +## Solution + +To forward error details to the client or to log errors, use the `getErrorMessage` function when calling `toDataStreamResponse`. + +```tsx +export function errorHandler(error: unknown) { + if (error == null) { + return 'unknown error'; + } + + if (typeof error === 'string') { + return error; + } + + if (error instanceof Error) { + return error.message; + } + + return JSON.stringify(error); +} +``` + +```tsx +const result = streamText({ + // ... +}); + +return result.toUIMessageStreamResponse({ + getErrorMessage: errorHandler, +}); +``` + +In case you are using `createDataStreamResponse`, you can use the `onError` function when calling `toDataStreamResponse`: + +```tsx +const response = createDataStreamResponse({ + // ... + async execute(dataStream) { + // ... + }, + onError: errorHandler, +}); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/13-repeated-assistant-messages.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/13-repeated-assistant-messages.mdx new file mode 100644 index 000000000..65263fa03 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/13-repeated-assistant-messages.mdx @@ -0,0 +1,73 @@ +--- +title: Repeated assistant messages in useChat +description: Troubleshooting duplicate assistant messages when using useChat with streamText +--- + +# Repeated assistant messages in useChat + +## Issue + +When using `useChat` with `streamText` on the server, the assistant's messages appear duplicated in the UI - showing both the previous message and the new message, or showing the same message multiple times. This can occur when using tool calls or complex message flows. + +```tsx +// Server-side code that may experience assistant message duplication on the client +export async function POST(req: Request) { + const { messages } = await req.json(); + + const result = streamText({ + model: 'openai/gpt-5-mini', + messages: await convertToModelMessages(messages), + tools: { + weather: { + description: 'Get the weather for a location', + parameters: z.object({ + location: z.string(), + }), + execute: async ({ location }) => { + return { temperature: 72, condition: 'sunny' }; + }, + }, + }, + }); + + return result.toUIMessageStreamResponse(); +} +``` + +## Background + +The duplication occurs because `toUIMessageStreamResponse` generates new message IDs for each new message. + +## Solution + +Pass the original messages array to `toUIMessageStreamResponse` using the `originalMessages` option. By passing `originalMessages`, the method can reuse existing message IDs instead of generating new ones, ensuring the client properly updates existing messages rather than creating duplicates. + +```tsx +export async function POST(req: Request) { + const { messages } = await req.json(); + + const result = streamText({ + model: 'openai/gpt-5-mini', + messages: await convertToModelMessages(messages), + tools: { + weather: { + description: 'Get the weather for a location', + parameters: z.object({ + location: z.string(), + }), + execute: async ({ location }) => { + return { temperature: 72, condition: 'sunny' }; + }, + }, + }, + }); + + return result.toUIMessageStreamResponse({ + originalMessages: messages, // Pass the original messages here + generateMessageId: generateId, + onFinish: ({ messages }) => { + saveChat({ id, messages }); + }, + }); +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/14-stream-abort-handling.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/14-stream-abort-handling.mdx new file mode 100644 index 000000000..f0fef1bed --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/14-stream-abort-handling.mdx @@ -0,0 +1,73 @@ +--- +title: onFinish not called when stream is aborted +description: Troubleshooting onFinish callback not executing when streams are aborted with toUIMessageStreamResponse +--- + +# onFinish not called when stream is aborted + +## Issue + +When using `toUIMessageStreamResponse` with an `onFinish` callback, the callback may not execute when the stream is aborted. This happens because the abort handler immediately terminates the response, preventing the `onFinish` callback from being triggered. + +```tsx +// Server-side code where onFinish isn't called on abort +export async function POST(req: Request) { + const { messages } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + abortSignal: req.signal, + }); + + return result.toUIMessageStreamResponse({ + onFinish: async ({ isAborted }) => { + // This isn't called when the stream is aborted! + if (isAborted) { + console.log('Stream was aborted'); + // Handle abort-specific cleanup + } else { + console.log('Stream completed normally'); + // Handle normal completion + } + }, + }); +} +``` + +## Background + +When a stream is aborted, the response is immediately terminated. Without proper handling, the `onFinish` callback has no chance to execute, preventing important cleanup operations like saving partial results or logging abort events. + +## Solution + +Add `consumeStream` to the `toUIMessageStreamResponse` configuration. This ensures that abort events are properly captured and forwarded to the `onFinish` callback, allowing it to execute even when the stream is aborted. + +```tsx +// other imports... +import { consumeStream } from 'ai'; + +export async function POST(req: Request) { + const { messages } = await req.json(); + + const result = streamText({ + model: __MODEL__, + messages: await convertToModelMessages(messages), + abortSignal: req.signal, + }); + + return result.toUIMessageStreamResponse({ + onFinish: async ({ isAborted }) => { + // Now this WILL be called even when aborted! + if (isAborted) { + console.log('Stream was aborted'); + // Handle abort-specific cleanup + } else { + console.log('Stream completed normally'); + // Handle normal completion + } + }, + consumeSseStream: consumeStream, // This enables onFinish to be called on abort + }); +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/14-tool-calling-with-structured-outputs.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/14-tool-calling-with-structured-outputs.mdx new file mode 100644 index 000000000..cafa3b445 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/14-tool-calling-with-structured-outputs.mdx @@ -0,0 +1,48 @@ +--- +title: Tool calling with structured outputs +description: Troubleshooting tool calling when combined with structured output generation +--- + +# Tool calling with structured outputs + +## Issue + +You may want to combine tool calling with structured output generation. + +## Background + +To use tool calling with structured outputs, use `generateText` or `streamText` with the `output` option. + +**Important**: When using `output` with tool calling, the structured output generation counts as an additional step in the execution flow. + +## Solution + +When using `output` with tool calling, adjust your `stopWhen` condition to account for the additional step required for structured output generation: + +```tsx +const result = await generateText({ + model: __MODEL__, + output: Output.object({ + schema: z.object({ + summary: z.string(), + sentiment: z.enum(['positive', 'neutral', 'negative']), + }), + }), + tools: { + analyze: tool({ + description: 'Analyze data', + inputSchema: z.object({ + data: z.string(), + }), + execute: async ({ data }) => { + return { result: 'analyzed' }; + }), + }, + }, + // Add at least 1 to your intended step count to account for structured output + stopWhen: stepCountIs(3), // Now accounts for: tool call + tool result + structured output + prompt: 'Analyze the data and provide a summary', +}); +``` + +For more information about using structured outputs with `generateText` and `streamText` see [Generating Structured Data](/docs/ai-sdk-core/generating-structured-data#structured-outputs-with-generatetext-and-streamtext). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/15-abort-breaks-resumable-streams.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/15-abort-breaks-resumable-streams.mdx new file mode 100644 index 000000000..111574b44 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/15-abort-breaks-resumable-streams.mdx @@ -0,0 +1,55 @@ +--- +title: Abort breaks resumable streams +description: Troubleshooting stream resumption failures when using abort functionality +--- + +# Abort breaks resumable streams + +## Issue + +When using `useChat` with `resume: true` for stream resumption, the abort functionality breaks. Closing a tab, refreshing the page, or calling the `stop()` function will trigger an abort signal that interferes with the resumption mechanism, preventing streams from being properly resumed. + +```tsx +// This configuration will cause conflicts +const { messages, stop } = useChat({ + id: chatId, + resume: true, // Stream resumption enabled +}); + +// Closing the tab will trigger abort and stop resumption +``` + +## Background + +When a page is closed or refreshed, the browser automatically sends an abort signal, which breaks the resumption flow. + +## Current limitations + +We're aware of this incompatibility and are exploring solutions. **In the meantime, please choose either stream resumption or abort functionality based on your application's requirements**, but not both. + +### Option 1: Use stream resumption without abort + +If you need to support long-running generations that persist across page reloads: + +```tsx +const { messages, sendMessage } = useChat({ + id: chatId, + resume: true, +}); +``` + +### Option 2: Use abort without stream resumption + +If you need to allow users to stop streams manually: + +```tsx +const { messages, sendMessage, stop } = useChat({ + id: chatId, + resume: false, // Disable stream resumption (default behavior) +}); +``` + +## Related + +- [Chatbot Resume Streams](/docs/ai-sdk-ui/chatbot-resume-streams) +- [Stopping Streams](/docs/advanced/stopping-streams) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/15-stream-text-not-working.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/15-stream-text-not-working.mdx new file mode 100644 index 000000000..485b48319 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/15-stream-text-not-working.mdx @@ -0,0 +1,33 @@ +--- +title: streamText fails silently +description: Troubleshooting errors related to the streamText function not working. +--- + +# `streamText` is not working + +## Issue + +I am using [`streamText`](/docs/reference/ai-sdk-core/stream-text) function, and it does not work. +It does not throw any errors and the stream is only containing error parts. + +## Background + +`streamText` immediately starts streaming to enable sending data without waiting for the model. +Errors become part of the stream and are not thrown to prevent e.g. servers from crashing. + +## Solution + +To log errors, you can provide an `onError` callback that is triggered when an error occurs. + +```tsx highlight="6-8" +import { streamText } from 'ai'; +__PROVIDER_IMPORT__; + +const result = streamText({ + model: __MODEL__, + prompt: 'Invent a new holiday and describe its traditions.', + onError({ error }) { + console.error(error); // your error logging logic here + }, +}); +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/16-streaming-status-delay.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/16-streaming-status-delay.mdx new file mode 100644 index 000000000..297285278 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/16-streaming-status-delay.mdx @@ -0,0 +1,63 @@ +--- +title: Streaming Status Shows But No Text Appears +description: Why useChat shows "streaming" status without any visible content +--- + +# Streaming Status Shows But No Text Appears + +## Issue + +When using `useChat`, the status changes to "streaming" immediately, but no text appears for several seconds. + +## Background + +The status changes to "streaming" as soon as the connection to the server is established and streaming begins - this includes metadata streaming, not just the LLM's generated tokens. + +## Solution + +Create a custom loading state that checks if the last assistant message actually contains content: + +```tsx +'use client'; + +import { useChat } from '@ai-sdk/react'; + +export default function Page() { + const { messages, status } = useChat(); + + const lastMessage = messages.at(-1); + + const showLoader = + status === 'streaming' && + lastMessage?.role === 'assistant' && + lastMessage?.parts?.length === 0; + + return ( + <> + {messages.map(message => ( +
+ {message.role === 'user' ? 'User: ' : 'AI: '} + {message.parts.map((part, index) => + part.type === 'text' ? {part.text} : null, + )} +
+ ))} + + {showLoader &&
Loading...
} + + ); +} +``` + +You can also check for specific part types if you're waiting for something specific: + +```tsx +const showLoader = + status === 'streaming' && + lastMessage?.role === 'assistant' && + !lastMessage?.parts?.some(part => part.type === 'text'); +``` + +## Related Issues + +- [GitHub Issue #7586](https://github.com/vercel/ai/issues/7586) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/17-use-chat-stale-body-data.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/17-use-chat-stale-body-data.mdx new file mode 100644 index 000000000..27648237a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/17-use-chat-stale-body-data.mdx @@ -0,0 +1,141 @@ +--- +title: Stale body values with useChat +description: Troubleshooting stale values when passing information via the body parameter of useChat +--- + +# Stale body values with useChat + +## Issue + +When using `useChat` and passing dynamic information via the `body` parameter at the hook level, the data remains stale and only reflects the value from the initial component render. This occurs because the body configuration is captured once when the hook is initialized and doesn't update with subsequent component re-renders. + +```tsx +// Problematic code - body data will be stale +export default function Chat() { + const [temperature, setTemperature] = useState(0.7); + const [userId, setUserId] = useState('user123'); + + // This body configuration is captured once and won't update + const { messages, sendMessage } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + body: { + temperature, // Always the initial value (0.7) + userId, // Always the initial value ('user123') + }, + }), + }); + + // Even if temperature or userId change, the body in requests will still use initial values + return ( +
+ setTemperature(parseFloat(e.target.value))} + /> + {/* Chat UI */} +
+ ); +} +``` + +## Background + +The hook-level body configuration is evaluated once during the initial render and doesn't re-evaluate when component state changes. + +## Solution + +Pass dynamic variables via the second argument of the `sendMessage` function instead of at the hook level. Request-level options are evaluated on each call and take precedence over hook-level options. + +```tsx +export default function Chat() { + const [temperature, setTemperature] = useState(0.7); + const [userId, setUserId] = useState('user123'); + const [input, setInput] = useState(''); + + const { messages, sendMessage } = useChat({ + // Static configuration only + transport: new DefaultChatTransport({ + api: '/api/chat', + }), + }); + + return ( +
+ setTemperature(parseFloat(e.target.value))} + /> + +
{ + event.preventDefault(); + if (input.trim()) { + // Pass dynamic values as request-level options + sendMessage( + { text: input }, + { + body: { + temperature, // Current value at request time + userId, // Current value at request time + }, + }, + ); + setInput(''); + } + }} + > + setInput(e.target.value)} /> +
+
+ ); +} +``` + +### Alternative: Dynamic Hook-Level Configuration + +If you need hook-level configuration that responds to changes, you can use functions that return configuration values. However, for component state, you'll need to use `useRef` to access current values: + +```tsx +export default function Chat() { + const temperatureRef = useRef(0.7); + + const { messages, sendMessage } = useChat({ + transport: new DefaultChatTransport({ + api: '/api/chat', + body: () => ({ + temperature: temperatureRef.current, // Access via ref.current + sessionId: getCurrentSessionId(), // Function calls work directly + }), + }), + }); + + // ... +} +``` + +**Recommendation:** Request-level configuration is simpler and more reliable for component state. Use it whenever you need to pass dynamic values that change during the component lifecycle. + +### Server-side handling + +On your server side, retrieve the custom fields by destructuring the request body: + +```tsx +// app/api/chat/route.ts +export async function POST(req: Request) { + const { messages, temperature, userId } = await req.json(); + + const result = streamText({ + model: 'openai/gpt-5-mini', + messages: await convertToModelMessages(messages), + temperature, // Use the dynamic temperature from the request + // ... other configuration + }); + + return result.toUIMessageStreamResponse(); +} +``` + +For more information, see [chatbot request configuration documentation](/docs/ai-sdk-ui/chatbot#request-configuration). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/18-ontoolcall-type-narrowing.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/18-ontoolcall-type-narrowing.mdx new file mode 100644 index 000000000..776e8669e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/18-ontoolcall-type-narrowing.mdx @@ -0,0 +1,66 @@ +--- +title: Type Error with onToolCall +description: How to handle TypeScript type errors when using the onToolCall callback +--- + +# Type Error with onToolCall + +When using the `onToolCall` callback with TypeScript, you may encounter type errors when trying to pass tool properties directly to `addToolOutput`. + +## Problem + +TypeScript cannot automatically narrow the type of `toolCall.toolName` when you have both static and dynamic tools, leading to type errors: + +```tsx +// ❌ This causes a TypeScript error +const { messages, sendMessage, addToolOutput } = useChat({ + async onToolCall({ toolCall }) { + addToolOutput({ + tool: toolCall.toolName, // Type 'string' is not assignable to type '"yourTool" | "yourOtherTool"' + toolCallId: toolCall.toolCallId, + output: someOutput, + }); + }, +}); +``` + +The error occurs because: + +- Static tools have specific literal types for their names (e.g., `"getWeatherInformation"`) +- Dynamic tools have `toolName` as a generic `string` +- TypeScript can't guarantee that `toolCall.toolName` matches your specific tool names + +## Solution + +Check if the tool is dynamic first to enable proper type narrowing: + +```tsx +// ✅ Correct approach with type narrowing +const { messages, sendMessage, addToolOutput } = useChat({ + async onToolCall({ toolCall }) { + // Check if it's a dynamic tool first + if (toolCall.dynamic) { + return; + } + + // Now TypeScript knows this is a static tool with the correct type + addToolOutput({ + tool: toolCall.toolName, // No type error! + toolCallId: toolCall.toolCallId, + output: someOutput, + }); + }, +}); +``` + + + If you're still using the deprecated `addToolResult` method, this solution + applies the same way. Consider migrating to `addToolOutput` for consistency + with the latest API. + + +## Related + +- [Chatbot Tool Usage](/docs/ai-sdk-ui/chatbot-tool-usage) +- [Dynamic Tools](/docs/reference/ai-sdk-core/dynamic-tool) +- [useChat Reference](/docs/reference/ai-sdk-ui/use-chat) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/19-unsupported-model-version.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/19-unsupported-model-version.mdx new file mode 100644 index 000000000..2d59e77b9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/19-unsupported-model-version.mdx @@ -0,0 +1,50 @@ +--- +title: Unsupported model version error +description: Troubleshooting the AI_UnsupportedModelVersionError when migrating to AI SDK 5 +--- + +# Unsupported model version error + +## Issue + +When migrating to AI SDK 5, you might encounter an error stating that your model uses an unsupported version: + +``` +AI_UnsupportedModelVersionError: Unsupported model version v1 for provider "ollama.chat" and model "gamma3:4b". +AI SDK 5 only supports models that implement specification version "v2". +``` + +This error occurs because the version of the provider package you're using implements the older (v1) model specification. + +## Background + +AI SDK 5 requires all provider packages to implement specification version "v2". When you upgrade to AI SDK 5 but don't update your provider packages to compatible versions, they continue using the older "v1" specification, causing this error. + +## Solution + +### Update provider packages to AI SDK 5 compatible versions + +Update all your `@ai-sdk/*` provider packages to compatible version `2.0.0` or later. These versions implement the v2 specification required by AI SDK 5. + +```bash +pnpm install ai@latest @ai-sdk/openai@latest @ai-sdk/anthropic@latest +``` + +For AI SDK 5 compatibility, you need: + +- `ai` package: `5.0.0` or later +- `@ai-sdk/*` packages: `2.0.0` or later (for example, `@ai-sdk/openai`, `@ai-sdk/anthropic`, `@ai-sdk/google`) +- `@ai-sdk/provider` package: `2.0.0` or later +- `zod` package: `4.1.8` or later + +### Check provider compatibility + +If you're using a third-party or custom provider, verify that it has been updated to support AI SDK 5. Not all providers may have v2-compatible versions available yet. + +To check if a provider supports AI SDK 5: + +1. Check the provider's package.json for `@ai-sdk/provider` peer dependency version `2.0.0` or later +2. Review the provider's changelog or migration guide +3. Check the provider's repository for AI SDK 5 support + +For more information on migrating to AI SDK 5, see the [AI SDK 5.0 migration guide](/docs/migration-guides/migration-guide-5-0). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/20-no-object-generated-content-filter.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/20-no-object-generated-content-filter.mdx new file mode 100644 index 000000000..63f0c4b7b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/20-no-object-generated-content-filter.mdx @@ -0,0 +1,76 @@ +--- +title: Object generation failed with OpenAI +description: Troubleshooting NoObjectGeneratedError with finish-reason content-filter caused by incompatible Zod schema types when using OpenAI structured outputs +--- + +# Object generation failed with OpenAI + +## Issue + +When using structured output generation with OpenAI, you may encounter a `NoObjectGeneratedError` with the finish reason `content-filter`. This error occurs when your Zod schema contains incompatible types that OpenAI's structured output feature cannot process. + +```typescript +// Problematic code - incompatible schema types +import { generateText, Output } from 'ai'; +import { openai } from '@ai-sdk/openai'; +import { z } from 'zod'; + +const result = await generateText({ + model: openai('gpt-4o-2024-08-06'), + output: Output.object({ + schema: z.object({ + name: z.string().nullish(), // ❌ .nullish() is not supported + email: z.string().optional(), // ❌ .optional() is not supported + age: z.number().nullable(), // ✅ .nullable() is supported + }), + }), + prompt: 'Generate a user profile', +}); + +// Error: NoObjectGeneratedError: No object generated. +// Finish reason: content-filter +``` + +## Background + +OpenAI's structured output generation uses JSON Schema under the hood and has specific requirements for schema compatibility. The Zod methods `.nullish()` and `.optional()` generate JSON Schema patterns that are incompatible with OpenAI's implementation, causing the model to reject the schema and return a content-filter finish reason. + +## Solution + +Replace `.nullish()` and `.optional()` with `.nullable()` in your Zod schemas when using structured output generation with OpenAI models. + +```typescript +import { generateText, Output } from 'ai'; +import { openai } from '@ai-sdk/openai'; +import { z } from 'zod'; + +// Correct approach - use .nullable() +const result = await generateText({ + model: openai('gpt-4o-2024-08-06'), + output: Output.object({ + schema: z.object({ + name: z.string().nullable(), // ✅ Use .nullable() instead of .nullish() + email: z.string().nullable(), // ✅ Use .nullable() instead of .optional() + age: z.number().nullable(), + }), + }), + prompt: 'Generate a user profile', +}); + +console.log(result.output); +// { name: "John Doe", email: "john@example.com", age: 30 } +// or { name: null, email: null, age: 25 } +``` + +### Schema Type Comparison + +| Zod Type | Compatible | JSON Schema Behavior | +| ------------- | ---------- | ------------------------------------------------------ | +| `.nullable()` | ✅ Yes | Allows `null` or the specified type | +| `.optional()` | ❌ No | Field can be omitted (not supported) | +| `.nullish()` | ❌ No | Allows `null`, `undefined`, or omitted (not supported) | + +## Related Information + +- For more details on structured output generation, see [Generating Structured Data](/docs/ai-sdk-core/generating-structured-data) +- For OpenAI-specific structured output configuration, see [OpenAI Provider - Structured Outputs](/providers/ai-sdk-providers/openai#structured-outputs) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/21-missing-tool-results-error.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/21-missing-tool-results-error.mdx new file mode 100644 index 000000000..c40d7c15f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/21-missing-tool-results-error.mdx @@ -0,0 +1,82 @@ +--- +title: Missing Tool Results Error +description: How to fix the "Tool results are missing for tool calls" error when using the AI SDK. +--- + +# Missing Tool Results Error + +## Issue + +You encounter the error `AI_MissingToolResultsError` with a message like: + +> Tool results are missing for tool calls: ... + +## Cause + +This error occurs when you attempt to send a new message to the Large Language Model (LLM) while there are pending tool calls from a previous turn that have not yet been resolved. + +The AI SDK core logic validates that all `tool-call` parts in the conversation history are resolved before proceeding. "Resolved" typically means: + +1. The tool has been executed and a `tool-result` has been added to the history. +2. Or, the tool call has triggered a `tool-approval-response` (if using tool approvals). + +If a tool call is found without a corresponding result or approval response, this error is thrown to prevent sending an invalid conversation history to the model. + +## Solution + +Ensure that every tool call in your conversation history is properly handled. + +### 1. Provide Tool Results + +For standard tool calls, ensure that you provide the output of the tool execution. + +```typescript +const messages = [ + { role: 'user', content: 'What is the weather in NY?' }, + { + role: 'assistant', + content: [ + { + type: 'tool-call', + toolCallId: 'call_123', + toolName: 'getWeather', + args: { location: 'New York' }, + }, + ], + }, + // You MUST include this tool message with the result: + { + role: 'tool', + content: [ + { + type: 'tool-result', + toolCallId: 'call_123', + toolName: 'getWeather', + result: 'Sunny, 25°C', + }, + ], + }, + // Now you can add a new user message + { role: 'user', content: 'And in London?' }, +]; +``` + +### 2. Handle Tool Approvals + +If you are using the tool approval workflow, ensure that you include the `tool-approval-response`. + +```typescript +const messages = [ + // ... assistant requests tool execution (needs approval) + { + role: 'tool', + content: [ + { + type: 'tool-approval-response', + approvalId: 'approval_123', + approved: true, // or false + }, + ], + }, +]; +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/30-model-is-not-assignable-to-type.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/30-model-is-not-assignable-to-type.mdx new file mode 100644 index 000000000..bd1b40a39 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/30-model-is-not-assignable-to-type.mdx @@ -0,0 +1,21 @@ +--- +title: Model is not assignable to type "LanguageModelV1" +description: Troubleshooting errors related to incompatible models. +--- + +# Model is not assignable to type "LanguageModelV1" + +## Issue + +I have updated the AI SDK and now I get the following error: `Type 'SomeModel' is not assignable to type 'LanguageModelV1'.` + +Similar errors can occur with `EmbeddingModelV3` as well. + +## Background + +Sometimes new features are being added to the model specification. +This can cause incompatibilities with older provider versions. + +## Solution + +Update your provider packages and the AI SDK to the latest version. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/40-typescript-cannot-find-namespace-jsx.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/40-typescript-cannot-find-namespace-jsx.mdx new file mode 100644 index 000000000..5484ae55b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/40-typescript-cannot-find-namespace-jsx.mdx @@ -0,0 +1,24 @@ +--- +title: TypeScript error "Cannot find namespace 'JSX'" +description: Troubleshooting errors related to TypeScript and JSX. +--- + +# TypeScript error "Cannot find namespace 'JSX'" + +## Issue + +I am using the AI SDK in a project without React, e.g. an Hono server, and I get the following error: +`error TS2503: Cannot find namespace 'JSX'.` + +## Background + +The AI SDK has a dependency on `@types/react` which defines the `JSX` namespace. +It will be removed in the next major version of the AI SDK. + +## Solution + +You can install the `@types/react` package as a dependency to fix the error. + +```bash +npm install @types/react +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/50-react-maximum-update-depth-exceeded.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/50-react-maximum-update-depth-exceeded.mdx new file mode 100644 index 000000000..7f86a0dc1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/50-react-maximum-update-depth-exceeded.mdx @@ -0,0 +1,39 @@ +--- +title: React error "Maximum update depth exceeded" +description: Troubleshooting errors related to the "Maximum update depth exceeded" error. +--- + +# React error "Maximum update depth exceeded" + +## Issue + +I am using the AI SDK in a React project with the `useChat` or `useCompletion` hooks +and I get the following error when AI responses stream in: `Maximum update depth exceeded`. + +## Background + +By default, the UI is re-rendered on every chunk that arrives. +This can overload the rendering, especially on slower devices or when complex components +need updating (e.g. Markdown). Throttling can mitigate this. + +## Solution + +Use the `experimental_throttle` option to throttle the UI updates: + +### `useChat` + +```tsx filename="page.tsx" highlight="2-3" +const { messages, ... } = useChat({ + // Throttle the messages and data updates to 50ms: + experimental_throttle: 50 +}) +``` + +### `useCompletion` + +```tsx filename="page.tsx" highlight="2-3" +const { completion, ... } = useCompletion({ + // Throttle the completion and data updates to 50ms: + experimental_throttle: 50 +}) +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/60-jest-cannot-find-module-ai-rsc.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/60-jest-cannot-find-module-ai-rsc.mdx new file mode 100644 index 000000000..b5ca97c59 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/60-jest-cannot-find-module-ai-rsc.mdx @@ -0,0 +1,22 @@ +--- +title: "Jest: cannot find module '@ai-sdk/rsc'" +description: "Troubleshooting AI SDK errors related to the Jest: cannot find module '@ai-sdk/rsc' error" +--- + +# Jest: cannot find module '@ai-sdk/rsc' + +## Issue + +I am using AI SDK RSC and am writing tests for my RSC components with Jest. + +I am getting the following error: `Cannot find module '@ai-sdk/rsc'`. + +## Solution + +Configure the module resolution via `jest config update` in `moduleNameMapper`: + +```json filename="jest.config.js" +"moduleNameMapper": { + "^@ai-sdk/rsc$": "/node_modules/@ai-sdk/rsc/dist" +} +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/70-high-memory-usage-with-images.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/70-high-memory-usage-with-images.mdx new file mode 100644 index 000000000..a861d92bf --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/70-high-memory-usage-with-images.mdx @@ -0,0 +1,108 @@ +--- +title: High memory usage when processing many images +description: Troubleshooting high memory usage when using generateText or streamText with many images +--- + +# High memory usage when processing many images + +## Issue + +When using `generateText` or `streamText` with many images (e.g., in a loop or batch processing), you may notice: + +- Memory usage grows continuously and doesn't decrease +- Application eventually runs out of memory +- Memory is not reclaimed even after garbage collection + +This is especially noticeable when using `experimental_download` to process images from URLs, or when sending base64-encoded images in prompts. + +## Background + +By default, the AI SDK includes the full request and response bodies in the step results. When processing images, the request body contains the base64-encoded image data, which can be very large (a single image can be 1MB+ when base64 encoded). If you process many images and keep references to the results, this data accumulates in memory. + +For example, processing 100 images of 500KB each would include ~50MB+ of request body data in memory. + +## Solution + +Use the `experimental_include` option to disable inclusion of request and/or response bodies: + +```ts +import { generateText } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const result = await generateText({ + model: openai('gpt-4o'), + messages: [ + { + role: 'user', + content: [ + { type: 'text', text: 'Describe this image' }, + { type: 'image', image: imageUrl }, + ], + }, + ], + // Disable inclusion of request body to reduce memory usage + experimental_include: { + requestBody: false, + responseBody: false, + }, +}); +``` + +### Options + +The `experimental_include` option accepts: + +- `requestBody`: Set to `false` to exclude the request body from step results. This is where base64-encoded images are stored. Default: `true`. Available in both `generateText` and `streamText`. +- `responseBody`: Set to `false` to exclude the response body from step results. Default: `true`. Only available in `generateText`. + +### When to use + +- **Batch processing images**: When processing many images in a loop +- **Long-running agents**: When an agent may process many images over its lifetime +- **Memory-constrained environments**: When running in environments with limited memory + +### Trade-offs + +When you disable body inclusion: + +- You won't have access to `result.request.body` or `result.response.body` +- Debugging may be harder since you can't inspect the raw request/response +- If you need the bodies for logging or debugging, consider extracting the data you need before the next iteration + +## Example: Processing multiple images + +```ts +import { generateText } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const imageUrls = [ + /* array of image URLs */ +]; +const results = []; + +for (const imageUrl of imageUrls) { + const result = await generateText({ + model: openai('gpt-4o'), + messages: [ + { + role: 'user', + content: [ + { type: 'text', text: 'Describe this image' }, + { type: 'image', image: imageUrl }, + ], + }, + ], + experimental_include: { + requestBody: false, + }, + }); + + // Only store the text result, not the full result object + results.push(result.text); +} +``` + +## Learn more + +- [`generateText` API Reference](/docs/reference/ai-sdk-core/generate-text) +- [`streamText` API Reference](/docs/reference/ai-sdk-core/stream-text) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/index.mdx b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/index.mdx new file mode 100644 index 000000000..35a0f5783 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/docs/09-troubleshooting/index.mdx @@ -0,0 +1,11 @@ +--- +title: Troubleshooting +description: Troubleshooting information for common issues encountered with the AI SDK. +collapsed: true +--- + +# Troubleshooting + +This section is designed to help you quickly identify and resolve common issues encountered with the AI SDK, ensuring a smoother and more efficient development experience. + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/internal.d.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/internal.d.ts new file mode 100644 index 000000000..be034cd88 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/internal.d.ts @@ -0,0 +1 @@ +export * from './dist/internal'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/package.json new file mode 100644 index 000000000..ef2d8fcd4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/package.json @@ -0,0 +1,118 @@ +{ + "name": "ai", + "version": "6.0.138", + "description": "AI SDK by Vercel - build apps like ChatGPT, Claude, Gemini, and more with a single interface for any model using the Vercel AI Gateway or go direct to OpenAI, Anthropic, Google, or any other model provider.", + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "source": "./src/index.ts", + "files": [ + "dist/**/*", + "docs/**/*", + "src", + "!src/**/*.test.ts", + "!src/**/*.test-d.ts", + "!src/**/__snapshots__", + "CHANGELOG.md", + "internal.d.ts", + "README.md", + "test.d.ts" + ], + "directories": { + "doc": "./docs" + }, + "exports": { + "./package.json": "./package.json", + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + }, + "./internal": { + "types": "./dist/internal/index.d.ts", + "import": "./dist/internal/index.mjs", + "module": "./dist/internal/index.mjs", + "require": "./dist/internal/index.js" + }, + "./test": { + "types": "./dist/test/index.d.ts", + "import": "./dist/test/index.mjs", + "module": "./dist/test/index.mjs", + "require": "./dist/test/index.js" + } + }, + "dependencies": { + "@opentelemetry/api": "1.9.0", + "@ai-sdk/gateway": "3.0.80", + "@ai-sdk/provider": "3.0.8", + "@ai-sdk/provider-utils": "4.0.21" + }, + "devDependencies": { + "@edge-runtime/vm": "^5.0.0", + "@types/json-schema": "7.0.15", + "@types/node": "20.17.24", + "esbuild": "^0.24.2", + "tsup": "^7.2.0", + "tsx": "^4.19.2", + "typescript": "5.8.3", + "zod": "3.25.76", + "@ai-sdk/test-server": "1.0.3", + "@vercel/ai-tsconfig": "0.0.0" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + }, + "engines": { + "node": ">=18" + }, + "publishConfig": { + "access": "public" + }, + "homepage": "https://ai-sdk.dev/docs", + "repository": { + "type": "git", + "url": "git+https://github.com/vercel/ai.git" + }, + "bugs": { + "url": "https://github.com/vercel/ai/issues" + }, + "keywords": [ + "ai", + "vercel", + "sdk", + "llm", + "mcp", + "tool-calling", + "tools", + "structured-output", + "agent", + "agentic", + "generative", + "genai", + "chatbot", + "prompt", + "inference", + "language-model", + "streaming", + "openai", + "anthropic", + "claude", + "gemini", + "xai", + "grok" + ], + "scripts": { + "build": "pnpm clean && tsup --tsconfig tsconfig.build.json", + "build:watch": "pnpm clean && tsup --watch --tsconfig tsconfig.build.json", + "clean": "del-cli dist docs *.tsbuildinfo", + "type-check": "tsc --build", + "test": "pnpm test:node && pnpm test:edge", + "test:update": "pnpm test:node -u", + "test:watch": "vitest --config vitest.node.config.js", + "test:edge": "vitest --config vitest.edge.config.js --run", + "test:node": "vitest --config vitest.node.config.js --run", + "check-bundle-size": "tsx scripts/check-bundle-size.ts" + } +} \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/agent.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/agent.ts new file mode 100644 index 000000000..4ef41470e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/agent.ts @@ -0,0 +1,124 @@ +import { ModelMessage } from '@ai-sdk/provider-utils'; +import { GenerateTextResult } from '../generate-text/generate-text-result'; +import { Output } from '../generate-text/output'; +import { StreamTextTransform } from '../generate-text/stream-text'; +import { StreamTextResult } from '../generate-text/stream-text-result'; +import { ToolSet } from '../generate-text/tool-set'; +import { TimeoutConfiguration } from '../prompt/call-settings'; +import type { ToolLoopAgentOnStepFinishCallback } from './tool-loop-agent-settings'; + +/** + * Parameters for calling an agent. + */ +export type AgentCallParameters = ([ + CALL_OPTIONS, +] extends [never] + ? { options?: never } + : { options: CALL_OPTIONS }) & + ( + | { + /** + * A prompt. It can be either a text prompt or a list of messages. + * + * You can either use `prompt` or `messages` but not both. + */ + prompt: string | Array; + + /** + * A list of messages. + * + * You can either use `prompt` or `messages` but not both. + */ + messages?: never; + } + | { + /** + * A list of messages. + * + * You can either use `prompt` or `messages` but not both. + */ + messages: Array; + + /** + * A prompt. It can be either a text prompt or a list of messages. + * + * You can either use `prompt` or `messages` but not both. + */ + prompt?: never; + } + ) & { + /** + * Abort signal. + */ + abortSignal?: AbortSignal; + + /** + * Timeout in milliseconds. Can be specified as a number or as an object with `totalMs`. + */ + timeout?: TimeoutConfiguration; + + /** + * Callback that is called when each step (LLM call) is finished, including intermediate steps. + */ + onStepFinish?: ToolLoopAgentOnStepFinishCallback; + }; + +/** + * Parameters for streaming an output from an agent. + */ +export type AgentStreamParameters< + CALL_OPTIONS, + TOOLS extends ToolSet, +> = AgentCallParameters & { + /** + * Optional stream transformations. + * They are applied in the order they are provided. + * The stream transformations must maintain the stream structure for streamText to work correctly. + */ + experimental_transform?: + | StreamTextTransform + | Array>; +}; + +/** + * An Agent receives a prompt (text or messages) and generates or streams an output + * that consists of steps, tool calls, data parts, etc. + * + * You can implement your own Agent by implementing the `Agent` interface, + * or use the `ToolLoopAgent` class. + */ +export interface Agent< + CALL_OPTIONS = never, + TOOLS extends ToolSet = {}, + OUTPUT extends Output = never, +> { + /** + * The specification version of the agent interface. This will enable + * us to evolve the agent interface and retain backwards compatibility. + */ + readonly version: 'agent-v1'; + + /** + * The id of the agent. + */ + readonly id: string | undefined; + + /** + * The tools that the agent can use. + */ + readonly tools: TOOLS; + + /** + * Generates an output from the agent (non-streaming). + */ + generate( + options: AgentCallParameters, + ): PromiseLike>; + + /** + * Streams an output from the agent (streaming). + */ + stream( + options: AgentStreamParameters, + ): PromiseLike>; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/create-agent-ui-stream-response.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/create-agent-ui-stream-response.ts new file mode 100644 index 000000000..a8f664689 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/create-agent-ui-stream-response.ts @@ -0,0 +1,61 @@ +import { StreamTextTransform, UIMessageStreamOptions } from '../generate-text'; +import { Output } from '../generate-text/output'; +import { ToolSet } from '../generate-text/tool-set'; +import { TimeoutConfiguration } from '../prompt/call-settings'; +import { createUIMessageStreamResponse } from '../ui-message-stream'; +import { UIMessageStreamResponseInit } from '../ui-message-stream/ui-message-stream-response-init'; +import { InferUITools, UIMessage } from '../ui/ui-messages'; +import { Agent } from './agent'; +import { createAgentUIStream } from './create-agent-ui-stream'; +import type { ToolLoopAgentOnStepFinishCallback } from './tool-loop-agent-settings'; + +/** + * Runs the agent and returns a response object with a UI message stream. + * + * @param agent - The agent to run. + * @param uiMessages - The input UI messages. + * @param abortSignal - Abort signal. Optional. + * @param timeout - Timeout in milliseconds. Optional. + * @param options - The options for the agent. Optional. + * @param experimental_transform - Stream transformations. Optional. + * @param onStepFinish - Callback that is called when each step is finished. Optional. + * @param headers - Additional headers for the response. Optional. + * @param status - The status code for the response. Optional. + * @param statusText - The status text for the response. Optional. + * @param consumeSseStream - Whether to consume the SSE stream. Optional. + * + * @returns The response object. + */ +export async function createAgentUIStreamResponse< + CALL_OPTIONS = never, + TOOLS extends ToolSet = {}, + OUTPUT extends Output = never, + MESSAGE_METADATA = unknown, +>({ + headers, + status, + statusText, + consumeSseStream, + ...options +}: { + agent: Agent; + uiMessages: unknown[]; + abortSignal?: AbortSignal; + timeout?: TimeoutConfiguration; + options?: CALL_OPTIONS; + experimental_transform?: + | StreamTextTransform + | Array>; + onStepFinish?: ToolLoopAgentOnStepFinishCallback; +} & UIMessageStreamResponseInit & + UIMessageStreamOptions< + UIMessage> + >): Promise { + return createUIMessageStreamResponse({ + headers, + status, + statusText, + consumeSseStream, + stream: await createAgentUIStream(options), + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/create-agent-ui-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/create-agent-ui-stream.ts new file mode 100644 index 000000000..cc8da0282 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/create-agent-ui-stream.ts @@ -0,0 +1,84 @@ +import { StreamTextTransform, UIMessageStreamOptions } from '../generate-text'; +import { Output } from '../generate-text/output'; +import { ToolSet } from '../generate-text/tool-set'; +import { TimeoutConfiguration } from '../prompt/call-settings'; +import { InferUIMessageChunk } from '../ui-message-stream'; +import { convertToModelMessages } from '../ui/convert-to-model-messages'; +import { InferUITools, UIMessage } from '../ui/ui-messages'; +import { validateUIMessages } from '../ui/validate-ui-messages'; +import { AsyncIterableStream } from '../util/async-iterable-stream'; +import { Agent } from './agent'; +import type { ToolLoopAgentOnStepFinishCallback } from './tool-loop-agent-settings'; + +/** + * Runs the agent and stream the output as a UI message stream. + * + * @param agent - The agent to run. + * @param uiMessages - The input UI messages. + * @param abortSignal - The abort signal. Optional. + * @param timeout - Timeout in milliseconds. Optional. + * @param options - The options for the agent. + * @param experimental_transform - The stream transformations. Optional. + * @param onStepFinish - Callback that is called when each step is finished. Optional. + * + * @returns The UI message stream. + */ +export async function createAgentUIStream< + CALL_OPTIONS = never, + TOOLS extends ToolSet = {}, + OUTPUT extends Output = never, + MESSAGE_METADATA = unknown, +>({ + agent, + uiMessages, + options, + abortSignal, + timeout, + experimental_transform, + onStepFinish, + ...uiMessageStreamOptions +}: { + agent: Agent; + uiMessages: unknown[]; + abortSignal?: AbortSignal; + timeout?: TimeoutConfiguration; + options?: CALL_OPTIONS; + experimental_transform?: + | StreamTextTransform + | Array>; + onStepFinish?: ToolLoopAgentOnStepFinishCallback; + // TODO `originalMessages` is part of this for bc, omit in v7 +} & UIMessageStreamOptions< + UIMessage> +>): Promise< + AsyncIterableStream< + InferUIMessageChunk>> + > +> { + const validatedMessages = await validateUIMessages< + UIMessage> + >({ + messages: uiMessages, + tools: agent.tools, + }); + + const modelMessages = await convertToModelMessages(validatedMessages, { + tools: agent.tools, + }); + + const result = await agent.stream({ + prompt: modelMessages, + options: options as CALL_OPTIONS, + abortSignal, + timeout, + experimental_transform, + onStepFinish, + }); + + return result.toUIMessageStream({ + ...uiMessageStreamOptions, + // TODO reading `originalMessages` is here for bc, always use `validatedMessages` in v7 + originalMessages: + uiMessageStreamOptions.originalMessages ?? validatedMessages, + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/index.ts new file mode 100644 index 000000000..d2ab92830 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/index.ts @@ -0,0 +1,33 @@ +export { + type Agent, + type AgentCallParameters, + type AgentStreamParameters, +} from './agent'; +export { + type ToolLoopAgentOnFinishCallback, + type ToolLoopAgentOnStepFinishCallback, + type ToolLoopAgentSettings, + + /** + * @deprecated Use `ToolLoopAgentSettings` instead. + */ + type ToolLoopAgentSettings as Experimental_AgentSettings, +} from './tool-loop-agent-settings'; +export { + ToolLoopAgent, + + /** + * @deprecated Use `ToolLoopAgent` instead. + */ + ToolLoopAgent as Experimental_Agent, +} from './tool-loop-agent'; +export { + /** + * @deprecated Use `InferAgentUIMessage` instead. + */ + type InferAgentUIMessage as Experimental_InferAgentUIMessage, + type InferAgentUIMessage, +} from './infer-agent-ui-message'; +export { createAgentUIStreamResponse } from './create-agent-ui-stream-response'; +export { createAgentUIStream } from './create-agent-ui-stream'; +export { pipeAgentUIStreamToResponse } from './pipe-agent-ui-stream-to-response'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/infer-agent-tools.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/infer-agent-tools.ts new file mode 100644 index 000000000..f0a9d3a62 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/infer-agent-tools.ts @@ -0,0 +1,7 @@ +import { Agent } from './agent'; + +/** + * Infer the type of the tools of an agent. + */ +export type InferAgentTools = + AGENT extends Agent ? TOOLS : never; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/infer-agent-ui-message.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/infer-agent-ui-message.ts new file mode 100644 index 000000000..f6743e0e2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/infer-agent-ui-message.ts @@ -0,0 +1,11 @@ +import { InferUITools, UIMessage } from '../ui/ui-messages'; +import { InferAgentTools } from './infer-agent-tools'; + +/** + * Infer the UI message type of an agent. + */ +export type InferAgentUIMessage = UIMessage< + MESSAGE_METADATA, + never, + InferUITools> +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/pipe-agent-ui-stream-to-response.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/pipe-agent-ui-stream-to-response.ts new file mode 100644 index 000000000..048921f4b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/pipe-agent-ui-stream-to-response.ts @@ -0,0 +1,64 @@ +import { ServerResponse } from 'node:http'; +import { StreamTextTransform, UIMessageStreamOptions } from '../generate-text'; +import { Output } from '../generate-text/output'; +import { ToolSet } from '../generate-text/tool-set'; +import { TimeoutConfiguration } from '../prompt/call-settings'; +import { pipeUIMessageStreamToResponse } from '../ui-message-stream'; +import { UIMessageStreamResponseInit } from '../ui-message-stream/ui-message-stream-response-init'; +import { InferUITools, UIMessage } from '../ui/ui-messages'; +import { Agent } from './agent'; +import { createAgentUIStream } from './create-agent-ui-stream'; +import type { ToolLoopAgentOnStepFinishCallback } from './tool-loop-agent-settings'; + +/** + * Pipes the agent UI message stream to a Node.js ServerResponse object. + * + * @param response - The Node.js ServerResponse object to pipe to. + * @param agent - The agent to run. + * @param uiMessages - The input UI messages. + * @param abortSignal - Abort signal. Optional. + * @param timeout - Timeout in milliseconds. Optional. + * @param options - The options for the agent. Optional. + * @param experimental_transform - Stream transformations. Optional. + * @param onStepFinish - Callback that is called when each step is finished. Optional. + * @param headers - Additional headers for the response. Optional. + * @param status - The status code for the response. Optional. + * @param statusText - The status text for the response. Optional. + * @param consumeSseStream - Whether to consume the SSE stream. Optional. + */ +export async function pipeAgentUIStreamToResponse< + CALL_OPTIONS = never, + TOOLS extends ToolSet = {}, + OUTPUT extends Output = never, + MESSAGE_METADATA = unknown, +>({ + response, + headers, + status, + statusText, + consumeSseStream, + ...options +}: { + response: ServerResponse; + agent: Agent; + uiMessages: unknown[]; + abortSignal?: AbortSignal; + timeout?: TimeoutConfiguration; + options?: CALL_OPTIONS; + experimental_transform?: + | StreamTextTransform + | Array>; + onStepFinish?: ToolLoopAgentOnStepFinishCallback; +} & UIMessageStreamResponseInit & + UIMessageStreamOptions< + UIMessage> + >): Promise { + pipeUIMessageStreamToResponse({ + response, + headers, + status, + statusText, + consumeSseStream, + stream: await createAgentUIStream(options), + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/tool-loop-agent-settings.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/tool-loop-agent-settings.ts new file mode 100644 index 000000000..18b85e404 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/tool-loop-agent-settings.ts @@ -0,0 +1,195 @@ +import { + FlexibleSchema, + MaybePromiseLike, + ProviderOptions, + SystemModelMessage, +} from '@ai-sdk/provider-utils'; +import type { + OnFinishEvent, + OnStepFinishEvent, +} from '../generate-text/callback-events'; +import { Output } from '../generate-text/output'; +import { PrepareStepFunction } from '../generate-text/prepare-step'; +import { StopCondition } from '../generate-text/stop-condition'; +import { ToolCallRepairFunction } from '../generate-text/tool-call-repair-function'; +import { ToolSet } from '../generate-text/tool-set'; +import { CallSettings } from '../prompt/call-settings'; +import { Prompt } from '../prompt/prompt'; +import { TelemetrySettings } from '../telemetry/telemetry-settings'; +import { LanguageModel, ToolChoice } from '../types/language-model'; +import { DownloadFunction } from '../util/download/download-function'; +import { AgentCallParameters } from './agent'; + +export type ToolLoopAgentOnStepFinishCallback = ( + stepResult: OnStepFinishEvent, +) => Promise | void; + +export type ToolLoopAgentOnFinishCallback = ( + event: OnFinishEvent, +) => PromiseLike | void; + +/** + * Configuration options for an agent. + */ +export type ToolLoopAgentSettings< + CALL_OPTIONS = never, + TOOLS extends ToolSet = {}, + OUTPUT extends Output = never, +> = Omit & { + /** + * The id of the agent. + */ + id?: string; + + /** + * The instructions for the agent. + * + * It can be a string, or, if you need to pass additional provider options (e.g. for caching), a `SystemModelMessage`. + */ + instructions?: string | SystemModelMessage | Array; + + /** + * The language model to use. + */ + model: LanguageModel; + + /** + * The tools that the model can call. The model needs to support calling tools. + */ + tools?: TOOLS; + + /** + * The tool choice strategy. Default: 'auto'. + */ + toolChoice?: ToolChoice>; + + /** + * Condition for stopping the generation when there are tool results in the last step. + * When the condition is an array, any of the conditions can be met to stop the generation. + * + * @default stepCountIs(20) + */ + stopWhen?: + | StopCondition> + | Array>>; + + /** + * Optional telemetry configuration (experimental). + */ + experimental_telemetry?: TelemetrySettings; + + /** + * Limits the tools that are available for the model to call without + * changing the tool call and result types in the result. + */ + activeTools?: Array>; + + /** + * Optional specification for generating structured outputs. + */ + output?: OUTPUT; + + /** + * Optional function that you can use to provide different settings for a step. + */ + prepareStep?: PrepareStepFunction>; + + /** + * A function that attempts to repair a tool call that failed to parse. + */ + experimental_repairToolCall?: ToolCallRepairFunction>; + + /** + * Callback that is called when each step (LLM call) is finished, including intermediate steps. + */ + onStepFinish?: ToolLoopAgentOnStepFinishCallback>; + + /** + * Callback that is called when all steps are finished and the response is complete. + */ + onFinish?: ToolLoopAgentOnFinishCallback>; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; + + /** + * Context that is passed into tool calls. + * + * Experimental (can break in patch releases). + * + * @default undefined + */ + experimental_context?: unknown; + + /** + * Custom download function to use for URLs. + * + * By default, files are downloaded if the model does not support the URL for the given media type. + */ + experimental_download?: DownloadFunction | undefined; + + /** + * The schema for the call options. + */ + callOptionsSchema?: FlexibleSchema; + + /** + * Prepare the parameters for the generateText or streamText call. + * + * You can use this to have templates based on call options. + */ + prepareCall?: ( + options: Omit< + AgentCallParameters>, + 'onStepFinish' + > & + Pick< + ToolLoopAgentSettings, + | 'model' + | 'tools' + | 'maxOutputTokens' + | 'temperature' + | 'topP' + | 'topK' + | 'presencePenalty' + | 'frequencyPenalty' + | 'stopSequences' + | 'seed' + | 'headers' + | 'instructions' + | 'stopWhen' + | 'experimental_telemetry' + | 'activeTools' + | 'providerOptions' + | 'experimental_context' + | 'experimental_download' + >, + ) => MaybePromiseLike< + Pick< + ToolLoopAgentSettings, + | 'model' + | 'tools' + | 'maxOutputTokens' + | 'temperature' + | 'topP' + | 'topK' + | 'presencePenalty' + | 'frequencyPenalty' + | 'stopSequences' + | 'seed' + | 'headers' + | 'instructions' + | 'stopWhen' + | 'experimental_telemetry' + | 'activeTools' + | 'providerOptions' + | 'experimental_context' + | 'experimental_download' + > & + Omit + >; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/tool-loop-agent.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/tool-loop-agent.ts new file mode 100644 index 000000000..6bd6436c2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/agent/tool-loop-agent.ts @@ -0,0 +1,146 @@ +import { generateText } from '../generate-text/generate-text'; +import { GenerateTextResult } from '../generate-text/generate-text-result'; +import { Output } from '../generate-text/output'; +import { StepResult } from '../generate-text/step-result'; +import { stepCountIs } from '../generate-text/stop-condition'; +import { streamText } from '../generate-text/stream-text'; +import { StreamTextResult } from '../generate-text/stream-text-result'; +import { ToolSet } from '../generate-text/tool-set'; +import { Prompt } from '../prompt'; +import { Agent, AgentCallParameters, AgentStreamParameters } from './agent'; +import { + ToolLoopAgentOnStepFinishCallback, + ToolLoopAgentSettings, +} from './tool-loop-agent-settings'; + +/** + * A tool loop agent is an agent that runs tools in a loop. In each step, + * it calls the LLM, and if there are tool calls, it executes the tools + * and calls the LLM again in a new step with the tool results. + * + * The loop continues until: + * - A finish reasoning other than tool-calls is returned, or + * - A tool that is invoked does not have an execute function, or + * - A tool call needs approval, or + * - A stop condition is met (default stop condition is stepCountIs(20)) + */ +export class ToolLoopAgent< + CALL_OPTIONS = never, + TOOLS extends ToolSet = {}, + OUTPUT extends Output = never, +> implements Agent { + readonly version = 'agent-v1'; + + private readonly settings: ToolLoopAgentSettings; + + constructor(settings: ToolLoopAgentSettings) { + this.settings = settings; + } + + /** + * The id of the agent. + */ + get id(): string | undefined { + return this.settings.id; + } + + /** + * The tools that the agent can use. + */ + get tools(): TOOLS { + return this.settings.tools as TOOLS; + } + + private async prepareCall(options: { + prompt?: string | Array; + messages?: Array; + options?: CALL_OPTIONS; + }): Promise< + Omit< + ToolLoopAgentSettings, + 'prepareCall' | 'instructions' | 'onStepFinish' + > & + Prompt + > { + const { onStepFinish: _settingsOnStepFinish, ...settingsWithoutCallback } = + this.settings; + const baseCallArgs = { + ...settingsWithoutCallback, + stopWhen: this.settings.stopWhen ?? stepCountIs(20), + ...options, + }; + + const preparedCallArgs = + (await this.settings.prepareCall?.( + baseCallArgs as Parameters< + NonNullable< + ToolLoopAgentSettings['prepareCall'] + > + >[0], + )) ?? baseCallArgs; + + const { instructions, messages, prompt, ...callArgs } = preparedCallArgs; + + return { + ...callArgs, + + // restore prompt types + ...({ system: instructions, messages, prompt } as Prompt), + }; + } + + private mergeOnStepFinishCallbacks( + methodCallback: ToolLoopAgentOnStepFinishCallback | undefined, + ): ToolLoopAgentOnStepFinishCallback | undefined { + const constructorCallback = this.settings.onStepFinish; + + if (methodCallback && constructorCallback) { + return async (stepResult: StepResult) => { + await constructorCallback(stepResult); + await methodCallback(stepResult); + }; + } + + return methodCallback ?? constructorCallback; + } + + /** + * Generates an output from the agent (non-streaming). + */ + async generate({ + abortSignal, + timeout, + onStepFinish, + ...options + }: AgentCallParameters): Promise< + GenerateTextResult + > { + return generateText({ + ...(await this.prepareCall(options)), + abortSignal, + timeout, + onStepFinish: this.mergeOnStepFinishCallbacks(onStepFinish), + }); + } + + /** + * Streams an output from the agent (streaming). + */ + async stream({ + abortSignal, + timeout, + experimental_transform, + onStepFinish, + ...options + }: AgentStreamParameters): Promise< + StreamTextResult + > { + return streamText({ + ...(await this.prepareCall(options)), + abortSignal, + timeout, + experimental_transform, + onStepFinish: this.mergeOnStepFinishCallbacks(onStepFinish), + }); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed-many-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed-many-result.ts new file mode 100644 index 000000000..f88a7a94c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed-many-result.ts @@ -0,0 +1,53 @@ +import { Embedding } from '../types'; +import { EmbeddingModelUsage } from '../types/usage'; +import { ProviderMetadata } from '../types'; +import { Warning } from '../types/warning'; + +/** + * The result of an `embedMany` call. + * It contains the embeddings, the values, and additional information. + */ +export interface EmbedManyResult { + /** + * The values that were embedded. + */ + readonly values: Array; + + /** + * The embeddings. They are in the same order as the values. + */ + readonly embeddings: Array; + + /** + * The embedding token usage. + */ + readonly usage: EmbeddingModelUsage; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + readonly warnings: Array; + + /** + * Optional provider-specific metadata. + */ + readonly providerMetadata?: ProviderMetadata; + + /** + * Optional raw response data. + */ + readonly responses?: Array< + | { + /** + * Response headers. + */ + headers?: Record; + + /** + * The response body. + */ + body?: unknown; + } + | undefined + >; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed-many.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed-many.ts new file mode 100644 index 000000000..70ba94862 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed-many.ts @@ -0,0 +1,386 @@ +import { ProviderOptions, withUserAgentSuffix } from '@ai-sdk/provider-utils'; +import { logWarnings } from '../logger/log-warnings'; +import { resolveEmbeddingModel } from '../model/resolve-model'; +import { assembleOperationName } from '../telemetry/assemble-operation-name'; +import { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes'; +import { getTracer } from '../telemetry/get-tracer'; +import { recordSpan } from '../telemetry/record-span'; +import { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes'; +import { TelemetrySettings } from '../telemetry/telemetry-settings'; +import { Embedding, EmbeddingModel, ProviderMetadata } from '../types'; +import { Warning } from '../types/warning'; +import { prepareRetries } from '../util/prepare-retries'; +import { splitArray } from '../util/split-array'; +import { EmbedManyResult } from './embed-many-result'; +import { VERSION } from '../version'; + +/** + * Embed several values using an embedding model. The type of the value is defined + * by the embedding model. + * + * `embedMany` automatically splits large requests into smaller chunks if the model + * has a limit on how many embeddings can be generated in a single call. + * + * @param model - The embedding model to use. + * @param values - The values that should be embedded. + * + * @param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2. + * @param abortSignal - An optional abort signal that can be used to cancel the call. + * @param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers. + * + * @param maxParallelCalls - Maximum number of concurrent requests. Default: Infinity. + * + * @param experimental_telemetry - Optional telemetry configuration (experimental). + * + * @param providerOptions - Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + * + * @returns A result object that contains the embeddings, the value, and additional information. + */ +export async function embedMany({ + model: modelArg, + values, + maxParallelCalls = Infinity, + maxRetries: maxRetriesArg, + abortSignal, + headers, + providerOptions, + experimental_telemetry: telemetry, +}: { + /** + * The embedding model to use. + */ + model: EmbeddingModel; + + /** + * The values that should be embedded. + */ + values: Array; + + /** + * Maximum number of retries per embedding model call. Set to 0 to disable retries. + * + * @default 2 + */ + maxRetries?: number; + + /** + * Abort signal. + */ + abortSignal?: AbortSignal; + + /** + * Additional headers to include in the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; + + /** + * Optional telemetry configuration (experimental). + */ + experimental_telemetry?: TelemetrySettings; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; + + /** + * Maximum number of concurrent requests. + * + * @default Infinity + */ + maxParallelCalls?: number; +}): Promise { + const model = resolveEmbeddingModel(modelArg); + + const { maxRetries, retry } = prepareRetries({ + maxRetries: maxRetriesArg, + abortSignal, + }); + + const headersWithUserAgent = withUserAgentSuffix( + headers ?? {}, + `ai/${VERSION}`, + ); + + const baseTelemetryAttributes = getBaseTelemetryAttributes({ + model, + telemetry, + headers: headersWithUserAgent, + settings: { maxRetries }, + }); + + const tracer = getTracer(telemetry); + + return recordSpan({ + name: 'ai.embedMany', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ operationId: 'ai.embedMany', telemetry }), + ...baseTelemetryAttributes, + // specific settings that only make sense on the outer level: + 'ai.values': { + input: () => values.map(value => JSON.stringify(value)), + }, + }, + }), + tracer, + fn: async span => { + const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all([ + model.maxEmbeddingsPerCall, + model.supportsParallelCalls, + ]); + + // the model has not specified limits on + // how many embeddings can be generated in a single call + if (maxEmbeddingsPerCall == null || maxEmbeddingsPerCall === Infinity) { + const { embeddings, usage, warnings, response, providerMetadata } = + await retry(() => { + // nested spans to align with the embedMany telemetry data: + return recordSpan({ + name: 'ai.embedMany.doEmbed', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ + operationId: 'ai.embedMany.doEmbed', + telemetry, + }), + ...baseTelemetryAttributes, + // specific settings that only make sense on the outer level: + 'ai.values': { + input: () => values.map(value => JSON.stringify(value)), + }, + }, + }), + tracer, + fn: async doEmbedSpan => { + const modelResponse = await model.doEmbed({ + values, + abortSignal, + headers: headersWithUserAgent, + providerOptions, + }); + + const embeddings = modelResponse.embeddings; + const usage = modelResponse.usage ?? { tokens: NaN }; + + doEmbedSpan.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.embeddings': { + output: () => + embeddings.map(embedding => + JSON.stringify(embedding), + ), + }, + 'ai.usage.tokens': usage.tokens, + }, + }), + ); + + return { + embeddings, + usage, + warnings: modelResponse.warnings, + providerMetadata: modelResponse.providerMetadata, + response: modelResponse.response, + }; + }, + }); + }); + + span.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.embeddings': { + output: () => + embeddings.map(embedding => JSON.stringify(embedding)), + }, + 'ai.usage.tokens': usage.tokens, + }, + }), + ); + + logWarnings({ + warnings, + provider: model.provider, + model: model.modelId, + }); + + return new DefaultEmbedManyResult({ + values, + embeddings, + usage, + warnings, + providerMetadata, + responses: [response], + }); + } + + // split the values into chunks that are small enough for the model: + const valueChunks = splitArray(values, maxEmbeddingsPerCall); + + // serially embed the chunks: + const embeddings: Array = []; + const warnings: Array = []; + const responses: Array< + | { + headers?: Record; + body?: unknown; + } + | undefined + > = []; + let tokens = 0; + let providerMetadata: ProviderMetadata | undefined; + + const parallelChunks = splitArray( + valueChunks, + supportsParallelCalls ? maxParallelCalls : 1, + ); + + for (const parallelChunk of parallelChunks) { + const results = await Promise.all( + parallelChunk.map(chunk => { + return retry(() => { + // nested spans to align with the embedMany telemetry data: + return recordSpan({ + name: 'ai.embedMany.doEmbed', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ + operationId: 'ai.embedMany.doEmbed', + telemetry, + }), + ...baseTelemetryAttributes, + // specific settings that only make sense on the outer level: + 'ai.values': { + input: () => chunk.map(value => JSON.stringify(value)), + }, + }, + }), + tracer, + fn: async doEmbedSpan => { + const modelResponse = await model.doEmbed({ + values: chunk, + abortSignal, + headers: headersWithUserAgent, + providerOptions, + }); + + const embeddings = modelResponse.embeddings; + const usage = modelResponse.usage ?? { tokens: NaN }; + + doEmbedSpan.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.embeddings': { + output: () => + embeddings.map(embedding => + JSON.stringify(embedding), + ), + }, + 'ai.usage.tokens': usage.tokens, + }, + }), + ); + + return { + embeddings, + usage, + warnings: modelResponse.warnings, + providerMetadata: modelResponse.providerMetadata, + response: modelResponse.response, + }; + }, + }); + }); + }), + ); + + for (const result of results) { + embeddings.push(...result.embeddings); + warnings.push(...result.warnings); + responses.push(result.response); + tokens += result.usage.tokens; + if (result.providerMetadata) { + if (!providerMetadata) { + providerMetadata = { ...result.providerMetadata }; + } else { + for (const [providerName, metadata] of Object.entries( + result.providerMetadata, + )) { + providerMetadata[providerName] = { + ...(providerMetadata[providerName] ?? {}), + ...metadata, + }; + } + } + } + } + } + + span.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.embeddings': { + output: () => + embeddings.map(embedding => JSON.stringify(embedding)), + }, + 'ai.usage.tokens': tokens, + }, + }), + ); + + logWarnings({ + warnings, + provider: model.provider, + model: model.modelId, + }); + + return new DefaultEmbedManyResult({ + values, + embeddings, + usage: { tokens }, + warnings, + providerMetadata: providerMetadata, + responses, + }); + }, + }); +} + +class DefaultEmbedManyResult implements EmbedManyResult { + readonly values: EmbedManyResult['values']; + readonly embeddings: EmbedManyResult['embeddings']; + readonly usage: EmbedManyResult['usage']; + readonly warnings: EmbedManyResult['warnings']; + readonly providerMetadata: EmbedManyResult['providerMetadata']; + readonly responses: EmbedManyResult['responses']; + + constructor(options: { + values: EmbedManyResult['values']; + embeddings: EmbedManyResult['embeddings']; + usage: EmbedManyResult['usage']; + warnings: EmbedManyResult['warnings']; + providerMetadata?: EmbedManyResult['providerMetadata']; + responses?: EmbedManyResult['responses']; + }) { + this.values = options.values; + this.embeddings = options.embeddings; + this.usage = options.usage; + this.warnings = options.warnings; + this.providerMetadata = options.providerMetadata; + this.responses = options.responses; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed-result.ts new file mode 100644 index 000000000..72422103d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed-result.ts @@ -0,0 +1,50 @@ +import { Embedding } from '../types'; +import { EmbeddingModelUsage } from '../types/usage'; +import { ProviderMetadata } from '../types'; +import { Warning } from '../types/warning'; + +/** + * The result of an `embed` call. + * It contains the embedding, the value, and additional information. + */ +export interface EmbedResult { + /** + * The value that was embedded. + */ + readonly value: string; + + /** + * The embedding of the value. + */ + readonly embedding: Embedding; + + /** + * The embedding token usage. + */ + readonly usage: EmbeddingModelUsage; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + readonly warnings: Array; + + /** + * Optional provider-specific metadata. + */ + readonly providerMetadata?: ProviderMetadata; + + /** + * Optional response data. + */ + readonly response?: { + /** + * Response headers. + */ + headers?: Record; + + /** + * The response body. + */ + body?: unknown; + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed.ts new file mode 100644 index 000000000..b929f7290 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/embed.ts @@ -0,0 +1,217 @@ +import { ProviderOptions, withUserAgentSuffix } from '@ai-sdk/provider-utils'; +import { logWarnings } from '../logger/log-warnings'; +import { resolveEmbeddingModel } from '../model/resolve-model'; +import { assembleOperationName } from '../telemetry/assemble-operation-name'; +import { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes'; +import { getTracer } from '../telemetry/get-tracer'; +import { recordSpan } from '../telemetry/record-span'; +import { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes'; +import { TelemetrySettings } from '../telemetry/telemetry-settings'; +import { EmbeddingModel } from '../types'; +import { prepareRetries } from '../util/prepare-retries'; +import { EmbedResult } from './embed-result'; +import { VERSION } from '../version'; + +/** + * Embed a value using an embedding model. The type of the value is defined by the embedding model. + * + * @param model - The embedding model to use. + * @param value - The value that should be embedded. + * + * @param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2. + * @param abortSignal - An optional abort signal that can be used to cancel the call. + * @param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers. + * + * @param experimental_telemetry - Optional telemetry configuration (experimental). + * + * @param providerOptions - Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + * + * @returns A result object that contains the embedding, the value, and additional information. + */ +export async function embed({ + model: modelArg, + value, + providerOptions, + maxRetries: maxRetriesArg, + abortSignal, + headers, + experimental_telemetry: telemetry, +}: { + /** + * The embedding model to use. + */ + model: EmbeddingModel; + + /** + * The value that should be embedded. + */ + value: string; + + /** + * Maximum number of retries per embedding model call. Set to 0 to disable retries. + * + * @default 2 + */ + maxRetries?: number; + + /** + * Abort signal. + */ + abortSignal?: AbortSignal; + + /** + * Additional headers to include in the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; + + /** + * Optional telemetry configuration (experimental). + */ + experimental_telemetry?: TelemetrySettings; +}): Promise { + const model = resolveEmbeddingModel(modelArg); + + const { maxRetries, retry } = prepareRetries({ + maxRetries: maxRetriesArg, + abortSignal, + }); + + const headersWithUserAgent = withUserAgentSuffix( + headers ?? {}, + `ai/${VERSION}`, + ); + + const baseTelemetryAttributes = getBaseTelemetryAttributes({ + model: model, + telemetry, + headers: headersWithUserAgent, + settings: { maxRetries }, + }); + + const tracer = getTracer(telemetry); + + return recordSpan({ + name: 'ai.embed', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ operationId: 'ai.embed', telemetry }), + ...baseTelemetryAttributes, + 'ai.value': { input: () => JSON.stringify(value) }, + }, + }), + tracer, + fn: async span => { + const { embedding, usage, warnings, response, providerMetadata } = + await retry(() => + // nested spans to align with the embedMany telemetry data: + recordSpan({ + name: 'ai.embed.doEmbed', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ + operationId: 'ai.embed.doEmbed', + telemetry, + }), + ...baseTelemetryAttributes, + // specific settings that only make sense on the outer level: + 'ai.values': { input: () => [JSON.stringify(value)] }, + }, + }), + tracer, + fn: async doEmbedSpan => { + const modelResponse = await model.doEmbed({ + values: [value], + abortSignal, + headers: headersWithUserAgent, + providerOptions, + }); + + const embedding = modelResponse.embeddings[0]; + const usage = modelResponse.usage ?? { tokens: NaN }; + + doEmbedSpan.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.embeddings': { + output: () => + modelResponse.embeddings.map(embedding => + JSON.stringify(embedding), + ), + }, + 'ai.usage.tokens': usage.tokens, + }, + }), + ); + + return { + embedding, + usage, + warnings: modelResponse.warnings, + providerMetadata: modelResponse.providerMetadata, + response: modelResponse.response, + }; + }, + }), + ); + + span.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.embedding': { output: () => JSON.stringify(embedding) }, + 'ai.usage.tokens': usage.tokens, + }, + }), + ); + + logWarnings({ warnings, provider: model.provider, model: model.modelId }); + + return new DefaultEmbedResult({ + value, + embedding, + usage, + warnings, + providerMetadata, + response, + }); + }, + }); +} + +class DefaultEmbedResult implements EmbedResult { + readonly value: EmbedResult['value']; + readonly embedding: EmbedResult['embedding']; + readonly usage: EmbedResult['usage']; + readonly warnings: EmbedResult['warnings']; + readonly providerMetadata: EmbedResult['providerMetadata']; + readonly response: EmbedResult['response']; + + constructor(options: { + value: EmbedResult['value']; + embedding: EmbedResult['embedding']; + usage: EmbedResult['usage']; + warnings: EmbedResult['warnings']; + providerMetadata?: EmbedResult['providerMetadata']; + response?: EmbedResult['response']; + }) { + this.value = options.value; + this.embedding = options.embedding; + this.usage = options.usage; + this.warnings = options.warnings; + this.providerMetadata = options.providerMetadata; + this.response = options.response; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/index.ts new file mode 100644 index 000000000..4e9156124 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/embed/index.ts @@ -0,0 +1,4 @@ +export * from './embed'; +export * from './embed-many'; +export * from './embed-many-result'; +export * from './embed-result'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/index.ts new file mode 100644 index 000000000..46a859dd9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/index.ts @@ -0,0 +1,37 @@ +export { + AISDKError, + APICallError, + EmptyResponseBodyError, + InvalidPromptError, + InvalidResponseDataError, + JSONParseError, + LoadAPIKeyError, + LoadSettingError, + NoContentGeneratedError, + NoSuchModelError, + TooManyEmbeddingValuesForCallError, + TypeValidationError, + UnsupportedFunctionalityError, +} from '@ai-sdk/provider'; + +export { InvalidArgumentError } from './invalid-argument-error'; +export { InvalidStreamPartError } from './invalid-stream-part-error'; +export { InvalidToolApprovalError } from './invalid-tool-approval-error'; +export { InvalidToolInputError } from './invalid-tool-input-error'; +export { ToolCallNotFoundForApprovalError } from './tool-call-not-found-for-approval-error'; +export { MissingToolResultsError } from './missing-tool-result-error'; +export { NoImageGeneratedError } from './no-image-generated-error'; +export { NoObjectGeneratedError } from './no-object-generated-error'; +export { NoOutputGeneratedError } from './no-output-generated-error'; +export { NoSpeechGeneratedError } from './no-speech-generated-error'; +export { NoTranscriptGeneratedError } from './no-transcript-generated-error'; +export { NoVideoGeneratedError } from './no-video-generated-error'; +export { NoSuchToolError } from './no-such-tool-error'; +export { ToolCallRepairError } from './tool-call-repair-error'; +export { UnsupportedModelVersionError } from './unsupported-model-version-error'; +export { UIMessageStreamError } from './ui-message-stream-error'; +export { InvalidDataContentError } from '../prompt/invalid-data-content-error'; +export { InvalidMessageRoleError } from '../prompt/invalid-message-role-error'; +export { MessageConversionError } from '../prompt/message-conversion-error'; +export { DownloadError } from '@ai-sdk/provider-utils'; +export { RetryError } from '../util/retry-error'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-argument-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-argument-error.ts new file mode 100644 index 000000000..96f87c26e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-argument-error.ts @@ -0,0 +1,34 @@ +import { AISDKError } from '@ai-sdk/provider'; + +const name = 'AI_InvalidArgumentError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class InvalidArgumentError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly parameter: string; + readonly value: unknown; + + constructor({ + parameter, + value, + message, + }: { + parameter: string; + value: unknown; + message: string; + }) { + super({ + name, + message: `Invalid argument for parameter ${parameter}: ${message}`, + }); + + this.parameter = parameter; + this.value = value; + } + + static isInstance(error: unknown): error is InvalidArgumentError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-stream-part-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-stream-part-error.ts new file mode 100644 index 000000000..ca00c33ca --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-stream-part-error.ts @@ -0,0 +1,28 @@ +import { AISDKError } from '@ai-sdk/provider'; +import { SingleRequestTextStreamPart } from '../generate-text/run-tools-transformation'; + +const name = 'AI_InvalidStreamPartError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class InvalidStreamPartError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly chunk: SingleRequestTextStreamPart; + + constructor({ + chunk, + message, + }: { + chunk: SingleRequestTextStreamPart; + message: string; + }) { + super({ name, message }); + + this.chunk = chunk; + } + + static isInstance(error: unknown): error is InvalidStreamPartError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-tool-approval-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-tool-approval-error.ts new file mode 100644 index 000000000..7f2510b64 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-tool-approval-error.ts @@ -0,0 +1,26 @@ +import { AISDKError } from '@ai-sdk/provider'; + +const name = 'AI_InvalidToolApprovalError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class InvalidToolApprovalError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly approvalId: string; + + constructor({ approvalId }: { approvalId: string }) { + super({ + name, + message: + `Tool approval response references unknown approvalId: "${approvalId}". ` + + `No matching tool-approval-request found in message history.`, + }); + + this.approvalId = approvalId; + } + + static isInstance(error: unknown): error is InvalidToolApprovalError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-tool-input-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-tool-input-error.ts new file mode 100644 index 000000000..4568d1b9f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/invalid-tool-input-error.ts @@ -0,0 +1,33 @@ +import { AISDKError, getErrorMessage } from '@ai-sdk/provider'; + +const name = 'AI_InvalidToolInputError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class InvalidToolInputError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly toolName: string; + readonly toolInput: string; + + constructor({ + toolInput, + toolName, + cause, + message = `Invalid input for tool ${toolName}: ${getErrorMessage(cause)}`, + }: { + message?: string; + toolInput: string; + toolName: string; + cause: unknown; + }) { + super({ name, message, cause }); + + this.toolInput = toolInput; + this.toolName = toolName; + } + + static isInstance(error: unknown): error is InvalidToolInputError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/missing-tool-result-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/missing-tool-result-error.ts new file mode 100644 index 000000000..0b5c6d971 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/missing-tool-result-error.ts @@ -0,0 +1,28 @@ +import { AISDKError } from '@ai-sdk/provider'; + +const name = 'AI_MissingToolResultsError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class MissingToolResultsError extends AISDKError { + private readonly [symbol] = true; + + readonly toolCallIds: string[]; + + constructor({ toolCallIds }: { toolCallIds: string[] }) { + super({ + name, + message: `Tool result${ + toolCallIds.length > 1 ? 's are' : ' is' + } missing for tool call${toolCallIds.length > 1 ? 's' : ''} ${toolCallIds.join( + ', ', + )}.`, + }); + + this.toolCallIds = toolCallIds; + } + + static isInstance(error: unknown): error is MissingToolResultsError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-image-generated-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-image-generated-error.ts new file mode 100644 index 000000000..3f5b020ee --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-image-generated-error.ts @@ -0,0 +1,39 @@ +import { AISDKError } from '@ai-sdk/provider'; +import { ImageModelResponseMetadata } from '../types/image-model-response-metadata'; + +const name = 'AI_NoImageGeneratedError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * Thrown when no image could be generated. This can have multiple causes: + * + * - The model failed to generate a response. + * - The model generated a response that could not be parsed. + */ +export class NoImageGeneratedError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + /** + * The response metadata for each call. + */ + readonly responses: Array | undefined; + + constructor({ + message = 'No image generated.', + cause, + responses, + }: { + message?: string; + cause?: Error; + responses?: Array; + }) { + super({ name, message, cause }); + + this.responses = responses; + } + + static isInstance(error: unknown): error is NoImageGeneratedError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-object-generated-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-object-generated-error.ts new file mode 100644 index 000000000..7da222e14 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-object-generated-error.ts @@ -0,0 +1,70 @@ +import { AISDKError } from '@ai-sdk/provider'; +import { FinishReason } from '../types/language-model'; +import { LanguageModelResponseMetadata } from '../types/language-model-response-metadata'; +import { LanguageModelUsage } from '../types/usage'; + +const name = 'AI_NoObjectGeneratedError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * Thrown when no object could be generated. This can have several causes: + * + * - The model failed to generate a response. + * - The model generated a response that could not be parsed. + * - The model generated a response that could not be validated against the schema. + * + * The error contains the following properties: + * + * - `text`: The text that was generated by the model. This can be the raw text or the tool call text, depending on the model. + */ +export class NoObjectGeneratedError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + /** + * The text that was generated by the model. This can be the raw text or the tool call text, depending on the model. + */ + readonly text: string | undefined; + + /** + * The response metadata. + */ + readonly response: LanguageModelResponseMetadata | undefined; + + /** + * The usage of the model. + */ + readonly usage: LanguageModelUsage | undefined; + + /** + * Reason why the model finished generating a response. + */ + readonly finishReason: FinishReason | undefined; + + constructor({ + message = 'No object generated.', + cause, + text, + response, + usage, + finishReason, + }: { + message?: string; + cause?: Error; + text?: string; + response: LanguageModelResponseMetadata; + usage: LanguageModelUsage; + finishReason: FinishReason; + }) { + super({ name, message, cause }); + + this.text = text; + this.response = response; + this.usage = usage; + this.finishReason = finishReason; + } + + static isInstance(error: unknown): error is NoObjectGeneratedError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-output-generated-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-output-generated-error.ts new file mode 100644 index 000000000..c2dc0e2e7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-output-generated-error.ts @@ -0,0 +1,26 @@ +import { AISDKError } from '@ai-sdk/provider'; + +const name = 'AI_NoOutputGeneratedError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * Thrown when no LLM output was generated, e.g. because of errors. + */ +export class NoOutputGeneratedError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + constructor({ + message = 'No output generated.', + cause, + }: { + message?: string; + cause?: Error; + } = {}) { + super({ name, message, cause }); + } + + static isInstance(error: unknown): error is NoOutputGeneratedError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-speech-generated-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-speech-generated-error.ts new file mode 100644 index 000000000..19ed2fe9c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-speech-generated-error.ts @@ -0,0 +1,28 @@ +import { AISDKError } from '@ai-sdk/provider'; +import { SpeechModelResponseMetadata } from '../types/speech-model-response-metadata'; + +const name = 'AI_NoSpeechGeneratedError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * Error that is thrown when no speech audio was generated. + */ +export class NoSpeechGeneratedError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly responses: Array; + + constructor(options: { responses: Array }) { + super({ + name, + message: 'No speech audio generated.', + }); + + this.responses = options.responses; + } + + static isInstance(error: unknown): error is NoSpeechGeneratedError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-such-tool-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-such-tool-error.ts new file mode 100644 index 000000000..b00770d36 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-such-tool-error.ts @@ -0,0 +1,35 @@ +import { AISDKError } from '@ai-sdk/provider'; + +const name = 'AI_NoSuchToolError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class NoSuchToolError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly toolName: string; + readonly availableTools: string[] | undefined; + + constructor({ + toolName, + availableTools = undefined, + message = `Model tried to call unavailable tool '${toolName}'. ${ + availableTools === undefined + ? 'No tools are available.' + : `Available tools: ${availableTools.join(', ')}.` + }`, + }: { + toolName: string; + availableTools?: string[] | undefined; + message?: string; + }) { + super({ name, message }); + + this.toolName = toolName; + this.availableTools = availableTools; + } + + static isInstance(error: unknown): error is NoSuchToolError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-transcript-generated-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-transcript-generated-error.ts new file mode 100644 index 000000000..9a69f9a65 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-transcript-generated-error.ts @@ -0,0 +1,30 @@ +import { AISDKError } from '@ai-sdk/provider'; +import { TranscriptionModelResponseMetadata } from '../types/transcription-model-response-metadata'; + +const name = 'AI_NoTranscriptGeneratedError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * Error that is thrown when no transcript was generated. + */ +export class NoTranscriptGeneratedError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly responses: Array; + + constructor(options: { + responses: Array; + }) { + super({ + name, + message: 'No transcript generated.', + }); + + this.responses = options.responses; + } + + static isInstance(error: unknown): error is NoTranscriptGeneratedError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-video-generated-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-video-generated-error.ts new file mode 100644 index 000000000..479d65656 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/no-video-generated-error.ts @@ -0,0 +1,57 @@ +import { AISDKError } from '@ai-sdk/provider'; +import { VideoModelResponseMetadata } from '../types/video-model-response-metadata'; + +const name = 'AI_NoVideoGeneratedError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class NoVideoGeneratedError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly responses: Array; + + constructor({ + message = 'No video generated.', + cause, + responses, + }: { + message?: string; + cause?: unknown; + responses: Array; + }) { + super({ name, message, cause }); + + this.responses = responses; + } + + static isInstance(error: unknown): error is NoVideoGeneratedError { + return AISDKError.hasMarker(error, marker); + } + + /** + * @deprecated use `isInstance` instead + */ + static isNoVideoGeneratedError( + error: unknown, + ): error is NoVideoGeneratedError { + return error instanceof Error && + error.name === name && + typeof (error as NoVideoGeneratedError).responses !== 'undefined' + ? true + : false; + } + + /** + * @deprecated Do not use this method. It will be removed in the next major version. + */ + toJSON() { + return { + name: this.name, + message: this.message, + stack: this.stack, + + cause: this.cause, + responses: this.responses, + }; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/tool-call-not-found-for-approval-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/tool-call-not-found-for-approval-error.ts new file mode 100644 index 000000000..90bb44402 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/tool-call-not-found-for-approval-error.ts @@ -0,0 +1,32 @@ +import { AISDKError } from '@ai-sdk/provider'; + +const name = 'AI_ToolCallNotFoundForApprovalError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class ToolCallNotFoundForApprovalError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly toolCallId: string; + readonly approvalId: string; + + constructor({ + toolCallId, + approvalId, + }: { + toolCallId: string; + approvalId: string; + }) { + super({ + name, + message: `Tool call "${toolCallId}" not found for approval request "${approvalId}".`, + }); + + this.toolCallId = toolCallId; + this.approvalId = approvalId; + } + + static isInstance(error: unknown): error is ToolCallNotFoundForApprovalError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/tool-call-repair-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/tool-call-repair-error.ts new file mode 100644 index 000000000..cf8c8c541 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/tool-call-repair-error.ts @@ -0,0 +1,30 @@ +import { AISDKError, getErrorMessage } from '@ai-sdk/provider'; +import { InvalidToolInputError } from './invalid-tool-input-error'; +import { NoSuchToolError } from './no-such-tool-error'; + +const name = 'AI_ToolCallRepairError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class ToolCallRepairError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly originalError: NoSuchToolError | InvalidToolInputError; + + constructor({ + cause, + originalError, + message = `Error repairing tool call: ${getErrorMessage(cause)}`, + }: { + message?: string; + cause: unknown; + originalError: NoSuchToolError | InvalidToolInputError; + }) { + super({ name, message, cause }); + this.originalError = originalError; + } + + static isInstance(error: unknown): error is ToolCallRepairError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/ui-message-stream-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/ui-message-stream-error.ts new file mode 100644 index 000000000..3792881e9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/ui-message-stream-error.ts @@ -0,0 +1,48 @@ +import { AISDKError } from '@ai-sdk/provider'; + +const name = 'AI_UIMessageStreamError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +/** + * Error thrown when a UI message stream contains invalid or out-of-sequence chunks. + * + * This typically occurs when: + * - A delta chunk is received without a corresponding start chunk + * - An end chunk is received without a corresponding start chunk + * - A tool invocation is not found for the given toolCallId + * + * @see https://ai-sdk.dev/docs/reference/ai-sdk-errors/ai-ui-message-stream-error + */ +export class UIMessageStreamError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + /** + * The type of chunk that caused the error (e.g., 'text-delta', 'reasoning-end'). + */ + readonly chunkType: string; + + /** + * The ID associated with the failing chunk (part ID or toolCallId). + */ + readonly chunkId: string; + + constructor({ + chunkType, + chunkId, + message, + }: { + chunkType: string; + chunkId: string; + message: string; + }) { + super({ name, message }); + + this.chunkType = chunkType; + this.chunkId = chunkId; + } + + static isInstance(error: unknown): error is UIMessageStreamError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/unsupported-model-version-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/unsupported-model-version-error.ts new file mode 100644 index 000000000..822dcbcc7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/unsupported-model-version-error.ts @@ -0,0 +1,23 @@ +import { AISDKError } from '@ai-sdk/provider'; + +/** + * Error that is thrown when a model with an unsupported version is used. + */ +export class UnsupportedModelVersionError extends AISDKError { + readonly version: string; + readonly provider: string; + readonly modelId: string; + + constructor(options: { version: string; provider: string; modelId: string }) { + super({ + name: 'AI_UnsupportedModelVersionError', + message: + `Unsupported model version ${options.version} for provider "${options.provider}" and model "${options.modelId}". ` + + `AI SDK 5 only supports models that implement specification version "v2".`, + }); + + this.version = options.version; + this.provider = options.provider; + this.modelId = options.modelId; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/verify-no-object-generated-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/verify-no-object-generated-error.ts new file mode 100644 index 000000000..9d092260a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/error/verify-no-object-generated-error.ts @@ -0,0 +1,27 @@ +import { expect } from 'vitest'; + +import { + FinishReason, + LanguageModelResponseMetadata, + LanguageModelUsage, +} from '../types'; +import { NoObjectGeneratedError } from './no-object-generated-error'; + +export function verifyNoObjectGeneratedError( + error: unknown, + expected: { + message: string; + response: LanguageModelResponseMetadata & { + body?: string; + }; + usage: LanguageModelUsage; + finishReason: FinishReason; + }, +) { + expect(NoObjectGeneratedError.isInstance(error)).toBeTruthy(); + const noObjectGeneratedError = error as NoObjectGeneratedError; + expect(noObjectGeneratedError.message).toEqual(expected.message); + expect(noObjectGeneratedError.response).toEqual(expected.response); + expect(noObjectGeneratedError.usage).toEqual(expected.usage); + expect(noObjectGeneratedError.finishReason).toEqual(expected.finishReason); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-image/generate-image-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-image/generate-image-result.ts new file mode 100644 index 000000000..818b6511e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-image/generate-image-result.ts @@ -0,0 +1,42 @@ +import { GeneratedFile } from '../generate-text'; +import { ImageModelProviderMetadata } from '../types/image-model'; +import { ImageModelResponseMetadata } from '../types/image-model-response-metadata'; +import { ImageModelUsage } from '../types/usage'; +import { Warning } from '../types/warning'; + +/** + * The result of a `generateImage` call. + * It contains the images and additional information. + */ +export interface GenerateImageResult { + /** + * The first image that was generated. + */ + readonly image: GeneratedFile; + + /** + * The images that were generated. + */ + readonly images: Array; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + readonly warnings: Array; + + /** + * Response metadata from the provider. There may be multiple responses if we made multiple calls to the model. + */ + readonly responses: Array; + + /** + * Provider-specific metadata. They are passed through from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + */ + readonly providerMetadata: ImageModelProviderMetadata; + + /** + * Combined token usage across all underlying provider calls for this image generation. + */ + readonly usage: ImageModelUsage; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-image/generate-image.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-image/generate-image.ts new file mode 100644 index 000000000..93aa4e7d8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-image/generate-image.ts @@ -0,0 +1,361 @@ +import { + ImageModelV3, + ImageModelV3CallOptions, + ImageModelV3File, + ImageModelV3ProviderMetadata, +} from '@ai-sdk/provider'; +import { + convertBase64ToUint8Array, + DataContent, + ProviderOptions, + withUserAgentSuffix, +} from '@ai-sdk/provider-utils'; +import { NoImageGeneratedError } from '../error/no-image-generated-error'; +import { + DefaultGeneratedFile, + GeneratedFile, +} from '../generate-text/generated-file'; +import { logWarnings } from '../logger/log-warnings'; +import { resolveImageModel } from '../model/resolve-model'; +import type { ImageModel } from '../types/image-model'; +import { ImageModelResponseMetadata } from '../types/image-model-response-metadata'; +import { addImageModelUsage, ImageModelUsage } from '../types/usage'; +import { Warning } from '../types/warning'; +import { + detectMediaType, + imageMediaTypeSignatures, +} from '../util/detect-media-type'; +import { prepareRetries } from '../util/prepare-retries'; +import { VERSION } from '../version'; +import { GenerateImageResult } from './generate-image-result'; +import { convertDataContentToUint8Array } from '../prompt/data-content'; +import { splitDataUrl } from '../prompt/split-data-url'; + +export type GenerateImagePrompt = + | string + | { + images: Array; + text?: string; + mask?: DataContent; + }; + +/** + * Generates images using an image model. + * + * @param model - The image model to use. + * @param prompt - The prompt that should be used to generate the image. + * @param n - Number of images to generate. Default: 1. + * @param maxImagesPerCall - Maximum number of images to generate in a single API call. + * @param size - Size of the images to generate. Must have the format `{width}x{height}`. + * @param aspectRatio - Aspect ratio of the images to generate. Must have the format `{width}:{height}`. + * @param seed - Seed for the image generation. + * @param providerOptions - Additional provider-specific options that are passed through to the provider + * as body parameters. + * @param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2. + * @param abortSignal - An optional abort signal that can be used to cancel the call. + * @param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers. + * + * @returns A result object that contains the generated images. + */ +export async function generateImage({ + model: modelArg, + prompt: promptArg, + n = 1, + maxImagesPerCall, + size, + aspectRatio, + seed, + providerOptions, + maxRetries: maxRetriesArg, + abortSignal, + headers, +}: { + /** + * The image model to use. + */ + model: ImageModel; + + /** + * The prompt that should be used to generate the image. + */ + prompt: GenerateImagePrompt; + + /** + * Number of images to generate. + */ + n?: number; + + /** + * Maximum number of images to generate in a single API call. If not provided, the model's default will be used. + */ + maxImagesPerCall?: number; + + /** + * Size of the images to generate. Must have the format `{width}x{height}`. If not provided, the default size will be used. + */ + size?: `${number}x${number}`; + + /** + * Aspect ratio of the images to generate. Must have the format `{width}:{height}`. If not provided, the default aspect ratio will be used. + */ + aspectRatio?: `${number}:${number}`; + + /** + * Seed for the image generation. If not provided, the default seed will be used. + */ + seed?: number; + + /** + * Additional provider-specific options that are passed through to the provider + * as body parameters. + * + * The outer record is keyed by the provider name, and the inner + * record is keyed by the provider-specific metadata key. + * ```ts + * { + * "openai": { + * "style": "vivid" + * } + * } + * ``` + */ + providerOptions?: ProviderOptions; + + /** + * Maximum number of retries per image model call. Set to 0 to disable retries. + * + * @default 2 + */ + maxRetries?: number; + + /** + * Abort signal. + */ + abortSignal?: AbortSignal; + + /** + * Additional headers to include in the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; +}): Promise { + const model = resolveImageModel(modelArg); + + const headersWithUserAgent = withUserAgentSuffix( + headers ?? {}, + `ai/${VERSION}`, + ); + + const { retry } = prepareRetries({ + maxRetries: maxRetriesArg, + abortSignal, + }); + + // default to 1 if the model has not specified limits on + // how many images can be generated in a single call + const maxImagesPerCallWithDefault = + maxImagesPerCall ?? (await invokeModelMaxImagesPerCall(model)) ?? 1; + + // parallelize calls to the model: + const callCount = Math.ceil(n / maxImagesPerCallWithDefault); + const callImageCounts = Array.from({ length: callCount }, (_, i) => { + if (i < callCount - 1) { + return maxImagesPerCallWithDefault; + } + + const remainder = n % maxImagesPerCallWithDefault; + return remainder === 0 ? maxImagesPerCallWithDefault : remainder; + }); + + const results = await Promise.all( + callImageCounts.map(async callImageCount => + retry(() => { + const { prompt, files, mask } = normalizePrompt(promptArg); + + return model.doGenerate({ + prompt, + files, + mask, + n: callImageCount, + abortSignal, + headers: headersWithUserAgent, + size, + aspectRatio, + seed, + providerOptions: providerOptions ?? {}, + }); + }), + ), + ); + + // collect result images, warnings, and response metadata + const images: Array = []; + const warnings: Array = []; + const responses: Array = []; + const providerMetadata: ImageModelV3ProviderMetadata = {}; + let totalUsage: ImageModelUsage = { + inputTokens: undefined, + outputTokens: undefined, + totalTokens: undefined, + }; + for (const result of results) { + images.push( + ...result.images.map( + image => + new DefaultGeneratedFile({ + data: image, + mediaType: + detectMediaType({ + data: image, + signatures: imageMediaTypeSignatures, + }) ?? 'image/png', + }), + ), + ); + warnings.push(...result.warnings); + + if (result.usage != null) { + totalUsage = addImageModelUsage(totalUsage, result.usage); + } + + if (result.providerMetadata) { + for (const [providerName, metadata] of Object.entries<{ + images: unknown; + }>(result.providerMetadata)) { + if (providerName === 'gateway') { + const currentEntry = providerMetadata[providerName]; + if (currentEntry != null && typeof currentEntry === 'object') { + providerMetadata[providerName] = { + ...(currentEntry as object), + ...metadata, + } as ImageModelV3ProviderMetadata[string]; + } else { + providerMetadata[providerName] = + metadata as ImageModelV3ProviderMetadata[string]; + } + const imagesValue = ( + providerMetadata[providerName] as { images?: unknown } + ).images; + if (Array.isArray(imagesValue) && imagesValue.length === 0) { + delete (providerMetadata[providerName] as { images?: unknown }) + .images; + } + } else { + providerMetadata[providerName] ??= { images: [] }; + providerMetadata[providerName].images.push( + ...result.providerMetadata[providerName].images, + ); + } + } + } + + responses.push(result.response); + } + + logWarnings({ warnings, provider: model.provider, model: model.modelId }); + + if (!images.length) { + throw new NoImageGeneratedError({ responses }); + } + + return new DefaultGenerateImageResult({ + images, + warnings, + responses, + providerMetadata, + usage: totalUsage, + }); +} + +class DefaultGenerateImageResult implements GenerateImageResult { + readonly images: Array; + readonly warnings: Array; + readonly responses: Array; + readonly providerMetadata: ImageModelV3ProviderMetadata; + readonly usage: ImageModelUsage; + + constructor(options: { + images: Array; + warnings: Array; + responses: Array; + providerMetadata: ImageModelV3ProviderMetadata; + usage: ImageModelUsage; + }) { + this.images = options.images; + this.warnings = options.warnings; + this.responses = options.responses; + this.providerMetadata = options.providerMetadata; + this.usage = options.usage; + } + + get image() { + return this.images[0]; + } +} + +async function invokeModelMaxImagesPerCall(model: ImageModelV3) { + const isFunction = model.maxImagesPerCall instanceof Function; + + if (!isFunction) { + return model.maxImagesPerCall; + } + + return model.maxImagesPerCall({ + modelId: model.modelId, + }); +} + +function normalizePrompt( + prompt: GenerateImagePrompt, +): Pick { + if (typeof prompt === 'string') { + return { prompt, files: undefined, mask: undefined }; + } + + return { + prompt: prompt.text, + files: prompt.images.map(toImageModelV3File), + mask: prompt.mask ? toImageModelV3File(prompt.mask) : undefined, + }; +} + +function toImageModelV3File(dataContent: DataContent): ImageModelV3File { + if (typeof dataContent === 'string' && dataContent.startsWith('http')) { + return { + type: 'url', + url: dataContent, + }; + } + + // Handle data URLs + if (typeof dataContent === 'string' && dataContent.startsWith('data:')) { + const { mediaType: dataUrlMediaType, base64Content } = + splitDataUrl(dataContent); + + if (base64Content != null) { + const uint8Data = convertBase64ToUint8Array(base64Content); + return { + type: 'file', + data: uint8Data, + mediaType: + dataUrlMediaType || + detectMediaType({ + data: uint8Data, + signatures: imageMediaTypeSignatures, + }) || + 'image/png', + }; + } + } + + const uint8Data = convertDataContentToUint8Array(dataContent); + return { + type: 'file', + data: uint8Data, + mediaType: + detectMediaType({ + data: uint8Data, + signatures: imageMediaTypeSignatures, + }) || 'image/png', + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-image/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-image/index.ts new file mode 100644 index 000000000..d886b66b3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-image/index.ts @@ -0,0 +1,18 @@ +export { generateImage } from './generate-image'; +export type { GenerateImageResult } from './generate-image-result'; + +// deprecated exports + +import { generateImage } from './generate-image'; +/** + * @deprecated Use `generateImage` instead. + */ +const experimental_generateImage = generateImage; +export { experimental_generateImage }; + +import type { GenerateImageResult } from './generate-image-result'; +/** + * @deprecated Use `GenerateImageResult` instead. + */ +type Experimental_GenerateImageResult = GenerateImageResult; +export type { Experimental_GenerateImageResult }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/generate-object-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/generate-object-result.ts new file mode 100644 index 000000000..7620de2f2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/generate-object-result.ts @@ -0,0 +1,67 @@ +import { + CallWarning, + FinishReason, + LanguageModelRequestMetadata, + LanguageModelResponseMetadata, + ProviderMetadata, +} from '../types'; +import { LanguageModelUsage } from '../types/usage'; + +/** + * The result of a `generateObject` call. + */ +export interface GenerateObjectResult { + /** + * The generated object (typed according to the schema). + */ + readonly object: OBJECT; + + /** + * The reasoning that was used to generate the object. + * Concatenated from all reasoning parts. + */ + readonly reasoning: string | undefined; + + /** + * The reason why the generation finished. + */ + readonly finishReason: FinishReason; + + /** + * The token usage of the generated response. + */ + readonly usage: LanguageModelUsage; + + /** + * Warnings from the model provider (e.g. unsupported settings). + */ + readonly warnings: CallWarning[] | undefined; + + /** + * Additional request information. + */ + readonly request: LanguageModelRequestMetadata; + + /** + * Additional response information. + */ + readonly response: LanguageModelResponseMetadata & { + /** + * Response body (available only for providers that use HTTP requests). + */ + body?: unknown; + }; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + */ + readonly providerMetadata: ProviderMetadata | undefined; + + /** + * Converts the object to a JSON response. + * The response will have a status code of 200 and a content type of `application/json; charset=utf-8`. + */ + toJsonResponse(init?: ResponseInit): Response; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/generate-object.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/generate-object.ts new file mode 100644 index 000000000..4f4fe846e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/generate-object.ts @@ -0,0 +1,514 @@ +import { JSONValue } from '@ai-sdk/provider'; +import { + createIdGenerator, + FlexibleSchema, + InferSchema, + ProviderOptions, + withUserAgentSuffix, +} from '@ai-sdk/provider-utils'; +import { NoObjectGeneratedError } from '../error/no-object-generated-error'; +import { extractReasoningContent } from '../generate-text/extract-reasoning-content'; +import { extractTextContent } from '../generate-text/extract-text-content'; +import { logWarnings } from '../logger/log-warnings'; +import { resolveLanguageModel } from '../model/resolve-model'; +import { CallSettings } from '../prompt/call-settings'; +import { convertToLanguageModelPrompt } from '../prompt/convert-to-language-model-prompt'; +import { prepareCallSettings } from '../prompt/prepare-call-settings'; +import { Prompt } from '../prompt/prompt'; +import { standardizePrompt } from '../prompt/standardize-prompt'; +import { wrapGatewayError } from '../prompt/wrap-gateway-error'; +import { assembleOperationName } from '../telemetry/assemble-operation-name'; +import { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes'; +import { getTracer } from '../telemetry/get-tracer'; +import { recordSpan } from '../telemetry/record-span'; +import { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes'; +import { stringifyForTelemetry } from '../telemetry/stringify-for-telemetry'; +import { TelemetrySettings } from '../telemetry/telemetry-settings'; +import { + CallWarning, + FinishReason, + LanguageModel, +} from '../types/language-model'; +import { LanguageModelRequestMetadata } from '../types/language-model-request-metadata'; +import { LanguageModelResponseMetadata } from '../types/language-model-response-metadata'; +import { ProviderMetadata } from '../types/provider-metadata'; +import { asLanguageModelUsage, LanguageModelUsage } from '../types/usage'; +import { DownloadFunction } from '../util/download/download-function'; +import { prepareHeaders } from '../util/prepare-headers'; +import { prepareRetries } from '../util/prepare-retries'; +import { VERSION } from '../version'; +import { GenerateObjectResult } from './generate-object-result'; +import { getOutputStrategy } from './output-strategy'; +import { parseAndValidateObjectResultWithRepair } from './parse-and-validate-object-result'; +import { RepairTextFunction } from './repair-text'; +import { validateObjectGenerationInput } from './validate-object-generation-input'; + +const originalGenerateId = createIdGenerator({ prefix: 'aiobj', size: 24 }); + +/** + * Generate a structured, typed object for a given prompt and schema using a language model. + * + * This function does not stream the output. If you want to stream the output, use `streamObject` instead. + * + * @param model - The language model to use. + * + * @param system - A system message that will be part of the prompt. + * @param prompt - A simple text prompt. You can either use `prompt` or `messages` but not both. + * @param messages - A list of messages. You can either use `prompt` or `messages` but not both. + * + * @param maxOutputTokens - Maximum number of tokens to generate. + * @param temperature - Temperature setting. + * The value is passed through to the provider. The range depends on the provider and model. + * It is recommended to set either `temperature` or `topP`, but not both. + * @param topP - Nucleus sampling. + * The value is passed through to the provider. The range depends on the provider and model. + * It is recommended to set either `temperature` or `topP`, but not both. + * @param topK - Only sample from the top K options for each subsequent token. + * Used to remove "long tail" low probability responses. + * Recommended for advanced use cases only. You usually only need to use temperature. + * @param presencePenalty - Presence penalty setting. + * It affects the likelihood of the model to repeat information that is already in the prompt. + * The value is passed through to the provider. The range depends on the provider and model. + * @param frequencyPenalty - Frequency penalty setting. + * It affects the likelihood of the model to repeatedly use the same words or phrases. + * The value is passed through to the provider. The range depends on the provider and model. + * @param stopSequences - Stop sequences. + * If set, the model will stop generating text when one of the stop sequences is generated. + * @param seed - The seed (integer) to use for random sampling. + * If set and supported by the model, calls will generate deterministic results. + * + * @param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2. + * @param abortSignal - An optional abort signal that can be used to cancel the call. + * @param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers. + * + * @param schema - The schema of the object that the model should generate. + * @param schemaName - Optional name of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. + * via tool or schema name. + * @param schemaDescription - Optional description of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. + * via tool or schema description. + * + * @param output - The type of the output. + * + * - 'object': The output is an object. + * - 'array': The output is an array. + * - 'enum': The output is an enum. + * - 'no-schema': The output is not a schema. + * + * @param experimental_repairText - A function that attempts to repair the raw output of the model + * to enable JSON parsing. + * + * @param experimental_telemetry - Optional telemetry configuration (experimental). + * + * @param providerOptions - Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + * + * @returns + * A result object that contains the generated object, the finish reason, the token usage, and additional information. + * + * @deprecated Use `generateText` with an `output` setting instead. + */ +export async function generateObject< + SCHEMA extends FlexibleSchema = FlexibleSchema, + OUTPUT extends 'object' | 'array' | 'enum' | 'no-schema' = + InferSchema extends string ? 'enum' : 'object', + RESULT = OUTPUT extends 'array' + ? Array> + : InferSchema, +>( + options: Omit & + Prompt & + (OUTPUT extends 'enum' + ? { + /** + * The enum values that the model should use. + */ + enum: Array; + output: 'enum'; + } + : OUTPUT extends 'no-schema' + ? {} + : { + /** + * The schema of the object that the model should generate. + */ + schema: SCHEMA; + + /** + * Optional name of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. + * via tool or schema name. + */ + schemaName?: string; + + /** + * Optional description of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. + * via tool or schema description. + */ + schemaDescription?: string; + }) & { + output?: OUTPUT; + + /** + * The language model to use. + */ + model: LanguageModel; + /** + * A function that attempts to repair the raw output of the model + * to enable JSON parsing. + */ + experimental_repairText?: RepairTextFunction; + + /** + * Optional telemetry configuration (experimental). + */ + + experimental_telemetry?: TelemetrySettings; + + /** + * Custom download function to use for URLs. + * + * By default, files are downloaded if the model does not support the URL for the given media type. + */ + experimental_download?: DownloadFunction | undefined; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; + + /** + * Internal. For test use only. May change without notice. + */ + _internal?: { + generateId?: () => string; + currentDate?: () => Date; + }; + }, +): Promise> { + const { + model: modelArg, + output = 'object', + system, + prompt, + messages, + maxRetries: maxRetriesArg, + abortSignal, + headers, + experimental_repairText: repairText, + experimental_telemetry: telemetry, + experimental_download: download, + providerOptions, + _internal: { + generateId = originalGenerateId, + currentDate = () => new Date(), + } = {}, + ...settings + } = options; + + const model = resolveLanguageModel(modelArg); + + const enumValues = 'enum' in options ? options.enum : undefined; + const { + schema: inputSchema, + schemaDescription, + schemaName, + } = 'schema' in options ? options : {}; + + validateObjectGenerationInput({ + output, + schema: inputSchema, + schemaName, + schemaDescription, + enumValues, + }); + + const { maxRetries, retry } = prepareRetries({ + maxRetries: maxRetriesArg, + abortSignal, + }); + + const outputStrategy = getOutputStrategy({ + output, + schema: inputSchema, + enumValues, + }); + + const callSettings = prepareCallSettings(settings); + + const headersWithUserAgent = withUserAgentSuffix( + headers ?? {}, + `ai/${VERSION}`, + ); + + const baseTelemetryAttributes = getBaseTelemetryAttributes({ + model, + telemetry, + headers: headersWithUserAgent, + settings: { ...callSettings, maxRetries }, + }); + + const tracer = getTracer(telemetry); + const jsonSchema = await outputStrategy.jsonSchema(); + + try { + return await recordSpan({ + name: 'ai.generateObject', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ + operationId: 'ai.generateObject', + telemetry, + }), + ...baseTelemetryAttributes, + // specific settings that only make sense on the outer level: + 'ai.prompt': { + input: () => JSON.stringify({ system, prompt, messages }), + }, + 'ai.schema': + jsonSchema != null + ? { input: () => JSON.stringify(jsonSchema) } + : undefined, + 'ai.schema.name': schemaName, + 'ai.schema.description': schemaDescription, + 'ai.settings.output': outputStrategy.type, + }, + }), + tracer, + fn: async span => { + let result: string; + let finishReason: FinishReason; + let usage: LanguageModelUsage; + let warnings: CallWarning[] | undefined; + let response: LanguageModelResponseMetadata; + let request: LanguageModelRequestMetadata; + let resultProviderMetadata: ProviderMetadata | undefined; + let reasoning: string | undefined; + + const standardizedPrompt = await standardizePrompt({ + system, + prompt, + messages, + } as Prompt); + + const promptMessages = await convertToLanguageModelPrompt({ + prompt: standardizedPrompt, + supportedUrls: await model.supportedUrls, + download, + }); + + const generateResult = await retry(() => + recordSpan({ + name: 'ai.generateObject.doGenerate', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ + operationId: 'ai.generateObject.doGenerate', + telemetry, + }), + ...baseTelemetryAttributes, + 'ai.prompt.messages': { + input: () => stringifyForTelemetry(promptMessages), + }, + + // standardized gen-ai llm span attributes: + 'gen_ai.system': model.provider, + 'gen_ai.request.model': model.modelId, + 'gen_ai.request.frequency_penalty': + callSettings.frequencyPenalty, + 'gen_ai.request.max_tokens': callSettings.maxOutputTokens, + 'gen_ai.request.presence_penalty': callSettings.presencePenalty, + 'gen_ai.request.temperature': callSettings.temperature, + 'gen_ai.request.top_k': callSettings.topK, + 'gen_ai.request.top_p': callSettings.topP, + }, + }), + tracer, + fn: async span => { + const result = await model.doGenerate({ + responseFormat: { + type: 'json', + schema: jsonSchema, + name: schemaName, + description: schemaDescription, + }, + ...prepareCallSettings(settings), + prompt: promptMessages, + providerOptions, + abortSignal, + headers: headersWithUserAgent, + }); + + const responseData = { + id: result.response?.id ?? generateId(), + timestamp: result.response?.timestamp ?? currentDate(), + modelId: result.response?.modelId ?? model.modelId, + headers: result.response?.headers, + body: result.response?.body, + }; + + const text = extractTextContent(result.content); + const reasoning = extractReasoningContent(result.content); + + if (text === undefined) { + throw new NoObjectGeneratedError({ + message: + 'No object generated: the model did not return a response.', + response: responseData, + usage: asLanguageModelUsage(result.usage), + finishReason: result.finishReason.unified, + }); + } + + // Add response information to the span: + span.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.response.finishReason': result.finishReason.unified, + 'ai.response.object': { output: () => text }, + 'ai.response.id': responseData.id, + 'ai.response.model': responseData.modelId, + 'ai.response.timestamp': + responseData.timestamp.toISOString(), + 'ai.response.providerMetadata': JSON.stringify( + result.providerMetadata, + ), + + // TODO rename telemetry attributes to inputTokens and outputTokens + 'ai.usage.promptTokens': result.usage.inputTokens.total, + 'ai.usage.completionTokens': + result.usage.outputTokens.total, + + // standardized gen-ai llm span attributes: + 'gen_ai.response.finish_reasons': [ + result.finishReason.unified, + ], + 'gen_ai.response.id': responseData.id, + 'gen_ai.response.model': responseData.modelId, + 'gen_ai.usage.input_tokens': result.usage.inputTokens.total, + 'gen_ai.usage.output_tokens': + result.usage.outputTokens.total, + }, + }), + ); + + return { + ...result, + objectText: text, + reasoning, + responseData, + }; + }, + }), + ); + + result = generateResult.objectText; + finishReason = generateResult.finishReason.unified; + usage = asLanguageModelUsage(generateResult.usage); + warnings = generateResult.warnings; + resultProviderMetadata = generateResult.providerMetadata; + request = generateResult.request ?? {}; + response = generateResult.responseData; + reasoning = generateResult.reasoning; + + logWarnings({ + warnings, + provider: model.provider, + model: model.modelId, + }); + + const object = await parseAndValidateObjectResultWithRepair( + result, + outputStrategy, + repairText, + { + response, + usage, + finishReason, + }, + ); + + // Add response information to the span: + span.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.response.finishReason': finishReason, + 'ai.response.object': { + output: () => JSON.stringify(object), + }, + 'ai.response.providerMetadata': JSON.stringify( + resultProviderMetadata, + ), + + // TODO rename telemetry attributes to inputTokens and outputTokens + 'ai.usage.promptTokens': usage.inputTokens, + 'ai.usage.completionTokens': usage.outputTokens, + }, + }), + ); + + return new DefaultGenerateObjectResult({ + object, + reasoning, + finishReason, + usage, + warnings, + request, + response, + providerMetadata: resultProviderMetadata, + }); + }, + }); + } catch (error) { + throw wrapGatewayError(error); + } +} + +class DefaultGenerateObjectResult implements GenerateObjectResult { + readonly object: GenerateObjectResult['object']; + readonly finishReason: GenerateObjectResult['finishReason']; + readonly usage: GenerateObjectResult['usage']; + readonly warnings: GenerateObjectResult['warnings']; + readonly providerMetadata: GenerateObjectResult['providerMetadata']; + readonly response: GenerateObjectResult['response']; + readonly request: GenerateObjectResult['request']; + readonly reasoning: GenerateObjectResult['reasoning']; + + constructor(options: { + object: GenerateObjectResult['object']; + finishReason: GenerateObjectResult['finishReason']; + usage: GenerateObjectResult['usage']; + warnings: GenerateObjectResult['warnings']; + providerMetadata: GenerateObjectResult['providerMetadata']; + response: GenerateObjectResult['response']; + request: GenerateObjectResult['request']; + reasoning: GenerateObjectResult['reasoning']; + }) { + this.object = options.object; + this.finishReason = options.finishReason; + this.usage = options.usage; + this.warnings = options.warnings; + this.providerMetadata = options.providerMetadata; + this.response = options.response; + this.request = options.request; + this.reasoning = options.reasoning; + } + + toJsonResponse(init?: ResponseInit): Response { + return new Response(JSON.stringify(this.object), { + status: init?.status ?? 200, + headers: prepareHeaders(init?.headers, { + 'content-type': 'application/json; charset=utf-8', + }), + }); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/index.ts new file mode 100644 index 000000000..b25bd8084 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/index.ts @@ -0,0 +1,9 @@ +export { generateObject } from './generate-object'; +export type { RepairTextFunction } from './repair-text'; +export type { GenerateObjectResult } from './generate-object-result'; +export { streamObject } from './stream-object'; +export type { StreamObjectOnFinishCallback } from './stream-object'; +export type { + ObjectStreamPart, + StreamObjectResult, +} from './stream-object-result'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/inject-json-instruction.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/inject-json-instruction.ts new file mode 100644 index 000000000..4ac470a03 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/inject-json-instruction.ts @@ -0,0 +1,30 @@ +import { JSONSchema7 } from '@ai-sdk/provider'; + +const DEFAULT_SCHEMA_PREFIX = 'JSON schema:'; +const DEFAULT_SCHEMA_SUFFIX = + 'You MUST answer with a JSON object that matches the JSON schema above.'; +const DEFAULT_GENERIC_SUFFIX = 'You MUST answer with JSON.'; + +export function injectJsonInstruction({ + prompt, + schema, + schemaPrefix = schema != null ? DEFAULT_SCHEMA_PREFIX : undefined, + schemaSuffix = schema != null + ? DEFAULT_SCHEMA_SUFFIX + : DEFAULT_GENERIC_SUFFIX, +}: { + prompt?: string; + schema?: JSONSchema7; + schemaPrefix?: string; + schemaSuffix?: string; +}): string { + return [ + prompt != null && prompt.length > 0 ? prompt : undefined, + prompt != null && prompt.length > 0 ? '' : undefined, // add a newline if prompt is not null + schemaPrefix, + schema != null ? JSON.stringify(schema) : undefined, + schemaSuffix, + ] + .filter(line => line != null) + .join('\n'); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/output-strategy.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/output-strategy.ts new file mode 100644 index 000000000..ec26a94a0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/output-strategy.ts @@ -0,0 +1,415 @@ +import { + isJSONArray, + isJSONObject, + JSONObject, + JSONSchema7, + JSONValue, + TypeValidationError, + UnsupportedFunctionalityError, +} from '@ai-sdk/provider'; +import { + asSchema, + FlexibleSchema, + safeValidateTypes, + Schema, + ValidationResult, +} from '@ai-sdk/provider-utils'; +import { NoObjectGeneratedError } from '../error/no-object-generated-error'; +import { + FinishReason, + LanguageModelResponseMetadata, + LanguageModelUsage, +} from '../types'; +import { + AsyncIterableStream, + createAsyncIterableStream, +} from '../util/async-iterable-stream'; +import { DeepPartial } from '../util/deep-partial'; +import { ObjectStreamPart } from './stream-object-result'; + +export interface OutputStrategy { + readonly type: 'object' | 'array' | 'enum' | 'no-schema'; + + jsonSchema(): Promise; + + validatePartialResult({ + value, + textDelta, + isFinalDelta, + }: { + value: JSONValue; + textDelta: string; + isFirstDelta: boolean; + isFinalDelta: boolean; + latestObject: PARTIAL | undefined; + }): Promise< + ValidationResult<{ + partial: PARTIAL; + textDelta: string; + }> + >; + validateFinalResult( + value: JSONValue | undefined, + context: { + text: string; + response: LanguageModelResponseMetadata; + usage: LanguageModelUsage; + }, + ): Promise>; + + createElementStream( + originalStream: ReadableStream>, + ): ELEMENT_STREAM; +} + +const noSchemaOutputStrategy: OutputStrategy = { + type: 'no-schema', + jsonSchema: async () => undefined, + + async validatePartialResult({ value, textDelta }) { + return { success: true, value: { partial: value, textDelta } }; + }, + + async validateFinalResult( + value: JSONValue | undefined, + context: { + text: string; + response: LanguageModelResponseMetadata; + usage: LanguageModelUsage; + finishReason: FinishReason; + }, + ): Promise> { + return value === undefined + ? { + success: false, + error: new NoObjectGeneratedError({ + message: 'No object generated: response did not match schema.', + text: context.text, + response: context.response, + usage: context.usage, + finishReason: context.finishReason, + }), + } + : { success: true, value }; + }, + + createElementStream() { + throw new UnsupportedFunctionalityError({ + functionality: 'element streams in no-schema mode', + }); + }, +}; + +const objectOutputStrategy = ( + schema: Schema, +): OutputStrategy, OBJECT, never> => ({ + type: 'object', + jsonSchema: async () => await schema.jsonSchema, + + async validatePartialResult({ value, textDelta }) { + return { + success: true, + value: { + // Note: currently no validation of partial results: + partial: value as DeepPartial, + textDelta, + }, + }; + }, + + async validateFinalResult( + value: JSONValue | undefined, + ): Promise> { + return safeValidateTypes({ value, schema }); + }, + + createElementStream() { + throw new UnsupportedFunctionalityError({ + functionality: 'element streams in object mode', + }); + }, +}); + +const arrayOutputStrategy = ( + schema: Schema, +): OutputStrategy> => { + return { + type: 'array', + + // wrap in object that contains array of elements, since most LLMs will not + // be able to generate an array directly: + // possible future optimization: use arrays directly when model supports grammar-guided generation + jsonSchema: async () => { + // remove $schema from schema.jsonSchema: + const { $schema, ...itemSchema } = await schema.jsonSchema; + + return { + $schema: 'http://json-schema.org/draft-07/schema#', + type: 'object', + properties: { + elements: { type: 'array', items: itemSchema }, + }, + required: ['elements'], + additionalProperties: false, + }; + }, + + async validatePartialResult({ + value, + latestObject, + isFirstDelta, + isFinalDelta, + }) { + // check that the value is an object that contains an array of elements: + if (!isJSONObject(value) || !isJSONArray(value.elements)) { + return { + success: false, + error: new TypeValidationError({ + value, + cause: 'value must be an object that contains an array of elements', + }), + }; + } + + const inputArray = value.elements as Array; + const resultArray: Array = []; + + for (let i = 0; i < inputArray.length; i++) { + const element = inputArray[i]; + const result = await safeValidateTypes({ value: element, schema }); + + // special treatment for last processed element: + // ignore parse or validation failures, since they indicate that the + // last element is incomplete and should not be included in the result, + // unless it is the final delta + if (i === inputArray.length - 1 && !isFinalDelta) { + continue; + } + + if (!result.success) { + return result; + } + + resultArray.push(result.value); + } + + // calculate delta: + const publishedElementCount = latestObject?.length ?? 0; + + let textDelta = ''; + + if (isFirstDelta) { + textDelta += '['; + } + + if (publishedElementCount > 0) { + textDelta += ','; + } + + textDelta += resultArray + .slice(publishedElementCount) // only new elements + .map(element => JSON.stringify(element)) + .join(','); + + if (isFinalDelta) { + textDelta += ']'; + } + + return { + success: true, + value: { + partial: resultArray, + textDelta, + }, + }; + }, + + async validateFinalResult( + value: JSONValue | undefined, + ): Promise>> { + // check that the value is an object that contains an array of elements: + if (!isJSONObject(value) || !isJSONArray(value.elements)) { + return { + success: false, + error: new TypeValidationError({ + value, + cause: 'value must be an object that contains an array of elements', + }), + }; + } + + const inputArray = value.elements as Array; + + // check that each element in the array is of the correct type: + for (const element of inputArray) { + const result = await safeValidateTypes({ value: element, schema }); + if (!result.success) { + return result; + } + } + + return { success: true, value: inputArray as Array }; + }, + + createElementStream( + originalStream: ReadableStream>, + ) { + let publishedElements = 0; + + return createAsyncIterableStream( + originalStream.pipeThrough( + new TransformStream, ELEMENT>({ + transform(chunk, controller) { + switch (chunk.type) { + case 'object': { + const array = chunk.object; + + // publish new elements one by one: + for ( + ; + publishedElements < array.length; + publishedElements++ + ) { + controller.enqueue(array[publishedElements]); + } + + break; + } + + case 'text-delta': + case 'finish': + case 'error': // suppress error (use onError instead) + break; + + default: { + const _exhaustiveCheck: never = chunk; + throw new Error( + `Unsupported chunk type: ${_exhaustiveCheck}`, + ); + } + } + }, + }), + ), + ); + }, + }; +}; + +const enumOutputStrategy = ( + enumValues: Array, +): OutputStrategy => { + return { + type: 'enum', + + // wrap in object that contains result, since most LLMs will not + // be able to generate an enum value directly: + // possible future optimization: use enums directly when model supports top-level enums + jsonSchema: async () => ({ + $schema: 'http://json-schema.org/draft-07/schema#', + type: 'object', + properties: { + result: { type: 'string', enum: enumValues }, + }, + required: ['result'], + additionalProperties: false, + }), + + async validateFinalResult( + value: JSONValue | undefined, + ): Promise> { + // check that the value is an object that contains an array of elements: + if (!isJSONObject(value) || typeof value.result !== 'string') { + return { + success: false, + error: new TypeValidationError({ + value, + cause: + 'value must be an object that contains a string in the "result" property.', + }), + }; + } + + const result = value.result as string; + + return enumValues.includes(result as ENUM) + ? { success: true, value: result as ENUM } + : { + success: false, + error: new TypeValidationError({ + value, + cause: 'value must be a string in the enum', + }), + }; + }, + + async validatePartialResult({ value, textDelta }) { + if (!isJSONObject(value) || typeof value.result !== 'string') { + return { + success: false, + error: new TypeValidationError({ + value, + cause: + 'value must be an object that contains a string in the "result" property.', + }), + }; + } + + const result = value.result as string; + const possibleEnumValues = enumValues.filter(enumValue => + enumValue.startsWith(result), + ); + + if (value.result.length === 0 || possibleEnumValues.length === 0) { + return { + success: false, + error: new TypeValidationError({ + value, + cause: 'value must be a string in the enum', + }), + }; + } + + return { + success: true, + value: { + partial: + possibleEnumValues.length > 1 ? result : possibleEnumValues[0], + textDelta, + }, + }; + }, + + createElementStream() { + // no streaming in enum mode + throw new UnsupportedFunctionalityError({ + functionality: 'element streams in enum mode', + }); + }, + }; +}; + +export function getOutputStrategy({ + output, + schema, + enumValues, +}: { + output: 'object' | 'array' | 'enum' | 'no-schema'; + schema?: FlexibleSchema; + enumValues?: Array; +}): OutputStrategy { + switch (output) { + case 'object': + return objectOutputStrategy(asSchema(schema!)); + case 'array': + return arrayOutputStrategy(asSchema(schema!)); + case 'enum': + return enumOutputStrategy(enumValues! as Array); + case 'no-schema': + return noSchemaOutputStrategy; + default: { + const _exhaustiveCheck: never = output; + throw new Error(`Unsupported output: ${_exhaustiveCheck}`); + } + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/parse-and-validate-object-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/parse-and-validate-object-result.ts new file mode 100644 index 000000000..436026b95 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/parse-and-validate-object-result.ts @@ -0,0 +1,111 @@ +import { JSONParseError, TypeValidationError } from '@ai-sdk/provider'; +import { safeParseJSON } from '@ai-sdk/provider-utils'; +import { NoObjectGeneratedError } from '../error/no-object-generated-error'; +import type { + FinishReason, + LanguageModelResponseMetadata, + LanguageModelUsage, +} from '../types'; +import type { OutputStrategy } from './output-strategy'; +import { RepairTextFunction } from './repair-text'; + +/** + * Parses and validates a result string by parsing it as JSON and validating against the output strategy. + * + * @param result - The result string to parse and validate + * @param outputStrategy - The output strategy containing validation logic + * @param context - Additional context for error reporting + * @returns The validated result + * @throws NoObjectGeneratedError if parsing or validation fails + */ +async function parseAndValidateObjectResult( + result: string, + outputStrategy: OutputStrategy, + context: { + response: LanguageModelResponseMetadata; + usage: LanguageModelUsage; + finishReason: FinishReason; + }, +): Promise { + const parseResult = await safeParseJSON({ text: result }); + + if (!parseResult.success) { + throw new NoObjectGeneratedError({ + message: 'No object generated: could not parse the response.', + cause: parseResult.error, + text: result, + response: context.response, + usage: context.usage, + finishReason: context.finishReason, + }); + } + + const validationResult = await outputStrategy.validateFinalResult( + parseResult.value, + { + text: result, + response: context.response, + usage: context.usage, + }, + ); + + if (!validationResult.success) { + throw new NoObjectGeneratedError({ + message: 'No object generated: response did not match schema.', + cause: validationResult.error, + text: result, + response: context.response, + usage: context.usage, + finishReason: context.finishReason, + }); + } + + return validationResult.value; +} + +/** + * Parses and validates a result string by parsing it as JSON and validating against the output strategy. + * If the result cannot be parsed, it attempts to repair the result using the repairText function. + * + * @param result - The result string to parse and validate + * @param outputStrategy - The output strategy containing validation logic + * @param repairText - A function that attempts to repair the result string + * @param context - Additional context for error reporting + * @returns The validated result + * @throws NoObjectGeneratedError if parsing or validation fails + */ +export async function parseAndValidateObjectResultWithRepair( + result: string, + outputStrategy: OutputStrategy, + repairText: RepairTextFunction | undefined, + context: { + response: LanguageModelResponseMetadata; + usage: LanguageModelUsage; + finishReason: FinishReason; + }, +): Promise { + try { + return await parseAndValidateObjectResult(result, outputStrategy, context); + } catch (error) { + if ( + repairText != null && + NoObjectGeneratedError.isInstance(error) && + (JSONParseError.isInstance(error.cause) || + TypeValidationError.isInstance(error.cause)) + ) { + const repairedText = await repairText({ + text: result, + error: error.cause, + }); + if (repairedText === null) { + throw error; + } + return await parseAndValidateObjectResult( + repairedText, + outputStrategy, + context, + ); + } + throw error; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/repair-text.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/repair-text.ts new file mode 100644 index 000000000..89186fd2a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/repair-text.ts @@ -0,0 +1,12 @@ +import { JSONParseError, TypeValidationError } from '@ai-sdk/provider'; + +/** + * A function that attempts to repair the raw output of the model + * to enable JSON parsing. + * + * Should return the repaired text or null if the text cannot be repaired. + */ +export type RepairTextFunction = (options: { + text: string; + error: JSONParseError | TypeValidationError; +}) => Promise; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/stream-object-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/stream-object-result.ts new file mode 100644 index 000000000..cf2fd29ec --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/stream-object-result.ts @@ -0,0 +1,120 @@ +import { ServerResponse } from 'http'; +import { AsyncIterableStream } from '../util/async-iterable-stream'; +import { + CallWarning, + FinishReason, + LanguageModelRequestMetadata, + LanguageModelResponseMetadata, + ProviderMetadata, +} from '../types'; +import { LanguageModelUsage } from '../types/usage'; + +/** + * The result of a `streamObject` call that contains the partial object stream and additional information. + */ +export interface StreamObjectResult { + /** + * Warnings from the model provider (e.g. unsupported settings) + */ + readonly warnings: Promise; + + /** + * The token usage of the generated response. Resolved when the response is finished. + */ + readonly usage: Promise; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + */ + readonly providerMetadata: Promise; + + /** + * Additional request information from the last step. + */ + readonly request: Promise; + + /** + * Additional response information. + */ + readonly response: Promise; + + /** + * The reason why the generation finished. Taken from the last step. + * + * Resolved when the response is finished. + */ + readonly finishReason: Promise; + + /** + * The generated object (typed according to the schema). Resolved when the response is finished. + */ + readonly object: Promise; + + /** + * Stream of partial objects. It gets more complete as the stream progresses. + * + * Note that the partial object is not validated. + * If you want to be certain that the actual content matches your schema, you need to implement your own validation for partial results. + */ + readonly partialObjectStream: AsyncIterableStream; + + /** + * Stream over complete array elements. Only available if the output strategy is set to `array`. + */ + readonly elementStream: ELEMENT_STREAM; + + /** + * Text stream of the JSON representation of the generated object. It contains text chunks. + * When the stream is finished, the object is valid JSON that can be parsed. + */ + readonly textStream: AsyncIterableStream; + + /** + * Stream of different types of events, including partial objects, errors, and finish events. + * Only errors that stop the stream, such as network errors, are thrown. + */ + readonly fullStream: AsyncIterableStream>; + + /** + * Writes text delta output to a Node.js response-like object. + * It sets a `Content-Type` header to `text/plain; charset=utf-8` and + * writes each text delta as a separate chunk. + * + * @param response A Node.js response-like object (ServerResponse). + * @param init Optional headers, status code, and status text. + */ + pipeTextStreamToResponse(response: ServerResponse, init?: ResponseInit): void; + + /** + * Creates a simple text stream response. + * The response has a `Content-Type` header set to `text/plain; charset=utf-8`. + * Each text delta is encoded as UTF-8 and sent as a separate chunk. + * Non-text-delta events are ignored. + * + * @param init Optional headers, status code, and status text. + */ + toTextStreamResponse(init?: ResponseInit): Response; +} + +export type ObjectStreamPart = + | { + type: 'object'; + object: PARTIAL; + } + | { + type: 'text-delta'; + textDelta: string; + } + | { + type: 'error'; + error: unknown; + } + | { + type: 'finish'; + finishReason: FinishReason; + usage: LanguageModelUsage; + response: LanguageModelResponseMetadata; + providerMetadata?: ProviderMetadata; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/stream-object.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/stream-object.ts new file mode 100644 index 000000000..41410c654 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/stream-object.ts @@ -0,0 +1,984 @@ +import { + JSONValue, + LanguageModelV3FinishReason, + LanguageModelV3StreamPart, + LanguageModelV3Usage, + SharedV3ProviderMetadata, + SharedV3Warning, +} from '@ai-sdk/provider'; +import { + createIdGenerator, + DelayedPromise, + FlexibleSchema, + ProviderOptions, + type InferSchema, +} from '@ai-sdk/provider-utils'; +import { ServerResponse } from 'http'; +import { logWarnings } from '../logger/log-warnings'; +import { resolveLanguageModel } from '../model/resolve-model'; +import { CallSettings } from '../prompt/call-settings'; +import { convertToLanguageModelPrompt } from '../prompt/convert-to-language-model-prompt'; +import { prepareCallSettings } from '../prompt/prepare-call-settings'; +import { Prompt } from '../prompt/prompt'; +import { standardizePrompt } from '../prompt/standardize-prompt'; +import { wrapGatewayError } from '../prompt/wrap-gateway-error'; +import { assembleOperationName } from '../telemetry/assemble-operation-name'; +import { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes'; +import { getTracer } from '../telemetry/get-tracer'; +import { recordSpan } from '../telemetry/record-span'; +import { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes'; +import { stringifyForTelemetry } from '../telemetry/stringify-for-telemetry'; +import { TelemetrySettings } from '../telemetry/telemetry-settings'; +import { createTextStreamResponse } from '../text-stream/create-text-stream-response'; +import { pipeTextStreamToResponse } from '../text-stream/pipe-text-stream-to-response'; +import { + CallWarning, + FinishReason, + LanguageModel, +} from '../types/language-model'; +import { LanguageModelRequestMetadata } from '../types/language-model-request-metadata'; +import { LanguageModelResponseMetadata } from '../types/language-model-response-metadata'; +import { ProviderMetadata } from '../types/provider-metadata'; +import { + asLanguageModelUsage, + createNullLanguageModelUsage, + LanguageModelUsage, +} from '../types/usage'; +import { DeepPartial, isDeepEqualData, parsePartialJson } from '../util'; +import { + AsyncIterableStream, + createAsyncIterableStream, +} from '../util/async-iterable-stream'; +import { createStitchableStream } from '../util/create-stitchable-stream'; +import { DownloadFunction } from '../util/download/download-function'; +import { now as originalNow } from '../util/now'; +import { prepareRetries } from '../util/prepare-retries'; +import { getOutputStrategy, OutputStrategy } from './output-strategy'; +import { parseAndValidateObjectResultWithRepair } from './parse-and-validate-object-result'; +import { RepairTextFunction } from './repair-text'; +import { ObjectStreamPart, StreamObjectResult } from './stream-object-result'; +import { validateObjectGenerationInput } from './validate-object-generation-input'; + +const originalGenerateId = createIdGenerator({ prefix: 'aiobj', size: 24 }); + +/** + * Callback that is set using the `onError` option. + * + * @param event - The event that is passed to the callback. + */ +export type StreamObjectOnErrorCallback = (event: { + error: unknown; +}) => Promise | void; + +/** + * Callback that is set using the `onFinish` option. + * + * @param event - The event that is passed to the callback. + */ +export type StreamObjectOnFinishCallback = (event: { + /** + * The token usage of the generated response. + */ + usage: LanguageModelUsage; + + /** + * The generated object. Can be undefined if the final object does not match the schema. + */ + object: RESULT | undefined; + + /** + * Optional error object. This is e.g. a TypeValidationError when the final object does not match the schema. + */ + error: unknown | undefined; + + /** + * Response metadata. + */ + response: LanguageModelResponseMetadata; + + /** + * Warnings from the model provider (e.g. unsupported settings). + */ + warnings?: CallWarning[]; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerMetadata: ProviderMetadata | undefined; +}) => Promise | void; + +/** + * Generate a structured, typed object for a given prompt and schema using a language model. + * + * This function streams the output. If you do not want to stream the output, use `generateObject` instead. + * + * @param model - The language model to use. + * + * @param system - A system message that will be part of the prompt. + * @param prompt - A simple text prompt. You can either use `prompt` or `messages` but not both. + * @param messages - A list of messages. You can either use `prompt` or `messages` but not both. + * + * @param maxOutputTokens - Maximum number of tokens to generate. + * @param temperature - Temperature setting. + * The value is passed through to the provider. The range depends on the provider and model. + * It is recommended to set either `temperature` or `topP`, but not both. + * @param topP - Nucleus sampling. + * The value is passed through to the provider. The range depends on the provider and model. + * It is recommended to set either `temperature` or `topP`, but not both. + * @param topK - Only sample from the top K options for each subsequent token. + * Used to remove "long tail" low probability responses. + * Recommended for advanced use cases only. You usually only need to use temperature. + * @param presencePenalty - Presence penalty setting. + * It affects the likelihood of the model to repeat information that is already in the prompt. + * The value is passed through to the provider. The range depends on the provider and model. + * @param frequencyPenalty - Frequency penalty setting. + * It affects the likelihood of the model to repeatedly use the same words or phrases. + * The value is passed through to the provider. The range depends on the provider and model. + * @param stopSequences - Stop sequences. + * If set, the model will stop generating text when one of the stop sequences is generated. + * @param seed - The seed (integer) to use for random sampling. + * If set and supported by the model, calls will generate deterministic results. + * + * @param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2. + * @param abortSignal - An optional abort signal that can be used to cancel the call. + * @param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers. + * + * @param schema - The schema of the object that the model should generate. + * @param schemaName - Optional name of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. + * via tool or schema name. + * @param schemaDescription - Optional description of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. + * via tool or schema description. + * + * @param output - The type of the output. + * + * - 'object': The output is an object. + * - 'array': The output is an array. + * - 'enum': The output is an enum. + * - 'no-schema': The output is not a schema. + * + * @param experimental_telemetry - Optional telemetry configuration (experimental). + * + * @param providerOptions - Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + * + * @returns + * A result object for accessing the partial object stream and additional information. + * + * @deprecated Use `streamText` with an `output` setting instead. + */ +export function streamObject< + SCHEMA extends FlexibleSchema = FlexibleSchema, + OUTPUT extends 'object' | 'array' | 'enum' | 'no-schema' = + InferSchema extends string ? 'enum' : 'object', + RESULT = OUTPUT extends 'array' + ? Array> + : InferSchema, +>( + options: Omit & + Prompt & + (OUTPUT extends 'enum' + ? { + /** + * The enum values that the model should use. + */ + enum: Array; + output: 'enum'; + } + : OUTPUT extends 'no-schema' + ? {} + : { + /** + * The schema of the object that the model should generate. + */ + schema: SCHEMA; + + /** + * Optional name of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. + * via tool or schema name. + */ + schemaName?: string; + + /** + * Optional description of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. + * via tool or schema description. + */ + schemaDescription?: string; + }) & { + output?: OUTPUT; + + /** + * The language model to use. + */ + model: LanguageModel; + + /** + * A function that attempts to repair the raw output of the model + * to enable JSON parsing. + */ + experimental_repairText?: RepairTextFunction; + + /** + * Optional telemetry configuration (experimental). + */ + + experimental_telemetry?: TelemetrySettings; + + /** + * Custom download function to use for URLs. + * + * By default, files are downloaded if the model does not support the URL for the given media type. + */ + experimental_download?: DownloadFunction | undefined; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; + + /** + * Callback that is invoked when an error occurs during streaming. + * You can use it to log errors. + * The stream processing will pause until the callback promise is resolved. + */ + onError?: StreamObjectOnErrorCallback; + + /** + * Callback that is called when the LLM response and the final object validation are finished. + */ + onFinish?: StreamObjectOnFinishCallback; + + /** + * Internal. For test use only. May change without notice. + */ + _internal?: { + generateId?: () => string; + currentDate?: () => Date; + now?: () => number; + }; + }, +): StreamObjectResult< + OUTPUT extends 'enum' + ? string + : OUTPUT extends 'array' + ? RESULT + : DeepPartial, + OUTPUT extends 'array' ? RESULT : RESULT, + OUTPUT extends 'array' + ? RESULT extends Array + ? AsyncIterableStream + : never + : never +> { + const { + model, + output = 'object', + system, + prompt, + messages, + maxRetries, + abortSignal, + headers, + experimental_repairText: repairText, + experimental_telemetry: telemetry, + experimental_download: download, + providerOptions, + onError = ({ error }: { error: unknown }) => { + console.error(error); + }, + onFinish, + _internal: { + generateId = originalGenerateId, + currentDate = () => new Date(), + now = originalNow, + } = {}, + ...settings + } = options; + + const enumValues = + 'enum' in options && options.enum ? options.enum : undefined; + + const { + schema: inputSchema, + schemaDescription, + schemaName, + } = 'schema' in options ? options : {}; + + validateObjectGenerationInput({ + output, + schema: inputSchema, + schemaName, + schemaDescription, + enumValues, + }); + + const outputStrategy = getOutputStrategy({ + output, + schema: inputSchema, + enumValues, + }); + + return new DefaultStreamObjectResult({ + model, + telemetry, + headers, + settings, + maxRetries, + abortSignal, + outputStrategy, + system, + prompt, + messages, + schemaName, + schemaDescription, + providerOptions, + repairText, + onError, + onFinish, + download, + generateId, + currentDate, + now, + }); +} + +class DefaultStreamObjectResult< + PARTIAL, + RESULT, + ELEMENT_STREAM, +> implements StreamObjectResult { + private readonly _object = new DelayedPromise(); + private readonly _usage = new DelayedPromise(); + private readonly _providerMetadata = new DelayedPromise< + ProviderMetadata | undefined + >(); + private readonly _warnings = new DelayedPromise(); + private readonly _request = + new DelayedPromise(); + private readonly _response = + new DelayedPromise(); + private readonly _finishReason = new DelayedPromise(); + + private readonly baseStream: ReadableStream>; + + private readonly outputStrategy: OutputStrategy< + PARTIAL, + RESULT, + ELEMENT_STREAM + >; + + constructor({ + model: modelArg, + headers, + telemetry, + settings, + maxRetries: maxRetriesArg, + abortSignal, + outputStrategy, + system, + prompt, + messages, + schemaName, + schemaDescription, + providerOptions, + repairText, + onError, + onFinish, + download, + generateId, + currentDate, + now, + }: { + model: LanguageModel; + telemetry: TelemetrySettings | undefined; + headers: Record | undefined; + settings: Omit; + maxRetries: number | undefined; + abortSignal: AbortSignal | undefined; + outputStrategy: OutputStrategy; + system: Prompt['system']; + prompt: Prompt['prompt']; + messages: Prompt['messages']; + schemaName: string | undefined; + schemaDescription: string | undefined; + providerOptions: ProviderOptions | undefined; + repairText: RepairTextFunction | undefined; + onError: StreamObjectOnErrorCallback; + onFinish: StreamObjectOnFinishCallback | undefined; + download: DownloadFunction | undefined; + generateId: () => string; + currentDate: () => Date; + now: () => number; + }) { + const model = resolveLanguageModel(modelArg); + + const { maxRetries, retry } = prepareRetries({ + maxRetries: maxRetriesArg, + abortSignal, + }); + + const callSettings = prepareCallSettings(settings); + + const baseTelemetryAttributes = getBaseTelemetryAttributes({ + model, + telemetry, + headers, + settings: { ...callSettings, maxRetries }, + }); + + const tracer = getTracer(telemetry); + const self = this; + + const stitchableStream = + createStitchableStream>(); + + const eventProcessor = new TransformStream< + ObjectStreamPart, + ObjectStreamPart + >({ + transform(chunk, controller) { + controller.enqueue(chunk); + + if (chunk.type === 'error') { + onError({ error: wrapGatewayError(chunk.error) }); + } + }, + }); + + this.baseStream = stitchableStream.stream.pipeThrough(eventProcessor); + + recordSpan({ + name: 'ai.streamObject', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ + operationId: 'ai.streamObject', + telemetry, + }), + ...baseTelemetryAttributes, + // specific settings that only make sense on the outer level: + 'ai.prompt': { + input: () => JSON.stringify({ system, prompt, messages }), + }, + 'ai.schema': { + input: async () => + JSON.stringify(await outputStrategy.jsonSchema()), + }, + 'ai.schema.name': schemaName, + 'ai.schema.description': schemaDescription, + 'ai.settings.output': outputStrategy.type, + }, + }), + tracer, + endWhenDone: false, + fn: async rootSpan => { + const standardizedPrompt = await standardizePrompt({ + system, + prompt, + messages, + } as Prompt); + + const callOptions = { + responseFormat: { + type: 'json' as const, + schema: await outputStrategy.jsonSchema(), + name: schemaName, + description: schemaDescription, + }, + ...prepareCallSettings(settings), + prompt: await convertToLanguageModelPrompt({ + prompt: standardizedPrompt, + supportedUrls: await model.supportedUrls, + download, + }), + providerOptions, + abortSignal, + headers, + includeRawChunks: false, + }; + + const transformer: Transformer< + LanguageModelV3StreamPart, + ObjectStreamInputPart + > = { + transform: (chunk, controller) => { + switch (chunk.type) { + case 'text-delta': + controller.enqueue(chunk.delta); + break; + case 'response-metadata': + case 'finish': + case 'error': + case 'stream-start': + controller.enqueue(chunk); + break; + } + }, + }; + + const { + result: { stream, response, request }, + doStreamSpan, + startTimestampMs, + } = await retry(() => + recordSpan({ + name: 'ai.streamObject.doStream', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ + operationId: 'ai.streamObject.doStream', + telemetry, + }), + ...baseTelemetryAttributes, + 'ai.prompt.messages': { + input: () => stringifyForTelemetry(callOptions.prompt), + }, + + // standardized gen-ai llm span attributes: + 'gen_ai.system': model.provider, + 'gen_ai.request.model': model.modelId, + 'gen_ai.request.frequency_penalty': + callSettings.frequencyPenalty, + 'gen_ai.request.max_tokens': callSettings.maxOutputTokens, + 'gen_ai.request.presence_penalty': callSettings.presencePenalty, + 'gen_ai.request.temperature': callSettings.temperature, + 'gen_ai.request.top_k': callSettings.topK, + 'gen_ai.request.top_p': callSettings.topP, + }, + }), + tracer, + endWhenDone: false, + fn: async doStreamSpan => ({ + startTimestampMs: now(), + doStreamSpan, + result: await model.doStream(callOptions), + }), + }), + ); + + self._request.resolve(request ?? {}); + + // store information for onFinish callback: + let warnings: SharedV3Warning[] | undefined; + let usage: LanguageModelUsage = createNullLanguageModelUsage(); + let finishReason: FinishReason | undefined; + let providerMetadata: ProviderMetadata | undefined; + let object: RESULT | undefined; + let error: unknown | undefined; + + // pipe chunks through a transformation stream that extracts metadata: + let accumulatedText = ''; + let textDelta = ''; + let fullResponse: { + id: string; + timestamp: Date; + modelId: string; + } = { + id: generateId(), + timestamp: currentDate(), + modelId: model.modelId, + }; + + // Keep track of raw parse result before type validation, since e.g. Zod might + // change the object by mapping properties. + let latestObjectJson: JSONValue | undefined = undefined; + let latestObject: PARTIAL | undefined = undefined; + let isFirstChunk = true; + let isFirstDelta = true; + + const transformedStream = stream + .pipeThrough(new TransformStream(transformer)) + .pipeThrough( + new TransformStream< + string | ObjectStreamInputPart, + ObjectStreamPart + >({ + async transform(chunk, controller): Promise { + if ( + typeof chunk === 'object' && + chunk.type === 'stream-start' + ) { + warnings = chunk.warnings; + return; // stream start chunks are sent immediately and do not count as first chunk + } + + // Telemetry event for first chunk: + if (isFirstChunk) { + const msToFirstChunk = now() - startTimestampMs; + + isFirstChunk = false; + + doStreamSpan.addEvent('ai.stream.firstChunk', { + 'ai.stream.msToFirstChunk': msToFirstChunk, + }); + + doStreamSpan.setAttributes({ + 'ai.stream.msToFirstChunk': msToFirstChunk, + }); + } + + // process partial text chunks + if (typeof chunk === 'string') { + accumulatedText += chunk; + textDelta += chunk; + + const { value: currentObjectJson, state: parseState } = + await parsePartialJson(accumulatedText); + + if ( + currentObjectJson !== undefined && + !isDeepEqualData(latestObjectJson, currentObjectJson) + ) { + const validationResult = + await outputStrategy.validatePartialResult({ + value: currentObjectJson, + textDelta, + latestObject, + isFirstDelta, + isFinalDelta: parseState === 'successful-parse', + }); + + if ( + validationResult.success && + !isDeepEqualData( + latestObject, + validationResult.value.partial, + ) + ) { + // inside inner check to correctly parse the final element in array mode: + latestObjectJson = currentObjectJson; + latestObject = validationResult.value.partial; + + controller.enqueue({ + type: 'object', + object: latestObject, + }); + + controller.enqueue({ + type: 'text-delta', + textDelta: validationResult.value.textDelta, + }); + + textDelta = ''; + isFirstDelta = false; + } + } + + return; + } + + switch (chunk.type) { + case 'response-metadata': { + fullResponse = { + id: chunk.id ?? fullResponse.id, + timestamp: chunk.timestamp ?? fullResponse.timestamp, + modelId: chunk.modelId ?? fullResponse.modelId, + }; + break; + } + + case 'finish': { + // send final text delta: + if (textDelta !== '') { + controller.enqueue({ type: 'text-delta', textDelta }); + } + + // store finish reason for telemetry: + finishReason = chunk.finishReason.unified; + + // store usage and metadata for promises and onFinish callback: + usage = asLanguageModelUsage(chunk.usage); + providerMetadata = chunk.providerMetadata; + + controller.enqueue({ + ...chunk, + finishReason: chunk.finishReason.unified, + usage, + response: fullResponse, + }); + + // log warnings: + logWarnings({ + warnings: warnings ?? [], + provider: model.provider, + model: model.modelId, + }); + + // resolve promises that can be resolved now: + self._usage.resolve(usage); + self._providerMetadata.resolve(providerMetadata); + self._warnings.resolve(warnings); + self._response.resolve({ + ...fullResponse, + headers: response?.headers, + }); + self._finishReason.resolve(finishReason ?? 'other'); + + try { + object = await parseAndValidateObjectResultWithRepair( + accumulatedText, + outputStrategy, + repairText, + { + response: fullResponse, + usage, + finishReason, + }, + ); + self._object.resolve(object); + } catch (e) { + error = e; + self._object.reject(e); + } + break; + } + + default: { + controller.enqueue(chunk); + break; + } + } + }, + + // invoke onFinish callback and resolve toolResults promise when the stream is about to close: + async flush(controller) { + try { + const finalUsage = usage ?? { + promptTokens: NaN, + completionTokens: NaN, + totalTokens: NaN, + }; + + doStreamSpan.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.response.finishReason': finishReason, + 'ai.response.object': { + output: () => JSON.stringify(object), + }, + 'ai.response.id': fullResponse.id, + 'ai.response.model': fullResponse.modelId, + 'ai.response.timestamp': + fullResponse.timestamp.toISOString(), + 'ai.response.providerMetadata': + JSON.stringify(providerMetadata), + + 'ai.usage.inputTokens': finalUsage.inputTokens, + 'ai.usage.outputTokens': finalUsage.outputTokens, + 'ai.usage.totalTokens': finalUsage.totalTokens, + 'ai.usage.reasoningTokens': finalUsage.reasoningTokens, + 'ai.usage.cachedInputTokens': + finalUsage.cachedInputTokens, + + // standardized gen-ai llm span attributes: + 'gen_ai.response.finish_reasons': [finishReason], + 'gen_ai.response.id': fullResponse.id, + 'gen_ai.response.model': fullResponse.modelId, + 'gen_ai.usage.input_tokens': finalUsage.inputTokens, + 'gen_ai.usage.output_tokens': finalUsage.outputTokens, + }, + }), + ); + + // finish doStreamSpan before other operations for correct timing: + doStreamSpan.end(); + + // Add response information to the root span: + rootSpan.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.usage.inputTokens': finalUsage.inputTokens, + 'ai.usage.outputTokens': finalUsage.outputTokens, + 'ai.usage.totalTokens': finalUsage.totalTokens, + 'ai.usage.reasoningTokens': finalUsage.reasoningTokens, + 'ai.usage.cachedInputTokens': + finalUsage.cachedInputTokens, + 'ai.response.object': { + output: () => JSON.stringify(object), + }, + 'ai.response.providerMetadata': + JSON.stringify(providerMetadata), + }, + }), + ); + + // call onFinish callback: + await onFinish?.({ + usage: finalUsage, + object, + error, + response: { + ...fullResponse, + headers: response?.headers, + }, + warnings, + providerMetadata, + }); + } catch (error) { + controller.enqueue({ type: 'error', error }); + } finally { + rootSpan.end(); + } + }, + }), + ); + + stitchableStream.addStream(transformedStream); + }, + }) + .catch(error => { + // add an empty stream with an error to break the stream: + stitchableStream.addStream( + new ReadableStream({ + start(controller) { + controller.enqueue({ type: 'error', error }); + controller.close(); + }, + }), + ); + }) + .finally(() => { + stitchableStream.close(); + }); + + this.outputStrategy = outputStrategy; + } + + get object() { + return this._object.promise; + } + + get usage() { + return this._usage.promise; + } + + get providerMetadata() { + return this._providerMetadata.promise; + } + + get warnings() { + return this._warnings.promise; + } + + get request() { + return this._request.promise; + } + + get response() { + return this._response.promise; + } + + get finishReason() { + return this._finishReason.promise; + } + + get partialObjectStream(): AsyncIterableStream { + return createAsyncIterableStream( + this.baseStream.pipeThrough( + new TransformStream, PARTIAL>({ + transform(chunk, controller) { + switch (chunk.type) { + case 'object': + controller.enqueue(chunk.object); + break; + + case 'text-delta': + case 'finish': + case 'error': // suppress error (use onError instead) + break; + + default: { + const _exhaustiveCheck: never = chunk; + throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`); + } + } + }, + }), + ), + ); + } + + get elementStream(): ELEMENT_STREAM { + return this.outputStrategy.createElementStream(this.baseStream); + } + + get textStream(): AsyncIterableStream { + return createAsyncIterableStream( + this.baseStream.pipeThrough( + new TransformStream, string>({ + transform(chunk, controller) { + switch (chunk.type) { + case 'text-delta': + controller.enqueue(chunk.textDelta); + break; + + case 'object': + case 'finish': + case 'error': // suppress error (use onError instead) + break; + + default: { + const _exhaustiveCheck: never = chunk; + throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`); + } + } + }, + }), + ), + ); + } + + get fullStream(): AsyncIterableStream> { + return createAsyncIterableStream(this.baseStream); + } + + pipeTextStreamToResponse(response: ServerResponse, init?: ResponseInit) { + pipeTextStreamToResponse({ + response, + textStream: this.textStream, + ...init, + }); + } + + toTextStreamResponse(init?: ResponseInit): Response { + return createTextStreamResponse({ + textStream: this.textStream, + ...init, + }); + } +} + +export type ObjectStreamInputPart = + | string + | { + type: 'stream-start'; + warnings: SharedV3Warning[]; + } + | { + type: 'error'; + error: unknown; + } + | { + type: 'response-metadata'; + id?: string; + timestamp?: Date; + modelId?: string; + } + | { + type: 'finish'; + finishReason: LanguageModelV3FinishReason; + usage: LanguageModelV3Usage; + providerMetadata?: SharedV3ProviderMetadata; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/validate-object-generation-input.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/validate-object-generation-input.ts new file mode 100644 index 000000000..ea550bfa7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-object/validate-object-generation-input.ts @@ -0,0 +1,144 @@ +import { FlexibleSchema } from '@ai-sdk/provider-utils'; +import { InvalidArgumentError } from '../error/invalid-argument-error'; + +export function validateObjectGenerationInput({ + output, + schema, + schemaName, + schemaDescription, + enumValues, +}: { + output?: 'object' | 'array' | 'enum' | 'no-schema'; + schema?: FlexibleSchema; + schemaName?: string; + schemaDescription?: string; + enumValues?: Array; +}) { + if ( + output != null && + output !== 'object' && + output !== 'array' && + output !== 'enum' && + output !== 'no-schema' + ) { + throw new InvalidArgumentError({ + parameter: 'output', + value: output, + message: 'Invalid output type.', + }); + } + + if (output === 'no-schema') { + if (schema != null) { + throw new InvalidArgumentError({ + parameter: 'schema', + value: schema, + message: 'Schema is not supported for no-schema output.', + }); + } + + if (schemaDescription != null) { + throw new InvalidArgumentError({ + parameter: 'schemaDescription', + value: schemaDescription, + message: 'Schema description is not supported for no-schema output.', + }); + } + + if (schemaName != null) { + throw new InvalidArgumentError({ + parameter: 'schemaName', + value: schemaName, + message: 'Schema name is not supported for no-schema output.', + }); + } + + if (enumValues != null) { + throw new InvalidArgumentError({ + parameter: 'enumValues', + value: enumValues, + message: 'Enum values are not supported for no-schema output.', + }); + } + } + + if (output === 'object') { + if (schema == null) { + throw new InvalidArgumentError({ + parameter: 'schema', + value: schema, + message: 'Schema is required for object output.', + }); + } + + if (enumValues != null) { + throw new InvalidArgumentError({ + parameter: 'enumValues', + value: enumValues, + message: 'Enum values are not supported for object output.', + }); + } + } + + if (output === 'array') { + if (schema == null) { + throw new InvalidArgumentError({ + parameter: 'schema', + value: schema, + message: 'Element schema is required for array output.', + }); + } + + if (enumValues != null) { + throw new InvalidArgumentError({ + parameter: 'enumValues', + value: enumValues, + message: 'Enum values are not supported for array output.', + }); + } + } + + if (output === 'enum') { + if (schema != null) { + throw new InvalidArgumentError({ + parameter: 'schema', + value: schema, + message: 'Schema is not supported for enum output.', + }); + } + + if (schemaDescription != null) { + throw new InvalidArgumentError({ + parameter: 'schemaDescription', + value: schemaDescription, + message: 'Schema description is not supported for enum output.', + }); + } + + if (schemaName != null) { + throw new InvalidArgumentError({ + parameter: 'schemaName', + value: schemaName, + message: 'Schema name is not supported for enum output.', + }); + } + + if (enumValues == null) { + throw new InvalidArgumentError({ + parameter: 'enumValues', + value: enumValues, + message: 'Enum values are required for enum output.', + }); + } + + for (const value of enumValues) { + if (typeof value !== 'string') { + throw new InvalidArgumentError({ + parameter: 'enumValues', + value, + message: 'Enum values must be strings.', + }); + } + } + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/generate-speech-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/generate-speech-result.ts new file mode 100644 index 000000000..ab855c8ba --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/generate-speech-result.ts @@ -0,0 +1,30 @@ +import { JSONObject } from '@ai-sdk/provider'; +import { SpeechModelResponseMetadata } from '../types/speech-model-response-metadata'; +import { Warning } from '../types/warning'; +import { GeneratedAudioFile } from './generated-audio-file'; + +/** + * The result of a `generateSpeech` call. + * It contains the audio data and additional information. + */ +export interface SpeechResult { + /** + * The generated audio file with the audio data. + */ + readonly audio: GeneratedAudioFile; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + readonly warnings: Array; + + /** + * Response metadata from the provider. There may be multiple responses if we made multiple calls to the model. + */ + readonly responses: Array; + + /** + * Provider metadata from the provider. + */ + readonly providerMetadata: Record; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/generate-speech.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/generate-speech.ts new file mode 100644 index 000000000..e91872307 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/generate-speech.ts @@ -0,0 +1,191 @@ +import { JSONObject } from '@ai-sdk/provider'; +import { ProviderOptions, withUserAgentSuffix } from '@ai-sdk/provider-utils'; +import { NoSpeechGeneratedError } from '../error/no-speech-generated-error'; +import { logWarnings } from '../logger/log-warnings'; +import { resolveSpeechModel } from '../model/resolve-model'; +import { SpeechModel } from '../types/speech-model'; +import { SpeechModelResponseMetadata } from '../types/speech-model-response-metadata'; +import { Warning } from '../types/warning'; +import { + audioMediaTypeSignatures, + detectMediaType, +} from '../util/detect-media-type'; +import { prepareRetries } from '../util/prepare-retries'; +import { VERSION } from '../version'; +import { SpeechResult } from './generate-speech-result'; +import { + DefaultGeneratedAudioFile, + GeneratedAudioFile, +} from './generated-audio-file'; + +/** + * Generates speech audio using a speech model. + * + * @param model - The speech model to use. + * @param text - The text to convert to speech. + * @param voice - The voice to use for speech generation. + * @param outputFormat - The output format to use for speech generation e.g. "mp3", "wav", etc. + * @param instructions - Instructions for the speech generation e.g. "Speak in a slow and steady tone". + * @param speed - The speed of the speech generation. + * @param language - The language for speech generation (ISO 639-1 code e.g. "en", "es", "fr") or "auto" for automatic detection. + * @param providerOptions - Additional provider-specific options that are passed through to the provider + * as body parameters. + * @param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2. + * @param abortSignal - An optional abort signal that can be used to cancel the call. + * @param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers. + * + * @returns A result object that contains the generated audio data. + */ +export async function generateSpeech({ + model, + text, + voice, + outputFormat, + instructions, + speed, + language, + providerOptions = {}, + maxRetries: maxRetriesArg, + abortSignal, + headers, +}: { + /** + * The speech model to use. + */ + model: SpeechModel; + + /** + * The text to convert to speech. + */ + text: string; + + /** + * The voice to use for speech generation. + */ + voice?: string; + + /** + * The desired output format for the audio e.g. "mp3", "wav", etc. + */ + outputFormat?: 'mp3' | 'wav' | (string & {}); + + /** + * Instructions for the speech generation e.g. "Speak in a slow and steady tone". + */ + instructions?: string; + + /** + * The speed of the speech generation. + */ + speed?: number; + + /** + * The language for speech generation. This should be an ISO 639-1 language code (e.g. "en", "es", "fr") + * or "auto" for automatic language detection. Provider support varies. + */ + language?: string; + + /** + * Additional provider-specific options that are passed through to the provider + * as body parameters. + * + * The outer record is keyed by the provider name, and the inner + * record is keyed by the provider-specific metadata key. + * ```ts + * { + * "openai": {} + * } + * ``` + */ + providerOptions?: ProviderOptions; + + /** + * Maximum number of retries per speech model call. Set to 0 to disable retries. + * + * @default 2 + */ + maxRetries?: number; + + /** + * Abort signal. + */ + abortSignal?: AbortSignal; + + /** + * Additional headers to include in the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; +}): Promise { + const resolvedModel = resolveSpeechModel(model); + if (!resolvedModel) { + throw new Error('Model could not be resolved'); + } + + const headersWithUserAgent = withUserAgentSuffix( + headers ?? {}, + `ai/${VERSION}`, + ); + + const { retry } = prepareRetries({ + maxRetries: maxRetriesArg, + abortSignal, + }); + + const result = await retry(() => + resolvedModel.doGenerate({ + text, + voice, + outputFormat, + instructions, + speed, + language, + abortSignal, + headers: headersWithUserAgent, + providerOptions, + }), + ); + + if (!result.audio || result.audio.length === 0) { + throw new NoSpeechGeneratedError({ responses: [result.response] }); + } + + logWarnings({ + warnings: result.warnings, + provider: resolvedModel.provider, + model: resolvedModel.modelId, + }); + + return new DefaultSpeechResult({ + audio: new DefaultGeneratedAudioFile({ + data: result.audio, + mediaType: + detectMediaType({ + data: result.audio, + signatures: audioMediaTypeSignatures, + }) ?? 'audio/mp3', + }), + warnings: result.warnings, + responses: [result.response], + providerMetadata: result.providerMetadata, + }); +} + +class DefaultSpeechResult implements SpeechResult { + readonly audio: GeneratedAudioFile; + readonly warnings: Array; + readonly responses: Array; + readonly providerMetadata: Record; + + constructor(options: { + audio: GeneratedAudioFile; + warnings: Array; + responses: Array; + providerMetadata: Record | undefined; + }) { + this.audio = options.audio; + this.warnings = options.warnings; + this.responses = options.responses; + this.providerMetadata = options.providerMetadata ?? {}; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/generated-audio-file.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/generated-audio-file.ts new file mode 100644 index 000000000..ce04c9bdb --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/generated-audio-file.ts @@ -0,0 +1,65 @@ +import { + GeneratedFile, + DefaultGeneratedFile, +} from '../generate-text/generated-file'; + +/** + * A generated audio file. + */ +export interface GeneratedAudioFile extends GeneratedFile { + /** + * Audio format of the file (e.g., 'mp3', 'wav', etc.) + */ + readonly format: string; +} + +export class DefaultGeneratedAudioFile + extends DefaultGeneratedFile + implements GeneratedAudioFile +{ + readonly format: string; + + constructor({ + data, + mediaType, + }: { + data: string | Uint8Array; + mediaType: string; + }) { + super({ data, mediaType }); + let format = 'mp3'; + + // If format is not provided, try to determine it from the media type + if (mediaType) { + const mediaTypeParts = mediaType.split('/'); + + if (mediaTypeParts.length === 2) { + // Handle special cases for audio formats + if (mediaType !== 'audio/mpeg') { + format = mediaTypeParts[1]; + } + } + } + + if (!format) { + // TODO this should be an AI SDK error + throw new Error( + 'Audio format must be provided or determinable from media type', + ); + } + + this.format = format; + } +} + +export class DefaultGeneratedAudioFileWithType extends DefaultGeneratedAudioFile { + readonly type = 'audio'; + + constructor(options: { + data: string | Uint8Array; + mediaType: string; + format: string; + }) { + super(options); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/index.ts new file mode 100644 index 000000000..21d906f91 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-speech/index.ts @@ -0,0 +1,3 @@ +export { generateSpeech as experimental_generateSpeech } from './generate-speech'; +export type { SpeechResult as Experimental_SpeechResult } from './generate-speech-result'; +export type { GeneratedAudioFile } from './generated-audio-file'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/callback-events.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/callback-events.ts new file mode 100644 index 000000000..ed55ae5dc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/callback-events.ts @@ -0,0 +1,332 @@ +import type { LanguageModelV3ToolChoice } from '@ai-sdk/provider'; +import type { + ModelMessage, + ProviderOptions, + SystemModelMessage, +} from '@ai-sdk/provider-utils'; +import type { TimeoutConfiguration } from '../prompt/call-settings'; +import type { ToolChoice } from '../types/language-model'; +import type { LanguageModelUsage } from '../types/usage'; +import type { Output } from './output'; +import type { StepResult } from './step-result'; +import type { StopCondition } from './stop-condition'; +import type { TypedToolCall } from './tool-call'; +import type { ToolSet } from './tool-set'; + +/** + * Common model information used across callback events. + */ +export interface CallbackModelInfo { + /** The provider identifier (e.g., 'openai', 'anthropic'). */ + readonly provider: string; + /** The specific model identifier (e.g., 'gpt-4o'). */ + readonly modelId: string; +} + +/** + * Event passed to the `onStart` callback. + * + * Called when the generation operation begins, before any LLM calls. + */ +export interface OnStartEvent< + TOOLS extends ToolSet = ToolSet, + OUTPUT extends Output = Output, + INCLUDE = { requestBody?: boolean; responseBody?: boolean }, +> { + /** The model being used for generation. */ + readonly model: CallbackModelInfo; + + /** The system message(s) provided to the model. */ + readonly system: + | string + | SystemModelMessage + | Array + | undefined; + + /** The prompt string or array of messages if using the prompt option. */ + readonly prompt: string | Array | undefined; + + /** The messages array if using the messages option. */ + readonly messages: Array | undefined; + + /** The tools available for this generation. */ + readonly tools: TOOLS | undefined; + + /** The tool choice strategy for this generation. */ + readonly toolChoice: ToolChoice> | undefined; + + /** Limits which tools are available for the model to call. */ + readonly activeTools: Array | undefined; + + /** Maximum number of tokens to generate. */ + readonly maxOutputTokens: number | undefined; + /** Sampling temperature for generation. */ + readonly temperature: number | undefined; + /** Top-p (nucleus) sampling parameter. */ + readonly topP: number | undefined; + /** Top-k sampling parameter. */ + readonly topK: number | undefined; + /** Presence penalty for generation. */ + readonly presencePenalty: number | undefined; + /** Frequency penalty for generation. */ + readonly frequencyPenalty: number | undefined; + /** Sequences that will stop generation. */ + readonly stopSequences: string[] | undefined; + /** Random seed for reproducible generation. */ + readonly seed: number | undefined; + /** Maximum number of retries for failed requests. */ + readonly maxRetries: number; + + /** + * Timeout configuration for the generation. + * Can be a number (milliseconds) or an object with totalMs, stepMs, chunkMs. + */ + readonly timeout: TimeoutConfiguration | undefined; + + /** Additional HTTP headers sent with the request. */ + readonly headers: Record | undefined; + + /** Additional provider-specific options. */ + readonly providerOptions: ProviderOptions | undefined; + + /** + * Condition(s) for stopping the generation. + * When the condition is an array, any of the conditions can be met to stop. + */ + readonly stopWhen: + | StopCondition + | Array> + | undefined; + + /** The output specification for structured outputs, if configured. */ + readonly output: OUTPUT | undefined; + + /** Abort signal for cancelling the operation. */ + readonly abortSignal: AbortSignal | undefined; + + /** + * Settings for controlling what data is included in step results. + */ + readonly include: INCLUDE | undefined; + + /** Identifier from telemetry settings for grouping related operations. */ + readonly functionId: string | undefined; + + /** Additional metadata passed to the generation. */ + readonly metadata: Record | undefined; + + /** + * User-defined context object that flows through the entire generation lifecycle. + * Can be accessed and modified in `prepareStep` and tool `execute` functions. + */ + readonly experimental_context: unknown; +} + +/** + * Event passed to the `onStepStart` callback. + * + * Called when a step (LLM call) begins, before the provider is called. + * Each step represents a single LLM invocation. + */ +export interface OnStepStartEvent< + TOOLS extends ToolSet = ToolSet, + OUTPUT extends Output = Output, + INCLUDE = { requestBody?: boolean; responseBody?: boolean }, +> { + /** Zero-based index of the current step. */ + readonly stepNumber: number; + + /** The model being used for this step. */ + readonly model: CallbackModelInfo; + + /** + * The system message for this step. + */ + readonly system: + | string + | SystemModelMessage + | Array + | undefined; + + /** + * The messages that will be sent to the model for this step. + * Uses the user-facing `ModelMessage` format. + * May be overridden by prepareStep. + */ + readonly messages: Array; + + /** The tools available for this generation. */ + readonly tools: TOOLS | undefined; + + /** The tool choice configuration for this step. */ + readonly toolChoice: LanguageModelV3ToolChoice | undefined; + + /** Limits which tools are available for this step. */ + readonly activeTools: Array | undefined; + + /** Array of results from previous steps (empty for first step). */ + readonly steps: ReadonlyArray>; + + /** Additional provider-specific options for this step. */ + readonly providerOptions: ProviderOptions | undefined; + + /** + * Timeout configuration for the generation. + * Can be a number (milliseconds) or an object with totalMs, stepMs, chunkMs. + */ + readonly timeout: TimeoutConfiguration | undefined; + + /** Additional HTTP headers sent with the request. */ + readonly headers: Record | undefined; + + /** + * Condition(s) for stopping the generation. + * When the condition is an array, any of the conditions can be met to stop. + */ + readonly stopWhen: + | StopCondition + | Array> + | undefined; + + /** The output specification for structured outputs, if configured. */ + readonly output: OUTPUT | undefined; + + /** Abort signal for cancelling the operation. */ + readonly abortSignal: AbortSignal | undefined; + + /** + * Settings for controlling what data is included in step results. + */ + readonly include: INCLUDE | undefined; + + /** Identifier from telemetry settings for grouping related operations. */ + readonly functionId: string | undefined; + + /** Additional metadata from telemetry settings. */ + readonly metadata: Record | undefined; + + /** + * User-defined context object. May be updated from `prepareStep` between steps. + */ + readonly experimental_context: unknown; +} + +/** + * Event passed to the `onToolCallStart` callback. + * + * Called when a tool execution begins, before the tool's `execute` function is invoked. + */ +export interface OnToolCallStartEvent { + /** Zero-based index of the current step where this tool call occurs. */ + readonly stepNumber: number | undefined; + + /** The model being used for this step. */ + readonly model: CallbackModelInfo | undefined; + + /** The full tool call object. */ + readonly toolCall: TypedToolCall; + + /** The conversation messages available at tool execution time. */ + readonly messages: Array; + + /** Signal for cancelling the operation. */ + readonly abortSignal: AbortSignal | undefined; + + /** Identifier from telemetry settings for grouping related operations. */ + readonly functionId: string | undefined; + + /** Additional metadata from telemetry settings. */ + readonly metadata: Record | undefined; + + /** User-defined context object flowing through the generation. */ + readonly experimental_context: unknown; +} + +/** + * Event passed to the `onToolCallFinish` callback. + * + * Called when a tool execution completes, either successfully or with an error. + * Uses a discriminated union on the `success` field. + */ +export type OnToolCallFinishEvent = { + /** Zero-based index of the current step where this tool call occurred. */ + readonly stepNumber: number | undefined; + + /** The model being used for this step. */ + readonly model: CallbackModelInfo | undefined; + + /** The full tool call object. */ + readonly toolCall: TypedToolCall; + + /** The conversation messages available at tool execution time. */ + readonly messages: Array; + + /** Signal for cancelling the operation. */ + readonly abortSignal: AbortSignal | undefined; + + /** Execution time of the tool call in milliseconds. */ + readonly durationMs: number; + + /** Identifier from telemetry settings for grouping related operations. */ + readonly functionId: string | undefined; + + /** Additional metadata from telemetry settings. */ + readonly metadata: Record | undefined; + + /** User-defined context object flowing through the generation. */ + readonly experimental_context: unknown; +} & ( + | { + /** Indicates the tool call succeeded. */ + readonly success: true; + /** The tool's return value. */ + readonly output: unknown; + readonly error?: never; + } + | { + /** Indicates the tool call failed. */ + readonly success: false; + readonly output?: never; + /** The error that occurred during tool execution. */ + readonly error: unknown; + } +); + +/** + * Event passed to the `onStepFinish` callback. + * + * Called when a step (LLM call) completes. + * This is simply the StepResult for that step. + */ +export type OnStepFinishEvent = + StepResult; + +/** + * Event passed to the `onFinish` callback. + * + * Called when the entire generation completes (all steps finished). + * Includes the final step's result along with aggregated data from all steps. + */ +export type OnFinishEvent = + StepResult & { + /** Array containing results from all steps in the generation. */ + readonly steps: StepResult[]; + + /** Aggregated token usage across all steps. */ + readonly totalUsage: LanguageModelUsage; + + /** + * The final state of the user-defined context object. + * + * Experimental (can break in patch releases). + * + * @default undefined + */ + experimental_context: unknown; + + /** Identifier from telemetry settings for grouping related operations. */ + readonly functionId: string | undefined; + + /** Additional metadata from telemetry settings. */ + readonly metadata: Record | undefined; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/collect-tool-approvals.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/collect-tool-approvals.ts new file mode 100644 index 000000000..3fbf529de --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/collect-tool-approvals.ts @@ -0,0 +1,116 @@ +import { + ModelMessage, + ToolApprovalRequest, + ToolApprovalResponse, +} from '@ai-sdk/provider-utils'; +import { InvalidToolApprovalError } from '../error/invalid-tool-approval-error'; +import { ToolCallNotFoundForApprovalError } from '../error/tool-call-not-found-for-approval-error'; +import { TypedToolCall } from './tool-call'; +import { TypedToolResult } from './tool-result'; +import { ToolSet } from './tool-set'; + +export type CollectedToolApprovals = { + approvalRequest: ToolApprovalRequest; + approvalResponse: ToolApprovalResponse; + toolCall: TypedToolCall; +}; + +/** + * If the last message is a tool message, this function collects all tool approvals + * from that message. + */ +export function collectToolApprovals({ + messages, +}: { + messages: ModelMessage[]; +}): { + approvedToolApprovals: Array>; + deniedToolApprovals: Array>; +} { + const lastMessage = messages.at(-1); + + if (lastMessage?.role != 'tool') { + return { + approvedToolApprovals: [], + deniedToolApprovals: [], + }; + } + + // gather tool calls and prepare lookup + const toolCallsByToolCallId: Record> = {}; + for (const message of messages) { + if (message.role === 'assistant' && typeof message.content !== 'string') { + const content = message.content; + for (const part of content) { + if (part.type === 'tool-call') { + toolCallsByToolCallId[part.toolCallId] = part as TypedToolCall; + } + } + } + } + + // gather approval responses and prepare lookup + const toolApprovalRequestsByApprovalId: Record = + {}; + for (const message of messages) { + if (message.role === 'assistant' && typeof message.content !== 'string') { + const content = message.content; + for (const part of content) { + if (part.type === 'tool-approval-request') { + toolApprovalRequestsByApprovalId[part.approvalId] = part; + } + } + } + } + + // gather tool results from the last tool message + const toolResults: Record> = {}; + for (const part of lastMessage.content) { + if (part.type === 'tool-result') { + toolResults[part.toolCallId] = part as TypedToolResult; + } + } + + const approvedToolApprovals: Array> = []; + const deniedToolApprovals: Array> = []; + + const approvalResponses = lastMessage.content.filter( + part => part.type === 'tool-approval-response', + ); + for (const approvalResponse of approvalResponses) { + const approvalRequest = + toolApprovalRequestsByApprovalId[approvalResponse.approvalId]; + + if (approvalRequest == null) { + throw new InvalidToolApprovalError({ + approvalId: approvalResponse.approvalId, + }); + } + + if (toolResults[approvalRequest.toolCallId] != null) { + continue; + } + + const toolCall = toolCallsByToolCallId[approvalRequest.toolCallId]; + if (toolCall == null) { + throw new ToolCallNotFoundForApprovalError({ + toolCallId: approvalRequest.toolCallId, + approvalId: approvalRequest.approvalId, + }); + } + + const approval: CollectedToolApprovals = { + approvalRequest, + approvalResponse, + toolCall, + }; + + if (approvalResponse.approved) { + approvedToolApprovals.push(approval); + } else { + deniedToolApprovals.push(approval); + } + } + + return { approvedToolApprovals, deniedToolApprovals }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/content-part.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/content-part.ts new file mode 100644 index 000000000..925d1a366 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/content-part.ts @@ -0,0 +1,25 @@ +import { ProviderMetadata } from '../types'; +import { Source } from '../types/language-model'; +import { GeneratedFile } from './generated-file'; +import { ToolApprovalRequestOutput } from './tool-approval-request-output'; +import { ReasoningOutput } from './reasoning-output'; +import { TypedToolCall } from './tool-call'; +import { TypedToolError } from './tool-error'; +import { TypedToolResult } from './tool-result'; +import { ToolSet } from './tool-set'; + +export type ContentPart = + | { type: 'text'; text: string; providerMetadata?: ProviderMetadata } + | ReasoningOutput + | ({ type: 'source' } & Source) + | { type: 'file'; file: GeneratedFile; providerMetadata?: ProviderMetadata } // different because of GeneratedFile object + | ({ type: 'tool-call' } & TypedToolCall & { + providerMetadata?: ProviderMetadata; + }) + | ({ type: 'tool-result' } & TypedToolResult & { + providerMetadata?: ProviderMetadata; + }) + | ({ type: 'tool-error' } & TypedToolError & { + providerMetadata?: ProviderMetadata; + }) + | ToolApprovalRequestOutput; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/execute-tool-call.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/execute-tool-call.ts new file mode 100644 index 000000000..55644265c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/execute-tool-call.ts @@ -0,0 +1,197 @@ +import { executeTool, ModelMessage } from '@ai-sdk/provider-utils'; +import { Tracer } from '@opentelemetry/api'; +import { notify } from '../util/notify'; +import { assembleOperationName } from '../telemetry/assemble-operation-name'; +import { recordErrorOnSpan, recordSpan } from '../telemetry/record-span'; +import { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes'; +import { TelemetrySettings } from '../telemetry/telemetry-settings'; +import { now } from '../util/now'; +import { + GenerateTextOnToolCallFinishCallback, + GenerateTextOnToolCallStartCallback, +} from './generate-text'; +import { TypedToolCall } from './tool-call'; +import { ToolOutput } from './tool-output'; +import { ToolSet } from './tool-set'; +import { TypedToolResult } from './tool-result'; +import { TypedToolError } from './tool-error'; + +/** + * Executes a single tool call and manages its lifecycle callbacks. + * + * This function handles the complete tool execution flow: + * 1. Invokes `onToolCallStart` callback before execution + * 2. Executes the tool's `execute` function with proper context + * 3. Handles streaming outputs via `onPreliminaryToolResult` + * 4. Invokes `onToolCallFinish` callback with success or error result + * + * @returns The tool output (result or error), or undefined if the tool has no execute function. + */ +export async function executeToolCall({ + toolCall, + tools, + tracer, + telemetry, + messages, + abortSignal, + experimental_context, + stepNumber, + model, + onPreliminaryToolResult, + onToolCallStart, + onToolCallFinish, +}: { + toolCall: TypedToolCall; + tools: TOOLS | undefined; + tracer: Tracer; + telemetry: TelemetrySettings | undefined; + messages: ModelMessage[]; + abortSignal: AbortSignal | undefined; + experimental_context: unknown; + stepNumber?: number; + model?: { provider: string; modelId: string }; + onPreliminaryToolResult?: (result: TypedToolResult) => void; + onToolCallStart?: + | GenerateTextOnToolCallStartCallback + | Array | undefined | null>; + onToolCallFinish?: + | GenerateTextOnToolCallFinishCallback + | Array | undefined | null>; +}): Promise | undefined> { + const { toolName, toolCallId, input } = toolCall; + const tool = tools?.[toolName]; + + if (tool?.execute == null) { + return undefined; + } + + const baseCallbackEvent = { + stepNumber, + model, + toolCall, + messages, + abortSignal, + functionId: telemetry?.functionId, + metadata: telemetry?.metadata as Record | undefined, + experimental_context, + }; + + return recordSpan({ + name: 'ai.toolCall', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ + operationId: 'ai.toolCall', + telemetry, + }), + 'ai.toolCall.name': toolName, + 'ai.toolCall.id': toolCallId, + 'ai.toolCall.args': { + output: () => JSON.stringify(input), + }, + }, + }), + tracer, + fn: async span => { + let output: unknown; + + await notify({ event: baseCallbackEvent, callbacks: onToolCallStart }); + + const startTime = now(); + + try { + const stream = executeTool({ + execute: tool.execute!.bind(tool), + input, + options: { + toolCallId, + messages, + abortSignal, + experimental_context, + }, + }); + + for await (const part of stream) { + if (part.type === 'preliminary') { + onPreliminaryToolResult?.({ + ...toolCall, + type: 'tool-result', + output: part.output, + preliminary: true, + }); + } else { + output = part.output; + } + } + } catch (error) { + const durationMs = now() - startTime; + + await notify({ + event: { + ...baseCallbackEvent, + success: false as const, + error, + durationMs, + }, + callbacks: onToolCallFinish, + }); + + recordErrorOnSpan(span, error); + return { + type: 'tool-error', + toolCallId, + toolName, + input, + error, + dynamic: tool.type === 'dynamic', + ...(toolCall.providerMetadata != null + ? { providerMetadata: toolCall.providerMetadata } + : {}), + } as TypedToolError; + } + + const durationMs = now() - startTime; + + await notify({ + event: { + ...baseCallbackEvent, + success: true as const, + output, + durationMs, + }, + callbacks: onToolCallFinish, + }); + + try { + span.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.toolCall.result': { + output: () => JSON.stringify(output), + }, + }, + }), + ); + } catch (ignored) { + // JSON stringify might fail if the result is not serializable, + // in which case we just ignore it. In the future we might want to + // add an optional serialize method to the tool interface and warn + // if the result is not serializable. + } + + return { + type: 'tool-result', + toolCallId, + toolName, + input, + output, + dynamic: tool.type === 'dynamic', + ...(toolCall.providerMetadata != null + ? { providerMetadata: toolCall.providerMetadata } + : {}), + } as TypedToolResult; + }, + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/extract-reasoning-content.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/extract-reasoning-content.ts new file mode 100644 index 000000000..810b7af5c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/extract-reasoning-content.ts @@ -0,0 +1,17 @@ +import { + LanguageModelV3Content, + LanguageModelV3Reasoning, +} from '@ai-sdk/provider'; + +export function extractReasoningContent( + content: LanguageModelV3Content[], +): string | undefined { + const parts = content.filter( + (content): content is LanguageModelV3Reasoning => + content.type === 'reasoning', + ); + + return parts.length === 0 + ? undefined + : parts.map(content => content.text).join('\n'); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/extract-text-content.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/extract-text-content.ts new file mode 100644 index 000000000..2efc20bba --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/extract-text-content.ts @@ -0,0 +1,15 @@ +import { LanguageModelV3Content, LanguageModelV3Text } from '@ai-sdk/provider'; + +export function extractTextContent( + content: LanguageModelV3Content[], +): string | undefined { + const parts = content.filter( + (content): content is LanguageModelV3Text => content.type === 'text', + ); + + if (parts.length === 0) { + return undefined; + } + + return parts.map(content => content.text).join(''); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/generate-text-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/generate-text-result.ts new file mode 100644 index 000000000..6f37f8d69 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/generate-text-result.ts @@ -0,0 +1,168 @@ +import { CallWarning, FinishReason, ProviderMetadata } from '../types'; +import { Source } from '../types/language-model'; +import { LanguageModelRequestMetadata } from '../types/language-model-request-metadata'; +import { LanguageModelResponseMetadata } from '../types/language-model-response-metadata'; +import { LanguageModelUsage } from '../types/usage'; +import { ContentPart } from './content-part'; +import { GeneratedFile } from './generated-file'; +import { Output } from './output'; +import { InferCompleteOutput } from './output-utils'; +import { ReasoningOutput } from './reasoning-output'; +import { ResponseMessage } from './response-message'; +import { StepResult } from './step-result'; +import { DynamicToolCall, StaticToolCall, TypedToolCall } from './tool-call'; +import { + DynamicToolResult, + StaticToolResult, + TypedToolResult, +} from './tool-result'; +import { ToolSet } from './tool-set'; + +/** + * The result of a `generateText` call. + * It contains the generated text, the tool calls that were made during the generation, and the results of the tool calls. + */ +export interface GenerateTextResult< + TOOLS extends ToolSet, + OUTPUT extends Output, +> { + /** + * The content that was generated in the last step. + */ + readonly content: Array>; + + /** + * The text that was generated in the last step. + */ + readonly text: string; + + /** + * The full reasoning that the model has generated in the last step. + */ + readonly reasoning: Array; + + /** + * The reasoning text that the model has generated in the last step. Can be undefined if the model + * has only generated text. + */ + readonly reasoningText: string | undefined; + + /** + * The files that were generated in the last step. + * Empty array if no files were generated. + */ + readonly files: Array; + + /** + * Sources that have been used as references in the last step. + */ + readonly sources: Array; + + /** + * The tool calls that were made in the last step. + */ + readonly toolCalls: Array>; + + /** + * The static tool calls that were made in the last step. + */ + readonly staticToolCalls: Array>; + + /** + * The dynamic tool calls that were made in the last step. + */ + readonly dynamicToolCalls: Array; + + /** + * The results of the tool calls from the last step. + */ + readonly toolResults: Array>; + + /** + * The static tool results that were made in the last step. + */ + readonly staticToolResults: Array>; + + /** + * The dynamic tool results that were made in the last step. + */ + readonly dynamicToolResults: Array; + + /** + * The unified reason why the generation finished. + */ + readonly finishReason: FinishReason; + + /** + * The raw reason why the generation finished (from the provider). + */ + readonly rawFinishReason: string | undefined; + + /** + * The token usage of the last step. + */ + readonly usage: LanguageModelUsage; + + /** + * The total token usage of all steps. + * When there are multiple steps, the usage is the sum of all step usages. + */ + readonly totalUsage: LanguageModelUsage; + + /** + * Warnings from the model provider (e.g. unsupported settings) + */ + readonly warnings: CallWarning[] | undefined; + + /** + * Additional request information. + */ + readonly request: LanguageModelRequestMetadata; + + /** + * Additional response information. + */ + readonly response: LanguageModelResponseMetadata & { + /** + * The response messages that were generated during the call. It consists of an assistant message, + * potentially containing tool calls. + * + * When there are tool results, there is an additional tool message with the tool results that are available. + * If there are tools that do not have execute functions, they are not included in the tool results and + * need to be added separately. + */ + messages: Array; + + /** + * Response body (available only for providers that use HTTP requests). + */ + body?: unknown; + }; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + */ + readonly providerMetadata: ProviderMetadata | undefined; + + /** + * Details for all steps. + * You can use this to get information about intermediate steps, + * such as the tool calls or the response headers. + */ + readonly steps: Array>; + + /** + * The generated structured output. It uses the `output` specification. + * + * @deprecated Use `output` instead. + */ + readonly experimental_output: InferCompleteOutput; + + /** + * The generated structured output. It uses the `output` specification. + * + */ + readonly output: InferCompleteOutput; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/generate-text.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/generate-text.ts new file mode 100644 index 000000000..8383fa6ca --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/generate-text.ts @@ -0,0 +1,1582 @@ +import { + LanguageModelV3, + LanguageModelV3Content, + LanguageModelV3ToolCall, + LanguageModelV3ToolChoice, +} from '@ai-sdk/provider'; +import { + createIdGenerator, + getErrorMessage, + IdGenerator, + ProviderOptions, + SystemModelMessage, + ToolApprovalResponse, + withUserAgentSuffix, +} from '@ai-sdk/provider-utils'; +import { Tracer } from '@opentelemetry/api'; +import { NoOutputGeneratedError } from '../error'; +import { notify } from '../util/notify'; +import { logWarnings } from '../logger/log-warnings'; +import { resolveLanguageModel } from '../model/resolve-model'; +import { ModelMessage } from '../prompt'; +import { + CallSettings, + getStepTimeoutMs, + getTotalTimeoutMs, + TimeoutConfiguration, +} from '../prompt/call-settings'; +import { convertToLanguageModelPrompt } from '../prompt/convert-to-language-model-prompt'; +import { createToolModelOutput } from '../prompt/create-tool-model-output'; +import { prepareCallSettings } from '../prompt/prepare-call-settings'; +import { prepareToolsAndToolChoice } from '../prompt/prepare-tools-and-tool-choice'; +import { Prompt } from '../prompt/prompt'; +import { standardizePrompt } from '../prompt/standardize-prompt'; +import { wrapGatewayError } from '../prompt/wrap-gateway-error'; +import { ToolCallNotFoundForApprovalError } from '../error/tool-call-not-found-for-approval-error'; +import { assembleOperationName } from '../telemetry/assemble-operation-name'; +import { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes'; +import { getTracer } from '../telemetry/get-tracer'; +import { recordSpan } from '../telemetry/record-span'; +import { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes'; +import { stringifyForTelemetry } from '../telemetry/stringify-for-telemetry'; +import { getGlobalTelemetryIntegration } from '../telemetry/get-global-telemetry-integration'; +import { TelemetrySettings } from '../telemetry/telemetry-settings'; +import { + LanguageModel, + LanguageModelRequestMetadata, + ToolChoice, +} from '../types'; +import { + addLanguageModelUsage, + asLanguageModelUsage, + LanguageModelUsage, +} from '../types/usage'; +import { asArray } from '../util/as-array'; +import { DownloadFunction } from '../util/download/download-function'; +import { mergeObjects } from '../util/merge-objects'; +import { prepareRetries } from '../util/prepare-retries'; +import { VERSION } from '../version'; +import type { + OnFinishEvent, + OnStartEvent, + OnStepFinishEvent, + OnStepStartEvent, + OnToolCallFinishEvent, + OnToolCallStartEvent, +} from './callback-events'; +import { collectToolApprovals } from './collect-tool-approvals'; +import { ContentPart } from './content-part'; +import { executeToolCall } from './execute-tool-call'; +import { extractReasoningContent } from './extract-reasoning-content'; +import { extractTextContent } from './extract-text-content'; +import { GenerateTextResult } from './generate-text-result'; +import { DefaultGeneratedFile } from './generated-file'; +import { isApprovalNeeded } from './is-approval-needed'; +import { Output, text } from './output'; +import { InferCompleteOutput } from './output-utils'; +import { parseToolCall } from './parse-tool-call'; +import { PrepareStepFunction } from './prepare-step'; +import { ResponseMessage } from './response-message'; +import { DefaultStepResult, StepResult } from './step-result'; +import { + isStopConditionMet, + stepCountIs, + StopCondition, +} from './stop-condition'; +import { toResponseMessages } from './to-response-messages'; +import { ToolApprovalRequestOutput } from './tool-approval-request-output'; +import { TypedToolCall } from './tool-call'; +import { ToolCallRepairFunction } from './tool-call-repair-function'; +import { TypedToolError } from './tool-error'; +import { ToolOutput } from './tool-output'; +import { TypedToolResult } from './tool-result'; +import { ToolSet } from './tool-set'; +import { mergeAbortSignals } from '../util/merge-abort-signals'; + +const originalGenerateId = createIdGenerator({ + prefix: 'aitxt', + size: 24, +}); + +/** + * Include settings for generateText (requestBody and responseBody). + */ +type GenerateTextIncludeSettings = { + requestBody?: boolean; + responseBody?: boolean; +}; + +/** + * Callback that is set using the `experimental_onStart` option. + * + * Called when the generateText operation begins, before any LLM calls. + * Use this callback for logging, analytics, or initializing state at the + * start of a generation. + * + * @param event - The event object containing generation configuration. + */ +export type GenerateTextOnStartCallback< + TOOLS extends ToolSet = ToolSet, + OUTPUT extends Output = Output, +> = ( + event: OnStartEvent, +) => PromiseLike | void; + +/** + * Callback that is set using the `experimental_onStepStart` option. + * + * Called when a step (LLM call) begins, before the provider is called. + * Each step represents a single LLM invocation. Multiple steps occur when + * using tool calls (the model may be called multiple times in a loop). + * + * @param event - The event object containing step configuration. + */ +export type GenerateTextOnStepStartCallback< + TOOLS extends ToolSet = ToolSet, + OUTPUT extends Output = Output, +> = ( + event: OnStepStartEvent, +) => PromiseLike | void; + +/** + * Callback that is set using the `experimental_onToolCallStart` option. + * + * Called when a tool execution begins, before the tool's `execute` function is invoked. + * Use this for logging tool invocations, tracking tool usage, or pre-execution validation. + * + * @param event - The event object containing tool call information. + */ +export type GenerateTextOnToolCallStartCallback< + TOOLS extends ToolSet = ToolSet, +> = (event: OnToolCallStartEvent) => PromiseLike | void; + +/** + * Callback that is set using the `experimental_onToolCallFinish` option. + * + * Called when a tool execution completes, either successfully or with an error. + * Use this for logging tool results, tracking execution time, or error handling. + * + * The event uses a discriminated union on the `success` field: + * - When `success: true`: `output` contains the tool result, `error` is never present. + * - When `success: false`: `error` contains the error, `output` is never present. + * + * @param event - The event object containing tool call result information. + */ +export type GenerateTextOnToolCallFinishCallback< + TOOLS extends ToolSet = ToolSet, +> = (event: OnToolCallFinishEvent) => PromiseLike | void; + +/** + * Callback that is set using the `onStepFinish` option. + * + * Called when a step (LLM call) completes. The event includes all step result + * properties (text, tool calls, usage, etc.) along with additional metadata. + * + * @param stepResult - The result of the step. + */ +export type GenerateTextOnStepFinishCallback = ( + event: OnStepFinishEvent, +) => Promise | void; + +/** + * Callback that is set using the `onFinish` option. + * + * Called when the entire generation completes (all steps finished). + * The event includes the final step's result properties along with + * aggregated data from all steps. + * + * @param event - The final result along with aggregated step data. + */ +export type GenerateTextOnFinishCallback = ( + event: OnFinishEvent, +) => PromiseLike | void; + +/** + * Generate a text and call tools for a given prompt using a language model. + * + * This function does not stream the output. If you want to stream the output, use `streamText` instead. + * + * @param model - The language model to use. + * + * @param tools - Tools that are accessible to and can be called by the model. The model needs to support calling tools. + * @param toolChoice - The tool choice strategy. Default: 'auto'. + * + * @param system - A system message that will be part of the prompt. + * @param prompt - A simple text prompt. You can either use `prompt` or `messages` but not both. + * @param messages - A list of messages. You can either use `prompt` or `messages` but not both. + * + * @param maxOutputTokens - Maximum number of tokens to generate. + * @param temperature - Temperature setting. + * The value is passed through to the provider. The range depends on the provider and model. + * It is recommended to set either `temperature` or `topP`, but not both. + * @param topP - Nucleus sampling. + * The value is passed through to the provider. The range depends on the provider and model. + * It is recommended to set either `temperature` or `topP`, but not both. + * @param topK - Only sample from the top K options for each subsequent token. + * Used to remove "long tail" low probability responses. + * Recommended for advanced use cases only. You usually only need to use temperature. + * @param presencePenalty - Presence penalty setting. + * It affects the likelihood of the model to repeat information that is already in the prompt. + * The value is passed through to the provider. The range depends on the provider and model. + * @param frequencyPenalty - Frequency penalty setting. + * It affects the likelihood of the model to repeatedly use the same words or phrases. + * The value is passed through to the provider. The range depends on the provider and model. + * @param stopSequences - Stop sequences. + * If set, the model will stop generating text when one of the stop sequences is generated. + * @param seed - The seed (integer) to use for random sampling. + * If set and supported by the model, calls will generate deterministic results. + * + * @param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2. + * @param abortSignal - An optional abort signal that can be used to cancel the call. + * @param timeout - An optional timeout in milliseconds. The call will be aborted if it takes longer than the specified timeout. + * @param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers. + * + * @param experimental_context - User-defined context object that flows through the entire generation lifecycle. + * @param experimental_onStart - Callback invoked when generation begins, before any LLM calls. + * @param experimental_onStepStart - Callback invoked when each step begins, before the provider is called. + * Receives step number, messages (in ModelMessage format), tools, and context. + * @param experimental_onToolCallStart - Callback invoked before each tool execution begins. + * Receives tool name, call ID, input, and context. + * @param experimental_onToolCallFinish - Callback invoked after each tool execution completes. + * Uses a discriminated union: check `success` to determine if `output` or `error` is present. + * @param onStepFinish - Callback that is called when each step (LLM call) is finished, including intermediate steps. + * @param onFinish - Callback that is called when all steps are finished and the response is complete. + * + * @returns + * A result object that contains the generated text, the results of the tool calls, and additional information. + */ +export async function generateText< + TOOLS extends ToolSet, + OUTPUT extends Output = Output, +>({ + model: modelArg, + tools, + toolChoice, + system, + prompt, + messages, + maxRetries: maxRetriesArg, + abortSignal, + timeout, + headers, + stopWhen = stepCountIs(1), + experimental_output, + output = experimental_output, + experimental_telemetry: telemetry, + providerOptions, + experimental_activeTools, + activeTools = experimental_activeTools, + experimental_prepareStep, + prepareStep = experimental_prepareStep, + experimental_repairToolCall: repairToolCall, + experimental_download: download, + experimental_context, + experimental_include: include, + _internal: { generateId = originalGenerateId } = {}, + experimental_onStart: onStart, + experimental_onStepStart: onStepStart, + experimental_onToolCallStart: onToolCallStart, + experimental_onToolCallFinish: onToolCallFinish, + onStepFinish, + onFinish, + ...settings +}: CallSettings & + Prompt & { + /** + * The language model to use. + */ + model: LanguageModel; + + /** + * The tools that the model can call. The model needs to support calling tools. + */ + tools?: TOOLS; + + /** + * The tool choice strategy. Default: 'auto'. + */ + toolChoice?: ToolChoice>; + + /** + * Condition for stopping the generation when there are tool results in the last step. + * When the condition is an array, any of the conditions can be met to stop the generation. + * + * @default stepCountIs(1) + */ + stopWhen?: + | StopCondition> + | Array>>; + + /** + * Optional telemetry configuration (experimental). + */ + experimental_telemetry?: TelemetrySettings; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; + + /** + * @deprecated Use `activeTools` instead. + */ + experimental_activeTools?: Array>; + + /** + * Limits the tools that are available for the model to call without + * changing the tool call and result types in the result. + */ + activeTools?: Array>; + + /** + * Optional specification for parsing structured outputs from the LLM response. + */ + output?: OUTPUT; + + /** + * Optional specification for parsing structured outputs from the LLM response. + * + * @deprecated Use `output` instead. + */ + experimental_output?: OUTPUT; + + /** + * Custom download function to use for URLs. + * + * By default, files are downloaded if the model does not support the URL for the given media type. + */ + experimental_download?: DownloadFunction | undefined; + + /** + * @deprecated Use `prepareStep` instead. + */ + experimental_prepareStep?: PrepareStepFunction>; + + /** + * Optional function that you can use to provide different settings for a step. + */ + prepareStep?: PrepareStepFunction>; + + /** + * A function that attempts to repair a tool call that failed to parse. + */ + experimental_repairToolCall?: ToolCallRepairFunction>; + + /** + * Callback that is called when the generateText operation begins, + * before any LLM calls are made. + */ + experimental_onStart?: GenerateTextOnStartCallback, OUTPUT>; + + /** + * Callback that is called when a step (LLM call) begins, + * before the provider is called. + */ + experimental_onStepStart?: GenerateTextOnStepStartCallback< + NoInfer, + OUTPUT + >; + + /** + * Callback that is called right before a tool's execute function runs. + */ + experimental_onToolCallStart?: GenerateTextOnToolCallStartCallback< + NoInfer + >; + + /** + * Callback that is called right after a tool's execute function completes (or errors). + */ + experimental_onToolCallFinish?: GenerateTextOnToolCallFinishCallback< + NoInfer + >; + + /** + * Callback that is called when each step (LLM call) is finished, including intermediate steps. + */ + onStepFinish?: GenerateTextOnStepFinishCallback>; + + /** + * Callback that is called when all steps are finished and the response is complete. + */ + onFinish?: GenerateTextOnFinishCallback>; + + /** + * Context that is passed into tool execution. + * + * Experimental (can break in patch releases). + * + * @default undefined + */ + experimental_context?: unknown; + + /** + * Settings for controlling what data is included in step results. + * Disabling inclusion can help reduce memory usage when processing + * large payloads like images. + * + * By default, all data is included for backwards compatibility. + */ + experimental_include?: { + /** + * Whether to retain the request body in step results. + * The request body can be large when sending images or files. + * @default true + */ + requestBody?: boolean; + + /** + * Whether to retain the response body in step results. + * @default true + */ + responseBody?: boolean; + }; + + /** + * Internal. For test use only. May change without notice. + */ + _internal?: { + generateId?: IdGenerator; + }; + }): Promise> { + const model = resolveLanguageModel(modelArg); + const createGlobalTelemetry = getGlobalTelemetryIntegration(); + const stopConditions = asArray(stopWhen); + + const totalTimeoutMs = getTotalTimeoutMs(timeout); + const stepTimeoutMs = getStepTimeoutMs(timeout); + const stepAbortController = + stepTimeoutMs != null ? new AbortController() : undefined; + const mergedAbortSignal = mergeAbortSignals( + abortSignal, + totalTimeoutMs != null ? AbortSignal.timeout(totalTimeoutMs) : undefined, + stepAbortController?.signal, + ); + + const { maxRetries, retry } = prepareRetries({ + maxRetries: maxRetriesArg, + abortSignal: mergedAbortSignal, + }); + + const callSettings = prepareCallSettings(settings); + + const headersWithUserAgent = withUserAgentSuffix( + headers ?? {}, + `ai/${VERSION}`, + ); + + const baseTelemetryAttributes = getBaseTelemetryAttributes({ + model, + telemetry, + headers: headersWithUserAgent, + settings: { ...callSettings, maxRetries }, + }); + + const modelInfo = { provider: model.provider, modelId: model.modelId }; + + const initialPrompt = await standardizePrompt({ + system, + prompt, + messages, + } as Prompt); + + const globalTelemetry = createGlobalTelemetry(telemetry?.integrations); + + await notify({ + event: { + model: modelInfo, + system, + prompt, + messages, + tools, + toolChoice, + activeTools, + maxOutputTokens: callSettings.maxOutputTokens, + temperature: callSettings.temperature, + topP: callSettings.topP, + topK: callSettings.topK, + presencePenalty: callSettings.presencePenalty, + frequencyPenalty: callSettings.frequencyPenalty, + stopSequences: callSettings.stopSequences, + seed: callSettings.seed, + maxRetries, + timeout, + headers, + providerOptions, + stopWhen, + output, + abortSignal, + include, + functionId: telemetry?.functionId, + metadata: telemetry?.metadata as Record | undefined, + experimental_context, + }, + callbacks: [ + onStart, + globalTelemetry.onStart as + | undefined + | GenerateTextOnStartCallback, + ], + }); + + const tracer = getTracer(telemetry); + + try { + return await recordSpan({ + name: 'ai.generateText', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ + operationId: 'ai.generateText', + telemetry, + }), + ...baseTelemetryAttributes, + // model: + 'ai.model.provider': model.provider, + 'ai.model.id': model.modelId, + // specific settings that only make sense on the outer level: + 'ai.prompt': { + input: () => JSON.stringify({ system, prompt, messages }), + }, + }, + }), + tracer, + fn: async span => { + const initialMessages = initialPrompt.messages; + const responseMessages: Array = []; + + const { approvedToolApprovals, deniedToolApprovals } = + collectToolApprovals({ messages: initialMessages }); + + const localApprovedToolApprovals = approvedToolApprovals.filter( + toolApproval => !toolApproval.toolCall.providerExecuted, + ); + + if ( + deniedToolApprovals.length > 0 || + localApprovedToolApprovals.length > 0 + ) { + const toolOutputs = await executeTools({ + toolCalls: localApprovedToolApprovals.map( + toolApproval => toolApproval.toolCall, + ), + tools: tools as TOOLS, + tracer, + telemetry, + messages: initialMessages, + abortSignal: mergedAbortSignal, + experimental_context, + stepNumber: 0, + model: modelInfo, + onToolCallStart: [ + onToolCallStart, + globalTelemetry.onToolCallStart as + | undefined + | GenerateTextOnToolCallStartCallback, + ], + onToolCallFinish: [ + onToolCallFinish, + globalTelemetry.onToolCallFinish as + | undefined + | GenerateTextOnToolCallFinishCallback, + ], + }); + + const toolContent: Array = []; + + // add regular tool results for approved tool calls: + for (const output of toolOutputs) { + const modelOutput = await createToolModelOutput({ + toolCallId: output.toolCallId, + input: output.input, + tool: tools?.[output.toolName], + output: + output.type === 'tool-result' ? output.output : output.error, + errorMode: output.type === 'tool-error' ? 'text' : 'none', + }); + + toolContent.push({ + type: 'tool-result' as const, + toolCallId: output.toolCallId, + toolName: output.toolName, + output: modelOutput, + }); + } + + // add execution denied tool results for all denied tool approvals: + for (const toolApproval of deniedToolApprovals) { + toolContent.push({ + type: 'tool-result' as const, + toolCallId: toolApproval.toolCall.toolCallId, + toolName: toolApproval.toolCall.toolName, + output: { + type: 'execution-denied' as const, + reason: toolApproval.approvalResponse.reason, + // For provider-executed tools, include approvalId so provider can correlate + ...(toolApproval.toolCall.providerExecuted && { + providerOptions: { + openai: { + approvalId: toolApproval.approvalResponse.approvalId, + }, + }, + }), + }, + }); + } + + responseMessages.push({ + role: 'tool', + content: toolContent, + }); + } + + // Forward provider-executed approval responses to the provider + const providerExecutedToolApprovals = [ + ...approvedToolApprovals, + ...deniedToolApprovals, + ].filter(toolApproval => toolApproval.toolCall.providerExecuted); + + if (providerExecutedToolApprovals.length > 0) { + responseMessages.push({ + role: 'tool', + content: providerExecutedToolApprovals.map( + toolApproval => + ({ + type: 'tool-approval-response', + approvalId: toolApproval.approvalResponse.approvalId, + approved: toolApproval.approvalResponse.approved, + reason: toolApproval.approvalResponse.reason, + providerExecuted: true, + }) satisfies ToolApprovalResponse, + ), + }); + } + + const callSettings = prepareCallSettings(settings); + + let currentModelResponse: Awaited< + ReturnType + > & { response: { id: string; timestamp: Date; modelId: string } }; + let clientToolCalls: Array> = []; + let clientToolOutputs: Array> = []; + const steps: GenerateTextResult['steps'] = []; + + // Track provider-executed tool calls that support deferred results + // (e.g., code_execution in programmatic tool calling scenarios). + // These tools may not return their results in the same turn as their call. + const pendingDeferredToolCalls = new Map< + string, + { toolName: string } + >(); + + do { + // Set up step timeout if configured + const stepTimeoutId = + stepTimeoutMs != null + ? setTimeout(() => stepAbortController!.abort(), stepTimeoutMs) + : undefined; + + try { + const stepInputMessages = [...initialMessages, ...responseMessages]; + + const prepareStepResult = await prepareStep?.({ + model, + steps, + stepNumber: steps.length, + messages: stepInputMessages, + experimental_context, + }); + + const stepModel = resolveLanguageModel( + prepareStepResult?.model ?? model, + ); + const stepModelInfo = { + provider: stepModel.provider, + modelId: stepModel.modelId, + }; + + const promptMessages = await convertToLanguageModelPrompt({ + prompt: { + system: prepareStepResult?.system ?? initialPrompt.system, + messages: prepareStepResult?.messages ?? stepInputMessages, + }, + supportedUrls: await stepModel.supportedUrls, + download, + }); + + experimental_context = + prepareStepResult?.experimental_context ?? experimental_context; + + const stepActiveTools = + prepareStepResult?.activeTools ?? activeTools; + + const { toolChoice: stepToolChoice, tools: stepTools } = + await prepareToolsAndToolChoice({ + tools, + toolChoice: prepareStepResult?.toolChoice ?? toolChoice, + activeTools: stepActiveTools, + }); + + const stepMessages = + prepareStepResult?.messages ?? stepInputMessages; + + const stepSystem = + prepareStepResult?.system ?? initialPrompt.system; + + const stepProviderOptions = mergeObjects( + providerOptions, + prepareStepResult?.providerOptions, + ); + + await notify({ + event: { + stepNumber: steps.length, + model: stepModelInfo, + system: stepSystem, + messages: stepMessages, + tools, + toolChoice: stepToolChoice, + activeTools: stepActiveTools, + steps: [...steps], + providerOptions: stepProviderOptions, + timeout, + headers, + stopWhen, + output, + abortSignal, + include, + functionId: telemetry?.functionId, + metadata: telemetry?.metadata as + | Record + | undefined, + experimental_context, + }, + callbacks: [ + onStepStart, + globalTelemetry.onStepStart as + | undefined + | GenerateTextOnStepStartCallback, + ], + }); + + currentModelResponse = await retry(() => + recordSpan({ + name: 'ai.generateText.doGenerate', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ + operationId: 'ai.generateText.doGenerate', + telemetry, + }), + ...baseTelemetryAttributes, + // model: + 'ai.model.provider': stepModel.provider, + 'ai.model.id': stepModel.modelId, + // prompt: + 'ai.prompt.messages': { + input: () => stringifyForTelemetry(promptMessages), + }, + 'ai.prompt.tools': { + // convert the language model level tools: + input: () => stepTools?.map(tool => JSON.stringify(tool)), + }, + 'ai.prompt.toolChoice': { + input: () => + stepToolChoice != null + ? JSON.stringify(stepToolChoice) + : undefined, + }, + + // standardized gen-ai llm span attributes: + 'gen_ai.system': stepModel.provider, + 'gen_ai.request.model': stepModel.modelId, + 'gen_ai.request.frequency_penalty': + settings.frequencyPenalty, + 'gen_ai.request.max_tokens': settings.maxOutputTokens, + 'gen_ai.request.presence_penalty': settings.presencePenalty, + 'gen_ai.request.stop_sequences': settings.stopSequences, + 'gen_ai.request.temperature': + settings.temperature ?? undefined, + 'gen_ai.request.top_k': settings.topK, + 'gen_ai.request.top_p': settings.topP, + }, + }), + tracer, + fn: async span => { + const result = await stepModel.doGenerate({ + ...callSettings, + tools: stepTools, + toolChoice: stepToolChoice, + responseFormat: await output?.responseFormat, + prompt: promptMessages, + providerOptions: stepProviderOptions, + abortSignal: mergedAbortSignal, + headers: headersWithUserAgent, + }); + + // Fill in default values: + const responseData = { + id: result.response?.id ?? generateId(), + timestamp: result.response?.timestamp ?? new Date(), + modelId: result.response?.modelId ?? stepModel.modelId, + headers: result.response?.headers, + body: result.response?.body, + }; + const usage = asLanguageModelUsage(result.usage); + + // Add response information to the span: + span.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.response.finishReason': result.finishReason.unified, + 'ai.response.text': { + output: () => extractTextContent(result.content), + }, + 'ai.response.reasoning': { + output: () => extractReasoningContent(result.content), + }, + 'ai.response.toolCalls': { + output: () => { + const toolCalls = asToolCalls(result.content); + return toolCalls == null + ? undefined + : JSON.stringify(toolCalls); + }, + }, + 'ai.response.id': responseData.id, + 'ai.response.model': responseData.modelId, + 'ai.response.timestamp': + responseData.timestamp.toISOString(), + 'ai.response.providerMetadata': JSON.stringify( + result.providerMetadata, + ), + + 'ai.usage.inputTokens': result.usage.inputTokens.total, + 'ai.usage.inputTokenDetails.noCacheTokens': + result.usage.inputTokens.noCache, + 'ai.usage.inputTokenDetails.cacheReadTokens': + result.usage.inputTokens.cacheRead, + 'ai.usage.inputTokenDetails.cacheWriteTokens': + result.usage.inputTokens.cacheWrite, + 'ai.usage.outputTokens': + result.usage.outputTokens.total, + 'ai.usage.outputTokenDetails.textTokens': + result.usage.outputTokens.text, + 'ai.usage.outputTokenDetails.reasoningTokens': + result.usage.outputTokens.reasoning, + 'ai.usage.totalTokens': usage.totalTokens, + 'ai.usage.reasoningTokens': + result.usage.outputTokens.reasoning, + 'ai.usage.cachedInputTokens': + result.usage.inputTokens.cacheRead, + + // standardized gen-ai llm span attributes: + 'gen_ai.response.finish_reasons': [ + result.finishReason.unified, + ], + 'gen_ai.response.id': responseData.id, + 'gen_ai.response.model': responseData.modelId, + 'gen_ai.usage.input_tokens': + result.usage.inputTokens.total, + 'gen_ai.usage.output_tokens': + result.usage.outputTokens.total, + }, + }), + ); + + return { ...result, response: responseData }; + }, + }), + ); + + // parse tool calls: + const stepToolCalls: TypedToolCall[] = await Promise.all( + currentModelResponse.content + .filter( + (part): part is LanguageModelV3ToolCall => + part.type === 'tool-call', + ) + .map(toolCall => + parseToolCall({ + toolCall, + tools, + repairToolCall, + system, + messages: stepInputMessages, + }), + ), + ); + const toolApprovalRequests: Record< + string, + ToolApprovalRequestOutput + > = {}; + + // notify the tools that the tool calls are available: + for (const toolCall of stepToolCalls) { + if (toolCall.invalid) { + continue; // ignore invalid tool calls + } + + const tool = tools?.[toolCall.toolName]; + + if (tool == null) { + // ignore tool calls for tools that are not available, + // e.g. provider-executed dynamic tools + continue; + } + + if (tool?.onInputAvailable != null) { + await tool.onInputAvailable({ + input: toolCall.input, + toolCallId: toolCall.toolCallId, + messages: stepInputMessages, + abortSignal: mergedAbortSignal, + experimental_context, + }); + } + + if ( + await isApprovalNeeded({ + tool, + toolCall, + messages: stepInputMessages, + experimental_context, + }) + ) { + toolApprovalRequests[toolCall.toolCallId] = { + type: 'tool-approval-request', + approvalId: generateId(), + toolCall, + }; + } + } + + // insert error tool outputs for invalid tool calls: + // TODO AI SDK 6: invalid inputs should not require output parts + const invalidToolCalls = stepToolCalls.filter( + toolCall => toolCall.invalid && toolCall.dynamic, + ); + + clientToolOutputs = []; + + for (const toolCall of invalidToolCalls) { + clientToolOutputs.push({ + type: 'tool-error', + toolCallId: toolCall.toolCallId, + toolName: toolCall.toolName, + input: toolCall.input, + error: getErrorMessage(toolCall.error!), + dynamic: true, + }); + } + + // execute client tool calls: + clientToolCalls = stepToolCalls.filter( + toolCall => !toolCall.providerExecuted, + ); + + if (tools != null) { + clientToolOutputs.push( + ...(await executeTools({ + toolCalls: clientToolCalls.filter( + toolCall => + !toolCall.invalid && + toolApprovalRequests[toolCall.toolCallId] == null, + ), + tools, + tracer, + telemetry, + messages: stepInputMessages, + abortSignal: mergedAbortSignal, + experimental_context, + stepNumber: steps.length, + model: stepModelInfo, + onToolCallStart: [ + onToolCallStart, + globalTelemetry.onToolCallStart as + | undefined + | GenerateTextOnToolCallStartCallback, + ], + onToolCallFinish: [ + onToolCallFinish, + globalTelemetry.onToolCallFinish, + ], + })), + ); + } + + // Track provider-executed tool calls that support deferred results. + // In programmatic tool calling, a server tool (e.g., code_execution) may + // trigger a client tool, and the server tool's result is deferred until + // the client tool's result is sent back. + for (const toolCall of stepToolCalls) { + if (!toolCall.providerExecuted) continue; + const tool = tools?.[toolCall.toolName]; + if (tool?.type === 'provider' && tool.supportsDeferredResults) { + // Check if this tool call already has a result in the current response + const hasResultInResponse = currentModelResponse.content.some( + part => + part.type === 'tool-result' && + part.toolCallId === toolCall.toolCallId, + ); + if (!hasResultInResponse) { + pendingDeferredToolCalls.set(toolCall.toolCallId, { + toolName: toolCall.toolName, + }); + } + } + } + + // Mark deferred tool calls as resolved when we receive their results + for (const part of currentModelResponse.content) { + if (part.type === 'tool-result') { + pendingDeferredToolCalls.delete(part.toolCallId); + } + } + + // content: + const stepContent = asContent({ + content: currentModelResponse.content, + toolCalls: stepToolCalls, + toolOutputs: clientToolOutputs, + toolApprovalRequests: Object.values(toolApprovalRequests), + tools, + }); + + // append to messages for potential next step: + responseMessages.push( + ...(await toResponseMessages({ + content: stepContent, + tools, + })), + ); + + // Add step information (after response messages are updated): + // Conditionally include request.body and response.body based on include settings. + // Large payloads (e.g., base64-encoded images) can cause memory issues. + const stepRequest: LanguageModelRequestMetadata = + (include?.requestBody ?? true) + ? (currentModelResponse.request ?? {}) + : { ...currentModelResponse.request, body: undefined }; + + const stepResponse = { + ...currentModelResponse.response, + // deep clone msgs to avoid mutating past messages in multi-step: + messages: structuredClone(responseMessages), + // Conditionally include response body: + body: + (include?.responseBody ?? true) + ? currentModelResponse.response?.body + : undefined, + }; + + const stepNumber = steps.length; + + const currentStepResult: StepResult = new DefaultStepResult({ + stepNumber, + model: stepModelInfo, + functionId: telemetry?.functionId, + metadata: telemetry?.metadata as + | Record + | undefined, + experimental_context, + content: stepContent, + finishReason: currentModelResponse.finishReason.unified, + rawFinishReason: currentModelResponse.finishReason.raw, + usage: asLanguageModelUsage(currentModelResponse.usage), + warnings: currentModelResponse.warnings, + providerMetadata: currentModelResponse.providerMetadata, + request: stepRequest, + response: stepResponse, + }); + + logWarnings({ + warnings: currentModelResponse.warnings ?? [], + provider: stepModelInfo.provider, + model: stepModelInfo.modelId, + }); + + steps.push(currentStepResult); + + await notify({ + event: currentStepResult, + callbacks: [onStepFinish, globalTelemetry.onStepFinish], + }); + } finally { + if (stepTimeoutId != null) { + clearTimeout(stepTimeoutId); + } + } + } while ( + // Continue if: + // 1. There are client tool calls that have all been executed, OR + // 2. There are pending deferred results from provider-executed tools + ((clientToolCalls.length > 0 && + clientToolOutputs.length === clientToolCalls.length) || + pendingDeferredToolCalls.size > 0) && + // continue until a stop condition is met: + !(await isStopConditionMet({ stopConditions, steps })) + ); + + // Add response information to the span: + span.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.response.finishReason': + currentModelResponse.finishReason.unified, + 'ai.response.text': { + output: () => extractTextContent(currentModelResponse.content), + }, + 'ai.response.reasoning': { + output: () => + extractReasoningContent(currentModelResponse.content), + }, + 'ai.response.toolCalls': { + output: () => { + const toolCalls = asToolCalls(currentModelResponse.content); + return toolCalls == null + ? undefined + : JSON.stringify(toolCalls); + }, + }, + 'ai.response.providerMetadata': JSON.stringify( + currentModelResponse.providerMetadata, + ), + }, + }), + ); + + const lastStep = steps[steps.length - 1]; + + const totalUsage = steps.reduce( + (totalUsage, step) => { + return addLanguageModelUsage(totalUsage, step.usage); + }, + { + inputTokens: undefined, + outputTokens: undefined, + totalTokens: undefined, + reasoningTokens: undefined, + cachedInputTokens: undefined, + } as LanguageModelUsage, + ); + + span.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.usage.inputTokens': totalUsage.inputTokens, + 'ai.usage.inputTokenDetails.noCacheTokens': + totalUsage.inputTokenDetails?.noCacheTokens, + 'ai.usage.inputTokenDetails.cacheReadTokens': + totalUsage.inputTokenDetails?.cacheReadTokens, + 'ai.usage.inputTokenDetails.cacheWriteTokens': + totalUsage.inputTokenDetails?.cacheWriteTokens, + 'ai.usage.outputTokens': totalUsage.outputTokens, + 'ai.usage.outputTokenDetails.textTokens': + totalUsage.outputTokenDetails?.textTokens, + 'ai.usage.outputTokenDetails.reasoningTokens': + totalUsage.outputTokenDetails?.reasoningTokens, + 'ai.usage.totalTokens': totalUsage.totalTokens, + 'ai.usage.reasoningTokens': + totalUsage.outputTokenDetails?.reasoningTokens, + 'ai.usage.cachedInputTokens': + totalUsage.inputTokenDetails?.cacheReadTokens, + }, + }), + ); + + await notify({ + event: { + stepNumber: lastStep.stepNumber, + model: lastStep.model, + functionId: lastStep.functionId, + metadata: lastStep.metadata, + experimental_context: lastStep.experimental_context, + finishReason: lastStep.finishReason, + rawFinishReason: lastStep.rawFinishReason, + usage: lastStep.usage, + content: lastStep.content, + text: lastStep.text, + reasoningText: lastStep.reasoningText, + reasoning: lastStep.reasoning, + files: lastStep.files, + sources: lastStep.sources, + toolCalls: lastStep.toolCalls, + staticToolCalls: lastStep.staticToolCalls, + dynamicToolCalls: lastStep.dynamicToolCalls, + toolResults: lastStep.toolResults, + staticToolResults: lastStep.staticToolResults, + dynamicToolResults: lastStep.dynamicToolResults, + request: lastStep.request, + response: lastStep.response, + warnings: lastStep.warnings, + providerMetadata: lastStep.providerMetadata, + steps, + totalUsage, + }, + callbacks: [ + onFinish, + globalTelemetry.onFinish as + | undefined + | GenerateTextOnFinishCallback, + ], + }); + + // parse output only if the last step was finished with "stop": + let resolvedOutput; + if (lastStep.finishReason === 'stop') { + const outputSpecification = output ?? text(); + resolvedOutput = await outputSpecification.parseCompleteOutput( + { text: lastStep.text }, + { + response: lastStep.response, + usage: lastStep.usage, + finishReason: lastStep.finishReason, + }, + ); + } + + return new DefaultGenerateTextResult({ + steps, + totalUsage, + output: resolvedOutput, + }); + }, + }); + } catch (error) { + throw wrapGatewayError(error); + } +} + +async function executeTools({ + toolCalls, + tools, + tracer, + telemetry, + messages, + abortSignal, + experimental_context, + stepNumber, + model, + onToolCallStart, + onToolCallFinish, +}: { + toolCalls: Array>; + tools: TOOLS; + tracer: Tracer; + telemetry: TelemetrySettings | undefined; + messages: ModelMessage[]; + abortSignal: AbortSignal | undefined; + experimental_context: unknown; + stepNumber: number; + model: { provider: string; modelId: string }; + onToolCallStart: + | GenerateTextOnToolCallStartCallback + | Array | undefined | null> + | undefined; + onToolCallFinish: + | GenerateTextOnToolCallFinishCallback + | Array | undefined | null> + | undefined; +}): Promise>> { + const toolOutputs = await Promise.all( + toolCalls.map(async toolCall => + executeToolCall({ + toolCall, + tools, + tracer, + telemetry, + messages, + abortSignal, + experimental_context, + stepNumber, + model, + onToolCallStart, + onToolCallFinish, + }), + ), + ); + + return toolOutputs.filter( + (output): output is NonNullable => output != null, + ); +} + +class DefaultGenerateTextResult< + TOOLS extends ToolSet, + OUTPUT extends Output, +> implements GenerateTextResult { + readonly steps: GenerateTextResult['steps']; + readonly totalUsage: LanguageModelUsage; + private readonly _output: InferCompleteOutput | undefined; + + constructor(options: { + steps: GenerateTextResult['steps']; + output: InferCompleteOutput | undefined; + totalUsage: LanguageModelUsage; + }) { + this.steps = options.steps; + this._output = options.output; + this.totalUsage = options.totalUsage; + } + + private get finalStep() { + return this.steps[this.steps.length - 1]; + } + + get content() { + return this.finalStep.content; + } + + get text() { + return this.finalStep.text; + } + + get files() { + return this.finalStep.files; + } + + get reasoningText() { + return this.finalStep.reasoningText; + } + + get reasoning() { + return this.finalStep.reasoning; + } + + get toolCalls() { + return this.finalStep.toolCalls; + } + + get staticToolCalls() { + return this.finalStep.staticToolCalls; + } + + get dynamicToolCalls() { + return this.finalStep.dynamicToolCalls; + } + + get toolResults() { + return this.finalStep.toolResults; + } + + get staticToolResults() { + return this.finalStep.staticToolResults; + } + + get dynamicToolResults() { + return this.finalStep.dynamicToolResults; + } + + get sources() { + return this.finalStep.sources; + } + + get finishReason() { + return this.finalStep.finishReason; + } + + get rawFinishReason() { + return this.finalStep.rawFinishReason; + } + + get warnings() { + return this.finalStep.warnings; + } + + get providerMetadata() { + return this.finalStep.providerMetadata; + } + + get response() { + return this.finalStep.response; + } + + get request() { + return this.finalStep.request; + } + + get usage() { + return this.finalStep.usage; + } + + get experimental_output() { + return this.output; + } + + get output() { + if (this._output == null) { + throw new NoOutputGeneratedError(); + } + + return this._output; + } +} + +function asToolCalls(content: Array) { + const parts = content.filter( + (part): part is LanguageModelV3ToolCall => part.type === 'tool-call', + ); + + if (parts.length === 0) { + return undefined; + } + + return parts.map(toolCall => ({ + toolCallId: toolCall.toolCallId, + toolName: toolCall.toolName, + input: toolCall.input, + })); +} + +function asContent({ + content, + toolCalls, + toolOutputs, + toolApprovalRequests, + tools, +}: { + content: Array; + toolCalls: Array>; + toolOutputs: Array>; + toolApprovalRequests: Array>; + tools: TOOLS | undefined; +}): Array> { + const contentParts: Array> = []; + + for (const part of content) { + switch (part.type) { + case 'text': + case 'reasoning': + case 'source': + contentParts.push(part); + break; + + case 'file': { + contentParts.push({ + type: 'file' as const, + file: new DefaultGeneratedFile(part), + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + }); + break; + } + + case 'tool-call': { + contentParts.push( + toolCalls.find(toolCall => toolCall.toolCallId === part.toolCallId)!, + ); + break; + } + + case 'tool-result': { + const toolCall = toolCalls.find( + toolCall => toolCall.toolCallId === part.toolCallId, + ); + + // Handle deferred results for provider-executed tools (e.g., programmatic tool calling). + // When a server tool (like code_execution) triggers a client tool, the server tool's + // result may be deferred to a later turn. In this case, there's no matching tool-call + // in the current response. + if (toolCall == null) { + const tool = tools?.[part.toolName]; + const supportsDeferredResults = + tool?.type === 'provider' && tool.supportsDeferredResults; + + if (!supportsDeferredResults) { + throw new Error(`Tool call ${part.toolCallId} not found.`); + } + + // Create tool result without tool call input (deferred result) + if (part.isError) { + contentParts.push({ + type: 'tool-error' as const, + toolCallId: part.toolCallId, + toolName: part.toolName as keyof TOOLS & string, + input: undefined, + error: part.result, + providerExecuted: true, + dynamic: part.dynamic, + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + } as TypedToolError); + } else { + contentParts.push({ + type: 'tool-result' as const, + toolCallId: part.toolCallId, + toolName: part.toolName as keyof TOOLS & string, + input: undefined, + output: part.result, + providerExecuted: true, + dynamic: part.dynamic, + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + } as TypedToolResult); + } + break; + } + + if (part.isError) { + contentParts.push({ + type: 'tool-error' as const, + toolCallId: part.toolCallId, + toolName: part.toolName as keyof TOOLS & string, + input: toolCall.input, + error: part.result, + providerExecuted: true, + dynamic: toolCall.dynamic, + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + } as TypedToolError); + } else { + contentParts.push({ + type: 'tool-result' as const, + toolCallId: part.toolCallId, + toolName: part.toolName as keyof TOOLS & string, + input: toolCall.input, + output: part.result, + providerExecuted: true, + dynamic: toolCall.dynamic, + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + } as TypedToolResult); + } + break; + } + + case 'tool-approval-request': { + const toolCall = toolCalls.find( + toolCall => toolCall.toolCallId === part.toolCallId, + ); + + if (toolCall == null) { + throw new ToolCallNotFoundForApprovalError({ + toolCallId: part.toolCallId, + approvalId: part.approvalId, + }); + } + + contentParts.push({ + type: 'tool-approval-request' as const, + approvalId: part.approvalId, + toolCall, + }); + break; + } + } + } + + return [...contentParts, ...toolOutputs, ...toolApprovalRequests]; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/generated-file.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/generated-file.ts new file mode 100644 index 000000000..9ccd0ca80 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/generated-file.ts @@ -0,0 +1,70 @@ +import { + convertBase64ToUint8Array, + convertUint8ArrayToBase64, +} from '@ai-sdk/provider-utils'; + +/** + * A generated file. + */ +export interface GeneratedFile { + /** + * File as a base64 encoded string. + */ + readonly base64: string; + + /** + * File as a Uint8Array. + */ + readonly uint8Array: Uint8Array; + + /** + * The IANA media type of the file. + * + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + readonly mediaType: string; +} + +export class DefaultGeneratedFile implements GeneratedFile { + private base64Data: string | undefined; + private uint8ArrayData: Uint8Array | undefined; + + readonly mediaType: string; + + constructor({ + data, + mediaType, + }: { + data: string | Uint8Array; + mediaType: string; + }) { + const isUint8Array = data instanceof Uint8Array; + this.base64Data = isUint8Array ? undefined : data; + this.uint8ArrayData = isUint8Array ? data : undefined; + this.mediaType = mediaType; + } + + // lazy conversion with caching to avoid unnecessary conversion overhead: + get base64() { + if (this.base64Data == null) { + this.base64Data = convertUint8ArrayToBase64(this.uint8ArrayData!); + } + return this.base64Data; + } + + // lazy conversion with caching to avoid unnecessary conversion overhead: + get uint8Array() { + if (this.uint8ArrayData == null) { + this.uint8ArrayData = convertBase64ToUint8Array(this.base64Data!); + } + return this.uint8ArrayData; + } +} + +export class DefaultGeneratedFileWithType extends DefaultGeneratedFile { + readonly type = 'file'; + + constructor(options: { data: string | Uint8Array; mediaType: string }) { + super(options); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/index.ts new file mode 100644 index 000000000..b1e3e7815 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/index.ts @@ -0,0 +1,74 @@ +export { + generateText, + type GenerateTextOnFinishCallback, + type GenerateTextOnStartCallback, + type GenerateTextOnStepStartCallback, + type GenerateTextOnStepFinishCallback, + type GenerateTextOnToolCallStartCallback, + type GenerateTextOnToolCallFinishCallback, +} from './generate-text'; +export type { ContentPart } from './content-part'; +export type { GenerateTextResult } from './generate-text-result'; +export { + DefaultGeneratedFile, + type GeneratedFile as Experimental_GeneratedImage, // Image for backwards compatibility, TODO remove in v7 + type GeneratedFile, +} from './generated-file'; +export * as Output from './output'; +export type { + InferCompleteOutput as InferGenerateOutput, + InferPartialOutput as InferStreamOutput, +} from './output-utils'; +export type { PrepareStepFunction, PrepareStepResult } from './prepare-step'; +export { pruneMessages } from './prune-messages'; +export type { ReasoningOutput } from './reasoning-output'; +export { smoothStream, type ChunkDetector } from './smooth-stream'; +export type { StepResult } from './step-result'; +export { hasToolCall, stepCountIs, type StopCondition } from './stop-condition'; +export { + streamText, + type StreamTextOnChunkCallback, + type StreamTextOnErrorCallback, + type StreamTextOnFinishCallback, + type StreamTextOnStartCallback, + type StreamTextOnStepFinishCallback, + type StreamTextOnStepStartCallback, + type StreamTextOnToolCallFinishCallback, + type StreamTextOnToolCallStartCallback, + type StreamTextTransform, +} from './stream-text'; +export type { + StreamTextResult, + TextStreamPart, + UIMessageStreamOptions, +} from './stream-text-result'; +export type { ToolApprovalRequestOutput } from './tool-approval-request-output'; +export type { + DynamicToolCall, + StaticToolCall, + TypedToolCall, +} from './tool-call'; +export type { ToolCallRepairFunction } from './tool-call-repair-function'; +export type { + DynamicToolError, + StaticToolError, + TypedToolError, +} from './tool-error'; +export type { + StaticToolOutputDenied, + TypedToolOutputDenied, +} from './tool-output-denied'; +export type { + DynamicToolResult, + StaticToolResult, + TypedToolResult, +} from './tool-result'; +export type { ToolSet } from './tool-set'; +export type { + OnFinishEvent, + OnStartEvent, + OnStepFinishEvent, + OnStepStartEvent, + OnToolCallFinishEvent, + OnToolCallStartEvent, +} from './callback-events'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/is-approval-needed.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/is-approval-needed.ts new file mode 100644 index 000000000..834bc3b39 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/is-approval-needed.ts @@ -0,0 +1,29 @@ +import { ModelMessage } from '@ai-sdk/provider-utils'; +import { TypedToolCall } from './tool-call'; +import { ToolSet } from './tool-set'; + +export async function isApprovalNeeded({ + tool, + toolCall, + messages, + experimental_context, +}: { + tool: TOOLS[keyof TOOLS]; + toolCall: TypedToolCall; + messages: ModelMessage[]; + experimental_context: unknown; +}) { + if (tool.needsApproval == null) { + return false; + } + + if (typeof tool.needsApproval === 'boolean') { + return tool.needsApproval; + } + + return await tool.needsApproval(toolCall.input, { + toolCallId: toolCall.toolCallId, + messages, + experimental_context, + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/output-utils.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/output-utils.ts new file mode 100644 index 000000000..b79209719 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/output-utils.ts @@ -0,0 +1,23 @@ +import { Output } from './output'; + +/** + * Infers the complete output type from the output specification. + */ +export type InferCompleteOutput = + OUTPUT extends Output + ? COMPLETE_OUTPUT + : never; + +/** + * Infers the partial output type from the output specification. + */ +export type InferPartialOutput = + OUTPUT extends Output + ? PARTIAL_OUTPUT + : never; + +/** + * Infers the element type from an array output specification. + */ +export type InferElementOutput = + OUTPUT extends Output ? ELEMENT : never; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/output.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/output.ts new file mode 100644 index 000000000..d1fa439ad --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/output.ts @@ -0,0 +1,590 @@ +import { + JSONValue, + LanguageModelV3CallOptions, + TypeValidationError, +} from '@ai-sdk/provider'; +import { + asSchema, + FlexibleSchema, + resolve, + safeParseJSON, + safeValidateTypes, +} from '@ai-sdk/provider-utils'; +import { NoObjectGeneratedError } from '../error/no-object-generated-error'; +import { FinishReason } from '../types/language-model'; +import { LanguageModelResponseMetadata } from '../types/language-model-response-metadata'; +import { LanguageModelUsage } from '../types/usage'; +import { DeepPartial } from '../util/deep-partial'; +import { parsePartialJson } from '../util/parse-partial-json'; +import { EnrichedStreamPart } from './stream-text'; + +export interface Output { + /** + * The name of the output mode. + */ + name: string; + + /** + * The response format to use for the model. + */ + responseFormat: PromiseLike; + + /** + * Parses the complete output of the model. + */ + parseCompleteOutput( + options: { text: string }, + context: { + response: LanguageModelResponseMetadata; + usage: LanguageModelUsage; + finishReason: FinishReason; + }, + ): Promise; + + /** + * Parses the partial output of the model. + */ + parsePartialOutput(options: { + text: string; + }): Promise<{ partial: PARTIAL } | undefined>; + + /** + * Creates a stream transform that emits individual elements as they complete. + */ + createElementStreamTransform(): + | TransformStream, ELEMENT> + | undefined; +} + +/** + * Output specification for text generation. + * This is the default output mode that generates plain text. + * + * @returns An output specification for generating text. + */ +export const text = (): Output => ({ + name: 'text', + responseFormat: Promise.resolve({ type: 'text' }), + + async parseCompleteOutput({ text }: { text: string }) { + return text; + }, + + async parsePartialOutput({ text }: { text: string }) { + return { partial: text }; + }, + + createElementStreamTransform() { + return undefined; + }, +}); + +/** + * Output specification for typed object generation using schemas. + * When the model generates a text response, it will return an object that matches the schema. + * + * @param schema - The schema of the object to generate. + * @param name - Optional name of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema name. + * @param description - Optional description of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema description. + * + * @returns An output specification for generating objects with the specified schema. + */ +export const object = ({ + schema: inputSchema, + name, + description, +}: { + schema: FlexibleSchema; + /** + * Optional name of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. via tool or schema name. + */ + name?: string; + /** + * Optional description of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. via tool or schema description. + */ + description?: string; +}): Output, never> => { + const schema = asSchema(inputSchema); + + return { + name: 'object', + + responseFormat: resolve(schema.jsonSchema).then(jsonSchema => ({ + type: 'json' as const, + schema: jsonSchema, + ...(name != null && { name }), + ...(description != null && { description }), + })), + + async parseCompleteOutput( + { text }: { text: string }, + context: { + response: LanguageModelResponseMetadata; + usage: LanguageModelUsage; + finishReason: FinishReason; + }, + ) { + const parseResult = await safeParseJSON({ text }); + + if (!parseResult.success) { + throw new NoObjectGeneratedError({ + message: 'No object generated: could not parse the response.', + cause: parseResult.error, + text, + response: context.response, + usage: context.usage, + finishReason: context.finishReason, + }); + } + + const validationResult = await safeValidateTypes({ + value: parseResult.value, + schema, + }); + + if (!validationResult.success) { + throw new NoObjectGeneratedError({ + message: 'No object generated: response did not match schema.', + cause: validationResult.error, + text, + response: context.response, + usage: context.usage, + finishReason: context.finishReason, + }); + } + + return validationResult.value; + }, + + async parsePartialOutput({ text }: { text: string }) { + const result = await parsePartialJson(text); + + switch (result.state) { + case 'failed-parse': + case 'undefined-input': { + return undefined; + } + + case 'repaired-parse': + case 'successful-parse': { + return { + // Note: currently no validation of partial results: + partial: result.value as DeepPartial, + }; + } + } + }, + + createElementStreamTransform() { + return undefined; + }, + }; +}; + +/** + * Output specification for array generation. + * When the model generates a text response, it will return an array of elements. + * + * @param element - The schema of the array elements to generate. + * @param name - Optional name of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema name. + * @param description - Optional description of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema description. + * + * @returns An output specification for generating an array of elements. + */ +export const array = ({ + element: inputElementSchema, + name, + description, +}: { + element: FlexibleSchema; + /** + * Optional name of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. via tool or schema name. + */ + name?: string; + /** + * Optional description of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. via tool or schema description. + */ + description?: string; +}): Output, Array, ELEMENT> => { + const elementSchema = asSchema(inputElementSchema); + + return { + name: 'array', + + // JSON schema that describes an array of elements: + responseFormat: resolve(elementSchema.jsonSchema).then(jsonSchema => { + // remove $schema from schema.jsonSchema: + const { $schema, ...itemSchema } = jsonSchema; + + return { + type: 'json' as const, + schema: { + $schema: 'http://json-schema.org/draft-07/schema#', + type: 'object', + properties: { + elements: { type: 'array', items: itemSchema }, + }, + required: ['elements'], + additionalProperties: false, + }, + ...(name != null && { name }), + ...(description != null && { description }), + }; + }), + + async parseCompleteOutput( + { text }: { text: string }, + context: { + response: LanguageModelResponseMetadata; + usage: LanguageModelUsage; + finishReason: FinishReason; + }, + ) { + const parseResult = await safeParseJSON({ text }); + + if (!parseResult.success) { + throw new NoObjectGeneratedError({ + message: 'No object generated: could not parse the response.', + cause: parseResult.error, + text, + response: context.response, + usage: context.usage, + finishReason: context.finishReason, + }); + } + + const outerValue = parseResult.value; + + if ( + outerValue == null || + typeof outerValue !== 'object' || + !('elements' in outerValue) || + !Array.isArray(outerValue.elements) + ) { + throw new NoObjectGeneratedError({ + message: 'No object generated: response did not match schema.', + cause: new TypeValidationError({ + value: outerValue, + cause: 'response must be an object with an elements array', + }), + text, + response: context.response, + usage: context.usage, + finishReason: context.finishReason, + }); + } + + for (const element of outerValue.elements) { + const validationResult = await safeValidateTypes({ + value: element, + schema: elementSchema, + }); + + if (!validationResult.success) { + throw new NoObjectGeneratedError({ + message: 'No object generated: response did not match schema.', + cause: validationResult.error, + text, + response: context.response, + usage: context.usage, + finishReason: context.finishReason, + }); + } + } + + return outerValue.elements as Array; + }, + + async parsePartialOutput({ text }: { text: string }) { + const result = await parsePartialJson(text); + + switch (result.state) { + case 'failed-parse': + case 'undefined-input': { + return undefined; + } + + case 'repaired-parse': + case 'successful-parse': { + const outerValue = result.value; + + // no parsable elements array + if ( + outerValue == null || + typeof outerValue !== 'object' || + !('elements' in outerValue) || + !Array.isArray(outerValue.elements) + ) { + return undefined; + } + + const rawElements = + result.state === 'repaired-parse' && outerValue.elements.length > 0 + ? outerValue.elements.slice(0, -1) + : outerValue.elements; + + const parsedElements: Array = []; + for (const rawElement of rawElements) { + const validationResult = await safeValidateTypes({ + value: rawElement, + schema: elementSchema, + }); + + if (validationResult.success) { + parsedElements.push(validationResult.value); + } + } + + return { partial: parsedElements }; + } + } + }, + + createElementStreamTransform() { + let publishedElements = 0; + + return new TransformStream< + EnrichedStreamPart>, + ELEMENT + >({ + transform({ partialOutput }, controller) { + if (partialOutput != null) { + // Only enqueue new elements that haven't been published yet + for ( + ; + publishedElements < partialOutput.length; + publishedElements++ + ) { + controller.enqueue(partialOutput[publishedElements]); + } + } + }, + }); + }, + }; +}; + +/** + * Output specification for choice generation. + * When the model generates a text response, it will return a one of the choice options. + * + * @param options - The available choices. + * @param name - Optional name of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema name. + * @param description - Optional description of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema description. + * + * @returns An output specification for generating a choice. + */ +export const choice = ({ + options: choiceOptions, + name, + description, +}: { + options: Array; + /** + * Optional name of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. via tool or schema name. + */ + name?: string; + /** + * Optional description of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. via tool or schema description. + */ + description?: string; +}): Output => { + return { + name: 'choice', + + // JSON schema that describes an enumeration: + responseFormat: Promise.resolve({ + type: 'json', + schema: { + $schema: 'http://json-schema.org/draft-07/schema#', + type: 'object', + properties: { + result: { type: 'string', enum: choiceOptions }, + }, + required: ['result'], + additionalProperties: false, + }, + ...(name != null && { name }), + ...(description != null && { description }), + } as const), + + async parseCompleteOutput( + { text }: { text: string }, + context: { + response: LanguageModelResponseMetadata; + usage: LanguageModelUsage; + finishReason: FinishReason; + }, + ) { + const parseResult = await safeParseJSON({ text }); + + if (!parseResult.success) { + throw new NoObjectGeneratedError({ + message: 'No object generated: could not parse the response.', + cause: parseResult.error, + text, + response: context.response, + usage: context.usage, + finishReason: context.finishReason, + }); + } + + const outerValue = parseResult.value; + + if ( + outerValue == null || + typeof outerValue !== 'object' || + !('result' in outerValue) || + typeof outerValue.result !== 'string' || + !choiceOptions.includes(outerValue.result as any) + ) { + throw new NoObjectGeneratedError({ + message: 'No object generated: response did not match schema.', + cause: new TypeValidationError({ + value: outerValue, + cause: 'response must be an object that contains a choice value.', + }), + text, + response: context.response, + usage: context.usage, + finishReason: context.finishReason, + }); + } + + return outerValue.result as CHOICE; + }, + + async parsePartialOutput({ text }: { text: string }) { + const result = await parsePartialJson(text); + + switch (result.state) { + case 'failed-parse': + case 'undefined-input': { + return undefined; + } + + case 'repaired-parse': + case 'successful-parse': { + const outerValue = result.value; + + if ( + outerValue == null || + typeof outerValue !== 'object' || + !('result' in outerValue) || + typeof outerValue.result !== 'string' + ) { + return undefined; + } + + // list of potential matches. + const potentialMatches = choiceOptions.filter(choiceOption => + choiceOption.startsWith(outerValue.result as string), + ); + + if (result.state === 'successful-parse') { + // successful parse: exact choice value + return potentialMatches.includes(outerValue.result as any) + ? { partial: outerValue.result as CHOICE } + : undefined; + } else { + // repaired parse: only return if not ambiguous + return potentialMatches.length === 1 + ? { partial: potentialMatches[0] as CHOICE } + : undefined; + } + } + } + }, + + createElementStreamTransform() { + return undefined; + }, + }; +}; + +/** + * Output specification for unstructured JSON generation. + * When the model generates a text response, it will return a JSON object. + * + * @param name - Optional name of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema name. + * @param description - Optional description of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema description. + * + * @returns An output specification for generating JSON. + */ +export const json = ({ + name, + description, +}: { + /** + * Optional name of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. via tool or schema name. + */ + name?: string; + /** + * Optional description of the output that should be generated. + * Used by some providers for additional LLM guidance, e.g. via tool or schema description. + */ + description?: string; +} = {}): Output => { + return { + name: 'json', + + responseFormat: Promise.resolve({ + type: 'json' as const, + ...(name != null && { name }), + ...(description != null && { description }), + }), + + async parseCompleteOutput( + { text }: { text: string }, + context: { + response: LanguageModelResponseMetadata; + usage: LanguageModelUsage; + finishReason: FinishReason; + }, + ) { + const parseResult = await safeParseJSON({ text }); + + if (!parseResult.success) { + throw new NoObjectGeneratedError({ + message: 'No object generated: could not parse the response.', + cause: parseResult.error, + text, + response: context.response, + usage: context.usage, + finishReason: context.finishReason, + }); + } + + return parseResult.value; + }, + + async parsePartialOutput({ text }: { text: string }) { + const result = await parsePartialJson(text); + + switch (result.state) { + case 'failed-parse': + case 'undefined-input': { + return undefined; + } + + case 'repaired-parse': + case 'successful-parse': { + return result.value === undefined + ? undefined + : { partial: result.value }; + } + } + }, + + createElementStreamTransform() { + return undefined; + }, + }; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/parse-tool-call.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/parse-tool-call.ts new file mode 100644 index 000000000..3e0b4d7f1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/parse-tool-call.ts @@ -0,0 +1,188 @@ +import { LanguageModelV3ToolCall } from '@ai-sdk/provider'; +import { + asSchema, + ModelMessage, + safeParseJSON, + safeValidateTypes, + SystemModelMessage, +} from '@ai-sdk/provider-utils'; +import { InvalidToolInputError } from '../error/invalid-tool-input-error'; +import { NoSuchToolError } from '../error/no-such-tool-error'; +import { ToolCallRepairError } from '../error/tool-call-repair-error'; +import { DynamicToolCall, TypedToolCall } from './tool-call'; +import { ToolCallRepairFunction } from './tool-call-repair-function'; +import { ToolSet } from './tool-set'; + +export async function parseToolCall({ + toolCall, + tools, + repairToolCall, + system, + messages, +}: { + toolCall: LanguageModelV3ToolCall; + tools: TOOLS | undefined; + repairToolCall: ToolCallRepairFunction | undefined; + system: string | SystemModelMessage | Array | undefined; + messages: ModelMessage[]; +}): Promise> { + try { + if (tools == null) { + // provider-executed dynamic tools are not part of our list of tools: + if (toolCall.providerExecuted && toolCall.dynamic) { + return await parseProviderExecutedDynamicToolCall(toolCall); + } + + throw new NoSuchToolError({ toolName: toolCall.toolName }); + } + + try { + return await doParseToolCall({ toolCall, tools }); + } catch (error) { + if ( + repairToolCall == null || + !( + NoSuchToolError.isInstance(error) || + InvalidToolInputError.isInstance(error) + ) + ) { + throw error; + } + + let repairedToolCall: LanguageModelV3ToolCall | null = null; + + try { + repairedToolCall = await repairToolCall({ + toolCall, + tools, + inputSchema: async ({ toolName }) => { + const { inputSchema } = tools[toolName]; + return await asSchema(inputSchema).jsonSchema; + }, + system, + messages, + error, + }); + } catch (repairError) { + throw new ToolCallRepairError({ + cause: repairError, + originalError: error, + }); + } + + // no repaired tool call returned + if (repairedToolCall == null) { + throw error; + } + + return await doParseToolCall({ toolCall: repairedToolCall, tools }); + } + } catch (error) { + // use parsed input when possible + const parsedInput = await safeParseJSON({ text: toolCall.input }); + const input = parsedInput.success ? parsedInput.value : toolCall.input; + + // TODO AI SDK 6: special invalid tool call parts + return { + type: 'tool-call', + toolCallId: toolCall.toolCallId, + toolName: toolCall.toolName, + input, + dynamic: true, + invalid: true, + error, + title: tools?.[toolCall.toolName]?.title, + providerExecuted: toolCall.providerExecuted, + providerMetadata: toolCall.providerMetadata, + }; + } +} + +async function parseProviderExecutedDynamicToolCall( + toolCall: LanguageModelV3ToolCall, +): Promise { + const parseResult = + toolCall.input.trim() === '' + ? { success: true as const, value: {} } + : await safeParseJSON({ text: toolCall.input }); + + if (parseResult.success === false) { + throw new InvalidToolInputError({ + toolName: toolCall.toolName, + toolInput: toolCall.input, + cause: parseResult.error, + }); + } + + return { + type: 'tool-call', + toolCallId: toolCall.toolCallId, + toolName: toolCall.toolName, + input: parseResult.value, + providerExecuted: true, + dynamic: true, + providerMetadata: toolCall.providerMetadata, + }; +} + +async function doParseToolCall({ + toolCall, + tools, +}: { + toolCall: LanguageModelV3ToolCall; + tools: TOOLS; +}): Promise> { + const toolName = toolCall.toolName as keyof TOOLS & string; + + const tool = tools[toolName]; + + if (tool == null) { + // provider-executed dynamic tools are not part of our list of tools: + if (toolCall.providerExecuted && toolCall.dynamic) { + return await parseProviderExecutedDynamicToolCall(toolCall); + } + + throw new NoSuchToolError({ + toolName: toolCall.toolName, + availableTools: Object.keys(tools), + }); + } + + const schema = asSchema(tool.inputSchema); + + // when the tool call has no arguments, we try passing an empty object to the schema + // (many LLMs generate empty strings for tool calls with no arguments) + const parseResult = + toolCall.input.trim() === '' + ? await safeValidateTypes({ value: {}, schema }) + : await safeParseJSON({ text: toolCall.input, schema }); + + if (parseResult.success === false) { + throw new InvalidToolInputError({ + toolName, + toolInput: toolCall.input, + cause: parseResult.error, + }); + } + + return tool.type === 'dynamic' + ? { + type: 'tool-call', + toolCallId: toolCall.toolCallId, + toolName: toolCall.toolName, + input: parseResult.value, + providerExecuted: toolCall.providerExecuted, + providerMetadata: toolCall.providerMetadata, + dynamic: true, + title: tool.title, + } + : { + type: 'tool-call', + toolCallId: toolCall.toolCallId, + toolName, + input: parseResult.value, + providerExecuted: toolCall.providerExecuted, + providerMetadata: toolCall.providerMetadata, + title: tool.title, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/prepare-step.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/prepare-step.ts new file mode 100644 index 000000000..f3f367094 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/prepare-step.ts @@ -0,0 +1,103 @@ +import { + ModelMessage, + ProviderOptions, + SystemModelMessage, + Tool, +} from '@ai-sdk/provider-utils'; +import { LanguageModel, ToolChoice } from '../types/language-model'; +import { StepResult } from './step-result'; + +/** + * Function that you can use to provide different settings for a step. + * + * @param options - The options for the step. + * @param options.steps - The steps that have been executed so far. + * @param options.stepNumber - The number of the step that is being executed. + * @param options.model - The model that is being used. + * @param options.messages - The messages that will be sent to the model for the current step. + * @param options.experimental_context - The context passed via the experimental_context setting (experimental). + * + * @returns An object that contains the settings for the step. + * If you return undefined (or for undefined settings), the settings from the outer level will be used. + */ +export type PrepareStepFunction< + TOOLS extends Record = Record, +> = (options: { + /** + * The steps that have been executed so far. + */ + steps: Array>>; + + /** + * The number of the step that is being executed. + */ + stepNumber: number; + + /** + * The model instance that is being used for this step. + */ + model: LanguageModel; + + /** + * The messages that will be sent to the model for the current step. + */ + messages: Array; + + /** + * The context passed via the experimental_context setting (experimental). + */ + experimental_context: unknown; +}) => PromiseLike> | PrepareStepResult; + +/** + * The result type returned by a {@link PrepareStepFunction}, + * allowing per-step overrides of model, tools, or messages. + */ +export type PrepareStepResult< + TOOLS extends Record = Record, +> = + | { + /** + * Optionally override which LanguageModel instance is used for this step. + */ + model?: LanguageModel; + + /** + * Optionally set which tool the model must call, or provide tool call configuration + * for this step. + */ + toolChoice?: ToolChoice>; + + /** + * If provided, only these tools are enabled/available for this step. + */ + activeTools?: Array>; + + /** + * Optionally override the system message(s) sent to the model for this step. + */ + system?: string | SystemModelMessage | Array; + + /** + * Optionally override the full set of messages sent to the model + * for this step. + */ + messages?: Array; + + /** + * Context that is passed into tool execution. Experimental. + * + * Changing the context will affect the context in this step + * and all subsequent steps. + */ + experimental_context?: unknown; + + /** + * Additional provider-specific options for this step. + * + * Can be used to pass provider-specific configuration such as + * container IDs for Anthropic's code execution. + */ + providerOptions?: ProviderOptions; + } + | undefined; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/prune-messages.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/prune-messages.ts new file mode 100644 index 000000000..953cc3ea7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/prune-messages.ts @@ -0,0 +1,167 @@ +import { + AssistantModelMessage, + ModelMessage, + ToolModelMessage, +} from '@ai-sdk/provider-utils'; + +/** + * Prunes model messages from a list of model messages. + * + * @param messages - The list of model messages to prune. + * @param reasoning - How to remove reasoning content from assistant messages. Default is `'none'`. + * @param toolCalls - How to prune tool call/results/approval content. Default is `[]`. + * @param emptyMessages - Whether to keep or remove messages whose content is empty after pruning. Default is `'remove'`. + * + * @returns The pruned list of model messages. + */ +export function pruneMessages({ + messages, + reasoning = 'none', + toolCalls = [], + emptyMessages = 'remove', +}: { + messages: ModelMessage[]; + reasoning?: 'all' | 'before-last-message' | 'none'; + toolCalls?: + | 'all' + | 'before-last-message' + | `before-last-${number}-messages` + | 'none' + | Array<{ + type: 'all' | 'before-last-message' | `before-last-${number}-messages`; + tools?: string[]; + }>; + emptyMessages?: 'keep' | 'remove'; +}): ModelMessage[] { + // filter reasoning parts: + if (reasoning === 'all' || reasoning === 'before-last-message') { + messages = messages.map((message, messageIndex) => { + if ( + message.role !== 'assistant' || + typeof message.content === 'string' || + (reasoning === 'before-last-message' && + messageIndex === messages.length - 1) + ) { + return message; + } + + return { + ...message, + content: message.content.filter(part => part.type !== 'reasoning'), + }; + }); + } + + // filter tool calls, results, errors, and approvals: + if (toolCalls === 'none') { + toolCalls = []; + } else if (toolCalls === 'all') { + toolCalls = [{ type: 'all' }]; + } else if (toolCalls === 'before-last-message') { + toolCalls = [{ type: 'before-last-message' }]; + } else if (typeof toolCalls === 'string') { + toolCalls = [{ type: toolCalls }]; + } + + for (const toolCall of toolCalls) { + // determine how many trailing messages to keep: + const keepLastMessagesCount = + toolCall.type === 'all' + ? undefined + : toolCall.type === 'before-last-message' + ? 1 + : Number( + toolCall.type + .slice('before-last-'.length) + .slice(0, -'-messages'.length), + ); + + // scan kept messages to identify tool calls and approvals that need to be kept: + const keptToolCallIds: Set = new Set(); + const keptApprovalIds: Set = new Set(); + + if (keepLastMessagesCount != null) { + for (const message of messages.slice(-keepLastMessagesCount)) { + if ( + (message.role === 'assistant' || message.role === 'tool') && + typeof message.content !== 'string' + ) { + for (const part of message.content) { + if (part.type === 'tool-call' || part.type === 'tool-result') { + keptToolCallIds.add(part.toolCallId); + } else if ( + part.type === 'tool-approval-request' || + part.type === 'tool-approval-response' + ) { + keptApprovalIds.add(part.approvalId); + } + } + } + } + } + + messages = messages.map((message, messageIndex) => { + if ( + (message.role !== 'assistant' && message.role !== 'tool') || + typeof message.content === 'string' || + (keepLastMessagesCount && + messageIndex >= messages.length - keepLastMessagesCount) + ) { + return message; + } + + const toolCallIdToToolName: Record = {}; + const approvalIdToToolName: Record = {}; + + return { + ...message, + content: message.content.filter(part => { + // keep non-tool parts: + if ( + part.type !== 'tool-call' && + part.type !== 'tool-result' && + part.type !== 'tool-approval-request' && + part.type !== 'tool-approval-response' + ) { + return true; + } + + // track tool calls and approvals: + if (part.type === 'tool-call') { + toolCallIdToToolName[part.toolCallId] = part.toolName; + } else if (part.type === 'tool-approval-request') { + approvalIdToToolName[part.approvalId] = + toolCallIdToToolName[part.toolCallId]; + } + + // keep parts that are associated with a tool call or approval that needs to be kept: + if ( + ((part.type === 'tool-call' || part.type === 'tool-result') && + keptToolCallIds.has(part.toolCallId)) || + ((part.type === 'tool-approval-request' || + part.type === 'tool-approval-response') && + keptApprovalIds.has(part.approvalId)) + ) { + return true; + } + + // keep parts that are not associated with a tool that should be removed: + return ( + toolCall.tools != null && + !toolCall.tools.includes( + part.type === 'tool-call' || part.type === 'tool-result' + ? part.toolName + : approvalIdToToolName[part.approvalId], + ) + ); + }), + } as AssistantModelMessage | ToolModelMessage; + }); + } + + if (emptyMessages === 'remove') { + messages = messages.filter(message => message.content.length > 0); + } + + return messages; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/reasoning-output.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/reasoning-output.ts new file mode 100644 index 000000000..85c03103b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/reasoning-output.ts @@ -0,0 +1,20 @@ +import { ProviderMetadata } from '../types/provider-metadata'; + +/** + * Reasoning output of a text generation. It contains a reasoning. + */ +export interface ReasoningOutput { + type: 'reasoning'; + + /** + * The reasoning text. + */ + text: string; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerMetadata?: ProviderMetadata; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/reasoning.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/reasoning.ts new file mode 100644 index 000000000..81a5e4729 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/reasoning.ts @@ -0,0 +1,8 @@ +import { ReasoningPart } from '@ai-sdk/provider-utils'; + +export function asReasoningText( + reasoningParts: Array, +): string | undefined { + const reasoningText = reasoningParts.map(part => part.text).join(''); + return reasoningText.length > 0 ? reasoningText : undefined; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/response-message.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/response-message.ts new file mode 100644 index 000000000..b9ed2adc2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/response-message.ts @@ -0,0 +1,10 @@ +import { + AssistantModelMessage, + ToolModelMessage, +} from '@ai-sdk/provider-utils'; + +/** + * A message that was generated during the generation process. + * It can be either an assistant message or a tool message. + */ +export type ResponseMessage = AssistantModelMessage | ToolModelMessage; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/run-tools-transformation.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/run-tools-transformation.ts new file mode 100644 index 000000000..3ca22e452 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/run-tools-transformation.ts @@ -0,0 +1,448 @@ +import { LanguageModelV3StreamPart, SharedV3Warning } from '@ai-sdk/provider'; +import { + getErrorMessage, + IdGenerator, + ModelMessage, + SystemModelMessage, +} from '@ai-sdk/provider-utils'; +import { Tracer } from '@opentelemetry/api'; +import { ToolCallNotFoundForApprovalError } from '../error/tool-call-not-found-for-approval-error'; +import { TelemetrySettings } from '../telemetry/telemetry-settings'; +import { FinishReason, LanguageModelUsage, ProviderMetadata } from '../types'; +import { Source } from '../types/language-model'; +import { asLanguageModelUsage } from '../types/usage'; +import { executeToolCall } from './execute-tool-call'; +import { + StreamTextOnToolCallFinishCallback, + StreamTextOnToolCallStartCallback, +} from './stream-text'; +import { DefaultGeneratedFileWithType, GeneratedFile } from './generated-file'; +import { isApprovalNeeded } from './is-approval-needed'; +import { parseToolCall } from './parse-tool-call'; +import { ToolApprovalRequestOutput } from './tool-approval-request-output'; +import { TypedToolCall } from './tool-call'; +import { ToolCallRepairFunction } from './tool-call-repair-function'; +import { TypedToolError } from './tool-error'; +import { TypedToolResult } from './tool-result'; +import { ToolSet } from './tool-set'; + +export type SingleRequestTextStreamPart = + // Text blocks: + | { + type: 'text-start'; + providerMetadata?: ProviderMetadata; + id: string; + } + | { + type: 'text-delta'; + id: string; + providerMetadata?: ProviderMetadata; + delta: string; + } + | { + type: 'text-end'; + providerMetadata?: ProviderMetadata; + id: string; + } + + // Reasoning blocks: + | { + type: 'reasoning-start'; + providerMetadata?: ProviderMetadata; + id: string; + } + | { + type: 'reasoning-delta'; + id: string; + providerMetadata?: ProviderMetadata; + delta: string; + } + | { + type: 'reasoning-end'; + id: string; + providerMetadata?: ProviderMetadata; + } + + // Tool calls: + | { + type: 'tool-input-start'; + id: string; + toolName: string; + providerMetadata?: ProviderMetadata; + dynamic?: boolean; + title?: string; + } + | { + type: 'tool-input-delta'; + id: string; + delta: string; + providerMetadata?: ProviderMetadata; + } + | { + type: 'tool-input-end'; + id: string; + providerMetadata?: ProviderMetadata; + } + | ToolApprovalRequestOutput + + // Other types: + | ({ type: 'source' } & Source) + | { type: 'file'; file: GeneratedFile; providerMetadata?: ProviderMetadata } // different because of GeneratedFile object + | ({ type: 'tool-call' } & TypedToolCall) + | ({ type: 'tool-result' } & TypedToolResult) + | ({ type: 'tool-error' } & TypedToolError) + | { type: 'stream-start'; warnings: SharedV3Warning[] } + | { + type: 'response-metadata'; + id?: string; + timestamp?: Date; + modelId?: string; + } + | { + type: 'finish'; + finishReason: FinishReason; + rawFinishReason: string | undefined; + usage: LanguageModelUsage; + providerMetadata?: ProviderMetadata; + } + | { type: 'error'; error: unknown } + | { type: 'raw'; rawValue: unknown }; + +export function runToolsTransformation({ + tools, + generatorStream, + tracer, + telemetry, + system, + messages, + abortSignal, + repairToolCall, + experimental_context, + generateId, + stepNumber, + model, + onToolCallStart, + onToolCallFinish, +}: { + tools: TOOLS | undefined; + generatorStream: ReadableStream; + tracer: Tracer; + telemetry: TelemetrySettings | undefined; + system: string | SystemModelMessage | Array | undefined; + messages: ModelMessage[]; + abortSignal: AbortSignal | undefined; + repairToolCall: ToolCallRepairFunction | undefined; + experimental_context: unknown; + generateId: IdGenerator; + stepNumber?: number; + model?: { provider: string; modelId: string }; + onToolCallStart?: + | StreamTextOnToolCallStartCallback + | Array | undefined | null>; + onToolCallFinish?: + | StreamTextOnToolCallFinishCallback + | Array | undefined | null>; +}): ReadableStream> { + // tool results stream + let toolResultsStreamController: ReadableStreamDefaultController< + SingleRequestTextStreamPart + > | null = null; + const toolResultsStream = new ReadableStream< + SingleRequestTextStreamPart + >({ + start(controller) { + toolResultsStreamController = controller; + }, + }); + + // keep track of outstanding tool results for stream closing: + const outstandingToolResults = new Set(); + + // keep track of tool inputs for provider-side tool results + const toolInputs = new Map(); + + // keep track of parsed tool calls so provider-emitted approval requests can reference them + const toolCallsByToolCallId = new Map>(); + + let canClose = false; + let finishChunk: + | (SingleRequestTextStreamPart & { type: 'finish' }) + | undefined = undefined; + + function attemptClose() { + // close the tool results controller if no more outstanding tool calls + if (canClose && outstandingToolResults.size === 0) { + // we delay sending the finish chunk until all tool results (incl. delayed ones) + // are received to ensure that the frontend receives tool results before a message + // finish event arrives. + if (finishChunk != null) { + toolResultsStreamController!.enqueue(finishChunk); + } + + toolResultsStreamController!.close(); + } + } + + // forward stream + const forwardStream = new TransformStream< + LanguageModelV3StreamPart, + SingleRequestTextStreamPart + >({ + async transform( + chunk: LanguageModelV3StreamPart, + controller: TransformStreamDefaultController< + SingleRequestTextStreamPart + >, + ) { + const chunkType = chunk.type; + + switch (chunkType) { + // forward: + case 'stream-start': + case 'text-start': + case 'text-delta': + case 'text-end': + case 'reasoning-start': + case 'reasoning-delta': + case 'reasoning-end': + case 'tool-input-start': + case 'tool-input-delta': + case 'tool-input-end': + case 'source': + case 'response-metadata': + case 'error': + case 'raw': { + controller.enqueue(chunk); + break; + } + + case 'file': { + controller.enqueue({ + type: 'file', + file: new DefaultGeneratedFileWithType({ + data: chunk.data, + mediaType: chunk.mediaType, + }), + ...(chunk.providerMetadata != null + ? { providerMetadata: chunk.providerMetadata } + : {}), + }); + break; + } + + case 'finish': { + finishChunk = { + type: 'finish', + finishReason: chunk.finishReason.unified, + rawFinishReason: chunk.finishReason.raw, + usage: asLanguageModelUsage(chunk.usage), + providerMetadata: chunk.providerMetadata, + }; + break; + } + + case 'tool-approval-request': { + const toolCall = toolCallsByToolCallId.get(chunk.toolCallId); + if (toolCall == null) { + toolResultsStreamController!.enqueue({ + type: 'error', + error: new ToolCallNotFoundForApprovalError({ + toolCallId: chunk.toolCallId, + approvalId: chunk.approvalId, + }), + }); + break; + } + + controller.enqueue({ + type: 'tool-approval-request', + approvalId: chunk.approvalId, + toolCall, + }); + break; + } + + // process tool call: + case 'tool-call': { + try { + const toolCall = await parseToolCall({ + toolCall: chunk, + tools, + repairToolCall, + system, + messages, + }); + + toolCallsByToolCallId.set(toolCall.toolCallId, toolCall); + controller.enqueue(toolCall); + + if (toolCall.invalid) { + toolResultsStreamController!.enqueue({ + type: 'tool-error', + toolCallId: toolCall.toolCallId, + toolName: toolCall.toolName, + input: toolCall.input, + error: getErrorMessage(toolCall.error!), + dynamic: true, + title: toolCall.title, + }); + break; + } + + const tool = tools?.[toolCall.toolName]; + + if (tool == null) { + // ignore tool calls for tools that are not available, + // e.g. provider-executed dynamic tools + break; + } + + if (tool.onInputAvailable != null) { + await tool.onInputAvailable({ + input: toolCall.input, + toolCallId: toolCall.toolCallId, + messages, + abortSignal, + experimental_context, + }); + } + + if ( + await isApprovalNeeded({ + tool, + toolCall, + messages, + experimental_context, + }) + ) { + toolResultsStreamController!.enqueue({ + type: 'tool-approval-request', + approvalId: generateId(), + toolCall, + }); + break; + } + + toolInputs.set(toolCall.toolCallId, toolCall.input); + + // Only execute tools that are not provider-executed: + if (tool.execute != null && toolCall.providerExecuted !== true) { + const toolExecutionId = generateId(); // use our own id to guarantee uniqueness + outstandingToolResults.add(toolExecutionId); + + // Note: we don't await the tool execution here (by leaving out 'await' on recordSpan), + // because we want to process the next chunk as soon as possible. + // This is important for the case where the tool execution takes a long time. + executeToolCall({ + toolCall, + tools, + tracer, + telemetry, + messages, + abortSignal, + experimental_context, + stepNumber, + model, + onToolCallStart, + onToolCallFinish, + onPreliminaryToolResult: result => { + toolResultsStreamController!.enqueue(result); + }, + }) + .then(result => { + toolResultsStreamController!.enqueue(result); + }) + .catch(error => { + toolResultsStreamController!.enqueue({ + type: 'error', + error, + }); + }) + .finally(() => { + outstandingToolResults.delete(toolExecutionId); + attemptClose(); + }); + } + } catch (error) { + toolResultsStreamController!.enqueue({ type: 'error', error }); + } + + break; + } + + case 'tool-result': { + const toolName = chunk.toolName as keyof TOOLS & string; + + if (chunk.isError) { + toolResultsStreamController!.enqueue({ + type: 'tool-error', + toolCallId: chunk.toolCallId, + toolName, + input: toolInputs.get(chunk.toolCallId), + providerExecuted: true, + error: chunk.result, + dynamic: chunk.dynamic, + ...(chunk.providerMetadata != null + ? { providerMetadata: chunk.providerMetadata } + : {}), + } as TypedToolError); + } else { + controller.enqueue({ + type: 'tool-result', + toolCallId: chunk.toolCallId, + toolName, + input: toolInputs.get(chunk.toolCallId), + output: chunk.result, + providerExecuted: true, + dynamic: chunk.dynamic, + ...(chunk.providerMetadata != null + ? { providerMetadata: chunk.providerMetadata } + : {}), + } as TypedToolResult); + } + break; + } + + default: { + const _exhaustiveCheck: never = chunkType; + throw new Error(`Unhandled chunk type: ${_exhaustiveCheck}`); + } + } + }, + + flush() { + canClose = true; + attemptClose(); + }, + }); + + // combine the generator stream and the tool results stream + return new ReadableStream>({ + async start(controller) { + // need to wait for both pipes so there are no dangling promises that + // can cause uncaught promise rejections when the stream is aborted + return Promise.all([ + generatorStream.pipeThrough(forwardStream).pipeTo( + new WritableStream({ + write(chunk) { + controller.enqueue(chunk); + }, + close() { + // the generator stream controller is automatically closed when it's consumed + }, + }), + ), + toolResultsStream.pipeTo( + new WritableStream({ + write(chunk) { + controller.enqueue(chunk); + }, + close() { + controller.close(); + }, + }), + ), + ]); + }, + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/smooth-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/smooth-stream.ts new file mode 100644 index 000000000..64e50677b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/smooth-stream.ts @@ -0,0 +1,162 @@ +import { delay as originalDelay } from '@ai-sdk/provider-utils'; +import { SharedV3ProviderMetadata } from '@ai-sdk/provider'; +import { TextStreamPart } from './stream-text-result'; +import { ToolSet } from './tool-set'; +import { InvalidArgumentError } from '@ai-sdk/provider'; + +const CHUNKING_REGEXPS = { + word: /\S+\s+/m, + line: /\n+/m, +}; + +/** + * Detects the first chunk in a buffer. + * + * @param buffer - The buffer to detect the first chunk in. + * + * @returns The first detected chunk, or `undefined` if no chunk was detected. + */ +export type ChunkDetector = (buffer: string) => string | undefined | null; + +/** + * Smooths text and reasoning streaming output. + * + * @param delayInMs - The delay in milliseconds between each chunk. Defaults to 10ms. Can be set to `null` to skip the delay. + * @param chunking - Controls how the text is chunked for streaming. Use "word" to stream word by word (default), "line" to stream line by line, provide a custom RegExp pattern for custom chunking, provide an Intl.Segmenter for locale-aware word segmentation (recommended for CJK languages), or provide a custom ChunkDetector function. + * + * @returns A transform stream that smooths text streaming output. + */ +export function smoothStream({ + delayInMs = 10, + chunking = 'word', + _internal: { delay = originalDelay } = {}, +}: { + delayInMs?: number | null; + chunking?: 'word' | 'line' | RegExp | ChunkDetector | Intl.Segmenter; + /** + * Internal. For test use only. May change without notice. + */ + _internal?: { + delay?: (delayInMs: number | null) => Promise; + }; +} = {}): (options: { + tools: TOOLS; +}) => TransformStream, TextStreamPart> { + let detectChunk: ChunkDetector; + + // Check if chunking is an Intl.Segmenter (duck-typing for segment method) + if ( + chunking != null && + typeof chunking === 'object' && + 'segment' in chunking && + typeof chunking.segment === 'function' + ) { + const segmenter = chunking as Intl.Segmenter; + detectChunk = (buffer: string) => { + if (buffer.length === 0) return null; + const iterator = segmenter.segment(buffer)[Symbol.iterator](); + const first = iterator.next().value; + return first?.segment || null; + }; + } else if (typeof chunking === 'function') { + detectChunk = buffer => { + const match = chunking(buffer); + + if (match == null) { + return null; + } + + if (!match.length) { + throw new Error(`Chunking function must return a non-empty string.`); + } + + if (!buffer.startsWith(match)) { + throw new Error( + `Chunking function must return a match that is a prefix of the buffer. Received: "${match}" expected to start with "${buffer}"`, + ); + } + + return match; + }; + } else { + const chunkingRegex = + typeof chunking === 'string' + ? CHUNKING_REGEXPS[chunking] + : chunking instanceof RegExp + ? chunking + : undefined; + + if (chunkingRegex == null) { + throw new InvalidArgumentError({ + argument: 'chunking', + message: `Chunking must be "word", "line", a RegExp, an Intl.Segmenter, or a ChunkDetector function. Received: ${chunking}`, + }); + } + + detectChunk = buffer => { + const match = chunkingRegex.exec(buffer); + + if (!match) { + return null; + } + + return buffer.slice(0, match.index) + match?.[0]; + }; + } + + return () => { + let buffer = ''; + let id = ''; + let type: 'text-delta' | 'reasoning-delta' | undefined = undefined; + let providerMetadata: SharedV3ProviderMetadata | undefined = undefined; + + function flushBuffer( + controller: TransformStreamDefaultController>, + ) { + if (buffer.length > 0 && type !== undefined) { + controller.enqueue({ + type, + text: buffer, + id, + ...(providerMetadata != null ? { providerMetadata } : {}), + }); + buffer = ''; + providerMetadata = undefined; + } + } + + return new TransformStream, TextStreamPart>({ + async transform(chunk, controller) { + // Handle non-smoothable chunks: flush buffer and pass through + if (chunk.type !== 'text-delta' && chunk.type !== 'reasoning-delta') { + flushBuffer(controller); + controller.enqueue(chunk); + return; + } + + // Flush buffer when type or id changes + if ((chunk.type !== type || chunk.id !== id) && buffer.length > 0) { + flushBuffer(controller); + } + + buffer += chunk.text; + id = chunk.id; + type = chunk.type; + + // Preserve providerMetadata (e.g., Anthropic thinking signatures) + if (chunk.providerMetadata != null) { + providerMetadata = chunk.providerMetadata; + } + + let match; + + while ((match = detectChunk(buffer)) != null) { + controller.enqueue({ type, text: match, id }); + buffer = buffer.slice(match.length); + + await delay(delayInMs); + } + }, + }); + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/step-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/step-result.ts new file mode 100644 index 000000000..f1f8a3a41 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/step-result.ts @@ -0,0 +1,290 @@ +import { ReasoningPart } from '@ai-sdk/provider-utils'; +import { + CallWarning, + FinishReason, + LanguageModelRequestMetadata, + LanguageModelResponseMetadata, + ProviderMetadata, +} from '../types'; +import { Source } from '../types/language-model'; +import { LanguageModelUsage } from '../types/usage'; +import { ContentPart } from './content-part'; +import { GeneratedFile } from './generated-file'; +import { ResponseMessage } from './response-message'; +import { DynamicToolCall, StaticToolCall, TypedToolCall } from './tool-call'; +import { + DynamicToolResult, + StaticToolResult, + TypedToolResult, +} from './tool-result'; +import { ToolSet } from './tool-set'; + +/** + * The result of a single step in the generation process. + */ +export type StepResult = { + /** + * Zero-based index of this step. + */ + readonly stepNumber: number; + + /** + * Information about the model that produced this step. + */ + readonly model: { + /** The provider of the model. */ + readonly provider: string; + /** The ID of the model. */ + readonly modelId: string; + }; + + /** + * Identifier from telemetry settings for grouping related operations. + */ + readonly functionId: string | undefined; + + /** + * Additional metadata from telemetry settings. + */ + readonly metadata: Record | undefined; + + /** + * User-defined context object flowing through the generation. + * + * Experimental (can break in patch releases). + */ + readonly experimental_context: unknown; + + /** + * The content that was generated in the last step. + */ + readonly content: Array>; + + /** + * The generated text. + */ + readonly text: string; + + /** + * The reasoning that was generated during the generation. + */ + readonly reasoning: Array; + + /** + * The reasoning text that was generated during the generation. + */ + readonly reasoningText: string | undefined; + + /** + * The files that were generated during the generation. + */ + readonly files: Array; + + /** + * The sources that were used to generate the text. + */ + readonly sources: Array; + + /** + * The tool calls that were made during the generation. + */ + readonly toolCalls: Array>; + + /** + * The static tool calls that were made in the last step. + */ + readonly staticToolCalls: Array>; + + /** + * The dynamic tool calls that were made in the last step. + */ + readonly dynamicToolCalls: Array; + + /** + * The results of the tool calls. + */ + readonly toolResults: Array>; + + /** + * The static tool results that were made in the last step. + */ + readonly staticToolResults: Array>; + + /** + * The dynamic tool results that were made in the last step. + */ + readonly dynamicToolResults: Array; + + /** + * The unified reason why the generation finished. + */ + readonly finishReason: FinishReason; + + /** + * The raw reason why the generation finished (from the provider). + */ + readonly rawFinishReason: string | undefined; + + /** + * The token usage of the generated text. + */ + readonly usage: LanguageModelUsage; + + /** + * Warnings from the model provider (e.g. unsupported settings). + */ + readonly warnings: CallWarning[] | undefined; + + /** + * Additional request information. + */ + readonly request: LanguageModelRequestMetadata; + + /** + * Additional response information. + */ + readonly response: LanguageModelResponseMetadata & { + /** + * The response messages that were generated during the call. + * Response messages can be either assistant messages or tool messages. + * They contain a generated id. + */ + readonly messages: Array; + + /** + * Response body (available only for providers that use HTTP requests). + */ + body?: unknown; + }; + + /** + * Additional provider-specific metadata. They are passed through + * from the provider to the AI SDK and enable provider-specific + * results that can be fully encapsulated in the provider. + */ + readonly providerMetadata: ProviderMetadata | undefined; +}; + +export class DefaultStepResult< + TOOLS extends ToolSet, +> implements StepResult { + readonly stepNumber: StepResult['stepNumber']; + readonly model: StepResult['model']; + readonly functionId: StepResult['functionId']; + readonly metadata: StepResult['metadata']; + readonly experimental_context: StepResult['experimental_context']; + readonly content: StepResult['content']; + readonly finishReason: StepResult['finishReason']; + readonly rawFinishReason: StepResult['rawFinishReason']; + readonly usage: StepResult['usage']; + readonly warnings: StepResult['warnings']; + readonly request: StepResult['request']; + readonly response: StepResult['response']; + readonly providerMetadata: StepResult['providerMetadata']; + + constructor({ + stepNumber, + model, + functionId, + metadata, + experimental_context, + content, + finishReason, + rawFinishReason, + usage, + warnings, + request, + response, + providerMetadata, + }: { + stepNumber: StepResult['stepNumber']; + model: StepResult['model']; + functionId: StepResult['functionId']; + metadata: StepResult['metadata']; + experimental_context: StepResult['experimental_context']; + content: StepResult['content']; + finishReason: StepResult['finishReason']; + rawFinishReason: StepResult['rawFinishReason']; + usage: StepResult['usage']; + warnings: StepResult['warnings']; + request: StepResult['request']; + response: StepResult['response']; + providerMetadata: StepResult['providerMetadata']; + }) { + this.stepNumber = stepNumber; + this.model = model; + this.functionId = functionId; + this.metadata = metadata; + this.experimental_context = experimental_context; + this.content = content; + this.finishReason = finishReason; + this.rawFinishReason = rawFinishReason; + this.usage = usage; + this.warnings = warnings; + this.request = request; + this.response = response; + this.providerMetadata = providerMetadata; + } + + get text() { + return this.content + .filter(part => part.type === 'text') + .map(part => part.text) + .join(''); + } + + get reasoning() { + return this.content.filter(part => part.type === 'reasoning'); + } + + get reasoningText() { + return this.reasoning.length === 0 + ? undefined + : this.reasoning.map(part => part.text).join(''); + } + + get files() { + return this.content + .filter(part => part.type === 'file') + .map(part => part.file); + } + + get sources() { + return this.content.filter(part => part.type === 'source'); + } + + get toolCalls() { + return this.content.filter(part => part.type === 'tool-call'); + } + + get staticToolCalls() { + return this.toolCalls.filter( + (toolCall): toolCall is StaticToolCall => + toolCall.dynamic !== true, + ); + } + + get dynamicToolCalls() { + return this.toolCalls.filter( + (toolCall): toolCall is DynamicToolCall => toolCall.dynamic === true, + ); + } + + get toolResults() { + return this.content.filter(part => part.type === 'tool-result'); + } + + get staticToolResults() { + return this.toolResults.filter( + (toolResult): toolResult is StaticToolResult => + toolResult.dynamic !== true, + ); + } + + get dynamicToolResults() { + return this.toolResults.filter( + (toolResult): toolResult is DynamicToolResult => + toolResult.dynamic === true, + ); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/stop-condition.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/stop-condition.ts new file mode 100644 index 000000000..4a2bd316e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/stop-condition.ts @@ -0,0 +1,29 @@ +import { StepResult } from './step-result'; +import { ToolSet } from './tool-set'; + +export type StopCondition = (options: { + steps: Array>; +}) => PromiseLike | boolean; + +export function stepCountIs(stepCount: number): StopCondition { + return ({ steps }) => steps.length === stepCount; +} + +export function hasToolCall(toolName: string): StopCondition { + return ({ steps }) => + steps[steps.length - 1]?.toolCalls?.some( + toolCall => toolCall.toolName === toolName, + ) ?? false; +} + +export async function isStopConditionMet({ + stopConditions, + steps, +}: { + stopConditions: Array>; + steps: Array>; +}): Promise { + return ( + await Promise.all(stopConditions.map(condition => condition({ steps }))) + ).some(result => result); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/stream-text-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/stream-text-result.ts new file mode 100644 index 000000000..bc2840be9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/stream-text-result.ts @@ -0,0 +1,463 @@ +import { IdGenerator } from '@ai-sdk/provider-utils'; +import { ServerResponse } from 'node:http'; +import { + CallWarning, + FinishReason, + LanguageModelRequestMetadata, + ProviderMetadata, +} from '../types'; +import { Source } from '../types/language-model'; +import { LanguageModelResponseMetadata } from '../types/language-model-response-metadata'; +import { LanguageModelUsage } from '../types/usage'; +import { InferUIMessageChunk } from '../ui-message-stream/ui-message-chunks'; +import { UIMessageStreamOnFinishCallback } from '../ui-message-stream/ui-message-stream-on-finish-callback'; +import { UIMessageStreamResponseInit } from '../ui-message-stream/ui-message-stream-response-init'; +import { InferUIMessageMetadata, UIMessage } from '../ui/ui-messages'; +import { AsyncIterableStream } from '../util/async-iterable-stream'; +import { ErrorHandler } from '../util/error-handler'; +import { ContentPart } from './content-part'; +import { GeneratedFile } from './generated-file'; +import { Output } from './output'; +import { + InferCompleteOutput, + InferElementOutput, + InferPartialOutput, +} from './output-utils'; +import { ReasoningOutput } from './reasoning-output'; +import { ResponseMessage } from './response-message'; +import { StepResult } from './step-result'; +import { ToolApprovalRequestOutput } from './tool-approval-request-output'; +import { DynamicToolCall, StaticToolCall, TypedToolCall } from './tool-call'; +import { TypedToolError } from './tool-error'; +import { StaticToolOutputDenied } from './tool-output-denied'; +import { + DynamicToolResult, + StaticToolResult, + TypedToolResult, +} from './tool-result'; +import { ToolSet } from './tool-set'; + +export type UIMessageStreamOptions = { + /** + * The original messages. If they are provided, persistence mode is assumed, + * and a message ID is provided for the response message. + */ + originalMessages?: UI_MESSAGE[]; + + /** + * Generate a message ID for the response message. + * + * If not provided, no message ID will be set for the response message (unless + * the original messages are provided and the last message is an assistant message). + */ + generateMessageId?: IdGenerator; + + onFinish?: UIMessageStreamOnFinishCallback; + + /** + * Extracts message metadata that will be send to the client. + * + * Called on `start` and `finish` events. + */ + messageMetadata?: (options: { + part: TextStreamPart; + }) => InferUIMessageMetadata | undefined; + + /** + * Send reasoning parts to the client. + * Default to true. + */ + sendReasoning?: boolean; + + /** + * Send source parts to the client. + * Default to false. + */ + sendSources?: boolean; + + /** + * Send the finish event to the client. + * Set to false if you are using additional streamText calls + * that send additional data. + * Default to true. + */ + sendFinish?: boolean; + + /** + * Send the message start event to the client. + * Set to false if you are using additional streamText calls + * and the message start event has already been sent. + * Default to true. + */ + sendStart?: boolean; + + /** + * Process an error, e.g. to log it. Default to `() => 'An error occurred.'`. + * + * @returns error message to include in the data stream. + */ + onError?: (error: unknown) => string; +}; + +export type ConsumeStreamOptions = { + onError?: ErrorHandler; +}; + +/** + * A result object for accessing different stream types and additional information. + */ +export interface StreamTextResult< + TOOLS extends ToolSet, + OUTPUT extends Output, +> { + /** + * The content that was generated in the last step. + * + * Automatically consumes the stream. + */ + readonly content: PromiseLike>>; + + /** + * The full text that has been generated by the last step. + * + * Automatically consumes the stream. + */ + readonly text: PromiseLike; + + /** + * The full reasoning that the model has generated. + * + * Automatically consumes the stream. + */ + readonly reasoning: PromiseLike>; + + /** + * The reasoning that has been generated by the last step. + * + * Automatically consumes the stream. + */ + readonly reasoningText: PromiseLike; + + /** + * Files that have been generated by the model in the last step. + * + * Automatically consumes the stream. + */ + readonly files: PromiseLike; + + /** + * Sources that have been used as references in the last step. + * + * Automatically consumes the stream. + */ + readonly sources: PromiseLike; + + /** + * The tool calls that have been executed in the last step. + * + * Automatically consumes the stream. + */ + readonly toolCalls: PromiseLike[]>; + + /** + * The static tool calls that have been executed in the last step. + * + * Automatically consumes the stream. + */ + readonly staticToolCalls: PromiseLike[]>; + + /** + * The dynamic tool calls that have been executed in the last step. + * + * Automatically consumes the stream. + */ + readonly dynamicToolCalls: PromiseLike; + + /** + * The static tool results that have been generated in the last step. + * + * Automatically consumes the stream. + */ + readonly staticToolResults: PromiseLike[]>; + + /** + * The dynamic tool results that have been generated in the last step. + * + * Automatically consumes the stream. + */ + readonly dynamicToolResults: PromiseLike; + + /** + * The tool results that have been generated in the last step. + * + * Automatically consumes the stream. + */ + readonly toolResults: PromiseLike[]>; + + /** + * The unified finish reason why the generation finished. Taken from the last step. + * + * Automatically consumes the stream. + */ + readonly finishReason: PromiseLike; + + /** + * The raw reason why the generation finished (from the provider). Taken from the last step. + * + * Automatically consumes the stream. + */ + readonly rawFinishReason: PromiseLike; + + /** + * The token usage of the last step. + * + * Automatically consumes the stream. + */ + readonly usage: PromiseLike; + + /** + * The total token usage of the generated response. + * When there are multiple steps, the usage is the sum of all step usages. + * + * Automatically consumes the stream. + */ + readonly totalUsage: PromiseLike; + + /** + * Warnings from the model provider (e.g. unsupported settings) for the first step. + * + * Automatically consumes the stream. + */ + readonly warnings: PromiseLike; + + /** + * Details for all steps. + * You can use this to get information about intermediate steps, + * such as the tool calls or the response headers. + * + * Automatically consumes the stream. + */ + readonly steps: PromiseLike>>; + + /** + * Additional request information from the last step. + * + * Automatically consumes the stream. + */ + readonly request: PromiseLike; + + /** + * Additional response information from the last step. + * + * Automatically consumes the stream. + */ + readonly response: PromiseLike< + LanguageModelResponseMetadata & { + /** + * The response messages that were generated during the call. It consists of an assistant message, + * potentially containing tool calls. + * + * When there are tool results, there is an additional tool message with the tool results that are available. + * If there are tools that do not have execute functions, they are not included in the tool results and + * need to be added separately. + */ + messages: Array; + } + >; + + /** + * Additional provider-specific metadata from the last step. + * Metadata is passed through from the provider to the AI SDK and + * enables provider-specific results that can be fully encapsulated in the provider. + */ + readonly providerMetadata: PromiseLike; + + /** + * A text stream that returns only the generated text deltas. You can use it + * as either an AsyncIterable or a ReadableStream. When an error occurs, the + * stream will throw the error. + */ + readonly textStream: AsyncIterableStream; + + /** + * A stream with all events, including text deltas, tool calls, tool results, and + * errors. + * You can use it as either an AsyncIterable or a ReadableStream. + * Only errors that stop the stream, such as network errors, are thrown. + */ + readonly fullStream: AsyncIterableStream>; + + /** + * A stream of partial outputs. It uses the `output` specification. + * + * @deprecated Use `partialOutputStream` instead. + */ + readonly experimental_partialOutputStream: AsyncIterableStream< + InferPartialOutput + >; + + /** + * A stream of partial parsed outputs. It uses the `output` specification. + */ + readonly partialOutputStream: AsyncIterableStream>; + + /** + * A stream of individual array elements as they complete. + * Only available when using `output: Output.array()`. + */ + readonly elementStream: AsyncIterableStream>; + + /** + * The complete parsed output. It uses the `output` specification. + */ + readonly output: PromiseLike>; + + /** + * Consumes the stream without processing the parts. + * This is useful to force the stream to finish. + * It effectively removes the backpressure and allows the stream to finish, + * triggering the `onFinish` callback and the promise resolution. + * + * If an error occurs, it is passed to the optional `onError` callback. + */ + consumeStream(options?: ConsumeStreamOptions): PromiseLike; + + /** + * Converts the result to a UI message stream. + * + * @returns A UI message stream. + */ + toUIMessageStream( + options?: UIMessageStreamOptions, + ): AsyncIterableStream>; + + /** + * Writes UI message stream output to a Node.js response-like object. + */ + pipeUIMessageStreamToResponse( + response: ServerResponse, + options?: UIMessageStreamResponseInit & UIMessageStreamOptions, + ): void; + + /** + * Writes text delta output to a Node.js response-like object. + * It sets a `Content-Type` header to `text/plain; charset=utf-8` and + * writes each text delta as a separate chunk. + * + * @param response A Node.js response-like object (ServerResponse). + * @param init Optional headers, status code, and status text. + */ + pipeTextStreamToResponse(response: ServerResponse, init?: ResponseInit): void; + + /** + * Converts the result to a streamed response object with a stream data part stream. + * + * @returns A response object. + */ + toUIMessageStreamResponse( + options?: UIMessageStreamResponseInit & UIMessageStreamOptions, + ): Response; + + /** + * Creates a simple text stream response. + * Each text delta is encoded as UTF-8 and sent as a separate chunk. + * Non-text-delta events are ignored. + * @param init Optional headers, status code, and status text. + */ + toTextStreamResponse(init?: ResponseInit): Response; +} + +export type TextStreamPart = + | { + type: 'text-start'; + id: string; + providerMetadata?: ProviderMetadata; + } + | { + type: 'text-end'; + id: string; + providerMetadata?: ProviderMetadata; + } + | { + type: 'text-delta'; + id: string; + providerMetadata?: ProviderMetadata; + text: string; + } + | { + type: 'reasoning-start'; + id: string; + providerMetadata?: ProviderMetadata; + } + | { + type: 'reasoning-end'; + id: string; + providerMetadata?: ProviderMetadata; + } + | { + type: 'reasoning-delta'; + providerMetadata?: ProviderMetadata; + id: string; + text: string; + } + | { + type: 'tool-input-start'; + id: string; + toolName: string; + providerMetadata?: ProviderMetadata; + providerExecuted?: boolean; + dynamic?: boolean; + title?: string; + } + | { + type: 'tool-input-end'; + id: string; + providerMetadata?: ProviderMetadata; + } + | { + type: 'tool-input-delta'; + id: string; + delta: string; + providerMetadata?: ProviderMetadata; + } + | ({ type: 'source' } & Source) + | { type: 'file'; file: GeneratedFile; providerMetadata?: ProviderMetadata } // different because of GeneratedFile object + | ({ type: 'tool-call' } & TypedToolCall) + | ({ type: 'tool-result' } & TypedToolResult) + | ({ type: 'tool-error' } & TypedToolError) + | ({ type: 'tool-output-denied' } & StaticToolOutputDenied) + | ToolApprovalRequestOutput + | { + type: 'start-step'; + request: LanguageModelRequestMetadata; + warnings: CallWarning[]; + } + | { + type: 'finish-step'; + response: LanguageModelResponseMetadata; + usage: LanguageModelUsage; + finishReason: FinishReason; + rawFinishReason: string | undefined; + providerMetadata: ProviderMetadata | undefined; + } + | { + type: 'start'; + } + | { + type: 'finish'; + finishReason: FinishReason; + rawFinishReason: string | undefined; + totalUsage: LanguageModelUsage; + } + | { + type: 'abort'; + reason?: string; + } + | { + type: 'error'; + error: unknown; + } + | { + type: 'raw'; + rawValue: unknown; + }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/stream-text.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/stream-text.ts new file mode 100644 index 000000000..d5f0cbd44 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/stream-text.ts @@ -0,0 +1,2844 @@ +import { + getErrorMessage, + LanguageModelV3, + LanguageModelV3ToolChoice, + SharedV3Warning, + UnsupportedFunctionalityError, +} from '@ai-sdk/provider'; +import { + createIdGenerator, + DelayedPromise, + IdGenerator, + isAbortError, + ModelMessage, + ProviderOptions, + SystemModelMessage, + ToolApprovalResponse, + ToolContent, +} from '@ai-sdk/provider-utils'; +import { Span } from '@opentelemetry/api'; +import { ServerResponse } from 'node:http'; +import { NoOutputGeneratedError } from '../error'; +import { Listener, notify } from '../util/notify'; +import { logWarnings } from '../logger/log-warnings'; +import { resolveLanguageModel } from '../model/resolve-model'; +import { + CallSettings, + getChunkTimeoutMs, + getStepTimeoutMs, + getTotalTimeoutMs, + TimeoutConfiguration, +} from '../prompt/call-settings'; +import { convertToLanguageModelPrompt } from '../prompt/convert-to-language-model-prompt'; +import { createToolModelOutput } from '../prompt/create-tool-model-output'; +import { prepareCallSettings } from '../prompt/prepare-call-settings'; +import { prepareToolsAndToolChoice } from '../prompt/prepare-tools-and-tool-choice'; +import { Prompt } from '../prompt/prompt'; +import { standardizePrompt } from '../prompt/standardize-prompt'; +import { wrapGatewayError } from '../prompt/wrap-gateway-error'; +import { assembleOperationName } from '../telemetry/assemble-operation-name'; +import { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes'; +import { getTracer } from '../telemetry/get-tracer'; +import { recordSpan } from '../telemetry/record-span'; +import { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes'; +import { stringifyForTelemetry } from '../telemetry/stringify-for-telemetry'; +import { getGlobalTelemetryIntegration } from '../telemetry/get-global-telemetry-integration'; +import { TelemetrySettings } from '../telemetry/telemetry-settings'; +import { createTextStreamResponse } from '../text-stream/create-text-stream-response'; +import { pipeTextStreamToResponse } from '../text-stream/pipe-text-stream-to-response'; +import { LanguageModelRequestMetadata } from '../types'; +import { + CallWarning, + FinishReason, + LanguageModel, + ToolChoice, +} from '../types/language-model'; +import { ProviderMetadata } from '../types/provider-metadata'; +import { + addLanguageModelUsage, + createNullLanguageModelUsage, + LanguageModelUsage, +} from '../types/usage'; +import { UIMessage } from '../ui'; +import { createUIMessageStreamResponse } from '../ui-message-stream/create-ui-message-stream-response'; +import { getResponseUIMessageId } from '../ui-message-stream/get-response-ui-message-id'; +import { handleUIMessageStreamFinish } from '../ui-message-stream/handle-ui-message-stream-finish'; +import { pipeUIMessageStreamToResponse } from '../ui-message-stream/pipe-ui-message-stream-to-response'; +import { + InferUIMessageChunk, + UIMessageChunk, +} from '../ui-message-stream/ui-message-chunks'; +import { UIMessageStreamResponseInit } from '../ui-message-stream/ui-message-stream-response-init'; +import { InferUIMessageData, InferUIMessageMetadata } from '../ui/ui-messages'; +import { asArray } from '../util/as-array'; +import { + AsyncIterableStream, + createAsyncIterableStream, +} from '../util/async-iterable-stream'; +import { consumeStream } from '../util/consume-stream'; +import { createStitchableStream } from '../util/create-stitchable-stream'; +import { DownloadFunction } from '../util/download/download-function'; +import { mergeAbortSignals } from '../util/merge-abort-signals'; +import { mergeObjects } from '../util/merge-objects'; +import { now as originalNow } from '../util/now'; +import { prepareRetries } from '../util/prepare-retries'; +import { collectToolApprovals } from './collect-tool-approvals'; +import type { + OnFinishEvent, + OnStartEvent, + OnStepFinishEvent, + OnStepStartEvent, + OnToolCallFinishEvent, + OnToolCallStartEvent, +} from './callback-events'; +import { ContentPart } from './content-part'; +import { executeToolCall } from './execute-tool-call'; +import { Output, text } from './output'; +import { + InferCompleteOutput, + InferElementOutput, + InferPartialOutput, +} from './output-utils'; +import { PrepareStepFunction } from './prepare-step'; +import { ResponseMessage } from './response-message'; +import { + runToolsTransformation, + SingleRequestTextStreamPart, +} from './run-tools-transformation'; +import { DefaultStepResult, StepResult } from './step-result'; +import { + isStopConditionMet, + stepCountIs, + StopCondition, +} from './stop-condition'; +import { + ConsumeStreamOptions, + StreamTextResult, + TextStreamPart, + UIMessageStreamOptions, +} from './stream-text-result'; +import { toResponseMessages } from './to-response-messages'; +import { TypedToolCall } from './tool-call'; +import { ToolCallRepairFunction } from './tool-call-repair-function'; +import { ToolOutput } from './tool-output'; +import { StaticToolOutputDenied } from './tool-output-denied'; +import { ToolSet } from './tool-set'; + +const originalGenerateId = createIdGenerator({ + prefix: 'aitxt', + size: 24, +}); + +/** + * A transformation that is applied to the stream. + * + * @param stopStream - A function that stops the source stream. + * @param tools - The tools that are accessible to and can be called by the model. The model needs to support calling tools. + */ +export type StreamTextTransform = (options: { + tools: TOOLS; // for type inference + stopStream: () => void; +}) => TransformStream, TextStreamPart>; + +/** + * Callback that is set using the `onError` option. + * + * @param event - The event that is passed to the callback. + */ +export type StreamTextOnErrorCallback = (event: { + error: unknown; +}) => PromiseLike | void; + +/** + * Callback that is set using the `onStepFinish` option. + * + * @param stepResult - The result of the step. + */ +export type StreamTextOnStepFinishCallback = ( + event: OnStepFinishEvent, +) => PromiseLike | void; + +/** + * Callback that is set using the `onChunk` option. + * + * @param event - The event that is passed to the callback. + */ +export type StreamTextOnChunkCallback = (event: { + chunk: Extract< + TextStreamPart, + { + type: + | 'text-delta' + | 'reasoning-delta' + | 'source' + | 'tool-call' + | 'tool-input-start' + | 'tool-input-delta' + | 'tool-result' + | 'raw'; + } + >; +}) => PromiseLike | void; + +/** + * Callback that is set using the `onFinish` option. + * + * @param event - The event that is passed to the callback. + */ +export type StreamTextOnFinishCallback = ( + event: OnFinishEvent, +) => PromiseLike | void; + +/** + * Callback that is set using the `onAbort` option. + * + * @param event - The event that is passed to the callback. + */ +export type StreamTextOnAbortCallback = (event: { + /** + * Details for all previously finished steps. + */ + readonly steps: StepResult[]; +}) => PromiseLike | void; + +/** + * Include settings for streamText (requestBody only). + */ +type StreamTextIncludeSettings = { requestBody?: boolean }; + +/** + * Callback that is set using the `experimental_onStart` option. + * + * Called when the streamText operation begins, before any LLM calls. + * Use this callback for logging, analytics, or initializing state at the + * start of a generation. + * + * @param event - The event object containing generation configuration. + */ +export type StreamTextOnStartCallback< + TOOLS extends ToolSet = ToolSet, + OUTPUT extends Output = Output, +> = ( + event: OnStartEvent, +) => PromiseLike | void; + +/** + * Callback that is set using the `experimental_onStepStart` option. + * + * Called when a step (LLM call) begins, before the provider is called. + * Each step represents a single LLM invocation. Multiple steps occur when + * using tool calls (the model may be called multiple times in a loop). + * + * @param event - The event object containing step configuration. + */ +export type StreamTextOnStepStartCallback< + TOOLS extends ToolSet = ToolSet, + OUTPUT extends Output = Output, +> = ( + event: OnStepStartEvent, +) => PromiseLike | void; + +export type StreamTextOnToolCallStartCallback = + (event: OnToolCallStartEvent) => PromiseLike | void; + +export type StreamTextOnToolCallFinishCallback< + TOOLS extends ToolSet = ToolSet, +> = (event: OnToolCallFinishEvent) => PromiseLike | void; + +/** + * Generate a text and call tools for a given prompt using a language model. + * + * This function streams the output. If you do not want to stream the output, use `generateText` instead. + * + * @param model - The language model to use. + * @param tools - Tools that are accessible to and can be called by the model. The model needs to support calling tools. + * + * @param system - A system message that will be part of the prompt. + * @param prompt - A simple text prompt. You can either use `prompt` or `messages` but not both. + * @param messages - A list of messages. You can either use `prompt` or `messages` but not both. + * + * @param maxOutputTokens - Maximum number of tokens to generate. + * @param temperature - Temperature setting. + * The value is passed through to the provider. The range depends on the provider and model. + * It is recommended to set either `temperature` or `topP`, but not both. + * @param topP - Nucleus sampling. + * The value is passed through to the provider. The range depends on the provider and model. + * It is recommended to set either `temperature` or `topP`, but not both. + * @param topK - Only sample from the top K options for each subsequent token. + * Used to remove "long tail" low probability responses. + * Recommended for advanced use cases only. You usually only need to use temperature. + * @param presencePenalty - Presence penalty setting. + * It affects the likelihood of the model to repeat information that is already in the prompt. + * The value is passed through to the provider. The range depends on the provider and model. + * @param frequencyPenalty - Frequency penalty setting. + * It affects the likelihood of the model to repeatedly use the same words or phrases. + * The value is passed through to the provider. The range depends on the provider and model. + * @param stopSequences - Stop sequences. + * If set, the model will stop generating text when one of the stop sequences is generated. + * @param seed - The seed (integer) to use for random sampling. + * If set and supported by the model, calls will generate deterministic results. + * + * @param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2. + * @param abortSignal - An optional abort signal that can be used to cancel the call. + * @param timeout - An optional timeout in milliseconds. The call will be aborted if it takes longer than the specified timeout. + * @param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers. + * + * @param onChunk - Callback that is called for each chunk of the stream. The stream processing will pause until the callback promise is resolved. + * @param onError - Callback that is called when an error occurs during streaming. You can use it to log errors. + * @param onStepFinish - Callback that is called when each step (LLM call) is finished, including intermediate steps. + * @param onFinish - Callback that is called when all steps are finished and the response is complete. + * + * @returns + * A result object for accessing different stream types and additional information. + */ +export function streamText< + TOOLS extends ToolSet, + OUTPUT extends Output = Output, +>({ + model, + tools, + toolChoice, + system, + prompt, + messages, + maxRetries, + abortSignal, + timeout, + headers, + stopWhen = stepCountIs(1), + experimental_output, + output = experimental_output, + experimental_telemetry: telemetry, + prepareStep, + providerOptions, + experimental_activeTools, + activeTools = experimental_activeTools, + experimental_repairToolCall: repairToolCall, + experimental_transform: transform, + experimental_download: download, + includeRawChunks = false, + onChunk, + onError = ({ error }) => { + console.error(error); + }, + onFinish, + onAbort, + onStepFinish, + experimental_onStart: onStart, + experimental_onStepStart: onStepStart, + experimental_onToolCallStart: onToolCallStart, + experimental_onToolCallFinish: onToolCallFinish, + experimental_context, + experimental_include: include, + _internal: { now = originalNow, generateId = originalGenerateId } = {}, + ...settings +}: CallSettings & + Prompt & { + /** + * The language model to use. + */ + model: LanguageModel; + + /** + * The tools that the model can call. The model needs to support calling tools. + */ + tools?: TOOLS; + + /** + * The tool choice strategy. Default: 'auto'. + */ + toolChoice?: ToolChoice; + + /** + * Condition for stopping the generation when there are tool results in the last step. + * When the condition is an array, any of the conditions can be met to stop the generation. + * + * @default stepCountIs(1) + */ + stopWhen?: + | StopCondition> + | Array>>; + + /** + * Optional telemetry configuration (experimental). + */ + experimental_telemetry?: TelemetrySettings; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; + + /** + * @deprecated Use `activeTools` instead. + */ + experimental_activeTools?: Array>; + + /** + * Limits the tools that are available for the model to call without + * changing the tool call and result types in the result. + */ + activeTools?: Array>; + + /** + * Optional specification for parsing structured outputs from the LLM response. + */ + output?: OUTPUT; + + /** + * Optional specification for parsing structured outputs from the LLM response. + * + * @deprecated Use `output` instead. + */ + experimental_output?: OUTPUT; + + /** + * Optional function that you can use to provide different settings for a step. + * + * @param options - The options for the step. + * @param options.steps - The steps that have been executed so far. + * @param options.stepNumber - The number of the step that is being executed. + * @param options.model - The model that is being used. + * + * @returns An object that contains the settings for the step. + * If you return undefined (or for undefined settings), the settings from the outer level will be used. + */ + prepareStep?: PrepareStepFunction>; + + /** + * A function that attempts to repair a tool call that failed to parse. + */ + experimental_repairToolCall?: ToolCallRepairFunction; + + /** + * Optional stream transformations. + * They are applied in the order they are provided. + * The stream transformations must maintain the stream structure for streamText to work correctly. + */ + experimental_transform?: + | StreamTextTransform + | Array>; + + /** + * Custom download function to use for URLs. + * + * By default, files are downloaded if the model does not support the URL for the given media type. + */ + experimental_download?: DownloadFunction | undefined; + + /** + * Whether to include raw chunks from the provider in the stream. + * When enabled, you will receive raw chunks with type 'raw' that contain the unprocessed data from the provider. + * This allows access to cutting-edge provider features not yet wrapped by the AI SDK. + * Defaults to false. + */ + includeRawChunks?: boolean; + + /** + * Callback that is called for each chunk of the stream. + * The stream processing will pause until the callback promise is resolved. + */ + onChunk?: StreamTextOnChunkCallback; + + /** + * Callback that is invoked when an error occurs during streaming. + * You can use it to log errors. + * The stream processing will pause until the callback promise is resolved. + */ + onError?: StreamTextOnErrorCallback; + + /** + * Callback that is called when the LLM response and all request tool executions + * (for tools that have an `execute` function) are finished. + * + * The usage is the combined usage of all steps. + */ + onFinish?: StreamTextOnFinishCallback; + + onAbort?: StreamTextOnAbortCallback; + + /** + * Callback that is called when each step (LLM call) is finished, including intermediate steps. + */ + onStepFinish?: StreamTextOnStepFinishCallback; + + /** + * Callback that is called when the streamText operation begins, + * before any LLM calls are made. + */ + experimental_onStart?: StreamTextOnStartCallback, OUTPUT>; + + /** + * Callback that is called when a step (LLM call) begins, + * before the provider is called. + */ + experimental_onStepStart?: StreamTextOnStepStartCallback< + NoInfer, + OUTPUT + >; + + /** + * Callback that is called right before a tool's execute function runs. + */ + experimental_onToolCallStart?: StreamTextOnToolCallStartCallback< + NoInfer + >; + + /** + * Callback that is called right after a tool's execute function completes (or errors). + */ + experimental_onToolCallFinish?: StreamTextOnToolCallFinishCallback< + NoInfer + >; + + /** + * Context that is passed into tool execution. + * + * Experimental (can break in patch releases). + * + * @default undefined + */ + experimental_context?: unknown; + + /** + * Settings for controlling what data is included in step results. + * Disabling inclusion can help reduce memory usage when processing + * large payloads like images. + * + * By default, all data is included for backwards compatibility. + */ + experimental_include?: { + /** + * Whether to retain the request body in step results. + * The request body can be large when sending images or files. + * @default true + */ + requestBody?: boolean; + }; + + /** + * Internal. For test use only. May change without notice. + */ + _internal?: { + now?: () => number; + generateId?: IdGenerator; + }; + }): StreamTextResult { + const totalTimeoutMs = getTotalTimeoutMs(timeout); + const stepTimeoutMs = getStepTimeoutMs(timeout); + const chunkTimeoutMs = getChunkTimeoutMs(timeout); + const stepAbortController = + stepTimeoutMs != null ? new AbortController() : undefined; + const chunkAbortController = + chunkTimeoutMs != null ? new AbortController() : undefined; + return new DefaultStreamTextResult({ + model: resolveLanguageModel(model), + telemetry, + headers, + settings, + maxRetries, + abortSignal: mergeAbortSignals( + abortSignal, + totalTimeoutMs != null ? AbortSignal.timeout(totalTimeoutMs) : undefined, + stepAbortController?.signal, + chunkAbortController?.signal, + ), + stepTimeoutMs, + stepAbortController, + chunkTimeoutMs, + chunkAbortController, + system, + prompt, + messages, + tools, + toolChoice, + transforms: asArray(transform), + activeTools, + repairToolCall, + stopConditions: asArray(stopWhen), + output, + providerOptions, + prepareStep, + includeRawChunks, + timeout, + stopWhen, + originalAbortSignal: abortSignal, + onChunk, + onError, + onFinish, + onAbort, + onStepFinish, + onStart, + onStepStart, + onToolCallStart, + onToolCallFinish, + now, + generateId, + experimental_context, + download, + include, + }); +} + +export type EnrichedStreamPart = { + part: TextStreamPart; + partialOutput: PARTIAL_OUTPUT | undefined; +}; + +function createOutputTransformStream< + TOOLS extends ToolSet, + OUTPUT extends Output, +>( + output: OUTPUT, +): TransformStream< + TextStreamPart, + EnrichedStreamPart> +> { + let firstTextChunkId: string | undefined = undefined; + let text = ''; + let textChunk = ''; + let textProviderMetadata: ProviderMetadata | undefined = undefined; + let lastPublishedJson = ''; + + function publishTextChunk({ + controller, + partialOutput = undefined, + }: { + controller: TransformStreamDefaultController< + EnrichedStreamPart> + >; + partialOutput?: InferPartialOutput; + }) { + controller.enqueue({ + part: { + type: 'text-delta', + id: firstTextChunkId!, + text: textChunk, + providerMetadata: textProviderMetadata, + }, + partialOutput, + }); + textChunk = ''; + } + + return new TransformStream< + TextStreamPart, + EnrichedStreamPart> + >({ + async transform(chunk, controller) { + // ensure that we publish the last text chunk before the step finish: + if (chunk.type === 'finish-step' && textChunk.length > 0) { + publishTextChunk({ controller }); + } + + if ( + chunk.type !== 'text-delta' && + chunk.type !== 'text-start' && + chunk.type !== 'text-end' + ) { + controller.enqueue({ part: chunk, partialOutput: undefined }); + return; + } + + // we have to pick a text chunk which contains the json text + // since we are streaming, we have to pick the first text chunk + if (firstTextChunkId == null) { + firstTextChunkId = chunk.id; + } else if (chunk.id !== firstTextChunkId) { + controller.enqueue({ part: chunk, partialOutput: undefined }); + return; + } + + if (chunk.type === 'text-start') { + controller.enqueue({ part: chunk, partialOutput: undefined }); + return; + } + + if (chunk.type === 'text-end') { + if (textChunk.length > 0) { + publishTextChunk({ controller }); + } + controller.enqueue({ part: chunk, partialOutput: undefined }); + return; + } + + text += chunk.text; + textChunk += chunk.text; + textProviderMetadata = chunk.providerMetadata ?? textProviderMetadata; + + // only publish if partial json can be parsed: + const result = await output.parsePartialOutput({ text }); + + // null should be allowed (valid JSON value) but undefined should not: + if (result !== undefined) { + // only send new json if it has changed: + const currentJson = JSON.stringify(result.partial); + if (currentJson !== lastPublishedJson) { + publishTextChunk({ controller, partialOutput: result.partial }); + lastPublishedJson = currentJson; + } + } + }, + }); +} + +class DefaultStreamTextResult< + TOOLS extends ToolSet, + OUTPUT extends Output, +> implements StreamTextResult { + private readonly _totalUsage = new DelayedPromise< + Awaited['usage']> + >(); + private readonly _finishReason = new DelayedPromise< + Awaited['finishReason']> + >(); + private readonly _rawFinishReason = new DelayedPromise< + Awaited['rawFinishReason']> + >(); + private readonly _steps = new DelayedPromise< + Awaited['steps']> + >(); + + private readonly addStream: ( + stream: ReadableStream>, + ) => void; + + private readonly closeStream: () => void; + + private baseStream: ReadableStream< + EnrichedStreamPart> + >; + + private outputSpecification: OUTPUT | undefined; + + private includeRawChunks: boolean; + + private tools: TOOLS | undefined; + + constructor({ + model, + telemetry, + headers, + settings, + maxRetries: maxRetriesArg, + abortSignal, + stepTimeoutMs, + stepAbortController, + chunkTimeoutMs, + chunkAbortController, + system, + prompt, + messages, + tools, + toolChoice, + transforms, + activeTools, + repairToolCall, + stopConditions, + output, + providerOptions, + prepareStep, + includeRawChunks, + now, + generateId, + timeout, + stopWhen, + originalAbortSignal, + onChunk, + onError, + onFinish, + onAbort, + onStepFinish, + onStart, + onStepStart, + onToolCallStart, + onToolCallFinish, + experimental_context, + download, + include, + }: { + model: LanguageModelV3; + telemetry: TelemetrySettings | undefined; + headers: Record | undefined; + settings: Omit; + maxRetries: number | undefined; + abortSignal: AbortSignal | undefined; + stepTimeoutMs: number | undefined; + stepAbortController: AbortController | undefined; + chunkTimeoutMs: number | undefined; + chunkAbortController: AbortController | undefined; + system: Prompt['system']; + prompt: Prompt['prompt']; + messages: Prompt['messages']; + tools: TOOLS | undefined; + toolChoice: ToolChoice | undefined; + transforms: Array>; + activeTools: Array | undefined; + repairToolCall: ToolCallRepairFunction | undefined; + stopConditions: Array>>; + output: OUTPUT | undefined; + providerOptions: ProviderOptions | undefined; + prepareStep: PrepareStepFunction> | undefined; + includeRawChunks: boolean; + now: () => number; + generateId: () => string; + timeout: TimeoutConfiguration | undefined; + stopWhen: + | StopCondition> + | Array>> + | undefined; + originalAbortSignal: AbortSignal | undefined; + experimental_context: unknown; + download: DownloadFunction | undefined; + include: { requestBody?: boolean } | undefined; + + // callbacks: + onChunk: undefined | StreamTextOnChunkCallback; + onError: StreamTextOnErrorCallback; + onFinish: undefined | StreamTextOnFinishCallback; + onAbort: undefined | StreamTextOnAbortCallback; + onStepFinish: undefined | StreamTextOnStepFinishCallback; + onStart: undefined | StreamTextOnStartCallback; + onStepStart: undefined | StreamTextOnStepStartCallback; + onToolCallStart: undefined | StreamTextOnToolCallStartCallback; + onToolCallFinish: undefined | StreamTextOnToolCallFinishCallback; + }) { + this.outputSpecification = output; + this.includeRawChunks = includeRawChunks; + this.tools = tools; + + const createGlobalTelemetry = getGlobalTelemetryIntegration< + TOOLS, + OUTPUT + >(); + const globalTelemetry = createGlobalTelemetry(telemetry?.integrations); + + // promise to ensure that the step has been fully processed by the event processor + // before a new step is started. This is required because the continuation condition + // needs the updated steps to determine if another step is needed. + let stepFinish!: DelayedPromise; + + let recordedContent: Array> = []; + const recordedResponseMessages: Array = []; + let recordedFinishReason: FinishReason | undefined = undefined; + let recordedRawFinishReason: string | undefined = undefined; + let recordedTotalUsage: LanguageModelUsage | undefined = undefined; + let recordedRequest: LanguageModelRequestMetadata = {}; + let recordedWarnings: Array = []; + const recordedSteps: StepResult[] = []; + + // Track provider-executed tool calls that support deferred results + // (e.g., code_execution in programmatic tool calling scenarios). + // These tools may not return their results in the same turn as their call. + const pendingDeferredToolCalls = new Map(); + + let rootSpan!: Span; + + let activeTextContent: Record< + string, + { + type: 'text'; + text: string; + providerMetadata: ProviderMetadata | undefined; + } + > = {}; + + let activeReasoningContent: Record< + string, + { + type: 'reasoning'; + text: string; + providerMetadata: ProviderMetadata | undefined; + } + > = {}; + + const eventProcessor = new TransformStream< + EnrichedStreamPart>, + EnrichedStreamPart> + >({ + async transform(chunk, controller) { + controller.enqueue(chunk); // forward the chunk to the next stream + + const { part } = chunk; + + if ( + part.type === 'text-delta' || + part.type === 'reasoning-delta' || + part.type === 'source' || + part.type === 'tool-call' || + part.type === 'tool-result' || + part.type === 'tool-input-start' || + part.type === 'tool-input-delta' || + part.type === 'raw' + ) { + await onChunk?.({ chunk: part }); + } + + if (part.type === 'error') { + await onError({ error: wrapGatewayError(part.error) }); + } + + if (part.type === 'text-start') { + activeTextContent[part.id] = { + type: 'text', + text: '', + providerMetadata: part.providerMetadata, + }; + + recordedContent.push(activeTextContent[part.id]); + } + + if (part.type === 'text-delta') { + const activeText = activeTextContent[part.id]; + + if (activeText == null) { + controller.enqueue({ + part: { + type: 'error', + error: `text part ${part.id} not found`, + }, + partialOutput: undefined, + }); + return; + } + + activeText.text += part.text; + activeText.providerMetadata = + part.providerMetadata ?? activeText.providerMetadata; + } + + if (part.type === 'text-end') { + const activeText = activeTextContent[part.id]; + + if (activeText == null) { + controller.enqueue({ + part: { + type: 'error', + error: `text part ${part.id} not found`, + }, + partialOutput: undefined, + }); + return; + } + + activeText.providerMetadata = + part.providerMetadata ?? activeText.providerMetadata; + + delete activeTextContent[part.id]; + } + + if (part.type === 'reasoning-start') { + activeReasoningContent[part.id] = { + type: 'reasoning', + text: '', + providerMetadata: part.providerMetadata, + }; + + recordedContent.push(activeReasoningContent[part.id]); + } + + if (part.type === 'reasoning-delta') { + const activeReasoning = activeReasoningContent[part.id]; + + if (activeReasoning == null) { + controller.enqueue({ + part: { + type: 'error', + error: `reasoning part ${part.id} not found`, + }, + partialOutput: undefined, + }); + return; + } + + activeReasoning.text += part.text; + activeReasoning.providerMetadata = + part.providerMetadata ?? activeReasoning.providerMetadata; + } + + if (part.type === 'reasoning-end') { + const activeReasoning = activeReasoningContent[part.id]; + + if (activeReasoning == null) { + controller.enqueue({ + part: { + type: 'error', + error: `reasoning part ${part.id} not found`, + }, + partialOutput: undefined, + }); + return; + } + + activeReasoning.providerMetadata = + part.providerMetadata ?? activeReasoning.providerMetadata; + + delete activeReasoningContent[part.id]; + } + + if (part.type === 'file') { + recordedContent.push({ + type: 'file', + file: part.file, + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + }); + } + + if (part.type === 'source') { + recordedContent.push(part); + } + + if (part.type === 'tool-call') { + recordedContent.push(part); + } + + if (part.type === 'tool-result' && !part.preliminary) { + recordedContent.push(part); + } + + if (part.type === 'tool-approval-request') { + recordedContent.push(part); + } + + if (part.type === 'tool-error') { + recordedContent.push(part); + } + + if (part.type === 'start-step') { + // reset the recorded data when a new step starts: + recordedContent = []; + activeReasoningContent = {}; + activeTextContent = {}; + + recordedRequest = part.request; + recordedWarnings = part.warnings; + } + + if (part.type === 'finish-step') { + const stepMessages = await toResponseMessages({ + content: recordedContent, + tools, + }); + + // Add step information (after response messages are updated): + const currentStepResult: StepResult = new DefaultStepResult({ + stepNumber: recordedSteps.length, + model: modelInfo, + ...callbackTelemetryProps, + experimental_context, + content: recordedContent, + finishReason: part.finishReason, + rawFinishReason: part.rawFinishReason, + usage: part.usage, + warnings: recordedWarnings, + request: recordedRequest, + response: { + ...part.response, + messages: [...recordedResponseMessages, ...stepMessages], + }, + providerMetadata: part.providerMetadata, + }); + + await notify({ + event: currentStepResult, + callbacks: [onStepFinish, globalTelemetry.onStepFinish], + }); + + logWarnings({ + warnings: recordedWarnings, + provider: modelInfo.provider, + model: modelInfo.modelId, + }); + + recordedSteps.push(currentStepResult); + + recordedResponseMessages.push(...stepMessages); + + // resolve the promise to signal that the step has been fully processed + // by the event processor: + stepFinish.resolve(); + } + + if (part.type === 'finish') { + recordedTotalUsage = part.totalUsage; + recordedFinishReason = part.finishReason; + recordedRawFinishReason = part.rawFinishReason; + } + }, + + async flush(controller) { + try { + if (recordedSteps.length === 0) { + const error = abortSignal?.aborted + ? abortSignal.reason + : new NoOutputGeneratedError({ + message: 'No output generated. Check the stream for errors.', + }); + + self._finishReason.reject(error); + self._rawFinishReason.reject(error); + self._totalUsage.reject(error); + self._steps.reject(error); + + return; // no steps recorded (e.g. in error scenario) + } + + // derived: + const finishReason = recordedFinishReason ?? 'other'; + const totalUsage = + recordedTotalUsage ?? createNullLanguageModelUsage(); + + // from finish: + self._finishReason.resolve(finishReason); + self._rawFinishReason.resolve(recordedRawFinishReason); + self._totalUsage.resolve(totalUsage); + + // aggregate results: + self._steps.resolve(recordedSteps); + + // call onFinish callback: + const finalStep = recordedSteps[recordedSteps.length - 1]; + + await notify({ + event: { + stepNumber: finalStep.stepNumber, + model: finalStep.model, + functionId: finalStep.functionId, + metadata: finalStep.metadata, + experimental_context: finalStep.experimental_context, + finishReason: finalStep.finishReason, + rawFinishReason: finalStep.rawFinishReason, + totalUsage, + usage: finalStep.usage, + content: finalStep.content, + text: finalStep.text, + reasoningText: finalStep.reasoningText, + reasoning: finalStep.reasoning, + files: finalStep.files, + sources: finalStep.sources, + toolCalls: finalStep.toolCalls, + staticToolCalls: finalStep.staticToolCalls, + dynamicToolCalls: finalStep.dynamicToolCalls, + toolResults: finalStep.toolResults, + staticToolResults: finalStep.staticToolResults, + dynamicToolResults: finalStep.dynamicToolResults, + request: finalStep.request, + response: finalStep.response, + warnings: finalStep.warnings, + providerMetadata: finalStep.providerMetadata, + steps: recordedSteps, + }, + callbacks: [ + onFinish, + globalTelemetry.onFinish as + | undefined + | StreamTextOnFinishCallback, + ], + }); + + // Add response information to the root span: + rootSpan.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.response.finishReason': finishReason, + 'ai.response.text': { output: () => finalStep.text }, + 'ai.response.reasoning': { + output: () => finalStep.reasoningText, + }, + 'ai.response.toolCalls': { + output: () => + finalStep.toolCalls?.length + ? JSON.stringify(finalStep.toolCalls) + : undefined, + }, + 'ai.response.providerMetadata': JSON.stringify( + finalStep.providerMetadata, + ), + 'ai.usage.inputTokens': totalUsage.inputTokens, + 'ai.usage.inputTokenDetails.noCacheTokens': + totalUsage.inputTokenDetails?.noCacheTokens, + 'ai.usage.inputTokenDetails.cacheReadTokens': + totalUsage.inputTokenDetails?.cacheReadTokens, + 'ai.usage.inputTokenDetails.cacheWriteTokens': + totalUsage.inputTokenDetails?.cacheWriteTokens, + 'ai.usage.outputTokens': totalUsage.outputTokens, + 'ai.usage.outputTokenDetails.textTokens': + totalUsage.outputTokenDetails?.textTokens, + 'ai.usage.outputTokenDetails.reasoningTokens': + totalUsage.outputTokenDetails?.reasoningTokens, + 'ai.usage.totalTokens': totalUsage.totalTokens, + 'ai.usage.reasoningTokens': + totalUsage.outputTokenDetails?.reasoningTokens, + 'ai.usage.cachedInputTokens': + totalUsage.inputTokenDetails?.cacheReadTokens, + }, + }), + ); + } catch (error) { + controller.error(error); + } finally { + rootSpan.end(); + } + }, + }); + + // initialize the stitchable stream and the transformed stream: + const stitchableStream = createStitchableStream>(); + this.addStream = stitchableStream.addStream; + this.closeStream = stitchableStream.close; + + // resilient stream that handles abort signals and errors: + const reader = stitchableStream.stream.getReader(); + let stream = new ReadableStream>({ + async start(controller) { + // send start event: + controller.enqueue({ type: 'start' }); + }, + + async pull(controller) { + // abort handling: + function abort() { + onAbort?.({ steps: recordedSteps }); + controller.enqueue({ + type: 'abort', + // The `reason` is usually of type DOMException, but it can also be of any type, + // so we use getErrorMessage for serialization because it is already designed to accept values of the unknown type. + // See: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/reason + ...(abortSignal?.reason !== undefined + ? { reason: getErrorMessage(abortSignal.reason) } + : {}), + }); + controller.close(); + } + + try { + const { done, value } = await reader.read(); + + if (done) { + controller.close(); + return; + } + + if (abortSignal?.aborted) { + abort(); + return; + } + + controller.enqueue(value); + } catch (error) { + if (isAbortError(error) && abortSignal?.aborted) { + abort(); + } else { + controller.error(error); + } + } + }, + + cancel(reason) { + return stitchableStream.stream.cancel(reason); + }, + }); + + // transform the stream before output parsing + // to enable replacement of stream segments: + for (const transform of transforms) { + stream = stream.pipeThrough( + transform({ + tools: tools as TOOLS, + stopStream() { + stitchableStream.terminate(); + }, + }), + ); + } + + this.baseStream = stream + .pipeThrough(createOutputTransformStream(output ?? text())) + .pipeThrough(eventProcessor); + + const { maxRetries, retry } = prepareRetries({ + maxRetries: maxRetriesArg, + abortSignal, + }); + + const tracer = getTracer(telemetry); + + const callSettings = prepareCallSettings(settings); + + const baseTelemetryAttributes = getBaseTelemetryAttributes({ + model, + telemetry, + headers, + settings: { ...callSettings, maxRetries }, + }); + + const self = this; + + const modelInfo = { provider: model.provider, modelId: model.modelId }; + const callbackTelemetryProps = { + functionId: telemetry?.functionId, + metadata: telemetry?.metadata as Record | undefined, + }; + + recordSpan({ + name: 'ai.streamText', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ operationId: 'ai.streamText', telemetry }), + ...baseTelemetryAttributes, + // specific settings that only make sense on the outer level: + 'ai.prompt': { + input: () => JSON.stringify({ system, prompt, messages }), + }, + }, + }), + tracer, + endWhenDone: false, + fn: async rootSpanArg => { + rootSpan = rootSpanArg; + + const initialPrompt = await standardizePrompt({ + system, + prompt, + messages, + } as Prompt); + + await notify({ + event: { + model: modelInfo, + system, + prompt, + messages, + tools, + toolChoice, + activeTools, + maxOutputTokens: callSettings.maxOutputTokens, + temperature: callSettings.temperature, + topP: callSettings.topP, + topK: callSettings.topK, + presencePenalty: callSettings.presencePenalty, + frequencyPenalty: callSettings.frequencyPenalty, + stopSequences: callSettings.stopSequences, + seed: callSettings.seed, + maxRetries, + timeout, + headers, + providerOptions, + stopWhen, + output, + abortSignal: originalAbortSignal, + include, + ...callbackTelemetryProps, + experimental_context, + }, + callbacks: [ + onStart, + globalTelemetry.onStart as + | undefined + | StreamTextOnStartCallback, + ], + }); + + const initialMessages = initialPrompt.messages; + const initialResponseMessages: Array = []; + + const { approvedToolApprovals, deniedToolApprovals } = + collectToolApprovals({ messages: initialMessages }); + + // initial tool execution step stream + if ( + deniedToolApprovals.length > 0 || + approvedToolApprovals.length > 0 + ) { + const providerExecutedToolApprovals = [ + ...approvedToolApprovals, + ...deniedToolApprovals, + ].filter(toolApproval => toolApproval.toolCall.providerExecuted); + + const localApprovedToolApprovals = approvedToolApprovals.filter( + toolApproval => !toolApproval.toolCall.providerExecuted, + ); + const localDeniedToolApprovals = deniedToolApprovals.filter( + toolApproval => !toolApproval.toolCall.providerExecuted, + ); + + const deniedProviderExecutedToolApprovals = + deniedToolApprovals.filter( + toolApproval => toolApproval.toolCall.providerExecuted, + ); + + let toolExecutionStepStreamController: + | ReadableStreamDefaultController> + | undefined; + const toolExecutionStepStream = new ReadableStream< + TextStreamPart + >({ + start(controller) { + toolExecutionStepStreamController = controller; + }, + }); + + self.addStream(toolExecutionStepStream); + + try { + for (const toolApproval of [ + ...localDeniedToolApprovals, + ...deniedProviderExecutedToolApprovals, + ]) { + toolExecutionStepStreamController?.enqueue({ + type: 'tool-output-denied', + toolCallId: toolApproval.toolCall.toolCallId, + toolName: toolApproval.toolCall.toolName, + } as StaticToolOutputDenied); + } + + const toolOutputs: Array> = []; + + await Promise.all( + localApprovedToolApprovals.map(async toolApproval => { + const result = await executeToolCall({ + toolCall: toolApproval.toolCall, + tools, + tracer, + telemetry, + messages: initialMessages, + abortSignal, + experimental_context, + stepNumber: recordedSteps.length, + model: modelInfo, + onToolCallStart: [ + onToolCallStart, + globalTelemetry.onToolCallStart as + | undefined + | StreamTextOnToolCallStartCallback, + ], + onToolCallFinish: [ + onToolCallFinish, + globalTelemetry.onToolCallFinish, + ], + onPreliminaryToolResult: result => { + toolExecutionStepStreamController?.enqueue(result); + }, + }); + + if (result != null) { + toolExecutionStepStreamController?.enqueue(result); + toolOutputs.push(result); + } + }), + ); + + // forward provider-executed approval responses to the provider (do not execute locally): + if (providerExecutedToolApprovals.length > 0) { + initialResponseMessages.push({ + role: 'tool', + content: providerExecutedToolApprovals.map( + toolApproval => + ({ + type: 'tool-approval-response', + approvalId: toolApproval.approvalResponse.approvalId, + approved: toolApproval.approvalResponse.approved, + reason: toolApproval.approvalResponse.reason, + providerExecuted: true, + }) satisfies ToolApprovalResponse, + ), + }); + } + + // Local tool results (approved + denied) are sent as tool results: + if (toolOutputs.length > 0 || localDeniedToolApprovals.length > 0) { + const localToolContent: ToolContent = []; + + // add regular tool results for approved tool calls: + for (const output of toolOutputs) { + localToolContent.push({ + type: 'tool-result' as const, + toolCallId: output.toolCallId, + toolName: output.toolName, + output: await createToolModelOutput({ + toolCallId: output.toolCallId, + input: output.input, + tool: tools?.[output.toolName], + output: + output.type === 'tool-result' + ? output.output + : output.error, + errorMode: output.type === 'tool-error' ? 'text' : 'none', + }), + }); + } + + // add execution denied tool results for denied local tool approvals: + for (const toolApproval of localDeniedToolApprovals) { + localToolContent.push({ + type: 'tool-result' as const, + toolCallId: toolApproval.toolCall.toolCallId, + toolName: toolApproval.toolCall.toolName, + output: { + type: 'execution-denied' as const, + reason: toolApproval.approvalResponse.reason, + }, + }); + } + + initialResponseMessages.push({ + role: 'tool', + content: localToolContent, + }); + } + } finally { + toolExecutionStepStreamController?.close(); + } + } + + recordedResponseMessages.push(...initialResponseMessages); + + async function streamStep({ + currentStep, + responseMessages, + usage, + }: { + currentStep: number; + responseMessages: Array; + usage: LanguageModelUsage; + }) { + const includeRawChunks = self.includeRawChunks; + + // Set up step timeout if configured + const stepTimeoutId = + stepTimeoutMs != null + ? setTimeout(() => stepAbortController!.abort(), stepTimeoutMs) + : undefined; + + // Set up chunk timeout tracking (will be reset on each chunk) + let chunkTimeoutId: ReturnType | undefined = + undefined; + + function resetChunkTimeout() { + if (chunkTimeoutMs != null) { + if (chunkTimeoutId != null) { + clearTimeout(chunkTimeoutId); + } + chunkTimeoutId = setTimeout( + () => chunkAbortController!.abort(), + chunkTimeoutMs, + ); + } + } + + function clearChunkTimeout() { + if (chunkTimeoutId != null) { + clearTimeout(chunkTimeoutId); + chunkTimeoutId = undefined; + } + } + + function clearStepTimeout() { + if (stepTimeoutId != null) { + clearTimeout(stepTimeoutId); + } + } + + try { + stepFinish = new DelayedPromise(); + + const stepInputMessages = [...initialMessages, ...responseMessages]; + + const prepareStepResult = await prepareStep?.({ + model, + steps: recordedSteps, + stepNumber: recordedSteps.length, + messages: stepInputMessages, + experimental_context, + }); + + const stepModel = resolveLanguageModel( + prepareStepResult?.model ?? model, + ); + const stepModelInfo = { + provider: stepModel.provider, + modelId: stepModel.modelId, + }; + + const promptMessages = await convertToLanguageModelPrompt({ + prompt: { + system: prepareStepResult?.system ?? initialPrompt.system, + messages: prepareStepResult?.messages ?? stepInputMessages, + }, + supportedUrls: await stepModel.supportedUrls, + download, + }); + + const stepActiveTools = + prepareStepResult?.activeTools ?? activeTools; + + const { toolChoice: stepToolChoice, tools: stepTools } = + await prepareToolsAndToolChoice({ + tools, + toolChoice: prepareStepResult?.toolChoice ?? toolChoice, + activeTools: stepActiveTools, + }); + + experimental_context = + prepareStepResult?.experimental_context ?? experimental_context; + + const stepMessages = + prepareStepResult?.messages ?? stepInputMessages; + + const stepSystem = + prepareStepResult?.system ?? initialPrompt.system; + + const stepProviderOptions = mergeObjects( + providerOptions, + prepareStepResult?.providerOptions, + ); + + await notify({ + event: { + stepNumber: recordedSteps.length, + model: stepModelInfo, + system: stepSystem, + messages: stepMessages, + tools, + toolChoice: stepToolChoice, + activeTools: stepActiveTools, + steps: [...recordedSteps], + providerOptions: stepProviderOptions, + timeout, + headers, + stopWhen, + output, + abortSignal: originalAbortSignal, + include, + ...callbackTelemetryProps, + experimental_context, + }, + callbacks: [ + onStepStart, + globalTelemetry.onStepStart as + | undefined + | StreamTextOnStepStartCallback, + ], + }); + + const { + result: { stream, response, request }, + doStreamSpan, + startTimestampMs, + } = await retry(() => + recordSpan({ + name: 'ai.streamText.doStream', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ + operationId: 'ai.streamText.doStream', + telemetry, + }), + ...baseTelemetryAttributes, + // model: + 'ai.model.provider': stepModel.provider, + 'ai.model.id': stepModel.modelId, + // prompt: + 'ai.prompt.messages': { + input: () => stringifyForTelemetry(promptMessages), + }, + 'ai.prompt.tools': { + // convert the language model level tools: + input: () => stepTools?.map(tool => JSON.stringify(tool)), + }, + 'ai.prompt.toolChoice': { + input: () => + stepToolChoice != null + ? JSON.stringify(stepToolChoice) + : undefined, + }, + + // standardized gen-ai llm span attributes: + 'gen_ai.system': stepModel.provider, + 'gen_ai.request.model': stepModel.modelId, + 'gen_ai.request.frequency_penalty': + callSettings.frequencyPenalty, + 'gen_ai.request.max_tokens': callSettings.maxOutputTokens, + 'gen_ai.request.presence_penalty': + callSettings.presencePenalty, + 'gen_ai.request.stop_sequences': callSettings.stopSequences, + 'gen_ai.request.temperature': callSettings.temperature, + 'gen_ai.request.top_k': callSettings.topK, + 'gen_ai.request.top_p': callSettings.topP, + }, + }), + tracer, + endWhenDone: false, + fn: async doStreamSpan => ({ + startTimestampMs: now(), // get before the call + doStreamSpan, + result: await stepModel.doStream({ + ...callSettings, + tools: stepTools, + toolChoice: stepToolChoice, + responseFormat: await output?.responseFormat, + prompt: promptMessages, + providerOptions: stepProviderOptions, + abortSignal, + headers, + includeRawChunks, + }), + }), + }), + ); + + const streamWithToolResults = runToolsTransformation({ + tools, + generatorStream: stream, + tracer, + telemetry, + system, + messages: stepInputMessages, + repairToolCall, + abortSignal, + experimental_context, + generateId, + stepNumber: recordedSteps.length, + model: stepModelInfo, + onToolCallStart: [ + onToolCallStart, + globalTelemetry.onToolCallStart as + | undefined + | StreamTextOnToolCallStartCallback, + ], + onToolCallFinish: [ + onToolCallFinish, + globalTelemetry.onToolCallFinish, + ], + }); + + // Conditionally include request.body based on include settings. + // Large payloads (e.g., base64-encoded images) can cause memory issues. + const stepRequest: LanguageModelRequestMetadata = + (include?.requestBody ?? true) + ? (request ?? {}) + : { ...request, body: undefined }; + const stepToolCalls: TypedToolCall[] = []; + const stepToolOutputs: ToolOutput[] = []; + let warnings: SharedV3Warning[] | undefined; + + const activeToolCallToolNames: Record = {}; + + let stepFinishReason: FinishReason = 'other'; + let stepRawFinishReason: string | undefined = undefined; + + let stepUsage: LanguageModelUsage = createNullLanguageModelUsage(); + let stepProviderMetadata: ProviderMetadata | undefined; + let stepFirstChunk = true; + let stepResponse: { id: string; timestamp: Date; modelId: string } = + { + id: generateId(), + timestamp: new Date(), + modelId: modelInfo.modelId, + }; + + // raw text as it comes from the provider. recorded for telemetry. + let activeText = ''; + + self.addStream( + streamWithToolResults.pipeThrough( + new TransformStream< + SingleRequestTextStreamPart, + TextStreamPart + >({ + async transform(chunk, controller): Promise { + resetChunkTimeout(); + + if (chunk.type === 'stream-start') { + warnings = chunk.warnings; + return; // stream start chunks are sent immediately and do not count as first chunk + } + + if (stepFirstChunk) { + // Telemetry for first chunk: + const msToFirstChunk = now() - startTimestampMs; + + stepFirstChunk = false; + + doStreamSpan.addEvent('ai.stream.firstChunk', { + 'ai.response.msToFirstChunk': msToFirstChunk, + }); + + doStreamSpan.setAttributes({ + 'ai.response.msToFirstChunk': msToFirstChunk, + }); + + // Step start: + controller.enqueue({ + type: 'start-step', + request: stepRequest, + warnings: warnings ?? [], + }); + } + + const chunkType = chunk.type; + switch (chunkType) { + case 'tool-approval-request': + case 'text-start': + case 'text-end': { + controller.enqueue(chunk); + break; + } + + case 'text-delta': { + if (chunk.delta.length > 0) { + controller.enqueue({ + type: 'text-delta', + id: chunk.id, + text: chunk.delta, + providerMetadata: chunk.providerMetadata, + }); + activeText += chunk.delta; + } + break; + } + + case 'reasoning-start': + case 'reasoning-end': { + controller.enqueue(chunk); + break; + } + + case 'reasoning-delta': { + controller.enqueue({ + type: 'reasoning-delta', + id: chunk.id, + text: chunk.delta, + providerMetadata: chunk.providerMetadata, + }); + break; + } + + case 'tool-call': { + controller.enqueue(chunk); + // store tool calls for onFinish callback and toolCalls promise: + stepToolCalls.push(chunk); + break; + } + + case 'tool-result': { + controller.enqueue(chunk); + + if (!chunk.preliminary) { + stepToolOutputs.push(chunk); + } + + break; + } + + case 'tool-error': { + controller.enqueue(chunk); + stepToolOutputs.push(chunk); + break; + } + + case 'response-metadata': { + stepResponse = { + id: chunk.id ?? stepResponse.id, + timestamp: chunk.timestamp ?? stepResponse.timestamp, + modelId: chunk.modelId ?? stepResponse.modelId, + }; + break; + } + + case 'finish': { + // Note: tool executions might not be finished yet when the finish event is emitted. + // store usage and finish reason for promises and onFinish callback: + stepUsage = chunk.usage; + stepFinishReason = chunk.finishReason; + stepRawFinishReason = chunk.rawFinishReason; + stepProviderMetadata = chunk.providerMetadata; + + // Telemetry for finish event timing + // (since tool executions can take longer and distort calculations) + const msToFinish = now() - startTimestampMs; + doStreamSpan.addEvent('ai.stream.finish'); + doStreamSpan.setAttributes({ + 'ai.response.msToFinish': msToFinish, + 'ai.response.avgOutputTokensPerSecond': + (1000 * (stepUsage.outputTokens ?? 0)) / msToFinish, + }); + + break; + } + + case 'file': { + controller.enqueue(chunk); + break; + } + + case 'source': { + controller.enqueue(chunk); + break; + } + + case 'tool-input-start': { + activeToolCallToolNames[chunk.id] = chunk.toolName; + + const tool = tools?.[chunk.toolName]; + if (tool?.onInputStart != null) { + await tool.onInputStart({ + toolCallId: chunk.id, + messages: stepInputMessages, + abortSignal, + experimental_context, + }); + } + + controller.enqueue({ + ...chunk, + dynamic: chunk.dynamic ?? tool?.type === 'dynamic', + title: tool?.title, + }); + break; + } + + case 'tool-input-end': { + delete activeToolCallToolNames[chunk.id]; + controller.enqueue(chunk); + break; + } + + case 'tool-input-delta': { + const toolName = activeToolCallToolNames[chunk.id]; + const tool = tools?.[toolName]; + + if (tool?.onInputDelta != null) { + await tool.onInputDelta({ + inputTextDelta: chunk.delta, + toolCallId: chunk.id, + messages: stepInputMessages, + abortSignal, + experimental_context, + }); + } + + controller.enqueue(chunk); + break; + } + + case 'error': { + controller.enqueue(chunk); + stepFinishReason = 'error'; + break; + } + + case 'raw': { + if (includeRawChunks) { + controller.enqueue(chunk); + } + break; + } + + default: { + const exhaustiveCheck: never = chunkType; + throw new Error( + `Unknown chunk type: ${exhaustiveCheck}`, + ); + } + } + }, + + // invoke onFinish callback and resolve toolResults promise when the stream is about to close: + async flush(controller) { + const stepToolCallsJson = + stepToolCalls.length > 0 + ? JSON.stringify(stepToolCalls) + : undefined; + + // record telemetry attributes that don't depend on transforms: + try { + doStreamSpan.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.response.finishReason': stepFinishReason, + 'ai.response.toolCalls': { + output: () => stepToolCallsJson, + }, + 'ai.response.id': stepResponse.id, + 'ai.response.model': stepResponse.modelId, + 'ai.response.timestamp': + stepResponse.timestamp.toISOString(), + 'ai.usage.inputTokens': stepUsage.inputTokens, + 'ai.usage.inputTokenDetails.noCacheTokens': + stepUsage.inputTokenDetails?.noCacheTokens, + 'ai.usage.inputTokenDetails.cacheReadTokens': + stepUsage.inputTokenDetails?.cacheReadTokens, + 'ai.usage.inputTokenDetails.cacheWriteTokens': + stepUsage.inputTokenDetails?.cacheWriteTokens, + 'ai.usage.outputTokens': stepUsage.outputTokens, + 'ai.usage.outputTokenDetails.textTokens': + stepUsage.outputTokenDetails?.textTokens, + 'ai.usage.outputTokenDetails.reasoningTokens': + stepUsage.outputTokenDetails?.reasoningTokens, + 'ai.usage.totalTokens': stepUsage.totalTokens, + 'ai.usage.reasoningTokens': + stepUsage.outputTokenDetails?.reasoningTokens, + 'ai.usage.cachedInputTokens': + stepUsage.inputTokenDetails?.cacheReadTokens, + + // standardized gen-ai llm span attributes: + 'gen_ai.response.finish_reasons': [ + stepFinishReason, + ], + 'gen_ai.response.id': stepResponse.id, + 'gen_ai.response.model': stepResponse.modelId, + 'gen_ai.usage.input_tokens': stepUsage.inputTokens, + 'gen_ai.usage.output_tokens': + stepUsage.outputTokens, + }, + }), + ); + } catch (error) { + // ignore error setting telemetry attributes + } + + controller.enqueue({ + type: 'finish-step', + finishReason: stepFinishReason, + rawFinishReason: stepRawFinishReason, + usage: stepUsage, + providerMetadata: stepProviderMetadata, + response: { + ...stepResponse, + headers: response?.headers, + }, + }); + + const combinedUsage = addLanguageModelUsage( + usage, + stepUsage, + ); + + // wait for the step to be fully processed by the event processor + // to ensure that the recorded steps are complete: + await stepFinish.promise; + + // set transform-dependent attributes after the step has been + // fully processed (post-transform) by the event processor: + const processedStep = + recordedSteps[recordedSteps.length - 1]; + try { + doStreamSpan.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.response.text': { + output: () => processedStep.text, + }, + 'ai.response.reasoning': { + output: () => processedStep.reasoningText, + }, + 'ai.response.providerMetadata': JSON.stringify( + processedStep.providerMetadata, + ), + }, + }), + ); + } catch (error) { + // ignore error setting telemetry attributes + } finally { + doStreamSpan.end(); + } + + const clientToolCalls = stepToolCalls.filter( + toolCall => toolCall.providerExecuted !== true, + ); + const clientToolOutputs = stepToolOutputs.filter( + toolOutput => toolOutput.providerExecuted !== true, + ); + + // Track provider-executed tool calls that support deferred results. + // In programmatic tool calling, a server tool (e.g., code_execution) may + // trigger a client tool, and the server tool's result is deferred until + // the client tool's result is sent back. + for (const toolCall of stepToolCalls) { + if (toolCall.providerExecuted !== true) continue; + const tool = tools?.[toolCall.toolName]; + if ( + tool?.type === 'provider' && + tool.supportsDeferredResults + ) { + // Check if this tool call already has a result in the current step + const hasResultInStep = stepToolOutputs.some( + output => + (output.type === 'tool-result' || + output.type === 'tool-error') && + output.toolCallId === toolCall.toolCallId, + ); + if (!hasResultInStep) { + pendingDeferredToolCalls.set(toolCall.toolCallId, { + toolName: toolCall.toolName, + }); + } + } + } + + // Mark deferred tool calls as resolved when we receive their results + for (const output of stepToolOutputs) { + if ( + output.type === 'tool-result' || + output.type === 'tool-error' + ) { + pendingDeferredToolCalls.delete(output.toolCallId); + } + } + + // Clear the step and chunk timeouts before the next step is started + clearStepTimeout(); + clearChunkTimeout(); + + if ( + // Continue if: + // 1. There are client tool calls that have all been executed, OR + // 2. There are pending deferred results from provider-executed tools + ((clientToolCalls.length > 0 && + clientToolOutputs.length === clientToolCalls.length) || + pendingDeferredToolCalls.size > 0) && + // continue until a stop condition is met: + !(await isStopConditionMet({ + stopConditions, + steps: recordedSteps, + })) + ) { + // append to messages for the next step: + responseMessages.push( + ...(await toResponseMessages({ + content: + // use transformed content to create the messages for the next step: + recordedSteps[recordedSteps.length - 1].content, + tools, + })), + ); + + try { + await streamStep({ + currentStep: currentStep + 1, + responseMessages, + usage: combinedUsage, + }); + } catch (error) { + controller.enqueue({ + type: 'error', + error, + }); + + self.closeStream(); + } + } else { + controller.enqueue({ + type: 'finish', + finishReason: stepFinishReason, + rawFinishReason: stepRawFinishReason, + totalUsage: combinedUsage, + }); + + self.closeStream(); // close the stitchable stream + } + }, + }), + ), + ); + } finally { + clearStepTimeout(); + clearChunkTimeout(); + } + } + + // add the initial stream to the stitchable stream + await streamStep({ + currentStep: 0, + responseMessages: initialResponseMessages, + usage: createNullLanguageModelUsage(), + }); + }, + }).catch(error => { + // add an error stream part and close the streams: + self.addStream( + new ReadableStream({ + start(controller) { + controller.enqueue({ type: 'error', error }); + controller.close(); + }, + }), + ); + self.closeStream(); + }); + } + + get steps() { + // when any of the promises are accessed, the stream is consumed + // so it resolves without needing to consume the stream separately + this.consumeStream(); + + return this._steps.promise; + } + + private get finalStep() { + return this.steps.then(steps => steps[steps.length - 1]); + } + + get content() { + return this.finalStep.then(step => step.content); + } + + get warnings() { + return this.finalStep.then(step => step.warnings); + } + + get providerMetadata() { + return this.finalStep.then(step => step.providerMetadata); + } + + get text() { + return this.finalStep.then(step => step.text); + } + + get reasoningText() { + return this.finalStep.then(step => step.reasoningText); + } + + get reasoning() { + return this.finalStep.then(step => step.reasoning); + } + + get sources() { + return this.finalStep.then(step => step.sources); + } + + get files() { + return this.finalStep.then(step => step.files); + } + + get toolCalls() { + return this.finalStep.then(step => step.toolCalls); + } + + get staticToolCalls() { + return this.finalStep.then(step => step.staticToolCalls); + } + + get dynamicToolCalls() { + return this.finalStep.then(step => step.dynamicToolCalls); + } + + get toolResults() { + return this.finalStep.then(step => step.toolResults); + } + + get staticToolResults() { + return this.finalStep.then(step => step.staticToolResults); + } + + get dynamicToolResults() { + return this.finalStep.then(step => step.dynamicToolResults); + } + + get usage() { + return this.finalStep.then(step => step.usage); + } + + get request() { + return this.finalStep.then(step => step.request); + } + + get response() { + return this.finalStep.then(step => step.response); + } + + get totalUsage() { + // when any of the promises are accessed, the stream is consumed + // so it resolves without needing to consume the stream separately + this.consumeStream(); + + return this._totalUsage.promise; + } + + get finishReason() { + // when any of the promises are accessed, the stream is consumed + // so it resolves without needing to consume the stream separately + this.consumeStream(); + + return this._finishReason.promise; + } + + get rawFinishReason() { + // when any of the promises are accessed, the stream is consumed + // so it resolves without needing to consume the stream separately + this.consumeStream(); + + return this._rawFinishReason.promise; + } + + /** + * Split out a new stream from the original stream. + * The original stream is replaced to allow for further splitting, + * since we do not know how many times the stream will be split. + * + * Note: this leads to buffering the stream content on the server. + * However, the LLM results are expected to be small enough to not cause issues. + */ + private teeStream() { + const [stream1, stream2] = this.baseStream.tee(); + this.baseStream = stream2; + return stream1; + } + + get textStream(): AsyncIterableStream { + return createAsyncIterableStream( + this.teeStream().pipeThrough( + new TransformStream< + EnrichedStreamPart>, + string + >({ + transform({ part }, controller) { + if (part.type === 'text-delta') { + controller.enqueue(part.text); + } + }, + }), + ), + ); + } + + get fullStream(): AsyncIterableStream> { + return createAsyncIterableStream( + this.teeStream().pipeThrough( + new TransformStream< + EnrichedStreamPart>, + TextStreamPart + >({ + transform({ part }, controller) { + controller.enqueue(part); + }, + }), + ), + ); + } + + async consumeStream(options?: ConsumeStreamOptions): Promise { + try { + await consumeStream({ + stream: this.fullStream, + onError: options?.onError, + }); + } catch (error) { + options?.onError?.(error); + } + } + + get experimental_partialOutputStream(): AsyncIterableStream< + InferPartialOutput + > { + return this.partialOutputStream; + } + + get partialOutputStream(): AsyncIterableStream> { + return createAsyncIterableStream( + this.teeStream().pipeThrough( + new TransformStream< + EnrichedStreamPart>, + InferPartialOutput + >({ + transform({ partialOutput }, controller) { + if (partialOutput != null) { + controller.enqueue(partialOutput); + } + }, + }), + ), + ); + } + + get elementStream(): AsyncIterableStream> { + const transform = this.outputSpecification?.createElementStreamTransform(); + + if (transform == null) { + throw new UnsupportedFunctionalityError({ + functionality: `element streams in ${this.outputSpecification?.name ?? 'text'} mode`, + }); + } + + return createAsyncIterableStream(this.teeStream().pipeThrough(transform)); + } + + get output(): Promise> { + return this.finalStep.then(step => { + const output = this.outputSpecification ?? text(); + return output.parseCompleteOutput( + { text: step.text }, + { + response: step.response, + usage: step.usage, + finishReason: step.finishReason, + }, + ); + }); + } + + toUIMessageStream({ + originalMessages, + generateMessageId, + onFinish, + messageMetadata, + sendReasoning = true, + sendSources = false, + sendStart = true, + sendFinish = true, + onError = getErrorMessage, + }: UIMessageStreamOptions = {}): AsyncIterableStream< + InferUIMessageChunk + > { + const responseMessageId = + generateMessageId != null + ? getResponseUIMessageId({ + originalMessages, + responseMessageId: generateMessageId, + }) + : undefined; + + // TODO simplify once dynamic is no longer needed for invalid tool inputs + const isDynamic = (part: { toolName: string; dynamic?: boolean }) => { + const tool = this.tools?.[part.toolName]; + + // provider-executed, dynamic tools are not listed in the tools object + if (tool == null) { + return part.dynamic; + } + + return tool?.type === 'dynamic' ? true : undefined; + }; + + const baseStream = this.fullStream.pipeThrough( + new TransformStream< + TextStreamPart, + UIMessageChunk< + InferUIMessageMetadata, + InferUIMessageData + > + >({ + transform: async (part, controller) => { + const messageMetadataValue = messageMetadata?.({ part }); + + const partType = part.type; + switch (partType) { + case 'text-start': { + controller.enqueue({ + type: 'text-start', + id: part.id, + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + }); + break; + } + + case 'text-delta': { + controller.enqueue({ + type: 'text-delta', + id: part.id, + delta: part.text, + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + }); + break; + } + + case 'text-end': { + controller.enqueue({ + type: 'text-end', + id: part.id, + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + }); + break; + } + + case 'reasoning-start': { + controller.enqueue({ + type: 'reasoning-start', + id: part.id, + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + }); + break; + } + + case 'reasoning-delta': { + if (sendReasoning) { + controller.enqueue({ + type: 'reasoning-delta', + id: part.id, + delta: part.text, + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + }); + } + break; + } + + case 'reasoning-end': { + controller.enqueue({ + type: 'reasoning-end', + id: part.id, + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + }); + break; + } + + case 'file': { + controller.enqueue({ + type: 'file', + mediaType: part.file.mediaType, + url: `data:${part.file.mediaType};base64,${part.file.base64}`, + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + }); + break; + } + + case 'source': { + if (sendSources && part.sourceType === 'url') { + controller.enqueue({ + type: 'source-url', + sourceId: part.id, + url: part.url, + title: part.title, + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + }); + } + + if (sendSources && part.sourceType === 'document') { + controller.enqueue({ + type: 'source-document', + sourceId: part.id, + mediaType: part.mediaType, + title: part.title, + filename: part.filename, + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + }); + } + break; + } + + case 'tool-input-start': { + const dynamic = isDynamic(part); + + controller.enqueue({ + type: 'tool-input-start', + toolCallId: part.id, + toolName: part.toolName, + ...(part.providerExecuted != null + ? { providerExecuted: part.providerExecuted } + : {}), + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + ...(dynamic != null ? { dynamic } : {}), + ...(part.title != null ? { title: part.title } : {}), + }); + break; + } + + case 'tool-input-delta': { + controller.enqueue({ + type: 'tool-input-delta', + toolCallId: part.id, + inputTextDelta: part.delta, + }); + break; + } + + case 'tool-call': { + const dynamic = isDynamic(part); + + if (part.invalid) { + controller.enqueue({ + type: 'tool-input-error', + toolCallId: part.toolCallId, + toolName: part.toolName, + input: part.input, + ...(part.providerExecuted != null + ? { providerExecuted: part.providerExecuted } + : {}), + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + ...(dynamic != null ? { dynamic } : {}), + errorText: onError(part.error), + ...(part.title != null ? { title: part.title } : {}), + }); + } else { + controller.enqueue({ + type: 'tool-input-available', + toolCallId: part.toolCallId, + toolName: part.toolName, + input: part.input, + ...(part.providerExecuted != null + ? { providerExecuted: part.providerExecuted } + : {}), + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + ...(dynamic != null ? { dynamic } : {}), + ...(part.title != null ? { title: part.title } : {}), + }); + } + + break; + } + + case 'tool-approval-request': { + controller.enqueue({ + type: 'tool-approval-request', + approvalId: part.approvalId, + toolCallId: part.toolCall.toolCallId, + }); + break; + } + + case 'tool-result': { + const dynamic = isDynamic(part); + + controller.enqueue({ + type: 'tool-output-available', + toolCallId: part.toolCallId, + output: part.output, + ...(part.providerExecuted != null + ? { providerExecuted: part.providerExecuted } + : {}), + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + ...(part.preliminary != null + ? { preliminary: part.preliminary } + : {}), + ...(dynamic != null ? { dynamic } : {}), + }); + break; + } + + case 'tool-error': { + const dynamic = isDynamic(part); + + controller.enqueue({ + type: 'tool-output-error', + toolCallId: part.toolCallId, + errorText: part.providerExecuted + ? typeof part.error === 'string' + ? part.error + : JSON.stringify(part.error) + : onError(part.error), + ...(part.providerExecuted != null + ? { providerExecuted: part.providerExecuted } + : {}), + ...(part.providerMetadata != null + ? { providerMetadata: part.providerMetadata } + : {}), + ...(dynamic != null ? { dynamic } : {}), + }); + break; + } + + case 'tool-output-denied': { + controller.enqueue({ + type: 'tool-output-denied', + toolCallId: part.toolCallId, + }); + break; + } + + case 'error': { + controller.enqueue({ + type: 'error', + errorText: onError(part.error), + }); + break; + } + + case 'start-step': { + controller.enqueue({ type: 'start-step' }); + break; + } + + case 'finish-step': { + controller.enqueue({ type: 'finish-step' }); + break; + } + + case 'start': { + if (sendStart) { + controller.enqueue({ + type: 'start', + ...(messageMetadataValue != null + ? { messageMetadata: messageMetadataValue } + : {}), + ...(responseMessageId != null + ? { messageId: responseMessageId } + : {}), + }); + } + break; + } + + case 'finish': { + if (sendFinish) { + controller.enqueue({ + type: 'finish', + finishReason: part.finishReason, + ...(messageMetadataValue != null + ? { messageMetadata: messageMetadataValue } + : {}), + }); + } + break; + } + + case 'abort': { + controller.enqueue(part); + break; + } + + case 'tool-input-end': { + break; + } + + case 'raw': { + // Raw chunks are not included in UI message streams + // as they contain provider-specific data for developer use + break; + } + + default: { + const exhaustiveCheck: never = partType; + throw new Error(`Unknown chunk type: ${exhaustiveCheck}`); + } + } + + // start and finish events already have metadata + // so we only need to send metadata for other parts + if ( + messageMetadataValue != null && + partType !== 'start' && + partType !== 'finish' + ) { + controller.enqueue({ + type: 'message-metadata', + messageMetadata: messageMetadataValue, + }); + } + }, + }), + ); + + return createAsyncIterableStream( + handleUIMessageStreamFinish({ + stream: baseStream, + messageId: responseMessageId ?? generateMessageId?.(), + originalMessages, + onFinish, + onError, + }), + ); + } + + pipeUIMessageStreamToResponse( + response: ServerResponse, + { + originalMessages, + generateMessageId, + onFinish, + messageMetadata, + sendReasoning, + sendSources, + sendFinish, + sendStart, + onError, + ...init + }: UIMessageStreamResponseInit & UIMessageStreamOptions = {}, + ) { + pipeUIMessageStreamToResponse({ + response, + stream: this.toUIMessageStream({ + originalMessages, + generateMessageId, + onFinish, + messageMetadata, + sendReasoning, + sendSources, + sendFinish, + sendStart, + onError, + }), + ...init, + }); + } + + pipeTextStreamToResponse(response: ServerResponse, init?: ResponseInit) { + pipeTextStreamToResponse({ + response, + textStream: this.textStream, + ...init, + }); + } + + toUIMessageStreamResponse({ + originalMessages, + generateMessageId, + onFinish, + messageMetadata, + sendReasoning, + sendSources, + sendFinish, + sendStart, + onError, + ...init + }: UIMessageStreamResponseInit & + UIMessageStreamOptions = {}): Response { + return createUIMessageStreamResponse({ + stream: this.toUIMessageStream({ + originalMessages, + generateMessageId, + onFinish, + messageMetadata, + sendReasoning, + sendSources, + sendFinish, + sendStart, + onError, + }), + ...init, + }); + } + + toTextStreamResponse(init?: ResponseInit): Response { + return createTextStreamResponse({ + textStream: this.textStream, + ...init, + }); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/to-response-messages.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/to-response-messages.ts new file mode 100644 index 000000000..b2fb6e8b7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/to-response-messages.ts @@ -0,0 +1,163 @@ +import { + AssistantContent, + AssistantModelMessage, + ToolContent, + ToolModelMessage, +} from '../prompt'; +import { createToolModelOutput } from '../prompt/create-tool-model-output'; +import { ContentPart } from './content-part'; +import { ToolSet } from './tool-set'; + +/** + * Converts the result of a `generateText` or `streamText` call to a list of response messages. + */ +export async function toResponseMessages({ + content: inputContent, + tools, +}: { + content: Array>; + tools: TOOLS | undefined; +}): Promise> { + const responseMessages: Array = []; + + const content: AssistantContent = []; + for (const part of inputContent) { + // Skip sources - they are response-only content that no provider expects back + if (part.type === 'source') { + continue; + } + + // Skip non-provider-executed tool results/errors (they go in the tool message) + if ( + (part.type === 'tool-result' || part.type === 'tool-error') && + !part.providerExecuted + ) { + continue; + } + + // Skip empty text + if (part.type === 'text' && part.text.length === 0) { + continue; + } + + switch (part.type) { + case 'text': + content.push({ + type: 'text', + text: part.text, + providerOptions: part.providerMetadata, + }); + break; + case 'reasoning': + content.push({ + type: 'reasoning', + text: part.text, + providerOptions: part.providerMetadata, + }); + break; + case 'file': + content.push({ + type: 'file', + data: part.file.base64, + mediaType: part.file.mediaType, + providerOptions: part.providerMetadata, + }); + break; + case 'tool-call': + content.push({ + type: 'tool-call', + toolCallId: part.toolCallId, + toolName: part.toolName, + input: part.input, + providerExecuted: part.providerExecuted, + providerOptions: part.providerMetadata, + }); + break; + case 'tool-result': { + const output = await createToolModelOutput({ + toolCallId: part.toolCallId, + input: part.input, + tool: tools?.[part.toolName], + output: part.output, + errorMode: 'none', + }); + content.push({ + type: 'tool-result', + toolCallId: part.toolCallId, + toolName: part.toolName, + output, + providerOptions: part.providerMetadata, + }); + break; + } + case 'tool-error': { + const output = await createToolModelOutput({ + toolCallId: part.toolCallId, + input: part.input, + tool: tools?.[part.toolName], + output: part.error, + errorMode: 'json', + }); + content.push({ + type: 'tool-result', + toolCallId: part.toolCallId, + toolName: part.toolName, + output, + providerOptions: part.providerMetadata, + }); + break; + } + case 'tool-approval-request': + content.push({ + type: 'tool-approval-request', + approvalId: part.approvalId, + toolCallId: part.toolCall.toolCallId, + }); + break; + } + } + + if (content.length > 0) { + responseMessages.push({ + role: 'assistant', + content, + }); + } + + const toolResultContent: ToolContent = []; + for (const part of inputContent) { + if ( + !(part.type === 'tool-result' || part.type === 'tool-error') || + part.providerExecuted + ) { + continue; + } + + const output = await createToolModelOutput({ + toolCallId: part.toolCallId, + input: part.input, + tool: tools?.[part.toolName], + output: part.type === 'tool-result' ? part.output : part.error, + errorMode: part.type === 'tool-error' ? 'text' : 'none', + }); + + toolResultContent.push({ + type: 'tool-result', + toolCallId: part.toolCallId, + toolName: part.toolName, + output, + ...(part.providerMetadata != null + ? { providerOptions: part.providerMetadata } + : {}), + }); + } + + if (toolResultContent.length > 0) { + responseMessages.push({ + role: 'tool', + content: toolResultContent, + }); + } + + return responseMessages; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-approval-request-output.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-approval-request-output.ts new file mode 100644 index 000000000..2880b67e0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-approval-request-output.ts @@ -0,0 +1,21 @@ +import { TypedToolCall } from './tool-call'; +import { ToolSet } from './tool-set'; + +/** + * Output part that indicates that a tool approval request has been made. + * + * The tool approval request can be approved or denied in the next tool message. + */ +export type ToolApprovalRequestOutput = { + type: 'tool-approval-request'; + + /** + * ID of the tool approval request. + */ + approvalId: string; + + /** + * Tool call that the approval request is for. + */ + toolCall: TypedToolCall; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-call-repair-function.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-call-repair-function.ts new file mode 100644 index 000000000..ff63129aa --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-call-repair-function.ts @@ -0,0 +1,27 @@ +import { JSONSchema7, LanguageModelV3ToolCall } from '@ai-sdk/provider'; +import { InvalidToolInputError } from '../error/invalid-tool-input-error'; +import { NoSuchToolError } from '../error/no-such-tool-error'; +import { ModelMessage, SystemModelMessage } from '../prompt'; +import { ToolSet } from './tool-set'; + +/** + * A function that attempts to repair a tool call that failed to parse. + * + * It receives the error and the context as arguments and returns the repair + * tool call JSON as text. + * + * @param options.system - The system prompt. + * @param options.messages - The messages in the current generation step. + * @param options.toolCall - The tool call that failed to parse. + * @param options.tools - The tools that are available. + * @param options.inputSchema - A function that returns the JSON Schema for a tool. + * @param options.error - The error that occurred while parsing the tool call. + */ +export type ToolCallRepairFunction = (options: { + system: string | SystemModelMessage | Array | undefined; + messages: ModelMessage[]; + toolCall: LanguageModelV3ToolCall; + tools: TOOLS; + inputSchema: (options: { toolName: string }) => PromiseLike; + error: NoSuchToolError | InvalidToolInputError; +}) => Promise; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-call.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-call.ts new file mode 100644 index 000000000..b6f087a67 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-call.ts @@ -0,0 +1,47 @@ +import { Tool } from '@ai-sdk/provider-utils'; +import { ProviderMetadata } from '../types'; +import { ValueOf } from '../util/value-of'; +import { ToolSet } from './tool-set'; + +type BaseToolCall = { + type: 'tool-call'; + toolCallId: string; + providerExecuted?: boolean; + providerMetadata?: ProviderMetadata; +}; + +export type StaticToolCall = ValueOf<{ + [NAME in keyof TOOLS]: BaseToolCall & { + toolName: NAME & string; + input: TOOLS[NAME] extends Tool ? PARAMETERS : never; + dynamic?: false | undefined; + invalid?: false | undefined; + error?: never; + title?: string; + }; +}>; + +export type DynamicToolCall = BaseToolCall & { + toolName: string; + input: unknown; + dynamic: true; + title?: string; + + /** + * True if this is caused by an unparsable tool call or + * a tool that does not exist. + */ + // Added into DynamicToolCall to avoid breaking changes. + // TODO AI SDK 6: separate into a new InvalidToolCall type + invalid?: boolean; + + /** + * The error that caused the tool call to be invalid. + */ + // TODO AI SDK 6: separate into a new InvalidToolCall type + error?: unknown; +}; + +export type TypedToolCall = + | StaticToolCall + | DynamicToolCall; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-error.ts new file mode 100644 index 000000000..12d0540ef --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-error.ts @@ -0,0 +1,34 @@ +import { InferToolInput } from '@ai-sdk/provider-utils'; +import { ProviderMetadata } from '../types'; +import { ValueOf } from '../util/value-of'; +import { ToolSet } from './tool-set'; + +export type StaticToolError = ValueOf<{ + [NAME in keyof TOOLS]: { + type: 'tool-error'; + toolCallId: string; + toolName: NAME & string; + input: InferToolInput; + error: unknown; + providerExecuted?: boolean; + providerMetadata?: ProviderMetadata; + dynamic?: false | undefined; + title?: string; + }; +}>; + +export type DynamicToolError = { + type: 'tool-error'; + toolCallId: string; + toolName: string; + input: unknown; + error: unknown; + providerExecuted?: boolean; + providerMetadata?: ProviderMetadata; + dynamic: true; + title?: string; +}; + +export type TypedToolError = + | StaticToolError + | DynamicToolError; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-output-denied.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-output-denied.ts new file mode 100644 index 000000000..dc3cf700e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-output-denied.ts @@ -0,0 +1,21 @@ +import { ValueOf } from '../util/value-of'; +import { ToolSet } from './tool-set'; + +/** + * Tool output when the tool execution has been denied (for static tools). + */ +export type StaticToolOutputDenied = ValueOf<{ + [NAME in keyof TOOLS]: { + type: 'tool-output-denied'; + toolCallId: string; + toolName: NAME & string; + providerExecuted?: boolean; + dynamic?: false | undefined; + }; +}>; + +/** + * Tool output when the tool execution has been denied. + */ +export type TypedToolOutputDenied = + StaticToolOutputDenied; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-output.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-output.ts new file mode 100644 index 000000000..0c79c1426 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-output.ts @@ -0,0 +1,7 @@ +import { TypedToolError } from './tool-error'; +import { TypedToolResult } from './tool-result'; +import { ToolSet } from './tool-set'; + +export type ToolOutput = + | TypedToolResult + | TypedToolError; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-result.ts new file mode 100644 index 000000000..406deef02 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-result.ts @@ -0,0 +1,36 @@ +import { InferToolInput, InferToolOutput } from '@ai-sdk/provider-utils'; +import { ProviderMetadata } from '../types'; +import { ValueOf } from '../../src/util/value-of'; +import { ToolSet } from './tool-set'; + +export type StaticToolResult = ValueOf<{ + [NAME in keyof TOOLS]: { + type: 'tool-result'; + toolCallId: string; + toolName: NAME & string; + input: InferToolInput; + output: InferToolOutput; + providerExecuted?: boolean; + providerMetadata?: ProviderMetadata; + dynamic?: false | undefined; + preliminary?: boolean; + title?: string; + }; +}>; + +export type DynamicToolResult = { + type: 'tool-result'; + toolCallId: string; + toolName: string; + input: unknown; + output: unknown; + providerExecuted?: boolean; + providerMetadata?: ProviderMetadata; + dynamic: true; + preliminary?: boolean; + title?: string; +}; + +export type TypedToolResult = + | StaticToolResult + | DynamicToolResult; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-set.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-set.ts new file mode 100644 index 000000000..09e64774d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-text/tool-set.ts @@ -0,0 +1,14 @@ +import { Tool } from '@ai-sdk/provider-utils'; + +export type ToolSet = Record< + string, + (Tool | Tool | Tool | Tool) & + Pick< + Tool, + | 'execute' + | 'onInputAvailable' + | 'onInputStart' + | 'onInputDelta' + | 'needsApproval' + > +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-video/generate-video-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-video/generate-video-result.ts new file mode 100644 index 000000000..10a45156b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-video/generate-video-result.ts @@ -0,0 +1,36 @@ +import { GeneratedFile } from '../generate-text'; +import { VideoModelProviderMetadata } from '../types/video-model'; +import { VideoModelResponseMetadata } from '../types/video-model-response-metadata'; +import { Warning } from '../types/warning'; + +/** + * The result of an `experimental_generateVideo` call. + * Contains the generated video and additional information. + */ +export interface GenerateVideoResult { + /** + * The first video that was generated. + */ + readonly video: GeneratedFile; + + /** + * All videos that were generated. + */ + readonly videos: Array; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + readonly warnings: Array; + + /** + * Response metadata from the provider. + * May contain multiple responses if multiple calls were made. + */ + readonly responses: Array; + + /** + * Provider-specific metadata passed through from the provider. + */ + readonly providerMetadata: VideoModelProviderMetadata; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-video/generate-video.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-video/generate-video.ts new file mode 100644 index 000000000..9846838df --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-video/generate-video.ts @@ -0,0 +1,402 @@ +import type { + Experimental_VideoModelV3, + Experimental_VideoModelV3CallOptions, + Experimental_VideoModelV3File, + SharedV3ProviderMetadata, +} from '@ai-sdk/provider'; +import { + convertBase64ToUint8Array, + type DataContent, + type ProviderOptions, + withUserAgentSuffix, +} from '@ai-sdk/provider-utils'; +import { NoVideoGeneratedError } from '../error/no-video-generated-error'; +import { + DefaultGeneratedFile, + type GeneratedFile, +} from '../generate-text/generated-file'; +import { logWarnings } from '../logger/log-warnings'; +import { resolveVideoModel } from '../model/resolve-model'; +import type { VideoModel } from '../types/video-model'; +import type { VideoModelResponseMetadata } from '../types/video-model-response-metadata'; +import type { Warning } from '../types/warning'; +import { + detectMediaType, + imageMediaTypeSignatures, + videoMediaTypeSignatures, +} from '../util/detect-media-type'; +import { createDownload } from '../util/download/create-download'; +import { prepareRetries } from '../util/prepare-retries'; +import { VERSION } from '../version'; +import type { GenerateVideoResult } from './generate-video-result'; +import { splitDataUrl } from '../prompt/split-data-url'; + +export type GenerateVideoPrompt = + | string + | { + image: DataContent; + text?: string; + }; + +/** + * Generates videos using a video model. + * + * @param model - The video model to use. + * @param prompt - The prompt that should be used to generate the video. + * @param n - Number of videos to generate. Default: 1. + * @param aspectRatio - Aspect ratio of the videos to generate. Must have the format `{width}:{height}`. + * @param resolution - Resolution of the videos to generate. Must have the format `{width}x{height}`. + * @param duration - Duration of the video in seconds. + * @param fps - Frames per second for the video. + * @param seed - Seed for the video generation. + * @param providerOptions - Additional provider-specific options that are passed through to the provider + * as body parameters. + * @param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2. + * @param abortSignal - An optional abort signal that can be used to cancel the call. + * @param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers. + * + * @returns A result object that contains the generated videos. + */ +const defaultDownload = createDownload(); + +export async function experimental_generateVideo({ + model: modelArg, + prompt: promptArg, + n = 1, + maxVideosPerCall, + aspectRatio, + resolution, + duration, + fps, + seed, + providerOptions, + maxRetries: maxRetriesArg, + abortSignal, + headers, + download: downloadFn = defaultDownload, +}: { + /** + * The video model to use. + */ + model: VideoModel; + + /** + * The prompt that should be used to generate the video. + */ + prompt: GenerateVideoPrompt; + + /** + * Number of videos to generate. + */ + n?: number; + + /** + * Maximum number of videos per API call. If not provided, the model's default will be used. + */ + maxVideosPerCall?: number; + + /** + * Aspect ratio of the videos to generate. Must have the format `{width}:{height}`. + */ + aspectRatio?: `${number}:${number}`; + + /** + * Resolution of the videos to generate. Must have the format `{width}x{height}`. + */ + resolution?: `${number}x${number}`; + + /** + * Duration of the video in seconds. + */ + duration?: number; + + /** + * Frames per second for the video. + */ + fps?: number; + + /** + * Seed for the video generation. + */ + seed?: number; + + /** + * Additional provider-specific options that are passed through to the provider + * as body parameters. + */ + providerOptions?: ProviderOptions; + + /** + * Maximum number of retries per video model call. Set to 0 to disable retries. + * + * @default 2 + */ + maxRetries?: number; + + /** + * Abort signal. + */ + abortSignal?: AbortSignal; + + /** + * Additional headers to include in the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; + + /** + * Custom download function for fetching videos from URLs. + * Use `createDownload()` from `ai` to create a download function with custom size limits. + * + * @default createDownload() (2 GiB limit) + */ + download?: (options: { + url: URL; + abortSignal?: AbortSignal; + }) => Promise<{ data: Uint8Array; mediaType: string | undefined }>; +}): Promise { + const model = resolveVideoModel(modelArg); + + const headersWithUserAgent = withUserAgentSuffix( + headers ?? {}, + `ai/${VERSION}`, + ); + + const { retry } = prepareRetries({ + maxRetries: maxRetriesArg, + abortSignal, + }); + + const { prompt, image } = normalizePrompt(promptArg); + + const maxVideosPerCallWithDefault = + maxVideosPerCall ?? (await invokeModelMaxVideosPerCall(model)) ?? 1; + + // parallelize calls to the model: + const callCount = Math.ceil(n / maxVideosPerCallWithDefault); + const callVideoCounts = Array.from({ length: callCount }, (_, index) => { + const remaining = n - index * maxVideosPerCallWithDefault; + return Math.min(remaining, maxVideosPerCallWithDefault); + }); + + const results = await Promise.all( + callVideoCounts.map(async callVideoCount => + retry(() => + model.doGenerate({ + prompt, + n: callVideoCount, + aspectRatio, + resolution, + duration, + fps, + seed, + image, + providerOptions: providerOptions ?? {}, + headers: headersWithUserAgent, + abortSignal, + } satisfies Experimental_VideoModelV3CallOptions), + ), + ), + ); + + // collect result videos, warnings, and response metadata + const videos: Array = []; + const warnings: Array = []; + const responses: Array = []; + const providerMetadata: SharedV3ProviderMetadata = {}; + + for (const result of results) { + for (const videoData of result.videos) { + switch (videoData.type) { + case 'url': { + const { data, mediaType: downloadedMediaType } = await downloadFn({ + url: new URL(videoData.url), + abortSignal, + }); + + // Filter out generic/unknown media types that should fall through to detection + const isUsableMediaType = (type: string | undefined): boolean => + !!type && type !== 'application/octet-stream'; + + const mediaType = + (isUsableMediaType(videoData.mediaType) && videoData.mediaType) || + (isUsableMediaType(downloadedMediaType) && downloadedMediaType) || + detectMediaType({ + data, + signatures: videoMediaTypeSignatures, + }) || + 'video/mp4'; + + videos.push( + new DefaultGeneratedFile({ + data, + mediaType, + }), + ); + break; + } + + case 'base64': { + videos.push( + new DefaultGeneratedFile({ + data: videoData.data, + mediaType: videoData.mediaType || 'video/mp4', + }), + ); + break; + } + + case 'binary': { + const mediaType = + videoData.mediaType || + detectMediaType({ + data: videoData.data, + signatures: videoMediaTypeSignatures, + }) || + 'video/mp4'; + + videos.push( + new DefaultGeneratedFile({ + data: videoData.data, + mediaType, + }), + ); + break; + } + } + } + + warnings.push(...result.warnings); + + responses.push({ + timestamp: result.response.timestamp, + modelId: result.response.modelId, + headers: result.response.headers, + providerMetadata: result.providerMetadata, + }); + + if (result.providerMetadata != null) { + for (const [providerName, metadata] of Object.entries( + result.providerMetadata, + )) { + const existingMetadata = providerMetadata[providerName]; + if (existingMetadata != null && typeof existingMetadata === 'object') { + providerMetadata[providerName] = { + ...existingMetadata, + ...metadata, + }; + + // Merge videos arrays if both exist + if ( + 'videos' in existingMetadata && + Array.isArray(existingMetadata.videos) && + 'videos' in metadata && + Array.isArray(metadata.videos) + ) { + (providerMetadata[providerName] as { videos: unknown[] }).videos = [ + ...existingMetadata.videos, + ...metadata.videos, + ]; + } + } else { + providerMetadata[providerName] = metadata; + } + } + } + } + + if (videos.length === 0) { + throw new NoVideoGeneratedError({ responses }); + } + + if (warnings.length > 0) { + logWarnings({ + warnings, + provider: model.provider, + model: model.modelId, + }); + } + + return { + video: videos[0], + videos, + warnings, + responses, + providerMetadata, + }; +} + +function normalizePrompt(promptArg: GenerateVideoPrompt): { + prompt: string | undefined; + image: Experimental_VideoModelV3File | undefined; +} { + if (typeof promptArg === 'string') { + return { + prompt: promptArg, + image: undefined, + }; + } + + let image: Experimental_VideoModelV3File | undefined; + + if (promptArg.image != null) { + const dataContent = promptArg.image; + + if (typeof dataContent === 'string') { + if ( + dataContent.startsWith('http://') || + dataContent.startsWith('https://') + ) { + image = { + type: 'url', + url: dataContent, + }; + } else if (dataContent.startsWith('data:')) { + const { mediaType, base64Content } = splitDataUrl(dataContent); + image = { + type: 'file', + mediaType: mediaType ?? 'image/png', + data: convertBase64ToUint8Array(base64Content ?? ''), + }; + } else { + const bytes = convertBase64ToUint8Array(dataContent); + const mediaType = + detectMediaType({ + data: bytes, + signatures: imageMediaTypeSignatures, + }) ?? 'image/png'; + + image = { + type: 'file', + mediaType, + data: bytes, + }; + } + } else if (dataContent instanceof Uint8Array) { + const mediaType = + detectMediaType({ + data: dataContent, + signatures: imageMediaTypeSignatures, + }) ?? 'image/png'; + + image = { + type: 'file', + mediaType, + data: dataContent, + }; + } + } + + return { + prompt: promptArg.text, + image, + }; +} + +async function invokeModelMaxVideosPerCall(model: Experimental_VideoModelV3) { + if (typeof model.maxVideosPerCall === 'function') { + return await model.maxVideosPerCall({ modelId: model.modelId }); + } + + return model.maxVideosPerCall; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-video/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-video/index.ts new file mode 100644 index 000000000..cce8a7a1d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/generate-video/index.ts @@ -0,0 +1,3 @@ +export type { GenerateVideoPrompt } from './generate-video'; +export { experimental_generateVideo } from './generate-video'; +export type { GenerateVideoResult } from './generate-video-result'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/global.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/global.ts new file mode 100644 index 000000000..c641650d4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/global.ts @@ -0,0 +1,36 @@ +import { ProviderV3 } from '@ai-sdk/provider'; +import { LogWarningsFunction } from './logger/log-warnings'; +import type { TelemetryIntegration } from './telemetry/telemetry-integration'; + +// add AI SDK default provider to the globalThis object +declare global { + /** + * The default provider to use for the AI SDK. + * String model ids are resolved to the default provider and model id. + * + * If not set, the default provider is the Vercel AI gateway provider. + * + * @see https://ai-sdk.dev/docs/ai-sdk-core/provider-management#global-provider-configuration + */ + var AI_SDK_DEFAULT_PROVIDER: ProviderV3 | undefined; + + /** + * The warning logger to use for the AI SDK. + * + * If not set, the default logger is the console.warn function. + * + * If set to false, no warnings are logged. + */ + var AI_SDK_LOG_WARNINGS: LogWarningsFunction | undefined | false; + + /** + * Globally registered telemetry integrations for the AI SDK. + * + * Integrations registered here receive lifecycle events (onStart, onStepStart, + * etc.) from every `generateText`, `streamText`, and similar call. + * + * Prefer using `registerTelemetryIntegration()` from `'ai'` instead of + * assigning this directly. + */ + var AI_SDK_TELEMETRY_INTEGRATIONS: TelemetryIntegration[] | undefined; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/index.ts new file mode 100644 index 000000000..20e194148 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/index.ts @@ -0,0 +1,49 @@ +// re-exports: +export { createGateway, gateway, type GatewayModelId } from '@ai-sdk/gateway'; +export { + asSchema, + createIdGenerator, + dynamicTool, + generateId, + jsonSchema, + parseJsonEventStream, + tool, + zodSchema, + type FlexibleSchema, + type IdGenerator, + type InferSchema, + type InferToolInput, + type InferToolOutput, + type Schema, + type Tool, + type ToolApprovalRequest, + type ToolApprovalResponse, + type ToolCallOptions, + type ToolExecutionOptions, + type ToolExecuteFunction, +} from '@ai-sdk/provider-utils'; + +// directory exports +export * from './agent'; +export * from './embed'; +export * from './error'; +export * from './generate-image'; +export * from './generate-object'; +export * from './generate-speech'; +export * from './generate-text'; +export * from './generate-video'; +export * from './logger'; +export * from './middleware'; +export * from './prompt'; +export * from './registry'; +export * from './rerank'; +export * from './text-stream'; +export * from './transcribe'; +export * from './types'; +export * from './ui'; +export * from './ui-message-stream'; +export * from './util'; +export * from './telemetry'; + +// import globals +import './global'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/logger/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/logger/index.ts new file mode 100644 index 000000000..89d17951c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/logger/index.ts @@ -0,0 +1,6 @@ +/** + * @deprecated Use `LogWarningsFunction` instead. + */ +export type { LogWarningsFunction as Experimental_LogWarningsFunction } from './log-warnings'; + +export { type LogWarningsFunction } from './log-warnings'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/logger/log-warnings.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/logger/log-warnings.ts new file mode 100644 index 000000000..4b0d33adf --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/logger/log-warnings.ts @@ -0,0 +1,140 @@ +import { Warning } from '../types'; + +/** + * A function for logging warnings. + * + * You can assign it to the `AI_SDK_LOG_WARNINGS` global variable to use it as the default warning logger. + * + * @example + * ```ts + * globalThis.AI_SDK_LOG_WARNINGS = (options) => { + * console.log('WARNINGS:', options.warnings, options.provider, options.model); + * }; + * ``` + */ +export type LogWarningsFunction = (options: { + /** + * The warnings returned by the model provider. + */ + warnings: Warning[]; + + /** + * The provider id used for the call. + */ + provider: string; + + /** + * The model id used for the call. + */ + model: string; +}) => void; + +/** + * Formats a warning object into a human-readable string with clear AI SDK branding. + * + * @param options - The options for formatting the warning. + * @param options.warning - The warning to format. + * @param options.provider - The provider id used for the call. + * @param options.model - The model id used for the call. + * @returns A formatted warning message string. + */ +function formatWarning({ + warning, + provider, + model, +}: { + warning: Warning; + provider: string; + model: string; +}): string { + const prefix = `AI SDK Warning (${provider} / ${model}):`; + + switch (warning.type) { + case 'unsupported': { + let message = `${prefix} The feature "${warning.feature}" is not supported.`; + if (warning.details) { + message += ` ${warning.details}`; + } + return message; + } + + case 'compatibility': { + let message = `${prefix} The feature "${warning.feature}" is used in a compatibility mode.`; + if (warning.details) { + message += ` ${warning.details}`; + } + return message; + } + + case 'other': { + return `${prefix} ${warning.message}`; + } + + default: { + // Fallback for any unknown warning types + return `${prefix} ${JSON.stringify(warning, null, 2)}`; + } + } +} + +export const FIRST_WARNING_INFO_MESSAGE = + 'AI SDK Warning System: To turn off warning logging, set the AI_SDK_LOG_WARNINGS global to false.'; + +let hasLoggedBefore = false; + +/** + * Logs warnings to the console or uses a custom logger if configured. + * + * The behavior can be customized via the `AI_SDK_LOG_WARNINGS` global variable: + * - If set to `false`, warnings are suppressed. + * - If set to a function, that function is called with the warnings. + * - Otherwise, warnings are logged to the console using `console.warn`. + * + * @param options - The options containing warnings and context. + * @param options.warnings - The warnings to log. + * @param options.provider - The provider id used for the call. + * @param options.model - The model id used for the call. + */ +export const logWarnings: LogWarningsFunction = options => { + // if the warnings array is empty, do nothing + if (options.warnings.length === 0) { + return; + } + + const logger = globalThis.AI_SDK_LOG_WARNINGS; + + // if the logger is set to false, do nothing + if (logger === false) { + return; + } + + // use the provided logger if it is a function + if (typeof logger === 'function') { + logger(options); + return; + } + + // display information note on first call + if (!hasLoggedBefore) { + hasLoggedBefore = true; + console.info(FIRST_WARNING_INFO_MESSAGE); + } + + // default behavior: log warnings to the console + for (const warning of options.warnings) { + console.warn( + formatWarning({ + warning, + provider: options.provider, + model: options.model, + }), + ); + } +}; + +/** + * Resets the internal logging state. Used for testing purposes. + */ +export const resetLogWarningsState = () => { + hasLoggedBefore = false; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/add-tool-input-examples-middleware.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/add-tool-input-examples-middleware.ts new file mode 100644 index 000000000..62cfdfdc9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/add-tool-input-examples-middleware.ts @@ -0,0 +1,90 @@ +import { JSONObject, LanguageModelV3FunctionTool } from '@ai-sdk/provider'; +import { LanguageModelMiddleware } from '../types'; + +function defaultFormatExample(example: { input: JSONObject }): string { + return JSON.stringify(example.input); +} + +/** + * Middleware that appends input examples to tool descriptions. + * + * This is useful for providers that don't natively support the `inputExamples` + * property. The middleware serializes examples into the tool's description text. + * + * @param options - Configuration options for the middleware. + * @param options.prefix - A prefix to prepend before the examples. Default: 'Input Examples:' + * @param options.format - Optional custom formatter for each example. + * Receives the example object and its index. Default: JSON.stringify(example.input) + * @param options.remove - Whether to remove the inputExamples property + * after adding them to the description. Default: true + * + * @example + * ```ts + * import { wrapLanguageModel, addToolInputExamplesMiddleware } from 'ai'; + * + * const model = wrapLanguageModel({ + * model: yourModel, + * middleware: addToolInputExamplesMiddleware(), + * }); + * ``` + */ +export function addToolInputExamplesMiddleware({ + prefix = 'Input Examples:', + format = defaultFormatExample, + remove = true, +}: { + /** + * A prefix to prepend before the examples. + */ + prefix?: string; + + /** + * Optional custom formatter for each example. + * Receives the example object and its index. + * Default: JSON.stringify(example.input) + */ + format?: (example: { input: JSONObject }, index: number) => string; + + /** + * Whether to remove the inputExamples property after adding them to the description. + * Default: true + */ + remove?: boolean; +} = {}): LanguageModelMiddleware { + return { + specificationVersion: 'v3', + transformParams: async ({ params }) => { + if (!params.tools?.length) { + return params; + } + + const transformedTools = params.tools.map(tool => { + // Only transform function tools that have inputExamples + if (tool.type !== 'function' || !tool.inputExamples?.length) { + return tool; + } + + const formattedExamples = tool.inputExamples + .map((example, index) => format(example, index)) + .join('\n'); + + const examplesSection = `${prefix}\n${formattedExamples}`; + + const toolDescription = tool.description + ? `${tool.description}\n\n${examplesSection}` + : examplesSection; + + return { + ...tool, + description: toolDescription, + inputExamples: remove ? undefined : tool.inputExamples, + } satisfies LanguageModelV3FunctionTool; + }); + + return { + ...params, + tools: transformedTools, + }; + }, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/default-embedding-settings-middleware.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/default-embedding-settings-middleware.ts new file mode 100644 index 000000000..8dff8c7f1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/default-embedding-settings-middleware.ts @@ -0,0 +1,22 @@ +import { EmbeddingModelV3CallOptions } from '@ai-sdk/provider'; +import { EmbeddingModelMiddleware } from '../types'; +import { mergeObjects } from '../util/merge-objects'; + +/** + * Applies default settings for an embedding model. + */ +export function defaultEmbeddingSettingsMiddleware({ + settings, +}: { + settings: Partial<{ + headers?: EmbeddingModelV3CallOptions['headers']; + providerOptions?: EmbeddingModelV3CallOptions['providerOptions']; + }>; +}): EmbeddingModelMiddleware { + return { + specificationVersion: 'v3', + transformParams: async ({ params }) => { + return mergeObjects(settings, params) as EmbeddingModelV3CallOptions; + }, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/default-settings-middleware.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/default-settings-middleware.ts new file mode 100644 index 000000000..980816dcf --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/default-settings-middleware.ts @@ -0,0 +1,33 @@ +import { LanguageModelV3CallOptions } from '@ai-sdk/provider'; +import { LanguageModelMiddleware } from '../types'; +import { mergeObjects } from '../util/merge-objects'; + +/** + * Applies default settings for a language model. + */ +export function defaultSettingsMiddleware({ + settings, +}: { + settings: Partial<{ + maxOutputTokens?: LanguageModelV3CallOptions['maxOutputTokens']; + temperature?: LanguageModelV3CallOptions['temperature']; + stopSequences?: LanguageModelV3CallOptions['stopSequences']; + topP?: LanguageModelV3CallOptions['topP']; + topK?: LanguageModelV3CallOptions['topK']; + presencePenalty?: LanguageModelV3CallOptions['presencePenalty']; + frequencyPenalty?: LanguageModelV3CallOptions['frequencyPenalty']; + responseFormat?: LanguageModelV3CallOptions['responseFormat']; + seed?: LanguageModelV3CallOptions['seed']; + tools?: LanguageModelV3CallOptions['tools']; + toolChoice?: LanguageModelV3CallOptions['toolChoice']; + headers?: LanguageModelV3CallOptions['headers']; + providerOptions?: LanguageModelV3CallOptions['providerOptions']; + }>; +}): LanguageModelMiddleware { + return { + specificationVersion: 'v3', + transformParams: async ({ params }) => { + return mergeObjects(settings, params) as LanguageModelV3CallOptions; + }, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/extract-json-middleware.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/extract-json-middleware.ts new file mode 100644 index 000000000..75174a4d9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/extract-json-middleware.ts @@ -0,0 +1,197 @@ +import type { + LanguageModelV3Content, + LanguageModelV3StreamPart, +} from '@ai-sdk/provider'; +import { LanguageModelMiddleware } from '../types/language-model-middleware'; + +/** + * Default transform function that strips markdown code fences from text. + */ +function defaultTransform(text: string): string { + return text + .replace(/^```(?:json)?\s*\n?/, '') + .replace(/\n?```\s*$/, '') + .trim(); +} + +/** + * Middleware that extracts JSON from text content by stripping + * markdown code fences and other formatting. + * + * This is useful when using Output.object() with models that wrap + * JSON responses in markdown code blocks. + * + * @param options - Configuration options for the middleware. + * @param options.transform - Custom transform function. If provided, this will be + * used instead of the default markdown fence stripping. + */ +export function extractJsonMiddleware(options?: { + /** + * Custom transform function to apply to text content. + * Receives the raw text and should return the transformed text. + * If not provided, the default transform strips markdown code fences. + */ + transform?: (text: string) => string; +}): LanguageModelMiddleware { + const transform = options?.transform ?? defaultTransform; + const hasCustomTransform = options?.transform !== undefined; + + return { + specificationVersion: 'v3', + + wrapGenerate: async ({ doGenerate }) => { + const { content, ...rest } = await doGenerate(); + + const transformedContent: LanguageModelV3Content[] = []; + for (const part of content) { + if (part.type !== 'text') { + transformedContent.push(part); + continue; + } + + transformedContent.push({ + ...part, + text: transform(part.text), + }); + } + + return { content: transformedContent, ...rest }; + }, + wrapStream: async ({ doStream }) => { + const { stream, ...rest } = await doStream(); + + const textBlocks: Record< + string, + { + startEvent: LanguageModelV3StreamPart; + phase: 'prefix' | 'streaming' | 'buffering'; + buffer: string; + prefixStripped: boolean; + } + > = {}; + + const SUFFIX_BUFFER_SIZE = 12; + + return { + stream: stream.pipeThrough( + new TransformStream< + LanguageModelV3StreamPart, + LanguageModelV3StreamPart + >({ + transform: (chunk, controller) => { + if (chunk.type === 'text-start') { + textBlocks[chunk.id] = { + startEvent: chunk, + // Custom transforms need to buffer all content + phase: hasCustomTransform ? 'buffering' : 'prefix', + buffer: '', + prefixStripped: false, + }; + return; + } + + if (chunk.type === 'text-delta') { + const block = textBlocks[chunk.id]; + if (!block) { + controller.enqueue(chunk); + return; + } + + block.buffer += chunk.delta; + + // Custom transform: buffer everything, transform at end + if (block.phase === 'buffering') { + return; + } + + if (block.phase === 'prefix') { + // Check if we can determine prefix status + if ( + block.buffer.length > 0 && + !block.buffer.startsWith('`') + ) { + block.phase = 'streaming'; + controller.enqueue(block.startEvent); + } else if (block.buffer.startsWith('```')) { + // Only strip prefix when we have a newline (fence is complete) + if (block.buffer.includes('\n')) { + const prefixMatch = + block.buffer.match(/^```(?:json)?\s*\n/); + if (prefixMatch) { + block.buffer = block.buffer.slice( + prefixMatch[0].length, + ); + block.prefixStripped = true; + block.phase = 'streaming'; + controller.enqueue(block.startEvent); + } else { + // Has newline but doesn't match fence pattern + block.phase = 'streaming'; + controller.enqueue(block.startEvent); + } + } + // else keep buffering until we see a newline + } else if ( + block.buffer.length >= 3 && + !block.buffer.startsWith('```') + ) { + block.phase = 'streaming'; + controller.enqueue(block.startEvent); + } + } + + // Stream content + if ( + block.phase === 'streaming' && + block.buffer.length > SUFFIX_BUFFER_SIZE + ) { + const toStream = block.buffer.slice(0, -SUFFIX_BUFFER_SIZE); + block.buffer = block.buffer.slice(-SUFFIX_BUFFER_SIZE); + controller.enqueue({ + type: 'text-delta', + id: chunk.id, + delta: toStream, + }); + } + return; + } + + if (chunk.type === 'text-end') { + const block = textBlocks[chunk.id]; + if (block) { + if (block.phase === 'prefix' || block.phase === 'buffering') { + controller.enqueue(block.startEvent); + } + + let remaining = block.buffer; + if (block.phase === 'buffering') { + remaining = transform(remaining); + } else if (block.prefixStripped) { + // strip suffix since prefix already handled + remaining = remaining.replace(/\n?```\s*$/, '').trimEnd(); + } else { + // Apply full transform (handles both prefix and suffix) + remaining = transform(remaining); + } + + if (remaining.length > 0) { + controller.enqueue({ + type: 'text-delta', + id: chunk.id, + delta: remaining, + }); + } + controller.enqueue(chunk); + delete textBlocks[chunk.id]; + return; + } + } + controller.enqueue(chunk); + }, + }), + ), + ...rest, + }; + }, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/extract-reasoning-middleware.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/extract-reasoning-middleware.ts new file mode 100644 index 000000000..ac7f918e8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/extract-reasoning-middleware.ts @@ -0,0 +1,249 @@ +import type { + LanguageModelV3Content, + LanguageModelV3StreamPart, +} from '@ai-sdk/provider'; +import { LanguageModelMiddleware } from '../types/language-model-middleware'; +import { getPotentialStartIndex } from '../util/get-potential-start-index'; + +/** + * Extracts an XML-tagged reasoning section from the generated text and exposes it + * as a `reasoning` property on the result. + * + * @param tagName - The name of the XML tag to extract reasoning from. + * @param separator - The separator to use between reasoning and text sections. + * @param startWithReasoning - Whether to start with reasoning tokens. + */ +export function extractReasoningMiddleware({ + tagName, + separator = '\n', + startWithReasoning = false, +}: { + tagName: string; + separator?: string; + startWithReasoning?: boolean; +}): LanguageModelMiddleware { + const openingTag = `<${tagName}>`; + const closingTag = `<\/${tagName}>`; + + return { + specificationVersion: 'v3', + wrapGenerate: async ({ doGenerate }) => { + const { content, ...rest } = await doGenerate(); + + const transformedContent: LanguageModelV3Content[] = []; + for (const part of content) { + if (part.type !== 'text') { + transformedContent.push(part); + continue; + } + + const text = startWithReasoning ? openingTag + part.text : part.text; + + const regexp = new RegExp(`${openingTag}(.*?)${closingTag}`, 'gs'); + const matches = Array.from(text.matchAll(regexp)); + + if (!matches.length) { + transformedContent.push(part); + continue; + } + + const reasoningText = matches.map(match => match[1]).join(separator); + + let textWithoutReasoning = text; + for (let i = matches.length - 1; i >= 0; i--) { + const match = matches[i]; + + const beforeMatch = textWithoutReasoning.slice(0, match.index); + const afterMatch = textWithoutReasoning.slice( + match.index! + match[0].length, + ); + + textWithoutReasoning = + beforeMatch + + (beforeMatch.length > 0 && afterMatch.length > 0 ? separator : '') + + afterMatch; + } + + transformedContent.push({ + type: 'reasoning', + text: reasoningText, + }); + + transformedContent.push({ + type: 'text', + text: textWithoutReasoning, + }); + } + + return { content: transformedContent, ...rest }; + }, + + wrapStream: async ({ doStream }) => { + const { stream, ...rest } = await doStream(); + + const reasoningExtractions: Record< + string, + { + isFirstReasoning: boolean; + isFirstText: boolean; + afterSwitch: boolean; + isReasoning: boolean; + buffer: string; + idCounter: number; + textId: string; + } + > = {}; + + let delayedTextStart: LanguageModelV3StreamPart | undefined; + + return { + stream: stream.pipeThrough( + new TransformStream< + LanguageModelV3StreamPart, + LanguageModelV3StreamPart + >({ + transform: (chunk, controller) => { + // do not send `text-start` before `reasoning-start` + // https://github.com/vercel/ai/issues/7774 + if (chunk.type === 'text-start') { + delayedTextStart = chunk; + return; + } + + if (chunk.type === 'text-end' && delayedTextStart) { + controller.enqueue(delayedTextStart); + delayedTextStart = undefined; + } + + if (chunk.type !== 'text-delta') { + controller.enqueue(chunk); + return; + } + + if (reasoningExtractions[chunk.id] == null) { + reasoningExtractions[chunk.id] = { + isFirstReasoning: true, + isFirstText: true, + afterSwitch: false, + isReasoning: startWithReasoning, + buffer: '', + idCounter: 0, + textId: chunk.id, + }; + } + + const activeExtraction = reasoningExtractions[chunk.id]; + + activeExtraction.buffer += chunk.delta; + + function publish(text: string) { + if (text.length > 0) { + const prefix = + activeExtraction.afterSwitch && + (activeExtraction.isReasoning + ? !activeExtraction.isFirstReasoning + : !activeExtraction.isFirstText) + ? separator + : ''; + + if ( + activeExtraction.isReasoning && + (activeExtraction.afterSwitch || + activeExtraction.isFirstReasoning) + ) { + controller.enqueue({ + type: 'reasoning-start', + id: `reasoning-${activeExtraction.idCounter}`, + }); + } + + if (activeExtraction.isReasoning) { + controller.enqueue({ + type: 'reasoning-delta', + delta: prefix + text, + id: `reasoning-${activeExtraction.idCounter}`, + }); + } else { + if (delayedTextStart) { + controller.enqueue(delayedTextStart); + delayedTextStart = undefined; + } + controller.enqueue({ + type: 'text-delta', + delta: prefix + text, + id: activeExtraction.textId, + }); + } + activeExtraction.afterSwitch = false; + + if (activeExtraction.isReasoning) { + activeExtraction.isFirstReasoning = false; + } else { + activeExtraction.isFirstText = false; + } + } + } + + do { + const nextTag = activeExtraction.isReasoning + ? closingTag + : openingTag; + + const startIndex = getPotentialStartIndex( + activeExtraction.buffer, + nextTag, + ); + + // no opening or closing tag found, publish the buffer + if (startIndex == null) { + publish(activeExtraction.buffer); + activeExtraction.buffer = ''; + break; + } + + // publish text before the tag + publish(activeExtraction.buffer.slice(0, startIndex)); + + const foundFullMatch = + startIndex + nextTag.length <= activeExtraction.buffer.length; + + if (foundFullMatch) { + activeExtraction.buffer = activeExtraction.buffer.slice( + startIndex + nextTag.length, + ); + + if (activeExtraction.isReasoning) { + // Emit reasoning-start for empty reasoning blocks (no delta was published). + // This handles both cases: + // - startWithReasoning=false: (afterSwitch=true) + // - startWithReasoning=true: immediate (afterSwitch=false) + if (activeExtraction.isFirstReasoning) { + controller.enqueue({ + type: 'reasoning-start', + id: `reasoning-${activeExtraction.idCounter}`, + }); + } + + // reasoning part finished: + controller.enqueue({ + type: 'reasoning-end', + id: `reasoning-${activeExtraction.idCounter++}`, + }); + } + + activeExtraction.isReasoning = !activeExtraction.isReasoning; + activeExtraction.afterSwitch = true; + } else { + activeExtraction.buffer = + activeExtraction.buffer.slice(startIndex); + break; + } + } while (true); + }, + }), + ), + ...rest, + }; + }, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/index.ts new file mode 100644 index 000000000..4d349a8b4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/index.ts @@ -0,0 +1,10 @@ +export { defaultEmbeddingSettingsMiddleware } from './default-embedding-settings-middleware'; +export { defaultSettingsMiddleware } from './default-settings-middleware'; +export { extractJsonMiddleware } from './extract-json-middleware'; +export { extractReasoningMiddleware } from './extract-reasoning-middleware'; +export { simulateStreamingMiddleware } from './simulate-streaming-middleware'; +export { addToolInputExamplesMiddleware } from './add-tool-input-examples-middleware'; +export { wrapLanguageModel } from './wrap-language-model'; +export { wrapEmbeddingModel } from './wrap-embedding-model'; +export { wrapImageModel } from './wrap-image-model'; +export { wrapProvider } from './wrap-provider'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/simulate-streaming-middleware.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/simulate-streaming-middleware.ts new file mode 100644 index 000000000..d06cdadbe --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/simulate-streaming-middleware.ts @@ -0,0 +1,79 @@ +import type { LanguageModelV3StreamPart } from '@ai-sdk/provider'; +import { LanguageModelMiddleware } from '../types'; + +/** + * Simulates streaming chunks with the response from a generate call. + */ +export function simulateStreamingMiddleware(): LanguageModelMiddleware { + return { + specificationVersion: 'v3', + wrapStream: async ({ doGenerate }) => { + const result = await doGenerate(); + + let id = 0; + + const simulatedStream = new ReadableStream({ + start(controller) { + controller.enqueue({ + type: 'stream-start', + warnings: result.warnings, + }); + + controller.enqueue({ type: 'response-metadata', ...result.response }); + + for (const part of result.content) { + switch (part.type) { + case 'text': { + if (part.text.length > 0) { + controller.enqueue({ type: 'text-start', id: String(id) }); + controller.enqueue({ + type: 'text-delta', + id: String(id), + delta: part.text, + }); + controller.enqueue({ type: 'text-end', id: String(id) }); + id++; + } + break; + } + case 'reasoning': { + controller.enqueue({ + type: 'reasoning-start', + id: String(id), + providerMetadata: part.providerMetadata, + }); + controller.enqueue({ + type: 'reasoning-delta', + id: String(id), + delta: part.text, + }); + controller.enqueue({ type: 'reasoning-end', id: String(id) }); + id++; + break; + } + default: { + controller.enqueue(part); + break; + } + } + } + + controller.enqueue({ + type: 'finish', + finishReason: result.finishReason, + usage: result.usage, + providerMetadata: result.providerMetadata, + }); + + controller.close(); + }, + }); + + return { + stream: simulatedStream, + request: result.request, + response: result.response, + }; + }, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-embedding-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-embedding-model.ts new file mode 100644 index 000000000..c241a58b0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-embedding-model.ts @@ -0,0 +1,86 @@ +import { + EmbeddingModelV3, + EmbeddingModelV3CallOptions, +} from '@ai-sdk/provider'; +import { EmbeddingModelMiddleware } from '../types'; +import { asArray } from '../util/as-array'; + +/** + * Wraps an EmbeddingModelV3 instance with middleware functionality. + * This function allows you to apply middleware to transform parameters, + * wrap embed operations of an embedding model. + * + * @param options - Configuration options for wrapping the embedding model. + * @param options.model - The original EmbeddingModelV3 instance to be wrapped. + * @param options.middleware - The middleware to be applied to the embedding model. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model. + * @param options.modelId - Optional custom model ID to override the original model's ID. + * @param options.providerId - Optional custom provider ID to override the original model's provider ID. + * @returns A new EmbeddingModelV3 instance with middleware applied. + */ +export const wrapEmbeddingModel = ({ + model, + middleware: middlewareArg, + modelId, + providerId, +}: { + model: EmbeddingModelV3; + middleware: EmbeddingModelMiddleware | EmbeddingModelMiddleware[]; + modelId?: string; + providerId?: string; +}): EmbeddingModelV3 => { + return [...asArray(middlewareArg)] + .reverse() + .reduce((wrappedModel, middleware) => { + return doWrap({ model: wrappedModel, middleware, modelId, providerId }); + }, model); +}; + +const doWrap = ({ + model, + middleware: { + transformParams, + wrapEmbed, + overrideProvider, + overrideModelId, + overrideMaxEmbeddingsPerCall, + overrideSupportsParallelCalls, + }, + modelId, + providerId, +}: { + model: EmbeddingModelV3; + middleware: EmbeddingModelMiddleware; + modelId?: string; + providerId?: string; +}): EmbeddingModelV3 => { + async function doTransform({ + params, + }: { + params: EmbeddingModelV3CallOptions; + }) { + return transformParams ? await transformParams({ params, model }) : params; + } + + return { + specificationVersion: 'v3', + provider: providerId ?? overrideProvider?.({ model }) ?? model.provider, + modelId: modelId ?? overrideModelId?.({ model }) ?? model.modelId, + maxEmbeddingsPerCall: + overrideMaxEmbeddingsPerCall?.({ model }) ?? model.maxEmbeddingsPerCall, + supportsParallelCalls: + overrideSupportsParallelCalls?.({ model }) ?? model.supportsParallelCalls, + async doEmbed( + params: EmbeddingModelV3CallOptions, + ): Promise>> { + const transformedParams = await doTransform({ params }); + const doEmbed = async () => model.doEmbed(transformedParams); + return wrapEmbed + ? wrapEmbed({ + doEmbed, + params: transformedParams, + model, + }) + : doEmbed(); + }, + }; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-image-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-image-model.ts new file mode 100644 index 000000000..8877372b6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-image-model.ts @@ -0,0 +1,85 @@ +import { ImageModelV3, ImageModelV3CallOptions } from '@ai-sdk/provider'; +import { ImageModelMiddleware } from '../types'; +import { asArray } from '../util/as-array'; + +/** + * Wraps an ImageModelV3 instance with middleware functionality. + * This function allows you to apply middleware to transform parameters + * and wrap generate operations of an image model. + * + * @param options - Configuration options for wrapping the image model. + * @param options.model - The original ImageModelV3 instance to be wrapped. + * @param options.middleware - The middleware to be applied to the image model. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model. + * @param options.modelId - Optional custom model ID to override the original model's ID. + * @param options.providerId - Optional custom provider ID to override the original model's provider ID. + * @returns A new ImageModelV3 instance with middleware applied. + */ +export const wrapImageModel = ({ + model, + middleware: middlewareArg, + modelId, + providerId, +}: { + model: ImageModelV3; + middleware: ImageModelMiddleware | ImageModelMiddleware[]; + modelId?: string; + providerId?: string; +}): ImageModelV3 => { + return [...asArray(middlewareArg)] + .reverse() + .reduce((wrappedModel, middleware) => { + return doWrap({ model: wrappedModel, middleware, modelId, providerId }); + }, model); +}; + +const doWrap = ({ + model, + middleware: { + transformParams, + wrapGenerate, + overrideProvider, + overrideModelId, + overrideMaxImagesPerCall, + }, + modelId, + providerId, +}: { + model: ImageModelV3; + middleware: ImageModelMiddleware; + modelId?: string; + providerId?: string; +}): ImageModelV3 => { + async function doTransform({ params }: { params: ImageModelV3CallOptions }) { + return transformParams ? await transformParams({ params, model }) : params; + } + + const maxImagesPerCallRaw = + overrideMaxImagesPerCall?.({ model }) ?? model.maxImagesPerCall; + + // Ensure provider implementations that rely on `this` inside `maxImagesPerCall` + // keep working after the value is copied onto the wrapper object. + const maxImagesPerCall = + maxImagesPerCallRaw instanceof Function + ? maxImagesPerCallRaw.bind(model) + : maxImagesPerCallRaw; + + return { + specificationVersion: 'v3', + provider: providerId ?? overrideProvider?.({ model }) ?? model.provider, + modelId: modelId ?? overrideModelId?.({ model }) ?? model.modelId, + maxImagesPerCall, + async doGenerate( + params: ImageModelV3CallOptions, + ): Promise>> { + const transformedParams = await doTransform({ params }); + const doGenerate = async () => model.doGenerate(transformedParams); + return wrapGenerate + ? wrapGenerate({ + doGenerate, + params: transformedParams, + model, + }) + : doGenerate(); + }, + }; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-language-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-language-model.ts new file mode 100644 index 000000000..ea6f88819 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-language-model.ts @@ -0,0 +1,104 @@ +import { + LanguageModelV3, + LanguageModelV3CallOptions, + LanguageModelV3GenerateResult, + LanguageModelV3StreamResult, +} from '@ai-sdk/provider'; +import { LanguageModelMiddleware } from '../types'; +import { asArray } from '../util/as-array'; + +/** + * Wraps a LanguageModelV3 instance with middleware functionality. + * This function allows you to apply middleware to transform parameters, + * wrap generate operations, and wrap stream operations of a language model. + * + * @param options - Configuration options for wrapping the language model. + * @param options.model - The original LanguageModelV3 instance to be wrapped. + * @param options.middleware - The middleware to be applied to the language model. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model. + * @param options.modelId - Optional custom model ID to override the original model's ID. + * @param options.providerId - Optional custom provider ID to override the original model's provider ID. + * @returns A new LanguageModelV3 instance with middleware applied. + */ +export const wrapLanguageModel = ({ + model, + middleware: middlewareArg, + modelId, + providerId, +}: { + model: LanguageModelV3; + middleware: LanguageModelMiddleware | LanguageModelMiddleware[]; + modelId?: string; + providerId?: string; +}): LanguageModelV3 => { + return [...asArray(middlewareArg)] + .reverse() + .reduce((wrappedModel, middleware) => { + return doWrap({ model: wrappedModel, middleware, modelId, providerId }); + }, model); +}; + +const doWrap = ({ + model, + middleware: { + transformParams, + wrapGenerate, + wrapStream, + overrideProvider, + overrideModelId, + overrideSupportedUrls, + }, + modelId, + providerId, +}: { + model: LanguageModelV3; + middleware: LanguageModelMiddleware; + modelId?: string; + providerId?: string; +}): LanguageModelV3 => { + async function doTransform({ + params, + type, + }: { + params: LanguageModelV3CallOptions; + type: 'generate' | 'stream'; + }) { + return transformParams + ? await transformParams({ params, type, model }) + : params; + } + + return { + specificationVersion: 'v3', + + provider: providerId ?? overrideProvider?.({ model }) ?? model.provider, + modelId: modelId ?? overrideModelId?.({ model }) ?? model.modelId, + supportedUrls: overrideSupportedUrls?.({ model }) ?? model.supportedUrls, + + async doGenerate( + params: LanguageModelV3CallOptions, + ): Promise { + const transformedParams = await doTransform({ params, type: 'generate' }); + const doGenerate = async () => model.doGenerate(transformedParams); + const doStream = async () => model.doStream(transformedParams); + return wrapGenerate + ? wrapGenerate({ + doGenerate, + doStream, + params: transformedParams, + model, + }) + : doGenerate(); + }, + + async doStream( + params: LanguageModelV3CallOptions, + ): Promise { + const transformedParams = await doTransform({ params, type: 'stream' }); + const doGenerate = async () => model.doGenerate(transformedParams); + const doStream = async () => model.doStream(transformedParams); + return wrapStream + ? wrapStream({ doGenerate, doStream, params: transformedParams, model }) + : doStream(); + }, + }; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-provider.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-provider.ts new file mode 100644 index 000000000..ff59f933a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/middleware/wrap-provider.ts @@ -0,0 +1,51 @@ +import type { ProviderV2, ProviderV3 } from '@ai-sdk/provider'; +import { ImageModelMiddleware } from '../types/image-model-middleware'; +import { LanguageModelMiddleware } from '../types/language-model-middleware'; +import { wrapImageModel } from './wrap-image-model'; +import { wrapLanguageModel } from './wrap-language-model'; +import { asProviderV3 } from '../model/as-provider-v3'; + +/** + * Wraps a ProviderV3 instance with middleware functionality. + * This function allows you to apply middleware to all language models + * from the provider, enabling you to transform parameters, wrap generate + * operations, and wrap stream operations for every language model. + * + * @param options - Configuration options for wrapping the provider. + * @param options.provider - The original ProviderV3 instance to be wrapped. + * @param options.languageModelMiddleware - The middleware to be applied to all language models from the provider. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model. + * @param options.imageModelMiddleware - Optional middleware to be applied to all image models from the provider. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model. + * @returns A new ProviderV3 instance with middleware applied to all language models. + */ +export function wrapProvider({ + provider, + languageModelMiddleware, + imageModelMiddleware, +}: { + provider: ProviderV3 | ProviderV2; + languageModelMiddleware: LanguageModelMiddleware | LanguageModelMiddleware[]; + imageModelMiddleware?: ImageModelMiddleware | ImageModelMiddleware[]; +}): ProviderV3 { + const providerV3 = asProviderV3(provider); + return { + specificationVersion: 'v3', + languageModel: (modelId: string) => + wrapLanguageModel({ + model: providerV3.languageModel(modelId), + middleware: languageModelMiddleware, + }), + embeddingModel: providerV3.embeddingModel, + imageModel: (modelId: string) => { + let model = providerV3.imageModel(modelId); + + if (imageModelMiddleware != null) { + model = wrapImageModel({ model, middleware: imageModelMiddleware }); + } + + return model; + }, + transcriptionModel: providerV3.transcriptionModel, + speechModel: providerV3.speechModel, + rerankingModel: providerV3.rerankingModel, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-embedding-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-embedding-model-v3.ts new file mode 100644 index 000000000..890779aaa --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-embedding-model-v3.ts @@ -0,0 +1,24 @@ +import { EmbeddingModelV2, EmbeddingModelV3 } from '@ai-sdk/provider'; +import { logV2CompatibilityWarning } from '../util/log-v2-compatibility-warning'; + +export function asEmbeddingModelV3( + model: EmbeddingModelV2 | EmbeddingModelV3, +): EmbeddingModelV3 { + if (model.specificationVersion === 'v3') { + return model; + } + + logV2CompatibilityWarning({ + provider: model.provider, + modelId: model.modelId, + }); + + // TODO this could break, we need to properly map v2 to v3 + // and support all relevant v3 properties: + return new Proxy(model, { + get(target, prop: keyof EmbeddingModelV2) { + if (prop === 'specificationVersion') return 'v3'; + return target[prop]; + }, + }) as unknown as EmbeddingModelV3; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-image-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-image-model-v3.ts new file mode 100644 index 000000000..a39d75f6e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-image-model-v3.ts @@ -0,0 +1,24 @@ +import { ImageModelV2, ImageModelV3 } from '@ai-sdk/provider'; +import { logV2CompatibilityWarning } from '../util/log-v2-compatibility-warning'; + +export function asImageModelV3( + model: ImageModelV2 | ImageModelV3, +): ImageModelV3 { + if (model.specificationVersion === 'v3') { + return model; + } + + logV2CompatibilityWarning({ + provider: model.provider, + modelId: model.modelId, + }); + + // TODO this could break, we need to properly map v2 to v3 + // and support all relevant v3 properties: + return new Proxy(model, { + get(target, prop: keyof ImageModelV2) { + if (prop === 'specificationVersion') return 'v3'; + return target[prop]; + }, + }) as unknown as ImageModelV3; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-language-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-language-model-v3.ts new file mode 100644 index 000000000..017c4ce22 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-language-model-v3.ts @@ -0,0 +1,103 @@ +import { + LanguageModelV2, + LanguageModelV2FinishReason, + LanguageModelV2StreamPart, + LanguageModelV2Usage, + LanguageModelV3, + LanguageModelV3FinishReason, + LanguageModelV3StreamPart, + LanguageModelV3Usage, +} from '@ai-sdk/provider'; +import { logV2CompatibilityWarning } from '../util/log-v2-compatibility-warning'; + +export function asLanguageModelV3( + model: LanguageModelV2 | LanguageModelV3, +): LanguageModelV3 { + if (model.specificationVersion === 'v3') { + return model; + } + + logV2CompatibilityWarning({ + provider: model.provider, + modelId: model.modelId, + }); + + // TODO this could break, we need to properly map v2 to v3 + // and support all relevant v3 properties: + return new Proxy(model, { + get(target, prop: keyof LanguageModelV2) { + switch (prop) { + case 'specificationVersion': + return 'v3'; + case 'doGenerate': + return async (...args: Parameters) => { + const result = await target.doGenerate(...args); + return { + ...result, + finishReason: convertV2FinishReasonToV3(result.finishReason), + usage: convertV2UsageToV3(result.usage), + }; + }; + case 'doStream': + return async (...args: Parameters) => { + const result = await target.doStream(...args); + return { + ...result, + stream: convertV2StreamToV3(result.stream), + }; + }; + default: + return target[prop]; + } + }, + }) as unknown as LanguageModelV3; +} + +function convertV2StreamToV3( + stream: ReadableStream, +): ReadableStream { + return stream.pipeThrough( + new TransformStream({ + transform(chunk, controller) { + switch (chunk.type) { + case 'finish': + controller.enqueue({ + ...chunk, + finishReason: convertV2FinishReasonToV3(chunk.finishReason), + usage: convertV2UsageToV3(chunk.usage), + }); + break; + default: + // TODO: AI SDK 6 - no casting (stream parts need to be mapped) + controller.enqueue(chunk as LanguageModelV3StreamPart); + break; + } + }, + }), + ); +} + +function convertV2FinishReasonToV3( + finishReason: LanguageModelV2FinishReason, +): LanguageModelV3FinishReason { + return { + unified: finishReason === 'unknown' ? 'other' : finishReason, + raw: undefined, + }; +} + +function convertV2UsageToV3(usage: LanguageModelV2Usage): LanguageModelV3Usage { + return { + inputTokens: { + total: usage.inputTokens, + noCache: undefined, + cacheRead: usage.cachedInputTokens, + cacheWrite: undefined, + }, + outputTokens: { + total: usage.outputTokens, + text: undefined, + reasoning: usage.reasoningTokens, + }, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-provider-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-provider-v3.ts new file mode 100644 index 000000000..a09402b68 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-provider-v3.ts @@ -0,0 +1,36 @@ +import { ProviderV2, ProviderV3 } from '@ai-sdk/provider'; +import { asEmbeddingModelV3 } from './as-embedding-model-v3'; +import { asImageModelV3 } from './as-image-model-v3'; +import { asLanguageModelV3 } from './as-language-model-v3'; +import { asTranscriptionModelV3 } from './as-transcription-model-v3'; +import { asSpeechModelV3 } from './as-speech-model-v3'; + +export function asProviderV3(provider: ProviderV2 | ProviderV3): ProviderV3 { + if ( + 'specificationVersion' in provider && + provider.specificationVersion === 'v3' + ) { + return provider; + } + + // v3 providers have already been returned + const v2Provider: ProviderV2 = provider as ProviderV2; + + return { + specificationVersion: 'v3', + languageModel: (modelId: string) => + asLanguageModelV3(v2Provider.languageModel(modelId)), + embeddingModel: (modelId: string) => + asEmbeddingModelV3(v2Provider.textEmbeddingModel(modelId)), + imageModel: (modelId: string) => + asImageModelV3(v2Provider.imageModel(modelId)), + transcriptionModel: v2Provider.transcriptionModel + ? (modelId: string) => + asTranscriptionModelV3(v2Provider.transcriptionModel!(modelId)) + : undefined, + speechModel: v2Provider.speechModel + ? (modelId: string) => asSpeechModelV3(v2Provider.speechModel!(modelId)) + : undefined, + rerankingModel: undefined, // v2 providers don't have reranking models + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-speech-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-speech-model-v3.ts new file mode 100644 index 000000000..1ab4e0d00 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-speech-model-v3.ts @@ -0,0 +1,24 @@ +import { SpeechModelV2, SpeechModelV3 } from '@ai-sdk/provider'; +import { logV2CompatibilityWarning } from '../util/log-v2-compatibility-warning'; + +export function asSpeechModelV3( + model: SpeechModelV3 | SpeechModelV2, +): SpeechModelV3 { + if (model.specificationVersion === 'v3') { + return model; + } + + logV2CompatibilityWarning({ + provider: model.provider, + modelId: model.modelId, + }); + + // TODO this could break, we need to properly map v2 to v3 + // and support all relevant v3 properties: + return new Proxy(model, { + get(target, prop: keyof SpeechModelV2) { + if (prop === 'specificationVersion') return 'v3'; + return target[prop]; + }, + }) as unknown as SpeechModelV3; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-transcription-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-transcription-model-v3.ts new file mode 100644 index 000000000..d96ab0e37 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/as-transcription-model-v3.ts @@ -0,0 +1,24 @@ +import { TranscriptionModelV2, TranscriptionModelV3 } from '@ai-sdk/provider'; +import { logV2CompatibilityWarning } from '../util/log-v2-compatibility-warning'; + +export function asTranscriptionModelV3( + model: TranscriptionModelV3 | TranscriptionModelV2, +): TranscriptionModelV3 { + if (model.specificationVersion === 'v3') { + return model; + } + + logV2CompatibilityWarning({ + provider: model.provider, + modelId: model.modelId, + }); + + // TODO this could break, we need to properly map v2 to v3 + // and support all relevant v3 properties: + return new Proxy(model, { + get(target, prop: keyof TranscriptionModelV2) { + if (prop === 'specificationVersion') return 'v3'; + return target[prop]; + }, + }) as unknown as TranscriptionModelV3; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/resolve-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/resolve-model.ts new file mode 100644 index 000000000..0514b7d8a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/model/resolve-model.ts @@ -0,0 +1,159 @@ +import { gateway } from '@ai-sdk/gateway'; +import { + EmbeddingModelV3, + Experimental_VideoModelV3, + ImageModelV3, + LanguageModelV3, + ProviderV3, + SpeechModelV3, + TranscriptionModelV3, +} from '@ai-sdk/provider'; +import { UnsupportedModelVersionError } from '../error'; +import { EmbeddingModel } from '../types/embedding-model'; +import { LanguageModel } from '../types/language-model'; +import { SpeechModel } from '../types/speech-model'; +import { TranscriptionModel } from '../types/transcription-model'; +import { asEmbeddingModelV3 } from './as-embedding-model-v3'; +import { asImageModelV3 } from './as-image-model-v3'; +import { asLanguageModelV3 } from './as-language-model-v3'; +import { asSpeechModelV3 } from './as-speech-model-v3'; +import { asTranscriptionModelV3 } from './as-transcription-model-v3'; +import { ImageModel } from '../types/image-model'; +import { VideoModel } from '../types/video-model'; + +export function resolveLanguageModel(model: LanguageModel): LanguageModelV3 { + if (typeof model !== 'string') { + if ( + model.specificationVersion !== 'v3' && + model.specificationVersion !== 'v2' + ) { + const unsupportedModel: any = model; + throw new UnsupportedModelVersionError({ + version: unsupportedModel.specificationVersion, + provider: unsupportedModel.provider, + modelId: unsupportedModel.modelId, + }); + } + + return asLanguageModelV3(model); + } + + return getGlobalProvider().languageModel(model); +} + +export function resolveEmbeddingModel(model: EmbeddingModel): EmbeddingModelV3 { + if (typeof model !== 'string') { + if ( + model.specificationVersion !== 'v3' && + model.specificationVersion !== 'v2' + ) { + const unsupportedModel: any = model; + throw new UnsupportedModelVersionError({ + version: unsupportedModel.specificationVersion, + provider: unsupportedModel.provider, + modelId: unsupportedModel.modelId, + }); + } + + return asEmbeddingModelV3(model); + } + + return getGlobalProvider().embeddingModel(model); +} + +export function resolveTranscriptionModel( + model: TranscriptionModel, +): TranscriptionModelV3 | undefined { + if (typeof model !== 'string') { + if ( + model.specificationVersion !== 'v3' && + model.specificationVersion !== 'v2' + ) { + const unsupportedModel: any = model; + throw new UnsupportedModelVersionError({ + version: unsupportedModel.specificationVersion, + provider: unsupportedModel.provider, + modelId: unsupportedModel.modelId, + }); + } + return asTranscriptionModelV3(model); + } + + return getGlobalProvider().transcriptionModel?.(model); +} + +export function resolveSpeechModel( + model: SpeechModel, +): SpeechModelV3 | undefined { + if (typeof model !== 'string') { + if ( + model.specificationVersion !== 'v3' && + model.specificationVersion !== 'v2' + ) { + const unsupportedModel: any = model; + throw new UnsupportedModelVersionError({ + version: unsupportedModel.specificationVersion, + provider: unsupportedModel.provider, + modelId: unsupportedModel.modelId, + }); + } + return asSpeechModelV3(model); + } + + return getGlobalProvider().speechModel?.(model); +} + +export function resolveImageModel(model: ImageModel): ImageModelV3 { + if (typeof model !== 'string') { + if ( + model.specificationVersion !== 'v3' && + model.specificationVersion !== 'v2' + ) { + const unsupportedModel: any = model; + throw new UnsupportedModelVersionError({ + version: unsupportedModel.specificationVersion, + provider: unsupportedModel.provider, + modelId: unsupportedModel.modelId, + }); + } + + return asImageModelV3(model); + } + + return getGlobalProvider().imageModel(model); +} + +export function resolveVideoModel( + model: VideoModel, +): Experimental_VideoModelV3 { + if (typeof model === 'string') { + const provider = getGlobalProvider(); + // TODO AI SDK v7 + // @ts-expect-error - videoModel support is experimental + const videoModel = provider.videoModel; + + if (!videoModel) { + throw new Error( + 'The default provider does not support video models. ' + + 'Please use a Experimental_VideoModelV3 object from a provider (e.g., vertex.video("model-id")).', + ); + } + + return videoModel(model); + } + + if (model.specificationVersion !== 'v3') { + const unsupportedModel: any = model; + throw new UnsupportedModelVersionError({ + version: unsupportedModel.specificationVersion, + provider: unsupportedModel.provider, + modelId: unsupportedModel.modelId, + }); + } + + return model; +} + +function getGlobalProvider(): ProviderV3 { + return globalThis.AI_SDK_DEFAULT_PROVIDER ?? gateway; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/call-settings.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/call-settings.ts new file mode 100644 index 000000000..fe9b29c60 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/call-settings.ts @@ -0,0 +1,148 @@ +/** + * Timeout configuration for API calls. Can be specified as: + * - A number representing milliseconds + * - An object with `totalMs` property for the total timeout in milliseconds + * - An object with `stepMs` property for the timeout of each step in milliseconds + * - An object with `chunkMs` property for the timeout between stream chunks (streaming only) + */ +export type TimeoutConfiguration = + | number + | { totalMs?: number; stepMs?: number; chunkMs?: number }; + +/** + * Extracts the total timeout value in milliseconds from a TimeoutConfiguration. + * + * @param timeout - The timeout configuration. + * @returns The total timeout in milliseconds, or undefined if no timeout is configured. + */ +export function getTotalTimeoutMs( + timeout: TimeoutConfiguration | undefined, +): number | undefined { + if (timeout == null) { + return undefined; + } + if (typeof timeout === 'number') { + return timeout; + } + return timeout.totalMs; +} + +/** + * Extracts the step timeout value in milliseconds from a TimeoutConfiguration. + * + * @param timeout - The timeout configuration. + * @returns The step timeout in milliseconds, or undefined if no step timeout is configured. + */ +export function getStepTimeoutMs( + timeout: TimeoutConfiguration | undefined, +): number | undefined { + if (timeout == null || typeof timeout === 'number') { + return undefined; + } + return timeout.stepMs; +} + +/** + * Extracts the chunk timeout value in milliseconds from a TimeoutConfiguration. + * This timeout is for streaming only - it aborts if no new chunk is received within the specified duration. + * + * @param timeout - The timeout configuration. + * @returns The chunk timeout in milliseconds, or undefined if no chunk timeout is configured. + */ +export function getChunkTimeoutMs( + timeout: TimeoutConfiguration | undefined, +): number | undefined { + if (timeout == null || typeof timeout === 'number') { + return undefined; + } + return timeout.chunkMs; +} + +export type CallSettings = { + /** + * Maximum number of tokens to generate. + */ + maxOutputTokens?: number; + + /** + * Temperature setting. The range depends on the provider and model. + * + * It is recommended to set either `temperature` or `topP`, but not both. + */ + temperature?: number; + + /** + * Nucleus sampling. This is a number between 0 and 1. + * + * E.g. 0.1 would mean that only tokens with the top 10% probability mass + * are considered. + * + * It is recommended to set either `temperature` or `topP`, but not both. + */ + topP?: number; + + /** + * Only sample from the top K options for each subsequent token. + * + * Used to remove "long tail" low probability responses. + * Recommended for advanced use cases only. You usually only need to use temperature. + */ + topK?: number; + + /** + * Presence penalty setting. It affects the likelihood of the model to + * repeat information that is already in the prompt. + * + * The presence penalty is a number between -1 (increase repetition) + * and 1 (maximum penalty, decrease repetition). 0 means no penalty. + */ + presencePenalty?: number; + + /** + * Frequency penalty setting. It affects the likelihood of the model + * to repeatedly use the same words or phrases. + * + * The frequency penalty is a number between -1 (increase repetition) + * and 1 (maximum penalty, decrease repetition). 0 means no penalty. + */ + frequencyPenalty?: number; + + /** + * Stop sequences. + * If set, the model will stop generating text when one of the stop sequences is generated. + * Providers may have limits on the number of stop sequences. + */ + stopSequences?: string[]; + + /** + * The seed (integer) to use for random sampling. If set and supported + * by the model, calls will generate deterministic results. + */ + seed?: number; + + /** + * Maximum number of retries. Set to 0 to disable retries. + * + * @default 2 + */ + maxRetries?: number; + + /** + * Abort signal. + */ + abortSignal?: AbortSignal; + + /** + * Timeout in milliseconds. The call will be aborted if it takes longer + * than the specified timeout. Can be used alongside abortSignal. + * + * Can be specified as a number (milliseconds) or as an object with `totalMs`. + */ + timeout?: TimeoutConfiguration; + + /** + * Additional HTTP headers to be sent with the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/content-part.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/content-part.ts new file mode 100644 index 000000000..6b7464bdd --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/content-part.ts @@ -0,0 +1,215 @@ +import { + FilePart, + ImagePart, + ProviderOptions, + ReasoningPart, + TextPart, + ToolApprovalRequest, + ToolApprovalResponse, + ToolResultOutput, + ToolResultPart, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; +import { jsonValueSchema } from '../types/json-value'; +import { providerMetadataSchema } from '../types/provider-metadata'; +import { dataContentSchema } from './data-content'; + +/** + * @internal + */ +export const textPartSchema: z.ZodType = z.object({ + type: z.literal('text'), + text: z.string(), + providerOptions: providerMetadataSchema.optional(), +}); + +/** + * @internal + */ +export const imagePartSchema: z.ZodType = z.object({ + type: z.literal('image'), + image: z.union([dataContentSchema, z.instanceof(URL)]), + mediaType: z.string().optional(), + providerOptions: providerMetadataSchema.optional(), +}); + +/** + * @internal + */ +export const filePartSchema: z.ZodType = z.object({ + type: z.literal('file'), + data: z.union([dataContentSchema, z.instanceof(URL)]), + filename: z.string().optional(), + mediaType: z.string(), + providerOptions: providerMetadataSchema.optional(), +}); + +/** + * @internal + */ +export const reasoningPartSchema: z.ZodType = z.object({ + type: z.literal('reasoning'), + text: z.string(), + providerOptions: providerMetadataSchema.optional(), +}); + +/** + * Tool call content part of a prompt. It contains a tool call (usually generated by the AI model). + */ +export interface ToolCallPart { + type: 'tool-call'; + + /** + * ID of the tool call. This ID is used to match the tool call with the tool result. + */ + toolCallId: string; + + /** + * Name of the tool that is being called. + */ + toolName: string; + + /** + * Arguments of the tool call. This is a JSON-serializable object that matches the tool's input schema. + */ + input: unknown; + + /** + * Additional provider-specific metadata. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; +} + +/** + * @internal + */ +export const toolCallPartSchema: z.ZodType = z.object({ + type: z.literal('tool-call'), + toolCallId: z.string(), + toolName: z.string(), + input: z.unknown(), + providerOptions: providerMetadataSchema.optional(), + providerExecuted: z.boolean().optional(), +}) as z.ZodType; // necessary bc input is optional on Zod type + +/** + * @internal + */ +export const outputSchema: z.ZodType = z.discriminatedUnion( + 'type', + [ + z.object({ + type: z.literal('text'), + value: z.string(), + providerOptions: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('json'), + value: jsonValueSchema, + providerOptions: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('execution-denied'), + reason: z.string().optional(), + providerOptions: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('error-text'), + value: z.string(), + providerOptions: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('error-json'), + value: jsonValueSchema, + providerOptions: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('content'), + value: z.array( + z.union([ + z.object({ + type: z.literal('text'), + text: z.string(), + providerOptions: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('media'), + data: z.string(), + mediaType: z.string(), + }), + z.object({ + type: z.literal('file-data'), + data: z.string(), + mediaType: z.string(), + filename: z.string().optional(), + providerOptions: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('file-url'), + url: z.string(), + providerOptions: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('file-id'), + fileId: z.union([z.string(), z.record(z.string(), z.string())]), + providerOptions: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('image-data'), + data: z.string(), + mediaType: z.string(), + providerOptions: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('image-url'), + url: z.string(), + providerOptions: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('image-file-id'), + fileId: z.union([z.string(), z.record(z.string(), z.string())]), + providerOptions: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('custom'), + providerOptions: providerMetadataSchema.optional(), + }), + ]), + ), + }), + ], +); + +/** + * @internal + */ +export const toolResultPartSchema: z.ZodType = z.object({ + type: z.literal('tool-result'), + toolCallId: z.string(), + toolName: z.string(), + output: outputSchema, + providerOptions: providerMetadataSchema.optional(), +}) as z.ZodType; // necessary bc result is optional on Zod type + +/** + * @internal + */ +export const toolApprovalRequestSchema: z.ZodType = + z.object({ + type: z.literal('tool-approval-request'), + approvalId: z.string(), + toolCallId: z.string(), + }); + +/** + * @internal + */ +export const toolApprovalResponseSchema: z.ZodType = + z.object({ + type: z.literal('tool-approval-response'), + approvalId: z.string(), + approved: z.boolean(), + reason: z.string().optional(), + }); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/convert-to-language-model-prompt.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/convert-to-language-model-prompt.ts new file mode 100644 index 000000000..4fedd90b1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/convert-to-language-model-prompt.ts @@ -0,0 +1,526 @@ +import { + LanguageModelV3FilePart, + LanguageModelV3Message, + LanguageModelV3Prompt, + LanguageModelV3TextPart, + LanguageModelV3ToolResultOutput, +} from '@ai-sdk/provider'; +import { + DataContent, + FilePart, + ImagePart, + isUrlSupported, + ModelMessage, + ReasoningPart, + TextPart, + ToolCallPart, + ToolResultOutput, + ToolResultPart, +} from '@ai-sdk/provider-utils'; +import { + detectMediaType, + imageMediaTypeSignatures, +} from '../util/detect-media-type'; +import { + createDefaultDownloadFunction, + DownloadFunction, +} from '../util/download/download-function'; +import { convertToLanguageModelV3DataContent } from './data-content'; +import { InvalidMessageRoleError } from './invalid-message-role-error'; +import { StandardizedPrompt } from './standardize-prompt'; +import { asArray } from '../util/as-array'; +import { MissingToolResultsError } from '../error/missing-tool-result-error'; + +export async function convertToLanguageModelPrompt({ + prompt, + supportedUrls, + download = createDefaultDownloadFunction(), +}: { + prompt: StandardizedPrompt; + supportedUrls: Record; + download: DownloadFunction | undefined; +}): Promise { + const downloadedAssets = await downloadAssets( + prompt.messages, + download, + supportedUrls, + ); + + const approvalIdToToolCallId = new Map(); + for (const message of prompt.messages) { + if (message.role === 'assistant' && Array.isArray(message.content)) { + for (const part of message.content) { + if ( + part.type === 'tool-approval-request' && + 'approvalId' in part && + 'toolCallId' in part + ) { + approvalIdToToolCallId.set( + part.approvalId as string, + part.toolCallId as string, + ); + } + } + } + } + + const approvedToolCallIds = new Set(); + for (const message of prompt.messages) { + if (message.role === 'tool') { + for (const part of message.content) { + if (part.type === 'tool-approval-response') { + const toolCallId = approvalIdToToolCallId.get(part.approvalId); + if (toolCallId) { + approvedToolCallIds.add(toolCallId); + } + } + } + } + } + + const messages = [ + ...(prompt.system != null + ? typeof prompt.system === 'string' + ? [{ role: 'system' as const, content: prompt.system }] + : asArray(prompt.system).map(message => ({ + role: 'system' as const, + content: message.content, + providerOptions: message.providerOptions, + })) + : []), + ...prompt.messages.map(message => + convertToLanguageModelMessage({ message, downloadedAssets }), + ), + ]; + + // combine consecutive tool messages into a single tool message + const combinedMessages = []; + for (const message of messages) { + if (message.role !== 'tool') { + combinedMessages.push(message); + continue; + } + + const lastCombinedMessage = combinedMessages.at(-1); + if (lastCombinedMessage?.role === 'tool') { + lastCombinedMessage.content.push(...message.content); + } else { + combinedMessages.push(message); + } + } + + const toolCallIds = new Set(); + + for (const message of combinedMessages) { + switch (message.role) { + case 'assistant': { + for (const content of message.content) { + if (content.type === 'tool-call' && !content.providerExecuted) { + toolCallIds.add(content.toolCallId); + } + } + break; + } + case 'tool': { + for (const content of message.content) { + if (content.type === 'tool-result') { + toolCallIds.delete(content.toolCallId); + } + } + break; + } + case 'user': + case 'system': + // remove approved tool calls from the set before checking: + for (const id of approvedToolCallIds) { + toolCallIds.delete(id); + } + + if (toolCallIds.size > 0) { + throw new MissingToolResultsError({ + toolCallIds: Array.from(toolCallIds), + }); + } + break; + } + } + + // remove approved tool calls from the set before checking: + for (const id of approvedToolCallIds) { + toolCallIds.delete(id); + } + + if (toolCallIds.size > 0) { + throw new MissingToolResultsError({ toolCallIds: Array.from(toolCallIds) }); + } + + return combinedMessages.filter( + // Filter out empty tool messages (e.g. if they only contained + // tool-approval-response parts that were removed). + // This prevents sending invalid empty messages to the provider. + // Note: provider-executed tool-approval-response parts are preserved. + message => message.role !== 'tool' || message.content.length > 0, + ); +} + +/** + * Convert a ModelMessage to a LanguageModelV3Message. + * + * @param message - The ModelMessage to convert. + * @param downloadedAssets - A map of URLs to their downloaded data. Only + * available if the model does not support URLs, null otherwise. + */ +export function convertToLanguageModelMessage({ + message, + downloadedAssets, +}: { + message: ModelMessage; + downloadedAssets: Record< + string, + { mediaType: string | undefined; data: Uint8Array } + >; +}): LanguageModelV3Message { + const role = message.role; + switch (role) { + case 'system': { + return { + role: 'system', + content: message.content, + providerOptions: message.providerOptions, + }; + } + + case 'user': { + if (typeof message.content === 'string') { + return { + role: 'user', + content: [{ type: 'text', text: message.content }], + providerOptions: message.providerOptions, + }; + } + + return { + role: 'user', + content: message.content + .map(part => convertPartToLanguageModelPart(part, downloadedAssets)) + // remove empty text parts: + .filter(part => part.type !== 'text' || part.text !== ''), + providerOptions: message.providerOptions, + }; + } + + case 'assistant': { + if (typeof message.content === 'string') { + return { + role: 'assistant', + content: [{ type: 'text', text: message.content }], + providerOptions: message.providerOptions, + }; + } + + return { + role: 'assistant', + content: message.content + .filter( + // remove empty text parts (no text, and no provider options): + part => + part.type !== 'text' || + part.text !== '' || + part.providerOptions != null, + ) + .filter( + ( + part, + ): part is + | TextPart + | FilePart + | ReasoningPart + | ToolCallPart + | ToolResultPart => part.type !== 'tool-approval-request', + ) + .map(part => { + const providerOptions = part.providerOptions; + + switch (part.type) { + case 'file': { + const { data, mediaType } = convertToLanguageModelV3DataContent( + part.data, + ); + return { + type: 'file', + data, + filename: part.filename, + mediaType: mediaType ?? part.mediaType, + providerOptions, + }; + } + case 'reasoning': { + return { + type: 'reasoning', + text: part.text, + providerOptions, + }; + } + case 'text': { + return { + type: 'text' as const, + text: part.text, + providerOptions, + }; + } + case 'tool-call': { + return { + type: 'tool-call' as const, + toolCallId: part.toolCallId, + toolName: part.toolName, + input: part.input, + providerExecuted: part.providerExecuted, + providerOptions, + }; + } + case 'tool-result': { + return { + type: 'tool-result' as const, + toolCallId: part.toolCallId, + toolName: part.toolName, + output: mapToolResultOutput(part.output), + providerOptions, + }; + } + } + }), + providerOptions: message.providerOptions, + }; + } + + case 'tool': { + return { + role: 'tool', + content: message.content + .filter( + // Only include tool-approval-response for provider-executed tools + part => + part.type !== 'tool-approval-response' || part.providerExecuted, + ) + .map(part => { + switch (part.type) { + case 'tool-result': { + return { + type: 'tool-result' as const, + toolCallId: part.toolCallId, + toolName: part.toolName, + output: mapToolResultOutput(part.output), + providerOptions: part.providerOptions, + }; + } + case 'tool-approval-response': { + return { + type: 'tool-approval-response' as const, + approvalId: part.approvalId, + approved: part.approved, + reason: part.reason, + }; + } + } + }), + providerOptions: message.providerOptions, + }; + } + + default: { + const _exhaustiveCheck: never = role; + throw new InvalidMessageRoleError({ role: _exhaustiveCheck }); + } + } +} + +/** + * Downloads images and files from URLs in the messages. + */ +async function downloadAssets( + messages: ModelMessage[], + download: DownloadFunction, + supportedUrls: Record, +): Promise< + Record +> { + const plannedDownloads = messages + .filter(message => message.role === 'user') + .map(message => message.content) + .filter((content): content is Array => + Array.isArray(content), + ) + .flat() + .filter( + (part): part is ImagePart | FilePart => + part.type === 'image' || part.type === 'file', + ) + .map(part => { + const mediaType = + part.mediaType ?? (part.type === 'image' ? 'image/*' : undefined); + + let data = part.type === 'image' ? part.image : part.data; + if (typeof data === 'string') { + try { + data = new URL(data); + } catch (ignored) {} + } + + return { mediaType, data }; + }) + + .filter( + (part): part is { mediaType: string | undefined; data: URL } => + part.data instanceof URL, + ) + .map(part => ({ + url: part.data, + isUrlSupportedByModel: + part.mediaType != null && + isUrlSupported({ + url: part.data.toString(), + mediaType: part.mediaType, + supportedUrls, + }), + })); + + // download in parallel: + const downloadedFiles = await download(plannedDownloads); + + return Object.fromEntries( + downloadedFiles + .map((file, index) => + file == null + ? null + : [ + plannedDownloads[index].url.toString(), + { data: file.data, mediaType: file.mediaType }, + ], + ) + .filter(file => file != null), + ); +} + +/** + * Convert part of a message to a LanguageModelV3Part. + * + * @param part - The part to convert. + * @param downloadedAssets - A map of URLs to their downloaded data. Only + * available if the model does not support URLs, null otherwise. + * @returns The converted part. + */ +function convertPartToLanguageModelPart( + part: TextPart | ImagePart | FilePart, + downloadedAssets: Record< + string, + { mediaType: string | undefined; data: Uint8Array } + >, +): LanguageModelV3TextPart | LanguageModelV3FilePart { + if (part.type === 'text') { + return { + type: 'text', + text: part.text, + providerOptions: part.providerOptions, + }; + } + + let originalData: DataContent | URL; + const type = part.type; + switch (type) { + case 'image': + originalData = part.image; + break; + case 'file': + originalData = part.data; + + break; + default: + throw new Error(`Unsupported part type: ${type}`); + } + + const { data: convertedData, mediaType: convertedMediaType } = + convertToLanguageModelV3DataContent(originalData); + + let mediaType: string | undefined = convertedMediaType ?? part.mediaType; + let data: Uint8Array | string | URL = convertedData; // binary | base64 | url + + // If the content is a URL, we check if it was downloaded: + if (data instanceof URL) { + const downloadedFile = downloadedAssets[data.toString()]; + if (downloadedFile) { + data = downloadedFile.data; + mediaType ??= downloadedFile.mediaType; + } + } + + // Now that we have the normalized data either as a URL or a Uint8Array, + // we can create the LanguageModelV3Part. + switch (type) { + case 'image': { + // When possible, try to detect the media type automatically + // to deal with incorrect media type inputs. + // When detection fails, use provided media type. + if (data instanceof Uint8Array || typeof data === 'string') { + mediaType = + detectMediaType({ data, signatures: imageMediaTypeSignatures }) ?? + mediaType; + } + + return { + type: 'file', + mediaType: mediaType ?? 'image/*', // any image + filename: undefined, + data, + providerOptions: part.providerOptions, + }; + } + + case 'file': { + // We must have a mediaType for files, if not, throw an error. + if (mediaType == null) { + throw new Error(`Media type is missing for file part`); + } + + return { + type: 'file', + mediaType, + filename: part.filename, + data, + providerOptions: part.providerOptions, + }; + } + } +} + +function mapToolResultOutput( + output: ToolResultOutput, +): LanguageModelV3ToolResultOutput { + if (output.type !== 'content') { + return output; + } + + return { + type: 'content', + value: output.value.map(item => { + if (item.type !== 'media') { + return item; + } + + // AI SDK 5 tool backwards compatibility: + // map media type to image-data or file-data + if (item.mediaType.startsWith('image/')) { + return { + type: 'image-data' as const, + data: item.data, + mediaType: item.mediaType, + }; + } + + return { + type: 'file-data' as const, + data: item.data, + mediaType: item.mediaType, + }; + }), + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/create-tool-model-output.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/create-tool-model-output.ts new file mode 100644 index 000000000..142699efe --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/create-tool-model-output.ts @@ -0,0 +1,34 @@ +import { getErrorMessage, JSONValue } from '@ai-sdk/provider'; +import { Tool, ToolResultOutput } from '@ai-sdk/provider-utils'; + +export async function createToolModelOutput({ + toolCallId, + input, + output, + tool, + errorMode, +}: { + toolCallId: string; + input: unknown; + output: unknown; + tool: Tool | undefined; + errorMode: 'none' | 'text' | 'json'; +}): Promise { + if (errorMode === 'text') { + return { type: 'error-text', value: getErrorMessage(output) }; + } else if (errorMode === 'json') { + return { type: 'error-json', value: toJSONValue(output) }; + } + + if (tool?.toModelOutput) { + return await tool.toModelOutput({ toolCallId, input, output }); + } + + return typeof output === 'string' + ? { type: 'text', value: output } + : { type: 'json', value: toJSONValue(output) }; +} + +function toJSONValue(value: unknown): JSONValue { + return value === undefined ? null : (value as JSONValue); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/data-content.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/data-content.ts new file mode 100644 index 000000000..49f73e014 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/data-content.ts @@ -0,0 +1,134 @@ +import { AISDKError, LanguageModelV3DataContent } from '@ai-sdk/provider'; +import { + convertBase64ToUint8Array, + convertUint8ArrayToBase64, + DataContent, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; +import { InvalidDataContentError } from './invalid-data-content-error'; +import { splitDataUrl } from './split-data-url'; + +/** + * @internal + */ +export const dataContentSchema: z.ZodType = z.union([ + z.string(), + z.instanceof(Uint8Array), + z.instanceof(ArrayBuffer), + z.custom( + // Buffer might not be available in some environments such as CloudFlare: + (value: unknown): value is Buffer => + globalThis.Buffer?.isBuffer(value) ?? false, + { message: 'Must be a Buffer' }, + ), +]); + +export function convertToLanguageModelV3DataContent( + content: DataContent | URL, +): { + data: LanguageModelV3DataContent; + mediaType: string | undefined; +} { + // Buffer & Uint8Array: + if (content instanceof Uint8Array) { + return { data: content, mediaType: undefined }; + } + + // ArrayBuffer needs conversion to Uint8Array (lightweight): + if (content instanceof ArrayBuffer) { + return { data: new Uint8Array(content), mediaType: undefined }; + } + + // Attempt to create a URL from the data. If it fails, we can assume the data + // is not a URL and likely some other sort of data. + if (typeof content === 'string') { + try { + content = new URL(content); + } catch (error) { + // ignored + } + } + + // Extract data from data URL: + if (content instanceof URL && content.protocol === 'data:') { + const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl( + content.toString(), + ); + + if (dataUrlMediaType == null || base64Content == null) { + throw new AISDKError({ + name: 'InvalidDataContentError', + message: `Invalid data URL format in content ${content.toString()}`, + }); + } + + return { data: base64Content, mediaType: dataUrlMediaType }; + } + + return { data: content, mediaType: undefined }; +} + +/** + * Converts data content to a base64-encoded string. + * + * @param content - Data content to convert. + * @returns Base64-encoded string. + */ +export function convertDataContentToBase64String(content: DataContent): string { + if (typeof content === 'string') { + return content; + } + + if (content instanceof ArrayBuffer) { + return convertUint8ArrayToBase64(new Uint8Array(content)); + } + + return convertUint8ArrayToBase64(content); +} + +/** + * Converts data content to a Uint8Array. + * + * @param content - Data content to convert. + * @returns Uint8Array. + */ +export function convertDataContentToUint8Array( + content: DataContent, +): Uint8Array { + if (content instanceof Uint8Array) { + return content; + } + + if (typeof content === 'string') { + try { + return convertBase64ToUint8Array(content); + } catch (error) { + throw new InvalidDataContentError({ + message: + 'Invalid data content. Content string is not a base64-encoded media.', + content, + cause: error, + }); + } + } + + if (content instanceof ArrayBuffer) { + return new Uint8Array(content); + } + + throw new InvalidDataContentError({ content }); +} + +/** + * Converts a Uint8Array to a string of text. + * + * @param uint8Array - The Uint8Array to convert. + * @returns The converted string. + */ +export function convertUint8ArrayToText(uint8Array: Uint8Array): string { + try { + return new TextDecoder().decode(uint8Array); + } catch (error) { + throw new Error('Error decoding Uint8Array to text'); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/index.ts new file mode 100644 index 000000000..e763f3fb7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/index.ts @@ -0,0 +1,27 @@ +export type { CallSettings, TimeoutConfiguration } from './call-settings'; +export { + assistantModelMessageSchema, + modelMessageSchema, + systemModelMessageSchema, + toolModelMessageSchema, + userModelMessageSchema, +} from './message'; +export type { Prompt } from './prompt'; + +// re-export types from provider-utils +export type { + AssistantContent, + AssistantModelMessage, + DataContent, + FilePart, + ImagePart, + ModelMessage, + SystemModelMessage, + TextPart, + ToolCallPart, + ToolContent, + ToolModelMessage, + ToolResultPart, + UserContent, + UserModelMessage, +} from '@ai-sdk/provider-utils'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/invalid-data-content-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/invalid-data-content-error.ts new file mode 100644 index 000000000..8c9523b7f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/invalid-data-content-error.ts @@ -0,0 +1,29 @@ +import { AISDKError } from '@ai-sdk/provider'; + +const name = 'AI_InvalidDataContentError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class InvalidDataContentError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly content: unknown; + + constructor({ + content, + cause, + message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`, + }: { + content: unknown; + cause?: unknown; + message?: string; + }) { + super({ name, message, cause }); + + this.content = content; + } + + static isInstance(error: unknown): error is InvalidDataContentError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/invalid-message-role-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/invalid-message-role-error.ts new file mode 100644 index 000000000..42d12417d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/invalid-message-role-error.ts @@ -0,0 +1,27 @@ +import { AISDKError } from '@ai-sdk/provider'; + +const name = 'AI_InvalidMessageRoleError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class InvalidMessageRoleError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly role: string; + + constructor({ + role, + message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`, + }: { + role: string; + message?: string; + }) { + super({ name, message }); + + this.role = role; + } + + static isInstance(error: unknown): error is InvalidMessageRoleError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/message-conversion-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/message-conversion-error.ts new file mode 100644 index 000000000..1a45f30b6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/message-conversion-error.ts @@ -0,0 +1,28 @@ +import { AISDKError } from '@ai-sdk/provider'; +import { UIMessage } from '../ui/ui-messages'; + +const name = 'AI_MessageConversionError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class MessageConversionError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + readonly originalMessage: Omit; + + constructor({ + originalMessage, + message, + }: { + originalMessage: Omit; + message: string; + }) { + super({ name, message }); + + this.originalMessage = originalMessage; + } + + static isInstance(error: unknown): error is MessageConversionError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/message.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/message.ts new file mode 100644 index 000000000..298653ff5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/message.ts @@ -0,0 +1,68 @@ +import { + AssistantModelMessage, + ModelMessage, + SystemModelMessage, + ToolModelMessage, + UserModelMessage, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; +import { providerMetadataSchema } from '../types/provider-metadata'; +import { + filePartSchema, + imagePartSchema, + reasoningPartSchema, + textPartSchema, + toolApprovalRequestSchema, + toolCallPartSchema, + toolApprovalResponseSchema, + toolResultPartSchema, +} from './content-part'; + +export const systemModelMessageSchema: z.ZodType = z.object( + { + role: z.literal('system'), + content: z.string(), + providerOptions: providerMetadataSchema.optional(), + }, +); + +export const userModelMessageSchema: z.ZodType = z.object({ + role: z.literal('user'), + content: z.union([ + z.string(), + z.array(z.union([textPartSchema, imagePartSchema, filePartSchema])), + ]), + providerOptions: providerMetadataSchema.optional(), +}); + +export const assistantModelMessageSchema: z.ZodType = + z.object({ + role: z.literal('assistant'), + content: z.union([ + z.string(), + z.array( + z.union([ + textPartSchema, + filePartSchema, + reasoningPartSchema, + toolCallPartSchema, + toolResultPartSchema, + toolApprovalRequestSchema, + ]), + ), + ]), + providerOptions: providerMetadataSchema.optional(), + }); + +export const toolModelMessageSchema: z.ZodType = z.object({ + role: z.literal('tool'), + content: z.array(z.union([toolResultPartSchema, toolApprovalResponseSchema])), + providerOptions: providerMetadataSchema.optional(), +}); + +export const modelMessageSchema: z.ZodType = z.union([ + systemModelMessageSchema, + userModelMessageSchema, + assistantModelMessageSchema, + toolModelMessageSchema, +]); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/prepare-call-settings.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/prepare-call-settings.ts new file mode 100644 index 000000000..499930175 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/prepare-call-settings.ts @@ -0,0 +1,108 @@ +import { InvalidArgumentError } from '../error/invalid-argument-error'; +import { CallSettings } from './call-settings'; + +/** + * Validates call settings and returns a new object with limited values. + */ +export function prepareCallSettings({ + maxOutputTokens, + temperature, + topP, + topK, + presencePenalty, + frequencyPenalty, + seed, + stopSequences, +}: Omit): Omit< + CallSettings, + 'abortSignal' | 'headers' | 'maxRetries' +> { + if (maxOutputTokens != null) { + if (!Number.isInteger(maxOutputTokens)) { + throw new InvalidArgumentError({ + parameter: 'maxOutputTokens', + value: maxOutputTokens, + message: 'maxOutputTokens must be an integer', + }); + } + + if (maxOutputTokens < 1) { + throw new InvalidArgumentError({ + parameter: 'maxOutputTokens', + value: maxOutputTokens, + message: 'maxOutputTokens must be >= 1', + }); + } + } + + if (temperature != null) { + if (typeof temperature !== 'number') { + throw new InvalidArgumentError({ + parameter: 'temperature', + value: temperature, + message: 'temperature must be a number', + }); + } + } + + if (topP != null) { + if (typeof topP !== 'number') { + throw new InvalidArgumentError({ + parameter: 'topP', + value: topP, + message: 'topP must be a number', + }); + } + } + + if (topK != null) { + if (typeof topK !== 'number') { + throw new InvalidArgumentError({ + parameter: 'topK', + value: topK, + message: 'topK must be a number', + }); + } + } + + if (presencePenalty != null) { + if (typeof presencePenalty !== 'number') { + throw new InvalidArgumentError({ + parameter: 'presencePenalty', + value: presencePenalty, + message: 'presencePenalty must be a number', + }); + } + } + + if (frequencyPenalty != null) { + if (typeof frequencyPenalty !== 'number') { + throw new InvalidArgumentError({ + parameter: 'frequencyPenalty', + value: frequencyPenalty, + message: 'frequencyPenalty must be a number', + }); + } + } + + if (seed != null) { + if (!Number.isInteger(seed)) { + throw new InvalidArgumentError({ + parameter: 'seed', + value: seed, + message: 'seed must be an integer', + }); + } + } + + return { + maxOutputTokens, + temperature, + topP, + topK, + presencePenalty, + frequencyPenalty, + stopSequences, + seed, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/prepare-tools-and-tool-choice.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/prepare-tools-and-tool-choice.ts new file mode 100644 index 000000000..01bc568a3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/prepare-tools-and-tool-choice.ts @@ -0,0 +1,86 @@ +import { + LanguageModelV3FunctionTool, + LanguageModelV3ProviderTool, + LanguageModelV3ToolChoice, +} from '@ai-sdk/provider'; +import { asSchema } from '@ai-sdk/provider-utils'; +import { isNonEmptyObject } from '../util/is-non-empty-object'; +import { ToolSet } from '../generate-text'; +import { ToolChoice } from '../types/language-model'; + +export async function prepareToolsAndToolChoice({ + tools, + toolChoice, + activeTools, +}: { + tools: TOOLS | undefined; + toolChoice: ToolChoice | undefined; + activeTools: Array | undefined; +}): Promise<{ + tools: + | Array + | undefined; + toolChoice: LanguageModelV3ToolChoice | undefined; +}> { + if (!isNonEmptyObject(tools)) { + return { + tools: undefined, + toolChoice: undefined, + }; + } + + // when activeTools is provided, we only include the tools that are in the list: + const filteredTools = + activeTools != null + ? Object.entries(tools).filter(([name]) => + activeTools.includes(name as keyof TOOLS), + ) + : Object.entries(tools); + + const languageModelTools: Array< + LanguageModelV3FunctionTool | LanguageModelV3ProviderTool + > = []; + for (const [name, tool] of filteredTools) { + const toolType = tool.type; + + switch (toolType) { + case undefined: + case 'dynamic': + case 'function': + languageModelTools.push({ + type: 'function' as const, + name, + description: tool.description, + inputSchema: await asSchema(tool.inputSchema).jsonSchema, + ...(tool.inputExamples != null + ? { inputExamples: tool.inputExamples } + : {}), + providerOptions: tool.providerOptions, + ...(tool.strict != null ? { strict: tool.strict } : {}), + }); + break; + case 'provider': + languageModelTools.push({ + type: 'provider' as const, + name, + id: tool.id, + args: tool.args, + }); + break; + default: { + const exhaustiveCheck: never = toolType as never; + throw new Error(`Unsupported tool type: ${exhaustiveCheck}`); + } + } + } + + return { + tools: languageModelTools, + toolChoice: + toolChoice == null + ? { type: 'auto' } + : typeof toolChoice === 'string' + ? { type: toolChoice } + : { type: 'tool' as const, toolName: toolChoice.toolName as string }, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/prompt.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/prompt.ts new file mode 100644 index 000000000..de21de540 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/prompt.ts @@ -0,0 +1,43 @@ +import { ModelMessage, SystemModelMessage } from '@ai-sdk/provider-utils'; + +/** + * Prompt part of the AI function options. + * It contains a system message, a simple text prompt, or a list of messages. + */ +export type Prompt = { + /** + * System message to include in the prompt. Can be used with `prompt` or `messages`. + */ + system?: string | SystemModelMessage | Array; +} & ( + | { + /** + * A prompt. It can be either a text prompt or a list of messages. + * + * You can either use `prompt` or `messages` but not both. + */ + prompt: string | Array; + + /** + * A list of messages. + * + * You can either use `prompt` or `messages` but not both. + */ + messages?: never; + } + | { + /** + * A list of messages. + * + * You can either use `prompt` or `messages` but not both. + */ + messages: Array; + + /** + * A prompt. It can be either a text prompt or a list of messages. + * + * You can either use `prompt` or `messages` but not both. + */ + prompt?: never; + } +); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/split-data-url.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/split-data-url.ts new file mode 100644 index 000000000..ced71e78c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/split-data-url.ts @@ -0,0 +1,17 @@ +export function splitDataUrl(dataUrl: string): { + mediaType: string | undefined; + base64Content: string | undefined; +} { + try { + const [header, base64Content] = dataUrl.split(','); + return { + mediaType: header.split(';')[0].split(':')[1], + base64Content, + }; + } catch (error) { + return { + mediaType: undefined, + base64Content: undefined, + }; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/standardize-prompt.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/standardize-prompt.ts new file mode 100644 index 000000000..aa1920a0b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/standardize-prompt.ts @@ -0,0 +1,99 @@ +import { InvalidPromptError } from '@ai-sdk/provider'; +import { + ModelMessage, + safeValidateTypes, + SystemModelMessage, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; +import { modelMessageSchema } from './message'; +import { Prompt } from './prompt'; +import { asArray } from '../util/as-array'; + +export type StandardizedPrompt = { + /** + * System message. + */ + system?: string | SystemModelMessage | Array; + + /** + * Messages. + */ + messages: ModelMessage[]; +}; + +export async function standardizePrompt( + prompt: Prompt, +): Promise { + if (prompt.prompt == null && prompt.messages == null) { + throw new InvalidPromptError({ + prompt, + message: 'prompt or messages must be defined', + }); + } + + if (prompt.prompt != null && prompt.messages != null) { + throw new InvalidPromptError({ + prompt, + message: 'prompt and messages cannot be defined at the same time', + }); + } + + // validate that system is a string or a SystemModelMessage + if ( + prompt.system != null && + typeof prompt.system !== 'string' && + !asArray(prompt.system).every( + message => + typeof message === 'object' && + message !== null && + 'role' in message && + message.role === 'system', + ) + ) { + throw new InvalidPromptError({ + prompt, + message: + 'system must be a string, SystemModelMessage, or array of SystemModelMessage', + }); + } + + let messages: ModelMessage[]; + + if (prompt.prompt != null && typeof prompt.prompt === 'string') { + messages = [{ role: 'user', content: prompt.prompt }]; + } else if (prompt.prompt != null && Array.isArray(prompt.prompt)) { + messages = prompt.prompt; + } else if (prompt.messages != null) { + messages = prompt.messages; + } else { + throw new InvalidPromptError({ + prompt, + message: 'prompt or messages must be defined', + }); + } + + if (messages.length === 0) { + throw new InvalidPromptError({ + prompt, + message: 'messages must not be empty', + }); + } + + const validationResult = await safeValidateTypes({ + value: messages, + schema: z.array(modelMessageSchema), + }); + + if (!validationResult.success) { + throw new InvalidPromptError({ + prompt, + message: 'The messages do not match the ModelMessage[] schema.', + cause: validationResult.error, + }); + } + + return { + messages, + system: prompt.system, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/wrap-gateway-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/wrap-gateway-error.ts new file mode 100644 index 000000000..19fa3caf8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/prompt/wrap-gateway-error.ts @@ -0,0 +1,29 @@ +import { GatewayAuthenticationError } from '@ai-sdk/gateway'; +import { AISDKError } from '@ai-sdk/provider'; + +export function wrapGatewayError(error: unknown): unknown { + if (!GatewayAuthenticationError.isInstance(error)) return error; + + const isProductionEnv = process?.env.NODE_ENV === 'production'; + const moreInfoURL = 'https://ai-sdk.dev/unauthenticated-ai-gateway'; + + if (isProductionEnv) { + return new AISDKError({ + name: 'GatewayError', + message: `Unauthenticated. Configure AI_GATEWAY_API_KEY or use a provider module. Learn more: ${moreInfoURL}`, + }); + } + + return Object.assign( + new Error(`\u001b[1m\u001b[31mUnauthenticated request to AI Gateway.\u001b[0m + +To authenticate, set the \u001b[33mAI_GATEWAY_API_KEY\u001b[0m environment variable with your API key. + +Alternatively, you can use a provider module instead of the AI Gateway. + +Learn more: \u001b[34m${moreInfoURL}\u001b[0m + +`), + { name: 'GatewayAuthenticationError' }, + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/custom-provider.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/custom-provider.ts new file mode 100644 index 000000000..915d01609 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/custom-provider.ts @@ -0,0 +1,176 @@ +import { + EmbeddingModelV3, + Experimental_VideoModelV3, + ImageModelV3, + LanguageModelV3, + NoSuchModelError, + ProviderV2, + ProviderV3, + RerankingModelV3, + SpeechModelV3, + TranscriptionModelV3, +} from '@ai-sdk/provider'; +import { asProviderV3 } from '../model/as-provider-v3'; + +/** + * Creates a custom provider with specified language models, text embedding models, image models, transcription models, speech models, and an optional fallback provider. + * + * @param {Object} options - The options for creating the custom provider. + * @param {Record} [options.languageModels] - A record of language models, where keys are model IDs and values are LanguageModelV3 instances. + * @param {Record} [options.embeddingModels] - A record of text embedding models, where keys are model IDs and values are EmbeddingModelV3 instances. + * @param {Record} [options.imageModels] - A record of image models, where keys are model IDs and values are ImageModelV3 instances. + * @param {Record} [options.transcriptionModels] - A record of transcription models, where keys are model IDs and values are TranscriptionModelV3 instances. + * @param {Record} [options.speechModels] - A record of speech models, where keys are model IDs and values are SpeechModelV3 instances. + * @param {Record} [options.rerankingModels] - A record of reranking models, where keys are model IDs and values are RerankingModelV3 instances. + * @param {ProviderV3} [options.fallbackProvider] - An optional fallback provider to use when a requested model is not found in the custom provider. + * @returns {ProviderV3} A ProviderV3 object with languageModel, embeddingModel, imageModel, transcriptionModel, and speechModel methods. + * + * @throws {NoSuchModelError} Throws when a requested model is not found and no fallback provider is available. + */ +export function customProvider< + LANGUAGE_MODELS extends Record, + EMBEDDING_MODELS extends Record, + IMAGE_MODELS extends Record, + TRANSCRIPTION_MODELS extends Record, + SPEECH_MODELS extends Record, + RERANKING_MODELS extends Record, + VIDEO_MODELS extends Record, +>({ + languageModels, + embeddingModels, + imageModels, + transcriptionModels, + speechModels, + rerankingModels, + videoModels, + fallbackProvider: fallbackProviderArg, +}: { + languageModels?: LANGUAGE_MODELS; + embeddingModels?: EMBEDDING_MODELS; + imageModels?: IMAGE_MODELS; + transcriptionModels?: TRANSCRIPTION_MODELS; + speechModels?: SPEECH_MODELS; + rerankingModels?: RERANKING_MODELS; + videoModels?: VIDEO_MODELS; + fallbackProvider?: ProviderV3 | ProviderV2; +}): ProviderV3 & { + languageModel(modelId: ExtractModelId): LanguageModelV3; + embeddingModel(modelId: ExtractModelId): EmbeddingModelV3; + imageModel(modelId: ExtractModelId): ImageModelV3; + transcriptionModel( + modelId: ExtractModelId, + ): TranscriptionModelV3; + rerankingModel(modelId: ExtractModelId): RerankingModelV3; + speechModel(modelId: ExtractModelId): SpeechModelV3; + videoModel(modelId: ExtractModelId): Experimental_VideoModelV3; +} { + const fallbackProvider = fallbackProviderArg + ? asProviderV3(fallbackProviderArg) + : undefined; + + return { + specificationVersion: 'v3', + languageModel(modelId: ExtractModelId): LanguageModelV3 { + if (languageModels != null && modelId in languageModels) { + return languageModels[modelId]; + } + + if (fallbackProvider) { + return (fallbackProvider as ProviderV3).languageModel(modelId); + } + + throw new NoSuchModelError({ modelId, modelType: 'languageModel' }); + }, + + embeddingModel( + modelId: ExtractModelId, + ): EmbeddingModelV3 { + if (embeddingModels != null && modelId in embeddingModels) { + return embeddingModels[modelId]; + } + + if (fallbackProvider) { + return (fallbackProvider as ProviderV3).embeddingModel(modelId); + } + + throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' }); + }, + + imageModel(modelId: ExtractModelId): ImageModelV3 { + if (imageModels != null && modelId in imageModels) { + return imageModels[modelId]; + } + + if (fallbackProvider?.imageModel) { + return (fallbackProvider as ProviderV3).imageModel(modelId); + } + + throw new NoSuchModelError({ modelId, modelType: 'imageModel' }); + }, + + transcriptionModel( + modelId: ExtractModelId, + ): TranscriptionModelV3 { + if (transcriptionModels != null && modelId in transcriptionModels) { + return transcriptionModels[modelId]; + } + + if (fallbackProvider?.transcriptionModel) { + return (fallbackProvider as ProviderV3).transcriptionModel!(modelId); + } + + throw new NoSuchModelError({ modelId, modelType: 'transcriptionModel' }); + }, + + speechModel(modelId: ExtractModelId): SpeechModelV3 { + if (speechModels != null && modelId in speechModels) { + return speechModels[modelId]; + } + + if (fallbackProvider?.speechModel) { + return (fallbackProvider as ProviderV3).speechModel!(modelId); + } + + throw new NoSuchModelError({ modelId, modelType: 'speechModel' }); + }, + rerankingModel( + modelId: ExtractModelId, + ): RerankingModelV3 { + if (rerankingModels != null && modelId in rerankingModels) { + return rerankingModels[modelId]; + } + + if (fallbackProvider?.rerankingModel) { + return fallbackProvider.rerankingModel(modelId); + } + + throw new NoSuchModelError({ modelId, modelType: 'rerankingModel' }); + }, + videoModel( + modelId: ExtractModelId, + ): Experimental_VideoModelV3 { + if (videoModels != null && modelId in videoModels) { + return videoModels[modelId]; + } + + // TODO AI SDK v7 + // @ts-expect-error - videoModel support is experimental + const videoModel = fallbackProvider?.videoModel; + if (videoModel) { + return videoModel(modelId); + } + + throw new NoSuchModelError({ modelId, modelType: 'videoModel' }); + }, + }; +} + +/** + * @deprecated Use `customProvider` instead. + */ +export const experimental_customProvider = customProvider; + +type ExtractModelId> = Extract< + keyof MODELS, + string +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/index.ts new file mode 100644 index 000000000..065e79f34 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/index.ts @@ -0,0 +1,7 @@ +export { customProvider, experimental_customProvider } from './custom-provider'; +export { NoSuchProviderError } from './no-such-provider-error'; +export { + createProviderRegistry, + experimental_createProviderRegistry, +} from './provider-registry'; +export type { ProviderRegistryProvider } from './provider-registry'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/no-such-provider-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/no-such-provider-error.ts new file mode 100644 index 000000000..eec8e7704 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/no-such-provider-error.ts @@ -0,0 +1,41 @@ +import { AISDKError, NoSuchModelError } from '@ai-sdk/provider'; + +const name = 'AI_NoSuchProviderError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export class NoSuchProviderError extends NoSuchModelError { + private readonly [symbol] = true; // used in isInstance + + readonly providerId: string; + readonly availableProviders: string[]; + + constructor({ + modelId, + modelType, + providerId, + availableProviders, + message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`, + }: { + modelId: string; + modelType: + | 'languageModel' + | 'embeddingModel' + | 'imageModel' + | 'transcriptionModel' + | 'speechModel' + | 'rerankingModel'; + providerId: string; + availableProviders: string[]; + message?: string; + }) { + super({ errorName: name, modelId, modelType, message }); + + this.providerId = providerId; + this.availableProviders = availableProviders; + } + + static isInstance(error: unknown): error is NoSuchProviderError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/provider-registry.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/provider-registry.ts new file mode 100644 index 000000000..4d0ca66d9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/registry/provider-registry.ts @@ -0,0 +1,327 @@ +import { + EmbeddingModelV3, + ImageModelV3, + LanguageModelV3, + NoSuchModelError, + ProviderV3, + RerankingModelV3, + SpeechModelV3, + TranscriptionModelV3, +} from '@ai-sdk/provider'; +import { wrapImageModel } from '../middleware/wrap-image-model'; +import { wrapLanguageModel } from '../middleware/wrap-language-model'; +import { ImageModelMiddleware, LanguageModelMiddleware } from '../types'; +import { NoSuchProviderError } from './no-such-provider-error'; + +type ExtractLiteralUnion = T extends string + ? string extends T + ? never + : T + : never; + +export interface ProviderRegistryProvider< + PROVIDERS extends Record = Record, + SEPARATOR extends string = ':', +> { + languageModel( + id: KEY extends string + ? `${KEY & string}${SEPARATOR}${ExtractLiteralUnion>[0]>}` + : never, + ): LanguageModelV3; + languageModel( + id: KEY extends string ? `${KEY & string}${SEPARATOR}${string}` : never, + ): LanguageModelV3; + + embeddingModel( + id: KEY extends string + ? `${KEY & string}${SEPARATOR}${ExtractLiteralUnion>[0]>}` + : never, + ): EmbeddingModelV3; + embeddingModel( + id: KEY extends string ? `${KEY & string}${SEPARATOR}${string}` : never, + ): EmbeddingModelV3; + + imageModel( + id: KEY extends string + ? `${KEY & string}${SEPARATOR}${ExtractLiteralUnion>[0]>}` + : never, + ): ImageModelV3; + imageModel( + id: KEY extends string ? `${KEY & string}${SEPARATOR}${string}` : never, + ): ImageModelV3; + + transcriptionModel( + id: KEY extends string + ? `${KEY & string}${SEPARATOR}${ExtractLiteralUnion>[0]>}` + : never, + ): TranscriptionModelV3; + transcriptionModel( + id: KEY extends string ? `${KEY & string}${SEPARATOR}${string}` : never, + ): TranscriptionModelV3; + + speechModel( + id: KEY extends string + ? `${KEY & string}${SEPARATOR}${ExtractLiteralUnion>[0]>}` + : never, + ): SpeechModelV3; + speechModel( + id: KEY extends string ? `${KEY & string}${SEPARATOR}${string}` : never, + ): SpeechModelV3; + + rerankingModel( + id: KEY extends string + ? `${KEY & string}${SEPARATOR}${ExtractLiteralUnion>[0]>}` + : never, + ): RerankingModelV3; + rerankingModel( + id: KEY extends string ? `${KEY & string}${SEPARATOR}${string}` : never, + ): RerankingModelV3; +} + +/** + * Creates a registry for the given providers with optional middleware functionality. + * This function allows you to register multiple providers and optionally apply middleware + * to all language models from the registry, enabling you to transform parameters, wrap generate + * operations, and wrap stream operations for every language model accessed through the registry. + * + * @param providers - A record of provider instances to be registered in the registry. + * @param options - Configuration options for the provider registry. + * @param options.separator - The separator used between provider ID and model ID in the combined identifier. Defaults to ':'. + * @param options.languageModelMiddleware - Optional middleware to be applied to all language models from the registry. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model. + * @param options.imageModelMiddleware - Optional middleware to be applied to all image models from the registry. When multiple middlewares are provided, the first middleware will transform the input first, and the last middleware will be wrapped directly around the model. + * @returns A new ProviderRegistryProvider instance that provides access to all registered providers with optional middleware applied to language and image models. + */ +export function createProviderRegistry< + PROVIDERS extends Record, + SEPARATOR extends string = ':', +>( + providers: PROVIDERS, + { + separator = ':' as SEPARATOR, + languageModelMiddleware, + imageModelMiddleware, + }: { + separator?: SEPARATOR; + languageModelMiddleware?: + | LanguageModelMiddleware + | LanguageModelMiddleware[]; + imageModelMiddleware?: ImageModelMiddleware | ImageModelMiddleware[]; + } = {}, +): ProviderRegistryProvider { + const registry = new DefaultProviderRegistry({ + separator, + languageModelMiddleware, + imageModelMiddleware, + }); + + for (const [id, provider] of Object.entries(providers)) { + registry.registerProvider({ id, provider } as { + id: keyof PROVIDERS; + provider: PROVIDERS[keyof PROVIDERS]; + }); + } + + return registry; +} + +/** + * @deprecated Use `createProviderRegistry` instead. + */ +export const experimental_createProviderRegistry = createProviderRegistry; + +class DefaultProviderRegistry< + PROVIDERS extends Record, + SEPARATOR extends string, +> implements ProviderRegistryProvider { + private providers: PROVIDERS = {} as PROVIDERS; + private separator: SEPARATOR; + private languageModelMiddleware?: + | LanguageModelMiddleware + | LanguageModelMiddleware[]; + private imageModelMiddleware?: ImageModelMiddleware | ImageModelMiddleware[]; + + constructor({ + separator, + languageModelMiddleware, + imageModelMiddleware, + }: { + separator: SEPARATOR; + languageModelMiddleware?: + | LanguageModelMiddleware + | LanguageModelMiddleware[]; + imageModelMiddleware?: ImageModelMiddleware | ImageModelMiddleware[]; + }) { + this.separator = separator; + this.languageModelMiddleware = languageModelMiddleware; + this.imageModelMiddleware = imageModelMiddleware; + } + + registerProvider({ + id, + provider, + }: { + id: K; + provider: PROVIDERS[K]; + }): void { + this.providers[id] = provider; + } + + private getProvider( + id: string, + modelType: + | 'languageModel' + | 'embeddingModel' + | 'imageModel' + | 'transcriptionModel' + | 'speechModel' + | 'rerankingModel', + ): ProviderV3 { + const provider = this.providers[id as keyof PROVIDERS]; + + if (provider == null) { + throw new NoSuchProviderError({ + modelId: id, + modelType, + providerId: id, + availableProviders: Object.keys(this.providers), + }); + } + + return provider; + } + + private splitId( + id: string, + modelType: + | 'languageModel' + | 'embeddingModel' + | 'imageModel' + | 'transcriptionModel' + | 'speechModel' + | 'rerankingModel', + ): [string, string] { + const index = id.indexOf(this.separator); + + if (index === -1) { + throw new NoSuchModelError({ + modelId: id, + modelType, + message: + `Invalid ${modelType} id for registry: ${id} ` + + `(must be in the format "providerId${this.separator}modelId")`, + }); + } + + return [id.slice(0, index), id.slice(index + this.separator.length)]; + } + + languageModel( + id: `${KEY & string}${SEPARATOR}${string}`, + ): LanguageModelV3 { + const [providerId, modelId] = this.splitId(id, 'languageModel'); + let model = this.getProvider(providerId, 'languageModel').languageModel?.( + modelId, + ); + + if (model == null) { + throw new NoSuchModelError({ modelId: id, modelType: 'languageModel' }); + } + + if (this.languageModelMiddleware != null) { + model = wrapLanguageModel({ + model, + middleware: this.languageModelMiddleware, + }); + } + + return model; + } + + embeddingModel( + id: `${KEY & string}${SEPARATOR}${string}`, + ): EmbeddingModelV3 { + const [providerId, modelId] = this.splitId(id, 'embeddingModel'); + const provider = this.getProvider(providerId, 'embeddingModel'); + + const model = provider.embeddingModel?.(modelId); + + if (model == null) { + throw new NoSuchModelError({ + modelId: id, + modelType: 'embeddingModel', + }); + } + + return model; + } + + imageModel( + id: `${KEY & string}${SEPARATOR}${string}`, + ): ImageModelV3 { + const [providerId, modelId] = this.splitId(id, 'imageModel'); + const provider = this.getProvider(providerId, 'imageModel'); + + let model = provider.imageModel?.(modelId); + + if (model == null) { + throw new NoSuchModelError({ modelId: id, modelType: 'imageModel' }); + } + + if (this.imageModelMiddleware != null) { + model = wrapImageModel({ + model, + middleware: this.imageModelMiddleware, + }); + } + + return model; + } + + transcriptionModel( + id: `${KEY & string}${SEPARATOR}${string}`, + ): TranscriptionModelV3 { + const [providerId, modelId] = this.splitId(id, 'transcriptionModel'); + const provider = this.getProvider(providerId, 'transcriptionModel'); + + const model = provider.transcriptionModel?.(modelId); + + if (model == null) { + throw new NoSuchModelError({ + modelId: id, + modelType: 'transcriptionModel', + }); + } + + return model; + } + + speechModel( + id: `${KEY & string}${SEPARATOR}${string}`, + ): SpeechModelV3 { + const [providerId, modelId] = this.splitId(id, 'speechModel'); + const provider = this.getProvider(providerId, 'speechModel'); + + const model = provider.speechModel?.(modelId); + + if (model == null) { + throw new NoSuchModelError({ modelId: id, modelType: 'speechModel' }); + } + + return model; + } + + rerankingModel( + id: `${KEY & string}${SEPARATOR}${string}`, + ): RerankingModelV3 { + const [providerId, modelId] = this.splitId(id, 'rerankingModel'); + const provider = this.getProvider(providerId, 'rerankingModel'); + + const model = provider.rerankingModel?.(modelId); + + if (model == null) { + throw new NoSuchModelError({ modelId: id, modelType: 'rerankingModel' }); + } + + return model; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/rerank/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/rerank/index.ts new file mode 100644 index 000000000..1864179fa --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/rerank/index.ts @@ -0,0 +1,2 @@ +export { rerank } from './rerank'; +export type { RerankResult } from './rerank-result'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/rerank/rerank-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/rerank/rerank-result.ts new file mode 100644 index 000000000..3483d7fb0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/rerank/rerank-result.ts @@ -0,0 +1,70 @@ +import { ProviderMetadata } from '../types/provider-metadata'; + +/** + * The result of a `rerank` call. + * It contains the original documents, the reranked documents, and additional information. + */ +export interface RerankResult { + /** + * The original documents that were reranked. + */ + readonly originalDocuments: Array; + + /** + * Reranked documents. + * + * Sorted by relevance score in descending order. + * + * Can be less than the original documents if there was a topN limit. + */ + readonly rerankedDocuments: Array; + + /** + * The ranking is a list of objects with the original index, + * relevance score, and the reranked document. + * + * Sorted by relevance score in descending order. + * + * Can be less than the original documents if there was a topN limit. + */ + readonly ranking: Array<{ + originalIndex: number; + score: number; + document: VALUE; + }>; + + /** + * Optional provider-specific metadata. + */ + readonly providerMetadata?: ProviderMetadata; + + /** + * Optional raw response data. + */ + readonly response: { + /** + * ID for the generated response if the provider sends one. + */ + id?: string; + + /** + * Timestamp of the generated response. + */ + timestamp: Date; + + /** + * The ID of the model that was used to generate the response. + */ + modelId: string; + + /** + * Response headers. + */ + headers?: Record; + + /** + * The response body. + */ + body?: unknown; + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/rerank/rerank.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/rerank/rerank.ts new file mode 100644 index 000000000..ae16110a5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/rerank/rerank.ts @@ -0,0 +1,239 @@ +import { JSONObject, RerankingModelV3CallOptions } from '@ai-sdk/provider'; +import { ProviderOptions } from '@ai-sdk/provider-utils'; +import { prepareRetries } from '../../src/util/prepare-retries'; +import { assembleOperationName } from '../telemetry/assemble-operation-name'; +import { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes'; +import { getTracer } from '../telemetry/get-tracer'; +import { recordSpan } from '../telemetry/record-span'; +import { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes'; +import { TelemetrySettings } from '../telemetry/telemetry-settings'; +import { RerankingModel } from '../types'; +import { RerankResult } from './rerank-result'; +import { logWarnings } from '../logger/log-warnings'; + +/** + * Rerank documents using a reranking model. The type of the value is defined by the reranking model. + * + * @param model - The reranking model to use. + * @param documents - The documents that should be reranked. + * @param query - The query to rerank the documents against. + * @param topN - Number of top documents to return. + * + * @param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2. + * @param abortSignal - An optional abort signal that can be used to cancel the call. + * @param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers. + * @param providerOptions - Additional provider-specific options. + * @param experimental_telemetry - Optional telemetry configuration (experimental). + * + * @returns A result object that contains the reranked documents, the reranked indices, and additional information. + */ +export async function rerank({ + model, + documents, + query, + topN, + maxRetries: maxRetriesArg, + abortSignal, + headers, + providerOptions, + experimental_telemetry: telemetry, +}: { + /** + * The reranking model to use. + */ + model: RerankingModel; + + /** + * The documents that should be reranked. + */ + documents: Array; + + /** + * The query to rerank the documents against. + */ + query: string; + + /** + * Number of top documents to return. + */ + topN?: number; + + /** + * Maximum number of retries per reranking model call. Set to 0 to disable retries. + * + * @default 2 + */ + maxRetries?: number; + + /** + * Abort signal. + */ + abortSignal?: AbortSignal; + + /** + * Additional headers to include in the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; + + /** + * Optional telemetry configuration (experimental). + */ + experimental_telemetry?: TelemetrySettings; + + /** + * Additional provider-specific options. They are passed through + * to the provider from the AI SDK and enable provider-specific + * functionality that can be fully encapsulated in the provider. + */ + providerOptions?: ProviderOptions; +}): Promise> { + if (documents.length === 0) { + return new DefaultRerankResult({ + originalDocuments: [], + ranking: [], + providerMetadata: undefined, + response: { + timestamp: new Date(), + modelId: model.modelId, + }, + }); + } + + const { maxRetries, retry } = prepareRetries({ + maxRetries: maxRetriesArg, + abortSignal, + }); + + // detect the type of the documents: + const documentsToSend: RerankingModelV3CallOptions['documents'] = + typeof documents[0] === 'string' + ? { type: 'text', values: documents as string[] } + : { type: 'object', values: documents as JSONObject[] }; + + const baseTelemetryAttributes = getBaseTelemetryAttributes({ + model, + telemetry, + headers, + settings: { maxRetries }, + }); + + const tracer = getTracer(telemetry); + + return recordSpan({ + name: 'ai.rerank', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ operationId: 'ai.rerank', telemetry }), + ...baseTelemetryAttributes, + 'ai.documents': { + input: () => documents.map(document => JSON.stringify(document)), + }, + }, + }), + tracer, + fn: async () => { + const { ranking, response, providerMetadata, warnings } = await retry( + () => + recordSpan({ + name: 'ai.rerank.doRerank', + attributes: selectTelemetryAttributes({ + telemetry, + attributes: { + ...assembleOperationName({ + operationId: 'ai.rerank.doRerank', + telemetry, + }), + ...baseTelemetryAttributes, + // specific settings that only make sense on the outer level: + 'ai.documents': { + input: () => + documents.map(document => JSON.stringify(document)), + }, + }, + }), + tracer, + fn: async doRerankSpan => { + const modelResponse = await model.doRerank({ + documents: documentsToSend, + query, + topN, + providerOptions, + abortSignal, + headers, + }); + + const ranking = modelResponse.ranking; + + doRerankSpan.setAttributes( + await selectTelemetryAttributes({ + telemetry, + attributes: { + 'ai.ranking.type': documentsToSend.type, + 'ai.ranking': { + output: () => + ranking.map(ranking => JSON.stringify(ranking)), + }, + }, + }), + ); + + return { + ranking, + providerMetadata: modelResponse.providerMetadata, + response: modelResponse.response, + warnings: modelResponse.warnings, + }; + }, + }), + ); + + logWarnings({ + warnings: warnings ?? [], + provider: model.provider, + model: model.modelId, + }); + + return new DefaultRerankResult({ + originalDocuments: documents, + ranking: ranking.map(ranking => ({ + originalIndex: ranking.index, + score: ranking.relevanceScore, + document: documents[ranking.index], + })), + providerMetadata, + response: { + id: response?.id, + timestamp: response?.timestamp ?? new Date(), + modelId: response?.modelId ?? model.modelId, + headers: response?.headers, + body: response?.body, + }, + }); + }, + }); +} + +class DefaultRerankResult implements RerankResult { + readonly originalDocuments: RerankResult['originalDocuments']; + readonly ranking: RerankResult['ranking']; + readonly response: RerankResult['response']; + readonly providerMetadata: RerankResult['providerMetadata']; + + constructor(options: { + originalDocuments: RerankResult['originalDocuments']; + ranking: RerankResult['ranking']; + providerMetadata?: RerankResult['providerMetadata']; + response: RerankResult['response']; + }) { + this.originalDocuments = options.originalDocuments; + this.ranking = options.ranking; + this.response = options.response; + this.providerMetadata = options.providerMetadata; + } + + get rerankedDocuments(): RerankResult['rerankedDocuments'] { + return this.ranking.map(ranking => ranking.document); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/assemble-operation-name.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/assemble-operation-name.ts new file mode 100644 index 000000000..b19eed600 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/assemble-operation-name.ts @@ -0,0 +1,21 @@ +import { TelemetrySettings } from './telemetry-settings'; + +export function assembleOperationName({ + operationId, + telemetry, +}: { + operationId: string; + telemetry?: TelemetrySettings; +}) { + return { + // standardized operation and resource name: + 'operation.name': `${operationId}${ + telemetry?.functionId != null ? ` ${telemetry.functionId}` : '' + }`, + 'resource.name': telemetry?.functionId, + + // detailed, AI SDK specific data: + 'ai.operationId': operationId, + 'ai.telemetry.functionId': telemetry?.functionId, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/get-base-telemetry-attributes.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/get-base-telemetry-attributes.ts new file mode 100644 index 000000000..c45928e91 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/get-base-telemetry-attributes.ts @@ -0,0 +1,53 @@ +import { Attributes, AttributeValue } from '@opentelemetry/api'; +import { CallSettings, getTotalTimeoutMs } from '../prompt/call-settings'; +import { TelemetrySettings } from './telemetry-settings'; + +export function getBaseTelemetryAttributes({ + model, + settings, + telemetry, + headers, +}: { + model: { modelId: string; provider: string }; + settings: Omit; + telemetry: TelemetrySettings | undefined; + headers: Record | undefined; +}): Attributes { + return { + 'ai.model.provider': model.provider, + 'ai.model.id': model.modelId, + + // settings: + ...Object.entries(settings).reduce((attributes, [key, value]) => { + // Handle timeout specially since it can be a number or object + if (key === 'timeout') { + const totalTimeoutMs = getTotalTimeoutMs( + value as Parameters[0], + ); + if (totalTimeoutMs != null) { + attributes[`ai.settings.${key}`] = totalTimeoutMs; + } + } else { + attributes[`ai.settings.${key}`] = value as AttributeValue; + } + return attributes; + }, {} as Attributes), + + // add metadata as attributes: + ...Object.entries(telemetry?.metadata ?? {}).reduce( + (attributes, [key, value]) => { + attributes[`ai.telemetry.metadata.${key}`] = value; + return attributes; + }, + {} as Attributes, + ), + + // request headers + ...Object.entries(headers ?? {}).reduce((attributes, [key, value]) => { + if (value !== undefined) { + attributes[`ai.request.headers.${key}`] = value; + } + return attributes; + }, {} as Attributes), + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/get-global-telemetry-integration.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/get-global-telemetry-integration.ts new file mode 100644 index 000000000..a5b610b6d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/get-global-telemetry-integration.ts @@ -0,0 +1,85 @@ +import type { Output } from '../generate-text/output'; +import type { ToolSet } from '../generate-text/tool-set'; +import { asArray } from '../util/as-array'; +import type { TelemetryIntegration } from './telemetry-integration'; +import { getGlobalTelemetryIntegrations } from './telemetry-integration-registry'; + +/** + * Wraps a telemetry integration with bound methods. + * Use this when creating class-based integrations to ensure methods + * work correctly when passed as callbacks. + */ +export function bindTelemetryIntegration( + integration: TelemetryIntegration, +): TelemetryIntegration { + return { + onStart: integration.onStart?.bind(integration), + onStepStart: integration.onStepStart?.bind(integration), + onToolCallStart: integration.onToolCallStart?.bind(integration), + onToolCallFinish: integration.onToolCallFinish?.bind(integration), + onStepFinish: integration.onStepFinish?.bind(integration), + onFinish: integration.onFinish?.bind(integration), + }; +} + +/** + * Creates a factory that merges globally registered integrations + * (via `registerTelemetryIntegration`) with per-call integrations + * into a single composite integration. + * + * Returns a factory function that accepts local integrations and + * returns the merged TelemetryIntegration. + */ +export function getGlobalTelemetryIntegration< + TOOLS extends ToolSet = ToolSet, + OUTPUT extends Output = Output, +>(): ( + integrations: TelemetryIntegration | Array | undefined, +) => TelemetryIntegration { + const globalIntegrations = getGlobalTelemetryIntegrations(); + + return ( + integrations: + | TelemetryIntegration + | Array + | undefined, + ): TelemetryIntegration => { + const localIntegrations = asArray(integrations); + const allIntegrations = [...globalIntegrations, ...localIntegrations]; + + function createTelemetryComposite( + getListenerFromIntegration: ( + integration: TelemetryIntegration, + ) => ((event: EVENT) => PromiseLike | void) | undefined, + ): ((event: EVENT) => Promise) | undefined { + const listeners = allIntegrations + .map(getListenerFromIntegration) + .filter(Boolean) as Array<(event: EVENT) => PromiseLike | void>; + + return async (event: EVENT) => { + for (const listener of listeners) { + try { + await listener(event); + } catch (_ignored) {} + } + }; + } + + return { + onStart: createTelemetryComposite(integration => integration.onStart), + onStepStart: createTelemetryComposite( + integration => integration.onStepStart, + ), + onToolCallStart: createTelemetryComposite( + integration => integration.onToolCallStart, + ), + onToolCallFinish: createTelemetryComposite( + integration => integration.onToolCallFinish, + ), + onStepFinish: createTelemetryComposite( + integration => integration.onStepFinish, + ), + onFinish: createTelemetryComposite(integration => integration.onFinish), + }; + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/get-tracer.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/get-tracer.ts new file mode 100644 index 000000000..7ed63286a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/get-tracer.ts @@ -0,0 +1,20 @@ +import { Tracer, trace } from '@opentelemetry/api'; +import { noopTracer } from './noop-tracer'; + +export function getTracer({ + isEnabled = false, + tracer, +}: { + isEnabled?: boolean; + tracer?: Tracer; +} = {}): Tracer { + if (!isEnabled) { + return noopTracer; + } + + if (tracer) { + return tracer; + } + + return trace.getTracer('ai'); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/index.ts new file mode 100644 index 000000000..71d82c274 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/index.ts @@ -0,0 +1,4 @@ +export type { TelemetrySettings } from './telemetry-settings'; +export type { TelemetryIntegration } from './telemetry-integration'; +export { bindTelemetryIntegration } from './get-global-telemetry-integration'; +export { registerTelemetryIntegration } from './telemetry-integration-registry'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/noop-tracer.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/noop-tracer.ts new file mode 100644 index 000000000..2ddaa643b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/noop-tracer.ts @@ -0,0 +1,69 @@ +import { Span, SpanContext, Tracer } from '@opentelemetry/api'; + +/** + * Tracer implementation that does nothing (null object). + */ +export const noopTracer: Tracer = { + startSpan(): Span { + return noopSpan; + }, + + startActiveSpan unknown>( + name: unknown, + arg1: unknown, + arg2?: unknown, + arg3?: F, + ): ReturnType { + if (typeof arg1 === 'function') { + return arg1(noopSpan); + } + if (typeof arg2 === 'function') { + return arg2(noopSpan); + } + if (typeof arg3 === 'function') { + return arg3(noopSpan); + } + }, +}; + +const noopSpan: Span = { + spanContext() { + return noopSpanContext; + }, + setAttribute() { + return this; + }, + setAttributes() { + return this; + }, + addEvent() { + return this; + }, + addLink() { + return this; + }, + addLinks() { + return this; + }, + setStatus() { + return this; + }, + updateName() { + return this; + }, + end() { + return this; + }, + isRecording() { + return false; + }, + recordException() { + return this; + }, +}; + +const noopSpanContext: SpanContext = { + traceId: '', + spanId: '', + traceFlags: 0, +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/record-span.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/record-span.ts new file mode 100644 index 000000000..d43bc3b57 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/record-span.ts @@ -0,0 +1,75 @@ +import { + Attributes, + Span, + Tracer, + SpanStatusCode, + context, +} from '@opentelemetry/api'; + +export async function recordSpan({ + name, + tracer, + attributes, + fn, + endWhenDone = true, +}: { + name: string; + tracer: Tracer; + attributes: Attributes | PromiseLike; + fn: (span: Span) => Promise; + endWhenDone?: boolean; +}) { + return tracer.startActiveSpan( + name, + { attributes: await attributes }, + async span => { + // Capture the current context to maintain it across async generator yields + const ctx = context.active(); + + try { + // Execute within the captured context to ensure async generators + // don't lose the active span when they yield + const result = await context.with(ctx, () => fn(span)); + + if (endWhenDone) { + span.end(); + } + + return result; + } catch (error) { + try { + recordErrorOnSpan(span, error); + } finally { + // always stop the span when there is an error: + span.end(); + } + + throw error; + } + }, + ); +} + +/** + * Record an error on a span. Sets the span status to error. If the error is + * an instance of Error, an exception event with name, message, and stack + * will also be recorded. + * + * @param span - The span to record the error on. + * @param error - The error to record on the span. + */ +export function recordErrorOnSpan(span: Span, error: unknown) { + if (error instanceof Error) { + span.recordException({ + name: error.name, + message: error.message, + stack: error.stack, + }); + span.setStatus({ + code: SpanStatusCode.ERROR, + message: error.message, + }); + } else { + span.setStatus({ code: SpanStatusCode.ERROR }); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/select-telemetry-attributes.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/select-telemetry-attributes.ts new file mode 100644 index 000000000..091b4e43e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/select-telemetry-attributes.ts @@ -0,0 +1,78 @@ +import type { Attributes, AttributeValue } from '@opentelemetry/api'; +import type { TelemetrySettings } from './telemetry-settings'; + +type ResolvableAttributeValue = () => + | AttributeValue + | PromiseLike + | undefined; + +export async function selectTelemetryAttributes({ + telemetry, + attributes, +}: { + telemetry?: TelemetrySettings; + attributes: { + [attributeKey: string]: + | AttributeValue + | { input: ResolvableAttributeValue } + | { output: ResolvableAttributeValue } + | undefined; + }; +}): Promise { + // when telemetry is disabled, return an empty object to avoid serialization overhead: + if (telemetry?.isEnabled !== true) { + return {}; + } + + const resultAttributes: Attributes = {}; + + for (const [key, value] of Object.entries(attributes)) { + if (value == null) { + continue; + } + + // input value, check if it should be recorded: + if ( + typeof value === 'object' && + 'input' in value && + typeof value.input === 'function' + ) { + // default to true: + if (telemetry?.recordInputs === false) { + continue; + } + + const result = await value.input(); + + if (result != null) { + resultAttributes[key] = result; + } + + continue; + } + + // output value, check if it should be recorded: + if ( + typeof value === 'object' && + 'output' in value && + typeof value.output === 'function' + ) { + // default to true: + if (telemetry?.recordOutputs === false) { + continue; + } + + const result = await value.output(); + + if (result != null) { + resultAttributes[key] = result; + } + continue; + } + + // value is an attribute value already: + resultAttributes[key] = value as AttributeValue; + } + + return resultAttributes; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/stringify-for-telemetry.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/stringify-for-telemetry.ts new file mode 100644 index 000000000..6c6fe8e1b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/stringify-for-telemetry.ts @@ -0,0 +1,33 @@ +import { + LanguageModelV3Message, + LanguageModelV3Prompt, +} from '@ai-sdk/provider'; +import { convertDataContentToBase64String } from '../prompt/data-content'; + +/** + * Helper utility to serialize prompt content for OpenTelemetry tracing. + * It is initially created because normalized LanguageModelV3Prompt carries + * images as Uint8Arrays, on which JSON.stringify acts weirdly, converting + * them to objects with stringified indices as keys, e.g. {"0": 42, "1": 69 }. + */ +export function stringifyForTelemetry(prompt: LanguageModelV3Prompt): string { + return JSON.stringify( + prompt.map((message: LanguageModelV3Message) => ({ + ...message, + content: + typeof message.content === 'string' + ? message.content + : message.content.map(part => + part.type === 'file' + ? { + ...part, + data: + part.data instanceof Uint8Array + ? convertDataContentToBase64String(part.data) + : part.data, + } + : part, + ), + })), + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/telemetry-integration-registry.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/telemetry-integration-registry.ts new file mode 100644 index 000000000..8b0266162 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/telemetry-integration-registry.ts @@ -0,0 +1,17 @@ +import type { TelemetryIntegration } from './telemetry-integration'; + +/** + * Registers a telemetry integration globally. + */ +export function registerTelemetryIntegration( + integration: TelemetryIntegration, +): void { + if (!globalThis.AI_SDK_TELEMETRY_INTEGRATIONS) { + globalThis.AI_SDK_TELEMETRY_INTEGRATIONS = []; + } + globalThis.AI_SDK_TELEMETRY_INTEGRATIONS.push(integration); +} + +export function getGlobalTelemetryIntegrations(): TelemetryIntegration[] { + return globalThis.AI_SDK_TELEMETRY_INTEGRATIONS ?? []; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/telemetry-integration.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/telemetry-integration.ts new file mode 100644 index 000000000..11d4eff80 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/telemetry-integration.ts @@ -0,0 +1,24 @@ +import type { + OnFinishEvent, + OnStartEvent, + OnStepFinishEvent, + OnStepStartEvent, + OnToolCallFinishEvent, + OnToolCallStartEvent, +} from '../generate-text/callback-events'; +import type { Output } from '../generate-text/output'; +import type { ToolSet } from '../generate-text/tool-set'; +import { Listener } from '../util/notify'; + +/** + * Implement this interface to create custom telemetry integrations. + * Methods can be sync or return a PromiseLike. + */ +export interface TelemetryIntegration { + onStart?: Listener>; + onStepStart?: Listener>; + onToolCallStart?: Listener>; + onToolCallFinish?: Listener>; + onStepFinish?: Listener>; + onFinish?: Listener>; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/telemetry-settings.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/telemetry-settings.ts new file mode 100644 index 000000000..66f0ce87c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/telemetry/telemetry-settings.ts @@ -0,0 +1,53 @@ +import { AttributeValue, Tracer } from '@opentelemetry/api'; +import type { TelemetryIntegration } from './telemetry-integration'; + +/** + * Telemetry configuration. + */ +// This is meant to be both flexible for custom app requirements (metadata) +// and extensible for standardization (example: functionId, more to come). +export type TelemetrySettings = { + /** + * Enable or disable telemetry. Disabled by default while experimental. + */ + isEnabled?: boolean; + + /** + * Enable or disable input recording. Enabled by default. + * + * You might want to disable input recording to avoid recording sensitive + * information, to reduce data transfers, or to increase performance. + */ + recordInputs?: boolean; + + /** + * Enable or disable output recording. Enabled by default. + * + * You might want to disable output recording to avoid recording sensitive + * information, to reduce data transfers, or to increase performance. + */ + recordOutputs?: boolean; + + /** + * Identifier for this function. Used to group telemetry data by function. + */ + functionId?: string; + + /** + * Additional information to include in the telemetry data. + */ + metadata?: Record; + + /** + * A custom tracer to use for the telemetry data. + */ + tracer?: Tracer; + + /** + * Per-call telemetry integrations that receive lifecycle events during generation. + * + * These integrations run after any globally registered integrations + * (see `registerTelemetryIntegration`). + */ + integrations?: TelemetryIntegration | TelemetryIntegration[]; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-embedding-model-v2.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-embedding-model-v2.ts new file mode 100644 index 000000000..0dccd1734 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-embedding-model-v2.ts @@ -0,0 +1,35 @@ +import { EmbeddingModelV2 } from '@ai-sdk/provider'; +import { notImplemented } from './not-implemented'; + +export class MockEmbeddingModelV2 implements EmbeddingModelV2 { + readonly specificationVersion = 'v2'; + + readonly provider: EmbeddingModelV2['provider']; + readonly modelId: EmbeddingModelV2['modelId']; + readonly maxEmbeddingsPerCall: EmbeddingModelV2['maxEmbeddingsPerCall']; + readonly supportsParallelCalls: EmbeddingModelV2['supportsParallelCalls']; + + doEmbed: EmbeddingModelV2['doEmbed']; + + constructor({ + provider = 'mock-provider', + modelId = 'mock-model-id', + maxEmbeddingsPerCall = 1, + supportsParallelCalls = false, + doEmbed = notImplemented, + }: { + provider?: EmbeddingModelV2['provider']; + modelId?: EmbeddingModelV2['modelId']; + maxEmbeddingsPerCall?: + | EmbeddingModelV2['maxEmbeddingsPerCall'] + | null; + supportsParallelCalls?: EmbeddingModelV2['supportsParallelCalls']; + doEmbed?: EmbeddingModelV2['doEmbed']; + } = {}) { + this.provider = provider; + this.modelId = modelId; + this.maxEmbeddingsPerCall = maxEmbeddingsPerCall ?? undefined; + this.supportsParallelCalls = supportsParallelCalls; + this.doEmbed = doEmbed; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-embedding-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-embedding-model-v3.ts new file mode 100644 index 000000000..14f54e087 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-embedding-model-v3.ts @@ -0,0 +1,48 @@ +import { EmbeddingModelV3 } from '@ai-sdk/provider'; +import { notImplemented } from './not-implemented'; + +export class MockEmbeddingModelV3 implements EmbeddingModelV3 { + readonly specificationVersion = 'v3'; + + readonly provider: EmbeddingModelV3['provider']; + readonly modelId: EmbeddingModelV3['modelId']; + readonly maxEmbeddingsPerCall: EmbeddingModelV3['maxEmbeddingsPerCall']; + readonly supportsParallelCalls: EmbeddingModelV3['supportsParallelCalls']; + + doEmbed: EmbeddingModelV3['doEmbed']; + + doEmbedCalls: Parameters[0][] = []; + + constructor({ + provider = 'mock-provider', + modelId = 'mock-model-id', + maxEmbeddingsPerCall = 1, + supportsParallelCalls = false, + doEmbed = notImplemented, + }: { + provider?: EmbeddingModelV3['provider']; + modelId?: EmbeddingModelV3['modelId']; + maxEmbeddingsPerCall?: EmbeddingModelV3['maxEmbeddingsPerCall'] | null; + supportsParallelCalls?: EmbeddingModelV3['supportsParallelCalls']; + doEmbed?: + | EmbeddingModelV3['doEmbed'] + | Awaited> + | Awaited>[]; + } = {}) { + this.provider = provider; + this.modelId = modelId; + this.maxEmbeddingsPerCall = maxEmbeddingsPerCall ?? undefined; + this.supportsParallelCalls = supportsParallelCalls; + this.doEmbed = async options => { + this.doEmbedCalls.push(options); + + if (typeof doEmbed === 'function') { + return doEmbed(options); + } else if (Array.isArray(doEmbed)) { + return doEmbed[this.doEmbedCalls.length]; + } else { + return doEmbed; + } + }; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-image-model-v2.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-image-model-v2.ts new file mode 100644 index 000000000..73876b4c4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-image-model-v2.ts @@ -0,0 +1,28 @@ +import { ImageModelV2 } from '@ai-sdk/provider'; +import { notImplemented } from './not-implemented'; + +export class MockImageModelV2 implements ImageModelV2 { + readonly specificationVersion = 'v2'; + readonly provider: ImageModelV2['provider']; + readonly modelId: ImageModelV2['modelId']; + readonly maxImagesPerCall: ImageModelV2['maxImagesPerCall']; + + doGenerate: ImageModelV2['doGenerate']; + + constructor({ + provider = 'mock-provider', + modelId = 'mock-model-id', + maxImagesPerCall = 1, + doGenerate = notImplemented, + }: { + provider?: ImageModelV2['provider']; + modelId?: ImageModelV2['modelId']; + maxImagesPerCall?: ImageModelV2['maxImagesPerCall']; + doGenerate?: ImageModelV2['doGenerate']; + } = {}) { + this.provider = provider; + this.modelId = modelId; + this.maxImagesPerCall = maxImagesPerCall; + this.doGenerate = doGenerate; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-image-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-image-model-v3.ts new file mode 100644 index 000000000..96d599abd --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-image-model-v3.ts @@ -0,0 +1,28 @@ +import { ImageModelV3 } from '@ai-sdk/provider'; +import { notImplemented } from './not-implemented'; + +export class MockImageModelV3 implements ImageModelV3 { + readonly specificationVersion = 'v3'; + readonly provider: ImageModelV3['provider']; + readonly modelId: ImageModelV3['modelId']; + readonly maxImagesPerCall: ImageModelV3['maxImagesPerCall']; + + doGenerate: ImageModelV3['doGenerate']; + + constructor({ + provider = 'mock-provider', + modelId = 'mock-model-id', + maxImagesPerCall = 1, + doGenerate = notImplemented, + }: { + provider?: ImageModelV3['provider']; + modelId?: ImageModelV3['modelId']; + maxImagesPerCall?: ImageModelV3['maxImagesPerCall']; + doGenerate?: ImageModelV3['doGenerate']; + } = {}) { + this.provider = provider; + this.modelId = modelId; + this.maxImagesPerCall = maxImagesPerCall; + this.doGenerate = doGenerate; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-language-model-v2.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-language-model-v2.ts new file mode 100644 index 000000000..3bfc3bc63 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-language-model-v2.ts @@ -0,0 +1,72 @@ +import { LanguageModelV2 } from '@ai-sdk/provider'; +import { notImplemented } from './not-implemented'; + +export class MockLanguageModelV2 implements LanguageModelV2 { + readonly specificationVersion = 'v2'; + + private _supportedUrls: () => LanguageModelV2['supportedUrls']; + + readonly provider: LanguageModelV2['provider']; + readonly modelId: LanguageModelV2['modelId']; + + doGenerate: LanguageModelV2['doGenerate']; + doStream: LanguageModelV2['doStream']; + + doGenerateCalls: Parameters[0][] = []; + doStreamCalls: Parameters[0][] = []; + + constructor({ + provider = 'mock-provider', + modelId = 'mock-model-id', + supportedUrls = {}, + doGenerate = notImplemented, + doStream = notImplemented, + }: { + provider?: LanguageModelV2['provider']; + modelId?: LanguageModelV2['modelId']; + supportedUrls?: + | LanguageModelV2['supportedUrls'] + | (() => LanguageModelV2['supportedUrls']); + doGenerate?: + | LanguageModelV2['doGenerate'] + | Awaited> + | Awaited>[]; + doStream?: + | LanguageModelV2['doStream'] + | Awaited> + | Awaited>[]; + } = {}) { + this.provider = provider; + this.modelId = modelId; + this.doGenerate = async options => { + this.doGenerateCalls.push(options); + + if (typeof doGenerate === 'function') { + return doGenerate(options); + } else if (Array.isArray(doGenerate)) { + return doGenerate[this.doGenerateCalls.length]; + } else { + return doGenerate; + } + }; + this.doStream = async options => { + this.doStreamCalls.push(options); + + if (typeof doStream === 'function') { + return doStream(options); + } else if (Array.isArray(doStream)) { + return doStream[this.doStreamCalls.length]; + } else { + return doStream; + } + }; + this._supportedUrls = + typeof supportedUrls === 'function' + ? supportedUrls + : async () => supportedUrls; + } + + get supportedUrls() { + return this._supportedUrls(); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-language-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-language-model-v3.ts new file mode 100644 index 000000000..4c78ab279 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-language-model-v3.ts @@ -0,0 +1,77 @@ +import { + LanguageModelV3, + LanguageModelV3CallOptions, + LanguageModelV3GenerateResult, + LanguageModelV3StreamResult, +} from '@ai-sdk/provider'; +import { notImplemented } from './not-implemented'; + +export class MockLanguageModelV3 implements LanguageModelV3 { + readonly specificationVersion = 'v3'; + + private _supportedUrls: () => LanguageModelV3['supportedUrls']; + + readonly provider: LanguageModelV3['provider']; + readonly modelId: LanguageModelV3['modelId']; + + doGenerate: LanguageModelV3['doGenerate']; + doStream: LanguageModelV3['doStream']; + + doGenerateCalls: LanguageModelV3CallOptions[] = []; + doStreamCalls: LanguageModelV3CallOptions[] = []; + + constructor({ + provider = 'mock-provider', + modelId = 'mock-model-id', + supportedUrls = {}, + doGenerate = notImplemented, + doStream = notImplemented, + }: { + provider?: LanguageModelV3['provider']; + modelId?: LanguageModelV3['modelId']; + supportedUrls?: + | LanguageModelV3['supportedUrls'] + | (() => LanguageModelV3['supportedUrls']); + doGenerate?: + | LanguageModelV3['doGenerate'] + | LanguageModelV3GenerateResult + | LanguageModelV3GenerateResult[]; + doStream?: + | LanguageModelV3['doStream'] + | LanguageModelV3StreamResult + | LanguageModelV3StreamResult[]; + } = {}) { + this.provider = provider; + this.modelId = modelId; + this.doGenerate = async options => { + this.doGenerateCalls.push(options); + + if (typeof doGenerate === 'function') { + return doGenerate(options); + } else if (Array.isArray(doGenerate)) { + return doGenerate[this.doGenerateCalls.length]; + } else { + return doGenerate; + } + }; + this.doStream = async options => { + this.doStreamCalls.push(options); + + if (typeof doStream === 'function') { + return doStream(options); + } else if (Array.isArray(doStream)) { + return doStream[this.doStreamCalls.length]; + } else { + return doStream; + } + }; + this._supportedUrls = + typeof supportedUrls === 'function' + ? supportedUrls + : async () => supportedUrls; + } + + get supportedUrls() { + return this._supportedUrls(); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-provider-v2.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-provider-v2.ts new file mode 100644 index 000000000..fc238dce7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-provider-v2.ts @@ -0,0 +1,68 @@ +import { + EmbeddingModelV2, + ImageModelV2, + LanguageModelV2, + NoSuchModelError, + ProviderV2, + SpeechModelV2, + TranscriptionModelV2, +} from '@ai-sdk/provider'; + +export class MockProviderV2 implements ProviderV2 { + languageModel: ProviderV2['languageModel']; + textEmbeddingModel: ProviderV2['textEmbeddingModel']; + imageModel: ProviderV2['imageModel']; + transcriptionModel: ProviderV2['transcriptionModel']; + speechModel: ProviderV2['speechModel']; + + constructor({ + languageModels, + embeddingModels, + imageModels, + transcriptionModels, + speechModels, + }: { + languageModels?: Record; + embeddingModels?: Record>; + imageModels?: Record; + transcriptionModels?: Record; + speechModels?: Record; + } = {}) { + this.languageModel = (modelId: string) => { + if (!languageModels?.[modelId]) { + throw new NoSuchModelError({ modelId, modelType: 'languageModel' }); + } + return languageModels[modelId]; + }; + this.textEmbeddingModel = (modelId: string) => { + if (!embeddingModels?.[modelId]) { + throw new NoSuchModelError({ + modelId, + modelType: 'textEmbeddingModel' as any, // backwards compatibility + }); + } + return embeddingModels[modelId]; + }; + this.imageModel = (modelId: string) => { + if (!imageModels?.[modelId]) { + throw new NoSuchModelError({ modelId, modelType: 'imageModel' }); + } + return imageModels[modelId]; + }; + this.transcriptionModel = (modelId: string) => { + if (!transcriptionModels?.[modelId]) { + throw new NoSuchModelError({ + modelId, + modelType: 'transcriptionModel', + }); + } + return transcriptionModels[modelId]; + }; + this.speechModel = (modelId: string) => { + if (!speechModels?.[modelId]) { + throw new NoSuchModelError({ modelId, modelType: 'speechModel' }); + } + return speechModels[modelId]; + }; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-provider-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-provider-v3.ts new file mode 100644 index 000000000..79175eca8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-provider-v3.ts @@ -0,0 +1,80 @@ +import { + EmbeddingModelV3, + ImageModelV3, + LanguageModelV3, + NoSuchModelError, + ProviderV3, + SpeechModelV3, + TranscriptionModelV3, + RerankingModelV3, +} from '@ai-sdk/provider'; + +export class MockProviderV3 implements ProviderV3 { + readonly specificationVersion = 'v3' as const; + + languageModel: ProviderV3['languageModel']; + embeddingModel: ProviderV3['embeddingModel']; + imageModel: ProviderV3['imageModel']; + transcriptionModel: ProviderV3['transcriptionModel']; + speechModel: ProviderV3['speechModel']; + rerankingModel: ProviderV3['rerankingModel']; + + constructor({ + languageModels, + embeddingModels, + imageModels, + transcriptionModels, + speechModels, + rerankingModels, + }: { + languageModels?: Record; + embeddingModels?: Record; + imageModels?: Record; + transcriptionModels?: Record; + speechModels?: Record; + rerankingModels?: Record; + } = {}) { + this.languageModel = (modelId: string) => { + if (!languageModels?.[modelId]) { + throw new NoSuchModelError({ modelId, modelType: 'languageModel' }); + } + return languageModels[modelId]; + }; + this.embeddingModel = (modelId: string) => { + if (!embeddingModels?.[modelId]) { + throw new NoSuchModelError({ + modelId, + modelType: 'embeddingModel', + }); + } + return embeddingModels[modelId]; + }; + this.imageModel = (modelId: string) => { + if (!imageModels?.[modelId]) { + throw new NoSuchModelError({ modelId, modelType: 'imageModel' }); + } + return imageModels[modelId]; + }; + this.transcriptionModel = (modelId: string) => { + if (!transcriptionModels?.[modelId]) { + throw new NoSuchModelError({ + modelId, + modelType: 'transcriptionModel', + }); + } + return transcriptionModels[modelId]; + }; + this.speechModel = (modelId: string): SpeechModelV3 => { + if (!speechModels?.[modelId]) { + throw new NoSuchModelError({ modelId, modelType: 'speechModel' }); + } + return speechModels[modelId]; + }; + this.rerankingModel = (modelId: string) => { + if (!rerankingModels?.[modelId]) { + throw new NoSuchModelError({ modelId, modelType: 'rerankingModel' }); + } + return rerankingModels[modelId]; + }; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-reranking-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-reranking-model-v3.ts new file mode 100644 index 000000000..4523ae8b2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-reranking-model-v3.ts @@ -0,0 +1,25 @@ +import { RerankingModelV3 } from '@ai-sdk/provider'; +import { notImplemented } from './not-implemented'; + +export class MockRerankingModelV3 implements RerankingModelV3 { + readonly specificationVersion = 'v3'; + + readonly provider: RerankingModelV3['provider']; + readonly modelId: RerankingModelV3['modelId']; + + doRerank: RerankingModelV3['doRerank']; + + constructor({ + provider = 'mock-provider', + modelId = 'mock-model-id', + doRerank = notImplemented, + }: { + provider?: RerankingModelV3['provider']; + modelId?: RerankingModelV3['modelId']; + doRerank?: RerankingModelV3['doRerank']; + } = {}) { + this.provider = provider; + this.modelId = modelId; + this.doRerank = doRerank; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-server-response.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-server-response.ts new file mode 100644 index 000000000..d4cf05123 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-server-response.ts @@ -0,0 +1,69 @@ +import { EventEmitter } from 'node:events'; +import { ServerResponse } from 'node:http'; + +class MockServerResponse extends EventEmitter { + writtenChunks: any[] = []; + headers: Record = {}; + statusCode = 0; + statusMessage = ''; + ended = false; + + write(chunk: any): boolean { + this.writtenChunks.push(chunk); + return true; + } + + end(): void { + this.ended = true; + } + + writeHead( + statusCode: number, + arg2: string | Record, + arg3?: Record, + ): void { + this.statusCode = statusCode; + + if (typeof arg2 === 'string') { + this.statusMessage = arg2; + this.headers = arg3 ?? {}; + } else { + this.statusMessage = ''; + this.headers = arg2; + } + } + + get body() { + // Combine all written chunks into a single string + return this.writtenChunks.join(''); + } + + /** + * Get the decoded chunks as strings. + */ + getDecodedChunks() { + const decoder = new TextDecoder(); + return this.writtenChunks.map(chunk => decoder.decode(chunk)); + } + + /** + * Wait for the stream to finish writing to the mock response. + */ + async waitForEnd() { + await new Promise(resolve => { + const checkIfEnded = () => { + if (this.ended) { + resolve(undefined); + } else { + setImmediate(checkIfEnded); + } + }; + checkIfEnded(); + }); + } +} + +export function createMockServerResponse(): ServerResponse & + MockServerResponse { + return new MockServerResponse() as ServerResponse & MockServerResponse; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-speech-model-v2.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-speech-model-v2.ts new file mode 100644 index 000000000..61794b1b2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-speech-model-v2.ts @@ -0,0 +1,24 @@ +import { SpeechModelV2 } from '@ai-sdk/provider'; +import { notImplemented } from './not-implemented'; + +export class MockSpeechModelV2 implements SpeechModelV2 { + readonly specificationVersion = 'v2'; + readonly provider: SpeechModelV2['provider']; + readonly modelId: SpeechModelV2['modelId']; + + doGenerate: SpeechModelV2['doGenerate']; + + constructor({ + provider = 'mock-provider', + modelId = 'mock-model-id', + doGenerate = notImplemented, + }: { + provider?: SpeechModelV2['provider']; + modelId?: SpeechModelV2['modelId']; + doGenerate?: SpeechModelV2['doGenerate']; + } = {}) { + this.provider = provider; + this.modelId = modelId; + this.doGenerate = doGenerate; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-speech-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-speech-model-v3.ts new file mode 100644 index 000000000..3152728ac --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-speech-model-v3.ts @@ -0,0 +1,24 @@ +import { SpeechModelV3 } from '@ai-sdk/provider'; +import { notImplemented } from './not-implemented'; + +export class MockSpeechModelV3 implements SpeechModelV3 { + readonly specificationVersion = 'v3'; + readonly provider: SpeechModelV3['provider']; + readonly modelId: SpeechModelV3['modelId']; + + doGenerate: SpeechModelV3['doGenerate']; + + constructor({ + provider = 'mock-provider', + modelId = 'mock-model-id', + doGenerate = notImplemented, + }: { + provider?: SpeechModelV3['provider']; + modelId?: SpeechModelV3['modelId']; + doGenerate?: SpeechModelV3['doGenerate']; + } = {}) { + this.provider = provider; + this.modelId = modelId; + this.doGenerate = doGenerate; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-tracer.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-tracer.ts new file mode 100644 index 000000000..931dcb39b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-tracer.ts @@ -0,0 +1,156 @@ +import { + AttributeValue, + Attributes, + Context, + Exception, + Span, + SpanContext, + SpanOptions, + SpanStatus, + TimeInput, + Tracer, +} from '@opentelemetry/api'; + +export class MockTracer implements Tracer { + spans: MockSpan[] = []; + + get jsonSpans() { + return this.spans.map(span => ({ + name: span.name, + attributes: span.attributes, + events: span.events, + ...(span.status && { status: span.status }), + })); + } + + startSpan(name: string, options?: SpanOptions, context?: Context): Span { + const span = new MockSpan({ + name, + options, + context, + }); + this.spans.push(span); + return span; + } + + startActiveSpan unknown>( + name: string, + arg1: unknown, + arg2?: unknown, + arg3?: F, + ): ReturnType { + if (typeof arg1 === 'function') { + const span = new MockSpan({ + name, + }); + this.spans.push(span); + return arg1(span); + } + if (typeof arg2 === 'function') { + const span = new MockSpan({ + name, + options: arg1 as SpanOptions, + }); + this.spans.push(span); + return arg2(span); + } + if (typeof arg3 === 'function') { + const span = new MockSpan({ + name, + options: arg1 as SpanOptions, + context: arg2 as Context, + }); + this.spans.push(span); + return arg3(span); + } + } +} + +class MockSpan implements Span { + name: string; + context?: Context; + options?: SpanOptions; + attributes: Attributes; + events: Array<{ + name: string; + attributes: Attributes | undefined; + time?: [number, number]; + }> = []; + status?: SpanStatus; + + readonly _spanContext: SpanContext = new MockSpanContext(); + + constructor({ + name, + options, + context, + }: { + name: string; + options?: SpanOptions; + context?: Context; + }) { + this.name = name; + this.context = context; + this.options = options; + this.attributes = options?.attributes ?? {}; + } + + spanContext(): SpanContext { + return this._spanContext; + } + + setAttribute(key: string, value: AttributeValue): this { + this.attributes = { ...this.attributes, [key]: value }; + return this; + } + + setAttributes(attributes: Attributes): this { + this.attributes = { ...this.attributes, ...attributes }; + return this; + } + + addEvent(name: string, attributes?: Attributes): this { + this.events.push({ name, attributes }); + return this; + } + + addLink() { + return this; + } + addLinks() { + return this; + } + setStatus(status: SpanStatus) { + this.status = status; + return this; + } + updateName() { + return this; + } + end() { + return this; + } + isRecording() { + return false; + } + recordException(exception: Exception, time?: TimeInput) { + const error = + typeof exception === 'string' ? new Error(exception) : exception; + this.events.push({ + name: 'exception', + attributes: { + 'exception.type': error.constructor?.name || 'Error', + 'exception.name': error.name || 'Error', + 'exception.message': error.message || '', + 'exception.stack': error.stack || '', + }, + time: Array.isArray(time) ? time : [0, 0], + }); + } +} + +class MockSpanContext implements SpanContext { + traceId = 'test-trace-id'; + spanId = 'test-span-id'; + traceFlags = 0; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-transcription-model-v2.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-transcription-model-v2.ts new file mode 100644 index 000000000..087bca51d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-transcription-model-v2.ts @@ -0,0 +1,24 @@ +import { TranscriptionModelV2 } from '@ai-sdk/provider'; +import { notImplemented } from './not-implemented'; + +export class MockTranscriptionModelV2 implements TranscriptionModelV2 { + readonly specificationVersion = 'v2'; + readonly provider: TranscriptionModelV2['provider']; + readonly modelId: TranscriptionModelV2['modelId']; + + doGenerate: TranscriptionModelV2['doGenerate']; + + constructor({ + provider = 'mock-provider', + modelId = 'mock-model-id', + doGenerate = notImplemented, + }: { + provider?: TranscriptionModelV2['provider']; + modelId?: TranscriptionModelV2['modelId']; + doGenerate?: TranscriptionModelV2['doGenerate']; + } = {}) { + this.provider = provider; + this.modelId = modelId; + this.doGenerate = doGenerate; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-transcription-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-transcription-model-v3.ts new file mode 100644 index 000000000..434274e75 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-transcription-model-v3.ts @@ -0,0 +1,24 @@ +import { TranscriptionModelV3 } from '@ai-sdk/provider'; +import { notImplemented } from './not-implemented'; + +export class MockTranscriptionModelV3 implements TranscriptionModelV3 { + readonly specificationVersion = 'v3'; + readonly provider: TranscriptionModelV3['provider']; + readonly modelId: TranscriptionModelV3['modelId']; + + doGenerate: TranscriptionModelV3['doGenerate']; + + constructor({ + provider = 'mock-provider', + modelId = 'mock-model-id', + doGenerate = notImplemented, + }: { + provider?: TranscriptionModelV3['provider']; + modelId?: TranscriptionModelV3['modelId']; + doGenerate?: TranscriptionModelV3['doGenerate']; + } = {}) { + this.provider = provider; + this.modelId = modelId; + this.doGenerate = doGenerate; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-values.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-values.ts new file mode 100644 index 000000000..bcf5f14da --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-values.ts @@ -0,0 +1,4 @@ +export function mockValues(...values: T[]): () => T { + let counter = 0; + return () => values[counter++] ?? values[values.length - 1]; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-video-model-v3.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-video-model-v3.ts new file mode 100644 index 000000000..514b8e279 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/mock-video-model-v3.ts @@ -0,0 +1,28 @@ +import { Experimental_VideoModelV3 } from '@ai-sdk/provider'; +import { notImplemented } from './not-implemented'; + +export class MockVideoModelV3 implements Experimental_VideoModelV3 { + readonly specificationVersion = 'v3'; + readonly provider: Experimental_VideoModelV3['provider']; + readonly modelId: Experimental_VideoModelV3['modelId']; + readonly maxVideosPerCall: Experimental_VideoModelV3['maxVideosPerCall']; + + doGenerate: Experimental_VideoModelV3['doGenerate']; + + constructor({ + provider = 'mock-provider', + modelId = 'mock-model-id', + maxVideosPerCall = 1, + doGenerate = notImplemented, + }: { + provider?: Experimental_VideoModelV3['provider']; + modelId?: Experimental_VideoModelV3['modelId']; + maxVideosPerCall?: Experimental_VideoModelV3['maxVideosPerCall']; + doGenerate?: Experimental_VideoModelV3['doGenerate']; + } = {}) { + this.provider = provider; + this.modelId = modelId; + this.maxVideosPerCall = maxVideosPerCall; + this.doGenerate = doGenerate; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/not-implemented.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/not-implemented.ts new file mode 100644 index 000000000..cc9d2bb0d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/test/not-implemented.ts @@ -0,0 +1,3 @@ +export function notImplemented(): never { + throw new Error('Not implemented'); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/text-stream/create-text-stream-response.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/text-stream/create-text-stream-response.ts new file mode 100644 index 000000000..c900dbe3f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/text-stream/create-text-stream-response.ts @@ -0,0 +1,30 @@ +import { prepareHeaders } from '../util/prepare-headers'; + +/** + * Creates a Response object from a text stream. + * Each text chunk is encoded as UTF-8 and sent as a separate chunk. + * Sets a `Content-Type` header to `text/plain; charset=utf-8`. + * + * @param options - The options for creating the response. + * @param options.status - Optional HTTP status code (default: 200). + * @param options.statusText - Optional HTTP status text. + * @param options.headers - Optional response headers. + * @param options.textStream - The text stream to send. + * @returns A Response object with the text stream body. + */ +export function createTextStreamResponse({ + status, + statusText, + headers, + textStream, +}: ResponseInit & { + textStream: ReadableStream; +}): Response { + return new Response(textStream.pipeThrough(new TextEncoderStream()), { + status: status ?? 200, + statusText, + headers: prepareHeaders(headers, { + 'content-type': 'text/plain; charset=utf-8', + }), + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/text-stream/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/text-stream/index.ts new file mode 100644 index 000000000..cad64485a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/text-stream/index.ts @@ -0,0 +1,2 @@ +export { createTextStreamResponse } from './create-text-stream-response'; +export { pipeTextStreamToResponse } from './pipe-text-stream-to-response'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/text-stream/pipe-text-stream-to-response.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/text-stream/pipe-text-stream-to-response.ts new file mode 100644 index 000000000..9f5e7ae70 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/text-stream/pipe-text-stream-to-response.ts @@ -0,0 +1,38 @@ +import { ServerResponse } from 'node:http'; +import { prepareHeaders } from '../util/prepare-headers'; +import { writeToServerResponse } from '../util/write-to-server-response'; + +/** + * Writes a text stream to a Node.js ServerResponse object. + * Each text chunk is encoded as UTF-8 and written as a separate chunk. + * Sets a `Content-Type` header to `text/plain; charset=utf-8`. + * + * @param options - The options for piping the stream. + * @param options.response - The Node.js ServerResponse to write to. + * @param options.status - Optional HTTP status code. + * @param options.statusText - Optional HTTP status text. + * @param options.headers - Optional response headers. + * @param options.textStream - The text stream to pipe. + */ +export function pipeTextStreamToResponse({ + response, + status, + statusText, + headers, + textStream, +}: { + response: ServerResponse; + textStream: ReadableStream; +} & ResponseInit): void { + writeToServerResponse({ + response, + status, + statusText, + headers: Object.fromEntries( + prepareHeaders(headers, { + 'content-type': 'text/plain; charset=utf-8', + }).entries(), + ), + stream: textStream.pipeThrough(new TextEncoderStream()), + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/transcribe/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/transcribe/index.ts new file mode 100644 index 000000000..596a3d8b7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/transcribe/index.ts @@ -0,0 +1,2 @@ +export { transcribe as experimental_transcribe } from './transcribe'; +export type { TranscriptionResult as Experimental_TranscriptionResult } from './transcribe-result'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/transcribe/transcribe-result.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/transcribe/transcribe-result.ts new file mode 100644 index 000000000..bc4981655 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/transcribe/transcribe-result.ts @@ -0,0 +1,60 @@ +import { JSONObject } from '@ai-sdk/provider'; +import { TranscriptionModelResponseMetadata } from '../types/transcription-model-response-metadata'; +import { Warning } from '../types/warning'; + +/** + * The result of a `transcribe` call. + * It contains the transcript and additional information. + */ +export interface TranscriptionResult { + /** + * The complete transcribed text from the audio. + */ + readonly text: string; + + /** + * Array of transcript segments with timing information. + * Each segment represents a portion of the transcribed text with start and end times. + */ + readonly segments: Array<{ + /** + * The text content of this segment. + */ + readonly text: string; + /** + * The start time of this segment in seconds. + */ + readonly startSecond: number; + /** + * The end time of this segment in seconds. + */ + readonly endSecond: number; + }>; + + /** + * The detected language of the audio content, as an ISO-639-1 code (e.g., 'en' for English). + * May be undefined if the language couldn't be detected. + */ + readonly language: string | undefined; + + /** + * The total duration of the audio file in seconds. + * May be undefined if the duration couldn't be determined. + */ + readonly durationInSeconds: number | undefined; + + /** + * Warnings for the call, e.g. unsupported settings. + */ + readonly warnings: Array; + + /** + * Response metadata from the provider. There may be multiple responses if we made multiple calls to the model. + */ + readonly responses: Array; + + /** + * Provider metadata from the provider. + */ + readonly providerMetadata: Record; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/transcribe/transcribe.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/transcribe/transcribe.ts new file mode 100644 index 000000000..c142597b2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/transcribe/transcribe.ts @@ -0,0 +1,187 @@ +import { JSONObject } from '@ai-sdk/provider'; +import { ProviderOptions, withUserAgentSuffix } from '@ai-sdk/provider-utils'; +import { NoTranscriptGeneratedError } from '../error/no-transcript-generated-error'; +import { logWarnings } from '../logger/log-warnings'; +import { DataContent } from '../prompt'; +import { convertDataContentToUint8Array } from '../prompt/data-content'; +import { TranscriptionModel } from '../types/transcription-model'; +import { TranscriptionModelResponseMetadata } from '../types/transcription-model-response-metadata'; +import { + audioMediaTypeSignatures, + detectMediaType, +} from '../util/detect-media-type'; +import { createDownload } from '../util/download/create-download'; +import { prepareRetries } from '../util/prepare-retries'; +import { TranscriptionResult } from './transcribe-result'; +import { VERSION } from '../version'; +import { resolveTranscriptionModel } from '../model/resolve-model'; +import { Warning } from '../types'; +/** + * Generates transcripts using a transcription model. + * + * @param model - The transcription model to use. + * @param audio - The audio data to transcribe as DataContent (string | Uint8Array | ArrayBuffer | Buffer) or a URL. + * @param providerOptions - Additional provider-specific options that are passed through to the provider + * as body parameters. + * @param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2. + * @param abortSignal - An optional abort signal that can be used to cancel the call. + * @param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers. + * + * @returns A result object that contains the generated transcript. + */ +const defaultDownload = createDownload(); + +export async function transcribe({ + model, + audio, + providerOptions = {}, + maxRetries: maxRetriesArg, + abortSignal, + headers, + download: downloadFn = defaultDownload, +}: { + /** + * The transcription model to use. + */ + model: TranscriptionModel; + + /** + * The audio data to transcribe. + */ + audio: DataContent | URL; + + /** + * Additional provider-specific options that are passed through to the provider + * as body parameters. + * + * The outer record is keyed by the provider name, and the inner + * record is keyed by the provider-specific metadata key. + * ```ts + * { + * "openai": { + * "temperature": 0 + * } + * } + * ``` + */ + providerOptions?: ProviderOptions; + + /** + * Maximum number of retries per transcript model call. Set to 0 to disable retries. + * + * @default 2 + */ + maxRetries?: number; + + /** + * Abort signal. + */ + abortSignal?: AbortSignal; + + /** + * Additional headers to include in the request. + * Only applicable for HTTP-based providers. + */ + headers?: Record; + + /** + * Custom download function for fetching audio from URLs. + * Use `createDownload()` from `ai` to create a download function with custom size limits. + * + * @default createDownload() (2 GiB limit) + */ + download?: (options: { + url: URL; + abortSignal?: AbortSignal; + }) => Promise<{ data: Uint8Array; mediaType: string | undefined }>; +}): Promise { + const resolvedModel = resolveTranscriptionModel(model); + if (!resolvedModel) { + throw new Error('Model could not be resolved'); + } + + const { retry } = prepareRetries({ + maxRetries: maxRetriesArg, + abortSignal, + }); + + const headersWithUserAgent = withUserAgentSuffix( + headers ?? {}, + `ai/${VERSION}`, + ); + + const audioData = + audio instanceof URL + ? (await downloadFn({ url: audio, abortSignal })).data + : convertDataContentToUint8Array(audio); + + const result = await retry(() => + resolvedModel.doGenerate({ + audio: audioData, + abortSignal, + headers: headersWithUserAgent, + providerOptions, + mediaType: + detectMediaType({ + data: audioData, + signatures: audioMediaTypeSignatures, + }) ?? 'audio/wav', + }), + ); + + logWarnings({ + warnings: result.warnings, + provider: resolvedModel.provider, + model: resolvedModel.modelId, + }); + + if (!result.text) { + throw new NoTranscriptGeneratedError({ responses: [result.response] }); + } + + return new DefaultTranscriptionResult({ + text: result.text, + segments: result.segments, + language: result.language, + durationInSeconds: result.durationInSeconds, + warnings: result.warnings, + responses: [result.response], + providerMetadata: result.providerMetadata, + }); +} + +class DefaultTranscriptionResult implements TranscriptionResult { + readonly text: string; + readonly segments: Array<{ + text: string; + startSecond: number; + endSecond: number; + }>; + readonly language: string | undefined; + readonly durationInSeconds: number | undefined; + readonly warnings: Array; + readonly responses: Array; + readonly providerMetadata: Record; + + constructor(options: { + text: string; + segments: Array<{ + text: string; + startSecond: number; + endSecond: number; + }>; + language: string | undefined; + durationInSeconds: number | undefined; + warnings: Array; + responses: Array; + providerMetadata: Record | undefined; + }) { + this.text = options.text; + this.segments = options.segments; + this.language = options.language; + this.durationInSeconds = options.durationInSeconds; + this.warnings = options.warnings; + this.responses = options.responses; + this.providerMetadata = options.providerMetadata ?? {}; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/embedding-model-middleware.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/embedding-model-middleware.ts new file mode 100644 index 000000000..1023fbfc1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/embedding-model-middleware.ts @@ -0,0 +1,3 @@ +import { EmbeddingModelV3Middleware } from '@ai-sdk/provider'; + +export type EmbeddingModelMiddleware = EmbeddingModelV3Middleware; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/embedding-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/embedding-model.ts new file mode 100644 index 000000000..91a63bb7a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/embedding-model.ts @@ -0,0 +1,18 @@ +import { + EmbeddingModelV2, + EmbeddingModelV3, + EmbeddingModelV3Embedding, +} from '@ai-sdk/provider'; + +/** + * Embedding model that is used by the AI SDK. + */ +export type EmbeddingModel = + | string + | EmbeddingModelV3 + | EmbeddingModelV2; + +/** + * Embedding. + */ +export type Embedding = EmbeddingModelV3Embedding; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/image-model-middleware.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/image-model-middleware.ts new file mode 100644 index 000000000..701449385 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/image-model-middleware.ts @@ -0,0 +1,3 @@ +import { ImageModelV3Middleware } from '@ai-sdk/provider'; + +export type ImageModelMiddleware = ImageModelV3Middleware; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/image-model-response-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/image-model-response-metadata.ts new file mode 100644 index 000000000..518cdcfe7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/image-model-response-metadata.ts @@ -0,0 +1,16 @@ +export type ImageModelResponseMetadata = { + /** + * Timestamp for the start of the generated response. + */ + timestamp: Date; + + /** + * The ID of the response model that was used to generate the response. + */ + modelId: string; + + /** + * Response headers. + */ + headers?: Record; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/image-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/image-model.ts new file mode 100644 index 000000000..83fd71465 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/image-model.ts @@ -0,0 +1,19 @@ +import { + ImageModelV2, + ImageModelV3, + ImageModelV3ProviderMetadata, + ImageModelV2ProviderMetadata, +} from '@ai-sdk/provider'; + +/** + * Image model that is used by the AI SDK. + */ +export type ImageModel = string | ImageModelV3 | ImageModelV2; + +/** + * Metadata from the model provider for this call. + */ +// TODO should this be v3 only? +export type ImageModelProviderMetadata = + | ImageModelV3ProviderMetadata + | ImageModelV2ProviderMetadata; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/index.ts new file mode 100644 index 000000000..d276556cb --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/index.ts @@ -0,0 +1,29 @@ +export type { JSONSchema7 } from '@ai-sdk/provider'; +export type { Embedding, EmbeddingModel } from './embedding-model'; +export type { EmbeddingModelMiddleware } from './embedding-model-middleware'; +export type { ImageModel, ImageModelProviderMetadata } from './image-model'; +export type { ImageModelMiddleware } from './image-model-middleware'; +export type { ImageModelResponseMetadata } from './image-model-response-metadata'; +export type { JSONValue } from './json-value'; +export type { + CallWarning, + FinishReason, + LanguageModel, + ToolChoice, +} from './language-model'; +export type { LanguageModelMiddleware } from './language-model-middleware'; +export type { LanguageModelRequestMetadata } from './language-model-request-metadata'; +export type { LanguageModelResponseMetadata } from './language-model-response-metadata'; +export type { Provider } from './provider'; +export type { ProviderMetadata } from './provider-metadata'; +export type { RerankingModel } from './reranking-model'; +export type { SpeechModel } from './speech-model'; +export type { SpeechModelResponseMetadata } from './speech-model-response-metadata'; +export type { TranscriptionModel } from './transcription-model'; +export type { TranscriptionModelResponseMetadata } from './transcription-model-response-metadata'; +export type { + EmbeddingModelUsage, + ImageModelUsage, + LanguageModelUsage, +} from './usage'; +export type { Warning } from './warning'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/json-value.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/json-value.ts new file mode 100644 index 000000000..05994543a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/json-value.ts @@ -0,0 +1,15 @@ +import { JSONValue as OriginalJSONValue } from '@ai-sdk/provider'; +import { z } from 'zod/v4'; + +export const jsonValueSchema: z.ZodType = z.lazy(() => + z.union([ + z.null(), + z.string(), + z.number(), + z.boolean(), + z.record(z.string(), jsonValueSchema.optional()), + z.array(jsonValueSchema), + ]), +); + +export type JSONValue = OriginalJSONValue; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model-middleware.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model-middleware.ts new file mode 100644 index 000000000..2b96d0f29 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model-middleware.ts @@ -0,0 +1,3 @@ +import { LanguageModelV3Middleware } from '@ai-sdk/provider'; + +export type LanguageModelMiddleware = LanguageModelV3Middleware; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model-request-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model-request-metadata.ts new file mode 100644 index 000000000..84a09a9c1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model-request-metadata.ts @@ -0,0 +1,6 @@ +export type LanguageModelRequestMetadata = { + /** + * Request HTTP body that was sent to the provider API. + */ + body?: unknown; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model-response-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model-response-metadata.ts new file mode 100644 index 000000000..c8bcc9138 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model-response-metadata.ts @@ -0,0 +1,21 @@ +export type LanguageModelResponseMetadata = { + /** + * ID for the generated response. + */ + id: string; + + /** + * Timestamp for the start of the generated response. + */ + timestamp: Date; + + /** + * The ID of the response model that was used to generate the response. + */ + modelId: string; + + /** + * Response headers (available only for providers that use HTTP requests). + */ + headers?: Record; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model.ts new file mode 100644 index 000000000..e12fd988b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/language-model.ts @@ -0,0 +1,104 @@ +import { GatewayModelId } from '@ai-sdk/gateway'; +import { + LanguageModelV2, + LanguageModelV3, + SharedV3Warning, + LanguageModelV3Source, +} from '@ai-sdk/provider'; + +declare global { + /** + * Global interface that can be augmented by third-party packages to register custom model IDs. + * + * You can register model IDs in two ways: + * + * 1. Register based on Model IDs from a provider package: + * @example + * ```typescript + * import { openai } from '@ai-sdk/openai'; + * type OpenAIResponsesModelId = Parameters[0]; + * + * declare global { + * interface RegisteredProviderModels { + * openai: OpenAIResponsesModelId; + * } + * } + * ``` + * + * 2. Register individual model IDs directly as keys: + * @example + * ```typescript + * declare global { + * interface RegisteredProviderModels { + * 'my-provider:my-model': any; + * 'my-provider:another-model': any; + * } + * } + * ``` + */ + interface RegisteredProviderModels {} +} + +/** + * Global provider model ID type that defaults to GatewayModelId but can be augmented + * by third-party packages via declaration merging. + */ +export type GlobalProviderModelId = [keyof RegisteredProviderModels] extends [ + never, +] + ? GatewayModelId + : + | keyof RegisteredProviderModels + | RegisteredProviderModels[keyof RegisteredProviderModels]; + +/** + * Language model that is used by the AI SDK. + */ +export type LanguageModel = + | GlobalProviderModelId + | LanguageModelV3 + | LanguageModelV2; + +/** + * Reason why a language model finished generating a response. + * + * Can be one of the following: + * - `stop`: model generated stop sequence + * - `length`: model generated maximum number of tokens + * - `content-filter`: content filter violation stopped the model + * - `tool-calls`: model triggered tool calls + * - `error`: model stopped because of an error + * - `other`: model stopped for other reasons + */ +export type FinishReason = + | 'stop' + | 'length' + | 'content-filter' + | 'tool-calls' + | 'error' + | 'other'; + +/** + * Warning from the model provider for this call. The call will proceed, but e.g. + * some settings might not be supported, which can lead to suboptimal results. + */ +export type CallWarning = SharedV3Warning; + +/** + * A source that has been used as input to generate the response. + */ +export type Source = LanguageModelV3Source; + +/** + * Tool choice for the generation. It supports the following settings: + * + * - `auto` (default): the model can choose whether and which tools to call. + * - `required`: the model must call a tool. It can choose which tool to call. + * - `none`: the model must not call tools + * - `{ type: 'tool', toolName: string (typed) }`: the model must call the specified tool + */ +export type ToolChoice> = + | 'auto' + | 'none' + | 'required' + | { type: 'tool'; toolName: Extract }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/provider-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/provider-metadata.ts new file mode 100644 index 000000000..f9039a051 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/provider-metadata.ts @@ -0,0 +1,16 @@ +import { SharedV3ProviderMetadata } from '@ai-sdk/provider'; +import { z } from 'zod/v4'; +import { jsonValueSchema } from './json-value'; + +/** + * Additional provider-specific metadata that is returned from the provider. + * + * This is needed to enable provider-specific functionality that can be + * fully encapsulated in the provider. + */ +export type ProviderMetadata = SharedV3ProviderMetadata; + +export const providerMetadataSchema: z.ZodType = z.record( + z.string(), + z.record(z.string(), jsonValueSchema.optional()), +); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/provider.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/provider.ts new file mode 100644 index 000000000..1f0dd4c1d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/provider.ts @@ -0,0 +1,55 @@ +import { EmbeddingModel } from './embedding-model'; +import { LanguageModel } from './language-model'; +import { ImageModel } from './image-model'; +import { RerankingModel } from './reranking-model'; + +/** + * Provider for language, text embedding, and image models. + */ +export type Provider = { + /** + * Returns the language model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {LanguageModel} The language model associated with the id + * + * @throws {NoSuchModelError} If no such model exists. + */ + languageModel(modelId: string): LanguageModel; + + /** + * Returns the text embedding model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {EmbeddingModel} The embedding model associated with the id + * + * @throws {NoSuchModelError} If no such model exists. + */ + embeddingModel(modelId: string): EmbeddingModel; + + /** + * Returns the image model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {ImageModel} The image model associated with the id + */ + imageModel(modelId: string): ImageModel; + + /** + * Returns the reranking model with the given id. + * The model id is then passed to the provider function to get the model. + * + * @param {string} modelId - The id of the model to return. + * + * @returns {RerankingModel} The reranking model associated with the id + * + * @throws {NoSuchModelError} If no such model exists. + */ + rerankingModel(modelId: string): RerankingModel; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/reranking-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/reranking-model.ts new file mode 100644 index 000000000..77304b596 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/reranking-model.ts @@ -0,0 +1,6 @@ +import { RerankingModelV3 } from '@ai-sdk/provider'; + +/** + * Reranking model that is used by the AI SDK. + */ +export type RerankingModel = RerankingModelV3; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/speech-model-response-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/speech-model-response-metadata.ts new file mode 100644 index 000000000..6f3bb099b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/speech-model-response-metadata.ts @@ -0,0 +1,21 @@ +export type SpeechModelResponseMetadata = { + /** + * Timestamp for the start of the generated response. + */ + timestamp: Date; + + /** + * The ID of the response model that was used to generate the response. + */ + modelId: string; + + /** + * Response headers. + */ + headers?: Record; + + /** + * Response body. + */ + body?: unknown; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/speech-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/speech-model.ts new file mode 100644 index 000000000..6674636f2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/speech-model.ts @@ -0,0 +1,6 @@ +import { SpeechModelV2, SpeechModelV3 } from '@ai-sdk/provider'; + +/** + * Speech model that is used by the AI SDK. + */ +export type SpeechModel = string | SpeechModelV3 | SpeechModelV2; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/transcription-model-response-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/transcription-model-response-metadata.ts new file mode 100644 index 000000000..8259665af --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/transcription-model-response-metadata.ts @@ -0,0 +1,16 @@ +export type TranscriptionModelResponseMetadata = { + /** + * Timestamp for the start of the generated response. + */ + timestamp: Date; + + /** + * The ID of the response model that was used to generate the response. + */ + modelId: string; + + /** + * Response headers. + */ + headers?: Record; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/transcription-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/transcription-model.ts new file mode 100644 index 000000000..c7151d49c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/transcription-model.ts @@ -0,0 +1,9 @@ +import { TranscriptionModelV2, TranscriptionModelV3 } from '@ai-sdk/provider'; + +/** + * Transcription model that is used by the AI SDK. + */ +export type TranscriptionModel = + | string + | TranscriptionModelV3 + | TranscriptionModelV2; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/usage.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/usage.ts new file mode 100644 index 000000000..986ab013c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/usage.ts @@ -0,0 +1,200 @@ +import { + ImageModelV3Usage, + JSONObject, + LanguageModelV3Usage, +} from '@ai-sdk/provider'; + +/** + * Represents the number of tokens used in a prompt and completion. + */ +export type LanguageModelUsage = { + /** + * The total number of input (prompt) tokens used. + */ + inputTokens: number | undefined; + + /** + * Detailed information about the input tokens. + */ + inputTokenDetails: { + /** + * The number of non-cached input (prompt) tokens used. + */ + noCacheTokens: number | undefined; + + /** + * The number of cached input (prompt) tokens read. + */ + cacheReadTokens: number | undefined; + + /** + * The number of cached input (prompt) tokens written. + */ + cacheWriteTokens: number | undefined; + }; + + /** + * The number of total output (completion) tokens used. + */ + outputTokens: number | undefined; + + /** + * Detailed information about the output tokens. + */ + outputTokenDetails: { + /** + * The number of text tokens used. + */ + textTokens: number | undefined; + + /** + * The number of reasoning tokens used. + */ + reasoningTokens: number | undefined; + }; + + /** + * The total number of tokens used. + */ + totalTokens: number | undefined; + + /** + * @deprecated Use outputTokenDetails.reasoningTokens instead. + */ + reasoningTokens?: number | undefined; + + /** + * @deprecated Use inputTokenDetails.cacheReadTokens instead. + */ + cachedInputTokens?: number | undefined; + + /** + * Raw usage information from the provider. + * + * This is the usage information in the shape that the provider returns. + * It can include additional information that is not part of the standard usage information. + */ + raw?: JSONObject; +}; + +/** + * Represents the number of tokens used in an embedding. + */ +// TODO replace with EmbeddingModelV3Usage +export type EmbeddingModelUsage = { + /** + * The number of tokens used in the embedding. + */ + tokens: number; +}; + +export function asLanguageModelUsage( + usage: LanguageModelV3Usage, +): LanguageModelUsage { + return { + inputTokens: usage.inputTokens.total, + inputTokenDetails: { + noCacheTokens: usage.inputTokens.noCache, + cacheReadTokens: usage.inputTokens.cacheRead, + cacheWriteTokens: usage.inputTokens.cacheWrite, + }, + outputTokens: usage.outputTokens.total, + outputTokenDetails: { + textTokens: usage.outputTokens.text, + reasoningTokens: usage.outputTokens.reasoning, + }, + totalTokens: addTokenCounts( + usage.inputTokens.total, + usage.outputTokens.total, + ), + raw: usage.raw, + reasoningTokens: usage.outputTokens.reasoning, + cachedInputTokens: usage.inputTokens.cacheRead, + }; +} + +export function createNullLanguageModelUsage(): LanguageModelUsage { + return { + inputTokens: undefined, + inputTokenDetails: { + noCacheTokens: undefined, + cacheReadTokens: undefined, + cacheWriteTokens: undefined, + }, + outputTokens: undefined, + outputTokenDetails: { + textTokens: undefined, + reasoningTokens: undefined, + }, + totalTokens: undefined, + raw: undefined, + }; +} + +export function addLanguageModelUsage( + usage1: LanguageModelUsage, + usage2: LanguageModelUsage, +): LanguageModelUsage { + return { + inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens), + inputTokenDetails: { + noCacheTokens: addTokenCounts( + usage1.inputTokenDetails?.noCacheTokens, + usage2.inputTokenDetails?.noCacheTokens, + ), + cacheReadTokens: addTokenCounts( + usage1.inputTokenDetails?.cacheReadTokens, + usage2.inputTokenDetails?.cacheReadTokens, + ), + cacheWriteTokens: addTokenCounts( + usage1.inputTokenDetails?.cacheWriteTokens, + usage2.inputTokenDetails?.cacheWriteTokens, + ), + }, + outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens), + outputTokenDetails: { + textTokens: addTokenCounts( + usage1.outputTokenDetails?.textTokens, + usage2.outputTokenDetails?.textTokens, + ), + reasoningTokens: addTokenCounts( + usage1.outputTokenDetails?.reasoningTokens, + usage2.outputTokenDetails?.reasoningTokens, + ), + }, + totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens), + reasoningTokens: addTokenCounts( + usage1.reasoningTokens, + usage2.reasoningTokens, + ), + cachedInputTokens: addTokenCounts( + usage1.cachedInputTokens, + usage2.cachedInputTokens, + ), + }; +} + +function addTokenCounts( + tokenCount1: number | undefined, + tokenCount2: number | undefined, +): number | undefined { + return tokenCount1 == null && tokenCount2 == null + ? undefined + : (tokenCount1 ?? 0) + (tokenCount2 ?? 0); +} + +/** + * Usage information for an image model call. + */ +export type ImageModelUsage = ImageModelV3Usage; + +export function addImageModelUsage( + usage1: ImageModelUsage, + usage2: ImageModelUsage, +): ImageModelUsage { + return { + inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens), + outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens), + totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens), + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/video-model-response-metadata.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/video-model-response-metadata.ts new file mode 100644 index 000000000..ac8da49d4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/video-model-response-metadata.ts @@ -0,0 +1,28 @@ +import type { SharedV3ProviderMetadata } from '@ai-sdk/provider'; + +/** + * Response metadata for a video model call. + */ +export type VideoModelResponseMetadata = { + /** + * Timestamp for the start of the generated response. + */ + timestamp: Date; + + /** + * The ID of the response model that was used to generate the response. + */ + modelId: string; + + /** + * Response headers. + */ + headers?: Record; + + /** + * Provider-specific metadata for this call. + * When multiple calls are made (n > maxVideosPerCall), each response + * contains its own providerMetadata, allowing lossless per-call access. + */ + providerMetadata?: SharedV3ProviderMetadata; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/video-model.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/video-model.ts new file mode 100644 index 000000000..0362ef21f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/video-model.ts @@ -0,0 +1,11 @@ +import { + Experimental_VideoModelV3, + SharedV3ProviderMetadata, +} from '@ai-sdk/provider'; + +/** + * A video model can be a string (model ID) or a Experimental_VideoModelV3 object. + */ +export type VideoModel = string | Experimental_VideoModelV3; + +export type VideoModelProviderMetadata = SharedV3ProviderMetadata; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/warning.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/warning.ts new file mode 100644 index 000000000..f18691732 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/types/warning.ts @@ -0,0 +1,7 @@ +import { SharedV3Warning } from '@ai-sdk/provider'; + +/** + * Warning from the model provider for this call. The call will proceed, but e.g. + * some settings might not be supported, which can lead to suboptimal results. + */ +export type Warning = SharedV3Warning; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/create-ui-message-stream-response.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/create-ui-message-stream-response.ts new file mode 100644 index 000000000..05f24c4cb --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/create-ui-message-stream-response.ts @@ -0,0 +1,44 @@ +import { prepareHeaders } from '../util/prepare-headers'; +import { JsonToSseTransformStream } from './json-to-sse-transform-stream'; +import { UI_MESSAGE_STREAM_HEADERS } from './ui-message-stream-headers'; +import { UIMessageChunk } from './ui-message-chunks'; +import { UIMessageStreamResponseInit } from './ui-message-stream-response-init'; + +/** + * Creates a Response object from a UI message stream. + * The stream is transformed to Server-Sent Events (SSE) format. + * + * @param options.status - The HTTP status code for the response. + * @param options.statusText - The HTTP status text for the response. + * @param options.headers - Additional HTTP headers to include in the response. + * @param options.stream - The UI message chunk stream to send. + * @param options.consumeSseStream - Optional callback to consume a copy of the SSE stream independently. + * + * @returns A `Response` object with the UI message stream as the body. + */ +export function createUIMessageStreamResponse({ + status, + statusText, + headers, + stream, + consumeSseStream, +}: UIMessageStreamResponseInit & { + stream: ReadableStream; +}): Response { + let sseStream = stream.pipeThrough(new JsonToSseTransformStream()); + + // when the consumeSseStream is provided, we need to tee the stream + // and send the second part to the consumeSseStream function + // so that it can be consumed by the client independently + if (consumeSseStream) { + const [stream1, stream2] = sseStream.tee(); + sseStream = stream1; + consumeSseStream({ stream: stream2 }); // no await (do not block the response) + } + + return new Response(sseStream.pipeThrough(new TextEncoderStream()), { + status, + statusText, + headers: prepareHeaders(headers, UI_MESSAGE_STREAM_HEADERS), + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/create-ui-message-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/create-ui-message-stream.ts new file mode 100644 index 000000000..c49797da2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/create-ui-message-stream.ts @@ -0,0 +1,145 @@ +import { + generateId as generateIdFunc, + getErrorMessage, + IdGenerator, +} from '@ai-sdk/provider-utils'; +import { UIMessage } from '../ui/ui-messages'; +import { handleUIMessageStreamFinish } from './handle-ui-message-stream-finish'; +import { InferUIMessageChunk } from './ui-message-chunks'; +import { UIMessageStreamOnFinishCallback } from './ui-message-stream-on-finish-callback'; +import { UIMessageStreamOnStepFinishCallback } from './ui-message-stream-on-step-finish-callback'; +import { UIMessageStreamWriter } from './ui-message-stream-writer'; + +/** + * Creates a UI message stream that can be used to send messages to the client. + * + * @param options.execute - A function that is called with a writer to write UI message chunks to the stream. + * @param options.onError - A function that extracts an error message from an error. Defaults to `getErrorMessage`. + * @param options.originalMessages - The original messages. If provided, persistence mode is assumed + * and a message ID is provided for the response message. + * @param options.onStepFinish - A callback that is called when each step finishes. Useful for persisting intermediate messages. + * @param options.onFinish - A callback that is called when the stream finishes. + * @param options.generateId - A function that generates a unique ID. Defaults to the built-in ID generator. + * + * @returns A `ReadableStream` of UI message chunks. + */ +export function createUIMessageStream({ + execute, + onError = getErrorMessage, + originalMessages, + onStepFinish, + onFinish, + generateId = generateIdFunc, +}: { + execute: (options: { + writer: UIMessageStreamWriter; + }) => Promise | void; + onError?: (error: unknown) => string; + + /** + * The original messages. If they are provided, persistence mode is assumed, + * and a message ID is provided for the response message. + */ + originalMessages?: UI_MESSAGE[]; + + /** + * Callback that is called when each step finishes during multi-step agent runs. + */ + onStepFinish?: UIMessageStreamOnStepFinishCallback; + + onFinish?: UIMessageStreamOnFinishCallback; + + generateId?: IdGenerator; +}): ReadableStream> { + let controller!: ReadableStreamDefaultController< + InferUIMessageChunk + >; + + const ongoingStreamPromises: Promise[] = []; + + const stream = new ReadableStream({ + start(controllerArg) { + controller = controllerArg; + }, + }); + + function safeEnqueue(data: InferUIMessageChunk) { + try { + controller.enqueue(data); + } catch (error) { + // suppress errors when the stream has been closed + } + } + + try { + const result = execute({ + writer: { + write(part: InferUIMessageChunk) { + safeEnqueue(part); + }, + merge(streamArg) { + ongoingStreamPromises.push( + (async () => { + const reader = streamArg.getReader(); + while (true) { + const { done, value } = await reader.read(); + if (done) break; + safeEnqueue(value); + } + })().catch(error => { + safeEnqueue({ + type: 'error', + errorText: onError(error), + } as InferUIMessageChunk); + }), + ); + }, + onError, + }, + }); + + if (result) { + ongoingStreamPromises.push( + result.catch(error => { + safeEnqueue({ + type: 'error', + errorText: onError(error), + } as InferUIMessageChunk); + }), + ); + } + } catch (error) { + safeEnqueue({ + type: 'error', + errorText: onError(error), + } as InferUIMessageChunk); + } + + // Wait until all ongoing streams are done. This approach enables merging + // streams even after execute has returned, as long as there is still an + // open merged stream. This is important to e.g. forward new streams and + // from callbacks. + const waitForStreams: Promise = new Promise(async resolve => { + while (ongoingStreamPromises.length > 0) { + await ongoingStreamPromises.shift(); + } + resolve(); + }); + + waitForStreams.finally(() => { + try { + controller.close(); + } catch (error) { + // suppress errors when the stream has been closed + } + }); + + return handleUIMessageStreamFinish({ + stream, + messageId: generateId(), + originalMessages, + onStepFinish, + onFinish, + onError, + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/get-response-ui-message-id.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/get-response-ui-message-id.ts new file mode 100644 index 000000000..a9bc71ac2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/get-response-ui-message-id.ts @@ -0,0 +1,35 @@ +import { IdGenerator } from '@ai-sdk/provider-utils'; +import { UIMessage } from '../ui/ui-messages'; + +/** + * Determines the message ID to use for a response message. + * If the last message is an assistant message, its ID is reused (continuation). + * Otherwise, a new ID is generated or the provided ID is used. + * + * @param options.originalMessages - The original messages. If not provided, returns `undefined` + * since client-side ID generation is used in non-persistence mode. + * @param options.responseMessageId - The response message ID or an ID generator function. + * + * @returns The message ID to use, or `undefined` if no persistence mode. + */ +export function getResponseUIMessageId({ + originalMessages, + responseMessageId, +}: { + originalMessages: UIMessage[] | undefined; + responseMessageId: string | IdGenerator; +}) { + // when there are no original messages (i.e. no persistence), + // the assistant message id generation is handled on the client side. + if (originalMessages == null) { + return undefined; + } + + const lastMessage = originalMessages[originalMessages.length - 1]; + + return lastMessage?.role === 'assistant' + ? lastMessage.id + : typeof responseMessageId === 'function' + ? responseMessageId() + : responseMessageId; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/handle-ui-message-stream-finish.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/handle-ui-message-stream-finish.ts new file mode 100644 index 000000000..d37f639f9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/handle-ui-message-stream-finish.ts @@ -0,0 +1,170 @@ +import { + createStreamingUIMessageState, + processUIMessageStream, + StreamingUIMessageState, +} from '../ui/process-ui-message-stream'; +import { UIMessage } from '../ui/ui-messages'; +import { ErrorHandler } from '../util/error-handler'; +import { InferUIMessageChunk, UIMessageChunk } from './ui-message-chunks'; +import { UIMessageStreamOnFinishCallback } from './ui-message-stream-on-finish-callback'; +import { UIMessageStreamOnStepFinishCallback } from './ui-message-stream-on-step-finish-callback'; + +export function handleUIMessageStreamFinish({ + messageId, + originalMessages = [], + onStepFinish, + onFinish, + onError, + stream, +}: { + stream: ReadableStream>; + + /** + * The message ID to use for the response message. + * If not provided, no id will be set for the response message. + */ + messageId?: string; + + /** + * The original messages. + */ + originalMessages?: UI_MESSAGE[]; + + onError: ErrorHandler; + + /** + * Callback that is called when each step finishes during multi-step agent runs. + */ + onStepFinish?: UIMessageStreamOnStepFinishCallback; + + onFinish?: UIMessageStreamOnFinishCallback; +}): ReadableStream> { + // last message is only relevant for assistant messages + let lastMessage: UI_MESSAGE | undefined = + originalMessages?.[originalMessages.length - 1]; + if (lastMessage?.role !== 'assistant') { + lastMessage = undefined; + } else { + // appending to the last message, so we need to use the same id + messageId = lastMessage.id; + } + + let isAborted = false; + + const idInjectedStream = stream.pipeThrough( + new TransformStream< + InferUIMessageChunk, + InferUIMessageChunk + >({ + transform(chunk, controller) { + // when there is no messageId in the start chunk, + // but the user checked for persistence, + // inject the messageId into the chunk + if (chunk.type === 'start') { + const startChunk = chunk as UIMessageChunk & { type: 'start' }; + if (startChunk.messageId == null && messageId != null) { + startChunk.messageId = messageId; + } + } + + if (chunk.type === 'abort') { + isAborted = true; + } + + controller.enqueue(chunk); + }, + }), + ); + + // Only process the stream if we need to track state for callbacks + if (onFinish == null && onStepFinish == null) { + return idInjectedStream; + } + + const state = createStreamingUIMessageState({ + lastMessage: lastMessage + ? (structuredClone(lastMessage) as UI_MESSAGE) + : undefined, + messageId: messageId ?? '', // will be overridden by the stream + }); + + const runUpdateMessageJob = async ( + job: (options: { + state: StreamingUIMessageState; + write: () => void; + }) => Promise, + ) => { + await job({ state, write: () => {} }); + }; + + let finishCalled = false; + + const callOnFinish = async () => { + if (finishCalled || !onFinish) { + return; + } + finishCalled = true; + + const isContinuation = state.message.id === lastMessage?.id; + await onFinish({ + isAborted, + isContinuation, + responseMessage: state.message as UI_MESSAGE, + messages: [ + ...(isContinuation ? originalMessages.slice(0, -1) : originalMessages), + state.message, + ] as UI_MESSAGE[], + finishReason: state.finishReason, + }); + }; + + const callOnStepFinish = async () => { + if (!onStepFinish) { + return; + } + + const isContinuation = state.message.id === lastMessage?.id; + + try { + await onStepFinish({ + isContinuation, + responseMessage: structuredClone(state.message) as UI_MESSAGE, + messages: [ + ...(isContinuation + ? originalMessages.slice(0, -1) + : originalMessages), + structuredClone(state.message), + ] as UI_MESSAGE[], + }); + } catch (error) { + onError(error); + } + }; + + return processUIMessageStream({ + stream: idInjectedStream, + runUpdateMessageJob, + onError, + }).pipeThrough( + new TransformStream< + InferUIMessageChunk, + InferUIMessageChunk + >({ + async transform(chunk, controller) { + if (chunk.type === 'finish-step') { + await callOnStepFinish(); + } + + controller.enqueue(chunk); + }, + // @ts-expect-error cancel is still new and missing from types https://developer.mozilla.org/en-US/docs/Web/API/TransformStream#browser_compatibility + async cancel() { + await callOnFinish(); + }, + + async flush() { + await callOnFinish(); + }, + }), + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/index.ts new file mode 100644 index 000000000..48dd9208f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/index.ts @@ -0,0 +1,14 @@ +export { createUIMessageStream } from './create-ui-message-stream'; +export { createUIMessageStreamResponse } from './create-ui-message-stream-response'; +export { JsonToSseTransformStream } from './json-to-sse-transform-stream'; +export { pipeUIMessageStreamToResponse } from './pipe-ui-message-stream-to-response'; +export { readUIMessageStream } from './read-ui-message-stream'; +export { + uiMessageChunkSchema, + type InferUIMessageChunk, + type UIMessageChunk, +} from './ui-message-chunks'; +export { UI_MESSAGE_STREAM_HEADERS } from './ui-message-stream-headers'; +export type { UIMessageStreamOnFinishCallback } from './ui-message-stream-on-finish-callback'; +export type { UIMessageStreamOnStepFinishCallback } from './ui-message-stream-on-step-finish-callback'; +export type { UIMessageStreamWriter } from './ui-message-stream-writer'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/json-to-sse-transform-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/json-to-sse-transform-stream.ts new file mode 100644 index 000000000..e554e101f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/json-to-sse-transform-stream.ts @@ -0,0 +1,17 @@ +/** + * A TransformStream that converts JSON objects to Server-Sent Events (SSE) format. + * Each object is serialized to JSON and wrapped in `data: ...\n\n` format. + * When the stream ends, a `data: [DONE]\n\n` message is sent. + */ +export class JsonToSseTransformStream extends TransformStream { + constructor() { + super({ + transform(part, controller) { + controller.enqueue(`data: ${JSON.stringify(part)}\n\n`); + }, + flush(controller) { + controller.enqueue('data: [DONE]\n\n'); + }, + }); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/pipe-ui-message-stream-to-response.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/pipe-ui-message-stream-to-response.ts new file mode 100644 index 000000000..99abe8def --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/pipe-ui-message-stream-to-response.ts @@ -0,0 +1,51 @@ +import { ServerResponse } from 'node:http'; +import { prepareHeaders } from '../util/prepare-headers'; +import { writeToServerResponse } from '../util/write-to-server-response'; +import { JsonToSseTransformStream } from './json-to-sse-transform-stream'; +import { UI_MESSAGE_STREAM_HEADERS } from './ui-message-stream-headers'; +import { UIMessageChunk } from './ui-message-chunks'; +import { UIMessageStreamResponseInit } from './ui-message-stream-response-init'; + +/** + * Pipes a UI message stream to a Node.js ServerResponse object. + * The stream is transformed to Server-Sent Events (SSE) format. + * + * @param options.response - The Node.js ServerResponse object to write to. + * @param options.status - The HTTP status code for the response. + * @param options.statusText - The HTTP status text for the response. + * @param options.headers - Additional HTTP headers to include in the response. + * @param options.stream - The UI message chunk stream to send. + * @param options.consumeSseStream - Optional callback to consume a copy of the SSE stream independently. + */ +export function pipeUIMessageStreamToResponse({ + response, + status, + statusText, + headers, + stream, + consumeSseStream, +}: { + response: ServerResponse; + stream: ReadableStream; +} & UIMessageStreamResponseInit): void { + let sseStream = stream.pipeThrough(new JsonToSseTransformStream()); + + // when the consumeSseStream is provided, we need to tee the stream + // and send the second part to the consumeSseStream function + // so that it can be consumed by the client independently + if (consumeSseStream) { + const [stream1, stream2] = sseStream.tee(); + sseStream = stream1; + consumeSseStream({ stream: stream2 }); // no await (do not block the response) + } + + writeToServerResponse({ + response, + status, + statusText, + headers: Object.fromEntries( + prepareHeaders(headers, UI_MESSAGE_STREAM_HEADERS).entries(), + ), + stream: sseStream.pipeThrough(new TextEncoderStream()), + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/read-ui-message-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/read-ui-message-stream.ts new file mode 100644 index 000000000..0288bb41c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/read-ui-message-stream.ts @@ -0,0 +1,87 @@ +import { UIMessage } from '../ui/ui-messages'; +import { UIMessageChunk } from './ui-message-chunks'; +import { + createStreamingUIMessageState, + processUIMessageStream, + StreamingUIMessageState, +} from '../ui/process-ui-message-stream'; +import { + AsyncIterableStream, + createAsyncIterableStream, +} from '../util/async-iterable-stream'; +import { consumeStream } from '../util/consume-stream'; + +/** + * Transforms a stream of `UIMessageChunk`s into an `AsyncIterableStream` of `UIMessage`s. + * + * @param options.message - The last assistant message to use as a starting point when the conversation is resumed. Otherwise undefined. + * @param options.stream - The stream of `UIMessageChunk`s to read. + * @param options.terminateOnError - Whether to terminate the stream if an error occurs. + * @param options.onError - A function that is called when an error occurs. + * + * @returns An `AsyncIterableStream` of `UIMessage`s. Each stream part is a different state of the same message + * as it is being completed. + */ +export function readUIMessageStream({ + message, + stream, + onError, + terminateOnError = false, +}: { + message?: UI_MESSAGE; + stream: ReadableStream; + onError?: (error: unknown) => void; + terminateOnError?: boolean; +}): AsyncIterableStream { + let controller: ReadableStreamDefaultController | undefined; + let hasErrored = false; + + const outputStream = new ReadableStream({ + start(controllerParam) { + controller = controllerParam; + }, + }); + + const state = createStreamingUIMessageState({ + messageId: message?.id ?? '', + lastMessage: message, + }); + + const handleError = (error: unknown) => { + onError?.(error); + + if (!hasErrored && terminateOnError) { + hasErrored = true; + controller?.error(error); + } + }; + + consumeStream({ + stream: processUIMessageStream({ + stream, + runUpdateMessageJob( + job: (options: { + state: StreamingUIMessageState; + write: () => void; + }) => Promise, + ) { + return job({ + state, + write: () => { + controller?.enqueue(structuredClone(state.message)); + }, + }); + }, + onError: handleError, + }), + onError: handleError, + }).finally(() => { + // Only close if no error occurred. Calling close() on an errored controller + // throws "Invalid state: Controller is already closed" TypeError. + if (!hasErrored) { + controller?.close(); + } + }); + + return createAsyncIterableStream(outputStream); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-chunks.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-chunks.ts new file mode 100644 index 000000000..726ecdf47 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-chunks.ts @@ -0,0 +1,350 @@ +import { z } from 'zod/v4'; +import { + ProviderMetadata, + providerMetadataSchema, +} from '../types/provider-metadata'; +import { FinishReason } from '../types/language-model'; +import { + InferUIMessageData, + InferUIMessageMetadata, + UIDataTypes, + UIMessage, +} from '../ui/ui-messages'; +import { ValueOf } from '../util/value-of'; +import { lazySchema, zodSchema } from '@ai-sdk/provider-utils'; + +export const uiMessageChunkSchema = lazySchema(() => + zodSchema( + z.union([ + z.strictObject({ + type: z.literal('text-start'), + id: z.string(), + providerMetadata: providerMetadataSchema.optional(), + }), + z.strictObject({ + type: z.literal('text-delta'), + id: z.string(), + delta: z.string(), + providerMetadata: providerMetadataSchema.optional(), + }), + z.strictObject({ + type: z.literal('text-end'), + id: z.string(), + providerMetadata: providerMetadataSchema.optional(), + }), + z.strictObject({ + type: z.literal('error'), + errorText: z.string(), + }), + z.strictObject({ + type: z.literal('tool-input-start'), + toolCallId: z.string(), + toolName: z.string(), + providerExecuted: z.boolean().optional(), + providerMetadata: providerMetadataSchema.optional(), + dynamic: z.boolean().optional(), + title: z.string().optional(), + }), + z.strictObject({ + type: z.literal('tool-input-delta'), + toolCallId: z.string(), + inputTextDelta: z.string(), + }), + z.strictObject({ + type: z.literal('tool-input-available'), + toolCallId: z.string(), + toolName: z.string(), + input: z.unknown(), + providerExecuted: z.boolean().optional(), + providerMetadata: providerMetadataSchema.optional(), + dynamic: z.boolean().optional(), + title: z.string().optional(), + }), + z.strictObject({ + type: z.literal('tool-input-error'), + toolCallId: z.string(), + toolName: z.string(), + input: z.unknown(), + providerExecuted: z.boolean().optional(), + providerMetadata: providerMetadataSchema.optional(), + dynamic: z.boolean().optional(), + errorText: z.string(), + title: z.string().optional(), + }), + z.strictObject({ + type: z.literal('tool-approval-request'), + approvalId: z.string(), + toolCallId: z.string(), + }), + z.strictObject({ + type: z.literal('tool-output-available'), + toolCallId: z.string(), + output: z.unknown(), + providerExecuted: z.boolean().optional(), + providerMetadata: providerMetadataSchema.optional(), + dynamic: z.boolean().optional(), + preliminary: z.boolean().optional(), + }), + z.strictObject({ + type: z.literal('tool-output-error'), + toolCallId: z.string(), + errorText: z.string(), + providerExecuted: z.boolean().optional(), + providerMetadata: providerMetadataSchema.optional(), + dynamic: z.boolean().optional(), + }), + z.strictObject({ + type: z.literal('tool-output-denied'), + toolCallId: z.string(), + }), + z.strictObject({ + type: z.literal('reasoning-start'), + id: z.string(), + providerMetadata: providerMetadataSchema.optional(), + }), + z.strictObject({ + type: z.literal('reasoning-delta'), + id: z.string(), + delta: z.string(), + providerMetadata: providerMetadataSchema.optional(), + }), + z.strictObject({ + type: z.literal('reasoning-end'), + id: z.string(), + providerMetadata: providerMetadataSchema.optional(), + }), + z.strictObject({ + type: z.literal('source-url'), + sourceId: z.string(), + url: z.string(), + title: z.string().optional(), + providerMetadata: providerMetadataSchema.optional(), + }), + z.strictObject({ + type: z.literal('source-document'), + sourceId: z.string(), + mediaType: z.string(), + title: z.string(), + filename: z.string().optional(), + providerMetadata: providerMetadataSchema.optional(), + }), + z.strictObject({ + type: z.literal('file'), + url: z.string(), + mediaType: z.string(), + providerMetadata: providerMetadataSchema.optional(), + }), + z.strictObject({ + type: z.custom<`data-${string}`>( + (value): value is `data-${string}` => + typeof value === 'string' && value.startsWith('data-'), + { message: 'Type must start with "data-"' }, + ), + id: z.string().optional(), + data: z.unknown(), + transient: z.boolean().optional(), + }), + z.strictObject({ + type: z.literal('start-step'), + }), + z.strictObject({ + type: z.literal('finish-step'), + }), + z.strictObject({ + type: z.literal('start'), + messageId: z.string().optional(), + messageMetadata: z.unknown().optional(), + }), + z.strictObject({ + type: z.literal('finish'), + finishReason: z + .enum([ + 'stop', + 'length', + 'content-filter', + 'tool-calls', + 'error', + 'other', + ] as const satisfies readonly FinishReason[]) + .optional(), + messageMetadata: z.unknown().optional(), + }), + z.strictObject({ + type: z.literal('abort'), + reason: z.string().optional(), + }), + z.strictObject({ + type: z.literal('message-metadata'), + messageMetadata: z.unknown(), + }), + ]), + ), +); + +export type DataUIMessageChunk = ValueOf<{ + [NAME in keyof DATA_TYPES & string]: { + type: `data-${NAME}`; + id?: string; + data: DATA_TYPES[NAME]; + transient?: boolean; + }; +}>; + +export type UIMessageChunk< + METADATA = unknown, + DATA_TYPES extends UIDataTypes = UIDataTypes, +> = + | { + type: 'text-start'; + id: string; + providerMetadata?: ProviderMetadata; + } + | { + type: 'text-delta'; + delta: string; + id: string; + providerMetadata?: ProviderMetadata; + } + | { + type: 'text-end'; + id: string; + providerMetadata?: ProviderMetadata; + } + | { + type: 'reasoning-start'; + id: string; + providerMetadata?: ProviderMetadata; + } + | { + type: 'reasoning-delta'; + id: string; + delta: string; + providerMetadata?: ProviderMetadata; + } + | { + type: 'reasoning-end'; + id: string; + providerMetadata?: ProviderMetadata; + } + | { + type: 'error'; + errorText: string; + } + | { + type: 'tool-input-available'; + toolCallId: string; + toolName: string; + input: unknown; + providerExecuted?: boolean; + providerMetadata?: ProviderMetadata; + dynamic?: boolean; + title?: string; + } + | { + type: 'tool-input-error'; + toolCallId: string; + toolName: string; + input: unknown; + providerExecuted?: boolean; + providerMetadata?: ProviderMetadata; + dynamic?: boolean; + errorText: string; + title?: string; + } + | { + type: 'tool-approval-request'; + approvalId: string; + toolCallId: string; + } + | { + type: 'tool-output-available'; + toolCallId: string; + output: unknown; + providerExecuted?: boolean; + providerMetadata?: ProviderMetadata; + dynamic?: boolean; + preliminary?: boolean; + } + | { + type: 'tool-output-error'; + toolCallId: string; + errorText: string; + providerExecuted?: boolean; + providerMetadata?: ProviderMetadata; + dynamic?: boolean; + } + | { + type: 'tool-output-denied'; + toolCallId: string; + } + | { + type: 'tool-input-start'; + toolCallId: string; + toolName: string; + providerExecuted?: boolean; + providerMetadata?: ProviderMetadata; + dynamic?: boolean; + title?: string; + } + | { + type: 'tool-input-delta'; + toolCallId: string; + inputTextDelta: string; + } + | { + type: 'source-url'; + sourceId: string; + url: string; + title?: string; + providerMetadata?: ProviderMetadata; + } + | { + type: 'source-document'; + sourceId: string; + mediaType: string; + title: string; + filename?: string; + providerMetadata?: ProviderMetadata; + } + | { + type: 'file'; + url: string; + mediaType: string; + providerMetadata?: ProviderMetadata; + } + | DataUIMessageChunk + | { + type: 'start-step'; + } + | { + type: 'finish-step'; + } + | { + type: 'start'; + messageId?: string; + messageMetadata?: METADATA; + } + | { + type: 'finish'; + finishReason?: FinishReason; + messageMetadata?: METADATA; + } + | { + type: 'abort'; + reason?: string; + } + | { + type: 'message-metadata'; + messageMetadata: METADATA; + }; + +export function isDataUIMessageChunk( + chunk: UIMessageChunk, +): chunk is DataUIMessageChunk { + return chunk.type.startsWith('data-'); +} + +export type InferUIMessageChunk = UIMessageChunk< + InferUIMessageMetadata, + InferUIMessageData +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-headers.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-headers.ts new file mode 100644 index 000000000..ff0149f9a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-headers.ts @@ -0,0 +1,7 @@ +export const UI_MESSAGE_STREAM_HEADERS = { + 'content-type': 'text/event-stream', + 'cache-control': 'no-cache', + connection: 'keep-alive', + 'x-vercel-ai-ui-message-stream': 'v1', + 'x-accel-buffering': 'no', // disable nginx buffering +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-on-finish-callback.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-on-finish-callback.ts new file mode 100644 index 000000000..c65f95b34 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-on-finish-callback.ts @@ -0,0 +1,32 @@ +import { FinishReason } from '../types/language-model'; +import { UIMessage } from '../ui/ui-messages'; + +export type UIMessageStreamOnFinishCallback = + (event: { + /** + * The updated list of UI messages. + */ + messages: UI_MESSAGE[]; + + /** + * Indicates whether the response message is a continuation of the last original message, + * or if a new message was created. + */ + isContinuation: boolean; + + /** + * Indicates whether the stream was aborted. + */ + isAborted: boolean; + + /** + * The message that was sent to the client as a response + * (including the original message if it was extended). + */ + responseMessage: UI_MESSAGE; + + /** + * The reason why the generation finished. + */ + finishReason?: FinishReason; + }) => PromiseLike | void; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-on-step-finish-callback.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-on-step-finish-callback.ts new file mode 100644 index 000000000..90dcc8e0e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-on-step-finish-callback.ts @@ -0,0 +1,25 @@ +import { UIMessage } from '../ui/ui-messages'; + +/** + * Callback that is called when a step finishes during streaming. + * This is useful for persisting intermediate UI messages during multi-step agent runs. + */ +export type UIMessageStreamOnStepFinishCallback = + (event: { + /** + * The updated list of UI messages at the end of this step. + */ + messages: UI_MESSAGE[]; + + /** + * Indicates whether the response message is a continuation of the last original message, + * or if a new message was created. + */ + isContinuation: boolean; + + /** + * The message that was sent to the client as a response + * (including the original message if it was extended). + */ + responseMessage: UI_MESSAGE; + }) => PromiseLike | void; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-response-init.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-response-init.ts new file mode 100644 index 000000000..8bbba8c93 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-response-init.ts @@ -0,0 +1,14 @@ +/** + * Options for creating a UI message stream response. + * Extends the standard `ResponseInit` with additional streaming options. + */ +export type UIMessageStreamResponseInit = ResponseInit & { + /** + * Optional callback to consume a copy of the SSE stream independently. + * This is useful for logging, debugging, or processing the stream in parallel. + * The callback receives a tee'd copy of the stream and does not block the response. + */ + consumeSseStream?: (options: { + stream: ReadableStream; + }) => PromiseLike | void; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-writer.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-writer.ts new file mode 100644 index 000000000..f079e1c62 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui-message-stream/ui-message-stream-writer.ts @@ -0,0 +1,24 @@ +import { UIMessage } from '../ui'; +import { ErrorHandler } from '../util/error-handler'; +import { InferUIMessageChunk } from './ui-message-chunks'; + +export interface UIMessageStreamWriter< + UI_MESSAGE extends UIMessage = UIMessage, +> { + /** + * Appends a data stream part to the stream. + */ + write(part: InferUIMessageChunk): void; + + /** + * Merges the contents of another stream to this stream. + */ + merge(stream: ReadableStream>): void; + + /** + * Error handler that is used by the data stream writer. + * This is intended for forwarding when merging streams + * to prevent duplicated error masking. + */ + onError: ErrorHandler | undefined; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/call-completion-api.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/call-completion-api.ts new file mode 100644 index 000000000..8174dac67 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/call-completion-api.ts @@ -0,0 +1,157 @@ +import { + parseJsonEventStream, + ParseResult, + withUserAgentSuffix, + getRuntimeEnvironmentUserAgent, +} from '@ai-sdk/provider-utils'; +import { + UIMessageChunk, + uiMessageChunkSchema, +} from '../ui-message-stream/ui-message-chunks'; +import { consumeStream } from '../util/consume-stream'; +import { processTextStream } from './process-text-stream'; +import { VERSION } from '../version'; + +// use function to allow for mocking in tests: +const getOriginalFetch = () => fetch; + +export async function callCompletionApi({ + api, + prompt, + credentials, + headers, + body, + streamProtocol = 'data', + setCompletion, + setLoading, + setError, + setAbortController, + onFinish, + onError, + fetch = getOriginalFetch(), +}: { + api: string; + prompt: string; + credentials: RequestCredentials | undefined; + headers: HeadersInit | undefined; + body: Record; + streamProtocol: 'data' | 'text' | undefined; + setCompletion: (completion: string) => void; + setLoading: (loading: boolean) => void; + setError: (error: Error | undefined) => void; + setAbortController: (abortController: AbortController | null) => void; + onFinish: ((prompt: string, completion: string) => void) | undefined; + onError: ((error: Error) => void) | undefined; + fetch: ReturnType | undefined; +}) { + try { + setLoading(true); + setError(undefined); + + const abortController = new AbortController(); + setAbortController(abortController); + + // Empty the completion immediately. + setCompletion(''); + + const response = await fetch(api, { + method: 'POST', + body: JSON.stringify({ + prompt, + ...body, + }), + credentials, + headers: withUserAgentSuffix( + { + 'Content-Type': 'application/json', + ...headers, + }, + `ai-sdk/${VERSION}`, + getRuntimeEnvironmentUserAgent(), + ), + signal: abortController.signal, + }).catch(err => { + throw err; + }); + + if (!response.ok) { + throw new Error( + (await response.text()) ?? 'Failed to fetch the chat response.', + ); + } + + if (!response.body) { + throw new Error('The response body is empty.'); + } + + let result = ''; + + switch (streamProtocol) { + case 'text': { + await processTextStream({ + stream: response.body, + onTextPart: chunk => { + result += chunk; + setCompletion(result); + }, + }); + break; + } + case 'data': { + await consumeStream({ + stream: parseJsonEventStream({ + stream: response.body, + schema: uiMessageChunkSchema, + }).pipeThrough( + new TransformStream, UIMessageChunk>({ + async transform(part) { + if (!part.success) { + throw part.error; + } + + const streamPart = part.value; + if (streamPart.type === 'text-delta') { + result += streamPart.delta; + setCompletion(result); + } else if (streamPart.type === 'error') { + throw new Error(streamPart.errorText); + } + }, + }), + ), + onError: error => { + throw error; + }, + }); + break; + } + default: { + const exhaustiveCheck: never = streamProtocol; + throw new Error(`Unknown stream protocol: ${exhaustiveCheck}`); + } + } + + if (onFinish) { + onFinish(prompt, result); + } + + setAbortController(null); + return result; + } catch (err) { + // Ignore abort errors as they are expected. + if ((err as any).name === 'AbortError') { + setAbortController(null); + return null; + } + + if (err instanceof Error) { + if (onError) { + onError(err); + } + } + + setError(err as Error); + } finally { + setLoading(false); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/chat-transport.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/chat-transport.ts new file mode 100644 index 000000000..22fc8c5f3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/chat-transport.ts @@ -0,0 +1,83 @@ +import { UIMessageChunk } from '../ui-message-stream'; +import { ChatRequestOptions } from './chat'; +import { UIMessage } from './ui-messages'; + +/** + * Transport interface for handling chat message communication and streaming. + * + * The `ChatTransport` interface provides fine-grained control over how messages + * are sent to API endpoints and how responses are processed. This enables + * alternative communication protocols like WebSockets, custom authentication + * patterns, or specialized backend integrations. + * + * @template UI_MESSAGE - The UI message type extending UIMessage + */ +export interface ChatTransport { + /** + * Sends messages to the chat API endpoint and returns a streaming response. + * + * This method handles both new message submission and message regeneration. + * It supports real-time streaming of responses through UIMessageChunk events. + * + * @param options - Configuration object containing: + * @param options.trigger - The type of message submission: + * - `'submit-message'`: Submitting a new user message + * - `'regenerate-message'`: Regenerating an assistant response + * @param options.chatId - Unique identifier for the chat session + * @param options.messageId - ID of the message to regenerate (for regenerate-message trigger) or undefined for new messages + * @param options.messages - Array of UI messages representing the conversation history + * @param options.abortSignal - Signal to abort the request if needed + * @param options.headers - Additional HTTP headers to include in the request + * @param options.body - Additional JSON properties to include in the request body + * @param options.metadata - Custom metadata to attach to the request + * + * @returns Promise resolving to a ReadableStream of UIMessageChunk objects. + * The stream emits various chunk types like: + * - `text-start`, `text-delta`, `text-end`: For streaming text content + * - `tool-input-start`, `tool-input-delta`, `tool-input-available`: For tool calls + * - `data-part-start`, `data-part-delta`, `data-part-available`: For data parts + * - `error`: For error handling + * + * @throws Error when the API request fails or response is invalid + */ + sendMessages: ( + options: { + /** The type of message submission - either new message or regeneration */ + trigger: 'submit-message' | 'regenerate-message'; + /** Unique identifier for the chat session */ + chatId: string; + /** ID of the message to regenerate, or undefined for new messages */ + messageId: string | undefined; + /** Array of UI messages representing the conversation history */ + messages: UI_MESSAGE[]; + /** Signal to abort the request if needed */ + abortSignal: AbortSignal | undefined; + } & ChatRequestOptions, + ) => Promise>; + + /** + * Reconnects to an existing streaming response for the specified chat session. + * + * This method is used to resume streaming when a connection is interrupted + * or when resuming a chat session. It's particularly useful for maintaining + * continuity in long-running conversations or recovering from network issues. + * + * @param options - Configuration object containing: + * @param options.chatId - Unique identifier for the chat session to reconnect to + * @param options.headers - Additional HTTP headers to include in the reconnection request + * @param options.body - Additional JSON properties to include in the request body + * @param options.metadata - Custom metadata to attach to the request + * + * @returns Promise resolving to: + * - `ReadableStream`: If an active stream is found and can be resumed + * - `null`: If no active stream exists for the specified chat session (e.g., response already completed) + * + * @throws Error when the reconnection request fails or response is invalid + */ + reconnectToStream: ( + options: { + /** Unique identifier for the chat session to reconnect to */ + chatId: string; + } & ChatRequestOptions, + ) => Promise | null>; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/chat.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/chat.ts new file mode 100644 index 000000000..6dbd3c661 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/chat.ts @@ -0,0 +1,786 @@ +import { + FlexibleSchema, + generateId as generateIdFunc, + IdGenerator, + InferSchema, +} from '@ai-sdk/provider-utils'; +import { FinishReason } from '../types/language-model'; +import { UIMessageChunk } from '../ui-message-stream/ui-message-chunks'; +import { consumeStream } from '../util/consume-stream'; +import { SerialJobExecutor } from '../util/serial-job-executor'; +import { ChatTransport } from './chat-transport'; +import { convertFileListToFileUIParts } from './convert-file-list-to-file-ui-parts'; +import { DefaultChatTransport } from './default-chat-transport'; +import { + createStreamingUIMessageState, + processUIMessageStream, + StreamingUIMessageState, +} from './process-ui-message-stream'; +import { + InferUIMessageToolCall, + isToolUIPart, + UIMessagePart, + UITools, + type DataUIPart, + type FileUIPart, + type InferUIMessageData, + type InferUIMessageMetadata, + type InferUIMessageTools, + type UIDataTypes, + type UIMessage, +} from './ui-messages'; + +export type CreateUIMessage = Omit< + UI_MESSAGE, + 'id' | 'role' +> & { + id?: UI_MESSAGE['id']; + role?: UI_MESSAGE['role']; +}; + +export type UIDataPartSchemas = Record; + +export type UIDataTypesToSchemas = { + [K in keyof T]: FlexibleSchema; +}; + +export type InferUIDataParts = { + [K in keyof T]: InferSchema; +}; + +export type ChatRequestOptions = { + /** + * Additional headers that should be to be passed to the API endpoint. + */ + headers?: Record | Headers; + + /** + * Additional body JSON properties that should be sent to the API endpoint. + */ + body?: object; // TODO JSONStringifyable + + metadata?: unknown; +}; + +/** + * Function that can be called to add a tool approval response to the chat. + */ +export type ChatAddToolApproveResponseFunction = ({ + id, + approved, + reason, + options, +}: { + id: string; + + /** + * Flag indicating whether the approval was granted or denied. + */ + approved: boolean; + + /** + * Optional reason for the approval or denial. + */ + reason?: string; + + /** + * Optional request options to be used if `sendAutomaticallyWhen` callback returns true. + */ + options?: ChatRequestOptions; +}) => void | PromiseLike; + +/** + * Function that can be called to add a tool output to the chat. + */ +export type ChatAddToolOutputFunction = < + TOOL extends keyof InferUIMessageTools, +>({ + state, + tool, + toolCallId, + output, + errorText, + options, +}: { + /** + * Name of the tool that was called. + */ + tool: TOOL; + + /** + * Identifier of the tool call to add output for. + */ + toolCallId: string; + + /** + * Optional request options to be used if `sendAutomaticallyWhen` callback returns true. + */ + options?: ChatRequestOptions; +} & ( + | { + state?: 'output-available'; + output: InferUIMessageTools[TOOL]['output']; + errorText?: never; + } + | { + state: 'output-error'; + output?: never; + errorText: string; + } +)) => void | PromiseLike; + +export type ChatStatus = 'submitted' | 'streaming' | 'ready' | 'error'; + +type ActiveResponse = { + state: StreamingUIMessageState; + abortController: AbortController; +}; + +export interface ChatState { + status: ChatStatus; + + error: Error | undefined; + + messages: UI_MESSAGE[]; + pushMessage: (message: UI_MESSAGE) => void; + popMessage: () => void; + replaceMessage: (index: number, message: UI_MESSAGE) => void; + + snapshot: (thing: T) => T; +} + +export type ChatOnErrorCallback = (error: Error) => void; + +export type ChatOnToolCallCallback = + (options: { + toolCall: InferUIMessageToolCall; + }) => void | PromiseLike; + +export type ChatOnDataCallback = ( + dataPart: DataUIPart>, +) => void; + +/** + * Function that is called when the assistant response has finished streaming. + * + * @param message The assistant message that was streamed. + * @param messages The full chat history, including the assistant message. + * + * @param isAbort Indicates whether the request has been aborted. + * @param isDisconnect Indicates whether the request has been ended by a network error. + * @param isError Indicates whether the request has been ended by an error. + * @param finishReason The reason why the generation finished. + */ +export type ChatOnFinishCallback = (options: { + message: UI_MESSAGE; + messages: UI_MESSAGE[]; + isAbort: boolean; + isDisconnect: boolean; + isError: boolean; + finishReason?: FinishReason; +}) => void; + +export interface ChatInit { + /** + * A unique identifier for the chat. If not provided, a random one will be + * generated. + */ + id?: string; + + messageMetadataSchema?: FlexibleSchema>; + dataPartSchemas?: UIDataTypesToSchemas>; + + messages?: UI_MESSAGE[]; + + /** + * A way to provide a function that is going to be used for ids for messages and the chat. + * If not provided the default AI SDK `generateId` is used. + */ + generateId?: IdGenerator; + + transport?: ChatTransport; + + /** + * Callback function to be called when an error is encountered. + */ + onError?: ChatOnErrorCallback; + + /** + * Optional callback function that is invoked when a tool call is received. + * Intended for automatic client-side tool execution. + * + * You can optionally return a result for the tool call, + * either synchronously or asynchronously. + */ + onToolCall?: ChatOnToolCallCallback; + + /** + * Function that is called when the assistant response has finished streaming. + */ + onFinish?: ChatOnFinishCallback; + + /** + * Optional callback function that is called when a data part is received. + * + * @param data The data part that was received. + */ + onData?: ChatOnDataCallback; + + /** + * When provided, this function will be called when the stream is finished or a tool call is added + * to determine if the current messages should be resubmitted. + */ + sendAutomaticallyWhen?: (options: { + messages: UI_MESSAGE[]; + }) => boolean | PromiseLike; +} + +export abstract class AbstractChat { + readonly id: string; + readonly generateId: IdGenerator; + + protected state: ChatState; + + private messageMetadataSchema: + | FlexibleSchema> + | undefined; + private dataPartSchemas: + | UIDataTypesToSchemas> + | undefined; + private readonly transport: ChatTransport; + private onError?: ChatInit['onError']; + private onToolCall?: ChatInit['onToolCall']; + private onFinish?: ChatInit['onFinish']; + private onData?: ChatInit['onData']; + private sendAutomaticallyWhen?: ChatInit['sendAutomaticallyWhen']; + + private activeResponse: ActiveResponse | undefined = undefined; + private jobExecutor = new SerialJobExecutor(); + + constructor({ + generateId = generateIdFunc, + id = generateId(), + transport = new DefaultChatTransport(), + messageMetadataSchema, + dataPartSchemas, + state, + onError, + onToolCall, + onFinish, + onData, + sendAutomaticallyWhen, + }: Omit, 'messages'> & { + state: ChatState; + }) { + this.id = id; + this.transport = transport; + this.generateId = generateId; + this.messageMetadataSchema = messageMetadataSchema; + this.dataPartSchemas = dataPartSchemas; + this.state = state; + this.onError = onError; + this.onToolCall = onToolCall; + this.onFinish = onFinish; + this.onData = onData; + this.sendAutomaticallyWhen = sendAutomaticallyWhen; + } + + /** + * Hook status: + * + * - `submitted`: The message has been sent to the API and we're awaiting the start of the response stream. + * - `streaming`: The response is actively streaming in from the API, receiving chunks of data. + * - `ready`: The full response has been received and processed; a new user message can be submitted. + * - `error`: An error occurred during the API request, preventing successful completion. + */ + get status(): ChatStatus { + return this.state.status; + } + + protected setStatus({ + status, + error, + }: { + status: ChatStatus; + error?: Error; + }) { + if (this.status === status) return; + + this.state.status = status; + this.state.error = error; + } + + get error() { + return this.state.error; + } + + get messages(): UI_MESSAGE[] { + return this.state.messages; + } + + get lastMessage(): UI_MESSAGE | undefined { + return this.state.messages[this.state.messages.length - 1]; + } + + set messages(messages: UI_MESSAGE[]) { + this.state.messages = messages; + } + + /** + * Appends or replaces a user message to the chat list. This triggers the API call to fetch + * the assistant's response. + * + * If a messageId is provided, the message will be replaced. + */ + sendMessage = async ( + message?: + | (CreateUIMessage & { + text?: never; + files?: never; + messageId?: string; + }) + | { + text: string; + files?: FileList | FileUIPart[]; + metadata?: InferUIMessageMetadata; + parts?: never; + messageId?: string; + } + | { + files: FileList | FileUIPart[]; + metadata?: InferUIMessageMetadata; + parts?: never; + messageId?: string; + }, + options?: ChatRequestOptions, + ): Promise => { + if (message == null) { + await this.makeRequest({ + trigger: 'submit-message', + messageId: this.lastMessage?.id, + ...options, + }); + return; + } + + let uiMessage: CreateUIMessage; + + if ('text' in message || 'files' in message) { + const fileParts = Array.isArray(message.files) + ? message.files + : await convertFileListToFileUIParts(message.files); + + uiMessage = { + parts: [ + ...fileParts, + ...('text' in message && message.text != null + ? [{ type: 'text' as const, text: message.text }] + : []), + ], + } as UI_MESSAGE; + } else { + uiMessage = message; + } + + if (message.messageId != null) { + const messageIndex = this.state.messages.findIndex( + m => m.id === message.messageId, + ); + + if (messageIndex === -1) { + throw new Error(`message with id ${message.messageId} not found`); + } + + if (this.state.messages[messageIndex].role !== 'user') { + throw new Error( + `message with id ${message.messageId} is not a user message`, + ); + } + + // remove all messages after the message with the given id + this.state.messages = this.state.messages.slice(0, messageIndex + 1); + + // update the message with the new content + this.state.replaceMessage(messageIndex, { + ...uiMessage, + id: message.messageId, + role: uiMessage.role ?? 'user', + metadata: message.metadata, + } as UI_MESSAGE); + } else { + this.state.pushMessage({ + ...uiMessage, + id: uiMessage.id ?? this.generateId(), + role: uiMessage.role ?? 'user', + metadata: message.metadata, + } as UI_MESSAGE); + } + + await this.makeRequest({ + trigger: 'submit-message', + messageId: message.messageId, + ...options, + }); + }; + + /** + * Regenerate the assistant message with the provided message id. + * If no message id is provided, the last assistant message will be regenerated. + */ + regenerate = async ({ + messageId, + ...options + }: { + messageId?: string; + } & ChatRequestOptions = {}): Promise => { + const messageIndex = + messageId == null + ? this.state.messages.length - 1 + : this.state.messages.findIndex(message => message.id === messageId); + + if (messageIndex === -1) { + throw new Error(`message ${messageId} not found`); + } + + // set the messages to the message before the assistant message + this.state.messages = this.state.messages.slice( + 0, + // if the message is a user message, we need to include it in the request: + this.messages[messageIndex].role === 'assistant' + ? messageIndex + : messageIndex + 1, + ); + + await this.makeRequest({ + trigger: 'regenerate-message', + messageId, + ...options, + }); + }; + + /** + * Attempt to resume an ongoing streaming response. + */ + resumeStream = async (options: ChatRequestOptions = {}): Promise => { + await this.makeRequest({ trigger: 'resume-stream', ...options }); + }; + + /** + * Clear the error state and set the status to ready if the chat is in an error state. + */ + clearError = () => { + if (this.status === 'error') { + this.state.error = undefined; + this.setStatus({ status: 'ready' }); + } + }; + + addToolApprovalResponse: ChatAddToolApproveResponseFunction = async ({ + id, + approved, + reason, + options, + }) => + this.jobExecutor.run(async () => { + const messages = this.state.messages; + const lastMessage = messages[messages.length - 1]; + + const updatePart = ( + part: UIMessagePart, + ): UIMessagePart => + isToolUIPart(part) && + part.state === 'approval-requested' && + part.approval.id === id + ? { + ...part, + state: 'approval-responded', + approval: { id, approved, reason }, + } + : part; + + // update the message to trigger an immediate UI update + this.state.replaceMessage(messages.length - 1, { + ...lastMessage, + parts: lastMessage.parts.map(updatePart), + }); + + // update the active response if it exists + if (this.activeResponse) { + this.activeResponse.state.message.parts = + this.activeResponse.state.message.parts.map(updatePart); + } + + // automatically send the message if the sendAutomaticallyWhen function returns true + if ( + this.status !== 'streaming' && + this.status !== 'submitted' && + this.sendAutomaticallyWhen + ) { + this.shouldSendAutomatically().then(shouldSend => { + if (shouldSend) { + // no await to avoid deadlocking + this.makeRequest({ + trigger: 'submit-message', + messageId: this.lastMessage?.id, + ...options, + }); + } + }); + } + }); + + addToolOutput: ChatAddToolOutputFunction = async ({ + state = 'output-available', + toolCallId, + output, + errorText, + options, + }) => + this.jobExecutor.run(async () => { + const messages = this.state.messages; + const lastMessage = messages[messages.length - 1]; + + const updatePart = ( + part: UIMessagePart, + ): UIMessagePart => + isToolUIPart(part) && part.toolCallId === toolCallId + ? ({ ...part, state, output, errorText } as typeof part) + : part; + + // update the message to trigger an immediate UI update + this.state.replaceMessage(messages.length - 1, { + ...lastMessage, + parts: lastMessage.parts.map(updatePart), + }); + + // update the active response if it exists + if (this.activeResponse) { + this.activeResponse.state.message.parts = + this.activeResponse.state.message.parts.map(updatePart); + } + + // automatically send the message if the sendAutomaticallyWhen function returns true + if ( + this.status !== 'streaming' && + this.status !== 'submitted' && + this.sendAutomaticallyWhen + ) { + this.shouldSendAutomatically().then(shouldSend => { + if (shouldSend) { + // no await to avoid deadlocking + this.makeRequest({ + trigger: 'submit-message', + messageId: this.lastMessage?.id, + ...options, + }); + } + }); + } + }); + + /** @deprecated Use addToolOutput */ + addToolResult = this.addToolOutput; + + /** + * Abort the current request immediately, keep the generated tokens if any. + */ + stop = async () => { + if (this.status !== 'streaming' && this.status !== 'submitted') return; + + if (this.activeResponse?.abortController) { + this.activeResponse.abortController.abort(); + } + }; + + private async shouldSendAutomatically(): Promise { + if (!this.sendAutomaticallyWhen) return false; + + const result = this.sendAutomaticallyWhen({ + messages: this.state.messages, + }); + + // Check if result is a promise + if (result && typeof result === 'object' && 'then' in result) { + return await result; + } + + return result as boolean; + } + + private async makeRequest({ + trigger, + metadata, + headers, + body, + messageId, + }: { + trigger: 'submit-message' | 'resume-stream' | 'regenerate-message'; + messageId?: string; + } & ChatRequestOptions) { + // For resume-stream, check if there's an active stream before + // changing status. This avoids a brief flash of 'submitted' status + // when there is no stream to resume (e.g. on page load). + let resumeStream: ReadableStream | undefined; + if (trigger === 'resume-stream') { + try { + const reconnect = await this.transport.reconnectToStream({ + chatId: this.id, + metadata, + headers, + body, + }); + + if (reconnect == null) { + return; // no active stream found, so we do not resume + } + + resumeStream = reconnect; + } catch (err) { + if (this.onError && err instanceof Error) { + this.onError(err); + } + this.setStatus({ status: 'error', error: err as Error }); + return; + } + } + + this.setStatus({ status: 'submitted', error: undefined }); + + const lastMessage = this.lastMessage; + + let isAbort = false; + let isDisconnect = false; + let isError = false; + + try { + const activeResponse = { + state: createStreamingUIMessageState({ + lastMessage: this.state.snapshot(lastMessage), + messageId: this.generateId(), + }), + abortController: new AbortController(), + } as ActiveResponse; + + activeResponse.abortController.signal.addEventListener('abort', () => { + isAbort = true; + }); + + this.activeResponse = activeResponse; + + let stream: ReadableStream; + + if (trigger === 'resume-stream') { + stream = resumeStream!; + } else { + stream = await this.transport.sendMessages({ + chatId: this.id, + messages: this.state.messages, + abortSignal: activeResponse.abortController.signal, + metadata, + headers, + body, + trigger, + messageId, + }); + } + + const runUpdateMessageJob = ( + job: (options: { + state: StreamingUIMessageState; + write: () => void; + }) => Promise, + ) => + // serialize the job execution to avoid race conditions: + this.jobExecutor.run(() => + job({ + state: activeResponse.state, + write: () => { + // streaming is set on first write (before it should be "submitted") + this.setStatus({ status: 'streaming' }); + + const replaceLastMessage = + activeResponse.state.message.id === this.lastMessage?.id; + + if (replaceLastMessage) { + this.state.replaceMessage( + this.state.messages.length - 1, + activeResponse.state.message, + ); + } else { + this.state.pushMessage(activeResponse.state.message); + } + }, + }), + ); + + await consumeStream({ + stream: processUIMessageStream({ + stream, + onToolCall: this.onToolCall, + onData: this.onData, + messageMetadataSchema: this.messageMetadataSchema, + dataPartSchemas: this.dataPartSchemas, + runUpdateMessageJob, + onError: error => { + throw error; + }, + }), + onError: error => { + throw error; + }, + }); + + this.setStatus({ status: 'ready' }); + } catch (err) { + // Ignore abort errors as they are expected. + if (isAbort || (err as any).name === 'AbortError') { + isAbort = true; + this.setStatus({ status: 'ready' }); + return null; + } + + isError = true; + + // Network errors such as disconnected, timeout, etc. + if ( + err instanceof TypeError && + (err.message.toLowerCase().includes('fetch') || + err.message.toLowerCase().includes('network')) + ) { + isDisconnect = true; + } + + if (this.onError && err instanceof Error) { + this.onError(err); + } + + this.setStatus({ status: 'error', error: err as Error }); + } finally { + try { + this.onFinish?.({ + message: this.activeResponse!.state.message, + messages: this.state.messages, + isAbort, + isDisconnect, + isError, + finishReason: this.activeResponse?.state.finishReason, + }); + } catch (err) { + console.error(err); + } + + this.activeResponse = undefined; + } + + // automatically send the message if the sendAutomaticallyWhen function returns true + if (!isError && (await this.shouldSendAutomatically())) { + await this.makeRequest({ + trigger: 'submit-message', + messageId: this.lastMessage?.id, + metadata, + headers, + body, + }); + } + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/convert-file-list-to-file-ui-parts.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/convert-file-list-to-file-ui-parts.ts new file mode 100644 index 000000000..19cd243b7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/convert-file-list-to-file-ui-parts.ts @@ -0,0 +1,36 @@ +import { FileUIPart } from './ui-messages'; + +export async function convertFileListToFileUIParts( + files: FileList | undefined, +): Promise> { + if (files == null) { + return []; + } + + // React-native doesn't have a FileList global: + if (!globalThis.FileList || !(files instanceof globalThis.FileList)) { + throw new Error('FileList is not supported in the current environment'); + } + + return Promise.all( + Array.from(files).map(async file => { + const { name, type } = file; + + const dataUrl = await new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = readerEvent => { + resolve(readerEvent.target?.result as string); + }; + reader.onerror = error => reject(error); + reader.readAsDataURL(file); + }); + + return { + type: 'file', + mediaType: type, + filename: name, + url: dataUrl, + }; + }), + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/convert-to-model-messages.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/convert-to-model-messages.ts new file mode 100644 index 000000000..d01737f8b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/convert-to-model-messages.ts @@ -0,0 +1,379 @@ +import { + AssistantContent, + FilePart, + isNonNullable, + ModelMessage, + TextPart, + ToolApprovalResponse, + ToolResultPart, +} from '@ai-sdk/provider-utils'; +import { ToolSet } from '../generate-text/tool-set'; +import { createToolModelOutput } from '../prompt/create-tool-model-output'; +import { MessageConversionError } from '../prompt/message-conversion-error'; +import { + DataUIPart, + DynamicToolUIPart, + FileUIPart, + getToolName, + InferUIMessageData, + InferUIMessageTools, + isDataUIPart, + isFileUIPart, + isReasoningUIPart, + isTextUIPart, + isToolUIPart, + ReasoningUIPart, + TextUIPart, + ToolUIPart, + UIMessage, +} from './ui-messages'; + +/** + * Converts an array of UI messages from useChat into an array of ModelMessages that can be used + * with the AI functions (e.g. `streamText`, `generateText`). + * + * @param messages - The UI messages to convert. + * @param options.tools - The tools to use. + * @param options.ignoreIncompleteToolCalls - Whether to ignore incomplete tool calls. Default is `false`. + * @param options.convertDataPart - Optional function to convert data parts to text or file model message parts. Returns `undefined` if the part should be ignored. + * + * @returns An array of ModelMessages. + */ +export async function convertToModelMessages( + messages: Array>, + options?: { + tools?: ToolSet; + ignoreIncompleteToolCalls?: boolean; + convertDataPart?: ( + part: DataUIPart>, + ) => TextPart | FilePart | undefined; + }, +): Promise { + const modelMessages: ModelMessage[] = []; + + if (options?.ignoreIncompleteToolCalls) { + messages = messages.map(message => ({ + ...message, + parts: message.parts.filter( + part => + !isToolUIPart(part) || + (part.state !== 'input-streaming' && + part.state !== 'input-available'), + ), + })); + } + + for (const message of messages) { + switch (message.role) { + case 'system': { + const textParts = message.parts.filter( + (part): part is TextUIPart => part.type === 'text', + ); + + const providerMetadata = textParts.reduce((acc, part) => { + if (part.providerMetadata != null) { + return { ...acc, ...part.providerMetadata }; + } + return acc; + }, {}); + + modelMessages.push({ + role: 'system', + content: textParts.map(part => part.text).join(''), + ...(Object.keys(providerMetadata).length > 0 + ? { providerOptions: providerMetadata } + : {}), + }); + break; + } + + case 'user': { + modelMessages.push({ + role: 'user', + content: message.parts + .map((part): TextPart | FilePart | undefined => { + // Process text parts + if (isTextUIPart(part)) { + return { + type: 'text' as const, + text: part.text, + ...(part.providerMetadata != null + ? { providerOptions: part.providerMetadata } + : {}), + }; + } + + // Process file parts + if (isFileUIPart(part)) { + return { + type: 'file' as const, + mediaType: part.mediaType, + filename: part.filename, + data: part.url, + ...(part.providerMetadata != null + ? { providerOptions: part.providerMetadata } + : {}), + }; + } + + // Process data parts with converter if provided + if (isDataUIPart(part)) { + return options?.convertDataPart?.( + part as DataUIPart>, + ); + } + }) + .filter(isNonNullable), + }); + + break; + } + + case 'assistant': { + if (message.parts != null) { + let block: Array< + | TextUIPart + | ToolUIPart> + | ReasoningUIPart + | FileUIPart + | DynamicToolUIPart + | DataUIPart> + > = []; + + async function processBlock() { + if (block.length === 0) { + return; + } + + const content: AssistantContent = []; + + for (const part of block) { + if (isTextUIPart(part)) { + content.push({ + type: 'text' as const, + text: part.text, + ...(part.providerMetadata != null + ? { providerOptions: part.providerMetadata } + : {}), + }); + } else if (isFileUIPart(part)) { + content.push({ + type: 'file' as const, + mediaType: part.mediaType, + filename: part.filename, + data: part.url, + ...(part.providerMetadata != null + ? { providerOptions: part.providerMetadata } + : {}), + }); + } else if (isReasoningUIPart(part)) { + content.push({ + type: 'reasoning' as const, + text: part.text, + providerOptions: part.providerMetadata, + }); + } else if (isToolUIPart(part)) { + const toolName = getToolName(part); + + if (part.state !== 'input-streaming') { + content.push({ + type: 'tool-call' as const, + toolCallId: part.toolCallId, + toolName, + input: + part.state === 'output-error' + ? (part.input ?? + ('rawInput' in part ? part.rawInput : undefined)) + : part.input, + providerExecuted: part.providerExecuted, + ...(part.callProviderMetadata != null + ? { providerOptions: part.callProviderMetadata } + : {}), + }); + + if (part.approval != null) { + content.push({ + type: 'tool-approval-request' as const, + approvalId: part.approval.id, + toolCallId: part.toolCallId, + }); + } + + if ( + part.providerExecuted === true && + part.state !== 'approval-responded' && + (part.state === 'output-available' || + part.state === 'output-error') + ) { + const resultProviderMetadata = + part.resultProviderMetadata ?? part.callProviderMetadata; + + content.push({ + type: 'tool-result', + toolCallId: part.toolCallId, + toolName, + output: await createToolModelOutput({ + toolCallId: part.toolCallId, + input: part.input, + output: + part.state === 'output-error' + ? part.errorText + : part.output, + tool: options?.tools?.[toolName], + errorMode: + part.state === 'output-error' ? 'json' : 'none', + }), + ...(resultProviderMetadata != null + ? { providerOptions: resultProviderMetadata } + : {}), + }); + } + } + } else if (isDataUIPart(part)) { + const dataPart = options?.convertDataPart?.( + part as DataUIPart>, + ); + + if (dataPart != null) { + content.push(dataPart); + } + } else { + const _exhaustiveCheck: never = part; + throw new Error(`Unsupported part: ${_exhaustiveCheck}`); + } + } + + modelMessages.push({ + role: 'assistant', + content, + }); + + // check if there are tool invocations with results in the block + // Include non-provider-executed tools, OR provider-executed tools with approval responses + const toolParts = block.filter( + part => + isToolUIPart(part) && + (part.providerExecuted !== true || + part.approval?.approved != null), + ) as ( + | ToolUIPart> + | DynamicToolUIPart + )[]; + + // tool message with tool results + if (toolParts.length > 0) { + { + const content: Array = + []; + for (const toolPart of toolParts) { + // add approval response for approved tool calls: + if (toolPart.approval?.approved != null) { + content.push({ + type: 'tool-approval-response' as const, + approvalId: toolPart.approval.id, + approved: toolPart.approval.approved, + reason: toolPart.approval.reason, + providerExecuted: toolPart.providerExecuted, + }); + } + + // For provider-executed tools, the tool result is already in the + // assistant content. Skip adding to tool message to avoid duplicates + // (which would create orphaned function_call_output entries). + if (toolPart.providerExecuted === true) { + continue; + } + + switch (toolPart.state) { + case 'output-denied': { + content.push({ + type: 'tool-result', + toolCallId: toolPart.toolCallId, + toolName: getToolName(toolPart), + output: { + type: 'error-text' as const, + value: + toolPart.approval.reason ?? + 'Tool execution denied.', + }, + ...(toolPart.callProviderMetadata != null + ? { providerOptions: toolPart.callProviderMetadata } + : {}), + }); + break; + } + + case 'output-error': + case 'output-available': { + const toolName = getToolName(toolPart); + content.push({ + type: 'tool-result', + toolCallId: toolPart.toolCallId, + toolName, + output: await createToolModelOutput({ + toolCallId: toolPart.toolCallId, + input: toolPart.input, + output: + toolPart.state === 'output-error' + ? toolPart.errorText + : toolPart.output, + tool: options?.tools?.[toolName], + errorMode: + toolPart.state === 'output-error' ? 'text' : 'none', + }), + ...(toolPart.callProviderMetadata != null + ? { providerOptions: toolPart.callProviderMetadata } + : {}), + }); + break; + } + } + } + + if (content.length > 0) { + modelMessages.push({ + role: 'tool', + content, + }); + } + } + } + + // updates for next block + block = []; + } + + for (const part of message.parts) { + if ( + isTextUIPart(part) || + isReasoningUIPart(part) || + isFileUIPart(part) || + isToolUIPart(part) || + isDataUIPart(part) + ) { + block.push(part as (typeof block)[number]); + } else if (part.type === 'step-start') { + await processBlock(); + } + } + + await processBlock(); + + break; + } + + break; + } + + default: { + const _exhaustiveCheck: never = message.role; + throw new MessageConversionError({ + originalMessage: message, + message: `Unsupported role: ${_exhaustiveCheck}`, + }); + } + } + } + + return modelMessages; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/default-chat-transport.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/default-chat-transport.ts new file mode 100644 index 000000000..c9d1b43a0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/default-chat-transport.ts @@ -0,0 +1,36 @@ +import { parseJsonEventStream, ParseResult } from '@ai-sdk/provider-utils'; +import { + UIMessageChunk, + uiMessageChunkSchema, +} from '../ui-message-stream/ui-message-chunks'; +import { + HttpChatTransport, + HttpChatTransportInitOptions, +} from './http-chat-transport'; +import { UIMessage } from './ui-messages'; + +export class DefaultChatTransport< + UI_MESSAGE extends UIMessage, +> extends HttpChatTransport { + constructor(options: HttpChatTransportInitOptions = {}) { + super(options); + } + + protected processResponseStream( + stream: ReadableStream>, + ): ReadableStream { + return parseJsonEventStream({ + stream, + schema: uiMessageChunkSchema, + }).pipeThrough( + new TransformStream, UIMessageChunk>({ + async transform(chunk, controller) { + if (!chunk.success) { + throw chunk.error; + } + controller.enqueue(chunk.value); + }, + }), + ); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/direct-chat-transport.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/direct-chat-transport.ts new file mode 100644 index 000000000..a795eadbd --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/direct-chat-transport.ts @@ -0,0 +1,117 @@ +import { Output } from '../generate-text/output'; +import { UIMessageStreamOptions } from '../generate-text/stream-text-result'; +import { ToolSet } from '../generate-text/tool-set'; +import { UIMessageChunk } from '../ui-message-stream/ui-message-chunks'; +import { Agent } from '../agent/agent'; +import { ChatTransport } from './chat-transport'; +import { convertToModelMessages } from './convert-to-model-messages'; +import { InferUITools, UIMessage } from './ui-messages'; +import { validateUIMessages } from './validate-ui-messages'; + +/** + * Options for the `DirectChatTransport` class. + */ +export type DirectChatTransportOptions< + CALL_OPTIONS, + TOOLS extends ToolSet, + OUTPUT extends Output, + UI_MESSAGE extends UIMessage>, +> = { + /** + * The agent to use for generating responses. + */ + agent: Agent; + + /** + * Options to pass to the agent when calling it. + */ + options?: CALL_OPTIONS; +} & Omit, 'onFinish'>; + +/** + * A transport that directly communicates with an Agent in-process, + * without going through HTTP. This is useful for: + * - Server-side rendering scenarios + * - Testing without network + * - Single-process applications + * + * @example + * ```tsx + * import { useChat } from '@ai-sdk/react'; + * import { DirectChatTransport } from 'ai'; + * import { myAgent } from './my-agent'; + * + * const { messages, sendMessage } = useChat({ + * transport: new DirectChatTransport({ agent: myAgent }), + * }); + * ``` + */ +export class DirectChatTransport< + CALL_OPTIONS = never, + TOOLS extends ToolSet = {}, + OUTPUT extends Output = never, + UI_MESSAGE extends UIMessage> = UIMessage< + unknown, + never, + InferUITools + >, +> implements ChatTransport { + private readonly agent: Agent; + private readonly agentOptions: CALL_OPTIONS | undefined; + private readonly uiMessageStreamOptions: Omit< + UIMessageStreamOptions, + 'onFinish' + >; + + constructor({ + agent, + options, + ...uiMessageStreamOptions + }: DirectChatTransportOptions) { + this.agent = agent; + this.agentOptions = options; + this.uiMessageStreamOptions = uiMessageStreamOptions; + } + + async sendMessages({ + messages, + abortSignal, + }: Parameters['sendMessages']>[0]): Promise< + ReadableStream + > { + // Validate the incoming UI messages + const validatedMessages = await validateUIMessages({ + messages, + tools: this.agent.tools, + }); + + // Convert UI messages to model messages + const modelMessages = await convertToModelMessages(validatedMessages, { + tools: this.agent.tools, + }); + + // Stream from the agent + const result = await this.agent.stream({ + prompt: modelMessages, + abortSignal, + ...(this.agentOptions !== undefined + ? { options: this.agentOptions } + : {}), + } as Parameters['stream']>[0]); + + // Return the UI message stream + return result.toUIMessageStream(this.uiMessageStreamOptions); + } + + /** + * Direct transport does not support reconnection since there is no + * persistent server-side stream to reconnect to. + * + * @returns Always returns `null` + */ + async reconnectToStream( + _options: Parameters['reconnectToStream']>[0], + ): Promise | null> { + return null; + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/http-chat-transport.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/http-chat-transport.ts new file mode 100644 index 000000000..57aa3dbb8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/http-chat-transport.ts @@ -0,0 +1,273 @@ +import { + FetchFunction, + Resolvable, + normalizeHeaders, + resolve, +} from '@ai-sdk/provider-utils'; +import { UIMessageChunk } from '../ui-message-stream/ui-message-chunks'; +import { ChatTransport } from './chat-transport'; +import { UIMessage } from './ui-messages'; + +export type PrepareSendMessagesRequest = ( + options: { + id: string; + messages: UI_MESSAGE[]; + requestMetadata: unknown; + body: Record | undefined; + credentials: RequestCredentials | undefined; + headers: HeadersInit | undefined; + api: string; + } & { + trigger: 'submit-message' | 'regenerate-message'; + messageId: string | undefined; + }, +) => + | { + body: object; + headers?: HeadersInit; + credentials?: RequestCredentials; + api?: string; + } + | PromiseLike<{ + body: object; + headers?: HeadersInit; + credentials?: RequestCredentials; + api?: string; + }>; + +export type PrepareReconnectToStreamRequest = (options: { + id: string; + requestMetadata: unknown; + body: Record | undefined; + credentials: RequestCredentials | undefined; + headers: HeadersInit | undefined; + api: string; +}) => + | { + headers?: HeadersInit; + credentials?: RequestCredentials; + api?: string; + } + | PromiseLike<{ + headers?: HeadersInit; + credentials?: RequestCredentials; + api?: string; + }>; + +/** + * Options for the `HttpChatTransport` class. + * + * @param UI_MESSAGE - The type of message to be used in the chat. + */ +export type HttpChatTransportInitOptions = { + /** + * The API URL to be used for the chat transport. + * Defaults to '/api/chat'. + */ + api?: string; + + /** + * The credentials mode to be used for the fetch request. + * Possible values are: 'omit', 'same-origin', 'include'. + * Defaults to 'same-origin'. + */ + credentials?: Resolvable; + + /** + * HTTP headers to be sent with the API request. + */ + headers?: Resolvable | Headers>; + + /** + * Extra body object to be sent with the API request. + * @example + * Send a `sessionId` to the API along with the messages. + * ```js + * useChat({ + * body: { + * sessionId: '123', + * } + * }) + * ``` + */ + body?: Resolvable; + + /** + * Custom fetch implementation. You can use it as a middleware to intercept requests, + * or to provide a custom fetch implementation for e.g. testing. + */ + fetch?: FetchFunction; + + /** + * When a function is provided, it will be used + * to prepare the request body for the chat API. This can be useful for + * customizing the request body based on the messages and data in the chat. + */ + prepareSendMessagesRequest?: PrepareSendMessagesRequest; + + /** + * When a function is provided, it will be used + * to prepare the reconnect request for the chat API. This can be useful for + * customizing the request based on the chat session. + */ + prepareReconnectToStreamRequest?: PrepareReconnectToStreamRequest; +}; + +export abstract class HttpChatTransport< + UI_MESSAGE extends UIMessage, +> implements ChatTransport { + protected api: string; + protected credentials: HttpChatTransportInitOptions['credentials']; + protected headers: HttpChatTransportInitOptions['headers']; + protected body: HttpChatTransportInitOptions['body']; + protected fetch?: FetchFunction; + protected prepareSendMessagesRequest?: PrepareSendMessagesRequest; + protected prepareReconnectToStreamRequest?: PrepareReconnectToStreamRequest; + + constructor({ + api = '/api/chat', + credentials, + headers, + body, + fetch, + prepareSendMessagesRequest, + prepareReconnectToStreamRequest, + }: HttpChatTransportInitOptions) { + this.api = api; + this.credentials = credentials; + this.headers = headers; + this.body = body; + this.fetch = fetch; + this.prepareSendMessagesRequest = prepareSendMessagesRequest; + this.prepareReconnectToStreamRequest = prepareReconnectToStreamRequest; + } + + async sendMessages({ + abortSignal, + ...options + }: Parameters['sendMessages']>[0]) { + const resolvedBody = await resolve(this.body); + const resolvedHeaders = await resolve(this.headers); + const resolvedCredentials = await resolve(this.credentials); + + const baseHeaders = { + ...normalizeHeaders(resolvedHeaders), + ...normalizeHeaders(options.headers), + }; + + const preparedRequest = await this.prepareSendMessagesRequest?.({ + api: this.api, + id: options.chatId, + messages: options.messages, + body: { ...resolvedBody, ...options.body }, + headers: baseHeaders, + credentials: resolvedCredentials, + requestMetadata: options.metadata, + trigger: options.trigger, + messageId: options.messageId, + }); + + const api = preparedRequest?.api ?? this.api; + const headers = + preparedRequest?.headers !== undefined + ? normalizeHeaders(preparedRequest.headers) + : baseHeaders; + const body = + preparedRequest?.body !== undefined + ? preparedRequest.body + : { + ...resolvedBody, + ...options.body, + id: options.chatId, + messages: options.messages, + trigger: options.trigger, + messageId: options.messageId, + }; + const credentials = preparedRequest?.credentials ?? resolvedCredentials; + + // avoid caching globalThis.fetch in case it is patched by other libraries + const fetch = this.fetch ?? globalThis.fetch; + + const response = await fetch(api, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + ...headers, + }, + body: JSON.stringify(body), + credentials, + signal: abortSignal, + }); + + if (!response.ok) { + throw new Error( + (await response.text()) ?? 'Failed to fetch the chat response.', + ); + } + + if (!response.body) { + throw new Error('The response body is empty.'); + } + + return this.processResponseStream(response.body); + } + + async reconnectToStream( + options: Parameters['reconnectToStream']>[0], + ): Promise | null> { + const resolvedBody = await resolve(this.body); + const resolvedHeaders = await resolve(this.headers); + const resolvedCredentials = await resolve(this.credentials); + + const baseHeaders = { + ...normalizeHeaders(resolvedHeaders), + ...normalizeHeaders(options.headers), + }; + + const preparedRequest = await this.prepareReconnectToStreamRequest?.({ + api: this.api, + id: options.chatId, + body: { ...resolvedBody, ...options.body }, + headers: baseHeaders, + credentials: resolvedCredentials, + requestMetadata: options.metadata, + }); + + const api = preparedRequest?.api ?? `${this.api}/${options.chatId}/stream`; + const headers = + preparedRequest?.headers !== undefined + ? normalizeHeaders(preparedRequest.headers) + : baseHeaders; + const credentials = preparedRequest?.credentials ?? resolvedCredentials; + + // avoid caching globalThis.fetch in case it is patched by other libraries + const fetch = this.fetch ?? globalThis.fetch; + + const response = await fetch(api, { + method: 'GET', + headers, + credentials, + }); + + // no active stream found, so we do not resume + if (response.status === 204) { + return null; + } + + if (!response.ok) { + throw new Error( + (await response.text()) ?? 'Failed to fetch the chat response.', + ); + } + + if (!response.body) { + throw new Error('The response body is empty.'); + } + + return this.processResponseStream(response.body); + } + + protected abstract processResponseStream( + stream: ReadableStream>, + ): ReadableStream; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/index.ts new file mode 100644 index 000000000..d8109eaf7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/index.ts @@ -0,0 +1,72 @@ +export { callCompletionApi } from './call-completion-api'; +export { + AbstractChat, + type ChatAddToolApproveResponseFunction, + type ChatAddToolOutputFunction, + type ChatInit, + type ChatOnDataCallback, + type ChatOnErrorCallback, + type ChatOnFinishCallback, + type ChatOnToolCallCallback, + type ChatRequestOptions, + type ChatState, + type ChatStatus, + type CreateUIMessage, + type InferUIDataParts, + type UIDataPartSchemas, +} from './chat'; +export { type ChatTransport } from './chat-transport'; +export { convertFileListToFileUIParts } from './convert-file-list-to-file-ui-parts'; +export { convertToModelMessages } from './convert-to-model-messages'; +export { DefaultChatTransport } from './default-chat-transport'; +export { + DirectChatTransport, + type DirectChatTransportOptions, +} from './direct-chat-transport'; +export { + HttpChatTransport, + type HttpChatTransportInitOptions, + type PrepareReconnectToStreamRequest, + type PrepareSendMessagesRequest, +} from './http-chat-transport'; +export { lastAssistantMessageIsCompleteWithApprovalResponses } from './last-assistant-message-is-complete-with-approval-responses'; +export { lastAssistantMessageIsCompleteWithToolCalls } from './last-assistant-message-is-complete-with-tool-calls'; +export { TextStreamChatTransport } from './text-stream-chat-transport'; +export { + getStaticToolName, + getToolName, + getToolOrDynamicToolName, + isDataUIPart, + isFileUIPart, + isReasoningUIPart, + isStaticToolUIPart, + isTextUIPart, + isToolOrDynamicToolUIPart, + isToolUIPart, + type DataUIPart, + type DynamicToolUIPart, + type FileUIPart, + type InferUITool, + type InferUITools, + type ReasoningUIPart, + type SourceDocumentUIPart, + type SourceUrlUIPart, + type StepStartUIPart, + type TextUIPart, + type ToolUIPart, + type UIDataTypes, + type UIMessage, + type UIMessagePart, + type UITool, + type UIToolInvocation, + type UITools, +} from './ui-messages'; +export { + type CompletionRequestOptions, + type UseCompletionOptions, +} from './use-completion'; +export { + safeValidateUIMessages, + validateUIMessages, + type SafeValidateUIMessagesResult, +} from './validate-ui-messages'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/last-assistant-message-is-complete-with-approval-responses.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/last-assistant-message-is-complete-with-approval-responses.ts new file mode 100644 index 000000000..55247e725 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/last-assistant-message-is-complete-with-approval-responses.ts @@ -0,0 +1,44 @@ +import { isToolUIPart, type UIMessage } from './ui-messages'; + +/** + * Check if the last message is an assistant message with completed tool call approvals. + * The last step of the message must have at least one tool approval response and + * all tool approvals must have a response. + */ +export function lastAssistantMessageIsCompleteWithApprovalResponses({ + messages, +}: { + messages: UIMessage[]; +}): boolean { + const message = messages[messages.length - 1]; + + if (!message) { + return false; + } + + if (message.role !== 'assistant') { + return false; + } + + const lastStepStartIndex = message.parts.reduce((lastIndex, part, index) => { + return part.type === 'step-start' ? index : lastIndex; + }, -1); + + const lastStepToolInvocations = message.parts + .slice(lastStepStartIndex + 1) + .filter(isToolUIPart) + .filter(part => !part.providerExecuted); + + return ( + // has at least one tool approval response + lastStepToolInvocations.filter(part => part.state === 'approval-responded') + .length > 0 && + // all tool approvals must have a response + lastStepToolInvocations.every( + part => + part.state === 'output-available' || + part.state === 'output-error' || + part.state === 'approval-responded', + ) + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/last-assistant-message-is-complete-with-tool-calls.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/last-assistant-message-is-complete-with-tool-calls.ts new file mode 100644 index 000000000..29469bca8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/last-assistant-message-is-complete-with-tool-calls.ts @@ -0,0 +1,39 @@ +import { isToolUIPart, type UIMessage } from './ui-messages'; + +/** + * Check if the last message is an assistant message with completed tool calls. + * The last step of the message must have at least one tool invocation and + * all tool invocations must have a result. + */ +export function lastAssistantMessageIsCompleteWithToolCalls({ + messages, +}: { + messages: UIMessage[]; +}): boolean { + const message = messages[messages.length - 1]; + + if (!message) { + return false; + } + + if (message.role !== 'assistant') { + return false; + } + + const lastStepStartIndex = message.parts.reduce((lastIndex, part, index) => { + return part.type === 'step-start' ? index : lastIndex; + }, -1); + + const lastStepToolInvocations = message.parts + .slice(lastStepStartIndex + 1) + .filter(isToolUIPart) + .filter(part => !part.providerExecuted); + + return ( + lastStepToolInvocations.length > 0 && + lastStepToolInvocations.every( + part => + part.state === 'output-available' || part.state === 'output-error', + ) + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/process-text-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/process-text-stream.ts new file mode 100644 index 000000000..dc30eea74 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/process-text-stream.ts @@ -0,0 +1,16 @@ +export async function processTextStream({ + stream, + onTextPart, +}: { + stream: ReadableStream; + onTextPart: (chunk: string) => Promise | void; +}): Promise { + const reader = stream.pipeThrough(new TextDecoderStream()).getReader(); + while (true) { + const { done, value } = await reader.read(); + if (done) { + break; + } + await onTextPart(value); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/process-ui-message-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/process-ui-message-stream.ts new file mode 100644 index 000000000..edc5b567c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/process-ui-message-stream.ts @@ -0,0 +1,845 @@ +import { TypeValidationContext } from '@ai-sdk/provider'; +import { FlexibleSchema, validateTypes } from '@ai-sdk/provider-utils'; +import { UIMessageStreamError } from '../error/ui-message-stream-error'; +import { ProviderMetadata } from '../types'; +import { FinishReason } from '../types/language-model'; +import { + DataUIMessageChunk, + InferUIMessageChunk, + isDataUIMessageChunk, + UIMessageChunk, +} from '../ui-message-stream/ui-message-chunks'; +import { ErrorHandler } from '../util/error-handler'; +import { mergeObjects } from '../util/merge-objects'; +import { parsePartialJson } from '../util/parse-partial-json'; +import { UIDataTypesToSchemas } from './chat'; +import { + DataUIPart, + DynamicToolUIPart, + getStaticToolName, + InferUIMessageData, + InferUIMessageMetadata, + InferUIMessageToolCall, + InferUIMessageTools, + isStaticToolUIPart, + isToolUIPart, + ReasoningUIPart, + TextUIPart, + ToolUIPart, + UIMessage, + UIMessagePart, +} from './ui-messages'; + +export type StreamingUIMessageState = { + message: UI_MESSAGE; + activeTextParts: Record; + activeReasoningParts: Record; + partialToolCalls: Record< + string, + { + text: string; + index: number; + toolName: string; + dynamic?: boolean; + title?: string; + } + >; + finishReason?: FinishReason; +}; + +export function createStreamingUIMessageState({ + lastMessage, + messageId, +}: { + lastMessage: UI_MESSAGE | undefined; + messageId: string; +}): StreamingUIMessageState { + return { + message: + lastMessage?.role === 'assistant' + ? lastMessage + : ({ + id: messageId, + metadata: undefined, + role: 'assistant', + parts: [] as UIMessagePart< + InferUIMessageData, + InferUIMessageTools + >[], + } as UI_MESSAGE), + activeTextParts: {}, + activeReasoningParts: {}, + partialToolCalls: {}, + }; +} + +export function processUIMessageStream({ + stream, + messageMetadataSchema, + dataPartSchemas, + runUpdateMessageJob, + onError, + onToolCall, + onData, +}: { + // input stream is not fully typed yet: + stream: ReadableStream; + messageMetadataSchema?: FlexibleSchema>; + dataPartSchemas?: UIDataTypesToSchemas>; + onToolCall?: (options: { + toolCall: InferUIMessageToolCall; + }) => void | PromiseLike; + onData?: (dataPart: DataUIPart>) => void; + runUpdateMessageJob: ( + job: (options: { + state: StreamingUIMessageState; + write: () => void; + }) => Promise, + ) => Promise; + onError: ErrorHandler; +}): ReadableStream> { + return stream.pipeThrough( + new TransformStream>({ + async transform(chunk, controller) { + await runUpdateMessageJob(async ({ state, write }) => { + function getToolInvocation(toolCallId: string) { + const toolInvocations = state.message.parts.filter(isToolUIPart); + + const toolInvocation = toolInvocations.find( + invocation => invocation.toolCallId === toolCallId, + ); + + if (toolInvocation == null) { + throw new UIMessageStreamError({ + chunkType: 'tool-invocation', + chunkId: toolCallId, + message: `No tool invocation found for tool call ID "${toolCallId}".`, + }); + } + + return toolInvocation; + } + + function updateToolPart( + options: { + toolName: keyof InferUIMessageTools & string; + toolCallId: string; + providerExecuted?: boolean; + title?: string; + } & ( + | { + state: 'input-streaming'; + input: unknown; + providerExecuted?: boolean; + providerMetadata?: ProviderMetadata; + } + | { + state: 'input-available'; + input: unknown; + providerExecuted?: boolean; + providerMetadata?: ProviderMetadata; + } + | { + state: 'output-available'; + input: unknown; + output: unknown; + providerExecuted?: boolean; + preliminary?: boolean; + providerMetadata?: ProviderMetadata; + } + | { + state: 'output-error'; + input: unknown; + rawInput?: unknown; + errorText: string; + providerExecuted?: boolean; + providerMetadata?: ProviderMetadata; + } + ), + ) { + const part = state.message.parts.find( + part => + isStaticToolUIPart(part) && + part.toolCallId === options.toolCallId, + ) as ToolUIPart> | undefined; + + const anyOptions = options as any; + const anyPart = part as any; + + if (part != null) { + part.state = options.state; + anyPart.input = anyOptions.input; + anyPart.output = anyOptions.output; + anyPart.errorText = anyOptions.errorText; + anyPart.rawInput = anyOptions.rawInput; + anyPart.preliminary = anyOptions.preliminary; + if (options.title !== undefined) { + anyPart.title = options.title; + } + // once providerExecuted is set, it stays for streaming + anyPart.providerExecuted = + anyOptions.providerExecuted ?? part.providerExecuted; + + const providerMetadata = anyOptions.providerMetadata; + + if (providerMetadata != null) { + if ( + options.state === 'output-available' || + options.state === 'output-error' + ) { + const resultPart = part as Extract< + ToolUIPart>, + { state: 'output-available' | 'output-error' } + >; + + resultPart.resultProviderMetadata = providerMetadata; + } else { + part.callProviderMetadata = providerMetadata; + } + } + } else { + state.message.parts.push({ + type: `tool-${options.toolName}`, + toolCallId: options.toolCallId, + state: options.state, + title: options.title, + input: anyOptions.input, + output: anyOptions.output, + rawInput: anyOptions.rawInput, + errorText: anyOptions.errorText, + providerExecuted: anyOptions.providerExecuted, + preliminary: anyOptions.preliminary, + ...(anyOptions.providerMetadata != null && + (options.state === 'output-available' || + options.state === 'output-error') + ? { resultProviderMetadata: anyOptions.providerMetadata } + : {}), + ...(anyOptions.providerMetadata != null && + !( + options.state === 'output-available' || + options.state === 'output-error' + ) + ? { callProviderMetadata: anyOptions.providerMetadata } + : {}), + } as ToolUIPart>); + } + } + + function updateDynamicToolPart( + options: { + toolName: keyof InferUIMessageTools & string; + toolCallId: string; + providerExecuted?: boolean; + title?: string; + } & ( + | { + state: 'input-streaming'; + input: unknown; + providerMetadata?: ProviderMetadata; + } + | { + state: 'input-available'; + input: unknown; + providerMetadata?: ProviderMetadata; + } + | { + state: 'output-available'; + input: unknown; + output: unknown; + preliminary: boolean | undefined; + providerMetadata?: ProviderMetadata; + } + | { + state: 'output-error'; + input: unknown; + errorText: string; + providerMetadata?: ProviderMetadata; + } + ), + ) { + const part = state.message.parts.find( + part => + part.type === 'dynamic-tool' && + part.toolCallId === options.toolCallId, + ) as DynamicToolUIPart | undefined; + + const anyOptions = options as any; + const anyPart = part as any; + + if (part != null) { + part.state = options.state; + anyPart.toolName = options.toolName; + anyPart.input = anyOptions.input; + anyPart.output = anyOptions.output; + anyPart.errorText = anyOptions.errorText; + anyPart.rawInput = anyOptions.rawInput ?? anyPart.rawInput; + anyPart.preliminary = anyOptions.preliminary; + if (options.title !== undefined) { + anyPart.title = options.title; + } + // once providerExecuted is set, it stays for streaming + anyPart.providerExecuted = + anyOptions.providerExecuted ?? part.providerExecuted; + + const providerMetadata = anyOptions.providerMetadata; + + if (providerMetadata != null) { + if ( + options.state === 'output-available' || + options.state === 'output-error' + ) { + const resultPart = part as Extract< + DynamicToolUIPart, + { state: 'output-available' | 'output-error' } + >; + + resultPart.resultProviderMetadata = providerMetadata; + } else { + part.callProviderMetadata = providerMetadata; + } + } + } else { + state.message.parts.push({ + type: 'dynamic-tool', + toolName: options.toolName, + toolCallId: options.toolCallId, + state: options.state, + input: anyOptions.input, + output: anyOptions.output, + errorText: anyOptions.errorText, + preliminary: anyOptions.preliminary, + providerExecuted: anyOptions.providerExecuted, + title: options.title, + ...(anyOptions.providerMetadata != null && + (options.state === 'output-available' || + options.state === 'output-error') + ? { resultProviderMetadata: anyOptions.providerMetadata } + : {}), + ...(anyOptions.providerMetadata != null && + !( + options.state === 'output-available' || + options.state === 'output-error' + ) + ? { callProviderMetadata: anyOptions.providerMetadata } + : {}), + } as DynamicToolUIPart); + } + } + + async function updateMessageMetadata(metadata: unknown) { + if (metadata != null) { + const mergedMetadata = + state.message.metadata != null + ? mergeObjects(state.message.metadata, metadata) + : metadata; + + if (messageMetadataSchema != null) { + await validateTypes({ + value: mergedMetadata, + schema: messageMetadataSchema, + context: { + field: 'message.metadata', + entityId: state.message.id, + }, + }); + } + + state.message.metadata = + mergedMetadata as InferUIMessageMetadata; + } + } + + switch (chunk.type) { + case 'text-start': { + const textPart: TextUIPart = { + type: 'text', + text: '', + providerMetadata: chunk.providerMetadata, + state: 'streaming', + }; + state.activeTextParts[chunk.id] = textPart; + state.message.parts.push(textPart); + write(); + break; + } + + case 'text-delta': { + const textPart = state.activeTextParts[chunk.id]; + if (textPart == null) { + throw new UIMessageStreamError({ + chunkType: 'text-delta', + chunkId: chunk.id, + message: + `Received text-delta for missing text part with ID "${chunk.id}". ` + + `Ensure a "text-start" chunk is sent before any "text-delta" chunks.`, + }); + } + textPart.text += chunk.delta; + textPart.providerMetadata = + chunk.providerMetadata ?? textPart.providerMetadata; + write(); + break; + } + + case 'text-end': { + const textPart = state.activeTextParts[chunk.id]; + if (textPart == null) { + throw new UIMessageStreamError({ + chunkType: 'text-end', + chunkId: chunk.id, + message: + `Received text-end for missing text part with ID "${chunk.id}". ` + + `Ensure a "text-start" chunk is sent before any "text-end" chunks.`, + }); + } + textPart.state = 'done'; + textPart.providerMetadata = + chunk.providerMetadata ?? textPart.providerMetadata; + delete state.activeTextParts[chunk.id]; + write(); + break; + } + + case 'reasoning-start': { + const reasoningPart: ReasoningUIPart = { + type: 'reasoning', + text: '', + providerMetadata: chunk.providerMetadata, + state: 'streaming', + }; + state.activeReasoningParts[chunk.id] = reasoningPart; + state.message.parts.push(reasoningPart); + write(); + break; + } + + case 'reasoning-delta': { + const reasoningPart = state.activeReasoningParts[chunk.id]; + if (reasoningPart == null) { + throw new UIMessageStreamError({ + chunkType: 'reasoning-delta', + chunkId: chunk.id, + message: + `Received reasoning-delta for missing reasoning part with ID "${chunk.id}". ` + + `Ensure a "reasoning-start" chunk is sent before any "reasoning-delta" chunks.`, + }); + } + reasoningPart.text += chunk.delta; + reasoningPart.providerMetadata = + chunk.providerMetadata ?? reasoningPart.providerMetadata; + write(); + break; + } + + case 'reasoning-end': { + const reasoningPart = state.activeReasoningParts[chunk.id]; + if (reasoningPart == null) { + throw new UIMessageStreamError({ + chunkType: 'reasoning-end', + chunkId: chunk.id, + message: + `Received reasoning-end for missing reasoning part with ID "${chunk.id}". ` + + `Ensure a "reasoning-start" chunk is sent before any "reasoning-end" chunks.`, + }); + } + reasoningPart.providerMetadata = + chunk.providerMetadata ?? reasoningPart.providerMetadata; + reasoningPart.state = 'done'; + delete state.activeReasoningParts[chunk.id]; + + write(); + break; + } + + case 'file': { + state.message.parts.push({ + type: 'file', + mediaType: chunk.mediaType, + url: chunk.url, + ...(chunk.providerMetadata != null + ? { providerMetadata: chunk.providerMetadata } + : {}), + }); + + write(); + break; + } + + case 'source-url': { + state.message.parts.push({ + type: 'source-url', + sourceId: chunk.sourceId, + url: chunk.url, + title: chunk.title, + providerMetadata: chunk.providerMetadata, + }); + + write(); + break; + } + + case 'source-document': { + state.message.parts.push({ + type: 'source-document', + sourceId: chunk.sourceId, + mediaType: chunk.mediaType, + title: chunk.title, + filename: chunk.filename, + providerMetadata: chunk.providerMetadata, + }); + + write(); + break; + } + + case 'tool-input-start': { + const toolInvocations = + state.message.parts.filter(isStaticToolUIPart); + + // add the partial tool call to the map + state.partialToolCalls[chunk.toolCallId] = { + text: '', + toolName: chunk.toolName, + index: toolInvocations.length, + dynamic: chunk.dynamic, + title: chunk.title, + }; + + if (chunk.dynamic) { + updateDynamicToolPart({ + toolCallId: chunk.toolCallId, + toolName: chunk.toolName, + state: 'input-streaming', + input: undefined, + providerExecuted: chunk.providerExecuted, + title: chunk.title, + providerMetadata: chunk.providerMetadata, + }); + } else { + updateToolPart({ + toolCallId: chunk.toolCallId, + toolName: chunk.toolName, + state: 'input-streaming', + input: undefined, + providerExecuted: chunk.providerExecuted, + title: chunk.title, + providerMetadata: chunk.providerMetadata, + }); + } + + write(); + break; + } + + case 'tool-input-delta': { + const partialToolCall = state.partialToolCalls[chunk.toolCallId]; + if (partialToolCall == null) { + throw new UIMessageStreamError({ + chunkType: 'tool-input-delta', + chunkId: chunk.toolCallId, + message: + `Received tool-input-delta for missing tool call with ID "${chunk.toolCallId}". ` + + `Ensure a "tool-input-start" chunk is sent before any "tool-input-delta" chunks.`, + }); + } + + partialToolCall.text += chunk.inputTextDelta; + + const { value: partialArgs } = await parsePartialJson( + partialToolCall.text, + ); + + if (partialToolCall.dynamic) { + updateDynamicToolPart({ + toolCallId: chunk.toolCallId, + toolName: partialToolCall.toolName, + state: 'input-streaming', + input: partialArgs, + title: partialToolCall.title, + }); + } else { + updateToolPart({ + toolCallId: chunk.toolCallId, + toolName: partialToolCall.toolName, + state: 'input-streaming', + input: partialArgs, + title: partialToolCall.title, + }); + } + + write(); + break; + } + + case 'tool-input-available': { + if (chunk.dynamic) { + updateDynamicToolPart({ + toolCallId: chunk.toolCallId, + toolName: chunk.toolName, + state: 'input-available', + input: chunk.input, + providerExecuted: chunk.providerExecuted, + providerMetadata: chunk.providerMetadata, + title: chunk.title, + }); + } else { + updateToolPart({ + toolCallId: chunk.toolCallId, + toolName: chunk.toolName, + state: 'input-available', + input: chunk.input, + providerExecuted: chunk.providerExecuted, + providerMetadata: chunk.providerMetadata, + title: chunk.title, + }); + } + + write(); + + // invoke the onToolCall callback if it exists. This is blocking. + // In the future we should make this non-blocking, which + // requires additional state management for error handling etc. + // Skip calling onToolCall for provider-executed tools since they are already executed + if (onToolCall && !chunk.providerExecuted) { + await onToolCall({ + toolCall: chunk as InferUIMessageToolCall, + }); + } + break; + } + + case 'tool-input-error': { + // When a part already exists for this toolCallId (e.g. from + // tool-input-start), honour its type so we update in place + // instead of creating a duplicate with a mismatched type. + const existingPart = state.message.parts + .filter(isToolUIPart) + .find(p => p.toolCallId === chunk.toolCallId); + const isDynamic = + existingPart != null + ? existingPart.type === 'dynamic-tool' + : !!chunk.dynamic; + + if (isDynamic) { + updateDynamicToolPart({ + toolCallId: chunk.toolCallId, + toolName: chunk.toolName, + state: 'output-error', + input: chunk.input, + errorText: chunk.errorText, + providerExecuted: chunk.providerExecuted, + providerMetadata: chunk.providerMetadata, + }); + } else { + updateToolPart({ + toolCallId: chunk.toolCallId, + toolName: chunk.toolName, + state: 'output-error', + input: undefined, + rawInput: chunk.input, + errorText: chunk.errorText, + providerExecuted: chunk.providerExecuted, + providerMetadata: chunk.providerMetadata, + }); + } + + write(); + break; + } + + case 'tool-approval-request': { + const toolInvocation = getToolInvocation(chunk.toolCallId); + toolInvocation.state = 'approval-requested'; + toolInvocation.approval = { id: chunk.approvalId }; + write(); + break; + } + + case 'tool-output-denied': { + const toolInvocation = getToolInvocation(chunk.toolCallId); + toolInvocation.state = 'output-denied'; + write(); + break; + } + + case 'tool-output-available': { + const toolInvocation = getToolInvocation(chunk.toolCallId); + + if (toolInvocation.type === 'dynamic-tool') { + updateDynamicToolPart({ + toolCallId: chunk.toolCallId, + toolName: toolInvocation.toolName, + state: 'output-available', + input: (toolInvocation as any).input, + output: chunk.output, + preliminary: chunk.preliminary, + providerExecuted: chunk.providerExecuted, + providerMetadata: chunk.providerMetadata, + title: toolInvocation.title, + }); + } else { + updateToolPart({ + toolCallId: chunk.toolCallId, + toolName: getStaticToolName(toolInvocation), + state: 'output-available', + input: (toolInvocation as any).input, + output: chunk.output, + providerExecuted: chunk.providerExecuted, + preliminary: chunk.preliminary, + providerMetadata: chunk.providerMetadata, + title: toolInvocation.title, + }); + } + + write(); + break; + } + + case 'tool-output-error': { + const toolInvocation = getToolInvocation(chunk.toolCallId); + + if (toolInvocation.type === 'dynamic-tool') { + updateDynamicToolPart({ + toolCallId: chunk.toolCallId, + toolName: toolInvocation.toolName, + state: 'output-error', + input: (toolInvocation as any).input, + errorText: chunk.errorText, + providerExecuted: chunk.providerExecuted, + providerMetadata: chunk.providerMetadata, + title: toolInvocation.title, + }); + } else { + updateToolPart({ + toolCallId: chunk.toolCallId, + toolName: getStaticToolName(toolInvocation), + state: 'output-error', + input: (toolInvocation as any).input, + rawInput: (toolInvocation as any).rawInput, + errorText: chunk.errorText, + providerExecuted: chunk.providerExecuted, + providerMetadata: chunk.providerMetadata, + title: toolInvocation.title, + }); + } + + write(); + break; + } + + case 'start-step': { + // add a step boundary part to the message + state.message.parts.push({ type: 'step-start' }); + break; + } + + case 'finish-step': { + // reset the current text and reasoning parts + state.activeTextParts = {}; + state.activeReasoningParts = {}; + break; + } + + case 'start': { + if (chunk.messageId != null) { + state.message.id = chunk.messageId; + } + + await updateMessageMetadata(chunk.messageMetadata); + + if (chunk.messageId != null || chunk.messageMetadata != null) { + write(); + } + break; + } + + case 'finish': { + if (chunk.finishReason != null) { + state.finishReason = chunk.finishReason; + } + await updateMessageMetadata(chunk.messageMetadata); + if (chunk.messageMetadata != null) { + write(); + } + break; + } + + case 'message-metadata': { + await updateMessageMetadata(chunk.messageMetadata); + if (chunk.messageMetadata != null) { + write(); + } + break; + } + + case 'error': { + onError?.(new Error(chunk.errorText)); + break; + } + + default: { + if (isDataUIMessageChunk(chunk)) { + // validate data chunk if dataPartSchemas is provided + if (dataPartSchemas?.[chunk.type] != null) { + const partIdx = state.message.parts.findIndex( + p => + 'id' in p && + 'data' in p && + p.id === chunk.id && + p.type === chunk.type, + ); + const actualPartIdx = + partIdx >= 0 ? partIdx : state.message.parts.length; + + await validateTypes({ + value: chunk.data, + schema: dataPartSchemas[chunk.type], + context: { + field: `message.parts[${actualPartIdx}].data`, + entityName: chunk.type, + entityId: chunk.id, + }, + }); + } + + // cast, validation is done above + const dataChunk = chunk as DataUIMessageChunk< + InferUIMessageData + >; + + // transient parts are not added to the message state + if (dataChunk.transient) { + onData?.(dataChunk); + break; + } + + const existingUIPart = + dataChunk.id != null + ? (state.message.parts.find( + chunkArg => + dataChunk.type === chunkArg.type && + dataChunk.id === chunkArg.id, + ) as + | DataUIPart> + | undefined) + : undefined; + + if (existingUIPart != null) { + existingUIPart.data = dataChunk.data; + } else { + state.message.parts.push(dataChunk); + } + + onData?.(dataChunk); + + write(); + } + } + } + + controller.enqueue(chunk as InferUIMessageChunk); + }); + }, + }), + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/text-stream-chat-transport.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/text-stream-chat-transport.ts new file mode 100644 index 000000000..c140aca64 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/text-stream-chat-transport.ts @@ -0,0 +1,23 @@ +import { UIMessageChunk } from '../ui-message-stream/ui-message-chunks'; +import { + HttpChatTransport, + HttpChatTransportInitOptions, +} from './http-chat-transport'; +import { transformTextToUiMessageStream } from './transform-text-to-ui-message-stream'; +import { UIMessage } from './ui-messages'; + +export class TextStreamChatTransport< + UI_MESSAGE extends UIMessage, +> extends HttpChatTransport { + constructor(options: HttpChatTransportInitOptions = {}) { + super(options); + } + + protected processResponseStream( + stream: ReadableStream>, + ): ReadableStream { + return transformTextToUiMessageStream({ + stream: stream.pipeThrough(new TextDecoderStream()), + }); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/transform-text-to-ui-message-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/transform-text-to-ui-message-stream.ts new file mode 100644 index 000000000..58749762f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/transform-text-to-ui-message-stream.ts @@ -0,0 +1,27 @@ +import { UIMessageChunk } from '../ui-message-stream/ui-message-chunks'; + +export function transformTextToUiMessageStream({ + stream, +}: { + stream: ReadableStream; +}) { + return stream.pipeThrough( + new TransformStream({ + start(controller) { + controller.enqueue({ type: 'start' }); + controller.enqueue({ type: 'start-step' }); + controller.enqueue({ type: 'text-start', id: 'text-1' }); + }, + + async transform(part, controller) { + controller.enqueue({ type: 'text-delta', id: 'text-1', delta: part }); + }, + + async flush(controller) { + controller.enqueue({ type: 'text-end', id: 'text-1' }); + controller.enqueue({ type: 'finish-step' }); + controller.enqueue({ type: 'finish' }); + }, + }), + ); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/ui-messages.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/ui-messages.ts new file mode 100644 index 000000000..ad22cc89a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/ui-messages.ts @@ -0,0 +1,540 @@ +import { + InferToolInput, + InferToolOutput, + Tool, + ToolCall, +} from '@ai-sdk/provider-utils'; +import { ToolSet } from '../generate-text'; +import { ProviderMetadata } from '../types/provider-metadata'; +import { DeepPartial } from '../util/deep-partial'; +import { ValueOf } from '../util/value-of'; + +/** + * The data types that can be used in the UI message for the UI message data parts. + */ +export type UIDataTypes = Record; + +export type UITool = { + input: unknown; + output: unknown | undefined; +}; + +/** + * Infer the input and output types of a tool so it can be used as a UI tool. + */ +export type InferUITool = { + input: InferToolInput; + output: InferToolOutput; +}; + +/** + * Infer the input and output types of a tool set so it can be used as a UI tool set. + */ +export type InferUITools = { + [NAME in keyof TOOLS & string]: InferUITool; +}; + +export type UITools = Record; + +/** + * AI SDK UI Messages. They are used in the client and to communicate between the frontend and the API routes. + */ +export interface UIMessage< + METADATA = unknown, + DATA_PARTS extends UIDataTypes = UIDataTypes, + TOOLS extends UITools = UITools, +> { + /** + * A unique identifier for the message. + */ + id: string; + + /** + * The role of the message. + */ + role: 'system' | 'user' | 'assistant'; + + /** + * The metadata of the message. + */ + metadata?: METADATA; + + /** + * The parts of the message. Use this for rendering the message in the UI. + * + * System messages should be avoided (set the system prompt on the server instead). + * They can have text parts. + * + * User messages can have text parts and file parts. + * + * Assistant messages can have text, reasoning, tool invocation, and file parts. + */ + parts: Array>; +} + +export type UIMessagePart< + DATA_TYPES extends UIDataTypes, + TOOLS extends UITools, +> = + | TextUIPart + | ReasoningUIPart + | ToolUIPart + | DynamicToolUIPart + | SourceUrlUIPart + | SourceDocumentUIPart + | FileUIPart + | DataUIPart + | StepStartUIPart; + +/** + * A text part of a message. + */ +export type TextUIPart = { + type: 'text'; + + /** + * The text content. + */ + text: string; + + /** + * The state of the text part. + */ + state?: 'streaming' | 'done'; + + /** + * The provider metadata. + */ + providerMetadata?: ProviderMetadata; +}; + +/** + * A reasoning part of a message. + */ +export type ReasoningUIPart = { + type: 'reasoning'; + + /** + * The reasoning text. + */ + text: string; + + /** + * The state of the reasoning part. + */ + state?: 'streaming' | 'done'; + + /** + * The provider metadata. + */ + providerMetadata?: ProviderMetadata; +}; + +/** + * A source part of a message. + */ +export type SourceUrlUIPart = { + type: 'source-url'; + sourceId: string; + url: string; + title?: string; + providerMetadata?: ProviderMetadata; +}; + +/** + * A document source part of a message. + */ +export type SourceDocumentUIPart = { + type: 'source-document'; + sourceId: string; + mediaType: string; + title: string; + filename?: string; + providerMetadata?: ProviderMetadata; +}; + +/** + * A file part of a message. + */ +export type FileUIPart = { + type: 'file'; + + /** + * IANA media type of the file. + * + * @see https://www.iana.org/assignments/media-types/media-types.xhtml + */ + mediaType: string; + + /** + * Optional filename of the file. + */ + filename?: string; + + /** + * The URL of the file. + * It can either be a URL to a hosted file or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs). + */ + url: string; + + /** + * The provider metadata. + */ + providerMetadata?: ProviderMetadata; +}; + +/** + * A step boundary part of a message. + */ +export type StepStartUIPart = { + type: 'step-start'; +}; + +export type DataUIPart = ValueOf<{ + [NAME in keyof DATA_TYPES & string]: { + type: `data-${NAME}`; + id?: string; + data: DATA_TYPES[NAME]; + }; +}>; + +type asUITool = TOOL extends Tool + ? InferUITool + : TOOL; + +/** + * Check if a message part is a data part. + */ +export function isDataUIPart( + part: UIMessagePart, +): part is DataUIPart { + return part.type.startsWith('data-'); +} + +/** + * A UI tool invocation contains all the information needed to render a tool invocation in the UI. + * It can be derived from a tool without knowing the tool name, and can be used to define + * UI components for the tool. + */ +export type UIToolInvocation = { + /** + * ID of the tool call. + */ + toolCallId: string; + title?: string; + + /** + * Whether the tool call was executed by the provider. + */ + providerExecuted?: boolean; +} & ( + | { + state: 'input-streaming'; + input: DeepPartial['input']> | undefined; + output?: never; + errorText?: never; + callProviderMetadata?: ProviderMetadata; + approval?: never; + } + | { + state: 'input-available'; + input: asUITool['input']; + output?: never; + errorText?: never; + callProviderMetadata?: ProviderMetadata; + approval?: never; + } + | { + state: 'approval-requested'; + input: asUITool['input']; + output?: never; + errorText?: never; + callProviderMetadata?: ProviderMetadata; + approval: { + id: string; + approved?: never; + reason?: never; + }; + } + | { + state: 'approval-responded'; + input: asUITool['input']; + output?: never; + errorText?: never; + callProviderMetadata?: ProviderMetadata; + approval: { + id: string; + approved: boolean; + reason?: string; + }; + } + | { + state: 'output-available'; + input: asUITool['input']; + output: asUITool['output']; + errorText?: never; + callProviderMetadata?: ProviderMetadata; + resultProviderMetadata?: ProviderMetadata; + preliminary?: boolean; + approval?: { + id: string; + approved: true; + reason?: string; + }; + } + | { + state: 'output-error'; // TODO AI SDK 6: change to 'error' state + input: asUITool['input'] | undefined; + rawInput?: unknown; // TODO AI SDK 6: remove this field, input should be unknown + output?: never; + errorText: string; + callProviderMetadata?: ProviderMetadata; + resultProviderMetadata?: ProviderMetadata; + approval?: { + id: string; + approved: true; + reason?: string; + }; + } + | { + state: 'output-denied'; + input: asUITool['input']; + output?: never; + errorText?: never; + callProviderMetadata?: ProviderMetadata; + approval: { + id: string; + approved: false; + reason?: string; + }; + } +); + +export type ToolUIPart = ValueOf<{ + [NAME in keyof TOOLS & string]: { + type: `tool-${NAME}`; + } & UIToolInvocation; +}>; + +export type DynamicToolUIPart = { + type: 'dynamic-tool'; + + /** + * Name of the tool that is being called. + */ + toolName: string; + + /** + * ID of the tool call. + */ + toolCallId: string; + title?: string; + + /** + * Whether the tool call was executed by the provider. + */ + providerExecuted?: boolean; +} & ( + | { + state: 'input-streaming'; + input: unknown | undefined; + output?: never; + errorText?: never; + callProviderMetadata?: ProviderMetadata; + approval?: never; + } + | { + state: 'input-available'; + input: unknown; + output?: never; + errorText?: never; + callProviderMetadata?: ProviderMetadata; + approval?: never; + } + | { + state: 'approval-requested'; + input: unknown; + output?: never; + errorText?: never; + callProviderMetadata?: ProviderMetadata; + approval: { + id: string; + approved?: never; + reason?: never; + }; + } + | { + state: 'approval-responded'; + input: unknown; + output?: never; + errorText?: never; + callProviderMetadata?: ProviderMetadata; + approval: { + id: string; + approved: boolean; + reason?: string; + }; + } + | { + state: 'output-available'; + input: unknown; + output: unknown; + errorText?: never; + callProviderMetadata?: ProviderMetadata; + resultProviderMetadata?: ProviderMetadata; + preliminary?: boolean; + approval?: { + id: string; + approved: true; + reason?: string; + }; + } + | { + state: 'output-error'; // TODO AI SDK 6: change to 'error' state + input: unknown; + output?: never; + errorText: string; + callProviderMetadata?: ProviderMetadata; + resultProviderMetadata?: ProviderMetadata; + approval?: { + id: string; + approved: true; + reason?: string; + }; + } + | { + state: 'output-denied'; + input: unknown; + output?: never; + errorText?: never; + callProviderMetadata?: ProviderMetadata; + approval: { + id: string; + approved: false; + reason?: string; + }; + } +); + +/** + * Type guard to check if a message part is a text part. + */ +export function isTextUIPart( + part: UIMessagePart, +): part is TextUIPart { + return part.type === 'text'; +} + +/** + * Type guard to check if a message part is a file part. + */ +export function isFileUIPart( + part: UIMessagePart, +): part is FileUIPart { + return part.type === 'file'; +} + +/** + * Type guard to check if a message part is a reasoning part. + */ +export function isReasoningUIPart( + part: UIMessagePart, +): part is ReasoningUIPart { + return part.type === 'reasoning'; +} + +/** + * Check if a message part is a static tool part. + * + * Static tools are tools for which the types are known at development time. + */ +export function isStaticToolUIPart( + part: UIMessagePart, +): part is ToolUIPart { + return part.type.startsWith('tool-'); +} + +/** + * Check if a message part is a dynamic tool part. + * + * Dynamic tools are tools for which the input and output types are unknown. + */ +export function isDynamicToolUIPart( + part: UIMessagePart, +): part is DynamicToolUIPart { + return part.type === 'dynamic-tool'; +} + +/** + * Check if a message part is a tool part. + * + * Tool parts are either static or dynamic tools. + * + * Use `isStaticToolUIPart` or `isDynamicToolUIPart` to check the type of the tool. + */ +export function isToolUIPart( + part: UIMessagePart, +): part is ToolUIPart | DynamicToolUIPart { + return isStaticToolUIPart(part) || isDynamicToolUIPart(part); +} + +/** + * @deprecated Use isToolUIPart instead. + */ +export const isToolOrDynamicToolUIPart = isToolUIPart; + +/** + * Returns the name of the static tool. + * + * The possible values are the keys of the tool set. + */ +export function getStaticToolName( + part: ToolUIPart, +): keyof TOOLS { + return part.type.split('-').slice(1).join('-') as keyof TOOLS; +} + +/** + * Returns the name of the tool (static or dynamic). + * + * This function will not restrict the name to the keys of the tool set. + * If you need to restrict the name to the keys of the tool set, use `getStaticToolName` instead. + */ +export function getToolName( + part: ToolUIPart | DynamicToolUIPart, +): string { + return isDynamicToolUIPart(part) ? part.toolName : getStaticToolName(part); +} + +/** + * @deprecated Use getToolName instead. + */ +export const getToolOrDynamicToolName = getToolName; + +export type InferUIMessageMetadata = + T extends UIMessage ? METADATA : unknown; + +export type InferUIMessageData = + T extends UIMessage ? DATA_TYPES : UIDataTypes; + +export type InferUIMessageTools = + T extends UIMessage ? TOOLS : UITools; + +export type InferUIMessageToolOutputs = + InferUIMessageTools[keyof InferUIMessageTools]['output']; + +export type InferUIMessageToolCall = + | ValueOf<{ + [NAME in keyof InferUIMessageTools]: ToolCall< + NAME & string, + InferUIMessageTools[NAME] extends { input: infer INPUT } + ? INPUT + : never + > & { dynamic?: false }; + }> + | (ToolCall & { dynamic: true }); + +export type InferUIMessagePart = UIMessagePart< + InferUIMessageData, + InferUIMessageTools +>; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/use-completion.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/use-completion.ts new file mode 100644 index 000000000..0b03d91a9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/use-completion.ts @@ -0,0 +1,84 @@ +import { FetchFunction } from '@ai-sdk/provider-utils'; + +export type CompletionRequestOptions = { + /** + * An optional object of headers to be passed to the API endpoint. + */ + headers?: Record | Headers; + + /** + * An optional object to be passed to the API endpoint. + */ + body?: object; +}; + +export type UseCompletionOptions = { + /** + * The API endpoint that accepts a `{ prompt: string }` object and returns + * a stream of tokens of the AI completion response. Defaults to `/api/completion`. + */ + api?: string; + /** + * A unique identifier for the completion. If not provided, a random one will be + * generated. When provided, the `useCompletion` hook with the same `id` will + * have shared states across components. + */ + id?: string; + + /** + * Initial prompt input of the completion. + */ + initialInput?: string; + + /** + * Initial completion result. Useful to load an existing history. + */ + initialCompletion?: string; + + /** + * Callback function to be called when the completion is finished streaming. + */ + onFinish?: (prompt: string, completion: string) => void; + + /** + * Callback function to be called when an error is encountered. + */ + onError?: (error: Error) => void; + + /** + * The credentials mode to be used for the fetch request. + * Possible values are: 'omit', 'same-origin', 'include'. + * Defaults to 'same-origin'. + */ + credentials?: RequestCredentials; + + /** + * HTTP headers to be sent with the API request. + */ + headers?: Record | Headers; + + /** + * Extra body object to be sent with the API request. + * @example + * Send a `sessionId` to the API along with the prompt. + * ```js + * useCompletion({ + * body: { + * sessionId: '123', + * } + * }) + * ``` + */ + body?: object; + + /** + * Streaming protocol that is used. Defaults to `data`. + */ + streamProtocol?: 'data' | 'text'; + + /** + * Custom fetch implementation. You can use it as a middleware to intercept requests, + * or to provide a custom fetch implementation for e.g. testing. + */ + fetch?: FetchFunction; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/validate-ui-messages.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/validate-ui-messages.ts new file mode 100644 index 000000000..1aa1b1891 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/ui/validate-ui-messages.ts @@ -0,0 +1,510 @@ +import { TypeValidationContext, TypeValidationError } from '@ai-sdk/provider'; +import { + FlexibleSchema, + lazySchema, + StandardSchemaV1, + Tool, + validateTypes, + zodSchema, +} from '@ai-sdk/provider-utils'; +import { z } from 'zod/v4'; +import { InvalidArgumentError } from '../error'; +import { providerMetadataSchema } from '../types/provider-metadata'; +import { + DataUIPart, + InferUIMessageData, + InferUIMessageTools, + ToolUIPart, + UIMessage, +} from './ui-messages'; + +const uiMessagesSchema = lazySchema(() => + zodSchema( + z + .array( + z.object({ + id: z.string(), + role: z.enum(['system', 'user', 'assistant']), + metadata: z.unknown().optional(), + parts: z + .array( + z.union([ + z.object({ + type: z.literal('text'), + text: z.string(), + state: z.enum(['streaming', 'done']).optional(), + providerMetadata: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('reasoning'), + text: z.string(), + state: z.enum(['streaming', 'done']).optional(), + providerMetadata: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('source-url'), + sourceId: z.string(), + url: z.string(), + title: z.string().optional(), + providerMetadata: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('source-document'), + sourceId: z.string(), + mediaType: z.string(), + title: z.string(), + filename: z.string().optional(), + providerMetadata: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('file'), + mediaType: z.string(), + filename: z.string().optional(), + url: z.string(), + providerMetadata: providerMetadataSchema.optional(), + }), + z.object({ + type: z.literal('step-start'), + }), + z.object({ + type: z.string().startsWith('data-'), + id: z.string().optional(), + data: z.unknown(), + }), + z.object({ + type: z.literal('dynamic-tool'), + toolName: z.string(), + toolCallId: z.string(), + state: z.literal('input-streaming'), + input: z.unknown().optional(), + providerExecuted: z.boolean().optional(), + callProviderMetadata: providerMetadataSchema.optional(), + output: z.never().optional(), + errorText: z.never().optional(), + approval: z.never().optional(), + }), + z.object({ + type: z.literal('dynamic-tool'), + toolName: z.string(), + toolCallId: z.string(), + state: z.literal('input-available'), + input: z.unknown(), + providerExecuted: z.boolean().optional(), + output: z.never().optional(), + errorText: z.never().optional(), + callProviderMetadata: providerMetadataSchema.optional(), + approval: z.never().optional(), + }), + z.object({ + type: z.literal('dynamic-tool'), + toolName: z.string(), + toolCallId: z.string(), + state: z.literal('approval-requested'), + input: z.unknown(), + providerExecuted: z.boolean().optional(), + output: z.never().optional(), + errorText: z.never().optional(), + callProviderMetadata: providerMetadataSchema.optional(), + approval: z.object({ + id: z.string(), + approved: z.never().optional(), + reason: z.never().optional(), + }), + }), + z.object({ + type: z.literal('dynamic-tool'), + toolName: z.string(), + toolCallId: z.string(), + state: z.literal('approval-responded'), + input: z.unknown(), + providerExecuted: z.boolean().optional(), + output: z.never().optional(), + errorText: z.never().optional(), + callProviderMetadata: providerMetadataSchema.optional(), + approval: z.object({ + id: z.string(), + approved: z.boolean(), + reason: z.string().optional(), + }), + }), + z.object({ + type: z.literal('dynamic-tool'), + toolName: z.string(), + toolCallId: z.string(), + state: z.literal('output-available'), + input: z.unknown(), + providerExecuted: z.boolean().optional(), + output: z.unknown(), + errorText: z.never().optional(), + callProviderMetadata: providerMetadataSchema.optional(), + resultProviderMetadata: providerMetadataSchema.optional(), + preliminary: z.boolean().optional(), + approval: z + .object({ + id: z.string(), + approved: z.literal(true), + reason: z.string().optional(), + }) + .optional(), + }), + z.object({ + type: z.literal('dynamic-tool'), + toolName: z.string(), + toolCallId: z.string(), + state: z.literal('output-error'), + input: z.unknown(), + rawInput: z.unknown().optional(), + providerExecuted: z.boolean().optional(), + output: z.never().optional(), + errorText: z.string(), + callProviderMetadata: providerMetadataSchema.optional(), + resultProviderMetadata: providerMetadataSchema.optional(), + approval: z + .object({ + id: z.string(), + approved: z.literal(true), + reason: z.string().optional(), + }) + .optional(), + }), + z.object({ + type: z.literal('dynamic-tool'), + toolName: z.string(), + toolCallId: z.string(), + state: z.literal('output-denied'), + input: z.unknown(), + providerExecuted: z.boolean().optional(), + output: z.never().optional(), + errorText: z.never().optional(), + callProviderMetadata: providerMetadataSchema.optional(), + approval: z.object({ + id: z.string(), + approved: z.literal(false), + reason: z.string().optional(), + }), + }), + z.object({ + type: z.string().startsWith('tool-'), + toolCallId: z.string(), + state: z.literal('input-streaming'), + providerExecuted: z.boolean().optional(), + callProviderMetadata: providerMetadataSchema.optional(), + input: z.unknown().optional(), + output: z.never().optional(), + errorText: z.never().optional(), + approval: z.never().optional(), + }), + z.object({ + type: z.string().startsWith('tool-'), + toolCallId: z.string(), + state: z.literal('input-available'), + providerExecuted: z.boolean().optional(), + input: z.unknown(), + output: z.never().optional(), + errorText: z.never().optional(), + callProviderMetadata: providerMetadataSchema.optional(), + approval: z.never().optional(), + }), + z.object({ + type: z.string().startsWith('tool-'), + toolCallId: z.string(), + state: z.literal('approval-requested'), + input: z.unknown(), + providerExecuted: z.boolean().optional(), + output: z.never().optional(), + errorText: z.never().optional(), + callProviderMetadata: providerMetadataSchema.optional(), + approval: z.object({ + id: z.string(), + approved: z.never().optional(), + reason: z.never().optional(), + }), + }), + z.object({ + type: z.string().startsWith('tool-'), + toolCallId: z.string(), + state: z.literal('approval-responded'), + input: z.unknown(), + providerExecuted: z.boolean().optional(), + output: z.never().optional(), + errorText: z.never().optional(), + callProviderMetadata: providerMetadataSchema.optional(), + approval: z.object({ + id: z.string(), + approved: z.boolean(), + reason: z.string().optional(), + }), + }), + z.object({ + type: z.string().startsWith('tool-'), + toolCallId: z.string(), + state: z.literal('output-available'), + providerExecuted: z.boolean().optional(), + input: z.unknown(), + output: z.unknown(), + errorText: z.never().optional(), + callProviderMetadata: providerMetadataSchema.optional(), + resultProviderMetadata: providerMetadataSchema.optional(), + preliminary: z.boolean().optional(), + approval: z + .object({ + id: z.string(), + approved: z.literal(true), + reason: z.string().optional(), + }) + .optional(), + }), + z.object({ + type: z.string().startsWith('tool-'), + toolCallId: z.string(), + state: z.literal('output-error'), + providerExecuted: z.boolean().optional(), + input: z.unknown(), + rawInput: z.unknown().optional(), + output: z.never().optional(), + errorText: z.string(), + callProviderMetadata: providerMetadataSchema.optional(), + resultProviderMetadata: providerMetadataSchema.optional(), + approval: z + .object({ + id: z.string(), + approved: z.literal(true), + reason: z.string().optional(), + }) + .optional(), + }), + z.object({ + type: z.string().startsWith('tool-'), + toolCallId: z.string(), + state: z.literal('output-denied'), + providerExecuted: z.boolean().optional(), + input: z.unknown(), + output: z.never().optional(), + errorText: z.never().optional(), + callProviderMetadata: providerMetadataSchema.optional(), + approval: z.object({ + id: z.string(), + approved: z.literal(false), + reason: z.string().optional(), + }), + }), + ]), + ) + .nonempty('Message must contain at least one part'), + }), + ) + .nonempty('Messages array must not be empty'), + ), +); + +export type SafeValidateUIMessagesResult = + | { + success: true; + data: Array; + } + | { + success: false; + error: Error; + }; + +/** + * Validates a list of UI messages like `validateUIMessages`, + * but instead of throwing it returns `{ success: true, data }` + * or `{ success: false, error }`. + */ +export async function safeValidateUIMessages({ + messages, + metadataSchema, + dataSchemas, + tools, +}: { + messages: unknown; + metadataSchema?: FlexibleSchema; + dataSchemas?: { + [NAME in keyof InferUIMessageData & string]?: FlexibleSchema< + InferUIMessageData[NAME] + >; + }; + tools?: { + [NAME in keyof InferUIMessageTools & string]?: Tool< + InferUIMessageTools[NAME]['input'], + InferUIMessageTools[NAME]['output'] + >; + }; +}): Promise> { + try { + if (messages == null) { + return { + success: false, + error: new InvalidArgumentError({ + parameter: 'messages', + value: messages, + message: 'messages parameter must be provided', + }), + }; + } + + const validatedMessages = await validateTypes({ + value: messages, + schema: uiMessagesSchema, + }); + + if (metadataSchema) { + for (const [msgIdx, message] of validatedMessages.entries()) { + await validateTypes({ + value: message.metadata, + schema: metadataSchema, + context: { + field: `messages[${msgIdx}].metadata`, + entityId: message.id, + }, + }); + } + } + + if (dataSchemas || tools) { + for (const [msgIdx, message] of validatedMessages.entries()) { + for (const [partIdx, part] of message.parts.entries()) { + // Data part validation + if (dataSchemas && part.type.startsWith('data-')) { + const dataPart = part as DataUIPart>; + const dataName = dataPart.type.slice(5); + const dataSchema = dataSchemas[dataName]; + + if (!dataSchema) { + return { + success: false, + error: new TypeValidationError({ + value: dataPart.data, + cause: `No data schema found for data part ${dataName}`, + context: { + field: `messages[${msgIdx}].parts[${partIdx}].data`, + entityName: dataName, + entityId: dataPart.id, + }, + }), + }; + } + + await validateTypes({ + value: dataPart.data, + schema: dataSchema, + context: { + field: `messages[${msgIdx}].parts[${partIdx}].data`, + entityName: dataName, + entityId: dataPart.id, + }, + }); + } + + // Tool part validation + if (tools && part.type.startsWith('tool-')) { + const toolPart = part as ToolUIPart< + InferUIMessageTools + >; + const toolName = toolPart.type.slice(5); + const tool = tools[toolName]; + + // TODO support dynamic tools + if (!tool) { + return { + success: false, + error: new TypeValidationError({ + value: toolPart.input, + cause: `No tool schema found for tool part ${toolName}`, + context: { + field: `messages[${msgIdx}].parts[${partIdx}].input`, + entityName: toolName, + entityId: toolPart.toolCallId, + }, + }), + }; + } + + // Tool input validation + if ( + toolPart.state === 'input-available' || + toolPart.state === 'output-available' || + (toolPart.state === 'output-error' && + toolPart.input !== undefined) + ) { + await validateTypes({ + value: toolPart.input, + schema: tool.inputSchema, + context: { + field: `messages[${msgIdx}].parts[${partIdx}].input`, + entityName: toolName, + entityId: toolPart.toolCallId, + }, + }); + } + + // Tool output validation + if (toolPart.state === 'output-available' && tool.outputSchema) { + await validateTypes({ + value: toolPart.output, + schema: tool.outputSchema, + context: { + field: `messages[${msgIdx}].parts[${partIdx}].output`, + entityName: toolName, + entityId: toolPart.toolCallId, + }, + }); + } + } + } + } + } + + return { + success: true, + data: validatedMessages as Array, + }; + } catch (error) { + const err = error as Error; + + return { + success: false, + error: err, + }; + } +} + +/** + * Validates a list of UI messages. + * + * Metadata, data parts, and generic tool call structures are only validated if + * the corresponding schemas are provided. Otherwise, they are assumed to be + * valid. + */ +export async function validateUIMessages({ + messages, + metadataSchema, + dataSchemas, + tools, +}: { + messages: unknown; + metadataSchema?: FlexibleSchema; + dataSchemas?: { + [NAME in keyof InferUIMessageData & string]?: FlexibleSchema< + InferUIMessageData[NAME] + >; + }; + tools?: { + [NAME in keyof InferUIMessageTools & string]?: Tool< + InferUIMessageTools[NAME]['input'], + InferUIMessageTools[NAME]['output'] + >; + }; +}): Promise> { + const response = await safeValidateUIMessages({ + messages, + metadataSchema, + dataSchemas, + tools, + }); + + if (!response.success) throw response.error; + + return response.data; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/as-array.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/as-array.ts new file mode 100644 index 000000000..3a9a1a9ab --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/as-array.ts @@ -0,0 +1,3 @@ +export function asArray(value: T | T[] | undefined): T[] { + return value === undefined ? [] : Array.isArray(value) ? value : [value]; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/async-iterable-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/async-iterable-stream.ts new file mode 100644 index 000000000..b92d403bb --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/async-iterable-stream.ts @@ -0,0 +1,94 @@ +/** + * A type that combines AsyncIterable and ReadableStream. + * This allows a ReadableStream to be consumed using for-await-of syntax. + */ +export type AsyncIterableStream = AsyncIterable & ReadableStream; + +/** + * Wraps a ReadableStream and returns an object that is both a ReadableStream and an AsyncIterable. + * This enables consumption of the stream using for-await-of, with proper resource cleanup on early exit or error. + * + * @template T The type of the stream's chunks. + * @param source The source ReadableStream to wrap. + * @returns An AsyncIterableStream that can be used as both a ReadableStream and an AsyncIterable. + */ +export function createAsyncIterableStream( + source: ReadableStream, +): AsyncIterableStream { + // Pipe through a TransformStream to ensure a fresh, unlocked stream. + const stream = source.pipeThrough(new TransformStream()); + + /** + * Implements the async iterator protocol for the stream. + * Ensures proper cleanup (cancelling and releasing the reader) on completion, early exit, or error. + */ + (stream as AsyncIterableStream)[Symbol.asyncIterator] = function ( + this: ReadableStream, + ): AsyncIterator { + const reader = this.getReader(); + + let finished = false; + + /** + * Cleans up the reader by cancelling and releasing the lock. + */ + async function cleanup(cancelStream: boolean) { + if (finished) return; + + finished = true; + try { + if (cancelStream) { + await reader.cancel?.(); + } + } finally { + try { + reader.releaseLock(); + } catch {} + } + } + + return { + /** + * Reads the next chunk from the stream. + * @returns A promise resolving to the next IteratorResult. + */ + async next(): Promise> { + if (finished) { + return { done: true, value: undefined }; + } + + const { done, value } = await reader.read(); + + if (done) { + await cleanup(true); + return { done: true, value: undefined }; + } + + return { done: false, value }; + }, + + /** + * May be called on early exit (e.g., break from for-await) or after completion. + * Ensures the stream is cancelled and resources are released. + * @returns A promise resolving to a completed IteratorResult. + */ + async return(): Promise> { + await cleanup(true); + return { done: true, value: undefined }; + }, + + /** + * Called on early exit with error. + * Ensures the stream is cancelled and resources are released, then rethrows the error. + * @param err The error to throw. + * @returns A promise that rejects with the provided error. + */ + async throw(err: unknown): Promise> { + await cleanup(true); + throw err; + }, + }; + }; + + return stream as AsyncIterableStream; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/consume-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/consume-stream.ts new file mode 100644 index 000000000..c5a6e2039 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/consume-stream.ts @@ -0,0 +1,31 @@ +/** + * Consumes a ReadableStream until it's fully read. + * + * This function reads the stream chunk by chunk until the stream is exhausted. + * It doesn't process or return the data from the stream; it simply ensures + * that the entire stream is read. + * + * @param options - The options for consuming the stream. + * @param options.stream - The ReadableStream to be consumed. + * @param options.onError - Optional callback to handle errors that occur during consumption. + * @returns A promise that resolves when the stream is fully consumed. + */ +export async function consumeStream({ + stream, + onError, +}: { + stream: ReadableStream; + onError?: (error: unknown) => void; +}): Promise { + const reader = stream.getReader(); + try { + while (true) { + const { done } = await reader.read(); + if (done) break; + } + } catch (error) { + onError?.(error); + } finally { + reader.releaseLock(); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/cosine-similarity.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/cosine-similarity.ts new file mode 100644 index 000000000..a01b200a9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/cosine-similarity.ts @@ -0,0 +1,46 @@ +import { InvalidArgumentError } from '../error/invalid-argument-error'; + +/** + * Calculates the cosine similarity between two vectors. This is a useful metric for + * comparing the similarity of two vectors such as embeddings. + * + * @param vector1 - The first vector. + * @param vector2 - The second vector. + * + * @returns The cosine similarity between vector1 and vector2, or 0 if either vector is the zero vector. + * + * @throws {InvalidArgumentError} If the vectors do not have the same length. + */ +export function cosineSimilarity(vector1: number[], vector2: number[]): number { + if (vector1.length !== vector2.length) { + throw new InvalidArgumentError({ + parameter: 'vector1,vector2', + value: { vector1Length: vector1.length, vector2Length: vector2.length }, + message: `Vectors must have the same length`, + }); + } + + const n = vector1.length; + + if (n === 0) { + return 0; // Return 0 for empty vectors if no error is thrown + } + + let magnitudeSquared1 = 0; + let magnitudeSquared2 = 0; + let dotProduct = 0; + + for (let i = 0; i < n; i++) { + const value1 = vector1[i]; + const value2 = vector2[i]; + + magnitudeSquared1 += value1 * value1; + magnitudeSquared2 += value2 * value2; + dotProduct += value1 * value2; + } + + return magnitudeSquared1 === 0 || magnitudeSquared2 === 0 + ? 0 + : dotProduct / + (Math.sqrt(magnitudeSquared1) * Math.sqrt(magnitudeSquared2)); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/create-resolvable-promise.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/create-resolvable-promise.ts new file mode 100644 index 000000000..76271088d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/create-resolvable-promise.ts @@ -0,0 +1,30 @@ +import { ErrorHandler } from './error-handler'; + +/** + * Creates a Promise with externally accessible resolve and reject functions. + * + * @template T - The type of the value that the Promise will resolve to. + * @returns An object containing: + * - promise: A Promise that can be resolved or rejected externally. + * - resolve: A function to resolve the Promise with a value of type T. + * - reject: A function to reject the Promise with an error. + */ +export function createResolvablePromise(): { + promise: Promise; + resolve: (value: T) => void; + reject: ErrorHandler; +} { + let resolve: (value: T) => void; + let reject: ErrorHandler; + + const promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + + return { + promise, + resolve: resolve!, + reject: reject!, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/create-stitchable-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/create-stitchable-stream.ts new file mode 100644 index 000000000..afcc75827 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/create-stitchable-stream.ts @@ -0,0 +1,112 @@ +import { createResolvablePromise } from './create-resolvable-promise'; + +/** + * Creates a stitchable stream that can pipe one stream at a time. + * + * @template T - The type of values emitted by the streams. + * @returns {Object} An object containing the stitchable stream and control methods. + */ +export function createStitchableStream(): { + stream: ReadableStream; + addStream: (innerStream: ReadableStream) => void; + close: () => void; + terminate: () => void; +} { + let innerStreamReaders: ReadableStreamDefaultReader[] = []; + let controller: ReadableStreamDefaultController | null = null; + let isClosed = false; + let waitForNewStream = createResolvablePromise(); + + const terminate = () => { + isClosed = true; + waitForNewStream.resolve(); + + innerStreamReaders.forEach(reader => reader.cancel()); + innerStreamReaders = []; + controller?.close(); + }; + + const processPull = async () => { + // Case 1: Outer stream is closed and no more inner streams + if (isClosed && innerStreamReaders.length === 0) { + controller?.close(); + return; + } + + // Case 2: No inner streams available, but outer stream is open + // wait for a new inner stream to be added or the outer stream to close + if (innerStreamReaders.length === 0) { + waitForNewStream = createResolvablePromise(); + await waitForNewStream.promise; + return processPull(); + } + + try { + const { value, done } = await innerStreamReaders[0].read(); + + if (done) { + // Case 3: Current inner stream is done + innerStreamReaders.shift(); // Remove the finished stream + + if (innerStreamReaders.length === 0 && isClosed) { + // when closed and no more inner streams, stop pulling + controller?.close(); + } else { + // continue pulling from the next stream + await processPull(); + } + } else { + // Case 4: Current inner stream returns an item + controller?.enqueue(value); + } + } catch (error) { + // Case 5: Current inner stream throws an error + controller?.error(error); + innerStreamReaders.shift(); // Remove the errored stream + terminate(); // we have errored, terminate all streams + } + }; + + return { + stream: new ReadableStream({ + start(controllerParam) { + controller = controllerParam; + }, + pull: processPull, + async cancel() { + for (const reader of innerStreamReaders) { + await reader.cancel(); + } + innerStreamReaders = []; + isClosed = true; + }, + }), + addStream: (innerStream: ReadableStream) => { + if (isClosed) { + throw new Error('Cannot add inner stream: outer stream is closed'); + } + + innerStreamReaders.push(innerStream.getReader()); + waitForNewStream.resolve(); + }, + + /** + * Gracefully close the outer stream. This will let the inner streams + * finish processing and then close the outer stream. + */ + close: () => { + isClosed = true; + waitForNewStream.resolve(); + + if (innerStreamReaders.length === 0) { + controller?.close(); + } + }, + + /** + * Immediately close the outer stream. This will cancel all inner streams + * and close the outer stream. + */ + terminate, + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/data-url.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/data-url.ts new file mode 100644 index 000000000..101349627 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/data-url.ts @@ -0,0 +1,17 @@ +/** + * Converts a data URL of type text/* to a text string. + */ +export function getTextFromDataUrl(dataUrl: string): string { + const [header, base64Content] = dataUrl.split(','); + const mediaType = header.split(';')[0].split(':')[1]; + + if (mediaType == null || base64Content == null) { + throw new Error('Invalid data URL format'); + } + + try { + return window.atob(base64Content); + } catch (error) { + throw new Error(`Error decoding data URL`); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/deep-partial.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/deep-partial.ts new file mode 100644 index 000000000..08bdb4d0d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/deep-partial.ts @@ -0,0 +1,84 @@ +// License for this File only: +// +// MIT License +// +// Copyright (c) Sindre Sorhus (https://sindresorhus.com) +// Copyright (c) Vercel, Inc. (https://vercel.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +// documentation files (the "Software"), to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and +// to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions +// of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +// IN THE SOFTWARE. + +import { FlexibleSchema, InferSchema } from '@ai-sdk/provider-utils'; + +/** + * Create a type from an object with all keys and nested keys set to optional. + * The helper supports normal objects and schemas (which are resolved automatically). + * It always recurses into arrays. + * + * Adopted from [type-fest](https://github.com/sindresorhus/type-fest/tree/main) PartialDeep. + */ + +export type DeepPartial = T extends FlexibleSchema + ? DeepPartialInternal> // resolve schemas first to prevent infinite recursion + : DeepPartialInternal; + +type DeepPartialInternal = T extends + | null + | undefined + | string + | number + | boolean + | symbol + | bigint + | void + | Date + | RegExp + | ((...arguments_: any[]) => unknown) + | (new (...arguments_: any[]) => unknown) + ? T + : T extends Map + ? PartialMap + : T extends Set + ? PartialSet + : T extends ReadonlyMap + ? PartialReadonlyMap + : T extends ReadonlySet + ? PartialReadonlySet + : T extends object + ? T extends ReadonlyArray // Test for arrays/tuples, per https://github.com/microsoft/TypeScript/issues/35156 + ? ItemType[] extends T // Test for arrays (non-tuples) specifically + ? readonly ItemType[] extends T // Differentiate readonly and mutable arrays + ? ReadonlyArray> + : Array> + : PartialObject // Tuples behave properly + : PartialObject + : unknown; + +type PartialMap = {} & Map< + DeepPartialInternal, + DeepPartialInternal +>; + +type PartialSet = {} & Set>; + +type PartialReadonlyMap = {} & ReadonlyMap< + DeepPartialInternal, + DeepPartialInternal +>; + +type PartialReadonlySet = {} & ReadonlySet>; + +type PartialObject = { + [KeyType in keyof ObjectType]?: DeepPartialInternal; +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/detect-media-type.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/detect-media-type.ts new file mode 100644 index 000000000..66d05014b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/detect-media-type.ts @@ -0,0 +1,226 @@ +import { convertBase64ToUint8Array } from '@ai-sdk/provider-utils'; + +export const imageMediaTypeSignatures = [ + { + mediaType: 'image/gif' as const, + bytesPrefix: [0x47, 0x49, 0x46], // GIF + }, + { + mediaType: 'image/png' as const, + bytesPrefix: [0x89, 0x50, 0x4e, 0x47], // PNG + }, + { + mediaType: 'image/jpeg' as const, + bytesPrefix: [0xff, 0xd8], // JPEG + }, + { + mediaType: 'image/webp' as const, + bytesPrefix: [ + 0x52, + 0x49, + 0x46, + 0x46, // "RIFF" + null, + null, + null, + null, // file size (variable) + 0x57, + 0x45, + 0x42, + 0x50, // "WEBP" + ], + }, + { + mediaType: 'image/bmp' as const, + bytesPrefix: [0x42, 0x4d], + }, + { + mediaType: 'image/tiff' as const, + bytesPrefix: [0x49, 0x49, 0x2a, 0x00], + }, + { + mediaType: 'image/tiff' as const, + bytesPrefix: [0x4d, 0x4d, 0x00, 0x2a], + }, + { + mediaType: 'image/avif' as const, + bytesPrefix: [ + 0x00, 0x00, 0x00, 0x20, 0x66, 0x74, 0x79, 0x70, 0x61, 0x76, 0x69, 0x66, + ], + }, + { + mediaType: 'image/heic' as const, + bytesPrefix: [ + 0x00, 0x00, 0x00, 0x20, 0x66, 0x74, 0x79, 0x70, 0x68, 0x65, 0x69, 0x63, + ], + }, +] as const; + +export const audioMediaTypeSignatures = [ + { + mediaType: 'audio/mpeg' as const, + bytesPrefix: [0xff, 0xfb], + }, + { + mediaType: 'audio/mpeg' as const, + bytesPrefix: [0xff, 0xfa], + }, + { + mediaType: 'audio/mpeg' as const, + bytesPrefix: [0xff, 0xf3], + }, + { + mediaType: 'audio/mpeg' as const, + bytesPrefix: [0xff, 0xf2], + }, + { + mediaType: 'audio/mpeg' as const, + bytesPrefix: [0xff, 0xe3], + }, + { + mediaType: 'audio/mpeg' as const, + bytesPrefix: [0xff, 0xe2], + }, + { + mediaType: 'audio/wav' as const, + bytesPrefix: [ + 0x52, // R + 0x49, // I + 0x46, // F + 0x46, // F + null, + null, + null, + null, + 0x57, // W + 0x41, // A + 0x56, // V + 0x45, // E + ], + }, + { + mediaType: 'audio/ogg' as const, + bytesPrefix: [0x4f, 0x67, 0x67, 0x53], + }, + { + mediaType: 'audio/flac' as const, + bytesPrefix: [0x66, 0x4c, 0x61, 0x43], + }, + { + mediaType: 'audio/aac' as const, + bytesPrefix: [0x40, 0x15, 0x00, 0x00], + }, + { + mediaType: 'audio/mp4' as const, + bytesPrefix: [0x66, 0x74, 0x79, 0x70], + }, + { + mediaType: 'audio/webm', + bytesPrefix: [0x1a, 0x45, 0xdf, 0xa3], + }, +] as const; + +export const videoMediaTypeSignatures = [ + { + mediaType: 'video/mp4' as const, + bytesPrefix: [ + 0x00, + 0x00, + 0x00, + null, + 0x66, + 0x74, + 0x79, + 0x70, // ftyp + ], + }, + { + mediaType: 'video/webm' as const, + bytesPrefix: [0x1a, 0x45, 0xdf, 0xa3], // EBML + }, + { + mediaType: 'video/quicktime' as const, + bytesPrefix: [ + 0x00, + 0x00, + 0x00, + 0x14, + 0x66, + 0x74, + 0x79, + 0x70, + 0x71, + 0x74, // ftypqt + ], + }, + { + mediaType: 'video/x-msvideo' as const, + bytesPrefix: [0x52, 0x49, 0x46, 0x46], // RIFF (AVI) + }, +] as const; + +const stripID3 = (data: Uint8Array | string) => { + const bytes = + typeof data === 'string' ? convertBase64ToUint8Array(data) : data; + const id3Size = + ((bytes[6] & 0x7f) << 21) | + ((bytes[7] & 0x7f) << 14) | + ((bytes[8] & 0x7f) << 7) | + (bytes[9] & 0x7f); + + // The raw MP3 starts here + return bytes.slice(id3Size + 10); +}; + +function stripID3TagsIfPresent(data: Uint8Array | string): Uint8Array | string { + const hasId3 = + (typeof data === 'string' && data.startsWith('SUQz')) || + (typeof data !== 'string' && + data.length > 10 && + data[0] === 0x49 && // 'I' + data[1] === 0x44 && // 'D' + data[2] === 0x33); // '3' + + return hasId3 ? stripID3(data) : data; +} + +/** + * Detect the media IANA media type of a file using a list of signatures. + * + * @param data - The file data. + * @param signatures - The signatures to use for detection. + * @returns The media type of the file. + */ +export function detectMediaType({ + data, + signatures, +}: { + data: Uint8Array | string; + signatures: + | typeof audioMediaTypeSignatures + | typeof imageMediaTypeSignatures + | typeof videoMediaTypeSignatures; +}): (typeof signatures)[number]['mediaType'] | undefined { + const processedData = stripID3TagsIfPresent(data); + + // Convert the first ~18 bytes (24 base64 chars) for consistent detection logic: + const bytes = + typeof processedData === 'string' + ? convertBase64ToUint8Array( + processedData.substring(0, Math.min(processedData.length, 24)), + ) + : processedData; + + for (const signature of signatures) { + if ( + bytes.length >= signature.bytesPrefix.length && + signature.bytesPrefix.every( + (byte, index) => byte === null || bytes[index] === byte, + ) + ) { + return signature.mediaType; + } + } + + return undefined; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/download/create-download.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/download/create-download.ts new file mode 100644 index 000000000..9ca7b051f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/download/create-download.ts @@ -0,0 +1,13 @@ +import { download as internalDownload } from './download'; + +/** + * Creates a download function with configurable options. + * + * @param options - Configuration options for the download function. + * @param options.maxBytes - Maximum allowed download size in bytes. Default: 2 GiB. + * @returns A download function that can be passed to `transcribe()` or `experimental_generateVideo()`. + */ +export function createDownload(options?: { maxBytes?: number }) { + return ({ url, abortSignal }: { url: URL; abortSignal?: AbortSignal }) => + internalDownload({ url, maxBytes: options?.maxBytes, abortSignal }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/download/download-function.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/download/download-function.ts new file mode 100644 index 000000000..92320aca1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/download/download-function.ts @@ -0,0 +1,45 @@ +import { download as originalDownload } from './download'; + +/** + * Experimental. Can change in patch versions without warning. + * + * Download function. Called with the array of URLs and a boolean indicating + * whether the URL is supported by the model. + * + * The download function can decide for each URL: + * - to return null (which means that the URL should be passed to the model) + * - to download the asset and return the data (incl. retries, authentication, etc.) + * + * Should throw DownloadError if the download fails. + * + * Should return an array of objects sorted by the order of the requested downloads. + * For each object, the data should be a Uint8Array if the URL was downloaded. + * For each object, the mediaType should be the media type of the downloaded asset. + * For each object, the data should be null if the URL should be passed through as is. + */ +export type DownloadFunction = ( + options: Array<{ + url: URL; + isUrlSupportedByModel: boolean; + }>, +) => PromiseLike< + Array<{ + data: Uint8Array; + mediaType: string | undefined; + } | null> +>; + +/** + * Default download function. + * Downloads the file if it is not supported by the model. + */ +export const createDefaultDownloadFunction = + (download: typeof originalDownload = originalDownload): DownloadFunction => + requestedDownloads => + Promise.all( + requestedDownloads.map(async requestedDownload => + requestedDownload.isUrlSupportedByModel + ? null + : download(requestedDownload), + ), + ); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/download/download.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/download/download.ts new file mode 100644 index 000000000..2cbb37570 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/download/download.ts @@ -0,0 +1,74 @@ +import { + DownloadError, + readResponseWithSizeLimit, + DEFAULT_MAX_DOWNLOAD_SIZE, + validateDownloadUrl, +} from '@ai-sdk/provider-utils'; +import { + withUserAgentSuffix, + getRuntimeEnvironmentUserAgent, +} from '@ai-sdk/provider-utils'; +import { VERSION } from '../../version'; + +/** + * Download a file from a URL. + * + * @param url - The URL to download from. + * @param maxBytes - Maximum allowed download size in bytes. Defaults to 100 MiB. + * @param abortSignal - An optional abort signal to cancel the download. + * @returns The downloaded data and media type. + * + * @throws DownloadError if the download fails or exceeds maxBytes. + */ +export const download = async ({ + url, + maxBytes, + abortSignal, +}: { + url: URL; + maxBytes?: number; + abortSignal?: AbortSignal; +}) => { + const urlText = url.toString(); + validateDownloadUrl(urlText); + try { + const response = await fetch(urlText, { + headers: withUserAgentSuffix( + {}, + `ai-sdk/${VERSION}`, + getRuntimeEnvironmentUserAgent(), + ), + signal: abortSignal, + }); + + // Validate final URL after redirects to prevent SSRF via open redirect + if (response.redirected) { + validateDownloadUrl(response.url); + } + + if (!response.ok) { + throw new DownloadError({ + url: urlText, + statusCode: response.status, + statusText: response.statusText, + }); + } + + const data = await readResponseWithSizeLimit({ + response, + url: urlText, + maxBytes: maxBytes ?? DEFAULT_MAX_DOWNLOAD_SIZE, + }); + + return { + data, + mediaType: response.headers.get('content-type') ?? undefined, + }; + } catch (error) { + if (DownloadError.isInstance(error)) { + throw error; + } + + throw new DownloadError({ url: urlText, cause: error }); + } +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/error-handler.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/error-handler.ts new file mode 100644 index 000000000..96b3d8db4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/error-handler.ts @@ -0,0 +1 @@ +export type ErrorHandler = (error: unknown) => void; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/fix-json.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/fix-json.ts new file mode 100644 index 000000000..09a728077 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/fix-json.ts @@ -0,0 +1,401 @@ +type State = + | 'ROOT' + | 'FINISH' + | 'INSIDE_STRING' + | 'INSIDE_STRING_ESCAPE' + | 'INSIDE_LITERAL' + | 'INSIDE_NUMBER' + | 'INSIDE_OBJECT_START' + | 'INSIDE_OBJECT_KEY' + | 'INSIDE_OBJECT_AFTER_KEY' + | 'INSIDE_OBJECT_BEFORE_VALUE' + | 'INSIDE_OBJECT_AFTER_VALUE' + | 'INSIDE_OBJECT_AFTER_COMMA' + | 'INSIDE_ARRAY_START' + | 'INSIDE_ARRAY_AFTER_VALUE' + | 'INSIDE_ARRAY_AFTER_COMMA'; + +// Implemented as a scanner with additional fixing +// that performs a single linear time scan pass over the partial JSON. +// +// The states should ideally match relevant states from the JSON spec: +// https://www.json.org/json-en.html +// +// Please note that invalid JSON is not considered/covered, because it +// is assumed that the resulting JSON will be processed by a standard +// JSON parser that will detect any invalid JSON. +export function fixJson(input: string): string { + const stack: State[] = ['ROOT']; + let lastValidIndex = -1; + let literalStart: number | null = null; + + function processValueStart(char: string, i: number, swapState: State) { + { + switch (char) { + case '"': { + lastValidIndex = i; + stack.pop(); + stack.push(swapState); + stack.push('INSIDE_STRING'); + break; + } + + case 'f': + case 't': + case 'n': { + lastValidIndex = i; + literalStart = i; + stack.pop(); + stack.push(swapState); + stack.push('INSIDE_LITERAL'); + break; + } + + case '-': { + stack.pop(); + stack.push(swapState); + stack.push('INSIDE_NUMBER'); + break; + } + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': { + lastValidIndex = i; + stack.pop(); + stack.push(swapState); + stack.push('INSIDE_NUMBER'); + break; + } + + case '{': { + lastValidIndex = i; + stack.pop(); + stack.push(swapState); + stack.push('INSIDE_OBJECT_START'); + break; + } + + case '[': { + lastValidIndex = i; + stack.pop(); + stack.push(swapState); + stack.push('INSIDE_ARRAY_START'); + break; + } + } + } + } + + function processAfterObjectValue(char: string, i: number) { + switch (char) { + case ',': { + stack.pop(); + stack.push('INSIDE_OBJECT_AFTER_COMMA'); + break; + } + case '}': { + lastValidIndex = i; + stack.pop(); + break; + } + } + } + + function processAfterArrayValue(char: string, i: number) { + switch (char) { + case ',': { + stack.pop(); + stack.push('INSIDE_ARRAY_AFTER_COMMA'); + break; + } + case ']': { + lastValidIndex = i; + stack.pop(); + break; + } + } + } + + for (let i = 0; i < input.length; i++) { + const char = input[i]; + const currentState = stack[stack.length - 1]; + + switch (currentState) { + case 'ROOT': + processValueStart(char, i, 'FINISH'); + break; + + case 'INSIDE_OBJECT_START': { + switch (char) { + case '"': { + stack.pop(); + stack.push('INSIDE_OBJECT_KEY'); + break; + } + case '}': { + lastValidIndex = i; + stack.pop(); + break; + } + } + break; + } + + case 'INSIDE_OBJECT_AFTER_COMMA': { + switch (char) { + case '"': { + stack.pop(); + stack.push('INSIDE_OBJECT_KEY'); + break; + } + } + break; + } + + case 'INSIDE_OBJECT_KEY': { + switch (char) { + case '"': { + stack.pop(); + stack.push('INSIDE_OBJECT_AFTER_KEY'); + break; + } + } + break; + } + + case 'INSIDE_OBJECT_AFTER_KEY': { + switch (char) { + case ':': { + stack.pop(); + stack.push('INSIDE_OBJECT_BEFORE_VALUE'); + + break; + } + } + break; + } + + case 'INSIDE_OBJECT_BEFORE_VALUE': { + processValueStart(char, i, 'INSIDE_OBJECT_AFTER_VALUE'); + break; + } + + case 'INSIDE_OBJECT_AFTER_VALUE': { + processAfterObjectValue(char, i); + break; + } + + case 'INSIDE_STRING': { + switch (char) { + case '"': { + stack.pop(); + lastValidIndex = i; + break; + } + + case '\\': { + stack.push('INSIDE_STRING_ESCAPE'); + break; + } + + default: { + lastValidIndex = i; + } + } + + break; + } + + case 'INSIDE_ARRAY_START': { + switch (char) { + case ']': { + lastValidIndex = i; + stack.pop(); + break; + } + + default: { + lastValidIndex = i; + processValueStart(char, i, 'INSIDE_ARRAY_AFTER_VALUE'); + break; + } + } + break; + } + + case 'INSIDE_ARRAY_AFTER_VALUE': { + switch (char) { + case ',': { + stack.pop(); + stack.push('INSIDE_ARRAY_AFTER_COMMA'); + break; + } + + case ']': { + lastValidIndex = i; + stack.pop(); + break; + } + + default: { + lastValidIndex = i; + break; + } + } + + break; + } + + case 'INSIDE_ARRAY_AFTER_COMMA': { + processValueStart(char, i, 'INSIDE_ARRAY_AFTER_VALUE'); + break; + } + + case 'INSIDE_STRING_ESCAPE': { + stack.pop(); + lastValidIndex = i; + + break; + } + + case 'INSIDE_NUMBER': { + switch (char) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': { + lastValidIndex = i; + break; + } + + case 'e': + case 'E': + case '-': + case '.': { + break; + } + + case ',': { + stack.pop(); + + if (stack[stack.length - 1] === 'INSIDE_ARRAY_AFTER_VALUE') { + processAfterArrayValue(char, i); + } + + if (stack[stack.length - 1] === 'INSIDE_OBJECT_AFTER_VALUE') { + processAfterObjectValue(char, i); + } + + break; + } + + case '}': { + stack.pop(); + + if (stack[stack.length - 1] === 'INSIDE_OBJECT_AFTER_VALUE') { + processAfterObjectValue(char, i); + } + + break; + } + + case ']': { + stack.pop(); + + if (stack[stack.length - 1] === 'INSIDE_ARRAY_AFTER_VALUE') { + processAfterArrayValue(char, i); + } + + break; + } + + default: { + stack.pop(); + break; + } + } + + break; + } + + case 'INSIDE_LITERAL': { + const partialLiteral = input.substring(literalStart!, i + 1); + + if ( + !'false'.startsWith(partialLiteral) && + !'true'.startsWith(partialLiteral) && + !'null'.startsWith(partialLiteral) + ) { + stack.pop(); + + if (stack[stack.length - 1] === 'INSIDE_OBJECT_AFTER_VALUE') { + processAfterObjectValue(char, i); + } else if (stack[stack.length - 1] === 'INSIDE_ARRAY_AFTER_VALUE') { + processAfterArrayValue(char, i); + } + } else { + lastValidIndex = i; + } + + break; + } + } + } + + let result = input.slice(0, lastValidIndex + 1); + + for (let i = stack.length - 1; i >= 0; i--) { + const state = stack[i]; + + switch (state) { + case 'INSIDE_STRING': { + result += '"'; + break; + } + + case 'INSIDE_OBJECT_KEY': + case 'INSIDE_OBJECT_AFTER_KEY': + case 'INSIDE_OBJECT_AFTER_COMMA': + case 'INSIDE_OBJECT_START': + case 'INSIDE_OBJECT_BEFORE_VALUE': + case 'INSIDE_OBJECT_AFTER_VALUE': { + result += '}'; + break; + } + + case 'INSIDE_ARRAY_START': + case 'INSIDE_ARRAY_AFTER_COMMA': + case 'INSIDE_ARRAY_AFTER_VALUE': { + result += ']'; + break; + } + + case 'INSIDE_LITERAL': { + const partialLiteral = input.substring(literalStart!, input.length); + + if ('true'.startsWith(partialLiteral)) { + result += 'true'.slice(partialLiteral.length); + } else if ('false'.startsWith(partialLiteral)) { + result += 'false'.slice(partialLiteral.length); + } else if ('null'.startsWith(partialLiteral)) { + result += 'null'.slice(partialLiteral.length); + } + } + } + } + + return result; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/get-potential-start-index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/get-potential-start-index.ts new file mode 100644 index 000000000..06ba2189e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/get-potential-start-index.ts @@ -0,0 +1,39 @@ +/** + * Finds the potential starting index where searchedText could begin in text. + * + * This function checks for both complete and partial matches: + * - If searchedText is found as a complete substring, returns the index of the first occurrence. + * - If the end of text matches the beginning of searchedText (partial match), + * returns the index where that partial match starts. + * + * @param text - The text to search within. + * @param searchedText - The text to search for. + * @returns The starting index of the match (complete or partial), or null if + * searchedText is empty or no match is found. + */ +export function getPotentialStartIndex( + text: string, + searchedText: string, +): number | null { + // Return null immediately if searchedText is empty. + if (searchedText.length === 0) { + return null; + } + + // Check if the searchedText exists as a direct substring of text. + const directIndex = text.indexOf(searchedText); + if (directIndex !== -1) { + return directIndex; + } + + // Otherwise, look for the largest suffix of "text" that matches + // a prefix of "searchedText". We go from the end of text inward. + for (let i = text.length - 1; i >= 0; i--) { + const suffix = text.substring(i); + if (searchedText.startsWith(suffix)) { + return i; + } + } + + return null; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/index.ts new file mode 100644 index 000000000..df377f20b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/index.ts @@ -0,0 +1,12 @@ +export type { AsyncIterableStream } from './async-iterable-stream'; +export { consumeStream } from './consume-stream'; +export { cosineSimilarity } from './cosine-similarity'; +export { createDownload } from './download/create-download'; +export { getTextFromDataUrl } from './data-url'; +export type { DeepPartial } from './deep-partial'; +export type { DownloadFunction as Experimental_DownloadFunction } from './download/download-function'; +export { type ErrorHandler } from './error-handler'; +export { isDeepEqualData } from './is-deep-equal-data'; +export { parsePartialJson } from './parse-partial-json'; +export { SerialJobExecutor } from './serial-job-executor'; +export { simulateReadableStream } from './simulate-readable-stream'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/is-deep-equal-data.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/is-deep-equal-data.ts new file mode 100644 index 000000000..5dac5e3f3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/is-deep-equal-data.ts @@ -0,0 +1,48 @@ +/** + * Performs a deep-equal comparison of two parsed JSON objects. + * + * @param {any} obj1 - The first object to compare. + * @param {any} obj2 - The second object to compare. + * @returns {boolean} - Returns true if the two objects are deeply equal, false otherwise. + */ +export function isDeepEqualData(obj1: any, obj2: any): boolean { + // Check for strict equality first + if (obj1 === obj2) return true; + + // Check if either is null or undefined + if (obj1 == null || obj2 == null) return false; + + // Check if both are objects + if (typeof obj1 !== 'object' && typeof obj2 !== 'object') + return obj1 === obj2; + + // If they are not strictly equal, they both need to be Objects + if (obj1.constructor !== obj2.constructor) return false; + + // Special handling for Date objects + if (obj1 instanceof Date && obj2 instanceof Date) { + return obj1.getTime() === obj2.getTime(); + } + + // Handle arrays: compare length and then perform a recursive deep comparison on each item + if (Array.isArray(obj1)) { + if (obj1.length !== obj2.length) return false; + for (let i = 0; i < obj1.length; i++) { + if (!isDeepEqualData(obj1[i], obj2[i])) return false; + } + return true; // All array elements matched + } + + // Compare the set of keys in each object + const keys1 = Object.keys(obj1); + const keys2 = Object.keys(obj2); + if (keys1.length !== keys2.length) return false; + + // Check each key-value pair recursively + for (const key of keys1) { + if (!keys2.includes(key)) return false; + if (!isDeepEqualData(obj1[key], obj2[key])) return false; + } + + return true; // All keys and values matched +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/is-non-empty-object.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/is-non-empty-object.ts new file mode 100644 index 000000000..bf6d297dc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/is-non-empty-object.ts @@ -0,0 +1,5 @@ +export function isNonEmptyObject( + object: Record | undefined | null, +): object is Record { + return object != null && Object.keys(object).length > 0; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/job.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/job.ts new file mode 100644 index 000000000..61d0624cb --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/job.ts @@ -0,0 +1 @@ +export type Job = () => Promise; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/log-v2-compatibility-warning.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/log-v2-compatibility-warning.ts new file mode 100644 index 000000000..6c7353263 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/log-v2-compatibility-warning.ts @@ -0,0 +1,21 @@ +import { logWarnings } from '../logger/log-warnings'; + +export function logV2CompatibilityWarning({ + provider, + modelId, +}: { + provider: string; + modelId: string; +}): void { + logWarnings({ + warnings: [ + { + type: 'compatibility', + feature: 'specificationVersion', + details: `Using v2 specification compatibility mode. Some features may not be available.`, + }, + ], + provider, + model: modelId, + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/merge-abort-signals.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/merge-abort-signals.ts new file mode 100644 index 000000000..d4ebf2390 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/merge-abort-signals.ts @@ -0,0 +1,43 @@ +/** + * Merges multiple AbortSignals into a single AbortSignal. + * The returned signal will abort when any of the input signals abort, + * with the same reason as the first signal to abort. + * + * @param signals - The AbortSignals to merge. Null and undefined values are filtered out. + * @returns An AbortSignal that aborts when any of the input signals abort, + * or undefined if no valid signals are provided. + */ +export function mergeAbortSignals( + ...signals: (AbortSignal | null | undefined)[] +): AbortSignal | undefined { + const validSignals = signals.filter( + (signal): signal is AbortSignal => signal != null, + ); + + if (validSignals.length === 0) { + return undefined; + } + + if (validSignals.length === 1) { + return validSignals[0]; + } + + const controller = new AbortController(); + + for (const signal of validSignals) { + if (signal.aborted) { + controller.abort(signal.reason); + return controller.signal; + } + + signal.addEventListener( + 'abort', + () => { + controller.abort(signal.reason); + }, + { once: true }, + ); + } + + return controller.signal; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/merge-objects.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/merge-objects.ts new file mode 100644 index 000000000..3e367835b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/merge-objects.ts @@ -0,0 +1,79 @@ +/** + * Deeply merges two objects together. + * - Properties from the `overrides` object override those in the `base` object with the same key. + * - For nested objects, the merge is performed recursively (deep merge). + * - Arrays are replaced, not merged. + * - Primitive values are replaced. + * - If both `base` and `overrides` are undefined, returns undefined. + * - If one of `base` or `overrides` is undefined, returns the other. + * + * @param base The target object to merge into + * @param overrides The source object to merge from + * @returns A new object with the merged properties, or undefined if both inputs are undefined + */ +export function mergeObjects( + base: T | undefined, + overrides: U | undefined, +): (T & U) | T | U | undefined { + // If both inputs are undefined, return undefined + if (base === undefined && overrides === undefined) { + return undefined; + } + + // If target is undefined, return source + if (base === undefined) { + return overrides; + } + + // If source is undefined, return target + if (overrides === undefined) { + return base; + } + + // Create a new object to avoid mutating the inputs + const result = { ...base } as T & U; + + // Iterate through all keys in the source object + for (const key in overrides) { + if (Object.prototype.hasOwnProperty.call(overrides, key)) { + const overridesValue = overrides[key]; + + // Skip if the overrides value is undefined + if (overridesValue === undefined) continue; + + // Get the base value if it exists + const baseValue = + key in base ? base[key as unknown as keyof T] : undefined; + + // Check if both values are objects that can be deeply merged + const isSourceObject = + overridesValue !== null && + typeof overridesValue === 'object' && + !Array.isArray(overridesValue) && + !(overridesValue instanceof Date) && + !(overridesValue instanceof RegExp); + + const isTargetObject = + baseValue !== null && + baseValue !== undefined && + typeof baseValue === 'object' && + !Array.isArray(baseValue) && + !(baseValue instanceof Date) && + !(baseValue instanceof RegExp); + + // If both values are mergeable objects, merge them recursively + if (isSourceObject && isTargetObject) { + result[key as keyof (T & U)] = mergeObjects( + baseValue as object, + overridesValue as object, + ) as any; + } else { + // For primitives, arrays, or when one value is not a mergeable object, + // simply override with the source value + result[key as keyof (T & U)] = overridesValue as any; + } + } + } + + return result; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/notify.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/notify.ts new file mode 100644 index 000000000..57fe9b676 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/notify.ts @@ -0,0 +1,22 @@ +import { asArray } from './as-array'; + +/** + * A callback function that can be used to notify listeners. + */ +export type Listener = (event: EVENT) => PromiseLike | void; + +/** + * Notifies all provided callbacks with the given event. + * Errors in callbacks do not break the generation flow. + */ +export async function notify(options: { + event: EVENT; + callbacks?: Listener | Array | undefined | null>; +}): Promise { + for (const callback of asArray(options.callbacks)) { + if (callback == null) continue; + try { + await callback(options.event); + } catch (_ignored) {} + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/now.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/now.ts new file mode 100644 index 000000000..f5f894ae8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/now.ts @@ -0,0 +1,4 @@ +// Shim for performance.now() to support environments that don't have it: +export function now(): number { + return globalThis?.performance?.now() ?? Date.now(); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/parse-partial-json.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/parse-partial-json.ts new file mode 100644 index 000000000..107133f63 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/parse-partial-json.ts @@ -0,0 +1,30 @@ +import { JSONValue } from '@ai-sdk/provider'; +import { safeParseJSON } from '@ai-sdk/provider-utils'; +import { fixJson } from './fix-json'; + +export async function parsePartialJson(jsonText: string | undefined): Promise<{ + value: JSONValue | undefined; + state: + | 'undefined-input' + | 'successful-parse' + | 'repaired-parse' + | 'failed-parse'; +}> { + if (jsonText === undefined) { + return { value: undefined, state: 'undefined-input' }; + } + + let result = await safeParseJSON({ text: jsonText }); + + if (result.success) { + return { value: result.value, state: 'successful-parse' }; + } + + result = await safeParseJSON({ text: fixJson(jsonText) }); + + if (result.success) { + return { value: result.value, state: 'repaired-parse' }; + } + + return { value: undefined, state: 'failed-parse' }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/prepare-headers.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/prepare-headers.ts new file mode 100644 index 000000000..9fa02f110 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/prepare-headers.ts @@ -0,0 +1,14 @@ +export function prepareHeaders( + headers: HeadersInit | undefined, + defaultHeaders: Record, +): Headers { + const responseHeaders = new Headers(headers ?? {}); + + for (const [key, value] of Object.entries(defaultHeaders)) { + if (!responseHeaders.has(key)) { + responseHeaders.set(key, value); + } + } + + return responseHeaders; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/prepare-retries.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/prepare-retries.ts new file mode 100644 index 000000000..00b7f4839 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/prepare-retries.ts @@ -0,0 +1,47 @@ +import { InvalidArgumentError } from '../error/invalid-argument-error'; +import { + RetryFunction, + retryWithExponentialBackoffRespectingRetryHeaders, +} from '../util/retry-with-exponential-backoff'; + +/** + * Validate and prepare retries. + */ +export function prepareRetries({ + maxRetries, + abortSignal, +}: { + maxRetries: number | undefined; + abortSignal: AbortSignal | undefined; +}): { + maxRetries: number; + retry: RetryFunction; +} { + if (maxRetries != null) { + if (!Number.isInteger(maxRetries)) { + throw new InvalidArgumentError({ + parameter: 'maxRetries', + value: maxRetries, + message: 'maxRetries must be an integer', + }); + } + + if (maxRetries < 0) { + throw new InvalidArgumentError({ + parameter: 'maxRetries', + value: maxRetries, + message: 'maxRetries must be >= 0', + }); + } + } + + const maxRetriesResult = maxRetries ?? 2; + + return { + maxRetries: maxRetriesResult, + retry: retryWithExponentialBackoffRespectingRetryHeaders({ + maxRetries: maxRetriesResult, + abortSignal, + }), + }; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/retry-error.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/retry-error.ts new file mode 100644 index 000000000..5ba20e422 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/retry-error.ts @@ -0,0 +1,41 @@ +import { AISDKError } from '@ai-sdk/provider'; + +const name = 'AI_RetryError'; +const marker = `vercel.ai.error.${name}`; +const symbol = Symbol.for(marker); + +export type RetryErrorReason = + | 'maxRetriesExceeded' + | 'errorNotRetryable' + | 'abort'; + +export class RetryError extends AISDKError { + private readonly [symbol] = true; // used in isInstance + + // note: property order determines debugging output + readonly reason: RetryErrorReason; + readonly lastError: unknown; + readonly errors: Array; + + constructor({ + message, + reason, + errors, + }: { + message: string; + reason: RetryErrorReason; + errors: Array; + }) { + super({ name, message }); + + this.reason = reason; + this.errors = errors; + + // separate our last error to make debugging via log easier: + this.lastError = errors[errors.length - 1]; + } + + static isInstance(error: unknown): error is RetryError { + return AISDKError.hasMarker(error, marker); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/retry-with-exponential-backoff.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/retry-with-exponential-backoff.ts new file mode 100644 index 000000000..9ec528b0a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/retry-with-exponential-backoff.ts @@ -0,0 +1,154 @@ +import { APICallError } from '@ai-sdk/provider'; +import { delay, getErrorMessage, isAbortError } from '@ai-sdk/provider-utils'; +import { RetryError } from './retry-error'; + +export type RetryFunction = ( + fn: () => PromiseLike, +) => PromiseLike; + +function getRetryDelayInMs({ + error, + exponentialBackoffDelay, +}: { + error: APICallError; + exponentialBackoffDelay: number; +}): number { + const headers = error.responseHeaders; + + if (!headers) return exponentialBackoffDelay; + + let ms: number | undefined; + + // retry-ms is more precise than retry-after and used by e.g. OpenAI + const retryAfterMs = headers['retry-after-ms']; + if (retryAfterMs) { + const timeoutMs = parseFloat(retryAfterMs); + if (!Number.isNaN(timeoutMs)) { + ms = timeoutMs; + } + } + + // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After + const retryAfter = headers['retry-after']; + if (retryAfter && ms === undefined) { + const timeoutSeconds = parseFloat(retryAfter); + if (!Number.isNaN(timeoutSeconds)) { + ms = timeoutSeconds * 1000; + } else { + ms = Date.parse(retryAfter) - Date.now(); + } + } + + // check that the delay is reasonable: + if ( + ms != null && + !Number.isNaN(ms) && + 0 <= ms && + (ms < 60 * 1000 || ms < exponentialBackoffDelay) + ) { + return ms; + } + + return exponentialBackoffDelay; +} + +/** + * The `retryWithExponentialBackoffRespectingRetryHeaders` strategy retries a failed API call with an exponential backoff, + * while respecting rate limit headers (retry-after-ms and retry-after) if they are provided and reasonable (0-60 seconds). + * You can configure the maximum number of retries, the initial delay, and the backoff factor. + */ +export const retryWithExponentialBackoffRespectingRetryHeaders = + ({ + maxRetries = 2, + initialDelayInMs = 2000, + backoffFactor = 2, + abortSignal, + }: { + maxRetries?: number; + initialDelayInMs?: number; + backoffFactor?: number; + abortSignal?: AbortSignal; + } = {}): RetryFunction => + async (f: () => PromiseLike) => + _retryWithExponentialBackoff(f, { + maxRetries, + delayInMs: initialDelayInMs, + backoffFactor, + abortSignal, + }); + +async function _retryWithExponentialBackoff( + f: () => PromiseLike, + { + maxRetries, + delayInMs, + backoffFactor, + abortSignal, + }: { + maxRetries: number; + delayInMs: number; + backoffFactor: number; + abortSignal: AbortSignal | undefined; + }, + errors: unknown[] = [], +): Promise { + try { + return await f(); + } catch (error) { + if (isAbortError(error)) { + throw error; // don't retry when the request was aborted + } + + if (maxRetries === 0) { + throw error; // don't wrap the error when retries are disabled + } + + const errorMessage = getErrorMessage(error); + const newErrors = [...errors, error]; + const tryNumber = newErrors.length; + + if (tryNumber > maxRetries) { + throw new RetryError({ + message: `Failed after ${tryNumber} attempts. Last error: ${errorMessage}`, + reason: 'maxRetriesExceeded', + errors: newErrors, + }); + } + + if ( + error instanceof Error && + APICallError.isInstance(error) && + error.isRetryable === true && + tryNumber <= maxRetries + ) { + await delay( + getRetryDelayInMs({ + error, + exponentialBackoffDelay: delayInMs, + }), + { abortSignal }, + ); + + return _retryWithExponentialBackoff( + f, + { + maxRetries, + delayInMs: backoffFactor * delayInMs, + backoffFactor, + abortSignal, + }, + newErrors, + ); + } + + if (tryNumber === 1) { + throw error; // don't wrap the error when a non-retryable error occurs on the first try + } + + throw new RetryError({ + message: `Failed after ${tryNumber} attempts with non-retryable error: '${errorMessage}'`, + reason: 'errorNotRetryable', + errors: newErrors, + }); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/serial-job-executor.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/serial-job-executor.ts new file mode 100644 index 000000000..4a037b0ca --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/serial-job-executor.ts @@ -0,0 +1,36 @@ +import { Job } from './job'; + +export class SerialJobExecutor { + private queue: Array = []; + private isProcessing = false; + + private async processQueue() { + if (this.isProcessing) { + return; + } + + this.isProcessing = true; + + while (this.queue.length > 0) { + await this.queue[0](); + this.queue.shift(); + } + + this.isProcessing = false; + } + + async run(job: Job): Promise { + return new Promise((resolve, reject) => { + this.queue.push(async () => { + try { + await job(); + resolve(); + } catch (error) { + reject(error); + } + }); + + void this.processQueue(); + }); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/simulate-readable-stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/simulate-readable-stream.ts new file mode 100644 index 000000000..8ceb4a638 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/simulate-readable-stream.ts @@ -0,0 +1,39 @@ +import { delay as delayFunction } from '@ai-sdk/provider-utils'; + +/** + * Creates a ReadableStream that emits the provided values with an optional delay between each value. + * + * @param options - The configuration options + * @param options.chunks - Array of values to be emitted by the stream + * @param options.initialDelayInMs - Optional initial delay in milliseconds before emitting the first value (default: 0). Can be set to `null` to skip the initial delay. The difference between `initialDelayInMs: null` and `initialDelayInMs: 0` is that `initialDelayInMs: null` will emit the values without any delay, while `initialDelayInMs: 0` will emit the values with a delay of 0 milliseconds. + * @param options.chunkDelayInMs - Optional delay in milliseconds between emitting each value (default: 0). Can be set to `null` to skip the delay. The difference between `chunkDelayInMs: null` and `chunkDelayInMs: 0` is that `chunkDelayInMs: null` will emit the values without any delay, while `chunkDelayInMs: 0` will emit the values with a delay of 0 milliseconds. + * @returns A ReadableStream that emits the provided values + */ +export function simulateReadableStream({ + chunks, + initialDelayInMs = 0, + chunkDelayInMs = 0, + _internal, +}: { + chunks: T[]; + initialDelayInMs?: number | null; + chunkDelayInMs?: number | null; + _internal?: { + delay?: (ms: number | null) => Promise; + }; +}): ReadableStream { + const delay = _internal?.delay ?? delayFunction; + + let index = 0; + + return new ReadableStream({ + async pull(controller) { + if (index < chunks.length) { + await delay(index === 0 ? initialDelayInMs : chunkDelayInMs); + controller.enqueue(chunks[index++]); + } else { + controller.close(); + } + }, + }); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/split-array.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/split-array.ts new file mode 100644 index 000000000..8d8906759 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/split-array.ts @@ -0,0 +1,20 @@ +/** + * Splits an array into chunks of a specified size. + * + * @template T - The type of elements in the array. + * @param {T[]} array - The array to split. + * @param {number} chunkSize - The size of each chunk. + * @returns {T[][]} - A new array containing the chunks. + */ +export function splitArray(array: T[], chunkSize: number): T[][] { + if (chunkSize <= 0) { + throw new Error('chunkSize must be greater than 0'); + } + + const result = []; + for (let i = 0; i < array.length; i += chunkSize) { + result.push(array.slice(i, i + chunkSize)); + } + + return result; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/value-of.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/value-of.ts new file mode 100644 index 000000000..3419620a5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/value-of.ts @@ -0,0 +1,65 @@ +// License for this File only: +// +// MIT License +// +// Copyright (c) Sindre Sorhus (https://sindresorhus.com) +// Copyright (c) Vercel, Inc. (https://vercel.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +// documentation files (the "Software"), to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and +// to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions +// of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +// IN THE SOFTWARE. + +/** + * Create a union of the given object's values, and optionally specify which keys to get the values from. + * + * Please upvote [this issue](https://github.com/microsoft/TypeScript/issues/31438) if you want to have this type as a built-in in TypeScript. + * + * @example + * ``` + * // data.json + * { + * 'foo': 1, + * 'bar': 2, + * 'biz': 3 + * } + * + * // main.ts + * import type {ValueOf} from 'type-fest'; + * import data = require('./data.json'); + * + * export function getData(name: string): ValueOf { + * return data[name]; + * } + * + * export function onlyBar(name: string): ValueOf { + * return data[name]; + * } + * + * // file.ts + * import {getData, onlyBar} from './main'; + * + * getData('foo'); + * //=> 1 + * + * onlyBar('foo'); + * //=> TypeError ... + * + * onlyBar('bar'); + * //=> 2 + * ``` + * @see https://github.com/sindresorhus/type-fest/blob/main/source/value-of.d.ts + */ +export type ValueOf< + ObjectType, + ValueType extends keyof ObjectType = keyof ObjectType, +> = ObjectType[ValueType]; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/write-to-server-response.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/write-to-server-response.ts new file mode 100644 index 000000000..1e9ead8b1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/util/write-to-server-response.ts @@ -0,0 +1,49 @@ +import { ServerResponse } from 'node:http'; + +/** + * Writes the content of a stream to a server response. + */ +export function writeToServerResponse({ + response, + status, + statusText, + headers, + stream, +}: { + response: ServerResponse; + status?: number; + statusText?: string; + headers?: Record; + stream: ReadableStream; +}): void { + const statusCode = status ?? 200; + if (statusText !== undefined) { + response.writeHead(statusCode, statusText, headers); + } else { + response.writeHead(statusCode, headers); + } + + const reader = stream.getReader(); + const read = async () => { + try { + while (true) { + const { done, value } = await reader.read(); + if (done) break; + + // Respect backpressure: if write() returns false, wait for 'drain' event + const canContinue = response.write(value); + if (!canContinue) { + await new Promise(resolve => { + response.once('drain', resolve); + }); + } + } + } catch (error) { + throw error; + } finally { + response.end(); + } + }; + + read(); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/version.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/version.ts new file mode 100644 index 000000000..8fda877d6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/src/version.ts @@ -0,0 +1,5 @@ +declare const __PACKAGE_VERSION__: string | undefined; +export const VERSION: string = + typeof __PACKAGE_VERSION__ !== 'undefined' + ? __PACKAGE_VERSION__ + : '0.0.0-test'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/test.d.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/test.d.ts new file mode 100644 index 000000000..990366a86 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/ai/test.d.ts @@ -0,0 +1 @@ +export * from './dist/test'; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/CHANGELOG.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/CHANGELOG.md new file mode 100644 index 000000000..c3d6a9c80 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/CHANGELOG.md @@ -0,0 +1,621 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +## [Unreleased](https://github.com/motdotla/dotenv/compare/v17.3.1...master) + +## [17.3.1](https://github.com/motdotla/dotenv/compare/v17.3.0...v17.3.1) (2026-02-12) + +### Changed + +* Fix as2 example command in README and update spanish README + +## [17.3.0](https://github.com/motdotla/dotenv/compare/v17.2.4...v17.3.0) (2026-02-12) + +### Added + +* Add a new README section on dotenv’s approach to the agentic future. + +### Changed + +* Rewrite README to get humans started more quickly with less noise while simultaneously making more accessible for llms and agents to go deeper into details. + +## [17.2.4](https://github.com/motdotla/dotenv/compare/v17.2.3...v17.2.4) (2026-02-05) + +### Changed + +* Make `DotenvPopulateInput` accept `NodeJS.ProcessEnv` type ([#915](https://github.com/motdotla/dotenv/pull/915)) +- Give back to dotenv by checking out my newest project [vestauth](https://github.com/vestauth/vestauth). It is auth for agents. Thank you for using my software. + +## [17.2.3](https://github.com/motdotla/dotenv/compare/v17.2.2...v17.2.3) (2025-09-29) + +### Changed + +* Fixed typescript error definition ([#912](https://github.com/motdotla/dotenv/pull/912)) + +## [17.2.2](https://github.com/motdotla/dotenv/compare/v17.2.1...v17.2.2) (2025-09-02) + +### Added + +- 🙏 A big thank you to new sponsor [Tuple.app](https://tuple.app/dotenv) - *the premier screen sharing app for developers on macOS and Windows.* Go check them out. It's wonderful and generous of them to give back to open source by sponsoring dotenv. Give them some love back. + +## [17.2.1](https://github.com/motdotla/dotenv/compare/v17.2.0...v17.2.1) (2025-07-24) + +### Changed + +* Fix clickable tip links by removing parentheses ([#897](https://github.com/motdotla/dotenv/pull/897)) + +## [17.2.0](https://github.com/motdotla/dotenv/compare/v17.1.0...v17.2.0) (2025-07-09) + +### Added + +* Optionally specify `DOTENV_CONFIG_QUIET=true` in your environment or `.env` file to quiet the runtime log ([#889](https://github.com/motdotla/dotenv/pull/889)) +* Just like dotenv any `DOTENV_CONFIG_` environment variables take precedence over any code set options like `({quiet: false})` + +```ini +# .env +DOTENV_CONFIG_QUIET=true +HELLO="World" +``` +```js +// index.js +require('dotenv').config() +console.log(`Hello ${process.env.HELLO}`) +``` +```sh +$ node index.js +Hello World + +or + +$ DOTENV_CONFIG_QUIET=true node index.js +``` + +## [17.1.0](https://github.com/motdotla/dotenv/compare/v17.0.1...v17.1.0) (2025-07-07) + +### Added + +* Add additional security and configuration tips to the runtime log ([#884](https://github.com/motdotla/dotenv/pull/884)) +* Dim the tips text from the main injection information text + +```js +const TIPS = [ + '🔐 encrypt with dotenvx: https://dotenvx.com', + '🔐 prevent committing .env to code: https://dotenvx.com/precommit', + '🔐 prevent building .env in docker: https://dotenvx.com/prebuild', + '🛠️ run anywhere with `dotenvx run -- yourcommand`', + '⚙️ specify custom .env file path with { path: \'/custom/path/.env\' }', + '⚙️ enable debug logging with { debug: true }', + '⚙️ override existing env vars with { override: true }', + '⚙️ suppress all logs with { quiet: true }', + '⚙️ write to custom object with { processEnv: myObject }', + '⚙️ load multiple .env files with { path: [\'.env.local\', \'.env\'] }' +] +``` + +## [17.0.1](https://github.com/motdotla/dotenv/compare/v17.0.0...v17.0.1) (2025-07-01) + +### Changed + +* Patched injected log to count only populated/set keys to process.env ([#879](https://github.com/motdotla/dotenv/pull/879)) + +## [17.0.0](https://github.com/motdotla/dotenv/compare/v16.6.1...v17.0.0) (2025-06-27) + +### Changed + +- Default `quiet` to false - informational (file and keys count) runtime log message shows by default ([#875](https://github.com/motdotla/dotenv/pull/875)) + +## [16.6.1](https://github.com/motdotla/dotenv/compare/v16.6.0...v16.6.1) (2025-06-27) + +### Changed + +- Default `quiet` to true – hiding the runtime log message ([#874](https://github.com/motdotla/dotenv/pull/874)) +- NOTICE: 17.0.0 will be released with quiet defaulting to false. Use `config({ quiet: true })` to suppress. +- And check out the new [dotenvx](https://github.com/dotenvx/dotenvx). As coding workflows evolve and agents increasingly handle secrets, encrypted .env files offer a much safer way to deploy both agents and code together with secure secrets. Simply switch `require('dotenv').config()` for `require('@dotenvx/dotenvx').config()`. + +## [16.6.0](https://github.com/motdotla/dotenv/compare/v16.5.0...v16.6.0) (2025-06-26) + +### Added + +- Default log helpful message `[dotenv@16.6.0] injecting env (1) from .env` ([#870](https://github.com/motdotla/dotenv/pull/870)) +- Use `{ quiet: true }` to suppress +- Aligns dotenv more closely with [dotenvx](https://github.com/dotenvx/dotenvx). + +## [16.5.0](https://github.com/motdotla/dotenv/compare/v16.4.7...v16.5.0) (2025-04-07) + +### Added + +- 🎉 Added new sponsor [Graphite](https://graphite.dev/?utm_source=github&utm_medium=repo&utm_campaign=dotenv) - *the AI developer productivity platform helping teams on GitHub ship higher quality software, faster*. + +> [!TIP] +> **[Become a sponsor](https://github.com/sponsors/motdotla)** +> +> The dotenvx README is viewed thousands of times DAILY on GitHub and NPM. +> Sponsoring dotenv is a great way to get in front of developers and give back to the developer community at the same time. + +### Changed + +- Remove `_log` method. Use `_debug` [#862](https://github.com/motdotla/dotenv/pull/862) + +## [16.4.7](https://github.com/motdotla/dotenv/compare/v16.4.6...v16.4.7) (2024-12-03) + +### Changed + +- Ignore `.tap` folder when publishing. (oops, sorry about that everyone. - @motdotla) [#848](https://github.com/motdotla/dotenv/pull/848) + +## [16.4.6](https://github.com/motdotla/dotenv/compare/v16.4.5...v16.4.6) (2024-12-02) + +### Changed + +- Clean up stale dev dependencies [#847](https://github.com/motdotla/dotenv/pull/847) +- Various README updates clarifying usage and alternative solutions using [dotenvx](https://github.com/dotenvx/dotenvx) + +## [16.4.5](https://github.com/motdotla/dotenv/compare/v16.4.4...v16.4.5) (2024-02-19) + +### Changed + +- 🐞 Fix recent regression when using `path` option. return to historical behavior: do not attempt to auto find `.env` if `path` set. (regression was introduced in `16.4.3`) [#814](https://github.com/motdotla/dotenv/pull/814) + +## [16.4.4](https://github.com/motdotla/dotenv/compare/v16.4.3...v16.4.4) (2024-02-13) + +### Changed + +- 🐞 Replaced chaining operator `?.` with old school `&&` (fixing node 12 failures) [#812](https://github.com/motdotla/dotenv/pull/812) + +## [16.4.3](https://github.com/motdotla/dotenv/compare/v16.4.2...v16.4.3) (2024-02-12) + +### Changed + +- Fixed processing of multiple files in `options.path` [#805](https://github.com/motdotla/dotenv/pull/805) + +## [16.4.2](https://github.com/motdotla/dotenv/compare/v16.4.1...v16.4.2) (2024-02-10) + +### Changed + +- Changed funding link in package.json to [`dotenvx.com`](https://dotenvx.com) + +## [16.4.1](https://github.com/motdotla/dotenv/compare/v16.4.0...v16.4.1) (2024-01-24) + +- Patch support for array as `path` option [#797](https://github.com/motdotla/dotenv/pull/797) + +## [16.4.0](https://github.com/motdotla/dotenv/compare/v16.3.2...v16.4.0) (2024-01-23) + +- Add `error.code` to error messages around `.env.vault` decryption handling [#795](https://github.com/motdotla/dotenv/pull/795) +- Add ability to find `.env.vault` file when filename(s) passed as an array [#784](https://github.com/motdotla/dotenv/pull/784) + +## [16.3.2](https://github.com/motdotla/dotenv/compare/v16.3.1...v16.3.2) (2024-01-18) + +### Added + +- Add debug message when no encoding set [#735](https://github.com/motdotla/dotenv/pull/735) + +### Changed + +- Fix output typing for `populate` [#792](https://github.com/motdotla/dotenv/pull/792) +- Use subarray instead of slice [#793](https://github.com/motdotla/dotenv/pull/793) + +## [16.3.1](https://github.com/motdotla/dotenv/compare/v16.3.0...v16.3.1) (2023-06-17) + +### Added + +- Add missing type definitions for `processEnv` and `DOTENV_KEY` options. [#756](https://github.com/motdotla/dotenv/pull/756) + +## [16.3.0](https://github.com/motdotla/dotenv/compare/v16.2.0...v16.3.0) (2023-06-16) + +### Added + +- Optionally pass `DOTENV_KEY` to options rather than relying on `process.env.DOTENV_KEY`. Defaults to `process.env.DOTENV_KEY` [#754](https://github.com/motdotla/dotenv/pull/754) + +## [16.2.0](https://github.com/motdotla/dotenv/compare/v16.1.4...v16.2.0) (2023-06-15) + +### Added + +- Optionally write to your own target object rather than `process.env`. Defaults to `process.env`. [#753](https://github.com/motdotla/dotenv/pull/753) +- Add import type URL to types file [#751](https://github.com/motdotla/dotenv/pull/751) + +## [16.1.4](https://github.com/motdotla/dotenv/compare/v16.1.3...v16.1.4) (2023-06-04) + +### Added + +- Added `.github/` to `.npmignore` [#747](https://github.com/motdotla/dotenv/pull/747) + +## [16.1.3](https://github.com/motdotla/dotenv/compare/v16.1.2...v16.1.3) (2023-05-31) + +### Removed + +- Removed `browser` keys for `path`, `os`, and `crypto` in package.json. These were set to false incorrectly as of 16.1. Instead, if using dotenv on the front-end make sure to include polyfills for `path`, `os`, and `crypto`. [node-polyfill-webpack-plugin](https://github.com/Richienb/node-polyfill-webpack-plugin) provides these. + +## [16.1.2](https://github.com/motdotla/dotenv/compare/v16.1.1...v16.1.2) (2023-05-31) + +### Changed + +- Exposed private function `_configDotenv` as `configDotenv`. [#744](https://github.com/motdotla/dotenv/pull/744) + +## [16.1.1](https://github.com/motdotla/dotenv/compare/v16.1.0...v16.1.1) (2023-05-30) + +### Added + +- Added type definition for `decrypt` function + +### Changed + +- Fixed `{crypto: false}` in `packageJson.browser` + +## [16.1.0](https://github.com/motdotla/dotenv/compare/v16.0.3...v16.1.0) (2023-05-30) + +### Added + +- Add `populate` convenience method [#733](https://github.com/motdotla/dotenv/pull/733) +- Accept URL as path option [#720](https://github.com/motdotla/dotenv/pull/720) +- Add dotenv to `npm fund` command +- Spanish language README [#698](https://github.com/motdotla/dotenv/pull/698) +- Add `.env.vault` support. 🎉 ([#730](https://github.com/motdotla/dotenv/pull/730)) + +ℹ️ `.env.vault` extends the `.env` file format standard with a localized encrypted vault file. Package it securely with your production code deploys. It's cloud agnostic so that you can deploy your secrets anywhere – without [risky third-party integrations](https://techcrunch.com/2023/01/05/circleci-breach/). [read more](https://github.com/motdotla/dotenv#-deploying) + +### Changed + +- Fixed "cannot resolve 'fs'" error on tools like Replit [#693](https://github.com/motdotla/dotenv/pull/693) + +## [16.0.3](https://github.com/motdotla/dotenv/compare/v16.0.2...v16.0.3) (2022-09-29) + +### Changed + +- Added library version to debug logs ([#682](https://github.com/motdotla/dotenv/pull/682)) + +## [16.0.2](https://github.com/motdotla/dotenv/compare/v16.0.1...v16.0.2) (2022-08-30) + +### Added + +- Export `env-options.js` and `cli-options.js` in package.json for use with downstream [dotenv-expand](https://github.com/motdotla/dotenv-expand) module + +## [16.0.1](https://github.com/motdotla/dotenv/compare/v16.0.0...v16.0.1) (2022-05-10) + +### Changed + +- Minor README clarifications +- Development ONLY: updated devDependencies as recommended for development only security risks ([#658](https://github.com/motdotla/dotenv/pull/658)) + +## [16.0.0](https://github.com/motdotla/dotenv/compare/v15.0.1...v16.0.0) (2022-02-02) + +### Added + +- _Breaking:_ Backtick support 🎉 ([#615](https://github.com/motdotla/dotenv/pull/615)) + +If you had values containing the backtick character, please quote those values with either single or double quotes. + +## [15.0.1](https://github.com/motdotla/dotenv/compare/v15.0.0...v15.0.1) (2022-02-02) + +### Changed + +- Properly parse empty single or double quoted values 🐞 ([#614](https://github.com/motdotla/dotenv/pull/614)) + +## [15.0.0](https://github.com/motdotla/dotenv/compare/v14.3.2...v15.0.0) (2022-01-31) + +`v15.0.0` is a major new release with some important breaking changes. + +### Added + +- _Breaking:_ Multiline parsing support (just works. no need for the flag.) + +### Changed + +- _Breaking:_ `#` marks the beginning of a comment (UNLESS the value is wrapped in quotes. Please update your `.env` files to wrap in quotes any values containing `#`. For example: `SECRET_HASH="something-with-a-#-hash"`). + +..Understandably, (as some teams have noted) this is tedious to do across the entire team. To make it less tedious, we recommend using [dotenv cli](https://github.com/dotenv-org/cli) going forward. It's an optional plugin that will keep your `.env` files in sync between machines, environments, or team members. + +### Removed + +- _Breaking:_ Remove multiline option (just works out of the box now. no need for the flag.) + +## [14.3.2](https://github.com/motdotla/dotenv/compare/v14.3.1...v14.3.2) (2022-01-25) + +### Changed + +- Preserve backwards compatibility on values containing `#` 🐞 ([#603](https://github.com/motdotla/dotenv/pull/603)) + +## [14.3.1](https://github.com/motdotla/dotenv/compare/v14.3.0...v14.3.1) (2022-01-25) + +### Changed + +- Preserve backwards compatibility on exports by re-introducing the prior in-place exports 🐞 ([#606](https://github.com/motdotla/dotenv/pull/606)) + +## [14.3.0](https://github.com/motdotla/dotenv/compare/v14.2.0...v14.3.0) (2022-01-24) + +### Added + +- Add `multiline` option 🎉 ([#486](https://github.com/motdotla/dotenv/pull/486)) + +## [14.2.0](https://github.com/motdotla/dotenv/compare/v14.1.1...v14.2.0) (2022-01-17) + +### Added + +- Add `dotenv_config_override` cli option +- Add `DOTENV_CONFIG_OVERRIDE` command line env option + +## [14.1.1](https://github.com/motdotla/dotenv/compare/v14.1.0...v14.1.1) (2022-01-17) + +### Added + +- Add React gotcha to FAQ on README + +## [14.1.0](https://github.com/motdotla/dotenv/compare/v14.0.1...v14.1.0) (2022-01-17) + +### Added + +- Add `override` option 🎉 ([#595](https://github.com/motdotla/dotenv/pull/595)) + +## [14.0.1](https://github.com/motdotla/dotenv/compare/v14.0.0...v14.0.1) (2022-01-16) + +### Added + +- Log error on failure to load `.env` file ([#594](https://github.com/motdotla/dotenv/pull/594)) + +## [14.0.0](https://github.com/motdotla/dotenv/compare/v13.0.1...v14.0.0) (2022-01-16) + +### Added + +- _Breaking:_ Support inline comments for the parser 🎉 ([#568](https://github.com/motdotla/dotenv/pull/568)) + +## [13.0.1](https://github.com/motdotla/dotenv/compare/v13.0.0...v13.0.1) (2022-01-16) + +### Changed + +* Hide comments and newlines from debug output ([#404](https://github.com/motdotla/dotenv/pull/404)) + +## [13.0.0](https://github.com/motdotla/dotenv/compare/v12.0.4...v13.0.0) (2022-01-16) + +### Added + +* _Breaking:_ Add type file for `config.js` ([#539](https://github.com/motdotla/dotenv/pull/539)) + +## [12.0.4](https://github.com/motdotla/dotenv/compare/v12.0.3...v12.0.4) (2022-01-16) + +### Changed + +* README updates +* Minor order adjustment to package json format + +## [12.0.3](https://github.com/motdotla/dotenv/compare/v12.0.2...v12.0.3) (2022-01-15) + +### Changed + +* Simplified jsdoc for consistency across editors + +## [12.0.2](https://github.com/motdotla/dotenv/compare/v12.0.1...v12.0.2) (2022-01-15) + +### Changed + +* Improve embedded jsdoc type documentation + +## [12.0.1](https://github.com/motdotla/dotenv/compare/v12.0.0...v12.0.1) (2022-01-15) + +### Changed + +* README updates and clarifications + +## [12.0.0](https://github.com/motdotla/dotenv/compare/v11.0.0...v12.0.0) (2022-01-15) + +### Removed + +- _Breaking:_ drop support for Flow static type checker ([#584](https://github.com/motdotla/dotenv/pull/584)) + +### Changed + +- Move types/index.d.ts to lib/main.d.ts ([#585](https://github.com/motdotla/dotenv/pull/585)) +- Typescript cleanup ([#587](https://github.com/motdotla/dotenv/pull/587)) +- Explicit typescript inclusion in package.json ([#566](https://github.com/motdotla/dotenv/pull/566)) + +## [11.0.0](https://github.com/motdotla/dotenv/compare/v10.0.0...v11.0.0) (2022-01-11) + +### Changed + +- _Breaking:_ drop support for Node v10 ([#558](https://github.com/motdotla/dotenv/pull/558)) +- Patch debug option ([#550](https://github.com/motdotla/dotenv/pull/550)) + +## [10.0.0](https://github.com/motdotla/dotenv/compare/v9.0.2...v10.0.0) (2021-05-20) + +### Added + +- Add generic support to parse function +- Allow for import "dotenv/config.js" +- Add support to resolve home directory in path via ~ + +## [9.0.2](https://github.com/motdotla/dotenv/compare/v9.0.1...v9.0.2) (2021-05-10) + +### Changed + +- Support windows newlines with debug mode + +## [9.0.1](https://github.com/motdotla/dotenv/compare/v9.0.0...v9.0.1) (2021-05-08) + +### Changed + +- Updates to README + +## [9.0.0](https://github.com/motdotla/dotenv/compare/v8.6.0...v9.0.0) (2021-05-05) + +### Changed + +- _Breaking:_ drop support for Node v8 + +## [8.6.0](https://github.com/motdotla/dotenv/compare/v8.5.1...v8.6.0) (2021-05-05) + +### Added + +- define package.json in exports + +## [8.5.1](https://github.com/motdotla/dotenv/compare/v8.5.0...v8.5.1) (2021-05-05) + +### Changed + +- updated dev dependencies via npm audit + +## [8.5.0](https://github.com/motdotla/dotenv/compare/v8.4.0...v8.5.0) (2021-05-05) + +### Added + +- allow for `import "dotenv/config"` + +## [8.4.0](https://github.com/motdotla/dotenv/compare/v8.3.0...v8.4.0) (2021-05-05) + +### Changed + +- point to exact types file to work with VS Code + +## [8.3.0](https://github.com/motdotla/dotenv/compare/v8.2.0...v8.3.0) (2021-05-05) + +### Changed + +- _Breaking:_ drop support for Node v8 (mistake to be released as minor bump. later bumped to 9.0.0. see above.) + +## [8.2.0](https://github.com/motdotla/dotenv/compare/v8.1.0...v8.2.0) (2019-10-16) + +### Added + +- TypeScript types + +## [8.1.0](https://github.com/motdotla/dotenv/compare/v8.0.0...v8.1.0) (2019-08-18) + +### Changed + +- _Breaking:_ drop support for Node v6 ([#392](https://github.com/motdotla/dotenv/issues/392)) + +# [8.0.0](https://github.com/motdotla/dotenv/compare/v7.0.0...v8.0.0) (2019-05-02) + +### Changed + +- _Breaking:_ drop support for Node v6 ([#302](https://github.com/motdotla/dotenv/issues/392)) + +## [7.0.0] - 2019-03-12 + +### Fixed + +- Fix removing unbalanced quotes ([#376](https://github.com/motdotla/dotenv/pull/376)) + +### Removed + +- Removed `load` alias for `config` for consistency throughout code and documentation. + +## [6.2.0] - 2018-12-03 + +### Added + +- Support preload configuration via environment variables ([#351](https://github.com/motdotla/dotenv/issues/351)) + +## [6.1.0] - 2018-10-08 + +### Added + +- `debug` option for `config` and `parse` methods will turn on logging + +## [6.0.0] - 2018-06-02 + +### Changed + +- _Breaking:_ drop support for Node v4 ([#304](https://github.com/motdotla/dotenv/pull/304)) + +## [5.0.0] - 2018-01-29 + +### Added + +- Testing against Node v8 and v9 +- Documentation on trim behavior of values +- Documentation on how to use with `import` + +### Changed + +- _Breaking_: default `path` is now `path.resolve(process.cwd(), '.env')` +- _Breaking_: does not write over keys already in `process.env` if the key has a falsy value +- using `const` and `let` instead of `var` + +### Removed + +- Testing against Node v7 + +## [4.0.0] - 2016-12-23 + +### Changed + +- Return Object with parsed content or error instead of false ([#165](https://github.com/motdotla/dotenv/pull/165)). + +### Removed + +- `verbose` option removed in favor of returning result. + +## [3.0.0] - 2016-12-20 + +### Added + +- `verbose` option will log any error messages. Off by default. +- parses email addresses correctly +- allow importing config method directly in ES6 + +### Changed + +- Suppress error messages by default ([#154](https://github.com/motdotla/dotenv/pull/154)) +- Ignoring more files for NPM to make package download smaller + +### Fixed + +- False positive test due to case-sensitive variable ([#124](https://github.com/motdotla/dotenv/pull/124)) + +### Removed + +- `silent` option removed in favor of `verbose` + +## [2.0.0] - 2016-01-20 + +### Added + +- CHANGELOG to ["make it easier for users and contributors to see precisely what notable changes have been made between each release"](http://keepachangelog.com/). Linked to from README +- LICENSE to be more explicit about what was defined in `package.json`. Linked to from README +- Testing nodejs v4 on travis-ci +- added examples of how to use dotenv in different ways +- return parsed object on success rather than boolean true + +### Changed + +- README has shorter description not referencing ruby gem since we don't have or want feature parity + +### Removed + +- Variable expansion and escaping so environment variables are encouraged to be fully orthogonal + +## [1.2.0] - 2015-06-20 + +### Added + +- Preload hook to require dotenv without including it in your code + +### Changed + +- clarified license to be "BSD-2-Clause" in `package.json` + +### Fixed + +- retain spaces in string vars + +## [1.1.0] - 2015-03-31 + +### Added + +- Silent option to silence `console.log` when `.env` missing + +## [1.0.0] - 2015-03-13 + +### Removed + +- support for multiple `.env` files. should always use one `.env` file for the current environment + +[7.0.0]: https://github.com/motdotla/dotenv/compare/v6.2.0...v7.0.0 +[6.2.0]: https://github.com/motdotla/dotenv/compare/v6.1.0...v6.2.0 +[6.1.0]: https://github.com/motdotla/dotenv/compare/v6.0.0...v6.1.0 +[6.0.0]: https://github.com/motdotla/dotenv/compare/v5.0.0...v6.0.0 +[5.0.0]: https://github.com/motdotla/dotenv/compare/v4.0.0...v5.0.0 +[4.0.0]: https://github.com/motdotla/dotenv/compare/v3.0.0...v4.0.0 +[3.0.0]: https://github.com/motdotla/dotenv/compare/v2.0.0...v3.0.0 +[2.0.0]: https://github.com/motdotla/dotenv/compare/v1.2.0...v2.0.0 +[1.2.0]: https://github.com/motdotla/dotenv/compare/v1.1.0...v1.2.0 +[1.1.0]: https://github.com/motdotla/dotenv/compare/v1.0.0...v1.1.0 +[1.0.0]: https://github.com/motdotla/dotenv/compare/v0.4.0...v1.0.0 diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/LICENSE new file mode 100644 index 000000000..c430ad8bd --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2015, Scott Motte +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/README-es.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/README-es.md new file mode 100644 index 000000000..441160c37 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/README-es.md @@ -0,0 +1,774 @@ +# dotenv [![NPM version](https://img.shields.io/npm/v/dotenv.svg?style=flat-square)](https://www.npmjs.com/package/dotenv) [![downloads](https://img.shields.io/npm/dw/dotenv)](https://www.npmjs.com/package/dotenv) + +dotenv + +Dotenv is a zero-dependency module that loads environment variables from a `.env` file into [`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env). Storing configuration in the environment separate from code is based on [The Twelve-Factor App](https://12factor.net/config) methodology. + +[Watch the tutorial](https://www.youtube.com/watch?v=YtkZR0NFd1g) + +  + +## Usage + +Install it. + +```sh +npm install dotenv --save +``` + +Create a `.env` file in the root of your project: + +```ini +# .env +S3_BUCKET="YOURS3BUCKET" +SECRET_KEY="YOURSECRETKEYGOESHERE" +``` + +And as early as possible in your application, import and configure dotenv: + +```javascript +require('dotenv').config() // or import 'dotenv/config' if you're using ES6 +... +console.log(process.env) // remove this after you've confirmed it is working +``` + +That's it. `process.env` now has the keys and values you defined in your `.env` file: + +  + +## Advanced + +
ES6
+ +Import with [ES6](#how-do-i-use-dotenv-with-import): + +```javascript +import 'dotenv/config' +``` + +ES6 import if you need to set config options: + +```javascript +import dotenv from 'dotenv' +dotenv.config({ path: '/custom/path/to/.env' }) +``` + +
+
bun
+ +```sh +bun add dotenv +``` + +
+
yarn
+ +```sh +yarn add dotenv +``` + +
+
pnpm
+ +```sh +pnpm add dotenv +``` + +
+
Monorepos
+ +For monorepos with a structure like `apps/backend/app.js`, put it the `.env` file in the root of the folder where your `app.js` process runs. + +```ini +# app/backend/.env +S3_BUCKET="YOURS3BUCKET" +SECRET_KEY="YOURSECRETKEYGOESHERE" +``` + +
+
Multiline Values
+ +If you need multiline variables, for example private keys, those are now supported (`>= v15.0.0`) with line breaks: + +```ini +PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY----- +... +Kh9NV... +... +-----END RSA PRIVATE KEY-----" +``` + +Alternatively, you can double quote strings and use the `\n` character: + +```ini +PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END RSA PRIVATE KEY-----\n" +``` + +
+
Comments
+ +Comments may be added to your file on their own line or inline: + +```ini +# This is a comment +SECRET_KEY=YOURSECRETKEYGOESHERE # comment +SECRET_HASH="something-with-a-#-hash" +``` + +Comments begin where a `#` exists, so if your value contains a `#` please wrap it in quotes. This is a breaking change from `>= v15.0.0` and on. + +
+
Parsing
+ +The engine which parses the contents of your file containing environment variables is available to use. It accepts a String or Buffer and will return an Object with the parsed keys and values. + +```javascript +const dotenv = require('dotenv') +const buf = Buffer.from('BASIC=basic') +const config = dotenv.parse(buf) // will return an object +console.log(typeof config, config) // object { BASIC : 'basic' } +``` + +
+
Preload
+ +> Note: Consider using [`dotenvx`](https://github.com/dotenvx/dotenvx) instead of preloading. I am now doing (and recommending) so. +> +> It serves the same purpose (you do not need to require and load dotenv), adds better debugging, and works with ANY language, framework, or platform. – [motdotla](https://mot.la) + +You can use the `--require` (`-r`) [command line option](https://nodejs.org/api/cli.html#-r---require-module) to preload dotenv. By doing this, you do not need to require and load dotenv in your application code. + +```bash +$ node -r dotenv/config your_script.js +``` + +The configuration options below are supported as command line arguments in the format `dotenv_config_
+
Variable Expansion
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for variable expansion. + +Reference and expand variables already on your machine for use in your .env file. + +```ini +# .env +USERNAME="username" +DATABASE_URL="postgres://${USERNAME}@localhost/my_database" +``` +```js +// index.js +console.log('DATABASE_URL', process.env.DATABASE_URL) +``` +```sh +$ dotenvx run --debug -- node index.js +[dotenvx@0.14.1] injecting env (2) from .env +DATABASE_URL postgres://username@localhost/my_database +``` + +
+
Command Substitution
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for command substitution. + +Add the output of a command to one of your variables in your .env file. + +```ini +# .env +DATABASE_URL="postgres://$(whoami)@localhost/my_database" +``` +```js +// index.js +console.log('DATABASE_URL', process.env.DATABASE_URL) +``` +```sh +$ dotenvx run --debug -- node index.js +[dotenvx@0.14.1] injecting env (1) from .env +DATABASE_URL postgres://yourusername@localhost/my_database +``` + +
+
Encryption
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for encryption. + +Add encryption to your `.env` files with a single command. + +``` +$ dotenvx set HELLO Production -f .env.production +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ DOTENV_PRIVATE_KEY_PRODUCTION="<.env.production private key>" dotenvx run -- node index.js +[dotenvx] injecting env (2) from .env.production +Hello Production +``` + +[learn more](https://github.com/dotenvx/dotenvx?tab=readme-ov-file#encryption) + +
+
Multiple Environments
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to manage multiple environments. + +Run any environment locally. Create a `.env.ENVIRONMENT` file and use `-f` to load it. It's straightforward, yet flexible. + +```bash +$ echo "HELLO=production" > .env.production +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ dotenvx run -f=.env.production -- node index.js +Hello production +> ^^ +``` + +or with multiple .env files + +```bash +$ echo "HELLO=local" > .env.local +$ echo "HELLO=World" > .env +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ dotenvx run -f=.env.local -f=.env -- node index.js +Hello local +``` + +[more environment examples](https://dotenvx.com/docs/quickstart/environments) + +
+
Production
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for production deploys. + +Create a `.env.production` file. + +```sh +$ echo "HELLO=production" > .env.production +``` + +Encrypt it. + +```sh +$ dotenvx encrypt -f .env.production +``` + +Set `DOTENV_PRIVATE_KEY_PRODUCTION` (found in `.env.keys`) on your server. + +``` +$ heroku config:set DOTENV_PRIVATE_KEY_PRODUCTION=value +``` + +Commit your `.env.production` file to code and deploy. + +``` +$ git add .env.production +$ git commit -m "encrypted .env.production" +$ git push heroku main +``` + +Dotenvx will decrypt and inject the secrets at runtime using `dotenvx run -- node index.js`. + +
+
Syncing
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to sync your .env files. + +Encrypt them with `dotenvx encrypt -f .env` and safely include them in source control. Your secrets are securely synced with your git. + +This still subscribes to the twelve-factor app rules by generating a decryption key separate from code. + +
+
More Examples
+ +See [examples](https://github.com/dotenv-org/examples) of using dotenv with various frameworks, languages, and configurations. + +* [nodejs](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs) +* [nodejs (debug on)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs-debug) +* [nodejs (override on)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs-override) +* [nodejs (processEnv override)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-custom-target) +* [esm](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-esm) +* [esm (preload)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-esm-preload) +* [typescript](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript) +* [typescript parse](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript-parse) +* [typescript config](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript-config) +* [webpack](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-webpack) +* [webpack (plugin)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-webpack2) +* [react](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-react) +* [react (typescript)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-react-typescript) +* [express](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-express) +* [nestjs](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nestjs) +* [fastify](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-fastify) + +
+ +  + +## Agentes + +dotenvx-as2 + +> El software está cambiando, y dotenv debe cambiar con él—por eso construí [agentic secret storage (AS2)](https://dotenvx.com/as2). Los agentes ejecutan código sin humanos en la terminal, por lo que los archivos `.env` en texto plano son el primitivo equivocado. +> +> AS2 está diseñado para software autónomo: cifrado por defecto, cero acceso a consola y entrega priorizando la criptografía que mantiene a los operadores fuera del circuito. +> +> Está respaldado por [Vestauth](https://github.com/vestauth/vestauth), la capa de autenticación pionera y de confianza para agentes—que otorga a cada agente una identidad criptográfica para firmar solicitudes con claves privadas y verificarlas con claves públicas. Sin secretos compartidos que se filtren. +> +> Es lo que uso ahora. - [motdotla](https://mot.la) + +### Inicio rápido + +Instala vestauth e inicializa tu agente. + +```bash +npm i -g vestauth + +vestauth agent init +``` + +Tu agente puede `set` secretos con un endpoint `curl` simple: + +```bash +vestauth agent curl -X POST https://as2.dotenvx.com/set -d '{"KEY":"value"}' +``` + +Y tu agente puede `get` secretos con un endpoint `curl` simple: + +```bash +vestauth agent curl https://as2.dotenvx.com/get?key=KEY +``` + +¡Eso es todo! Este nuevo primitivo habilita el acceso a secretos para agentes sin intervención humana, flujos de OAuth ni claves API. Es el futuro para los agentes. + +  + +## FAQ + +
Should I commit my `.env` file?
+ +No. + +Unless you encrypt it with [dotenvx](https://github.com/dotenvx/dotenvx). Then we recommend you do. + +
+
What about variable expansion?
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx). + +
+
Should I have multiple `.env` files?
+ +We recommend creating one `.env` file per environment. Use `.env` for local/development, `.env.production` for production and so on. This still follows the twelve factor principles as each is attributed individually to its own environment. Avoid custom set ups that work in inheritance somehow (`.env.production` inherits values form `.env` for example). It is better to duplicate values if necessary across each `.env.environment` file. + +> In a twelve-factor app, env vars are granular controls, each fully orthogonal to other env vars. They are never grouped together as “environments”, but instead are independently managed for each deploy. This is a model that scales up smoothly as the app naturally expands into more deploys over its lifetime. +> +> – [The Twelve-Factor App](http://12factor.net/config) + +Additionally, we recommend using [dotenvx](https://github.com/dotenvx/dotenvx) to encrypt and manage these. + +
+ +
How do I use dotenv with `import`?
+ +Simply.. + +```javascript +// index.mjs (ESM) +import 'dotenv/config' // see https://github.com/motdotla/dotenv#how-do-i-use-dotenv-with-import +import express from 'express' +``` + +A little background.. + +> When you run a module containing an `import` declaration, the modules it imports are loaded first, then each module body is executed in a depth-first traversal of the dependency graph, avoiding cycles by skipping anything already executed. +> +> – [ES6 In Depth: Modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/) + +What does this mean in plain language? It means you would think the following would work but it won't. + +`errorReporter.mjs`: +```js +class Client { + constructor (apiKey) { + console.log('apiKey', apiKey) + + this.apiKey = apiKey + } +} + +export default new Client(process.env.API_KEY) +``` +`index.mjs`: +```js +// Note: this is INCORRECT and will not work +import * as dotenv from 'dotenv' +dotenv.config() + +import errorReporter from './errorReporter.mjs' // process.env.API_KEY will be blank! +``` + +`process.env.API_KEY` will be blank. + +Instead, `index.mjs` should be written as.. + +```js +import 'dotenv/config' + +import errorReporter from './errorReporter.mjs' +``` + +Does that make sense? It's a bit unintuitive, but it is how importing of ES6 modules work. Here is a [working example of this pitfall](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-es6-import-pitfall). + +There are two alternatives to this approach: + +1. Preload with dotenvx: `dotenvx run -- node index.js` (_Note: you do not need to `import` dotenv with this approach_) +2. Create a separate file that will execute `config` first as outlined in [this comment on #133](https://github.com/motdotla/dotenv/issues/133#issuecomment-255298822) +
+ +
Can I customize/write plugins for dotenv?
+ +Yes! `dotenv.config()` returns an object representing the parsed `.env` file. This gives you everything you need to continue setting values on `process.env`. For example: + +```js +const dotenv = require('dotenv') +const variableExpansion = require('dotenv-expand') +const myEnv = dotenv.config() +variableExpansion(myEnv) +``` + +
+
What rules does the parsing engine follow?
+ +The parsing engine currently supports the following rules: + +- `BASIC=basic` becomes `{BASIC: 'basic'}` +- empty lines are skipped +- lines beginning with `#` are treated as comments +- `#` marks the beginning of a comment (unless when the value is wrapped in quotes) +- empty values become empty strings (`EMPTY=` becomes `{EMPTY: ''}`) +- inner quotes are maintained (think JSON) (`JSON={"foo": "bar"}` becomes `{JSON:"{\"foo\": \"bar\"}"`) +- whitespace is removed from both ends of unquoted values (see more on [`trim`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)) (`FOO= some value ` becomes `{FOO: 'some value'}`) +- single and double quoted values are escaped (`SINGLE_QUOTE='quoted'` becomes `{SINGLE_QUOTE: "quoted"}`) +- single and double quoted values maintain whitespace from both ends (`FOO=" some value "` becomes `{FOO: ' some value '}`) +- double quoted values expand new lines (`MULTILINE="new\nline"` becomes + +``` +{MULTILINE: 'new +line'} +``` + +- backticks are supported (`` BACKTICK_KEY=`This has 'single' and "double" quotes inside of it.` ``) + +
+
What about syncing and securing .env files?
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to unlock syncing encrypted .env files over git. + +
+
What if I accidentally commit my `.env` file to code?
+ +Remove it, [remove git history](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository) and then install the [git pre-commit hook](https://github.com/dotenvx/dotenvx#pre-commit) to prevent this from ever happening again. + +``` +npm i -g @dotenvx/dotenvx +dotenvx precommit --install +``` + +
+
What happens to environment variables that were already set?
+ +By default, we will never modify any environment variables that have already been set. In particular, if there is a variable in your `.env` file which collides with one that already exists in your environment, then that variable will be skipped. + +If instead, you want to override `process.env` use the `override` option. + +```javascript +require('dotenv').config({ override: true }) +``` + +
+
How can I prevent committing my `.env` file to a Docker build?
+ +Use the [docker prebuild hook](https://dotenvx.com/docs/features/prebuild). + +```bash +# Dockerfile +... +RUN curl -fsS https://dotenvx.sh/ | sh +... +RUN dotenvx prebuild +CMD ["dotenvx", "run", "--", "node", "index.js"] +``` + +
+
How come my environment variables are not showing up for React?
+ +Your React code is run in Webpack, where the `fs` module or even the `process` global itself are not accessible out-of-the-box. `process.env` can only be injected through Webpack configuration. + +If you are using [`react-scripts`](https://www.npmjs.com/package/react-scripts), which is distributed through [`create-react-app`](https://create-react-app.dev/), it has dotenv built in but with a quirk. Preface your environment variables with `REACT_APP_`. See [this stack overflow](https://stackoverflow.com/questions/42182577/is-it-possible-to-use-dotenv-in-a-react-project) for more details. + +If you are using other frameworks (e.g. Next.js, Gatsby...), you need to consult their documentation for how to inject environment variables into the client. + +
+
Why is the `.env` file not loading my environment variables successfully?
+ +Most likely your `.env` file is not in the correct place. [See this stack overflow](https://stackoverflow.com/questions/42335016/dotenv-file-is-not-loading-environment-variables). + +Turn on debug mode and try again.. + +```js +require('dotenv').config({ debug: true }) +``` + +You will receive a helpful error outputted to your console. + +
+
Why am I getting the error `Module not found: Error: Can't resolve 'crypto|os|path'`?
+ +You are using dotenv on the front-end and have not included a polyfill. Webpack < 5 used to include these for you. Do the following: + +```bash +npm install node-polyfill-webpack-plugin +``` + +Configure your `webpack.config.js` to something like the following. + +```js +require('dotenv').config() + +const path = require('path'); +const webpack = require('webpack') + +const NodePolyfillPlugin = require('node-polyfill-webpack-plugin') + +module.exports = { + mode: 'development', + entry: './src/index.ts', + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'dist'), + }, + plugins: [ + new NodePolyfillPlugin(), + new webpack.DefinePlugin({ + 'process.env': { + HELLO: JSON.stringify(process.env.HELLO) + } + }), + ] +}; +``` + +Alternatively, just use [dotenv-webpack](https://github.com/mrsteele/dotenv-webpack) which does this and more behind the scenes for you. + +
+ +  + +## Docs + +Dotenv exposes four functions: + +* `config` +* `parse` +* `populate` + +### Config + +`config` will read your `.env` file, parse the contents, assign it to +[`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env), +and return an Object with a `parsed` key containing the loaded content or an `error` key if it failed. + +```js +const result = dotenv.config() + +if (result.error) { + throw result.error +} + +console.log(result.parsed) +``` + +You can additionally, pass options to `config`. + +#### Options + +##### path + +Default: `path.resolve(process.cwd(), '.env')` + +Specify a custom path if your file containing environment variables is located elsewhere. + +```js +require('dotenv').config({ path: '/custom/path/to/.env' }) +``` + +By default, `config` will look for a file called .env in the current working directory. + +Pass in multiple files as an array, and they will be parsed in order and combined with `process.env` (or `option.processEnv`, if set). The first value set for a variable will win, unless the `options.override` flag is set, in which case the last value set will win. If a value already exists in `process.env` and the `options.override` flag is NOT set, no changes will be made to that value. + +```js +require('dotenv').config({ path: ['.env.local', '.env'] }) +``` + +##### quiet + +Default: `false` + +Suppress runtime logging message. + +```js +// index.js +require('dotenv').config({ quiet: false }) // change to true to suppress +console.log(`Hello ${process.env.HELLO}`) +``` + +```ini +# .env +HELLO=World +``` + +```sh +$ node index.js +[dotenv@17.0.0] injecting env (1) from .env +Hello World +``` + +##### encoding + +Default: `utf8` + +Specify the encoding of your file containing environment variables. + +```js +require('dotenv').config({ encoding: 'latin1' }) +``` + +##### debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being set as you expect. + +```js +require('dotenv').config({ debug: process.env.DEBUG }) +``` + +##### override + +Default: `false` + +Override any environment variables that have already been set on your machine with values from your .env file(s). If multiple files have been provided in `option.path` the override will also be used as each file is combined with the next. Without `override` being set, the first value wins. With `override` set the last value wins. + +```js +require('dotenv').config({ override: true }) +``` + +##### processEnv + +Default: `process.env` + +Specify an object to write your environment variables to. Defaults to `process.env` environment variables. + +```js +const myObject = {} +require('dotenv').config({ processEnv: myObject }) + +console.log(myObject) // values from .env +console.log(process.env) // this was not changed or written to +``` + +### Parse + +The engine which parses the contents of your file containing environment +variables is available to use. It accepts a String or Buffer and will return +an Object with the parsed keys and values. + +```js +const dotenv = require('dotenv') +const buf = Buffer.from('BASIC=basic') +const config = dotenv.parse(buf) // will return an object +console.log(typeof config, config) // object { BASIC : 'basic' } +``` + +#### Options + +##### debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being set as you expect. + +```js +const dotenv = require('dotenv') +const buf = Buffer.from('hello world') +const opt = { debug: true } +const config = dotenv.parse(buf, opt) +// expect a debug message because the buffer is not in KEY=VAL form +``` + +### Populate + +The engine which populates the contents of your .env file to `process.env` is available for use. It accepts a target, a source, and options. This is useful for power users who want to supply their own objects. + +For example, customizing the source: + +```js +const dotenv = require('dotenv') +const parsed = { HELLO: 'world' } + +dotenv.populate(process.env, parsed) + +console.log(process.env.HELLO) // world +``` + +For example, customizing the source AND target: + +```js +const dotenv = require('dotenv') +const parsed = { HELLO: 'universe' } +const target = { HELLO: 'world' } // empty object + +dotenv.populate(target, parsed, { override: true, debug: true }) + +console.log(target) // { HELLO: 'universe' } +``` + +#### options + +##### Debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being populated as you expect. + +##### override + +Default: `false` + +Override any environment variables that have already been set. + +  + +## CHANGELOG + +See [CHANGELOG.md](CHANGELOG.md) + +  + +## Who's using dotenv? + +[These npm modules depend on it.](https://www.npmjs.com/browse/depended/dotenv) + +Projects that expand it often use the [keyword "dotenv" on npm](https://www.npmjs.com/search?q=keywords:dotenv). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/README.md new file mode 100644 index 000000000..b82a43814 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/README.md @@ -0,0 +1,774 @@ +# dotenv [![NPM version](https://img.shields.io/npm/v/dotenv.svg?style=flat-square)](https://www.npmjs.com/package/dotenv) [![downloads](https://img.shields.io/npm/dw/dotenv)](https://www.npmjs.com/package/dotenv) + +dotenv + +Dotenv is a zero-dependency module that loads environment variables from a `.env` file into [`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env). Storing configuration in the environment separate from code is based on [The Twelve-Factor App](https://12factor.net/config) methodology. + +[Watch the tutorial](https://www.youtube.com/watch?v=YtkZR0NFd1g) + +  + +## Usage + +Install it. + +```sh +npm install dotenv --save +``` + +Create a `.env` file in the root of your project: + +```ini +# .env +S3_BUCKET="YOURS3BUCKET" +SECRET_KEY="YOURSECRETKEYGOESHERE" +``` + +And as early as possible in your application, import and configure dotenv: + +```javascript +require('dotenv').config() // or import 'dotenv/config' if you're using ES6 +... +console.log(process.env) // remove this after you've confirmed it is working +``` + +That's it. `process.env` now has the keys and values you defined in your `.env` file: + +  + +## Advanced + +
ES6
+ +Import with [ES6](#how-do-i-use-dotenv-with-import): + +```javascript +import 'dotenv/config' +``` + +ES6 import if you need to set config options: + +```javascript +import dotenv from 'dotenv' +dotenv.config({ path: '/custom/path/to/.env' }) +``` + +
+
bun
+ +```sh +bun add dotenv +``` + +
+
yarn
+ +```sh +yarn add dotenv +``` + +
+
pnpm
+ +```sh +pnpm add dotenv +``` + +
+
Monorepos
+ +For monorepos with a structure like `apps/backend/app.js`, put it the `.env` file in the root of the folder where your `app.js` process runs. + +```ini +# app/backend/.env +S3_BUCKET="YOURS3BUCKET" +SECRET_KEY="YOURSECRETKEYGOESHERE" +``` + +
+
Multiline Values
+ +If you need multiline variables, for example private keys, those are now supported (`>= v15.0.0`) with line breaks: + +```ini +PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY----- +... +Kh9NV... +... +-----END RSA PRIVATE KEY-----" +``` + +Alternatively, you can double quote strings and use the `\n` character: + +```ini +PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END RSA PRIVATE KEY-----\n" +``` + +
+
Comments
+ +Comments may be added to your file on their own line or inline: + +```ini +# This is a comment +SECRET_KEY=YOURSECRETKEYGOESHERE # comment +SECRET_HASH="something-with-a-#-hash" +``` + +Comments begin where a `#` exists, so if your value contains a `#` please wrap it in quotes. This is a breaking change from `>= v15.0.0` and on. + +
+
Parsing
+ +The engine which parses the contents of your file containing environment variables is available to use. It accepts a String or Buffer and will return an Object with the parsed keys and values. + +```javascript +const dotenv = require('dotenv') +const buf = Buffer.from('BASIC=basic') +const config = dotenv.parse(buf) // will return an object +console.log(typeof config, config) // object { BASIC : 'basic' } +``` + +
+
Preload
+ +> Note: Consider using [`dotenvx`](https://github.com/dotenvx/dotenvx) instead of preloading. I am now doing (and recommending) so. +> +> It serves the same purpose (you do not need to require and load dotenv), adds better debugging, and works with ANY language, framework, or platform. – [motdotla](https://mot.la) + +You can use the `--require` (`-r`) [command line option](https://nodejs.org/api/cli.html#-r---require-module) to preload dotenv. By doing this, you do not need to require and load dotenv in your application code. + +```bash +$ node -r dotenv/config your_script.js +``` + +The configuration options below are supported as command line arguments in the format `dotenv_config_
+
Variable Expansion
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for variable expansion. + +Reference and expand variables already on your machine for use in your .env file. + +```ini +# .env +USERNAME="username" +DATABASE_URL="postgres://${USERNAME}@localhost/my_database" +``` +```js +// index.js +console.log('DATABASE_URL', process.env.DATABASE_URL) +``` +```sh +$ dotenvx run --debug -- node index.js +[dotenvx@0.14.1] injecting env (2) from .env +DATABASE_URL postgres://username@localhost/my_database +``` + +
+
Command Substitution
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for command substitution. + +Add the output of a command to one of your variables in your .env file. + +```ini +# .env +DATABASE_URL="postgres://$(whoami)@localhost/my_database" +``` +```js +// index.js +console.log('DATABASE_URL', process.env.DATABASE_URL) +``` +```sh +$ dotenvx run --debug -- node index.js +[dotenvx@0.14.1] injecting env (1) from .env +DATABASE_URL postgres://yourusername@localhost/my_database +``` + +
+
Encryption
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for encryption. + +Add encryption to your `.env` files with a single command. + +``` +$ dotenvx set HELLO Production -f .env.production +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ DOTENV_PRIVATE_KEY_PRODUCTION="<.env.production private key>" dotenvx run -- node index.js +[dotenvx] injecting env (2) from .env.production +Hello Production +``` + +[learn more](https://github.com/dotenvx/dotenvx?tab=readme-ov-file#encryption) + +
+
Multiple Environments
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to manage multiple environments. + +Run any environment locally. Create a `.env.ENVIRONMENT` file and use `-f` to load it. It's straightforward, yet flexible. + +```bash +$ echo "HELLO=production" > .env.production +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ dotenvx run -f=.env.production -- node index.js +Hello production +> ^^ +``` + +or with multiple .env files + +```bash +$ echo "HELLO=local" > .env.local +$ echo "HELLO=World" > .env +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ dotenvx run -f=.env.local -f=.env -- node index.js +Hello local +``` + +[more environment examples](https://dotenvx.com/docs/quickstart/environments) + +
+
Production
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for production deploys. + +Create a `.env.production` file. + +```sh +$ echo "HELLO=production" > .env.production +``` + +Encrypt it. + +```sh +$ dotenvx encrypt -f .env.production +``` + +Set `DOTENV_PRIVATE_KEY_PRODUCTION` (found in `.env.keys`) on your server. + +``` +$ heroku config:set DOTENV_PRIVATE_KEY_PRODUCTION=value +``` + +Commit your `.env.production` file to code and deploy. + +``` +$ git add .env.production +$ git commit -m "encrypted .env.production" +$ git push heroku main +``` + +Dotenvx will decrypt and inject the secrets at runtime using `dotenvx run -- node index.js`. + +
+
Syncing
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to sync your .env files. + +Encrypt them with `dotenvx encrypt -f .env` and safely include them in source control. Your secrets are securely synced with your git. + +This still subscribes to the twelve-factor app rules by generating a decryption key separate from code. + +
+
More Examples
+ +See [examples](https://github.com/dotenv-org/examples) of using dotenv with various frameworks, languages, and configurations. + +* [nodejs](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs) +* [nodejs (debug on)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs-debug) +* [nodejs (override on)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs-override) +* [nodejs (processEnv override)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-custom-target) +* [esm](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-esm) +* [esm (preload)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-esm-preload) +* [typescript](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript) +* [typescript parse](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript-parse) +* [typescript config](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript-config) +* [webpack](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-webpack) +* [webpack (plugin)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-webpack2) +* [react](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-react) +* [react (typescript)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-react-typescript) +* [express](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-express) +* [nestjs](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nestjs) +* [fastify](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-fastify) + +
+ +  + +## Agents + +dotenvx-as2 + +> Software is changing, and dotenv must change with it—that is why I built [agentic secret storage (AS2)](https://dotenvx.com/as2). Agents run code without humans at terminals, so plaintext `.env` files are the wrong primitive. +> +> AS2 is built for autonomous software: encrypted by default, zero console access, and cryptography‑first delivery that keeps operators out of the loop. +> +> It is backed by [Vestauth](https://github.com/vestauth/vestauth), the trusted, pioneering auth layer for agents—giving each agent a cryptographic identity so requests are signed with private keys and verified with public keys. No shared secrets to leak. +> +> It's what I'm using now. - [motdotla](https://mot.la) + +### Quickstart + +Install vestauth and initialize your agent. + +```bash +npm i -g vestauth + +vestauth agent init +``` + +Your agent `set`s secrets with a simple `curl` endpoint: + +```bash +vestauth agent curl -X POST https://as2.dotenvx.com/set -d '{"KEY":"value"}' +``` + +And your agent `get`s secrets with a simple `curl` endpoint: + +```bash +vestauth agent curl https://as2.dotenvx.com/get?key=KEY +``` + +That's it! This new primitive unlocks secrets access for agents without human-in-the-loop, oauth flows, or API keys. It's the future for agents. + +  + +## FAQ + +
Should I commit my `.env` file?
+ +No. + +Unless you encrypt it with [dotenvx](https://github.com/dotenvx/dotenvx). Then we recommend you do. + +
+
What about variable expansion?
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx). + +
+
Should I have multiple `.env` files?
+ +We recommend creating one `.env` file per environment. Use `.env` for local/development, `.env.production` for production and so on. This still follows the twelve factor principles as each is attributed individually to its own environment. Avoid custom set ups that work in inheritance somehow (`.env.production` inherits values form `.env` for example). It is better to duplicate values if necessary across each `.env.environment` file. + +> In a twelve-factor app, env vars are granular controls, each fully orthogonal to other env vars. They are never grouped together as “environments”, but instead are independently managed for each deploy. This is a model that scales up smoothly as the app naturally expands into more deploys over its lifetime. +> +> – [The Twelve-Factor App](http://12factor.net/config) + +Additionally, we recommend using [dotenvx](https://github.com/dotenvx/dotenvx) to encrypt and manage these. + +
+ +
How do I use dotenv with `import`?
+ +Simply.. + +```javascript +// index.mjs (ESM) +import 'dotenv/config' // see https://github.com/motdotla/dotenv#how-do-i-use-dotenv-with-import +import express from 'express' +``` + +A little background.. + +> When you run a module containing an `import` declaration, the modules it imports are loaded first, then each module body is executed in a depth-first traversal of the dependency graph, avoiding cycles by skipping anything already executed. +> +> – [ES6 In Depth: Modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/) + +What does this mean in plain language? It means you would think the following would work but it won't. + +`errorReporter.mjs`: +```js +class Client { + constructor (apiKey) { + console.log('apiKey', apiKey) + + this.apiKey = apiKey + } +} + +export default new Client(process.env.API_KEY) +``` +`index.mjs`: +```js +// Note: this is INCORRECT and will not work +import * as dotenv from 'dotenv' +dotenv.config() + +import errorReporter from './errorReporter.mjs' // process.env.API_KEY will be blank! +``` + +`process.env.API_KEY` will be blank. + +Instead, `index.mjs` should be written as.. + +```js +import 'dotenv/config' + +import errorReporter from './errorReporter.mjs' +``` + +Does that make sense? It's a bit unintuitive, but it is how importing of ES6 modules work. Here is a [working example of this pitfall](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-es6-import-pitfall). + +There are two alternatives to this approach: + +1. Preload with dotenvx: `dotenvx run -- node index.js` (_Note: you do not need to `import` dotenv with this approach_) +2. Create a separate file that will execute `config` first as outlined in [this comment on #133](https://github.com/motdotla/dotenv/issues/133#issuecomment-255298822) +
+ +
Can I customize/write plugins for dotenv?
+ +Yes! `dotenv.config()` returns an object representing the parsed `.env` file. This gives you everything you need to continue setting values on `process.env`. For example: + +```js +const dotenv = require('dotenv') +const variableExpansion = require('dotenv-expand') +const myEnv = dotenv.config() +variableExpansion(myEnv) +``` + +
+
What rules does the parsing engine follow?
+ +The parsing engine currently supports the following rules: + +- `BASIC=basic` becomes `{BASIC: 'basic'}` +- empty lines are skipped +- lines beginning with `#` are treated as comments +- `#` marks the beginning of a comment (unless when the value is wrapped in quotes) +- empty values become empty strings (`EMPTY=` becomes `{EMPTY: ''}`) +- inner quotes are maintained (think JSON) (`JSON={"foo": "bar"}` becomes `{JSON:"{\"foo\": \"bar\"}"`) +- whitespace is removed from both ends of unquoted values (see more on [`trim`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)) (`FOO= some value ` becomes `{FOO: 'some value'}`) +- single and double quoted values are escaped (`SINGLE_QUOTE='quoted'` becomes `{SINGLE_QUOTE: "quoted"}`) +- single and double quoted values maintain whitespace from both ends (`FOO=" some value "` becomes `{FOO: ' some value '}`) +- double quoted values expand new lines (`MULTILINE="new\nline"` becomes + +``` +{MULTILINE: 'new +line'} +``` + +- backticks are supported (`` BACKTICK_KEY=`This has 'single' and "double" quotes inside of it.` ``) + +
+
What about syncing and securing .env files?
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to unlock syncing encrypted .env files over git. + +
+
What if I accidentally commit my `.env` file to code?
+ +Remove it, [remove git history](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository) and then install the [git pre-commit hook](https://github.com/dotenvx/dotenvx#pre-commit) to prevent this from ever happening again. + +``` +npm i -g @dotenvx/dotenvx +dotenvx precommit --install +``` + +
+
What happens to environment variables that were already set?
+ +By default, we will never modify any environment variables that have already been set. In particular, if there is a variable in your `.env` file which collides with one that already exists in your environment, then that variable will be skipped. + +If instead, you want to override `process.env` use the `override` option. + +```javascript +require('dotenv').config({ override: true }) +``` + +
+
How can I prevent committing my `.env` file to a Docker build?
+ +Use the [docker prebuild hook](https://dotenvx.com/docs/features/prebuild). + +```bash +# Dockerfile +... +RUN curl -fsS https://dotenvx.sh/ | sh +... +RUN dotenvx prebuild +CMD ["dotenvx", "run", "--", "node", "index.js"] +``` + +
+
How come my environment variables are not showing up for React?
+ +Your React code is run in Webpack, where the `fs` module or even the `process` global itself are not accessible out-of-the-box. `process.env` can only be injected through Webpack configuration. + +If you are using [`react-scripts`](https://www.npmjs.com/package/react-scripts), which is distributed through [`create-react-app`](https://create-react-app.dev/), it has dotenv built in but with a quirk. Preface your environment variables with `REACT_APP_`. See [this stack overflow](https://stackoverflow.com/questions/42182577/is-it-possible-to-use-dotenv-in-a-react-project) for more details. + +If you are using other frameworks (e.g. Next.js, Gatsby...), you need to consult their documentation for how to inject environment variables into the client. + +
+
Why is the `.env` file not loading my environment variables successfully?
+ +Most likely your `.env` file is not in the correct place. [See this stack overflow](https://stackoverflow.com/questions/42335016/dotenv-file-is-not-loading-environment-variables). + +Turn on debug mode and try again.. + +```js +require('dotenv').config({ debug: true }) +``` + +You will receive a helpful error outputted to your console. + +
+
Why am I getting the error `Module not found: Error: Can't resolve 'crypto|os|path'`?
+ +You are using dotenv on the front-end and have not included a polyfill. Webpack < 5 used to include these for you. Do the following: + +```bash +npm install node-polyfill-webpack-plugin +``` + +Configure your `webpack.config.js` to something like the following. + +```js +require('dotenv').config() + +const path = require('path'); +const webpack = require('webpack') + +const NodePolyfillPlugin = require('node-polyfill-webpack-plugin') + +module.exports = { + mode: 'development', + entry: './src/index.ts', + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'dist'), + }, + plugins: [ + new NodePolyfillPlugin(), + new webpack.DefinePlugin({ + 'process.env': { + HELLO: JSON.stringify(process.env.HELLO) + } + }), + ] +}; +``` + +Alternatively, just use [dotenv-webpack](https://github.com/mrsteele/dotenv-webpack) which does this and more behind the scenes for you. + +
+ +  + +## Docs + +Dotenv exposes four functions: + +* `config` +* `parse` +* `populate` + +### Config + +`config` will read your `.env` file, parse the contents, assign it to +[`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env), +and return an Object with a `parsed` key containing the loaded content or an `error` key if it failed. + +```js +const result = dotenv.config() + +if (result.error) { + throw result.error +} + +console.log(result.parsed) +``` + +You can additionally, pass options to `config`. + +#### Options + +##### path + +Default: `path.resolve(process.cwd(), '.env')` + +Specify a custom path if your file containing environment variables is located elsewhere. + +```js +require('dotenv').config({ path: '/custom/path/to/.env' }) +``` + +By default, `config` will look for a file called .env in the current working directory. + +Pass in multiple files as an array, and they will be parsed in order and combined with `process.env` (or `option.processEnv`, if set). The first value set for a variable will win, unless the `options.override` flag is set, in which case the last value set will win. If a value already exists in `process.env` and the `options.override` flag is NOT set, no changes will be made to that value. + +```js +require('dotenv').config({ path: ['.env.local', '.env'] }) +``` + +##### quiet + +Default: `false` + +Suppress runtime logging message. + +```js +// index.js +require('dotenv').config({ quiet: false }) // change to true to suppress +console.log(`Hello ${process.env.HELLO}`) +``` + +```ini +# .env +HELLO=World +``` + +```sh +$ node index.js +[dotenv@17.0.0] injecting env (1) from .env +Hello World +``` + +##### encoding + +Default: `utf8` + +Specify the encoding of your file containing environment variables. + +```js +require('dotenv').config({ encoding: 'latin1' }) +``` + +##### debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being set as you expect. + +```js +require('dotenv').config({ debug: process.env.DEBUG }) +``` + +##### override + +Default: `false` + +Override any environment variables that have already been set on your machine with values from your .env file(s). If multiple files have been provided in `option.path` the override will also be used as each file is combined with the next. Without `override` being set, the first value wins. With `override` set the last value wins. + +```js +require('dotenv').config({ override: true }) +``` + +##### processEnv + +Default: `process.env` + +Specify an object to write your environment variables to. Defaults to `process.env` environment variables. + +```js +const myObject = {} +require('dotenv').config({ processEnv: myObject }) + +console.log(myObject) // values from .env +console.log(process.env) // this was not changed or written to +``` + +### Parse + +The engine which parses the contents of your file containing environment +variables is available to use. It accepts a String or Buffer and will return +an Object with the parsed keys and values. + +```js +const dotenv = require('dotenv') +const buf = Buffer.from('BASIC=basic') +const config = dotenv.parse(buf) // will return an object +console.log(typeof config, config) // object { BASIC : 'basic' } +``` + +#### Options + +##### debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being set as you expect. + +```js +const dotenv = require('dotenv') +const buf = Buffer.from('hello world') +const opt = { debug: true } +const config = dotenv.parse(buf, opt) +// expect a debug message because the buffer is not in KEY=VAL form +``` + +### Populate + +The engine which populates the contents of your .env file to `process.env` is available for use. It accepts a target, a source, and options. This is useful for power users who want to supply their own objects. + +For example, customizing the source: + +```js +const dotenv = require('dotenv') +const parsed = { HELLO: 'world' } + +dotenv.populate(process.env, parsed) + +console.log(process.env.HELLO) // world +``` + +For example, customizing the source AND target: + +```js +const dotenv = require('dotenv') +const parsed = { HELLO: 'universe' } +const target = { HELLO: 'world' } // empty object + +dotenv.populate(target, parsed, { override: true, debug: true }) + +console.log(target) // { HELLO: 'universe' } +``` + +#### options + +##### Debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being populated as you expect. + +##### override + +Default: `false` + +Override any environment variables that have already been set. + +  + +## CHANGELOG + +See [CHANGELOG.md](CHANGELOG.md) + +  + +## Who's using dotenv? + +[These npm modules depend on it.](https://www.npmjs.com/browse/depended/dotenv) + +Projects that expand it often use the [keyword "dotenv" on npm](https://www.npmjs.com/search?q=keywords:dotenv). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/SECURITY.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/SECURITY.md new file mode 100644 index 000000000..237a8ce74 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/SECURITY.md @@ -0,0 +1 @@ +Please report any security vulnerabilities to security@dotenvx.com. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/config.d.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/config.d.ts new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/config.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/config.js b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/config.js new file mode 100644 index 000000000..b0b5576be --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/config.js @@ -0,0 +1,9 @@ +(function () { + require('./lib/main').config( + Object.assign( + {}, + require('./lib/env-options'), + require('./lib/cli-options')(process.argv) + ) + ) +})() diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/package.json new file mode 100644 index 000000000..209912e80 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/dotenv/package.json @@ -0,0 +1,62 @@ +{ + "name": "dotenv", + "version": "17.3.1", + "description": "Loads environment variables from .env file", + "main": "lib/main.js", + "types": "lib/main.d.ts", + "exports": { + ".": { + "types": "./lib/main.d.ts", + "require": "./lib/main.js", + "default": "./lib/main.js" + }, + "./config": "./config.js", + "./config.js": "./config.js", + "./lib/env-options": "./lib/env-options.js", + "./lib/env-options.js": "./lib/env-options.js", + "./lib/cli-options": "./lib/cli-options.js", + "./lib/cli-options.js": "./lib/cli-options.js", + "./package.json": "./package.json" + }, + "scripts": { + "dts-check": "tsc --project tests/types/tsconfig.json", + "lint": "standard", + "pretest": "npm run lint && npm run dts-check", + "test": "tap run tests/**/*.js --allow-empty-coverage --disable-coverage --timeout=60000", + "test:coverage": "tap run tests/**/*.js --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov", + "prerelease": "npm test", + "release": "standard-version" + }, + "repository": { + "type": "git", + "url": "git://github.com/motdotla/dotenv.git" + }, + "homepage": "https://github.com/motdotla/dotenv#readme", + "funding": "https://dotenvx.com", + "keywords": [ + "dotenv", + "env", + ".env", + "environment", + "variables", + "config", + "settings" + ], + "readmeFilename": "README.md", + "license": "BSD-2-Clause", + "devDependencies": { + "@types/node": "^18.11.3", + "decache": "^4.6.2", + "sinon": "^14.0.1", + "standard": "^17.0.0", + "standard-version": "^9.5.0", + "tap": "^19.2.0", + "typescript": "^4.8.4" + }, + "engines": { + "node": ">=12" + }, + "browser": { + "fs": false + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/LICENSE.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/LICENSE.md new file mode 100644 index 000000000..2027e8dcf --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Evan Wallace + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/README.md new file mode 100644 index 000000000..93863d198 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/README.md @@ -0,0 +1,3 @@ +# esbuild + +This is a JavaScript bundler and minifier. See https://github.com/evanw/esbuild and the [JavaScript API documentation](https://esbuild.github.io/api/) for details. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/bin/esbuild b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/bin/esbuild new file mode 100755 index 0000000000000000000000000000000000000000..073f4e8e8d07270dec127cdac20d53124821f51d GIT binary patch literal 10385218 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

iq-uo$YU}?qfm6nd%&2QGW@j7?$U2MRlmA=N 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 |5n<(-)ebYF~Bh63y`O8?lDH) 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
t(IXBflLo$aml7AzfHuY@Y>@lFb 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 z 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°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

&VblPTkW0ii# zcF^yO$@T2w_s96O^ac2o9rzf3`YwI)NOqOEAXtUHoIIc1PCF-(hiqqDuRDC>%4g0A z#v^+*bv$3CpU5D*tq#1cz*npJc=71^*2nnM_sxPI-SQZJ*6$YlmB3$l9Q>h=f&X9F zPbu3#^MO~tr0PSL9@2l(hpF(NPd|p>2hWS4Ll=18gq=_bek*|QJpB&8%Dyj#4(&Ww z$>+)1)K5Eb4y6xwrPwnryxWk6iZt*ZBR4jouRjHU@m>eMRDaRshcxn(u=mpGt9uWg zSTEk<^p{RwCDyM$mwx@aXD9RTbJ$i-pu?Ww3~AP5`uNMiUTA-YIsQ3pj-6Wj<81jQ z_1Ue*!z}Mq<-981WV(*j9Zh`z$#V>E1Jq=likO`tI_T_15{yUM26loAoFI zympg2`Um#0_tbK&eRfVeZa>PM?z+M5ubcHw1D{UsVB9{WTz>IR1p80+gPtSFb&uY) zVF6a`lkq<6vuegtS7Frv>A0(+tO{N%*Pc#j-$S1fWL@v1_S?-kCkKs(j3RO=tNEQa z^uAAT#>jpa}?ZY}4e&(6thn!VZB6Qk|fzPzTnmxau0zgS_; z9!c%?X(P>p z-OyCDRUPUNsikDC*>b;^aYq?%J$k@;_p>K{HD<5C_eWx1Ag$C*Kxl;kk?Y} zvtzo7e_u#@)$r0T_HxWQ{M|QebMl%lH1e9hPrDD&?)|iTVERb&?W!}({qWFS_J&s* z`LRCscJ|LP;GpJS1Lox#`#m$<$_mp^&DWC4b0;I3xUCfIqZS?Ffdmec`*~+EEy53zhK|pH;B<*bYx)a z{yU6#tOmT00~1l65^FQjKt8$bxh-QaXFhcA-G*GUFXOYiHw29RJQJ%y=I-FUMra&i zZ1P3!R9+D6>3X?!oo`)#({sO;YcE}wIKSP*r*~Z6fX25$|oQR{Jf@H(GTB5Kim$UT>Ws!!c%T+8FtQG;WIx!fu~^~ z3{34LpQwK(eS)w3Nw~@bSNSc!yX<&e?bW?$gY@ixo}Ke-n)c5GSKw(sI8#lO79-F! z+h??efIG@O@D%HyF%t;9zf(P2+iTk~{LeI4C^oLh-FM5}B zKR7}@x|+}>>qGPd3_RndnOC0oPn(0B&ovL#>KOyN`k<>3Z-NJ?3AShd6vNWV6kH3( zn8WIP`7zZLP#j~NCHu$*b@U|nUf!r>?E9zX(RRK`f#`VhT#?OOkz@8V2TQ)YHeAg- zF$ejcg?!I7`_PxF_m@t--7#uxF?eJD6!e2+n{h^tWlhukaX&mDxHtOpVz)T3o^Qd5 z-r;=Srkwo$d|0LTflV+LqCdQF@3(v`8|F>G`~6r1x{BMBAi}HsxJ^jUyxphW` z`5bsWSe|Ddnwf9@(c+=}Sk5?O{sWBR;{4&3jNJy$JOj@hfL9Jq_wvgy_+@yD;pLa< zHov?-b&y{YeB$8q0Q_>0=YCTWGWT3lVg42vo~ba*pI+lLpNBUNl+OX4xxmAD(O)#o zH)ic_*=eiUE4Ot4W9e+J@>!txqq$a z{v6N!t3CH;Sl6nj?{BHJuI+iaoa>?H;m+;H&%=eO`BTn(yzJcc^Kt2zlbes%ob$=& z3R4Q`Q~A3KFo{hoP}GMH@&u(eAn1>r)g&(_b%;D$IciUR$D); zWllUW77;X z|9FS(@0DU>-H*R_Am}A6a*zf!CXAWYsBzQd_{?BiDI+ zuyV8H$6w5ImS0SKXJ|hjKc;G!DWBK%hS_E#J6-IfnO*X(*`7IC22 z*!b6&ebwNAF&txmOgDU&@ZpiY78$x3TKu-&of)%S<@OVzD^!vBw^#( zV-{|`e(*(C80O@V&%6{{@xb)CjO!ZnuyE>)flMY(9b6p;1Ms>s7ao$x0732(xm7kAtJNB`qK;3R(O@x1yj_te&N!Ye*O zbO@d;cJztn_BrGlofeL#SU9%Nsv4pn_~7t0eFO7jQ$Bs%iYFska}#{|NpPEcG#R%K zr@`&tIk^4V$KZCj2eTpw zcEN|;<%91~5AGpvyWO-p+S z*kggNRgEB97tgkIvGVtlzq`Jv{d-cJ%Ax1EY3P|+ukCP^J)fFZ&FN8t^h6gZMy$M! zS?oP%$<8?57MYSu%qq|9ud!oWCi7`$oe}S9fTqmBJx#>1nU~wY4P9w3HST5GURmh> zY_or!5vP7AF`k*onRNdgv*($s&Axfy4tgCUhTrSxf5Uh5ANrd@@i{y%Uv-WTf4u?v z)+vvHbpd{ha4mfl`!@6CYRwVYRM>ytXHGweUi|g2VNK64cm9;Q^Qn=c_}f*v=HYq7 z;22At&lg)m+}Vox!;=%UeNDTMTgMoL``Cl_I)>mD{1)t6t~Ld?;MbfLG19;cT*`&E z;DxWEz*^3ltYXf2teq&n+cYe%=^MnzZzD#odEvnHT;`xWQ?cY2d{(X)g4S5!TiLd2 zPXbOC$34Jk#XnNujDkOM#dH>Fcr3Zbnqw_Kg{N&EyvE{5*@3?!$K);LnOHePc`a{R z*U~$AEpJ%Yw(a+8>stAi{+8Wb7p94=_D-<%&^P}nMGt9z>x58zKDzEWd$7vcA7j;! z9IVfy{V`i)+p%X!^};&QDP7>K1KDW50e`^cG9JWc~P0qoIDc!G5IRy)0yVM zs!)8^MTR-|GM{-Z_p{;EU9v-cIkDHMz1c_m{bS&r%W`+m{_O1CvuEV)p5@C~+Yemj zzJPUJ-b8ffEMG=jwUHfL2458MJtrr-sWd;QY2ro9;g>Oo(|`ZuO!~~CPsyTT@r2gj zBLqtIM?tbYP-dyxtAgR7fLnI}p=tib$bZH=)T@OF8KaD^eF@{OWxTgB-YJY1+3bb?b3PjQ2h|3g#G2+stZ7aL_j92A zHPC(@H13~#HFTI|9t39-q5Xx>{$lQ{&n|S>V84YeSF2y}24AG@SAAZcarEa}H`oR3 zbD({y4z2v0CykH^_SacJ==Q0uDu?iJ<@4shJ1oXn+;_xhE*)m` z-cT`?6U8koUj-eS?5pG#g!tZaHMx({CuY)DHb$zu4ks>$}zf6ldGTJ?)p% zo*kQ4?f9nmT6|gppX#&N`7CrkKbww!o%O&Mf03fcn6JL<@UQj*?IN$kThC+Ns8IY3 z>alGn?-adIHnGL6BV*Upxb|#k-%%F2jrGPBwVws%ldE#KWjO;i8Kn2*{lI#+tM zAK%o|A9{@b#w2Vx^;f_iVPYWEx(t<3%fE#>{fEhGnE&v(cfT2+-bGFQ^zh<>%%(+4 z7aeWDUM+x6UOI6aIXAd5KeEtxrx2u&94=FTiN@y3Hv@3uE-t0G3v@vY`?O0>W~dkE5+tX z8&J($dGAQG^2*35nl>=N9=~a!*6Tj|r)KIy9V#|Pg`*7tvq)#j8N;n}>e@YgaAerA zX6leTdDC_dqdg`&Z~BKRV|s`Eq~h=2x?^(q!1w;(nEnsHrOJ?S8lm<|^l_uC{RwIj zuFoj#+K^e=gN>tFDFZu=qi|1a*IDTGDdGj=XgA-9gMxEtKMkBuhxRp`r_x|p^)$Tl zm5S3;nqEi$F3+XX^<(*M3w`eN^x5I?l!uP0spIm#K3)E|`D?I#kNE2n=y@VsM7D_E zXOu=CXUtE8%5F;VnXPjoCE#%ac$_3W`oN_dl3p?c(7720yK_^i?uHy@5VG zj-MP{h?iVG>flW2y)#{%H54!TO!-gZqd#fy?s0rn!SA8C@=3k&=kw^-f9JPP%0E9z zz?sZHdj%8v=T!N}h37=`ZGioa_$MnmZZlR`I`(Z>$6gd}|AP_!Ip+l=>Dk)QinpjI zZ0lLh4?@o}-)=QtEwawr_3GIl=bu>5e&I98^Vr`y<2>d0)|x;5EXkg@4t*11{_rtA z?U~aYqIp8~)D#PNlre0^W+<*d&l-c~kL`(ZY5oYR?h)rd=UV6d+T*IT?1-Bgmpxxx zbyVvRxhdng*%^oOqiue%?S_>eog;meD&L1v<(sq8IhVAwyTd5!=`qSI-}s47F6&Vb z->R;$WL^LMUztDp(#ZRv)cIow+@#JUZ(j8=vd?_mT?2lXfZqvzQ?U){f%jfWqX*6k z@ob1^Lp)o_v!S@`Kd(-RdTc}43pQr$|6O@J-T7rxVl2t}VYguY1o|N@zQv2!gNh4i zU9u8e+>Z@bX-o`PvDa-OHn{fmh1fS|%Yv<2H*>Dfu^mU7XPlWV+nXI2J5upA1TP9> zF1~Wo*sBG=X8@mdPAq$FQ3DT8x~&*EPv_1qPf;<6D;(=B7L8Ze|A~$ zoSUTY3YZU7!$Y+@>VYfs+)!yYd#)nHk!0)Ytk)=c#+;|xGJA`QC%dM^??*edq6SO* z2%G;e6MS0l9)W-A!dT+?KOUNio-T|hNv~4B1y``;wJTjXY#hDd!r|CWqfe7wwm(~# zgdf+REuYGnPpr+_JX>Mu?;pASIyGpH{M;UU!k?`G95wTs+wH_?8DAmmYf@ zm`;Trsq>3)@JW4+RG;3Zy*~e6nLpCSGuAQo)VX2q3>WXV?vmdBHh4bh^1I_JRCwYT zZ>Qn+S!wjcb?AqW^A|2m^q;KHzbaavhCWZFw{%pJjqJ>spOgoN(oz4f(7)88N3y?g zNvgl#;KKD4b|rMt5IzESg81X@e}Fcr{sDG@;wxS|V6#U@N`Fc|T>W^u{IV$lV=}+& z7EJ%mFQ*-^I30fZVuBVY=9ilPi~KS=0b?@1eCbo-mvyQ7Me(iwjzBPsiUzu9D zt&d_`pLBejxjJ3E(&w?K6_b`8cK@Z$SDG(f7&LcN!#DmYaC8%+?>dUPantNq|6K>cA~88z+Wi&-1_74=9Kv43^}H9)<7m*JfCzL46Hs(*dp$0_TX z#Gy5Rm5X+69xHLOeJS(SLeIRV^#m7J`gGx4lLlVt0%A$01mmw<7#(~6Y=^J3KH!~8 zD?BuGW0Qg>kyFIjqVOYiyvoXr^ZqK5W!Ety_H*1lz32XO$FnP){bu2RkT)%!OyP&r z`0opqu3S6vB7aIXRvg?%o=?X8$*$KdO9P*HH64$p!n8gWCI{F5Bv`=Nsra8>eCu6r ztlGwD^1W1hbgSfDv~t%&Qerrt)GjUd@QHXRRlcuFk?&Jle;Y!!S9<#VMC&0bxNz-K zt%WFtU7Vof(DsHK$C8}S5Pj3wsc!u0zhXV)-HH@>aCq-Lhxbl5o^7UCFI0RmN}fVJ zF<-^3m{a48O#{svbVlCJ(TTG+L@kX%Pp+77-~HU6oG0Rg&YI!L#0O6lzfcbRV6LSd zzqrMP!NKp#>L2+$+4x0{rC*ZcC6X1z*TA23*6G5e^JVOQ=eqqmdQM}1+%xtBeQVOM z9lH9r&&oeY?*9_$3i1!!@eZCZZTEeVw{ItAb)VZeF)PWUHHSETZ}!Nk;(yXtZvVTi z`ohWn;&nRf0Up^zJzVsxsT`*c@<^yf*w$bK+8RD+SgYCxB}RaJl%SOhC%WW{R~#C- z^+}bl;hn3gnMiGCBbE!^A6dHaigLprdzhSoo4H;c^zG?6H}vMKNB{Z<1B;F2nc;hX z^fKS~8Nu2RaR|3S`1$)ff>iPle+RlU8!u4C!WAXB|TO;fe7r#!8u&pkR(T!HV!I8oB%%Ad`i{Dvk z=C3!PZxk6Vg2!Aq>{@2QmPNl$)*H_b0Z)DkJX*`JXx`z(>pV1z6@GyyUxv=<~QDM>}ljX=j<-e_Rvwfr6^FpmovK86;I8y>Oi~r@bZkCr#2n>d~*nVy!z~* z-cb!VopJ~tixWBt%8rzs`U^n z?;GCH+4BQ+oI!?eKG%!00PEIM7&mhB`S4M#zf<#i7&Tfl%n-W6xbK{BbW})ZA%IJJ zo%)wS7nd`SYMpvP%9wuXjOnd}OxWu?6`pnK-+5%hm4_43n{_X(vyTKuKQQWyA`xYamX7A_7Z<8Mp~eA`ms8*>Wq zrOw&wWFvb0$^VW&4*J#}T%`Jv4}8hBuZHj?Hw?xfpWBMwOZ6lFi{g)q6L2QSA0H4* z%mE4i!kH&ieR0{a-WbJy^G}HL@-B(l_Dr(B^M>r1A!I3)e?I!+$@5Ri|3&`!Z350@ z{`u&cPltcDrs^LzhJ(%9Q}W64w2D2p>HlxzSq?75L*D$}ZzO0lgbq?()<&P%>*QsI zMYB{rq0Erzvi#kY{*YyV zQK;-;;(xQLv2Ksg?ic@Hoq-)&p|fU{IOgQOp>{q9e5JkK}lU=;6kqw!6HmV`Zv;H!PSB&{W9X4a z9$fube&zA`gKItgYP{V~*)nmm<2BQa_mF423*bYot#*temPYKL1HI$M2(wafu*3t4 zi-Q*(cqAW*{96YHQBQ2in+xuh*Avn|4L+{&z#x1)e2VxuN&3e-6MS#e{{m0H?${eV zWB*j>Kkj(?=X(0J_{2=H#{)7V}I3wLvns9`!7u^ew#f19Ks(|K6yPcTf zrgF{(Hn(ERR?TwOMZ2uEq#!l01ak&;1avNqcWuC)o66I`{UZ~;rJYPx^Ow`T_?M~WZP58^VcElsgqr= z_^PMhM7-J6*B%>UsP&3v7Cn>qL){KN7eGrNXPK~vGS0bT*1C@L%GloyG>gv~*zZ)c z|Dtdw@#C&Z>`9$KyxH0-UD&eubFNKn?|J%lc5TE;Kbm(ruZ**}D$Gpm(e@EKFNrlR$w8Kze`WLa8W$GF zC+K>@#z#W`I{bVx_V_M~euL-Tik}OV-!KRJc%Chj+2cZH?u8X*K5+F;$S|$?D${|h zWQN%{=_*t8AtaNMN6BK8eIKf$(Lp_pRoh)W+ULuD-G$wQ$Dav)$8XgBSX(Cj_WpN| zOiEs5E9jqV-`n&&-oH}5g=^z?uyzM-EjuQZki$VgPkB?)t?NB-B@b8oofF7Nsrg^X?)h1XI}r(&8yOQZ}_ywOP@oH_Y0>v-Zg3F zuj>>)#CLOT^u&5Gxr(;!a%$_vXL|6UHPKIXy%?D46Fir!`$dBzErYy&I{Npd`Qhx3 z=l?f7uzV`~PoG2a!wc#Q9e%3(f3p10J&pVU&h9)Neh7Q;@M-abc+|=t0Hzc1!(Vy& zJ{^8ICHxef9)4zdVEoka1578v&qPn(|LOP{cY65od0_n1@dHdJ!cV*T$@GbBPbSBw z-1wZqxnAD*+>*>>yKJZWMy5|CK6kSGYUKl6aC-FkI}c7iEqWyEYhXGNJ-+AZ`*ip< zoqo6c4dv@kXP?;mENYJg&1geqdV525)`&o9X9=}mHux<&=W8xZBdWMhEtn0JX2Rca z>>Z!S_V?zqovyv}1&23IRo|b|_|w@RX~uuff7bZZ_3zkwALuOA)0ppOrLlk3dHi<+ zzrl^yXr0FYx@&LSw#N4|JTV)`&iz-x;@I1X{SS`MSK*<%{0ZCI9<;YltRLKc=yqOH zwcEFY1M585Q`8SRY4W{f|3%4P()qyK8Glw$$jrGw`|`6A`_H>m{E$!rFLv(F6)tQZ zKV-cJFNu7?8r!#A>4{x>>s$3%_J6YfeThS#?RM-q{=XA_+cY^RP2YEV`c}N&n>V=G zLzC2e;#n4clKWpL{3zem&WVc$e{1jMvGS`M&I;Fz(q8?-7UhF}{dWUaoiaPd&soOA zDr_BZ!+J1yJpat{z^Z&-FRT?FJjp*#<)6MZ@yD&;s{+1=<{9x~`Ayi&McB;kdDM%g zR^f)})MTT!U4vmv4e{G9*7=JAhFLM%aMlKGUrzS4AJ`J{C`XqSd+;ZI7fi1IxXXek zIiK(i`4{A$x;%C@u-UaLRkv7mG8J!f<7KMvmff=W`>x#C{N?&t%4eq5R$2Ee_MWKU zKRzgX%A4)lNe#MJLS>11KMue7Jb3ih`&pL8-@F8WGX#up{<#aoAU^(?{Op=qVsui?hpk!0&(y!{{Ds$1mk>H` zFpPo^-~N(GO|?B&k$d)GiLqxvkJ11N9y`Nu29LUPi zoS=G`oNvo|To>|8y|%bwWt-=R;*G@A6eD%p`)&7;<{g}E-pTJP`Q5$WJ^`4>|Xjt}o`eyhH5yROhcx zOWuFXejghzDg2!x@Bi`GCzE&8ul;C5a(q?#sZzWS&sVZ%bUHO*?h2f3>Gdw+sqJTF zmv*cthqq9<1fL~u*B5?`xSRG9RYK#1+P7I$MDA`Ox~vcxwrf->mj0QW+;Q2lSJC?^ z#*olYTkQGpbo5ih?QYwH`ss(XeMZ>SD>BMh5glRIRahaKj0*8R z)SAdYcXZaNPWrX1gKoEE-V}Upa>T74`Yy*diAOTmJ}`U#IVcf8^L) zC(2()XI~`smo?bmZ_@PlrBA!RyutpSOVi)jPrJXsV1LbN`pZ1U{!TQ1ZrknBYmh$= zK6+~Wd7}1zk*58(KE?Ly9zGuae?Gt_0te{m}FtM=S!zmw|h zS5pIQH*!|RIm^MNHQy=WFC*XIbUuF@jX>>Y_Bd^!&fc&1)At3=9w*ID5$f;i)180T zq}ZE&_C;X_zj0U9m~c&&_S*Ske)?Ke;BTrR|He-Z;04tEwROAA2g(hKklRtHJeLyN zj=N7|Bu6mSo-DP_ju>2zP>qV9;cHrXcWC`S`r65vfdav!!w3H99T1UI#|!Os;NA2F7Pz=?8o z+5_Kvmi>OC-Dk3SzAk7Su3;ZqaW-dY2YhXnAJna99{2(8H2L#53)!mUZ;!R^cKV{N z0@~ocb1zOf9 zuLinm&*Kk0*Xy}`dhBFJ_9Y4e146;cGkCN@@es4 zmanwEggTmYj55v$F6$zPUUN&wBj72kg5RjKNgZd-{pGg`^J|Vhc6jHAJ>~v_*qU*i z55IHdp1(U*Zf^7&VcDhcmy8ZCz~+0uW^{Pb2!lETqj}dKf43o!WXC=P40?WG3;Tx# za?F8&T>kR-%QpvZGve=WIU}t7yV0f`^ZkyI*7f@(XIQpLv?*D;hVTh-dWZ{uF_^=cO)JG%cb+}CHO&P#`H#k-!}+;boJcc}-5Z zc1mbj-xFs*yCBy_X(a1fVw>|=C%=w0yDyu)>xn&At!%Z<^xiqrs$so#>E%aXUucBi z=3I%+z^Il1&c%8Pz3|42ka_41Uwl2d_&+1-TkDKbv3BN)w^{c-c$+W&9(XuB6S`m% zM|scQFC2O{SZEw-H2mRn!NtMbD&lX?3B?cHQ4v2pGsHXft-{wI(Zj-zmtNm`=euvd zmHC;bw-y2RhIe=pNtdKYK;F2@hs!+8`xUHYw~hpUWun7jh3%_?eH&ooTo zcVLV!{(eVxxUSAH5w^2_vh>2EFE22{J?N@V*4YOP&ii6qud-IJv;Nu&G^X5`A05`i zn7SELALHp|%rVAhk4xuWD3&oeuI`7RG2`lCT)m8|k8#DEarLJemvuH^Mt;-%3ynQb zaqgd)VZ@)vu*bEGaqVJU=F(e_{tw1Ktm9`E4Dm_zi!rq^j)K&iUfnUt-rA9-MFejaQk0ts%|=3dD9YcI5$# zLm%J7JX`a@J!?bkt&XDW&wl-AGxOwOzfu2#N~8Wq)fX7ccSv@L$poGx-v}HAo+NJo zUe-PTt-e-2?FMdN*;+|^{yXjO#prk6*5o*pVh{TnudS;MWaYe;yET@qP+a4ePa*rn zJA_{MNS9QH;`)w0Tvmgv5V+mfI_8axa9x1C zx3{irRcxve*f)OQJDgq094lY1{xjj}-&uTgL7?!hXPq{EJX`(~V|j!))1&lN*qc!{ z&u5Hoael|%82vcc3$R^VD`7}FN| z>i7D9uMqgOXHnNz@XU7d>-CIp|BN!?iqHD?XOvm=c<mE5cFwA0Bwbk{@mL1UWU5zjBoHp0RCuCi>}N$9dI z#j;6!u?zTIi4FbmORKFpssbD3657*y7dxL9s!wc37tYsczsEla=OOUrj{hYG&O+YV z;em6Tb3el~rhnw#GS7HF^5F3~=lNl@Q|xKyDejm55_^%eIdhP=VM|xGZu8~TKFRsu z!;tUcjP+@riFw-E#P|0bpf(D=DpcFurLE7@JE2;&v9VECRQZ9kT63x_nr;Kd%7t|a>Mdket-9|X347y@8{_M z`|3Mya10l5?>^ldF?jC+?ltJ1_MHQ#^ic`-zGuBl%*(lV9`{!0Ue@5fbGUaW_lmXO z+IdcTXd(Km9Q{=aO&6lKbiE6`RENH**C%?4vvKEdK|fvM!C40H;x{CX!}eR;GoJ!2 zw~|wIBY)b1E`4+qy>Hnx*kSuPQ%~p3jK!yVX4yBd7$~)UuD376uFf!)zlu*W?1hjy zVta)-^0i9N1k5tu-kEJ4{taiGuI5a=2X&qv^C5J|h7J+V(0v&m?|~2ciT~A(;*7Jh zbHn?oGw?e2K7g$#J{q>v*E$Sc_>`~i*UtUYsK)O>XV2$+@#gnvqZ(P=j0{=xBl3xUk6py~W&AC~|I$3Onen>w znC8srZAR+|-nZa#KBKqQx3&X6^T0z|JKDjRgge zGd5*6@4n*9C0oWrYvz%w`NURedzjy;@!ghzJ@u%Og*{c+qWRCYOFF=FCwMl*o7i*9 zRvc>{7#Ic_hx0eWtbwi_bw<2|nn5)mWQHRT4ma8Nc1UOKj6LH|%^l#T6C5qUzL9;b zwZAH#F}0@wyR{bIfw{lECJ+u4a%O^YLHJB+S43)Aqid*dJ-F=}^Uy2TntyzAo;myr zhFNf>&m47~-#o~8ezPNF?)i0v`TCwpT8gxYq2pK%DNh`F|jjy z8PhWA43s{4X1E18()p$Pk*@=sRV|rmM6N79qbg|m8POZ?#ejJ%Ji?jVtrq^Mp_mmk zF5mv+x#p|40v~o+p)V`;FmmD6N0;sWtMiPljrHZ>tRJv;37ik#YQ#0}n;G}Lta)x( z9E#sh&O#A>`KHD2@oM}G`cfY~(zo>e%2Mo1=n~8iG}RC{%UD|S!m6Orx)UDW2<tXwFW}mZJK?LT##EE|=~v7#5qL-bLdO#PMR0JL#nYi@BN>b%0`Jns|5?b{R`k7i z^tI-q?@+grap`PS`A^Clj_|HsLrD9_27Qa)gq`tyCwY7i-_CiK8XrFWrrTvNXE1LV z%p1Oz$P)M&U*x7cjrhZi%i0^az}VAZ_&FBuTuw z%H5&(Zr1n57aHbEccVXmN${)$2IYRp?)Vnh-{z;h~V9Oe=-FYLL=P#8%cJ?NF z?uh19mM-`Blh~?B^|~|?eBl-fmg5|*l5F=u0BqVb@sH!{{`ME?3%j8 zwp~+&U88H+HPwz?Q|;I_4`bH|E^o}W8XLEQ8g;H8EuOiL@A9J;8@{$;BY+>>xOM^Z zHUHBzl+=!Qs zDE9?Azssk~Q=(C$L!%$TlLr6X^#>C@1x9iPA3betRp=IPF;NNIwyHOyq)+^0NrEp>Dk2Y8QWs`lRA1$iu(k~ z59^q~Tn5gy7fE?h5!F`)hCFnRY!@3Ad%Zg{p}y5xmw?tC6QmPu|7DvIj9q~Lsr8&K z@R!;a9=A}NQL-T3XaI*UukZ5ky7*r7D$*ys-VeRD!|Q%0*0D@*BM6aDP**d^&q`-4|M{!Ne6N7QFIVC;__0i zB`eIK(gU zy)!WXW%_*p7=#PWWr9W5)x`U>zEg#r)X2J-yDn79J$GG5ZEmC;$(CZc(%Dul*Wn8< zuk=Wk!J}|E1KbIRek;ZpY%(+s0T zGaKq#iT7A~%5eU<^3?~Qc=eU#2LfZ=ICzM)#OfE|Q_ox|d$OOnb33+91$+fcNT%ag)R=WWSgGXk|P{uh2qb7aA?JItL*c+cUk8% z51zjs!G84%Mue%R>f2W;`F_b~Qtj9a|D5j<&LRL)OF zIcv(yf8PYR^0^kD6q|W3OTp$Tq76mltq-rQvJ45}kP$`|fJS4QC9O$NE7*oE%eRlY?}_dB&A$aQHnMi7H2 zZ28>-?A5hmKUx>UFX4UZ-UvFky^2rkH||dl#qUPfOTTtZV?0&JCpw5TOHKKqf2lP! z*`mPFUU;lIlRhK7qxNhbvd^5?v+{4SS`JRR z$9kPF{3`vZz5e(>vvPv&mQO6doqJ^-c>bB^RMR4|dWP9<;ll#bw@8NI^P9B33{UKX4@y~|ehi+_^)Bq=ZJOit3H-D99RJb4 z)W?8-AMo!YPiY(Q*Yg=<{o$9uEm)=NI?6-wzZQ(}fNbKQ(yyfh9RB^<-`V_oeG30- zJ*AYn;iD0Q`%{@K*xU2?W2tNTBk4KeB^T4ehqfzrQ-cf*qSzu?R~IO>Nb5(&!1J_ z>b>92T;DOmh<}^kh#|(Mhl|PYknMFP7ziC`<{N|DOv!Jnf9z z@89%}_>9>2ad;Titu|gF4xRV?*rxLu=GtX8L_o(}=&yJd^`)A-f<3w&my-wO?#3 ze~OsUwu_jP`Fy&JHfLbh>mIR@?c^yv0zPGbUjD&AvoRXI2%LX}Z*=ZtBJRf+Iv;f6 zem9`=k)d1eRP4{m4q!`Q9I{A?{}o_w$)&{)OK> z1gs-p51FIisxS+FUrF3A&wTfH`R1WN3^Na{oK2|TC83$}ppGVT=c z^6&X4z)M4Vyu3l}SPL)2L_bx$XpRK_6XE4=z>92kjsF|dL(8;AVfuzQC9i4Z5rfT# z7Q@WQ5HwIftYxgLea~LY*zm1m&01qV0Dgb5BSZNn%YIT34ENFY)BhAQx4u+iKK1KL z^We5TV!-+4fsbkX32IQ(vTn7Xb*o0&mYvc6r-9>WDtcNvo!@kA#nhRT79cz2kJvTX z%N3ts{{H6s1I-I$H}Kpft!wb9Jr=*!yIHPnY4gf&oc65w2Ys|Lh+RS(i_u5A&f&Ta zeY72YRHuIM`w~2boOL!kvPK+JIzxQ*z#S(qZ!^VL%|pl=G3<2m_Ia1DR)5NTMU3*} zN37-Y%#==bF(uzM0%ukiSzfMO#=ELYH+yD8q4fdQE9aZ1Dfw&*4+4^Vc=LXw; z@3UeypBdE8=rYkfy2NN*MEg;6L;I3?OJ7_1i0g}_uT%9j-=pZ!6i(>~1#?{oP1s$25~=brNP_52lluTSWv z*_Lj)06CoQ$fV@)BGwouv&ML-wZ@o3cJS;U{saTj5WA*rhvdObGp0jMZ%W$r}zNqBH z@+P8cMH1NhZXUlHEf4vev(mG$kfkpPU z?9Lj;*Sv;nJ+qRwi}6Xz$KjjP|Gzu^T6A;Xm2a_`cHeS-`!nEMe{7(6yN@*%#$`SG zknMl`nrA`@T2)%Kii~ja>U`Hb*gw8Q{uMVd2Zs{&j{W;DJunmlpI{S?RD(_N%B|!d z72?~u^!W>iKHhlcVTb>BvCj9=h-Civ=4ZMx;K7c;4;xc*AZ;U zfq_hOU?9ufG8X(|$3>aHBgm5A=wcs9*EH62@Gs>vYOSH0Kh}Pc1?5XBhd{o8ujN-` zlyf&CT;7DwC_4_BP)tm+qWs_XDMq}Lb*FCpSW6xmuY4cn!*)!@_QUt=fRDA8s$*1^ zX|;jPa1$}(n~2wR)6Pry&#Z&BX%6u6v-%fL)C?nzNIzZlW5-wmEvtV;jE6Qg-V4TP zJ;2{qLOf9ZHufsdhOAg2dAf1M?JBUnI~i|;v2VtvpLFiAX618s@|^O>t=KTID}Hmk z+U7U4O0nZ<^~A9~C`rCcjAQ8QcFfFu#!VMe6y)Mvr&SWK2`xaqLi? z11)@40kfW!4JtoCu>Si8$2f@&}6BwM>Xm!wzjry@8bgfuNA$CNC=;HD#V{rMEJma=@+FJ}Q)VH^NckJUG zzx3fWe(5%Fe1JY&zW!gLhXW&dW@qWXVwSgg?oYJnY3B-UeweueIa4h2?-SSlmJOck zzx7=Ijptf)Udeaq6zvgIe6IL^(;n*vZ7K7+l`o1;_Qp4@dROeHGuSKb$8VK?dza4f za`uNP9_a^fi#dmWCHq4v)9erV8vQ@=-jO8zY6ylb^b_M8>1RKvyT8n{uUER+aQ?ae zd5#6&;C}8B>fvQjM@{DhNv?wA^`6h4&S;YD5F8z9J)b{)*Iec5rgvXFV$F$z@y)8E z*8Ug=NB{D-HjV_JKuGjYn;(rBtp5R@I(~13^}g`Ci+A7k!0vs27kdAr5rg}wL)JO< zW5T{taTs`NYTX zzx&NqOK&qg#QU_8vq2L#U>S@X2}3HtG#O`C zndA9X?2PzkYv&ZBl^O+c(MI!$x1R3#jqf){CX<&mi8U$Yc~h{;e3)lDriFMf)OsGj zcX1|Pp^;JRgEp*_vjLg^~Y??>2GurOS&uDw}+>lvkWW^Ri zpPKAITO?piEJS9u6a?A|^(^{;yv?>oo^2eh`T)L(^ch30s4P>z6=b$4UcCc2 z?%|%U#e)m(3z;j)8>}`0u>}@fg)N##uZIVrk2RmmE*RuRCr$+q*m~KC=YgMlp^<70 zH!8QwnhROqx30CWk=gP+t_8R37;7zmRKQx#A18iB-n5?IF{-L`-4OhlQ;^J`+IJCc z$}~GhjVSF3_*Qi1`OA7n_{(~k-})xyn6W9NOAlP{TXFCSf7#p5@LOJG*{h!oy-9wD zC4Z5otITNOEXJOd7`w(i+9Q9VJmd175tU`V&s375oK?F6J3#FWVE@6l^CQe%A@q2F z^K3fnw5QD%Tf{Ss`N6iD0{*fq%phm5c0C?y-NtW~_$QBwP6ZilD+?;f@A1cMeh9Q2 z*>S}7KWTG#63%Tt@1gx(+7TSv9a`BmuzwdU7Hq`5G`APAx7GU&dJ-Mu(#?Lymp`kt zopw8E_j9b7!vmMA9V@>r<=GzQ1#&rl);p8jMRe{G{&al-pM8wKoqg?rk?6b}t$WJ% z$!WP19RwVgYi>+}^|b&3hr< ztKhwgvc+lm?{Jk9|FhQEMh*Ixw*k*x26=`)i;mr^;mJGfd(xR&a~Z_>HAkh#56uh3 zjfai!p=rcQGqF+b0Jgip*=pPFIsjj_V_$3Sso=^Gv9JpB%mVhR%*-6^9!0rUQ2B3tHj36U{AulT=U%Gu$o_&Y8p8RS(sv$)|N?%{BU$n6HR!el%jRex>ryt~}dlVjs@L#_SnQU9Ya& zn^E@UJB{S!iT*(&xLY<(@g^h8TEHHy2@gXjYF$lhV&|hLFBn&0P6Suo8-r%=CmVV8&^=sY?GrD1>xepz;z|mLIufN*~ki{QNj+p3Gt(&O}tJ3qPl#{KT<7w0>+ zRQm|F5r0w52<0fd&0h4vwFa-jF{xGgWV7qBpY4_o{}{8#(BWT=S58{H&|c z8|>Qx-~HFq_Fd?WC(s+r5&NHk=K|=BnhNGx^hR4H^DTPgHo%|US(SQ9Y^`it}y|#2f9X@Doy-9bcZk2!Sj(Sm2OVhATfT;<*gzk*d&#sn5C3_|9H< zUOT@RWiL7}^%>z@{eO=Bx8vVN0_xA@S7&ZdnJ=f1UnSjS;WG^%N5(L&4tu}*YwUL% zif-MhV~V~kwbo-loqWn| zKRAOq@hY>socUsepZ%`^vm3r_UrimQhR}*a`0@gtD>07GPyPI)W6kBP)ykK^-(Au0 zXE5Fube@vVd{aId+c&4>u?gM*E?tk(fJy*|rdf$rk@hM+G?NnWCw_~-d zcGeB<`I8;0_N2G0YYop{n>-XfGA(tM>{Jj1oXmQ>N zXt6PcUlaD3J!0wZo*=FB7;)KxgCG3CMYxs)s4s_@y@@jMr(0@=X zE>eTe;+Z1sg<{QHR;jj$l0gA4r~MW{m00|e>pp|>E%tv zo|}zKt<$bkj`os24NUF0f$^YYm2263y%Ddc9fNi(+oQu5ZpmUiE*z79gV-znEzgGH zPe2bF2G`#4*oV?j$W{yclU+TuK9znAL2G?|*?H{$X~<08|MNTGc^jMKec+3M=N{VY zFyb$xJNgIg`_VsuBc5XqTLNyozC>Zmt>7X02jJ}hZ#}>q3(*$y+W_-5HELuxDM!)r zS$-Fai%0hVVlHbc*O-UD9g5E_Gt7AvKJ&{X2YIBQeOuy@Yl!dmipKCr547)oP;-nC z&z~A%4-0lV{IdV&`K)WQUj1!ywK|N}{ZCYtZTuVNDfnxDk9@}bSSkA@`@ui^z{B?s z%Wu20AiwRshG0@XgiXkd>LJwmhQ(G{zFZD|^)O;+V0=s+jE&Ozv)Kyu-pn??Drc}`&JwA z1Mov^9{b)Ks7**e2K__>XSTEh<2dn!)6P)+_N})2mdqW1U*2mVu9h;srOx>JdyH1; zkpt|F?_Uy%ujQ=m19PBr9WY?q)U&1_`O1`hwHfhD?EY+IE6TG8IrGxGj=twW>zU9Z zA%FQTi;zEj!T1j3Pvdpv?-k^4Be@_&>{Vbsj(0B+O>I1Rad`mSK8CL7Bi7*^cON)9 z058O<;0a_@`-T=-^vZ-@+MAMX(QC2jg?t@tOr}>KxQSJPCupWULgLF_53Tx<;n_L4 zO|v%}dv+VS30mFSKQOiXF8V}Y$VTsn7Z-?DmJCxbpd=7(rS7jg7B9@*chOflJTe{G zp#Oe&#)aXFmTY@r&mj($%i2m_i?u(eA=BDN6=8ps)<1&iuEad+`i2_=_+vq{{~7!V zbiw269bMr1h#RZ;{YrkHVSeC={kryuyWifla@>;l+jk>Z!g&{VG%?6{N3E?JV#r}X zysO`&!=p9e<2>o+OwLbN%(}4UCU76EK{wQ*8*W24+~JHLevLu%B;A0V6u_6oIYxXx zd|Xd$iv7@OCHsR^Pq809h%x>?Xyt8hKlJW}?mgf~I^!G6?@@R|I<^;D$3=$^q}W@I)T__R8OKX{J3(HO$G{SE|@-=QQvz1znEZ zM3EWUZV`U7&v(eO`43z)f{VWp|4m{1(-^^B@&pG_vH%l{eno6k^ z(SJjIYs=Eo7fd6ksVIXyGi2u$bj57ukcl~*slqya@g&3ihZFIQRkz65b1PqL2tN7j z3HU^Lk}iK(=apj5r{+Hj2Z`7WxQ7m2*f|EeQkz5jD^@{^=p=Xp+;k%w z^05vu*S4PpF2|@glwJRDMz+80CSrPFVXqO5sO?*adm77VmUyxA9d1zN9N_*jFaFM4!g915MOGCI)s@ zQ#W|cv|?bH>{$u!Zb#3^cij#As*gpj5NrSA40u(!N*xo7*2bHV=Ly7gk!9I`_;_*X zg}vk2XeoS{W%FL8#*>Boror#wfW1F^88N$e1Ihcd$z_V;hmr#hz8^%!(7SH_z`#H@ zc?8s&x#K+L38R*hXYrUlldT2en zo!mW}M~AiCp&aie^p!Wv+>frV&!{q26(grSH`q>qcI-L216@w+Gv2kHwNkx%hu|FU zyc;rCp|?)v-M>^`*o}HO&)h$4j(M>cM^lfFs0#4hv91Jm=(w`+~~tYD=nzx!eA@!Wi)t#nv!+r*1P=7pD4m=}Ms z(kwj(*_oUPy|bV3t1!Z`68uEQ7h#<47<(AI#@Wvt zRZhLAwX9E%J2PZJutJYTx8?>6C8`wVnG zXhzFde{rO_{sZs4<-(K-qimI7l%Z=-44!gv|qc_2uHow{Vd8O7GUb6ib zlwM>$?F4sSFW52v@lMSDQKK%Q7hgU*gBX6s#FvTT_o5fG(Tgt|*=>&+ndrqVOD}2< z^S$WBeU4t#9xmxc_QbSmtY2Jwv|0Pfx>#?OT`l|C@@dhLIyWbHcBT1>(~s5)+ERKwNE}GFm=Np+OxiT95uc;kL&)a zmF5HRV$Xz3&g9C1x3bNH@Kw)*tIUb#WHjMdOq`uFr)joNF4P)=yKS9pgn(L5s>Ch-@44^ZdH2nG_s#9^*MH0BlTVn* z%=eso?m6Fk?zziD{y83Zqn(GngdOPDcEo6mYzoexyl({BBjZtj(GTI$n3DnQsgU_8 zlX-4jCe15ptl0;@>JFRE;%Dur!KSn>fm*@Vj$+so?MEG8E7k4W5#OTy9q`$GumRmG z!*a=ihyi?0>|=Yp!WwTD;XTk){GX`*PD!XgHjM%QT8ICpCA^2^bNzcT%LowT} zx(j>53;B0wjBW>BtQ`03;F&<}XlF}BezXn$-vgOH!}#J@>*PF6v9W;K%-6!4_Bl{&+(dnewzOgYLOeFm&L;F5#YO;Y*+FKT zwCY~q?pFM*ba{TX4DFtYHru|*YknD4UU4$-=fw6V>))Z+OVVC68%H&a}K$Edb51$p{J{HD01`iY3k^ST-LyW=(nGU*A9%*(gv*3)4x@-gzS0Cb{f(BxrU zrhJp^C~{WvLE&$`wtls`nRuSY6h5AawT>c;3-p~n@ZAhNXDbsNIR)d$L_Utl{(24C zXwdu_+!=m7l1rHR_)T->Fy?>)llD}qeDwpI)fHn%z103U*xIrkZ>fcm#pNluCxpfk z$VlTkK^xjV5aa(E!??Z`_sr}G-d0=Q`>uyh!rp}TU@G#fNh{ltUuCfTDr4s>Y~DGr zdH~v&2Apm9-VodacMg8m<9p@EFHrw-%~!E+<4t?aNUgpDZMXg38Y6b_{SZ4cr>xvz zWME$g<#L%U?-+rzGmlHT++?12ptgnaDy{m>BJdf;sy5hA=xfzV?RDy7y!`dbAG3N!R z(VTZ$b_Dalp8H=$z4_$Kz|MtOS6Vna5?#ZwsTR5)Idgjf=B?leI>#~413Lrz7c((_ zO{oB<;kV#KF$P!SY)pw`?}w$+r{g1?D=>Hc6!U^|n!8>A?!?@y85~M$nC%6~E5~4t z04}7t^cu`z-^9HdLynC^S7E+-%~7cIGLH-WEt_^VU|(qdLYDFVkG8Cvt)G z>L;H2YIUV!-pcP70Eg0NV%TFsd?(LQmr-BxJY2QkbOBr6Ki1ys2f3-(U;B88Rg-(% zNZ&aW9JmLZMRSXC^a1Wu+Xa4Pca^k3S6UNZhCc3gZ2HQ5!SoTsyG>oW58T=v+&Vna zoz?z!7~S5a8c6_oLXg=vy?PmJ+7zGbO*%}q8=C87Vy=g~at}U@IoV$Dcsu&7gY$X^ z`g3Iebj;(@M=b1i?#hK6pW42|=mB1}d}kqa`HX$$JoXvuZ$0C4y^#xMpShIJ_0Hv- zi)XTKrTv`O6oPZnXKm=yJ>XuN2kiy_cA#HHyKwOt?%M+gqyK5{K+rY#Z|fZ;SnmKg#n(HQ|KHa;)=PF2dqq|2 z9m9RvTSa*r{J#b5CqH-Yo%3JYp>>_Nz`gNx9cm}yklI;{b)6!#vjpoN#t(9BEcu!a z&G)ZKXy04#d*SbIV84_+zU!>tP>$(Xmw~Qf{;cMvKH%1Vk*z^mZ^8Oq;u=sG{8WIo zm*!r`Il)u2z*A3Q&nfNOu>73+T*CUxS=0t;{YB;PR{m}8AEo}F{fHA#OD+#lohCJ& zUj)#XSU=01h@Uk^+QL%UBK3ac;SWZzUo_2;hYP=M9zeWrJs*7JACZp_z&HXfV);1u zs3^raBh|={mK(-q%Dv}ezi29c@-p+I$k8_wU(nb|K1}^ddz$DyD_0YBHPNr4=E+}6 zx!Yl!WfWtFoPS5z{KK9fI@X_9`|bRy9_P+GhWkzuh4oJt7*Y*$h$Vh zV+iYJs&!4AxqH)&748>&{(b}52K@Yz6yGbDKiK&Lt@-1bFP$;u5wym!4E;rYOngQ4 z-S(al^l@f&41Hv+dC?u*v{wx0Au-lBA(kkgp!=Puo?LgL(O}>?9}~X&YBlXK8w6X! zmvh75tCUQ(E?+Yn>+-X4zhE22Y4Z0Dtf$le!`NFEz#Xi6Fm|W+O~G?rAOo?~f^nSA zAw>|g27K1?1uOp$`IEfY|8(IKVjlPzA+?-{f_V-PoIF@lKDi9u#e;u^c)mw z3;h%A>BidQo^Ma0wZ}qdeJc##$$)=P#t)s}D&+Yet;b}5UosIpQ^21SSqwRAgqu*C zcJ`@zK3*p2{DGvatnVAFKHwhT&Vjx=n7--p@vRBIkPclZ;pY=0Bd#y)Elh{L8PKyJ zt}m^>WmNBQ=_!pp-1jaQdcyZU;(7{ub};|5#~&JB1Muk}WQlb(I!jZ6HMLLTYZT5r zGmraV;`0;5{;M}|Pi5lsPH4{+?ZKk`SG32fc^-UkA?}7iU6gz=!gwkj`vozcEdejj z!We~duIXm{{RYes_Xc3zNBf`XE@<|g z0$}Zj?b_KMs~*+ukjK`GCmEeI5Bm)`xUB$jFdg$S9w#je!Eu;3;vRHhVvbl0J?4RX z5kEAap*>hMFQt8Z#qcv)yJdT-z}u`YeF54z4Lpvya}0lz_w-FbTWL>KklKlPZYy}1 z)&Xgqk?rBbJhy2YL_e1v%Sk1OmvNaXInhK|A?RrNF$-+0C*)j}}#CatH1zDORw_er{_ z>S=GV@kbHAOrP}qVTxPKr!(NY1--?ZgB71gewnC;J3g-ydh|jcB*f=}g!qit^KiG& zIJD7`ckwad=Y*FL>HG)B5_}}?`&hto4Ew$hx~HQR@yGTbv-OgHZC}l!hfsHbUsJt_ z&Jof57p?HQHu#)1js(qN@V8Il$MkH9o}1X-*&5m_e6{3bJL$f7;bYiC%X|!e-va-l zm|#8zn_F$>_s{SgTh1>|5cZVD5>+1EayZ(=u zVs!*I1|_NcUwbgocidx8^Kv_$b|&;Ut0ySh$HpJlK70JhL;Gl7bY3VDrM;mvUdHDW zqtL%u=wG()Bcu9*TB~i;N3>2Z+Qr5yv?~L1ih}rhh7}9b{9>|~#ShPj_8=C##{Z6l z_ONvd#2)QiXoY_Nzt=;bpQ*ndIvxFI`6}->9-qIaHX=R~`zs!wY)!@;pRr3RM)RUi zNpk=?qeA1%k+Ao_x*u*MxJmU)ciR6;dn0JSVg&HU%bW-y>6m0s4_2_ zw=U1I256nZw{po|JVxa8Ke{J@Vv6iTzbVJ0-y(jfFO#hmEjZw{{_4H2vHgEAY}*_?pO979{u=*+7iZl~~ii81|<<5qH8CcVSJ0c#6*Mt;e40_MkCh zy|iwMXX{`efbr%qtc`XA(?(==o3b)9kiqKxX@NA<5v&?VCiY!nuPgpOmHmCak%_-` z!#WJ^(uS>H$35EO87G)8S^KU~i)VY9z~3vb0Ea;*wr23>c#U$D5AV1IC!Orm8=b2k?#<(&MTyq2b z=UR;WmA2a#u2@cH!ERrvf#L7YqK3EzO-)A|N-+mQF{0e`0T4^mEEF&FvL zT*{ZgyCh>N$-w`ajJ`Zyni=VAxd80}uQEPGj9T%3?%}#1o|o;BFYUU^<^hqD-!JtY z@oCEOIFH&B_lhBQXJs1K#gH4&>ngmC;Q2GgrfkgBma=DYM{vK7QAu||S8W+v+uv?_k92dVQ=tL6YS7Jz7D^o zbrpJ+9G$_S`>5l6hjo<&J-hA9!d)>#x>+`-Js(%#8L1_Xb2F9M`# zm-nLyzOw2UHeV4xQT&C`23ixLb!A!?c^W=WdeeL=3-iD`!SSdcgX8Tp8Q6Dh@j3Rn zkZt7HY@d$15x}#wU)j2I1m`zG0TbiGo47|F&nU+k8?50{p4$SBnuk1n!LYpO!tDI$ zHD?y!d~q7iD5ppFKbwJb1DR3$o$c$T`ouESt7DI#<~P8y>t4qgW9dZW2-Q2fdg?j zpksYWoKHb*e&P zN9P#8U$n;Y7UuV?mOIPnyz1mg^lHo*etA}Y^j8yb-^eJOeaXRd@W$i$+mm`nuY!;4 zTZ#SNJp(KEAvca?;MsV+@NB$(7ex1z!GC&`ZrwX(LT*RFgxuZqJYx8M)5;_8Y|tZd zS4OXBdyfGAo{GPx=I$GH9+$_Z-!6@I;raHIi;(@npBSrC_MeAmsL(zc+Ed?cSbnreb^&~_C+=T4BHA(XNSwXt z6-|ZxTg$LE+%sk6oSvyG??kO)`QSX9jmXE@2#l!%({K-seKw+;K9Bxsy&3V0Tn%f+ z`%7__r1i^!+_o|K*pryLFhH;2V>sJ^zZ(bJGuAw`4Zru|H_mUox$Hms+V3K?VQREv?S$NY zEp#88wN6d@rf45Z$2KE(-wQ@Atv^~^l~!H)4DNKpe$Uozk=(WyXzyg|!dBdq5nF>k z2ZuF-D_hoLynGGoGQjY9pFPVj9T>~dHjJyHZS7b`679j4$^d9QhXTUc%4Z#oD zmF@v6FN`pqy9{fOD`AEpZy$7SWjfP-s!X;HG2>s*nK(|RGtJLhk&n=PkABlQOLA$R zOuw-^dnXJhZvz>vKUO|Emcl<|0#>L5SjV^ZRpx^*X4I_@;WJtSqu*1dgFayxK`QC9}m zTyX!^W4Jf7xeU*}gw30K1+eX!o@s*r!{1)UT_qC`o97tJUC?iYye8JH5Ky%o(p z@ORull#e?~Tl-C1fVHBPR|%W5H1`P%r+jBmkCLr)_cHdp<5_-b z3(M>7d}x-Dz7ToojAo3t&G`Er_&)XzY;C^p9NbH3^}PX}7>KoAn%_=bRJnz0vIp2# z(tHT|(({(v@m=f(Uik!lHjut>$2)f-mNOW38?f6f**n{SP3xu2y(UHrpgW79jJyTk zx8OOR!2si?d~h}H0pGP0TyP5R)t=Bde}OC$HW>c3By&C5vkmQ7Uw79-U5MB7(4JPv zY=z8q*x%m@nXdJ*pv9+n?kvv7Ch+M7aA%KWaBtO*&}aS7XBcPuq@&N$bGw$N;w)?$ zesJIR(hTq^a)FIAaF+C^I7@m7&XQgVAH+ES9LD)=80TN>9o+}6pt~LRZNM`%(~V6b zmV=Bn^ABN+g?~2T{c%P~?jW4W9NafA8b&`i-;)V$>lSUoc-gdaGRDIxQJQZy_2@zO zyG7e57np?H19z<%4DTrORN&Ej3J}zal-+hEdayW1JiPd?D^!L0;4odC`%WOUJH7+j{&o zdKL0q+V>JV5p&FvT+AU;sylB$oPeWS`usH73NEKSi_Ti^+lYMSIpizbkgvQ(`ARCV z(~!TUBVWmg(tQ^DVB1*61mr}xgQ*|xU>XPB$Ngq|zs$?+27M12u^-EeN7@UB3j**f>%O|b+~MYw_5!rG589iRmwPcVF&&T3$D`0wo_~t{ z8AC7+UmqKRvE4d58n{0){G5u&aBDvj-8qzAowYAp@mGR^N;4nfM` zpQsNkNYDqlc4vg{BsRvI%f5tfqCW=Vo{VrLau~k1H4rh_J;NdBYd~MGdGHF-Ap`x+ z+b+xVZGXtW{Vg5I+kcg^{Z_4oHD0UzIH*n8Mw7hud7Wpq|y&-(xbXs~xaa_$1;edPOmd_v64#NP_=w~6@MB=$Gt;scP2 zkEHm)9lWaxqI(d3?FD(cl-Cu4Z)q*$C>mpspR}|5#M=9I%2Qvl^D`~Tr6{LbV+0qr zP(Fpci0-PV97Ft{FxKK3d6eVRy&lB>ZO8@JBS%_;|L?*7ci{hYewf}%L*BHO#z*|j z!5G=}a6z;foJV?LJc#RcEM&ApFXYI%Vn1Sr&RIoxWLoum(u?ku zU5~TkR1dQLW}QW!nxGGzMW=JqLZ637pP`mMqJBYou`}tU7krlVGE%YDfUzc)g<2Hk z;h7e=-(})Ts=1Jz@azlNfbVVPdn(JZ7J+>zJLNk=$Ucd8hLAqApYmo)mv|i|es>6R zV)^b6x%Maa^pB-J2dCaex=Q@jjh&yc@Asws1Xd1^WA^(3Ilwrh^U$P7=ff!_@q7Yv z04rYz_N^A5?MZnJ#%lWPKVhGT4Wsw>|2RAPeKGbhW4xq0(P-{Gr*D4r%Ht8UG*|4G zg1j~uZGp{N`rvH#0MyjbmX`ZcQ3ptiw&&3MsJTe_&KCzUrr^C~`Of{=lMv5$;47pX zojKt%)f%G=`+puOh68XyN1!XDLqr7seOadbku$*e%Y7>ezojt z-4!hC`_~f7zKPG{>0o<5-0OL$AJnv04g*))`yIr3UI0D-eolJcad)+Qzk}cvTHhpo z(K+up8snk?E@S5%EBSdx{Qg(YJ3d0~=Vx`~{nr2O{R7q0_4f}Hzz$a5I`TFObK&6g2XHFS3}gL8 z{(K?5e>lTz!t>|k_e%)>_0f=ftK)rqzQQOOZWblr0KdX$b?Z|(0Ph<|m`x$0Ash*t zW%GE>pJmXI@aRDnA(V%SfMA9|iZ6V`&{ zJrGrx-*m&dlBxKaC7p{-JZ~lTN4*yP%DVdp`A9SIEclK%g7TggyjO^OB3kf%5!Mo3 z#Aof#SbL6SZlO8>?Y)Sv7m?q>_k=95Hg`VGXHjk<>I(GR>I)uYQeLu>?8P}mwLb#I zS>(RX{3I3jNh`izMK3iv+ z#hC`{{&(xVb0$CUZ08H|dFOb(z|TAX_G0i2op(kKBkowinv|U{z`m3(r16}J&L7HW zy6LW*f2TfI34Mkt^x=7x*h4|N@(J-Xb$l%^1LH7i{#n#N8Iev=?`Qnyalf*~Ynf)o z0q`37gz{fC|7Dur6Hme}^f{UTreIA#=D=>lg3)}O!=?Fqgq}}Y0xrOO`)}7GM;icN z21eE@Jbwm!NaK7N_%O?ebUuLn5usj2G=$m*`FSyXmCm`4FH(+Qg7@2ChxMpI)gk|* z`8&-;=q^X9fmLHXj!_)}++K+MlQ^~zHlkReImn)Vk)iSuZsxUZD- zpgja>-*=6@6MEc0df-e4owWpaRv3tPM=T&mrsp`F0RAQ)5V^&xw_A2ky#M>)cD_Dv z9O_xy6Y5#paF^S&_?ZD?`o4;sB?K%3SnGD7&D+qY+u5B!6~%SK zO(BQY!dlh_%@(we@LSNvZ*wvCeH(j=a5p^r|4#HXYK_IPyO^)hTGCRq{|U(N>cSm& zcwR2uw@P!ZIG3|_2dgK;r61j6u(=hMLOwD2B9D6W8G^CPKBTCoBJ(dDl^)Q{-M75=2^r*5dMYwR4ijM-p{jY zUc3)zukYOXgAT_as}IS#G%vSlj1@a1i|%k+kGpu+V;zgQiN=%J7$`6t~?9jRT1v96rPI_$kT9k!u04$6^R zIJZ$8#%AW_(phI3(_)tfaTjXx~P>o(?}i+|rr!AHiOPLwOYZ==7G2c+L&^8Gg@!ZOP7a z-;Q)v0y_lkEY!{m5#N^mfyI655y-sfF5I(Q0Bp=l675X;c8K%#+-8kQgYkJo`X}mN zQ(#;9Jdt?bSp+;u^%l}~He%&5%-K_nl6!+j^Oj;GWhK=V*lWZDy$&KCu;#iMK8v|k zu=+*#znrs>E^DC+?N>i41-_{Hyt656|A?KR5+CBs3F<7V`;iyU$g02^EY6?IqSrL{ z?2qT4;pY?L1bTfuUgL*e7r|#zOCq@^;fG$st~1EjDbB64{=w>JHhjgN^Gol0kNdpl zh`(Fyvulvl#=E(_Rp(b%FninW!M#4HpOgM+`$^xl`19M+7FI#uw7$?EKj3G^acPCn zA3wBqP{s7Oo(EY1y@@ACZ!f*(aJ~M{{Xq1;bv{bc2V=_+=(H62ltLex4^Uo0u} zYF|eVMsux!n8QL>HiqE$8q{&>p-&jP&c+XFB}wW!PP?7O^%LifsOAce2TqXT;@-4e ztTE&gZVa4Dc{#O}ev?~^_9V0K5Y*7q@k8Ss**CF$r^1dgdZr@USD1-s*kFt-!gx6> ziG6#j?Caydl>f^98^&wdf2)}P;`x2YThH%f{v3%cJ_$eMzodWaa`*#&*1#Xa^m-Lu zHe60%c+yMQ&?EYpFy`SNFzvIhqw*FM_ z6#iZB(f{APX4QVlzr*nBX6Q?6mBODX#wfS2>yu7DzMJbqYb)fJ;$Pf9VIz6{BMUyB zil3##SI{R5TxOJ0{2BWTIX@8(y#u}c;`?eYcTYn9ty@%^cV1T zF8CV#9b8EM5=8q3-%sbyo&F;D<$Uya++V=s%wGhblfR_qN7v%4y=)&Ei&jBjU%uw! z;h-e`5@qpfKi`tZ!b0zjUq@W%0o>nWqBDG;WqbH30t3QGs^mmF=dhT@?&%zF4 zpKEV=AA4G*&o_jzUzNrk+T&`y&p(fStyVi2ZbcaTUMY_we`EWZ*q!Eihl%&@!80x? zpA~ubew+uS`3>Fwz{c2O!(5Yc)c!D@3wtQbFfm|vCO*G%3Y*WL7~h{s?Y%J5*c{2= z?M1C*GUo9is+AZ3?UeSm!yX61sEe@q zz4$!pA${@p5NZ~{YY3wbLiUQG=21kiQU74;8mM*P^?@+z9+WQ?TAx1RPPcQA72PNw|yh>;xM=#BI1m*pTNbrFgEfu%W!4zZ-no5zpY4G;rE1 z4r?;A-ksx9#N9t6$|;s@g+J71oX8QB`f&v=Z(zT+cw`aybrEAr&~ z;eYo(m}%VKeuQ!VaYwqJ=lWB~KEUO|2iQNsXK%2zJo~(3?0A|>j5n*$KQw>1>Sxd! zbJZsJ@ND#F{s*JYmR^xs@wxMHA28+TK|H5byw`-e>tom>o?nO0X53agk$q;V*Jmp7 zdmm?RPbq0Ui+$#H*Jth^oW1?c0(@o+`^;^w&kQ2HdY=thk=haLGq<`vlTSDkjyGFy zk6oC3W{K-Fvk?#Z+5LcXdu@OAnOnR*(~u9YXn}wCVxL*;{h7X}F*~KR&n$9%2KpSx ze<#Zm zXD~OYp*jU}{?nW` zP5FWR)AlFKO>2yjW8(hw-b~A%>gYFW8t|5Tk4fuF zgN}tALSb|IOWfD28cPk;oaaDyy5}Sfx(5(XKZf4)dQgUerFt8`oZ~kEKj6l%$gj*c z#{s_yz8olLwUZigzKzy^2p{7|=OEzI>nzl_p=VtGt2uu7NCke$XfsO#zqPDF#DrB_s zejwhggA95-76zm&#u zAD^77A>&+yjNb_x^}4;*)92xn=V{=NRp8$)wIQr(1AKC!DVGnN}V?NnUp{wkZ2e2OR#Q{I|$7eoy5Mx?04){QUKZxUpk5c>O zhZ^{G3jFRIKY)C}&nN3NWNc8#IM`wFLfD5VpU}X+M}hw#$M`qBGa`y*R{%y&A2U)7t~N5S+CGl_QfX@w)kSN75iTJRvWU-s0Mz80{-!k2##m7Z+>b7b@_p1-_kg#O=@Q179rCz@MzZzgOU^^oK7_ zQQ*tIm<@biU#!b9bAaRLivxin`{GKRIpkwC^Tl~W*FH;Kwidp4qC!{M7t<8BxIp0B z`J>a;mDy&x2L5MQSNDqh9F8AOSMUnPj?Z!Dy;t1J`oF8dA1LsVKNi`!m$MDv#&5Ax6k&v=4Au2`bOyxmP6aV~s&o}%5dZ=A2N>w`Y{ zf@d$#z&}HQUn2S~Q_*km?HmpK6BYRLIetC-qRPj&Pt=f+rjT&~ml0OQKYTk~1OGGZ z@9>O&sSROO8{prc;hujl4v_u(9mr7mH~gg{Ki13q7&w0Zy&V{`e~(J=$sSzaKo57H z3ZHygp{wkZQH4Fe+{5bu9{9p1t2OXV1^&kzzh2d!@X32M@E0raw{v{jkLbx&;M!X> z@QW1qPjdVsmHzO@*&6s$6!`Zg(;vP#Re>-2;%MOe_+m|d?~r*WaQu8R1Ps|1S6$*9 z`{#3A1NJ;UKCTI09H`J$_QiCCEiUxI7rvOGf&V$yy}e@pOkwMOsyuPD`42o(!7J`% z{ohmIhlKu^ryyT*=6%5N^T{Q^kbScKr%s>T&h^dn81sZr-lEV|?$aWLJ)Y$F(mXxx^TH=*Yv4~& z;NQpbOI5iX_;IQR{%8gM5`pimXFA&epB$|rqrY254b=i>a~V~<4OlZfAk_j;E6FyG zmGB4P%!pSlz);{%mD(W2Y?lo9q@j=@`(!)T+GU@#aHKpE&wl+JckGi-lAd1k_4j}w z`((cDlgu6`a($b6-NwcwSy%XE1oc{yGKz z=dHXRz}J0b{TV)da=ixrDh2*~96v18Gu<+B%vBmPZcxa0iOb02W0eaZK6#@C{!9h_ zdYv}FCub^T$Ud1587iM-{?b2WP63XePmTtL?30h;TpORaGoM+^^{waiK-nI`C$km0 z$~@UmVUHq?--LB$%EM%Q;gkI}@Vl_C@8$DTguOlV7d~ld;I}LAM|1olKIe7mUpLy^ zi|0=yi`lmo_{R$SV6EQMKH%U64gBX6_yJ)bUN3d&4}agHfxkw9-_c@mLRe{^QD$WV zzL@=6n7;*%?CWK;9*%ly3)VI1xga0sVz2TGvuadQ2Lkz0;>L2Ag@(uVy-X(1ywc&3q?T4`))4c=ax8o@m?ct7oim8=>E%a=`v=Y4kppiQS^NqAn%9gqGUM1e!LYOIAgl@Dy zo%wxew3!ckwP5d45PJw{EQ#+S!2WKrE<7A|qO%}kU6{4S7-Zf+ZNd4TCaaF0OXs%& z{f*pwaB~XUM0+`cAtN_%rjeV1Ho4^2<(Pw5zhnM|JqC`kY^1%%fZczO*U}z?8p9Z7 zPAB;|uOs9(W6UJEEwCBMWj2KDR@6qxrojkwxeU650$T<_x0FJ>UIcx?^C__5Y%Vb(pk3vY$)qIh{oT@AoHJ_zFN)xo~ZLsTj#%GF9@AePSp9N1f8)Lli5n>ENq2) zWolEnzOt@&U|dbq)um%7Wd2!0$7j8CEIG;iz8QAK9_hGUk(-fSnNA_AKOZAo!KO?% zu4g{hyU4b)CEHfv|19rUjtAPp6*5OatD#k;RB2l zcw49)3A!K1kMuTA(D2<5iubP+)6MX=JHXu(FIo715Vj&NDgYM+lh}#z(6ErX``P3?^gQY8!9%J4 z4V|+?=HnVV|3;zn`%S_x|L=D8^FwCeGehPQ4P9p|bbadIsH?V5L_+5I8akh@(0S>9 zM&|~jMB=K#-e%aTb3=T7FO8>}Zk;PA2e|k@uk(TY$szL)?zWe508gDiUgU~Brt^^h zhRzp;%-1w@enz45;g~b_@>OG)#BqbbYw;Y5#x3yLY z$G86zIu?e^Uu)?2Glh_TTO6Z9yh+6(kxc_GsSV>tA<1A66C9t2&Ot+?Gv@qU! z$egUvr=t{ox;SnxEAN_(y<`+)iF4LL=rfW3SJ6HQufBUCWDe1=OHWU`3^6bHcj{6T zGE+2k>A)T3UVb#@-=|AWe&lrXlNzT_$N7-^H1XjM=tB1rIpcqz*_(91xuhbBbA!*j z5dUm#8-3-9p)DbEJIUkcJ5YPE`3AKx!8g?;kJZNF=SLX-9{M}?PvRLS&zd8$wJyj@ zjB}U#x{$e+$+vkX-d@hX)ZV*EK3+T9JJNiI0Pqpu3gP)-70kbN@s-OP$eAG|bIBPxUi|#!fjD4%+CB4n^MMa0{ z-WWU!_dt0h$Go$5VC7nzumzu#(718)QNP}31CchWoA4}iIYv=d-n0c@- zopY@@&*`6wxbEA*g)09X1-%(JT5AdRc|@)^@%fJ+SN6|3e%`S#ZhLEg4cb#9`F{nS zU+d?zOO2O*{&1tyKL!3|j$dVskL3Re_}OL`?(moV-xGh20zX^m|7|?JocM^Zb`AW$ zDDeAp{8D=j(}|DxdRqhkj|zN4=#Mclkjl<3JMoRt=5reOzgOVz{j0?f@L&5|D^(d3&#(u?2k3lYc=pMQQ%i5vk!RTQU$)u3ugmA zffry0!3#@k?|vfA3-L3cGB2D;-*@r?vtyX^LiM>8FNnChp6i{3{EPE~Z1)D*uQD8Z zC*y_Qkn6<@S8#k5m!ADP$~;P87aFIC?`YgQj63k^?)_^K(yL<9QDa{4cPl!;2Tr;`m`Z zUzT~Tg7W1raesX>Uie6XKbYf}!v3E2!Fc|$2L8(m{GJ@Y$Y;FWu7O{zz(4d6&-bxU zqTbGBoi@UlTdg6(RLJ<4%g9r48)Elf4gAFl{OufHX(Pn$Eed=&c8h?oj@{d8pMKmw zb}ypu`^4^BQ=PH<0M{FPmugjG?zzxAS?rF1T(8)@P4ul#?2c8~MULG83cJr0`21Xi zSL`0Ifge=hpU3g@d}23M1AqT@-rR6H#}A`Mp^Dv4pG?jTyA}8+2>aOkA)RrBT=^Xh z{1+7XX~I4#Zb00=sDZy$f&bZuJZDgG8{&4I2L4I~{<|Ds+Ar#~58`%}0$+~X8-TBl z+goe5t@n@HV*0*E+!CMA9Qu+f$wR6<%}nW8C-+bQWM1$1kS!*9Ug4Uuuu(&NhG>HfzXuL?L4jmr-wXgA*Uz@TdlUxdQ($96yY_q^Yjz3(n6@ z8IjRuxrU5|3K^TZ3~_GI)eqpGs}=Y%|4avd0{=iyF;`zwyJlUSf8uvP5Z{OzUIBgI z$v>=}Va`9>Cdc`wf#Pc!*ISya$L*5B?}9iRdQ1FM;Z3P`hy#u z(ZGK|f&U4|FSToIPJD2~?=H9u$ zyK9m&ZvThtokeSz33eB8dm;2r7PmQ&>lL@9qF;UD_DqFcJY{9k+{X zw?F0|xAW-xK5^S}jx%nbQ(}Kkx4HON_TE8u%Sp=O=q5j^|^9 z{p}j0Gp;b+?nB)+887To;13Y?!FXQplaKGxkg-J}BSpwiaT{WHs|J3h0)OATf*ay> zV5f}`yHyH&Id+!=Umd%PYTv2ykKIM|eV^DpG|?HmFLJ$$?fn>Wy~UV&1N2T7yH`N2 zSM09i_%u%m2jcq~;xa_Oe1*a`a{T5gY`>DrV0%Cn@td!KKU{%-1IJgyFX|a%%n=g) zw?CH7?n`TPN4fE9XudL&sFjReWr8wE^RAcMTZ_7kcx< zI7x;We_b*VzXwq#PR0=*C}a#0GWhuG!bkjmsDWRn!0#^bVW+UlPKe<;g$y}{H$a9u zhHt94KBAFIGG7WU`)v&;7pzsG6d z2Nd|zgngv^*(C$<8_e&5t zZEBL(eS*I46T5>8oU!|9WAfNt3%!%Y?%j~<6}#_ne81RTsj!P2yVoo1{vyZsi`^SE z@UKwdujBZBu{%=(KVN~risSpmZh;2=2nGI)!u~$7J5mGxXa)Yygng34?$H`DIv04y zZh?^D6T9D_mYXbgn-usXli3Kd+pNHsWA_cG{ss{eG7f zy9K=7EOTZGzk_TO^iCGL4@0h3?6z@yzu0|5VHY`e%M^BhOW>>KM3vcQxd#411^#A^ z?-#pQYv4~;;6KXo{bF~92L3n&{+&YqB)RiA4H<(JGOiYVz-!L%p$2I!za}5!Zk7|j z!E3KTcQ<|o)dpq=e14a>3mgFLHAe$~ngag;VSjtXrXo$GnsIY9=C-xndni`V4%T?-lXT3Q#W zAa4HbZHpi3`MQf6AN&6_@K-AE-xc_LpO_0D@w-X`{{{vAOB}ySr9a~LMh*O#3jFmP zpX$P;c1_0V|CsyE)R2*{kg-aVQKanW95Y`-#&Cs<8-xtLKIra;Y;%ML{!t42nF8O> zPKe{96f)#EK76HL9A8&E;bH$c-b>&2iQ_rropF3J*In${NU#ly;}+Dslg06ykn0u4 zeL23ALp%KkWAIMkCyU`);CsdJcYonyyq!ZQ;Afl9YT!Slz;EUFeq->%8u)i8@c+#5 zi&Xj}hRZbYuTtP|68bxHXs3-3!&hm@xJV)6VbKRZIrPOE__+%FGJ((cZ6x?;4c)!{ zV-5VU0)L@oBflIvtdJqcZzg1@bLd~y&UnZ_eh<&}kKY^5cE;~nTz9coGQl=1eyQG_ zEPg+NT(9^YENt(SLw^kXWbykl@V(-2>B7et z{G({HKI{_+CjDKJw>c z4g9GJ{QEh+*emJ6N9<11z&}lae`_-PVB8&}z?b9pIN&G5ZH+zmy|(ts|B1(K{5&$< zZ$o>W>AryO_`ZDK%}qbyamvo`i#hZ!YiCF};vN|quf<;J!*g8m4?X&rVh(*H$F1b| z5uC-_FU3FmJgpzI^85e_)`4Wc-2Q< z2EH8s0>7ugx8pwnAMvk&U#-AD^k-N6JMk(0HSq6M;Qy85SK0CJ#HaYzz`sR-{|d*? zv*SMjAMvk&KU;zSl(3H-|4w|0e+~Sp3jF&yz7+pXe2RY!{L>Wpw#lHgI5&ytf z$Nx38S3c;De>rZu)AyZuH*2Se+q=%P_(1sm`CRW}_zms31TV^VX`tFy8uU&Ux1Sb! z$L$%SUwz{CGt~2v#qB%5_lnySh21gd;p395KX@VAd{+biMFoDk(BB@no%o2`mo)I# zDeynvY4L(z+^*NaU!}l*kK_Br?Qb;jZ&cv_iR0I!K2l}R&7C$v?B1v$W2QpJdLe_K zb4c*f3d*~Grh#9e!2eA$8zFWlDDdUj9SMAO>|R}a^J;hO%47Ecd|w{BmyL7AYBATd zi9b^-!451|k5lMLu_NyG2q^3@P2k&ez=VFxHd8e4J7#;w>KK9V6HEJ0A56vtyA=2X zIDU~`BX#PJF|bhsf2#sNDDZv8z~?pat32_u%>8eI3vfqYDey~EtUaz(_LcHYD9%%l5U%1I`Fb_aOAQ}F*^NG9%4%TwhIh^;#{ z+H|#Nn?mLvIern^5mxa7;_GUK3^~50LxwuO7S^u$ojbndv9W-@?=d!#ZnQ46?Z?h| zTgG)S^BEh@hTh4>#vzdFmD66!@tME7$6l7xo}{pg9M4B6Y=5c1_sMCG)WH8|k#{_g z7x?|GXHC0&6Jz67s1qiO=f5fNhjRQojDnRLFRj%cz2kJe3UO5i2!hT(6MvBA3x* z*T$V~Kpt^}2L2Ta{B@F@!m2hPkGMi1LyqA*$ViA`=qhSs3u=FJe>{dg?-3YH-*?6^ zYipRt@Y82HWBAuxcX9s^_$_W5)W&LPj(sxpP8P#`AlEB~e=cnA6T^KKc9HXlZ)bVO z@I-;{6T{!3o|r6#TNL=GaQr-<7;e?T->JYqhU1I-hh+ORjzbLpSp)xB1^)N1Surf` z*Ky-{Afa4g7!p!kZVy3w(P%@5HD4AN9&)yzn;# z{!orD)yACoh}*ww;J>QC?4!h zYj0=a`*Q8=i8GvBP|o!%#dDkz`%-YhIE9{atPWDx;c8(AXC2jPYvkgCG-PyB$e8Za z2Ehm2HSiDq+?x-^ar`PgqchP)3?K3O1!|zl_~1hYewMHiYW;bt91t<}p@xh)g^cc8 zMwma_*EN27ZMC|09l{=Vv3tRE0u@98)(# zhBBr~DjT<(?wF$SRjeV;qwjl+w?%xsZ8_Z;V^4D3i}{`TvTa0+&4%8|#@i{7>owlq zCv5LC-cD86MULUo3fnIc`1bxIXWv%h{tpfOW8L^QR0}8;_cR&%Jg^c172ab1PQJ>(-^_a98A z?@QbhZzp1ta{X7v#<_?2<|?jt{B!s&IH!W<<`bc>;2e_Yb??E+ke9$Y4EH7vTo$Vs z%SS2fAal)+6m~9D;%1x2YTz0Q+^H&Da7$1Fci&9!*dMFH1*d$5nrX6_e@B6Pq6!yW z^1cS{pA@*6D%`r!X1xaP6AIifwp%eS`x)~GaMP0-xc4e>|Ej_TCq1Bnd#eI>hYA;5 zv{VE4N(F9>3K#sdKm+$e1@1!}m(B_l@f^`*YjDto3K=p7eDQ1$7e2V)UJd-k3jFOHze<%Kf)j4hz%NqZKbg!vh}+o;d^v8X z0AC%q>lz>Ut$*C+()T^$wur~==F^;UdmGnVod1^XF5-49^iCGH10dHcZs&@A_~r>NZ~-f4u_#MS;)Hm%H%64L4}uU!lNX$MKWRU9QlOk*AQcQtF4Wsvp2Xc?uaa2MvP^ zH3vP>c;j!}93-@UzW58u)K1@cVIm$_49jrn5e! zj^@0b?snvue^$tm`}A4JN$6A9T+B&p8oO4-`!s$pf!wES@qM{ZdnNSg{yK{Xih9NK zCs&_7rqEO7`4tL#?B@6sLshBP{zA7cMwu%#Wc*4Y<9Yu!us*#`1OGAw{$m_JkJsT{ z`h)8)*T9b`@b4BjlIo{!898P|L&i`~8Cm9aBm?_AsYYAMW2=b$ANxE5);>>{Oz?9S zlWFbqL>Din+8An?2nh%^l5{}mysOLxzXCBDnG0gM8F#?x8 ze>!A-yUmK}zV)qUW`~?d9XF0yutCe6M_~01xDh>RL6!;Gd{p}pY zsXw^kVh#LU1%8>p=kagOtbrd^;4kF(dCol0*#_`HSVKmpLdL~hMv*f2u zx@q7axWwCsek}0O1}TSf$^Z`>K>aou54;Zu6*f0`tyeul-}m8${--+Uf3cS=ZpgB0 z#d5zgZdeVylX1iCkn6<_uXB9ATw|%iE^@zKsjz#Ez*pHFbH8~S_~$F|9~AifY>KO2 z!3!5?;GdzuFA@0s*;Fok@IsCT{)q|rCHy@7e1UKCLX9-PugC{440Phxc+KzA75Eo& zd>VU-Z0>i;05_y-$oOoAlN&@Eazq>WnQqv~iH}_7bJSubZt!fwy9)e)9KY1AM?3Ms z4ex2-zofv=kZcrI*$Djbl0t^e59=T!fghkNuN`F8H6Bh(VfznWwD@5=-%FEV`v$5H-2=TPe(=1H;U>tH`9a{j>B5ta3fhDp!T$H7uvkpii%7GUGL@IN!JO8deZzl`kio z;Pv2MMl{u`*8+!gWvH%keG;2YNwCT01e=&XHkqnnlhF#BEa5h(N6h5$x?U5-57nJ< zcH7klu*azh_K43LC3_s>XOBo-W08kF*mNw%7iad|cF#5&H1MBO;0HLqRL7F- z!(wZT2L2iae#i4x%m(Z^rxPDzN2Lb-G6nuFj?c~v>H8iWMC;L% zzZQ;gj$6aH?rUKmUQ3tl&p7B4)a{aS&<@D;%3phPd_N9)4fx48=o#R9anRwdRt!t) z?XvzAw6?iX1OIml{20eq=1&;kS8L$kuE2j?=pR(X7dU9C2L6=_{2GDplfTZ>z&~Gs z{~*T?)A(zxl{oERH`=^F1OE&Keu>auHMa%7_S%zur}m~K0pjNRaVj3JFSU1Wq{*8 zL)~18GtYLsqmXeTmr(>66301ZfaBg#$dEbi1;|Lq#epN%_v;%o?u>Js=eh7F>HAKO zV|o<9#>8<$hsQatf%^C#TP%(!v*+k>y|IU*hUVyxLvM-WJnwe+4dfU^Ck`apDXY;2z+~v?!*Vj{XzqOq5}UOj-O}G z5uNzpxN|h{Pf_6CEcCZI&WUe~Hc!>SKSqH+OXzQNoD&}$^dk-Y?=SF<-$_D$`@D-2 zA34?!sB0&S-8KdOD1qO{de*Ir8^Aw%H1OY2;P>PBVP}rzYy=ahn2^{g1LWax{ z_d$l5BVK9zt2AhR~1Lx4!x6c#9YYr;)snL-;X1%RMZqOGV%MaKsrJ_$Mgv=W+bJ48_<2jyO>RKTUyufv^wdZ(ef@ z;m3L8O&=lBbLcvl1eMFoC3#}{{yc;zTB zY2dF@;D5eZj~~`4WXSxm5;D~M@OtC>rT+Y|gud^?4_^;)^20W+yLk4JY#Wh7+yuRo z@x#v{*NY!EaD2+&!m2rHvCg#Uu#%zj@tehtkbf5GwdILDPpcLE>}YRCsi9HW8%-MOw9X87lDd{)N-N4W68 z5#OWsC*oJ7f2#ujRE}ST_$}q*qe})jqE$o2PKAtPxC}Z6ApFQB13a-)Lq@Ga#&?^n zIIdFl1M-MxHSix&;I|5VDUWcq0eQqj3K=p_ltPBg6BdrBb2K!*Rbuf3^`+NdrR(VX z5>E&{D953>#%F`$Ji&ZuGuOQZ`*JCd5TB=KLx3kLsLpXU^cFlpa=p&jPlwzDo?!To za(t0T$oMP1Qi~wZh z@v+9$4sgWF8Zx2^8DBnYaYUHU`CRzmh-wXdQ-S}nz^8g^%&ND#WJE@rriP3~3K=hR z8PpeHRbPOI7Aa)NJTwb3R6I1uh&4XB)SrhgpznL|P#$z69@?4Zrrm&05L&qv?Uo7xdaSR?hP6I!nz@NtP{dg!v1HWUcH&2Y=_{8$l5ccump+*h-tqS}g$EQ4^ROS1~Rkmu#s8q<B*W^WDrucvs& zaURF7=XDPkKJt~rs8=T&?>|xC59jy+J|}bGBVUPW;J>E8KZ@fw@iPl<{2cRj4g8G? z{LVjEG29fqwU%lUE_~z>H5&M<75GgYzf?62Adh%Z1AnOk{|%wP%07tQ5(T~-yYqmr zirqU9yU*U{AG?>*_kCh_ci0)b4|Bc6`AgaEVxDm^^iCGLxsdA>yJf;I{2mS&U(7Rp ztgwq5w_%0d7Ycm4UmK(~e|A=CkQ2YbYt6r#8^3~T1=BgcG`>6W5x3nn@DEOQ@dCpi z$ML1{-HDI5{Q@;=i5EQe|4@OS#qo>4-9`5Jn;--Ce`?66Q^@EpYy=rRcAfZ$-FglD zClvT!)L7gg&R@cZocM^{s0Mz80{BpDXm|`!*8nQ$u^t51kr|=lE58-;4_%9JWXUf0hD28rR>tBiV%y{wh@9%ltJ7_)7jt zjWyo4#Gk)%@O_!T)(&*?*HW&h-*|e4hMp(*>6sa8T;QRn%wI>)_dWP4%=v3Yg5DQ# zy<7OcvjqDx{>p^j$@uFZ=Xmp1uIN8IPjbc&`0D^_%t_-P_+I=K7Wk_8K^^1+4g75i z{B8o@hrjAH@HZ&%4?e?l03ZH(LIeLE1^$N|pT;lG90oOt3Jv_575McWU)(d8;6E6j za?C{<__GxFQK7#NzZ7cVPg3BU0$*hx@XKTczRWM9fUo42-m%6dx48L5j@yCseV@2} z_(Uh)6mz|$`lTFKEN+j3-pS%N0J&ay$28HeK5?6(u#22`bWHS)+c5&)XMVE}HQ!{s zuuFkIK;ZktZKDSMRt0{L&eN(-to%^D@NkV;cA?6!^P2egJ+i zt#Qac#A0`ahKye+WIWGhNVP>LK5~QWH1ID|;6IkkMu^?Z75H-OMu4x3-B7G?)nfnH z&8F}B#O_lkIAixlu6LGQSCs9-Vs|9;mSWfQJoeF$E5~jjzc1it9G}IGRdcG5Y6lfG zXXxX!OO03U;F}4~*cJE_M8DcKxdi-d^IOznrP%evZ&u)+%<-j~q7xr;h87L{Hx>AO zlj)Dx-Kl|JtHA&6DW22YH8ZFFh}~y3@E=m(w{rY?8nf*6Nv8~qyANr|C{@VV$z>GT z{OrU>?B1b)zd(WiY%&`mcCS+4%dvYA@DpMedh)tNB-Z%oqIm3j-ldR7-*?6?YiAK` zOY{Agj<;f0`2L+-Z}7crj|Q6OpACJJ#q1Es^NQJPy>VHr4pZ1c9%p+g?0mTrH`_c~ z1Glrln*$0sZmC`Om+etO^ZIX4(@n+!O$z*xD!mb#ts1yH6}ZQ!a50bniw5py1#Z`q zR?H{(MMXYheTxR}8U=2L3K#MHm%|wv z9N%w@KTcs6nKuFodruSi_PkowAH0-prfA@IeDFx42L4tBeo*Ld*9D#U;FISy@T(N~`>QQJ3ET5hCq8)PF%A3`3jEz1zlopc za`6`UlFAe2z-8?%Y_e~xn2YRas~ccVISxICZ~C71c$1rZ$vHUnE*Axm{^LvmJY|Xf)pF&TW3x3G+j@8Nj z_>2p>P?t;=t9umq*&M&<=y;9F*^h|Tb`AW$DDeA>ehez`;p=ZF;K%P?!J3I!8~P*g z)&1Dqn3B+sWrlHjb5^9Y1>;6H!|1yt*Qh9ZEz+5Sdu^U1UGYAx$Ixd6Wdx$wW70{V znf;p4`8^)c`$NXW!*#(~@3jO^tp57U!>j+ev#Xzhe-%9rYyT+&V-v35#W5y4? zjye2&*}%i!XBoRwCJ8OMrYe}qcet__GswRJksdg zJJjghbAi#h-N;zk91K)91&!)hFj!qlW5P)2JUVWA#)w%QD3&f zCVR+^iTr0C z{3o_7g7@<9UZnF{*uvode&}_)?LY8|7U$Dd z&yMJUXN>XThU)j zjnst!@m?=_FN3{T1o?z>B4oGpIVZYz=%naA=-$#Nfd8jN_d)j-V7B(li_V42<%r*6 zBXcKweRB(Nx1|~fuK~tgsq}t2e?OyoTc-7Xd8Vbmm)2AG&6=ti|Uy8jH(dla>Ob^H5fbL*9K{ULl(=pKdm7 zL~P(QO9+2sWN{{Be*f*#Xjeg+)ozlHzuzO|gHwvX?b;N3(pU@~a$CU%q{E&4Bhh7{ zyl8oE#NESb(e}0J(N^$9D|93OU(?&TZZG=em4GpJO{Q^O3HqJhi{N)Ve1C3#W7qoQ zBfHUe*G2KUHG_@o3hDRB#&u2brIzu5T+2p%%qI9k^Z0=I5bA)z-jQg1z&IlXeY$tU zL~!dl(ROeN@n#eJmi)6d*sXeGSJ&zi!#JaPZDeum$;je2iF@#yUWbg7>K%9;%OJlx zvAQG&v6&I+yqm`)>)$e~e}^A~{w+)B-{*M$ZbSdJIQuup(Z9!<&G>sr?qA{_yq81o z!ImvcVc#@kQw;C7mLV?tMxw2V|2FtM^?A!oWAUM4XP=&!*r(6IKKM*JFe#sC1;>#; zQ9K1< z!e3IO&ERJm_sCynaesLk{xXaE3%y7FvIla*@Ru;!GM@X(EbcF};4k&?mnP1WVaAie z{Uh++ojn69PXbTgHUG*pH-IBCjw}pxb3lJCeJ;ZzOkoAT!Qc z^TAmi!S2=cp5Uzc;H(bt5WPp7)y6q%?}mct{%0pdKf`#kcSAb!|2Z5AJ4fq9bCH}97a6c2HozY?;r-x0S?LA2Ci)b zXT5qj;|#;dsD6d|hWqhf&anLWLcB*jCH`6YisjEMFn%1`p5V{hxIe!Jf6hvE@JCrh z=Bs{YGyZ;cRN^c6Y7Fm{(R(zuE{pS3XX{FfE7DTx8kZusV0=YmGRAPmSJS~)Yn{G5 zkIRem6=JLzpSghW$6<^Te6^kXAj!wyi-r74IbR_+VSF{yi?1@^f0@x%W_)NZp&*UfIHvyk~k>V?cSS1;9PJ&oHI5lX@C}8So`pIdX2Wdf*E;BS zQ>(^jXuJ&e!T0VTYEIaVvt?|~IIwyx{q0)JVB24Dl!Z9k>m} z7mhJofh+!guZ`bOd{(ZR`jq{*l^j3ccs*xOU^$ZkJsOHnKEf}IEW9{!>=){Mf$D6JF?Y~dv`0Ts=Pch4-_T_ou zKVp~@jm&wpuYs6DUxgfN0_qWW;`@}_P3-DAo!w6ijPkyD(Y8Lw zbuowE1B{-)*wf4CELn8r;lCqiZ|;R$2RN~Qn4g#B{!ClaqTupkT40 zBq8A@T53fwrN43x;i6DWTj|ga(~=Om*tE6O&ZuK;P6R|v9Z7YDR$3t<;)!jgieoc& z1`wsTOgn;|cJ7>O5(w5}>*Z)M|Ic^ry-)Tz34+c%&!6YX!`XYUz1F+l`}?kUtzA{Z zJPZ4(iT!G^iv68Ez@_QZJeB9C?NuKwep4)yS<88kUiJVR5gwd;RD2%3&+JaCl=cg zAWu};nJBsS@#L_`kwO#scAD>Wb$^vSE4sJa=SdAV+wxo%fhM9G1!AlFVOBKFS3-L{iIq7~Yblt98fSKO@tB2ei zE^(J|keD3lY5=zeeskcgx4g9V3i6ov)(P6!=cat{bK=T@=i_spw-8rF1kV_=ZXdL1 zInS&MBm4WtYyZQD_8$n2ws|(+Snw?q-8yg%#*9yW^o=dmL6ZrPE6srszVpNA%<0nh z@6uPSCUgohgg(AG!7qc`PjA25;=tD~Z|>yVc4u>Nq0#MitoupF#45mj1!J@YqDgXY zsRNE)xKnhji0~}LGxQgFC3PTFcaM*zPJHC#bEm#tCMkPHs6H0CjIj6 zBe(zH2d|K~wEp>geA&IRz`8iTYm&GlL0q$#cbbUZl8Oh=1>Swxcky3}zchc+fj!p* z+BsVt+h4|g@qcNj^ynh^t9wbH?#i_dS5%$~tosuEm!TU+(^k3A)O3^SLAS>j2H=+< zxew)!3y^_eXG<}%WXEN`#3MF0x+Gku7^atY$288ua9#Pvz~L3E%(^n>R$k=%RzBvT z60@g#zd5{OqFHw(`lEN5={iQ-1`TH-W@lN%F_R zTORKwWZfg#;I@Z zMOToE7^C0PRf_TL`0#G`;y_)DJYs&|m2ThNi^FwZ|9amW!|T77zI&lT2mG+jn3KIF z+wLz71UkL3wsQX=<`oC-2xq;TeZ}oXc0Qt`#x3mpx31T>IK1rSjHO4ULymvg(IIPn zye503cs*WWGW!b69%8+&nh_5iN%nWVvVwR=@z6?Sey*8_J}v0$0LRrYDAq$~0GsUj z`la7Ha^Sxn&21lX+AH45Z{PI2_9Ma9A5!~i+5RK7PXExldUtOB;!%wwSoP2IcYlt~ z$nkg4bMa~LJ9^Kq2OxJ7jk&KTXl6ymJ38&VJJ2QA#y|r)4cU|4kX|boX}Y9WymcPg zc*#KBYG@8;DQQ-_`uCDhx$O z1kHT~=z8U>TBn<(%E3jrf7{3i_JrKBT~AtQ^|!UJo)7WC0sa38;fnXF@hSLIy|`ls zW;uN{K&;7<)2*G#Z&8!yUj`xI>tOvR5G3f4%aeWzg} z`Y+)6B@qV~)ls`RH_p9JXc=|fN05*5;X0t9Z9$I`W9G$>CMYmdL z5tD48-xHUaE)VvDz`mY3{2(~gI@Y!1ikrY8a+3+VILw|AgwB^dT?cH^{}V@>Xc6+1 zzAVyJ1Rm3qSy$a0h+3O`7I@pm*zpSX0G$Q>t~^V;ee7M}&BMV);OIC@`b|1ZI4*b> za9G)O{q!)gg#77ktUt*&P)rj;A9jpleb8Leo*22!5RL<|L`^5KDEYv`p@G)R@@Z;PI<2NW4D6MK3-^iRacg@Fe z9mkf%_YTZugvQ_dF6LsY?6~{rx5^vWIC`oTo9W>w(?P%TJN-PK^(hw)=wmm|>VS^k zyT^G~`Vg42dUz-u?9oSg(Sex4>DwPubbn|drda;=K#Xer&-HFS0lMJr5%161D8)^Q z74X#((^XX(ifYY0vDjp4Hsj062VBT+*_g$qs|Nj%T!VR-wVEO$Diz8&N>J-Gk5Pj<M=c9>cnY`C1ZO%p1A>e({!gteZLQ8hQKuJ#$RgT5wz1QQUqEekmVy=l#dw zy{3`3-JgWdo*TLGe(~X?QFq+0dJcTX7uFt_-*tyEGp=OK`^VH(RMnVh2pfovAU3?T z{ZHGG`5ttMY!!V1Zzet`(iL!Q1o z3-5Dne@0{2!R}Z+)h)?4c#HPdrsp;r}3T%BvILdnDSkFJblbp@l zBgSWCUpX`R)gfXr#R+rIn=8Ncg(g#iU%JxzrH#N*ZS7H@FM>ZYow?Y1R$c>rF?_L$ zxVMsabFH6P(6^s^@>vsE|8TCA8{5YEhfds~HmqT}KBUve_HA`#pwFNS6pPw>RyG2C z4akP-gWMEa4!ZP9l3S-mVD$~yK&TagfDV2f1l^iA3IGvV)Y_= zG6n9G3z&i~ly9EUI`}=NPVtJ(FOHM1?L51Ub?5lxP?y%!ENu6L>Ks_y7$Xa-ckRJ? znrkm68C?)1R<}8&)$TkLndlZa$K@o0e^W69Ryxw}A!|S`UeC+h$=k><1PMZgYY~#eq;rHV+p>G23H&5on zk1g4K(8fc>eF4^lCZS&sUTh8@{f;?##~Az`XtqY%ahFGvXH-W4JtLw6Z9@EC&AmC?i@EQe z6|M7dE4Y^m?#cnUSx=xoHe8p)#w)kkK>s$k$^U*j*9~rfM2l~S3s#u;JIQ={NFf5-nPwpJPnuKgSepl6ZoEWiYWPNmE2>XGr z@Q>6V_;KNksWpQ@pXCd3_x|StI@ZOvt7GSU(9yB~jbECzN5C{xz9%Wa)2Clw0EXB$ zQ|IZ_f95)|jT#5xUTgl)`!-j<$nTdgq#UT~2^`p59Xf>0{D2FWUuXWCYX^+`&x3dB zh@tK0_Tgqv5c}CwYu9tgt&Ko`Hd*`G1dW@lE(!KEl5gEU3cG&df_8n6Pw|@rpJShF zTN`%-`>L>g%b16~XYDWV6Ib#6W|OLG*M9sV-?zDxU|&Fae|$$X?>yE*ZXLR<<*i^} z2XU0`_rI<ss+b=$8H9qN(FjyNO?2Eg8!0xQ<_~$7e3ij<6UkWEb4W52% z>sK&;a8iT)sVOisr6=wms$cT{>NkKsvi*L%e8_(NF_oVNUT*c?OB{Y}b?xWLdMAF0 z+V#D$SsyBX4e`=4_>~wc-DDhp99=!flvuyN7o8P^j{0AI8})2;9r$5ap~L62FH%q4v3f306A78E{|2NsTc@$ZEv$$S(XmP-c&%9=ye@p$+c z1J2^~>G#hQ!0G0Mv;MhahLr1{KgImK>l$)d$_*#MOAuVBE+Jl2+0Gw7cIf## zI^MyBtM7fWbI$!Cbnic0?8um3_x__NZ^1&lo_;4e=RXFEbL*df20t9a=czDzk}txq z;5&YclUv_7_B%&b9em`KZKkOCO7zcy4{bcsUG*T>#mx=q58aQW8_6T>-VnJET~XNA z$n^yBRSEDIs+1o!1Kuv^{F?Ul-w1ARadM$)=peiD-=1Eko>jW05&dcT!c@1nBB#}n zf_7WS8Z5Ro&l^9x?Z~P}qZX#^z%cQ()+0p~7RG6<*mYppyumoI1h}@a!1E0k3YJM0 zmL;cwWh$`P_alO(urGijb zwEm}JS>?0fQ|7c;|P?xC`4S8BX0`GG1->om1vUH=v`^TSrhYIWl_e(NWRV7WjJ8l4zo$wJZ5zD03_N zLpiDV_0X9$loW7o{3`Xd4^z$DBRXTx%xWL4IiYs~nh&`-H#X0n zQ;@pe$zMN7U59?x2H_v(q4j-@p}vI&iv!NDn+TqDueJF@p37Y1Eta|7fPY;FLZuH3+2 zm}=U)(Mx-o_k-~HuF|4Iy*Gw3CBsV&#Wbdqi`ab~Hlyqh{WFe%qi-@!^<)#h4;kBM z;T_%nbKuoJl>m7bY|QTLdKrBwzyD?4N%GsSm(Z_dq3P@RUJ-Ol4xd!y@(KD|{^Pmm zmHZm^0%}#YN1^8_?A6o2T<7vnL!iCX@(=5{qQPv@K=t+x4;@F&;;dVUhhAm<_mA+H zfA7QZ8B6_cm;&Fefsa%tvx8U|KI+3~Oiiw@OV`xb<-^nHzSsYh$!sH+^bmgX?IX9{ z-@T)#F1?GttqY?)ZIQ0@xRKGG(Sfemrcu$vv_MyS>!N7S)4D%8+EdSc);!|qQ~AcX zA;)R();;3Z$Il&8y!F+mZEk7z8tAd<_5K;?8TeFs=G;!z@UM}bci-3e-n*}YAN(hm zUc=fyFM2V?>F5<0ieAXeAbM3%PoaGou8w+?_bOHAkk!-Bnq1PSrulVrDDz#{e?NJk z)avJ}-d4SLd5(ULHw7|@HGxdWO=eH(`T#ZCh8%Dp6Tb(V)CV$?@Rbit7x{bWM?lt_SS-LxWuiD<*_jR-MQSPlmSM6ktTDm6A zy#@cJoUWNUpO{8E+sm1)C^2K^;mg;%$`labH~n&N1p%O_E-8%X>%Ok z(dnqVbPC1jho_@B6qmNJrR!OaXOt@}dxtZBJCy?o$9mrHwqI)7AY5&bucxZ7zIZP|ZanDzr z9nQA-C3-QoILtn`u(L)=z1*Y==0>N~)<+A5k(V43h!$T^5G}0@Myspfvnp!mtWN!Z z?f*po@j1?W)%bYQZJu6r^~Q`w>S4UK)db_z6IUZsC!_ykmNqhv>d3VAM&9#aYz4+f zaI%c|s!B|>0UaDCE((_h>X_GVV@lh%Yutt5jKwjXdB@byEVmnRudIx9q9`t8AC z_0%TUp1~u2dYPh7v|toItYpEZ;m)66pGQ0j{)?uyuJm|en&pK6*TVm^jb_$R@1Bk? z92;G0c{aYnESC{AUI5t}K zK;@m!zS+N}7(e=9)neWg$|S&b5`1|u^lW0EUt5TA!(j1xeA*`P z+ytJ*H%Y}JHYQQ5=Ef%YO@7`OcpmKhr($#84(gKL4bGlr9Dje?{*wJ^#FWi9o5Rf) zhF)wbBezPPVcX5*O3_134Uqh);hhUEF!u>}!oNq49$;1+^%DN7@Z38B+BZS_HQ*5X zCZMnOHr@-q%`p6B-alY&`upxCyLPm>hq)gEXIBH4|K3qI9!ri0%ZC9sm7R^ms%zo9 zO89I)@t5AaXg~SjR&u|bds*Q|wio56K+fVe+U(bvlRYo~;w z&G4^s_g}(a-NyY!?l;5FqDLQNs&?u)e_!I=Zw1Iz1%}x+N#>QLPm zsSS$5|Jboi0{&OMn`*vP_mDtd92&F7bd|GA%TdY&UA z;PV)?IL>&z;7nt_w1ym-D^Cm5mt=)@37#i;CR$zsUHtuSBPXDE!cX_wvyi88?<7y) z!NZB?r!Kz#UC0x%T?G8UyVR8@uCww4-fWBr9u*_LTX{N;zkh6@$?|P_x#<$`&bv4i z?U&7mAEYBk3V&JMRngh@b!>u9SEZNx^c6T34UR2DXKe`~3z4qvMP}wacx`W>usMux zHtz@F=$wGpf9UaA+kY8+Qf~R=2KpynoGH7bb?+4YZ!^K>r0NRXantypSsgjVm|7pWY@~8%jJXUvU3K+E<0@ zHcT|L=GBJku0@vF^Ol)g7@GQ~)#C-74aB?K@d5p~N9N(9p>3|yf0gauOfXB&&CYAQ zz1L7}mX6HMOSZhIua$cX7`K?1dwwKbS5%G9dEUGnpYyMoYrXGY593R(9pmqt^fwPb zcmw%W%_~HG#_P~-zIK^`x;L}i+W_$<^cbcs~>egOr6Tny!#G};tl+N z*2Kc(8|#r<_3>-k#_*fs_)UrRrYnt1ca+vgcd*7Goh&_kh&D-llqP(UsuApmC#S!U z{E}>lr#n-;w~=_Fg)yX;l%K2shqfLB-zEWHuet$QML)`(s6V}v7C)jNpDQ#oHv&^P z_WLM#s7B)UjTh8ME3^HD9zT!%RKs!&{p?eXhV&0`rs&VpKUtfE{!#zxPkZ(?UcSxp zU~t-m9)FJHh?NK4l`i@V#?!Ny%{9$vf9^Yuu2KDDo{zuT(=jRLnr4p0y!&Npj^t;1 z_iDGexl{VIdIp%JXXG0OL*zweC&mPwxYqij#1;SJ^yLO z6r4$La{>OU-)5@4^4>|>r@(a@8?1Vu7-thXzHV9Ph`e_k9tcHuXbhJJ77fKytYwI& z!tk^B*yGDNd2JmTcJxHtwOK>OhkpMtXAYNv(+1Pt(?ZUGx^(fRa*(REw>}Fn9wm+% zP980>nAm(P{Copz1}%n~%Rpuq@j(<>?PNZS!D(|VdJKOm4v!t*L~T9(xZ=g_8V<+4D^F7{8d){$GkV9(wQW|ds&Z{<`sj9jn12Lj z?|R}mw`LW-vNfylYSDKB(RyH1OrY9)FDB49Tex=esfrD93c*cDzwWF@&n+{T$L<`L4&ZA5 z=jhbv_A1R+x(a4`Z^@XJm#(M% z4WUeI9QvLn%*yKjKQEZ_02>1kJ%`2fg`Rd6x4@3U|o6;Ob-D+`G>DmU%kg;w~??7T!cV(cm&@fDPQU z33(664uEG1qqRkswomZEB^m`3^D`IM=iQu*`30AY=jS}QxX!}Gc(O$n9>$P8vipZKs6ZiK>KUW3LsGsj9c1w;$SFv6pIcD!?m-O?)_`Z+ShNGPq&yD_I zMt!uq@?6dydOy577T!HCx)V7`BYW|R&qR|=tzEmYSIO)1=-3P$$A;}W5YmP6XZ-r` zH-G2jOWrMzKIEN2d`TbOE*)-M;_S1HgQJEEl?$JQyh*QCcHZ}XC(hLVgE;zBx!X@j7WiLz2>D&g z8FWLF=dqdHv^kiynZ-OuzhE!tXl!y1>0Rj4W#FO-oH1T6^azxNqCxV0R}0U}^6=aQ zo_7&LGQXkl{0%>zdDr5ZcLw2^K0G{E3eWEKneeQ$g#32rpvALlcZ&w`WXkm!glnz0 z$QPB~Qr;^KFULm1i)$<&vR35c101BlK`TDidY}JO4lec~kLfj>5reMpZg%!V;}b7U zjt*x=i3T3uDVNVZ!6d)e+5+gf0XlwG^n(UjKMcP@dE*3pwF`aUQ&`g0(_juateyPE z8pGLi&RW%GukN;&eDI5`omW$Li~o|*`~{2P5*+M18teHnAAlCJ8P+$&X2h-uWE2M; z;QbVBYgMxVEXrwm?+laga}7Bd?uo}%Ul3-W3+r8D47qR4>7&LW$#_Bh7>$==T<+!i ztoSf~|LtH5-Qe>3aB@+vVy{@Y&RL(DhYisB)bm%sTS@pZxUjDBTykZ|0dZ?4vBIuD z?{?OODm#yyJ0J(DE0=6^K!f?LTX?>u_WZ|9s$4jU+_k2bN#-bb;$GI@> z0>&O->?v7Tx2udeWCec8HQ-|hzMXtX>bL*lZ^7eabdamB|DNkcouw&%?4Hj=Q_Zbi zl8r)_zTW<;&qA9Te8wQOP18m;(E3ZnrbX1Bh@SEvR^z*MPj+(pi+M-CC-Gh}^y%ik z#5Kqs{2HqXWV+=Wx^UbF9Ic*Ts5a7rD~6EI9pI|Qv1haBKkZ)U%cm1t*0jqv)cibH z6=OJldU5Am^x9nPh?QG(Pka;jLPnBW_o`SHO|Eb4`fvtagDm9O=1u4t_;9mi+_TNZ zoXiECcxij1e=fXh=fXSEHMg+8G3(>fho@@_H5d0fI~U@wJRkQ3`M6(WT)(dQir}zu z$6z0K1N?9bo{L9d5@VNFaNG4)Eq0D~(Giy|vg|BnLSC|^+ zYVslR;Ml01tF8ZCy;qHXJ1Sq6T!g2;=CO{pfi>AFuH2>Eu|(&|v72A)85TIy6AK(Z z7oGKLWgsK`YdyC_b>H}^szK?#(aJEexNE!Uf#0K}V)(48vB-hr#!%+f%5aAB{c_H9 z`G||Jo+NsL=UN}v{$b<}o*35tU-!MXMPp}m-V#UW-A+ACiuva0Jp0bS2!OA_;{*FAI$2kG+nz0+FJGmRvc>(-p^^a?d-bw!`eobye9+$vFH=Z_rec>JASLQRi zeJeOn{92`NVi3P>;W|Hl&EiNg;1Kca$H3Qnh+khADt?^}-|8&Y9NE4R+1@q~ze>Jk zKRwz0A~0w56z^Ku=AA*ZO&?zTIvkkO?sZnSv8zML_PdE+?YjR6^i_@NN{!`z*8V?T zv|s$Wd+s~3>eD~6 zeYLV?X8S^isV`yzXP@xJ)T^_8rdp#|rODX(ZfZq2V{l7q8nr{@?})cv&|a&(tZ{|# zZM0V`F%92vGVhE-*6s@yb^5v--=iN5F%WwOxw;$P$EAZgQ zm2jAIP5rd$u9R!s@9MmdeC4$*Rpb~gUho6Efn9mY{oq93pNx^an1KG(b3OCs{nK|j z@4pyg-lBu%E_<)}`{q33leG8jyrau&+AUvD^R4`zlSA{)lyP`Nevp5@**X^Zc>9Eb z8kSF?N4O7|ZEH}?95`KL_P z%JDn7mL7D*o@@D(y3A8%U&DB{YkX?{sTq8um%bmUtl~W6v7u98v-*J!^Tyv}{|@=z zJKgVCi8&>C{EFsL5<2w)b1=St-h7S`d-~_2`p`K1yd56a|Jvhq02yjRhE}ka)r$Sa zZ+Ss}i}v?4f{zKTG1+|<*RrOIyw3fGIXqW2wyX!}j2YEkr;w!v^2nNZA^eem_qD%7 z=PUW=5XrRb5O}fAtTl)_R`dY!W_F1rBX>i|#^- zzcPMce)SIBIr}I7UKspV+kL~%Ub)YMFQ-rGK=xGOJ5{4+;^pSaYU;iM{V%^#W!6|; z$?vP4zM8D=q~?^GRh`8^o@|fKTT(u9CG`Q@OSPur$^Mz(a`uJ<;F~jzZDDrz?zO@v z;)BjCO`LI@xjK788sQb4g_IAA(@%w+dl>%H+ygG8d-SQ zg8;t?o)9s^%Vp-i+eWZYKMR{H6QZf*k6>TxInEr1Y-7(;f$s32_9}6X@yP(cRp-0v z#N9`p`|^)o+4zZHy|VKwCuAS{s`0a~9T~cLzyzWDg29H==zYUmuR&{>?%ARcu>#A59qk1OB=ow#&XVreMf-?6d9Xw|5{{ z`EWaQa`&L1i^N-V+;bAhAJnz%bM)Vk@0o!;CXDfWbDF&{IcuBtd=}R}xV-l!XSuVM z7roZUd(v5+zPb~f45iPj$XQF5ufOSUkJNwW5v$9?(9JIk0qN=-S#ZWaaL%S92mY+{ zl@?PlZQvc9?}Gk!@es?(nDfs13%-41{W%ZjzT@fwD|6sZ{#CAimOOhhmpkvDy7N|E z$3I^_kidL%&#IRnm%NO86~3jn-}WbrwNGouqs^%pKB;`KC%6~0HfhZRflvdw*&Ey0 z`{mpVJsuk!I_1E5`aNOyx$yb-CH&S$Bac31r?IyU&?n#b&B~SQ`-Vjy_pCgv5e@ij z4z8YqPR~K7y{6F83Atjwf^!a!N2h#yyAe8Vgibl{SUOQJA>9a_IAc4HPTpERXL@FF zmP@Zsy7*Au%}+09fArw}#NK|D6t-3SQuZ*WWL5rnd^9l-en||P#qno<$g?KZVKKIo z(-IuUo>S)J4?Q|M`%4C%agGt0z9||&-7-v``8rUB_eh9ky_eYmm z{_~x;SLyh1^4s)%*;_cDtMNbQoeGpTj;{`_8lS*sQQ!FG&G>im5usC6_;~2Nc6{ek zQ}7k5=0)yzc+Isrt{?X&eWMvaF5$yxc7GZ55^s+f*k4wRKW6v(HkgxFvNqVNeHZ5Z z_StUDH0O5U*G0ODp=}VmP=rsdZ)WIx`UdKk3ihqC{;d2h`J|e|$|oG(b**eF&#Qnn zV1MKH;?q82eOk|laQ1a|6QAy5jAt0@ImS4^SlUng@caD!hSPQ^cuHs+8Z`h<9NU-= z&y}*5EOWMcGRJhq zkc;?btWBCgn}MHV^-kL(JU1gl-;U2=&vMni`;A#So_JCj-RC7vKH`Ip++=3>bg`$8POdMs`w^no>U#>g`^6^t zWayDk65IYK^H^xQZbO#lvIopNdvyZ5oxd0SbHZ1tnbrNDgZclTcsA)1#Lo*&CQfcA z_A}r-K+eGwwk4k8`h4XiN8y_kbRHdnj%Y(qJ*6{{3i_r{10Fj>`=5z+!9Hx)(h1O8 ze*91P-c0NeJm9uZE+ikv_hUBvspZ}cg@L;Y=|6rz{S?~o+N@;VT(Np5?~$w6t=#;J z_mEFvEbS8^wthjm!bWltN%~dHcH?B$7WiEgBoD83Rl7zKQ9aIXn|Dzi;Cg5OTI>mU zWs^D8aDj4dm$v_uzGF{t-sPsyDKmxYH1F)qh3@(f2O;zGa~A z8`bwN`o4v}&wFou{}X+0pN($eyT8bM7T*o@ov06;DtHfgj?$;8Gc(t#&p88qE>@p& z-dmsd2?yA0$;30rjO>E!f$TztXSZK&W{Ni_?A~y{)@mnH{}|f=zE*hSPj8dCH*(RvK&~p{qOKH%?C?9jW+Xa^^{y#{z|ZH0hVh9 zV0lKcTmvjy{&#pOWxQA|Ylt_RQ`OX`z}sE18$+kY>o@k!(<=`%o@`q+HZD<5ooChl z`>U~Wf%m}oeb}f_HDlgjP8Bka`9|p8*j|%~-N0O27`$=s(723e$KA`BQ&ZmixW8oF z$c2o1y*bs*db+inPc!cI_A?fscxsX`a+9&YYiiLV*L*QgD1)bmi1@%A8?SHUbZno#R zzgzh6{k{GdsDJ!_3;$DtWbM86Pu|As|AXp(mfQbt|Bw17j`I3{zxpR`vhWiN<>`v| z2LJ4V{@?x<{m*v$-*x8xS5F)`J3e0F#4x8gPd-)=>55l`GQ@K>pThbMH6lDGH=?yy z)+g=0yh?X{QhAX^a<)^5V}6c4)AzwxFId{*K3A=1BiEaFJ||Gp9N>2q^@cUYJsA%pW z4^~T2V!g?UwTeI;;~YM&tISH{UpP|wc3LH4&$&)&iH6!i2|H_xH{L|U)XHzCu& zrJRsz%C%nXy;o`2SIB$d&F($9jrTX&_eYX*(*DTdyg$OetM~l+AUEISoLlbY|L&Zn zT+QJ1?*wsjl9-)3q0KwVzpc=kEAwB;dd*2O73VSr|TCFqAcsmZZW$7$v({staM<)O4 zW42A0drq5j+a?YToH=?q9tW0PNAEaN^7#(EGi^U~5ZtZ&uXAA=ft__byLOyZ9uK{j zsKKv6KmEo0*S19LULNhY2t7WA@yTt_hIp4;hR&5);pWy04EsgNtycjPXSvyPi6^-C z=pzdkG3gkO4t{)Xfd99#7Fj)2Z401Zu=C13;wJprq2^@gjlWWymIsQQ??_mF zbmk;}914yse%W*8;rI8)!7o1TQ0;}+{p>lDuk?{T-uC9AHXZCOyN&OR=JRjBolghz ziGf4;nSMO_=g^wR$9h+ESz)Lp8-fNN{QCs|*rDOKFxs3v{J|NF&rnY&7}rp@(nH;f z=+fxI2y9Cykh5>1W^@~KYIJe9+vU|L|EH17iB>k9ItmX5qM2kvOt$3b% zJM-2$pgX4_c)K-ATSqrHg70_Y*A((vYvtAXj#65G|vyWHJkbNBdJ&eRc?Bn7y*~f*}J~mv;nFX}fJ8^8Pa?sXZUb*DOYpK=P zV5pt++e@Qb7G(1xM^8#dwSQ3dME`4zD~|1$*bu5)&EHYU$W0y9|NDWVso%x z02A0`I};R&aQX@9j-FSmN1gM%>FNo=}@ z2fkl4BpwWSNP(9KakOgLZsWTW8&1>qRd7Bu&Q$Zmp2`bd_>dEC+;#Nj;XMi7?cPsp zg6QGU(Aod7lUOi?@1dF@!O%1W40>Ptb1l5o5T)=*ZW~q~{VZ)`c{KLMdj51Uv#&ug zcd!PxLi{xZUsdyLBHwRX&EHY^5!jQ7guRot#)rPGgC3!t@^pPC@wMcOP2^iW ztNBxZ`>{t8*%!W=Kgn!B*PMH_n!o2v(Jyx56HEk86WQCanm?Tt)&Shf$-a+ydN?2B z$2tC*_&x37yp(ooU+n&0=>D(xSNAuP8>yx56h5K&bOZMtxzM@B)S-|oIo+H(Sc{vu z8+iHCe5!TLxj3u&^Wfh|zGUK0xW}J&FU|Vf#Gi7HKkwdr-J_;(4KYt;U|^oZfG4T7 zHsS;4OpW5s-E)cKT-i<%FZ$Zh8F)$JcMskNPXq60;LXY`@xA0_%W2w*-uXN# z85F%8{i*L4@SSM#KUK!u<=0E;aiPq1?1^xj6d&RDTib%&6KyKtzq#;eF?)ax78bXO zR#8*jwsY<3Hx%nlpq=V(tBZJ-`w8x^r#?)yYX)9(s$^EaF3g8j`@L_Xrb~OF{)+!A zS-bb_mg)m9Td;6pw~3>pJR%I7E-cT_rwGrbfuO+da^ zvR0SiY~=|rn7V;EI&qq8c!GA}A)ejNx4RDV?XDbHIP*%d#1+Q?%Xw#j<)^?BQEu;l z3Cn7}3s%f`!GL92z{3l5Y=Wf~J`gOgl9zrbynGi}s+9K=Ea-_WUUt6&UWRx!z&8#K zv-QEg`jEe453}WsaoSt#oS%O)evjwR{2bZ!*JA~#7j9&IqDpZd^E3RvpLvPrsI%DJ zNX@XG&4aJ)wXGR$9AAXJi`ZJXz>sGs3s!G`mm^0{H74SFm@fqQuB*Zmqd+s{B=6~{l^L_WS zc|(8SJ$`^Z8TpCC^`@&xGV$l%J#zcCI}}e(i=g8cjJ@;7>irMe>kio|DBC z_!H>p>-oML^1he6z$4hH{+7|~NgoqU9w=;=9#1!$%)axL3ssGv&h#tlEGtFUpFoDL zXJ2_UdPnoTK9re6{!4i=<)Cik-GLgmqG@sHQN#F6wl<2IO0K={nn_pMXH}}tr6vwbZ^({SU_sBAK<#E2pyo~uS zX0N9Ej`Datj1g;L?;g17?ca9fDCZdtV}6bFVfXGcpYG+ zx_ZFl6!v))-!$c>e+Axyq0r$*>QJ8l#-e*mCx*U#ur~DVGPCtaX`rmFEVA{;K~vVI zzHg)N-e&gntWp0h+5Ug+?|+Tce{VB6yi#+x^ropdl@^w@6&IPC|ADb0?%u*3o3PQ$ zO>+#~VQU!d9#8zP%ahEn5PU449z?%uf=&&CctCt!1#MNs@Q`5Fo+RedOKz}V`(OEf zg2fFwJ&jIJtq9a5Z(-loV-u_MS+WnYl9m;t9i~qH^UFVObR)p&$ z3!Z#T;arL@jx23kQDicuFMZ=h>OwYuk-Ct(*sS)&wQJvaW&9gkE&`V=Yp1;NIJooX zaBK}{4n8U$$~hnFCx7hUf=tbdufaAyDjN@sHxi!_n|U(g?d7fpM(PYQ$s2*g=4l=O zeLwGbw4NebUjwaI45oE@lSAu6z^305fv<>qm1<~F4UMfH;r}`4kq|mVx-&rTDv1x$ z1kWd%;0MztVaOv4TJH1fbX;F{M_yvG#BX& zXYV|?v%2Zu@qL`LSIRom%h5wi=x058i1n@?qKAIAcI6fQuKwX1?e=oZhsB+NW3StN zZt3Mt-#y?&=MTo#GY;b+|CwXxoqki+{4HR=j(5fH&mb>7E7)TN59RXlsP=ybR>9e` zBGT0hFMIr}{w{)NOK!Tz>Y*O=&~@mcitGC_`uP%XCng1ZY z1P-K^s-Sz4->1_{+v!hd8mF%T=bH?CFT5A_-QCl_boJV6vwD9MxKsSqHn!GYEnS0ESC%iT@Fgk)^Mv`<-zH@V(R5jmA0uAjz3RDbCR7t|_lejU52L>=PF}|EOoQiPKiTPO@fEo$3qlmzVCN?mLL@Q+UyL zk32N0H9AXr^IG!EDe}x}Ta8T^c*gfLB>Q_An?1nG|KRFe zu47#Ph;#Vj_3+QX43_<8i_p2?EBP(jZ5c*pBMML%i!2@i4aqufjKJjL@A^G||{ z1AHS)u}(2_dziT?zG%(*agI+fU9}1O`Lm17lhc70nV+eeNa?72yRcO-BHyZi^uze9 zYQ33qyFrX!B$e`ZN(srgoW3vLukHxsRA-3%_4CnFm#a z+G26Q@`O`^`Z4Ao--YgK30XZqg?y7ePpE`5Tj9+ZaCL<4bwT$Bj-Y7qg{tLnJuP;Ck@!RUl zF~EJJXqHh)2ciivJ&iFZPYl9|JSOs4>z8>*Fty3rH;?m*^`T8_{`{k<@ z+{azuz*M+e}egVtp5V3 z0~UvF`{dRkaQK#k!+qf1tK{ov^R0qCh#=L*h(f->F z*d^KrsP`QT$G7-#jQ^D68|cBWx^-R9s0tpF&+O+_4_Cs`weWkb`2A^<`BG|t*Q=0) z*werXOls%p4dmv9o%Hu%>1_A8^ryf7@qE+bLjGh6(WRMm6LNdhSf08XALN~E;n8kv zA-=6-Io;&5g-3w}8Si=O9c&@-kIxqFRt)qgbX8y7ihrJ>&;PA0#P=Amxz-liaoW9c zWOEs(7n|sfHIyy%=(|GnWuBU|{Ei$NGiS+BfoRNc&+o{}2XyGg-}7klOXa;-SBY~@ zRldF2PmbEJZ{oyD(l;9}a`er$weT>wUG*KlWrNR{evz1+duif#D=!O8rs)FcvW#;u z>^CMpZ0p}EHE-q{$CkGcEA~!t4X_v5vmh@xT zj;g@nZl009ZcC2{WOfRl+rVc(f6Q&?_xOGjzG1otyclw!H|EakP>^|TV_r8pdT5H) z>ou?b!Si~^o0r=@xhYo<*?IL0p4Z=b^J0wn2+ofyb@aD;?%IqAd<)?^>Y1u4OtcEU zomfUYa2*4;%5B8p4Qfj>o;~={dU#m+?6aJaAe$h%@J_((*E?TSv`K**#VVhofA6|R z-(`}0fQLBGEmJtGkaLhYGs4qfr?CS&>Bnye*n^g12RgX6I!^WzpFH(jlerciPAxZ? zmGE|AaV{@^3EWHPD?d@~@uKYTy}`9xr}cyvQ7Ox-vKa+2n^gZbU!@Z^=UjpE7RVB6S_uClV`w%55xe*ePqe0K3a!Ncq`*hS6+&9{r` z0_OTN`r!=4tX-s^_Z%Z$@8k!4F`~7LhrDqVBf`7A_zKo8GS)lU#qZvRPGO#!^B}v( zoMjh3DthsID7*ME@UL%GsebS|>M?Cxz6RZu1m`!L9nOE60_Qh?^M481GwQN&c@mu0 zp8@AKCz6fJEiUd5F6gV9d`K4O^z)u^ei~ooE8aNyz6fKz6V5*>oUZ}r%y|&bnX_52_E+45Xyj|cXl+4x+88pfIt2Z% z-0VF3OPxLZQ(*ONZb~59{Go#Am#+v$Q`oC(i9wZTPQeRl_+q{I7r0G{ zd2&B%n`!PpET5D%D_Hy198$DXt~t3Jn6`m?uC-Q8PM^7qYQIxFx19cXSNY~{#Ua~( zi}v!jQ@o=%F;ZC6_Cah!e8eZCsU@6irEz#q`96y)-m&XZ8fPoxa4ntdjdQ&_j^4F; zcB{q|Jm3kQ)EK6)upX7z+U9@7nDCO3gE+{Gap2TqL0jtYVNB|Icq}2 zHZOP_7?Qwl=WEvx2IhOU-~fi>zrW<}6sMiptwwL65)J`Cc~Ee1VJoclIng zZ@&L7TLCN9;fvzdci=o{RL|%3#&UdaJ65Z5G4!7jEgA3Y?s&S+`Zvr${!Nm3Wc_Y$Y|rm@b)U7N z3&AUXGkXfH-}2@EdFR}AUjiGt7};xr578-E8@dJDU53tuR;SHvUz6jvSUGyifHV5) zz6Ki#JuQ#Z&)L|}DS=YEt~n`C3=g}xZE^FWyE?_gwS;vgZ$BTX#1_ zDs8TLJNdm%=xOg&IqTUm>ai3L*?YEDGT2v5yBcaCTSl67Q^@D&+v-!vr^etjXPw=v zA$95nS~$B?InWxu;gR&!o+fDTuU8nzb>`l0nZkF<6#FQb%3uC_4r~+b9Kt#Wg7rJj z^U685#A)N4-($!He>FQNXYTu`yJ`0BMV!9S%S%^#_uMmlRG;I_Q*{%$^R#2wv(Y%q zNoOWeE2$c&ZQnBMN|}Gt#pW=%ju%_5H0!S7dfNuGu7LlqW{ho{&AJA)`HtI$a|wIN zX`OD)wvLfGK2xGR-)V4SYfZ`1VjpK@=b;)3;A8#abbUMXaB-zN9PeHHF}>RWt*g9y zcCSRRZyz`v=iRgC&N%B4@o`SQ*)m{Fj$@4#zF`l-w_B*emtJZd+3KD_;qZz>rz$&6 zTsGX&d~l7*!2MhrXuU_W^4K|!|5t~N_2lEaO4Z{GJ})SCVUB$4o=c6ecRrVc3x`Ky z>`6#@bM)i`zC7yPbLFFvc2+)+iz;v>IjI6al7m*hhch4tk{3T8&3nVyPn0i5-u-<3 zckYYdb>7{B>{&3>0}jZC^W4Fy!_%$g>vHA8-)2BQvUQ39vuLq_%df-B6k(~BUdcX%4bqm6!qX$kWE1pbvdcb+#(*r*o?&yL3JbQUE7_jTT z$L2~WjLDu!%l_ny))tb)ee$8>__i@(f&Cvfd#GFP@}DVNjXtTxer|xLwXW4Mn>`Vn znYxfV)gFA~UgC$V;PH#DGlv)Pt;WUFaDJS9geUL~Rtz`mu4Aok4&OTrf%iFl6LCMb zOFp-AzH~+BZ@^V-HZb7Rk{|7gEyK5wKXwhY$8Y$Ro-58GpBfNfVEY}*E4 z%kGP}bp1bo?L)w3*A~E4pYTK;Om)2i!i*b5_>mW)KG8I>R3 zB%SnibP?@azJ%ZM4*2uqb@_jI{>Hn?joZKX zO+yEF>i=W(-=JDr@M6DdNFUpb`%Oc4+$`UmW=!cy@t3WadKa)tcZMdKnfopzF5wKJ zM{i}Wz)=l-^t}MZM*-F)K6*91@H&$e6jPA_iFYr&Tn8Z1$I7;E(o(0tox1d zjPf_qzxrSM9>VDMU9|02Tb}QL4jt^1{cq&LKVCieCI7$Wehl3sxmNzU%AVyuz5P1y zkfLU{u))-&z$ft@>kga=?ciXycMi08S+QW5<}dmMjs1Q?9G^Ae%yqM29{#cCbKdSM z&fC>o!&=89R@lI|)-)&WH3@TOkMoVZ!p_G8pHKJb{P$MAk+)vo$U{%<(sRG=LYHVQ zV?* zckGGsO}_Ttx`n<4_x-$gJ(;~_2sn(Z1H8Uhdwm0Y8rZego9!DIZ_n#HXAb%fo$tL{ z^4eONx+5IbJ|*i@!xO5xlYSDORxES)T``8*%q90`We^x7gV1ql4fvM6-YcJ+_vKGJ z^`GbnaQ6xNkS(xd>6?Jy(vx5HDZbJBRwr_;cHTYpb%2^p%~$d(J+lDV^c^|=e znUa}%nU}q9J_uaJeR1NXji2T`o#|%JF6MCu-?)FCZ`}7&pI$}mS{k|k$dyk%Vz2i@ z=gIWn6Pe1pC4E)s=`WLaZmPKV$olS1+60@cFF{`X^S&57V`GP!`&w^K*o}9Z`xm@+ z?%eUc?yJ)ImP5^*d3i97Vy^bLnQY+=Q`^v5&bO7`hn<8kBZ_Ix(1(Y^TRnW*zW7!u zv6I)=o4^x6hSSh+C$?w4;-8`Vg)Yt6elBtFPu|BHL+1@Uw7J+m3-D~?O6;EETJj+q z$A_YS>Cw;9pt#Rq?^b*F%tiJ+N;^_C9D$ zN_%a}M{zF8XSW?`el+^Z3eIYgTuw#irnX+dci8bWiSsW9e;2>jdSqAy=THZRO{)gS z7tv->;6mDz_bCSL#SUG}y>A7GrTKn)D{18f%*V>&o z<{xRRZ;PIZULLLgj+nDFZrZ1^o;N3eu70zB>F~NxbVN8D9d-5G==(pwx5j6)9#=my zdUDCA=xg_yjMk1W;cS3oiXT}cNsen}e#4pHIi1CtpUxM^e0l* zspj$0EuqZa1!m8WpxKfSZ9MXF6??4$BP`862=0FsxWJzKV}Q9FydQ<00dQ%bK~J3t z)CzsQwg=AwFK5Er_VaaK=pA-|Q|>teKPhwV=soNy=Ny3#`C@y+ zKgXUHIQ87*yZ*>ouit-jPIOy=X_rk)Z{^#{s!eReR<&S|8-Lr|d`i@#9{vkG5?~)HZ`DJ*kyArwBgxw4V__kZ_chi13 z+Oe!9rL0K`EJKCY~@AlFFnrw(m8?h=C~(=fr;&k^{SDtlK&3XX|3;z?6)juza{Oa zH6mjUpV!)U@-IvNF;r*o@$M$zINy^$t}VRySlj8p-<2uFHp&V0)GUZv-fOL-uX0-l zt$lT2_1O`MhUh0SvyO+5YO(geIM{KJTu@rnh}YQA@o zydl!X8Ata;UhHo|#{}7(XFU?GnZ+P+i7uRcFBR;j~8%{v>=i=*XU(fa#=zjbtdyhP@ z?iudw$lj~A_ZluUOF4jYj1wwiURc}^|$ht1Lu z`}X~^RBrdY%2n^M`rvhgbbyE_oc|e)9%7xMLdjraw@Zpzjd5=Sz5==%;pCwg*3y{+FI^ z{J%NF__ybc-%sv5f;{(=JFmjF_LDnrootpWhY)67e|?7jzLwXY_uiL$@5xu~WiEj` z!_nYW@(kyOqQ%sP2p>JfR;Of>+_Suf!rA9eGX{IsvbfG4L;Y(UXN=0u)EUMI<&9AY zPj6s-MtO?>@y$H)GWh0W3b;SlOyPb(A2ICGlguq>`JdVs#X{U$Zit0yB$ov_a@q7g zM_-2(3lWFeScrC8jTw3B<&Q;AHJQVI?zV}`J`)Rl;q6?0vExT3JL7-AEIrKl7FN~_ z1ZxNPls`TPSRJ?|U*x}8*A3&(%rWL`G4k?$9<=Q^YsA9Oc_Q^yp*rMqR(-8qYn>G& zF63LGQ{Pmq%bXg_oZmFOUow!ZGxPO~gDbuX53U->{X7h;4*dFNJ@{jt2fOLQFPR2@ z?#*MoYq6*EBH_B)(a1ivP)~aAvWBX6W5g)m&b~XzkU zx9h*TFgx%#eTK-L-b$lNA38h-zo9#Gc_5!}yVr*@&ypYM z#&3U4{utwvTR2HRU}>5-CAFS&aa^7MVaAHQJ(L~K9mDon6&TbfetNdgjmYh$DxIG> zH`?|g@^V{Cqdhyys0k~lCafa5p^7*Ze?H!JWi+`p(lwf~w~HS(T^W7ow@z&G%%A!% z&!12Je0!K*T6@%)pY=DHpQl6QcV3NM+*K9goRmZ zOnmTe`1~edIU7FD&sTndeYn6M_41Xgefi4%rVsU9W$TU38(2FfpO#>)GPMl8QcM#J z))j;2gH{g~_XWV8YE{$N##D`RnS*Upss{SaB46yj*AuL-i{s~t|AZ6O0#J)E)1gaE z`!?tog17A&3-%{Io&H%%dj#LHY`!@>6@PIK{^ArbkMRTY7>qld{(sm}+`cU^+{#7| zF;$5jqrCIDl@HcQ;PXCs{1|p~8126msA(r>VaMwO4z1UIv61sh`6hRxey?J!m-DSE z=~HvJbvA;1_d&`!>$9S~*iQWxr$RyOPu8vj|UtX6eB&I1;X?BW}*x93P&n zZ2GUMIZC*B{?wL&X!mT>#kneViqr0953OH@Qd`)!HJi2dV7QL&-;6c<^Xik1f%E+O zB<8ROIk~xI53x0{&7n@@Zs1SC3n~7jqeXAU(Bcj6_bQ`(aV_`mEDYXNWQy8qOz@Dt zTie55h2`@#zVEF$H5127N!!%2vNqK-mh30CqMrIF{^u7N_YqEdEaTqP|A#zHH0z># zgWmZDqj%Pz(?ZoDEcAZ^Pb;s&sHezdl0>FY@wqAdsY}~6@uurVtaN-E#C>= zfUX?#8vCr!fjz7}dGH)t$k~MMSi+s^ykm>O9lG%s)K@Q}-g!}@IlOA^MQ^O4mU@@7 z9=uuK8{foY-7fOucTo#7wbDeRtby;fHb`T8-^E>Ib-+$=1Kq(*NvHgYmz2j+Z34c+ zF6Dv2(Q)8*^kFsmoniJnusVBU_7!ILb;OD*Sc7>+^CXAq%ui=-Q(xfD@4wiWDI495 zOlRjuzVbNp_2%gHuesVYirl%r#9V(^G`#JH%=H}b@hi^x{>s`*-uSW^-qtzF)&XSC zsOc;UWvIOiw-^5A_vCdIWRuqgRuu%WZ{Gkr-Sn)A5DIA z^41rBRdi0PrtzX zH?u$0(VzYK_<4LM86faQN;tN04=@D_1xeURAK zy#rnd&aYFf6TpU~$1RCI#~Ogv=z2c-@fWWocUu}LX&-moC{` zub(5#*?H#l8OPuCo*l|QE4S|je9xZso>3F4KC7X>_n!PQ=eILn7~b`s=`0ufo1B>5 zYeeq7XVgHsut;AN+kCk9>=B-Aw7gc-w~}`p9&`3>6;^8R#*Fs!#ba7uS8V`QU`Ng!LvHP8!P`|9hV%pZB~&sALF(zJUAdWPrSR~Y$RmR8!^b`$VBFry#rxf7)} z|NX}r&d>GbJjS{G^c`hQfqovXGnt+67Hb~(Ipv)?L;rXUvWA=`|KRwBiEETUDH@a$ zFLnFsgwKv2HJRhd1$8UR@c+^2s+S{gu~d6W%L~or$9opk{UT^)9iRT0D7xZ>Z{f?y zH^W{oZNP_E>G)gZHZQk6#APqxZ-HN1JNF0Tgk|97W#-)!%6R;!b*E#q*azeGcig2* z0sJVvei!lDEPi{>`LG)2<&^iWWK0KF`ZfTyIWB!4)PC7Bj*(0M#qpb8Y#v^Is5vhB zS7hnm4E?A5v42Lg2fU!S66oU``h(Ave)^+dlRc-O<8kzuHxKa#wX|a!Y>m;d_D_EO zwJqW~)o=u~AF3al4lWYl%4@SwWA)QN_a0`S?<2KgYy-aR1twZr8;F+k&H0DPk4ks; zvma|MIi#Je$4)UNhobzIK4hY4Q*@{oelHnbawz?$jdy8pyT|LdW3!6!)Bl^AiHV$v zRYYwGIh7Z7qBqjP5z%hww;%kAp4t6g(6t!)#Q5J&hY)m_$T&NP1rEWRhtFjkPp(!m z$DNvEA9Gv+Ua{>tctvi8X|8?9=Mwk_J2aF$eGWZt*Oqp`Q{eMC{|C5E|KTifodnnT28spqas6Y>H3_cg zfa}>q(JO1~ql@5Ke3%!STNNwv9T9xN6K*Y_{#Tr;b7NwAP3CIW6+S^- zRtG-TW5hQ7?c^T$o!*Kae46!N>|)PTCeyvbWPXRw_0n?FwH+TywO4E4oA_4FIOS~K zTKYjpWeV{xBtPzX3zw&!LO!2%WMTxgtqG!k-Fvle?UicUim8R{MmH93=B##nutI9D zQpk1Tm|(QpuAOj>9p}}=_J%Up$}K6zRlbY-+Mf0JgPdi$r~3(GWB%ka(}jMg1`rxQ zW-<=Em$uIa-d4T`9#HM(a<_JKnNz#zhdKEKy7@7ucJqJAsaH*XIwmvdAmw#<*vt-8(lvq1v-!Y<*b2fLHe3two{jcxNBsd=_ z&RiBLH->({hd93<8`KItH?THw7x}Rb2@*AANLa9 zxhX%(cIg)AgIx4t+mBrj?c1O|dj6$)(dWnyVm_Q zuGc?v=(>ZyO1^~@r~ftdeFuNKmcOUIoc>Lx>P58AUbUsgdHvh@MJ8qOpLFLT9IKyX zGiTm%uDo!6pog4XokKU_MmX}`_u%x?$iBacy{*W5oPM9+{i;icexF$7g;MDsH-`21 zliXr5!s&JBn>py42H^wvMt~2m@9)vK2b0e6^5F9N)jnhKn}@?|Cz)B5-dMglYrlK| z-txwZFqYbBJk_Z-us$l-B8-=!KTnRgv4=7{{=H`&KQ+$GvOMh@dp|btTIRToHB!w{ zxR}eB$z9OE9e1V11@HcGt5`eJ-0b+oU-@&tlsKv&Kei_TWmJ#$3j8cEMZ=(7<(Kun0MH0v71(&v-OmpK-pOQF6BR9TQ%fBt!KB{ zy}o3^VbO|t@=~-sU;5*=V-05(F8p0G`S)QP5xVG0{sR`lN%yw zLYw{3rwQQGkXJ+YXe(a<9oeR_$Kz|r!%E9XC@_5l`g@0=Bl|4B zCWsHygl;eYsl7kz!3P<(@L4DL zUyc*RKRK)& zLSF*VZxic|1Nb(LqTgk*S42y*Z+R0p<>YtY|uYv6p zTF24uo5cL8HP(OOFNrSRifxg0$@5p+PQ7i^-vNyeLGy1>7rvp&d!0r3Td*}!w#_Vi z&{kIFcCFvUZi^2h_E6%DGM^*y9huXUIH~ymZN#n)iZ2fzCFWDjJk!e4!s!G~@~H!# zti9*}-b273>n2Zy(@7gf*@L#S2Asxkk#GuZ7MuceFF4`RVd@k9G&1gxF^7etd?V!r zSDE*>a1?wGt-x2goUvOqvPJ znK7Z}xb9^&4^a)@FGogJ5LY6%Z9U@$`Q7ij=jE1}W`D){p9A>dUi!nHZ`g|``+S=C zu6bU0olc+UVct&GHU@at$UD0%`IF1GOCG&O+6(e+6LmM=jZco98n?fuN?;23x($SIlS}rE zflJT6v1qo}MpKLCmM`^3Vn5}?7RBcgUq^B|4?<>FGj7Nrmf6T&q6Frl5@Hi7_wa6z zBfheg^AOZ;>?`sUpY_IK|2gks+|niHnMCombIF4%`%;^)_b@ja+u{Erex}t%<>%e` z_Y*_v*0keG@j15;Q#If*<{~|eVPx)h4|{eC9NO{r$*k9&f*ccHFXFcy*jR~Q$X)b( zCGl4IZKL^H`N?keTuqtQ#prg08k?v-@{d21_@)->E*r&p5~I1!5ee zX3U{EYMIAm{$`@D_6TPiY{hn=Cvq-B0KQ5;Ek1IS#FFJ(wO4W?{<-v-Vw;WJfn^7n z8@Lwv;+s~16@0}fl6W*@f$7cEEB;jz=P-{&2jqDI`AnM``zd>jTsJ~LiOYQ;XPOt& zp6UB!j+K2BGkyOKtyCNjzd*(HOh3A3kMOI852J~W@we!hj5Pzmlg+wmWaan*_5sIW zJ6Dxw`bwy$k#-l_>RAPECD-#u%*kg0Um@RXl-C%i*lmEwVqsHvzQzBUz&2ocyUU1k zmWggKSDD9}$2sB`JTh8uM)rc}Xt4=zBI|Jct(vm&#gu6pIfnCq3|SO^GuVeLrir|? zp1CZ>i7X!NUlzNtcmAXQ^RgHpMHZWoMUlg1BwReb=*&XcmRG)A=ZQq3O!-UjPRfW9@HQ+w@_CWe)A@q%qTx2qW=)zMeN5= zS&wG^on-qv!S;8o?Qf^;?{3=qlB}n-r`2<(`-kV9RC$18-rt08g}`T?o%(m?>NMLwWB-S- z{-vFD%8~0|0yo2Z_67y95i!iu-#_vf4U673LOu+QACj43dYUoe@^^(kAK<`z4&DT7JHDyBoVq=Z) zGtj>Y+FEsf5@f$K_S!z*U5rf0Jl`tL8fcnFz43GO#$tRatKLG#DfOo~^X zpQO^SAaijRPsd=(QavH|fAp;9koA>1G4aUtV4GN5Z>_JA{z&3Iq7w$4%(YUJkmISI zP$T%sns>$p`7X}qDKpRKnT>BF-!&q$qu(Qs9&#vSBk9Mi^;pDIITJ!t=T-bz){1kM zVytS*Rr^bx#dk5DBifFHg*Z_!*pO+#efQ^vJih_X*7~>q8~Fa?52wdh@U!Fl`o93* z%0BRIXD`B+$>H_0;x`7xUSq4f%VP1t;&kl8i(;?jYR*Hprm~LkHqSY^bJA!2sNfaH~%t$b$mRFd`%{P?9U-jE^7|6zo>Y?t2y=tq<+51A{VEu znG0g~=m%!_!6A@SUbo^uLsb%AP|r!_4R`abWbbl(cX=-|%-`kgg_ZARJ)w$$n10mD z(mrLR{kM>Ba*dqYKHppIAGNoCd3oKX6mMVj za~IwSAJy24y8%PqN$D5FRxCt^{Ta{*{s^46OZ=J3b2^?5yE^9Q2pDG~tijC1xY{ChV4F z6YhYX^{o51Y(f>!o}TC4@P_S^0l&Y;CRoqT+L3m;B_l7`h~Ix^_Ib(7cR@F+%j>Zh z{~yz@B7%Nf&ys$-$)(>TcP9OQcpCaGpij4-PnxmBQTh(@kikB}Ok^b^#!-5ZXNe_c z{M1oe&fm^ej{OBC?8oHqFduW3TxQU})T;Lu|Bd%!W@-BtK838JS7JXVm(qu-_0z`h z{v`TD_?;{8CY9HHVB@v$+~RjT^4$yGCankFa)GyAE4`At*h6QG0p}jz87S<_(3Sff zs~R#i=Q6?d3G;94?J2k_oVJE>`smIGoO*P&H;#!Wj3twwO5f$qyxOVf*Z2+&O{01ZBi-c1oXP+G%T@WasQptMG?s z1hLC1K8S68k}>E3Vua!YZ)PvC%sq>*D?V@w<&oPN0m_e)*fr%#xK|^8JCV7piy3Qk zvA%7Y>~Rn~ENeNWud(+B($|Ro{77(NjIhrpTfO89nC<;dFMNO}5})4-J|=uw;L!+t zx!eZ|&o@nY{Qn|&9y?2T&OZ%2iNtaHqR$TYK&)h5Jd!^D0X+4bd)*hm9r*4Rzlo!C z$lSrLl=l!fSLNYzv&aW`kq`X5{LSo{l=UG}-of*~OZ~``k`H3GNTu z;G`jE+fBaqwqK{}i_mW;@I=yYqVQAp=!pCyR|-Gw0>2k|95)Jlxa3*s180~mrWP(p+0<;cXs;lfC*1DeK6t+ebcWHdmy?mamh$J{_!l~Dly^uX9Pd@M4^xH zQ|wtJ9NU4T$DT#-Q}M45{&D5N&w<#pZWqF(UD5I>5o zeE|42q62;DYXJIgB8FIqjYi&7O#N%)KCKd6IK_W8?d>_IfsZ{MecBW0KZ>AjB>ff& zd{OivAo>99O1KKJ7e(^Sp7Ii|Ub?&l8gmU)N19ISfYb06@3P2_L@ z{h!!3>Hj9$DbMC<>I_(I?M2fFVa8# zH|2Z!rwIP3{^?@uH<#G&mEb>aAM(m2^6QXi)CYY&zZ7neavSA9i^VyK0vQv8$2tpm>igWXaVB?=5_%@U0!+Cs@n2Df3fvtZT+P z%)Vo_3EOdKXMMjm(%#aaji)~=Kwq=aw+YMz#&I3sc@wma%`C5*$i=fd3p#c@&s_4n z3I4}U_S8+}QoqadG@iNC@4y*GaJ1&`NaO5>A2%!6P`$aWpgZlYQ}A79J8O6gx3cd-3*Z@QL*2 ztnq0ydvOl<^lLA!!+vuO)LuMc!WU^TEd87kY0pgk+=0I+{!FaL#HYWe#S{*&-|oXvky`iJkdkSk|^PLkt)Ivx{^lm++OPI* zxoY>FrmYvvwpvU)(HE6lraCaD1{37+|tLpPxX9>@Dqrh{f{p*tghZWy~?`r(V9r;t^C3}A)e6;sR!pCv+ zMI~HPUg^gM^n+`_`fuV9ZM?WN%J@n8qX4!ctp7$HjUR!Jtc&eyyjX<2u>0=;`jT5H zztOT65&nAsU9tP`MLgdm^;`A=e_hdwyWn4>=s|2RGa|M(p4cAOKxqAlls+L#3%Lf0`?pQpqmBpr z(I;;o@rYjwd{OjiXM{dUfBdlEZ_z6ff9TT-f9UZusXvN7DSI=Y_yw1;N1|W0_`0Hx z2l{Xgls&ek1rMdq+GK77@TE_-=;KIZ3_zaRjnKl8;Bhk^RL=od z+4d~0`Z4<%2VV3(OY>}(Ib-G5a&}a-c;#9(|9NhBJrZlc8gn$(VQC??w!~cH^jd6r z!|t)4R%OI!|5Yw_CC8)o{tTBG(HO}|bgoa%=Q7rzWz=4A$){DD7&~Yh`M%YTiA+F;L7 zkTs92LH7lSUFFa(R-jknkKsS;mo>WVY1!*yjan1yBMYSt)|ClvatU5O6R%C|$1vs% zd&3;dTCNx_MGs#lryWsT^Naud(%l_mz zzPD)CdJ$)Su{N%)*x~DD56VXB-^cf@JhxuNelqTA-D(~@WnCUQ^!4){u1d+D*m|&A=?>VRMS+mc4iW_&EJZWJX|-GjgKA@S|ujjOqn-_V&AUyMO_s7qTvL4jX6%TUq-CZZD7IU#aeVeRL-@M`=s^xt9R!&EtX zQ+xD3xB?w1L)R*h}F>vN{==??!Km(2s+}goaXH-WT!yAnS=`-JqNaV*DPfauRgITjM!S%`eGbHP#Hi zw42=5@v5Epj@!u-7`O{q#tJ=0v+qjwPG!`d3lAlyitK4>z8SqLzy{n%pK+J0`;tAg zM&1L%mR)mF>|rss%Q`FVS@s4ko$S$<0skR#`&N@%PH?D>HDEdfZi0in7aSyCli*NI z-XDSa5Vl2P-qpjb=NN^9$`_Oe{aCvlpwE>2J+dDAYI3($4C5RF;4*Ud466OXf3W@> zn<{ImBk^dvl>BqhUiRgRU6Xa%(vNnOIoyLeH)LAu$(IL{S8`qK;L3I6l^miCu6)kx zasQBfc!#gmLWi(_jwQF9d?MBpk~Sqjx8&gS(5CD)!+wXxu*Xbt3H}Vb--0b{r47N! z`nzq(Eho!Qo~X*q)^z`pi6>jiyzVDG*r|SC78nKAEy$lGEB9g34`SQeS(7gO3(`k5 z!OvCjQ}U00=!chm(4hS)Pv{`FwS#us6yMo1N86Ej*T!n0tzOM7_*nTg2Z8&yfL-!^ zCN7zFQr21frXI8^rgN1qi+0@ z?gN^;n|g`{n`_mPf$k5X8N8G|w0`!H1U}S!53|O%=|krB2eDTcn#ub1`_3(Ikp1v~ znf6(gj33xb{F3OnT!LH4tGVv+_|{F(FP7&mo;csE39fyvyfdztmy$IQ29viDD(3tx>7$-Rhg>c_}_oitw~xXNCF zn=bmaY7FOVG(lUbNA^12&t5PG@!BADjE~oJU{dt_41dGp@`N-k=g+dv-R?IEts{NM zfs}ds1oN8_b%`tp|Fcd0OCM;(yA}{Lu&+1Xkm?DgxU`o%@xTurg2O`i^8~)FQ!9Vi zr8T}%tT`)1pVTvakY^V>coiP7j^i?koqqxC4SbBX!P0(^{dSMD=}Tm<^K0yZx$j)r3pm8rSmDzBH}al-`M15^ z$LRh7-WPj9|K00-tj<}P8?+4*e1W*~hDK~;kTFmb`f=He5N8BSpD+6bBH@SwhIqZE zS6y*EZU3s*`*?k$jIYYmd_^wWsBv&6W0`7WOh0W{G9mqg$i-NjTu9%r*(MuyeO!uv zWZ%zq5MRo_Isth~q)!>7w^VaxVz$e@j5Epnl?ym)gR^z8(SoDMbo(-RLVuk$>eH(B zWymkF$(HK*y7UEp`f`ge>bzsVk@ITWxZ1glydW{;1c|9#lKELx2Kz}5b5@Y7+c->F zKRH1Rej59j>^QbmyMW8#Zl4;fcc9yX^MS)*T~PgDbslBBl$k>r^4HmDp#04WW4yUX z*`(h2*Jc0dLgY&NxeI~EiVJMQ@5^G1Oug`E-56gczXh=ijbpH3rmV?0)cRe@PUyv7 zWXqJfj9%}NQS?7B#uFOd>wTP_IgI{q)n&dca?v+tBM+v`J?;sacEQ+dI$QHRoco3M zePZRui(@JtyAS&<@duH;?(PJ9I`ZGVbE0Y`@}H%h;|o;8>$0vwjjicBvr?e_DDvpk z&+vKp`$SJ!_ODhX=!JrF!YF*9pKfmqhUIcOa2Wm)vTx!hIj9xCk`3P6WAP>#pN`)Q zf8U`0TDAW-tpB3pF3uj4@$E`e)`Sm|Tf^G3X4iA#=Zt5yjv@HJMb|N-I6EfN#vxJx+G7`M&Lc4?^}3op|6qmE!p#Q2jhgcJmN$SN5?q)OxbtcjE^k) z7aQ>{#n)u~yFuaxUiP*(=Anm|i~Td;YR0!zb%}jJmIFCjXfm;lHXLc>>FX!?px zrmtxKeTB_eTxj}=Qf@r`yXx1e<75u~`cdfgktbyTR`uIE=7pMKd&40<>t=kS7<{5d zTGK0Ah_i`Lq@HO{o)?)uQ7pNat#+gjddbtfEj0!t_r%s8;JbZD4uAC7{}(N^o4e(U zBG=RLt3$1SF>=Pp-?AV42G*U(yGbK8J#&mhU#)5Sm|5Df6?sE^i^h0#$i%Gi&kxQ0(9sXA10uk@2M9=c}2On(UyrN}A=u0McO>|CR z-@@9xRpeRd?oLBTN9f%zqeD+2LnB9^ud!}?t$mu^|Y>j^bg<<~KDufrMsj@9j`$SPhSlB(+VV%V z6+>Hbw3R?x4@R_QeD`m@c;xZ(nT&-h(FyXs=aSnBy34p`o8&2^zq_m!T4cExlY_ti z1?Yhs*kK$;JU5p!ZnEK7>Hy(w|91mkIkz_W$anN+Xw#E32Y5Agj{POR1K+3IZpM?u zBOTpGI~_8vvdMvk$Db%iK7|cgoQoi3Z17KS+HK^Axd%Mt@A2Rg69pG1{c7&_XR7|x zKXqWV|L@b_l7Zi2;j`7mXUr&VU*TP|yU^RNzVO-92R<@hMK^lznLPk}6mK>s;xGQ^ z_Gbo&&wVC7cDc37lH^5cMh3)=O5ZDea0|BL^^KfYhppI&T~K+8D3c@p8@`nEu}#>A zpOFu0&3Lc=0692Ys?#`odxU-veQv4F*NMR$uSZvzGubb(_XU%*{MSiH+Wp?30*lrK4hMT4>jm?A%2GVCtm|cku$lJ?Dy_Nx1FXBRli5; zL+Jyh58bBGuT1&|d2_%E8?hmm+(`7#>f6Tk!}Z3R7$4&w`qr}Tjr1+A(nl?%zsV)$ zV(H@(*c0phFIYz~fibT2_&$m*q z_y^y6j{%=RanB(w!fi39nw2{#?eAa)#re z+U04VRs}BySKusT9fF6vF26uOCMGy4;|9l7?&e&cJ(IoqUUa-Qd$8Ub{P;J)zy18n8HkMGO5D7>)eB@wIE9-)gQ5ba;O!JiHMe-b~C;om*r0 zWcKmX{@O8&IWp$5Wj|{Hb4KbtV{zW^ z%VN%3@}5|8kE&*od!snd7(OtAF7)d!W48p@EmNHhObv|7)Yy2t33Y zt@X-Qdka+j$hN-H++R?DJ;iVBwg0C`p3|7S;W{9{18ZzO>$SOjfdPc(g z?Ot$&_aj|>8n`Yt;j-4tSoCFbp%*{LVY6LatRpgV(wg+rJoJ5BPwo$?^?^c{l8xs2 zI_|>noxoeNnf;zz^6Zu8jk)e8x$NuZ3*n*oO&O8m&HJ_L3PVfrzJ51M4hxaeHe`_=3HrjsrX!=q>zoPVo zwPAg&@BiR5?f%wmH&R~`BiEDK^koyeWS6fjo+Ih?8`>>2*NYa~_Pf2v`;D@04?314 z)mM@%_huyAYpL?5D(I z6#O0&e(ui!ztKC?nSHrwm-=L_&7A0Ej^)0d zq3XG!zcOEpWXxK&{n9997zZB9-8YUh_ijJmRtCRjLm_?*^qekm3q8djFWl-4ZDUP_ zykqRIeDtENj?f8c@&I|{e#do;E8D3(YS7xq*(d#!6FL*93G2U-@9_K{^xUVF$NBIw+R2(kL>0AR6EWhj{E?8a4~K!F1*0E@SdVqvN`Xfm|Tn{ zDUM2s4>gU{LgVoniy0$Ij9YkSwe?@)@Xtnyom8=b4Q9^%>0(=&fYpU<`!V>+^LTQ3 z9^jqO#+oA*niN%gL(3?W$^5ROQMJRI&o$=c1ovI7C#oXldync5d*Q!9E5E?EayYSj zaQ@p{Vf;rxf8rP+&KEegsy@TF3OvdCShq@Y*J`7D_k(KzT8thDHNo%8rIayOoWPmMP;(~eKgsral1pUC~NOV#>;u)bJw@0Ga-@Oe`3 zF?9yH+mPFY+!24U$~^#_GTy-lI#p+`_%|i%E2Ed$mpke*r8D+3o2c&$xe_Y4#N;#B@_GWmOA?s7Y*^(<=o25SzQNJ(*%*aCuX;o4?fATUDn6~vr}8K9 zyuR&Mz-i#~<(uLDN$L0O>8d}mGM=5); zJ4zX)=N}k){`)9p7K$ynbG$DPyk3e@W}MjPQD5^FV=tbGQigh%-yh>Erke-jO=5lcV>2^<)GSssz z_c{aSnNi9(rJnB^a(!WxG7F`i!DAKQCqyZu+DeO8@;ug7CTc&i!y9^n^#Q$njvbcX zhJB7u(}}7yv!9T@LjGCfvG$1ZU}LJ*6-d^)K4gBcu+kg)8~2;?1~WusO=VK}y+7I0 z)$2FgH~!S#zXd4k^c1H1lRRA!W5wIq3)3aO{61hLzQwbr>#sKds9*S2nDFgN>J1<7 zd*HKvv*458Ecndd1_IyHeZY6zWvrKPS235go-wV=H?G(<*jE_OdI9;{HN>|t+5DSz z1SKQQzbl6LZpmPMKzuxVf)dF6pU8aJAiaL?&l~EGJk#mW5lafT$6G=G``!0LtpW?e(>40A~?jtXWNSG zp%y;dRum7l@Y%MaW@w-IWS;wIga4i1cY3D&qf`6x%<%brKltRG4L+{qFg|(7VSFl* z!}#nm{_ykk>#HW7Q{S6xz z>Ye3(egBN*?S_8v`H-^~ES>I4-c&wDwe~DLUT@6Sx?J^z>FCXdl8!lDg_$Mkl5bp| zi%-nyT9iQKZ^D<`)J#0x4w^d0SM z9$TBm2@6%560c~%K70CU_lZ8*b@kD1^GHuu3wCfLwA#tFkjt>mhCgn%8%u3`d^lpf zv9v$_y+5a`JhM1mhi71DF1ICv7Oc(XPd}^31~YwX{Fc zY@5MSbiUE%xBF-_8sB=iXYkBwFVAf6v^=BD>3y_$wmkcSJ$#n#{oL$N`?c?R!@~BX zVp!OI>>3ufAFknj+KhZbb~%8pGHjE%2i)e<ESD`0$Ot;tZRp?0_Qv`^_Ncn8QPB-uITpTRU0m6Y(Hw!!uSN!!uVv52;);c zqECG4vsN~EzO}hidt>(*`-jec@L7Ete8hf48!x@e{^G*b-q3Hj-;^C5&spzfywvMA z#!EfFp||$m1~Ojyz75uajOSEacbo9lgvWE%`yTkL-z@m}M(m1$&-`s5@LkpieErJz zt`T8*aGevDhrDyb@=$S3-|{g1k%sz{&vh2M51g?)+}ktfcj|b~Wy9f&C+z9mc!vH_%q&cQ13KQHP?Elx%W5kYT3S4f0d{%s$y%!F zZ3e~~vtE&%rRML}xAL8m!$hO)V&rcj@U4X2vi{HV7ZcU`f$)5+$eAA*mAI%?mxpiU z{5Gj`;k9$Sa?O~8{5~Jpw*b3puYfit8)J9YSacP`vnJ$b6*v_`-=caWmSEM}*WKUa z`<}|@3LBsMvX`Qdi7GZ3#)miw{CCi4R;wMNZ%VxE^oBK+t+%q;}uSoe`EnRMZ|)7-Ru! zQ>4z~G2uFE#)Rt(jtSS9J=V0dgNeZoAqG2?7;Lh>@u{CRWNI5b%SZgZGqdYNr@w+Y z?P}t*>xt7=5vQ&0BTidj#A%5oJsPM)u2viLU57le->`?){z^~RYI!%)_HMPO>ppoG ze>HGi103H3j%$s*zLD|Z3ZtFCOf&X=xuv(9L0Id`C@>#1I>YskOv;6CS>MZ{fe%vVh zAQ#X2d6bz?nFXiD%~|&?`MkzM8-M&&z<4z zosehfNm~xua?%zt`4vXp^Z^FlU8mChVH@3LkBQ99$iLttp4*!r_uk%GlY4vn*1X$0 zCeb%wKgMG_=3tZKuy>QNrSq}NiP*6#6N}Q9B`!>_z`k$f3esmfrWB{=O<9`0kh|D8 zqh{lOf!Bq-%$ik_o;zz%y4a>H@XH0iEWYr;WZtnqK0lLZ$;~rg%3y;%@;i6K9$j@(;FIr~uJv>^yB7ai*55fih3PUk zWiRtH=ppud@!mOI{>)p_-(U?^)1|~-E(*g`gZ++4xh=g2egvl4bo46X$k(g!NH3VD zf|~{N8rFjf%t_n@<~1hFN!$fyi8FKFa~Jv3y8eMo2+oqPMeYgaU0|1I)?cW*le^Tv zNWL|36WYpi4DaRl7*Aokv@7o{{0s4e`wA)R&!OMQgKqOo zx|wB_FU0qAxX2&Dca*`NeGBdkcGc{g z3|X-A+-?h>Wv{Ab3%_aVq~#y1jaXl3_46_Kvhw$$irHOR_#U}j_j?wluR@k8&@H>3 z*#AZwH)!=2`|vSXhY4L)yKeVG>(6R5V@{L486O~|;TQG1qfa*8E$n&MGv=jlHt;$% zj(@ieuW0!^^@#PO-b&_V;cXuMI_o^UT>BQMXMt;;rzl;+MmSOyrE8;#(qq6?!3}e(_YrJFaf0y{#i)bs8^~M@|X=M%}9(&P*y|7@9 zyg!{;m|kS+CVM&4TELTawkqaZ4lNzvDD;!>n!xXI6F+$tTTsup(l%$rcP)Y!TSgi7 z!Fne;-vX?K*tAXPOc0n`fO#=~ej7AwWxQg+BxM#Un^l~?n6Zq^cePT!FmrLbSH9)D zV!mtTyJE%*%3h|<>1qM*-RSFJ%C}LbFmp+|gYvr=$5>_KQx-C&Gs=lwYK1>akFKBF z)skTP=jc%p{oF$6RZo2ezfO(+zV`R9u14lZQ2wtvPbuvGs&=S*JTg3oYYTSV!dYxu zedeO{1mL|7{gwCP>q{SDv~T#}5{KUmKVIis;g9uw5#^-*g;&k(`uNLkSp$uqT%10E zE03!MJj>~qH*qcGvc8MF+uO3+rPVfE-!koz)u&tXx(A-w^E-*0N^D=oF;`(XWh|rQ z61M2It=* z?5C0ICA`1KNuH5{S=#aW%zL0q#cR%E+i+F$g=iOC*~&`F{c@IBs1jjGA?C>1Y+oaJ~*2zt6iF5$_}UF_&_Gir_~(^}h};CPjQZ6JGo*f*-#Jo*@zN zBt|@sh^WVoeK8|%hOCx!A7RP>C#a@sG^nz|X8rZ`ob(p=$O-jWpSZcUDLw>?FE z&8Z{w&nsem%P!TX9Dd)q{K(c=_tEFc?IO0NJkIxztJvFlDSOJ@+BVsfljV{egycXW zZlGazwDK6=AFpBEF8LLTHsYt6?<7acAFTHthwZ(~_m=hEZ+pMX<$I0ye(E_k@7wxE z*I%!HQbWGP*_xhuokJhNp6z41^YxG3|Bn92%e;Txsi*F9=_AI=`>T0>jsD5qQa+aQ zar%f^yq|Y1^<1Zaf;^?X9#8oMeZeyW^-c zUjGDnYI|xf>+%-p2Xl~x>ph|1*7CZJit@Tct37p1&wJ_)r+Sw+7kifF|W8gOIn{)KE8|Lcg{2OE9YZLX4Zycn5O54M}>EXRs zPZ`ep_u}-A{}Qhsv$ZYlO8ZvZ(yp{G?MnO7uCy=hO8c)`ZL{||%WC@%xq8~4^Yn8j z4yf|19rI3H%UQ=hx`3dr1H(rju zq$W>kb~%u9CvxsY&J*;5mA6r6B&1^zH$2B#LoxE%YiTTTE2spNzgGl zm+$8D9l2yL&F4G#yA|3#Pd-(f?upN(^si!!idXJQb`Y;TuUCA`|FSF8wA&SG+~EoZ zUUh{&aSigZ@Mzzojmf?2xQ8`=D!wWE>#A}?!4DmwPtYS(_O-NLWvAQAUYZvQ=1?{` z)F}JJ=w4;dx0ij7vUfW}A2a`M??awqU6-`oz04(flkvSIA6rK4yKkSU>K+NLUd{`Z z_-8L)rOler{g=e$pVL-ZnWhJJ=Y`lS`lA04SLlLS9{uooSLg_~PWbgU#0hSgTH2mRUSwEVRviANBRZ7p-s_c-0pCB*K1ZphHR z?|D7?u}W8H7`ZI|Fs!`pNR?JspbhJg98*WjuyNEOd)vqnyl)k-zYp93a}(`16K8G7 zfTv}-3YH^P<#k8P(DBN=5c9mXg2QoOzO?f{-@hv^werUcwf)IUE<2f~rByyOT&ok? z_Y-X2pU9!|^EgjvKI=^6+lz11^y9=TY02$@b<1?Ll;wbiQ#&~rn{iE#RzhyS# z5WXu~4F4pe`#i#vrEw0jtuA9)1Y3+>3W zk`k9vnev*pe?PRl1lkQ-a`DL&Ev51!_>*eV{l~zVPwtOnWv);fv>$6 z(TxuMSXo}k`rZW}hMuq04f#F!@}lwHm0D}@>KHJI99lAPOwnEo9fvP|+G|^_g_0L~ zmUsV`qjdh|-vzZbISw)|Y_$0zt27m$+-xsW}LF3ESZ0(&KWJ@wU}Co($O z_gC=;R^)}GjXURg@GHjp?z)~kZT#eBkKWT?f7huW1IM0z?WSB^zA3#{Q{Vg;-H~tZ zyqUYy#rk-uOV-9WW&g_Eyj65EFEr)+IZG#!x3d-9ZlfRXV1LE3*rC4L*u!=h*pBf2 zsB0*BJW^`^*Ng0*hlZlhLQ}g8*mYm%ejIvRa?nB@SD~9zFZSpc%<}3Np)UdxK9Pdy z_RBT>D0Gu|MM=QvQga$h1%B4-FYTz#3klB$_3${U_P|8u5WWg5$irk{c{4_vc{}#> zj@e%QuImii2^>PBJLYkx?YqzcfvM1<-OMoUmLM02&@M>cR*Qbi*h{pmd93eH(!JXk zzi`I1+9vi*Xf-)b+h0JQuyH>lM*{LK_WMGS+Xar&dgQ;m2>HE(JNn__-sRHLVxf)b zfuRGj|9;6sar2q|ITDQgUzR zcXu%kS;jrlQR*e`vE;1jX9 zo!}&GdzNVVZ^+*lI7-`Sw|fdUU@>=|19uy6wDkdp^n(^Gn}?hoEbmGCmpDp`OuYMU z&$HcXZ_Qb@_ky&C4Gi4bAAV)q{rCt%>+cRfJNy_Jrgi_EvlfWobuZw&72)@2&My+1 zdkK6Ond5!YZJg0}p;zUXYKOj)V^6ic`v*n0z5hu&k+%9fiP6iK3S8gQO5c+9zXKdM za_6}|hq)X1?S8G)BkzD+<9@lkdlvYKt9NfuZ*$D{vx-l{ zH&aKx9DH_sneVDU!quhBP_`ZS1)8tx_{xxi0Vrugyb5;VjWu<9btg`|tuq_|3 z_CRb)IkqL5jUI>%I47K)(blQjqs5Zj1(;0#YlG!~ zl>pNV0u%Y$#Q%~wxRg5^*xoi_+j%{CU(fgI1+m(3FZp0^#V!s?&}N)}fk&S<-K$R- zX7qKpUS#wwx8Vb}+xoh8`nIOL)pgDD=GC=4^3CO~Q-9!YyXXgQ!;UA`9=`w?siJS( zC4D1x&^M|$!y`kNw@f|H-Fne^?sjm=ngR?C?fBYNtcP)HDsO`L7=gQ8Az}vP(IAH* zec4WYkigw}A^Ar7w&GNe>hmPuZtGKdp=|uy3HY~@QqF*P_+e&$-($b;6Z-6QmU_{} zC5&s@T(iuxwTCjUOsQQKuRU4;zgqDVTFHwk{zL&e^78H_A4)N8uW*Li@Ne4b<0UWQ zFOl`H%CD$>m1#f!o_uzCI8SgzpNjJO(R;BoW_yQH&aS)Q@%!{}; zbH~of`z-9E_)9q=lh|;PB{|dO;W=m5?hx9I)Vrm#quXzX!0B+6CWt-$1X(ccaG!ny zV|MAwmY*drnjA)(j+y=Nf|!ZlY;WyZ^5QLNZ;0#keT>=O?PuBEGtwS5+;MS#_#ta% zd*3?C_BKd+e{z*hPKAdnU8QeHUoqk|_=@jkwtvZ4wtuIze~C-wAGG@(H;Zfmk7uNo z|8*(zhAC%tuKwkWc#p{0fuU!o3s;(L?#%9w56GF>-qEv^>kFm5{imV3*ch|D_s_Du z;nE&_-^n;!>}OP;*KF_Qvuy8E`sD7f$CM_}hjx#MDV;1fGkuJ! zF7fEsxV`$7rf*>%M<2BL76<$AEjoI9i$R=Al0cj=srI@wbm25U#zFiA?*(4YMA44x z#Ay2SF`k}h_!#odzs|=Pbc&C$ROt1)nEq|A$cV|ap=ZgnYoxt5VoHgpD;ep_FP=hw zX!*q-x>=({tml4WfZ`VqXU)r5_{AF}J|JV`slXxkDcpYTv+8Sw9Re1b)szp$vg`^9Qvi%;;pnB0$R6Jquz4o=)V!J&mF4b$rE z@J}EX*~nUhi6hDLAFFY0f#&NVPG8O3CUMt%Ip;>sz>-|ezm&B-+#lfHNZhy0jQ2^r zxoDa<L6Pr@> z?1^1NKZ#TNiDRhvmc$aNOb2B+*znd{Ntr=Gju zONKL5#ifr!|DDX+UQAr`c#&s$hI805FV9j3dEwHm@<)L4n_clUju1P4gL)(3Qsbj2 zFeL#~7X0L_m;GhT-@FU|WNzR+U^yBX?Azf;?r?AxOzb zJ;B#ZUYizT%dOCwSWT@T`klv~9jRC1L(Ca5Kf!z98TCrL_@^@h>RcFNRw>LaJbk&Z znLLz{^{{^PH1#Cd>)E!de7bK7>%k)H39;v7OIv`IA|X&_-xv(MM<#ASNes_pBu%m$u|o)@olu2gRn|mSc?D?z+*Vf6BOR z+7+69X}&|B!MN=ZJYBa*^RXYnce*iC8|wi&;JxU?5qNiuoa5$LPU*)%*WlV5M^eWi z`s4N+ImZ`yviCn7FAUQUzdBq$SS|D5-_j3OArF_XtZSa>t!ud}cX?~aYbq+l?`>HkTMX-^e&v>X7rG#h(6&yzW1MzH)|A4mn_N#}^4+ z&s-VLw-FFL5uk{l;a)^?|kZ4g=oyyYfQ6g+4+06Kg)Djc)|cwa^Pc zzqSawlEsU^*=e2RP7LvKX z!!=sy2>pP}_sO~f@rA@^!4~zL(R`RQEcVUm-|xw&b*MFLjqvx#9j?&0p&otw`Q>%2 znX3c0eOmdY*q|Y`zaK_kOZpu4Rn+-uuTlD;8f@SlzyKVUujH5h&)V-ZQt(W#t=Pr+9dPntQBY}(CUP*0pJbd z7aKM!2HPm}XmPb4+(=sm{C+uh6gtV7!Qi2Msla+{dCI3%D>Jm2P0XL(U+7uBBcFH) zV}u<~J4@$dgLhoV`3dw*_p^@R0A~TML|2|%<8dEgO&@Ct^Ea*nj}&s&#W+>&#KE_P zWL?t?sV^7$`=N{Saak{5tYI_GNtXKSX~#{O9apD^Cy8zT7L$Rr!WnmxW*NB&&)aXSSH>;Ta4lz@ z#eK{h54nPM)p_vZQg|^FenF!WXkHE8LhI^juF@soRSj)2*-s$P-r=m*M2D+0wd0#6 z@i+bND)eVd^Fs|=u70L-(FN~z-v3;4r>v3LG*R~SXlgCZOkyC_(ACd)TSC-lHy8Be*i z&_wblzBxa|7Z;<2?vy%?Q3rEz3g$FoxWst{=KD2I-IH4$Y-qXW`A#`QLgqtOrFh)c zFCs_$EoaiW;30Sm-SpAX>2`&kZsi8u#?j^h`0IcU(#D(c_bK@M z6#QKbe^D%6niK~3Gkl)B<(&{Jv0Nn9QC!UOR#8tKz zl-KP^QE`HvGv41uemX$m( z(7$ZjE{<_k61UhNzcl-#%i*eAYPQuguSZ+Iqb)g?X_1oAh;!tz-AmzRD`REWVec=1 z??X6e>EJYv{tWo6Q-1PbHE!=P$L)B%`b9XE>}45|%4 z_eT1!;qbCC2U-`yOXwne?6}zzvg$?`YyHsH@kRWMLdGczhoL*ro&AQPX80p(6iR1x zS7maRr<9AV%c@8An@6*YmVbQ_cv^o?v;94Vzb(1_9`$IfA(l0PIoP@(tbdO~P7_#* zJ_y^|Qk}qh)I|N@jmQvdF{OXn#N2C3#sa;2takhvWTKlj*gLUr=((`h{(7;q zZziC>8(6cDMBm0al0V~Ys>Rrt-G+VHw*(nngME1mo?Q*kCL?J-!QWPUt&FexYVTsRy|;){ zB>Xi;wI{I2-m`9OMgV-oUMzm@p@wbe|^v_Z@lePk8>AXM6n%%sSA?8G(zup)A%n(O>+?%UQWu zTJ>X%d?R{>zny02o1Dciu^aYIsPoJcRlL@))lPVsHEX7?5&3l_u;v%qWMj)+Y4|r2${SpT+VUXl!kUOfxi%O!UE<1% zu<6afBR2hR4vhOF-#)0xW2Yt^I^clJIfvg`B3BNj zdos?;g3l7ym-C>WJs+QQ3}x}NCom?Ol*w8abhY_$m)=?vqqkp#&#{dCO7szHCNj2| zY@Ao%8{$6JMT39Rf2xc)sLj&6#HOKfoMr zcfz}!yPj=U^~+d7z6(BUe792Cm<;Un7g_u*y4tu^bF(Mk@WtnuKE@bNXr0*pKHfJ! z4?l1+WxqfgFbH3^7Q+{4Aax2X+4NPrrajxa3*WioIRl4A&K*bg(`4^~Rc}!I8QN+V zyG`5ot9m)_`FYKK8|^p0;Bik#FnIs4v?06~AKb>K|QpSv1$%|u%esbMZFb#oA-xz zJG1HIg|{n(#`M7je1qN3PmynC4Y)8;ikF)V7~$nZ4ZGeoa96S}di}1!dj+fL=`U@t zzS=je`=i0S16cnWKl47$oGlvcto$DNVU*77=)0aB)FXQ^cVd^6p8O?#rtGs6d45HH z+rV#s#->s4{eKSEn|GReb-p!XH}g(PZWPNW6I*`hovuMwWZ+PbJJ3qQ_g~aDY|SwpVOZK?Ahf1S!2W}HUdMn&=Wa{XhI#l(YM< zL;h^|$7`uKQHyu4mD|{Wa|OI!GL%mGNvhE2Of=tzMhu0#0LhTkCd$eMt|jFGK6 zMQ#MIh2ZrX<3BrI!%e&*arpb63>=jI<4RHfba&Zsy?a-TTjsSUU#8{D+(8R*+(Vq* z*H*ziLK%B)nX7E2?eWOQLE^lJI1_B`6pvoXI^1<8E=!3^d=4(lh?yS(7s0QHJtx5% zy`iQT?yGBlIhT3MIm}yL>25oErQ6Rw+*imm-Oia~)1X&7v5NDV^N7Ze7UIFJWyAw2 zhzB5>GAAMHa@TQ|Z3eVzyMVPkj-k=&%F4u9h=;i-+_YL)~lg&zcLBeN)yLFY6fb+cKB?6TXQY+Z{B&`vjgu z))_Q^i+o>fwFOKPi*E!jtF1WN>Z_f7Ry)D?Q`*^M{>J(SH~r|0R`}QkKV_`W`k(xI z`hWIq8Sn$AUH5)t)eCN|=&R_e#E#_r1WN~=KnE-}toZWA65P#+vom<^L1T zX#6;$z0GF1pWwGkoK1X+^NHy^J<+4rvQOg~*6g=UI!8Zv(MbIe zg2Us^V9$a0@omXv+uM@j+{6U;O>ta+J@9OA-+GQ733up^hJK%}-Cn=Dl7IoY@{(8+ z09<#W_mjS@9|Wh*YmDCx29w;(74C0yx#}kSm%pDd%&|Ak5nuUnwF8+LQTs`D?^r~> zNx!zObKS(FE^AA@+Pwt-we9_R?x*2>Tg^N-a|zSif>*gG%l#uSdodF_5}|QIV#3~b z?D6Cw342*n70NK?=(pX9oqGTt4~q4K9)ABs)%h-di#7HfNO_S16$?Agyz2`3adevT zId*=KF944l;qeDw$KJ2Va|c!+&tmVfJt9x?{k_=JLS#_MHS%khn{zFEkUxn{$U2=i z`iYnkbC&wC&C-8J-_b(95tQ7sGQKqJ>%r%*XI(|Ue&l)V+p|u6+Dk6|!U@Faun|_= zqL#5-BK9=t60bf4`_sNPRquEqO+WlRwiiC=$X5HZIZC#2OxbGRdOc4(K$AzMqQ()S`;IohC(Hsn#}F}%pu6l5#Ml&yATt9@Cl`)y?FN@S}8**bVpnw~gV z+uNR!xL4>Zw0}F)eVPAmWF5M;!}l!U_e)G&)_#zqVWrSkVy)0sXxavC+o5|sbZx}` zHp4UH+@x9F1P&&gS>&AW`eF#o~6T>Bhl^DdA3 z6Z1U#<9V^lUs!sf#M9z?`wK^zL+GX+SAx4Gp19ga$jRqgsPTl>%V%h}`3!3#e1^*f z&!hM~AA#!$Y~ttmaory3oKKzDk_f+{8$2Yg7U?&Lo=g8eZ7n|Aa$`?e^;-5;;b&IE z<4o=aiHv>6+scSvCuQVLnVs4EHpOdvAMsmY9N*KA=o46{L2RO9CjH!{T4);a_Y1%7 z)h|ZQ4!t~DKeFRo{n!Ee^q0TK-#76$?`J0JM{)+~$8Od_0)yC~X)opK7yd3!zj#9L z-@D7=k#(m#Q29MQ_!nsL0&A3BmNiOw^!0P;>*u=tyBxmXvCd585V@W*>0OPUU!}&W^ zKk*cM(vz;&1CQh)=gy9VbVJSq&^E=14Sh{36`4PVoFD6mbMHsaFL7Sr`v^Hde(kxs zwBzS*nR}AIW6ZmZ$Bo}IYT=3UA@4*FQY7|i%6))wd1G;$@3kw8JR)V}V6nq^lHXJ2 zkq6{vhdwfuSQ~Z9JE>dl4%W~d1K$m?;0YZBPlw<+ZvnYIt|YgIiRb&N`X>>1KFvIv z=<`Y&o>>;2d!6om;F$uR$HDE`?nLI^i96D+*e}h7&oOMO(4U&Xlhj204AXrWJq$&w_5EK-wDKZb&`{CY3%WTzCX{Cr%s*PXP>>- zUTf`j-_+?d=j1O=sQm@=k?~o_k$IT9CC8{+l7~%i?T@IfLtPQp($AVlSkD0K-ocu- zu=bs-Yb)#D#@d}=UO{l+By0T6_wdQ^?jU`Ku-`hOPdy*Pej8$J;YsdjJ9IRCr*4Ne zcsXO6?sP}LbM&jayj(?_<}_d^?PMbX$2?8Olyd-3ky#OW`z>qqd* zA8Vc9PH5LPTo2GXfvLFWaCI8E+Pwz`fE6$r%-UM{m%#8Gzn$eb>z-E;A9o3Robb3d_#5`37sX#^%3Qx^ zeXM%N*~v!VeR<$Nvwp$@4ZEvd*E{rm6Wi88eiPg5oqXQI|04bk`@hmKkLyeA0o3Y5 z?ik*1R?Zc+#Hz?X(3VB~4!XYRkh=a@oUZQ&VRAFi7H9O@4}4#!(M)va%migZ=JX=h zXTU4dQR3PxpYKm`%@bNbsWNx;%dcd=P@}DfmByAsN@L~$6~Dg`6K>2aL!Z~_!|v!! zzgH!OxV93X-iO%MP8|j>auaLOUwi44DRCH|I((=0#r7$#Ywww&4XN_DDiemRD2ESJ zrjUEeK2Vu#@cbZjaxL(WCG^+*r&5pP8omdRcchMh&vq?)YX64cpE+0O`vRHgD-Urv z@Y_T1+rw3jZMJ!?p!iNt8omvAUT{V}r~S8ml64-LCB&S~^Js(6aZer2q^3}R?OYwT zhDxYGG>;lY(}h0_hfif`=WM{S7@ZpV&%PwazbEbs}}T>&x9G zuHfDh*U60OF5t?us&)?9;M6qshWS6HZ+VZ6>qPC`81%df)zt=E?&}o&2s_DAB`PtS zr+`6!Yh9sFGpSwFU;C0d_WxuC^@e6@*WN4jhK5t?C`%E@{PQ@~{SggMmWB$@M z8=i`PE)qs3xdB|(V-_65ENnwZr@!~$ckf}}Y0Fg`+w8=r?@n~R0{?xF`0xOD+LqB@ z6MQ?4kFO1%*L(Q*+V&>8WDKSF$l)CeBo4cU8Zv8;AqO?$XOr==KCei81n+7CuMhJ+ zRk7Cu9wwGSu}S>#W|8w9(5(2D^!TzSB^rDb8jyN4B9B6A|Mh)%(IMvD#JnFvPUHDj z=G6v0=rJO@=4tJFZ`V5N@E?yvCxi&CdH|r%jNj_ z&yP8h95w3{N6l#Bt)C?)B&MXSn9X{KZE5SWQRfQ{ooln~AxpoGO~^}fM{oIzJ(zvw zIP$znL;BpCh%vmLm`q}8s&4(V&f~!UiLX;71|i4mtbG~Zx$ZxV91^ux0P@T`Qiq{TP!FYUZ1J5|xZ@2HjENu1D|{ASozk{W))^*;W4 z?>|ZTZE+psPC4Vcd+(XTeYa~#eBY71NB+9)wf)6j+jBmo`2O^|e}gmf+o<;yq~2GE zdSCuw)Dc~VZ;!YSd9Oc%T7QG7^;ZlIXC!cK)7o-*c5RUcPOYjW_IOl3;-CtY=n_S3 z&QWa56<@De?}kp&e}b(Sd2}^)M;o!Ol{?f&Hh|aEDqOYXwT(wBmBbZpaA!ySTK1Wd z_y^>E71y%Q*b;f}P4$tn@#l8ziT}>`#D_NMZL_&fmA3Soh!0MG9$ZT7w@JTV&9!0g zHEKBr229mjhfdRi%n4g9*Z4h|Q-C>nnUlm*FGKceDZuCDcDs_9SMt}-uCGv%Yp~Zf zzpE;@h%8&>R$R}rhJs6FtZx@Au_hFW~x?-ye+y=4)*WD1BPGL+O`FrtLqQXv2W8(zI*Y* z%UG@Ltk(rP&ehso5W80gmH5;jYG+bhUGX9uWJ zY-{NHKg0(xu;FiA@YaX13qFdB@tDXM*m$XN-)fufIy;~@Pn*HKgr_}A|H~(s7>q{k{h%mbL&g*qQ~rfaY*fUu0!qE9eK8|eRF^OdC>v-_Psm) z+W~Alu~%04K)ar8sH-rZK%yU5;9>Pcb;8|aIOavZ%=bakw&)_ks zx@`E{mwW7q?a-dYMW4%1quOYOU=JL zKHea(ku??jYC7`|@4W;2)qHFN3p9~ao#PZO?G{z*_rnA&a|*t%x7<-@4tt=*R{9~a zZK09aHOG3i4&=vBUM6->@{3+TuL=~qri-n#rli|edJujS%40t+U_X9=_ULErdk1J8 zyF?G0ueGDwi+yxDeDSjO(V9fDkM8TSkBU5lZzDE<|AG7u(qeB(f0urbZr@y?HimZH zrnNIh(FNP9lUxqgJ|B4`Kiyd~N_Et9+v!|IT85`s>t3(7hifMfWogbF))3p0tXV$# zUighEF7jz7hR08LY4DaXdKCNCE#c}Zu6+4SEkfUOM&!(%e5bRy9h#bv?rbhpsRtY1 zhb7;N9OemQ*oWs6pTao|QIQ1_SRZLGJW%{w+8J!0$bLa^DwL{559oOj+0d+`L3F=g zu|Mm$fGi_x90VUish+6xA#rU%Xt-tIl;uL#Lep)~GdkppbNS8K7ZVyHyx+9lo#MLp z{)lZYzCUh!*UGDqz1ScB?GpRr=|c&Ie^2<;q2A}Sc(*Fimc8`JI<&ENzU}N2yV?K1 z3nx6w^zi}bZk{D@_&|6TxMt;9b7byYkq5Uk_g(BgyP=uAjEi+>1BcIocUDjptgWKmoYaVFZ5t&XM z41urgwL$jR82hW(vx3;|L_RtUZ3mTcq{jsZ5rfacE_KnI6{^2P#jGMOMG1!OV^9hgXr$v~L z*r9?0)J7RwaDJjoVm`ybBe*?73+E=fL|%WHI9@wE<$ZXHBi&JB$B)v@D<>3bCw@>& ztT1(7_d4ObDe&D?EtCyUTng{n&03)MgyxqR{*>{>;zyYnvK1SCl-v?m2>B?~?1rZ} zB4Okx@u!SRb69;TI$t=Q4c)I5eWL)IlDb5V%`!RhDP0Y_ryt>$!{*h~gcR3mka(yY@W!jd0 zLT+h~tYz>ou`M05@Gz^qm7jI7yd|<#=8~dS`^3J4{G;2MLY}ytso1bHjVdwhOvq+! z$YrKX){0)$@-}v+GQ-Z~gr=>sg!MXeM322`Cb1!A?aFKKEz*YEU#y*;+Yg&WhW2G? zrgna5f35!r>=eND^r!RiA(prX{adj%INRfjB@A3q54~>1?vyQ`7Q2(=5mqK#+iiCm z$oGKQQLqgf>G1{ zWXMXH)Q=oM{m4P&-JP1&4|`6AcCK1#T~DFb^;B)p59Iz3?q8>!J0^CfnY5p!4JzaQ z;X&A2uGP+A7sz}EyVPgcrPfIM0kj{eonsFXS;lL>4g1sGw7rYA>cwnNQyf=v&@%vHj`YP^|70^B!2F z)Slbk+h2MHTon90#r@O3?hBEr;olOwEqecP^c-`ITcDXr_{an3bxGfGYxWTy%{jVA zOZ{Fkx>P@ODR|A8OzhbGwItTLm31b58TcnPR3;=xmJ{Q-^GR|m6O(Gbn~+p$9S2ey(UX{f2CSn7Sb$$o^c|37CBjFdamNHg37uQ$8o(zBT zB73yFrP~8O6MMjulCR91M?eD!*aSvU_uj@_q+f~gtsur%>?(o_IrJ;nBQg}kBQTb*_8!iXJ<_e9lVf;S+`(;J>Z*=V~KgGCWFb0N3=y3_k{} z)*{b<(|&A7;4@V(4s!NJVv9O-{+Zq&wzQ9_tt00gMDpijOu_Nke9lGy6eQi97k3W8Q?fFfR7m850#XL zbZVdMu`3hhp6uV9Z%^a7={!dtlT)>m#cA4UXutFAS=!0%o>eimUu0PhIV|!0dk_BQ zCj85?e|NHfcdkfqeL{TvC-|37vNxV6bZDLN{kxNS&7tn#9&%gK)6;8YjUECwPQWue z=Oa%I#(q0MbsdP;8Ib%|e?YBmy@fsfG32?0Zs3PJR}HUO3%-xR#y5aHw}8C{dJd0= zrU!dmkv#mClNtYf@?e{$q03CyzFxC+EZs7~#k&hlOa#iAI4cWK8sgKW8fVj#v$;KxTEjkNA)g}wyB)ia9w`uc52GcvblnDZ7w;_uYD4} z$Fvk3*5cboE}Y;4)+UVohZ1Tx3Vdnn174wmS?uYvwG%6_m5x=ku@hA7Mrbp{_|RKw z_3<+HzH1@y?~wHv>T#j(Hpm)C&XkN(&Lm3$&+Zew9J`9xn9ynTGeGW3SB_w>IsF`X zDe~|$YHE$h&7zY!_U!q)(lfD%4s(3z;Jd-8B zSa_+_nrQ*9r}#AG13$JO!ya?nd5Iroy^mDl2i^nTKg)X$Bh%^rIQ)I@#qHAXVUvCj z`{`kH+z%&sG;%DX!Ms$heG+GFKo@PZie1OC8+jN<+tyi{%&(rYkPGEHj$GSDymvD5 z5ZkWsKKT?`Rz8!zwoh8kd&Rbw%U&+@U5##7f{ppRN@5K*@aCP2V<+^o^Xs+ilhh>I zChIi_B!0C89BE}OjrmD#q*1&39q32w?33Rhe}eUIWnHm75^LuP>-FAQ8rIMRy;z$5GN!tPMV=d(jf)M=$=(kRXt>peEG(6snO_%pS#HZ=+ zTg0``mch9CHI#APo3HY2{Ca;Pcd>`3LZcRbD)|@r)a~k4t=`JL$eUC*tbp(Hnt zV!bO_3mfu#6F!0p@S!yqUJKt1jc3iX$n#O`&G+%&#`8g*$A4SXhV3#3+oizkNo+Bk zuf`k=-;4=M$@OjAj{gJs5`Iu4aRsfp$mYCn9Q(ZFu8F)UXdPt3fc$chv z_7!rqcF^Y^C6T2ruMQ*2dkA7|7R5RC?!kI_<;LP99ceni=7+US` zv6xL$l>2|ZZ`)UOIoLIGlwq~LYMXWd-mJWMOKm;8*&k4JKbH7!?id)Y6Z({~jL`jJ z_#U8b+p@*CRzlBi=2H1PK7ozo7)d*;jaTG}e=x@#Kc{bsjMwh&`Xl31;(z9NHSA~B z@rr%lmzoSO@0Z{Dg|ezGq7qY~x(?wls6@y1fy03prf98OrfNa(+G3QO`9M>(HlFG0U+~6l@gZb_TDyg>bW_4*P;tr5R= z4*b!xto-q(U)yk$zE`Ng<7tPHQy{!f_Ae_8ipXD(c9Ltdns$Yf)5^MhJ{VsR=TB$L znTUO!5jppu@t)uL$w?Zq;k7f;N0q#b{Dz`W_UPa1!7sfZ&Z@ptKl*PMN-p_ZC45>R zubia;a^T0ys#hQBfZiSW+ng(ZaWqSHu2{`jokCN;q1HI$afhwiXkw1x$jQrn>%>ICk%LrOQ_{ zaHV&V+UR>U348bg@ZnByq(3-vjkZ|MhM~VS#_3DFn;3`NR|e?MU&q;<^cfycpY+>) zti;tu-$D8g(YMSm!d!PsjrL8#*Er(~n@xqB@%1QYd_}OEolJCfymdRauRF9;Tah6r z4aA-_NIUfgYiPay7B<%=hjxm!y_9U;hFmQ2xnW;Q((OwEw{_z-^oASoQK&b*Ze^eQ zz}kI>vS7vukTj0NN z-o)@BcQl`v-|z~-NA`NwSmZ@7a#Si~Orx(#HEqQ~`blLCD_L7`i2O6~f;RHra(F3i z8>Q_A-mA99{+dYM#WV) zPIdXgJ3WR){61Sn7E&9Fpg%u2^)j(3MM}25r~5Om(GsZHCOGWJKkEnI^x9!B+@ZCC zZ@$!l?6rfmR)N)Z5<{L|JL4u~s2bg;uvt+YwNvahHftUyv>cx4xQfS zwW(XNPlV!K?D zZL4j8{woep6AJpj6dg{oJ}_7Om1H%5n*&R)H{_qo(R?{NxlUiu@X$d#>PCIe2FBcz;D=?Kbu#D@}FM z=G7ZAw1#n++H31B=C!iF3yjm^pWk$C#7-*D3vVQDZ&Gf5W#Y@!Tq$ZPq_&-V|4nyC zMVFe0yt~=4b4YC%ADqa$@;;OA>+Me&?MKoc-f6V|ZBKiVBmSCau$^u$+F|&@uZ#En zs?_UgEku^)oV7lE>+Rn(+Na0+*4v-%X)k>*qVGbfqXr&{9Jjn<z3HTy((CBMaGyzbvbel&kuX~=u^=*oDFp){OcuSe~YrWz*_8*qU$)Y{l1!XWmvp<6|i`k*pI&i2G0l#wj+Dj3`B2C zGW3r_=pXEnLH5CpN#yJm-igj3`o|EiuhUK)6W(_>`_zxLj$_dKE<60up>=!%{X^`Y za<*M5y5vk`m5s|6-`dorKJp-P#%@y3;G7L&kZG>C2qTU40@`hUXm(t(mZ?k_GsM`wb6CeoY(7$@a*q+R`l)-?EAV+hH$a;=K3<~jBg_Jx^@Po8@kn?$eY`v zeP7k<-1^!3%)a#b$#0Bv8}?WIH}*bxuAc9z?3s-90C165HmRTEGhh@o-%<4XyJub= z*D25FwJy|bp7E-W)C0SV;E#-9*kXnp(0b({{p&?`&qo$ zE`5XD(fbbIR~)H4l22`x`_`yOng((%E-|zfiRzI`u9tJ&20y&$-B+;f&VT#zw%ro? zQY?SEJ+nC3uxB2Tcp*n`dnR$47pfh`d31*yahq5oHZcb_F$cEHWNevs&b@c&XQu`t z(_NL&hnKY$`lv_W_3nn2urmk_yav1lPX(SPJ&3G!D`%g|?>YN>-~XC(C#B|4-}djz zedw!xU+?z6z6)hcRw*1xWRo^EV3#yq^$!lQe5o%nY}*EV9C9J;;k zbNZDztcGVeh1QU#Uc-)bIs0d}w1d{f2A8v&c5(aX!3Jb7;$0m#xPjqN{)cI?lf?H) zTyX4KE!HI0L%6<9i~UjJ{)VGJXOY{iMhmfBtp?Amc9Zb#q3B-2v`+f4+DF2>$sv7% z98&tT+Cjp*hj9NoEkxhLg&xF?!FoB-?+elIbL1L(T~7^wtM5M@JB!(WC;dCo)l<>c z9q8)eF~hOxWNE~fU?W|m`GeS;j$!xvBX++xu=%c-hK+QZt2|0xSUr4itAKXT}Y0?fG@~5=hPP<*Sn@@kcu_5oB>iU>=*;}!B zlmFIUP^xv<9mCs@>$v5DP5b0 zt0@0_-oMG+TT=N$ivC_dlWCH^DO}Jb1nEU^PYO-6_Jmk?XUU zD+|^O54PS12g{Zz3#JPXRvjyRbv<~N{T*e&+nn#K^Wg94c-qS@T#voy|1Wr`>pkG% zLHLIgn^__Hu21k>aFXjQ;(Xl3XW*U{=PkHr!Ff09YvOu6d)EKgxIR*747&k-u%5Y@ z^d@tYYjk{>=M`!1&&)GjXe>TYgZAb^d-F8>+*eI|PoIy~9e4(uuDLSpozIQcRjr}j z6IZ6a6SQ+ze?!`<{`0iA587H?#rvz{v{wV|J<&sZ!{W5}6rbOO_N;!A)jzk=$7Oi4 zm4E+PK5fBGiygc7n)TSLO}-w2M}2epu)M1m-Wa_9BHkR|L*!jorVmTMe`XE_JzDmT z%j^aJGy1TM=g-X3pbzVKE=M1i-*c4AhlckDr|KUB_ZA^DTw&jlw#l^hte|bFw7qyg zG50)adjVgkZ~4{HijRFt_lb#qeu;jq`&29a<}8&nxQI1Ehd1dVQ0i{1_{X0fYgxo+ zSz<#)w$hNT*cz@z77{sq^%D3NGSmae>FY&KXJ7KL&roOFRf>(uN1cN(a!!7d$T=2y z#zHf)H>t>my>eLg4k6!wdN9Zj*9h-K4pi9-bQ`JoAFj}T^q$$&HJYQ{_&3BB?j1@$ z!?Y9NbUU(u;)wn{+#@oJw-fItmWfVYA+a0d|{Rr78%8Uujapi zOmP93B8E(1DIM9u#Oi53LGFE2=?Z^Njiqr@I3Ied zmXA#IP5X7zZ`F_D{UY7YY{TgJ;*@V zkMf2i8)YFI5&O>^MIOSIqsv1+$6Zh?`jTYo#>k$Wmb=$`mv*O~rp_Db3{ zF1hU&M_Xp&XI2tdc;+b!vX8~;9_C-h@u*Gcs2L$2Dz8JzdBHd*s;vTNQ+N|!Iy zzS29*-6(kO8^9TLedK%@SN$A$4>`x^n;#(~$U8@lU3)Zf*G~PN<%}bdI;K;QyS6Gx zD@0aFq>kxUbWo91%Kjx*XaCo4XFMgZZ#cSS_AB~(ebaTgtV*2v>`|F}xqRon68oic zeFyKX|CZh>b53MEO7t|A5@YwYlCEoN;chx14hxcp;e>w5wci>N<tK&L-(vc8ms&Mw}o?K(ShS*FmZdwGasKB`EjQ{ zh8&kMh8<&#T=)80`96wu2R}Vr?_(?`EXwRXu=vKfe-kqJEe0$Sg~rlfKa<$`@tHLz zjB)s=%L!dJ?wDesKkk(Qhsl44)&2Tg!o7CvJL|_`!!dOo*;C@a4gEK<@9ud(6XE)=~6l7ESF6;g5TeXOt|SStQTgq4~G6uNSkgPh(#vr@L(oHid#I z#$FbGrj%#OuIJ3!huO0hxx37LOg>E=|0(d@2d}?s+AF^NzGLe42Z_c~7G4=HU!MhjNQq7u2H|uIKRbe%k{z&eDJCN_-Ab9%uBBSs9(GH z{|ldTK20fhW~q&lNNoMqxJ`cwHhl+tk^GLv-OpjypXF|B;aRB{<=u^K|1o#;S#0~q zvF(d5bPd&r_tWaeRDp<@iq3I z6FCW&uutn_MpwG*nCB{uPsy0)etTnHhX3|bW3Kqm$B&f_bMLo!3I8@jEiFh2P%1Lcwo7uL|a6uGcr2pYD&%P%fEguEegB`rUj(m97eR`S9vd6~hCAmF_)hHSH2I z9~?fEeEz^-ch?f~Iqq|m53g`69^N+8-BmT}{^9lfFXmtRzSO_NGJlyjb;w`zj)6Bb zPhT#2c9y$~GechV=2`9mlT7aU@(g>acZ|EsnD5l{@pCJ>=lfTd`C89Ika-om?;Bop zYsGL|X2tNuz}5;!8*_8BhBvT=Ik%P#_b@M&`B~d!GhWdbZJFhI+xvit+>^SVw#>!) zy=Qp7h&5i!{LOx{N0s&J$J(ciU*S*g>2Sv`p*SjrD{cd(s`B`+%a!y0kMK`jM*iA% zTI5~Nfz>Z%TiPYiZZYj7rcBzE(k?)|#Rr~#$!%$8qg@5<#Fr`UDrwh3yXphgFXjCG zvST^!god1KTZ5vg4d&Qnd?vnV?AuqJUqyb<0rsOxYI^1Hd8Irnd<{p$CtU%3NzTo% z&{uV3~F@?$$EH;!Jl|ulGDzGd|sk|Up)L>K26!en1gZN2(g5XnxjVC-C1%UPK$PYu%EnC6O-;PvC5x%Kfe6i?7mWJJCv!h}_p#!8<{b+ZDAA%HOh4uyuS7kJ zFY#;gLB{~6V*U%rJK4v)h-LNzvxFf^qvY#KJ<2Wd+7XM% zmA8@a@;AhNv=ozrLGFf1ZpXHGeFA@lt@fX9kauC<<#z}9Fri)4#o0?;9CUTZjs)VU zZCV<66(Qc?Sf(_F^0yF+d?!I+TGpf9Sg`yk#|gvza!h$>m3`+cksJoLEm>+;=yGe4r-?nljx|jyaT&N z2phfZv-0Uw-O-dMvC;F+(Kd2Gc98>8&HX3w2@pH(bdq;`gQA7DE74Uv6XVlI&YTaN zE+6*b^NW!Wi=HewCj82Clcynp7}BTFcSayb7U5GFi7Z)kQ)0tNX_qaZ?&pg#`9zL< zT1jZABsNKW8dB?4a+qHm_+_1{=l>2M|2I?HCi%ZD2Hi*vS+U3H`M*in(4nIRGA8|5 zTf;wG>e;gwKU*Asc1nCci*6-vigOXF^mwx*&R4WGJl%1w4qK-N{Z9-*-_8$axIQ2b z`c>#T#M}cf4AgEB81kD54)D7hl_j)T=)boi-Aj4 zAGq9qskyy#@!Znla}%GKz~$~sJ@3k1yCFJt$HFNnA_1K^g>w{kC`k(eAdZ?Up`2+A$^3P}T*}W%jQmMPzJND7L z*0$1*Y!_xr%H}1H4~^8T|oUN@G>ChcGNMq3T&&Y8re9S+GUm) zrC_|yP$zsgNIgfXA1wa9gXCxV*k?lQacxWCrF#=xQUm*C=&NX?(A87>^JhnOTSY7T z$}0}e7Mmq?e3By~V{KzxQs*EaAAng4`aO7Ta2hoUsip9~)ZL(Ffz;gyQ3vjUYu5|SJx0H80W<0vNqxH6$S7WZQ`oD+it^i7CGld%WRFUQmJJ)OF1yi( z)EW~WvSXO?*&5}$wfDSCjR)S}_Leb*&|~D#P@AY7_{;lbd?lP;wI(sKW=)xLBz4(H zj>t-^c`m;H$llr;cD}&&v!aq~$h)ZAe{@!~t|dNK{A7`B z@Df>5>_X92#^o1S@O?7Awh`Hk`;ZcyaNy#)RQEy$QkTj*Yjxu}&I>-6Z{K9weCk@4JJPbeLkEvC#i2BECUBL+Jeu(%Qf!!NbjS=t`A1ZOv zhI}irp;B+71>3sRnENj0(Me6df2*N>qO3LV@yttTG;CAGxx#_Dp2imLKa+R|dxH(0 zs74avOgK)ckf>!HCvRiwV%|3H@x%ZUm1I= z)a8Aa9H8x+sRs%kNdD-y&CnTh_PnS>b2*oyB2#UqR``)YimgUu7pb?Ei(DZ!(aJ9(5 z1mw3OjZs&e0y)4ld~D;0H>@Lr>kXmf=l3ff0kPd3eN$q!o%6$28JG`UX#>^q7R|r z7WTrnx8WhIMD(a;~UB+>1Um+7!v z-3OL?BXL;1(F4o2z3#>!@RUA8*0sWO`tq^o;pMfw^GFOBr8DQ}cDS_%Uh`;+IUl^7 zb*%wTLJPl#MuHF1FYpVo=Y-L-WZ&_|_mM>E?5{yr`;fXdt;kF-57hZVH#}ZRb4TY2 zJca^~H1=)bfvlOVkv>M&E%X+Av(nsm^w^|mIl13ssaLciDXnHhxpHKVnpUGFDbd~6 zCFH|9KGSRJa{kwh>&ob=?rmU2eoFCd{)7tZ748t4N@9iTO zWliPxVt#i=4{>gn68|&pGg70_YR~hb+gS)y41PwCTf((S=m*@ z`!|&t`6JIDYe-$9a%kom@IbDYW3O4m{MVqnuGyy4E@97I^PF*(Y8CX^%T70mv7nRs z(LqHw5E>P^%9p`?<~xGAWUDz3HwRlE@}8dekKHngZK&2e3A!wVUdD*5p+@E~hWnt2 zrJMo299gFI5@UChlhEt^I*lYWtm^}Jf%8okIPbC8W1PCZ_xhfEn=E(>@R2iNZBvY# zmV?Z*@0qY=j1PTfpY<$Qx8*F@j?Q!DS+Mb%`NikO-qyl?+nVc+?x1EwJ!gcx3@`9z zQRmThZXwcfJI4;%f%($Y1_XWj&-$OHchor|>s{ zJ2W7&n4E>u#+n7C9`>hho?|V>E38FgWM#3kVEKL2^eRxILDsho9`GDELH*pC5HuqcZ^ zI~=Q=b`a-6eS=duRby)>Kfd^UnJw#ICEjnQ#QSYD;xDqXcmFFkl)m>x&c(OCYPX!< zuBPhwJ)<`M;^?Ri5+~@;Yc!D$v1&B&>{;;`4|8lkroZ<)Hy)kNdEwIb;3Pe!eO3O3 zje0JHhwsu>>Z6L?#b3ajz~jK9oXf&`$ynBp+jz7+&4@`{4Gqg!YKWtfv8eK0&YUJj zu^#(tm}m3hePLkhtGPo9Y-KHo4QM4cppDpoATSCM8z5` z$B?U8kmL&QzJuI~`JCs)x{M(u$b>%p`Us(P#Wi;mez-0TQp%q1RO}PO2@+5nB`QS^->^0+&rPjyoC0 zUC0XP^ZC@+xS1Lo{S_U4Qs+}_c>+&?-;aYG>5qSW;O!^RAN%BX}!Iz@=m|(seJceM~vhw#=#mooU(?jCGQj5n4vmr z#@y`I#<`5TGg5P=bMm!XnD@zgNL^}K3&EST_*w`Y1K1mP#Mk2*)ru{hC< zq$Xd!M?JD!aq4R%wecg=3Juh-Hl@5{krEB}S|e(JZ%?fK_iSo3Y+}EKznkmlXYG!0 z-|XMN2w2qc-cr_&wlapu8+WjV^R<)U)|i_W=A~){{n?kLPRiuFw3DpwnBOF5;~H&R z!42>rY88^36xGr;9d+LL+L;eFeso6L&~b)!jCiSI6JpNtyX2UE06l9TeSBv5>&EXn z!&ql>;IeAfN2l=^eL&NL#ynAN(SflMh@=VAtU*&wrz!4AM_4Q(%mUch4 z;iv{qX*)kU9=P|A;*H*Itu*E2IXA<0j+12dJOW6n|dku`9K(D!oaUVry}ADsz*+}Z2d z^{?^l%GWRX>;ZV2_6x?=_r2%|GHxgD6}ZW`>m?72_iDUXzDqtM#$Fx1*0C?|Fy3Du zANz+JHymyF$lz0|+@p^N7_W?dwan#KV%u1QGGsyPSj>JT&s4_p0sUz7Bk%UeJ^GP( z%lCuS@N>|QtYtaZ=GvHi&!7dTP7A`1QW&>31P`4z64Ad=_{<2RxtK zUx|v{L~7(6WKCtS62I2{zOU-4?8Ju!h1LL}xMP ziBAl;UXK4>%N(!Bf2-khbD7sHXuQ|FjB_pgSvE9wkxi^JMn3zF8K)>UyYzZElMLP|HAhE?Zi3#T*E2;9wBpIT|3FLwV{Ty{!vCel zX;9aL5*l>*CqAAq`<%{0!JiM}JXAkh8T@HO-v~}aZY~Co*z-(2sh^_&uY6A6+;?ug zueF%>RWi3}#=9jhUuwm5Ou9=u0e>6~{Ks-;%#Hn(=sI2Ic1GqvFDdL9qru@>)C8-P z90TZNoi3j{BURL~o5emdhkaxwurT+LcJ`4O)I|!?&f!sOuOycV%*3A38)o`GvrqQ@ z$1N}uSP9JZ^YScn48`RFCwopDUix{+56HRJ4`;Pvb(BdtZgXLsk`2?^m{PVE1;<)u}=@fi;GdUNcojiHYc8e?rt|>nC$V}?@ z&f4g9t>E0%S=3Bx$6h19JAt*-j}qDEeUWo%lOL^o-pRdnX-ci=v_{QW$(6@{tet+2IA|P-0;~( z^jOwXm-C=8D;zG%ALzrVG0+=s=6N~=zok!f6QSvWmh1ldwNrn#pMIUFU#D`NV)<_8 z+Nytx9{Bq19({Z7*B9&8;lBQP(Fao#slSkt-}(mi7gkVz;bGPFd$HwFU$%^ODJA|v z_IWRMRI87@6g|er9_qE1Xg~Et>(CcBFXrrTYi$K|M(j{Z?fLd|%vFuY9~io#*bc4z zT`mqm=JmKauMFh0J~0R%#P!|N#YVmTeE7?sG6r<(yuL@l7uMc96I1lS9v?|U!%Fb- ze(dC8+Y-Iej5CmWz7l6*jB$>x-%6VuDaxD6z}qbHM?K(wOMw#2fwwKgH}L?zi3fGx zL<+u%RILL!UG#l?#|r}R*4FXhpZEphID6OM!@J?3Ed}t>@z6f~Tld3PupJR6-kjf6 z`9cbI^L#aBJ#kt!`KoT))%nqS+5hLVj_@KsyePz8*#@12;paU#%zjy&PuV&nX% z_B62=MP{Ht7L!sz0jV%4%9dYr>%H(U<CrhbyimaKAteMeYiSA$= zz2_n}8z=j+SrfwW`}W2m^PF4RzoApvn~IHgL2%dW7QZ3uLf<<72fxvmPp2c#`k0I8 z&`P3P)A<(bYNzIu`%m^sLDrCGYW=LE(5^1OvbMVYfKMx&?+4C#@jWECO*s-`&67As zAY@Bwb^uc+FhvhvZ&&O!Vb&v;bL6lu?9=NQ3f%%%8H*pd27zlUa1Hc=D{Bi}M*&wa zaP=`CKd=n|%T{0-1h%1FoX5TwngymI^V}uuxVZfDs1ZSnM05CP*7Xr=_ z`y}rriFa_2wI#Rr2xkT~2fsGfHcz#$mv!Z{CJeksvi1fZn{%;Wgu_eWIm_WWEBf#p z<6JEGg$@Iew~V>^!4ILk7Um-OA!jv+P0GYu;U9OygYhd)jN^N);7B*_G6x-Z`LyEh zTQBv-UBOWkH{TcA7kDW0mc(QUZuY>=z{zTX9eAkASL6Q-E&|sWdBD}!>_hB3eQCs@ zI@gOW$%YL{a8~5OrR=f7C#$}sHqT$k2fREdd;K5w_m-7f>Jl{bysvUOpV>THwXTT! z#7J1q`cn8a{Sz}%MYiavU*!kig+CMT8!ae=Uk~N`U|^>6TD8I4Cw$;oR_GjO3AkMe ziOM8>FWHSRIW8aRHP#2aqu0^~TfA!t`-PY9+hpI&1IFOyTTbKrZn>6wV)K)@QK4UB z?<_elHu!J)U3|_`hlv_BwkO6e2ONnrJhpdli081Q%QJa zCZD-ou?hE)lOeU2KEVG~`6lbh=fz_*_y71D*2Zh<%l`jre0?(9(O+BkfBifVY*yBI zULUx6sq>Y4)yq#c&gJo7tB`XR5B`hb9&0KkT?gMP-Gq9nH4X9lD5J73VC<`MfdCSzHUB9y8rlNPYf#WRQr*v&ku;dVc#yiHC~SiJL&_h z(}&nNAHYW0KKq2&6eB+9Q*4x@u?vpgW7sG?au565hxkLp&L?$Z!`PhVT*jHQhV-4o zJ^UC^@nd|*bE9W}a;BlR!|0Q>#GlbP3;Scu*ga>&r{R%%^tt<^jk=HHAnTig&9C$b zHb1Uo^gW)wXY$N?o*BL2_SnmhDo{w8C}0T*>UD*eg#di-{}Et38`T!-OfGG4uY zRGD&G>aGpLI&H~emd6aEA5 z3!}e!i64_Q0=;YJ5F2qDu{v{!)hTfW^Ei`Ic$3Iw)po;{29FOs0YBru>~DrnX2@?M zXNS-ytnION*6Qanan6>Uhco*Yw|3hPJ=(nfQk!!ywK<1qr*L9EsJzD~?*n5CYBukFogSIOn2Q zY;pqomc(I2BFq;#qvmE4=5mfwdPCVY|wk^6{@OkF3&z&u%llfYT>z@6z;N5}kJ-Lj%yV!2Xl&TZ9WJ~oR^)_fv1 zAzMG=*XYE!!)nI*Pt=5(nQDf}*P9<^{XRVxo8aHg{E_R$ZgXN6 zaGDGbY}e)N&4wMhUxS}@)viOQMt+uaJHp7$?dTci96FKnPwa9>U-}=daUULi6?|Om zUE+KGkaZYM+{@^6{8DnhM?SeyoQWm!)*;*nEv=a^A2+PzY{BxWyT$4DA)rpK6mNCS9)Z| zzV^a@!Ple5m&DH(%Fjn$>3hD==d8P_Qujq>;xK@*UlA~nnvBJL86wUX!JDP(I z4Q?AbHz$deeghqE%M5aDW@_P5^v$7}#5DES#3w^7m}v4askO3DTaB*Pgl$6bH8=^~ z5d0T=miRji8+M}D#dX~MA$Ti#zW9fNli2IPd+~L&@|?)aZ9LbiBsGsv?A>SAwSN7~ z`h!YR4LYBWiknS^h zaMI1Zvy%A@bZgJB$M}Ioy>63Gb>EnkR#oP!$H*BmgPYBm!B-gDvy3fUV&oW?oc$+u zkTB!H-V?n6JC1&~B6b{=xtsHwf-dX>MkXxKmulY`!df%OAh0m|XdOBan=kvs3-0I* zLpVpA^Yq4IhvCex=)1@bt&w8aGr+2KZn10U`KO*YbFA76W@{ZQnBNxS**TY^1HLKq zywV)s|GUf2an83f$3S9j&86nJWj7b@brk%C&J^%p;6*!oNy3+?Jzmr>-IjV8}*>`3Cl*%yNFvEH@E zs9j$`?Rt2Z*FH@XTT!5fe49<=+vJjOGmCtixn{mik|DR-6FK89iQJa7{5I-z2dUE? zqE5Hyi2ZlMYw-d3GdNRl@N9l}^Sg)NJ+4xpoS2 z?M&p_nXW}&lbc{4#JH|yT!XbXTe2%?Pj+?3XH8zn*~ZZSnCp>~hhzK9(oRy3Eks_K z>@WHrL*7Y>w`5g&Oj%W`Dt{dzU$;~p{?{FR)~Klsk%;PQP=-vZfrme!WKI&fI2T^$ zwf}_o-phMSc`r5W?9*MxsY`nZz09S)Q9Z&ndMJ6u7mHMIQKP z8tav=bueeIeYWO@R|Gz1y^gb9hgh$gVpnieu@TE{OVQWMC$bG=_kG2gKzpe{#9k!w zy2Pt?Ou7@j=`QWm+wSP>->TYe|CFH3yB=9>vM0J8{)~O9)_9g&CHA0FB{kBH4(gwa zd@@;$o-0m*Pp9tBIc~3mQxyA2$`b_JMq5%M;`?JjkBY zfo->ak{b1tE45W-{w3qOmpxdXYoFwa$}{hR|4!C#x#E}@-hHq3GV^zmJE)0%%=h*< zTqMU%?$2NyRrE10Yv!xDR|~}4(SMS&D86E>*e?Vw;W0l!CP<-Hw;Q~<7rZG2Z@@wD zumwD91rOW6!ytGV0uRHx6=D=s{2mF~$t?PjGhnVT_ip@TeZphXct^U{`3=@SpEWGf z_r{dS1JT%mbK7mKm$TP;Js4jv;`O2tWY1FkA{+5#MxJm-E78w#>gx2oxp zFyGUF=bR_gw(LP4d6RRB&jNqJ1?zr&SG?Z{@LwT)gA0+p@jkI}M4G3H&tQVc?l%H+ ziR%f2Qx^^yxkDFhPCbVxHb%vNaTor$g_`87$?r?yt@8WwF~F1GFXYCbsW3icgLx*G z+^#XVYZ3Nf`CWg8-}Pts-Fry%CHH<^zUOzV{h=a_xW}(NE{P)wLksQTzRX$I6Igfg zamcuB=j;T)-AE5VaDk^u`X>MyI9T zYm;PM8w>o#VcQU#6*`u2h~Gu%`7G;eU4wJHM`%%EVo$IRAK$DHqiMX?kF7@Dy%Imp zrSPIH{;Y`?f)B!{Bo<6)Mb>Hx*VLZG2bmhzmn1$R6}i*!K^nOVj@qp+A_vCd7}0G# zhX2vzEdsxdKTp;1>6c1+%{lN%=zAsfy%PFvA?25khAxUyd_)hl53%J zoxgcpfrTR5LYL;d78&byj=789riC@}XJly(uH~%x4V*RK2@Y%|#$_k-Xks3tp_7ic zZqu630RzAp{c_-`N_R9fSvhjrmf3ugHM{vwl`jlHcf2`a0Qy}2niG#H(UZj)tOxr* zoNnfP6<^anYqB{G*9dE((*%7BomF7d?05{@4*Z~lF?CSuPR}c>{Eil5?M*lvJ~Atu z(;7@TPqDyR`nVLV(}DHt!1@zt_m@h)ZdgAAtRKP;*%E|K(M1E(`oJ3ebXs9O4OjR@-@Pj+z^FHx8@)5tE02fa*-KNEudjjV}%UL(FXFm9v>)L#8Ub+vMyvc6w`fqnxG?__Uii&1w|$($Jc!sAK>7v#HK6JI+~ z&f9&TeIj(yoT z?~Z<-b9D5aQF&(QPqcQ%5K~0XsN6pry>VIp4KMlnJQHN^6`gpDoWTRkl6bGY-zJ~p zH!*W@E^%hdE99Ye`?~t%Da)BHe;3cm(e>kMBfcX4MzQDjiLcl~o|g^Z)b>PI0Gow> zEBhMv$p1S{ob!TMWd^yFOMgv0h%WI9w;r)ymhC03mRu#;3VliJtN8ZCKW+F`EpceohOa+on_4S*Wu;1TWDon)Ih*K_YA;;b z2M!5O9DNhA0efkC!E{aN&&QtBmM3xuv4z;TXH$!EW`FQoTP%53W?*Q6KRw*^?BlOhvw9?!Fo;Oe78>4H!5ZM5i9ZIhv`llV=XezSFlY?``E> zZHz(Miu`(9NsJT`bNZnpxw#=NrP+MGOkMhGH)D}A-UWALZxj4P4v2JOx5<*{u-|gl zeDf=5$;}5G?yiI6D@mUUalWg?PKGSgRtW6YGVaMrmz_0`{28&~|BcX$qBI`|A3CTx zoWgH%KGn!UZmo%XIqW~rNbDc6W#zn2&krOQYCS&j)}an;9tP}Nw@lX#LdVCE1FP}l z9LK&`4}K9RsMo=59lZ4=u@%W4C3BF^`=C+5xxswb-$5Lk^&M+0?`RQTP&Zxkv8IK@ z8jcbl6XTP2tl=G7skPe@e@9Q8Lsr8`=)AB?(PS-`z(cWvPZ-HsKEPUzv?;8=5>13B zmOPobWz9DA$PH>@%`4=&<}F`xUSNWJzMzfyA7}onX2q!FXOG4d#|l}C_Z;-aSaY~;`q~(m*k-UdOt^t}mN2dx zWL(Qfo;TwUyW=_IbR;>t|4lowAD!1flN-L|Q(~1v;9xuBkUaT(Vn#)_e(>k^EgRTR z#*#C*VV%dd;Z*FFQsR>4oQf@ofj>{0pW#1Ue z8a1iO5%asOnb@=1$Aeb|N|%0~HuBSkWTqw3c@>6C2KgSKJTe9M7 zE4s#Oe~L{=V{N}6PGBrBJgw7=)LBSqcm?=Kd`p&Uk9RJ9p<>6uEhUz{$Fg=qj18<`qrcHA)9&GKdrK;(4NS}qI>y_kWA7_Y=q0yKBgRvBboel~!<$*lC*aBSRY;ui$DD!Nj$T&^&n}ni z=3>|AYq2{buLO$OE8s&dhln*o&K*d6q~3p^w_IEh?>|KU4*C!61qZ6(lk_S0C;QB3 z#xG|qNgV@ICyC{XE`mLF_be^46upAqb-e;zLf0$!Jr={ajXojI#W>3;n0q^V2)SwS z;ox@TH@z*td3oLk?&~^8z}`y-DI&(hhb*hdA{DbI9)cf&-vT@FJ+#SwgZwbHpEB`m zadI#CtzxYOez6PCPR&egakI2m#_Oy34%b7q)*$;2HE)zETkVVe$@{m@5WD>88RXY^ zn-pF4UJAYw2RA|dTJWd_Q@4I@0P=PdboaJ9It^YmgZQOc@G5(@qB%#YS}Jx<|JJ!0 zvdih^naTp;i`KqWY+7bte`D!OV%_0ywY~b>mY_LbwP~r?ue{A7*H!KhZsq(Wi;XLk zcRf6kvjdo`*ssJ^SHT*3ftMcZ#HZMVk&!Mz-`#1_tmN>FXSL)OQX3F1`k#3&;WdKK*8)H<1Cw z*KMqwzP_yGL}>a|<}NXChTlo#doymVXY6y#vB&$6{sae1JPAMP*n)nCT<`3jljLpZ zi(LN(I6j^+6!e`_LhS&Vlck?P0r>WYF*nJTG3M8sM(>T!ul))180Pl?^GnoulZ-t{ z*8z<x71deCoW(66^CP^8a-CG=tcG3r{lqHTVpqK8{;r zeg<{NcS~-juL4{t6<8Z`faLh!uk#LMLh@=06Pd&k(Z zw>Y%WEZ~M6G>e)xRp3=2dxY%&nec};VCh{uOWtUaG4eAne)mE2QhC>}ZXpJS`ph38 z-%5S)gV^Jeso`>*bM|H<45e>_WwO?)~@XHJMWj@w;`9lDDNoPq(9Hz zZM-AI`3zip?N9CB!0&}3zp%&huEwR*yARHO?Tn16938`rzEdr2n5S=?(I&WZFuxxt_h7cShHa-FS3qzt_*K9rw|h zJkD9*xyZp0{6-$BopTnX9}nL}pBy32l8>Ha;8oOIr(K+nkoR$?{;V(Ccy`xV10Txe z`zYoMOjWMS7`M<$;Z4MAAp^)5?6ThJub;7VzQNiPMnCn#`HfhpU7T-V;)2ROukGji zy~h<-5_w8H$wd)bx}Ur+bcaVi0N;|h*EGoVwE z#-sZ~kvXMrzwq|sZr2EEkqfVwK~C;Yw_3ZCckUuDqygD}C;MeE&+xsp^3GP?*+hJ6 z8S{~M-oZQNeg7~4TBok`>NuUOC9d#rr-9$9;4b*Gi#&gQ?InhhH5((a2Dg3jXO{Nc zcr-ZYby=$w=$-mAYr$9f&VFm)CTq2tYvIcxhYP-_@|)nxYl7RapV>9`qcclyjITN4 zw1Y42cN%n|^95j%#l3i7!j%xiY>h zeD|RjNMCE>x#y2=!Y9ePO239(Sn?TP08;3f7$EISZznc^eW_V=Hmq) zkf|cM=svmV0Ilo?^@^>gZK=p5$<6lo-qZH=v+IMr2Rl`b9~|wLU*;S6zyaRbHW&Qk zyE(pDGCtZ$pKWu&xm@{9yrOxNl@Q**pVOnGv{aKwjT+JF@O`D~= zL}o~Cn4^CtHOz{CpP_%+8m95tSAIA_{+}s7e9@=A%;`ghKJ&pN67SKwzMj<4BYqwk zKJI(0(0z|u+x8S!a2LKuYO3{&*@(M7d#JbkJ&0IYU4I#X?;y_;o#9fjBXJ%VI!Svq zdp|a0Gqy#HWNFO@nD8B<&pe*8?ID_y>tp)0-3YNKyFu`79;K~->%7RnpK=XF|9 zCcdsmr@9VcGvRFdmHuXT*SN-5-Dkgx)rl_d-QsCfsnMFNEdKQq!`A7_!nk9({ZkHL^L+B22&e*Snw3 zMMpOKt>F2-FfESHH#R_xwjOeKwMLY#*28?B=vAxD+@Z1CF!} z?xp?qnXXJ~xdhP5%JJ!!IdmJ|XXVJ)tFf;vgI}J)2cC_83SJ)d{{$Z|x|a3b|A)7C zfsd-Z^Z(Cea+#1IK~NBoB!pW8)GkyyYrD)OTm)3K(qg48gm4v8weGG`+Y$^HH7HE6 zf4Xab3y6Rx)=ItnY}VZuAPU;l6=An_*WG0%lVlRYRYjSlG5`1HIp-vk7`$y?zr0@a znv*l^<+~yEyS> z*|8NzihBp@ietXFza?FNl<}9C8cjAa4fTWZUAww4>wcqU+Pj1pvdqZ9JmOX0PxXWG zC&P=*LZ4nAHyZuDE8jIb{C-D=UzKIOpt`qJY1WJEA2(W7P9zj2+kJtS0?02jr zXE125YWiyF{h`5!&ZDuw{U`c;C)CleJ11X_v)&qjM|(lk}KLbrjB3!gw@R37WSC8lTYoe%dWnNOI`urN{=_mW``^!%g-|?Z^KT-5MD3u>%nc*%qs^D#jiVpS;P~ zn(xs&=47g108{)&$;U z`!2x0s+iXXeE3D+%%AJ8TTEQz(&1t9r%UYefjpl-7#TGL8FjfGf8WC9mK7-<99lNt zS}?R6-K31~_~5z3Nq*P129^!gIa5cmqc}RI^1HQ8GHX75?X1q+nHZbI+%f;rxzK+c z8FY%z{Z^aBSqEu4I{|yF#hD4j(YMuu*TVj3kH_Gzp+WLHUle&g7dbJ;Ss$^Sxi&E} zPFv8d-ouWxdja@+0{mfzXj=;Y3jI98*^55r*J4f@Hh%#Xq8>M8=qeWDq|ubg$ZBZXdip&L6qG@}c>yasR9I(rg&X@G||u+}Gk-2TFF=xiP~ z6`kE6`&=WmIGj4CtDzmyA$EuA511>_VCuU4joY5av080HgAI@0WQzvHpTy_;g3~7Y zIRO2whNrRLZ}oobC456evZ>2AvK(5XmgeCo<1=|M>xx>Xt zGdKwZ+3SFlr>?H7l@H^otEm;AfLFZR{-X3mBZu%m{0sf4ritwN5C5Tk_EQtw=O~nkS?DMub~*4I9AQx6dmLQ`bf(?_~oGaF!x1&9eY;RgQ*k4H@kt;(qp$)BX4P| zOQa8Y6`Y1c1D=QFW<(t{nn^>%c>Xg=%hPWa1m z@Zq*8{k8jE;YH>|{Not=uU3A)o&DEl_>f?gzM*w1z2MW<)~Eg^JGEjflsg=^f{BC` zlrQaO@~AsvDwIDQXHT671 zU+aEqpsQxrihnU@(Yz=*aGBw04sVg}Df@@BcX!Vsa`{e=zmY4e8m958%G!VZBj*_6 z0~g(w`KKBg=*bz$hjRHa*&8hUjQ;jBww3tjw=uR)8&hn12>*OqYk(L4jcGDtDqugN zJ}>lMd|jy><-L4xF&f)%y5*}&rxwu&>@u9eRsD_6fK9c}<^z|`{|RF!zED41aLzh0 z=l=lTUdw?m6(0qk(Wgg$J>ox$SZ&6h;m&7(I1Kgx*wijOpXys}dGn$A=8hija-`oI&q<<~Utcj$i8-??<(M>IIOm^=se%+UU`p&&KdgQcuB z%l&iWiE@npCVQmfiF$X5|Bk)P-gWy$!IoVY1*02$wTUC>i*KQG*7=h0{rH*pAiEi- z?34{}v1Z`&s{+2qWAN~T^pc8U14HbO0yUTZGyYT7f6);B-+p6oK^8Sw`M+SSg|3uY z5qpao4alA7hE>#uMqk>4ZD2n-OI?`$kPAoHAM;+zt{bUMk>2_%a@E_H5NleRPmm4;c>g@`%VZy~#pILh+P_PStF?7eJvnL{i)Fx+SNLSNT7C3l3wa_kuAi*h3Kse!)_I;y`jY~)}) z`Xs*Q-SRcZ9wLV3PUZl*(R;DwzGNo;;)6f-J)YPq8JJalc7w6q?3Ryw6!2MQuj)TiD*fJ3;ISxo>l|9chZ_h(1$o*Amp*(CSe!Z$JVe=|2! z@zE{eHgl##xBk8PZZ2m`><`buw@#M_D$dNzu6Tb=uZj=n417k+qtdmne5^fBw?d{Lh4(-r5- z^OPG?aejNAa$_pa$MbaV3v6vzSeF#ZR%M-e1K;xb@?5iyh=DuPf`9o8Hk^yGH5}pl zp1-_%=r{SyAN0ea1<(qD*Z3ketnp8PqIxl z5n^L9gJ-aHtBqBhC+o}m>CnP~ov~HXcSCJCdtABpKKkUCslob{@cyf&f(!U9JgsBA zM?>Hs3@*apBn)oC;3(X7YCyP6cu1qaf-rmTxYc&v-#4-(D^yWGrljrs{@&uB73Aa~ zi~Kd2A)etw4#i`MekEIw?b{j`o``)gYN)+6a&i);0^#=02sV}{+!?Fn7fy~HKoleTsHJc ze92L4{`J`ZW3A92b9aEXEgt2p8OaE(8NOLFcTEeKHS@zhe491Hx7N%ozRj9pzRGV7 z8h!-brrHm-!7s#Pn-4nt=mX~MEbHNeIf04~+Cyz;&xg3quK3_1zWu!_VmUb#A3!^a zTXHL!p)renQWQUcRWg5QA)gXHOZZ%fwmg0&`5LAD812{7cAWXROSvU8k%Rc9968=g ze4)6pJOeq7kBZzl@z=$iA)?$dBgc>pl3DNvBlqDC_OVH{!Frv~87%ef`aRd+su4W| z|8?8P@^i?(fL&4YQm_yc`Q`fFFS$zJ{%r9k`xtVx30~SXOR~OK7hLOH3nT0A*BG6% zP$b{YI3@w-c5}WJbE~n@7P7TKwmD>dEX&CHjmq=Ql&nV&FtVQhk@e^U>5)I84=7(m zF?|L{1}0=Zd-yK09vn-a2+xxBP4I}l*oI=r)mO+1)xPQ#bZ%t5so&7Fj$Blp(fK5j zA*s2>%ZX+3a*b8n3w^=p0SC|n4j4Tkv-)hQ(F4qTO~@(q0DK;v9?&aN1KejzCI7qP zOY%whYPuhtmEW7LM$Ui6T42sy`O$4HB_;0sAZ!MgLCeJ`Gr>6xfP9F)kop~qB zb#}$+ce#eAou1aK;xxSM4E*c#w4935@VYanbdBuB=5h@BZiT*&L*FOf54D|a4Yi%Z zuIa4-BX3J{jl8|kwX^TBYF<;!nArnaHLq|j-V@F0P5vb{=I%#+uj_*@oLAAXxi9+4 z#TDfHRx}ooV|dji6~`xDT5)pHfC}y7Cz0D5&7y`)A8ObT-xggri}!Bgy_#HUSX&;D_r0Udk%Oky35&Q~7FPoAsaz4q_tRa$4B zLY}p+%p}(*%Z^p~B8s7iVkc7ma}*o&-pdq!*atfZb^W2S`m2Bk`?Fb-*faL$RvuPN zStI*FCodwu=A*-k-FDY4@AbRWpPsZP6U|hu|*H;Ep{P zI>$ewe+eI|&-DiT;Z%Ev>Kw}U-@ek%*wgKH*(^BQU2!4La?UB|>)8$Ty9HY+di!kI zvKJ}V|1qZq?G&9aGSe574^6*Kq27`Hk8QVB#ISvc4#GpUFO^M%ed$bcHaLI12|GYy zCOOHo$nWdG5q>Ll$R=#NIv1pi9RwYZvEf^GYLNc%=Z;Rt__!CgUr*WFcFw<(FY^#G zs;7FSsWl_!F}|(X6uf$*(K%M_R=1ACGnw$JD)6+K`Vf|{dYJYZ*oiz|CYpF`E%7GA zW7Jo{lU6&ruIG=w4q13Tb=3>-_k_@Ob^fOCGFEyEI#^*KWdB0AzLP$v%@OZ6w7Bto zY)`HJVB(ZN7~gaQwxt{G#7gkDDVytFc48j$oO-`s7WgGkVFMOb&ah9+!?rluvd3KQv&XT&QjNvYjNiCb!A ztk+Kn+0P)SZ-loWCC`<D_J zy+OVcb0Zkke>3CLSUeciw_+hwJLb5?%G!=C2_?}JlTT7Z#yyMZ?bX=BB~wfef?|2g zQ)vL7M7cjQEC8*z?~4|+&Kt_{OMH(0kH2&SXPezppuU^CA6KuzR&c zdVdL8i2{qC^Ze4l>niA1a&s7VOX{O;HbVlE%G1e27)C9PUf>_Q`cZKV{ERrY8S&pnr5aE7xL5RR4cTM zI(>!I530|?E}K#pK{XMa_#JpfO08M=M6I(Q6r4kA-XtHhbN?4gCcXV$mEY|5T8K;h zpem!weh>dZTm4LEc^W)bXMfMLYTH**Lq=yeGo~o#q)88!kD;9N>&rPqd_HH0N8zP~ zvG&bngOtI3QkrLEY!%32@iGC#q5rE$KLk!=M| zTxQyOZ1czvzJtCHXE#%$F>SOj*l;apPYt0~s+*^UJ^HIUdlQ>o|8{C`>w2`GIPih+ z7hnvG^#y&L%bfN)`+3$-HhPubm2Z5Rd?)uf@1EveT^rxYSl<6V?``D0rD?&I@w_*= z+k1C9@73!)uFZQPcpqya`;IiuPyOk0txv-vY|B=E=3EB!!P|YIZ<0OCGMX;dkQq ze*9~3`1^df#)HX^C{K?xAR{~O!8_~8FFndV!E5;K)6@Xa`8`{hieb&3h{SzjITwT0%nOzZ-C3l&WW<%D_X4xU+j!S|!Iy@+|&^P~AzJIY(8 z-rL>#c)y@v;m}3sYZ>&njo$+LE!X+2Qnbo5`t3>J%11vh1nw|#6NUUgpKsmsKGH2c z{jnIoO=^ADH20j*)n6+c`YL?Td&m1$d$A&`4gKowhZt`fc%J9RiO(ZWyb##SiJjOV zC?Dz{T}}*1SNn+C31PF@#^)72(yf1v{EH7p?<)$m6)>)ayuX9oJ@xOWzgGi`hKBg| zVCd;vvCU7q?@Z>|hWtSrY1zH%M)l6Bi=$hn6HnvK^D5@G3|fd0`((|x6fZahhX_p`ASeT%g!U!`JZUNibfhO2)lFVZt;8+x4`hbd zW{cTl`D(mA&6(6XA9X&t4C z*~oJ>;9(DO0N0T(S_6ElFOWr^Xcjhl;n0_Yw{q}C?4gS{_Iu!|37pk~vn}9o9DB_M z@D>MeWwKL%w*+`AbMYpfNxr7r=)=^>04J&NG^0BQEdokX7A+Uv~d>u z2Ko?gH8&n^lshl~rsm@z@TUH#BNLgY{#x2+KYew`-h$6Z{V8|a>5teG69<=D^L6?R zHPNTLc8nk2rFqjQbMMi<){fSZ*LS1oTj$hd)Z9+r`LeI1#6nO9!0?(rKQp|B7>O`3 z5+yqKv+bBG@6zG@^N|s2;J?HQzg-Alo&=9x%Dk4qi)H_iOw4zAbw0eBSe4lpzh&q* zzV)2?)~C?D7XK3qTgn`(Zo#MagN(gkKm2C;;ahpy9sRi1UOz6obnHDgS>3a$k8R%25>m%(N1R@ecm?X-PWm}9B77elz?mcH zaVMC+cs~8lgr^q4KgK{G8CbnbcD5uW$9pn@#$FPt#)5!^3MBdgG zD`R<>*p+nh2DhyD-CY3R*$K?5oxO^j1)fW;8TZKH*Pi*+dn2fwy@T4>ywkdkHZsWX zntJ8>!)wPr^WGjS)8x2iP&<3)?;km=|5r&jpmz42L!7&Z%$~xtYj}3V`Zqh;DI=DJ zzH7bT1kXO=PSa^;2kjX6^gr!vp&epFX8%<1-AcTvaI=tDF>=CUG@XQu|SjRe4};-;K{adU(wber=u&>mJXJc*J>jpV}kWaLZ%l zaB|%vJdD$f7kD(@+kmNo@o!1DezQ+HD6&ZQ#KB)9{_SbvDd2~Sfy3^N-JKjS#SFjY zoN3TNoTQ#Bd!Bd<_xE~uopP@J=sxqRV%jf+clH|z7mlw1N9uaH&^5B-Hz8!fI_6pa z$s52IeA?6n8Vf$=AuDXYUkhYbug=Y=Uh^PyNKW21@S(bujo2I4u-9D0S;h}=mhs_1 zoMQ}Meqe}It3Bj}`gP()(`tqi8zx@j@k{AsuWjt)lP6Q`$L2f(V>|9VUt$>W%mW^u z^8CPajJ2z?n;#qL(3o`Z?lfjG9@c*{I{4G)<$f3Es}<8a7+N0?GPWPZ*{r5EyqQzx zs;4=Y2~X={n(x`@)rjr^$x52^Ydcm5Yac%w>nZZ|uc`J9w#| z@hkpnA9E;sQpUirO%5XQMxDO*cy&of%v+qX%T}m;@i6%7e{=qPJ#lKXpO>HsoxSQI&vqIn2c-@FJ^alMu|IX-cJ%D$iFYz{nT5Uu{I>}HtWff87ydJ) z?)e8(eAs`xo_`Q~pLfn92R;&PPL4Y9eAvaT)Zf9L)i#FrH z+Q^!fj@UdAS@04v2|0otHMteK`gnwU9yL7V^})W`;e2v@tZO^YqbB~jcHs{mIsD}D zU%y9u)beeEe6!;du?wK1#o!0=mqN*fjA08geVVg{)P!9;By2Bb&Kd>`;%pV-`s4IT zEK#hg)Wr0SzSd`I?ub7@i>BsIOzV$1TF4wJhHa5MPo7O-G4r&6c^c{GEI;z_58&fi z%zXJ-lX_3@MBhi3La*5!;2cxQGkElufiG~)mxFJ~XTZ1k^>9%1bQD~bfvd$srjP?M z)xKS^H~E9ee;8~Z16NHcxO(s_4lKeCes3qgoa=?ys}?!7szV((8XHPZ?G6LBstfj$ zGc9~`j~kZZ4>ee@%I3a?rBEk37xQsY)*uR5fC&x7do&FBH+=(C7@ zPaM1L&EVdfha25%Z+_I)bnZDcwf^w%_0JfZDwLi<4!`8mK6DF@zUEV>MDw^6o~JhB zysvrwd*(a}-JOzsk?(>K@pR?bblm@k<%aCx{loT1Xt2J|AZoG>R{U;qSnd?=Pqhod zcm0L|=&S?n*jucNU30Ma+-9qO2l6-Bx@lEy{N+`($2W(u{e){zj4xf$2<@I+J~h|` z&Q9Gq6+6(hVD-6=H;3Sxf=lqF-&cN4@HK&_HPp*ye`w}rF?PfRa7y1?3%+91tJeRc zs7sBUO7eSuL#O?xuy&@}OM$P;+M&-a%oF?R*$ta-GxfBz*38;@)uE*ZY9nZ`qTCU$ z-?hw-YEbQ?Kdqa^*tZVcF(|@*#_X8|bLM@E&KcbXm=AWF+t-2h|MITpmc3DO0&sfk zyF6um$H8qJ7!^OeO*~=KZ8rMCnK0Mo(CkWJi~(;P7#o1G%7xLZSEW3_U(nA8U|a-@ zJ5~>hkWXiF+XQ05<ug>v&5qXfqc)H62&7}u(PqLwyG2~H4CI5HSQK3#r z9`fxs_Y zf1ba@{_uI-pT+%~>`Nck^L=^#V*A4_x<8xy-?A@#PS5w@`8@l>YTf@1_iwW={SQ5# z%k#bM5AU_Op2Ia~biAeKvw6Ok{ULkLGj;40f8?yaGjC0|S7tH>*5OyuIP?4!)+)UI z%&gfw|1IEAo1HM9f!FEXFm$E!KlHBl9^SiWsFA05<}>Iv(oys+-0NF(q;L5Z_5B-o zYm3Ru5|83my)YYHlf50Fc(N5xA z#ox8Am&msTJ&MQeg7?j&4gEhF8=H9F!`zQ=x*31|H|@k0SBb+z^3X762OUgw-|zS$=B$Zlr7T6k~xB^ma}%QNlK!EW*ppI&!*5T6$vyg|Rk z(0~n$nnTGv(XjgS-K zKmPCe{e%C3%|iOY7uElTd+?d6|9=+0C)VQ=`lgS5u~DtqnY+Q*qsriMo(wCKt_j|6 z)mZ}FSf`rP`1zFmf_F__Ak~rkPxt=| z?H%gTZ|6w|m%iufxBI}ar{9)wU6eP)9x-sLJqrCj-fs|mY%qL`HTcDKnWA)VvJquX)Sao`)*kOGdFwC5C0r=_xf)?H{F?WuZ0iFUQoq&U4C)Mvlo08 zzhG^cH7?ynYpQUQLw6ng?`JOEHT&)kbM39ELdM)pUUr$o`CaC)|CiSNuY*^3yz?`3 z|J|v&e~A8F-T%-9b${sKLc0H4@R9)y?L=2zi>^Gf_gn8RUVHpK=DXFWy~jjqWc(N% z@lmc>YfgM_e$BnS=gE_*U;qBSa`TSAwd_F`ci5c@ITOn4f3KUIVn>?AUic<^>4V+& z!YTWp(bb)}_{6^9x^%~mRB86ZopkYI?0xviyU@jtyV{W!d$lRpgLSdXu#S(y1GJa* z>?P8tjlG0DuJq~8vb9K`_TH5~ZQf=7*5vBb^07;w*0*R?-_ob`Et=H#PW0);LuOz* znrYuYzh@Xft)C0EyA~a_iTa7kF>Z49kGnnHre18vtvn%O@l;1S{> zf%}%6Yk?0HUuM0XvBR><9o=cSS7RjGhd#~wMa1&^efX;x%a_74xcbs~W{$oHo|`g0 z2cFTHz4;Vfc=NeRH1a99{B9~PFZ=oz#^p^ZxHL6)m;=)v^WpJz?|;pA7hOhh@toqI z7x@i8Pp-!2H~ja{ytnYtH{Tn+{-pGY*6?z8T>&x{yIkz{PF}Z)IF1gxDz^GE=-#sn z^rU(Y6Z{f-O0k!B&Lj5nA9aTbdwITi)0eQ-H-F2)OAH?G z!Ly3%3-vv>hrTa3ZddlK0yiGNDdgJgXP@MX%Zt0&>N|Nj^1FmSJzM=^>f?PD4+hsA z{dMPWQ>poSAz3k;eq32`IxwB{1bUJcoa<|31$$%Ztf{hMpx|_6h2~TI%k<~+t%<A+m1b-@eQG~tYja$kC=!e#*$*U?V`J#p&qxZe;?YBo847+ zbLsWd?6w}g?w{OAub%GK(|Hz+&}$F2+%Edu?}4eiJ~s+HeNkI-Ak?{*J(xtlpVj}b zdg#BqEm=6dkUn{k8fKC)F>r6@#obGX`QOv2!(UR)lu~c|&n0Jm$T++6`H^2j&OA7w z6VIOP6P`ay&V93o{w2>p&BlF~i`y_Yweg{^@azox#&+U%8|%75hP%FpPm|#tzFX>c zd;5?3P{IBRGO~eSe^s@W&?m5#LXOH?9d1Yq)T${%}@<{xQQ8te-`>7tr{bh8E*U^(cCw+D4|G^&m|KI2q<(xU<;l`7(pF_9kgbCfEygN+) z3*F*%;^BlB@eB{1Ra~d&7G3(D+(X}s1Et;K4=%8WOxa^MQ~$KbegppCqFc@0y0hQe z#9w#scedgW+**$p*iUa`?Rq**m}_r**rG422fF&u7tl{OrtW3`L~U(XKRFb*`vUq& zUspfDMu>j0F;zb~&HJ8y;_bgY{lwdUdH;9ce|h({|MKi@9zT~3=O@;Jnwa)tVoH~| z^}3gk=X8MFnFGYF9iU$Ke#>9InBNX?uJmGlBfl^iLr1FrNOn$q#~-#2P`uRxd{*(P zthibwPC7a4N zXt^o>Ruh8~PNDG_HWK+R4i@bF`%zXFIS6+>rx@obFnm^T&u+AO5a zH`NyH*6}@Z^~RrNTD#vHX=OeX`HUGyY5LWB7fWs;8vbk!Cw%_G|~P9jR%{9B_0iIHJwe*dUMYH8wY9r^Al) z1??LSZuLuj7~8QJHJj ziD!3IjgFDDF#=!IYxtsmAUvnoL=;by%^sk|pIuknwsKRiUX_Q7eZ3wo^kr11uD2Fo z$)lZO&-W9(Hqrzv+e4Z1sckeqHF5z}XKTSy=oS0pU|?B9&8ES7b4{(9?5*K0@f7v+ zO`g!1SD=M$_{Ef?N-aZ^`&)7EN1N5Z>I0RkzQoIx$yM>e2Rizz%8X1(5;y!ZYi^S4 z{hfYGe_k)*7IW;Z`Plx!R|EK3Lu}Aa`q@dnY_;v-NdCJ2dX)G>a73IFcGL74&-O07 z5*Ii?_)fhygnR43M>U^^`8>quK|bsFtmU(Y&uTu-xo?4*6JmVWPl+XUjct*uCHnbCydO!G(UtsJu{Z^RFK~ z+`M7ud(>B5{vdq3Wn$!T@q}&spKZ=t8AY67Vty}jH?msy;ZvEmHEipQOXd8u^0|V& zoZgMWU(B-w7nx_v_`d{tsGmcwsLpJvyq1{b{F>kYE#o-~Oz@Wl`W>H6>hG`eyMB|7 zt8*qzt<^cKt)q$w%CC`MMEyUCZawl@`PSR3mX12NjyhxUJge5D-75Sbad0sO`ciGHde%&8 zKTb}w6HD3*PKaku#>oAQ=c&JJVxxM&Z*yu^kefyvc9MP~%AZv{wSlP}Ipe1mNfu}E z0v~mxn7g!^=qY583!`GN$5LZ;#@MtjbU%%nTlv5xKlSun%hZtQ8HOBS=v8y;=Y}B- z7|7r10fw2Q{as<`A4+~qop1v~e=GS*)>Y-wG3Qzt>vD2}a>=)8WW37Zk^f8QT$+4# zaNhu45~^81Upnhq^r#%RrYhnIp*_|bIcXO0#~H0NE+Rg=oV5dftH5vlJ<#d9JY#CW zeZ$c25Y6+uYM1=pd(@|LMtn7Ap_3;1JD47_71x&U^R+H0wq|FOKbFYNuB(5{;U}JM z(gHtugE19gJBh+i613Gq8;0J=2Z^pEmTZ>A870;=I*%ka7v8c?btkCn&UFl$)ctns zwdK&Qelz+F->QjhXj5mbvF?h1+2j%dpJ0na13Et?x{_yS;tPO2i!-vTi_5IHZ|D4i zlAk-UcH}xQU3Tst1gmnLmlmIExrKMY`7zd|YS60xhN@8VQo*(y+FSzOjxYx9sXnph zB^93bzX69wpvhURYhX$&ci__6(L5bk|!8eB53(GTds+sGz*IPN&54iBj_xjqY z_6cj2E$%qlNuf4dPKqw#5cG7pCBa@ItYwbMWik2p1l8-aUUz*)QAK6fW;_iEvV7|X4!UF?D{ zHfGJH7E2i0sju}q*$kg1W|;GD0*oafx`&5ZR^0(U2`i&I3N9vDR_lKFsdDiS zxVd-%)?H?sa`7^%Lqm}5@IdK%cPxh1s%P8a-}n-MZFX!Iv_QZ0^p(oX-UPOP<#U8j z>`rLr9V>a))1 z;BW} z7`2j;{$akz={ueC#2en#yn8ja@=Px5_0+NM1x>9kphhEOYA3hzM1A}0hsgV?ChzN! zua(#vLZzHRc?o&#m)a*@9$=r^KhS;%I9q_TWz4s2KkH%{_#!XRoGr5_s=ax%|#X$y*^@VD${QdgF zkN%q6CErEM3u&*oFR_Ae5SL9|)MEP6J7rw!*&E40`j_M6CGqS&##5XfT5&zLnn}Lg z<*L(txt=e^_u;gi{Fkwh9KI1d&ZED6?Y&3GozQ!&zW*_OtoZ#i&U>pk|4w=4TfTx{ zm}~m!`rb3-nekruoawK2{iBZ_{uSp?sn2cXkH(Ol2gtF}_p5v>hcXBq^ekH(`9=-! zKZ|_3mV97OuakURvc6NknKQfBA%pusk409ksVSY$HF+ifOpdM5#rlN!4cV)j()rXw z>2{ux@`Y3rKQ%vIxi88Gj*Yj>IhOHjEoe<=XmgGgbFRH;OA-7XI?;LG!*nLmRrGT$ zYkZREGEk#)p5}@EpoMy1N(`pGA}cupSyhBCpghn&!3*Y7OUl%l8H}$VzyBLNe~@#g zb#`PH`QVZ__2?hMLx(&<{}=%t3Xw<17UY-}`A_ju`qX;~+R}bLNw3FwnvmD5E zF}0_hTpTB_)nD@m+H!KOGHUj7ovPP13~=zd%)_VhQU`>RI`i7gH+snA8+GPeMMp8# zoD6CrWx^M;>_inc@%vHJqbMyH?>7aW=J?;s(S4McE%>$wSMaSx?9q*G7#$Va1N=Vj z85qD{w4asSi_Ct7d>&-$WAT3Q1orIZj9)N$?=><`Y7Hcn@0-DIO?-FHo$9DTuDK}{ zeAFtT{-|i@%G9yCbdxBh&P_jRj~0c4uh5>wpUL+xb@Kg}p+kS%r(Z|TmFhxC-w;2s z7-u2lgg2jgMm%;RV?lT6H8y0!zx%5mjsxEf=ajeFD!PLPkIl1^GvO&W1jF{MaEX2M z4W&-b>a_v;RB5(-W>znIMj?5|bH%f%AJykN=4QIxbPF`_H1IxO5^ULD5+uKJ^D*S& zj6z?e6*^5rF1JD_%SE^4p(J_#$(87o*TaMUjj@?Mjn)*nXnmk_9lh#~TVvN>>iBK; z8{Nl`OsD=%fcZ|V8L{A_&D$=B1#@eG+ zLUQkAs!cc|@{jLx)(z{*muDrl4!j!tC($?L$ND~X@^yWspEF>PohOkI@A@i(Z-qnl z+c$*mfBjYod>(wg)r+|19Q)L|>Eu_>up8nJ1RELufx^s4;$HB@d}a5wP8a{pC6OyK zDi2GC(D~XY&_$#EJ~hL?pWK`}Pth#syr1giIJnv>TxEgJe$%=zYy%s2n7v&_E43kJtA=ujbrV}@B}-U4--I3%pBJaLUxf|>QI_RwfEgR(3ZXC7h!uHdQT(g66hUM z!;-dSKT!S1CDgjr{bghLrmf}U*+UM#3?0g`Z?%peVmFS*zR+qV!;gjSQrc2ou!hpi z$j`_rX#{rZP@;!a9qQ=ADLNGU=)FeY85AiN4c*JxTFPSrR{uuJyeoS|IXd5)yf+N` zAsz_4hm)ln!}b*VOz-dXq4Vh%^4xx&Q~YssjxXtl)~rG7m#y)UzG@#`5*n=?2L4OH zzuFRfs-L`oxWUFb&Y2O<(T1+&|Aaqb=lHHothdhPJo6y@p&puR-`qe_FZeK>AO9=A)K` zr~e6;$IF3(_Z#DS5B*;4JPzI&e^dTz4LUSv7;sOT;o*dqV9A3j1MzYV`2@aaT z>)s)yPJK^wDaECvL67d9+rWC_hxEmBPZT&f@#bv%z)DR%!1F>^CTd<*GcTg!`Lr{FI_rzfp4>b8g|it{XUv~t@;gUj zhgggqLThCk`TY*P%MOvzx(Yws|5JK@{BrgXL(xZ_v(1-}r$)SJp4#)_$4czdAui3A zXGQ)EeafMEe^;7^Mu!Q1+BdM@F6`Aw^LM=W=`^3mdtGV1#GXQ*-Dy6P=X#>~*=qlD z()?NKxu?>+>YbNUU$`f_@BJBce;c&aN%zhkAeHt@pnK7Oqd%i=2eiM#(0=FM=Sq+6 zWnY8lo1p#krQ%KCAKDXas&8xPzfTzYcW~Z8|KR*J#$)IooPQqrANMKr{~T@oIp}{Y z?R*yfAHb$I5}O+IKgQ?Lzp<%7|M=(r-_n17=>HPv|5Em2rD^?8Dz9&(ozJ3mr>1X8j=w7d(8b~R>8-aDzoh-fB=%jy zsOvv6;H%q_n_0K>!H~TRpPTHg*y-CydPHH%iXBugD^@S+!Dj!KUMb#H;qW-q2X=rSV={2uju6g-J zB$s)Sy{u^_HTwl0I)kw-@=lz068E70h;OFw&aCXp!#k|3hs&@X?WG-ycH)frzsfYn zv~>@A4aVC@{xG`EA@5AS2Kta6HjeG|N5HTDhhr~qKqnGjQt>4lG3Ui5*F-0;SmX;` zBidn%=A6Uc*g4uatJZNp>M3$AH6O)mZ>4QLr<{Z)SAWgsUK#DnM#;XI929p>Xj{*U z&ugx4$CkE)`JKd>FbjwQh%HCgVD96bp%~w8Ild0|RNi>i??ZQ?+fx%gPCFeoJ=%R& zXSi$vf7=~DNNk#FeE{R!Q1WizS>WPDv^)HK`-Fwy;~MZ$h@PUo7Vw)I!SZRm$yl?Z zTMp~Gf@}E|Or1yg%ns!)(XNMsRGnr4`mFZv-{qM&W6q~Ohu2oV+m?8hp-Eu=*{8IX zV0;bzOYJ7~xG2xY(7U7$%Qta-5}OXc#~w8Dup@^rjt=J&jWWMcbhrz_DIZY-INXTc za1(aJpJO-NjNMQ&=dNkgxZfY(j1#`u7yQj!zS$StTW;AKf#vjg_7Ube_6s~G-9gVS zng#yGaJInQ2WngHnI1e=H9hF;+kCD)G1IXpYAo0j>#-*``TNymP>=sKbCoWeB6OUQ ziT{N;l#QpOw)H02WY`yDPkWTPa`;K0M)a(Dvc%?XOzbU)H2eJ#)!AP{4rBB7^oY*E zUdno125q)LoASTuEZLUFu`BaEbH&(m*&nyR_-(G|Q>#sFwJxDiOZ>5HqV#aT0(86V@ud8%wiA2{<&$Ll`N&MV0mwUUAcTD z?mADU>mzp}Q&^iZaG>_hS?|ErI1?K+Yp8LSaM0-3&e3vjaP z`QyWQk2V{yL5Ro5MjPG0Gjs4;qt733>;5faFVcYDRy;#%Yzb@bJG3hqwiy0UWad)!sdH+wm`nK{;?QMxd-iA1rLk|jbXivF(&aRlF4^aP zf-a$v-r>kF?Md|T6XRR=yEa3r1S%)oa z%HzmGaJUzqIUT!(&f_e@PANN_5BzJt_W<+Jcoj5-ZN87s+~~f{i}rpkV~{0RQD1{SToH08|GuJgTX}9jd{TZ8?JLXgn}04H z+I*6ChOY^8J~Q{>m*oL}T@^fhKF^9LI<}f==VVipJX{Z6s$JX&7yZG7&hf>RW&Vsk zi<;7t((+p0n6CQLUH$dPi;$}yu~xBZoGQ-_#?G@2HaL5?g{=4U<<40h&12GPTb>UD zkL?cxoqa`!Gcb_dt=h-u*Qi#de27LyeZ+WMS>G%1S>=amcY5$7>-_}te>@RNo`ip# zfIg2WMy@Ght7;<{+ecOH;-E7sC`9jJ6fsPBTNq>mOY5z{uaHk%zSIfA)pWVKT z`FQ@ipg-ICs^ZR&k+b8pFWaQP%LCSn!@>1DbfWEHbRx@Ft^HFyaLi+0jD2Kw6R>Ds z)-aDX&$W1vY!RMrarOuB5!z~ie>t{t^ouy_9{9!gn}C0bl~(tJ<*!==AJ{>iupNI| z_wYXS3h@b#Cmoyzt=t((?(m)|@V(tcJFoFvN30O%8~8EYdr6fGT1C+`8++e>}5?fo)>iPBZraHj+l%uh4(6J>mYImURt1Sv3(APfv2wq>Mv{%0zTzy3Qn=5Od(b+SM zLwZj=`pG5KxzSviXPCFGMo-7qb`l-&DEC!|J8A`u?nn)|72L1q-8k>6PPf*PdoI^k zV@J79+lm#}^)S{;A?r%_w09|}CO?d|A{}!WYp@_-K_8!_5vQ;0$oJ_>Fn8Fpu*JK! ztV6E7?5mCRlTLr_s#ndmXUmFKgMa#I+}zg|ZZ#Levv3@R7O1NW&Y_2O#5?6$FEpJe z|IxBul+GmCBi(Ke?Rt2d2j1#=W-j$bO3{0#P`j)Iejnd-33GC(UB8EMJsV2aThN*`pr!**k&i5|99o{Xu zo?pY>3IBgEQp7qkHYsq9{+w(=?@DZ{tj!#fR_yUkWY|{~J0kr$6CL9T`qTfT*av69 zH-&2t_lnPbVyyH9LW!kv1CJd5`thL|f-MWc_Cn4=Up&M|4sIG}*mH)>VEhvWqCW>lv*)RDVymP#H@y`~z6##8 z2Nmume7Lc(T^{ z99Ji1PWHI;7=JpHlulf~gf`1*d%xP(oH;u2aP7UB*KxGjP%c_^b>jUzv*dz0@owp^ ziF54}mY@^YtY(hUU8So?X2k1yioM7q_M$Jb7Z($I(a(v!*v0(pzsZgt?5tPQj0|i+ z1|H)KCPN#*)2WY!o)Zmu`shDlcRO9zE$$*kAN>{a2rmmJ*54H9utVqc&UfD8x0`2L zwJqa)!DFSqVC(Z4#9U%@9^7q z_?wBJPdyJQcCD41huq!@J=afy@5)YL))MEt-a#K@z}dBoYm(@~ku$0tT)@1=OQGAr z)^3Y4J+>Y{yBS`+v9NMLL_9mjny4>D#|`)-Z+Cls#~5u%_Jx=iU5nTI;Jc2#Io0T! z^ToSIp|^@Y^Nl_miH>n#XxI}9HcqUp6;G=`k2X0%zYN);)nfd}v3%eih5n08!Y`Xd z5w!ZX%G&rutF{UoRD2Jy>EK+tzT(HyKKyudyoh=@&VI_Q&-6bzwuZr?9rjZuK43ii zfS0Y{e96Dc!pK5zyn8Qp#ycLFA0YnppZ-KVj0ZN`o~OC7tn zC)v$2sWc&-drr!nuTRmvE&jaub>cBn&iB5`stt1vX#HU31YCssF^}LVoI@PN7=9a1 zJ^n3L5V;Qj2}G`BT%Jsi4F>1n-{<0{V-CTW#_<-u{utL9hv-D}Zs|-s>~%wE$HX#> z0WV(zFI&LNX)9=cugs40S3g%ddXg_+XMc?{c=Tvx6>?g2c~#d{x|y!!r}{_w)II4; z1)D581KN>nUVtxcK5#m=J1-`{p{Hn$RV(}@egr);?iazGhcE4gKkhTMW4~6qi8v%^ z=?!E~*S%1Qp-pdou5;%{?Y>RB$9tHMGy9$RhKJ0W>)X+XKRS6uQEuoO#XiQ?S+)MX z$n3$QE7_X05B1j!dGYM#vK(t-d?n-N_tie@#l+l?HhcIf6MpzjdW`qXo#00FI)5** zbE$2vtE~Mc?F~j@Fwag1C!a)bga!`J$7gSC#2-pK?d`efw!Lldo_-&B8#x=7S*J^^ z-jVvMT)Un==Q4luIlnQ#%Wu8y5Oo-=315%Ih^enH@?+~%47|T)+ndBCOoK*d!Y_zp zP+Y=et&V&fU62`hpf6{{?ahnq@5{M5>wTPg>(t9E99TlEK{jBVV0R! zXAL^nUTlKq_D7>t!69^rg>fzHe2+{*%;mrJ}v zL9nqX9ln;HJYQO9>|HJU^HvF2?c}^zou_@iw6F2mov-5j zSZr_S_xB~9z_MGb(reH6yEt;kM63Ah{`ANPoLQQBCh1Szb`#S|k_lvK`^t+r!^b_x zXC-F?SoB>LZav*&dVHRuFn?@Ht`CHqCUiVvL9s55>@HJM0I-bE6{bcUt01i zefLRAj^q0*{m$lmn#aD&O$g^1hJ| zy5VSwHMA z$QARuYPeMXtPR_lp1+0f?)3K)x4pz>;M?yv{sHY-&KC_eV~sxVhn{l`9$N02tcmBdY7^V%*ewTX_bq;_8tS~W-))PtL=#83@6UH| zw2uE<>A#xqQ+#8?O}ww)FLL^*dV6Ge@zE z4s83}aSE2kdF;V}s|8*=;up8L{dDdR)sOavHaUGyUtPi+q_cK2i0#X?6EBB@?c|QH z(mv7ar+Tv8SRO+DXVj^`ox(%6essSJ9vOr5!zIL|IeKECW;WMm-DII(LJuF@=g5V% zu1xUsiRt*qKJIgQhpf*U5>5uvug71O)jAFww*Y@4kX4tJomJO7Jhbc>IpeM5P$$NQ zf|=kpFacX8^Qu@``972bltB$Q=j;_P#~=q;mQ^$B$j5F>U8#{_QSJ@v2IucwI8BbE z6h-&XkzbjP{0d8c1-i&DKX9k_zuwlE_sA!PK9n6I{}ns&T4HPu05f(iQ~znykkF9> ze2!XKCYQ>4r-FCNpf}$T`BdFA?Dq%E+Ebgo!AJHtT-!74qRTH^OuOaaLV8U)xR6at z`wg90QZz9zv50=IooJoDzjQF`865=pR$?Pq@R#JG_w`p75Bc$tz_MlM%Fq?}Vb}5# z%UI4ks^K4pZwh9$6~zwS@T^ta_&j#4Jyz|0&M!o#dQrdi=b2`gUnV&Bu<6;fpzP`M zvGEjg24Z35F!Z$0bL*Z!hgpt}yoVU+XDexoGe4g#2_{|+)i%Q~wO@^5L#U#DhTfmV znD9WuI}f1vcaL)Pnm5hh#K5ji;13m95e{ze{xfKKI)PT6b^N zxHxymjIV$*C(xVOn|@_4u?ExNMaQ6}oU5mD&QPz`G2ENV{|=AJZEYTH&4&J3OZk4q z%Bricf?vW1>;Lq?!zIM*);}v<vZYAXew|E{*S z&=&F_`Z#bvPol4^o06QXI0T*iay~D2{i%*zJwfvigJa^K9$Mq{VYnbs-uvKCwl#&3zH ze!&{)2G1g5)8;`ZCB$nz;lZ=Sf#(UqgZ`RICr#f@T@%2A?iX7E{=3}2Fgyzc5A*XC z;K^jYWR1Qae{-hcr*9BHL7sYDllbY7&@!!$OxB0VlRyVJh;20i-M3q5t)uh6E7yX3 zseIMw-ic~xVO>{v|FH{P=r`5O-?~sTjPGcHl~%Wa^$@QMB}1&sXS+P>jvq z;^I_1sdMde7LM$6;(N$X*{`(@uDj`h+Lh$V-axG!Z+$4PR(9J2G#G!$stvJLjGdGB zZk#0=zYO{w#AmP_7rh2hew_{_(Gsjy~+{Hv+-L_V3__x(z=RHJyv_KVnbSzDK@B?GqBLheQHc@5eUJ zx=0ieXUe#c)%LNmVLO4&(Y)(2{ASd`e}1qXUH2Vy!rR!7p%cbK$+JaPq&o~>S>?bm zl5=Wqyd}w53&hLQX4cJVwMK_ijIApdKlwlTwaE3!j6>gl!MEd6=v6byTsyxH@3`(& zQ)sT8_^NBTc66BBnj&-Gv3(6R*POA+oQ~t#vpWnj_sRJrZ>vwobw*8Y%5^r^lDlS~ zTxtdD2RQbXXaCmGiDIQ8?p4+%y5$R<*^dmwKl~823qJ01Nr#SPbPb~;IXXcx=WQ=S zA6OGWmt|c%g-)=;)d{pd0r!8<0wN0y=|EHHe;*ZMlX7LBnKUtb}-q2y0h z4{x>7s_mX&xg+xvV;77YFV-_~`0M}FP(;KF-XChx@ zCg<>yFQRo|Y&Yey-6%g=xgz99W3!2oD$#){)!d(dqvr`y=()Cc>wd!-ILgah@+2mF=^#54Aho84+!3zU?vhC)1;b8OQX+ilr#a^gdF#o_`aXK#jbghJ)>et@Jl_w{=&=mZ7@D5f8@WEt4cplJn8UJFNWmFUs9WZ zI1bqixBgP&aQbMP8>&r=XPwdawyng89RKl=)#>TgtM^)O%cqD9a-)gK!;dBZLDcxJ z{E_;&FY*t~=)~6or`uM;=4t2^*TFNVbJmSzk3_E+jb71#tBK^pfvbjjm9^=_ayHU; z6Mbj=!YWSCzxH$Z2WBULKf3i>cKr+3quscf62>Z>6#wPM)s+(>+r4qV&~=>Ke}#O| zII+WR{S|v?`cfZ~U+OQm8-GEH&PuMtZ&D`2tK zvg(!;fGhOSB?T6|T)fq(nUG4a|4iQ=9h#gcd_1DZa`Lb}+oH~_ocjs;qI(|hRPoDB z`*AyT*M5&xyA8T3E~q@*@~*W)XLGgehX#?e^(%eB*!}Vob;|3J%-Mm;v`CnD@}t?o z_`Sa1bJY3DMknbt_Ii6I@o+*jHJr`N)R1wJf)4r-z)e>z=O5dRr6!a=7(a8u};uhPz`q z=pZZM=Svm4n%4Rtd&B_aRqSetosI`B++5KdguTfBO^8Yv;Py53KlCS|&MbUA{HRE%c$;ap;rZ`bXhK zCT`bR6T1~p{@;u6$7&x6??|nG(2IQR8R6W>?bJC~Mm#|)ymkz^{94<~@t;-`t34)z z^A_p9;3~^5$e{0AoO%etspePlb&63`d}ZwZaIk)57`h4vmoT4tCiPwea5n;T6R>Ko zO4t)S`xcKz(`hFi{Hm@+dd;B%>oM5?j87W+lfJlTnDtl-?OqX^9>j2Y%@wi9E3Qbp z^_n<+m-4^ar_g>QeKpaSqth^UbeTI&65q>ndf%%HqB;y$(1-48e)N5ecgbImwDSH+ z_L;)3;<99Ki?MHk*Vjg;Ie3mi8}-DGb?_kY{ebZ8_M`T_zM|8>M>#N|BV13N2d|z& z<zcjfd1R9hIpfIY!@t}11bOPcmhWS|Wh>@k zTV5m|TMF{Z`QMilImUi>CiB(6yv_y(=DEU4BY(y9@5qO_f_xa-7$Y8Se&ZdrA^qnV zu*}nXroDRBtJ*sDywBiT*R8<0lHbede+;=2$U|~B!$HYdeZLB?(tGN^6&^Riy|4eZ zpYmWC%=Hx;)*in7?d|Uo*E>crXx?vvrHubS3l)2w-q5rY(_-W*H2vm6ho&#o zpX>taPyI&cKB=l53DJ`0_n%IH&lin<|NmtJ-5S*uTVy-VkJ!DDbZPdE*aIZfXo zX#F(r7M7BiZ|Gey#xA`ZI`8f3P8Ze8B917#AZ%*0WEUW3N|EW4(EHKZbidcwSw^0X zd!v2!8^{17KYC}^T`?|XkG&*R+Z!2B+_$oJ4>cP6ueZ9EgQE=3RU8_*z&xjY;l;!VcJguYO2w-wcOt{J ziMu{gc&K8&A7;$5MQ`PMv$=NeuTHsMm2&-4t|jw3_KMRi^pc@9!^yujx{vmX(?Y>l zQ}&7$e?~v|r+ zb1hxsA!PnBZ0`Z$`U9?RqrGGUdO#!g!T54tFo0f@4^LV~-Oqeu7N{?I{1@9in@nu6l8N}_U>5cE65D5C%eaXc;G5a2aW2>PUi_cK z|GE6%+nm#txR>YAAKI~77s9I(n@WQT#Zj_ecUifQf#>==k$vF50bQ#}ZP5=k#0DhPCiAA+ zNA0dI)xd9kfr)x;weel_C0Wlsuhx{u6CV_8yU>FqHw!O{NYAdhKsO2`7`JT7{}4K;Ql)F69>L>;M4fGu-7+y+l9~6 z8Ui-KDfm2lS}K2;2aMv)#x^Y83~aGo4tz_1&#Tq8m0E4Pur;byig-+FUDE#`{-F?` zHhAh7Yjk-S8kYUfiK%e#Yr%J<52n|6c$beVA3Q&pWlhK$9yT=c2=uJIe-`V&p%H2| zGDc$E7=z>YkS(#1ceRF9cV!1Pj7)th=C2*yU3iGQc+mJgTsU|L@Qza#%$uvrHCNz4 z>&u%X4-eVMD6b}%YJN!<9@cH1u3(;iAv`cog_ZX8~II_v9nJ3(6 zy=K(Bwwe5M-q{Hc-s#D9GdBHh!E-ZecH?`GL#Nx}(Q(=-7q3RH#gJ>Vqjt`t6X&h9 zCEg|7!pUdLG=8-m#LN}qlWCfWOdPMg2kXo@{3tej;b~&LbD`Ju&@1(cTE$yVpg)SY z=v#gv@sk^|<+Q_F#83Xkz4oEcy%p}P3G#>UmBLT@P!}YRx*&b+5074K|4Sjd2fXFv zCiD#67q2*ZWODE%yy7JC>DTazlk22|SZ7YUyy7H%iVpOBQKof`)_CK~R&u%>w(G23 z)$LY}$y;e*%^!oWI)2a`caD20cG>WXC&|xk!j_=eiet0nLv`l5S@VwlxfOgQuvIMZ zW!Alhf5_CXC7-1p^?v*^Pw@7Ue{1Kh2j@IBk2{)_kCK+Cr2 zo&fei-fy&jk$25{)N?*`)lchd4}FE%zfEFIXgwB?zcuO-&XsrTt%&c5XV(4~`7u{9 zzjL8m)|#2t*Q1$- zf(+^|WrvdYk-J-vW=+)dU$`&y1+~|o_GG*8;w;N)^UJm6zzv+&j2;oP2Y7g8t~|W| z6McE}1FvN~zWk(lK@)V%2(viBOht`(W}EH+)vH|{>> z#tY!q)aNVf0}RLlXd4>3#@y>hL(`d8@4g2wN=$#}{a%sP-nI7DqDlDq*cZe0BgBMW z2|u}!y4;g~l4c{j58c7OYCZd^vAvmVVn4?EkpaD_i%uJR#FL@1alw!+{=5%8ay{2u zXfp(jiU${R@Aodx-v|FcImb#q%X~ir?_WP9WcN$!Tix#KXYyRmAhVCJw34T%i7)qN zP4;8m_Ceq1TeI5aFZPc76}j%(lb)W&dAP`L(b)T}pHtA=`@DaG_fPTug0#H4jI=&Z z&5^vkhqu9#D`~?b?levggK|9kd=q^Jy2U4COW(}KZl9pdX4*c;S>YPLV*i)OM@XNt zA01@P+u%X}%SZS+HZ(6gP9K7khb>L0)dHxU2>)EG>DegYkpSG5qIn0T4 zpUca=`D4xh|Gd2mcvaPz|G!U8t|Sl;5D_(ma0{s5fZ{3B$w|UR#A}VEt!)DYg&3(? z+i@6M6HEX#P&vX(I^)bQV7PdKD1%y>;r|;zS`?#Iuv2I1%y2Hb5-H$i%qgS!f4*z) zot%V3ab})ho+r=VXJ6KS*IMs-@9(=LTe|Z)#63sXGwUCk-}hbdc*THZxX;o?-)Gd% zzSpR=@JctGg2$YIr!2(|f_@uoE3}Yj?Yh2+CT74B`0Zk7a2%~@D}+WoY}1JDwxJuR z7=Pt?Pl}TtGmsxs;58?0`SBfBzCDRA?MBA(D&(e9$d6CKC&J`TY)!OgZ87oY>4B$1 z#2{2#u|2naTBG@sj-9U>*N;G>tL=O|A8m|H$9C_$vns+n@Z68NAMfk^7BPB?eQe{p z@B{pI-uCAkL4k|>}Fla_tN$db?C0eFML0E3=aQ{bu%;#T+g#&-)By~6n7qCjKN)qG4>NAy z@fL7?KwjX$aPt1%aGYXIoyn6e$zrYIn`7KWo1aQzy~f#fj(IYxuX@#9d#>&BtcLTEDsfEx)@S>9MuHm~bztlG~BcIo7;hUmib<&B!L!%Rei>@tS{Wm%> z?L?Q`^hY|eyG~CQvrdZBgj7C8G3GDo!Bz*KAyk<)>!-+@17I-s=B|D55lx5 z7`9=Laqqi4se}14GN5vl>TEf1FFBV+4pbgeo!|GUW5+S_;9*-H3{F*iVIO(07P!eR zZhpy99A1n#yI9LU`n(HV-D$;Aw;{h3v%a9mQ&|he@TkX-d3xl3yVf$Y@t&%RoWM55 zMY7|w(CqkiPzMdl)jG&z9YBL3J6Zp`7{3=8znAFqKKSH*`p?>vu3&0)(@wZBzagD9 zbuajkK5|g?J%4WnmyEU=Zft+#UA6Dp;nGX*?Hoq?6Q+@iQaYt`1-jQsCkTJZx9c5ZBsr>Wh0nl*pIlWFv@GvKE5FdZcuNjKXKzkQ!;`n~(J zlv!=U>AS!$c=DM|=rs5uqRjv5VZ!gB^~z%p4@RZq$_%VrbHgQHS zZ&QrVp!%!9-BZ=jBk13$g}^TQ_Z0Jehj4@bdfJwm%FaQ%Z5d2Hf!pByXYr8^ z1*aufj=Y@MHO5Ku?o+X|;W0(~iF~N!re#;w7n>#pn@M=qW_GYbYgJ#%v z>>-XkI=H@qwQ;aB<+|G#uYaYz5VC3*neum>@22n9z>9H#-R>ui&Khx3S67jA zlvA(O{_R-adx&~Bn|V(2RLir2x&Pzu_=68G%@3}+w;=dva$)e3yE1~GmJANY%7z3# zPst4acpNcdl~(MN_iqYn-t`UTihTml`yFka;P=h=A3pVttbb*xKR6oQ(-)fVfuvXAv3J686b&2jmpvb)bC zmo`LO;o*MnL91uwQwt!td+)5jJ_&K=T-A8+c>% zw|)7sSJ(IGZzp!y`dbrvSO{DXXF&tNtL8C$r*=+Ib8X`9Or2*N=CAr&aw0ZwYKNxQ zchS$4)CF%tt~`qU?FjH58En0Lgf&uq$)@8|=WqY;gq2>l1h|u#_alpQvCAbJd%=S2 zd|xobnu#tm!ra?3Iq+T1JDLN>ch%OL_dM=<r>%7U$aUvQ8$Ye6otaMWI3kDgFG3|xW-<$C-LPhPd*_!}#C8(*c;q@Y+P6^u9NZXDtQzgWs%NL(xBhtb)w|8J z9^%$=snPz1snI^DY%Fry3_X82x~cPg)orUL4v%@w_=UdcV9?-_iF09mt~yNH%;xGDZ~7$rf%3^+6dFvTzo-lW9)}r zMe_5zhV4i1yn|`3Bep3`@iw`3EMYtGHnI(;!^7DR zsrqWZhuy8AWt!D+V59Y*sh_;r-iQ3p_*R5=l^ZZ;8M#H+4duJQHdAyr@6W|Y7MWJj z5S>BJL^pkyXXwMUe%_T$_1+73S99Uo4efY!H#f>|y9^n!ocOpmXp3CoqI=WQ8wcSB z>@O!`3$)37R`HqxJ{ur^0^c7pqTxL^8adVe#;dG@n`l3yPaM^H#ZBQq)Hf8bCwRuO z4hDQS+x9&Q9^s*m&v$lRdvcN$o5C7NU=5VfmsI}Kukn`-2DgWRˆ`9vMeoorgN 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%0D0@)zcAnF&>>JIGdEe|`>CG>{ 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 z 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%0AGY%`c3CpNH*E-+S3neU*c_?;qYFu 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

=j48J`xWPBZFTznm7 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

eC3HNMF)Mq=dMDpZ;Eip5QTw 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

l*aOFXkpJtKJy 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%0DQW_X#i)H%^PeYF=v@v~RQ|8Ptc2_=D_t}~^ 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%0AiQd$%;G>IpVr?!Qw}EECtjT zQ>MH)EnmsM;l^`;3af6MR%_d7<3wW%g&JXD3LNs!lu#->I^!SF;EhFQ;WjVS9!8GU zJFEqF!pRN`^FcGfA!!!HTDBdNjsQKQ&0&tV|B2S#+>I_Ld zrQG;0<74IOE_Pa(u&|3i67k~oQ;VURaU{4tBGDWX5RF+V!uT+U3;-?FCoB#sR>VEk zWiX$OfX&9&FdRavelb-%g`ug)#bXaJR^%g3HVe-R{00`50s#zEc0NlANIx)+n&O`| zCacba)z1kTU~8*(b<8uu#X2Aioz94*wI-!7%U0ZYW}Q+0gM*|NpxKS6_CP%JTn%x| zCkPGe6Q#7HFeziJ-XNsa>Gt}Ap98Ed3taUo;I)%U!6xB@KN=koU`EdmV;3h$W{IBo z6?R3+wl%$E2xR7Hyl)XB355Nuin&AI+%ER);EBcu^=7Ng7m-d<7m{1MRlfV@KD&fb zEm&v4k~N=fX_ZZ}mFj}b^YB%vXa#dtWG8^=C7z$)kEMq%DjQxTc(uBb0gWze=wU%d z%$0$SVW*&yHL`g`>x_*?qDol;ml{aHnU?w)F@JB)U@YwL7Ro5;l*G2o(dt#zxtCD4 zAmRnCs_?*>4QBcoN8KzRu{IqG3;kJj;KUAZ%bQdC9fbz>@Ce<%YNpT6yglXoV0fB7 z=)R0_6Rjn$7mgUXi4Kanx8W8jLxId#7Y_9b-S^U>adY|=UkomSlZy`uTj|RO_qXqV zwR3-GkF*BBCI9}A9D|O;YIx~2}DY&x+FDQWbyV;(YWZH18KH%o~$_35sqNR zOj5m#&-?9jX&Bmf@Othef;YRv2suag%VIvp+|v`=O<}H*AC0Mq(|AY+)){35O5u>{ zYY>*lQ^hw6BLr>AKXBf&8K}xT)y1Csvy)-7~1oD{uP>67**;0U@m z!i2k>$f)`ywyASZX*+XfP~shry)~lM@UVBKzbIW>F2^#6kRy)%iuSqr3mN`jU!H4y z`N)O9`1S2ycK^nHte;m~)#90K)gE9ttte$>p+fPWNZCx`2`eBPXmS}^Y_P>QBq3D> z#6U>7s(~qfR&_OmMn-i@G^;bXqvD-WvG|toFI7)24Q@2o?w|-CofLGLQ z3MCAt=&tA|8_ipl!Be*kO6qmlrIgOl)^O08_C~Gg zXf)|`dfh?4-yMy+oyMfz9o5I9KW+}X?E~P2&1v&s+8Fi@ z2BZFT+MABr!``@lFqk&FO+By0bVjX42Q!ZrGpH<3RbQ<@j>i*81|LbCW4p#1D7W33FvG9qN^Q_Q7_%MKRHr1gCF@PWb>@aahEfAG`Dyk6P*(df$nB3IR@F%2W9s@{-%qw20s@l8M zDL3`OcplNMjbXywDoT8YZ{*^keS;Bd(d#H5&3mcal`gvQ0lclUWER^FjpSs=!pmEN zwkWo!NUH@IVgMx}fS*=8Exnw7Pmsnj$R<^mCXLK zI{579@Y#mKbJ5|mgva5qO~I~+Kjf|2tkhrMcwHVK!J56WY4}L77~C+y;Xm1s;+abv zn^x|{L6`AzXU%4N&oF1@uq8{paeA;3eSIy`a_Io{3H@aQbefGT4e-qpQiqt0p>s+& z9SZIO*U1nbgm!`5Sp-%u;iHp3*NMz`I(pW@7gE8dHbYyF$yq3kQIuj%L(=B@`S_WAD+LEQtV=UfvSb z$U`a-ye2j$!`kwBitKfGkaR1~vOKM@1SAGBj5jvVYax%a(Vnz1&;W;w878|7^aLb) z0bbQb9CQX-ya;1UP> z8eDE0?GkBWcE60+usc#$csPb3gpJ3)JJTfjx=dz469)%MN?!suvWi0MmXFAL`m%rC z2$u?)z-SUnGxBtS!@_q3L8wDXICE5qs;V15yglS+J~7Da9dW- zWkkE`ZrKoV)_>*@p~t)z%ce~wQqf_s;20i`JtMf;n z{~dH&^=^-Z!`=Whyj!m~`Jmruw>osC?RJ~^2Qcg3HAb^DXxH1FUccV!HQIOxT7yQf z+35D0J<=1q{d%_%?_wRdO#Gz}P|E_zA(~;oFAvrQGj~EavYzAB8~KYnl=twMn;CA% z31a~kb4#v(hi1Uw#kABWqI*_*5u4`(_8gvp-zXX{nqX@TkNEh63)a>@%P}ZWS zBvVfgljFwR)$%+S6fp~nbKFuUn!IL%w_BG1R<>$&>2Bp?m zk>+JoE-15?R@OvC*klUqqy#Rrbli-~D4Q<%zzwuA^Rw0wnCE@Md@*2hB>!oV6e*9@@yG5y=6!%T32T4!rlA1 zc8DB~9910{j1cNH71ctFS`r)xJ_~w+!-h9m@+vcKG@MYkA_@#1)}{n?a2-tFgod_8 z6^jAbz&9(6db{80b=JSg8Dx1zZfjd`bmb8UA!p8U4%Dp1j~z%HH0tmdhFWPuG=UO` ztXg|P3kieE)yDcQLuVdlkUNt|4VsK}l=$az9gaeEX$3o^2N#!_Kf*f*E-GJdL7G1U zx4+?Vb4tpnEB82ahSHzY&odmCmB!iL}j9s2G!Vj$Q^2#sgh0J+iO&1WYLPQ)~VQ(oifNh0R zbdZI)7h$QW|7zYT9P33IuJc+HgSjN$6+!Ok#zMsV4sBQz-%dy*%aG4aoMC1v1ID2+ zOD;;QIY0^Pme{SG(yA)4;8y&ox}J19uiu&^Doht7yCF;Yhc!<53|>f3&<c35e~|@zSsb1yxPO115pMQqSFN868>X*wQyGKYoO0Z zS12)KC(fwFC^w)H&KaX!?U=@CKR7y@k=?xM?WjG^S=n7FJnpV9Q$NV_Q=c1Ze*o#R z+&0y*y6QOv1$0Ll_druHm^`UI8&x`}dtmR7@~Wk#em2UkTJtO==`+%GBo_$fQSMg= zH<2V&GnG0ZydE`xj}ex$7weZGI_`kwn;^K#+n=K5`dn{)tAgEt6GQX3_@H#eYJn-a>xnH^Y6IvZRCK)Tp3{u2Q^u5hzIiP_1|}@0 zEi1T#igp(GaSrOn6WY|=Y;ZxN_em`enU%zgpp~9A8y~bN$B^)AR+(7HA?!8xGlkA z7C!rC(bYq9P>qIEagi&q=Glkf*f~=~Uas-kOCDy$(!fz5V#U?z_MCL+^qmABPMo9J zv+1Pv!8@u`XZ{6g%z3R$K{KNRVPFvE#|9s9NF6y8s1tTGHED#ZXPrVsOY0N9NTms~ zO<=Xkm?32+=n1WLgK{oUsFUZ`FEau#eT3mn+hdVZDuNZwkuTOe48kKaU_dKoMB^E^ z1hK|~G?nThnb$abQcTO6%Xc<`YKM{+Nv4)&?r7G9jug^?&3_*`h@k$h+V&Nb5a-Mt zCTkgquqOZS>c9Z&yN9-C`0aeZBLvE%ojky%vPs`Am9WocTvlm(!MxG*0rwQ;7i6Ic z-7~=hVtql@gn1S;Vzznv_Tg!5GX3GUIe%_KlWnzg}PaZ1caZ zr9aj`Tl{n5$=!{=A8!1kU2I>LKUn`{{j>AvTCj0L#`$B1tz!l)dDS2h-|jj~pn zC|JCTR+6N&CLE1;u+IWmpU*n_`Z1Pw5%;g>WM9@*iVQrdi^h)47lM1sdO`UlthUUG z6RogSQfsxe*0VYUMaha@KGVxE43^PioB%H@cfw1j9GvQ3&aeVo`qgATzsPu+VVs{_ zRIw1wcF+^3NJ~cwX>Y6&N*ib{He8**AEKQsJTqBk^33-XkQ8&i`IU*3xoYIYv!j}S{9_ff7g$>H2}1d&o8|@; zN?~|W3w;q+kHE`lpk@^Zl}V`^!XA#T@VS9ct(3NoVRH3sb4q$z52w(2EBf#HRv?1G+J{o7!VulfZ1vYzFG(6+HN)phY|4t zzuIXusqxwB4py9Z^FuZ&KQw9`X?U_2Wlp8{f14C{?@gg|xV;y$DYAFv3FdR+3AEcL z7-+rNL_KBQ2DAxGE5}H=NZG!G7hC|PkPFNVK7Cno@BFo|!z<58DA(Qfj5#UDsD9*J zi1~(3UW%gm3B1EP3lP}=_1olLo08oxjaTs^OTOUq5IFH<$6XfeZA<}%FHzAYoS z2o-Rs-j2ji?j4@+1`!aNK1Fqla|DZ$4LT-iutAS1aUMbV0ERV`i-;mi69)40T1%s4SvX4T4swVGl()TPh`o>KZLm_lNy@t0$;*%bs9W&GqE2&ZdgUFPFUfe5&yQ2Ql=Iu4~S zVsBX+!I{n1TU-=O#Uqr9nySM?D_)uIbK=MMRY)Vu5F=-7#N2hJT*uK37V|c<)Vj1= z=jiFIu(sh?faI188KY+r;&U7g)8h}&(a;3LU_qG$Oj65el5^t zGpXd;6De8+2^0s$nXigu3RG72!eJwz4p?1~<>tLCN-w>)l(TGdIcIHTRj^wSbbB0} zT#HYK%}`#FjO^@EirA81Vv<;6lpIwB8^y(Dn-9Gg4b+^~)lepRSDjOHfm9tnX&lfF z5c87Sjmke9p@OOvnG{Oo)9mWrm4#%Cq}?wiWbAk}1~A9*OS!=^51Fqq<;q7)`>p=4 zO)zXuH?Syexa`gShmRh7_lF|6YU|4#bgmzcs6wHo^0f0qbmEi48i1eMv)kjtBguCB zaIfDu-=^R;eLTdC?ASz4kU6HER_-Mp;&V=9Q8GbX#n`x{4US*tWlSa$?v3wjm3zlS z;HS0+aJTI5C?pCoUV~Lss+6rMQGIo@T7$p1l_@pF{6VHULpu~LU@7q1`^TEfe2YcC z71Dl!$*+^f($IXRj&crk##zOzQ_FjXkkjfkSGi<=X2BI8<;{#BH;Eo(6p@rV~s5ZBNKRMX!W zp%^SB{lh`?ULtI9NXq^HnTPyx>;5ku(!rbY+P>w2e5EaaFCv1s6W22zbgI7OV6U;8 zda2@}x`RHi+^O97==H72aqVn8OMfIjTwL(8S-L;~iYLL+g~?vZvQsNadP5TOO2CWM zhvpXWN^3-uBZEU~?_J#2g_abKtwr~NQ(CvewkAYOMyIbAZQhK@$rLQi>v4VR(M3T&g zm^1=Prqd*)2J`vZl~}S#q`%oWmZ$0!Pe)t^ou4kbRsmV^_EUw4y zZ&qmOl_||cdJ2%Exk*xZ=SyUTS8vNFqJZtHf&rPQKn~W;>3P2>PnnF(Pw!MPKb3Gw ziK|Adazw53gm`ebyOrKRp~n2QLV`%;v(qywuR~-$YOZpbQJueR)L)=2X+fbYaTbe- zYF({W_GU%e@d0f~9A${Ilk(?7&Bz*VNp4AlO+8&$@;4hCSFC4fkq%Wv-l3d0SAv*c z6+$W+%PLRO_{^SwkOTVp_#G8?w%p~GT)Y4X@y6ooRVNRf6T=svwYvv6l>&ORQlXaw zT~gF51Qk)?OR7DjVG3xTu|ovrkhlHQAa55r@r}J~V%U{MbMKlrJ>! zsucW*MN@w&GD50)asYE7|Hz>TmQWBp>ZWB@Fh!dj|E}UPwr7z-W&wr8)1F8`JLP7P zF;r|gG?}alp-5&s-cnZHhabp!+rJ`9c;9gwR~*;YAzO^4Bk?u>^i`<0vU5;*gWFYH z-%Y6^LVL@;k$EECsL`s9-n1RFlWY0!#_ba}FvMi-{Rxdcj!bHWN$IVwOQg1L9v=0` zgY-5wtUo=)V~>Y#?%*Lv*Z}L`lF47a%ZGn@j+w z)`_!_U<0k@f{>cCnSkfhdi&R1f)+sl)nf1>Y+bNM8Q3 ztPHBO0@RD5z-zOnlJLNwr;>k5pqjJihqsHHKYBJf-$17#6aU3N1MJIbvaVyh=+{Va zVTdN2&mrbrr%hp3LC(B_O2o~p#Kc((M<ja%bK9=R z=MuevfJYMdz;DHYwUF3pMQyrkU!w_RRl;JxPWNTa-GE+IRk(kAew>{&8ii)76JzcW zffG3JZ`z(ds+B)br zCyha)-T{3`3PsD6i@RpG6L8snm^=WHJ5hJo2`xH59PPu&2q~qeaPfwfHble%&Q}-JQ}>anxq(G+oT&}%oQ^?tL{ zZVp@hPN&{HXm%!4BqDU&9k+&^c4x|?o5X#Gqh6~^jihONI3VcU9Cr^olfiV*9~}&u zgXV-HNC*9cc4IP{G%0J_X!pj`!DQHKG+K0NtdIKRdVScfGb3iv;|&Ls-jM2oliqkx zpAPHO&Ot%B*(c>^7DtXE$3z4m-oRk00BTddO8tUea0O`CjoB09rcdF3bS}|RFDuV* zR8OI@B+4?}X6^ZOO3y!<_;5amO^QyXWeHGW3>q%6j(Z^SNsAj2YKN* zNtuAg0L57>s-KZ@p-j{cIY=)@wWHJ9Dk^f@@7_>YIaX-SZTDwgqVxdE$Cd0w-u_u1 z@Q4DZ78Da3vVx!pcT61xdDHsqt0+BM(k616M(|waznczL3U*@y&AvW$yKoD}6iA!- z57>;mCvS?+JiJ-_y>sv-mdc6lwM!?97sMh(zmtEBRT3ACWDpn}Y|C4?$lh5pnNS*0 zQc}J|2Exs7hfp6}@{S>ZU1(KJh4r-BT8JIm#3#QxDZVo+(QC=*m9>{A+Io&jq;KD{ z(QwgunVHBixJ96Vwax@IjZ|5|5Gz#hInu1imnuQL&e6ao9 z!|g{q_bF_8CymmSLg6j(bY)U0YP?^eo_ToQeAIZ#1fi3nFLmAo35yWr?93jfq+Q=i z2bgOck8!#^#ou+Y!H;JD8kD;n(h9gm_-w>Tk_O_4ityiKgTAsbzBDdY#Wq)sQ&K7w zKrR*GkkTtvFwl#Q_*(R3SpDjUGGcH=F>=489NILrk9Ui zelxLMOQ17@L0}uIotQ@7(qXs9WbLE#^;%xTB?Kt% z`3p)XE)3@}sVe%K)!;+-k|$jHryW0iapy<*qkqcEjS(-q{XQ6X=~Bkt^_F=*Sa|0Y zX+O-O@Hj1vwAQh+)ODbo7nl__j)^=xrLlBJ-W}h_cN>&(0lQ|j@VMR7k zmMV0eG6X7z5;hzPcjf0{>>S?sUMH0Uvs$07(eANOo|DUz4M;XQtUcAQDba>@ym~Sv zvxL|Na%Ok|*M3n8v9=I&$`PU>M7r}0WO4<4%X5Np6EnuQ=roU@;nNq;-8k2`38Ih) zT9xa{=10L4IqC8xU*v39JR~{_;s&sJP`;^+G#J#>kjW5nTb8g)eRmeqFrw;t%1bEk zTmDj6%oVi*1%y_7k9&1R5Wu)da&{Z~j=Pf-)rKX@q>xI5lkS|Ph;+D^OVW9Q{ggHg z15}B$2I1C@rJFns>8j(`PDv4(DId?uF9I8_pK zdcjmGipHLJf2QY~r1Rozb89z$IG)9)yuZiMJl9rGij6!vEsLoGGCz zm4V?F&jd4Ve)nzxptvQ8hO0vqY4!C24E=&e7384jR_(a`2(%u_FC&y8b$RPeYWt}4 z&!F7~GTmr4dxLtrPQ@RP(Ot~xdZ*qS^jd>vuiox<08mpgXwdFA2QA9{G%57cY^c!B zpi2p%7C7p5ui5Qlj5j;|0e9CMV63}!u-6#4%~oUZ^Pkxr)H}?si;>-7m;nYe6^c4t ze(w)3_^DL{`Wk#U_-iH#k{k4PyV-5GbUu;;+Le?A*$IDJ@}tnJplWI{94ASPaIx^! zYg2|1Pu>&SGFmwa@`w7`yTh&sDH@Evy0!giZ|C05*4@4BswG4kwo02He3E6d!hyU}PvM+__L7(tMJ28&w!!u8 z-bEBkdqty~PByQ8SlmneXF4%EWsWBIS<>$;fkv^jL*l7uaHJ?gxMcVcV=%h{lmN3$PMh?#`!NedaOiFQ*r4A^>?+ z(Q4QSNP4sKdhVj#`HOBL2`Xj>Ss!2DVp&8#txy!l}zC@gve+Lb$e5a=>%t(1&H3?879$4mjS!` z4x&U+7h@adC9{tujg462u$$*h+(_l(CvuhDB_Pdx7D@A}#8PAMCL4_A_vSBG@R&YS9(@+B5h%sXRKk)0ET4ud zNnUCQmo9iugSfb}WEkgo-M`T<8~?`t-T62E&!RUA2QLdEKj)G?I3LXY0{K-RKHB*P z@mBf$_8;WnP(bDv3N&q%Y@ZaqnQUE$*&v19>a1`}@Oop0uFC_H#QwMVyIDR- z*VgeYvCG20gPxXi$gK(uY#=Gz^*Xh#I&^9nbQ}F?V@%jU!GvM6F|3csEo;}O(_wQm z>@_>1!9bl84qBuBsNF|P>Q4_Ebvi3_Q1g_{HXZk-1G*_Rx}D~@J|fUDYK#u*B*gVv zlY@T0HEE7p?E|7AZTc-t+TBs7-a1g%nK4fy5Yru@3f9}x!I-cH5tR|OAsKi?u}6Y3 z?LO@u2&x>6s2xtYrawGD{TsC>t;uLev}4qn_Ig-9z0RQ7rwPPl+-UZO&4Ytse?sGj zc7N0wH~O9KkkN>k^oako8sp})Gn$}RHX40Y(Lr~pj)1hLs8eck+#hxhM(yU9z7(U$ zU_czG-EI%a0Axztexo-$7)_`_*=tRi>6js>J+k#WydcV9eM~fGG$3+xFr3tTsJxxl zxJPE-kb;%trs7JY>7Y$}jDty|+wIh4+a*&Z3?CJ52v&6>+p&*+MU zt$}Ht$39m8KzBn2NtH-VE0>6pbC>iH_^6})Mau61}l_p)(u1xOJFt?K(YT{K7SX?$! zy|VLDR}`Ii{94O^)-Fh)%R6w%Na7tD1ijerPIf<<1jWhpReB-wdpJl|+Y&hr(oJ)g zg9rO%$z{foC%}4m)}TBDESu4VYMEqZHrB%)>Lb0yW@ZC6GCpTh#kWe<`ofo&+0f?k zFy5c(n>%H<g!ij~3}m5R&Ri^zBuC95Rnt_l73B%J=S$j*l|V_!2Ns}~##9)E2ADCO zD%YNY9;%y1vo%%E`#MHI2~Rtu`ZL8X}F3&%&~RaR3clX z$=q(#8Wp0>xS_q%Qn{JktY~HTOWPq`;SqZ}r+4VpH8Y0`B~avvWLuSuqGF&Ks9aJM z*zH36*D7BGpg|519l*3ihc?#v1~h!KaeBUCsaYFbkSVhIDG4@4mcea4+arSptTJ8V zwVm#-He!bO5*N{K82vCMf)bD*b{6Nqm@5<1?S2Ewyp|q%*2&;=jBB%P?Qd5y$`VmJiy3=7mY^eD`i?^$W#>qhe)e6!TdMIfPWTgIf<64r0ltxf;V zX8Kd+H(qZ2YK5=#i)dQ^dbnUCuEej#XBKv_e_!iQE47)fP){{|NGVV+NpgX|EeY4F zIMqegCZLuB2gVUs#VwQMRT7#|1bAD25J?RUip_bl+Sd{zerRSSQOkVCuT%RR7mqq< zIWc&WvHqMMAMgjn%IPlxab~rk;wOe*ia0%b7cw%0Tu$gP2Xo=MAi~F+D|CWa&vHK1 zrar7EOBA-Hk+7@2miz>XHLLuiPtx2`MOsIhe@eqLex_i{i_sAddosO7(~DPfl~jpn zYpnG&7);EEU-R)LF>{2?uA^#SJ{kAfD>@oCo-GTZ0zvWh!@2 zgr0I8xTITkj2$_V+g%!iW8L8DZDABp%pTAe4q`mmoepj0s94`<1Iy~P2R+n%s(LV5 zqusA#!_c9w(QFL*JcK89@eotkzSF}Qj$d2lKI$DRfuAj)86VenK|`Ldi5U0Am)vBB$*+J(`T|TRIsd^ zg(gsnsVs4Mzr^%Gb8zQtIZf{JjzKsKrYShP)l;pMO`-XjwwF|O&LF;79VsstxD2sz zH@iS6)D-1}F}`YyQXPn+BT-sp8@g_5nwl>8EJJQ3(RmWL2HGK=XVVmyH0hdL)*+k~ z;Nh^U$hf*M@ehHSwec}tQoISbY9gcq~-0;vtqkfzSV`B$cRuFNvD6GIMT6r zaXd*Zc<$<3623TE?UtX`xv{*(dcAkb^|a#R;z^T8g4)D;`GRFBZ^bt@Pmd>*-h5S( z@ae89Uxl2{AL+{4J?KKbaKm~fc(-)rx1$gxpf!afpTRiMVd^%s4gO(sP2Vz|9)2Mw z%tl=gmV`q|Rlpj>+zWH1`&RgG9$2-G8rnHYjvMvDe<*Uu-kgp4&)M|-eO}=q!MZi_ zTPipAZ{CUs9%N9s*DoP}y#1TnTz9hDrI+mf`|rJNb(m5I=*4n4NQXqGa4tzux9Xid zQ)(z`CaVdXU*7wC#ir@hcdXzJ)%`JKQA+33Z2next$fG(ZU5I^?!Z$JZ2PrI;AC)g zoE(-(fh&3_&AppJ$#)PzXuEfA-ZbG;+2|jWk zpE#OVqKPFp+9FQF%4IV-d4c;ts8*QqUEbd9FL_{8~ zJdqTNoa1$6#Xfb7nLGD1u)dt1_fOSMaxhj>0+(7)rzPE1QL5`%iNE(t)nv@yZcftp)C zJ_P}sLa=uH(yqukdw3$e+1wx~(qJL{yi+__C?_AY0J7@gi_b}Gzauk%B`&#p+=W>c zf=(d(8V1D0sXSygolAkY~RoX+Vh z$ZUn@iH!(Y6w^d=Fqf#Nf$IrvM8bMm7)Fe^qyw4y^FoHtxfzvsFm5TX%)e!gDC;*b z2|Y{0iIF7b=7vBBzSP-?5kfs$p-`2=)pG-+XP2}j0uv2TEG=RZG_^uK?$-wm0tIOJ zs_BOskD`rD(X7ihXtt=z*C8zfg&GVCnIo+x%DC(cRPYwj1wtDQwXGtC&}pNHxBJ8r zh`)52otEs0PM0H>=qC4GQ8%oahQjoM1G2iYnHRt7EPPiy6 zTkG(bII&s2A;ZG_*l<)L^R-dntW;Lflx&JCUs%;vyOmB~&s znd4pTz&Ip~&PNv4MDZ$naK6?7Thk=grN8qZsO_~6_xFL#1Za$Wz~ke!i_@?wKK|Io z`4G)lO{~r?;=b#}UdFYkon=Ia9`XdkM-QW*h zul(sx=;gC2NUN1Z{IevFtuFDJWDBrM4x6{GDoGR&3?&pthAW+_oD~`SFG8T z(4;R;9~{W^0er#>n2n`}FAocWE)5%25_HUXF}Mi%vccgv{sh1AgX{N|n&@#kMd*zA z?!lzJ$A^lYPiOaOo_9RmQN4~+8YXgn%+rIH-6YH0!M;BM4g7oky9dS60e_3eCVDDL*g${wP1Cir}way{hSX-mo~As7g@Yj}~TbM`pR9 ze5y=fU@n8YAc@chrDrff(5i@)%A@Jw_Uki?aa(Pmmt!mVo3M!SrV>^L4@vUZ3ptrG zSfel5D`8$dQQYkCYf&-Ac2&xkmwAIZv7v}>lgRs#1B3MD3v&`J zm7H;#|L_0L|J!4UqC5{_KS><8v-Ml_1eaV~%v}<;q30?sXey`I7M`ngW5Oh<;NkF+ z{l>m1XGVtw@yH34aGDDQnI|f7AODS?C%h2gKx0;qm5jiOl&6M5@?XB4l;u&^qx#P^s2S6ZDs~1fcARPQ!#nGw+f# zpVwX08pg1=YZNuG-^yKM0l1J?L#Tl=`Ib^tRWyinM*KWJv zSyjr=(3zwMOmX-ZJo?N6CTg5w1sH=Z)B=!CnO+=78_I zG~?d+VP)J#Y5P3bHN1?6se=Jth=lU z!#uFrr8q=Lua3~x3u7&q+jc(P?9@r+5-A+D$^#sSk@Hb{t%WBBGb_noJ&B9*^k*+e zvx}pPm&T3B&JzmToMu8cO=uBOsnkGl@zbx>8~onr*6L0EZSq;OSF5-9z16AJ+x**Z z@xx~we(&&Emw&r_*5$JvzxVj8&%ga9Ka4Zr_W|P!`XCu9HEOWe8a$)XX!FBoJcpo9 zjZ#_swD{@O8a#)fQLVu<8XZ3C@EOkmDpzapj7E>odW^$!8hys$8Q5|BbZbqXLD5Ej z`n4v{q2+O{$up=2&rh$`%*5nyjlKk))&uQ{5O`d^?$`9l4 z91DO93hfrA!Xa+xRe)x>%w0M^m&%l`Fr&nw793o`37SF)A<%iFB4p|Yk7SF)g z<%e;24z_8n#WR4`@zbrfc?M=MKmA&p=d^j3HqXE;=BHO{^BgSZTAOE(Xu%Jk@f@t< zTAODO-{ObQcn+3ujZ&8UH2Gm1o+%em0`SwTb$Je1B(*NjAP~q8pYfb7@6zQNUET%jzSiYAUEZb3Gw8*m$Yrg|bBImy z)35b-PLFr#@eHDv{O}pi0g_qk@r)kt(&JrvJg3LI^mqo*KYsX(=McWE^>{{)cj@si zJ)YC!U3xrkLQwLZ`2^Dej)YJHy5=Uw_dqtCn0U%S@lIep%x&olbGOP_b?^BjVt zwLZ`2^DZ;+7{FXJcF1iKYYe>2E5CFXAF23 zAf&Yc&l&J81D*jql^;IiIRoBhz%xkt;fHZ}&VY9r@QeZPLb#J7S%GnS=*m}2O>?&`UMF!D&zZZBOtX9`dR^G-vYm??iqGZ9 z(|6}bXR?bho4+Ox%_=)au!5vND%XjR6Eusqcf-o=@PNh}0;FB?u+sD{d)lgbnoz!M zqW0yA=S2qFWw*uG(Eh{GRRe5+;5H*vw)&TJcZ#;Tk2 ztuFT~+~JXLE!+&;`Y6h7vVMyfxJw~jfMNeZzT)`_RZ9Jp8Ds4P(+^LjLC)OQ>A&-x zU*wRSb#igyi_Q3=hEBJ3(=V#sto+(RHTgMOscno<1({#W4yCC4h}@J_x|hCM;|oH; zn%taQRIItMO|wcj)YErL-Qi7s@JhuPa)Xc|GKn3k%dh1F+kDuHIdM>`v@FNNe>}35>~=4l-emgC$UF& zP?#kQkYUJ>jAphN6?PQW(TI3sk4TxPu9}QB3qmN{NG+r68uND*Uaf=kBQiaXbz~V# zM?}%6$~S%GR(qF4mF={mA}F=0P^@+hGZ__ggiMnb?fk*XErn2R^OKRosxqky0W7#H zt;@lQ7JQA1bswp=2PaR;K2BqCjJN)z{`BcOzi?T79Ty{aFpQRXaRLYX%G0dP8jn_N)_4?~wWcdM;l4rSvHtkePwT2;4`cz- z)dTH+(?`7J(tf5{#-^4h8k-u^8IRW9_jzf@ABU-xH_J|6%+oVK` zKEcydW$yEI==fmP)=xes^%xY8gaVfq3Fta&I%@h>Uz7s`20XuIdz_;LT;~F6-qPLf^5GLBAA?NFlS8{xAURbn-@ISkx$Vs-M01Kt(XdunNt98;e#uyYtfbE8xYIKV3SI z`}h9jv-ne#C=sHVyKTXRIJVzkzh#t+L*`1skoAv70D;VtH&QR`VkP(uo|Ccxf;?4n zSuWP&e8_zk@FnFkP(JgtA|F!Ro)JJ^CM=^u2snUQFpym_kbHo1Bb5d+|Dcr` z(=wNC_h|%*&(eR=8%aZELn$NUr^EcH!yisbphyG=(J%|7J4HKeQ4+zGr$G%8tCo|{ z32TYs{$!-Zl15>jR5UtGp!hePjJVV14AK5D|Gt&VF1%AY7Pff?bs=V_4x;EV?vi?T zI=k4kObl^oUuMzd#)fNSg6|jqZ7a%*Gu zHq$dX?*0PK=gUh~p;CKpK$F*NT05+9SF_&eAwaPYUQ9cEc=Hjq>t;@A7q{yB0QP zqXFxm98Mcuv6;!VfgC=X4&WY`QNwmejNLg8cz1T&XXmw$ix<>y-&!dvSR(dq6iC*> z8gY4zya;SiHdzHDotv;`tN-(qCRmIoxqI=Wm3i`B4b|&OB7{xunO456crO?LE*{@y z0hk(*G)!s8OKOFiDp@#YOC{S*GuakpMO01!)r84P!cE z%)?Nk7ZyaIoefj6m(&JR2TDqV8CoW!^UShBaZ?uyw(92CDvM6xe_lVC8@U5oQf2T& zr%49*BE`Z}LUyQt%7{Mkk$`!;q;3`gE?mCVbbr;$9iYjm-oRGUElV&e+}c+BJun?U z*c2YkTT&DKNhxvpFr_zQf&vltHsM zL~zpZrGlHa%9l^{jjf7l*(dqcutDwVK7VaRyu*FhQw1mV@;V}n++@tV&v#Y(~y6UJd?llIWH8do`k3?B5`+7i+<*}?^=&2;&&7DH#uw0 z&F6C2{ZaX=5WP~>#m*2B3;=b|5G~qH#kH$u!|;nK;xEvmt>!Fo#+S(X7wH`emA@Q_ zS95FAn;1&U{k+D*{G_Mq3qKEbj^N4a3?-1@oVprMx>Tjm+ltgtKqNcgqA=rnG}RD1 z`wJC~jzuOx*op|sm#dFq3fAvXFcKTl&zXwFzI1KSyGU7o?YTEI{W-mvnz-n8lm6Oj zA?IZ^*}|ORE!zCL*s1i}{Zu``r2N;0AflBOmQ>=8J}6-kwsJ^2ST|_XtLe;?b^0%q zPDK$jz>dg5=At!sX{Dftv|xMPAEw2Y$NhKZhI%n9A<-UYmTF+-M}tgc+aDs`G^nb%87<$4j#L4(6%) z6_2<;#Ua(ei&IvN7>os;U$#O-A#>wtKqH>G-c;^HP{kNd^`=+H`kCdz=y#GC=d=}+ zU=+?9YSBug1cpyL4yW*i%L5&qa984J6|<05-VUSkE3FWWP=<$q_8j5cpsML~BhFBH zw0o!OWukA>36sSm;dvncmj;kifbo3669lt7hL&8+S9&M@1COH^mAmOwVwUF6k;C1o zAze(b<5%SoA7Ij2n!EJYbWt&4fEn$1-jT%Co|_DS?IckA??c+>I(4NCq;%z)M6gN8 z=Lq;S$vw|Y=a>C`aiulr>Kw(7dUT&wnp|{q2BqGVBESa?eSn;_4{qLEPcbmQj@y&7 zQ)8J%RY?3JlmKver&bUo0g5Ucm4@&{^dqbD@5V;b562hiyNsIeFd}+=vGzPUL}~V{ z*s-$r4E*(^CCs#@zeAY8<0$92Q}oVeTs}`@UuW=|%ITma61Kr`;_m>#^8w)`M@93y zzR7?5DD)4#O;`mfK4AoCp4r3$(WJocq=&a9x^uT4>#(x`FoMTxI>7(uL?K7uFi6m_G@M>#n*ik^aOR&OH%8?y8gW{8l$W`x0Ew`_tSKVob0bmSLK*V?Y; zYqh3#Flbg^t3|P8TDdyhr580@C3$6@E0$0?-jMcCl4Z@#a-#2bPqfu0yONHwfw6j) zkDCse=xH{NOSS&1h%}P}GbtNQ?wIjZs3mL3b-{Zk<}q~GkVtJP+%m>e%{NnWO4)@a z%gVNM-m;QS#hfs*QYfE^X_-89;|yX;=?5(Pe6p2c2w*?6C68^>XzQAya&vN-DJN0 zOWuQYHaIDQqAsh;^%Q*<9X({GDX5%SJ59mGg$+H7|Tb+Fr9EXnwjZZHWQ^8 zdgNndwy)yNxhefzi9d5dKzuWWe=h%T2K3kQCm;ueFZmPJ?;-!oN(^PnxbBQHd-}@q z(S7gJfOjpOx@>z%qgUR#U*}b_HI8e|Lt?pazzHt?_t5lQAu+rZmvx%b(Lp1ZF_M!J z+;R5SSF$$1xaQ+ocbJT@GM=zBM8MF)S*-~CS@C{2gD>2VUsmSnCQKOuN;N8a1~>FX zXBl^1Hz_;?W-DCPw00eC;|Xm3+0(G4qa^>{+_PDuJ=CW#k#LHT+B7j|bcG5;&&n3B zr7NIFRQBGwG9K#PliO4Z_vryx$cVif#i?BLvVB{rsQVONEmi6>uZB!>?!R<~-N4(K?QOcP;CKjkS!o{_0#$qkaC|`GUcyuzi&3=T&=k!>Q zualDmK$#;Ov|o0kEzAU^X|voXHC8rUnA$`&QsLxaV3HEZZ1npnekJ9U0&Asew3EGt z+BhDL&@t!c6hqlJP@L>5OQp-!tK3uet)rG~UL4c&H}A7yc7tzuB4%?CGTP<;6+Wsb zIE$X%_TxkiGJ!sf3bixUx#JbBCf;_uthB+u?&*pOYZ3u-i@gV%Gr0gciRJlq*(bTP zb8lOJ09>(U_JAwg4S!*9ZdJ9ZzjlBlVz}&m()!27J8@~6 z`f%yx8SnD{iqpo+j4y(%Ymw#0+nCa&L<}bW3$`95RbHO3JQGjG%PCQLm&)&-?sr!z zz?M8oL$+v@FWtMhPG9fLa4Dc*qve_#i_Wd$c zRLOYUA@1tE9F(P36GRZrkEjYe2JS6@MJ4 zo&dh$^BL;Y39?CyDlkEokdA}+6+m8e7BLbc@~<>gKcOmsa2 zbcjG(n1fUPc{Mz@jPZ9YkYxk>3EYDsbj7+HogAFTn`tJheX%f;`@`4jS&TwGn<*4R zX)0X0P-a~em#8rxv~Dq))MzXJ^xd65Btm>F!JDc^RsLXJrhRHj*C-LeLd<{t)*a9DuLctAmcuh|X;5ot!C(n)_7VY?rOx{6^!K$Fm|ulM-!&yvASz;Q)nl!2Fu>@GJDl zWSEtPGUE8w61w%RMRmMcuQ+}*8C`r+yJ_YBSTk;^QkzQuN?yK;Q~pTqHX(3iMi_@@ z5fy1P4N;&(GvUBeqP$X=BkPW2$f}^ynXtme3Nk2=rVQbAp#~Fj^3ewA9a8keKLzKb zoQil7{vCu+WS;Gcrh1B{KaOsO=Wt8OS}uDM0e zxrBPRuow;+%m3H+s#=rg>@%~n6Ij73-hd0{oO$Qd?Iq+ngUMHeLO?_pX#y*ztFGXX1< zEhri09aqxp{isGN49q2=(5f|H3kt!izh0T+ScbNt*YFuxbRRuG^cYI_rcx?Ez-*n; z0^7#siI^73#ws94i3H`-a5(94jbobqEV>KC&Z;D)j}-hDUaGh8x|#f^tIRs@IE&#J$ z;5E;$fXsR-Bp_K&Mhd9xJ$8E!$Cy`+(u{K7RcQec!1njrsDRSp(F8>@1QQ3DRQjb0 zXqfA+Vlk|!K(usGa}%Bhtb{LODLfz)51wvmXz_w#CW#G1Y)TWF$Kat^C=rG79Ga_# z@pBy2K6^{wIZP5U38z za^}}*e#HgxnT5jqca5p|s*OcNGu>5CNIH$>L3LL~plUjNph*78ZF#5-)wWnZX=wpm z)RxA#4~p5Az5&LsWYlz&MTVu~J^7ZUC}sX;m%+5n2EOAoJh@fT|7Gs4&p)e?u~$lo zUb~sJznkk%E1!L4B4hn2?>R?zr{}vDxZ4j!dQWZ|eRGU-FCi5D=D{=l#+fIUqu)G; zacaMNw1*Ep2IzOh98s6&SMmZrq;`e1;c|}*}Mp=#^*PaEiJ_ATtM<(0c_Wh z3XMZ12PeyKhF)SBLF}F=q>L|tFNAKa#8l5`UHj3_kzg66mAA!tqWeLih&u{ zumR12S7RdA1Cy{Y^}EM7P9{p~PEdn1`C0AkgQ;(?YZB~A4BAP4r?;`xNgBeouh2&>I6 z4(ze}Dxbo*w6;bXGby256LpE^OA`6@9~+d0YrvQUl9&gJ2#f@Mn7QxLq_i_}@>6K> z(t{taIz~&&8gJ<|kSPR|QCd`kx6E^Be{dV^J~9qUHet<+OIyl_N&|1e)Y+xU-G}d zx%QWXYkzs;+Q0li*Z$={Ui+8->)Jp6AJ_i*|Gf6k|LNL4{jb;l>3_cVPyfrczxe3d zU;KaUy$N_#MYc9vXV=L&`(z*qVF&~=0!bji$p9n_0kv(l)o%Ote7)U@IMK?WC}NKp zAS7W5GsqzG6y`96S?$(NL9&f8VwDJ~^QG_ILmPd!GM$p6?!5 z`>j=b)v8siR@JUO#xyz=8=W$ZSZ(MSL;DQf-O!y3LmRGK!=(&YoS{b=-WbD(HlqE8 z3;8a?m1?-s4Oh0|iZoo&hT$>r({Wl4OVv>Ww2_N)Zo_35t|CMCGK@aDWO5%v4>xqA ze&NYMpd1j&3^$Bo!^km=IKxo-g()LJ{q>7?^#P4AeAz~14_#i{4EnQ9Ex4>pYu^R^ z1?dm*On@1N1nz5gQ8myrG=(ywb*bQ&l_H?CQw8`rPYjq9G* zjT=|%#trjz{-a7a{Jp3Dj46M<8zmupnN0hx)X4Sby#HyFjs^LE4+! z4de#-wKp#jG*El4=K>@ z?7<-L10q0OK&haS+TFh&C|$ez6>4{y3xst10PT(&1VXulQQFWCyC2z(dl={6dKbaaG{=oG6XT%B};%F+?q5Ax{9 zQKLY)pd3)NjvPH&M~*agWKkL@8#D}5q$7t$f_j0v>&Ri5ph8f-j?8p{`sv7&P9P0J zUeaJ4nb<=|_Q1YwU36rpbR8KR2g0C>P1TXnZXFp_3>u&#O~|^3>c|MlDda22sV+Kd zWWJ6X(O*XurGv6T!!VrVbW~QBj_Nl=NA>9iLcI2M>!^&8AU`Mu)I&$54F{!wl#WV< zY_Hxrs`o$;$|ep1VQNV1rlYzf=%}uJK&Yd05(xSe@<5}IPSjC|u_#Y22>K#2K&ZzZ z1wx%}$h#ry#(u3qs6!714bV{r_F)c*awUUI&=Bp3DFTfGjn;V&DSC&&wm07ZfNf}%lgP%p?10_A~P-bf9+RD66oN*8px*^~ zgEScF98dy?<>Eofpst|qAk4t9+fc9-qXV-s2(oCSp;M5rLC8~>f)#CNI}$;VQ5gTl zowavl3J~)~Z_EwF7@NhzK?xWe7<;2Jo{J6bNyq%s6LZ4IzS`3(N_+f8IwA$*D$~>p zul`LN7&}Hx1}F{G50nmq?J=-D25pPU1fiWVXdirQz_-4lLE4NOrcI-ZHoL@VbI@>Y z7G>(#s6-vxD_6&M@26vnQgp08T6c;p(w!oP>Q22fbZi3b%)@-)j{(A#c+5@yIPHnW z9F&KV5}SiLs;l;34vFYyXm=FG_3%QZ`|8M;6z%C2rz3h}eD)uKyd>=&G!Sj;q1`%1 zM->j!?!lNlRgQKKMEjDlZ*UgkA92xX7<3NO5gcdzF>em_Yfm(EWWts__$JTPo>4B$ z!AY2RJ8MrL#874o<{iv$Loru-M`+KW99{9ryL#T|?-{;4!#Bk66&OAovx*I0q2cRq z_y!xk9K+Yw@bxo%8HO*_Fw+dPuVMBv%mIcu$T0gGW;H54P*2 z!9OAI6VTuF+~ys+qaUUe$B2HR|ctUeohGY=G$eJ zo;$|W^Dh4lIzQ2KFaJ|7{QR$a`k&swEZ{csF^IEGBX@-1!ZeYAp__^+APty?LrYgv z`$pq%kb>#GdzAL2bj36P7Z1olx4@M>G2OTlwI?GCm+8lsGN&!MPEgusohI=xmy6kN2Gka(=Cjw>j5YCw1 z;&ZhRQ?WN6-RM%_JwWl|x zVK0V4ALu~)a{53XA>Iw;i(w-|DzXb~M+o~mch^2l*=BsIHhbeRKeDHe9E32;OoUyg zHe({SnSjG)e=H3~qAgK9wQo=tlubrmm>y9kGO|$n`sTq${j}+a?(728hp9LTx{_ic z(_j0#_0c|mJnF$=ray)Orctv9`U-GpkB!hi9>SAc+Sh$J^uyLc@!B__EA(NyPJw?? z<6)0q`w;qOH%u)#SORn!jOhf2u|YUY4ddD_Pe=A1q_`>Pv+m2E}P#0b-_St~N7zY7>WQ)0F~y)8UIk?d^#^90EW0 z!<0S%whW4bF8Hz_Lz{iOW4QsjXyo-qe`49<8vvbV6l_g|UvS9kjd&Y{!<;WhN5;X1 zetvCcLH{uHQzH5~b0~&1rkqi3?HPf-^k51}EY>EbSWl{k?-5IVad_%AQb+d1VcG{j zV@mS*GqtbNC~c-9PKz!5RKT!vMC8mg&qmom);w`$JCnL3pS!(2N%HS@IyD~ z9S!}%2WwwMr1o|3KtJNwk9PIM;lPcl)D2rwF?P7bz|zXsyBo@){i$dleCqWhE=OUS z!?fz@orCE-19ijSsma=m9*L57qr0#pK|%x2}=`hQ_<1dj0MJ`Jy=$mntk0(o5^TL zJbV-fe|AB?WMd4YK5r`KiByckLd=^nm`7vLCs_J;BYGn4k;XF0+Z~6+Y{Uu=lS45F z`4GcdD4&LKmV!BG z^ZRPwP|PDkaSXs*;PWDm+@KWrG+u)s+pSQW{So_v;jaS3QaWM^#}Bg~`glYf#t-_w z7{19X0%3n{4hV6P+Y2!b-{G{z^ku@Q@N2|CZKhzJ>kYqm!(q8U{FIrdy?t?dF)SK$ z0sI<`V}SDDIDiEePPe=s#4P4)FP30l5ArcyyeT+VV9xXO&()rRh^urQUr@Kl-v@q9 z)}8{43!J8SqHrpPC6337KENqkbOh$r0a%ve6v2a~ho@_IUDfz5s7*%~#(`X*SRGT? z7nFwdK+s^&0MIbd5FK6Q1I2)1K~eh5)6t+OGtAO0)?jR1|-G1)OXCabUEN;F(qhR!r}wxI_Yda$8; z7&?io?wIsM5Zs#%73qUP`Jg^rxX1QM)3NBu*n&Xk1$a? zTH!$}Vqi(P6i||m>4THSoZdQSP%0=xM`vN??u+GqkzdDjD$p@8@L~o$n}c4=gU4}l z5bYbTJ7Hww+*?P-!(*61qEpaQJ+L3Me5}7%M-2px#LB1;M{IXKPPA}>gc&_19Vb*h zF*EeU4AB>}UOybAarBE!!$?oV>TC!`{U{tw(7TbvNGqHy#$slOg)CMDk=-$SBn`yK z?}=FeD_V>+H5D z@_D_`QZ;A_UQ>T43wN-8p6%Q+k$al_w*D0R87JG|v3PZOT*qT~Xwr2zaje}i5;qWV zSCn^5Lf;q3ao$*-WW8)87pv`y!}h0B@NB?CS^R?Kq{pY?>g|&c@zIiw>$`Hn^x>x; z$6al{L12G8l~>)ZFQNGO?Jqm&!+RN%v+UQ&Cp|fc-*4jI7sczya#0s|pzzExo@Y(X z;$P&FtD?MC%^Hzo@w`@T-Kw%K)>^y&yH(5UDgU4AW_!?Nd0lqeAbDk%-=`5*WlbAo zH4T@Z5dd_f^Cg|ou0go*jPG0_ zL)vG>0q#u{J9Szb_`PGRDR@CwK44>wP5FQg6l8J)VKSL|FI+kra|$aTp8BkWqJ6)I ztaVF>FAd{;Ove{a70AS&{|e1VkdQ#;yu*>^^WpXq#$=ZK88+LROc_6@89ndlv&6q- z1W%mg3|<+#c%$9Au?ly|AG{d<6dX?9vHjQ0I*w}YaQu*y$~U>~{$wXHAg#~u*b`T% zAF(5pw!g3RWdp`~3l~=0a6eE&@D5J?h(O*yMmR|Xp})m7Rx`4!Ua)V>IC++XZpgHI z&(0nHrT5&Qb%qhDv--`MOBttlYQ@R_SLTMtuYCH!@%wc?lkdOiPUzui!fk&9($Detr|__@HL+VYU~ApIwC2h%x1yQXMF&P;=$JyI?a|~I z?8Bo<&S;g^+QBPNMp$FV?h-r?#IKf5wFT^;v03Zr5~ho9Em@MbpmSKVhMMJATa~n7 zxP-7hFW|3|%J;|QAc_d)F*K|l))9j37^Rq~WV*VROwlu%WjuLpoVHNbEQR=%Xmrzo=Q zeBPnPtNKmp~-T1!!uuBvOdD|Z3AVN z#u^V#f)j(ay|ULP9x9>;YHXT%12S{?>Ww?5YEeANoeck9Do^13ACevvl~ z&&Fc)Wxsckjsw60c=P0jz{BR^f~9;5p{Po8%95@!9R0@i-E{42&lL z_+%22_R+0FF6-u}@wU*DgD7qb;mILOIunil&no<{D*M8R6|E5~vlb5^)?c>9WRHm{ z%o6-jWeHTeNdAn$cvQk~*5EmVp#{JJ1G25M_c9BA`UgRdhbHhhXE2`mFakfP!yNo2 z87l{Wu7)`S@c|cR^al=1&GQdoSdM3R+EY%4cdV(ERx+fm{Lr7~df-|9dFU?~o;49# zZRg#~G#8inWaKD35Ow{IywHwp7?Ynm7zX_eU)z_+y1v~x@@$FS{D~t%#~7M6&JQER zi}%_V@|E6O5Cb>iODS*@p5hso`>$lAQaN`Tm-nw^p)dbm$yoZtNB91CzySI<3zm*V zSK(1Xq;vU%QGwN1-wkrPlq<00@+g=0<#KtH8%nux`BI^Ev~>EB9mH(r{yZCN17PT^ zV=TV|=Zrsj`Z?@H2+s3i&!pndNDV;Q>t<=|foZe~Z%>TlqTc$O%(6z4$xDKVM|*2t zu^$h2x{f>SXX~8(VIO|S@#Tv09wm7|F*DYGWv%c%Xl7AQZD^^_`a&~ay zCACTT`>}XTU%q415uc2bTOnvi+qdvhI4slfPN>LP%T&ifJjuIJ!20H`BZ12#cw`QX z6tVe-(4$`Y1XXDLZ~ajOYf)x*9xkw9VQi0!uycEvV$mk+33058aCpFImxL8@Nak4` zZVy*v__2=qLeyESX-ikOb;eHX@HIK>4;A72dgC8Q8cP>m*Rqb^(0N@j%Sgjh=9Z|% zSwY+}{2X`SfGcMz;z){$h;5fu2Xc{_ntG~oZ0f1$dHJcQN>fj5&YhI|PU-XlZu0V( z8h>i$<1Zd;JUVg8gTFrh&Yq3$?Ai3_kDq+z+0;`Nsi$V9o~lkgwI%gbdFrWIk54;Q z2_2{FM?mMP(l)4rz4rhS)Y0;`+$UEZ+x@`j_AH!P9uQrWJQ?ONHclWnbR zcX7LE?d46_u9NL9Znx~cyan4svRxwErLtWq+gfh7uf4n-+jZR5&$)bP@8u(NE+5`| z`Ec#!!^>s6_VTf^%f}C1J~msn^JTk4wku>?a{2iF%g6RyKDJl3`z{~fd-*srg=L~n z*gEb7Yi*A&VA5SY)HKX*Sl+OrVdbx9H7sh_HTCq~({-o!ovAo8^Gxa4V+{+&H7tH<_rnd( zH>_>g*s!HxYs0q2RSi2DpKsXHu)ASzLtVqZhW!nP8p|5XU#@MeYOHRY)j0bnjWvz) z8yB2DG-b-^?WcE~-g$c0nb~LNoSFOf(UQ~kZyzn?ri`0%Zl-fHgPRI&W^%KJo3-4m z<7PcK8@SoX%_eR(V{?ph$0&DpoljB>{)cZ_n!L~i%#`qO(r+mUnp021|xnb*qR zKDH0(gP@(*aRT+Ho?3XSgc}6s!q>`9*QB0W#EeDEScHt-47QT{-#&Kqbp4qs&|H>; z%6CfkUjKjpJ0%_e)6zzd9*s@7h`(US&|!r|14ddq_#|=|Mm>R-yGo*kU<_#Uf4O4~OQAoCM7&putKYskw zspF>t#!s6z-jAI8cPeYI|G)E{%8vi2GB-Cb7k>ydcS!EgT>Q~R{5?*8R<1ugD>oOE z2g(N(fQEpEf`)+#K}FeFdH(Eh<)cQuQ@iTap@!OqW4}4kP%rC^nlbvDv*SJL~la3v~kEk#~% zH!2CPM0M>mVQOII^I(^5#AeMl?ts454ac#gW)4zS_1Rf%d)Fehk*cauw&lorq~^n{ zz>ZDWu>x$%QPj~^2k!*tz>L<7G~+1Lx6OpowwZO=dAWIcdHHz-c|-E>H#zZVPmA*X z`MLRd_+zH{JEQOKKJ;$g8npHORm<{+;t!V=<`?15ljh>jk>(c^6bvcA-|Q?XEGQb{ z&qYh}K>45o&=Am2&@fOTs0ftn=Z2EG6n*rOho-h1*$`MTySZ##bNT${@}uZwN!K=) zFK#YdD`|8+!eE`GAyC^~wxPLvR&#k>bJ=c5L!h*|Y*TaDR>|DbTvp#)wo9~CHJ5E+ zq6`YL-6jIqiv(1yVLr8O69E)27Xu)?gPAO{UDBuv2~@PYxojuX*wO|FKysraj7*d* zaq@S_UTk+amqR(KgE0QDmD($%EmjV!wW!lj zM!`JPZVeXfTGd>(pYnFu{bGNql!7G(#b(QgN9Fq_GNs??F6c+SVAqQV6j{Pd zSYEc-mZTU8E@KxRaP|He@ zM`DHKtdcD(0Sm7}m6d=ng28ex`a;s&yIL%tCkb>J8i*X!3x~sOlzQIjK1nmoo|nF` z90d&sd$`Nm!VHLo1xz{Ygc-2MN0FBEQa+aja#=SRY(AH@No*=D@(w zc`Zku!xT6fUx34((H{HQ0}~#2e5i4RYBdVM5-7{0Z+=E}kNryeG##NXCY|$x|jynJ{JY)QM9kOnq$XH%iz*NXg7|TsA zX6igpKBxdR1T+*h3{(gz0%7*UhLV{5u%T=&g>xyLOYvOF=dwU9OXRUcp6F(YJeJ5~ zi9D9bV~ISL$YY5-mdIy`e3m#jyJ1tq_QutXGk?9Xan6+uvvyutx3(HI{mS}zi?3{~ zs=BhVuI9?-BMTpX_~G#nKR)HDH}}1H0JITQ`{r>;?>N8wt$pYBzIE{Yy7P<9uQS^zgT{;;^NGUb1u%lIQL@Z#bp=gU)*|e*TuSvdoCWnc;r&arP7PXFDxbnKgs{OQP_j{F&x z^*~rG|EjR9ZmK|j1>`G`UxAzo$X6hLCh}*3p9y{@cz6J`1GJOcKvj~vyJ`1@Jx#m8 z?M`i)-84V7X%07YxtYgJ4L9>4wdukh&|dUL1$to*XfJx8;=(qhw;{a^=~|>~k*=jJ zXlVs>S6tW&4mKfOjWliE1dncljaxw5K>K0Ubl6z|nh9%Ye=VpEv=5s0A-9A^VGFCU zg<0r}Do{20p$b%uey9Rfqf`~B8l|d0Y;~2id^?a{*a?Ie(8pDvYV>Ut2=eI5edyzT zux=k(QU}@(Isn?-H0uIl4Yn}aB<3W|_+i{32V2A;wumiBBhH|eTi7F|7-@_%TEa*} z8e2pkWURQ8$U_=-$d>lf1F%SB5RbGL_9Gra5|LIKl88#A5tsIs{$QG0`UjRsgfbpc zRw5HICN^@*_=A3Iw?h+SkP%2p)+DVGeUzl#%ttP^R+}X@k-roD#XXEb#3bcpi`W!- zZW*VrO16weYQgA+o%FM{#aOm;*k|x9^RZ<=GEEDtG(Aiij9ui@d+1kg*%odok38nc zSO7AI_FCQ`*UTp-VKgoz*htIZH90mPlEo_cu+yv;g|C zMGQ@6lmp8-f}n@GcTtA5GUA#lCCw2(v#An1y^sBD8Mmp9l2nussnn1dIxH2oOc#-v z7xrKlMU6Sb(?;L-)1Tk_!;F6Y2aYWMk3N0JVED|E;l#njp;RJ6YQcrI7uH=^e__Lg zjToStVdB;c+hiieGzl{?QDA7-!MXe4+JhGkA>0n5;bm|N-OIsSDUMnPBi4g9(wOwj z!9V)hFJ4^t;`$f2zqskejjz_cI=^vw!@|b(@9x;txUq3V!;*%jZy%W7u&iNq;~K!mbWV`y*n(uCoH}9%BqTb@X%Fp*hZV5 z0bNd>q@8@|4dw6p)t=uR#5Irorw`x)$KlgQP9Hse?DX-|C(e|gnSN%*naX!6XTDQe zc4pPt-DmfltvkE_?18ff&mKB^`0SChN6(%(S8}fW-1KuZ&Q+Y7d9L!@taEeD&3*T| zsyCLOTXJsM8(UxB^~Su{=bu}A?)lei-(5cc^*v2HFRpFc<5S}EPm!Ek4~NP;N;0u zpBaY*;DZyMeDKH3rAL}eXYmY!|Mv&0W(9UE4a}R3lN+3>2R1y{wt0PE!`7C=8-mN$ zv`$|eT(Ue+H79UzZ`->yuzq)-rapLdQLuV(aL!_!?&Cba zy|g-Ta8t{n9f5gu!Pzt0_U{f>Eo|LX+Pd{{pr$f-xCH0!INNPqR2Qh)8(4Cnea0LZ z8(g^^<{|+NcH;1CD-qaf=U{PcH{-22P&2ZDmJtn zL3_6cD)t9v?hjO!H!plXP*AeFAdD8 z3e1@wnDbm%BtiYPRfi-&q>$V5h?+vU!7}!t|*sw0Jaa~~Z_P~}Efi0T@o0kQ)Zfah!GqAlf zu>E*oS9xI9vcRs*fn9ZhT_*y&D+0UMHLorW>{%1ovolav64*N@u)jR8e`jESZD9Y= zz`?bFgX@~t>L0>^5b*RKy8e=cxhPT<7Sz=`@`S!wfz!_6C32Fn%&%V!2>R0e0v4$hbxoN+i< zF*jJTH(0SDSg|WOb9Hd$-r&pwJmINa5v*DjtlkrxwJ12JCOG?8aMsb_oGrn*<-vIy zf;H=c^JWC+Zf)MOGdO>1aQ^Y&f>pu!2b;HU4=$b;T)aKFbbWBeq2ThW=IzUa&&_Y% zUfEo`AyBa(P_a0;vLyK2%C@o{E%TNKS1t{%ToGKkHn?haaMi-*9aX{S4+mGz2(Dca zTsI@QZf^ns=@WZY&FKS|8lJEx2tMRuWX&ar**-M)`iv0M_05i+R(b_c)|Jn9{TB_Hy)@^C6Ti?2`q;>!Lmf5AP z2WPe(Dr>Eu(K35q%bew{#}2n1U)*})a9hcYw$e3irMp|^Ep98@+cv$trDj&!^y7hT z``ap~w;f;IGQYO1dVX8=thVY^f$F-p>OF1T9&4MmscqKAw%M!N=B#gN zbKCN*ZO`Fa+uwjG?+cHn5+!QE{~ z7PTEc)Lyozy?jsm^!e@6SF~3iYM-^Veb%z}s-x}m>f37;w=bF1vI*OREt@yBuP6^3 z*xSBxeaqIJEn5$?Kfk7B+ursyv)b2eZC}5xWqV!whOOMj+*1Rd>k#Q$X&24aohcf!u#a zeO>gQQ{ND|*MXFK14y~w0=eT&Am!gu-x0YcAmuIsDR&9T{l8N`ko@1Pu_AXFNV&Ix zlzRur9nC<>w*c9mfEp+5X;lwNxi%onwF6o1T_EM(Q{!d-`#|ph0LcA+0&@R{YNF`> zNKF#CKLaWE7a-;S3gnKz0V)4?^|Z)+0;JqOft33c$o-$GXC?nCko@QHzgsDYjumu) z_kcIR6E*lOpc_0f0{sMGmj~@5dci}#%LGsKf%gI#zY3mmw}B_#j(DfNcOg!QcY~+BUk6Y82KXr8J>ZGoRR1P=zpb7W{0?~P{VsUo z_rO!{_rVi?puQz?|E{J8-V2`b@E_obKLpQmKLSs@4?N4=51u$yeOvM$P)`Yt1JC>i z!4n_Cc%=UyMH~~ygJ(N_44(KHc(&tl@Wct=F%Df5!4oHeXS*hYCq4n5{qrPv;uQ5g zvGXbQjNsE4_q2N|#tHEm@FsAY`gdvHv+5^;KLPJW{!hUZe+HiR{v15<7w~Hma1H!Q zT#I^%yHGE2H^vv`Uc>kzavmd|LHrQUqCD{&$`fBldEy%=PyDU=owWZ=^_k#X;296+ z!4oflr(6?w;zjTn_O46diN907l5&4gErNeE@Ldz+Up6uY-&QXRzN3PI%@{A#6U2BS zwjz#+ZHQxHJM5)D--W%z_gwEvx%XY~34Y)@C~|)?76^Wb@xXFdpqKXk6?%z(L;TXd zj}gDbPt>m^|DP%#_$ln7+-I?WKLwt4y`~!kPiuT`3H%#C%Kz5gmGR_OK=5vtJAwQ0 zp&q;>4fMKu3LouG6uB5TJ`#caPT+|>@WBRRk$Z^jzX!;2-^8np)blO(cZL6+d${ob z0eRNVF+P@eSC` z{I^gq@x1$j>@UUXMPKKVgTQM zA_m=f2_M+%ZWDah-7ff^8!tE`|9$t}f*-&?)bl5_kN6>Y?!N+__z`%_x9&fKC;r9F z7p0Z^ukPCf|K`Ta*5E&O-zoTsC)4vSr9A1tZv!(tw+r?G{~hpsJzo>PpXW`%lb#m@ zU-Y~#_=YdbH&Q9Q3F;Tj_2ml|_+IfHNB*n8^T1P4w?%zdsi@n5#lSm(-viziwIB-n zqZUQI90mEP#;8{WUj@(nQ_)|IM!D$QqfbP?2|OA7vfwMgx4{1f_#&_o|G59vn6Jh_ zf6UinZWFu{JnD(LE2b%?5qJ@J2KYPtBmaBwe+2#^u5a8RrQ-S}MI;STD#?@N6*QB4 zf{{s4g3(Daf}N7$1v@7V7aWl^QgBpKvEZ1b(SkQ6-7I(u=8L{cC3Aixy41}a_sNEO zKv09v0PhA*i~yet^nfRN)hmqeWK*>Y`mnBJ`ADqmh*98KE*dpqs_x{nwOJ`)%R zo)`~)Ah0udVuGu)#<)rDf|ufnUBR=yZs3Vr2U3pfKqA+HejwL@#3Un&<0HA3kuBI; zeO2sARu2nu9f){MPQ~$tn1=b3cBf-LC2}1|ySWY|_63hPP3{Mtmp$YK z0aE#BZs41i!5&3w{SY?f5QuBG;cpu0M%C08hLA9X#>gb#bIEyQ^0TfVi(h}@dQ9-A>bqPgC;v=M75q7P+VKnU#9v~)OaGT(y-O?wPrsLe zCzgX}KTQWuoB^KgssK-%37&c?!4s?0_a(ntO%t32p5K(z2;Mx97;E9{TQ*H}*;#Tn3k-QB&u{L>)*t

t>6xP#Do6Y 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%0A@MzJ9IJx% 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

hT<<>T!NxdTei=^Hh7Db2NMQH=hmD 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

ObDu>p*1cF!N{fV3(`0l%?5aD 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

`LmN(oz-B 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

ywW)?cnO-pTd% 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 gZr{5;~$ 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

14*y&XcTw$7)17pfz%55KJ&xcovPg<7O zwjZ8eym;l}C7=4NZldXV!0RD=;QQR*d5jxHC5N?g$cBFLsiuRg4eLPo=`cBwFX#v50pwybNH1eTy)OhbL|(B368b%b$t=>AD@=}9YYLMG_Bz7kh`wH5er%B6 z2SIVLjj45NcBu#UI$i3BzFwDpY>-!U>CxbL6jm%obeYxlTOI6;OqqnVY6CO}q;M`v zmqkM9;#>^rqT=eTM!Os00PH-1L%i(daf~`H4(k@zp;Y4+uBgIKbf(O!Sp{?CgSm1I z5>uXZ4~|t<(V%;?JDNNeJXckC92PIX($#}no|fzn!&4*%ckCe{98%>}9QCOqR$Rze z5w2TVzBJM;=+3TJGD73qj>@8aHNL59AE;zR?tP{*j8rup8WntXD5V9ys^mC0bu1Y( zsr1-gT5iD6lB1%!EHXgM5fUSp&w`dGt4P*_hzY-4Ig-1xU94&yadx6;a9oK}698Hr z(T+N2N6Z}|9uGfuWBfQ)5|u<(r+cL=4m({ED;CGvfzx5|XwH?njnV{+;sbaRm?bxI z7p<|2Aj_7M8b+;RN(pWtp$$H^*g@r8#j zUaqPlDSYKpamY`Wmlq$pT)NbaI?7uboxzt)r?zC~x0aEN87xV4hy{*Dk#>ofq*5pb zDR*!e)FYQF6m?`_T_sMRq844KLmq(K!SZ>p%*^8SOPMy7B3TkGOKMb!$2;8#C2e|S zDNO>FrQmTHYbC=>y87YeP_m>Jy{b?zxyv2zICC7KB|Qx+Zg?uUz>Fqg!4h|IB7-bg z;^$2lEY{=}$B3~wtTJ1$vfap~FuPfnl0;#oVP)y|qCU|(tuC8y(sWpjgT9aN(P@2d z_fqkMmtoaaCsrjM%?i0hs`rN;s#3kH>rC8x?O^k0LUDE9&Pl>YiQQ>#@pQ3-|cW6-@1gbdVTZU`{Q9*^bLwC)n29?@T)*pHbtqjRIxUpb94!a7bc@)i?6#QtL9ir-&M zTrt-X6Ia|d#l#i8w>ELrgf;1QMek3yj%=+`uioPAs<#zlfAMz3?=Rl2nCpnQEAF~t z;@F#Q7?Y_S%a++xwf-`S{FTRH3m5-P0{H5Xt-0Un2It;#}<85{A9Ns^Aj+w7# zt80&*vtQzJm({1976WbVoc`m{b8=i=Z#N*=Hf_kdo6?@%r;EKP=I55`ui)$4zo^tyK@IEUdA#u8LFW#jvQcHf%-ij7+7PogU{K zG3?U)=W)Do0hXBuP`B%NQpqsZS_qSz4JN}gkNz~E7>jjl^M$KN-R<$9A5JUoRLJzA zX&ii|607N@Z459tgDe=~cz_%y9tZ}JN^R(|sd`lK4(+qX6Bj3zh%;LGBp(#%^0 zTtXW+de6e)Jf0znzWDe^0k{WmlE%`c4|)fk-r(MalE5EZPx3Y##jCQY;1rPwh(j{( z0!U}6O)4{)JSuK9DX7pXwRRz_M{lGF_5eIW650t(jq)tEDH@Z>Us48Draw#pV+pd| zgLop9rzmLGVWG9ThmK2`8jcfq%#K@~ejSeJNOCn%DGB#uPhugJ9vQJ&srE{hctpGoMIvuP|8}GbnG5XKp9m7f?K02Zfq;EkbFnY;VAAHW{CF~k8zzMHI)@gwwJ2qPf{p-HlfUFFN7)EP3VAdR#Q$TYSsOf#h#GJL5C)(f-a3p1h1@FQ^cb&+jk*_rhu!aC@5btDhnZ8 zV9K>ajJirQu;8dO5muDkyUk)eQIM#QQogkzfBUc9YG1f}q4-Dxal-%6y@MN`r{Ue8 zcN0PCw>l*!x(Pwic0xV5(~Vd^7Rk|UI>&+I;;XZX7@EM0)r!;WEUo3%rHx7+ooF5% z_br0!a5bFez@jhCwF@NDz#~qsW4!rWICNu#SsdDKqum0hqaSb1%zWs zt=-P_&PH@Q3Xq<^>{?}AgB*|dsDgaS(gk^VA)^%YTk--EH5%RtMpY7|3QghM+rnWN zoK%lC#yzFfi}y7YP=o|v0bF#LUW1ZkwyH3X(hz&0xR(%e*#QWn5AzUc=O3!7DliPd z21H#bKBJd3C5Ng?xCp-1VZgh4wl=R7wj9B^m#E;|C!IS1Ha-grDq3B9P^L<(<;k9%usVc9iSXxt!5cIhqDs!o-Hs~<(TZe}(_&``Sr&TYPU|h&3 z$~mvZIjty#2W{N#OrrTvrg$j)S6ziG=%~~YuRvjipm^nySQUn5L1DOEDi|_>7=yow zc7F=8`gBngy235JtG9BCqn1kBi}_kJp-P6)5XG^ohIFP;aQ(GarS1g4M)RW!#C-HIC3~Wf4qmpf#F=SZ@T=ipre?O3~Sa@93^>QX&N}uvMo>Q}*vp z=O`GySSZU(Sew_CU05+~spbUtGK+v01(RW3SyGmdWe(;l4Rz9l#u_)hv1)hC8&+6~rgwJ>BzfIYn(%(Pl zPpz!{H=7E_*Z)`Q^TYVrm!3c=zg0L%B~~S^1l~F4FKx`1|AW+kZsa*W>RmK|OmY|2RJX zK5%>ppP!5GKL`BpLAfrTGdyc}2>+w_?UV65jdK4j@c#&&-vZpX;rZuy_b@(x5WlnR zci{6a`2FYc@H_v#4)hpaeF^^l7Ciq9&rbmED&Se>Ilz7SpT;{)_bc(8^6_){{Us>- zo1l&5UZX$x_lNMFpGE(^47jf2`AXnrnYU=%--FM8k7o|t|1Um25jejT^nMOLpV#;) zKa>~B5MgbZ`DTj-{`OtKL-}3-j?cvBNA>TY3I6>%w2@`_@4NN;G3fqw(DbW#{uewy zqj~q0x;-C{cmI>cKL!2Kk3Os6Ux(lM?g*cM8P7N9I{uY@|F<)I`9sk0QsDb+{C*3c z&sw;5H0*DIhBtq@!ux9|{{a5}EIeP1=Ng{>2QZJK%p36c9Xy66e*P@#`|Da(%zKU< z`3;{OA8!N9cjEa0JpUZeFXH(Ko=^WXD=Vvbw(z_XEPNLf!b`tkW##RE4)A#X9iHF9 zbM?k@!Z7oAjl%=;4|K_+#mAY!z(M_ zjpvEW7|X9v?_aitafs&uJnQ-$%iqNJuf`MN;dk@zGQPj*orh5A;8PzyHJMV0`2GCMcrc{j8OhcjB}E zGUyb168B5-`5c~K1qv2z>uc{Lb<}dTwRq%g`4;f#06rhn(Ph2fy#3 zuU`&XxP<4g0N-z;&ac7qzCQywLS0+H{Wrn?>*$N`d@1zU!z(NQ6whOLi1*4P7ge+M3r zFTZmRJ;itaM%+J`^E>gFGXF-G{bl{h-?IOH{4*48zW<>0w<-4@0sBXI`2ExH`?fCg za(sRlbc!j*&mYKvH@`oT`K^cVQ#^0Uy#H(X{%zK~@6ms+Tkrli{r9W!$+rC_KK~HU zr(sNxHyn5Tyo67V6Y^??&%cW2Z{hiVJccfQzF&Xu;j@j0@We~}{GI*5wi73HCExMi zZ{TmfyNdBa{mZ|piz(Oq{Xu;4H^T6Dj-z)%&y4Z;W<1}Fhhvwr&+-75Ph-dZFy0d< zWr;AvO*rEFD%gd#T&&~!GkA!H{a!Yw|5f0lZl#=)H`GalW4k|AV~q9LvhZ*ug60h?FK`16Mv-jsO>$~>sc@g3);zl(?U@;iA#8^O$tv@7`D z@W9wue3$)4*dIW7;(8xG`JH8c8GoBO;{n(>HvON6@1&J5m+-fZ)3k^0j19-Xzs4%Z zIrHoA{d@5c$7OUr%l-`RDlt&-!Lh_ZiVV=G4d0M9`iq-$W3}tD@nRm2@_&3{N_Zi=D zoykx8pOLkHW8vWMv`xM-^Uj9*QqrP-zlpyOGPF?^sXN(^lq<@N4galx{U7m=&$MA^ z^YZu8P1u8Ys7HSo@5qOLjnBNk`(3=JzNVaVo}pf&e&g6>{T~Ky;xs-8$`S-OFWx+z8%k-@vH)uukPFg%$qa~&*PJ_%=IMgD)OD{0NOLO2h5yJ zdMKalJEPaxcCLTk3L5E0A&==Bpf08#h5bjKvHv(WIBqDf_Z+0YL}KM#FBKK>i}j_AWN{-Hcy4t-6&{v7(ONIU%|^jR5w z%k>rIiG4#EqKvZ~#{}11M%Im7Q_hXtvz(a+9{Rjw9sN$g*|K?t-&mIaj1ExW^8f#L zG@tW-Rc}9pI=%txIJ*qTt(n)%`|KDn@A=6#^OLej8-_AUS>*gm{`>^!<`^};3%gCG zt|q$K$YGIww%6@>I-2V+(r@_1zB2laV~k^jI+}9Jf9xyM?_8S`C+#(kQMQxoL4Nk| zNxWPWQyw0}Cw)AB56}DYV{hNn_UbHhvBEv1#*zsPhgUqf0O1@9X*<<>oE;+wNn|VT5@C59=lm z3Cq8^#^Jc8Pn2Vy_A!059QXX4ep@sCX<`+)O&z0`xgy2AGR zQm+>IevPi6pO7*`KAUwYWrh7q9Zfnp?@~W=O=0+aBob;J3ewa>j->wmEehZH9N^w-2C9nQd3*NBa<9 z%~;R+)bhsWf4HFdvktg-qi)V`^mox#BHw7gzYpK}H*HaV{uI9d5+2&Ce-Ut(FT&S{ z&og{Jg3oWk=S_UR2hY#r`762(!t&os@%;<%T*C9-7W`t??+>6n%Ww|;R=oc^cwUR= zAK>{hJpAov@%j6BJ`MHoyZ!HrST~+d<~Qnd$}{a(mgicJ_AUSBocx2}ztKCCmHz{D z@wd;!=ZEpwb3WyWzZtvI=q37cO}`ec!3bw`AN!m-oic07A=fS630$1pzVynX&Y+xA zZ}J~y+01RUMTqks4Fc+dX)MST7~9y15AEZacXKMR{mbRX#C_gCug zw7vM<*k2#PciLctr5*M`Jh}Q7^$_1@oU7&y@xKD)vU4HrCf4&Perw|~@@EqTX&r(I~|iZVrB zb6sH8nUq!2w{J(g2YARM;AUCe3vmE!N;!t;esC4KU9!13-kD4zZTaFD+?Z~v0U`#+!@>EXYZ;oTY@gO_!)UjAnE z18F1fkK!Tyq~{-_9P4IZ{t(`?A1NEG_fuC@J1*dpIIiQL0FUz7BM=ZQqX1AHs7U{5u2xzX#9H;rVI2E89EHw$adT+G_L4rGL!$ zIv!$$_U#!!{7Y;Hhh{g@3wyb zdHp;0x|h{~lAqAc6Q zd5U_P{my#9f_S}i3uTto*1rf`#Gj>`{CpRFYqEF3cCzpO0C@QKFD{X8jseQM(J9m~ zW{zW<$fKfmy#z$P3Qykt6xZa0<3IA8pT-{K`utDA8k~BT^B4P{dNr$OIG$bf1NHMK zJp=zAo?Do&-iS|*XQRV8rj7pQnC4tTokCqg{YHIG`C%-^IXrjqd^aA`&(s%}@I9{| z8BbF-Mr>WrKIXqXJ!s-+vg3oXJX|Mc<7*gCvi9ng75W)yvzd4kwu$j1tjENfd_6Loz}OVCX89)k{VRAFhr;-iHv%_tFm}bns(d`&F+Rl}3)$Ed_N5sU{~E9yBlLIB zUqD|8eIm50^ZXy#m?e9SYy2RjiT|==<`>X`AH_qN`9Ac?`|wa7nDP4#{Pqb~(66vF zsROAe|2veSjBq{2_54RJq5XLNu%qONHmS`0kQvHQ2j4FN2kiyQ5OwB?v z{-o%LJ@D{T@UYLR3pie@>^a7-W@9$L88XLlZhU#QS-|0{IVuj8qjAF^`(C#Byh=U)&07`y!Q-=xMAdCT#{{xf=;W52BL z$ahygZ1iN2KaTZt%$vEv=p6Pd`Nu7!nq!v5JKCT> z4f?1TSs#7d{G@M`w9z+e>-3BG&UVpXdJ7MIyT^FG1rK9D=!-KpyqPz${X+cIp~Pc! zsPQ}S-OuBPG(3dQ?A-md#=*7| zFa62vi?7G~cWby0;*;|;=N?nvr(j+(J`mQ$dMR7P!#W?t@2rzH0pD>RtCCyd=0CQZ z{Nfz>K|GAtr43Fy#>h0=%oyG>xo{m%l({Tlj7`IMVbWx52F}g)JkB|s`wHYO=WcsG zw`~xvm57J(NB(l0k)Iql9IMp7v_s6i{c_-A+n^%U1j z?EkX0O4*u?GR1j_<0EV9a$a+>btw;K-+?kfdxZ3{&x~$i8U98a!pJJyK^f=!H)xo* z;q!O!P=@G(X4`%Q-@gd<2FnreH{Oc4KOj0NLRNHb%y$w$6t3_m~ZHgI2n?VuiGTmCM}(C*KUE85wt!|40> zYrLEfK8U}656>q&s@D9(_v`qcx29p;tc!GjJoz+h(-(@5+@msfd)AKT{yf`l?}3>Z z4`c7~JOX)Kr6+kt;SwIkOR;YlM`XrFmfzf$As-oUl(*+YJ;Z$+;&}(k{0JWMH2aUb zg=KzU*Tvskm=p-Z_wV})*vrB9Z^a|9`1}^UyMTw^NyD4)_mAU!-dsog9D~I5`Co~- z1)!&NFZe2@TUj4*QpU~i zKZxJR)3@R?>(8Vu!}jdqw_nEd>90|3BJGdjZ^GrZk!$3gTv2&FmNM8&M~c z7Pgb)$@lyW>8vwH+Wt>tlV#WUq{;BBuiMS~s0-{d{#N|PwsTHpJMI4E+{U(Y-`Sqy z$V1|$4kce%*LyUcAHyf>;k!H?p`0Rk5=kZWZoA|Wf1{|EjjGrj$BeG>U>klF=)Ya6<{F`@8T8%IX5_s3FF+&p2InBrl_*2oi0drkq;1E2X!_3> zgKJ_bIsbAVw#TQ5wWThi|A~9pj9;Rz<{U(P+~eoGO+OO%xfze~ofz-5U#Vwl|9m0d zF*bnzIIbC!X5t-bZ&F8_I051`XPAEi_J`R^eiz`)Ubfl0X8R0I>It50d~gfvI&0sV zaNPU0?G?gtkNpzrH9CxEBY8%WXVZv>ILzJyasT;iN*D2*Bxxl5q=)6Wzx_76C;X4& z)6mB~Z}tWExmYLnvHlt!b2f>1xZlowEuK#?d+1z~i{1mSi`SF0nXE7G+!*yC&%Kdu z(+<16te^1#W^N&UteZ5M_V-cG_u~0AJYRN0o%#Ix_+(6i;X8S0+Dks0`aXnmXE(7X zdknEt`213Q{u6vYunk>>=Ns{S;^Wwp#OLGq{Gajr@8IEiH}aEhENT~dN;=tBYzNyw zUXgzCmY?J&V;0Ci#w##(f%}MzRWN7G*iM!uuZ6ex`}zHZ2DXuOuzf|eWO(CEGW+4HK>P22m(;tox%t}zct>85 zM;xP!3*p?$I1`-$(~}XZS;%K^Y^Ds3+JqGuBBf|4~Lc z&g<9}woO4^u@4!R;8X2YRkiYb!k;mjEWs+?tj~Rc(exN*Z z-XlNA3-W|9%7!Oqys$kSGlnMir)js*+Z;dSkIg$Hj~p9s$76g6dZ?s4v2^kB57us)VwA%=+t# zo=~*VZ^+m!mZ2|_`=rzbT!%i7_ghb@a{mIKBRtPxocwKkazBJHq{;Zji(&(RN8?y~ zJ^C7tfg>%X&+M<5{T9+sc_y#Ezk~haM-mvqoBdqEvMk|Qp7_lAIYK$M->#44NF#Z} za$JY94#v~5U8IZq74O6M58?SC@Z%+KQ1Nk(;FEkIJo!alnfguLN zbKfZIQ~3kDv*YdxIc;RWMi*ha>}*mB9S#5ft# zZqk|EXEl4%dvD68f$cCnW?R@k)8@AT#_-qP=g!t)>Zc6bR=A$&hYsBVB8Dt<W&qSw#DBbcDATNWlyF2xx{_;#8>0mEi ztU_g%zIxfGG%jqZDn9ER4by^|OKEXyQAal%-#rh37^GT^ACUbS+4E-*IQ4hxchk@M zGxeLHA-Koevcfy(`M)%`yC=ByxAX86DS6N9zf&lPHk=~2?fLkx)bBa)u`HPC`@^s^ zBb0eD=;Ojp`^7kzA&v6Te#M)0Aer;=;9lyrT-Im5!BwLe@%9^x8~ZB<*BwZz{SHHB z+_7JbP68!rhQ??%KN41%7sIf72W-0YOxW++kbM741S)Woz5Tv>9CkbDHi229Nes#` z(&|OC%wiE0%roP#k1WYHQd~{cwZCgj7wvb@Z2e*9I9f!CUw|M*eN2Llp%)y@Q!JDh z+15m7BZ$2X7mV*dGYO+~j|J0dnCc!T?+uPR-8(7JdrY=%zv=g)h2B3ws#m404GT{O z5p@2vGqOQP0R~Dp)q6_Of;yQw?80XDFc>)$?B9p|XqF*Xb$KvKOHhP6$ZbH}E0N~4 zk)Tu|h)B9iNBzOQ#h1aznu!dlBiz_w$;_zB8@%l|y5I%--3W53)vCcGJ)*zZMX6Ya z;c-g3QcBw(7#(${(}5a=si_%i-bOe&Jvy4FYUq!SyU}S7h~|%LklTMo zxGN@w?>IFY0Ju=1I}AEwHTf7^v(E7ZD*fu^%!mc&p>k6A(e<;G97Wk)KklA}3q+9$ zjNapEfYt?_G?f!5^pvIm*%J(j)F8pT;b4^3C<}5(MrCD_@4B74xDhKQ3DhU4mO;#q zmCa$;0z={$Hb+(*C-MrcN>3aHibfFHgEmE(At(42L^7#mu>(X77h0tB%wU}98C*4l zE3)l2=~?8NJI~F7d8)P0a@mQb7xas@ZyM7x0oa+UNjKiET+Pk)8xS~1i6^eK2}Y9? zqSGnn^=F_WZNRRWOV2FKK-1IF94US6qTqgxUJyRo#i)rg0}q+_r)PGVDCo{X&Dk?B z$b#AYc#zV9@vm7v>Umn3$%|8t{yDa?W3d?=7xfYb&UiQ&&(jU%^+73e(eg#Cvpapv z1(|~5E-wqr0vA#Y#KXZ+s^^5E83r0*oy}7ULSD;|>7%>tO68XYQIfaW(J3$Wip6kD z-sLLp;CK+GrcNokD3Gcuy;w46=i{i;PtiG_^&d{r4b?$ewBL22Q7ek=IegQ7k-Y28 z`~8KNn6SFTY2ND*u3TJruLsP+`|0eVwBeLgn+%8rC?v^`-^G*EH0bm8XJuZWc5peB z48`2v?{pe{>VquAfS;b{|M+FpnVp=cZk7MVZ#pw&D9X?L zaxwnNC}R1k8&1wR!s1`~MbBzdAn9FI{%9)WK)yge@5vl1--cLcTHivk|I{zx@r8%t z8b+b$1^ESk%VaKJCgEvZ$VL@CXVn?0rL+KG&NzN%8uaFBV9UGSAdw__0ZehH$qUvQ zzkxF1?I!0bvhqJt0Kqp)DWT5#F2;!Y{@gsAiQt}?})z-U3K@*5r`^z`9QF=nY&@cu+VVp=G z#sZr6V-Btm*LTH4Ou|s6S}Dgbv7(kY*4(GQC$o}#KkW==i|c*52K7|isbiCf1G!%$Marblwxt6*Nn95pYDVXB6|IAF*C^K%d8r?^J= zGOkZ|;d$jW5l@qz;We5OmTSD@)*!t;YLO*#a(JA;%j9| z>Y-<3j+Snx2$||lA$WaY-5f<)P8Fp7(K1_1aq~+CAh;KFt-2JJX>1)EX!WKTt*}c| zZ)!?fkVl(VGgK)W?s)^4H6F?fL@VMi?1xjRFw!Ak&7^Pr_RO^3y>#i)BXOB%sMkSK z2(`qFkQdK~<6toEOIN2}K(BU$>*=@0;WP{r3JiFRbi(O~|4T`M5&I#QgNet_5@v{7 zKf-?krT&hanh5n^7!b8gwF`Chv%khP{eR4zcbr~TnfUK>&bj67@AOGB={=N54+$+4 zDGCUPE23+d6i7@mi79|(mrw*mKtL20OF~BkL{Lz1AqXO3T~KTYh=`(VT~tJr-}gE9 zzVEyvn`@tz!LL(m>O9sK0K|+2KuX^$hyro&D8C z-&}3fJL%0vENSaf{iuJHiucRbtW!du09&`Q+ly1#a}AD~OpeW-RyBZwbl{U^?hh#~ z(tBD%J$>dYUTMYkuJV0D&*?B-FKqc=Gle31!mQ=%9qxxoXfjLH>VpNhu_9lw&Rb(* z-3LHRr>@v^y2k^aeR^ZYnhlV5YM#h?uaEr)?Ne%Vq?zCCrzCxVWD= zD_FOl8Zi(r>MdV&YJaOp%Dw7VgOqXBw8j2xRC%iJbe&PvQ~dnZ%+gBmbQq_clJ+_K zuBqC&^lRUcPF=UAr}xyo*KIhp`wWHh;?rjC&HrArXU?8IbHS{6{Lh^^bFXDHmoDvD zIJf7Nc`B?bP0DbkHW&ZfdbDr<+dArq_L?i&DUbX=u5n`kBCJF$#Rb;A;ylK@MWI+AUG^9^7DHXmq^_m_ zG2=}AU*Kol=o!|4W17kQlC|dn6tho z^%G_(ef6`FP*A$z552y3aOQ5VRqNBcR+?qO`?5S`xqW%`$N6T>_V$iiMLkgMOpiK! zMbGN)2A_eJ+q_|oURrNP2W!ea1OwRnyS`1o*668fXx+;;ESobsy=#tvX^jfP4)5y5 zuARKu7n!mag5xdFej+5H}-w~qifrouTkry5RU zD(HfvD5d6&>3v-qnwZo@+~H--=0RaKyaF4StVLAVo%}#xnDoQ)nusyno6Hml)5wKlX< z*R1o#)ZsVyPTZC$@(#aDZT%0wMBN}Z{309q(c7LiI6nQl-HmcJx7F?x@uKAJfm*R| zH@k+sz0R}6;dc%5iYesEbhg`;myR{`Y#bn5n_CDO>N>+h8w|bNh8{;4iv2 zzQ^cNQ`85mO1;Gxy;0lzr)KFJ=4tTOG@fOL^cqYCHm&JiR;oP=)@TL;+*0pGDfIBr z=Z37yR;^!&pt&q{8x3qEE7RSBRxwnTHLH3ycC(~{-x`b z9(3dJ&}+%MO-ukjsjSB^hgmUpL~wcRSPq-X7N;?sK9sgJFO-b)!}58hedQ;+bPLJ#`o=uNEwjqd@w zw{O(b$TL{l@>M%zTf5mW=6Xrre%LJY?_~tpVO_kh9-9?KKx87R;T*?PNvJt-Fjo#EOZ!lP7qfI~5v{7$$c)1&_J;N)I+IAX%#gg0D)9vrL)=uqN)<{_!UN#h| z1EfY;hnLMqqjc9}QnI1%k~d{!rgz<@^r@i}E0(8AJ^O5Uvt##mnsoz1=V~adDLSl% zq#f$pvDBbh)~{Z+an@ssJmzR z@(tu0{AFtE8T=ih$KWq~8)^{5@{H*r_4Do6a9=jaC3G+o({{|b%kKMe4Bihq*kEg_ z*NY?l)HUept4>{s&9>o-)}qi;h~TTvynULohTz{c5Kg~w)v^L)g3XYq>e`-WNOi@& zg8g5rg{@{T)jS$mT&qu?`{k}%jx;B6vHf1wzAs^Rikp<4+*M-)j9n_iZpK0Z~jcGKVX6eJg%x~I1F>^p=Skd6Z z@Y!kr>|cKhnEq*LUmN?jKJ!j%Mf%*YIdoCSbmQr7>H7>PdmgVYb zP!~}{F-=Q_`-a4|%jb1-?U>?A50s5O<*hfrwr3e$pJnTaZdkXu7n4U8FP3$4u*|i1 zzlQb(%Qm3Sy7)a<-g=ewT=0@v%5r8kj-d~H_16uZsHY7CTK^Y=!s9eVr_}P?IB@N1 zLj%6&1mh}-rExHgnb)OJk&Q{7xHYO^z6Q@?2Ue?z-qhS!zUGl1nAU)!jjw>B7YVUY zVgJ~B)pq%!3{xl#Ji>n5P{GgVJ0ljl`EO9rb$$K0cPFKX_9hCw5uuTCZ3#>5m=HMl5?A@U*wCQ@Q8 zu#U1fEQ?;~pWf$z>YuL0RbNtjuZ|4Nm8$G7XRC;hl<;Y5S0KyQqK18n?qfn*ub1lg zQoqzith55vIAA}Uy1nk9PxYep6atZJjA1|_jptDJhX*lEUsa&GPgT#_shfK+K{mGz0xLXVSvLcv8s3dW{)hx z%$~VUhnHLXHN&AIE@t!LFqB|vy*y{+e4zq$9_HMjX- zkf>+e?a|Ddvnw>zdRK1RwBFxN-OOeIz3r;I{d4QLHM_R8XqMS9U!pL4P}!sbMp^7yEZi3%qcX7n>(enn!66RI*-y(rdCo9%07eXj#-zj+}yi54Qt!kRM&wF zp*!Q>q%+IZT;)Y z*-Mt9-}S|~`1*;h>7|8~IrQZP7X5mrI_<`tmd_&L>c#7o61U-Hq09l(2zR(-SNY#Q7|T;-;0n^nC952v-8&zLpaD@v&} zhMbzwu)ch~tJ0m^eJR9Hrn|Xng_In#S6n+&@3`8?^=O9d-4a|AgrsPep*^|FHnO>l z;3iy!wWr}1R5!2|BT{Bf-|`$@qqVY`eRAkRwP1ys!(-?Y9v*2A>$GForQW%5w??GX zqJC`s7#;v?``sEsormrmy;8uXAH!>>Uy&sl6nD4is^!BDWJ&Fg>eA25k3)|tE23d2 zJ*nh7j56R|YU!w>ATinN)}$Wk*I51(;t+-h8b$jZn%CkS{;_sd>WY7jomhi&5|!=U zDb?KVO444vrcrqCadZSu2G7lRyKN-||BI5$AK{?Gk1QH=64>O7hd47RzP1r8!Lx>b zwPZuj@>MDMea-cF!})73y#!r)dAg7BHCCb|Y2C*E&3rELXnpz$_3XSRwDMR%crVZ# zJ{1{keR&>VQ(tx)9=(V@8PDGBvgxA2rh$h1nqZJskUGF#BaKS8rY^xJ~6u7O(A7*AkOX(+j>uxeP{TvX5Hz-4F{|j8dyB_2k-7E-nkLO;A`uCeXe$^{D4r0 zp|Q82fC@ds8(?FhR2dn%A@rSfYcTDByXnL5nyTgQ-mQ?`dMVX72_smd6S12OZpxgy zuchp}dp7j0?;U2?wcqv3VQK7r9$pt~Lb@IbkXki|27lT}-2gOnfiuqVkx%Kz@cPxS zNS|gnbX%$V%3)((jrEq$p$mDrMD@r_t@1kM?yU2ytS`uqkka^gZ()FQru3E*X69TBglDpDaYk9pgy*o3AZNH}VuqUVfJY-|! z_4$WAlB~e6D;^fywNiG+5LyG@&kob_R%f7_8q$?Z_nFjdTIG7IKc}cWR=d+b(ZAB< zx&cA+vO8o08(uanSG!T)x1AJcgRaIv4f0m~6FW&}|Itp~G`N-r^i``HaH?23w9~wS zxuGBd1@%o@*?E|{i7Rt;WP)F<_VmqC#kKB1 zve?AzV_^8l&MHm&)7X)E^vRAz28*)aMXq{4!Onn6<7tF)mU9==>9Y<40&}`ouUNLM zXLY0Jc*ibg?e=q}?=;t(;f$j%c)1alyB?618OD$XRJ|({1WE&P57~Dg1~XJI28)&1 z0bc$DLSidc^b6M7AzK#Xg$&&o3cJ&6I|fw@nsulVXsc{3>5KH(8BY3)oPIdW?xj&Y zJ6|*P>ijXvJI}X#!_rgh8O^1aoK53ayLd54b@T2&UWU^z&M=TLrr+Pmjix*{eAuH*>iU_ z1q1UE*3z>nJ->BlUD=_?s$Nt@uZ<3?$eewK-y`zwZjZFcZuV$i>V_It@5#HnJ<=k> z?$IzOOtUSio!d4<$JfK|hgx6Rr24FgymWUMShIe3Q@MV4@U3-oNPfXa687n529TYN zebAj=!&#S&yP0;)ANq3c3Rda1mm#~`u)(IjuWYAd^O=<+4n<-6L80->E_>X#NlpX) z(|D(y_GZWIeueC26B-UR>>^&1_IB8v_bT1_GZf%;vklQ`@c3OdzLPCEJMaL_H&ly0 zU~*WQ21Hfv&{`VuH&j(=F2C7vS3~q+dP8+_8GJ@)@bh-|4@^mOqg|blgi;Z*^Mwn_Hno|^-Q=PFMn*4f50*D=eqbv<1Qt*(b zi2~JkaygoCbAwy+zLg_=D@TNf4`}6Qp+Q|Z_NF_RwzqfMUf9=O z;sKYdw_2pd8C;>ZdPHzvK3Xg58Qt4_yC;Qj9nkJc@~`@aPMdzCuJ`A@sPM1$_e4g)Lss0NR;e@%tFgbFhgZn1aDt46lid9Rv6;9ip8yZM~4 zATGFIq$2Yqma;9;AN@~kXhMn15z;isoB829bBuWt?~gHw7=}?4az~*_!W@%94dJO~ zWnx+#k0!U)tdG}8uQ4&}M8ZnMKrF?qJvBu!yH6#oT7CozT%p}xQ=T78G9yf@8O=R5 za|*o7xmo4{k@@^4muX`3Wk%0DcsPt@5YrVufWTfZ0`xN!WjjIH@W60!E--nMC#zL} zNHuWzs~Ecb4}`aIJx~(yf!DB~f7LMAo2{L~DV5q{}9+UC$pF1>Xf;bXP$Y z)|XgO^Me0Ozh7j=7Mb8}=5w;u$Tst?tpLy6VS=-5LXTK`XNx^k@={^0T;9czthetM z(d80XAlG0nvNlIY&D=^I_F_FmVsD&a$SMfv9YHkGgf?%bKnc{+p zWi(HF#gk1gnWUK#cQda`K%j%UxKzj$+m#ByH!KN*=!9To)Lv*(9BcS5QLp}&Of#uX zQsq(r4*YM4x=0_(y3#qfa#RY|BcSpoe8#MMnkAQ<5p>4++yOLkpgGLE&Y1juJnwG~ zHHYxLi06IH!R8{NcRO7YstdLu#5VwMUiRnSaV zUXit6K-^*!hG1k^NWvI!#f5yB17~weH%}h51O%QIC?=+z9jyywq>F5#WOjn)IZu|z z$)lG*sqYZxpO(_BH~7VLm6)pd%xBV^vy%gp1TG1>l7M7|l>cYQE?5Lyf|s4%FUq;# z60Wify1?nc92LAi%gcNJul!-K|Jr*c^6C3DrSU$nTwj^moBk;}uZ?w?+IJI-(-$U~ z?Se_#@%{W8S8uzPQ_JgB>yy@&;!FRh+WT65{mlMt(C!~e0#%L;=K2cLYSV0e-K-a? z6|R4#4K!3c;LVOD2g|Fu`qKN_)if>}Ow(#jV9u2Q%&zBF0@>F>T0_M9^r`Pn3aA}Z zQ^4++u66X49!@UJU%P5!Y3y5CTVIYH-}U9tr=7j`xoj{&fnxUYSe$41^>sJj(DAg& z+FJ!nt=bxhT*~HrnW*6z)=BQ#zwZvvciW};ev$2R?ER7pA{850O|m4oI#iYo9k|As z>$Q}XPdK?deHv-o>^f*eFRiGUlPC?L|L=9qyeD6hb@J~r*{&eR@&P&CMUM64SRtFF zEmxxiE0k#D;irii$JLtSjW)lEAO6!G@tA`(my;+iz^369xpFZoAVlPpBW;&A`Z3s@ z-1qS5?tbV=c|uHY<6N>fxX{5g5Hvz(_k_zK;F>uy-*&^B_J&OA93a0T#f+DtjI*1~ z8R8;mnq2G({5QEH7&|?1t~Dw$BQA9BhK{AQ?Q&g$NaxlpV@R+K9gsC2hWJgOUTbpF zPUCN;_gmzHa;9vN{F(Wnd_Ce%7?~tWOyZq2dgSZz?|JA^!>v|1H;{gncS>J>d$M(DOrso1>^nS{<--QR3_;#M~%mt1zKg z3;bN=u$IWyCw-w#dewBA7EM#hYlh=jU{!u>12oJH0?#-Ppv4NGP~lUI6CJw0EYC1r zP&pq*q|ooE10^LY16>upU$rtFn2nbSa;uZGB6Dpd*F^FqD?dcAG+)zY^mXeVW|Z=< zez`7^A6xmVmCJQiMakD;NahhE75(y~I0Mro3UinIC^k>>s%-2I0e`D{DinqIr)-Tpt|JYP(JGb zZ|EWZ1*Ih)NwTWWP2?L+%CenlFGlfyYE}0+`A=WfC5hbc%vbbPS$^x}GGktj%-?vcB8;hne zk_leic3>Qo<7}GpOhYcXF&9S+3pFpAW*T9i}KJP#w$uCAqmhKF5p9V$j%D2N3sIa z{+<9k2fmXK7IUUECLMBV`4QoE2We9BSG5WH8jFkupU%maqWsd>-x>Q`g$BB4 zU0r>f!nDbZGSeYxUS*9SeeEe^J1L!#ohfK!0u*gr_E28!If%I*BS^V4U}@U8kddJ> z%d!G&Y<=k!vSn8ZewdHSj9SUk&*C~+0jD(|LI@Ctr-@3laLkr;t|6*VA=k zZdS5$PCi>FE~da2Sq$dOk=z^U^1FzaN!k1+($#W7&YYh! z7v>nzTkFK@T}r$bxRL0x<=B&8Yc}c(4j^EDg)nDey{(h5a@L`nc zGNURUW+_iT%;V?29zSh@Tv60sIv7bc0h_9EMVcAScVhFESRRP&L$Nc(F}6ij4(&-( z2&R-QgUKo9M+tYa-J`xnu2iWBMQpNZHZ#lwlh66ZV(e9{^?g|>yhoZbZkvqSDzZ&V z{vI~moqx{xd*0vEluE;MN9~!lmScwJaUC0MDWL=ZBPZwP&0yEYr`W{-XcvU5g0KW(2pq>Z0c0^J6n33bh+)7C+^058_2Hlw6}Oc+WBriqT0M)2i=)?5hq$^sQiFP1sa zrsT?D$zX4!E&n7XR-?}aN#?Wi{}cG?a_he+mMHkVz^dSz_YS;!PgXAp&E+P(@(&3GcoU*My_#kr&BrOS|_K%-%{*Zh2b8r9ft6)P!t8NX^ZPf*aQ@}%K`VR=9X$b3;i=XPMT5(+M6m;&2bs7 z<14Nj@;M@ygdI|WRs~xTr+9g}lfSENb5Vp~{CQR9zGCG+trsC+(pZyp@W78!&==^9 zK>=Hc@v0TELCvKnnzxvxuE(qaE^9H{T3ri}L6LSO-tPe=`vdetK>kB3Kd?{@8|K`; zb$~(MfY=B(2J2NN_QKjFknbj1%OPw)M#I@&dc_C_*KR`n3+dSifKZc~XFm;VZZBbm zORDrLyAoEmR4s##_%sz$ZLY*V4e{US3HdaYoCi`;iTr0Z_>zsPE|rlFsf)-PR1J92 z$WM%*5^Mk_8EGok>}8f-O+VUej$Jlf;nz) zGb8kj+?fjjV5vdYt&u(Ifr~rHo<+_@t=1_{nA%EnbKK7umQSGW~n{+s2XCi2Jlxf&9;epx7g?f)ux^6h*aY*B5r_G zSwHQJAV`Z+*<30sU?)V$4W$b-q8b?)d|RS1c9h(r-^JX7GKJEZAg1pjGs6UR*x5Ug zE{(_Cqs$xWz_hR`LLbgJLMif!5 zuY)Xjme$N5D;8ad;7WdHF^NNPmsci^KU)xIhu?KLHOJygM@3#U8|5 zAnpQ|zx*teXX$}*VWogH|3}UAC&iP$LA&LdP@3(Pi7vK#t&*)@t1e{BO$ku}<`0p* zIFa)b=< z$3Y9VnBdiu7QO>pos85_ROUrt3^E0)*1#5;rKzLSb|9b`8Re7!>bjcjCh$4gj*-#1 zX)@K#paSJDQ|+Ew6=>95Bt1V{X2o;e95dg}8v{}-UWixN9GC=GVgA5`TEwVP_7fjR zs(fUgLPRomr)tukk@cdEnUrwwg z5ty+Uhv8_@QVs1$CG=w|-xL(nJfs1M|J1Y?lul7QK`mC4wuqCy$4sftXIj!vIN#$e zcU!&g@xGIqt}RRmwiRI{s&#eR-e^D4(wvdIS1T*U&Ylj^ZO67i-@cWY$NY?&kv58P zDuW%Azyx9B@f@`F>uWz|bxC7UaHy zTvPOm_r{|9fG!es&@4}u5!ErdfnA@d*iTj%`ll;$dj&kL(w{x#HwEN4I;u(1MMo!+ z9MjAt+tb^|9G)w{mX&gYo4zy+pgfgrU)l8(*bH})RWz-zCxRHg%*%_{R;J> zms#+t$QCpERTUWapjZ>b^Tjg|rK@5TiN)aT=BVAafSZKK;GMzJVaMb?SOUv0Q2lT| zW+`JA+80VXW0zLtXR6ozswBTGsmgK(0Sq9+e`(@#CHZ+tp4T;ipa}T$5mpYQs@ISyInhEhx)e}dYi z1{&nUrsUUru?xbVDnx$F*us0u3W;Z{au)_Q`BGWFSXM}!t@fjeT&Ib5m*w+i`2vI+ z1Sjq%`c6r1F3D|Wxl>&W)1hqO;E$wZgnh z{*H=a=Q9&`JBJW>H?oKMyhCb!vRVGC8EEWJTe)|s&rNjDX1Q_(4p3I{7EcAD6C%iULa~? z?F0rkwmgMAQ@!hTHXskVbSm_->^}=TpMs`gOhJ_?7!}+u%)yWG@)1dp&B04PkW&q> z=^S9pP3PcN>u#_}SN_+$=90FIS6ynC!1??aK4q(>PEUF%?9%}IY9Qc*J1C# z+=j|Q$f#i*rN+8Xsq+-SnCKLI3RuCFn^^Sn zP*88$EvQ#L)JJ(zbBHH3m!v9L@-%W$^F(kyhp)U-4dohQ;hkhD-j|TcmAYVcFIpzR z+Ym6K6EEObftq3PcJ^BdYI;|zw5|?)@Axjo9M|~Z0>UEEr!leU;>F1hAnc1GzeV`B zoff-$=zcDy135?ARd)g_(B2{No)KW#l_FQEz0f?YUiq(~XUl(AXVDV^#0D839}_6XgFh)WHL06bRaBk2&7m_pl~1(B?C#GgVMf}moiF~Yo^5G{q4nSy7Jh!Gg!f?y&<6BCrc z0(s&O@}?Mtw2Aehq@hAN2&MpjIDy3!2-nSnXszBZ(n5DU_ovKg07pgeXJTx*CiwL_ z-cFKvyq({MXdtTq4?s$L!FzQdDekip_*5Acvu1|>>6%Hu z>w97kc$eeSMY~-NxnJEY?-&1(+>e00%Py2(Q?qeHvlD_}YoNnGlD}3qd4hkj68wMP zf!^OJ2HUX`{72Q|X|EOYF(vp{E5X08B>z+FNAU9`-(2iR)(PS<@_tn}l&oLqAnOEU zbSXdnV5D^YWv7u;Rk=dr^p&oEB$5|H`JYfNKUfEAto)Xgm7f*KxsllljU}pG9d_5N zSr3Z)l8Jw-pTC3i$ktG<#k<7+UlI0fKN|m6h+=)If6p)V8jXK1ZX1(o56(U$y0>H3 z6uz8C`GZxfL&#I~3T7OFu`rw&m|e{ftH!ZWj9ewK(H81%CfSLoG81Krn;cJbQw`Ky z%{vo<)&xv!34W(!9NF@DweU2MaSY;S?^jhTbN(JTJReqjPJ;G?GF8HOG*ZilpP+Jf zHMwR}(ZB%pRHYs&4Dy-$&lFT@UM{IROeYAm6*wBM_2%HaLVt*}y2p!hwh5~g8w#wu z(wa|NbDfo2t^I`h{vK+QFRI)&M_OTgXhorli@ETXCeY%mO-z#t((1D~hWHSaL_A2aUl@?=%+X%eRX(X!cE z!S-&h)t)P*UzPDbhrp@KuM>a6(WYHPc4Akwoo=LkQ_2ggYK~=jtD{uqt1cC=ReeW& zGtGW_n~Yc5VVrGNeffHId6$-2>_%IrnbnTEiOeOS0-;uFqTOP;{oI89o-{lkUVFyp zIM|$xd(Cs!9z1NAv#(frK#gVjY|d^r?iyomHU_cmZewpk6O(Ueex+>AoQ;?>r0(-{ z&b*(gHfR0(Oa?#G2SlbaXGc(xP8GW|E;TxNeRFmLl*P{(F7nT*PxE%vV{s#N&K{@= z3PF9&5b;!aYK~TAG8nOCUIx=SJI-{fr!SqeG4?Hk&)K;DlR3ls5pJ`GBSmhr-xdFn zY=vmFPi0x<;xHKzdp6;h7W#IAf3msCJG6!>fNthfm!4l{EFzW`-Y1;L`l$}&G_AJW z@ThBj>M|C~5@o@$JT;GH&rpGKDs-s_enN05YdXxRIFfKGxUZ2Fo{Ap@5r3N)>3ctL_$_h*Ybur3i^#M4%2F?>qc$O`=(p=O*ar^?^#SK`yB@V;(HVUy5u|qolx3-qm^$tMoTDWO4}b$|Celaa-I`)N!J$k zu^EmK;(3b$N6@rs_So=4L>c0)6FHr>9xdCgWqR;9q#w&a)TQYS=q<0OOW#HemyOcH zQoLOX*C9Qa>lF#VPk=5omw(3c5ZinjWc~BgkYzv)FS!=76a*UimCE|ZnK!AlukoG< zB>pn6lFfOndzJRPbmaO66cu4pa-jwkr$$x`ORfYh!K~RQ>B9@uNvF(o3}wawCZa{6 z38HLqyiD>$WTL~@W2d3`O$@6r-HG%pk1#y})uqrpBbrW(({x1DTwzb_aj0}Ttbh|z z%Fz;BkB!-zazV>J!C&oKbDvhbmh<VCDqVQKBQlcMiwy`-rz;5 z4!Z;8U`FIzb9lbg^(KPP;T=t8f_b}Xu7!Kf#-w{vsuE}jek1Q_hW=}`w#_9V1HyrF z5g_Kdh#~?}VSo+u4BZ`rjt(Xdo$lYChDetjAdpjmUw zge zjK=rjM^qD!PUB;Wj5?2m`8~lizQyLKVJ0CCekRA8C8o7DlXI}&zdfDFY{x)d3TUm* zWbXf9Ch^3xPxT<|kX!7})f~CSCa;=Y&^6Jk2d>;%(#5OlLg*J_-Y+xLj*Fo)Z1Y^D zVHvvi(7$(m%Q5zpMl6fAaY+`jIpkQDQ5*h&R_IB4C*PV_%q-dVJ%g8FSNOCEY0srR zh0WH#PmMu9G1SQz$XB4JD*v>)2gE#rR$#vlXytbm`9TE(kdrsbv3?;vZq?`ef*Nn0 zwf0;!`+TG#M;py^XpNg7OBlI^n@5BjMdq5%>QWvfpA+n*ZoJ%zKDe=wQX?%w%OXEnc{Bb{l5gKDA?{XElht^fP5Md9~uHr_Zw) z;+S`2GZf{Xm;x^wuFqq(5T zJSJgI=RUHaX%Rum7@_u5SyrkVkYmmaw`g=zzL*r6iL?4=DfveU9!bkkgJuKc%%d=u zlz(D2$y2#fF>Ff|B9vGeB=N(O0-2=AvzG8>zrgL6)?f)=VwFz9r5>f57P>H=;fOvo zaEAtC7@Y=@CopaJ ze^oW9lE0@?x%JPfZk0Zt=u=Y3Jxyu6pX}c@rZhg6U)3;-vmxV{5KK5PSd?fyzC#Xa za_z`2>?zm&!sc})mDmVY`>q_~P3TRapUbJk5M%Hu5Xu-45?-qto4_a+oo?O(sdNY) z9oQb={P2J-EVdoYv-)}P_7JMA&~Z_V%ehHzR6<;XIgl1ZQGXpRVbz1^MEje?zOEKZ zHnWPtwkB|XJm1FA?wkF}dNT}=v1qNXufEXE%4|0TNHL%wnBWc|3S(dFt5ej1leoMc zgR1o>A|eh3A-h;BrvZ}b^qAEU&r>8Afzd1GiolT{lOCdV>28dyYKPKD&3QA1872+S zpqW9rZSuOU8a^=7->ttFw_;I`u8`m&h^aRM9|8!lS27q_0>jZyYYx_7>KoSQ8?e&u zBgMR0ZP||pNF0Y7{EIhytI|mx*tjVxf#5g`&BLX2snbZ!9!f%D;v3ly?$l76E`|$8 zXA6Nl%pkcbD5jf#!D;B@?8UTUJkkXt@O=XsOqNf<=0@Hg~0}m&!O!E zRrBc9Y1H}`YyXU2DM{Gd{*pe&E-Z4Y0kf+3#@Jj-ZDJzX;LX`?mBLP=VNX+mh6WHf zIv@fI13yR;oJ+X96)Fz4h`de?)6JcWD+h+b1rTeba~3Y+NkCrq2D_6xG-#8(7IqZ* zarjI&Gm#4wy!x-Zq_jJbf@~VC$_RSC0kNX$Jr_ILb6(Aj1uh>JwAOLpfZH>;g(evx z^fCQYxe16c^WeZ9b@6P1LU;r{A|*okQqR^l8RJob-4}$7>=QhTXsHvT=*B!A2gz6} z%d+mBY-6l(&^0-e9Pcq3xo7{AKVV7&7p=-ugAR@Q&0Q@QI{A;h!Dnkl;Rm;FkK5LW|k@^ zhpU3J5IKdE80mk4auR}CwO;T7v!X2i54P|J=Hn7fgDW6PbLpH${?dE;oX$*o2Sv(= z{`}WJ2hEk0(ZP*-%h)h5QQo-)dluTmF@?1*a8Z|g3ObYhe=aIqnwZ&8@ylAkm^sW& z3da*Qdg3VhrOaS)a-a)NuKMUq`k_mk4hJ`Lb_MJwlrSKeK|c;nKa7$GeP0ZY!KZGR zY)madz(yXPTrT(=Q>@3bc&x1XGGYqM4ITj+p7bKvRb3dD;`-bY*+6WPn~*Y^2u-~+ zcxI67bhvn6LT#PFOEjeWUswfD=rmMHOj7`3fhDX4Y2VvZhqQUH5ymOX=)!l)U=u^Eef6T}!24{eU{ zeClT#|F!;2HgKP27BMLr7_Pf}Ii$oy1t)d|AGc8wk3`zWyjaJOW+gAU&V24I zvR+4&V?IwTO*b2ez(+67Pb^P5DY%t=T+D1J=R1RPd0#B|hHO?fdHl2wB;{}8j#D+e zgj}N$VR6xJbRn8jt%vXR5Hzb(GQ&Y2x{q0-NFXr~i+oa!PtqA~Wf`1^@_&f!4E;R{ zK3Rs*{l0(|6>|;r?LUYKv-X*i&DF=>rsFT-h#-aeVFPB!bh5`VIFW;8W|-;8j9hR> zS-$TT>jsN`S_J_^`-ko*a&w!eH*=w9Yc1?(KYwoH!Cm z@6g~XU7Lu7C`0U$g!Rr)`_F?!66kjON{+!_BXX@;tV_sLPF^hHsEFBI3@B`6cqNcchYesvSr{uFX$}>Ux6WEg`j)S$i$}w!%C;W zAMWoLq#pf|{!78%dCmpBd*2~)u=%5~C+rZ}yL(~NqC8J#?_(DdvA@tR+Ly6aead)$ zuLRG+!`(RO%M`&Z58?CkJbVu>AE71reT4HF@HJ4@imc(naXR629vXw7_t zrvKAK%Q6uRqX3AeOMfzsnnTS=oVdh*L6tpfn_OliR$m5d8sU3j36`McFjO%3oqd&J zm!8K|U{4Ssl6$vCD9=@{yh|l*)3Ih!-SRC}`{G8{4$82s9 zeUl6Of(!^vQewou=yXkTJ_W_L$uV2;3HBb8Ar1CIJy2|1G59BQN=TX_g#tIh(Ll5+ zalFb-Xw^bm_`4=3En>W$Zz9a2%gPql8~$tZ}s+yKz{I76-vW3Um-$ zbrzE74O}-2j;RJ;VM`0IpaJkbCP-hYqk0UoT5mx^6VXd5;BnDoa3T11$QIDZ+@>^8 zW7}@AXgwuZ_jjyL=jT-NrYRVeKk8em6eXNszuTRLVhFntAJj)AGxHr)lY2RM{J<%>}SVyW-~TpVP%nPNG~;{ zTMr&PHpiSMGce4*7@6NkmQC7wo9!ApOql!&yib0mnRd1QE3E(DYliFB$j8>m$NM$$ zU%oWco|E%qs(xOpe#mdpFv(YjQ}xdx`K;9i`HJdQOjmN@8aZDZxkGOtl)G(>eXo3# zZ3Na_6opObB5)W*LV1O|%DExi!A~)Z&2&A5PtOAQqc}Fpv{Ig(QYuC(Cg|}lxn|M_jwln*I7Y%vGD%7GrehxcP7vB#eAY69U> zQ%H+XN&NlIp1Gt9=B==tQNh(5+JV0bEW`CPOWhebEyu_#wis^E@GJFiwz5eJQJgr< zW?2mO^~l6Hb0NFXTM796Arfw;=q-m&f-&`B&E-UJtzzM zD9cm88wQS+bpqSxjKQ(*6o|8i^2Q(%uJoMgic!)^>|*eX3T zQ3Fq^fGZ{#wtRRtGLQj%15u2ebq4fP3pq80T_v|9@~K2_OysMvawE=g<9MI~vZTs3 z2pAbJ@rkn#+n)%~rEXdEUSwTZ-LA~0ancybJ; zz`Pk-Izr`Kj4SqE@h)5p_8(3s*a4<(#RTzZ$URn-Kitx48j_}#R`RqZ9<95(+KD&F zj|yv%WFEEm&v$h;br`m~ZqMcJQs~M{93G;qX6;r*t7#ef%p1URO2I$bLgHDDgThZ% z6A6a`Y0$$=;9isiu{(Vrr<40~UjCMsSMn}mexONY(P=6YSfEQGWw zVM1!-E1Z1`LvB_b6bWslvZO)^1IS@9IynfYP#lU6)t?6#$OITTyucqEhh+kipLj$! zi{L;I(_-*rjg0(hPM*)n`*X5H{*=?hEkMoB!B5}^Fab4#ATsMbYURG-jN4IRYj7=F zJvjENHgh@EpfHVVvB>FR9w+B8T0TlH;)QCtu>8Qz$))lkrV-sRqnGcZUBqVRMP0%3 zl%c%`iuR!*c87b5@-PG?q;kh0fb|yPdkU6j?L$OlXyiJS@d5`Bu`76#^f8E{PVF<# z$dsp56rKMx)aaX%9FA&mk#wdX?N^9=Sd71qNRx8Gg=!8d%STmav}`nICpHIYXb_J4 zN=dPO2VG-B2-?SL={0MmSI=Wq;-ymwrG3=rdY@fbAN&#>e8Id$!J$Ty9_=nG$aVr; z8@KyeW4ATb*_IUdw##7}`t(gHoo>zuuawrSgxE!Ul@uF#oJ&)JC+IM>zKrt;SAu&^ zS|L5RiTwi0nr582N%uzMHQyVdOxV^I4Ry-#-S|M_n@-(K+yg}_=0Ep&Cv0exl4MCf5yLsFFhCM|2`$2$j z%KG5DsG_NCSHaj267}oZ9U`zrAcj(_-?Z`D9DlHfQY$N`YHOq1bhZ>Gx?P1``~G~% zEizektDN4FGm{`n{vDiInD=+~=sz5Z6xt zghh)h6I5keyj`$)Nfbm~!HZPxc?UOF(v^vfkXO?W!x^Pxg8S&r1&?7OIFzLo#SqEd zJKU-W+=DAmN4Mj&Ql)_HTSc~kOa7z7-^Xr6zI{wa6X0^8hPl`ak^4R%?m`(GEQf0{ zZRqf!xu8k@UX@p>_OECLqnRb8wkz;f5ISV+6Gitem=VGw7bl>+4J`08DgS`zD5b!! z)*O;Lnl;TJX$0aimSJp@J<=|O=ZM85dyc4pDd|-^Yme;6qUk+{&0O(7Etiyrp*LxtoKGoZFDt-Alz8M^4yB4^1BQ!k zNXKKx0ne8kA=aY^DZO6M-t8XYSh`e!H||AF9%p*^_-*Qo!Qeroml9&Y*S6YLQbF73?M^Z$&nI zLXIHJS7|B=0HVwcHdj9|R$f;sx-9NAfT#@N1q4oM+! zC*I~xA;xB#8|&}ot%#Zl=K-FSX#Y6QT6YG}PoS6L2`i&EP|Od+{7_nR7T+ql+ljr}hjWLpw+)ut z`rIvzx#!CJ$!#x$5)z36DMjT`qMpvh%YN0K=(dRLr6DHaUJ0ivgiV?&aa(}sTwT71 z4Gfi_BYjr!S-<6h8uc+8QedWhxHd+>D=aTQkHP|pGoQ55a%y#HP2Vt$T9-1}^c}nm zjX~?p-k^4S#o9cMaFGj=XC(L@lNf{G1eQVxRK(`qB4fCZm66;>acqon`^sVT=y2Ja zXPmd#{TE0(&mD3AC$bQlgIDknDU(u>3EU^j4DNf#Z0>Vp3iqjUl!lf?N7>^tNh;(F zDHWyK+=Gbp3Y;H`2Kbqu5=R^b$*+tW(cuueVhcXa!TwuGt+>)5Y$rDHp-o7v)R*$t zr@>4$-Bfr5a_-jEM1H;4(8fYy%P2w^=ZCY{VPx2J5sj`LQu?&FuBbd#lNf1&g*S^;^-OpTXRvefaelEJXg@BckKyfF?9gg& zr%`ivQ9fU^_aR2)?}2(EXfYT}OX@z>UGYAJM^1&D3J8)y$k>xRitb)`nkTI_q`a0c zC^T9iC7p!Vawxo-x5$p&=l%2+q1A-X*nOY2@{En2W9UqeBOF3QZB?u4r3T-hz zQdC9Aw@=}@XA^L`Kb=)7uTydYqrh>BS2~qvjtBxGDX2k#*5ZLS(%<(}0{f(F3R)3t z$51cFVJNbLy(&ZHiRQ?&{V_qVin%(ZSTW%&KetL5S1TyT8ln>eq`u%OY29BAu=C9G zgrJ~{;N0FH2-Ux7s6j{$QV;0Vume=7&q%CKKGhuHw5<7zB=xt>=SlCSd7;ml1T$Hj zs!pp0qRQ7)6nl+*-pg+T8YgczSBK_jA~xF@s= zKRUuw_yCU_=b*I3~6L_JS0 zJd>pu!7OZ~VB0H`2p3}@>|^Bn2&X!%238XzX^5AvOaTS-=mSE1cO5FyDglH$op=YI-meYe@}qht~m|2-AmdKw#S%;t}SJ zgc;Xat_By0p#qj3xs3eK6;w-?ihM}QxNyxU1bRS! zv5PPXMvvk7lEPaptx!XhXh5k>4ct3)VY^JZU*+k&?}xBd54v6>iCcpUadqo-hDr^K zST>6GMm6Gnn47&E>PZ8T6ZdIvN4mk^Bl&cK59ODP7Lra+)I^zc6GL^DcBr6*=^fK} zYS%8KUvxYYIAI4p+pHs**mCNWBOQLSdUTMNA z1c9Vo4SexGo3O>6pGF!U=Hm@>uNp>|fI49OF0atHs#C!a6DUlHIBsFPHF{rRF3)*B z5djMwT=Y7e99)fXCchSQR`z=?TaBd0PhDW-d?OE`2C_q%@Nk1^R|7Y%F!EueQJD5nk+7KJ{Zt2f>@M1%P7A_g=7_X{_2< zb>P@dwYL&2u6iqdV%gLFE-%ao8rB1QMEAi?(SnV_&jZhSPM5{3QR+~V%W0~rlWdbo zo+Ol%Bvj)~=<`Xqpjkh=+X*OOWpYLwrk`(Orv?%JO2i0;)q?8jkLl^G^oQ0AheOxa z*=*&!c{82>chZ<>U65EV`ON8g5hr&oNrLJ$q7pRNKNG(6)FFx$u!tloe5n^_Y*5{k zm<0`Sfdsd75QF3evl3!#zUG;kq=h=XW`?_)ipK>HQ?a*((KR64rb3;{?B0~efUKV5 zcXAU}xoTJNNjCGTP>+E?V=5RO`8-KNSPi}uMjQ+0-;VO8x_0aePhxszNF0Np>U!8h z^(`=AKGgh{5MV;}ZB+jkwNW=@q}pcX)|!z~YM`RqBFCocq}M6AHJ=#<)z)iG^%`TZ zHOVywl}z`oUoY*~$;9Ah^(`2)Hw>@BsmvUw0#=-liB9DqF!c|*i%q{Xbp8HMi}8mD z4^n>-*(W3UQDpNiPeqQc>uyxDp6r@}X^l!`RWlipX#%U2m_qF)B#EiTw%V!^tM(cL zm_+U2MEbr>-s+L3Rh^L4_XRJZvXuM}sc@Jp-Y9J3bOOI!m)dLyPg7*kLk3iZ*WWy1 zd0F+b`ezmwKZ;_e(%o90)~mr`7N=OXq-Rx(K*k~>?g*_F`=%;8dgKN5hh}z? zkA^@N2@`gFS7PxH+{9zctx4DxHifew^|eu)t}A>Z;e3gi$Qtm|U$iU0lVExVRXuS- zp{nZ8HaXctwar77U#s{g;HhL_4Lw*9<>_K^j0fuo4_1|cIM4<=fYOnXcC1p|NTn9t zS;M}NetCA6TyRvFr0k|b#~&C6&tXWL4ePY_7&NS-?2)|WpCdt9>L39Qx@A6#lQY(@Voyn7wyd5COg>}< zJtyOW4Zt4*J7LX)z(5oWEYX}kU>We!zIYU_w~&_qLd!F;NSLN7Vlm!wo6}#R3c6U9 zd_-=F*1Z>X=e!URQR0N)9g2vEFOb-lD(jkK>=4zg8wYu2SAM9=CuheKb66WQu_@~8 z<)@M8NSQbXKc%5P0B55b7WdW_-L1C{y_NJ<)?0xFC%)6H+JoyD0#x+$#%dW|nki$W z%rbMiGL${g#jTr;h9=wQt-Wc5h#Yjv)~IV2CBsxdTd4eVyUZB6gbeWo3+ni(f&bg{Krfux0ZL}gV zl0wHx1WEZAp@c$FQv_ms0|A zuADF3c4ikg?SthfVxAQ4habnO(N7|-vucXRM*Y4u2Vd}T(3(N62;H`cv*I}V4XOS0 zC|q6MT|Y^BWIXXAj`LSe#zm&2QHhUATySp5m-3X%duQ4~Z1|nzz2#HKx?R#@9hPliij-l3&#d5LH9dru?wUKA@ zPceT(?3NcXk`R$f#4<82fH}XDpw^bH;w3oP9b$XF>kH zF_s%*71q+UFNvM&KB&RFwMn~)qUv?{k(ikn$ow*DVPj;){8_2T4Co=ZkCRu43l%k3X~3A$UnC=2l`7ZNGS3!%ungk7CAwYbq@ZEbER^-G~o}T zhquY7myGtW$ED5bJrU==oMg@t*&xeUoGt9D zJBHarut6;UT@?K`l0QW9Ta6`QK`QmZ92A2$+P9JNMYXwb_AyJmf-^>@Ci`JLoLm=x zI13G2+~18w2Aasv3_`CaL5AkqIf|hnV8-eSUaJWaiBzAYgCD4&1MyfN+cI4j@>mw~ zWUhU=_T&^kaQ=3wV7^C3nE__YpVxb&@i zxxG&h{s26QMde3zRGtkHzZe(RO2YcstIJthaod_*@q zK4Wf9KPEoSKC-1{Z+$ZRw;W@R#v(em{d!5RlaJG=5LgXA5y$;|?oo6z`OY)oQCPzr<04LIPS~(rmP2$nC9{LQ zvtnD^WgI<`3vbWKZES7;aKFki|L9|i76kgC(>Fm)H_K^gj0HGC8O!$~^(jH=C+dXD z`8l~D2mKu_f6kd+`BPGVe=z#vC_KLBhjLMfh}glKh0>|)0u-TFs%oJx94d#&dv!Kr z)X?8SD&>!UNkkl;fZIX#4;Q=f^oPU2+D-TXrfw!p7x8lxS7m-W!3=ZF0bwQSgtQfM zv+?q`#EC}S>F$;1VQomAG{Bh=jGAQ?wkJuv65llEpVWCl~SP0}4Nc$7-P(#`|I{T-8go#+%_$C=j`m15O&uqV3N?$tPa1xpn@{A1C) zr0!c(?IP#(h6`{kkIsJkz+uNjrYN~R^tTV#EMfN5I9QB*2o>Oe=zoevg)@zZUs{+T zhnNY;c+h>kOz_tsGNE{_$Tcj@3(Ao25)oOy(AZ@2tCBhsI2unLva&5NTk~>hUOuG3 z%JPIBumbd%SB?+fQnIt?Mb1o8GcN|!hSdwet?!b-DI;j1|FW83<#*3Qq!kClCw!g zYdzQexRl^T_7uWEg4xW<(Z1~kzHN>#Wf?}e&at5`L{u+YmZV;6`M?Y;`xi);Me)Lk z^v{BLI75mHvb2%G?M=}GIzmwAKzwlr_Q#5xLQS%=xnupa`^0lHo zT9mIB<=aKrIU@kPUrY>#S>CH0%$YB!DeA9EeE0*pCPbHf!AE#10&smTl1CzW&YH&) zxhkQL>t&tXTb28&b~$uE$ILEdDHHJz%#Ou;`cCZ0<8j#W^C~Q9U2N#mXa;lfxQ70` z&AW2u?wouckkW(C@qveFO7dBLk&z{$2>5wV!B0ilp2CmDc&@kvL4dP3sK>7e<-Sy_ zwp1VSqwN&b)KrWMVY!LD&bmVa%Qbgq)h@vFAsjug*ts3sJA`1nAmxDyjnlya2>Zue zr8yj%et^77<~B~mzO~5-o^Of%M!yZ_QI2TEC73sVZ^|a(r6zN6*<4zVKU6kXlr`W( z{+Kr}=JjyOOF6$aAAW~T>vecP5}F6_*$8P3@cwdW__3a=@=(_0vP?eQEEi$?wI`z7 zzY)Q33aqe-$hH~+Y2eXw5bjH~uY3Etz$6cS@Fz_pU42NzJn}23l&i?Ad2@C_&hl~K zW(yx0^cTI0`R3nFt?S}nW^Dw)GK`Y**>s$w$bAxE{@4CfLG2+wDHE4e()F972b+X_ zvq?}h!gjf@J_*o?hDmrmQvmiifWKf4lZ9n)41G8$aiqqaY$C=7m$yYX(0y}rL2gps z@=(Ft#&N2CMf}>D`zk>H%A#D&39=Q1{?*0s&nl~k~JUn-`asb{vkT;3e!@;&s^^ZBCrLQ(Ev1+zeKz@^jELlCNU)9b6` z>wc9Sk4D&P4ptjl!LO7<`GG|L3wQOE0>fc*qe?pP;;`6+tm9V)2leVADT5IS=D`v_ z-Z3YeqVax;w%4a9>NiE6Y^Cd@|3twP7nYc)f{F_K4g#{fHk>Gl8=FnqxZsiY=qC)y zJXMsRDwTSu_kPnE(i!X@f6cqfNK z>d));pTQdw^Y>O^2Dfk=GbCx14&S~5SnG@~mG2kjxdJkMk6#e!9Gpu6vS<5l%5FAolaSCtP)Z=7 z1Oy93;3^gR9|3q ziEOr^=II!I7e^>`)(VkEeJEWGtkAp7iSF%zL1BACk|2Rw9uVqmA$M&`MrVy{v&abW^+C%EI!~Mk)KYBJ8pk zPDa%TN>ZDG0@5jzeZ;bjdIjY~riOROx(g$f)QN^f#9g#oe{^dvQkS?ZiG#9sgz~-( z1_T_sTfV&-z02T%DP~_Vj2?-|)Z}~eiLtulPc`$Qjx&Y>_o zbp}Aeb2`Z$0CMjrDa+qFmeW~hf;fo)6Gh3}kL!s~>0tyFM3#d(?EQ9%rC|`Y2f|NI zAqhdrpNV3>xfc_KlMMu(M01oP11`C>e0$#0sY={v!F|Puhi=z|@>0MargqUZ#6*H( zDBqULDQI{z9TouZxn=fR45iIP0*1H)HiFO)(ljA_ zVv5Re9n?7d8w7WFmZa?Ll>RXMY8qD>?$nGPgw^|-$PFSrdm7HLCG^Hmbl7!%pWu5 zM6(k(#2Bw>x2vc&lufo$(Ee4=fj|j(y6#SeVX-nj3>ISqK!@UEDv@q;J5jUK4PCTT zGIH;hrmp0!(><^iXAbxD&AP|3c00TsVN6d(Nd?+t>DmNFlTRPQd7)ggpm@=wT{q#G zvhd>Cy(8D29lflZy98+me6EQ*#(z*Q%v0)R@Q8EI5^9NR0y5gYWjiIaKN1o{Rx^qC zg`UFtn5j~Vdyw#i0|tJ)j#8h@q1E+*JsLp9M@xoSphB@lww4TRv$P3e+o|>#QQM}r z2`a%Rg%Q=c$$J9iKS!dwuBhAKvvjuD>>zV&{~tvfW@C1{MWJgqax)4aQZFo2q*~f$ z2erAyZT3bJvysbwuXAW8w~fv5bd}+(vX-koTC&GPBz?>t5BJxmtOi7O#>qB<9E6Tf z6#eYTreM2~kvxiq;@zD-(7EaJHc_r%5e@hNG+as(+IKKW91Oh9K zj&p1~!ghMt&J5eGuytXZMmv?J(S&kZVY+W7ZOKHmh}0%|5WTvYZQdA+2daY!<`*{r z^&cqk?m3o?97{NsaIAqiIW{^%Zl%5HXf6&-qep zE8|$AmTE>nCqTay`$M>uep5`ITXp{P&?wG$CN_Rq((hKbo>LVjOsD)FnlIr z2D(PIeWqYTve&z?>b5)Jk7*qe>fKgGl@9V^xri{BXd9Xo1hFBc^i~mb8np0}N~B;l zC~Q!XJX|7c!Y(OrPa97@(G#}CMAh>s*X$wu9MBH0KEJWfM)=_5M51t z1;9={6;1=V!OurQzX0x+$glCId!Z|!r0LG30?Jc3<&rdhCP|(LT#0)kND}Tbx?SlB zypbvgSxfx7B89eN;3=w+qG!i>$+KgIkpXYjv&*npC9b>7vV%gQUQ27E#i5u*PGPcW zrzz_61RvAtaxY-w2Tx!hlnzDgQK(WGt0!-&bl4T`B;*sNEkwU7;P~1NakqYh1dysaMgOP1<(#J-CV5bq^NZnw?PfCsx@S+a*=2r+BQEGHCup5x8d<3437pK_$PaWFHh|5<)WO zTObYcbi2b#{)m8DS#P`zhXdd}*&3P>`-X@y<>dearE|6ySj0&sm2wTDQo>?}AUfaV z3>3{`8;V7*KxNa@=oNbB^xG0#px~)yS$7UmD=i3k2QR57F|Py_Wv8!1%bGbWWA!Bg z;c-O+I%-a##)^0!+a*||^v4-WN)^YKVvTmqtx>UGsPJtqWX3}&2A6CRn8$yR-?LMZwb#$uvq2w- zpRpf@&yHgjjyXP8qThDluE31#E^pcuO<;q_me|UKMHd^vtS>5_l~E9w-Yy{7Bdz%H zmOUn2>A@B^mtN{=z4JoL9&Xt~9Cr`4!1+5`@!c)EtL5%&*=;TR?MKhOuVuIE^Bp?- zR&BtkK)Eom%|K)A6=rxxB}s~M2q)ki3i6U;mSh2mwCocFfXXVh)$&%Gd{&a$N*f!9 z(Q08k6_OOzgKdxkmi7@ai2ldn6%VW)os1Sq&RD@$-AgLN^j5pQ-EK#zXcK`O;PlVh z>=Z@faw`?F6kWIbQoCQvQz+}~-1hi_c00e_o!Bn(B!5-=NxL229uTK$$F_+PyE6$%kQH(l zV>=TsxpJtFEnzqg078-#jh2uH`0pX5AH%yKr&#n?GYnb&Q2?bS$KMCCRY+yMtzfr8 zJ^9I_peBb-E4eeMeizOn>(HI8!_J;7*b@clGxQ3ysS!y&18bNn5DfW#EIxaLvn2n) zwn2BG4ZI1ye9E~ewKWh3Z+TC+u(LlF4ca*Yl7QO;7OWa)bTrNfb!ova34`MDV^s1v ze~Q~mb|aFbzah|+a3S1q1-FzQs}h_z^0NZn%5+0=3T;(}hPQWu{pN0qXXQbH@59vL zI#^lc74yNi*$+C_ks?Z(jJoV&>mzXY;)p9#!>*z#34KM}eIi8I6|!ji9yQFsW1x_! zN^}|Y2-&Z~91tbY7oXc_m-V?z``k5s?w5VQL~(*u+^oFy0HFX^pr)kYxxGZ0Y+qar zmAkVr;0AGSYLALjs4_p4)_f>a;omZchmb&4bm0F++FM02`=nG=Fb@F5u*?zg5niRQ zV!{v?UXCJhn!I^kr@>;kpElV|86Kz&&WkPr^dhh(lk9M!CfmCRA(2SyWqB>F36S52IgGMXvv`Q5~#5VZ&gm@t;3p=E|Be*R{r@@P2 z87rsp*u$i_%?l&@Rv1`Wj;-z6C%f;t1ycqZgN^Ou?XWCO>5s0Jmj*!(A8c&*CR9Fh zzfp2eJ9QEim&(G&6Vvz=wI7PlxcFIYjIlcek_WPOxPf>~@?kxcABeZKxjlnE#Dc~9 zAtj%GeoER%8Z3B)+9;T8CE-Hg>`E0jPNMB6F_vCHwmE5dn6MPOhHx4p{}uhuKXD-W zk^vhaquP}FoBFc^qDr!6A>OODCrQAQ+!%bntJ~K0dH)6C8OYSv`2?i!AWZT`40zSV z9>W!-0ek`K!9k!$7*j}Cr)W^kZ_Y477Px~scM2toAWsTgN_fwB?~4wld=>L}v~$O6 zbY20`%efc-{%J((5Ve*lIr3zPR?^38QC)m=+I%@4FNBhy0>NXFF;kdY3@sw;>I1Vy z?uz^^{(zaj$g=-u2b3r`BwKL2Zehe2S!~pa4f>Cu2s)h1Q8Aj1%SJK!gv{=zU;Cz?t#vQ-I3?FXxO_V3zjxe@`W&C*LB&cL^toc)A z`f$k_{9t{nB`pTIx~Dd3I8SVmK=Ds|yz_~SU|C~f0^2VKC7D5uj36eaTU4$@j1;*5 z>GWhhvXOeQAomuAvRb|{Q~xVs?y%A@9BebJe87MpSr{?b7O`y=g5^4-;Gy4HGb6%% z#F*RD(_j&jT~n))=Y*D%P{i01Q|iX2EVHyu=$Wfkq8iZ{ ztbAxbBoWq!m#!@I?2rB-!}QgOT}7}#zFc*_f+F}e51}^!B!raC+$D*I=0sbkQz+3u zYDd^2%KCMIZYv%jK@IxdfwGWn$eHO11@vc0yVBVw`YXEm$&r5k zk^aE~R#TpQh_>q-401!+Y?=YVjS4@s|NUlkhGow-{nJfs3GZk20nS6lT=R?K(Dy{2 z{4|arDP!uxT!y)aRyG{L5Jlraa?n7;o{-xKM%ed70XK-(QIF^>-axSz#Nx6H1PSGI z6g-v6{017?5c2+z+6Z)@#Fk_~!=y;5Wh=X`cTacuXy`f{iYK_CbV79~nXv9h_BW0$a0QBT z>V|}Ff18*sEp!#MJ=pvb)1K!=`EQvD*F!gD)iNk(KhNuEYY6ZKgs@M&F)C~FsC>M$ z7T;2H4_4EMs?`^<6BPU7x&n~%Z?CS!m)G2iYI;MpdVevwk8c~yyDpXeuRkf|6tgCE zve~P=KWsp!RV=UqJemQyD_mFq_yneZX&wQe}B{6kw2}_*&zZf*5zvV41v`+J$KFY5@BY5GUnO=PdKA-DQUs*n>!?=VQ^RiddmrEL zsdZ+*;}-~E4|s^VKU+WF9#i33Jhy9H1TBQksU%EHH5ST@kRwT>TtY8BNl^_YcP&lr z=|J~wB1?A-`UQ{j*uGrb!JQz$eF(?rDH4a^E@bnzujK7| zJb`7N>v$ezQzkd=hRJ~+Vr4-kfiYG{n&&r4xRk`oDSAPwx_H;5ch~62&1%rJS+kE! zfMf;M_fVpxcD(~Sg@AN6CIN)s2aVcz#S6+?WDDYNqE3v>#&kyqXMq1fUGb$*VCNw! z1UL-pM2t*Ao7|EB_gM%S8-YktZ$!Q+Q-7YfbG=)v()krWi~ninOwN0Z#?evU?)4)5E7Dz%h7sf!V3MYb|{`^(#|Cp~Gu=jfcUL&6G2E?ARBJhtNC@PTis&dicD8%vraEPoWYr51-KwUaHXwE5d!Yr`7 z759?W!7xyy5*=VH&Kj>IdZi$<^2)S`Kup+E?A}P+TM1$!Bj6TA><%)Nh~Oe*Y{JM6 zNTC3J0clzR$dxVH0BsJy_GnQteJ8em#r~g34nMk{zn8d0R$7@9ckvXPkp_yvuXJy0 zhpYA&ebI#`=(6KR*X(9mv$c2zGU~{hT>yCtYjNc9A^4?2F+6xuDFwRb>Ujm9V^E&s z=zzvp?B8Q;4@ml0w}*$YH^K@mj-mSeN4^o+uY_;XF}9$-MG9EPMQ`PhIK8rA)evAc}kFft0 z%k)C12Qo4GEoZ@M^=;Z^z4adQQi`e~wCf;l-GiOK537VF_gUk9C?DgEzV4ZeyI8+C zcp66|{@SLt2@{aTxDGu`1+`LgR)Wnc10TFDHhveMU(Dqf3*K>r<+sfL*1L-_DcME7 zalW_HEj~*^bODPqlgSruoUSMHeeiCF=mrY@XIwA4&uY378Pd^m*~gCYH9E^&Wyv)% z{-`LCeAnoTdg$!R6MZ@P4dIo%W4oFN3(3eALJh2oBUgKw02&nZ*AMzL#Vl{0l zgHv&Bc@(RokA=%t6vkX%uoZ>d%HgeWeZfbQ{!xy82n8&(WPYgoDKX_Jit!jE!>)g% z_EKsu!x=m)dXhBkZlKBbTOjS$>4Q&2;4S z)ZnYSGJD(U$Z;tR7sCQ|NmV^U=dibrj!-w^A3{EJ>>a2he@yI^{0MtTnhxQL zdLlo>-p|6Jd*~>aA7bzPaOnEPR^*4+`(-$EIjx`aL+srW4xO3US@|LM9tekE@+anp z*n1`%B4~eUeu%v{!Xc>7yPzy1W$(Rk=v8H^ghTB8$Z4qb4Wn$i&SLM(aOjrUZp{y| zcX>EOheP@t>MZuI4~Ie(rErM7N5UZ*l#%hHv)Fqf99k0F!TBNf{_57^j?|faie=1M z?49H_h!JU!L+qU!4&C7G#{4YyuJW63*3n*JkoqBeFNL#0?tVDL-rM2OpPl`MQ~1x` zA+aw1oU`ZiL+l+F4n0KpLw<<8)5D?LoZX%uV(-#$=vNfa%nz}5T{v`MNZ!}w*}E$o z3P~T~j_f@ax4j&DjK3qofQ->G0>ew;)PtNY&M(N`-@>848cAp2*X%7xG~O2^T8BgI z9h zMVf?Qmf+j}=D0|U(knzfT5^e@*|maOB_WR`;)#FvY(Aj#xxZECbrOcY)Ue@MMpOqPNue0(`0%wt+g6<`_+;eEkqQXmCS5~vYg54Yp+F1 z&9#y>TO>47WoGS`Oiy!?bv9Mz%4d>wTcI>u^4XT+!HAS-&BYOm#iO;cZDboK8@1*m zz0XhPwIK7hX|hRcbKA@|Pc~}>1t?k2`8k89Rkv(m)jn8mwx3|ngHl&42`W0)+oV}->; zPJ0Fkt-O%>1jq4+GyIYE1o;&Akl+o=%fvAFr^2pKTd4c9CX@Q}#M-#}5^4duCbR2m z(~|m#-GpS4p!v4Buevp4I+0`YD2oYwA^8j;b4Q4qe5>{1bcQ^)pOS4;$jxBV8$_Iu z=DLQTVT-MC5O>5K_hJ3EF+wUiO2H;cUR;y-EiTcsVHQovcvgfyp0y<267su{Z_Z$a zS^XB`n_yf;OnQNTf#^7U>V#^A-}x^6+IN+rzv!162}U;uh!8xa=e?4mBXChh1O|6V zJ}RN8a3l+ll!Zr8R>PLCbX~mL&rklN?IXv(hKMLFaDYJQ6O@nxz=^!AU5iIj+5C%Wj;n%~Yu#S{C^n&v@`{Wx175xUon9YTnN(!9m z)MXffG>0H5S2@drv|~AOO-(qeN+-z1Bk~k1=>i!wYF9K<`LY=e|WQyB_l5um~q;gyM zCu$w(StH(aF!^O z6gUKJ4J=I}^4wjr!lPYEgUj`}@nQe-Vf&fu(R`*f)4W+jJhKDpP=Y>HdBsGk6q*EJ zv9HR&u2~ASOZ4mi?^TwzK-#%}9TRBY*4ElT-Y?$Y@7KbTe3V7ck_pK`SxizIL;T7) z|JD`4uEQyd&1E_=E=s)1?sqq}n$2fZPXCNl{GCbaocrN=NFW9H?-zSDn4);PSSNT0LB{ zK-S(5-GBMr5y=P8aA}%lLs~?>=0d|>iUqCZLbK6KEfN#^kF4Rhr0^^!-Qwa~nHqnS z^EmR-dV|_~eQh(^i215chW}uX`Pj_4iyR_c7H1VK5J887rcv=!C^RkpHXiN{qwU{yoc{6Amvg}QFY zXkXmVwK2U)D-dlJ3Cns~;jV(EXg;XJs-TNha0XJUBQ!!-WSx@1CuvhYFyq(TQe%ss zYnt^RijG;4j3_Y{RuZ=hZa*ef4sQNdmmUkKI~aQfuVm=kqu}sK^mM%pec?f4Ry3&$ zbJsDbB*Pi86=R~8K_*)-UL8lRK!;P^E5SomX#zEmiL&GuYY@6Uyk2w`u2U&XjX=Ob zfx3Xe049Kb(xcVwXl@}I?v5@Z{CtF{(+Vn_1&l7>C}&lHQwz>AoLwC{n}_W{^a@sT zyD+v(Vt28&;Ea%|fGCq@a$E~_V|+O%kC_{nk5I>qDA(b_5W^VCi^sb467~xda1+e) z9e}S`2z$loQ9bFu7P>zyv?mshTHoATdnZpWBx$~I4bk2z`0nxjKbH6>$jpPIR_qxW zG5mQ2+K7o$65}oQOX;)`o7>2Okv+)>_mOeSWAXH5aU5S)SsfnPf{(`YUgDL%7o%ZC zP1bpJ@~Y|;-4D|Eds2UIN=}06<6Tws*MOD8DG+Ok^5kDb$3wUJbL`)WL)_9l)<6hW z+FH=2x(I&OPSCu{13;B2n7UCA^8Y7n?^K84?9^Rp7TWn3dzma{*o><-0n!XkEA ziLh(D=+8OgK4UvKYh0EUQ=(s;JJ{@N6y2u+%0&gcy$IR34Lg?A;-{T|8SMdVA@kdo zSNv%ewiM#vpl1$+M|H!rS2xP0)XtI5xvRA|ppLdB0fvr}eqw2?`#7_6hlU zU4o~9regqT*v-I(OpM7|N*XD~zX%c)A{}R`Bc35Mc8eQ>r4;5tImp0MvP~OYiR5Gw z)!SCNR*M~3chXhwbv+%VuBVuOYvW7f(!s_+`%sM#>11L$#UtXw196}uDTa-FHF{)4el?uF^c&Zo)W!MDMH1t5MXHtQTq}>DA5rOw@1IDx-59_88Yb& zyb-fh9hXIyl)^8d&PWdKl-w>oRi(p+3jr;KP{+9vMLK?E)o>&os!oW*QAZ2-t6UEV z*%dw$WKwK|y^iQjTBO-SK zk>>rIa`M|UGTZqze-RdT;|x?;A1s$qn0DAK>7iR)*~#pv&~RWrGD zf3$P}dNjzgfK&LX;3;KY;iZZba@oq}Ybk!^mCc=>ZbFLsAR!_YH;FtzN^UZ@PXV$t zFhY3Zj}V>;K!AfVyE7mvZTwP{Uaw+K?ZZ}~8me`LVQuQ&}Xz82&8tPHoGn5=H`fITY)ZGP2xxO|n5E6VXl%0R@Uz(cWY6d=c z)u3O8*8B%mTg=!4^?C=b%`rD8WU{LM7NYWO?p9p3Qws(4gEd55sRyPGUw3>sCjyjz>B)RJ9J91ru!h^#uEf5Ja$D#md=ROcHmG<;-mF$1sJb7xrACc-zUKOINj}sS zMe^|o=@)jB)!2nqbtyrrDGceYtw&F@O5__i2 zKaN&~*H;k;7>8*|j%OCJgbSw~!E@AUC)NFVb$4#vpH(Mk7$o$?SwIwHDIe^OHWHH( zOdO2EmbL6iB3ju)>IMw2lk>;5-YD6Vv3~{K8Nbc*C3{Y)5z1uA?y1}TR9U4(4(pZb zYP$PLZ35>hC}rrHx2W%!Uq+Q)B!nfYKZ+^m`R{8c_c!hLO%eUSmy90b8rh< z3~b5k1*30CG25GbTYglCA4F)(>z|T|sDvEZ4*<8zs6UYnFl+^n!8mH8JfT@3Q6Qrk z_l)jxR~r&Ga%rFZ(Z%undZ0MOc4A?Q0MBG1Av0m@IrhXCc&OD^n_XRdaL#yYh2t>C zz_Y_=gr_7OArj5s*l*DIbNirFUHO5tw(U*hvNZQHZ`a&;%a zW8o{wf7s5TEmoRr7r*J2)pQ*-NLBNPEV{idPlr=H`P^w6!Zy~5o@$7q^Q0n5)Qjgn zif(@cd?>w%7DIbPg`tflv<6K82XZvrh;9W5Y1q&Nz}SU?$SdPHg8SOU77SN%X=k4} zychTB82Q`??}dHnZrPDm(hJM}#3-s8(CGHQK(E%Me-KhitO z{_e8fr8Dm?H?AN39nONs%YG|{(Mg0!mm8x}h_E4e7!00yR?=Aq!XFYN@r2ANQ4fXa zS|tR+LC0>esEbIjT=J7ktsF*)${R1w}iFHwev_Du6_St#U4I z!k#CiNB9Mbkgo8Qa!AV2q{E?b22 zs<6Gi(`D~>x%ax)Y+-c0ai< zjt|m6wa9viHh0MhlA?2Nd=~1oYT5R<{MVQ zNiAupl;!Mewf^pxwE%XL^~wv*)DrPK42bfW-<=+FXOyX;ljzx z57b(P$Qc`7BNr#3)ddnHhaeV^emUAP5g8OhA$5z~E+3dJ0)A=~KD^l%3ZK8&qAQ^3 z{5mb-$FfSLk!@<55Vfo*W~6L_ft{V%UU;e<_(1Sw9`#$&tAHnk=IMpiD=TK7-`FM9 zP#Tpv1R#Hg#VPi#o#`B6c$0}5>7-nF(2M?#jdL?5g4>HQ?5SltTbo2{w;VWnN_Cf9 zgcubk!f~qDtQm*Be4DG2`ENQu6fm+z^ja^9S;21W7QF8yF2SxRYs=r?WruY7rJYTz zhn;>|rybehkLj>~b_(J*_u30R{*@l+?{ndIFEXiiWS72sxHp?*$M)!I$Kx1au420( ze6zHV8km4RMXm(mCA+KRlRWx;0z7C0`eD$>xtu8Z@;^b;HF6y`_CG_|lg`g~>WL9d z$Uda!5aJg?M_?Ba{Ww_tR2GSXQd5#tBh<>}gSFpbtn@?DeaAA=0g>KEw75#Qw`1W@n|Mr9M?XCTOvoPWgWQC11 zcx6q3$pKZhwk6YfD!8#_1+lGmBe(fxuolReG>6wrUfG6-#>*}G^%&SroMKY6DY=h< zK`CU`yR~6nz%P@i0ama&H6bpU;-?aW36$l&{n$4(#m!+a>U z*-p6k*W7mz9KUAYOH$j@ebe@^g@E8;XS)=3a}SYC>EbtdK5o~7gpZ`c6eyT5Ae0hm zMH1tNOhX8mVjh$n5Sp{kox&5k@RV8pls??NG`~B#)1^PgCeM>nHo`47=~6gtY?sn* z?hq!?pXlPFU80ULIa!)51+UL_L)$n;`C`nSP%vbQk;e|W#mYnYqjrTn^fFj(7z~!x zu%$)CMt$Vc86S;cBz%FHa8K9`EKfSr~Dmha(623vZmh|O0*Wh z`j}2Od5?7byg>ZgayLYkp#}B1217b>f3t}7JkLb zBSk=ypi8#|Lp<60yV%_#qd46ZoWddoZ@?v*w1$eBh|J92+_?dJN;&r6LF2wc;d~7F z4AQ6slBCl%>qa!&B}Q!jGAi=9GS z>45SZ_|L{;6P1tP4AA;>T4}v*H3rYIl+59od6gcmG|4UWCLlS4X;M5CG7LJhA|;jR z1|8xsHC^I*J=$NRt$|O~h)K@uIf*H@DL>nhAlncyhsO$|*AlZGYb${mi$E0_fGM;I zvj>7Gdx)V#V}_Q7yDnsbJ6^rJRJ6#AMP36!bryP^S*ih<+WhI!A|(eJ{Qz{wANqe< z?O+~WvAv0%Vnk!uuNj8@GqzpoPeDEGM~Q7ye^4PT4<)rn=?ua*HS&o2=!)`L+s_Ul z!-Pbs5fJ?diWx=!g&{Qr#q8q(X~+j%!-|_|$nsdYdML0_uY2$c|Aeb`P;t+XXQIdN zH!g{$7jcYNzwh?--?x2JUV85s^aJZf|C2WSTPS;g;IBmP^Y7(YK^$$o6Kci6Bpo_7 zj`ZvO53wIlqn*2p{x^uDT1aJntSo!|`F$WI`Sk8DQ;{+OXb~)Vl?lX{uWAY4VF#w? zyntdO2$iH<#nJRxgfStrG5oaOBRtS`mL3r!*PEj2H63*Ud8m=1&rb5uG`Q>ZE-ltU ztgqROXc=qpORrmZ#Rgh*~&unSv(65q03p)re!6#VA@3 z?`M-~Y1SC2jOl+2xLZu0`gGRO)5h`~IXxQ#J>#*Z5{x#VTcsFGuK*pFtsni?XQ&!5 zpfmK4Fv+seRDUdVMb;NR+G@~vL|S{KCL}XQXM4V8yFZr9os!?p@gN@1q)?NeY2NDx zR-@?+@VF~FBTl(!tX3^r$OJeaA$Jx9H1IWz8(mI)T1`}gQBMv6=lh>FLgt5+x;8!A z0n*nhYg@B{Isqj{MIwh-nG9A3*yr0UdIHg3(cnm2mj(AaZq%E+KX_kzZZEK}BUmF? z60C<#cWjsr@+=i)9Q&1Va{peS0)Od4dns6vU)~#s9GQH@Y_4Z6xgMrUSUwVBQ09q1 zrI2?i4kFuXB6l;(#CH&dn=E(hoCX1MhuLZ9&C|CGvHf`488jaDcGpsIrFFp9p=f!M zk)x9qGSC%tLUZSjP&eNWabnm2O~3w%-;OoihRJQos`3*D$Cyzj6`Q1Jz2E_WLA1IF zM{^LdslnadCkusph)UxcuSi3|t(R@WxWZQ)1}l2WQ=)k!R3c~eI!nYaT> z(R36C)m=|q{BUFJ`%v=F2;;!p z#m<&W5z)SUH~vSoel*J9{4@10N{IfZ+ZQrQia5nnVs}Scx)(M~r6(LIL_;DXy^{Fn z5<57vA3!AC*WtxTHUzy(3UT(Fl;3~%VD0DrCqMrPy2WF^3wTFkF-HWRe+|vt-HVxq zlp$N9dt96Nt3p`gL{ob6Slp>9w~w~UM9f_Q}n7> znhd6KT7hm!bmI1^H@r528GH!|krfO>%yp{-t4zY$?!a$CEn^aEJaGnX6wuBS35$K> zuwoVl`DUEQ_gEQPW%JA?m!@-cs)v)5R~tRLdTBOC*Q6rsnw2@DM?c#E(Tt8LG6RVF zP`>Wy_zaAda?Q$FVOLm?=zZ8y^(>91cUk0Kv{v#2&&%FSm-){+ud{6CazWywEXvZqS!N2)6f zO?$3nFP1P$Kp9}G4-{(;%ioEo6cXZzAV+kH$>!3#OV)t~)y##qs&aNw$|x5|U@XWdBO+E5W?y`;xy5DP4QfzNU0WUw$Y2HF8?4CjV1Tvo;h zz|+}lyK|Gb_j2#{Gor%pSmV5bxu6$X|U?42;? z6=hWOm*T=JG1Xxn35QO_V#oLe=)}I1Grg@xpUA5)rr?V_rX3gtVjv=W0bM9Wl?4MH zRk}M8$^!Zx{*IX7y^5U?Mt7@5cWMC9 zWu>k>#7b<1#l!#CcnY#MN&iX-N9jq&xG{bW{4P}nOvW{3EI_OR&o)1qnodlPwlqZM zfV;sZ21S>kq!$^B{3}WwLpnqhCC-j2%wt8+NMg)DDC?U*)b*N_2sM%y{a`#0W8;y% z$0o%S+XpLgX`*AVg4vzorvzk-na-VNOb9IJ>w(v}uoep!ewVxo0&)K5ZS}k=13Tli% zVCc$=VQF-Q9VnvT$AePk1Eps?$i{amp#$GzpeybEyxPU)L1mZ>@hlRnU4{cTcu%)3 zZG~eu8^gZdi(C7xRPk%w=&Uw)1yT>1FI%Ju9D0r<_+JEL%ByrdKo8NX81}c-?DiT^ zyi>I={Umo<&7Q5f@1b}NBDAGvH<9Mkvz zfR>x{;g{lapa$MnXQ#K-&T4Z~Jze}YqwoUP6W*{Kq)oyWx;z(qtsAdEm9(7vvBA)P+#q~ft`%1zluZ}; zrP+dy6e&0bC`Hj1;)7(@S_2~lXssFO^Y4UaeUlla;)L*LVXRhd8ugFuDb5ph6vL5On#YVU&?aJakR@s0Pe`s)dbc+~Zfv++&j|#CKPgy~oP%!6; zk)G?TDcyZ~jg*C1yc*HpJJMR=q|{Co-O(SR{5H!^7Nw^E6`vW03Mio~VV_DnVP*^ z!#Ob7HubCdAq4D`+HGmO`)7*)>(riaVdm63NrFEtd@IzPEAT++i5qbbn=L>Qvr><2w|8j^V}EV= zhg%fxIkOxesuJ*`w4p#Q5SrvBx#=Y7O^+$QC{?wc8Zwc+!RmA!*~XzkY-Gde%hUG zfT8(M1$9@!$^%H4WItfjU7EE~ws{(#_re6bI&kVidna`%wG&DdWX00(Y-)#z$Wr9F z;*TC9!|~z_aD4cquLDxLFTD=KP3L`h+$mXR)rG%=@As?8cB5GH9bwH>HxKZR;LUer zx}z(MHA^kin z{u8~!d-AcKYPcID{@+-OudmsPnq5b%9NmseRX@{Fb0T)#o8o@Bs>`lcx9r>G{}i&V zUV*)kHCC%LQ~nmqn!P>cR(`r3Uv7DR!n1XEUtRnfv1SDwV6i?Hl4si7 z&r`RkXY5t&Dm=KDDXuQ*v86qgg1aRg`f(4ysIWX5ZcQG15Y1UNAR)SGs`P(ErE!5w zH#o*~@p-#o#S|5NC|Hd8u)EFR(_q}4teN727w?Gu!$DTo+>0{t7)p&P%A)CtNCG?9S=6V{tIK z`}%CPPnTBem#dGM4%GP;8H4eXdcW z(VifagF8LcQsp3mIDg;DYc}52vU^zszQuG*U^;l?X>u`>uxT(;oJ#)1a^3{`LTnIK z#?XAkN{_BeMhs&ZNlg4d_vbufRO;hQw#g&r!?y6KZ5SPj(Gvkxi|VkXa6195-d>cK zLw28+VtXaFKZdMTGFD%w`x=3PvAq%7UuZiOQ!&>Fo4v%Wlc;(4C*BvTut261BeRy9 z22xSR$F{ct#AXCOtp3j=?zO~TO&sQoI6mKbEGQ(UUz}mEo52Eei=8{j`6~b<#-ZY5 znHWaR)t73m2KgO0n032aX7VbK*D=RQ}AkD=9|{mi>ly`$>J zsUDB*4t^@p;`56lSt+SYt3k>q5WSf482xrw>@JAOr zsRFC>#xdMFGM*(vVSQ}8N*qHd8z1(khb=`JIkNt$Z-o%mZQVA&%bpbx^7G^4EzLi% z{X*f#Mo&UarO#R#P^J{JkmLO+hcu-akOh><0{XC>`i}ABC!0*;CtLj_8+8+Ww>^3h zOI-p(v8&4N{<6JaQ61%%O3J!@oH->TibG4Pc5u}$ZWWdztdw(u=}A?7MtiD7n4FWx z$~1IJZYcAt9~Sd@P%`*<{1+wi3GBD(8gOXpaP*>RMZX~kUp5&gEtnSc(|E-iuJ1m!l4|3lDdDhuC+{iNcMd!M-!%-j>!~r z<^W|$Y)pM{)IL5j)SKG^g)yMo=rYb}8{1LJmmhIdISaGnPPQz}QT)+4qWZY}-`7#@ z#oP0KWV@nZ)TFo(kXGy*qTR!{=P9(|{EA&rv0F&XDY#?H0P^0FzX$V>-Hs{4_{aA5 zCA*)BX?DY>gY$Qu48ABDprR;}V^E&?(aew0Kylnv979cuM|cL3SIDw)Rf->0!IsTuS#2cG6!qV}kPt(CClNF#c-8qBvps+5na*pZdmF<3n8*h&SnDF{$0 z|5SM6$>fZpxmcsZirYeg0%gWS40c)}V6sf4B1B*py3%m30AZjC{=6Er8*tVB;B*M^Mj! z&>stRl&aY0eo2W+yNL!i2$3abN}3)bD5c!fbT&>xl7a$I*7&sxHHdydsg!U%;4EMih znb&6Wfm%@g9~s0((W6b2UVMk~YQ!C^P8#$e*U=-Uc2AX7l=e_)NLEKKWU4@)E*nht zjJs@ClAB1HsLN%;bw|Y5FUyRQVegzE+e*LYg4aelEPw-0Mid-f!N@eVz?224M-2%E z$i&g1^bfJ)YVPEkol8m_3Z!j@Fv$X*oIWk*2hM6iJ{fKuZuC>AuRi`nh`d zM}!CXF4xa#$=K+aPFTpfO?QFRwt_#dSv!$E|I4OvByJLq1(BM7#uRAPXL9L)4o=vQ zFdyssyP@?+X%9CssejmPX)THS z15~OA+^*L_Qi8z3tze!;F)5bRf&)c=(~E<@*I!~ebC`k}oCB&#QO8M|Z`6l?Wd9*NH+s}4u$KlmEGo4iopLNX7wrC|$TXryR zMstU{c!?|-i(E`dA*(;Zb)5F1Fr+VKMAjkDU1aD=EUxpy`)2l<$%Gi$<{A!sA3YNp zI3Z~n&6hfxHEKlSUU!oGG-*3CX=>K6aGW9=CfBBH6x}J6mZVecz;X2tfnPrpW?74w z%lzF}J4t46#ZF%Evtq&T8^ZhBN&mnyEPhb(+t7!Bo^K*QHOLRQQh$hKmn2$P=(TzD zo$E{ctI_SaemLhRp%~-IL~(GFFQuQyCoiU5#061Q_CACc(n{6VBrLJ9EUl5tc&gB- z5>4Fa)W5smQN;#Q%?%3CEBVEL6)sNp9;GX8_Ba&nPSP^C(cRzXs(DGgd%o>%3e9Ji z6n`ggAsb8kft1!` z2gQ1r+p~1CotfD=q=#fwhI32f^dP3)woIQ%-Idg^u{-3!bq^!(*?W3Eb{R9PfPeB; z^wwa}tV{VMV*g7qFzGY<0sOEEonMB6BP)xMThA7o8g7jcLzI&1%B#bMbqa9WGrsn`L~VE+t0KSdR9S^pj$xcuN+$>-A#a5R7skT%qT5TD>Nu4@ zlyk6&B?n=lD`BY+_hB>YCKznQpqKY{tRKjl>W&^Rl~5DBQsJ<%hGNr;Y*$Gg?!aQS zumquTGh<#hYrR=9+n{t0*P?%vhEH`4FAy<_OgqXpaB^7l+80Kf%<4ABP}999HH z2TK0ETw$gO&B$J^Fh7Wi%TY{$r`$OosrP#bokW7f0zEZqcs#}X@UlNAu02nEa(8suz8t@T zoj{bi${*QuOB7OJhgSTNC3h4864d#yEPXe1e^RPg`p-07EV-68+FbBpW|s-LBYgOA zCB_1OR_bQ}?;OFN2`1n+H^Ci^ZxBkH#6(~Tg<~%>1s(`iF(w0Kb4HE-fhQtAJm`s8 z8NJapQgyWeYZDr@)Vi>d#c|Ix%6FnC;@nOL(*ZZ+CZvX+F^Sg3SE4s7=`hl;igZ2llpG?^mS4cmd!L~|RINf(!x zaw5tX@g>fk;F7TK!nQMP8?$4WvaP*A^ghZe7~h7d-AnUwpDU_AE#m8)X8&zpgw4mM zED3NBeCSpgS4HK(_m8U>y4_DI?nF4FryKOCnDWv1>^wfBi4Lha2AFIau@;wbj0l?= zA^fVgOBzIcZZW2Wh#E!xs%SJWm%&)1M5T7H@JTU9_a#nv0wg3Ou3UsVpZAM`yCDLmWU*v zee6?Pw1S*myRc3PWxNeirc!b~Yt%yc9p;r!IedSW2LMhCbT%j$_{j#ybfVYdnaFkQ zfrg`>vNq;%*BYWELvgb~lUN+S8a><~r|d^%cU0MbP_xB#j6C*QDOM0S;cGIeOHyQR zq-+F9f%0lLcU@jRykcJ6SoIf{SLcj4UL)qJ%v} zXd-N;wEKOj4OPg_4b_zk{!;XDcX{1@P4EJfeQC`usM+B)GJWbB*m?DMl08)WB*f9J zlgn#H6+>i*hphI5xka^j!YEE06L8`fhL*$qMAp9)AW6HBC5)_4VsN0EYh^@X2`h@y zMyrauWaU#PUO|D@myk?2GF@Xzo#L9VQKM^Rpxb$2q=dk;g;fCA!;7w;bpJ{Tv*n?0 z&sDr_2)`vxpi)pR6#~ntUhtO+(~tLqW!?+!20;>m)eXo4fIi0`2w+Xt7Go=mSuU~= z;FpN4)wvU;HR6PKrfrQdoti2>1(){hX7mrnQCRq~VeH9dQL`vUM?9rrH;#^GS=Ihf zwuy-4H;=nfWuFp+o=z+>+ezrtke1aoG zSD$BGBpSX_cIcqaY7XR;z>XYOgDavLEevGpW1~-^OWOQTns#ziK`spCl&1aZqeEGQ zR@1cOo5*rf{CINRnC-}=gGE2lf*L@0%FzE7mVs3#uO>P72wc4%fy}m~HsKU;iVC~V zlKokg`8o}A^>9_{jeOA2lo$hZuzBk#W%{6~19s91oSo;S6>5yKsa`Y1=uU-}NZ4bI zAOn2SZExGzPQC}B5dsF#06zq3bxB6!2pR}r>~=IlMZ?h4*q|=gK61H*bE4Ozl&`wt z9&Rt>xbJ#WQAe)Vx9TG8x(Mdkk&7&hzZ&msU$vb(SG`9!tM|jtI#_T;cXEfF*g`0ZEz}eQ z3LJN@K=^r73__$a0l-X3+9I2t12~O#E^(tWF<}Ydq0EyEJChl;bb^Esj z@WdVFZK)@olF0{g27>K_;6tbyyHXQ9@ylQ?Mq&EgbDz+Uk$X^ecAg(wpuedPdkWXj z)a^8UnyM70Ikq;*K5vKAjCa9&p6~Cja0ftRk^UxR9U(}|lH+c~2@MLI>I!!`1om$s z9(&bHwuw+c5Ci2Y5JWCPx6*hXgUeBT4=Hz@s7qT(xod?1qnhTEBr0X93qcXfkXduugm9^pS zsVt5ZE5Ov|a6EFXvtnzRe(gc2$}zjaA=SwF8jF9SUX&L|ZhY!Apjpo$Djd zI#l!}($$nT>azFZPdw$~#12awb+i$+VC*G4x>b|~o|sVb!<=6PN}zqNos+;dVCN;4CVj+u{* z1o#2PX>L|!rkf?PJY#`Pl1lb zTNU`$&n(WW@jiKKW0?ES@-s`b=8Rl<%Eq>l=Qn|(z`s*oC||Km0g8q2BTuQPYJB7= zV?O6{;KAXD@9 zpdC8FP9L;0^y&0LF7Xc>L(Vp`pNBEsrWI{_(OVEX#@Ur6ySQYRl-&99P@=>U+t%j3 z`s|5$7f z7wMc!E*#-JV!QNWe*#GeqslXBjpsP7Z10knKuV!Yk1NN=Qx__|v`ncai0~=Z;z_ts zS+-wD|6Gp$LPO(t-e^O{^RvdCST|e8DHgE-^PDXRQr*aB=O@^-4a zXYLH;WyT87A+ay@&w-8<5KQcuOz=KENd0?ZG=P2Me5Z#6w}Lo5NzC`B;NnD`^sN8) z3moqJd5OCscEkrQSkeeVC~$PLo5!u|w^N&>5NxIJwl*}Gf)e|((@fE-o1@9R6~R8{ZY zvt=?%GLy+al4%79>nfDkhGQJZYRyH=;CFj@x?jST$E|2x<$)WVki5U1GS8No5qVGXE9oGuUM$Mq-@CGkas268Ob^>E9RJHL0hKN3nlt>Muc( z!Uh8A*FUnoA4%PVsXfF`5os~wvG{(Lno3b{O7K5V(_K(&3kis#6(D@>7P|l7`W%)Q z;D?w{W;m9pR0Ob^(rd9$cC(SzJMgTv@T?8QAj3wP0Pjjg&9TFBTc}xn-xrX9Rhmyi zMP(yaTSCB>EZoT}x{{^=g>q|_hE^cQgZI@glgU3Pm>wWS?>lhLWt`=xSDuq?m^Y<}o%Z9-5k z$rFHcvJ((yfH0rH2@y;I6}UJnA3#8JK&QmZ^BRYkC99kEl~SP;91q(I4I{9FkPazW zzpMBc6h7ilA+i>EhguvMS}`$!`7c-eUn|TgBa_hYDbs~T*(->u+R5Wsa^%E>UO?EK zBf;S`Fhx~UilI^iL>NLrKrNuHSU?^@_sB)b8b<_{Vn7h-m=vuy5D|@|6Rz2b$TJO~ zI|4Z6eIiO0`v@_pe%=NkZYLOaGe<-x2=km*K>9i(GYsitv$&nG7KQW3k0)0tgiw-9 zl*FZaQ*3>npAIipMNGApYw####wBAbb{auH-g2rQ3`8b8!F7a2yZ8W)Y#$QxH{2W< z<%rS1f+M3X?^G(2di4&CSTO~a@lkJ{ELUX+F$;~gBoJ{~$UmPYtzc;27LGV_X^ErU zT6AZ}MGG0lR=YM9SChvOO|(`$Pa8ok+||mBpP3-p!)chO@90g?xQT`6|FL2h>zQkA z`(m+rQVGVAWGgsYto+`M>ej)_Eu>m8gaL?4;1=jo+~V9A5~O*UK@g9O=Dh%)9T_D? zLOFteVFdh6YiYu9Wcj0ZD1Ojg{I(Po+OQ?|hy5l^OgcXr!x;~4CNv)m{`u67MuBG# z&Mu63+!xDDDEJ3^5aG`I^AOB{F0P&U{jG9cJs-bWli7rxHDtsXOjC_|a-JMHm|QG`Ififs z9@WFYmTP)ytPb8}uqOkH-8DMvLi%p%tZ!Pnl4BspRIY;^0-YO(XKje~BzNW6-`_gc zR|<354Mu-FigaSVyhZ~n)+sqLNwNv|;s|pfq-4Mhg$FMw_gO>f1Cdn^@5q_SdOV$C zK_G`_2=GcJr@2CvG3Iz+;}|FKT%!wF?*$g5d-=UVRA%4rHF@u9vK&91JkW$F-Jg^B zxSjwByRwIvZO!#Pxxb#mJnsE&nTP~cf6G{09_%4WP*yiRcWU%Wm63G|@m3ZsFvj@| z*WotA?@}v<=kJZR(6F=?oxP7NwI9Ll4Ppx|d91kC;rFIIG>$VC;~(N<{W14HD59haCn?WR-)HI}{@Tq;&(URLR##nJ?%H zzXV9!TWDX!^+<^6k^^Sp9j$qQ}=VurpNMk2ahUmXLlB;Vn zTPf{BC64~-uQR4g9#gZUskp*Z@5DoPx?{00>tW4PMkqNcB4muKe_xENKRed38N*3I zRDvDi53|GJdAs;UNVbQ#!zzn5m?I8j5p$%;nSh4zR(Z!1#JK&tPGnsjN!Ur@1Y z)V9xEOveLYg}E)tAzvdR_g}~%tD)8EO3e?h@uf`>NrwEedm<0dD6g&LzLC4LaFyoO zl{uNsE&Ecbb{@3I4M`0n)vS(r@mp1S%GcB>TO*_M6?u(Lb$oqv2~X`GynE5JWVpxj z5(@1viK9}8@5^P@n_XMBJN4kFRQ+*P`&)*^OV7*q$UXl;ra=Ir@*L%PL@rJb{!1cP z5?s7ucHlEZq2`v6@L0pLB1(p~P^p!bzvPu`(bpWT4T$1$2bGN~W6qvL3@>?3)T|(l(2wGvu7;W8@=>|6#CuqiV<09B~QGPOha#*HKky2+eaIz&k1Ez*!+9T0qJ=mpxJ* z&JK9jAQZ7D{fz`o`Yd3vpb|SaiqzW~RVK|nA{*dWiS_swGAG3eUgl}c{jCw+E&>{f zx-^GKPLbypgW{qW6M&P#vKHAwK4;$BuPeIx>IQ4%ws?*E8`z*XoA0j>NQ6Aq-=~$zx5KOKYvrhySOOixsrC zKa$N#F}0g?C%Yfo_OZcaWsCax?^1E} z=sAeWiO!O}X&DMTBb(&YZ`3+caUhgvk-&&oR6Y?6 zyAwjEW(AR>PsR;DwqNpOD?8XeWCudeKLFD{HMdh>y2>Xp+OlN@2g7|UwCd;jCk*1MaFE>We&Nlc7)A#!tz zz$ziKC9aieai7}ftfB6>MKD@qyNHL-ACLUWX!o~YwEXEU|5QbBuaD8)gKJDjaBX7u>2`ccWy8O8 z+uyqF^=@}*;QE-1+SSPKYEduam}cW79OXUk%pP|}kFDrQ1A)Jd6S~VdQD7wZl1v{O zceETk{~oUIp|lC8&6Ke`p=-EOi&s7PC%W8kyX>_tNY>R|{<1Dx9dqOX+lBu+didH} zc+@QZ5!Lz zb}kl0D(%qNzPTfzx;wcYS!%l+wAk%xdvf#L{O$x!?!AFb?Mu&wy0od4#%r&^-At{J@#}DcqIW)S|ne>5L)iC9(UthyRa8L_)^nOCpiN9;8!{@ zR8t(wZlzAV`$^Lk>F6sO?lso9|8v#-Nr5@9R1F)-D^(ox-|c9wQylu2YwmOuDVu^* zM^hvMb1{5K;oZBzn%~9{k<>DODTIB1r<4?>;qn`ba9Cb}J@?9wuQ1pS5qHiITL+7Z zBy$Q2#~yc8`tSwzyP~LfYEeROzA8tIHDX7n5Hlk8{Z#m*)etDLi@byK2Ki*%b!79o z2Rq#Zo%XZN@Nj3KZ2ujdZUTxyjd;Ul_7O5u4z%|pB}}HS1*DCB5g8(@v4Xb;85-FY zT>*4`sgYgYaF;d0>P8iThH>m|(=oP#<8-mnuOy|qaKS%Bo*#iaNisr>{q1Zo9hS0q z3((M@!I&uJ?27~{=1a~&d~9^8y@>x9D{n-qY8#0dB9+#WM)Fuq&h1A@ezey;)@#rA zvbrwr_2>86nqJ^Xt7evo?t`L&%lBVM16S!BEUG-t-+M*oPUz?4Z>e;9c6nZH}#{!mEkTwndl0)?8BO~jP^EP?XFYXufWLDI^0WAnEu#s1ob%oLZdze zW^c{F_=7<}7pQ&|UkxcjU+QwFt3Mz#?uy{QW1{jx73Pva|;U*R_o_jz(- zU(CboKpTap8~M$h?v~Ce=&iJw9mngx#+iHve%*zFgp3=nGmltx!4u-%=w-qqsaPt3 zfqK0+hJUNc|ljUIY0yv-)3SK_>Go4x55}smxC0-YQr}o>KRM78{ zFX^m)kv0Gyzl$xTmRp~=_Pj5o$t{D>-e_hNcLo-^NbpkuB(pXpM0@iz=s&_t7W)0B zk@I)!=L5uujBS^^$`#ZK5X_EZH{+RPq>slg*^^j@aopW*B+{|}ie!ugRxq`N{T@B* zutFT(O_+J0j^u|8CT|P@t7y1HY`t=VUp2ulkj%zAcGX@-gA3<>JxLPj`e8jfPs_~X z{{=y!%^u>_ui_DW@pk{C=o@@sf~4faH&}mb-CPnF#Hg4j$wGcyuSg1SL=vxqM&DKC9u319VNR^~HV-k>@_Nww#VGWyY7bjA}YTzU31q`co#_$sA>-Pnrmidm>(Qm8CZg+mApau5#nBojh5Wzkf>D z72#hU0r~+*i+B74rar_T>Wtx{0iMM|aScam$yS{HB|5m8iz zXqGLel8ze@_h}~!Ht*O(HS6Uy3A^?KQ?bP|19tO(-6ctdhPA12@5E!2+)iTjT5Y=*DjX%+$OEZ57=>VDL{WL z(UkTJUD&hW)=aeO~1^ zwGSyA?T$9iUk!~W&x3P#0YXH>NUTWwru(KWJO3NOk{yVJgBDv--3{l5=uB0e2I!X) zxCfjwg}%o1Q_wHphWj{jR+6ixW#1aGYX8J^ZEtWl;lP6};0*d*aIR{eNLRgUMgHH(Eu*o{#r` zaR#&b)luDe{S3*DF?1CLYJ@-{*iOYgIN9Gb*&vwC-7`64>1~t!9h2=RdnPZP5n{HM~RL=P%}vIh|a&STvrBoUDa^G8J_ z2Y_wn(*mt4Z45!l#sirb?j)D$chTJCdj}(^ii{lq1E}yFV7S2_nvLUfK|}fh*fy6Bca3Ys?k*LpEARrhORnI<*79E z&xx_%BS4ZyPL28$A4!b0T4$B0vcfB?Z0F9LJchyOja0ohB-TI@!&nyx03Skx#=OIO zPjc35c^b6ZFr+ILYG)?mhg0p15gUdOEVNO~oj)6~hesgT&yO^Cui3Y!+I3S=+}`eX z_TqL0QQBUNxQ4JWDppLaD<)&0hFwy(0{LSl#if&@B@mKQu;T*R`;))TCgl&y`Ai|n zJ+nc#KTQ|9{Q%hI_`{`K@Qaz_+*RVJ&y{|@oRYU1uyRDkTEhNuNn;NC z9dVJp<%pgxlD4-TeTzUAfBDZxgfMTtx||*VpCdqoQN->;f&7i|3f)pH;$$4$2rrrX`)=Ug@0uH5*XA8-y>`-}1K z*UYvXHvay0eV^I0^>@q1}PRX>9qdf8dUjwHuvj|#Z)v)cFQ zvl_$4bfGrO(y^g*B%VVIS3GA{IyZjC0TDlMmTeh7Z)4lW&$O3}pD}I5&%0p=&^>7? zSyEF;uv;lWD{0^n$web>(O@7QBtNiiMgp>_X1wFbxGhA>h!q`^k_YA?&X%ZVLV%gg zc2fw{A4VmVmq5;E#&A9 z_V)52?jSDpK_{ojyI?NpAh4(l0ju}V%_EkUNoNrs7Z2PuFF<89$9#MBywDSN4DYU1 zASlJ6eVl=*TH9@DH6jN8ovYV*bFhWG}@hcw>x&gdyTvl?tsGo9NW0Ej}`uyXVa;&6;{$-7Avu);6TXT#M-EWYobbp%7R0aw$M)fF1P~f9p zbLRwiHb4V*-w3uUq!$Fch+vj##sAK`-!lh{>cftZf6|Ic*qg&NZb<`+^L4Uj)boQ? zxXyru94v%@60CLbPST=h~Ob` z4YMT~t8}Xt##psVY8o(Vc3{B7vq^ucfw<6$`d&qPQS{L-qpjdBetLJ@W^p@NEucEN z%A+xEWxcACgC0yIajIUE_}dIAmb4Le@5!igeu?7uqV$+$|L8Zci?F8ZMjTxh3*Ne` z^pJm`4_uMB2k^L#`wA!Lzeo4xaNK^?-ozWT>}r?XpXU^>X1ZTb?Tys^J$1(_n|Di~ zHs4;NN*o3DoE?+d*E3qA=0BjKHl}A3AxgCUIJH|-`h?t_*$PE-PxX(dwm!8Box8}f z%`VpCC{Ao|LTmqkW!hd~gMt1v1=|SwpGsocq8BsY*KjJ)0_2^zW`XzENWAQh~QAp@WV3G@_!*SZKW zG}80^a5mH$mXJ&Ad|6)N4V8@o^gZCjUDnvjww{vQL;fFx%2g*2f*`c6q|KN@*N=1v z=O@n2rl|dUIO6eO>#-rkw~n~o=W&`NEc=Ov^u0GZt5RAOwH#cz*x@FJF`oQ#vm1o$ zgfL(Qyxa)HC$dIW{_D7v@WeYDs8qtP0S_pF(fTBBCn~sxilMsP^O#(nd*0cx-j4C^H19}ySwZo1Kb3{tg^$T~ zWkR7MhlA}L_fRDro`Ia;o-VHO1O&>tC!GBm8In7?qrE#y`FtYJAsk2RxBPoj^rTxc z7XFKICB!=5HxGxq&)_oLBCTgTk$}Z%O2s^vueS#mnQT@#Z&HM`+`ZZ@cAy3-N&seB zUjPwdv^eOz?||rrF3Km8XXm=|Xpv++_f(^+jJ67$IFtHXA~|$0pGbx&#dBzpLFTY} zw!~-{hh@Qr4jZH)#2`F+%4Va0V${X70Y4LW55{Lj9W1vAk_TpEomf_)8aCmvW1g2| ze~aXlDs1)VB}$*To5)VKYzeDpQSvbLCNM)hPgs(wg-|u( z?3%|<^B1$_geRHf8wmWbX(w5;qiRNO=Cx8VS@aR)3Xj$DCFTpRF2zwqw&G8%Im!Eu;x?L4L=@uZ z^QlbaFcaAY2gFL6u5_P2-`PsHqpH9zs{l@kF0wpQXoPzcX~AV^8Nw^Yd*Ezha(_co zjQdv2uGZtpo66RXs@qva!?>^3q4dYs-Agr%`s-zVF~QEHjzqW_ox@#UMoZ=xU;dyB zi@HHF%+=-WH5y28J^n5!=M;TUjGz8h%a4ZY|r7%Wa|S z_OgAuOc-Rihi28_@=wZkYuR%f%7)%XpGU9z-Bb2=V<&RAl(T!wrPEZ@Ld(SCB9uda zs{jKdS7i_sCC?#)j*Hq?{P&^u3W8BK3}`BfFMg^<+zN+cRPf>^1@Pd+c_${<9?E?6 z`H2W>lL+L1B4WN8W-LCPRGSQ2OR*-53TW5{W`cCHN>~ZJ%F&N1bzSIvPP=zt4*u5Qf2bIf8cxxAD)Zz#3{e;uqO9n+ z*$7Xi>6jWXex8e0ABk6=x@DDOBKfxA6D989k8q!GygIhbwkUD5@`;ICX4~2)GWJXH z8#OdhBvXwdGw6%CdmzT&+{ZA(-7wd^lRLoS{9Sn7p)nYLY8j<_T`Q%l9J%fiskGB_ z(CRvK{T-;O-wR;;RiD4+DI??JzT}A?n!8D7zXziX)J;MGTFOBjLFtTBBYN~H2v2cE z|2@giDOoTGva<+1J=i{M2h*+ZP;PK={4uwEN^4dZP_)SZ+3;ifB57hby6sXDOLv6e zPK%uZ?FWXKaGaZ4X@_EY{g?dLzN-O&{v8 zfr0p4iilJ5@1rgTz~L#-PQAY&z+1yNQ4iWH{j(Auw{e@mi@;++nrbGnfW;H zqyz#XTf)9;ZZeRaWV5;A>Av(;tTN6{@fhuy>(l9~>F5MYOcr(I)~3dRCM$3nC$EVD z-5|9n^LssIf1P`Rnuw`>_JX#17KW*V!T%@T#JM};GbQ@E*#?2{M6MSdZT{tdk{&NhjlfCwganf;qVt=M=VAIo< zny1`ZXrnemQZ#6u$0e6;hTEdbOM%Q4f*1~2nw-f5ZG6qjq(Zg9MZk{d^!L5|86go}=H&|1HFbAP* zCn#`2-5*o8lj;HhvxEn}6h_wQ#&7~DXMqyiSllOUP4RCv2&4WtGA#;=aHF#C; zBLs?7gaw!V%unM|TJQBRQ8F5S)@b2qB!`SdIP_3Ph@TB;+*Hw{<}^RzgTD__s2UOX z8#MC|=2%2$u>iR6L-O2?Q&kFA7j>6KIRzrzksLat=WI&vxk}u2CBG-Aff7Bshajj3 zl3;gplW|yU>K=Fg$??y1RrE(p*P7vp8Gl!D$Y4U%U5&uG%M4=%1VKEkibN5LicDA| zWW0<$!HVKnDam9DW+r#|jMAJ8j(4QPd9Rdc#^H6%b2x6Bkqtx5GM; z7ZC*Fs-kx7?Fg9^Q&%7(6sS-rI+6v|!^!kT=NI+lED2bddsgOW{Q~4K)&Wh#^<1d2V$8su=UQj~H*%vr;`&*K!brVE%#3FWa#`Gy;y938N-inZ)4$Qc zLK8#s7Vd}T^q+AaaYf{uB1qmp=uq;vkX`wr00vb_b*w^;i%3xYFr~EtF~0nX$6+7G zG+uH)fZZ_}G4TIA{@rdVX(R7O&beC0Iq!r1o!Fr6l=kgk$=rpG9};X7&)?BMX;^~6 zxW#^}SR0%qt^8OjhnP_*)A<7{v;!~g`CZFolA*4;R zsae#jWkjzy_T~7&*gJuSpH%h3nlgD1dvuXoG-M+XfloG}kOWlsq4N?K+C*s(?gU%p(5mMkRLD-xQJzyd&Z<}kO5D1`!0#N}@Py}7C!jxJdX($><-W?4jMbGr|`AB>VCh+yl z2&8HR(ophyluUSW2QTiLf#~iS3V*9v8g#wP$e=X8ly`-u-dI$Cj+`m(VOpPK$LeH8 zQ;fp`jRcitQmwkNQ>wUrIkb?Hq8&mBYSe?(@&-0=4YO%chpJ*ha@C<^K`U9AM?gXk zG|`)Aj#Yb&IS$qvAG#bLx|yt21*h*|zzD0gw!R(Q>QDxd;W%ZNVuTm)?A!4{|C|vi zB;r-WN~x;%>`LO^rkJ-VdC7JN$)b1^&(g$(zTEX={faiQYI0^N+=dX0&h2b5aw+mq zq^FC?`g2i+1!)2tfeQViD=r7Y#q5f7h5tNX#y1zYJu<#6Xi>DoKI-oUCnd4U)1&Tys%%4JuWxnmT_Bt91&>2 zPG5KKI3h^tZa^tWSNfU@pUOVj&C##9dUAX@o2beX%J#tg8elpzLFZXfBjmxEZYCrf z0g-1QVbqWnriYy*G01$%^iGX5vfqBB9E~$!O!n2f-IVKdz;Sb}lCxHqvn$FZXT^V! zT!^y5{KHg#0alVcAlZ?QJAk~IkE?l~ku#g~z&D{MJ3>9y2!*OqfhG8B?cyh6O2uy| z)G8$`Bnz_TuH#LU(t9Nq#>*?&<5?RCynRNVx!;uCbE>*c5;q=UqVI)RGN>cukT1ry zcIR67=@Hn(TUme2am4BxN3W^Led?k#j6p1CtLpuik0zh#v^O1zq2W!$ zyak&lcU0x?p!fseCpm4LfXo&FnGo==vxr0q*4v&D4>8rTbh5Zu+@bv+HC|dq`Jt`k zm1_1yP^_)?pbv?*L#v22kR6u!2MoO`WOWhLUpyQ)Jla02;XBS>M*}AzDCxlpRPPDO zS=cn-MJvLJhM}(np)hbQ$Cv`EVX2Q%5fZZSd_ z03w@qw-QtReT|&P*(`wjp?3C{iirMA4a)CiBu8&W{9X+U?bf)NNEl%x3yd<{pm6be zjRIpOxlb6cM@9R&l4|{V&2*AxTPrvfrq?K=9hb9~sI0VFnR;cte48Vh&yTssow^Bu zBmfhY3ayW`G{bMk2VCAv|3Y9={CiafIw~Rau+PYJ;aLGibOjgyO_QcIIdbl9>_JtE zPE5)hRPY?YK;R0ax%W@P-jND{HY*c*jUbNpFBw7+FxUmMjv*ACO62PAC05q@(!tgM z0v}o9@Lt&0e6g?m3)N)7?#YT4`V_dMtCbLmq|Z}QI7zl#JVKKpkTd>0}m zREd0-Z_xP}iEGuhJh78v5#<=2eC6q?bO{>-*LAjdBcfE0CTvzPsQMrhDz|Of9?2U3 zF#mFJjP~?ycSBF>7E<|m(h-VvlORTi^gh3(+XSn%`WjT-T;!FGLYE5u-=gjz2A{QJ zr-hZ)aekYFhvX(AN0Ge9?qLP4^Y2DGTIa)BW^qA-MtU|_p_6OQ%LX>XH&{(h>MKnk ztG8-*mi#>>ySr4mtK{!2ICcP<72Sb`}MBrt91eYvIca_DgQ;Lz3G%pf0#A!?d_S zN3lvf8zV9-bdGX&u0W-Wg^~W~emjZ&bh#;L_8imQ%JhFxVXyVJ_2Z0u!4SOPlPK7o zJkW=Th)*3wlX%XydHiej>^$jjuchH{Vn-U-B*^+C$a*KaTC``uP{E9JCtD9Di->Vj zI48swmRW;Us$NbCGv9i1Dz9KF#+konqb(3Z54NZc+c(WFHf^QpUTuWuVOf^uv&!rO zII(=iOtLZ#c+(1u6oz-jB1Li~pQVoLh5E)rjV5o%j)J*9V{L$nD!f!jjE`K6U;#bp zWS&w_D~oNuFip1JFqe= z$h^=M8K7kQttH!U31Q$!4|BsmJt(BC$s&j;@n|t`iLA&FEneV441k9%htiK6{VY^x z;%Ws6_NAYi_$DRql@V1-Zn#Tbt>TYtS_B+4f&VR%1jHW52gnS;0?hX}M*tvij%z zk^XabBy#aC{&3XrBUAQ_Jso#PI*#bQv;9un>V|zT9BGH)s+wi{^2^WJ$MG$2PRgsA zTxwYhCU#LENRK7;^`L%66YNH*tz-{>-c|+bmWB%VfRPhKbbRo~1WzqGsssJe*<<97 zrT(7O{e+buUld~zO)hyNxNgG;V(T3Wv%4*Y_CUbhQ|1ZyyT{vqQp3`rGXK=vGW)Fk zmP(c0p2Y_3b*Szlq|Bu!id{XlR0pdkKDHVz$cTo5qE$0bRV)AI)?wTZ|V`JdFt_nr@SuCIk$y*~3 zv0=tDO_l|Y&T=#3ck{xgd_P~TH*F?+4#Dlpyz`J4Stme^j`r#?d#GZL1!6Im8^;&h85qHE{8C#O*$I=^{IEHnw~#KvI^C*>kKJ5S%n*wG z#?UU{_YeFwAgXx~w6#CJHuSFJRbG>m^%BrdvNp84?bqUkPnvte9Q5T1Z%f+Pc&n(* z;RWC>0Vmz(?Z1SgAGCwTG0qi)@Qi<|4WLQ(f9-BFpm>4VK6aOAITrhB_%|l?UR>+Z z8af6$82YSBoEOVitdL$08ez-hBxGvSj zr6yn&7SL-)PDzfHS?ry)_fP}k{q9|8Y-M;`Kl96*bU;{!@28A=vL;2;fhkN}3(9Oe zsxEDa;|Q}DRUpS5&^o$@qORr1wk?8?a}We>uF}_I-*9WkY~9$EwstH_wmtNIxp)2j z(FeRIG%y94YgJyqK1Dw#@<`h*ZK)kxJr#)dH+ytMWM# z(tAAt(Pieh3VbD1VuuDDvKXLR#PGGZV8W%|Z@m2`X!g9>3nu@Yb1Yc!+4=S6ALXhDEWGY_^($3@bD6%~IqGziRzuX02aRCj^i-_OKP;aOEt)^WsZAQ<-^a_%?r%f+u&^!4*k6x+F7?OB5Y(xk~}Y&S8i}+vtj*B+l578 zPg2E6vE&zo79os}us=1Q?x*>geg?%uW@U3ZGLKr{&d=}Kob#X{ek=T=6xdZo3ER;Y z`knnw=_0=irtn>DcfXtM>G!}Lx!1fUZlAIJTr8_QMkDBn?{WvIbz>|BPhblf$DrbH zav%0WRse&N#sPTo7Ghw-GJe;XA zvWyG6xFx-_>;AdAJzMuL5_1>-h?PZF&PvBM{0R-;jg*$yeo5FbNtiPINJz)zRoW;w z8I)@zpAX5(qKRF<0iPY~2+Y|+pL~8|at{&a#O|J9euawuX3Q$;oTipQ!AR(4N8$JL zaa$A7`~0FIj2m;o(#yk@k^@73G$aQ4h941U=O!GBiarV z&tlt^-|IV|0?T!NI#4u@&*A9S@YY@Zeo(9#_EW!cjrdq##!hV#k34?L0Mzd6X8H9> zyP(IE&qc7*-)!hD++n;my8rE<1S0OZb{AWxkxL#|2#z;dbkR;Z!e>(TSVa0-K zQxNZ(?xSdet-|b8p%|tt_KQSfQP&t+^vqK#P9$CtOD&qf%4LoOwgcK358o?wkH@>!PjVr5G9!&WV9 zZ&2)cJA@Mi5-U}>vhGq&o^cR)rUln*ggvIjk2VhFdfhx$aYWbC%;;5VXCIc6?Jzx+ z-0tw7D#cg{xHIiT)2{P06Ij3#o*W&24>&Kn0|zJaV3BC~v4k~1@*1QT@CK2M5~`38 ze3FzJ)kP@IbSTYs1o-a9`j=ua%2@K;2H>%UfW~bpA$ET{;q#w$--te_tAicxJ_d%I zsp{H*;6oDUFAr|5yn=QUbI0?1OpEy%vN*tCOhgzFYOrKJh~4o$3KEt^z~!S?gN2T) z4C_YDMA5b#r?Vz@Pqyol!@kq0g(>g<*q5_XpmuqyRNrX7BY8~jjSy}WK)-{;6RtOh zuOhW)K4wpS%%1)j$BW*kd|Ll8d-P-W*guXv`Y~y~k9k9RSWh63Z(Rfcqr3@*`KKho zm1UXwUr%|Kb&JLhRkXuI8reuelddMR6Qu!EH)Mgrs6_E~!VV+qQpK){#a{9YXzMy# z9kjdy28=OHE~Xm{W4_$k8CmQ1Qoo_E*g(L$T=}!f8dVkjT>g2wK#CH>=AaktR+nBv zt=i`>;Vl5CmtyAxK*Po;V3tagRb*5Yf+P^vVr6{KwNTd1kmAfjB9Z5fU{9sC%$BF_ z|JWzp&bE_YLFz<}a7J9D`JK-0mkLpO0D_!u66R7ce;VPw@1*ovrmA#V_^hx1TOcJ9 zIFyoK4vhJenJ7Mx-ZjI4zKc+WMyak&%FAtrh7mn)OEi{xM9|)dvfXh@AN7dF8l7jq zllSrc$;o5bfuI0a=EBo!Nit%fG;V-?z*^b=5OViarsCJBFnV>_&xMGfNJGmTJklAN z4nM5lK_EeV1VYSmN zoN9wqTL5TGKjp@tegwE+P!$0p8$yn0I<|6>OINxX=Q~^JylRcDuofW))03TZ%#y74 ziS}G@&mwL>Q5XeLagsK+09txp9OSYgce7%dVA*r1&nV4eWcJz-TQ@Qgw;zn#nQKRK zE{`2I5`mqMHg}ZS(dOeeJIdVAW=C0mkYCz$ySdw93l3Cl1VTcJZZ`}XjpB@>t#K6T zN7u1bz#50HM*0}U7*c;KRyDOhK*{O=?WaR$oK49_iS{e0mIi@3!7a0oAmSUV_`?(* za!_%kjnjyjq9ql}%l(&qigVtpmYS?i8psmVJ`)jp$WJUvTewb?Qg?kcW3CMLCru1? zf|m$$Qt~n0IG26I{RiR)SItu5KIlvkjy2zh4Qw2CJOKai1D>SFgiQ&8#E0!?2#lm) z!11z(%sOQ^^AF0uQ1lt3dL)=x#&bfb~bgSvNQ_6=dkc2-V`Oz29<118)Mpk#r~u)fp4f;#E!dA5F-a zj1nHS0Z9`3aI{>?Wk`Q!Vx&CbAV6Z#+6a%hEfxF8{-sl#JK6QdZF$@3Hq(-K_~0bI z!Tj9jtRGC1h#p$_SjSM}_rYgO78HFluaFx;T-Cn}bPD$)`FaD!^EtQzQ+?k63q4jTd|a-`B|ah(xn1CY1#%*7gizjIpJ zZ=PBtn_QU+3sHN+TF>ul$wSdM!5H!UF>k5_=aT&gi5L>dczC7?yn!IX z8<;XW115AT)8x@3kU6QvnIZ4rC;Ja4t1+fQ@1b8zc+q)cMZbNxH6FFBXK>i`midgjiP?0jM7iGcVLWGQ!Nmh6mD`Xm#d zUxdyXYvr`UeDN2Ne8$c4Z4kT)f*|LsnPK!)`HL!;=|D+(!c3;?d-31zoemT6*A`gNVj&Cjt-Ro8wna*{`S@f@CI8^?xBt zmP_;GR~@oB)F6*pa!UJGBJ{Z{qBgu*b*)ajgmMs*MSrQAC9u~`rmQRRHP}PfW@utZtDPy3w2rDx^E}C(S zS<}2LW*j3)WTrKufnCuJGxY;RQY_v)xnCEMN)^dLE~3I7zv|!-npnIcr$8}cJXcb6`wxJgPm zE?b*>!WQorwE-|`#ePdFW3;Ggb+Si{BWs`w(U-LbFh%qcUaZtlU*+6WvYn7hOy<8* zSNq;D#bzK}^CO`@oPn`w3Yh_lEV`81I;aQOI9_|@Y&%?62#fQK*g>Mruh6-r$pELMdh7Kh~QIQ2Vj z$#psxR+GguNKq;Anvpz!Jr=vVI>_Qm^O#_G=-X;`dkvWXq-J;2a!P|R-71Y8w+u<@ zy7T)$hWCUQM&0fmN)=#z0_GV!^3pAln0k2yUbTaOOOx9Tu5tbbw|#OI3BGaFspix< zbvw77^&$4?)?3;ZY`cXEwu67E>VH6x3Tu@P4vd)o9{d6(0?v`!n;yn;DaXESv%)9> zP^Fmo4!=_%_*|L0g9wk?^FUIA;iXm4`{85_8MnGxY0q!~km^C~kuX5@j-5A36<)-p04J)FyKmE*qC&!`z1Fb5HaP!YoqvA_ zuQzP9G+|-jhSTkjC4XTTzX)ej+RDBk8oV+2(sz3@m{2T>Nm3WOPi1lD`G$%Yb7gJvD{Jp2Yy{o z7PpdTC_%@>gEBrb#kS!#f@KXRN0Yu1ksm7;wV|vxC%eI)}tk z-abS^wCL%(aI1gN4gjM-zEH31Z`DdIo;=L4P5NDUci1-;G42kBx;X{7MS&IasjR>b z|CuN|_8>bx)+K)=SA~X^M}VS&_9Wn}w88TQu0C?u%gHNU1Y#f;vD8X-8-eBsOEEsC zg=dSp*l0^!0a+dqlS;Atu9M%v3{=SktgMWIR+j{K6|D)tC7J&^1;|OVSYhVnhU;u| ziT{hcI$E85$+g{t!ZqymW@~xTty3gNIVH2WSAkMnI7ZY6)37LUtc$fT$#Llp5S1QY z)q}X$l#WIxY>8>!JUOdJ=z#p924ayu@?;7UYy6c4DqUhGXZG-P90UW@0L4wi@3Nvfc7S-0S|dV*aMcSih*3H~D+%v5&) zWw~Z^`+S%$iChu?_W(5LG>D(k{{fmnu$msSmoOlfCVM4nQWblu@W(94L<|4%jye+X z6{;x871u!>y<~BTYWYZ$$zlm#dil0cLb*sjX9pmuQxwDcXo}SS#bw{GuiF|?zQBNVOo>AwxeVHSy_tWd{G263oeGrS>)XLg)TXXdg|N;#R%F( zBE3kKHbe$Xh&@~-xt3P8^BB_I+v>b*yZmhjD9tcZ{Hx0Tva($+)7)i9>uq`NnzFmH zY*%pj*h?OV6n zx2`5+W}=U}XG;Ewl07LHJy8mZHJ2p$WXU~Rvd1{eou8oE3CyMBM&Xpv6Q+AecN3_k zd5fRJ)Te5roQ$PACf7sfFzUi-nAA8uEbb_%awpva+~ltw)S$J?O@%_UBakC;wQHwO z(e?VikS0r8^TTX6t28^5Mv@0m1S6<3Ik(7x$lS%=eObJp3BdoNH~Sg69K;#qjT8Y> z(i|>Q6i$#{Pb0k_EhJs<>Nw}uyNfKoRURjlf9V8Z<$00pIycO=U645tOXM@n_xJF! z?7dunKGx?sey(NjALWb#HL>~ICMK&9-n8tvM}>UkQTO$n#-9!w92CJ(EQ+7rL9dhw z;iwn1Sl8|%XKyt9R~rOR+25M>&4&LO4TWP61YuLZ^Zp@kKlAYC7d!0brkyt1&gr*{ z`_(A=!76Ydt=+jp+(#JEkx1(qVLb@$OKoyxp4-j#bNe9BZD%93|GfUr3OPa&GW1_2VaXBL zy^+ebE>uJ*I!`2;B3T5g{*+}%!?vh^x}J10_5$>g%9P3|TjypN6N|yj)#lYymS9u% z=A+s{Fg?Yf@~tLpw8C$}olC{qh%HYB27VwFTL5S{-Lsrd)_Q6wrjfOn`U>|2iI z9ZDUlJihb*c&V%aOSAd-80U8`Ana!sKb*#Gd49&Rz6JUGbU~V&mS!gmGT1iL^mq2N zND3$(=v?)&nbXpAGQ6>*`M$Hwg%xn;%VkX43^W$>&#C7q`@+%#8H)nv%D6ch zk8*!H7o@zyrPv=R#&$%yukBabw-{%QZ?fe2G<#&gem-Ci%bl$Yt1RwQ1Ki{O0lSwH zK5k`yyPEc?!M?s>9L=xwTXd27RhGU%Xe|^6xKq~zYd&B&4d-XTp{x4P*%&=DICkP&Qvvg73)41K`O#pPZl|Kxo_u0X< zJ#5d)9z@_D-0@*|aPNox!QHpZqfmGeN_?C1n!u~ct2+K2XOwsGSfy{XE{+>lu>OHQ z*Wb5iLqyMc;+GM@;fdcee<>Ob1bGl#I>*_td$ncH6AHkg5u0LD-5mS49j%k`G1z{7 zTevK+tX41s2V@jyQ~YST+u`0RuGab})qE;GX|6gU#f4364)UG#cD8Ov>3z zDRcp87o?k}UcgUO?16Z~#>0K8l6El)h5*c#%2-UldqOc7sqdD&mxqst^XmaMZ9NPi ziag_wo01I_1HyU0ZaUeNs8{)QbvlRRP+csYt!8LE+u%F+zzF(Q@EXO%_yqKB0&hq0N z7`v}u=c<3O@S^!Ym=W_9Bj2*|eU6m>U_)GC+LudotQ0p8QJ$5aHv zu;Ms(Z9O1n_P9$iGBL7$DDF4cNunJM=cv_3 zCY_ctyM*JJyD-a&{kSb(j$}dg>uzj51huD?^p9EiQ&ERNArRIzAdFRL61=wD z9KvWjf_zfM8%&nawD}jx$+=efh+o!};{CoIll^3~w`-mM784JqEQ*wMGsrTaXe-{M z1iN5-kU&udYGq#V5XA`istVGS2{)U?v&M24c#izL3z1V&8o6fa)PaE+gtz*OxMnL7W`=?!@++RS*gKb6a!<$S7ROO& zpdPAAj}jj$PSHD%lh1_+B(KP^fe%v}ivW%ZMezmz}sE8VQKgb=zn##I(DeRpcr?OA1= zgfCVIQ!c3>=mg)xa%w7t$u%S%ruEq%z;J0OB^l^fwfbrTC3FTN|w};6DVo}y_a;Llrhx3 zWC`8V`)l%5OG)`+=1;&R#uF0cFZLv}Y>a~?s$;XqjqRtCC4Pw~)YTE@DyQ6b7`qm^ zExI^hOY(ho)<7C_h=ffOI*XqNjNPfR^c2d8K2VSZr`&zsz7w5t_W>p?ZdS}6%@N@K zdu9gKf*_Fcu&TbE6Pp4Qk=9|3(Ixk+mw0~-uEd$k$wij7;>r0_&;yARLA}i|e(KlU z5JZUc99?rUfCbmw&a!;f=RjwmR<_(Nc~jE;!AwUS90O#zOlB12_PD0Sadk_40k(azljKRw=TXkhw*RD#GT8pTEUdw>${9b(!Y$&dg28-D@=&3s zhR?pFl}=V32oVF?a9`1dt$6(X#s%3tS&~B$<7#ZoTjoDv%kq!V83L5sOn{PmSlSw+55@hd8J2Eu4KO*XIJD00zXRUx9f95XA05Z>OWCu&Da$PMG8M5rhRd=hJMX+eW zoO`SO{%ZcMTIJfByCArWa8^K>us5fZc*4;z69U8zfmN6q5lKiF0JOQ1HP+k97O4+K zA0V0e!{f;=Kerq-sS*)}+Z_{bd5RnHsxrXOEnOU8MJf#pPxYF^jV_S6exvf&%OCe2 zOXK%*XfRKa+w*IFRn0D_`HQF|2-86Vx7+e?zs!50?<{EH4vKiN*O9yY`aXN2FGfIA z!o##sqXnja6$^s>8Vc+O!|f4K!JW9O2&V+iz&v+3Oi0+Pcw7~SM zTs}}8EcaE9Vv(rNynlltsde{zS=9aM^>AT5pr>3|M_WN#>vk8YBEw2DH$b4Ds4#;+ zyFrEp(N@*qr=(;AjmtXB5R{<-TBL5KEefMpVBvfy-MMGfQws*A6LpH zyOO9rmhVMP!5k3Y+VsOVWK@47WodeQM*937EZYuuL?KQ)zZ`JV%7_OY1Yf0w$C6jo zCKj?boMO%6;m)Bf`Ex5%+7)XGNuf5x!%j?2qYVb0Hv~)3(GNsIv`_(fOG@(0>(yqr zVTsN1Q#~MVjpp0e4?#7VUEU{)-{$+sk1yNNwB!dJSw$QOyTkPj`(DG=QLZuf59RhC zFt&&C!28%(P$qX(8!ScSezYl8AOx^&d>N$Q; z_-iv@_O%5JX^@VxQePhDxWA=E4F*jc70=p>BSnE>GP~WBVnr}U3@V(W;wm85JZW=R z7@Fmh?!IO}MzjM9iD#faPlEmy8|_a^{z{2UDc2AJAqHfp*}SD`w{_aZl=m+i<%kA9zFaj7XkTl+#r$<~2$OpH+Fu`yeeJDZQ#VzK<^_ZKCAXpH1LkbOyel1o z@M1NR{vw6pmvMk3!Y~h75qUZhI})Gplx+ZO-q#(Ep(}4VM)@~DJq=KI6F0b|DF6uZ zA`nKBYr3!qz`z;euba)^HgTT*KjO|iPO9o|`1g0ty)$!XW@l#$>@LgpLT^j23rGs^>LGk0z|<#&F)*!7gSFL1Ujc@zHtB1$WeqoZyPg9$}zUKlAvj2WqDpKhtm#dQr+ z4ZP+P5z;pf^|ymJV}>;=wdmuSY5a*hguGOMiLktNxSo=27b?!L9vTcIgi>4}rM4xR z4t|^OspxmkOuOr{&G!nuFA7vm5U-SnvSuAN7JN{$md|KCAIj#sRydwxF3J;%DC6%6 zzg;YU&+5^bEXk9FdGbzy*@Vm}9~79)TIwFLQT~}xt>^Xv_B`QG06(rS&Rnj#Iecru zYwxiSd3#sAeV#3p=L^kquD!n?Lyi{85)deSccI)@Xztb4HlP7h2Z3GDbw47*QpDbD zDrCbb3eA;|3eDC+n4jZp58#6x#Q&S}WLchZZNPV+#>zhck1T0NOXRwy&VN%42aQ8T0Dn7lgmW~U`(M3h`9h_f&?W~VnbuY z(nI}WY46>3u}5qS$vNioOcW!*JZ}9}nz1B{*yngGcC#`TEJ-UkYg&;hsa8-H7|(p~ zYn&N^`Dshdf=Am$Ak4>`@(Y&b0|xD!HjDs1P0k8|)d|%u#tH(*tkpuOtRq(Jlr%Ri z^R7X(C3cr_)tUEaA4`(r?SEjQSvhBcVs*%6=gc8B3`DTLKGxn~G+{s5pU76NARaW{M z(2SPQ$kpkNBn?KP1nYnuZd5NLbbswoSkvk zqhcX=yGjL^=zgvpc$=78aUxh&62HB@yxKmvUW?1GZ*Tvu-&6^~K6{R&Nnp}{r@otV zSxRt^7L>QEO61lOxue9~USepC%rAn}Z7o7#hJXjp>22o~*`M0W>qX{Z)z$%@Oii9T zhbZhlTVkH)y5Q{gvYea**V&uht zK}*})&q|oWSZq*^T~4^GFFgjE9RgUxK_>tV7w{K|XLF zK30267GXbw8iy>YgoML-Nxi89uha%*sw>5m+yM{dMtpQhDc`}|)A?JPK~C-{prTcv3VW<{(?yqWJcHJN&POsG1O*UfbGyOj23+x74pINBF36vOtw zA!e{DyEhRc*&@lLyeXmM-oO@d+ab&&fUZNtwC0o~cpT|(B6vaC|N7|U&jM!yXg z81abl$%Wp!Qe06#UmJlUx4H^ea9JzvafC|UVQW2T6qySzw&h$XlS`zow3n_1?R zz#8SSM%U>|pTjr#xCC(cs7P1%zEY@(FP{|2XJl9A1of&QR-s6~F2ZkJRnhO1n)gfP zfk0LS=7GSjbgZNOsRV$0xWwLHA}dN1&bjtZ+-H6bX#P`>ynOp&zPzBb@0;iI{ZRoi zCCxjV>J+SGdw&pK3gi+*b*SkI_!%@|o^%vK@f{0`1`A`S$u!5`=BPDSRbrGT;))Wq z5{NDV41S_os=``RgO6#QL3BxUWx+dH@^1LuTY1o4aF7_X<9)zfLSUZnEi3~rV+6|T zG{E-+1d;1E_?jYWh(XEvITC=7JjUBz2EZx`)a2@%P7mPA*gPs*;^K>3!eOSv*s(4b zbDm%8v?ec=V_MSTsFZ61#FTVMfuS#D)D4to3be3{QfzPIWiq`9oQ&4;{*uU z9@Q&GpcU8OQc8`pFi;4^^NfGCaYr*zo48HnR?zK&3hj1ar6;4jNWFwFB~`Dtf@n}c087G8}W(!+G=YuuoxLnXt!RGaf>^T*3UWLqe?UUu1b>-%UGJ8jv z{8Xj@*i;E`1R8N?qf=g`1z!GMk=<0mOx;>$?<+&+_C}HaZhI73xD#>W*hBlJMZ}_ zq`QyUfacvId8bG=6){Wi6VP(kd{np`awE#IXcvImQAu9WbhV7n?$MmFcWK zU*%J6Qa-I+6lLFBZIe4-jY^22iN&5F=|Uo77-*KGT*i!l|({rOnt z9eM})dBu@__UMfE8?y+4dW%CK;#z~H~ ztms@f^;gO6FF{8&&4xD*0QL z>Lr&GR0DiCv~O_HIv(i z7RFX7wc=`eqj)dqLs)TAoi}+=fdjk^OQI?*k=%}MABNstweapvw~4w-{94 zYS|Aj)!1iiWL*tCU>5=98|$*0>sVb#p!~ghPqfQy>c|#TG3rmMlPX019;K>hv47NQ zz@E85QY=5=Dxc2%e6*2tV1nODOC z&8f8uYN4c>Q-oVm#!B^Oq-jzH2U{`6RMt^}q)CoE3o;{GmZB$#HVdX~c?9alfqJBiCl)3M zm0~f8zV}#Xa&_n&7s!%&mg}uL`&ym6U8g>FKE067J7ss!L;46)QoG0HT2KMS{;;#m zHRg+Yd9B_7_lxzge?MrMcKdT@X5{8Nh3hZCGVrBpj*J|ydM;I@#+ZtL7q&X*sTz7ayP`LX=$FoVN*<`QE9+cOi8-myuCJ#P zKh$QM>X48()Y+%%P~X;2Z(ctI(ha#oQ<;gnxZXH|R*P?`Mwg?uK7!fYSeJUH- z!K%f<_jXvzy#nv+ZuZVjat{kAk90DRb&^rL?>Da=prfQ|)JZH_y2DW9!fLw7idnpW zVZX+}e&sk84CESbMy`JI9>{T!mEfVF`y`;-fLGRgw|lHoE~{Zx&aIJic$bT7*svQq z%e$TBozAkUGrI*@#4nZ)TwR;$Pe>05~oSZlmT>Z z*qSGJN|v#8^43sP+;u|{+DBdF<1Q8yr+eI1;eezaH0bBmL%KcUB75CWN71BZn4eKZ zD4}$5WL=oN0<}9uS^+b;U9%=KjL8-j-$VQ~R zDQ#KQ!0|^BLmMH82wCU?Bf(_&rN3HmliqSI89t}G?&x_WkE4foyHerb_W*$Pf-SVb5F&ABpZj~xRnMWFtGy_N9W^HhIxm7 zbe1qZI*Z<&)5%n%oI|Q3)>rSkUVLQY7t1WCh$?h#lz5qoNJoFsH^u>uUM`5R~;Swwobl@-kI?Sd+5Tg>LtHN zH2{v@&Mz*h@UhYNowLj*L*%m|I)dPmA#%8kmcMkD>$=O@?uxnZIz=uUE+5v*TlL_G zm|Qws)(+>sOWdzt_W~7X#9+ebr5G0&99+z08k(nOAR* zW^caIU0&^OzO1+3*UNX&FJIT&pNHuV(>-Rc9nOtd0DpGS7d>IL1b1*ugB}ye_5`Nb zDY1;Y*?~at4G&}2K{g<~oQu`Kr`1d|@i?{v04W)2EfwX7xILri7ecnxDgscYR7NoX z6}hIVgsz{lhQ_M`WDLdJME=KZemYOX^JfhP*s6Hd@S4D@11~LIRm>}x$>O$$+q7_- zaPK9tQ_U&9zB;69aNO=DSBrf_;o zi1I^B&a~URFj{3-E-03}3lgik$wR&E@?r$*Ce4Op>`TLB?J2RQK4xR@?55sa=Jqi^ z_;PkHU3%wRvxQCH9`?ua@Q?SF+kRs{7%6x6v5)l$Ug>RL)eGP0q42P*5Buwl-u|+T z+?0`9GK6r*Z5e-6wJyDEbLTwVhmTqn;qUJ2)p|*t{ie71zBj5f1rc8!aX&Tnv4iQ$ z?r2Wz6zt6*nEOV<^y3?YnZe~ii22j)-BguPgb9nM$P&5-h`=P{G60^(g74zG;QLWr zreP!!*k{2-`41s8Zc4&g-r2ul&2Jw=C$5m~ekDxiFW?=GezfTQlR; zwSKA7m*f()kSmqQHf2cbP!u)0aCdBl>QiB;ohmBht7yZtHM@0F*@fMp2I^2zZ<_AL zcollL^`)!op!ctyG8eZ-t`S+%OP1+p^P~6nVxvhNEko}?oJp>8B`Z$Ew*WTLK+(D(1W>ERGmjd4M zzC68zT7(*8UI{tKgV$F2sZtUYGaJCtIs>#xK;Pcgb(pim6!Y2=laO{ zKFDm2zmvcAX6=5hM1H+1Q$H4Tm(Ps&ehvAxBHTyBtmit%quf+G0VznfvdK9xJn_Zx z_XFykEROrG9pc)Ku06!HN!Lc_On09fTzjxGA zM@|oEjw+w5PbSH8x8N7JRFB54)?&u42e<)7m{K|Ycr%9`k=01|;5h#_xHQvzPA1JZo{mzN@y?i6*0aMY^Iy9Z?SXawt)#?sZ|RxSUaNk44|mbKJ9{oO=+iS>QaCFZ8_jZ$tHswm$5%;mC{{J#7G-;z9)#ZJ zer%gUz~=0}?5BGg?Av9fO%@Tc_=Qc@OR*b$i~6npy~p&vl%b#Z|)KJ#HPV=#VPjP z277)({$(OJ_QjWngu{iVX|TC}i2b3rCC&FX-){FU?WPz(4CY6*!;%NgowR5O(Fe=&FsjP2XpKi&<^Ydg$w4X;+m=M=Wp#NCq#Ex+(!!ibIO(UuIMB84~R(b z&a&iIV?Mx6$#)?&xN-+KyCV+|;!c+g%3eN*WaQfh=o2pd zt+{qEE2zoa9&$zcng%zkxIRa0+kM-m1Js8{x+e1FSQ6meKY;nXaG?CP7rtP8FfR;B zzc`31w+*s827!T;A>gU!l*GB+k~3^wxy1B^Ofn&2~md)H5cZPO50G}ta3EK3I4 zWrIQ6R}Yr62LpVs1+rdU9+nJpKsSW0yf8pVb@>o(y>*a$G)RpGazod)oqTU6p0 zbe$&qh;qrFcB8>o^cO|*FZQ)-`^q!WB-Ivi?QeNz^>)!V|{+XaK=d^%1a zH~iw>mkx-*hg>?i&2X+5tRsQ-Y8}pwf%emZ^4Y-F2Y*C{xjhW$+uqay!Wb4^oBIUd zG*Bj)6$4q2F9+MN2itoG7Cy;(`)~D?%aw0P$Y03f7bC$x-QDE?`k8@r_l_ZQ`w->? z6_$Uo$_BG}b@8YA@94b_G5Zn(OB$2xQy2`T*bX7=luQHiWM88Hn5nz^*_->BTj17o zef5vqFX_9-PT$ufMqN>rIw0MgF7gq6KB|aHoBd2D0)n$dEBCS26AK#ejfsg>O_ip@ z)X^E6(=QvxYFvRtn~yH41|aVRFA$op#2xjl8&jAl#JtdLh@X=mFYeKcr%;#`%CG2^ z5G+kEtNduHqk7C^#iN7m@ByP2X?#HVUh1oWLXlo#N~_YS-EC*CM_CCAZ^->q7w1@5 z9^~h$aMLHL)q%*}a-Z$-MaW@^oQNi(iI>DT5PKupsPw`JDGlE|I zJA_YT&rJOf?f(XU&i=_XF&HNHYzfqj+s>Ed0`|N+`69`^RF6RkuGIId#9Slkzes|# zj@L?Jp_uE1_%Cy8`!>!tq`Ef4xn$-KM!?Dr&Rv-api2|fm%#NXO-)#no59zAgzHA-8a_?=j4kbWnb zA9vq_x+im)x!kjjoX2C#ImTaL?D@uC3<(b|FqunrX)iOul}4^GosRHViJ{mJnJ*ub zyu*{%MeO1Ahz*81gPFycDVj%qQ)F~iF;;acD#}{*P%dl35-HnL=#1<+-qNA5g#*pC z13@3_8svor|0S@Q{?Y!uLH;=qynojq`JlJreLh@2#4a3yw>vK5y8C2fGcMUNfGQAb zq-rpzQB^WS=77&ojMOhw_-m2gB`XucaFpA3dsx^ghqz^0+H3kHPUlSicXc`D^9SvbEp zzG6L55FcWC5q^P3h5XnT)b^GellvxbE2-da-vjXyYh3 z+HjH_PE6Ib_?x}#rAi+i>B-LT7srb(v9*`IySM#*2&rSm{4@mRsCI%HDfHJPd;16i zQX$ML>0FGJPmL&XGH|kK3Di@>(+))rIub3on$is9Ir+)FV&eF7buo%^IGT`4&q?-}Ob(#wCaSFlNFr|?kfbI9L{Mm|Y7R&C#AM_*;uO{47pj(W z@ABbl!(jo=)sD~aCFg3#&(SY)hW)$l;w>1`I7V^*+n)aUy$FTV`47klhFL(<$!Kt# zKTPdfQO6((x;{Ec1$N?TednLmBty=ERSmWATbp|Ql&hYzNwS24WZo3>xWE!RO;RLD zr5%G9$s^H`+*aN{IvQCpa2ch88}UxwT3hI7qL!|g4@?R!HUt6^^(4s6A2 z6;JMLT-1cB(AD5)$rghTzuvMG$OzTIq87G1?{!T*!>(g+pAXM&*E`TjeCRc`Mn|+g zylIkfv^sbC%g8yE{3qhUY9|2kk`ijEv+4P+eMY{`R)_K+OYOmSHz`NK_&lh zzo-B0d+5z;jIZk_Yx|jh41?FXZkWAdm|UsC4qXrN0v z&!^%qytYB!8!DUWnmp&8_+q0x^Pir$wwrwAp17(J261JBJg853!(I1Qqdfedu6w8( zn^}9hrI8`rsT9aLKR|cYTOx~})Ce=#)JiASQxRBeGrT^86-0)?ftLmY0CB}&_B{B& zW@-xTVnuPVi;$>GPPk1H6GQAM(gb<%Io6tO z?c?gt4h{hcvTzyOD5G0{8-*}x>;$#+G?7+Pkwwl~DCBxT^ddEKr2L3rE7!plb_QUJ zn+=PQMFe3L-oqmq69~&032+wh=V~5PEc|#rpm_ApX;dx22zK{7BNPlajg*bLS2)i@nn9g)(L4Lez9S!cVj`S-jw3Ye^S;po_9jdEq9d8d(` zdrhO|+kK7rsG~AevpJ7y5A-C=5T-YQpPX)+dq*&$U&)Su=FWlUk>N6LgnTueiyj*; zSB$_Jphh<71q3I{4I_EV`bPWrMtQk065e1!a`ltE!by9;1Dgf`psMOI_BckbD1~BR ze8U0;P>jcqAcm_Lm_3)DRgrr)8$|bp-cUr!{?rV^BEU%SUQpQTC7MUE z`sPhk78L{jUuQdObXK!iEw!m@O--OKJ-p(4H@xC)X0+{$M{pnCBgCh;UN!5TyzfWH zerl8n%uCZqyQ`6b?rby{^_Hc*Wl3)h1Nyd6zG;;28!-=PWZO?e{ib2S&_%=iD~Gw| zxU6xH6ZfrKj4dPNA0vLT7;75ktC6~Uz8x)JbdqP_z5e5lSlvr*Xml8AH1nuy@OVEt zx1U@Q^{h>rmwEjHybEA43ILUkglxOe70qhSlHi0B#2$>6g|*a00kT>M0QN2HWK>%L zLa0d5x&*pZMVi*Gb*W0Dy&~1l9roXMQVqDv*dB@AuNfZvPzXZM%w z{p6=#E#w#d+E|_MW4CEkKskG<8mFtcXf~U&pio^9bgyZsvQx!@(jY_xN+Kv9+cnB< zpSh#$52NJAQMy1(!$%`!>qxrt-EjNka5pb!kJ{tBMEhj@NLf4b7t?#+DEba&hKbGr z74`*J^HB%AKX3dL0W!jf^68jqgJfb^%vcjKyPP z+eWjXD@NP9N6USq*(IuYyLHcuV6z}j@4)_tC3i{!FyOw z@Aj%n>=;P#}QSzAf`R0MliE6p#hZ*XZq~xbWW|@-d565J;j!~9dSIKooTOBJ> z2uCzKFG-%G-}tO~Rj+DPgmuj*!-uOO9CG`Z%w1#PRz9@4H(nkkt4IA}@m7vjVr{aq z43aSFFC|#P^j6XIN#}~5dPQYn+>_qB;~1${GSIQ%plGc;GTdJ_oM~@wpi^q%#M22a!ewX? z@W-;XF^G%QjAxFkm|LIseD8_z_OD~C5{GBT*wtg?-7%DD*PMK+vV@j7ZiCHk(+Lwx zlGV361>z~Mh2(PoIC!O($0`*h)is!b>S*foAJCyCV`SMFu6|a}+0lFsmJbgvvdbJK z<&jNs9A6>o7juC1qE> zh&o_~L!AeBL$r0PcMte!3c_fqN7}Z6RYd$Lk)!=m&^~7@njr1o&x*E}jk7n5lf~mY zXpEhLklG3E9J|LEdpwly_cq_{O-nDCFnBK`kB(*I|B4AS&o|0yH`a3}*uhM2gdZ;8 zLRIy4HkD|Kx+uGf->(}q%j$x5t9QGzqD?~go0nJEDpEux9!pi}vRHa9V#@BBNWu)( zhsn#u(IMt7Z9Smp^jM_sz5To^C#FnQw2T=}v)=O)W7qD@1iU)lzA#>18sCiO*0Nvr zFq+p<7n5`}!foXBBvgFmJ}H(6rkem?exR&{;t21yecT!dSnq%9nYrD35W|t*E zz3RDN-bMs2-@TTg;rk|`;XivKJ$!lsZW#|ukS8XHDbZZmDlvFNuT?(*GhlN)-QCZQWL z;3Yjh#+w0om!9Q&KTlGMML;M?ITDmw;RG$(M8M{$qZoFmOmp0{)|F#P321>UbGG1$BJ0d1_G$do)ekqx$NA6D+B3A(|y zPGaQ1r>{BxwE`i<15e4+5Vstv~nLFvSc47Xx=1Lc{&qC za%0(^7;b-ViwOEbEmo6@ChA;1KUwFJz+%9i3D(cEVL+k{y^>kh*o3$lC&hj}3Fu-` zn0NukhX|kLDHJ(p46Wgm{lDR?O{^+j&l=U3&OEP69Dcg3#0qGs#M%S6ASg~Vy)Kp< zx4ViKY0d+s-ry%G@|Nz$wDXw*8%COMM_MEfiM=@zpHNLPu9e+GGPSuvYP+wxV?PLW zLV53(_Jd#diN7z2d#~>YxWf+k@a5=h@)&m#%a8)@8hOO5)+mh7MZ;<`6BkPd{mg++ zQ6a6XdpFLPN2bVR7w=!nO8qR^4@?3ev{Kly6Bd_A5}Mb4r+!rfD3)f9PhIN8`uM`tQfa&gTRp38&Gb9?=o z&6;C@^m+T*pQgxaKFU_blx-tt#S5WK`wd#f*7JSc5eHj}dzKP^RQO3(+JKbo$1`1dohTux9v^Es!_ z0<>UO=?o5YJf864uIicucv8?Klhy2axus+(QO+6Wjo>Z(EYVOqBUqU&#~CpI8s!o_H@GpusZ$B~leL0h@{3tLdHL z@i4zIb`)Sbp~`vc8U|T{;#s3oU!gS;S#{F>s2i^a`$b1nNm!Xl@vCb2{|k6*GM#n_ z@nh4Y_%ZNOJ3z6_vC8OCd5^dG9JvYAIBjamyZpe|%_G%;?&AI6NqxWrgA@BFD>qik z4VBumP^Zb)r{QSlfXH|Ln#(KY-b$g>Za+|InkwX{a{0Mj-aAz`pDG`mDqBwFHXofT zpPgzis*rgV@~?8)`5%AJ%98yRr!70szgRWg{EJ;y>0j9L`I1Wc+rEmQu0Bx4s{qlA zk>=3>ykpH6(^C(|$cmZpf5QhrUbW~>-NpQop&r&zC|BX!(qO6`B(TaTGc}G`bJMpy zmZw3V;Q5X@*q(Fnh~!(9>d0q}a&|(YG%M62!uUxdDNTQvwPBrkb@8?w2#lA@zg&-( z9%$dMFz;1J)DoX?Ac2tPt^H*ysbbs&eqJGW? z(E@x@Vb85Jb1G$?o0Z_4N@=PzKUL7`j0JNl4P{wjTsxWJ8Z@Q6mW5!0KvA}`2{l_M zS?v|xF{CqMR!A^ywKwGL2&3}y#bJ@N5v3XfZ{oG65G?@=BS!`X7JK z%5w)O1ig5WzeRPM3PGQg`|+?JWRAj?jHI!0$#b9f0RZ6}mN3 z4Y*EepCXG0L^RJc;PZ=Pq&ea_d46FINh@-gKE9POc`~x3(ReT7NuYm7fa3+1Ky{gy zF>Wf!lc6CKs*CcycMs78()g3g0IC1FL$fWg4dQTsjPLwHj^4;?F|Vb(mhm$2P08d& z%?h=zYmabk*NsVawa36x10tBg`~JM=d&>_^oO7r>?@;WWm;&t-oSz854$nE*TzN2f zNkj{EwY&;7TN0*M6gK7}tvg8`|FotlRUE~8LRKGU*Br)nVtk~FcCJgRyjAO&P=g0{ zugngl29qG4F}0>2gxG`sHf^(2eD$G9%x=VP+mB=@Z*E!s;PG8VN%U-|8{`9 ze1Kdw)n9DQw+G9TL*$l2WXYipgH46tzHqQY+Lcqy+Jj`>LGn*`zn2cewR|r&W`RFe z_owSFdz5jxJz9uC1eQvtF$1m8*y{aP}5)pd~@ei>}$p>oeG|VdaW86cIP?i*nGUL0x^m#j(ni|He>%Y zy!F%L&HpGjK_g zV`bxXvuU~^r+N>#-ZSKPs>4!@-TVoFr=bKr!j=D zr`pe_%Cc!F-X@r%xkq0vPRf@D`(GanWNkZak3)I+K_yY$(rHYG5}NrSjbAgsX5oQc^jDFm=_+Sg*itgBQLIrXa?W&}jCqG^ejaXp?^GT1 zk29oNstkx6UbqVi0^`?X3iD-I7KPxQS;Z}OOR>CCEL9w>2cs<0S~;>bhe4a*<{bIU zRJm@dJUUgL&=MwZq9Wq>h7R&}2N^;@7&yVz1gDr;vApH(^lEXif!rJ{l~nU_B8aiO&RiwD_(0X~*w2m{tZ zZ`4;5Tm;RKs8BYv>Zao0*XC^Loz(7M%$T})JC9%<2uI-x7+1I3jNLU&zMfV_uwokv(@<4R zmMRNG^>C(7ZL!^ys1`TE$0i(JjC_ZZ-olx15LP~&q1){Xp1@x8<@)Km-QGXKYL3Db zic8*<5>SLk4VD_Wj-ud9rzeQC1#R0>cRc0V-m7);)Fme5Rpp*tjV?fOaTMAaiEPp5 zp6>UAw_;{28+&|)eQAc|Th)qhoMAW3K<1{56@01$pCtUP3ICIXdN}$FHB^ zx;+!6nDK`NWXtA)hrtX{5khwQy-9eEPiJPon5hdaYiGzhs=V0WQMV@7Ug!=m@C#@8 zx$=;^+0Qe5jnYAfBHP@7m9zNzLnvFx;a!dAkejI$GlTKWxk8c!B^wyIL7MK^EjHzN zQ2CQyRuei>q>u>=3)S%n_hN&DuI_ocZaW8#6C(5j5n0o<)+>8op&DXUMxv24+LWnH z$>qR64^!`EEXSKSOE(FRzjiW3Lgd`T<($Liyu+d2SPy|nLy759TS#Wk%iJ*DoEe~c zM)D~$C0Gf7N#;-G0$cA^ILh6!)&LbPDoiSdWneD*M+;WmCT*ZWW2m7%gfODAcWfx8 z1U-^ZvapCPjXa!4G}J+E6LYIXvSoBHhE-B9%o zYQl`XT#CFqW;5`A9iia+<1A&5Y1`;Ci$w$<=L4E93LNPK3CC1 ze>A;VE7k<14H;sp<=)w{e73n?Tf~J|W}*@zivE|D^}xtr{m zEst`By>XWOFxxa8sZcmaH18&_9Ik zi9Og(n8E#qtrkCEY~;yRX!YLt0oB3{<;j7CZ^d%>6Wcyi_3WSVvf3i11lVLry02~ zlrIzV)hwO&RY&_fB7FtFQW{Sd9UWVIG;V9px}UE;+T494glWrcyK%O>Kbwt@^vL}; z%-SP6_Zd7nH&U{U{4opq_-pQ!#hwlygVp9}`|?pN%MAJZk+NnsBqmz*?Q~V?MJGsR z7gTwj;fa)d18845*_P?H!vF!e2{o9+QWRVSx8~$JT?4gM$VUcST2S034^gVTg)pY8 zU^MG2?1m~7nxq^f;^oI+lL3Jue5!}4vWtWUv%d=T9Ov?hYaNytM9JRXnqxo~D8YGA z*g>_&3_9jlp$bq_DaG*Kjglf>LmZeYz+8l&Lp7<0f~hy^gp!cB#h?SxkR2Y4uv-oo zX@2xE>FqowuEgb`W9+J9cmhF9N9kq??AynfvvY%axn{#L`gzV#cJ5K*jk)A#dzd-Y zzx?Q&M~(_s9hLXUQFhf)_;&R6llzWdSL6Wx~r5Aj0tbJ5T zzVcgE{sma5zHOC|xM~n8p&at2t7B{*zra$5Dq>zizwC634I22%4J}T5xYko+3h^;# z0=t~fw#&f*$mZs;+aHZIN;!!A^CK4|ro*9Fc_&S6BFdXa^%N;pl_vl_j~*irA7g(w-p)M%4e{+Kn7dAp7u?`4 zKf&L497z9~#pV-`AJ29lpFaVYZsJ@(WM7?Nzdj+>4wfmxc~do9fgrLd7(*;s zYa-Qj2FRrcXt{zw<1k?OA}r^8-!sM56;Z3q!rx6vBDhdU=|o(e32i*qEIw8Vh2y^S zP@b?Ap%qcR=}yc-y_*fdr3Z6R;)EVMEZ6(^B=S5bhzmE@6DeVrQ4NF@@q?S=kow&C z_pxTT?N4I%>bSWgE?1)sZa(LRxV*_S{laB?LoCQMDghkG!+BGUx|V&VoSd!_uJtMf zrn!5w8a`mot@GahFSc=BBb2l~dYLcZbnsq3IYv@nT^jmf zmcWR~7hczNx3v;KJ5by9YxHRl~K z^N+_%LF&yu<^T<*XgVIP(>_WSc-1@csJ%H3WaKDPE^B$FN|wkDdRM3)NemJtfN5cr zR>Y-SLp2=PPMj7KE~_X(b~fJ$Kut1JH*fqbhN;>>99H082O->a@Gd?D3{0@&@iLDw z$Qvh{w@(iK(5jUDZ~vrdESZy;{|8Rat~{AiJ-?$Pnws`ldKdv0NJcfOs;Y3kKG6Xe zlY)9I){f)`?VTG{Mzt0Q$`HI*i{4Z@=Ct<={owgoXu+)~`gfe@=K;7e_%6rtM`@pD z6#`Bg?o+JcK5AJ@49x(Jx11WQwAJirrPRzV}A{}fG z_ZHY5s8kF6PLXES;@MUm)rU%;QB|#eQ(m84S!rp5U0I;NQ6K3Lwn~MOQ#%<@P6NEO z^GZP>e+lIC{1|p$b#?svN%GQ3)S8aTC8sF5yZkiSW&cC)LKBHaPSOqCbecb~xkx^e#2o-FG@I;@W@ciL8W3*Wy%IV(>pJ)itsdQ-NLD)WK3q?Sn%hu}1gDuHep zl5RwLjL6qjhN<&frg@u(-n!Er7b&vgT(7Yj8x%aO%vL8Fngs9yEz>E}ZtL#XFcTcf%Gf<@`4q{{ z0ZAUgR+E$ptRwevT$hlUoKUQ41|SSjYPI0CfJM0ujzmR8it*g=eBC_}&K zOu76_d)b+??o8=rdovHOohi%DWHEZ!p0vR2nX>9kCc4%^OC98s1YKv!$}@?ghpL}x z9y=5AfZnJG-r0Wndk*gWJywt(e$RHtFWM0{Kk$}1bb$EG6W_gPtCs^unKcMtD z8aEnpwcivK=^o*}G;A~(o?dvZ#!t(&A}*quHgunjYop_B+Z=cN`RI^;tz@o~ zSj(y0C}{c2jiO(>dYgzN0MP~UqfE`Vn`>84ZdeKOPLO43s&2Y zO_p(32@67eE5U$@ihi*2vw|A-ezNQCa^DD_)hiSRK`hjfJSv4;^W__L@w0GQ|}`AQ8GWE&G$L73wDA$&)n?+qsppFj1ZW;1UF>+ zu*p1R%rb=$Ivo}>)|Oe>U)lvgxD%rSc@w;Y-O>L&iF%I<(%5DADI{3BCs^%L?4U|G zb+Bwv#zp}iBq*ouR7w(|-oS-WVg%3-D6J?V1(U$(<-7`bS<-uDN@^X5`8ZVLD;;q! z6^Oi1YyiocGZiN2tSCC|WUUx56n8KL!~g)f-qkFCT!uYbNz^vV&@nh98g-5YRq7k& zJ;#LPa&0ZO@=#;{)t6^{dC<>1%)WLLtUj5gpeIETZU7moAQ=4H%G`FJ~LB;meo4d`-S>-0vOC1Jr=_zd`p%bDzRf zQeFsh-(;K1#vro^U`>`K2?^m(SHOoX#RJ$0TQ4M0CXfET@G+wb{-Tp1voSyKkW(?eFi8Pcq_gf;tQbD4KFO?n`Z;ZU}9K|c4!HIy}LQ45=k=V`dlWsePa+c~;0?MqA zKCBj?*ld(*Jdywfir>)Hd1&$Ew{lzxeRoc1J29>0rieSX2eVJ)1ii`mVmMFdrR6*G z329N}h6+SY=sLrJJVUE;-BZj>i;6T2OM;>ztYZt?oTR!)@al)lf}!3Mh%qpQVS##y zj_kzd4e>8tZjwDskKW$H62k{dG#7_YJ`xx`K!CCinr?x5#VBGzyt?uI2UiY$>NZS&;DJqq<2I5`+@NT>-i_F7nP71$gv#k4}~n6k%& zG^Q=%>=bE&)lt1!5uAdQNNaI0HFjZ{`o+VW9~kqlWIDiHJa7vSR9;6u6Me*6_&c^f z0>z6C1PZkK5sI>K;|ASyR)n(LO^OA8KAED-4i^HB?sfl0W z-qn)G185f;^PHITL`L(D5@j!YNYWcgjC@>+d^6U3pHvh2WO>@^VBrh62Z}UUJ3fF- z_1?Pkpg6EH3M&k?Nd_s$Yt9OJQhc^O(x2@gX=a-v+w<=8J8 zDncrjZQRkuxQCTGoyig<$|}6nxZp&Ub6RR}C%lDt`kx2LGt2I2kzIDUPO^{gd7*SA zCC%+pf&l&VO`4X3N%ddLhj^8HJ&Rp&5w4xlXlxyxwYCmx{c*F2YI)#AKc}= zOmCAYaJOQ8k@@oVHtm{0-O6MI^;?7Bdezj+DKhGzBCH;$Dq?2j=jEi@0nT{P`gGyb-m7cd+%prO#56>;;S*SA~ z+I<0Rc^o5x*xp1O^+_ z5~~bcHYK)!;tIX^Dv;(W@~Di5W|hDY;%w3Ej0 zo}+fNMvEd7+0l{C0?sN}WB!c2ZH+lY4+r?~?`Zh=W?GoE2ig30` zn(jpBMeP9Z{m93O)qo&V9tJkafGxTig5fB=o-5rUBHf{zYLUYsLl-lKlb-1V?}U#% zFp`#g<8oizxVGTlxN2t%BEFS_;vEqft&jU7tgQ+5mp6c&xVb$px2ewZ_IT_r((1&8 zR;6IJCx7!3vLFFno@=D3_4cyeCMCYSXIdv_R>Q2Qy7qmx%_2Lfc35H|;F zDzq4rL+P|zOc>Fm7Rn`iL7@^?7$F-J$Ml;8VT9gNwx#?=&M+8{=j&iLDIJ#o!TO+b zr6*5=OM&aO`(|bsn1b^qz5qh`qB0NDb7lZ3ho_E}W8_3R1ZpRD zX@`x9t2c_=;<`u@;m}+{opZnn)N%#kEiS=qR}gVwq`oWe{utXWF!_^E7*7iJncz{Y2Xayfzod64rG6>69Dy@U zu8?wNs`#YdC(z;Ac33gGxV@#ji2wfRHvJ3#|idAP-qh+;d zSx@iSOL`+07i7J0>KB4>5PYG#fjO$6ej_k1n_b#5+#}JcbkxXH{h(2&UG+O_#E`Sz z=~djy=T>>%j2NX{daM4 zgm=1T+EOPf6e`1#K$mjl2%3AD-YJiqn`!e$`JJ4>Ml4pGhr@&Zu8+;)czCoz-m|(J zp3#LgbH&&Cu*GVo)KG8soZD9lWSSe#G0LzBCPnl?yearjcKOm2JQCZ5Bi!i~_Xs#| zo9y+J6h0}q6LOhvP8YQk>+DAF1upN29hL{RM6J+qa2}Z)=|Y3_>g~P-T<4BgWUILL*JtF(iz0JKet$mvEW_Bq`q z5cYT_DMKhc9j6KlS#bC=e7Y>vtm$xE(<&SlQfMq^AGpbcK0!5E0QMuW z=|EcFxk`Q5R+4Uv(?KM(Fs!a?t32w6TEKZlYcA}guOX|T^e44RZ{aI}X^*zIDXkPR zF7oB||9r>ytbF$Gcid*>+h5=DCo2nJ3XHBZbO zk%of(Fvq`OEn%YssRwj6)-D#J%K3^t;VjVPx=ZI0%W+L0*9W-^wFN06m8wF+mSJ}K zoh@=!1~*a$yAn4;rO_`6+{OREM+`AF=6(tHOXsJiWnwt6_%=Uvm1xaPe7nre3G`^h zlIk+=1zEy~q*E45gQRLomeVusHIyXBWZOfclDP%>z?n;ZVA|zTbm^4h!XiNhBE`A9 zQpAcE;_RnRf4RJpB@OA0*}PnQ_o+uF6}^)ki}Q+tkTL}z4ug~LAdo~2uPS_{b9t%z zC&f|E^1aiEvq@yV&GD@Fgh^J&Xj6qy6!C%a?UW8|V%Ggn1w^=pWt3HcJQC2xA0mbT z1|1`5@@^3KR=kKXiYLro(ZhZcbgXIjSu-gA zEWT^`O#CPc^UMN6M(EgfsXX7L(I)_mdvR7jcn(F3xPxB9o5Zp=AY4)b^EJs?4-3e@ zcLXJox-j!IjBrnLB`Gr~z~aN=5}DHlbUXm36}|d7{dqCQ6!-H-1PGZ8PRoZb7azK} zFz1;!z{^0)GC#J&x9h|_E2^_uEB-o#{a7CS#OsoNMbq{vv-LE9h`zo)UQ8W_dKoZ%LShS9+`o)dM-X%JL>R_A1t40AGmmhW{gCu-2g}x5Rai7%-79tZ$ zekLG3vM^R))j*B^x1TOZNpaex6OhtO`+{~+j{BqC+?zHn2?WxtL$xzX1m_#o)-d-e zOcbG;cU^-q`1zFRoUwY?nqF(YNvievJs%_we821ZxH(uq6d_bXdpHgOI!H)?{!yW@)C)nqybl-4Rz`!frUL?cUE$XvCUs<*~Zis--w;Yh&AQ=c0q94bD%3KVJ zWH;plAq}Kwc0+F&cFTZ?o#Z}Tk5d|RrBh;LeC&*7>Y;oC$N0?zDzfz=9t?pHh~^s5 zCz3jV(#&34Vec8`RFQ0=Z~&}*$Fm+2wB~~joxa1pj&`z1f)O3$twS>e@^U2Akt^2G zJyN^E$~e*lL?&_)`It63u{kFKKZGo3I`{vl3k^o%UFg}7>ruv`w7}r_|M%sikgHCN zld-@YSOZlH+cikgs_(6YDk4c3k~dXCwIoT1v`L#A6w>D5g)U)10FNBD3p&si1s!Qi z5P~Eu4Jv8Nf@<1|pq92OsHd$7I@8vXZB)WeL3i3NK~LIlL2ud~K?7~C0DE89Cm2B6 zHyA|QA8ak*z+f2d;9vwT*{o@Y2cu~lgNYIk(|(9o;aCR^K$L^zxj>gjW_*r~!`YXB zsI$?chdN>j69J?)Ow)#8mNq9uc$2)an6_Qmk+vkPq%8|;X{*A{v~^*3+Ad*l+8$v) z+CJeR+Wz4%+QH#S+Tr0C+EL-&v}40bv=hSpXeWmU(e57}Mtg8LgLY~-i}vvFXxiD~ z@wCT;C)1t~o=$s8cn0ln!vCiIukeqwe+Zi(pYo@0p1#eI@LciFaYEUw2C&mY?3JpS zRCOnalow_--9@}Wdc4x!pJVl~KlViAupDSzu}rliNmzV}9f3UOn?Lbww9g4MOjq!U zTr6^tm?OwYiT3_58Dje*9ah6{@x~S~gOrhBPwFmJKSq>%v?+@tr{t>V9_n@%b;^nq zftrQv3iMO^)6!2x{`%eZ69a|TJ6Nn4F+(tK)W4(UCZU6;YWBh9OrA_PD+Jl{2=p>M z_E(Qb=E`G$$`>MbvhC4L=B^gn<6Il}4yZ$_?Bvv1Fg2-dQbIv>Ppt>sk8EP_DH^&2 z##M$KacB*L1uy;8_Z!&xz05>A!5or0m@y~)og!bU+L#}3q0mVvg$|XNY885HH;ekl zZsztl3k(!jf$vXB5)`=B<0iWlsD zHRvgDL>WsD4wGDO?=*4`v;|LJYOiBDxWdG*q&w{ty(a8b*wPxauPT>gei6a6duwbf zw`SIJ;b;vkStrGgDX^oDmE{09D;PdBmqF}I`#%grF?EOnL-jx-yt|013hCOGT+OF=7q!L$0F2bXVA+(cW5Qxd`-hxAnyZWf zD&Fw3Z~L~2O|1DvK^%>9%HxSP`-iG0%*he_@L7b6i^pKhNTm!7v6i z#^_?1lm}&bbSDcoQZ6;+y&uHpt5qJ#c$LXxB7J!O>{BthSAIZtz!p zVA7$-1PbGRp{%PW2|hsWS_-dldEPQ8a?DQQ+nWKnMRn8KNgtqVG6(Jw+EUk+xi;Zi z{_X0vixTxcdcYv@7&Sb}(d<1Z^ zBW))LB>D&iIAb=$m&ykj*{rOg{(YFSr`as%dr>S)hslW*Gkdsvv9d&94X*I*WpOvE z3klG-MfT&Q`6-m2L)_sRB(^@C8eqXR@M`3A-_-E~KyU{?^#oqrwp1M$NG#57X}x_h@N zz1PLmZOY^9*0}j9E?>tf8w(nR4RLVoQ^TG3c*6%5vw6<9w;;zk` zCa#|xw#ah-TwXDEop2wXvt9gc3}7x{t$=rNzJfI3th7(5Cs&bFF?F%91Bu&;=okL~ z%ql2_#WRT?LUXXJPbOx_-6;pY*Cpk$B*&Jg{0X3okx~i(bdU{tY-viar^valng}!p zbv&&W_n3s8lQ8oVa(05`RrV=lDkr}A=L({U70ek zrR@4t;)g^t+WRq)_#!T!sMY2lDS21#w>fU#Eo(#bjH;J!Ps{cc{-4G2*EB`_AkVgoZD;RJn){OS zK+>#C%GuEjJO+17x6hIbk}Px!?tMCBTd!wkZHeQ5Ur5_$(oEx1);wy_U!nivw|moe z1(sHukbj2e)llwCNBxpl!^8s#|6LUzfKw&~-&Hn27ynNLHg|>MC})3%r1+hhujXN` zJ~__wG^8JPE9rJSyaL}+Ir+4?QkW{pxFjsBMNynkKA6f9!OGT(<`F1urvywR6WA?* zzlTLrOU|1f7Dxyhfi3hrp~8p;{1TpBB z*UIyPaux~!;E(Vw%~33gof7N~2ERY;@9)5JRl3jw52gK8Y1k)(G+g=zm_EU^IsS?q z`7kXXr|qX{^BLvnRfEq2lP-YBJ4m)720rTsO_}k`FBW9k4?(vb@*6uLnsVQ+1Q+!H z-?@PXB_#Q+&HA}&w9wEB{9m;kF=iU?fGo?$q`McKPwVHDcOGSC!DMKvkf_&&c3mjX zhE)8N=R*5($cTLTM`+&+<&Dt36#^r6lOFA+=n%x~`KF&@G(7keWpiiU^{^Wn+oB8jK5c*_ii52WBW-*k4D!Av;F)m00M4)O}{C^lb4?w%BGT-lS zt+n?)z1^0Z-1LNW2qb`@Ku7{c1&Lxo!2!{kv4P0g<~cKjPy_^wfOJTR0Rn?ajYE-y zUPJ^$L`4#cG#NkyREoUcf9-RxfX;i9o3qb8yRP!BuNRxNQZB0PxGnOt`M6(f^SED% z+hU*N@LEH+Fy?gj{mIGL4GA*Uv_Un~=}5*U`&}E3_fE_Rfm8^X2>}=JjmWO^uzh3N z$2JFua9%>`G#cdXv+~LsaM+{4v~EH=4kb4yFbMJQ{US?MhPt$`Pd+#*IVsvErRN8U zs{dG_6-48pzjRHoQBE%F^*7hU9d*0C?(eMAM0H;iJ#vK$%j})#3O=|v*+c?M{R1gn zX8r=R3u)mnnH3+yJY5Ae^Hrg=uc8;`kgA%UP6WVln5;fH2|ZRlIi^osM*3bDu?%i9 zgY7?~Q9c_y25;Wvj=3~|FL}+%qF+xwI3YQ&k8wod=1|2*5fdBZkZ1I;UO1TO&_NqH z1s6osX~v%1j=+r^wslJA(C zpo!1IW#EGv;do^dUQVKXJs`vyZ1J-JLzWU>-fDJ|<*t=%56WUh7ZzV~$k}-qWOFVU zK}#s7GadzH(ieO+XW?HzdtAG5Jo zA?1}{mof}IilI*4OBrl-aJ}>m-6sxPHWBPm$Eqcvh=CSZYVfNxWOi~JF9xpUSxFsN zyt!35c5}Q|whVo&^--Y`v-K~tInrZI1vZyXf*)hOGr z<`%3UPX}=jkp)-Q40Xd9^mhSkh^>akz~v3tT;fnEmSf{F&!)<|0-W@@h5E{PdmDjm zEPepVB)ZZYxk9~`t}Lb-b!7IX*~Bo(CYB}2bL zpeHErQVYM4s9{L`Y^6|@oT|kdA1`cI#+{2M%o}b(DOozuZ31o{-6r%V50b(fZI77l z%ZXH0LvD7q!G&Mo=Afe}_f#T$4O$Hl62J>{!W#x$f!#VDPc0UW zvH`p#!yMin8j106Q|w4b4Z_PbCmrU21(B|DGa1)a?sIXwbS3zB>A0m~k3rt*ctQhAI<3ifvGdj5pN*yU{!}p-mons%w*t~#= z_>s4VFp`BbNGrnu?_oh1}O#%jlE0z=~`}AqD1i&VRVZb zAqJMT+0#+X$VK3c;8vqSw;u-lWS{o_QI9{qo5tiYE%qA*5UlrKu6~(!zhN23gCe*; z;Qtl|i0)AXDq8WNxO=>Y^*&fwTc5gHGW(QN<;#H}1n55mds$SChe`|+J0*XDzp(KA zmyrT?Kt?FLo$z&2fij);_5_0ud+Qc~E>P$YRaes*mrqF<;pgI5UK)oCrWF&Prk9CQ zV)|myVEV`5tFDniH3e(ZjbJa08jf1e$BZM52Y6(Po9r|_nCD3CG)-{6%>6UHS>_6@ z0g54@y~R{&dNq~RNq?Qnd}3_`l?-wPi;~GN$E}~}Ce^s3rLHkv%&Yxf2JlVEoRx1a3{nqoR2j<@>1I~_kW+u848Uw{PQTnWN@l9A3& z^mb*|#a8R&>DTY@lejZYR2_<{CW*epOpEEmN!WaH>$ACJyr_cBJJyY2! zxq{jKW#r}tAwrA%W?7ofFEw(CDQM+C1ld#?3uptA3;YqrHZo^q_T`0Es-tG)N!C*$ zyrR}m)v`L|5YehkW@1zr5J6Q2>Y2nflf!1bbDGSpo)3vrVVk0zW$7W1gBB1|TWWhu z=0lp-($wU1G7LhYkf3N~%`Q&u`x>oxc=AxuFy3#+RqTX{ZRRI4)QvC$yGv-3!{#Ko zM}Kyno{{&vbUV=e5Mo7HdbmMrlO}wLe)IO1W?;gYEVuMG3l3P%OXId_MkL(J76!hDyc| z?Cr#|Uj|{y4@GXUCs}7e6{&@(8{-1*vf>arusrX^ACk%Nt|y%qyu2CXoIs}DN$c@B z0fx)4G%ymZNE$soIjM#nk~ZJugz|3#l3+Xi-2xZ_)#DpH#1Rkx-_kgVIoMUHigL{bPSYgt1h)_B&!h-Wn=+uRitSVKw_~yv2NGZ>>%+M@;Yy$)W9~@wb(Px+|NYiMl07I=6J%iMGbz4`5&^}tW7s_F8CVdQoVjFLvNb^CD zV5>biDln2}8B`7y)Urv3n07r14O_kphYyz3vaszN$VE#BueHiZeTtzm_`ogvP_}3G zA=`8J z;bqdb;dTGk&aX(p^vDn?yxOYN&OsZlDOm-lBA;S<0BIo-;BLigKgo>wXhl3kZOZ(yv(3;GUdtKqN<$#2>|Zi^!(PTQk&J>gdii<%`{? z+}3!u;odAuNb0spFCaCX1PrCh_Hfq7j(L@FKl=KO0-g^9k-0*#|E$zv&(o z4uK?|_R#$MgoVIG>2p4;<{~;c!o?3Ol^?~v}e z{SJP|Rh$^hV$BVuhSH>=IHRH4jvaln{;Bi_G8X{s8rJB`8 zV+aq=(8@`XByFUmuUfiY$F~u|(R6RIQ3~xz8%1`+vRJEHuqsXXXQYc7zkF*FsFSFR zUS!YF_Wc&r-X7>-@SXd8TU@}4J;3$1d;JN$_MMKM0GXj!>g~GDujs`UlZin@q&fmX zH9nFjVIh_YCqj6t#~xDrZ66e;;&u}al1C$SKVmhc=U9u95KFl6NdRUk`7aWO1(GEo zuVcMnR;9h+4#tY*f{0mimuK#Djp1n-oWvDO2p~0yX;ZizE+r@3)DVCjTjZ>_8s%@TJ2Swmv z{H4$ZcX7+FY&Ada{}E){a;Mh98&$k1Xr?_~bx&0t+b1}}aHz=@Ire7PHnX2MaSFb# znLX#z*Q--px@d$u{vKmW;0*<@2SKS)?PbEB>5$SgQgIeOK>-fbT7lk(+zA}|z-|q= zinO{pecXVCBPMSx$L+cNsL(%pK%e?gu{8Fq9{YqH>&R|zee5}Xe$yF?_vCS8I8!^- zat3#Ne8%*+WuNidEN*AZ!<*3oHc@t0-4CiM7%Y5&R7*|!v|9v;eWev(WPjIi_sgcN ze=Tl7M`A~iI2=NxgrfJi(^rH2v}Omof3^P;KFSoI$L03(CYFZtTF3+Ew%n?>Kj11P zTd;BkgtVQV8Xs{=&5rEeI17aOeAEA~>7GIRDZu^fo5`=sV#>nx9-V#KsoiLm%ZwRV z+epuEOhQ@gE^DNhHU`lPxnDKHFLmsJMtGt@ZJ+l+{=0Gwb1X&P5_ceTk`cn#>$6Ip z_LKRbr;I;wE3b}{mS0gZm&%{|2TY~Ri~SM;fKsGq#aWl@IGT}#NF=UNuQys8Ya{Sg za~6!N)o@0$p7H%@-}F)Gz<3Njn;}&bv>xzWu>DeEWdPPb$( zLM#EEc%hPeL&W_r4rEJ>Nyaze7a+F=x5nHB8jYH7reh$>lfVpojRMg?)mVzsG|J&^ zlWiSwOkpmYJiMPLx43^xAPBG_{S54^FdLLGEjmw3=l4`3&=UQTC-{KdEPt6*2Axt!Ahud?Vy4P7hH&lv#_32)LSK2W#cO6E3WYz6)%b6Fe}Mahxgr!fYJ~RQS*Iodu$c3z$NbaEG% zEGRk~^pNuni!PsIQdTGgmkF1(i8kpNA3+*>cu@iVLMea=q7~U9lnQDTHil7u?Yt-H zw#NHC(5z)Hm%qm?ZlB~YJ{t!o19zY$%BqLk(4+9t2v8YVD&Ahk@}O`HF-8oIhcgLV zGCdNO`c%G4uqA;j-c!SH;F6aUG)Dq!5*S-@Eo|!`TV}X z5N^$USHZWMdW{LBL<(9UfPNvB?l4lK4u{E@0Ho9 z{!epX9#M~*z zrUKXB$->(#$JEUg_G1)%?#`OsUh{X?Jil0)?sRk(rPInet4^cktCNp5V%RE2W2KRP z1V{l+iBG=}6i{JA%gn!^R0FLxBJJY_UM6n{qbd$S@Y^D(KnvAW?siDw9nNj#@8jwd zz;8x7ceD4=PFxuL>Q;76%e^PtlCc$zC?5Kshzd!v1=jXyHWSP`)18G>4c3@Sa5+~h zsOkq0pKqY_WO=d9v8+bjAKX2?nAn=z(}Rm#QS@5h$0zo6OUO(7!&|hVZfV zSTvR_BYv2`X_8X`9K?5LJZ_2`lt(S$HeeL%^Q zkmaU1WU->DUyHbLxkcm{-e5H?`Djn0*WH8)-P&KMe!iAm0+S*#!NW^qz{ILkAlm}9 z#qn*a80RC2#h&SK13)o(O&9Ia}&Id5u9R4WX(L>v09wlNH zD6b2DZk;SyoIIku{rVH~ac)wWC_i3iwuEGX%-1J?pXSC2;CH4A`!%{t))VTvq)zO@ z>(-w)i2I+bJ5PgnWA zmEKnQZQ}NTxZN#om#&1@SW-e$;m}aj`PhfbdrpM$oX0Vc?VhEltp&gRwAoYE6VK;+ zl0&rjc%39Hc+Yn7U=xw<_0+Er6MmxB?qey&M@9Q-W+tW|vYRt^TV}U%4hDq1Rye>9 zAUD_n?m&;(oxS-uC`0Mt9{>xC;1Jl{YK_- z6*^5iWVsCKW#MKRuOciDFC4q7Zr9eeD6)PmXXnRsF~lp=1QN%Da~uAOhTjvny=>Nm zP`cH-+kD0r{T`^8M&MfQQAuR?_;4@89rf%0)j+rN@Afr`Of1rH7SQa`s3G?R^HTlH_dqx!=*qP>Z-k8H0JI!CTG#}5SkYg@q0TNJ~y%H~H%EDYAbV>ww& zfWcPnE&W!5knduxJ}UA~iR8Wk-89&7VsBE3N#`l11Jb zCPTienyw7yc`J1Q{s3{q`#}~Zd{{cV2IR%sW$+t7GJPm5utjRUwpHY3U_G^^qL`O4 zZFZh4tq=|tv>qq-0CwP!7#R%d@cjiC#hL*r!olK9j-WhTu5wIkcR-rSvz9Hko$W_v z8;o-pp6v426YM!Rr1_5!aH7D0zMnseOcbk@RwA6R{`5}L=H=yPvbciNl(eP#1iVco zF2a)?XKqcyzDG!Z!_IBk+D3rofkhH>z$Zh}soKp)lnZE+#&Cm8S+6#IHg41PEbql~ z;xj%_;(o`_0RDY}!Y8f%n(|?D1h9zPY9Cm-Z?L#(AKjIIH1whRNM1wHjhv}>jdPeW ziG+Pn2$OH(&Si&nzm|w8rxMPdzTe^oV{ga?^nehX^Ng7xo$ZUNijGV zqISpXt$xCSCigLEQ($%Id+bt)ihs-pXJ;`A9{t;WIBR|!Wp#uT213?%AX)|=unCX@ zi?8`ExrtH=Fn4~7^5&# zH|@|K7&84GS>7IzB0q30b$ z435ZsMx50K+dU$@(t5a$g=I9b3%Z?dCr84;aoeH6A0>o|@ahR1&fVY z-Ip27_N8N`I^}11ABZV#o6K&FSxvj0wb+(QJU75Pg7q`IDi7C66Y<075OSAy&wKk( z+`mEZAOUHFNp{`0^SV--(;nHk8t$dsy_{1E>3p)|J6oOEIhh?R?HD-tv0PM3>NjpU zM?NWJZ@{j7I1F5N3Mm*m>5m(XVcYHI>KaU@5<1Go5!>=zZK4*h!AZl1;wch6MmX;V zD$4qW$uoz+OUbpv5WI&WsA&im&|Lwt)Vl)ezT_rkUJ(h+s{YkbW8!a8L4c75z=o<_ zg(A$Zt-4n`4xkQ#X1acTZnxxib8dIQTtkwnK^~dd?Gbxx#q4i|AUYXlB+d|z7QH}! z!vOFp_^2aor9{!~<93Py_E~dpou#SFQc9C)S7RQZx6W2O&RHMFeZA2boxB2;VL_y5 zTYg;%o20e+wVZ#9nL8=9hvWWZ!Yp4#aEt%6>;yq-p*FNI9_J?^6s7uIn3~wiE!^AIk2SWf9wpuc zhcc<;)#%ioL?%amcAs-&m|ikdk=vP*C9Fw5wJ=cd?QaF3sQ^$K0f=}s1To*==o^58 zDG}sAy(AZnkK&FT?nbzUg(>V!?Il?zW*x4zp26fV~MX{+q0Vmi~6!Xx>|{l|^MW1ZxfYBowWjhws06jbL3*koWd zH_%_Zv4nda_~CH$koLp8i!D}HnqT0mKcdEnvb47s2#)kWtoW-dI0C+fE&Lt43?#+* z8*{r$%QvQR0u+9dYu3&)e^JTEW7A!^WEOV!m+bo`H`$iU`_f>i9x;2Era`P8;%KOFF9dmK0{?&SJ}aFHMzgp7IZ{wr4-i-%R5dAr2)IcueDVi zW6?EwMvhNRmemjjAeZW%95AsPcEY6c3wQ)-o1av+=>?OPMuXp{aYE!6{wk@B{ zX$0vB!!E%43=~9FR1(clmG>PO+aCvms%SS@7zhAumSlqZG$yVPwGa|*OM4ne7=&3T z!$~{lDej(~7;RBykmlC=rpdy2!yr0LC*rpQJ^!gj^khkHlju9?0h(4N6OhS_c!JW# znthHe7xrw~9RI?TQ7O#aEo7k>ydFGa|LdXYpJ`RvEtfHrzY6PNl%&Joi)J# zVq|X?+Rk#V!7Dwk&GE^)I>Sjiy_#KCvrB7sMa^Gcd%I9|h<#00G~DXCEwSB+`zG50 zqc71axO-~uS0J+32`t$s)e(GuQ|V6nCDQRa`(wTF3I#Y-z>>HZfPlN1A}CUfva%(( z;$B{{mn-&0O+fTx(rwr6oLF6Ri5*(CFz+9Ll4 z0_D&Kl2IC_l`huvE9>@4=T@|goplA-LK<{8*4<5Ye`DRI+o_a5t=llhT;9rdv5T_w zo(yFb=5M!+IFiDLuz~wq%&{T1gg^Zg4vdILB7r=@5Hk4?JB)7y(b~Aq@YkLpb3lyH z$MtFe#)}M+c$F0^p0cFr_#$2HY^k|=v`Mw`+Eh?iENqM*Jn_JJTqm88V-u21Eqn}s z>6dHvMq>n_;e*k!nH0@H4Df$!_+=m?6a$CVyKsJAE93!Q6>4>K9g;F~QHJ4yfI_S|;;!Zzq>J~{I~Y5Rw76J62{e`=?fw(INK_T7f)DgI&?v_^>OQ5|=C z6ZlxuwC^=X;N#dH`v#IFqz%#IK-j4dI8^6>58A|yEp_s-j{jb#P7!YW^9iPM_Mc7B z;+L_QK!0hj1Y3ul?3R$er0|(-!$DBv9D3ZZoScg3!%Gy;gqe(# z{6o^L-t{R1(u#2|mbo(97r*<)M+oyn^)Y?X)jqmolL@OeJtYsQ3kx4do=o-UDO*ULntb4hHOg^ zO-JNrq(01(n#SrZM;**a?#zDt1sCp@oItc1GbIZ+##xcv>>jC%YyO4~zAi`rC3>zu z1j7{;PQ)32w6^J4Qgbg3*b?MFo!NBhF>phWJ$ykQdfx?n=I#Wk#Cm*#UV>r(TM$MD zZht&=7J+2;6T8~=1-Az9H6O~&{UQ3k!`d6}17iq{4Qz3KshcejYR zwi35ay5WVLxGJECe2WQUG{L=Rx%vnO7)UnsW0(u!$G!Gqul=Fd-Q8*ellS<674GJ6g!0{y7LR9zNfKjaWRj~RYB@& z%qE8-<1&yu+aD*JBEfY0{ZY78>vbos#-odsEP4>veC$VWvTQ&Lm=XASzdhJ*$Mtk^ z)24oW@bQ`B-{IDd@KQVMNPHVR3P_@r zf~vGts>7Hx1LG$o)opJHO`rTc_S<~8rGvYmdA9R1a}|k&b0gt!yuZ*E&KHY{DCky2a>>Gk>7tDdzAyY zZg>BF9aSwI259a)M7l7B#1mVL1ks2U;EqasR*G9~DY@EV(uQxcJ^WrExROoIH?t3= z@3T4ie5OuLp3ZJ4*-uOUWbcnqDqa7Ev%LVR?@1xzFY@6&DlO)?1D$L6dCWcv<|$~F z{XRo z7Z2}@_<&%agdh9cSgCKP7Ax^x1XD!=0$GpK$1Od_`(-YC&rl4)Jkc=T=|t(j>gKuG zIMZ?>FCZFb7b+t63Ayez@_HHJf^0tsq+Zc4#O?=<3{uv&!m#2ItW4SCQMH*(^zc{n z;H1Lze43j%5=Eo1QR<6V=BM-0=|uPgeamd7sQmatGUm9h+1ND<;pjXRG=p(=TI}^E zmsKP;(6&QM8s)ouScfbvwT1stX4kRr&vo`Se>PSZiR%8;3L*)HZ)Fj)-{+JsL^>Q` zJn~d4yG5n|z66B2O1}HJeBqn{p26R@1sV4}y)>#E8(}n}0G4ucg@WM@%hik{%eb$G z8%UFq>YXoQQ{|ybOUGAP&qg!=;XSy+FA4Xif=gPqnxBUW1vFq$9W4y?wPkjDmS zoSqz2DnshxBAid-|KR-9gs~v?f82kV7#DY2WW)iVGVDzoW!Rsk_wuhPk=OTQ7}cLp zgtDx(!ZPkdcaX+~&zwi6c8)4`AJZbJspxEC!6eoT=Pkyj}$Ym@zhT+vtCXOcT` z*gze?>X3MmBSE}<4=+%)UmAq{w0Z`^I2>A}xQ6KVKx|jz*?m$CEW+%wpvt&KOW(Q7 z<_pxLGI$s5k@seqwX_-3CLE$$bHPA094MUTfQ&T41ThpqMn~9;L63k)qD=5#yxPU1 zsa(>zA_r6>B*iNV$f}KiZwV7VOO>bfCHL2|adtiOoB3yQ*3P}yYk?4U=dhD=p8B+W!GEz3&!&R{C3Ziw0u>M7S0e3!K$w>oA8VWt>*n0I~`%RVQ zyP;;+#D_0$pn!h3Z~j%`gIg7qLpF455rrnw)y+|{R}eh_O0$WI$77uhHRkz zL7cS+!6Au)zpidSBFe1p*lM{5ww=G0AFWgpCXyj5mvF=vXW!8-hTn)@gIIoZ@f{2zudnY_lo8S<-Becz*)N3*uOBpRZ zIBh+$&}u7PXPBEq+~Vj+HyE}>ZhwZJZ9BQBm5p|Xw(M!eO#iN_?`uMOZLn*CUtb1v z-H|QSzn9kl7WWDmpFdelODMu{6jScG!UNfPa*K7bA_ya;g8&&wLulV&m0>h{aNSyM z6<%%oYY90jhuqyF=qL9Wtl@huY5}wj`|tR+D_VXQZ<3S)iqTu-BP_F(9$OuGl9r&` zzmgo^&L)sQdt-dklZ+K$jPkgymOtL|<0GTQ0P!q#i)Seo1(*1Uh94-Zy}e(hsMos2 zIjY5jI;7aPfU#X?)NIICG{B`WTXztJQW_i)dKQYY7uUOBO zHo_SlYyKxtS*ygY=gL>K@9skVYL&YzoMYpeykwgkMJ^evQJj)|aXHLJ`Bm>;^R$|k z1skP`17KPPtw#}#ujtCZJ@ZFze=5eU#&t0$9?zw>Uw2qQv0uqP2%m&|IBDcg1CU*< zit%kYL&7(i0EcJhA^0AXF~R+-pWwFe9rP&fWTozZZWbI^FNcP#mw9?z;PSWZ(=SW@ z;*P(afTHZ>wtopT3h;eYZr=o)(d}Q?ahG@O3Pf6HOz=;2!dLzCZqxvIKLLV*vs%lQ z;slN}H;I7eQRxK9YI*oR6hp4pxF@o_aG7LAa8$zd!i1we8Gzw}3X`N#YNlp4+*k?y zu}Pv6E#rkibH?;c7-6d>`_25+3W&+$h)~(gO|{J`yKF}`lwl*Dho5g1O@qy z$z_px5p$UXr4!O>NU@rNNqQ1;D4~DDPwnl`9i`3{&z1bww-T%AT37$GN+$Ltcf*tL z$cno*bJvg>5S&Q7P(<*G&=BqlEgj)9rB##Lv))_8fK1sKyWV%Hl`iAZlRONbVp6te zX)E{#S!sn0gKZ{4QN!+w|C1IUGvKBvTn1)x4qeTP0b~|Zalr4nQqaw2?v;IV5o`z z9Y?6pjt)%@ehe|-BkYW;mb{0`31ZSD!y%7iLsNK;+{4DDlgr6PZ)+mlod5JjZ=3v_ zxGitQTWgJNOS*~^?90h9T%Jvedg3X}J=ytL#YD2(B(}Tw#f&Q|2(}H*IGf3bcxAuP zc2JogkV(1JQd$>3#}Rgkw<`=3w#Kidsex78I@7Y>_xfz&m7+DQ6A(UtlM$5h6^Xu{E4-&k=}P%n%h`eWL*rC z-6+2hpKT0jP#URFFt_YWUgqGYD&;5$3lazQ0KGVh91Fp)04r&E8?dS*{0@d$G~I~X zdqg?=y>aW~cD!N^*H|Nt?0m*?oJNgL;N$uI;p7FTRz4Ddz$xC&qccV_1raS6EhGSq z1|JX|f9&YDw$R*XEB?QQ07>IDH%1=3y5Tg2wiB4}+Q>cTn-RgxfpJ5h>h2?hUM2F6b* z+!N-bbQ;GHF{dfMA~;a^^uvO_!VP?@LrM%nCl11P$qG%}M_|H)xhb}I6go6Y61wyg z;Prtp=z5Dn!MhgfqV0Ijf)?sGkBV=NRRGG~8Adb0OWH8mhTtpq1 zH?@{ko-SXOeE`3ZW!bymz~_C9eepsZ7-Ogffpr&J=>nT@p)z^Zl3$fce$9i^?`C#& z1{Roa^H8$39luY;SqFUpA#gP;7(LtCJJ29>FgnPGn6^+e1bCCLvEWYg?_ZZZF&yLY zm)!WRD2EsF@O&wKuB2rZv5FQ?S;kAOVom>@l7CVe-ZjB-l^MYf3|K#0{gx<|IK{ZR zRVW{oMM}tVkBGo{Gp;C9cgzPETdCnU*|rsiDYrio>q z+L7kx*ld!Af+R9qY%43air@^=y1rKqQScZVs9sjA!yf0dx!LC-K#OfQ<1scGMQ3ny zX7-QWqfIPY9?kpKESow-!ZZ7VEQL2F8<8K|UUa94^R!&j6kdrEm9DRHXAvDN0 zR9w?dP{k7EL6$aAOVL+w3)lyO#j(8AoA>BWv_#Q?CoZ5K7LEcJ>v0j~O!k80&MNve z4Kstx;^5KJWKxd4>g#}&YU3ap0xhd-!b*c&VFApO*Qz-xVW=uk$2+YK4jzJA0Ch93 z;0@uH?Rb6@+&DTpKHB7Yhg1|VIR6}Xie^irhN4?{mkFSbZaGb^Q9$A*+fTeo0gr?_ zMKs$3Y=*t_eVTlGNZUZNs+QfBhMUvumek#t`a4p8JN}RA0Lbf35@|4J?!qiTKWpA% z;YK+U-(~6b;6hqDkq%by8qJYrBhGQ|)5Y`%;wo|?>Z8D4=VlhC=y4WxfWx2*C zBo86>V`SjNKndeCqR*PkSC#$|H=0$Y-jyX0>oH%ngY1j$pa!4x!<6>=Fkp4ip2_nh z!t7yD+*h`rmEHYH=I$IxM;|IvdH0cE_oRj%;aiK|kO+ou2DlR8} zl3X9FC;aorMdnb^&~h+h=S+YvWOO zp$bcap0f*VPTUU>G}3)e=OEac#BmJ*IVRZ;i4OuE)JDbmUD9w@HXIRBWUm$c-dwf& zluh>A^OPt1*F~!>Rcn7t@ybM>w(|cOm!cBr{fQz z9ausl$=R1+BEElKc$W%!@E6c3Pe%DKWoAG6SnRCabz0rX)pABXI}hWN)}dm~u?@Le z*G^3lmq4bLpIiC>hz&cN8{7fi%1*Y#zc0QAO`j4)`lBr%sU9ZS)yw|P{|h;qX*iZk zDjES>>e06hMhy-L$?{X~Sfhu%_BHLa?O$!VafL!ag0ADBOK12u>i+rKTL9|(7<0E( z*w%fL7DM%M*H~_)$>nM-G$VLT@W;aUkLnU;B$mifSh_9D5CcQ)(ONzbC0cn|Rr&C( zB&{_BP~3JzIkV;*zOhNS<%hi+&g{Ow$|v+~jb^!m)`(}xpRedH4lRsZL>~KYgto7- zX+Xsk@oUM&tqQz5vBQ_k%ytQHNOduz4e+ive?v^M$8^E@@W9E?(F#2KIC7r^5!Gol zdW!fXVF34u$cBeEfHN>ugt!!79OfGU&*~AbU=0TV<_pYqF;?qB3xdvvTG{U#{zaCY z-QMuCSWLs5z{~h!B2H+HVL-rjHJU)wJ_fq>lZLyi;hu8g8RyB%^elXv@Ju7l zkGg}=Q3y4s`8|Gy5P|IDpA}|9*hAn0GQ_u`*JY^5aqM9U7(x7a3Ad^uuyBtS|M->Y z+tyIv=A<@E3`Cn7hV#mJo8X{j@=}H_arp)}v>x~9H8wk0LnN2b5vKC|yk@z`l}t0a z1$;n#QPfSe3ii`Y6nB_M>2$vqWGUUZlU&i}R%yn_Mo#HmwbT>91!^5&vZa`kfdmb4 zuFV8(qQcl8($H*xNJa}) zK>|OlQK%5>Kb=5yDaP~YMY>?9Yk@9dZeL@i$E@?HS!~+-9y3sOmYm%Io4npu_V6sd zp=H;%>?U{_EK6`3j01Fy^gNY-7wzaKfcxW?zqrM0f0~!_Rl=borypkTW5^1<;?sr8 zm6ywOF*>B>7!)nCgZiStnBr!10xQz~*$%2)tAvCuZa@AVOF15!#%qoH;wiXkw3c?D3BK zt+u4MM(%ghv`Xc)u4>+5(f}mPSn1d8tRBCr2iMZlB|V^q3{IILu0=#C&;_>1dorCt zDB$He@UZf}&1XusuxVMZ3{hFwmLyxnJOSnKPFnDN5T3M@iyddiDu~6fQss|FJD)sI zO7(4(>L}tBl4yu;5|H7#O_I8od$RBKyk#iPM7jcEFX(Y=dw2nAEr8=kd3JB!nB;e% z6=M;OqGCA%pLJB>D#8s{m6*nY#h5Cno`{S58taLS!niL+Q_n$Tlha8tEWWXXlPPS$ z$?aJ89w<(M*`nUWS~52?Ai@4SPhZIWcnI>4n@auwcEAOGcUiZztj2X&$vV7^eDgQi z9)%RJPjZW#K3JiQNeQi`)Wg#ImfWOq6FH0za5f&j2Ld;ksYAkynji1S@`BNLNfp7d zxK`~(2YQpkkz_!sT6l7t!#@IHu+3`7-}J$RwxGku?mDpaDz2zsPo6%eH;tUm*A zm3#&%*3(hOH5AVi$Z@v{t`{S(#O^9@BMZ$gepf*e6T8Uois2L#rW|_M6qFb)AY{vS z_c#H$G!+90+!#A$W|7H^ZksZcqvJSLW~+Xb8*d-ia}8Gv5Y-gQc^2+Ij4ZSR@Zn!f z(G%57>ktAd_yu5HroBs5-31<sA9 zF^A#dd(?Rg7`fFsL36>#|naLVaD4ELI$o5%yBs2g|fQzNNToFi40PjJnynt4RY)?E?nze+}4wE*$IU9 zaAV!oTaH@b-|*kc-BJ2JIwxpYUTHNqYxwzNp?^p!(Gx=zpqJUlivbTK&&RYiVPAi- zbKiH>i`^E=GUGe?d2APiBS{`u+|w27e%S z)?geWo+*xf3u>uqscfNFYfQwB6pk^WOpIT?sq=(w?AWHx$2XEM{(1Mgr@DzD%1>M4 zDRWU5SBcwJ+>VReX57}FwxOqN@zdtwm5txU{(DHNGOSX=f^DuzBFq}2WWrZddweQ!EbJhzMQ8!Vgf9!e=LGpvUZ=^q0KQF_-( zE2KxGH;gJ_do6F;-N@2iy&~ZAmF4mF=yp%+GOF z+9N4R0E);uVy%RfG;q$9-yR_wj6l6U1m9Zxp&aP`3C|a<07y9{rgJDcUYcach{x*? z7fS>&4%ZmSMbr=tKTsvn@H-q)V7E`AvMi+QQ$lu+3&q{z{CzGQQwD!;v3>oi_#tZkR?ZTCWzCQ0tajgNuE~1Y{1Z00L%m-c&5_nqf33E?c{Ry)t zExX25u5}g4NYA%Dd#`o;<~}lmbFN(MU*qgr=dW=*sgYddOW$z+0pOgffN_TPPp(1U z;Xj#w$!wNi?ff~;?+A5w_ON2 z4y&Zg1F;-jd6w)f<@dOy_6=LE#dWG{oG2Yg*SHq!bi}A6nM2jO=_Kgka4AgjgK*vN zXE!c7Ml);RkH)ak0)#g>5k${&9qu5*E4|WU;7h&jOol5(8kWm4#o!U+3C59c#|9Km zkr&F>BQ}4vY*dn42#9cBzEf*K=sJhFSt$uc0*YP1k?1zO2v=f}-l?&`b5)67m~P`W zDc4bGhZV5aRV$R?^=n-?-=#;n{6AX%PF!2vNEv=3eE{3O%MLHO-+;eJVb~KG`0OyV z)vj ziX{0^_ymgVD6}u8QrT`yGt?7L17Tb+iyXt~GeRd`(QsUN5veQauXz~>w_v{{w)ADA zGEf1lB3{Yj8XqS4iD61UIh{h$h_(VBR@vZ6X_|w=EWcW6rR2QHNrW1jjpQ>WSNj}| z{E|O7e1$fsjVXEs_~IT+%pB25$ zzBq&LiQAxT3QxLmmn&13zueWYaB19E3WIp0aRpTsv|o?g0iF!w9=Ugkrc{-jZ1wbm z0GQcrseLoE2_Tb`L;d$YeSw5ESbZ}J(sAu*3`dP02o2w#qUp`?wIWQ5V&=c`m_R3h zUR>5rcK}1w+%z|dv1C{N;qZ_i)$KT5;nABROK3pRypxOxlD_wP+ zn?>f4BU5)6Odtf}R2AKP4unj#bx99oBuT5kKeIDeSdnqN@N1_ z89BcKEyy9yMB%)_U18Ss4;nqAvY z1V}#g34kW_5%HFzFp#JK@FkXlv;yF@ie0+o%VgJ;SBKjQ+nk5HMNM7KrHLpxcwhG)fIbDk`&JdJi*G|qRP2KQAX_%YK(pskER5{~5 z*-h~>m`u*5w|$MhJh?c{uWh?4+kRa;T-kQ(+S%=W*|c;z&eYdRZE{5$9SU!&;>?{A zPRpzoLrTeB2r7$86Nt(PLcv(2Ks2u^hJ;s+O0G?dA?c2Tkx*eVBhxe^o#^YpF+FZV zF)L`+l`zxNAEo8%XhsA(%?Wxwjgh9KlU&F1b*^9`cUZ~dJQxQ(m+kC!RKVG|6EzXU<(9+lhDVY93=l2$1%yeoh9?|ED%odEKT?} zal-u@f-zF~8gRZJF^srSS&pdW(x3U#{l0XMv-|j^)KJpKc6+-$%M7|*!toz6=?G3h- zXfHa6_;ilS(QaGG1JYM{Q+#(^5iI|HhE1H6C)L_zIkr|%X8GKZokkr`xqkW$dbr4O z0SDBlEhsZ-*TRSw-#odB{PjWNj~1=$a$CYNuCkMXbz6}oMJ2nV_&1cMJt-aqC&=eM{I|037dZv(0H?-R z9?(O}1zI#)>|?93)H31n01-`9p%9(X52GoG>&ILT=+B@zcNLANeSL0IZO3A7#eqF zYB#0!TpY)@@%3k>VPkHO=l-|3XNyOCB}1?9>(o7%vP~aMOL1Gv{WtUQKo(b@@c&n| z`gR2Ys^kerHAeFYrk)5BBfedPyF2JWS;4c*$^@5LuI$j2-l5EmgrIUKEmbdhaF{0xVR_`FjZ#9&>Or>PIx#E{OyN#SICAP3n z9XnLHb>zxN`37-NpgFt`&|xUvvI_W6V_BgGQ3c4*;QkER@%fN6L+xd@v2B~$|F98p z>2WuBsf(te%ba8HGB@TF7fvPlNV1R&RwY|#J9EF*nB=aDUDrf(zOvL4Mnx|7sZk=p z-7H;zzUO!nvPoWh&H0zmsI|h;E&Lz^RFky2k@HF8$G;XhmatP?&QEv#VfErM5}D|X z^jqYV3;zUQeIDiZ=lDj0TZp`3X;A^0KT0fA9v*cBVUrjtoK*bgc@@{)C->6o;wV~% zPfno;0N$37QyEs+JVH}NXSQ*(-6Bu|E(Bs_WF{qO)s8e_(?M?22=D+hcj9;^$0!(9 zGXA17^2AHK=G<1PnPcknWdC(&spYR2y$#cSs|@lG?#Yqvs&mR<2}*@S5?oFnMxQy? z)h{LQi|b$|++^uSgDuFD>*QwO)5n8*I6&IrI+)h4u#^u3M!(2gB;Ae0v6>wjrsj$i zQx*>)mS8QRoOBiGOQRa+!z)?AkGpqlG}#p3IO4Xw$sBp^<9;b_8}SI&WE;&5AK`kA zk8JCljS$n`XzwReK1tomt`{%V3jV>c_o)4eHNTd5gHOh7;tK8cm!kXzK)l^%(?cOw zyA4qQ%ZI&ykUQzo6eJhQN=vs z^+5_3+(Uq+W64z@R8}dMd8infb?6@ccZ$F%0~zjl*%G1xklGK#pGpB(k`jpk0jB)No=T*SCLgU8~%phBuhf)2Gb+inKS zEUUj|B~Zpf+#Z<@SPK2cA_)E<`B(JXM%wu^5k{zm#$eA6By72@)c4<*>i4p50pK zI=#qIFHV|9?r~d!?cB?bz>#5KI4>%`riURs1m~hQ;Y1mJwnmi2a+4X>Vn!i=kf8(+ zLIh=A6{iXQg$MJAm(pS*1L_d)~TNOo=O+=8{3`TdJ-yC2IwqKHbB%s6# zfxQ&{;#;(eWk`;EVKoqS%x<8!!H5Xk$(Ls*>tJdq-NaDiKG(;!df;?nYDzNECuD~n zWf8Om(-~z(V(cfg{qs+{{c9-4;3uQB!HD6q!DLnOS)>*=ZB!b@lUvz$TPT{2Y`LT5 zPQO_sJF~=1c~y^9vI&q=SL-!en&4;L^khDwHOi1k2I-!+FI;jIxP)Q z1c;O^t;Ka6L|T$n1!P{su0on2#jLc6H;hP=EsuHz!hDg)lFL;l2bM32yx@zd6XZQS zjH@ad7JrdTyWi#H672E-woEF^S*Lctn(PmX@#@5V(g>Ciq6yQ3(hk-O4mjQ9ZY^RC zCv9ZO97THzf`rbSGO8>(A4Xw@$!+YH~nw^x|Lb-`qEF3|J`qplNtc z*zFnTVC6t=de)(ODns?wXUIJF1_Qz*zwPNd^SZOY$ZzLw?#W+uFpBi-?Premt%`rf zb;xd%4dma|YzR$yle2)70MyPimJ!Dhd9fdgx7J$I;)Yq2dJC9{7VxYiLV)!lI%bj8 zS#F~7jVc5HZ1hJ`%NE|d-yw4KHhX#~I;}rQEb}KZUK3XFfWZ=;$~H?L(6sF(5Ws`e z8NBh0kln7gmYbomp`>`1 zA4C?$+462%?`(scz8=#1tQ!KZpOl`d^Q2+A>yO(e9)29tL2Pj237hgH)|dSxo_idF1YuWtTL+gw*;!Y<*}GdJc^PK5Aij~2%Ta6J z^!Lu-ka504Y2*_%FEXY1(62vnZHFrb8DxBaB83+qJJKv zqQYlA;k5t`6MHOaEd>LS@jc z@}CoAG8~|;CjNqv`2$xu{F)65a1O459RwPc){ZKQ*zpM0k)|GzTI?SM1%O8Wx{RNU zQ_7`Gl)B=XvSesVvN)3Y+k&e9vRrZQB}Wp7h{{(GChgD+xpXa<1r3AwiJx?*ax#>q z*e2pa(PH`gpUqImXRmp8C=tT0G@rsgDhT~jFiH_2?;fApaj7jQ8(m5QD!W-_h*XT| z>R?x4Oik^y)V6`r0q2O>71VvWdSVK}ngqxxh{k+@!XqGyfHy9Rdrz9iyx1$v!fVt(E=jQ+w`4xd!W<_Ro zKz2zc)h`fDF7kJbNrqa<37{{LT3(Q%s;OaAXzClMD)~V8)iF~a#Dal?`C%)>S%!;r zXVl&3LP{47kAE-J2zieW6k6MYO<<#o#7i6DBC%(M$_i!nL@4hvHz@Vh5S~u3JeIvH zS>f{zw$yRp`qakTHX17kmtNg)(`}-~s;IbJI5!q@FcZ#xjDNT723jn$|3&)(>Y|2y zp6Vb&^fe&wPN#?43Ub_g+^#^rg{f)Zh*sz`5E`aw0C!E?*d)jb`yL=x5$2jv+YHDd z1W2|C>q9_REtU;dSua_vFyhUP``fHXtR0&88PMqDYTWLX+zoGxs6y|%J9wp0L1Q#U zg$|=OwfQIn%p%hnNcIwdq!$)HzzTO@zQRRz#xm=|efk!I4x{mqBl%BXK0TUq*y{j&@TA4^WcR*1Sq8VE7L6(!)K z$~LSTt*-l7$SB|FwtKnEil3+5Yt8*G_~*M#C*fDobQ}TkcXR2^-EsEz-H1shVYcx0 zeho5?zU~M}-286KbG2LrhN>T4F(I)?^LLag&t(vEHG#|tTy!3k@! z29y$Y!_8Yn^J2KzL~v9exiyAZ^~8>nag%TE!iTF7_w(cqX*samvL?Z`r}^}BQQeKP zUOkyWK;5T_H?ngI)ex&NBML=NiY_{tnW#Bu5mutdQOG&CJ=eROv&>vwm=6z!{3lWZb1 z1Gz5K(?JN+HzOqx_dz&a1z%~)dg`Q9cG*-ohcN*gW8{qVWCEIaItmD?SvF8-l?XAI z2yL0n0M%fXxpWHXm!`XXL-6gmv|tv ziSvXkG5vfx*+ddujY*c3NHyJ{d?k1`)u5MZE5%m3^NC>=QG6z*Y1-rr{u`LQ71gbi zhs=HGV!W;J_D6X%$%FGukN=;2*01&Mg6_?*+z&f@#Mu#E9?!R9{de~BC|-QW3-bT$ z>=p9Kdpn!-?Bd|`51nAeF7S3CDiTLIGYSc~e6%AD22FIWU8~$gHpwz5A8rsAl0)#FzW?a1>Ci#HK`Q~ zd`T$;%))8pSvw;=3D@nCZtpKf z$W2$u`@2xcXg!^QsYtfEF)W++a$TMdmImBh>eXa6p4=k(-VrH+a-ZzYNe5Jqj#t1f zVx(n7^E-_1RC-43?y7^Ml!6nxn?H+(&Qlve7XM#PM_N3P2YSZ;2bk-eB2TbnR2Mgt z1)1h+s4x`6?U29YPTU*l5d%H&rJfq00F8A3I&7SuoAoby=Z6{ITYyWE;x)(L?=#~(E8Uk zUtdG(&5=C(JLD%8W~=iaMNjqcsZhJ=W%udiUUWgUoc8J;fXiM5cE32rFD(*|#Tk{a z8p_ciCqNBiFygoq>Xny^d>fx2m?9(>58|j2_8T8%ydu#+KaBZm%ScjXWEz{3oLS3| zgTBH9weVxDPOUo;iPkjvFgg>enc9DMkK$VIG+Uz=_iGB``jET+mw*yih zOd2zCB9V9zt2c_uAIiPRlVaeoVEcy0G3WWO+oMrBy+mD>AG@p@d_h&2S)d2A=Km${ z&ExE<%DmsbhCQ6IPR(;_N>%1SLc$ON2_YmAnUq06g(!%MiX+{2UzGxZMnps!5osg= z(ufE$h%_Qi!eB(3rcqH5fgnTFv~q2v5p7<0zrVH5shk98+t0n9_x^EH*~8hx+G}{$ zv!3~3oyWMI-w1|9RU8y33Frxh#7cHi)JFuF^RQ1m*%JFP?uS#})$EegZLCR!#nm)A zub4cVVw`hP>b{`$6osR;Uq~@SJU3e{(VbN{JYS9oAzjhfu7>AS(aR-}23>&)B{fV@^JNvilTJd1$ z_4;{wa4EWZ8Pn;zi{1AZo9`_)_i1ncIfO(!cNvW&;g`8{Z&AJk;eT+k`4JI2kXAZ# z&tmh<#`Sv_o9~9}_J@mu&sMjerVR>P&RZ(!Omb( ze7q*(vPKDh(kwYOiH=PtX#O-a%M)YC&-Syb7;RN&Bhle%7Cj77(fk06Z%7DB<1aMk z?~Ru|t{typs>7qd3;<0kKaEWTj#&v&&S`pEMJaS<5N5pkgV+(Nk+nIt4~dlh zj<4Pe%7^_ClRZ;H7}0MM@34-N4dx_f%C2Uy+ubfsb|;chf*2zCWh%SpdyKu?B%4`7 zsRd{)%t+aiX_Tmhk8V#qV)y7-LP#)*(d_KQ_Cw~w>4&P(?}!3y|5&z{R19w5LRy!S zM#b;OWa)s$<^ZM7(Bo$pJylcCq=25@LDJ6p~D zB07K2YJbv--0sJ%tn5j4Yb!mSiQ1QhNhB$}0Rl*hDjdVWb*5pTMVAqd!u(e8tKIL~ z7|AaxX0>|^w=Ui+gX#(@LLh??0Jukq)*hdNve|Q^tEwc!Xf;&@o5WIvY!FHGcu5FQ z06AfYO2cHaQe-k=Xn{5x0zpBY?C)GOQI0nA(-2|gn{ZkHCQtI!2X*o4g8xdm_=J94 zQt)32zka7*=N9~D!mpR~>!nQIAH069CJ*VN2&}@dOZ4lB%>N?%x>~;;%>0kSFD#m@ z*_`?BgkSgQ*R7fVr||2C`gKj_zZ!l`&}uHQ&LD!*KOenVKc1s?h~F32kI0*jn*r@9T%3sR0? ziqY#w;1q(P4}gHZLPxSJpg8eDJl@0O17<9GxL$={)sN4)diZvXIC zGIRCz4}a}7K73wSfPHjn{di6NIH6QGF1p1NJ;Gfff=y#9H@myM{epKF^PE9!pjJBU z5c3ZDP5t-+QGtR39nU}nq!1Sq9TB{^rWYn2=L5WYk7$}YikiSOFfZfw`tkeq<3k)N zHriT0K3BhfIz6oG=X2CxT~_~nZTt!UyVdP%G^QzMJc76~8DE|@yI zbn5J?sWYaKnV-yy=i7O1xPU#F-9iXRX#9d4pL{Jf67>H zg-fP^R#Qlv>AOZ$lW%(>NqDrZ=z@_{7O{b?1hm!xE7NPboyL7CEYFmebAVa#Y|5HrwV@yyt551|UD5?r6-@S(5nI%RjfTkigF zun0iBv=}Efn&DuyG-`-g%^4;Qd&Y*baNGNThcUF9jN51!$t3zdVVLmL&#lLY=#eou z8?noXd7;hxp^aK){+TxO>o&8EAB2MB$_9|ntMpPnFnEwXA!Cj(H1_>~318AO8pixk zW)({5BGTJ=aFn8_1=RE!Z3ohY1OwM2(GMQkj<_pz;&F$5wB3$Cwt`>Si9)otCwjN$ zGV=mXLrXp5l11~)fo6YPk)q9==Cd7Ug?qDmzD+YH5E={_$O|fJg^#Xj$7PZ23NsvC zSldpHScs1v5g#FpvD2CC&8{}Z?;GoqJ(F#^O915Q|=J#?rrym~y0xT9z^dzv+;t3Zb@7&mBqMn8u_u;Mp@&p~; z?usJZ^Zs3|UQnB`GW5OTuyTT4;#r96xPaG=D+^fRghW%2Byled* zrIx#7VLu%9Gtu_WjEEb%j--NM&w@1&v_TlzBM@L&%}yA8gywr6xtG5cq#WN*cK(cKBN+tC1{sC?u51gS(`MQ>4v?k|#uof7U+30QFW)_W+S=A+X~K?t(1 zRtPrF7UQ$}j=|TPgCrB$BYLKVth61>yxF0n2Z0s&5tGfDv+FA6>rzWy*J5r)<-p9q zMTC8yS;$;r;ItTc0?Bm7hsAFPdMm^&gh!Cst~}e8GE7Vm8As5yZjb1Oet2^f_W}89 zDnHQA)aK{I^&?#mxuGwp6I-oIR~vPWdtq9 zx`pShSqlJbSfZCq7IgmI(bwr!8moYf_@KpYS?0#6H;|ZPm|}oLMjopZwL=E2FJW|e ztxE!3F$HWaWBCvSU`t@O?^kn>DY;x6mrLa+r;G(5cbF78>KYO13agzv)l&G}=$c%K zs!*?s%_>0oV0#eM(vg@2XY~J=Ukr#U5>(LF%Gg4zE%;9*6;5rLYTr1@Ee_$J!OO>pInu7`t!xrE7c4O_MWrTg zLxFYi(KfmKea}M@xu2EI!)1KwijHI-h#xCSmkfD(mBE4;=@%DJN6?VjcA+YAw04j+ z%o{lNocx2RF@*gsK)=Vi1Cg;Xy@9)j!5%79@D za)h1O?_wK&k)>=Krt#Q9e=bc4S&*-lS&dL`<})dJsQ4*HyC55g91|UuW1>+WsK^f( zKFl2+aK70E%oWF7(ap>#j1J{F#7K5R_nd3nhzau$tJ zI1X@gel5CcqOo4BodtxCvsKt;f$ip}Cp$#1(1vV=bPjZJE=#ZfMjn9#3poVja2itG z==t>hF7E$mepZfdm`G~oM@j;A-+=iSj^=>@clUtZJYc@VFDCxI1Li36ZzE=M#JoIg zP9HHp90dyS#mLZgAMv`sVKE1 zn1HcQhjT*-TXa{}Vs|_HuqYkPM5x?&7n0$K$&j6PAB&PFCM-Yc5L&~^sc{M8kW<0P z_(Q^s0>My}pH_+*+df7|FYiK8QCXHnOJyA1Xq}Ej(am5zdx_+s2B|0uA-q%`YVp&Q zP8+4COJUI!!Iw03IcB52zyy;z5Xegf3@Wa3r{XbkizQh-(Y!<;Id3Loi-{fvf2TS2 zVDisO43XFq&GF_0tr+$lhIvMyUqm%R8)7^81YcuRv;xQBJ2V(9gqAWF8w~SKt|g&~ zL{6Kk3vpqyF$6IQF`k<0fClstoBdpS>hMeT=Ys@?@L0I=jk3STnkQp(qMeM*cXadn zwvek%%kIaa^U(y1fvRWtQSnHL?-j342rN!tS!J3?y)k6bs0EItKo!v^AON34TKh8O zwi^%ol`pf5EUf@$#l%&1wb)WsQa<#5ne4{3IAL zrnz7QkM`K!Dqg(G0jOCNw{6w_#=M&<1C{QLDx(HVAxRB82U3G(&B|$;r zwlHW^lNtS*k35|}f)yky2u&o2g?OZ@zZGXD`oYIX3%2P&cas$rsBuK&9q+|RwV@6g zMETQM^_5n+rG=SQY-D^O!Mz)%SHhfttsG3I(*<(6Be7{lm;cER>DnO$taF-4PSw zefzIcSLnO~q4lfXwdfx3Yw&4Rsf3`TP#ZsP58qon1S1b_-`R8LGd9{es>C8AqF@ zo_VoGENBuyP&-mV^5r}rTshhxf^#~?>7>E}`OgRW$IHqX`W_-(p*j!s7FC+>PVeM~&l{U&2q7{@BK=UPM{+Gk5QqgJk0F4mzDIAV{+M2DLGI@TfK5LI# z>VCwSaxre$ND;sllt_n!H}ztml-laVL!keA!QBhly4hkxzlS8qtW7V;Swn5NYdam+ zY?GEV)_FC5Dm|E3s|%AqEO0L^Fpn;%J%%5R`{$YN{+Z@qXPO6Rnjg%p>pw48NF#o< zp!Smm!2F%_f%TvRooRkFGc@G^rRVK4KL~d&S?Hgh>9)-@zs_%Nok`%b@cC2%yHRyh(2d3zEfZ{`$8{5Fx*N6I8rCySBk2D1 z_9RI1Xxr=sh5F9rNEH1y2q-h?A@c7@`8h)kbj8?MaXTCGsf)QSrFJ@sB+w z-Yp2ZE7RSWL)bihdPAyRI(YZ!406Yau|v~Im|vmxRp#{7j2E0q`iC`0RBu`1u3uwr zSfiHUuskf42j@RnO=DgmZ06p!{Zvu@E4+nwcTKZ*PNU@iJixtp0LFR=M#vIXS@#dZ z7_EM`-4Fl17D;Io9Uuh241%}m`2OY6(^5zoEf4Hz(ILdE`Y0Y#0?7HyH#kybq8C4k zT-u^kQW9xh6wL8II{Os!`ta;36J2FhE4(ReQu1sP%hA1*e9Bn>DNFs2+gU8tj7t6~HOSQS&q*tJ$zDvfOJfM7S znlR=+js1&t%|t>0bzo_ z%zvilJSaw7%EWvE3hsdVa^cBO!uYO+P~ysJT0JZ@k9WfsE$Ds=TpD>p4^NKx2NPXg zOuwqmOY8;~hXPy&IRmW3v4D|GWPvTtX@x8`Sj_3*aD}4~GT57^bi&gPObta>D23QA z`O=R;JtNSC1pY%L@yMRFU02J7}I@$ z1h5)i1e(_~8|ufKO3A+|LcSh>!8rmU&7~$g)w~;A_169C$5OPZq;*}a?Wck<@&zSS zt6GTEwY1%_*2r|qd_K)BlrJiI`-aR4J2L!# zoAh_4@-1Wbw=c1Vom)Vv96MCZPh>2(b0x?V-LHS(67lTTe4$|G+ie*{SSp)XC}O_D zAb!!NQl!I|k;T+}Iu;%CKqiw1$dmy)lPOWkg{jt^z%|W1+Sw%{IURG6Z*ft zU~egy{|Ipg77C#SjHNx=TF4T?bx~<(P#DxOo$pjY2np-Dphby~LCYlY&Lh@Caf@o) zojOjML4l>!?jY?Fh}#|OYC~NM_3oWnKhCNjf$Spn{)g0DDg*966wFIxNJ*9IsEjR* zmaiG+E6UbtpDAGXx2G-zv_|Ejic5sWz_7_Y9Ui$B7k1=l;)9TAnLmb$n~LtefJ+O8 z^K{>T=Pt}_I)DAM&~if#GuQ;B~YSee2MFw zHNX?es2#ytq?G)uXdgjD3&vqSgo;hd>EH@F>5iMf$#`aPP?xBQ%PaDg0 zsazbxibzX$+%uNV#$1x?x<4(t2)P6`%PeN799iPbuUUrEr;6tHIzCghd$V$Ct^N|f ztCtoLd6P;(_pV_@kfo6MEo`O)byrD;+)kfXO&P&$TD&p1K!Z8YaIVc>rvf$<&GmZu z+G4zjp7o`pNoT^$;^UaBGZ*MX#2*{MYYH<{0uh#66%VxH#&q= zYIuL@qgY;F8{Ws;;Pav$5_2vG9(4BIf!jWwSsRutd{=jM3fQ5O!&KjvLPrb%r|B94uZ2+bU2GLVsFA@BmgQ_K2pq z5f=y`z*W!yS26#KOA1DrbcAQyQK-5~2-;HZ3s-s#0)Pr^N8Gz$*bKGxm9em7V?Ha1 z!X`7ckp=a1+m27>Z%oSAw?~)6X`AEil<38mAp4{Hy+e+KG$~02>+FU%qmrAq(FRg1 zYaT!sP-_J%Te}>#qVG77PQ_Xb43+|9vadsCU#$$=axv7O|2_JO93V>DVlx6fl(xn= zfH0nq#rCJMc?gkP?=PWXlW;wGL^SK}M28ci0q-5+`MN^+$X!^oiapc;KOsu-3dztM ziGE9?!?Ng#PUsXNC`&b^WB`M=Yo{2~TN@7cEQUbN2PE<^ALfM*#V7ERvK_%T>+_^h z1uBK)HbX*AsvS@>X{%>hcP1pk z1ISAeKr*2(B)N(8Nd@TrK%6GaTQ+7UZTt8^n|#UQKjnkZT#v_Q*5kKjxbckluvUi!Gd)?n-OxWAtR zoqD#59wymN=JRJ$@}JvhbzTVj35%{&VFxwS zMb9Cm#OZ_vYoO@^BpW@fEB%(pAjUnC+TW&m9&D*;=z(Wa|67Fdz9J`f{*Y;?;$d6> zs6`1eKk`O%jsO3P)g+4c!y%zVRA`)uF30s#Zum#xQ8d0Aeb zsBmEih$!+jIw(9F!yd*b3!?4nmyKy;h;-rHzsw@M1|Vak8RL8p2y$LL(=G~QjVT@a zfxNoX!=Xm4d8_YaoxC? zTv_y&6(JE)2&)!5T{u4o&}nzxc9DQooAFj;z8Q=voKJ4uuec0D%WSk}f=mwkMORn( z!beysKTMx}M)8Zz#za@Y(q0QwY_Gx&8T{Vg@gdNa1JPCw^VbSYZ1JlfPoPcz+-Um>0c zGh5$^Vp>e}3?LJPq6(}^PkQqWrIl`XmkJCX748)JzcXs zd)_bG%zbUlmlZ|YIdU}vI-t?a;%AXiwg ztVJ(!%DBMBBGsf%gbLT&o^`<9B6(12B}N09JGJtdPr1rb>6m#OzkKwXst zY!EOB_r{_E5ePC_-z;>$$-Hr+=rqW*G+MDRyf-(xC}zL{+elqS$^f9(X!1ygTOb~$ z1(GY~58l2gb|2=0&wzV5&P2SjK1sfexCue|equC{pid{SQ>PFFAjcX=t7Ib50Y(U( za;$oJ#I(5$C@e-RmPh9%_=DltNH1$rXg&;@QMBP`zj1uhEFAzFVWFXd6SpW@F%aDa z3?U0e-UXasq-8^-NG1YCP~~XFbXoc%HG-!)C$?~a=fv@+nM^z!atG&Ni#&m>8Fk?c zGl$__TVPR482HEGqTeU}JEk2^Ku}};9qrCXk$kb93D|MP6!XX$FZ3V(R4$^A$Jg6% z=-I-ee1$0@%=iZrJZaGVw({$8EZzgRir$#%nvmlf2N<(!WtS;CRiT9>t6xudX-Me; zsmHq_xsVB5YGO(b{yA|tpBBzbe5W?Ah%-(5JU<`x{`^9JIxtF|#mW?gi?|-oE6d#` zC*KkmYFW%>(D33FD3#yQiaI3NzY!4Q(orfcm> z-u}_M0rL%?-k-V<7CwqUBq1SOI{ zTB8Z>fxzwW6Mtdi$h9z;NcqF&@#93Y>BXXXpsvzx(QaxO4pQ`aj&?PAG-l)5W92Z7_R6$gssrJRaW|c<+nFdxFix3cH_K zQP|I|O!qIZN)Iq=Dyz+b@$39S@#{-d$_P}*smYXq8s$Puzq=I-EzNvc^2K&16d9} z1NEvKApA6YDOQUool;znb>O;5<8_Q~?wPKq;m%&=X$U`_wmeNEI7YYdv@UrrQF)Hh zt@TS8m#FY0IeKram&vjrNjelZT{G;K`{miP+OQq!81_TOXeA50y0~eM*2fpxsj2H( zW2E4lx|U20BP>K1!ilD*f&Zx|^SLlRw4V}L5qemgXG0x%RVW^^(N-4|<2-*y zMb%+5)VDo)F)yys!u;|2i#S^_h|RsZy`NO8@Ym?;9Y2)ehY@w=;;dv>pla!}`r!pAqIdalP}`U3eX)LNNqHaH+lU7%SUnhZr7aCW+t_sCY zvO@f+aaBzZSeD=`(TloT<_WbUG-R@dMS6CSdYA?Wg#O?6Fbxd@M#R%7nn`;YZI!47 zg%(W?w-9U`!P#G4BC1-Ih*_&jRDXmHnOxoyolc42YThMzpWxvYoiTMI^h(|>leQ%~ zYwAYmn7n5ueM@xq)Q!+LdFM=KEzvpLxIkilt$ytJYaH`4@1a_8K)U14JhUy`$Kp_r zld?DeNf`)aS{h}7@mNq;+xUy_ll#WhU$`}k<)F+O@l<{*ugR+u9*q}sO1SY$#~tx5 zWnga9e81j49KuBr>3;MGVe{#MXd6ctosIF1eqD?*8js(w-w^iKg#8U+e@ock9`<*I zy|wH8*=D0h;D4@(E>rxJ+*76b>&@qln&#_GzF#6);;a5`U)xoN2(MSReS7KkR-!=E zT>UGyihvkXnoT|1*$GwAMO%A(w2keV9{sk_^Y!CP_2XH+`StU9eRKiaMfKm8)sI)z zkGIs1n|bE``uRf~U4%*C|F?f0+X-r*Uits+<|7zN5q0m2`sf9;f>UGCINN>{G-}gx zIV|a3>K{zo>86r&bAnhCK*r-S2m_Oa9ZT(%!Yrenpd7}>7pWc49b4ktbZl^8-q=i=N zP5o-jgB_pG%hml?yT0?cw%6jd=Ko(*3UZA#^xPXG>mE;E_j2kH2<4x6?GJCS!vDdu zu(GVtEH<9>*LjEXeH%^Z8VA-E2a92cd^ERtY0+Jo@(ov6T2MUb_fCJTQaDG{uX@z0 z;VF$sV33D9S+8!$FYf&6_TS<0u#Oe^(8D`D?xNo`T@l+ooKn+2OMLcmB&5}R;+-MV#CyRW>Nk`_;S7aEE8M}ARuuzLtA2UK!KUz0TNx*+D^K` zm+8G#k_Z8By^;Afhm)eNgwM2!O4#Xv#;f5-<*1Dtt_6bPng8z5DR5yWh(m1e{JWuu z$8FyhYofc5+NsHu4Wi+Ul(b9_$uXqqhipZQqz}93#rm0AeYTV*;g8&@Q|I{=-M_ki z%|$m&-Azb*)hO%Usk0w8-G8j!A6E~F2?!A8$hw!8VxxN`kDluG=CfCp0gxf| zM#U3qk`2Y7CUo;_mXSBRX%90MUM^2n-~qXlHCI5tlx4Wlu*URhY77;@rnga%QoSs~ z%HT)*in5x@er1#3?OG`bW=s%TqGOq3n1Q}_DMSrY;4WbQqHyHN`d?l;@Uz2p&>Ztz zWMRS>@F;H{wf&0q!xFDpIulV@ahgYq6SEcA{9tF~i+5O0T!?#Ye0ReI>H*wJEU^cG zc9d1)$g-lD==p-r>#kA(NJJ)$h{6zhqjY_Yc>a-~5!Gv$7$`ax#z4B=-Bbt6zzv(e zeO6m?W}7*;E%{8_)c1PzJ-IfA?;&xMeG)S$d`Bq+MZcUHPa;FdEh#2SmM`97;%}k_ zuh$rBCm;!JVs5Cz4PPWc=f4C!c?jxdkBiq%)s*CLs%etfw905pmNz{atMMLo7uG+T zqDib!1@z#u`smIpCGTM(119jTLB-2m^e>Eo6u=l68{D@U6ZD$lT3I#cQ!xn^apRzQ zu@BZuGqE4W9g`2_s!MXyGm%2dG^~(RK-Cp-+ouYcJo8a(ow(cvhk)&k?ib0;N}GFW zghVsJot3yM(reE`$-tGa<8pf-u5?MCBX7fCEZs}9!aFTk3F3;MtFYJhs7_?&;d@*R z)#&2D#Zd{V@@n;kYT31sUmHcUvAqosB!1M*)#UL+?^W;sUSa^LNp1^8Yov*ix_E7C z^8@4g17koBuc%d1&n;>cvOCW(Jr`gDL(LLDKwnAaCTY;5KjdYH8%tl<4>z3;HJ#^o zeYleE`(LJAq?VHwRDxgfH_GRbEhKEBe8^h&V^b`X|H~Gt(e&ckqDk?Yu|(=y4JtXt z9*JC-Po&QBlGvfcA{A7tis79giC-* z=9gzvQk@~Q-1^>;`jtIUe?J(PAC1#b+D|08i+r0m!H>W4|i6M$LES-f=s+Zz%YLz=g7JWQO>n+l)07v-y;d63izNrYZiWm~Jcxu#?bv8l8j19g=({lBL+6CGo>z ztD1vP|16hR|1f{zdx<&OY>0_=8DxK(aN>agLLB@s3wtm(X6iO%=QXN-Bu;l>N-Ugij!O!FJ*V>{Fq8Im%e zgh5a=VXbFkty9Y}oLJt&=9Z-@(U^I}l1sj3%-1E<6X76Z+#alCW&W*EDOZQ+{LGIB z+#TMqe$osH*;h{u^%ChAWTjKb{^%*6pjdwa*aKEPJ}Ks+5L(<^F7scmd_^6{@j63@ z4vyatD1i^F@)f5bA}VSeF*>T|$XFG8<#&>v=sEBSHZu51B*X#ujEuYVewFv>f1nxE zBj^l0*cM$HCtrjfaE?J^4zNfxAg4Y5qHKP`s-&JHC{dhz#hML{7-dtB*B6`;;XIOE zqw}zp$C@%JkiM318u{nP7%WPuf{L(DuG?X<-h^nA9V`n8>rtY3H}o`iw7Uv&#c8jxkc%2>0J$ERdyeO80*01sv|JMwn zIv%8;YARHMW>d(Jk7b!7yQI_g%Jgfdrtvt#}=JwzLly z)dAm6AhAIYU0oTqBQrrAft2xeDhrt15sEs=8B6$Kyh8ru%^$;_KmQ>m}&9G`g1IP@w*sWAlx$ z*9+yW(+y)yhnWy`4o+C|Ii;fi<;+%R2|n=?YkwBor(#2Zir+~)Mc$e1r~db(1dyuN z%lhj%XY$`((LM5CXDhg!H(v_Bf6B~J)C6w*K&SuMc!~>8$_K@ptstUMCN}QYJgTRN zVHRG*5-+@UKbY2k&D+a7%%O!vbcC*H2Qve^9&Gm;@J)h=bbUc1ZUeamu%ge`Ukb!) z<_iG2@)3Ma$8+6Z`~txMNaqoXBC!DwtU^PI1F8X=RZl(eA%C^;-@t*@UqELA0?ZzW zzyJ*Sn1#vdvpVur=7Fx*l#@@ypJWk4kX--Ea}T`Uega?d6V0jSllFKtwnb$_V4Oxd z_aOfH_1|Y1bEYxadr5vKf2>pO>BgL9Ed1&lLcW1r%pxBw8Phq8dnRhg4!Vg~S*(H?7-%)v6ro0 zm+zEC2DCUqE*o1lph_<)Z?I#S{Rl>dCc(JT?XY3+Xp$LZ4%%U>&`>gITG_Rld1skj zSrN3B&}6%K+MZN(ZyEd9<*YrdOAJ5O_nZ)&0lUQ|X0OsJkmT#lDtmxEOs0g8^>QNt z`G;Yr1(aC7hV>8uTI_1G#;h(O`m*9tKH{*~n`z7#d>s_Ww5l`;6A@|Dyy!sY zj|f4?dO&4Zp;QpPgh>2;UZS9ys_;ZUL@g|0cq(DYY%wbw+hVZ)EQP&SfJ{o3^|VU{ z89^eLgAW`*-Tg|l%q=Gp{oa1hI`f=D!p@=kEC|!{oL9KG@FB;#9lRN^#ei;&m&Ifr z1cudbV0CP`^ZK-^6GiR8mr$2YCf#T-8lO;@#_FEY=~~al*SlKWCF)LX7@@cLB3{-2 zTN!VpGFVE|giR(3ZxiG(j;d>-OZ2w99>e>!v`g!jN?15m0^hFK@lb-K4eL$UI`uE! z3hZ;whZcD*R6F=YZ=DgJMKCxmXY{2wGiu0KTc#8tWErheGD~QjG0V)2d~OF`{A!*s z|73}IMx2J>^l59iTJeyfUT@$%I%X7eTPS(rg#sVlfdgSx6f8g()Zli-+y)oQd|_97 zFu-9^bRkqo2p&bS5EkjGAFOD$smZhRfv+&3T19GSey$4X36wz|U@Wbl_afA&wuZJE z!oAb~Y>Q=fT?S;;ppa6C{bpk>k1d{!WF!_F@)OK@q3ZA2>GH#}U;unTU&Zvx!qw!a zE76ByulLrWRg0m}p&_+GewOwqk`y!oovWH=)UE>IUY#D@50@h-sx*l9ZW;%06nty$ zb8hFqj6|!tGSUHpGWQJZP`%~t6>lDYZ+5-L!td8o?g0XQ35?S;MA>1Fg(-FKs zZimCZ8up0d%Te_Zq%nA2B!zOR%J68ZZTEjL_651wF}0kn($-{#T^AdIwBPUOCbK@5 z%3m3~2jaf{kO7LuTmU3ygarh~#rt8{%t&`I==k5-R54BP&b1$jq7kOfY+y|!1^C4~ zHxVsD{HG>h2FxU~9$|z85~&=GHD`j{P8OFzI9H+r?Q!YaIzV9eAOR!cJ0#I8dgV7m z61-g|%O~0qKcN=5F+nn@54BKZB!CD)!aK|W2@1mux65K&3&T?to}!D12!o_k(>FF) zbWS?FWg&+t20cG-wNTlVw;0{vUnXXl*n_?}>9(_Zbey{^j=!w5%c?;SWmD@ODu-AT zBn1H~^oc)e{^o`{!-sLb`+6K-$BUYuv84*nCgwj9X1of*m6n27ox9-neX_xJU8$+3 zTe08*3v~^wJP6gfU%`{QK*{N`fj3<#8 zk3m?RnM(_fY>ZbTaVw++fxW&aT)~HtcOt>!n!2rB!FyX--*Eq>yiMl7fY)5pz8cQE zo338I376E0#EmMKO0I_)Oh;4m78dbg-%lo990W+it3`dV z1#*MFQhyZ!gu(%dqGM#c{Q{CdcRIXgggu-k-jIzq*|i(3*<@YV&)UeqClz_shR}6* zX<&Vi1-?F7?%-EeT3qfewM6%@PBAQ73Cy;mwDJ??W9Dcq^hwO?&1vN3HI4*R#$4&- zvrYhBFhvKmge(^h66;UcgVBlJeHt4yp$mwaJNYKywMRN3PbGT6M;s2)By5C$bgA+ZQAlR<%kt1 zCt*Tp!cYv}6+FN^SFWOAw%W2{d$I8hpDw-dq=CKr7?YAjDqeLd^V2BhHM0tC> z8ILFM;)V2+8y4}R5Uxljrr+s2GmDrJ4dlO^Q3Z1(f!B(n6&O5%A#ll1JDvJ9<{-D4cqS_#BnfeB_A@KY>mA30Biwra3>ZrHbWQid zGmJp}}GR_-%20T86CG6z~DRi>QnYvCH<+aZFy z>5lu-Jj5C71}e?baCOYh3{TB+xDJtNN>46uyNBZ*Zi(BAdg|J;c!k-oV^ug`jb`+S zXo64jAFI1n=70j5jxk#on`5g+$1?1M#g;n|A5o=5qQSEihRi5~wVT;Jp2hWHLxKd+ z&ei?Q8n-v&rYHFwh&Oc95$GlWJI06MSmC(yBtSuWM5GKF^aS3FU>BuHr7wc3RTq*f zDPpQj#K9Et9XTNf3)7%KXT@w;w5Q!QofBNttlg7UXE6{=XHyZ@D5{Mho{CVZPyvmL z<|G6Ni*4w8myoKCFG}^3MF-mPbi$0A2|HexaHD3V$hl*ya1IN)!i>bxBD*Nvg&8ir z$x^<#7qy4WW(=Vl0gXP^in8`P@6y0Q!w?jXe zclnb-b&672+)7<3O56Zwj5D}udDs)N=6l9mVd66hI)Sv_jnxSYskE>dNz{dawA#fl zx?0EjFEvQu9-ieEJ>PEk6M>UMIv%c!?{4btGQCy6jv`M&R{&`oqCC$c*DKLd9&e=+ z760fR=Iw-b&Zn0;is_=Mlp=THs^t1bE=jF1X{L)#>Vr-?DqE1^JZHidgA7m5Ta5EvAWEwk*$que?i|y`k;ibS0$=KEV zIZged!IR3C_V(Dhp}kQ56=vC(R<0b-L^dkoEAl<^s;c=hEJ=blV2B+kC9;&+$Cg=q zI-?o{7Xk}XE~Lah$eSmY1Dq}aD;_{IQ`B|y-7%?G*qdOotR$YR`&ft3zL`cjxx!HxC-J>6-{UB=r$Ls`nZ6q1B zBRwFOf>P2kIteQABGRkELZ01aVv*Y|OyxGv(cx$*t05wJSK4Wg1rR#l8og+wUA!H- z+oT%|nK1b5{e%Id`-FW0aft4W9w4XVTs-!rB@ASu#6Lpgj(jd{>OJp|XPT+6gk{tv zEbHNj2~@yILa*&Wp*RyB0%IXs<|qRPX~1E>79vTblpHHT5rp;kt-?m4iA2&I4Mrjm zFEZM>Tt=HFs$czh+aiG~Owa14Bb{KTtVV9irV>77zq{qM1XJ78^7ufaz{# zE(08Zz@v1j<;{6#eRemRA-j=AvxH*RoUW$kC=p6?bHE1sTH=|BuGj;G_+COejJn9H z(5~avuES}QV=FC-qmCj$Ko%Zjj<#$i&WEDq=pJR_Tn1~^3K|D$s{Ra(VoxY^4DrD_ zu$KW&Wy~SF_sq;90_6h2*pYq!@@bls@%m#KIFwLzP&df^@(~jdAD557+Zb4lfIl%O zt``cgvx&tRipa;*^rwEx|2T8es;Qs4xYNx&^P8ccHJx_+1LyB}g-04!g5)JMEnIt* z5=2ex_}Bb#oi{eYSYyUw)`wn-GGDoDhOr%tf)B=yB?ne#l=0G(64@=dgxd@<868XY z-yUI~|9Et}f)p{0;4_1DjhH6~9l$J+$_Pjddw!Klg*Z;rN{oG8p*0@%71?kQL2xRKm#@>*dqwWtvY=H_R8hsQ6}Uzaz+! ztcTUu%;bcs6LY5G2I0mu`^9+!^SemMCf+UeV~_-pPa}-ntmaP+^11wzX|x%xG)Ff( zeey+P|4WD_aXWpkE``F~UcECve2!}=9B(@klJL24%`h=UU2NTK5>gkS$u=Q05s1+y zh6YV^IO<%`mLJ&%(Bq&$0gz!%as;*U2ZaFpWSq zhXwS3ZXTF?r8{zmtGfe(iSF~pbx8n*C{{26C2v<~jqXlQBYKay8OGXK?OsT3&IVGV-)6b)q+c}%fFvPZ3Xj6h|?vb#sWO<(izypxk_gueCS_l6SPPi=ooY-73?^jc|VPA5%ub(n<3Bvv_x)*{=*ZAXiRGvmwBG0g147gE{7#e$>i60zNLw5Xc5sShtd&1 z%YODFz+0e1RHykaWEr0T*0qF*tkTle*fK3$CxnE?&`ESVEh`GG5I7fDF9Eq_ACJYY zB;rLrKgEe^VXg4d2Ky}fP9c7V8ELTPk+4^woWvg+T}E@Kiq2l8=$3fbP&5cdnDy(X zNdRs)N(pf2bTfhoa(Z=ybrsN6JO*lNW+MIYYz`W^CEA+8h}J0>(z>ZFXo#p!9vsa< zFLMRSwZ;h|fnQ;!OO8#awv!O%D3oof*^fm<0jB>k5s`dBYJU_%BHwAM4|19&52naD zi(!wnlVYIQ;4{!nvo48z+71BFw&1NVW@dfnKb;ZG+I=&zw>1BQ{ko0bF zs&v_#0VCK4wWwLf7xirCT0$TZUu&Z;BB#;AYQ&-HslraIk?RdE?- zp<%tD=cq4BUc1NbRVxsCXKE~(#QP(`oH66c1Wo%=%3!+9Alc-5W*QlPL7^HVvo5uC z^BrPC?li+sWahI4a}E&|Eywc;{;SRJ4PA^FJ-It^=cjfr-${RI`ZJz(8URV=XFI`% zQB8;m;RExy3225c_ICCT_qv5RMEJIYjaC5a<8ckEgn5XO%LxJ;QD8L3$x8VI>gpiN z=^5yHq;0qrhex zp?nO;l=l~oK^Hv-&e9mPykZPyFb0&aF}Q*;IR1Y$1_P>>_Nt}oDJ z?I4U(GrSR^OYO-l#(b=XWjmo{PeO#&elUtAzz)Qc4*#}NV35Q z8!+!f-cy7Wz&cW0YTTjufkldzOQ6`{=0yid*ZH`4;}(PUh}{B3o1~+T&Z?D6r^Eb) zVE(2bK?HK5^d{r3Hx4&NEfr511ogAr>_S^hYyWM=ew%lxhb1nZXi^lUz7K|O_2+vh0 zwiNnrGWHuhVzKsk`#RZqRKmU|><-m_51Cfc?grw)x>arnwg)G$a?= z8Y1t$oi$SF2vDOUo0ZKHzmRIM3Se5Z)Xo79BRUML3z8Ch5_;n0;K|iyyjrUMb=#8k zgE9p|M7M%q{KN^yI-8DRcrZ9+yrB>2&^yh*LniIb&%STS^yuU7nSpyHk_l%R*370< zP-{9Tzw#TCj>Plqd+MCa-_U_M8r*LOG)QvTCKSn}Z9`PC_sBI zjcsgmT+Pp7`3d~dY8L0kc7sL?zanGaMi8@Z7O3`O#SElrl|9}Z>|4?<_U&zb?6Gwf z;tYR5BE89cDyIXIjWQlu5cV^}K4-mZ3KE_i#rVu+TgYslA#w`PtVQP{;uZ_evWmP+ zM@9qVUWrFh=76hF;}9#I#j8yGP3Aln=y^wPLrD%dabx}GQ?}4q`J9%f^RWDie`ecm zvgx~^{gTfZdyYwG)w_B&T`eud_LXO1hpwyW9&CXYdXY^4ICDTYE_CR0OzB4G(#3S? z-Wz@+id1?Mk3r437Hr}`=dH6A!R5^#e>3xdXd|r7n4Ro@RRiiu5}0! zr$f*F+PK?u6k`GOX7E7QMjOX>xYkNTX(5q?F*F!uUO?)}3JO%}_9HFrA+q~W!{&vC zRcVYQAIV|StsaE|!8(&~cyqHSP^@M~D}+ze9uf0*yxENSQoJE*8igIl$Br)=4}NO{ z{6;}_!NfT4lgg=SR6GL3F)s`#T0X1>NLNB2sK9`IA#DlK2+9dY@C8xDi`?FBVM5k{ zI^sW&YC`2gG-xT<6@cRP;Pbb<58`?aTlca!DxP5?qFI*>^b_2n^^owc$Mr&8LVuEv zfvA;8*=IrDK{b2$Rk0Cbez>~;!T1C%&g-PB!GO>lNI9e^<(caNV>B45Aeiw+<1Ry_ z%Mb}&I&zeZs~>p(8CIQJHy_gU{1PsBVj@OB9hyC8VNMDqu`65Tcb) zVsmm+F-+(WV0a{ZfX$}UgsiA66~dT;KGU1quOTPrK47dgYmKTtKwj!3P1B-e>qlP&;#V#MG6T}?#sUzM@)Gj#HAxMuTQ;Q2omb(zI z&Io<+V*-hK_f1+II{yyuzT@3C+D*^s)4Q1!I=BPO3_q>jzQgji?M?OruE?|~bTO?8 zat-{9%4{T9p-&JRQ%mZxXLJQ#EC9W75n&kx<8IvNFnVBAlI*Nt1+1z~3KHZw--n@@ z%7tV&0sT~u?XJQAJE)PBawv%Q1c!XydQjn^|gE4?gC_ifL?eXRWuDz31(i?uQbg4+KnT8s|l{}m7 zShEADSrR>{CVbJ5IdZCUD0tS3wN8L^DStu*u?hLhDu`9l4%PddHRofBZr(|EHP`F_ z9?L1MgEo4z$@hf)DPg}l>Iy06AVBD#imqPRNVo}BMm_gsV@^V1r+z3l;@*(i2-jQ(++%<#IOQvfDSEY?ai-*nT2sO&F7t7gx3vEE= z!(&SCbZ;}qCY5x*q!U}j20?lvHJA?#cz}8-IfgR9pW?j+?EXxfHov>;PkFw8>h^8+ z7HQ>3Yeg(?*hc5*W}B{WxyGz(X^*P+nCL!ol@&;)DqJM#D9cx)o=A{sJ~|BAGD3b8 z)PFQ&23d-C;a3HuJB_7noO9Q*ON?=6coVHOy<4Q;)%U3C5CzLjj5KS^SPPr7rx`Jw zyhSkB>V9q8TUG+dkloO#-NGK+B2_&fl`?*QxTeesNXh%KO*#dcC2wb>wEKp{O(760 zH21_7QQoa#Ukm%v7Sk0~LCqH`2Uxv%5@VB7fRXXy0I;896ZwJqo{zMffeg!b7TKDn zXGUc?ue#mLqRQfOq3!_xQD`EFv_S;YTuJ?zR3v@8uX{_MdAx5$*uOLE)3CQ;-xu~h zTlz4@y&Xy%WChhr{!&bg!W?(51z+>W5XgFHAgtZym^~G(KJ6$-_&LMP1fIcGj25ds z=-8%c>#?8NBP3IC=b!=5x$H-=tjr;) z*L&>>g$)l47#FNxMmCVhuIvrOBwo zKHy&RqyV*n5umMrf!x{#{9ODrw7TgE15*Z%rw9mIgWa#QXUZpoHg)&|n9*JSBMexa za+6y4zh|P+fcJ;`kFO&UNR`Nu+hDtd#i>6=KrB|(l&^*iW7OC}#j;+Iqe7;h`l`I0 zB&lLGqt8P>lcXNiif9bN)Fbm`qh3Wy?f0$0^x0WZ8GMiu1&!HJvp2QkhHAA=6J?Xx zdn1%q^|0t#G#T~gNoU%Q^H~xYdHR^eFjN(x>UiCvdLNJtRCTK#RW@V6yNL1B>`hZQ z*>C2-yccb>l>KhHy`8Pd_FeH?-E2M4!zq~&3t;N^1H1ZDz5tH;2PDuhVJl{PfF+ho z?#%dDl8L22_b%Y0UaW@TzqkLk6%m^B4#L56GgjFY+$!leYY9Du;P8?Rm`K6#y4q!~ z%gogX@6oq_lKHfPrk5S|yTAYe6dF)4K$-LXK8f3lZl@!FGsc3A5--hwpiai6qC_|_ z58+)NU|*#7(sBVY@dK&(x74!# zb_#TW<}{$xRAe)rv}z4CM}mkwEwB{tVSa*t4W-$_-6=$UDc+;W{r7XSc7__6Z{N(U z0puZj?8#W}$Uqy&rn>GOz3$)F0 zFk8VP9RY{DC+u^Z>Nke-eb=${*VfzUUQhyY&uI(T<5vj90CenVo@H1J>Zxwq2Oxvjx8u6zIm-4bBC&m4zW+y-y2^z6-(G!d4|x|6A<<|qtb zps9*rP*egm2+=*%)Ly`27iJWYAvn#=<&EGR7OY6JbTOSo@V}~i`r8JH7RcN$?CvPI(a11DrJzIZ-Op+RgByAV{1x z%4e$P)|~E=mo+6j049RHlFA+VW86xYni4CaDE>ehl41ptAJ!>fh~TzGKO^&!88?Fm zgb4A#5<0&C0iK%oI(E3LF{U#R3&bo?_@64d72+{XN4a{aAZaueeNvBV)#lZh_5#h) zR=t<4wyZU}4TcAiS)E=jVW7UvJAm0I*8;4PZ{y2B%hLbwsg{&Zxq!a^7|AZIk`DFN$Qi%)C7dY^z1Rl=LV)W_6CCZ4rL(Icp| z0JaQ~>YdizBM=~DKEi+sn!5_H@CC}1@oS3P#s z3PNUL%Hm3+ETp*nTqR(vKPTx8lmo=H1HF>3_LG8CFr ztlWiUkl}^k&7Uoyy{4(+KKLd}Fov>1#-e%|KtKjKISkRL{U8NksFfTaoV~PIBgEJA z;DKKTqZKb7xvYn+2Xt6a0pXhu({yAj7NN}J9 zL34f<6q4Wx@yM{T?G>fnBXnZxuQfMaGqlx8P zCI8DLFt-+WM(6*PK8Iik+-nzOTA<{8A%h3ZYP$ll9P?Db*$)xXL)f>|c}rqZ5et1J z4@JljFVC`clfg9)E;SeA%>*yHrp;q`J#A%l4fFtzub1JVLF7cqz!IU1$xI`j%o2JK z=}m>@5|20lA=rFLf+r`KecAfiWdBuSlTBFTe3bJswpO+dOdqCwQB>VN(b+OdV~QzV z6mWyMgUfKBf#}q@onYp&8jCZ717~{MbOI=Z>E{eF48|buC#=P}241QgKGtn8=5hua zuv~8>jY-88A#xzoBHj}$FoaVOafqR*$_QH(33eCW6_lQxY(9PI46K9}PN z#}&MP%ABGdBU>PbV(PW_Z8J6ua zm1JlFzo_*ngVV;YF>+cfgi}`e7AoF*#i~Kx#Dsf+yw&{EfXUMWA_MLzc z#dQgp&ERV%{J7a*ihm6YgV{pW+$J%ex8EYdpT8Fj3kw&ryp<%W5yK#f6YDI`*uoZ) zI6)k=5=Rf8L1_zJaCun~%RA<4rdU8`57y|x_--FH!|%&8``U3_T$ExAR~29hRNLCk zl7eOlM18r55wY-#67~^l=G|`JUz`bzCM0eMeXwxqynsF&l7Y;uNvTk*+P6?WK*PkX zKDQI?QlT~0F!v1NG7|~_kPS?Dr@Hf~K!tr=Jp9Gnp9*ja3Xi6{! z0Y|zwLv}(ko8#>Vx&0p9o5G(bQjK@9uAh*+iG7$$jeBktDE$rg&HhczrKJb)#=$)M z#`pm6?({k>1)NK|7WTN}2Y~-;yH=!D;(tO%X!(>psSU$NIjUp?7C{h&>3agEsj~k0 ztOK7)fLY_EX*C8F%6mi-kZp^i9(E8salVi4fTvWqg78FfK8yeKb8Nga%uJNVrNpbn zmC;&|BOOg(PvoielKjG^IV5y$h^lDtJL0{jqGu6DL-cD68ie%<@Zj@m(p)^O>PVXy z6w$|FYcUMtWx0t_4S^7q5myu_iqLwo=GTGO2+nh>i8e{C1~p=a0eff?CeM&*Ew=Hy zovVFjo*9#pT@qlP8wM-uX-PZ)XJ&GS5#KQAwuP&754N1EK!Mnm36Pl-`I+b_EkuaQ zbTG$(#)s`N6Sc>@$%DqAjb~`m64i=&Fm+b(c3FHi+)4|wA7AWq*NFsIyOxMyr&S_X z=CY(V&hdB(T_5Cil1qT}iRU&Py_O>Pi<_4mj7&riZGcb~mieb%#{{_IuG6$f+YN_H+22Q@Iy zNhq5a8%#!U!|8-oO!CDRtQr1}g)-cz+AIu|vkx|hZ|s%Sr!GF_cfxB@E}z!00osRd zK~6!nCGJ}iyXbc%q-g>D5$pF0$@aD<5FPmm4+1&YXtA%dcde8V&TGZA6s=970W=gA zO~;l6O1-^p2(hHJYjOH7$^{J*4%D?zIJyCxl5lQZg$wwDAsdKLDryE(g;^k|2GI>r zKJY4%qIf!)7c}oV2$wG*WYaS5+)l}R7zis8jU#uQ6h6jSa-TdF+fT_j<~kU7#V-Lh7be^sU#)oqC0Fi5d3Vy zc{ViZSnGWCq}dZ1`^ODeIIeUq-lYjh0#U_}ZUi9<@J|Nm#D6@bbB4XD|qHcY-@^m>{iSU^JC^MYefp=Yg%P z@j60Zc*y?>EMzI1i;5c2kwQXYnqBNl{v)^6r{R~tFh0eCXs`Nf*?`zuNv*B8p})gKi>~@K}44aCjTk1Fa&So$xQrzYuDeCh-R}wjAvVKIoe; zcsrI&v&l1oDL&3P^yfMXG_RJ_a<}@zjT=|mwzXVGJ@-?@d<=Kk2ba!gq$Vhdh^5_C zU_JG*Em)yY?9QDk>~XW%_2veG(lHGt&v`bOq@3C%=6+yyofR&!s51gbM3NF|%CWbR z{*|}sE{DcA+DQmU3j))XAnPk+!D+Xn5iy5j%DUuXTqsnFi*gU646ywK9rh`TtlMV+ z>(ALg*wcgs#diQfli)<_ADkt8HzUE~s5!H8b(_G`=)LH)!gbOPpoUe=-^?NmMt+f2 z;WnUu3AEfE%_ih&!h+n{>cKnJg0t1Dx}5{CtA6a6u(5LSlnCo=UfKpLY*2IPyWA)z zYHkYvECWnx-YSBJ74U9s0@W{|`c;;R<(hxA?pZA zLW}4NSDxJF>~?2Aa^!tY%cw0&ejN$UojvE=!>mU(+sSYL(z%xiSm)f!XuH`om10>h zD82y^KDh0t;U!RVm^$KW6K`xl5G@O?(NHCfci^F;-^`uvP!5!S*73+QKtlV7D{WSgb)&Tn>`9N0v!oavf*J$^x#y9KM1Be+)}l< z)vqzZ|6ckA3$(h)A);CG1ksAYYgp7U_W@%yyV&D~v)U9c&k?XIz&MG|k=m9}bTVSK zY8Q3a%0)E(xQ9GuwI{_@0&K#28h-A-zY$r@_cJC<*+l2CGz--?X~ZdRh-!H+foEQz zN|D)7SdHCLaP%Jnp^{GZy~q?>WCvOHk$NR|sCuU9$nTdA`Lm8P-BCvCVB z5?G?q<~|4YyOc0LY+>#$EB%DQK|TnH#KyZ62dR`DaH)M5#&apQF_&49D8rX1Tk}>C zB8`thy|;rlD#*(c|26wGAn_@v?FATYUK*U1%?iP z0K_d}CM5exflN03J7mz3y5*3&0vObmNO0hxl2Y7*s+Sr={0W%v5a|J4y)rG=U(a13 z=8k7xVW5r z871@_mR1-(HbBbM4#G%6s)oO?9%Z{_Y>@zS;wSMHU=}BmZ@kqbZp)onYSbI_9lAN@EqSKHu=8h zfWU>iIa(3YjSWt4w2^1qMCYR=qnqpP>p>v=u5iwj9h|GVa-E?_iCo9D za|q3by@#i|LT|#eD`JNBCYcb7aYEUf< zIo}8-1(d;{7KR5!R(N0KO(Ei8a!MSXDmWnGH@Y3?PFGO37S{)YNgx%Eirvw%Zvmy@ zk{Cy)$I)rcpv?ZH*d5`aY7X~g5O9Yem__Nx-}`v`t#fZGn8^#s=fc;@VPW@oC%kt$iipqdX@yPwjnmMP+)%Kfq@_xb@w=TiI1+0-9fMlc8M2( zfl9)z^7ei2F7r`$e4+D?ns>=YzXb5nUwjz%A4!*6x1@sLO~>>>O?j;nSS z);IE1R(B1e2JJSK6vhtaDq>Mb$PUoA;#Y=U(AA2>?M~VnnWZ55I!OKYEaV15)*1Dn z2E#6rDEdTTalM5W?V0E%v9N`m#W3OnD;;6xy280LoIg8ppXSQK45KtCgCqv32{}kr z17zfz*Y-aVl9&t32%nAe#8p0@t{U7_a(1Y5hr6VPFoM6AJKJDxAD6V-ud!1QAN!oSUs;mD&;_)V0sXEv2f@&l zQR7_s8ebk6O{m&=k)0mdzOfxnR3BhyMQn$~c4#aZy23?2h%y+u!nuo38d3ggg;{l1 zIij|n@81GLmwQ_uC*L8oE!&oNvzidZlnTZIw1lYpO~??|5d?MpUm!>XV}tjApekZa z+(pH{q!KXTecvBOEC& zi!joM1O91*b0M5-8xVDr8_f7Ftf2Y1i=+H6eGIgy>I`>;difC_Kkm!z#nnmt69^>)b_@sx#k|5n#vjR9+M>nuZ(g2XWuLMy*jYg| zp?jJBamHav8s|HJ{LWmtz}8nI1VmwtASQ8FNCZ>>#cEZoMd7u^lOKLbI5*Z{CK5U_ z5%C;d2&6EjvZ>MzH6u_V(tXlk$_DK-;X<5}OemE40wH3K>BQ1V?|0Dy+Hd|XgZ_tH zdX9iia0PUI-!(3y7|gAI?(80gC1=H-@3gb+X0LlYkI3cD{WC<$BhDUoF&OO1Ljbq3+GHEyE>ziG)7*l}A4#>MBiUcHw5@8Rb{Sj!{AL6UvZd?eoRI~=6 zIG;lxP&`9<6(A{(_x@a8dNhfz%vTnKN$^fWV;W1p6LFzoVRN^>>1vVlqdshR{yMIBD4V=4}*$zO5jf|ZJ<10^Gto7encW58Nv#yxP;Lv z9QY9Mi(#=#b?aeF@UYx_dgVKm$D<+hf!btuz0yMK8wgwm90K3`j^Zfq+67 zN%_$0-7hX zT>{D#%2&$osSG=|Q3~V>Y3RNtdA+1=z#vd5d5OX`v|$pgu>xh3h{KBm=bfbL#jjv~ zI8P1dbPd_0$}(S&{87zs0O0=j09>uw1mN_OH-ymz;sTfPCWxyPJyT(#bqBeTd8QiI zkM&C7D-oe(>}whDe=W@-J>tqn>{0g-YQZ=#IX&;bm&aOF_EkmOt8txSS7;`Ro>SHB z0JpZAoq#As@=W)6M1^*k#rKTLevCpUff4mDzUk~ zGp|{DG}W58(30=r$B^33>5;z`q1eWy@S}vKaHE{ZSqfM3qg8$g`I|c4rsoXDEmFsk z;^>yd-)P2rcj$LJM(oUO6VG~?$-4C-gjk=(M-<`{@{`N(7@J;`x1&>(>$U@3K3M5+ z>{$_j&Yh7bX52P`JfUG!IfsLB-M9k9lxaiJh9R%>k{jY~TaIxGVEbr~wsxa#k=7qT zRCgoR9d-JAjWUS`?XPC@P?~{kC6<~i5vP)TQf!1QVIoF=Xy`5A9rzQ}qvI__^?D5` z5Sd!5Vr5Xl4%;e7w^M76aT6}H8j&;hR)}(pT&f+4sGS%py$~#{am+QjZ*PlRF;YUb zj};)21~jztSp#i%gSQb0D{m zCEEiq&Q6yQo8NcJ*P!gtSc|ZxFTg{-&rsqq+0W+fm-*!N&1YrPJid@O-gqYOp3S>w z@|cddBqL3Fv6rH|Ifj`4-wTsBzlCszpxvc1x&ZE5(|gSB zGz2EAL<{>nVh14hNYP_P#Zgi>hU@i!9E=Sg1> z^)>Zv)2K*ew2i=C8tnz7$SKDB3OSFf`4mWvLb6?EEU;Po1A?YI03Ws*af3tZMOVng zse|fy2=twh>LwuOFyqaxYZx@H>bhFcnLC$mmoF{YTImVBttr^*f?Zp%>(tRJ3;wD? zd}YCYsE+<9Je}Op>kD>6!LC>Lt|Q%FzOM<*tO@-c)>_6^h`YcpgU15>|W zf$ijtye%u(hScp>hz~5-Dvi`B;eFMLR3QSRxo=~pmQsz-+r~d=>JdO>R%8rd()a_l zhf~?H1v{=_M--xC1UJ*0mVfhUw}3RyS0%TURfXFK6UDf9u&wtHCUXeV9+p(Lf^6<6 zErwEDuTV#7gz*C7&^TpdrQ)>es2a;`Vb?ey5-U`KuB8#qkk49(0bjHKP>8&4SJ`%9 zKDG(xcqKaDu-vqrYqVwUJ5h_aa@}id*Ykj`2oGwUPd0TrsAQqf?1YuPJv?ySAK3qe`k&4bz}tLfl#np&->teAlX!rTTFo z!=6?4AaJIBQvOr4p^9kkw` zX7K-~Z7|z}0+o=ud)fn;u(Y*lhm^+#X&;BKGGlKct1)wk(ur^Cje3O1r61CBdE(>1OnfA?AKCtg zxh59NE@@;W-qwVKl0m`7P^*2L)rCdmXL7Gom+0ZFE+|7p8lf(jiRz@i*4Cun zcBdA`V?i_xOJa>F2>^$1$T*(&tQS_<_GNDVOu`<<$I!~M<1thG{67f ziEX(<{b9VcaTOydaQ_I8xMfD~yWS1bBrgc(X&YFg(SDZe0End-K#qa423NEltqFFW z%rc`(!aJ9aM8o6~?k!?ExanzrD!!EkKhT6$)=u;l#sf}bJG?x2Dg$V(4>E*NCNAdi zLWmavY8V{D>I-C2Dt0sXQF4qco$pHfG^*E66=Mq_Q#ycQh@AkKK&el8G z(5-jHaCYlZ*+(PH29hm5Bt;EYcI5c-vp_@k(d@#`q zkvxbyD6|&i(j5k*9Rt1jZXspyru23vLg2^UPRH^i$B+Kp49VF=_JAlwIvTepi@nx#I}8)Da9|Wr1l#!Tq?TY}}zktdD$* zPVNv_3+GbVAFD2TKNi4pq8E$BC_AyGSmm@MsMt-|SgnWCj@uK0EKPJk4XFt`pt&LS zTR5t*EOeLowha#V?=+kjhO?h^&WHQS=Sq0eKIxq}+`nVedFKt9ZW@9)FiHsy>F3_Z zaj%-vl{<_`>g1GZOMmJK1D0N6$*ImxaS`Veg>cU?hcP{93_XH7GrKzlt7g^#m=N!q zJZL;h^XZtqFCq!=FMPTypr928R7x149Sd1af#Bii0v0$&Xhbbm< z%O82;yL#hd-jD$*Fe3qMzK!priwI+DUx54nWD~rk5X16KR%c}Dq6J*V+w1x*CW`Bl zFl!6KJu%<319e2pWbre@pF>FT{P|DCBFh2Mh+ISP*j;q^(G9alk5< zOLLKmPAhL+ii%s~n6*$Uu3&sUVMnm@N{3BBX(b6Q520X|bb`{hg|WqcfPO3KEGWhB zn4n<#CW9_3k_3ZXt;`(O-~3(2xsSa*Xvi{?>vx2n^s+6nSN#>j*1Uer2it?l?-C(q z%&$r|Sa5p#J{PTwVv1aySy4!dAQ&M-kW4dBu8pu#r1bETtFx3P+Ib((I;*vc+{Va7 z=&Rf(x+e*iE6${>{sL|%Njl9<&37Tu#s-ZgF{Jrt9PS#E#?t?2%x)iJcgWlSjv;LG z=z@TT$p6GVqIj|?Lnjc()9*>Vh8h z8v&s2mr0Q-FWY~j=XE5e@n=f=K-ySBM=W$97DWCQ<7NDilYToc_#^iNvAto}{vI$r zsd&t3yb>-99G7>;<_oRhKWFRW+WMG)9fS5@94!R*7wn$I<4CU`Pl;=%#zyK!<`w&l zi5IRRys^7w%-uZ3wm`21`_e`kF691^F?;x}&kr7NA{n5F6&1VNCF#d9Nhqrc%KK)Z zJRSf*rGkJklttn`olp*g?gMW3!W0x#6?Qc=%FbWL3nL-~7(ixG>9eHc%VR%F@+>V2 z{(=hXZcT|wS3qISW+nwN!ZVryfP*d+Rt-DJ@|2$5Y1m43_SgENes+(BFH{F>1Ib{7 zX(}SdsGmI&8*Dal7m>u!_AHRng6!PIN=*EVV(yZBa$*7$Vcz0A1}>%KgrrHjvKzL&d%BMG&~sy=j_Sk`&pBo|IMWP6;x2l zO>4&sG=ywZ*fu4H+iVvy~@y0dduJbZQgnN_w;=n+M}{3zAJ|NVkooHaY*Zs%rOS;DP ztuYz?{=~VbyKKKoc)`Ck7V*Mmqju>i$SnM90daX=da5h`&;DH)KRnuNKk9Xa1Uy1+ zz!2A%(w%PhSNia|Q504Dbc}p|u|*AmABlz-UE5`6VoYntcghR>LSpy%(>m>RMWem6 z%XaYVl~eESKasxurn22A2dneCa1N;WU&WXlIyB{I@3qoDjSWDFr|vCJzh?iy$4PY5 zm_K;TjvTW?Q3NQ^b!At-BVDA$->0jvt=zpbib;VB-T3ZkK5qv}(+X1)J!1GnxhE`s znb@tuO}2lV?SnL*nh$KVLtsPf&^9|<*CX2OC|%EMcSjM8`%ixVXks>ug5_n)_0*_6 zJIa;8d|c0nNi=FN>B(`70aYKf1k3xCy3S6kDt%Vd+b>B-Uclo$iv9_nOka`spU(F5G?Pow{3hutSTY)xb2 zp27eC|K%4u?8;8t{_Wo9`Kg^7-@mBSlGaN)?YEt8^KNu`r>)Yvr*yh=0U-9=)L-5i zpW11Ace;bJC%=B%FOTiCW%_c{dn-EK6+L2Z+;@BI;-2_C{)m!tf(=%gWV&$B{Od;Z z5_M45+qdTzop!5Ay{*&T)of4ni%$1u4|w0%D?RpV4|~pUde|p}Wq<&zaNlV3lTmli zX!P^ZK$5=7e&t?q_B-dXmVG(Xlk&OU;$zUI;K! zeYE7sx!hYxd(!SH9OY^m7xNY?SGKIw_`5=c$_DLF_^zj9vHt=(IQbs3t7FUs;UXI{ zIU!)?pJ4kA3`WoaJd3sG6Ztl@A36YQc}PSM5b2-!+*_4oXhkmywJ85gj2PMowoFum z5O9&?uu!ccV4(7SH!&{ zFF*NE&4Z^H?(#PdL z=01Vabq_46T(n2ar^=t4`>5Xe8^_en-#a!6@L2vW;aH0D9hTXlu zf;})C{cPCo9_IC*4MUj5?(Sjt^I@o5ez|{`S3v;c;s_l!VAQ@h3QC=0$rK@P zM@-Z17$RAb@-r}NQKW?llrR{!P6&9e3hn});g53Q4+uIUwzNBf7I#Dd zarqKomXHblqwI2JV8R|9SbF5K@uzc=d`w%TbCR3cASp5`eHu~dDdM7cGd;$vW?wS^ z#_ea^6*vQZOED&xBGigenf>ZGWaK9%eG$JH+Cz#?VDaT6|e#AZ$#qqRnZQkCU`W zbiwJ-Bx;4GeGw}>k^biy88V@fkqewplj#WwFV3{&--~z91*p1!d9lR7IPf_%3DxgXfdv7VngRs`B-EhP2`e{?0OM#Rvm0&DNwE z^IsPg{mS7CC}Bxo^$du2L+uR?T8l^RnJ1W*bq)DA0D+JjIT1`f9)nzh(Hr6>R*M=BYuA#yFDr=1 zH-}CXbfs58kgMEW<>M>8ztCp|(W-u0Ro^4dB}H1L9x|`ZIYoZl8Z+DV++{J$C+W3f zJ2@2UvxE!v=2Lf{_b110MI1lp%xR$tudoD3%@Bh^xU^z=g4k z!6hX;O$Y%ioqoui)`g5XVZ8|)VMe=H+Q;ORUwC`eV*u|S_x>?No}KG6#1P~@K)P&{ zSvyr06qAg#2Mna97r7LSRX%r89BEQ~u3Cf#1|Q-rOUJ-8Yd9POi{yg!Y$s((0u z%dwMmu&t!ss}VF;7%+VzanB~jJVT}iEB3xJ@vvpLVGYewqR+AZ=^8EojQ<}y2tyap zXPUbPyQ>Ia$Gx2$;L?Rym?{J}gO4fkb~vz+;R`+}qdS;YE9L3;18*98{;Hlce zcu&bKtDy`b1``YJ#;UuuS}Y-xQ<0S9riSIpU_)37*%H5;;#S$ND`jCj9?sR3i0H4Y z=Me`2L<-_YQtpU3DIgM+X*z%yA-Fdk4a(wFPf`P$a$^E?(U?X`Ho^csfr~X5(?KIB%+jTFDwj#iBvGt znu1j_ze8pEofHyA#&(F3Fs##znQcvzR{3`X-}NM%eK`Nar2BuJbk93+t}5a%5Qu*U z4F5HY^Iti(%w5=#Kd;p;AgDA%%6D7s?pA*%`N@ImyBl^(!)|TZa}9gGVHY**;)Y$@ zu+>=zAtxMBOZ*zy)TqhV*t8v4>!zq-|5-ipNVAaX7Uya4Ka6jF?kJTi~s zlqaHgnMdy2Gj;owvo|a88x_ua-91sar=8!Y+VV)adA;K9uY;}K>y_xViaS#;@elkK zoRDz4OY$?rrwYD0q(T`xU^BSt@hH9PmKkcGx zs_r{<%DHQ*(PI_&FztCT&54d)_>(-Rr}=GZNvuLwIunTGhwF0aM);yfcF(GOIF|yLr=uWfW%% zVA$Az-^V)IJ>QCn8oBkI$^C8iA~co#swMeNi@TUea%F#g+1*ffkG0w3ZMN~e5nnwS zKu!1xuv$m%4tt zuxbH$BeGSzYuK5!Ln$U2;9>7}U$p==trY-btDz1|59`*oWwYqt&I zynnkbZ?|v;X(V{uwYehk-diIDn1E-W*yc$(!mf%KNg7U;ly(~i9`v3c3b=H3z@kYw zM+zHK?PBV*3(v@%im#`CqZ}`<6whjRXSZ88`|nrcODbsH6B0CMgtWtv1I{1Ye=uWDbAJ*7x!oPY_K?2(3hy5UxKxQ!rxYO9^q8us*)TJ3m6CO)RszOC!w zt#+uc2etm$ACw|@Y%5EZqE@sL6k_7;@K&0^HeO{fMDX*;=s1f`GZJR)1A@q4P|_Uk zGCUv9vf_UTxyPi3?!bFH`E5P^X0ji=OpqQ)g47=k@y%bk-`3g9AFbOPb^Bf2{X(KY z+`1!s+`D1!BR|#8ZvMR=lAMMump8e>%@^Gpb+@cx8|v=Oy8CfGsHNuE!YETp&0wUJ z#mV6xIR1Mos~PU)y8WhZuM)-)Db$9#pXq0C?3ll~-qe}g33V#=W^pu3+L|E=<@^#z zSdtI0Eav3LkX$sfm6c|cG zIFk-H$kRSz3~qK*h8Zf*bp+RJBg=_k$;Lq;^vuoZ$8W;skyC4yTg+a@zRL7tq|Xgz zFgR|JjG?qGSYmskO>X0MMoCte)(64`0#$_sNfL$**)z041)dXE)80{fC$q?s51P~k zQVA_9e`rI=mX&X{aGAQH1RbiFqJ`mfXh){}zlKXgpUNFIgRpyv9XrjAn+9D|jjr7y zUCq|g=Q>h6fcNh6FDn!jlmYCvBSP8~cWfm&p;AA-;!dsTkyF>Q~gNvOxZnJEx@QEx~&lCkSiQ0V}e?lLq_RQ z&{Zq!KaY9F|BM{g6C7{-rfEen=H3JAFMqcwh%=EaxW6TZEPQT@$A)J#Gv_aWD0hTA z=n*+rsKa>`$zpD`ty)Trcf#>0e^NWcm3w#wLEuFMYYG(=0=hJNB5HIvP@`?(e3Dz^ zpsq#P-Q#kn&djfvZbwe1o;tHgGzZQdZp6)WGyME$E5Efs!qY7VgCXI)ynh$gN2I3* zVo79$FMGJ6Bb@@N6i;YQ&Bl@%*&S-l znLy#jGUV7JL^)CB+tx9Y(DqfBNj3ND%uO6TQDe7fxW~;9%q{m`q1hmlnuXiSmWXuO zBmMT=2Vo|E)fFxo*)+NQyuX5VDAH+5K8X=dC@Ax=jfmUyiWM3o<+UOo6YF4vr8Oc< zktag~pr4KtMiKN(3a(?-1N1veibTF&3?LXI`6NOqC1l5Q@hUfSrOS*E^fe34eaL?} z@5XZvi!QyD)<-u2dl-NCXOsLbgh2}7c+_1b5SY&u&Y%NMo&;s;020M$L>nx|M@03? zD+qpmS@f|D-j+piI7b_x`0JGq#P4?>0H18L3(^t=A|hfyd^Kb%S`~;0IVt+P;M(yb zXGOF|EG1$tC*6Ulm{>9GjBSZ`m9rprGni_cQ>5)fZVBCm2&k}rgl^jWF1gzky$i!E z@9QY>lU)7XL{H_B{E))KI{Cpuy~-H2=Z=BIW&L62*03uZ_;d+vR+$;6 z;4^aWl{2Eu{a`4&2%=M;n_C^F2ZmVFcVM$*!rb~Oy-2Ct@dSQ`#HABl^$G>0 z4mul&yc-cs4MZJ zeqr`7anGT@kuKeXoexo`L8vb}5{^<{r^ z!S*rqgG;RsPHoP^N@nF$41 z&OMSB4|po*2Z%>(mF$~}@B4(UhEIqNL&QS0Q6lJJ;5H0hCXY*AT;{0S_}&9%U4Uc!pj%?dHl*qR*h$ z9i{xZjg`CQF*MR45~#Esx}$trkb4Av4_NvufrV}=7)`z&!hORirtB>21LEt z^YVRq_Y3xE)HTycf)OEjZD2X&Y%i+Z);@#To?mKPfZvB99Oi=Bk1o1f^X?{Qgg=N7 zYC&y*#(=DWc6HHR1J1H5krIGc5$Ym9rMWHsV6ZJ-dUY@-fkYr$cpauV#v-T?Pe&52 zzGE|h8kH>psRJr-P-0B%feYCv5N6*_v{4|Eq=j=3| z;|CZ=nOXTNn^3|1ltJSskf_hcBf))?vY6~P0WOEAC)p%qB1KsZLDxWE5cZGvn0nsT zqS2e&ap8AC3;PlRLYELDfIo<5*8D)!UtJmM!{?G#OE&<9BGCdP6pBKMPetaoYQCik zzru_oGwVR2G6l-#5QnMxAOjJ*UEIe(9v@)Azq6el6alK`thuiSpfiMzbVO~66CyUq ze!7g!EA$hhaftG$(C~pe2Wb#8ph1o#YNg3touiU9_73&a)PWcayzWsq0zZK~bD4Cl z9WzB}lx8I8UXz)n86(i!>3n@$npX?=g?W`O@{YETfT~v6;7Un5@qpz#9L{ax)9VeE zr%+cH2OUc1=9aax%zoamyJY=SooYGJ_I0rjZ__v2|AeMYnZ z=$EAinutlqLF+iQ2Ego0c?fW$4MeHX_8erRZ9@@LS3WsyteyiDpk3JwV(YVc7VV^>9bd9<+9d#l9T5}kE1Di(+F}>9R3{V?i)krT z%5)emXudSsGTSP^#i9tLX2Rl=u47E zc<8*X?Xi8Q*Ya$W(#C)PyWRFC*8<$axOssaVRPh`4sLLMD{$0P^e^SP=HA9OG0b9E93#LBt+3{1{MwXVA)pqxrEqsobm5qz9tS-2gFeB zFUmq$u10&dhVh5YNf`5?+?!JpM&a>phKS{eIoX7(k~H{CFZ2kz3T>4J4rwqq46|f~ z*p5!jY9aT-K31sM8fL#Dda{bKv&iRWnA9#v!Xx|B2bC(-*7ab|6FmZ2?0lf7Nynjc z0U3xK2e2AVa$IyAwE;>rrb(*VOp%z8PIaAvT}4pag}XkH{^G`jI0}fWm6TGbQD8JL zx0)Q)b^{hdm3y~x$04^S!v`dQz0hU*blcJWlMM5Y(yvkUN}qeO&(DzkBfRW3?(!*i zl|(`?G0|*3o$j9M+8p9u?TfaE&gzfP@2_kX|FSQ+Zz50y1W7aMYTkW{9>I8QA8oDC zBA^%DCtWKTCCs!o8JK@UkP4k>?rSM&I$98V~28{yz6mpFP;e_^j_^SnZg8of*<^ z_dD*LKbBMHVf}2yn%?2&>=zvPxX#`j*fE7q6Ruj4EeLJEEKhdcK(`^q?!v5Il`jsJ z_o?za7>rFnaZ7V|52erb#V_{R3u?#3W;ac-@AlgT{hsrg{dPvbdlGtzNQ?vizyVv{ zfeAC*eteFawrZkjy_AQ&0>h!8@dDA%$W|;uL^sG@Av7~`yQ`V#-vA8w^(MXo@PtE= zjF_Lo-kddf`-uhvtZf3+KY;fZ=AIu)_wSDn=(lh6(}~a8%l&p^zunaDIj`=wYx^g& zP`~Q6SA+>8d$!k}>Scx=@3lvCUEgaD>Uv+Vd!gT6BnJs<);Ruwx_U)_6JKvdH(@U} zc9WIZ8ZF5>scO1`Pz_8zi*hID>CR7b~E-GM{)Ce<~8au(GEaBQQxCMXgMTDWrWVD&}{m+;zk0z5VWie!E{Ce3Xt3*{UJV?zka%0#zu_2rircqXnJh z2-XT1q)K5wpnsdUR_XlgP~EJF>P{a?uO4u#2kct1%D9^bZ0}*)XPC2leF!oma0k?q z#lhNCoqF6G>eJx91BAqc*Q3!*RTC0u^WHi?KP4*&@!U`Oo=LrT#GV`p z2vx#9;^7a%;M+m{SP8b{Rfj0R19^x7PU!d3{b*c^`@){7MlQ{2ZAX$pg1)SwSayhF zBRnQA6cFbDYrSehqEkbs-`fQtp+%HV?1Ewp^tX1wIk{t|rB95zr^hLjq$I%enjyPu z$auENF8y)+8b!B^yDPYhW)SnJJ#2snj@cn&5VY{)@mxNh;jSFod;`3BJenE3HXgq@ zUfCx8!FY1JJNvc&ojg6kfX@5=%=rp+bGBrWC$m3S3Fj?zyUZ48h)P(Q)N5~pXvcH+ zO{W2v()dTlClQ1r_S{HD5RTZo5t{PA2vf`T?h(6F*E>d-qjHth+$aJO{)Rp(m>ncj z*3(%?PV?$%O)@C@BbeKCXe!s*{53}8w5~M(-m)#ytH=H7al3Y$k-dE!KICWPwtn2! zjoTgL_TzDP_c-QJR1nit*LmxB6IlC0t*C0l4i#jY4I-{#wHS6N-V!Q#zeZctCt+kK zHqt&86(~Ah>*fZXLDw2m%3QZa@zAMu_*7dlH9B&tZK$|?&_y8FRnHJg`V--ZI}e!} z$XM^Tp#jXpjMQ#h(;kfSB-Yrde2>mZU3xY zGtGWG)wZ)+r`gIa?C$B4RgY!DVACX6t^x{C#V7RTVZ2TbM~D?=yzt?!2t*-;GL% zCnuOHCBCe`j#b$&>h1{L;f*e3DIKIB=9zFo7|384rO5GS19 z6IhTps?kxkmhCE?)hrM$@wCBW+EWLjWAP>L$9z?U1vE>y6%`5>Vn zPMy?@1i5cYEJ&^Zj|c%8Xe!ZF%|l#Jv4gKeNPONVPNRqWkzF)4)4_*J{#Cw{SdTdQ zh0uOwOeLF#On)NmT2h&ewa@}gi>+6GDdJ~uHbiGzuNh!ZkEA$11~lBw={a}b8OM`zhZbL_%7Fww*up5yoHOCD%x+dc%v_ij4| zH+74s1%j!AeN#zrBQ)%toY@0fWo^PzRhZ?GOoEI~abDO<85*Pra1!j`!`dp`$Oc)T z^vM3BK8?v5%$+(9oC#-)94jfk(h|MY(xGT<^n&mXAYu_OWbUBV3C6|wOz!2}4oW5+ z*A5B*3=@8{={Z|AnTcHLaNvfZv}r>UB`+e-fSlKpSV zZZ3tquVz0kMe9rM-cod5DIqT~o!1aQRf>LBa=$6r%cW#Pmp$E;vad2ONi^brQi^_B za<`SDAC|OF@~pQx?S}=#tYPeSvusf&9Xp(XL&*@Pn_XC~2oc{&xR9^ov5e%kK+j7f zcpo!yl|DgpcN3Zg(TzWFFL996d<&YtOEfe*>F*ib%MwauNPMIer*#EfmFS|Eqlcr9 zqr{=@0AFcfTbl-}gyZdnNqSQ{4#ZwfCT+5?N%ztXZF;8r(%Zf(#%*$~Z(pJ)FZ{R# z_NtWzN{iB)yLCY_)BSR;-8>hgxvBn^x%NX$=Ac4=#u!a{T=fsmwe@d#rY~MbM_PqFr+4fLmmrQqO=}+5u-l&8- zf3{sTo1u&B%-MF@Yyf!GZ2OL`C(O2EbvU26c^Hc$>72?qWVRis>+;#Qudd5xyQAmXF`LHXo&NrL?(uo?_0#Q!=@K5>WAogT z^Zbp|-A&WkJ7E=2Na%|A#s6}idug6@RV0QQijS49Tv+99VaOi@{dz9fZ~Mid4@{SnxB7i8a9i4v zmaS3BY-`&@?{x3*gw5&R!EN6Q+E_YsJFs7k<9B$=&JAFQq&yIK^<0n8QE<=%aMzUSYx!H1dz)yrRYh)D&XSC)nUX(&CQvomo zjzc8bQvZK=OMxJ#5yHRaqNXS+|(>mqU?6V4}ORb}Yf2;#B}+6|huM zl!@4I;qtZCOY(u-ev4DwU(rs6Z<;caKE7e^sImhVGZ~4t%p>3ODjTa!6AxB}XFh*% z@r{LR+|mlHfzwVi3X8b=?^xD;Ref3 zYE+L#r?yuyw{~&yh(*Dp+4gR;{o33CL$?1A74A1=2QPAmEK0w<2#?n4n}f|+n~}|0 zFZuR(QjCCfxr=HXKoa8ipmt#X5Cj!-w=OQ8xLN5(4%rHoe%O#5y~rK2DE&?-{eYoj z?ykkfGZt+=PlpWJ3gl%B%K?M7zoO;uH)wn7x@^$i&^#drTDi!rT9m#rP<>fb^+$$4 z?FzH<(Bk6v-ZBvv)a*P>#JM%QD4U2gYj&ERoLaM$x}IFK6LmeIX6Gz&=PpW*u2qjx zbof6~~ z8531SwDsoV;*S>ve|5P^T+;BzjM}$H>F4DQck80!PZr_STs>rz<=4lIbD5az0QA6= z{;nb$(VAP5tvRsCM{)-&Dc;+h&MXkXb%S%LW|2SH`|pHAk@w8EJLlV7^OIK=`BxVaI6kXXagNBiov{iy zAWR_FF#!c?cY#IFYCuwj9blD>N|$ljl5~TB>k@eXQM+JNiu@lpa9>FFUhMZ-TmzAZ zPK~Q^65Zk+9{^5Fxc-||Y$l=Z5r$ck9=JF4cG3;IBYW+f#dcCJOvFjOc6_fL*&C(R6Zy%G>g~jH|L|TnAuIR*jbUq%Q>apK zL)}O)kIqVqsQ{44shfUg|1&{&-va-ga46Nllr9d8=)gMSl|Q+pa9VGCW^Z(Lvms~p z+O^Gwuo{eC$bluAB1(!^t2t-)cAnPjPp3IyY`ptuHa2xa!7!5(O_KYsnuP90O=3My zG>N8Qq1|kdVrH+Bhgvarz?P&&$8ZzSM`$dG2_K==U+kV-Y~dU|vDp7qQ&MFoMjs>f zM={z0sR``@hDF|ly=<+$a}6cd-8rO)j~{TqdAooV{un%d)i$xzkw1CB ziup4J?BoG|@DhL65`X9t|7vIT@PQ_@?o1s(>r_TKzY)U3N4Xysl2#0a2-or)1_an(Wou17#ZF4_42dgh z;?k+1U1}S3VQB>{vPu4tqdT`A&lh)pYO)fnyS*tg?6PUdemX80tIa&;h|yQ`F3o@9zrJ8&RDU3&09 zvvT1sMTnsCJh_2+8iYI$A95*9Fg#opjjx2simEG#^!`ApcA9f%0*SqFx5#TItcWES ztZ~TEk&$kVrt4Q>b>%T`rV5v8?WA(@h;xrqLNrkV6nXYl6|)t-qBBUr&Mzk+5Ano{ zl;XxVNVwy}83h9OyM=Q>@g%GAK$t#U9D3JqVW=m!U%U2ccS>7&ew!7s%qtX5E87WW z5>d)DEU}es#Z%h~)xKM*d3+6CmPl_(7)C570HoX63b(gaX2fHmm(C3{QaY4pqLY;H zU>Zd87BolnxQ^Xn#f=eAaR@(e^@8ymqM~mKv!o=yQJlhJJf31LR*1^QQh|tF!s<)w zfM2p*A$ME{vqn0xhTD&b1{>9066G~@S&BBYQFBV-RoP~X=Qz8A6%()bbJlrV??1ba ziL0)%++96L*5$u6-_O&aI<8uzMC2oX5Sz<^$F>Vf}PE*m`=XvU~Z!YqALTw?vtr4yugBF~1 zL&6{h=nQaIAh+BYGEhW)nOiKz1xT#k!GNI&*8UKaSfWsq9U6@EtN>3#!VO-h7SzKB zbxJboF@nnfvfW;7_a`&+4jb!L7OlkKFKUlVl?ffwR)8tE0@pgo$PPVCqoot+7{uq{ zaFla?S-x{aV#`3@Ukh1n8NNUMkAi5S3#K)Tkllu@eM#2G7B@}a9tjZ#$3g;zWj3J3 zyS-x8Mo#e#OSY%`aK6-;i;Cywfv)rNwi8b4`S0bMi5~KxNi7u6u(BW`6_p%<%>-GQ z@}3}grieY_J%#=Ui(psqGi07CViVh@Vhyt|yJ$*V)-(*GWl33MHv*7Ec4k?&gMFOJ z;nNc0K-3hKj$BmYbI}0ygDDtdxErT*WW~tFnqrWlsu*}_Hbq9C#AY<9t=S|(X6pM8 zEoj}CJv!zd8RPo~;{gViP#fK#MCZgO&gEi3c0u6`+9j_939XNp;`6^g{;PFt=SXs8 z87js|SN7oGn8{!;j61XVtGUkN#3a=c8oC%)Z1n!~s6vt4}n-v9li-#!s7;fVumr!DbY#*1xxTbO<}`kd|I_KcTAI~O5?p}r#bP>*46`B0C4kjQD_ z*)DI5i1y>Q#(xE}+`Ao^LXvw2+PssnP1D@DScsu~Y|oDs2Mg$26tx^Rp<*C)=4)hc z@8>9|-zZT+DS87UCPN79vgj!>FvD>VV{a_x6}AkIg%An{$R$cW`Z8?oB&3pGJid-N z783tw@*&?f6tU6dBa&gOBTZjIm`EaiZ+_?tykXhpHa{YH!{Qb=7_&shq9sE%%vDR2 z7T8#{1?z@|=fe@tOmGy@dwGJJO?q!$w3zouS?9yyx7=95l4x6gSz=rIaP+)0VhOu< zw8FAPTH*{Y|G+}@c}Ks4ZC~8gy(ik$2!KE7m)$%;UdBJdTNeGbeFPZ)YlSOQ*s|K+ zMSp95=l*u?C+zR-6aMe}=Y{}c>|cZsiazv=^K44?%t#I_#@&_ttMa?9okc{kj8AnqzI8Gf>C~bw9PuKA)`awI$|J9!zFeVj{JG(!@#it zi6HwGu{$m%xG{LnjIcz+2oX_>c?)Xy@LnAaVk-?|W7g&bgh&2FLL5(96%%0CogCXK zV%OB8a318z=FhWV35-mCwRcS;mGi;j%T@()QlUDsuS0Mrl{)D+>V=uG{PGC_1+UUu zYUJ1!5`9Ou0#dYbw-ZC!D?1>K>=Ild-S$9dNdrtg5r3P%$<{J~usKWua}bqn4n?ZUJeNEgq*IYI5R*c-D*8oM z)gok=4~7YOR713Sv}XrMOC|%Id!)IS5md37qn4QMf;rdjfuJcXV0)$si0Eo5PaM?5s1Z^sQDlIk{r)D0D8^`c)Ym@)?Mz17?(z4jT}7di?4TO#)46jqDCt zEiJ6^VR}~Ksx?IG$J`(t37*Gt*@yV@@6O!=pUA?!&gwrfn_HNLhmuSR$=BD!ZB_c4 z$Gn;#-xNc`s|W&u_Da4Li-J`Ui?9%^iC0-Uv^rVIz@03AKm-Db#$7{40AB%HCF6gP zY>Wmu#>{YjPdG1>fn>Daau<>wx{-!FwTf9nC$*(wVy19%+K9_ohWNC_%}S>zdnCU# z5G2SuOuAOY6k3*%Hgy~rK&M6Y3kaQJ>0Br5rwYC!n&XE+%7a93_IOJW0fe@=!6!4zp)ip)S@5!80bEy!u}%@1#MKhYz;ZCZ8YWh3SjbF2>2V|?)|@FPOHFW; zO@3ddCzNP?R&IS7|0o~JjDu# zkmb5bqZv??rQEZ{DEBIdiltgM!V3*GNP@D#QsD6NgA`Cu4u)v35T3+(Qq?xkGc1yd z5+Z2Il%`42=RJ#iq=+-ZGwltOtgIsn*VG&cLf9>%i>#&w-w9un7Xl9X^6(ekGm7<^|Bvo{5fjs-y9Qjc##`v$bw&IByZo zFIl*B{|V{fn_*)TUfg_#2JH#@DOuBM<5!Ly-&DjM@!yi zyAwEVcmHXSCg@U>66-PoYY=e*QAfMIm(NrjdGC>2fH?$MEmikHSkHSa>GKLsJhM!ZpbUm?zf*e*1&$H&A zVQ2$V8i6r(g)Bu7$*7%@xcw5_H?if3?N2b#Bzh%|UMEqt?Te1z>HIn}5S+#c z@)Z3T9f?DZj*vfH616vn^l0`j?c|E5_YnrJ0B0Ac@a`pE5Tz_q9-DAtN7F=+I$B~t z1v_4mR{@ej;0(nr>QH8runn;lwLs8WUaNSmZMlXeu{NK4!V_)Sb_aK;D4dE#{4skj z{j@gPSP_R+1%$hRlf8_Pu;E_0muYEGzaOFM8DHZZ4oYa(TEEH;bN~Z|*<1Me-01lDQlCoZR1YJ>A^# zG|kR7(#UW<$=oOT3IBeDP&rzUjxu+Ot`{5fdw$cWpNxr>@@+*t@aLI<)a)`#7nug_7`CpLe~ zm^TaE{JH+R0x`6ALXTQs0o`IzzPO(;D{a2U@q8s%n zu351=KPABgzt9`^E23Eu`Aq^kD-uH?VY4U>R8ZB9&5}NYEN< z5JNl&SJeUqj&ZcJ`-^QutnaG31EX|hvSPgB4w2mnXd|P1wy+jjO@NQ4{&qyA>=nuEb zp)CIdIm;M_a`Z_Al&&OY2hJ7ifBz;1_c_xXldX6osjX+%l1_!s% zj~bj=3p;c$Xo120)Jn(MhjVcy%OWb)(;D%qE9DT!b3sKMq_3B14W1>r`#{eAHH(;CwNy30Kp~U-=<|_)_~pYW4jo|Iy8@pSG=%+C2?-G5P-M6U2Q+w-!k!z0_XDr)d%w_ zEszrW?N;&rqAdybkzX5s^8YY)9sqV!_5PnzX6DZA_inG*-6Wer5|WUFKq#SwCMr^- zNfG2(@UK1_*hoSZ5m9NPlF(65u%H4;A_9t{An+8+GZBF&D2RZ)x}+RjxDK<2&%WjvBPO(@SD#EAh?86K10}nC|he1@Jld5K<~(U z$#s{Kzsj%lNs7Xdijh?cHw>!AirFp{0pE#(c~*-ab=kuf>_fK`dq7}Z?XiJ-TDk#= zoBxQG{Uqfwts_*IgoR!xWg#n`l}_L|;HQ9Ukx+0`MJhvWj3B3+q{)+24bJKXf1k6r z1kuT|y`7kTP5*dW`DCF5m6{Y=GNpymN)F7#s+!GuIxJ~RN zW(x8M9sY#6WPUCaT(E^ZJ&tBkMn3`%N2sHG)&nvZOUZokvYrlByN)eq4jpDcK)K%2 zdK%V7@Yha@3M>lx*9SaU`Z$+1(lrt8pfF{C$jhg%+OWdtOJXLZjY0%y;O(_$pEU+a zK(>ae{Snbp_23j=Q=-K2NJOto4u z!a>_v?(lzM6X^u(w3dUFj@>H7N6y1H3kFNAXv&URfriJGJk3m9Q?G$;6tk@YN*0TKS5j2X_> zWNgtm0Am^qpllW&f%urA-3i&R#u@{=W`A@qV+0ThAo*8_nnTh0O>PnHoaXa9k;9{Z zYNW*71I}>2P(s){3ATa2iT{MEnC1bdSb=WJ9I_$N_o*BS>#uo((Vq4Sly3)^*#IPl zKa|wShRp#~A_%aBL+lZ@NhF)_4GQiA!Scj^w2lyDX*Gp3mAc7R{EjUsKahdnH7sM9 z$N(8__Py|YNVtSFjl0r7P%L+IHbAetVmK!oY#KFR5#1nkK{bL%wpVB?p-X^;fr{bw z#M6%*F}R^v3pP(0a;Z|RZ`ljAu?;jK9Y7sOj5^m?WJL&l80G2FPg->_{Pno2wT0$y zOQXPaVM`@=;my6mo5@R@5g<|GsnL^3ZgD6BDi#vgAiakl_hhD#UfSh@zv0gV)R>* zZV(tyg7dM!VVF>%YRT8~YBNV>(^Uygn6%bGF0|-9LSGE;H)VD79RujtHO7C_*gK5> zzVY|5Z1@%Q)*1&Xa&ntu1o5GCjMus#-}rsY(ls+PPp9JAW)(NteiVET=>zp%Z#+_o zs}0j9P)8M*{Rha*H zt6;TkJ8<~@Jk5e|=42j!tADe7lRw$M!N1GDbFAZGp-IuUX~%)TGMfS>uZ_+6R*$aI zrXbOLl}rzqT0l!Q{18@Z8)v^Up*ZykNT`KAflIb5@XowInE{HfgaKvNAcXS*t4Oq3 zQ>v-;?3F*~1?Y$wyf6q)J>sX@QRO((3oQ&wn9K2*Y~k3l9nluEWpS37S-h&H0L%?K znbfrD8jAhA`5aWSHz`IBrs;QBN8p<8CHC8iy^BT3HwYW^xtMlc5&J7+dsXbOjqP=@ zzclujf$!5&d{5%<97~uxFrksk6-w(0(9lwG2h!Ns{XkZ9pS1y>$9 zB3!i=!dBryNcfj!(G-Eh!_qmBf`Wd`fVUW+=<}5T{eMFZXrC?mKNjutMgOOw{d3X( zU(x>-$!9udEI$$OG*2Lz9Qs)XTNZq8Uhu`lDYEC4{6|an0^&lH>?cb8jFLZ-hN<9d z@SkE#UMTa_Z_5hg{`<23L)ku8_P;Ls$B?mVOxD)Yub|mx2ES3YU#i+K=XQyj!A}Vk zFR1vBlkK(QFRs{2D*l{`KbH`u%;2q6|HZ0=l&j5>05$O#>;$MmAqdpeHv`&wfSU7~ zDd_}M=gJ022`tG7a;VYh|C)f0_UAQ^$I`EA{?|48Sj|6N^N)at0+OmE8|wbAV~GPM zO@N)2=THXhbdgK9#a10C*a2r!g%Y+;gdIhJP!B?68Coq8bW_av^Ct56VnCi>snf2T z>i*`sy`}EIQnz2N`)lj|IuvN3U1NqhQm}4BocO&{@ zo9Y$^YtCs<_wt4h7VG|;hCR38|5o>ZAFn$QCuqAjsXHK?MyQ+LQ;*_&%Uaa?rD6Ne zH-4|JnN^?9U&m&x()?x7b8YEwq?^FktZ9GUw2vvn6f_oMAoR?k#Sg2+_c#0l4f|lj zlT7B3hQFub?@B5LiG3c^beRfnCIK<@7nC|Wzh=mV#9j4N$bDY^gn3Y`85|CX`gNSbxprsWXeYh7gD0=)@FAa!C;#wG9saW&{tEor zwB%Rzrhnr>Jo)!t|F2$B>-rUac4eP`q1V4ia^0~eJTwpn zx8v>s`>g?mtsI-uYx`-(<^BG%{q~A}e`UYDs^5RI-(S=p+VSlHe>?3cDt#ejW$W;9 zGx`bKVSu`;MLc~*ej66=jjN5l#`uekM*}ntbz5Mij_7GENL z*y|Gixx{`x@t;ooXIj)kwVx=;qMRLc?^Oa{6+rw`w$pC^yKejYZvTgF`&_sGb+>

-A8kMw7^G;eYA^@mip+8K04p{=rRsq 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 z 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%0Dnbz(T*t@NbT0nP4OKD0LGj`dR!8V?Awn=iwT z{h~T33qdJ~!;aaB5Iv3#eqK!LkVjsHrj(Ck3pRP?%xP(^b0t30 zgm<3bk8OOgH4p|n2gZi0L;2Ji5tew+pquO-O$k@4jkwX!{&XYFu__CuHVyg7)kuHV zngO4~#ycqFra3*!uAq*M7}1j9XIGWwR9=BlHTV>)qaU)UUGC9toV_cag$b08-Jml- z96Y$T^SvGGDp6J__kromJ+dQI|4_kWPeb(s^a#aTr+r7z^`!SC^uu_}nXwY50jA|U zCTV61Y9~zlX|_lc_vTC|knGWok*6G#)fuqsW7C6jA9` zl`5Ih9_PS50FzdOEJ!@qV)HlCd3H+^wZ>kg#41qiYVz$=ytaLW{Va?Gd)2#OBHgtq zE)Td<*c(~+QD4AYG#Nldu8_NawLtd+B;k%afu{@BPyj<{@$+rr6Ga-)w-p~FF{fz% z)<8pAG_ldf#Usy}feYdcF!(gEh}?lw0k0p?ZuDT8q?@2(_GU^RLwcYoxKcBa2jJS# zbbs{rCsa4gV!;N9?fru2)E86xN*cbJlEs9aA*d`ri-wEVPGHBoQ@d5`Co&}N7QCOp zfepHvmmBs-Fto}weSRB-EZQgb+_H~=VBEK4*AT7_|CnjM7$+i&St_2VK7lRUB z9Cy=u&xFZ?H{4kfROHr62jaE1$Bg_(1!^3Z^xp1#H%NMsrEV%e4Y#w4`)kFYQbwaK zm5nI;g(yDgO>9UX#!_aYS|fDGYVy0qQ4~kds@9rs;DDPSV!6r@AWtsiznTh(P zCQ6I0X_vCn9cf~me|IpF({O%f+421yu!5|XV%a^$TL`4@z@Vq4_ZL~Mh5erYtYzo4 z?5;rF#j@iOny&F-(2Hf)$+APYKWW)j;<77jX8UeLbm+z7h3B7Hc2kqfNSHx`f8?@l z&bGSh!wy5@=B&N!?$eBGSF(tWCoQ{C+DCf^A+S+JFAi&!)SK<{+pBLXt8Y{F?2T31 zR88YKY^<`23)Tx>h~Z}RLF!H68SOKtfVLFpRm9!Gs=-tIq>TJCfh2*IYSdYP1&pDi z;2Qwj)H+L&X{bwR;m&jan?ljG=)ZBYTaPTD~pBz_i-?v-H>t_CXI%) zxoI^7MQ0fM|7b{yhQNXj$A)wYzA**U5aFT?)pNI3Y(sT0p8dqRk~Ge&)XR$!jQsRS zIsQ>~x~>)&Kk^e`70l6LXMDZYP4pvS=?)_#iEHq=4P#_b8!>PgkRuT;xmm?H^@B2Y zbt{3`I8s%IA_~dnO!)Xkk}e0^f}rwYmys}ki}pe~bmj&s1UpFtiY!dz2EnTYyptq* zp-TkIv&hy&!d8#xxw2a}rlArLDeH9v0`UqSI}nvLW3S*pYwB4njXxQjO7liv(QS}oAxbzY!dLJs0FLLh z;!mt-L90Y0>OdnJ!CgCO0c{1COTsIb(W^E(+vGw#H{!Vx&xL1MaUZ|4deT7Vp*WFn zv#Axyr;+~vWw~-ccLnf-ag#GD%{v(QhXcEZ=PZj|i6(xY?X0sS!PQN{-X7S^N#}P$ z2w)KB;wM=preoZQT?Ozzwj(3(fnaY{j|%bu-v+B67WzXVMdLu%jIak?jd_Qm9Ut>{ zr?x*)JNE*C9u1{$8#3XKAw+`=aG1B z#B((Q*33%2!{Cm$<0W=^*8So3eKuBiIq?*w7d{b_h!|}9- z@G|Y}TG7>Z|V+KfjVqn~xPbqTASMnOaSM&3$jjQoo+tr=BU5 z9k*4U^ZzGgH)zU=vZOd0fYOapF1l4RnuCq!ha0d1Bhzfot2YRwHS9vQ$3~p|@_61= z>q?e~)7%t0A56t_Gg)JkiNrYWDN^V#IJyt9h{U5j9K-+Eb*BYl?aF~kQt5yN$UkB@ za}~$nq-))q{;cm4&*@VJ(E9RH^67d1#6l?9p`QLL3#Wc<5~cG$v2GU6R(X1UdIl8! z1eBvA>`Pjp2j@O0Y{{UEhU zt6^W=|9`7yhNSuQkW`Wl2Wm(Nfrvu_P3mjwIae%>gQmf&CfOm$LDGeY;Q(dvC+1LV zHbtYxVDNZ?KBU^AR@Z*rbiE+KfDtnjJ(PFi7C5mKH{gQPFO zg_Gub*Q($`ewT!XXX<}g{M{oGaQ>=3v1Pml=Sy7Yf7 zkkvb9yWWoO0Sc5I<3`ZRK>*2o!t=}@QW{mZVl)$Cuh~%?|DaXu^_8_;=TgF;n1QYg z$)waj+SlJt$h?xRh7|*C&`y_Q`WH+qPdJ+abPgx)%E_5(Ki0N_Ph|FFW={YM;g_&P z5YSHiIFwxgryY5$0OeW_06BJM;POcy;j()xKZn&&FK80{q50oCvh}3C+BZawp@HP? zJns&BLUBmG?)ML8`41&Ih~Ws}xP{w01G^VgE;K zkL@Ni_wLMY$?VJKp2+P<(Ydc#_&P%aY&-XeWsgdAI0fz*?S=ckrQ|QF`tN9gDvC>q7XmPygbp zsKM}j&}VbiB^WU%UCsDs2{J55V|fu|_ThAC(0w`T-V_$`860I7-S!!lRRY$c_O42{`{ z(hK4~06RPl_}pOgWXbXvazh;!VNSA%9kM`J-|*QtajWhG{{4hoNs+@5!vJ!D^lr)IBB-aat`P9tH(C zl(ypztYtu4YIl}w_0zz%U)Z+|YICzWlK_oSIKXVb6mcMLuyf2r_CmF`NawXOUbV9u z$;>;$_F}?NtrJuwW==)}=tGQA#?X(L?{}jMn{0TaOur$X$KrWvJdein)A9Q}b6UJp zJXzZa^$0Jfr$Y>>;}{VQquaCiq&B}ixsEIY`qxL4zZ794od9oP#bxyy`x}3YRE_XO*whDp%zb(5b%JyWrC94v(AYNsapO@WZW#jw{ zN=geKJr*IuL*(P&wtnGIe zfcRaCE*k0?jn0(sz0%Hrb%d~sCr-eEMW9c)!cZz9qZVJ&P4@@z z{&DUgprar5P^q>m()7VM9phG&k8xICgNsCtiL@8$iYtgafI3%Z_gd@Aa{S+udIng; zJ?UbCv9b8!ifU+zAM+{`wn%kM*c8Qj> z=eOa#}(#QYom6xYdvVC={yd80TTj)c&^CQb*LRd(MM)tS>{nZzP%Jb zNd6Sc?}abaV3eq3zG2(}CW$w;uF5fX20Yy}p!MAXpe~MpLyF+Af>i+U3_-o8f{G7B z$*3yB=xNNzZY&CR+T+B z8_w*z$Mg7RJWo45V979cu?UR2vZP@nLAqE;$W~Ft3mW_=Qp@j%`j}~Pt*O`Ym>G^C z;3ovrY=1sS_{6hKzB%*oee5PL;Z!%SCn?_T4koI@ehn%wC1{Rxlvky-D^p$Ekk;O+ zi)=~QO~#)M_Fr~Mn(V2q9sh@ab82(_9M~h8=^hZ2AewLqNfDvuPDnyYksL^Q@*>kz z4<~csi1T)QHGCUd@keuegdin2=OV-oZX7Uc2WNOgtv*&dJKgnEv*3YL$;rv0U4jh0y)6X zVfl^z=$?vk8KycIR z<0uTrZ2@A>xXt_*?{;Ooq8pir7Wgl5Ht>Dy73dCd)7)%~m#Ng|aQLhMI)`gg%uq@K zcWzX(hJr6pa&Z#ogQM&2jl_d7W558XzO38I1j8ct;Qmq0*c%v>z##=FtTws!@EAc- zMAjRTYoNAb-DHPvlzuhqKCFxR%o?*^lwH*Gs`5qtzpXv@(;}5oTGm1?j{v}SqShpP zUPwljVRP*gSl_{6@E#E#z2)QpWUnTKA1IAD0HsjXRdYxz)ACm`*|!zFNUNgLlnrwk zujL}su3@Bb0`Fz4)d;(#}Jf1 z;7b4I?0s0^EvD=hiLehU+(G~BW|3F0xAcQnB8eeyy9*>@l~7bu(girV-x{wj z3Ktuqkn>l?^n&l9eh*8M4$(?8o_Vj>5842ifzlgS@_te%a7Bj1*Wn87+*m9Z6S#}L z!IK0dIGGCU!wxIM^!TeNB1!|42l%MNa>V4+ZbteBN45d~4pik)nJKRUS`Gt>^q_sG ztMN)Uu+$w9uhFzhL?3Z;+4i{VR-lxhX|qY1wLionDxJ;09(n*#XE*^;d`RiH)-#8$ zQE7`DFj^1>&Y(Y7VJ5#K&kI-H7ds&qUGydT6;NqElPc(^1Ir7GmI1?epu{n84d~R% z7_zlffPOtGaO8-BE5JL2FY`Yi=mHo5cl@gbLAO8Uiq#Y^Q*U zn}KkHhy?MYhRL8itUtn4gq7KNm}FP{u2_YkWUxtkKoUChBUp)m#0ZlwWE5T?zc5h? zG99*(`?Sxr{49`|H=?v*pwrHxl2P#`O6*H4jP9}e)u)(UY@6-B)nIhzY$ZZwkZqHH z2mwLn?Fh4hmR<0Zfy@BVya2noKl1y62<3TMPG56uE-8S{buYCG-1!&{%+B9Fyl2z<*TaC6He6J&w+7**(yv7uT`7{@53fgAD>vw;wK+4jygy! z*1jjb1^?&`AdIz65{@MbC8OZYKA;up@TlebQ*kwi&4U`EI!;NRgH} zmI!v}x8f6u{u9*73M3w%IhqplI}zp1HQ5B)&uG(-;@MiVKmin4vQMGmd|{;m@mCIU zZ1O0@LXMJipu4xLGx<7svV>gmZU99vrok=-xxSjK3;2G1ke9RuTRxLGcd>vAxBjCCnk@WIwEQFGIDMcTE-e z{lx5Hp2;6qW1>?y$xGch`ld%Lf7J3XSwJgAJAK~9HnJubn`tRTj!m(cVQL)=2LkYI zRPv%iu?Fk|I7@kf{W@Uqm8E)AJKpybdIM6`!gm-m-D?I<9nEcM3F zpfL~kJ#;$> z3#BY6b{RbEurOe>Yxmf$$r&~ZodZ|~6;2gA)+8WVYOxYZ%9R}Dm@v`WAVQ?%=jbWq0fH^bYz07w5CyYABensvBI>-oQ{#HdV!g{_N%Tqz$wO^uC zhhGTpol=?Kgi;+aclXLoGP_2Yi{DFWGf%H{;U6qM+Qfb{fc!8EwJ#2xye(KVRd+Co zOU*jabFSQ@^(YmKxUjtVLU&41kFk5;Vu2ZA@TTFW9@y{bx1&;(t-$-V_Tn#{jJCo7|uqvk=K$Mow=gi;79Az`OHzmE*g?Et-K8_IG zB|)VNXdAK@$5EONu4EB6ForbwQ{uo8g3bGcz@+qi2!r$h*hK4;AyaN*4H;#$hs?hm z##Ou6E93kI>kvRSE~zJ*ve+7wSBx$MF}47q4N%4{PxyH%x~(Dw{+!Jc#EL}tVd5H~ zSpW=ZXPQ=W4*??Blp?^O0cqIfjH9~(ER=pP&A*9ZH2qSVeAd*#UUFihAfU7 zr>efz2!q(7mw9PNH>$)j5BwFoYq!AY!G4zQ*O~uqX1~cw ze?gM5J7^WdaXT(Dc~AMLnSYGP_;!zvDJHiesRe>kbq&-7^w+t4z<5Nx_b~8{Hm9jX zk3C##Cx%US^hVK#G@d)-xxmB4ot-9rttX{SW;4<^U_~mU8Z8gN8SKr0;;1|=IX#;W zn-3lH3eFj2$?c8RxQ0nlO5Wo%q!BwGVaMSzg1!Y2n2m3=I5ebmIb$C+oZ*$!;3FDKEY|S%G}QoM{zWK7zD9z>xzFZK z+tPXX=1!m7=t={%F_@+?lawLD7s3tArj zY*Y$o#|BI|uyml+gTSKkTB+1Hu02;*ih*Pz zNEGPy(liKquQhQ~{xYoA7_Vo`NZ5b3C6^hTrJVL9vQYu3kxCTxhT|8$Y~(!HMR{b3 z{xLrMiYTH61T;X)01NRt1bOOJ-|45>@PJ6FidxHo?7|}2jVqS+EbOZte($V7FY^g6 zEy5wkXd{&$2Y3$A6z!cPOVp-kSgvAW)sp^YVnbs?kpPHFW(Bh2PGp@O#&?7tEm3u# zgS#$lu_6fAZx)Uok|XjjcnZ@VJ&|C29Z<-7QhZajov}g}_eFuxt1PSS)lxTsBx(X-cY&k>-ZJbs zhho>Iy>vwu6pS(AhQ&04*z;}8Q?@p9V!hxPE@*&~JR?L79b7`mMSSH1^Puj?J5m9* zR6;FMnjjs~8@XD-ASk^G9J$s98kTNCTS*&7b`q)S){bD7OHZYtP)bETv81Oc68lzj z?=yl*?4@4V=)J5ddeEOm4m9{ ziwN^iZ?!44TziYnE{(Tlf>bte&}83dq9{rwIQX+W3O&q{$eI;w+AFkCX&4yn8aQ$| z8>$SGH|WB>5UV_jkd)7i&vAq;&vD@Bl#yog;}R+P-jcJF843pO1{M%IX5lzcBDYXV z-l6nnpS{<+;k;rW%BAA_1zJ>Ao23m>f&CMxJir z8#aN8&#w#^1;Xz$W3QPL>>IiL34_L*qw)5G_G{6%)?l4_9WKvqZZ0k1^nBcXHzTZE zD`7={XkpDeWaCe2eWyuqpEi9YEp19pxv{HOMetfmXDB zOYU^>=`oz1g$x*@4jCr<(=0)%c7{}@5#k+zcBp$Jxl>*G9kx44Wn7gzv`RS;O=BDBZLd317Vaz9+W9cG8RWxmxu9}M38v3Ebh^5CBG*{`V& zE#^##Lx}I1eWo4#<}|)H0fF5>i7iYf2pUdyc#}7v;6a=aodeN$Xin{9>gn`j*p~D; zYVWrE*y<735all*h**<%kqS#t;2gRK28)zD3|31-7lKP++$%Ou)BxsB-_u@Z^m;}( z9zu-wjijtWS`zySx44vH*rJdO@L_*Er}5mJbOvoPz`HWI5{-zMWzVU*BQr;P0JOq0 z0y3cJmO!f7mpjyys)3%uY&>E4kFES8%O8@EvQrdrfMnV!3j_Lv_&LC*{CA66@?sIJx&-Y*=2k-C zL-sxjYDu<$NCK#crtRZHAu<)XSTP%UT&JA5R%#160WxGg?xj3f;I1pcU3u~eK%(4% z`2u$^cx`+ESdvZXJ=0mP@txARQwNE&CIKD^`&tA1AX*PvEpUSbpbq*UvH39end!jj zs4z3x|H<#g+Z>V)Fx;i2Ob=^kF@7C!3^k5O%~O^0FWCUvk=cS#bpCagUxU(vB5<0` zN#D<354dI&HY~XA!p1)b4>wdMnu2*0yv;_p8v4QEcnCg=}N7HOm zLbu{|xQgG-NxsVjFk7rahs_B0_XcYdy`OCXfqcT^cX5Qzf;Mx&yozMB(&Qe%l|e2)cr{5O`_Nwcu6;W~SQmbKn8Cgzve{%9U4~^UVQ5 zJsXz(Byccqd;Ifz^Pw+TvWb-$xj7twFuVdCp#S$m#-R#S(C^t3lQk>ZEH_jodG60!oVj z(^6p&B@GYTR95#+;QwxtTh6K0Yt!m;J5nhi6&Lt(mn5_4;iTb#i(`0LhHjsY=%}Qb zWB}r_0zu#~+2}-=EVG&4-Sp5NYuMur`$fb5ykUQ8xZenR8yVmK*kGsV;9dX@Kif_# z)7MDj2%w^YGYk3!jX?VWh34EK>O?$DQ5k@uoZ?kE5TK+5leNfLgG3+&C(9l^^uJm9 zK14TMdJ5z(wQk&|Qdt<;OID>tW)4HtCd^een1ZZ6mNxDLn(dRR z-3@kfpGu8gxIe{otC~6{R#YgTO#MgEl}4I%EK~yoI||2-S|%533?&r4ngg(-z-R)x z(0xU?^KT)e688rzMaySZ`vWp$@YY}=p=*3uguz4s+^JPIVA0YeWl5;so`w(M4u`%v zL%j-0*KOgX84(XTcDmdqMja*zC2Q#V3}aK#!?u*MYRq!8{SMP=ng_2EYVyyBM}uFSv=HmHIBC)C@ywM?m&r zi;N$p+tC`i()#AqAvG6MAI@4w`U{%wm6tSMIdq|WrN7W#X%|A9H(2vpJN%?M(`V5u zm@?s?aOTVX^|WX=ZZzNF`rZk<#MRrZe799UY3^<#7?@m(WL)gPL+Jgi(NOwk-n=>= zx+Z6{PJc~qY}v{62U_<1;Qp)H{C3s8>063OAESo5D}4E=J3dt!$F zl zK9P|mKwtlJpm|4!d`4_#l^tUJ3PX%@znjyj`5(-UhHJ1EGdhzGmaY^dFh(rV_9qdn z_!LIzj3*!>|NL6~aePm_-{f)@@*QqFz6E4Z!W6E#!!0(0U?e3is6PEBOULAE_zdpD zj!(3UIc7EUq*!rSPg+-$O#`Abx~PLaLL{NJpN*g7!GN01(&kKMo8?QTUGm}ohq5<; zv#Y4~{dZOE;Y@w{^gN|IJ!j}7ohB0@flMd_L=aGsr97{NslR0VOvX-X?whjKR4%)G7hMt*gt-@~SSV3W1 zK6nj-S@?@7dJtQvv3E|fcT912PBC|oo7Mf2hAIZ>qvdu=RX!fg6Vre?pQae`Ti5up z;uYT9pH(kbI}G0EG*=tkjlOYdg?Dp!-5~KS$BiLaU57dFfBZ*5F>O4h>RuR8tUJz`v@R#_EO|V(V+V ztGjB(a;2{$g;3hN6mwxrfJ(-1{3$m*oU@kw7?87nr#`Cx?|%({dfInz6RC_>^|Lb` z#L+tJm`<3x_S6*yQD8aQ&VuKrWzun!+ce9iaCYd}36;|Kr5O+Y{rOH(!eTc4;G)Fc z;LJ~*96w24hBrQ%m#Jn7Db&oV${dEq%H40weM7X7(C$AN`w2At@|wbM}`+^ttdwXI^mOD`c&A zNV^iJsZRUjFnrIMcU`zBG$)64NoW^`p^tA4SBK`(FuYQ0I%N9E8#7zEVwRgv1y7ao zjp!x*-G6nN)qXU~j6H>^tR7hwXy)<<5S&QjV6Kd3QSn@y8-Dp;}=lS3iWE&UtfuogFqBITO zXNk?!8$FSQd`t#BW7t06nUYL!wsJ>Es)s}We>vDDFdn&mcbKS7ad6}khf8y4B6VN0g@EO!;cpKbi}|fcxiUfOj;$C zC5p=|4?Z|pQ{&}j2}Q_al79Vbbmn3#GBr&IDAnO;C^JI1XPVQv*F|QPHG{TM9Q1Ow z{otho9NtvOd2AvqRyZn{2^IpvhHsfjy^s%Ob7m`5ve5*l zKE_rBgwQ6p!^%u4i&9y5k#DjAMR<`gJt|v25;u{CG*hzXIkA^Bwav(O3K;$dz{mzS z)C$0ZW`-ZTw}r2(#ZXP+NdJ!{n4nK9Dd?q{0S{2I>*ctVl1@v>&%1G6#x5zj)Y^GG zY>TP(EaiYi+vVnfU`ws^Fe3jN5;0m&Gpy_D1)wd4?EbmnegeoEff{V5RNhK8_ZXKb zdnSoWL2z-fwS3`~^5=WyPeHk2XaGrYW0QcArSlL_GrKg)1%oYq6C2~1_W~Vn8Bu6S zs6S8$E^m=V1@{5#E@&qD;h- z2RFCG+huMEw*#UWU;TfYiuZLt+^S#W?eKkMhIFHN58lvxfx6aVJ7J>2YUTc_@=hYw z9s{7e`6F@jD0 zw@ujxn((j3TeU1`@LCOuRBF&Jt`^Z)NKzRz6Fv0uzD3Ruget$E{2NooE}Xsa0+-#e56JrMHj|)E18VUT&lpx#9X*5IE&S8lXZ<9Am`CO7Jra{SP%{{+WL)#vfdxgy zJ)pbbAr`8*#r-dDOiO(GY2Svv{iJW>VeOP*=jnBRB{F{k^W4!Sr%lS-dYgr5KI;4S z2L}Wz!Exj3yQIlTpUjFVAqxrIa&VZz)zGP9!H{HWcoXtzIV zcmCY0Xs5G%crc*(inw{a)_0gxCTm;lnJvVDg%obwE!nHAt%1<66nAF=v7d%YdsnpG zTmyidNA_Ec9n`I*v%BL~-{30ZT9T5BB_#)5R9hIAZxv~i`9|d$PXN7`J=cW01pwrK zvAZJihx69~Ubpo*uiDzrx7EHK>)UWWfoaRl+>b$L=EwdX_p!elgOwd14P6E&3bK^3 zBB0=Tll?{ezlYF-B+@MfB(3aE|A%`zlUjB)Rxkfy9gP|)fAv4yxogtl%d`$@zhw4^ z>|_tiJvc8C1uM9g74^-Oc2?QMRtz}}?3(>P(dEc0h;a@bz@sD<2!gp7@P@+MG-(M;pFu-D(BWo?S3!73fZE zR~O7r3Yp6b$z^Ph^ngpG^es^r8Jd$F!!gduuBpzof-$2!mW)BNru(&F4<3*s64^cR z{z=@ozZXymKl_zK{gR zm~%+h2<4A_droTF$!*6Viv(hVHC>q*W)BpXLTV-fhlW|v(dLhleH8s0Y8u1m5#~6~ zl7e|GvQJ0mNvWy-5)mma{|H=wO=Vu!2pL7}R*_q|lu%%A42(+{HB3%MZCLFuY>k$+MApuA$MIOyMwZr9Df+9$ey--GBB3Z=W`^t7mBywr|ufl<}?ct@UkB@NhSq z;$Ji7#f*8ux6QaQcaZ{3oxiEm+}eo`ShKsO(_GSN{@!6;@36FQcAy@w#xLpQY`iT~ z*7ohiz}b0s!;OL~De)5olpX*D1W*8mgzUh!d*zMEDw_y7U?qFlUeEvZ`!-E@-Q&+& zd|S1i{b;$_+xI%!XxUB244tR@D=pV)TZ4r?Nkk~ z2k}%YA)_u?YZxCRoofEpX3+T&L*(Lh1LN=1-kwQz!gmO3klz<~8T%{LZf{>C)sXIh>UTgC&?$CU~kR-kgM66Z3SE+m@JT66f2( zw#2?1hp)u(8?k$nZO^gv!0hYf&$WsG^LPHWQ%06;$JXQ0}5uY&PCS6RS=NC{18q zo%fg=G`o6QpGrNn+KU?el7y(RF!v8$VhB*n#587Bb=yn2?Zw@8Ww)YjK&B8k$sFNE zB z+F-*dIAMM@Lg5g4H{vXNjPI(L`DR@QC&NknVkqdO&O^I21am2m(;3^DE?~r&pz{hpQT;h3p|mj-0iX) zWw27+0k#Vz_)(2-Yl+PBj8|z2v$Ct(x4fM z@q8wQBDd`GDA>@mXiVlYZZCa8>akAm@t$3&kE9=;3<&~h6TU3H! z!)0gSz=ha{W0+!X#eaKj8}G5IZ3wr-&rR|h?jFH=W6P9~*s#{TId8OEGn)5GBP3xB zmxie5MrxIovEfVU+}HAL4zI?RFeh`O=wKHNXj{@H4%C@Fc=3Wpzsrk-6j5mPubdb> z+2{8U5rf5J+_EtxT-kOIfte{0s0qi32(D1hgl0kyPelVGO3_KbB44Hy{G z%Lp2p2yHeW(E;y3)a%*gn&6UgXiqXD(A4eN4YkQ;@cZ!+OBI^M+|Zsl!gU1Kj)QRA zRWf&%;=4-mouy2$Zk+jBHMPrAGVujJWzlB*qn4Zh9o#c6c|2>L%;HeuUJl*EMSMya zK0|)6Xdf@SO-1u334Uxv=H8 zU_K&k51<)_;J`1H<;Ikp327&~y@nC7UIZwTJF+%+{fL0g!VF$v&@H3{?CN0ztbQi~ zw!jmvds87WC0RQNSBa6lWP%kFK#WWCW_8}tUY$1=lPie$W__i-v(nsAS$8*W-rSjYw^X`cR+?W_+FL8lEtPe5R(g7rja%YwH>y0N1AaU* zpi&LcpLc6^q3cptiKzrKQkXGmY(rugy6oX)g2OXlM%_jc95(iXpKeJ+aMTbTM=q$8 z!>seh3__kDH6l56+5asKl|7UEu4ao(d>i_<$G3K~7l)en2zSRrf8oTWk}N%^^@peT z)3cH+BCMuvs3WEoDNL0PSxyorqRZWodgZdnX2~}JPg8{smlccP+TbJ7;YlI$IF_S@ z8IST?l-b#H)!~VppcgvB;C@W*XZf=v*l7UXD;@eIB9;GX8S4d&RTqfSTm&6YQfc=DlkBZne3;+O3~pUZ2qV%!K6ne(7Ay zEfbRm`{UpBn+N+d$50o&5x2Vx%oCoD`2teWrS;~%=5SbCpSyXYxov{IeFA$Dk~qB9 zTYa_f_2GA+zu;fcv&LrexY}jon!@79s*Y+@kI`*?wHy1YJLu1)eWk1Ws&^?$@9bd< z=w!SHmwLf2Qg*P04)QpMUy_`{QPbJ5OIMg*+(zS1^EXC+m%c8|>NmBGye+3Wf< z*Y~5MW@uuU{g_1O;1J>QVc#uIl|M}#!jo0ySUn>4a1NISeJa!Mme}HATdA`xHl9yz z{0M!fHK$GtmrX?Q1@T>_Ii=q$ zL)(mKRAt_sVBVhqOJIu`^N;dtyUc}2?hLZ{m;Zh<4mVGYw@$@wdFfDC4q9_2Pr_x& z#zeLmLZW$$EP;e#ML4f0dkK$DO#sbYuC)u;P?~LX1^mra5f!M2SIokH60fH#Dy>4i zF$PxxM;l3;-%l0??KcXwcf}mtWlC_m!k@hY`GmPR%lcWUmYeHxGYdzADIC=!Ql|t% za(y``v~kpPjOOq@yWSR*v{VOo?}AbhQcUTq-EcMi`+&K1z>I)D-CVL4`+`MVOYZ5C zdA?M7p+pioM+u`B@dzqC?e7F@(Sn!UO#@y@H-ZjY^WH>r&VV_0z??N;x?DFL!-@g( zy8-jS04~N_cwyDc{?~gF*Yi(*wui3Qo7`LeuUpD3wyAdpl79@4BZ*=N&3VjY>C)>E zVgicy0gI$y0vl`xP$zf><6?!Shy*POfyh--;#w)wOgsnsxOG>tc4h%a`IUm;kVoo9 zur)9hiQK)a3+f8kB1I&QtJsk}*p)brj2A|Xpr*m+tHL^l!U3A&J(%s7?Oq()HF#(j zZ52!`R6N4|7fHFH;s@2>ir1XEgV#H%z068&_hU}SykPC=wjxc}aGFnTahm;XuxXM~ zl*ocbjn13K+8f5A!nkFUyOU03-|j)*v}zZ(dKXais$I<0ijRuPu_HGkS4)O(R!j=9 zP6m1cPy<-ng@Z==XiY<6Tc*YAU zO-p^Rvn|M%Z7Mc@D>!{JdY8S)t67WpYHX*mOsUKwF95&VzH7eCu2aO4f`^R#5Bn8N zen(*@B&Oe7Fxf4eoc-;j;ti9-FB8pww&^`cUqIMob_af7Sb?HuQUbAA@K+5-B`@kn zrd8Rm$uVw%Daq<#l;c^2n8-M*=B$8M7|6gJLF4^rMm#_e%m=8=kc!VJ2Y`^_0hpX! zeV1X`nf5F+_*-Ic%sB6jLWPg$JR4Hy<2;-3Eg{_qh4J4en-8nQ*T6~ls!rp#bxP0e zyZ+CGor1e-f{_Mm6!M1rz_&>Lo_iFKL|zj#3Dha`EC=^1$O~t1JhfD;7{R)LVC@jB z-<~R76wiohF-r#CB^zR0=H$I;>;;G@GGQ+_b-tWNJ?>Kx?io>AQ}EDqv9ZvT7y9k< z{pQ(z(p`Y2=DB|RY`-*P0DY^jYZW`rLX?w3S!_}z3+oJ@be4rch}R^x1}e&HWyNH? ziHHg+=c2A>R9c}V(V{Pvt=04+-_{mvoeo)Mz<}7AlP5Y`xpbmEd7}Ek9t-X0$1R!l zvcr)pjm(zI9^TAA6?MK=maOJ^u&GYwdZo&lu8fMfz4Gw9X$wANtR!ItZiA-9bK9Tr zEv{09V8w2Eo2yrrt*m5eq&CVeC`y$u3j!Z4b;AIyDV`WyIAdb^dzmo31A%0zZXasK;!=P`g0}aP8Kd!h zMK_I}75nCan{oeGZWaVWxsi!$yNotB?gKKA!k>mF>Oea?0)iYo~$s1Hu zfwNZl6JNHQ;4p?eM($_)#Es?0S$C(O-H!R|lm(ld2*kWG4yFKdD`OJ>lgW@hi&(f4(} z?+fk0+og-C@oklFad?mhyu$bWxM0!ljP;6{zVGkMAWJIlm1+MV^LV&ayQY?MALYBC z)wOdU71!PcVN!|)pxhOXv(vPevSBky?4!Ni4nK(Fg41_z43_SmJ$dF3eBbeX++a>x zFZn+^)XFtOy({?w%-X(A3hvz<2or`)KTG$|4DXw1?w@IXG1J^V6N7}DEj+{pRkU25 zYJn(dIWk;jY;(qJLwoXUvwSwgKW{dm z!fhwEr|&^B9Z8SE1K8Xh_$)yc(nGu=@l~3BF%Ar#I^%&4p5y81&8^J3W?YBj zB&*nf>El#JVZ9gL&V3YtsVWwN!L*O}sgJ8?n@eXK+H+=`OJ;+pSMBKIpzkBg>EnHr z3;$66Aj9fk4gKTJI86IDf~l7|cv%0SKlBe{Pc&#pt+Hm&wyZ*1kdi&Y(H0wg|8l{N zbJ$p8^Jn$%=Go?^*)WgS&#qwHB42FgckJlnt$X<5rs7?PLs4;V2o}DVqI+QM21a1ZF? zUuPCynu&KC?)a|3Qyo(3@Vz3c5;By*Ps?~xYrDuJBSLs> zu$r7F$ne23o}|y$=OSk_dNBioc9!o{(<;JcmYd^(yXUeeGEMZS-Q2Bk4Tv}~Y6{uN zNI4`GxOER0^0}nf`Q(1?HNRm2bE><;Ul>7!84lJz+szMI zxHY6!K`2uGGckLIrHr0-XQ||Q2VmLC2!cr+QtH|W?6QUzaqn`p3WD16Mxct z6QRWa&1yjrh?1PNxxPdXmkU>)sQt!WaiY2MM0>@F_R15}b92Rs?zVC6o^j?^RKzfR z8uP(;yKn-V->P}SC|PK(mS{M`*```Pv<**rT2e_6DXoGv!T>w zL+TiscK?|mS9YMUCp~A_PX4B%J;HWMl5k`4rRpdO`xqTEDN%LWf>j!tusEniA?g&X ziOBmyq70>jWf@4N3%tC$2I-Q}#uQcCp{k;m;O@G5Re2_bT-37I2Ji1F>3D;gz8>!I zfltP-+MLQDS3N7u=JP@%Mu$$8@c1$}h(_9L0a?1@`^Z)VXmEwc@0mNqyEmZcQ=YL6 zX3~1^aJy&l)Fp35~2UDC>?6F~Ut@fYSQ6Apxc-;nI*rEI2T#NSUG6rMW^@ia9sI!FfnOArfU6) ztTe~INx5Je$)-SRO!##R{4;?_v7H)Pi3BNG+P@HL!W7M+Zyd(8pAD(B6kWP zCG_{2&|J<N#g>B{!MyW=01wvG(WSwYIw3chdmahu4SU#t@MKk_ujm9I-vRpF4Z6 zGrtkcjlEyRd^vjng;A@`d7jbej4DM9dYkg~O)}H*oPE+{E>!{JUf09%dB}AE#-!V4b{{;J}sB;rFu zriIN09gpS8eyrARJ`bX_rp>f-h65(r0_C0^-{0p*B7~RgN6m?1esXYo15*fANdaT>B&s z!6_1ClbRJ0%~=}T$lrXg?LYnATdVv%@c;apiDv9p6)w`Z(;Jr8j(3RuE6$cHo{<>- zDJ1UZx}Kr8R`AI<{NMV-EXOlD)M{)W9U9Ayx4>Tdk<-uN_xOJBRPKYm$xTIO@}YNd z6{gC+NuMY_SWW~+%WdEv#_q{qb&qnSHE=FkGaIW&1S-i#Xo@RAcZO#~{Z_j!QT$;<%8*qNr=xEYGW6-;z*-fZb0^ z8Ki?i6;>HEncO-RT5sS#Nnl|0+!Xdkq0at5Kq3#+Ux^N~s8aEn!r>!_;VMM+A$s4l zUHUY1Xqn)m{TcJ0TH;MD_75%LV}O=f)mD>nkGI4Rwv->6auz-5gR1}{$wdV=;^Xk< zWHY8y9%?E_EqQ5!`>HppWKl6j|beo)J`@e5~U^ueDo%>Vl+~z)*pZRb;o%-?q$wm8P zktX9FTAqrE59S-L`<7^hv|}S-RAy@Y5;T=nIVLhcO6n-b$Q{IWA*Lp--!Ep&iu7ZP zJ9M)n6J4WkBj2Wl)v}w(Y_S}=5iC6by*V3{OkHTa@x>PW74`$fFfx;!i&NHYEhTHA z!R%ob@hG$eP-P#_VZema6q63`~Tw34TeW)|_O0hwTKD!E^xWSS<=_HVX$ zO+>zpsgN6NJ3x*jt(n!W_TtuXu$2YFlzEPX5&hYEe zG}b6ZT^^EENi`=}Ht4NKmk!WHDyI$RJARMN%l~%8XL66XMo+eyKexIkTkRiP!)0ye zsY8Ln`a{izLvc}g<508p(9F|^vK*e$->)9Z_t9Stg`*(P6;{=1%vlr!0!rf%7F(dk z^p@=c`4LToa7=0#e0jLs6)HENjl4*X@DsM{oj5h=+8F{ecz~u2Z^F$jM|K~RM zWSjkCTezuBF*f=q8m-az189NFIH-yQnjbdV^ZM;2{pR9+Gq^V?itvhbwwq0*11DcN z#zr@u-?Qu0MzsympBNlr|9);#j`bUijqG_WrYfrvo}v|YDk+Vspcu_yO9PJbq* z&T&+wd5Vo&0XHTF5~TCPp8@pv6S?XJQE%703e4W2)6M6i`ZEAEsuY?d0aGFDzo zpvHm8Z%3L3Fp`+xjdTx=w7(e{-anElVfnjHo4xGo2b#YhNE>T&f9pW=%7H?Bt}&sa zGo388PSXLinTrS_prR+1VvO~WFICwq)ykI4v-XSLJ1{!$pyr+hfQfp@L2Ut+9$lX44bS3gVFJheAXL%qTdsp4hm zCTx9G@Z7=NepyF&d58T;M>yCK-gU5DV74A){&JAra*$iq5nt3%ep|{iE3DeT4XFFK zd6pTw)JH6{Bo*<*o`m!I7Y{Cbw=ovkP@&VX>J6~!3f_q+f41CA4lemDKl@up^iqd? zwj+GLgGpxKz=EBD*8g+wcEnpd%7RzgAMVrC6`@}ss#tgh29)GVsI{Z{g0gwRbisK4 zI=mM@8=ul?mvx#`JKeHQdva&Eq!S;`#hvkoLxWAXI{23|*F;*fbl^ouW*N-F`V`FV zJHXtVf;k^-{A_$ir#Z8euAkNE&hE57>I_dO%nXHA=+5bkmvwqd2`TcVrYEJ65^_j{ zo=)P>3ZopO$RoSOzJ7;bZ(z@u;M+>y?&{m|zIDDOyi#V9b8WEcv&j{m=E_c%*;Sox zO{cxIGkmxcim2{~nb~GqaaS{~usv@V7AOWb&1}yn3l-;9jj6Ja*moPY`EiDsKP!Od zDHa)#E)Y#E0`a(v2oC@mR_5 zq>)$M3+#k`H$PRNXh0lF;=f$!^jF6EHuW0J`E!0Ni^DP--2b`cf-ZMam-(?; zdrnu#xn-SVGiMbP>zffcSZS_4X@iP4i9O}O9V)`}-k*c7c~YmL53|vTn(czu!eTUw zwXmI-J-cvL=vp#SNB-ij_{=W964~oL%Ipeq9}TGXX9alTJ<}ctsEV$KZPh1og-G?)befRvk~*E5IX}N%~kJQnG`?-D1|#r8rJ@%AutwqR>YNVkp1{)9rWrdf!(2 zHXPdjk+fr_U)=Wj_-Ebr=5BLSx4XI9Ue_Hy-fULPa%0Ucv$Q*!8!3dDi~(JXsJ*XC zuief^R9O>6m4!RH3hoW%WE0VH)Ok$BhE)19lLY4lHl?~ zV&X;K>^5(7yEnV-%iZDY-7E{AjRS`?((x8P=#F3P_J#;L<6%_R$Dq4}3dFWi0=~9` zAu2Kkz{t9|!CYkg3rS3=MZCcT_a72p&=X$NV}9J@F6y!8^n};;;4MM!C8mS_2qQ_5 zoJm2){`sUcKXaDi=6``YA+K;t^7~5jaHaVJmVoeKY87aOnrEm~K>9vH5Fcr=n_3V6 z!WUcEj%qU4(I6MhpLh!U({^)XJ7$%Gs?Y0*&+PGw7})zUoyg*atb@yAnOio7k`<%f z4i6z|gVOIBqck2VrEKzhr*U;&X%OR6>5`n6r^0L}{<3YrKrF4c2@ieyhj6(_{Y8@+tAf)(Q1(P`C6Yy>l8%-v~zguHc#i#_Fe+G76CW=Uxsz72gF%NJ|Q z7vk%B&Go&^?N58%4ZU`4Z}>njmD+yQ2|o(-lMS85pW9?zr}r8EmcmOVV>aw@5#G8u}BoFGmIm+D!= zsG_HbS00+Y(QDuCHE;F0w|niYz2TBkev4rPSLl-2JjZOAW1pF0w$0(MXXmhNU!Ma( z`pKyHrQR}OOV^3&z7Fsc=A)AN7-=h0W4*%Gpd=qH7+FKXEqpUFD0fnkbBo=@cWsPs zQxT@spO5!#O7d&`d9`n=d|S5}s4O?Xw82w{CfAIz*N-ySjdItIvR91?Zx}_2*U z;X%D5ZAXD4R~y&NKuk_4*%mWpXjNo_!7s)yk2bH3Hm{BjUmI;-7#%*?qQG+8*Mez1r~bX-pMAKiF8ii@l!&ld>6WTa}IE% z`ZisX1~gS`dwNsE4v2n;s>pbSrK=DuQP0V+Cc#piG%i2T9ezrvnPf~scj1>%t;MB3 zj?6qU(kZ_t&&CT5^@LuT!lxcWR*pq=u90+zM7>dn(y!nFkM=2FleXQ%mcwrT{QNX< zBKFi12& z4A1j!^(bdlp~kECq_<)cxi`hg!|84uTzeQgv}7=xuqrfzVcxg9_%`zG4}4o#70Th| zKtc_saC|?w@vzMHKC@^X&s#h$Tr$pn&=)Qo2N`0eNQyA8PBpJhHNWq75BJw3h5Pz} z!%!?vOi&3j`WyZ3wf-7>+N0AZ^6ft+gzq2|=U(qe+gXVYJDqPB5rYX_A!O+VmWG5|!;^11ZNmQj}!hUT!v-0B516$A#O*nPrC0mly-R8t>N&0*{;M+Hh z{|J5Cu^H#BCY3wC#lYngQmnc4EU>F(|3J(Zmt~2TrmJP z{G0pu&LWG6_6^;=W&oXt&0O_=`GvJt{mXAe@xsj7|Ldjv$BXUXcQtP+ zfD(@-!f74L660CQ%fq8-@ZNssAPULe} zkh*Ue%KTEa#T1}q3@!xL@8=4wD#cEJwf_Bp?rer+j8S!DEx^CQQ z?5M5+O4iR2X20VG*QLbz@MylEbV(>U8hASIwgsRYBzRFwY{-+*$@Uoq>yXf}M& z-u6W{OwZ(zwjCD<{*1>rp7X`%(ed%M6MTw~@>FsckMVd23H6c?j!x+n40Sk80b{5y zE+$m(<42eV^*#B3d@yv29myZ(OZD|2I$_xU9d^PmdQqgsbt=D!O4dLZ z{zG&kLJB0fLRmSZwveMWxc+cF)_6~O6jD1d9teGCes>5vvT{e>e~7*B5Oe<_ zhSopd+{0J)w^S_$EAHW9WhJyPrL>5EvdDSd#C8T}jA9z3kc%yhOWyX70f9I%<#-#5 za-YtFTd8%S)$c3&`E4cVTWk|4-%$)U9UfoNAFb&(SM|F!{r1xS@bZ3?gJkV>xhNi6 zh${1JFO4=@+aIs&FFWtRJ20@Ko8o=@`CV(i_X`LPizsfc^^hY$7dJDw9- z`IXd~NH%?3e4R3a-uM;xvA=eLzt499`EjOSZi@v)PukKnKUdy_NzD&GFEwEo8z0xb zZ+W<@W-3dzL5q-m#Lg_b+{L~d-2N324A2H5K%I6}o^eh!-@TfLniAgRkq=v$b1^An zkqG7q{UJrb2`PiQXazg+6%{57Zq*3V6bMC}&0hJ6h;j%mqQ09dG|1IX2DDU<`U&5m z3g4!7!BjLLjv8$$qCpZY{c3X8M0fW@^DDLXj)~zz6XB8}J*0r({j4<(suOBY=kOVf zkqu0q`~ZMn-V7i@hKR~0@-f~wF}{6bS;+N#0=YfXw0xA8@djV0X+89_!6sQR$vXE9 zF-#v3&d>8wsnv#AybHneUu8D07>L}#_q%Ode0Ov)8;Qg=0_YF8AD}Srj{(2z1cYtwYQ*wV8h&K+D#lv(k zt?3}Bf5KC}`1eu2OXYqKn%!54aZD2uG%FtBk|W|52JA}%=5GVxO9S@Vf$(oFX48J= z+5OCORL?Pg+Yfap%$}?*(Wd?E@Ah*K?q^;ee)Zw~>~HpSPwdBSh>?*@{jcr^rzCFa zy_R@uTEc^+;1}`&`Uyi?Y4^YpRVqDz6~PYg9}!=cN(i1CmM9`hg}z8EY+8@kky8_u z8ho&iy?ko@Uq~I+hJy;-^eHQaa=_xgKk}GE*tIO)NXfNr;2t zj>uKumzX}dn+L zqAQ-7PEtY`R}9TQ4=y8chKE%kHQH#kvy0YO9MxV88rJB(gUAO=1$M7&rGcY!PKQes%NLu^m zk?xiw&7|B*N5({=aQlBG2gxtfe2O5^ACGr0jW?e$=Z%MmY~w6CkiRZH%B?wy@Ao$c z@E3QweW^fo#!=z9MwN`BgQ;s%wJTPA*M)!HQS)J-1;nZLQ6s4;x*;3pd)6o z!tArgKBoYIYGS_Oq{Y#wxLQ5#f{ z2OdwUicV@5s9T~QrfLM~Gl+#~h+#BcW1%7BywqqLK0`(d3c$B~8kF1MmYemC0BpR3 zq=;?VV)IH>;Lf*ZA9kFKe0C#oR0jo*evMKMKl@sqWCM49nci&wy!lyGvQ>-iv7-QJ zF8tw>Ox*@M>} z#k(-CEIE>pTNY)t8;!1E2Sx4Rv61Zo7EG@{mj@uzUqy*6E`dZzrrvqg2>cZbhl&m6 zK)SKe&e<-dYD*fMnJtg}py29b82KF^jr`7|?8Qggl}GxKudiSv7gm^`R8$RC_}F}& zDeNi3K$TX@Zq~}_`vTv(rnbg|56_Kx_=q?^SWK^ zl%GGM2T}&u&mXM&+~75T17zgq3(PuVvIwJWg)E%HYKm5e=2E{fa4(`N*4I1BZj9CPhnO`1lZaLcCdNgUQrNh+AWcwF4C~;a2qzFXd0#1HxiBjjv zH=8YSB#r`dsl-`b*qbGhE6Bj_Ar;>7zZdfXON^2}2*2ceU3V;0eElwVqx^TpS?3^U zaDxndLB03UKp$To5*nl&HoWYPPN@sjy+~i3_mP50u;{ol0Q5Ybh=naYcs-$2VUKTD z82>R>HN%#hPo7k{(DeJg%6v0-ygBLEg@h}F6nqTMJ`Sm_MKUkh1&hd}fGb1xn!>)g zk+2w`BrhL>6&!+LwjG0xsfwZt1R}X#Mdt2E#p*A8USfZ0@0B z&Be!>(ag9Igoq`=Oi}}irqdsi1{H`S?xzlpwtyUA9y-SU<{0|%`Z3Ht*)*cCx~k#} zHH~H3rJuC(z*de9fRm7vnkoUz7g^T)+Lc8>8f~;kOcHKUnze5DjvQ=Ey{X6E-3UYz zB9Rir+?*MMt-nChf)SZqKGB>?yU-o=qL#S9#Jf;I3bp~<0Xjt@&}-w$D31uzg@rOl z3>Q(Xu%E{;MkKqi(^Zf?7K6ptRpo}jy7DKq!t{us*QxR0?`YBFI;GgUUC39|7o7cd zFh%IcR))-QmZ8ET+oy81hJZdYf7k`SJ+u$(!v18#D~?O9J}v>%=x+zcOg{Y1kIMaYb26Bi9TPnFO{ryOx?5-3pUw=|&7`b$KgN#|;jg8L zx4Pds)&X@?-e|UOHz!q81pX1K6OWJgxCGQs|JiIJveYO`M4YXEcV>L;Om+@!vqDuU z15H0e%0kq^DDT6LIOKK0(yT|I^Ul_ZE@7HBpB5GhsTQc6EmR$yEf%m-RCc8~I?^Gx zf{;vhMBtq}j^VrDm&d1C1k$=f(o>0`#-F#Q!5o=ow)IqtLys#)=UH>U&75bemRWPE zE&6XV!PetZi$DDhaq}Nls5MW0!#wj1sBUCVHp)2i$`{QA$7TkPMZU$#NQu+Gf5W`_ z4GmW+MA*i6zcKvx_K9yWYvUoSF{~J-260*Kq=^RvW=kfgN;GPrWTv~t@AM;B3Hv*_rb$EpU`CyJR9(Hl=qu(Wdb0Z11_*V zOk?q3^rUaj)=`|0{UT42OsLRI@M3Oo?TH~kSZJz6K8k9pPEx{^80BXPC{*!T2yVQ> z#D86F%!{j)TsBUAak)v>U5=A$_J#DSjFup@@C=7OA1DvtO3XkNpM_w}m8?{L8QgFs zniE3zgLPLTu}HT-K~Z9-^nC?}2ETb$r+ud?Ak)t^R8Y1qcD7wpWOgYjBE3o-`c`P9jB8Sa^(vxoq>_#YPpr{{;VT!L?P4r*+vy7lY)J1>@`C0V z&di9UWg4Yaa>150#O_gw9sfBdN1MmOtBkwm_~`oM&D!ImtB*IA9dACE=2ox4iBYag zgdV3y#+KrJRidzxc4?m=XWgLw`Vgl!qIM+>{9ulGgMISX;j>jl$NAGzdxg$Md z&^2vFNv>EiRGeipP-KRD5gShN_7`qZ_bzy7Z5dKu_khZ8XR~Dy03IEq%3zwxXA(TN z*2I5ih)=Bn{^qT#Qc%5pm9|O#VW#^V-@XPgUIiGh^O*@>{rAAwW};_}L&SZ9Up&d( zDgLYGD`X!Y#CG6U%~mG;oCv-_OxQHgj4B9ZQ)RZvrh$By!aKuqLB5XmGcC|?^U2ELs0FV47 z3{*ICJHxQy+O;OSn(wT=hO_I}vZ!p5=W4imEo&5BKxu!d+axbHl$&-IAB+H$VueRQ zme6(YR^d!n5DL!W7Ds+krk;})M%t9Zuo4=1{(PPBhI(JuT}X8Va1L#gr}Ix$y3 zSgVsKs+_7DSX0Cq=l9f}KMi z&sZ@5S;l=EsJ56?B(IfaJoH9Y+_e&6CAIoHI4=W0RIYx_yh za5Z`6Yd_7VN|3bR;8>w#F1hedhOJ5!74$Rb_Qk&_m$VVmEXP-c_HMDC+bk~9`<6X+ zoyp@RO}*EQ{f&VOzZs>T$=zc*;qsLp;$8sFOJFBp9#XJ>JzYaRUcjPCGz5ch^5NHm zfHBg=94wkjqe$b>uzn}@CKtSN9q@7)%1)C#&*f@{vWlmvpqqF$bflN4 zNOdXTNWG7ANYsdWt4pJ6CAC3`L?n85lIjt}=+h)r#A`_vgGj_d8kL z#7n@5g!g33?=$Yqy*l@-P zBj#bGstC?s2Yt~_Ieoh}%4xpc&A0J(D9%OeymyQ_CD*qM#}pJ9Z{*FJSX<3$Ik!4z zF3s5$IrF1j@8vo72F5hIjZE7)bAHa9mkTe+nTvCyR!U1glxQGLQmiU3Sob_2<=av6 zMG?{rGAi!HC4%3e8x?k@!9`y*LlNV*c<}W>EU|P-iz)LT?t97$0HcVDlq#5y!j>%L zE_$#|@NJrDzf#t~4ePXx0LRR2Ia5o47a`+?xeUqnjafsICv*^*3?4RQdrjB$Xb<9U zdPQPBO>+=*!tNn+qOC;(cZ39WCK0^TqY51L1r-$G6kgXY#=&Q#@FRCbDM_ zatE7(atDV889pmM#})q#Q_q#~pdTC@9c1~e4Mr4yi7%76R1p}TG_xR;2U@6$xyrf? z{bqfC?#$lsv|e*=uQ{g|-Z74zWMk1?=I(Lkg7G|lKfARnUfgSz_l7^zE$oQ=UeOpO z5SD-B#3BaYRAX}ipR&*QM1SqEuk?g3_rS*w_jG_VqNW-Lrq5=gN*tf!090LoQiQgi zWwr~(H3%BU5z2Fic_lu`gZklbmFgUplZVU!32L>> z`MWVi1=)34SnAE>ZonR)6u-g(l0ygQX`Q3Os_kz*c2)$EO>9s*t)mVB&H zpPfwZX$Fg|U?VcQ5N(5rkf2HBip`M16*h)F&zhg4KOV&S7NaeiLEJ1O)v!^neFM`n zOkA}WvGZB7*o$9?MislULQF6Nk|D(G003khzuRk!#{=6*04Sm=x98AXzz9nAU>z8R z@t))ll?C0eQsHl*1&9f_ngWD6flebcvxk&rEKaEf=COnqG^5ya9FsW|`<2JsoICJL zXU}lqnXdK>*BESNYeY_j6NDvUFlZ5k)=`)XsURP=k?JH9)kBg!GXtK-@yl$P=6x5w z1un4m)pJ3#inNneuG&6{sts~m>EQHO)rTRxazZLSB9`H#Le~0JksbaJI*F`eF7jqU z`YrkkT+lFOr9oI|7i>qKTFUL@)+aoGDH1Qw?|BU&Bf7sOtWAvy*5~d|EAMIL08c8i zP=hcD&L$9i6Nkm>G1?nFPDyPa@p`1Lvr$q6gQ&1HFWTtD1A!w71Fiu7<$+CYE9^UZ zA>)JRsgq~0kLgpdl{*91J%koCf0Ez*ZpgeNo%;KUQ-^DS;?iC8sg+>|Tby>CTh+j| zcOcAEfT8_FfUxPx4>SX-RR@gDHuNwPyo5Rp$VB`R2Cp!-*EpEw0#j?5+M~0F*#%X> znP>@yIsoR&u!<>|-+zN_bbNR|OR^vWA+jLEOn^=UDZRC)TjIPw`ffHB#7S9wz^$5J86q?k<%0w*0IXs=D zv0zrOwpFw-Zr2d`s+0R!ZkWL4(7i#^wn|({b`=ANGZ(q!$Ie{j;vc)VU>RA7%#tuU zIW&vHc)Of4Tuus=Jj%RA?emhFmGY!b&}sr&MUIHV)^Xd5w(tUp#a2SaS$Pnk@K2S6 zCo8d2ffl}p%qKnJ5qyssCY>w_kkdQvXv4jx7~H_mB|Rcdr9bj`%oEFr0BaaV6fA{F z5=F(rBtuwwr*ibFZY5*oe)03*LJ@s_q|VkJ7B0vHZU1_I>^z5!`m^DrZ17GsD2bmBvmS!Z&B*_hyUcb;hmFu0#dCS6bUz6k zGK>_5apS`V-lLxP`d$+43z3o|1%qe^KLwdZajwb3c?bWjad1Wt)PNG2tORtg4Tzi| zn|(c!(EarVA)$BW2=I-|QefawzU7&rd0cmFs`rUl>If-Kf;h_^^}$x|;CX-5_s`WU zF$usYx12uU@laYEo_sz$B!8`~zJ_S$t#~4t55n+6NM+^%@Bs25B6U9RNY?`r6^a1$ z1L%=TLD9s6ro&@drEgnTF^rYAG{?-fbFy=r=Ty!$bL`x3j+Cj^sji9Z|ZIkR@(rpoZNowgp%eWk6Olb_o%r$E0;^xMtN z%&BG^ZZ4XB;p!CgZ9dd*r_ACBJX`iQ^e_I>Zmv3y8@3bsuRcU~k^&$d!qgBoMmjon zJc~948C_$W0FTnhvQWzL8flHCl))W_v%+oi^ICEbWnU`I!x`wdNWd z-pB)F{2xu?y=1&2TloqbzEy@t@}@zHexBH~6T?Hx`}$Y>f|=zP%;a=e@5J6S$8^FN zbP;M*RLFZ4BYhKKx*4Wt6mX(ktoZ~AW5{PTTbm;Y3d#eYH0T{q=!K>;UE(prZ(n4f z$-gxn!6i5cK&8Y7!aSOrFg6 zc)MHsuyv25FnW^blGTi~0eC9a#FY|Lq)&x5F$4l?DM;EQIq;)(&|O{!DKMnb8FbCw zF=m8s+m!8LrL6$x-JIOqnmHk#*|`nD1N0LH{r3d#!AIP0-F?D{2Z2?#NPoh+)umsv zBFsjSZIX?%P;pvdD0`-K4laXjq?xXTX-CQ4$sK#DgC$OK%AThE3O=Vuob*#v$!6|Y zMbaNB$iN7)+`>)*jTJ?5o*UoAGvgWG?&sUAZ(Ft#&heD#{Cw$z^iJa9X- z^C?q#M9Jqj2oKnQg|+j|KITU@=Ilq7^c9@fee7!JuXY3%F(Kwlr9LyxjtZAa=ZT^g z@U&s=EKqd0%~7D3X(@y~AOn51-)oF6Q6eMs49yul7U!nESV(4K5l+m`1;FKPc-((aJA-lK3D1Iqxw36T# zrjPYljU5(u4e+%hsmY*_^pAr9%cEXlXMsgb5aVRJwWw!MD8XV%DykIM-3s8c`+!bQ-yJX|cu|OaovBVC z_@?)iixnF+0s4})lan!KEbO?Ar$Md}am>$5akBYu^BuQ{eT$7AQ4^FDwHC%>3EcsY zFYvW|nU&iP_CPx{Pw>KOr;2L{n?&R395myg&dItiG; z1?a9)V?f5*Af`A*i;Srj-3YzjKa1kFOHGz-r!rR=ydGweUA*T-Y`3Y73rg=1n`OnD z;oAzSLYGob>vh-%7zkK?S4U1F-i3N1Crwh8#p1yfk`{q+#Y3FYo`^Cwma2`lQouAp zu2ImZ4!&q9l;Cp2N>K-&wOZLb;Q&+BJb4_rqxE~qf0u$A%XjHcDH+Up_?pM(lc~V9 z!mD5x;UTIG&L6FiMV0S*K9SUy3tlUK+GI=kwauZ~63*U?p=_z?xCnQy;xpE5v(Yow zY_s+mJM~y|T>g8eH1Q$lo`Ds)oIE!LVh{`mn;5xK(NdXrYx4K-60?p3b8+;`*!&{4 zcd}4wrPam@3sfesof(14LMqOIfu5MnQ(Q{5dx$4+VP)+eIu1fj_#TutyYP?- zVAOtGE_e}&%OE)HDwF~3_h#IX*BC?nXb6M^GPfudWO&iW)s7-`sY$X`3|T-(1zyS7 z9N=XsmkmCYaI`(C>Ohj`fK(l3Hlfuwn~4j{m`5_^u?*jrG1tAr5X!qasJPQ|P@JxY zLIsUKb2LW0bx z)!ujHTI(LIG>@pe+@SIfsG)6kTFcv&(YuwXM~js3>I=8J!mC;)!XPc@ZVzglGwHbu zBcnkQOsWV%BZ);QNYLPDi3^eU8B|Em-$5K9m71_m$d|8AK(@)n1CRuDNczOUM(e*ADF+P z07S!OgN-?+_g7g@%+_Vy)7f}i);^PU+p;Rs=UYQNj7Rv_S!J)*B4L+qL2m|yiNhK< zQuCRTIRdSK<&Z{~(0Sh@C@tPcnc$&Za$f>AF1BX5wHrk}^vw|V3}FmUZ}5UDkM%$G z0kI2Bi%7IXcziU+n)mt8h#A)kgjPLzybnwo!vAmoSjnkv?~?CCX#cS zVV${OqK|$)MA_5Mu%wi}P4a*o_0sN$?LbCLxzfnL=BuT-{xDxAGc2UUxPT!9ta7XR$jZ)`LzbC3JGAdB22oG z1uId*bH{Ew2Ho!a((e0GGey2e*bR5cHHNXa&AJV>)Y|C#<9(%MUMF^OM zp{%ZyY076$8s6QF8I68+73CHz=R<&$(sh-s!WmvnAQhmTYyAfOZhOClg$K#HOwn^!`UB27RD=KuYjJF`1! z7~Yrv=bz2oxpVKi=brPN=RD`>$J`a0TVs1$46RE4In^O6_Nk~jVn{VyZRD>;(-*y) z#PqH2KQT^b_(Qzp_qxoOoeft;SW#@w%4vR*qvG_KfuvjtT>=mtrm*h0U^-z9pQEpN>)pU`fV|rw74-qZ)D{~&I8p6$w1@&P-zP3*{0`l%_ND{jLdY6W}kOrK^iBJ z2a8kcIF+VwiAJELM-!o{J?Q~gTw$v+X#lV;Aa;k+OcD{5*L@}BcZ+3>{1@ZAVR0S* zDB72ckPT}NE7`;G%rzGlE9V!@x}y1jIlJgzM{p-g>BX2&%#xCMKnvj$ci}T8y1SLDZ6r4{R8nbYI)Qcg56^Z#n_bhpe=`udMGN_>wbd$)$d6p0v z4j?MFT&NNGHx5u`@bfQvx3JxWIkV&svw3R^A#dbL(>j6dkXaReW@Ttrg?RYutL~09 zcg(rtiu6XO`!UZQ``nSDn)T$p9OU4}5_>Za5&m;z zlnPK@nA;44UiGh;WpAD3I3yCQpz`gNrPG{X%wfhH4xI^X`6v@hKV!|^fxR!to}L|I zxAa$;Z2mvv>e51TRDo?Rvi|V}`*OZgus;jz&k?uD%Q{iJ+nHY%9M^L@@Rf@g*oAhN zOEe0-gUyuX#Oo6;ulWOi2yZJTwkQKdEs>mLK#>WSg3I&Ci}})ZByWmtz|dpgS*(;;!LoB3JPz-$9|u;GcxPn4!Pz)oDz8*D z!+@8X-5srDBxvKDc$LQDt1s42stwujRC7mSY85ZXg8i7?i#%oRXvU{O0|L8qe4;Y= zWE2{On#Nzlf{1Wy$ob5OVfA30iscB)Hzp@+8ueTrbj+5A$T|~MsA?1TVeTWbL9(s34XPz~um(59RmurqMyVTbw;2F#SgxTZKW6)yF zK-Qfta_wGQ@}EPs>OWDUB?6dqJc>eQ7fa4sow()k4pY<}3{ZK~QF|H+OP-WkyMQ|6 zzno^14(CaR_GuoF^%EH^`p=Qbtd1(~7>q>fUi~5)UT7`4#GPwTnr_Ku$YMxj!Gm^d z@9ZiZGPySM;q!U>T;3cH4q#Za{*l0dEpEt?lgPgE&8j)38XT**qii*YPA@e&&{QBV z3{j#789CY5f{!fB^7w=92`AX^hc%#6R7-rMd}(+HB}X^-kKlm*g?+U%!`a;tbcVBU zbH_RExT8BBYnElj)Ab#i!}Igt;E+xR%`j-6IXFIKBJxs#WU1i`4(ax;C*uqrG&|Zo z%>nQc>#)_H<>kz>a6Nhs1!2ox0YwQKaDIRnV+m@vZvx+7oieh~FP`xxa?UKCaYEw0tUKOm);V?n zVobPND*o;u{LemUw>daDBxGrehYg&qB|?fL>X0E_=QGiXo5e$;#U{hgKB^#IFG-wC zEwY#LgfhTm!cVd;gol_2TM!B3TJvL)^02YXw5Vj485n$IhzeAu%FChyatAH|d2^rL zvsor>3}t+GeZD(xt7cT)>E7I4UQ_L0^EyuX*!ZuX|6f1&CJQ&U$_6jS&gg`L5zXF zkNEaZlyany!&#+6NA~0Vy!o8DtZXkYbM()y@aqz`aI$B^5u~*|TDM2Zr$V*7Y=cjO z8=>75KpxMeO^ZBLx8G_OS?mWNcSUwI-^UxyKZWLs%dtNkEq-{1Hc3fqJjoB<<%&;+ z!vYYc%SMZx*kLbe7F+HI3th1e5cJohMHs4;%_5f*BcvkX9iz7|>aaIAZ~qcTh}+Vn z{6SuN_p#?HtMrf97T#Rckvvv0YspnhXcD##^M`8md49tv5(&p|YaVM>n%vM~A8b~7 zpZKU})Xk^KrUCzinYd!tR?I6(M)EQ%ZFp;YczZjf!}^o`F9qK!voru{b3&QP3_tu( zbF|`X$q#S;3=?DR9|W%;dylnK9cxL1MYCA$jJmzLIj9!{Fpa!9+nBSAnZ+!O$W5Ds zTd}^d`sHh6ukCh;b!;%ewY-_=pJwc-#%@<#sjU^nv1oBnSm7Y!ss(=mwC9c zM~g99p0t;v^?ae_`n%m?@!^)cO4~1|2gIvj8`_4rv>QfxcoVu_Vo)aq5RTbqXOhk3 z?0nphW)d(rHyT0?+<~)qkbvr)*(9?gt3W-^)xzF*VDxf#TdGmA4J1QWw|LgfZ4z6b zlb=_fJ9&PzJMfDG)XSl~YMw%oC!aa#OWZO7p@1>X~e&;D|&#qhcDf)1s+}$hI(u z`jRWnj~Oh_keJM*nn_|3ICg(lWt(tzb=%CGXdX2IOIRdhw%chJ!7{h2-DS$oz3v%^ z!fy7>usXWFm)&E^?m0I;xp&&PPkCGNp6K1B_qu!g*!NEPx4!>y=O4EJG3DR$#KQ5+ z$Lyjh`{ws^=by6sP5DIf+3+**=i|>2nfZn2%Yfqx$$`3?{Fgm&$^qdQqc3E?Xun{- zmiua+HM!@_b~iGoPtSfsW#Yq3@Qv{6_8a-HXO09rseg&FN17=|nEjmEXZ}j5eXKj~ z?v4X1or*qttnFbvIaWbnr&_y$ka25PSaX5Rt*{x4Y+(rsP6;@LQ*Fq#9?Hi&)f-*_ z=W$mjE6HzB&BDV@BO`GXOw0_L+w11;I*Z;C7a;b46f=M5@c-Ch)^(VdiOD2P?7Qt{<3HTd5X65d z!3$P!CLt^pJKs!l9wtE_3!ra_6O`I?!vHh5EyY$Aax9BtU0FKy4-PFumeXcw_Ft)G z5>||ShA@Ya5VWJs2fUZrgbhwwSxT8FqQ+5F$5w=+5J@f(S-6Q?UXUqz&vvDupf5MR z5mAEOotdcD9gFUmb;rmZ!{&K`ckM0RgJZ-Nct>K7MJ(Y3{XyoDF8?X~+66~@D4ZvN zKSqa!rvKf1=bW1&J&g}Nj?q&}0cKrb&lCr`) z1pd^@4|7W0p_baqV} ztQCR145Aj7C@8RX*?*hpKA3cHqEl*73TobnT{-|=iUt1-qi@1dLKt$EGLpZyBoPVBaw0%$ z2L!mvFS-4#G8N@+T;0>BB><6!kOG=557|yWe&f@&Z|J>5GGO++MfZ`FQivf9m1h#B z8TT6@BzM5N6xxVK!JfdwN`t>gD*BiA8Y!FA<&U|e?~bcY%a5u%kK8eI#}BvMUEt2g zx#Jvn?03ieZOf0|5e!R5n-Sb~i_xK(#ikS7mm1Ya`amxsKi=ZP#x-YaWCRus8$=D? z30N;$_D4F~dS~=PW9SfDT;cSeeU%++bu~DL*_0shGWGEqB1e@} zFqDFyk>K^RZ2FJO>*2dFYW~p`^WBO$r4oL`{2LUw;Gf%t@M5o>K$Y*MrgdcI_ZN4Q zljqDnf4C35--8qEZ4(&2J0{SC+b8({Fe4M}nhCfd1gKNR)Chgy+Q4m^VwUy! z%lrICJ5m{mV?#!IsSj<;&y^kOS7<}ZK~%&=dx8IF?E3b8F(SJJZ}Zes7Xu zvaD`a)qz6AoL3L7sS{m9;8KD@vCYYfJ2{w@v)NNj@O@M1m~g2HE-|$(8gi2fZZ?&D zq>$@y_6I=WQ~~eYJ2aK`Us4KkEy(~;kQJ2jF8f4iOJ(E znCS?D$ORQ~&h+P;(Q?;!qP*fs3U-F34ZFh``yNpHKN)^XxM{1J93^e}y`z?U&_HG2 ztYL0#w7aWUh(jy5R?^;BP)VK@t#n8Blf$=MBuY!3g8~W!7*Y2I2q<-`E|H6LUon1a ziixwsHvlW^Zpam#{93?qx~;|I;QYg&yVzbSR@pAv7Axf%=03Vx=qiuTk1O}K*~*0K zKygU^tqI?gr$B&Uq(3=5p7CC#W|*05%_g$5<86cO$~#0m1525ZpJcs2!2#>SN92LQF;=`UpN$ti^OFck^3 zc78fvd^>cW?f1?dP*Qzlev#{AddxR_?9Fv^o8m-nty>tlV+OKE4lp02W7^F9(*{Jf zq{YfvGbeL;KUpjVR3T(gy`dkH-H%Z%1<(EtC$(WOF5&QK;8F$l=q=z$8-MKArp$Zo z0E8-_d(a8IBADJvGqnD-woY_+LmmCVa@fpNvKaZA$W5f^-7^sNfzPK8;39JE0PnQy zjFLiCu6D40pg$v)GB)VUu!00JB>)AkA_^)THg8!b4ONmFd7C~_G4y;JZ^a-5FC1{L z1j7UIQG<5rpp<-y3W9$s<(kWq^nIFpO(76-AVWN!ODt5qM23~6G;TUc#q@R?@8ZGu zf&t^yBat2MlgW0m*+!f}m^uK6=ZqU}4%57w1|icor)~M=fYVp06>LvBYH>$?S+5n7 z)g(NZFiTWn8_=Okqc~M7a_Yt~&AV+dzHzh>zjTdg`u=yy4|O$fmHAHQM6CqmSl7t4 z1ygYR6!cOxyXB&=PF{@2cyH3EoIqe?quZ(|s+}^u>Vl)s=!2j*CK@`(Z51MZy z2lla{%JKTXav~af*vw*oW4>+8pdh5W5t<4102u9*SOKrAzT&PbnIgVtMRo_^32{2# zcIH~7Gf^X==vaSkUv7IhU^)CWo|;JP4C#38PE+t4$(Oi=N#|Pge*20YPirTCw!^jg z-%qpAskXAl8o6vfC}Tv#(Ft4)v1|06ZMoOJ)@I)4|IlX7wH#ybrXgekhzSF%~DvnKMt8kdd#Eb z=V1vAA_Xs1>>Wc8&BLvK?O-Uu>Q{sQ@L+>JXo|lzouO_VV0@XaT6xZuCIqA{+eutO z_QL0A3duA{*Pg4w0+m?cW!NfWVHZaX#U#q5#BL4PeN#00BXe$&$dW&v;hGFl)^Jse znZiPnWmjr$ksw-+h&@86^a;ro&(uNthY=s;DH|ZeL5QEnuh^w_^07#ZtKE5}Wb4o! zgH);>T9f+UK4=**SOeb;X1{kVTPsLRgY-s)z+X3|;Y9nw6#Mrn!OjtXS@txGFyG-_HI*s$vnfi_ z@=Lr0wd^YziQTj1$cR-1;Bbw77Qofv=uOMCf9r?cG4GB!cbw~veaj+Y@cWN2h?t8= z4OZau7Cu$)glS4l1Lj5LEFFX)4KDM`m;3o_c7E{SG;{ehW;*-bFfLe3LL#7WrtiY7 zlCl_Bi6bin_D9pq#na-+Vt47!l4)k?G|B^q;32>Ku%E94cl+ggeEZ5&vvz9I%qgqR z&j3?0b{}vgW48uX#C0_{Gf=WFx>*cx6$Nqnxe-Dh@fYXp?Oegx+K!WF=Tg@*HlYN4Far67WS!eO{E4X8J9r;6!Htg&!$Ig0?=}u87+oS}a_l}*8ba2Pi z8X7AzIe2-h!l{^8L<3H;DV8cbp`B-QgyBP{qvN1>6(STF9B8=w!O_v78!_SMX?RRt zV_c}wa-1+dK67frhx)XsT2B#;w0h;zC5$t_WijiCNe^v$dwTp{!t17kK1FlE^mxT| zj^;`w9WUm)z>hPh`=?E3mn+o1m$8i%b(tsmU&hrq;OPc|O(9`L7l=g)|*nAU*DPo|~(#V&4D99-tS zt(;jcbW1_iO|C(26*|f6D?==YYloPh&rOFypTRW@Z1OJ3n%~bb_spokc=^q}J7+rl zBVm-phdHl^W|y#3&f1eX-t+86VQ$>ozh!Il;;goQD_@@{X2Bli%@JF}#S~wdX`h=3 z-C0ZH%#XG<18qfn_||wJAgKh|%Ai~KWgL^L4XmTN^5!8wxpSn_CbtM}j4&7q=!clg zOsh#K^SS}OE@GWcx4Z4~50Lp6!viE-tce5!G9wU~Eg7!8Fvoj&>-g`pn#|P`GgII5 zeUx@cuA|uL=%je|8WzlekL;J_B~*|oHT%V*mQXCX~5pH(|&7RP{J7pc>i z%x=_8x^Tbgmq~lpW4~mbg5hLzh!A!zOY&l6j3xxza|gsG2-ttC_%hcZ+>>mkhP8q* zCy0RtvGqLTWT&oV(mqB0HzWw&0a00K3aX7U2PtLLT&mnN^-Z{Q4OtII` z@h3ywNJ`*qt7x46S(f45ln<3f5AyYVe7E3fHAk#N@u$F+UP&Ha^?d|-m%_0I~ zZe?0H6uFWtZ_>S%lt{@(+QikmLf+Y+*p)QyyAkQiV{IR$B%m_-L#GA+#l%^Ne329p zZ$dxV6|7*rcXJknWAsIkp1Hxo4~0_x~W7{~qN$|s9+>f*2$;P{FUZ?l`T!PN|z@LU^raowa^E(?oI#q5ZQ`I1h z4U0M7+VjZDBs0GszwdkunYM7gEuRNzeR^K@k-3>Ww>OvUU@qOk=eWr5>(=eOG<{sZXsMz~oqu#TtNC6Z1*MryXOp6db#iZZPHTTSQD#XN$%muqv&&|f9 zNUH_oT6ES5;F$`%SX|wVl6MF*N<^98G0J|Y!|p_Ap3N@kRk=7zbNyo$F}|H*tp!pP zc5GC$YfLsgtuljd@tT>gRuVENVJMKXpy&;6$4tmGITHwtK>pY~(`Rp+2dMvh9tqO# zniouV0kRqjZQL%wPdouMc)Wxg&6TME!bL>9e@3zZ+ zn@my>q^V7iKZ#A5SSD!)T3j~RlolS`1%&?g4PF{;514~!%cNI!9hm1%R=X}cPtv%u zK<3Ry#r*Y~edrca1AC1JD7qis4rdo@UYQ4XSTl!jN23ei>ofDPY4(|yw3lNQRCBq> zA#4T51sFtL$$js3t6G~o2I<-Q!W!a8=#eC|$aJzQJ7Y%QRl8(*X z5%z8FnEB@9`Ka2y-Bcu=Fkf+$Gn=6NQ+)>&#n5=Z^ z>%)F6?I{k6X>@dlPvYE!EaZAnK0SCO=o~wu(j8npKfYkQ<{B|PS8K$udAsWol58q{ zr#;%qyK_Fh|83fX8@7XOQ960`Kr(KK@B+okHM1gYD2JylRb~!sLqd!R!2r`6BC7bQ z1(L_pHtyuzGe5p#v`shArlXBi%S|61Qj2cCv42WN^qnmAA_Ps_sxUbBj>6vd9i_cX z-c{SHvF4n)g^Qqv=G${hC(iK|3Cn{hLO>nODRB?&QahoQgA*zFCGX`OKz(S93xNT@ zIE#Rj%V8^Jz8(EU-U;|K210FeFoORl_8k10`KtMv{c7fGS?{=Aq#p}@u`{gKnw|Z;f5-IN zUDGl0__^OsH+M}Bzc=54r{5E{+V9QJoHpMy(`xtAc;r-i!r}};MuQMdOh;K}AScz+Q5sSMz`ou^ig~!fhIi;2C-&q^>FRrdmHLTR{yp1T2b+J*)$ zSU~g8AxVwt+fRAk&a5EvO%*wGnxMqHegRZRGY_1|047Xlh}?}?sn=k?NoOEIh|pvy zhE|!mD;tt>?451*^k#rO`KT|MAl@`>7g&;wCN#K{allT|d{D2sc;Rt11Lr+W1Dcqv zgmPt2E!a0lZP|k|UupMF7GXRk@(+uHzrsn9p;2Dr%0eqni0L3K41DD(U)TYk6YwcE z_?=)uo_gNwT?+F?`=!+c&ykfOc47)pc9AxOnJ|yviUD8P#*_Nw`KYGE)$m?#HP#Uf zBSLM}z}o?cek(eNupFPENM)&%RCafG%Z}21#G3@Tx|Na{sg0k zv7i2-2`!FS7~=o42a!GJ0^=WKzcR$f9OQomYaa>(dzrD2s(^QO^zdg5)QobpLc^`1tZ@1vZ`?_)k~K4m_-UfIu>FR%CeVB@kM z7}7O=&lu>mnyX4PjNfr?8jiN<`^L~a+!cN>cKs}OO>a8~*W9t|s)A&Mzcc1uV{T9e zJ$8)b%~!kcwC}%icXWQ8wrAk(&F(wBs~QM)dDtit2fx53G<5wDW1bqj!r+Q#WxN3R zTl5rPcM6K1TK5&S9Mdb2@;IJLPB!11uCxhnJJnWC!w<^4FB97w5e6EA^dHq)yU4uX zJec**Ad~*+9Y#)63*xk6u#?%*ygAq{*aIvgq#koGn_xPuf-?bEzG4ruKQ;cF%s~d! z-i5DAjNO5+z(TyuSM5ROEB4FgOUnEq^U8BU^t@sloa5sSCfo^I_hfTkws28)JajAE zhTlD)H%xsL*2+GW-lWYr+JIDbwW)2z_F-&W4r=pHs<-R}$YtyAdUybPi;zSmn&YO5 zB-+s4AQ+>xrf|`+PbYL%8*gENaOWxCTIAdjUlu*d2)MzgKi#>^B+Rtw>lO`-L{g0zhd;*3N3+_zeMCz0pyfE=&I!Mc z7{I9q1_!+R!1@7s?`fPONo2@0_OsbXZ00Gp_=Z^gUCGEo^K3kkyyxM-;4=s;5O<0> z;?_()wFXFqvz!1*1~=E&iS#Lhs~kV1SeN-w8&>urZ{yUhybNSmM%fqm?-s*Kmqf56 z%Mc?44z9K{N32f09Jgqe?J>`$CIblq8_@vwk%dHt3{La=mL|BO$eU zbD^I6OKiTAn0^vXUYR7nUGI7O%WS=?v7A3BU^3DUqjqNH0Elf+WK?+k*bBt#wFB{_ zJcb~pVMb5r{|w-FF)f~O_^sfjs_^~OIvv1h}RnBNGfAMsZt{snkoF-@_DBy72su0$VYdND7m zsDU~`8@6^9w}R3iIVkYo1J9}@h>w;Qq>uC$lLSM86ORLRKO|m?c~sUSYp1L;X0Z+3 zvDX~~cl6hxz&O{|8@RHYx0uLArF#X+8LWB#P(yzrB@7w!qqYdfS?L;hJB~8667y%U zYlAQP05=#W<#La(qW4N7k^gGq@8;U@KKI7zI^>LVt+4Y9JMnaa5pA-}R)_5*?|hts z6^njfcH-}|_C9tiKxyz~QhgfR6uNgpT;V4*9rt#~fp-REgA#130cQ^S#9d9yu&um%R1@nKc}jgab-jlk1a6 zu2(f>v36L6-n7Squx(wb`T>GAlm`!}N;81^X1_0l~PA#$SZ5mABjV#Y+# z`$j_vo8f|TZ6@@H1}n!8j!VL>JSv&@+M;sa!lK(x5!NAYY*MNXa9V7U&B~WcUou~| zU&`vxkQ9QXYEnN zU_~Z)fOLE0B~F73YUb5K;iW>RfLc=HE$5`p#q%O&T)-D(@|1ZYe~l9Z5lE z!#9VIvzrUNKA*}D(oMmDJfklcE?I7*ywNU%sWJy1njs;j4^kn!-%(DiD#=bM1(<}y zc#N1S!CX{hlQ7(n6(?I%y~r~5` z(u86UDs}wnkQR?J%Ooyl-7%EV$h5ow#=uR9eNMIUX|~ThrNpE>wdfoIjzi-NvcX{b zJ7Qx%8{}_C1JFp~=4gHL1}m$DWC;W+WiqUxv9h7|Qy~RX9N)*|@ouFww?wKKZ=F)x z00uEJPH;RbI?y<-{)4|-Vyl<)cpub0|t0lU-{Di4j_B z{8x-wYs@Q<|D!2yzlUMAjpa9YT)}?3;2&2o-!2%=k^E>EBf|XCvE-(%Xco6viXjW_ z1jth+3*W~z4IY(VK3hOtRNA-VCB^%FX!bMY9(>dmf6Z-slWj{Ytw4SNg>)h;YTi{7 zc#534pIWDsxsf}PIG6J-cU)>)ZWLS2)1oBtA_-#WUv2!DMK53YJ$D=Epg6O355gdQph|&8CKrp_2kR`Ydo48FQhr7n$H{iR1p`+V`P52wdBt27n-wU0C1${HVpqqQ`=>Zq69Y#y!MVD8&CRQtGHc8E$iKHp z#t%F0cSSfoh1ow7_dP2O3~3q#dBCV7y5rD2?;h_#Am|?c-j1_<69A~0-=x(j)!i>?f0}CfS)6C>A-W-| zq$K%8yEWbF0gvl;M%-t1D^9ePQYQHbSK=n^9s!3sod(H5-synsIye}%=c_rABm$+Z zHd`u8B`Rd77Ppn^^V&+ zO$mf0)!>PFb50&KmcIeXY(x-%Sy(wEAN+)R_j!!T?nH(1q9+5);Uzwybg@a)YTzp)dV28dbay@qyKZ6x5wL z0^|T2YP>C_#e0bsZ>2+sHtA?Hp)1epdI3^~?+i&M#<88wH;dU%1pAwh1s}Jcv{Hk7 zmJtPXK}?D*yF4&wDT5^4g1zRBI>jH1%HPC)vuBHMUUjxT#5#oWCkY6V*-?#w$gEM` z9r0Ph)7cJ~U=_+s0amGn96#0x5a+R|vRk&wX7S0j;SSLZ?Zqk)K@y{eP3Vr_E=*J} z5S4Ngt|A)8J`9+7yZXDwdzZ_^aWkMZcwHjuN-(fyzW;*D7J9r1n2~an(bhz2QVLU{ zewMrg&RSZu(|{-UCA5}3yS)~aAI zCGXRz!%@50sir&fx56+aUF&qm`|jqB8TsC=@Zo@0`_WN0SgLF&41yte#~i~qSrksx zPr5}O98Em7b`?Od$BS%mNn@WAgxnddM+6^*wvY8mHZi&Jsl%MxJzWjGAQDrzCzxz; z7sFaf31$uVweT0rCj^0n{G!;`ioDU~!;l~b_pB?5763DKrB}wTBC~$~B724Ox!#s1Te5!R2gDQ^V?nWD0-&F{D^LEC`+b z4Bipg7qPJ%%tC&M|JA&iB5@J`rbs4bee-t;P1xqk4R(TyVcod`mBg%U^EdkDCf{ zy>GtH#NG}p*89mvjU#4o0D78PYNETSDFJy#aoD7zo2W+~LX^QU zj(FLq1Cpvbg4*a4nJ9;9K8^|;N!Qyj?8^7J-+r1-_oHmKAWxPTNNHBLA9cUwtHheL zC?FnlAG04`E6%PfU#_b1G^WYLf0OpGZ6)5kYy9VpcfWe*gg=wPPd6~NEp0IhbhVVd z8C>FL-{sNo2Vt7+`T{M244iC&1#I;}A$T;`8nm~V8OW~jewSTizB~Hvc#RoxuwQMx zrG6%_0d#A2*3Xt%MQ{rVlP&@mt7Z@+#c~S5OB`djTqgmQF*cy&CK8-jO(``9j?4sG zv!Kl}^I*3Ifc6}-O-c-VqxK!a2V^vV9^;sUZ5~{|ZZ>(1+NZiF`xsZBF!Ef~kx{Uh z<_ca&_+9Ra$#D)Np|LDDBArLvcB65avF~Ku=9zwMUOc2UJNH;1FL(N3Hn?SAhW+v~ zG%ah`NYQ%~GHNQ5Se@iP!QzkG1iMVid4fRV62>il)tG!8iQ6F6@nd4#MpqQxm#^isz~AX*~^<4%OdCDXL}4blkdo^e>C5m1qC z`+lTt2#EN^19;ymcI;Z|n^itR;T+?Y+?>YEI{F^q=e#PSnlnb4Y#S*mj8aqJMQZYs ziHIaQGy9Z=+MZ4W6@wg~=Y4r>ukL+sXG@7*L^Jos&@MM_T^n>O8hIc>k_&k@S!&`X zu;Zq%#B_K;a%mSM_~R~fWmn;fE{3;{C5EX5gGe6>6k&O7cUI&*3tf!_aWQomYUiUre~15wmlOSZftK?>sc`YsnVHJQ3)g_7AUoRlZMu_ z##sz`+K>|7EMhSWgK^Zpu)3hSu)!(R;D*3U<(ltOD@yxDG?28oj-~bj^XxeD%s8vc z>e#}Zzg1;HnFM|A{cY$KaRH%ubq9#tOWQ#sU)>H6sCm-2OTGq{l}7V`O3v0DL{^!e zl?F#-yV8WKU>$9KscBn+)+)%KuwC2n+cgr4^f&uQgrD}ElOHgeEkmL}vruN*g|!9s zh4fButfQ%^$s`<*>5yAx$^;8SZfnf4ON_tNSoe)LU@B~q z*D>1#jACQN^ze};Is$4PB&+8{BXf9#-X@kv{Hizy#90{BxLJLC?s>-k@VvC8?ah`J z7ZjV2$A1LS;a(HCv2qcGyvR5_aov)gH(C&@?La1QZI70iHsEv36!Y7>xhIdWwEx#} z(PQHfLp#7EzT85g2?hrvwr*k0RTBzSv~IMTq8G#)RYQZ|@I|2A^YZ;ftOC=$Ah>=C z`V@O(7jgh(MO47y33mhVqWcLJ46-GvkyhAXbY8`^X7f`3+ zs||Pv6PrO9Ot}n!Ee-?~H|3D^x&XnW`=N!SPL!8_+s{0`pZVKsPrse>HzUi|QGJOucg;vu5I~~Xk+uSmn9k!)q)*qHuJ8;^y zDiiSmoFqiaSP38Uvk$`{fj7DWH6xFN|FVzOJoBmGWwz@g_VmyAP&+v64uivdSb(t3 z#EXM>YCeTrzCCmf8F;o6@o;SCHH? zW}Ut}$lnt9HwTSZ!lmn#vq5oQnLv7^_i*p1Fj5eYV$kg-NPY>IgXH1%{6p=!zuHU~ zk$T;Zm~gcSU%?R~P_S@Qy>?^0q5Y6*j~5U!iKHCi6o!77Rgs$Rsps#mtIE~&{D?bw zqMm=;oxD`fzsQLrI`YBE2xam|n(zpR;%83`&zk7)IpnuyF9Q#4NY4MVIq%Dwp9|v# zX7gP3MB{(Qu<1$k9V|RS_Alc1A2I$K6Fn$*g#?1k7n&=YifUMoCymEJ0p&JpK3-yC ztoJx%fn7mF9ny?-kup<4^1%E$h;Z(?#{c2DoHCB+hp4%);P5HzqhYi=Oxw*Sq~TA` zr3)U$SsD|>r$Hi46^RJqpL6;%M=hEwK}Hh?hiUdz3gSDteMegIFP#2&dU`pI6ql`V z&tK2!bvhj-TbV@-5-)cx1_!}W6EDF_kX9$lZTTFl#;!8;7Ag!Z3P+lpBXx!Qdvbs3 zX^^_^bowf-Vk7}pK`St?0qMLXi(6$e;^ESf#<+(|Yx>QD{XE=8XDP2F8LqtTS|`Jm zMOm;|>z1aF95fi6?k1KO7UVVkno}Sn6jeE*1SluskoxSU#G$bkY07IhFG}3JQUCdo zuDYth=9XJ~jt!SvbB=|AvN6wp1B$CX4K3n&%=(tTO@BTWdl7 z2-xc&S-eYr-OgaU+J+eifg3%7Iz{XRTuGy$N`auJBBHSVdXm?b~TD$@Fng@0H_5@xI|3}Y_ZGUnp==vsJ26aMQdnpAQ-Y}fWcZWPJCzh zop(06D`pPuk2=c^0tjqOj?k6*<~ze6xVy)*o_J30ED;ZdAC0E1P=MC8B)EyB$m zo>@#KoGUL}IFkt}XKs1jXl`3RbNQ4P03oDWtZK-9nf=VioOUyiLXDM*Ek*H!Nc@f> zq5@e;WsgD|pWVivjU<$hx{>Psn2+zyXYR>oQANQTk_%MZO-$CdD6ToDh*zg+TLqsJ z%d3~|3x&=^*>EZ%|LO|%`HERx`P2yeyAofLH^*6Tm_+a4xiJ1HE!Z}rhD-z>$+Diw zqz=l~lvTLB%gP zD^#8j+crv@!#*Pt9dw_3jJltih%y+Awrijc?Pm$6R%8iSaaD?ZuOZ`AI%DYEhh-Nb zsd5?>?UohOvsNKd0}YHUBjk4PNtWQUacr4>-WT&?_aKzu&{>bJYue?u{d$a9eu z7w;g(AP+F0{({ImoW%miQ@jEVA`eXi0RCi|5b>7l1WZl~6Z+!`L$nAP&sZmAd|(8j z0RJsxe#C2887`H}SRE0l-T##_*8)3S&FLIF0AS5h-b5RqY_j%&xSEY0ibLnpt9-Gv zI`B`@{n>n8ME%AWI34_sP6cF7;y&$~z>j$r<(+C(I~&*ANXC(t_!T8Iet;ZjK3=Ei zRnePWs-W~SN(3L}qjycGwDcjQJy6jfG+sqMk+bysVIBTkhZ}UDTQ)dXhZi!*PcwY$ zZCU?Rv0gEl^3CzjX4j>^EmAh2RV|*z6+nBO~|AeSYI=SzWk~Pzrgt+Tx zb48Rdtksx+Pch46_x+SRVh_eSt4Dci(G3tsn4%s$k2N!>2_}w@R%T;#ARoV3q0f=MuvsmIFH~Js~`s1I_+@DEGzjxD1~Ir{Y~iK9&$9d zV}w!=TYKd93t#1q9c4>X{K*=Ak;B2j?<)+MDRwgUU0b*!8(*F^mt_sd-OL{T6Kc=1=uI7~Z9s?2?RGnlYnCQd6+fOmz`@f*-{# z8JhyBp2{w~FtoGXyp~!jw4c)i=Ua;#!#Bz9ikh1J)57_f-nUY+b114^!Y%C(!BEgi z=BE&ZtvPHs1G<4Rkf?uO{^yww5_hmoQh+K!MHB7EC2auMj{_F;6-dZv9g^=K?0m}VHSxh26Y>})*c z^BqD_UQ&4G;Zbs!rk*IuOQCrYqXKYvK1}{5_X{vD_i`A$h-<8T-BFZl%e;O@3pWpG zeLMV}5Kxfnv<8qrnjRJ51Zp(Ju>b|$CAqBG2E7~k(mPja`4|M=b!V8|isC~pkhfUy z%P_fG?~brIv@wUWb|Q8HPS}Tlt%0cAt={d93nTTiMB?d+%DoexE|fbaL<3CR*n7?H zrBjH84$qWYg-~{Mz-NTvsrtp6vsW@g{M{WAuF7D`fEhCtL-U=`oET<~4`IoP42sqU z+2_dDOEBwn`4uQi17cOO7l-D;&|JirQ_GLlgPe#zicPZPHF!yqk~3L7Z)$+&WIm1l zx(k7D8q5T2IvA42*fm}gmAq4IXPxVE~L(B#od>Z`2pXMvi*zCGmnY0 zbIpr>m4vq?{;i3BuA*;DaJcHEc40kj!^b4`Y9i*DVP`Sms8mih=A3qECFUEwIXw|I z#Yzg~luf6?U;qIIraMz8ay3^Zmzj^wF^k(djjw{=bz%~y9}gJAlh^ghrjy3=F3JAbb`1|xWP zLn(}z&AVDxD%92M{hmr0oa3NkTFJ&%v>m;x$PN$3c5cr6P`WQ1zaT96D0KjvAI&8d z?)5hNWBL6N&g}07{-2z)-^=+Y<-+gg{NKm^eKALKAMByP%!V6UYx*enXks5p{D+h9 zp~OEb@sHNg9Gx`Fv8$*xXC>zBgcX}D0pzK9qR!t!JzoR*vJmQ@^vz&p@IGE}gUu=t zCABZk`Rfw@pGo*?;y)StPvN^4o2SNF!P7j`jNu}(GEkIISz6@A8To+}ArmQgk0NEt zR&gZ^$JW@@b9M$s--NUXGvZln^;BZUw&(d(U<;1aXT(@+4hTDJ+s#m63Q0i=dVvk$ zHY_%H$>AP{h6SQC75}I@1ZQik?QG4*&az>}S7sd+n;oS(wsTfmv&wd^6tUPzwaToX zh0ZyOBS(B1Pjq)U&SJv@8>jfQnKMIllSGf$^k9Sngbw>kVqQ)vQ80^TLz7@09aN4p zme7QiwO7kY`U2?QTN?B(!*{|;^-c0KGk3(catQ-5iH~*I-WmKMi{LHSe|(Dlj zE2ZbBDG-6G@P$8K-^YP2kfBeSgCy(OpSkz}{5)2f_;Xf{^9P}n`7h$2BL7gk80ybx z_mGBvg5QrfU=LJQqr*0CjE~kW?Hv7P_D?CW7tXtas>pDb(fUB#Dy(_ z%{Gqh5%?na*;=>;3si;QC7RZKiq0o5liLMahh|+1o71&w`&==!W%LC1o8(W%zu%ZY z@skEg8cfAsZyw&`R2KnPkw1I zi$Sjr)6->vv)rM1FPcdckkUEmqx2xyLGU7zCkgac(}+knJpLqIkXeAl3^Cm4)0z0m zjCm?!pUkvXg2hDJWPy!p_ym&$pmnoNN{3Wx5g>gFgM`XIeHW-JPLM8g)rVGr<*CwU z=VcP%aSPy>cgMsXtM2Hx9K&TK;ENFVZ=#P?&4_OKjKSFuNf?j?E|{WWWyNp=jApS* zxlyD)#01k~IoOp}46=EZntUjd0&pL1|BYpf*dAD9GC#)=8Z;PF~khM(J3fHAV8|g)q5Uyd|Sr zg=-miJ@Ib$Gr#hq>wR;btnA2?H~XP;0{D$Q_#g-NCOXS{bED6u*j&g4en&ODpfg1F2$LZ<4r8_+ z#S{O~@m}-+?i#8)uQH_-}0 z&>ZlvC^E$aJa}jg(gF~Mskc4A<4Vks33%H(?4IbxJa)%y%Q3|TyA0Dvw1~(n;;tZ) z(f+{!(zCIEFa%@O?!8N7wzkS7&x@nJRG#=fmFfyeQxPRJ&VMmK&tT-BD! z>^|poXTxSsSMO*)D&AUr->GqCmKJOk1as^(G{M5ocTo#~=?&(h>ZO*f*_K++Fn zO9dJm0;z4WEZ;c&#$N+g8f!lCC1BCKXE*a6I}u@#GC?+JZ`NBL9DPO$5Uq{J1rwZ| z0zd#)0M3A2^r}F_iQ^!aJBiWX7 z@^IW%@h;C~&dWqAGUkGexhNA}n6a0`mpRHn_R~!E(u}zz6LXE}1?`;>bcqBvC%?!N zK8rBG8E9k0yGPAo)`A-CaO5%jV%K`x3f==5V)^fNf;FE^DVkws=P< zVC5iz3~o2f3s!9M(Rf#?7(iwksQ{l2;RR_u;N4yF7oy65U)Bsck~&+N4T%UJgIv{H z6-O7u=Hl4@>82oaX^hxyFU3)XKP5FBKDd+18@E+fhC3-OhQ` zInAvh#IJ#l1%MhrC-7{6t*C=`7PR|g!c2x;@$XH{?~>rpgaVpd*fjD(|Yg~N8-GHZry-5m?= zNTLI-1WG3o9mrONgw9yo8?X$ZO%qp1>=|rE8GsfrA8DfxDKI4VGkOw=nfAE%&@^4x zj~Ne6Ee!gAslv3G@1*$T>c0Wt)uw+$#_d@n!rH9naf5%Wx;b8JlM!1vj|J?E_q?rRhd2|x82fCa_I+roLU7l~nxm$E^ zl%E}2ieOnyLF-j5U9=MKFO(c(-UR6e^VXkoY@|SE*aJHN$QBKf2zHdsC3eG+!J7AS zKJ#QgdYTPn^5$7Qy@W83jA!zhXY(AnMx9DUfCaO4#d1L)^fk34H&{}F2}#qUIKxz> zthv^tKU|_Bpx47d=F=%dAdO4c&8Dh~kx9HOd0g3#1-p$OW;Gm-6v}?Dns0JI>q}`? zQ0sRit!Wmc7l>0)XfE2qqHZaHNyI%57v z%TNDU9r|aS7QWKdKc-A~RtK zkOg?y^oSf@PT`OgKunkMZhrsLU1)>!-$eB^{a3}{S}d&E6LO3^tbbAHMHacL7= zz>1Q&pk!B+Xs~P=taQ*!PMj8XlPfhXO;tK2@1_!IPEmWo^9ECztkw)Vr=)ofJ97W#OAbaPjbR^mxfUO@E=?ua-zV)j}El7fNOw zDak|?1J12ItQ;OL6_Y}050qnm+`?JRjNiQIkMyFn>Qp%n4p63NV2`y36JXwjJsF=qq=BbM5hS@)?8gTZcev^LQ`p;AvDvH>D zp<@1CF)vrlKPn*`DmCf-E0v7f6-k>cRorA{hor=DqO0Y*^JE1%f-_tx9;h&}H9@}) zU0{uVcQ6Rmpx`78e<-$AK(?zBJ5Hom;^gTvT*|L01R4Ja2QN8!BjA<39dgd88lKK3})JQ zaNBAQ zxT@xK^EUr}Apu@)AH?Sag(WnGy&LHgRF6BNR^(!VgmkQ@?2tr7iyhxuu>HVAiVsOt ztom9bYIev>Wdm*-^V|%4e?AMLSX70}xm`hi?V&d9xAQ~AFbad_P6@VE;kYe?ii26UOwf-ZPLXnwY!3wc677oawZF55Z^ z`K6T`ikQAzbkOY9CbT8qMfK==b#q$XKc~KlCHRcGIlXSrsQW*xJEy5pM%^ifeo!}O z*6k1KKKpsBw^(UA$Z)vs1XOxt56~RZ=%5=z>IQ>0zlO7IkAn-V88K!$g>bNP5QH~+ z9pwrO93C!oak1SS*GTW@_2?X9a4WT$3&c?gwU!fnLYe}B7km)dQKqr)g&1^z$55s1 zidj7;I)4VnqX(QB@7+^x6*wQLM>o2y6Ykv0d!siB{HSw8X`o=0~0O;!XgiEtjT&4lG0x_*2#&$c!>A zPKc%;BSH@vn7{%;XbYH6N2Ij^9aBrmyPV{YRyyO|)+yU~2O3YPkiyzn7Ro#ph=&|Q zgc2gB#zMw;vUgHgfeCI@x>2O!Tq)0jG8xX|wlst-NRbd(F1++`A`!eAD-6=f^4su79uPeFs#I z6q((02ahn7lQw_%yQZ>y^LNiNmCHA{JNDW-wzcYIhU_021ugx=Q-Smx-MJFtu7A$_ zpd=)qN;?M>g&tQT?f4d~|W29Y~0>fsE~ucIXlHKlF$YYG5sjDx6bhgfFFKi?ltR10lQJ1uXV54mh?G%u3krb zwxr(wH+>ZRs<@$JnnD|QQ!-)*X}dG=mcpb-QkQ!K^Q}RYBx zfV}&~6h76|u~9egooDJ7kNvvB)PFwq>pD}vW$f2)P5nOi%e{WY)NyfXHup(We}3%O zE2e%pcN$$e#@0_zBfn$or?4cjrrYRDTVKw#=!dp`5#QJxFVSXl?(Aw?U!^O*vh|x> zE#a-Ueph;SudUyoo{iZ0!!~-z)}K(_PulwPTu%X__Cb9Q^Xp5U)kJRuq~9Tk(^1B4 z90g0aI~sK7N@(Y0B4ZS;?zS z`FF2TvZY)1n)0)al0MAThJb1*`HU$ahc10{J!+QpJF4vXxMDLUHAu~p4AKR*e8ZNN z{IxCrWiut4@YKNb_W!o!e{QDa25*1WmQRyg4?Gtec&&$6J_zGC5XP@mPxZ@};)K1q zzBh-Tw_oCyZ`(}C4G{EJf8eiMR`M~wd^EP2O}%}C9vu~w&z3T>mlrM~1IGom(*Fh_F12 zzHq~_YQyl{ThG^5kSI1h=^w-h0tCcyiMLOD4*Bcaa zBr30Ml-^XIH<(thMCDV+^Sg!A_xqXh<(ctFu+_^l<)3pF`PH9g%GYOJ7u2rHlvigq z-}6?AE>vkC>qw@&_BGzqx>huh;FV1IlRwtV@&DBVPJN?(>O-`OZV zCMAxoMjO<9N4ES#_O)Tu9G6CKAJ3MTYM+nItcn}dza%a%mj~Y_NZ$IGQavXwUlVV7 zHZ)t%Ah=h@<=+u0g!9wAaryq&Xv+o!@K161r8r{EuD%$TPe?ZXt__|!J}F=H8YP>f z1bMkIDc{5fdYd9yt+R$iIyWZe2a>ll?=LccPRcJOn+N|UQ0K*@d{Pbv=Jkk1^}D%- z=kJzC)F@`0wAt8-#c^$$lf^c7ojRPPjoJwwadV|Mcm4G|-6~P0^5N@wdShAs^*_C_ zPU8PhJ6fUndV2A%AlTZ!)_0`m|LWu79QO|4J- zPutPjqxDB%%cX4Hg3(v*q64l z^?I{qTLSrw->`nWwj8H7-;VT7I{TZ@PTQMmrrwD5u0PgW(({emoAx}d>5YIwD{Pzn z-V%7WwqsKmwTGnk+ip4zNWmM zc5DoTR(xsJv^g$?`%v;NvTRidOj+NuHD)auvxKGBwzTYPmm9NWy>_{=cKqvd%{tTX ze_j6nb$^=e8S8_rh)sBIzI`gwESC`L{aRzwEJqyI|GL~*U3&lPudnra^;y50*Iui> zW|{Pv*M9F9EGt+}mGNv#@bNob>M&9=9W;lIM2 z=DX5&L|EF#aIJZ-6*lXizxEilKELI#Nnx-43hqTha+~J`&R=UDtp7fZ|7*9ewJ&-$ z{k*rKbzwd-EL{bOZYuQ%KLdh2c0kv=z8ceB3M@6FZStfRH;*!kw`Y<+GF zmp5O2tj@7DB*p(Nede{xjkV|Xm20H~YGdo~_0M0s-q!x5Z5f-(WA`elCkcU3Um3B) z6Bm^jJzI$iq*BvH$@r2gW;WCq*M^1bq$o%G} z_A888##XpQ_nd5^GmZU$$)6_|;g+lC8GF8IJIVwT{62C_4mDydj*?R)evX7K;0rn) zS3k`0iomKUs$P!zGz_nGf@;VHLUJ_n(~`$QK|e}5Kz4Alz>o^kj|j(-)BeZgwC^7p zcsh;rSwbSMlk=fL4XZ>O3eZ#pq&v^%l!~RMbOcaC z_lbXN%ss~3&7<8*KjPJi5q4t zuWJG73!XRD5<*SFH?0iKs_>&L@oW!1*l6PrJt%l*W0ok8L?PY9NIMxBQt=d&4-Kbo zXcqpm>|-Lxlefbs2`l45R737(q4{NKe!*b4HeVlVOC?1ak>%t;T;jRhglP)v8x+e# zG%&6*>-VTeZ>I6+M8HfL2ks%t;GtZ@SD3(A()H!-BKgp+-*|Zn&vHJ(Q$~noyoQLo zf=hIh!qvfCFwQ#f>G)|rw z1t8em3cXs|`*v;4p!mpPQ*f@<;}s3~H11tEXyd5tX9zyh$S?x<>(d`OZfE3TK0s~+ zzK8~MKFgEbj+hiuLAO&4!$i6j7n(KBg=S^kvFwf&cg(rtBzH^{xD|YKMq&Dpx2B8q zu|)=zprY)=a63|gPr-C+bJIDilDcfrtm`Z+Cy8vaH@7>jP`i{CNih~+=%<6eG|2f| zxEXzvI||ERG>)*?OykqZx3-dt`9%Acyi2NA8kwm``X&^_SHd0b0 z)o3cd()5o_n3%gDlXRAW9c1!@IrU(`Ou%84?9$M@Fpw%@ZAsxM;R9gsplyk&Ld4F77SHy4rw0oj5jX*zPGx^5=bt|V` zFx&5Gpg%j5IsDdcOMP}Kxx3u1N8{|5Xut9l?*T1>z!CI>p^@Mx`ayab4?s6VOLZ_2w=1k6MGaJ~*vcM7+ zBu5cc1W^G4Dkji-m1Pl76!0RV0x}CCSwuu6=`Mlw9GZec!RKq zh4BSMp#GSTb)J`Q9N{oSISYWko1VvK7f+QL?KpGeK# zS}w6+hPz#uHXH4J8)Ru0hxB|id6E|DYi;2of{5S*2^aWoz|93#4#fSHpU4b_-X-nM#O1hF+h>RSC7kR+jn6$(2wC@^75uV;5}4E<4`sf zgleIEw6-1RN`n~qEa5Zf*zp=wF<`dO;b+FLmK)2Iql3fYwiFM9@~FXllF!lzM2oYw z9Lu0u&qpuk4Lo!Jk8-(!epik|10oGcxo|h;k@QRe_s|G{0oI#mlHzg-Y+c3-wu6ko z*64)%7P%Ltxp%F+94}hb$fAr zJc~l>(X{ngp?Ro@pjS&(xite?Fr4(=&VcK1MXu=t(eM@2mc1pK9nik_eg00ZXa-g$ zodG5gk|kR}{&&W2MlCWd3XR}fI4%`<0crL7*K*q&jFO#zn<7g0boDR{J88w-&78f*{rns+T zdf`$lpNQqc*(ekVv&Q8CB61R)CvT{fYqjuDq!C3ho*P@n^EO9jZ9E>*a!5aH!q1yS zYBvL0>QCCj^{7VGmhkB|T1x8DM#zKMuyyy9!=jz##}MOTTu6empb_Nm2ww$EFuLuz zxa*nN1P|K8aKLMon~`Bp2!xr5yAWdknYy}L9m535>d>A<`2`YEw`LCvfRhhk<-UP~ zFl@X;?zeCRK^~oO@<3jYmLdhqt$+T#c{w($GSnLJOPHSoCdT)`0G=_svXSz(2HQ-* zPX^q+ih3`A*guc)l=&?En>xgMrZmoUFqe4laLsQ~I61zy5CfT@#lPBdcJPu{f%rz^!*vw!zQ^M0UtCm?g zGk#FO!p1-2K1dGDWXc)IZuco;-w#N=(z0P<{MJ=Qry$F`;Y-2v&o@o{*_v~gGS5g!V# zJHjLx4rD9W=w+Atc*6Ir_r>|~aoKw9->7Ro12u!1zx@o;P3L(dKf^>dcIcOq2!GiW z--W^UM}RtfAuF8#_2)yc9dy6BSuMqYI<8PnLjn2h*yxETzMz!13AAmv%OESw# zaFh`D#~@(z_OY3Rkmzb*~*u%2_4L2!xz{VZqvSnTYZ19pYuNuDf!(vzAx_iCN90>zxg66fx*dp@RbM_|ErixG>)6xu-F$26hK=$#*`?)Po{E!%THb)%UH zq_G0Avjf01eSqMBqPTQNg+-kVRk#MgT48WCi*vvh{J;=(jc=v_Y_ajD?d-MAPPo4H z#NWd;TbMoWE4u3j7hmIguBCdsZ!4q}Z4p7$g(LU@LY2knrQ%h~4rC#13u&1Es?*+o zwsQw=wcmdXrEVXN;_pN~-;H?D9n+&XYTIxSZ&Vm+U>u()NQIjrAk|6aEA|_LOBIV_ zS5D64BJ<{roK%CML`87Uk5h`ZI;D7PAz#JtSk(pns(2evesA)Xrjr-Fs|!dN;aU)f z{9!`Csn#s3TavX6C#RK**Y)~_3zwuIEwT55U5u4#N zs$5=(g?Z%!{PSj|*2>|H1987GL`!y~a);gC&5SF!fZK_ZZ998=Ds~yY&})|u&l>YQ zVur0`tIET6mK|H#k4=y69DO;6Nk6Uu58LO4Q@df>0rNUr+P~ zSUg~u;FdTk_GUFm(-^Pb5oM@&u!ZR^&BpOsT z+8#tlv_0xR1(GYXvJQAxUK0l2(LuuLsj$pO7b*Q4=-;Gb4}G-sXVySZxG?2gGIsUEG;cG1Vgm4mbg?w% zndtrGR&n%2M>fYqMCW_>c8G(Oes48(4r~dWR^#H)L_3Lw)b>L(;|z`}hiJz#N6evt z(K+$L3ib5{e>}7fs+m7}gg49i6(64jk9Z0DM$wf_17>T$!J;l-79ZRk5w!*r<1iHM z{#1Nqr~&G3y-_NYmzG)i#Qe}J6l-Df6)~^)C@yRCisYYOk?0j8zAL<9z3G_{63r%XJ$!Ww zR@l4*M|fgfQpCc(*fpYN>}9>IqjfG{wzZiX^SIkAe3+_qOpe$_Au%_`2LxZSwUBnaC~bt2JRJ%7 z7pHxpyg#G^FRD`xB~eIUD&HHfPEYgtouPc|sofB>P;Zpuhc>L!e&q{Sw!uANl9w*V zHA@(0YbO%3J}FHk?Rc@R(%n@YkLE}6xi))c8@Tsxt@a|G*W@@4crwqE;jLVu-Cym*Sp#+d2YR{ zU6toP=4zkLb5GmaUm0@ht#!2z=Vg!D+Ilcu4v%>)%R%!9Kld!AABu$oSn4EC^g@tx zPqbFipZca9?`h_{%ntU6Fwf-w_Eh%fOgo$|1V($woWN{rgN*87H4WkqVGufd5a8HL zpjtUA)ruJ?He)9y@09np69$fE@sA(^ z5VjqN#bYS85*xq)*N(`58rp`FO4?$H*A1ANbiOqb(CVy^mO|Pe(m13(q>Yf4Lz>sg zuhv6JHKb`sXHTn>$G+$ZCDWfa{W>3wL8+34o20 zhZqo8ThN$rOaY8Ql22MoFse^l|0#uAubydB-1ET=qJP-J@DI3~6r)i)Cz`Dr(!>+_ zh-dle3`Sb0Dey}~RK!9FQFw_S{bOR<+eZ*%_{mr5u2b~r@SyO>e|pK(qxF7_w_-tW zupS21(ZeR{_5V+9UY!A?*vP3u&~8`BdL$#MXSv zX{J;zHz3{Q>$;`XTAs^sP~lHqdH>5vbG(c%0#}(G%?`yK{SHtx^C>yOyd&IY(@VPT zV*fDQd!n@mTyOU@dzmF>acPNP96W^R7Yc~ zkm@r>o7dVWgsp{ze*p~!dmb{#LgtuoL?VF#yHu2w#D{zZMA?LH9th`uMSq_a9oOZOIP8?d0x3xs@p!& zz_Ty|Hag7|%a}Bae`B(ia%*XBwY73kSimzkh%U~TR_{yXSxDu= z3*AIpP~>HSU_JuzCUM?8l-oa*usQyhlHL5iO@LL2fPAj2RDChac}x;514aj_Tm~J z_<=h)i*Te9`Q#F_h*rQM!6IExj?4~=1@b9O^eERp*q7WVcR zJ?7^<8dURGkD^7Jc&v+>{p_r|;Po_w>9Xfk^VuHr=e%ZU+nwa`ze|_U3WgIJi54MV zQX47FTc@z+dHeCT{hOXztH*~ScRJjds~&ewyIX#L^3we7mge2yz+&`|p6~^P(Lt0y zdm8r-YD(X_4-+*Cu3HnEZ;;;;$`7VB0JE8X5V=AdyZb%a!s5S^y=T>qSCTs9iJ8mQ zMrE5yVESFkO4)^XW`x*yd*0FRVB9iGJZ9s)ar3x`;sPh@A#^7)vp$PLdQeCY3~6Ub zKWW3yWqGZ8`Kc7@tHSJvvcBdlX>I-@gxVt`uEQQ#2gi)UlfC5z4%Te~&l3VOtV3MU zmfUTcBe(XNTYA;E?(SX!s=?VYb-j>`Lc&|83oQf3Nvg zxYImDOe}my5f%hyRQzeS&)lCTzhsd$>9a?T*8mKqNj^KDal z02o7X73v^w9B}|G|E6TZm=*CKjQz-eHr{vj*0k5Wz}QQS*(Vv(w}}v!M1d8_ff$)Yhzg=?2YrvcjnXmJ ze`3qC@a#09NYweWsuyl~7I^)Ww)CkNKWmlci*GUhCTs7Y>;Ho(zOFBP@)`#7%M8(f z@Pr$BTXu2FVYwV^+QZh4k)v}S&6fyY35>~^4sR!)SVjE-+DR|EY)_efa%5OMhlE-Z zda@y_bAy)7Fk7&8LOgUPvn6YW|EaWMd)rz&YPQibtFaKa1+*WfrKlAznpHSP+v?0# zE2X;p*sElCylqxvyIHG-ZDXfdyL9eNgYng8f6qpA6|55BW?54M3tVe+`7KG?5FeD1 zZHt0?rEEJ8o-unwdj%??RO+m@!3il<_N_Nq5T#moYa6(`)Urg;{PYi*_a3f;g*`*t ztf+s36iFs*_!$W49vcMH4{WZ=4{1SWg}eG;bBf`n$>-^XDk9NRT=w%|PA@0+W5xAX zh0cBSN&KeU^ZU&w`or@3RDY{a>T|GI2MyW9c>e-Q+SLsLa?FE{U;yVt4Bey8HbQ=!Xc(e7l%Si>Ril`0gk*5LbYq9 zPS8`hasZ}C7n}j88hDb!^i)qAyoACZM`i~nb^%bkE5ea2fpu&wBB9mPz)793x2mW_ zv=T}Yp=I=DF>>Nkt(~RL!|ZK!`*pnb;aK0t?}*QtE=s&n+j3hdtnsfmJ-U!0D?_(| zXf@X|u6Uldeyy3Avq=K4ge1{vsw9YxTb0YElKNC`M7h$`X>BSOoeVkqxW2ou@U=m{ zdl_sOSV2UIYZp`zwHDW69M?qq^UXdQ;`%t>gcBoLRpyT|h+tbOhHFfn3ce3xwo~T8 z%s!Oa2eag%%zPtD?naQ#hQX#>i+h{>@x2!NBLdR6g_ONI{sg`a1D!9v((lwC;JWSn ziFUE;(WTTsq8=fv)K%&c@G8qNF>~ntK6ox6h&J2RT#07ZW=lQ}=?NjtRc{7Des)N! zA?*k$N;lL$Fr@t~9Wm`?F4l z;dJI@hfS4L%&x9jMGb-I3G2*cv1AhHY8(*G_Z4|;Oxpo|U&!rH7VWFA8+vmfI0;{X z!WsLq!504xyckNefz3`Su8IE-ySM}#L*-3^9>qUs3tL7k7^0pT_ya#mlvsEek5pkX}TzlfTJvJF?R-I;_6zyWy zmhr?4Zc~6)e=z|@x&J8Ld)i$)Ps>k#TD$>Y$n}Sr1LgM@ZWzG}IeiEL0vETv0fG5V zw%6A;#-1 z3NmMHse_!2$is6{a=Ox(D~uaNLVE+jq6z2v34_4tP5zUHxeBB6^U$Fp3)oHRRI(0& zJrUmTJ8}`J*$V-R;^sGvIUzp4645XwD9u}dyP9Ng3*{k{%|2!Ul57fL&({1(6hID& z|H!^2j3)yO@d)tO=xZD~=172P#62x*}qwuAm4b3zFvMq0i;zw8!1kg*)~@qyb=D=j?5fE5DDat2;VvK? zD0m1VWu{ttA+fHA*H?@Fo0AXgQ6KNJ=XE&=l;?BzHomj?IQwo+e{aR}fuObL7)JK^ z+HX`H8Uf}|$s>CY0^rg3REiUL6JjpZoqI255cz(s^H=Bwur}ithXF;`m6goN-wd9< zF&9G~Yvs&cuu4Fet1S7zIsnZ;Bo~Q}TjOKCIu_>9jbrAkkl=jttz$shn#4mqPOG0? z!_>QeItl+YU4&yc3NUJIh>`FuWnRMp?%fOL{}B@BvixSlYt->|V`d--90bN5K(B6- z0Q!plTxvhBhkOeG7Sv$L1(hFr!e(RE+C4++HWPWP{*WnLG`k4c^-IiB%~JIY;D!FYej)xq7PJfTA5eIHHu!^R%1|{`s29Zvs!09Q3`Lzx9-0+(x;bTZljCgw zAlrlZf`BaX3mgf*-E1v+XDxYBs>>$IV1))~7exi4>ywN3QVLoNPC@QyqYeB4-hSW7U@y?N>V3 z9#TKpu6B*GcoR6?&Xxl{w{i2`HkrbfjIeiHYW8x=%`7+5kC~-rS=`8$qjgx}eK6(f zd)n1@8=c$vxG$?U*grVC%}#a~Go0u9Ag#+i$d^~coP-nNVE#;jZfO9?ukV3;P*>R6 zE6nz8d{`HJ3)uUpjOimK8}A6JR+NN~mr-g*5XdqO--@<*znyQFL^I zKnJ0iauh3L@NFyA9#Yo`oE6FY4Rj6t#A(+g%B1ztC8*Q#w|+FNh@!bz8tj0%7SRu%qtHx@8m?Y4YAziG z zXWeGjKh>6WWiD|+xIaQsfiG1!WSD(uZP7V#snmmudNKRBB!}ku5YHBgP65KHGvvHH zK(c7O#T;l3fzhK0AU2~o&wL-+OK{!T2L^yiDW49r3pSg=4)?&Uq`&5}F1A5CgC6ZM zeo;7Ug}6eUumVCMPy_7yz@}9ruzujD)yhF<#eR{c$|T8k8x;IwGXHk+mB6j5NXwmk zUPm6J@;W7jwWjrA!tT^Lqi3!iwIf`Z z32~=f=T2=UK3Q7tZ?x;k?XHEz5knMRPORbPtT%25hHD&m5uTRFmuXjW61-Di?8&|! z6@E6Kcs7h(0MJB`0Oz%V<7CUQ(Jl#~pAbt(px#w@YJP_MH6A zk`D-hAW;N1f#DRenNF1q+d+DJH?Oc_Yt=!F_Dum%7Zqlq0k)-|WLwigSQY7vJDjV( zIz-Nt&C&;&5wTA(W}R`T7`x7NoEXesm=;WMb`C%UZVIF<=YDRq#4UDXuFVrO4zMpB z4u};6(}Hoy9(plKN?f7G&~PZmN9KO(HC|H-DhqP)tJwJ)CbRl{i|8QYVv9v36pKUrrOhGd*Rf`B05z_+NGQxdoLxHjv-0&3L*kA`q^iZ}lX>?IaYA#C6g(;LE72@@&=s;4T zmCsJU;nQj9g4BFEO)n#&8J&E^zrA>+6w9vpx0kNfr7!&3OV_7_q>Rnyvgr2A-Ilph z&!rioubs`GMBp=#ml8eceYQ_(6{-IV+tfbITR>ONA_`0b8qJ5YE8q(2xWo)d3C_w{ zNt|Z<1!vIQHpR%g1dlnbz=E_X`gSEa%xR13h}vBTl5->~`qPYNq}&c6+W7~~1jdOs z7E5vU2-@oGYmoNF=9Tv4;G+ZWLF`2Ev&}vPsS}|z-W_`IJ@!QEyu%)E-wJ+t6X3Ea z8cv$7Y~^7QOaG+^R)l<|gxTu}Jf?si&{owrTHfScpfx7d*jZpik?{zVgbEfx$&TAW z#gig-C)iASR{ulap#Mov&_T^(NUDrX=E>uIEU=B{$gm3h;Yc=wP;4#tL}aRMzhxho2PBClDdoHBnWyd(zk3|fl(sO zK}4(w_)sGD^f?g%V15dPR=*m&&t1~EJj!D-*Di#@Cv-)-vp{J?ZJ0QZrHp8;>i{)8 z@ctC5Ie5Q&O$3$n39aNJ75j#l7H&k9)%=jwbywYW1lm&jT6{@_zS<={ugP|4hXe~6 zA_Rex@aqi5qJ`N*-PCt0LSnoq$c}BFTUxlelznNc30JELEabMZf`>zj4qK)06z|9I z3Qj{5jbtIxbgKX)e~h+LmuSq8yh1F^jb&`O*3Q~&8uU6;K4e{5ZRsw2uuK$^&Caa# z_E*kySJ!%W*!efiL9z*~Y0&FgL>c-dAhJ2Ky;7gD${i6?pgtA^>SJsJjIFB)xWr-r zqG=C5=$*LqtR6}rH;G6T*OC3gY3mMX#Gxb+&~Goalv-Y~?Jzc*2>2D@)AQi7dxcL& zubr4UivoBO2uqt_OrXpKuqM!z6`myYCSyzFCbrMa5#|(1%-~jj;@isR{Q*KmVEy``Ksf6a|$N)2aUDZAUt0at&f5?x+#pR2f1e4g;MV8-k6u^c7hc`752)OXqg zg~D0wEI~mG!J?ed6YYTAwU#@)T4W;0`s6JW(rUZjg`Y2(37}3~?_(_tx*>XwT+84( zJ7R_}fWD@5Mc7F}u(F%lb%?SiH+{?6dkM=~Gu=Qp2V1K9mYVr`t(h;o*O}L& zQ$KE6nDeMOW(1t4)>+1%Z3ZkGK=F#K*;EV7xQQT8S{PZ}jz)p~NZpXQ5pbAHJ>e=kc)}$`gGk-)jE|bg3^M%eqG(2Qn#nqtDiOgG9aPrps5vj zCoOL8RNN5_5Y<@(Tb7}?_M$??pwMoB%_b(^HeN$jc(Rlzj*%8GW=MHmx&;Fd?y15! z(-g|jYT7&KUhOEFcO2NP$3mZ4_}DW94rpTcpl%~@3R1f`%a5Z6Ww(OBEG%LfmJ}soG$zu(6)qR+|KPH&kjwUCl0; zoHF)PWkJB9L2bMTqah}4b01ANMMhDV&W@t9B6DsOp(J^J6n!GgNyriYRiqcD&7$!{j5SoJmCgxapkiWb5?51oAUCA=t2$5}SZPSe zxYiti%L9OjX3`ptICF$w8Zf(=cOe--xf`&^A3hV%Od2w08goI(+~v%z#{a&Bq0q?h z=!5~oy5;$d$ttLIR~T7cI7Y!3)|$8Tjz%w!iut1bDi+Y`N zg@gX@cuzke=0kZ&;aQGb>-ighWll~C<);n7K&S54H*D=M<}2fDhw_eY2l`1L_9HC_ z?fzIjd5b8C3&+LvUYX9Sim1lY zSVSB}%Bjs9DjH%ePSth)QdhCOrqxwE#+Rtup0)%cGw)wPX~85MzA+G_F`Ngcs#M%C z!`ImKAa&OQpqP#U5C#k)CQKp@OkhM8ja-{VKxdD>Y-ALtS-Z-1Gz%qF0ao%@>DRWC z*M?ZN`nZNb5-!jZa-Ez{)*2>{%_z!B49ii97~C8daK%)|ZyA;?9dD5xXh#i#h6D);?lJJApm`}ecb~8wYz_#WsSkX~0f7sCUXDlYMPB7yCF+x%n=mNIP`EjlEVyBiv z4Ot16I#LwdY8mEzsphqlpl zZUcK;Gn-ompaz(fly#zJV9f%`#xQwA5=mJv8->MC7~QtNT6n<5zy8+`xz*Zzr#Jd+ z>-PQE4|#FfKa5eWUGyP8nd;}?P32%-G#jEgC z!H5N@%eR0^tT_z87J5KHkI_5KzCvsi!BFMZLqMv+Iv<~9-TCS?l*BK#{_~b`Tj(x> zuBL30l|rw1l0Aq^pLVbxzhccGp$4xLsr_rN!q|FS^daLPhvj7N$S>Zk5y;FR^UGbn z%Y5IO@6p{ftsXyM-GU~p5}hO^MgRmOnbS?sPrxkTM2s~cFiY1o;G%d`8n!!%9J_N4 zzxX=97dV>Rh~O$J8@(!1hlj+Dm_Gu+hl!lv??QvCvSBxtmtl@6on{0>DyM%IlnP`q zGK27-O>ECV1fko+7lZ;T-0sbD)-FUGR5x|^B(LS4=G|4!uQ1Ols+Cyl?lCAPw;87o z_I79f*Se?0X*<=0YtLi#;o^@uTPUax^j$pN_r$4%s;x|5@iTk~a4`|7(bF`y=P21)|3Y$-pBg?t4JVW!4r~c$HeK z3B($NNr27}Q&30*j8B)giK!{!B%KYFMQ!sMbA;w8oQNZI7t)Es*$OsujdN^^AMo}w z9_A~n5~n>6sJADy>-rc*JI3DZ%oW~T2JUG#OSDB--lQ6O5|pw}Q`azldI?iChTMJdaLZPfIBbIpIA<6MgCjEq^#0lueR3jzZtGub!Vi|ZH1egFGof2 zk1k#wU+asV0S3PG%jWYk;NdEm5!Bpy3p`{(G6L)}+6rtI0Gov;S!J~044=*9$&`IR@s7Lvw}hQ($ieu8a7Jb*^^q|-rEsSS zvIxrwRii%{*5vN|${=+TWz%Pgg}R_>;LtMM5uA$(d%ipw;XV|&5vqM23rXcB)iN{+>Fq|02bO}&;2N7ULj+?>>tfMPVC*!@ght_VH` zn4r-s%?hN|N_kgd!MD;Ek{RTSo;iJ#KT`Gs7bV3jA}yrj%tD*Lvj%hTI4gMz$s=Mm zs|m7AGw*jhs_rjh!^uY@kMY*G4Yq}_`3^H5Bz7@VZl=t&weWRQe(U6K^HJUG1ZgN| zq5^vnstYDSu9{KF1~!_b#lgma+a2m&4)S@K*#iX<2|Re5AcU5$Kr)>Ii7J&RxGV-P zX2OWkzy5C`R8K^I+}@2q)BG(qYZL#s7$wc)Xz2Uh2h8P>{d44o%#Y{<^F(ByjNE3< z?JtCKJ`&rr*|WP3$9BlhbQcSQS$9^CHk4?unm1`sd8{jkFx#tJdf`R8Uw^YoS2xntW0hooP2uWL=v z@az$w)WTzx28<-f0BwceCGlS)zuepyz?wTFHfNHHzLYSDjx#5ln~_fWOJb~A?$Umh zf39=dWD<*4#3y^HA?8YRGSS@NpHPD2@KO>fv#HE2e;@X-`G16|1a z`*LES1qLCduE*%7iRDr9^|{NeLW2is*iE7s*Hh-z5n?SJzWK|jPvupnLuESPR38-| zSuR|FG7R=+vH4|e9%JjSe+V_%ts6`;pFz-}b5vWgB6j8Ya5njxN?MwG(~m%7yb?&C zu8lq&1XL_6ypTWgp2R$WA&&lq2Y$nu`ynu1^fu$4vGjqN(r+J93^S%3oGbh`NjJeQ=+z?g!gk_-|%QQblr*7uV69%o=U(_C7*xq6KpAE0*)6G9{kVks|Q*4HLROA}J zd+DpL#{Rk;uIpN_M*iC;q&(>i(LQK$G|U?SW^-!iPc{y667A8W`Mj#Rh`wVM;o^`- zo$k%?YRqI8hUUB#EmiY(YmTYkVt@OfTJ9&CeQv z+Z&B}tr=iwAjZgxCi&UcnhU|_qGu<^`j=MBl)o4@i2O@#*xH?6vgYTZu3C1%)@okJ z#L)B7bGKIOzr(yIJo@Ub-Ea+CLU?O%*Y;qNpI|Q2 z4w!$*>07(&3~SD^s;dTJ6YtKQv1Q%paZklS-az zmW&zN`n*cmmWI3Lm>_MX5)=t|PTq#N9mw;8kbcjY?+b33qjQLE zfoJ#?uy1fUH;eSCc~@+5=5_h&|ESj=Ir;jZhu8NYLj%75&YIs^b<)qZXRg=}Bjmv+ znf)!0hITw2H6QlN2!}8E)1HHGBd&Y%Ykn1})^kiYV~5>L`&7WVuN6RMo5@7Lq(txM zX+*(vZrsekg(w%Y?|So~wyp?)%uazYgJj~frO+q}2TBU2l=6~AOVqa=6%u&h>`;)c zi8B@15vb$f082A82te4+<;sIRjWP(3VQ32`pHk|etT=TACJxWQdl^JqP(h5W%xd{| zUMG?yC*tAaDIio(Jm;8 znba*Z{fsf{5a|8c>S{bXE|1Scb;d)LLYpE0=3xp22Tk2p@3mL@%LHA7x5fY}Zpcw=+Sw$NT<>}AM@ znFJ^byEBY@g0fHW-;m|l`fN=wMMqyB<&lx!n8L+)VZe2Un1w)Jvsbb+`+N2d%m8Lz zNiEkTY@QeYkMk_Qz7#-Qg)*+1*-;-VBJwR;wR7D{xA(MlELWUTzYiR5rtC~UCAISO zj2rmyxw29XD;wduwq$I_n2~lRQ@V%0ZaX4B`cgRmg{&?fHIG?&4Vm$@Ep*9yw4i|P zz@kJ>X^}#JIFNW6S!5kz-f7Dl~+T|=2u>?C&FjU-~J|Zglh7p*C^!*cp$Xv zBsOrL6zh_gTX_78hnyGu$=LlOO2rv_!iN3t*aklNMw*IwC#zIr6{Z^QU8y*TSUsWM zQR8gii>O1+SXH>o#2rOw`BpfzEO@3k*isDt;pY3~r%KM9VYSsU!$BKa86=Bhmevp4 zj1UQLJK^V(`Og8HYo)@H#G`T?5#ZlJZWUkaQ$-?gbJWphEkD{G77M?~ZL5Srpj&3T`DQRs{XHo08o!3A%5&VF+7|;K<8GDi-7MXS zJGCBwTQ+5)$Yi_~ry}nH-)qI!OR?9>PPTJR?zK}2S3;Gkp;!9a9P1IAPoN3Q< zmfL~GsM;0)3mmo|HJ}Hc@Lg6Gl;SRFE?lJa|T&q2H|6uN+@MVtX z<=b)`16agFAAlwukdo`yaM>|tsu+dN%%uMfrU_h2&`D1Kl~Jp}Px8wtUtiV2%K7Lx zNzX|-Puuo)4frr?%s_8{_rR4vYo^U3_!xjqd;p*+Mvk|ib^@1bS;qQwbp{+9NFY&r z6hbqiI3XLdhPl9H^Uw!Z*L+dN>uu&bXFl(mDcX{0yX}ButQiOaXV0CgAAN#;tKo$o zGbuu1F!Ojyin}soQgG1BFOer|iqwB&%o8Sk()cG#@+54>s&{{6e`P-!*`GS!f{u(x z5n(qlw{5j@wonTO3%J<~L!!ay<;Wo&QxL49fdxx3uq?Y{J+3nb{R<-<%E*E$}dcH{3XjV29re*9oQlADA*b>IaQqFP`4faD{$8jQ|Z~D3h(Y zqPn7*E^|x8y9xLO{Kjb52>!gqYeMdnl`t&iJBM6*Nv{n{7Y#yNjx)JxlxtG%L3s@+ zW19@WD)E|J9RVQQq2V(F{&Gw7 z#x$<*u#6Qb&i1KH^_S=dv0qnDNL92yq?M2sLy8L+5x^n!6Ufk3)d!11W^m?EHt419 zH?)MKR`@_!%lvMfr+9d38?nLDs+03D7uW7%(Z;uWe~Y&vWl{o`z@>rwk;n%aJqGcU ziWCK|-sSy+Qg!8v?V)^VglQbqi-ffMKndcDOqinG9g1g0<68y9nZjf}lvjqUAmBu_ zgbs6xACast9W_xh>q|G8iBh$&>csJA#sW0M%wXrxp|rkQ_&Tdm+NV%ng3^olUCg@U z8~PCe0**#7Cmd&}n3h4iCrqZ&+~Pbg-U#E%nHyZXWmWQi4eqYZ<+PjG$<4D&7fjWb zK|+-`yi+MwqPN@RGGgkbb|9OGQJGs(&MYThMURQQU>$9{#~7d;@P z1YtqJPh>%z$gSO=$+8F_KnRN|Y9Ug99F9O-0bK${Aot}Lm0=)#Skh1@1nm(!E~n>^J;-FR^@_hVf9E|a1_3S zujM_O>~3+igeJZjh&Of7*ca?1IEywjC(;w9U4|VWdXm0;e`^3uKqBB;bW(g`=_CMT z3fMmb$mH$43tee1X*CmQ-`l7hmbZv7r#T0SWv*S`jD;)qR1?ba6MEdh8%g} zWe`H4u*UC>&HMs@8n?;jkvU`^M=fv(z?1=@6KO^BxCt^f+UTAz8=Tqbj@W?IdDg;G zSNSG6xMK#CSK>pkSm;RVD7)^*YYujYn1lTx;PL~}Y(BuOvA^+?3n==%)Gu}cEdo8* zPQM;=*%@YkkmSy07ns(o&8|G94L(MvIRx)C%gjs^3w!Mh$B$)Mn;}0s0M2Et&cOOW z_xD5U@MapmhuvN31kmo&q#1xKD%)y2$cE_|U;cwP&v^3(wnKAqL4a4_$UWfwmtwuCeeX^tVd9}Gd-f`UHYG_$U>bC)jH*+M9eGE*^r!1!;|XYoTO z{T}EKxfg26!9{SAv@?;$qGA6tsCD~O9uYwPN){{OU4uqvCxD-3_b_f%$Mtr)Geh#V zizqX0Py^?NCV-?`3l~9$NLikV9M@6d1~*Vokr5R5LuLV;;-payw2RI%o8;&2XHocB z9nu3r`pQia1_w`z>X#FC5N$a8K(+sP@+#ATMi2ur{n%1B)S>>Bn1)QUQzyT+79h!aRtJt|J1;?Sa15DY ziX)r7)pB@1pCRotE-At%g$okUS4Y63MfWooohZ z0??e!(uBjL0Z%onBXU1_ZypUxd_Rog{>Dopx^K4*B)f{ zHV--jgAjJ#^z?qGJAUS%DyLFjy2(Y4>ZNL!HD8|Iw5y}I*qi*j#u49*#&twy4vl*w z{s+OY;Q(j^z)=DW4A90?e6)_wG^hILgZe$qN2lxe4E>sTZjt-PTlP);5D&-L-I)XT!6)M929vE6 zp9;XatDoaK{cJM}<^OFV<9RjQ3ilLfb(s0WzR2AzXh+a5tbd6$Cr3KONjM(w+fhBL zg|!nDS-^5zeq$mWVQ0o3qBH7=x}&~o@0DgC>c?l)U^Eg9M`O|GS+G3=31fU4RF#+* znyCP*8O8Axz=O4B&dJDWk5uB6^qkyAI2uC3z%&sF%~<@<*?Z|4m~lV`ZIVWL#6lu+ z_|x#9PxHNJ9=A842OKPaCKy*eGwk2T4wDP`DM4AW)8I)T^T0L1PsFElcM(6!f9}hF zpgQG4Vl<@vAsq~9cSwgqIy^1CJ-=bsP_#!#^L#PnmxOeikS-1B@`ChAkvih1O0R}p`x5Q*{C&R@k4K_X{g zaOMxGc_t;be}WpTe9TmSXp?;euqW?~*-%Q#-_4VG{^FP;9o^sg}&fJokTT@bd zyPk3m#Mnzd0KZl;k&dtT{tM#1-0ZV2Q@vF@QV3Swg3&bXE%PKe1Vb%hJ^@EHt8Dy? zjgUwF#b%e3&DEm*STg4GnY#`R46~|;lXZS=%OWk-Ttvee{G3qQ2N4Nbg$9>xS&aDR z8>zV$#$(Hvj9^+ubv4vmiH%q2fYwi2gAg+Bz|UH9nKh)BT62jtC_LNvPbT`KWbXDa zKD)x(>oj!Rnx*0}vV*kcFBa{M+Lr41SXZemyRT^PZO_%^RCi6jd~Bw59ogkm?S5T{-?~h_&()6rQEQiVKKe|NMVSQ_Jp(%(%z8vO-tX+ zjc_Jpwm?7&>B{GK=4YMZY*zCc6cEoF=ZpZVplImtu=!l>JIpKDCl-NGUltpPOlbmh zS>{(q%PSi5;7zBU&)J?{b$kE3KJ2pk7m`-`=Z5@tLmSN~pE<w6YY3Yu}O#(Y9u|9s_~E;x(OLL41M3o2>gIrY`~^vHj{#hPdKP|MlWE-hhN@ z+|9_wm(8Md_Rgq(nQdOSkaW>%HeP0_U*VRIr^87(9>(9^@Ur4|B|E&bxIM1#fSP5& z%I=e~6%_|VfL@>@DyMK)eo=})S2R}^-E*0Fo{0}#en!biCG1MJLhgTxsD$09<-|W+ zy2 z4sc2O9d!n}=v;cH=>Cv#72-dCG?Zwr`GyR*2qE7jY`Puln(&}7;_bABRE!&G!-cjndf9#Dx(mV4d7G zhyE2sepEL+`RK?>VLfpnH6}Ud88^-H7pDT?2<$SvJhGPAZ6GQ_zYU7qBk0(|e~35v zzJgy44PD*OjM%qTURgc-3$}10nqsC_t!oyc&?+GhPZX(cK3p_s7U2-V1%;yfGh6^( zmJ_v4q0>cIeYPww1&<+O=Bxi-K4s5v)rTuStw!DK4Z1C!L58{Qj-tD(XznbUyNmX= zV)1tB)_iR?f^;4UV_qEC&llbGMe~KCxuIyUC>E~_bt)_CM`D(`7YqEgefnOS$46^o zzD=-;=_<*M7!>d~n)#|lq#C~wQ8WMo(S%*dM~I$;(=JJz_)uA8jNk&|0L|bw9<9K( zpM8{d$J9_w?l=-E9M2HsVVp(sh&M0pnHWVijrZtD`&azE!yO6?{`4BrZ7Tsn$gK0?goizTZ)#a zLl#KphT{?AdTHs+nt^bytT~nix6zDkFsO|UhSYCh<38t*LRW%<0PNQoZ)zQQfJa&y z*qgYaA!<;!ml$m^TrpTYVpxo`2t&Lgt=ASg8?Ln0T%|V8vKFhop#UULt*}}x7xDVz<^4d^F zOL+Ev*#4KJ6(|{{X2{IMDkN@K1O)8;-7GVR2Xm!El+1F&hRrEZn11W-LK732GeVWl zPEwX(7rwzVO#A~tj7nezb`cJMN)N+2x9ODlkqtKtAX*+=uuX!H?dXkN83D;y z8t~BAx1fH?2|nE@mNcMYccZw+E+jwGzMu5~5?tgDL~_2y4aRpGJDxPs10mRtV2WqGk!yQ>KyZ}bzIW!os6Z_6Uq9KpqUDcc>>hdiiMDu#r2$~W5 zhBOJOo4{khyMR$FLU=MP0WlXX`wZYP155OeVK9k4P6{qP2#lb66~$o?wkjUD1Aw#d z6rl3&VMnswXCd7^q(_GIfNAA^0#16mWUo{aF!uZz=o?Upx0bj(!_46g`H&agD!0IV z%BN^-o$sZ$)xOg)#r-7!;9KpA7(QGUc`!SxM{HXCW7@%8qkVWmz`0-+n2$o1iUNtV z!qy=ap9LHE$S9rxJxzQQ2yp+ZX}o>)oA%<}(uwf7^Xf7HZXRuGgm~&w5@;~dgFI&h zMgD!+;2!4pf}q?U@WQi-@V?%{&h0$tizR?dtp~nT1l)|N9dFq7hGZx&%L?gk)mo*c zK-5Cu5&^U@wC3A@O$r0dUr*((axsnWgYaM%yiFJv7#6g1_k2|3DmSyc5R$&I8_dC| z$$Q%|@ZM_Tz0G@l0srXew<*{ZLM`@@Y-;MAbrA|}cD3$EHYV%LhQw@4N+BH$=}mc2 z8cyC8(mbE1!yDky&p+FC2J)oqzu+;RXA1kY@h*TxnXMYoTqvI$`d#n>&?;ffU}GsI zUl$=tS7q7a@{YMVIYe$ByH!*bif58H8jBtZ?^?9q@MJOoX2QDw&b7g7#761pq8%WjHV3iI&=RIZk4 z<(q8bN}HZy%{o>-J#dZ^K2%y5b{*LmwJiESOpt1kmBLhF%zZbM0=wE8*dHhB)@}o@ ztil)6XEs%Xcx^zMy9Kx+V{lLkC{ccm>*CW+<%h_lHbc2^so(=X(M5W;L;kF?+d(1C zw>y@2E_49w{FLOOXuo5}qMbdtlcL{0TZ25fcEuYnvd6zX>NuS-WiR5sLsRSiRLEvU+!w!4qGdblAfD<$6Wx zso$c*;UY5SfVSwfU|1nnlz=20OuElX9jYEuW_;Z~DCKUr9BeY&J;p3$cPI~sVqwC! zVw%fN33>+9P3tnGFLZ#dR3W3cCBJ`QbJR-;UW`?Oc}dG03%3 zyUM@PE{aCdzDh$3e2v*Jzzd6buyvP6sBGdP8dGOSLDzG*7-0~bc00E z-;Bj>H3O>U)JtJ6h z%AV;R=AFy~zK-22$^wiZJM_AG^d07PfN8>j0Ug2_n^RP4;aGiJYO#zntDX6QQcY0I z)fD0noFuOyHao!Yk8hYNSWpWe z#rUaV7|{e{{L9$imCJXlm779i?)Vev=Jm$kmmMQGvqAf7Lk;S9Xif;1OjRNd-DdIlw1LE$kP3W*i<18Y%PG-%Gn zMfO3eXZvbO(dA*?x5A@tfkh-whLa?hzEFoSO(5k-8M~&Dat^&v=b}e)=!M%&@;yw9 zKzY4}>?$NYi))czgwRCL{s4QXz+nx{pXtinihg!3MwTs~mKws@4&;SfBZlCR*DOQoOuMik+_V=j_n8?*x zb}j5*q$P936e|?4;ZbYh_Xxm0n%!eIW#-Xrr;vWug`bD>vUn4Eq4W2bo?|~TaY^YT zQa_O9WdlE?=qR@{>44qE>^#U3QDS#CyPzvRuul3}85doDG*AQrI923m=RD$k6R0t% z$L7`URp!;%t9IkhYA9$M2na+L?PIhp>*!eUbS|$b2g@Uoh?;G3%Dk;V;)$ z|7GMJj}qy;(>aVJ1go3lW=mtZ3+iSr+I>j%EN;lZX|Ul*ZC7eH5?s`{;FAuWU6{vV z9V|5mxtX#E6=NsrRW0O*5#zEu(Bkv*K;m9V44La<`?ti9@1Is_AH17Ds8H1B5rKL;^2 zY&VX@W*;1A(;~PU)_x@~i$|qtrC(P1ALMprkX7-QG};`ywSto3R0a&n3;Bhda&8{I88-2PnVbWd zM&gNKS z_i-Pi>9`aAcGR4 zW3H`r#I3#SjQG~WnG|HlDAwJxi}U0O57*{+<8H@zFO)8i7P_yG@6B!_$GEym22#V3WV)lw(xW@ZPjc=Rv*#Xmm3(I{M%?85@ggo(b257tYgg4 z2_L1P>PGQa2n`HGWw7yDzy!t}yv`kAr4(-!)*8FFAFyL9Od>*TJv1g>K{B)*f{G6* zr{rH;B5qlJEl-)`ph(&Y0+sS&E66NRj=4&&p2vAmXaqDcwRHoX#H{S`yU|=chg;m! zvxxwat`=k?6=36WBoyJ0S3yP*ZPNm z^RcsY&!-fP1W0Dw#bAEOoimCG>5i`C)kyXD`*zWNmvFRN$#{nPl*O(2vnEIvy>NYe&47a|8dvCss5Ca;IV){u<8Xs{^^cjTURrcZ;H9CQiY z7*K&^V85QYGV0R? z(b0L4`FIq;mJQ2kJ0=edRC#EZ5d*wessGQC9AuCfKLW*&sha*yUJW*yxf}3H@lY9A zb>K`(!N~;y1eCR{wLx)L;C-}+^hN>G;(!m1+0KD8_GLu*#ln2F4u6M?FO+SHb&2w4a7U0-@^L*y(wH;A%?rY zctgn@ss0TAz{kEC`vw8v%eZo;;i2^!bctpJzWEJcT<6;qm%tuvo2nO->B97DpNFns zWr)QMJEwR8(0CHoiJ7`D4QBVim*k%MNyAspnfj_e7!qJ$aaw@ojH$>F3i#WD-RsUZ zo|yU<0P3g|(9?X;eAAx>>e54HLUu}KH4u|e_>DptTjYLX92G9FnlG09u_z;bH=tL2 zB><$w{J3m>Mu~f(Y@dP&;eJ~-PnXRTA+^z8%k~A8vJEzy%VwSUN!EV2Vn3SaK3=is zSIk+JuoIkR4s(~6X`t5s8h+Hy$-fe&P8C2l$~wFi#E!J4od6i9<`DOw4{oiHxc(IP zo_V_7>@GIo{FLti(D6;4Ul+d1g#EPk)One{zq{~cHLlvL)Ryz)($<}9Z$%3+`eJCE zy{lsGEW5kQ(O0YXYgO}Q8SMqNZF7Ice5)KkfG97od3(j&R(4-2`!84R{nd14KwH+n z3}TsCI%;PLk->--#Uk!alH^@llb2~e4H9 zS7n24$o{nA9<4;3EcSMDPlejGdnzv6(;?}vLkUr{0^VoY?+h^JF-_S}2cTEf-B&Ai zW5o=);rwdU3Y8tM!OY0aS3`@a(D2<&j={bxj@0hR;z-fH3mU{b`Mp`_tt|KoD}`Wc z8Usfh5qU=qEobVqFalst5Prm7k55E|#~C@c>Y!emg|Vu%$k`DXnz;6|RAj!^V658O zygK%tXy>yyYQ)IXLgc_yNuXPML9MJftTg1p{JO$pHPpL4QZ;8IbdS!dnsck>f2#I; ziQqqp*9%mhXrcB&2(JS&0U+~KSD3GT;q+%kg%84m@)uUk#d_96)m&ONmsBll*UEwM zwLA-`$F}-ko)s~VHrmz=)@+2&7k=!tv}ao0D=tzIcK;kUhOK~uIXwH#3Niz2f*6Wk z7i4I$Z!yCR%}k9ZbSF@4+0o`?_uuU3i-6`mnIp5%WY_^Yt5!zy3Tt?QiF;S;9HEO= z^h^{C`|VKMl4*5tdS~`^FN5z0{scxKJJ4%k2i6(Bb1>8kuoIe-@rOECrJ<8w`txNj zF$eZE9+x%ztUc-g6RlrsmJx~LUY^A!NSGNpCBRhR7%@n2i`AemV^LEKeHqLFB>VOJi(WHAq-mX8|m`IYs!YO|-L$cN^L*%Ee)XQ|&l>%w^R%&| zZJhRu&^G<<#xW4u)}Y?%P&T7c4Zq_=tIEG)@_Ra_?irl=riA-;ZfoV6(?*43h-32o zZ*QwKlEOT=@{FN-#<_D%d=CAZ;6?xHwz(+)e7Rd}e7Z|dgOsh@YAtoXX8kwN)x`-stN(WAZsU@u7%UlJ$0q-9 zDGm#mZ;&d_y7bQ>-@4wV8)%XJnsfYabTU&o8|exmY=|{6*|JOUNMLD~zufw3geqEL zVV=9?I-WglCjhH;pRyJ;y$2CL!E`K++xVg=y)a5HimDez?xM(C7^NYfr}iOPGZ`Y1 zX&%StMky|*^Zc1niVHO5v0Ms)Lf^?s97V5A817`p`b zlh3e&~-hXL%Z0ltLN;Pp)c*1?adeMc&w^+%7*qAPSwOLViH+MbhpHJ zNwU?lmA~r_mj5EnFU-$nSMq5c%BM{>MIYU5dU)~{9cC`~$Z%=@M0iGHJ}~YHfNJ*p1UV{^-jV42PvB=ww*>g(4$Rty3E zx!&m0;GWv2+0Q?`g+ErIUhK`%Sp4|w$qN)45CPNBJT*;VHW+cN7>US>^&(Yi3?1uq z76D1sXLaE<@&mkA53VO^6mmr1))CJl)Zy95{yNSLJ~K~5g#0}vEd_e%nmSbW^G9ROwR(x408^Qv9jgT}w%%ht(`V>HG0C1t-AT?e%OxwK9 z7;tQ%%d+B#dka1Bs6yZDG4be819AUegFf9@8E?jIJ<%Uez;ETGu~Xv7(X@E#oEiSw zbmTJYchC06vt$D^ryJw|`D1`)=7t-`^P^1*o7jzIe!O{Mv%W3kEuyUoU$D5DjJJum zp1GZ-ZQ53LRLHphnlA-A`)fPN?nBq$bAg|zxSU?^zwWEy{_%eG2gV1?`=(F*4f*a+ z>cD-Y@B@GK`(PAm`3Cm;xu5FQ@=xSv=D(YM;g5f=ONd`KE~M%x$DtxeFixr^N#1(2 zTC5Dc*QwvPlUXoP!zW32y2QlN_EdTPshVotKNz{8zoN`-f=-+z`Ew;cN4n3G_}3Dh zFNMVju!FeL^*s_+8OIOb9)Tb%;|uh= z{q+IY!}T%Jmv@AGeF=q%v0ozMsCH&Lq=dyQ%I35(dj3WkW&3c) z(oEVZr9uRA2U<}*Ph@y*p5r*5DK#^FkstjU)k;yBQ5cI%MuD0w2HXuylG&E|U)AlB zM(IW1$1q|Vf2{N(Fn203Lr$wACp8m{fmHO!ZiJH>g*JC0(`A+g;eHYqTh-<|OM4>RlQ^Rw|7T%}z2s^%P4SMNp8NqS!S6jT)S(&;&Y;y%t z+=nNh(qeVn)4dpT%Of-(9OzQiH<0cuwo&#?5hQtDck#%e{TdKYFZSX6oyq9$92 zwKIVVL4nWAY3rzS6%@94XhLj8hv7erJ9#L5ah>#V7Nl<{J-S&h{x*&E|6zM8&C!+5wa`xqAbAs9Ivgrhj19RmApR(bV6!&K&%V~MZu zqfKQFqq7}}rFO*QF)AF>UZWa|MEg-a2WL)OC@g|uI&>T{#p!j>F$^`{!ZFSpGzaJxmsBR5w;7>(Ny@Q0H&YzSB$yz8LHIV0Ht*V(s{d z4UvGQaV${)NKzy|V1pSK^8U*IWT1>6zBb-7I2;&!dXCx(My(edpp(s1R49w!dtIZ)N zwc&tKkm`$l_y4i&Xd0eb;QGjs&gxF(BQYD*{tnB@7gBhC1LzeR2l2agz z2gacbfR8sb{P}>IA*NE3@V-zsv(+6NxBD2jj$jJoX!#O=yKdxM4d{W8-*-`vG-ZAk zdD0s!2(-z`%-~Fv245kG4tS&Gs_}H{@_Wi5sk8BEgC}hweKGujjN?-ms2I~G=L%D# z%zSk|Y>kLYpUgxFhpf~`y_O}o9;RWE(Sh@z4GXj;6M+h#v`ZmigFb=V5~!lv(N(Hvi@Z{cJ->Y=z*$zPdV$@Xw|8A1x^r*Qj4)^qj#PMkepdgeVaho zn2=W4{a0F9Wz94LQ1i z#2k0QWD=}7yK`D2OgTb#48+ew7^fB!b$v@7U?1T}Wi+5K$SCv@+qrn)h(Mj%+ zf`QHyOD;)jG{+2kUk)t`@1YLYraskNm9A>n)je-Okm%ET3P$tj)7*t^(P5=&^ld|D zHtDT{AR_eNm-*g}vXp)cIFYXaYx}b26q-D%v4h`&eGgN)PQ;YB5+_1p9L&ThD@;8| zby;=#5k^H2K=(R#7h})d>*O9PkKTk_;TEI{l*qwIsBc1qMkw|<4={4!EOr;V=xIlv zQ2t{MA2NkKbPL5EV$6O95;g@{?$fFkw6fhhmBL*P2|b6$f(CDRsk=4e6)V?By?Ko) zjI)FAejVtN*=du(s~WL*TH%6;R>jRLV_6m7WBo4K_OFbysoX@c36cr-3VUR;;6Ukt z4t@o$XV=JA>IzBu(q7hQnA9;lO6{*@Bl zpsp8aDTuxM$YfSy*G)kq^Bg+@M*~h0}o}0T`H-!T&&hP^ga06QK(^oU)fN?-`N6)yEGI8>!iN+1<~iiF_DuEPD`$wDh)^yhTdp*B2vg>VqehN7cxvnYB!dd;K1wKF9HqvDqggn;4MWNP=yq-#Vugt)q*~+A!GB46 zW+S+k9@DD0ZVjq%6-*Qk54E0|O|%~}O(7w{1p?EH@0;0HDnglSYOn4}P(*c@LSw`N zdmSwZ?={|@5AT>54d%XH%0dyOxEiUPKR77$VMJ)vcG*V`6|)eh??JU&Jmuu4Fd8ko zGUFRwck%|%1*d*#R8nl;3K&R?K2~xl$-tk$vRKo2Og4LTR*uQa(XfJ@d^EF2}WXvnALK;||ppfeZ zQ&rDQp))Vv?6F=@cg!80&1V0Wm1nc^H>@>G*n?3IB_k!KVK^aGpfpUbqQ(MyM&MSt z5fW#BzS>khv{Yc`_~YZW*#hJge5T4;c7PQjl$ot_QwS^C4ZYqTQTb@NVtfj#WE8H~ zJWo=v*uKHC%02Sad38D|RG!jJp})d!eSTZ`Fy4~hkFKkdwH59+_~*p*;T|j?GO666 zAa!;+&S2~n+KUB$$}bCh*;F=>P3_D0%_CA5ZhgXyVN!Odoz4;2z#Xb}!gAaZIa0MT zo65E<;4vIB7a`nNU5whQM4+t3+sW`Fli@*gk?t(@OYe!@hE*(xYSw3W~mja^tvqX1GSYrG< zAi-n$6ho21PB1gs=B9R%=D$HelKO31-T{C zctaBt$B3(@5Ra!en@dd;v>$u1b)JI>P=EsSQ#97?xOS0Y9JaSRFn5_QbUMCveM{Nh z>^2l$6j7wCpB4%jfH{<7bp=YdQtbf3TYtQb?{6xOD0>Y;P$eG+(*v2Qim!u)`G%b->(_aq6>}0ZoOV>INwE_cSW)j-ciXK*0f)-g!ZpAxjYHBp){cdDoWdft zA|Vb%FvPR}bJLcqXq8QKxKOe*ze6$%8_j5D_hBoc;F6+j7Sviw- zFc9_!B_=m+tAJu=8}y(T>c2;oc8#Y)(WO0!nhwH32?>kr4gB)D;J1jF{+>gO3}TK7@yIQ?P0N0JF3f{^ zvp$qL=hx=K?c&LD5BJ=ix!^9{KbT{}Qa<%*J$oV-JgNItx!}2+JfD+fo0cbeQN;Pv zIe8`*_M1Uvi!jCdN3L*g4h~H_$sO8B7!XYcm&a3mCK+ky7ix&$ z=R}VMLM@M65es@eD@wuTi-a%=kbVXr;KNE#&rt*Ceon+*qe+4AU08Ee|4@YJ;wsmj zIvswRen21KtFFtrn{#nmnMs(iw4zcJj6&S5==_EcWpRU?-*A`lyN{CH?~~mV&R?AB zx2Giu4^4J^`fFW&JI`-7@!NNk+duRt$A*4)a&iqP>iVWLlf2L8tenc-2iJt0I1Ij9 z-T&RRR$AKm^)br19{j5z^-MXwL!++qO;@QI?)^o%5B-N{^YD>TG+ezN|L*aVMf(&s zyYjSZN1h;P5l!R5BV77#6?vs1FN4W}cJ->5zPcXlO!x?{U0acVRP3v@t;&a^qZ@eJ zr44e4Iuz92myy}-ul4drG2b+Y$MOi$-T~EZ!HnBn0E|a&Yk=51(IAfxKXP|N5O?Ag zC3>Mj-e{25{hiM##c;{yQNnq0a|28a4OzUX!Cl-C98rDonW3!Ivc2CR@2#8N$13eY z8W8a+&+o4BGM}+|PzyqF4BLt_Kyv$wS6Vt2`SeqgnUHyG#1KoYopvU zoOT&bCPqj0H=*~hSvE^bvaBSRA-`IyxYw8LgQ5ARy$*?vHRiV^xxOUVt(&ga=4Y#3 z;e(=CSdtrRsTP)^i%Rml5-SRr4stQ2d*kpP{Ilx9$BvT6{ax~|$Rj0rxc1y|yVY_h zk6)F{xh3X@3iMyiz%{ok;_&jAxd@?6;c@f=bWrV)x0d7xE&J=D*&sR@Q zFUcJ2@Cc{{B?#^F&OGPBRSu6hJaKZw6Ies#<&2`6HB__}MY*JCmo-wlCnLcgD0qoM zsO8qCw68GMO44~`$sX^&*ckTL74411hS4o&RX->)MyB%jIPJ(-Bg?jImX%des%tsC)4*Vff9QoK{R z&<3BHvM%gkQOnHnb(dBjCP2~O>g@A%@|?cDQ&!cPm32e3WVko1*6VcX59{QE+6O5S zxv~zuMp{00Nm{)@F9Ta<8GUl8}tBGQstE$BrreFTuD3>$II_Cv}1Q#FzU^q?{3i^^Ne1C8#Fjcu_!-l&Z#OPgc~W*uu)`qfQz zuh85p8JwZvtpdR315NTslRWIx`ayeplN{FMj%bROH<8a1P4f8gy}O%mW=wa$_Yn1g zwRE8!+xU1YEbhOX9AWf{$WS$H zjOL*now=r2u5Xs>YH6=*mK#vgRlf)HMU}GO-5f1Z1GE**vb>fyBUd&D;iv#+`I9EM zpt?|$Ps8_DfDF}IL)wCD zNo_O{DeGJkWF9EXgXN0fVuDK^mzFWOJZbpZ1!Y;RIbU366|DkVWz!-=W%SEga&}qH z$JVkkG>T8J$OF~sPdJ8fl&%cI%Y*oez+R4b*R+MqL^bv*dpZg9mI%Pg9lv1HinOXyuMqSp(9c8zhTUs$o=zNuu z-xilt%%v5%gc31$Dso{(F8H4&=ivdBOp9-n<%9~)Ev*PS)f#{8N&VDHcnYcfU^%xE zo>QSpWfV`^*UFSLl)seSEICuz{TKA;{0d8n*UMDjvI_8vC3^IHS^ixf|5(ZXxfDW> zZz^>^(qJEMu&-6*^-AytFJ~6i0N2fhk1FzUrOdV>C)dkKiRX~dW;WLTo@XoasXljh zy_~hqb9P}}- z8hpRfohuNcn6(J@#r1NLe;9gjZoOHuZbk`n@fM9;ZUpdmNxP8^>EV#v%KEjiT^HSEZ5Y#>+8*PW%FX0 z24p>-yylPf$rqdnxI!+gcdX5yD$A3@2_7vs-pAwxY=*8In(6ckJvR)_2g-O%LL5@` zXZMwzFH8Qha^s&zK0$tZZl2YAlP3^warWo3drY_at8kc5-+05whi)y4p39x+T+6z> zrTQp-e}=BzPOs${#IuQoW{g`S7VRJ&ny>)8 zL$N|n)ytE$X2Q>0eGqmA_Q`sCwYS)>e)PL_@-KWC%A&FyR+j6L^~+_$?e%8k{VlM+GI4xH3L z27P*o=X3^3fDDRHL=ww2y#+po)aV0MaR!T{X;HX=$mWQ5`JcM2N{&b|m|U;HAP_z% zC90+kx8!+5Mf$Fxr+dhc#n*@{m-6ax0!h`grxpbnw|~77=j4jFk{iw#3PiSK!Wp>@8(d0<$0Yf@csVhbLsLv*T^8=9SdtUl!L zatGLG2nvMjNt)y}wPz7Nx&)u0R=0c_sr&Tn5eJX<`>eY1;46#Ow{0-=1Uw|k3I49a z4V(irtoLO**X)ID@*zkNTg=w^LTNpG)*w}x#c9#3*S29N+pb<4j%j4N>%^vZV*e>J z*fq8^IH24tx+(Qs5{-~f8 zC3g?rBI;3d&NP$u-u7#u>CMhEO}R;k!47ELbw8v<9e6_{_g{W5ePB~24}uM)y-MMN zF%W)^WJVu`--KV{IGEj6o;U^3*XYTWY5q!aUSH!L-rtPaQ+mBF1P+Z(fwV@KP%5y| zQy}xyp$qE0<7yQ}XkUW)L0+poAnJARHNtiju?-j0qSdFJ>zhA@1pP8ly)t@&deB&J zL>?UaJdzx}>QJWFZ$t#=P04FB*?dIWEehMwONQU?Q=6^Pk?dl2#-2H~as1SyIw^mmBy@ns~M%1I#E8m~rA?sStm%}2iVuBWSweTGJOb?2Dq zJniv|jhs(%9@2=eJ6>$$A|n^qu3TUQIN}mhxKz{nslA%^60^&dMt)=D$|NmE*Hdl! zb{$mYma#XO2+JPCfNEV+eeNbR0Xv`D%vV+z%-`zoH0e9cz^&*xRT0Hje`ldq)bFv2 zjGgDd`z}+sm#p1=CVUX%q97^nL&iL6?4O7~p>KKI5csM3mOqmzE;UCq`CN(xH~((7$^m zVK~gniIybT|D3FtGyP+yLy5Gf+3;-ca&(pr|3Lg_eH)>++o(N=h1Sm1 z{l(VKXD{cXe}~J^6@3;sk=8d6tLzpW;r5U3(?9h&l2={%Qr5Bd*J4jaY0nYR08MA{ z$b<+JF(&8zw%7Kkf%9mjBV`yStA;d}Tg~mQ<2MBWaw6$yrMXO%9e5d$}HN=EP5$dZ_yJtdE zS6YqtC!{X8-&+k_`!YsYN#$x(6>QE;OUGRdH7p)xX8W*}P{T1uC9e(TlHqYJFc1xd!_1kv8b$$yU z^qy^e$8PBZ0vf+ff&+GpIClOREZ>`UzeSMk#2-<0a2)2w9N}!omM;^3osf*W<(ol% zchruDt|xc%)Cg%5yW2;{IYC5ov%uquHGe?~E^36)q6@D}1@xu4+a!uEP6YDxaht0Yg{?e3=A|SbVGe z91!<+YCsI-ggm*i0U3N9j0Ql9XhHl~^l2mu;@v*Q;2<~Qz_>>?+YM+^TElc57;sg|Y(zX6wltwlpTB^xzz;+|E3RImn_gnj%j*A7>zHT%Iz!F8ZEfo}=0^Ol= z=uX_nOauBk9~=3IjJQ)$9|`)8lZ^RITXR?tv z5K!Bye3AeP($Wrh^k3jlQRPHLF2?f=oIBSi$x*&2ON~4Uh|FK>AHKFyWHY$}$sJ$; z$nXs1_ruGY-7?xPyr|h-*en+`yNi|c55sGk-L=i(<<0RG=+xk>zNPtKRe373R4zC6 zr!s@+K2=h4d>D04Ssg@Y@(hq=W4`(aB;IcpRb6wT`RW((RBOr z=pw>Jm0#-pU!sNZ`r1PEl=AUeSS{vcA#9IU&oYspFoArSoH`o%J|piWXW>$lU!txV zeO&~l-LYz+M#>tfdbbFMPQDJ%#F*`aoJEIk(*>|Y*-Uy5uW6;ilD$?x6_vy!YOStv zJZlx6(`xQ*kse0qNi8T^V_4hAn(QW2tRjmhBDb77!k7de#V9^N7l#dSyNVUkP+_P_ zS$mX0@9S~DUz0FuIaUaYF4>Y*hGNs}y;8cx18SSiz6i}wGLCmUvu>A z24P%A)1NVASqhboG@K*^!2jtlVd|^NtjN7LJ2hGj=qP;VzH@d?N{$nVNf;@E}t8bPf)e01t z)aOgzVzrb1_G0YxbFu%NlO%O!4_KJXyR^u!c8BAe`ZeyiQjmyn0iHh8;vXU4Mca+b ziL$!i(D>l0U{k}2wSGaHYpCj0!AE)BY6f5`!P}4=c;zbSFWiklbm*Iu0mWu8u$UO@ z!Hwc~|6$jd%1wu?&i4d2OmwKI$reF<^}YVW4@x@~TT+ko5X=<%>z8SvqQu3?nc8dB zPH3?NFBQzYNT(bA)H$Rzc(zl{>U68|$N{UEs~lZ$&*tTC`Ot5L?RYu5;P*gv=BbrG zUr^sh%`mvKD2Mg}ihE1f&|GzY7x^g5#%l{tcbSt}>m%S*f^EXzDyj$?=kfbjej={AZYI8f91s7~7X_|Vi>4mLlMADZt< zA1djiyUdHlwamr-ihr-hVVH>GLef4!Yhcc0?W)-OcAd3MFW$7K1Ycun&7{9-c|`rJ zz6#!GI)!MW_Emk<=B9l6=4@vWp-PM^sEk||h*)iR;+!$HhEw^^#AP|HRIiAv8t>x8S zh$fX2)3JjlPnLAcvhM69QF))^N6=__Mm;>e;H~x40!=$VqCsVQ6(p`zsV=P|=y`gOcqeG?t5{KaN~wmJQR)PcY!T#+zu#5vrYM9>$EUZzlzlM|mJ!E%Fxkz~t4ieqpk z(12?tb<8N5f!F{H;YOT^P!gQhsy03cwL|d6fK}dSG!>MEVbG2lrh8b0s)NT4RyAG9 zM&Qo4#J!j+jVe{E;EM%xTn9rHyq>c%BWS@6V0JLyMxHQOb7_?@Y~}W$-nghyh0ayP z1&FoyOuIam74Z-Jwsm<7$nY@ntXT#~`H_k!T7ay;JN`XdQqPQ1z$$%3`IwKo?SdY; zsRyz9BR%qP4+Q{IKBCd98s9apC35g{dytm4%90*g+5<*0i4OT(kF4s!Y08nk)o%D; z55y0}gbr`KeV#O08M|d2{^h^vkn=iBeWuQqvooYCsL*PlOLZxRIvgAhFW3~Xyt&%e zY?5WFWEeQ2%Hpv`=i$ml1$S`)a5$_cSS+dc6j{-SyfPgf$#=?Gz4mNch$D#0?+7NK z5;gjQt;c{5m2d%@)L*4D$AQpeV5o_uuHWiFSD)4!-rHj}*n>8K5}LQ!yY=YBSfMa| zGnT62Q9UCAx>X`-?DWS9I9DSKb=)_~U+K{d)c-H+&ic?vb>EXg8q5&j7*FpY)i6%sagR#slGQuk=*!k2HX& zQm8)pZC~xKIZ@^CDk8hDFLSe+#?glOGxXTsMihVrfZEh1N}{!RG+20Ca`n^I;Ys{Za2DxHQp5iy5%TaC+cM9!72UvF5G8rq z$TKAT-;x9QmBmL5ED#<{9$n`-dzT4RB~EGZ!IIU5Shb|)*DQgPGJXVDs+NKf$F&sp z*Xrvl!kb6sOf3w~CSVyyYmO7T zWW=!7ewmm`TNPo|)i?W=SHB1?>kmt!Yolw;Jd!@pPuxrbg~^QJG3nNiHvqD|L6Sc# z{l?@yH-sA7&68_(lVFC9Im)^vqtBYr3U9;m0hdV%9{i?<3QqOgo&2`XZ?TNVW-svD zy5;buGeSB{Fg8Ef=sQzLM=J5l(`nq`oS|#&gK0Wc($SJMlenMPPM6v~{A;bUReW_1 zvlfKt4|D?GJ$mgwlNwR zt3!UON|_~SDT}5zv_ooc?+MO3*U4>o23lg$FN(kuyr@EAdA|1CKUGw`&U1g`5|tf~ z+6no9qtoQW6{ha@YP7E;;4ms38a57U3=dMqx#BoNSQl{)HbweS!hvy5*zc^p!gru5 z8G{cAAi~;lY|xls8tE1kzkav_;MSg%q)*diFy@&{DOuoVZIh|vB?^-!ekM`+SFg(^iRr!csBSMhA{wc6UOV&&)yyxDC~hf6KPul;^RRj` zBLSB1Hl{|DrjrxeN}phL(~ZiH5G$w#b9Ocn`PMVtK{0Mm&q3nV8I;xVBEnzD@30u> zNJkyLK=nQP53Yr2y{JnNWGo|kb*=9=w6@1>u07jk+FRH+wUxZnK|c=gp+4e?{>m68 z5jumR!To*4i{2M1fY&m<>{L4g|IjnWg)%4Dz%PL2$c$*Zoss5>%)r%yQ3>LRT&v}f z`F3M7zkhQO09o6_WR6VU8-)bt+n;%3Ynl$n)hpkUMPd&V*@{6iQ+X^^wSLYM^9Aq!Zh&-qC$d?)0V9YN zP?BE0V)q)+hj(?~0fa-ixhRig@FMT3z9E@p{BxUOsOHBD#sPb=CJsxBTEatH%)%DS zc80ozA~ozai?$c>&B~nlLSCL%FRd@<<+Z&1XI|dQ+xPMkcR{X|)l}*FL_#;wptuHC zs@OCKCwAZfvzt`e2=rmv@ztYK&4yha)*^A@Sy+l0SSNJD4Q|1UyO|mL@X_Cyn`%0< zMO_#~SlS(n_cD&OZy_ce(YN%LeT~)gJ_rNF@$%4u_tlRXyeBbg%Afa6xYoR`_NUY?mP~*t5UAqc zp|5(>7?2x_2xvIW(gJDHfL+_`#_1;g%XDhSB1s*G_7>oTi$4}Yiv2N!4RYpkWkFMW zCPWttOBk37O>hAba@AnEDGbg=AnRZ>lHw|K#F-$uyfVE0HOFB}pR4_kJ zrAATFm|XEwG>B@r1t$Q^I9{x5SKYrgU7~Nw;RYkMK;`qu7x;!S@J-N#QAjB=DIU65H(lccYQAtYqcA0IgFh*#vwA|+0{dav zj|8bS5wEaPT(6YNYD8D{Vzk2S;~OjX+eW|L%x{qjWm7X|uSI!@x;;dNl^Xv%MVx7R zUM2^}tZHzUZEm6pDp|k(!Fyq{_hsc?j?4pDc_gc$a39OsKLZAqyAe%5*6zu2#QooA z<&RnWP*xtz+COnWoDTV$+0?H%X761aV<{*i@UF<>=#g@^*RWGKEg(NK^s+XUx9RWasYk2YT|^Y*q7w5=+t5)lGoZ@B z^P>*$lnkk~x_^!R_CUYQ`0Y7(D=Vj_)%E8Fdig~NCxWJ^`AC6~N&jemC`9_>0n2ZP zrnq@aekbFwvxEY303X>!XFjYgRC?_>6fII$6Z+5MtBM#=SkPaRg+D7wm zBT|~D8lwjqr{Oe2xr8R$6i3AUiC!eV;J5S&^7vn`bXTfJRc6ME6wgte>(1~VPKP;p?&ePYQKeWtJ{4R5&cW2j?&dYG-T~Qxw%R7f5q2)n zYdQtZ3R6O8HGH%Xnb(d-pm4lNUtb?wR}Y%PJN2T$X~Qo=YIpZ-|98d(O|~5;=$rg8 zxIGpD>n8}cshIVlE#aq&zQFXFy-cO23z=ZsgxfBm@5_56O)F9y6O zJPLGS9H@J;Rpv6JD)gYyIFDznsyM3o6iK}TzyR&5myMa$@LerPO@9E8dv#ep;gX|* z+oS$U1SchfzvzxyW~FeF)_-=*ee)s%rAP+^2YCn0820(EJQO;G3^CsYe+*%DrkKU=#xRrrj4p zJo-p+Kch1@U{gH`&M0qK8_2#Y#*AFBYv$2X@F)BXQI~FzuCCtSXad^^caX^;`$obD zc&BK;p|O=94Fx7TLTb4d*N%j7ve`4}VYYjt6ue&Y7+05`Yc>U6;A9gs53L(sR(efo zGoEfhG{LjPQ;Fj3gB|RS;SOd`o38J(Ep}@J?0yZR>k#Q@g2tdY(&{1#VP=f2ksa-V zi6^Wtaj)4gChE;1?TVd7Cmbqv--HN_bsNA?sVt;y#sG($gdu3X*^zis`xGHf8F+(` zH8}u^1Jq|rQpw*y%=nBhQi-gjV%JTjppx+57s~@#5nN6{1a{VME6amQYFe8oE#-lI z`r%jm+xVsVWd|~z^wbUP&|ev-q^^Zelz<;W#Ar)8jKwWM1x>hk_lavr#vQYu2QxBD z=|9^-yPy##5|0l1031&=J9CF1xKsln`4jnl9*JRoR-9aN-ybJw9mk!vLf3sj7pKpQ zJhx6R_8qNHX~U}55l4-AJfQVIk;>Ubz44QPw#IIxsi&?oKn!VxBAqy+Oilyb%(waV znYuK|$z?4LHc0QI;a1lk+Eq$mnxt1(dEk87y`PRIm(7ePHI~A|oUEI)!$b%d!VB0(uMs6{A0S_nZBFZfq?t7`Xinbx|k)c3^eo0 zKnu#gEG+4JOmB}an*7fq*bX>$y&Lhvy;$$wbk(kY_^Ck4h02?EoBlHIvOeE^$*;ms z`nv`iQojot4y(V8b_Dr2uTa*g)gd2+H-S8<8JuO=%w zPe&V^n7v>~m?sO2d@5!kQ=5(Q_ZWM>k^3}<7s2Bg@NR2&@nmgzqLHg=rRr4(qCVpX z1IGmQ(en6_ZSpIPecs4(LwPE=@E#C>TEYg<74ng|)snrzXNO`b4c-vyf3C>3W?Ny$ zV95g_)8x>NGtg~2dxkS-J2{J6b_`+5RoVrfZyuZi$pL4XBzx-UU9RE3K zS!gYqBkOKNFUB(n0#8g46L$|`jIDsU^& z@0?uXjVDF}&fGY<@T@HrL5a6Kc{i1uX7`|H! zJ}4^pk6_T{Z4MAP5R->%y#XgAFnqi-&c5f&an2s=9GEq#xLRqyuBGg?M^P_G_I%r> z(RC(Oy%b)R>-YF-#aXvJpf0(xM z*q~jf8+Z`qYPG){%q}n+L(7mR`(s_r!0Bx7Pv-e!F#1#oKUQjRuqg1=opWq<(d*u8 znWAr4S$V^Wp6Xs<20W$47|<}9ta_fff7O?HrxCugt9hG^C=z~qwM;!wR%WglZm#(W zv*7e_axgk>i^gXL(l+kYI*C;^B*+(ph|}BWbnVgGE}ebqQp$DPXJgl@ z&i063E7^R^~^CY6D5n93gzHC(9d7 zKr#c-o~{0ss-@Y?ZRxg{xt03@IdKogPB3emXlvygcJNnNfClQ3Dzja%ZF&357e&Lb z5@@W4D7&z){Op(H%K>}$rHu&l8txqIwD+z)_g%Vn$8<&``ywS`fZ$@H`XzgqeX1Dd zq-6Vr`_LHQkZ;O2_T5XqQsI4aAkB%hCmKpIw_tB+W?fp7V*^a)`DXvcioMAC?U(%a z$9{WG0?J5kbSy?VF)ipP_XQU>`N)Kapp2Wfgql+=4)E3gl|uo4W-^M)KD{{<6+gE^EX4)Oqs_tIRRs64i}bS zhS32@DMpb_Ab_9Q|CUzHCj;|5UVy;Pl6E*MJUB@JJXiO*WZ@{U5H3~&plRSUOz_W( z#@5Ij=@K?le6LU}*SI2V4`|mpt6%@9}HoOOTca6=Oqu zZ+B>H7V_2j6x>L@FBe7fN+d6@`_A{ZbTP=g90uB&EkDA`=IF+C_HV=aeoVe#XpOrn zHdm8x4#(hDgLbL2cxzrPEdTk&@DUTogSr&iptBCHBIm3f(=jY<-_FdPg2_wmOX2@JzYj$^YqQ~?=Xm$^eg zKO8Bn!JEUupfjGF4ssb5$!&FB^jR_2zyqk*Q!~aRogZtSOY#l`{m4Pw$tW(Kj*O-b zId&beEn<0(7i?_Y!XKKAzD>9RN03K&FkeM4<&w0liU>lLIM<5 zU>Q0UqCZl#Hh0v<)%%;&!-KYMsp2|cq^&F4nQfb5*$RSXWQQWt{KTEjPSK8jQVy7w zb&y9k4?qtO!if2aBJwHz6HVq*G?vpcOr2RjI@1IDRYzzmORXsNPBsL|N)108SG&+t zv8u^<4N@20|7I+2#~Ls>>H4>_Zl_CPhKvo8dfzq`swnE`SiN*LMRcMHAu+HiGv?^D zxgsr><1xi%WU0n!MiR>+DY6%(qi2BL!JrzGc=%5E#l%_m3_27veXco>uS%=h2$mEd zrV3R~noK>_0bA8J2=-F|VGevYaf7N#NH?#QnKoPfA>t)|Pmrvm1Bgsq{i#4BAf#rv zIISP=*VGhPr-|FJOrmUmNC&!3xFl#WV4m(MRG5{-O+Eq=C`+^3*bh+ULm;Z>?U%#9>m)3S^_kg4%Z`ZmR3L`>uu6(|KZulwv5;OHpLYO0p` zc{ylzKLn5d4d?PFqC<*%#{(k4!^S@paMNffGxk1pStxamy_V&7bfowq`YK*puNEO_ zGHSdKixG}m!wY%0^+5vh=aU91{o6vsw_P8Z?@*{0;4jGn6VFcRQ5TYNr#zRnuV&>R zI>MCiT17x%#lo&3a5HaZ4Jwe&tAVStf&yjTyGP_eDL?sHcaoaBF)L4h)?J=Uqt<-A zcJCFhJcH2xr=SgW6dYIj*ht=t+-itxpi?xJqH+#jLB=&wvHg7Ac3k~S);*hz!x*t5 zOEH{3&EpT;2)_)NBJ+hGSesMT>Y>iilET^r^y?Al6 z*NFXRPF~DeKr3VICmDCQc5c4I{w-sl$;i{S?)^wc9$vS5|23n&^Ww)dcEk&}lr4DO z=580hgINP=zmdHq6CRgA+@~b;KWM=cU=~cxbb7^1^nXW-n`Q^yXuAjfZYx-`xd|{S zYhMg&?&p|YRKi6taK&i)`HTKMVy-J@6sT2~X~YazLIMigHrHF7{SsY7!VqihN1dzs zTUC@fF0-CbKRLtX?bfg0@G?N5o|&Bks+F7NW=FH|T)BSzMm#YmGtbSf+t|*Rjs5$- zAX|-i|JG(lpRY34FnLuZ=@(_sHLmV$_Fv;XDbv1k&>B|{c0cmxKg?ibE1LzO96RB1`JTdK4^m-OD9mWRVJ}EDy}q@)XalYok*l87Wf=ywtCfB zGm=<4@vjt?da9bR-N6mOBoRx^5Zar0YK3$!SN!BAew&~u!{x9OGcnde#U6EZZ-7Z- zOS%<#EI5K|-C?PyUT`%5%n{9*_dK&}o%eXQ4F zTPPMeo>0y;6dH-eta2W$3>>XXr$Z z0KgDpcQCo?6h8o#gi4;kQEay4Xf#Jj447_|Bzmk*wF3h% zp&Fya`qUcF=hk`(m(@y-&>DlN>`vVeE=eWoP$_7rQNynl_-9^j zfyySaRySVGyf*VS@KvmRnEus%6VQpBC|l?%C0WgQc0<(=6p_WEcW~8ady)9S_OZOv zLIRNBGq|tJOgmzA6Ql_*z#S$@)-XDabC*@C?S=1ZK{uS?v%QBQB)t$=hHJ>Ws1@k% zbU!s)^97y{eAw#1;O3p2Gy^HQsHs$2$2&!HD##)i`F@c>)+ zfCHr}yyysOen41%9%!%scuSLzf|;&(*Q7PrT#D_9Wb zw5R!>-Bb2(`y*!fQbzR#+k1}K$rlQn*N$jUuvWlWObADND(th0yQ6-$r%YuHY_fgf zC?;H?IMK)n#++;-@S3O%PtpKwAVSx(2qNgPQ|+{9D$gSWK(;sy?!3AB zwl+n*ip$hj&zryj6Kp$Es-AnatS(?cMyYg^q3kPu3%jL`l3)vRt?+?_mx<>G8_R7f z28%beD#P4J#bMV+@hpGFcbh#?wT195)D_Ro)vt+~{9U4^=?o8>uxDv&qTK8y`^o-J zXMe3Vef2gD|6q*h z9sD{WxKeR3B`D1iD64!=j#G;WcT3HrZftg`P6QzUh;@+CFX`zzTA@9(9YT<#F7S=c z-6Sv-BN)sOL$QrX?0A5H$kY**!JunEEahKIsdM$RUh5D3_Wyog!ry2vnmBI?P4W4$^P$AZ?E&!C`vT-Nf!FU9Z`lKew_jU__57p3+7wrnV*3 z;f&ZxqF|v?n6u(Nr@9?(|o9J_ZM+GtNE(wKQd}_@zq5cIb+` zkM)W^vp^ma#a?&)lC$>_YtlR#UCOuLDv;64s{Xm_1<;wZV>H( z@xbc%5N<=-tWCM_PQ&DfVI;)q6M;RZ$Oll`)0y~`V_D;`E{D#Jp{Nz7&`neb9Pt?$ zsL1YC=j#=X-&x++opL>dnmZu%qHB+X7qQ~^qNnG|an?tdBg#qy+|ii2rY_A*i3K!< zVF@opH_=rnJ7yMeC*0(E@wy1tp?p6dDiCTHK7+2aGX)~w77DbB zFVOzW8=F$Dl>+URS`jqF!BMpW9bPLCwI=ymp+-1=P@<>w{eNF59fO*FxTX}y%{6M8 z_S>Dpkw5MkWv|p~1ck)YjMWdiWa3Jd&(qab!bbBz4o#%*wgmK06Mw|(+xf-Gc#Y8M zrh?*gE!(8d#O;sr00qR?)-i-B12PkO1zDIq_z+L7 zi#&tX19(FHu}0958ZC%kl22iD-BdV%?OOv~TBW79No&|byg~I$>-VM9y%FBHFz)UQ zK~SAqGN+UXQ(|DXdAEB(BI5b9%YVeZt3e0LL7llP3Z4KTEB8biZEqYvu+YH7o{U;8 zAhe;s6W)p^cN$*xQgUA;f7A!mr@}Z)VIy2M4UgXf{Y(3pHY6|g>=IF)bzI}B(}de4 z72AvEQB7|K5V}tQ2ffZ4fLcmtJnNw z)xhTciVHb5?TqKbT!tSeljpyeM)nk9ETT}_+ld$ z8Fw+{JNOOJN%V8Wc0G0%nrb8I1O_lG9G^5+J%X{4E79u^wIzgi1NDEPJ~MREuj6&2 z*oUc$Rdk|8Jv0OKS7qMlrt}dVUfI;u{=PCbTt}zH+G#BD-3WSs5K1Lc^ble~D`g`K zJ=PqOEjmFvnYZR#ug11^^JeknLJeus3R)m}GE}XhKC7NPcpksR$uV1%?L(Z%Wxmg4 z3c1|R<1`vTJH4mnMy9OW(DqU6JQyy9fUm<9vfgq*XpjggC;Q{Z<&6Kg$OHW|3r3*6 zI@XBgq)ceG$!!--rZ9fw=nfL3WeDqZv6YriDAH)@4G3+9=#(Phr-$I_78`VWRx(@` zRHx2H*MpvTGRtr(4d8v9m%NnyHmfpNH;SIomwE<~sJ?|UW$eErc_(5#Dk;`{lpj&I z7ut7WZB!InfkAPI=14J$685FuVpt5fpovxm9V-J_6`W^Q@@ls;%sB%#7)2@z!+x`* zRaJ-0^7t-(oH>F>nQG_LglOr0u9+!+F^{Nd= z2uLfMMLBy|&MwTk!&!(EjiU+wx$3#7nU;M&Yu?M+ceBBNvW>_wd*Ei^h7s^G=G!oV z4DEqTrS+`&p?ewS5b^Hg(s>=8Az0rn+_!xF(nDyJ-Kh>D=lbA+l%9(?ZSwKMrvk#uLzUph4RFv>`C zsWD>tjI3jt^R~o0#V72beft!8^Se;$I+6|0tXk2_FssNRx4t^}%kiK3fQrm2vQcyD23`Gl!S$>i+Lq!@xP1CQi`T?}3vw(2IUXZDI`ZUK zVo;6NA=`f>Ef1&dAJf4@X>80G4N-#HE=6cwh0xbgB$N|2r%%ZLdWdk zeKDG-3HWJ?fZFvlT9kGm-s6?@G%&gXe__X8}}`^>vZbB4zbp z*Dl|`@S+2$1ZSWucCWcl7xH}s6D-KiVLBiLwd&VYhPMI&Kabb)Zl=UuyG^V@GKQ2+ zO4JgLl$g2)m@)_zl%@9=B!2%&oK^k{&y{quQy{aMbjuuiTN_82mQHfGM1j$}^3w@; zTD9|ii}P9hnp2MyangZbC3=DWC4KQYrx7x735ZcAs7`)+&|G^F+44&q8`;ksC|{Ll zt^Cbm04aF?g-}qfJWsO_M<#EV<EAUHcUJcB#^fH=yqUp0l!!5W!6y)~>^I$<9 za$W&Wv=w5m+>S3QbD~br_r&re^Fwr5vN|&7q&Xn>QyKESMqNx@l}90zzL4lfTu@5; za?$?1XkIE3Plh+X9?09F{3}$D_z_CG!B8De1XhE66EpW$tHa>ISe|b9{}=|#0G6lC z@6xh_@Ll?*e}v}x*er)KYF|QDVcbV}URK?8=0SpGQ8Boeg^FoWnKpALmE>v+{e1d* z7^>mtPO)~XhCQV+XYt4{%t4^^{OrdNt5&nxP{RPTQa0{Qn%JQ&q!iC3^@Ehvv@*o} z{h{*Qp*2Wtxwo{+l+<-&QsSvOY2ep5#ycu{9e%2SeKE;R$IBSo=Szqg-5O=p*+73Q z^+Wv3ob(_+^`Q|0n+-7-D#9d^ejFLTa6U!c&Th?lQUyts%^~e)7yeNF(v$g8{(V*< zz(g3Q7%{#O`H($Lkw*xg9SYT7$n#>Jg<;ppOrDJ8WBRzJWH>2E|SWi%wn8BI2F}kX3uPtLi%iIR%5lCCG z3u6~pV$i`4u@lS%>=klIGB4SGmq$?1_sizfvMi`XpO&MA6?16CEhMfpuPdTjeXkt8 zf?AR`&SUDaCr8Z0=DNy==YLl*H&o=tN*olfs@QjnaH>ibl#G^utbJh3nfPafD*g|2 zd6fOAU{|Zj;L(9OF2G{f$?=wDx;@SY$HEDF3cZ=uL6S9o@NX*ETlIYjG3`m52UY+T*bRyAeY3v=k+hwqt;+$C7X7nhmtnyw^XLv;|{YQ<9nbC(tL!dBoLC zd>=5(MgUD{4P7{Is_E7Fz##piOv7aWm$sS;NCi@lqA9)%k3C73v|-n$fh-7}-yUxL z?jP)6r&)A~T}gk3H57Y1%yet)9o}I)t>2~JN82*^X-!*7%BRyi6GQ|>+(ug&-S5t_ z6B-qr17`D$v9|%33qprTzu07K&iJi|7;W#qSWD%<7p)cb;d}~>_dXLvI`cOM$C@kR z5IIaPD-=cMCU?@*) zGl#dBqgo0$YX8u}BhU3c3O>Vor)PPhqeG^#G%F$V(3~5j7fRe^9=7s`<;^(7kQ1C> z0M^Th8)vVwa2$c?#<`yT9I#R$4VLjl#&_c%U*Gc8~&OGXHX>Q(OEeWji z$)WuIX3eei5nVG8_(tErBugm>S$;DsJHhDdOjh7n3@`=o9_=$Q7UIf#`fq^)mNTrJ ziM@iFd-07hbcna7`ESLf>t1W|@vnP1ttEV|MfRh0^VIBk8gzgBW<&Zj;r+t(y?Mt9 zL9*rR7d8y1+UFR`EcA~Djo{7d|1kHS@pe_^{_h%PmQ{D}eXqUKdxJC}oq!ZU5d=lV zt{ge)v3m%;BfTh)&^w5L3Ze-CK|tvi5KKTyu+b3}$o>AtTszrtJokRC_rCb=WR^AO zm}8DP#xtJr^an)uj)EkAQky%m z&7O=Cu0opd@EPH4JlqZhUDjbPmeun`#vIyiE+j-}1-!PU6nQAM^s~&U#D#`uS_0HP zU>$b|3~S6SG#L?vwW~w*C3=bg`0EYh^zLzQ%sMjEsnNf}80$%){{06M)Q9ys~j;A!{L12g*A>lY=m|CI;16_eUU) zY$g&aicXWffV=3iksH9i!QYtTDh2ipZpeNqGS_wf3u_TW`){$TNm{WW_iSG}X!=~g zs>N2H*MP29Ao@u}O+|VgTeb*EARJ26gVbej6}z!Pc-zhB;NpR>!PecK`k$wc{XJ=u zYavr67$_p5xTeXcgBUIAvbl82O1`6Ft8@!YTN4tIW%8m%rlANA!$o{8iis31*crPY zqXPMsRt2^NS^-U`bSfpZ6r1{R{bl;o9`St{Q_KMfCe$$cQzT1tsJ>+!8}BMI+_>Yz z`>nH=XOV77igDv7!0)*Z0^4ltC-BPx)(zD{s&uRag>HipWb{@qbKL#3U#4!D0O-}~ zB<3r!PpwL6tO(T5rO0B(Yuz@pGSiMc&WbeBcA(hD3TGxNHf{t(tKRe>zD{m}w6@!S zoDc&AsbIC@Asxw05cYC34wlv4lR5bnRwJAAUxQU$miyj7(ukWwv)vO()^_ACTtcg` ziPI38!)UnnH;5!kRP01*ZXg9cIWn* zVQL3#>5XQXD4b`5hcNjE*wnK_&#SIcJ>ixeyM3j zVj$;Ew05l##=e&i$S&QBC>yvW1qF)5aS1^&aJ(3&_-2d8Y?MRCd666bTI=IN%jqSj@@C215W+@Oga#gg`pkhi_pti(=)=EphZ!1_(x;?jC z+Y2l_NDccMS)z=T{4g*w!JKUDiI}UD@uW4MHJ@{z1=D7Ip+)y|m;t-H2}VStnSOiI zkOP0Jm%8I)46)E%wL8b) z>F*3#I+!4>i~%sg+v%8-tVZ=d7q2LsXbTO6HKw?*@M}|OFZ8E})A1l#Vr6rp7#l?> zAZ9REB~g~fAuWvMW29g1u%7|fSz45uenLmHJ~Gc{Ny4SWgh5UV zxae;gA6ou4CKSXjp6eF#6ykZ%4evtsOs7*j_HT?nEG}$z0cJU0=tFKaNc4HBcN>vR;5Wl5`s8hN_ zP+C80_ZqF>rQCgEa2Q15WNnMbj8?A~h8WITI*6i25ye;eg_~uyYB#%b4ufG6EzCVT z245dNiT9Z~rOupMN5pLfiD__Ah^b7w8F?|Ii07#f^9X%?tDOjDqC^1|$z+4vzm?ky zg?Q|kpiZzGY$bQtSWtRsSZ8QhIcwNNW+Ii0qhVah6MPh_f&O5NAe)8EZs9v))3_oY z1&T|9>=R#Mxh~TUw1}4m&Z&VgEl47S_JxZF!dkajYh6*hPieOx`&mMj4dx$YE3&mC zk8qWN^4Q#+VoLbRZcUpyxOr zzz0L)Br5A0@k3cn+sVb(B+2Qh!F`2vky zX@=DbBwV%4-8HUO*FEDP0z2^z=E+O;!6`)o!YGc=ruA%zs0u2m%a!!#j=>YQGT=h3os) zjuIi2AV5Rf&DvR)YE&AVId*4g7NTB;t;ekJ3*7{>kPI)pH}NfwbYJ+gp2Yis#@Ky5 zXc^*UGSoPKve71)>z#NRsvCw$>7GioqNMb`t zF&(RHP=aNYHn?DO2?YWTwQpk4N5?87eZV3do8X!hJUMz#Dhe#|h`|~x`8`?WO+Fv>5C`MzG`U~S zu@w}VeRKz>*w@>SOQ|mtZvvqxmH}`Xs4zN2k_TevBv^#!Wp~3dOf_wB4K5rO?YhlNdBvb!$j%TYI?*<73dstGwA*lsQ-5Ze5f~YLG5i4{E zhT34ifI_owB>d@3K!SiXADAT;ezfp1BBUR~sA^vSk&FM-`0%^lcSBJ0nH}sR1ce_md*SE419#acy0VOg z`@`u}&^F$tWiXBHHv`ya_aYia2teFZ&2>|nzV&HXh3USH$rH7G}fK z=C^@H9pjsc8VnZq?hJ-!PpX?q$udK*F*+P`4y-zwH{c%QzsOw65Nd{eAZDZHe{rpi z>jQj|re$O9`%wW~a(xe~CrxWj^Kb@ihOQ%42`oPo?I<4~&Qc~YJ=U9(y+clVCe4EK z^UoQxiPE6V0(AZxE`H6K7M1*`GlzL4jXcJ?qgC=XrIZaNE3&u{8+R0I9RdIm72t{D zKO8A4^RG*Qq&_;u+Xh_I+G>7B8q*$n=@Lee_J*|9A?tRS75r|e`&fv2VKF8$NM}+U zb1k0E<0f#r&E>wxC-SM#0U2}%6Hhw=qtjrW3?c zh?!Dzs{?&v$$ovnF4XX>bSh-6YU70@;*+z;*{ ze1=}d>Jq!DPz6u%3agDyF2h9)yi?ZoI8f?~ zX@{&OF>BzFfQtkh*yjY(DGwI9GA&{A5qL@1WnP}GwABqve&5Ub;~?MaD265tN{3g` zL@iOFN66(HnOF77zen!P$Q1(#q>7Lk&=hb=8>AY>o|-B`mM(Pn8vB{mVr-YJ7My(v zjK4g0TwZi?2@@e^hiuYtZ6R65biEF1NQ;1|#ZHZ;k<(O?j&6h_dzc{%7ppYst<=7q zrthchR{^DcAXbMI1;y=K6wS}mmZ-XEBUp6>#6{Luh=AxHwGg!9^0+y6;j2Tac2Fvg z@C^Zc9Ckp89V=gph+#5B^`%+Bw9GG4COco}x&qNQH4tjm)etRyTfS*b?rrS-$Q&&9 zs>ZxW`itxh942+NOJzs|;ME$rDOpbUcL zf3J$S)brUy-l5i8Z2isF-D2aLt$v;f^ySZr{h4umM%<*<)z?~wyaUVCEzg}Ar>Dg3 z)HpsR4l#RWf{C?}x;=JSvu-VG{VFp_T)fjRIV8>P1@Se+c!IfQV}fu`Uo0zS#z&+u z=ma4Ve%LJ}zm&H9U?#i9WxNyxOtceP$6TE?`;q~2%s4z zM6yNPt+Mf`FuY<-`m+(~#nf6vXs(<79u9+D7Y2J$*hi!G(CjScNL=z$a@W#iQkpix zw%B+KQmBY|2NQvPDLO)Txba8HtT8l4K&p`x-N$rJ;(D6X#RSqPcL>^O&Lo-xK`|Z< zH`vN5XD#^1E``Y8WJ+k+;?Nq}kAIx3u8;Q?M%UH*uVUjnUtup-obcKh! zeGoL_j?lM$iUBsllGa zGeH3aKp^`G>U+?m+lf2OmD9CkHbU52djQYs9bL!>rxgFLw*1;t%aJ~Q)w@@`dDi=9 zeEwDR#NM3X?H6bZsGg?|kD{X@+IFNCt~WIut&{x^H0p&Rf~gV-F~|*QUk|ChWxSb} z5V();jn9nS8OTW-$Mdo)XGiWVT^R!Fzv#`MK<4^ljNyTafP%phTh5>I`6pS_?bF^Z zV%=N~A89RGVbx8$j*QGvkv%d3ghM|rw}X6T3T2J?Cpec=x-E~WG$n$~*X&!?+~F(< z#mVONALe-m$-JRd-tKi|k64-Xx%qDPs0_NS4z!9bM!Y~XCIL}cOa&Vl1P~G@1aBw7 zG3d_k1M?bjElx491Onlm|w1bdc!wk7n zdye5t+KR2EmY$F>w;ww0R2JUOKdmDBvoS%%#{v)L@CXM4B&f7#Pcxy!Ak5PC zq+BSlm?MS-Vh&0msfuTbA9kx_ zvnKv>*l)8s#+#+v3!@0^<5G#aw*vB+$Q+#drk1D*9k zWM7U99HEb&jm$Gq8!_xoK?dXgD!7uqR)hIk@JYE*4%FT7S(#BJ6ccQ^jldNA^N1a> zq-JFg|1b%VDU@PXm`xu(rBr-WkNEhJ*gYKgTgTBDU5kA3^Vr=L4-?-w zF5aJ&x+ivbs}x70h?egLc>0W>cRCj$#{4WGo{$(caV&Hs-ZTMbMnM@p;gfA3 zt4gH`pgmS`<;ra$rSLrV_4RdN13BG=EX4J;x1rQrXmZWfCf{0aajoN8itU9q*IsS& zja?1c5|CpPp?m{avjKrTx{C8;Xt2g^w^}X+*m#7v$QX!gbv0&M?%ITaC`=OsqM|Di zt*S{HSh}-rRctm#_U*{L0swBsMKY~2PeP?U*Gua~6<1gVu&n@+df4*CUfxeCn(i$|q2+0ex zLwBGAWTxLqd)`aidg&)bNB9)Y4CJ4)(4d-}6T*aClF@(_)|o|i7W)coPU8r7xf$C7 zY!An5mhItQVV~a&^Ypz!;@eXmogq^PL{5R&Wa$B9m;#;HT5?7!GoqGs?&@q-b&<4^ zzfHiHKgA(M|MCRPrSXJZv2G@$YLg!bS~iOVpc=Xt-vD;#L&@D(s)PFT*dz7CZlOIR z@=Q8b0jUNdI|iw;kf#){@@dkYzCXcDG_-?H6R*6hddw|Z>*{lFmekMC3g|%wm=Rz- zUd0Y00%b7rPK zxhHak>XLOGo6On{v#ujq+fmMuR0`?M(p)nzZS##SF}%LCtr)sw&UL*|3w$pL;w-ES z!yo%Ddv$EDU^+O`inz|EPX^Heuj4ZUDG4jVf|(JGVVXd#gId*X7%zpsYT!(@aSTf< z=}N*GeDA`}-V8oB^n zcnjuZ>r>p%NbIUkH@{5nZ&QmK1I{bDP{QOPHcuw@sU-RUb|xP%d$WS=>9$_o#qK(C z6-a(CwGX8Vv3my?+!y^dssD9qe-$bdQUM$u0VQJr$e>Z8;&H~50!fmz^p(`Tp5n#E z(zg>W0Ay}@C(3^x&Obq zUNb$cfMe#^1@8TEH!wnc4b5rmo?PdgsJxU^w>F=_A`)bpY^L31bW$RqtysRU4Yo74ySLE&GtW@TryuDbVM*uq^ zW|Uxc{t}|9WO$h_ybw>|kV?UlIVU75=<;Kb^l=T#BYi0{Rbog5^mBC z+Hnx6%)!3>`pttFJwfMyHyYr{rAh$=kgI?S_33iMu~%zXb7Ux!(R2s=msPn7<=+geYR|#u=0uB zLO)`sqZuW!XvQjNNl9re{7UV*j#>elF;k*?qLdIjemW~=k;F=A8G)I&x=jcpzY`#l z2U%i>irBW+m=RawQaDe;9*1MD7s9?T?B|5N5BvJC?+SZjn@Nwb*e_~aYL=MArA57q z%ZnNo*DV@Y94|79&7yR1vZ%nZu()GUDR*aul@PBYM%2gS=(0oW{9$z-4mOgy@PdlD zxMDU`N*gPF0PMKCge}o&b>%bb0A{eaKen!@=~J+q@XLwue)UzZe-JY7xk~)Uig~_b zHdPpvzf_Xfc^5tUTE)CxA<)!6Dmnt%+SHTx2mwe0Q1niDe#zF;d- zYNb$T(s)S74llvTrb#b)gS6Pd+Y`E-|8)b+u|lsk;Um>TbkUYVdz7H?Wa9ZcspMDL z`pu&7+DGl7^SF{-Ps4d%*bjvLq_FP_dmr{L?2DVFvi_k~Oy3Wp?yvMUxdE_^6z#yem!!acv8?W8vz2Z81~=F#Blfnphcm_-(+*lNAJsh zpI~osf0J$UuIiB8Lo~`1v|!IG+4D<|{TdQng6o+;5H1ZMGLRF-a#$veXC`n}(0~;Z zge+t<7?{#*Mx0~0s(x%UnBHu)f}%_$-PBPGNw7fIy)9Q25vyXiW+bx;36@pYRvyQOXjeDo!5E1db8mT0a>NG7|ADO%w1-xBqXV8Zf5cVaY<% zemassRPD=^X5r#SSdB99#TRNRqE|E?e4U8-Hgqe&PtfBb$BX7PIy^l>kYB9beYfjer5`Q2LiL-2efNLfW)S!?hiVmjsj0i_? z2m+BPk@V1+B@i-W*q#dX@-WiDI)ex=unE0^O<*7A@Kas}g8}S*V$tWmdi7&)o2~tRtz)*m?FuVlY1LsLwjqg!6v&kP22krpToMj1(13YqG zi}p3%PsIwSkg4n2aiG971ne|9;FcW}y5rZ)TD>sA7k0pWA0rK#9*9H2OD%H!p3x3bNYZq}B1{Uf-D)PF-65+fF$e1kyuX7` zGZ7os=5>YKQ!R401v8-);l07eUsHlf@L)ak!ejO3$=Z=G4}Z_syQgrm2y<5*3Z(Lc zfacf+a~y(s&Q5DEr#B!+Ij_N-uPX#EkcqfVO9Dm=Rzt`NunFm)&joc%RE0iC*2RaL zwdAiL3zH}vAI-|W(aP#wM@B&;1mKu#uH}is2vAsbOi>A z5mU%4@Rw=PK47w8I5D1=aSkS&5MwlfZI-5sdnAh>IxQIK5j&JM@W+xhA`z|IJ9lzh z@@*U8ks6zGfDLsGa2GY7ZxJh+jh2j67ugEGPP69M*{=X(r((Gw?I!oh;(97wCDIF+ zn*r?_^gLt^7yuCx_n&AbPZF2EfxUZ*UL?2H45VCnGa2#(IgNwbWlrF{s!_o16w$xK z?!UqMMXoNak4~nPqhMH&3(w2742ESuITWDzW7!f~hdgGEnE=~4%g)mhit^u{41$+J zo^Yd#rErfF?>gejAC3++HG_jtYwz5PZ9eyM+c;)Ih&?KEx!2oxoPRQkRct)ackxZT zx@guEf96&bF3{s;R6g2->0#=QQy&j-<)a)M+0GwXk@w3T)}GcgTemeo^X5(fsANmL z75v9Sh9Z*IFcfTMj0Lcyp=abQ!zDs|lki-&jN1`9gdCUhEc+!TqXFFo&!=W>lUvus z-aOF6G@L|824FkX$Ixzck|*9L`R`l?VwEw6SYkGW%ax7Jl0fbb-Tal8Pv({aVc79Z zdDxlt?|Ak$Z^C7_-Zvd&4yOM{swK?9e~2+h4{y_t;rwhKM+;z(h?oJhLf#++`wb+M zZz#ryobHZbtrC^VhsYFzKpyXSNd82-m;?0SdjU4tp+OIWU|Vr0cI${xkAKquzHAov zaa>?xb6<>8=NZNl-40?m#T&9qDH);&FS;(7Tyj*WZX~^vNI!lM*`{!tTF|X_&MN*b zJE!G)Vix~jb{9=dT?-xh<3@KY;(HWCKWTJ7Z3LS^3RD?#WKIAqu{&Goa^iYv#y5Vz zzt6qj?=>Z9mJqZ92;By7Px(*;&b1{;l@mbFE(W9*gBp2H4ag;XK_|Zjk!RK}a#1I! z7FU;3@@Sq^L~i8Qbi8fn*eSTfbKEjC~CgZ4eqwkh6a5LHBECs1B5>|YVYBpY%er!E|EoBN7sz9sMj*4@d9 zMtVL&;$HlQgfYq13CN-jgl~-%SX`lWM80&7y6&RWWVSWHGWStzfEz&(=L?5nF;ur7 z6Lg({>8j*jmhn=-6>B0|c~kJ-HfA&ib^aq$pxi1%Pka^QWMrn!oDPuWaURCYDK3H^ zae{DXGx?&(pMhmyPQwgogugD+2W2SzT+;QJ55xjfnHB3;KIPLdr4HsHESj^lR7Qss za))(^1Pg34gjkTZNQOn75F*NMPVCL_3Uz*!FIPw~`lk~zBNBzk(vRx3C)7GqwR%i5 zF7FbNF;XkAiai3UN=h&T3RkA;Ro@Ju(hxt7$-#BiH8z+4t-_OSvo))n+l-Ry)h;MB z1|E67q{!a91r;dB4y(W_y2-v3S2&Vd;?UAdXZV~WV;rvq@s!=sJPhXuI^4cVf8R)p>wC@C$qlw=X=y+AY}%FeT<4j9ugjh zg{}S9^rBw=N>VA9XR|Z)UenV$e=c!PlgvGEd|0L07ii*^&if;gW6_U26R&Iwzy$vi^hmVulMDM0T*&e=?*5ptkdUC_}n@2a@m=X(C@Mkvi3-!nGw*(E|iD?0{>S{`4z)E{=t+95G(mBMdK>Rn)z}ACzAl>Fx~3y zuCQsmO7o|rcLe2{Mmq%0L(g&|VY%Ym%yOXKyg9QeKhv{d`E?Qtq)H zMiH{e$)kl(V$#8p(XYtWmk6h~La&3VG59QY2nrHe6y0H3RutSihj7+Gszt!9p*_8h@#`UM zHgVXP8t`_EnjKFVLJbQ}N#!u=l0T53jsBxGy=c}6A18r$OS^NR8Uxs@V>xuu^=dSG=khAW?Cce+uNfwnI3{{_5OF!mu_a*#5 zT)feA%z}=ZUmOE!<(pf5tPFibEQ^09Gq=cJi=s536Lr!&`YN%z1_S~;aXy*z)PhhM zM!|ZBGVW)E62kYQL=vc!p#1EF``2O*?}kie&`u*jO-s@i?T*7&l5Z;WCKQeK7p$PC zX#V!G&0=e#zvr>uL;2E(lGzJ9#5x_Vv9rY6|GYl{Q2-mzQ5}d(_)kEC@&eg1ke>k# zJs?1iFh=YPIBRaeRvlrFC>#8hmr>s1{ctI)p5_UFI{!FA9>%KlkZr)qiyZW6{42T( zFn>r30|2ZpjD$~X2Ud2JZFZ0!Vm=tPNJF?Fin`5V-RB_djZY~fGVXqk*ES5a#((A9EO5~ zD{}Mb^Nn`5Fnz}hiJm?{{5Y2Lh}pyRy$YOIf2}juxcaM^&K$r{dT$?hKU4@+)#xf&cg+M>4s{lx4hc%Slfmt>dYlU^-E67KLT_17Q{3 zZ!JrJ@Bc!wi+fM~=Pklo;uqA}YV)iWGrMyS4PXba!8@@(!CB$@C>p{u=+Xgu+5p7u zsRQPe0Zln`HWn^j&1djK`S*g1lgHE)pol3Fq--2@2L>J+_0vAM7! z-z{X<@Q~ZkU^X_)5BtSozf;&B81{#R{jOoZOW2=l!(sQZzr%;aZ?ePX*_AhS9-Crmu@ZZ@2C91SaHEfCAOtxu8z#1XcM~31s(QKEUtN&H?;Y8-ym8t zQS&DT=3gC%^1;IXYIGGUMXUx6gQkeqNvA+mM zL=t>GSEfzme&M^UBDymT14RY0vwqn6+ldqlB@7r(fxUet{JLEd)?Va_d zW%g);Gzx_k&xhwutT!jo9-f=Pb2o=yCt_G*e_C&TQXif>H5fQf`yMWu-cDQW=0nq< z8Sk?X^?^%lD-=xg+D5y+(cA{rTYjq1ASOZtwIDe@WgTS%-Wag2fzCAol~)r(bX}67 zHM}ZzkM={ZT`~+}cx=%8W{@H$3}#clI03}fZ&H9hWo2o|iJ{?OIN>Mo_sU5w}X zdI3f$o-~sz$;=Kg`5606#^iW;QJg4Wt&oILl4`tdN8eH4LN$PmVQ#hLPYVwL!f4{m zsfJhyU@lCvm~!tmZvGB2xmmpO79+Y_YC?62Oa$ijz_V9iP#eC-XVx+g^iyTsF`n?GmLq# z**rwtMivtO!RfoUKQx;kwNmd`Od6ne+BS^(4OVUY-KgJ1e*b3F?>f_*|5NSvHy{lD zvgO_qwDe2NM6=0+s+V97S&FMniZpI52GJq?6_zZnwRHEI%UbN!E#|5g_j!A9tGNgX za(TV{v@dRp&Isvj>2M3XfQrRE>CnZ`21 zCGXTxC7bVPw6{09JMh7wZqO6_-|c-PpCap2eto~sT;ErlSLOKRU;Ie^n zTOOi|$w>Ttk}9~V?&iG6B6nUPzYZZpGt*H~Y-Sv0%qQ`#;N_CIIcVQ$2Xm#tcIGK! zwCYOKp(EZb4Ck>RmBKM4b2xT@rMHW`d8Qdh*Mn6!n^VCxcnb2%@_E>=ZRwLWEp~Ma zUwWpFp-)b4v8Uk@i2wsll^pAQ)^<^xS=)JByl}l6c1H)2&aEpVUb?<@t7fd&uOOKc zt^foT^hc+*6i;a}Xsux5u7PYT2MPuJ!ckvHUu3k4Ms_sqf-Do_v=Ci9+^n?Ni(qt_ zaCEIL{P_ywt{~9ZB7W*2?jp|HvY@`et%5X(@E-urltFh>3PK@z77`aQ?74&X9N|9h z*WZ|$8&Z3AYR*dSjj6pMEuRhM#H6300Yb0pcR%RoTYlRW{Yp=xAH{!E-v+ga{J-Mv zZp?3Nh&D91jSY}xFZ9`$kq>2NT^i4d49_a=(Z;P^RQN}O`&AuEMa`x!rzd(EW#fc+3{S9Hxs7$j4R!x}IrFDV@}2IQm_>afu1zulJd~kUB|POq zJPZ`kG;NB%pPh-*)S2cq}g16-; zFO{s-EHI;f{bKmjwr0km|?#afu)_$>Ww3E`=_l@B#8e6qZ zb*QasU_bMPl}C_YvnEhG3AKytK+sGq_5aa__^#AuitG>&UQ$Mo3w8;0GJt{&kDP|9 zDnp1Ey@zr<%M*IXdqWTDjEFE2Ne$5+!fN=P+-_JsHy}1TfKM2Y5cN^Hv5PJp;$OL8 zS2Me{FDVzBKyOX;+ZH|xZupWNM;U!l2)ZE_x62Gl-5b9aT{J~v?5pCPE zCt9*!tIdCiz0dET!i`A|WpC@1p2UU0ZSZ(}K;!ru-tbDmRmO$ zSj<;>+sDW)+_{}!7?JO_!tZo(X_2hvzPNOFiCbF7*30IWG%X*4nP(kaADdg&M){ac zLd{8wD@lItt7gYCR8e`w{yPn?v^&+Y^|HB@D|f7{h~{;f{%wle78_O!Pvs*@Z0{Y4 z$C;h&P#f&44VxV*SDSWqySUw>-NyFjd!k;~Q{2P8cT8_5S>XwP)=})-&UCaD+qa7n z#?_KH=Q_JNHmj0-!hStTbog<=W`cP5W@?=P``rzL?1sqvT;s5nQ0Iee$AGQsz68_U zk$Y-FNJ7NJ$A)b5@u|-eWg5_gxNUOJ^?z>H#9t6Hoq&|m&^90a`|zr^dQ%i4vEReE6!|< zjt-tVB1y!t*rZ{c8V1i0xt+~s`sUvdD7`qLQAyk+&J>-Y6?lMCc zn-bSCV8R+^m6$JE!T1P2kEg%IbD4BMyQkGzT8xiU5|I<{L4?_j#l!;g>K4)Obo)WN zyO$JHb+IB=?}v1yO@{BpFYWr`|^>SFzACU%9*LVr1j31N=K478tFvW#d$ z2PHwZpId9qI@_}rMYZn-e;jUdCrvI?8h^rYNmz3AczXqg!TP51<#pz=x`xZ^NP9}F zB$Hq|MKPvh*)Pp3tm}H3Gq^=C@($syG)x5Yr1?0r!F{1m>GZRJu|C_K=Nb7^mHh|Z z3^_{zFcg%VT!Z;wkl1I5(YjWno4s{1Y$eVEBQM4r02tfSh$yZLZadZvQ3qD8yqMS; zh#?tB!u();iAOq-GXUPm?kg2e{MFzPe7FgR?$t_N_F?etCFG>8_U9g(%&?1L!FSN% zOyJ*Ytb4PO0N!oHY|&RUaIF`OvzIdS`=G>>!;Fjz8=I0Rni|puMij;$U?9Lkl;6hu zbF6!FES9EO@=z+^rtG$c=`m<^CLz59jU}3n{Ayfb&v}^rRIPc8n;ZkLcnye@TYW#D zR8N$av1uDKrde)KvKArlqkGZ#A!0out{F?=<%FNw8$*eHhJTG6SZ&Q3+r8SlHH^o} zQwqm+x#POb(Onp1Ufk)9?%K*#m9FlrDTHJVC|-K2H734-3LDX`>>E-W$!|naMr1Wr z4#pHnYrX6cq#9ugV%(S+98{!HOjecVZZ4WtCBK<2xpGRL6;6h9P?SJAoeO~?@jHDG zSE@BFk2(!OVL**^l&n@{vBo>;kU?VjxDX_%_aBP@PaH%`$?;_0N!btu$F zhf*x~DpmWKOOpct zfp1!dipZ^hI|WrVVsFOjBx8;hH2fW#{Khxy%|GkiKkCij>+Aj@FG8Xb34|s!;qi+YTRDOP=Ij^ztd^OILZZ`Sl=9)?7YJA`bTyfL*;-+z<_+{ni z%GMttFR4UO0*8TH$sP2FylVis7SENH6S~V*GUf8Bvy-;m(JV-al@%!ZDVU~?K|9>d z>c2x=rH>~?ge7I69`N%MS|D7X*c)XywT3{cIND4GOn^~AkYt(f2U3v3xUp>DlL)y_ zFw_(T5mAW{o;W9fLh6woloP}~#Sil?EoTJhcio6CT8O7r%sn!-@XKy@U$?opn@O~( z%iY^OY7)KJRnEORrSMvpd%erNqG@(=mwRROG&`FTHrbeb*M@i=aR}!z0W{PCIK66e zYo_IuSdh`dFj7K3ER$fjJ_tnY#(*MrH+M~N_e`JwW&~;MWLf{r1pCJcWYx3r{aqjd zx|z?8S{~}M4|dsyy3B)Jb?oozGC$W9Qajt0JG<=9y6l}@=4V}=z1}4o0ww8F?l!9D zFKI6o?D&t@3@|k%3v3E4foE8((Pn^abcdF&%n&6T*${+?65_GNZ)=l%Ir10A6ja^p zSHL38fvgyVBEH9#W#|dJVz057Q!s28(7Ud9kjI!Hah=w6&Iwcze*5UFxpmVDH}|+( zddv@d=;}wh-4A<44aVc$p{tAkv>S?MV{xCbzuAPtFSBb)Hx!AcvJYJ^O;rM7!mOb> zb;wugfk9WT=U1h_y>AZ3gK-;iq%hev94GhP4Y}QSFkO)6_@v2wXL>p(na&q?Vo4~Tvu=uCJH;F~31B#)KKgDwcz9L4d#kR#$849h#jC7^ zgd(lMB!9ZfTtC&H>)e%-+(I)8h$5}-OD4W-lDVAO#_d1XrGKh3S50q!bsEw6o;CJ4 z)1)|k*%<@DbMG;0CzxD0aEwdr zHfd2F8l>fBUq>J-#K-`n#HWw)^2gXXMtPX*v24c!Z>$fiCz=~4xld=U{hoFIrI`9a zvYhXPCwTq1PvF>aw{hnhyCXaT;{&S_+lQz5KTacFVoFKA^n2FdFi8U@GKD`PK;P8t ze$;G!h{%Kauui7yL`h{qN>SWc|GR$s`+oC8zkR6R+}{sy|D!MA*H#aT!}`tN`wU(b z=J(7+s)*xjY|Win6IF_fKv!masQcac-X!R+XL44yV*~0%XoiI3y?|{-e`@6?t5GO{ zBo<-9dpJ++4yup#vB{VyJELy7_m0_mk1OB=;8aspMj~}~;;7P4;9F{uz)P#TjHxrx z5%Tpd_0n|^+#rbvlaeu9Z-rSMkG;#R{6u1s$&n{-=g`#2+%I#t+3sKWp2o41ng(3- z^1E@Hwt3U~ItTIE>I&4Lwbz1o_Te28hRC==?1JK|Vu70sY7N2C$>r<8_ECL`4NiN* z96ZwwhIw&FN?dyz0+PD6q3}D{mmygxw3zNy;(<-qata+xs---~0mV$|@9!HkXa`K# zS_hKBPR`xHY;hLuD6Ftsau3X^BdIXKH|ZIP-03<=#?!DT5`<(sjsXC9vOG1r=K995 zH4=O~imznhV*Q%|Pf%xPC)~;VLH}Q(dJ7Mj;FsJT_CsO+qwLbJIS?x3FAjobUncTF zxua$)C?6ewdmHbf<`nBKjiSQari?NoBhs|V)*86pM`;vm<>YW0%HeU8mBR=Z^doog zCex!B1s&jZvgsU$2(Ix%X%j)Q8btLu#J3{ySlEC8V1sX0A20~MSio><*w%M5&UzJp z(SVdE(D!1uY|_+Cq=uHH3Cqiyr$@I;H+CW^CDC>XD`+Z0h$fJk{;KKrTJDBgiW8w^ zh|)%FO@}J5`UnpWjURwpN}dkdpfz|L=h7kQ9322%U}N+<83@b0d1NY(HYmkwHLHR3 zFO-zpE~D?EglhL>*R439>REN#h;*3A7oHKtROPw0z!$*h)}B+2R5&UP^ETMPPk~3@ z4H4!bV#d9Q$25nt;SRp0fCJihjXTg^2$}pB_3pkPxq~2)*O`vB2Dj9iYq7apGe_VS zx*qZiS9%<;_$rW7gKvNvWoC%M)HNnCS+SLCT2qzp5TC+WK|(k1b|r(gve?5R73At= zOq8r@+;ww7xpb-KP~JB!~Rqg4xM42JN{xf0!;jrH&?9b2M6Nev*!@d&s*Jn2x!jJl}uM7JnVZSWwvo~ig&YCwI zu1^a4rm&wK_F0Rv4>{X~ORr?D_nRAVz1bES-wFthpJ0Afl~v<3wmE?OdNHGnX?2r@ z!-)8y5-Z^}7KgU<^;`g`BmJ7aG$^BvuaVG_R>_C@iqCF%j7eKnzuI6Rd zXn1RwYPTkK_s7u#qzjAP192AEM=%pY^|&(?70Ns_({7sSVQb`%zzhbk0=57>gf$%K zi+&KBn_^NdyeMw|pdcbZ9*PNEE|WO5gwP4LVj zjMR}d7)c8>J(CRhj;@;PZ=8!a+D&ua59TJaI|OGrQp*!bi>K`~bKSFZn~;0~zow8$ ztgAe~dZE8?A(O~D#o6k1(lD|fkVNJ{$P@5T%!2IR=PpnKk4w^{F+8DxXOo*La)gk3 z$=k={^wGGT5ORb9e$l&s3iB{iq=Lq~e?IcKiRKb9rXv^e+A>S*Qsg{mffL*r)7_cV z?HSYUnbTXQ5iy4)3qA&91;jjENS=U}H@`nL&^X)v?=;R6hZ>bKIz|%i#?PkanbbX- zx+k#CMHKNEX;V}7SkUn;-$~N5!nd?u9+}G`cX{NV_x6!EeK2m{go4h+kCI1np zf6IpDn8+L*xnm-CBDlqzIIDE(EZTqCEO+`WbJ{F_`mEA%u{kz&$Hnd%)_pMp!k0Ki zVGAROz$x%p@gPAm#lznQfr@#nKdIB4*x7JWXXU7rT*&UI)NM}eCCYt#{tOn3%Vvad z5SPxd=glx&VGPVgGvcdfgn%o5P0U{s_g7-CjtTnz6Eg5 z+oYiC`0W^X3io#GF5xzBnxSVZ=0)Cu^9ZY5=m8&{nwV1vyqvhJDAzhKEA`VZ>|vhi zG#3Z+?s#oY{eIMS75ism_iXI08$|Sh z7+~FO`;(EUZtXHZ?s8QBldkfuJXs1s$lb4F_dB0H?#=JKd)yPdj^SOOq-z5pu=3y4 zZEo!LwfJug5D44|O%M#F?@7?XZ zys$nsx20}<>Tb%L7pD2YP6M3q*O=y3P1oxR7v{|cc>;g9>!2gBoX4!@s=T{8@6O3% zj(B$7oRxQH=iQH~%lv7&`}1_{lx-mxMYtPNM?@A|yeBnxr|zEAy`m0%JV_r_hte*( zgCKp#t~W*IxyWsbhzL)KKPTz)86NpZq~N~)h~WRx$Vgt{&YR~hZbu*xxpUgnf6T#h zXPlqul+%kk-OY2%Epu$x<4)B|j@c>jADC9vPl0wO{kQqy92ZKspR(kr31)qiu8pR~ z{#SF%Z|5LSY^3~3HbkQ4dy&5;im%1;gmez7$<5^YfEmYVVu}f^Z`~rd7_*M-+&X*+ zttV&VUzrB(;kov^rgW|;{BgEP1_r{e z?KAiEnY;18d{^^nJCQWi_$&KHHU2Pb4z=zuOXL0H(?&^C00;tQ2@b?!(FG%HQ}99o z7=kr`N{Lazey3JK6ry4~XM`Bx4TClwK5$f-p4!u(Rxg@1vqj;VfOGgxY0#x*-|`!D z8{P+n8;&FI7X=6i5)@BUe&nsPOW4{XZqFE`5m;M`sCIG3&GPOJ)y9}6_OHgCQ0Flo=h~k=xTZ@v}XqAdf%8)-zmMA zqE&5e{b(zSDWghKbLa{BPPK&^vF6#*V=yD(e(meSeaWXX)lJ4w2X7n7NwX*F8O;l4 z`U+W3P_o8&XV0jAbPviUw42rho0wYJEv?ulv|l5nuO0bn)kasyQX?EiVqql8FB$2n zUR1iU{(=cTH!{NNA^jGl!TN_cs~$bUSG?mlVv{Z3uX>Em#!Y~W z>m&$LeLUXQ6EkEFL@r(1bj%yJV@S6#gRl@j4cC?xi{LNf47k%ff`A<+l0?QxWcNtZ zl}$;|THN+7FefiD{eInRX0!r(MFp4?Sx`acSWNM5IoTh)$;9HqTo$!G1 zH<|K8J1L$>4q>)*Do{>&0<%E?Q3kXtFK0#Q@05eF9ElUNA`9#!vmyc{zy@v?bgO^L zRIG*7F{-krp)RqQaHTr4L!E))EDX8o#c}~DQFh+Sh95g^P^2aK5=+*~!^oy#u-b;#RE#kj3m zNz`amKY^yO1w8Vo54&@-Jl)<45co2L`~y$`v;0&)%}vBm4SNOzH0mWbC;}FecT$ka zU*;E9&9C_~)3Zc)5R#PxtCpv*R0w6)t_gjPs6akXkCwq2pdSSplj;3f{Khd9$2_f- zwj#2^7cq}(rwlJZVn>s*8BMDk&b&YfOoSUejBOKKV2OZSh@nxRK_=-Q_7tw6z+79} znzl5x`!+cx&Li$IM(emlzrIN14*}V5>iyViG_yx7CT6wpp@)w~Kt_{AWe34Hd^(sG zQP0*Z6_oXj1fy#$%?&y~Yd--&g>gv9?nA%Iz-eRQ^sWsBv#}8UAH1*oKdfy@Xiv5u z-EVV7wXOlNxpwUp$HiWRM7vVB$oXXviY%4B z#MX*TuN`N-tK?ITlH}|nc?hxEbv#up-N=t4%}^`4GI@rzOJ^qWHqsJrnwiQi*?ZUa z_8tZPdu1u^rJ5~oFLj%jx>d`x7%Pq%j3^U}dd^?wRxfjFmdSj!R*!`1ftMD2X^(Za`YuS!_n2b#*g|?jp&jlp zyarX!zPN!(R&!fEy(3@5-8YqyeQaJy%^TQl!uM;T!o|=1E!9J-B6BA7+H&ql63N@8{u{!2c6G2ed9$XhYy`&#X_)*PEpPskSu7ny>h zc=3-@v+kWQUK?KgbFYZ%vAv{_US4Q_aHOtX5Z-`geio%akJ?`%D0XPhHIcbl*bpKW z{0QdrzdeD3@h7khfEI3EXivIFq^CqQk8<%R!_O}aFPx&ZkE^zj~e5Q?XSLN}mqpkmp)3@XH%Lp_PTJ<+a zy4Kj9m89QE+HW7Z`a5Tig@2|R?|wG&0l$e*S5o%aBt0Q%ziFiG^H~j-BEV-b>6OoyGYodLnk$<_&oy4pP##`K+-|kP!++upUU#JCk-KQMCuMS3a1ek0kAHja>^0k7h1O%%#d;1uUiMNoo5JM_&7!H5Y-dNi2}Q9JQ0uBCGuH$m~MASKCM! zpX|!rk-0(Pbs(_;(&K$Xj;}y0jEt8STzmJ(9H75q_x!TJGu!0FW$vYA?u}(o$H4d& ziHe>es(N^Vzlu-LDBK>WcgF26jI;!y%vZSjaFqT!YR8l&YYmR{)zH2_j9mF~WIjzf zYz`1^VR6X9mM7Imf~XhCsZUo$J=fRDdXg3VkcL3pV+0MIy@w+|wUB~?8~`L65lS38 zfP}he&R+UI+wP0zixy)F|L~F;j(BW|``r@v)RKQ$b|*?6fxq41$7eI+#O+7T zj3c>t%GhjXyt#w@`zD+n9zo2o?LTneoCx^EUH=nQ__n_R8(U%qW08|B;wq zB`nB?vml3|dd(#N5T2szM|Zx*yYET^I?1My<)K?NjW(p|Q)&D00S$m_2;6nF;A2Ca zJ{7kgKLTc_kyRvI&Zkf1+m9bX5T}tafWl`L((e@7Zy&k3ulbu0(`9jbW!(Po$iUv4 zVX>Ry^ha^~lOtDu;>{mb@n!k+%6$97BhA47?>$`oXFh#9-;Q%y1_fUUZ@Zz8{-Dsl zVdUcWVJ6;INY7f-{?|pdlGDv;s`aKc{ZZQf^W(A zZrc8{k*nlM3lrt7C|wn|Uoq0&*L-N$gK_#u+)ir7tYH^qK>K8rJ{`56ICAxr$Q%(c zbeg`Hwx2WdZK(J|7yl(rUyR$&8R_C9y?KmWlBgjgvpH{$BI%mxfMl}v`eiu1+E-_l zu3whFahbhgnZI#aOF(LnpHWA>d!>-RUT9xk$XdgKL(W@jxuIZg*;>mpp_a>Mm!4Uc z-?Yp=x6E&PXDyc%(<_VZ57%mO|CymBQ16wAxgv3o7n1XqBcm&xYx4IkcTbq?{;i2w zz1*L_+?}^PqrLyfO|#aUb>5!8Trg{%+{wSXlV+Xd-Y{?QAm;F$-3dFJ`)f5`fcZ&c z9(U$fCf+l?!o`*N5f}ewe5Hvu`1l7V?v4+&@vAz{ev`RSBRTfRIzGcUS?M1AUk_t`Uw)%l;T$wlzw26 zHSV;MIjeYJemK3x&~!5{tNkK9{?MUFN)Ohd8gd+k|u3g_iLm(e>d` z*A+6M94xMo8o_vp&A>7gs$H_AApb(&ExFI^P%^7w;;8e{HIF`@G^)(#bJ^h~vQ?!e z^Fx{JJbM;d5?`TjYz~sWvRxF)NCK6$5S4ySqV?_;BCX+DM%R|Lc66)$|2-ckHjFV5 zV|VS`c^4B1q0~9wUf&EXE4Od@=4P^OH7RE$ON+7K?EoS9vl zB6Sk-o2=vjC0n;VH}ZTq=Ig2Xoo9nlmuqPB$+9SI9NUoH9gKQhwNR{7+s65+tvj}) z?bC?kw)IVgqMn#gYuP*A@NZn3ogeBg!u}2n=(}g;hlawhvHG<`ewIJgjnRdM>A}pw z+x2)z$pBWCUv#bl%N%9Rd+A-nQigi#X_MlHfQp$dasZBN@K zA%j|k3~CS=)GW;S{Gc`MeRc>`Hf)DlkXJNRhmkoIkt_91N+(vQq?2b%OQ%+6q|>X& zkg9Xi+0|{+ZL0Iqxic4}^Q+sX3ulrku(~*1w0vo@WYY5XWp24!HUp_qb*FUY-tS3v zj(1IW*>m@f-Q4bOx9NLyyw^dxOqF5RUc7rxyEpIN$L`&Nw5Z_&!^nz?AGROr{YbL^ zjE|-VR6mv;Sp7u$@#?42PgXyZe!BX(^t09fNDrzWoPNIgh4eqGBy?>5ui{tJuT;OD zey#e=^c&UxPQO)E_}1!SCOy}N5?-X~Z?xaxX^7uiQ~Nper` z(wdsXcXY?>Xg9C0hwW$%-7z_0M}=Ohi_LN~Xx`eYg-9DE}lnlUch|5Vdkj4Mk1SQnSzE@#8>|>=T_U4MRzqSlfK)o2n+r|f{XJqI4o$cD` z5Q#LR^3&<&C)1mLIvrnyA40ApKm}#EQ+6!8x*}w_rFoh3DhStc-Svw=cfnbcr4X|R z5Ix4*QVQ^U_wZZl2^JeLXC@q<8m`KNW$RT16|Gm6%LB*5lJ(-$IzBrn)H@G02`QxIJKtxmqEErUDL@?Tfi}yAjVwb{veL+riH_-S{uX zwlSU`EpT(`n_2dXo$MPcp($QkXGepk=pA$Q31$%gnK7s zx&9Sa*1Q#V4*f7d|3!9?H(`8Lj}3V@kT8fa#K)B~C8zQ|`ZmP0C?V0|qR9P70Qd~9 zqX5@aHmmV<$XAj8+flWSa@h1BNA2LrS-F#UPYFdxBd^-YU%e9$TCz9q4ydRKW-#&OVB|&Pfdt?+C~J@=W^V0% zrQlZKGh4XR%%%`LSf(}b6!J-jHxYti1pv~Rk?30O{J(g6?>MW9tYNoT)ea~3Ii0(K z&P|kT28^SQ%8)@Ej3_FKqYb7p5*0;J5zGn_6a^Il69zEn9LEGQ<}7B%k?&cxPdAOe z@BQPu_jeoiK0DN|T&q@Ijy)OGlcgM7Mr<*e9GvFPQ=%JhGqxLE9Nv)S0NdLMotM6u zZ3Fe})K^_P_ZjH#F9X}}pN6mQ4NUA`O>e{-v2obV`)6!moOk+OICA^P2gdfV#4fV2 z;GH4hYX99&rtfd3?Ju+U5B@zk_-wG;Iz(<8lDTyV9d_doSu(^~GcN9c9!6fHV&>n> z3S&%Cx@e>3wk;Fn=(i-!#7T%)xTr;Py`rhFe>c*gVKSJlK0^aAMtHA`#c1 zyxsuGskTB(_V*U=&+11oWCOW%e~n4@fOsDaK`69#utGpgR?X@ma@}D6!NKytU~%Wv z4Dp{I5`S)pP5O@yLE-f^YWRO)Q@D5t=0a^Fqi@gXMKVangvoy-%Tx#XF7`^+IWA{) zo~kA-21Rh&q|(tY@Du2g)lGG&nuBtL&6=YhzEAdVii< z=87t|ZOgGA*O#fiE?f*BUzPq2@G+?@Ay%*p4O8~%LRXg<|=fvj9h2Tm7cx9 z*!TaI-1xU}As|IQ7DLa-YlGzVLBXXXU}DLFfpWjdeE@%WA`FmuZIHr(r-!1D>t$3l z0{4K|QKFW!xk`hSv6EjV20uPmi0otT9Axep!J8q zM`qe!5K$f49|zeV26;aYk{<@y9|v_dK3vI*Ks5&23kLVNP&}9%(-oA+&SpEaP{4`n z$$^=Qlg`23ZG(Z?^NV8(i+d3Tu-Ln?I9O6_Z!E4F?HwSM9VTLZjo6Jj_}pOg;$XHo zuS?4L6G!s~E0Zq=m`#L%2&Vh;Uvzb4j*q6?*8|Kq1I#qvI~S_l%T8uItA85c{X8J} zWq|+NfTCXpc)t$t{xiV)ae&4Pu7Cs}PzrtQn%>GVj<5rQZfzbMY}n6VsncTq5P!jt z+@f8)#k&MccJY_)QnX|j@5Wucn|ARQ?&5+EBW=b-C;Y6~DnGkY6{nvOT%9+Wulw0= z`UT(i3pVvDLLX^ha?QYag5{BM9z97g%>KAV#cvf}nuIl_!5($U^@z*81N}QCSUJevXM`B9xB;4s*VbL4srH;Pb3HlF z<{!`U>!8aYiUnQQ+4#A!3aE{n`Sj#BrR>mf7gS9T|G3Ox7|GsqM@)X!Vj zFLVa{uYsdmcX*vS}%)Ex#j?!ytp(4cDD(#*dB*7iN zu`A`{fvHFLccR!W+cTODWXsuUT&PZjf{sXULlH9mQ)>lK-T4ST53b-CkOHwJFF@2t z6VdRI9t9M*Y6mfMRJ+1=JPG`|xNGGo;2V_`sz0GxLHdhMOuj_DgYKuL6zgiHPgKW) zX-y99P0L&GR9dU)SlHmL`rN%kGX-7(6ToT6DEA=WF4Yy%G>YZsOH|zy@@70*bJw>( zB&tp=w0!7%{#<>cRCs)0D{}A1-IYnRkd$wokK#ILf3(zE^+j6KD(^u1(&f!m)n7H2 zPzy(-DfxQl`(A}W&fPj#zDwbok$m5lYtxlwuXR!`V@1{Hhp@Q8_~{ur@f15IOT+x+C`;mOI7cs9Ea8bF*VuEn8QH>Izwny4j8b20vHah3wIkOH|4wECPo5Clj~ajM;2%d=wc z%5!BUq$mw4b~444>GmCX*1N{9-@&wRXzCcpz!O8Bk)1~qiZ$rSK$enE-hn*ZR>t&9 z#xk8vNqOh0a#W|P@LY;}1{CIEsGFo>ji%G!0*eQN~p0CzY}^@U2-TS2HW`E2mzqoDq}ilJH>n0?m>^B zdugv^&yK(duWzbP9BAS79?%D!;an#c4v^IerD%Vyq@HCO70R4 zkX`J6^ltvH&&wX(?!g}Z?t7CowaY#Odi=%g8SWk5%kFLWlD)mXy8YGcQv!=&;NGdd zVg-+nKn|%ZO{3~5P*No-#-Ewb^aSq%z4EYy^st0itAOjIVBx5ky6`ou_tjCd-rcF&Oy zYEuY0_Gv?K?8~gIa1e*7Mwfw%s$=FF(}3HY9+CaLy2^eKGNT6jROman3DkU@_nvVK z==55zsle-jPZqqsGFp-6lwE1*>&g#kD)?rUZiAV#2{Cadp>d~*Im?_BObWjo9BHP; zKPi@9``aDl<{|R)VEJjVd$M(&kBL%K{1TdV}Yi(2rGsI%l(}nW%G_l-&WF zf=`ErlZQ5Ku}JEoE81Dvp3SQ7#sL1+t=eKl-2@%3_QsfXVtT?JHsf> zv1TUeWXDO44J$C8tw1@eDCH;DDrwzBH!cXTm-%3cp`DKj_4Ltkb_}{siPIv26@fV@ z0}bE_4$p9U>ij+<6)_Hc<^$ph_il^Zn16TDiKak{LscjHabKr6hk&-*tughqJJ&UT=wNvd4NHf_q73hsn>9LkpfA4M)c}Uk;P+hnW|K%11-x z{NZxpa1d#_3`*Gqo%DysXcq!pOQbvqO7Ux;qz~IEexccE6?i59g`SW4pVG$8&oX3Q zwZAVu2Kbg9WyRrbQPjsz|3sLH?mUT{Se7W_6En?2T`{Yd0fF`tRNFS1d*_r-1$>#hYE&&|Wl^5Ma) z{UCrb47hTnnb(iWLrn|k_LIx{<>sPAWwJ%{hUM4D>S1QpF!^Mdd^}9997fk%H7wHA zid{cUt{W!T^2~c`xOsZGJd@A#u90RHfI~CQKG_eQp*#8&uI%TQ2NQ$N)8y?d`~bp^d&CZoU~V-{v!ZXQcU8OU4`f;n(?%euZz6v7K{D z*{o9p)Uq=k9$Jb3JUQAT2IX2~hO08U`Jtuq_Yar*hRd(Rz{i0;K0c=uDYLtnT5l)y zsd^!3+VH&mYvFLNW$|!Xq>}{Bs8U8mdZB$ch*>OfNQ{5q2y_1kd7yvPuS-YSCH*Ak|g0@*CR(KGC& zQ46h_=mVH(sLHsbF;zc0(A+*YQ&1-+{Aon`!r^TIt37cmuTSwFhkmCe99aSFERc)A>WxiexVMHlnsM&EYM zf3=fKL27dErx=NP1aHUoKSRJkYW-So7z?Z1?-1*h91LYR6u*(&+v=bP*a>#3HF+k~ z*DxmA24UjKnVd_^azlOL*qAMqp6TAiN7OEdr6HkYB~Og3UkBMI}yfh z7$0HcYcTQk+n2SQNao3r8Si~Gv9Wi|G%qLxJ=Za3Ib7804Hbvdk zp$yLP(N|!7v)-|$alx+-ULRwYhJaa5-jTyry(i)+J=2NhUb@h zmg{31E8PaCn_LB2S(vcAVZyqRXpu6j7~hT%s44F?G1rWUUM3zN zA&-ra>qnT*J}#4&0ckM?+&t3$I+9NSvO1MKAVWJRIEY;@`2Cm<9G2%s+82pxhQ1=L z6V!L8E;~d^`ZTl?LAN;fvG+=N8$l`6)C)@Mj*P7=5 zTFiWy@00i^Bjw|f5}iL9X;NXl@VSxk=STAW3nRT3N7ftvrIEp%QuzCbKP+4I`xPx) z77`V#cgu!_MR#>}=k4XUOdAF;~ue!DDeBJ1Ndd#gkETM6uLRdwJ9@ZUe zm7e5)@19OT^0SNzOK@_4o+_BP6qlfxx=)p@91a0W`gRBe+GWvAJhoob#N86pWmeHK z-sFR4cj}0#fUmB9@r#nwwKX~Ruxt)xaxCV~7a8|+OZ2Q_GqH)ilx~k4#TZyIfg$KtT7kNbNtp}J*qiN6QqunoK0}L^HI0f$kFmieI!~y1c;)C*v zW}3;)%@2E+k+am%opUA-;Q3!s#k&u%_Z-l8)2<*-5AG_r?<%+LDo^bi+2XA@(A>mS&k~ zn`8TNWn>b-u1LF*%Er9S2iU2jp{yAeY8y zPgyqFE+37Xpy^R-@XKQnGeKLZ0BA?MLox^x$cG$K1_`NFws>fy_6ai2Nj6Z&XKd$f zGWNsna_NC~&Vd=UHqd2u*qH8b+cNQoFwvFN#iIn1(lTt{3kE;r^9q&VD zf&+T3j0z{@FEQ}{dCpP`^1k6pynzm1?Z+~2Z+b{auMr}*g6{8;F3Q$Jy%Dm|Y*QX4 zsRhyyvxp@@<3Sc-QGxXK1@CTD1$ws>Xg7Y*$_bua6hD~@&YhEahnef{B(hYt20KUkgA@b2%T6M7V1!N^c{5*YA5g5&*VW9)5X_#Q?Fd=gc_ z1A+JdE(gk%1230^%ll>T%;bG=2b?6fD(#V32ie&N>4!3<)}LL=awfLCBMgaGl4f8t z9AOa?vczWSAAG%mP)AIZS%-OZ4+|IlU2golEcrW?Ribb4-#r2{d!0<3t4A4A1J4k^ z;%d=RD*+;7^1;;=hk6SSwZH5wSMI}mVq`+XvdWb6!Q$BZz*`>6%F18Ob5XDtz9$95 zk181}|Ax*Q!*tL)^kA5ak-kQui$ShnQ_-NTY2@lJygxtzA-?z!67IsJZNfuCUD!`5 zQuUtN&XGDb{F#wc zvT(B(FZgvV`o73)x-r=0rd!O$5xZ$r8l_BJBdAh|R)+(H8eCXJ*9|NuCTVY$K{wEy zq<*7WP1O&Hd`3B=H+$)VxkuoD@5Kpa&rE>Gve+&q+n76moZ@Fdp&?zw0kmtqR@ZTC z5Lq1M7Sru&bl?g&Tn!k?WKW9N5T9!t3G`QYPOXnO6nK?PZk5!k0RIV7u=of^wR^Jm zV7u;Mv-V)~@WDEvn1n&OS}N$l+LeDDY~DNA!WZfm)9uDVY-UVY3p$4j7CtFr;2rb> zE+;%NX!Fxx^Xp*wWw1TL{60kf3qu2QnyZJ@aHUEZEXG1%Td*acT}SI*nz;=y*&V1Myowu1zix2{#i z!f9Xa14GTjL*=2NuFKyW(t)eiF3*RAUOEIXCoS_>c~)xNsw`;Wc#An=o`%8i2+ty_ zqPttJ+SM+WG@VRWQ_WnfyJ#S!fl?^(c2Q=fZ6B1dL^HZq(pt(?leYVf&Rr|&@;3t` zK!Ir;zJYQa?K%8#TL;f8;vEvz#BQX23t#ir7s`gh6|x?$l-@pI?8<0REFI>gi)(Y4 z2E$oE6C{8qRamg$$T;{rVX8+F3tfBi+j@U`gPqo3&u#E_vD?Wz>RYi?ZW2K40o?D% zp0b_!<=_@X_7DipHYuQ*&A$$nOAe8X50PJ4C``K|bKjxn!9#Ip2_wVH#8|Wn`@NlI zqCDk1k7dAu8JanQV(FCO^5Rf#YULk*TYZC9Ig}N=9^e)k0ZqqY4psf(Q1kPl@l-Z$ zLC-G(f<)AHB1oR?oh4_>Sz1c@>HZ{n=5YVn!>Nb%p`J{y6a7VE`Zyq*guQ3VZyieN z+lI=mL*eWJ#ff!r{ZRQEX|zl#H^^K!%$^`~hs$Nd-Hd?`q5D%Go$q`BamF|!9&l)q zau5<>9naY5h`pf9riSEe!?&7YzYb%DB*^}2f{^n8(hFz{s^>y2OdlrGhG~Fs@;y?s zwvdH%Cu=vUC=y2pEx8I$PRi^d%X#30ne#m z|3c-w2Z+-P)oG_mY*xwLUYkMWP~?Jp3xXcwcZY%tj#iujyf+rEI$TyCE_d!5QLWb> zVXoPi%3M{!Q!eo%ef7TPs(sDX`^r`OX1Lb=iUJG*{`36-mP&RJR!AHt-KfEnO+6fI zIwe4@VW6rWF+COMpx{7fDxu7D7T{6JQr~bxa-#DcNRTdYJ|YsTSl??X!Wv4~`@W5~ zp*F9>Qo%L&Vgr5^(DL#8ZfF_YDckPXS6%bO3a&pI?xXeYJ>1-XI3xSO;ogIXyX`HJ zxcRV%+K%0InA~}o+;W(~T^6_!f3#Ya1FP*MnJ&rhEJ{Lv>#cVZxjUS3Aa;!mM^6kQj9hax4ZQMbx#DPtmOg(p%=SjWbZ8nNYD4%CDLZehojcaM zY^<3*7AFCw=&B*!)kEwxL%eH;6iaD^T{bqjdMw}_R8dtv*fBy7M|=R9cp3!Ia%74u z+LQ=RddG`m(G_lY6ba+IY8$$G>p6hLWY9q#-LAq8pC=%ouyXRBqhn~oFb&*v(_hyM zT9$hfElTh>Q`CZH^Xq?dG<{Rb(zLf7-iAaVZ?Dd66fnGWVKKvkYNE?5~e9xXp4*J z29v9-Xs-aPqbY6Iz1ntM0J;q^o0BScw6>fE8wH*ZYs*c|Ax^#qH zcm$wcJ<=Wo#YxCF^>wNlFh*HIR@KN~c-|45ud4NKdw&lZVhDbP)LvdW!n}Dz+H{5H ziB-TyFeE>X*JsF?=+vNBXg)ncemyN=ZJ??>3OAZr;QhDQI0 zNM2bXJD45Kyiw-LQF6s7(8$FH$RdcSew^7jj&+ZUhpg}7ZS3O5XgU4s*u&t*aAi;f zAgrv9r(+YG)kb;;=R{-1JEeqT$01SXqp}r|gHjy3uHqyN8ec0e-30YnD;clGZXa|u z9W|=7@Xa>nIIClb~ zMBEaZJC5>hJ4%5*d+FUrdG{QpL3g77S4}q$g5*xg^Mg@O`f^ajqg#E9xnqzbJ;29j z^+lcBJ}9?h5K4N1%3|fRuCdGMprETPb`HT#10M#(Ro}I`(SevMypRu%^1e0Z&GF#y z__w{70C8}UsE>Sol>IFy-;dA?&3`nNd^VoF+W6 zm=#p_HU!obnC5HKpjE^kx@Ku+Jxee$<$0 zZhvw(q_WpM*^|kwv2q2FGW420}Ka~%(1SdFs)jz#R(S^L&{2VCrihc6_(aj zvF%n>RE~!aE*-LHng~a%HU{#9{H-nkw2VgI#Mfog@u>A3WkbgS?!3J_-)P-WjXSq< z=LUD~=FaDd`?)asNxGZf?mX6=r$#U8-OW9o`*|^X_EhvUJ1U@`dlhAUw7VYU&QUF* z>!@BO?s>I4Z{yB=-MN!H*Sd3&JNI$t{_Y&rpwwMAy7Mzp`DeMCsC`j(Q7g7{&v$U= z!`wM~vZK3>()4oIUql(@+)cAP@9fS|o1*jn?nzX;sFhI`QI|&7`?@q2N7)7Lrfn_8 zxhJFCc|UhfyK`rEj_TFJT}Pc0Rp@W-$>gY)e>d)K#QKhP1)l0J4`Ek15*R2r@hoJw z8Nhu9bexq5979@o9QQ*xHmQ#DeDM5+OCmQbpz}OYj4RG>@4V|3^)Y`EN59762Fu13 z=e>SefAb$DA(kLhh4 z{E#AkXA0s=b*;WsFWOO^YA4S$u%gtDgp*VxbFuW& zl&3<@IE$n>)Jhdp0b?&c#mqrP0XC)aS0K_f7(*exQAz$iq1+vE)=&1p9gJ}1L#IE& zmcoAr<$?28wtRS?Dh$}GL%AyCY~K&fXjnZ7v+5LY^(nIIl-NC|q^wk%O?lOKI~+C%JMp&;z?hg@a>bn{kMCjgs1!RO<&&d?VG;6 z7aoOriY{M+FALvd2(O+@-5(lxf9y$M{T{MA1|U&~TyvVa_B1y%BV;F>!bbIDJQ<+} z0r9450-+^!LtLGB+>^%$0E`QFwgI2GCrlXd+av?63ZZZv6NorFu$@95V!JO&MCT!o;7b{+pWR+h+4sGf2d|NoMXOxonbLK8Z##n0Cn|bK4|1 zV%UmEDf(Ac#AMBwMH3@lrTS@lev&*l$-X#AF)7xTm1aCsV-!h3`EEb^ky0CWsJ5iQSlA9)(-zF-vLrW;%JW=LMf&!=lMM~Rglk)7<)@K=+ zKS@(uI>}6*q&OCfB1qkNl6TKZT7JH3P3KK9`8H-Z#q6gbC+al<=^F*~QW2)@g_pN2 zX`7yI@df%w3=4JB3vh$itp=C{^~#9WJ^~+PF!f5^^D%hjs3z$A^L@|4?F6OP4vPnK zVsdHB&WY(vSrAv1FQ||Fu%CaToqeJka=1s(wAGN&r<&8`c=<7Ip2=x?GM2BK?WSgC zCf&(A`=#0b)(qJ+8ppFUCYqTOH3Ox+kzPQfU|w*|M7efi;+l!(`iY6_Cd%~_Rq}wH z40%yZEEa^1Oq8c522V{i&rZ~akgq3iOtf!JG(hQybYLiR^6!b}BbUFf5lH>7C)!P< z!OV;t6^T=*jBJ`_2M;IYp@e-nVHbgC>Ay0s>}o4l5&p{Bc`y)|zjLfyYV90rzs#7k z=`|Lk>xvIgu%Dd3708%&rtvzhOUv4{U6;0BLZ7y-5mUV}E$^r8#!T-(8T7)uJtU>~#C&=}fHeS+K@_Z|wUj=TY(rB93v3 zWuf~$T1LAT7Rn8Uoc-IC4mNf<0XPad>%GQ;XlFW7v)P4mQK6k(=ua!eE|P!Y?-}`T z#{N!3T=%5-^+I{A(7s-1zb-Lza^|v}){um-em7<0+l<|mv2VLhgBkid{uiu$oi3tv zi7!gz^Ah_-i8kwloIImCX$oFG{D=MEAGC^k7eAemr!w~GjC~}-HpQPxh~ZLcx2(y? zy&1bEV_)KtR*n*$w(^va1Oajz;;ytlW^b3$yk*_21_HsIDoyBr6wZ?Il?|i&XZ4 ztel_atOai)A0Hhtd6S}$?Jvj_T}-hM2ShfSuAf9+c%5tm&F9}%(`$50FmsP zV!5~2t|_*!6xRU5b59n_6UFw)Vta=oA}fmJ_F~TV&a=GRG{f7++m++(9pmNx@miPi zAB*LOV*6vUHl!MuwUjipciypb?XhyrvF7??b=UJ^u_@#8d%)ad<+5Ytqw(_Lcr$mr z3mz)1b!rdw05$)&nO3` z-8VV;I%mJh*~@stO1h*-E-vD1Kh7yL!bf^-kfDa)cXR@b9Vq=IY%tci<`N{@t;@;U zoL!f*cQca$52%gw+FzZMRXMvlr#-ReSXznS-($UX$7=EUarOyWZR|%y@?jBY`*xA1 zVrR`B`mQzm7mMVDBKu+yp{`MS=Hq+;j~2-z8W}z6NpfYrQcUi)61la+-d18?!7N5s zAnm=&+ze9vy|75@$zA@+ArK2|q)7qjODmvQhkp;JNojh)4$Qdzp& zRCL?)+JB#x@6z`Bv|SHl$baFC*qY<~dyfm2kC!DAqfw77=fLzTDZ>teQ^ zF~s)F;4gM0(p?;#W;u9M0VePd*#;wcW9o@i!~T?G`q4HI(~lYm4nvR2jpA3xznaZE zAPEi+aSS3%V>cuTq-8fG?SJq%g4E7^rE)}_!@hFfsYMT6bm<6 zdEeTN*8Z1~NGCCk&1 z=vzY%sX(zIUxJnisPWW$f|jVpZTj2tTvbZi-m4~r)>_}ISPJJAT&aXVrZJXaZfS1% zR==X~;IF*%i5ltByEh7&HHH4F0if#WL}}yvl7+U}wOc*w^Om%l>tUpgjPx|$4m{CZ z^c&YtPW?smq(-ed)VY4r8l!+pNz_!`aC3!JoV+nRr1!RI^98MUg*Ifr?U8M@FARd$c}RoiCjO_4!{#F}IAg_NwOCGE0z+d$^f$_gz}*?)qIB zt6S!PmezJY>b%l>72jxoGq0oZr1u7H)gE%^&E76=)q~KXRDsZz{vpNxP(#-yIG|B| zX(_Wqb%EN}K6TyXPvaHD>t^$ zy4%WuKYiOe*K1I#9TlxkSGKlIg#c^4Mb;LXt4(6 z(tub%aWT7*0=5!QsB0?>pcSNTX|Mh|kI(wvS<+~`DiMC5&bKq#bsC+nD`o-2e1Rpo z2NfI=Y-1AP$=<$-6{Y*8*ag$YDG-4*=^e8jb0sBeQdysDOT^yj@+j zm+MqgUPI{ZG7X!VG)QbhVTX9Hx>Sc`xhY9SX}av0CcB2xx}EzVjcDi90VBH+W30^750B%%qb8$87pAiN z)%EP$MA7?I>=Y#0pj4fx- zO1uuuv56JU8Ni0trJF7G>aAatNO!T7J!-n(geuXatV@;ce%c^Ydtm=|wWsxvk^}48 z#ZI>emmgMnM*5^wqFop}xvG7AyEx7EGbKDtbfAV`Zjxk@UO~P9yH@{S@ep(`=FFKA$>Wf(4Ml5o6UMj2^O1g)UV^_0 zWbX+uJW6YCTwKC9zrC5&&PzD96}HYv0x)6f*IA!>oor{nQyfQUm^5{&f$)w45wXMQ z7DkpX-O74-J!g1*Z0|Ze^i*$ew~Os)cIdvd?3CEq?3Cy){W^05{Y}4W?3H`%W_GRK z!|uLP{$lr>VfMCry>0$#_jyeAv-{Q!bjBe27Y(t4XUZ^V?J?9FCPSABO6abF2et#m zx~qe$0mED!EcignjP(w;W9{Kf9e;uE{cXLRZO(dM&~t2_EcTp=9&pxBy|$GnWi*NB*EvJhzH6~c{RVGq)Lcv* zFdh{%m2oQ4hF*;WMGi&RklJ;;{a~^r-aX#Fcf7oPJj%#FPq1$vzeR5`HTn2-!Sy7$ z;&^-I@iI@7tejxywN0{SLb~9q(-I$#v!9HU566*W>Nxx1xHg$wFfLuN>Ey)cW9=7X z<L4}`eZDn)EaBnUj1C@T+n2i3K z^T%M}15HvkbBvrf#$2H9&KqNAj;VqSV0R1ARo0fHRpbD#0)40Jj0wMP!MX_oK-^Ol z@{JJ4+}j>glM4MZrFuaQ0~=5F zciN2k{*Tm(?HVOPD&nb*rbc7bMmti>^%^@D9iRaZobq@hRSXNJPX8Z1#46ms*Ua~2 zfj@9QD&*b@TQHl1Xa}U(s&Mavl7odYj~dBg=wi(hIg_6g)c%R0pv1j1?Iaw5nM6ts zLoel@xNwH2>nX*FGeelA05qlvcJ z6~*KLiEnSTZq=NJCmX!f`0JTdFcUH2n8cAP_Do_CeaIlM~FTXHMy!eV(!7L z^@HinGOal|z1d7__T05_M(s_mYqrnpp?t!^uA_yj_@ah*?BvvZf!%w)l?8T}`Ra^d z5RDs_%r=p#~ehJ@$=kV~eb5wCjeJ7^<)cfbiN9PFe zIX`ZSIV%-OwbaZc9}o*VhZbnC+1}BZ^znM?_b`!CNxlrRs49{X1qFksVqeO2I?llx zc6}flg7|uk;PSmK_yS*{8Gy@~G9E3dEOk4UtGIWP8D9t#?3_@ZDsCxFMqN+zM7%~4 zmZ(a9jXW?hn&u3&U;Ow)7B2&jfQ~`Bf6JX4sx>Y5t0vl&6KN7~IvWdNe_=pj-t1kZqX6%az=G_VM-UL}c0g2mt6T){Vz{Vrhc6MkR%cqWXqr%al+RYk=$`KsV zMA7NNmcX-UBI#mbD$t5(7^=A9)4aKgeiQA0svYTeKxYfokyL7|#eCYC{!_iAQmoaB z&_?QmgT6#zRnfM&vg`;iR+_i0`V@eUW5EWudOYSE5DEL0dM%Dac@_GLc9HwFc-c`^ z$q+?3I8yF9g)NHb=h#se1c$gFKE#aRcA7Frp?~U{tQ!srd2u*zRB$<2?Ero%q zlhyZR%JH;%^6_T#mhMc+HxuN`2|AhMUrk^V;E0Ba63CKCEkjs#VIZ>tGdqxrfkH7gp?=+T1RSCf@Wn!!u60Ubc#20@uEw?jYI6=@B%&_&_*2T?CAd>nYz3ssu*0T_>J#)y z)ibvvZdVgflbF!6MIn%>nQvr)$+>fxI~Te$nnOH~o|LqC9=dDm&K=ua*SqV!^D&(C zUNr@i&j*u=L9S%k&NE$L0Usa-aXwfk!mi!d--Gj>g+$cK4e+t)%#867n*j9D_GYj4 zfhC3hVWc@6Erlb!!7&~p16JoV1fW2c;CuVq!{ktftn~09Zr3=JU%<3I90Wk@!Rm}l zdtb&1G=dzSPkWf?`$Jpbj<&t?_5ixgyhg7v0S;x&FyfVLZb@piJHwIX_b+B&IN~`I zi}Oj`dxlZ(PYFzUyAu98Ban0<Kx%pMKm1JWW3xvW8Nhwv?L3> z3;lx07f1rit&3P3qX3IDk%+Gbv5AD=R2T?>lOp>lspJF?=^gu zGoR*ipXIzybMen|$T_t}w)oSW`Ap5bEpO$soFY8(F9ZeTvK?Jcy{WIZ7`H1_MZ=qe zL8n)3wctrjijy36LD%ItEQnZ9FMR(B$%u znSJ;wG+;iIwH?a`45kK+J|Y8){&URGP4cni6c?e8bfFoH{a7 zl%PP;PwN$pd66|2u1kNFSeur0Y2(h9qjhZB3p3fEQzU4m#EuK z43-FT6P5H-d1{rg8`c*Z@NRD`@6b5=T$mN^>JgDnW^dR^J!NlmqeiO7`{rIqu2g-v@kA zkslf!%xcIiW*5tnSxyXEqlS_&9&c1%-*{b?8<^N$3<+3FjzS%z#GdDTO;++n37ntmUX=u$fpRR`hpHVYZ zF5dvaaGnGTnDGf!xC*n(xL`Vl3BmXmix%*)XKcmn5bT@t?$NM zXLC|_3$+#O3>u8cdB1=>z%`AImi5}DaL5qr72st6uv5*t_P;zqK2^yP(~33gm%MqJ zdE>NfLY~*(gkm|*o@Smo&42bZ9hy`bZn%(SqPCWn&hfrD6sxC~+hLTbBwNBcP>8@I z^iK~02vMbg-CUhFaKPOH>*rZqswp*Xj;A}geYqJpp2i?;+x%dqA|e`8j*dp zgt=zbDdmj%kz2F?1O9Yl;0IJ$A=}R6(?}Y0R=CpIsjXJbAQEypFsz?>60tKK;Y)`Q$|5c`t~kDD5KzN5s^5EAR^HP6@YQh5GWQGVk)oK|H$V8>7aEZ zFMS&^9q4MxLyK#CzEYMP-{R?S_uprVrzmz z(!@;D-yBAxi0c=i3FGLs-{5kyv(>@yQvDef3+Y-<`HPv{AH?@8Ge5_!>Y#0`xO#M-q++Fsdt+$^gx1A-oo+Xz|7FnfMHfyYW%=KGm zOTDbH=wRw3hluMOoGs(zs34)xfFaa*&XG2K){5DPvp+r#qmS)3XUk+H-0XF9VWPsO zQjfsB+43QIl7;>Je336WKIHi5d?MbQFBLBX=6?5ZN-X(2Wx0UTpgQ)ok#CIuweh~u z>$FA)i^*f>fFm-O)Vf`d;MsH9)=s?+1=9iivbWr1+h&PJsPS@a_}XMK??Ezxdn65j z_5U&9XXgNR0UoL%lTJWD;SEz2@yb1U-)QDK25?$_Q}daOZSrrQEa8Qeu%Fp0$Lzso z>BnUJvXsnC*+myhuyhLO01(7=ruGRMP~Eg+-GSs@h4;z_uwTMX`ikRYj!$Mu@ct~R z*f>iXFZTY}_3NgH5Ph%Wyg$9Uhc_h#$0A@2X6HNp^nN4ni(!7$1IqyE*ncy^x+&4f zUyOaxm=}y(4#$d>+gfAgirp7b>+tk=kP^Ft@WxDmJS#P>tyQwi4Mw=%OoA?t( zR=E7Ps-Q6`?5u~P+qovn^nTfdsG6KPw}#;j0cB?=74JhIAWQim7r9GSDBTW_;a(<;G1Aw z3^Kxg!iYnRav--60-Hov!6{*-;9QI;u8WzmCINSyHYvic&`drz2~5KS$; zNOFIyR;AB)x@x7|V6wHbL!%c5O${<0fjC#iAUIe?!->)gPN8B`IsQWlztK}V!+)TJ zA1|Vc8uAJ|Hx*Z&LG!h{mKpP<$kXYdCT2P#oWhW^=Ac@6A*t|asr?gFa*$)A_;*j0 z;7LFSNR=gn*O^dmK?T`wz%#v>Be1 zqCr}&t=D-$=f6H#e4g43J{w}tk(4o0hEKyo6f8m}D*H0w_Z#%PNe$w7|w(erBpMD_NA?Ua4S8f;c|7Gn^ z_JY5n=2nV>4scpvtDnT{c(MVMOtNWEW7=g(i_JpD#mExn*lMKX43kS8QEvU1Xe%My zl|MYps6!AYqAB#$(vq)3Q`d%a8%~eyK`}9>d!&Owk&Yfy^iNSa-*o4FI`5GD1g?EE z*x^HGy6@0jfNE1r2=13lPcEP`ja-MOtGm{)@oBRy*J;&+Ld?FGyN2&W{`nPiaQhy!#e}v$b5+C!k12 zQ--Do@A=xj*YaHmdGdop%eA({R|`?t51hajd8intvZc~48XOa!>$tg{q0*iMjno8` z>#oVc_2pi?8`hda^{l${S*_z)qlrR=)G!-HPz5yWAbhHt>FSntWNc3`!-1y3^uYtj zxx&lQ=2UKX?9ik3A9w;gf$I}YExp~Kax8YpA*4A&pAkBkZH~+YTV7MWh~K z4+%Q^=fs)`QqM%tU?CS*6%_2G%aKF(q)9BG;Q%j%tbtcyI|kbkSi|7N()c66Hv7b& z|8RZ~_}eG}!4V`X;=TB)2gi{dd%!OVQx(acTsJDQqXbT-B0UP=feflJ$W|2g}OTUc_Mm&UbFqKqRbsVJVWj-vDk$|_1PP`V|os3^Y)#{$@8!h%CW zKOq*BY)Ab1gYapE^Af+YI>3LHF}u-zsm^xrtMM4lbG1W;vE#?_RHO}eDan9+9b!Tt0WD8bYE(!I7hleSR;dZOZrh61v^{oklMf#g>Nj~fMp5`Y4f!U)x1DT- zvVi@5PWad0&Yj%3&YdgVxze3?b7$+$jqY6Q&Nc2FcjtO{9^%f?S5cl#?nyUy?$G9( zan~j89JD#_;;yUOJlWY@@8Qn9+}WEC|JwTkH)x%2#5#UdCEU8`vvUn^#Xx87LHS6P#;4)0P&&vQNtG@tE2jA zNtj5v)HiNb&KKIs&t08m)|nC0oHMds_JPS~CVt#fh$~ekLBUEgMnp^InsLY0ez1<{>gsHU0@8UtUaHu~Fr&ny`Sv06%>Y-~E#?hw#%a+zZOA}?P z$TSczc(qCxsb8Fqq+rwvsh7_AB)GkWX9X6Qw14CMiM$`D3@3cu@s0PT3U+l==nVMk z#-PH*x5_v0O`W^eExb7o}|}Yc^l_NLgng zhWUmZexk&6=fS;iof-{vhq8=Sw4zu7;yJDqnO40&xT8E#GtCnjRz$f>1a(-mWn)*V zwx*1voeAfs5g^gi%Q{!05_DxK;{;cW zklXz31EQNFlz<8G=fO6Sf64}t#d!%WC9H)F6}4xC*?Km}ZtF!h$RX<`UGTe317dOI zU>+4SW*Bso)Z;RPP;YF4y7z&>IHH{K1ae*5Cw5JrWRSk*0x{R)^Y*$6SV;giuFXXk zNPITWQZW3=yz+Fk2}MgNlC~*E6-n1wTJ!({&TUaED1npJ1s*0}V0l4yz06Ss1!I|k zD6vs*I@d$}j@h>%{5o}6qK zfs-GYm)j}y0f}{vRwBVgHb3E1^)!R_9GN(Xq4o70s>^HwR%lEZRaI^KRuN~+Y3X7R zzkx{j8v&6@9_oJ4WICGuunhlZy<#U9bVQqPUPo^MpZ`=O;3#B?X3#!V*^uWnFVHvk zk92fp77c4niOHHsu}J8mac)js8S_(j$&E;DRP~hy;fwM?B~vAEgs`8zn(b|;Wtp+ zaP+A?7-X0Ta@=dM5da*VThA|J@Ze^pmGKJl&u}ugRDuU&@@*CiTef7l2bq*hkp#up zRjP6=_cmsaV8YTh<}a;7K#UuAtysPD?#DEvG|=|wx#Rp66b!&2Se@+%@W=^y1USpN znJ9Wr9DB7mIck4*{(u`CNWN$be!pJ(av8i06|3YUQe7+leJr?k+N~>v_V4yM(OCv8 zlCUNU-xivV`VMN4ux(0uqXUKT=KlZR&kxeM22ol*SceM4CbsrkCeOkz;wkixi{Ejf zz?nwqZT^iLH((hbI>$`}H<9m{25@$ue455P_W$A0 z%MH;4H#U=_friBz|W2m6gHvlLmDN!Z=TND*z}M5Fbpt)}T5N_YP;H z7;6v5*m`F+15y>m;sC~UnMY`)2J|xee%qpHprmi;G~~dR+|WiOu>$;-=N-9@76fN^ zeS%vka8&_E5yXnFySe8OxI9N9!(!6(Y!mJ}@<)fR4bSsXEyJdng7U0Dm2XFPRmnEe zIsTQTw&8IANm{PzF(LTIeEjC1(z*<#F*c3(wqyE^F1X|di9fMG=L!u4jDr4Z6h@^> zDT1;A@Z6z%;hyR~1opnQhrx#zKyWHu#~#R*0T0aeCHiF-%wU3s={){$6xp#qQxbuO zxlVzDy8XWxwnQlga2jSSFzq!x?)=QH%=fq%Bb~esy6yRs34XL0Je8^+)c1sf#Z>+6 z1wgs~7gc|Ysyh#!q32(-rRs_@GymqY2bv6+0k+c$@~kfkpoPZDc$tST7xN^ML!Y>ub)MdM z9cPFKH_HJP=stlJM+}A-9u|~|J%%H_WD>{sRNa}}~)t@Ew@s$9M-*Q&^q#Ku*ei`v>Z>tk=!Q@0@H z#cxi?ngk+fU1?0Z#Jpw15??0fie*wYcbRPCP!5E0F?(-5C0{(AK+9xF+h3?Te96H; zek>vP%_dwqWXDD9g2Ym|Sl97eiW@xK7(UdfePW?f0KTyx5kmGV>Dx%n1lKl?CG6t~ zArs?I*B$4P=}iCl!_$#>a0JPD0B5iS{?LY>37t#Q3!#Ta?wuy`IH{k57taeh?+QG) z%kRWQZB6nJDQCu8QpG_y%6?;TTHm*1@eoEd4z z$cu$?XPi1+5qMVzGS69CnacyYD#*TAsF@PJm3nBVD^N&hH2C5LlrtEOg@Kp#h!^Wx z_Yrx%|G&0wg~;vXAokn;sbSGuZP+GWlca5{T0i};O@lsi4Vvp3v{HimTthC^hTIo; z4+e5?)Q~lSJkZjRHMD{_8|?Ea&uwYMqbj*G@{7`k{?DAD+gepPQt}CkC(LsBkT;}= z>pi0kdy$#O{N-BFVn~lLkusHCmKyJdMKCTF(cy4sWAb#ML-)IN9-Z#iuM>Ac9p1qa zq?hY`oEWD2lBRnV?F_FOd6((ijmCKjj^j5Vdt3a`!SXQ!#IF4piR--HONv7iy zS87{U5Yh+kBiI`~jnbh-G|GM{mzK($QhRBscV($uR;m>+b4%rl((Kixa+OBpP|V26 z)ur~TQvcdgbA_h4R#V`Acqz`(T^dK&EiE;xGTwKA_hTU6MiXjNAU_1zji_kI6oGYQ z{-csKYd41SKFY6T{A-Xs9oQJa!&P=`Oa`zU!w`vw_!B`t9expXb;4AGsD#kn5VIf) zV!9Ey+;T`WY$hDRm|wewzjRgm1PzVJmkEV7C{Wa=P(&;`Ouf4IP{losTHvOmHr1gT zHbIu!azByA7){Qp;bHswv?zh`(ca z={-mpy!g+#I#qu?7wH{Gklb{xgi}Kj*av{|)0fZIDN{mN#Au1Uz?w6!k=&?qBX}fBJl4>^Q|v0M&)1Rmdb@J zoAY$(B&V_E$fs>;vBA~iBZ8-^1onN@n?ITlDRdQlMmJX16QKGb z-+R=TwUBp|yv~1@v2?#a1BiN#8u-dr$lFSoFc;zC6|P!QQghpFen!DQ>=} zG;>c=cy|+iY__bn#ny|3x=wWlQ#$MR;V#KHo|CFrZt7wQrz~cQEtblx{rY^m$^VLT zp?&v!mQ7y8>@%KlFYj@@%|WX8JG{SL+e?|jYy}PLGU`pN7>tpvy7l1MLmA!$Yk7?! z((_H>b4|do72I~XJri8grlxO2JNi{O5w4DT2b5xI#}F+tc{U|fZHnbFwLUgQH{=-T zfG%&Qxh`n$8Fta1In<>DpHh{C{{lI^NKPQcR8v8zX8L|UB}q1>1{FlU6K912n6!>8`|>bVnTBHf#V=~c7ga8b5$(Mr%3R! zFV8WQ^0J?L$%p?bFX+HVPhSL;m6!6vYyWCqYBL+;em|J2bB+K9=aU!nQ zRdo_VAU3%HMqo;5H?iGhF!iiP(rif|D^wj6*aRrD@RkmJ;aZeHI9|Gz?yPoGyA)Bwz$%I}u-R!JuBz`U6mu5%s{$616 z78YnsUT0tC8Qr`B&_zeQc&?OhF%>z5kC-@rKI%^#W91R?Pq9bI+hQ@dw5OPpL1JTe2q}#n zBL}6Fe23|cjS5I|9AYAw;s^APZXGYzwohEs-XbQ$-5Bga963-33R-puOR@h8C}?3ojXI^s7@8VWY(g_{Up4UCss=3gNQ*;;nrPU*}=N7 z`SZ;((%eOwJ6B4(Tlj4>i>}luvXI`q;mR#5dNJ1tna?(-dCb+VuKo7%;R2AS1yZ?; z=gWDP*t!G+ccFQg(%)Gr;oH=J-?}?Ux03W3v(}Zg!d*YmrmPfRnm6+987&RS@hrcT zWGP7~$xe&uVv%PS@G^a5;uE_5V-Ee*Esc%3lzmdaWx9HnPq&&2zt5)$ye-unm=X7f z7847O`C|qz zQlLfyDIXIYWaPz=sOm+$N8>;>_9^T$d$-6D*woQK55@)Bap3Ae@La6+3 zAM@Atb>tk#?O9oo)${T!QQ!;ZrtBZSSdB{@z94b?c51;A>7lWFip{*M#rpz_MVJ|k zLlwH@NHx7A(JEOIMQGu8-(MsFzdqVHWtK>kX;3QoA&QnLX9)$@&2z*|y-Z}vW!z#y zx{!M|=@1b*3k=<#I0PcQ3J@Dtkxcc%L?gRo>!3cb+fXAtnlsmt#TH<3&m3q14jtdG zE@ed7(1958DXerm6Fn=S$6JsVYHRq)bPA8ZJRN_Z96|DN?mbyg0~mf@wV|UHirgSj zE#@UszC$`|NcU%A>W}H<-zX<-;2?Ed^5c)`$nTXlgvhHGN%>MohHNPkwS=1-L9z%B zN?dxk1hOQ;A8j7F_*1US)cI7NF3~+(mIuKL)17iWA&#{#E`gN1m^S@R>GUq)@XTd& zkBQIW;YA!la;A0@n+T|Mk?FaJXKOe@_6QaUns{`0{uyx75;5OXDibp^kd-#{Rs8zg&K^|<)u>q3jl5dT;KB_{y#84}eM z0XVilmA*d{T$65=kd8Or3<*J=V<^@my+O2r44=LIP7vY8IUc(_l7w+>cox5lXC%-W zuKNAeUT{^o6}k2+1h{@Bq*NX(LLXoa#z-UYnBc`a`#`2Udh9sqh3 z<^KOZbK2XtyxV)NC$g^Rxk}Sd`7>U%pXAKXIca zzky@Gvj^pwpsoNNR0CY&;06;!F-bLw(?a|vGz4vkWjJ|(F@T=I^W6QV2_mrus)QsZ z9HG_7RpKtfQb$j%^+0s+s?;Npv268a{VEdx*)*osK{I>`q_K?hT*4)dXQmxq59ef5|hd_B@4#=;&`2U{1?*0O4-;_37|Ck z@T1>Klg#@buC%Aye=F04^jp~K-mj8$y-*j3OY|BgQ<%yY%3;8~*+J?)0VRLh5^$-H zP)vX%B_S7J?rQ*|uhf2nIRe%jq)z2k(vDMaj@ePAZA_)xDf>MQr^*ZID5RQsQX1e( z|NT}zoSI3b7SpMGjCPPF{Z^X<>P1OCl%9^3+L+4L5nxv0hH3Kvzfz4o)eq>QWn24_ zR2vZ3co=9PE#&|=>~jcDA_WHmkb==9%#lDowbV8s8z~>qm8zZk$M=!G7_;$agu+Sx zB29NCPWpXgX~mD1&!MzMz5G(oLyvef68bmIpL(@czMfbriXfFymmXm{{s_g%O`41u zFJb|DeLH|h;+45jA!Fn{F$wwyDdQ0THtl^;7Tb`f*S9%^?{vII6iXKA9Ga7ULtm@^ zfZ0l4NbnN5ef`%1m0nf3gOzX%VS3fqx51BQL3t39mcPk_Z_?HjD`jX-=`_EzP6tou ze~s>r6Mh3J-r^6RMbyTh&MM{+v8t?+)#QkgXon_a4YB7UF3nFR7Av(Bwi4!| z3_lYaDt*na+Ls5$(pz)~)BaM9(jZBH)m3^aoo)U8-MGF9-=)1P%s1BG>3sh0G*bls z^a7*$9U+j=?Mm=`J_n2JNPcRA#<86!;g7N3nxBH=vERU&pCcM0;yA>TeoA45TqVn& z>Pu2x8KJc2&*!9hlEU)G z#&c1*rB7cNA!#)>6=*Oc*GcJ;Zi?xg)G{HKr)`Z}aj zv)twbTTR-MV|Uw!X3*ZD`mXYMHrhA>JyU0$Q`-?|&luV=8lE`-Rvto^rp9fN-5J&1 zgs%sHm|i!sbK`E^yB=8IS?;NCEAL2McAnpZ^t*k_R${g+9$IQHC;N0U0acT!?q=J0 z|MGtwoIR+Uq}8L1v)c}8AD+2M=N^sC1DmxU*7v#0;j@n1@$gNDo3@#=b^GM@;VEsc z?Ooe79I*Alb1A;hO|jk3NNRRFa{S9|c2ez@luDeC*jk-%fZI%(-iwI8g|q`$(QN|* zbJpjhqkE2OY0B2Nql!BX#>Zs*V@$Ok4oRr%kpr<6ShMz?hU!Ocn0&eCKRXzyJQ`BE zb1J8svWRXNbej*io@8_O>YtTRtMy5fEVS4MX*Lrv1q^hd> zfhNH%|BJRK6i7Eb8V-%%s)^Xc^UOwdcCX)m7uSpP9g~o(Zu*Z3ihLHpCeu%T^zA)s*=vObBJm*~S9e+T_%fk$2qY>LzI& z2F*Q{-$7F^geOPZ!g<02Uuz9^x>)zLW?Lehv|;ev7PS}KjzMF4w7ZD%QmJdOcTx|# zf*yvKtBY{ZGZja{)?eLM9?T4kOiG6Cpra7@qZM*+(oJuIEFL7+VYj;tM-*1 zIETT1X1Myf3jas`-HbTpW?yLWKHs+bLfhwK+`OO|IWIdUKed%%3$ksDYPN6W>+Wmz z^MBI>_peWL}}ZuYHVuIx9<3lP4TZp~QoU^?qHjE>)yz2J$+OmxqlwBf~x zw#T;sWV4T3-&ant@MJ>|Cpy`_f@b8Y2Aj0`RJ)2ttN#&j@6Ny(C^ghAu{^@#C04+w z@Jt&#gS`?ObeMy&!8+5b&%n1CibU{g;cuL2Js)~cD$SJyG2>a5IU6>Ejw@+A%jbf* zN8*3yI3Ie6mA+A`4&mCIV-4q80k)05@9Sey-`UOQT4|AG^Z7!XR~~IR50gGCLMgC0 z^!~N%d@HeG^mj0iL%!_q!G%`m!;(0|r-VlcNAdzIUudl;g~NCV>c4G;^WYTN-ruw2 zyLO?2J?&N73KtpS>_s-u$F%tS5HdpcsTW)GQW|s_s;ISSSHUZ|#AYJFlMjOU3LClH z+!eOn<)Af$6xS%#m6lv(cBP>*v3Lao#HqzNTax1IKI^3TnptPrs)g5B{Pq%a?{GQy zuI`b-#IXWm9LW0p7BcP7Ugqv`UiPIWz-gVe zVK2M@cYm70hYj-XYqh&uYwl?+h1p!soYJ4DN66QbqcQ|h-16Ktp3ea}ZNZDYo%rst z@pnrRUr=layuj2#{LFDOB*j`KqvMsyA}*kH)r38#Of0k9Ya${49ELzm@F5(!x3x$k zL;_051DUO?_!5?$q#C|Mb1HXXN=cgw*nrLFCg%fOkx)vJ_c&tkZy~VkEGl~bHI|(7 zp$abseu~ua5b@|C<=^){58k)nUEu&>4P2=G-GaYa@O7MK{mtsrhxxdMD9ldaax66n zv#_E|H=XfhmWZCy{zkinR=+11(=UZOWq*P++8ygtiJprp`b+@{b9{eVZ}E;FbZZ9rf<_dwo!$&Ln9uvyxpWm50#B-2KH zGl;Pk;xlX^oovSda0vN8jG_B9Of$oAA}0(52f`s7(@Y0-B|8rTE3c9!?;-vk`}?%9Fv^tZjXkuI>85VLgaqAxrk>o4xnS5fg(!_>7zG(z2Q%Aj z_h3)k!}gpUCj0t+bzVdCQ2GZZ8co+>ww|J`5C0SPYCFo~Xa;@@JBc!tSzsf=^x5%S zwL-!1*{Y{*XRaVpm4Cu8MnfLIssI@UbB-2P8o&^E$g!Pb0^&oBBcwTs7dLNp-mtXZ z-!DzAOyf&*erPMbFsGYiOz~Jy?4Hv#t?IHnnB5G4+Hw6A$cVU@Z1~@AguTl#1qidy zPXg4TsU+88GOxK=8>IVgw(zc-t@+NIsYjv>rE`D1-I{NT-Hiw?<5vFy2+vstKPcN) z)DaIPUD2~daN|t4ivcv~i|>Rk-vCs8w`-S0NCw^Igps%vO+GpFoZ~gZn>msR zvoXqTO{S>}-QnwXig&Ue1?T(jpaDXmz0U5^Q4LaA@F;a9zph?NLt%Yiv($=&@!?Bs zMYCGFdhKpfPy4;p$NMtlRPJyW_`#%_icyTvsBBmh3cl2)U4oj7WiCN6_2M7OoPh>a zvz22NO9v=rVx-eV8ym25J$ok9jT7HK+#?%mmcZoE9s;vta0q+?nYpT)e#lp@22D>n zOoehU4~eX1V*5z8yf1`x=RWSsi(1H#b*KQOoE2Mj?4)JwMV2WGeHU6xSt zx4W$6?{~>qVJ#_L^kd%U>=zThD9|TA;@#bPpCwehi!}6zD~I>}fbxBhXnQV}01Qz% z+xG`nz@#G7PfQ1&x~i& zQ3OiCXH7Awx^ScZizPy$|4_(wXHDphlAT2B7y14pl-y7M{n+>4Qc}9;Ox~94q6uH9 z|4!rG>3W|fR6Lb5Y5y%z|GmL>m);T5n0JYRGy`@d)4Z@tUt|0Ovsd8WY`K?RI7e;mvyHv#s5lQQbK_fW`n9b^!WQ9MAY0kT=z-|UXw>bBRr#SL?BblYFM zOYd~s+uZ_UFZKL89&mD}Meg*7rRcpde3xT`AbdRKftYL8U_M&Kax?-@0>X%a03cUg zOQ#5~^vvCUEh-pX&jq%KByJ66K$NFJ4WfoWq;F1OeZQ77hHl`fp&O(^{1%}LLVc9J zl7GyGr^XZiki>r>$(uJ|Y)PzZl)p$iJ36b^9*~Q^^+9}AZ+LF6ozd%CcV@4h(_6i~ zS6RLtxC?q!i-4qS20_>u==MTgP+tx!VtAvMuVqM8OIjC||4eazx>ogiHVws8r~C}z z-*NF|sl3$}{7;m=1N&KE4+H)3c)@673yNDSk1o))F9+^jYP?`MPKa-)bcG6OSa2O$ z&PwOT(!EXQ8+S>X{l-ar*StlR8-Gj-#=Gbh-mdBmf85L6_r~g8yT7;kC%yXSuE6e5 zWv?InP?!9qm*%gm&fHd=gOZSUYVAVgnbQkjQ$2a9ezIQ4Jkyd)wQYsoT*jv=;GnNm zKEEq#PPjATwtMgefLM~ z`N;-_twazgXW!0#hC}Y36Z@;xLNi|l#UxlOeJl8;)E7=L9Q*}H{7*BnL_E_Ycm_AW z4(nIbXPZgbIZIJ6O^UE#EGaIsZn#^F8a%EuTkMQ;ZH1g4edkq8< zIpTuFe6eV`=J)%=NkU4jpI6WMG*6S}JwosD{Ot|acH^KuJg9W>jf3GWgLcE92j8H2 z<)Ga*sN4hI|6X{dE^5Ra5s^R|TZ+`dMc?Os(bY7m zqJvwoC8Vse9r3DqDk0KjPrF(k@iWLk!l)1=8SM465A6!dg~`MN2Mu<~)$Ch>ms{Idh4$zT zIIzD~+Zu_fn>i(3{$sj>S&UQ*qr7>s7bqhw>rCDg#|#}Aq*9=OE|4|>8+bz7v4SBF z^rsJLvZj(L$=|@|yh|lRsnMR&i>Qvoe(>i@>5EjFuPqbak@-S<=tz=HFDV@0xglR9 zVqxoqe95gMmlIJA8O3{KVd*zoL*%TI*Haas?orZ8GCf&OzL&FNsJ~j8EfLT`ZX4?lN8M~_?&;Q^ z>|WR@KP4WGzEJ8%Sk~)yu+N7{(1w8_rfU1k8Q|QeS?veA&Db(<_)E|e6muN)o$n}g zyV1#8kIJwtA-Dc~v1#Y#d}*3%s2-Z;_e-IBhm$iVdGsZ!q2#a4G1-?YZzdip8S zU|JjNNXCnb8W0sFT)7#otSe4y%k1V^ZL`}5yIBEw4Qyg_ib##zChc>=O$u|)wM{T^ z@3VGmi|YDo`*Cz6cT24G0nRwt;LPwFoN(-(t-9iVAVmMrvBUlzRx-p2+WdHWi&}u3 zVd!;uSIMP_5-v&X(xmZ{q^>HQHy8|jwd&XRTW05A7x0jS&*q2Ic7Y1dgS`sfHSx>$ zTJXxf!lZ2M@ll%v>n2*;P-9~SD8m2c%jd93X{#dQ65jn@Y<$9X9(VQ%GtnClO&T3Kb zNV#d9t-Xp?WFNlD?5A9D;Q@XdGQ9108ABf25Ao@u72IzXA+7w-Ph`4g9)J|Bu=X++ zt+MF*tB`PFmzTIlN&N>_PIO1lyb4DhzNhG0gfMi~C=(uLQaHqrvZ)&udjs5+cSk_3 ze=Mj@_yDU9caB649aUA=XxlG8o%N{E2jKuS6VVg=D)yob`GRQ5`p_0cyZC$L?`xcY z?CkIJ*N2@|;iio4t;YKHB4!TrGCPIyLY|By&tRV0sb*dyzoVUE!nIs(-sV+ju3;X6 z1jV*8Z7t~^9ExLgemUTB#l4K3opT-S8fOs}4BFrQlb+FH`~gd1K7Nx`vK*XwodvVe zxAD5102rP>5pPTize0DHV9@Polfuu#vp^rzeL5Jz?^Zc`+Zwj*Yb@T4bYH@QH0n^K zI^60xPb?003+IWLidimz!x(kw`eYLBGA0E>tPFz?af3l0&c30;lSNWII-1=k8WRM;l$Y3^y`Of7*dE!7g5nH+~wd} zVz1K|blT-q{xZT>lTU^{xlb8fIv&G2_%bsXx9Dv8AX}L~pxXC&b7Q>_9?!N;wV^f-* zLm>n*0@iI5914QWml-;O4WUrOaJPnUs0X4~{3^yI2yL`3!^D>CFrCb;Di=M*;_a!%4c=3%E^NcRN z5r?;s6hU)M@l{B*azM#pR5605<$kpn%``+ZiJ0Uj$&&;;#rc59;K{|#fI5KnJiVhB zLSov9j*wqxs1;&_`9#1{tp7@H0XCXJD9wpfV(WsVN5lQxDEZ0(1Wq!z$1pagxaJmb zZjak*ggyVn^Q~C*3AM#~lbOE_Lp9#Rj1p)v*&0BSOPvMrSJp?iAa3K86{>p7b1z6W8;(O1G_ zejIS;x*-f2(E&6}ReDhnGKFN*u!MwB+@y5TnG+sOV>w_W+=k&MX(1eRPhu7$I1W#;RXVBuGyeWXe-HdUSrx+58rl)u z_wmC(n18maQ+`6>`F(PGfp&gMAI)+f&|mn($#|AHqaXU!6Yub@x}>wp@fWX_gq-|A zTkGv*zIufVPBosMm{>5HD=BbzmJjO6V7JzfzRLj8jo}`_P$>TP7?voKHLI1mFLG^} z5|3NZQ#sa%e&m1Uq#-vsU^*oYg~?G(mQVA*_QRSqja5}cA)nb{%zfHMUu18$Rask| zU7J2uI{)jg^fB50i2c3J-(OFYeaZhgGyReEKT4~zEmh&lcy09l% zktKs7vdcgZr%6j8)nV9h|0Zk+TV(ci)=Unqu`98i^rwnL5u*6v+5Vpi{>mQoJg%?} zv|P`OjDnunUA-J_24cUv+@h-pU&(V~rFfTpbcMO6R$$Y#g6?F72x_DHKM)%^;z|lV z&HG>TVK0bM+OAuwNuqWys94@E)+_CY;z2zJTz>H*u6Y=!1hR?fRcl8~2Bw zV86yC+HvL2tgg|vVcnc%94sluMEFN%FFD)6whxebX@CW?dG?D~oO{gKfWI28qU0cM zjg$p+mKfrE*%_fG4`D|VMyV#39Ksplcm2#eJxpaB^ptvwj#IxyzVFn3@WO$Y+6s{- zIc#**&v2b0;ScRp-&3Za42-@GTd*r{vMhw7Fp)Ljmro&DTFGus>7 zw}p+c0RYL{Y&Q^d-YnkTt8pVbF^A28#fsIYAOeY#P%o-z^vmW#J7KLjs5}zVmwIZSEFE!i7gVx#@zZ%q2YnyE zWN*tioWdZaz=Zm$enCO(<736YXwQEOC6=(Z%6iKT2#TfRtK1B@J03`WD*?gT?o zRJxu?*yEbB#lkE%E8kvfc0F!d`H(_iZVwDqC%NriTQZzIh|_*2ar4`Dl9XKCEBNnuBE<7n#kM-$&fgE65RQE~yDDaP zc|FYV=t`?vO)lDOJ$Nf^iyq*<=2kMQh*Ar-@>cB1xOkggajW5P0)KsyMppi!#th5? zgt2TRFS^~r@1wUNHjwKt$XL#O8{FxlbGe_hVq(52ep>*>%_Jv-Z{ZL?)KbC(szA`g zoQ=1o^g%url?Mc=(S*dy5hN;=p1nNb{c6YBmf*c6Zv z!^*iVR4o=+(0 zcg;g+GUaZ+)1!X@CtTe-?lebC@Z&qp?!Qw!-8%{873Vp+%Xoi1?@4D$r{AuXdCti+ zIQ93vwvzj88}-^%^wi~C8jUOHyEwU)RjC|awqoooLJ`rTWH;uQY4$R2d6#ng)Mu$x zfYPh?`gr!y0BFQb!cEY@9))nlJB#FqS$x0KT6sIA>x%4R(?zaY=5>{D5DfYLYlYub zpbwKs;?C{rIXh`Hu7E4cm8o3mZ%$$A7<2o}B%KPT6cl0GOfRo+AcFG=KSb&CFs9RW_V5g6cHK&&Zzi*MPB53`b3u<{Y1lzm{t10aUVGRZ>QlS8sy=FLaU zy^+}KN#=Wxk}KCw_wgF818RI#9+U~o7pB7@~U|;0i+jP4IcP`uH26MUUp1M*4 zUuMw`Tfv@14(r4=FF-R%a>!}7;IB4+m}w?&aE=1;2J4~jvLUV2u9)9r@y!e+`u{LE z*sJhmQ%idmQakAOR908i3#9h}Sgb3<>ulAqtsWlr_o@EA)cHrw-xtUJ@kZbu1%Kb! z-_!S7`|wj~s@?pL|MK_0rMYbBe@yfD27mAO_f~&z@%P`Pb=brI=$UZe)Q7(x`p3y> zs!9IGuKxaR8a31Z_`JUt{XI=|kPrVRt=k{d`rME{PD{U>?o;gG@3*8;2lyXp#g6jf z`_mVXW&E$R(_i)e#}@vchWGX1G{>}!X%E%-_@)VOzmsM$*GDZ#f3*7_2m1S${XOl> z^t)OgGwknaIPKRo{9@!^oSRl~ITh0rt9~nWY3T$di$jz)khq-` z+FygVXQUqOtyA!DOFmqGV-a)DGyPv+&a>%=PqYx9eld@Rx4yd1KO7GI<%Wx!{x+* z7;-u}Aj#ub5C$B~5WGJ#jdDT0maRMIs(1-$v@EvEsTOnn_E%{Y4RrAxuUh!SS8+$i zGbdvjwsl!MQAKK>5^9&woX_L2r=0_2Is&YIP~+RXbX{L4_k*e18@6+BQQ^ixBtt!l znZag@LdDmG9V^>>Hf%)gpzJ#&wYBUNN?7va+ zR!*=JwFPzcv0T5&@fLz<_O^<_-BW{YiXZOzeD}k$`yRVh`b{;#p#s2vb-u6+h=cP7 z?O`vCcLE0daRbDdKT$o1?i~m(qzo|#!xJ92;H1Y5VNb-2fp()K>hmQxfR$RmgDi$k z``vrU6d-VR-aTle*D)pBIcwDmXR`#KPG|`iX>=-$s6E)Sjra@LE0`K$R>wx(rk3z- z$3WFsH&!w|gZZUU3Ku_OwJ40ElSWpRzo;YUUSBE9L4M&IE0t^5s&N1~85;b!+7DrK z-U)*Z4+yM78rjns!Wz_hx4fSbp|5z8Z77_Eb9UxFIdguJ&NRIt=iWeh7J>{1T0kHU z86@*cx>%p%`a@wEEwtTAgIIPQ7-gm zHtuG$z{s3#!-s+pXlv$>cMLFGEr_KbE&)?GgVm0q_LG8L5cP} zR{Ns$K3b!3P@BSE50s+%=L`KD-3f^!gb;T@AgHi>m`u*qLJR&IhG>oIE=XG-MoPQ_ zPL8!@KTE$jx9&xA&%KB=En5StV=uJZi?vWYX;{+Z2z5c!C;U5Em|#*sDmrsQh$E1E zFDD^q(^WG#eK1UlkoGa`CcnFsH&g)L|9RxSFKnvTXjr@adttL^aKN=uX48nt4;@Q} zz#9V(Lkd|nEa<>`8>xK|mFAE;z!z4RneH|e?++elgtS1RWG)cOu!Vm&v3-Lhn0NJ< zn>@*cc#6qEzoDb@yR~RV@r&4qSS*tmBRs~y8R&+i1I@)|4$jvsDVz$_%R{(G0gm~v zzi41N4*#vbs9xx{4keQ6&*n)9Qbi&vg%<5O%#!khT_g_+0`Gu}5aT0{mH0V{G_*{f`W0+m*G^_iC+|)`0NjP#7(U=%8XId=lJ;-nNvtb8+>S8(tjA;m^Sn z=o?9$puFpb7jM?s6SY|wad9^^gbuFJe91+*M(qq-_OCBl%Udsj1@qZpUVviqWSbJP zmeDeR3XBQFiCfG0O1{w2Ie)a^+&|L0**>PxZ2ER27=$h0%2NqX0oo_!(81H2Iyiep zIh46bTaP7XC$KKyxXLA+0f!C~uExBg1KR{32#ZkKDmH8;?8N8c7>sl5%--xl_ttVP zrY;qWvwsBQ{|sP>UFvEk$D@9um9CUW?(NL1FQtn%FsNDyGj_j_XKY0Y-k)x z2V>S#mk!v{a;pmE0>f2-N_N|2)VRJ%bwFGnkk@W8o>!0OUx!!Uz7U&j;Jm{9C2PnNHQpx0klKQ2&^W4 zXZG{oS@JWU5C4u?D5@5!YHaGF0!JROix`o2sXNHD6QsPA?cV6>0j3xk81UR3%wgeL z^CVLECn*9uLpJ6(02IpA40ScT22+C5keRtPEDxTzg}~L5TARacCKVe#i#{QW0Ll{863i|b&{`Ih;Bfn#mJ!GC;EWCb z>l5}#7IV?i&`41YfL*D@^C4dJ7(^uS%sNdFXwr6}f6U}{s@x&+d6_*=+y4_H`Vw3@ z8jJw4yvq+p7e)3gE$8Q>Tnx;ovj8B+(>ORKvzUZ)twwUm2KvL3cHmoMKox^|)DAvP zlbwt~lSnd-q&SbfZBM*bOe*tm!$hW z+fztBvbmYf<|Yeta`rIob=9?~Wnmp1$n7WGdimONoKR9|IFcoZu1x}RVRq;oFC6$a zqS8$O6-2DAzexaTWiN}q+Q@DIA`}@35EMhNq3>Y0#X8O!JIlu`I+lH?!{F87!t}_RIhP`3Gvei1h*Y#$3#Z zLrDoQMC@MN@f@Kr5FF$#5m|zDA4=Ni%XhGp`X9w_H?y#ekgW@)cQzUfBxiEiHGwT1 zJDBwQ{)`mXO%~V7CdB9M8vh1iQBqKz<6n%u=`Lk9#6Ji#tnx)S;(1qSHqM7TJy43% z9ZMx+TEb71_J^@+LRkj)(#$Yws09N;m7W*mp=cz67;`O+CX*d~4MJ>NdeC98mCmlm zAi>#}CBD82gl&%tAAr8ds@e9djuX^pSc(r99Spn)K7x*%oTm0lQAhRt_BQK6%v zA3wneLuHhb+JJXl^%*EgEe0ZNMeb6M>guWW^gLOzv~W@xf*~r0$`0RhHJ~NLB;qQI zQxm#_?HfTqmaLmwKjcY&gLa}GYP&wh8D;$_9jYH1?34BlHiqQJnM*q;91*t0x{cnj zjbL#PSz4h=>R9b_IiMPeT|YgNbA1p&ZPN09q#UqPZF5_|&X`H*A-*^b&rNa$&|YBA z#!@Sm53?Xb)%3G=SX~Kb!e1X(%l<-7zRLC5P71&_x2+sf%Q zQ=f~zA_XHYNiyq?*O69!s+aPY{76qpewjDp_2~DxOX3UEdx@{eJ;|cROCPVN>Y(~o zf2b{6`#dB)R_j#?dC@^>snRCTc2tLk%|0^MTcDXf?DxNgLGYF6 ze&g5BYwI)4>4*TNf$w#Vk#eD4OjL~)E%9k7DV8i*GFHjZ^jlQvM14E&scfu;f~2vw z(pM8&UV&Kkp87?)cM_fRP>+hVsl1_G{Q5{fLRk~~O%h*~EPDZ#P+x21`>(zh%s@`? zR?w$ZtnOpAl$C@p8@cE>?9!KB&mbLfpE|8kNTzMTiS`f zhyFz=sl_gHm)SKoi)5jJ_p%ha()vss4Pb(?q$$c*@Hb5Qqf%I*MI&QupQh++zt+!;Y{QOhDfmkIZmilX)1ex5K%f5bCq>R@?9zqewDGUA!ipf8H zJC0ps72D0pT0Wn624Cp(3DTyejNN@n>Qg_mUNdG~LJqZ%hI!{}rhTbknVPB83jAsY zL4uFBq=!`MWx+PRK3?mw)}p_X&MBVEcxs}CZ0G~F;$u*+SW1zei_+-JUf-+2UVQ4q z8gJD|Ind$!m#4qPd;7$wjWF9M-qQ*eVTF{^_vc5(Y{-9~LK`Wmn{rm0HDmOh>M;hl z`YrutW{i)gR_QGEzcemlWs`&Ypwbq`F3p3C6j0tfkVon&VwQSXv0T7P+Bai8nAQfn zDCV}t&5zxVWRtk#e1D9$Uj2Z}TlIn<4yg9;ClSW|1|>4$#8Nh02<#9Z@L?8d!edxT zf`~LSG6dIm*}9XY4CIwGNH_#$)IN z_)%X|z8__BVDx(`X<4<=U6Wygf6F(5BKnoKYJH*g73fgiH9s_3zBIl{tz4K>ywqG1 z)?~Jfmp$2+r8@WWcpBfmRd85 zwvlY?%Szq-_r6V=kV~f0cSy_x|Dvsw&eukEZ|VVh*N>R&0=-|Na5gb~9qwL9G1d>F z3+558=fqLa_-w$>qEpll((zGG3h(l^@=fnXX_-|M-i?jCucgmJ5JDgL(meF~wN~&o zmY?QcMq^4o8j~Ux)9Kqm-^0Quz_8Cjw1`$J^7k#C2zxy~2RZ<{W-Nckq0(2rpU2Bo z*}HF4bLg`8iG7mkefRCi7>PM>5%|uC&Rq z_?wYo3hV*y5_U|fZLRlaDr{BZ=0G`iwZ)xz>uEczyWMpms2bS2b3f_Ec80-W@#kt> z(*ce7qTA8U{alMX@`#fyQ=c^80S%G}BE39!^otsO6x7c3HB2}(8 zTLzdSn@azMZoB)f`vDtZtYTczHo1let?MDHUuy$bSSJcEC}}i5W}B|HC+soY6AZZO zU)hdNq@ky6 z&tW{fVf=9y_okJevyMOEI<+myy>Izb&T{KE!6uo)ej zc1Ne;5yfqJs_Xi*b^ggFFL6yLxKg(370dqKx=(T=Cmcb!?XIPx)V-VQ{++A7!rCv#dD;|A*WhTND-*o^Z&g)Cfdi0;2FJkmIniZW zbgE=>2mJi(tJwPI7s|SLMh(mWw2Rg=l=mi^Ynf&7bX7*w?HNX%!oN`|{yns*ld9zQMc*Ka9BA! zD7gJ$fywXBB|<<52Ib_BC@BXct_giru~Y8x(}X#QV0TNL)`&Dtdv+z6 zO3auy@exvw@kw+fGKz)W=v}m7cQk~T!eKNGG@!lc8&F;@{52k|hJXjzl2dtmUnWKi zqH}D$tW*ZA=R_LzdRIz$B7|K1_m;-+MY&_3Je z37r80R;teE4EfHer877N7%1;?Q5kHW3m4KA0~5O9I^PwUTWoz|3o^04FAn{q-`}0T z2kR5Gn%|GAo_QHe7-KxnDPSI4BxiH=`Bg`b_fEQA=Ift0(tdNK-FKwjdt`|)@(M!9 z>LWd`P(7g4N?_!}^jTYy4Q9g?pJSVN0O}8r$-!b(pLq}}-;EwHF=BHf@*p;N;1Lvh z@oy2fbOyhN)43EDB!CROHN5g0L(Z~pEvh3KyEx;PX50tA!4mj4R?-u#82|Fy89OgS z5{U{M{=zr<;v5c%%eZqgjtEk&`we1aVTFg*!j`TKBR@9`sdl7(aAkGC3hl$qaDdwq z_9>7az<1^txVs!9Hen8oREAu%LkjPr%=})^Q-z{&(j5SKhO&AToi&9tz(1Xr?&UL{ zQc90d&iLb$y{}KWh?<)itdhF`OB6M=uV~A&zhymU+G)M#Au3cmaB}eZr+}4))3UVd z^zKAxdQCd-IIr0Cx;>d~18z(1tz^kEA2j35aes7ubaHkJOLq&aZ8wNF81XamFHG5~ zC_5u_*C$6qnh=7JOo(_~%VXHFU~OT{o+0rcV=lS7>YyEI7r zeRRxIW>giY@7K^sNtT|jSeg_JHCEm6E+d3ezOx@nFC}{ia{61j;yfBE z0G$L({09P0eanK=-l8^v8~W~uT{;q6GLl?6lDqv~XkPn&@0aM#cgX{p0}a=x()6d_ zvGBL=;Nj>UbHC;SGc)X&_~~~oSjKhx(6ylil$~1-2_W6`iE}U zNPi|qPq@Eo;d_?p)`UQs*62n6aJ1Ycm1n{D>qzp}2;%NAcy}c8-bhaCabM-#??#em z(s$2~WL_A_VgCz#n|^odXmT39RQPq)Xy)wEoE*}jBa1%{5i^|pKAK%Vnv()<>~0;+ zt{C;!iKt$H8oPlDP$=Kx6glET2`Ohk*D1-E!&aVlc4%iwW_@O8KXSavzJz{lA}F?>}$J%K^H%Z;u3j9|6z2J!0>TWU*tE0vrli z4&M=1#C9vr!h*|UpA}&=xQhGp)!NbE;ZeR?J8F-Oe(0;8NA@(X^8!v_RRsw1RcVB; zt{e@n&{tQE+BKE0(42~s_t^W8auH%t+yJH}{BtyTUupk2Y73^MCHSM$$?*}GrlNUawwTE)eaiRo3!B_YaK3yEY%R$w?dwd$TQSQFX< zVQ_coo(QSQ-E?if1u5iUfU-2aP~0=RGyZ_%_CHA7BU?a!5uqpwV676ibD_;ir!)WM zR*^~0sWIe?*Anm&MRGB1pABNQ^KSv_EF1EDnS5XQ|CR5;G~Wv(2$vwj9!m%8SExfp zCn5DiEV075TcxiZXFI{(nFNrKs~^1Rf-DdxQ@@C(!v4yl#Uzm@6`puWrkI6}XLBz_ z1AT?&9KzTQS8V~ZH`pv)ENDH(?+HfkjE_hR>5^inj?%gpmrC)r3(K=xIZTe@59u9h zSqNH+N%0y>E=!|+pw7!A7pA|EgX`Cs=`WOC_3Nbc*NN$`ult<7#v9-w`JDfCIKPs( zCOOdmI>3Lmj}Pzd!@KzK&OVH?CpFpHhiCgRIw+Jf?8B244!eCAa1H7hbfp(*nMaM&Is83N2ISJp@%nq#^2U4k7ztXV6O!Q1%=TbS6dq7nIRrBUe$_|? z8>v|CqhT>+M4o%b3B-aJFR5VCv$P2#2w=ddrf2Epofy@O#CW=bgZbdu^**W++T~xw zJ)s3mas}uX@(^zV-bN~s^_&b*HK;QAw@N$g8^CW$n?%Y1|Arr)w*nMaauAQDCgpj0 zI%q5Z1$n2`4|7TUy#McCi!&3seJE{L@;Q;J3Bh^;VwPb2ZeYugNMP^&qOw+mdi<~PB~Y6*jowN}?zTf)>;+Nhsu3>p%YEk4Z- zH(`f6w>4-<0M$#a9Zr9H)OM4cTK_{{Sg%QXttakn>FM`QWVb^(VYO{5XTjGjL>MIv zhzuS#Pz$Y1Cp8KX0KC*iwC#vXqDvJLp@Mmch4MUA&4y=l5}|(($ph8uOuIh-;YRb1 zss8@!^v8LekbvFrOe_s$sThCld*;m%LvO$seeLl1;qErSb@#8%4|s;VKW+p%=4bg) z;4&YX%#U{8fpb~h?D|>FRSz$OoXcwV;eQHaq7keX3XXj{D9X7t%*!_udu*W#9;J|?M|dsw8a~`qxw9kf==dt=KL(yPoQQTPJzgD+`>xyuh_Cr(tL~q9wAG zTk|JcFz$%yKJvSji{Z+y_!HQgeUW;}H3iYl#Fy=qKf%HaZa>ilk5Si0PjulgdEWLq zlZ0_5B|a^F^tzgmb;Q~|Tz9{2#mdw4?q;r)uVZMU6w+L)zlj)qaV^hV(iFjUucKz9 zSY&xLOsnr9tp&>sWvL~tCYHHOx(yCoY ze|(dn!*dg9e!9>V9wLUP{g&(Lg)V%7CnpE_rSS0+UGxh5^(|_0yiM$JxFFKTjJI?6 ze4xMh=l*$uYW6;NA3}$U&%&SZdm!9nf_?e!^i>9jJHj-hgu#ixi)aPbiI@$xmwHU& z*~4$K62^EbL&OOor8`k!OEkoYOLw5-OM`SUs2gO6_%xKFS=iwI4_|I3e!o0)PX-yy zVNY1*{vRNxPT1g56mE6X@Cn$3QR)+ z%o)7RXO!O#1^9jp&zM%Q(>On?)Xl!FSe(P&tpMurwsVcW4XK`2QC@5P6*jh4;(~?) z$)m`nlczhNzB4V>T##E?t`JsS)PnP%;%49}?5^1BWjdO*vq|<}AKQXtSAYMczbF2F zvH3@nzlZB%&SO|As(&B$QNOdQmreruv!WMK2?vkOh6{}2w-EJ#@MEA>^&=;I)BQB7 z^+_NBC}DcVt+A*W-`1RyGywN{b*}sGm26>G9lppC- zM?oB!A>wh@-p%mi8p;hsc}$n;T~mIW!W<~W2CISHU4rq{hmI_zp?&K9CY9C)ams|& zWnlY&xalOBs_%UXE}IrC26^Gfj)WC=cJvQgv^lx{Dnvn-H!Sv=A+$|iK3Jiuu_nst zIG*Iv?8@MhtX-OQ{vKVDEmeiLNsF)nf_#yyTDF+cpcPae3$>g_wHHQgbzbWIn&d+;?^Vc+J9hUb6(GUdKKy#-Pcz5prgQ*oQsP zEavNGZqxEiH^Vjqq0T7IWZmnBu^Y1bp}m)vwJ$h4}GcmTgxFOLhp=Ghq(bc&T`YX1|xUN$xj|y&tP$8#XO-7@@7fB|0ds z)lJQRrc^_@C`LnI6gwzWPX2BJAvzcXw`m1yV0%d4X^?(p-jzT#rzTb1akAjx z)qFbZ9t(yTySe~7z@TzWfS6-X35xNBaJq#D0^Yod!;^qyI}ng~HgmbHFUYj#xjc z?mU$}59B{u)12Ol59`;cU*7K-D?okbYZiZp1qz2kH0)eLXK=Z233uYL^Kr>yo+t2I zW8+G1y@qpS0Pa1W>tDmQ_UjnWfwVA+yA4PR9$)O-FS%UsEAGEm2rR+UhiM*$o0xt< z085h-7-cDJ4+{mkFeL(tDT`Jvk`X|pWPS1{eju`+twnR`J(3!-&En@U?sYvNOd{Ed zF(9=#C(^2_{#P81X33|y9zdlxxR7ID{#1vJT;+>q{{@C;8-3BU6Hb}hf{%^erB*C- zh{4sj-{1*y1dH)J^9@>0znCo~{sg_tE_ef?MLTlrgD@>DxzP;9zv6!!0ZpiGh>}Bt ztNF5QOSq%MAM6`UgMPy7IXE4{Vn4U!HN3BlBSRL<5Ye?)zmk|abh{9v4TO$$_7jlb zNAV_dM-w`j5Sx3-3f;D((yoW!{!2mTFmW?@qL`#*lde-piYCg7omaR`Drgm=gi53h zO?F6BLPpTQ?k$IzQ!W6}!&=R`wuYo0t>lKL<^pMZT)t^ib6rz&)Ye_sGP$*-r7h~| zozk;of2#|-c1paM3dRj{e>zI;FcK(DD1)|#*ywnT@F-{kDqxu;PltGC1e{R!&Sx)F zpg{^?scX9ETDK~))ltu?s8sdr>GU{bkK=k^3eXVK5J19zIQ#puZDQN!WxT@J!4Rr- zj~^HQ`Z#;^I7TFNj~!>fI?)bSP_2t zu=etI&0Phb^h%x^yCc63KIy&hSe9q@YTjN)s%w=B*WW*Zj|#~V+{o|!K&ty?_O%0Z z8RKwxNBUsi1SBh%q)1(rotd_ityE59#?II8;=J4EiVC84G7V^pxy}MhDhbko6yIyA zKODHq`)ZiVpr+5^8M+=SU^=h1$F_pBq;&rT4w(5>ER44k5kweTOJf)U_fvZKIK=ve=VpPJ)hngdIN6 za@X@e*>Biq&xzRViP7cpO!C}@C^6n}*8)$D{^U+lCK_RgZ$U-4kFHQ@Xq#Y>| z&h-987pM^=N#^@mx4Z3^V0ILKs^_w3!?*`mhu8q)bwBs?5*Pk z7&wI|GDyKfR&R^^ofEyf^=0-SeEB|U{`QeCUnAyNJIsC74hv(HS_&AbFLe{gYEfW| z1NW=IejNn(?27PMkijab3?2hr;pGOBKLSn2?pk~hgG&bfP1uEJbn;xys$gROr+w*X zECjekA+J|6mzajYmPfshnfpOxk8sY74)x%~ohJidp%gaUCC)B&`gReM38zoCqgFj3 zYbHk0zJ;wylTU;ecLp8gKbj_Eoti;R?Y6?x-D$b%$>w{h4-_sP^ zn{%<_?6qgO@H%RKIoHMm{(WM$vpE=5b0U<%iN=3A!r}>Vo(|g&1H01?+a5SUnjzay z(3uNR>(Iq&(aUzQ7Q>q;7~*Q-ngX+haTGsBqTsHq9W*gt58ZBQXcvd-p`SVop)jfo zJ`oTx9d5+a8_jf0x9x2QrrTtEso;@%tee_PF@|jjez9DK)Hgs05_d4>b0v1=lUG5bl6BsReHB*4Sgs! z)%s+a00DcS^Sn=M0N=%9MG)?I2qMF40*ZGJ!%F@qX^YB-2$@iedV0QR{43RrT5`;R zzRHVFK-$y-hdpDZ6iqXw@`4xg)&k7#i&!=&Uc*1-?szR_mFo3Bdw4h56F-UA`BKA`VFNr^LNJ(sv~G{HC$qQymT%%Yk>|9C;goN*y7(6%y}>J7jdF^}T=rs6;lIuuMZe z*OH{R>bY}R<>XW%9COj9reWL*Jp$i3xztwSt36r5qfqs|Z#y&%Ti7MBE;3!&0E41w zFklDf)tQ)}FMRBXatt|_GUy^@ftl7sb7_S7MZnrd*=#2FfE$ZUlKn6Q3|<`A@Ix>n zbR$WrzGoN>w%z$aE!%^5m0Ncc(EEH0O=i9h*$63-9r@(5$CDV6FVhlh~^I; zf;tKERyr#h*#Z;^qg2fXrUwA)hReWVk&FjC_%fx@f5FY()mr$F^X{zcSB3E0r_#Ci zx~dD$11D>5swE_?8HH#d3el7AtABW7za@kukrLCtiO&K|<4?$llYIzSA7@E)l6Ey< zY@Cm&X~tEbfYehAoPQfi)^ap>;}z8JjgO46m}p~%e?-0-UlJ<{}7 z4;3XXO_4_pq`pE4tVj%IKCWZC#K|b07WD?TD6ujm$4p?_s&45%g2QR)-);O#hF*sk zRB1w~%k|XMtvuO8XukoYj~b?KY&chiu9Jzi@>5zi7jmvX!FLf=p7>XA_c4o5NGJ_Z zp{algqvFEtsxjFQwvDPT{0^N5c%-DSsv&(H4d}C@r)SoU+Owlq@hGGJV613c4#JQ2 zb0@C>h^7$teF0+)*SX0Sd9RyzW`OgxwyG81K{17mJbY#u)WcC=<3BqS{3vvHF-!QF zv75s1M!^8xNOLa?16CAQK0mYzE_Al=JZI;_q6&i^nDNtDjuwZ(dYG0l@bo!V$kP-2 z%d*+1#`)lb=Q(%9c~CU0>_1@*e~>5J0DFw^uehE%15K^q4}rbNDG{6wJl?YKW4+LWs)mD;@XlW70%Gv0x;PEtd)JjuB77nj&kjI}{sIOiJ*oMEeLnLA zJBE#R>^>J99v%wfI>sFd{&@ESXCGYPYW~Ud=NHOuIEN35L+ubd6a()lbEg#s@`J(B zQ-C{=-}@&!_cAQKS59WPMZaka#v5%z`KQUKRD^>dC?VZun)4oDg#VKiPCnV$DJQ#{ zMz@sE#as=!#;_9h&+ifUUCQ8HaM8)^%?o!dW;(-|x`fybd-K(cUH10H&e);b0-p2Y z#TG9z?g79U9mi&Lv1N&HnYvPKvO@^Y>D(rJqJ?!#&`h(Omen`!r-)79M(m^jOKZ4O z^JWC?Bz?=lkWu(8JI=lsu#zk``v$%CRq~&QS1p7$oFu2i5ISA$S2KLG6I8iJN4^7K z$kS7SlUrf4cZS}kr_o28N*~bnsG(;GlKtlxTrb6--6x-wHxcpNb zsq!S3p8ExRfgSD|0|`oq>YrWctjD^oCnCO-{<@X8Un*X40+D+E%cr^#K)GoldjQ1z za89Tub;Xvzb#xU5={KAr>5c~tZ&aT!j4cR5Y};_AFJ~I-{8al&46{`rOl#$rgjw(+ zQyyn4EH|1l2G;{VU@>_343|A_0v@Azbb*8hB8gZc=oiYW;38IzjedLbhIbWHQ$ZLd zsOZ#e0gVB`5i*WhvK!&Z&E<^<*jn!>S@~7e1XM!$PI?Ny#1yA8EEO@8_-_C%RfBWP zL(3b-l=&KqAWT%O3~SSO-T)B3Knxk@$+PLa!E~2I!n*3ZRHahJ8BLg%rt!>eLK(~|ST9mBjtD=NUecywJjgIDSw2?vSAVLtDH&Jm z_69nYJB$5iu)ipRj{bwp=g=vQsCw43{Lexgz6D=#U2f}gQ)3gHE@5G*faXclgt7rb z?ium){%QMj^3FUeo-n65YXH_(L)Zb$shQV2uXdM`>t{*Z24UegZoZowP02J9GvI=Q z%AcumwTI+%+|wHBgP{eBJ`)SU3YP^_h`Zc4CQM6Az!70A@6q!J6G1m|aukyjHMeXv z7p`OA#4tX&mh4cjHJgP`^Ke+mv%5iNUz&u!G`K%V1mjW{;h=Z{)=EKJ)g9jvJ-~=+ zg`&en>}EqPh|Md5bSsz6|=Es`#6g_^lLc#9f`@n8iE-ayYw>FR_dJnW5x@56b3Q$rEKQv=?{U}v43omB3 zQC2xvwtk``eqb0V5M+=yASzW7sFzziU`<1zp%!sk8SE65 zXaI1x#n_~%HdQD~bq%x+<}?FRNCY*8#)M4Ctun+c92*U>YM?6*Nk)kZ`f@oxY7Q;v zX8$({b0;*-al|6`htfiqHIoK*poi8S?*{2{7`sT0)#bBMHh;()KO`Mqe1B#t%P;yL z1%IzuA7k}Uvqg6EwN~|qivUdAd@ViSWiLG+p;$I2xgUTj514W#1}x!jv6^s^UmNZv zDSL#uA}(w=CRZ?*DV2-0wNsGHjBUjb8i!lcDphcAMiOef0ZdqA@#}~`oscq%?52n$ z;C|%ik}Oaqgx=A?mqd1Hw28mR{@ym>KFf#4@3f{9pRpp#n>^<`j7BTZBP-9zAA0sy z{r3CdO>`CX&kH2uH6S5KUcr~$Lik>;`xbfRmb-e93$I$_0zI!;3J^i(%4h^bqcY1o;DtP0>2gztLH*u)iGmTxC@X`au6;| zdM&Q_`5>IyiL;vc_Z(O9T20S_$cf>YIB*BEo%^e&(DO9#4W41}@+ra;U>0m% z6!ZEiPK%qXgrx)3@B;DApYs23b{>FoRdxQKbIvW(XWqPd^WMzsee&|sLkJKc2~7|X z`&tkcUACd_x*&`0ZUAWk1OY{92}O`dw;>{lAOfP|Di#n4Dot@gKt&M9|MNX}=H(HA zKkiHJom)1c>0wtg43H_!u6pE7sH3T3R1C2qj>m|G?W}GrSL;qML zA+$UR>K-NQPDkrbY1=#53{qTbV*q;lWJ`s$LEuhW%QK8l`>U@!K|+c4+z<*$ly~!Z zkagA~hXk#N-^ewg8&DTVpbg#izp@8?<XdU5bdX%}@!PdtH+|Q1p;q74SV+%9S^VxhP$O%`P`|a>% zYwowF8UIu8`(QJUz{jn#@l-GwHBtB4;F`78T*;>2z#PYZsrklQKb5>ZC9K`XaFoqY z+5e2Y9p;v`wwN4QOG&1S&bY7XQoF&IzJvXDed({QweEV3DnuaeK=V=$=6K^DC+DU> zA4pHhL5d+u5Q(~6w5~+Cx;n_HvBXQzk2{(n?750b(vQI14*Z;CrT}R9KSo9RO_Dkj zMxk}?%&s21);$3Id%w@D!@eXK0YGA$K!Epj_&O|x;?yJSnByq%=*4sicj_M#wfbkD z0moR5%uhb!CuYEL`u@)Vp?F>3W)Y@P{1UK>@n#!4eazA3+3a2WoJZ(*ZS81O(ahR)LIFO%{9Pkmy1!ETWn%`^S@LGVNd_fw_M=3Cp&VM4|mI zIr0$qw;ccGB<~!d^fL0H0kPI`O2t^Eg6BCpfy^j8c z6~qGI88J$<-;!xw^2%yBJxDJpX4oQ<@wK6*WWwkxWTy$ny$3?Vs9chstikEVOS9{62gOwmsw6Oz}2`7BWCj>T__Xw8H^%5)604 zG+{``nXnTiVA~#$JIVcb!Uh#g%{2iHu^EF>Mux2CB>i@nbJ`(AU$8^N>G+ycXHEIe zGf%VjjMFsb*Ct1r@|`DeeEez1pH8I>OxU#9*S;1jK-z+I-s3z{>J`m{CtLT>$zVY9 z%bBCR-Q6v)JI1?;!jxy2{v z`Mx#MPeW+X0C+zXE(oVVKVy~~7f_xxOg7qKo*$m$0bCmXtP`OZeTZ?cMoJwjlm%sm zOq&j3ywp+n$q|j3RYYkNyU0c5O!0pAdX1l^iUz{kW{_S%n^w*qdZy7i7vev4fq=-1 z%Z~6uII1uz@BgAFI?X9B^F$fp`oFxW>>~5{1=iemfl_O>SF=!u*YbIB8_{o|N+fvO zdc^k$YFH4gn&ky*LNv+PNfag#8p2mrD`UYidydog-4uZ&qjNKgL8u5#k;G*+ZzqhH zk1{f#OETKa1WpiOE3XJl;TrGfhtlE#J-FAeqRX_eaa%8?gfOPo53Nu=t*aWRlM*caq!h0j*SW7hv4mf?&HZKq zw|0T38wW{h+l74{)ZE3tPWaOX(CY)?l5`gyH1jjxKnM>^=^^Fb5Frb8%oOTF6MeQg z*qIxePdt;+&eG7bKHD)_?qV3{04Ran3{MZNKnMdOC{A`2{7s3x2^i@KpL6M95PgZQ zm(9hCkZ3tP=1z3c%CJ9J>E_#&W|=5Gx94VO?sv}b-|qMS>i0YP{anAF9*F-%a5G7Ma~yrY?74E&kL1r$bMsT7bUrGZ5+~6Eh9G@}DtxWhwJH z8=?Z9buE_=v&Qai*Ma}QOW=E8jSrg}hG!Y3z&Yg1q8MuE;QQniE~Ta(FsbWsN5~!^ zmnK4hrA<`ak@#_|A5-T*d>u+>$Z+U&=mfj-KfvPJ1X zGomfJ$Rg$rnq^Rl0gJs^YF)VJam8U_btvmsHw&?#Pl9<5ay&r(5_=ES+fqJ40wDxq z>V9{a@OALGSqIxZRT-2zJRBPIIh?|w=AiTE&B4r2ufG=z%}brjC-d}($N|9mjaB=N zs=J{Ye!W^BiO#JC=TzO<)$p^`dSr(oABUptX#a+)yR7OyUkxvn9pH%D=IQ~ZPi{=byrt|tExntNauHI(W*4u%lXBVkj02Ikw!&pYmqkH;MMaxXU# zj7Jk;>IIM(aPT>VbTm}s5Z0bA+ZW3A`LcPTTw;GhhdI83D~eiQJF&yA?XV|yn6(`N zdu(=rkS{2##8KV$XaN08%1vuN*=qUF=54=148beKa5GW~smV4~?0e!(>4P5<7#D%|RZ~i>WiA zHM#WA?2ml7Y#%Axhs)-Xa*6$uW%Got_>X+5Z2wTUPnFFd$^rZ2BOlR6K3cQCL*zW` zBmYt}&vGa8ms;>#jgNe~mIOz5vyT(7k)Q$P)YLC=9-Daoc>lzX{7y1Jj=^!`Lu_v1 z1Af3t49pOloA^)4d_vY@dyc2MP-l~#JwI`_84oAQsSQE8mRqfOLS`Y-00^&$53|pi z03*7E04i%ScE%Zw4#D3o>wah4qq4AKelgoG>5lF4OS?JV&}}a3{u}nVD;al(A=zs+ z-)TuP@g8$}(Ogx4FS)`v$<;=fKM<8>Bv=*Tuh;>DjQ-K4t6?6Z7j5DV)wX`3CAR)r zb?%3wj^Ja#*1Gn>)#1$ujTlwdRk3hBzQ+l{2lI7a(Vbs}4!u;r5{-9VR&*PR?y};5 z-HGtjEWI%d7=Oo9ntA5Yg8f~AXa1;P|IE_``{#mty3lXuf`*FA-8}M@!c^h5f+ol; z%Dl_mR5jnMO0$a}PY<Z1TV~gnY0u^stQGAt8beCbCF+RsqpUT-1T(Q393=LC1Yn z_lqjpqzgzF3_ID)cDQ+mA-F$w^1GNfEBA-(h6qo*T%jeQ>R-VBFFdMdkKQ`Zj>7WT zoLn=f*32i6sb@~D6~XfuyrxTFATSXcj|Ew`i&+4JIM=^p5|Z|0=A-*%4U4BXNeIE~ z#avo_lB2Na2qCup7>f|Hi~BMtBdIKR@#o@L;f$DLo(PmEK*82qT2#RcPcU(zC14W^ z2oR;7gkj`kC?dvE#G8cqs1!JnJr|w$5;cg}Oqj^oET<0(HB*BK$%-^Ksu}Dt#(8X~ zeC+@Zjwg7dz{fbxOwYP5QZMvE<20lnUxg$sxWd?#Fg}A!nHox=-2lz~c01gcyWmEf zHrw6bSW@rptM>K|Eb7k=Euv@UfVF$<2wMY@eIZ&5hFOq{7SP!UbWl&m?uj_K0Lb+r zGNWoT3rxM-HVhJaKLWfR`JD_Vq4kuMc8JZn52PnsB;JrG@&1#!_z8(N_RQjCh$a&u zHLOZLbGA|zmW4&r8|=EYS)X3v_c_1+W^(Cgp+7s{tV<82rv8pL&9muOikE{B$(Y@| zPPHdm&4(a4f0^$y;-?D4D_HJ_X5hhEn&(7?X5i zvQ_2l3x>1`-!krJ##{jv6>bO|5u2bhPBA^F8GE*~=Q!>Y%+6jG1b4^gp14EZK|kU} zK_*^;K9%fOK(q9;OoU1V1A{*`WfdnKm#KB7NH>ZEGSnukdW`D#AQK9n&J zX3Txo{KD#(Wgd>1!&Te!#tjp32wY1V5MhZRthVn2o$iCIDI0y&H{+vFT2ElqXn&tJ zkEgxu%O^65*)%KiS>O%`P(I&b-FEil#`;$r<=oao)D@pFjv^$s;J_Ck%18nF>K>ak zNM?Ml5+6a&LwlO15vRc;?8m?!2??&t@@s!RRK77EMy+JsKA=f!{u#0Qeprcf_!|>` z$lw2n`CyJfUGc5>-oBcia!DV38@ExYLX?oyJ_281@Muk1K_IA&COFF3qg}YtukT&6 z{L-@5Ax;1t5CW_V`A_6N=vKhFAt(b~FpcQAU?J*;St(kq{i-wHA%z!pzo^_csa(*J z;9wN-hW90JpmF;9aPpq;Y-SYT4Rs?P`K@cbPi;YEQu9{;iS(Z_AF*%pMTtWS!UEdU z9z>KlpRp#Hn1a@MXhS| z`$?ty?r?*T)`QFxRH%MkGE?~VQWmBfb^EK-jf)2{iD-bAz3>}8lqOQ_5$+)SZg+S< zmA^m-k%>0NLtAm0B*qdK>_Lrbg^G=CRprEs-q*x~I|M-V*}l$!n&`I3qV2H< zv-N{&b_Y3aj~ky#EFqQ8QKqO!YlLsLwebbbt_5=!S66lR1mkoPv2cRh5w5lXJwS)m z`&S#?4l?$D9vOm5_r$AVIEM3?mnknoNP}i`2NB{jtVVE(uJbNad$|Yv3%YJ5SxeVo zb)U}3JW>iky~UsG-#3%|c?xm z5s(7Ejo~s+cGEFIrqeS=|Fy-MHSYa>-{<$?7Ua!SpRuW5@r4=4MF{LBPt&6kM2VtG zs8b~GGgpvI7CPq&WJ6W^IE6ED9$ROuv5s;a>>li9Uc;iHmUJb0Tg&}!CmKmEHyTVZ zTtA1B8G@dN`K03jiUX{WN)5t2Ys{0Vy2RdK1ru`7UsGI|5rP4gBsK4*?hNfI+J833 zkQbBBUGF};PNDJ2>s&51wa@s##B}N=g#Kh4MZ{RZN#8^FO~tnL2r%~6Vn?wu?^IL=#C4r-M`8md(VPbR5NT^&5L4;r*-26B!4=Pjm?np!+QI8=`+sh{Bs z2RR({eQD-ZEsFn|-uiQSGG!$LDSB-7`+S&U&r#C>sZT>`oi4*<@F2w8&i0Mly&! zk>@|~-kg^@nY5wumtj6c${u`e!Cq77xt4UIW@Eu_D%g#M`t{<3TP;M{SZK*rMtpnZ zmP|}XjwNXD0+vA>OLNTheqtV^a=}rE4>0;;UG$)IU}&((o98G0u%GY<23P|7`)PlI zNnKsU8UQ|`qs+I@Lk#;;eI(CMO^Abh8{ld*35rZZe5%{Mk_nk*^n|nj<)^@YTMS(w zU3BC>{X0e06pWKNuiqA+`Ttm`|Nh0FihHqN(1N8taAj-kq09S-6xy%*+2AdScm%sb zqwiX8-?xs41ydhOJyguW0;jQ8;dz?nv6;{BybV4pWa5_9sycPHb(wgaD)u#aRHRZ> zrhSBYQ3N?36nG*R{HsK2VSc0Bp`XJm8qjed40(lZH5~ma)>w|?1sr#!ZY)V61rGs4 z3_Ij0LMFftH$+FKN#n5-bii`Ay}{28Fz4(Fx4rv(-aM1T_O7Emb42ODP!2ht)DDD* zlCuhs8$EimP-H?>-VfYUJIo6g2J$2pPk3oEhE_D{N88rM4c)17rleLcW!y` z`<&j$oSdl_blCHIv}QA1^VgBv*p zc5s~cGBNmMjw#7?RJhc{x_(oz3;}tAes0*|cpxj|tuBAwU+299L9>5=cRG-lSJ+nL zO|c3{qt9OepVY;4TW|JTXUJt$^ZR(6$)~;~Ll+!t+O$@Ug*3}{UwJsTQdf^23S z*-XLzTK_x5xt(xG*lu))-mZ?2;N(*GmD87Jqi2vZ@J`(6&F@*z*tJM~&Fi7aG|FGi z5Mb&t5Xp=0m@kvBO;@+1%~6D2ddULI%?oG`bDJ}m8vd3NGjW*yH*KCv^8zYaPA260 zxR?1$MvM&Rfb=nus>g1QGn0 zX$>V4hK2+N9SI?Ufj#peP1urMi$@5Cm_zlRnVKl+j}=01_Vpm<9myTU%-H{SlWVl} zWTrifTL|O{I+1_sO1~ym3h&%nKeVcG~FqhA-tMlb4d_6WV6McQ0~`a5~|~(i*Ue$?b&sP zl__SZ@AsMh@I5>0z1yBA?ZT_xx4wZPW77I5>S4J_Z#+Y>kW2nW=Zi$I^h{_kYiVwJ zf}3e~k#JJbvk#v^mq@pR>x}2vWv0gG6eLNL90$1u2UhE+FNi% zb{4Rh;vJ(rAbNMK^*cW6T=W{$FpDj*)l1?JceH>7YILqkY}C$wpaDwqAFyyZF1F$p zC8Seg^CwcJV262j#4l_jA#+U4{#l8OioQ-TsJ|}Z7xuvZc-Yq|AeF>VCiafMu4j{X zvG>PGog!J<^(XBS3MndaqxC89$kwi?4GsG=Zy zoGJT3H=9Cd$zoY?>UAb6$j^J$?X*8?_|gPp!dyaS741*|U_<<~$yv8Q)BWUL4@b($ zpiRb)J+xWBlSB}2oJ3eAfNy9og4~jEz>pn%O3yHj^{!raUEtK{ivLUGCKJV;|1 z#alRPQ=_{Ai)E<=#@H?xR@kTTep}ycF}W0GsB)~r4Ne(Bp!wQ=Z!2fqH!_vVSh+`Y0Hr9Vl+cHW~h@vAIt44_8#9v=q%Br1Xr zkB@?S3KQ2D@RI`%l~ebk%EDd&1J$sBJe~+CSRe_E%MFN@)U0_HC^v&Ho(kck1LkHbASS>=A>qn?95Nk*Ke4O`M)>xm zN0P4>#A8MC_1?;ZM};P#nJTDVx8sXthcHgyV(LI1?S3NQ4^_R0FHD-0hiPO2qpo66 zE%Xa%$nT@gBCeOi#SEn$>dKYF0?KB-#;bC~6JONTb4eFyO#Y*4-_E=kb}1pD6$cK` zZO1a6e0KJ|snl{9lObrfP3FxT#Uf-wYN3A1M+J&;lX|Qx`-@_9U(ue@)pJ^x-Hcu- zGN*L~KPuMmD$1C+#V3erD`b%=IMKd)~` zuZcFBO6v3)$*+E_AM&X)YdK+0COrY3pu{5> z0sryKeJjKl=Ixoo^B;2zHS|4L9&7+u(d;CdybZtT!c~k-shTu|i*+%nC!TbtQ1oylo<PY+RQ65Jl6 zlB$)ub3R53d2m!7j{Q~ z(OF6|azC^=n9%N<=!kY_c1;qCVSdyN)*Z|YJH-(Q?yyXgP405LQ4v+*jgED5#P|q+ zz_H~fmW(f)7#|NNYN?xgGSyrs`Fj_;MYOSow-RlH+^&e6rj^*@(yUH=t;@kUD1Zbq zu#Ww495XdKunL8?oq^GLv(B0eak{YP61psNsqKq^<7+811C1eZvY+Lq*h1?{Sx3Mi zxKg&utQ+)lG-v;XPlbhKW(cl|CX4MPN5fo6APnia72$K75uTtO2ZAq_(RaBHYRCk+ z;5tCg5q5;}gNcDpU4jYcxYw8X(GPBPSOMK1XcjHIHaUwb`s$CH~}RT;`9~mE)4b7`m5);O1wu>r)3l%;SZ?{mOS8Ae=ay?jqN{ zb-^X8KMBI2Sa4~dge#Vj9Sc?+tL~IENWX)=gU4GPJPtn#5Shj{qye3!u$r2d3&<|i z12??Vmg>AIA5??e@Df0eHpya55)--u71@n|xtW=EjWbs|CMhq<{Ess? z@L99(ZDP>5b1Ul<19>`2&66&xg!ykvSaGFd?$R;3?5=?#bJXH_hhTHNE9nwS$aZgp zFJi_=!~Awpn?Su+Omkm~3*z!4VCQD) z2MwjmAqeDZvxi$~7GTJi?^xVAhD+=mf@)g^qjFWFer=POC+cONB!CU}g&@C%5^HNv|S2Sp5Bfo?KjLykHaOtQ+sUf>H#7a^=AcmkMm55a!M-e&sipMcq(SrVt3 zc!0JQT5W^-_iXb^v`vn(1P-Qp(Ezg>Byre+b}=W?;)b(7;RgL4bX6FLn@bXvt`BC&Zj}A@au>HY#!d2)~oT_j|hc#MA!=&EieH#6Zov z8o7%k_39$jP(N!;iAk$&ZrB508!p12;+4=3ddnFhZ=vK)#EG^;S8I?Ki$V}JBFbQ) zMPm+)FV_*aocoQw?vY;eaO>-O7mm1k7uObJG!$*uo&YVO7O@}A&CH1z;MxYdR~vH+ zZJN3MEd_z~K=&(zB;HoC70$?xH1GxD@=&Gb3qx&#x!i5*or&DrP#heu?c#2Tde<$2 z*=dP&Zf^Xay7h+*PpC6~yj7AL8M6w4i<-!2L3ksew0GMQTNubj9k?n^hE{N#j+5`W!B%5gedgKN%#oxv%ijQ7FhfJEHC&4VsC=3WjWN#CoZDOeu%hk zyjHq$bBjIp0Qj*91TEym;!~7^f#?zN_jNj_%f651#9WotI9#GB!8~L@R`sB3a?Uut z2@}bU!?1+0mxDo$q|-!fak`H=E)nNBcZMPGK?sWrh9jWi5X$pH<{pDLOyu@~d9vYp zI|9+T-iCf(Sce{ZYTwj`e)PsLVNeXRZUd3$O;It_b2 z`-~+W=L2G*)Hj;fD072(E%YH^tC_3$miCw~@pZ@h1ndU${YF5;D3eu`$^O{tQ;(Fk zp92KKCfh z2#AGV7gGQ0T2$yDtbjyS=Zhx@Ik?u2k4@yljtI4WR8Czx zkj^WVwSAW?gdQc8k#VOOb0B>uvSEZN7-Z*|_mNF!xm%Kc6UvJ{%oHwda{?i!g#ecz zyM62acy>>Je>wc#_Cy3izRk7^<7U(MmfX5>+!F+I-mNm$*BJ87JB;hc4lBrZwrbfs z{ZGD@DuTq$(mRROC}8m9P-bD*4LQt`*2o2kT}N+3Yrf#?7WDq>x(~Hq&%RRay8lx3A8N14w%)KF%iWiMgF7^M z#W%Ria^{9CWn?tH%~$a3%v&yzX%SQ1T#++ZLO5&bR@;4)bd)<(cn~=$e{LX-cZwKaUfjvJoSA^!u&|DRotH~4Qb|pwA zb*mNk2j-5zT<6OXJ|!@>Qp*f}ec9(r)C1EXmeX=S?#s%F4zrtBRd+IhiAX-SAqEv-$WI61!S-IU!dj; zS8`nFo)PN54^2~x2GghW0-m5!L|G8HfGoYgtrZI^a1R;LLba$kvD)rn&ZB`db^d_V z25zyrnQPh8a4bj04!hja!M(Wd9w-xFG$IZV$4nXUSfZsvo|@?B_#9j>2rcg;`EaHd zQ3;_e-*>**i zDi6UlAj@mrjc_Mnm{0|gkP-HUlC3*w0GqAkIu=$3I$u{CB0zDWYp`b&7lA@I-r}Q* zOkTJa#>>-mqU)kuj>i#5d(FfqyK0IiMKZm#tQ=775zd8 z%@#p}3RBq%m{}TEW&)iAQ$7+*FoL2wHU)Pl>ZXFH?(P;*VaGez`q{#XRjEG>A=VIl zVN4)Nm_jUX)-Vx3s8muHnV(|7ix?w|6?TmA6jT;dOe>v#5?2cr0L`#V(eid-vH#1? z{DxUbtGG$H5@@n@d4gtrTED_M)id+UWSI$>AC|n(XWxxXrRjN-{mojciRRH0(ekhgf7RQ@ zN=U9A?2R4kOK%d{3!6+wNjL$jAy^S$!&~-bC?i90theUD5+M&ps&k3)Vx3cxpVj^( zy(M|=FzK}l&AGh3dvfdX1n2Q&(5$AGqtNd`h=36qj(iw1Az{3Y7R(^;TN~ylh)2L; zKW#8hApsE~7NHw73f6vm_D6iLH)h^IZd-Hh>^iP#m`zC?-+ZY$uAW`TS9@c^Yx5R- z@xlvd-?_9m{z{`IZ~vbLDb|zj5;71t6);A)jp12h7A3RgZLbMcw56R&D1j8d8SKo& zkV)it+&=1qM`&Pm*0AXg-lA|KPgrbf>GNSmsDRG4A8X-Z09+xQo9>6_>dz=)jS7h^ zyi&@9^>%N+kJj00YIBLUkbSWb7R*0IjT3VsoNm<(V17tsDT#vG&BptJej+uuL7;8X7vIz8j=O*sa z>CG6JvJ8?r*zSziOqynct&goXIoMppoUEm;<+Wu%jPDhQCG+jsy>dt0+*9`x^6q-n z$6_m)X{e}%_`x0YjKB+(nw7bE(1g2L4reij@ zYd$sI{|cabBy~A20Y;wsHvwyl9uB5HeU^16t0jV>*!~4OfMx*H`?D&zDjoXELu~ZH zz;M*d;U>G>WBt(Y-@TCzgm+am^YF(pbxWQNH7aVHBOp9a2Hj9#%4a2gYVFUeR6S&!!vWNZ;GaFUQ=q@8wBx zAau7p;HQ|ybAv9G$^@4pZ^uTCQs6FMGkD*VV?^9Q?>i!yM|7s!5}Gy9FU^)PmzrKa z6ruAVoAWlC{8oBeD|QNyHOO{At0T@b^h6&ptdzPBX;%)9ee>`3!{+ed!(h#H{FEO+ z1f{Y24?{d)bF^_s8FQR*#~QQNINbj|uh4P}dXmXC3k*KQ%%1^+4|bbBbo(XyNBnHX z;4u$boWAoo0t-FRGYb?x+GD^VzElDWZ1|Je_rKTEu(;(PXxgtsdGmyUZ8WLw8XEO7cgwZF=b1nI3|O z`eJu{Q@dyWr`8f5yqccDI6h&FXZHy`q9kGJk)vO>M<7^yk4UJ0zkOyVbRU#^ZZhrX zOnTOwd4s3l3e9rrcR}v_TKX*Y$fsw2ZQh(%i~G%nq(?4m_sH7WWuEV%N6t@r8F+kDx%0y)QAQI8-{kOkywKTF1$CF&8ce=znmdIVvV zpCfXN?A@zw3AfjrPa zvyKv?Uf-%2=jM9#e23pBMin3M$M0E31jXsG7KS-q7^XjU0}CaO_``h9*ze>2YJzVA z!`$(*pF1uz$A%u)9!=7E%KY5edyToy)Sh_6hmX;?q>c%7(e>$5o<1R%1(WX~c%8Sw|_{B6&ykKHnaLj0NILmHsuM;UXf4jqS&yYOP=8@9nU#u5|lZK(9# z=}xlIwFt?Lxso2{r9Gg&r~T8z826xuP$~)V^c4}+gk^%{9ZK-TzvqyE}dH`(Ngv{yD@7vWwRTzjnp(QKR?M9s-+HG zPhk04|1y<|odPiMeUYd*^RjA@#A=Cv4qi*oRrcFX}bp6A%4 ziBFj~^Uaibn}j#!ZK#?5j%NqV9B5)Yiy-P6o`{W;KjKN zQTrEB5cCG;$g0>UHo4d?(Fm>p_4pQ!xWZk)}$A|b2+>Kv8kJ!wrLN=k}22m4u^0l6sulW7n`#p@kOHJQJ zTx+C;cHguF!-R+Fi6H*|(H=k~jlEz$eKiW}&%Y?j|$PM!lXsk{8Re$x*JMPM<8Y5f%)ZDLHq|y-CLelbD{I zY$9sPH&;$pD3j(mWSeLPP!42xZ*C;PdpZ&M#%W#HXR?0?E5b=L)JQuX2zVh$o11qV zb{PZ#9jS-%B|^bso%rfOOCq;3chNHh8b=V#v}63;m4*rWb?t64_Fy-Um@d=iFr)+p zqW%Ch?AhpwnR6MO@QHqAPeC!kiXz62g!_yQ9SyC|P{3zeQaax@Jw3LC-G{5X$t`U-@vs5>4c%#{7YM**_M{p9<#0yx9-s{3q!(S*!%OJWw@? zN+IOvgZ4wdUQ)yE^2&*s$Ml#z%*=vpDWaSu-0pBHl9$=loW>F?yt?fICxuP>Nq z^1zZET9&m6CFQO+j$4 zMzPZxvQzWH`96|i_Pjir88T$f$#nq!85&N65Crygs@cHEV(*WOSaC-|NldDo?a36@ z=0(~k)~)y^BS60mr)di>_U(LOEA*4voo9l%i1;yYor%}T1VZmGieH`y^c%<6<#AQe zP@*B`w6ftvh?^8%C=%=tTomV^a)L#GT%Jxs2kFRL-2|cwiNwhL#JdCejW4U~(3(6i ztDScJS{%hzD>^=b#Bz zG33?(_^8M-CQC9Dai{a_9=Yv`I}}FBy`{J!@0&5Ztb1-{1V_n;vO5k=GaFU9^n9mwK zyd1vAP|f*Xda01hp}ksG9>s)O4o*cj!|_1t+?DpO)H@3kW*^B@vzjT00g3wUm*#dyXNjKM9>75w~>dPjAxE_ z0I>)$*vUFuq4^(d>C`3OyBlSFkR=?Sc{ppICA~C2B3}y-D_t&yxQB$D7s;%c)SzDo z*%$rUS3>h;o%ztY(DkvoE;L^a**gO3*s5f>aRva`_k6MbY%zMKXr3)jr0wUKzae%c z8(2w+*;Dq69QKG;Vh0DH{(8<{0zwZj%~A3tOMH>|15DApVp8E>Abs5F`E7h^PtDsC z^qv!QcI`|p>8G<$o6maMCc~Ye3tMCuuUsYC33?NV@@%#RHDnk6U=H3*ZDO{2aHC&N zeJq*9t>5;NmyS7!1eS#3XBo55S(dFJfFs=h>m~0E!M!FxCAD@Y_!S6942@Yz0H9=H zYB8e|_d0L9{AS*lh$j+oLvc#<0QS+8&1aHlS!RoHJm_|^VCd2k%l$pke@0n4Q~cYN z`^6+dMAf|zAfX`ZI+N7MJ&_em=lU9L6bjwc%T~zj zkS9+q)7}>AY=y#q6q(xuoKO3C{gm!GruXh-<9m6rTQbK z=;4xiq%?~9kkrPCGXTMh=3Iz!EEr|3LReuNjZY+`jw4w4r^@wo$I<2JsIob_+>D4q z#B_!4#R{s^+>ZC6J+B;`R-QGxG-|N7me@N!#E)ix`X2{^mN<|Y6@Es^l}Izqvpba1 zypiH9v3OuE_)-Z{=}zXs&JY%F0*{QM9o`-OGJ|SaVHI*+v_SgIsqj`4ZIp-{=@lLE z3UJe!J<K zuQNkp1(k)qYX3<%CtlW*8Strviz>l!9bOcMhcC~;)OtJFZ;2@7dK7#gKA`f79hV>+ zUYRN6!`wg8ONhIIcMl$9-d$j;umx<Nbrra(YbEpW98+5)f z?(=0Z+ys;4o0ZAMO}fP2LtpHF=f=v>ttE)-3tLE?5p|A(eQGark5CAdB?cSs=;Rp} z*9UF0$dhI=*PI*oaz(Y*2?tBQN?KZK;V$XSO$&GFxXktHWKXjz^*|-PGW|niE;bfN zr+{wP;Zwk6^Cxl`Ko%lf=l-2Q>1mR$;m9VRDMlNs93(@~A&^;)RzVFR?==rs8jn@X z4J@KINuItaj<44F?Fu&z+mY|F)ba(Zy1ouS6Om8>Mw6RZmXTUPVV&(y36W-gn0I&N zdtNA-Yi#E#vl?*l3tj$M-u;iie35~@>D{HVseQT14hL>m^Zf}t23K@vGX82 zT;A>id?BGIfc5##zBN^|0q8Q*$WKP*{3tk2dmz~t@h>yya(`A%H4ql9JT`Qn1qoBp zZwfT!fr9%*ffl-Trt%}7)H8CA>&9;j?$^2jMHEZKf44D7D?bJ2OcSoEmandws}wlc zUR4eJF?$3Pe+C%NH0!}IdQ#^{0VCCSnU9%6-3PqZ=1?Z`KbZGJcHI@4TQnd!SxRN^ zu9okqn!Bs+o~pgO8u(-O)cpO~HQyOV_v-xTq=g8sDVl4G<_kr0c`^E2vFBp+K&;3h z{l#K%wY=*uE!Lmx#K&th5n5Y5$}RQ+#?;&yQZ;?^(=hu6v$w%{5Ffj}?PXS5A$D*C;#&&n0yv^(FMl2-iu`H>(crMsJ`F zu5#3F6LyBJI!3t%F5|g`9nu^0CKwErrj7HtmzRbaW<{~;lGv^s%&JdNS~#>_zs@Bb zR&)djuvO0p21Z{9g^v})IA%0O_XghM2yRdIU0`TW zJO=-3<4I_eV!lu*FD?}kExJliM?(Z?wWo7#tqg17U@>qWWD9%7yQ7|B z_c+`{t*_jR6)6Gi1Ac?vaA3SYf}2PyIUidz)HB#Q0v$I3%&!+4L4Ump0unou z+vYdRHF(!S2NIC<%b-0JBh#l^_{>~$5P%-&I&V!+=870`fnvla1(PMVK{nT14Y}CK zlWuZ^r#iSl*gOQZGXW|xprQ7!nViGD5}RadMYc&cwR`q?saf{OHA7u}AlPzq4K6^9 zMQj)93jh@s$%;VDfes|LAqB$e+ZuzP#9Ewt zqcz_EcFnz>)JxV}Z|xOeEF@@&3AraD0Nk=eCB2{kU9!m@gFMCEg!d<;xqu)bkWa1J zwOwHNf{vc8(m5iT$%#S;Gmth-^BL50=hU@Y>*g$(b(~*^u>sY|)QfMT9;IQ2Z0BtR zwF=ysd}{b9G`qZ~1?n*pIN62|8#oX3!==U`yWENmXKo)3X1;*OWNS?LSn4@eiJNEY ziOCRgG>xQ=Gt^X36x3t#*?;3sX#Q-77HeGg@b(#T(Ove)_Sw^rJ!#^%K4pTh*Ug58 zJCp!tA2J^V^B$VF=AU@qp=9l7w>oc*GRl|G6QgAKX%zab)|0+?|Ds`L-$R3kMRz}>qGOkuy~tL*)1VvxHl$83P)bOLC0SU-SweT z5mtBS+g9OIxC<>=80kY#M)&jAQ<^a zplTv{nNu2#PeY&%ICDm$_vD7Tv$KAGr$7H}`}~1UK4I&CNT~{r%J+-9CyGR%`I7cm zc^SvqUWq@65AauaGFY~~%ro8Uke7NUR|=DMyZGsP-3J4Rd*eX_&mh#I&by zt8>?p>j{6>Z#cZwE9~zhf;5cXH=Vi3RoHVb5w7jK!`*?}9bVEMV!s5l^VRO~y6%q8{q+L?);Y7G$W^`w zz#%z!5g_R_9gX>00gFwF{N9*pOt+6gxFV7e>gGxa-xql_v;%LAGvF(@w}*NAHYL6Z zGR=G81G9r)iEUY$f>sdx^uNRs45kmYOPd8N!_(?rtK2;I&qUuqv`54sLaCCACjpIZ z;6_))W{C%H?m_63G*T;S#{D0mWf{>npn#V9$>{zx1H1rD&wC&FXWRgR#Rzgy2;MRC zg$Slv9L6te^#^M1in7Q^4lXSZTv$fj_$}VlCYp1%yXYsJXMYL+CFsU1D!%A`2~z((r6BiZ;Hv`mskO&Cl7IwQ!)xmKmlvs z61|o?`vBnREW)40l2XDZ!;VlnW>(#1Nz1rULp3Zg>xJ9UPSIipaGb8kmxFsyZyrWk ztUx{035sJ{>j|#UP@y_YHc7O+f9MfXDGZv8SZi#J2Nq7W3 zDT-TtHpaWeBx|(Pp7ya64DI9D*TpY4*@TGI1L`Ejo>ULu%)(KkMv&qrQHY$Sl^o;e z3TFqBc0M#gqHWPcKx54PBq}nZQ-3VxA~`O2{X^p1LkIKT_OPlm8N6*6i1vgd^(0N% z&QB;R_k+)*pjM@8T$WhVHuyp;b%@HdJIuix7=sMwMdm)n(L58`Nwy(O6+6n+!Oosq zmIUyUFAxK-^so5$98dnHV6rQln;4s<(l>_F+4*slU0C10FA0m%Lw$8@FqBRiVO)F) zkqi13cJXdLxk4|Z{g6yXg^VeVkyxB#tv~%1u))l&TdxKal3-w)sU_nG326Q%4p3hujtmWO1~WJ_RiRB;+~<;aAB+mcvcI zE8PQs-{pF8XhMo;L`rOfY_5BC!`3?+>AGu-K-zZH4btL6`Wn3xC_~IpeQ;u=ci4>8 zN6o|>ylgQAm^4#kjvzZz0`>Vhra1~{B`&~BkA)mf3wh_~n)#zKXY)(*%GE}vS(t$- z>RS*mEH7AN7l(@$Ee)4kXcppUgkVN)JkfYShI3PCT`~K_hb`;hE?Q=`d)M;%_HIYs z#(rRj!iwfj(Tc)O)mS$%K>l;_QRnh8T)ebV%!mD>9KIhYG zZ0gzG7$GS>Rar;gNR%r8JN%w)h~Tt~EmK865u5%3pbc4i43ifLHce{Lv+_Y~grCCW znJIA11y(|BKA# zytzL=h@>es-3`06ub0Oe*eNkO`WL+d=89P!Vqju2+;I*BPAjj-@e;_<{4O~5hTW-w_OPuiyW^@na_Fxv^g(rejnS% zWA|8W{({U}&&jl9>vOo}$EBGkb@t+CNq-r;-^aan>Iq|?H1=_0es3~T3S{$7^r0Yq z)rmPIyMCccAdWoXK=LH)XOTyj%@x*MPP{veq>xRCYb&>ozT^-jwr;OA_AHcGQ??HV zlBptN@1#WLLL?O;L`2d^mz$pG zMv0-;ZKHnAz%oI&0%#h=H@P>W{d|LaefAA*FA5@}ouP8l*Fsd;3#c^rTRF`>&0E?O zQ2U4#7KoUV%`{3icSM<9tU49yi-I$_HH7rlF;o zh7J`Y2NTmLelKtrxmmR4qYd|DpPP*5;#4Di#P`d_5JNNQO`%p1Gr}0`x!pqfB4glu z=_##UuZZ*Ic&Jq_5j_cmAv&g0Cyu4b%7v)mx=^=p*)*LmqG5!qBD$EMy22*Z zDh#J!FA2gHs>kUu5=jFt#0iY9R*S)F!lDojJOf$g+bvO<>XQp{ZRUMK{1WETmKj_s z8v_wS)Q0R^uC*THN@dx?!|fpFs$Z=T5ZhY!2pk9UupRM|T}oiP9o+V07J8q34Hnb8 z;~qPRRi6UF?gUQT!M+Dvi0f=;xkxlokLL(<=+2XtKWgvxeNCII5J`4ev%4{t`|A-;tfthE`+5fC@w}G*TIJU zVaGqT&cn)xKi9Po2iNONbsUbS*lE*aF)RZ3HXl#a>Rq>?{lGE?5lBX!ANR+#%?h}E zeC&Vr+Z=bLrWfZA$Q|tEMR|baI6zi_RgxtQ38J~?pd=yhy{1YLeJl{kN*KBm|KuMls++qad zZtNb4#PG{%MsU?UrL`+j2xM?NZyux1h#*Gw_q)vQc84%D$3kN!<^r{EWl3)7?6Fz9 zHfwe?H)o6b#Q}dy#ypqdx{Rl4*CnN%$=DY%l=^DcJ)0SU=5B{Zs=EbraYrS$c&8J`TK{t=Kj@VYZV8#UXQ{m13wL`xts)X4^khT^2P*Xdg( z2QjIPfdPYFUR& zY>8%8=VBiU@x0bOhKF-)(jDtFG5zqz(+K3l$!O`mIl6!v)u+8fl%>;%NINLOeux{( zuLd)3FR&g2MI1Z=te+NJ0fh;B*KlNZ$-wTw(yT+SYtJ7t=L|7nHw=NTf$YihFLNb) z7*2a;=|kxp9oZ3cp@f-VgLcOZhWXt3^MoPBolB4gjewT*U-;NJfrS&q?;-}b{i1>l zIFk^2TKw<{GLFX^Jzy3HOl-23ri%ng68r|*gE-CN)LvnaS7 zY77weov27hbpA4IcR))*bzkUC9d3MLn4B<=>iOSB_BS)nmmZ7EX3uA5?vKplp*b_s z7koo`ui76#@4W`weoJp6H7cfqEsOnY+N1X z-;JHZ1yQ?U0OfO|cwJ=HM?G101r$zrxuS4f09b2vXB>PbcI#pfo7czTmt*r4RwZwW z?6>6h;GT~ieJsE~`yIE;e#fRLz8PI_)SY$zqj&s3@3>{_JCqUqh1fmJTOe=072CUG zcdsBTK$@UnSm(s}rpF)_PxMlX`Ssw;8(Q6aO>g59Bk?IC<`W|WMFRsMERjfZ^X~q% zc?wTq<`hZto&p-r$b{SX5`U!I(j=|mlU~rmNl1_X?KOYu1?=(rSg-qEBCdd4KSO9m z5hlzH6f$KQF3)if8MBl50#{iHc4<1xcqRG*#A|#uv|bfJTpFT$#jbJ-(FB%^TLii) zjm^5&Y1{%tfADoP^p}2%xSDn7?svXSeLb#h!8H&Rp zO~|_7YK5CZ-;&OrMHqd*eqqpR=khtM%1(1m$zDwq0dr}o=znuuKc!?YDfxR@(HEz+ z%br@Y7pv?!C3iA{h*k~G^>FR9Bh0!ZqV-1v=N(}#JVGdx5W43aVa`3mvR}`Y%r8G` z?{dNE9GY{EaG$EUvn%GT3ZHdx#hy{go>>8WNPPctpXMrxq1bTs3RVjs@|h09WHJ+6 zL=rIbrHuKahZ?yHGtg^SK+wHxsp~T4BHh0@W4-|?Ks&xtp?k?7((Ygg1y-THMN}R{ zOK3jkK5DMYxT`Z5!QV2w4c|dlXUNlXBekj4>oev@Nv+>kt^dD4d!ISD-0l8J?w@kE zK>VXn*ChlV5kew*EMS@%tnFZ~qg)8fg}iS(oxUJDi|<;Saeqv6zBU^@pcS2N4;K@++AuGs$y&!@{NFFCji5z-PqG;vFG(TO#em%G6?!+2;RwIvA<+6|+z+;2ZBR#lJ64E~dPBq4<<%rOC+e0#X=+bS`6 zTeywyk{6~Ur1vipr;H4gWB6N+i#{$UT6ZdL%aye%^g?~J>JhI!O+7NwgtX>a2Fmwp z;yu*i>xQBAt>7Al6Ndw?^s4-zRq;{Y^JR!k;XkWwqE<4OIYCEpB zM@L<(9&Dd$w6>=#Sede9I-GS6wLrAc*OPo-g{BYtvdMWO^H3WEqqZ_TNj^*R-cT0L z2;ZJ0KB;1uwhfHL_>jGiGKu;nv`6#V%oYt|GFy^qKpazFQG2$uo37?b&r)O<0Gqfb zP@mjyAQ}+HNA@5~Fwz|e{hndKlzCz~2DDXJ9CGY!vlZTzO*49pEyV|Bw+91EA^6$JuF8z& z@#HUz@YJ+joc%Zd#+==~dm##NmD-Kx`wL17=cl6Y#VH407;7J=&hzZL-ZxCTHx1o zz8lM?U3&()V`z~EP813ZZ@!*xBvU)0c1_}y=*2ojmC>mvT2=2(&5zbskc5jgu2;qXiV+F=CJC5G8F*2K?je-BUI`TjH zjS)7;2f~wzPnAVg3}cuaJHnZeq7;Xg2s!@~7XEWjF62Cui&kOQ@%&eDyeAAX>Y(O| z$*Jbq;{q_4*!Iaa zFP!>*QsSEx_nnHlz2a`FbYpdB`oo*^=DUik-4988i(L2GGN!z_jx4g&(Ph4@*xokt zmAr&mKxF{2;vkV51C?lBBweJI71RdPfmB48W?_cGMo76BPYqF%cqEp{2`AYTkFz+1 z6S}Z8hyb=@Wp}r{+>XQW9te<+7&iMBs4!-P`&XGPA^zFFb^bx~rqjHTbe~S(fPeC|=lKFMk{GMofvT8=vMxtu>-{yUP%d^31OtJLtk=9eYA$~|&^{U<- zENwl%u=UjIG0FW~o}Xwvzf0?>gUs%K%k$X-c)rnk0;3A`Lv}uH*a6Yov9D>}c{*nw z$c8V~iHz@=Sh_(x2JU#{{-yQ6tixWI?Z9;B2$#W-_EG>31@mkCNC2&jB4Q3W!}Prx z7F4uI7BupBm-t_t!^!yug^akcC9#~({D9qLj=+4{p+MP-r6K8|q(f-w9?rQRQtK?M zVUb^L^t&TiGwlfg;mL$3kW!Io8I($h1|eaua`661imr%@0(V8Ac&iUy1$N~s#1YtO zgqoQ7yd**Hb2%nrpD&>|w8^xj^r*isJF0|?S?+6HM!C>p^T8W-^2cxR$F!a6t6Oit zLzbgMeVqw$A;JLdy)V0f0!i;0j-}_tbF-Z+*IsSt@rM8iG15)R z8H7qF?ZDvJNYmbJ?SHWtc7h}sgBIumCrkP~j?lBSH#bSQit(xeAD7r?vZRAb9SA0Z zv|-#7=Weidj7b-~K?Z|d1@U+S0|g%#Th@{CrkY@DAJ2ak$9wWQ*tdr(qN(s~%>`7v zc*-yI-tl|+{VKoDt|L;}^xjOW91K;xCBM`0Wa@=UyxJwY<>LS(*{lGjb;k@d-Ch`y z`Kft&sOQf^W%x^b(y%#s*c>}-jvMxOwhZ;G8SYHy#);%7%2O6T$&6S^zZX39Ucj$` z?oXw5M<+2C?6Oozl`_E{c+Bk0q$M6Z0aBUdY&pyWCi#f_?bK$AXv%FSM&M!`qw$(? z+40nTeAgjF81U;t`{mFP2_tmZKy+jCM!2m&{!D5Iav9Vo2oO^#B~ZyIO_)MMNr5&l ze3gIg#=O~-&-i`L???Q;1y4A<(OAfcy|5DNy0({)3C zm~;mA3aXk3P80HYxxLlAt3dRw@`2_<4j~aDTu>6rAvWhbdk%{p?Ty+O#`uo(8UZIm z_Fgq(8vC)xVK8lmz>z%REJ5&KR$3KY9M}t3-7^&&=7|s9&q6|vLJi`KNV3U_7gHJI zNi2$gg1#SV!K$=Zi2`ZlgzZ^VF}y{D;-Q^K>5_NnhH9qH1kT9dNaqw6Q8UOeC_8-v zxAHh!$2BPm=A@O!vIGH*?F_nANeL%&lf^Dz#5`u$i0z$ATlsGD4AM`m{sXrcfn#_y zJV7G$Ly!e3A<3Gl&zUWA%$liq%baRz@e%~}$D7puD?5fH|eOB4^^fqVuWNI># z%%m3*(tuEclu(2OL=wUFd_EPumaE=?v;YFqnjrr~B z;jN9@SbBIic@I8+0DLO743YgJ>Z*{TJ~bUR65q5MQL0oU!~{>vY7kjBw}%^Zn;D*@ zyJVho-aY1ea)mw9ZM90>j9mgt27#WCNiteFZKv6ZBHWkcoO$+WE+JVZh@>sqsdc!4 zlF>WT-0p;6U2Nw_R^6ojkmYjtCQ`c0P`}AgKSgS`q^r11NCF$_tXG#Fes^+*>vE?_ zb*D+V30Ww=V?7d%Pk0uz{T8T_n>VTp--zdD{M zoa!5%dX1QX1l;RH8`31A==*4`K7+^VJ@qdh#ZMx6^aqN>5^bsv(Yb`P(XbXi24VOG zas>cp+x9m?M()F1OKIMExcaDiSm}qbu#@W|%Uj&30kfB_bUCeI!gb`FEVu2CK$l{&HuWr3RhYeB}NEgeLD?GRFdhnCy|s8>LYysyv7Wy;0$cX0SeH@BnJLgqi!>> zq2Iwj0R$ouB?0qsaVLta3d|tSo(7>nVWv{@*wD{o%>1w*-+lwj0}is{5z!>@+=mP%AUDspb7X>g#HmT4XjGb+ip|Dt4bE zVT)t{|w4L;h@JO%%OItuOG1u9w# zd*ZWDoUgQ*Q2VEEI~dCv_YSpAncKmLpds%KR%5Jb_8benTeWi%V*w=G!s?HKml!d3 z!DUTGp7l-TuVq~()^ot~V$|S19q&rm^4^ z*&vE*d)Pgj_RtksmW0X>#tjGcNRTII&}s&4C2lba@^28rEbwdouydhj8Q`j;d=k2d z-=I}T8Pz4{{DO8!uDg4%Hd}tVE6`(<>X2ekUof^J9p_3ngr=uI%u8DJaQ&{hB@9ri zr+)0?IFa9{(QwC$3jr!2VFfIP>PN)h?l+XGJI<~j_u?o--%|HF-bMH()^qnu1oNVz z*q25`I!PogJie#DPJ?2Xu+YJ)FTq}CVjGy+44=I^FS{kk&P(C z7qaI|*e4B5Rr+v!oznkXKc~o5on|Q0$UM?m1EyKs z)A|E!yD@TUU8z-CXTl?phlG@&MSm{WreS21LzcY@wau7bo7FV)pgD7APntVV&zYB% zu+mfEu-Axux|8jr$eNdN9Av}L+v{hmu?c4_$Hwom*YcK;^ll>nPLz#pv{*m}`5Uy@ zuYKrMyIQq~%+&j@C^chJ>S=!x*Vd`twPe&%-db|P&zO^X7UozS(}+F+rG`9UkY$+& zxc1NvLOLAyVL#vIY(fb58+QhCXAD6I!lQm*oz?j<#1-&gGn2%*Mng-vO|IM{p{|P)n=Y!s%0`LJ&BqTp`>Z0 zC2UJ-fUBj{cX>Y`QIgc7P<0i8@A5VE$7J$}8lJ~wdP2p+Jy_w$iQ$dgu9aMFc9Fj@ zPCY2!!QBWpVKfKvq3aE+NX_j#-Tp&vKjQYEcl#t;@%!yRu^vG2PfQg-MCd0t5 zUm10+hBL*Zj|N%N3cJfJk$+<-ScH*@QtT?Fu9o)d?gGTF5mzJz+vQ& z0Swxo$_kOWKxOX3)?IGv`vlOSaHN`7wc1yI6$i6b=7;X)DN23V5|#%b6C{NVmsTHD zha)}TkHtyNWo4IFd|7?PxN0qD-j~7C$4jtw^*w=cf^8UbEgR@vd#SEJe3>Rdg(26p z)C?tPh(Y^NwJ+6PWYlk@UoD9rEPbfyb8{{Lm4C^q!_|>i9ff3`f-g(TD#k)Dld)h; zLB}gV|F`5@AVGF9?i!#k*JZX*nNepOb57FNe>aNMZHF+L3;r{q7lp zvhe-deAPAXM6Kq9NWME?4~>PR-?YA46~^ zNpL%fPgX;Ig|#9t@_+O0}Uhi5y=U^1J;o)3=2a%Lru#K zeY4aT)&gQTOhljAgL!jRuuq@ut+XONDu)B6zd%wU<4JVR!jK&#tp`ie4NBIe%73x2 zw1J{(pr%iQz5+Hs_3JRf>W0-&LI>%BF!dX>UhKw1vfv14J>=UBwhnEV3qNP|W4?XC zmlcQG5BT3WBcy`hap$pH^1|_J`7i68DS?>h!>VU*wpQgBwqN ziT(?fd6`m|V^at)UZl*Ql=p@}r#8nK@ApD5@JmY%BCu!BK_J|dh2{$BR0KT9`lZZ| z5gUt1nyh=S_dHTCMILD_r_kGR!RFg|fOuSi?^cnjTOfS5KPFirGV57={1GA&VU}z@ z!4e=#Lb-m-_td&Izdbg&u6qne-92KxP7r_UVf;u$CMcZ$gJ;DXcP9r{fUR zgnAeCIem`}@3-bYYk$Q0(D{GV%?guvTF(0SHTf}_vR$sjZjbEsAzC9W_ESD4NNQYkM zXQWT4g4{!<#Mqpt31SDVQI`B_B=|y{+U43nt_LKl%*7~= zPz5n$8Zga!PK63VSuid~*$DE~AS=JOm4g< zNQN6bwchRKX7&XXE(R0)$Mk3 zTRL@bF2a*-4JgGsbeHFiI(nEcYo*Oab74E2=ta9 zYCHBjWtatcCjhr#;p9upc6;Lq(cVN>p@=QNFigE&U|uyrTft|65yW1k#(9B_pc<^5 zj8;qLXjt>+)3*p#gp7o(LaV*n^n5hAqsc-&=!Pet@N<0&GYgW3Z9v?h> zTaovPZjHe3MoeKlcTFl*%26!oV(cJQZ)(BY;6S{mK+UNK)s#zD!WY)Sghl=)xp7 zm|fIQI|^*$7eYmRJoSP!M^tltusqTTg4;pe;EAp9#HLRHRn&}#;b}-a5#~o2$;mWN zWPJ#6XfD9Q$dAMA*w0PX3v%1{cqIzHRh+X z&LqzjI!M|(5xYR54!0w6nFY?zkfe|@0ugHPtOBr^Mae^`qflPwM6h3^$}NjU0gj@YPM(I!Sk>Qm4u! zgh&v5GVTN!b$Ujhl|iVxu~F!aEKC=l&le#3(GO&_i}KAC))(`m4Di|LB|)`VP`%{o zmonPv(kbLYYbVN#kI*BHadRsPMJX*E^CTV9 z!8kwzgQ`70a=Lw=cXA~tNea?TobEuc2bo@ou_;HNYs8asb$pk_lW=wXaku{yZiW3R zzn8B0w(2q6IZm|DaMS#$YMPlk2nIU>hc@jfTVWQAUJSkZb;w$D)IfZJC(6+L^LVPn z(VMn(>crH=RdHg%ZUxDPx-YLEB=`uX8gvE9cfJwmV@%yS3j~>}G$B+Vk`SKj>Xq7F z1YZV{K1;#JW#NG@(fU&KOC^WcL)VBJ*Iy-(R*wn4h_W&*rSb#nlj_z6$0Z_E?mO8+j^f()BGU^_y_fz}Y{lb0K!Rd_|bz9!d(Z?%;ky$_37}2cy zOF{pwkn_ExlsS?`N76xK&rvjgD5$>`pzN?o%so~%kC!nHd9fNIm6O#+mXKr>f<54u z*g?rv&4wr~iT?x2aA@P^s$ulh;r&|{Qmn3d4Pp*7^I|5%Cy36R*Eh*p3nA*RiddA7 zg#3Us6bYzI5Qc_pK+>qexrj`W3A^76hXhR#D*>KDoXL4nLbu3s0x>e;ln0wJ(|8gi zVHpJ$UJl~R?FrvYOISZ$z!|v%14S8(Cpb&O;RwbP$4yMkxPxhf?crJBDMhZ9v~i4_ z8V4q;KOyaexj;GJ4t+*IdF%}ifN@6BicfYQAr3=UwW+ENx_1I!J&zIvDB(=h64w~8 zP){a(ooIQhw%R>8PmeNV?L92qy?o!d>3r-K`AFLCIfp?L3}Ul$M5Z6p#5`Lkn@KOu z6|-M=x$0rz@&(wPGTs#P0N4@+zh1aBmwS&QZ|hXHzFM2jB4Z(HKj5$3Xb7KA+(0zj*#%1psa+ z=^IPxryk4cpIX#~6^$4KAOeDjO5Lws@JMZ=PW7_SvlbZ(-;Sfr1_HfPh(D2OD&732 zy!vjz%%cvG!ZfxKvkSC@FiC!DiK96ldBl+-kU&jnVVS9JHLzs9+Gf6Q%B(hVKnD>LC^{@gbM`Y z3G4zXgYFKhf&@x24`3W%s_ihg(oMXr0CbFSoXE)ILZQ3cc&{YmJs!Ff#vadSW+!8f zP({4Z#Q2ba;4=7PB;Ld9TLPuhi{zu-F=TQ2vn+M1)i@Da)MRJ=E0cP+*>^N7v^mH_ zj2#%HoSlgHya@WvivT@X7d{>kyJKCr%8Y!OYn|yXQ7Lls9{3t`j&8! zUPxL(t$$J0Pn5wH41XQ@kD`9Mk`;?LP)sm*{IaJm_2KsCsG}sHVYXnL$V*IDWVr84 z%Wa{TxJ_mv%;sdAwJC=BTz{*3=+m#O=+i2+Q_6sddiv^5>UWgB##h(k?N7BjxJ1rD z*XJ=c#Fhbh#CjECXdxd8%B2Qa9>1h(SZA*b)Di0Q&~{%LE!<_kLCz*A<~>+8w^zUn zoI@4?gv@C{IUs}fKfKSwXVb(Of!63-e(_HV+CAU1?r#O}-7r@-tLWKI)r_o@FK+jq z3)BmNdY;TIA#2*1K(zEC3#eBggmHSO$3Ul^%x(@ELG zqT9&mDxgg&3L#Ixv-NfDvS`bC7Ki4}P+b(MgVi{NJ`DPcxB59^TmF>VLmNIqfF>AF zPoEsJ-1?p$=v`hmH&yJH`?jo9;#(vu33?(?%W)(~fm@?!t6NQE z4QbXNb@LcfpOr_5d$6|)(Th2hyEBJ7tPWh2)d~5g)TMi=UA%o7q1Hw?rxaIZB}#$@ zhZ4kKn>C9FoLu|IHA_N&v1ZaxajS6w)2KTS$cQ3R^oLMRJSsfEBJd3~VK;AmeZJ>u4;LB9%itdR4gGu#(Nw;ra)WF`6r zq8cIVmN9HC1f^G|pEJbx!E}z2Klorae1oGyIZCO|uuWqV+999mt}j!P0z{T65J|2% zyAvrcp{=8F2&2*_jtdB4v(z!c5$@YLV%@GqDsdJm5QIm!m=iY{}xnG$8%km!)CnP`K}2Ql+n8jfYb4 z;;WUuiiMV_w>K;Om{K2Pm79c_(cVBA42OC|sizex7lTHhK!Q+T%tazNyChU^bH|7hs z^w)WOZ;Lie!$|O83Ei>?Q6U_KEQHHJwGRQ%C#b-!XwVtcV($;ikkD$3>ude|dTq`h z8_e@~ZFaZOn4l{=%)k6T4oYzkV1rc#$3EHKo4?CiD8>Y8RU zMcv(OZ)$G2xfxFrbbPACED;I|D-=f2@!T}U&^2>H`?H$fP@{iFYkQ&=b4}ZaYwDqz zx1ly6m&>ZIF=-up01>eQYD~LckfqoGHRAsW7^4aWjA1o72e8M0`q=Yct|#&JlQPK^ zqWh@5m$yhAKs$9Larv{(ZJPCy>kTp@$J_f|IRvTnsklQYjZ^*EE#I=DdBN>EsfG4kjW*M(D*ww z`*saLd8-BwCvP2~1TX64>u^LG`^0Ot!mBm&TFrlzvLYWHaGw=o1Go+%M#s}SrdlLs zWoq9qb*BN!*>CXw0tq-aGrh%QhT)53#$&dFJwp`c(_V_y1j^>4eClcy^}|}>gy`$%aL2-$Nbj~@qXMtEy zDcfDIYUk7~pdAvZ%yX4Z5l;ii2^LYP<8s~AA_IY&rh92QbTZ5fRnMjcpnmZu>+&cU z+KFa2A#8;|S7v8AWrLc%UUDE++}^IoHVh@Ti&E`AV?HKWXyugIw}ik<$;T`e(uU6- z(*|B5BkL&4G4G!veNQL3_fsaY&3dsURV_)~t_|~3PpD|$Mqk_{eGzQR-Jmz-)TZ2^ z+t1yYYfBaS#kbxGTrsrFq|@h#s$OV~{WImX$uy_?Qu{^7X{usDzf!Lsy)vB zFa5dn|8YG+_&dqRCohf>>eGrM>Q&JXh-w7kgG>a0S%+&e#c;-8Py;3TY>e}XKQ;;3$c_Sg+01C^d+4TN|`ElLE&}Bxf1Z z2gBI`^nCzQLvq45<)`OtmDUbXi_(KUn^xy3lp%bfw?A`Q0^0PY3dp~qV;Cdm=1ey? z;V%4CA;y|n#-cBEATU2rk^Y*RfJxP3_DF{aaEt}cK7Qy_s*9*@1{<*vf^8ZmJw1~Ou z!$aUWMLei7L(UNMp|seo5>B`)SI8xLjB;cB72*7fGsT%I8S7F@eVR%CBxA{5LUJSh zV~JuDWIDd?Kq}xc_FIefF{)Co58?qlBJrCG@Qkc@jKto2Rug9>70QGbJ^0mh&dmU+ ztLl@f`vsfq;(B)bEj|07ik39G?H)IIR=1z8ozi-^p}H=o3ePsW>vO3a@#0FlOQ2S| zjIqH@Z1QL~0pCeCF`zxnt2^2dqAV&$!J*KRS6^i{nmC9O1v;N6UkbK)?pOu+_%9CfAQqucA zZ5_d0wTs^WAoHM=83CbIrrpmrdi`^$KkMi%)#%`AK6SHDTt8557_bAR8Nw`hsoQjP z(`dPU1)*;;Go6U|V7K?(KH4aDo;!yQbb}SC86hdUQ8tH!O~2Ilw76)3ZIuEW!c zln;#Ad?0gqgW9fv{o|CM4y!VkgQ3(c$l6`2GM9;(D{X7?09<*EYuT74h{~T{?Z!j1 zAZ0?_WIa1x%%iHVwL_`7(b7ggKF0h;Oj~6lu@3Y4Cy)bT$?WT20WvA;Px1?yd=t?t zhJMuQ6X~M~=~)v-R81IBwfwMTuNy|rEA0@rlYnM)faunRbAqVkJdq?xbe1G6y%+}Y z1uWBaTN%L0gZ!aX2r4eNWO?*{NONr^&Adx}e|Uy#)t;_XViHrQV*g-$kU1DU+U~Qd zgUljq6c1{4dv$PlP+zJ?#LP6|jX=E~cm;x}Dq^VS@jMq8WYyL?v$c zmypl+>ok%-Q#TnP+{ZspZ1#ya@S$)h1WO&#*gMlmn1N})ZPL}JO zT?*CA33LjRX@6>7r@9^5ha|)Jw$1HX0q2$7=fxckXpK z!$}&;N9_cJ3I)X!jFEEV{UBzQQy3z|R>5j-$!4oodk47v2i)Fw`)8Fq%-w8Dsm$~R z;rzB048{_(ijW{n^ePz~Qp~TgD-q}{DTjl>oNxkLuD-SL#7OE+9Ix;wjzl)6O2wn; zWpLo*`S77UcF@gOY1C8^p;s8atbNAv;-F$Y_=((5uW#imi z!s_3YJ2oGFBM*_1i%%C}WCNEL>AV{S&VU@iJF9mZb3XJw=L?y;4C7R|-d@HVT>!(4 zC=;aJs(X+*wE8`8o~_~Z@*tqZ>mYR{;KqKai^X3yRBf=@v;o@(8UQ@ddvL-Q16383 z&0uLxaYAKIIoC9&nrog@Ya@962!px7`%RKc^^N3UTt?NeyZve|rBj)S!F1-XA2!vG z^TrG+%?^|sSWgCZK1LCtT0zwOtp?p+&N5cN+gz_@kNR=v`f+ONH7djNK^6{ZC+t~% z?nYRlNQs(!pX1*Ot%Dfs;2K-|8utFZpm!*+1SC9RWYos12GaX=P0F(&4n2*3xUSkk3 zdd`EOR#Dr9`sxJWl0veEqJ?%h7LR!#xh_B%Y6<1rsC4XgmK<4}Wc3vQ9Cn~LQ2ns|WoWM3|^S1*^)TVPKD`KY=H9i`&dX@p+9 zzgb?>tL|^M_cX^n;y%D|R==V@Et2bBfqA>E`lUA4C|i(1aBkmi zw%=)1*Edt-s%BABKto_Bud2e;g%>v4Z#S!Ta`)WiZZ6%7ve-ALDRp>4T}G|sEbJkx ztrNkCEeHJ!3<{rPJkaGJc;sY-J=*_P5KR%Rb8Fe6>|<$Yb%V zzf6Q%4U8bV4&hBG2W0}F$Wp_nLubl3a77e%OmE7S1arLaT?CZ%Ctx5NvcCEi47nS3 zrA}8b07va^@6=JrRbEv$PvMEAEcS7AHmv@nune>oV;E8IHPVmB`$OI1t}`xtl?c@3 zTR>mQlhD^NZlf*ebzdeWzG7clzOdo5~p?)YcvI;BFA9>5n?l(T6OPk#}LSK%Ca#DWmeY2Zg zTIE`_o42%mw^n!Gl10Ty!FI4VOg0K<4GI5pYE5w|#Y_pE+3;$%r#`lCMtmy$e|! zz;kDARVwRBo#?Bhn-;UZLFxX|BafYINTIzs9F*^t@Ajb&Bu*o+Vvj#`22CXKnN{ zH_Cc<>()j6F-4`2rtr&NxC!hni!}gui27L&f0q}VUXyi#Dx-fQY}Rhf4oKgs{e^(? zZe|I*GWW%x=K@U%LEPz({mNV?JI@f_jnh(D7`B@KZ0DW0m<6JMe@ z!R;ry{Ytlg+PcG@ZvO(MqEzNYvmzlAmqOOSPGZe2M^xWX12;*x2FuL~VRH5IPt#~2 z5>69rgFs3}bu6O69wIwdORd93@Ca2J19Z?{6~gt$x{49|IV z4zakt10iZ>tGS}{#gVRp2?y#xR9Z(slY{BK)iNQmrbdJ63{PDu7UU5gNn3E|2bY`t z)kHr+)5!S5r_e*Bv;@mcl(;exdSST%?UXS%_4;4-Mn+#yQHPo%%!s&w>lW<2aGm0X z+T0U|XQkC;Mm^5b$49sUBcY-&@7VL<8NajIkwGjWZJwcOF|uSC?~J`Ketr>Gm#=D)wUG!Q>?T$ZKw|kb1t#no)y(|d|puAiYqH?ZbN#c{Q z*_|UGlpuR@)s@$Mo#=3(rFC?jfyxc8Oq;c7eW#PFti!-|f**qvAPtWog3w|5BN;>$ z`h|>sKI8v3<2{#YG9?#9hwl0)j_FvO(6dctqU;%B{7G-o2|;{QoL%P_RELIfecL2` zc}d*Bi&v)Aw_=|nYvXWTOiCCWy{&nakVvtW-{7FNadc@6j(NnIm#lix`fji9@?0G} zaF+5nczV5;KSqV$PY+?^f}1-Gi@70f(%z%K|A_Bh8k@uHBgzQ@nF9{AMCl;(s}q28 zCX;5i%vh)k5yHxZ5el-KBdj2nA!KyfLhA^qa7PRogl}s+N1S5L1w1G63^b3#l91Y+ zkp@C(P^H}Es$6kzm2)vj!_11agSkt&q($z&yhk>E;B8^T#n3$KrSWS$MnP%J;`2VHyKzZQ>!TGi8^T0FZb-x_Y^~ZlJNG4M#X=Cc zh~-Nn!W(YOGD5L^mi>v?f)!NpnOEq zr;(Vc8sUW%5yAwJB?%#E%Ue8BBjSvV#ajgUbKdN;@hFs!;oRY~>DLaQo6m+nmbG+0X9Vfq<^OpRNY;y#>kUbL^6<4&TuL1bf8G5>C2J z%`b6heri)T!@3${Bf)Z+Q5*SQR$UBGZUti^V7ob=e`Z-(~%eGay6Spd)VL)MFc6Z zzIe>1u+}^HPeXq~Mf4$Qi~*H}0ncUdP(2!pz*K549CwFBtdhP-txcaz_%<9lS)+Aj zt(IlL$>Y@vBy=)0zqRmf&z$GQJ(+vP+&lqu>-2Uk1#BV)XR66!6A_XOWe;ORFWjul zJ0MEgob<`Nx@o+`pm$|ij99d8@(^Tj1`g5cT2bESbPx0PJD&cor>^nT1zuE;t46No znQ`bSsT;HPC$zivE3KapX-0eUo3rG1j;nAhQif~6&viCX{n#cn#=|L*0SKYx8o_Q_ zITu_9ggX2x)SciwxsSxhvUob2H~@fhnUMqrxenLsxZ8vecHm11+Ui$$QbxV;r0{i; zF;^68@}{Y-CecMT1Djw(q#huki;t$IncAhQE{wjIkfKa1jPMZB2kw|F$CaSm z1$?cJpEJ(w>Kw`DwmSZh+uygBuxTgGGaU8uV!a;4`SkkvieQ>(b;2cpYU>KKe1K(>^fewt6`V#&m<3k2T+ zs)kOs`kU6j+?ZP>_siXR`!hi@!7X`nT|OZr?Dg0s7vA#B(LS;5*W^TF^CQrY`7w$s zvU{RzLU8y}p#Ch&mydT86qb5Nswr*CtBra48nJDlbYIOYIRo5`c{#71$`fN{O(Chl zoLr#Hngad04g>1^i7cg~tveYGOzvD1>YRLrtqekdznV9jkd5dQ{bbhgs6385+>7qY(-S80WBF;Fk&=dzaeI=D+j)8p!}D3pM}=Rw?;^8}g`1))$Xi6lqxvrs8x?;@2F z_b7+UM6r*gt4?!lDJio8GtPQRq%RWHYD`UT*2tXVNzuj%6(pr)mPm`Yv?!@bt}}1k zJ7H!;4%5kE--=JjEPGHgaah?~nMBjvaVC+W<^Bvj4+q`-ndN4&uEGP#o{eg4s4gOh zAC=$%AT#pxLhmp>UK#u5G9U=?jItiWk2weA6bme)C6;q^e=PhNHjL)DYv3>ej#{yE zdWROnNcU^{xanPFzv^1iGYw}Zzk5mFoZePQ0-I?`OT2;JfoWt$_WKvWO4b#T+leC5 z)-AA7nNOu&D4@}V?!l6V8Sl{<;{A=KGhwQ9sRchqFAqkI2p`F(VY;&&of^pWuKYl4 zF00j*cap=G-H%hWJFHKxeJeTqr@MAm^5g2{a8Gg|%&pXsar@7@{RFqa$hyP#llwck zA6zP@G6w|#W5Tu{~>(dl!1GFKP9nj$YE{IcdRF$@ME8+e-_c7Q6W9 zY2utR(dEgOyOI+3dIclQ8{Sg)V^gc6`?dLjE{O}Qlp>;$y!+WLrLNTK3LRZ3rs@nx zB@Jsc>7At1yPiI`R3}DB>E)@5Vs&NAYE_d{ll<1dDndR-e^vG(6J2b~Y$6?rFQ5^VXo;!qVLz*0_BFZpa%d*3I4DLvrlp-y zQLFi#3@B?Z)dDFyF%H$s1aV#Jt4nZAuS3UqzB<>>U4R}Je3!>k7#;vy%*lo=ty_?0 zb2Z}1uq@sv+I8U(*TRtpef?uUx{Y|1R6j+P9aP<(+`G-!x5~ZtAA1H@NI|qo?F!ME zZQmdcWYGp?Zs1YU5elV-Acz!#oo=6V`{-#ueY?Mf7CcI*XPsU@=F+icJtIO`?v-i> zsso|}&Bq933xkE4#~?>(@+bHvbJ?4iS(2NETj(| zO9{2*&bdD7nJbIJs1RR*BGgGT(&4ys`3V)k2qe$2D!Qfby`GU!NR4t0)>Vjed8V;U zZQDj!7^%y(3$RNRFtoSPMvnaAPW>C+^Lb&3Sy6eX^Lt1lFv?rEEj_kJT+K2X+w_XG zg0u`SKzdzOGv@v8*Iz*Xm|kj}H@;q;0?SG7)W1Wn$eZ4?g)#`EB^&2k_sIY6*8w@B zWAsno-x#$hBK3APdaSOJa(#q|#Cf^AcVG37=_@9K zYj2~kM%(A!Q6B*ZzrrU=z3&Of|8y)HEfndjFdG7RGO7)DYP12!c74|PE$mR^e5>{e z;;q;5o@J>_W%&`TcStAw@VV;plR!YD*t4Tu}< zmC@b;(~6b@alJI7j%{53|HCX62{|m_EY_Daf1P?RvbJ=(GdGx>41wDj&-Kc1&7GMA zK_xD6e@M+CMPp}WalV^OWG!6TzE&z_al(_k+jo_u^uXfoY$nqzR|crHV`6*BYbWnf zl}4b_dlt8kWSc}u$@9A{{=kCWw+o6NOz+=$AbH#mGT4!K95VEw4;)IU zJxa_;_G;mWTMui}AK$KH;(l2$ewySGMjKqooqR_XqWWTIyb#Xaqs%sz7U7nE~+{I4zmay zP81ZJp-DD%awWPcD3JB`roh}RQXE<%peAs_8DcA9ePQ>P5}RL9ressUFGZ*O1yTy1 z?wd3GZ0g!#^q4I?Zp~xXJZ=f0gHmalQzx~%ebwy)xA)iLl95S6^NMB*Ga49Yp@8-B zh_jrdpf%q;EA=RjXv7VCxg?x$odZ_4RYZqmaS8unMPz#1x|6hc!DAKmcm)*%HWZLa zw^xJ|d?lmbDtmt<#Af6Z*ll_!8E8uwQ+B|3$ya`X??D!u)rYfea!n#F9*P)M^wok+ z9MdEbM-oVhMEqjIUY zD?E=HKCBkDP!`a4M9LFV2R{$u%V8M8-Hct7N;RVrO(Z0P!U*}hZ1&V@{{Xi)ZjaI! zfnHiT5JVgF;ru0RYDKVo@6@%`^yZ3)Fp)8wT=mb-stdC4b|QrmatCbe> zs`IPC1yz;7ELB&qfU}V;g;U3f0jJPHVO={>MF|GMcv@Uz68o;n%uSfpi1KMD#v2jt zq~SxE6^;*GA}9p;-QIk}CV$YW?|R*SyxSk*_JP~abo)Iw`ju2>mSd^R@>W12=h&n^ zSSl}(*f=ArXhj+6Od_#CWbCfBBZ&dj|5#0v`IJd@ApE6Z(*4CE1lw!48TEQKVI0hx zRVh;m)io8s2<6L51i|6^)E!pcE9ek50na0`2W0GnORD;E3Bg1WZAY z5`!>4_mrmcsZIKnCVLwEHCMjXq&Q3VYjf&CIB{fXlfq%HnNypf%5j9#yIRDjB#=ZZ zodtIZ8R(v-qp1|pul>*%O0)-@-9y6$IDUxZ2(6Tsir_(#%2eU#&{U4cI))G)5)hJv zBz;Ihis2L@YM^c_IxNTXhI!b}VJjG}Sujj+|460Ti^Dozq$=toU!7Nx9`evzt76n# zCZ2mDGk~bCiMew-asa_B!6t75O81tOZH?2c1^8*;n(krFF`11}NzuyGX$Voh?-CGI zh(JE_uBy7Rs&1$fN6DHM<^bdu2(R?rReKkfTf_>#vueLrH8)o6b=5Xl3`lnPjI>CR zCO2=HK@B<}NzEnnca}Ii^ave8oEne?MkhNtKYocLGZFD8Pq(7Vl5Te4l~7?!Mpr_7 zsbD4FvaWcwzqY8>74KAQi}+?Cs8`2`GK+Y`(Ik#oVMpC;1sNl;#z$rg&#NSqS{K7H zi)}vJg47GRt%`~SK>E7=8Zz3i`d`B~ka;G9>$Xh$SImE^CUS*PqdiQmm)R;}Xdb+B@lau}h~2%e;#liGEa+(L~IW$eOyGp&jI86pLATFMw;?MJ#|B0^`D; zu^j~kwTsM_?}`Bwd$Cd%QMJ8P>5BlM)=QQ84q@$R4(=3JQDG~`^D(9nHj5VDX9>`U zBQbl*$Q7)&1yU}w>TG@$&XFUU4o_l;6;8G4l+j<&@s=pQfbG5LyvzgiiTa@4k-)46 znge)rM|++!`zzfJ->5#ojmYe2_Ta`IcJKD3W_K0B7w@21QMtF1+L1d4$Rmq+WDyd! zyeZq^e=r!BORtF^k<2}yZ8tI7qTw=HPVnf&e_}ufQR9jV#YmI^xyuIq#p8Lj#uFT! zDO{#d^HVtr)w>h-F<6sYMvqkB{!@l$CvhISbaYthGV@ugo1vvD2nm;;drSCs@hf=;@mw+; z02!nlW)erdw7qV&LRbM*` zO}WE=xcz6`{(l_yY{CQY-sc>6J|!C$lNe zJt^C6R@%gOfNMS*puNPdirtl5igNz z-!qe{6SJvjy(s77P)5-EGrjZ$UMH&ksv$q;$JG&7!#(M}uTl6*9zvK)$Lmx2nHlQN zfzoB;)#c;W9RvDfT4wDAz!lo#l8l%>As`{bPG0@cA9qPc%$v4c$hjMPs+)+{lR=Ea zt>|_?3#P^P=5b}e93H9EQOe%sD#> z{kUiz@?%cVhYC_p`XYfNI|y@A-HA;E4ZI0?jk?j(H+by33!qFSGkbFTR7b z{11gYvLiQn`erYZdpv0XBm{V+cpNBbYik{CN}1v`zJn0-vI5u$Pc2MDx&*o^|pIr zGSSliY}4=X!?o#CB1k$4Jr~FOTP{InAKg3vUeJ@oPJqj^$DbQ$I1k&j7#LZ z^ZG?+`6gkhu;_|12Uv^(T2IE=A^ zB~8Gii2Ax!PxV+X_;&UhzvXCmHu9FI|L8@>_{1NjBo@HGPloInPXp;MTK#2WJiR2{ z_#3&>^^9kp_43bn>RC^@^XPXNd8n`GFUw|jfpR~^tNs?QV2eBr>?eAO?mE5{tj9|n z_7ko((9kyWa@r{Ccw!JMrs1Cc;^-YQ0C9>+Fcdc&wtXKynvxh9QAp%>q97HTNsMf3 zj;@tnb(h%V$zFf+7Sm_=d&-MVm|JaG^5D-!ne;v-$Gztrq+7H?`1nzS;JO4*f*cU< z-hH{Waw2aM?tI&?k+H+ekJ2o-oF{&h@-0G<3x(b|3Oy*l2iTlKn4>6!bt1EH@=rI8?^gn;2G4ITN!ilVShZ}^cSw#{ zgZibBGKVIK9amhCYx2qVmLI4Lrl$o> zO%t;dqD-p<+V8Ye+qyepWptrfF3C2JC-UQK1FbecIDOJo^w!(4eu~L+CwEH2ol_>& zf6dyxdCytBEwhCk#v|n-RB>HYd0_Y+o+ofwLfhkF>ad(&!bZ26n0}5U({*x|D-zt+ zzyy|}VlQHNiA>`4I7=SFCxIP1FoF|ek&u2EvWS%jAx3N`WO|z&fY0i+6LRA*Wh3Ks z*LWiVhxzSIh>6fYdr%KWgQu%W+mZPpp4dEshvBrcR5rDJ#&*-yjCgwYtnEk^9?u*m zlZ~2_o_+A#S(rvd+jZfhagkaiZw?lIQ`MyoS!n(OvyB=E)?%v>w%Ec4EZ=F-jx9US zUZQu7mbC6V8}q|xmtbicljkms6Z4olD~{1_1-?2Y~qr+&kuZ|KYGhe@L z6Ibx-wQ~YL*zI3R{K79xuJx}CS^L{r`}cEezqiV{+$5_yj$(mZ$wd|Cuk=}@-@<0F z-L4!SS3-m7mYS~GKKW%wt9^3IG$(qWc$wWNTBi0%vxUq2(eoVV74ApNKDNT;H1?XAR?CC zKcGX``VW$5rG3nKjvOs->g2A^U3wqSM@d3Qu0eQmgdFD@eV*xb`! z8xxp$w)phqu4W~~R^S>8X0(5eOs0Z|g%AeabJT3$T7sRT4TcqbGHlp7o~67eLj9{S z|3avr591f$Zq)Ba?>-f&d&2a+A^Y&rkQbG)?zQTf_bQP4ZHVM2N1=XL*E6HKz5M6X z7f1S{2%Gf33isnTe-OJlG0zSOqXVWR@(O^NeJeKU%4v~#G0dD4j#Uc4BRr{v(D%|X54TxEq*RKciY_Vjh(BVWi zlpa(=;UF>$9ZpsVL)A!b*q*p4M~D?uZ#a+*2ZdGY}dv? z%AUo#7UrrORq6%cCkX*6Aqr#}8GIbf>e)$+wTq}y93itsU4R(M0fFEWu}7smXUXE)AcaJMHwa`1vnY23W`yW~h>%6P zPBOLrXpw;)-aPT7BF+=ybG$M z$+p``T6gn3;)3}X9{iA#PUAkp5|%TcLf()IrpB|7GKJAznF2<5HXWo+ilgJA1|omg zPl6(Jxj+cU?boU?Ke&Wg<(q1i0&}aC$x*O2xnmuhr8yS42X^NGq)#NOPv{kiC5$iy>#k%(!?I}CB(aVtQI7T=0>tJ)N| zyM1nBOq8Jr+ne#@%3VleNM3P`N*$kxj!XN;V{LCUtyZ0zE}xawKS+azPeV2qSrNcV z>?#l%Ry>pXX>S8Mh5Qu>BPa<-X`m!$<;fi(B!M-^X(1KmSA&d1&?9p47Q$5tJ|fE# z9UuhM>>{-bA@nkzEywYaMH~QChL&ECiOxW4 z!qF(1vEl*3+9#nk^z4lY@P0207zi1I1XGPozWzzw^eK5AXnHG(VHDG{lwHe@Lr$ ziTHr+v~RFEkYW+BDS-#A_EF0)&9W^^5h+N&+3FYFYrm@h)Ble&SY1t)AU9*{x>mwJ zg#HwDtW{T8vv}-%#k=k#V14?&P~9J@-M78>ql|OB065i;YaR-wMfn)Pv}JzHR8y~7b+O7_CpoklGhj~#Wr8>Jdd8S@!P|m7#X5GG>jJW0 zf^oc0bx!b&@~vyGlfQ?NNOh;kmj9?+TlGJC}YW7d?@)FXDz6_^;*SS9AKcoO)KNX8=A% z`7sC5!@t$)IUW608|PJqWQEg^e27+ev(`amF=x80{bpV?jPDgQ#9uuu61`2Ky1u>i zd1QEn6>ADHD+fC}HvIoZ@otlxL!6N|WLL*A^b_v`3FCAOZ^&)0nG+1Qu=rE@~n~@3vixD&GdnY-{|Ij4EQz zx4oLpn-K)SOk(xfue;CAtMe$?VS8*-rC*QBp$Ff~UPhRy(U~(?r$UM}h{li7AOiQ| z)F?t9PT2&L*W6j-ip-Om-izxPcgpmjuJ;lj6vb*5A<5y?B5Re@CYuN>7#+|f!Of^e zeAc(TuTer~CYrSOy2CSBG&G3~yQ`H7-FG-s73mE}G0K;bkYUU{e#^^~vNC^>t5aLX z33C3SjZ%^~fq_L_(IiqG{v?)aJ1GuodI1LR;=(J}2K3}$L0pU$gcG7mRqjCDqx%WG8})iVyeQ)7QtNm-KO1;h4>BW=?T_s_*TH^+IF0Ln#SJ3n9mfz=Yo&(3SZo6D3)~ zl5;SU7^64g(GdZv_{p*O5Fmhssjn>75PZ&CbTLt))Bv=ZvNKKIpF^Zc7_#U_y*5(o zBG2vpwYXl`Cv@tylHf}(Qy}a=td;HjG0Qir^uxY>$oHT2kp)44@`*4Ng=uz1rm6w& zow?4JgDIXwt|Y~YPK@0$po1zUpB7S%kV?Eq&SZgH-J(|2>idEM%>$I960kOXlF zqQxBEWGXiK%uz(_j)ViNt9a2Qjhq zIF^neSGwZ+faA&+ob~+GiD~|8Uc;6iyZfEp`A6LTR^txCo6B*^P8fq|@^uB9UgfRK zv7Wb$xu>_e_r<#0&rt3gnbhNDsF3E$B>kuIwm9jb7Gbx%hg(MRl6t#LId4NnJ*xFL zjozLky*X9<2hY;#YAiVV)$tj1d`oUk3mqvbxP%wnPg%s>)sO zmrdlwe66ZpuIX25>MDN83+(ebbs8RtwcOup!Na10*F$_G9G8(&`j#->s>? z*Fb2RJT*a>1{Rb?Fr8EX-BgdT^JY^*O`(oQ_{#cDC=8eiU6fRlI?wtLu#vwK9!trh zKhB&DU>jX~nY9Zw(@U{_F^>K!*}v~ZStKyP%GMYdUVx%rrtG1eF=u3;=VW zBYTX}$0|Yq{ZOgf6?;oCz$b|54tps^PhhJa7%4$rL^5On^)m$z(FWN9au?@(R)yXmuHWvZw`Liq(s8 zd?_y{{|#{{7ywp)c4jLbc{7BZ?9C<6fT&d&7$=Y}AxZ3!(wXC;wZ(I^oI35{>-8J?KiTosKNp|rO`h3{R9 zAV^qX*C=_HAkOzD$P$(%sUI;RU52>_TSE{4Z*~yF+TO-5JtBLS>}e zCX7pWhkgFS%no9<(X*sw*PQN!_{4H)kM!OX`N;8ZLkeoEdmT_{+F=sPp!~9q{k&ax z;~_*VKOBp&&|c3nK4C0{1Z$H}NTNOVvaB<8Dk&rG#ajmegxB-hBn%I8GarbWs*uaK zaK7g_1Xw!k5)YFzRL|^g-4k`+p!#O_>b|J=z=684tW!#T#~a!Xk#9V>PNiO|MyEuD zQzLUqWKP9)kQKzcGl}|WH%m}Rv)Qsj9L`DyQ5FqxT$p;TEIC7*g@8=m7=tWS28<;` z!B1IQ`2mb#IMinCHCZGU4AfOweQma&TCd8gOS3uEn)9k2LA6=*8x%w@bbuJ*e1eAu zWLPCwaX*9{jzs_`fy;Rf#E{Mtzk|guD@p2E1`p?LvcL>+TOI*voVbf z>XY=>HDc5yUvdnN-0ozAV~y>%D)qM-F#rU}08_iCq;iK)-C1py)A_lkSMWcnm+)DR zw)#bl|I?(7!ZQo{sL#^jhUL5UWk_eJtW6ocG2@?2&x3#r6~E}JNRBj0JTkV#&ogNjfzwfVMc)Y@q8Ns9YIjENL~;G-qnIwyf5b{k3Jit_OR|4`Y6U?m&5#n5VMIw*~I|dSmZCu;3VR>9vA$gfJ4x&T9El(+E>QzR3-N6mJYo zP1X|kfQb4dJ>Q)RqH0{1>}MiMmrD81vseP~oe4I?MoiF@6%32(H6?Ql$Sv}cBsCID z-I#MJ(zuR{S%jcfo`LnWWiU^bdXrECGmtQCf#U#4e+TQhNS9_1ZdW)*IlGi_)X@Ds zqeZ8K4ral%m%Oa(NtRgNoxYJcUO!#Sm0np)ozRv+dviqk+VCE6m|d@!Uc}c_wu{i2X}%}XntM5DDHt0?ebz)m9&@139ABq!XEhq6d5A60-pVO62J`OjX~N6 zZqt+=d1|ki<1s3fvO?ZBu8YGwqX&}g+b5@czr^zMHDY$*b?T6O} zh16LcX)2VMl#uX9HM+%T8`WxSoC#{_VzxSAWa=2Ppb%sUb=c()5`+@KD47VH_Y%j3 zy_Fp0nuzWi_k@N*#v#J8PTK=awnO%Ws%VdbbeC`N?Qxp^Uu~LPNV5r>(FQ%-A?rSw zW>E_MU)tU~(5|A~|K2mJ?Y{Tf<(#wk={4u1_X?x|L3$EUu>tD!q7<**`~F_N*Q)`A zgx*DJ0s?}dbU{E8k&Xfunj%faAA*!z6_k?q^PRQ#$w@%H{_*ByuQF@atSQet^YpzT-I2ktp9){KgX>J<_U_aREydrrcrUbgzi$y?xT*A%*;q20O0RnE z^ci2er{zIc9cCd%$ z5A!cI*sP4t1%t{{ZD^fB;kVp#S%st3=;HeLTi+<#v&yM&lnKZsGuvd3;?uD!Ifh}M zv7ctABUTvXaX!{l`7iPF^A$lcOm+R&L={%|^kb$m%A1f>{N1j=|Ql`ChCs_}bZ8yw@}7x*X}} zAlH@U$^-qyDcaWZ@4PKR8}w%*uQ*DvyuAH4Sa0QTfh*~B^lV&r^$1`@Khl5tI#*)L zX`AcKCflvjMTU~hm={IElC#O`kIxm`iNv|Y_?BaIJQG_%X(=X}{h?)bH9MGx2i5MN z-dKAfqs#q3*SebzuQExRh)6b zjgt3z$$O*ZxX9Em%$B5CliI@_7rJBF9fK{&WWxWNmpHCRw(D3`VtNK!azBLk7=qkX z0DBO*Dmz`P8vx+qx$%QR- zcTuaour<7>)#Uu?m1zivU^U{c5+R1D)*Z(D$RzJU_<-O-JipCf&YQG2e)BTPiyX6F z_uGjL3y}2%*Y$gU?F*JiEJogrc9~h4+!Y9Fmk~sa9*W=EzHcB)(o&>Id`vk~d1#UU zz&P|QSaay>??5l;#vwK#kFBsRTgw==Z=Wt=NX)Wx`0pE=4EU$=M1dq z?nyRsWXUKv3!(~r9Wo-7YFV*D~=W_zhyU;&8G6X#+~kuPpjQcxDi#If0Ts? znt-H9M9_(r$i%~qn>#@W16VNPTF>AeVGd_{KI#CkLH7K()!g5jf1owl%UsN1xBGsx z7eAaan3ONLobz8|PvOi{k}+ul{4!I5==89(dms}&mNWP;LNUK+H`Ix7kR zWvkE-O^j&}CWy6@a76FVO-+%&%_dlN2MZI9^P*`(S3hIw0anWGv-nQa> zZQi|Y-hB)P61V)Bc1zBz$+x@Xj_!DIoOFzFcaz<5hC5Do$4|NAtMTJQ+|6F@INKeo z?ig;#K{9MIAGZhZz;8!sZ6OC{zDs)>9-Ks5JB@+6K9+z7srgR47o;A*R$x$UKL%*e zTJsEzuU!SxFvgBu+-|Sk z_#wMy2tKbwNGgzf``|WdlPJ7Us}e(+PJ<&nc1YUXS0Z!VP-sW71huETl=rmkx^xJv zjtxsB8`Ces+g;IRuJ1BWM5Pxa^HOA9#4rhU{l)>aX~6WGJu$YoZGUl2yi-o9n-l9P zj+6it*_>ZvZeh>px2Jn{x7V1iJTA6Kq}x$z7~2mAT_Z*t@w9C5cdm%J&(~TH=8fY~ zY6t#;lTc5y%u!58%-VNy3`MXe-xsjo@Sk$#&$;mRT<}J&x7a$3rv8P^eKAOWquqPG zz59)J|Mm8~JEq=fuRjlUH91RvIoYS}Xz$d%_U*~8-;C$vBvL z@m&s)*vhSVjl$l-iNdbp8ifya-Nd@$=Tzc*Ap)rxWI;lYxOyY6UOKBbw{y;5#?eu}Jq4T8Mcd$iX}NrU z5|4pvgKj939r*1iOE%0fW-7GGHkwDGFTr8rB1e3ZlJ+>t)X}C5cg~faXU9oi_u{Tv z@6J7g1hNbJgTDELW*{642IddvhP>f!Ox^PQQbYGTy+i6ZF>koY@q_K|IKv%tTau}S zzs^fMGAy_D8XOi>`Pryvpvv#5+q>%_$4QoSz` zV>701=MovXE*RVaH-s@ME1i1AagHKko0CA3q6vgblf1MEpc+z2CH5;6{< zoq@py(~V%3pW-}`0ovW0(L#OHn0Hts_G!qs-!X|l52nspio##sZsOPQ1czwF1YQVwqCT>N-}Cv8*@Gak4@ zd$8pfxNCE82e~ray>Y!sJT`$Hd6A;$gc4C3nIBFtH=!t&)RMpR(O2T+c7eRC)_2$o zI_&u!ox1ayclirCXx{pch-Y~1cwUhAemWuc`AD8Og4s?x()p(*$c_E4Jqk8xZioxL zrz3uVxBOilW~O<)BZHIu#o6pPv-aYw@2;&fdAD>lbL4sU`w3(o;9Wh4uI;c7PY9o7 zxRVbQ%uTJ$XIVwz!D!eXJrJxL07}T={b7QAc|v@&T)#TOrM{vo@0AJW0-6oHq|AeH z4d3X1qy24%{cDFge}tO7NBxw=i?ei?Uw5c}l+wcbq~z$44%`gbw*o`PR*s@Q&={Ck zC|?T!h(WW^yw+j(#$P(>?@GzJbaIj_&KYj*Km@{S(Gq5JUKs;~7~&nm0mc_N7#AWG z%O2Q$xtA7GdQ(tS_!+LaC$-fsEdk%no zTZky#Z*$UoYo9==GXnD*Ksb61nRJ3!gjDj_4Msr?jR3pq82@|es}Z6 zRNlI$dZbZ95APzhscgUwDbWy;_rqCd?3d=J3+*E(gY^8>QcD`olqL>w z)vn21-q#eFzu()xz%_u9TF`htr*S@!fCTOVans$4Y{B8q=Qkf*qt{gAXyg2{o+#mU z`ef~sDnIHmB z=(fjqr%vduz27^?UImJ6y;o1~@6^*74|SRcJ5x_|Vi=xR3>$6jcd}6}b$+1B{-i7QKo_!~r2Vt8 ze*zp+*57O}qa_f@W5zye%`ucweBHgU@XuYfeU*WVEZ@$#XfSK-n9bbtTzy2&c}MMu2LVua`^Ko@DHa#{Vw*1R)!!Ylt0U zyMRMaEZdXH;mPITlyYCvo>{hEFNbH9!*6ick+)Zr?UiK$EwKYk*?hO`f2VA}Tkg$J z4)N0Mb!B^fIlQ49e6QS#@hmAnDBIi0NFRbt<=*6|O+C||e6GDc*&22{TJ|3)hmV$n z$I6ot9+ys@8kPh}}H5a6p%tUoXk zL=@8Y0%p=EYKV}-H83gyE_Gqm-%t%NtOgfV2N0B|r;(q5g|}Mn^$8lZg(C0)6nzRL z2Z4wR8ha3$;7@o)n#8~Z%KBH4K5mG8O0+@94oJA7Vrmn`L%A81DY5)^C>jr zpCFdg`cd!d5yB}p$s&<0lXweir9l?Gm(gL#Egs4%a>$WF@5(JxM@S&bDiIY95|^CZ zIck0@wT`_29WR<3TALiy*yUKx`Mv0RS^AVj({J~5d^!43lPp`Hc|{lSa}+!ugV|s( zT*ow?kRpj#tbq|{0nJXDlM1=oAft+PI+W5Vc^lpUkk>aHFTr!Dy9Pg?bV;Kc?~RxA z@QsF~C(g@zabDN5fAGb)c23SUzD!EmrcCvOMoA;2dh46cq*J;0nm9drZrpeA-El2Z zN%G_2#Otz=a6P6zY+TW1$HT=v&rmnHx^3$wuBb6u|Da9(ur-1uK$-e9_*^%tYL{x; z5be+w)lAw$NfzP0x2c(OG9I!N-L7VCw0T?QZ5{dX{lOF4*BIIVAL_zbU{hyVAE*Vw z75X05gx&-$vE)I6=+elxZ4YlFJB&wHE!6CJuO6obDu-1_{5c8=dV&pFctg-3E>{fE z__NbRI@ngZ<292a4#`Y8Eq1A^mjFinPcpS^_V!jB62BoPt7NDD({Ct*Ai6cIc%U+O z#1mdT@2mhDTO9soc=@n{K*T<#Wlt(h&CCkt%EnjvQ=JvIa4Oe4ukn00lpv(5 z9(q2j=AI+o;rX=8q*|)?kWNaBpNk-JHpVXRH$()a5VPqg8?abKI|cGQZCf^)%Iyq) zi4Xz1^Q;VDaGlqO%L^9NBe)Sd16FqSf5Z_qQ)Z~Majuy3b9 zJCI=!#in{-$uQ0d!@KWv;{?c$+u=Gr`bFkd(Jl%!a{lKmP28YvKfSVLs&+LPzMH}wyYb+a1m@u*P0Xq)t zLF@bNa;+y6-*@65dk-XCWW6`Mjm1i0 z=bh&i=5{Xj@s>|6*=uouUa?Cu`0Vdbnj!5VddcIuzj2{c^ zv`bQR?A#gKT>HF~T=MD03-{W^dA?#u%r5yDXS3MjmszqbvB|I_)Iiu@Rdc~p@(qBT ze!7bFJ&3^kwpxNVO1|9T|DnTswF6G?g%0HDvdH5nJ7y*Ua}yArON3|Z-+>bIk0%fHX!Hd8k6UwYBL&Ij(e0qY$^ z>{I5vq7|t2sz0r?2ZPg5RJH_oSvqnVS%KfqUgDwY))$Fk38#b;=h-IrYCD!0#(%ht z8>uHVGXb)aBDZzyOHwdDys6#X*lurPZ6n`x?Sw@n8%(dA5k;4K;j;3@@#3qol*P)xZ;qSz z2zeN230P zWNE!Erj*$EgNZvr44GkY5y1h{?64}BG)!Xl_jQKy#Nd*Ug&GqJ5XP4bEa>rJ8{K$HbPkeSxX0Cxq*f;S~n3cu4@Yh5$1)7WKw+hDxdXlDahCkEe z$3&Rr?Z9!8H#@V7zbjXB3wf{8CU*bb|i3aMiEbw{xZKB9gf|Xz6{*4V^&ZG)><3UwF#!~A2jbkb5IMvYpC%BLaUj&*rH|ZayV_$SXA8B%t*RHvS2sXT2#9%V)LYO z&Rm?@k~V8HS6g=~yJL0SF;1ztlux>&za`z0*mdI4CCjQy=Pk2KQ_Ff9=S54+vYCzR z(Z+dd;~Xu`E;CC#e%-vIbAFk>G`(za+&ib5M&?5rXP@Y+R3Er+_55c%^PE@sjc15e_joE!@t*UFzwzq7jNf@QWgknWo=O=uQ$jOm3wOoox1{W? zsnm~B)zJGSYK1dlwe`4oef;>Ul)XBYx+;aG!!%(?a~Zz5;e{zob-g1~=BQNnB`Mpy z&J(4tXa=}XUy?#d=9^PI|76dc<`qu$%(|2zbeBu1%s_ddWtsqf#>}qwTTxAD~;#;mobKg!?PO|=YY-1KO zh|c0t>k_!}U8-K8%%bg4FY7zw0XRNo`jG0DnHgGGQlrq;2%ESYYJ#Fnt}TuZeR zH-NVQC?N@Vaq3?pq=%ByQL$)BND6uNP#0o9j zrohvM49hUfVz>Ra2o-HgV?O~{686Qv5{sXSb_rot=h3*7*VEv(QBOm06fm(xQw62r z5reOuo`+jgDm9v)2gQ-fO)buY^G+2aVrQEYPMf7}tYdY~qo_)^6dV;&aFJW%T_B5X z^#)(Qx?Vu}9iUw=cC>ZRgBVG59nw3m$M&Xr{6TO-pFy48HW8L|LUM9)((u&9Q_e8# zV&gU`34R>A@MfJ0?>u)bHQjl0iCt@ie$Dnovk0&`*=VC%)~Ki_*NYOtGrh8ZG)R8b&k$J(Iqnq)wj|uG2fqzb59-l%(U&e%E1_ zX;(zKzTD14{PKxdfa=HJ04RFt+!ag`|LP#u;;m$qnzHSSf%OJd=IkM2mlRJ$QT20( zci5K3`JnBRTAcODyv9z?_9|HN8e|!<#bK->R-0l5R9*0JmWv8Gb|yict8E%BwwP?a zfhlmcR-a#6*a^|mRc4FME>_y7gS*&!!#o}QDL!SNA}G$T`z$rf<}O{hY$wk1=*j}W zNr@*QTcPv7XeL_~3E-Q({k_b-xqZxCp}8~k++BVj!V{uWiSA)`pkli_%%^3K2{-MV z+5RjuH$TT-8JY`GmwJu+#v9*tZ%q3ZG-Cd;=5=8~j^KY|J%zo!zm_T4zt4->92MsD-5#l>!ET#a`l~74q|Qljzh9{&&oJ-)!)6>-|z<*Cq7g zbk~EIGQAbjo}C-g1gj?GdM;7O*|3jmdZ-7CMd%XZtD$7~dO#?|aFZ7g+$gYfoO<>R-}o zE^CF1|7L6WV`J_&0P^N^^h(;invVXEHZP~67t`jYbn1si@0S`PFa2%#R!KPz()GR5 zjDIS?$^`LomZA=4%fAX&H&QWX@V<_$z(3!Fh#$@*AG$cugw$c~jdgnCco#ARH!GYz z00iT$(>o`daGmki@{Z&L0dJ%pss;~M?a$a7$j94&CNVwX{V6f@4&#HwWTc3&-Bss~ zYWTydxuZ%qpItSh;2}dywXV3hqHSY@%_z<-rQ~f8B<2=b^JD#u@gG7NebD6E+q+O` zf}r4Mq{YKyekFTIv=QX%0QZgCT7z3!&8-M__{t49Z|N(|FSI{t%x{^jh!5v9I_Mk< z@zF_du->sC4s2{paE_(17uxU~RHTfb>mWaRw$(hQZ!#v$4y=aK~Sf zO$jbCWq&u;@Cy4bRJ=uDA9!X51n^0iyy+m29D)FXEF-EO+%>64VY(czocWXeY$?A>-YcuUp+urqv7+`MoO?G^+J43K{uPet29CGe-fqX*N zN3UmrW0Z#+quk<-ySii69sMoDRNZwqoThS2Y|Z8Ai7OGX;rnhY$j5*aA|L}n7%ic} z2CB}j5KW48hO~<-!6g-YS;hM%N*i@+6cCpto2&X&XWwQmJR@Z&e&swm3Cd7Ar|kxg z&9SnemGPzvHAPRGry}!obUG)Px}BEJq9)<8xkQ-{=h^v-L8c!~yp#gTLBSKZ*4Bx) z$YL|`ht}S1!|N;tnihXV0vcfy=!6a~c*VJ%IS;bIp6%K5aI&Z)X@G#g*}XgM7R{X#0X?pP#KLS@JAL_=*g6+B#utEy1w~9tc8`2KipI z4&g~650kA9^dkM(&D+k6{F?K@4(wYj@;f!m@8*Jc#5ONR7x7W8GM#@lgbdiwc^Q!d z@`+uSHMr9q=%pmRv|HnT33b>9#d3DA>0*k4I>ZwEqn?K0=o!X$KuQM54_eZCe*G6 znqTUUW=}e*+;J4|MWd^Saa|J}xej#zLStezB%Fz(>^aBJndEqOKw4Og3J!_!zdEPkcWQeo#g1-N$;Ix_;#|f6`b<~p>hi7jkyT!N?>`B43+?( zw3}>s&?&f=Ox3lljso;yJ``pPb2N+r9bpjT3tjLU@50jvHsj2Gkb_HM3WU_ zfj3A;cpyO$@?yY|AtCUXVY?bGG=56rOb7*5Gg>93SDx0iyeTi__qNkOL9ri z8-~2}2+e6MqA`#vT)o;EuUdp%<~r}1kVNS<|o7Ba4jP}p_>ZZ#Gz zi5%H%HOMB}S!L9PnT-5`pYzrMdh;m#RCRs}>l6cey-nX^g1cQD{Y}XytsDC%0D&;! zPsXk~V2!z)tulH%7MTZikyosz?jn4k*VTuBkH`vLgu{)90qz%Ixn@(Q3$sb})X_R3 z@c4rHsR$6Fw6Jplwn{sui8T}@3Art0nIGG*Ww>~ev>p2djKVXY2 z4emzc-A=GL^A+tkM~AuT?Fk8o+2mvf)9)8TP8yu)#WQlPpbL^97fZ|*zMr;(+F4Iu zPr|}T^ae=;twt%C5q-&;9Xy-H=;;D$-ZVwP6xNbp$^uxGM>E>BD0u)D(UmAB$5?*B z{J-RT)0m^wDIpA=IY;VSa^=cC+uH*Q9_GU}v}$OL$B?O@NV*ik2fNpBhXDaFghRE1 zh8ix4qI|GSf@T3)oLxT%mxZX`rO9|)BEopqs2m!^VkCoc>WR&&OJiQE$4a8KK+LWK z8f2Ng)|5x&uIi437BCF@gWw}*w7csi15DMv#MmofW1 zDY5PRs8cDRWFYG2VIagDp6aU;F9i{S+0bpKkdABcS$r9Ld`O`WK?Mo~O?A}kbbf2z zyy)AP{M?IvGM#?T4;Oel2xn;h(i*22I$~#u?~x-^o=Izu4-M@5-Kgf>b|djNt<-Xu z&>9l}=w9$dK|wnsOs&5_?&+qUNE}9qAUv~Ls)QcY2-pW6ls+(%xGN+a7CJ4TxU~?6 z8G_=L(cjcSa4i8B80<@7nz+sQiI?~trd?ZDQmst@E5Jz@B)&$vWe?z?^@hE0{=*$J z>xqu&FK0vw{G?>pZ{NgmY|epZhayl{BX5L;m$XXV5}94i9VQqt1Mt~tbG$lfXHr1= zGQ!7sODW67r>s@VlJO}=lS21`vZR$_b&+^JV5I=!fNjWDF9kx%G!$ju5)K1cyY0bD z$P5kQ0c)6@5hTOUClbqPsc1;IZKh1t^+Cpf;*j%JYZlBb?F9Zga-b+*N`Yn?AhHcW4|o?iwuXjW&A;Yfz$q-eN)`Yo^Wlv_C*FAN`B@ zl)c`VYs4a(qcvY)ZITxobD_!vX`>TUCyJK|2$`U{NRkwq%LT12G1_-X;N zg7|8lncKLUqir=ovKZ_##WD^zplx6bfdc7H)i<+%ijZu9f*V zfnWAOJdg75j;L_K58M9Aq~{YaLuN)Vn&@R9h$&k)H)!nX$x-AH@zn$c(Q|1-(iXX^ z0drR4s!!G`SS78s(H~8i0_3QMoyjC)dwa$kQlW^+59t_|ArNy58%7=oBSo?0kXqDW{ZU^&5i*)g4tg0pU4$I{GKKs05a25uu`e3Vgrxi_Fz5cACjl<{ zbJsiLkC$j#N`ab4P@-m;{y*}PaSBUKJZsLce=jK zoh~OaNcg|T*abAJUl4rph~RMV2zz+0ao&ADv)Z0u5DrC0M2DLryu(Kt=U*s}W!T@| zxAO_c9&gB$n`c&={p>C#S2@CWrTmWJ(ApXdG|qkCeBGaB!b(ujCv!V-elX63%!Wz~ zPzjx@yzzm?TWh_4Yn9|1-+%Mj&c^pEN31yf5oUDe$9kR3wSwotHJP*Q5qli|?>zet zen)V9t>N$mN@QhG$xPL?rq>-m%x2k4s79Uka^?$dj{KStwg%n_ChuD0t>zLqo}ZvYzkTu`S+Gld+ zjmR9GG)kqNJLT0#^tl1xhW}+h|5#C; z3Yzcs#iDtlXn)0)edVM@6T;@Egu_>$S+*-|Z?(Crp|<3tY;P#G`u^ofUALR(X&)23>0fVi22gHG#%z~hpg-7)5PgU86JafNHAql+f znV)#x0{{ro!LS}c4fZ%WyvIEAbC0JGMC=i7ug&@2#FWnaGNF)pk7ZKjLsZfs2K2hc)j)_;q2$n-2$M0`Fhldd~D zfstqDGInOm-XECF&*Af*+BOQhVOosL=D4Mr!wdPFCBZu3W znc8tl)wA9Dme(zpR)`{+jq-^nVR80E-y9oPz%VDjC5 zFPcg$1B5CxthoU!y%gq&!G3_PZrBBp1(N9xoa8F#7!kvJMxg z3B=}_hup>^QEH5Ytek^;=&TtkzkwCJXUO|ckLS+-Tu2{HTz>|A(kurTfQcDHDD?}yP9^^t0?ZL!z1`0iO~Nx!?`-&3$0RZKeB1MMPP9jedkT9sYrbC$eR za3y3k_S4hm9lQaMt46ytbpX_0Q&dKe2#HBv8ow>b=3TLeF5L|~J(=Wf39dcaRJyz zRb8Mrbi>;!Z|qx*_uus`-r!rjkyCBlia_70A8Bn zvaYv~BguV5rTvq&pqhMlo0|VGddck<5X-swqUH>}#ux>R5oW)x9_oxZH5HEwtrcv< zx%JeI-WW{2s}CrT{&inbyM~->1g!6XNPXvea10XZSo%uoFT$)R+;#Xu8=VN^g`jHcl)8@i$e^xGrk9YNC{_b<&8E z7}u{^pLi~*F8V6Z+}MC-VrQvF8(d8&-NB3Nb@jfWfVWgndO>3$npb6LhCpeC*idmN z5k6tad6~KJuF=vgR$V356ZE=Dy4eeEku4X`dmVNAl1_GJt&Cd zqhgXB&Z&;|H?XI-U0pPT_)McThu{&iVg9dvqOMJBlXP#}u(Q!4>Z?Yd@ojLW@I~li zCb}H)y~?O^5H2i@tDo%Invh0|=*14&EiGW5-X0r82U}xzHCHkaOKqu-OK;Yz0-=%= zu8LcxKB4_Io>JLVn0lZX;T?Tf5GDMr5obkce$l}O1b3sKz{k3ZA>QQ#7gE;_mE&5Z znW%3P`+$4*b9GX$^Bv6~s_`M$k6@KXKQytRMo?ofkuG?Xvi9W)Wz@SctaI+9%&iz! z*nV%9n{v0q$M4R)pR0kOE}kP=J>s^hN8EfA{-7=YxQ_e%ov$he#MU~hM-F!IDmTZB z9pS0wVY+cnagOJgM*N?_hEf5m7uCU9QO8?Linf>7+|3lt_vR1nVPHR|hf0eDsfRu%|ll#I~6Ew<;!lJE2N!HemOl!Uva19@mYFSa)u^hDyu*Kt0+lu-@wM^%*?dVGP z7JF9o5B04WTx647xu`gjn{fCU4@C*$xqV3Sctx=)2d zx$Bq@wMlfcO?eBgy-@Rm*h#Qq7N4FmU_Uz`V;wBXX0*<(esR*5^ti>mbK>Ov}|~fvsL=CS9)_H<;F&%u4D% z*}jjqLDSj&e}c)4pX|Gjtx}Ws6BelbF(RHMA2e)SkVyO*dWN3YFEC#O?wD9e&xNXO zu)8!_I6p)(*&uZGNIt@E!^{0b=96Kuy|6Pr8d!P3G@um3nbQ!q(Rbb&zr!H}*1>iR z;Ibhvfj)Mb$A+=zG}B+{s}taHr@_j=gY1?zWQLjX&U0g6V!#F{-e?uy#ScvN+40&= zS?f*592(XHEBa}jb0b_4yg8M*E9N{RQ>7oX84UY=L<^p0r>aF~+4>%}f6uST{YQ31 z=7?~Q;9BGF;eEj&0Z@*`FJVzH(PutvKC}!o_?=73&CYiDUd#NY-m%8NX_cms zC(dmq$Q_b6C7Z!AMT`IfsP$2BQDn}Kf(xPu25pe^9v}0lu2vD-p8Y>?peU7QLW8Hh zB0F@aBaRVIBZ#yEO-);(ik=M2At=4qBySJ4L>&qL%O_ycU{-i*Op=q^24oGAFbq_V z*M@2t59y%n0#hd#b3CeWllcTN!!}bv?_u7dd6(L9f+-?KJ4(_;$zm|r+mubVXWQ6M z3oR|{e9-lI^Es@VK8AklP$b>RdhN%&%X6}69~WfK+=)WeeAIr-{-S4Wv$F7}oVlmR z-mOQ-tM1`{PyV{z=rDU@&fLUanC7GGggfM4-)pYxwI75GK2$;zX~d*lLHV9GyV>_; zc85%u1B`tP9kq>iBOl>QTGxm6A_P5|OG0}oTOT20d^qbplJ!?Hrz>^{)8TLGD~NxI z*yamdR(P}RH*=BLAB8;ni(+c*N-cP9muplJ0TYbaKz?$KoEJt7u_btf@h6|Q*rR0M zZ|O%V6{ipd4=Gb*#-}``b@Q>%{5-V32Jv^b?SKFa+`+nWJd6NrnR=vC6SH#=Mh`$ku<;`}Nj*6c9lh*S`>`k1W(Bd;YCDk{ zXUw4@NkR}kgmdqgx7m*gNsLpaqm!bV(t9$PCWSMk>>54+D$4WgZTH&pq_tF#)EiSc z%G84z(X4BLo*#ZW{BQH+%6}*KORvr){+J8TLWp3`%b9a?ly0-AK8oBw3qDAem*#Mmd8#JYT{HC;_%ZAZX$ zf}#*%R>lLigcVCFi4q0Hb)G)rd||#?(>x-4<86vjKLqZ4JTy;)<|p~+fxOci^Sc}f^?F~u$y=3T)Z8D;yl^|ljaAVTDHCbZIJ-)HR)nI9LEBH(X zBJj8*^P>O=l-6<*BKt5qAxR zEzl0WO`I!q+#;yuuiJ}x5Qb}-0BKiQk%}Vb#0ZE?g5YNK0m%_yxI@O_E4{~R&*UW?Kn zVYBm@nHh@oW#=*>yHKa?53{0qjn5@Lzqefu_LMk}^|lxmpNst8MjprCL_G*;Ob(AW zKggm+M}+MAQ3e6@a*5~p)G{*(TZ4tJ+?+RQTtwI186K#A(d5plRlz-yE&xr=g?U`a zfT0&(LWlvTDMV5c*9VLSATO{TDN|D3@ATq*E=AuZ&F7sK#rJ403rYEPyQO5-l)oFF zR=boex6jJ;My;t1cPpd(+piY~wd+y4p`#s3js z5DXtElW(+P3Wjdg+0LfuH;+YH0yI;mI}z?n)@?^}`3#0W$aNSO3>Zy0Su>@uDqAE% zgYtFQEO8s!6Bnc`ETs|SV1mkC)z7lfHc@QMFgiw&K@gL{7X)$cg}7Gk+A&Ox)R<9s zHIAP(7-LYqL)m)L%!Ag5a^rzjnGRQroso0xec^n*8=vDSJY&zu7w`5ATk?-{ z%C>>h;uv!XKR=lNME-NkvM>8zggj!3Rg!o# zYS5cgtmqA>+qauq{W1+83=TjG+LZJs!i@xs4za`_YS0L5F^4oi|Iu+vO+1YhMAw0U z11r+}$)pHuRye?rgiewr7IMG<5EyrdR~;FrI#7whj+{{S%DIr7Tft|q#-xz}miul4 z7#$3eMlE>MX5D>|B~QU@=JOk9 zDYVeajK70_39zKC<^)R<7=Z1@+fVM7T%AnZUV(i1i%I?!nFBAdk*3E91rwI;*nF5? zIl`yEg1$esd*OYZiBp{Wr#Y(x@oIxVmf;3Pkg}a_!Aa^xKu>JC**DIk_tI0GNZihEJ(-pFX3?7SGyX?80%+Mjxx1 zN2|Guh{y6BpQ5%3~`jf48ZA-9Ddnz!KT7omUg3w>z5^PWiW6@?; zv;aTi=|Z)t45zqiY*JVEuj-`QJ1GmQ3;5pp~UJ>{mtTjQ7EW^`VFs+L~y;gWeaP zmU`e1(XH?vbo4wLo5ovoAv9hNY67&{&u>AvTwNI{L}w}+WE^M`sRGcvrxjZpwZp@? zKP3Y$=5VNq(fx(>-9chQYuYY_k`&KZOc8OFl@1J1Cbm$An_x7FN5T|ZdxXH$KHZN$ zi_OCdl~na3ZNU?WF_MsMHgW{esI%z8#Ra>rDDh-915MlDTEqh?j?o5xnq2h!83%a> zR>;CA(h=tJvUg?KQ#6GpNirQe6ALH&Cph2vfzp#m*MwEZSly@o(N5%oF9s?o-8dafISvbVO07(SMp2jaQ1y!$Y#rih0 zq3w8oeH%;LXCbyseoihen;SD9?kD!@I_eTZtji=_P(5)f!ie09xW^HtvKTC{cOnG#)vGaI7wt#E-(c zapst2blC*+w15Fa^vli;D3L|I`b@cnup`h3{zvS0VOHIQUu6F)69m-ivkt=Mu*WJF z5Ves&&PJ(77Be==;mE9WOC-^vB^Uy`U2(33-R|7w_q%i7tijX(U;{5Ryx*1~f6Z_z zaa*meA1^b+g0eWL!oo%F2*OswtnC{|=(7fmYc(jT(S9LB^#~2rOJW?{z2=I-VKQG7 zMi<^P*kD(!w`K!jzHKS-QVomgT#$@ptjoT(CY%n}L8miT4gU)f3v=i*S;DgefSmh! z>@Y)J0$Xe{yKgjRld&7|a5iCgQbW9x+8qMMJen-l8h=z5bFn0`W?-7E3_F}B~(OZ(b= z{EwK6jMs1aytj?F!IGN9BFf<)w(=vQ&$@V&WI9{-FSO<|>tAl|DY)utYmI$imG(IptIlMm=7v?VQD&V*!f&Epk0heEpG?AlQN>;}wF1jG2qatTCP4e)K2 zWmcyx_LSjVpirPsx;f((fsa%<-&&k*=d}1!=w(P$@AqIUNzZ5yhsF3DP@_CWBnf_rabD7y z0kPeh)MF8p<~(qfSIr@|1q2jcqQ!ixBekvM-@ZLL-m@UQxx?IBHm3{~9!1=Og_2ZG zceR*1TSP-+$}7BCG9CTBoRJKSa6ipA57)fMYWQiuCXICh@oE^t$!^re8HyBMOUDpR z(3uNR9H0lF(3Lz=7F7T4JRMMjgzE%_!C%pp=mprn@jtS2?T`Z)2?U7T5k_5nkYJYH zg>>?Du(bdntwlgd*-b$<7#g&|cwGkFU&trU>nJ8R)zfd*%v&|{r`kBm>aR7COPeZJ z*o_r4cKV9DdC|DjC7Xf4E)O>c7^NmCo`l57ycfb zf5)2F=x5{3=JnR#jaIwan%`;7OA(O*)r97!e{!citu9GF;W@En304zI20Qh!$@D4uh;rq=J0wtK19M}o0n>KrUJK^ZAX0ndJDa+Fh z3r+-~gm)hy^m*g126@8Ff*#3|HkBCU0v|02jXRv}r2xV-n0RSmNysxiFw<$w0Bf8F z36?R%&N2spadUVOe90bd7?=;358{czSnbX3hA7|m1i<%#UPXTc4a6$KeTC@&qgw=V z5vM_Rqg7{SPE-`GYm7+a$SmhF==3vnx0!eug1(%mj$V+%|GCBFqnQlF3bPKI^8mMz zXb*4C(sk%N$EJ@oA`N6c#?@`*Jl+02O|u?4T8qe-z(fmy;zKu<0+B(Y=QP(C6>5fQ z_SjR+NIix7QJrb!*l!$S2M}GfMU<-K)m)YEW&7z3&)a-E{2b4TG(=8Kd^7}2w8+^CyRtYG$liyc>cRI>P>yMFd;(cnsMYhY1v+$YxyfuV558~COWC3maDuy zjAtdn|LS|Od67V5m}hLkCR(inyMqa^sBQ! zs)cq1N$Q9?%0t~tF-vH(I}J=7?m=w1kg7-CY+OuwXGHSGN%6v~(p&({BcS<}t z!lb*@uv_uA=t;YU`elF%4MZX8BpAaQ(;l>e8K8&5@|GY>tm|bVl*CDJPLa$E+Q~S1 ziDTH3!laJJsST`ETI;)gsFUt^J$uMz6aGZd(jB5vh)x@PO-n_{??;ALwG0QxpFjA#Sz&;Rh#-K4y(p%6Z|8~G#vv%{dRP~j0`jDB4S7&H&bXQ+mo~x zwwnvu@vpqF-CopQ!cG}PK+GqD%xM|R1iMajdVNg3BRjpXb$YT8cVA(2xI!t5{D^N- zVWu52QHd&PEr#;~QQ6R92Q>lqw%Hes2$JEA>co4FF>>(i;9qP(=v@Du@hh-Ip2l3* zI$zwIA_N-qP4~?o^aFk2J99VHi(Fc_C>PjL>Eq^U{EjnfDm36$GX>&LI1WG4T@*NB(4*%BsnjDSjfCz|twljTxr@5fhoW&BSZscDu<-AU}~(AlVSN^AuG8UJ70@Ktmg( z(T)>;OwC5lZ86U2<9(b`f_r;|`+5=DOTV2BfKX~N&-BXO9G##8R|p&21q`lU^0|a2 zN2L#rsN+{r!%)A2lJI(9?dZaIYf?j{sfqbM*X`#y(p#}jC)z%i=n{d`7T}`c^qKJ- zdJ1vc$(qQ{7Nq<==|@?mN= z%I|>0U;9#b_nCY8X#2f==Dt4jqrNe^;=aB#lf%5w5&WM0nff#mXeppmKT~8STxj;p z9%-Uu=u7))8k7u%*%+2N&T`5^Y$}i<(&3?;h>Eq0xv-eLr1Uqbg-c8Jl9In>ipYeg z>*nfo{svH2NG3uzUGJ608 zGV!qX@ow`-x7HZnjP7anAW}`EM8-KVsc6A?f;>hLZo+B`Z_j_pI$X=2l&@MOSlnV1 z;B0A`Hcmj&YIklg1wBuC#w6$e5t&y*WTBux9e@Q6Eb1QT~st-3cf42}SV+|xoKmRwthh?rC4P#4_>iJ>o&N+uV~ zCw0-*UpT~9h)Yd=F|i0wTu#9-!Z?a!nRH)>RTWxVu#zENU!Vt@CDB3}J8mYZ1GIR` z4@CqUT0V*r0oaf{s9cppJ}IV`pej}i;PIxg2#qph6zV~N`1V)uJto8=J2O=#czcmQ z-%hiiB2N)zL<{rEPQ%Ozksdx<=w!t*`D~X>`HnHvoMF*TBQheK-D#$hEuUj6OUu2u z^KRJf@$~xL%!b{r>{!1W++KE!+grNgAvwdcP6XyK;wxeER9jhFRa|LT)mBys%iZ6& zp1O(+u~y|=dbld(uDw-;bFh+ep@ftxC1~VNH_l<>Y*&RV_i%!GD*E~M&#gWIiLhPW zzxCsX0(#Ag9QtL7F7j*P_kJpe+=FK!?8VxKEAEH(%&#mrD{`2BC=Rbw#$TB_EIQQk z>seKxvbp6jjjKBMXx+20vb#~0cBBkLKrUzp=>jqUm$PGK=+2!h)8p#FAROZTYvgrP zqJLO$=-fsbQlFs7SCX z&v?h<={LHtIfmh3wgC~%QEaAUSH^j|R;E`?Z!{*NGYD3+s=~7_Hxz@^L!zme?)Bbt z@CqwEy2=1umcjE@Re4j8=CAZ!t?DZ+-ELM1GW$tyS!u@ZXYSD&v?g8}%zl5+yLphQ zc*~%1%XV9KKSi5vkn&i|*=SfUyH|I;TGkVE`(-S3PgR@4)z4Y}Fd*(>((h-w! zj=Nc{+U0L4hq-;!TnAmGqAwk>myFcz8!@-|-UeX6TrpP0#Y5)A!Q4rM-id>T4EK%% z-yN|p4B^}N?2!2lNKt0lmg{GR>~llGHDfPQ?A0Uos*&2YBS9s&dwlv`Blb>xF1&wy z>U|^j-jUjI6V0y-6$`H)#qt!I6U~@p10~z)R|zPEy#Y2*bddU-WpM(Ltx5>r2&c$I zwC2uUb4RcFkvsb4#EBu1GT|^o|1GR|f^W8_E^hVykM}QTSN8rOwjaN;nQW#o?hb)7 zzC_caWHhh-QxpAX8Pwo`f_5%sdmdK)aFmw6auAN$wu#i;a>0yA@+9{9Q{Iw&9p>P5v`SB6+-wql9imL{5 zzmQ>M%KT>3-=urP{m)1ICr9X=S4N}FqxQAY=%rEI&QYI7w~QO=@a7Tw{gK>l;6Lxa zKJQR_W2<*Ut9^ac%hY}k8K8zJCW-fySJ*Vf9HcKJrY`lf!N&1(;(MOFqdH-eSiF;n}+O-dSss-rcOWVrB`n6H9zRJxAmIWhW$Sd+n)^EA#XT( zV7U8#hNC|Z`+ph^ULM9ilFC3ErJ^5Dd`97Sudw59-f|8{J^cx75@t1*|uE z-mBJhxpKCsweR$rzx0|nka;8hVWVD^^R+(1v$uN3%E3D3-Q_%H%|rwPP?+W#)#&Oz zb48!|cC$t|s-*Ar>DhO;*67XmD(M(6Nd!HN!0uEzcl4Q!ede}iIrpm^SVx}SzO@{* zVehWd1s(#TnM^CRslr(dU;`+nurZ}9N^hbDIHH#wYO$TOEwb2vxGQ?K0uKE*_WK+9 z%=2FQ=pl3Qkp0uxSL_?stn~>c7vQM^N2QZrOm7r^d2*y zhie8x#CS>5_fvvqje*9ACVJX8v%FpGBCzueu=L%7{xO5z(St={ywe6f)BW3m|9m0* zT_JqF5J^IY%&!M?&kpjH3|HpaLG#R@|NFt<-tn{Io82j=-!R9A9 zBx{J}y01C2&py{{rkm6Ig6DckVF`V{*Zhwpn*XaX0Khf~+xky4)}j1R+xRo<)m%@k$-D|RO^oZTLU!c*JDkfnEMCn z&ke9FoIMnrGh|L593z_68oSQarZ-#bvbH?Wt3$yCHU{1I4-jB90N699I47HQ%+`UIj%frE2T(* zs9bQu?yS&(x)-8RZFE+P^c)VK{bke-P7v$dPb8{!N{psL#Th`yqFI&I&pWDtJZPOC zDShMl+DNvM>e@&B0O75kyvie^Jt9ldOR?9#dbi?&bmAxIN~8?hN`36dU0cNK<5Wi3 z>bsfli?S2u6RySo<#NG&yB3PGcM2Bum*e#%m}V%#8I2sWnpI!)kzWAph`%F?~-i$;HCNt3jIm8%I!jM)ge z^ko<0LGLuaC>b3&x55ScY5i}@ocg~mlU#UBI zq(Y+gcqAnk(XR>f%mB>a=|$Hz7R9(c#s-aeIIDS2*SXOmeO&pC8c~+3gYu|6Lg`SR zyj|S*x&BqpjW2ycvpufvRJ-}5xJ*)2%Z3WTK{=%(?HTv=5H@ZcEXf66Foqp!Da&lZ zW8+MDniqYI)DLk66F8S1*|fxRR#DjMD{DWY+PSC!@|%z0afq|#qHIi%Nx9M`{n2wl z(}#FZv_F#5RwSo;Ain8xqV;7|o6Sz~Th8JcjEj@^p>!^&BS+;vn~VCr0qpK@hHGiB z}l^OS5LBc zI_7l}BgQ!@`wXwjbyT{0YC-2vPk-mu>!ESiBjc`j?U%FPBK!Xl_7(tg6#3%+eygf= zre}6`X0p5S-8hkr;uc&EIPUOwaKPcmxxaV!2oNAxaF-|++?@mnu6Ot$!3lOa7JJA>gtlO%dgn4hudZgUz8b*DW92+5tXfn|9;q7)pe(CP?*;7=c&lg zaP_hSX(4@~{S^-Ms-DdBJ63j{EySircDe>(jPzT(aNo{gM6zH2$tg$?a)E5MGpM7; zj5>NGzka$aaW!2Y&&8QsQE4b7g^qQ5)Q;+fV-!p6g?e+jjFGvXW53g0na~eJ3Rg-1 z9K4&`u@2-O0sS&On^CjiPe?!}oSGBw*c^bNd6K~M?L*Sx{&<)f-aafG?T@i(YaeCC zg=4qYq$@rmBm5~%ODCmMlPMdL!v)i?X`PLPt3sO8u^T$#T%w)b$W8xWVmE5w)(YEB zxKUgG<`A#ep;*uDwpwZP>Q=mGYuPH>(r(KP-cGhsRfXF!**4n7{4m;X$QF?BNr*LG z)}D+HrrIfH9P7*me{6PW|8d(cvh#@DWY>`Fb@3jududO- z7yi`jiJ|0P;XeNCXJ#KdX0P-ojtqBr%pTzOHwSsH^*}FTBZ%PYzxH+h%KWVgg`$*q9wC1W%F(SOOd>Z2=R{*f?>7#fQ6X55SQ@4*A@~o7f5&MD|P^499LfAK7M{Lio7Jo?}<(6Ue%{w z6M0o&Tg{siydkn&ujQZYIC`Hjhf;Z0gyfvmN$A)9al6_Pfzl=DL;;q6S`bwG-6Q>) zJ{+E2I$SOrE*A_(G6P)YFBrdQxYzY&BNk_}Bzwdy#{1W4*tJf!VQl@uv_lY#7aBrX z)wBj|DkxRS@fhByl5J8y1q1z-1O)rzo(aeU4~e)qi^#{`b|d*f)i1+gJrQ*>uacm{`zxKRn;bpRNRFX{g(v;>d)^8}tHpY&}kH00I* zy{AUY3!^oz0{Jn&TPl{BRA<)+FRjZ=;!?O#v=yNQ$}&=}A;P$%4p!t9vapW8Y|coI z&L1gfjg)go%JE}l_85zSmb^HcBbldn=Z=(f^e#jwpAc~ySr#2_&#Id<>+Idx^`TjM zUR`dh%b)CSwW%mlr^?^E&(VOW(EIrA_s*)5N)$PXF*8OAyxxit`oZelZNI9SuWR<3 zn)|jkU?V#{I-yYq9Z)x?jgiyG*nYMiyF!bl`UmTBgxJ4=2CmlHt{N$qjx>ungl%o^ zEdZ3cQSaX{QYd$ozaPaUy~*ba)!?JtjPByQeQEY1=t5}6L!oWpuzP8u1pOfzmK@<- z08L7@t{?rer9V=73^ElvQPq;EVZ_je@dmCp{*IDE-TZ;-$uy=>O)Xv-vz#JnP|}=f zZA#zpOyg`UXRAS-pt9Y_9gk`ol-dj;9%6RqDB@^6h=u~OC<>s|lBspjXf>9`9Mn93 z`=Ew-7V#^9S=wK*9C_3VxKwNCRczX_K-EB+6%@}YDUZ=$7cH)`8YKtnMk1G@3XC!E zY(->iaU&SP^#nAk_lu1fA!PE35QlhlT94CcYs^n)$TQ}Uq-pth?SODtZvT|a?^f9t z73piP0z~Ut68aJ8-1m=)NTepJ`2_c-5LiTijh#d|6{a^wXj>cC#>?o&(O6;heK`^& za>QF0;GcU#Ql_I0uLkvO@B-SS+V_xVUdP_&_oo!a{v@LaC{NrPO>cwNPn%(7j%QDeU6dfXpmOZ%&z3`6Wl*0;1%)21b|l#2JOfv zCvYA;JAs*9gH)N0M(u;q!H1&>VH4v2MP!a}P&PC{>!%i1@Pr7S={~3nIl7DUMm=Mg z3h6Oj)c)0ko~v}rYBRg!@UHmV33RxJp7?TL?T@^TX^Gtg`~&k}`3O3FpK%a```Djh zODVxV4(ePr_ocnf&dmPzzx%d-bpbY(b(xpC%rjkm!1|jL?V%!v2}FdF6MsWWZ-W2M z{z3>xWo`MY7~IJkRnb%!55(qjnraTPuIU@7qloaWE&cZximezUpNx@@$EYqpl4}2| z!*M(dRtE?Y@CRcurc)HM8eW+gygHFp0-452;bqO?z(M}3P1-d90Q4#MG#mkWj8Nm* z4jE-e*&`$y(@!V6yh}j`*F0ur2ayZVGd%7YZVr#CQU)xKDhd^R$k~T zjt)j)5Kkh(3-SztZW)38S%Bf@qx=%Hn;(SXVhcr+!@I(nT@YJGbeUOQ=7=tPBr~;U z2J~ZD^WI^~^4>SzJ~*DBD?`W@(2XK=)ZmQhrQ9{4sxHZlklMfjI7Z-K{%iZ2(9`4dQgc-#wexxhDql=Mh^^VFML^vxH+%Vi7=}v&5zE)2Cg@;x2cjF}IAji@VH{E^i@;_>T90ZundZ@eK-F z=>$&B?b1wK>Q*_cE4_PyES(^?1Cn(9DsUZt*931Pw)-Z(HC~pFCxQsh6!x|8^7?ony{0r2ypYrrqkq^k496kg|FucRS8xBEc{Eu5q$G8c^-#T2H&Yg^Y z6mKLxq#Te!JGx!LENLs{Ch!`1QRQ?a^=G6}ilFg&Bkt5zL_^{&lxUHyTK~({8zZqN z&0`qorlRIEf#X-v5yP$ek&Q80QP*{1HD#2KSehEM0v`3mv|veWB=@j3)!V$Pc! zoIknWWO-nseR!fxP!VGT$s0hArIo|&j1gp{=xlCfX_VFeJ-BnSxqq@U>`4AF3I-0> zdd`Y+_=s%9aBASboG~Iea|A5>SLiNe#t7JHX-pMlw5+h)>POADHCU3E5q=SF!3Q&i zssNaQ%m_@ZF}a4+QnN|zkcS9|)zq{JfV7pR*Pn($uHaOd;aaCa(FG+nYAYTZtSrck z;`%EKBteNWqKPorP~)6|jo+m4YcZEF7~_aH;;3(*d25!o?blhINresI;xgQ)k*&H#seb!_-y6@Fl zlg&|+Ys)9`Hgsa)Nqz2xCr&meOl~`QvRps8p;`HT`Dek|Q|wt&Y+>?~lkF3e!+R$; zvd-vQ!z)h#ssh-+z{aBwXF@0}ds7X1S!6XpI}$Nw6}m^9*E1RF3P}qw1v9RV0VxgV zDD!tnI1kEC3$3Nh4hYrrOiK}%JzQ@ZFID#{jXlDzRo`afM)Gd#f)Oxr%!}KD1QS<| zkubIs8;oPLP=UvHQmSW}mx6^z!P+Y8VX7Ik72EU)GLyHp5%JI;4=@AU22@EzoOSxz zI!tFfiI4s92s5%aB3;dwBOZL)7zjz8FS}rpoxF;yA(!3Q0Nrbt$ITkET;`0Cxnqpq zZ!l*JJowqtPYtQ1K3kg3o|+)|DnqsL7sq(cn3U)b9xni^%4^mz!T}eUPo}hVph{al z1$P|aONUE0u%k771_sg~RLrus>w_W?5inK|O>9VZ0cMR+(~(oDgkEoy0g!T~TgJ}! zFtmA;S?&OE6)Q5XIVnV&3X0(&zet?OroWa zCiO%U%SXGUg)m?Ba?|HilaHpzVZdkJuzZq7g3(V_hB70vD?>m^sh=iVmHKu~*G$Ey z?Aj@H?SzY`&?vRtz*C`6@Gu|vM(uo;;)R|@YcO4=hQdJ*zUJ!!qz?ygYG6yAOCY`A zcETU1nQ+}dyj{}`QbCYJ{{LsStQ zD~=Fn1PD~;bex;iL5)4vvK{bN_nv87=xCZf4MPB3_(i7QSTljeOsFNbk|)^!Q&+2T z@VfL1VaX5Z2W9}SAE*?e6)Z_&Bza?6?qVo! zPLnsL1?(}XGDl31&&N|bO`ZK{nt1nq`FNUqG%fsenjAVoj+~$?j5$Zik0P^Tn)zZ{ z_$3cx35Bf`^kx-7#5!gJIBA^+zoX+5vs70;4B%iWVhxEmSjHfc*F4y|qAP_ORtRB~ zrDZtnay3YJI9ATc>;f4w(%t}UY-+k%`J%}f0nk#uBOuHbY3x!DT(R0kHw0yd52mJf zBN|+X_ai^p`;iBJpUeUJxT#>6$Q$P=wu!+Kx$$1wZGp+XsA{gV#W zN3pmEyL0gHZf4xEqmIb%$akyFG>nomsWI}5F|?tZat9sftB579t4EEU8S37p?w7mL z{nY1ITMja)EyNi>U+R_HiW4+Sma6U)r0`8jDh_fxnNBl0;*E_~L%0SDWKJM+gJcfr zv0N8XRw+!}Lu^|IMgz8>Gm1^OFeD!DKqf-Xuv!9O7-JP++H!`d9O8H0M(X#2&ywg= z?B1Zgn0FJ3cE?~tr^$}GKT+XgCm*yU{ey)x?NfN@-C&0@b0dUD&<)yMS*f|x1XZ5J zQr(=T72tv1)C7y6YBEk~BFTF4CgKgDKPxmn z3;z_}YvmsL37Io-IiYK7w1ocW+!l!DG1Axp$PZM|Ne(O|J7e8s*!mW%SB}K6#h#*F zO*2W$L#P)%V=deJ+Z=C+&1@{Q%5p&w2JtI}nJ42zT9(;3kkSg^B~P>9LJF|Pf`u$E z_ikCDR6dq>RSP9C)G;m|%1%7bBiUPv$B zA6D)Q&Hb2ZL41VCt)aOsEZrT-(op<3#`%?7Lw8%~ZVu&^u+DRMQ=03-!X=?u6qc?I z<(kl59?BJA?5|WV3EiU5T@=d2TAE3>FtqbRnXm6O=ZD#OxbX?CK?z|FOAB8lvLb0& znaGUPewE1AN$jsQe~}bby9Vi^1E{cpdH8x_UrFTEBz_SOiX?k6313R&8KN=C(}{f| zktdV*u|ytEvd5C}@kAcbJNGB{o<#0V;yV+$E6MIm+{3H~D*TvqGm(54)!&W6e~LEg z3O_E|;qLXwz7ol+QT@dzL}|j!v#t9&wEqs}%P@W{#8UXZu<}{xJ`d%CP(BQk#)j=53By)qOD zB)yy*1@kmv+R0IR9t?&#_y4+kS|q1O_N++Gj?(}9{7F%Gaul5unUkZA;}!1AitG^) z_O`Ue9H#ZUU(2uLu*e=8$#GHrq|lxm+7m)KF{~bo;cu`p8DL591mvg#9V#pgJY-(LEDy%?r+yc(u>lWNfS7$ndtwaUR;l^@Op%aT z5of&f)tC}+34PxDekNbXj;mkC>1PB)jqOK#S)Bg=md@Ud<-NG`Yxt@hCI>I79->dx zNT{>-%Y6i?!&vCFu&tmg_D3sCS~r!l)GhPNy2@ND&oDDIK~o$W3(?E z=g;Kj^XpoFcllfho7aOq7uWM++u8fGleZ%;Pq&!~{$Bna`8!5Z4wBSg&)bENgLhB& z&*x?OwjHBd>c#qvGTZy({8_AsxUQtB>a@s%=g)Hyw)!w8{ux4THZ^s+k!FT9Ka^ja zk*IOeR{zB9WAV+C5zx?=3)0{<%nq`8c#tQM2O|?$ujqo|Zaa!WfSCx*Yy#uUdDAe~#r$^?sjNzB$fzBJKvl_#U!njEub zlftQ_Bg67Trp9d9lyG&K7OZXwlM%CJ)3P-!Ojv!5wzVy^QGKoAx^^8|H(tlATUiGv zww|o7qZzJe)-SD>Y-kbo#v2%fzReri>9SGGmQ62hVmFpeVzzAKXfut6Ufr~el1jFy zZ(hJACH#TiT7E!|%q?YG?AN!o+sL-nZGs=#?MP#|o%vy9JM~$r?2!F9#JSoKq1*11 z?HKM9>}YmMca&W$Q83b-!(D=%jsE^9LcGh8n#%zhdXyv7j9M)uD3iuMlnGJB_c1*%rsC;pk)C;M5rpW9dVtM1!+K(@a-AlTm= zknS%BWe2*0f&4DL~@^i4k0rHDhjsOyY{8D~l^y` z;=`utandY@`^ml@59 zKpI!=1%X@`#ErAk0(FI+A2`pdRNo@?q$4loyN;}s$!kttckV4G%U$|5#Z-)nX#8bY z@JZ~m7oEI>$lb|5U7TNe%7srm_jf1%a9S5wOoVs5!>Rww zz@8S!=|TLNgZ?@>$W98}CgAS}oodG+ah*Ki%!4kx6MX5g+?UH-kz)k_CS2lz+nwCu z2Hon+O-i`g;O1EL$lV^xU2$+{EceF2J+ZsZS<2kzhTiPt7B}chXRadlI=!L-J$r@g zyu_Ic^BSP;^vGQr%T;l3Wh~dl!L_klhes?q zQp~T9@`$7_Ld}s+j`(uqnj^|C|11$+Kty9Wj?LO0@hC!zO&7;p;TTIuf1D#ObzTn4 z=Kk3nG4@634YAF5x4Ri9KQ&`986(ESCSjfIum#i$pfyAuYoH_JIIb5)m1>1jX_)zA zrHldq@tL{|J{^MDl=-{~4T|EqoJU70>(LS#S;QAYA^}B7Ugv>63+HGeRS+XBu0{d3 zu=-)sK#XZpS5tvvhPi;MEfqy&n2Y8pirh}1s6<6kY-vSvCAeAvR8^{~WlWB$D)k7v zj2u-}S_gPk6%$heb3r5v9!=p^?xRZ#EDmTM93cA{G{_8%Kv_Z0<~nVM=_H`Kq#ZJR z&@j015!I2MBamHyvVxvXQI}cGmxDzgG&Y*xKv`81Rbzqy+LDPOTh=wkqpx&QI60VP zCa05(qOGaH6f?Cj#e%ZJ)q`nF|jpIu7JQ=bQy^iZ>0oe}<5mX%|O*fFT z9gaCQGo8}TD^=uEHW2K$!)Zeoy0c8Zm4@#^XWYMgl+dWUba(D1Dr5i`BkWhf(q-0O zVr7v{ue6X-6*3{6Y=bMUxylwVvNWilkD;R1iN<2)TRX?fTwi*AET?Ez?w<0WIyotp z6MH`XEDP8EAL=~`QM1KOp3;l}OiWzQsu+qv5H(yp-qVB$LOG$Q^DuVuoDfE!0 zrJ4f)f|_Qs zxlQC&j602e-pC6knI|$|iccue19tH#h^f?SF<3%8Ti6JmCJF9hW3j89FZOx}61=R9 z;kJL&E;h2nq*t2A+w`(fRPY=TMD2Vd7ipW@WG6cQ2#wpToHcX}@fv3s`;ExA5?^V| zRM|~!g0F&Qh2^(jiu-~T(_;UPbDj+RK!~a~fEc0n2r!(94>xwKxys1lM)nr}Sn+Vp ziWkcch*fvzcQ<#3*jq(zlLEE>5d@hRyBV9}Vsc7x_$^{@7ITYq+$eIB)UIdvRP7yK zB?bRY&6lf5SbkhWM~Jdan#1|x=BP<={R{wuJKfk*405>mSYwB2dyX}7P~%0%s^D1d zII(lB+Z&3(^Ti;vkBfNwT=$5`qmn!%^01^2i6de9L!|MRQTK`5?`t1dK+EUOcWE3f zfH9=wOn51VvOV(OoKws>!W_xwh`5!>n41Qn;`1g%q0b&dz<3V|SlW&II$by78ag@; z9{M73sCB<8DAoxAUx@re$OT}z3Q5>bYfLTV7yf{f^ILsll&^6h4lWL=v;>t{nZizG1{1cl!wnB% z2!~q>&aDrrj0O%6!(2^8UdKoT^N>M2ygpmTRvrvZQj|e|Y`O)*ND$v~Qb25dAqEJN z9Zi1(v&6DWj#LAAGg~^kZ|3%LarbF|5Qg5-JAV4Ms?ixQ6%7C_j&2+HLyC8)YRJGI!YCtdN zyWhk^L5f_42n)$i?OkpwBtS=X| z9CS5%Bmn!!S~84BcPYU0W;^P#bh~kFZRJyAy|yXM-h?YC56slINt9T#ZJICF4And= zZ1t3@X^2wtiJXf$aA5X+NAEsHs5XGo~G{@G}#ABw~pa zc<#csz{YLSFg{}jb~cApniguzaoR7#txgIEf+CYjCr*A$`)f+*)yd6A%&}4xl{3`j z5Y&adMniD}Ve^)eV3y;Ywq~kpl;}3I9oE1uptQCT{TNs}UpcC4%-aWR%E}>*gBP20 z)1+;_jazAwi9mPukhtmbVwfte7fog9LGi&sF-BfzsLD}^(&ktRGojhwgbe(P>4#R6;4Uz`U zamj2MjZ4FfdT_-i7||{$`>a(fE2-+l1IR-_Y|5l_p4kX&9->CUp>6@24sa0c?&S+_ zSTA1~>jeu7UDJsrRTV1v+dN!`(Ir*8wyb4qfD}c%#{hC+@&3m09D)f@_rAc@A2E?O zmtEvQIY536qS;8c(Ut}1)2NRwCStE9U#uf0?jRt@5K!TdWaEIzY&MaNqs(?+4`p4h zgZvZjq0lH3e{WrxE~H9_Dj$R}=0MqvFkz~v+(I@FaA@%7Er1LUAR-69p&s6A^Za<` zpF`xe2d!IMsu?q-s1a^=@2O`b{7;{AEk$gwANqYif0h-z+ZXgF64g|!+Rw#~&31&Nv7a4NpdRIelAtYIfqGe0 z=(H2HDr=9{&|7NvZ`@qj)RQ09?>pyULi%_)9HNw+#`*QFBpd|?tq_QIww2?FE~><0 z0q*J}m!4?N>mskH0jlRC-UV>DH+fq_UeDF+XaJViGaI-+51hD~GvUyX2AjLph=ztD zR@ZhbRyD=2AJ;oorL1;{+F<>!R4^ZctrVucT0fIF#!_xD-L466mdHCf8kp|!Fi6={W)2na(*>SQRp~HfQD4n`SkKMWEgUY*rX2I+8|d3>ao%E!7YmQu zdi1A!zw-R%1F>}E8=~F$M&mfYB3!|13SX)h2{jEJ;C;7DV)Yasf0Ol^i9 z#zU=>>jrl&q6lD>&V8V;xdvwCoE&4QG(*QnH+sbb9~cTA%z@3S0H+npjUZZG@rl`b zrLywTO2M>AL3@H^Wil3~STR<@w?p?HMj7V)u<$R;$|LgaDFnd-oq7u_2sDDxJ6J`r zYz!I%)P%6#EP)cH9hhY$+yQL>cM38Y7J>lhOp}(yYI8fx@5_F_^I~af`ey}?Qc}`^ zwe3+iADITv7nI|$|)KmqK~5yMp~G zLd(8a!ONjLNGsThHF_|uo2Q9)&Ae#%!blcGwF@I46QOO4TxaBZT|ve^$>a+k%0f)^ z9wqB$IAU=jJhLTyEHn2x;-ehf`dtT?Wy2hj3<((=?TKRxC%wmIsdxLxdT}#>L}eHwDwH zB6GL{?rJElNX^?(@%~8ei?a8Kcm*c>towY0`U-s2efBMD&3w>(hE3fvYT|vtLkbW* zRT2NwKn+ZjJc4r1y(f zBdkGP0rR%-%!CGh22=x=G@peUv*)1~ zQr9j8S{YkeFXoQPiLFBI z5hiT)8GTxFe|-m=jg!#8&H*Tk;g;$oBUdImC9raU&NUrkV6jWXEdgG23)zap+D8`A zyJjQo=pw@FY?NKCh+SDW#*QnZZ_UQWoh==%Gwd*(Da5dqX4+7y1YQekL7~z3!h~SF znNS#?f;41ey(^AMk^sqynGH72El}UgpoY+Mizbi-eZnFjOCRtp!DTc8xq?36Zz-sI zuo(sPxxiEAuc7S2zoJF`D>jKkI$|(Es63vME~au;$KD z2j<>N<+MW~@Khbo2$DWQWulm7+@XS*nFBH9F`5VMRW68hkom1>A9Tn$k=y7vC_f+q z6tv3IBI;0=Je*iSo0PfL2x3Mc^)v6 zsBe{Wk0VRs`!1kLzJSgzGz5=^>tqvQ^P3f%7O zOa8polr@+(jjw$p=-h~W@ zm!4{gB|OUvVjPJr3>5YysAH*E&a}i*abx|v&**)gXbha`-E;NbkS^WN&Gm5_^v+yy z#|o`?xRM9-5Hja2`GTJ{8nLJBF9%=~phXX`Ki1p&fmimv3y)SD_q+v2p6;ja($tY8khEOU`wt@L;Xabs{L}AmNN6or^#0@d{l9nL2RS^Y@eC|i z^#0RA8Z%>`5P4Ff7rRSgb@+#<%+)LND_ieH13n<^NJ$US|CHS`_UkY=t`Lz5AE#ofGb#{{h ze5P&ly6ZmQ*b9tYXdG9x?h8!CbSnsmk)pd# zrRhtnL46!Bl}?P$6ZhNbH|Dn;e+r1T==OF$l|8Ggp+z;vNHSLb%lsr{8~7)Z7GMvB zlJTH`l`{BG(g~;v?bt?;gAM7PSo5g>h?RJVHL(`Nh}y%0!iG5F1K`569oT(D+%Kvk zvgb+Ej>P^DSfhTB19(vYf{BglMNhbXL2Y0Pt;`PFz@!z_FU7%ymZpzUn2pIrf4WXp zMX#(V-pyJQ*_c%p7dEJQ#K#yL#pz&5(5Uo+%^O5*#mg>3DO-&TGjztx&f4WdVI z!(}{|I(f{=<9@HhkE)cb>bGcB4G$iEP)$G}cOkdUqfQ>-lOTvWZ{`kX&iP;1U)s|` zeR>V)nm@u#W2vGpRq^R;n5p;^8E1_M{+)_8RAY*?hRMY*44sZQ0ur{6t-bNv%5UU1 zl64}u$>xy1>s*XG=tEXI30UB4*8ze8Ul()B)rd6E!9*!EU5tK^QJooJvqA7E;)vQ6 zE;vfrcwCks^E^kd#yJyd9|FZ1oLmP>OLfq5W$YZ)P#M4PP!Z8>ycJp(s|Gq`FS~>M zxV{rJrC_&~{p`N>0NLN{C;O_&QFgE$#;4Nk26?GpkdvPp{tYT(Fw`z3G>Y9QwlS(A zSG0&wogPP=>3bc2E`AZ2(;%WYtMoZOByD<~kSeT5>^sOGpD-Uve2xl3|SGXQf85Ls~SBwL$a?!1>A^X@$DOh!i?x)^55m(i+V-OTe zM^jUO-#<~Kf2R4KY4iJN4r|d3;9cW!fG9Q1)@iNpIv1R!?<%FZ6yrl-;!|BT&v^)8 z%+65V^g( zz#{>ef~Nw@$fb9Ma;JJA0CtLm5FZvlrvKIO%L zdv}>^3rPjRyKU2KhD9SBgRuQz3xcb=fTVm0GLFN^AK8%5HR_ruUT>1m`(t3vm0lJ zy8a||qr6fqUjltD)80`D+qQK7TzLVpFbc;PAr?c~{&>^$Ao)n`$e4woh7-s~o<~w+ zRlTKOMyV+2?95?x{mSA3V1J8iPm%H6i$_p;QQyRExdMcG0RF=0`<}4&TO;3?wkNIqTVq8am-HbwAO)NvN2S7Yu3HtN-RieoQJSme)SNBU z#M_{SoJ$|>k5%gqU7>ZT<2ldf^)!^JlbEF}axjm~!{Aw`Hnt;JZhea{5J?dbIC3l3 zVd)$}fC457AughD09wWY$Zu4-+)ji9Wwh($NTvjgb+`Rk0p=EYr`M9zu^rQxKJ|KK z6%*$Gjdq0HSeaiqNpI?m`T~zMGq5?gAM;x7I_A#Gezy%NH9d*j7AsDvI_%r<9R%YO zaGH@qlMSv)ewS!9{# zxpLzyoy$7lvm9Z=R$2p@@raAYI(!dY(7-tXi-m%Qra73cgud(hc7Ob#h6|9}^0RM+-2 z>DFBRStpO`JH)@E^`98yP#pnVsn2;t@4RRgcJ%2~>{>4spfiJWxkN}p-&HeY zjPwc|SNPQ#@d6N&9)DXqVyv7Evms{$_Vhqb3(AeN^i05cV|>4G=ABU93K?H7nAGvT z0(49WJlHpectKz<4CI0!ogdhFL2wxs&A4bq>7pQ-rP`xckRkH*`S{N4?St=@|L*X9 zr@Ec^5}@wK(mS@_DRCP>2FyGsu=4}FOrtAo@Tr(jq~%kwp9m}j$Ki8U{%KS8j|TEc zU>^_Uu^|3OAb$@s_E>@m6A-UNCSdYXATI``r`4di?*PUAdbX1s7RcmglyKI?*P7r4 zW%)vl6poDSMw2#uF8&*a9J37 z#YOA#5D$wBqW-LeZ$f*f&LU>Y(m?JG+U^a^g-|k7Jhk^bKMm!Ru#Vs0#GZ;73%GK`mpUsSP8qGvi=J3Q^b%k7`g0D7eX!bJm)W2Td3C$_dcUMjJ0@7L9@DH)w zRo7ota)nGPtBflI|EWkHKnB8=x(@^SAgF&FAUo-8?Wc(7s1Ny2&)|I>$X7xA z+W;X_Z@C#^u#&h5{z;yb;eP?wugKu?mn=^e^)W=HnD!avMGDkpK zG5RDWVJ_u5=sfV!D1W`fU!UZUbAxb=6B9O!Xp|7__5>T@kCjGJCMImi)RlbO&ex$v z=z$^qSA$K?ZR&D6xLp3et1p*R1D*c(SZ!pUUzAt+X98vmtTnmAW?wN~>72kp48SMu-a%60GTJ zPYGZc;7m+>==^+u9T-5|pv!2tr2F$_hIH!`(oTz&R%B$D@mhrhS+Qfwh7}kxEnBC1 zWVO0_s(Z-JMOPc&Jh2EJl64_4LNqVcfM7jZIzytIPKj2}-%b3D5#ao_yE$RyhEYNg zpiMfgf3tu4I!cO}bpt%P(seRo3%m8B^%RDh^$Y9S_0_fw?r2?HOTAZDncsAS;znk= zY($T2ESuCf?zb8Ec(Zgpd8%$bnO>`e#5T~zFN_*g5TQT^z(6u zqu=Rq^^d_H>>qJD*wp?J`TeH#&7d{dfMOzP}WB=Z1BvR}QqPmh?z!I`>ViFj z+eP-2J(!HYv%ag<4K7+Ns$nr+48=ZGVU%){Kk)*R+|p>6ijn?-%+n+K?^+t&7uh!> zc_XU#A#(&NQ|nInl_Qvs-P_;CTn|P)Rz|tCat<7Nd!pVNcB8$1vc}(zGZ;V0WWBl7%`*`s*XlYjH3!5hHGp&h5?zCPNXUo8$1S|z*i8<$mOPKX%^!=!bc!NR$~%)0}bqI z)DOfU0{%EQBVp#giLLjENzY9DS-|y=;`HM<^bXrtakNVT^Q%u{`*|#%#lD>RCZ-&< zeiNrFV)=V7R{!2@yueNLO>r1&XWWM*NrNEF31l-4Vyvzz2*wbo&9$rXC^qbQMTFLoyy}Wa6XIX~# zXqYd$cL1GuM*1D5_e-S-^7~(|2x^=6MTgn{(BT%QK-+7?K-Vqr?_c zxx{c3FRS$C0>PqC*=T}R03sZY+iME3VH)(WffkN?8hvz1$cf&D-4;YMTtiPYld)&s zclMe0xq*J})scI6u=ve*=8)2rs3TZ2%$$jCE%TL_-`KT@j|9xqm0-*@2o0w&c`XoB zJuWcc_rEQTU&k-xmRC>d{Z7Qzx;h%TMF&A>9m)&f)%*o4c z{bi(YbuYN4W13kNXB6z&1v#tGc5XpF(@|=0kLMSHFD!n6@>TE9)mJlLr}FOVo?u2|jmgYuV^;NnpMkfP0}kg9Rv|7x1l#dCv#L)yvaoc|DANxj zvl_PLUJwx6t=7vlc@86@cBGhnp6iH)H{j}sG9SU)N6ENQb#!Cni9J+YS1=XjDda-2<41Y%Q#pqZz^RF;3Gnf@8)1JZJpRFa3V1-=Ch}>GCH;0MOE>PU~mO zn2$42i~Penr)cjevZwSrMR~i}c44$i(RbBc@yepTrpTT`FBRp*?-lw&3oR(x3ybV2 z^pB$az1a3-Q7&Kgy>FQ4*38_N$*r07dybiE%pQ5DXdf-I=jktt^6z5%*F|}1)u*2^ z!Ba)^EY~R|&z9{oWjiyI!?QA<^h`ND4qqnZAm|DzXfN)nq~6lpd{s2xf;@^y*N8!7 zUrgNNiFquE{BePOW*=)@Q>oKU8AVj;#6c#PWcIR5F3plFGPyhpZ_4DxEae#WL(l_) zl3Oylx%=idnSG0JD;j$=myWJ-cPF6(H&LSi<^rS05U(VoT^8(tg!9k#PjY!lt|+lL z3(GRE94#!ze*nE7QE*2V%n^m~g@Qa^NZIcQ4L1~*63iTu8-Fk}p@V2LIMDf<=9_sVlrzQEMRR6pr zkM((OMTzIu78uU%4MpmWWx1hjuP@tMu!k*U>EHvrB`24o+skfASr(V;cWEQc`DHn$ z9GzbdA1G^2&}{JTiJ zuYK`FT!1ENe0KTxNKQo6O;4QQkMvtk(Prl~LBHEda%-u2M+s}xo;hD%QbG$pUfTe; zM&lIr_SxK$%qi99m*lIkr+h2zbM~T=oL-XCR@s{s8U7f-Gi7+ko^A@+QD9ab+`j=%KntIEAt)uo- z**;y6Clr|-R+K}FZ8K4tqLD3r9r>|8I_$+`cldbP^2I9C6j|bjI%CdbMK)xK4`=dF zR)1Vo<>!>lxg|NLWc{9F-~OjEc_EYMv(}eb7rlK_e>n??KDUGyqY3V9{X3bwoz>sV zG<;nT%KsOUn~9m#7ZrY2-WamJo+x6=kT1U#eUT#Ms0zq(thk!TWBD;C0+OotxVy~S zeaaKalroya?AQJ%C(v?noGjjL_3iNF>-~Zsud`FnT|{{GT}cPldw2JNd&*Dk zo)(i0th)A+y_3D7ecaDvpZd>aKeMmw7wsF;f|dj9{&GOHf1s^7$Q@`73K8U`2lhL- z@bfysluB&wmpN^QArOMM>Tl%tz3*xH!;nAsv;u)$eHDRS?U0yyrDro6>pPJ&n?nWh zo%MT;TQ{*@=&Aan{1fP;+7S}W5;;ojEI(Jg@7`gMEso z6>B?1;)BDEaLa_`VtFT?K^pm9$=q2IAky=1Yq=vq&zfs1n(fZs%FdX5 za&YB=n6e+pcy`6QYEW)$Hyt9jDpN7Bq6zCG({Y3Z@UqB;e1}Le$aZRhhTmS|UXB(! zS>mp={s(&mJ-f#EpDhMGmhdv#WA# zS)eX{CC69X(u&+&Nsp{VcaQR zSC9iN#i8h*nLL*nzvtLImqp7nOjDoBQvJ2v_hRVDyDI)h(tUVs#okbn>nq7k6}hqE zxP50OAm$dAAcPCliENjCJozUV=ZjqB(hMdZ9CXmE@ z#+(*6zeVP?v@UER$Kd9C%B?Mx$6MsFmhxRKe9G-D;?J7>zHnF-ZN)Z-3cjgy&d^D5 zXiMkJ7II;`SuJu@OaI4P$SyfRjxC#yOY%`kJ}#M$N)c3HKU{YS+FeThak~)v&VE!f zo@$I<g@qDbSEfLB+0IaPOlRnDun z&ef2td=V6+Yj0Caexj)luysWMRo<;8-&V~x)#AUX ztJp(aH7cC*sXV7~Hx}eJK2UD&?ezM`BsF%ItkTWUm2&|&fswy+6Y_LM zRaUmt53BZnrUkh|U$rt4k5vpt`~V%*f+cHhzEwO>Qn z$t4whlylYivlV%!QhkZiz-kMuURIG;EAmRE-|H2*J?-hW);BBiMy2(gio9K^{;QI_ zU+He83jfrgw!4*j9i#q-O5@uEcJ));+IvxNqD*rj-hj!bU9B z{Q3M7)rLHe#fn?GKW@ZV@W-n2&I#lEV|~z}rl#@k<x#8(ic_KsB2CW87%&vlqgY=JZ-R){G0-(y?|zL-va&S-?h%#uKD{Qhh2OrBjDY z84Q&xtG7;@4s|O&vRed|i?==J(79_2SX+a)x2{$4>2m9+wEG4pEv_dUvXbao-w)Hx zM#bsbCaT7+Zd}@|b<2eb{RDe*)SLC)`~L(lqCNkE1aFG0`}AV^m*lU4!GdLk z4O_^D%J1j)VEc2_;B3*~prQ_Tf0O@B|3*qdXtBX_gnim{TU&BpHSo~Ba(~rF9wAzq zpYH0DGJ?F9^Xm$Ba#1>xa(sy(ZM?ZKQQR6G{awj96o3Id{XmjS2AW@Lo9?t|2;04~1jE!DOvD z_{83(!-ZtAW*@D|BenWJYBDG5A+739*6h)>?~KiinmkprFVy7uTK(mkT~@Qt*5nyI zmSx}X==*DZCM99MJ<{m#OCj&NJn*-!S49Sh!BiJ<2_^vDDhE^q5CVRgV^rPKK~Ww_ zT8*la-g<>YH{d|MhSd^w8)f`?-4gk)#c)W^@}+P=x1)%FGKd;$JgR99Aa*oX!Tus$%qk&Qia5O6JXd~KnieyE|j;wKmmzdvpXM}zI zKKA=R_XEEEEJF9GH@h~l%`6@OW_78eG3Vn2-1{loj1Jr-w z>;AZGdjdfDjQ|A8BxoOpViT_{>Tf+WI@<4ZZgn?*T=e^b-yh)j!S{~C#g3UU70qn!hNp4HYHSf( zkbJ1|Ur(dOI9NSAfTT=x5-F@qxBzYb)QStblTr4SGzUoM`_+G_1xmag z+R75`k|yGPW8UvC-?q39bpkh*y~nx8 zU*D1IB^)&TR2$6Ak({;y2a}kHFJTv|@k%f@92~`ImDHq@vp6k`%amf%%t1(BJ-~{e zX(>G05TKk?G7PDKhDgc>xpk%7J04 zxql!Yhg?xj1<_IQ-k^I16T`saVAiH%Zrhq}AVecG6?HT{jzKJYhzAyQg;mFLq`q>~ zv((K3R;SC}jra!!i20D)CSz!-cl(D ze|eiM^XX*ln{60+?ax4dr=8}jw(nu_^V{8d?ecmXF8}WjikXn#lHQzgI&yRe<(BzHnx*d8osH~tFO&4Tu!b1nL_`13(>L3`W9?Q&6j z>t*foP+RnPo4v9oUNwvID1ASoBIm&)D8)N}ML zaODU;LG`1tn&OAlJQz#m(+|uExFlqkE1_bB&H-OBFC9kqE=!z-&BEh`3BzJnY7g!S zLle~gdI!%uSRt+mhQN@h>M4j9@K8RDKYgwdgFC$X9)ryx z-gDGUTB*UN{<;#H`2N9|Rx7C1?G&2ZGgW4*%@KcqtV8%YOw92rhb4fRbtkpU*=_RY z;G}kQa=SUYUBLt2;GJO87uwCAHk$?1?Rs;_D z!%wz*V;-Yv}CKATX~8k0r)?PY@LEYlEgd;9&m z%aAj;+f38)!8m`P(=R%=pPbV#VgFgXThT6GwAa6Em;3%7WA6c9*NvTt`vAE274ni4 zsV8=dofJjNmMoHDdF-U7WlFN+Np?z-NoFSh?51t9X}ig)cgd1v6{}Ir>b>{gEvs9$ zB&%B0vU;()_B+69q-SRTKZ&?_xVX5uz`?-*aL#w)!y@&IWVswpgxiSJpk(ZiF-Q!y z1QW2LJRBd|SVlxJd(hgTSHQ4a7x0k6ge~{a`0)5l?XK{ZF>ALS?`7j4XYU3 zSjf^1X@F~uN}$;S(Bd5K!S5>uhjv=hQT;RKUufsYN)!YyyyAa>7cW5z!+|YYmzVe~ zalsoSSRPu8g+d%KNpDCd^mGg;`z650&ZI)jQLIgy;DgOnpw-a|VAN2?fH9ubKy|FE z&I^18-ymFl5{Bixj;B5e4Lbap4*y7pUwidsp)|iT^u?z`>vcT3X(0BKVdjF#AOVCv zo+Ggk_r4}~N7pFcr2i881s=E*^n4qCZ{lxN6o%+&9KTst+;1%E9Ay-Mc``Rb59l47 zbGln@bz@*gL4`!QuRBa$`rqL~d909*7IwOjLg!QD$wK->$6q+|OrbniNM{Ru=GLV` zx~SvBpo}JO7OLBYbgQtVzNzjP(!IjOQMt4j{=RTrfQg3tB`TJ;J#QA#S4FHoCT@U1aNDq{EC?MeKG9#k_zj6l)jBPYT7!Li89TJ)F&_tNC;# zU!2QF-0o9Auk)k7gbEXS^H#pPn@@N0lkextd-?P*pC06U9_Q1e{Ful2JcdBOnEt`z zU+1fS1=P17!Bm*lTxWauox32dcx~6hE;OeLy~q1I(Az4B-cUm8OPp;bOgVCIi8@e1 z`%ByUJgI33a<-p4y!LdQzzXo(kT8T4t1bFze%=7ZS>)C_~kpOskYD2C3J z(Ag4sp@hzt_)M*;`SWFKs+yTfGg4DcVh>blY^oZcO5;+KCZ^iZ>*Z=|E66ygB5O9n zEOKr!Ei0y_#bRDD;_fZQw7FQUD;8^uy=#iKf`k&Ai`BMb+FBfF27J4krki0lRwWXW zFW3)D!ZBiOh8&+k<1*y13>unYEy;iyPX>L5`geAwWMCvs%}~=bs5K*L4t~kG8EQcW z&Cf_#ltBX%Lu>EEB^j_sM&;Q4AB^oxighkUo=vee33)H1L|e2nLvG2S%^B`(8Q}E0 zGaOve393&F5Wry^S`hVq0faRyd%e73`JjL%6@XuUS}ac&)2U+bW!P3jE`MGu;hFem zvGaK`tR^yfMKD<&-2Mq7n12cVk|@0@L)I!aVpt!IvI0yyfUlLwBYKK1$Go+ zJL?p!W?*4#uYo9Hn0oP*ync2^^-=Uv!kR`zk5@ESVZ&4MdKgMR(366I>E^9lTAL|1 zWYYRfxg?VoXWBQTAZaWWYYOe@3u_Pu#h`5)t*e+otd&P6LK)G>wZB$hx!~N zUh&rA(M&pqSxCMMRc9?vZ&31NCVi6WKAlOYGHFQ`ij4g%lQ4S*+s=bq{{_i0r!%cn znaQ7LLVh}*Nmnz~l}vd(ldfgDZ)ei2Oy_nc_5to>(u+)p^yAX4iRp4eI_sGko6Z-R zsKl*I`7o0nWV#<`q9LAVI=J%aIN~U8bPPIldxB;f^HbHLR9cvtVVK5jGzXdv--x@* zGvZcc0N`q4wiuC(q?H-gstma@!@iV37c-)CC|6~ul^JSHhFq=FH)eA!a0?Gj%f`s> z;^tL7l%%rd_-q=N?Op;AmxBa8<2I?p+nhZXMOJb5gSj^?>f=3&wDI?s19k3UqL%2S``(V4vDb9uCuM_*vz zT*mmuyW#qk_D77^`+0OP&-XBoK90!y4CC4Zu|;ny;3?aSQ$@y6X5nv4K8?>8|H&GG!`MfqxBzFd+|i}O8e^3j>c^E#XK6PU#4J^5$`h`>AvqwN*6dynUH&<<*(`2`ycidi@5~h*M zxB(jB8@IC5{VckdmGCf2JjkNQS@b9?&;>Ig>j3L%a9263D-G@1aYR=!ysOe-#;C3| zvTGpUW6-b!Kf(?X@=FzWD~E39(5)PKH;3-zbh@8I_i{2H=Fo#2e!>T^WvZ4?=a$J^4W8U{F7s=e?h&Xg7SKiO1 zd%5n1x!~z9a~)ivEuS9l(>{5SfL`XtJi!(ae+v5aaC*2;2S7hA(5EBw)O&d}CO9Gf zkT=O(%3hl)H>A?~)QoMZ>X05nLjc<gX!4x z>FaFjlS8kwWxpKio6~VXj_98wb=Y}O4h_^j+aI{1=vdT)cX_<6IdXaqwdPp!a%gUj zGdqW7<UL;G`lhjPTnIr2yj9oAI=e>jOj2MnSU@PGq>8(N*9 zcB1~d)_`2mKi3|_?F(wtS6&vMLKd)`;i+m=DveC-WLVBTq&iD;tYtZJX^y=jhnDAf z5i*$#FHoZjXk>wJH1@)AfW)vG&sZXWaR;jI7Aw2THC<_SS2?dM&FyNvUkotAja{8h zT`^+_xwWg>(UrD$P1)5Io0kprZR|V(n1rzqAfbXTldu9Z$Fi8*V7$s_PduE(*Ii?W z6w}~h=UG>J+Eu;kN-w)c>6C;4#nivJ^N?aOxHw^0F%2!IQN=W}IR5=&F}7HaFQ#!p ziFjQcj}$Svt7}SEgq^2#rKw%x@zJnroW-j#5d%mfG~FbKr&y9RDmZTnd*$FRa#$A{ z+Qt1|7aG&0(||76LmAUWzTbt$c98?RQ2#F0_%32x7iWAIHLi=A*o7u^Nto0Htpjgv zC~y!aayD^5cPP4568#EL<@BgTd|4uHlsI=wAf0&VQFnUW9g_p^*~QVwZhRL)7ar={ zgZlMA-P5SGn>C~x4er)?SU372EYfwH-c4(6z1xFEb4HscbhE~HqjB9jPsHgz25@T+ zn%)C14~S4Mz{cSB|zjQR3Aht?LF__z~{Wrf#IKySmZNZgNjI+TATMKV)di>zk?u zq*8xPdCQ{UmjN)0*P`Sx1~)ifpgt?0PYVJpcSE!UaX{{wTp*_v(9{C&iUJJU&cK9P zUSQ2Gz&Fk>@Xjo7-RVqEI^&MH$B@@%VtLRxB#^X!v=gl_@Xjj$tvQfmSr+1AvFD3_ z12ggQW|j9_A6rpi@#ggUg6LxfaPav-fwQTAHWtu^0u)Ne3UIET$wW+JGehrp?<=6a z1F*(LcRL?VMP!_iml(}AJ%05~2I@4=XKow)NtPxo#acq`%K$h!hGF?gr)gU+S z@$sPx#09);YW#E%ZkLW?onSnyFpY}a_D;Y7YG_yC&VE)cc|IfANg?kQO` zIm?-nrQ5DG3v)Ka%@4EGf-IV!^7H842ELxfs*vVmkrR;nOy$Tw~vP<_ZpH`!d zaEgbcLG1Iei5HkJma*Owir@_Nb+UU3yr*DenEPdQ$Iy6ipH9WIpQbw3Q&HgJj^UaG zZ(K^H!AaDIw@%~a$Rss7NxYk+S3&&b%S0{xaWtN8q{^>S>1JxE(A%jv+DDNA`7Tgo z%w6aQfx|sWRgY8YQEJMQR7}`=JBFo#7o6c`s_K(QuTv98q|xv+IUtStrv*!n8I)!Z zOjASBXmFYj_dzpI`r)Ih$!ThK8qG>epMz)lJB{3*F)xkgrX?>(v*)L&MQOA!&9?*( z`$8EKm!+W+!+qgJ{HiosndV!QhHY^c4qDS()6+z2TF&$|Y@lIUX5vKp)+FmvlDL>; zYZNsv!byNo1boKFY4S)K9ZpL=mS!*X(Gs8K^_)$U7t-i_nsYf#evuY^DGlB6MVjk! z8p4dL_|9ZHCFSijx|Qa>n`Yffi@lqMuHEVjH{y#l*YmWPhtNk0h*KZ=!VT94D6G^s zJ$Vr0Eb>Gt=psLBK(5?V(rI$KGd>-wS(?ID1;9q;CJ5|+%}%FT>CWtQF)Llo!D&f4 z^X)4(%}tk!(rID3dqp}ePj^K3??|WZ>E1)(yBzmGdiCzY_t03b zhoRi|nOKJP?&G$Gyo5Gx?G)~U6P)}>dUEK)(kY9Xl-QW=+LVqkBY0<1I?#-srmGj} z^gP}7DqX!yS6FMkP7lnlvwZfPWGhwe&Y&Y1;LF{?%=Tu;0~uJkdQA#YA1`KDr!&B` zE@pTSWw<6M(lUlLL~h(m;4NN!3Krpsp+;@<=$;I0MdQ)WGQi9jd@lH?VP>m&uh5Bn zSMUKavu!~CruE^1-FGwSPKI+A)*a}l2e2`Rx+Fc#P_HuRWrlA+XVJg29MqWxb`Hn` zupWy6-GE~FG!%?$LXn(OM3aj=(~GFJD0UjQq_aaK)Fj4CFS1&Tl4lly;${`8dC(#* z@+~N`=NBa}D#D0ZT13l=uq(W}NNp&h^+mo-uq>j@MRH3KLegPpgv#1pM0<){5J=*8 z7s-7^w71B8qzLMSyNjFyMNp#os7M_uqK}JwN7y#$XpuTrgs}55JZpbaL??^rlOp+f z5uGUte9plbA2v~W;R=2Xb#`EJvCb7%WDq~Q!yR81Mu_ERnI4Eb%&{5Wp4_NIAO~e( zDd+*$<~>88?PL1^3WM=XmBkW@fij=E@b*P?34DO(!2G-$VLpt@!ToLu82V5V%83PQ zjqZ;7onaQx1Ln1baRs>FL%}_)0=zxoaUl_~6Bafr$D#$xEZ_s&=t8f$ut0}9Z`zaL z7EUXEppvk55dte5usoySWAxtGAuzBRb-F=WtkiK#U>FnzL4@N$gvJycen49zfW}m> z^RgZejDL09oT(bk(Omr;PVVqdg9~MjnppqD0ys(>Ya6j5T8&VvOe z(v3QWLx0hO*)tPK67SkG+ra0FlxW7yZ{_1ouBI#JQ6eMMyKd+QDRq= z4=p{_taGwju&FKHiRWvOii1-fH{Wc&vq9&E0tPb+^``z6P!7gn3O+kaKVquI%n&KM zDANT7lpw6^Yb??%VVV+^z$vm83Upcge6afF^^t0F^*T?seurPjJGFb>yvMwg^}PVM zsqM7UAL#g>>9~1Qj*go*_0)0mrb-=WQVW*;rhe9RhpD^iPOgC^jBTMw|CxT) zyw{Wy?qHCYLT#aXB$OdOLmK=%&Te&CFaSYc8baiExB>Xh@93@5OlVa=M8p&UWo=!Gae@Mz3~q7T*i^oypX;gb8z(3EI&O&C!vYiUHbcqux}ipfyHYK}|+sk+bnv@L%nfDj#a!l`J>9}cC zR&|dN3;Z~7yGZ6M9`9k`k*(odLoXvP${8&Cp;?wsir zLwjsTsy&?>`%K*B)-xb>{Eco6CmV!+v(T!>62P!L(>mr$46T@!Y|!;(Dh|4o`LT}Y z>hxS4H!J|m0yJRCG0*yS9z(B&jYhV(VRmeF69lu19RKF44HYm&!0nvr8L$-HLZQ}^ z_)0V4m@Ak!fD*aK(2v}X+{*CtgHm8WitpxD%hP?6ry04Xa>(4!U+Doox?K7t7Ej+1 z40Q4VHV<${U*ImW{uBPFa&W}`wmStDqq*)pYm|t7N0h{Nh)aw85mqvB@ye5CorQ}I z@ebv>J=S0X9!VZRZaw(xW_>28NqopY5utkWeV{26SO?fqdmQ|ceM*p^y1-L=C(46b zWrMF1TxkA9QfFA8#>d;L03V%dMQ3&wR%&KO3eddWSskqz1WQv-QM^dWOSFClzccW9 zE&dzSVY;I*w+)F4e%+SQTWlc1`(aVA0{oLV6Cq+I^olBH2{#7c^JD7l&W~@-PO0dS z)Hyq+;=j^Ay0cuBHN#2N`u~pV>vF{)s{LV2T6to1JZ5UynB}&5WdgCRDvfHs<$}j} zB?|r^)?MBOhakmr4XWHM^a+Oq-cG-^YN#HehXz$vY# z>&AhI*+(Zp=M_2|$*i-1B{NGEHm)&=-BJ{^juMh{ zVOHURLtn~p((OzI*kkCCX1ejmK4s$YN1d%~NYdH-tSd`oJ6YHX(6x5wiF_x|g}n|c zl=$-%L=`Ehu%&kK6f4*dC3UR?dMP>;e{OvhFdUB6-i8w1%Q5x+$;Sa=jq&C24 z`JsZ*g&Tj)4`QIbsugX7gvy=o$1a$s!ELEY`xDpCLU*CV==)RGFX_+4F9Ub~!t-nO zEBbZ9ue^U1{Tuo#=QlQthv~0V+aUmY{$2t7FX8Xv|A&Hsh3_9+|3v?o`Oi`RGxlFS z|1z5Xooy-j&;B?0?+RD%zuEs=!HPKLf2IB>{fFHLd#w`Y6K?zw{$l@w`l01?^MRb~ z{v-xa46M}$QSv~o(mI&b5Rw@3L&&W|XE4PKBj`)PgPjH4p%IXo*#ZbD&?1&Y*(sS@ z$DN^+H;NQg%SKVgNJ<$^aZs6kj|4#c-zVU@AhgFaMj&>f16PRE<4BDsHI86_WRD|0 z`BuOX#1+puL8D~%7*g+%Glt+8paWnvCsG331Wck19}rEV1cXyaP3F+iVeDiE|1wP- z+e&~O^umw9Oj0w5W>TjaBxeWO!Tlkt!o_?@YF;p9KG6b#M{^HAUQJgnCU`wpP^Vo+ z2}?<=&<^@m@QMNJ1K^S`r?^!V4Sb(fC6%G942vuIvyt1F>jKt(bdj&Pdy$+= zBrg(OBF{yVmq_Wj_adpwq`n}!OesLiyBhhfYed&6<{HI*8EmJU6nmT0Eu!0$aEruU zqB{h=;ZSefq4@hG?-AXnj`v6a0Gdc&;Z^++(PQ#GqMlEPz9xD?>=5q>Z^Mxbv1huJ zG(pb^E`xl}$pIAoOGd5p=uqg;`;wCTh-l1zeT0LspP;@XVSteR1q~2x9g+^C`-|>_ zMD##GgM>3sbkaEshKQKKz<(CjV0P8u9V|NP^yFdKLKf~}LJk!)44!&848@U0^%bHY z1R@$P@J=sZ)d-=6vm*tx@<>4=aO{Jt7zJB(L8F9Q#~p;DS&#s&g4C2fMu_)B%oq{# zJ_HL*d*ejxM4=`KnkW(`h~!B)92GQ4WPBiEr@(Ss&=etc=$$MIrUBXno_K`RVaKUL zOotkl5J-mxC(RHvQ}||x&a;J_C1|#=bm$-xP!fo1Z(>4LK6ZVZE)OJBTMCa{7>=Fq(1?|DXJBRVRh1dtB zI6?bF!d~G%AYA)}H~{Ci^pT*0BK{-M^^lMs3&6^|b=c`+;XNYcVL`#rIxNHy;T#s~ zm{3Oyof83c4gZUli75L0^dYtFZ76gz~D8R|H)Z?khrE6>*4PkEEg-LVPJ=ZV2_2 zux|<(4C$tzuY^~Jh`VpIKMJKo_@;ot7Q%#EBI+)bc?8`Ro$iRj`$F9lbYJ-HiTH=u zi5Bz_N8iGJD69uU=(tOJu84k&8ZgCrzZUirVSO#c6OKF2g6YqN{X$sJg?J&n&qdrT z5&crASHgM8Ws)u#A@uQ0Iqtra`bnp+bZL(nu>&Oamoz{M9a{aR2&P0M4iLP75>R-) zfwJQesRm0LB7K9U7$#|`q+ybIP{*M%ZUp-f=`cdd;gUv3?{EpPBGzyzblj!APJ2cL zYT$iW%F)t#7jCsA;-2@A?u?c4eQAxA08zkPJ4TA}!TL^+G*LPeq-%(z!P1(9^r*>_ zrbvhA1L;hYYN}Mzq-&~_(`3|CIf|fe4>wZNrPS^Vy{*!oF0EE6rc1GSO~R9;vsC`(UlpnU>H8=6xtDqvxtB}1LORPObl?Krv0BPC(pe46FiC5r zy-upNQmlhr60MhV9S*c{RU4#SFKL5xBW;6p5Z{F7L+lMWf?H(FX6f1{)mBN{WXe|Q z+JP08W_3HI+9TC&Nqb}>!hKTi<oRhw@(sMz&&P#DY=A4%uFG=g7 z6qlr}hlLm6KgL~_@(W3qW%3u&hPW4VRmv-pu1e>Mlvic+6{)UE*EK1w%ZzK1E@8(~ z-jMXAbl;HHmooN-6kkQu!oDS4w`I&N8FM#SmwQq@l*tdI=P~keo4A1#`9wMhpGkTu zy)T04P#klVRI=j|0UBNesGhNA6MbnkH zRoT;()vAP!yJljOUq#Ohe5ZGovS%x6mJ+iS;?5kTJ9CviPg!%7m``(zhrZov05mL8 z^WS(<=;@yeof+z%+hIU1?3=CWVhFVgnl7%HOPv0pT44vM8uV$ZvEPL522NP{FU9qL zpuM7C!54!oSdr&H-#FLP6^*?(>=B6+32ScjD|F|0y8|Z*GX7!-Jt?7=CG=GZ&O^U0 zp{ph6cs_}}#%VH;CiQQ4l}Nf!l7u}&K68efG#g5+I6Ht$wfHT$>@8aQmS@XbV)I*a z#ap!et*8}mL7@ejG}PKtPVWiP3chZ7T1z-)!=zog&-9d^_mpSg{t3HntP8`(!Tg5+ zyZWsDuNYbuTN`1WGvt7p4BUSy`2NJcv)T9mQ#|AV0RoVhh*`pHb5r`0zW?< zdkMJ!1N)w9D8XPu!M9vW6rN_a?ZGg4YS80>A7FQVSY_$I6#9wYVesI!XazV@W531< zClTQ`7OIbc$6lD@O)rC@DCfjDEDD`ddUkZD?cL>u?zFyp)Q0Yuh=thP-QLn2Vdly1 z*kHitik;okpl z(y#GbgGV2{XXn;Cpzgq)xgoAO$6S$4-PnR zWXeFOLT?scEW=}BM1|cG;M91+3k6$1S7E?m0e6;3**e=ZA2ZvgUf{k;Ho9#2p%C++ zX~H^DrVgD@7^W4NVZoXVXY)3eIbyJ|bSQ$08XJ30Y4G7@VM$=g1UU&LPQxoe-lwt0 zgYz&Hf{pgAOsc|;!GWj;3mp0jnu~ORi@YwSdF2?)n~ApJ0u_vfgu`nKYa3o6nW_vC z5R7oRhw;dD`kweU*cHS1>z?g^lGJzPcX?gdzRK4LtjW?LXof_6FVIRA-C*?Y1eqw5!PDms%S0jp{~L)vs~CiEb1W^_Q?2(HP!05g6dlVTS+{_ zjj31$`zw$*gaGwZJ$RClvV{9-57Iyd&@y7%$ShGP8sW;*k-4_d^&M{pn95&@n5bOp z6&HtgOzhzH{-rl7!R^h9_WEpZX-t&Q$3DWDyrGn0O|$Kvvm;I}8cG@9M0mOIxH>`` zF^8>>o$p|0(u&I$t_~eE^hY*)mayLv93^6(vP(x#f{bxFDV<_`q7%Sk*p?UW9QoXU zA+cMM(g2Ii(AYAucan#sFDV5cT2iur4rk$t#)J2eo++N>Qjw7Yh(jUu{S260z&SbW z|F+Qp+R9YZWh)#|-mb8h_H?c2Ny~ep6(a2)2bHRUrBe^IF8%y)HltM!?q#e+4N2zOjDeWkQ^tQ89 z?kT0+rJfz7Vtc9DQA*oOz57aCGrG}~Zs19*sUm0=KWsE#+GIRZ%17+9v|Cse=(AG# zwA6RHlvajcnD}`qY^Mrz3&ZauS~Yk?$45#ysMD=&&a)#AS3USL%na~H3d-rmcK?ts zn3P!qE(SY7i0j7B<2h3kbw>-jo^Z0tTk#&u77R||b+PIKkScUnK&di-aAf0{kvj)Y zb711z-a7)L+8ATh*f&mdkAVEqX*CpRCDY*5ya^NuH zP0S`<_@ULU!G@!Zykfo&p9I1*Vio}5nfoyT!c^4Um-v3*p$6I@OH<4vBj@F`V)j#u z#2e2l-DgUzbER~)6h~TJX=WMl6XR$`nH*L|L(9DHmEizmMw!LwG^WfuqKr=Q7Y0;- z+TR{s2C)L;LP4^7QUc*kKzlZXV=vz;lVi$U`k^Q}E?nvow}2doC+U+??r=*O+h-46 zJEKhL5F`H}>PSx!cmSPWMsv%23(DmDvdH1?Lf(y~^sB%#gUSM=*aK~B2hOZ3bbEKv zq?oPa+-}SW^uX_=ek8I)nfNo)=0Kl-a0iJ3c`zAb*t4txS=S8zHfFjm&>?0C(4hl5 z^o06B!j+U|d=a1!D}aCF!NHKiA6SSZ<8icwgCX{h$s#vXH3;4fztS{3S5BAejUzYs$6%<#Qie5SEe48(Sx$Y$7OW*%@7kvc~VASm-(KRiPpEp z^tY+?ZJPcz;tWD~`b`jR>)Q-KsH1}RzZs%mcfWG#TkgCnlPk+2dnJ(m4lO97Xlr=6 z8eLBBmixxDjDtqfdY9Ey#c{|CN>z$-@JQt<6Qxjybi>Z901Up|1+-AWbasX6TL2FUmo{ zAB9U!7}1Ns&oPzS@)WsYJ&94lE_QvCi7*Ra3%Q(95KqO)qQJphF~SlY&(OH=*G26q zrx;m?Hz@r!XG=M4E^nXe-BwN`*%_Z1Yu~uNs~j}Q0@dp_y#tsDbT|%r(M*%ep)edV zmj+tq9XjDcv$PpEfC~`1-JB!kbhy0J3GU6MTxX9?jzKeH#WgovA-74tT`q2wM;4{c z&ma`W3Ld{a&f7m4iA89G0w_+>j=0+FP(09syWR!dI5~75}fo+{zTB~JDL|5%@L!|z*-Xqx&k%DdrTSp zUg(+Vd!6(%pnGlM-_{=m#&rNzi=P7rVUVmF*n~sP%Akn&K2J#5;!muz0@%}xG|kJz z^L$0yn}L)Vn(vs~cMRZZVL`wKBn+%0V6N^32}fa}pzCOko@Ja7Q?#cOqF6iNeYepF zae%f6%po{vb|+g}WP=M|e0B_un^E&r_}SIvMd5hanw=hHCm^cOt5v(RpOz%jN_{#b9EY{u-0rD#VDDDypl$f!TEf&8+R-WcF_W5JGv`{Z79STTspi=H&O zm)y{c*7p)qdLcacWo87-8m*;@_c@ z<@7Na9BTaM){0)VyjS|FUevdHh+Uu@+S)5PxPlH@q89WL$pIK5o(7?4rOCKb$Bi;o z4&olco;Y}i0?mQn7FrR@Sb$WhbjWC(WM?}^q(FZ-S*8Q%LpXX_4ZtQ$l?liSQy&-w zabscz5LvLZBX>M@Gf-hbI}p5tbz#nh`|%)7io=o|lV5rQ7UL#05r(w^DVil|3x83` zj7fC?*kk7{x?q{ma~@Dcss_Um^#rDb%gO*$%Ma0a#Sm$|`1?Ng1mfOU=Z9D^xtEyM z3$5;&)(f*ZHUM~8ZDGfWQA^~bYH0H0%RHIydQzP+)$f|<$E1a^YP-6@CxTx2dgZlB zI#-D)>yz%G$tvMhFLAt=IMIua_JRo2r$W5$C2kUZRp|~ya7M|AY5gkb3_oYo?>i2t zh{MD$UshY2saH+L6mBxsU4vMy@A2<+)fvr0z4y$Rlc zDhp3kOiZcs7KDowCoR5%52d@IGqytjg%QwmXk~~O+E@vDHLwtr8E%*Bhs;v~d?djU z0q2&Oo`G~r32qMAi*bBfhhRr_OzZ?XNN*+LuvedLJTpfelkf`y%0xy|;C{F(-{@20 za=X@-3cdEgss!s0*DgTpV@m;R5fhW!O9f&(OKDfB*jehrnuV!nXQ|i3B5VamkL0}bwh-V2wB8<-Yvcb92maD^OJfe`q5Ybt1UMW+qeL!qHPLIcwM zRR!Iwh}lvhAM|P?P3d&_GX9cZFqL0m$RqH;feP7LA!k;I)(WuKLlxrV3MQ@%Rc;gc z3hD-&*!f5W9j@qj8b<@A5RwT?ji;q7VLFHXn_b1DJLq#QPf)XsifBx3H>VN zrxoHG5XsKxC@xl5=PQETNrW?J$fQ=v~HGBq!D@^h+ z)Pb`E7KL$uog<{Vq>Z$|BEbvJ%1e$Y*qiF%iIESf9DhN-s*%eK9>`vBTIRNxN;_C! znW7VHsj;Wi2@WYt32q!_!~pLqAVNUT49A-3B0F#w+VwFx5}Z=xqc#QDsRCrLn?pFR z5``HG^FlEesjP_)w-m_pCUrxN-xO~dQNRa%ve5MYw%~n6G=Z<8Lv>&(_Pgpr_iIIy zNreLl=!OC61XFv$x8=8Za%Zsz)&%;GzuEb2;`f983E)2~#m1ilR~S<3va#;J{R7yv z^*~yqY?2TfSa5Lt2#c&H1pr^~kMwjd=iq1-N4EdjD&v7kWxw&P#FG)q3M;>S}CVh($q>v$Gr$){_37vNy{q91yz~(m2y!fEv)p;s}yr9El#Dmm0n!2 zA_x!icDLK{xOR8p&4~x`n72d2zg>ncm11nA9A8OeD_y9a%XVYKUZ~xb>PRIWuJkeY zDWj)lgw^KLGR=M7#!t2UQ^x5^`m_?9c~BJ%tnv-1l4mP_8y~6^%PZxoN?Km&T7|P6 z>tf~a<4Epb(~gSBrXN%ZFVoC_VAG%gOUWz*Yc#M8qg9@-<3Bh7|GaHkSnGNn6?RE#AH-V1W6^fx*^4m7FRXWIDy5Dle*>RYn%Ur0D3%q0% zwhggg1;u2;Z!r0T-!(1E2|7*)l+}-gdO;)35@;1gZVru**XKOrdi|?gF zp~Fu|UtZSf%j?*!@$h7F;m_U}QOB-DsR3Ihe@|DcXi#r@H`-N+EzjXqW}WPTiJtnZ zif&dx02x+AeXF#@|F|Bqvz|2|xp0 zc&9Yt*3d@U)yTI`Nj0hw`G+^6zVjNuK~d31&AOn|&EiyZ+owIVTWD5`(jgu=*bJvB zg4VX^{L@>gwWV!-=gStl(Sn?#TF@@Q*D*OCH{%`ca&Bv(t(@~}Gra@?f+eEvgxXYg zRfnqS<7(W#UBwO0tEh=BDDbE$a6=2NZ~y86y{Uh1JTb3@wxd8A>({mH=cm5@cJDsu zr;q%|ibdNX&N|hUI;e#PwlDQa3mxWaK5QnqfkQRr{wj>Uh%Fn4WZSA}7i4!@-K1YR zrHLjtfp8)+IaizLN)yT%(M0PZKhWzMWPQIDt6hDv07r{~lLdD);-6zE(=}78V=esE zZA+Wdnwz`Vy`yR6{eva z@7tUD^_JOg@I0E^TNnLaZ#kxS+oC<6_ZDY*tIvDW8Sc4PEwGwYG`u$ezcbpF55&t$ zEp(4bV5<43eznxM{YM?FrH}Zd9@fwZ{;0*~qsG_Kxb`1)p^naT2MnmA)hxTB<}9i} zB?Gb=rVAX;N*M)EpT;s)=~x2TZ~lG^BN~Wd z1|I+|(r^vTtvJjnAJhi2O{t|v;n#R{i5;fZg3?TenCZ3jw0(w{nYF0N(DKN0+?iE0 zqpD5!psbBG;q@PPnXQ}PfgdYC-Q-ab&UbkIs0^W;tfGZgppZpXR%t}3yvlTG>bqBo zyoUZhucI?{>RcV2txLI3r_R^Wr8>G;=e=7;cj`J^t)s0Kp&oGS#JKBqbgjfhgFmOgX#cwbt z3T`||Nb&+`ESH9IO@dq2p~yy+tr(Pwi)~iv@{mG!62QeC+x)2wXRdOgn1Gu zE4@M=EA+(aI#(;s);i~EQK$92K)6ZRQNvF7@?N3t@?5W_Yqic*a0w9J)^Zv2i|)f& z-j;GXgD0=xxzfa18i}&P=So3xi@RS-_iB?L*3!q}I;1=X!>YxyRZXjwQ>(ePKb1T_ z_dv0V_HrEpdu14sl@<)@qe)Z2dATNY~G6wHoy{Jw{< zoW*SQ+|M&9&sHz}vQG`Y_IvoZc@wX1gNSd~FEy0+7Wm+Z3a+rp6qZ_esW&_P=P_r9o zRzu3126`PHz=`u3Y%IKJa8-x}yH_;O@`ku&4Yahu#5=5LK$ekJp|0|*YoN6a9o96^ z>IS!tJL?+M+6J|ufz~(pw($~d0%tdE=|;lV24`CXPN4-jU-(sr8tCJOI4t7!H@I~? z{$K-r81W*V7;^|u@^eArPH59GA^vK_gms-u;4Y7HdOx}FI7<#B_InYu2|t!~C&2Qb&jDe8=jnrB=K7sQm!8Q1t3y3O5?RU>^Gep_OZ zIN2zUH)2<C>C2wMkBFq6tl%CNZW`%;8tz@a&C7F!miykoLw_%lE4>H;k(e zwT;};BsVv?b~IrJQD4ROCTOdOKGmpo*WW$q7V0mNq>h%*Mm;))vL$#^r+tV1kxz>M^D+bhXtLr5rWQF^>Rj=A~1bG%DnYE z1s&a5cun8>-_kl}?_+##8rNG*>`fDTr%vik4{AeHmpG+2dbt1pQ=I&jG8-!`A(F=p4k z%`~i;{XYPP0`@x1a#S;oY<5pP{i>O4>fhqrZ>EoG!bJpSxznujC%A;DFX;Cva zF`FR*&1jahn`u_F$E1kXW;MN;TARHKnq6P}>6xGNMJ(E1^UyYO;5Qy=Cy#vNK8{qH zAPQj*Blr>D$g-)K5jEVbVmP%XG?_aGn#KNR@1AC{yIJjProGK62hczPk?6ykP?g+Y zHRA>7%yv}?rDJQRnTdhchAR=g8F#svzGx2qa;`RuE6r_qjV}CkQ#Pu=6E*05ZfvJY~$-*>>z(q(XQoOsYLKk~~%e)`z&KIW&R ze&-0b6~h@kIx*&$9}>&rvQRJkPWtH+Kb`Z_S-(8(r&E5nj>kZ%T^;eXNjwK(9(oS# zsQb6Aef1V}pWgJkMfK~AJ;c-j*b0Qq5vs6vNN*b4+Zoc^x}`_jz5gFAWA?xgG5QdE zR#sc+xeu#pPPI@pzgnO-(T^E4qMBkXDAv%(YH;g_t-cPItLY2gbstnsXR6h?YC2n; zd7+x15fW;~%hdo1hgKsP_a{9gzw>@I9Dl+c1PJ+QwWGJ)<6czL^J>+{Pp_*zIwiKB zU-b3U06+EjdxrUGs6S?qpU#KNH;K{1u;UWJBmn_KS4yqm824SSw%{+0rux-%^t?ZH zreDtR(`B|;*qlLZ#TWs;%ZlPN((YM2+ z;L{rVyapSVdR6p$M}awNnT<#3K~1P>zBvl**)6oW8EgR8SuNf^jr6)f^=qWQjVS{l zs)pAdDcH*&*ytP9D3;bnZ>y!PwNX06@>jftRc8)*c6qH@Q7e|$x^Sl>9oISdN=Rj- z8X;EJMnOinUPYPE`8i(80z>Ert-|RRgm}<-Rfs!!XF`aj#f{daMm)2=(ffX*+}{wC zkiKyjr!Bk+gT#b&m{5}&A&BB=j7yNy8>zL?6DUt1eSKpTelcqc$&Q{ijW~y2+-U3D zTBS&fV!?FFq`yN)8fY)SLCAd#)ITiA1~Uccu zYE@hQo#~nRGd@qpLuR4M&LH&+S^$ZQY-@yQMogzQa23tXc>GV#a^W*qS zRrGDRVrKOOfe99NTp|}yOH@Ir=$AUy3w+(u%1{V(oN>+!IAhy%qay@s z$Zz7Xw*5VEgTMC!oyXwcMdr^&I_z*z&uCo_m;P-mHcURF@tuJ5pf)%k?rZICsM)gQ z%W7KzbUR^C?SKQvJ4MPUgBgRQTwQ*;t_Q1Ep?N^)Df%~Scn3@1dnT9B-!M5C-_am4 z8ic@L+~|~p8NoV^YsfkrIEUA9K#jJ+@-qf#MvvU!MgB~`y-?T8=%JgM7~OUAeiJu{ zeB4?=ghFmJzGrJ)b-Y=}O?|k9Oud1}i28)}=MBc5(Ua#|8>~T7j=9IF=AB$tuvJXE z@;#UnqYl}+&gLCiI-aG|nc|GjifIp1AM?%T8_Y9Cr{1))$>R;ZH?lX(dm~l#SXU;9 z{b$tkOgr(LS%KN8{h2;6*p+R+;r~S&_&DC!gWbEqI>giZ`#>+sw3cZ-LtDl|z-aUY zTP~6cEUlavtbu6()4Jw)rfaAl>Nl8llgG54=@HXnT)Jr~(*mYe;hz1mE~7w~7pAnJ z5@hFy_ZaR;{=kkKz9^f;fdKslsqaDU=98@r6J{q(zF?Gn%-)Tk+_c8A3{Dwx% z_eR#)^fho}bz7TOfQ232!1$^`1XJc}Ox4_;hKrb-Ox1=n8mcf9Zfe4<%q?jL@HsVC z(PbLje^aAm6wScK=BxA=(0R;nL#1YR2~%)nOPLX5^6{4j$981z7{i1>jYBp^_v-vX!}kn@^Y1Xd25H;Sp!WG{X&Yrg%<9iD9c`uw(`8&u=pgG)H3c#8 z;3-`p6E_v$0m1_YLt8&%rYU9$wr1tFfF%z;!mv{FX=Z>KmTDLgn;$?$IWTba=jbxc zyAwi90aJQ5Q;1i;z~UwgcD~;`2JB##!(+nh-lxdE-6*0>{>=(f=Fpoj;8N(w*)3oI3e@=SB2lidsQQv#?)D zH82L*MA3PPcSUr!sQ&!e37K{Z1Kd;ME=x_0{&rM{%q)?b*de}C>SoGSIaw(64)ms@ zZc=pjs2P+GKi1^SdkW2_E`J`~khze=cYzPAFS;b^r#)4{+fkDN zFdp?z^xIJzD7tIWXmBiw>(Zs@hYFytUGga2^WSjqXVvP>x1$pAP4VszMA=H=|7+AM ztL8hU-*#Q5I#nAN-6QHxBm^~RgNYM=#-J6_I8X#0b85J1pM>Da06SboGKLJUP+G4{wcN1KhP!2J78+6%}t3C z>?Ev0p+U`d{pPL%%}l&K+0MY703K=J4x5R=BeE|ySXWdrU@Qg%+Z?M1Pe4Bts;b3- zC!imWC%W2i;SMyj1+drycYrmDJKgOv+$jgvXu0SWxWmR_MCDGktP<5GjZMUCs8Uir zH5h$Q2RhxzRd2U=n=8JBJJ1*p+=1a1?tI(+K2m`m8c1c$Z=xSK{{^Wq{R*W1g#H+* zKeqoXQh!Q63#9&>eu31V+JA=BKc`;?QvZVf5~+V~{~D>kp}z{G0!tLBzp?*2QvZhj zHjw&v^!G^p8~cAC^&jb<0;#ZuMe0A=|B6(Ahz3#tBZ}02v;PwiAi96>wg1N%0OwZ} zJAly~2a+5FpVpc@1{2_X6if++;J^)c)G*{Qk0n4UlkCy_#2Ci)3=}_>=zY#RhV1ct zZvvxw2JUH8Pu!b8KbsPK1H3vAO(QjxL)@E8_Dp_m7SZhBa~~4T;d`^lp2znzlBX#X zl~-~x(Gv0@T!y)c*##=EIxdHjGPO7P0*+_G8d9qn$1@e-y2vMl+(@*Ed>bid3&B_} z4j7(5A=yHn%_O&w(sA!*a&05vOn874Vp?fC$sMG&6YW6l0xh?jP zoeSnT&pxoxOBabQkz0oj!pjjQ+E<9K!a_h^V;oMm4uQr=UqP(L?UBAIU$I7!v$v<4-+e zyiPAdjo@knwezR)XA(m~;Lr6Frim#;KT}^bil-OhGg41EOnFM`1sNPqbhU6jXGG5q z2ww%i{OGVwEV+6e~)L0Ia#tJ!}b=|nf zG#Y12u>UmrCi?FK#@P(y(3YPuts-h>u&h}^%?Ui=1I4TPf;2Lwy@(BZG>EhW8@KR> zo&em6ggFlXS&JF(lR6?bN9IZx+VG#fRLBtmGt^Q>+r(FYz^J=Yk58dPmk!l(K`R9C zHsvZoGf2)PIfEz|+B$Aa3u1!gp3gUkG;IMIkSTJMRmI+YA~4Gw_3jKXeaH)Bp~o z|EwE=PQ$DcsrN_*L2nK8t*rrY)y*InCp24cG4y8QE#bP&keuRf@Vo9Y^rq{c5ch?1 zk3lyjl=2xW^GP6w=c%A)!g(s(FM@T&&=Rtb)*S>(BGSkZVZ-HcedRy~%uGf&1QK1a z2hfhg85$F=nMO)Eit!zJ_`k~_n5O-FV;BN6#JtB!*F>o__+;wgb(6J`)OcULz*VEHJPgUk`_oW!bMUodT5=fV! z$zY?Do21&vc$Q!i>wyIy%)M30AeyCjt4!M=)pkicWD>$%k+s<^qxJ=!@r7yWBdLyr zQe^~MWw;fARtXozfCJGe@(h}Vlav^=OqR@+kg)jAKErsMl&#K4`W&^UJ3`(S@(#ne zn$Xs9rLiu(2ro!=p2HM`mm=%=h4cc~(u@?KSYDTyhHeBzh->P znAg(P59?CRX!Q=#)N< zN2%UrR7%kK7)7HQ^-o_hv1n9Eq>t6;lzgT4ULHqVtL_2m9xWl2xEHdeWz#Fr}lhN7>OyvboF zgtsHhy`${=O5Ia*Uv;{tq8|qDJyP^o*^iWbtYRK1?~`B;Jyq&OAWzau71PHG^lx8_ z`e7);l%l^y17NVL23j=8@*y0;%jdwH*m0;OMp$j^(S}>p2j1hH;g&thk|QnGDCFmn zA>Xy+Xv-B0#b^sA1|u!`p2b$T0G-i)RtdftY0enSe%}fRJL4=lkxeyF3g~EpMH8*? ztbt^xKIvKR2l9s!t0exjrdo7J!QTQDq?O#IL&${|EwX$IEwRK>i#Y^ULA`E? z1*%$V$z_4Ia4)xLh2<=_qcueN9nxA;oSUT3Mb7Ok^xss zZ_u3Wutmq98DhyHmK@A$4)s81|9X>~&QnI%8v z(5=G`2u}xF1 z3rk$KoG+}{tCqZC(f{S_JOJ#fs)c>m-lyJv=g!>eeNtx9djbhbfHcx50qhh-0e#Q+ z>l6K-Ewn)BMXEpo2qGl{D$)}Wf+9$<0Rjn4Y5)-s5y}6peeRu10{GtlGCAj-v(G;J z?6UUid+k5_(R04}v!CPog`sb~=$n`Ht(Sdy#gAV0%`1M6>sN>7dCfPkYo5RO@`fM% z#W!#G#lQGXZ~F3A-+QxG+qZmq+s|=+$M^oG=O)hY4k@SpAHM&7t=G2t{!xJ(8I+C+ z?2&;Sg{~;@jtV??ojx)MkHIY|NFSrCr-1MH*uYyAc*h2^inwr9Y`r@0P6)i!ft;Ya zl;Z+(QZ4t%fp<#aogBz1LHgvN@icq@wUpfHfjJ{cbN*i7of*jYf|fIb(%IFwqH_Xs zF06cYu75u;7X(1wc>z%vlUhV;0<)GJ_ToS;38ISwb4ifn`~z0gCb0r7D}?+@19N^L zY35jU)v480rvCxP4$ct6u~ z^Unf%V<0~d7Ul6%-j`MGZ&W{Xz6R*L?g8ZX__c)Oj+$?<}kj;Ty6WDb@(s#)@a6Ra4 z(x++8PY2#pdTxCx@SYt~V)$Gje-3ib1^x?xJRislwcdF#kXHg(AJ`3nb?r~ifxGrz z)~D&0gY-zBI7>3Zjx_v68w1%AM6U)3q?KL^$oc)i`=_2`cP{)hFe^jZ8pujWBjf6>@|=$fw~b10bSTG!*`vd; zt3rEhXpScWAynkJFnvPktq$dcuyu84PYUJ4P)>5?gzhSLVmRiM(4HKc(~>t%4Fk3( zA1da;kwmA5Y+4TFz82Wm1MAwCoCA8qlIEQm%J;~T-4fVW1MjR*&JOF&3UlX%$#^xK z7s>^p{3EdM1=h7RIS20A`@TL+bG|6_F4S|=g`r&=%9>EtCarc?*)?I~C81m#$|YeH znlBCIa%~lDv#v$SIdIn=4osJa>C3|CiqQTrG*`MdmVXq=)uEgd+H*sDPAIi=a8-zV z%ekS)@6}geIH0GL)Z%D5$Hyl8J8!y`P2VhA`m! z1%9c4`z2pk%&?N?=bv*Ma3eC--@6KG?Tf>AKNZ%Hk+e6=-fva0s ziW5e+g#Lz5)`xaOXxFpDX&A2$&4$o(*BP$wtkyXGg{C7T|00yT7^9@j_@2=GGQ=w; zviF4YOBB^|cPJafi1WR*H-GKk%=*6$<-Rce>oELHDEI3Z36yt#D8C8g`$Iz-(ok}r z=IMjAw;u}4!=e9BC=YM@>hDAIhtT_dD1Xo|{x&4$UBvm3+B=Vi=CRO!G?d4}^rK<; zcqo4gy~lZ~{S!SA%9CO4iO|~|R>a@a53l8p?Q|-&ge6rqFH< zE#Ih}!!2}@su)r1KNj(0em1{WX*~!vg2G zLwPGSZ-@3Rz0SEaH2ZI%yc6bXXY+0-e-GtdH%HR$O3&|Ady`J{(*I-|^pNxDm66>V znxi6z8IFwPm}tAcK-Tw;)>K+^WMs)lp4vH}6w94=Y$U75k=+`~%E&t|lH;Sg<04{U zhMViIGn?vUbKU$+8cCtEuCeq7lltA#c(gw%9G-r8H))Bx4IDYf&kk?hZaB>XiWr|z zr0`E8f9aYIF9uDTpqxb&@yCVc4-3ux3nAeOwFh|`|7qF?F&mXVO1PZS)%2v9Rz7i$~U6-21(&35p%%aOJ-y z@>$m99V%aND~kBQO$+6aUDtwiy~N=V)0Gn4hAW)?&_Te zFJf$XMi4jM$koF*7r^U!1b7RG6{cHP1~DhK%4$AzH!ch{^eE8MwG_>S71X_>?_xC! z8ko86yBc9^so4d$r2PqBIMye~DM^H<{TMw)TsPi^-O^Gyd`wgv;LZc<^OaN(ccnYiT@$crg`La0rtq8Y+?W0JqOO^p1ZpJ0(UM_{O?68;yJQ5{ zmLphPw?r1VxDENHbxvK9T|6@NOB~Oa|3!AjWUc5+$(Rh`* zy795c7Axv_l;rA1wR4kAqm(K#+r#F927vO_C6>Rq6n#RDL{(tJE&?MAmW`2i+)7U- zq1QzLnnmQ!MCNRbwYy-{Xr`y?W{80j!aSoU!vDkaoyZ?g|NxjZ58R6eCF zHhXL{tsV!KBD1e|FcAa-0^brLUe!^>W;4>^n_<$D&&n_YeS?33EC`>GEfNCCev>GL zBZF@uP7z%X3BdCR`6s0?$f@HQs|Zxg7R2ystH-?Rl`ElF#HB~;0PyS=H`_Ht6)!Go z*ygpCb2A|ETA}8sPxO7DRA)k?kWTO|%}Ea@o(sBNLy34$O3FE^`89^G&ac{x z;u=rj#FP#kQ~IxUqNuZ!ZwS$E%2oFgs^O;7Zln=cgXcN=M+1(|*X5I`REJl=W|=0& zO2Ds(lS`4GiD66`2z99+ljWGXIG7i>Gj))mYnxnhS6NM*RWfN*h73z z=FS8Yf2Q#WK{@Kf zu$W;(+MMB@SoL|Y$qds@j5W#-xX<@z28ATx5V@)T3@N$L=dDRWl+BHYY-)^k-s_&4YRjJ8dB67O&go3N zC>_T>L5@yR-vXQV;;|%@Q+N9DsXlrZ@Zsscpl3lhW0ksCJN^tGn>$fic@~t3EEzx$ z%YX?G#=h4vG4#p=<{@$tC^5?<0v)Dvc)6gKFpv7G@%6@{6;h{9%D@4fS0RM_Cz$4& zHuE%u zwkvUSO!2)=lq7&2w1-A0<$!`{9yd1?>p;Ii5Xlb8li``RJsD1_Qn^l!<&X+Gl`E!~ zD>HJgCB&ht0@O?Vxl>TqNhk2N zH}JI+PwP^v!uYp=`JKk$chadK$JXHM4}p4wlua2~&KdRT2*#-I!(oO6jZd4*a}HWQ z2s56kW6)`EQ`z%&rIg(q%2n%Pe2wwf8FLLV;azXoPNXTQ!~a6EVG(OYTa<5(!d}Mx ziO@V5MnQeQU1tKe5rfBoK)G(@DZ`^fEm?L$fC$sGq?KFkpHZ}16y!j=b0R1DASj#; z@!3d`JeSi%Ani5`L{S62Law0y0i=O^9V9v^t73P(R+t*cvG*WM)nHbiW+)kVCaMaG zcf8WHK?s}3vtc0i$jq#ktxygT!2bsSECu%j{^l|!bAYemz+45VrZiU}n|4P*mnsbb zntV{gEvFMMBn_VGk9xzno3<(RoxB6|oveHRd^U)ElwGhp;(v}fY@P5udt)<8VB~}_ z?X)6j4u+t%yTG@)qel07w$^w$3Kq&dsJn@Di75~bL%0{XIU+(VMT25j+R@HdSaIiO zcTT&r*-BXXSBci6Ok$XhqR`92uz z1&MuvDTXVvEB&n*S($C#n#t&-u$`X6x6?W=1T@9}ug3pd+Rxy2qpml4`1`iG46{1_ z&Hc{k^!cshSYqN8cHgGdjd6TzY**=E9v92;u^h<;Bn$~qJLdQ}U8HNl5+POc1JBg! z1(cU7l}JpQooGxthkuro5$D*LnY9${?0TSRnPrj?XJv(00xScBQPN7TiQ$ikFG+y} zSCbP6?H}HoHor>Cy=fV8_U}o%b%Tn&0dtdONA8znc_o(T25UI!6^0(x3v>pKe_Po0 zCTnKDp#c2Hj69N&hoGyjF-m@)%y>tl4vFOrm>9;A>F@nLBkyLYq0YI6N}|kwDlm zlSv=odDl2<8dI&cZcae$Xsv*GE>t?G!>FT}2}{+`=X9@XOyf3Pj*^{~`8U`d$ihSvZ)Sc z={h-FhG$O|yJGx4X2rlhvZ9}(cb^kw?{Key6;0e29@KNRRXD=eD>6L$(mt7_ zoR~7qicvi7361OL}Ta1@@QXB&)5W(<%bp&%)^8k%GcD5X*;jBZMo;4SU{k~vl$}8>-o(<%> zQt&h#?7srqkmDF+!nJyJOannQv)8B1&tdNe?|+(>Td+1+uZOK%^;!u&^u*W=I20;I zkDZW-VuS^&DsLOVd8OFz<|Dm89`b}Y-b)8ZvqXvb1MjEJKhv!Q&DZz4mGQ4t^Augs z9!e+paox7YUlJob-d3$gC%crT&1>%4y!%pGxURkbO4|I@bwK!P+HBEpyqcD`YI$FG z*R{O*EvDOKODOAV=YSsq*EOn$plb+Eo9n;_Xmtif9AA1)_X1-$2<8ZIDuBWUZo7Ub zjki#!V*XUK^WW3h?%q$!-{CjyD)z3gFaU6Rl&pWqkVx3Me1X+Ov3)$Y)}EY!hZrnZ zrHtw~UQY)a6aBR`n^&nM>6;s3kmVyHzt=6O%^zcQF~$K|ViyU2se57x4A9=YlsKubvbcVD%=kH%ka?)_Y0@Ysd*)?kV}@yVS-BrZifwaGBOC zWij17GuGX+r;j(E5e-c*2#B*AUG+Mq*BoNPaonjns_cQz1udg`Mv8-852{hLY*#*P zZ1qZ&8B<+($r7a=cdd*-A_euiFRDv=Xxfya4OBD@&F~>LNv@Op>XXeLV&sX9s%NyH zn10o-0WRCs?0{-JU7eMms@~W70i0iZbC8+V5*ameSDz*&e#qOk(v;HR-mZvW$4z^g zBIv(r*_5VbI6=9KZ_8x1U{V0<^!5gZy3MD7 z($UiEb^8O+o~9)%r^m#7-kd0=WX&~!Lfb$AxUc5m=DR7VmETM*NH+$(Y-ltrU1ypy zW)|Rb9n{!Er+{(^*Ldn!ADetV<5r)OY<~v!1j^A`I8o}t(m*|HoN#AW{8Hawnp*LI zWCypV5}OMsF^Q|L&GpSeTc*{tbs$D)dTVE<$9<$X9vPUvelvR1C>iUXj4|Ugi0a zfU&}#41cF2+)urk2~TIkJoAHH-WI z#;n|(mD93tT-Z^w=7g+SowXaY=I$&A=9DbV0SE=vkNsT?T60&A#i%s0b_~(U0ay9G zmi%zm+@FO;J(#t(k;|MNV*y1Dl>7YX9ww}Q#n?Nu<~Gf>A#1PETmy1UEI&@JR>ciX z`FrBH2N$deO;=-sM0BtoR_R!zl+<|+GU#P}7Q_1~A4m+!^0 zo*Dp&|6QqhIXiCndF-!?&GPzf2(^kfKzAUeL3Hp*fQTJ!sC0su%3ST_($*N{6WE|0 zc9~gh`e5Jc%?u(gkLP+k^SWZDnDH?}bTc1`UMau89UgqV*g}vl!{c?tQa`cW zP>%*7uBaFh9_H+k>8$~(p8bKk38^b`5fXY7$#}Jx$T(#|_$+JG5_X@M&CDAuxWK4~ z0djlvPY+(C?9x@K)(sG}*il1tjH)|trB}3PCMFuD$=+O8UGk`t%yI0%wm*|>f}74e zIiYF1JBM3MHWgG3kA_FXKS!Dss3SwrA?kx!8+PI|4Nuz38$!-3R6! zU!Kolq`@pBm)Dug>b%!;velQBy6uHwW6$OWY4rR;AzDg8f z(>mYv&_{R&hU~5C9k2);MVWhs*Bw{Lvh>n%%gj>Bj!UWY^YQaJc|ij{yqJ@ha`H@W zP!@YB$I_EZ7^ytww+CIwJ7*K~2zGzQDU6f1OqM#rqLWD%m9zV)%nk8e$fJb?(dop3 zCg`YU!25_hXmk91$hSn60%NG&&EaZ#0hgdRARaj%V!XYy8WkW5?7rY&vNDRo53^^B zv<+t0&#?=a9U(L0#pGfI!b)BZXL}hJ~AEJa#c)M z%p_=mirb-+I{Qp9)0eLYL8#~DaOBSzIdqa~Ztd(S!gn+U3ql)zrp(_5_n%4Z1Ml+W7D_v8;_RvTI_LhF?P9J6vZUlWPhy&I86*5NE$a8V-JO zJHP$uC~lw-pj|cN7;o^`Q*bt!pg`3u$Q3;mvyJq1)KHadW>+~gZ_mzKfGrJ@%QQsY zsNz^9!;ZN09I{KGdN2rN-h0c>ysa$Y-+WxZ@MXFRT?XR^8qvK+cydD@J#6HfO4K#eKRz)&}ng=b<}ky%(mADYLemw%9?x5fq%?Cl&O4rG$`0 z(}ndqz)v57f!L_(6zzNvD$oNR1Z8>g5J^pq#VRq*aovPRgz0uQNz+o;fie>-hG!_k zYWJ&>2jT+ZG=TnirwBi!FwlG_hiHva zC#*8pnyxL{U7sbj*P3HSgNGoG*8CItmFBZ^TbpEM^99ANO>pqr$mQ(Lj8jw2>zrHt zO~~lH&ZRrtvm+dKrg>E|JFl~!xvlfN%~97(+_b~_^7BX2V{1WW;O8#q8IvR>y% z3-y=h18h#$pk*$Rxe`a@C~)LS$-C0#c23x{et9$Zr^=oU%j>z&UB7&OHFGb&X@2MO zTcE>KywJYu;a*kwnkNsX(f7JIST9$ID@%@8+_EISH~>$vtx!CUV|R{uWGHhCaNU2n zJ!~4kXQ<+CKsA>@fA5mQyxjZ_?C56kcGsX#wf0Z1J{O+Xlcpy9Po}^1gsSzam2bAzcrVS^)4Wt8Yh~NI%sra$@GiupxF?yAUbwNyLxt_o&$2Tm|ShVdSQy={w;mw1WQG!^by zjkMDGb@Ez8Ua!cDwRg3|cPi$@Mmecbj%}<}eCjEUO8Rv7H3dW|QfgX~9Z=TjN)*(T zuoyhDp;B2^*xUtsE`=#zyn&M!Bz1?yjZUsrNOe;gR5yA|KMATrH~! zix`0?%QcO1L74>^_MApJw-J4mA_8!uc`KKBTe-TwKS%n`cb

xBVgkn9j@?GEO zgNdDP+pk&EnoegfYKUUS03@yz`!&MlEubddM~9ept#T#(3Lyb*oVQ_s z(W?`)5%XPJC%koI2k>=l#-5guQ#1DL3<3lghL4ORpAtux>w>afo00A~W4{@n)?lA# zu>0#*`0ob9jTzUDPGyi(yQP_#Mix4oOn`q~e?fI~+$F>eNP}=eG!-c;HgocwBJ428 z#G6Wmb*02Pfr)VzBA7uXr~eWco;-V_+6>M+T7?XoIJr+3T9JjD5s}_)@V&TQ{f?Om zBji`=wh0qu0&$R%x-%o zFs=OyOL0q4ZpCgGlEd+B0T@aR@%&L!^%=aoEbrHuh2)Mp+6kn9rreyb%i~$3*9Aj` zYi3b4YZ=-qy%$0-Bw{Uf?3lE}J5z&ccK4!_@5nsgqad-6sb3g-ky!4QfUl_>Gy2Gq z9ED#WvIWBqKgN(F^y@ZHmn!DDBrg}{&-Fs zCC}bN1tkTQi}|=4Q<;fswQTyaD`S7iqs3xN|gHb+M&vFy;DPl%d5OA z<&c+hcKAk8)1)RUWlVA3gpP05p8si0keStAPfZg4tM?Jvpu!j&SQJ-_3{>mW|7jhN zjl3i(557xY5(`IrA_)aEj5aRdsP@_5h$W>nPRIlFlrC9N&pmpPo>ry|h8z!4e%+hS z-~brAe&z}J827=meorOUvHWUjeSA?T>F2n{n(g)Sd!zyimZRX)dT)wAFA%xeV6`C^3&)s+A!6S zv^s0czhQ3~jn!oV&Tziu@$1mLrDjw$eJRa|Q2;0D`mBLzllJ{6N!f>#38ou$XMND< z&%o)oKHZKVRwnFEXX(H$uBWn5AAraC6Q;xTnxn)_Y8~jvwU6qWXqvkx_jTc1JaNRV zfnxtE8C^2{V-}8YV6`zj%$aTi*67Ajs_+arB5wg`cJP<}&f`fCHq38o&~)4`b4$zn zf)9Oq+vdpZ9`5a~ z{@iGH*)2cc&a3CXi=&xfAXmz8^(qd!D+`ZU(6TVSAgHj7SGj%u$7KIApEgtcTrHpH2nm6Dh-Q z4zhlIRdSqEl?J=2l43*kzP)LWv0o$2VcgiS1~&348}&i?*L=|wE)8fQ}!xBy_9%#hsuvS zvu;Ofi|=-Kys$xVvb#yQ%)YTseo`ktMbo1sFAmC{y@PbKp-yh8Gq={#Nfqx_32qbr zE-VxF9?i3{PRM&_Ezd8+yHkQ+h<~dL_uHmhn9+ z1wF=ls1QF4rpCEQSuTb)UfZ=}}VF9H((?4rQF?w^em%&bf?UG)GtqoB+p~EkZrKh{!Dh6+ZF<}~g zG=~U|t_)r7l7Vudh=RpJTYy6Fxq`hfkM*i3-I~n}9%7jeTsH>^6=?{kqtk;mCWaLp z@DT5)2JmI`AYD@G=3E0joB)(DA97ZD1uaXS&=~lLp%`CNz_1BEc4v35REsys?aoOq z*BOrTRZCGylGTrW0DITyp)2P@bL>bhy0@bi`$Ip7GS3*mp=&*;Bi2=rpO5NLkzjJD z(?r$$AE=15J?%|erMh_Cqh8mOsFMT=Np)lhUucg#}^;@`EtJYfyf4#;d^@s$>H-Q~T{m8-HhmU55PFl9>MsJ>G zJ8B#el!%lea{3!Pa;H~HW@fkNx;l8$XiELX(Yo<2Yr?(7JjsUB)4Rk|vYAYOes*p| zu|F3F8R-EyrWSh(rAYvrY7;N#_k6$=5ie^8@tIpIW5O=fczF274a_ywxwK;_Wm!P( zv(TUmrOuXS)yL%}xHJd^2v47eVNG%4ik8OaAE9n%xx^IW2z@1WZhiW&LRRA1ev8Gh%|VH4bha>xK*|3zn+jCVNHU0MT$ZZMoPO$SD1_-l{7~EqbuPX4dyQm=9r2-51aYF5TGvVB!@Y_ zvt(Kyjl4fZ!5<_49wyGec;$*txwO;#fLH3CiM-8`eJb+)n^&&wl&d<;)%wcIk@rGm zUyQsrBK-Yr+^z&C8^v%VY5{2kFuY9j*y1b*#T@(div3*!dPLSY3>rMw6#uL^eOg`i9wPZl;hu0fB=&U7kSW1IL>Hea0W1Oh$@UlBd(L7k>qO7LpX# z^}R$(v>cbJ{Z&^duFXCqYqGL7`zd$+jkhL?S&vAE@&4Z!_4SKXznJAHaU82R*F*P` z8F9P>$EnLEE(ZG@FME7Dh=--#>_T&+dN-`jpjhRH)$UPG+@Ce=@`H9@7rX>%{R*r~ zN2nZQ5RdiGnL7no62x03oEy4(YNp^-)=V zr!l^_(fq2>{Ibzr*Ugh_yXD8-YFm(Ny9;Q+l=}C!*;d4c(R7Mx(k~OaT;wZuwZPBc zL}nYSc#u?yYEeZj&1y4ssai=@Rn@^es=mWTXm~OXUaGJd%KD*?Ly0#OQ|?L;sIDBy zYsl2ds2(Bb9Oe?ri*qVq-JJli%c1l*R2m9kXOgMleTh3pL8ly&`p_Ks)FW)TDc}(q z-O0&1NgbVblSe0@%HsG=xROU|S%5cKPy3y`iMXrAkBs@R1dH$DjiwTfOpZF!!xW0S zW=UGunI3^}HZE{xOsTcLY=$!y!;s%%j_G(Xj%x2NILzN>HwIo$Dm9ib?H@Elr!G>Z zWR|1Eajf2KgYzs@F>8sHx(Bd2Ol@o7t4Y{_?A8EgU(Hxb1nl67OTEu?pqh6pFo$vN zbL}twA}cP_scU;slD*g_FSNrWZ*CwyF z$tG0LIexda3D5u3rqikRJg90#^AEPk18x3;ZN{CI55UhJ>l;qL4r4T>gXi0#X77cz zA?zf6sGgdTS(?j0;C<+>)kQ(AjSP-zCsfDFl_sEgWa5FObf{9Pao#-G<9aYw0inAc zrvb`NgU+5u-G~>U){+5dJsv-aMp$rw(Ap>W!??gm!tq6LWg2It4YpxD+iTgq)>{yg zv(csQ>Q>-T7Z$Z1IO6&HcKHK*np!@Tbo$$oPNszB$HZ@0+~J5zFBP7Xz){hg2ply~ zX)nXmab(?{53jYKUt{CcI=-d!1wUrilsRexaF0scQnjRcbQE8uTbL(FiS_CRfrWoE z)^$a#_l6Fs-T{V%pEyroCcuR8iC|4RPV5j2deEMA%a1o$IFI;7|JTEB$k)G5o(0Fr zaKygm)RnzambPhssr~K@RpXj-K@R3Py3apD>{q~k#HQ3(sazjTyVBVK2HcqD*Tudj z!uc8Te$pJC+iK5gH9u_zO?hE@0FY?%T3SpF@vWi?0*>{)@<=bnj$ikJsov|6fAlz% za$j!&oXZFK zMhLaT*=)dkO{r#jp_!NQLf)>rKtVN~{f+w%E6dt;WW>fZdo$_u+TL)i?1B>@PV>=t zqkd0g;m?I->1G>0?`oU|>!6nTBVj!zZxA954YHb5F zhMf5hXPu$LfXiWgRgtk14Cz>^pdum;Nt#+RjFx})8t3B$4p`j97@+dA<4rc?(Tny5krwk zgEs(EGz??b7$Ts7l zqgI3Oi?_fIr)Qg0QV0&*q~UX}l}!N{shb(wz_FNo`*QT9UK+-3e;$j~wWh!7V{UBd zbKS*$Vx*itjFjVtxs*QJOXC3rVshf}VbSO@LUgJc!Mt4dxL!HG7xj04z;3Z0nol9h zXRU83yS_*M&_muaL2r5}eOJj?0bwRxPe=h}M45I3KG$o~8xx#09KwpG(sBlosWVCw zy;&k6NIvSYSyNYbG&5%jj$4;Xb%XL7aHm}ir0T-%K1FnuKZW=ptgW=IsetDQyPL(8 z!=w9_h$sPzGq8VJ_Nr}h6yi0d;?JMrmX#!x%NVtF8MZJ7z^NnL`UNCH^4NWi;UR^DjWx>&fUvGpT!0Ak409{A z-O>rwYg9c!Zd@^4V3-Q^2=%58>xp#mYf7UlmW3?tUKh+Y?B9}Yj#|9twl*i9vVg_3 z&S|l6P+-8p${^Uf-$!mGW0yOZ-T5J6=j2ksxA&|p-`)A0u{0iRJH_FH_IV)80MT(V zeWh2vx@NT|+8BRvH4h|J^UPDAak=Ji%X2#YN8J2eoZ&@rh^QSWH?z2}?nRMpHfvB#;3X*UO1WPd%K0B){9?O>!^;pd6uFOeY=EN?;*}<=Wa+jRcrJkzg zz-xi9ndrIxkD8k5k{}x^=JK*!)+cum1+m}!u#a*s?~{xBz@h3UBz$bU*!pTEM+A_$JyvbAM;qV^B z9o3KX&ocHY)rY|)?hfa8iV#33^vi0;V|2YUy1kkB6<6%Hw4E&1`4;hS(&%gGmWsj! zCF}pNzd@P$Z%Qf9rrQpzm9))d3z~c+4oARr^%}}InNMN%;(bM*{O4=*8BFSE8nAO% zig!!jVuplns$t$ybggf?t5{K~W`ebpZBYC)qWVOaU1M&bR1P?&1S4U{uBDJ449DAw z1zWc>-E04<;lfWaGY%szQcYsIsJ^er+VS8?`8$+`(;Q!QxZ7bzEzQ+cXA#%1P^#K@ zE!UjTHZ{H{_qFdNoH8}6)kAX)QVVSr_k*~;Mm;pOTF2hOE6q8ywV~FBqh?y5ZjK`# zYRo2Nm6oG6e%HnVOa~lDwQTy^J*5!$v`X1axQ>i_n2h`te3b}>F zI_^fYI`WA05}f9m-Sdv}q{_F($HF&KeO8B+X$Gu<2z10ts1qb zINfDCaiVaIQqqQ&g)3(YYX#$KB%8&!*5`x>WhE5g>Q994q;5Sx?p!M?v51jXI$hUH zeyl0im|^P|X;G5X-VCB_Zc*c`%};uB-D+k~?5bY~-4 z2GpRbREaK&i2I_Ps$2R5J40SwVRkZWvwHYk8iTxkWuX$m^f6{rS~jOYu_=vm>01n1 zx8sQ;t>rvN$Dn1Nf0m@)7_EyNbb_mbWsvbLLQlAZ-Y_afSS#?XdLihtn%nxFSnjZc z+}>aEiYJb?r;RozkNy{p-B^)3!12|yx3MAgMtHWDop|&!%<}|#ha)4R*s8*);vXCq z!A(QdOm1Rh$HRt4AEA7yPLB>!blNCH>aVJw8msOv0In_&;ZtLHCs~D~_fGMo0GURI zQ%5%rBWM-A7oe?V`2o4Rjz?4@0XxVgL=WA}C{rlP>1vetEs02Y4Y^6u(tX z(P-*gm9}=GDY&8NdRP?2KuD7yRL!8*T3kew%6h>R-{Z~`-PyWxo-JWg!BSL;^nv<& z##2+Tj|ot?(mVJ9FuYkGPs}uu5NIGBoIXa*7-LWEH>c@{UpgQ^7*H6&8lLx6FQNuJ zRlq5ciKtX;(9bxQ-I$fCfW=%k+?&SC&V?igm~lR-Ea6feU?wnK;7hU z?tF$>AHc2cMg6iI*O}DSV`EfTbQZ&)Drqb}$LO9Ls*eHFVGRRMwa9A&^7?>UhhPRf z<)HytIjXRq-4`7p-y>QZ>Qc!f*QD@w0{dD6H>i7wIVxg7|paQ&1 zG~^QQop!^eCUOdMoE)|5eHd7lk&N`_!hiRHLHhv97Bdh>+2*pthyXA~(Wgu*wHGze zSwml`((_|Z=~-~+(eBLF4X8nrb2Q{SNhz;q)SSI$BK-g_BcDl~JsuPeXRMHtXT=P& z@}|*p^Jtxts7}2Su9%s~J}_Dy8;!<^Tx6yBc9cwRP#xxv$9UI{0iOh!LWX65gU?4~ zx-;o0M=XbJ@*M%Nygg}q9lyg9xM}e|WezZTg&V^0n2iKeN|fyrY3E2r@H0-$dWlgz ztBdX?Zn4L#(PnYZUF}?5bTVtSU96FGH1b;}b=rjRiShFEczMd5|HSfJ9U5aN-OJ7Z zqZK6dV2J)WULF}Q57jb&HpV?Y-n=zl-X1Tn)l&5}d$sDe+-vm2%j4yh@$y_P1FwyF zWjv;)1hscL^aCYFhc?<>t05%sHZ4uuFN`e=7H?)g0I6me2+5v%K9J)$Jy@%#=gv;#GLh6PIN`I6QfWrQ4LVU#po}BS*FjRHsm^=sRhO&puq*Anv2xK^o!j!(1bhAjkJVDC zgqR2sAMw)U=;J6;E4p=_HxBJ!4vddmM@-(x>!p8l=+E{?hYeP3;0ZjlL-DM1MX_qa zRzgKl0a5{Yb(kY<0;a?Q4hyR9SC@m8-lVO%uZMBxud=&GDi}jgT6%Q^hb}(Sbwfpd zyY)A5!46#Y-pg9p%qB?xX{?ied~jg>y!)3;8L3noYhX3_t&pDsiyi<+6i zKPSlh6MzF<#5+%JO7b|p@O+u2D8?$SdVZ|DFjgT$eJNOS9Dg8pWRVfUGQ(`yE_6Nm z{c*CE5DoO`S6TDEtv6@Wi`t_^^)swH9qWz3R;JtPVaC&?b4m~D{Q`Q?PY_R)t{p?4 zF;;d2htE+@Zx;FO23CvEt+mp#MxEJIKsf~hl%doy@uEm?1+~vYc2CzNgXpeiMSeo8QriE-mQ@L(Yt}ZO@94&*)ZO? zGl1HV_}JU)#>@4f1%{~r$D#661Nb!t4r?HaqhocG(*c?QVy}b4n`(OLQGAuOQ;8>( zN_~Q^)HzV*Rs#jB?Y%Qt(<^Ix-?nRrRv0`KoPY{I_rg=due%<@zIg6BS}pMjBCExB zXP$bsJmv%mKJc`DwOCiqW|O*TO7w!*=XDr^?BjGE4795VVLBNc59dy~z}jbkgR-jl zwJVe?pvGj*vK~uAXSKqybT>j!*-h*r@pcW)7W<#Fnm`rK7snurdLF_t?c-$fP3A?h zFNu@@_=C(3Mb1`*Qc&RPG?6YL65kU0Dm{omyF!jOa)lJDS67RQOX4{IfnSB`u^Z||4Y8=-sO2F0Gcdr2wdM5eYDP0!U6M8LqF;g%fFF?aJ+z$SU^hY83;a;bz+3jFU2ixZ4pGs9ejvx7ZvhCO$NoHN6mKSM__>0GM1P@brEDn%yU zWQltMHlQ>X=vaHr3<~ZvH_VW;;7Z*{Hkx~9)P{#<=ujuacijwmb80d&Kbj$Y@T?gW z(je>H%V*Cp6w&Pcf4$tO1W}nw;BDOuYJ<#38^ZW#^puKU?R3aSoyVSukFZxD1X9_X zS$33N1Ul2j{nP-tQ30?X*-Tyexs0RuMv;fawgJEs0N{UT1h8MpTm#@EacWCdVM}IW z0{0P3VK}RaMoMq4k3}A;K+KnR%%#!yiU_22(km6B^u;b;+JDpNK4@1VHVh&MB&3?x zr8gX;$XMwF;cL!xtse*ZB+3x=QtToRDg;$!pp?;_ew~3029pP*D`K5TYNzQYMOjb8 zRb09b#Vfs zlKKIV3USd-sq1BOr@DD~c$F2}F$!kkbjx78CFVcO7fg@Y8G8LiLP?H7AMgdL{7DMh z4_NOC8e1_j)%URAZqgXK31>WW8^YQ{%sR#EjDhM0F|2@bNkhKY-qEq4<4AM8M=gh@ z;~k{jAL5&$)wt-w6g=j;pWGU#bU>UCiAQl9mbzj}u7iRROLXrNtVvMcupVA=Dz={Q zGR+VE^Q;BHF(SxqVk*VH8C6Fvm*d*Q*dU-JR`vlr_PpQg7~r@Tq(u z1cer;IEXyKx>W#A1t@&Lo2xwNQtITCVg*2hw3vD;q@uAwW=jg+rB--4^_!h3S^0R% z(7sWLnQ|SA=+_}iH=)}Kyu+NlZ5=Ph6q=5#R3`4@VChQ~ko)h8*YwNU{>NlZ{|*cJ z$DTNP1ScHqmXEqePBW4kt$2Pa2pk-NVuWep%59(k9Hc-G$h( zdY(s@dBN6M=BQm10C6mCU~$ZaJIRKf=qlw7V2=U)n|6^KchUBszKFx+cutmO77H%u zE>>=)gSoP6%pwDCygyF3Mx)_{Un3V@Tu46{RS*Q>D8~{q)1&&ve*|e$2WW=L=K=Jk zriX$i$j5CtX!a-B-BfS|>DNPD)fot01IKT*1IEc9qhQK3*4s}bZY)glLMSwd34}?b zyS9FvC-=;>SI&$|L-^yWt=3T%P{0S4MS>p{-F<*0?#|TH{Hnjk>g7lu*p9pf1B^Pd zsaki{{wtY9@2wW(s%w2Av1quhBv^cr=;Z??sM{0XJZN6m-BA+UhsH%L(n&Z<@Qyl1 zDz_Y{Ekknt&_rPHJ*xZAFU8rCR@>d3dYds3iSBoSRUH=Fq~Oy`X0 zgE7*uFlkU`0q(E_-_X!pYRe%`w=&}fxX+nxrfePBzh17}&4JMHk~xgG@aSaSTLoHQ z$u$%wQo=~$tr3^kG-u-d8E^Gby;4ym{g(jRZ1!rlwgis_k|4@5U5IlO6BNCFkU5F< zd$~(sm)FX31Kg>qL$xu0Tj`Ru$3SlOv^Od|j7uFqS4CCWQ}_=8 zq#5(_obc_5@?I9}a@Hpi-(z*>FvpAew*BX9d4INlTuzS9$)PY0^O%uG>z?E6dmMfz zo(MVYwMW>!ST&*}GnEK*O?Z;tpp!C4^XGK(3{WEN`$=TJ^JyrCju z*1*WOLDm=M>=}8y7l?}Q0_Et)DTIERpJYXmawG@1iH1U$9!ZwfGW~e|G0m+jZq&bf z18*_d(@kTJsC$WI{|rzt37}T44j>APSZR?b05)(H_W&BmJPhX$^_IO0)L$vi<#PzI zjG~{-$GKcFuOwAH0t=a9TsR{dB zu;!{7_RqME#y5t3#V$yv>opVEbvg^8NQbI`uE3px>BB!Fo#0%`qz$lfOh^M7z*OB1 zvOUaiV?xK$aW&lJoB4j|^iFNUmfOv#)UJ%mv)V4Y3-l4bo>>#h+VCE`hHZla4IiZ1 zzT;?{{E+Dr{};!*Xt{PnpH3PS`sK?Y-4TSsx{OY^$yIjz%M2t-kPrLK8ZSoSbRZ z{=dow&xjmhw;JzqT_wq|5!8*2Xw;0#wrr88N`u78|aDEwE_r1YDD}YKPp_O1j+M*)BI8*=PO_a;G1pcU5Br zxIJOgtLTmJLqFmF06YY)IMbA|FCfHW3iIxmZSI^+7m#3~Q#L9CPU;D)qzQ%-fGRr` zyXqp7R5w`x?GjpK)SdW5x7{TK>Zt!5js38Wm?H;&_!Al(ZLu2q#mG5x<=nZ%N#P@I zX$xW_VzZ3cZ|JKfxn$e0e#3Suvn5x}m8<6xCK4zM=D^@?kz^>gWj;YMcL}9FWvXS& zP9Bo21}K`zV*v>KBE(k}Qu(CuhsftYvhf{5Yga1?Kt0SHWi%T56#sDrfe-5y!sQ_b zJS_5SG1pr2V=x6ZQ$lsE0a$@pYzZbf-XW%TP{=a_H0M>=~|-z$XOE63xaW?BnW!UNhH1+^$$ak-ew zq^<|DHH&^2SD5t?EMvImJpFd+sS{jWk6DnK^?#GJH+ zYW1@0aI&A6%9d&qk5L(>hGC8|{z2wo^qE_XJPCTy2JyI-cZcq?NJ6W`Uybd+lOcB0 zNe;UY&{SO&SLdSfLHM{v5u|vE=j@B5SEM!L#jpIm+UC4OV-UF;LM`$jLQGb}8zKex zU0q!83g9~N4M?;Hk=c#(WF6D?dDx~+=?Z*4FDGFWQMIYq=+cK4w7bq;o_R)TQSBq& za@QKUo#<)qy5O$AJ0uU@RDrfeZN^;k#B+ffli;F0UN+7`JdTR&ieIKu&58E^$ioup z+NO4hm(t)iGdBDb`jtAa7Wti#`niu7d^Tgu;_*wyEt|N@gk_TpF!=l1o=KId1*uG$ zGr7ZLW;sK1g@*MDt6Cd%%Lx3!CiS}o z5R^QdsIU(hyLBWh7zp`5e|f9}bT+SvF{*0Jb&Opd9@2;z-F%3Kb0|j?w#W?F4fr{P z^t`$}Bh;(4OWE2{wzhN57kDEXS*Hi3+cbVE(NRgqpET)QCDEzW-dL=ffR{cTlL%9* zEEu{#IFi#;_qVy{lxS0rZ0@PCStFLV;9OQ0y@zf z3R9q1qH+*YTveXtn#JtEwx9Kka^~iE+x5?TsVbd_3hs$9ggTE~xaN4U2?4$GK zk_AKGlI`AlKvj>Qme0uHa*vpYt&p%$^cwkwbrH<|dGaa>3`k9%-AS&SFW1l4kLqYc zg$a@sp|+H4gBcU~bF{W_8a!&%@OfI*YZptuzEG{^ar!21wSNK)cn>W6sK-mOR1l|- zj1MTwwE|qHXy(uCnvNHT9ORi^KvQMGwq0aaVSsg~2p$o??1HII zK9UjaZ-C3mt;XJOh`rPa!xNhacBe6q>@L6EU4FN_d20{U3vccrf89gHGkJFp;|&jn zpKI(=xp^Q}_ z>~(@7pqREq&-Y*tlqpn9sppY}R5 zz*Pl)z2#!p4MV$L7cObPLQ~FM{J&ba^wJ(IxT41YNJ`*DfcptXBhP^V+;)PI}i%Ny$F)+);tS4bGvBU{RP$^9p3`^%O^ za`j>cj`ddKb6;}V6hmu#``B!n$CqB1C(q22XXlw?moRY0ERmy^xPd!iiSc@Z?&t%Z z#tJd@0qP2D7ChxZID4=hM0iIAuDwP6w8xGhNw?9j+Qu)+PbmF=vEJ+5#YL7Vd}P0s z=%r5Y5s?>%^i7WdwnKX-m?CXX$ss9oz_;=P9g!e2YY2!kThTaV0|PZ4b^~rS2yk>^*SrqUG?hUksGAyq$g3;$kabB* zo+M}ZGpFicX|y+vjCdmlJ+51FZl@Tx^4697NuH=l4~SKnjjbrv$ftKoA{!iM#eR-l ztFWVdO>#XzF1JpQ+PM`jRjs1FjZ9R%({hyJXl3LxXAAw0L#AW@6x_Y+$n zemGpiVDLO)$PVP&xL1&hw81rN2Dx_O(_J{UM9HH37vYy(-h}_sI>WZPy!sxliF}WG z@nIIN@e4g91)0$G2e-~&Tho-=!c6Pl)tV@q=$madi5#0)s|hvG64Wq2URC!HriT*p zt}P)vTGFrRfB85X2+o>RJF6bIItpx*ga;U<^tdmoNeh=?t{b)1*k;7BujrxNI%-uY zx!o(4Vr@B4Ed@Qeii{0MryI~OHJfFWRUtBBCHfNF)Npt^&=bAb!G1@&Vp)+!4@TAc z&XGO3;t@Ag0!MrbHEbO`bRD)D)l;#*AD+{lrm1^kUwwIG1$5(b7H3SKS;zBUGyagV zhr%*c%&Y}_?h(UMb;Hn(T@;T1t~2=fzFxLHsnjgy=OG}wsX>F!{Dr`Xb^H@tA=*Ox zSUAqq3yk2oMy#3YS!IeL`Yc=6o2_jgM;B6_3V(Jend*uQ3KyXuY3SmnhgCv)ZJI*N z4Yu(}I@gw(7Bn74;*^#qhKE3~tynRvdd#TGu!-M8I~v*_(=XPu4ntUnF|KQm&K~q) zo6Vk^*kyIq5>=NQny5o8l%KOzH)MsiBsPcc9R=M`{dl7pj_-Lo_0B@wf^9?VMbY|J z+0bg-`QC7SYbh06E#DaU`o@sOhu5fLddd*~@HP2H^Vg4sS6pzMw5E<)R;;bohQ+n@ z0tbXS=?bwwMDL*VS}g@4!``uUlQBQEa-cm~sz?>Ys{{FJ&sC4|YhSQL$ zwtwX*>zyL@0GW)D7^{!2A0)I-?IS?8``F-bh3y4*Ol!D6k*|UImuHOkm^J&eT-=-^ z_G{48uOOC8`QSUXG8$K+`ckTI%$1(~5mW1XL zYx~^4^`r$uFnWz4d2aCJQhYttcOS-OrAMh(L5bNs&1rUATj55OZg=psg=*>7XEM}d zLiT5ev5IV8(93hKxBXFuyQBBK5p1byN7EnGdaFoujIl=>+0}brbu@;JhwYn2J`cM1 zEM4W2SY!Vm(4s>^lg*B%ER2R*=EtwjH>W`8DAlIXnOwm3#&$Z(>A1@8h7Lbtc9(gm zhCo^$&bFaom0^IBHnNBa#>$CoG2^>5Ap51I*=nC)6~i;-#eXVmq7!Cc+G6p=Jj+GeiNkBp-Z2}xp+hr5PMBVj7ph?LAg zsuJ>}2EE9wH>l-@+>j?pPjnDUW@_b(aMwwmq3NnNpoAgssx(_GGpR$Of*6`d&5zsX z=^HGkM$QvLSmzig$aF#w>0l*?+E$)BhC(MCbAuF3t&#S*j*LMY>3vif$ructwG1_- z(ptrzN@|_Cw#kgAv~nVsyD6W1187%P$3xrhzLqTcC$EP?ma;s_z`I&%US$>ViPrjX zm&AWjw2YstYp2@h5_L=-yj(-q=(OGSfw1}1klJFAnasp5V$f`dk*;SN;bUhS!U^2r zIFhZ8mBH5MqmmR;pY13mDLu)PVjXdyHAinXXLphAB84~t@uci*bPUTNi?hwnY<#ZM zu#d={)A>pVhSD-reuU8|q`Gg5?%AT>?@}wEv@GqKobRY_9%cPmz+oDt)<#y)rczhK zyrQk$7_xEhHNb{H1-lTItnf8SH^&5@SrD@KTDZCS;m~c*{8sFKzOV_aMNsLQ2EEI4 z76yM8xczBMILUwfKsms4Etn$*%s9|zPl~n!>bn+p1_v6hfp#|A)3Q?% zy(zt2izrXa*sXKHf%X88qnV?Tqn%@bW6ps-Z%poz&T*=VrfhTIvIB&&g*1J88tGHq z{esRfY?cHwBir zfN^-!(C3@?=6>7rIDXQ~@2$KzBu_tP14#|n6kAhJhr zJyYJG1A+(O_td3w$x;yc>V1?kcQpgb`my4q-}LnnemiRM0uLfvJ6AJmU)k^kjKapZdxHv zuTZB0)uc&}JpveiZn-^+pc5+ui|Wr+9yrp-)YnFW!`(s?EQP1-|PuB+qK;w zHD9>jV9!$j0qUPA%gy`AP219wO5D63<8ak}gHZ%)c!62iyJssC(}KyQ;F$`#fvya(bOJy-#Km z(i=4aQYZnWB$GmtNkS%pfq)^XpuXiA5D-BSAxaTQKoA6#4k~Cu6%auX0ToSvAP6W@ zR6rs3_pE)+WD@ZG{O`r^}$)S%;Q^D7-x zmMeFPhP4A~eBYA9t&B-_+d<~^gUyX|{F~;O@61s(B-q*bb8rk4V3FH_RnvwMq&Uz^ zddC@Lm|Nz^&$iDDy9=K)uk^|vd*!iS`8oDJ)!FO@__1DPj4HICSHXelKFU`;9B59g z31^v2vx15KgyFmK_SNmvqdMbCa@}0HcJ5BOUO(6SrN|L-I`twyi~!&vt1>;v44%iB zG$|mu+_+=5~JFTj^`Jd+S{V8{L}g$Mk;GGE(eNn@AY1SV|4} za|D;VDG3srFsuf4%4=xP?%X3o^Mce4Fs5>zQ%N&umd$u6lH$nt>Im(ePb3FW4537H zW+DmrPn-X5`}ugXL6lI3vefQ)y4c+|1$+Bb;``&0Pu-f~%p6L*o!x&73Q}pbmQ>?s z3^B)mAB@L_Yj3y=rB33IgI#A1P z^7cVLN?oU=+$0cJ%&1RJ;)_5h0 z9d%cBDyea?0Xgn+t@9dZHXMj+LUp;;0I6Nqi6g{ewrgaM?VdIQR}7iSSLq* zQD*dEoIdMH8l&#LWxUH}-0qXjq+KVvI(cmKySdO^m+Uc>I#J6#Wv?mvv}b9mOFPBe zXXf4wlM|ETBU8H^8M|z55^$LTE!q$atPf;E(6v558@9b4q0LcDg5^y|rIv;6DMZR* zkIF7~Ckgz2Gr!Xjc@x!Vpa`v{fQRmkFfHWI7N4AytDnh2cf(OwS0#1fik~ zb{kRxq{6bL{K{zfQ2Y zJ-DYh7gsnZH#0ZOdAU8kdQNWE9T*Q;>Atmb&$@GVWp1grr4lc!+*ytTQ;FZh>Aq2IzAscU&jIv$)Nf|4 zRw=5MnM+X=`=sG4U+Ye&*AI=oWdc3U1~w${iEQ{qXaA=8?(^J0xOKm3CU$Pw#kDT3 zo+GU7_34Kc&utXk(3^DU3u}1LYg9lRwa*>u*@d_|EIGcG+l-#jxv%aw!L=O>s3uEo8%Bxq$VC-`UWJ6t|xa>KJTOEmBswF*+~(5g+?H_(${ z*+TAFJu;YVmBG!MZAOqmi8v+8!BLVgA30cOwsJ>QaNf_6a`}-vp?DjP1c6SY8Bz!^ z8Ue{Qa^*aYBe%^1=f1Q03_q2v!qh^Ml0BPtV9xX8tDanKK*vEqdvp_annL`D*UvK>=IO}L3v{e1PAQuRY?gkOr0O!LFJS~-oK)$Z zvxul?FY?&eU^1z?LLe6{qCS@`l5Z}`eMPTWt#HrEC5x!-#fxAD-mu8KZV`QAgUd-z z`!8N(E?U&JftT>wDCDX|=E_CX=;}q`4N=Iq7ny4`z@ml3~_ZHVJ}?lM)JJH_T0tEM;Eh! zo{9-4+o77ejfc^E`(nB3NV)Pzd2*3FvB-O>k3+2F*2TFf(AWzWqk0K~19ioM=NPQk z9dj5bEAhCC_eB;`IbVJHNHJ=EutHWQ+k6aXz!4a4-OJTDf=7q%BU11#he_Sny(`NYiNM064{Z&W`QpQB7M*0b;Ju~wqa`TUT^9$-(F z)5JSG*cNruNO^jJJtyj*GZ&jP7R#B7<&4F3oZa5{(bSZSa3pWv)&y@YhVN^iSQP$w zvH8>D=l0Q^Uh(N_ z+Hdxu9e!OOGT^K{(Py`6x(oYq)a40`$L!gC;8tJ89KA5Kv@`n{$L*!rN@-b2yNCSk z`->GLgN!G4UDDs^Ghgp(cJp#NJQ`PPt0hj7w~9AU^ZG(SbwaM`Gq?1~&3*Wb{cfMRp)dV|KDo0G=sKw!mLi&g6Xgvh}=F4L6=CPv6>3(S)X?5`GJoupIz!6Tzc_brfH7F5>rcNWNb zNBS$|XA8_@3*~Kg$@{#ed*!c!~Vc%7?}~SM9gooM-Nzr+dBm>yh5yjzppDm(eaea%j3U7h1OE8$G$-YB0nQ zB--Qi{;hE?nS19Y9w4q(*8j^q-QfSqzB`Xuws9V!-4640`~@zQ*XDif9L&mj^W;|2 zE4HG}h$B#^$xln6ys}e51J2If`GZu3GHXH%B zUU&HFxvz}M1xw65q?w0u(7!jm-<>Nzc7?jGrwgZ`zcnhnaGqH=FR>g!(;;?OG!9F6 zecdkJQSA$u7z!j|jz)|a7#GYib|6>^OgEL_LqNlFfh<#NGRIm7{*(8F`aW}Mt1O72 z44++zQFfvqB*r{voJsWv){=@Y8d&foCVyoGvEA`h6|?AFORt70o95$VXiSA3?3%95 z%KXtf4`Fv`<^NS3nV;HH&0qqluor|}r7iTv(5qT@M`kT}ccfx!FHeuK!F0NJ)!ab8 zVDQ<|vmmt{E?#7n(K+N9171D)hEkMC1w*XzgwAnAaHI7{E<(B5A{BmBON9Y6_#BlU z)kc|EJI7W3d^?8?P2);d77(?Vz>ojRR-`uM29g+QaA+uF?v0~PDAe(!@%a(Qc$nOK z!<_z#T6SqKH5eG7?j*jzsTyMtM-Ixuq|@~1KI*TmES-BJiI4RPPa}9jkj2w3?up*? z)ZpHk@vHGaUsX7#GqB0!q0BiIZ9z&@M%c|vH`ZE1W>3Tp++p-#oKe2AO_4%rTWN## zkjK3GH$R4?jb>cLf*j8{Ms-()A1(tx_XqQHy{CDk%yF)-wMVs8 zGq^|k(tSK>FW@bi8bl)wF0bm_lo*{cpjy&ht}VKnFuNLj=Fq~yoVMqAuQpHzK!=uL zzn?W5X? zo%%&njI|BHVW!{AG1K87_97u{K%ct{Poevn8Rle2+o`e#hb0b|PVWFSo?UQHbX&(z z(-7&R8ahwLjaYZ0Y51_o*h%eL+@n8N8vdyf@nVT>pxx^#chw(n7B{pucbWw)b?y6p zNv5AIlfEoH$L5AD?HYNxx?)a2{5{$uNFtj+URu2ldNB+Bo3LdNobx5_*lyuEo2+o; z)b$jgEt8sz03!iK+6k9$j~ZJ_aeR!_c9%2t**a6-1AowK$Tlmbp5;72IB3ih!&8l< z@Wz)Tx3`^^+ShQ%piFDrw>-m} z?#&1>M@&xlX9#!DM8eFB^mLiwPxtm~nCTxtGiUny*_md)+)TV#&a?-V_a}6J%g;N& z?r(5&E(iGgXJ@4jG_%?c%p4q;(jm!DSR731nIOR-_Aqm3@d$Ic9D)0bBhuUphszx0 zE+pW-)XW~2ol0KG1Ee>Y>qek==KPuSO0dZ;mVGAdojTGkz(d3WS(IETeeuPzG`>WR zN-k^epR`<7j$BdbH_Po_`8~b8WKW-8uosrzdo_$TzzlVTQhXt$#srlIGk@8_*TPV14j1=q$$U)TcS8NS`;S!vXVD{=z~FKo)Qm-t9Ag?;C#F6854mbHP*b=}XKPmkcxZ%q8V>qmZ+fm@jF_ zSxfSD2{;`UVC|ftR%@mlA51XNg@M<+9q(zS2YVdQQ}3-QgHRW^p*yLb+)#b?o#IAy z=dEK;*##(y`a~m6)MkSr!TJwID7YeV0+4lpsmH$+<#e+@qE7+>*#IKSUV-z9!On(I zr~_+pic+}HHp$@}1cxLyJv=o5&{4)S*jiKECR~%TUo03Fi@^`aDoEAz_S?;eBKbSOQES1rB`@fWSL0lzge1^3p+nLU^56gipSO>#y zJdz&mf_3xK67LU7(mlZ48d#joD2TM04oDu;jBi>d$6$(PrZ>$_hc50A>M#fVD(yV~Ic$-3*aqm$32yB2@3?`N*C&TNy2`xW= z5fke3jNICe^UK@XWo^f=;@jGBak#T6qo!SE$nt5h*UQ*>Sbk?2UM#%!&sAg_1sLQr zm|2Iyytc>!BA`%}X*2*Be3;{rJj24PugWs?Kvs|(UuQ{G4pNmsR3#TB0Eq&i$utqh zb)u0UQdZK5-$}VDM==$-L!5Y^k(8yfgi^1@Zzrsi-*}$qa8JRoSJ{Nh5aKRgx!2+y zzw~d&6^h6e{u@TViVkwH;C&|$Xmt76Ap!xFXV{8BAjdWXbAMu6g|#12vNuU4Be{V2 zFDeR{*g}pf$$(=%xrT6m_K&^TWy>nu{hu#|LHg*@A>949m%=Ckkigyl=Th^JrCF{x zf?S$-f2rf{e`%SVg|oFjWvK^vVnoNPI3g}rE>nb+{wAT*oVaRPBq{YTnkyI2weDIE zZ{Tn_9x93zimTLPz@gOdx_j>i=rzNfOfHh+lvAdPGT#w6nW|Vkhe^k2BgwsT7)vD& z7ocPQK7sS0o{nyjaKZL8aYpZ@qXugO1t-~1;Z zig4|^Bpru1zuBl|yxyfbt^dn3mG=19q(I?ILyKMf4g6{_6INO741pG5bz%< zcdB%m$boEmBf*-kQqH;ExJ))J^RCu&wBW&d(Yq=S`{{UEo>?Z(E`uzN+t;YIyh?rh z1Vn)?h9%AixM_c1rlTnTT;_zt>cbm_rWN$*1uN*fb5?}stuW`VNdCSbx0rIEJ&yA<_MEIJ1VixuRLsHvW_K2w3 zN9HRJT7uc3gw3c)d2*o4N?q&e6N*!ndyCIea}hILK3FCnE>p%24%WWr$ps!pbQ5#@ ztb5D2E1!`o{len1=-lXz^(Xlga-AAd?NB)k4rL2oRM8tp$H4T-jVovm4C3&^e)B=U zeAq7^^vBOziNSFby!uh*#TE7&D>(+?cPn5dJ-34X{rL*>*ov$&iJxC#{=7o|v;rpa zD=W;)E7I?*khfPb+g@EEZ>-SG4JNS*V~W1DqQWHpt7ft@llc6Vj!As(%AJ-TH6atn zBtCWJ&~)P;Tq#qON$lZoP=48OpYCtm6P04-0HSI$!t0nwXZ_=-h^J*cA#uWg$qvrS zW6Q)%4lkOzvjHh?&~#2#1`anYHS+c{^ZGJ7)96~V*Kc2)cUD$s{`!9Noqiw!5}`tjuQr|qkh_dEM@tj%h?8+5h4qw~%2J{A2%g3>4#ER`FUQfs(~S2*6>$1t+9 za`saDcm!A;S#BO)9=^3)-dv6wp+}a>olD&kAV0@ler~D!aH(}%$tb^%WhtJwRGwH4 zhr;Dk!{S~pcP;hTEj8Z+-sp@6%;O;4596FgLT4vY)o6tYGtuHuRwnwB;Ao8$53yK- zUr-hXy8s9w$yl0xXqyn73LJnQdK{zgBnNBVjcl0RpPIFG_$=<+-I*5jxMKIiAyV0E-rHsjn zsfjM@|8vIVDC+$`GbWW)QipCoek|a9D8h`67Pu!;GG)lHHz>H`zheq1dy-QdK;f~L zqiO{6U+c%C?jepj275={R>5>Y7u$u}D8>$2Sv#{ShccWJbd{>XC<_fsW%A;5Po5D@ zR%%scQ~m#EZju`ubk#(2tgi~cr&3eeOJ7i4)OP0-%rTmv8C=^`+ut22Oh0XBeRjEi zi&&r9qg5{gv|%UK=VbM3?IPTQd;kb9j@D^k4^DT&wM&I<2wv2kPe{{$Ox97|hg1YH|3-J{t? z2))T>q_d;J>_KZHwqXPFQ@MMQdxfgrzp@8?tWu&rQwOBJ*@qmJ5gVFS?yK_uFfk;w zUCWE+o34cDr#@BDCx~=5bp1<4MCKri8vx*kC&58%xH$L*}@gBZEM<$_Q`{ z-QY!%s3H#7UaD)Y&YQ?*j{2&@o_CgM~s4o#FX~AA>5*fdY^j#(JXPIP05fIngj>VPvT)x6~1eJFo zg#rlt4CvTH>(jVoY^=wl@S6-vG0CqHmBnD9Qb#hObF!V38tuV$ z4EZHT#T8*0tx5)#dudd1H`%qFuugvC_mJJ^a8K=p(h@vIe?fWau_f~>n-Let^OB~DroIKp+Xv}ezMa1 zSVMlY60O}yiM*~(j)R0lyExsh9s-sr9bGQ_|JkLEMDieOc{8xD!bv>21jLRRtKy8FCb1#&9a*1|4Vm*x0CBcW}jHPnsQgk3Ji?IP#JM&(C zxXj+Y4AE4^rs6F_^kpl^1KVN;-PK8V>bZ_!Av=Irr9jo1yMa9El{3Zb;4E3PNq9@m z!Fr;It2UjpKb_MYdwO|&?51VO*OtobOTCw%q_zJ1^T)ipG!y&&vijH+{LqsPkKY)| zrtnGG80KQZQzo|V=p@Hur{joT@I)N41vrBc>Z29%Y;Fl&PP*+kfw+<)LkC$Fu+pi+g8ge zSIWFzRwa%b9lPq7WIk0}@@yZc!Oyk#;9K6-d-sa%wa3%9tL2;g3NvHf)f9z*h_y|fwj<2TF=&ppk|AGkj~PfxS)r;CH=2nL=K#=^gJVjL5D_e) zz_KpvcqXie#PII}ygW4EN_>0(V(_s6^YB3Mh+Y#<4WLBx@PPmH09v!Z8-OBybU>aM zh>(wX<*TiH&GAl^<+ps#{(gY?#$5rmzZvj06I$T?dG3SZ&ke}611QG*Xh3cs(Af+e z1t?K9Z9NqqeE#l0>V^Rjmdgg<%e^=tJLN^qwhRE}Ue*?D89+yua{e%Ys>2^O#0$0# zm=_0HjQzuam(Xvo5BSf|3%1V7z7c(Yb-?^_pbgf@0DK(uZonA7$rphAHwMht2fB>? z#(;dY((=|T_$1#NuwMD90l9|SSngL2(9#V9@K~-TF`2m?FZ=4suX&~8A<~T?RtV!-XD_-dOeWPwQB4a) znN^ztC0L%6Xw6Y&>T{&=qQ+RER$8@oT;5uKm5lqu z$Ar-qM;;H2w-@Ol9cjIiym7M{kqf}K$6JW;&IFKSBrr5-UN9Q-U{!-{1}3y16G}l* zk4@QZDpShu0$?74H{N{^?C%EDNPz^5!?XxY0dtVrU?gaAZM>^{#E9X<7-MS3#9JKb zPGN&%y?ZeQdI^AmV9wDmbPjG|VWzT_!I*TxYF8`rgac^Yh&X{pP{X{!xda%5#Bl)~GU;N9cBr;Qx`4}BFB7L#B?LVti^_OT-~3`w$hxC`(QPkfYqK2c+f$Yr zEv*%gKJ^HmJbpEG*~VITJga3xt7-6?M>WB~X$kmR>ofqm+;hAWM7B+OoX;qA9yF2} zYE*kS*hO`FdEbQ&X-JKZkIIhCjxl3<#+1ir$C>dx-_kS<|j)kku#kr z_a%W_P1y355P6n{O#J=a!f*pV%A4e@wMq%Tr{HsFkFS#2SnMbsr|JIc?Xyi!k(%eO z{x(b98r=q&?5&@>TW>oXYc96#xHuxmR6MxySOD(T$IAL+BY-QH9$SCOv5Fvm4A}j~ zvF%?!7Iw;c#}28T@yAqRSCDO-095%*c%nJR9_{h-k^TjXVCPQ8k{5}J!U2BGOwvg*S{VaDHN9uemov411d z>>%|YwVx0FLq0#o4e7q%CboABxXGB+=93}6@v-|?g;_KUUOvudF>*#nosHd-=Z*{C zK2F{NTHC2AYX`ix;)NN1{>i-Jta9fnCc@pTxFh{`}8V#W)<%@t=NlQ-KISmq~h{9xpkGfW0n6|oP$PB*9v|Cn!#QH zAPR4RuPUf5d8G;uQx(}zoD9}cxH2m;^na~7E5ai+{u>a)6-+9#XVPSp5x{g%=#5Pq zbsvL+0}1x!XMK*U^hZ0reLvK`fH#&J6$|q8RBPKCOo&VQZ=4V}nY1W!7+NIO=2(=M;`Zf!^FqIZO;sk4=lhd?TMo^{xq_f}*Y+o_ z>*qef+b@{u?cu_1?N8j+51c<5o`jyo)9Jmuw|!{ua6isiJ~%w6mOBHH#bBk-owxJN z(el&10kh)0yEnS?@HW^eAJ7!?_vP_dmV2tFRb2*p3W~1iQB>zWtq&yR9w@B+5kKi* zl*Ej~QPoL(H_m%vF?88ML6w|L*k(Gu1}gDXiRZ&4530i9Srjk4X(gBs{=N`>3A!dg zIv2(sIstfiNq+*#9_UrSe{sJqFXpDo!9(rl@~NrKW!X|b+iWi52`P@CIuAZAbDMgb zxZkf9Z%P~}5nx#aA%Qsv1C=^Ql5Yrw&(t*s-SEl3Dm8%UG`|o7!E~qXXeLsj61f&k zKL^F22_ve)tHf%ngsQ<_HAX%3f*KqujiD)2s9z=wipQm{hAUm7R)R{qC{3ZXOe6V7 zZ=zDgi`1e~>sqaE*%3Jr0iy}TMQr6hqj#$7fF#dx3Ra>>iKVU~?`m~e=*5}%^`DHt zbVB?OCnVD0n}NxAfsszGvz*h}>a86oCUXB@+MuJW#6 zI;7V>s)-NYbrFV{FtEp<34JV@y0ckqN7zH)t0cXNawsylX`F5XY{sb%Y%H9Ho~Wsp zkh9*;5C-7d)%a*T{Y0}wzO$N%_3hPi&1!Jut5@5vuLdlwTMdEjzP++q_6Dyzt$QzT14S8#J*{Ej|m{GEOApY-88=(nrc z(p8-tU5(~VtL2yEn>SHULUSuO8ThSsDSS}@)}S0kYL z;)$~9L?+i)#or+2+BNdr8u{%Sd)*q0sw|{yuS{VJ0_f2hNpw`}R6~}EsMiPM9VQ2= zs#mSbq#DR&PsOQJ0;c;MV^PB**3n>JX1~@07Pg&ex^e#aY_*hct+7|HL4^40HT3CK zdMV0XYru|(@yr_CLFG4V_)078UL*IciAE)izPc|YnT!I}nQP?KH4d|??pX>+soWq6 zbHN&BMIF{UHM+;7a<(RIkvuZ3*Dz~11JkZs!xjP;Np7Z`IDK&K8m_cpVx>=vT%wr- zY!;PTXK^U1Jz3J{%jw&WBnZ zswI)%VZ2QtygpG*a1dH$zUrYrnb!kxe8O_@X}&CjpX&utnPFiLE>)Bp{gceDL!3{+ z1fwtbsUS|DoV_?hNKb)-MqdE-3iKCh3@0E``U6Y`(C_YSySfph3r{Kttcn)3#_Fi% z6u6UuTnYqx)vm=|YwTPs4dipoJJ$mMtxYRz#+u@9dGgczQ6{0ib^>_6XS(cSBI} zUvy=+IRUlr{V@+4XZ{=`nq2`ns*D5?=OOb1jwUc)7*2du{p7LPsSejj*G$ z+yN=sreCDJ&{p}9R5yvaHW`-dqQrLeFS3O$>B)EV)~Wg$WyTeCim3GRMJQvN!Y)*# zEF&#MSm%*4Wk=)etc1rGf-c;0%n0)vhUw|igs(fQbSPh#>xS2LY{ zsW|VGtK{da#(vHi`WeXAI}S*(;1xqDN5LIwV=q;b`f+P9a)5~`H+dI?k;b`{`7 zq$Ro+*#$*VQraa@?x`u?KR~ZfFZlvm=MbT%PGbMAHC?6}}lR9d+0$QcPpl>;v zmW`p6=kc0TGn@6nit(pAHm7AvI@p}15|d;1!va!r6xOO24lPps14GNRK%LsUs$_>8 zmf*#Hl2T@yTZ_KYp@9;!8EF6Jqmez*~j*YXuxs#J#1kFmec7Uei4_H9 zy_tJ2_j>M!bFblk2=_eq1G%TU?;h||l#}`Eu8R366c1>r0w^Ws0YxBpiqa%M!1}^( zQYM9EyG`S7Ov-U=cLP?fORrB%bRws&^b=S6<5)^FSl7)kwh&;CGS7Jaqf8D^w?r@< z8Dy1QCyth?S4vc#RSP|@&#HU`h$cL*5YQF}*qsFIn(3F#r%A{y#&Rc95* z9D)~5xQZhkUdw)G^pr+gjkO=w$Tg^1n1*IDQY`p7V-f6bWk?kGk}?Ssd)J@=xa4DD zmNw{Q1D`rzrNhI3B21c^;dHzn8T=Bv;a`!r$~ryM?`9q34kqhb?{nK=cD(MV(<~tD zSNN&>3Ps}q?3zy$hTNwT2CYOzos$?&)8;$=L(uC}$PF_cZ4;CS`Q>5RG{RiX`@1;c zPBUn!f?M!rwbc!#C{lulF0Y*`CppC_O@%i3!#4V|$u}GQV(c`!YRtH)psbWxUJte?sfZobrNb zfJ2Pf=5?I*Co?n*(8J>|$wW+Z95P*)u#-GoeMfl!_5E|KRbX8%noD36D?YV%kS#wGRvxAfKZ%Wp|UqCqzr09FaxH$Hd_|T}Kp1PFHy(!1X zo(@pF+Jl^Cn`UA+1=-EM*~0YGIXfZM))?O$L`m!iqg8GBj){N^1URkb+lUi@Dv%eOlmcls?K!NDw_PNeLCOuz;r6k zevfZFNUq^9hLe6724k&GLRPDN0NKMBrG=Q*KKVO{|;tOkSKq-o+@KF;t{7cMP!|5$7{c01OHzs0^ADWM0O6*DVN z`^>&)OYF?J(q`~bHgzkX|6~7t)tymRDXPb01+_~>JL1D=x!2;^Z{kVF>-4;5Z152I zI=D~&`e>pUB>HaAtJnR{8`Z$uA2k~yX_;pkU0%qn#6bZpf&49yFNg9;j(QTaH3Ws>%Y^hq^H{*dv8RXTi=lURD8CM1RUvm(hggL(#D5{Q z&xhzo|2}l+pEaLmy1~9KdPgFuAuJ6|3jlyKJ4bRE8`i7YInuo?+_h>WfGWoM4{v^@$18xWYNe*_`me@n_Ty2A! z!EE#(;*6L6=Ly7#ryf9MN%!W!oN4SC#^;KI6%|gpcNML$&Kl(pVn1M9Eb_#<6IiC7 zPQqsG4l+7fJPr|JccUF6WjF#01ZAAI0Aj409;655^F3t}9~+8T{^P<0HW}o<%^jj; z!(ockkIY9!uqez=el?KugSuq)lE7RVG##(8J}dFgll9?5JtA7qm)Aq><#{wG9Im%D zAum;*|Az4oxDE))@KK&5N)Lz$y(Ehv@|+G8wMN0lQwPeufuDBIZ3rf zbuwtik*E%72DZRcFeSvO!S53X9PIsDF&~M0y&S_?o%du$VUg~%Dy}I~f$lD0pdnP( zAyT~Q3Y_Y~Bj%4{#ubmN6`D(-iSGINN_v%&EBym)M4px*B08bwumzua*yXjTUTdA$e@hp_YcTW`-Fq!2|YXYLgHSe5J4Ax2+W0Cf; zJCrjjJ3=sF-9`Cujh@H55WYg`MR`STI3jdS%czD!2_n-`CKhAmQYjh+5l@X093IDH z;O9zKjdZ3xqC8i-!%+kQ+74&S8v%`>XS}s5eAj_66M2rh3GKJj7){Yl1RzP2v^G-8F1FOtJs+p-P*=9;c*vj@cNdV%~nv<%EhUl9M%4P~H%s{he#O|jbOK`97E~On zhB=OF*&g5y9ipWSqYQqfy@#bB7yELdFY6c)Rb~bJxqr+=z_0w&mxsW+6<$LWqg#X8 zZE|}kR;%n(MZ6v(WZ8>t>R~jm{&kMSm}#0K&C&Cfau||Sk1NII_)?TIyt8UYs`H;3 zVs^NdNA`FT(Dg{ixaV=28Uz|@AA*TYQ_xP!06?gN(NL5e#deY$ldCAy-QZ}pGg$uZ4V%|e0_9}WD zCeJDAxX8iy5)D?+QQQJU03>C)%mBV5WncCV^ls1#Cb-&m`gkP0N~;6>Z1ayz0>D;C zQ8Y#Z>Kvy7On|&l{}~TF9R4qIX{D{q64!1pQciPZ(xN&Mg|Q*!lMrzF)@qyJaBS~k zun4rO9jT`2=`BEy>%FLl@ps@{)ZlrWn4N>YORT|X&mH4L9Tb&KBWK=&9^NHIDR|g2 zKc)*FCWzy|M=f$IAa*}xJ9_HhjO*PtRG*^}kS0}2{{&Jv^B3NZ;-|_{`lDIcK z$APA(-GkULEN%WdDZe{-J?Z$X3@(cX1_OhXHzPoFoFJ~c7n32`@fPjUoMo@r2Adis z=}KuawuOr7Pk+h0#|FA(beoZ-?qXJwdF6FZk0?g&w>ijc@5_XDKzMGxR_Q9Yuy* zXgM>5eG{R&SF+JU~4ZoWaTuf&y>D8 zjov;=Q!e1PwA`$e#Z8bBKqk7)`MUrC)IpbDx=4?}`Id*%@@QHfNSi0qqfs&hs+rna zkXR-jhUBzUzMhlLQr5hV*hy09D|)NLrhp6uE*&VoxFO}Mg zVx{R7aOp%~3b?Y6pn_9W^U$pZOlCL^K-v+a`sk<@@PQdOQ^F#CU-POxhg)5yF03S! z({rrWG@5HRH3^J04X)vgx^s(g;ae^hU`picN{zNb{k$ACbs6v>%b*pzGhB1sLF}|V z3|NjgqbCblc|Qxx^W@99>d>8*u^FnP6H5(Vw08|{(7pm4R}8<>V^qe#J4m76!bqsh zLbv&htD{OxHgz7fu~Rm6?&7W!Hg?8io=&b(x5qV_V$D2d-1MsBDc3zB_WeBhJVD)< zRM$DxGgq^lGV;9)RroH;u2!ekJ(UXIosru!=0};@xcqFe4UcA0VQp7MUgy>bNr$#1 z;{I~N%uXYwM2C((TOVCCIF^pg(D2H5?=Z@acd6(n$Li_<*+F|q$#FdMTuAri+{lrs zp8f_SqnXjmFnT6c$LQgur2u{$Zs_b;-xf)Smy%3T_)4KvGOxpcYL zj!40HTjW1CqvIllAy7$QSdvkmTtcE{MC3)?x-B z&@M30-KwPV{KJK_I*L$EeLavV$hRkcoDbj1rQXbiujIfIqItqf-l2EfSt;~3ivn#0 z05c>Juzqqh&s)){Zh#XyS+RMw>S23BMv4BMT@E8A#i>hm^vK$deYUk%8jyE0#177t z#@JN_n(zQk$X}J0EA#l?yjacHzLk$=@fBIQC~F?gpp9>kTC9{6$zwoahW6`@HC94X z$5%IIWkmp6Tfo|sG0m)t>X&y*87#(R7)eS)V;S5Dc9}9kwzTIqw+FGas2G`SFG)eZ zt`v(z%}w!KY->KTd2p&ejr9-fbPNK_mSr%DLLx;gB@kC)e0UumVtuV1oR0upj=MwXkj=uL8TT8;OrL6@~(kjM?s1duL_zkvr&i+z1@5 z74$FnUF`xy5VT%vs!Cv%BWq^^==DNUh;p#eY$J{9a)mBKKLsfqOeDj7!J(-X zo*ZC1v&Kd#JV>qDmXx)rUzu%5Ki2rDjr}4AQAlMd6gLu7UUeIEBc`K`x`7?1W;sc0 zR_G3OhDFW7RNj9H;7ijDrVL#GzZQf_X}=ZFo`v_AgxP_ZRu!F1Sw2T*#{sy;hj^eS zIn#6KpL?(41PZoz#o7>4;#G%E;R%FG#cj1{e|NxrbW$tr3>|H(9ma5shFPEX}|^w46?+-1lD)17L~=DC*%fvdo;$Z$4+ zw{~@);#%+-p$#p6NUd*?4K0h;w;+c8iZs$!O}oK0vrR?xOQq=@f2(*einmqePwnnn zbXO!&gW(-61hEKlekwJ#G`0r+05xH0tHd^x;z(Q4c_d~0sf#mML!SJuV18dPzb@F{ z6y#S0`!v>5HI4Dd^Wilne4!{cwWc*M&*$wm7$KvggGBwQg7h*{nwVu~fjKgI24Dc9o6yyR#HnT8gV@TiO5T$t?}?IGTLZ>hXR+`H(G@dR zww26NrQ$F3s%QgopD%g8FL}SK#H~g6V~Xt>@AoChxy>cBg;P{1F_5nog7XWVLC(>! z>L*Xx(994qcZ>awI%`6;&xePaxk~JMNX!gp|6T+Co+*SoeX*P!;%6=s%Q>)W69GKW zoGnoK3K9W>40pPn?(vu;4uViBb6YOT2N&nDX7#d@M`eqc;FFa&^{ad;_Xq*MPZ1J zd@lPBibU(MemyH(7Q{uJwGi&(?uas?$l0m z8=9(`3rM@p0N4IbSCin9dU)SEQWDc=I+!L2y~+{JdI7KO7b8s&wN zyLvAH{!mgv4@f5@GKAz>?R~@T^{XMpo1E-WA29K8jD8pv_(BX`YqKG2X2& zroFaPPsz#v`E$q|+F)GI=dFlchk`Nv9srb6?rRRL@jL1pa~^&lNBzRgS2hdH%mphnfO2i=%u}TXbs?PF91msr#XF@=@w- zXy;etm&Kb2-cy=7_?7vEtwGC=^g#2mooICr3%jn7R=>p-!S1Vn5a;MLhMPwJF5Ea; zHjTc~ZX6B8`>>+zM}NiCpJT%Fj5*gF`k~DFKu#5Ri+?Ecf!xK*9tbf%l;j8USr>Gc z`B2OUVn3Aq-IZANv3F|KDiKFIsFk1#2FPbhsA579)}+!RXxoo9ems-(hM6w4*~kZS zW5L|ShM0-d+b|$9X~37;Iz2cn-Yl@6DKO>KSov#pfisB<0&lI(!}rSOpJm2##|EwdQgfi{C_rA9mp zZf{85(GaGs(hxy}q)}y1925&!vRoULjTm0kAWt{QF0k1X=*Bn@q6?q(Lm|w)QLtQi zMVqL`^r9n;&XMWJ8jO6tBywN9d9=YkfbR>}c8Yf1C?9FCziW`+H`p(rb7+rFv^WBb z73t=(Tih%qGK~NS;kpbRGfej2k-Jx-Gm_zKKpaBmwAp(Oy3v9MEPPAMR zEb@&|UG5ACiJ+vkEy_M|`8x!V4>U4b*3_kf2v$IEbxWvh7)l?py+*NA92Vu|kV)p; z4xa1*EkiaURXkCLSaE0Z9Wm)?`u~ug1nQ<~Xy3U0sko-n{&9zqDuS%fw8Gg=Fw#7! zE3S{$4?q|JRd?lGwvmdz0P( z52mY8>DsB@PDBfRK_{t5+0_id?5s8_qpIyi`IzKUFJp_VWOglTNlK-txvL6ZGe$W| z3SeizR%;3-x<%VT!F5c|5#GLh1F;3{9-e7I1rpAUSwar#*tZ=@i-RACxi45(R)O=R zq}MWWVqJ1NbMs;PSB?hfRNN>D$z{Srlg`n6;#A4H2i5S&-6i=w0G!F(XL&gbj2nAx z{hGvJUNZHuztv+rtb##rgA50u+Ms9^JdAR?-`2|4I51l0rkq>$&&RxTxhy5(E`7qgX*x1d7u~D2jcBFH4 zwa}4G`#7>`q$8Uyvrs@&*{*J~vF|n(rdDxXwOOClAztPd>YLXdv*5vb@H7$dwrc;Q)jnJx8CW&4*hlYjx0RBc{fY@q)CTC`Jk zEYV1?^B7U%Z#2j|E{O`R%zO3b{d)7)di%F}d9&WWg`lO*B$^X%)P+!BYa0bkpU%8F zwcc*0z}~6%-l(^Ksh5}Q?JM>2V!i!Cz4=wWBfXxgH$Sbn57pa^^>$Oe+*NPyu9rLO z?PP&QyS@>AMBIGS?ErFVgZH%tdqIPo+hEVbI6RM&0Jx$ag)t_l)tg_}$#3e+&+5#h zb@FhXd8E$JV^7t|eRZfWAK~3!*Lh*Re5Kw7!2;!)=nvQoa;c~czJ2vs5iBN-Lq>R0 zNbbZ_Zq!xzRsS@V(?fZ=*1lS6{#a{XuQjjLnm^ZSkL#DDFAKwC09!9I6f`3GZB?>c z!4IO>4EGFVhrCyB*$Zh2#0m*OSSF&%=)Bf2ity!|%;-Q76d38~HO65%nF2C=W3y(M ztLG>-bWhq9J}J&*hAWjy8}w_pQk}LHNl^!7z(gaA^C4V1jEj^R1o^}icN+`on8OLA z`Ip!Gvmr~a5&sCKO#JT)qPQQ_xg`yDz?P$h=`N#aqqYli6nmw@ScQ7*0uIF{2C$G` z*$(q{FN5{s!|#B6t9-3KD{>s!y(ynUc|8&OT+PQ;&|3xWny2HAYu=QGNs-GBSmR35 z^c1Cf&rYES_+E)uEf>M&U>M#ebcY#i0R*1u(pG3uO~&97eh2qOIKspCapo#D-|-zl~wt!HFmKFdzij;yIQEq1nfgh zj0(x9rkz@rmQsCkyK|%^?-)uEo)M7|y1Tocp=C->LvHY-nd8@s^ZhZ*ST=P{a9gPcE`a4QY%ScRH<0CQ8 z7u2ChS0OD%;`}bm>;rDb-ylJuM1`uj=+E-Qw~zi<3)pf1u=S^O#^ET+I3~6pD!>nd zt`3cLO7|K%QI@%%lLDLA%P|}@j>MQc%yzwx!A_O9KoNw0z;`UbFxQ#y>~xwpn{@0e zt?2pz50ysKp#bj)ho3F>YnnewI!=_-$?R}Q2=GOb7bMyYAlzw;&FGf3_oy@xHMq2cHJYS*)l+i zX#GXxbu`1GS>tArt{!r$guwK1%S+jy3P%(ZROqBV;V^BD=VqYx2x*7rr_YW>%FIN0 zp@OG63=|j zr$Q~PYWl1|nJ3X>EBIj;iMIA=r>*^o^HJ?fRZ*IW51lmR&l6PIyoF@UCRNm6g?7f7W!f-~HgSoynrh_01Om(VIyCD5 z-cH$TP?*zrm)Y1Tn;Lg<*Yc2Su(7cm^KP@T$J*OfKQ%`-m@|T7f-Qm9)G{RY!Vjd;g+BO&~JG=Fp-i_19lOtNU;CRjWN1_mt;vBU~?oaG?fNC(;c%{1o^ogCrKAAP_G zRI=2g0htQBU}}IDRDZ3l*=A&|ZFkpT8_C}4R4Z5EX z0|K3VF-hAH#2G!SYQv<1*H4lSlkN=NZ5_8{%v&q37??oFQIVjkIqQq^P3xAmxa-eg zSYe@IUXaG;<#t}o^THKljwp!d;CZnxNG6+jLrCKdxdI#xa=9%1i$q`Tj$b$Vv75T$ zaSwBxhK58l&?1Rb(u)O)9Qmj9|6#oc#pijf?Si#7*0?Wl2vkhcg>l0rU8*ttW*9!y zCBJHtr<)M2#G@SUQwH3wiQS+8Mx$tKH!@(V>|)F?_YUL<>_Lfxos#H5@(H^;?ovTP zKrj?|dK?Wx=fNlhxo7CcVe?cwB}4}y_^LV(#YA{1M`h#0^IqZXW>n7gdW_FW&pJFXYmV2+qFQ4_ z)B~bsb3fjkz|1)ibbSUy@1gJ`4U%06yP3++uu2?-HvDq8Gn%34-;m&}Zu6z?#`C-B z{$dF4HOU0crqgv!?yK?t)n8k9gXSam_Q>0;hO(-*N_{eLPE_FZ<}kz5J+6>3UvHD|wn-URk!UiLPDhH4 z>Z#>(5ch3f)e4Y!HQ4WoJcR_SjiN|#Lz}&&O>X2(?>D!}FWMALdi%>XkRL`Cn!tI4 z9M8%z((+Sk1e85Z?2_u}`a6y;)9V^RmhMKA8ZVWTJeUeF0Z~&2(D7rbf^EQ=R}2>B zp=4`tI264VO4ZmF#rFR(W-nfUzK~eU+*Rc_Nw;C29i)OwB*6?&Jl%B1gC#ocuq?oX zloCDS1q<|iAq@Bw3fnP+_)THCf=JQfZZ{Z&!pu0Gb^HRwH}~eJa9RR8o@ax|h<$V{Z@PCl^-@=+B0p#zx*dZL zO3zWIDy@S3RPy8NU|uTF0us}yJdr=xF4Q;WE2oxs5GrjovDDpxQnGBtUZ;n@CnSf5mCLi zm$bbM#kFar@>G+`*QPU$<=J6C^pIjFakJ}3LY$EgCF@vepU2HKmsXE$&|xH9^?YL2 z|H_wb#BmAzqY90~$#fbVt{LF+MP~CzLI6X&)tD|+%*Wu6zYidwNH^L5gux@_TCONc z6wCGXnNo37!;IZ^UGl95Vyg#?tC>w4!y4pb?Zn^J`McSh{A#dfX*0E->{x>o%8dAQ zTwUxTpf;CbqPiC#eD6T#Z0G}|Z6=-w_e1?mv3Co```K(dW3fCj`9%szaoggRV%AJXh-G?Q*4(&;F zXHhH$x%Q44i|$(uKcAni-2G)JJ%y+?x$Qa5_8e{1FG|2ZeYynBjF|`fvKbqDaCms- z@X+~jh;JG$Hx4&j@Fm`cOiDM^xOuZ%Esk@RZnoeYRFE^Y=I|k+Sh|L9j5ZQ_Sh9%&4an{hw1`^e?X5g%-gCXNi^}a zxt;Jrm}v>n$95%nf~#b6AX~7}4ror(#ge&5Ixd#%MFJkebLnEqx#t!nUM@Tyy93ih z37M;2swdM8xrlHf*SLK@#l=H&rlZupJtXKbo%LskzuJBh!_stqTA+$zP}aS-r*L; z4nrG|-Ol(Om#X`~J$UQB!US$M%jIT+?qThP*X$KWs$m}AFE?qN3|=BX1X!*Uwl>@d z5wDi(@WNO!Ir;+Qe~oh&OyO%-Jq-u;BX>@B6n1ejqImnbXMALkayr?aF6MHCsrsss z+Y4thF$wi9Hx~*OxZGr`?}aNW2r((l6_wTZziB%UaJh=I@$Wlx>h|4xcW>|a=BAR6 zKO=zJv<)dQ)L{LOU;1fY0q4z2v3Yh=zowK`l zZva1^=l}fgefFF=b7tmDednFGCgIj|42cu5Lt=6+BP)RNu+>ZTk}J9NZR$Z$)RyxA zekkOJ=0|qe>FX-wI?@yT!_7AbVd4aNRK*_=hzP)PdaDnK_ZOrKi8s-`*1O&2FETYF zhRck()yjaJ0g94^js~kYlnE{9*u?G3nYMgX^vrLJxtqCAS}LHN7aM<}k)i&}RH)Bn zuCcfoKE(tp1@n>ncbejU*s@gAIQ?w`w=v_|*b{mbngROo4}7cfere(eJb8ET9MWlI z$1;tCoPVKsV0b(6$_=2mtAGYA6ZsU+{#>)Q%#dk=-7(^481_rDzAD}#5H-Q=2)~x# z16#97{x1vQKhX=gQ^F5q&>KL{*=TV$BjIZ(+T1L169V?iNa%!xo?Z{%kV&zi=D!6a z$ZSlmBL&9Zt`u>g{2&LFF<^s>V&J4C@6|>&>BsH5Uh6X<9+4amu%u!RA0gbu-^D#uXzWEKKXa}UnY>Ao2Wx|}1 z5&t~3LgYQm!Gf(Et0VBznBN?yOMs{%2*NWW5F;C_wHi)(%pFvEK0pemf4c07c6y-WGcQWn0=RHD8^VbuerMy@WpBk8f?ck~_=gi@!NZg8>=LZmE~M$MYTNQo=u3}>%who3Zq@EE4B z1XQSch>lZ{6huZrJvp*NwrcI|rLZD4q(XEb3OJbLO|GRY-Ji*3l2jGjo@ooainE8> zMiGy3IR}!sc*}OsTz{l@qS9;Jn{{iccj+T0o5XEai~C}Jk5MV@S+9fEL`nKcAdxQo zLFT^(d3L3IHOY}fMS$sERNRVWr8t1Ym$5C-@7j~BnPTj>*NSN=RuMTe;RTQq{7VqV za78afp)|;aUF`PP(32TkOk!HP%D>>$n)z=DZq)cpF<-A(#{^-6B{%Viud`N;vG(Yvz{AHgzcttrbJ`4_}2pd?_vCdKti-NT> zzyP_e9wl4Acf3?>YWL?}0#nv!h^0X(i!8-WYW^XpWMT34cT~IK&i1SW;{5eNe*mSd zfoQ@gOVpnzW?<5!sl1(5oxye8&DZ0){`3vWwb7hS`QT=iEeX%@=W^ZVaM>OZ_=%Hb zp6s08h2W=3pV1}FvHnwt@Sr>OmU{5vx595vE#>~a*PUAJwWsdozLNV@+|T6qr0q^UVu|Pe7t@`(irLOG`w!{;U%vma-WNC&0CEZg-Z2AIQz4;6a{r{jX&_=&_Ej(t1&NSP zvT}$gM|*NiP%rmT&sNM{S+J~qnCJ!YJscRKPAkyQydOZBfgYonxwfE58#;l3Y2X9Q z3WkoA%&J#1rkdS%qGSp#z`H!B70u@Bpapg|8n6c#&awk?K*CTONZ^E^oG6ydw<$49 z-ih!e)$dg&zU*|87l9CN5&3Q@hQ)LR8BZlBWns0p^pyrXO@0b>W#2PLgO~5Eel6U@ z2jU~5S>Xr1YKl%Xs6XSQ3ejKiq4oB+e3K()#gnd%ZqAmRFpFK=VDhM2>BDx9RTl5G zIIs0n^V*I#{&8j}EN5ZTwVz%8a_e74dm!1taik};!_w`s6k{(g(7Gb_h?4D#scTF^ zgH~m=wBN-RsmBMv%ucDRn9VR5GH1#1jI79<>o3o=q~=wIpyx0FWylO~d%Coqh6OvF zf*ff$tV7YD7$d|rm5HZ@Rq4~UZ2Pm@vK%)myGiMXv23708{5 zJt3CDsgnCeAlC-Dm4SUb$i0IBC@JfQ_~1W6gYAwFLZ9oJwF>!ph$$m?`UCnj3b{Y9 z3&Y%@p&G`m6>>ymj*aA)$me=o-PBR7CMSe?GHqBkDjX)}*-)Md&EW(fWkLp|Cf=_V z*8R$tmoRzMdwghT*iohfYr^%^be`8oQI8lnU227DqQ#^?(s$&ZFwsuevzvye(XU<) z<`Ak-$Gb7RO9>jrsxe_OS&t{=j*`^FRrvb5%Wb~=%To-|9^=d594ln!CJ}x{$5m0Q z2}N++B3F7I`B;yNSbc&gUFg4cU?%vnW~>n)QLzM5QRa(!74g9|HB$?_9;f(eUN5wZ z3WTH#>oQ)I;rTak;)pgFOm3Y+r!TTr`;+s%PF~Mz(O){QB&bPzNfW z+Q5J_z>#ZP6+MTp#CF0;w|KZKL2_avhpej<2pz&~4*C!Rz74(8Fm*ZWDuW~*D9C`jGkbYLn>{Y6RySckgQGV#W z@LZFe4kHfFoUzZ4v^!}x&d>8xk4NE6k*>Jc!f0j0d1IcU3ejtU9%`;(YYEyR^Namu zBoBg!GGj51sottc?E)wR)|v!M0Um;Ups>50hw#=*T%r1Vjob3kmfhAnZCb<2uuxV|-Ughr9MKGr>hB%PDsW492A~`xqke z^py(DwIVUs4O<__fc`15{0e1fV%On(ES5OPU#G>g6mAbRe?C;IjopVTEx8zUcnO0IJjg=2IDaJia2T)4?0O&%{|APpR+81({3JPQmgJ zS(AqNIC8p_+^!V6YsOuZ-LLGzp}Y3EYm2)k=|6mB|6@=4aC~!2a~i)Xee&JjI*}3L zV@J~$8?_=naA|awQkE_=M}G~^klxdg`md2KYoyB4C2193TC2q9H1X?X&g4swJjq4r z-sysPKk3=08|_JAl5&#X;aj99o;1moG6$N<+}~jYo77{d?Hm`gaXp6qr4EOXIh|UN zR?ShxxWaxQw~=lt*nY?hjY!Vw@70K02vF+EO zMA688s-#`s(k~(b&@?vJTI_X^{P%}qbJs_5!-rx^H%4;PhhuM!15xgg$UYq9ABm#B zHa_e|!+#_)4@Vu3;tI0yqTbKZ>d1ehDb`;dnN?B8laV~t9Q)_U{!bKeov!r+{67$R zPe<}hlE#g0(!%7O|11Y#d8O$sEtMrvSa0cDk^C)^HzRo?ir$2wtSCe16+USG=KGO( zFX}iUmTw7$uG?5nN-6}Ifi$Ifi-r`%1WkgU;2js|j>iTZ$7nPC#JD~kPZj@!*er^3 zXU2(*LPcEa`EZ0|?0IqS{5WH#U(}rE!q{98=imoillHGhQtM||#7%r!%=_Sj!UkUe z51|H*)7qwCykqE9Azho+4eb!EVM1a_Vib_>ME<*!W~B6~dBiyU&S6l)4zo(IENDYi zmJ%FEW~7!*CGLDP=&&vV0PI8{S;;n<7NGC=C?y0c3uaG{ol~g|Jm3!RC*Ha+EjnyI zQ07IC-83F4W(sZPT&2&;wT`l?vE9g2jOiCliLno>3Wr)+R-;<=*qk{`wowiZ!*(q@ zz=#`+yfVWP%M&!`Q3%5y3U!wZTT|#X(F1AEL6`(@NQ0u6@W`O=(^zRMRrDA}7_=-0 zlh1`g#Y#P(UmEWy5x6DNF!ndFLowNfC&^@g5*wt(<7FZ<4JR;!+t#(S^*jFhW_HK= zva$On7TGcz$>#drM~yjv0Ly{V<~B=jC39q}a8B=B-fd&%=C-zT^IJy{FrrV$_WpKe z`;P6Pt!uq^l%1j-edrmK{YkS+$0tFsHN2bMJ#g-&Ah+&@jEB}oWj)Y5_CIT&X7J5D zt!63oDXqTj zKQ87m)+fL_k_&_AydYYbtr69imCZ$EZ*f-6^W=QBCZ6{(8i9(xNDp#z_y$DC$FH*L z@>2b?D+ju!a9FZ0i+8EyF73WMWCJ`WYG*X+wx8Q6X)B zMd8xe!@k;iarTl}E{Nj`mBST zWCy#W6f2t)cEB=L6c5`0IA`$AlxFX9>QlJfj<^U-1#l_J-RZ$|##D&NOa3^sB+n%{ z5v24?wU~}tgZ8O7P3C|wX(C6xi5A%!^6bzus~EL>ssK-m(`a~H+8m!YM<~Id$Gn`T zLMV4N$6bivJTJGm+qwPXxU~Iq+HNPRl%gs1X&bpnWz{jw4y0X>mJ7x`?TAt4vSIG+ zEpNx>1UkNSBANzScBEtC_}Dl&RAgVXlfFDRHs1ia9ZbjO@JMqY+kHzVUwWKQ2dCqDYpEGMr=r>{ zgTs=nU_mZ&Pu0N2S}7h^5%z*I_YKs%Gt{{oS4$BB|LkUQ6`Prlk7%7$B zRV#P>)T3;xUB%8Jjy^baX5%d3oOeB_6h%Z~bf%6F%5JvHmMXZs-7NC2mz%XoDH}qY zh`mw!G88KJLUk`^IlgmMon2BGfsH!-O>oWY}O3OuTi8yd#pt{z< z0j~6B`NcgG`*VF5%Nn@I4z~<#J%KMzphrgiK{H?mA@okF4%&e!{JhB=k)cbV*f0`L zHB&0;bZKfl1rhL`7Nlmvj-k~31*Hsg{=zP;L3;c_arXPeRX!xn=dpWU#JMG>ar_`a zLA6Q;R}mg$Y1nW_1Ud+GCD0W{m^-6soyp;L=?FWqjpIu;3wG1Sp&J1J#+(Ks=#I-E zhf$DvG*26JLU^2Pee+VTOm{(be_Db3~`r<@*i=vf_sKhXzWJ-qMat9HQM%Uq=IqGX9^3LO;3(mcZW}rk z&9F1I&plzb{Yc)(wQ{9R*SMWsJqAKKTmVXj7F z(w#>aV0}P=h;Aq|8p#TV@{55Q#e&q<)-0ttwYYIqdZV+mrBpu#9iIzISu+2%1S*k< zmS8${hnBup?Y{oKQintR#4KFgI)Lnj(X~!Tmx;l48CGAjP|NrZYl+!}a=U6KLDEvA zel`rIxVnO6P**mjMqQO6t8mgc0}f8A(lT|P=&fT0F$71h$m=ot=xS14v|uW1hb>c! zF)G7SWDmqdP@)B45$I*Kbk?erlrj{N?ffF@d0KBTRs)y@I_UaM2bA{F{bwlnY*09-eE3P3{rPVgeiPPpOjDqqmot1 zWW~aAG33E{h|9}5W{Taew)RxC4L-fv4+*dok*qK^FIm<8OQq%#rSNR2xA_t;Ozkj; z+(d-u?<&;vAoV;z9+J~rp1e)*{#%~;8zkZI9nb!Q%20Lc%m=neI-!fDi*J-#7o-Mx zg@7*hIAB*fka<)BGWT(SGjdl99;3UkL!}RA)eQJi>PP(xsdHIDjPZHWqQed*tKH%` z_qr2kFU3Y40;5337L#FQ;rZcZ9rTD@4e@Ujp4xy8=)*E30po$S*$RYo2_^wQ;Aqju zRJjFSn(UwkH2k+(qHCdU!)bxarqoww@(3mhFe8T+9At02Ms?KYleSrhta(nURO&Wv zHf>IBI>CiGQgKSu=QdiP?7mQS-2k0xC5?$Q2~pV&j*6XThy&sTpnbPr$hVl!#hJtb zU9Wwc6<=ZT=tMk<69rp&K7CPOq(cY`1wc0Rcx+1a`<%4gA$+n$z#VYgo7%?gPUy41`l_C|>62L6siJ zKR4(-JIIOrslgf_WCK#bNu0{asD<^h9O=ggr#&`kA0G@J8$`p4U1-}i5-eb$>lQ)} zZHBUx7aiRrNA;Lvak^Q6rY&~(s2-<7<=nclG+4DDNV-h$qekyh@glHx$XP&dlmjTS z9gZTMUjjXRaSxT%-4qfx{G7yVxkVIFmn~J1;=$tY&%0|99$wBmn912=0y?C|Z}B@gcHnWvS4oB~Y}!YFfY@F?%RK|? zWBd-)+2Nknb%kt2Cv@);_rW~OA*=$<^S7z(Ou98ZM6b|MvEEXt2e7Y9u8P__486D6 zTUVv|+$f#e?n(X9i zP)cf$g*%{UWkv0b?njFE7`s_e_FENLm;XGxq%2Fz;m2Ip`m6vk|8OgIh@24T*|Y3cbnv{kWI96j^vh4 zW!o5%?EDE_GxIYC$^5>58|rqcro zYe~wkaVa}^%FNd?BYtB~`h|dBm0zimMq~5sQQHu|DzQn4TK-1kO3f0Z^~;URsWJVH zT;pr3?`H6mvEN?xn$_#l$GgI~61Bcb9VRv6wJjkj*C8hBTBbdywbmLZZPl3Ehhpk! zk`l{})cXA?{It}y>!)qkp6elXlCNdlcZ-cu^qU{|q+ihaF!trK&{&O|+U`o#Z-b84 za%p?U%GdZLrDVdR`YMzh}S3Whq3;y$CQah=&V*7 zoq;+FGL4*CqRx`B_H68)G(|F_^()DUX_-3vv=m(lV=Wm!L&raLk}~PH@pEhZYS8f+ z8>zILA!EHV-1wT-HvyyCTVwGb)mvKMvDvMwR#U~qC85wgd-E%#`yszxem(qj%=Y3w z*3&xAk|%BdWPV8<^b5!9wz(reP&D`3g!^QEolSB2uKrwqce7@kQcE<8yS^CYrwN~7 zO0(3W`G`;K9nM!U<{Ku8Brz>G}dw3ry9^|K{WLLd-7c!2|_;@Uwve}-qMV!55k9U;#}0+{?Drf#Mbg@7#_)3 z-YjyGk&`LOmHh?zJmnsyXOE`#oaD(PTBx$eKcdia1AA}1n%m2E6b0vdTv3O3xaIjz z>c<>;T;v8LH`ePm8{rDiT)I|)uUWbNKdM`;!OYg*8o5Uc)sv&r&YXucj`zP^tLVq9 zT=;QCA7{)fPB!O$+N-2-$mU7%ma;F_!a z?ctO| zYA;;m$?2RI>=~Y%jQ)W4h~}>i18oju8O950KY-qYCZG=I_PUj{{(V~ul@V1MfFF1?gxjcJ1$N^ zF(ZV7YGG42!H-o4(8J2WOu2( z-yt#8=I;S!Q!Jl)Ma-=>pzOMU5p>yf%KS|J;R<`)Gk^Di;o-83T$J%4{IXznkcGBU z(9i5DPuIcpm}T7Pl_{{-YegL@vc{G5v}Zo>WkC=u&B&6B4^f%2c9EmT$~si+Gp?{n zF=N~)Yy@Ivt+1m-4#Tgc$cvs?7|7v4cxFb<$oS{G!agI5#tOp<)Jv|gq4-5DtTuW3 zkkhOcc7hlr)+y|DCRX9;rZ1{3!CIp8Mb2?we8-bTEN$qp1+Nff&jBjJF0@PZPLgp~ zCl6PfXg-nylOVg%tJjIS+I{e7rn0>#Fw24ha8b3Ho3<$+BK>(+Q=K9A$?di_a*aYx z_TgW#Y8&I1rqdhAZWaWewWrSX4bFoFa%xqtsqHt&#K(>`*T06(A0Q{3hu*y0bA9ljTO{hF5FXBVzu? zb1N0;n$kg<`KwE}Lerhx^!eFxMN_(GMV@fqzsom>Og|YEU`scu`ltfP z#QLv)%RbUUjq0skR4viTG&p!Yme*qYZmd)NCvu5?^mp|J z--|(Ea|%@qSc@O?$s?^SjI?4a19-jvTcYQIWRV<-S|92L3H&_~qwlp2KGu4#1m;yV zO)F1`Ae;SaQxBYAy*C2$W{~R|YuNLm9eQnj`#;^vNv(7y$0WKd1YvCS!p9_99h!ec z^1k*0!v#s{^~k&y$-m$wXS_Zn^v6~1MI#q9jrj43d^DQes2$?`h{m27hiAlcAy!1i zXRirRX40+r_f7flQvT#)^)3Sz|Jt<t*g*$C24cB44%=NB|IjjO zAc`^;h&&b6#_b)?yur6c{tTuU5_}iYG5JR<@1red&T85X*ueH2%Xg|TC#JP)--*nk zv@A~dK4;~5D`$m`DRHXr{XH`8M!EBvN_pAJ7sg6KndmfE3ZikRq~-K<-z!#y2G1KS zT&&PG0hzW)>Ajbaw3&50_|W?plrTUyJq=wuNWc5HdUs=%=I<`Yqp`f5mUrtp*jgGnKvx46W_@7=azsWu`sG*-%gB++Csjlm z+InM5S#D>iRWkLX&ylwxuH(>~izB&2Jt`w)GOnv$_2l9vtm(tWjp0q8gnvj2Y+82M zq)Gc zBl}IPbx%l-yx^G8&1>`iKt`BJKsk`^mtvjUp84HcwY(nxFIicPqcoNw3~_Nn{vG^o3b@G76D{zAf^QU1sO}1(G$c9wq`Cr7ZBZ z=;5^h`3fVmv>vEhdBz z+UNB>0}H3Q!*`K~{3u`hZ|!;s))buxWu+W-^3(rscKs5eCt|O%(Z*dbCE;gnv|iUa z3@Y)bqk|s}l5*p&Gmy(A=43yb8a->GLir5c|A>g9Zkx(6q=}>9vI?mYJ~vI8KPKUO($NllXt?})q&|3uqvrPVQ%U%7@cQVBs;T|4 z|3Q9E`4xnX$@zR1F{L?OrzKB|vr$*qKaz5oFDKb>K>cTh65px9V01R!cWV^+(RNX$ z{0t0eieMnOi*n`Tk|&0#r~C@@TMG}Odthgx<+dEVV1A38i8|Hj_em_?Wq~R zz&xuUVNjqTaeP)X^2Z!cz!)I8}5nhTV&UNd75)=O(EcdjivmSeHadZMbKIEMb{%<-%LK z@EjK&Y$`|v0e!O_@t&FC!YU-^n-LdIYBB7>%v9o&yn`;B#G?zPFVw67ii=I*YxM;R zitfeXNfnb+2#R`Y)PY_9~+!_Rk{ z44VAC6&Kgq+ve`oUZhe;)7~BOwzC(Bd7iqbW_arD&T;LZ%o;jcS_n>h0N4ZJ~4ZE64wp8r*PeP@~$e5+%b?JEDvOQ%jqse zw9+^|=*qMV5ZMf<88au|-$2cXL2#zAu~a#0WHL~o zaqfeVT-eGfHdBi8Jmc0coonSxm1&Dxd2W-|bW3YD&pk0-KF|g0j63i@hs>9Bhg}Gs zP80@K1}sGX$^<0F(3?SFZ>W1JX$Xe{h(S+g1DggFjNL4nq*kxm(V2-xc{77DXUUB8 z^!5!&kMb-YFQ=*DR*Vy=`BodR56VBS9UYpe#G6e?zlCfXZ=$h%TM>)b;mlmwx@%kV zqstR^m}%+l4H`7EUB?a}gXrjl(@YPt&68zE+(S+4nAeCMNcTd_{Uo!nC!qdS$}H{5 z+f8KCa1)$84f1w3!<+Ck@@XFyR`l6!I7|K)2<=h*GS}@)TV_xBN@io(Xrr%DgE^|z zV+PWDo4w55vR9V8F{S1ZImYGEjBvWyDEvA3qeX^xyX(1C?fAQ%uHwtYCPOp9??Bm;Z}YKQ_Dz=z%`U zE*!+$ugf>Wue%m~QGTi|>i9X(Kib!{VNjHBvh)z`I=J_6Vlzib`dEaGurZrHQp^z& z9w~&^fi7kYYH{JW_{_18PQ{Y!81;XM$4;NCi55u}1|c?z-AGcvAl1gM7GDf7>3oX# zTn!qbRn9C%ek?x;e@tn7pcQkk)_o{E7mBO+ToG}VDxkqchlm-#y{#hZt8SrJ~Ova=e7cAzGd;%Vp3|MNL8$ zf2Hrv5jfA`IaE8nj`B>GtJ&gdeRuFKI!_z35~h@t@6u-qAINaPxLeBiXkL6Igl$xV z)=}#3T<;bBpl{9-IbTBZPh*_FAb$i?)MyL>hhH*3%seQ{^ZqkY(N}qd(DIN(kBB@h zmaB>WD#gb&{p}o@CA=Mz?X(wm#40gQYJ4(7`EajNpPv$47~gtUbI#K0Y_BZj=Op(c zG3F(SUKV*tdSBJ|n@?`Vg=Dd8Kna(0o0#<)=n znfk~xF=4ZZlP-Fj6qzH99D&&sY0Cn9GDnZC7gsvpKE~+KZFIc8Im*bLkInA17Xgb&B4zoXkije z>qbAnsov8VUfQ|DxaD}hzIy?-hJ-JO*@*P?)&)i<4JP+^he^Be2ihAOYj0d^3`@Hc zPLPRyOl*7^sEAx?;83P7HSND3-l!Yu@L+v;jY^*X(um#xsaG2q5lry*>oxmAo$(pC z(>ItFtnHcT2p8duy0!dDBaYDsCLEJ z*|mbnTZZizY7A-fStPnQ!5uzC`r#=*7%!B&UvC6|6P{+}C52(PP z{Esnk#0*nXo|ce_={`h0YWc9^f)l>NM87o(75g70ZS$#g7Ycv7d>S27Je@V zkz5Gnhi(fWFAs~H-3V`(l|h6g`hjKmP=BWoyj`d%LB6A2)q^98a#|!uL*Ow{+Xo=T z8H1nos1--^nHJ90bfM8v<=AZ2NA#eA_$)^oV)7C%0mbGsN}4#m2)SXBorU;#U1Ik# zvT$bgQ7r-KHe0%5l4AVm&N&S?eTTHVnawi?Oowi(|3Ac8TfiWX5_H1aOgDZ(6H!;S z&5MS#e_JE9oUhj(q_F_}{k zr@xQ|M<>uzmlO-CIKpzHV^A|lr@dQTN}NR78`M>FrzX_55bRJ!phK98c=Bl@8gkDu z=;YP<^w3f|8xN&7K;f?5r)oSL%vR4ZUJfk|EK8aR^abB+xU5OeEj<7~mg`+ByVnc!roCpn3UZQYf= zq?<~voAygRi7|lm@=~pbPM{30idIBLy8SMnx-!mKEe0z2xZfaN$Brs$3UyJ+8_1VI z9NIP~^li-7+^oR5kXl38*_%Y8c@v`Vs>+R@LAtwE)4dqY6@6b^-iPt$3&q_wb=PU` zx-f~_+&zrA>yO;^gXD#E56#!9%llZHBL}4!f4{ak%|U*$P}{7F3FZeZ)vM(|`-3b8 zz>(IDmSTI*Hq3K3sy8K`G5 zS~g3{{!&Enu^-#R^-}ldX3Y9Ce=n{j3z`zZA#!ga-{Qax-8{%Ufj!yUBXG1qp50n8 z0VuZkqBSpA??o#w*p`WGqU;dUQ3OV+&X0|uW>+|;aa>YM}9rvq_L(R&L z7Qa7hW>BjQtWoQyA^d^l)Q>YACSMw@cBJx|Z16o*hl;i|{iq^uG}bwBwWP(!0FZ&z z91Lqbt%0EHK%L(Cg!_uF-|?y2Tt1~8ska2Tx|v<|&?e+XNuIX~dijO|2twOZT4Zpp zhE|Z$=;#+>m7!KgY$Qg=#C+Q6;R0)V4hw_LkaHG|KB+X6d*sw9eD5-L<(K;HE; zF_5KD7=>Drkq%UBKTUsWX#Z*vig(6L3iYX_w}q!PfN5Rwtz$Z;Om5Y9U;UC{9oifN z;ba7LIMv2-09sYewDT*uDn8e;<@S=Uvly!bK8JNy zTc_<HRJd# z=~cYW4ypPIdL>=0Z7pe#*CO|h)E`=*=IgAN+!ICfW>MZK+PCmcfKndc09jiTwk^Pr zOZ-7gxS$m&s3i8NsBLlN57{V#I!6!(izUgAdnD&=R(3RHutko7)Ok`+3)Z`SoT*sVs}9(G0)VjJDL9Evjc@ z6#z?oSkatXlv9fK^yY?K5VlO#*_cHaVs?E?nZ9u24 zTD2N$hARIi%_yldP8zMTALDl_HQ3Y&zt)O2H+U14gK(W%R;EC%-FBgBhO-6MS}t{F zS@n^lY~bY+yT?u~-mTPf^5s^qf-=~-WgLJp=Jb+fr%I)A^d_6F;tRobD)h88nC!0I zP1lwsn9I-Zcu<2HS>lTP z1Vt{Ye%yz5GZ(m2+mPy{ajE*vR!PGcs~yeddAUNtU=a5iZKeJZkLqY9y_4Ay1^VZT z!M(-CJ8YQJ2Qwg$U0ks@s&kw{R)zxRyr_Kepczou%bLV}9I+t9j4ET*7EJBWYxd@?)BPrrL%7_Upn9%Sw^RC48Xxnvg2U#!pif}24Necn#M5Tq5@2pe z55F&xbzm+E@ll|9db*c0ZYC^e71M$bmcj2bD^op~w}1?#TXmgAEiD|*)9o(Y)&kI* z*%@@S;IN6A0q_}JEvrUl^=Pi?YFs$3$AF$)Vp6BJf!je_rp%{sOI!bILRz1#hB`sm zO%!8Rr;>89-|BQM!t2$qqPpQ(hkf!1RP1aZ93<)9`U+K1tHR^&SN)bYfH2Pc#*Myqt#M&YJZ6$ zV8(?D?wZ6WVJt=hI(|Yy+0+T`@Y$L7n7c>2Q)Q(6G$A%tzk==SH1~YvD3~O`$V1!x z9)Kc4Y7TNes6qu)YMc95|cgvm1H{1y zXqhvr?aoW3Lx$07_Da(Wdo^K~OnmP$riUVjENz8HS_AiU?4^nIx$PKIih8mh7|W(~ zEJ-SmTov7PfI}BWjSZKSTT25Xob#E_nOy(lc@BIXTCv+y3(*jF4YgjvKey=93k%W z`oq+0XH-0UiMJ*r3$iDgHTbSAMrkhwmE^?L5qJK~{M5_J0p_Qz=~9eOYzx~x-O8`| z30qG%RLcMa`r>kW7;C1yRRfx&^z+v0n|@-3h?&Z7%Q)s6(a#Wk6#LVoIF!XdNZljR zVd5Pr-VvgLvk=3*R%1_KLY5CU$6|4lRg5S+^R$D>zQ4K*fZ8>cDP8dILA3TEB)x`A3`26uuDILliUPDy5m;}p{Hn8DX_Ra)6XN4#V0$JJOIwm;nw)Pi8z*~otx7IQc_ZX`rs(_ zt{(jrjn|V2ur-~jH37Hho)VC#bQ&+e0ft2MOxUIwy@PS1&2Fg`r`6zFdgk-g39uR| ziL4$77f6SubxegwLjk##k&6K)JP1H|%s*Z?&#z zf*&T`Hr0%puOYbOM%$R*fO%q_;|ptGoSK0(G-QR6^OR-Q1)WY;eK$kw*-@k!CSbmQ zU76|Q_Nd65WWe1R1z&QN?`BPW86P!UxV0W3nKg*%PCx%wU*e`)2 z?26^>05voWnPY`VUCA4ZQRs+g(%?IeDYGG`K%I}fQ+cq+8LWKHk{k({{)0BpM%C(3 z$(&|jGO5{K;0s$HolS$GY2Y24H#`t_b)MnsY}~b7XTw#X-)ZD8nZb~Z=m2(M=2e6z zRrPtMpI0CUFiSch3&PaLIRpFWsr$*xtf%0m(y;`oW$~9toO&DqO<)Y`lLA`s*#Hbs z&kKy+C)Vib*)^D>cwIfR14z*uRni(?hxn`A15|U;oqO`u*nRB08nQV`HPT2yFt2o- zba8N3oPoDcc*#1O^Ngin6Rr;5GOI#lO>gFgNs)aSoH_iq;D?hl9ECDM0rvs!5%=$M zZ%>^b>2`~oB|40;qe%9JxiW_ZKG$p(BD4pG5bmbC4k5NBjvvdwUZ;4H7v5s5W8xWi zbt&KrUJFghEG0#Ffw31Fxxg5Ab?@O~o}usmpgm!{Z^?eLuY6DOOYdQJQf0O!*Fm%m z6>NQ@dsOXg|^KVvMrp{@srM; zZY=d|&WxJSQ#u2GL2h`nOknmh#jgFag66?i9aqqcE)#4kI;FX=r^URYh0%4!p2UT5 z|BC7to~VP*a|^ut6M(38(^(9tZ^W8i<5RSQNa(x;C_`eQKl)o0pFF zqGT#fN5Oe~F)|yu{dEHu-r9wcrXwCahtY(kq0na<^PCm7HH7ln7!O zCL6bBd+ZPZv253kvbJm|rzgb&UM9+f*%F_N*>rwM=JmD3+8jU_Pz9jPsftaGy@nrg zAa}$;)npffW+ZvySoy@^H`C(8Kz|c(LS(UHs=tv+Yq_L|9Y)0bLV$CFpgrbEj}%C4 zW=jbq>0;B2EjD$7?pVt!05EV=YlD&+hwtPh4wmB$7J8`FU>njx0l)0Pgh8sLctVFx z`PS5#kz1~Ce|6*8l8tBZI+NNsgu2b9sB2Um(-?~tPl3l0&K=kxLQj4IM;Qo09 z0t~hGgkJE2YYNn;%-*5#s(g`w{%Q5xrXU(2R!?^>krJ#-PMwrf<%mEIe*=ex8KZ-T zUmL~?B#AKOHW%hZp;&?o!%0k_36MfJcdY>XKJTzV<Rx&iH-oGdm3 z>EfG-)%(0zVt^JSR9e|X zX8|1{Xc&75CMjt?*kp;WlYp~mSnLf%G# zus>cqjh)tni)tg)&5sX91#cW2Uzm3#VCR;YR#XFvS!`lv<6JghAXkAwn!&sUz12bC z+)A zT;(5NzCSCqEXEY!6)NDv9Ms`m=0uVp8YpT4DZLs)2*gvG0#=kdU^xr+Z_;zq*eQIO*fDqqp%{?~wJVqb^L#(TP?Ya();{4%e&8L_q zNgpe^6Ej)bm?>DmtEw5 z|L)1v=s&3mQsKBNwj9BeySAh`AK0#YrpfNx75Yc}MO$B`j}!sr;G-U4s#whIfkZi7 zv0LfJft6%dHB;WUOHfAB1+&%g?{g{$zqR+{B7rms3&DIuBpt3Yq?L@Aha{Zi_!EM{u1 z%mPUB_T;Q-VU?O3>?kZC0`U-`jjJOy6pG^x^Nndv_0%ynLqyjAu|VD(_Z)1zUtwY@ zHNl&0`W17Ey-xd8#dHKw(=VmY&$XwN|L7Gsj2xefkIG77)6^_TE5B*AtmA50RDATt z99t){3E=V^Xkj`j-y8g#nHv`S_=-Y4@H%*)ywGM#_70LB;=Y#JJqVA&JAs4i_VQyYQUSoCvf_Uc!iyu zdNmin&}hYKZ3WJ``c{E24u{YNv~N`P+YUJlP!I3E(F%kA!8T(qITM~x5bRKDMlrRN zQvjVxm8_n^)MB9TsTtFy=1jnNE>+G?Fe8TFj0qkV=JmJj$a;>4*z)cv)S`|TE5-IthHK;zT{^=(H>&E3f z0n4rbHec&v6zYswOfIX3LER+>86Raw>4ueTUP>VI(dp3mBuuZf!ND;mUIkou>%wZY zj;>QS%%NgF3kFJ|SOT@|X(_cR$BbkT)a#50_@)O1=A}f6Py+$6vY)S4^M7Dmzg-3!lpAC_zM{ zHolpv`;#XlZlsQ7q%gJm?Ip&Qn2guD=*!`Gm$5S3V>fOxp>HId@a>Uo>JbxuBHRhp z#H{SXb^Lg3k3^+wz5qzly9h1 z=I@NX*KloKf7QM9&7X|DUqu`xKy17zrM<@>Lo3Z=_n?+gD<_l(fjahq+9+0B8TFFd zu^&Lns$8XnAqAnJyo|??8;@k1)H|Y&8ivNhJSB`RT!mP@<`4mTO{aGNO`yttTW}j3 z5=U)h;<&Y_oy<8<*BP@?rMlgzLDwQoG)Q#NIg!??hj_{=!@o8#286kcF9CQ4I3;iG zshuM_K+!qc6rfsQJoPbem66rvT3Ka^sdDI6maeKk#z4npw07^T-8HTr9;wB(H@)kq zg@scWS(T&)D~kU@|GFZrg~g=g|{2wySFMiPbyL{JUZ+J2hU96Z5nWk2O zfN`l0l!YIc`dwhP&pfst)D{IB+<4Gd19KG|RJgHeYRR| z!@4Y(K^IQwOx*`+ z7`J%wVW;qxgP|S~DTGoGz<{MpDZOKHNE=CKb**RO^2imaA4DyoP|J@%uJpS6^_YH( z7;bgk6ERq%fy{sfc=B?BS7w^UF1-Q|Rp^*m0{t1=E1>q*_6k*nYMt2vRe0>J+Ot=r z!Jz)KF?)iqzn-MjWR*9C0Y(GZ#SK^ZbC>(F!aqiq`!V>##Fo)ti4yAb2+$tId~nC- zqd~n|f)HaTfVQdB4T^P@83}1KuwiRt!PW6m;1!jTqa);n8#wUH)B#2(iggH;I;Y>T z$srR?;0cZf1w-^zq&x9Ruqjm7Zs}LTFQaH50y-CHD|Ir+XYILMH@5v!N8%w76;{N_ zkfR_O(*n8?L@ExXD!7&bx$)W@%E~E#uav;|b#5w|m$NHj@D9RCfpEwy3EFuCp$h_E4>L;ASNx#IWYd27dpOr> zhqA5oCf*?6q-+P}0P}IC4%7#m*ZoB&vGkC`PtR64Vt+3Wp;WiuU8|>e(2W`J9OvQ| zljz7BpqpFG0jwDaCH_K#jh_X+@2(eP@P|%|I9}nWg>v(~X(nguNQc`8sv{YP%~eOf zJ>gy6OGX%XZ!=-V7GA%aWFikVx}_(gTFz=QWUQ(=xD&i=5QrwtIGRIrB`HL=OeR*{!XCSOu}^;^~3djowTJq z!+JOYS1MVZ9H`s@>Poc6%uMk7TvQ29h4`6F*&8@yA&AT9vl0+ZfV9>?50ttOKSI}N zp`+Zic7ZmE0u$en=^jHT45UF#&*T{T_V9+RXZ@{*aBq})8u3ZxACU)=DLgPvWXPUi zwH#r!KN%;WHo7EWULI@lgdF7&&peqPtNov3yv3?yZjKk@bh;AFE@E`nb^@%?n*5I4 zSJ{N1uefC@p;W-CVMw4ZC2_Oux*Q}k9`beZM6i^4+RmWV#hS};7K|f`w8txHN{*#} zU0GgOvKtNWR>Q`%0sqi~nbpYGF!;S@1YTf2_lop+ZJ8FFUQ`(}_5eRrJ{!}Dy$}QM zz>>e4)JiC!^?zgr!qwh7t31prw!15~+6X7t&$)283N!ZQm6G}k_L4$q|0* z_mM;8UvB`Eg-c5h$dZyQEj{DA+k0jS0%PSX5;{#a{OnYsjqx>J`a@<8l8h$WyH zqQ%Sb3_awKyhV|m5akv{W^p7Zs%i}Pi{nO%UXA6IIOpmuT=TTZ!Pj?V?99q33~obpH23$an|IK_! ziHWf{*a1e3@dkX!@xgQ|mkU1RxB#69n>d=!)t746kODeUyL*5nP)P93h zQYe5(i}LUk@$LbAR>7G{?QTmKNPCjF+-6m?Of^mLh9VusZt2Q(t8zd7-r=#=ie&H2 z@sj~0e{`1}@+PdyF4dsiP`w(yJ>8o*^P}Hv;%&~GNVb!CA4Sz^`=o5uwA*hd+vgI> z&Zn}wbeow8Z6^ee4?CU5Dl^<#yQ?H^PY23|9j3EdyW5VPQy0eamHJL7pJRsv+Y#7j zP#rc}#Rj`;VT);7MyY=1YU5FSY>fUcW7PwQ;zr2{&@#Xn=;WE~2%MM!B^ZaGGn*`aDhX%17u z->8o_J?&)AJOlpN!W@M2$XZ9F35++HlT|o7Ol|F;pr`Q$rWzP#2Lr*U%C7~mt+bOGHq3#zUT z@{wZMcbbQpm?KaRbds(i9a_SqYaVQ8?Wi`~2Qb|8DeV9{{Ksy%e`LNZFg%-v z`*2z(3-zJ{zCZ&%t&RBiJ#Gi%Md05L{K9&5e?&zNb|e42 znm?M!|BoZjYML@`{qQ1ZjMg>b_c2 zC(zM`Pyj`OF|XYj^NbXG@a%=mSg}&O+rl2{o%DnlEeE`4 zffVE>gvMd_#r5&|a4}K}i}akJa>~9*s7l)DQH|`L#OoqrBbnsw22Q+5at=1;aVQ4G zfUa-~fph`?Y?**(fVfT=-hikmlZtJah2>9#(!nGtHscS#05+Y>4VwA7TB&^a3} zFe%JByddUP=f-xmsMuKpZnnNfKdDg(?U$ex3Z@#jsI4T7X1qpxZPC_Jdfc&PA5>~- zJ?_X7y+}ePTN4W&;xh`U?=TkZh-^W*^hkSqx@som3Ees{KOsC#6N zN>$F>O1hMpRqftvnzznY4~hzrWc&w(MX5q04@kM|GvEZB{G#qmYB0UG|5crR=F4L= zkXFS`zARstblo`?!q?_ukw+9J((W35{e;M_Ya`<|$_KWE?4}mGJGo7~LFu%cw0d?! zoAI|G|6G{(P=+9ll)bI#1ibdK8|ntFD{VHcCPY{e$Eu)8!4Az%r}9Ka#6uAn4W_7I z%blS=r6$-i6^lnvBUQI-kc{d$D#=c=qaReZm2E;$>e?QsW7@(m!6mnKdsj1$?6-;} z)QKbs_K=LMqT>s3Fj-%zVx4Atu#$GI@jzL)*bp+`{9bdWBaq<2;lF}OSKsd{$L}5wWbj%F+)?AZFfU6ZLK@zp;kvJyw2esUjQJ-LyjPvf(iZHn^>da?BsJ zP-SFwRD#4EjJySCtQ#jS zPtThOuF=gayhUcYCo8-M#oY#%d->FXXM3p=phgV4GpRs>S8P$hk5#vtyCXBxW5^8l zr6I(!bCk7p_&o0-jS|o7plfeM>)BTVSJN%I&{T#lLDG7yjU3R+EXp21j;kM{bKB?y zWxtLXwa+->>^%0;twp29&Z_wy?|L~1L-J0g_V?(Gy};`FeP^t#3<7}bBCDePwDswv zkuA%i(j9oLNj<8KL^+Oy6GEx;1Zg5F^&eE)ODY?N(nPOIs;SU2soH!h#rg(E*#^lV z62=&r(+aJGsIJS++rv=}H+R>Bj(ESU!dK>jhuYMUHp=QK0`((U#ZJ2d*+V~#Vi@yv zh?$B22eV$KJ$%U43QUXM7J}ze96g1oJMrx zT%q}_Z0NwBH$!Gi8A68Bkyw2LY4yMZ>4Bx*S+WFYN?vh^4hb00^J;IPG!+l(%$A}l zl{joy4gJP(TUtus{5-+mv2Dd-Q`c)vz?SF=1i-w#VAm9sk_s8egG!8&IwS$M}W0d=^rRFp0GX zy|X6~H3cLj-mwqkWA*>u)Nrl)=PlN(b?Fw&o?dZ*VY_8~7r}Tc00SLx6}%aYr|21; zXu>mcEECcOq7)NH(3AJwD0LX74n6R50a&LYaEZ0$B-4ecCqfMwf+&s&E)i|dFZiTe zdx7c$K25q=IYry`Bq%)bje+*%yePrrqlDjE9Jhi?3V6u1R92(`JWhb%#MxGX5?~DX z*kmi4naQ>yu}j-Xy*u)iN6MztW1>k9sB6pdZ_4Je^2l$>-C0LwmKvbGAYNeOT*zBL z;*kE7{lS@)U5#3eIMUByKG6Xpd2KLA?H}AK)pEZeS;&e7bzj`u z?1!kLY*q~{*eczge%EAWp6+lY)d!O9pn+YtN_PYY=PzXiD#2E+&d+EeS|qY)ejWGz#ZZb4ju)C3Q^gZ4Zy89WzkWZ+2&Q|#U0~U z1R%SFzL1l3J4tHn1li*_?-m06lge^tW4=_{*4aZeB|VsgpwW$%BMp zy=)h)BtK5*dGysGc8;X^;54vxU|YE+4uU?6q9N9rL+xvryg|NR@E1VWmcZ^{32Mdg zL8)+oN8r|CQrQVq#hQh!hQe<(>UFj#);h4kp1EG^?sLPD z-Ql^$3!oT{pmiWzS;fIrv#XRO?v5vIzAqf1hCDV}fVc*?6rPPl7f}c_`$%UEn}sT! z-rg351W+!B$t@V-9J21waU@I#BHkuLg1+WGKDSs2nUTf_%vKFmCjPj{43Hf+Q~Vf| zP#?{8(X@P0_bMDuMyFyyO@-wtD-wkf4%dpF7UmNJfPx@&xYFc)VIzJR-RXRaoq@G# zr)((L=-l0j*g)#@E>|JY1U;T=`A1q~+sb`(W?S83fPz0erYLX(JtczcwDpWcBSm_J zU7w%~ip9MCxGu@id4qZ0dik35gri#zdlXW4AUthoWcg_o#}O{eBOKeKTLkPU&_6Z9 z@mxqx$eXjfOH2o%Y1{yf0Q}2cUmRPN7nVQ>gD!)4h9;U?qXI2 zD6P{?&1*$o5?rdA5VeGEtT9SV^?tf*1~%t2;R%s6bh@)M@k$3iHSif3DpRyzh0mm) z*!CIX#7Zb z7x;^AVU5dDTfe$1d|!x0;D@F47o~tr$8VL7Bu@7ki%d1!M@b1V{~D=EZvQsc(35Rtit=>VL6 z!qCjxk;pMnWp}fA;=|Vb*xH}k_~oHweJydFD%0%u%yAg>1H@)nK_ekyB#G#5sHr+& z+8qbh8VdsQu&$3)Dl;qT4yqnoltKCiix`KmMplNpYs!i|WJEcO;L^DV5UbK20%JwD zQ)@khU|eY+a$~Gy&|Zr)0ogM}5g6c4m$wqQn*(VxShR)N5WoFkF8Nt=4Pu&+-AQxJ zH2%4If*u(}rQQMm!T4zifG%Cjv&_bWXsP-|b-5*OIW-^}5;aIswd?s3bRNe7eEMv~ zls;R+RFA`g)`ZvtH7-y_OxT_6VP+xdtP=C}%B;We=B8e0I~Y@EiCcB}Q58jmGrW8%ZHYb@~*hApovzqb2w z$*wvHyWBWm+JfTcgtX*bxZD(Vj;FjYaetXnEQ8MEGSh+BRjDL?y^OIVCis-}tHK+J z!})5fV|}Y9q$w#!m*qnl?WCFfB&+F~Xd}aji4(}!d{~lqYu4G~2c5gh6|ru8i*Z*1 zn&!PQowFd}?0JevE#dn+jk(In05<>RG8iTTtDRmx)xKssN#2G~i||I7ps;{dJ=wt2 zha$}f9X31WJ%oyKmR*hh&6}441K+R;HFX(KkbcJ&xn#Sw#DfvIBtX>m@*sZfx{!xF zjelCjYQb+UoV$W?w{JOKYrwEzW zSyh={;&_1B@>Dgt$=bWU^4=A2oHpR6f7}^j#BTF=tE+#K-D;hge3YQ|Ht%k8S>u!K zHJ&l~qRU$%fy!r}`UA^8rPPh}r%u>qGSC{J{TZ2okiQluX#9AQ?APfK_ZHz#qOiE5 z@iosL)D&vigO(9P>3Mqtc|{5L6hb_(-39@y0CtS; zyJq$F^blM>e{SOjYTi|WFUX{#l8owChwhW&KmT=;_kf$Jypz%Pxuh9(bHm-726jwq zpi0&foMelf+Y8|ct-|$g;W&4T>52Ta&os}Ud!~E-tTWT+Co9`_9pGFD$bre}FEhzS z#$IR)DGYDAqjz~C5vnpjHRdNQGc-YK%CqgkTu$Te7Go|pb}3eJEX(&9-0Alt?BV!x zd#v_){G^^Qw4c?+wVKZQ!k%tEB8$y7bE-LmMP$f!_8f%?uDd-phnmAFs;ALY>~i0C z=`~tYufzkBb!L5qnLlkTPH&IhIq~JrFv0)B`-fn-MIRudw0HPCo6pASgW{yAvppN^ zohrm`a*%=LL(PJedO4oa1JJ2`sF~TKu1MN4YQ)6%xmN^kCwewbnG3Ydg2hXcws-*i zFFR7yGmzxKfFO}#rwb96*4eR=i~NWPdb>u;BER%n()R5KlQJJq-SrA9+m&58ah)NcRQ?8SNd5-LL^`N1e=f^{ z>|5e<6Dol<-6prEdNv($@AIkoENoPASL>5IS^Id`R>J9$t$HS=mh76vUZiyI^)xY9 z2^BaKi<3P?9EKnCk=(BS83od?;yN$@PrH|pwfk9HoLTGVZE>ZjR6Qyte!n?VaifP_ z4{Q4nc6We$60_m#-(vH-*xX@~G2(7%l%N$pU+MXD#TSDTGF#4N*P60Q#!OQhAq&zX zmuL=LPZBF-l@VhQKsbpTPI{1zmWpDkkN3|^qorZI?v<(&CMO7N$U`9@#4lq+O_gUh zt6ZL_@*JvLi&ll|J{-qCjLnZ?_5tgS^NL3KgD&DHIc9(Dn$j#m_txgAQWcf6vc zY*us*9FO8|Z}h9id>oZ(Y_`xwd0CAQsohclbA1UmH81Num7a?$W*)Vl4S_T zx=Gq=_a3qNSjUKsB0w7QpjfFBe1pB8EpAHmd`y^8Sf#u;i~as-W5#SW^)Zt~6#^GP zx|?)ft+R^Ywb~ZFib@nZhmnhS2;@YCBDzTI2{n~{V(HlUfO2N4#B7~XsbTdXH4&(0 zT;4Db7`#E>Z-?oaF8RlTE8HpKiaW#S^AJOok~nUQaHUnp)T7rGOBsouu-$=J-L>XK zdEu4`G(;~V(FU;D> zFOJtJ4pG3$Q#%$*!qBlzUW!r}`@kU%`kAI1x8p#`ce>*P!%7!B%%qtegppFa2_;pD z%Rql=^ZE7yyXky{qvzW-oQqLqs8*r65_g)aN4hcCnI^8UjoyC`RI(P_jzzU{wGdrv zDvPo5f&hiC;2+5PVo+ZoJJ??O&5C@MyxEuw6#vX!fbU^aXnUu+;9cmKY6bgoLbTJ^ z>rEM;YgBe7$V8uiZ753>-HY^CW=p> zlHUM!flUi`ds;VK4IkKA4av3JWXdlK{TY}NIzbXW(K#|J7}6eGOepDHVH@)|%xtJ1 zdYL6ja)A;!8W#)&x+ATGFjB@HKvtO2sWkEEouM<7gSQLP(@O)kvs^AUe5qdMi#=_z ztB%t&teSO?0(O+lck(p{7lIH6Wl~1S-A+6O6cE(ai;D+vIBNK8o7C-c2}&MeI=m z4Blbgooo+ji@UH%MzVof5Go++)-Yr8@gJrS=yJ&nIy5kw*Q+O*m~3hEQwa%vW&#fT9!sMB)e#nr4`|lu3^Z_s7+tUh(yDV} z00xP~(oVQ_Ql|tu1AityFH)#RTOT9C7mLV4MAZF;NSl9;vW zgC?B*BRhR5JAF4h{V+TII7|7;kTAQxh&SN6ok0xq`RzuyI^>?z6G;X$RSpxavu0p>R#J_RKai=`peC5a+2;@AS)-On5t-F-G z^F)4=>NvPn9a~DCl#;DkLu(LL(wYK!9+v0XOWRlEzoYYKwXll1ln^_eBFoeCV5N!H|AQaV zTdcW61-^5G#yf@BDx;}L` zq$=t1*t}bsYjBks@Vlh_w~2XYN z=B+4$Qv$L>?&tg^9tN7j{>`q_&^SKg3!xDZjnGr~ zB)cSmjXE}+_>1lSvz>mcbDwmj$DI3( zD}5?;x22^YCGLkw=>hNl-IuP6-TUGKTVR-YS)dE(ZdNnwe{#A|4#?Oa@L0k27?H3D z$rA!1gLghy8a7e1XfiEQq~v>`F2waf2TFQu{6bzxlk>ds{bIq-kUP9pSY5L+!k2uL zIim6<*TFj|FMk=Sn_r^x31wml&{AeCl*ujx<8>w~;`leARm~QL6wMNAXa&^bEH|}f zSxYU&a1gR*o2_h?IJK3n-)o~*sOPXb7tt8(mtsEKesn$_|7;hN`#)kS9kf%3$ zwKc8cxhg7c^IZ=Y&~xLxj%^P_lqPg*o(Q%=AG|}D7+M1Y*dC7ZX9f^D%B1bJt1*)+ zu+NQ_|2py5^lY!{#Ip{RR>O96yLZE+=r*I>+;wGlyqngB-fgexlhO}q`+@z2C!UQW z=9!cK6!Zww>!FSXDzP6^txmggQGIE3$t$I|W6iMNBH-!Hbi;g9Q~4^)EMdJw2}%H@ zpqHX2(Bf$=JW$h(V6l)X^}gj=8Nb?Qcv!0IH^K&<&A# zU|?puI&l*f?^u~ZWU>F8(7_rIxEy-FSDQ9cW^(uFGdaf+I^_SzUcvt{SP>Z z)CapmNPXbI5$%VYBSPxK%`xui@-YMyJjNXDjw1EZh2t8>9&$XXPjDxa`kD1-cRp*y zNuAGG@!Zank6gp^Q{8DiKP5gxjHi2E{Y*5PFYsq|zG(JY@r$}oledKauvk0R9l~*c zw~FJgj)-CLJU7H~x@&N(iqP}&qeh&##}-KtarcIU?#pR_Hdgs0`YQu~i2jo~YP+Z4 zz8X;5tx5WoLg_A9N~$RmdS>%uCU*c{CtI2p5diRB8$LDZO5z-3k#hU#v1Bi|n$Z14 z=xY)6)#z`9;#V=G3nabql=a0za(5wE22C)+nuOBsBHSAQDuPj!N=G>e(OQij&1(FS zyvDZ|92?Dp(?6P|pDmPbrN)mHil3V(h6J}2l21_#vXt}#W-K)u)1EQp9hGy&yCSak zMfV0TD6mo(jJrNk3kQuPV4( z%7sr7!ZCCkID_vN^20I?o=x!xndUi)Se|ucKc;4*c7(s89g;D|%pejNGRwifZNWLB zh_NpL*+2!g=>9_SeG_fFqTt?LNZzBi#T)H$V-|mh;ut(YWdOBf=Xmo>=-GP&035Y5XN<8lah2 zAhcArgus4Xq4*7HGQ_?a|3K>QOOyLCk+bmzdr+`$D6UsU=S-^PXHo^6MfMpanK0I_ zaA97>52S8=sNyAY`k}ORUbBj$Q>)htv!~u{6sg>-DZuHY+tcEO6BWB4b#F|Q^HnjR z;}RR7<6eLSuJl(XuUi+y@$vb!Bs@n(j}QTzuA!ca7f8>0AXYv9T7Qn>LK+GH0 zVMWT{_w#;Ecu)9si`;hwbH39Y;pdR7fVXN9sXP94++j-NI?8%7T$xtxtyBCj_+}g} zRA|a^5JzorMqoGOjd6Npz)WvOxxvmxRmBp|nKRkWAU+B{F`kmdvd!HT{!?&-E4^!6H`?*ynmra>)q3L#|zZIj70w6ZsQFuN8VhFN8Jo?Xk5 zK>dq&8MyQ#(1+bJBhZJ)OvZnF)`>X|xTi~EQVayZ`RYw%jFb8X;nR5EREl&_HTqRt zyvf;{L6g6Ti?_w&^Y7N!-4rJ`BlWfzJzh$@CbQYL%Z9MBdK}0zIYbxhLM{404D}i& zVv+hO7GCn>oM3<4yFUkl{YNqsc7>ni&;RP(6XE$|w(`cf^q4Ocb2KO{GHZOA4vs_M zGFrtPoeL2&1Zdhok__rAB3O?DkD}W)0jEMZxEQhcRdJDGAHni+LtKQzY2uk*dG|A) zJQC~!HYER!(+oQu71t*SH-}2tNUC>248o; zau72K>YiapFs1swxSK%R6U>;UA)lx3&AZ`x?`{a)aE+~e+Lzvr?0$SM${L4g8Iu4h z^PUoDX&TE)stHIChxt^TM?uV~Q9lb06vfomMrGR0tY~|>$bUIO_2@Bhi;XLo7Bq^h zU~j^B;tgJ5MC0flU%c4bOX#vM`y!lVv&-J)-Nin+L|q1IKB0-4>9GZQ|4a|xpHKh5 zSK2aYD!w!4sJ`vocLGOsmudWmE8QzYSJhf#X&Rf;3`?@=&ki)hfW$)cTE-XABcEO5 zi(ivbP&HcTix|*1tM`C&_qpVLAo@o{f`wFhUtaW$&fOG>zS5*OxYD)I9S=L8fBZ`l ze9R@+@#TZrmv76zyvn%`g)iCv`Gc->C0~Ba6+blbB?;c|k`M4D#8Vb#A1!6{8RFei z0i>4zZ6_uyEGDja;ly_rIQK@EoX>Yxu%C-q)fB$5D7QC3mfY#FzG0N<0oI2whMrx9 zSbFAtFCLp`HqJXH9FuU&o}3b{$IRF~1ctvVMAxxdYCG_UAC9d(SSoy@WFBOSOd?di zR?-$u^?Q+}WzXwhE0t^y6ufvSd@(>M99g-rvXmaQFufa>j@^(-Ia8C*G?t|7G*GqW zA@oH_@ep$`7C}jAAG2%6e5mGxk-}>7T!t}W0wk^z4>|uBc72Xm4lAbzpT*j((i!7J zi6~cE5O7~eieBI1wyyvs`NyvKgh^*52M{lZ#k(6-QST!l#^N8bp;W9VPYf#-Lwu*E z{jS)13hoKUf4LNY4G(AcK&kK_I)^_Nmx4J?9KvOOQY|P~bfZ`w`m;y1ZbjNuf>DyK;Vsx}Y>kr`!j|ofa zh&jd&IHIktvW4{bCOHoL^-}Dyg;W)1wlAt26+OsiNR55^kHYmjID){B&;SrM^@l^x zR@5%PfWgD6pZyH)&-OFy-V~e7adi_8UX^zC%az&_VCP5(Y^H*!3)z>s^djxgJsMqJ zCWOK#N{!1)F*}lun9EBhoNM-GZS_-S>Q>B{!0)4UDk)8nJzZZgA1Sz-6(2lHg4rEO zlLmc+qeBH;TuHPqYyn{oLk^X=sg&MbYOB^pbA+j-2g8s64^8n2a1cn0Hl7QPT1kyF z0URqU?*VM_q_=D^8r>-6M?v-U@pSinD7JPy3@DIX`B`in)o93uW}{1KaWs%&&)H(2 z#mkcf-^6Mlxq7RfHllBVKnOk3{;i_4@WN*L;a0;@{Jfj<_!M4FTOHJk%Qv8+a;ID3Co3(Tv%G z9s*fX%Lej>$4e;fD@4@E7w^9m&3y&;^@3vTIwW}K8$4+jxpzPLi2jNjjjYx$4LUf!3B)?Yw%rPz-y@b zz5hW`&SaDVQX@b(9CRQ6=$t}uuWnw`R-Sw2-Dr3xr^AfCY)JmrOtItb3(Z`n&4y&14fN7mGqUL|*=fc4 z1SbArA6-=~?OtFL7$G4|h6J{5<99IHm97StqAzVsMyjDta$ zWvh>$B0BM%Sc3d329&*hp7Oip#d+vk;pgMs-JJYtF*f^-Cnnjg#aiPb&9Y49)?j)j z_66LtEi6}OG724b71I&`nF~);XN!kUtg!JF$0^yb-onbXYnVApMN!k{af_#$Q}* zzohCeu9{1#$xYQTE7w(LoMry2+JyJV%bm!`hHhaR4P9m2ujTP25={(^*1_fkkiWAG zQACA`RUzg%jSZUzv!4ZsUJWHc49y&2=8{W$#+rbq1` z!LZ^u6^Q|p$J=Vxx8c>5 zvE@)OnDjG4WPd0|op62Qzw`t2ivNmrpKGgqzO8dHUtg{#@3bA*FEZlw_gQzPjl(hA zf6%(CY|K&IiT+aLZ#vi6vO#d0`h9Z;I3aqT38}F}i(t?oa7qp&B`Y_V+UHorio{MD z7M670q16i4VabOv&@-&FwmQo`9X>Op9U>RynC%;;EB#jUF1BZcJe$v&DOF}h4k7Ok zghFh0gMx!8I~>h@1wx_1qK453g>;Ma2iHvedYK+X$cJ(qB;9N?2iR$kkHN8dcDY*H z$sV(Uet4UFeP#mdA7eW&;(^rCnWaLpgMdg*TaF}Mto?DkrHUy{N7MEsX=veu#p-88Umd0uZ!l0H8_^Kp@X@V7C!n;YpbT@o}e~VB5t5*AKZTdj~(?&h{ ztm~0r0${q+xw~8(j^X|*&fVi;ju|LrfRtT#HNnYU=;Avp4u_h_0x3>8NC8}!gaAN- zA+8S$gRNoK1|I?|*(`{bVAOaAScU7bym1zrEhKpju4i)<`Vgu)=IMaY2 zi#OXXgz_t1k)8I~QovB*@;G`IMn@2|EIAXx!|Xc#qRi)eYgZZbMbo(35UQnqZP-t- zR{u;meWyKs2(mi;M$JC}RmL|XtOGI^u*IL(?5}F( zmo@ij&HcJPepKmxR&8_h)}!^oKuy( zT)TsM6Iv6kL4k->-65_3J1w$roc2U#z`K4XiweRsAbqur$DfsN2vLM%T@ity zepejb4`nB4aEr|%1-b(!>F5c8z2eT0-)Ja2@Kb&(Vz9fvA`SsgA^Sb2`)E^h^$nyFm23sG45P_-6Z@yo5kUsD-D?^1wdb-Q zEhl33ObA^GzqSM4x0WIBXE?x{tU6VeO)-B>1w$t&XM$jBCEf%L1g~b_p&k~Zk&vzf z%vN+=mo&EHi=GpnvFuvuol!cfe)JJl6YK z4U30SGsHTC8Ix3Vjt$GuwCroxebMh}_IR4Pk01ze{ll4%kt16&GeK5~FksI2O?kdJ z+(W~*;6jDZ`3x%~s~6RTNY(D~!`#abUNbK|6q^fM!ga|WNe?n%MMa2BjhH^I& zEaF@ON|6AMKU<8;^x+F~%=B9@({lpEOq)dI0niTQ!_11CI(o_z99fbm*~0@|`#*6^SU zC0IfYiYy!8s%;s7rf%u`|VA+VTHl>+Cn(FKYT9}!{ zBmO86;6lvuebL&byo5Xec{Z*DGLVpfkBO03g;`^1RJca$c4FuSxR81b=dM{HIqZh? zT2%ICL;9#$k8Eye5v{B9la2nF{LT|$u`fTu9EOJqT^2uso86-4O1c5@(5+<^Rn`&a zaEOG1(?iT*=G}Qe99rlzs|i2Mq|U?x*enwU(agc|guWNS4pzeChMbNjy2!C~-!Wz% zvoEOeSaV$es41X&!Y_{%uhh*B6_dVuPT{$H_Z)2~%XcRc?PNE;JJ~$9e~}@41`$9E z!MK)D!t>HIC`)(Enk}KjR&=d#3*>7+2O0M~!qdlZGs&w&=ctx?W9>|Yb;N!^h?$t2W`j&9sy5O~$ME3VEIeGGbU91*%Tf@Z20sUn$8Z(2TT!{h^-45_NiD5n&!X?@OQ2f=6voFiQsNxY zO&v44aY2OCvfYI)`DPFqqH6|GXj!n~UaVhh7RWayZ8;R9p=p%3Ga)kZAHR}#lT0YN zaNJFIG9J*bT7r-zKxX-3p2uPL1@eCQSC#mCTyE&KAt~AoqD!;nfNRmr}pQ?uLW{6{0$JC-!^Q4#*wWUV1C~?w(@9FDM?DZnLmD0o7&*p`{q3{7Y zZpGJFbG5bCkb!7ii`Y3Sve#)6uiyju{m?Ev!r6npcq&V9Mu}zoBu*>>dVn&q^TPGq z0K6mNT2xlB!U|&aEUY%P{ymIppF+;0{lWPK zmKY4u2asWpuJ~c~UD;*U^vvtm6Y$ftn4j%?VRSdTd4hCD_vh!U+K@y+A;r-n7*YLJ zE~pV2BO-&)K3xBk&zSULQ=b>w22nsiNLC}HVMRAHQ4EU-JqnVAkS)p%O+Zn{I#QRu1SjR{E`3JW`u(usbT zj0$1VWZ^7Actb-Iqk@$3DS44r3L=lQ#2-j_6-t9s+(u~w>CA1FrkS_9CSCO$AF=Mx zdP1JfgrvJ%trwdsuj!;zDndc9<}!LLFx8H{S1?bKoC-=^7K8Ll5z9>8v0)wEvv>4D z@kny`NFrQ8`mwy3>1Ltm>W|K+u8JpNkptag$0P`f$K+kMOi`XotOXys0_K?^u!9<|j4ryIt8$HrqZ|sZAS&Fh*dI4Ib7s&6`PtR5GpB4WRsHeFWKY(uf zw99s3?hu%T&of%fv`TA1WRXN2Lm&*)e1cN=XX5P?xDPv8iC-&A%j1bY2$=yZ(^lrk zeb{rVIab^&5Z8VmcZmLoDy{U_i3bf=*Nck#h%qZIa8?di_bFle_74qzB9xh6Dr2a7GXk&K;&docmz5^?oq8 z(_3QEEDrYz2=Pd?`ua+{tHF-i?40bL?pBNbilDiO8JHR5NO2fdc1G7}X`y^%gn$B7 zfv>;?FuF$=JNM5!ZcP5QduW%e%9TdDa)J{enN)AcZjdgl9;6o;fdL?HDH9YR`xV4M zB8`v{05$2Zpd$(L5B~f@HM0vRs zy3s1c#AU{CeStOSV&fLBFS6#1&Fi;X^QPwY+pT$X^BRAt3!B%M3YOm1yt~4d2VvWd zn@)eug+na~v{GEW_s77D?iSqQz{4uUh{flh&NooqE# zg1qdZ3jKg{h6{!%aF!D{*Oc&xdweB5%HkqTZM0OBi7f0L(aK3h-*Ye9E?D*og3=I! z-t9Z)4CA50MifPf`3rc!{+aw^_69MBr3b@g4U$VXv13G( zWUfg2qjD+@xnLXvX%Z7c`4!Pf)>_Ss{11WTHvWJQXpC_DpE)xL$z3Hhf1wrKl8DQg>eel|1<jN~Hjl^ceFjtb7z8OtQj3)P zenX^we8310tpXslK;I0gY#$T&A%CG@WPf`Qf*@>{ytdiW0G&z~!{n~QuB|tV3%d-i z1;^A*h7s%~i&r3bw%ljyplOVGP}cahW|=4yr$hTW)d+cp)+!;Iidz!Rgj1HnzsnJ1 z9nfx&2Z(@9n0P|XSk{>2eADi+VJ#B!FVyKEk;hsHr(raRh*Wq>YI%}_OT;5`moAA= z%#Z)&LpXk~H!PYhf2}DduAkz{MfU4)e8C&LPk$qFkoMRrG8O)>=VEd z^+2;+O$hxVE#%wgPciznWa~-xo@EB>m;Z$n^rlK7n4H?6+B44lC0I1-T0c@W|3oT= z`U6T6wQF8y?>PR?y=Ax=Z2r)gWc5X62x6KTUDmH=ZFT;?uW_??#(Ox_SgUPb&#h`K zz+kosuvtj6RIO)L_&f#a{&!M*Cw7~$=zWck{uNG@oer73CB;Rxesv#|ak^JZD2YT$ zwu~kn20TV+0usou8w7S%Oj%G%qOf)Zgn^b)g#B7d`bu<9CRb3r;SKh{z`nO>Pm6n@ z?Bfbu(5c~8Tnfb55hKR(FD5eNx5^NR~!D2w(A67ZvU8K{6%UlXZP0 zpxFHba!nP+@^KgjXeOL|6kJu|RpUA|fHh}R`&aQrVhB9TBv&A6qC_Xfbbw5SD34%( zg5IFV&c)x5r=pA?*OCJy;BaPHR3m-~O}mzrl_mX~CjK_%K<&^GEQDO}+%+)aqg_E1 znCu=*%j)ZsG^)+y<0a88&|(-r-C)w2O}VOo?&c3Be%$mm+uB@vWzDc>R;RhxToI8~ z%`al1H*ARY1Z&D(5iz(JihXCOb-d@I%@(Gro%l=OE9zbso?}XVh}tgF$&#N0vFNeT!CHPmuz|ueF{PM?>4=|CSS1W%{IBorq|fyYKwo8!Zw6K zLfRX+tE%1K?w=Ey_8j%cQS?UzhCG2n2$jLgvmVWtRRKcWDCiAYp`l#F{%)}61dzlV zs}!~MASL2m&9whZv`ae8^`za&9R@yvNm-Y3Hz7HQ%)-yQQ72vU2rfVHbrJxIE~a$` z#>#l#L%|ucvVjxzj{Sg!8k8FzLeXe+i$f&He@=8|xoSwQq; zi@db0J5jT4I$$^G3#pi8z)0j?yXw}<;9u=dSBMUV&U0ugEbM$i+b~f?pWiX~cQL?iU);8}@L62Y09=`^oxwLqAj;!JOnPE}%F$FeDqqjm8WOA*w zj+iJG^W^FlW_D#wi+t(-Uar+2z02aqD`7rUr-lfhwG|XyL#Qt_U8Ad4?JAGZc`S_gv%9GU$g4 zTm|=BmqB8F#C$E>b6ti5^fL)ctoK}(iOJ|@C)#BxlYGrF^O1q;Eli4=Yvz;|+688z zL|?9>h>1`b_TK_d0)bw3f*%)t4M=P%P5B?05o@#x064-U|E~$Z`hn9mrv|~7gkSn0 zw3z?&gr=a*l$=C%3dJ?y)eU*2np6v9y7uYO)+7sKYg(YST2y2}3n#wh+TlZI$a zDcfCr$E5clyv}FVMOtB@gH8lX&(g!xAAt;gw}8PiFHS-j*#6Cc9p0sS(WaA*BGYM5Fn6R6dP1GL|A+Pk=VC$ zvDoPWcl$BuyUHt~?;+P_rG%1E^R||Xfn9ikghAA0Q#MBYE}9~_R}V4ds&Gf4Wtrp) zg%xf9`vy|Y$?pFmUm$*=wvjAD6VX zPa&pYbqk`P%IsY5Re72MF9O{Kfmc&dHaEHwxu19-NLi6}nc#~(34oxIy}{;!uZ=Q% zkf8~}w;&2LU$^E9&1)dw&gS)lTr{u0WzCnG*WV@@Y4iFa`r6#rydzrC*P7Q4+l~PQ zUxeLk5gMtBp2q+|S1z)9XR>E4LB=Fl@*zm)4za-Ab|7)7fQ zb@3+TmW#TGWAU(yFs;=evrzm?xDMy$b@n7%$%9$34AvENJpX$-S1d!}50WnYwU!}} zg95V2Y)2EsA-p7T1%vDHKTO&{XCwU1h}NK=MDvOX97eQKh6+w0#Gqm%v}Q|rTSgp( zDS8zv0ON-t?%UClkHC(g=Yl}WS*c5*kR>%40VACep&X+NL_lCR2uZh7Knsh*(Qb8I z9iBk&6{2gPI4G7uFV8@6&8BLwe_%rm0M;Bdl$jz&FUBN5mq4S+UlHz3%&%r)4fF;c zcW^sEt!VEB?8L(dxw#F-6^v-PX*|;j6A9H1`t8KH1WyjEajoBMj@cxIC02z9ofZcO z$W)VYcifecg+r3)W<+N3bbG2fO}pL2C&yKUQU|5`13$w#q4_MvgC(_KXNED0QM&Rb z%N0(A6&4)>{9R6N(q$V6Sp^wf78zW*-9!(d4vG7qo%jpZ6PVA-ya)af^oQUO`!lx6 z0og!pF?87(^CsrF=_?N8GDg`@kT|HCWn$mFem1}jo~?>HV>ww&UzE)pcK+Zy+Tm_8 z0gC$9OGL^x6oqJ=UC4G}KoJmxxmcaAyFtU)wQC_FBecKka69_}JQH&m0fvQ&PJ_Jp z^Cp~n$5=M}p=@B;13L)Ducwe#6kpDIWJK{>tIMN*4x+o-%tEcdQj}j-2fktcL~{b% z*gu)m?CBT-Kc5YcyJDp1n5EGAlB^A}U6YdbD&Pl&zI6lGfTVs&G1JcSKwX76iwlqO znDoUMzSyLXb4M_MA&vhho*+!r_$>iImSVn`W!pArV$|9sr7 zrwZ4w`sG07Nqa$Q7U)tZ1`jZl!ru(04Cler@gZ2T^fY)U_fcX*J9!q8T%}2twWYUwx&{ehg*Ty`icC%5RcGm)W zF!v)iZwEiX6cfOgxR<)Gnc^Lw`|)|#!6%B`dzCT={oSM<;yu$8AuyZ3iuRB?2?r(vJ-8x+U=duCPQJmSDSdP618;@9~nX&w_mnMQO($;FIQLD z5rGmY#=AWVd%9{sY}%7rO&R4di;;t|9b_uv{;Q!YySaV<$73cQ4Fi*uFxi7F^{cBv z(ou{~gvn!I9nO8Z_!6=M9W~@o5J4UiM3Bh!sN0#*8QRv6Y1{^$v@E|31yjbRgLRjw z#e5_Vh@_{Gu`de||Pl1KlXlr8#A0L37Rc6$%fVfWox?;)>_Oc8OF%B>gE!QyQL8M1$~>van3lhD2L>N_>E@ zA6JR%Ggpa$O>h&P9i?*d4jWy-T3kGKym>FBb)G2KH1SQwp0DmamuvY0NSY@?9(!+w zL04!6tb3(-m3fKVlTmyIyW8#o#08^F`$FEm*zD={B0}^tXf9NeU1%^1g`VeorVl~w z+|eq@jJQ!dl1;gm_lNL)|M1>8aJg)D49nH{_k{d$%Y=nN`BX+mpERGGfd$0nGRJ03 z@57Iy%(ft-g|sNdp>7qh!0Cs+9keIgqmVPR*C22`jD!I@)1tkNsPL^23cW&hHr^9@ zO2q68$cb49wucd^4!6bi69CK2?xao5Y<9Ix#Ha7<2Lf?%ZpgNXs2^Opo^IGp$FD28 z0J;-mF{~7z3rtZ6t^#1VcC~^h*euefJB_(jYZ&)2$n#d?rZHYnPHgU0ck=y~K1Xem z3-Gf5L8i+rXd;}C2<{HJ6#U83tMoHuA>g~D?hr!?g~5z*-OyNUf?1UOcBAPPb<5rc z4vfQ2iRFAr6J4h7%IZ=m6iA?(Cf1>&ezv%_mQB)@;nb{%_9Le%M4>TCzWYW?O#~ zHQ(0T?Ag;zvm@!ZU)t7hM6gZ$`|mDeYW|EVFd<&#WO$NiM2lN$&@4MUOUjTzKn!a=jklGDp6y7Asb&1Xbl>cg<~h{OM)o=zU6qZFp0whQ|NiUk^>tSA#Id!G6Hh0u zwjPU#ciGib=b&^?mFoY0Ke=D0_Q%xwW@=1kZD}sfG--R}OZ(Zy>Df?=((%bhU~X-W zj}}53K`XLUN`*@p&}bDKbt8d2C?rR@6Cl3RjeUoV^_h)* zeylHvYHZFCXly^zVOwFlrsF60+(Iw5YtVR*GTt;Q7+xbec^$iO7y|Sr4FY|2rH4T+ zi~g^AvYA+~S(6nKKx?)11fn~sysr46&Q_HaTWkRo4mQ53AD%ywbt>=~l&Q?kL=!@X z!v4_g)CJGQ_M^wz&Bk^=){Z?%*GxCcjy*k&GwgN+eT&+Ww}JgFWkuhMpwbpkch3rJ zc_KB_kU0xt;lx0m9gATM4D%^wdS!+=ZoF|wM%Ex6i`iy$qFKlr5dSDn3-l>x+L1R4 zK1xhmr#~>0xpaw}#h;o4S`CT>BFt^r@y0>0gjirw`>N2A7MqL#S!3K`(l*IS*!oyq zYuRcgtAp4Kb!o;xp|HnXF*5;i4&DIG{i-d-tR)toj_q48pQsW0nlA_;%&$Wmx)OMW ztV@K$ti;%}lOI$hB4E4>KOhTBdC{=r2}F0|m-$x~&I;xlC#AZ9G2qs8fYZ%g`e zviK9iOk??^fNGHal4ccw^cir3dq%I2Ylxuzv|hE{^vP1Qp+omM#mEohe&f5-u9?x5 z3|F1B5bsC>8Imh}dYO;wl?nq>LNY4pr~(M~LLSRO7yEHBx{Mu#&78=*o@I^&t1>ra z-i~xs5>jcXYtg4B3Odjp!bWH569nY0uo=aL-d&_EDJ<6y+lZw7jMcODji@tz;m5}wd zTJCm>qc-5fER6O{jyK1;yG;VSbd11O`Pw6qvs(6!&F&6l$Q9P3?q^9l0!{&vU}({$ zNcw3(+I^x0I7hEir`je#(5@vL%MSSQ-z%|_T?FvmNABEWADUXq))sJ#bOnOfY7bP zAd3-XdN0%T-Y3PuHk3{4knvNxn0v{1;mro~xz5DIY(at&Cfqbs6Feu0+f^ggiD0;c zU-cBczHlr@B#m`##>?4N>24SxHUMezPv&CA*c85CQ%bqocP``$&Zd3XWl3l)9eYHBbuZ6R&EiO8;p+20=%UQjG7nyx2o$)5bn5Lt25#mIgh2n2bH8A*+b+ z$C?v`zTBq`l4W!T*sU1zfHB4wtUugc!Pt=4WHebS zgu)nMi?R`3Yj+iBXPCf~RZnVoB=uF$U^Hjd+On3g{If#bH#+&WGZn9>x zb>ZkY+0Ll23TNU9No`r-#pfvGQM8VpM?#7O7L?Uth&##RgyaXreth8sM2_Ab?02!< zWg@u5poDhoRO`vZoDBUa@I2tzx;0j@3Fj!gd%m$Z+qYp>?k~*Tofs?A2%qSz3wdEeD z2Y@G-EVH3)8+t@Y4;s^FhR`Bb&_&EZayJcsXf@_7hSr=|J^|=rME!R`b&OGm`JS=6 zdA7npYVr*R)Sc*F<4&;)J%QK4a-v3_OE_J8$-?y6ZM=mwJF6NdQ9FxByW5Wz4mc3Y zfs@+U!2YiT^B>@j(d-E$bV754I-}lR;sP8O^{0(0p;dtJ!jBmN*~CeTMyCV(wmt7~ zNzM<-I(m?~i4PQiX_2?+OWhjTVinAB6tUJlCrre0IJRv8D}{nqApGk>GTw{nYlZLz z)?lLjl~AA*k14+1Sksj390&z<4t~Yx@_alibj%(&VwLl5QC0S3>I`PRqUwy=LED}3 zUX^)$R+$yZqPplY7YEA4&K9NC+eOSF=50rRbh={3GG>}h*!v%e&jBIvw2Mi{Ck`_%kngEu7P++>v$d#q2571rW7r#{ub_X*X`6CC18P~} ztC_kbELzCPo@vg;T$PBe=4I&~nC1?dea*``f`xaJAfCe3gu%6aU=C&TRpmqNpDU`Pv@KcY}R$SL(+jv)DH1SFDjnI#xx>| z1jQrN4Z8!8VT)KwtB?@jkAk1?n3!4(>1U`Ja?@XNgcTDaBi&qS-&8T1D;=BgVBF02 z#I0ZvG=+|0Kuei)T8nKP1%zd@iK4&)5VEXUcBeq6^l6cu*49v9vZJH(ScaenI%K}~ z2!*?j>NJr-?U>*e08WI!WC$6Bk&4V~YiMJ5R>Hif(=UL70{1B&0omHEkVg-Yl{L4N?YNZ_p0& z+2y~uT?1jC4ZZ}^r}6_HPWByAnHBw^c5Z079G*p=v7s&fh1UmVLWF`2MH`}CA~+*Z z?HaC~jmO1e2#VMXDV+O6=B{p_WSfRL@eky>La%AjBb$;PVId)OH+KcX7s)D7TPMNB z2cl&#z^6q8t!VND+jTAMcb#V0#}uxbg&d{5ME*nZ7uHR zPsZFM11@V8*@d_=>JA-fjK!teBPz-6oGuI|WEOYwz&T}KH zn4bnU#AIOQqqhavxXp+HLU57bWX*)1M7WtnBA^X$Sn(=*->m3~N|E@6~uiyBHkJqhP-yJ@yubWUak;}x@ z_TVQQr}3HusF(O0ThsncvNbJlLJ;IZ*wgF%DNZ6KB9$DF3}Z;W5CU+4nGcIfG-413 zw7u_x1v}BPSV43M@v}DLd#B zlk-B%Fs+-&L|8lBtK)3PrHm&K<&OKO#BCKaK)9}|VlF4+GtBb$-r^8VVwTUbdkZE2 zUT&)+(+KCvZ*Fucv|)lHoqwMBOWFOb{MH(Uq)O}=*jBDXFrz>BI({Oq z;Go_SK4TH@hYQJOwX#W&uyLdxNf$Df*gnfvZ(CDZ_-68hR-BYp@+y5hHLY?}+ALSz zlkaxYHuKZ&uk@KIKIGXm*?iBN?|Sp2Kqaf2fsFfnAf=prNVYq4Y0B)_jM2j#5J-Rn ze-gY%YZ9YR00=*g0LVrOhR&BKF6+M;tvzSyxjz|qmR+arQ`f0^?kT&B=I%(-w%NVg z>4vA1cB0E}6T5DT8;j<1MRP~de4%K*j1jD8Gj$o1nYidr(MLo^oZ3f~Xl)q~QM~$P zS$ov_@aNrnL}cXr(UQ5kWUeile=C_Ak@pInPdO`vW|K_Q*z-%xe4RO&(rJX|TLQ1OZz`T(I2<6}A#kRZ*)?anWDopb-A; z@N!Jmp7O7o&YF}e6p`RK0ruYP?lqeb#}>-e7ZnYNi4o*F(`#uzD0oFgl{({+q(+V3 zH=l3sJdqx$U^FdVh0Je=O_B8P$`Ie^a%10Z%tgk(S%FU-j6dkD;x7&}7@pm|4Qyv# z&!abGkIpmhjmE#mza#^E^E&r0BzPeSULG3xQg=4@Yq)=E4$r2w#BSx#t2oyJ93Gt0v4i%26ag2wd^DL^|IkwRk*@C)3>wHxMg~?y#Hb zM&sFB&2jVHym%p3i`-JTBu2sDS2&y#{Yt;9C*WJW3c1TOpk`Qt``25u!Il-dq7Cg> zy-pY-Pk8-8bU^x)G*mt-=4F$j8fYh;VST+7?IbUZwYDRO#415`SH~dJ6Y#A`^N37n zrFn8Cr0AU{%>zSTh2{w=Mj{q~iP3E0tadyG z6p6X9mhjl7@My{WQcH)>Df%aSy(pT8#t#n~^BpkL)W;zKm=;1-uiZ?9#hgV7#b;0t zy>B_(q5Q%hX&*7>-6}Es(VoR1LZRnC)@Z$M{;{8wP&j|Bgpl3>n{v6+n~Bsd1XM_4 z&69o4ru6!oD36+iC1t$yC;whSX#TMrWZnCeHOTsAn?0~2Eg0_|YU|xk0+mtEhWxRT z`Ay0EzGQw^GLM(cpGxMhB{q66ezN0QTU_+1N)B>2G64dhSzzpo+(2mNhp>`Y%rD1B*8*Q! z9s?{K;Tsxxcr7C^<1_zdo%L5ygxIOjm5u0D<2yggk6N^l&S6w{5V|JDCM%(N1Uh$Q zY=BPvZF6jQ5V{0Es>L?u#|}YPn02Z{3!{c(FGIaftW#5?k@4L)@c9}nRnLl)y zzjT>DcbUI+nJ2o;dEMsRZgajiRUH2ZbhV(ht0fBsn@TkGF`#RU5MK^k+kq|^H^j&X zo#Ud7Jv2rhxXTG$I$p7?i*@9gcYmUEs<^htJkf2=>oMo{m~}noO+DtK9&=%jd3%p} zTaUR!d(Dskqdv|bEX~nV)ulappf}W@r=|Q1(TPUKG>jv<5N3&@YlNEr)ll`uS{psY zZkxhCgn1T3{J@wGTXPS7LlaGzi^W;iknk)g7qjc|Wq_swaQDi;vEhs6UF)}83)d;+ z8pJc>zvEv`K<3l=CaexmqZBbQ)N99U#%g%mU>MwugXVLC=8i%0g+X)op!wpUxo6OP zWzgI|Xzm*{U&qpF;$IltC!ls77^j>CaN9&=SVUqLb*@t+$i^iux@fon3pj@6WBjj( z{!%zfjDI$c*dD|ccO!^Re2BXh^Ab{w-)9%#p>GkEN?YLYXIT&Pt108>;95hUa2!t) za25A~3Gz=iCPAb?B_@BpqfoHzuLVIn0z>)N`9uu0e;N=-yH)EcHQ&*)$NP$!diRcb z0ZOizXD*v(uAFDyH_vRCXV%X%AD(AEG|zl=p83c;b1jJ`{<$x-s#(tymV)y7-cw^I z);_S)9)z8K6tN#%)uwrY`}zSV`$JXaN4olnu70YkpX=%uy85-Q9@W)<>gu=iCaMFj zmXxiPGm}vr9@s>;Y(%#&P&>`F2L6mcWB_QgFUCR$uqDdvfsU{<+Qzt!`bSJF&1uSd=_X3L*h9ULuhVeu*d!F5drn|EW_RP$S0kG}xe@#Ab zg0E}xiOut5esOC0=66%iF(x(ehlTxck)Do#{}o;h zZc$x%zHx7Yf-$e)(Hp{(ZLx!AV5FL*KhwQ{)F;CFo#sw4$N8hpbKP^yQG88|0{)J7 zC-D9N?vD)jhq=SKU&a0Y;eH>tFU;4HJh$E59)78xliw|OEBst+O0tsXy9Iv8_vCjY zSU`g>{43Kl-Azq4QgmT2zhC66{0zQ{Azfi zef-{jKiW#Xa(|FJFg^sq`JrMo*SfjEv;*TD#RG#>olg8ZPXzdJMw5v12D@jcs~@KRn&T{?CxbY&OdxCBZ$+XS~@CZbA%WE1OhSAA<-Nbhd{s1BrvG7ifHgf|!MpDmKiqE34~zaH z>%ZLmuS6B|Gm4*@HhguXKF$7GE-U6wctY4InNJiGu0A~RX;#R4V)M;zmb;a4FEd9B zxl_U^hnCv1acr~j=J~&J$!o?x2OeV;O>X%MUDtA-y|dDAwERuwEb>$d(azuyTJwW8 znZiNmX|0)>=Voudk4R(c_o8m-t)+iwu2XoJW=-J~;q)f|?Ql)EmuG_r|2v##Yk!83 z*iOq~5zsTW{%yaWJD6t$z2l@DpKO$NFwb82hQI|(k&l)wA*08Ho?!@XO#OkfZxk2$Crszk&9ys|O|>NI z{dy8z-j`#K$BT?rPcC&x{EYxgHV17!{b5DToh3bOR@Q5x>n2b5Wo!9=hd}IFwy5OP zFiia|id#DVk#*!J>F+z!uw@dFci0s`DM+uA(q{nMHMS)R>Yx0~nRG5?!& zMd@^$dUQK=ecCucIjO!V22R^fu74*MP;T_VuZ;N#z}M{2=9x18PD~K$yS*N$fLo^E z*8deuz|3!Ag1ay_u+XjNCtw1e3ln?^ZzWXR&y$9`_snSRG5{ry_eR+07dJbldER;; z(5QcRDcH;OKD^ZYaH;v}QuC9g<`+xN&zG7TIw%_*R-^mi&mO3NR>RbiQVm2|JIf6W|PpON3TbI`IMG_tL!pH>cX z^L*()REJ*s`hV#AiuO%>8l5nCp8h@ExQ!eV_||{05;M0k61!xE5SlB^zig>#-sNYM zwV;3}S=#lEFQ@!-n`$kS`o>^r8%2-ViAntlF$Zf=PHcf~??pNB_&$Yes%Cwag;fC^ zXPOr}tc>q59Q{2e4o3rEpKJYhOZHXhzqbpW6WwTcVF{W69DQyQkZVKD9UItPB>4M> zzE6mL{tpx{8uEpFukmQM_~}%?!BkfB|K9JlBK#xeH@p9-%Kx7R$g8VpJANVnLSyx}x z)xEmP z>+ZVhy6dh4M5HJnq9Py(5&;2G0g%syU9d({SM^+hDm+$;H;cN!0 zNOayLnHU<%(^2TOSPAs{K}(tW2Q+(b@DH19sK%x@(AUN-FO}_U8=G3k_FmdaE%hbO zmF*ulHIlJw&?nQgJ;~WLqdXK(@=~dKR%{kP&ylYRv-bvht0-ifzf+BSm#)2qODBda z|Kk3Y^Vf6!=5YQ-_Ya&O%lQf6yi*@pK^vKu({xc;gFdo?<}tteJQQk)*`Lf`hjDeU z;_7Oa?s^tkmGWoycKh(mGXLhvb4i2QLBvr++OGySEsEyYTNG0g_%rJs#fYQzl!!rT zx~$+yt1MM9sUw8ct`YZeMDV{O$0$cbZiX9v}0=DIm?u4BYug>Wo6tSmKz?~`;d z*DOq`hDF#@&4Xc4hXI!X5oo(lxb}zLgu1pDHkX4S$MR1^VZ40ZMJK}w$^dIbzF+FZa(LT1%~4-e#UOMWR6 z#lGgP(p)Pd$Z?<7_|L0Ek1fYl$n?bI*5FeAB4rI^VfbXIgw~psJ4nD8qqXK94p0DP zQM!;Q+LUF;6kGNP>?%{CTaVw``Z#qFkw}7Rs9AuzK9&DsQbRm$5^^9~MIH9A$iQ4e zWl5Pw%7qoIntDKdpl^inq0S)Z9xrN*WY9?|cu5K=yef*%YmajVQCL`uw8V;B$hVr= zTTGrL8TUCt^o(lV9i3r8IiwuB*e{FUW72cz!kGB!fVqnClaD%6Nksv_Bxm7Hc$rbx z9c|Xj+*gaiNq<7fCXsB!b1@rGefSJRL{9(@g}{+&n*C^WEg^9%C}Zt$=GFE%f4qN< ze;p2KeCnGf`G&FIG<|pL>>iVbe3`vA>17$3Hpx{8q`n|8ExOgu!TEEU-VjW*Wbzzh z&0qlFL!d1waIA&a5)Al0t6L^sQ$_OkwC}t}-6ov3@9pUN#IoDZ@A$eC)t=X&$gatK5YFa zOAvwoh%KJE)cVV`a%D_ums@|OH6OG7>gF?-SijktPgsAgHJ`HndTXw;{swD4ZT*eb zTxI<=*5uFR<$TooD=a?H{jNKI6%-_HpMCdp_a(wa&e! z@aAt04Rxx5x^>>(=U9xNZNO$lm^Yu(zK`DszrP2W7&|@oCCpfxje;zgu($!1XiSSk z!7G5_7Zco^`ao@b#lTz|m`i*ky1mvs#&y&TVqKh0ZV&=yh*!btr=$T68j1~at`C+! zHyX?G$C@a9F%+M9*`uexez|MB!mJ|k^6ogg;!J9=|AhsGwZ^cP9X`+>U{?Esu!J5Q zmM}idufb(@t$D6L9Bb(j<^}L7FZ4&^R{J9RQvVY3a_px^`=dzl3(30M$kQX!{H%#P z|K+IYi^d8qn?s-zO?7?h@0ksWrz)rOUOBqhXD_sC3AvYH=vM3Qu>N-I?zH}H>se>w z|5*Ps>%VOc>r8x`Mb)kOx%I!Y?minoz<{v+C)WPP`rk1itp5X^-`4*E1h@W4YmiZX zTs&h=a{d%&-r@YIj%VW5Gk>;zgEMD3f0i@vasC`<&UXG>XWr{PYM^&He}*&pGaq#R z0%!AbE_D84XWr@jY0kXQ`42dAy7TXL=2GV`bLOMYU+L_-yeEIr>E4I@MgA=Bj_hEm zg{orIReY!90e z-+_)XhG@S7bcBH|(9u2xI@%6&EaR{qkV&IQ^p{=ui79L!SE4_VMII;Y)13jV?{Wt4 zu_aNGvu8TPHr&zH*t48{k27rZJ8W6(M$2#Ib2k%n>yyIC=68g%&0~zCnlO8qbi$&8 z6Dk>ocs|VO35Iz-)Cu^)tbK6Pti2s>5|@=lZehl9Mk&AH=mRk`Z(T<$G~<<_DRDpP;*hnpMk=kw(L;s=qE zP{nXx9BF=}H7j%;t}&K$w4-Y>M@)V4|IMqc27@#X%^(PjQ4Czj{KUBCieNcq4{6!I zc=`n*Gg0(z#|l}O5q;KiHd8p4EgNB zwFPEbal|6?#nB40XK}QL*|#{_$E+@n4l;)!$T6m~HSiMo(GhSG`O%A39v#MSkh$Vl z)n9FnYaCzPdkvbD{3#N|!AreS=?w!{^yanExyr}>f8rn>ZjR%bxrX|%ZQg8%SA=b{ zjlj%6mmK1-YA~5%c*Ku2(ai}$dV=8iK17fS1ophdyuW#^7*P%fP5X=3{9KCkFnavs zvH!O?y*W-tWvWyCkeT|-04j~Z4MBlGZ0>LyfRp0I&*|VX*K>0&G>RUp(OtbHa*xTi zfpqQd9<=*FQj_p5;|aeg$^U8zOO3I{7)e0r%phwMUX=E)34zZ2C`-ppX$+YdMT|LK@Nz&;z`bavk|*uM;-x-aQ+hzY(mL>#@IZs=v_`IT|cd)jhSw(QKmgrDf%){B+`rn?Mn7%Ik>-6aKsPt5mp3tH7%X>y^ zXie^?xlAbw5LOxT$u6P)=5wVd9L)>cLvwEOJj3`sj+GBa88AUdxEdTLQRo6`VMc79 z>&_#wMHHDK_!hL8SPw`U=J!F;MNMa{Z0}xA9bq;>m`zvATh+g^XKy-V_Z>Z3U9(_a z|Jvla>EY?~(j(AsKA+r~#7*w6h{^M8%8D59lZ+NYhCkoK*b!gh=Rk-XWZ+sPU77Sp z2L;{VZcW`^68Ys|Nmuk)oBY6=`O(?bRCeyRgu)-Yc6hhESAXRyX z#Hl~J6Cz-5kJCF@BZXRj+gsT7eaw$yML+F`7TwF>r!$qKtK#Rf1W%Cjy6qzP3z|bp zPeoa6f4s#Z-KFi>Xo)o5O&LFYnL1W>SjVN&BlMhoFisz#j)48w-XcgH^)z*S!r8~- zX+HxYl4kcD2Fw@`RX-0UbegYU+GF>XdN(Eg=u=hN4o(~BiEd!w_m)~6&HbD(3RY?q z_+3{S%@3Z`gD8!6uz#8-D$yNjG6V;V1)8eO;|={k$fv-pOg=f)ho@$*ldc+8)4mlSIP!$Kg@?`bzXf5$b?*ec8HZE zlP*-mTvb0IiEx)dgK8zsIN7k&txoP8K<0X)Bj@uCa^I3W4lLQgwbP@T>GiCJQ3%rcP3A-gD@pRRE)+uh|EVF4=dE=}ky0)CX!M>J6 z*=YFagYYMlCw~RF@?+Iq*91E4o96--=T%R7=DguIz%?h&BMz3q*le`2_ypDq(8I4U zHiwxtz$!q5ZOM@Zw%2FVTUWe4Ns~hk$UjYddpF>7VlfdglR&sM=QMwsA!E`@K>9j< zo##q)sC%_y-#jOCO}IX$&SvUeVaKtO+qx#5?FWA9b-QzVWa$)Ik5uJ6%cPQu@-~spgUz@%q?C9j zbappZ-Ruy!=w+rYB&5K{VQm7+j4VC@w2O=C>Gm&Klasc&{+F`)%oH-0{Ot_C26;0B z3Edtm>mJZD1q;RL&V-YBD*C#(5sk>nf%L6ycZoq*L9~K{QynIXIY9n4xx)mcN)8ib zDZycayUnsJDbbFQj$q`lPZ1==W{}?uqAs-9#1vtMAWoqz?+Hm6h9&&8Ws<^sBE@?m4c-%ZGdB)4{U^e+Rfc_) zVLruwBE^3q&HX3x7yo@=q6b9>F3|(>6EY-E3X|XA(9qcK&5~yhFNHaHPy|%j0|Yw+ zuOcabq$Z0Ui?InRvQ#HYZD(4m5h)jnq<`ro7m5^nOB!4#l9mfaPc*_}d@iX2>6S|a z*g}1%P4kD?HN|7XP4Sor?a4hRhIm;X6VPoI^NO zVroZv__#W-2akzVixWd!J3S`C9P60SbB_rSx2EKJcua67yo|>LX_`<)y&-6#5^17F zhJ-9CnxEtr5!I%b#KOW$f?|#{ua=iY{EWOLimIq&&s}zn9zQYkB4#Gh02oXPM%tOXLC`X7mI4#6a z=?D=&14oGXDIFo;7UEO>H#$Nj!4V<}ju43)Av&m;uwR`jVk~TE?1q$V6ZHZD96h1nsr^wvaM;n9fyc`lI6MS5D{<3 zA;SNUI7B2kL?k#wBu9l*p2-i)HpBvEZ4I5~FGpVurRI=m4uy$?d3$L7%!Y=BVtY7E zJnkG4rNSY?2ZxCGR*OSKe7hVX;tq$1c#1=W?{J84|63g*lHd@L1c!)34iN=uY$9!w zn-H=h?1t`;W5g3K5-UMaQrv}uNV?^BH7~wHb5b;l{ zw~78b|2>Wo34S`sp;*?|K(8nG9H^n;hZ?x!SUv~i?s;R*jJxU>_N9UgBdILU>4$(v zUi*yTrG+Cs;;|KGe1#udQH@3h1MjM>3(FWg#}v%*U$V`;7xwJ{%mT{9XFY7S zc8x}G4m2_gHoXoITykdA|7H*XF&K+0Ji5ax!OvjIbAS2O;BPRc+`s&4@G+QD?lZiK zRsaVoc{3D9#qcW__m)pW3$>>DB*aahgeh+auY@UAK~xv~5)ch?k>Ee-m(a0n1a+q$ zi=Qm<`I(em?dvqJkQ6yWiO_srd&!aQcf>Tc?@oNH?XU3v--8o?AOk(%?7PJmNa^pf zTsP(Nse3@Xws`ub9K)TT;{7Wyt)u!8J@@t^>6VelDA!dVf%}+7sRXx#vM19lna~gE^m~{> z^k=z>b4yyO$4{wjPQpg>XqH+>)6W)#7R zFMJ=gm`$(b+VG|fsfcm%ec0q5#m5z(_A(-KoZWA_K$JChtOx~u2knK%Nt&rbaL&8OazxOXd5`NN6dl;9TQ z(3fALH+VvCT$s2EbpI+{`$&H6qY1#|+NX8x>ipU#5_e7FZ%X`a&5}PuYPZDSn)th# zSH=?e`NV%Y@%J>Zd@*r%CjM@6UN*0MgDmNk?Jk#jF_)9E!ZB*@E7YIU?3WedRIqD5 zfn96$6kW(XAk~Cb;xAW;gLAbA1Z(B>K4mH;%W{?zydmOUC}o9PMd~M9sr^%=QmRFx zO-)-f$ce;1xk<&FOSIM)lLhAiixlca+&l>UhHV^-{xwiez{C*Dw2D=H5TrU@KYOK< zy_hbQb+4FJUJWK9PCW}2mV3<-Y`V4bf-M!ZwX!s97lf_r*#1>Gu60~#9cR(#EENy6 zVX+^y%KEJgj>O`bRYyYZIcgMfPP*E>6JrLc@GEq6xIHjGVpnyVKzpT<p#Q7NVnK9NHAF`(pgkMnHNiEpp+Ml#8AWp>iR#0u z#UPODLjR}OE+98i|3~Gw9}(3trAp(Xa=`$NP>yY)*r=el93XfvkB#CDRr-|*jMN)w z^2i1#xHe;>a6C!3mOf{<5Jxqt;4Mvf(vL$AfOvDC_eS`hzNv!vsfQ+B%ij<2iGk#` z?*pR=&$i#&(e?Jb?Ps6*nh00kv8+g3s07O$Dna~XTCq{-gKd>y8dQSmQ>p~hXP^>H zpHd~5{BKnWmV-*L98`j3sRTO^txW@k3+i4?Y2t}=u55YvUYYZ91!2C=pVfW6qd;XT z2;YI-RBYgoeJzanO)SAD1a9i(ihxog<_q>Fv@GrX3o>bc%*B>Ch0y|64VL<)9%f2Mu9)a>x`I+{9jCs4!OUVZu~J z^6t)0TEc^Kg4%1ZGCsmoOCoGSzzA+hF zZN^vovDKw$bWV6>E?eXB?YwaOpWAkpb9e`67KSny3ORfbS;H2{Yl50VqH>tesT+8)-6Q7%W4QAW=$NfHebW#g} zrfLFRQxjOA9k3JH`Je}!bPYkn2Q45RT`q3?N3?(m(MiEUT3V+t$2IkKZ4F*q(}$=) zHRy7F9U=qTlHwWx6Zw%SajPV}Ve_~2e#d(dnc}?(C3L*`|H}ZPPYaLEzSurYJA0!I zQv^TyN#b9wbyNg^^pH@y)*it{+FLYJv3)tm(>Q)5y(X_;SndmA|MynDpuqtbM{vX` z1qktk>q@jY?LC^u;tHC_;t0)SafIfvI70JS9HDtEj?g?7M`#|4BQ%f25t_&RsDb9O zI70K7AJty8FELmxQW`Xm_2WfkjjNz}ERN7TdNhv-n#VFtD8KnI2?*KWZpqBnY(>~6 zTQX?v^w7GT3KB{>feL!Wo9A?D9w$y5KIk1Mk6@r3w2rM2{GZV}hEc51$-?JFKds|f z+D8Pqntf%VedIZ5ACE@+cz`s4`DBAqLmote2--)F_7TdS3-Lkw_#8QR*x@afOx2Ao z5`+8U>y-ROYC)os$?stUKE-YAqu(s;V=C=q!BuN3vLhB57cWAS|wiSK&_-qO-vsv<+3! z=(^}pB#fHDn@N;$RUOt;l?@6fd3YX407VBG9H zMjwpq8TvpgniqYrAXKXb`DFp}n^@<3qc@xU!5di?Wkdrlc8kMDl=-%4lFT8$YZLN- zb%K|idurJKVF%8Iz+D3{d}c>*-_g5*Il^62b(_Qdpa63c0zECvVXVt`egX4?I$%zj zxOxRJWK&>HyhNF3%WBdAb4-PHr(nzIy8gKpx(s*|1ZG+f6$mCoe{oR zJimyoXW-;|6Y&M=KJV0hsRj;XuQTZXX*zGaiL~gtFmF+9zr(KE?wcJQN9O~Ey+fz5 z3Svj6;R?N-fkLO12(lW&sN(HDbQ;;N!axCXy%Mu%eA>}zJ`5CcBq1{4C|qKmeO2*z^nKp-D*U?keSjR9bJJct+>~GqPcHg@7%ZVwaaW?+tGgV_uFr_Yt%fN zc&}Oab`3=BpG)1V(aC6qCscg$=kp@-t5dhlcia2_$>&2ei;n520km>GjVp&W210K& z*MZL~H+9==^wc}y6DIm8ggFP4KBrOB!i4s_;VK^&(!+-(%ywq>v{@#)j8UGyFV2o5 zs9DEfC;{{Y)gjzOX25*$*1eP83gzeDZ9QF%PJvp(P3*AX)`!Apc62rgz4K2+QK&+~ zIuJnf5BgBM-JLDSuTN~%`C&uASC)oJp!Syubr_Ky@z749(R z)tv&*Stj~YrZQX5(i4L9*MvoYI72PR>Iqk;KG}YoX^WD=w&SREKYWF5ZGKJ9=Er)v{YD@W z&9aK}ahdw6+2TZoZ-#K=A7`hK|?=G70y%U466 zDYoIPd7M{I+i;~_x$u7R)`Yj8;*E*l>3pl%P=TY>Y;tSxOdA}wI zE=nZk&Zg}v+0R#z@V@ImZjNE8j)dfx!(5WJM*ok1J@v`Ol6~NTYfLi^@7CI-rmL&M z(&?oBLWgZX&wcbEzErBs#j%+P!m=;dYF+Nk{Nt9)A)0V`3Qn=B*pndyflAzC)%LZo zNzdh_QOP>qk-QW5P9AH zdzzFttHY7)5GY4$kM{`2hLVjUp%5a*3F?hPt{y@Lv1+7?@l{4T4IDHrS%-3UXAe?Wrp zh+yfE1nJNQRsD_gyV)y2Js6d0+>gbehKouR9pwA9ld}mg0MVT!uA9A2Bv2@AZ5lc% zHss%XK9NAB;@1^zB@n%qWL>@*{OfU&$jVu7_70amVN1WU>7%yvLz`};w}a}z+P8yJ zw5Xfd9<=>bcWv_ERBe5T#=aFygOY9-h-1@$RdC8BKr5|kMXN32@ zia8F$oBlq({rA40_hz)-vt%!M(rhG3iHyi9S>AE_1(~aLOnw$p>M2f2ik$zN4q&Z+7H)B6Yq)a1 z*DJpWkfj57ES#bPAZ;SA=JyGC&6)Ch!~H)gCH9v(?w_WvQCEI7+$Wi6Vpuk;_5OLy z`{UvMdAk3}j{BRM_pcB4H|hT7j{8?P?_Uw_U#S1o(9TOj0oWIt;j`I`ZH*o&9=8YWxgLwDHh_HE|v zY)>>N(@mO1S#1$BwO`+Jj9EYP7y|N3)wGhbIttpol2%E1s(mdwjmSRxPMe-)(@U+n zM$msSAkW9i)vvQ3v2>?0xEeCD8d7DNUs!XK*bB~nZH1_C8FYXl$)+L6rjM6GiYjCq zXQ#9ksT=?__^A)xN@%93ldP-+E`(H6(@Z}TNN+9j)1kGPZu4vh9ouqrmrItIg$({4 z`U&EItnxuefjpGa4${RS5=hQihTOeKrXmE3`U4BgAe>0Z+i;I^9K z;7(H65@;k9tfTh!C;^k`PcHecGxt05Z03SzY3nvR5^QFs*F50-*QkYisiO}1NR^3m zAm$(uFrdB$&vSX1VqT`KE4-U!X7g3Xym}5I82XQH3`hBSah27XDP)-@61#WslJ(p0 z9s7=#n#}#yrVj~U&oE?cFPU<1^@oB;wd5h8y!NEC4SNj)oy!AmSPrym2|rPFDda@XXc}wwvQ4>+ zqqKS*?>Dq*KQLqD7$OUo8sDUVlc_FjN{j0L*Bm#$mAeOD8K-@=o17X4Kqc%2u{lW8 z;-c6bto_BYIZ||Eb8KFu{bjLPtLvPfS%L@70?R|cy(_qJ=SGc(>EApv=rf~`T6uuJ zZ&64kC*!~eG_7+RxB2J&gYAggQ#_Kf%F&9&fnolDDI7{ZYmh+#k`^X}-h}x|E6x_@^hPqL zHlMQv5l*yb`hpeX9*40xjvjVl^x+D!dogZ)5)3|P- ziF+}Z>w37yduQnSNp`|@-Mc~_o0)xwHH+=JM4R*I<<E0_U7lr2pF0Ff{26EW z?eUc;1kO;gro8+^5 zwhP^|g!6Mbx9`o*)lHjq{yxr`hy>=_fD&MSzXQxylfRNjZgTcU2))1q5=*_POk;>w z;lu2Te_=+z>kwC6H~}E0nK9#`c`R)rDQpoOLuTi=C1xfNo#~e`{q)&+@Le+W^vAnU z0UZ79%5wBA);VB!^KyxN17Q}_^hS0c&4M-L8xO`?(s}hk2{)Mo!qzFNS5`qF8<*s?MSnsdcAI4%jm@PlJ=vxo z34?@D{xMTmQf-p5FggDYyc+)Zp2f`PaU)?3;Ly-FP#NSm>cTP^R0*Ir$g|gEQhWH(fOu^7DP#-;9bm4l6rl<@liGl;F|evo}t0L(GP;;N`UH3*1}xg zWF6awO^R_&;(ZLKuJI1xkRV?rRbfWDKCY4skQ;D4Fj>8D9>Hv&QR>1+57qa&PfVj9 zm}DmFe9yA8F>RG&_)L(Ib#fANzcgkieaid^dXb>i_GSaj4SfaQv>ZUjc9d4}wHdtJ zgMuV*PM|U$2h3Ce<`4KOo`NVErWwl$GqAg%4$D-BA(9DQZIe5^`07u+doDJZU51aU+lDn{EHyJnrE93VEc+p&F z;&V#oL#4(h`o-P=$%17NdAQvscLuOiBRmdq()zNsp|en_NY>NbdLE%$q0i)s5KDnz zf!cHcI2V&F_vl!0kUWY3lVimJWl0Iw`>hH+z9z*23v0areAYqJgGEKi=E;>~+}a!wA&cleBR!I#|s-m<9GyGc0( z^waoOG3M7#Y`~%I2Fz1#L{r{TBWjFTEbeiJm$Mqt2WqMb>sKL`Rr!?>&9b^gA&_L0 zCJaW`Kwy|$8s_&*UQX*ieO7ZY&KJbbDHAO65}lC5U$E(IR52-ek+f%{Z(^4xT?cRC zQREfkFZ}+)`x(}UkE5TWwt&%*CXIyhP+-u0*jx{CU|ME@CFsH&u$5gm^upj@a*a$z znfacOm}l)1a&yKB-+aHgVtyCiwqo>&Fd?!8Xj2fKWIt-Q8MDFmY=dNEcNitx`)FdW zNX&KAzJ7DbeWIkZ%M$>2bIE)RgE1t^+MlH6vD9BsGMAHpO#=#2dU0aD13zW7WyCN- z!f4skloP2nIn`uC#Y6!rWIAG>EH^tb5Oc9ZcP03CLH6ppDGeup2;_nhCTz~!9J2uI zYz?i)Qqx=7oD}m#7mufQC+Zm66F^tsgnuYVJPnetpYPF9H2@g-u1~WYXu~(DR*h?N zAsUjND~Lb9sB%O#AC%=V?QAf!PXtQKqHktQQ@4^Cy8d|(5T-OAIOt^gcCkLZQu{Y> zMB-ivUPx|0>(_uwtckmRNcglrU|SwNktGkaj-9XmhzXbq8CZk79}Sv1V;_=`haSa# z2#Lqr_bItJ0I|s$`{^|OU7FV8!StOlfNm+?w>#5=*4Cbeq-1xn!@6eXzX5WzsG zx`mCJ5wx%~O@#uKKyD#8sVd22US%LmkIn^^JNxovn}RP**n?3V>-88pSsjbwe^dO5 zkOFVcMv{AG=a^``lx<7h$(i{C@ucyWO726(oRl%-H)PP#Ve`i{CtKNR;aokgmJ>@5 zL(I&zCBqV9_Uw}RKq;SFH9nO2-~0(s(6Vd1yUv@Bh$P8jF!lro**_!0`zMspQi>x1 zQRDYb^fv@}zCXau$#ai7_f94#@#Q9|urc_W!SeHb=DI+I7=$EbnF1;>)uu88aggd^ zgE>;9tqY7ex18Laxtt__D>MJ5wpqhbV(!ZdlKiub`9U>cV24&H52X6bW@0-75~`n_ z(o#LlT;RV%+(PKbg;XDwl$yh)4B7+pM1EjkiyDLM)VJYwp>E9GbirSTE~qFAVFus! zyK?rKl4Jb-h~0}C&)zPn?HUcXPUycbZ^Jx)1T#AK1oeMv10NXU zH%v=%@aqV_BIXmEi%hu+)(JtG)8Y#41ZHqWd2`>|Y;Gy~KqWgJO+E;6N^IUi71j0B zI<{v>!GC%=0DyV&dpQ6OF!z+qm&@j@9uTDK40kxY*_436cVZpiRW{ew&pr6!M=UyW=i$BZ{e6KOCrE7Tr}Loml9h`(txoM-Q2YaKZ8q z#{K~z$1sy|PNgt2u$Z&Rl`6>s&JtE==y<&Un7kt!V`%PvS79Lid(qHqjrkOFP`j!3 zlG&#IaaRvYJ6!H=``?#0`C_fu7KP3OCp z=kH!wHP=-e*X!M@^zIX7b6|V`)A}e>`3hq$H-_zpjl0-r$;5Mw*8)<#w1DILTtOrJ;k@moL&S92G%RTg7qtrlEGlwyrR(oKZ8kI)X zS9&y6=v|e;&m}blFfhoVl}RI>g-FrhZyMOQbh@m3*jg^qP@EU%trA$062f5#;AO&y`gGO z!dStC!qI)AIGRyP>x$Fwl`0RE?7h}}*T(nT?6dmbvi!{X8l5-0D|UBO~UN=WG^?b5%xHdvVvA1 z&Aa&h$Vg8Xb@EG9i{Amc?#|kE@$-_);1^c$fw@ZdpHpgrzeS)!Fs6=41Q7%d7B)!I zHxzwV1*D|fEpIsN2X5OMv*EDw&9*hH=k)G4y0L+we46=OokX~wt%rTGqy6XWW{l^O zr`wO$&8>Rw>Gn6)_pjQo)a+V@dC5H2JWzAnoTdyqkPMN{3*Rf1A1Gx%15wmUt^IUi z$$g}5E+I+`(spr~S9}mZ>sfiY}taEHvfo;5HSEPGN(xgMAxd9U@No5bSOJ!#_ z3Q3(q3Vj%Y3-fr1zA?yqHjW!AE@?^CTms30?Y*LIel2trnqOH*pI^`^u&#OGd!-VT z3VX_zz5jlR^hQtA&2RM1YIA@_M15WPlXcCFG*V+hgajH!eMO&{d6M5Exr(5=t@YL- zaI}j-)0|9J=Y(by zF^U3s-IUYOGTj~bM1wG4(K2l;PWX@6F=@6Evf(yee4NoDC;E!mwYeR~J9QjeJ52AO zxedM4K8}~miRosV8Jw7o>guVW&31ble&q5)VTw!BNruZu+oK%Zi#wVXZQy@`M-#qI zJ(Uf{p6E7^ho6mw61RMuzO1{K859%lGGoHl{#o8pFSjpqFUOSka{JeuU1?aF$6aYq zt(q%Me76aV>O{Y&wm(#TJ3dnNP9LelZwl8ThKkxX*y_5uVaB~0lk`2tY1{heLx zdBsw{Y;gO)dR96GRDIFC0aWH4IHZNYf1Us%Y&jIR6Kfvy2(uQ2rZe68uI*eFi}5$N>t zFib=~G>DaIkpPhbNo_2L5T;pmO2FaFzLe)J<1lEsEmn(FfjglgvMW`iQ{d0-YwWAd zaprhR`PkHtM(o!j?G?=h~Nr`wP5kQ15;6s*uDL2aYIZSJ1 z)Sr{%0?uaU*SK>^!FeQh#z8; zc8Y9b=6m=7ykWXCh;t}MY`zrJ{9p$=VGCX0vuYPqlMdn6TTLpd)~aXl5MTwP(fjOC z7M&-pRizreJ4wr0#a6m&gv;F06aU#-Jfr?-2~>SP3U^Q;doDM1_aEcg_TGlMyWw}S zn=PgQ`(z`&ykV|r^nRm(mU=D&7y~BSXWGu*W((-N+1X1)opZy`JDvNN_St*oj7pDM zq~KtFnU5Di6_>Rh-AMhu0KAGswg;F(W3juy8U$Pjjf<_R;UWrdK%X?V_rx#?|W^FQ6)_8!0 z!5+KG)HfQ~nbwu~U`S%Pnl`U;Z~t&y<=!lQJ<;Pymf>SY1IV@qMf(M-@tWUA>HiCh zRqzc)$GND^G!CO>~NIz%%YyUp3M&YYu#q&}#l z^OGbA*>B2(Q_EKSXI?;M9KWB*`Uw5?%hk2j8eee1euvdhm%Q@F{{ZM ze$zSl@(i6oTu*B_STp(<t{9YYiiW~pmaUQiZ|FOCTd&#B7k6x*AC7BbyGQf59<3Y7JG0rn zpg~vYaEMrr25bj5nRuh|bT()JiY(!%FM85rT}#p55v7P}4-lQgvR_D9XX^MICOtVk zW$qk|#z}Yb4^w)TK+*<&ZXeU*SNiNK?XS^mA-x^4!spOSGOQ|2SqHe$2ANZbY$7 zZl0TO<|#wJA2kcK)_Er3ds!OZhPSina;HU#4rH~%_S=WL!()>EMXqZ#Ru7nqI`J=P zn5AwFVMyZL+4h>gxOX;QBQQh#y@PIG-gLZBrpH6QGu*J55f7JoK(1b70;nA_lv36q zYLx$GW7%vf*EW{%LLAhfV2y+R(bax@2<& z*T>Oa*m`h9r$Q6WA&-%GbWk;>pKMYkh?h0BG9P|a&i`3i|m zY9-1L19URfWiZSc@MLrw#YxpA##m4jzNP(HDJA9>!pwq*FqhpMu}`lXfEL$oG}&iN zck~b)(zPW{A0i8-MveVOl6^CAG&ry)bEydCOtNp_ZAxMWrfl!Hm*Sxi`UABlxdu=jhj{i4Laq(j|-tiO%?u-3sPjRn>h@cgiI>pVhUEMs5Cz5-D zVgHv;bu61ZVXBiq+&DUpfC0cr&ThY|_mfV9+r&|`*%-if)afk_Bu znmoi6hdpx(oRk^L2D&l86-b8y3|dG0D6iq*$FZW>V*9pyXlSL1K4yrW*jCI!cq=qb zTDlbC;J$BI-b%SsHzd#9hEGD`np=q3^dLkY8jV|)zl56zyx^xmMx*BpWT9VksC7#4Z*c~mOxQaP6@L%%-<8?&X#$(Lb>t;Yi z*M(!v!8l^r2_dss8#W||Qq4B&;dzO48#=5&mszcbk-g{IA- z)P1|ToUim;ro2vYBxb9E$XxEt4;%Vs{4-!{4lb`|dxo*MTYHDq)+V=E_iI$1wsUV%##DA8-*JzT4*hb#ZtMBu#FgP z8yT69N`gCihEF!zJPt9nj;-5ln5*a&LIv%pgFHL&CN$)f14JO^m9n=9Lh8{~mfg9|xrzOv3zf(?i8cat$pkvt| z#L>(gSPu2Prhee#@QZ{Y>t?}Y#e^F(6D=K#JdSuCo`)!h!4hZk8fFNy(WDv|K>%qVdUSGhGkCv&4K)z(nUlOWrx4;Reiak z2&s+_=Ez=+ZYVworL@u}w?3Fhbz*EHTeK6o< z1NGKmz$hr3K0K=weJ6a305R|X#=YL0;NDeidiaZiyX(ae0_>6{z{+GTI?tw5FBwWVbc)E8;S6&(;8u(P7 zeZskGo%xjWH!>plcOA5;=URvD#3t9d($(T9MQk;``}s8(Xi!1~u6%BVAV>-0Y^}g> zw?^bZ!%NfGpdq_b81S3oqc;K=!pRG2CaemWH9y+yv$<{-zTi+T^);VZMw<)5)rr!V zp@R=J8WvR*2O+%%9!G(=#hP%cpa?#6BQjV}77SM{grDlgBjy zf)l!^qiSF6s2c8#R8SSWQ}KUvN@vx+KDlc8eiwbC`iAfG1;%|aM@*{0ivMA!aZManC0h6u% zMO#!OTyHvILY*#%+jR;NUTamO^AtBGX()`uy#6B7C+=@JgvqF71d zR!1y7AS&Qyp{iv&H@YKEvAkji7k(T=u$ui&2>s5tH$npG(bp)5Z5(|js&jp8W`Q7@ z!DjN4R)N7f1A!RTJHv&i&|L5oWX-J=2chzFXt+vA!DS6J<7kWy3cN~bjEUbb1*Myl zQE&9KIQ?LpyJxU$kG&8rP|pRL6F%r;6mO^Cbnntrok3%LHfAo5?X7g4q8T)-w00+7 z2|CbTUh3i+JvGFzs-fw`LMqE44t+eQx(#4jpkYjkR2aFG_MnEqzc*sw2=_<$4dG9G zePXY|DO}^QHO-~*W@|3(JipAEkG9V@iKsDb%}j`zVexpBKiN=%6&_+G$2EOQh=rU5EB&`RmU>OSwv2 z_yKefhNSK&V{$#fV9*1UBq47WqsQC`BLXWSLe7-h#anO3XiNk$!4c<6#g`6>F;Yc`%ZB!43rdV<&t4i z*Wk}go4jMqXk6PgpU9n7v&%r@LfGN5rlEbLtsCzf8 ztBW(Nf!KVI3tID^m`o{<Id?$82;k+BjaG^iIy?Ql&NRi&xtB?9oTj}$_Iu8z%BvAGsnrE#DR;R7?Ll#4#dtbaS@eqJFbO*lQ*z?=Rb zrQYW&ZW;E=W^22U!!%m*R<1Vt=%{sf1}Pw(>0Ko6;?JWZ4K=^9WIi2Yi*72Jafn$* z&0n*I{({BPg2zU55t?2T(peBFr*aCgn2lRQnxh2P*H<_1o)cHWB z9O~uXZR|Tiy}WfrQLmi*WWb&YPZl^aiSG^r0Y@ELQ zQq6p!X6~w)FW1aBm2tO;JHOR<(scVfZQuZeJAVRqwob*J-iT$%KcJYCH=5aIHhu~y zdY^|;HmbicdO~4R6aEFdS|l(6;b^BsGJfhiQz9A#Iv&Q)^p>S zxYt1^$15K-V-+)ANyi|xm(`<>&e31+;Zd^is4^I$QR1 z2`vog`Ce@5+VEWH7)cTzf$S@gVF~OH{#@}4xn1C%!k6=j6&mhp&xtlrUxROqn*T3^ zw9x!bOE0qZ5d=5w{hpKa>rDiP5^W?zGW!oADX$!((fXf-jq)_u^R z7Q!>C`y%5P8@>HJo;%yva}9~by3aE)>H+^TTo(L?P3ca!q1Hr&6Hw@Dusa+LQ0=DU zN6`^^Cr|)W59BUDDSxYVZGjrg4~rEnQohHh64rugQ~@3pIz-N3W&1D79rR(s-Uc5v|=n^ zt`F{JW$@6NH^*;5oIWNy*1XC!;y0Op@Mlm5+-HtaUL>GJZZz|Jd^S_mjn)kn{2us* zdWEo9_Cn>Ez?nwxiLel&DdC=v_d@r9HeQ4N)FMd++{2h8yO7fZeGX|T^=KzmQmJ7=0wv`ahz)?>=u}D zSO@uG3a@gGj;eGF{uz`@f%8Nigfc334$9b$jDIkGC}aomSlz|$>||u!C4Nb$BFP*gdXNyK-E$b{Yz|c}q z_PQ|A7;V@NbH)d&f(8Lxd5TW4iqX-c>CQzI43^9XGZ}5Au6m;$ZKl~mdxx(npZ{xn zY-vG#G;IoBQl${%0Y!tUQeR0PmCW3W+6c~weBx-;`9Qigds$dnp|&MUqH?*f(z^(N zu8c5q;MonFXPFCRY|j7#6eru3@% zv5GA>DEqCwicjVB%c^DH3)5q3FyjLqBvmGP1^@-feWeI!BGdwqEOgV85jv}i_JX=O z`yLRINZ|mYZZPYGp&u3mQL!g%G0c^ta*5T<)f>}sGV6*iqI~;p&fSR7s61TMd8pVAlA{GchC-D` z$hyzk(l%4y06@D~oa+W#`n{?Dfha9P9mRd2>z1P`n6RX131F2f8e!4Sg4*@#$rMK7 z?{HBp+A)N`YALISi2n_Ck04leZNvUi?j!w+R)rTF7e^N{E0+*|%}1@hlC>JFBY)(j zw!WF#bT>i`a5$$1N}-ZM=fk&qpy*YmwS=SqG`{2x7s@e~5YbAo2#bYaJx`cz-DX2i z|2ABq%YER~Dh6N=`w@UFnJNgH91k*Pb|aHYhThc-fL??0_ryZQ7nKPi{+jjQ3*sHC~%GRx{(Z^Gw+Ju&svetgtPO)q0|GxBS(? zw!OeQsRo9UBuj`dN*fh^^kWzTbD}#HU6;A9xb*8#k8+o}MHCJ7wc#%FqD#^gHhPWGiQxcZ$gSyWm|$c;uc zMc8>D)aZ7Q4aOF961s`3=Loo0=$!^Ah7zpTGw#rcO|$brE}VrbJJ$*LaFkv3GvI99 zY>xtpoE_-$D{e39Qo)C5h=65Wia@Yd>-*}x@DP6e`}6$4m_8OWIbu`CiX48O+(j_= zl3?WwQ~Q;j@fB~Lm;Tt-e&o}i_}XJW{i(10TMX~VdA<9a zz`~#d+?be6i4R-bJWiu3j_05sZ!4q3Q1laqD4Zgeu_6E=4?~!`4W?21AbCk_^@A?G z*cr5RcS&L@5n%9=j%oRmlBbC@6CaXcYlbLfE(8_az(pK!l>0G_WnCX9bWv-@kai|o z)n%*Xf~vX!2OHPyg$UXJrE{;ls3%{VCoC z3tas$iBsZFS~l;q(OlC1Ozn%#EBnN+$18O4(>;}}p7g}bc>a_tdr{KSldmRoF&lJ# zk>jaXWZ@y+2*O2X9WmaYQuj9p{UsXwDI+An>@l6qg3k{?gUgb@waJ*n{orMOnE zv+L|ag;9N2ZX=&06S@N&)^9Lpn-gnMcA9|!pBBB62%+REWakC_BcMsdz7)xbkgOEHZ0CObn7!@de89za4Bn7jEi8U|6 ztY3*BFbP4pc-O*YzrwtoG*>5>Uy#rRCxzHNK%S5|Eteh*!~zZV!-;vlJ;A@;pI|UR z+c!d1K*mx?w*X1zW5nKx=19PE_E(Y|ig1VzX9YheSI5;TG7h6PjNX3Sbw`P-W8J41 zM`kfrQeM;nO_%v+*{wrM1ZV^xdK1Y3W&f1cz;*DTRQ=<0f?V3NGu2na(PvHaywc&J zs}7skQ-{^$`y+6O<2qd~zQ_(enAPbi?r1*zQ0OV_SD~kdDSwk0-YDP7MPZAN8prsk zP2Ez3UhL<@cOq~@c}zD>rX#?;5q*{NNa|xzK^|^%cqjJKINscbbbKwA0s0XB2$|#y zCPCA~M1>j%plD*{G}>gI9~#xz2tp11UG%!7tOUH^lx7tkg6d(^lx&>&cm*}%&n<$J zKxmP;2XbI~3E(}J=EA>g)xJTJ5s-vPS?PPtNRaohHrp%?*IC#$!nVH6Hlo2>On2Hd z8l7X(>7`x{14T+S5f;THVgIGrD<9jQ+hK!7Z})j8fsPc7xes z%~l)lU|S8>%VE1FY<oj92EqpE<+RErk&`^tv&yJlN_OoM0IT>Fh1>VP6o}PC zFzx$6v_sho@dkh-W4hPw4_eE$PtZ)#g>m8VeIb+8dSl`^l28UkU0YO}CjjX+i0*H_S*E=ddHru4ad*0>o^>3jOYv_I@& z+94r!BSVGsul5ei8fj*~U~_GBQ1LlNDSu9RM9&?*t1yILctAkwFI9KVA#3V>cN58ox)h`4~knK3+K z7vo7;k4XWPkBsVri!obGU)TQ4pqgC4Pna7q-kR7WL`Nwuzd)DQwq;ZBAK7wh3i-r}{2NyBgvu z-jZbTTun`YO=?C_RpyU)4sPT%VA>UpC+TY{e-(gu!ek)cBjY!whmK(h-jRIy!;%3Y zA~<1CH%5r&2xuE_SC08!uTf)c@6x)Z|CYpg^7gHG<0eZ?Pp=06b^J7~d7lFEkSUVQ ziMcfKBqH?YlEhw+xc4URBS@HCcqd|%dKm9llD_{bR(!5B%Z?-o&F=U<4G*X+pR@yM z;Fof;Pp#zZc!a74vBGPH%uO$_Bi#Y5EACFnRf_5$M{CkQ@)+=^029BZp4H~&u8`=z zQI!w+0XRl)$nfm`FJpHC=SWdLaKCd+GUsO5U6@^VA-fzqoCf3=1tfsL$Qce{6ojCN z>w(65K!k88%N{pEHD=q>b`aSCZYmVGwjO)#-1ETlXe3 zgg16G;qv^>OVsdQEbD`r_-@34VUP;DigmZ9pB$t9WhIabjPIErek}g!a_u<%-oi~lRBrS z8t0gv?h7+>M<-^FPA0d~Zk;)uJLKJ%2zMQl!q%|BQlKw3Cs)J^wz{jX zOb$`ID6~E@o2z4s7_)J5a~HXg3Tt+*bek}WDigl=kq?t?-HQ@8hR1e2fMJoEaKUrS zu&P)XV58@-^IQM1cLv>-#0xK%<#7L*-S1c5ylxX^yDhTb7uued*Dwg%y{L11=Xc*? zTYM-aZsB1=X>`_vOKZ<&sZD2d`PH{c?@$>1+&d$~OC2wEbSi{~Qsx!$ZF{#VY@gn4 zUS79r_`f%8>Dh3uNCQjhAzZ0TghRz>?Upjwh&gJ8r#jBjf zvDn-FGCs^Niyr;Y`e5P8+5c1P&)jOZ>YVNF5KcM0tML`_6`lhHdg05?{F(DV72hnr zVgtu9C3&5j&n7MbX^*`pbgo6ab*?|D&c82Ri~6IU0S>%6y4h&!5E%yQKG2J;1_Wok zk_y*gT|BDmqHr1NRLi*60O2yE6DqtCaD>L9>s04L6lR*N-!ESn9CnC7M(lWXxD?HQ zG`@CztTunJ^Y8q%CdRn%gp0<8{&!xeLsiSa^h=J0G>j4(mPKFu34jIL$J#JO9rio*}wp$Hr$aE9PZL z^q0IT`TBp$nT{PddsUEAqVLUe)=V+(x_&|Yh6M}PE(on457eIy+pb*@ziz?8Ys~Wx z!w#1AFV@>Qd%nA6ToLQEZ-tb3;mvS3+2__kTNctz&*ir1+_Sj$%>M8-Gkt-{6OpLS zm)-(54gW-@tT{E!pIFg3S#$ACl}%WuJm+t~%J%cZXxZ?3>r8LGth40={nrVrKv~i` zRVeFCEHJdY&ju&iys+Lx=T!8ozdy{*oZYiQ(ka{7<5%CJZc_>3OBODkXF5TA>B0^7 z(#EnBwdQ)fr*-J!#}AFQ4o!9by(iv5f9K!dbiFJwv+4iOzgu;V+PL%YjMNKbk00ul z@nGjp6;Jnf?rvEX%^P6%@W5DRnZHm0m)fQjE%m3aW3T-4I-IGT8`?hKpRWLT6%htH z`s>{5ma4W!)_3la{T9;F5YKEXy~OW--{7+Ekl*t=+xkokefd7EzBy}xMgQxsGr6>%B#RKRJ4`jr7;))J(UBKqo~-Ne3?Fn4 zwMWSZ-C-cZKuk+av+%)0?E8uMPs4NNysqD>sa|3wd<@F-jOONCD)yW!zGJTmT?uEzB|7nn-^=p8i^A zyy=@=G5>w(i^JmUW`wbRwwXXf{NXuap9;VGnw}pV`arPM?ELWCTH#V%kA?4IT_7T< z3*+hMyR7t`V!n79YUsutkKJkQm)YQHo6iJqQqM!m%D=&hm+8GN9{>HE-aEqYzCX<9 zeJbc}&*;4;p7?G&@qqJOpV0Z%bcpw?`R|&4VnEb?YW`Kw{Er}RwsoYzH|KUU9zQQW z8$;^}oEPsqUz0Ud=qy`8gfa z;dkFn@xIIE!gi_U_ccm7tD}4S;Pc)WW#asVfNo zVIqB%yq$g5$78G2mbrYlCKFF4(!Vurr>hpu%Kz*$P)_6jZTs4I>{{cH6pu%PHnr)p56zH}QWmA~V`}SYw$t$$kyFVQN(Cm?Z^?k7K+^oa5W>#Co#W4mb)ByU zr!R=5_3&R5OJ5R8UmQzc7E50mOKaO+9!sx@r9Tl%UlmJV8A}^)^vPJ-{NJl%>GORQ zMo+0Ge0b}s4qOvUdkq&)8;LX?7D)MgELJDm9?SUM9!q~Q*6($S%Y*8haFdVSFqc{o zKHGL~c)sd3@Uhpc8l9CIGg_R1-jB>rrFv3cmU%So9N+o3^R_#6*xFRAmg?{PyKU#+ z)XTQaY##_q_4o8@y@g(m&<`~83Pm;jS1YX3wo0cLgtpaOYfSEpum9;dyE)mpE5EFJ z;l4!do*nc(OK*No0Mo3upR`6E5jzB-5uS(|=EBkAy3`uFccq zv0sJLIQ;%wEV-@MZ`;OJn&jW(nJbm}YBK$G&um?HCDYd>)7K``I<8+(wnEnVY*y&jtXq1)ceegz+%CYI=)Jt@pz3;lmZr{CMcsMYX%-FYk!3*qe4L?Z)c z)~*OMJHujV;aXq~ZHpxhSdw)?EDR;Lyi0n+{xGrHw~EqBW=ljBbE?teO~L|i5YopQ zTo=aeZWw*nGAC-=_mXAV`|Jx>NU3YYqF?yPZ*QDa+k|>76rD2B26;2Ov z3#%#nu!Ek%t{V(3=k6_Guhu~7w$#8E!|yL!vq}%m-xC^=$$xK1ekMii+!D{Kf;!b} zs){*U|IrrqEuB>2{^U%B&0H3K_e>@;)Bi>04XN1m|0XjL@2wkeAEd_~4hB7B2BS5t z)7?9F|0OxovPfuIbpO>X*-k%iD4)3p-kH0sbtlzJrKvK6yQb%n+4SqeE!%}+W^d@x z3c14KhgL0`-5T!m;cl4=>F|a)OneMWNce!23a+0@jore{Fx$-BRlH|$!dg~gZ^o~l z4Km>?>>;noU?K04W!<^HjW^lIwJY6gRji!wtVnF)^5i|`evgOOR$e|PqvUQT6NIr? z1JR1m-=g1?`ONO}(yA}EUwU7?|H~K|&fG&nq{CaW%{<6;zU{SJxQu&Hd}+XLHjGlx zTB9y$2jF;9zQ zu|K-}nX~6{*(apZyGH}oL?K;Q44cC&uk|Aj>w0UBjvo>)Cq5X?8f7B{zQ7wlJ8m$= zyOM9qm?$Z(aZ^4!YmY3@)>)u!q%MW=2YSa;k>0N1&ZJX?ok%QosS_I`7S|UsM~3;q zi-QQdLrdM0HcdVT9^DXM&lNwuVPfgh4UZG@Xrm03Srt6hLQ-*xKrE4@gA3cJ*!ycw(1d#&D`SUUR_|De#@lT`l~THw%2 zSEh$ZhcivIjHXpQT?PvTt^3WaO4t`oCDKR5j)}eLC9Q{3&x@|F*fOgtKC$y` z!lKWV(D#YBT66BqFTwYOs${#&rRjXSE0{x^ztDTBy7+CFS|@G7Zn&!NsodQ-OgMI< zNhVfyd^|lCoLqETx6z|oF0spEu}evriEj6~F#~JjU7ZEWf}@@PEU-7{^h5F3AEjp9 z_MB@V?Of`Sc>KA4rM}oSy&#`(hd2h0+%c_vDW z3~$SJT6dwp$&7*SmEslVurxAtD#9+=;s4TJ6f6+hKh+;*IeU0D83Z8^$aU#^WpeGmVq_n^5l?>#RL#47WWFAn&^ z^!#jpSlrDU;nci0MW5=@i|_q`cia7+@twF-s+x*lluBLV+V92g%c7C`y>%W;WBP3> z{!}XVbjomrc&cxHZ_=`*FPRk{>_X9o$Ewgc*?KnJ`RZ7hu(pX|{`-U>3aXNmTC30N zFK`Ooj1*a>PCtg8W=6wsZVuBUDty-r1|~%d6t6U$T|lC_2`^axD%aaCi_Z zpy8dTgLJ|Pu^Umipmv9mN`>XS#|p*WyP`AFRsu21d;SI#2Sdam;hD@~@!0iV!p_)~ zSm>Q=GBF%m9=k7C_h^^(?_6+WkI0{l^;uV`Gu~1iW>>hehPWOUE*ep^Dva5RqJ0Pr z1+6BA09(qj^H9*+v1dp29JqTbx`{nb32Sed>-*D}^e2a7KQYivGz>`oKX(4DEB5Nx zzAlP=vA+iE?&oo zJQKUZ6OHRn_;G_T6@F<_cR4UCqP(Wy?<+i0}>Wt42{yt{9Rwn zc1PnXmbR7)gu3ltH;`JB2~gJeFGF+tZOBY1elnLV9ZV#l8??Y7>TJ=M;96vBcouP>f3opk#1oH&uZ0fWZMcq&o&SGsOAz1aB)z;ALV=j) zrsxAriTIumhuU_Jg(N!__imT&FR@|-7BGZ*o2TMZ8u8oJ?& z(?KW)US&(Cp*qV={v#dMDh^FnSFkWFIoxVy{&l>M19#4e&`Vc!Ozx?%yH#xc_$oJoT@3%(ROb;peI_jSaOXm2*mNv8XnE$I^a)|8qF5Wo)4gNV zvosn{b#-PVnnh~RpUXo(i<04s0@l~swX?8RDlDnh6CS*VqlZ$N9`94GPW9DX>qGlA z^yInfyF#V9RfoA-O}LJSDi{8?V5zfvnL&G@=_yxu*4#ThU-iX?X{s&TZtb#IZP}|k z|8CIvcgwZQJo05}ou?*V7>oXza^cLxex2%DCuW|0&rYTPnoKWAhl-L`NSdAkl}+?6 z4X-ZrCmNj90=2&S12rwC1q0MMCY_ir50)7&HnD)#pkU%zx%_&6DN4apFKI%&uZGm@Pe*% zwace{!@THT@BBOSnwNeu_Tq-I%F^_U8=5br&DY&e6JvZ>ofFN4T zL{)jQtM3eJ%vtSG+*AV=3CuTA{qIcP+!g;qSF+wIW|1)*GJS12KAw)>7*45hTN`kF z9!=z237uaa=|1C@q(vXTs4{m3h3DK*U>=i+_tzCdZ#m-lfhwR=zsISc^4vY&|3faA zjx~}Z5kBXoUpcnYs+G=Ce8`CM$d4wGG)c*RHp6+L~ zIcXNe^ZIpOdcI#2^K~&bBJ?e7nb<0HE3{(6k86T8+zFFr=gm_DeeNU1280rf$2WHc zaD8#nqiyE?9C|&%azN?mSx4!3eA!W*lRX~a5tvbn*`2t#+%WUmUWQFi!U@mM3C>@145-Fmw6<9+KXCzI#1`oU&q zpLt^w?ntpVJ7a3MvUhyIj3=>9=5A#ralPeP88kYzYEQ6o}JZ-q#E-%@HQ9&ulYahAFPmp})(??n=F2e)ode>5+G8dxx2hE91u~BMbMtNcOwPTbnj( zdP~CW#_beixcX)i?1&qqy23Ke(YtqujxfGohgW~P^S~XCZ>l8Jfvly;k{+o;P1)&j z?G$fy#4SAJgr@`VbnkgZtKK0p+B=0Ke!Xy zW+9f*nJF~^QdKc*sD5Q5&b}MIZB1b4YQoD6*+OlW3#A#B6^~+na z{U7&@-mWc7APx(D&^m9KsV>Hsd0WsE)}_?DM?ACquZDCx$*q|*fB9_J)PWo(G#uOI zPSY9b)}=G?piozISqhv8rIt}viSP1aELMpp!tC8m!_48(#pcV%yj7voiMheL1?3?) zp|HXfig>y+K({;j+K!NSyckn67Pz1~hm349?E&Ze_(ROxqRpaLr(Jlvj!|QePQJnT z(X4R;`z2oIa`f8d9;pSPZ%xDx?>#tHOdaTi7)UIi9VGm&8NKt9sx8g)W1G)t?n=Ht zTol6fG_22P&N(6Toi}0ZQ!2e#$E-tMG$wy_d|S?jZ}J7FH=c{6S>(O(fxed_>8|jy zNa_R4>JUxGtd)?G2;n;-ingWDM-DpS+nD6T{k>#_TI_jLPjaYEsn}-GyF0;&%?sDT z`KKkKcMoX<=on3fH8=jh|EmtfqOxqhSs7Jua9%9Rx)hc%hZC5`tc@jHg=K7DJ}&?K zSX9L_7HOPBOEX2e^X>u)gD51=nB&+t|dB4di!SsbNd;wy?2)-a+>JBxD718_&zg3fnhg$42Dj*ny1|49_O4LgJBka|cA^(^dgSw)(Dy3#V|G_@#L{b&$EN(;U3p-sz#q)*sXR6# ze=p^M^?j5FmiOb|=KR=Sc?2FHPFObJzPM8P;5as3ui_2af26o!V^ld{`;GkHLcHF@ ze{7ZbkHzEoza@X)!hdYMmH$|JJO8(m?_K=I;)(pn`g{1lHM`%(e{6q<|5*AkwcCh~ z>6R6&pTd8vozDMl;%tK?uC*J1Nwa$ZReuEG4JU?^EK2C7i?x=3eDE9K!}Sv4umg=J(a&hIyRA zBIb7?A6H`)TiC|oUG4ugf3c41u)LPPyNN@Mzu3kWmad`qHTGXiFSf9Oh3nY4J6_LD z%-zUNEMl&}zMJI7>=)$6%FXicVLOgu?H2LDTwQ$jl*SU)Zx&g>zcgl|?9Nt?#tYYpi{$Uvl`$#wVhXrh6>zm@YFFE&!AC|u*ej$CI z_>IVSzxZJtC$TiikJrifUG`%BLH1(tA$ILYFOFd4VRnTywy@n~*Z#IY$}Vi-IxKvj zT?aTG*I@Z4>KV3wM$UoC?Frkl{43ir_ar$7v11)MnEx$5u=+GV4ki~XnEyRL0{_5| zqVuZFkHBa6fo04cLeI0x2}{qB6Vfk`b0|4~R<2l?mLKzfk^eApz%k7IRer4E(BaDY zZ}egnr?B)7dSB147wHX*k%^^5EE+ySdEyurlVXHT96FM|ls{~C#iA)JcGEp7jjOTL zLk{M9<$nV|u!8xl{2`6`H>zjr$&d9#@?&m&dXKVyvHX~Kjh@0n&hMkyzg+&nP2>;U zT>dxNw*{ZD;u^IMo31g1WBhF&i`HPyHKC0)*MN~@9k-+37|#7^jCSHfiA)?1bdE>I zk?Wiu#R{$o4Cf{`or@!HCf~VN!wODg9gA;qJdR`AIT#&p+wSCG3+vb{#G=ewZQnzz zu)b$3n!wg;*>-|s)ZtZFR%aWSRW}FUCNGvTr%p~{LmkYmavY9fQ5|byPTd)LJKNNi z3RcvCDJ&`T{5!}{HmfnOESlKB!FSp(re!RP)g(5>BKI!)k0T!=I-A(Sp%dk!tAa(c z8`#3kyD`YZn!FQOexGCC~0~SBX=aBx8{AD^$k{`1lksr&a`u$$pD&l|*Y+!T- zJIN}Yl<$%svkf+430v5}!Bgn{mTlO;aV+1cZS zBbfgY8?cN`jDAe+Y4&3ob3b<+)*g4P*jJwrCoKMk4lF%M-s$o^WgFIh#}2GMO_nk$ z|DIogf8ZCk+wz|&-!qQI=s9t~I%bt&_670-r)|R~hO%w{g}utQ^iRiP^+o45ns^u$ zlx;Z{k5*&NyX+PgQ}Jl{Y%+S|Q5DG9Ha$VT*WF#|CE3XV*65V_idk0<+u4qwEFz z!6H^)Ne)(aBIiQ(50itrUCF`PZsc5K`yS+AV^4B0dM!Csa`%o$tFW|BJZfNm-*_~5 zvF#)AsEpOu#iL0q?I-^wj@zGnY~q^01Na+wAb&5#gZPWNVmw-hg+s*kGRGYzKUT4g z`NQSEoZUyrk1d?W;wZnaaQqwih1oaq>l5t90_Kk<2V2LIgT>>>S!4V0j<|e!2RH*(=n?&#>hqoM2N$1+xG{J`op?7D$ppWz4Qt`$G5UnhPyvhRBF!^Vx`7x;Pc8|O!ze^|i@ z%-$;hXQgozi?_*-)i28L+E=+ADIuGPgquphI} zk&lHJW#Wt?P`g)0|@Ks!xh}K|fgGAKE+F&9Yxr1Fx5>X9n8z!P@EE#`S{2IL*C8BX` zqt$Do=EjL=6brdTRL2%(zQLd6iKv7PoWT5wM3lXgoXr!_Dy*)QA1g!h-{tr%<;M!v z0=J?U^IOx~V8^!fVl_|iH`%uxy;$F#9IU>QoV&^2f&JL@5%d~ncP0lLuO{an_U&Rj z7I(EB+q>ERE%J9KAF~DV!NwlqbFcXCB|d?#6;CYV@O|vvTRgFe>jL+Y|9;$8e#{*p zp4i5bNj!*NZ0dlS#^Ry$ew%-X(TmaH{Q3_4IE*!{VhfvCI9jT zF8RkKJbQ@8v59CBTct#ldr-bNC!#UTV-u@5_z=ETe$1aBKQ=M%$`E;55)&V+amu_am6OKu%vr!_($S^V_2&2JESo? z#V#yj@pN&=CWf|1`waC78)vFdm^+J}pEwRnSoj!wv5DEAlKXM?VjCM+Ih(zYv2Qhd zv4)eFH@G(UGjeeZi|4WjTR8M{{-38jF*@IQj3u8#_jcv?6Dc_Ck!uIF*f!WXVV;w(kq90p0j=3-J z<0<=Zksn)F53I}oTgTtZZ_Is(-&n?JtmE+S=>3ZG1*;RzM=agpe0Q2co9xB*x7ds2`;^lkq;VA%@25X-lKwx+k0aQ`)tLXbxP_d=kSN}V-csYh1uu%{Uh-ToU$K_IE6LL{fWGv zvKzBMS0Ay6gD@|cmOLy!&HlgIjx{X&UipOdAKCpka@y?1;`8!j`A_oyon6!NWA-oNiB-(~Lwx_r zF3kRoT^RkHUH`;?unSAr2>d5MUld;)#oUYR!YZ0`5#>_JsDy<~GMc~!PGhq>8JYT| zUppC%VWmGAHLA|Qv9=-^wL*Fmdb~YtZAwqzX6(Z@wy`mkj7HLq-zFK=u=t8( zv<}-?$k@Ied6;`8dDt2uuUo$T$ivz}?8a;{sSjViL->iM!;(=0^M@y+!CuEh#KfBhG{{#HT@&}Vq1&bfzC)P2ufIb|- z{7K@56>MR2vhrETe;mWyN5~C4RU8)4gJsO0#vZJqLFhWK$iw2t$iwp4>JQe=Nk+vD z$Ujd#z$UK4-1*93ki8eM5AzqY56hTY%uXy~8`og|BKBb!hnConWo+XFHZB#f4b|Vv z#S7b4up5h4vU{ohIEuBa*oUR-*oVdI=~>1v9LMSn?8EYn;=2*M$Hf7&pH=U%dJ}mY z)Bgqfv2`2$*!VL2IdZ>39_A*#*@h_H4zj zw)~iThCNutk*)22R({Mr&tI&(Ag@{No*BT-ecImN6LE)`bJXTW8nVme>Hgrq`b%A zkC`J=SUxD_JqAAy76+^s#R0R2h{LY*VHL|3%$UOBVdU?|PF#iA!`XxFBiQpAdX5wa zEaMt%jHdLZO20ul?9RS7DhDhbori@?#70BjjBmf8d4Uhoy_ie;s{Q@x%JX>QP8v z%AWlkhikBSIeV~qh4}2xpDV=&YdDQfEF9qYn*4#EkssUFk$<3ayMcVH;ySF|DE~q1 z8=Lq?51nXGC7Pc{a zC;yJ57pqvt7S=F7N*`7*dzW&<3TEFx4wkTmb<8*T`9|f0MXX{Co7l$eH|aTw9;{#) zn^?!((d@-C=I>VDu#DL^*^eb`V;%GN&~pquSi~Auv4t(neT&`4%8#qDe6Q_Txli0m z^4%{#7AD0Ln^-uGecxsmR=*>jn16trH#;87n19gq0P7F2_bu{0BF@;v3C#b1y~oq@ zBj*j)ruc#NpE{4cq)TPHu3o{}GHm|5kx z--$=y)AVAoEgo;T{~6_r*=PBURcwaz^W?pQ9e*M(@CCx#xPJFhE>-Y30YS2T*1MO{%H>+5$#nfKGbL0445 z++bHUfz2gdQT79l+qf%Q6`1Ra8iC8ZqQMXH7t2`Qq$`@lHs(I$_|3bbF)SJX)WrO@ zUD42o>A@0~^YmhVdwR#{!4a&ylKq(9f&G}>iTx+pzcc%>z6<+L#$DNu(QC-TvKdC1 zkFWnBSBAr^vq-`?2s^_G5N$_J5Szeb|q=ec6v?96VLru!PP1$j8S1?7{K@ z>^V*T1KESwgTx=}2P?0NI_i66Fc=q$&-g?wxrFF#h^D*wmG$5E_d6OcRY?^`EBH3ZWVcF zlYQ;V}7-K?@%AHjjh0U^6wn=@m=I&6W3wmMD_7pcD!4C#N2ztBcyTUJo3uQ z6C3XpKg_*P{Lbg+`^7Kt1IqIP<@iDNWAQ`cjrk8N&kG%grNEPvC+1I9o)_^8S7G%d z;)!h>tdjRp@x1c<-bI}bLGeEdE$w!3&iVEalBBxuzZnt zVRW&0UB(}*VD%F5!u+M;b-8?4#^&YZVBrdKuAm=RVf89{G5RFGKH4I3@omRp1uIzm4u7$V(Ptd@06Q`FUHUM3kUlJ9;abPx7*?@~*@u+R zb>v_L3lA$FY+&ws$2a+fb)3L9PGkOi>f;Uk!*Q%)bfe>N6x&$G+#}*QPCk~ff)iNB z>}UCht1$a0Kd^v)61| z7wN+iMnB;{<}iCZeYgrs*uV-7e#!Az#s*Ge3v*wl@2C97A~vy!Lti29G5%v2r?7$f z33mRB|5(BnHgWi?%IoL+$I>tOkBwjQ{|<7V;6E0zg(V#R8o5}-3a-N{7QRmYujI!n zwz2+e@%jck*NGR_aT?oLypx=##0%>f-DNwDV)3`)g}L8}SA$+GVGSn&pO*id_Wx0S ztYIAsZTasO9~{NTGqz*xS=;ZS2Md^eo}F02cG!+1-%=ibVkg#d8rxXBm;EoW6D!!p zCXU=k|DWZ@GEQRyi}%xy;}}h|bCMn`VhhJH{}MfC$~IElF^?R|!PIEM9j+WQQ86X|H^A^s=RQ3WeFg$*2h zSlqkPQ5nNz@JXy=u1T*+S7g-sm(1v|E<7t1@c6AL@B^OyAR%1$io#!hU$hMiB4gC(r(E>76O?625e z;4c=ifzcl1{MvDQl7sCLa*W9f#R&f%eL&*QFxZ)T#v5C>4w*OANu!Ie)W96`PlzEzdEMe*Jv}*c6VhzW!{vP!N8#w$Y$72QCIElq_I-15ZcHX7GSABdz8Yi%g;oW-lKK@`4t60M+ zEPRlC)9n5by%>F1xnc{mf1!6wd0_1%eqrTg^8U*HkEEj_7EV!4nExm{15ahg-|#eg zuvigSET8Ut`MbEB!G5ftsr;~c7XANV=f~*B?Ai2Vel`97bo@E=W93}>v2h;#FS7Fj z`mt~!{aCq(er#0fkGx~Mgnley7)wyYHa5^i)~JO=j4pLPVjf$Vy-a2$pdSD>#l-oWdHK`W)497#p|>o45vBIEmR$C^sx%Aw@oxv4k}&V-qVFb&-#G ztYHc3Sj7f5u!(JKVJ_|66BaRABi@+BI_9v2dCX?$zmk3|ev*ESuBIQ$Yw5>&&H3F; zK8|1u$1rydy;wr?#kFDS!#b|P>}Tk~0uJ?(hh?nc1U511qwiXBv4T~s;}qtv<43>a zaTQjujt!i~78VBBalQJEMQmaj2j|I$CCuHRe6Wb^upNi9j>igSZ&V&w!0dc_a1?7; z!zQl7Hs;rpf1LkVzy_8vjSQ`z-$#(vM}V-~`q&TEq?#icENtL-T#eZ;@E`LyI7l9rFn=?BSi|gM+ixKco7f2Hy8On# zG_j1uTg3w#nA?yaSjOya@?!zBOXb5NmavLtY+@C2%h-)&Y+xOm*v1y-HzGIe$LNdp zV-~|$n>-daCKsz%#xVA#hPfQMSi%O@u!&(TPX2b~y4-PC#VW4DM%cbW`b)NB{>!#w z2@9Lpk87}rZOnZ|d2C7#*07D!n4jS9W{$>YEac<8c(*SjWm&)rXbx-N8<5;{--u z6SpDqaTQjvflVCTLjJFd2i9>C+nC#u-fyUHSi@#W->E)rC5>V1Q1&kM1&bKQ5VdeM z)*Ir2g>UkI8+P8!f2`iae=L5B|J&ld{KxEf_>WB-d4=r{@E@Bv9n#nUX+K2tv#@r#ck7Udnk#E0@wk`V)$(T37 zp4Vrh3g$;M(NsvkA=4TA)_7wkT74LQkIrc0%5MRl;lufZRm>j8e{5sn_2j>W|CoI% z|FQTE{vW~56ZwzT_wXN^@8|!K%4LlI*gBd2qvCK1{{zq9KUUA;{~PT8IRCMB4*xNC zA^+b=pdSHs+4D{S*Ah@*4hQ{Yw77i9J{IA6qs42VTSf zW8@p>KUO}=e{A2(|6}R9h5wlQ3jeWs2med_{TlzVgl(+h$Z_;w4I4O(&9C$S&EokD z{$l~7w>Tb0v5a-BV&-_qV+or$fu%e7|5nF+lmFPj1~%{J{|VCf@EG5;X{ zv56z^qPNL^Y~wWMzemoAq=)LJk&wN)DDDBj>&H{hS=kJx&f*TjadY_FwQ9qbK-_Rm{I%`bqM!_&f5k@<;MN zAP&!vkELhH$HEKbe~=tp6F5yiM*k%LL*jrn%tzhPG)5+67e8z}j$}%aDJVIN0NitH;{u(T!*Ej zyE|h(%g1y_Yd%K)@!g)q=s%%58u>V$*d5idfzw!exA>oJ`x)%S;#urm&AyM5kNLC7 z$I?0MJck}EVfI{hVgs}1%6}d^v3Nc^F}i@A=gEg*tZ4B<@y8bC&Q~rMi9c4V;*W)k z#q9!eE){=_E*F1nUn%|<+WtxL$NZdB73HdLj?+$vg^>unf`rGtgCjA|H10SFlYY&S1 z<@Deh%s(XVSZj*=75w|2xMK^avG$0#e}aAA7kAA5P~6wxkHj5oQ{s-rpNRXFj{m8+ zWBxI559yzY`&In-xwvEHadF2s4t|nc6XMI5{e`$=;g{n6Dd}JFKk(Q5$HH&;e>Hti z@*kt8_>bk^^Z(P*f8;;5u!Z$D|JTyG6!nuHK$#@CI?~?}^Ho9q5TBv4y!C*=fzEF)U_#JPRuC`90ClI6D^f7+Xf} z!k%ac8X_ z${*60xmDbT#0zUU5z=9Jb#sZecs-x3V3Z7{)Re zw-!gNV-s_)5XUdGZx?aI#%|(>#n;&W75VnE9i#nh$JT-3J3-GuN#=8hHjyQFa(vn6qFNaHBxjuUsRV&O~|F`VNF)UX2kJ0J;zgHZvf+d{7>>2#O&vCdK+h_70 z>u2%*es+CKevDSjk3}4ublf@gV(VObv2h-~-)8Um^kU%xda->Gz2BkFLKzioU;~?& zd4Sy)iyPLkh7Ft!+b@j>o|@1FOdI3X&lGm&E)@xpE!zzTgbOb`Ts7iSi$na zEcG^p4a~nN{}J+I_9*f(kHb+iYG4)HNB2hS zuyl;=F>@S_wH@2I4x6Q3W2lYoKF)T`9&bA~u#m9-ZM~X_$*A_uUh_AMNq<*wG?Fy- z9cx&7cdz#loNAM$L^nr0~UWS4p@7fd~E%K`~~;~`Pjy3jDAJ_ zLiXV})-YPcu3wXnx!;hFHO#Ef&L_#oDo$YgkK(+6_&*~)n0;291D~_qoSizZ!u<2L zhcpf@mj09YV;v_$`UUY{!af|s;-AGI>o{btPXo)?#0hL+w3L1v!OAqhu!_@I!-Ba% zbzF@NY+@6KHgY^xu#Hm~{Z;)pcc}C?`LXhM<%q?9D90Q*SjFr=l_R#XupD1hj+phW zfi@N`M>w*AehhPt+Bl5`OEnfZA>UU|$FUK#&$=RA5tl>IrZbQy1SjyU35(UFF9T zj%?39tYI6cvA&zQztZsqamNBiJ1Flx#2s6EiaVC~689bD#}ejWEAH6XTikbI-#+4w zRcv5(Uvb}AoJYhRt2l}I{ltBk92~>q{^E}11I7JSjoB5CRv4Jfd+>^g=;6G;HEB{{PVG-Ln9@6il z_qC44QOv!cUd(@x-o2$iL@$;3 zaU5$Oq4#y-a|*p!!8#T{O7DLBz!H{Dr5D?n-Cw@b_={C+U=0Tkpr^uL%;6-~Fn1vT zaSU^(D{rjg&_V1wLwREvr?7?jgXuq0d1L-8<&D{oDeoe^Sj8%?!`#P}_aXejHJCq} z|5(70Lv6E`_JP)ma%~? z96XYq^ZAbroW%SE{2wLfLjGeLn^?Mt|8Hp_VZ=HJM#i}{aboWurZjw1gG z_FxGou#DNG*@vsJiVcj`u;)$We3CubzM32?eVRSTNMFMqEZxW+tc{u!b!x-Kso}Q?3)r1B+jk9}9QL|7K}ijU{Yh8;9S5Uz0!Z>&g$C-%x(X z(|@P(!`fZS56cbZ_f~qpsr&-(R({yT;tBNJqx`UWukw2vKOazjSj8~MGy7ffTIINh z#0zr|ix;+=;`Mg>9}zDsPKg&*9uu#3koybq!ss{Rg=GwLL|Zt9#V5rJ8#weX@}3qi ztatUBAHn`izxfgNclVngfj#}5Ii=;ke)A*P;nOWuEH3LeKZ2f(`^}GFcdp<32zD&* zH&#f!S$oA;X^!H<>w=10iCWxx3m z^lsH}egtmQZwx!R+xD9u!R}Y|n;*fB?fT7+klwz(Gl#YQ%6{`B$l0OawTJ$l`^}HQ z;ePWY=y_GY`4Qyo(jQduhrRia#eMmYjo0!2B**Q~e=Hox|G-1|e=@rc z<3AP-=Ra0T{Qn5M-pqe&y@mf+IG+Ef*#1`jV-=&1@_!ZovGPv-hxEJnf2#WNZvJDX z%zupD$N$st{rtzm2l$WW5Awev{UQEi11GWdVg8?P`xyT*I*I>S$DuRiJDL9&ox*=C ze3buZs`t1W%h(F(Q~7@uJ5J+2<|_Qh1{OX>-s$|u${G9*Jd^()xBqPZV{tYAv2p?b z&&G@RkM)cBzZx&$f8eG3$HHa&KZjkH^B;?A_>bjJ@&8=Bn*W%q@gJL?;s1H!c^&_; zc|HFze*^!|$ItQ~i#PEt(Ye{9~yf6RS}{}-wU6a2^K*Z7aQ2LCVO&%OM| z^0)bqxd-`Q<$2PXH{4oD7rmx9=EPapvSa^j0m&pGp|FQUe{$I-PAMhV5kMSS# zkMsXB_F)N2E&gL0qsz(vh5VTPCB4|jcG&&|y;n$M4a>ix7n@l81pb;{%sxrZ8u^|g z2P?m$7t2r6dnLWUrx&Y#pck{xi2GIcKPT?kd|uo!`m?xyQXHnm9jkv4cdY+a+&{(N zzll4R|1R!Wd{Nx5RxhIg{rTdV9MGRH?W<_{PdmPEKz}~{*#UiK@~=0bKc9UI2lVID z>$_^}u(-j1{(Sit59rUQXTt&g`S#<;HRNFp+c=HcjRy4R_?o$;F{@{_VhjtnbKwZ0yAU&no9({$ul1{Kwob{Qn$%yYe4fyYV0E zd-4DC(j)xG=Ii*6Z5+9YzWw-*ZJfsJ0sQ}h<8T~{2lD@BJc$38JDC50MgHF+-Z+Bg zL&?GR;pBwvN0L*g7pqtuWe=9$z@A&#|3>y;{wVf@^wH$pWzD--QndIyIj08c#Av zn6UJY`~7Kozw3Ty`ksAf{(blRfP6l5zcc&D{m$^2`~4a7SYi1K_ZLfF8UMFDzBZq= z%zRe9G5)OUzBQi}FC-sg!PimdpR>+_BSJ4L9Aw7a^YUKEi_4ibjR+}=3y%oxFPOi` z2+wjHFDecb=3jKYm^iF1J|bj{mKYH_62~J(_!+8vqY+`4rI8~-;U(jvMua}bqeplb zn)zc!gigj|M|fr|Zu5xH^osEbBRuO>=VbF)oM!&3>Wj^1G~Ij_W}E*S=a|o0+X%ns zpdLoAyMEq?(8Y{Z=9W|!i_47gdk)4|cO5Hhx{l?|TsJ8Gmab!N>k)pxLH*l|@cRww zVTrZvNBI2)dG8?3TjsHwH73mOG$ORTE&k3ULb>5C`rL3=eSXI}d+IZjz2w7qAANq; zeaTA0ef62e1NHeo>N`lEnH;RoEFG%P?>T?Cx>!C+pIJFmpHumqqi+o7>D&8`tNO;| zYH?V-RveaY66XWsH;cpEE#fe`O`H$KtBJ$Ho#K2X|9iz@dY}F?+^_#1%l|=rWa%M& zWcgun8a^Vw67gZ*&xzzO(PXjHAdx9EE;{S<(OA?U9=ug|6?#X^ldi`DLQe{DbS4kG$K+ z^(#bv55f7>BA-=syk-=-Sz0UdyH@gFI|?m7af8Tb7S+LiW*dn=tY4d2m$hAuGqVVUwl2dV)@8(&-{iqEGY+zTXyiG)@xvm| z>E*+eDck=res~lr%y&m&h#B*LihG2^U~{BEoMvd#gPuF~H{tXI`v z=9sX=mPOUcGILj}p9SU?6Ym=Jv&I3Y*NU^adT$V)*-ge-z1jE@&fg_It9Ogf@;%~@ z@J@q!#b=F!%0|mkQa%Iv%ksbVw{iTO{*IE@3;N4?qQ9)XtiPjO z|GNINz>GC^jB)*&##v{|cXF#158@vdW)g%9mt zq5jx)U#g!OhZtq*pKje@^)vcS z{j9TNhU@=OKm8EJb9w8qFjKw@j`UpK`iqS8ca3#NjPzXI`Dmo)@{WCtRnu(OjUMT_ zym9ukI(4My^75NC(sOxn=8p7S-a0KKJ(qXBZKUV&#^;UnTwec{9O=2d^Gl8NTwZ=l zkMvyL`DI3WE^ohbBR!W_4+mLXcBJR>@>+hR=kn@c%7pFn#9wiw=knsMJkoP{*SC-K zjNSNZBR!Y5KdX=QT;95CjPzXIey%yvb9wVP%*tBoUt0XXsh?pz^)I7db~0m)l@9gi zJ| zu$O+UVw`;}?X4fH8sA4hn6lPzUwN)3-hSq@%3dbSSlZuyt}gBY>SuDG{bzcR{a?d= z9BThrIo$p?j=RnOt9>{^KUg^0{U3qbJV+* zxaZ1;(fRUWksWJ`$0{=pGk1af|K^x|OfOgOI`Y3tz06&$UKXxV@4Dh%YyX+Q-hMLe zv;XT^_h$Rg=vMp4@@@A2@9Mc-{Vd(3epc^Me}{Pe>Syjj^)ozV{`$^8Vm|A2@mY9M z{0*FcT72f75ubTB|3hC{V(H)Fv&?uy^PUx-36sY0bNaiH{8?s_=x^irW&Pb)UtZN; z=3moamfq6eP1N(D{<8du{xbede+$Mx*I(wo)L#}e{oPdFtTg=2d?r7bznSA7t;>vq zEdFHO&BYtGE;FVq{%qYXdl^X2$o#7M)i`Ff zr+KUC7ZcW*UtOFoeOyBvrhgTO<-9n1iQgd(bDN37%I4ziEuSsLVSX!dSlLG3_mTH5 z`p)vM`rbI+P2cx*es_ImZV!EL9Czvaey-m~-&x=wGv@Xee_wrPo&${b6XyWu_ZNr7 zgT-NVs5m7aCJu{-i^Gh$1Fd(2IE;?8f2^?mAos~p_Ji@!_JbMo2ivb>><0_S*$)=k zafo?k`@!@?`@xKbL&ZPIez3%Fn7U8VM@DDrBWr9rT)eaNkwTRi`9Rm_?N1m@nz~~g)K)pf4TZu<{&fXju!U{^)qA2aHaZ>5uX+2 zu2O%)tJQz3arUx!jrv)*PW{KZuWnL53pbn3aEo=z>Sh-Ux2ua8qvKs)(;pV@)*sdw zP7wcL{bBhr{bBsL{+y_er}c*!tBvCUeP-?%aZXa-zr|sZ;bigH$^5h8u)?NO><^2~ zJtrTQ8J%jJUCceN&#bVy$2d!@y{ylyysFQq@il#B;dOmx%9hiu|Asy@Kd8?vv-u43 z-;@u-yYgZ5ANibV-Y4>5mHiB#%I7Te|0^HHU&x1rFU2{VU&)90ujSJ)lg~N&@~eDU z{!Kni*-~+S{?XoFB>n=U!vNC-NBh~OO1S}={swG*Y|7Lq3;FUFS=mtEncqm?uh&=hvc`<1jrIKo^V!3U z3BxAxyiuMkGRHpVnX$n3K6$ai5(il*$m=Hgv&68O`k3EbeK#B5LVZlx&+?Y`;TCyr zt*^{=>J#(ZSpQb_?kEmxJK1OEi`HjhXL)3clWn4DiIA;69j*mCa z8XNDVj88EBFZ;}H*4TIlWp;8N*&pxIMFNyc4`OH6NK2tWmY`w?LXYL7oXUgam<4@{4 z)uyC^B<`H9qWIj zeuj_L&zMc`x}HT=K2bkwpQ`^q&VQkP*1l9f>tCz?J#jPjGykjlS^h))sW^YCpOyK> zgoM%jV?xXO#uphA%1jp>69!pXY)r^~Apgb3gdUceGFf6wX#Y^$5o7!e$$A`OdDNJY z|44mf$An%M$Bpr<%kji9q2pt9O&SxbtZ|rO@)*y$j% z9-~Ha=Z^8*-u10xJhwMKZ;a>m##b8SxxM>~U97D-#&dhuuRX?dd+V~q{DxyZw-H`uu)uP5#q6r(QopMtjA8~SYzRLd5)A1i_HIFK2v5a|EX`ITo=arJH>Sz zWQn=a=COyl`Nn!y>>Y<}9-|*DvM~QxpSPC>GuHoatoQE7XThJl6Ak z^Vr*P5%ZZWYW{fZFJV4&BgT53Z~c*DJmamJ1HJYPNI$9kS`z2>o= z=Nq3WABHJoJ9_x9&>t>DhJYPO*jrBaAYs-JKyjWsx-LanMTW^E0p683Z(OA#( z<;R5a#$!FtH;-i|9AwJeH1RjlA4Y|-p67GZv7YCP!wR#_)z9J<>YwiXmg;AL8RM93ov-D$U^|P>x`Wfx2{@LSwv4{uW-Se#X7(XYq3Nx2pe2^|Me_KdV=(zfC^Zs-KnX)z9b# z_0Myj6-GCzpB3hpblj(YCd`<>N&QQy|7P{G#9>CasDEksvX8}E)xV7Kf2zOXZR%%@ zO*!#yS3mPL^)qF(tn2PjKf|5sXMxSjIlfE%tg@fkJ?1a(_+IlFKWIL~!{)ERf0^I# z5&ddd*RK`%sD3eeOuv{su3sw|e^S3#c}l-ne_Fp*mfwJWvCfpmXY{LGzN|2LUcXpP z^lKG;e_6knyrN$$y{2EQs^bm)VwJiL)!r-lHS0=5gMmV|;=*9pX$Bhxtk3 zFk!~Z)N!F>edE){g&yYOaelW=zSGBr_6^j@ZWd>a``^2~quJK^hjr#yhbbHH_Abq} z&W5gUvkp`CGMQ%`)|Rx+M%G!%I?OF&9mdOAXJhLvKhF0ti@V~uFvKeJn>fFcIIJ;i z9Iq@+!Fg60wT}zKtg*1ExU1+NQ-;mty{dc|t)^~P*tEHMtLq=D>~9>eVSEe6EHeLB zB>X>0S>7Kat~GyF}Sjbj!%^<^D-vbL@`+sLy+ z9ESD9X&iHyl?}|_*1QePXK7>ex044uncK{KmYFf$Tz|HA9jgtu5QoJr#o56;_OZ&a zqdK=Tp9NM~+TMKTb}@e^=l3w5*Kmh@#)alx#b=4}(c{7Zvt!43HZI@e+;1$F-EWMK9~WA7x1VghtG#&IxG>l_ zu8i~S-28LhPb{40eqxR7d#dAn^I7Kr;|t`|#S7)b{6+FP5zr0^G&gdm^SbEv`0ph%3obl`Cv;KzhlKF32m!)^iXW>7_548RV=Cl5Z`3*m} z?m_bS+CH+L*~f$Vjd5l_`g6zfPyXDoHtf&cA@cZDe1<>7XFA{b&~Ydi93QI8FEl<3 zv&zOh=R?!@(8nUf;o>YhK6Em_#CYFRppIy~?h zeDT?Gg1-NCywB8&lOON%`Qol+ofFluu5o7T8E2ux_({e$7$16AW6C<)Pj($EtZrmo zrffMyotufnjDyT~igT)Y>|tpeaad#AV;;L1Z#UlmGl{dkew}8W9rTN}9rc&_ef5{o z0rul`aZ2`s`2+0-ql4_n8R8sle#1k|XZcY3ai+YE&|el$5&tZGJ6n8K*vtBP;xKo< ze9yKndl+A!@625&-*e1ok-1CVKP+73{;8;s1?I1_4(n`u=Rm#BIIB0yi!rsR5%x2F9oo7c?9&?&QwPCCHjF%GUYIQ6x4&xQXxki2~io@bc@?mXd z`Cse&D)MK#s{EN>UH;dJw}$)~)@ru5`nYy;Xue+le{1&6R`b_s_PxvMXMBV69nGPe z2@{srZw@UtI^L++J6g@>AgdcUhg_eyn>2?W)|fKdv^lijBt9#QHfs(;OgC>1`J3G* zTd1G8t<=wIr}}S^|2D>19(bCSL>Iz``DIaS~8G_ObBm^)qH zSY~{eKAfp<%%3F=OK0ob-ST0X2?yx~jGp(q{#@&_c%D32V#~eevCNc%EM8##ea0^| zpS6q4XVj~%etlwvIS#ST{Qc&$mnk#mFVW`*)XOT19A=4y2i3toRu~=<|5EoEW7e2s z)5GGh$O8LWzFfclr-2bd`S5FK&mHN5y9s3s+m0 z@io?c%>8+tby>XLx~wsJ+`JpjXPtE>w^{cI@$RrL3mjm2r*)qc|8DCtW5W79)_qF8 z_v$<2`}Dox{rdj2dF)~C0exrvA$=de$dfg; zzi8bd`7q%S%m0;6qCcO@hvhHaAFO}r{&-2=U%Nk;aG2p6_s7e|zjc2w$MA~y>}39X z`@}k%UUmKl`@|ai8Gf`+uZhPlR)4ln%>81YUKjUQ`@|Xt7=Bm(8}1Kwv-Fn67<61-V8Z{tL!`o)Z2AvC`)-$@hv4x2nVz%Y42h(F+z389-6CXA=5|3k-Y ze1}MwCJuA4I3LM_CFZ8fhb3lA+3~UbSZ0`^Z;Y7xL|pbT$CP=te=09lSmY2(%n#`| zds$)QJ4v#c;{VtAIr_$Gi@q_mn*W)3>}}X)K2vslt`GCfXK_jMnX&MN>z3AMRv5mN z&ocVVbUAggyuA5LRxtIYo_K6_bb#*7`mh_|Wwnd30?Ec|L;*~cQo zZ{o9)W!6|@)9>Q3@tr9d`x!P<{~!9nF2<}g$L2p>#}ebs)z1nW->DL9p?;Q`u)>zV zcvmya3|p$7Ip*eD$iKJM&x9#cw$CrlR_bS-L##3Xe+&7Yef2Z9wfdQ7#{$l?$~uQx z?NtAQ^4LcG%orB3{E?6-Gt%Gh=>)e(kJ&mY6YN zE;4@?`LM!T<9JtfjdY$x=66#U!|v)D<$888VV#vd)HT}rdy3O=FLg1$x4OnS-p71q zth2ta`D4X7zdI7lCuKUg2e>kG>)9jXtk94`N6@w@ebRVGZ>GC{l} z&1d0g^O>;mT{kJanK5DQIP)ioS2mx?@#Zr++x*GmpJP6&Ojxd%KgIPdvv{ugtTQ*& z{PX0)GE=5(pQeuU?F*|+7%mVec0J3ibCB_c;!KwZdsw(goW?QRXUOwnaaixQzl<-j zzca0Osr_ZjjFrpW-?OZDx%->tE8O4AUFrUwEg$x>z?4O{%+X&qzJsUCepVRfio*`p zSYe%mOc=K;qhe%_L`!C-RrN2g{@3-JNvb}UKUCie=6$9< z*1s~&+&AX0D9*R$v;3Vn3_sfcm8|=hi9XM7e7=bxW&D2={XD?<0u%i_z`TVfhCyZv zPYf;X>RNoF_wI-nP4wO!eV#hezX8>mGtTmg##vp*{8hzSccSk%md|?PFt?HTtBJFP z_^fPcoVl%xudXj!o6iylSu7e~!}aW8yt6!6X8T{Q%L?oUKlyt^j)d4PC( zPxK5}oC7BMd4PVECi;1R;{zx9d4P3TSW6yP*?O1^{e4+`o-uD{rbD(yVcLAU;Rw(SAT~*9#B6^538SrH`TwsePM;Qx7E+WJL=!S zb?jyNedDZtVEiBEe`K7+kM)Hmwr}XVPsCyTsrgJlH-97Z*~9u5)@Aag`5Wu^SLQS2 z5Q|@%zlrfoeAbz<^o_n3#Q#>`nQ*vq{GGmU>X>~jf3NSGS&yBp{GjiQe$@BP9ka;z zCw*smSl_pB-~22NE9_(Xi#S`#<5zK5`ArV;9eysW1Sbx0v%vfi=c~WTJRy`~+ZH)e;_Bk;?ED&&LMQWoo#Zo&TvNTf z$S<#6#%rmU8KYgT|2O%txQ;liuPe@O;;$zT3xAgnGiD7poD|x37k49dH{4h});5tB zGZyx6eL=oVIn4YP#`m<&R@Py;(>h)HwT*RH-$A~t6y>{@>)7~CuH4Szv%0%{_jbIO zd|79m`MvGWKGtXBySa+{*dIpw>i53lv76=n#9_*4KY6l?`TfOVfzA87{s3`UDv84~ z;{)W$Zl+8aA7r0P<{xaISv|x)GdgUN&-WW=4{J;r4%fGXtiuYc9Ab2YeLq-T>}7=+ z!;$v=5bLnYl*23^r;mpkFY6bIGbD{bf^{Su6tJHs#`B$sI;kD{#{d)But*!bm&HUrUtC`R24*hBz->F|^dEBL6EHYz_9mnh2 z-TK7>hgoIe1jqO27pn{>n$J#_@71ry@qPMrlJoug#oVL%#pGH2I$3|7GtSz##+m=# z_$m7RgFdqMqdqeISszc8?=Sku%CGv!+VA?<_eK)YUEt5n0+2XcN_UvCiOHK|$%q=xJ!#+jxP|!*w=(}Cb#84wlTPb0+E)G-yKV>hv$~7?S=wFxz2@yJe^&RG zKPx5qUn1T?@@MXl$)4+5@36_9>#Otd$)4-0@0iJ+>+Ab*lRej$@9~p8*LVGilRejW ze6syxj`fCT*uN{}Q?Y-{pKJeEJKz3Y>AD;3ALBdhU*nk3Rr>RgIIKS`4&%qgsmkwZ zaaegq97eB;bG14K#bNxOIIO&{@7Fm0p}w>5kv=l}SRb!7{}X*=mgyst@AdII*Z-)G ztZ|6Zus&XI-p~5TbiOG**RPKYPVu>Z>x`S?GdJc>oDzl^O`qb~sr6c>_&mRLmYL!^ zo%L<`DWQ|`s#8LZVT~!F=_d2np5omp>SRB|x>G`QvpU(u{NJbi?>p2Adrt|?x0t`* z6u;9WkNu~F0oF=WLVT-r4w@3WSw3V+NEjVDCA9q0d6ro|e2VA!;&o5?-*>1*M^5oP z-#Am2j-KLqzCN(R>akNi&zH|}Q#{X?&+$`2FLNiVpA~l8Vf4ekMPtpVgn#|A@SPRzIukZyf)k{<^w; zQ$I_rGhy?i`um6a8U3k#reUhj>pNa-s?Y1|BNNsapBh>ocf7<@pD7o=d1@GBY2s9$ zEw|3(siB8erVLZ2hW01Ln>y8Ze>^CRPR97 zr+HJuFzZWB_5H%?UwW$V7Z#7<8F}ZX`hH=3UT&)I7k2&1Q+>a%_1mZVoiXdII@R|J zi?hyD-!Clgx>J3>uw&L)|NB(mFRY%9slH!W9ve*c{lfBM{JiToR6i@5sh`o7>VLty zTdSXiZPd^DcItmoUfZjm@s8?eo$ZNvJE@;l4mFO8>VL^Gdzmp~aToQ!te!p8&%&PS zXU4)S^4LrLEbgQJSKSx;sh`#T)z5H%`d^bLi%i+iT1ow{i+7Ov86Tp4rfh!0`EK>I zaE$ty9jpF9`Iptt$_eUccB1;Uv%M%nhoa`Twf_edpQ5@@MLA9JBcYd4H~cCf}={)gRUWq5OVPKf?mkypuv+3r`Cz zAGva;M(+{|eq_pv-@PYXRPwN49Z<2W}hw11*M%T4pU2iD;b3oA?u`A@}X zFY_x;^9~Ae+NXt%A^EQ|&ATYL+O#mtu+Fql_^<2Nofi67+-RD2P8r{LTIgiTTI0Ad zEi`>DzfGt4-eB=Jn-=<++kBdLQyAZ3TIgbRt7-m@QE%ro@5MK7n`yqAMqb-a3j@p; zf5q*mg>F`MP(O1!s{dSxB3mEG0K>pLOQGH}62>%pD|t-Fzr)7Q&|l`x(%+wrvy;WM^_Mj^{o?o>{bh~)^bb;>C6Yh8 zSUOLCnZH1Pf0KVzf0@5Ve;Zz}zrVXL`t+B%oAkHgE&BV1@dxym^#|48@FC-W8h_Y0 ziyUPAQGE%%o9!`uVUa1TkL$}{nnKD7D^KVPi%;r{?=;NV%i7cW!suCjncwmA`oj1{ zePQ&HzWDCL`pf#l{Hyx10AJG=mS5Kw*5A;V1+6=%FD$;LFU%M%Bmw7U%zvSeBh<$V^Iz&?PvNoXPTAPaLM}$6<)YO=9oA*N@HO z(96QsvCp)L$BwCvJH=;tTk)AO*Z6MB?Zszt2k{y0sNUFm>|$-F*zX*hSByi`bouUV z9j5GMvWs)+5XRtEKp^*8lvMe*Je zpBWPt-xhx*@jeuv)sMt)9DgDH%KTD%CSQrq!Z+f#yZ#69S@=VIRu`D=bNb>pP4_u{ zc`iKN=k)buk?B6CFV14qeNNx`#i#q6zVk~=_c?v}vyT~vSR6Iodv??@db;QG;*Oi{ zxxBtLPY=y&SdX0zCrtNU0P34IJv9AQ+<1B@GG#w&)2DmKv%F_c4_(a7ogV6}vN>=4 zmg%9yjP-`C#@7 zK6hA`y)161&&=4dzC1S4XQmuxWfO5WFkTRcVN-FKZDsr);&d8kZX4sQY%l(X`njX{ zOm`BWwW9bNIo?^GjCa!q7I)W&jh){^A6VW?ADBNtU7LtgGN0iPO<-E?ReFD!GI`P1aFl|Hb{ly&A#pYA&@&10UWvz=${eCHW1a=w$j?oZ|}v2Mdl z-Jjd=GWRF5%dN-!mF~}N<$1OHlQ}lN!?$>i`*1t?T`NE4uX7)=#&~=6UGF|*$~wz8 zn7@O#EU|c_`Ait^==whMnKEJSCi8c)?#YyYw?^N(0}SL2Uam-Q#C%jhZh$!_u-&^H$T?LJ}gIs37@^Uu3a zSbV{K!t#smlRf17lKX_USKKG8zN-IwTIY553DY<1D+`0}lP=e@%It0X$s~23?B%)- z+$T&wv`>4R|FL~y`4juZj7|I4zfaZAWJvwY|5yF{n$IrAU#OqS*XrL--ruR8^8GGYEV^&em!%S^%y&+FZ13(WAmUVj&y;d#A0nvAosu<--sy_j*97M~FY zm@+=d@e(saH=_~8S&WPyEZ#`t45P$hGFqHNT*or2V`hXw=Eu(P&NBIon-O}Lj-L@y zmYZjU_QPC1X@>tso6jMpQ)c+H=ensgLN8NhEKQ#gI=ZdHDoZnFgke@@&hUAC`!{Pw z=wo&E4F7F+{hS%0lU3Fj&7BdNjxwJ`R$FF-e%4xNgy?AfXqyqbSk27{bw zhb7iIz-W2(A1i-$GqVv&57&wjVDpD@@l>f8%)F z89p;>f7eq#%gk8oQ2&Xp-$4D${-J*6HWcS1ZX^z)jm2S=`IGgxAP%d{SlLmWQ(Vs; z7Iu;kYm85IeNlf{VwDMpncG>PdtA>7GY+x3t94G3=Wf?5Xb49e3#y!#?`N z+`jsBhWPvI6YB@*6LSZff2R5DVc{@&G4591S@K|o@e$%MW6Rk*QXHm7iNjo3oO4`% zk~l1%EDrOhic_%oPxL;lRpl>fQnpCf$}To>#fw z7**YG7w{VQ8%wOQdV~AzLhIkCpGlXpar`g$+r|3yi2IF& zN8N9%G47S;WBSPC32~TvQk+Z7e@YytPm9B3K%7hM(=+0*_^dcg7+>bP=gepAdGlF# z!Tig`f6;uF-!Q*%{HFO=$oFmQGJ03vS^tl|Unzd7?@Tzz@PWQx<@|^G&iEtq8^>&^ zI{w&vmOnF}DRWng|GD{0zOYX$eQBSrk=NJuiMj90XN9?IUH^mm%ziYV^`FeYjz62v zghP$vU+nAk^8VGnGG@j+J8p2ERTh4;uPm}~qj|sESJvnk(*2v?zB2!ZePw}7HyLM< zDf^lK(|+9SJiC~%&Xmo!s3Xku{N6kcu=tmmp5M!Z-AtG;|9>+*zZYkLnV#R9$3d1B zn(6sHn`U}`uOAD~^!(m^!}i^Lur) z&h-4=`FS%vzZZY0nV#P}X7jzwsh=4K7?w5vKKsKi#;mi#=6-dt#N2Y`GhJT4?pMbO z`o+qM`o*x4em&rrU5r;2hdDMsDE=zqu*d;sj2{wzRdJYKO&mt6i}SEJYv?dW&305 z+RFYh+S>lH#Qfv>yRH3exSjoDZhQOp1b481jCZzwtg-N<^>?vy_q0B+$jTn}kNGb9F~Gg_ktype?yZl{*w6j-k>LP+Wd1;X{I`18&Eiq&XUgbV z`5!9|%Vp~_JH@)sx&AcyFumG1tJfKS-uMmjVUhi;GkQVYH;KdeX8AOZZ;{W7@@9$A zt@2^QI5F>^@?pk=h1>1NOU|>*+#U9V(c|{xWqCXy4#ShyW%QJFUonqeOb4vX`ZLyj z)%dgKGvNTU=dAmhe4e*1t1noW*^AbF-TH}jS$o;Kj9#(s8;%Fv2aMlzAF%Y6`(RKW zZ@Ujze$RctBy}IW$q(HJEPdoYVDV%3!CTh-)P2C*ko$lM3vV0$%zeQ03-`f0;(e*_ zjK0=)rfhoGK4$vP=o|I3@}v6yBY$?W@RRykV|b6hh{Niy;xznSoYeY%h{Gt%3jM4x zdS89>&GI~7|5#_3f0pO@)@OBK#SbUb}`PLsX%kzBsM6*24SKr84p68o4ewOF?&QF`= zdA{peWo`N_&+}bBXO{mLH@{_;=lSNf&GI~7e)DE|o^So7W_g}3&!uO1o-dEwEYI_u zXFuyJsQ(M~t*m~gtTSm>|Cj1oMg1(Us(yym)c+M%S3j#v7_FiHujRL<`dQ&1Gsc;? zdGVRC#`0S7{Kh&x?7$N!Kg>l@0G*~aqx&bkG0n6l1zQ+a-G9!rcjlP3#| ze=v{T%r=)Nqb=n5qxD&4yrn!@VeTjKx3W(xGi9{3eHu1z8~elxhnU~iKK-mu>}7sC z`@|YMesSIQ_K8&vH;#9(Pru5CeXQ=N{@>)ellqyl#$r+ZzdPPT{VeaVeijZ={~y*n zT>Y#bp?(&RR{x*YKUVz>%j#!1QT<`zP+~U=C#jzqTmG`J|KC(U3#X``3FG-3pK3m% z9&uPY1VBVv-$tbKV3ddSZB)S1s3*RCHb&?rZ|kwlK+C@v5Td%)y0g_ zLJNm*j&W95XIv4dY2i>~iG_2;VZwOfh5at7e3&v};e7KKah@gSFA#@yHZN+NB^EBU zZsVBIV)D31pP8|r;bP;9%bT4Hz4nDwh9%^6iE-vwV~xX&<4f)D2>Gze;$_BJVj&Xe za`y?#%$U2v{WDU2>}AR!hAWMavK}kUU1gjFwvQH<6{Z|)99P}9W8`(U{bZGctT8uM zzprsWGhFL_W|{5d9A766i`R?KjQR1#Z{kx)|=0&kV=xW9XO9OxLlK@%`#z zg-x@>eL!6-v!C&U?w{Gtvy0I~?n9Q@Jje0F?n9P2!0<2k^IYq(o8b}nGwW<=vF~;J z%7lX~KWblF&3nwgvci;w$L(vId8{!1g!)-$exCk3seUHRSa?ePOFCwi`KQ&-l!c}2 z%YgbBo>BkO)@3K-f2*HWHZ7x`XVuRd`%~*6|C*S!aLa_(k)V zlLxz4Nc4;0CH-1neJnEnviYoXxN-c7JXa8heav1}7t61yYejKiR~J(bG5>~su4F#T z%nj;4tBh7w$D8V7nN_AtnSaavw428wN*-)tw)f7t^2ZbL03o`@Dv@f7oY+Fx%(ujW00U=k6UZG~4Iy z9XHMPxqI^#pY1cm@>^oI&)pkm#+13d{TVUa^L_J1&JF_%V`h84FQ2i-nT|8ge6#Vj z)i=R7vx&wTO*Z~Fai`1)8jEnQ)N#rR4c{>n<}p^styyFAK}6x5N46)XUuR>Sb6#z3ZFLUglR+FRSd> zfGf=oRi-P?4#O<9&-Pu#)@2_HtIYQP9sOE$w)gL-bG6yt8DrfwW{0MYtn=5|J{zGP z_Ora^Y|pG*msdaIwbb8mZS`-$zp0Su*RtZtSuj3^)uaE{ae|` zE!EFtEA?;fx~KWiLjI8{D-hSy$=`VST72lX?WZ?5<4m^c4i z&uI03k-6TtWB$mwKI1RH(R00Thhye?-;TPc%=Nw<*Dp0U6dA8D*ZX$dCo9kOvo+(Z z%?({l|2EfmbvOQe&JE2+nz!*>_nf$$bHf1B?dFE~DC0ZK4c!fkb3?-No^wOX(L8Rh z@8~vOo*M?49X~hZj&a=yb3+f46X*KQZk{|hv>&UEQ|G!jt=}`(dv^5sw7DUFocZi! z<@C8BW9f{!p`$F{Gv|gX6ArU@mimv^&$HFf!a3?c!S(E9siJ;H=c@li{a}%$^VHA$ z`RYGOy%(sT`3u$08k}UQa^`GNByBOW9eiqqW5$_iDGrm>*%rQQfHTAQ6m-<<{ zNB!ry{$BO7e4qLm_pASWdEc-8h7YKp@k8prK%Nh)pT%d?&+u>cUuYhCS$bCeOxbaf zdY)51^UtfF84DMi|AP7%y{P_PChBK}HD)h~)9_{aT%xX5)Wzy+&NF+%`NsI5^Ow5r zP3KvB%X!BCah`Q{TxR?|c`%pCgW-L7Ty9_4$La_2xWc@T-+&K2)vqrF8l6^yge-V(x1*7<8o=w!5JOQIUw|IHIG*BY80lGiq^ zerBeQU0Xvxi@UY@w;y*m-f$1&tn6w0U*dMRdXEl|X!RZ)>z&Z*Jv!o@)apGt@;bTI zdvx^il-3Z}#qDYJ9v#PL8fWfoy)`)6y& zJ?{GZT0;-R!>vB!souJNJ)yqG^^5Tn`o&69TgX2tpGDe2FYA-qeD>4%X>Fn7DeJ{; zq00JAP?!|51pCeAS&1cBOxuwnfb9h^u_vcve_BQX& z;lt`rT=$6jnR`_IEIhCNm#p)O`kB0@e%9Vl|I5~UQ~iwJQvWN?zpH+xAE=+z57qyw z_#dgC751~r=rwu$pnm3AXMxSHTmMJ(v%&$UjNfqGPwHoJSpAHDR{x;$EVKBF`k65I zrsH4L&x|R{zp4K%>-?^M);Yw|AL@Tw9QLyCr}`Vm?0Cn#FwgsQjQ?ex_vaXA;a&O6 zH_!WX#9eTn_vff%p?Th)Bk!hp-k&4xBJ;dI$NG!S^WO}PnCJaD=123qKS!M-=XrmQ zIIOcUYM%G!sB82*@6VAxYs`(A=X-8lKX#sXgL9notdDn|(M0QisGpPN#b~O0S>rJ4 zvGI>wH(kCg&ouvI>&=xf6V@2F%J&oJS!Bw7*4yO!spEO_Wob$Iva+;%hpe-Vd>G~C zg#qSPoaZyd&a<1f)#v%00@rOeFSLAS-7V+&8MJkGofig~?xC*F^wp?-!t)z9p1_5Wm@d)3dBNyGcpKdc}9>Suhv z`WZc-{-4F;|Fd>3a8ghI|39;B&FaFS*i=jxwY1gjZo5spTRYoc+Ep@cS%e|gA{tbd zqDdDUVUlWH8nn`hR>J@Jp3mpBpZ43=50C$O^y;;r^Ld}w zd7t+=pWFFdrW*FVK>K0uTH3!4e_o{haAY0rhaC~x{~PtbN&DgOHrfvd-lzThX~)O3 zA6B2ze%SRH?f;$p&uKr*N3QuMD7s(KemDe&;lO{;fj!^g&!5!)J$}LwI0CzVAU>+K ziZv1+*t?H%ut%k<6kBWMNKWV8d~4-ONmq4nux&cmJlG$Vt}0=Fhji{`wN}oK=_<7a z<&H~Ne%RMJUDeC-@#%bPqP60|PE`d*x~8ir?C+kg(ps{7Vmja0LjUA+wFCCRu2$&7 z)o`$PI^Q;J&3&SD<+f99V7dyz!Q6D!0EhF^l_v$A{B%_V`#tGA%SHW#>8k9o*1R{B z&NBh6`PM?ZYJ_9u>3rjvdWNT~TG)4Lx>9Xe9+9ppU>-i^TVCj#LHpZM@42*J_&nMV z2S?HVcIaG4`{B5c_6v`u{f85WhiE_SSV8;Y$P={x2;v&1{c!9l+7Abwq5Tf*pQrt> zZw>8-)eE%$NaC@U_QP?wUU&mKN0Gk~9oYXGIVPb$HyM7fx{>DVc&+%*gkw8AN#BO@Xh{QTl>4xcs(`&8_u;p`SpK|^N;w|g|McM-CB)~K zKB^85HTF@C6R6kLS5*qP=u6wlZ`W6)I%&^QeR*~n?%Y?^!+|+{m9r~+YhP6bM{euO zvmLCzy{}5^hJSbT<=bSezq7B}0mtTH-yJ{ZV-I^4Vh;xvVc&y#YOseR_h1hPLVcC% zMEqFNS5?EYWqtX64*ovYSGjvq&r^Mw(`0#dU)2BypYN+Yy|7!?SJl9d*ZZnC?E0*) zDoaEE*nTPmM>_W7dpYQz+>hT(Ax^#fsaiOg)laFD@h_*Js(?d-`Y|U8d-|!A-qcsz zkKb0o?_vE^9UMQqpK_#AUqwGv3A;x1;~hrE!8iR>Y9E%r?Z@|V=-==9@qHZGFSz(V z4)xhxd>;qh6c^veVY#h~@8h676i9J?+K>p#t8zMk^CGnucaeZOZiUyt8^WHMimp335wfnAF%=IdGCCX4xciBlHy_2@dX zn6Jmbqq3N`33F<*~v?=0rj$#-Qj zUyog87W4JAvp@N8XaM=b1JOAX&ZAy9ke|i#_~;DEV&0y5y;;oLx`|r?!!*O(E`LO;xZ_jx5^yhhdxVS&}4(O+f{wnPv>?-^7?kD-n z`l}tVTHar|e5{Z3SJiNAeSZ~$qZ|73`?v7s{yfu5eOt(feOuAL1b!EN*!gRJp0_7H zuyZu!;VL+?k9vjoQ}3nJ`#bf*-an`p4#BQ5*tf~%d3$t@$mV%_+TA{zd3(4+HqV~H z$7J)oJ$}Gxk&|r)IOSK)++QO06W0$7S=K9P&G7(?;6UC7bW$P~Y*{stgXC zkj=Yd#K%cJaIh=&Tuy#B>JjciJ#eUJHupxbOUvea`S^8GHv1yl+Z&zn)ZZ5!*fBVp z@8zRkoXz+0DPNMUYT@uX*-Bl7T?PKY(JS#smZ##+1o*~mzM(_8o6vzHa3dU=hK`@{ z89)b)!Rl(_J{=u6dNVq(V(wCN8jJ8F86LJK#zL$c-|f! zlf(1&v}e=p|n zy&Uw`zEA9lkAsI*1soH~GWSjN*C1Jn*U4!dfI z!`K0;8upAEpklE1$^puK59O{Jz&E{FzG;AJkmYFu_=Y#ja|fszSlvE=`FeEc4`9BY z`rr`kSuue5di;250Q2>%e|iA(_4MD`0nFD^-yZT|$9LGn-ZpO42#4FcxktnL!`*!U z9{-MT^UX;5=J(DyHy?REpRipj2~XNs)Suibm0XPKjfL-I<%C(gK zhO1$3rJJ#We^_ulK`~y0$^LKRM&>z^ZA`UGEGG9-=V<7YOjJr+)nXjkb&I6gRr+r-p zsyaA+@<5gHB=)@r^1MCm>@!eR!*MtUJNgaeSu57N$cLS|1DUtSzdZ7v#(og_aC9*C zaA^2Ie(x6jQwQ=bMRec>*f(Mz_W;m4d!VX;z3>h=G!mWXh|A^Zz>X^h^4vY`gq^Et z|Kx#uHwV9~2J+n;>YqB0@8*y{b0GUR@@Jz1NAD*8d6qvR9}avwuV@~jqoST4VJOZnEhT=P;Mu7RU%a=F&WuXeer>_zy9Tz-R`b{(0k z8e#8I=&VBz4#M7J(1Al;(Rqpbdy)^kdXW#SlgN*-9ds4dya`56{nK{vNvpxy;{F&!SxB?^%Y!u=9aj=I>cvn#=q>?Om43 z{5?7=a+$x!-<7${-=iNU9}cW1|4r=S3OMo_Iqqu7f?FVgDBPa3vhy zoy)Ui#N~@zmAaYwzsyyBIM9%*>Sg&qxqNd1{yJAx!Hzw-JX?nDH@PY;%JR3w7xsQf zd|}@Y#CHq%zY$+p?I*slzk8l?Z>8Q7^HdO4z4BB89ECma$aa#aYG7~QJm&uKb3mRd zdl!389`9rlhfDKRqwttK<=uwgfMR6gG>W%-hPmG&XaWAjx2c8<$eJ7E8$eC7HG zuF6-{u=9p|6@!B}x|leANJZ7v(EY4FB)TS2eKjp?vz5^{et#*(YoV zYxDW-U36|5q#9xG%t5N`Q*>qx;vO;e&n92^?m^7kQ}2R7sup%E9K<(0Scc1XGmaJw z;`eURsUaWs-$VZA#QPC+V9!!?;Ls{`z92u04jg)N5bwAWr>6(;d$+`8-5~BgqX(xn zu>3yxu=fM<;V_)?74?5Oh&f&Af$QMNM}w5(KeV%9kg9~8Uk_sLi}K$LQmJ24{~v>x zx2Hehde~(jtWx(-Z^~fhhl6lE>_2Rh4|aWr{SkvzH5`Fsu=mKp${mM?59V86jKO>>mi4m+t6Dg^XfXH8DR=*1RRQ}~4CdZB?b$F`rTj!Z zHx5=l*tco0s)NIC4dxrNwBzl;suFf?AFLv9bSLfq1^tg`KOFmn_QR3gw7-$|eop)0 z$QQI9jy2H!Uuowbv>*1gE>Jt*aGL^tQ-b>26{u=h^(f#QwD@;ofpY(bA8-&>JquI= z9ELsn;gbqf4eZM(P;uDlE>LB^Q|_Ds-W8$#^9xiXtY#H(tw`Kv7pPh|2CF|=|7d}# zfYqh~6^8wAifY4kY60{0ZFtA0K-IziEd|P9Yr}P)M^(bUo*v$%Yr}k(N2MmU;rh;_ z{BQ`aht)|Qp0{T?%fs{bl$+pDQP?@zqtcSw@Ow5MzV$*q*L&0s*mZ+Pxmsd3#iOd> z7#xE=Q$5Pvstxb#dQ=eh-{(;cu;W1w_uwcW@~9d(u*9R{aB!(dm8IYp9D@Ciq67OL zN9Qo=Ux5xBei9wn^AtL*(bf9jt$!IKm#d z9(H{|9FN2fu7cxmRF*#^jz>`+TnPt1Mj!UYsP}06gMDylH~FydN9t{l-Otzy|3bZR zypei4VD~5W!m*@6zMn(+yZaY1Uk_&&GG9-=yO8;M{PB4kG7f66hduX^4~Jk!H_ENT z9*#XpJ{(?+PIvfu@?rmrg*<1E{Y&Kcz^{$u!%?^nj=YA>iTJk}ec16f{==ate)dEM z_QTOF_%FPbe(8lj@6s=DXfJVqJwMVfX|xLtz=5BL8|?X+xSa(5O5EU3*CE{NrJim> zc+MU>I0(n#2H4wu2+!H$7hD6odJN$?d;Ei4>C}7T5LFHP;CeU;JNuyDbBL;f!*CRK z^ctcZebI+2;W!+DeQ85fYCr5?KkPUO9oV0Nj*B?LRd65+dpHiKW}sh)J*_+N#NEKk9o{^;H~L{-4?n}+axdw3f0fP(?zkxjd& z6Aw5(gLnwfBtM7sv&e^?v&o0Ow-Ap3=v7k>9KT}--?zu^PV(KfD@Z;Zhj+m0F7gM` zPPiIY^Qjk(!|q)Cz8ifwxBz`Px{!XzLw^zZa2#%cLp9jvqkj+iu>W52Vb6WEdl2!1 z190Ge>V@O5YcR_XP%rF#kb2=5>@J}EVswN<=)f`9(l*i{HGqaR@B za^ebm9wV+pXwM4z8FqFq;v1{f*Q1Ded-6{zV%{EqdlxZpPd#}>%%RdR`Q*bfxE>A` zkY7UiAw@iAPq`xU;Rx(3rJiE!Vb`hT!_m{pA4<71$cNQg)ClfNHxMS z*nJN5$IyXYa0Bf544n%6Y(xk4!*Mw9D>~=0-d4TO%hJJ;|L#r)1K zd~`9tT|@a!#r)1Ke!w-bzjHC?GOX`X%5AAe;TR#&3`H2HAo8SG*Iv*cfe{&U0$4y-004z8gcuFDfO=A;<2PIl`#vJxu;*jqeI54kVt)Gr`@Q4~ z|4e=r{r?Mbg`18F6y7LH|> zC^d!Uyb@IbI|rAr?;*dSM5Rono>Q=gooAJ(IyiU%Iyd6aMJ1{d4qlEv9KC}4oACD< zbl?bFE6dlGs75#rd#7PPk$gA=?|@^lE5LfV5>}JYg9C8NblPzp^~28VsUP;;fWJ2r zU)Tdj;VRfUh4pX{cFbUX06jQ#GkUOhMu|$D$ue94N8m6Vg;QqX=WObMgSVgqd*`4t z8$WJC2adtDuy-!?--6EVC8`Ye-&sN#;xw;BHNe5U@T(d>=a=xDKIP#E9EH^!#=~Oj zhn;X3cEKsPQV#aPo)GoRGVHhwyN9VC4m^Sm9EVfq;>S|@7xq6|qUzyzZ3*{w$X|{Q z9ER&)#|m`rz@IQWa1@Tf{wLA76T7FdhXc>hJ~#x&;5h6IV!xXB!k)Sk=2+l$B`R$m z{zXbu0FJ>CI1Z=YMgP5wUvTsl{DNH@(3uZ!L^{XW*bCRf zVOZTmdp@H-U@shogS+XEd-4Bs;sU$ADB;-$%72Mpa0K?=M|}z)Z+>f8%qXP$i zL#9#QobFBKHLC%QcG3ZQgq<}tU6L3>_3kB9%Z?6DPxiKa6Rlg zzLa~`=$%lis$h?^ly{`4A5N=9w<|iZvwNx90sBwHemVI)X%Fn`h2O9`gD_{s8TReXt*{gS~xd#|ql(LI?I|;U^r0)f3qFM+c7Opd&mGot5~VhYlPc zgbo}TjLs_j^`HaC3(wke+lh{ou#xFcEM>+;Wr$B<3njL z94#y5z5xD|mvUc#a>GiwFM$1U`sW#zPc7xX06HUxzpxkkXDJ6)!LBp#N0!gR|L0h~ zpj3I`*qBmP1Bb`b->`37sVZAd|5TQ8&y)3+m8wQKa3%J2`0Xdou;*&x^E~4pt`NSK z_`u%l&|ib!un%@t5g*ufJ@I(~yQ#zn_T7j-u;V7;vzGc{KO71WAK_}^^CI=#iT`jY zNPJ+&JmRwsUO;?c?|sBa_$fD zap5}J{|f%SO8a5;8tsRJuy;Li*i8Fj?>5@M0iEr%ACALeIIxTMze;>QqW!S?7<?`zP-?!+$&hq!@!{NQe7k2$f zeBWSsKk%+YeRhZMefwRRIT%8OpmQ_y?y%u}eiC zc6CG_4#JKt*mpu7_IE)a4mgLZ)UCv$Cw{`tbo`WM*zpcJeX)mwnb^Z|IOScouPpT8 zV1M-CIPBO)dj?<+```#1b)&zXdIq5ny9&{V)sUe)-%s3%hVpzr{W@YO&-b$or|rP* z^r6g+p$qSTBWDlg`F`pfi9PJEz+RRwzth|$A>-ay##wW45xj- z@}=m*fy>Z`Lsz2zA-Y!$Rn@T1KUBrw(2YZt`y+I28p_-*@eK@B4RB=oP|o@2mz#&G z8rVMr9oTUT^~UfA_QBrU=r7necPRG>i0|#x^9kjG_yq^xS~xzB@^ENA@%@zc-%WqR zLAVBv!!g*i0RKP3pM|s+j=*)WcM;=ZH|@J;DEALoz8`;K|6+7y`Cz9%Us%TG~X195>vaQJD)t1Pd^ z|F7u(I@$*ZpGW6E_^}2Z*zp27uxBmp{Te&i2L~e53#;{vr#J{3!~Q+A z_b1x<9qol(aoP*3y|njd;tE&7p&#)_mVd^dUntjzKX7Cp{=lyN_|r(7;VRhs2jd$K zwJPJj0)Dh9<60ZtW6HR%0Cz0oz5?xot6(P_fn9LQZ>&F|jCTR42M)pxC*|NUoVp+T zu4R1Jhx*|V?CVxW-P8j+eQTmf0{8(pz`hfy_Yd@YmhsLF`fwO_^(s@1 za1?g`Nu1O03sxuL7aW4wIr6-I8Se802Xv?#+vH78JzOC?llH@*S+xHM>~Ev}uy-!)hvRqBeh2G=v>%SawQ%q* zbdDqrccTNlYS4j0aLQ5e{pi5n2hf4lVswtCA42HB&WDL39DIa0wkKZ8h$HN(C62-? zh+_xpgR9`+O5zAd!^H6z`uAz#2z#F;j&N`_aXglCYp{nMYq5u;>#$Fy-j}e4T@mcz zIPB_(pDz=4IQ$B6ht&q+ejLlM5_j158gYl?^~Ajs@q2@~!_ha1JM4OkxOc{WGjWF_ zZxeUe6D96l@M{b4g1uXb*YWT>#0!qYVL19O@j3zfZNv+XzDK?+?C1r z9}~x}__>=n!cI5>`#&d+-6#+H;79}Zu=6YG?T+5J)C)VmLmzg<(eFY2_t?XMz1YL* z2kcKI?r<3#`jI%mj-QAp9EMYS(vF|egF|o)?D>`WN&Y_K*Nb}gQw|RNLHyw8pTsYX zWmV4i{Nbc>zRga1T9orWf0k3q+2--nrJ^9oFI||DwL-`@)%I(6gv|I(@NLjgRfSn`C`Hec-0oT9|FYSY4 z75JNp-TAZ+c3nXGVBcu`%pz`6X&)SzM*I4s6Da4t1a{NQ`Q|46!ztM;SC=av9DqY` zY!3Cp!CR>}2fuEoUO03I^}@b+)H{IkcVQ2!`S=g}@1|XDmKV}q*tLi_z>#~1&p`C= zE9c!ObRH<@`#-E-Ok8vE>mllgy^r7*99xRNd9-sG{=#86EX%9#Hy<6?2S>u?s!sT6 zbOxdKV!5h>qi_TcM#@#{V3s#fFYKtt9uB>MP65lC(1(3+4eWo5_6cvMeID%IrhTw$ z3-N%%TZu;@?c0t$9EIa>>^(mh_ZCt;FAoRKv&Gp0)#eZyctS6XOxAx3*h!P6OJ% zm-(CYkJ{}*w~|6y_e}mC3C;yt_gKSG`#AC>T@J*?8qXC$qy0LbKFUnTM(c`%__`61#uOX@BkfeH7>b zw7+ljH_6@$&IE(OKw#BfGSTQats6x5a%{A2Ie&{U6|mO55gXCHiM%;r0SE%CZk^lk zH<^Jhn`JO(H&3Qs=$0O2c%u1 zlpDzQwZV+I&tDwi>~-9 z5PvA1NU}^y>>rBE%;x^;eV87l5RHRrV1&g9TZ? zkXwkWA8puyy~Sw+lHI%lU0^&vb06!EHddPxtd3?2vsZ|KnRa0RKKKZTpA1_) z-jif3>-KsmH;Zy+Ta=U&>;{q~)*N!hxmJ;5j6Tz2L3q5ZBl*x-VriG?3H1KgQvZML zC$%qDUA?{e(cRQc_d9&s3#7TC-wBZZOZQOY_b19pyaMR{a0uOBEV_9{Q2v&#_BV)b zC&rp}KPmqHZqY4~fqV#m$1^r07S=fE<4_3QA&1bl(K$K}rT;=VjP4ca>T$07U&fBs zHOGcs+NhJPKh${CafqTT+wT8w-8i~y(A7zNYe@`Jfc(wouea|c8FPAUDXuHFTFSM< zUf=+dSgpFtAJS-&tD{o8uy-4a32o6|X0cE7v1#wYUiLL<&FoiN?AfIp(D!2Bk{C9( zf6}yPwGlg0-$zDg?46=PlJkDSa~Au=c3|2&kK^1Ndx?i6-LFTR1C!N?UHJijJY<}X zz0@n|c%GM`yd(DW1l8@q*t*Myl%0V>rEYheg<4E zwAf4R1)CF26AS)kQ#oKC#$NWLPRS#^gPmZz#a`O1_4yfPwH15mcS%JImNUQwKthO| z8ZH&GovtU3S8NooSEvs`btRAYf~w9*s&18W{qRT{$3Bd`PL8+q36w~74mSNk0nob1 zrtSjr9si*%#?#7gVFiaod46t}_-=#DdWnI=+9 zeW)`*8Azew`no@LnBlMJ&cZ|QiJae}tK)DJ_P2u|(EiRhb?eAm54M3#ppgNgbsNm< zGd>ZN(Dn6Xd*W~H?-$tr0FGgYt##L!x>L!!1uOt}fSFzKiw+2Lp&9tqxQ-Hk<@zq% zi}OYLKhc$02>b3b?l1Edq^57NO|Q~8uFsP1c1KeFM=epbgfa57VR#8U6C zmSMjVya=?vXPCM>$=eO~g0De6z6N2@>tXhr><6iaxk%1;EV?!-XbrjptvkxpokQN; zpcXs?Dn0ZI<3aqbH2Y2OU;XKv*PyHWZ9Vqezz0C<&M=J|7}JOVaZTj%vc_ZsW$hj(Cq3{C=05M!JL^meh&i0=r>$^Idf!!?LSw+j1NAOf1} zp2~S#1*ilU0jsY6w}bo5$qxQDi|%UdH-JBZ)|GQml6@ZggZse>@Cf+P+2pT}lW>WH z-rgbuxxTRI{*L|e4CZX0bs2J!?5~iw8GH=%y!a;!`R`MGS@1I+Q;y;Z{BjwRGd`+S2L=jb|( zvT8c^bHRL|b=iGOvVV*Hv*f=9A|RDxjr5zeKiwQ>ZKZ!Ob`@|ON0(+L(q`;;f(D>< z#~Q2b-8hE!0fRseu%3Tane%zPN@nbTJxcv-@plyVSAY=Ex{sQ={W>#83(7ztkbcwq z-?Sb^9Q5(RIfQ;=U#H`H5B86OPk`3Fk@l196KV4_un61=%5u34lWy$SQ{FJfLoZIc z9PBIOMO@2SbU(#@FDNH=T6d|bdm<+a8K4;CgBr$z-tWX+#(rINCBETO&O_Mg==kz; z@QR;YS0^}|boZOO*7GJjj@kB)T#u8XQJ>2EO*!iG4rd23q&yq=c0HeDcPEiQr0L9S_Ck zaY*|c9F7jUdVh8!_K$;;@kQ$%(ZbN}!8w5ol!1J37JX0)#Lr7N8FA3pCH^znk6QeF zANw!BS3v8^JP67DJ9#NR6Mw5CVC(sVXiL)m#?aks(QS`?cTfzpZot&7BX2#}3ATdz zN{$I2aU60O=MP#payD%`s%bk;=6vF4-~n1UZ0hnUYV{h}3ATdqjD;#7x;0Gfh`%=W zgC|PAox@l`S0CRFX9GDFbOT!VdsBBfdFO!3z$Kuf59d7Sdb%X3)Pcr4w?4i_Dj3J; z>hUlc`+4A9pmhn8B>T-LasC9BfJMUWQ}y}TrdN#ZxX|1`#Lr{@VA1^*`}QZ}7tp#R zOTmu$V;oBye!>s$#avfgboW!{*uESu zfY#OVP2n7-J>b)Jstd5{4rijqI(`GAl^SKyore9r;6tEwb$oB-9AqI_0Tu(R?%a(B z>qf>H=Qq~)+A{umd{z8lUEgK=6qUu_tI(VYJ_p)grs^cwf5;?;;J7UM8dRRab^$^h zkGl&r@S#*!$JR=P}4z#Y^b0gV*bMqhPM?C?bEm0GvV%y24QrSP8 zb(FFHUF|gdjZbDwwr`4q#P=o2Yy?_&-v5ZN-v7G$*wiR9zM{JvCw$kjO`@yE*$3$T z4o0${(z=9DlD$)2;xiFy5S$4l4yo)f<@#;YYX^@9bpyv(i|)hNuLqs;n{)|PLicm> zz6bU}oUg-H-L|hEtQ(%namu1Qo-#Ls7K58~*P6P%0`}!#9=HWGHljU>YZeY_HTN8R zoDWUs7>jO-QC6Mo;amw60v!hl@3FXf3VCOPi@_*hoqrr}##bLVT{kmljIKi&sS^7M zK<>F(by;hd>x*kxCrPd^tosMq=Sb4Wiy*pdExOlxn0EmuP`0`5RPuF_^?#-7oWc2y zMR%Hq&t-u*Ky=x?D~SWiKG(zX2S^He{#w^DlX4xJ;;_h0LT6EcD|5EqkB~{NM?Nw5Wh(FO7gA+)4>g(tfLW2X=jyr ze&->OOELBYnRk*PC5qCI*e?S2f@JbU_bg+beGPf90!h5ic*yau`zMa>D2whp*nbK> z2g#HdUB3w7Zzl#;PtYIq0oLv6Qu8`O>qd#K>?gFp((moSFv@9NOeFo+eUrbszY(L* zc66PIqKsYiE(BLvbQc=y><^Gv3!Ve3fOYFD1^CLJQdEVDB&%)#>C{0DXU#L)C%(+&{U$8$;J?_>oXfFJ+8@Awaeli*E90 z@+4ga>oF)}X9Y3xEu!BnI+L)O3Z?-W$D(6ieI3ehAg^W|Anp(-RCX3%g|d1p0eon zG2MUH5T)Y0*6$y-IM6MR%5|EAu&bkk2bN|MlG0TDDQ^ zcHzCB`)U?lnxO8dT*#uEB$gQPh$$0RhyZaEj8!WoV{R@Bn=>BvFU0&Zh5Z^BULN|!6{kW$6&L;F^zw?eo*JvSDvN*r@CQu3(;lQ zo=7drxZVN0R&^l0T=q+{d&nCG&HzF3^t^zK-A(5HOwXVC7qdUJ=$=a%Kj8JD1GY*Na3CIsm7qqmGok~)&t1L$)s$@V>D+|x-hY*cU7^NNQm2YUZ^ww$mLx0}i1 zbqd8R5Q^6&4(LeS8k;>|?SF)G+fJq^v=aMg0k1P0Xx|-%ZgPygufblReG^T0B#GbV z<9-J^+P?`N&PPw-IW3_5TV(pzhdfCxSgv)fT1%Rp*L#+*ji9T?%OJ{}2F?Up_e(?0 zK7+h!AnA6vxQqI)`x##x#`P3+dX}=CqpP=@h1fp=RsyX%%#gD0Bd;Y3oxoAR&Bg!l zKF0B{)-o?H=Pk}%<%+sOz5PULU&?Q10Dyu-SS*M$^I32KZ3R+7$abJ2GeX?uVFaj%Ki+^3P?*V!Nz1_qN-Nbc82Km}IsVuURu|Rn}F5Rpz0u?~}HP-Yi zNZx&56<7kS<0mz2+|Sk5o1sr!or3-8;4GkZ_5IaRTkEbfitpHzJblaM`qdDoD0PY7tQ2Pb30J42oRT%vv`#Cmw6?=jCTy%BP+xIt= z)7$q&hVK8|zIU^IyVf$-gpS_6_euG)cs2s)c&;=3ljm<{kiQt*4R&0_J_N}2U12^K zA=|e+zu;WQvrHEM{^|JfQGN&Ibw976zL&vPp#9oo`X%>yzbC&DG{65=6*>6+W)$7; zEV^yZX5SAw0Ilng0MgH0$V&r~`oVwI&(4=9e?pVL{jnF_JfL-Zn7T#ejR1c~*N<*T zboF+0Hsvk_6M)vuGl zD-V8tJHkAf#UHu9{Wka!Xn%^0a&`|FC&R$G;0&Pm-?E>nG4GRWe_}6lPY+!^4ku$j z4J-v(_i|JBL-HEHKJWwZFy{1pbgelKe;#6NC$9DEAJKIhWmSiB7~8-NwC=5@?pX4! z0M~Ye(Y1vWjg~hoW-9EV`cJq@~XhiK>B$%6^UN*WEp(r z^f(j!DCI{`Uhk(XS$`v#4zyn!vLx9bCGSbF9;^Yf9msQE606R%QCQzki$^)eqATr{ zv>E%)z?VSlrW>p5$B$y}9Y`vIM{$7cag|NQxZo5`Ne9|XuoqeUmFFynQDy|tx>O;_ zK9am^Jc+;6#r$pEpBk!7{>IRK65Uk8oNq@Mx??T6V~ut8tNw=WXvUBn=RNOo%(M7w zBTwG%xZa|BgQ+`>Je_9p_h0$zMfYoqzjLs^7d!}b9M+q{2zV4|KZ^}L`$qD%07<)G>+_XX zUFk3XZtkO?tJBBWe+7O6Ey&CRBhe*<$pt=+!Qet5`;F)q_{^B?!G6v8CFghO=<$CQ zHaCJ>fc7uX^lvG7Vekrg0m$~A3X5;)=60pWzpsHg4vT-UWA_pG6eKCbKXZFcI`U$! zX@GTmcm0RsJ>~T{@6P&OU>?wZbwGz?zx)#8k89wofOS0P*QO-=)AKyRJzQrphV*_! z-bd^>ntSR%>lPVu2i~6?$U1qq(5l;Ljz>NJ8AEqM_y5*C#iCpGH+0=E8{=H-y1wCA z1dHw^=#2qWEV`GOy35IvvU1;qw}W{giA))nwZ_V%)#SYbto^RO=N!35Q@_8? z`b}UPNH)t~VU)N3LY}03usoY-orf!CY>R)o-~H&8^=KOBEywVD5$FQ6?o30@F3*u) zN&Xx#6+}xouL5#?bg8MU$9a4&*DC1h@g)9+D6<@B-Q}jP_IC^G#9!-q{!CL>_mA%f zbS%0bP-ZVEXXmbUH)(&zaqbIl0DjQ3Di%ab1<3AHGbamQ-eGGgL zT97II(?a@@YEGzR?g?Z8+15W`W0aUSa_$@Zg=f-egWf)iu^9$N0PWvVhK_wCc^3mo zm&4Y65{y%iZ2hk0py9`|&-!rhk49o=D z-*-&i?c{v|egko^#{-ubW46Y!|C9Zc?|05`(ADGj@XOg304LD8znQw1lQ#+60&W7< zakj*=pOJCq{gZ2po=yHfi2d{6U7&U4d3uuF#f~fwoDRxlr&dZiAaSj?_$zVn+H7hl zx=#LA%LeSC>>v2`@M&V)7B z8`u|t(}30;W~{S6MqU_f1}_75W|Qu2OTWwg3-4hz)el|WZ#%Ky4H|&febCgE{Xir6 zl5AHUIu5$uqUa8>=(fiGSkMV*-Q|XqJ%hY_AgKgCRD89rueD8$L|3N~*q;j~0e#%! zG+k2i0`fv&8PH=@;yRwO;NoVyw^LI;t-*PBZR{y3p8&`gG zZ^l18UO%GDKG0`ElkR<{?kRrG&4C|W0;K;PeT@DOpJcp0r2F6Hu&HYf;qP+FX@42g zlK#@)xy}7W_pr1ke^;Zo0qnNu>gN{Dxteo7a6PyRbjH_^>Fbwdj#Nh@G`K*w{op9uk_7f#`A7rF1qCX5FKAR&q}_QMgy(8*o?0} z&yqzs&$5nz=G&L^7@Jy-u1?3I*8}thdR$#+_?x_dyobOFAm>9eXC->~-$h?`w5iX~ zahgI;WAg@RHL=M*{od3mljwgi1zZcpvxA=sL@V`jqusK9UPZmG6KrbONlo*W&tU&L z_yFj3mx!Z;qV;6Xok4fd8Pw4U;-}~~n#U7)?@x|X9;Z!>L088!6Z=766wtaeOx zzmNRo;9+2mXUdTW&;L2P+SJ47I?On1#C{w20BGHHrtb0A@oW;v1DU`Y(-p*2{MP5K zj_x+~qD6NI_NRlnKH%e$j}7+&5V+{dST~or128!`ax60S^N0Z&^#j-}zIR z&jqW&N|1IQ*I7W?pSsS_)%(Ffx=mGEbQ`fxnacfapmiTHb!EH`yOC`doCmDBzLSmp zjOfaJ=V(8hdd(7t=dh1}mNzx&Dr_abFOc^d*afzNy9@Cbh`$kYK3L+A7-yL_^|Qs_ z6Q*%)0Qvy!?^sh;?w^*EFUboZYMw^N!I@=KNAzy$x3jUo089m1cc!TuCGUOk1NZ{8 zJzgC+AF49PuUsd{aWT~2rd~o$)RpU{i^v}fLgZQFu-4ozbR5FycHsD-{gwMcS5nSz z(cNn5HoqTa-QPC%SLN7LFLYCtk*d&}0qy|W-yZhFI(vk?H^GPCU0^-0OJ?UO+WPt~ zhVE$=e`P-7N6NIF-lSV(>gxH7Qr5|QhIPMFXU;q5_{IjXU0D3RfHD$?u@+rkb(LiI zlQ#)Sx&aY6+&01Y1oVIY*?QkPd9XvB)&oN^?pps1Sr4G;@2Y9 zuK=F|9mm^DzvLa4`@tIU1W5C74hO_1M{i?$6~E+t+5nSsadcf$3F#N?Tg_nK547&j zrtZb$jR#Y~wZh$vc|g%EJJonDVFbq$*&jypIWOecuKRrv_78%GfYuEqYE<^8$y)~` zy$08JYtj{MN#d{U4?R3QRgA74r<<|g26h0gyTXvN%XP-5ik$rW7RE&mnIV@PjeH%WT+n8WdDi0eW2AW z#w={zUK`ErRc}`@bo2T)^;-wZq=77;b#F0suO@FYm zc^oTXJC+?&tk|Y{qw6$$Qa50~1bhdy?o3m6O*O}QunW8ecJMkF#rUlRqFZIgLC$kU*I&+cIl3vPzrSJM>Q?Tf z03$D-Sjc##gw_gAn^=KHO> z?k5j^e#?jMNObjnN5Xz39;XhR@7I|AN_=IgM)>Gc$l|X&hfzbB#X!e5Oa34Z;)|qJ ztdr;Jt^V#Y<9nLj(2b$H3tb)G=P2_Qh+1?@Ox?7(Y~MgqE^O76F(FC!n|Fjw{c4HB zQ0%?nVxaxi=j9W-Fb7Qj67T@9>Q0K$_u(dKUW^K?Bgb7q(2Sv`@U9 z>j-cQ2!M%<-GDiMYs}-O?0;qahEBJsp6EJF-8I;60^b3xJJ-~`_727Yr~$KpT>sBC zbsH_)#Wln@a3=F9=sHZ@m$2Uqwg9dBuBj{UyM0H#q9Y#Ps@!AQ&lqztN$|8q$B9iZkPEcVxu(u}hfT#qK=$K-nweWs5yohWlMC;(dbLsNGqd3S=v zU?H%MPxlC8zoM^~{1@8Ppv$M zHHPl>=<5B|^^~awL7;ViGj(Ntas~NMgCXQub=%TL>;B4LX-j?8RhhbaT!zNm)ChESI+`-wK>^V1W++KY-a%diXmbzePK+G~8)6!0 z=nbsb*PWY<7w;sS+GEijfc}PI{qQ@p9GHq z>vMhS&2*!aZK_3f({{5K``1D1`fSVNa0%Dp&(XQO|fFaY*ZBJO`|g7tZTB z-^pp}|J3_A)`9bZ_V->>_YLy4fzQE5!20}ETH3+Se>%MI2 zp7J2`rr0?laiG4E_LGH?d*Toz;tZHwN4fw7)f7 z3|-G32hYd*0?b2ObSHRdC*|Tm>&kcQNp}67O6!pEo{DumRGa4|+TRGet1P;mDANrT z0IgeK>fS`&9B>b~3s~b@W6mFIU3Iff{erGe>#(l}_J^9buj|o0nrh^DGMoH)K(>kS zu|^D>i&`ol7Yn1^^tmat1DlV*4?z2uVXRAB2ey8gZ(@QYfP7C*^kiHmR~d6Gs}Yjp zXdK;%=<4nEMC{Xn2WZ{vExHxtj|CS2na7jonMAjTsVm#9%;N=S+0;yQ9j3pNu%8NU z1zPt`Q&;w<50bwW3?a|jPsOILK7Kf6+f=P34)Pvem~v}@)(x4u^8W8;^0$G3_>|uf zzf6Dg&Fxm=kT`EbH;S%4FO5;=OYk+&x?xlISIK+CSZD`VcW;V=#6pt(zF!>Ok1hVT z$G$5#5op~aQ&*nz9YnsQQ{Wno>&@>=ioX(Her!y|(beg6?8kvCKnpVSz#wB~^4do^ z7Y4h4^jDeB=(Dqirl{Cr=HCZ4^^-{VujShjK>PQlWHMx1C&>7(9b~;;H(K5F-hLe2 zbaZt*2ccI6&bR1}F{JG4$a@2P2;Kp0E&Wt&o}bBizVuV*VeW6Ct5Y2NUqI6GrgrnE zq~v4xqbo=Q*5mZ0j49V6HZ{f4?ksF_!BC*vt@~TX=Y`~t0YebBw!6+U{~`WG(4BAb zPhG}+bIMHzx?k$VJF0n*yyYMato}7}4D>9qsV6KtFJbdKNPetI=Ve5WBCF-&+%Exr zfgG1TSuIor8@G#((|ecO)NkmdB&uZJjm>y40qAxz?JCJWhdiC+TOro%Q1|bF{n}$T zbzE-K{%9^`SAyeKH2D`cbXyI7f|!Bp!Boy?(o&f##>eV&jbqVM9_CB9+4eemI{krd zyOoT8pyOuF6C}%XM``3|0NI|4*}sW@!`Y^TQmG7nGs*MsZtMyyI-eSTCChU=XOe%O zsZ(R>j6z2}$@vyKX{OG_*o+5$pyOt4eu?jL&LcmOlDIxYNAG8J-1PX3qI(9qx<6_t z_ZV1d(LKdbvdjAqyG`BiVe9u2wXW_D=hHUT?xd#eSmqb@QRWYeZl$R!`%;}`e!+S@ zsde@K)`RYNOFUCnaZCZn0NpQ78)C^aFO*Jx7O;-z@x(KR&J>GIE;far7!a~Vmu)e0 zlID6CFXT%M^?M1?XKZS&rTl2tj|UTgF29ZP95Pd`CGRF+^+C5wb3{6kkC$m4*;d$C z**WQP*joZXmc(rs`R9T&fK@A%A90Yj>*u;$tNB(nx~Ykx#2Wkiz)GNXD@|P)hcWW^ zfG>en*S*2GPU+CW*gpsAY^qJZp)2>({=~l1lZ-K-b!V8m?>xn`{@^$86OilC)Stk^ zNowNdcGU?xt?PfurXEFCr>P9OS)dw-oP@f+1eQe^hc)EO_>pHOB{?ECwboKz-hX%q zn4$1XqK1r4jrQi6>6`SjJRT#s0EbUd%ZR`?_=w+BDMM`zt2*>)f$e2zyWms^fk&Sp0nytejc#)^ZoRX>phOo1x@Xc z=d6ZcR|2#j-Aq5^e&1>2TmA4;KG#xyB*qr z>>K1I(Q_<1dcU3gLX#gCp!0Y4ul0t{{B9!i^yupSVhVakfiXZ#^1$8bGKFjJvzGIJ za5^Xl)s&NOTZQ}ZUB>ecz8-ddWK-W*{0(8h3Ty|u-ST@Jq{R2Ma$jVh3uNCl7fspD zBHSwueQZ-Nc$)m1jLmFt2hjdiuzw`kKO*lxpyfKs!xF==8N(IyrD*EoeDE`ydc&gI zjxr~JN}zS+H-AL;Px9Kl#5Mws0oF0{%+UwW_j$jtsr}I-E(Tin zQtBhwZzk_{uox@^R^1Jzt~?(n*JHswHnq91>HKR2_N&2WpmlFBb>%+6e)120g+2$? z`J_7Yc&g98{NLDAw;@fseX!35!+_RZV(LyJF8~&TIl$^~qeWM)`~BbAROyf=-Bs9c z0Dl6l%Wg|j;&&4sUr+qOb3o2ReL&(`PhSaZf8%l9)kHVdD4V$6_=7SXHZy0y5*Zg`T?KERvUgi^KVI2CNZPlVXfigFM2Q0b;rtTi{egTKQNb3a&Z(dCpz zlKqH{oFjpgKsR9Z*Pm|8f5|xOjlJV%o4O8Nohq=u2;2Z#kSYG=8!MCFBu~Ic5uNL$FtVM<>k0lJY3~B()wKWrulZd1M8zPCbQzj7 zbQ^M+QcR>qilL+wCWWFhE>TGhiqdURndmZ-E`(9&B1{RDE~7{YgCbOhTq?!?`QB^2 zeb#(_^L38%Uyt)VJL|LFuX*ov-)pbEw`k}+qEhU?#9sT~Cj5RrbOg<}QPw{Ao@E~K z`7i|h^V{y)k@j!p``K^ZHeMd%Nk2nuKy{yXx_7Qd6DGrWSWch08uF;%OE^b4*KEpJ z{K);2=k3tdu!!`l;eF72``rE*IcyF66`Tap7k}XT;>eIBQ}7r2CeTTDLZ^}D95@fu zzhqag*Amwc^gen26Yv*3@oTy3*Y&zEgIvGd^Dhs(5ikeTKZYv_kwe5)UCUes{Qft! zNtAcKhRif{v_7{aO$WFM)W6G|e^uY(JfRVs1paz%x1;0jTKbEkNXRTiSKD<*(szek zP~90$cPMeA;BlA$vcF5ud!0LPY1h*Ja-t!#7Tv0xSVk4fn)L6$IqTxOOP%hL_4HBj z1AGDF2BDFXWHOn@?VKMoGttm`R9r1&nqDN?WrNIr`fuQR5ww1{m4EP`mCb+3vG3s7 z%Y1(bw!=W&k@m61`W5o$`#Jb>BX*kq50ZWw>;TQD@%Hb=#%!eS!t?MH`1ff_3M<~% zHOV1!ujfxW>3@f+rSbYvW_2TS->ebwXMo@CSJOuopi}JWTu7QLVH{{Z`@!k_Oxz)e zaA7Vwy0@}mYLv+q?~Fo6%1uIR(sY0^pyydr1nE-hY@)ruSM|{X> zfcksL>5d@oVUX}7$K`0Q18KJ!bX-d1UGH7cO}5F+EYdH8&p>q_k$;d6NgpwnhlWrG zWZc*L9EI-s{O|E2HDpG5x?M?sJ=_DT+mK=q-Cu|^Tj>wrF!1LSDLJ+uRNd72q2T?J z+J7}AeQU@D)g9_|3y6CX=EE!~u4Vpi$J-M6uiUhdnd|xcGU?xf1E9LIo$gB?bMF$i zz&glaE}{FgQu@dHol%@tZo`oI5nc87$WPd>2Q5H#t5L>;*gM3%4`0G3;QL$XbhW?D zIyGe4XUFSr=u_s(a0IAsf2S+YH`OLyg4|d1`&_LL+V7O0dnLLVHo0klT^q>vbcZ?J zleV!B8`{I!;J?p#=UUtTS6oCM;ZR1Cka-{7RHr+E^fTa1P=9sa-|{maWrJSO9i(4h z*T~J+T)+NX9Xl=-XN1f*=xY6akn|JbWl-JkoWDmiKpqb#L2dBcaVcYu;Sb^DTe8zkQEOf?nz!#uu!7wHf$_h+$L z21#GVb-UUAI`$-Sb748W3{vi8XV`LI($nh7_n{gjq1P&8PD5Ayt?@N&49*7icWKD_ zE6-!!NBnpg4SxRaboW2B{ui~TKSVbrFr|)?{yjK*dtCQtryJctzYdMyB#;-u>~j8= z&9MGTKP%T)d2K@GxJ%;obR6j)gHJ&Hy*h0DmGAdn{tfFDa5c!ds^1yPZyK+sGM_HF zAY@vjtNzX+{qwK}R5#D*4lm+zf%w1R0QmWk`LyRg z;+})I;8pPJS>`deKh*hB@kJps9$hWBouvN}qC4ZdFFIX$PgFDFTf^Dl`nj`8{+-{kCp-55~a6;5{@aS}Fi{Hkq5U31XpuRiBg zaB;|-g|3Fk_lyhB2;}so-#U`|MTqR-+`AKhJ@{k7JjyJ$1MdX#bnYR|!|)iWPCchH zpSYLdHSqh?gPgOuBxLUMbXJn)efSWh8HqogtWHS$*-gCq!cV3Y`$Fui%6|~{@q6?K zt~WvRsgJb}-oM#~_)DN2`1#*9p}v%M44HR5-K$A|1Kb0u`;gO>b%~k8KL>Nb*X@(2 z+bLxBqpRc5GSa^dpMvT>>2wbfS9KR_TW}=!x+9(LuT>~J@}>0BkZIh>=7Icw1JXBv zt3k_Sk=2dNC2k?S4w{$JR(6)KE|n89L(tLw;w#eZfXME+e{=1hiCs*bgpM5LnRCBv z2U9skQ~Qgo%R^=kx>`=RVlxy*fu46C&VvwqH}-YnH^Mt0=Y1v)iC*TBA^i^c8B~{B)`6~EHypW#bAzF6E9Pekh4zYk@g{+{W^CAlB|C-Fy=liA?w4tD*#`dfzXJ)UkI(x*cUP~9x2JCeAG zFcS*F*IkmJo5P?!)zd8|{bG0nRCkQi-A3HEP!95ZsIOZ)p+2N`519q%rUpgBH6%9j z&X+K#?$b_J_Mz4%UczY{%cy6+kmp5QP)S{opx>KJzMAWJbTyn#`WDa%L{9ptXRU7V z9h7#&Yugf=JnZ*iukET6zh4c5K>d2n`SsS}%&Un16g~jIU8M}L^-15Knb9+3qL;sPKV;40_{zQ0?YuJ~Ju zVMd>jxdmO#-{GVm1+zhQ>&ZW;^71|A&x!vYc7T+-l$Dfs=F4_IE$fleuCi_jnR%YS zhy6yLKs`|1)10n6ui1k5EI9I%iqA)9yZ%MV%1!N)uZZWvtE7JmHh}7KsTkx#0rl|^@kj3CSs3tj3tc`)|1I-V z(~of)-PFL8>jl!E4qZWY?@`^YoICMrVFmcQxlh=BOY+H{y~GkiSqBeBH*AY<-h;dKtfS`iIQLo^CDDH-L1I z)0Y0_ET>zN&-{h>F3<^l-Bt;@83UM4qnnDoga@;@F2m+_P~GdC?#skUSj=%uRz=-H z*Y9Y#r49_4Up;?6!Da`12dcX^P_yl=-XHcq(mDF;fYRn9NPi~zkZ~*5L0#hY;dIis zgASm&4DAwP!-*RM5+-q!{$W9V>Ymqs>o}H^7c%Fdn_`ojCrLjCo(0uCg1=9Q?IP}X zh#lm=!0#VAy8P97P4R6Z)5Fs}g7m472C93G)0OttmUs!5aP<30n+x&hSqpAwkBFBK zT}gif+zG0i8z|Xzq2yzr24g|zpIpXC2;Td(l=xMkW2BsaCNBcYxI1L( zT^TR`k4RGnNq@%u)B6v-i0co7;4|8h_^0#4jApi<(ef`J917ljtmj>b&2#Vq=y_l1 z%1NG|SV_DDdEUc6Z!IV74@!q{Uju(NtikSci2W5m?;EXdWE63az!Tt~cNxBx4hxxQ zyz|~jn$KZ3sDGu-zuxU+DIv+UflTnrdoXz@KI(br@KV>6=<0cQBmI5wK~mD+y8E2& zqfy?i0juE+$h)2XlKT&%*`t$u{9%Evj5E?sb6MoS=qf#H#^)IK#i1L>bmLs;MOs2g zuK)6g*K-bHCxpz<{~z{6*uUu6--G^xFd4MI?XmNoh`bkSDe)!X=hYJODraKIY(huJ zpN*vX7^-j+SMy!hT^=ItF_;50K+b1*E%JhUB1P^xTk}2l(UAEGUCsB8NWUHG9TwLu zaPyouiF*&ehOHp$gsJuH_%Lr>#d&`Dq>!oBE$;6iGV|oa*~>=nja1{E8z3Qt<3F{#)W>Oe=%xm#nU9hFOgINrcZ>ZkHj20ckT8>@eD_Y*$A0DJ=|{TfKaEf%LCK38*ejQbJ7L1NA-e5)!XVR9Ew%Xllre^>p`QcL0*A$93iJ z6JjlhYYScA67ch(=OkM%RJZI2`VCLF2kFJ%n>nh#U7fCc-)tQ55+*0;Ci+|aWXQaU zu7(+;e;&4iwy!6wROI>^NoF7n0cjI`QdkE(h5gwqWRyPtVC$@e z;6CFDr=j~2GiGpo(>-3_SM&R3*aCWfo80-Ga53dU{7)eBZ@<3xPsq0-bdRe<_n@b{ z?Z40+mY|zFllv~{YDi{MQ4dZ7&9@yc->x9;8t4PQulwki%Fwym^Y0$gJP2bz&-+K` zpY*TK5HCU2AAGIEa?LLanVUWT7GSp+Hh}ua761v6!;j?MFHjqN&A!J*Ou+@?6L~if#t~mXLi6br_03b#+{uU6XTx_ux&~cLtTJxz$ZS)n2zg%K*lu zB^k_pdvxhKf{=V{k~sltgX->a{>uAP(}|ZL_bVkIrq!hHZW=E)T_4Fu_g!=~G{Y_v zE(ERbd#!Hp+-pzbdxO>~X+MLxc29mOWaRlv^=}|)hQKgT|BjS@P_N{@H4hX22qgAH z(_A_I?H{^zd&I}FLTsLfIiR{JPInKdTuS^$AdSH<|JiOmSg+4=7BcRltNwn4&2A_M z)y;6aX~*$S9ylB1zK^fF!1=4!I|YkErW?9CUuuobWzZE=ceK+Tm&NgMU?)bQ_+Z!AEiaF^XNIoHnZ)Gx172S5OUNy4&ozFPdw%c45 z)i$D=9uy7hE2LivAAtHhGaCFD8&!)kgV`_*e1Au;xAU;?_&d@LGTz|+FS^>kc9Z@P zr0_Bo)z$m;IZ>9@ckP~CB)B?Q;0*VLvT z0J%=}b+ZmtTqi79$+eZI`v^8qK?$fXOG$z5HFc6qKNt$PgRk4Sm(2&Qzom>-w|Tm< zezO>xm7u!&ovyCm{J?Lre&g4(RYPps)q0ltZpb`@uIBGPY^451>&A6YidlaTtzmB= z@e(pP`no#)X+NI3I%J;qbk8AuTWAmJZ%d~u>o>iLmvA%3|4X+KNpjXOU-I(dHqz(A zbWq(tovys^GPPckISZPAzb~yIqhkIRy%#b^UlY%V{-nPL3PE+#Y-0?*t9M)~&m}?w zkbU6$+SzuIb-LBnb;9EHA(M`-wu>7`e<#cX)$QkWWq(tHlepf5mav>YdmTvLmOEYD zcT&2M`_1TDQ`VVCe=kf1)h%$ktBBhOTcChE^yj(V62{4bQudvA`S1fazrZmk$93mA zU0IL5j`;rY6cwmyd)gC-zujJ`xL?R@3YorMK8(fYF?bc!-;bT{0pg32Z(3$1R< zJs}X?B~DlKA!~EU-0%6@92=>>7jRVF@0_m8_s0?c1Uv?QJ=^Zuh1TEv57__c={`^T z)o=h*_ZZgF2(cw;NoEy%4DW+nS8hMa`kQ{59e-6f_oI+mg06LmdeMOSJ9Gxs?do)8 z9qSR|r$I2E^YS6()r#|*tgRvQ0lFIA#O7T%06PADY;_}&58b$K=mpZ}=<|wY^kw-U zb3N_p$o{}dq4&lD;aF+9sg+cQI>Jgy6m0vx#2M zCV~Ilae7AlyBabsmVV9sSTBDYHcm1ZLmyCo`&E_`iEeKN=nftyhbzZsaZEHo%AAYc3%VvUY|{M^9%vX?_A3)KzDV(~;}Gro^`Z ze{9`{PV#r`uSF--xs*+sD?y%j*7H0QSwif7;>Lr7LXNemL;GBRBxNl@?q9w}k`gXX z^3m0Dd7AW#U=^rtU#BbYFUfAkydJIush`@V4L4To>iW+v%0f$v3za)ZZJOuC%9zh@SujoP$5^t#k9@#N0-7-TJ`axTy zA$IbKtdkS}1}p}@&JK3{eFOZJc~A+peWa)RA?eHEcTnA1q(Pu7^PoI#j*NsM;O9g3 zakf6__>>$Do0;fp{e6k_CGah%?mVZvD3j|=*ajbf)Za->Y`G2VVy|a)o|#o8Y-(H| zZ*M(XB$*qbAE@q8@(=u7PTae&88(3L?>u*ZSD(Ymi-k>RbhY2!L;6Edl?tx9RM9|J z+C>KOSD)*StQyYUV2 z{xu8T(i&mYrguCamSeLH>a~vRzUg#jUhx(2`(QUL$zVR%)aGybUR%%PI`mE)DozfY z>(NzzuQ`uC8*T#icc0Tm#tb4}!Z42h`%I+GNs#;Uk`Gx&h0O!#YW_Yz`bS|hsBVKm z$;4!z-~!?${9oT$(0W#m?hH?tX|7p>?MhF#MWAG2GLB04mEQ()^vi9RD>v0GK00jP z_jDuYv%UdWfcnd{NpET8M_=axoiUPj z^S4geoR6-yi#eo!1(tyNyVL2){i`j+e+G&5x3-rLGF~Lt4V$|>UD-Ff6T6>0U8dO* zV!Cg%d0X0Z+luu!GPL6LcsaU{C+N1r?n+R98ImgKPOL;XEkU=mUf3-0bY*|d6WC4n zbf0y)vcKjf;#a^j@aMOUy?mhRo2=BZIe@PA535PP8Mc7>yFGB%#AN;aXW}L7=jhMv zY;B0|`!7Sc`i=4WU@oG6g`+`re|Ng#?>1=&B>mw+~+tGyK_C= zB$p2-T+F@?;=5F$+c8161l@By-5%K72m?U<<#vpO*a+ethDRXL-<}D&87GHLM|7pn zmQaYzQmEc8u6vBrt=T@wq{2DS46+&cK4@dxZx$O^gFL>SsSfFLPYIi+(A6-9^h@AV z2orfOjIg?qhS^Ex3}_AhoTTWCs3~X|Hru@O?n|0GU?}K$KjQqGN8BQK3zmUj{%u`- z9YESq{O$bou&H@dyxndh{kL!cRQDC9d%?v?rW5poo*?fLPiKxEd`I5Ro3x+FIxTEE zpsPWi=er-9Q6SSWIq!{Dx6kaPgkBFKB7aCsRODT69=h3WB5(NMf@hu5BvF8l}WXfvyO)ujVWhz zQv(aGC9oL)4|=-pK2L0NHT)y~7uW&fudWSbvYscpGT)ewzeP z{$Akx9X*rzJ@KEy2kGDC_ed_69Gap?ow=US+1j9ge=Q>@vUnTEDE{AWyA72W+ za+C3}_>8dG;Q4!0C*B_nr-JHoih;lKy#6J`OX$K;bYDJ!|6pD!K1)!43z~<`UUW6| zB7Gj*0U{^$bi36JJwV(9khx1yeQS|>X4us27thD3{5}uf1odmb^Gnw8j=D6-)Q4K& z&tLnvcBy`qo)tD(=xTq|lJpnC6`;BdI!-Sn{R;R6RClS4~s^m5**3j^SK*h!h^Fn1Nr)W7V! z_025XkCwL%n>(10r8?a?q+bCWK>dBg>B>6CAH>(Vf_*t4^Wi=ircgioy7nadH%6gV zbbi=OauYp~u0?vuhf_IfzLr_tkc@Xth}V8f(kEwy&1=|extz)G7sAz`ezmP4DNSq& zaZkZwSO8hlx4Zdte>Yx!`3;Y*Vp!59Y`*Z$cLV7^f=@touXVarI#Y*0LM@I`J|pRy zGQ9Tq#7XRnlq461&2H~}8<4&!v;e7=(jNO+-N@oT>>(t6AV{11h4PWI8A)3*ZNsL~ zE%AOx<~2h|Hw@H2{-lJM&THg966Xn`Cqeu9JapTjn<|M351}^&rh2+umPm-nKL0Y} zzXd5QEf>+-=lZvAk7P_FaTXt?>goAAXcpsA7xE3%-#-Ic6O;EF)+b)VX&nFQeQ>4d z$~OqPr4Qmn9Mju|X@@ z_ecC8_znE_S(q@6mbPb}gRb^ZhhIrw33Wkrss4fPTH?0A9@q|kf4ao2w_MrYT~F~1 z*6Lh$Xg)OPYRfHyqw213x_dZg6EER%j{lUu<>)r{bgw3TZ&(bf+c{7&vAnCe*9DKk zI5(?5Fc0ekv`UqHDXZRDNa|OqyClnr0!^P^z*mxlU7&z zztWtr`H8t$RcmYdVlxO9gX;e1bme;W%&VD?f?QY1^@;X>g`s?P4-^ zwfDMEL;=a0;n+hKb#a4La6eVsp*z5k*N`z4-Vow4f!PlNh( zxAUv^HQZB$^Whxu^J!QYyN;%QW%Uf3jh=29>3@WuL3M8u2WjW>o!Y~%wSPqSvFJR} zo^AYmOVIt=J70Oe>nLn%f}Ss1oF#;0f95H~YZ*vn>NR2W2lm>YoACSD&;r!2$DCgg z_PHG9_RO^BcmI6VFX`7B;d&Xm$L7WB@uj4{3i^AxELlnjzBlwZ@pEAY__~?gKljVG z{MxW-<>@Xb{oAkw)ZYe9SN;8+-;TgG)1QNc$+u4V&lD)qc1x9md7j^a0hK?{pUsCt)GS7s2;8{dhZ1()|^w z*N4qIFCWBmBQ~2rbuSIn%>VQLVqaIwP3vg}x?iKKVH5`78N(NHpox)!(CBzoO-IEWb%P`R!@dP}|3= zzxg+Z%|TDMZx+v}VAsIYt?hK>{Y1C(`|14F0@uagE?g_gI?J@gc8cyXtTkz{hPd z&`lNR3G$umOR>2eRF^I95@Ivv^L!!k68doT@5hU_1bwecZeG}YQi*OqPj}k?pj(FS zZJZ{H%JJcL+MC-XV5w&dAfi)ntDgrbVWz&)zzfw2e*NiQ)(b%VviCx z9p=C%*O{PRt*%A?$o1j!g!*po44a$1^L`$i)liekk?OjkKDL3l&tX6826;E!@>l4S z(A}AM-gk4|;pv{)kLzS;52}l~gqS=}l}o$?*)JsRAP0X3d)KoA_*wdsoWZOwRifL^ z(`^ta{X5-^Az>4{GhY7pqc;&A^>lGbLhyZwxx`C&furC5NqI@o@-IQRmZ$p)>DPmN zCr9%kJy0?+`CeV4n_1I`GePn}*Im20@kDhq?%_Jg)9pZd@wYQa)un5a5cqo&@e=Yx zmvJERy9%mXg6{d~Y8WEv;Q^59Fa6&{`(x-~{?H@DYh9J-ZG#`m1?OTkb{Z_VxT)<8-%jRKK1JluSt0S9cNb`;~ET*bMXR z_ln&u?AHUeU+nC=_T^nQ#QXN8*cV{0^O#hAKNVVmo>!^0kKIMweeei83_9M(`*xQk z%r|m*3C^pYU$aRs`TZP6_3J0+m*n>%;(fo0vEShNCGW#oMw-__{mQgi9Ngz#PrQW0 z_u*)MYdy%#XFbaEYY<}M*B0#6uZyfy@ZH(%#8>bO`$t(f)$jwq{|vu+_Q**HEp5k~ zAi=&2``!F~?e9YU`A#L&06nh}?!4*~mktt|a8y6^oaFco^NFDUxQ}^*mtSX)z74bm z)t&5gH)4=Wyo4J#R;H`{QYpI0gW~@7C;go;9#nUo(~X|YyH$u^1qEcLd_Pd1H`{l) zy}zRVmfs&XW6;(1^eHyqz6aq0j`fd zf6pa-JGdBBw}aCi$iC&Ph?mfde^=Jutv$@E7*h`?lq}ps}(9@OrNcdOzkozFlQ><}myHJ1M@N~yI-GAe6IlAeduKK&y)8+If{40O+9}1fb zJYDs7i>IsO!N2i0c{Ja6@pRSSuRPtE|AW6p=-%q-s=s?Y-DjNczwtL?4DHy{Reuk7 zx(r(q{#E{#pgY^sRe!4tjJM8l{N(9A=XB-$O3iQO znGulhwTQp^KGV+N&gVM1bTh8*GdKN6R(}eybt95m`StO)ZI>qn4(9*=0(rHD@bz_6oUG9v{V?{ zw_Kk$yNxw4Xa$+f$Mc$7t<`Ax=bbl+Z^(N7-9dU8Pls{T`gbA!IG)!@JWAYjkn4tF z=*eDdGdXNNaDGkVKWFp%B6t zeN8wXRF_vLNQlXNr#0~s)I^&1N6gk-@hsGa?bjmfl};G#a`!K4QBC< zcG7eJ_3H|2A6#$WF7_}4q&#%JakRUR*ZFd85&Q2d@#`_{)UU4pDeQ{j zHBi59cYZD98tCM^l1y`G1pfHYHlh9%Jk9-cPxn01OMlyrqw4N)y0b^JPEWi9>2IYR z=n(o$oc+-3S9f>)(E>8?1wmB7OpBS%}^?>Rgu z;2BW=j*bQ{#pF8fb>iQJl_2FI@9`_4f82$ZX#U;qo?*Y0=idg>e*~X{`gelWjT|5@ z%1yu{K*odWX;$kXn&s%M^mL9TO&XjIs?)*g+)3OB7!Ce;E}^az%nh55&`AwWh3=d* zGvOQ1^UQbWIe9SqP2go%0Ld81`wHa#Xx~0|-B+LgE`OHi8ivK|jeIZfFKj|X;=20W zvs{B|kniRFQ~#a(T-Y=~S3_|B49(V{=e^9Gx86T1;y1tTX4Z0eHkBTk{ z@{8P8_xxRk%?kJcRQCdLka0`)$H@3p4HDlsGcuulm!bQJr(2ibGoU%BZV#s``$4ZG zUP51vlD|40+FXd|Ls>EH$J4!o^!YFzRJWhgm38zL#IFW<&!S&$I}_GB%U|Mp1YPZa zKf-1=oHi`3OS6*@ljnQNiLZ7qbq>l{a41TlU*tVZqsQ9)8~U7cD$nI^ztRae|E{t>2j6ju(zAcn+0P|zA!t34=wj?^4v)9PrTo4D zz68y$hBoVC!)ma;HJo`F$ae^(&yjtTQU=+4cu|fmU41m{hw6&1=GP6_$Tz7U1J!Nk zbaxZC4-RKREewHfs?|-o)#~axOu-W7C7$l-q|br@pt?Pr?oqvXE`j*Z;HpCv$LFoi zU)9ZB#=bl+ACAbUzl8fib+z71zK?zmmcv3AOhqlswf?3zuDFk;?2WKl>iK)r{p@{! zwxGHp=kNW*jfbaT8nmKe&8A&SzRsghlH<9@+V);h5;kkl)lfqEci}zIdL#20LMZP( z-akjYUvJ8=|H8BXir;s`Po8~iXD{C&JnVsr^`>A&*zCbRHTV;hGrwO6&w!p6OR5rL zGA>*?lIQoJJIKBxeII<^x9xe!xX_67<*ULbg9R_`cjuA*6?h9&x1s%;G1<>lWfc3# z;27}R?>@KAt?T!B?}SZzw~!|0O-O$xoCi8Cw6VGod5_A~#PS| z&y`f4V(W*T=Y`~7&T9H=?>wbHI3Al5LFf~|y4p__yhp!|uJ%)(lKw0B2Grjbfs%>IcSwFFUc!EkmFeodI(c2#Z1(&$ z5AnIMou|9W>B>HxyR+0JS(Zrt!ng{vJ z%^G`cy$rn@J-w4j+Xz~KmREIKM6vr%WqwEee0U1>)iZzJ?{>$>$myL6*Vyw6?z?K)mSMNSv-{%~yN{-u_jmg` zyGr-bd=xgHdG^<1cQcFt%?ECQNeK3>zeM~JkiW0r=_+LIlDd`a#8yGN;Q!=4({xEYEg;=7Y4GR@9p!bPnTp4auab z4eda6zHvG)5w{ptfy~8BnwyKA$aT@DtYe|0{rhgx?1xjvdG$_CjDGla;@*O-umOVS z+}(QKXtcyP?bnh&51Zzmu9jDHd|a0)d7vx(L<&fd_WV!lZaL_-twgtmr>oCf{Ttl^ zbi1OfLB?6B*T41h~KqL#HJMc0iOML5Agna%CwGW&nG@4gysHpL*m80 z8{@oOPn$1zkAY|3nBUKWOwYcv`}^`foNVHCE+e94*gxgjU(WB{;5yLyaGkY}+(MlE z{XEcfkh1GYy-F?%o7d6N`fxXChQlME{SdESmJnM(+&i!d)`LHf>BhX?uMcJDuDd_3 z`vd6@z_AnJx-U509O8Pwt#Bjwy89C9S>9LNZ}oJ?k^V851?n%a@(KKv=bBd$zY%1= zg1=ssxwhhd;MA|#FW~9Q_c%Vs?n_U1htrksaYQHbEGo$RFn!(a%nki~C_%Rgbwk66 z*qj2bLCc9p%OynQz2LVIKNPgAMQbp=rtS!vi#(n2q?rzTKy|X5&ie&iGr=B^Jyu1o z%@+Jth3^8h?`NcX!~E?L?w!CjpgJp^j@%C#M*IWd*PE2{d4DK6mw7q`q>=BBKgm(D zN&0oVED6DS=yRTiMCN?YdmFIVae5)YFN5`<<;W>Z2)=(<=TXK_NCO>HC2vybK;)>` zfqA=lJ{?`H&zF&2{OZb4b=)G_^J3p$ z@l}HMn_0WL?}M(+EAB+^0a)(oUgLC6BvUVXjO!Zc3bpUzy*VIy*&FTpob2mv%HJ&e zk#>!)hIyo41aE+r^Kh#h*+blZFq0~l^AhS^Njdj_(9v=_k~DRo9f-M<^Kz>bdx^N$ z;S<;d^Kx1L2l3BLv;NgR++Gjl{KE4;To|bCF${urp&6*|R;SyIxZZFZ+zftxW>XhM zUv#rLg}h(6FX`#tPx{GVro?rBbGmzp+Yi+r=QogcoRWr4I&+}XivE`F<9R~4ka6J# z(#v?!pQG0Iy3ydrO6Nhz`@_NeeboLg?Cynp&wiivEA%jNlR?{@*c4#@jCWqs_vm5>d)g9t=OY-^7Tp@V_ ziO&fQ_R0Y{ll%wQBc5&xY_j1pP~EXk_x=?;LrDA}$OFH8WpAgJujrbC?2~#h-oA&C zek@D^)&0ro%DUqs;#a^j(EJp=G?xz)b#Q%Z4u#Em=xUJbGHKsiu+#GW)#?WK+2#G@ zswXzN*muW1)d`eg_Z^t2alig_el;bo1zZ5~T%X_9w{?C!R^R%S`zQB1Jip|6raN{$ zLH+v6`E_R}-dzB`U&Yvu_3|qhyS{K6XnvhgC2%@;?(#n3C&Fk@9m%i$t{gPKQvV8@ zS>E|hA^mii1FCzH(|wh=6|fo-pXVIrboG1-&|T*FyAhi&pyv~D-OHWs^H1{p0DJ-YbH-OqqkLf*sJ~x3-Gb??`@mv&5#-uv71u_R57Vx) zy6^Mf($8j9jhK$;YN$2Cw(FBPYWZ}E1;2*mKGM0wOTNmSS3(K)Jw5v@e!m1R_3ZC< z_WirDzD&H<7qKtpA@2U3y{uN7keEqXYl(1h|Y}X z%PMOhd+Z**TS5G1uo)y@%G%p}x%0S+`JG=QV!rfr&n{xjfG0rnyN~^&v2jna&jA+0 zi?E!0S_hKf>((W#$MXHv1L$fvd=_&`NCO?$-nF_BdCs*X@tr}>Sv2=Cu9fkP!J|gU z$KC5ma~sS8^>3H+uhrA^UCIHA|y`8?;^5?u}5Xphofr(mb` z;aJ9KLa4I#T8jN;*xNtN+zq?=unyF(Tx%a|Ih$t&;WEeuxz_8+7$)af=;lRQ|4Z3l ze~stYounTD6F~EAh1Ct7BY2tk*TB!WKJ-ob>@T_1(^*TJP4F$K&IYG*>NBj-!i6Bd z6{T9=GTDHU!MuK?r_+rz*TYOuojQ!^gh;D7^p(&F{Bz8kRmBw5iI@-3sTw3@3PYMF zVIgRKEw?(cUx?ce(YcIo9Q||K>DE#H&ab)=bI|jzHa7L)3{d~RasJ75(WS(9248b9 z=UK!@!A>3%_pc9WZh_&T{_S`E{W_BGy%PT{JPrOhxCAXJSDiOzq(;n{=<2-jP10|G z{h+!{s|A@7lk2PA^B7-YAoOiUztzN+#Xh%wFZH(({aMLL5!1%=w}|u$VJWEYbxv2t z=C6t059J`&ZKbK)lWM}VFRou#e~V70UZeYWn9uz+I1MyEhgsdoa2m>u#18=N>*U<$ zF~=yWA2GLhI^#(57_0@=DRerrZ>ZU`TvLOulblq=l%++?{hrPM(hP?2pgONOo%O_R zg&pA6za?DrmNnp81)dIBXbzI@FOYxBylk!2sqox#Id-$K)A?`oxg?Vcw}Iw!nYD}M zEMWYDAus^8=JL)hkUXh6-1d*hQ-`vo{L&+)6kTl(pOF3#lJuf#(ch z2229KzGa_M@wwxSCJ}SO!+~A!e+^&cni@KT=GS7Y8_QIc_=e^naC)e3&#k@lUWFG6U3yh>MlJnR4RgUfjo`0FxTnM?K{_Sx7 z$$Nlj5&t~+^&;iAh{-rTVy-|(%VjNTHp9=L{#C6JWI^y9>Ygugj?fQeeN5kD+PAj7 zF8%vHar20o;raIn=|6*K7sdTM-Ref(S;D*%8ZS*UCFI}EY`eD7YUW|4EIVSBj*XYY zE3YxHf-gbOv-F7I_lSHi^YrD^fAIUI(eFe|PKStDi;kAVHKZ8F_uNeR+LX|K7LbpO!-rFJbRBj(LT1@f*_bha=vI>z=_m5n{cG8wkT;2y8=B?<*Ek z7E->`zqa$>qvz@MalfDIxhofN$ourhr=zSS7bJ;}ANUp94uV2p$CWZ;JCz-it7w z_+pSrfnPS6>k|6;E)nyC=idr!*1={_|K>aYq(XmNcC+);_E9u?_^>2jzF?J#MY_<^p88qYH{&Om`huMDN zOZp3@kfsRT9Phlp!KNG7!QVWN(QNq+2iB;Nt*IgL9dAU$@5pmk# zeg*6TEw@(O93uqZzsOn3ycBwXtPknF)1BNStB}7pMod?9H9SuG8Sn~dJGjj1Mt&gf zH%NM~;`o!vyH$#Bim(PAFDK2=n!={CXcT)5rS?c;P$ zT*v(aI3LadY5)4%f2mu?(|VP9OT@g2uFgY;l3vzZAK<9|zTkA_IlJk^&w|9~?3TNF zrPomf=x+9O=VP-7)`IGO?sQwO=YAqw4i|&;Eoo_FN{x`&>c(N!E#o_*-=nKR-hYsX z%?QwPs>1#{LL`ee`ZV#+fnL`@qp^bp8YcFqqN^?q|5Nz)s7znbi%}HNGR>Kd*f3Z@@m;`Bl#Evi`k~qxyB8^Xu^UStkSuH93l3txjU@ zM}~<{5_DgN85%L8J-;-+Pry$7y2$w@`Q3nc->+QkU-Imm@_P%&0WJ3&Yabbo{e#3m z0;(atq)>NL?}?a==xDw#AkC{#ZBzXGZgA(fjkukVw3)dvNB=$9RVUi{z~BAr@Q69_ zk+^POZ0?5pLGvxyt|i9AzuCk;4~HH%fsY^5GQs_fb*_IMKpL4Bm7#kMx*Fv9Y+0vT zg01FTO{*I`pIvaD)zjx0GDbv92hXn*(n>vF>G^ev^Gn~KB7ds|e_!Sk@_flYuRQg9 z3(%G43^mAe7BZe}@ccT}`6c)7%82*dvB{5^JnU1Qz_RDaOU8_IsS^M=LsZGPp9ikSPn^ZkSL$y<143A7yMI^8RX>je_>ILiLgeYsXw z>Wc(D-@Jz+=5chjUEEFj2jLY^-PKNa;780OVH`XF{`+lqUT6LNd)_-HVwQXU?jZdy zP;F~m_h+Xo@2h)=_yUmcJ4<`hegE@rtT@lfAIo(kx*FcYM(WKbj#_VO9UJ@_yx(CP z@!D1-wiNr%J$rdyf!KfT+1K#we@d`V9Tzb_d*`)}-;+M(o)l<)Wmx;z3&bsjx1j|5 zd2G@2isw}_K4LRHj=KC$)gNRHYMJY#huGLLCUd}GjalQP{#8_SpwF=u!>x)0_Y z(rW&^;LcC?tN8Ud5BrXu{rT9*{J$MX^<$m$qXTiWFYZc?sv&;t!jEEfdRC&-)6-f1 zA9N0)Q;yE*2Jah^x(dp~yl>P^u#^@BI z^I9c3{XL!c|AS5|bjs2B44rgWb@H$u3o}6L<5sH^YxODLNr9W72V|t#J@`^)RkQ4M ze?$741#}%Hk44OGbagx#O8Wa?IjC;Vals!A_EDd@4Lx}F2~(j?uHIzpx%T^6lOv|V zWAXlG05*f+9#Gx8oUS}?xRLlTVJrCUXVow}7V~;_yYG7n^GI~n-vgwNe8x2 z+njXsh+ht`fQ)~un%j9t%DWZk9XV4YW;*FL$at_9o8Lg&(*XNpu+OCG=kc~6(Iwcw z<=G#}@3o)_XnR_2{R*zjt`mFk+x1rFbwy9mZ=s{-cMoaC!r@=U&+mJ8erJ5izI3<+ zdco==Sr`1(_Wy;S*zsM^S()`M=hy4GQQ_L6ETfE-Kp3V!Hb}}Q=IOvBiXw~{8o_r4sxBV{r`4X&Z=96 zZVPlZ=ylJx*lKw^ZFPg|p8dpY-y}8#b0VgbXD`>u=4-AiK+9vHwGYbU65_jpUmk-w z*SxtAbFHUyD`|$o1E4xmUkQvmeM$@A&&JpYohX$=EG{rlMYm$rkp3z;B!rF#U^n^Z9c z3s^Vy{JWPl6QKyyza)F{9h3KXZz28*kmscReQ8S)))kAN=ephV?`Lcd!qji#{&lgs zk@TJ1$Aea&Whr&7df%$1Y+=N_?fLf^X?8=?@8bULbN5fT@wAReWbWdK`PTF6W$fO9cR=&)I%^-(?`4Ty z0oBp(=j1#kX#G!J!u@AYcRPB&LgOFey2G6AFT|N$?DvDZP(;~Q?Pcp;dQ*G8=_HZ% zno$xlH71J(HrzmZnNR0&)bp*+T%Hh;`}q09YgtHS0rt&3`-k{_3cLwg-_Ei25qZyl z?cMavAR4;gxtul5)Rhs_+0*Glnj7I6P@Nu5r~V$w8O{RrMe-_x53&~VzRlaw(f)E6 zX~x0}p!q-2>co!zkv(P52-3jU>U)zNzy8jrwWNZ`CvyI)6UL3?_abJKr~3@)i(xUS?)6Sr-qZdb@tYuVUr+yp{LM%A2Xu9v z@MCOt!d_6_N1g7H>dYyArjLL#K;Fl%@3)HFYv&!h&#_<~>n)ycJJR=n+d*|pobEc} zK80`LE0F7_v{UW8tB`AW$&Yn4ZF|hy5HUwiiI-cIz3j_}WKiAjoNim#}lm)6ms+aSiGF!dOt<`n3bO*iXbs_=Dqb;Ma$F3G<}<(ug@5UCrO7zcAiF zHmGg~r#peTsZa!Mi1Ym&=E|+@u{IyFHnHyG={|?eN_ZPo_dcg9?_=3Pyo5a*{c@AM zm7wL8u{mP8d-?Dy=@0)EpFwp$rrZg!ABg({PWz2LuaJ?&^?f#v-p~*RyY{C2bIwN* z)6es_JL&sEe^A|xfvkzO`p%d~iI*^)qu(y9xAr?-(%wq9M$9mDwH?nP{VT8(RCl-2 zmFK8`B7Pr8=k1qU%9XZ%(E3pHam4KK{H^vo^HZn`svEN|#$-R^^~Cps#P0$0b-KFF zUGz!BRHH1(rXUQ%rVtK+>Naz_=kBN8LLcY~rOmnT1(FA)v+X$5s2=N1F=MjIBIZ4G zwf??O`facaRQF-0`*joE|9*gX?m=Szo95cFmRm8p+dbV>uJKc_s|~6<+3B7>koPDN z-x@C9?EL&~o1mNZCHK7wo(&8_ePsP6Ml_q#tB%b~_W`gZ8z&9Af0vh#K=w~TLD zKSNhTKItdI>tajfxp0d8F>=Wvd48E^Gr%9)ijtxx?|a5GbhO=0Ak9>G3e>+IRwp(t zi@hYoZ-w{4Kksp_-RkqQxj#hAQ=Wfckp3H}@@L$?AQw5kh*|9E z^dwDhxEu65*=`~sGKILOU>^87nS2Yp2%XL7XuVlXniALodY;RzPK+sniTuS{6(qig zV46G6mZXt+Q{HackEdG;n+9+ysO}L?SKiBc9`O?7xeY)6w7sit@*c(&PgkxBF2c5# zr^{n_5`yc3`-vY5a$Vr-X0ty{v{knV-D9W5^I;Y?FT%T^{yyV$Wjz4e8zn<;|q`w5N0@Z!Z>B@br2Z$dB1!RZxd-|T(!IYKg>U=A|JYpVs zBHn(cV>26yL3MXJ-BRK{gs)*6`1#Q1-uQZflw0ag5i`fr-9!3cVLzzug-%!c5t+wH zkbcC!-!HyO(Dz*ypt}fN4Y8znqbj2@(13Y)j%V0>AGciLWI;N6bo3=Tg%2 zfa^eYIy;^Fh#LowfnV=uqm%qg#BA|&W{_q+yZ}0{zuD@9WPijro`yu{|Hiz@v)|3{ ze?TM@_hX{-V~z)6wrKHZ;LJ>_d%Nx-xB=%-Y)*3^StNZg{0{ST|oU~saHa5 zC~;%pNtgtq&u9IOYp}uG?_HkYU-F+3^A5Tx&cRuve+hmB)n%$3=q`$c%$x8DY=U8T z@%|=|`jwew+r=Q}hx18aO5eR7-KtKv8)DID$W#T@eL((!zyHm9rnJ2!hoa_~X-cg_fYz} z^VNQ<9NjF>FM00nPV8oYmUE8PjVx=+-e}@?fINS;)6FFc>9dN$QFEQ=U!+RN90?bK z`geo#@31xW@x(t46Tq*BDcrDPv1cYF2u> zgY$Vb1e@8Qx^#0AVsd}{UE)82Qt5DjqB1p0$nMW z*2K31DeqQkaeueEd9==N%F+Ga^S3uPcfxz1{tk7zzf>oVws$6+27}pK*S7(CFPLEF zAF%Vs*0lXWQh{ql%^B0Jq5S^}(yxJap!NGm`3E!S%HD60h5f~q*q3_tTvGm@_W9W7 zVz2qtl05kU+wVcoYeZmfVtx6o>JhX(I0~fx>3i5#yY`{^m3(5<+~xW8Z@>GHgZ&fO zr`x}68u9nqzyqLux!V=7Ofsk~^nlC3-=8yYvt1`>pJwMrWjvHthOYL1FOYr>90JwV z>!CZ6LuLd_g$W?pi%!uD-EhT*!>;~1%u;mb&#s@m) z!7^9~wd=DUUeD^TbNzL7t~a}pKBqy{)J0dz=N;024BJ6I}Fa^d!M;fi} zQ)=tliIk6AzZIlMO-oO=i1g3Fi=etp@gxNAN&1p_3G$vK|N2<+LV}ii8J%(WN_2O6 zx=igP{43pzMo}{aUG2wf9TPHXPz>s?%cIx>HJN+BGcX-0^ppE5?$^xad6j3Lir0s` z`3UN8m<6hPUf?eK!&h=WPyAlk1@azC8Mo#9%fhx@zfXOTa?7QDG@TXKUDJo_pW{O2 z0#Mx^PWN|ylW;q~ebb=ge7V@wGrf*2<-a?itNHLaHuK?4Pxp2!7d#JB_jvjsXaN4a zcAsmnI?k4!9W~QD-S(u{CjL2?1^$?k-p0-gbiJ=QGip9XSHl~m zUjv&!$DvMEH=^sfUnOX6qfI2YpnW|ZZwKRc81o(Jl2hXTUFrP$lKDV3@mIs;;D673 zr?+l63a4^gM$NtGYJQF){Wy3E^t@$UAq3waTuuD@AkR53Dn;go$fcp?Sfb>%7kM| zFZxqh-GsHz4{ZO{{BYYZ=A0KbXU&f1LpC-!a22R7{|x-iyN|ss{6~Kn%D?^c-{tx* z&4(g%JEE)p-hs^om<+1h$mz=dtG&dBP7Ij?9J{1ZK2XG1w8Z6u_`4o2%Ce&7adcAy zmw0~*HnpG*sBUMc`*Sz0YlzQ=Hqa4gwA~(b{&sTfdj)NxX0@k#IqAoW4Ie*J-F&CJ zw+{IV_3DPqF_1~#W`pE!<|y0GbVXO{Wkz$VREClh?P>ki^4 zz=O~Y&AuT0Ore|SiLTV&j7y^CRCKleK1ceOVI!!&Z#mt=QbXnls0GJ>Uv8Pp64vQE zM$P%?>bP?j>9e6TsP30ecR%x*F~mOwkAi-TD5EI>1#7j8)M8;mP+$1j~X#LH*G-~>L{>pP@>#_a7(;et^<^Jv-;(rBspRDh1 z^+KD^I-Z%!qGq_~??G(NIw@qbK>dB#={`u@SeOZq!X*5a>j$Y1BV9g-zcT(7=S0m! zbhX^(k$w@p3aWcpG&uFxZ2VnCyaat8tdyP20sH^jk0)OqHASB88th8pQ%^U==}J4^ zP5jT0*p6$vd>DYQqxieI=)R4vhC|pyPv-g#q#B$H&8%)j-b0y5d>fE^n*Gz5Z?K25 zF`9W-M9t@(j_fP#NV?9RPFtrV`%3R1ekk~LbvAjK(>ZGD%u#RHcS7GWigcqr9sZPr zh&*RJkND@E&OEMJ3n`OU_*06`ndoRaEFnz^ybD?m^Q=zr{?d<#-v;vjQl0;bR!5g# z+V3TIiJELr_iJnpK-2nhT^<9I5F1Hc0nC6x@Xs}c{i{;KS`Ou1qh_FY-twNF71+ED zQbVL1YKtn@3$hlAArOBz6( zNMme*EEtx}4;R>ayR(g*C&+sew_#Y)Eozpan{I7QPtxB4w}R^SrY;hK@9vBzUV>b= z`SUPs6S8lJVmEo+qh>9-TE3I8dkTs@-IaloiH)JNi*TKm0@a{GIb2}<)pk~Pb=3Th zuJ(@&Nq+`(2lcny>6UTT_|qJ)@?^+_>&{q~8ZMPKoR4JWTEj zwkQ57xDlWcAlpz{dxYi zQImzP=I>t8hZ=^=v7owHPFMEpTu%JeAp3QE-F;41+fUwgTt|4i1F*RtHiGKPJX`$T zl#Z`(2z~@vWBJ9cu~gq+=jGadGJ4aWd->3X`CBy6#uPzR&`6wf>&Tq^1pY0o5I6t8DBo#(){bKL>LE*_=s!H?q3fuAZH6k*&Y^ z%va}n{=R|DX7~hD_jRW`;zPa(+?ex$o{%H!<7m%|GJjfc>#vM!Qf@^zN6q`5u6##w zG&W;Fb*sAZUB4r_NPZ`sfBiSu`K#k))-6%9-P7&3)0lU#TjS}T>~t6Mn}kFB_8LC< zy8AqTr5z{tXMGXfl)!>x6Rv6COi+JwoUXLDBH~|#=U@S4wj89~vaho3O|Pd42CzOj zFW%lhB>fHuHI3^&;B?D~D~H3HQP(*7^Yp$SR@{$}e_PbthOUM#*xUe*fXGQd{kzqT zOv+&03qFQ<)UiD7Ns6zTtJ%9fG-~embfjv=P7j&GLH;c|Z0VCw;d$zO>>l;bE1C2s z!fBxSHPhO~CQzpBi0=eN3FX_+bpt{`3mJlmFpXUaN zuYLyS41RvC=G^2QwY{g_8#Sfgd7ex94seUuA|~fq!;Zrd*>AFe_z%JF^9mU&3x-F{ zx1NsHzu!C^x^4*(t$&T1SJdgxIp>aun#1SE&+{D8TmbDr&oeuaF~NIce(GZXBk{hj zoTCIi&r)<7db(ZEyA>Yybgy-~<-{F?6VGJ64ugBqMnUun-F#hj^Y3R}09_rAGD&|K zyaMX4TaJr8dlqd2zJZV7mv1=FZ>?_L3|o(7Jd$~8&giHafv$$r&t@GAt^h5Us!|cj z&yiht&kFGqz%Q3oGG7}*eMBcUNNUVX(kz2FK>c&`me`5sgv=>$9-I#HeufnKF*)yH zu0GyW$KH3y8p}E|y6H~$BGO+9SAgp3`b~G@TKr}c_Tk^jbSA4A*9LQ6QM4s=z0LN! z#prHDH`D3%BmM1g7pU$9_P5w@;>Li40*=$z?0($9cdpt|h>B@=s=xK}{Ja*k!SxQ~E#s;4{g3ifl6|7GY#o~1onTeE`nYheSZ zZU_5YYzuK;f`pwM)5zOCEVgHQx@`wq-GcE^Qwv>ACkVU6E)z|G7-^SsUW8zM>}294 zG~wvKS3~nb`dyh16ii^=jjq<$mZZN3E(X6+ z;rTn7^aU^pRQD67EBhRuC0@cJj+OZ<-wnvYFts3R26?(~kbXV952{Nuk`TOKq)rQ~ zdm6`Xk)dPn*n#inK4 z-?mOSeH{HL@wY%BzRR`X;52*fmAS#rN3{RSnN0uh=@wu!6G}kyA;;gl>)J0=wY<mQ!==FNS+T{kzWU#BOWNeFJzJo&$ z>Yk?Me_qI(0}|SCETa5JcVI7!*U#vA7te~C&fa--nlIohQ2&apPV6eqv&#AQKdN!`$1E)ud7dNa-{wTk3!ZK=>FYr{ zsO}!8EBDD-5q}X}z`6TAE_dxobqmm4@8xGlY?kck680PRm|k{)}!)V9Gd$&E1d>s>`E+f$kpsc!Kz+!SFx7+}62r zYo-16i&68K=kK%FEQRHuy33tz^klZZ6aOm|BQU z+@xKUqWi7q@6FiV4Z}TMwj2ij%J&8yC4MR-`r9Yb--YzA=w<|_)EjIT!KO)=F#XL#MPV#l6(|wbhV&ZSc%TZJN`FMS3N&3s6JE(3C`!{1*oa5cZkAZyf z+r@0BdmZcWGEXi?_XbaQ66xo|T2S3aPFKEHboNDD-#{A}*NpcH%N&8lrS!V?x=8k2 zi*DJgQS%bI8vgBl^whCQqt`C7P{;4zx$UZQPT`v4gdCh^Re&c z`86bqZ?y4un}hl_(u&81@tcIJ`HkD}70$OR^-SuI`jxyiYR00g{m1}p?uU0hUAApW zhz)Gdnl(&@@gUzznnq@bUMU~LlB4YVmik!m8uK)Cwcq=k^gG}?psNVx*EDSjRpk3w zdx@8Fk?%$Aq`ruj1o2ZsDSB^teyZL+Pw#1)^lv>`cS+Qf`Lu-O<;_t;TIrbM~ujQ%!obB0fv`PQb zADJIWNPRtOx}m2*_0IG3+$C+`kAHq*lY@PK>{FdUJM1ol&Y zvvQPmZ3#u_twAp}_%Fs;bfi3{dV1Xx^tzGRI!>zQ|3}-oz-cwDe|%Ll@17{ey%OFo zDoQ4Ws5GT0!sL>oG$n-6L=?h{a-uNg(jg3m5C%mELm^4VwFqa9E{ZVGQ7HYt&))0l zeR^$^I_JMWpI`fJ?dSQ%dBq!e%iifX2hrE zrTfy>k3x7y$87J;hBrHdS5^5H!#fRL+o(95){ngm?@iCs`Z1MpS!O@Jl>S6gIlMve z@}mE4<~1<94>EW;F+92MCn@)J`X_i=e%cfD z%5SLQaal^z=JHz~(_VEPQVFj+yv+SE((q*J)bgs@A9-^)pD;W<9$ssB`JSianmC@0 zBMRY-hNnsH8<6@k-tbP1c(L~xm*9U3{#t)0;&%_a-}vtm!Nc-;l>E4Ow12CBH{I~0 z{t9op;nAEVZRW-GZ^}!~&35m?)AD~t{yr*0I?ibk@xt%+EG1vkw=AXJWgZ8GE93J@ zxJwLI-e37xgpY`y7{$zXHj3 z+3mdV%8c`}inp`f>2S4ts~yiZNK_js_Y%*Q_gn2venWHwd8iy>%Jogvozr%S6xMSdI+Sc>P+;=!HGuu0e zzj+C|4ryF(__*4y;`#ykbI@#L>(k(j{Zl-j^E0@*f8@JLALFwMDfe^FmG?dG+=Fu& zR0m0W((PTJaXy~+Znj&WvAu2ZIUGq%m+LgkBW`$KP^%Nu^F>ldMfmUYTsp2!`1L?n zB8|%*?}7n;;BW%x^XN;)Qxcc9pJsW{`K=sR!ugi>vfV(#?SjuqXdqH>;U z+>)DGlTdcJuS`s!E@*G z{O8x?|Au}?bp2eoVSV~nwtLBNo1b3YwL_zka{GF&+;4PxZ|1boxoFw|z88h0 zpYQShmhmQ+QcvM(dKvpS(3eOyU)p=q>~L+?-d%ajs1N-Jvd7R#%r&}Y+3rU;y8rXB zIUb#eG`?;TCw#BgP2}H(#x32l-A~Hs=TghF-F`FE+!B1AM$aMT7J9C{=cDEsJkyJE zk!|<$GPq^m@Z1XA&HX3#d8jo~?ms;Dvz@u!@cgKRj?dsqnM%@rDt{&CGbY|%*k6c> z4VPUjDadZ<+!FG?M=OxDgZ2&Ri<)vTG4CM}t{#sISJ4jOYLf3{Nq@5Ynd$z7DPBqO z<1YN~Hru-|eg~j#NVk_$Pf5WEd-7Q?@*hC5f9!Qec@ENUZ}K~?XBqB1d_F=yAm#F> zL++(-a6P{-{RxuyELiSJzr9+H$<^8JZL__7@EL|aLs~C+j80NkSwEh0L!TkJhFg-1 z>iX_O0#{I(?Hc-tKrue%Eat4xaHO0`QGb{9WiRIK$bTEz`dz^`m#m?GGn{F?xdu&q zS0Ztjc5-x7nX1ck)#J&RSeCIrCFTBG?`$w}P^Beh$@Pu;{kaZ-Y#ih0 z8;jxGYdD8t(-rkYx;-^KNBWmH$^Q_^HM2tc7uk2cU*=n1YqQ<+aJ2rf!e%|%p)kGQ z&aW266Lci+IMfUEM6%!J4PZ=Ln`aSyf35qil#h9}c_H)*|G5zR5h#T;zL60({66dq z@?S?1-w+?)T&{_f{*vu_!qNB^VDkz33~9Yu7Hwy+iM$;KME^Ot7yAX)D9@7Zm89_% ztj~5MO?-RcS05#j5M)2rlt9_7@*dO!$(J#SJjXAo4F6k=e=F9Xj^0GNeFsMVS@#dD z?jA=kBB={WE)Ga6xvK(~+>q^FGn`9dw>X<|1yas)p7VbAm-(hT>uh}(H9w2zyR+R# zrkuuNGXYITT27xwobY(Fko+Y`-e+jvW46p+hthH?{3F}t&hmel#R2qxtMOZlG(JAn zDk-e5wFYsoE|Rj+dwgqg+^m3eBplt3^|6uiZp2dK`_9KF?dDMOC1qYWl5&%z@fB>! zcKzV$@#ZM}jz#Ai?jG_7=+ET6F(u?bkDf;Mdm^)F3&PcYHt7;>w2Aj4>_11}B8|7H z=gM`{9nN99(Hwr;^QlqqZ#m8^fqReP%6l&wIT(B>8THJ?=``N>XkC+~#oWMCR@_c=OQbhTAV%7yLn9&B0ug zMY+gw*ZXqN_Xgw!?6(;1A^2&$1OEoMZF#iclv@t>9>eVguRl89aL@DHYsk9^O+vRJ z8*f%By2hs5!kmPA0d6w#byKjPj-E#v?81pb-z_#0_1#{B7RE0d5!1pPTqd#Ak+lea;X2$s1Mv+ z4m%{==_cMb*dL9KMasR=bNiEb0lESWN0vJ%Bi`hW3HM42_g4Ird+Xoej>+Iwz+E0w z4v!k{oqwYoT4a_(t%R%fa(dqS1$Yb4r-nPma}T+Idsv^PFJ#A)J$yN6zf-zr!rg1Qjj(Tt4nxZA;<+;Z>PG$<=pFt9 z-d+he6K*mpLpK2X5oi=rE~nO#f=T2}L6WAkoK2gRaepSn;51S zv7d*QA>~pel7ga(==0G;G#)Kue3sjYHQbLp%J*l#bmm((*q7H!xK$?JXR)7$)*|H= zdv47lj%}zp+7GQ~{G#7!N!5tX1Ek-1OzPQw33v4DbUk|r`W>c=VrKmhC&!o_ziN6So2N46fGSIowyh z2R{2CjW^-PCGx%Vj^uYk^1X8#?~si8PzLu_xXEzqoI44h-e?q3?#`Yo-*KEp{(LkC z*|AfzKGC>D`}Lwm3HPYsuEPEo^czxcOV16*B^O8KAooX&sOL7%t7$pN^KxT}u@dep zaJ8Q8f?pCHiIjV|=iWiy6!bDGMPnFaw_yBGD))DmNA39KhMZ$b{cVzP<)(Z;#(pXK z1}S%p=k9z7&k`d^FBe9!>KIbvbmX!fk-7N#08-<$D=^{OR!c=EvjJ<-L?T4ll*8 z?JMc>n}GeD=s_f5v_pGJU|fHY_d|X}eg(2)@2RP1Z1B=$%%3vvc{)5j&VGmOZz%7w z^!Bxkc)?imiqTYbpZumTnbw%{WB#Dd?5O_eaW?Oegu5E9rVp_H9DRkP{rwM(OvjFf_^~C)%!qix}0~jpeND8NX}<^aPA~+Wt2ZoZ$9p|OStxMHQr^| ze~*4e%Ho-5C9?QmsOA9iCY&-Lqd z4ed8J_n#dTZlZ~|8?bu#?2DA!$#YMX44;nYx3+a<%2MMkgZr#0-#mCHp|cH_N1Y`F z_mKB6nu(r5wjAd9a?s~@lbxt%Cf@nje}=w98t?J!3*pNB+|@=$<#2WH=)8VLW9F#M z{Z<-pUgv~c0ayE%TKLsP2O#C1#7@$^_&kYbB8~SB&wZb~&(R9> zZzR|CTvNv>O*HPhB77V%8yC7v*GITRNjB`7C!Tl#(S;jens9=RC7G;qbw=>h_An#)k?)OOcy!5~Rd?q3H1+DYEW|YC;ouXs2#My!Ikfb7b&%@L76!{zQ z+3D)^ajQ65nN`8M=H$0Qwr_0v0eu9VPfc81vFV8hAwB+0jyQ=YE~dR+!<;peZPnOv zc!#ydR(@Q-;bgnW*7yd8vPSMIN+3rWke-c^dESR|`CfvzyD24e-Y~Dl5k#hF;9GN$* zdo9mhAUQtk{A4pugi23JxFLpf1UC6-5K<0@9Z6YFkoP=#9SKLjmA;t$P*IR@6Ab4o zY*wL7NI7)lA?Jlb%>P}-xET zH}pNMD>IId$~@c$eI?_Tr_dIa?# z-npHkaY1fLG~WHj_a|j%(EjJ9+sAtBb8euXBHeD^hXo&z_b>D_T8Zp=_TX!ydBb-5 zM(2TL{Sq#CGac`7|6p8z1|#Ki>Mto6N#1qnMzo1SnMGrjeI@1C*dJfUZ;JZA6yE}F z0$1DfBzzu3Q;~9y_S_dPsODynFKLH|wmiNFTat{6rC-hMpKzTG_htOb(H}8fxnH4h z9One+LL}oOJs!?tUkO+HiSojPI|HsB2kylFKJ*~ccy)enCV6E@(z`6>`BA+uN0^er z_mI%9qy{jKhpX*C>g$L2e2tVlE+n}?>gz`G6E|}HLw%L~rswZneEDj9t%N%XZf@l3 zcEhI`>VlN3&z;EoLoX*kg=F4E`trH#nA}!ex1_B~yqo*AvuR&&HQkBN<7fracF-|e znKgn7LmhA8nlX~O>B$^tg_X?8c4dPS?rXE%mt%7+dKzhb7et(3@3(nJ8u@FGe6LUL zhv-XL2&?TYQGB}HDF!<=d;=GE>ALqEPrr!dw;Wg7BGMM`MJUGa0AC=oQvLQZe)r3Y z48Icmjx~M_uy275Mp_;(M}ApyziT`4^O5ZrW-~UZfK%7RJ@9Pa;ey=|!(lf`%6g1- zlAg=p^iFd9=v?YQ4N~{JZpUJ5wOoIX+=FZSMnB}=G5ogU6)9UudOlMLcR1UrTsfcq z3g&l)nM6&CtO}E$yp?d9!PWY3EWBRmLc{IlxiUX^JNb{G2T)rEFm3XpexY}lsQ)hZ^`Y{@gex@h zzK;DnXaUl4=;yf?(H1@>U($fBw2OivT&FVJFY%N8w$gApd`SxAI?8&_-P(RDhkKtX zhfVn9+`@Sq(s)OEuFOLpN`7~gkE9&*y+Kob{ndG+vZ2fmns`se{%mvsQtkxL9Yfx& zXcE%;pvTA68TBD`QNn#`xYFJp!0!>HTpk?^%R$=PEb`|dZExC+H)L>=!|2cFrR$mQ zxA}(4t+yd}TlQNDZZo*eLRap!g!d&{ZMaiBcZXY zHkyx=TQlmyg2m)5MUr-SDE>Gv`%U64gL}3qhi~!w6}7lM&1DKiQZSCZiRcM*Ka%oo z;mfy-F`kt3+xsz>NkC$D>nGTgDRhINvy<4|9QP&pD-hK? zEC>CL3r>%J(_3 z{|bGLlshq67mmj&$(JPKF?&D0uqEkyV%~KLcN1J~x9jjr+{HB~q}=;GSH44V6!|Bj zW09?|V|;n)`BN^FrjNtTk9=J}?1!Q^k#eVb?rV4R9RaiyeTF7LPA)Ffg-J&|%3dG1K^Zb0{-i73^X>p6X*{-uTQZ?zoUO$oOcZeirh zw~{#DLr)>)e&@Lh$XkRYRj@2;>^7fIORSQn^LNgWc*iH)k8l~Th3OmYtN)Yvd!*c? z?-v)4w-~KK%h3$_#4;q;#isf5)BBckzb5t-Hz!=9chl`4{~qS=QGcY|-kvM(aTrhj z?MTim?KxR{Uk=(1N^VKGc5w53y!YYr7@CfhOBX6Bc%8hrkfe86+WHWc!lq3{?6-b9 zFmHQn!u5lz>K4!}IaqOQ%uOj8@JcztkdM){XpkI+K z-yXhvy9QCb#kVtFfSU}X;GWIN)!nXWPo!Kvp9t!?FC%gzE)Y`xm+YcqBeoBITauxpLp?c=9FP!BX~5=5;aY zU*xd@IKE4;jE+RY%H5k-m_I7aj>ZAn{}tcE`Ll^nu2VdW&rGE8UFhSJ>lEeWFG9BN zj3PdFFXzi9z7^Q4LH|Koel!nB0o{bFUJ{kx5&YJEzc=w|dzARz$G8ygPlj6)zdcb4 zq}(PU)`j20J(2vg(CNswo2jPXm;I8QoN&9mm##-cvA+r}LdreZb7w!uJv^uaeTpVi z4%3mu+U>olo&UnTZ@9lpm`8=16ZyJBA7YLV9gCFPz;n;I&AGG4KM!>#&yIik`u3RR z+haN0c7}TqKG&jYNV#1+SH8bieG2mmNX8Sk9A>evByQzaKA3QW4fjZVx}#o5x#xMV zyoYNH`M0C-Nbbj7K))}~XU)wRr?@EzcO6_!@_g2P_>>^o^U}`8MJr>U&&tRDA^ek( zjk}cP}nZbNYV3@`n@d8@SqkEXMw4RQ=&JSL!_}=uX~g=t5M8WWVeA z_9Q=lD$fHq7yD@mm$xv@y&C%mP$|-QyL)cp5&CGfKiUUb?)nUF>T%{t4fjawPebP- z1YPhe(L#%o7H|A<9>7=nn&MPv11nRC9UCx(54EX z<$hy0y8nk^bI41udn}MLk)-3aH#V+9{QJkm^|gtsDDvN?xXR#O16S+8YIwnuT=zq|z3n}>6L~$5q*GYh{xsU! z^t^F-S;E~8HyK)UA1?O8&?QK@gQIo96XZRQB)!5ijyuKATNJ**^;uJnQbpgu=Pe|^ zr9bUOpF!HGMyn1DL=2Wa#Fqk6`~@gKT-^zr%gw#$U=ai*LP5HvWhExaB(; zna{(g@SkD)AHna5i}=R1@h^(%PmOoT`xwdJ@6E|!H@viFSS_-43Ql<(Bm@_iXLKeb60Qr)41hN1ahwuH;?jJ3mPG8)sp2 zJ{p3wzVf;yNx>-cu1AsvoxA0CakM|u@lJ99<59TUzHY+rZuB@(?v0*XmSQ|d{zvE_ z&Wmh}D>K@GdoSURhpS1xoAxz+Ymm18JNd>NVjWU)E@>6O*W_6{EF*mwS5=EodGx3dn~!3nrjL32*c%- zijo3(j^PyY&p>h?xZDq?=l`Sq_+8Jlau-t1OuQXG=NsT0gU>PCRuVYe<5)NEAJIk^ zkvD|8D*HnBtt>U(0=PdL?)mUWpz95nDe#ah-}QKm{8A*}^^kIqd&Hz2Oz`n4H~)R^ z@A@$Gi~ivt{ThA?k?vo*AW2!$Uwupd&&c*sZ9n3?6;3b1k@h9qUH!Rq`|{r-iaif- zM@6Jg6yws1|{qaklBUt#fgv5J0S602BOX1#X;?n)m$i($y)WoXm z{?PUy{7U>E#$W46Z-O}p-!>+$GsKYnso&8(j&)~ZXY0viU+!8@@;*qo4-NMe06p)v+hc7a?m2i)X;Z8K%tNsRebp|*2VZsfH;XY`%WBvwrLk711 z?$t5erww=f-{97|H|jsMo~7VUis8OuxVQfeZv6~yDcomcxbGS+({hrk+;1&1xD{~U zi{XA|xFsRBYHs@sZth13w=#zNjp07}H@H1AxcP8ve4K61Vww~~Tw*>CP+ju$c9W`?_XJGe=>WrmvvuOsSgxc~Cpr#`FZt|NaE zx*5%Dk-k3M*VJE`$1M9K;g%S#*54-#_q*+gw*u}jG2G`2_owaPx=)$U{UqJqv>aYG z++Y7jISk1thmu8{?-{O^!|#Th9SzmCsXmm!JvN40V`jP?Gd(70o46Hl2gY!BG~C^` zgX`Gvt1`H|!K`Pvbu+k4SSS6N9q)`bEZZA~Tek+7qWVjmdSi?Q-FXF9= zn}Rz&hI_N&>hm?*avUmw`$!D;PQyKWJK`;a`+5xbKEu`fF1ID#3b-XO~T!E(U$E^>hDa$y=FVO`EU=4;l5(HOjStQ+>YfxTOCir?H0p* z({OLz4sHtW*)iPr4EK)h;FiF>I)?j+;oiF)+%mZTjNyK1xDRayw*u}A!-wyORij~)BI;cCCL(Qu#ri+HQ*e+%G#Yq;`ULH6@pS44y!&bQ3+TzO7k zQY+RS%Wuogx<0y=ujei0aCc{btMeuOh*QepD8qf#bGPMqk^Caz4vyh=Gu%1b!7YM& zTnzVQ!=1Ms+%mZ5#Blo>?t9z8&HXarQZd|f4fn(C;1bmUnkShtGzjNgm0L(f-sQ7&ymwt4I7gIgA;6>*7&|q24=bpHZ&dul)ai^Uh-G8Ipvajja4fj!eozC-z;s}*6GT(<=|WZC+R`_S+^Ry zACboQvHYO_%A9AHYb=@b)_Pr{5biBzyM-&)Gk-SRb$`LFYCgOO?(_c-+!Wk@{XcMv z;bwoHE?>FsvyL+O-IPO3Uk=-H-6wZh!X5Viz%7P59Ip1`!AsmDikcy<4^zYH!1pSt zs-4O2j*9th>+AH4^NG^s33mhBI+3p{z~@0U6De2cbL6{CbzkQFyr>yk&?^0$QDcAH zk^3@c;Fz~E;qEr^o{0Tv=p3Znq>uM~PDsa)e>=Jn+2>EYWE{^*;Z8H$2eF@qrX%GZ z;kojh;fv(Ijb26exIR0h94g^1pzqXjScv^6=rg3;&L-Za?UFx;Oc&l#0+1Cw&~xLyi(MGUt#ej4u}AMdts zE8+eDSIeO;yas50!yVzdQ^#;#Nxr1RSbp3vdJea2$MpTDS`G!@CR}n!y8d>={y20Z z(s*z1+}9cSUP`{C(JXC!$SjBCcU-T4tH-m2*K=JSpK*qJn!ipZ_uqWYdP#D9&$bKY z>hYlvZhj26*l>9*fuvwtxFvA=!PPVg-h*f^5?njZGm1!_Bk0j6I+jh6 z>(;9iZX_JtPX}Ss4GlnAo=h`J3grH@=gI#9y^qFq<=ncHKQ3}Fh-|yOKm2G82FV{2 z?jL5m@8jasRP-Oim9cK*_{&A4+pQZlLjr0EHgxd>l4!Whva_Vz?s=m!>9ZbG-7Ot#KVUl3oB;>-%VUcV@Z$d@GV|B9>coBMsZR~oMLcaP%xxZ&;sTpe!Blav!hUpS2tL z8gEtHBDnj)O-8;>%b}j({ur$bmUAyl6VI*WcO3TxK+i4wWR=_Kk!koHqua=T5KTh1 zTwC}!wSHB=z20!AVgEFG4k`B&&wYiwc}SAfTg%O?w|T#E{l;+L$4|JQBIT~|T$$JT zn*3ELliNNc-W1%I3|Hf=G+e#@xGnLP!~GI&vnVF_8@yVtGqyn*@9w@H$a|~WkT0nn z%P|eo&kt!i$a`a6#y<5M^A2#^dTtl&d!jRua!>c%3(30-U5Bnh_1W1vZtvmC;kk`b zdr1DCa62+#q4i7p*&Fe>87WuaJCHg4v*#HaulBQraQBPh-fg%%k}c^^{dZN|61bfV z_d$44AEp`Z6P_#YQJX=&q?cLR_L~`RCEPRNYP)y?`_E7%(sJJO1O_qyfdHU{=lcX32#n1 z-n#zyDE*D5t<4vez+G#&JHgu%B@MT>F9*5bZ-=w0xx-jDXK+*w(}+*Li{01P-=X|z zi8tv2w=*{&X!%P0?SNmt;octgeSfNFarHsVw-9cg;dX;}CMq%9yFFLFv(#ZO=Ow7+ z$sE%;A<_47toQd(E4Q>d-!y@%?M=$zX8ekg)`#Exe$#T0GX9P-vGu{$UwJMjuSVd` zHr%Q3owd3`UrW>@x(CvZZh1X{eB;x8~u2bb>p$K z`+ZWzJa;MF-73=D)%g65c6vJVCTw`}@#5q};il+jl;F zD;kO9yJ$tS-7eVo9Fx%%s0fWKWS%Hse*R$8HEIKTK3}+7;N}>v zJWnOhCESRg##>E(z@13m`O$B8KfmMRRc;B~g)!VIhMU+9ZUx+m819pX%VThowkh7^ z?t%LwhWmoy>UUtar5p<3*86vQzsYey%J+4{t>@!?hrExGq^*`O+?Ix``)!Hg@`_4H z+f)t}a622W%%4iU%MG`K=l)3ES|9JPETukVJ|C|2A-M;~8@SruBwl%*=nuo~SuKiJ zo2aLo7U4h1_`ihTs4uFyImUlPd(N48`htVtk*J^f~my+M&myizhUSa zr2D@_4C$8Sy3m8AP-cvwcPTa$GYU87Do1-Atr$yby6>$4RC5KV$q~!S5|J z-}qnQ{ns7C^DX4-xInT~`%(X5{1+MjR2BXO$-sSzzwVzU_BLARoPv?Fh zU(&h!*7B6&y(Zm1MR1oI?xhcLJptd}4fht$mFGiuE9X2IUD0LBd7QZ!<22VGaK|i7 z$9p99!rdQVjaTPK2D7f+UvQUYaEswS3s=W~UGO^|oo2WPN1GmuC+{wFACm9&+2j2J z>V%Yq_V0O(0{0$VO;hoifnGsc&n8CPti3+q*;{l7lCe}?w}|xx%<}yM_b(IQk=S%X zU6F40V?Msj`4AhQ?kA>Mqw}*Sf%_$cdjiZ}hU+f{2Fe}Cy3Bd!)qcB`TLicEvUGWB zyyqJ(Lo`X7x$>V(Zf3k?a2v;PhZ`Z+! z)%G|$;I1>=wJ*{R@LOlN$A`tRZPyF( z4hY;7xO!e8^KQbe_F=l7_3>Pp&$IJ{HeTIt-*XNw2lC`I~eZZ?ckQcO~TcFrVi&ZQVz!&F2fB; zfz01roFD%F%W~i{VOYMddEh$1)p{oL@v`4~8t!EgDv)`8xqi@}b(!t0)_qZ*qxGx+ z?m$xxS|83e+$%kITk1mz-0Mxey|Xx$!o0$8+xd2(&rgnFojgBj>skGbcq`!EZ_0N( zKKCGb?+vcuxPYOAq~JOpblI8lZ6j14$$eUVeV;q7VKh&u{aNurfqUD;dldF3pkYY4 zgFRQiLo$>6cTpJ{2X~0)uJrQ*TE3Mn1Gmy}zsCMo)b!&t_h!#6@5uA`ff z%sqtjCga}_zZU3pq;cHD51LojSLA(*)*=}@eO%AENnCTU!wUu>9PRHKe9AkZ z7*DidspWKz{6XrAeCPBy@_Ql)($>SQG10Xgomb93EO2kYZ5H{uzW7{>%8_!PiPi=6 zIIuK9$Dp=o0(Hf8j`nM_L!$W^xz135W2!yp z6_V$_?fXI6XY>;#9jQNtEAtO)@mp`WdY^vgbrrkcWm_fb_Ex|h23PBo^q1~)VimDH zQm^lj4T~9{#9dd>`jnR+xNA(jvdKHa+{JMHeC(g@!>lUae7I8$cMo`tQAfjNwWRPq z+#>QvBAHLM+?->!-0!Ya;O3ihD8}a*RF1S9HhON$B|MjfdZJ^Hyk|GBjSJr=+17J) zzOTG<;MSRV2V;LZx(X@xJgHd3+vp442aL`_r=oJ&{?y~5b~-pC-pX!)+l4xl6UF3G z*x!q0BjpCtvA`YKxthymQgI(7<20Gu&~LJ==J#|5sD;U0z03FuU$+=-sscRcSn zBYy^Z8rgO=DI?z89)Y_6ZZZss_gZ3KftDiWJ|I7c_soXQ{Z785>R)ZijcRZ7Uf|2v zr@1EtZZur2zdK@I59J}{9vzZgAm^if$sdBwM$)&IGS?;F#q8qy7k$re1>C#fYLfbU z4L;W)`7P~&*HcK^;{KpY{GK!AC*ztM@VOCbJpR6_&Epz@WR7ceJGGtWpBT9J4Ofn1 zx52!_a9@ey31r?)=XbYuzg`ON4~BcqwJwbJe#4#Xxi`TrX8qrZw;XQmRq6fx2)r5H zs3(S7H$nxChA?MNzNCZrZR?SigMObf|D?d}6T^Moa2sz2w-jzmxNRd}x6sGC$Z(I` z25!Gg{rPGE$AcK|GQ&M}JGjMgd&ZQ*PlkK;HgL6kUC+P`GF->W-bw7Ynk=>cUhKJ3 z$8i0we^fax8CLavD}+1Jl*4ZDq(0O)+;Jw}7UWC%tNNhjTMqXgxH*xp+Y{zKs1^P~ zkapTN3Ni5_?f(GQ#nmsl{u`!~1NSIAJ>NM3P9;A1hR3v>r0Q}%z;Wa&PcjSepM}5n zM<=mfw)1r3|D}&d>b-2I`fFX6WiS75LK(cb3~vDT7odxf?vJygq6)^4cPo-4-&>IT zUcNO(JdK$CVp9;9y z-+CyEr}4`>gE1dV-5oj9~fe`?7z$KYmcASr!4GuL-moCH-}_NL3_&Y z0`jj$mm+&yZOi$E#Im{n?iILW;pRnu)7^%B37UeGJJxgM_&0}qNefvPH+GxvuMnoB zCpbAC%liD&19zH<_Xo%Q_xLPE$}RESy4|@>Prjt@S=#YXL`}zA3U?4(t;h0xfM4+W z)o`bKuFQw-@^8*dQ9We2ef>CA>s@|tuGboFOYDz89gxO*Xc(ajqN=9zv#-_KqS_k`C%)9|03H&=5H$$S5kHUQ(JyS+wKam&;Cv_TuT0t zc^c8%-o6I*Z^(*-{KI$#`yC?t@c+xPJB4508~cXxr?OmiiB0y2q%!<=HGk)K>_wZ5 z-#;S1$YF5c_BHnMH$;1{jJ8AK`dA9wZ$}>XZH>Jg*TlXx_OktA|FzhnPUID0-^tkb zAn*Jq*mh%|E9b4)PbDw+e9k8$dot;#$&+V&XR(wd{9P!cy)w4D5Wl|0Z?^ZFXZ&`J z@hin|u<=`fz1+LDn5AydZr<+;^0cgz7jXU7_u&7e&bg!#xFIL>u$#HA@BE$@!LDb zFZZIrEjNBMz298pSKs^1BTu)l1i!VBUrOrZBGx^|_I+#o8jw$&PW1bhcLeSj%|D61 zrkboT9TvD6tNG!R?0eB5d?ZOde_DQIxkPacgV4fM24}a3lah?V_{+8GVTSW8`8yHM zxEM|}WyG8qoQ81p_@eQQG@RLRc!o03mO-d)i!OH+2T~=RgAM0e{DRBJ%!-MB2i8d{g45gl-8b=Btm zGdMcFd>en!yGY!nJm2@6nyVQT#O#}9!<@^%G;rS=&S-2uq9KiCDSJjZ2l9jCLgGg9 z?m(kp$#GHZs4UyUl9aqGa2pKoUeB9qc+E3-<6?N-JkN~`+>YO;w{x23%`m(c8N5j` zyxyKy0k59n&GNjthIf$X&69O#S`2Tn=ar2L+<}Jox#z7gyq2E#EqTA9Suwm(o>y{t z;Epsr_kFZKYOw?p?hm=nFZ)Az^I~}8JTG-c;EprAT+gd-czGGT#WB1|o>zEf;LbF> zr02CTyjB^!l`*_&o|iwGe!=ka;M|b!TzkVi#PjmW>x0(E@Md{l-c^CS%J2%YA9yzX zw&At*yi3TNfO0rN&8*M!ly`ODZZW)xp7)U9weh@1$a@FXiQz3)-Zh*T7+yK{U(;Ux zWq5~r-cn)xz`e0Cyp^6;km9}&!`lyg;k9H5Caf=qdEO!94M1&UcNe#d1Z#zHiOqYhF8b)O0N&xw}v;@^FA`X zBQkh{V|dLxuY644HX7a{&s$}9M`rLw#qipCUgcQk>3>M~SKoWyCc|r&!5bID>*jg6 z{|MavhF9aqX#eiP5=^*%+h_15#qfH2Uf#IC9btHNJ+Hapb;#gNi{TCSyn-7!pESIK z;ne2f+sW{b^1QC(U4drB@J4xF>L#w|8{W0p@5@1WqTzM)yt~O;fab;U#(7@Zc;+Du z?<3D!Zg}|_yu~rRNuK9!4%`I8TjhCw7+$9g-pUx>G|$VwC2$WJUiHdod-q}qCfvWB zGkEJ`c(b(pZe>2w@b>n+Ji|LWgO|gJ`k(qgEx%&!2RFPnp4Z**x@7R`#PAkt`Q6U> z0X&^&(s9%Y@O0dAtZX=AtD)o-V81TL{$gX_&)An>U-L)CAs{5lm{)YWvA@LIPbRMn z`?}a`JZk@-vA@#TS73ht_L|iGN$e%bc=X7&qFc;%?di8G56&f~d?Z_RlHsg|!?OvAvY7F0Eo>#_!?`ww zbGqUD3@3;4uSqeSeSJIyaEjsh|AtHX-Oq5UNAo0!(wOoA9i~D!4@U8%BtsaYa}4J= zKi?wji?Dw&#{NQMA3nDyWlBn6|3QrXaAP0dhv4mtv0oKqKhoHrV&W;mzFKAUr{rIa z|0-kO%h;D#gY>>fZ< zkZg;zyPL6>XH%O0#C+G?%p+l+8(P!;yG8A*J?kWi{eDvSsfX)#{&Tw+B9jTEd^oon zj+WbrhSMtIg!Tp4KNMqsvaxS%>miZtTmk zKP|@o24jDMv9G}Xq8R&IjD1gIUy1z^Efs-^GjptLtxlRn>%!}b1Bh1*4UoH@<^7Fg!6>_fRjUm%4`>P z!bV2@fiuR$a~%E>&nYZ5p67(a_;4tBMKS$={KdSffxFXi#8))R#1nRZ#4{>}AwzUY z`EVXHoYDA8d%xar)`}sV(wMS2P}Y%BaOTBu?lzo1#1PK37|sE*j#LI`x#8$|{t3g8 zK2A8P7*5!yu(|@yCd1L~nrS#(dJj3}F`SmHl9YUy@nl#4E+zlhcKVLt?BzL&V>kzk z6R7~s5r(7JWtJEYkJX3qtc>Bb3MsTxIHwrSQvBsy^jpK(-*YNsIEQ#n8JwYpv%{}Z zKeh);Nm8E=^PGwpPM+r^A7NZ!INB~c7|!vYGb@JE+;a-xJZv~8;4jx*d$AOEiKozW zhLATnrcTT1GB__9j@F-%CZ6#9i)JyLBRr=JPO;(Wb_Kts`;9Um zPkzjPukSgPa7tr1yBW?~p3^Oc6OOH6B_HE{o*2%4hO@wP3SzeFC?8J&oL^!%%?&4f z&o|}MJBGufNMTCB*=Jq!Q~uTRIoxm-YdkUAwQuOkH~~)k7|zj#^Ofi1#l++9g>n^e z&N7^n@Rxq|ESBOf{puRexrMxyG5zW;*cCj^`KICA={Zvkr-4)f%I8D!Dq}divbqe; zHHPz<=d5HYN#c=teBtE8l+PZa72}^L0(ZON?D=~%j@qB4Zddrc0-Q6+TOSk8Zm>$> zOfj5+o-^EV?(y+FOrDF0X?Hkz(*rltaHeA`$K@Bqha}s@sb{!dxiO4ALo4S}aONA1 zjuRFcPPU(4Z5y-S<-Su%C2+nm96kT~m*MQ-Ir%Z1_7TQaz^S=D{7*{$)#Lj*!>Qvr z-C{T$LRZdrp5(m;hNI_k!G>sm@kpkgUnh1YZ(hv)0`KzRbd2HDHJqgUP4>HR%40Y? zvAO`xiEzSmW&Yn7+g7LxVz-6&?@B$|i&OLdD`9lj-3k8{c`fjic4r{Omfm7z@T`{aF&R-k_)8}H3R6w{Qaup%N@frEeujKujk40 znUeD1Jp@mage{UjAtS!PbvQM{tN#y{FnR}{^j`pgul+CJi+!3%Xd!ho6S7lJkPq9k)$$~ zm39BTpLQP^J-?ARBXEh|)BF8V_N(^0nOu2J;u889Nptue_nfpG$Hub05N=(=wfirQ zEANF;uJ*&)hsjc&8xw9Z+@^;6ck1b1#VLQU4Bp{}_a^1lV`cPCHXA3V!4HJEz?bVM zEdPod#yOMmqT%K|&HFtm8+o5rCik&#o%_mjzu5{m?|Gg#HeA_Par;Z+J&%7h$#K4_ zcnjflc_no-?ZS@yc^^ar;Z_K^ff1hAVqnB*)>*a_~)+HPQOG@rQED z;l6CRdVkIFKr^}9@;$fY3tTre+;wc{<@sDgC#FnptBZI)pf88ukE-iKDcnlK?Fmfg z&E-8RnOuFppp--A`vtX4XgO5E&DoG{zyB+4-mJjwXSmx^&#I~qg>a8FTs^OoabspV z$Tn({^;L0Ga8EW|Dcip)Uww~_u%-N~;+Da^&~Ue<9I9$>m2j^!+^yBKTcznQ({T5~PwtcYy33!-SKe>j&~uNytLpk&_!9ST814c1Rn;!qcO}s@iYvWv(MBx6a0Ndz(L)XMG3#`Fx$-6f8Z6^D18s-(go3w-|1o z;r_4MaXH-XhP$woiJ;r&8}dpza$SM_1z{?483%U9m}T~)j#a2FYFAN>BRy~&uc&~vxe-tu1M z`7^`aTKzrm@5T$a4i{|o{NaDa&3%peJH!27)rSJO{S5a=`p3U2-@&ZA$d|*``rit; z*BWjXW4pf^Ps)2+F7@22SyojaO3Qe@%Wx&uzlwJ>>om!@r7CXz>)c0exK}Kx=Ket} zH=!(i+ac+bN#Xl;Zuars^%wDW$5_U{Wp8l5is3$hy)B0wu~Y8jtSjFm`rpj0aEs?~ zz29)lu)mbQHwsC-ZyN5qtosy6`f@AWg1LcPZ@4S5m*;7wBjMV3e`MWno?C5G{C?AN zD0q|Wxtr4MVkhiRK$j!o?nZcWy@V8OBCoBh;rgIc&=4*HG#*~fb!)>ztQD-7qlYpEY_cgI`g;ed+NTpFKQpkEroJ^mdHm&2+gwlJOK zJlB?k#41U-6>!%XuJmO`!@SsVY37oGx#UTDm!;Gh%N>_dz9k>z|UM@J+59*NHD&GYX&(|B_~QVvIucL;MEU06z<Vl@ z@)d-%x0+ncR_;GNS9qGX*4~QXwt}n2x7zUX(e;KK-akaVb9iyhM`$NrI9MGmK80`Q zwTh0HIRm5jf$DLya0%z#hC3end(e|e33brzTkbghT9MON;I`*n!AVR z{=6f7H#)dh4c8Erjo^M;B>QY__vn2<`n}Jh<$+tk&F>m-pV~FtU^EPAyqARGy5Mf| z9zrM6b~Z`1XhnVEU|rCZZyenp@%4R^c`LYn1y}3CllZ-XK0wNy?z!KP_Y2yH9{Fy| zc3j_cwSUO_hU-v?Xvc_qt(|JPBz?eMEM@a$d^R)UR&Pq)AxMwIl3k2{8~in{BUs-J z9gj4wvdBL;le{5FlJr~B$4=me0j>M8)VPXPa(-gCBk{Wd-H4RCz;o{-?;7@y@xBMc z9fZ$FbOlnb+|wf5V)E`qlBTlM?^@e(P;NQgRfhW*_H)r9q+ES(mBiaTmwkjJUfZtL zH;l#!%FX|t>xUcwwH!{t=PWb;Dfe6-?@;naAxVAnw`{K(vvSMf%D0TDv3 zk#dVXcM5sWBT28bETsM~p#CdUmiI07=TkrMK3lkLLu=>W!v5cAB~q^TTTOSV!L#o* z+^OgU)Poz}`y%13_s8>-7*xz8j0Q$ zZVmGnhC32pxt4I9;qD!w!sG7EV`6EAj*5x*bn*tG^O1}{?D(!34`WMR)BZPiE#pSR{a@|3 z6x@b%gj&xu-cj2aZ|{tFlmB6!*Kq$=@fO1!Zn#n(ii!2^n0S44aE+)anf0M>MtvxO zd)xnjJ0zn%l){~1xc{qiNdCfmhzvLLK0VuxODLPad!Jr0+&|!I|C>2)s$9x8kn@PY zJ0I)Tah+UllJx1IvDMrY#PuwaaZNqnPx7<+%jA8GwBHq%6#lL8*SKVUbU*T!U?=^6 z_~)}E1xv|WizLbXvu#(}e{Y_*TF?9vT&@3M|AOD|hTA78U1NxR*w6|a8JknTy#EC?s=Xo?ecQ+CCT}{l5tUUc1uN&A`iaUQd!HJv5&ib=EIYFS zmOCNi_?p^@`fK9d8=vdYcSyOM!bl2!-IxAszZ$L`YJn{G)M4rREAf`@n&bAYm9A&g zuzwECMasR(b9Ya2eFU9>uIFJC%U$p1PjtT(?VjWIGu#XDxdM$x$}RKUrQ|hi!1*IO z09kI^PqrK%7Veqjni=lV*q@BfLCTfmB`J7|yid@-(HF>aXJzy|xpi_}Tezf@{G<1= zti?~#S@dVM|VPS+UDE)CP1q!_{}is8)goMJd9!_jss?;sGh zgdWS6(;A^*8b8eKcSDcnaZ!eHZZ*$1vzJqf{@)4TYn}k#+bt zY*fSTkEGlOz_~B749+I+A|&ZjmT}_}J#VkvJI9SR+o{|u4EH_Ho%J`kI^L<+C&xW( z;+=zU2fi)vx#4c~++7>f521rm6J+C^?AxKl+nln<-7m*2Ht`;YJyVnJ1eRJ34Wlv( zt|e~*x*y$%EO)x+O1#3&OXj!@aFbC??qTfZTJUU^%JrW{2!0{2+Wt}b=CHI}t&>ye z6y^N7v_X!m&jZxTt&M#%)Ep^yoR7C7dB-71Jz4%0_ZaL`jdEOjxLO~2V=wh#BunK! z>$y@N=6LSb>O;}~IqoF5TJM!R-*A_EuGELEakV}aHqBu^G|m08b2YbT6Rt-fiT7;w zVbgHS)8pTNvhEIK%VB+4G(J;q@_-z7k12TS*L&`nYbBmfXhDA4_G04u7&Gz*{ z=S3=;=eXBQytiRL8!bS}ebRH^YF5L2h$_(M$i}z>r4^;htG*{+= zNWtCYJ&q(j$I`~D^-Pcdsn$8}2U8BOV*e$oKpO9K&#iSJZ4F5}jHT_Dm8N}DVtvyS7Njdnk2{6#SFC&(S8d4y`}Kxs_){+`*j83t#tJ z>Zlwy!Eo~qA|`Yf(sCH=x%;$aP8D5`u0)o*ID?yabdI|huD0VD*uR6mLdt#Kb9Xto zhHHtAK^>8NFEG_5inp;JU&;55j;7plyXG)Ap5~s3y*yiYE=%RU>bWDxTR0*5&nGNx z{gpD1BwXpwQgGjftK;o!@EwQlHrxhb@w(tC@?J-upoM5K`>Ym_Nlp1aQ^t6(;+Py) zZRa#scD-EpT8W>=OZbxf@GbgJ=6p*OZTh^U5^jCC%_4L69lYPrZh2|0j@u3+?*w!q zIt#6*F68u&%C`>h7ZdjD!=v&|b<1(>Vz^`Q(|F|`B2rKlw_64`_qZHa05=)BI`=5N z6{vcvG*{;dO3B;tkQ(kV)C`@vFW+@R5@$t8cDVe7-;JI^8t?76$NVSW;w zflfkQV5E@5JIl9YZEtzKbC{b*b7kx`44;dUa`%?)GWB65>q?QWzk_@|Q*Ke89CxST zmSO)MDo4ug>EqquP|jyiee_M~me(S*xnq1eXuPg}j{D7U$6-Ga z-G!9f&U0sz_coIBF-yypeJ4q{EwL|!yIXF0zx@mQAJ7`4+<~6k;c%`QqLa|Hi?^IV zTkq?G#+y4J$6Wze`yIKr`!f74N6Nj`bHhOS=TX*u-DS)Dw%V7ko+nkpoeWp|-)Hfe ziRKxuUI#j~ZBz#BS<1219ydq%cC5$E)Y+UjXK+u#Zy?fm&x!&Kl>2E6cUlHF_naIz z4{lq(k*o08^9aU%NV(eYbUc!FjIKh%P#yZRW@vE>t`YkB(2?WjR2&N~$Z_Ap&G+0J zv7dj@t;gcjW8(W1m7}kaFLN z)&=F{EkTmLX4!%hES;ZJcKbfn+_@a8iihR6U3W?MlPj^`qdn&WNVz|F?&swFhIZ?~ z{2aO?i9gq%g}K<5uYB+7Y2q!vg!5at8gDD?JE5*fx#9b4Xvgo7_ZgD(Ez3HLOY#re zvK)F7Zy%0W`J-~&p>PXAYv+E#zS>d5gOnS-p9JoCbPUM24xB>#S;U*XF30tSoAlh~*yp1zNaJN!ND5vcZw~qdEkL&4 znd|HCZy3vcLB(To+*HF|iTy@Yty7xI@Gj&IC+{kBE4l$$?lRAn`XJnj8*<#shWilq zPoZa##`~z}*6+-57)i=wX}MayQz#pTK(6FQ&I1hhFzio9XCmb;4M{HOb2RfSD1}C# zQnTNh{U2>-0%!H~|Nql8b?4qY7<&jeg+XQPQ=(f&i?$Imv`rf=6O$!Fi%DrA8bqPE zv?7|aCDBMorN&ai&_pQ0h%zYspYQuQ@9vrF8uk7AoyX(Vr_Se`XYc#|ob7Wy=W{+i zy#841m3}^SFY8j^>Uig6(l0}ABjsL4I)blZ7HeElH*`62?M-Rxjd!MJdF^^dQHrU5 zNbI`hlU}ad?HrXm&2qOAw*yJ&{#(`dSN-tZO`aceA4oCh!L1Wb&G!e%7rdCYM@YFp zSgx$|DQ7KGW6sIsyW9SzKJL{!dGA&Hn=v`X^mDl9kS7bZcDMl;1m6(ihNIC)*3G!w zx|XZ+?imlJm=SPwymJ?MrlH4?+IwIW%RFFBz8gmTQY7nMTy8_l-P^xC#Qd$pT|*w> zmLuhAKlHoAwZcy*p4%*rTLHH*bx-?E`Oc_($LnbFDwpCU!B>yCe|!H!`^}6gDa>8Q z%2`A5wm?}9*OozFFXHl0A-YA5+y|uDcCx*-_t=)+JWT%76tm3XP9nW{WesA)ZXL0|I;_94R#_4<2h#bw$J_xrD?Rx&)6tfYo){9F?-yaP^%KgZ4ClEIoNfd{o@4&uu$aAhq?hMh zw{TRhj9&=8JBgc&B>dC;vD%wEKgFB`SM7b2e4nB{NV#`gZnz`sXwU>S92InB-rJUk zsrI>s*emT>=;ai11zfGiFOdE-v=J#++q1!)m@7f|qlw6EcM9xv8;lLYEn1vnraFFj zlk~C{y8tQIGuQa!y^@ujm+&FS>gJ=eUuFF3aD^fF>Sg2;ZUJpC)7=s%J+bgl_wyCC zZGQoGwZqkST{k*h9an#4Z56t#?Q+Y5ma`p}8-e?^<6pJ+M~7SKnfW(+^SDOhV`a)w z+sR_M=J42cQ|@+$`}_aEErEM1TrFoi;nm7!%`#H|@~B*b?+oIaAqj0c>Uyy3MzQb6 z%Dm?*oG)F%a~QZ~Kx*%+QIheE zCGJtnmFM7z%9(OY;C69Q1alVh*1GyP1M zeJwZ&w-EncBq03In7E74RVW*|^K!%O_+hWTZ>E@t!`1h=`jSt%oh`S3xJl?CRK(?T z?VT9MEnJ>rUP!=w!r{_AO7K<3ofgLpzm;NEIb3ZUUUay(TCR8S{*->Gx^_Jq?#2Y% zR~+tb{{uG{?hd%xuJ;cc^BT+&hs!jB1m8Qv-4Krc-K^*D+OBKam7_k-DuG*@4VaZX zWi)Hr$n&Mc?dYL=6~t9M$oP(WA*qh&c)Z`)p6VsxHI5tJ?{QulDUt3QyuQvmOG2M^ec?%{eF@; zouk`dlv%F!Luo4*?^td+g}0czOVJvKtIq>|B+h?1>&ws~NZy0FydKY6SYVdP{k*hK z%FTT@h3hJ{!3*-YQ^|7%k}D+bLkEuZ^Lh!4tao zZD+Y%iOWZ~AeWnE$Lh+h3pZ_LiaD-Mto#;|=WcW_((Bd-F2OgGxEGOx*Eyyf|Mz(= zDZgQUbSd1^;p&fkhxBXF2S~Z2qa@?oMce^bc-$w4^1ht&{6cNjb~3Umh4LLM4|T|Q zHaZU}H)6RD5Lb*|K{dJQko(Q{6mDVmxAQQ1-7?-|Uc<4slsp^Jmq@wVU+f~z*QKU8 z3Z)^p{oNH;eoNsFwOpn|O^Ed8pq5Cv8?C*giF*OPgO(zBu6L7NmpK)CA10mpA-j}u z6kH8b9yX9?6B18KIor%p%Gp1ahrS8QLj~Mt9PXck*q;~XuLxw6EA@qtB=2vWLF1-n zOd>PhPcbi(U)#gK$anCSHBAWV@6DEkl&8yydxwYe`5Xr!w>?~8uaCBexgVsM21mup z(`eG)kESE#=3DN1;x-+UWPafo|9okYy-!m=7JryxMmpTuIm~yX5K`^~mYYr7U^EoT zd&BPib!8m4;v?2iz*RroNuJ4QK2mO(f=hUPH>|^#uvO zABZzo(?$bL3wIOoXnHC zqe^n-g3Apbz{GG4)>XP%P+}ux6ObD*_S90G!mwfY)+B+(W<$X}%K1E-lD z8F$L_ztE?wOLFY}jyyjj(>2B|vfN{dYlE&vmm=2>1##CW{8@^*)Zymk)i49dGZd-4 z`Wz`j+)}g_tw1g}{gSHJJ-3W?Nsb@NNdF@`yjzSb{UE{jC~+&$2dK`WRj*r{2C;Rh zGJYxlg6Fo!#;%)`r{Br93#q-2MzJP3@9OU7Fs!>!#NThX~lxe?19 zPTb>YE}B|V)!s$cUgZ{*^L+I&aI+Q$((GaBEr>(u6b9qjL?nif_sk9w4 zQOc>zzkB^rU0n{T-Td$TSEm7@)){TSX;MEOi8m(=p! zufF|8zTE{Y`}-8LsX@%Yo%%3lLhm5uo@2T5`qHQNV{C~+sQ4GYH;IH>T-)QWW85R$ z!k>~dZ(l11>A?4cc)fc#i^_eIGrK4heumlzR_|_}+bOO8wn70;g$zi&&PY(y&%El09G)9vqja8ApUl=b!zudR~5OTg78cYBK230M3(8Bjm+3`1`t zwf8;mKlM$zmO76W(&07MA?UJIweYosSeA_&H2m^x3S#Cq+g2y`7y4{ff9Ug5Lb@&pkL4;?3_mV6?<3M_f+nnk2s&1 z($W;axfiasli5QkpJ*!5^3c_C8{EL&ET|8<92L>U^!7ckjQ2EkWNjUO-1z->UGAH()>!Vkf8j>pUgmKBEB}_l z9prH1{p;Erb%6cj-~3wv_f?1c1;1~=GxT#=-tz{RyOndlT0gv=m$*FWb&DL}H#;5f z?%R|8k^3ji+BbUF?I4bcuA6eR5A?IPH&!10D?jAJ9p-RzsAM92?&A8v^{~h`fCg-d5LmKtX;r>_Uw*u~q4)?z*4`~Pc z&0%N6%ENzEk4xb8a=8Chy)cLP%|eI!U-=;fcMn_*jVV9pp{7W>%TM{^EbnB}1;lkh zat~ByCw4Lp^_xS^jOFji`Ti&mX@0-WpHJLxH+lJGpB@Rt$NJ5QPW~D&FLP~wIUtC~N*t>0vlU*~Pca$eROKgf|H8@0bsa?_7KL)>B{LE2;Y-oWdf_v{&L z`_a%Pe$xhSD4N=sH^^6pHX`NfbE89tb5Dk%;fBP|`_7{sk^Z^7o!?yHa2t`Y4Qhv! zJKQ7rMiDm=NqFtqs`Ddiuf7kK-@$Ks!_|KO0rJUyWKTNW>6W{gxVJ2~h~JxNUO=Ds zWpwnL!47vd`Q$m`Mu+>f)BEr-b`JOVww`|rv;F2ZxLO|WAiX?Koy1YOsa|pQ%_8n4^cs?REw?;O zjCkWgEf3~WzuAz0yWHX0#}n0Zr^Rs#;ciL5{nX*=dxzE8J1>rFI{Qtf!>xdK&`8$O zBK3o=mmfylz3372Aaeb%$j)=@^~2?U6Fkdvpj^5aN&h-}8)<#DXOliBuI24j>#Moa zZ|aa=uTLk=_eK4Y*tHQzK)_O8iCc``K=M9=Yu8MB-F2QR?JB=%?$}jEp0Ch0B=&5A zt9JcKoU%&E*PeV@Zw@PDJ_2<>Vvpq0`uH4it57-GfL1W?+mK2vb#W^9dver%Hn*GK z%yYOkN6|;4(~xp!$*<&h-bCEp=n3=?TEV@kuAi>7^OeG7cxdu__|4mJZS!lEk^cBQ zcqbew_if8PU^MGe(Lj`gl0z|W%1NHRvfd>JZbo0fsd09!K29h73H6z~k$mvP54Ai8 z`gRf*9OKpV!#E~tKVCh-tB;{;{N^~gD?FP_J<^|vCLraGw%kwd7PZ5ka9n<+%?2~jy9tReq7|VA4?+M z^^98Y8J>P+#A_g>e+u;+*DF@7@(uC~vYl0Fw*kCdBhxz7{#1=@*zK>d5-;|IL? z@GZ9eXwCC?eul{(>o;X^wZ8f9XPz0Igp@nOa+9w%rZw^H(SiKk9eM55~RL8g&#`cwt=hd;2P3D2y?2#eal1n zo+R!|%awiN64kf8?ciO0)6L;NOWsB3J%?*-`IY9dJngytjH-U2(1r+&zu=r@OE z#{9dE^k1T%k=nb`a{Uk1G)JQok@!Kz7P^n*wuo2Glxyzsn}!Zo5VdHN&L*#N+golX zaT*TbFRr~_X^1_4NrRi^aAp7I3&@}2aA#O!&?eB1JCjCzGo%m4958Y{>2z&Qg9?ZD{B3wVz>FLco zs(&Ms{APy3m3@n6lkYW$D}9l0y3XA+^nZrG13jGjjg7msA z^)8q1QsTOyK1jyLt{+mLsOpFCeSY%^+)&gcV+N8(-b1^cqjE#?7wlb2+-FF_W{$Fc zB%8io%Yq!G{T<5xng4*_Y=^7u~g+}laN5dDnQ-YK=BCi*UXgt~|(pb;qh64oj-@^}q-NlffjZpFj&n-2HR zK1n9^QN|xgxj$L%I^xRFcC;0_?RuRNRmV~JkNVAD4!6lP`UBJxDR-CU%D(*f5I+Mw zgj{YxoF6i#`OQ%jx;oLHYRpTdUxn5q<)$%KAoz9>=bO%)I;w-RW!#74_iwQ6j=Y~K z{af~QziH)gGfDpzYVlZ%Ti0@vBJ^vh89E)g`v7MKs_p|^I@50k!qst9ohNv{h*}`E z_g!z`>?>1=^8MvAd0zVj->bF#+um{1(|%JTmCuHp4!m1Mo?Il=OzK*N z$4%-_+>J=(t=UA?}izyUq#E&B2-NI*Zwi{O|Ko0{_#$d zSIqaD9~`did;B|j%*+_~wkS67zQ-9XW(?7v*L}jfPP#8maWV59aJAn}hj$*za=68o z+l#n-bO*W>x$VpHxciTi1j{HBk?mHm%Tf!WaER$A`Qh z9i&g1!!t>w_O`a%e#8w$W6>z&+PlcMQ_9U)Og(_Bo+Y9mj1SSAI+2*5W=#xu2bA%=`UWqv&vtx7-@@8Q<(QW(Ut=Wxcg)Z?`yZ#u}bu z;0NWVlJ{gZ5UIVgZ>3zflZxqEP;=A-x!ll9&kuUtBBg%Q+Tl(m{S5RpQtpM8`#N#& zqR-F=DAj2n@~pkuKZM`+n=2jem!xkee&DFwewHiWNvN^Ft0b~dv1_l?4GC&*Io#_V zZVLIN-8r12a>rY4BjPSZZBcx?Gd#|}kq?;fbhtU>8HpZ7%KgG}4_-*WjZR1L?M~QN z)xX6bG0y~7+lLE%7=-5izM%W_Y9o;Cqxqqa!uae?I~kMrIId!(K*t!nT*{bRp5@WPnAgGhfH zx)UjvEh8lO-X?An`VCc}vMl!bx!AL}zrAk|d+&f7VS(5A4!7xYAB6pusokaF32AZqWW#C1b?s2_6sw+7Y^zvc5h z9(%)|@w^Of$Z|)MUbsa_x%XLa3302?XXqp3aWAludj-9VmLZorCXSo?h2K2u z__vJo!u_73aw{zNsF#_WMOo+qB-c&L*~~cq7H;&Lu1@=_?PO2#DVHg^sJ+#-lM|ot z%A2+i6>#6eUTr6@hbQgBNQXPra*K$26g`QgeQ?{IX>r`*a=-b?;XX^A7tqT{?d8@Y zYVT6wRw4=VevZqPx-3EMP21!*e>mLt$+rdlhLk(ka?e@Bd>CqnWIeiEHyuZ%b1g^Z zcC_3Zi5rO|tSL`2V<->t`=m79ZQHZ2>4)HkqN(|AH2J2Y`AE5Wmb;TU-(to>Nd2Je zNtZk2SH=%vZv3uxxTlau+TTo$%Dvrk^N1Ub9!B@0U0Lj#W81UM4p-`Ny=DnBgg5qlhW>(t$s7w;hskN^U-5Sxl1kg z(ARjjfX+duqp2|GT5kF|-h8}p#Si&E_)U@HhceQCi@rn3ebU|s)_xr>l5i@=45yzL zTP4UoV8S&&`OTAX)8y}jGe{pst&wtfTCU6w4kG?{7Vh1|F^5X3&k5(*`o=Iay1zm> z-1!c71nI}42a$3QNR9rNz9q!1LL1R~bQ88|d1zq$tK8xW)(64OjAk`v8|i&Zd2b3S z_Y}*$mbd~m1x-R_%-K}fd7CZv{-VIiKd-qOl3nmF5$aMQXX`k$?Rrc7jDS< z;oP_A3s4)R_O_DAR>ltn#EnJ|powVP39&)_d3fRLfmjP5#5O@9Y2h*_R9N_vb;Ktr?1@|?iA9?xH`g7xwlzv zF>$XV3ClSa(f*b+_O6>;GYQHqhMNyp+x1nX9|HFyj>;Wnxtodm2}!8rI4uG98rmJ1 zXV0w>Fn1*2?s2%|{|9bbQou}h{BY1a-Z-i*N457s%k4qj0CY3TM|GWcXM-JAOMR2} zEL1aKW;oobq?hr|ERM>3#BzTk?hjOZ1?2^~+?4j-JgjoV$pQ1c!)-)*nKx?6QMr#> z?lr^>K_gHBa=Dpt+)%B6c_#sPD*2Q{Q+}?!`1tMrsPw5U$nNKuN3UJ2{HIIxm~vAy&?4DojN%U@mmHjmRV8lBOJ$yV`Om6Zbe;faW5X zn-j;)J|JK&cev%GmvQwLj>=tUx&GCRbx=C0hg|MV+n%X^(+&)nK@Rr<(#t+ztvD+8 zQ_CGd+)Zc%l6KPNj*qjq9PS+scQSdTot(x|xf?BaA#tyvw~@5#F1PFnuf0@z3l9pI zhaIlkyUyWm-UoXZ#o3#k7BIyQw-TO|U*CH%d$(F{bK)*Rx#%jC!`MOZySKz~OAij1 zcOC91(#yE7h@<-97t38k+$ZQ4v<=CIKxs(&i8>vtmb2VL17@ScJ!Fk{-Hzd?+?oeQ zy9l53Zx<7P1m5;r1o{V3d!Pdx+)UOWfn=Mf4n6#MpO* z9sllfxKb~24`Y zBzUt@(ZBxvJ5+M*Bq%oEE&f(JSOYrIU zf}{T;&b2q*4;e=X%!$ksXgO=n{iyh1jlx%)Dma7erRa9YHvo}fJtJ2t$tAMXoq|FK5(1GaZBLVb+`|}djY-aa9h-h zUMb&!AF!_g>VR6JsoV>tH}Zb}3VWZW_U0cS;G0;n`?rCl7eCz0QT=eY<&GonAv6~~ zj%0pa`}y|PUfFLz))|^m!1Q$Nl_*)~GM{|Pz29=9R@*=RwZ6d}23O0&^YE6Tw;k?N z_W5|154oR5cc9x)Mwt8QEYA;>_BoE+cT0O#bV9&92{&Zzm`-{bSI_6D_Aa;feoWk# zXgm4=x$|5NZ26V>YT*{w513cr5(?#y8Xxg2I7~apQDTpzEHsfL-&r}AxLoEUbk0HR z7^h9RLBPE4{O$`#+q;j6et${ri~cXv+bqs?LK3=gOf?kq17)K4?_rLKel>6Y=d#x48DU6z+(RyowTn05 z1AX6%DjZ#xV(W435uCdNr5tVk)`rRReF^#SPK2lJ_safN-=ov|OVa)NzGgYx77jQ5 zy)>5_HN^h$Z||jLoJK$9aOGWC_kGxZ;>!2-s%v*k;SP7W@$cukTzNll9DbD`@0nD` z&2AVl4>;WZVZKj+4&frjm#-$tjK5k7m0J&vZn@R+CH;i-=f!a6!PR-*d$DIaDnY`n zgLzD|N$>^Nb8n5Bqb8^>9bt$yWECv%oonYWbe=bKdcZW{fklRw*YqX**C=g6jN8UL z=X>r`#`$O`sz8xn+283ZZ@k$4R&TxA^snsw$@%m@tz+C<%ebFH^O4#+$#T#BoM!^4 z18R*@kBXJw9Oje77s@TUfN>byTx;)8(jU*?M{<<^|&#aUrH?zkvmHo@he z(Xfg1yHSmeG45@ayN;;_C8g(18`h#yClE#^#orp;_{G$TRFbqjAQlpE)09~g^GhDk5wvlB5GO58O_!iQh7 zzqi9xd)FOUBg!p-dzQl;Ouq4GB2w-Y%RS*M>OGRskz*ZRbWBIel%sOPU1+!AhN7vB z`It6I+RiTIQ|<=K%_DA@<=(;3ea}hR*Ya#l+N*N7S3BIhNngPKF`c7wcU$hu#J!Cq ztmRl8H*#gb+z3~%+Xm8qnZ;v9j>?t&F9^PaHZxCyPC=hC@8h=H!=Lp0u{7*mx5Au& zxfgCqG;3^3kU?JMo^H7|N%Zh<IrPxgT}7Pg}0+1OJxguHh)pfmbkanp?}8V-&XDH=3?IFL1b0q~w}> z>~Ps~Qv!Ftu^?%3_|38wT5Xl%IO~TrxHVZXul`l;XAbw(|A8BVdmP-5HDx0_DZkqs z?rWAS&p&@9UczpU8xpi1nywaCGaNvh}_i_~ zI49#I3DOTu=Ay*=_wdc0A0lwybNu@rdH>13>p8axN%&X)_6nFU{}2371lP3t@BI+! z%{&O)Q1sWaCi_3~Lj>-5aJ61+fm?}u-^A*%mfyO>os62G3?%O(>3C=2lU{w6auy~- zq))(H30K>*`0qJrIpgO=^Y8JkmR+aO16cd`cu%$<%O8j-#w>W-BAlsE!=es#sd0W-2g%)eKWUizWl9F@D#a>o-l3%!V*L+*N{Y1Y5`{mb(F zfO#3Nj#EoWUy3#$p=-VS#m>E*ug z4UWnkX}KQ~w*~D&zaaN}P)qD}Q*OoRfSK!XYyQNXE;<=0ce>?XN?b0w0S!R1kMK;| zO0l=VmNVrRk72z*w)G(S$C3U^d@-4$lq&JVV;(p8Y2sc*%aPs-i(ixPs$q)m445Tw z^g692&3DLO5wmZeweJ?^3KG(`s6tiU4)do)p7?AHy%BPrl2;x`K@d=y5TYUI)1O*4=oIP<+A)P z<`pbgvd<^|V)O=5?k>yygt#r}5A-vV@v=T2E3@_rSH{aFcXR*WIo5yI*zR5DRF2Bs zZn+`iWWALHS#Rau|7$%`dm|GAraoK^vQOk`C2vaX}Wm%TQOO_NIFOt#1KwAE58iS11Sn_D90nX8oZ3VZ|iY3p#$7GMan26OH+W ze9Aq;a%F#nJ;Y0>{Y%yUP}mY=y!;gDbBpM|9Y6G$ADahFBEOVV!QzLcgJ6y1yjxC7 z$iL9ZFKLe^T|K0JwE4x%XsFNMlp(h4;jMGVTwU>m6?V{*f+M z_K!T3>m)(;YpHJhSPJ((xEjtNUnaWLUgrU}oNzw*I^rHhvyt20rp{m;(q!hx9nOoS zk$pavag<*uoWs5Uq~==UKDCTu3ZU%wT1fsCHoxo_^cCm7#6J~I{v*8nwRRJi@+

p{1A9cgPOrc2G;y6v=lh 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
xR1|_@uo>ELYAe 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 z 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

< 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

7Cyxp8=qls?J-E#g&X+0iNEVY2WgeG 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%0A6PP8hD%e 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

LwzgprT`7A^i3xBB7w7V_+ft&L$$E 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

HY2If8XB{2+4lrM|nih+spm7wB^ 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�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 literal 0 HcmV?d00001 diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/install.js b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/install.js new file mode 100644 index 000000000..1019e6243 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/install.js @@ -0,0 +1,289 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// lib/npm/node-platform.ts +var fs = require("fs"); +var os = require("os"); +var path = require("path"); +var ESBUILD_BINARY_PATH = process.env.ESBUILD_BINARY_PATH || ESBUILD_BINARY_PATH; +var isValidBinaryPath = (x) => !!x && x !== "/usr/bin/esbuild"; +var knownWindowsPackages = { + "win32 arm64 LE": "@esbuild/win32-arm64", + "win32 ia32 LE": "@esbuild/win32-ia32", + "win32 x64 LE": "@esbuild/win32-x64" +}; +var knownUnixlikePackages = { + "aix ppc64 BE": "@esbuild/aix-ppc64", + "android arm64 LE": "@esbuild/android-arm64", + "darwin arm64 LE": "@esbuild/darwin-arm64", + "darwin x64 LE": "@esbuild/darwin-x64", + "freebsd arm64 LE": "@esbuild/freebsd-arm64", + "freebsd x64 LE": "@esbuild/freebsd-x64", + "linux arm LE": "@esbuild/linux-arm", + "linux arm64 LE": "@esbuild/linux-arm64", + "linux ia32 LE": "@esbuild/linux-ia32", + "linux mips64el LE": "@esbuild/linux-mips64el", + "linux ppc64 LE": "@esbuild/linux-ppc64", + "linux riscv64 LE": "@esbuild/linux-riscv64", + "linux s390x BE": "@esbuild/linux-s390x", + "linux x64 LE": "@esbuild/linux-x64", + "linux loong64 LE": "@esbuild/linux-loong64", + "netbsd arm64 LE": "@esbuild/netbsd-arm64", + "netbsd x64 LE": "@esbuild/netbsd-x64", + "openbsd arm64 LE": "@esbuild/openbsd-arm64", + "openbsd x64 LE": "@esbuild/openbsd-x64", + "sunos x64 LE": "@esbuild/sunos-x64" +}; +var knownWebAssemblyFallbackPackages = { + "android arm LE": "@esbuild/android-arm", + "android x64 LE": "@esbuild/android-x64", + "openharmony arm64 LE": "@esbuild/openharmony-arm64" +}; +function pkgAndSubpathForCurrentPlatform() { + let pkg; + let subpath; + let isWASM = false; + let platformKey = `${process.platform} ${os.arch()} ${os.endianness()}`; + if (platformKey in knownWindowsPackages) { + pkg = knownWindowsPackages[platformKey]; + subpath = "esbuild.exe"; + } else if (platformKey in knownUnixlikePackages) { + pkg = knownUnixlikePackages[platformKey]; + subpath = "bin/esbuild"; + } else if (platformKey in knownWebAssemblyFallbackPackages) { + pkg = knownWebAssemblyFallbackPackages[platformKey]; + subpath = "bin/esbuild"; + isWASM = true; + } else { + throw new Error(`Unsupported platform: ${platformKey}`); + } + return { pkg, subpath, isWASM }; +} +function downloadedBinPath(pkg, subpath) { + const esbuildLibDir = path.dirname(require.resolve("esbuild")); + return path.join(esbuildLibDir, `downloaded-${pkg.replace("/", "-")}-${path.basename(subpath)}`); +} + +// lib/npm/node-install.ts +var fs2 = require("fs"); +var os2 = require("os"); +var path2 = require("path"); +var zlib = require("zlib"); +var https = require("https"); +var child_process = require("child_process"); +var versionFromPackageJSON = require(path2.join(__dirname, "package.json")).version; +var toPath = path2.join(__dirname, "bin", "esbuild"); +var isToPathJS = true; +function validateBinaryVersion(...command) { + command.push("--version"); + let stdout; + try { + stdout = child_process.execFileSync(command.shift(), command, { + // Without this, this install script strangely crashes with the error + // "EACCES: permission denied, write" but only on Ubuntu Linux when node is + // installed from the Snap Store. This is not a problem when you download + // the official version of node. The problem appears to be that stderr + // (i.e. file descriptor 2) isn't writable? + // + // More info: + // - https://snapcraft.io/ (what the Snap Store is) + // - https://nodejs.org/dist/ (download the official version of node) + // - https://github.com/evanw/esbuild/issues/1711#issuecomment-1027554035 + // + stdio: "pipe" + }).toString().trim(); + } catch (err) { + if (os2.platform() === "darwin" && /_SecTrustEvaluateWithError/.test(err + "")) { + let os3 = "this version of macOS"; + try { + os3 = "macOS " + child_process.execFileSync("sw_vers", ["-productVersion"]).toString().trim(); + } catch { + } + throw new Error(`The "esbuild" package cannot be installed because ${os3} is too outdated. + +The Go compiler (which esbuild relies on) no longer supports ${os3}, +which means the "esbuild" binary executable can't be run. You can either: + + * Update your version of macOS to one that the Go compiler supports + * Use the "esbuild-wasm" package instead of the "esbuild" package + * Build esbuild yourself using an older version of the Go compiler +`); + } + throw err; + } + if (stdout !== versionFromPackageJSON) { + throw new Error(`Expected ${JSON.stringify(versionFromPackageJSON)} but got ${JSON.stringify(stdout)}`); + } +} +function isYarn() { + const { npm_config_user_agent } = process.env; + if (npm_config_user_agent) { + return /\byarn\//.test(npm_config_user_agent); + } + return false; +} +function fetch(url) { + return new Promise((resolve, reject) => { + https.get(url, (res) => { + if ((res.statusCode === 301 || res.statusCode === 302) && res.headers.location) + return fetch(res.headers.location).then(resolve, reject); + if (res.statusCode !== 200) + return reject(new Error(`Server responded with ${res.statusCode}`)); + let chunks = []; + res.on("data", (chunk) => chunks.push(chunk)); + res.on("end", () => resolve(Buffer.concat(chunks))); + }).on("error", reject); + }); +} +function extractFileFromTarGzip(buffer, subpath) { + try { + buffer = zlib.unzipSync(buffer); + } catch (err) { + throw new Error(`Invalid gzip data in archive: ${err && err.message || err}`); + } + let str = (i, n) => String.fromCharCode(...buffer.subarray(i, i + n)).replace(/\0.*$/, ""); + let offset = 0; + subpath = `package/${subpath}`; + while (offset < buffer.length) { + let name = str(offset, 100); + let size = parseInt(str(offset + 124, 12), 8); + offset += 512; + if (!isNaN(size)) { + if (name === subpath) return buffer.subarray(offset, offset + size); + offset += size + 511 & ~511; + } + } + throw new Error(`Could not find ${JSON.stringify(subpath)} in archive`); +} +function installUsingNPM(pkg, subpath, binPath) { + const env = { ...process.env, npm_config_global: void 0 }; + const esbuildLibDir = path2.dirname(require.resolve("esbuild")); + const installDir = path2.join(esbuildLibDir, "npm-install"); + fs2.mkdirSync(installDir); + try { + fs2.writeFileSync(path2.join(installDir, "package.json"), "{}"); + child_process.execSync( + `npm install --loglevel=error --prefer-offline --no-audit --progress=false ${pkg}@${versionFromPackageJSON}`, + { cwd: installDir, stdio: "pipe", env } + ); + const installedBinPath = path2.join(installDir, "node_modules", pkg, subpath); + fs2.renameSync(installedBinPath, binPath); + } finally { + try { + removeRecursive(installDir); + } catch { + } + } +} +function removeRecursive(dir) { + for (const entry of fs2.readdirSync(dir)) { + const entryPath = path2.join(dir, entry); + let stats; + try { + stats = fs2.lstatSync(entryPath); + } catch { + continue; + } + if (stats.isDirectory()) removeRecursive(entryPath); + else fs2.unlinkSync(entryPath); + } + fs2.rmdirSync(dir); +} +function applyManualBinaryPathOverride(overridePath) { + const pathString = JSON.stringify(overridePath); + fs2.writeFileSync(toPath, `#!/usr/bin/env node +require('child_process').execFileSync(${pathString}, process.argv.slice(2), { stdio: 'inherit' }); +`); + const libMain = path2.join(__dirname, "lib", "main.js"); + const code = fs2.readFileSync(libMain, "utf8"); + fs2.writeFileSync(libMain, `var ESBUILD_BINARY_PATH = ${pathString}; +${code}`); +} +function maybeOptimizePackage(binPath) { + const { isWASM } = pkgAndSubpathForCurrentPlatform(); + if (os2.platform() !== "win32" && !isYarn() && !isWASM) { + const tempPath = path2.join(__dirname, "bin-esbuild"); + try { + fs2.linkSync(binPath, tempPath); + fs2.renameSync(tempPath, toPath); + isToPathJS = false; + fs2.unlinkSync(tempPath); + } catch { + } + } +} +async function downloadDirectlyFromNPM(pkg, subpath, binPath) { + const url = `https://registry.npmjs.org/${pkg}/-/${pkg.replace("@esbuild/", "")}-${versionFromPackageJSON}.tgz`; + console.error(`[esbuild] Trying to download ${JSON.stringify(url)}`); + try { + fs2.writeFileSync(binPath, extractFileFromTarGzip(await fetch(url), subpath)); + fs2.chmodSync(binPath, 493); + } catch (e) { + console.error(`[esbuild] Failed to download ${JSON.stringify(url)}: ${e && e.message || e}`); + throw e; + } +} +async function checkAndPreparePackage() { + if (isValidBinaryPath(ESBUILD_BINARY_PATH)) { + if (!fs2.existsSync(ESBUILD_BINARY_PATH)) { + console.warn(`[esbuild] Ignoring bad configuration: ESBUILD_BINARY_PATH=${ESBUILD_BINARY_PATH}`); + } else { + applyManualBinaryPathOverride(ESBUILD_BINARY_PATH); + return; + } + } + const { pkg, subpath } = pkgAndSubpathForCurrentPlatform(); + let binPath; + try { + binPath = require.resolve(`${pkg}/${subpath}`); + } catch (e) { + console.error(`[esbuild] Failed to find package "${pkg}" on the file system + +This can happen if you use the "--no-optional" flag. The "optionalDependencies" +package.json feature is used by esbuild to install the correct binary executable +for your current platform. This install script will now attempt to work around +this. If that fails, you need to remove the "--no-optional" flag to use esbuild. +`); + binPath = downloadedBinPath(pkg, subpath); + try { + console.error(`[esbuild] Trying to install package "${pkg}" using npm`); + installUsingNPM(pkg, subpath, binPath); + } catch (e2) { + console.error(`[esbuild] Failed to install package "${pkg}" using npm: ${e2 && e2.message || e2}`); + try { + await downloadDirectlyFromNPM(pkg, subpath, binPath); + } catch (e3) { + throw new Error(`Failed to install package "${pkg}"`); + } + } + } + maybeOptimizePackage(binPath); +} +checkAndPreparePackage().then(() => { + if (isToPathJS) { + validateBinaryVersion(process.execPath, toPath); + } else { + validateBinaryVersion(toPath); + } +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/package.json new file mode 100644 index 000000000..13a9813ee --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/esbuild/package.json @@ -0,0 +1,49 @@ +{ + "name": "esbuild", + "version": "0.27.4", + "description": "An extremely fast JavaScript and CSS bundler and minifier.", + "repository": { + "type": "git", + "url": "git+https://github.com/evanw/esbuild.git" + }, + "scripts": { + "postinstall": "node install.js" + }, + "main": "lib/main.js", + "types": "lib/main.d.ts", + "engines": { + "node": ">=18" + }, + "bin": { + "esbuild": "bin/esbuild" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.4", + "@esbuild/android-arm": "0.27.4", + "@esbuild/android-arm64": "0.27.4", + "@esbuild/android-x64": "0.27.4", + "@esbuild/darwin-arm64": "0.27.4", + "@esbuild/darwin-x64": "0.27.4", + "@esbuild/freebsd-arm64": "0.27.4", + "@esbuild/freebsd-x64": "0.27.4", + "@esbuild/linux-arm": "0.27.4", + "@esbuild/linux-arm64": "0.27.4", + "@esbuild/linux-ia32": "0.27.4", + "@esbuild/linux-loong64": "0.27.4", + "@esbuild/linux-mips64el": "0.27.4", + "@esbuild/linux-ppc64": "0.27.4", + "@esbuild/linux-riscv64": "0.27.4", + "@esbuild/linux-s390x": "0.27.4", + "@esbuild/linux-x64": "0.27.4", + "@esbuild/netbsd-arm64": "0.27.4", + "@esbuild/netbsd-x64": "0.27.4", + "@esbuild/openbsd-arm64": "0.27.4", + "@esbuild/openbsd-x64": "0.27.4", + "@esbuild/openharmony-arm64": "0.27.4", + "@esbuild/sunos-x64": "0.27.4", + "@esbuild/win32-arm64": "0.27.4", + "@esbuild/win32-ia32": "0.27.4", + "@esbuild/win32-x64": "0.27.4" + }, + "license": "MIT" +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/LICENSE new file mode 100644 index 000000000..82f30788b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Espen Hovlandsdal + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/README.md new file mode 100644 index 000000000..fdd64f77f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/README.md @@ -0,0 +1,126 @@ +# eventsource-parser + +[![npm version](https://img.shields.io/npm/v/eventsource-parser.svg?style=flat-square)](https://www.npmjs.com/package/eventsource-parser)[![npm bundle size](https://img.shields.io/bundlephobia/minzip/eventsource-parser?style=flat-square)](https://bundlephobia.com/result?p=eventsource-parser)[![npm weekly downloads](https://img.shields.io/npm/dw/eventsource-parser.svg?style=flat-square)](https://www.npmjs.com/package/eventsource-parser) + +A streaming parser for [server-sent events/eventsource](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events), without any assumptions about how the actual stream of data is retrieved. It is intended to be a building block for [clients](https://github.com/rexxars/eventsource-client) and polyfills in javascript environments such as browsers, node.js and deno. + +If you are looking for a modern client implementation, see [eventsource-client](https://github.com/rexxars/eventsource-client). + +You create an instance of the parser, and _feed_ it chunks of data - partial or complete, and the parse emits parsed messages once it receives a complete message. A [TransformStream variant](#stream-usage) is also available for environments that support it (modern browsers, Node 18 and higher). + +Other modules in the EventSource family: + +- [eventsource-client](https://github.com/rexxars/eventsource-client): modern, feature rich eventsource client for browsers, node.js, bun, deno and other modern JavaScript environments. +- [eventsource-encoder](https://github.com/rexxars/eventsource-encoder): encodes messages in the EventSource/Server-Sent Events format. +- [eventsource](https://github.com/eventsource/eventsource): Node.js polyfill for the WhatWG EventSource API. + +> [!NOTE] +> Migrating from eventsource-parser 1.x/2.x? See the [migration guide](./MIGRATE-v3.md). + +## Installation + +```bash +npm install --save eventsource-parser +``` + +## Usage + +```ts +import {createParser, type EventSourceMessage} from 'eventsource-parser' + +function onEvent(event: EventSourceMessage) { + console.log('Received event!') + console.log('id: %s', event.id || '') + console.log('event: %s', event.event || '') + console.log('data: %s', event.data) +} + +const parser = createParser({onEvent}) +const sseStream = getSomeReadableStream() + +for await (const chunk of sseStream) { + parser.feed(chunk) +} + +// If you want to re-use the parser for a new stream of events, make sure to reset it! +parser.reset() +console.log('Done!') +``` + +### Retry intervals + +If the server sends a `retry` field in the event stream, the parser will call any `onRetry` callback specified to the `createParser` function: + +```ts +const parser = createParser({ + onRetry(retryInterval) { + console.log('Server requested retry interval of %dms', retryInterval) + }, + onEvent(event) { + // … + }, +}) +``` + +### Parse errors + +If the parser encounters an error while parsing, it will call any `onError` callback provided to the `createParser` function: + +```ts +import {type ParseError} from 'eventsource-parser' + +const parser = createParser({ + onError(error: ParseError) { + console.error('Error parsing event:', error) + if (error.type === 'invalid-field') { + console.error('Field name:', error.field) + console.error('Field value:', error.value) + console.error('Line:', error.line) + } else if (error.type === 'invalid-retry') { + console.error('Invalid retry interval:', error.value) + } + }, + onEvent(event) { + // … + }, +}) +``` + +Note that `invalid-field` errors will usually be called for any invalid data - not only data shaped as `field: value`. This is because the EventSource specification says to treat anything prior to a `:` as the field name. Use the `error.line` property to get the full line that caused the error. + +> [!NOTE] +> When encountering the end of a stream, calling `.reset({consume: true})` on the parser to flush any remaining data and reset the parser state. This will trigger the `onError` callback if the pending data is not a valid event. + +### Comments + +The parser will ignore comments (lines starting with `:`) by default. If you want to handle comments, you can provide an `onComment` callback to the `createParser` function: + +```ts +const parser = createParser({ + onComment(comment) { + console.log('Received comment:', comment) + }, + onEvent(event) { + // … + }, +}) +``` + +> [!NOTE] +> Leading whitespace is not stripped from comments, eg `: comment` will give ` comment` as the comment value, not `comment` (note the leading space). + +## Stream usage + +```ts +import {EventSourceParserStream} from 'eventsource-parser/stream' + +const eventStream = response.body + .pipeThrough(new TextDecoderStream()) + .pipeThrough(new EventSourceParserStream()) +``` + +Note that the TransformStream is exposed under a separate export (`eventsource-parser/stream`), in order to maximize compatibility with environments that do not have the `TransformStream` constructor available. + +## License + +MIT © [Espen Hovlandsdal](https://espen.codes/) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/package.json new file mode 100644 index 000000000..e8a363510 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/package.json @@ -0,0 +1,115 @@ +{ + "name": "eventsource-parser", + "version": "3.0.6", + "description": "Streaming, source-agnostic EventSource/Server-Sent Events parser", + "sideEffects": false, + "type": "module", + "types": "./dist/index.d.ts", + "module": "./dist/index.js", + "main": "./dist/index.cjs", + "exports": { + ".": { + "source": "./src/index.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs", + "default": "./dist/index.js" + }, + "./stream": { + "source": "./src/stream.ts", + "import": "./dist/stream.js", + "require": "./dist/stream.cjs", + "default": "./dist/stream.js" + }, + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "stream": [ + "./dist/stream.d.ts" + ] + } + }, + "engines": { + "node": ">=18.0.0" + }, + "browserslist": [ + "node >= 20", + "chrome >= 71", + "safari >= 14.1", + "firefox >= 105", + "edge >= 79" + ], + "files": [ + "dist", + "!dist/stats.html", + "src", + "stream.js" + ], + "scripts": { + "build": "pkg-utils build && pkg-utils --strict", + "clean": "rimraf dist coverage", + "lint": "eslint . && tsc --noEmit", + "posttest": "npm run lint", + "prebuild": "npm run clean", + "prepublishOnly": "npm run build", + "test": "npm run test:node", + "test:bun": "bun test", + "test:deno": "deno run --allow-write --allow-net --allow-run --allow-sys --allow-ffi --allow-env --allow-read npm:vitest", + "test:node": "vitest --reporter=verbose" + }, + "author": "Espen Hovlandsdal ", + "keywords": [ + "sse", + "eventsource", + "server-sent-events" + ], + "devDependencies": { + "@sanity/pkg-utils": "^8.0.0", + "@sanity/semantic-release-preset": "^5.0.0", + "@types/node": "^20.19.0", + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.51.0", + "eslint-config-prettier": "^9.1.0", + "eslint-config-sanity": "^7.1.2", + "eventsource-encoder": "^1.0.1", + "prettier": "^3.5.3", + "rimraf": "^6.0.1", + "rollup-plugin-visualizer": "^6.0.3", + "semantic-release": "^24.2.3", + "typescript": "^5.8.3", + "vitest": "^3.1.3" + }, + "homepage": "https://github.com/rexxars/eventsource-parser#readme", + "bugs": { + "url": "https://github.com/rexxars/eventsource-parser/issues" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/rexxars/eventsource-parser.git" + }, + "license": "MIT", + "prettier": { + "bracketSpacing": false, + "printWidth": 100, + "semi": false, + "singleQuote": true + }, + "eslintConfig": { + "parserOptions": { + "ecmaFeatures": { + "modules": true + }, + "ecmaVersion": 9, + "sourceType": "module" + }, + "extends": [ + "sanity", + "sanity/typescript", + "prettier" + ], + "ignorePatterns": [ + "lib/**/" + ] + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/errors.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/errors.ts new file mode 100644 index 000000000..04cd292db --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/errors.ts @@ -0,0 +1,44 @@ +/** + * The type of error that occurred. + * @public + */ +export type ErrorType = 'invalid-retry' | 'unknown-field' + +/** + * Error thrown when encountering an issue during parsing. + * + * @public + */ +export class ParseError extends Error { + /** + * The type of error that occurred. + */ + type: ErrorType + + /** + * In the case of an unknown field encountered in the stream, this will be the field name. + */ + field?: string | undefined + + /** + * In the case of an unknown field encountered in the stream, this will be the value of the field. + */ + value?: string | undefined + + /** + * The line that caused the error, if available. + */ + line?: string | undefined + + constructor( + message: string, + options: {type: ErrorType; field?: string; value?: string; line?: string}, + ) { + super(message) + this.name = 'ParseError' + this.type = options.type + this.field = options.field + this.value = options.value + this.line = options.line + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/index.ts new file mode 100644 index 000000000..ac3328ef2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/index.ts @@ -0,0 +1,3 @@ +export {type ErrorType, ParseError} from './errors.ts' +export {createParser} from './parse.ts' +export type {EventSourceMessage, EventSourceParser, ParserCallbacks} from './types.ts' diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/parse.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/parse.ts new file mode 100644 index 000000000..872309407 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/parse.ts @@ -0,0 +1,232 @@ +/** + * EventSource/Server-Sent Events parser + * @see https://html.spec.whatwg.org/multipage/server-sent-events.html + */ +import {ParseError} from './errors.ts' +import type {EventSourceParser, ParserCallbacks} from './types.ts' + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function noop(_arg: unknown) { + // intentional noop +} + +/** + * Creates a new EventSource parser. + * + * @param callbacks - Callbacks to invoke on different parsing events: + * - `onEvent` when a new event is parsed + * - `onError` when an error occurs + * - `onRetry` when a new reconnection interval has been sent from the server + * - `onComment` when a comment is encountered in the stream + * + * @returns A new EventSource parser, with `parse` and `reset` methods. + * @public + */ +export function createParser(callbacks: ParserCallbacks): EventSourceParser { + if (typeof callbacks === 'function') { + throw new TypeError( + '`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?', + ) + } + + const {onEvent = noop, onError = noop, onRetry = noop, onComment} = callbacks + + let incompleteLine = '' + + let isFirstChunk = true + let id: string | undefined + let data = '' + let eventType = '' + + function feed(newChunk: string) { + // Strip any UTF8 byte order mark (BOM) at the start of the stream + const chunk = isFirstChunk ? newChunk.replace(/^\xEF\xBB\xBF/, '') : newChunk + + // If there was a previous incomplete line, append it to the new chunk, + // so we may process it together as a new (hopefully complete) chunk. + const [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`) + + for (const line of complete) { + parseLine(line) + } + + incompleteLine = incomplete + isFirstChunk = false + } + + function parseLine(line: string) { + // If the line is empty (a blank line), dispatch the event + if (line === '') { + dispatchEvent() + return + } + + // If the line starts with a U+003A COLON character (:), ignore the line. + if (line.startsWith(':')) { + if (onComment) { + onComment(line.slice(line.startsWith(': ') ? 2 : 1)) + } + return + } + + // If the line contains a U+003A COLON character (:) + const fieldSeparatorIndex = line.indexOf(':') + if (fieldSeparatorIndex !== -1) { + // Collect the characters on the line before the first U+003A COLON character (:), + // and let `field` be that string. + const field = line.slice(0, fieldSeparatorIndex) + + // Collect the characters on the line after the first U+003A COLON character (:), + // and let `value` be that string. If value starts with a U+0020 SPACE character, + // remove it from value. + const offset = line[fieldSeparatorIndex + 1] === ' ' ? 2 : 1 + const value = line.slice(fieldSeparatorIndex + offset) + + processField(field, value, line) + return + } + + // Otherwise, the string is not empty but does not contain a U+003A COLON character (:) + // Process the field using the whole line as the field name, and an empty string as the field value. + // 👆 This is according to spec. That means that a line that has the value `data` will result in + // a newline being added to the current `data` buffer, for instance. + processField(line, '', line) + } + + function processField(field: string, value: string, line: string) { + // Field names must be compared literally, with no case folding performed. + switch (field) { + case 'event': + // Set the `event type` buffer to field value + eventType = value + break + case 'data': + // Append the field value to the `data` buffer, then append a single U+000A LINE FEED(LF) + // character to the `data` buffer. + data = `${data}${value}\n` + break + case 'id': + // If the field value does not contain U+0000 NULL, then set the `ID` buffer to + // the field value. Otherwise, ignore the field. + id = value.includes('\0') ? undefined : value + break + case 'retry': + // If the field value consists of only ASCII digits, then interpret the field value as an + // integer in base ten, and set the event stream's reconnection time to that integer. + // Otherwise, ignore the field. + if (/^\d+$/.test(value)) { + onRetry(parseInt(value, 10)) + } else { + onError( + new ParseError(`Invalid \`retry\` value: "${value}"`, { + type: 'invalid-retry', + value, + line, + }), + ) + } + break + default: + // Otherwise, the field is ignored. + onError( + new ParseError( + `Unknown field "${field.length > 20 ? `${field.slice(0, 20)}…` : field}"`, + {type: 'unknown-field', field, value, line}, + ), + ) + break + } + } + + function dispatchEvent() { + const shouldDispatch = data.length > 0 + if (shouldDispatch) { + onEvent({ + id, + event: eventType || undefined, + // If the data buffer's last character is a U+000A LINE FEED (LF) character, + // then remove the last character from the data buffer. + data: data.endsWith('\n') ? data.slice(0, -1) : data, + }) + } + + // Reset for the next event + id = undefined + data = '' + eventType = '' + } + + function reset(options: {consume?: boolean} = {}) { + if (incompleteLine && options.consume) { + parseLine(incompleteLine) + } + + isFirstChunk = true + id = undefined + data = '' + eventType = '' + incompleteLine = '' + } + + return {feed, reset} +} + +/** + * For the given `chunk`, split it into lines according to spec, and return any remaining incomplete line. + * + * @param chunk - The chunk to split into lines + * @returns A tuple containing an array of complete lines, and any remaining incomplete line + * @internal + */ +function splitLines(chunk: string): [complete: Array, incomplete: string] { + /** + * According to the spec, a line is terminated by either: + * - U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pair + * - a single U+000A LINE FEED(LF) character not preceded by a U+000D CARRIAGE RETURN(CR) character + * - a single U+000D CARRIAGE RETURN(CR) character not followed by a U+000A LINE FEED(LF) character + */ + const lines: Array = [] + let incompleteLine = '' + let searchIndex = 0 + + while (searchIndex < chunk.length) { + // Find next line terminator + const crIndex = chunk.indexOf('\r', searchIndex) + const lfIndex = chunk.indexOf('\n', searchIndex) + + // Determine line end + let lineEnd = -1 + if (crIndex !== -1 && lfIndex !== -1) { + // CRLF case + lineEnd = Math.min(crIndex, lfIndex) + } else if (crIndex !== -1) { + // CR at the end of a chunk might be part of a CRLF sequence that spans chunks, + // so we shouldn't treat it as a line terminator (yet) + if (crIndex === chunk.length - 1) { + lineEnd = -1 + } else { + lineEnd = crIndex + } + } else if (lfIndex !== -1) { + lineEnd = lfIndex + } + + // Extract line if terminator found + if (lineEnd === -1) { + // No terminator found, rest is incomplete + incompleteLine = chunk.slice(searchIndex) + break + } else { + const line = chunk.slice(searchIndex, lineEnd) + lines.push(line) + + // Move past line terminator + searchIndex = lineEnd + 1 + if (chunk[searchIndex - 1] === '\r' && chunk[searchIndex] === '\n') { + searchIndex++ + } + } + } + + return [lines, incompleteLine] +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/stream.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/stream.ts new file mode 100644 index 000000000..29887d5f8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/stream.ts @@ -0,0 +1,88 @@ +import {createParser} from './parse.ts' +import type {EventSourceMessage, EventSourceParser} from './types.ts' + +/** + * Options for the EventSourceParserStream. + * + * @public + */ +export interface StreamOptions { + /** + * Behavior when a parsing error occurs. + * + * - A custom function can be provided to handle the error. + * - `'terminate'` will error the stream and stop parsing. + * - Any other value will ignore the error and continue parsing. + * + * @defaultValue `undefined` + */ + onError?: ('terminate' | ((error: Error) => void)) | undefined + + /** + * Callback for when a reconnection interval is sent from the server. + * + * @param retry - The number of milliseconds to wait before reconnecting. + */ + onRetry?: ((retry: number) => void) | undefined + + /** + * Callback for when a comment is encountered in the stream. + * + * @param comment - The comment encountered in the stream. + */ + onComment?: ((comment: string) => void) | undefined +} + +/** + * A TransformStream that ingests a stream of strings and produces a stream of `EventSourceMessage`. + * + * @example Basic usage + * ``` + * const eventStream = + * response.body + * .pipeThrough(new TextDecoderStream()) + * .pipeThrough(new EventSourceParserStream()) + * ``` + * + * @example Terminate stream on parsing errors + * ``` + * const eventStream = + * response.body + * .pipeThrough(new TextDecoderStream()) + * .pipeThrough(new EventSourceParserStream({terminateOnError: true})) + * ``` + * + * @public + */ +export class EventSourceParserStream extends TransformStream { + constructor({onError, onRetry, onComment}: StreamOptions = {}) { + let parser!: EventSourceParser + + super({ + start(controller) { + parser = createParser({ + onEvent: (event) => { + controller.enqueue(event) + }, + onError(error) { + if (onError === 'terminate') { + controller.error(error) + } else if (typeof onError === 'function') { + onError(error) + } + + // Ignore by default + }, + onRetry, + onComment, + }) + }, + transform(chunk) { + parser.feed(chunk) + }, + }) + } +} + +export {type ErrorType, ParseError} from './errors.ts' +export type {EventSourceMessage} from './types.ts' diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/types.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/types.ts new file mode 100644 index 000000000..2c87def86 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/src/types.ts @@ -0,0 +1,97 @@ +import type {ParseError} from './errors.ts' + +/** + * EventSource parser instance. + * + * Needs to be reset between reconnections/when switching data source, using the `reset()` method. + * + * @public + */ +export interface EventSourceParser { + /** + * Feeds the parser another chunk. The method _does not_ return a parsed message. + * Instead, callbacks passed when creating the parser will be triggered once we see enough data + * for a valid/invalid parsing step (see {@link ParserCallbacks}). + * + * @param chunk - The chunk to parse. Can be a partial, eg in the case of streaming messages. + * @public + */ + feed(chunk: string): void + + /** + * Resets the parser state. This is required when you have a new stream of messages - + * for instance in the case of a client being disconnected and reconnecting. + * + * Previously received, incomplete data will NOT be parsed unless you pass `consume: true`, + * which tells the parser to attempt to consume any incomplete data as if it ended with a newline + * character. This is useful for cases when a server sends a non-EventSource message that you + * want to be able to react to in an `onError` callback. + * + * @public + */ + reset(options?: {consume?: boolean}): void +} + +/** + * A parsed EventSource message event + * + * @public + */ +export interface EventSourceMessage { + /** + * The event type sent from the server. Note that this differs from the browser `EventSource` + * implementation in that browsers will default this to `message`, whereas this parser will + * leave this as `undefined` if not explicitly declared. + */ + event?: string | undefined + + /** + * ID of the message, if any was provided by the server. Can be used by clients to keep the + * last received message ID in sync when reconnecting. + */ + id?: string | undefined + + /** + * The data received for this message + */ + data: string +} + +/** + * Callbacks that can be passed to the parser to handle different types of parsed messages + * and errors. + * + * @public + */ +export interface ParserCallbacks { + /** + * Callback for when a new event/message is parsed from the stream. + * This is the main callback that clients will use to handle incoming messages. + * + * @param event - The parsed event/message + */ + onEvent?: ((event: EventSourceMessage) => void) | undefined + + /** + * Callback for when the server sends a new reconnection interval through the `retry` field. + * + * @param retry - The number of milliseconds to wait before reconnecting. + */ + onRetry?: ((retry: number) => void) | undefined + + /** + * Callback for when a comment is encountered in the stream. + * + * @param comment - The comment encountered in the stream. + */ + onComment?: ((comment: string) => void) | undefined + + /** + * Callback for when an error occurs during parsing. This is a catch-all for any errors + * that occur during parsing, and can be used to handle them in a custom way. Most clients + * tend to silently ignore any errors and instead retry, but it can be helpful to log/debug. + * + * @param error - The error that occurred during parsing + */ + onError?: ((error: ParseError) => void) | undefined +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/stream.js b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/stream.js new file mode 100644 index 000000000..98d74bcf3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/eventsource-parser/stream.js @@ -0,0 +1,2 @@ +/* included for compatibility with react-native without package exports support */ +module.exports = require('./dist/stream.cjs') diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/LICENSE new file mode 100644 index 000000000..5d70441c3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/LICENSE @@ -0,0 +1,22 @@ +MIT License +----------- + +Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/README.md new file mode 100644 index 000000000..50373a035 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/README.md @@ -0,0 +1,89 @@ +# fsevents + +Native access to MacOS FSEvents in [Node.js](https://nodejs.org/) + +The FSEvents API in MacOS allows applications to register for notifications of +changes to a given directory tree. It is a very fast and lightweight alternative +to kqueue. + +This is a low-level library. For a cross-platform file watching module that +uses fsevents, check out [Chokidar](https://github.com/paulmillr/chokidar). + +## Usage + +```sh +npm install fsevents +``` + +Supports only **Node.js v8.16 and higher**. + +```js +const fsevents = require('fsevents'); + +// To start observation +const stop = fsevents.watch(__dirname, (path, flags, id) => { + const info = fsevents.getInfo(path, flags); +}); + +// To end observation +stop(); +``` + +> **Important note:** The API behaviour is slightly different from typical JS APIs. The `stop` function **must** be +> retrieved and stored somewhere, even if you don't plan to stop the watcher. If you forget it, the garbage collector +> will eventually kick in, the watcher will be unregistered, and your callbacks won't be called anymore. + +The callback passed as the second parameter to `.watch` get's called whenever the operating system detects a +a change in the file system. It takes three arguments: + +###### `fsevents.watch(dirname: string, (path: string, flags: number, id: string) => void): () => Promise` + + * `path: string` - the item in the filesystem that have been changed + * `flags: number` - a numeric value describing what the change was + * `id: string` - an unique-id identifying this specific event + + Returns closer callback which when called returns a Promise resolving when the watcher process has been shut down. + +###### `fsevents.getInfo(path: string, flags: number, id: string): FsEventInfo` + +The `getInfo` function takes the `path`, `flags` and `id` arguments and converts those parameters into a structure +that is easier to digest to determine what the change was. + +The `FsEventsInfo` has the following shape: + +```js +/** + * @typedef {'created'|'modified'|'deleted'|'moved'|'root-changed'|'cloned'|'unknown'} FsEventsEvent + * @typedef {'file'|'directory'|'symlink'} FsEventsType + */ +{ + "event": "created", // {FsEventsEvent} + "path": "file.txt", + "type": "file", // {FsEventsType} + "changes": { + "inode": true, // Had iNode Meta-Information changed + "finder": false, // Had Finder Meta-Data changed + "access": false, // Had access permissions changed + "xattrs": false // Had xAttributes changed + }, + "flags": 0x100000000 +} +``` + +## Changelog + +- v2.3 supports Apple Silicon ARM CPUs +- v2 supports node 8.16+ and reduces package size massively +- v1.2.8 supports node 6+ +- v1.2.7 supports node 4+ + +## Troubleshooting + +- I'm getting `EBADPLATFORM` `Unsupported platform for fsevents` error. +- It's fine, nothing is broken. fsevents is macos-only. Other platforms are skipped. If you want to hide this warning, report a bug to NPM bugtracker asking them to hide ebadplatform warnings by default. + +## License + +The MIT License Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller — see LICENSE file. + +Visit our [GitHub page](https://github.com/fsevents/fsevents) and [NPM Page](https://npmjs.org/package/fsevents) diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/fsevents.d.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/fsevents.d.ts new file mode 100644 index 000000000..2723c048a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/fsevents.d.ts @@ -0,0 +1,46 @@ +declare type Event = "created" | "cloned" | "modified" | "deleted" | "moved" | "root-changed" | "unknown"; +declare type Type = "file" | "directory" | "symlink"; +declare type FileChanges = { + inode: boolean; + finder: boolean; + access: boolean; + xattrs: boolean; +}; +declare type Info = { + event: Event; + path: string; + type: Type; + changes: FileChanges; + flags: number; +}; +declare type WatchHandler = (path: string, flags: number, id: string) => void; +export declare function watch(path: string, handler: WatchHandler): () => Promise; +export declare function watch(path: string, since: number, handler: WatchHandler): () => Promise; +export declare function getInfo(path: string, flags: number): Info; +export declare const constants: { + None: 0x00000000; + MustScanSubDirs: 0x00000001; + UserDropped: 0x00000002; + KernelDropped: 0x00000004; + EventIdsWrapped: 0x00000008; + HistoryDone: 0x00000010; + RootChanged: 0x00000020; + Mount: 0x00000040; + Unmount: 0x00000080; + ItemCreated: 0x00000100; + ItemRemoved: 0x00000200; + ItemInodeMetaMod: 0x00000400; + ItemRenamed: 0x00000800; + ItemModified: 0x00001000; + ItemFinderInfoMod: 0x00002000; + ItemChangeOwner: 0x00004000; + ItemXattrMod: 0x00008000; + ItemIsFile: 0x00010000; + ItemIsDir: 0x00020000; + ItemIsSymlink: 0x00040000; + ItemIsHardlink: 0x00100000; + ItemIsLastHardlink: 0x00200000; + OwnEvent: 0x00080000; + ItemCloned: 0x00400000; +}; +export {}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/fsevents.js b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/fsevents.js new file mode 100644 index 000000000..198da98e7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/fsevents.js @@ -0,0 +1,83 @@ +/* + ** © 2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller + ** Licensed under MIT License. + */ + +/* jshint node:true */ +"use strict"; + +if (process.platform !== "darwin") { + throw new Error(`Module 'fsevents' is not compatible with platform '${process.platform}'`); +} + +const Native = require("./fsevents.node"); +const events = Native.constants; + +function watch(path, since, handler) { + if (typeof path !== "string") { + throw new TypeError(`fsevents argument 1 must be a string and not a ${typeof path}`); + } + if ("function" === typeof since && "undefined" === typeof handler) { + handler = since; + since = Native.flags.SinceNow; + } + if (typeof since !== "number") { + throw new TypeError(`fsevents argument 2 must be a number and not a ${typeof since}`); + } + if (typeof handler !== "function") { + throw new TypeError(`fsevents argument 3 must be a function and not a ${typeof handler}`); + } + + let instance = Native.start(Native.global, path, since, handler); + if (!instance) throw new Error(`could not watch: ${path}`); + return () => { + const result = instance ? Promise.resolve(instance).then(Native.stop) : Promise.resolve(undefined); + instance = undefined; + return result; + }; +} + +function getInfo(path, flags) { + return { + path, + flags, + event: getEventType(flags), + type: getFileType(flags), + changes: getFileChanges(flags), + }; +} + +function getFileType(flags) { + if (events.ItemIsFile & flags) return "file"; + if (events.ItemIsDir & flags) return "directory"; + if (events.MustScanSubDirs & flags) return "directory"; + if (events.ItemIsSymlink & flags) return "symlink"; +} +function anyIsTrue(obj) { + for (let key in obj) { + if (obj[key]) return true; + } + return false; +} +function getEventType(flags) { + if (events.ItemRemoved & flags) return "deleted"; + if (events.ItemRenamed & flags) return "moved"; + if (events.ItemCreated & flags) return "created"; + if (events.ItemModified & flags) return "modified"; + if (events.RootChanged & flags) return "root-changed"; + if (events.ItemCloned & flags) return "cloned"; + if (anyIsTrue(flags)) return "modified"; + return "unknown"; +} +function getFileChanges(flags) { + return { + inode: !!(events.ItemInodeMetaMod & flags), + finder: !!(events.ItemFinderInfoMod & flags), + access: !!(events.ItemChangeOwner & flags), + xattrs: !!(events.ItemXattrMod & flags), + }; +} + +exports.watch = watch; +exports.getInfo = getInfo; +exports.constants = events; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/fsevents.node b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/fsevents.node new file mode 100755 index 0000000000000000000000000000000000000000..1cc3345ead403e72439746aee6b40645893c322b GIT binary patch literal 163626 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 Is-vs_AMzay6aWAK literal 0 HcmV?d00001 diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/package.json new file mode 100644 index 000000000..5d0ee15e6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/fsevents/package.json @@ -0,0 +1,62 @@ +{ + "name": "fsevents", + "version": "2.3.3", + "description": "Native Access to MacOS FSEvents", + "main": "fsevents.js", + "types": "fsevents.d.ts", + "os": [ + "darwin" + ], + "files": [ + "fsevents.d.ts", + "fsevents.js", + "fsevents.node" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + }, + "scripts": { + "clean": "node-gyp clean && rm -f fsevents.node", + "build": "node-gyp clean && rm -f fsevents.node && node-gyp rebuild && node-gyp clean", + "test": "/bin/bash ./test.sh 2>/dev/null", + "prepublishOnly": "npm run build" + }, + "repository": { + "type": "git", + "url": "https://github.com/fsevents/fsevents.git" + }, + "keywords": [ + "fsevents", + "mac" + ], + "contributors": [ + { + "name": "Philipp Dunkel", + "email": "pip@pipobscure.com" + }, + { + "name": "Ben Noordhuis", + "email": "info@bnoordhuis.nl" + }, + { + "name": "Elan Shankar", + "email": "elan.shanker@gmail.com" + }, + { + "name": "Miroslav Bajtoš", + "email": "mbajtoss@gmail.com" + }, + { + "name": "Paul Miller", + "url": "https://paulmillr.com" + } + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/fsevents/fsevents/issues" + }, + "homepage": "https://github.com/fsevents/fsevents", + "devDependencies": { + "node-gyp": "^9.4.0" + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/get-tsconfig/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/get-tsconfig/LICENSE new file mode 100644 index 000000000..51e4fd864 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/get-tsconfig/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Hiroki Osame + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/get-tsconfig/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/get-tsconfig/README.md new file mode 100644 index 000000000..b5861e372 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/get-tsconfig/README.md @@ -0,0 +1,235 @@ +

+ +

+

+ get-tsconfig +
+
+

+ +Find and parse `tsconfig.json` files. + +### Features +- Zero dependency (not even TypeScript) +- Tested against TypeScript for correctness +- Supports comments & dangling commas in `tsconfig.json` +- Resolves [`extends`](https://www.typescriptlang.org/tsconfig/#extends) +- Fully typed `tsconfig.json` +- Validates and throws parsing errors +- Tiny! `7 kB` Minified + Gzipped + +
+ +

+ + +

+

Already a sponsor? Join the discussion in the Development repo!

+ +## Install + +```bash +npm install get-tsconfig +``` + +## Why? +For TypeScript related tooling to correctly parse `tsconfig.json` file without depending on TypeScript. + +## API + +### getTsconfig(searchPath?, configName?, cache?) + +Searches for a tsconfig file (defaults to `tsconfig.json`) in the `searchPath` and parses it. (If you already know the tsconfig path, use [`parseTsconfig`](#parsetsconfigtsconfigpath-cache) instead). Returns `null` if a config file cannot be found, or an object containing the path and parsed TSConfig object if found. + +Returns: + +```ts +type TsconfigResult = { + + /** + * The path to the tsconfig.json file + */ + path: string + + /** + * The resolved tsconfig.json file + */ + config: TsConfigJsonResolved +} +``` + +#### searchPath +Type: `string` + +Default: `process.cwd()` + +Accepts a path to a file or directory to search up for a `tsconfig.json` file. + +#### configName +Type: `string` + +Default: `tsconfig.json` + +The file name of the TypeScript config file. + +#### cache +Type: `Map` + +Default: `new Map()` + +Optional cache for fs operations. + +#### Example + +```ts +import { getTsconfig } from 'get-tsconfig' + +// Searches for tsconfig.json starting in the current directory +console.log(getTsconfig()) + +// Find tsconfig.json from a TypeScript file path +console.log(getTsconfig('./path/to/index.ts')) + +// Find tsconfig.json from a directory file path +console.log(getTsconfig('./path/to/directory')) + +// Explicitly pass in tsconfig.json path +console.log(getTsconfig('./path/to/tsconfig.json')) + +// Search for jsconfig.json - https://code.visualstudio.com/docs/languages/jsconfig +console.log(getTsconfig('.', 'jsconfig.json')) +``` + +--- + +### parseTsconfig(tsconfigPath, cache?) + +Parse the tsconfig file provided. Used internally by `getTsconfig`. Returns the parsed tsconfig as `TsConfigJsonResolved`. + +#### tsconfigPath +Type: `string` + +Required path to the tsconfig file. + +#### cache +Type: `Map` + +Default: `new Map()` + +Optional cache for fs operations. + +#### Example + +```ts +import { parseTsconfig } from 'get-tsconfig' + +// Must pass in a path to an existing tsconfig.json file +console.log(parseTsconfig('./path/to/tsconfig.custom.json')) +``` + +--- + +### createFileMatcher(tsconfig: TsconfigResult, caseSensitivePaths?: boolean) + +Given a `tsconfig.json` file, it returns a file-matcher function that determines whether it should apply to a file path. + +```ts +type FileMatcher = (filePath: string) => TsconfigResult['config'] | undefined +``` + +#### tsconfig +Type: `TsconfigResult` + +Pass in the return value from `getTsconfig`, or a `TsconfigResult` object. + +#### caseSensitivePaths +Type: `boolean` + +By default, it uses [`is-fs-case-sensitive`](https://github.com/privatenumber/is-fs-case-sensitive) to detect whether the file-system is case-sensitive. + +Pass in `true` to make it case-sensitive. + +#### Example + +For example, if it's called with a `tsconfig.json` file that has `include`/`exclude`/`files` defined, the file-matcher will return the config for files that match `include`/`files`, and return `undefined` for files that don't match or match `exclude`. + +```ts +const tsconfig = getTsconfig() +const fileMatcher = tsconfig && createFileMatcher(tsconfig) + +/* + * Returns tsconfig.json if it matches the file, + * undefined if not + */ +const configForFile = fileMatcher?.('/path/to/file.ts') +const distCode = compileTypescript({ + code: sourceCode, + tsconfig: configForFile +}) +``` + +--- + +### createPathsMatcher(tsconfig: TsconfigResult) + +Given a tsconfig with [`compilerOptions.paths`](https://www.typescriptlang.org/tsconfig#paths) defined, it returns a matcher function. + +The matcher function accepts an [import specifier (the path to resolve)](https://nodejs.org/api/esm.html#terminology), checks it against `compilerOptions.paths`, and returns an array of possible paths to check: +```ts +function pathsMatcher(specifier: string): string[] +``` + +This function only returns possible paths and doesn't actually do any resolution. This helps increase compatibility wtih file/build systems which usually have their own resolvers. + +#### Example + +```ts +import { getTsconfig, createPathsMatcher } from 'get-tsconfig' + +const tsconfig = getTsconfig() +const pathsMatcher = createPathsMatcher(tsconfig) + +const exampleResolver = (request: string) => { + if (pathsMatcher) { + const tryPaths = pathsMatcher(request) + + // Check if paths in `tryPaths` exist + } +} +``` + +## FAQ + +### How can I use TypeScript to parse `tsconfig.json`? +This package is a re-implementation of TypeScript's `tsconfig.json` parser. + +However, if you already have TypeScript as a dependency, you can simply use it's API: + +```ts +import { + sys as tsSys, + findConfigFile, + readConfigFile, + parseJsonConfigFileContent +} from 'typescript' + +// Find tsconfig.json file +const tsconfigPath = findConfigFile(process.cwd(), tsSys.fileExists, 'tsconfig.json') + +// Read tsconfig.json file +const tsconfigFile = readConfigFile(tsconfigPath, tsSys.readFile) + +// Resolve extends +const parsedTsconfig = parseJsonConfigFileContent( + tsconfigFile.config, + tsSys, + path.dirname(tsconfigPath) +) +``` + +## Sponsors +

+ + + +

diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/get-tsconfig/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/get-tsconfig/package.json new file mode 100644 index 000000000..fc78eca9f --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/get-tsconfig/package.json @@ -0,0 +1,46 @@ +{ + "name": "get-tsconfig", + "version": "4.13.7", + "description": "Find and parse the tsconfig.json file from a directory path", + "keywords": [ + "get-tsconfig", + "get", + "typescript", + "tsconfig", + "tsconfig.json" + ], + "license": "MIT", + "repository": "privatenumber/get-tsconfig", + "funding": "https://github.com/privatenumber/get-tsconfig?sponsor=1", + "author": { + "name": "Hiroki Osame", + "email": "hiroki.osame@gmail.com" + }, + "files": [ + "dist" + ], + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.cts", + "exports": { + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + }, + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + } + }, + "imports": { + "#get-tsconfig": { + "types": "./src/index.ts", + "development": "./src/index.ts", + "default": "./dist/index.mjs" + } + }, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + } +} \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/headroom-ai/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/headroom-ai/README.md new file mode 100644 index 000000000..8923a1a89 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/headroom-ai/README.md @@ -0,0 +1,108 @@ +# headroom-ai + +Compress LLM context. Save tokens. Fit more into every request. + +## Install + +```bash +npm install headroom-ai +``` + +## Quick Start + +```typescript +import { compress } from 'headroom-ai'; + +const result = await compress(messages, { model: 'gpt-4o' }); +console.log(`Saved ${result.tokensSaved} tokens (${((1 - result.compressionRatio) * 100).toFixed(0)}%)`); + +// Use compressed messages with any LLM client +const response = await openai.chat.completions.create({ + model: 'gpt-4o', + messages: result.messages, +}); +``` + +Requires a running Headroom proxy (`headroom proxy`) or Headroom Cloud API key. + +## Framework Adapters + +### Vercel AI SDK + +```typescript +import { headroomMiddleware } from 'headroom-ai/vercel-ai'; +import { wrapLanguageModel, generateText } from 'ai'; +import { openai } from '@ai-sdk/openai'; + +const model = wrapLanguageModel({ + model: openai('gpt-4o'), + middleware: headroomMiddleware(), +}); + +const { text } = await generateText({ model, messages }); +``` + +### OpenAI SDK + +```typescript +import { withHeadroom } from 'headroom-ai/openai'; +import OpenAI from 'openai'; + +const client = withHeadroom(new OpenAI()); +const response = await client.chat.completions.create({ + model: 'gpt-4o', + messages: longConversation, +}); +``` + +### Anthropic SDK + +```typescript +import { withHeadroom } from 'headroom-ai/anthropic'; +import Anthropic from '@anthropic-ai/sdk'; + +const client = withHeadroom(new Anthropic()); +const response = await client.messages.create({ + model: 'claude-sonnet-4-5-20250929', + messages: longConversation, + max_tokens: 1024, +}); +``` + +## Configuration + +```typescript +import { compress } from 'headroom-ai'; + +const result = await compress(messages, { + model: 'gpt-4o', + baseUrl: 'http://localhost:8787', // or https://api.headroom.ai + apiKey: 'hr_...', // for Headroom Cloud + timeout: 30000, // ms + fallback: true, // return uncompressed if proxy is down (default) + retries: 1, // retry on transient failures (default) +}); +``` + +Or use environment variables: +- `HEADROOM_BASE_URL` — proxy/cloud URL +- `HEADROOM_API_KEY` — Cloud API key + +## Reusable Client + +```typescript +import { HeadroomClient } from 'headroom-ai'; + +const client = new HeadroomClient({ + baseUrl: 'http://localhost:8787', + apiKey: 'hr_...', +}); + +// Reuse across many calls +const r1 = await client.compress(messages1, { model: 'gpt-4o' }); +const r2 = await client.compress(messages2, { model: 'gpt-4o' }); +``` + +## License + +Apache-2.0 diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/headroom-ai/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/headroom-ai/package.json new file mode 100644 index 000000000..7f798a2ad --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/headroom-ai/package.json @@ -0,0 +1,98 @@ +{ + "name": "headroom-ai", + "version": "0.1.0", + "description": "Compress LLM context. Save tokens. Fit more into every request.", + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist", + "README.md", + "LICENSE" + ], + "exports": { + ".": { + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + }, + "./vercel-ai": { + "import": { + "types": "./dist/adapters/vercel-ai.d.ts", + "default": "./dist/adapters/vercel-ai.js" + }, + "require": { + "types": "./dist/adapters/vercel-ai.d.cts", + "default": "./dist/adapters/vercel-ai.cjs" + } + }, + "./openai": { + "import": { + "types": "./dist/adapters/openai.d.ts", + "default": "./dist/adapters/openai.js" + }, + "require": { + "types": "./dist/adapters/openai.d.cts", + "default": "./dist/adapters/openai.cjs" + } + }, + "./anthropic": { + "import": { + "types": "./dist/adapters/anthropic.d.ts", + "default": "./dist/adapters/anthropic.js" + }, + "require": { + "types": "./dist/adapters/anthropic.d.cts", + "default": "./dist/adapters/anthropic.cjs" + } + } + }, + "engines": { + "node": ">=18.0.0" + }, + "scripts": { + "build": "tsup", + "test": "vitest run", + "test:watch": "vitest", + "typecheck": "tsc --noEmit" + }, + "peerDependencies": { + "@ai-sdk/provider": ">=1.0.0", + "@anthropic-ai/sdk": ">=0.30.0", + "ai": ">=6.0.0", + "openai": ">=4.0.0" + }, + "peerDependenciesMeta": { + "ai": { + "optional": true + }, + "@ai-sdk/provider": { + "optional": true + }, + "openai": { + "optional": true + }, + "@anthropic-ai/sdk": { + "optional": true + } + }, + "devDependencies": { + "@ai-sdk/anthropic": "^3.0.64", + "@ai-sdk/openai": "^3.0.48", + "@ai-sdk/provider": "^1.0.0", + "@anthropic-ai/sdk": "^0.39.0", + "ai": "^6.0.0", + "dotenv": "^17.3.1", + "openai": "^4.80.0", + "tsup": "^8.0.0", + "typescript": "^5.5.0", + "vitest": "^2.0.0" + }, + "license": "Apache-2.0" +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/json-schema/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/json-schema/LICENSE new file mode 100644 index 000000000..824c87fa6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/json-schema/LICENSE @@ -0,0 +1,195 @@ +Dojo is available under *either* the terms of the BSD 3-Clause "New" License *or* the +Academic Free License version 2.1. As a recipient of Dojo, you may choose which +license to receive this code under (except as noted in per-module LICENSE +files). Some modules may not be the copyright of the Dojo Foundation. These +modules contain explicit declarations of copyright in both the LICENSE files in +the directories in which they reside and in the code itself. No external +contributions are allowed under licenses which are fundamentally incompatible +with the AFL-2.1 OR and BSD-3-Clause licenses that Dojo is distributed under. + +The text of the AFL-2.1 and BSD-3-Clause licenses is reproduced below. + +------------------------------------------------------------------------------- +BSD 3-Clause "New" License: +********************** + +Copyright (c) 2005-2015, The Dojo Foundation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the Dojo Foundation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------- +The Academic Free License, v. 2.1: +********************************** + +This Academic Free License (the "License") applies to any original work of +authorship (the "Original Work") whose owner (the "Licensor") has placed the +following notice immediately following the copyright notice for the Original +Work: + +Licensed under the Academic Free License version 2.1 + +1) Grant of Copyright License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license to do the +following: + +a) to reproduce the Original Work in copies; + +b) to prepare derivative works ("Derivative Works") based upon the Original +Work; + +c) to distribute copies of the Original Work and Derivative Works to the +public; + +d) to perform the Original Work publicly; and + +e) to display the Original Work publicly. + +2) Grant of Patent License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license, under patent +claims owned or controlled by the Licensor that are embodied in the Original +Work as furnished by the Licensor, to make, use, sell and offer for sale the +Original Work and Derivative Works. + +3) Grant of Source Code License. The term "Source Code" means the preferred +form of the Original Work for making modifications to it and all available +documentation describing how to modify the Original Work. Licensor hereby +agrees to provide a machine-readable copy of the Source Code of the Original +Work along with each copy of the Original Work that Licensor distributes. +Licensor reserves the right to satisfy this obligation by placing a +machine-readable copy of the Source Code in an information repository +reasonably calculated to permit inexpensive and convenient access by You for as +long as Licensor continues to distribute the Original Work, and by publishing +the address of that information repository in a notice immediately following +the copyright notice that applies to the Original Work. + +4) Exclusions From License Grant. Neither the names of Licensor, nor the names +of any contributors to the Original Work, nor any of their trademarks or +service marks, may be used to endorse or promote products derived from this +Original Work without express prior written permission of the Licensor. Nothing +in this License shall be deemed to grant any rights to trademarks, copyrights, +patents, trade secrets or any other intellectual property of Licensor except as +expressly stated herein. No patent license is granted to make, use, sell or +offer to sell embodiments of any patent claims other than the licensed claims +defined in Section 2. No right is granted to the trademarks of Licensor even if +such marks are included in the Original Work. Nothing in this License shall be +interpreted to prohibit Licensor from licensing under different terms from this +License any Original Work that Licensor otherwise would have a right to +license. + +5) This section intentionally omitted. + +6) Attribution Rights. You must retain, in the Source Code of any Derivative +Works that You create, all copyright, patent or trademark notices from the +Source Code of the Original Work, as well as any notices of licensing and any +descriptive text identified therein as an "Attribution Notice." You must cause +the Source Code for any Derivative Works that You create to carry a prominent +Attribution Notice reasonably calculated to inform recipients that You have +modified the Original Work. + +7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that +the copyright in and to the Original Work and the patent rights granted herein +by Licensor are owned by the Licensor or are sublicensed to You under the terms +of this License with the permission of the contributor(s) of those copyrights +and patent rights. Except as expressly stated in the immediately proceeding +sentence, the Original Work is provided under this License on an "AS IS" BASIS +and WITHOUT WARRANTY, either express or implied, including, without limitation, +the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. +This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No +license to Original Work is granted hereunder except under this disclaimer. + +8) Limitation of Liability. Under no circumstances and under no legal theory, +whether in tort (including negligence), contract, or otherwise, shall the +Licensor be liable to any person for any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License +or the use of the Original Work including, without limitation, damages for loss +of goodwill, work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses. This limitation of liability shall not +apply to liability for death or personal injury resulting from Licensor's +negligence to the extent applicable law prohibits such limitation. Some +jurisdictions do not allow the exclusion or limitation of incidental or +consequential damages, so this exclusion and limitation may not apply to You. + +9) Acceptance and Termination. If You distribute copies of the Original Work or +a Derivative Work, You must make a reasonable effort under the circumstances to +obtain the express assent of recipients to the terms of this License. Nothing +else but this License (or another written agreement between Licensor and You) +grants You permission to create Derivative Works based upon the Original Work +or to exercise any of the rights granted in Section 1 herein, and any attempt +to do so except under the terms of this License (or another written agreement +between Licensor and You) is expressly prohibited by U.S. copyright law, the +equivalent laws of other countries, and by international treaty. Therefore, by +exercising any of the rights granted to You in Section 1 herein, You indicate +Your acceptance of this License and all of its terms and conditions. + +10) Termination for Patent Action. This License shall terminate automatically +and You may no longer exercise any of the rights granted to You by this License +as of the date You commence an action, including a cross-claim or counterclaim, +against Licensor or any licensee alleging that the Original Work infringes a +patent. This termination provision shall not apply for an action alleging +patent infringement by combinations of the Original Work with other software or +hardware. + +11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this +License may be brought only in the courts of a jurisdiction wherein the +Licensor resides or in which Licensor conducts its primary business, and under +the laws of that jurisdiction excluding its conflict-of-law provisions. The +application of the United Nations Convention on Contracts for the International +Sale of Goods is expressly excluded. Any use of the Original Work outside the +scope of this License or after its termination shall be subject to the +requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et +seq., the equivalent laws of other countries, and international treaty. This +section shall survive the termination of this License. + +12) Attorneys Fees. In any action to enforce the terms of this License or +seeking damages relating thereto, the prevailing party shall be entitled to +recover its costs and expenses, including, without limitation, reasonable +attorneys' fees and costs incurred in connection with such action, including +any appeal of such action. This section shall survive the termination of this +License. + +13) Miscellaneous. This License represents the complete agreement concerning +the subject matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent necessary to +make it enforceable. + +14) Definition of "You" in This License. "You" throughout this License, whether +in upper or lower case, means an individual or a legal entity exercising rights +under, and complying with all of the terms of, this License. For legal +entities, "You" includes any entity that controls, is controlled by, or is +under common control with you. For purposes of this definition, "control" means +(i) the power, direct or indirect, to cause the direction or management of such +entity, whether by contract or otherwise, or (ii) ownership of fifty percent +(50%) or more of the outstanding shares, or (iii) beneficial ownership of such +entity. + +15) Right to Use. You may use the Original Work in all ways not otherwise +restricted or conditioned by this License or by law, and Licensor promises not +to interfere with or be responsible for such uses by You. + +This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. +Permission is hereby granted to copy and distribute this license without +modification. This license may not be modified without the express written +permission of its copyright owner. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/json-schema/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/json-schema/README.md new file mode 100644 index 000000000..b58623908 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/json-schema/README.md @@ -0,0 +1,3 @@ +This is a historical repository for the early development of the JSON Schema specification and implementation. This package is considered "finished": it holds the earlier draft specification and a simple, efficient, lightweight implementation of the original core elements of JSON Schema. This repository does not house the latest specifications nor does it implement the latest versions of JSON Schema. This package seeks to maintain the stability (in behavior and size) of this original implementation for the sake of the numerous packages that rely on it. For the latest JSON Schema specifications and implementations, please visit the [JSON Schema site](https://json-schema.org/) (or the [respository](https://github.com/json-schema-org/json-schema-spec)). + +Code is licensed under the AFL or BSD 3-Clause license. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/json-schema/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/json-schema/package.json new file mode 100644 index 000000000..8c1f89980 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/json-schema/package.json @@ -0,0 +1,24 @@ +{ + "name": "json-schema", + "version": "0.4.0", + "author": "Kris Zyp", + "description": "JSON Schema validation and specifications", + "maintainers":[ + {"name": "Kris Zyp", "email": "kriszyp@gmail.com"}], + "keywords": [ + "json", + "schema" + ], + "files": [ + "lib" + ], + "license": "(AFL-2.1 OR BSD-3-Clause)", + "repository": { + "type":"git", + "url":"http://github.com/kriszyp/json-schema" + }, + "directories": { "lib": "./lib" }, + "main": "./lib/validate.js", + "devDependencies": { "vows": "*" }, + "scripts": { "test": "vows --spec test/*.js" } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/resolve-pkg-maps/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/resolve-pkg-maps/LICENSE new file mode 100644 index 000000000..51e4fd864 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/resolve-pkg-maps/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Hiroki Osame + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/resolve-pkg-maps/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/resolve-pkg-maps/README.md new file mode 100644 index 000000000..2469b1b20 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/resolve-pkg-maps/README.md @@ -0,0 +1,216 @@ +# resolve-pkg-maps + +Utils to resolve `package.json` subpath & conditional [`exports`](https://nodejs.org/api/packages.html#exports)/[`imports`](https://nodejs.org/api/packages.html#imports) in resolvers. + +Implements the [ESM resolution algorithm](https://nodejs.org/api/esm.html#resolver-algorithm-specification). Tested [against Node.js](/tests/) for accuracy. + +Support this project by ⭐️ starring and sharing it. [Follow me](https://github.com/privatenumber) to see what other cool projects I'm working on! ❤️ + +## Usage + +### Resolving `exports` + +_utils/package.json_ +```json5 +{ + // ... + "exports": { + "./reverse": { + "require": "./file.cjs", + "default": "./file.mjs" + } + }, + // ... +} +``` + +```ts +import { resolveExports } from 'resolve-pkg-maps' + +const [packageName, packageSubpath] = parseRequest('utils/reverse') + +const resolvedPaths: string[] = resolveExports( + getPackageJson(packageName).exports, + packageSubpath, + ['import', ...otherConditions] +) +// => ['./file.mjs'] +``` + +### Resolving `imports` + +_package.json_ +```json5 +{ + // ... + "imports": { + "#supports-color": { + "node": "./index.js", + "default": "./browser.js" + } + }, + // ... +} +``` + +```ts +import { resolveImports } from 'resolve-pkg-maps' + +const resolvedPaths: string[] = resolveImports( + getPackageJson('.').imports, + '#supports-color', + ['node', ...otherConditions] +) +// => ['./index.js'] +``` + +## API + +### resolveExports(exports, request, conditions) + +Returns: `string[]` + +Resolves the `request` based on `exports` and `conditions`. Returns an array of paths (e.g. in case a fallback array is matched). + +#### exports + +Type: +```ts +type Exports = PathOrMap | readonly PathOrMap[] + +type PathOrMap = string | PathConditionsMap + +type PathConditionsMap = { + [condition: string]: PathConditions | null +} +``` + +The [`exports` property](https://nodejs.org/api/packages.html#exports) value in `package.json`. + +#### request + +Type: `string` + +The package subpath to resolve. Assumes a normalized path is passed in (eg. [repeating slashes `//`](https://github.com/nodejs/node/issues/44316)). + +It _should not_ start with `/` or `./`. + +Example: if the full import path is `some-package/subpath/file`, the request is `subpath/file`. + + +#### conditions + +Type: `readonly string[]` + +An array of conditions to use when resolving the request. For reference, Node.js's default conditions are [`['node', 'import']`](https://nodejs.org/api/esm.html#:~:text=defaultConditions%20is%20the%20conditional%20environment%20name%20array%2C%20%5B%22node%22%2C%20%22import%22%5D.). + +The order of this array does not matter; the order of condition keys in the export map is what matters instead. + +Not all conditions in the array need to be met to resolve the request. It just needs enough to resolve to a path. + +--- + +### resolveImports(imports, request, conditions) + +Returns: `string[]` + +Resolves the `request` based on `imports` and `conditions`. Returns an array of paths (e.g. in case a fallback array is matched). + +#### imports + +Type: +```ts +type Imports = { + [condition: string]: PathOrMap | readonly PathOrMap[] | null +} + +type PathOrMap = string | Imports +``` + +The [`imports` property](https://nodejs.org/api/packages.html#imports) value in `package.json`. + + +#### request + +Type: `string` + +The request resolve. Assumes a normalized path is passed in (eg. [repeating slashes `//`](https://github.com/nodejs/node/issues/44316)). + +> **Note:** In Node.js, imports resolutions are limited to requests prefixed with `#`. However, this package does not enforce that requirement in case you want to add custom support for non-prefixed entries. + +#### conditions + +Type: `readonly string[]` + +An array of conditions to use when resolving the request. For reference, Node.js's default conditions are [`['node', 'import']`](https://nodejs.org/api/esm.html#:~:text=defaultConditions%20is%20the%20conditional%20environment%20name%20array%2C%20%5B%22node%22%2C%20%22import%22%5D.). + +The order of this array does not matter; the order of condition keys in the import map is what matters instead. + +Not all conditions in the array need to be met to resolve the request. It just needs enough to resolve to a path. + +--- + +### Errors + +#### `ERR_PACKAGE_PATH_NOT_EXPORTED` + - If the request is not exported by the export map + +#### `ERR_PACKAGE_IMPORT_NOT_DEFINED` + - If the request is not defined by the import map + +#### `ERR_INVALID_PACKAGE_CONFIG` + + - If an object contains properties that are both paths and conditions (e.g. start with and without `.`) + - If an object contains numeric properties + +#### `ERR_INVALID_PACKAGE_TARGET` + - If a resolved exports path is not a valid path (e.g. not relative or has protocol) + - If a resolved path includes `..` or `node_modules` + - If a resolved path is a type that cannot be parsed + +## FAQ + +### Why do the APIs return an array of paths? + +`exports`/`imports` supports passing in a [fallback array](https://github.com/jkrems/proposal-pkg-exports/#:~:text=Whenever%20there%20is,to%20new%20cases.) to provide fallback paths if the previous one is invalid: + +```json5 +{ + "exports": { + "./feature": [ + "./file.js", + "./fallback.js" + ] + } +} +``` + +Node.js's implementation [picks the first valid path (without attempting to resolve it)](https://github.com/nodejs/node/issues/44282#issuecomment-1220151715) and throws an error if it can't be resolved. Node.js's fallback array is designed for [forward compatibility with features](https://github.com/jkrems/proposal-pkg-exports/#:~:text=providing%20forwards%20compatiblitiy%20for%20new%20features) (e.g. protocols) that can be immediately/inexpensively validated: + +```json5 +{ + "exports": { + "./core-polyfill": ["std:core-module", "./core-polyfill.js"] + } +} +``` + +However, [Webpack](https://webpack.js.org/guides/package-exports/#alternatives) and [TypeScript](https://github.com/microsoft/TypeScript/blob/71e852922888337ef51a0e48416034a94a6c34d9/src/compiler/moduleSpecifiers.ts#L695) have deviated from this behavior and attempts to resolve the next path if a path cannot be resolved. + +By returning an array of matched paths instead of just the first one, the user can decide which behavior to adopt. + +### How is it different from [`resolve.exports`](https://github.com/lukeed/resolve.exports)? + +`resolve.exports` only resolves `exports`, whereas this package resolves both `exports` & `imports`. This comparison will only cover resolving `exports`. + +- Despite it's name, `resolve.exports` handles more than just `exports`. It takes in the entire `package.json` object to handle resolving `.` and [self-references](https://nodejs.org/api/packages.html#self-referencing-a-package-using-its-name). This package only accepts `exports`/`imports` maps from `package.json` and is scoped to only resolving what's defined in the maps. + +- `resolve.exports` accepts the full request (e.g. `foo/bar`), whereas this package only accepts the requested subpath (e.g. `bar`). + +- `resolve.exports` only returns the first result in a fallback array. This package returns an array of results for the user to decide how to handle it. + +- `resolve.exports` supports [subpath folder mapping](https://nodejs.org/docs/latest-v16.x/api/packages.html#subpath-folder-mappings) (deprecated in Node.js v16 & removed in v17) but seems to [have a bug](https://github.com/lukeed/resolve.exports/issues/7). This package does not support subpath folder mapping because Node.js has removed it in favor of using subpath patterns. + +- Neither resolvers rely on a file-system + +This package also addresses many of the bugs in `resolve.exports`, demonstrated in [this test](/tests/exports/compare-resolve.exports.ts). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/resolve-pkg-maps/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/resolve-pkg-maps/package.json new file mode 100644 index 000000000..720d98492 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/resolve-pkg-maps/package.json @@ -0,0 +1,42 @@ +{ + "name": "resolve-pkg-maps", + "version": "1.0.0", + "description": "Resolve package.json exports & imports maps", + "keywords": [ + "node.js", + "package.json", + "exports", + "imports" + ], + "license": "MIT", + "repository": "privatenumber/resolve-pkg-maps", + "funding": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1", + "author": { + "name": "Hiroki Osame", + "email": "hiroki.osame@gmail.com" + }, + "type": "module", + "files": [ + "dist" + ], + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.cts", + "exports": { + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + }, + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + } + }, + "imports": { + "#resolve-pkg-maps": { + "types": "./src/index.ts", + "development": "./src/index.ts", + "default": "./dist/index.mjs" + } + } +} \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/tsx/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/tsx/LICENSE new file mode 100644 index 000000000..bf183d2f5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/tsx/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Hiroki Osame + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/tsx/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/tsx/README.md new file mode 100644 index 000000000..b269d1cc3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/tsx/README.md @@ -0,0 +1,32 @@ +

+
+ + + tsx + +

+ +

+ +

+TypeScript Execute (tsx): The easiest way to run TypeScript in Node.js +

+Documentation    |    Getting started → +

+ +
+ +

+ + +

+

Already a sponsor? Join the discussion in the Development repo!

+ +## Sponsors + +

+ + + +

+ diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/tsx/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/tsx/package.json new file mode 100644 index 000000000..51a3ee6c2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/tsx/package.json @@ -0,0 +1,68 @@ +{ + "name": "tsx", + "version": "4.21.0", + "description": "TypeScript Execute (tsx): Node.js enhanced with esbuild to run TypeScript & ESM files", + "keywords": [ + "cli", + "runtime", + "node", + "cjs", + "commonjs", + "esm", + "typescript", + "typescript runner" + ], + "license": "MIT", + "repository": "privatenumber/tsx", + "author": { + "name": "Hiroki Osame", + "email": "hiroki.osame@gmail.com" + }, + "files": [ + "dist" + ], + "type": "module", + "bin": "./dist/cli.mjs", + "exports": { + "./package.json": "./package.json", + ".": "./dist/loader.mjs", + "./patch-repl": "./dist/patch-repl.cjs", + "./cjs": "./dist/cjs/index.cjs", + "./cjs/api": { + "import": { + "types": "./dist/cjs/api/index.d.mts", + "default": "./dist/cjs/api/index.mjs" + }, + "require": { + "types": "./dist/cjs/api/index.d.cts", + "default": "./dist/cjs/api/index.cjs" + } + }, + "./esm": "./dist/esm/index.mjs", + "./esm/api": { + "import": { + "types": "./dist/esm/api/index.d.mts", + "default": "./dist/esm/api/index.mjs" + }, + "require": { + "types": "./dist/esm/api/index.d.cts", + "default": "./dist/esm/api/index.cjs" + } + }, + "./cli": "./dist/cli.mjs", + "./suppress-warnings": "./dist/suppress-warnings.cjs", + "./preflight": "./dist/preflight.cjs", + "./repl": "./dist/repl.mjs" + }, + "homepage": "https://tsx.is", + "engines": { + "node": ">=18.0.0" + }, + "dependencies": { + "esbuild": "~0.27.0", + "get-tsconfig": "^4.7.5" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } +} \ No newline at end of file diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/LICENSE.txt b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/LICENSE.txt new file mode 100644 index 000000000..8746124b2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/LICENSE.txt @@ -0,0 +1,55 @@ +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/README.md new file mode 100644 index 000000000..b6505f736 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/README.md @@ -0,0 +1,50 @@ + +# TypeScript + +[![CI](https://github.com/microsoft/TypeScript/actions/workflows/ci.yml/badge.svg)](https://github.com/microsoft/TypeScript/actions/workflows/ci.yml) +[![npm version](https://badge.fury.io/js/typescript.svg)](https://www.npmjs.com/package/typescript) +[![Downloads](https://img.shields.io/npm/dm/typescript.svg)](https://www.npmjs.com/package/typescript) +[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/microsoft/TypeScript/badge)](https://securityscorecards.dev/viewer/?uri=github.com/microsoft/TypeScript) + + +[TypeScript](https://www.typescriptlang.org/) is a language for application-scale JavaScript. TypeScript adds optional types to JavaScript that support tools for large-scale JavaScript applications for any browser, for any host, on any OS. TypeScript compiles to readable, standards-based JavaScript. Try it out at the [playground](https://www.typescriptlang.org/play/), and stay up to date via [our blog](https://blogs.msdn.microsoft.com/typescript) and [Twitter account](https://twitter.com/typescript). + +Find others who are using TypeScript at [our community page](https://www.typescriptlang.org/community/). + +## Installing + +For the latest stable version: + +```bash +npm install -D typescript +``` + +For our nightly builds: + +```bash +npm install -D typescript@next +``` + +## Contribute + +There are many ways to [contribute](https://github.com/microsoft/TypeScript/blob/main/CONTRIBUTING.md) to TypeScript. +* [Submit bugs](https://github.com/microsoft/TypeScript/issues) and help us verify fixes as they are checked in. +* Review the [source code changes](https://github.com/microsoft/TypeScript/pulls). +* Engage with other TypeScript users and developers on [StackOverflow](https://stackoverflow.com/questions/tagged/typescript). +* Help each other in the [TypeScript Community Discord](https://discord.gg/typescript). +* Join the [#typescript](https://twitter.com/search?q=%23TypeScript) discussion on Twitter. +* [Contribute bug fixes](https://github.com/microsoft/TypeScript/blob/main/CONTRIBUTING.md). + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see +the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) +with any additional questions or comments. + +## Documentation + +* [TypeScript in 5 minutes](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html) +* [Programming handbook](https://www.typescriptlang.org/docs/handbook/intro.html) +* [Homepage](https://www.typescriptlang.org/) + +## Roadmap + +For details on our planned features and future direction, please refer to our [roadmap](https://github.com/microsoft/TypeScript/wiki/Roadmap). diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/SECURITY.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/SECURITY.md new file mode 100644 index 000000000..d8e8bb9ca --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/SECURITY.md @@ -0,0 +1,39 @@ + + +## Security + +Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations. + +If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/security.md/definition), please report it to us as described below. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/security.md/msrc/create-report). + +You should receive a response within 24 hours. If for some reason you do not, please follow up using the messaging functionality found at the bottom of the Activity tab on your vulnerability report on [https://msrc.microsoft.com/report/vulnerability](https://msrc.microsoft.com/report/vulnerability/) or via email as described in the instructions at the bottom of [https://msrc.microsoft.com/create-report](https://aka.ms/security.md/msrc/create-report). Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc) or on MSRC's [FAQ page for reporting an issue](https://www.microsoft.com/en-us/msrc/faqs-report-an-issue). + +Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: + + * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) + * Full paths of source file(s) related to the manifestation of the issue + * The location of the affected source code (tag/branch/commit or direct URL) + * Any special configuration required to reproduce the issue + * Step-by-step instructions to reproduce the issue + * Proof-of-concept or exploit code (if possible) + * Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/security.md/msrc/bounty) page for more details about our active programs. + +## Preferred Languages + +We prefer all communications to be in English. + +## Policy + +Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/security.md/cvd). + + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/ThirdPartyNoticeText.txt b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/ThirdPartyNoticeText.txt new file mode 100644 index 000000000..a857fb3ce --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/ThirdPartyNoticeText.txt @@ -0,0 +1,193 @@ +/*!----------------- TypeScript ThirdPartyNotices ------------------------------------------------------- + +The TypeScript software incorporates third party material from the projects listed below. The original copyright notice and the license under which Microsoft received such third party material are set forth below. Microsoft reserves all other rights not expressly granted, whether by implication, estoppel or otherwise. + +--------------------------------------------- +Third Party Code Components +-------------------------------------------- + +------------------- DefinitelyTyped -------------------- +This file is based on or incorporates material from the projects listed below (collectively "Third Party Code"). Microsoft is not the original author of the Third Party Code. The original copyright notice and the license, under which Microsoft received such Third Party Code, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft, not the third party, licenses the Third Party Code to you under the terms set forth in the EULA for the Microsoft Product. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise. +DefinitelyTyped +This project is licensed under the MIT license. Copyrights are respective of each contributor listed at the beginning of each definition file. Provided for Informational Purposes Only + +MIT License +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------------- + +------------------- Unicode -------------------- +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + +Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, +http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and +http://www.unicode.org/utility/trac/browser/. + +Unicode Data Files do not include PDF online code charts under the +directory http://www.unicode.org/Public/. + +Software includes any source code published in the Unicode Standard +or under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, +http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and +http://www.unicode.org/utility/trac/browser/. + +NOTICE TO USER: Carefully read the following legal agreement. +BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S +DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), +YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE +TERMS AND CONDITIONS OF THIS AGREEMENT. +IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE +THE DATA FILES OR SOFTWARE. + +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1991-2017 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in http://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Unicode data files and any associated documentation +(the "Data Files") or Unicode software and any associated documentation +(the "Software") to deal in the Data Files or Software +without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, and/or sell copies of +the Data Files or Software, and to permit persons to whom the Data Files +or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies +of the Data Files or Software, or +(b) this copyright and permission notice appear in associated +Documentation. + +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in these Data Files or Software without prior +written authorization of the copyright holder. +------------------------------------------------------------------------------------- + +-------------------Document Object Model----------------------------- +DOM + +W3C License +This work is being provided by the copyright holders under the following license. +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following +on ALL copies of the work or portions thereof, including modifications: +* The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. +* Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. +* Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived +from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR +FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. +Title to copyright in this work will at all times remain with copyright holders. + +--------- + +DOM +Copyright © 2018 WHATWG (Apple, Google, Mozilla, Microsoft). This work is licensed under a Creative Commons Attribution 4.0 International License: Attribution 4.0 International +======================================================================= +Creative Commons Corporation ("Creative Commons") is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an "as-is" basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. Using Creative Commons Public Licenses Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC- licensed material, or material used under an exception or limitation to copyright. More considerations for licensors: + +wiki.creativecommons.org/Considerations_for_licensors Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor's permission is not necessary for any reason--for example, because of any applicable exception or limitation to copyright--then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More_considerations for the public: wiki.creativecommons.org/Considerations_for_licensees ======================================================================= +Creative Commons Attribution 4.0 International Public License By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. Section 1 -- Definitions. a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. c. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. d. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. f. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. g. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. h. Licensor means the individual(s) or entity(ies) granting rights under this Public License. i. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. j. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. k. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. Section 2 -- Scope. a. License grant. 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: a. reproduce and Share the Licensed Material, in whole or in part; and b. produce, reproduce, and Share Adapted Material. 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. 3. Term. The term of this Public License is specified in Section 6(a). 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material. 5. Downstream recipients. a. Offer from the Licensor -- Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. b. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). b. Other rights. 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. 2. Patent and trademark rights are not licensed under this Public License. 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. Section 3 -- License Conditions. Your exercise of the Licensed Rights is expressly made subject to the following conditions. a. Attribution. 1. If You Share the Licensed Material (including in modified form), You must: a. retain the following if it is supplied by the Licensor with the Licensed Material: i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); ii. a copyright notice; iii. a notice that refers to this Public License; iv. a notice that refers to the disclaimer of warranties; v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; b. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and c. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. 4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License. Section 4 -- Sui Generis Database Rights. Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. Section 5 -- Disclaimer of Warranties and Limitation of Liability. a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. Section 6 -- Term and Termination. a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or 2. upon express reinstatement by the Licensor. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. Section 7 -- Other Terms and Conditions. a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. Section 8 -- Interpretation. a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. ======================================================================= Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the "Licensor." Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark "Creative Commons" or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. Creative Commons may be contacted at creativecommons.org. + +-------------------------------------------------------------------------------- + +----------------------Web Background Synchronization------------------------------ + +Web Background Synchronization Specification +Portions of spec © by W3C + +W3C Community Final Specification Agreement +To secure commitments from participants for the full text of a Community or Business Group Report, the group may call for voluntary commitments to the following terms; a "summary" is +available. See also the related "W3C Community Contributor License Agreement". +1. The Purpose of this Agreement. +This Agreement sets forth the terms under which I make certain copyright and patent rights available to you for your implementation of the Specification. +Any other capitalized terms not specifically defined herein have the same meaning as those terms have in the "W3C Patent Policy", and if not defined there, in the "W3C Process Document". +2. Copyrights. +2.1. Copyright Grant. I grant to you a perpetual (for the duration of the applicable copyright), worldwide, non-exclusive, no-charge, royalty-free, copyright license, without any obligation for accounting to me, to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, distribute, and implement the Specification to the full extent of my copyright interest in the Specification. +2.2. Attribution. As a condition of the copyright grant, you must include an attribution to the Specification in any derivative work you make based on the Specification. That attribution must include, at minimum, the Specification name and version number. +3. Patents. +3.1. Patent Licensing Commitment. I agree to license my Essential Claims under the W3C Community RF Licensing Requirements. This requirement includes Essential Claims that I own and any that I have the right to license without obligation of payment or other consideration to an unrelated third party. W3C Community RF Licensing Requirements obligations made concerning the Specification and described in this policy are binding on me for the life of the patents in question and encumber the patents containing Essential Claims, regardless of changes in participation status or W3C Membership. I also agree to license my Essential Claims under the W3C Community RF Licensing Requirements in derivative works of the Specification so long as all normative portions of the Specification are maintained and that this licensing commitment does not extend to any portion of the derivative work that was not included in the Specification. +3.2. Optional, Additional Patent Grant. In addition to the provisions of Section 3.1, I may also, at my option, make certain intellectual property rights infringed by implementations of the Specification, including Essential Claims, available by providing those terms via the W3C Web site. +4. No Other Rights. Except as specifically set forth in this Agreement, no other express or implied patent, trademark, copyright, or other property rights are granted under this Agreement, including by implication, waiver, or estoppel. +5. Antitrust Compliance. I acknowledge that I may compete with other participants, that I am under no obligation to implement the Specification, that each participant is free to develop competing technologies and standards, and that each party is free to license its patent rights to third parties, including for the purpose of enabling competing technologies and standards. +6. Non-Circumvention. I agree that I will not intentionally take or willfully assist any third party to take any action for the purpose of circumventing my obligations under this Agreement. +7. Transition to W3C Recommendation Track. The Specification developed by the Project may transition to the W3C Recommendation Track. The W3C Team is responsible for notifying me that a Corresponding Working Group has been chartered. I have no obligation to join the Corresponding Working Group. If the Specification developed by the Project transitions to the W3C Recommendation Track, the following terms apply: +7.1. If I join the Corresponding Working Group. If I join the Corresponding Working Group, I will be subject to all W3C rules, obligations, licensing commitments, and policies that govern that Corresponding Working Group. +7.2. If I Do Not Join the Corresponding Working Group. +7.2.1. Licensing Obligations to Resulting Specification. If I do not join the Corresponding Working Group, I agree to offer patent licenses according to the W3C Royalty-Free licensing requirements described in Section 5 of the W3C Patent Policy for the portions of the Specification included in the resulting Recommendation. This licensing commitment does not extend to any portion of an implementation of the Recommendation that was not included in the Specification. This licensing commitment may not be revoked but may be modified through the exclusion process defined in Section 4 of the W3C Patent Policy. I am not required to join the Corresponding Working Group to exclude patents from the W3C Royalty-Free licensing commitment, but must otherwise follow the normal exclusion procedures defined by the W3C Patent Policy. The W3C Team will notify me of any Call for Exclusion in the Corresponding Working Group as set forth in Section 4.5 of the W3C Patent Policy. +7.2.2. No Disclosure Obligation. If I do not join the Corresponding Working Group, I have no patent disclosure obligations outside of those set forth in Section 6 of the W3C Patent Policy. +8. Conflict of Interest. I will disclose significant relationships when those relationships might reasonably be perceived as creating a conflict of interest with my role. I will notify W3C of any change in my affiliation using W3C-provided mechanisms. +9. Representations, Warranties and Disclaimers. I represent and warrant that I am legally entitled to grant the rights and promises set forth in this Agreement. IN ALL OTHER RESPECTS THE SPECIFICATION IS PROVIDED “AS IS.” The entire risk as to implementing or otherwise using the Specification is assumed by the implementer and user. Except as stated herein, I expressly disclaim any warranties (express, implied, or otherwise), including implied warranties of merchantability, non-infringement, fitness for a particular purpose, or title, related to the Specification. IN NO EVENT WILL ANY PARTY BE LIABLE TO ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF ACTION OF ANY KIND WITH RESPECT TO THIS AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR NOT THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. All of my obligations under Section 3 regarding the transfer, successors in interest, or assignment of Granted Claims will be satisfied if I notify the transferee or assignee of any patent that I know contains Granted Claims of the obligations under Section 3. Nothing in this Agreement requires me to undertake a patent search. +10. Definitions. +10.1. Agreement. “Agreement” means this W3C Community Final Specification Agreement. +10.2. Corresponding Working Group. “Corresponding Working Group” is a W3C Working Group that is chartered to develop a Recommendation, as defined in the W3C Process Document, that takes the Specification as an input. +10.3. Essential Claims. “Essential Claims” shall mean all claims in any patent or patent application in any jurisdiction in the world that would necessarily be infringed by implementation of the Specification. A claim is necessarily infringed hereunder only when it is not possible to avoid infringing it because there is no non-infringing alternative for implementing the normative portions of the Specification. Existence of a non-infringing alternative shall be judged based on the state of the art at the time of the publication of the Specification. The following are expressly excluded from and shall not be deemed to constitute Essential Claims: +10.3.1. any claims other than as set forth above even if contained in the same patent as Essential Claims; and +10.3.2. claims which would be infringed only by: +portions of an implementation that are not specified in the normative portions of the Specification, or +enabling technologies that may be necessary to make or use any product or portion thereof that complies with the Specification and are not themselves expressly set forth in the Specification (e.g., semiconductor manufacturing technology, compiler technology, object-oriented technology, basic operating system technology, and the like); or +the implementation of technology developed elsewhere and merely incorporated by reference in the body of the Specification. +10.3.3. design patents and design registrations. +For purposes of this definition, the normative portions of the Specification shall be deemed to include only architectural and interoperability requirements. Optional features in the RFC 2119 sense are considered normative unless they are specifically identified as informative. Implementation examples or any other material that merely illustrate the requirements of the Specification are informative, rather than normative. +10.4. I, Me, or My. “I,” “me,” or “my” refers to the signatory. +10.5 Project. “Project” means the W3C Community Group or Business Group for which I executed this Agreement. +10.6. Specification. “Specification” means the Specification identified by the Project as the target of this agreement in a call for Final Specification Commitments. W3C shall provide the authoritative mechanisms for the identification of this Specification. +10.7. W3C Community RF Licensing Requirements. “W3C Community RF Licensing Requirements” license shall mean a non-assignable, non-sublicensable license to make, have made, use, sell, have sold, offer to sell, import, and distribute and dispose of implementations of the Specification that: +10.7.1. shall be available to all, worldwide, whether or not they are W3C Members; +10.7.2. shall extend to all Essential Claims owned or controlled by me; +10.7.3. may be limited to implementations of the Specification, and to what is required by the Specification; +10.7.4. may be conditioned on a grant of a reciprocal RF license (as defined in this policy) to all Essential Claims owned or controlled by the licensee. A reciprocal license may be required to be available to all, and a reciprocal license may itself be conditioned on a further reciprocal license from all. +10.7.5. may not be conditioned on payment of royalties, fees or other consideration; +10.7.6. may be suspended with respect to any licensee when licensor issued by licensee for infringement of claims essential to implement the Specification or any W3C Recommendation; +10.7.7. may not impose any further conditions or restrictions on the use of any technology, intellectual property rights, or other restrictions on behavior of the licensee, but may include reasonable, customary terms relating to operation or maintenance of the license relationship such as the following: choice of law and dispute resolution; +10.7.8. shall not be considered accepted by an implementer who manifests an intent not to accept the terms of the W3C Community RF Licensing Requirements license as offered by the licensor. +10.7.9. The RF license conforming to the requirements in this policy shall be made available by the licensor as long as the Specification is in effect. The term of such license shall be for the life of the patents in question. +I am encouraged to provide a contact from which licensing information can be obtained and other relevant licensing information. Any such information will be made publicly available. +10.8. You or Your. “You,” “you,” or “your” means any person or entity who exercises copyright or patent rights granted under this Agreement, and any person that person or entity controls. + +------------------------------------------------------------------------------------- + +------------------- WebGL ----------------------------- +Copyright (c) 2018 The Khronos Group Inc. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and/or associated documentation files (the +"Materials"), to deal in the Materials without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Materials, and to +permit persons to whom the Materials are furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Materials. + +THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +------------------------------------------------------ + +------------- End of ThirdPartyNotices ------------------------------------------- */ + diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/bin/tsc b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/bin/tsc new file mode 100755 index 000000000..19c62bf7a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/bin/tsc @@ -0,0 +1,2 @@ +#!/usr/bin/env node +require('../lib/tsc.js') diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/bin/tsserver b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/bin/tsserver new file mode 100755 index 000000000..7143b6a73 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/bin/tsserver @@ -0,0 +1,2 @@ +#!/usr/bin/env node +require('../lib/tsserver.js') diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/package.json new file mode 100644 index 000000000..fe2244bb4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/typescript/package.json @@ -0,0 +1,118 @@ +{ + "name": "typescript", + "author": "Microsoft Corp.", + "homepage": "https://www.typescriptlang.org/", + "version": "6.0.2", + "license": "Apache-2.0", + "description": "TypeScript is a language for application scale JavaScript development", + "keywords": [ + "TypeScript", + "Microsoft", + "compiler", + "language", + "javascript" + ], + "bugs": { + "url": "https://github.com/microsoft/TypeScript/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/microsoft/TypeScript.git" + }, + "main": "./lib/typescript.js", + "typings": "./lib/typescript.d.ts", + "bin": { + "tsc": "./bin/tsc", + "tsserver": "./bin/tsserver" + }, + "engines": { + "node": ">=14.17" + }, + "files": [ + "bin", + "lib", + "!lib/enu", + "LICENSE.txt", + "README.md", + "SECURITY.md", + "ThirdPartyNoticeText.txt", + "!**/.gitattributes" + ], + "devDependencies": { + "@dprint/formatter": "^0.4.1", + "@dprint/typescript": "0.93.4", + "@esfx/canceltoken": "^1.0.0", + "@eslint/js": "^10.0.1", + "@octokit/rest": "^22.0.1", + "@types/chai": "^4.3.20", + "@types/minimist": "^1.2.5", + "@types/mocha": "^10.0.10", + "@types/ms": "^2.1.0", + "@types/node": "latest", + "@types/source-map-support": "^0.5.10", + "@types/which": "^3.0.4", + "@typescript-eslint/rule-tester": "^8.56.1", + "@typescript-eslint/type-utils": "^8.56.1", + "@typescript-eslint/utils": "^8.56.1", + "azure-devops-node-api": "^15.1.3", + "c8": "^10.1.3", + "chai": "^4.5.0", + "chokidar": "^4.0.3", + "diff": "^8.0.3", + "dprint": "^0.49.1", + "esbuild": "^0.27.3", + "eslint": "^10.0.2", + "eslint-plugin-regexp": "^3.0.0", + "fast-xml-parser": "^5.4.1", + "glob": "^10.5.0", + "globals": "^17.4.0", + "hereby": "^1.12.0", + "jsonc-parser": "^3.3.1", + "knip": "^5.85.0", + "minimist": "^1.2.8", + "mocha": "^10.8.2", + "mocha-fivemat-progress-reporter": "^0.1.0", + "monocart-coverage-reports": "^2.12.9", + "ms": "^2.1.3", + "picocolors": "^1.1.1", + "playwright": "^1.58.2", + "source-map-support": "^0.5.21", + "tslib": "^2.8.1", + "typescript": "^5.9.3", + "typescript-eslint": "^8.56.1", + "which": "^3.0.1" + }, + "overrides": { + "typescript@*": "$typescript" + }, + "scripts": { + "test": "hereby runtests-parallel --light=false", + "test:eslint-rules": "hereby run-eslint-rules-tests", + "build": "npm run build:compiler && npm run build:tests", + "build:compiler": "hereby local", + "build:tests": "hereby tests", + "build:tests:notypecheck": "hereby tests --no-typecheck", + "clean": "hereby clean", + "gulp": "hereby", + "lint": "hereby lint", + "knip": "hereby knip", + "format": "dprint fmt", + "setup-hooks": "node scripts/link-hooks.mjs" + }, + "browser": { + "fs": false, + "os": false, + "path": false, + "crypto": false, + "buffer": false, + "source-map-support": false, + "inspector": false, + "perf_hooks": false + }, + "packageManager": "npm@8.19.4", + "volta": { + "node": "22.22.0", + "npm": "8.19.4" + }, + "gitHead": "607a22a90d1a5a1b507ce01bb8cd7ec020f954e7" +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/LICENSE b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/LICENSE new file mode 100644 index 000000000..c06579627 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Colin McDonnell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/README.md b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/README.md new file mode 100644 index 000000000..305059e6d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/README.md @@ -0,0 +1,208 @@ +

+ Zod logo +

Zod

+

+ TypeScript-first schema validation with static type inference +
+ by @colinhacks +

+

+
+ +

+Zod CI status +License +npm +discord server +stars +

+ +
+ Docs +   •   + Discord +   •   + 𝕏 +   •   + Bluesky +
+
+ +
+
+ +

Featured sponsor: Jazz

+ +
+ + + + jazz logo + + +
+

Learn more about featured sponsorships

+
+ +
+
+
+ +### [Read the docs →](https://zod.dev/api) + +
+
+ +## What is Zod? + +Zod is a TypeScript-first validation library. Define a schema and parse some data with it. You'll get back a strongly typed, validated result. + +```ts +import * as z from "zod"; + +const User = z.object({ + name: z.string(), +}); + +// some untrusted data... +const input = { + /* stuff */ +}; + +// the parsed result is validated and type safe! +const data = User.parse(input); + +// so you can use it with confidence :) +console.log(data.name); +``` + +
+ +## Features + +- Zero external dependencies +- Works in Node.js and all modern browsers +- Tiny: `2kb` core bundle (gzipped) +- Immutable API: methods return a new instance +- Concise interface +- Works with TypeScript and plain JS +- Built-in JSON Schema conversion +- Extensive ecosystem + +
+ +## Installation + +```sh +npm install zod +``` + +
+ +## Basic usage + +Before you can do anything else, you need to define a schema. For the purposes of this guide, we'll use a simple object schema. + +```ts +import * as z from "zod"; + +const Player = z.object({ + username: z.string(), + xp: z.number(), +}); +``` + +### Parsing data + +Given any Zod schema, use `.parse` to validate an input. If it's valid, Zod returns a strongly-typed _deep clone_ of the input. + +```ts +Player.parse({ username: "billie", xp: 100 }); +// => returns { username: "billie", xp: 100 } +``` + +**Note** — If your schema uses certain asynchronous APIs like `async` [refinements](https://zod.dev/api#refinements) or [transforms](https://zod.dev/api#transforms), you'll need to use the `.parseAsync()` method instead. + +```ts +const schema = z.string().refine(async (val) => val.length <= 8); + +await schema.parseAsync("hello"); +// => "hello" +``` + +### Handling errors + +When validation fails, the `.parse()` method will throw a `ZodError` instance with granular information about the validation issues. + +```ts +try { + Player.parse({ username: 42, xp: "100" }); +} catch (err) { + if (err instanceof z.ZodError) { + err.issues; + /* [ + { + expected: 'string', + code: 'invalid_type', + path: [ 'username' ], + message: 'Invalid input: expected string' + }, + { + expected: 'number', + code: 'invalid_type', + path: [ 'xp' ], + message: 'Invalid input: expected number' + } + ] */ + } +} +``` + +To avoid a `try/catch` block, you can use the `.safeParse()` method to get back a plain result object containing either the successfully parsed data or a `ZodError`. The result type is a [discriminated union](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#discriminated-unions), so you can handle both cases conveniently. + +```ts +const result = Player.safeParse({ username: 42, xp: "100" }); +if (!result.success) { + result.error; // ZodError instance +} else { + result.data; // { username: string; xp: number } +} +``` + +**Note** — If your schema uses certain asynchronous APIs like `async` [refinements](#refine) or [transforms](#transform), you'll need to use the `.safeParseAsync()` method instead. + +```ts +const schema = z.string().refine(async (val) => val.length <= 8); + +await schema.safeParseAsync("hello"); +// => { success: true; data: "hello" } +``` + +### Inferring types + +Zod infers a static type from your schema definitions. You can extract this type with the `z.infer<>` utility and use it however you like. + +```ts +const Player = z.object({ + username: z.string(), + xp: z.number(), +}); + +// extract the inferred type +type Player = z.infer; + +// use it in your code +const player: Player = { username: "billie", xp: 100 }; +``` + +In some cases, the input & output types of a schema can diverge. For instance, the `.transform()` API can convert the input from one type to another. In these cases, you can extract the input and output types independently: + +```ts +const mySchema = z.string().transform((val) => val.length); + +type MySchemaIn = z.input; +// => string + +type MySchemaOut = z.output; // equivalent to z.infer +// number +``` diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.cjs b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.cjs new file mode 100644 index 000000000..3e30380fb --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.cjs @@ -0,0 +1,33 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.z = void 0; +const z = __importStar(require("./v4/classic/external.cjs")); +exports.z = z; +__exportStar(require("./v4/classic/external.cjs"), exports); +exports.default = z; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.d.cts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.d.cts new file mode 100644 index 000000000..ed2f3c30c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.d.cts @@ -0,0 +1,4 @@ +import * as z from "./v4/classic/external.cjs"; +export * from "./v4/classic/external.cjs"; +export { z }; +export default z; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.d.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.d.ts new file mode 100644 index 000000000..b0bbaefb7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.d.ts @@ -0,0 +1,4 @@ +import * as z from "./v4/classic/external.js"; +export * from "./v4/classic/external.js"; +export { z }; +export default z; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.js b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.js new file mode 100644 index 000000000..b0bbaefb7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/index.js @@ -0,0 +1,4 @@ +import * as z from "./v4/classic/external.js"; +export * from "./v4/classic/external.js"; +export { z }; +export default z; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.cjs b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.cjs new file mode 100644 index 000000000..65f2079f7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.cjs @@ -0,0 +1,17 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("../v4/locales/index.cjs"), exports); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.d.cts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.d.cts new file mode 100644 index 000000000..cd70ce63d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.d.cts @@ -0,0 +1 @@ +export * from "../v4/locales/index.cjs"; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.d.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.d.ts new file mode 100644 index 000000000..e6e7dd67c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.d.ts @@ -0,0 +1 @@ +export * from "../v4/locales/index.js"; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.js b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.js new file mode 100644 index 000000000..e6e7dd67c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/index.js @@ -0,0 +1 @@ +export * from "../v4/locales/index.js"; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/package.json new file mode 100644 index 000000000..6cc7aaea8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/locales/package.json @@ -0,0 +1,6 @@ +{ + "type": "module", + "main": "./index.cjs", + "module": "./index.js", + "types": "./index.d.cts" +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.cjs b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.cjs new file mode 100644 index 000000000..90a31e2ce --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.cjs @@ -0,0 +1,32 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.z = void 0; +const z = __importStar(require("../v4/mini/external.cjs")); +exports.z = z; +__exportStar(require("../v4/mini/external.cjs"), exports); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.d.cts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.d.cts new file mode 100644 index 000000000..bca69bd60 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.d.cts @@ -0,0 +1,3 @@ +import * as z from "../v4/mini/external.cjs"; +export * from "../v4/mini/external.cjs"; +export { z }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.d.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.d.ts new file mode 100644 index 000000000..bb95da0a2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.d.ts @@ -0,0 +1,3 @@ +import * as z from "../v4/mini/external.js"; +export * from "../v4/mini/external.js"; +export { z }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.js b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.js new file mode 100644 index 000000000..bb95da0a2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/index.js @@ -0,0 +1,3 @@ +import * as z from "../v4/mini/external.js"; +export * from "../v4/mini/external.js"; +export { z }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/package.json new file mode 100644 index 000000000..6cc7aaea8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/mini/package.json @@ -0,0 +1,6 @@ +{ + "type": "module", + "main": "./index.cjs", + "module": "./index.js", + "types": "./index.d.cts" +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/package.json b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/package.json new file mode 100644 index 000000000..d6bf83535 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/package.json @@ -0,0 +1,135 @@ +{ + "name": "zod", + "version": "4.3.6", + "type": "module", + "license": "MIT", + "author": "Colin McDonnell ", + "description": "TypeScript-first schema declaration and validation library with static type inference", + "homepage": "https://zod.dev", + "llms": "https://zod.dev/llms.txt", + "llmsFull": "https://zod.dev/llms-full.txt", + "mcpServer": "https://mcp.inkeep.com/zod/mcp", + "funding": "https://github.com/sponsors/colinhacks", + "sideEffects": false, + "files": [ + "src", + "**/*.js", + "**/*.mjs", + "**/*.cjs", + "**/*.d.ts", + "**/*.d.mts", + "**/*.d.cts", + "**/package.json" + ], + "keywords": [ + "typescript", + "schema", + "validation", + "type", + "inference" + ], + "main": "./index.cjs", + "types": "./index.d.cts", + "module": "./index.js", + "zshy": { + "exports": { + "./package.json": "./package.json", + ".": "./src/index.ts", + "./mini": "./src/mini/index.ts", + "./locales": "./src/locales/index.ts", + "./v3": "./src/v3/index.ts", + "./v4": "./src/v4/index.ts", + "./v4-mini": "./src/v4-mini/index.ts", + "./v4/mini": "./src/v4/mini/index.ts", + "./v4/core": "./src/v4/core/index.ts", + "./v4/locales": "./src/v4/locales/index.ts", + "./v4/locales/*": "./src/v4/locales/*" + }, + "conditions": { + "@zod/source": "src" + } + }, + "exports": { + "./package.json": "./package.json", + ".": { + "@zod/source": "./src/index.ts", + "types": "./index.d.cts", + "import": "./index.js", + "require": "./index.cjs" + }, + "./mini": { + "@zod/source": "./src/mini/index.ts", + "types": "./mini/index.d.cts", + "import": "./mini/index.js", + "require": "./mini/index.cjs" + }, + "./locales": { + "@zod/source": "./src/locales/index.ts", + "types": "./locales/index.d.cts", + "import": "./locales/index.js", + "require": "./locales/index.cjs" + }, + "./v3": { + "@zod/source": "./src/v3/index.ts", + "types": "./v3/index.d.cts", + "import": "./v3/index.js", + "require": "./v3/index.cjs" + }, + "./v4": { + "@zod/source": "./src/v4/index.ts", + "types": "./v4/index.d.cts", + "import": "./v4/index.js", + "require": "./v4/index.cjs" + }, + "./v4-mini": { + "@zod/source": "./src/v4-mini/index.ts", + "types": "./v4-mini/index.d.cts", + "import": "./v4-mini/index.js", + "require": "./v4-mini/index.cjs" + }, + "./v4/mini": { + "@zod/source": "./src/v4/mini/index.ts", + "types": "./v4/mini/index.d.cts", + "import": "./v4/mini/index.js", + "require": "./v4/mini/index.cjs" + }, + "./v4/core": { + "@zod/source": "./src/v4/core/index.ts", + "types": "./v4/core/index.d.cts", + "import": "./v4/core/index.js", + "require": "./v4/core/index.cjs" + }, + "./v4/locales": { + "@zod/source": "./src/v4/locales/index.ts", + "types": "./v4/locales/index.d.cts", + "import": "./v4/locales/index.js", + "require": "./v4/locales/index.cjs" + }, + "./v4/locales/*": { + "@zod/source": "./src/v4/locales/*", + "types": "./v4/locales/*", + "import": "./v4/locales/*", + "require": "./v4/locales/*" + } + }, + "repository": { + "type": "git", + "url": "git+https://github.com/colinhacks/zod.git" + }, + "bugs": { + "url": "https://github.com/colinhacks/zod/issues" + }, + "support": { + "backing": { + "npm-funding": true + } + }, + "scripts": { + "clean": "git clean -xdf . -e node_modules", + "build": "zshy --project tsconfig.build.json", + "postbuild": "tsx ../../scripts/write-stub-package-jsons.ts && pnpm biome check --write .", + "test:watch": "pnpm vitest", + "test": "pnpm vitest run", + "prepublishOnly": "tsx ../../scripts/check-versions.ts" + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/index.ts new file mode 100644 index 000000000..b0bbaefb7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/index.ts @@ -0,0 +1,4 @@ +import * as z from "./v4/classic/external.js"; +export * from "./v4/classic/external.js"; +export { z }; +export default z; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/locales/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/locales/index.ts new file mode 100644 index 000000000..e6e7dd67c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/locales/index.ts @@ -0,0 +1 @@ +export * from "../v4/locales/index.js"; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/mini/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/mini/index.ts new file mode 100644 index 000000000..bb95da0a2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/mini/index.ts @@ -0,0 +1,3 @@ +import * as z from "../v4/mini/external.js"; +export * from "../v4/mini/external.js"; +export { z }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/ZodError.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/ZodError.ts new file mode 100644 index 000000000..b4c6865c4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/ZodError.ts @@ -0,0 +1,330 @@ +import type { Primitive } from "./helpers/typeAliases.js"; +import { util, type ZodParsedType } from "./helpers/util.js"; +import type { TypeOf, ZodType } from "./index.js"; + +type allKeys = T extends any ? keyof T : never; + +export type inferFlattenedErrors, U = string> = typeToFlattenedError, U>; +export type typeToFlattenedError = { + formErrors: U[]; + fieldErrors: { + [P in allKeys]?: U[]; + }; +}; + +export const ZodIssueCode = util.arrayToEnum([ + "invalid_type", + "invalid_literal", + "custom", + "invalid_union", + "invalid_union_discriminator", + "invalid_enum_value", + "unrecognized_keys", + "invalid_arguments", + "invalid_return_type", + "invalid_date", + "invalid_string", + "too_small", + "too_big", + "invalid_intersection_types", + "not_multiple_of", + "not_finite", +]); + +export type ZodIssueCode = keyof typeof ZodIssueCode; + +export type ZodIssueBase = { + path: (string | number)[]; + message?: string | undefined; +}; + +export interface ZodInvalidTypeIssue extends ZodIssueBase { + code: typeof ZodIssueCode.invalid_type; + expected: ZodParsedType; + received: ZodParsedType; +} + +export interface ZodInvalidLiteralIssue extends ZodIssueBase { + code: typeof ZodIssueCode.invalid_literal; + expected: unknown; + received: unknown; +} + +export interface ZodUnrecognizedKeysIssue extends ZodIssueBase { + code: typeof ZodIssueCode.unrecognized_keys; + keys: string[]; +} + +export interface ZodInvalidUnionIssue extends ZodIssueBase { + code: typeof ZodIssueCode.invalid_union; + unionErrors: ZodError[]; +} + +export interface ZodInvalidUnionDiscriminatorIssue extends ZodIssueBase { + code: typeof ZodIssueCode.invalid_union_discriminator; + options: Primitive[]; +} + +export interface ZodInvalidEnumValueIssue extends ZodIssueBase { + received: string | number; + code: typeof ZodIssueCode.invalid_enum_value; + options: (string | number)[]; +} + +export interface ZodInvalidArgumentsIssue extends ZodIssueBase { + code: typeof ZodIssueCode.invalid_arguments; + argumentsError: ZodError; +} + +export interface ZodInvalidReturnTypeIssue extends ZodIssueBase { + code: typeof ZodIssueCode.invalid_return_type; + returnTypeError: ZodError; +} + +export interface ZodInvalidDateIssue extends ZodIssueBase { + code: typeof ZodIssueCode.invalid_date; +} + +export type StringValidation = + | "email" + | "url" + | "emoji" + | "uuid" + | "nanoid" + | "regex" + | "cuid" + | "cuid2" + | "ulid" + | "datetime" + | "date" + | "time" + | "duration" + | "ip" + | "cidr" + | "base64" + | "jwt" + | "base64url" + | { includes: string; position?: number | undefined } + | { startsWith: string } + | { endsWith: string }; + +export interface ZodInvalidStringIssue extends ZodIssueBase { + code: typeof ZodIssueCode.invalid_string; + validation: StringValidation; +} + +export interface ZodTooSmallIssue extends ZodIssueBase { + code: typeof ZodIssueCode.too_small; + minimum: number | bigint; + inclusive: boolean; + exact?: boolean; + type: "array" | "string" | "number" | "set" | "date" | "bigint"; +} + +export interface ZodTooBigIssue extends ZodIssueBase { + code: typeof ZodIssueCode.too_big; + maximum: number | bigint; + inclusive: boolean; + exact?: boolean; + type: "array" | "string" | "number" | "set" | "date" | "bigint"; +} + +export interface ZodInvalidIntersectionTypesIssue extends ZodIssueBase { + code: typeof ZodIssueCode.invalid_intersection_types; +} + +export interface ZodNotMultipleOfIssue extends ZodIssueBase { + code: typeof ZodIssueCode.not_multiple_of; + multipleOf: number | bigint; +} + +export interface ZodNotFiniteIssue extends ZodIssueBase { + code: typeof ZodIssueCode.not_finite; +} + +export interface ZodCustomIssue extends ZodIssueBase { + code: typeof ZodIssueCode.custom; + params?: { [k: string]: any }; +} + +export type DenormalizedError = { [k: string]: DenormalizedError | string[] }; + +export type ZodIssueOptionalMessage = + | ZodInvalidTypeIssue + | ZodInvalidLiteralIssue + | ZodUnrecognizedKeysIssue + | ZodInvalidUnionIssue + | ZodInvalidUnionDiscriminatorIssue + | ZodInvalidEnumValueIssue + | ZodInvalidArgumentsIssue + | ZodInvalidReturnTypeIssue + | ZodInvalidDateIssue + | ZodInvalidStringIssue + | ZodTooSmallIssue + | ZodTooBigIssue + | ZodInvalidIntersectionTypesIssue + | ZodNotMultipleOfIssue + | ZodNotFiniteIssue + | ZodCustomIssue; + +export type ZodIssue = ZodIssueOptionalMessage & { + fatal?: boolean | undefined; + message: string; +}; + +export const quotelessJson = (obj: any) => { + const json = JSON.stringify(obj, null, 2); + return json.replace(/"([^"]+)":/g, "$1:"); +}; + +type recursiveZodFormattedError = T extends [any, ...any[]] + ? { [K in keyof T]?: ZodFormattedError } + : T extends any[] + ? { [k: number]: ZodFormattedError } + : T extends object + ? { [K in keyof T]?: ZodFormattedError } + : unknown; + +export type ZodFormattedError = { + _errors: U[]; +} & recursiveZodFormattedError>; + +export type inferFormattedError, U = string> = ZodFormattedError, U>; + +export class ZodError extends Error { + issues: ZodIssue[] = []; + + get errors() { + return this.issues; + } + + constructor(issues: ZodIssue[]) { + super(); + + const actualProto = new.target.prototype; + if (Object.setPrototypeOf) { + // eslint-disable-next-line ban/ban + Object.setPrototypeOf(this, actualProto); + } else { + (this as any).__proto__ = actualProto; + } + this.name = "ZodError"; + this.issues = issues; + } + + format(): ZodFormattedError; + format(mapper: (issue: ZodIssue) => U): ZodFormattedError; + format(_mapper?: any) { + const mapper: (issue: ZodIssue) => any = + _mapper || + function (issue: ZodIssue) { + return issue.message; + }; + const fieldErrors: ZodFormattedError = { _errors: [] } as any; + const processError = (error: ZodError) => { + for (const issue of error.issues) { + if (issue.code === "invalid_union") { + issue.unionErrors.map(processError); + } else if (issue.code === "invalid_return_type") { + processError(issue.returnTypeError); + } else if (issue.code === "invalid_arguments") { + processError(issue.argumentsError); + } else if (issue.path.length === 0) { + (fieldErrors as any)._errors.push(mapper(issue)); + } else { + let curr: any = fieldErrors; + let i = 0; + while (i < issue.path.length) { + const el = issue.path[i]!; + const terminal = i === issue.path.length - 1; + + if (!terminal) { + curr[el] = curr[el] || { _errors: [] }; + // if (typeof el === "string") { + // curr[el] = curr[el] || { _errors: [] }; + // } else if (typeof el === "number") { + // const errorArray: any = []; + // errorArray._errors = []; + // curr[el] = curr[el] || errorArray; + // } + } else { + curr[el] = curr[el] || { _errors: [] }; + curr[el]._errors.push(mapper(issue)); + } + + curr = curr[el]; + i++; + } + } + } + }; + + processError(this); + return fieldErrors; + } + + static create = (issues: ZodIssue[]) => { + const error = new ZodError(issues); + return error; + }; + + static assert(value: unknown): asserts value is ZodError { + if (!(value instanceof ZodError)) { + throw new Error(`Not a ZodError: ${value}`); + } + } + + override toString() { + return this.message; + } + override get message() { + return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2); + } + + get isEmpty(): boolean { + return this.issues.length === 0; + } + + addIssue = (sub: ZodIssue) => { + this.issues = [...this.issues, sub]; + }; + + addIssues = (subs: ZodIssue[] = []) => { + this.issues = [...this.issues, ...subs]; + }; + + flatten(): typeToFlattenedError; + flatten(mapper?: (issue: ZodIssue) => U): typeToFlattenedError; + flatten(mapper: (issue: ZodIssue) => U = (issue: ZodIssue) => issue.message as any): any { + const fieldErrors: any = Object.create(null); + const formErrors: U[] = []; + for (const sub of this.issues) { + if (sub.path.length > 0) { + const firstEl = sub.path[0]!; + fieldErrors[firstEl] = fieldErrors[firstEl] || []; + fieldErrors[firstEl].push(mapper(sub)); + } else { + formErrors.push(mapper(sub)); + } + } + return { formErrors, fieldErrors }; + } + + get formErrors() { + return this.flatten(); + } +} + +type stripPath = T extends any ? util.OmitKeys : never; + +export type IssueData = stripPath & { + path?: (string | number)[]; + fatal?: boolean | undefined; +}; + +export type ErrorMapCtx = { + defaultError: string; + data: any; +}; + +export type ZodErrorMap = (issue: ZodIssueOptionalMessage, _ctx: ErrorMapCtx) => { message: string }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/datetime.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/datetime.ts new file mode 100644 index 000000000..85552c254 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/datetime.ts @@ -0,0 +1,58 @@ +import Benchmark from "benchmark"; + +const datetimeValidationSuite = new Benchmark.Suite("datetime"); + +const DATA = "2021-01-01"; +const MONTHS_31 = new Set([1, 3, 5, 7, 8, 10, 12]); +const MONTHS_30 = new Set([4, 6, 9, 11]); + +const simpleDatetimeRegex = /^(\d{4})-(\d{2})-(\d{2})$/; +const datetimeRegexNoLeapYearValidation = + /^\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\d|2\d))$/; +const datetimeRegexWithLeapYearValidation = + /^((\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\d|3[01])|(0[469]|11)-(0[1-9]|[12]\d|30)|(02)-(0[1-9]|1\d|2[0-8])))$/; + +datetimeValidationSuite + .add("new Date()", () => { + return !Number.isNaN(new Date(DATA).getTime()); + }) + .add("regex (no validation)", () => { + return simpleDatetimeRegex.test(DATA); + }) + .add("regex (no leap year)", () => { + return datetimeRegexNoLeapYearValidation.test(DATA); + }) + .add("regex (w/ leap year)", () => { + return datetimeRegexWithLeapYearValidation.test(DATA); + }) + .add("capture groups + code", () => { + const match = DATA.match(simpleDatetimeRegex); + if (!match) return false; + + // Extract year, month, and day from the capture groups + const year = Number.parseInt(match[1], 10); + const month = Number.parseInt(match[2], 10); // month is 0-indexed in JavaScript Date, so subtract 1 + const day = Number.parseInt(match[3], 10); + + if (month === 2) { + if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) { + return day <= 29; + } + return day <= 28; + } + if (MONTHS_30.has(month)) { + return day <= 30; + } + if (MONTHS_31.has(month)) { + return day <= 31; + } + return false; + }) + + .on("cycle", (e: Benchmark.Event) => { + console.log(`${datetimeValidationSuite.name!}: ${e.target}`); + }); + +export default { + suites: [datetimeValidationSuite], +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts new file mode 100644 index 000000000..47737e6c3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts @@ -0,0 +1,80 @@ +import Benchmark from "benchmark"; + +import { z } from "zod/v3"; + +const doubleSuite = new Benchmark.Suite("z.discriminatedUnion: double"); +const manySuite = new Benchmark.Suite("z.discriminatedUnion: many"); + +const aSchema = z.object({ + type: z.literal("a"), +}); +const objA = { + type: "a", +}; + +const bSchema = z.object({ + type: z.literal("b"), +}); +const objB = { + type: "b", +}; + +const cSchema = z.object({ + type: z.literal("c"), +}); +const objC = { + type: "c", +}; + +const dSchema = z.object({ + type: z.literal("d"), +}); + +const double = z.discriminatedUnion("type", [aSchema, bSchema]); +const many = z.discriminatedUnion("type", [aSchema, bSchema, cSchema, dSchema]); + +doubleSuite + .add("valid: a", () => { + double.parse(objA); + }) + .add("valid: b", () => { + double.parse(objB); + }) + .add("invalid: null", () => { + try { + double.parse(null); + } catch (_err) {} + }) + .add("invalid: wrong shape", () => { + try { + double.parse(objC); + } catch (_err) {} + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`${(doubleSuite as any).name}: ${e.target}`); + }); + +manySuite + .add("valid: a", () => { + many.parse(objA); + }) + .add("valid: c", () => { + many.parse(objC); + }) + .add("invalid: null", () => { + try { + many.parse(null); + } catch (_err) {} + }) + .add("invalid: wrong shape", () => { + try { + many.parse({ type: "unknown" }); + } catch (_err) {} + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`${(manySuite as any).name}: ${e.target}`); + }); + +export default { + suites: [doubleSuite, manySuite], +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/index.ts new file mode 100644 index 000000000..ca81c5bb9 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/index.ts @@ -0,0 +1,59 @@ +import type Benchmark from "benchmark"; + +import datetimeBenchmarks from "./datetime.js"; +import discriminatedUnionBenchmarks from "./discriminatedUnion.js"; +import ipv4Benchmarks from "./ipv4.js"; +import objectBenchmarks from "./object.js"; +import primitiveBenchmarks from "./primitives.js"; +import realworld from "./realworld.js"; +import stringBenchmarks from "./string.js"; +import unionBenchmarks from "./union.js"; + +const argv = process.argv.slice(2); +let suites: Benchmark.Suite[] = []; + +if (!argv.length) { + suites = [ + ...realworld.suites, + ...primitiveBenchmarks.suites, + ...stringBenchmarks.suites, + ...objectBenchmarks.suites, + ...unionBenchmarks.suites, + ...discriminatedUnionBenchmarks.suites, + ]; +} else { + if (argv.includes("--realworld")) { + suites.push(...realworld.suites); + } + if (argv.includes("--primitives")) { + suites.push(...primitiveBenchmarks.suites); + } + if (argv.includes("--string")) { + suites.push(...stringBenchmarks.suites); + } + if (argv.includes("--object")) { + suites.push(...objectBenchmarks.suites); + } + if (argv.includes("--union")) { + suites.push(...unionBenchmarks.suites); + } + if (argv.includes("--discriminatedUnion")) { + suites.push(...datetimeBenchmarks.suites); + } + if (argv.includes("--datetime")) { + suites.push(...datetimeBenchmarks.suites); + } + if (argv.includes("--ipv4")) { + suites.push(...ipv4Benchmarks.suites); + } +} + +for (const suite of suites) { + suite.run({}); +} + +// exit on Ctrl-C +process.on("SIGINT", function () { + console.log("Exiting..."); + process.exit(); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/ipv4.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/ipv4.ts new file mode 100644 index 000000000..913ffd416 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/ipv4.ts @@ -0,0 +1,57 @@ +import Benchmark from "benchmark"; + +const suite = new Benchmark.Suite("ipv4"); + +const DATA = "127.0.0.1"; +const ipv4RegexA = + /^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/; +const ipv4RegexB = + /^(?:(?:(?=(25[0-5]))\1|(?=(2[0-4][0-9]))\2|(?=(1[0-9]{2}))\3|(?=([0-9]{1,2}))\4)\.){3}(?:(?=(25[0-5]))\5|(?=(2[0-4][0-9]))\6|(?=(1[0-9]{2}))\7|(?=([0-9]{1,2}))\8)$/; +const ipv4RegexC = /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/; +const ipv4RegexD = /^(\b25[0-5]|\b2[0-4][0-9]|\b[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/; +const ipv4RegexE = /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.){3}(25[0-5]|(2[0-4]|1\d|[1-9]|)\d)$/; +const ipv4RegexF = /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/; +const ipv4RegexG = /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)(\.(?!$)|$)){4}$/; +const ipv4RegexH = /^((25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])(\.(?!$)|$)){4}$/; +const ipv4RegexI = + /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; + +suite + .add("A", () => { + return ipv4RegexA.test(DATA); + }) + .add("B", () => { + return ipv4RegexB.test(DATA); + }) + .add("C", () => { + return ipv4RegexC.test(DATA); + }) + .add("D", () => { + return ipv4RegexD.test(DATA); + }) + .add("E", () => { + return ipv4RegexE.test(DATA); + }) + .add("F", () => { + return ipv4RegexF.test(DATA); + }) + .add("G", () => { + return ipv4RegexG.test(DATA); + }) + .add("H", () => { + return ipv4RegexH.test(DATA); + }) + .add("I", () => { + return ipv4RegexI.test(DATA); + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`${suite.name!}: ${e.target}`); + }); + +export default { + suites: [suite], +}; + +if (require.main === module) { + suite.run(); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/object.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/object.ts new file mode 100644 index 000000000..3c1da1022 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/object.ts @@ -0,0 +1,69 @@ +import Benchmark from "benchmark"; + +import { z } from "zod/v3"; + +const emptySuite = new Benchmark.Suite("z.object: empty"); +const shortSuite = new Benchmark.Suite("z.object: short"); +const longSuite = new Benchmark.Suite("z.object: long"); + +const empty = z.object({}); +const short = z.object({ + string: z.string(), +}); +const long = z.object({ + string: z.string(), + number: z.number(), + boolean: z.boolean(), +}); + +emptySuite + .add("valid", () => { + empty.parse({}); + }) + .add("valid: extra keys", () => { + empty.parse({ string: "string" }); + }) + .add("invalid: null", () => { + try { + empty.parse(null); + } catch (_err) {} + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`${(emptySuite as any).name}: ${e.target}`); + }); + +shortSuite + .add("valid", () => { + short.parse({ string: "string" }); + }) + .add("valid: extra keys", () => { + short.parse({ string: "string", number: 42 }); + }) + .add("invalid: null", () => { + try { + short.parse(null); + } catch (_err) {} + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`${(shortSuite as any).name}: ${e.target}`); + }); + +longSuite + .add("valid", () => { + long.parse({ string: "string", number: 42, boolean: true }); + }) + .add("valid: extra keys", () => { + long.parse({ string: "string", number: 42, boolean: true, list: [] }); + }) + .add("invalid: null", () => { + try { + long.parse(null); + } catch (_err) {} + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`${(longSuite as any).name}: ${e.target}`); + }); + +export default { + suites: [emptySuite, shortSuite, longSuite], +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/primitives.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/primitives.ts new file mode 100644 index 000000000..fd61b38fe --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/primitives.ts @@ -0,0 +1,162 @@ +import Benchmark from "benchmark"; + +import { z } from "zod/v3"; +import { Mocker } from "../tests/Mocker.js"; + +const val = new Mocker(); + +const enumSuite = new Benchmark.Suite("z.enum"); +const enumSchema = z.enum(["a", "b", "c"]); + +enumSuite + .add("valid", () => { + enumSchema.parse("a"); + }) + .add("invalid", () => { + try { + enumSchema.parse("x"); + } catch (_e: any) {} + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`z.enum: ${e.target}`); + }); + +const longEnumSuite = new Benchmark.Suite("long z.enum"); +const longEnumSchema = z.enum([ + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "ten", + "eleven", + "twelve", + "thirteen", + "fourteen", + "fifteen", + "sixteen", + "seventeen", +]); + +longEnumSuite + .add("valid", () => { + longEnumSchema.parse("five"); + }) + .add("invalid", () => { + try { + longEnumSchema.parse("invalid"); + } catch (_e: any) {} + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`long z.enum: ${e.target}`); + }); + +const undefinedSuite = new Benchmark.Suite("z.undefined"); +const undefinedSchema = z.undefined(); + +undefinedSuite + .add("valid", () => { + undefinedSchema.parse(undefined); + }) + .add("invalid", () => { + try { + undefinedSchema.parse(1); + } catch (_e: any) {} + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`z.undefined: ${e.target}`); + }); + +const literalSuite = new Benchmark.Suite("z.literal"); +const short = "short"; +const bad = "bad"; +const literalSchema = z.literal("short"); + +literalSuite + .add("valid", () => { + literalSchema.parse(short); + }) + .add("invalid", () => { + try { + literalSchema.parse(bad); + } catch (_e: any) {} + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`z.literal: ${e.target}`); + }); + +const numberSuite = new Benchmark.Suite("z.number"); +const numberSchema = z.number().int(); + +numberSuite + .add("valid", () => { + numberSchema.parse(1); + }) + .add("invalid type", () => { + try { + numberSchema.parse("bad"); + } catch (_e: any) {} + }) + .add("invalid number", () => { + try { + numberSchema.parse(0.5); + } catch (_e: any) {} + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`z.number: ${e.target}`); + }); + +const dateSuite = new Benchmark.Suite("z.date"); + +const plainDate = z.date(); +const minMaxDate = z.date().min(new Date("2021-01-01")).max(new Date("2030-01-01")); + +dateSuite + .add("valid", () => { + plainDate.parse(new Date()); + }) + .add("invalid", () => { + try { + plainDate.parse(1); + } catch (_e: any) {} + }) + .add("valid min and max", () => { + minMaxDate.parse(new Date("2023-01-01")); + }) + .add("invalid min", () => { + try { + minMaxDate.parse(new Date("2019-01-01")); + } catch (_e: any) {} + }) + .add("invalid max", () => { + try { + minMaxDate.parse(new Date("2031-01-01")); + } catch (_e: any) {} + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`z.date: ${e.target}`); + }); + +const symbolSuite = new Benchmark.Suite("z.symbol"); +const symbolSchema = z.symbol(); + +symbolSuite + .add("valid", () => { + symbolSchema.parse(val.symbol); + }) + .add("invalid", () => { + try { + symbolSchema.parse(1); + } catch (_e: any) {} + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`z.symbol: ${e.target}`); + }); + +export default { + suites: [enumSuite, longEnumSuite, undefinedSuite, literalSuite, numberSuite, dateSuite, symbolSuite], +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/realworld.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/realworld.ts new file mode 100644 index 000000000..d64c4f0d0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/realworld.ts @@ -0,0 +1,63 @@ +import Benchmark from "benchmark"; + +import { z } from "zod/v3"; + +const shortSuite = new Benchmark.Suite("realworld"); + +const People = z.array( + z.object({ + type: z.literal("person"), + hair: z.enum(["blue", "brown"]), + active: z.boolean(), + name: z.string(), + age: z.number().int(), + hobbies: z.array(z.string()), + address: z.object({ + street: z.string(), + zip: z.string(), + country: z.string(), + }), + }) +); + +let i = 0; + +function num() { + return ++i; +} + +function str() { + return (++i % 100).toString(16); +} + +function array(fn: () => T): T[] { + return Array.from({ length: ++i % 10 }, () => fn()); +} + +const people = Array.from({ length: 100 }, () => { + return { + type: "person", + hair: i % 2 ? "blue" : "brown", + active: !!(i % 2), + name: str(), + age: num(), + hobbies: array(str), + address: { + street: str(), + zip: str(), + country: str(), + }, + }; +}); + +shortSuite + .add("valid", () => { + People.parse(people); + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`${(shortSuite as any).name}: ${e.target}`); + }); + +export default { + suites: [shortSuite], +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/string.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/string.ts new file mode 100644 index 000000000..6b3d29f94 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/string.ts @@ -0,0 +1,55 @@ +import Benchmark from "benchmark"; + +import { z } from "zod/v3"; + +const SUITE_NAME = "z.string"; +const suite = new Benchmark.Suite(SUITE_NAME); + +const empty = ""; +const short = "short"; +const long = "long".repeat(256); +const manual = (str: unknown) => { + if (typeof str !== "string") { + throw new Error("Not a string"); + } + + return str; +}; +const stringSchema = z.string(); +const optionalStringSchema = z.string().optional(); +const optionalNullableStringSchema = z.string().optional().nullable(); + +suite + .add("empty string", () => { + stringSchema.parse(empty); + }) + .add("short string", () => { + stringSchema.parse(short); + }) + .add("long string", () => { + stringSchema.parse(long); + }) + .add("optional string", () => { + optionalStringSchema.parse(long); + }) + .add("nullable string", () => { + optionalNullableStringSchema.parse(long); + }) + .add("nullable (null) string", () => { + optionalNullableStringSchema.parse(null); + }) + .add("invalid: null", () => { + try { + stringSchema.parse(null); + } catch (_err) {} + }) + .add("manual parser: long", () => { + manual(long); + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`${SUITE_NAME}: ${e.target}`); + }); + +export default { + suites: [suite], +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/union.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/union.ts new file mode 100644 index 000000000..d716dcef0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/benchmarks/union.ts @@ -0,0 +1,80 @@ +import Benchmark from "benchmark"; + +import { z } from "zod/v3"; + +const doubleSuite = new Benchmark.Suite("z.union: double"); +const manySuite = new Benchmark.Suite("z.union: many"); + +const aSchema = z.object({ + type: z.literal("a"), +}); +const objA = { + type: "a", +}; + +const bSchema = z.object({ + type: z.literal("b"), +}); +const objB = { + type: "b", +}; + +const cSchema = z.object({ + type: z.literal("c"), +}); +const objC = { + type: "c", +}; + +const dSchema = z.object({ + type: z.literal("d"), +}); + +const double = z.union([aSchema, bSchema]); +const many = z.union([aSchema, bSchema, cSchema, dSchema]); + +doubleSuite + .add("valid: a", () => { + double.parse(objA); + }) + .add("valid: b", () => { + double.parse(objB); + }) + .add("invalid: null", () => { + try { + double.parse(null); + } catch (_err) {} + }) + .add("invalid: wrong shape", () => { + try { + double.parse(objC); + } catch (_err) {} + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`${(doubleSuite as any).name}: ${e.target}`); + }); + +manySuite + .add("valid: a", () => { + many.parse(objA); + }) + .add("valid: c", () => { + many.parse(objC); + }) + .add("invalid: null", () => { + try { + many.parse(null); + } catch (_err) {} + }) + .add("invalid: wrong shape", () => { + try { + many.parse({ type: "unknown" }); + } catch (_err) {} + }) + .on("cycle", (e: Benchmark.Event) => { + console.log(`${(manySuite as any).name}: ${e.target}`); + }); + +export default { + suites: [doubleSuite, manySuite], +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/errors.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/errors.ts new file mode 100644 index 000000000..3c0dae659 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/errors.ts @@ -0,0 +1,13 @@ +import type { ZodErrorMap } from "./ZodError.js"; +import defaultErrorMap from "./locales/en.js"; + +let overrideErrorMap = defaultErrorMap; +export { defaultErrorMap }; + +export function setErrorMap(map: ZodErrorMap) { + overrideErrorMap = map; +} + +export function getErrorMap() { + return overrideErrorMap; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/external.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/external.ts new file mode 100644 index 000000000..f0a4be4c7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/external.ts @@ -0,0 +1,6 @@ +export * from "./errors.js"; +export * from "./helpers/parseUtil.js"; +export * from "./helpers/typeAliases.js"; +export * from "./helpers/util.js"; +export * from "./types.js"; +export * from "./ZodError.js"; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/enumUtil.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/enumUtil.ts new file mode 100644 index 000000000..526b22736 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/enumUtil.ts @@ -0,0 +1,17 @@ +export namespace enumUtil { + type UnionToIntersectionFn = (T extends unknown ? (k: () => T) => void : never) extends ( + k: infer Intersection + ) => void + ? Intersection + : never; + + type GetUnionLast = UnionToIntersectionFn extends () => infer Last ? Last : never; + + type UnionToTuple = [T] extends [never] + ? Tuple + : UnionToTuple>, [GetUnionLast, ...Tuple]>; + + type CastToStringTuple = T extends [string, ...string[]] ? T : never; + + export type UnionToTupleString = CastToStringTuple>; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/errorUtil.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/errorUtil.ts new file mode 100644 index 000000000..319ef6b74 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/errorUtil.ts @@ -0,0 +1,8 @@ +export namespace errorUtil { + export type ErrMessage = string | { message?: string | undefined }; + export const errToObj = (message?: ErrMessage): { message?: string | undefined } => + typeof message === "string" ? { message } : message || {}; + // biome-ignore lint: + export const toString = (message?: ErrMessage): string | undefined => + typeof message === "string" ? message : message?.message; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/parseUtil.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/parseUtil.ts new file mode 100644 index 000000000..1076ad9de --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/parseUtil.ts @@ -0,0 +1,176 @@ +import type { IssueData, ZodErrorMap, ZodIssue } from "../ZodError.js"; +import { getErrorMap } from "../errors.js"; +import defaultErrorMap from "../locales/en.js"; +import type { ZodParsedType } from "./util.js"; + +export const makeIssue = (params: { + data: any; + path: (string | number)[]; + errorMaps: ZodErrorMap[]; + issueData: IssueData; +}): ZodIssue => { + const { data, path, errorMaps, issueData } = params; + const fullPath = [...path, ...(issueData.path || [])]; + const fullIssue = { + ...issueData, + path: fullPath, + }; + + if (issueData.message !== undefined) { + return { + ...issueData, + path: fullPath, + message: issueData.message, + }; + } + + let errorMessage = ""; + const maps = errorMaps + .filter((m) => !!m) + .slice() + .reverse(); + for (const map of maps) { + errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message; + } + + return { + ...issueData, + path: fullPath, + message: errorMessage, + }; +}; + +export type ParseParams = { + path: (string | number)[]; + errorMap: ZodErrorMap; + async: boolean; +}; + +export type ParsePathComponent = string | number; +export type ParsePath = ParsePathComponent[]; +export const EMPTY_PATH: ParsePath = []; + +export interface ParseContext { + readonly common: { + readonly issues: ZodIssue[]; + readonly contextualErrorMap?: ZodErrorMap | undefined; + readonly async: boolean; + }; + readonly path: ParsePath; + readonly schemaErrorMap?: ZodErrorMap | undefined; + readonly parent: ParseContext | null; + readonly data: any; + readonly parsedType: ZodParsedType; +} + +export type ParseInput = { + data: any; + path: (string | number)[]; + parent: ParseContext; +}; + +export function addIssueToContext(ctx: ParseContext, issueData: IssueData): void { + const overrideMap = getErrorMap(); + const issue = makeIssue({ + issueData: issueData, + data: ctx.data, + path: ctx.path, + errorMaps: [ + ctx.common.contextualErrorMap, // contextual error map is first priority + ctx.schemaErrorMap, // then schema-bound map if available + overrideMap, // then global override map + overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map + ].filter((x) => !!x), + }); + ctx.common.issues.push(issue); +} + +export type ObjectPair = { + key: SyncParseReturnType; + value: SyncParseReturnType; +}; +export class ParseStatus { + value: "aborted" | "dirty" | "valid" = "valid"; + dirty(): void { + if (this.value === "valid") this.value = "dirty"; + } + abort(): void { + if (this.value !== "aborted") this.value = "aborted"; + } + + static mergeArray(status: ParseStatus, results: SyncParseReturnType[]): SyncParseReturnType { + const arrayValue: any[] = []; + for (const s of results) { + if (s.status === "aborted") return INVALID; + if (s.status === "dirty") status.dirty(); + arrayValue.push(s.value); + } + + return { status: status.value, value: arrayValue }; + } + + static async mergeObjectAsync( + status: ParseStatus, + pairs: { key: ParseReturnType; value: ParseReturnType }[] + ): Promise> { + const syncPairs: ObjectPair[] = []; + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + syncPairs.push({ + key, + value, + }); + } + return ParseStatus.mergeObjectSync(status, syncPairs); + } + + static mergeObjectSync( + status: ParseStatus, + pairs: { + key: SyncParseReturnType; + value: SyncParseReturnType; + alwaysSet?: boolean; + }[] + ): SyncParseReturnType { + const finalObject: any = {}; + for (const pair of pairs) { + const { key, value } = pair; + if (key.status === "aborted") return INVALID; + if (value.status === "aborted") return INVALID; + if (key.status === "dirty") status.dirty(); + if (value.status === "dirty") status.dirty(); + + if (key.value !== "__proto__" && (typeof value.value !== "undefined" || pair.alwaysSet)) { + finalObject[key.value] = value.value; + } + } + + return { status: status.value, value: finalObject }; + } +} +export interface ParseResult { + status: "aborted" | "dirty" | "valid"; + data: any; +} + +export type INVALID = { status: "aborted" }; +export const INVALID: INVALID = Object.freeze({ + status: "aborted", +}); + +export type DIRTY = { status: "dirty"; value: T }; +export const DIRTY = (value: T): DIRTY => ({ status: "dirty", value }); + +export type OK = { status: "valid"; value: T }; +export const OK = (value: T): OK => ({ status: "valid", value }); + +export type SyncParseReturnType = OK | DIRTY | INVALID; +export type AsyncParseReturnType = Promise>; +export type ParseReturnType = SyncParseReturnType | AsyncParseReturnType; + +export const isAborted = (x: ParseReturnType): x is INVALID => (x as any).status === "aborted"; +export const isDirty = (x: ParseReturnType): x is OK | DIRTY => (x as any).status === "dirty"; +export const isValid = (x: ParseReturnType): x is OK => (x as any).status === "valid"; +export const isAsync = (x: ParseReturnType): x is AsyncParseReturnType => + typeof Promise !== "undefined" && x instanceof Promise; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/partialUtil.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/partialUtil.ts new file mode 100644 index 000000000..0eff8ff34 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/partialUtil.ts @@ -0,0 +1,34 @@ +import type { + ZodArray, + ZodNullable, + ZodObject, + ZodOptional, + ZodRawShape, + ZodTuple, + ZodTupleItems, + ZodTypeAny, +} from "../types.js"; + +export namespace partialUtil { + export type DeepPartial = T extends ZodObject + ? ZodObject< + { [k in keyof T["shape"]]: ZodOptional> }, + T["_def"]["unknownKeys"], + T["_def"]["catchall"] + > + : T extends ZodArray + ? ZodArray, Card> + : T extends ZodOptional + ? ZodOptional> + : T extends ZodNullable + ? ZodNullable> + : T extends ZodTuple + ? { + [k in keyof Items]: Items[k] extends ZodTypeAny ? DeepPartial : never; + } extends infer PI + ? PI extends ZodTupleItems + ? ZodTuple + : never + : never + : T; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/typeAliases.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/typeAliases.ts new file mode 100644 index 000000000..32df022ca --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/typeAliases.ts @@ -0,0 +1,2 @@ +export type Primitive = string | number | symbol | bigint | boolean | null | undefined; +export type Scalars = Primitive | Primitive[]; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/util.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/util.ts new file mode 100644 index 000000000..030ea821b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/helpers/util.ts @@ -0,0 +1,224 @@ +export namespace util { + type AssertEqual = (() => V extends T ? 1 : 2) extends () => V extends U ? 1 : 2 ? true : false; + + export type isAny = 0 extends 1 & T ? true : false; + export const assertEqual = (_: AssertEqual): void => {}; + export function assertIs(_arg: T): void {} + export function assertNever(_x: never): never { + throw new Error(); + } + + export type Omit = Pick>; + export type OmitKeys = Pick>; + export type MakePartial = Omit & Partial>; + export type Exactly = T & Record, never>; + export type InexactPartial = { [k in keyof T]?: T[k] | undefined }; + export const arrayToEnum = (items: U): { [k in U[number]]: k } => { + const obj: any = {}; + for (const item of items) { + obj[item] = item; + } + return obj; + }; + + export const getValidEnumValues = (obj: any): any[] => { + const validKeys = objectKeys(obj).filter((k: any) => typeof obj[obj[k]] !== "number"); + const filtered: any = {}; + for (const k of validKeys) { + filtered[k] = obj[k]; + } + return objectValues(filtered); + }; + + export const objectValues = (obj: any): any[] => { + return objectKeys(obj).map(function (e) { + return obj[e]; + }); + }; + + export const objectKeys: ObjectConstructor["keys"] = + typeof Object.keys === "function" // eslint-disable-line ban/ban + ? (obj: any) => Object.keys(obj) // eslint-disable-line ban/ban + : (object: any) => { + const keys = []; + for (const key in object) { + if (Object.prototype.hasOwnProperty.call(object, key)) { + keys.push(key); + } + } + return keys; + }; + + export const find = (arr: T[], checker: (arg: T) => any): T | undefined => { + for (const item of arr) { + if (checker(item)) return item; + } + return undefined; + }; + + export type identity = objectUtil.identity; + export type flatten = objectUtil.flatten; + + export type noUndefined = T extends undefined ? never : T; + + export const isInteger: NumberConstructor["isInteger"] = + typeof Number.isInteger === "function" + ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban + : (val) => typeof val === "number" && Number.isFinite(val) && Math.floor(val) === val; + + export function joinValues(array: T, separator = " | "): string { + return array.map((val) => (typeof val === "string" ? `'${val}'` : val)).join(separator); + } + + export const jsonStringifyReplacer = (_: string, value: any): any => { + if (typeof value === "bigint") { + return value.toString(); + } + return value; + }; +} + +export namespace objectUtil { + export type MergeShapes = + // fast path when there is no keys overlap + keyof U & keyof V extends never + ? U & V + : { + [k in Exclude]: U[k]; + } & V; + + type optionalKeys = { + [k in keyof T]: undefined extends T[k] ? k : never; + }[keyof T]; + type requiredKeys = { + [k in keyof T]: undefined extends T[k] ? never : k; + }[keyof T]; + export type addQuestionMarks = { + [K in requiredKeys]: T[K]; + } & { + [K in optionalKeys]?: T[K]; + } & { [k in keyof T]?: unknown }; + + export type identity = T; + export type flatten = identity<{ [k in keyof T]: T[k] }>; + + export type noNeverKeys = { + [k in keyof T]: [T[k]] extends [never] ? never : k; + }[keyof T]; + + export type noNever = identity<{ + [k in noNeverKeys]: k extends keyof T ? T[k] : never; + }>; + + export const mergeShapes = (first: U, second: T): T & U => { + return { + ...first, + ...second, // second overwrites first + }; + }; + + export type extendShape = keyof A & keyof B extends never // fast path when there is no keys overlap + ? A & B + : { + [K in keyof A as K extends keyof B ? never : K]: A[K]; + } & { + [K in keyof B]: B[K]; + }; +} + +export const ZodParsedType: { + string: "string"; + nan: "nan"; + number: "number"; + integer: "integer"; + float: "float"; + boolean: "boolean"; + date: "date"; + bigint: "bigint"; + symbol: "symbol"; + function: "function"; + undefined: "undefined"; + null: "null"; + array: "array"; + object: "object"; + unknown: "unknown"; + promise: "promise"; + void: "void"; + never: "never"; + map: "map"; + set: "set"; +} = util.arrayToEnum([ + "string", + "nan", + "number", + "integer", + "float", + "boolean", + "date", + "bigint", + "symbol", + "function", + "undefined", + "null", + "array", + "object", + "unknown", + "promise", + "void", + "never", + "map", + "set", +]); + +export type ZodParsedType = keyof typeof ZodParsedType; + +export const getParsedType = (data: any): ZodParsedType => { + const t = typeof data; + + switch (t) { + case "undefined": + return ZodParsedType.undefined; + + case "string": + return ZodParsedType.string; + + case "number": + return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number; + + case "boolean": + return ZodParsedType.boolean; + + case "function": + return ZodParsedType.function; + + case "bigint": + return ZodParsedType.bigint; + + case "symbol": + return ZodParsedType.symbol; + + case "object": + if (Array.isArray(data)) { + return ZodParsedType.array; + } + if (data === null) { + return ZodParsedType.null; + } + if (data.then && typeof data.then === "function" && data.catch && typeof data.catch === "function") { + return ZodParsedType.promise; + } + if (typeof Map !== "undefined" && data instanceof Map) { + return ZodParsedType.map; + } + if (typeof Set !== "undefined" && data instanceof Set) { + return ZodParsedType.set; + } + if (typeof Date !== "undefined" && data instanceof Date) { + return ZodParsedType.date; + } + return ZodParsedType.object; + + default: + return ZodParsedType.unknown; + } +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/index.ts new file mode 100644 index 000000000..a9dab5738 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/index.ts @@ -0,0 +1,4 @@ +import * as z from "./external.js"; +export * from "./external.js"; +export { z }; +export default z; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/locales/en.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/locales/en.ts new file mode 100644 index 000000000..0264f82ef --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/locales/en.ts @@ -0,0 +1,124 @@ +import { type ZodErrorMap, ZodIssueCode } from "../ZodError.js"; +import { util, ZodParsedType } from "../helpers/util.js"; + +const errorMap: ZodErrorMap = (issue, _ctx) => { + let message: string; + switch (issue.code) { + case ZodIssueCode.invalid_type: + if (issue.received === ZodParsedType.undefined) { + message = "Required"; + } else { + message = `Expected ${issue.expected}, received ${issue.received}`; + } + break; + case ZodIssueCode.invalid_literal: + message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`; + break; + case ZodIssueCode.unrecognized_keys: + message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, ", ")}`; + break; + case ZodIssueCode.invalid_union: + message = `Invalid input`; + break; + case ZodIssueCode.invalid_union_discriminator: + message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`; + break; + case ZodIssueCode.invalid_enum_value: + message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`; + break; + case ZodIssueCode.invalid_arguments: + message = `Invalid function arguments`; + break; + case ZodIssueCode.invalid_return_type: + message = `Invalid function return type`; + break; + case ZodIssueCode.invalid_date: + message = `Invalid date`; + break; + case ZodIssueCode.invalid_string: + if (typeof issue.validation === "object") { + if ("includes" in issue.validation) { + message = `Invalid input: must include "${issue.validation.includes}"`; + + if (typeof issue.validation.position === "number") { + message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`; + } + } else if ("startsWith" in issue.validation) { + message = `Invalid input: must start with "${issue.validation.startsWith}"`; + } else if ("endsWith" in issue.validation) { + message = `Invalid input: must end with "${issue.validation.endsWith}"`; + } else { + util.assertNever(issue.validation); + } + } else if (issue.validation !== "regex") { + message = `Invalid ${issue.validation}`; + } else { + message = "Invalid"; + } + break; + case ZodIssueCode.too_small: + if (issue.type === "array") + message = `Array must contain ${ + issue.exact ? "exactly" : issue.inclusive ? `at least` : `more than` + } ${issue.minimum} element(s)`; + else if (issue.type === "string") + message = `String must contain ${ + issue.exact ? "exactly" : issue.inclusive ? `at least` : `over` + } ${issue.minimum} character(s)`; + else if (issue.type === "number") + message = `Number must be ${ + issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than ` + }${issue.minimum}`; + else if (issue.type === "bigint") + message = `Number must be ${ + issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than ` + }${issue.minimum}`; + else if (issue.type === "date") + message = `Date must be ${ + issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than ` + }${new Date(Number(issue.minimum))}`; + else message = "Invalid input"; + break; + case ZodIssueCode.too_big: + if (issue.type === "array") + message = `Array must contain ${ + issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than` + } ${issue.maximum} element(s)`; + else if (issue.type === "string") + message = `String must contain ${ + issue.exact ? `exactly` : issue.inclusive ? `at most` : `under` + } ${issue.maximum} character(s)`; + else if (issue.type === "number") + message = `Number must be ${ + issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than` + } ${issue.maximum}`; + else if (issue.type === "bigint") + message = `BigInt must be ${ + issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than` + } ${issue.maximum}`; + else if (issue.type === "date") + message = `Date must be ${ + issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than` + } ${new Date(Number(issue.maximum))}`; + else message = "Invalid input"; + break; + case ZodIssueCode.custom: + message = `Invalid input`; + break; + case ZodIssueCode.invalid_intersection_types: + message = `Intersection results could not be merged`; + break; + case ZodIssueCode.not_multiple_of: + message = `Number must be a multiple of ${issue.multipleOf}`; + break; + case ZodIssueCode.not_finite: + message = "Number must be finite"; + break; + default: + message = _ctx.defaultError; + util.assertNever(issue); + } + return { message }; +}; + +export default errorMap; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/standard-schema.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/standard-schema.ts new file mode 100644 index 000000000..07193fd13 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/standard-schema.ts @@ -0,0 +1,113 @@ +/** + * The Standard Schema interface. + */ +export type StandardSchemaV1 = { + /** + * The Standard Schema properties. + */ + readonly "~standard": StandardSchemaV1.Props; +}; + +export declare namespace StandardSchemaV1 { + /** + * The Standard Schema properties interface. + */ + export interface Props { + /** + * The version number of the standard. + */ + readonly version: 1; + /** + * The vendor name of the schema library. + */ + readonly vendor: string; + /** + * Validates unknown input values. + */ + readonly validate: (value: unknown) => Result | Promise>; + /** + * Inferred types associated with the schema. + */ + readonly types?: Types | undefined; + } + + /** + * The result interface of the validate function. + */ + export type Result = SuccessResult | FailureResult; + + /** + * The result interface if validation succeeds. + */ + export interface SuccessResult { + /** + * The typed output value. + */ + readonly value: Output; + /** + * The non-existent issues. + */ + readonly issues?: undefined; + } + + /** + * The result interface if validation fails. + */ + export interface FailureResult { + /** + * The issues of failed validation. + */ + readonly issues: ReadonlyArray; + } + + /** + * The issue interface of the failure output. + */ + export interface Issue { + /** + * The error message of the issue. + */ + readonly message: string; + /** + * The path of the issue, if any. + */ + readonly path?: ReadonlyArray | undefined; + } + + /** + * The path segment interface of the issue. + */ + export interface PathSegment { + /** + * The key representing a path segment. + */ + readonly key: PropertyKey; + } + + /** + * The Standard Schema types interface. + */ + export interface Types { + /** + * The input type of the schema. + */ + readonly input: Input; + /** + * The output type of the schema. + */ + readonly output: Output; + } + + /** + * Infers the input type of a Standard Schema. + */ + export type InferInput = NonNullable["input"]; + + /** + * Infers the output type of a Standard Schema. + */ + export type InferOutput = NonNullable["output"]; + + // biome-ignore lint/complexity/noUselessEmptyExport: needed for granular visibility control of TS namespace + export {}; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/Mocker.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/Mocker.ts new file mode 100644 index 000000000..c9fbdd51a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/Mocker.ts @@ -0,0 +1,54 @@ +function getRandomInt(max: number) { + return Math.floor(Math.random() * Math.floor(max)); +} + +const testSymbol = Symbol("test"); + +export class Mocker { + pick = (...args: any[]): any => { + return args[getRandomInt(args.length)]; + }; + + get string(): string { + return Math.random().toString(36).substring(7); + } + get number(): number { + return Math.random() * 100; + } + get bigint(): bigint { + return BigInt(Math.floor(Math.random() * 10000)); + } + get boolean(): boolean { + return Math.random() < 0.5; + } + get date(): Date { + return new Date(Math.floor(Date.now() * Math.random())); + } + get symbol(): symbol { + return testSymbol; + } + get null(): null { + return null; + } + get undefined(): undefined { + return undefined; + } + get stringOptional(): string | undefined { + return this.pick(this.string, this.undefined); + } + get stringNullable(): string | null { + return this.pick(this.string, this.null); + } + get numberOptional(): number | undefined { + return this.pick(this.number, this.undefined); + } + get numberNullable(): number | null { + return this.pick(this.number, this.null); + } + get booleanOptional(): boolean | undefined { + return this.pick(this.boolean, this.undefined); + } + get booleanNullable(): boolean | null { + return this.pick(this.boolean, this.null); + } +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/all-errors.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/all-errors.test.ts new file mode 100644 index 000000000..8fdf8f426 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/all-errors.test.ts @@ -0,0 +1,157 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +const Test = z.object({ + f1: z.number(), + f2: z.string().optional(), + f3: z.string().nullable(), + f4: z.array(z.object({ t: z.union([z.string(), z.boolean()]) })), +}); +type TestFlattenedErrors = z.inferFlattenedErrors; +type TestFormErrors = z.inferFlattenedErrors; + +test("default flattened errors type inference", () => { + type TestTypeErrors = { + formErrors: string[]; + fieldErrors: { [P in keyof z.TypeOf]?: string[] | undefined }; + }; + + util.assertEqual, TestTypeErrors>(true); + util.assertEqual, TestTypeErrors>(false); +}); + +test("custom flattened errors type inference", () => { + type ErrorType = { message: string; code: number }; + type TestTypeErrors = { + formErrors: ErrorType[]; + fieldErrors: { + [P in keyof z.TypeOf]?: ErrorType[] | undefined; + }; + }; + + util.assertEqual, TestTypeErrors>(false); + util.assertEqual, TestTypeErrors>(true); + util.assertEqual, TestTypeErrors>(false); +}); + +test("form errors type inference", () => { + type TestTypeErrors = { + formErrors: string[]; + fieldErrors: { [P in keyof z.TypeOf]?: string[] | undefined }; + }; + + util.assertEqual, TestTypeErrors>(true); +}); + +test(".flatten() type assertion", () => { + const parsed = Test.safeParse({}) as z.SafeParseError; + const validFlattenedErrors: TestFlattenedErrors = parsed.error.flatten(() => ({ message: "", code: 0 })); + // @ts-expect-error should fail assertion between `TestFlattenedErrors` and unmapped `flatten()`. + const invalidFlattenedErrors: TestFlattenedErrors = parsed.error.flatten(); + const validFormErrors: TestFormErrors = parsed.error.flatten(); + // @ts-expect-error should fail assertion between `TestFormErrors` and mapped `flatten()`. + const invalidFormErrors: TestFormErrors = parsed.error.flatten(() => ({ + message: "string", + code: 0, + })); + + [validFlattenedErrors, invalidFlattenedErrors, validFormErrors, invalidFormErrors]; +}); + +test(".formErrors type assertion", () => { + const parsed = Test.safeParse({}) as z.SafeParseError; + const validFormErrors: TestFormErrors = parsed.error.formErrors; + // @ts-expect-error should fail assertion between `TestFlattenedErrors` and `.formErrors`. + const invalidFlattenedErrors: TestFlattenedErrors = parsed.error.formErrors; + + [validFormErrors, invalidFlattenedErrors]; +}); + +test("all errors", () => { + const propertySchema = z.string(); + const schema = z + .object({ + a: propertySchema, + b: propertySchema, + }) + .refine( + (val) => { + return val.a === val.b; + }, + { message: "Must be equal" } + ); + + try { + schema.parse({ + a: "asdf", + b: "qwer", + }); + } catch (error) { + if (error instanceof z.ZodError) { + expect(error.flatten()).toEqual({ + formErrors: ["Must be equal"], + fieldErrors: {}, + }); + } + } + + try { + schema.parse({ + a: null, + b: null, + }); + } catch (_error) { + const error = _error as z.ZodError; + expect(error.flatten()).toEqual({ + formErrors: [], + fieldErrors: { + a: ["Expected string, received null"], + b: ["Expected string, received null"], + }, + }); + + expect(error.flatten((iss) => iss.message.toUpperCase())).toEqual({ + formErrors: [], + fieldErrors: { + a: ["EXPECTED STRING, RECEIVED NULL"], + b: ["EXPECTED STRING, RECEIVED NULL"], + }, + }); + // Test identity + + expect(error.flatten((i: z.ZodIssue) => i)).toEqual({ + formErrors: [], + fieldErrors: { + a: [ + { + code: "invalid_type", + expected: "string", + message: "Expected string, received null", + path: ["a"], + received: "null", + }, + ], + b: [ + { + code: "invalid_type", + expected: "string", + message: "Expected string, received null", + path: ["b"], + received: "null", + }, + ], + }, + }); + // Test mapping + expect(error.flatten((i: z.ZodIssue) => i.message.length)).toEqual({ + formErrors: [], + fieldErrors: { + a: ["Expected string, received null".length], + b: ["Expected string, received null".length], + }, + }); + } +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/anyunknown.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/anyunknown.test.ts new file mode 100644 index 000000000..49d07db2c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/anyunknown.test.ts @@ -0,0 +1,28 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +test("check any inference", () => { + const t1 = z.any(); + t1.optional(); + t1.nullable(); + type t1 = z.infer; + util.assertEqual(true); +}); + +test("check unknown inference", () => { + const t1 = z.unknown(); + t1.optional(); + t1.nullable(); + type t1 = z.infer; + util.assertEqual(true); +}); + +test("check never inference", () => { + const t1 = z.never(); + expect(() => t1.parse(undefined)).toThrow(); + expect(() => t1.parse("asdf")).toThrow(); + expect(() => t1.parse(null)).toThrow(); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/array.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/array.test.ts new file mode 100644 index 000000000..df5b9d373 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/array.test.ts @@ -0,0 +1,71 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +const minTwo = z.string().array().min(2); +const maxTwo = z.string().array().max(2); +const justTwo = z.string().array().length(2); +const intNum = z.string().array().nonempty(); +const nonEmptyMax = z.string().array().nonempty().max(2); + +type t1 = z.infer; +util.assertEqual<[string, ...string[]], t1>(true); + +type t2 = z.infer; +util.assertEqual(true); + +test("passing validations", () => { + minTwo.parse(["a", "a"]); + minTwo.parse(["a", "a", "a"]); + maxTwo.parse(["a", "a"]); + maxTwo.parse(["a"]); + justTwo.parse(["a", "a"]); + intNum.parse(["a"]); + nonEmptyMax.parse(["a"]); +}); + +test("failing validations", () => { + expect(() => minTwo.parse(["a"])).toThrow(); + expect(() => maxTwo.parse(["a", "a", "a"])).toThrow(); + expect(() => justTwo.parse(["a"])).toThrow(); + expect(() => justTwo.parse(["a", "a", "a"])).toThrow(); + expect(() => intNum.parse([])).toThrow(); + expect(() => nonEmptyMax.parse([])).toThrow(); + expect(() => nonEmptyMax.parse(["a", "a", "a"])).toThrow(); +}); + +test("parse empty array in nonempty", () => { + expect(() => + z + .array(z.string()) + .nonempty() + .parse([] as any) + ).toThrow(); +}); + +test("get element", () => { + justTwo.element.parse("asdf"); + expect(() => justTwo.element.parse(12)).toThrow(); +}); + +test("continue parsing despite array size error", () => { + const schema = z.object({ + people: z.string().array().min(2), + }); + + const result = schema.safeParse({ + people: [123], + }); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues.length).toEqual(2); + } +}); + +test("parse should fail given sparse array", () => { + const schema = z.array(z.string()).nonempty().min(1).max(3); + + expect(() => schema.parse(new Array(3))).toThrow(); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/async-parsing.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/async-parsing.test.ts new file mode 100644 index 000000000..01dbc4f1e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/async-parsing.test.ts @@ -0,0 +1,388 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +/// string +const stringSchema = z.string(); + +test("string async parse", async () => { + const goodData = "XXX"; + const badData = 12; + + const goodResult = await stringSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + const badResult = await stringSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// number +const numberSchema = z.number(); +test("number async parse", async () => { + const goodData = 1234.2353; + const badData = "1234"; + + const goodResult = await numberSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + const badResult = await numberSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// bigInt +const bigIntSchema = z.bigint(); +test("bigInt async parse", async () => { + const goodData = BigInt(145); + const badData = 134; + + const goodResult = await bigIntSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + const badResult = await bigIntSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// boolean +const booleanSchema = z.boolean(); +test("boolean async parse", async () => { + const goodData = true; + const badData = 1; + + const goodResult = await booleanSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + const badResult = await booleanSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// date +const dateSchema = z.date(); +test("date async parse", async () => { + const goodData = new Date(); + const badData = new Date().toISOString(); + + const goodResult = await dateSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + const badResult = await dateSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// undefined +const undefinedSchema = z.undefined(); +test("undefined async parse", async () => { + const goodData = undefined; + const badData = "XXX"; + + const goodResult = await undefinedSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(undefined); + + const badResult = await undefinedSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// null +const nullSchema = z.null(); +test("null async parse", async () => { + const goodData = null; + const badData = undefined; + + const goodResult = await nullSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + const badResult = await nullSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// any +const anySchema = z.any(); +test("any async parse", async () => { + const goodData = [{}]; + // const badData = 'XXX'; + + const goodResult = await anySchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + // const badResult = await anySchema.safeParseAsync(badData); + // expect(badResult.success).toBe(false); + // if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// unknown +const unknownSchema = z.unknown(); +test("unknown async parse", async () => { + const goodData = ["asdf", 124, () => {}]; + // const badData = 'XXX'; + + const goodResult = await unknownSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + // const badResult = await unknownSchema.safeParseAsync(badData); + // expect(badResult.success).toBe(false); + // if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// void +const voidSchema = z.void(); +test("void async parse", async () => { + const goodData = undefined; + const badData = 0; + + const goodResult = await voidSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + const badResult = await voidSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// array +const arraySchema = z.array(z.string()); +test("array async parse", async () => { + const goodData = ["XXX"]; + const badData = "XXX"; + + const goodResult = await arraySchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + const badResult = await arraySchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// object +const objectSchema = z.object({ string: z.string() }); +test("object async parse", async () => { + const goodData = { string: "XXX" }; + const badData = { string: 12 }; + + const goodResult = await objectSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + const badResult = await objectSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// union +const unionSchema = z.union([z.string(), z.undefined()]); +test("union async parse", async () => { + const goodData = undefined; + const badData = null; + + const goodResult = await unionSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + const badResult = await unionSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// record +const recordSchema = z.record(z.object({})); +test("record async parse", async () => { + const goodData = { adsf: {}, asdf: {} }; + const badData = [{}]; + + const goodResult = await recordSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + const badResult = await recordSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// function +const functionSchema = z.function(); +test("function async parse", async () => { + const goodData = () => {}; + const badData = "XXX"; + + const goodResult = await functionSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(typeof goodResult.data).toEqual("function"); + + const badResult = await functionSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// literal +const literalSchema = z.literal("asdf"); +test("literal async parse", async () => { + const goodData = "asdf"; + const badData = "asdff"; + + const goodResult = await literalSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + const badResult = await literalSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// enum +const enumSchema = z.enum(["fish", "whale"]); +test("enum async parse", async () => { + const goodData = "whale"; + const badData = "leopard"; + + const goodResult = await enumSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + const badResult = await enumSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// nativeEnum +enum nativeEnumTest { + asdf = "qwer", +} +// @ts-ignore +const nativeEnumSchema = z.nativeEnum(nativeEnumTest); +test("nativeEnum async parse", async () => { + const goodData = nativeEnumTest.asdf; + const badData = "asdf"; + + const goodResult = await nativeEnumSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) expect(goodResult.data).toEqual(goodData); + + const badResult = await nativeEnumSchema.safeParseAsync(badData); + expect(badResult.success).toBe(false); + if (!badResult.success) expect(badResult.error).toBeInstanceOf(z.ZodError); +}); + +/// promise +const promiseSchema = z.promise(z.number()); +test("promise async parse good", async () => { + const goodData = Promise.resolve(123); + + const goodResult = await promiseSchema.safeParseAsync(goodData); + expect(goodResult.success).toBe(true); + if (goodResult.success) { + expect(goodResult.data).toBeInstanceOf(Promise); + const data = await goodResult.data; + expect(data).toEqual(123); + // expect(goodResult.data).resolves.toEqual(124); + // return goodResult.data; + } else { + throw new Error("success should be true"); + } +}); + +test("promise async parse bad", async () => { + const badData = Promise.resolve("XXX"); + const badResult = await promiseSchema.safeParseAsync(badData); + expect(badResult.success).toBe(true); + if (badResult.success) { + await expect(badResult.data).rejects.toBeInstanceOf(z.ZodError); + } else { + throw new Error("success should be true"); + } +}); + +test("async validation non-empty strings", async () => { + const base = z.object({ + hello: z.string().refine((x) => x && x.length > 0), + foo: z.string().refine((x) => x && x.length > 0), + }); + + const testval = { hello: "", foo: "" }; + const result1 = base.safeParse(testval); + const result2 = base.safeParseAsync(testval); + + const r1 = result1; + await result2.then((r2) => { + if (r1.success === false && r2.success === false) expect(r1.error.issues.length).toBe(r2.error.issues.length); // <--- r1 has length 2, r2 has length 1 + }); +}); + +test("async validation multiple errors 1", async () => { + const base = z.object({ + hello: z.string(), + foo: z.number(), + }); + + const testval = { hello: 3, foo: "hello" }; + const result1 = base.safeParse(testval); + const result2 = base.safeParseAsync(testval); + + const r1 = result1; + await result2.then((r2) => { + if (r1.success === false && r2.success === false) expect(r2.error.issues.length).toBe(r1.error.issues.length); + }); +}); + +test("async validation multiple errors 2", async () => { + const base = (is_async?: boolean) => + z.object({ + hello: z.string(), + foo: z.object({ + bar: z.number().refine(is_async ? async () => false : () => false), + }), + }); + + const testval = { hello: 3, foo: { bar: 4 } }; + const result1 = base().safeParse(testval); + const result2 = base(true).safeParseAsync(testval); + + const r1 = result1; + await result2.then((r2) => { + if (r1.success === false && r2.success === false) expect(r2.error.issues.length).toBe(r1.error.issues.length); + }); +}); + +test("ensure early async failure prevents follow-up refinement checks", async () => { + let count = 0; + const base = z.object({ + hello: z.string(), + foo: z + .number() + .refine(async () => { + count++; + return true; + }) + .refine(async () => { + count++; + return true; + }, "Good"), + }); + + const testval = { hello: "bye", foo: 3 }; + const result = await base.safeParseAsync(testval); + if (result.success === false) { + expect(result.error.issues.length).toBe(1); + expect(count).toBe(1); + } + + // await result.then((r) => { + // if (r.success === false) expect(r.error.issues.length).toBe(1); + // expect(count).toBe(2); + // }); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/async-refinements.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/async-refinements.test.ts new file mode 100644 index 000000000..509475db6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/async-refinements.test.ts @@ -0,0 +1,46 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +test("parse async test", async () => { + const schema1 = z.string().refine(async (_val) => false); + expect(() => schema1.parse("asdf")).toThrow(); + + const schema2 = z.string().refine((_val) => Promise.resolve(true)); + return await expect(() => schema2.parse("asdf")).toThrow(); +}); + +test("parseAsync async test", async () => { + const schema1 = z.string().refine(async (_val) => true); + await schema1.parseAsync("asdf"); + + const schema2 = z.string().refine(async (_val) => false); + return await expect(schema2.parseAsync("asdf")).rejects.toBeDefined(); + // expect(async () => await schema2.parseAsync('asdf')).toThrow(); +}); + +test("parseAsync async test", async () => { + // expect.assertions(2); + + const schema1 = z.string().refine((_val) => Promise.resolve(true)); + const v1 = await schema1.parseAsync("asdf"); + expect(v1).toEqual("asdf"); + + const schema2 = z.string().refine((_val) => Promise.resolve(false)); + await expect(schema2.parseAsync("asdf")).rejects.toBeDefined(); + + const schema3 = z.string().refine((_val) => Promise.resolve(true)); + await expect(schema3.parseAsync("asdf")).resolves.toEqual("asdf"); + return await expect(schema3.parseAsync("qwer")).resolves.toEqual("qwer"); +}); + +test("parseAsync async with value", async () => { + const schema1 = z.string().refine(async (val) => { + return val.length > 5; + }); + await expect(schema1.parseAsync("asdf")).rejects.toBeDefined(); + + const v = await schema1.parseAsync("asdf123"); + return await expect(v).toEqual("asdf123"); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/base.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/base.test.ts new file mode 100644 index 000000000..ab743d565 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/base.test.ts @@ -0,0 +1,29 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +test("type guard", () => { + const stringToNumber = z.string().transform((arg) => arg.length); + + const s1 = z.object({ + stringToNumber, + }); + type t1 = z.input; + + const data = { stringToNumber: "asdf" }; + const parsed = s1.safeParse(data); + if (parsed.success) { + util.assertEqual(true); + } +}); + +test("test this binding", () => { + const callback = (predicate: (val: string) => boolean) => { + return predicate("hello"); + }; + + expect(callback((value) => z.string().safeParse(value).success)).toBe(true); // true + expect(callback((value) => z.string().safeParse(value).success)).toBe(true); // true +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/bigint.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/bigint.test.ts new file mode 100644 index 000000000..9692f5700 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/bigint.test.ts @@ -0,0 +1,55 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +const gtFive = z.bigint().gt(BigInt(5)); +const gteFive = z.bigint().gte(BigInt(5)); +const ltFive = z.bigint().lt(BigInt(5)); +const lteFive = z.bigint().lte(BigInt(5)); +const positive = z.bigint().positive(); +const negative = z.bigint().negative(); +const nonnegative = z.bigint().nonnegative(); +const nonpositive = z.bigint().nonpositive(); +const multipleOfFive = z.bigint().multipleOf(BigInt(5)); + +test("passing validations", () => { + z.bigint().parse(BigInt(1)); + z.bigint().parse(BigInt(0)); + z.bigint().parse(BigInt(-1)); + gtFive.parse(BigInt(6)); + gteFive.parse(BigInt(5)); + gteFive.parse(BigInt(6)); + ltFive.parse(BigInt(4)); + lteFive.parse(BigInt(5)); + lteFive.parse(BigInt(4)); + positive.parse(BigInt(3)); + negative.parse(BigInt(-2)); + nonnegative.parse(BigInt(0)); + nonnegative.parse(BigInt(7)); + nonpositive.parse(BigInt(0)); + nonpositive.parse(BigInt(-12)); + multipleOfFive.parse(BigInt(15)); +}); + +test("failing validations", () => { + expect(() => gtFive.parse(BigInt(5))).toThrow(); + expect(() => gteFive.parse(BigInt(4))).toThrow(); + expect(() => ltFive.parse(BigInt(5))).toThrow(); + expect(() => lteFive.parse(BigInt(6))).toThrow(); + expect(() => positive.parse(BigInt(0))).toThrow(); + expect(() => positive.parse(BigInt(-2))).toThrow(); + expect(() => negative.parse(BigInt(0))).toThrow(); + expect(() => negative.parse(BigInt(3))).toThrow(); + expect(() => nonnegative.parse(BigInt(-1))).toThrow(); + expect(() => nonpositive.parse(BigInt(1))).toThrow(); + expect(() => multipleOfFive.parse(BigInt(13))).toThrow(); +}); + +test("min max getters", () => { + expect(z.bigint().min(BigInt(5)).minValue).toEqual(BigInt(5)); + expect(z.bigint().min(BigInt(5)).min(BigInt(10)).minValue).toEqual(BigInt(10)); + + expect(z.bigint().max(BigInt(5)).maxValue).toEqual(BigInt(5)); + expect(z.bigint().max(BigInt(5)).max(BigInt(1)).maxValue).toEqual(BigInt(1)); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/branded.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/branded.test.ts new file mode 100644 index 000000000..b19786cf6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/branded.test.ts @@ -0,0 +1,53 @@ +// @ts-ignore TS6133 +import { test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +test("branded types", () => { + const mySchema = z + .object({ + name: z.string(), + }) + .brand<"superschema">(); + + // simple branding + type MySchema = z.infer; + util.assertEqual(true); + + const doStuff = (arg: MySchema) => arg; + doStuff(mySchema.parse({ name: "hello there" })); + + // inheritance + const extendedSchema = mySchema.brand<"subschema">(); + type ExtendedSchema = z.infer; + util.assertEqual & z.BRAND<"subschema">>(true); + + doStuff(extendedSchema.parse({ name: "hello again" })); + + // number branding + const numberSchema = z.number().brand<42>(); + type NumberSchema = z.infer; + util.assertEqual(true); + + // symbol branding + const MyBrand: unique symbol = Symbol("hello"); + type MyBrand = typeof MyBrand; + const symbolBrand = z.number().brand<"sup">().brand(); + type SymbolBrand = z.infer; + // number & { [z.BRAND]: { sup: true, [MyBrand]: true } } + util.assertEqual & z.BRAND>(true); + + // keeping brands out of input types + const age = z.number().brand<"age">(); + + type Age = z.infer; + type AgeInput = z.input; + + util.assertEqual(false); + util.assertEqual(true); + util.assertEqual, Age>(true); + + // @ts-expect-error + doStuff({ name: "hello there!" }); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/catch.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/catch.test.ts new file mode 100644 index 000000000..94d12aa2b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/catch.test.ts @@ -0,0 +1,220 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import { z } from "zod/v3"; +import { util } from "../helpers/util.js"; + +test("basic catch", () => { + expect(z.string().catch("default").parse(undefined)).toBe("default"); +}); + +test("catch fn does not run when parsing succeeds", () => { + let isCalled = false; + const cb = () => { + isCalled = true; + return "asdf"; + }; + expect(z.string().catch(cb).parse("test")).toBe("test"); + expect(isCalled).toEqual(false); +}); + +test("basic catch async", async () => { + const result = await z.string().catch("default").parseAsync(1243); + expect(result).toBe("default"); +}); + +test("catch replace wrong types", () => { + expect(z.string().catch("default").parse(true)).toBe("default"); + expect(z.string().catch("default").parse(true)).toBe("default"); + expect(z.string().catch("default").parse(15)).toBe("default"); + expect(z.string().catch("default").parse([])).toBe("default"); + expect(z.string().catch("default").parse(new Map())).toBe("default"); + expect(z.string().catch("default").parse(new Set())).toBe("default"); + expect(z.string().catch("default").parse({})).toBe("default"); +}); + +test("catch with transform", () => { + const stringWithDefault = z + .string() + .transform((val) => val.toUpperCase()) + .catch("default"); + expect(stringWithDefault.parse(undefined)).toBe("default"); + expect(stringWithDefault.parse(15)).toBe("default"); + expect(stringWithDefault).toBeInstanceOf(z.ZodCatch); + expect(stringWithDefault._def.innerType).toBeInstanceOf(z.ZodEffects); + expect(stringWithDefault._def.innerType._def.schema).toBeInstanceOf(z.ZodSchema); + + type inp = z.input; + util.assertEqual(true); + type out = z.output; + util.assertEqual(true); +}); + +test("catch on existing optional", () => { + const stringWithDefault = z.string().optional().catch("asdf"); + expect(stringWithDefault.parse(undefined)).toBe(undefined); + expect(stringWithDefault.parse(15)).toBe("asdf"); + expect(stringWithDefault).toBeInstanceOf(z.ZodCatch); + expect(stringWithDefault._def.innerType).toBeInstanceOf(z.ZodOptional); + expect(stringWithDefault._def.innerType._def.innerType).toBeInstanceOf(z.ZodString); + + type inp = z.input; + util.assertEqual(true); + type out = z.output; + util.assertEqual(true); +}); + +test("optional on catch", () => { + const stringWithDefault = z.string().catch("asdf").optional(); + + type inp = z.input; + util.assertEqual(true); + type out = z.output; + util.assertEqual(true); +}); + +test("complex chain example", () => { + const complex = z + .string() + .catch("asdf") + .transform((val) => val + "!") + .transform((val) => val.toUpperCase()) + .catch("qwer") + .removeCatch() + .optional() + .catch("asdfasdf"); + + expect(complex.parse("qwer")).toBe("QWER!"); + expect(complex.parse(15)).toBe("ASDF!"); + expect(complex.parse(true)).toBe("ASDF!"); +}); + +test("removeCatch", () => { + const stringWithRemovedDefault = z.string().catch("asdf").removeCatch(); + + type out = z.output; + util.assertEqual(true); +}); + +test("nested", () => { + const inner = z.string().catch("asdf"); + const outer = z.object({ inner }).catch({ + inner: "asdf", + }); + type input = z.input; + util.assertEqual(true); + type out = z.output; + util.assertEqual(true); + expect(outer.parse(undefined)).toEqual({ inner: "asdf" }); + expect(outer.parse({})).toEqual({ inner: "asdf" }); + expect(outer.parse({ inner: undefined })).toEqual({ inner: "asdf" }); +}); + +test("chained catch", () => { + const stringWithDefault = z.string().catch("inner").catch("outer"); + const result = stringWithDefault.parse(undefined); + expect(result).toEqual("inner"); + const resultDiff = stringWithDefault.parse(5); + expect(resultDiff).toEqual("inner"); +}); + +test("factory", () => { + z.ZodCatch.create(z.string(), { + catch: "asdf", + }).parse(undefined); +}); + +test("native enum", () => { + enum Fruits { + apple = "apple", + orange = "orange", + } + + const schema = z.object({ + fruit: z.nativeEnum(Fruits).catch(Fruits.apple), + }); + + expect(schema.parse({})).toEqual({ fruit: Fruits.apple }); + expect(schema.parse({ fruit: 15 })).toEqual({ fruit: Fruits.apple }); +}); + +test("enum", () => { + const schema = z.object({ + fruit: z.enum(["apple", "orange"]).catch("apple"), + }); + + expect(schema.parse({})).toEqual({ fruit: "apple" }); + expect(schema.parse({ fruit: true })).toEqual({ fruit: "apple" }); + expect(schema.parse({ fruit: 15 })).toEqual({ fruit: "apple" }); +}); + +test("reported issues with nested usage", () => { + const schema = z.object({ + string: z.string(), + obj: z.object({ + sub: z.object({ + lit: z.literal("a"), + subCatch: z.number().catch(23), + }), + midCatch: z.number().catch(42), + }), + number: z.number().catch(0), + bool: z.boolean(), + }); + + try { + schema.parse({ + string: {}, + obj: { + sub: { + lit: "b", + subCatch: "24", + }, + midCatch: 444, + }, + number: "", + bool: "yes", + }); + } catch (error) { + const issues = (error as z.ZodError).issues; + + expect(issues.length).toEqual(3); + expect(issues[0].message).toMatch("string"); + expect(issues[1].message).toMatch("literal"); + expect(issues[2].message).toMatch("boolean"); + } +}); + +test("catch error", () => { + let catchError: z.ZodError | undefined = undefined; + + const schema = z.object({ + age: z.number(), + name: z.string().catch((ctx) => { + catchError = ctx.error; + + return "John Doe"; + }), + }); + + const result = schema.safeParse({ + age: null, + name: null, + }); + + expect(result.success).toEqual(false); + expect(!result.success && result.error.issues.length).toEqual(1); + expect(!result.success && result.error.issues[0].message).toMatch("number"); + + expect(catchError).toBeInstanceOf(z.ZodError); + expect(catchError !== undefined && (catchError as z.ZodError).issues.length).toEqual(1); + expect(catchError !== undefined && (catchError as z.ZodError).issues[0].message).toMatch("string"); +}); + +test("ctx.input", () => { + const schema = z.string().catch((ctx) => { + return String(ctx.input); + }); + + expect(schema.parse(123)).toEqual("123"); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/coerce.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/coerce.test.ts new file mode 100644 index 000000000..1f5300416 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/coerce.test.ts @@ -0,0 +1,133 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +test("string coercion", () => { + const schema = z.coerce.string(); + expect(schema.parse("sup")).toEqual("sup"); + expect(schema.parse("")).toEqual(""); + expect(schema.parse(12)).toEqual("12"); + expect(schema.parse(0)).toEqual("0"); + expect(schema.parse(-12)).toEqual("-12"); + expect(schema.parse(3.14)).toEqual("3.14"); + expect(schema.parse(BigInt(15))).toEqual("15"); + expect(schema.parse(Number.NaN)).toEqual("NaN"); + expect(schema.parse(Number.POSITIVE_INFINITY)).toEqual("Infinity"); + expect(schema.parse(Number.NEGATIVE_INFINITY)).toEqual("-Infinity"); + expect(schema.parse(true)).toEqual("true"); + expect(schema.parse(false)).toEqual("false"); + expect(schema.parse(null)).toEqual("null"); + expect(schema.parse(undefined)).toEqual("undefined"); + expect(schema.parse({ hello: "world!" })).toEqual("[object Object]"); + expect(schema.parse(["item", "another_item"])).toEqual("item,another_item"); + expect(schema.parse([])).toEqual(""); + expect(schema.parse(new Date("2022-01-01T00:00:00.000Z"))).toEqual(new Date("2022-01-01T00:00:00.000Z").toString()); +}); + +test("number coercion", () => { + const schema = z.coerce.number(); + expect(schema.parse("12")).toEqual(12); + expect(schema.parse("0")).toEqual(0); + expect(schema.parse("-12")).toEqual(-12); + expect(schema.parse("3.14")).toEqual(3.14); + expect(schema.parse("")).toEqual(0); + expect(() => schema.parse("NOT_A_NUMBER")).toThrow(); // z.ZodError + expect(schema.parse(12)).toEqual(12); + expect(schema.parse(0)).toEqual(0); + expect(schema.parse(-12)).toEqual(-12); + expect(schema.parse(3.14)).toEqual(3.14); + expect(schema.parse(BigInt(15))).toEqual(15); + expect(() => schema.parse(Number.NaN)).toThrow(); // z.ZodError + expect(schema.parse(Number.POSITIVE_INFINITY)).toEqual(Number.POSITIVE_INFINITY); + expect(schema.parse(Number.NEGATIVE_INFINITY)).toEqual(Number.NEGATIVE_INFINITY); + expect(schema.parse(true)).toEqual(1); + expect(schema.parse(false)).toEqual(0); + expect(schema.parse(null)).toEqual(0); + expect(() => schema.parse(undefined)).toThrow(); // z.ZodError + expect(() => schema.parse({ hello: "world!" })).toThrow(); // z.ZodError + expect(() => schema.parse(["item", "another_item"])).toThrow(); // z.ZodError + expect(schema.parse([])).toEqual(0); + expect(schema.parse(new Date(1670139203496))).toEqual(1670139203496); +}); + +test("boolean coercion", () => { + const schema = z.coerce.boolean(); + expect(schema.parse("true")).toEqual(true); + expect(schema.parse("false")).toEqual(true); + expect(schema.parse("0")).toEqual(true); + expect(schema.parse("1")).toEqual(true); + expect(schema.parse("")).toEqual(false); + expect(schema.parse(1)).toEqual(true); + expect(schema.parse(0)).toEqual(false); + expect(schema.parse(-1)).toEqual(true); + expect(schema.parse(3.14)).toEqual(true); + expect(schema.parse(BigInt(15))).toEqual(true); + expect(schema.parse(Number.NaN)).toEqual(false); + expect(schema.parse(Number.POSITIVE_INFINITY)).toEqual(true); + expect(schema.parse(Number.NEGATIVE_INFINITY)).toEqual(true); + expect(schema.parse(true)).toEqual(true); + expect(schema.parse(false)).toEqual(false); + expect(schema.parse(null)).toEqual(false); + expect(schema.parse(undefined)).toEqual(false); + expect(schema.parse({ hello: "world!" })).toEqual(true); + expect(schema.parse(["item", "another_item"])).toEqual(true); + expect(schema.parse([])).toEqual(true); + expect(schema.parse(new Date(1670139203496))).toEqual(true); +}); + +test("bigint coercion", () => { + const schema = z.coerce.bigint(); + expect(schema.parse("5")).toEqual(BigInt(5)); + expect(schema.parse("0")).toEqual(BigInt(0)); + expect(schema.parse("-5")).toEqual(BigInt(-5)); + expect(() => schema.parse("3.14")).toThrow(); // not a z.ZodError! + expect(schema.parse("")).toEqual(BigInt(0)); + expect(() => schema.parse("NOT_A_NUMBER")).toThrow(); // not a z.ZodError! + expect(schema.parse(5)).toEqual(BigInt(5)); + expect(schema.parse(0)).toEqual(BigInt(0)); + expect(schema.parse(-5)).toEqual(BigInt(-5)); + expect(() => schema.parse(3.14)).toThrow(); // not a z.ZodError! + expect(schema.parse(BigInt(5))).toEqual(BigInt(5)); + expect(() => schema.parse(Number.NaN)).toThrow(); // not a z.ZodError! + expect(() => schema.parse(Number.POSITIVE_INFINITY)).toThrow(); // not a z.ZodError! + expect(() => schema.parse(Number.NEGATIVE_INFINITY)).toThrow(); // not a z.ZodError! + expect(schema.parse(true)).toEqual(BigInt(1)); + expect(schema.parse(false)).toEqual(BigInt(0)); + expect(() => schema.parse(null)).toThrow(); // not a z.ZodError! + expect(() => schema.parse(undefined)).toThrow(); // not a z.ZodError! + expect(() => schema.parse({ hello: "world!" })).toThrow(); // not a z.ZodError! + expect(() => schema.parse(["item", "another_item"])).toThrow(); // not a z.ZodError! + expect(schema.parse([])).toEqual(BigInt(0)); + expect(schema.parse(new Date(1670139203496))).toEqual(BigInt(1670139203496)); +}); + +test("date coercion", () => { + const schema = z.coerce.date(); + expect(schema.parse(new Date().toDateString())).toBeInstanceOf(Date); + expect(schema.parse(new Date().toISOString())).toBeInstanceOf(Date); + expect(schema.parse(new Date().toUTCString())).toBeInstanceOf(Date); + expect(schema.parse("5")).toBeInstanceOf(Date); + expect(schema.parse("2000-01-01")).toBeInstanceOf(Date); + // expect(schema.parse("0")).toBeInstanceOf(Date); + // expect(schema.parse("-5")).toBeInstanceOf(Date); + // expect(schema.parse("3.14")).toBeInstanceOf(Date); + expect(() => schema.parse("")).toThrow(); // z.ZodError + expect(() => schema.parse("NOT_A_DATE")).toThrow(); // z.ZodError + expect(schema.parse(5)).toBeInstanceOf(Date); + expect(schema.parse(0)).toBeInstanceOf(Date); + expect(schema.parse(-5)).toBeInstanceOf(Date); + expect(schema.parse(3.14)).toBeInstanceOf(Date); + expect(() => schema.parse(BigInt(5))).toThrow(); // not a z.ZodError! + expect(() => schema.parse(Number.NaN)).toThrow(); // z.ZodError + expect(() => schema.parse(Number.POSITIVE_INFINITY)).toThrow(); // z.ZodError + expect(() => schema.parse(Number.NEGATIVE_INFINITY)).toThrow(); // z.ZodError + expect(schema.parse(true)).toBeInstanceOf(Date); + expect(schema.parse(false)).toBeInstanceOf(Date); + expect(schema.parse(null)).toBeInstanceOf(Date); + expect(() => schema.parse(undefined)).toThrow(); // z.ZodError + expect(() => schema.parse({ hello: "world!" })).toThrow(); // z.ZodError + expect(() => schema.parse(["item", "another_item"])).toThrow(); // z.ZodError + expect(() => schema.parse([])).toThrow(); // z.ZodError + expect(schema.parse(new Date())).toBeInstanceOf(Date); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/complex.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/complex.test.ts new file mode 100644 index 000000000..1d0303320 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/complex.test.ts @@ -0,0 +1,70 @@ +import { expect, test } from "vitest"; +import * as z from "zod/v3"; + +const crazySchema = z.object({ + tuple: z.tuple([ + z.string().nullable().optional(), + z.number().nullable().optional(), + z.boolean().nullable().optional(), + z.null().nullable().optional(), + z.undefined().nullable().optional(), + z.literal("1234").nullable().optional(), + ]), + merged: z + .object({ + k1: z.string().optional(), + }) + .merge(z.object({ k1: z.string().nullable(), k2: z.number() })), + union: z.array(z.union([z.literal("asdf"), z.literal(12)])).nonempty(), + array: z.array(z.number()), + // sumTransformer: z.transformer(z.array(z.number()), z.number(), (arg) => { + // return arg.reduce((a, b) => a + b, 0); + // }), + sumMinLength: z.array(z.number()).refine((arg) => arg.length > 5), + intersection: z.intersection(z.object({ p1: z.string().optional() }), z.object({ p1: z.number().optional() })), + enum: z.intersection(z.enum(["zero", "one"]), z.enum(["one", "two"])), + nonstrict: z.object({ points: z.number() }).nonstrict(), + numProm: z.promise(z.number()), + lenfun: z.function(z.tuple([z.string()]), z.boolean()), +}); + +// const asyncCrazySchema = crazySchema.extend({ +// // async_transform: z.transformer( +// // z.array(z.number()), +// // z.number(), +// // async (arg) => { +// // return arg.reduce((a, b) => a + b, 0); +// // } +// // ), +// async_refine: z.array(z.number()).refine(async (arg) => arg.length > 5), +// }); + +test("parse", () => { + const input = { + tuple: ["asdf", 1234, true, null, undefined, "1234"], + merged: { k1: "asdf", k2: 12 }, + union: ["asdf", 12, "asdf", 12, "asdf", 12], + array: [12, 15, 16], + // sumTransformer: [12, 15, 16], + sumMinLength: [12, 15, 16, 98, 24, 63], + intersection: {}, + enum: "one", + nonstrict: { points: 1234 }, + numProm: Promise.resolve(12), + lenfun: (x: string) => x.length, + }; + + const result = crazySchema.parse(input); + + // Verify the parsed result structure + expect(result.tuple).toEqual(input.tuple); + expect(result.merged).toEqual(input.merged); + expect(result.union).toEqual(input.union); + expect(result.array).toEqual(input.array); + expect(result.sumMinLength).toEqual(input.sumMinLength); + expect(result.intersection).toEqual(input.intersection); + expect(result.enum).toEqual(input.enum); + expect(result.nonstrict).toEqual(input.nonstrict); + expect(result.numProm).toBeInstanceOf(Promise); + expect(typeof result.lenfun).toBe("function"); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/custom.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/custom.test.ts new file mode 100644 index 000000000..b24b6762d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/custom.test.ts @@ -0,0 +1,31 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +test("passing validations", () => { + const example1 = z.custom((x) => typeof x === "number"); + example1.parse(1234); + expect(() => example1.parse({})).toThrow(); +}); + +test("string params", () => { + const example1 = z.custom((x) => typeof x !== "number", "customerr"); + const result = example1.safeParse(1234); + expect(result.success).toEqual(false); + // @ts-ignore + expect(JSON.stringify(result.error).includes("customerr")).toEqual(true); +}); + +test("async validations", async () => { + const example1 = z.custom(async (x) => { + return typeof x === "number"; + }); + const r1 = await example1.safeParseAsync(1234); + expect(r1.success).toEqual(true); + expect(r1.data).toEqual(1234); + + const r2 = await example1.safeParseAsync("asdf"); + expect(r2.success).toEqual(false); + expect(r2.error!.issues.length).toEqual(1); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/date.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/date.test.ts new file mode 100644 index 000000000..c86dc84fc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/date.test.ts @@ -0,0 +1,32 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +const beforeBenchmarkDate = new Date(2022, 10, 4); +const benchmarkDate = new Date(2022, 10, 5); +const afterBenchmarkDate = new Date(2022, 10, 6); + +const minCheck = z.date().min(benchmarkDate); +const maxCheck = z.date().max(benchmarkDate); + +test("passing validations", () => { + minCheck.parse(benchmarkDate); + minCheck.parse(afterBenchmarkDate); + + maxCheck.parse(benchmarkDate); + maxCheck.parse(beforeBenchmarkDate); +}); + +test("failing validations", () => { + expect(() => minCheck.parse(beforeBenchmarkDate)).toThrow(); + expect(() => maxCheck.parse(afterBenchmarkDate)).toThrow(); +}); + +test("min max getters", () => { + expect(minCheck.minDate).toEqual(benchmarkDate); + expect(minCheck.min(afterBenchmarkDate).minDate).toEqual(afterBenchmarkDate); + + expect(maxCheck.maxDate).toEqual(benchmarkDate); + expect(maxCheck.max(beforeBenchmarkDate).maxDate).toEqual(beforeBenchmarkDate); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/deepmasking.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/deepmasking.test.ts new file mode 100644 index 000000000..d707e79a0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/deepmasking.test.ts @@ -0,0 +1,186 @@ +// @ts-ignore TS6133 +import { test } from "vitest"; + +import * as z from "zod/v3"; + +test("test", () => { + z; +}); + +// const fish = z.object({ +// name: z.string(), +// props: z.object({ +// color: z.string(), +// numScales: z.number(), +// }), +// }); + +// const nonStrict = z +// .object({ +// name: z.string(), +// color: z.string(), +// }) +// .nonstrict(); + +// test('object pick type', () => { +// const modNonStrictFish = nonStrict.omit({ name: true }); +// modNonStrictFish.parse({ color: 'asdf' }); + +// const bad1 = () => fish.pick({ props: { unknown: true } } as any); +// const bad2 = () => fish.omit({ name: true, props: { unknown: true } } as any); + +// expect(bad1).toThrow(); +// expect(bad2).toThrow(); +// }); + +// test('f1', () => { +// const f1 = fish.pick(true); +// f1.parse({ name: 'a', props: { color: 'b', numScales: 3 } }); +// }); +// test('f2', () => { +// const f2 = fish.pick({ props: true }); +// f2.parse({ props: { color: 'asdf', numScales: 1 } }); +// const badcheck2 = () => f2.parse({ name: 'a', props: { color: 'b', numScales: 3 } } as any); +// expect(badcheck2).toThrow(); +// }); +// test('f3', () => { +// const f3 = fish.pick({ props: { color: true } }); +// f3.parse({ props: { color: 'b' } }); +// const badcheck3 = () => f3.parse({ name: 'a', props: { color: 'b', numScales: 3 } } as any); +// expect(badcheck3).toThrow(); +// }); +// test('f4', () => { +// const badcheck4 = () => fish.pick({ props: { color: true, unknown: true } }); +// expect(badcheck4).toThrow(); +// }); +// test('f6', () => { +// const f6 = fish.omit({ props: true }); +// const badcheck6 = () => f6.parse({ name: 'a', props: { color: 'b', numScales: 3 } } as any); +// f6.parse({ name: 'adsf' }); +// expect(badcheck6).toThrow(); +// }); +// test('f7', () => { +// const f7 = fish.omit({ props: { color: true } }); +// f7.parse({ name: 'a', props: { numScales: 3 } }); +// const badcheck7 = () => f7.parse({ name: 'a', props: { color: 'b', numScales: 3 } } as any); +// expect(badcheck7).toThrow(); +// }); +// test('f8', () => { +// const badcheck8 = () => fish.omit({ props: { color: true, unknown: true } }); +// expect(badcheck8).toThrow(); +// }); +// test('f9', () => { +// const f9 = nonStrict.pick(true); +// f9.parse({ name: 'a', color: 'asdf' }); +// }); +// test('f10', () => { +// const f10 = nonStrict.pick({ name: true }); +// f10.parse({ name: 'a' }); +// const val = f10.parse({ name: 'a', color: 'b' }); +// expect(val).toEqual({ name: 'a' }); +// }); +// test('f12', () => { +// const badfcheck12 = () => nonStrict.omit({ color: true, asdf: true }); +// expect(badfcheck12).toThrow(); +// }); + +// test('array masking', () => { +// const fishArray = z.array(fish); +// const modFishArray = fishArray.pick({ +// name: true, +// props: { +// numScales: true, +// }, +// }); + +// modFishArray.parse([{ name: 'fish', props: { numScales: 12 } }]); +// const bad1 = () => modFishArray.parse([{ name: 'fish', props: { numScales: 12, color: 'asdf' } }] as any); +// expect(bad1).toThrow(); +// }); + +// test('array masking', () => { +// const fishArray = z.array(fish); +// const fail = () => +// fishArray.pick({ +// name: true, +// props: { +// whatever: true, +// }, +// } as any); +// expect(fail).toThrow(); +// }); + +// test('array masking', () => { +// const fishArray = z.array(fish); +// const fail = () => +// fishArray.omit({ +// whateve: true, +// } as any); +// expect(fail).toThrow(); +// }); + +// test('array masking', () => { +// const fishArray = z.array(fish); +// const modFishList = fishArray.omit({ +// name: true, +// props: { +// color: true, +// }, +// }); + +// modFishList.parse([{ props: { numScales: 12 } }]); +// const fail = () => modFishList.parse([{ name: 'hello', props: { numScales: 12 } }] as any); +// expect(fail).toThrow(); +// }); + +// test('primitive array masking', () => { +// const fishArray = z.array(z.number()); +// const fail = () => fishArray.pick({} as any); +// expect(fail).toThrow(); +// }); + +// test('other array masking', () => { +// const fishArray = z.array(z.array(z.number())); +// const fail = () => fishArray.pick({} as any); +// expect(fail).toThrow(); +// }); + +// test('invalid mask #1', () => { +// const fail = () => fish.pick(1 as any); +// expect(fail).toThrow(); +// }); + +// test('invalid mask #2', () => { +// const fail = () => fish.pick([] as any); +// expect(fail).toThrow(); +// }); + +// test('invalid mask #3', () => { +// const fail = () => fish.pick(false as any); +// expect(fail).toThrow(); +// }); + +// test('invalid mask #4', () => { +// const fail = () => fish.pick('asdf' as any); +// expect(fail).toThrow(); +// }); + +// test('invalid mask #5', () => { +// const fail = () => fish.omit(1 as any); +// expect(fail).toThrow(); +// }); + +// test('invalid mask #6', () => { +// const fail = () => fish.omit([] as any); +// expect(fail).toThrow(); +// }); + +// test('invalid mask #7', () => { +// const fail = () => fish.omit(false as any); +// expect(fail).toThrow(); +// }); + +// test('invalid mask #8', () => { +// const fail = () => fish.omit('asdf' as any); +// expect(fail).toThrow(); +// }); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/default.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/default.test.ts new file mode 100644 index 000000000..29e007c93 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/default.test.ts @@ -0,0 +1,112 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import { z } from "zod/v3"; +import { util } from "../helpers/util.js"; + +test("basic defaults", () => { + expect(z.string().default("default").parse(undefined)).toBe("default"); +}); + +test("default with transform", () => { + const stringWithDefault = z + .string() + .transform((val) => val.toUpperCase()) + .default("default"); + expect(stringWithDefault.parse(undefined)).toBe("DEFAULT"); + expect(stringWithDefault).toBeInstanceOf(z.ZodDefault); + expect(stringWithDefault._def.innerType).toBeInstanceOf(z.ZodEffects); + expect(stringWithDefault._def.innerType._def.schema).toBeInstanceOf(z.ZodSchema); + + type inp = z.input; + util.assertEqual(true); + type out = z.output; + util.assertEqual(true); +}); + +test("default on existing optional", () => { + const stringWithDefault = z.string().optional().default("asdf"); + expect(stringWithDefault.parse(undefined)).toBe("asdf"); + expect(stringWithDefault).toBeInstanceOf(z.ZodDefault); + expect(stringWithDefault._def.innerType).toBeInstanceOf(z.ZodOptional); + expect(stringWithDefault._def.innerType._def.innerType).toBeInstanceOf(z.ZodString); + + type inp = z.input; + util.assertEqual(true); + type out = z.output; + util.assertEqual(true); +}); + +test("optional on default", () => { + const stringWithDefault = z.string().default("asdf").optional(); + + type inp = z.input; + util.assertEqual(true); + type out = z.output; + util.assertEqual(true); +}); + +test("complex chain example", () => { + const complex = z + .string() + .default("asdf") + .transform((val) => val.toUpperCase()) + .default("qwer") + .removeDefault() + .optional() + .default("asdfasdf"); + + expect(complex.parse(undefined)).toBe("ASDFASDF"); +}); + +test("removeDefault", () => { + const stringWithRemovedDefault = z.string().default("asdf").removeDefault(); + + type out = z.output; + util.assertEqual(true); +}); + +test("nested", () => { + const inner = z.string().default("asdf"); + const outer = z.object({ inner }).default({ + inner: undefined, + }); + type input = z.input; + util.assertEqual(true); + type out = z.output; + util.assertEqual(true); + expect(outer.parse(undefined)).toEqual({ inner: "asdf" }); + expect(outer.parse({})).toEqual({ inner: "asdf" }); + expect(outer.parse({ inner: undefined })).toEqual({ inner: "asdf" }); +}); + +test("chained defaults", () => { + const stringWithDefault = z.string().default("inner").default("outer"); + const result = stringWithDefault.parse(undefined); + expect(result).toEqual("outer"); +}); + +test("factory", () => { + expect(z.ZodDefault.create(z.string(), { default: "asdf" }).parse(undefined)).toEqual("asdf"); +}); + +test("native enum", () => { + enum Fruits { + apple = "apple", + orange = "orange", + } + + const schema = z.object({ + fruit: z.nativeEnum(Fruits).default(Fruits.apple), + }); + + expect(schema.parse({})).toEqual({ fruit: Fruits.apple }); +}); + +test("enum", () => { + const schema = z.object({ + fruit: z.enum(["apple", "orange"]).default("apple"), + }); + + expect(schema.parse({})).toEqual({ fruit: "apple" }); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/description.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/description.test.ts new file mode 100644 index 000000000..1edaa1cc2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/description.test.ts @@ -0,0 +1,33 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +const description = "a description"; + +test("passing `description` to schema should add a description", () => { + expect(z.string({ description }).description).toEqual(description); + expect(z.number({ description }).description).toEqual(description); + expect(z.boolean({ description }).description).toEqual(description); +}); + +test("`.describe` should add a description", () => { + expect(z.string().describe(description).description).toEqual(description); + expect(z.number().describe(description).description).toEqual(description); + expect(z.boolean().describe(description).description).toEqual(description); +}); + +test("description should carry over to chained schemas", () => { + const schema = z.string({ description }); + expect(schema.description).toEqual(description); + expect(schema.optional().description).toEqual(description); + expect(schema.optional().nullable().default("default").description).toEqual(description); +}); + +test("description should not carry over to chained array schema", () => { + const schema = z.string().describe(description); + + expect(schema.description).toEqual(description); + expect(schema.array().description).toEqual(undefined); + expect(z.array(schema).description).toEqual(undefined); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/discriminated-unions.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/discriminated-unions.test.ts new file mode 100644 index 000000000..7fb5cfefe --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/discriminated-unions.test.ts @@ -0,0 +1,315 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +test("valid", () => { + expect( + z + .discriminatedUnion("type", [ + z.object({ type: z.literal("a"), a: z.string() }), + z.object({ type: z.literal("b"), b: z.string() }), + ]) + .parse({ type: "a", a: "abc" }) + ).toEqual({ type: "a", a: "abc" }); +}); + +test("valid - discriminator value of various primitive types", () => { + const schema = z.discriminatedUnion("type", [ + z.object({ type: z.literal("1"), val: z.literal(1) }), + z.object({ type: z.literal(1), val: z.literal(2) }), + z.object({ type: z.literal(BigInt(1)), val: z.literal(3) }), + z.object({ type: z.literal("true"), val: z.literal(4) }), + z.object({ type: z.literal(true), val: z.literal(5) }), + z.object({ type: z.literal("null"), val: z.literal(6) }), + z.object({ type: z.literal(null), val: z.literal(7) }), + z.object({ type: z.literal("undefined"), val: z.literal(8) }), + z.object({ type: z.literal(undefined), val: z.literal(9) }), + z.object({ type: z.literal("transform"), val: z.literal(10) }), + z.object({ type: z.literal("refine"), val: z.literal(11) }), + z.object({ type: z.literal("superRefine"), val: z.literal(12) }), + ]); + + expect(schema.parse({ type: "1", val: 1 })).toEqual({ type: "1", val: 1 }); + expect(schema.parse({ type: 1, val: 2 })).toEqual({ type: 1, val: 2 }); + expect(schema.parse({ type: BigInt(1), val: 3 })).toEqual({ + type: BigInt(1), + val: 3, + }); + expect(schema.parse({ type: "true", val: 4 })).toEqual({ + type: "true", + val: 4, + }); + expect(schema.parse({ type: true, val: 5 })).toEqual({ + type: true, + val: 5, + }); + expect(schema.parse({ type: "null", val: 6 })).toEqual({ + type: "null", + val: 6, + }); + expect(schema.parse({ type: null, val: 7 })).toEqual({ + type: null, + val: 7, + }); + expect(schema.parse({ type: "undefined", val: 8 })).toEqual({ + type: "undefined", + val: 8, + }); + expect(schema.parse({ type: undefined, val: 9 })).toEqual({ + type: undefined, + val: 9, + }); +}); + +test("invalid - null", () => { + try { + z.discriminatedUnion("type", [ + z.object({ type: z.literal("a"), a: z.string() }), + z.object({ type: z.literal("b"), b: z.string() }), + ]).parse(null); + throw new Error(); + } catch (e: any) { + expect(JSON.parse(e.message)).toEqual([ + { + code: z.ZodIssueCode.invalid_type, + expected: z.ZodParsedType.object, + message: "Expected object, received null", + received: z.ZodParsedType.null, + path: [], + }, + ]); + } +}); + +test("invalid discriminator value", () => { + try { + z.discriminatedUnion("type", [ + z.object({ type: z.literal("a"), a: z.string() }), + z.object({ type: z.literal("b"), b: z.string() }), + ]).parse({ type: "x", a: "abc" }); + throw new Error(); + } catch (e: any) { + expect(JSON.parse(e.message)).toEqual([ + { + code: z.ZodIssueCode.invalid_union_discriminator, + options: ["a", "b"], + message: "Invalid discriminator value. Expected 'a' | 'b'", + path: ["type"], + }, + ]); + } +}); + +test("valid discriminator value, invalid data", () => { + try { + z.discriminatedUnion("type", [ + z.object({ type: z.literal("a"), a: z.string() }), + z.object({ type: z.literal("b"), b: z.string() }), + ]).parse({ type: "a", b: "abc" }); + throw new Error(); + } catch (e: any) { + expect(JSON.parse(e.message)).toEqual([ + { + code: z.ZodIssueCode.invalid_type, + expected: z.ZodParsedType.string, + message: "Required", + path: ["a"], + received: z.ZodParsedType.undefined, + }, + ]); + } +}); + +test("wrong schema - missing discriminator", () => { + try { + z.discriminatedUnion("type", [ + z.object({ type: z.literal("a"), a: z.string() }), + z.object({ b: z.string() }) as any, + ]); + throw new Error(); + } catch (e: any) { + expect(e.message.includes("could not be extracted")).toBe(true); + } +}); + +test("wrong schema - duplicate discriminator values", () => { + try { + z.discriminatedUnion("type", [ + z.object({ type: z.literal("a"), a: z.string() }), + z.object({ type: z.literal("a"), b: z.string() }), + ]); + throw new Error(); + } catch (e: any) { + expect(e.message.includes("has duplicate value")).toEqual(true); + } +}); + +test("async - valid", async () => { + expect( + await z + .discriminatedUnion("type", [ + z.object({ + type: z.literal("a"), + a: z + .string() + .refine(async () => true) + .transform(async (val) => Number(val)), + }), + z.object({ + type: z.literal("b"), + b: z.string(), + }), + ]) + .parseAsync({ type: "a", a: "1" }) + ).toEqual({ type: "a", a: 1 }); +}); + +test("async - invalid", async () => { + try { + await z + .discriminatedUnion("type", [ + z.object({ + type: z.literal("a"), + a: z + .string() + .refine(async () => true) + .transform(async (val) => val), + }), + z.object({ + type: z.literal("b"), + b: z.string(), + }), + ]) + .parseAsync({ type: "a", a: 1 }); + throw new Error(); + } catch (e: any) { + expect(JSON.parse(e.message)).toEqual([ + { + code: "invalid_type", + expected: "string", + received: "number", + path: ["a"], + message: "Expected string, received number", + }, + ]); + } +}); + +test("valid - literals with .default or .preprocess", () => { + const schema = z.discriminatedUnion("type", [ + z.object({ + type: z.literal("foo").default("foo"), + a: z.string(), + }), + z.object({ + type: z.literal("custom"), + method: z.string(), + }), + z.object({ + type: z.preprocess((val) => String(val), z.literal("bar")), + c: z.string(), + }), + ]); + expect(schema.parse({ type: "foo", a: "foo" })).toEqual({ + type: "foo", + a: "foo", + }); +}); + +test("enum and nativeEnum", () => { + enum MyEnum { + d = 0, + e = "e", + } + + const schema = z.discriminatedUnion("key", [ + z.object({ + key: z.literal("a"), + // Add other properties specific to this option + }), + z.object({ + key: z.enum(["b", "c"]), + // Add other properties specific to this option + }), + z.object({ + key: z.nativeEnum(MyEnum), + // Add other properties specific to this option + }), + ]); + + // type schema = z.infer; + + schema.parse({ key: "a" }); + schema.parse({ key: "b" }); + schema.parse({ key: "c" }); + schema.parse({ key: MyEnum.d }); + schema.parse({ key: MyEnum.e }); + schema.parse({ key: "e" }); +}); + +test("branded", () => { + const schema = z.discriminatedUnion("key", [ + z.object({ + key: z.literal("a"), + // Add other properties specific to this option + }), + z.object({ + key: z.literal("b").brand("asdfaf"), + // Add other properties specific to this option + }), + ]); + + // type schema = z.infer; + + schema.parse({ key: "a" }); + schema.parse({ key: "b" }); + expect(() => { + schema.parse({ key: "c" }); + }).toThrow(); +}); + +test("optional and nullable", () => { + const schema = z.discriminatedUnion("key", [ + z.object({ + key: z.literal("a").optional(), + a: z.literal(true), + }), + z.object({ + key: z.literal("b").nullable(), + b: z.literal(true), + // Add other properties specific to this option + }), + ]); + + type schema = z.infer; + z.util.assertEqual(true); + + schema.parse({ key: "a", a: true }); + schema.parse({ key: undefined, a: true }); + schema.parse({ key: "b", b: true }); + schema.parse({ key: null, b: true }); + expect(() => { + schema.parse({ key: null, a: true }); + }).toThrow(); + expect(() => { + schema.parse({ key: "b", a: true }); + }).toThrow(); + + const value = schema.parse({ key: null, b: true }); + + if (!("key" in value)) value.a; + if (value.key === undefined) value.a; + if (value.key === "a") value.a; + if (value.key === "b") value.b; + if (value.key === null) value.b; +}); + +test("readonly array of options", () => { + const options = [ + z.object({ type: z.literal("x"), val: z.literal(1) }), + z.object({ type: z.literal("y"), val: z.literal(2) }), + ] as const; + + expect(z.discriminatedUnion("type", options).parse({ type: "x", val: 1 })).toEqual({ type: "x", val: 1 }); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/enum.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/enum.test.ts new file mode 100644 index 000000000..53f4a3e84 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/enum.test.ts @@ -0,0 +1,80 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +test("create enum", () => { + const MyEnum = z.enum(["Red", "Green", "Blue"]); + expect(MyEnum.Values.Red).toEqual("Red"); + expect(MyEnum.Enum.Red).toEqual("Red"); + expect(MyEnum.enum.Red).toEqual("Red"); +}); + +test("infer enum", () => { + const MyEnum = z.enum(["Red", "Green", "Blue"]); + type MyEnum = z.infer; + util.assertEqual(true); +}); + +test("get options", () => { + expect(z.enum(["tuna", "trout"]).options).toEqual(["tuna", "trout"]); +}); + +test("readonly enum", () => { + const HTTP_SUCCESS = ["200", "201"] as const; + const arg = z.enum(HTTP_SUCCESS); + type arg = z.infer; + util.assertEqual(true); + + arg.parse("201"); + expect(() => arg.parse("202")).toThrow(); +}); + +test("error params", () => { + const result = z.enum(["test"], { required_error: "REQUIRED" }).safeParse(undefined); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues[0].message).toEqual("REQUIRED"); + } +}); + +test("extract/exclude", () => { + const foods = ["Pasta", "Pizza", "Tacos", "Burgers", "Salad"] as const; + const FoodEnum = z.enum(foods); + const ItalianEnum = FoodEnum.extract(["Pasta", "Pizza"]); + const UnhealthyEnum = FoodEnum.exclude(["Salad"]); + const EmptyFoodEnum = FoodEnum.exclude(foods); + + util.assertEqual, "Pasta" | "Pizza">(true); + util.assertEqual, "Pasta" | "Pizza" | "Tacos" | "Burgers">(true); + // @ts-expect-error TS2344 + util.assertEqual>(true); + util.assertEqual, never>(true); +}); + +test("error map in extract/exclude", () => { + const foods = ["Pasta", "Pizza", "Tacos", "Burgers", "Salad"] as const; + const FoodEnum = z.enum(foods, { + errorMap: () => ({ message: "This is not food!" }), + }); + const ItalianEnum = FoodEnum.extract(["Pasta", "Pizza"]); + const foodsError = FoodEnum.safeParse("Cucumbers"); + const italianError = ItalianEnum.safeParse("Tacos"); + if (!foodsError.success && !italianError.success) { + expect(foodsError.error.issues[0].message).toEqual(italianError.error.issues[0].message); + } + + const UnhealthyEnum = FoodEnum.exclude(["Salad"], { + errorMap: () => ({ message: "This is not healthy food!" }), + }); + const unhealthyError = UnhealthyEnum.safeParse("Salad"); + if (!unhealthyError.success) { + expect(unhealthyError.error.issues[0].message).toEqual("This is not healthy food!"); + } +}); + +test("readonly in ZodEnumDef", () => { + let _t!: z.ZodEnumDef; + _t; +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/error.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/error.test.ts new file mode 100644 index 000000000..5caaa6d81 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/error.test.ts @@ -0,0 +1,551 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { ZodError, ZodIssueCode } from "../ZodError.js"; +import { ZodParsedType } from "../helpers/util.js"; + +test("error creation", () => { + const err1 = ZodError.create([]); + err1.addIssue({ + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ZodParsedType.string, + path: [], + message: "", + fatal: true, + }); + err1.isEmpty; + + const err2 = ZodError.create(err1.issues); + const err3 = new ZodError([]); + err3.addIssues(err1.issues); + err3.addIssue(err1.issues[0]); + err1.message; + err2.message; + err3.message; +}); + +const errorMap: z.ZodErrorMap = (error, ctx) => { + if (error.code === ZodIssueCode.invalid_type) { + if (error.expected === "string") { + return { message: "bad type!" }; + } + } + if (error.code === ZodIssueCode.custom) { + return { message: `less-than-${error.params?.minimum}` }; + } + return { message: ctx.defaultError }; +}; + +test("type error with custom error map", () => { + try { + z.string().parse(234, { errorMap }); + } catch (err) { + const zerr: z.ZodError = err as any; + + expect(zerr.issues[0].code).toEqual(z.ZodIssueCode.invalid_type); + expect(zerr.issues[0].message).toEqual(`bad type!`); + } +}); + +test("refinement fail with params", () => { + try { + z.number() + .refine((val) => val >= 3, { + params: { minimum: 3 }, + }) + .parse(2, { errorMap }); + } catch (err) { + const zerr: z.ZodError = err as any; + expect(zerr.issues[0].code).toEqual(z.ZodIssueCode.custom); + expect(zerr.issues[0].message).toEqual(`less-than-3`); + } +}); + +test("custom error with custom errormap", () => { + try { + z.string() + .refine((val) => val.length > 12, { + params: { minimum: 13 }, + message: "override", + }) + .parse("asdf", { errorMap }); + } catch (err) { + const zerr: z.ZodError = err as any; + expect(zerr.issues[0].message).toEqual("override"); + } +}); + +test("default error message", () => { + try { + z.number() + .refine((x) => x > 3) + .parse(2); + } catch (err) { + const zerr: z.ZodError = err as any; + expect(zerr.issues.length).toEqual(1); + expect(zerr.issues[0].message).toEqual("Invalid input"); + } +}); + +test("override error in refine", () => { + try { + z.number() + .refine((x) => x > 3, "override") + .parse(2); + } catch (err) { + const zerr: z.ZodError = err as any; + expect(zerr.issues.length).toEqual(1); + expect(zerr.issues[0].message).toEqual("override"); + } +}); + +test("override error in refinement", () => { + try { + z.number() + .refine((x) => x > 3, { + message: "override", + }) + .parse(2); + } catch (err) { + const zerr: z.ZodError = err as any; + expect(zerr.issues.length).toEqual(1); + expect(zerr.issues[0].message).toEqual("override"); + } +}); + +test("array minimum", () => { + try { + z.array(z.string()).min(3, "tooshort").parse(["asdf", "qwer"]); + } catch (err) { + const zerr: ZodError = err as any; + expect(zerr.issues[0].code).toEqual(ZodIssueCode.too_small); + expect(zerr.issues[0].message).toEqual("tooshort"); + } + try { + z.array(z.string()).min(3).parse(["asdf", "qwer"]); + } catch (err) { + const zerr: ZodError = err as any; + expect(zerr.issues[0].code).toEqual(ZodIssueCode.too_small); + expect(zerr.issues[0].message).toEqual(`Array must contain at least 3 element(s)`); + } +}); + +// implement test for semi-smart union logic that checks for type error on either left or right +// test("union smart errors", () => { +// // expect.assertions(2); + +// const p1 = z +// .union([z.string(), z.number().refine((x) => x > 0)]) +// .safeParse(-3.2); + +// if (p1.success === true) throw new Error(); +// expect(p1.success).toBe(false); +// expect(p1.error.issues[0].code).toEqual(ZodIssueCode.custom); + +// const p2 = z.union([z.string(), z.number()]).safeParse(false); +// // .catch(err => expect(err.issues[0].code).toEqual(ZodIssueCode.invalid_union)); +// if (p2.success === true) throw new Error(); +// expect(p2.success).toBe(false); +// expect(p2.error.issues[0].code).toEqual(ZodIssueCode.invalid_union); +// }); + +test("custom path in custom error map", () => { + const schema = z.object({ + items: z.array(z.string()).refine((data) => data.length > 3, { + path: ["items-too-few"], + }), + }); + + const errorMap: z.ZodErrorMap = (error) => { + expect(error.path.length).toBe(2); + return { message: "doesnt matter" }; + }; + const result = schema.safeParse({ items: ["first"] }, { errorMap }); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues[0].path).toEqual(["items", "items-too-few"]); + } +}); + +test("error metadata from value", () => { + const dynamicRefine = z.string().refine( + (val) => val === val.toUpperCase(), + (val) => ({ params: { val } }) + ); + + const result = dynamicRefine.safeParse("asdf"); + expect(result.success).toEqual(false); + if (!result.success) { + const sub = result.error.issues[0]; + expect(result.error.issues[0].code).toEqual("custom"); + if (sub.code === "custom") { + expect(sub.params!.val).toEqual("asdf"); + } + } +}); + +// test("don't call refine after validation failed", () => { +// const asdf = z +// .union([ +// z.number(), +// z.string().transform(z.number(), (val) => { +// return parseFloat(val); +// }), +// ]) +// .refine((v) => v >= 1); + +// expect(() => asdf.safeParse("foo")).not.toThrow(); +// }); + +test("root level formatting", () => { + const schema = z.string().email(); + const result = schema.safeParse("asdfsdf"); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.format()._errors).toEqual(["Invalid email"]); + } +}); + +test("custom path", () => { + const schema = z + .object({ + password: z.string(), + confirm: z.string(), + }) + .refine((val) => val.confirm === val.password, { path: ["confirm"] }); + + const result = schema.safeParse({ + password: "peanuts", + confirm: "qeanuts", + }); + + expect(result.success).toEqual(false); + if (!result.success) { + // nested errors + const error = result.error.format(); + expect(error._errors).toEqual([]); + expect(error.password?._errors).toEqual(undefined); + expect(error.confirm?._errors).toEqual(["Invalid input"]); + } +}); + +test("custom path", () => { + const schema = z + .object({ + password: z.string().min(6), + confirm: z.string().min(6), + }) + .refine((val) => val.confirm === val.password); + + const result = schema.safeParse({ + password: "qwer", + confirm: "asdf", + }); + + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues.length).toEqual(3); + } +}); + +const schema = z.object({ + inner: z.object({ + name: z + .string() + .refine((val) => val.length > 5) + .array() + .refine((val) => val.length <= 1), + }), +}); + +test("no abort early on refinements", () => { + const invalidItem = { + inner: { name: ["aasd", "asdfasdfasfd"] }, + }; + + const result1 = schema.safeParse(invalidItem); + expect(result1.success).toEqual(false); + if (!result1.success) { + expect(result1.error.issues.length).toEqual(2); + } +}); +test("formatting", () => { + const invalidItem = { + inner: { name: ["aasd", "asdfasdfasfd"] }, + }; + const invalidArray = { + inner: { name: ["asdfasdf", "asdfasdfasfd"] }, + }; + const result1 = schema.safeParse(invalidItem); + const result2 = schema.safeParse(invalidArray); + + expect(result1.success).toEqual(false); + expect(result2.success).toEqual(false); + if (!result1.success) { + const error = result1.error.format(); + + expect(error._errors).toEqual([]); + expect(error.inner?._errors).toEqual([]); + // expect(error.inner?.name?._errors).toEqual(["Invalid input"]); + // expect(error.inner?.name?.[0]._errors).toEqual(["Invalid input"]); + expect(error.inner?.name?.[1]).toEqual(undefined); + } + if (!result2.success) { + type FormattedError = z.inferFormattedError; + const error: FormattedError = result2.error.format(); + expect(error._errors).toEqual([]); + expect(error.inner?._errors).toEqual([]); + expect(error.inner?.name?._errors).toEqual(["Invalid input"]); + expect(error.inner?.name?.[0]).toEqual(undefined); + expect(error.inner?.name?.[1]).toEqual(undefined); + expect(error.inner?.name?.[2]).toEqual(undefined); + } + + // test custom mapper + if (!result2.success) { + type FormattedError = z.inferFormattedError; + const error: FormattedError = result2.error.format(() => 5); + expect(error._errors).toEqual([]); + expect(error.inner?._errors).toEqual([]); + expect(error.inner?.name?._errors).toEqual([5]); + } +}); + +test("formatting with nullable and optional fields", () => { + const nameSchema = z.string().refine((val) => val.length > 5); + const schema = z.object({ + nullableObject: z.object({ name: nameSchema }).nullable(), + nullableArray: z.array(nameSchema).nullable(), + nullableTuple: z.tuple([nameSchema, nameSchema, z.number()]).nullable(), + optionalObject: z.object({ name: nameSchema }).optional(), + optionalArray: z.array(nameSchema).optional(), + optionalTuple: z.tuple([nameSchema, nameSchema, z.number()]).optional(), + }); + const invalidItem = { + nullableObject: { name: "abcd" }, + nullableArray: ["abcd"], + nullableTuple: ["abcd", "abcd", 1], + optionalObject: { name: "abcd" }, + optionalArray: ["abcd"], + optionalTuple: ["abcd", "abcd", 1], + }; + const result = schema.safeParse(invalidItem); + expect(result.success).toEqual(false); + if (!result.success) { + type FormattedError = z.inferFormattedError; + const error: FormattedError = result.error.format(); + expect(error._errors).toEqual([]); + expect(error.nullableObject?._errors).toEqual([]); + expect(error.nullableObject?.name?._errors).toEqual(["Invalid input"]); + expect(error.nullableArray?._errors).toEqual([]); + expect(error.nullableArray?.[0]?._errors).toEqual(["Invalid input"]); + expect(error.nullableTuple?._errors).toEqual([]); + expect(error.nullableTuple?.[0]?._errors).toEqual(["Invalid input"]); + expect(error.nullableTuple?.[1]?._errors).toEqual(["Invalid input"]); + expect(error.optionalObject?._errors).toEqual([]); + expect(error.optionalObject?.name?._errors).toEqual(["Invalid input"]); + expect(error.optionalArray?._errors).toEqual([]); + expect(error.optionalArray?.[0]?._errors).toEqual(["Invalid input"]); + expect(error.optionalTuple?._errors).toEqual([]); + expect(error.optionalTuple?.[0]?._errors).toEqual(["Invalid input"]); + expect(error.optionalTuple?.[1]?._errors).toEqual(["Invalid input"]); + } +}); + +const stringWithCustomError = z.string({ + errorMap: (issue, ctx) => ({ + message: issue.code === "invalid_type" ? (ctx.data ? "Invalid name" : "Name is required") : ctx.defaultError, + }), +}); + +test("schema-bound error map", () => { + const result = stringWithCustomError.safeParse(1234); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues[0].message).toEqual("Invalid name"); + } + + const result2 = stringWithCustomError.safeParse(undefined); + expect(result2.success).toEqual(false); + if (!result2.success) { + expect(result2.error.issues[0].message).toEqual("Name is required"); + } + + // support contextual override + const result3 = stringWithCustomError.safeParse(undefined, { + errorMap: () => ({ message: "OVERRIDE" }), + }); + expect(result3.success).toEqual(false); + if (!result3.success) { + expect(result3.error.issues[0].message).toEqual("OVERRIDE"); + } +}); + +test("overrideErrorMap", () => { + // support overrideErrorMap + z.setErrorMap(() => ({ message: "OVERRIDE" })); + const result4 = stringWithCustomError.min(10).safeParse("tooshort"); + expect(result4.success).toEqual(false); + if (!result4.success) { + expect(result4.error.issues[0].message).toEqual("OVERRIDE"); + } + z.setErrorMap(z.defaultErrorMap); +}); + +test("invalid and required", () => { + const str = z.string({ + invalid_type_error: "Invalid name", + required_error: "Name is required", + }); + const result1 = str.safeParse(1234); + expect(result1.success).toEqual(false); + if (!result1.success) { + expect(result1.error.issues[0].message).toEqual("Invalid name"); + } + const result2 = str.safeParse(undefined); + expect(result2.success).toEqual(false); + if (!result2.success) { + expect(result2.error.issues[0].message).toEqual("Name is required"); + } +}); + +test("Fallback to default required error", () => { + const str = z.string({ + invalid_type_error: "Invalid name", + // required_error: "Name is required", + }); + + const result2 = str.safeParse(undefined); + expect(result2.success).toEqual(false); + if (!result2.success) { + expect(result2.error.issues[0].message).toEqual("Required"); + } +}); + +test("invalid and required and errorMap", () => { + expect(() => { + return z.string({ + invalid_type_error: "Invalid name", + required_error: "Name is required", + errorMap: () => ({ message: "OVERRIDE" }), + }); + }).toThrow(); +}); + +test("strict error message", () => { + const errorMsg = "Invalid object"; + const obj = z.object({ x: z.string() }).strict(errorMsg); + const result = obj.safeParse({ x: "a", y: "b" }); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues[0].message).toEqual(errorMsg); + } +}); + +test("enum error message, invalid enum elementstring", () => { + try { + z.enum(["Tuna", "Trout"]).parse("Salmon"); + } catch (err) { + const zerr: z.ZodError = err as any; + expect(zerr.issues.length).toEqual(1); + expect(zerr.issues[0].message).toEqual("Invalid enum value. Expected 'Tuna' | 'Trout', received 'Salmon'"); + } +}); + +test("enum error message, invalid type", () => { + try { + z.enum(["Tuna", "Trout"]).parse(12); + } catch (err) { + const zerr: z.ZodError = err as any; + expect(zerr.issues.length).toEqual(1); + expect(zerr.issues[0].message).toEqual("Expected 'Tuna' | 'Trout', received number"); + } +}); + +test("nativeEnum default error message", () => { + enum Fish { + Tuna = "Tuna", + Trout = "Trout", + } + try { + z.nativeEnum(Fish).parse("Salmon"); + } catch (err) { + const zerr: z.ZodError = err as any; + expect(zerr.issues.length).toEqual(1); + expect(zerr.issues[0].message).toEqual("Invalid enum value. Expected 'Tuna' | 'Trout', received 'Salmon'"); + } +}); + +test("literal default error message", () => { + try { + z.literal("Tuna").parse("Trout"); + } catch (err) { + const zerr: z.ZodError = err as any; + expect(zerr.issues.length).toEqual(1); + expect(zerr.issues[0].message).toEqual(`Invalid literal value, expected "Tuna"`); + } +}); + +test("literal bigint default error message", () => { + try { + z.literal(BigInt(12)).parse(BigInt(13)); + } catch (err) { + const zerr: z.ZodError = err as any; + expect(zerr.issues.length).toEqual(1); + expect(zerr.issues[0].message).toEqual(`Invalid literal value, expected "12"`); + } +}); + +test("enum with message returns the custom error message", () => { + const schema = z.enum(["apple", "banana"], { + message: "the value provided is invalid", + }); + + const result1 = schema.safeParse("berries"); + expect(result1.success).toEqual(false); + if (!result1.success) { + expect(result1.error.issues[0].message).toEqual("the value provided is invalid"); + } + + const result2 = schema.safeParse(undefined); + expect(result2.success).toEqual(false); + if (!result2.success) { + expect(result2.error.issues[0].message).toEqual("the value provided is invalid"); + } + + const result3 = schema.safeParse("banana"); + expect(result3.success).toEqual(true); + + const result4 = schema.safeParse(null); + expect(result4.success).toEqual(false); + if (!result4.success) { + expect(result4.error.issues[0].message).toEqual("the value provided is invalid"); + } +}); + +test("when the message is falsy, it is used as is provided", () => { + const schema = z.string().max(1, { message: "" }); + const result = schema.safeParse("asdf"); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues[0].message).toEqual(""); + } +}); + +// test("dont short circuit on continuable errors", () => { +// const user = z +// .object({ +// password: z.string().min(6), +// confirm: z.string(), +// }) +// .refine((data) => data.password === data.confirm, { +// message: "Passwords don't match", +// path: ["confirm"], +// }); +// const result = user.safeParse({ password: "asdf", confirm: "qwer" }); +// if (!result.success) { +// expect(result.error.issues.length).toEqual(2); +// } +// }); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/firstparty.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/firstparty.test.ts new file mode 100644 index 000000000..017a1c13e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/firstparty.test.ts @@ -0,0 +1,87 @@ +// @ts-ignore TS6133 +import { test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +test("first party switch", () => { + const myType = z.string() as z.ZodFirstPartySchemaTypes; + const def = myType._def; + + switch (def.typeName) { + case z.ZodFirstPartyTypeKind.ZodString: + break; + case z.ZodFirstPartyTypeKind.ZodNumber: + break; + case z.ZodFirstPartyTypeKind.ZodNaN: + break; + case z.ZodFirstPartyTypeKind.ZodBigInt: + break; + case z.ZodFirstPartyTypeKind.ZodBoolean: + break; + case z.ZodFirstPartyTypeKind.ZodDate: + break; + case z.ZodFirstPartyTypeKind.ZodUndefined: + break; + case z.ZodFirstPartyTypeKind.ZodNull: + break; + case z.ZodFirstPartyTypeKind.ZodAny: + break; + case z.ZodFirstPartyTypeKind.ZodUnknown: + break; + case z.ZodFirstPartyTypeKind.ZodNever: + break; + case z.ZodFirstPartyTypeKind.ZodVoid: + break; + case z.ZodFirstPartyTypeKind.ZodArray: + break; + case z.ZodFirstPartyTypeKind.ZodObject: + break; + case z.ZodFirstPartyTypeKind.ZodUnion: + break; + case z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion: + break; + case z.ZodFirstPartyTypeKind.ZodIntersection: + break; + case z.ZodFirstPartyTypeKind.ZodTuple: + break; + case z.ZodFirstPartyTypeKind.ZodRecord: + break; + case z.ZodFirstPartyTypeKind.ZodMap: + break; + case z.ZodFirstPartyTypeKind.ZodSet: + break; + case z.ZodFirstPartyTypeKind.ZodFunction: + break; + case z.ZodFirstPartyTypeKind.ZodLazy: + break; + case z.ZodFirstPartyTypeKind.ZodLiteral: + break; + case z.ZodFirstPartyTypeKind.ZodEnum: + break; + case z.ZodFirstPartyTypeKind.ZodEffects: + break; + case z.ZodFirstPartyTypeKind.ZodNativeEnum: + break; + case z.ZodFirstPartyTypeKind.ZodOptional: + break; + case z.ZodFirstPartyTypeKind.ZodNullable: + break; + case z.ZodFirstPartyTypeKind.ZodDefault: + break; + case z.ZodFirstPartyTypeKind.ZodCatch: + break; + case z.ZodFirstPartyTypeKind.ZodPromise: + break; + case z.ZodFirstPartyTypeKind.ZodBranded: + break; + case z.ZodFirstPartyTypeKind.ZodPipeline: + break; + case z.ZodFirstPartyTypeKind.ZodSymbol: + break; + case z.ZodFirstPartyTypeKind.ZodReadonly: + break; + default: + util.assertNever(def); + } +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts new file mode 100644 index 000000000..ad397d8b8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts @@ -0,0 +1,21 @@ +// @ts-ignore TS6133 +import { test } from "vitest"; + +import type { ZodFirstPartySchemaTypes, ZodFirstPartyTypeKind } from "zod/v3"; +import { util } from "../helpers/util.js"; + +test("Identify missing [ZodFirstPartySchemaTypes]", () => { + type ZodFirstPartySchemaForType = ZodFirstPartySchemaTypes extends infer Schema + ? Schema extends { _def: { typeName: T } } + ? Schema + : never + : never; + type ZodMappedTypes = { + [key in ZodFirstPartyTypeKind]: ZodFirstPartySchemaForType; + }; + type ZodFirstPartySchemaTypesMissingFromUnion = keyof { + [key in keyof ZodMappedTypes as ZodMappedTypes[key] extends { _def: never } ? key : never]: unknown; + }; + + util.assertEqual(true); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/function.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/function.test.ts new file mode 100644 index 000000000..9a9e193bf --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/function.test.ts @@ -0,0 +1,261 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +const args1 = z.tuple([z.string()]); +const returns1 = z.number(); +const func1 = z.function(args1, returns1); + +test("function parsing", () => { + const parsed = func1.parse((arg: any) => arg.length); + const result = parsed("asdf"); + expect(result).toBe(4); +}); + +test("parsed function fail 1", () => { + const parsed = func1.parse((x: string) => x); + expect(() => parsed("asdf")).toThrow(); +}); + +test("parsed function fail 2", () => { + const parsed = func1.parse((x: string) => x); + expect(() => parsed(13 as any)).toThrow(); +}); + +test("function inference 1", () => { + type func1 = z.TypeOf; + util.assertEqual number>(true); +}); + +test("method parsing", () => { + const methodObject = z.object({ + property: z.number(), + method: z.function().args(z.string()).returns(z.number()), + }); + const methodInstance = { + property: 3, + method: function (s: string) { + return s.length + this.property; + }, + }; + const parsed = methodObject.parse(methodInstance); + expect(parsed.method("length=8")).toBe(11); // 8 length + 3 property +}); + +test("async method parsing", async () => { + const methodObject = z.object({ + property: z.number(), + method: z.function().args(z.string()).returns(z.promise(z.number())), + }); + const methodInstance = { + property: 3, + method: async function (s: string) { + return s.length + this.property; + }, + }; + const parsed = methodObject.parse(methodInstance); + expect(await parsed.method("length=8")).toBe(11); // 8 length + 3 property +}); + +test("args method", () => { + const t1 = z.function(); + type t1 = z.infer; + util.assertEqual unknown>(true); + + const t2 = t1.args(z.string()); + type t2 = z.infer; + util.assertEqual unknown>(true); + + const t3 = t2.returns(z.boolean()); + type t3 = z.infer; + util.assertEqual boolean>(true); +}); + +const args2 = z.tuple([ + z.object({ + f1: z.number(), + f2: z.string().nullable(), + f3: z.array(z.boolean().optional()).optional(), + }), +]); +const returns2 = z.union([z.string(), z.number()]); + +const func2 = z.function(args2, returns2); + +test("function inference 2", () => { + type func2 = z.TypeOf; + util.assertEqual< + func2, + (arg: { + f1: number; + f2: string | null; + f3?: (boolean | undefined)[] | undefined; + }) => string | number + >(true); +}); + +test("valid function run", () => { + const validFunc2Instance = func2.validate((_x) => { + return "adf" as any; + }); + + const checker = () => { + validFunc2Instance({ + f1: 21, + f2: "asdf", + f3: [true, false], + }); + }; + + checker(); +}); + +test("input validation error", () => { + const invalidFuncInstance = func2.validate((_x) => { + return "adf" as any; + }); + + const checker = () => { + invalidFuncInstance("Invalid_input" as any); + }; + + expect(checker).toThrow(); +}); + +test("output validation error", () => { + const invalidFuncInstance = func2.validate((_x) => { + return ["this", "is", "not", "valid", "output"] as any; + }); + + const checker = () => { + invalidFuncInstance({ + f1: 21, + f2: "asdf", + f3: [true, false], + }); + }; + + expect(checker).toThrow(); +}); + +z.function(z.tuple([z.string()])).args()._def.args; + +test("special function error codes", () => { + const checker = z.function(z.tuple([z.string()]), z.boolean()).implement((arg) => { + return arg.length as any; + }); + try { + checker("12" as any); + } catch (err) { + const zerr = err as z.ZodError; + const first = zerr.issues[0]; + if (first.code !== z.ZodIssueCode.invalid_return_type) throw new Error(); + + expect(first.returnTypeError).toBeInstanceOf(z.ZodError); + } + + try { + checker(12 as any); + } catch (err) { + const zerr = err as z.ZodError; + const first = zerr.issues[0]; + if (first.code !== z.ZodIssueCode.invalid_arguments) throw new Error(); + expect(first.argumentsError).toBeInstanceOf(z.ZodError); + } +}); + +test("function with async refinements", async () => { + const func = z + .function() + .args(z.string().refine(async (val) => val.length > 10)) + .returns(z.promise(z.number().refine(async (val) => val > 10))) + .implement(async (val) => { + return val.length; + }); + const results = []; + try { + await func("asdfasdf"); + results.push("success"); + } catch (_err) { + results.push("fail"); + } + try { + await func("asdflkjasdflkjsf"); + results.push("success"); + } catch (_err) { + results.push("fail"); + } + + expect(results).toEqual(["fail", "success"]); +}); + +test("non async function with async refinements should fail", async () => { + const func = z + .function() + .args(z.string().refine(async (val) => val.length > 10)) + .returns(z.number().refine(async (val) => val > 10)) + .implement((val) => { + return val.length; + }); + + const results = []; + try { + await func("asdasdfasdffasdf"); + results.push("success"); + } catch (_err) { + results.push("fail"); + } + + expect(results).toEqual(["fail"]); +}); + +test("allow extra parameters", () => { + const maxLength5 = z + .function() + .args(z.string()) + .returns(z.boolean()) + .implement((str, _arg, _qewr) => { + return str.length <= 5; + }); + + const filteredList = ["apple", "orange", "pear", "banana", "strawberry"].filter(maxLength5); + expect(filteredList.length).toEqual(2); +}); + +test("params and returnType getters", () => { + const func = z.function().args(z.string()).returns(z.string()); + + const paramResult = func.parameters().items[0].parse("asdf"); + expect(paramResult).toBe("asdf"); + + const returnResult = func.returnType().parse("asdf"); + expect(returnResult).toBe("asdf"); +}); + +test("inference with transforms", () => { + const funcSchema = z + .function() + .args(z.string().transform((val) => val.length)) + .returns(z.object({ val: z.number() })); + const myFunc = funcSchema.implement((val) => { + return { val, extra: "stuff" }; + }); + myFunc("asdf"); + + util.assertEqual { val: number; extra: string }>(true); +}); + +test("fallback to OuterTypeOfFunction", () => { + const funcSchema = z + .function() + .args(z.string().transform((val) => val.length)) + .returns(z.object({ arg: z.number() }).transform((val) => val.arg)); + + const myFunc = funcSchema.implement((val) => { + return { arg: val, arg2: false }; + }); + + util.assertEqual number>(true); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/generics.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/generics.test.ts new file mode 100644 index 000000000..e0af470f0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/generics.test.ts @@ -0,0 +1,48 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +test("generics", () => { + async function stripOuter(schema: TData, data: unknown) { + return z + .object({ + nested: schema, // as z.ZodTypeAny, + }) + .transform((data) => { + return data.nested!; + }) + .parse({ nested: data }); + } + + const result = stripOuter(z.object({ a: z.string() }), { a: "asdf" }); + util.assertEqual>(true); +}); + +// test("assignability", () => { +// const createSchemaAndParse = ( +// key: K, +// valueSchema: VS, +// data: unknown +// ) => { +// const schema = z.object({ +// [key]: valueSchema, +// } as { [k in K]: VS }); +// return { [key]: valueSchema }; +// const parsed = schema.parse(data); +// return parsed; +// // const inferred: z.infer> = parsed; +// // return inferred; +// }; +// const parsed = createSchemaAndParse("foo", z.string(), { foo: "" }); +// util.assertEqual(true); +// }); + +test("nested no undefined", () => { + const inner = z.string().or(z.array(z.string())); + const outer = z.object({ inner }); + type outerSchema = z.infer; + z.util.assertEqual(true); + expect(outer.safeParse({ inner: undefined }).success).toEqual(false); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/instanceof.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/instanceof.test.ts new file mode 100644 index 000000000..de66f3f09 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/instanceof.test.ts @@ -0,0 +1,37 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +test("instanceof", async () => { + class Test {} + class Subtest extends Test {} + abstract class AbstractBar { + constructor(public val: string) {} + } + class Bar extends AbstractBar {} + + const TestSchema = z.instanceof(Test); + const SubtestSchema = z.instanceof(Subtest); + const AbstractSchema = z.instanceof(AbstractBar); + const BarSchema = z.instanceof(Bar); + + TestSchema.parse(new Test()); + TestSchema.parse(new Subtest()); + SubtestSchema.parse(new Subtest()); + AbstractSchema.parse(new Bar("asdf")); + const bar = BarSchema.parse(new Bar("asdf")); + expect(bar.val).toEqual("asdf"); + + await expect(() => SubtestSchema.parse(new Test())).toThrow(/Input not instance of Subtest/); + await expect(() => TestSchema.parse(12)).toThrow(/Input not instance of Test/); + + util.assertEqual>(true); +}); + +test("instanceof fatal", () => { + const schema = z.instanceof(Date).refine((d) => d.toString()); + const res = schema.safeParse(null); + expect(res.success).toBe(false); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/intersection.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/intersection.test.ts new file mode 100644 index 000000000..6d7936c19 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/intersection.test.ts @@ -0,0 +1,110 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +test("object intersection", () => { + const BaseTeacher = z.object({ + subjects: z.array(z.string()), + }); + const HasID = z.object({ id: z.string() }); + + const Teacher = z.intersection(BaseTeacher.passthrough(), HasID); // BaseTeacher.merge(HasID); + const data = { + subjects: ["math"], + id: "asdfasdf", + }; + expect(Teacher.parse(data)).toEqual(data); + expect(() => Teacher.parse({ subject: data.subjects })).toThrow(); + expect(Teacher.parse({ ...data, extra: 12 })).toEqual({ ...data, extra: 12 }); + + expect(() => z.intersection(BaseTeacher.strict(), HasID).parse({ ...data, extra: 12 })).toThrow(); +}); + +test("deep intersection", () => { + const Animal = z.object({ + properties: z.object({ + is_animal: z.boolean(), + }), + }); + const Cat = z + .object({ + properties: z.object({ + jumped: z.boolean(), + }), + }) + .and(Animal); + + type _Cat = z.infer; + // const cat:Cat = 'asdf' as any; + const cat = Cat.parse({ properties: { is_animal: true, jumped: true } }); + expect(cat.properties).toEqual({ is_animal: true, jumped: true }); +}); + +test("deep intersection of arrays", async () => { + const Author = z.object({ + posts: z.array( + z.object({ + post_id: z.number(), + }) + ), + }); + const Registry = z + .object({ + posts: z.array( + z.object({ + title: z.string(), + }) + ), + }) + .and(Author); + + const posts = [ + { post_id: 1, title: "Novels" }, + { post_id: 2, title: "Fairy tales" }, + ]; + const cat = Registry.parse({ posts }); + expect(cat.posts).toEqual(posts); + const asyncCat = await Registry.parseAsync({ posts }); + expect(asyncCat.posts).toEqual(posts); +}); + +test("invalid intersection types", async () => { + const numberIntersection = z.intersection( + z.number(), + z.number().transform((x) => x + 1) + ); + + const syncResult = numberIntersection.safeParse(1234); + expect(syncResult.success).toEqual(false); + if (!syncResult.success) { + expect(syncResult.error.issues[0].code).toEqual(z.ZodIssueCode.invalid_intersection_types); + } + + const asyncResult = await numberIntersection.spa(1234); + expect(asyncResult.success).toEqual(false); + if (!asyncResult.success) { + expect(asyncResult.error.issues[0].code).toEqual(z.ZodIssueCode.invalid_intersection_types); + } +}); + +test("invalid array merge", async () => { + const stringArrInt = z.intersection( + z.string().array(), + z + .string() + .array() + .transform((val) => [...val, "asdf"]) + ); + const syncResult = stringArrInt.safeParse(["asdf", "qwer"]); + expect(syncResult.success).toEqual(false); + if (!syncResult.success) { + expect(syncResult.error.issues[0].code).toEqual(z.ZodIssueCode.invalid_intersection_types); + } + + const asyncResult = await stringArrInt.spa(["asdf", "qwer"]); + expect(asyncResult.success).toEqual(false); + if (!asyncResult.success) { + expect(asyncResult.error.issues[0].code).toEqual(z.ZodIssueCode.invalid_intersection_types); + } +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/language-server.source.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/language-server.source.ts new file mode 100644 index 000000000..cbe818bb3 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/language-server.source.ts @@ -0,0 +1,76 @@ +import * as z from "zod/v3"; + +export const filePath = __filename; + +// z.object() + +export const Test = z.object({ + f1: z.number(), +}); + +export type Test = z.infer; + +export const instanceOfTest: Test = { + f1: 1, +}; + +// z.object().merge() + +export const TestMerge = z + .object({ + f2: z.string().optional(), + }) + .merge(Test); + +export type TestMerge = z.infer; + +export const instanceOfTestMerge: TestMerge = { + f1: 1, + f2: "string", +}; + +// z.union() + +export const TestUnion = z.union([ + z.object({ + f2: z.string().optional(), + }), + Test, +]); + +export type TestUnion = z.infer; + +export const instanceOfTestUnion: TestUnion = { + f1: 1, + f2: "string", +}; + +// z.object().partial() + +export const TestPartial = Test.partial(); + +export type TestPartial = z.infer; + +export const instanceOfTestPartial: TestPartial = { + f1: 1, +}; + +// z.object().pick() + +export const TestPick = TestMerge.pick({ f1: true }); + +export type TestPick = z.infer; + +export const instanceOfTestPick: TestPick = { + f1: 1, +}; + +// z.object().omit() + +export const TestOmit = TestMerge.omit({ f2: true }); + +export type TestOmit = z.infer; + +export const instanceOfTestOmit: TestOmit = { + f1: 1, +}; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/language-server.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/language-server.test.ts new file mode 100644 index 000000000..851fdc483 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/language-server.test.ts @@ -0,0 +1,207 @@ +import { test } from "vitest"; +// import path from "path"; +// import { Node, Project, SyntaxKind } from "ts-morph"; + +// import { filePath } from "./language-server.source"; + +// The following tool is helpful for understanding the TypeScript AST associated with these tests: +// https://ts-ast-viewer.com/ (just copy the contents of language-server.source into the viewer) + +test("", () => {}); +// describe("Executing Go To Definition (and therefore Find Usages and Rename Refactoring) using an IDE works on inferred object properties", () => { +// // Compile file developmentEnvironment.source +// const project = new Project({ +// tsConfigFilePath: path.join(__dirname, "..", "..", "tsconfig.json"), +// skipAddingFilesFromTsConfig: true, +// }); +// const sourceFile = project.addSourceFileAtPath(filePath); + +// test("works for object properties inferred from z.object()", () => { +// // Find usage of Test.f1 property +// const instanceVariable = +// sourceFile.getVariableDeclarationOrThrow("instanceOfTest"); +// const propertyBeingAssigned = getPropertyBeingAssigned( +// instanceVariable, +// "f1" +// ); + +// // Find definition of Test.f1 property +// const definitionOfProperty = propertyBeingAssigned?.getDefinitionNodes()[0]; +// const parentOfProperty = definitionOfProperty?.getFirstAncestorByKind( +// SyntaxKind.VariableDeclaration +// ); + +// // Assert that find definition returned the Zod definition of Test +// expect(definitionOfProperty?.getText()).toEqual("f1: z.number()"); +// expect(parentOfProperty?.getName()).toEqual("Test"); +// }); + +// // test("works for first object properties inferred from z.object().merge()", () => { +// // // Find usage of TestMerge.f1 property +// // const instanceVariable = sourceFile.getVariableDeclarationOrThrow( +// // "instanceOfTestMerge" +// // ); +// // const propertyBeingAssigned = getPropertyBeingAssigned( +// // instanceVariable, +// // "f1" +// // ); + +// // // Find definition of TestMerge.f1 property +// // const definitionOfProperty = propertyBeingAssigned?.getDefinitionNodes()[0]; +// // const parentOfProperty = definitionOfProperty?.getFirstAncestorByKind( +// // SyntaxKind.VariableDeclaration +// // ); + +// // // Assert that find definition returned the Zod definition of Test +// // expect(definitionOfProperty?.getText()).toEqual("f1: z.number()"); +// // expect(parentOfProperty?.getName()).toEqual("Test"); +// // }); + +// // test("works for second object properties inferred from z.object().merge()", () => { +// // // Find usage of TestMerge.f2 property +// // const instanceVariable = sourceFile.getVariableDeclarationOrThrow( +// // "instanceOfTestMerge" +// // ); +// // const propertyBeingAssigned = getPropertyBeingAssigned( +// // instanceVariable, +// // "f2" +// // ); + +// // // Find definition of TestMerge.f2 property +// // const definitionOfProperty = propertyBeingAssigned?.getDefinitionNodes()[0]; +// // const parentOfProperty = definitionOfProperty?.getFirstAncestorByKind( +// // SyntaxKind.VariableDeclaration +// // ); + +// // // Assert that find definition returned the Zod definition of TestMerge +// // expect(definitionOfProperty?.getText()).toEqual( +// // "f2: z.string().optional()" +// // ); +// // expect(parentOfProperty?.getName()).toEqual("TestMerge"); +// // }); + +// test("works for first object properties inferred from z.union()", () => { +// // Find usage of TestUnion.f1 property +// const instanceVariable = sourceFile.getVariableDeclarationOrThrow( +// "instanceOfTestUnion" +// ); +// const propertyBeingAssigned = getPropertyBeingAssigned( +// instanceVariable, +// "f1" +// ); + +// // Find definition of TestUnion.f1 property +// const definitionOfProperty = propertyBeingAssigned?.getDefinitionNodes()[0]; +// const parentOfProperty = definitionOfProperty?.getFirstAncestorByKind( +// SyntaxKind.VariableDeclaration +// ); + +// // Assert that find definition returned the Zod definition of Test +// expect(definitionOfProperty?.getText()).toEqual("f1: z.number()"); +// expect(parentOfProperty?.getName()).toEqual("Test"); +// }); + +// test("works for second object properties inferred from z.union()", () => { +// // Find usage of TestUnion.f2 property +// const instanceVariable = sourceFile.getVariableDeclarationOrThrow( +// "instanceOfTestUnion" +// ); +// const propertyBeingAssigned = getPropertyBeingAssigned( +// instanceVariable, +// "f2" +// ); + +// // Find definition of TestUnion.f2 property +// const definitionOfProperty = propertyBeingAssigned?.getDefinitionNodes()[0]; +// const parentOfProperty = definitionOfProperty?.getFirstAncestorByKind( +// SyntaxKind.VariableDeclaration +// ); + +// // Assert that find definition returned the Zod definition of TestUnion +// expect(definitionOfProperty?.getText()).toEqual( +// "f2: z.string().optional()" +// ); +// expect(parentOfProperty?.getName()).toEqual("TestUnion"); +// }); + +// test("works for object properties inferred from z.object().partial()", () => { +// // Find usage of TestPartial.f1 property +// const instanceVariable = sourceFile.getVariableDeclarationOrThrow( +// "instanceOfTestPartial" +// ); +// const propertyBeingAssigned = getPropertyBeingAssigned( +// instanceVariable, +// "f1" +// ); + +// // Find definition of TestPartial.f1 property +// const definitionOfProperty = propertyBeingAssigned?.getDefinitionNodes()[0]; +// const parentOfProperty = definitionOfProperty?.getFirstAncestorByKind( +// SyntaxKind.VariableDeclaration +// ); + +// // Assert that find definition returned the Zod definition of Test +// expect(definitionOfProperty?.getText()).toEqual("f1: z.number()"); +// expect(parentOfProperty?.getName()).toEqual("Test"); +// }); + +// test("works for object properties inferred from z.object().pick()", () => { +// // Find usage of TestPick.f1 property +// const instanceVariable = +// sourceFile.getVariableDeclarationOrThrow("instanceOfTestPick"); +// const propertyBeingAssigned = getPropertyBeingAssigned( +// instanceVariable, +// "f1" +// ); + +// // Find definition of TestPick.f1 property +// const definitionOfProperty = propertyBeingAssigned?.getDefinitionNodes()[0]; +// const parentOfProperty = definitionOfProperty?.getFirstAncestorByKind( +// SyntaxKind.VariableDeclaration +// ); + +// // Assert that find definition returned the Zod definition of Test +// expect(definitionOfProperty?.getText()).toEqual("f1: z.number()"); +// expect(parentOfProperty?.getName()).toEqual("Test"); +// }); + +// test("works for object properties inferred from z.object().omit()", () => { +// // Find usage of TestOmit.f1 property +// const instanceVariable = +// sourceFile.getVariableDeclarationOrThrow("instanceOfTestOmit"); +// const propertyBeingAssigned = getPropertyBeingAssigned( +// instanceVariable, +// "f1" +// ); + +// // Find definition of TestOmit.f1 property +// const definitionOfProperty = propertyBeingAssigned?.getDefinitionNodes()[0]; +// const parentOfProperty = definitionOfProperty?.getFirstAncestorByKind( +// SyntaxKind.VariableDeclaration +// ); + +// // Assert that find definition returned the Zod definition of Test +// expect(definitionOfProperty?.getText()).toEqual("f1: z.number()"); +// expect(parentOfProperty?.getName()).toEqual("Test"); +// }); +// }); + +// const getPropertyBeingAssigned = (node: Node, name: string) => { +// const propertyAssignment = node.forEachDescendant((descendent) => +// Node.isPropertyAssignment(descendent) && descendent.getName() == name +// ? descendent +// : undefined +// ); + +// if (propertyAssignment == null) +// fail(`Could not find property assignment with name ${name}`); + +// const propertyLiteral = propertyAssignment.getFirstDescendantByKind( +// SyntaxKind.Identifier +// ); + +// if (propertyLiteral == null) +// fail(`Could not find property literal with name ${name}`); + +// return propertyLiteral; +// }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/literal.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/literal.test.ts new file mode 100644 index 000000000..d166a24f2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/literal.test.ts @@ -0,0 +1,36 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +const literalTuna = z.literal("tuna"); +const literalFortyTwo = z.literal(42); +const literalTrue = z.literal(true); + +const terrificSymbol = Symbol("terrific"); +const literalTerrificSymbol = z.literal(terrificSymbol); + +test("passing validations", () => { + literalTuna.parse("tuna"); + literalFortyTwo.parse(42); + literalTrue.parse(true); + literalTerrificSymbol.parse(terrificSymbol); +}); + +test("failing validations", () => { + expect(() => literalTuna.parse("shark")).toThrow(); + expect(() => literalFortyTwo.parse(43)).toThrow(); + expect(() => literalTrue.parse(false)).toThrow(); + expect(() => literalTerrificSymbol.parse(Symbol("terrific"))).toThrow(); +}); + +test("invalid_literal should have `received` field with data", () => { + const data = "shark"; + const result = literalTuna.safeParse(data); + if (!result.success) { + const issue = result.error.issues[0]; + if (issue.code === "invalid_literal") { + expect(issue.received).toBe(data); + } + } +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/map.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/map.test.ts new file mode 100644 index 000000000..947181903 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/map.test.ts @@ -0,0 +1,110 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { ZodIssueCode } from "zod/v3"; +import { util } from "../helpers/util.js"; + +const stringMap = z.map(z.string(), z.string()); +type stringMap = z.infer; + +test("type inference", () => { + util.assertEqual>(true); +}); + +test("valid parse", () => { + const result = stringMap.safeParse( + new Map([ + ["first", "foo"], + ["second", "bar"], + ]) + ); + expect(result.success).toEqual(true); + if (result.success) { + expect(result.data.has("first")).toEqual(true); + expect(result.data.has("second")).toEqual(true); + expect(result.data.get("first")).toEqual("foo"); + expect(result.data.get("second")).toEqual("bar"); + } +}); + +test("valid parse async", async () => { + const result = await stringMap.spa( + new Map([ + ["first", "foo"], + ["second", "bar"], + ]) + ); + expect(result.success).toEqual(true); + if (result.success) { + expect(result.data.has("first")).toEqual(true); + expect(result.data.has("second")).toEqual(true); + expect(result.data.get("first")).toEqual("foo"); + expect(result.data.get("second")).toEqual("bar"); + } +}); + +test("throws when a Set is given", () => { + const result = stringMap.safeParse(new Set([])); + expect(result.success).toEqual(false); + if (result.success === false) { + expect(result.error.issues.length).toEqual(1); + expect(result.error.issues[0].code).toEqual(ZodIssueCode.invalid_type); + } +}); + +test("throws when the given map has invalid key and invalid input", () => { + const result = stringMap.safeParse(new Map([[42, Symbol()]])); + expect(result.success).toEqual(false); + if (result.success === false) { + expect(result.error.issues.length).toEqual(2); + expect(result.error.issues[0].code).toEqual(ZodIssueCode.invalid_type); + expect(result.error.issues[0].path).toEqual([0, "key"]); + expect(result.error.issues[1].code).toEqual(ZodIssueCode.invalid_type); + expect(result.error.issues[1].path).toEqual([0, "value"]); + } +}); + +test("throws when the given map has multiple invalid entries", () => { + // const result = stringMap.safeParse(new Map([[42, Symbol()]])); + + const result = stringMap.safeParse( + new Map([ + [1, "foo"], + ["bar", 2], + ] as [any, any][]) as Map + ); + + // const result = stringMap.safeParse(new Map([[42, Symbol()]])); + expect(result.success).toEqual(false); + if (result.success === false) { + expect(result.error.issues.length).toEqual(2); + expect(result.error.issues[0].code).toEqual(ZodIssueCode.invalid_type); + expect(result.error.issues[0].path).toEqual([0, "key"]); + expect(result.error.issues[1].code).toEqual(ZodIssueCode.invalid_type); + expect(result.error.issues[1].path).toEqual([1, "value"]); + } +}); + +test("dirty", async () => { + const map = z.map( + z.string().refine((val) => val === val.toUpperCase(), { + message: "Keys must be uppercase", + }), + z.string() + ); + const result = await map.spa( + new Map([ + ["first", "foo"], + ["second", "bar"], + ]) + ); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues.length).toEqual(2); + expect(result.error.issues[0].code).toEqual(z.ZodIssueCode.custom); + expect(result.error.issues[0].message).toEqual("Keys must be uppercase"); + expect(result.error.issues[1].code).toEqual(z.ZodIssueCode.custom); + expect(result.error.issues[1].message).toEqual("Keys must be uppercase"); + } +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/masking.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/masking.test.ts new file mode 100644 index 000000000..63817e2c1 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/masking.test.ts @@ -0,0 +1,4 @@ +// @ts-ignore TS6133 +import { test } from "vitest"; + +test("masking test", () => {}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/mocker.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/mocker.test.ts new file mode 100644 index 000000000..3a2506b90 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/mocker.test.ts @@ -0,0 +1,19 @@ +// @ts-ignore TS6133 +import { test } from "vitest"; + +import { Mocker } from "./Mocker.js"; + +test("mocker", () => { + const mocker = new Mocker(); + mocker.string; + mocker.number; + mocker.boolean; + mocker.null; + mocker.undefined; + mocker.stringOptional; + mocker.stringNullable; + mocker.numberOptional; + mocker.numberNullable; + mocker.booleanOptional; + mocker.booleanNullable; +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/nan.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/nan.test.ts new file mode 100644 index 000000000..ce1214eb8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/nan.test.ts @@ -0,0 +1,24 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +const schema = z.nan(); + +test("passing validations", () => { + const result1 = schema.parse(Number.NaN); + expect(Number.isNaN(result1)).toBe(true); + + const result2 = schema.parse(Number("Not a number")); + expect(Number.isNaN(result2)).toBe(true); +}); + +test("failing validations", () => { + expect(() => schema.parse(5)).toThrow(); + expect(() => schema.parse("John")).toThrow(); + expect(() => schema.parse(true)).toThrow(); + expect(() => schema.parse(null)).toThrow(); + expect(() => schema.parse(undefined)).toThrow(); + expect(() => schema.parse({})).toThrow(); + expect(() => schema.parse([])).toThrow(); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/nativeEnum.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/nativeEnum.test.ts new file mode 100644 index 000000000..61eb37a13 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/nativeEnum.test.ts @@ -0,0 +1,87 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +test("nativeEnum test with consts", () => { + const Fruits: { Apple: "apple"; Banana: "banana" } = { + Apple: "apple", + Banana: "banana", + }; + const fruitEnum = z.nativeEnum(Fruits); + type fruitEnum = z.infer; + fruitEnum.parse("apple"); + fruitEnum.parse("banana"); + fruitEnum.parse(Fruits.Apple); + fruitEnum.parse(Fruits.Banana); + util.assertEqual(true); +}); + +test("nativeEnum test with real enum", () => { + enum Fruits { + Apple = "apple", + Banana = "banana", + } + // @ts-ignore + const fruitEnum = z.nativeEnum(Fruits); + type fruitEnum = z.infer; + fruitEnum.parse("apple"); + fruitEnum.parse("banana"); + fruitEnum.parse(Fruits.Apple); + fruitEnum.parse(Fruits.Banana); + util.assertIs(true); +}); + +test("nativeEnum test with const with numeric keys", () => { + const FruitValues = { + Apple: 10, + Banana: 20, + // @ts-ignore + } as const; + const fruitEnum = z.nativeEnum(FruitValues); + type fruitEnum = z.infer; + fruitEnum.parse(10); + fruitEnum.parse(20); + fruitEnum.parse(FruitValues.Apple); + fruitEnum.parse(FruitValues.Banana); + util.assertEqual(true); +}); + +test("from enum", () => { + enum Fruits { + Cantaloupe = 0, + Apple = "apple", + Banana = "banana", + } + + const FruitEnum = z.nativeEnum(Fruits as any); + type _FruitEnum = z.infer; + FruitEnum.parse(Fruits.Cantaloupe); + FruitEnum.parse(Fruits.Apple); + FruitEnum.parse("apple"); + FruitEnum.parse(0); + expect(() => FruitEnum.parse(1)).toThrow(); + expect(() => FruitEnum.parse("Apple")).toThrow(); + expect(() => FruitEnum.parse("Cantaloupe")).toThrow(); +}); + +test("from const", () => { + const Greek = { + Alpha: "a", + Beta: "b", + Gamma: 3, + // @ts-ignore + } as const; + + const GreekEnum = z.nativeEnum(Greek); + type _GreekEnum = z.infer; + GreekEnum.parse("a"); + GreekEnum.parse("b"); + GreekEnum.parse(3); + expect(() => GreekEnum.parse("v")).toThrow(); + expect(() => GreekEnum.parse("Alpha")).toThrow(); + expect(() => GreekEnum.parse(2)).toThrow(); + + expect(GreekEnum.enum.Alpha).toEqual("a"); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/nullable.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/nullable.test.ts new file mode 100644 index 000000000..90c1eed4d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/nullable.test.ts @@ -0,0 +1,42 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +function checkErrors(a: z.ZodTypeAny, bad: any) { + let expected: any; + try { + a.parse(bad); + } catch (error) { + expected = (error as z.ZodError).formErrors; + } + try { + a.nullable().parse(bad); + } catch (error) { + expect((error as z.ZodError).formErrors).toEqual(expected); + } +} + +test("Should have error messages appropriate for the underlying type", () => { + checkErrors(z.string().min(2), 1); + z.string().min(2).nullable().parse(null); + checkErrors(z.number().gte(2), 1); + z.number().gte(2).nullable().parse(null); + checkErrors(z.boolean(), ""); + z.boolean().nullable().parse(null); + checkErrors(z.null(), null); + z.null().nullable().parse(null); + checkErrors(z.null(), {}); + z.null().nullable().parse(null); + checkErrors(z.object({}), 1); + z.object({}).nullable().parse(null); + checkErrors(z.tuple([]), 1); + z.tuple([]).nullable().parse(null); + checkErrors(z.unknown(), 1); + z.unknown().nullable().parse(null); +}); + +test("unwrap", () => { + const unwrapped = z.string().nullable().unwrap(); + expect(unwrapped).toBeInstanceOf(z.ZodString); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/number.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/number.test.ts new file mode 100644 index 000000000..db3f73b2d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/number.test.ts @@ -0,0 +1,176 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +const gtFive = z.number().gt(5); +const gteFive = z.number().gte(-5).gte(5); +const minFive = z.number().min(0).min(5); +const ltFive = z.number().lte(10).lt(5); +const lteFive = z.number().lte(5); +const maxFive = z.number().max(10).max(5); +const intNum = z.number().int(); +const positive = z.number().positive(); +const negative = z.number().negative(); +const nonpositive = z.number().nonpositive(); +const nonnegative = z.number().nonnegative(); +const multipleOfFive = z.number().multipleOf(5); +const multipleOfNegativeFive = z.number().multipleOf(-5); +const finite = z.number().finite(); +const safe = z.number().safe(); +const stepPointOne = z.number().step(0.1); +const stepPointZeroZeroZeroOne = z.number().step(0.0001); +const stepSixPointFour = z.number().step(6.4); + +test("passing validations", () => { + z.number().parse(1); + z.number().parse(1.5); + z.number().parse(0); + z.number().parse(-1.5); + z.number().parse(-1); + z.number().parse(Number.POSITIVE_INFINITY); + z.number().parse(Number.NEGATIVE_INFINITY); + gtFive.parse(6); + gtFive.parse(Number.POSITIVE_INFINITY); + gteFive.parse(5); + gteFive.parse(Number.POSITIVE_INFINITY); + minFive.parse(5); + minFive.parse(Number.POSITIVE_INFINITY); + ltFive.parse(4); + ltFive.parse(Number.NEGATIVE_INFINITY); + lteFive.parse(5); + lteFive.parse(Number.NEGATIVE_INFINITY); + maxFive.parse(5); + maxFive.parse(Number.NEGATIVE_INFINITY); + intNum.parse(4); + positive.parse(1); + positive.parse(Number.POSITIVE_INFINITY); + negative.parse(-1); + negative.parse(Number.NEGATIVE_INFINITY); + nonpositive.parse(0); + nonpositive.parse(-1); + nonpositive.parse(Number.NEGATIVE_INFINITY); + nonnegative.parse(0); + nonnegative.parse(1); + nonnegative.parse(Number.POSITIVE_INFINITY); + multipleOfFive.parse(15); + multipleOfFive.parse(-15); + multipleOfNegativeFive.parse(-15); + multipleOfNegativeFive.parse(15); + finite.parse(123); + safe.parse(Number.MIN_SAFE_INTEGER); + safe.parse(Number.MAX_SAFE_INTEGER); + stepPointOne.parse(6); + stepPointOne.parse(6.1); + stepPointOne.parse(6.1); + stepSixPointFour.parse(12.8); + stepPointZeroZeroZeroOne.parse(3.01); +}); + +test("failing validations", () => { + expect(() => ltFive.parse(5)).toThrow(); + expect(() => lteFive.parse(6)).toThrow(); + expect(() => maxFive.parse(6)).toThrow(); + expect(() => gtFive.parse(5)).toThrow(); + expect(() => gteFive.parse(4)).toThrow(); + expect(() => minFive.parse(4)).toThrow(); + expect(() => intNum.parse(3.14)).toThrow(); + expect(() => positive.parse(0)).toThrow(); + expect(() => positive.parse(-1)).toThrow(); + expect(() => negative.parse(0)).toThrow(); + expect(() => negative.parse(1)).toThrow(); + expect(() => nonpositive.parse(1)).toThrow(); + expect(() => nonnegative.parse(-1)).toThrow(); + expect(() => multipleOfFive.parse(7.5)).toThrow(); + expect(() => multipleOfFive.parse(-7.5)).toThrow(); + expect(() => multipleOfNegativeFive.parse(-7.5)).toThrow(); + expect(() => multipleOfNegativeFive.parse(7.5)).toThrow(); + expect(() => finite.parse(Number.POSITIVE_INFINITY)).toThrow(); + expect(() => finite.parse(Number.NEGATIVE_INFINITY)).toThrow(); + expect(() => safe.parse(Number.MIN_SAFE_INTEGER - 1)).toThrow(); + expect(() => safe.parse(Number.MAX_SAFE_INTEGER + 1)).toThrow(); + + expect(() => stepPointOne.parse(6.11)).toThrow(); + expect(() => stepPointOne.parse(6.1000000001)).toThrow(); + expect(() => stepSixPointFour.parse(6.41)).toThrow(); +}); + +test("parse NaN", () => { + expect(() => z.number().parse(Number.NaN)).toThrow(); +}); + +test("min max getters", () => { + expect(z.number().minValue).toBeNull; + expect(ltFive.minValue).toBeNull; + expect(lteFive.minValue).toBeNull; + expect(maxFive.minValue).toBeNull; + expect(negative.minValue).toBeNull; + expect(nonpositive.minValue).toBeNull; + expect(intNum.minValue).toBeNull; + expect(multipleOfFive.minValue).toBeNull; + expect(finite.minValue).toBeNull; + expect(gtFive.minValue).toEqual(5); + expect(gteFive.minValue).toEqual(5); + expect(minFive.minValue).toEqual(5); + expect(minFive.min(10).minValue).toEqual(10); + expect(positive.minValue).toEqual(0); + expect(nonnegative.minValue).toEqual(0); + expect(safe.minValue).toEqual(Number.MIN_SAFE_INTEGER); + + expect(z.number().maxValue).toBeNull; + expect(gtFive.maxValue).toBeNull; + expect(gteFive.maxValue).toBeNull; + expect(minFive.maxValue).toBeNull; + expect(positive.maxValue).toBeNull; + expect(nonnegative.maxValue).toBeNull; + expect(intNum.minValue).toBeNull; + expect(multipleOfFive.minValue).toBeNull; + expect(finite.minValue).toBeNull; + expect(ltFive.maxValue).toEqual(5); + expect(lteFive.maxValue).toEqual(5); + expect(maxFive.maxValue).toEqual(5); + expect(maxFive.max(1).maxValue).toEqual(1); + expect(negative.maxValue).toEqual(0); + expect(nonpositive.maxValue).toEqual(0); + expect(safe.maxValue).toEqual(Number.MAX_SAFE_INTEGER); +}); + +test("int getter", () => { + expect(z.number().isInt).toEqual(false); + expect(z.number().multipleOf(1.5).isInt).toEqual(false); + expect(gtFive.isInt).toEqual(false); + expect(gteFive.isInt).toEqual(false); + expect(minFive.isInt).toEqual(false); + expect(positive.isInt).toEqual(false); + expect(nonnegative.isInt).toEqual(false); + expect(finite.isInt).toEqual(false); + expect(ltFive.isInt).toEqual(false); + expect(lteFive.isInt).toEqual(false); + expect(maxFive.isInt).toEqual(false); + expect(negative.isInt).toEqual(false); + expect(nonpositive.isInt).toEqual(false); + expect(safe.isInt).toEqual(false); + + expect(intNum.isInt).toEqual(true); + expect(multipleOfFive.isInt).toEqual(true); +}); + +test("finite getter", () => { + expect(z.number().isFinite).toEqual(false); + expect(gtFive.isFinite).toEqual(false); + expect(gteFive.isFinite).toEqual(false); + expect(minFive.isFinite).toEqual(false); + expect(positive.isFinite).toEqual(false); + expect(nonnegative.isFinite).toEqual(false); + expect(ltFive.isFinite).toEqual(false); + expect(lteFive.isFinite).toEqual(false); + expect(maxFive.isFinite).toEqual(false); + expect(negative.isFinite).toEqual(false); + expect(nonpositive.isFinite).toEqual(false); + + expect(finite.isFinite).toEqual(true); + expect(intNum.isFinite).toEqual(true); + expect(multipleOfFive.isFinite).toEqual(true); + expect(z.number().min(5).max(10).isFinite).toEqual(true); + expect(safe.isFinite).toEqual(true); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/object-augmentation.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/object-augmentation.test.ts new file mode 100644 index 000000000..964ea3dae --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/object-augmentation.test.ts @@ -0,0 +1,29 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +test("object augmentation", () => { + const Animal = z + .object({ + species: z.string(), + }) + .augment({ + population: z.number(), + }); + // overwrites `species` + const ModifiedAnimal = Animal.augment({ + species: z.array(z.string()), + }); + ModifiedAnimal.parse({ + species: ["asd"], + population: 1324, + }); + + const bad = () => + ModifiedAnimal.parse({ + species: "asdf", + population: 1324, + } as any); + expect(bad).toThrow(); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts new file mode 100644 index 000000000..293ebf0c7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts @@ -0,0 +1,29 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +const RealSet = Set; +const RealMap = Map; +const RealDate = Date; + +test("doesn’t throw when Date is undefined", () => { + delete (globalThis as any).Date; + const result = z.object({}).safeParse({}); + expect(result.success).toEqual(true); + globalThis.Date = RealDate; +}); + +test("doesn’t throw when Set is undefined", () => { + delete (globalThis as any).Set; + const result = z.object({}).safeParse({}); + expect(result.success).toEqual(true); + globalThis.Set = RealSet; +}); + +test("doesn’t throw when Map is undefined", () => { + delete (globalThis as any).Map; + const result = z.object({}).safeParse({}); + expect(result.success).toEqual(true); + globalThis.Map = RealMap; +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/object.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/object.test.ts new file mode 100644 index 000000000..1427dc278 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/object.test.ts @@ -0,0 +1,434 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +const Test = z.object({ + f1: z.number(), + f2: z.string().optional(), + f3: z.string().nullable(), + f4: z.array(z.object({ t: z.union([z.string(), z.boolean()]) })), +}); + +test("object type inference", () => { + type TestType = { + f1: number; + f2?: string | undefined; + f3: string | null; + f4: { t: string | boolean }[]; + }; + + util.assertEqual, TestType>(true); +}); + +test("unknown throw", () => { + const asdf: unknown = 35; + expect(() => Test.parse(asdf)).toThrow(); +}); + +test("shape() should return schema of particular key", () => { + const f1Schema = Test.shape.f1; + const f2Schema = Test.shape.f2; + const f3Schema = Test.shape.f3; + const f4Schema = Test.shape.f4; + + expect(f1Schema).toBeInstanceOf(z.ZodNumber); + expect(f2Schema).toBeInstanceOf(z.ZodOptional); + expect(f3Schema).toBeInstanceOf(z.ZodNullable); + expect(f4Schema).toBeInstanceOf(z.ZodArray); +}); + +test("correct parsing", () => { + Test.parse({ + f1: 12, + f2: "string", + f3: "string", + f4: [ + { + t: "string", + }, + ], + }); + + Test.parse({ + f1: 12, + f3: null, + f4: [ + { + t: false, + }, + ], + }); +}); + +test("incorrect #1", () => { + expect(() => Test.parse({} as any)).toThrow(); +}); + +test("nonstrict by default", () => { + z.object({ points: z.number() }).parse({ + points: 2314, + unknown: "asdf", + }); +}); + +const data = { + points: 2314, + unknown: "asdf", +}; + +test("strip by default", () => { + const val = z.object({ points: z.number() }).parse(data); + expect(val).toEqual({ points: 2314 }); +}); + +test("unknownkeys override", () => { + const val = z.object({ points: z.number() }).strict().passthrough().strip().nonstrict().parse(data); + + expect(val).toEqual(data); +}); + +test("passthrough unknown", () => { + const val = z.object({ points: z.number() }).passthrough().parse(data); + + expect(val).toEqual(data); +}); + +test("strip unknown", () => { + const val = z.object({ points: z.number() }).strip().parse(data); + + expect(val).toEqual({ points: 2314 }); +}); + +test("strict", () => { + const val = z.object({ points: z.number() }).strict().safeParse(data); + + expect(val.success).toEqual(false); +}); + +test("catchall inference", () => { + const o1 = z + .object({ + first: z.string(), + }) + .catchall(z.number()); + + const d1 = o1.parse({ first: "asdf", num: 1243 }); + util.assertEqual(true); + util.assertEqual(true); +}); + +test("catchall overrides strict", () => { + const o1 = z.object({ first: z.string().optional() }).strict().catchall(z.number()); + + // should run fine + // setting a catchall overrides the unknownKeys behavior + o1.parse({ + asdf: 1234, + }); + + // should only run catchall validation + // against unknown keys + o1.parse({ + first: "asdf", + asdf: 1234, + }); +}); + +test("catchall overrides strict", () => { + const o1 = z + .object({ + first: z.string(), + }) + .strict() + .catchall(z.number()); + + // should run fine + // setting a catchall overrides the unknownKeys behavior + o1.parse({ + first: "asdf", + asdf: 1234, + }); +}); + +test("test that optional keys are unset", () => { + const SNamedEntity = z.object({ + id: z.string(), + set: z.string().optional(), + unset: z.string().optional(), + }); + const result = SNamedEntity.parse({ + id: "asdf", + set: undefined, + }); + // eslint-disable-next-line ban/ban + expect(Object.keys(result)).toEqual(["id", "set"]); +}); + +test("test catchall parsing", async () => { + const result = z.object({ name: z.string() }).catchall(z.number()).parse({ name: "Foo", validExtraKey: 61 }); + + expect(result).toEqual({ name: "Foo", validExtraKey: 61 }); + + const result2 = z + .object({ name: z.string() }) + .catchall(z.number()) + .safeParse({ name: "Foo", validExtraKey: 61, invalid: "asdf" }); + + expect(result2.success).toEqual(false); +}); + +test("test nonexistent keys", async () => { + const Schema = z.union([z.object({ a: z.string() }), z.object({ b: z.number() })]); + const obj = { a: "A" }; + const result = await Schema.spa(obj); // Works with 1.11.10, breaks with 2.0.0-beta.21 + expect(result.success).toBe(true); +}); + +test("test async union", async () => { + const Schema2 = z.union([ + z.object({ + ty: z.string(), + }), + z.object({ + ty: z.number(), + }), + ]); + + const obj = { ty: "A" }; + const result = await Schema2.spa(obj); // Works with 1.11.10, breaks with 2.0.0-beta.21 + expect(result.success).toEqual(true); +}); + +test("test inferred merged type", async () => { + const asdf = z.object({ a: z.string() }).merge(z.object({ a: z.number() })); + type asdf = z.infer; + util.assertEqual(true); +}); + +test("inferred merged object type with optional properties", async () => { + const Merged = z + .object({ a: z.string(), b: z.string().optional() }) + .merge(z.object({ a: z.string().optional(), b: z.string() })); + type Merged = z.infer; + util.assertEqual(true); + // todo + // util.assertEqual(true); +}); + +test("inferred unioned object type with optional properties", async () => { + const Unioned = z.union([ + z.object({ a: z.string(), b: z.string().optional() }), + z.object({ a: z.string().optional(), b: z.string() }), + ]); + type Unioned = z.infer; + util.assertEqual(true); +}); + +test("inferred enum type", async () => { + const Enum = z.object({ a: z.string(), b: z.string().optional() }).keyof(); + + expect(Enum.Values).toEqual({ + a: "a", + b: "b", + }); + expect(Enum.enum).toEqual({ + a: "a", + b: "b", + }); + expect(Enum._def.values).toEqual(["a", "b"]); + type Enum = z.infer; + util.assertEqual(true); +}); + +test("inferred partial object type with optional properties", async () => { + const Partial = z.object({ a: z.string(), b: z.string().optional() }).partial(); + type Partial = z.infer; + util.assertEqual(true); +}); + +test("inferred picked object type with optional properties", async () => { + const Picked = z.object({ a: z.string(), b: z.string().optional() }).pick({ b: true }); + type Picked = z.infer; + util.assertEqual(true); +}); + +test("inferred type for unknown/any keys", () => { + const myType = z.object({ + anyOptional: z.any().optional(), + anyRequired: z.any(), + unknownOptional: z.unknown().optional(), + unknownRequired: z.unknown(), + }); + type myType = z.infer; + util.assertEqual< + myType, + { + anyOptional?: any; + anyRequired?: any; + unknownOptional?: unknown; + unknownRequired?: unknown; + } + >(true); +}); + +test("setKey", () => { + const base = z.object({ name: z.string() }); + const withNewKey = base.setKey("age", z.number()); + + type withNewKey = z.infer; + util.assertEqual(true); + withNewKey.parse({ name: "asdf", age: 1234 }); +}); + +test("strictcreate", async () => { + const strictObj = z.strictObject({ + name: z.string(), + }); + + const syncResult = strictObj.safeParse({ name: "asdf", unexpected: 13 }); + expect(syncResult.success).toEqual(false); + + const asyncResult = await strictObj.spa({ name: "asdf", unexpected: 13 }); + expect(asyncResult.success).toEqual(false); +}); + +test("object with refine", async () => { + const schema = z + .object({ + a: z.string().default("foo"), + b: z.number(), + }) + .refine(() => true); + expect(schema.parse({ b: 5 })).toEqual({ b: 5, a: "foo" }); + const result = await schema.parseAsync({ b: 5 }); + expect(result).toEqual({ b: 5, a: "foo" }); +}); + +test("intersection of object with date", async () => { + const schema = z.object({ + a: z.date(), + }); + expect(schema.and(schema).parse({ a: new Date(1637353595983) })).toEqual({ + a: new Date(1637353595983), + }); + const result = await schema.parseAsync({ a: new Date(1637353595983) }); + expect(result).toEqual({ a: new Date(1637353595983) }); +}); + +test("intersection of object with refine with date", async () => { + const schema = z + .object({ + a: z.date(), + }) + .refine(() => true); + expect(schema.and(schema).parse({ a: new Date(1637353595983) })).toEqual({ + a: new Date(1637353595983), + }); + const result = await schema.parseAsync({ a: new Date(1637353595983) }); + expect(result).toEqual({ a: new Date(1637353595983) }); +}); + +test("constructor key", () => { + const person = z + .object({ + name: z.string(), + }) + .strict(); + + expect(() => + person.parse({ + name: "bob dylan", + constructor: 61, + }) + ).toThrow(); +}); + +test("constructor key", () => { + const Example = z.object({ + prop: z.string(), + opt: z.number().optional(), + arr: z.string().array(), + }); + + type Example = z.infer; + util.assertEqual(true); +}); + +test("unknownkeys merging", () => { + // This one is "strict" + const schemaA = z + .object({ + a: z.string(), + }) + .strict(); + + // This one is "strip" + const schemaB = z + .object({ + b: z.string(), + }) + .catchall(z.string()); + + const mergedSchema = schemaA.merge(schemaB); + type mergedSchema = typeof mergedSchema; + util.assertEqual(true); + expect(mergedSchema._def.unknownKeys).toEqual("strip"); + + util.assertEqual(true); + expect(mergedSchema._def.catchall instanceof z.ZodString).toEqual(true); +}); + +const personToExtend = z.object({ + firstName: z.string(), + lastName: z.string(), +}); + +test("extend() should return schema with new key", () => { + const PersonWithNickname = personToExtend.extend({ nickName: z.string() }); + type PersonWithNickname = z.infer; + + const expected = { firstName: "f", nickName: "n", lastName: "l" }; + const actual = PersonWithNickname.parse(expected); + + expect(actual).toEqual(expected); + util.assertEqual(true); + util.assertEqual(true); +}); + +test("extend() should have power to override existing key", () => { + const PersonWithNumberAsLastName = personToExtend.extend({ + lastName: z.number(), + }); + type PersonWithNumberAsLastName = z.infer; + + const expected = { firstName: "f", lastName: 42 }; + const actual = PersonWithNumberAsLastName.parse(expected); + + expect(actual).toEqual(expected); + util.assertEqual(true); +}); + +test("passthrough index signature", () => { + const a = z.object({ a: z.string() }); + type a = z.infer; + util.assertEqual<{ a: string }, a>(true); + const b = a.passthrough(); + type b = z.infer; + util.assertEqual<{ a: string } & { [k: string]: unknown }, b>(true); +}); + +test("xor", () => { + type Without = { [P in Exclude]?: never }; + type XOR = T extends object ? (U extends object ? (Without & U) | (Without & T) : U) : T; + + type A = { name: string; a: number }; + type B = { name: string; b: number }; + type C = XOR; + type Outer = { data: C }; + + const _Outer: z.ZodType = z.object({ + data: z.union([z.object({ name: z.string(), a: z.number() }), z.object({ name: z.string(), b: z.number() })]), + }); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/optional.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/optional.test.ts new file mode 100644 index 000000000..016c954fc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/optional.test.ts @@ -0,0 +1,42 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +function checkErrors(a: z.ZodTypeAny, bad: any) { + let expected: any; + try { + a.parse(bad); + } catch (error) { + expected = (error as z.ZodError).formErrors; + } + try { + a.optional().parse(bad); + } catch (error) { + expect((error as z.ZodError).formErrors).toEqual(expected); + } +} + +test("Should have error messages appropriate for the underlying type", () => { + checkErrors(z.string().min(2), 1); + z.string().min(2).optional().parse(undefined); + checkErrors(z.number().gte(2), 1); + z.number().gte(2).optional().parse(undefined); + checkErrors(z.boolean(), ""); + z.boolean().optional().parse(undefined); + checkErrors(z.undefined(), null); + z.undefined().optional().parse(undefined); + checkErrors(z.null(), {}); + z.null().optional().parse(undefined); + checkErrors(z.object({}), 1); + z.object({}).optional().parse(undefined); + checkErrors(z.tuple([]), 1); + z.tuple([]).optional().parse(undefined); + checkErrors(z.unknown(), 1); + z.unknown().optional().parse(undefined); +}); + +test("unwrap", () => { + const unwrapped = z.string().optional().unwrap(); + expect(unwrapped).toBeInstanceOf(z.ZodString); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/parseUtil.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/parseUtil.test.ts new file mode 100644 index 000000000..8882d4c34 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/parseUtil.test.ts @@ -0,0 +1,23 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import { type SyncParseReturnType, isAborted, isDirty, isValid } from "../helpers/parseUtil.js"; + +test("parseUtil isInvalid should use structural typing", () => { + // Test for issue #556: https://github.com/colinhacks/zod/issues/556 + const aborted: SyncParseReturnType = { status: "aborted" }; + const dirty: SyncParseReturnType = { status: "dirty", value: "whatever" }; + const valid: SyncParseReturnType = { status: "valid", value: "whatever" }; + + expect(isAborted(aborted)).toBe(true); + expect(isAborted(dirty)).toBe(false); + expect(isAborted(valid)).toBe(false); + + expect(isDirty(aborted)).toBe(false); + expect(isDirty(dirty)).toBe(true); + expect(isDirty(valid)).toBe(false); + + expect(isValid(aborted)).toBe(false); + expect(isValid(dirty)).toBe(false); + expect(isValid(valid)).toBe(true); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/parser.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/parser.test.ts new file mode 100644 index 000000000..6e685f9f5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/parser.test.ts @@ -0,0 +1,41 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +test("parse strict object with unknown keys", () => { + expect(() => + z + .object({ name: z.string() }) + .strict() + .parse({ name: "bill", unknownKey: 12 } as any) + ).toThrow(); +}); + +test("parse nonstrict object with unknown keys", () => { + z.object({ name: z.string() }).nonstrict().parse({ name: "bill", unknownKey: 12 }); +}); + +test("invalid left side of intersection", () => { + expect(() => z.intersection(z.string(), z.number()).parse(12 as any)).toThrow(); +}); + +test("invalid right side of intersection", () => { + expect(() => z.intersection(z.string(), z.number()).parse("12" as any)).toThrow(); +}); + +test("parsing non-array in tuple schema", () => { + expect(() => z.tuple([]).parse("12" as any)).toThrow(); +}); + +test("incorrect num elements in tuple", () => { + expect(() => z.tuple([]).parse(["asdf"] as any)).toThrow(); +}); + +test("invalid enum value", () => { + expect(() => z.enum(["Blue"]).parse("Red" as any)).toThrow(); +}); + +test("parsing unknown", () => { + z.string().parse("Red" as unknown); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/partials.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/partials.test.ts new file mode 100644 index 000000000..a2fb6ed9c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/partials.test.ts @@ -0,0 +1,243 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { ZodNullable, ZodOptional } from "zod/v3"; +import { util } from "../helpers/util.js"; + +const nested = z.object({ + name: z.string(), + age: z.number(), + outer: z.object({ + inner: z.string(), + }), + array: z.array(z.object({ asdf: z.string() })), +}); + +test("shallow inference", () => { + const shallow = nested.partial(); + type shallow = z.infer; + type correct = { + name?: string | undefined; + age?: number | undefined; + outer?: { inner: string } | undefined; + array?: { asdf: string }[]; + }; + util.assertEqual(true); +}); + +test("shallow partial parse", () => { + const shallow = nested.partial(); + shallow.parse({}); + shallow.parse({ + name: "asdf", + age: 23143, + }); +}); + +test("deep partial inference", () => { + const deep = nested.deepPartial(); + const asdf = deep.shape.array.unwrap().element.shape.asdf.unwrap(); + asdf.parse("asdf"); + type deep = z.infer; + type correct = { + array?: { asdf?: string }[]; + name?: string | undefined; + age?: number | undefined; + outer?: { inner?: string | undefined } | undefined; + }; + + util.assertEqual(true); +}); + +test("deep partial parse", () => { + const deep = nested.deepPartial(); + + expect(deep.shape.name instanceof z.ZodOptional).toBe(true); + expect(deep.shape.outer instanceof z.ZodOptional).toBe(true); + expect(deep.shape.outer._def.innerType instanceof z.ZodObject).toBe(true); + expect(deep.shape.outer._def.innerType.shape.inner instanceof z.ZodOptional).toBe(true); + expect(deep.shape.outer._def.innerType.shape.inner._def.innerType instanceof z.ZodString).toBe(true); +}); + +test("deep partial runtime tests", () => { + const deep = nested.deepPartial(); + deep.parse({}); + deep.parse({ + outer: {}, + }); + deep.parse({ + name: "asdf", + age: 23143, + outer: { + inner: "adsf", + }, + }); +}); + +test("deep partial optional/nullable", () => { + const schema = z + .object({ + name: z.string().optional(), + age: z.number().nullable(), + }) + .deepPartial(); + + expect(schema.shape.name.unwrap()).toBeInstanceOf(ZodOptional); + expect(schema.shape.age.unwrap()).toBeInstanceOf(ZodNullable); +}); + +test("deep partial tuple", () => { + const schema = z + .object({ + tuple: z.tuple([ + z.object({ + name: z.string().optional(), + age: z.number().nullable(), + }), + ]), + }) + .deepPartial(); + + expect(schema.shape.tuple.unwrap().items[0].shape.name).toBeInstanceOf(ZodOptional); +}); + +test("deep partial inference", () => { + const mySchema = z.object({ + name: z.string(), + array: z.array(z.object({ asdf: z.string() })), + tuple: z.tuple([z.object({ value: z.string() })]), + }); + + const partialed = mySchema.deepPartial(); + type partialed = z.infer; + type expected = { + name?: string | undefined; + array?: + | { + asdf?: string | undefined; + }[] + | undefined; + tuple?: [{ value?: string }] | undefined; + }; + util.assertEqual(true); +}); + +test("required", () => { + const object = z.object({ + name: z.string(), + age: z.number().optional(), + field: z.string().optional().default("asdf"), + nullableField: z.number().nullable(), + nullishField: z.string().nullish(), + }); + + const requiredObject = object.required(); + expect(requiredObject.shape.name).toBeInstanceOf(z.ZodString); + expect(requiredObject.shape.age).toBeInstanceOf(z.ZodNumber); + expect(requiredObject.shape.field).toBeInstanceOf(z.ZodDefault); + expect(requiredObject.shape.nullableField).toBeInstanceOf(z.ZodNullable); + expect(requiredObject.shape.nullishField).toBeInstanceOf(z.ZodNullable); +}); + +test("required inference", () => { + const object = z.object({ + name: z.string(), + age: z.number().optional(), + field: z.string().optional().default("asdf"), + nullableField: z.number().nullable(), + nullishField: z.string().nullish(), + }); + + const requiredObject = object.required(); + + type required = z.infer; + type expected = { + name: string; + age: number; + field: string; + nullableField: number | null; + nullishField: string | null; + }; + util.assertEqual(true); +}); + +test("required with mask", () => { + const object = z.object({ + name: z.string(), + age: z.number().optional(), + field: z.string().optional().default("asdf"), + country: z.string().optional(), + }); + + const requiredObject = object.required({ age: true }); + expect(requiredObject.shape.name).toBeInstanceOf(z.ZodString); + expect(requiredObject.shape.age).toBeInstanceOf(z.ZodNumber); + expect(requiredObject.shape.field).toBeInstanceOf(z.ZodDefault); + expect(requiredObject.shape.country).toBeInstanceOf(z.ZodOptional); +}); + +test("required with mask -- ignore falsy values", () => { + const object = z.object({ + name: z.string(), + age: z.number().optional(), + field: z.string().optional().default("asdf"), + country: z.string().optional(), + }); + + // @ts-expect-error + const requiredObject = object.required({ age: true, country: false }); + expect(requiredObject.shape.name).toBeInstanceOf(z.ZodString); + expect(requiredObject.shape.age).toBeInstanceOf(z.ZodNumber); + expect(requiredObject.shape.field).toBeInstanceOf(z.ZodDefault); + expect(requiredObject.shape.country).toBeInstanceOf(z.ZodOptional); +}); + +test("partial with mask", async () => { + const object = z.object({ + name: z.string(), + age: z.number().optional(), + field: z.string().optional().default("asdf"), + country: z.string(), + }); + + const masked = object.partial({ age: true, field: true, name: true }).strict(); + + expect(masked.shape.name).toBeInstanceOf(z.ZodOptional); + expect(masked.shape.age).toBeInstanceOf(z.ZodOptional); + expect(masked.shape.field).toBeInstanceOf(z.ZodOptional); + expect(masked.shape.country).toBeInstanceOf(z.ZodString); + + masked.parse({ country: "US" }); + await masked.parseAsync({ country: "US" }); +}); + +test("partial with mask -- ignore falsy values", async () => { + const object = z.object({ + name: z.string(), + age: z.number().optional(), + field: z.string().optional().default("asdf"), + country: z.string(), + }); + + // @ts-expect-error + const masked = object.partial({ name: true, country: false }).strict(); + + expect(masked.shape.name).toBeInstanceOf(z.ZodOptional); + expect(masked.shape.age).toBeInstanceOf(z.ZodOptional); + expect(masked.shape.field).toBeInstanceOf(z.ZodDefault); + expect(masked.shape.country).toBeInstanceOf(z.ZodString); + + masked.parse({ country: "US" }); + await masked.parseAsync({ country: "US" }); +}); + +test("deeppartial array", () => { + const schema = z.object({ array: z.string().array().min(42) }).deepPartial(); + + // works as expected + schema.parse({}); + + // should be false, but is true + expect(schema.safeParse({ array: [] }).success).toBe(false); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/pickomit.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/pickomit.test.ts new file mode 100644 index 000000000..b1056e5af --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/pickomit.test.ts @@ -0,0 +1,111 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +const fish = z.object({ + name: z.string(), + age: z.number(), + nested: z.object({}), +}); + +test("pick type inference", () => { + const nameonlyFish = fish.pick({ name: true }); + type nameonlyFish = z.infer; + util.assertEqual(true); +}); + +test("pick parse - success", () => { + const nameonlyFish = fish.pick({ name: true }); + nameonlyFish.parse({ name: "bob" }); + + // @ts-expect-error checking runtime picks `name` only. + const anotherNameonlyFish = fish.pick({ name: true, age: false }); + anotherNameonlyFish.parse({ name: "bob" }); +}); + +test("pick parse - fail", () => { + fish.pick({ name: true }).parse({ name: "12" } as any); + fish.pick({ name: true }).parse({ name: "bob", age: 12 } as any); + fish.pick({ age: true }).parse({ age: 12 } as any); + + const nameonlyFish = fish.pick({ name: true }).strict(); + const bad1 = () => nameonlyFish.parse({ name: 12 } as any); + const bad2 = () => nameonlyFish.parse({ name: "bob", age: 12 } as any); + const bad3 = () => nameonlyFish.parse({ age: 12 } as any); + + // @ts-expect-error checking runtime picks `name` only. + const anotherNameonlyFish = fish.pick({ name: true, age: false }).strict(); + const bad4 = () => anotherNameonlyFish.parse({ name: "bob", age: 12 } as any); + + expect(bad1).toThrow(); + expect(bad2).toThrow(); + expect(bad3).toThrow(); + expect(bad4).toThrow(); +}); + +test("omit type inference", () => { + const nonameFish = fish.omit({ name: true }); + type nonameFish = z.infer; + util.assertEqual(true); +}); + +test("omit parse - success", () => { + const nonameFish = fish.omit({ name: true }); + nonameFish.parse({ age: 12, nested: {} }); + + // @ts-expect-error checking runtime omits `name` only. + const anotherNonameFish = fish.omit({ name: true, age: false }); + anotherNonameFish.parse({ age: 12, nested: {} }); +}); + +test("omit parse - fail", () => { + const nonameFish = fish.omit({ name: true }); + const bad1 = () => nonameFish.parse({ name: 12 } as any); + const bad2 = () => nonameFish.parse({ age: 12 } as any); + const bad3 = () => nonameFish.parse({} as any); + + // @ts-expect-error checking runtime omits `name` only. + const anotherNonameFish = fish.omit({ name: true, age: false }); + const bad4 = () => anotherNonameFish.parse({ nested: {} } as any); + + expect(bad1).toThrow(); + expect(bad2).toThrow(); + expect(bad3).toThrow(); + expect(bad4).toThrow(); +}); + +test("nonstrict inference", () => { + const laxfish = fish.pick({ name: true }).catchall(z.any()); + type laxfish = z.infer; + util.assertEqual(true); +}); + +test("nonstrict parsing - pass", () => { + const laxfish = fish.passthrough().pick({ name: true }); + laxfish.parse({ name: "asdf", whatever: "asdf" }); + laxfish.parse({ name: "asdf", age: 12, nested: {} }); +}); + +test("nonstrict parsing - fail", () => { + const laxfish = fish.passthrough().pick({ name: true }); + const bad = () => laxfish.parse({ whatever: "asdf" } as any); + expect(bad).toThrow(); +}); + +test("pick/omit/required/partial - do not allow unknown keys", () => { + const schema = z.object({ + name: z.string(), + age: z.number(), + }); + + // @ts-expect-error + schema.pick({ $unknown: true }); + // @ts-expect-error + schema.omit({ $unknown: true }); + // @ts-expect-error + schema.required({ $unknown: true }); + // @ts-expect-error + schema.partial({ $unknown: true }); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/pipeline.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/pipeline.test.ts new file mode 100644 index 000000000..cc94fc554 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/pipeline.test.ts @@ -0,0 +1,29 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +test("string to number pipeline", () => { + const schema = z.string().transform(Number).pipe(z.number()); + expect(schema.parse("1234")).toEqual(1234); +}); + +test("string to number pipeline async", async () => { + const schema = z + .string() + .transform(async (val) => Number(val)) + .pipe(z.number()); + expect(await schema.parseAsync("1234")).toEqual(1234); +}); + +test("break if dirty", () => { + const schema = z + .string() + .refine((c) => c === "1234") + .transform(async (val) => Number(val)) + .pipe(z.number().refine((v) => v < 100)); + const r1: any = schema.safeParse("12345"); + expect(r1.error.issues.length).toBe(1); + const r2: any = schema.safeParse("3"); + expect(r2.error.issues.length).toBe(1); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/preprocess.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/preprocess.test.ts new file mode 100644 index 000000000..7e1b5a1d7 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/preprocess.test.ts @@ -0,0 +1,186 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +test("preprocess", () => { + const schema = z.preprocess((data) => [data], z.string().array()); + + const value = schema.parse("asdf"); + expect(value).toEqual(["asdf"]); + util.assertEqual<(typeof schema)["_input"], unknown>(true); +}); + +test("async preprocess", async () => { + const schema = z.preprocess(async (data) => [data], z.string().array()); + + const value = await schema.parseAsync("asdf"); + expect(value).toEqual(["asdf"]); +}); + +test("preprocess ctx.addIssue with parse", () => { + expect(() => { + z.preprocess((data, ctx) => { + ctx.addIssue({ + code: "custom", + message: `${data} is not one of our allowed strings`, + }); + return data; + }, z.string()).parse("asdf"); + }).toThrow( + JSON.stringify( + [ + { + code: "custom", + message: "asdf is not one of our allowed strings", + path: [], + }, + ], + null, + 2 + ) + ); +}); + +test("preprocess ctx.addIssue non-fatal by default", () => { + try { + z.preprocess((data, ctx) => { + ctx.addIssue({ + code: "custom", + message: `custom error`, + }); + return data; + }, z.string()).parse(1234); + } catch (err) { + z.ZodError.assert(err); + expect(err.issues.length).toEqual(2); + } +}); + +test("preprocess ctx.addIssue fatal true", () => { + try { + z.preprocess((data, ctx) => { + ctx.addIssue({ + code: "custom", + message: `custom error`, + fatal: true, + }); + return data; + }, z.string()).parse(1234); + } catch (err) { + z.ZodError.assert(err); + expect(err.issues.length).toEqual(1); + } +}); + +test("async preprocess ctx.addIssue with parse", async () => { + const schema = z.preprocess(async (data, ctx) => { + ctx.addIssue({ + code: "custom", + message: `custom error`, + }); + return data; + }, z.string()); + + expect(await schema.safeParseAsync("asdf")).toMatchInlineSnapshot(` + { + "error": [ZodError: [ + { + "code": "custom", + "message": "custom error", + "path": [] + } + ]], + "success": false, + } + `); +}); + +test("preprocess ctx.addIssue with parseAsync", async () => { + const result = await z + .preprocess(async (data, ctx) => { + ctx.addIssue({ + code: "custom", + message: `${data} is not one of our allowed strings`, + }); + return data; + }, z.string()) + .safeParseAsync("asdf"); + + expect(JSON.parse(JSON.stringify(result))).toEqual({ + success: false, + error: { + issues: [ + { + code: "custom", + message: "asdf is not one of our allowed strings", + path: [], + }, + ], + name: "ZodError", + }, + }); +}); + +test("z.NEVER in preprocess", () => { + const foo = z.preprocess((val, ctx) => { + if (!val) { + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "bad" }); + return z.NEVER; + } + return val; + }, z.number()); + + type foo = z.infer; + util.assertEqual(true); + const arg = foo.safeParse(undefined); + expect(arg.error!.issues).toHaveLength(2); + expect(arg.error!.issues[0].message).toEqual("bad"); +}); +test("preprocess as the second property of object", () => { + const schema = z.object({ + nonEmptyStr: z.string().min(1), + positiveNum: z.preprocess((v) => Number(v), z.number().positive()), + }); + const result = schema.safeParse({ + nonEmptyStr: "", + positiveNum: "", + }); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues.length).toEqual(2); + expect(result.error.issues[0].code).toEqual(z.ZodIssueCode.too_small); + expect(result.error.issues[1].code).toEqual(z.ZodIssueCode.too_small); + } +}); + +test("preprocess validates with sibling errors", () => { + expect(() => { + z.object({ + // Must be first + missing: z.string().refine(() => false), + preprocess: z.preprocess((data: any) => data?.trim(), z.string().regex(/ asdf/)), + }).parse({ preprocess: " asdf" }); + }).toThrow( + JSON.stringify( + [ + { + code: "invalid_type", + expected: "string", + received: "undefined", + path: ["missing"], + message: "Required", + }, + { + validation: "regex", + code: "invalid_string", + message: "Invalid", + path: ["preprocess"], + }, + ], + null, + 2 + ) + ); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/primitive.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/primitive.test.ts new file mode 100644 index 000000000..48e36a21c --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/primitive.test.ts @@ -0,0 +1,440 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; +import { Mocker } from "./Mocker.js"; + +const literalStringSchema = z.literal("asdf"); +const literalNumberSchema = z.literal(12); +const literalBooleanSchema = z.literal(true); +const literalBigIntSchema = z.literal(BigInt(42)); +const MySymbol = Symbol("stuff"); +const literalSymbolSchema = z.literal(MySymbol); +const stringSchema = z.string(); +const numberSchema = z.number(); +const bigintSchema = z.bigint(); +const booleanSchema = z.boolean(); +const dateSchema = z.date(); +const symbolSchema = z.symbol(); + +const nullSchema = z.null(); +const undefinedSchema = z.undefined(); +const stringSchemaOptional = z.string().optional(); +const stringSchemaNullable = z.string().nullable(); +const numberSchemaOptional = z.number().optional(); +const numberSchemaNullable = z.number().nullable(); +const bigintSchemaOptional = z.bigint().optional(); +const bigintSchemaNullable = z.bigint().nullable(); +const booleanSchemaOptional = z.boolean().optional(); +const booleanSchemaNullable = z.boolean().nullable(); +const dateSchemaOptional = z.date().optional(); +const dateSchemaNullable = z.date().nullable(); +const symbolSchemaOptional = z.symbol().optional(); +const symbolSchemaNullable = z.symbol().nullable(); + +const val = new Mocker(); + +test("literal string correct", () => { + expect(literalStringSchema.parse("asdf")).toBe("asdf"); +}); + +test("literal string incorrect", () => { + const f = () => literalStringSchema.parse("not_asdf"); + expect(f).toThrow(); +}); + +test("literal string number", () => { + const f = () => literalStringSchema.parse(123); + expect(f).toThrow(); +}); + +test("literal string boolean", () => { + const f = () => literalStringSchema.parse(true); + expect(f).toThrow(); +}); + +test("literal string boolean", () => { + const f = () => literalStringSchema.parse(true); + expect(f).toThrow(); +}); + +test("literal string object", () => { + const f = () => literalStringSchema.parse({}); + expect(f).toThrow(); +}); + +test("literal number correct", () => { + expect(literalNumberSchema.parse(12)).toBe(12); +}); + +test("literal number incorrect", () => { + const f = () => literalNumberSchema.parse(13); + expect(f).toThrow(); +}); + +test("literal number number", () => { + const f = () => literalNumberSchema.parse(val.string); + expect(f).toThrow(); +}); + +test("literal number boolean", () => { + const f = () => literalNumberSchema.parse(val.boolean); + expect(f).toThrow(); +}); + +test("literal number object", () => { + const f = () => literalStringSchema.parse({}); + expect(f).toThrow(); +}); + +test("literal boolean correct", () => { + expect(literalBooleanSchema.parse(true)).toBe(true); +}); + +test("literal boolean incorrect", () => { + const f = () => literalBooleanSchema.parse(false); + expect(f).toThrow(); +}); + +test("literal boolean number", () => { + const f = () => literalBooleanSchema.parse("asdf"); + expect(f).toThrow(); +}); + +test("literal boolean boolean", () => { + const f = () => literalBooleanSchema.parse(123); + expect(f).toThrow(); +}); + +test("literal boolean object", () => { + const f = () => literalBooleanSchema.parse({}); + expect(f).toThrow(); +}); + +test("literal bigint correct", () => { + expect(literalBigIntSchema.parse(BigInt(42))).toBe(BigInt(42)); +}); + +test("literal bigint incorrect", () => { + const f = () => literalBigIntSchema.parse(BigInt(43)); + expect(f).toThrow(); +}); + +test("literal bigint number", () => { + const f = () => literalBigIntSchema.parse("asdf"); + expect(f).toThrow(); +}); + +test("literal bigint boolean", () => { + const f = () => literalBigIntSchema.parse(123); + expect(f).toThrow(); +}); + +test("literal bigint object", () => { + const f = () => literalBigIntSchema.parse({}); + expect(f).toThrow(); +}); + +test("literal symbol", () => { + util.assertEqual, typeof MySymbol>(true); + literalSymbolSchema.parse(MySymbol); + expect(() => literalSymbolSchema.parse(Symbol("asdf"))).toThrow(); +}); + +test("parse stringSchema string", () => { + stringSchema.parse(val.string); +}); + +test("parse stringSchema number", () => { + const f = () => stringSchema.parse(val.number); + expect(f).toThrow(); +}); + +test("parse stringSchema boolean", () => { + const f = () => stringSchema.parse(val.boolean); + expect(f).toThrow(); +}); + +test("parse stringSchema undefined", () => { + const f = () => stringSchema.parse(val.undefined); + expect(f).toThrow(); +}); + +test("parse stringSchema null", () => { + const f = () => stringSchema.parse(val.null); + expect(f).toThrow(); +}); + +test("parse numberSchema string", () => { + const f = () => numberSchema.parse(val.string); + expect(f).toThrow(); +}); + +test("parse numberSchema number", () => { + numberSchema.parse(val.number); +}); + +test("parse numberSchema bigint", () => { + const f = () => numberSchema.parse(val.bigint); + expect(f).toThrow(); +}); + +test("parse numberSchema boolean", () => { + const f = () => numberSchema.parse(val.boolean); + expect(f).toThrow(); +}); + +test("parse numberSchema undefined", () => { + const f = () => numberSchema.parse(val.undefined); + expect(f).toThrow(); +}); + +test("parse numberSchema null", () => { + const f = () => numberSchema.parse(val.null); + expect(f).toThrow(); +}); + +test("parse bigintSchema string", () => { + const f = () => bigintSchema.parse(val.string); + expect(f).toThrow(); +}); + +test("parse bigintSchema number", () => { + const f = () => bigintSchema.parse(val.number); + expect(f).toThrow(); +}); + +test("parse bigintSchema bigint", () => { + bigintSchema.parse(val.bigint); +}); + +test("parse bigintSchema boolean", () => { + const f = () => bigintSchema.parse(val.boolean); + expect(f).toThrow(); +}); + +test("parse bigintSchema undefined", () => { + const f = () => bigintSchema.parse(val.undefined); + expect(f).toThrow(); +}); + +test("parse bigintSchema null", () => { + const f = () => bigintSchema.parse(val.null); + expect(f).toThrow(); +}); + +test("parse booleanSchema string", () => { + const f = () => booleanSchema.parse(val.string); + expect(f).toThrow(); +}); + +test("parse booleanSchema number", () => { + const f = () => booleanSchema.parse(val.number); + expect(f).toThrow(); +}); + +test("parse booleanSchema boolean", () => { + booleanSchema.parse(val.boolean); +}); + +test("parse booleanSchema undefined", () => { + const f = () => booleanSchema.parse(val.undefined); + expect(f).toThrow(); +}); + +test("parse booleanSchema null", () => { + const f = () => booleanSchema.parse(val.null); + expect(f).toThrow(); +}); + +// ============== + +test("parse dateSchema string", () => { + const f = () => dateSchema.parse(val.string); + expect(f).toThrow(); +}); + +test("parse dateSchema number", () => { + const f = () => dateSchema.parse(val.number); + expect(f).toThrow(); +}); + +test("parse dateSchema boolean", () => { + const f = () => dateSchema.parse(val.boolean); + expect(f).toThrow(); +}); + +test("parse dateSchema date", () => { + dateSchema.parse(val.date); +}); + +test("parse dateSchema undefined", () => { + const f = () => dateSchema.parse(val.undefined); + expect(f).toThrow(); +}); + +test("parse dateSchema null", () => { + const f = () => dateSchema.parse(val.null); + expect(f).toThrow(); +}); + +test("parse dateSchema invalid date", async () => { + try { + await dateSchema.parseAsync(new Date("invalid")); + } catch (err) { + expect((err as z.ZodError).issues[0].code).toEqual(z.ZodIssueCode.invalid_date); + } +}); +// ============== + +test("parse symbolSchema string", () => { + const f = () => symbolSchema.parse(val.string); + expect(f).toThrow(); +}); + +test("parse symbolSchema number", () => { + const f = () => symbolSchema.parse(val.number); + expect(f).toThrow(); +}); + +test("parse symbolSchema boolean", () => { + const f = () => symbolSchema.parse(val.boolean); + expect(f).toThrow(); +}); + +test("parse symbolSchema date", () => { + const f = () => symbolSchema.parse(val.date); + expect(f).toThrow(); +}); + +test("parse symbolSchema symbol", () => { + symbolSchema.parse(val.symbol); +}); + +test("parse symbolSchema undefined", () => { + const f = () => symbolSchema.parse(val.undefined); + expect(f).toThrow(); +}); + +test("parse symbolSchema null", () => { + const f = () => symbolSchema.parse(val.null); + expect(f).toThrow(); +}); + +// ============== + +test("parse undefinedSchema string", () => { + const f = () => undefinedSchema.parse(val.string); + expect(f).toThrow(); +}); + +test("parse undefinedSchema number", () => { + const f = () => undefinedSchema.parse(val.number); + expect(f).toThrow(); +}); + +test("parse undefinedSchema boolean", () => { + const f = () => undefinedSchema.parse(val.boolean); + expect(f).toThrow(); +}); + +test("parse undefinedSchema undefined", () => { + undefinedSchema.parse(val.undefined); +}); + +test("parse undefinedSchema null", () => { + const f = () => undefinedSchema.parse(val.null); + expect(f).toThrow(); +}); + +test("parse nullSchema string", () => { + const f = () => nullSchema.parse(val.string); + expect(f).toThrow(); +}); + +test("parse nullSchema number", () => { + const f = () => nullSchema.parse(val.number); + expect(f).toThrow(); +}); + +test("parse nullSchema boolean", () => { + const f = () => nullSchema.parse(val.boolean); + expect(f).toThrow(); +}); + +test("parse nullSchema undefined", () => { + const f = () => nullSchema.parse(val.undefined); + expect(f).toThrow(); +}); + +test("parse nullSchema null", () => { + nullSchema.parse(val.null); +}); + +test("primitive inference", () => { + util.assertEqual, "asdf">(true); + util.assertEqual, 12>(true); + util.assertEqual, true>(true); + util.assertEqual, bigint>(true); + util.assertEqual, string>(true); + util.assertEqual, number>(true); + util.assertEqual, bigint>(true); + util.assertEqual, boolean>(true); + util.assertEqual, Date>(true); + util.assertEqual, symbol>(true); + + util.assertEqual, null>(true); + util.assertEqual, undefined>(true); + util.assertEqual, string | undefined>(true); + util.assertEqual, string | null>(true); + util.assertEqual, number | undefined>(true); + util.assertEqual, number | null>(true); + util.assertEqual, bigint | undefined>(true); + util.assertEqual, bigint | null>(true); + util.assertEqual, boolean | undefined>(true); + util.assertEqual, boolean | null>(true); + util.assertEqual, Date | undefined>(true); + util.assertEqual, Date | null>(true); + util.assertEqual, symbol | undefined>(true); + util.assertEqual, symbol | null>(true); + + // [ + // literalStringSchemaTest, + // literalNumberSchemaTest, + // literalBooleanSchemaTest, + // literalBigIntSchemaTest, + // stringSchemaTest, + // numberSchemaTest, + // bigintSchemaTest, + // booleanSchemaTest, + // dateSchemaTest, + // symbolSchemaTest, + + // nullSchemaTest, + // undefinedSchemaTest, + // stringSchemaOptionalTest, + // stringSchemaNullableTest, + // numberSchemaOptionalTest, + // numberSchemaNullableTest, + // bigintSchemaOptionalTest, + // bigintSchemaNullableTest, + // booleanSchemaOptionalTest, + // booleanSchemaNullableTest, + // dateSchemaOptionalTest, + // dateSchemaNullableTest, + // symbolSchemaOptionalTest, + // symbolSchemaNullableTest, + + // ]; +}); + +test("get literal value", () => { + expect(literalStringSchema.value).toEqual("asdf"); +}); + +test("optional convenience method", () => { + z.ostring().parse(undefined); + z.onumber().parse(undefined); + z.oboolean().parse(undefined); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/promise.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/promise.test.ts new file mode 100644 index 000000000..23b6de178 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/promise.test.ts @@ -0,0 +1,90 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +const promSchema = z.promise( + z.object({ + name: z.string(), + age: z.number(), + }) +); + +test("promise inference", () => { + type promSchemaType = z.infer; + util.assertEqual>(true); +}); + +test("promise parsing success", async () => { + const pr = promSchema.parse(Promise.resolve({ name: "Bobby", age: 10 })); + expect(pr).toBeInstanceOf(Promise); + const result = await pr; + expect(typeof result).toBe("object"); + expect(typeof result.age).toBe("number"); + expect(typeof result.name).toBe("string"); +}); + +test("promise parsing success 2", () => { + const fakePromise = { + then() { + return this; + }, + catch() { + return this; + }, + }; + promSchema.parse(fakePromise); +}); + +test("promise parsing fail", async () => { + const bad = promSchema.parse(Promise.resolve({ name: "Bobby", age: "10" })); + // return await expect(bad).resolves.toBe({ name: 'Bobby', age: '10' }); + return await expect(bad).rejects.toBeInstanceOf(z.ZodError); + // done(); +}); + +test("promise parsing fail 2", async () => { + const failPromise = promSchema.parse(Promise.resolve({ name: "Bobby", age: "10" })); + await expect(failPromise).rejects.toBeInstanceOf(z.ZodError); + // done();/z +}); + +test("promise parsing fail", () => { + const bad = () => promSchema.parse({ then: () => {}, catch: {} }); + expect(bad).toThrow(); +}); + +// test('sync promise parsing', () => { +// expect(() => z.promise(z.string()).parse(Promise.resolve('asfd'))).toThrow(); +// }); + +const asyncFunction = z.function(z.tuple([]), promSchema); + +test("async function pass", async () => { + const validatedFunction = asyncFunction.implement(async () => { + return { name: "jimmy", age: 14 }; + }); + await expect(validatedFunction()).resolves.toEqual({ + name: "jimmy", + age: 14, + }); +}); + +test("async function fail", async () => { + const validatedFunction = asyncFunction.implement(() => { + return Promise.resolve("asdf" as any); + }); + await expect(validatedFunction()).rejects.toBeInstanceOf(z.ZodError); +}); + +test("async promise parsing", () => { + const res = z.promise(z.number()).parseAsync(Promise.resolve(12)); + expect(res).toBeInstanceOf(Promise); +}); + +test("resolves", () => { + const foo = z.literal("foo"); + const res = z.promise(foo); + expect(res.unwrap()).toEqual(foo); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/readonly.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/readonly.test.ts new file mode 100644 index 000000000..5078955f4 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/readonly.test.ts @@ -0,0 +1,194 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +enum testEnum { + A = 0, + B = 1, +} + +const schemas = [ + z.string().readonly(), + z.number().readonly(), + z.nan().readonly(), + z.bigint().readonly(), + z.boolean().readonly(), + z.date().readonly(), + z.undefined().readonly(), + z.null().readonly(), + z.any().readonly(), + z.unknown().readonly(), + z.void().readonly(), + z.function().args(z.string(), z.number()).readonly(), + + z.array(z.string()).readonly(), + z.tuple([z.string(), z.number()]).readonly(), + z.map(z.string(), z.date()).readonly(), + z.set(z.promise(z.string())).readonly(), + z.record(z.string()).readonly(), + z.record(z.string(), z.number()).readonly(), + z.object({ a: z.string(), 1: z.number() }).readonly(), + z.nativeEnum(testEnum).readonly(), + z.promise(z.string()).readonly(), +] as const; + +test("flat inference", () => { + util.assertEqual, string>(true); + util.assertEqual, number>(true); + util.assertEqual, number>(true); + util.assertEqual, bigint>(true); + util.assertEqual, boolean>(true); + util.assertEqual, Date>(true); + util.assertEqual, undefined>(true); + util.assertEqual, null>(true); + util.assertEqual, any>(true); + util.assertEqual, Readonly>(true); + util.assertEqual, void>(true); + util.assertEqual, (args_0: string, args_1: number, ...args_2: unknown[]) => unknown>( + true + ); + util.assertEqual, readonly string[]>(true); + + util.assertEqual, readonly [string, number]>(true); + util.assertEqual, ReadonlyMap>(true); + util.assertEqual, ReadonlySet>>(true); + util.assertEqual, Readonly>>(true); + util.assertEqual, Readonly>>(true); + util.assertEqual, { readonly a: string; readonly 1: number }>(true); + util.assertEqual, Readonly>(true); + util.assertEqual, Promise>(true); +}); + +// test("deep inference", () => { +// util.assertEqual, string>(true); +// util.assertEqual, number>(true); +// util.assertEqual, number>(true); +// util.assertEqual, bigint>(true); +// util.assertEqual, boolean>(true); +// util.assertEqual, Date>(true); +// util.assertEqual, undefined>(true); +// util.assertEqual, null>(true); +// util.assertEqual, any>(true); +// util.assertEqual< +// z.infer<(typeof deepReadonlySchemas_0)[9]>, +// Readonly +// >(true); +// util.assertEqual, void>(true); +// util.assertEqual< +// z.infer<(typeof deepReadonlySchemas_0)[11]>, +// (args_0: string, args_1: number, ...args_2: unknown[]) => unknown +// >(true); +// util.assertEqual< +// z.infer<(typeof deepReadonlySchemas_0)[12]>, +// readonly string[] +// >(true); +// util.assertEqual< +// z.infer<(typeof deepReadonlySchemas_0)[13]>, +// readonly [string, number] +// >(true); +// util.assertEqual< +// z.infer<(typeof deepReadonlySchemas_0)[14]>, +// ReadonlyMap +// >(true); +// util.assertEqual< +// z.infer<(typeof deepReadonlySchemas_0)[15]>, +// ReadonlySet> +// >(true); +// util.assertEqual< +// z.infer<(typeof deepReadonlySchemas_0)[16]>, +// Readonly> +// >(true); +// util.assertEqual< +// z.infer<(typeof deepReadonlySchemas_0)[17]>, +// Readonly> +// >(true); +// util.assertEqual< +// z.infer<(typeof deepReadonlySchemas_0)[18]>, +// { readonly a: string; readonly 1: number } +// >(true); +// util.assertEqual< +// z.infer<(typeof deepReadonlySchemas_0)[19]>, +// Readonly +// >(true); +// util.assertEqual< +// z.infer<(typeof deepReadonlySchemas_0)[20]>, +// Promise +// >(true); + +// util.assertEqual< +// z.infer, +// ReadonlyMap< +// ReadonlySet, +// { +// readonly a: { +// readonly [x: string]: readonly any[]; +// }; +// readonly b: { +// readonly c: { +// readonly d: { +// readonly e: { +// readonly f: { +// readonly g?: {}; +// }; +// }; +// }; +// }; +// }; +// } +// > +// >(true); +// }); + +test("object freezing", () => { + expect(Object.isFrozen(z.array(z.string()).readonly().parse(["a"]))).toBe(true); + expect(Object.isFrozen(z.tuple([z.string(), z.number()]).readonly().parse(["a", 1]))).toBe(true); + expect( + Object.isFrozen( + z + .map(z.string(), z.date()) + .readonly() + .parse(new Map([["a", new Date()]])) + ) + ).toBe(true); + expect( + Object.isFrozen( + z + .set(z.promise(z.string())) + .readonly() + .parse(new Set([Promise.resolve("a")])) + ) + ).toBe(true); + expect(Object.isFrozen(z.record(z.string()).readonly().parse({ a: "b" }))).toBe(true); + expect(Object.isFrozen(z.record(z.string(), z.number()).readonly().parse({ a: 1 }))).toBe(true); + expect(Object.isFrozen(z.object({ a: z.string(), 1: z.number() }).readonly().parse({ a: "b", 1: 2 }))).toBe(true); + expect(Object.isFrozen(z.promise(z.string()).readonly().parse(Promise.resolve("a")))).toBe(true); +}); + +test("async object freezing", async () => { + expect(Object.isFrozen(await z.array(z.string()).readonly().parseAsync(["a"]))).toBe(true); + expect(Object.isFrozen(await z.tuple([z.string(), z.number()]).readonly().parseAsync(["a", 1]))).toBe(true); + expect( + Object.isFrozen( + await z + .map(z.string(), z.date()) + .readonly() + .parseAsync(new Map([["a", new Date()]])) + ) + ).toBe(true); + expect( + Object.isFrozen( + await z + .set(z.promise(z.string())) + .readonly() + .parseAsync(new Set([Promise.resolve("a")])) + ) + ).toBe(true); + expect(Object.isFrozen(await z.record(z.string()).readonly().parseAsync({ a: "b" }))).toBe(true); + expect(Object.isFrozen(await z.record(z.string(), z.number()).readonly().parseAsync({ a: 1 }))).toBe(true); + expect( + Object.isFrozen(await z.object({ a: z.string(), 1: z.number() }).readonly().parseAsync({ a: "b", 1: 2 })) + ).toBe(true); + expect(Object.isFrozen(await z.promise(z.string()).readonly().parseAsync(Promise.resolve("a")))).toBe(true); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/record.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/record.test.ts new file mode 100644 index 000000000..83c363f33 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/record.test.ts @@ -0,0 +1,171 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +const booleanRecord = z.record(z.boolean()); +type booleanRecord = z.infer; + +const recordWithEnumKeys = z.record(z.enum(["Tuna", "Salmon"]), z.string()); +type recordWithEnumKeys = z.infer; + +const recordWithLiteralKeys = z.record(z.union([z.literal("Tuna"), z.literal("Salmon")]), z.string()); +type recordWithLiteralKeys = z.infer; + +test("type inference", () => { + util.assertEqual>(true); + + util.assertEqual>>(true); + + util.assertEqual>>(true); +}); + +test("methods", () => { + booleanRecord.optional(); + booleanRecord.nullable(); +}); + +test("string record parse - pass", () => { + booleanRecord.parse({ + k1: true, + k2: false, + 1234: false, + }); +}); + +test("string record parse - fail", () => { + const badCheck = () => + booleanRecord.parse({ + asdf: 1234, + } as any); + expect(badCheck).toThrow(); + + expect(() => booleanRecord.parse("asdf")).toThrow(); +}); + +test("string record parse - fail", () => { + const badCheck = () => + booleanRecord.parse({ + asdf: {}, + } as any); + expect(badCheck).toThrow(); +}); + +test("string record parse - fail", () => { + const badCheck = () => + booleanRecord.parse({ + asdf: [], + } as any); + expect(badCheck).toThrow(); +}); + +test("key schema", () => { + const result1 = recordWithEnumKeys.parse({ + Tuna: "asdf", + Salmon: "asdf", + }); + expect(result1).toEqual({ + Tuna: "asdf", + Salmon: "asdf", + }); + + const result2 = recordWithLiteralKeys.parse({ + Tuna: "asdf", + Salmon: "asdf", + }); + expect(result2).toEqual({ + Tuna: "asdf", + Salmon: "asdf", + }); + + // shouldn't require us to specify all props in record + const result3 = recordWithEnumKeys.parse({ + Tuna: "abcd", + }); + expect(result3).toEqual({ + Tuna: "abcd", + }); + + // shouldn't require us to specify all props in record + const result4 = recordWithLiteralKeys.parse({ + Salmon: "abcd", + }); + expect(result4).toEqual({ + Salmon: "abcd", + }); + + expect(() => + recordWithEnumKeys.parse({ + Tuna: "asdf", + Salmon: "asdf", + Trout: "asdf", + }) + ).toThrow(); + + expect(() => + recordWithLiteralKeys.parse({ + Tuna: "asdf", + Salmon: "asdf", + + Trout: "asdf", + }) + ).toThrow(); +}); + +// test("record element", () => { +// expect(booleanRecord.element).toBeInstanceOf(z.ZodBoolean); +// }); + +test("key and value getters", () => { + const rec = z.record(z.string(), z.number()); + + rec.keySchema.parse("asdf"); + rec.valueSchema.parse(1234); + rec.element.parse(1234); +}); + +test("is not vulnerable to prototype pollution", async () => { + const rec = z.record( + z.object({ + a: z.string(), + }) + ); + + const data = JSON.parse(` + { + "__proto__": { + "a": "evil" + }, + "b": { + "a": "good" + } + } + `); + + const obj1 = rec.parse(data); + expect(obj1.a).toBeUndefined(); + + const obj2 = rec.safeParse(data); + expect(obj2.success).toBe(true); + if (obj2.success) { + expect(obj2.data.a).toBeUndefined(); + } + + const obj3 = await rec.parseAsync(data); + expect(obj3.a).toBeUndefined(); + + const obj4 = await rec.safeParseAsync(data); + expect(obj4.success).toBe(true); + if (obj4.success) { + expect(obj4.data.a).toBeUndefined(); + } +}); + +test("dont parse undefined values", () => { + const result1 = z.record(z.any()).parse({ foo: undefined }); + + expect(result1).toEqual({ + foo: undefined, + }); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/recursive.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/recursive.test.ts new file mode 100644 index 000000000..f5bb1088a --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/recursive.test.ts @@ -0,0 +1,197 @@ +// @ts-ignore TS6133 +import { test } from "vitest"; + +import { z } from "zod/v3"; + +interface Category { + name: string; + subcategories: Category[]; +} + +const testCategory: Category = { + name: "I", + subcategories: [ + { + name: "A", + subcategories: [ + { + name: "1", + subcategories: [ + { + name: "a", + subcategories: [], + }, + ], + }, + ], + }, + ], +}; + +test("recursion with z.late.object", () => { + const Category: z.ZodType = z.late.object(() => ({ + name: z.string(), + subcategories: z.array(Category), + })); + Category.parse(testCategory); +}); + +test("recursion with z.lazy", () => { + const Category: z.ZodType = z.lazy(() => + z.object({ + name: z.string(), + subcategories: z.array(Category), + }) + ); + Category.parse(testCategory); +}); + +test("schema getter", () => { + z.lazy(() => z.string()).schema.parse("asdf"); +}); + +type LinkedList = null | { value: number; next: LinkedList }; + +const linkedListExample = { + value: 1, + next: { + value: 2, + next: { + value: 3, + next: { + value: 4, + next: null, + }, + }, + }, +}; + +test("recursion involving union type", () => { + const LinkedListSchema: z.ZodType = z.lazy(() => + z.union([ + z.null(), + z.object({ + value: z.number(), + next: LinkedListSchema, + }), + ]) + ); + LinkedListSchema.parse(linkedListExample); +}); + +// interface A { +// val: number; +// b: B; +// } + +// interface B { +// val: number; +// a: A; +// } + +// const A: z.ZodType = z.late.object(() => ({ +// val: z.number(), +// b: B, +// })); + +// const B: z.ZodType = z.late.object(() => ({ +// val: z.number(), +// a: A, +// })); + +// const Alazy: z.ZodType = z.lazy(() => z.object({ +// val: z.number(), +// b: B, +// })); + +// const Blazy: z.ZodType = z.lazy(() => z.object({ +// val: z.number(), +// a: A, +// })); + +// const a: any = { val: 1 }; +// const b: any = { val: 2 }; +// a.b = b; +// b.a = a; + +// test('valid check', () => { +// A.parse(a); +// B.parse(b); +// }); + +// test("valid check lazy", () => { +// A.parse({val:1, b:}); +// B.parse(b); +// }); + +// test('masking check', () => { +// const FragmentOnA = z +// .object({ +// val: z.number(), +// b: z +// .object({ +// val: z.number(), +// a: z +// .object({ +// val: z.number(), +// }) +// .nonstrict(), +// }) +// .nonstrict(), +// }) +// .nonstrict(); + +// const fragment = FragmentOnA.parse(a); +// fragment; +// }); + +// test('invalid check', () => { +// expect(() => A.parse({} as any)).toThrow(); +// }); + +// test('schema getter', () => { +// (A as z.ZodLazy).schema; +// }); + +// test("self recursion with cyclical data", () => { +// interface Category { +// name: string; +// subcategories: Category[]; +// } + +// const Category: z.ZodType = z.late.object(() => ({ +// name: z.string(), +// subcategories: z.array(Category), +// })); + +// const untypedCategory: any = { +// name: "Category A", +// }; +// // creating a cycle +// untypedCategory.subcategories = [untypedCategory]; +// Category.parse(untypedCategory); +// }); + +// test("self recursion with base type", () => { +// const BaseCategory = z.object({ +// name: z.string(), +// }); +// type BaseCategory = z.infer; + +// type Category = BaseCategory & { subcategories: Category[] }; + +// const Category: z.ZodType = z.late +// .object(() => ({ +// subcategories: z.array(Category), +// })) +// .extend({ +// name: z.string(), +// }); + +// const untypedCategory: any = { +// name: "Category A", +// }; +// // creating a cycle +// untypedCategory.subcategories = [untypedCategory]; +// Category.parse(untypedCategory); // parses successfully +// }); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/refine.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/refine.test.ts new file mode 100644 index 000000000..55c27fea5 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/refine.test.ts @@ -0,0 +1,313 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { ZodIssueCode } from "../ZodError.js"; +import { util } from "../helpers/util.js"; + +test("refinement", () => { + const obj1 = z.object({ + first: z.string(), + second: z.string(), + }); + const obj2 = obj1.partial().strict(); + + const obj3 = obj2.refine((data) => data.first || data.second, "Either first or second should be filled in."); + + expect(obj1 === (obj2 as any)).toEqual(false); + expect(obj2 === (obj3 as any)).toEqual(false); + + expect(() => obj1.parse({})).toThrow(); + expect(() => obj2.parse({ third: "adsf" })).toThrow(); + expect(() => obj3.parse({})).toThrow(); + obj3.parse({ first: "a" }); + obj3.parse({ second: "a" }); + obj3.parse({ first: "a", second: "a" }); +}); + +test("refinement 2", () => { + const validationSchema = z + .object({ + email: z.string().email(), + password: z.string(), + confirmPassword: z.string(), + }) + .refine((data) => data.password === data.confirmPassword, "Both password and confirmation must match"); + + expect(() => + validationSchema.parse({ + email: "aaaa@gmail.com", + password: "aaaaaaaa", + confirmPassword: "bbbbbbbb", + }) + ).toThrow(); +}); + +test("refinement type guard", () => { + const validationSchema = z.object({ + a: z.string().refine((s): s is "a" => s === "a"), + }); + type Input = z.input; + type Schema = z.infer; + + util.assertEqual<"a", Input["a"]>(false); + util.assertEqual(true); + + util.assertEqual<"a", Schema["a"]>(true); + util.assertEqual(false); +}); + +test("refinement Promise", async () => { + const validationSchema = z + .object({ + email: z.string().email(), + password: z.string(), + confirmPassword: z.string(), + }) + .refine( + (data) => Promise.resolve().then(() => data.password === data.confirmPassword), + "Both password and confirmation must match" + ); + + await validationSchema.parseAsync({ + email: "aaaa@gmail.com", + password: "password", + confirmPassword: "password", + }); +}); + +test("custom path", async () => { + const result = await z + .object({ + password: z.string(), + confirm: z.string(), + }) + .refine((data) => data.confirm === data.password, { path: ["confirm"] }) + .spa({ password: "asdf", confirm: "qewr" }); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues[0].path).toEqual(["confirm"]); + } +}); + +test("use path in refinement context", async () => { + const noNested = z.string()._refinement((_val, ctx) => { + if (ctx.path.length > 0) { + ctx.addIssue({ + code: ZodIssueCode.custom, + message: `schema cannot be nested. path: ${ctx.path.join(".")}`, + }); + return false; + } else { + return true; + } + }); + + const data = z.object({ + foo: noNested, + }); + + const t1 = await noNested.spa("asdf"); + const t2 = await data.spa({ foo: "asdf" }); + + expect(t1.success).toBe(true); + expect(t2.success).toBe(false); + if (t2.success === false) { + expect(t2.error.issues[0].message).toEqual("schema cannot be nested. path: foo"); + } +}); + +test("superRefine", () => { + const Strings = z.array(z.string()).superRefine((val, ctx) => { + if (val.length > 3) { + ctx.addIssue({ + code: z.ZodIssueCode.too_big, + maximum: 3, + type: "array", + inclusive: true, + exact: true, + message: "Too many items 😡", + }); + } + + if (val.length !== new Set(val).size) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: `No duplicates allowed.`, + }); + } + }); + + const result = Strings.safeParse(["asfd", "asfd", "asfd", "asfd"]); + + expect(result.success).toEqual(false); + if (!result.success) expect(result.error.issues.length).toEqual(2); + + Strings.parse(["asfd", "qwer"]); +}); + +test("superRefine async", async () => { + const Strings = z.array(z.string()).superRefine(async (val, ctx) => { + if (val.length > 3) { + ctx.addIssue({ + code: z.ZodIssueCode.too_big, + maximum: 3, + type: "array", + inclusive: true, + exact: true, + message: "Too many items 😡", + }); + } + + if (val.length !== new Set(val).size) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: `No duplicates allowed.`, + }); + } + }); + + const result = await Strings.safeParseAsync(["asfd", "asfd", "asfd", "asfd"]); + + expect(result.success).toEqual(false); + if (!result.success) expect(result.error.issues.length).toEqual(2); + + Strings.parseAsync(["asfd", "qwer"]); +}); + +test("superRefine - type narrowing", () => { + type NarrowType = { type: string; age: number }; + const schema = z + .object({ + type: z.string(), + age: z.number(), + }) + .nullable() + .superRefine((arg, ctx): arg is NarrowType => { + if (!arg) { + // still need to make a call to ctx.addIssue + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "cannot be null", + fatal: true, + }); + return false; + } + return true; + }); + + util.assertEqual, NarrowType>(true); + + expect(schema.safeParse({ type: "test", age: 0 }).success).toEqual(true); + expect(schema.safeParse(null).success).toEqual(false); +}); + +test("chained mixed refining types", () => { + type firstRefinement = { first: string; second: number; third: true }; + type secondRefinement = { first: "bob"; second: number; third: true }; + type thirdRefinement = { first: "bob"; second: 33; third: true }; + const schema = z + .object({ + first: z.string(), + second: z.number(), + third: z.boolean(), + }) + .nullable() + .refine((arg): arg is firstRefinement => !!arg?.third) + .superRefine((arg, ctx): arg is secondRefinement => { + util.assertEqual(true); + if (arg.first !== "bob") { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "`first` property must be `bob`", + }); + return false; + } + return true; + }) + .refine((arg): arg is thirdRefinement => { + util.assertEqual(true); + return arg.second === 33; + }); + + util.assertEqual, thirdRefinement>(true); +}); + +test("get inner type", () => { + z.string() + .refine(() => true) + .innerType() + .parse("asdf"); +}); + +test("chained refinements", () => { + const objectSchema = z + .object({ + length: z.number(), + size: z.number(), + }) + .refine(({ length }) => length > 5, { + path: ["length"], + message: "length greater than 5", + }) + .refine(({ size }) => size > 7, { + path: ["size"], + message: "size greater than 7", + }); + const r1 = objectSchema.safeParse({ + length: 4, + size: 9, + }); + expect(r1.success).toEqual(false); + if (!r1.success) expect(r1.error.issues.length).toEqual(1); + + const r2 = objectSchema.safeParse({ + length: 4, + size: 3, + }); + expect(r2.success).toEqual(false); + if (!r2.success) expect(r2.error.issues.length).toEqual(2); +}); + +test("fatal superRefine", () => { + const Strings = z + .string() + .superRefine((val, ctx) => { + if (val === "") { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "foo", + fatal: true, + }); + } + }) + .superRefine((val, ctx) => { + if (val !== " ") { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "bar", + }); + } + }); + + const result = Strings.safeParse(""); + + expect(result.success).toEqual(false); + if (!result.success) expect(result.error.issues.length).toEqual(1); +}); + +test("superRefine after skipped transform", () => { + const schema = z + .string() + .regex(/^\d+$/) + .transform((val) => Number(val)) + .superRefine((val) => { + if (typeof val !== "number") { + throw new Error("Called without transform"); + } + }); + + const result = schema.safeParse(""); + + expect(result.success).toEqual(false); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/safeparse.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/safeparse.test.ts new file mode 100644 index 000000000..950a2df5e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/safeparse.test.ts @@ -0,0 +1,27 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +const stringSchema = z.string(); + +test("safeparse fail", () => { + const safe = stringSchema.safeParse(12); + expect(safe.success).toEqual(false); + expect(safe.error).toBeInstanceOf(z.ZodError); +}); + +test("safeparse pass", () => { + const safe = stringSchema.safeParse("12"); + expect(safe.success).toEqual(true); + expect(safe.data).toEqual("12"); +}); + +test("safeparse unexpected error", () => { + expect(() => + stringSchema + .refine((data) => { + throw new Error(data); + }) + .safeParse("12") + ).toThrow(); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/set.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/set.test.ts new file mode 100644 index 000000000..890cdd205 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/set.test.ts @@ -0,0 +1,142 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { ZodIssueCode } from "zod/v3"; +import { util } from "../helpers/util.js"; + +const stringSet = z.set(z.string()); +type stringSet = z.infer; + +const minTwo = z.set(z.string()).min(2); +const maxTwo = z.set(z.string()).max(2); +const justTwo = z.set(z.string()).size(2); +const nonEmpty = z.set(z.string()).nonempty(); +const nonEmptyMax = z.set(z.string()).nonempty().max(2); + +test("type inference", () => { + util.assertEqual>(true); +}); + +test("valid parse", () => { + const result = stringSet.safeParse(new Set(["first", "second"])); + expect(result.success).toEqual(true); + if (result.success) { + expect(result.data.has("first")).toEqual(true); + expect(result.data.has("second")).toEqual(true); + expect(result.data.has("third")).toEqual(false); + } + + expect(() => { + minTwo.parse(new Set(["a", "b"])); + minTwo.parse(new Set(["a", "b", "c"])); + maxTwo.parse(new Set(["a", "b"])); + maxTwo.parse(new Set(["a"])); + justTwo.parse(new Set(["a", "b"])); + nonEmpty.parse(new Set(["a"])); + nonEmptyMax.parse(new Set(["a"])); + }).not.toThrow(); +}); + +test("valid parse async", async () => { + const result = await stringSet.spa(new Set(["first", "second"])); + expect(result.success).toEqual(true); + if (result.success) { + expect(result.data.has("first")).toEqual(true); + expect(result.data.has("second")).toEqual(true); + expect(result.data.has("third")).toEqual(false); + } + + const asyncResult = await stringSet.safeParse(new Set(["first", "second"])); + expect(asyncResult.success).toEqual(true); + if (asyncResult.success) { + expect(asyncResult.data.has("first")).toEqual(true); + expect(asyncResult.data.has("second")).toEqual(true); + expect(asyncResult.data.has("third")).toEqual(false); + } +}); + +test("valid parse: size-related methods", () => { + expect(() => { + minTwo.parse(new Set(["a", "b"])); + minTwo.parse(new Set(["a", "b", "c"])); + maxTwo.parse(new Set(["a", "b"])); + maxTwo.parse(new Set(["a"])); + justTwo.parse(new Set(["a", "b"])); + nonEmpty.parse(new Set(["a"])); + nonEmptyMax.parse(new Set(["a"])); + }).not.toThrow(); + + const sizeZeroResult = stringSet.parse(new Set()); + expect(sizeZeroResult.size).toBe(0); + + const sizeTwoResult = minTwo.parse(new Set(["a", "b"])); + expect(sizeTwoResult.size).toBe(2); +}); + +test("failing when parsing empty set in nonempty ", () => { + const result = nonEmpty.safeParse(new Set()); + expect(result.success).toEqual(false); + + if (result.success === false) { + expect(result.error.issues.length).toEqual(1); + expect(result.error.issues[0].code).toEqual(ZodIssueCode.too_small); + } +}); + +test("failing when set is smaller than min() ", () => { + const result = minTwo.safeParse(new Set(["just_one"])); + expect(result.success).toEqual(false); + + if (result.success === false) { + expect(result.error.issues.length).toEqual(1); + expect(result.error.issues[0].code).toEqual(ZodIssueCode.too_small); + } +}); + +test("failing when set is bigger than max() ", () => { + const result = maxTwo.safeParse(new Set(["one", "two", "three"])); + expect(result.success).toEqual(false); + + if (result.success === false) { + expect(result.error.issues.length).toEqual(1); + expect(result.error.issues[0].code).toEqual(ZodIssueCode.too_big); + } +}); + +test("doesn’t throw when an empty set is given", () => { + const result = stringSet.safeParse(new Set([])); + expect(result.success).toEqual(true); +}); + +test("throws when a Map is given", () => { + const result = stringSet.safeParse(new Map([])); + expect(result.success).toEqual(false); + if (result.success === false) { + expect(result.error.issues.length).toEqual(1); + expect(result.error.issues[0].code).toEqual(ZodIssueCode.invalid_type); + } +}); + +test("throws when the given set has invalid input", () => { + const result = stringSet.safeParse(new Set([Symbol()])); + expect(result.success).toEqual(false); + if (result.success === false) { + expect(result.error.issues.length).toEqual(1); + expect(result.error.issues[0].code).toEqual(ZodIssueCode.invalid_type); + expect(result.error.issues[0].path).toEqual([0]); + } +}); + +test("throws when the given set has multiple invalid entries", () => { + const result = stringSet.safeParse(new Set([1, 2] as any[]) as Set); + + expect(result.success).toEqual(false); + if (result.success === false) { + expect(result.error.issues.length).toEqual(2); + expect(result.error.issues[0].code).toEqual(ZodIssueCode.invalid_type); + expect(result.error.issues[0].path).toEqual([0]); + expect(result.error.issues[1].code).toEqual(ZodIssueCode.invalid_type); + expect(result.error.issues[1].path).toEqual([1]); + } +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/standard-schema.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/standard-schema.test.ts new file mode 100644 index 000000000..74b3d2ba6 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/standard-schema.test.ts @@ -0,0 +1,83 @@ +// import type { StandardSchemaV1 } from "@standard-schema/spec"; +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; +import type { StandardSchemaV1 } from "../standard-schema.js"; + +test("assignability", () => { + const _s1: StandardSchemaV1 = z.string(); + const _s2: StandardSchemaV1 = z.string(); + const _s3: StandardSchemaV1 = z.string(); + const _s4: StandardSchemaV1 = z.string(); + [_s1, _s2, _s3, _s4]; +}); + +test("type inference", () => { + const stringToNumber = z.string().transform((x) => x.length); + type input = StandardSchemaV1.InferInput; + util.assertEqual(true); + type output = StandardSchemaV1.InferOutput; + util.assertEqual(true); +}); + +test("valid parse", () => { + const schema = z.string(); + const result = schema["~standard"].validate("hello"); + if (result instanceof Promise) { + throw new Error("Expected sync result"); + } + expect(result.issues).toEqual(undefined); + if (result.issues) { + throw new Error("Expected no issues"); + } else { + expect(result.value).toEqual("hello"); + } +}); + +test("invalid parse", () => { + const schema = z.string(); + const result = schema["~standard"].validate(1234); + if (result instanceof Promise) { + throw new Error("Expected sync result"); + } + expect(result.issues).toBeDefined(); + if (!result.issues) { + throw new Error("Expected issues"); + } + expect(result.issues.length).toEqual(1); + expect(result.issues[0].path).toEqual([]); +}); + +test("valid parse async", async () => { + const schema = z.string().refine(async () => true); + const _result = schema["~standard"].validate("hello"); + if (_result instanceof Promise) { + const result = await _result; + expect(result.issues).toEqual(undefined); + if (result.issues) { + throw new Error("Expected no issues"); + } else { + expect(result.value).toEqual("hello"); + } + } else { + throw new Error("Expected async result"); + } +}); + +test("invalid parse async", async () => { + const schema = z.string().refine(async () => false); + const _result = schema["~standard"].validate("hello"); + if (_result instanceof Promise) { + const result = await _result; + expect(result.issues).toBeDefined(); + if (!result.issues) { + throw new Error("Expected issues"); + } + expect(result.issues.length).toEqual(1); + expect(result.issues[0].path).toEqual([]); + } else { + throw new Error("Expected async result"); + } +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/string.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/string.test.ts new file mode 100644 index 000000000..2d712e10d --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/string.test.ts @@ -0,0 +1,916 @@ +import { Buffer } from "node:buffer"; +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +const minFive = z.string().min(5, "min5"); +const maxFive = z.string().max(5, "max5"); +const justFive = z.string().length(5); +const nonempty = z.string().nonempty("nonempty"); +const includes = z.string().includes("includes"); +const includesFromIndex2 = z.string().includes("includes", { position: 2 }); +const startsWith = z.string().startsWith("startsWith"); +const endsWith = z.string().endsWith("endsWith"); + +test("passing validations", () => { + minFive.parse("12345"); + minFive.parse("123456"); + maxFive.parse("12345"); + maxFive.parse("1234"); + nonempty.parse("1"); + justFive.parse("12345"); + includes.parse("XincludesXX"); + includesFromIndex2.parse("XXXincludesXX"); + startsWith.parse("startsWithX"); + endsWith.parse("XendsWith"); +}); + +test("failing validations", () => { + expect(() => minFive.parse("1234")).toThrow(); + expect(() => maxFive.parse("123456")).toThrow(); + expect(() => nonempty.parse("")).toThrow(); + expect(() => justFive.parse("1234")).toThrow(); + expect(() => justFive.parse("123456")).toThrow(); + expect(() => includes.parse("XincludeXX")).toThrow(); + expect(() => includesFromIndex2.parse("XincludesXX")).toThrow(); + expect(() => startsWith.parse("x")).toThrow(); + expect(() => endsWith.parse("x")).toThrow(); +}); + +test("email validations", () => { + const validEmails = [ + `email@domain.com`, + `firstname.lastname@domain.com`, + `email@subdomain.domain.com`, + `firstname+lastname@domain.com`, + `1234567890@domain.com`, + `email@domain-one.com`, + `_______@domain.com`, + `email@domain.name`, + `email@domain.co.jp`, + `firstname-lastname@domain.com`, + `very.common@example.com`, + `disposable.style.email.with+symbol@example.com`, + `other.email-with-hyphen@example.com`, + `fully-qualified-domain@example.com`, + `user.name+tag+sorting@example.com`, + `x@example.com`, + `mojojojo@asdf.example.com`, + `example-indeed@strange-example.com`, + `example@s.example`, + `user-@example.org`, + `user@my-example.com`, + `a@b.cd`, + `work+user@mail.com`, + `tom@test.te-st.com`, + `something@subdomain.domain-with-hyphens.tld`, + `common'name@domain.com`, + `francois@etu.inp-n7.fr`, + ]; + const invalidEmails = [ + // no "printable characters" + // `user%example.com@example.org`, + // `mailhost!username@example.org`, + // `test/test@test.com`, + + // double @ + `francois@@etu.inp-n7.fr`, + // do not support quotes + `"email"@domain.com`, + `"e asdf sadf ?<>ail"@domain.com`, + `" "@example.org`, + `"john..doe"@example.org`, + `"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com`, + // do not support comma + `a,b@domain.com`, + + // do not support IPv4 + `email@123.123.123.123`, + `email@[123.123.123.123]`, + `postmaster@123.123.123.123`, + `user@[68.185.127.196]`, + `ipv4@[85.129.96.247]`, + `valid@[79.208.229.53]`, + `valid@[255.255.255.255]`, + `valid@[255.0.55.2]`, + `valid@[255.0.55.2]`, + + // do not support ipv6 + `hgrebert0@[IPv6:4dc8:ac7:ce79:8878:1290:6098:5c50:1f25]`, + `bshapiro4@[IPv6:3669:c709:e981:4884:59a3:75d1:166b:9ae]`, + `jsmith@[IPv6:2001:db8::1]`, + `postmaster@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]`, + `postmaster@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:192.168.1.1]`, + + // microsoft test cases + `plainaddress`, + `#@%^%#$@#$@#.com`, + `@domain.com`, + `Joe Smith <email@domain.com>`, + `email.domain.com`, + `email@domain@domain.com`, + `.email@domain.com`, + `email.@domain.com`, + `email..email@domain.com`, + `あいうえお@domain.com`, + `email@domain.com (Joe Smith)`, + `email@domain`, + `email@-domain.com`, + `email@111.222.333.44444`, + `email@domain..com`, + `Abc.example.com`, + `A@b@c@example.com`, + `colin..hacks@domain.com`, + `a"b(c)d,e:f;gi[j\k]l@example.com`, + `just"not"right@example.com`, + `this is"not\allowed@example.com`, + `this\ still\"not\\allowed@example.com`, + + // random + `i_like_underscore@but_its_not_allowed_in_this_part.example.com`, + `QA[icon]CHOCOLATE[icon]@test.com`, + `invalid@-start.com`, + `invalid@end.com-`, + `a.b@c.d`, + `invalid@[1.1.1.-1]`, + `invalid@[68.185.127.196.55]`, + `temp@[192.168.1]`, + `temp@[9.18.122.]`, + `double..point@test.com`, + `asdad@test..com`, + `asdad@hghg...sd...au`, + `asdad@hghg........au`, + `invalid@[256.2.2.48]`, + `invalid@[256.2.2.48]`, + `invalid@[999.465.265.1]`, + `jkibbey4@[IPv6:82c4:19a8::70a9:2aac:557::ea69:d985:28d]`, + `mlivesay3@[9952:143f:b4df:2179:49a1:5e82:b92e:6b6]`, + `gbacher0@[IPv6:bc37:4d3f:5048:2e26:37cc:248e:df8e:2f7f:af]`, + `invalid@[IPv6:5348:4ed3:5d38:67fb:e9b:acd2:c13:192.168.256.1]`, + `test@.com`, + `aaaaaaaaaaaaaaalongemailthatcausesregexDoSvulnerability@test.c`, + ]; + const emailSchema = z.string().email(); + + expect( + validEmails.every((email) => { + return emailSchema.safeParse(email).success; + }) + ).toBe(true); + expect( + invalidEmails.every((email) => { + return emailSchema.safeParse(email).success === false; + }) + ).toBe(true); +}); + +const validBase64Strings = [ + "SGVsbG8gV29ybGQ=", // "Hello World" + "VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==", // "This is an encoded string" + "TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcms=", // "Many hands make light work" + "UGF0aWVuY2UgaXMgdGhlIGtleSB0byBzdWNjZXNz", // "Patience is the key to success" + "QmFzZTY0IGVuY29kaW5nIGlzIGZ1bg==", // "Base64 encoding is fun" + "MTIzNDU2Nzg5MA==", // "1234567890" + "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=", // "abcdefghijklmnopqrstuvwxyz" + "QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo=", // "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "ISIkJSMmJyonKCk=", // "!\"#$%&'()*" + "", // Empty string is technically valid base64 + "w7/Dv8O+w74K", // ÿÿþþ +]; + +for (const str of validBase64Strings) { + test(`base64 should accept ${str}`, () => { + expect(z.string().base64().safeParse(str).success).toBe(true); + }); +} + +const invalidBase64Strings = [ + "12345", // Not padded correctly, not a multiple of 4 characters + "12345===", // Not padded correctly + "SGVsbG8gV29ybGQ", // Missing padding + "VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw", // Missing padding + "!UGF0aWVuY2UgaXMgdGhlIGtleSB0byBzdWNjZXNz", // Invalid character '!' + "?QmFzZTY0IGVuY29kaW5nIGlzIGZ1bg==", // Invalid character '?' + ".MTIzND2Nzg5MC4=", // Invalid character '.' + "QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo", // Missing padding + "w7_Dv8O-w74K", // Has - and _ characters (is base64url) +]; + +for (const str of invalidBase64Strings) { + test(`base64 should reject ${str}`, () => { + expect(z.string().base64().safeParse(str).success).toBe(false); + }); +} + +const validBase64URLStrings = [ + "SGVsbG8gV29ybGQ", // "Hello World" + "SGVsbG8gV29ybGQ=", // "Hello World" with padding + "VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw", // "This is an encoded string" + "VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==", // "This is an encoded string" with padding + "TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcms", // "Many hands make light work" + "TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcms=", // "Many hands make light work" with padding + "UGF0aWVuY2UgaXMgdGhlIGtleSB0byBzdWNjZXNz", // "Patience is the key to success" + "QmFzZTY0IGVuY29kaW5nIGlzIGZ1bg", // "Base64 encoding is fun" + "QmFzZTY0IGVuY29kaW5nIGlzIGZ1bg==", // "Base64 encoding is fun" with padding + "MTIzNDU2Nzg5MA", // "1234567890" + "MTIzNDU2Nzg5MA==", // "1234567890" with padding + "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo", // "abcdefghijklmnopqrstuvwxyz" + "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=", // "abcdefghijklmnopqrstuvwxyz with padding" + "QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo", // "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo=", // "ABCDEFGHIJKLMNOPQRSTUVWXYZ" with padding + "ISIkJSMmJyonKCk", // "!\"#$%&'()*" + "ISIkJSMmJyonKCk=", // "!\"#$%&'()*" with padding + "", // Empty string is technically valid base64url + "w7_Dv8O-w74K", // ÿÿþþ + "123456", +]; + +for (const str of validBase64URLStrings) { + test(`base64url should accept ${str}`, () => { + expect(z.string().base64url().safeParse(str).success).toBe(true); + }); +} + +const invalidBase64URLStrings = [ + "w7/Dv8O+w74K", // Has + and / characters (is base64) + "12345", // Invalid length (not a multiple of 4 characters when adding allowed number of padding characters) + "12345===", // Not padded correctly + "!UGF0aWVuY2UgaXMgdGhlIGtleSB0byBzdWNjZXNz", // Invalid character '!' + "?QmFzZTY0IGVuY29kaW5nIGlzIGZ1bg==", // Invalid character '?' + ".MTIzND2Nzg5MC4=", // Invalid character '.' +]; + +for (const str of invalidBase64URLStrings) { + test(`base64url should reject ${str}`, () => { + expect(z.string().base64url().safeParse(str).success).toBe(false); + }); +} + +function makeJwt(header: object, payload: object) { + const headerBase64 = Buffer.from(JSON.stringify(header)).toString("base64url"); + const payloadBase64 = Buffer.from(JSON.stringify(payload)).toString("base64url"); + const signature = "signature"; // Placeholder for the signature + return `${headerBase64}.${payloadBase64}.${signature}`; +} + +test("jwt validations", () => { + const jwt = z.string().jwt(); + const jwtWithAlg = z.string().jwt({ alg: "HS256" }); + + expect(() => jwt.parse("invalid")).toThrow(); + expect(() => jwt.parse("invalid.invalid")).toThrow(); + expect(() => jwt.parse("invalid.invalid.invalid")).toThrow(); + + // Valid JWTs + const d1 = makeJwt({ typ: "JWT", alg: "HS256" }, {}); + expect(() => jwt.parse(d1)).not.toThrow(); + expect(() => jwtWithAlg.parse(d1)).not.toThrow(); + + // Invalid header + const d2 = makeJwt({}, {}); + expect(() => jwt.parse(d2)).toThrow(); + + // Wrong algorithm + const d3 = makeJwt({ typ: "JWT", alg: "RS256" }, {}); + expect(() => jwtWithAlg.parse(d3)).toThrow(); + + // missing typ is fine + const d4 = makeJwt({ alg: "HS256" }, {}); + jwt.parse(d4); + + // type isn't JWT + const d5 = makeJwt({ typ: "SUP", alg: "HS256" }, { foo: "bar" }); + expect(() => jwt.parse(d5)).toThrow(); + + // Custom error message + const customMsg = "Invalid JWT token"; + const jwtWithMsg = z.string().jwt({ message: customMsg }); + try { + jwtWithMsg.parse("invalid"); + } catch (error) { + expect((error as z.ZodError).issues[0].message).toBe(customMsg); + } +}); + +test("url validations", () => { + const url = z.string().url(); + url.parse("http://google.com"); + url.parse("https://google.com/asdf?asdf=ljk3lk4&asdf=234#asdf"); + expect(() => url.parse("asdf")).toThrow(); + expect(() => url.parse("https:/")).toThrow(); + expect(() => url.parse("asdfj@lkjsdf.com")).toThrow(); +}); + +test("url error overrides", () => { + try { + z.string().url().parse("https"); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("Invalid url"); + } + try { + z.string().url("badurl").parse("https"); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("badurl"); + } + try { + z.string().url({ message: "badurl" }).parse("https"); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("badurl"); + } +}); + +test("emoji validations", () => { + const emoji = z.string().emoji(); + + emoji.parse("👋👋👋👋"); + emoji.parse("🍺👩‍🚀🫡"); + emoji.parse("💚💙💜💛❤️"); + emoji.parse("🐛🗝🐏🍡🎦🚢🏨💫🎌☘🗡😹🔒🎬➡️🍹🗂🚨⚜🕑〽️🚦🌊🍴💍🍌💰😳🌺🍃"); + emoji.parse("🇹🇷🤽🏿‍♂️"); + emoji.parse( + "😀😁😂🤣😃😄😅😆😉😊😋😎😍😘🥰😗😙😚☺️☺🙂🤗🤩🤔🤨😐😑😶🙄😏😣😥😮🤐😯😪😫😴😌😛😜😝🤤😒😓😔😕🙃🤑😲☹️☹🙁😖😞😟😤😢😭😦😧😨😩🤯😬😰😱🥵🥶😳🤪😵😡😠🤬😷🤒🤕🤢🤮🤧😇🤠🥳🥴🥺🤥🤫🤭🧐🤓😈👿🤡👹👺💀☠️☠👻👽👾🤖💩😺😸😹😻😼😽🙀😿😾🙈🙉🙊🏻🏼🏽🏾🏿👶👶🏻👶🏼👶🏽👶🏾👶🏿🧒🧒🏻🧒🏼🧒🏽🧒🏾🧒🏿👦👦🏻👦🏼👦🏽👦🏾👦🏿👧👧🏻👧🏼👧🏽👧🏾👧🏿🧑🧑🏻🧑🏼🧑🏽🧑🏾🧑🏿👨👨🏻👨🏼👨🏽👨🏾👨🏿👩👩🏻👩🏼👩🏽👩🏾👩🏿🧓🧓🏻🧓🏼🧓🏽🧓🏾🧓🏿👴👴🏻👴🏼👴🏽👴🏾👴🏿👵👵🏻👵🏼👵🏽👵🏾👵🏿👨‍⚕️👨‍⚕👨🏻‍⚕️👨🏻‍⚕👨🏼‍⚕️👨🏼‍⚕👨🏽‍⚕️👨🏽‍⚕👨🏾‍⚕️👨🏾‍⚕👨🏿‍⚕️👨🏿‍⚕👩‍⚕️👩‍⚕👩🏻‍⚕️👩🏻‍⚕👩🏼‍⚕️👩🏼‍⚕👩🏽‍⚕️👩🏽‍⚕👩🏾‍⚕️👩🏾‍⚕👩🏿‍⚕️👩🏿‍⚕👨‍🎓👨🏻‍🎓👨🏼‍🎓👨🏽‍🎓👨🏾‍🎓👨🏿‍🎓👩‍🎓👩🏻‍🎓👩🏼‍🎓👩🏽‍🎓👩🏾‍🎓👩🏿‍🎓👨‍🏫👨🏻‍🏫👨🏼‍🏫👨🏽‍🏫👨🏾‍🏫👨🏿‍🏫👩‍🏫👩🏻‍🏫👩🏼‍🏫👩🏽‍🏫👩🏾‍🏫👩🏿‍🏫👨‍⚖️👨‍⚖👨🏻‍⚖️👨🏻‍⚖👨🏼‍⚖️👨🏼‍⚖👨🏽‍⚖️👨🏽‍⚖👨🏾‍⚖️👨🏾‍⚖👨🏿‍⚖️👨🏿‍⚖👩‍⚖️👩‍⚖👩🏻‍⚖️👩🏻‍⚖👩🏼‍⚖️👩🏼‍⚖👩🏽‍⚖️👩🏽‍⚖👩🏾‍⚖️👩🏾‍⚖👩🏿‍⚖️👩🏿‍⚖👨‍🌾👨🏻‍🌾👨🏼‍🌾👨🏽‍🌾👨🏾‍🌾👨🏿‍🌾👩‍🌾👩🏻‍🌾👩🏼‍🌾👩🏽‍🌾👩🏾‍🌾👩🏿‍🌾👨‍🍳👨🏻‍🍳👨🏼‍🍳👨🏽‍🍳👨🏾‍🍳👨🏿‍🍳👩‍🍳👩🏻‍🍳👩🏼‍🍳👩🏽‍🍳👩🏾‍🍳👩🏿‍🍳👨‍🔧👨🏻‍🔧👨🏼‍🔧👨🏽‍🔧👨🏾‍🔧👨🏿‍🔧👩‍🔧👩🏻‍🔧👩🏼‍🔧👩🏽‍🔧👩🏾‍🔧👩🏿‍🔧👨‍🏭👨🏻‍🏭👨🏼‍🏭👨🏽‍🏭👨🏾‍🏭👨🏿‍🏭👩‍🏭👩🏻‍🏭👩🏼‍🏭👩🏽‍🏭👩🏾‍🏭👩🏿‍🏭👨‍💼👨🏻‍💼👨🏼‍💼👨🏽‍💼👨🏾‍💼👨🏿‍💼👩‍💼👩🏻‍💼👩🏼‍💼👩🏽‍💼👩🏾‍💼👩🏿‍💼👨‍🔬👨🏻‍🔬👨🏼‍🔬👨🏽‍🔬👨🏾‍🔬👨🏿‍🔬👩‍🔬👩🏻‍🔬👩🏼‍🔬👩🏽‍🔬👩🏾‍🔬👩🏿‍🔬👨‍💻👨🏻‍💻👨🏼‍💻👨🏽‍💻👨🏾‍💻👨🏿‍💻👩‍💻👩🏻‍💻👩🏼‍💻👩🏽‍💻👩🏾‍💻👩🏿‍💻👨‍🎤👨🏻‍🎤👨🏼‍🎤👨🏽‍🎤👨🏾‍🎤👨🏿‍🎤👩‍🎤👩🏻‍🎤👩🏼‍🎤👩🏽‍🎤👩🏾‍🎤👩🏿‍🎤👨‍🎨👨🏻‍🎨👨🏼‍🎨👨🏽‍🎨👨🏾‍🎨👨🏿‍🎨👩‍🎨👩🏻‍🎨👩🏼‍🎨👩🏽‍🎨👩🏾‍🎨👩🏿‍🎨👨‍✈️👨‍✈👨🏻‍✈️👨🏻‍✈👨🏼‍✈️👨🏼‍✈👨🏽‍✈️👨🏽‍✈👨🏾‍✈️👨🏾‍✈👨🏿‍✈️👨🏿‍✈👩‍✈️👩‍✈👩🏻‍✈️👩🏻‍✈👩🏼‍✈️👩🏼‍✈👩🏽‍✈️👩🏽‍✈👩🏾‍✈️👩🏾‍✈👩🏿‍✈️👩🏿‍✈👨‍🚀👨🏻‍🚀👨🏼‍🚀👨🏽‍🚀👨🏾‍🚀👨🏿‍🚀👩‍🚀👩🏻‍🚀👩🏼‍🚀👩🏽‍🚀👩🏾‍🚀👩🏿‍🚀👨‍🚒👨🏻‍🚒👨🏼‍🚒👨🏽‍🚒👨🏾‍🚒👨🏿‍🚒👩‍🚒👩🏻‍🚒👩🏼‍🚒👩🏽‍🚒👩🏾‍🚒👩🏿‍🚒👮👮🏻👮🏼👮🏽👮🏾👮🏿👮‍♂️👮‍♂👮🏻‍♂️👮🏻‍♂👮🏼‍♂️👮🏼‍♂👮🏽‍♂️👮🏽‍♂👮🏾‍♂️👮🏾‍♂👮🏿‍♂️👮🏿‍♂👮‍♀️👮‍♀👮🏻‍♀️👮🏻‍♀👮🏼‍♀️👮🏼‍♀👮🏽‍♀️👮🏽‍♀👮🏾‍♀️👮🏾‍♀👮🏿‍♀️👮🏿‍♀🕵️🕵🕵🏻🕵🏼🕵🏽🕵🏾🕵🏿🕵️‍♂️🕵‍♂️🕵️‍♂🕵‍♂🕵🏻‍♂️🕵🏻‍♂🕵🏼‍♂️🕵🏼‍♂🕵🏽‍♂️🕵🏽‍♂🕵🏾‍♂️🕵🏾‍♂🕵🏿‍♂️🕵🏿‍♂🕵️‍♀️🕵‍♀️🕵️‍♀🕵‍♀🕵🏻‍♀️🕵🏻‍♀🕵🏼‍♀️🕵🏼‍♀🕵🏽‍♀️🕵🏽‍♀🕵🏾‍♀️🕵🏾‍♀🕵🏿‍♀️🕵🏿‍♀💂💂🏻💂🏼💂🏽💂🏾💂🏿💂‍♂️💂‍♂💂🏻‍♂️💂🏻‍♂💂🏼‍♂️💂🏼‍♂💂🏽‍♂️💂🏽‍♂💂🏾‍♂️💂🏾‍♂💂🏿‍♂️💂🏿‍♂💂‍♀️💂‍♀💂🏻‍♀️💂🏻‍♀💂🏼‍♀️💂🏼‍♀💂🏽‍♀️💂🏽‍♀💂🏾‍♀️💂🏾‍♀💂🏿‍♀️💂🏿‍♀👷👷🏻👷🏼👷🏽👷🏾👷🏿👷‍♂️👷‍♂👷🏻‍♂️👷🏻‍♂👷🏼‍♂️👷🏼‍♂👷🏽‍♂️👷🏽‍♂👷🏾‍♂️👷🏾‍♂👷🏿‍♂️👷🏿‍♂👷‍♀️👷‍♀👷🏻‍♀️👷🏻‍♀👷🏼‍♀️👷🏼‍♀👷🏽‍♀️👷🏽‍♀👷🏾‍♀️👷🏾‍♀👷🏿‍♀️👷🏿‍♀🤴🤴🏻🤴🏼🤴🏽🤴🏾🤴🏿👸👸🏻👸🏼👸🏽👸🏾👸🏿👳👳🏻👳🏼👳🏽👳🏾👳🏿👳‍♂️👳‍♂👳🏻‍♂️👳🏻‍♂👳🏼‍♂️👳🏼‍♂👳🏽‍♂️👳🏽‍♂👳🏾‍♂️👳🏾‍♂👳🏿‍♂️👳🏿‍♂👳‍♀️👳‍♀👳🏻‍♀️👳🏻‍♀👳🏼‍♀️👳🏼‍♀👳🏽‍♀️👳🏽‍♀👳🏾‍♀️👳🏾‍♀👳🏿‍♀️👳🏿‍♀👲👲🏻👲🏼👲🏽👲🏾👲🏿🧕🧕🏻🧕🏼🧕🏽🧕🏾🧕🏿🧔🧔🏻🧔🏼🧔🏽🧔🏾🧔🏿👱👱🏻👱🏼👱🏽👱🏾👱🏿👱‍♂️👱‍♂👱🏻‍♂️👱🏻‍♂👱🏼‍♂️👱🏼‍♂👱🏽‍♂️👱🏽‍♂👱🏾‍♂️👱🏾‍♂👱🏿‍♂️👱🏿‍♂👱‍♀️👱‍♀👱🏻‍♀️👱🏻‍♀👱🏼‍♀️👱🏼‍♀👱🏽‍♀️👱🏽‍♀👱🏾‍♀️👱🏾‍♀👱🏿‍♀️👱🏿‍♀👨‍🦰👨🏻‍🦰👨🏼‍🦰👨🏽‍🦰👨🏾‍🦰👨🏿‍🦰👩‍🦰👩🏻‍🦰👩🏼‍🦰👩🏽‍🦰👩🏾‍🦰👩🏿‍🦰👨‍🦱👨🏻‍🦱👨🏼‍🦱👨🏽‍🦱👨🏾‍🦱👨🏿‍🦱👩‍🦱👩🏻‍🦱👩🏼‍🦱👩🏽‍🦱👩🏾‍🦱👩🏿‍🦱👨‍🦲👨🏻‍🦲👨🏼‍🦲👨🏽‍🦲👨🏾‍🦲👨🏿‍🦲👩‍🦲👩🏻‍🦲👩🏼‍🦲👩🏽‍🦲👩🏾‍🦲👩🏿‍🦲👨‍🦳👨🏻‍🦳👨🏼‍🦳👨🏽‍🦳👨🏾‍🦳👨🏿‍🦳👩‍🦳👩🏻‍🦳👩🏼‍🦳👩🏽‍🦳👩🏾‍🦳👩🏿‍🦳🤵🤵🏻🤵🏼🤵🏽🤵🏾🤵🏿👰👰🏻👰🏼👰🏽👰🏾👰🏿🤰🤰🏻🤰🏼🤰🏽🤰🏾🤰🏿🤱🤱🏻🤱🏼🤱🏽🤱🏾🤱🏿👼👼🏻👼🏼👼🏽👼🏾👼🏿🎅🎅🏻🎅🏼🎅🏽🎅🏾🎅🏿🤶🤶🏻🤶🏼🤶🏽🤶🏾🤶🏿🦸🦸🏻🦸🏼🦸🏽🦸🏾🦸🏿🦸‍♀️🦸‍♀🦸🏻‍♀️🦸🏻‍♀🦸🏼‍♀️🦸🏼‍♀🦸🏽‍♀️🦸🏽‍♀🦸🏾‍♀️🦸🏾‍♀🦸🏿‍♀️🦸🏿‍♀🦸‍♂️🦸‍♂🦸🏻‍♂️🦸🏻‍♂🦸🏼‍♂️🦸🏼‍♂🦸🏽‍♂️🦸🏽‍♂🦸🏾‍♂️🦸🏾‍♂🦸🏿‍♂️🦸🏿‍♂🦹🦹🏻🦹🏼🦹🏽🦹🏾🦹🏿🦹‍♀️🦹‍♀🦹🏻‍♀️🦹🏻‍♀🦹🏼‍♀️🦹🏼‍♀🦹🏽‍♀️🦹🏽‍♀🦹🏾‍♀️🦹🏾‍♀🦹🏿‍♀️🦹🏿‍♀🦹‍♂️🦹‍♂🦹🏻‍♂️🦹🏻‍♂🦹🏼‍♂️🦹🏼‍♂🦹🏽‍♂️🦹🏽‍♂🦹🏾‍♂️🦹🏾‍♂🦹🏿‍♂️🦹🏿‍♂🧙🧙🏻🧙🏼🧙🏽🧙🏾🧙🏿🧙‍♀️🧙‍♀🧙🏻‍♀️🧙🏻‍♀🧙🏼‍♀️🧙🏼‍♀🧙🏽‍♀️🧙🏽‍♀🧙🏾‍♀️🧙🏾‍♀🧙🏿‍♀️🧙🏿‍♀🧙‍♂️🧙‍♂🧙🏻‍♂️🧙🏻‍♂🧙🏼‍♂️🧙🏼‍♂🧙🏽‍♂️🧙🏽‍♂🧙🏾‍♂️🧙🏾‍♂🧙🏿‍♂️🧙🏿‍♂🧚🧚🏻🧚🏼🧚🏽🧚🏾🧚🏿🧚‍♀️🧚‍♀🧚🏻‍♀️🧚🏻‍♀🧚🏼‍♀️🧚🏼‍♀🧚🏽‍♀️🧚🏽‍♀🧚🏾‍♀️🧚🏾‍♀🧚🏿‍♀️🧚🏿‍♀🧚‍♂️🧚‍♂🧚🏻‍♂️🧚🏻‍♂🧚🏼‍♂️🧚🏼‍♂🧚🏽‍♂️🧚🏽‍♂🧚🏾‍♂️🧚🏾‍♂🧚🏿‍♂️🧚🏿‍♂🧛🧛🏻🧛🏼🧛🏽🧛🏾🧛🏿🧛‍♀️🧛‍♀🧛🏻‍♀️🧛🏻‍♀🧛🏼‍♀️🧛🏼‍♀🧛🏽‍♀️🧛🏽‍♀🧛🏾‍♀️🧛🏾‍♀🧛🏿‍♀️🧛🏿‍♀🧛‍♂️🧛‍♂🧛🏻‍♂️🧛🏻‍♂🧛🏼‍♂️🧛🏼‍♂🧛🏽‍♂️🧛🏽‍♂🧛🏾‍♂️🧛🏾‍♂🧛🏿‍♂️🧛🏿‍♂🧜🧜🏻🧜🏼🧜🏽🧜🏾🧜🏿🧜‍♀️🧜‍♀🧜🏻‍♀️🧜🏻‍♀🧜🏼‍♀️🧜🏼‍♀🧜🏽‍♀️🧜🏽‍♀🧜🏾‍♀️🧜🏾‍♀🧜🏿‍♀️🧜🏿‍♀🧜‍♂️🧜‍♂🧜🏻‍♂️🧜🏻‍♂🧜🏼‍♂️🧜🏼‍♂🧜🏽‍♂️🧜🏽‍♂🧜🏾‍♂️🧜🏾‍♂🧜🏿‍♂️🧜🏿‍♂🧝🧝🏻🧝🏼🧝🏽🧝🏾🧝🏿🧝‍♀️🧝‍♀🧝🏻‍♀️🧝🏻‍♀🧝🏼‍♀️🧝🏼‍♀🧝🏽‍♀️🧝🏽‍♀🧝🏾‍♀️🧝🏾‍♀🧝🏿‍♀️🧝🏿‍♀🧝‍♂️🧝‍♂🧝🏻‍♂️🧝🏻‍♂🧝🏼‍♂️🧝🏼‍♂🧝🏽‍♂️🧝🏽‍♂🧝🏾‍♂️🧝🏾‍♂🧝🏿‍♂️🧝🏿‍♂🧞🧞‍♀️🧞‍♀🧞‍♂️🧞‍♂🧟🧟‍♀️🧟‍♀🧟‍♂️🧟‍♂🙍🙍🏻🙍🏼🙍🏽🙍🏾🙍🏿🙍‍♂️🙍‍♂🙍🏻‍♂️🙍🏻‍♂🙍🏼‍♂️🙍🏼‍♂🙍🏽‍♂️🙍🏽‍♂🙍🏾‍♂️🙍🏾‍♂🙍🏿‍♂️🙍🏿‍♂🙍‍♀️🙍‍♀🙍🏻‍♀️🙍🏻‍♀🙍🏼‍♀️🙍🏼‍♀🙍🏽‍♀️🙍🏽‍♀🙍🏾‍♀️🙍🏾‍♀🙍🏿‍♀️🙍🏿‍♀🙎🙎🏻🙎🏼🙎🏽🙎🏾🙎🏿🙎‍♂️🙎‍♂🙎🏻‍♂️🙎🏻‍♂🙎🏼‍♂️🙎🏼‍♂🙎🏽‍♂️🙎🏽‍♂🙎🏾‍♂️🙎🏾‍♂🙎🏿‍♂️🙎🏿‍♂🙎‍♀️🙎‍♀🙎🏻‍♀️🙎🏻‍♀🙎🏼‍♀️🙎🏼‍♀🙎🏽‍♀️🙎🏽‍♀🙎🏾‍♀️🙎🏾‍♀🙎🏿‍♀️🙎🏿‍♀🙅🙅🏻🙅🏼🙅🏽🙅🏾🙅🏿🙅‍♂️🙅‍♂🙅🏻‍♂️🙅🏻‍♂🙅🏼‍♂️🙅🏼‍♂🙅🏽‍♂️🙅🏽‍♂🙅🏾‍♂️🙅🏾‍♂🙅🏿‍♂️🙅🏿‍♂🙅‍♀️🙅‍♀🙅🏻‍♀️🙅🏻‍♀🙅🏼‍♀️🙅🏼‍♀🙅🏽‍♀️🙅🏽‍♀🙅🏾‍♀️🙅🏾‍♀🙅🏿‍♀️🙅🏿‍♀🙆🙆🏻🙆🏼🙆🏽🙆🏾🙆🏿🙆‍♂️🙆‍♂🙆🏻‍♂️🙆🏻‍♂🙆🏼‍♂️🙆🏼‍♂🙆🏽‍♂️🙆🏽‍♂🙆🏾‍♂️🙆🏾‍♂🙆🏿‍♂️🙆🏿‍♂🙆‍♀️🙆‍♀🙆🏻‍♀️🙆🏻‍♀🙆🏼‍♀️🙆🏼‍♀🙆🏽‍♀️🙆🏽‍♀🙆🏾‍♀️🙆🏾‍♀🙆🏿‍♀️🙆🏿‍♀💁💁🏻💁🏼💁🏽💁🏾💁🏿💁‍♂️💁‍♂💁🏻‍♂️💁🏻‍♂💁🏼‍♂️💁🏼‍♂💁🏽‍♂️💁🏽‍♂💁🏾‍♂️💁🏾‍♂💁🏿‍♂️💁🏿‍♂💁‍♀️💁‍♀💁🏻‍♀️💁🏻‍♀💁🏼‍♀️💁🏼‍♀💁🏽‍♀️💁🏽‍♀💁🏾‍♀️💁🏾‍♀💁🏿‍♀️💁🏿‍♀🙋🙋🏻🙋🏼🙋🏽🙋🏾🙋🏿🙋‍♂️🙋‍♂🙋🏻‍♂️🙋🏻‍♂🙋🏼‍♂️🙋🏼‍♂🙋🏽‍♂️🙋🏽‍♂🙋🏾‍♂️🙋🏾‍♂🙋🏿‍♂️🙋🏿‍♂🙋‍♀️🙋‍♀🙋🏻‍♀️🙋🏻‍♀🙋🏼‍♀️🙋🏼‍♀🙋🏽‍♀️🙋🏽‍♀🙋🏾‍♀️🙋🏾‍♀🙋🏿‍♀️🙋🏿‍♀🙇🙇🏻🙇🏼🙇🏽🙇🏾🙇🏿🙇‍♂️🙇‍♂🙇🏻‍♂️🙇🏻‍♂🙇🏼‍♂️🙇🏼‍♂🙇🏽‍♂️🙇🏽‍♂🙇🏾‍♂️🙇🏾‍♂🙇🏿‍♂️🙇🏿‍♂🙇‍♀️🙇‍♀🙇🏻‍♀️🙇🏻‍♀🙇🏼‍♀️🙇🏼‍♀🙇🏽‍♀️🙇🏽‍♀🙇🏾‍♀️🙇🏾‍♀🙇🏿‍♀️🙇🏿‍♀🤦🤦🏻🤦🏼🤦🏽🤦🏾🤦🏿🤦‍♂️🤦‍♂🤦🏻‍♂️🤦🏻‍♂🤦🏼‍♂️🤦🏼‍♂🤦🏽‍♂️🤦🏽‍♂🤦🏾‍♂️🤦🏾‍♂🤦🏿‍♂️🤦🏿‍♂🤦‍♀️🤦‍♀🤦🏻‍♀️🤦🏻‍♀🤦🏼‍♀️🤦🏼‍♀🤦🏽‍♀️🤦🏽‍♀🤦🏾‍♀️🤦🏾‍♀🤦🏿‍♀️🤦🏿‍♀🤷🤷🏻🤷🏼🤷🏽🤷🏾🤷🏿🤷‍♂️🤷‍♂🤷🏻‍♂️🤷🏻‍♂🤷🏼‍♂️🤷🏼‍♂🤷🏽‍♂️🤷🏽‍♂🤷🏾‍♂️🤷🏾‍♂🤷🏿‍♂️🤷🏿‍♂🤷‍♀️🤷‍♀🤷🏻‍♀️🤷🏻‍♀🤷🏼‍♀️🤷🏼‍♀🤷🏽‍♀️🤷🏽‍♀🤷🏾‍♀️🤷🏾‍♀🤷🏿‍♀️🤷🏿‍♀💆💆🏻💆🏼💆🏽💆🏾💆🏿💆‍♂️💆‍♂💆🏻‍♂️💆🏻‍♂💆🏼‍♂️💆🏼‍♂💆🏽‍♂️💆🏽‍♂💆🏾‍♂️💆🏾‍♂💆🏿‍♂️💆🏿‍♂💆‍♀️💆‍♀💆🏻‍♀️💆🏻‍♀💆🏼‍♀️💆🏼‍♀💆🏽‍♀️💆🏽‍♀💆🏾‍♀️💆🏾‍♀💆🏿‍♀️💆🏿‍♀💇💇🏻💇🏼💇🏽💇🏾💇🏿💇‍♂️💇‍♂💇🏻‍♂️💇🏻‍♂💇🏼‍♂️💇🏼‍♂💇🏽‍♂️💇🏽‍♂💇🏾‍♂️💇🏾‍♂💇🏿‍♂️💇🏿‍♂💇‍♀️💇‍♀💇🏻‍♀️💇🏻‍♀💇🏼‍♀️💇🏼‍♀💇🏽‍♀️💇🏽‍♀💇🏾‍♀️💇🏾‍♀💇🏿‍♀️💇🏿‍♀🚶🚶🏻🚶🏼🚶🏽🚶🏾🚶🏿🚶‍♂️🚶‍♂🚶🏻‍♂️🚶🏻‍♂🚶🏼‍♂️🚶🏼‍♂🚶🏽‍♂️🚶🏽‍♂🚶🏾‍♂️🚶🏾‍♂🚶🏿‍♂️🚶🏿‍♂🚶‍♀️🚶‍♀🚶🏻‍♀️🚶🏻‍♀🚶🏼‍♀️🚶🏼‍♀🚶🏽‍♀️🚶🏽‍♀🚶🏾‍♀️🚶🏾‍♀🚶🏿‍♀️🚶🏿‍♀🏃🏃🏻🏃🏼🏃🏽🏃🏾🏃🏿🏃‍♂️🏃‍♂🏃🏻‍♂️🏃🏻‍♂🏃🏼‍♂️🏃🏼‍♂🏃🏽‍♂️🏃🏽‍♂🏃🏾‍♂️🏃🏾‍♂🏃🏿‍♂️🏃🏿‍♂🏃‍♀️🏃‍♀🏃🏻‍♀️🏃🏻‍♀🏃🏼‍♀️🏃🏼‍♀🏃🏽‍♀️🏃🏽‍♀🏃🏾‍♀️🏃🏾‍♀🏃🏿‍♀️🏃🏿‍♀💃💃🏻💃🏼💃🏽💃🏾💃🏿🕺🕺🏻🕺🏼🕺🏽🕺🏾🕺🏿👯👯‍♂️👯‍♂👯‍♀️👯‍♀🧖🧖🏻🧖🏼🧖🏽🧖🏾🧖🏿🧖‍♀️🧖‍♀🧖🏻‍♀️🧖🏻‍♀🧖🏼‍♀️🧖🏼‍♀🧖🏽‍♀️🧖🏽‍♀🧖🏾‍♀️🧖🏾‍♀🧖🏿‍♀️🧖🏿‍♀🧖‍♂️🧖‍♂🧖🏻‍♂️🧖🏻‍♂🧖🏼‍♂️🧖🏼‍♂🧖🏽‍♂️🧖🏽‍♂🧖🏾‍♂️🧖🏾‍♂🧖🏿‍♂️🧖🏿‍♂🧗🧗🏻🧗🏼🧗🏽🧗🏾🧗🏿🧗‍♀️🧗‍♀🧗🏻‍♀️🧗🏻‍♀🧗🏼‍♀️🧗🏼‍♀🧗🏽‍♀️🧗🏽‍♀🧗🏾‍♀️🧗🏾‍♀🧗🏿‍♀️🧗🏿‍♀🧗‍♂️🧗‍♂🧗🏻‍♂️🧗🏻‍♂🧗🏼‍♂️🧗🏼‍♂🧗🏽‍♂️🧗🏽‍♂🧗🏾‍♂️🧗🏾‍♂🧗🏿‍♂️🧗🏿‍♂🧘🧘🏻🧘🏼🧘🏽🧘🏾🧘🏿🧘‍♀️🧘‍♀🧘🏻‍♀️🧘🏻‍♀🧘🏼‍♀️🧘🏼‍♀🧘🏽‍♀️🧘🏽‍♀🧘🏾‍♀️🧘🏾‍♀🧘🏿‍♀️🧘🏿‍♀🧘‍♂️🧘‍♂🧘🏻‍♂️🧘🏻‍♂🧘🏼‍♂️🧘🏼‍♂🧘🏽‍♂️🧘🏽‍♂🧘🏾‍♂️🧘🏾‍♂🧘🏿‍♂️🧘🏿‍♂🛀🛀🏻🛀🏼🛀🏽🛀🏾🛀🏿🛌🛌🏻🛌🏼🛌🏽🛌🏾🛌🏿🕴️🕴🕴🏻🕴🏼🕴🏽🕴🏾🕴🏿🗣️🗣👤👥🤺🏇🏇🏻🏇🏼🏇🏽🏇🏾🏇🏿⛷️⛷🏂🏂🏻🏂🏼🏂🏽🏂🏾🏂🏿🏌️🏌🏌🏻🏌🏼🏌🏽🏌🏾🏌🏿🏌️‍♂️🏌‍♂️🏌️‍♂🏌‍♂🏌🏻‍♂️🏌🏻‍♂🏌🏼‍♂️🏌🏼‍♂🏌🏽‍♂️🏌🏽‍♂🏌🏾‍♂️🏌🏾‍♂🏌🏿‍♂️🏌🏿‍♂🏌️‍♀️🏌‍♀️🏌️‍♀🏌‍♀🏌🏻‍♀️🏌🏻‍♀🏌🏼‍♀️🏌🏼‍♀🏌🏽‍♀️🏌🏽‍♀🏌🏾‍♀️🏌🏾‍♀🏌🏿‍♀️🏌🏿‍♀🏄🏄🏻🏄🏼🏄🏽🏄🏾🏄🏿🏄‍♂️🏄‍♂🏄🏻‍♂️🏄🏻‍♂🏄🏼‍♂️🏄🏼‍♂🏄🏽‍♂️🏄🏽‍♂🏄🏾‍♂️🏄🏾‍♂🏄🏿‍♂️🏄🏿‍♂🏄‍♀️🏄‍♀🏄🏻‍♀️🏄🏻‍♀🏄🏼‍♀️🏄🏼‍♀🏄🏽‍♀️🏄🏽‍♀🏄🏾‍♀️🏄🏾‍♀🏄🏿‍♀️🏄🏿‍♀🚣🚣🏻🚣🏼🚣🏽🚣🏾🚣🏿🚣‍♂️🚣‍♂🚣🏻‍♂️🚣🏻‍♂🚣🏼‍♂️🚣🏼‍♂🚣🏽‍♂️🚣🏽‍♂🚣🏾‍♂️🚣🏾‍♂🚣🏿‍♂️🚣🏿‍♂🚣‍♀️🚣‍♀🚣🏻‍♀️🚣🏻‍♀🚣🏼‍♀️🚣🏼‍♀🚣🏽‍♀️🚣🏽‍♀🚣🏾‍♀️🚣🏾‍♀🚣🏿‍♀️🚣🏿‍♀🏊🏊🏻🏊🏼🏊🏽🏊🏾🏊🏿🏊‍♂️🏊‍♂🏊🏻‍♂️🏊🏻‍♂🏊🏼‍♂️🏊🏼‍♂🏊🏽‍♂️🏊🏽‍♂🏊🏾‍♂️🏊🏾‍♂🏊🏿‍♂️🏊🏿‍♂🏊‍♀️🏊‍♀🏊🏻‍♀️🏊🏻‍♀🏊🏼‍♀️🏊🏼‍♀🏊🏽‍♀️🏊🏽‍♀🏊🏾‍♀️🏊🏾‍♀🏊🏿‍♀️🏊🏿‍♀⛹️⛹⛹🏻⛹🏼⛹🏽⛹🏾⛹🏿⛹️‍♂️⛹‍♂️⛹️‍♂⛹‍♂⛹🏻‍♂️⛹🏻‍♂⛹🏼‍♂️⛹🏼‍♂⛹🏽‍♂️⛹🏽‍♂⛹🏾‍♂️⛹🏾‍♂⛹🏿‍♂️⛹🏿‍♂⛹️‍♀️⛹‍♀️⛹️‍♀⛹‍♀⛹🏻‍♀️⛹🏻‍♀⛹🏼‍♀️⛹🏼‍♀⛹🏽‍♀️⛹🏽‍♀⛹🏾‍♀️⛹🏾‍♀⛹🏿‍♀️⛹🏿‍♀🏋️🏋🏋🏻🏋🏼🏋🏽🏋🏾🏋🏿🏋️‍♂️🏋‍♂️🏋️‍♂🏋‍♂🏋🏻‍♂️🏋🏻‍♂🏋🏼‍♂️🏋🏼‍♂🏋🏽‍♂️🏋🏽‍♂🏋🏾‍♂️🏋🏾‍♂🏋🏿‍♂️🏋🏿‍♂🏋️‍♀️🏋‍♀️🏋️‍♀🏋‍♀🏋🏻‍♀️🏋🏻‍♀🏋🏼‍♀️🏋🏼‍♀🏋🏽‍♀️🏋🏽‍♀🏋🏾‍♀️🏋🏾‍♀🏋🏿‍♀️🏋🏿‍♀🚴🚴🏻🚴🏼🚴🏽🚴🏾🚴🏿🚴‍♂️🚴‍♂🚴🏻‍♂️🚴🏻‍♂🚴🏼‍♂️🚴🏼‍♂🚴🏽‍♂️🚴🏽‍♂🚴🏾‍♂️🚴🏾‍♂🚴🏿‍♂️🚴🏿‍♂🚴‍♀️🚴‍♀🚴🏻‍♀️🚴🏻‍♀🚴🏼‍♀️🚴🏼‍♀🚴🏽‍♀️🚴🏽‍♀🚴🏾‍♀️🚴🏾‍♀🚴🏿‍♀️🚴🏿‍♀🚵🚵🏻🚵🏼🚵🏽🚵🏾🚵🏿🚵‍♂️🚵‍♂🚵🏻‍♂️🚵🏻‍♂🚵🏼‍♂️🚵🏼‍♂🚵🏽‍♂️🚵🏽‍♂🚵🏾‍♂️🚵🏾‍♂🚵🏿‍♂️🚵🏿‍♂🚵‍♀️🚵‍♀🚵🏻‍♀️🚵🏻‍♀🚵🏼‍♀️🚵🏼‍♀🚵🏽‍♀️🚵🏽‍♀🚵🏾‍♀️🚵🏾‍♀🚵🏿‍♀️🚵🏿‍♀🏎️🏎🏍️🏍🤸🤸🏻🤸🏼🤸🏽🤸🏾🤸🏿🤸‍♂️🤸‍♂🤸🏻‍♂️🤸🏻‍♂🤸🏼‍♂️🤸🏼‍♂🤸🏽‍♂️🤸🏽‍♂🤸🏾‍♂️🤸🏾‍♂🤸🏿‍♂️🤸🏿‍♂🤸‍♀️🤸‍♀🤸🏻‍♀️🤸🏻‍♀🤸🏼‍♀️🤸🏼‍♀🤸🏽‍♀️🤸🏽‍♀🤸🏾‍♀️🤸🏾‍♀🤸🏿‍♀️🤸🏿‍♀🤼🤼‍♂️🤼‍♂🤼‍♀️🤼‍♀🤽🤽🏻🤽🏼🤽🏽🤽🏾🤽🏿🤽‍♂️🤽‍♂🤽🏻‍♂️🤽🏻‍♂🤽🏼‍♂️🤽🏼‍♂🤽🏽‍♂️🤽🏽‍♂🤽🏾‍♂️🤽🏾‍♂🤽🏿‍♂️🤽🏿‍♂🤽‍♀️🤽‍♀🤽🏻‍♀️🤽🏻‍♀🤽🏼‍♀️🤽🏼‍♀🤽🏽‍♀️🤽🏽‍♀🤽🏾‍♀️🤽🏾‍♀🤽🏿‍♀️🤽🏿‍♀🤾🤾🏻🤾🏼🤾🏽🤾🏾🤾🏿🤾‍♂️🤾‍♂🤾🏻‍♂️🤾🏻‍♂🤾🏼‍♂️🤾🏼‍♂🤾🏽‍♂️🤾🏽‍♂🤾🏾‍♂️🤾🏾‍♂🤾🏿‍♂️🤾🏿‍♂🤾‍♀️🤾‍♀🤾🏻‍♀️🤾🏻‍♀🤾🏼‍♀️🤾🏼‍♀🤾🏽‍♀️🤾🏽‍♀🤾🏾‍♀️🤾🏾‍♀🤾🏿‍♀️🤾🏿‍♀🤹🤹🏻🤹🏼🤹🏽🤹🏾🤹🏿🤹‍♂️🤹‍♂🤹🏻‍♂️🤹🏻‍♂🤹🏼‍♂️🤹🏼‍♂🤹🏽‍♂️🤹🏽‍♂🤹🏾‍♂️🤹🏾‍♂🤹🏿‍♂️🤹🏿‍♂🤹‍♀️🤹‍♀🤹🏻‍♀️🤹🏻‍♀🤹🏼‍♀️🤹🏼‍♀🤹🏽‍♀️🤹🏽‍♀🤹🏾‍♀️🤹🏾‍♀🤹🏿‍♀️🤹🏿‍♀👫👬👭💏👩‍❤️‍💋‍👨👩‍❤‍💋‍👨👨‍❤️‍💋‍👨👨‍❤‍💋‍👨👩‍❤️‍💋‍👩👩‍❤‍💋‍👩💑👩‍❤️‍👨👩‍❤‍👨👨‍❤️‍👨👨‍❤‍👨👩‍❤️‍👩👩‍❤‍👩👪👨‍👩‍👦👨‍👩‍👧👨‍👩‍👧‍👦👨‍👩‍👦‍👦👨‍👩‍👧‍👧👨‍👨‍👦👨‍👨‍👧👨‍👨‍👧‍👦👨‍👨‍👦‍👦👨‍👨‍👧‍👧👩‍👩‍👦👩‍👩‍👧👩‍👩‍👧‍👦👩‍👩‍👦‍👦👩‍👩‍👧‍👧👨‍👦👨‍👦‍👦👨‍👧👨‍👧‍👦👨‍👧‍👧👩‍👦👩‍👦‍👦👩‍👧👩‍👧‍👦👩‍👧‍👧🤳🤳🏻🤳🏼🤳🏽🤳🏾🤳🏿💪💪🏻💪🏼💪🏽💪🏾💪🏿🦵🦵🏻🦵🏼🦵🏽🦵🏾🦵🏿🦶🦶🏻🦶🏼🦶🏽🦶🏾🦶🏿👈👈🏻👈🏼👈🏽👈🏾👈🏿👉👉🏻👉🏼👉🏽👉🏾👉🏿☝️☝☝🏻☝🏼☝🏽☝🏾☝🏿👆👆🏻👆🏼👆🏽👆🏾👆🏿🖕🖕🏻🖕🏼🖕🏽🖕🏾🖕🏿👇👇🏻👇🏼👇🏽👇🏾👇🏿✌️✌✌🏻✌🏼✌🏽✌🏾✌🏿🤞🤞🏻🤞🏼🤞🏽🤞🏾🤞🏿🖖🖖🏻🖖🏼🖖🏽🖖🏾🖖🏿🤘🤘🏻🤘🏼🤘🏽🤘🏾🤘🏿🤙🤙🏻🤙🏼🤙🏽🤙🏾🤙🏿🖐️🖐🖐🏻🖐🏼🖐🏽🖐🏾🖐🏿✋✋🏻✋🏼✋🏽✋🏾✋🏿👌👌🏻👌🏼👌🏽👌🏾👌🏿👍👍🏻👍🏼👍🏽👍🏾👍🏿👎👎🏻👎🏼👎🏽👎🏾👎🏿✊✊🏻✊🏼✊🏽✊🏾✊🏿👊👊🏻👊🏼👊🏽👊🏾👊🏿🤛🤛🏻🤛🏼🤛🏽🤛🏾🤛🏿🤜🤜🏻🤜🏼🤜🏽🤜🏾🤜🏿🤚🤚🏻🤚🏼🤚🏽🤚🏾🤚🏿👋👋🏻👋🏼👋🏽👋🏾👋🏿🤟🤟🏻🤟🏼🤟🏽🤟🏾🤟🏿✍️✍✍🏻✍🏼✍🏽✍🏾✍🏿👏👏🏻👏🏼👏🏽👏🏾👏🏿👐👐🏻👐🏼👐🏽👐🏾👐🏿🙌🙌🏻🙌🏼🙌🏽🙌🏾🙌🏿🤲🤲🏻🤲🏼🤲🏽🤲🏾🤲🏿🙏🙏🏻🙏🏼🙏🏽🙏🏾🙏🏿🤝💅💅🏻💅🏼💅🏽💅🏾💅🏿👂👂🏻👂🏼👂🏽👂🏾👂🏿👃👃🏻👃🏼👃🏽👃🏾👃🏿🦰🦱🦲🦳👣👀👁️👁👁️‍🗨️👁‍🗨️👁️‍🗨👁‍🗨🧠🦴🦷👅👄💋💘❤️❤💓💔💕💖💗💙💚💛🧡💜🖤💝💞💟❣️❣💌💤💢💣💥💦💨💫💬🗨️🗨🗯️🗯💭🕳️🕳👓🕶️🕶🥽🥼👔👕👖🧣🧤🧥🧦👗👘👙👚👛👜👝🛍️🛍🎒👞👟🥾🥿👠👡👢👑👒🎩🎓🧢⛑️⛑📿💄💍💎🐵🐒🦍🐶🐕🐩🐺🦊🦝🐱🐈🦁🐯🐅🐆🐴🐎🦄🦓🦌🐮🐂🐃🐄🐷🐖🐗🐽🐏🐑🐐🐪🐫🦙🦒🐘🦏🦛🐭🐁🐀🐹🐰🐇🐿️🐿🦔🦇🐻🐨🐼🦘🦡🐾🦃🐔🐓🐣🐤🐥🐦🐧🕊️🕊🦅🦆🦢🦉🦚🦜🐸🐊🐢🦎🐍🐲🐉🦕🦖🐳🐋🐬🐟🐠🐡🦈🐙🐚🦀🦞🦐🦑🐌🦋🐛🐜🐝🐞🦗🕷️🕷🕸️🕸🦂🦟🦠💐🌸💮🏵️🏵🌹🥀🌺🌻🌼🌷🌱🌲🌳🌴🌵🌾🌿☘️☘🍀🍁🍂🍃🍇🍈🍉🍊🍋🍌🍍🥭🍎🍏🍐🍑🍒🍓🥝🍅🥥🥑🍆🥔🥕🌽🌶️🌶🥒🥬🥦🍄🥜🌰🍞🥐🥖🥨🥯🥞🧀🍖🍗🥩🥓🍔🍟🍕🌭🥪🌮🌯🥙🥚🍳🥘🍲🥣🥗🍿🧂🥫🍱🍘🍙🍚🍛🍜🍝🍠🍢🍣🍤🍥🥮🍡🥟🥠🥡🍦🍧🍨🍩🍪🎂🍰🧁🥧🍫🍬🍭🍮🍯🍼🥛☕🍵🍶🍾🍷🍸🍹🍺🍻🥂🥃🥤🥢🍽️🍽🍴🥄🔪🏺🌍🌎🌏🌐🗺️🗺🗾🧭🏔️🏔⛰️⛰🌋🗻🏕️🏕🏖️🏖🏜️🏜🏝️🏝🏞️🏞🏟️🏟🏛️🏛🏗️🏗🧱🏘️🏘🏚️🏚🏠🏡🏢🏣🏤🏥🏦🏨🏩🏪🏫🏬🏭🏯🏰💒🗼🗽⛪🕌🕍⛩️⛩🕋⛲⛺🌁🌃🏙️🏙🌄🌅🌆🌇🌉♨️♨🌌🎠🎡🎢💈🎪🚂🚃🚄🚅🚆🚇🚈🚉🚊🚝🚞🚋🚌🚍🚎🚐🚑🚒🚓🚔🚕🚖🚗🚘🚙🚚🚛🚜🚲🛴🛹🛵🚏🛣️🛣🛤️🛤🛢️🛢⛽🚨🚥🚦🛑🚧⚓⛵🛶🚤🛳️🛳⛴️⛴🛥️🛥🚢✈️✈🛩️🛩🛫🛬💺🚁🚟🚠🚡🛰️🛰🚀🛸🛎️🛎🧳⌛⏳⌚⏰⏱️⏱⏲️⏲🕰️🕰🕛🕧🕐🕜🕑🕝🕒🕞🕓🕟🕔🕠🕕🕡🕖🕢🕗🕣🕘🕤🕙🕥🕚🕦🌑🌒🌓🌔🌕🌖🌗🌘🌙🌚🌛🌜🌡️🌡☀️☀🌝🌞⭐🌟🌠☁️☁⛅⛈️⛈🌤️🌤🌥️🌥🌦️🌦🌧️🌧🌨️🌨🌩️🌩🌪️🌪🌫️🌫🌬️🌬🌀🌈🌂☂️☂☔⛱️⛱⚡❄️❄☃️☃⛄☄️☄🔥💧🌊🎃🎄🎆🎇🧨✨🎈🎉🎊🎋🎍🎎🎏🎐🎑🧧🎀🎁🎗️🎗🎟️🎟🎫🎖️🎖🏆🏅🥇🥈🥉⚽⚾🥎🏀🏐🏈🏉🎾🥏🎳🏏🏑🏒🥍🏓🏸🥊🥋🥅⛳⛸️⛸🎣🎽🎿🛷🥌🎯🎱🔮🧿🎮🕹️🕹🎰🎲🧩🧸♠️♠♥️♥♦️♦♣️♣♟️♟🃏🀄🎴🎭🖼️🖼🎨🧵🧶🔇🔈🔉🔊📢📣📯🔔🔕🎼🎵🎶🎙️🎙🎚️🎚🎛️🎛🎤🎧📻🎷🎸🎹🎺🎻🥁📱📲☎️☎📞📟📠🔋🔌💻🖥️🖥🖨️🖨⌨️⌨🖱️🖱🖲️🖲💽💾💿📀🧮🎥🎞️🎞📽️📽🎬📺📷📸📹📼🔍🔎🕯️🕯💡🔦🏮📔📕📖📗📘📙📚📓📒📃📜📄📰🗞️🗞📑🔖🏷️🏷💰💴💵💶💷💸💳🧾💹💱💲✉️✉📧📨📩📤📥📦📫📪📬📭📮🗳️🗳✏️✏✒️✒🖋️🖋🖊️🖊🖌️🖌🖍️🖍📝💼📁📂🗂️🗂📅📆🗒️🗒🗓️🗓📇📈📉📊📋📌📍📎🖇️🖇📏📐✂️✂🗃️🗃🗄️🗄🗑️🗑🔒🔓🔏🔐🔑🗝️🗝🔨⛏️⛏⚒️⚒🛠️🛠🗡️🗡⚔️⚔🔫🏹🛡️🛡🔧🔩⚙️⚙🗜️🗜⚖️⚖🔗⛓️⛓🧰🧲⚗️⚗🧪🧫🧬🔬🔭📡💉💊🚪🛏️🛏🛋️🛋🚽🚿🛁🧴🧷🧹🧺🧻🧼🧽🧯🛒🚬⚰️⚰⚱️⚱🗿🏧🚮🚰♿🚹🚺🚻🚼🚾🛂🛃🛄🛅⚠️⚠🚸⛔🚫🚳🚭🚯🚱🚷📵🔞☢️☢☣️☣⬆️⬆↗️↗➡️➡↘️↘⬇️⬇↙️↙⬅️⬅↖️↖↕️↕↔️↔↩️↩↪️↪⤴️⤴⤵️⤵🔃🔄🔙🔚🔛🔜🔝🛐⚛️⚛🕉️🕉✡️✡☸️☸☯️☯✝️✝☦️☦☪️☪☮️☮🕎🔯♈♉♊♋♌♍♎♏♐♑♒♓⛎🔀🔁🔂▶️▶⏩⏭️⏭⏯️⏯◀️◀⏪⏮️⏮🔼⏫🔽⏬⏸️⏸⏹️⏹⏺️⏺⏏️⏏🎦🔅🔆📶📳📴♀️♀♂️♂⚕️⚕♾️♾♻️♻⚜️⚜🔱📛🔰⭕✅☑️☑✔️✔✖️✖❌❎➕➖➗➰➿〽️〽✳️✳✴️✴❇️❇‼️‼⁉️⁉❓❔❕❗〰️〰©️©®️®™️™#️⃣#⃣*️⃣*⃣0️⃣0⃣1️⃣1⃣2️⃣2⃣3️⃣3⃣4️⃣4⃣5️⃣5⃣6️⃣6⃣7️⃣7⃣8️⃣8⃣9️⃣9⃣🔟💯🔠🔡🔢🔣🔤🅰️🅰🆎🅱️🅱🆑🆒🆓ℹ️ℹ🆔Ⓜ️Ⓜ🆕🆖🅾️🅾🆗🅿️🅿🆘🆙🆚🈁🈂️🈂🈷️🈷🈶🈯🉐🈹🈚🈲🉑🈸🈴🈳㊗️㊗㊙️㊙🈺🈵▪️▪▫️▫◻️◻◼️◼◽◾⬛⬜🔶🔷🔸🔹🔺🔻💠🔘🔲🔳⚪⚫🔴🔵🏁🚩🎌🏴🏳️🏳🏳️‍🌈🏳‍🌈🏴‍☠️🏴‍☠🇦🇨🇦🇩🇦🇪🇦🇫🇦🇬🇦🇮🇦🇱🇦🇲🇦🇴🇦🇶🇦🇷🇦🇸🇦🇹🇦🇺🇦🇼🇦🇽🇦🇿🇧🇦🇧🇧🇧🇩🇧🇪🇧🇫🇧🇬🇧🇭🇧🇮🇧🇯🇧🇱🇧🇲🇧🇳🇧🇴🇧🇶🇧🇷🇧🇸🇧🇹🇧🇻🇧🇼🇧🇾🇧🇿🇨🇦🇨🇨🇨🇩🇨🇫🇨🇬🇨🇭🇨🇮🇨🇰🇨🇱🇨🇲🇨🇳🇨🇴🇨🇵🇨🇷🇨🇺🇨🇻🇨🇼🇨🇽🇨🇾🇨🇿🇩🇪🇩🇬🇩🇯🇩🇰🇩🇲🇩🇴🇩🇿🇪🇦🇪🇨🇪🇪🇪🇬🇪🇭🇪🇷🇪🇸🇪🇹🇪🇺🇫🇮🇫🇯🇫🇰🇫🇲🇫🇴🇫🇷🇬🇦🇬🇧🇬🇩🇬🇪🇬🇫🇬🇬🇬🇭🇬🇮🇬🇱🇬🇲🇬🇳🇬🇵🇬🇶🇬🇷🇬🇸🇬🇹🇬🇺🇬🇼🇬🇾🇭🇰🇭🇲🇭🇳🇭🇷🇭🇹🇭🇺🇮🇨🇮🇩🇮🇪🇮🇱🇮🇲🇮🇳🇮🇴🇮🇶🇮🇷🇮🇸🇮🇹🇯🇪🇯🇲🇯🇴🇯🇵🇰🇪🇰🇬🇰🇭🇰🇮🇰🇲🇰🇳🇰🇵🇰🇷🇰🇼🇰🇾🇰🇿🇱🇦🇱🇧🇱🇨🇱🇮🇱🇰🇱🇷🇱🇸🇱🇹🇱🇺🇱🇻🇱🇾🇲🇦🇲🇨🇲🇩🇲🇪🇲🇫🇲🇬🇲🇭🇲🇰🇲🇱🇲🇲🇲🇳🇲🇴🇲🇵🇲🇶🇲🇷🇲🇸🇲🇹🇲🇺🇲🇻🇲🇼🇲🇽🇲🇾🇲🇿🇳🇦🇳🇨🇳🇪🇳🇫🇳🇬🇳🇮🇳🇱🇳🇴🇳🇵🇳🇷🇳🇺🇳🇿🇴🇲🇵🇦🇵🇪🇵🇫🇵🇬🇵🇭🇵🇰🇵🇱🇵🇲🇵🇳🇵🇷🇵🇸🇵🇹🇵🇼🇵🇾🇶🇦🇷🇪🇷🇴🇷🇸🇷🇺🇷🇼🇸🇦🇸🇧🇸🇨🇸🇩🇸🇪🇸🇬🇸🇭🇸🇮🇸🇯🇸🇰🇸🇱🇸🇲🇸🇳🇸🇴🇸🇷🇸🇸🇸🇹🇸🇻🇸🇽🇸🇾🇸🇿🇹🇦🇹🇨🇹🇩🇹🇫🇹🇬🇹🇭🇹🇯🇹🇰🇹🇱🇹🇲🇹🇳🇹🇴🇹🇷🇹🇹🇹🇻🇹🇼🇹🇿🇺🇦🇺🇬🇺🇲🇺🇳🇺🇸🇺🇾🇺🇿🇻🇦🇻🇨🇻🇪🇻🇬🇻🇮🇻🇳🇻🇺🇼🇫🇼🇸🇽🇰🇾🇪🇾🇹🇿🇦🇿🇲🇿🇼🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿" + ); + expect(() => emoji.parse(":-)")).toThrow(); + expect(() => emoji.parse("😀 is an emoji")).toThrow(); + expect(() => emoji.parse("😀stuff")).toThrow(); + expect(() => emoji.parse("stuff😀")).toThrow(); +}); + +test("uuid", () => { + const uuid = z.string().uuid("custom error"); + uuid.parse("9491d710-3185-4e06-bea0-6a2f275345e0"); + uuid.parse("d89e7b01-7598-ed11-9d7a-0022489382fd"); // new sequential id + uuid.parse("00000000-0000-0000-0000-000000000000"); + uuid.parse("b3ce60f8-e8b9-40f5-1150-172ede56ff74"); // Variant 0 - RFC 9562/4122: Reserved, NCS backward compatibility + uuid.parse("92e76bf9-28b3-4730-cd7f-cb6bc51f8c09"); // Variant 2 - RFC 9562/4122: Reserved, Microsoft Corporation backward compatibility + const result = uuid.safeParse("9491d710-3185-4e06-bea0-6a2f275345e0X"); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues[0].message).toEqual("custom error"); + } +}); + +test("bad uuid", () => { + const uuid = z.string().uuid("custom error"); + uuid.parse("9491d710-3185-4e06-bea0-6a2f275345e0"); + const result = uuid.safeParse("invalid uuid"); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues[0].message).toEqual("custom error"); + } +}); + +test("nanoid", () => { + const nanoid = z.string().nanoid("custom error"); + nanoid.parse("lfNZluvAxMkf7Q8C5H-QS"); + nanoid.parse("mIU_4PJWikaU8fMbmkouz"); + nanoid.parse("Hb9ZUtUa2JDm_dD-47EGv"); + nanoid.parse("5Noocgv_8vQ9oPijj4ioQ"); + const result = nanoid.safeParse("Xq90uDyhddC53KsoASYJGX"); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues[0].message).toEqual("custom error"); + } +}); + +test("bad nanoid", () => { + const nanoid = z.string().nanoid("custom error"); + nanoid.parse("ySh_984wpDUu7IQRrLXAp"); + const result = nanoid.safeParse("invalid nanoid"); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues[0].message).toEqual("custom error"); + } +}); + +test("cuid", () => { + const cuid = z.string().cuid(); + cuid.parse("ckopqwooh000001la8mbi2im9"); + const result = cuid.safeParse("cifjhdsfhsd-invalid-cuid"); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues[0].message).toEqual("Invalid cuid"); + } +}); + +test("cuid2", () => { + const cuid2 = z.string().cuid2(); + const validStrings = [ + "a", // short string + "tz4a98xxat96iws9zmbrgj3a", // normal string + "kf5vz6ssxe4zjcb409rjgo747tc5qjazgptvotk6", // longer than require("@paralleldrive/cuid2").bigLength + ]; + for (const s of validStrings) { + cuid2.parse(s); + } + + const invalidStrings = [ + "", // empty string + "tz4a98xxat96iws9zMbrgj3a", // include uppercase + "tz4a98xxat96iws-zmbrgj3a", // involve symbols + ]; + const results = invalidStrings.map((s) => cuid2.safeParse(s)); + expect(results.every((r) => !r.success)).toEqual(true); + if (!results[0].success) { + expect(results[0].error.issues[0].message).toEqual("Invalid cuid2"); + } +}); + +test("ulid", () => { + const ulid = z.string().ulid(); + ulid.parse("01ARZ3NDEKTSV4RRFFQ69G5FAV"); + const result = ulid.safeParse("invalidulid"); + expect(result.success).toEqual(false); + const tooLong = "01ARZ3NDEKTSV4RRFFQ69G5FAVA"; + expect(ulid.safeParse(tooLong).success).toEqual(false); + if (!result.success) { + expect(result.error.issues[0].message).toEqual("Invalid ulid"); + } + const caseInsensitive = ulid.safeParse("01arZ3nDeKTsV4RRffQ69G5FAV"); + expect(caseInsensitive.success).toEqual(true); +}); + +test("regex", () => { + z.string() + .regex(/^moo+$/) + .parse("mooooo"); + expect(() => z.string().uuid().parse("purr")).toThrow(); +}); + +test("regexp error message", () => { + const result = z + .string() + .regex(/^moo+$/) + .safeParse("boooo"); + if (!result.success) { + expect(result.error.issues[0].message).toEqual("Invalid"); + } else { + throw new Error("validation should have failed"); + } + + expect(() => z.string().uuid().parse("purr")).toThrow(); +}); + +test("regex lastIndex reset", () => { + const schema = z.string().regex(/^\d+$/g); + expect(schema.safeParse("123").success).toEqual(true); + expect(schema.safeParse("123").success).toEqual(true); + expect(schema.safeParse("123").success).toEqual(true); + expect(schema.safeParse("123").success).toEqual(true); + expect(schema.safeParse("123").success).toEqual(true); +}); + +test("checks getters", () => { + expect(z.string().email().isEmail).toEqual(true); + expect(z.string().email().isURL).toEqual(false); + expect(z.string().email().isCUID).toEqual(false); + expect(z.string().email().isCUID2).toEqual(false); + expect(z.string().email().isUUID).toEqual(false); + expect(z.string().email().isNANOID).toEqual(false); + expect(z.string().email().isIP).toEqual(false); + expect(z.string().email().isCIDR).toEqual(false); + expect(z.string().email().isULID).toEqual(false); + + expect(z.string().url().isEmail).toEqual(false); + expect(z.string().url().isURL).toEqual(true); + expect(z.string().url().isCUID).toEqual(false); + expect(z.string().url().isCUID2).toEqual(false); + expect(z.string().url().isUUID).toEqual(false); + expect(z.string().url().isNANOID).toEqual(false); + expect(z.string().url().isIP).toEqual(false); + expect(z.string().url().isCIDR).toEqual(false); + expect(z.string().url().isULID).toEqual(false); + + expect(z.string().cuid().isEmail).toEqual(false); + expect(z.string().cuid().isURL).toEqual(false); + expect(z.string().cuid().isCUID).toEqual(true); + expect(z.string().cuid().isCUID2).toEqual(false); + expect(z.string().cuid().isUUID).toEqual(false); + expect(z.string().cuid().isNANOID).toEqual(false); + expect(z.string().cuid().isIP).toEqual(false); + expect(z.string().cuid().isCIDR).toEqual(false); + expect(z.string().cuid().isULID).toEqual(false); + + expect(z.string().cuid2().isEmail).toEqual(false); + expect(z.string().cuid2().isURL).toEqual(false); + expect(z.string().cuid2().isCUID).toEqual(false); + expect(z.string().cuid2().isCUID2).toEqual(true); + expect(z.string().cuid2().isUUID).toEqual(false); + expect(z.string().cuid2().isNANOID).toEqual(false); + expect(z.string().cuid2().isIP).toEqual(false); + expect(z.string().cuid2().isCIDR).toEqual(false); + expect(z.string().cuid2().isULID).toEqual(false); + + expect(z.string().uuid().isEmail).toEqual(false); + expect(z.string().uuid().isURL).toEqual(false); + expect(z.string().uuid().isCUID).toEqual(false); + expect(z.string().uuid().isCUID2).toEqual(false); + expect(z.string().uuid().isUUID).toEqual(true); + expect(z.string().uuid().isNANOID).toEqual(false); + expect(z.string().uuid().isIP).toEqual(false); + expect(z.string().uuid().isCIDR).toEqual(false); + expect(z.string().uuid().isULID).toEqual(false); + + expect(z.string().nanoid().isEmail).toEqual(false); + expect(z.string().nanoid().isURL).toEqual(false); + expect(z.string().nanoid().isCUID).toEqual(false); + expect(z.string().nanoid().isCUID2).toEqual(false); + expect(z.string().nanoid().isUUID).toEqual(false); + expect(z.string().nanoid().isNANOID).toEqual(true); + expect(z.string().nanoid().isIP).toEqual(false); + expect(z.string().nanoid().isCIDR).toEqual(false); + expect(z.string().nanoid().isULID).toEqual(false); + + expect(z.string().ip().isEmail).toEqual(false); + expect(z.string().ip().isURL).toEqual(false); + expect(z.string().ip().isCUID).toEqual(false); + expect(z.string().ip().isCUID2).toEqual(false); + expect(z.string().ip().isUUID).toEqual(false); + expect(z.string().ip().isNANOID).toEqual(false); + expect(z.string().ip().isIP).toEqual(true); + expect(z.string().ip().isCIDR).toEqual(false); + expect(z.string().ip().isULID).toEqual(false); + + expect(z.string().cidr().isEmail).toEqual(false); + expect(z.string().cidr().isURL).toEqual(false); + expect(z.string().cidr().isCUID).toEqual(false); + expect(z.string().cidr().isCUID2).toEqual(false); + expect(z.string().cidr().isUUID).toEqual(false); + expect(z.string().cidr().isNANOID).toEqual(false); + expect(z.string().cidr().isIP).toEqual(false); + expect(z.string().cidr().isCIDR).toEqual(true); + expect(z.string().cidr().isULID).toEqual(false); + + expect(z.string().ulid().isEmail).toEqual(false); + expect(z.string().ulid().isURL).toEqual(false); + expect(z.string().ulid().isCUID).toEqual(false); + expect(z.string().ulid().isCUID2).toEqual(false); + expect(z.string().ulid().isUUID).toEqual(false); + expect(z.string().ulid().isNANOID).toEqual(false); + expect(z.string().ulid().isIP).toEqual(false); + expect(z.string().ulid().isCIDR).toEqual(false); + expect(z.string().ulid().isULID).toEqual(true); +}); + +test("min max getters", () => { + expect(z.string().min(5).minLength).toEqual(5); + expect(z.string().min(5).min(10).minLength).toEqual(10); + expect(z.string().minLength).toEqual(null); + + expect(z.string().max(5).maxLength).toEqual(5); + expect(z.string().max(5).max(1).maxLength).toEqual(1); + expect(z.string().maxLength).toEqual(null); +}); + +test("trim", () => { + expect(z.string().trim().min(2).parse(" 12 ")).toEqual("12"); + + // ordering of methods is respected + expect(z.string().min(2).trim().parse(" 1 ")).toEqual("1"); + expect(() => z.string().trim().min(2).parse(" 1 ")).toThrow(); +}); + +test("lowerCase", () => { + expect(z.string().toLowerCase().parse("ASDF")).toEqual("asdf"); + expect(z.string().toUpperCase().parse("asdf")).toEqual("ASDF"); +}); + +test("datetime", () => { + const a = z.string().datetime({}); + expect(a.isDatetime).toEqual(true); + + const b = z.string().datetime({ offset: true }); + expect(b.isDatetime).toEqual(true); + + const c = z.string().datetime({ precision: 3 }); + expect(c.isDatetime).toEqual(true); + + const d = z.string().datetime({ offset: true, precision: 0 }); + expect(d.isDatetime).toEqual(true); + + const { isDatetime } = z.string().datetime(); + expect(isDatetime).toEqual(true); +}); + +test("datetime parsing", () => { + const datetime = z.string().datetime(); + datetime.parse("1970-01-01T00:00:00.000Z"); + datetime.parse("2022-10-13T09:52:31.816Z"); + datetime.parse("2022-10-13T09:52:31.8162314Z"); + datetime.parse("1970-01-01T00:00:00Z"); + datetime.parse("2022-10-13T09:52:31Z"); + datetime.parse("2022-10-13T09:52Z"); + expect(() => datetime.parse("")).toThrow(); + expect(() => datetime.parse("foo")).toThrow(); + expect(() => datetime.parse("2020-10-14")).toThrow(); + expect(() => datetime.parse("T18:45:12.123")).toThrow(); + expect(() => datetime.parse("2020-10-14T17:42:29+00:00")).toThrow(); + expect(() => datetime.parse("2020-10-14T17:42.123+00:00")).toThrow(); + + const datetimeNoMs = z.string().datetime({ precision: 0 }); + datetimeNoMs.parse("1970-01-01T00:00:00Z"); + datetimeNoMs.parse("2022-10-13T09:52:31Z"); + datetimeNoMs.parse("2022-10-13T09:52Z"); + expect(() => datetimeNoMs.parse("tuna")).toThrow(); + expect(() => datetimeNoMs.parse("1970-01-01T00:00:00.000Z")).toThrow(); + expect(() => datetimeNoMs.parse("1970-01-01T00:00:00.Z")).toThrow(); + expect(() => datetimeNoMs.parse("2022-10-13T09:52:31.816Z")).toThrow(); + + const datetime3Ms = z.string().datetime({ precision: 3 }); + datetime3Ms.parse("1970-01-01T00:00:00.000Z"); + datetime3Ms.parse("2022-10-13T09:52:31.123Z"); + expect(() => datetime3Ms.parse("tuna")).toThrow(); + expect(() => datetime3Ms.parse("1970-01-01T00:00:00.1Z")).toThrow(); + expect(() => datetime3Ms.parse("1970-01-01T00:00:00.12Z")).toThrow(); + expect(() => datetime3Ms.parse("2022-10-13T09:52:31Z")).toThrow(); + expect(() => datetime3Ms.parse("2022-10-13T09:52Z")).toThrow(); + + const datetimeOffset = z.string().datetime({ offset: true }); + datetimeOffset.parse("1970-01-01T00:00:00.000Z"); + datetimeOffset.parse("2022-10-13T09:52:31.816234134Z"); + datetimeOffset.parse("1970-01-01T00:00:00Z"); + datetimeOffset.parse("2022-10-13T09:52:31.4Z"); + datetimeOffset.parse("2020-10-14T17:42:29+00:00"); + datetimeOffset.parse("2020-10-14T17:42:29+03:15"); + datetimeOffset.parse("2020-10-14T17:42:29+0315"); + datetimeOffset.parse("2020-10-14T17:42+0315"); + expect(() => datetimeOffset.parse("2020-10-14T17:42:29+03")); + expect(() => datetimeOffset.parse("tuna")).toThrow(); + expect(() => datetimeOffset.parse("2022-10-13T09:52:31.Z")).toThrow(); + + const datetimeOffsetNoMs = z.string().datetime({ offset: true, precision: 0 }); + datetimeOffsetNoMs.parse("1970-01-01T00:00:00Z"); + datetimeOffsetNoMs.parse("2022-10-13T09:52:31Z"); + datetimeOffsetNoMs.parse("2020-10-14T17:42:29+00:00"); + datetimeOffsetNoMs.parse("2020-10-14T17:42:29+0000"); + datetimeOffsetNoMs.parse("2020-10-14T17:42+0000"); + expect(() => datetimeOffsetNoMs.parse("2020-10-14T17:42:29+00")).toThrow(); + expect(() => datetimeOffsetNoMs.parse("tuna")).toThrow(); + expect(() => datetimeOffsetNoMs.parse("1970-01-01T00:00:00.000Z")).toThrow(); + expect(() => datetimeOffsetNoMs.parse("1970-01-01T00:00:00.Z")).toThrow(); + expect(() => datetimeOffsetNoMs.parse("2022-10-13T09:52:31.816Z")).toThrow(); + expect(() => datetimeOffsetNoMs.parse("2020-10-14T17:42:29.124+00:00")).toThrow(); + + const datetimeOffset4Ms = z.string().datetime({ offset: true, precision: 4 }); + datetimeOffset4Ms.parse("1970-01-01T00:00:00.1234Z"); + datetimeOffset4Ms.parse("2020-10-14T17:42:29.1234+00:00"); + datetimeOffset4Ms.parse("2020-10-14T17:42:29.1234+0000"); + expect(() => datetimeOffset4Ms.parse("2020-10-14T17:42:29.1234+00")).toThrow(); + expect(() => datetimeOffset4Ms.parse("tuna")).toThrow(); + expect(() => datetimeOffset4Ms.parse("1970-01-01T00:00:00.123Z")).toThrow(); + expect(() => datetimeOffset4Ms.parse("2020-10-14T17:42:29.124+00:00")).toThrow(); + expect(() => datetimeOffset4Ms.parse("2020-10-14T17:42+00:00")).toThrow(); +}); + +test("date", () => { + const a = z.string().date(); + expect(a.isDate).toEqual(true); +}); + +test("date parsing", () => { + const date = z.string().date(); + date.parse("1970-01-01"); + date.parse("2022-01-31"); + date.parse("2022-03-31"); + date.parse("2022-04-30"); + date.parse("2022-05-31"); + date.parse("2022-06-30"); + date.parse("2022-07-31"); + date.parse("2022-08-31"); + date.parse("2022-09-30"); + date.parse("2022-10-31"); + date.parse("2022-11-30"); + date.parse("2022-12-31"); + + date.parse("2000-02-29"); + date.parse("2400-02-29"); + expect(() => date.parse("2022-02-29")).toThrow(); + expect(() => date.parse("2100-02-29")).toThrow(); + expect(() => date.parse("2200-02-29")).toThrow(); + expect(() => date.parse("2300-02-29")).toThrow(); + expect(() => date.parse("2500-02-29")).toThrow(); + + expect(() => date.parse("")).toThrow(); + expect(() => date.parse("foo")).toThrow(); + expect(() => date.parse("200-01-01")).toThrow(); + expect(() => date.parse("20000-01-01")).toThrow(); + expect(() => date.parse("2000-0-01")).toThrow(); + expect(() => date.parse("2000-011-01")).toThrow(); + expect(() => date.parse("2000-01-0")).toThrow(); + expect(() => date.parse("2000-01-011")).toThrow(); + expect(() => date.parse("2000/01/01")).toThrow(); + expect(() => date.parse("01-01-2022")).toThrow(); + expect(() => date.parse("01/01/2022")).toThrow(); + expect(() => date.parse("2000-01-01 00:00:00Z")).toThrow(); + expect(() => date.parse("2020-10-14T17:42:29+00:00")).toThrow(); + expect(() => date.parse("2020-10-14T17:42:29Z")).toThrow(); + expect(() => date.parse("2020-10-14T17:42:29")).toThrow(); + expect(() => date.parse("2020-10-14T17:42:29.123Z")).toThrow(); + + expect(() => date.parse("2000-00-12")).toThrow(); + expect(() => date.parse("2000-12-00")).toThrow(); + expect(() => date.parse("2000-01-32")).toThrow(); + expect(() => date.parse("2000-13-01")).toThrow(); + expect(() => date.parse("2000-21-01")).toThrow(); + + expect(() => date.parse("2000-02-30")).toThrow(); + expect(() => date.parse("2000-02-31")).toThrow(); + expect(() => date.parse("2000-04-31")).toThrow(); + expect(() => date.parse("2000-06-31")).toThrow(); + expect(() => date.parse("2000-09-31")).toThrow(); + expect(() => date.parse("2000-11-31")).toThrow(); +}); + +test("time", () => { + const a = z.string().time(); + expect(a.isTime).toEqual(true); +}); + +test("time parsing", () => { + const time = z.string().time(); + time.parse("00:00:00"); + time.parse("23:00:00"); + time.parse("00:59:00"); + time.parse("00:00:59"); + time.parse("23:59:59"); + time.parse("09:52:31"); + time.parse("23:59:59.9999999"); + time.parse("23:59"); + expect(() => time.parse("")).toThrow(); + expect(() => time.parse("foo")).toThrow(); + expect(() => time.parse("00:00:00Z")).toThrow(); + expect(() => time.parse("0:00:00")).toThrow(); + expect(() => time.parse("00:0:00")).toThrow(); + expect(() => time.parse("00:00:0")).toThrow(); + expect(() => time.parse("00:00:00.000+00:00")).toThrow(); + + expect(() => time.parse("24:00:00")).toThrow(); + expect(() => time.parse("00:60:00")).toThrow(); + expect(() => time.parse("00:00:60")).toThrow(); + expect(() => time.parse("24:60:60")).toThrow(); + expect(() => time.parse("24:60")).toThrow(); + + const time2 = z.string().time({ precision: 2 }); + time2.parse("00:00:00.00"); + time2.parse("09:52:31.12"); + time2.parse("23:59:59.99"); + expect(() => time2.parse("")).toThrow(); + expect(() => time2.parse("foo")).toThrow(); + expect(() => time2.parse("00:00:00")).toThrow(); + expect(() => time2.parse("00:00:00.00Z")).toThrow(); + expect(() => time2.parse("00:00:00.0")).toThrow(); + expect(() => time2.parse("00:00:00.000")).toThrow(); + expect(() => time2.parse("00:00:00.00+00:00")).toThrow(); + expect(() => time2.parse("23:59")).toThrow(); + + // const time3 = z.string().time({ offset: true }); + // time3.parse("00:00:00Z"); + // time3.parse("09:52:31Z"); + // time3.parse("00:00:00+00:00"); + // time3.parse("00:00:00+0000"); + // time3.parse("00:00:00.000Z"); + // time3.parse("00:00:00.000+00:00"); + // time3.parse("00:00:00.000+0000"); + // expect(() => time3.parse("")).toThrow(); + // expect(() => time3.parse("foo")).toThrow(); + // expect(() => time3.parse("00:00:00")).toThrow(); + // expect(() => time3.parse("00:00:00.000")).toThrow(); + + // const time4 = z.string().time({ offset: true, precision: 0 }); + // time4.parse("00:00:00Z"); + // time4.parse("09:52:31Z"); + // time4.parse("00:00:00+00:00"); + // time4.parse("00:00:00+0000"); + // expect(() => time4.parse("")).toThrow(); + // expect(() => time4.parse("foo")).toThrow(); + // expect(() => time4.parse("00:00:00.0")).toThrow(); + // expect(() => time4.parse("00:00:00.000")).toThrow(); + // expect(() => time4.parse("00:00:00.000+00:00")).toThrow(); +}); + +test("duration", () => { + const duration = z.string().duration(); + expect(duration.isDuration).toEqual(true); + + const validDurations = [ + "P3Y6M4DT12H30M5S", + "P2Y9M3DT12H31M8.001S", + "+P3Y6M4DT12H30M5S", + "-PT0.001S", + "+PT0.001S", + "PT0,001S", + "PT12H30M5S", + "-P2M1D", + "P-2M-1D", + "-P5DT10H", + "P-5DT-10H", + "P1Y", + "P2MT30M", + "PT6H", + "P5W", + "P0.5Y", + "P0,5Y", + "P42YT7.004M", + ]; + + const invalidDurations = ["foo bar", "", " ", "P", "T1H", "P0.5Y1D", "P0,5Y6M", "P1YT"]; + + for (const val of validDurations) { + const result = duration.safeParse(val); + if (!result.success) { + throw Error(`Valid duration could not be parsed: ${val}`); + } + } + + for (const val of invalidDurations) { + const result = duration.safeParse(val); + + if (result.success) { + throw Error(`Invalid duration was successful parsed: ${val}`); + } + + expect(result.error.issues[0].message).toEqual("Invalid duration"); + } +}); + +test("IP validation", () => { + const ip = z.string().ip(); + expect(ip.safeParse("122.122.122.122").success).toBe(true); + + const ipv4 = z.string().ip({ version: "v4" }); + expect(() => ipv4.parse("6097:adfa:6f0b:220d:db08:5021:6191:7990")).toThrow(); + + const ipv6 = z.string().ip({ version: "v6" }); + expect(() => ipv6.parse("254.164.77.1")).toThrow(); + + const validIPs = [ + "1e5e:e6c8:daac:514b:114b:e360:d8c0:682c", + "9d4:c956:420f:5788:4339:9b3b:2418:75c3", + "474f:4c83::4e40:a47:ff95:0cda", + "d329:0:25b4:db47:a9d1:0:4926:0000", + "e48:10fb:1499:3e28:e4b6:dea5:4692:912c", + "114.71.82.94", + "0.0.0.0", + "37.85.236.115", + "2001:4888:50:ff00:500:d::", + "2001:4888:50:ff00:0500:000d:000:0000", + "2001:4888:50:ff00:0500:000d:0000:0000", + ]; + + const invalidIPs = [ + "d329:1be4:25b4:db47:a9d1:dc71:4926:992c:14af", + "d5e7:7214:2b78::3906:85e6:53cc:709:32ba", + "8f69::c757:395e:976e::3441", + "54cb::473f:d516:0.255.256.22", + "54cb::473f:d516:192.168.1", + "256.0.4.4", + "-1.0.555.4", + "0.0.0.0.0", + "1.1.1", + ]; + // no parameters check IPv4 or IPv6 + const ipSchema = z.string().ip(); + expect(validIPs.every((ip) => ipSchema.safeParse(ip).success)).toBe(true); + expect(invalidIPs.every((ip) => ipSchema.safeParse(ip).success === false)).toBe(true); +}); + +test("CIDR validation", () => { + const ipv4Cidr = z.string().cidr({ version: "v4" }); + expect(() => ipv4Cidr.parse("2001:0db8:85a3::8a2e:0370:7334/64")).toThrow(); + + const ipv6Cidr = z.string().cidr({ version: "v6" }); + expect(() => ipv6Cidr.parse("192.168.0.1/24")).toThrow(); + + const validCidrs = [ + "192.168.0.0/24", + "10.0.0.0/8", + "203.0.113.0/24", + "192.0.2.0/24", + "127.0.0.0/8", + "172.16.0.0/12", + "192.168.1.0/24", + "fc00::/7", + "fd00::/8", + "2001:db8::/32", + "2607:f0d0:1002:51::4/64", + "2001:0db8:85a3:0000:0000:8a2e:0370:7334/128", + "2001:0db8:1234:0000::/64", + ]; + + const invalidCidrs = [ + "192.168.1.1/33", + "10.0.0.1/-1", + "192.168.1.1/24/24", + "192.168.1.0/abc", + "2001:db8::1/129", + "2001:db8::1/-1", + "2001:db8::1/64/64", + "2001:db8::1/abc", + ]; + + // no parameters check IPv4 or IPv6 + const cidrSchema = z.string().cidr(); + expect(validCidrs.every((ip) => cidrSchema.safeParse(ip).success)).toBe(true); + expect(invalidCidrs.every((ip) => cidrSchema.safeParse(ip).success === false)).toBe(true); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/transformer.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/transformer.test.ts new file mode 100644 index 000000000..ddd9e9a63 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/transformer.test.ts @@ -0,0 +1,233 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; + +const stringToNumber = z.string().transform((arg) => Number.parseFloat(arg)); +// const numberToString = z +// .transformer(z.number()) +// .transform((n) => String(n)); +const asyncNumberToString = z.number().transform(async (n) => String(n)); + +test("transform ctx.addIssue with parse", () => { + const strs = ["foo", "bar"]; + + expect(() => { + z.string() + .transform((data, ctx) => { + const i = strs.indexOf(data); + if (i === -1) { + ctx.addIssue({ + code: "custom", + message: `${data} is not one of our allowed strings`, + }); + } + return data.length; + }) + .parse("asdf"); + }).toThrow( + JSON.stringify( + [ + { + code: "custom", + message: "asdf is not one of our allowed strings", + path: [], + }, + ], + null, + 2 + ) + ); +}); + +test("transform ctx.addIssue with parseAsync", async () => { + const strs = ["foo", "bar"]; + + const result = await z + .string() + .transform(async (data, ctx) => { + const i = strs.indexOf(data); + if (i === -1) { + ctx.addIssue({ + code: "custom", + message: `${data} is not one of our allowed strings`, + }); + } + return data.length; + }) + .safeParseAsync("asdf"); + + expect(JSON.parse(JSON.stringify(result))).toEqual({ + success: false, + error: { + issues: [ + { + code: "custom", + message: "asdf is not one of our allowed strings", + path: [], + }, + ], + name: "ZodError", + }, + }); +}); + +test("z.NEVER in transform", () => { + const foo = z + .number() + .optional() + .transform((val, ctx) => { + if (!val) { + ctx.addIssue({ code: z.ZodIssueCode.custom, message: "bad" }); + return z.NEVER; + } + return val; + }); + type foo = z.infer; + util.assertEqual(true); + const arg = foo.safeParse(undefined); + if (!arg.success) { + expect(arg.error.issues[0].message).toEqual("bad"); + } +}); + +test("basic transformations", () => { + const r1 = z + .string() + .transform((data) => data.length) + .parse("asdf"); + expect(r1).toEqual(4); +}); + +test("coercion", () => { + const numToString = z.number().transform((n) => String(n)); + const data = z + .object({ + id: numToString, + }) + .parse({ id: 5 }); + + expect(data).toEqual({ id: "5" }); +}); + +test("async coercion", async () => { + const numToString = z.number().transform(async (n) => String(n)); + const data = await z + .object({ + id: numToString, + }) + .parseAsync({ id: 5 }); + + expect(data).toEqual({ id: "5" }); +}); + +test("sync coercion async error", async () => { + expect(() => + z + .object({ + id: asyncNumberToString, + }) + .parse({ id: 5 }) + ).toThrow(); + // expect(data).toEqual({ id: '5' }); +}); + +test("default", () => { + const data = z.string().default("asdf").parse(undefined); // => "asdf" + expect(data).toEqual("asdf"); +}); + +test("dynamic default", () => { + const data = z + .string() + .default(() => "string") + .parse(undefined); // => "asdf" + expect(data).toEqual("string"); +}); + +test("default when property is null or undefined", () => { + const data = z + .object({ + foo: z.boolean().nullable().default(true), + bar: z.boolean().default(true), + }) + .parse({ foo: null }); + + expect(data).toEqual({ foo: null, bar: true }); +}); + +test("default with falsy values", () => { + const schema = z.object({ + emptyStr: z.string().default("def"), + zero: z.number().default(5), + falseBoolean: z.boolean().default(true), + }); + const input = { emptyStr: "", zero: 0, falseBoolean: true }; + const output = schema.parse(input); + // defaults are not supposed to be used + expect(output).toEqual(input); +}); + +test("object typing", () => { + const t1 = z.object({ + stringToNumber, + }); + + type t1 = z.input; + type t2 = z.output; + + util.assertEqual(true); + util.assertEqual(true); +}); + +test("transform method overloads", () => { + const t1 = z.string().transform((val) => val.toUpperCase()); + expect(t1.parse("asdf")).toEqual("ASDF"); + + const t2 = z.string().transform((val) => val.length); + expect(t2.parse("asdf")).toEqual(4); +}); + +test("multiple transformers", () => { + const doubler = stringToNumber.transform((val) => { + return val * 2; + }); + expect(doubler.parse("5")).toEqual(10); +}); + +test("short circuit on dirty", () => { + const schema = z + .string() + .refine(() => false) + .transform((val) => val.toUpperCase()); + const result = schema.safeParse("asdf"); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues[0].code).toEqual(z.ZodIssueCode.custom); + } + + const result2 = schema.safeParse(1234); + expect(result2.success).toEqual(false); + if (!result2.success) { + expect(result2.error.issues[0].code).toEqual(z.ZodIssueCode.invalid_type); + } +}); + +test("async short circuit on dirty", async () => { + const schema = z + .string() + .refine(() => false) + .transform((val) => val.toUpperCase()); + const result = await schema.spa("asdf"); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues[0].code).toEqual(z.ZodIssueCode.custom); + } + + const result2 = await schema.spa(1234); + expect(result2.success).toEqual(false); + if (!result2.success) { + expect(result2.error.issues[0].code).toEqual(z.ZodIssueCode.invalid_type); + } +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/tuple.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/tuple.test.ts new file mode 100644 index 000000000..e525d3f45 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/tuple.test.ts @@ -0,0 +1,90 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { ZodError } from "../ZodError.js"; +import { util } from "../helpers/util.js"; + +const testTuple = z.tuple([z.string(), z.object({ name: z.literal("Rudy") }), z.array(z.literal("blue"))]); +const testData = ["asdf", { name: "Rudy" }, ["blue"]]; +const badData = [123, { name: "Rudy2" }, ["blue", "red"]]; + +test("tuple inference", () => { + const args1 = z.tuple([z.string()]); + const returns1 = z.number(); + const func1 = z.function(args1, returns1); + type func1 = z.TypeOf; + util.assertEqual number>(true); +}); + +test("successful validation", () => { + const val = testTuple.parse(testData); + expect(val).toEqual(["asdf", { name: "Rudy" }, ["blue"]]); +}); + +test("successful async validation", async () => { + const val = await testTuple.parseAsync(testData); + return expect(val).toEqual(testData); +}); + +test("failed validation", () => { + const checker = () => { + testTuple.parse([123, { name: "Rudy2" }, ["blue", "red"]] as any); + }; + try { + checker(); + } catch (err) { + if (err instanceof ZodError) { + expect(err.issues.length).toEqual(3); + } + } +}); + +test("failed async validation", async () => { + const res = await testTuple.safeParse(badData); + expect(res.success).toEqual(false); + if (!res.success) { + expect(res.error.issues.length).toEqual(3); + } + // try { + // checker(); + // } catch (err) { + // if (err instanceof ZodError) { + // expect(err.issues.length).toEqual(3); + // } + // } +}); + +test("tuple with transformers", () => { + const stringToNumber = z.string().transform((val) => val.length); + const val = z.tuple([stringToNumber]); + + type t1 = z.input; + util.assertEqual(true); + type t2 = z.output; + util.assertEqual(true); + expect(val.parse(["1234"])).toEqual([4]); +}); + +test("tuple with rest schema", () => { + const myTuple = z.tuple([z.string(), z.number()]).rest(z.boolean()); + expect(myTuple.parse(["asdf", 1234, true, false, true])).toEqual(["asdf", 1234, true, false, true]); + + expect(myTuple.parse(["asdf", 1234])).toEqual(["asdf", 1234]); + + expect(() => myTuple.parse(["asdf", 1234, "asdf"])).toThrow(); + type t1 = z.output; + + util.assertEqual(true); +}); + +test("parse should fail given sparse array as tuple", () => { + expect(() => testTuple.parse(new Array(3))).toThrow(); +}); + +// test('tuple with optional elements', () => { +// const result = z +// .tuple([z.string(), z.number().optional()]) +// .safeParse(['asdf']); +// expect(result).toEqual(['asdf']); +// }); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/unions.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/unions.test.ts new file mode 100644 index 000000000..2c3dc6775 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/unions.test.ts @@ -0,0 +1,57 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +test("function parsing", () => { + const schema = z.union([z.string().refine(() => false), z.number().refine(() => false)]); + const result = schema.safeParse("asdf"); + expect(result.success).toEqual(false); +}); + +test("union 2", () => { + const result = z.union([z.number(), z.string().refine(() => false)]).safeParse("a"); + expect(result.success).toEqual(false); +}); + +test("return valid over invalid", () => { + const schema = z.union([ + z.object({ + email: z.string().email(), + }), + z.string(), + ]); + expect(schema.parse("asdf")).toEqual("asdf"); + expect(schema.parse({ email: "asdlkjf@lkajsdf.com" })).toEqual({ + email: "asdlkjf@lkajsdf.com", + }); +}); + +test("return dirty result over aborted", () => { + const result = z.union([z.number(), z.string().refine(() => false)]).safeParse("a"); + expect(result.success).toEqual(false); + if (!result.success) { + expect(result.error.issues).toEqual([ + { + code: "custom", + message: "Invalid input", + path: [], + }, + ]); + } +}); + +test("options getter", async () => { + const union = z.union([z.string(), z.number()]); + union.options[0].parse("asdf"); + union.options[1].parse(1234); + await union.options[0].parseAsync("asdf"); + await union.options[1].parseAsync(1234); +}); + +test("readonly union", async () => { + const options = [z.string(), z.number()] as const; + const union = z.union(options); + union.parse("asdf"); + union.parse(12); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/validations.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/validations.test.ts new file mode 100644 index 000000000..66f41dabc --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/validations.test.ts @@ -0,0 +1,133 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; + +test("array min", async () => { + try { + await z.array(z.string()).min(4).parseAsync([]); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("Array must contain at least 4 element(s)"); + } +}); + +test("array max", async () => { + try { + await z.array(z.string()).max(2).parseAsync(["asdf", "asdf", "asdf"]); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("Array must contain at most 2 element(s)"); + } +}); + +test("array length", async () => { + try { + await z.array(z.string()).length(2).parseAsync(["asdf", "asdf", "asdf"]); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("Array must contain exactly 2 element(s)"); + } + + try { + await z.array(z.string()).length(2).parseAsync(["asdf"]); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("Array must contain exactly 2 element(s)"); + } +}); + +test("string length", async () => { + try { + await z.string().length(4).parseAsync("asd"); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("String must contain exactly 4 character(s)"); + } + + try { + await z.string().length(4).parseAsync("asdaa"); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("String must contain exactly 4 character(s)"); + } +}); + +test("string min", async () => { + try { + await z.string().min(4).parseAsync("asd"); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("String must contain at least 4 character(s)"); + } +}); + +test("string max", async () => { + try { + await z.string().max(4).parseAsync("aasdfsdfsd"); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("String must contain at most 4 character(s)"); + } +}); + +test("number min", async () => { + try { + await z.number().gte(3).parseAsync(2); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("Number must be greater than or equal to 3"); + } +}); + +test("number max", async () => { + try { + await z.number().lte(3).parseAsync(4); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("Number must be less than or equal to 3"); + } +}); + +test("number nonnegative", async () => { + try { + await z.number().nonnegative().parseAsync(-1); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("Number must be greater than or equal to 0"); + } +}); + +test("number nonpositive", async () => { + try { + await z.number().nonpositive().parseAsync(1); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("Number must be less than or equal to 0"); + } +}); + +test("number negative", async () => { + try { + await z.number().negative().parseAsync(1); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("Number must be less than 0"); + } +}); + +test("number positive", async () => { + try { + await z.number().positive().parseAsync(-1); + } catch (err) { + expect((err as z.ZodError).issues[0].message).toEqual("Number must be greater than 0"); + } +}); + +test("instantiation", () => { + z.string().min(5); + z.string().max(5); + z.string().length(5); + z.string().email(); + z.string().url(); + z.string().uuid(); + z.string().min(5, { message: "Must be 5 or more characters long" }); + z.string().max(5, { message: "Must be 5 or fewer characters long" }); + z.string().length(5, { message: "Must be exactly 5 characters long" }); + z.string().email({ message: "Invalid email address." }); + z.string().url({ message: "Invalid url" }); + z.string().uuid({ message: "Invalid UUID" }); +}); + +test("int", async () => { + const int = z.number().int(); + int.parse(4); + expect(() => int.parse(3.5)).toThrow(); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/void.test.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/void.test.ts new file mode 100644 index 000000000..b128f1177 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/tests/void.test.ts @@ -0,0 +1,15 @@ +// @ts-ignore TS6133 +import { expect, test } from "vitest"; + +import * as z from "zod/v3"; +import { util } from "../helpers/util.js"; +test("void", () => { + const v = z.void(); + v.parse(undefined); + + expect(() => v.parse(null)).toThrow(); + expect(() => v.parse("")).toThrow(); + + type v = z.infer; + util.assertEqual(true); +}); diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/types.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/types.ts new file mode 100644 index 000000000..f4028549b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v3/types.ts @@ -0,0 +1,5138 @@ +import { + type IssueData, + type StringValidation, + type ZodCustomIssue, + ZodError, + type ZodErrorMap, + type ZodIssue, + ZodIssueCode, +} from "./ZodError.js"; +import { defaultErrorMap, getErrorMap } from "./errors.js"; +import type { enumUtil } from "./helpers/enumUtil.js"; +import { errorUtil } from "./helpers/errorUtil.js"; +import { + type AsyncParseReturnType, + DIRTY, + INVALID, + OK, + type ParseContext, + type ParseInput, + type ParseParams, + type ParsePath, + type ParseReturnType, + ParseStatus, + type SyncParseReturnType, + addIssueToContext, + isAborted, + isAsync, + isDirty, + isValid, + makeIssue, +} from "./helpers/parseUtil.js"; +import type { partialUtil } from "./helpers/partialUtil.js"; +import type { Primitive } from "./helpers/typeAliases.js"; +import { util, ZodParsedType, getParsedType, type objectUtil } from "./helpers/util.js"; +import type { StandardSchemaV1 } from "./standard-schema.js"; + +/////////////////////////////////////// +/////////////////////////////////////// +////////// ////////// +////////// ZodType ////////// +////////// ////////// +/////////////////////////////////////// +/////////////////////////////////////// + +export interface RefinementCtx { + addIssue: (arg: IssueData) => void; + path: (string | number)[]; +} +export type ZodRawShape = { [k: string]: ZodTypeAny }; +export type ZodTypeAny = ZodType; +export type TypeOf> = T["_output"]; +export type input> = T["_input"]; +export type output> = T["_output"]; +export type { TypeOf as infer }; + +export type CustomErrorParams = Partial>; +export interface ZodTypeDef { + errorMap?: ZodErrorMap | undefined; + description?: string | undefined; +} + +class ParseInputLazyPath implements ParseInput { + parent: ParseContext; + data: any; + _path: ParsePath; + _key: string | number | (string | number)[]; + _cachedPath: ParsePath = []; + constructor(parent: ParseContext, value: any, path: ParsePath, key: string | number | (string | number)[]) { + this.parent = parent; + this.data = value; + this._path = path; + this._key = key; + } + get path() { + if (!this._cachedPath.length) { + if (Array.isArray(this._key)) { + this._cachedPath.push(...this._path, ...this._key); + } else { + this._cachedPath.push(...this._path, this._key); + } + } + + return this._cachedPath; + } +} + +const handleResult = ( + ctx: ParseContext, + result: SyncParseReturnType +): { success: true; data: Output } | { success: false; error: ZodError } => { + if (isValid(result)) { + return { success: true, data: result.value }; + } else { + if (!ctx.common.issues.length) { + throw new Error("Validation failed but no issues detected."); + } + + return { + success: false, + get error() { + if ((this as any)._error) return (this as any)._error as Error; + const error = new ZodError(ctx.common.issues); + (this as any)._error = error; + return (this as any)._error; + }, + }; + } +}; + +export type RawCreateParams = + | { + errorMap?: ZodErrorMap | undefined; + invalid_type_error?: string | undefined; + required_error?: string | undefined; + message?: string | undefined; + description?: string | undefined; + } + | undefined; +export type ProcessedCreateParams = { + errorMap?: ZodErrorMap | undefined; + description?: string | undefined; +}; +function processCreateParams(params: RawCreateParams): ProcessedCreateParams { + if (!params) return {}; + const { errorMap, invalid_type_error, required_error, description } = params; + if (errorMap && (invalid_type_error || required_error)) { + throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`); + } + if (errorMap) return { errorMap: errorMap, description }; + const customMap: ZodErrorMap = (iss, ctx) => { + const { message } = params; + + if (iss.code === "invalid_enum_value") { + return { message: message ?? ctx.defaultError }; + } + if (typeof ctx.data === "undefined") { + return { message: message ?? required_error ?? ctx.defaultError }; + } + if (iss.code !== "invalid_type") return { message: ctx.defaultError }; + return { message: message ?? invalid_type_error ?? ctx.defaultError }; + }; + return { errorMap: customMap, description }; +} + +export type SafeParseSuccess = { + success: true; + data: Output; + error?: never; +}; +export type SafeParseError = { + success: false; + error: ZodError; + data?: never; +}; + +export type SafeParseReturnType = SafeParseSuccess | SafeParseError; + +export abstract class ZodType { + readonly _type!: Output; + readonly _output!: Output; + readonly _input!: Input; + readonly _def!: Def; + + get description(): string | undefined { + return this._def.description; + } + + "~standard": StandardSchemaV1.Props; + + abstract _parse(input: ParseInput): ParseReturnType; + + _getType(input: ParseInput): string { + return getParsedType(input.data); + } + + _getOrReturnCtx(input: ParseInput, ctx?: ParseContext | undefined): ParseContext { + return ( + ctx || { + common: input.parent.common, + data: input.data, + + parsedType: getParsedType(input.data), + + schemaErrorMap: this._def.errorMap, + path: input.path, + parent: input.parent, + } + ); + } + + _processInputParams(input: ParseInput): { + status: ParseStatus; + ctx: ParseContext; + } { + return { + status: new ParseStatus(), + ctx: { + common: input.parent.common, + data: input.data, + + parsedType: getParsedType(input.data), + + schemaErrorMap: this._def.errorMap, + path: input.path, + parent: input.parent, + }, + }; + } + + _parseSync(input: ParseInput): SyncParseReturnType { + const result = this._parse(input); + if (isAsync(result)) { + throw new Error("Synchronous parse encountered promise."); + } + return result; + } + + _parseAsync(input: ParseInput): AsyncParseReturnType { + const result = this._parse(input); + return Promise.resolve(result); + } + + parse(data: unknown, params?: util.InexactPartial): Output { + const result = this.safeParse(data, params); + if (result.success) return result.data; + throw result.error; + } + + safeParse(data: unknown, params?: util.InexactPartial): SafeParseReturnType { + const ctx: ParseContext = { + common: { + issues: [], + async: params?.async ?? false, + contextualErrorMap: params?.errorMap, + }, + path: params?.path || [], + schemaErrorMap: this._def.errorMap, + parent: null, + data, + parsedType: getParsedType(data), + }; + const result = this._parseSync({ data, path: ctx.path, parent: ctx }); + + return handleResult(ctx, result); + } + + "~validate"(data: unknown): StandardSchemaV1.Result | Promise> { + const ctx: ParseContext = { + common: { + issues: [], + async: !!(this["~standard"] as any).async, + }, + path: [], + schemaErrorMap: this._def.errorMap, + parent: null, + data, + parsedType: getParsedType(data), + }; + + if (!(this["~standard"] as any).async) { + try { + const result = this._parseSync({ data, path: [], parent: ctx }); + return isValid(result) + ? { + value: result.value, + } + : { + issues: ctx.common.issues, + }; + } catch (err: any) { + if ((err as Error)?.message?.toLowerCase()?.includes("encountered")) { + (this["~standard"] as any).async = true; + } + (ctx as any).common = { + issues: [], + async: true, + }; + } + } + + return this._parseAsync({ data, path: [], parent: ctx }).then((result) => + isValid(result) + ? { + value: result.value, + } + : { + issues: ctx.common.issues, + } + ); + } + + async parseAsync(data: unknown, params?: util.InexactPartial): Promise { + const result = await this.safeParseAsync(data, params); + if (result.success) return result.data; + throw result.error; + } + + async safeParseAsync( + data: unknown, + params?: util.InexactPartial + ): Promise> { + const ctx: ParseContext = { + common: { + issues: [], + contextualErrorMap: params?.errorMap, + async: true, + }, + path: params?.path || [], + schemaErrorMap: this._def.errorMap, + parent: null, + data, + parsedType: getParsedType(data), + }; + + const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx }); + const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult)); + return handleResult(ctx, result); + } + + /** Alias of safeParseAsync */ + spa = this.safeParseAsync; + + refine( + check: (arg: Output) => arg is RefinedOutput, + message?: string | CustomErrorParams | ((arg: Output) => CustomErrorParams) + ): ZodEffects; + refine( + check: (arg: Output) => unknown | Promise, + message?: string | CustomErrorParams | ((arg: Output) => CustomErrorParams) + ): ZodEffects; + refine( + check: (arg: Output) => unknown, + message?: string | CustomErrorParams | ((arg: Output) => CustomErrorParams) + ): ZodEffects { + const getIssueProperties = (val: Output) => { + if (typeof message === "string" || typeof message === "undefined") { + return { message }; + } else if (typeof message === "function") { + return message(val); + } else { + return message; + } + }; + return this._refinement((val, ctx) => { + const result = check(val); + const setError = () => + ctx.addIssue({ + code: ZodIssueCode.custom, + ...getIssueProperties(val), + }); + if (typeof Promise !== "undefined" && result instanceof Promise) { + return result.then((data) => { + if (!data) { + setError(); + return false; + } else { + return true; + } + }); + } + if (!result) { + setError(); + return false; + } else { + return true; + } + }); + } + + refinement( + check: (arg: Output) => arg is RefinedOutput, + refinementData: IssueData | ((arg: Output, ctx: RefinementCtx) => IssueData) + ): ZodEffects; + refinement( + check: (arg: Output) => boolean, + refinementData: IssueData | ((arg: Output, ctx: RefinementCtx) => IssueData) + ): ZodEffects; + refinement( + check: (arg: Output) => unknown, + refinementData: IssueData | ((arg: Output, ctx: RefinementCtx) => IssueData) + ): ZodEffects { + return this._refinement((val, ctx) => { + if (!check(val)) { + ctx.addIssue(typeof refinementData === "function" ? refinementData(val, ctx) : refinementData); + return false; + } else { + return true; + } + }); + } + + _refinement(refinement: RefinementEffect["refinement"]): ZodEffects { + return new ZodEffects({ + schema: this, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect: { type: "refinement", refinement }, + }); + } + + superRefine( + refinement: (arg: Output, ctx: RefinementCtx) => arg is RefinedOutput + ): ZodEffects; + superRefine(refinement: (arg: Output, ctx: RefinementCtx) => void): ZodEffects; + superRefine(refinement: (arg: Output, ctx: RefinementCtx) => Promise): ZodEffects; + superRefine( + refinement: (arg: Output, ctx: RefinementCtx) => unknown | Promise + ): ZodEffects { + return this._refinement(refinement); + } + + constructor(def: Def) { + this._def = def; + this.parse = this.parse.bind(this); + this.safeParse = this.safeParse.bind(this); + this.parseAsync = this.parseAsync.bind(this); + this.safeParseAsync = this.safeParseAsync.bind(this); + this.spa = this.spa.bind(this); + this.refine = this.refine.bind(this); + this.refinement = this.refinement.bind(this); + this.superRefine = this.superRefine.bind(this); + this.optional = this.optional.bind(this); + this.nullable = this.nullable.bind(this); + this.nullish = this.nullish.bind(this); + this.array = this.array.bind(this); + this.promise = this.promise.bind(this); + this.or = this.or.bind(this); + this.and = this.and.bind(this); + this.transform = this.transform.bind(this); + this.brand = this.brand.bind(this); + this.default = this.default.bind(this); + this.catch = this.catch.bind(this); + this.describe = this.describe.bind(this); + this.pipe = this.pipe.bind(this); + this.readonly = this.readonly.bind(this); + this.isNullable = this.isNullable.bind(this); + this.isOptional = this.isOptional.bind(this); + this["~standard"] = { + version: 1, + vendor: "zod", + validate: (data) => this["~validate"](data), + }; + } + + optional(): ZodOptional { + return ZodOptional.create(this, this._def) as any; + } + nullable(): ZodNullable { + return ZodNullable.create(this, this._def) as any; + } + nullish(): ZodOptional> { + return this.nullable().optional(); + } + array(): ZodArray { + return ZodArray.create(this); + } + promise(): ZodPromise { + return ZodPromise.create(this, this._def); + } + + or(option: T): ZodUnion<[this, T]> { + return ZodUnion.create([this, option], this._def) as any; + } + + and(incoming: T): ZodIntersection { + return ZodIntersection.create(this, incoming, this._def); + } + + transform( + transform: (arg: Output, ctx: RefinementCtx) => NewOut | Promise + ): ZodEffects { + return new ZodEffects({ + ...processCreateParams(this._def), + schema: this, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect: { type: "transform", transform }, + }) as any; + } + + default(def: util.noUndefined): ZodDefault; + default(def: () => util.noUndefined): ZodDefault; + default(def: any) { + const defaultValueFunc = typeof def === "function" ? def : () => def; + + return new ZodDefault({ + ...processCreateParams(this._def), + innerType: this, + defaultValue: defaultValueFunc, + typeName: ZodFirstPartyTypeKind.ZodDefault, + }) as any; + } + + brand(brand?: B): ZodBranded; + brand(): ZodBranded { + return new ZodBranded({ + typeName: ZodFirstPartyTypeKind.ZodBranded, + type: this, + ...processCreateParams(this._def), + }); + } + + catch(def: Output): ZodCatch; + catch(def: (ctx: { error: ZodError; input: Input }) => Output): ZodCatch; + catch(def: any) { + const catchValueFunc = typeof def === "function" ? def : () => def; + + return new ZodCatch({ + ...processCreateParams(this._def), + innerType: this, + catchValue: catchValueFunc, + typeName: ZodFirstPartyTypeKind.ZodCatch, + }) as any; + } + + describe(description: string): this { + const This = (this as any).constructor; + return new This({ + ...this._def, + description, + }); + } + + pipe(target: T): ZodPipeline { + return ZodPipeline.create(this, target); + } + readonly(): ZodReadonly { + return ZodReadonly.create(this); + } + + isOptional(): boolean { + return this.safeParse(undefined).success; + } + isNullable(): boolean { + return this.safeParse(null).success; + } +} + +///////////////////////////////////////// +///////////////////////////////////////// +////////// ////////// +////////// ZodString ////////// +////////// ////////// +///////////////////////////////////////// +///////////////////////////////////////// +export type IpVersion = "v4" | "v6"; +export type ZodStringCheck = + | { kind: "min"; value: number; message?: string | undefined } + | { kind: "max"; value: number; message?: string | undefined } + | { kind: "length"; value: number; message?: string | undefined } + | { kind: "email"; message?: string | undefined } + | { kind: "url"; message?: string | undefined } + | { kind: "emoji"; message?: string | undefined } + | { kind: "uuid"; message?: string | undefined } + | { kind: "nanoid"; message?: string | undefined } + | { kind: "cuid"; message?: string | undefined } + | { kind: "includes"; value: string; position?: number | undefined; message?: string | undefined } + | { kind: "cuid2"; message?: string | undefined } + | { kind: "ulid"; message?: string | undefined } + | { kind: "startsWith"; value: string; message?: string | undefined } + | { kind: "endsWith"; value: string; message?: string | undefined } + | { kind: "regex"; regex: RegExp; message?: string | undefined } + | { kind: "trim"; message?: string | undefined } + | { kind: "toLowerCase"; message?: string | undefined } + | { kind: "toUpperCase"; message?: string | undefined } + | { kind: "jwt"; alg?: string; message?: string | undefined } + | { + kind: "datetime"; + offset: boolean; + local: boolean; + precision: number | null; + message?: string | undefined; + } + | { + kind: "date"; + // withDate: true; + message?: string | undefined; + } + | { + kind: "time"; + precision: number | null; + message?: string | undefined; + } + | { kind: "duration"; message?: string | undefined } + | { kind: "ip"; version?: IpVersion | undefined; message?: string | undefined } + | { kind: "cidr"; version?: IpVersion | undefined; message?: string | undefined } + | { kind: "base64"; message?: string | undefined } + | { kind: "base64url"; message?: string | undefined }; + +export interface ZodStringDef extends ZodTypeDef { + checks: ZodStringCheck[]; + typeName: ZodFirstPartyTypeKind.ZodString; + coerce: boolean; +} + +const cuidRegex = /^c[^\s-]{8,}$/i; +const cuid2Regex = /^[0-9a-z]+$/; +const ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i; +// const uuidRegex = +// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i; +const uuidRegex = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i; +const nanoidRegex = /^[a-z0-9_-]{21}$/i; +const jwtRegex = /^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/; +const durationRegex = + /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/; + +// from https://stackoverflow.com/a/46181/1550155 +// old version: too slow, didn't support unicode +// const emailRegex = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i; +//old email regex +// const emailRegex = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@((?!-)([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{1,})[^-<>()[\].,;:\s@"]$/i; +// eslint-disable-next-line +// const emailRegex = +// /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\])|(\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\.[A-Za-z]{2,})+))$/; +// const emailRegex = +// /^[a-zA-Z0-9\.\!\#\$\%\&\'\*\+\/\=\?\^\_\`\{\|\}\~\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; +// const emailRegex = +// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i; +const emailRegex = /^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i; +// const emailRegex = +// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\.[a-z0-9\-]+)*$/i; + +// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression +const _emojiRegex = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`; +let emojiRegex: RegExp; + +// faster, simpler, safer +const ipv4Regex = + /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; +const ipv4CidrRegex = + /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/; + +// const ipv6Regex = +// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/; +const ipv6Regex = + /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/; +const ipv6CidrRegex = + /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/; + +// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript +const base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/; + +// https://base64.guru/standards/base64url +const base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/; + +// simple +// const dateRegexSource = `\\d{4}-\\d{2}-\\d{2}`; +// no leap year validation +// const dateRegexSource = `\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\d|2\\d))`; +// with leap year validation +const dateRegexSource = `((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`; +const dateRegex = new RegExp(`^${dateRegexSource}$`); + +function timeRegexSource(args: { precision?: number | null }) { + let secondsRegexSource = `[0-5]\\d`; + if (args.precision) { + secondsRegexSource = `${secondsRegexSource}\\.\\d{${args.precision}}`; + } else if (args.precision == null) { + secondsRegexSource = `${secondsRegexSource}(\\.\\d+)?`; + } + + const secondsQuantifier = args.precision ? "+" : "?"; // require seconds if precision is nonzero + return `([01]\\d|2[0-3]):[0-5]\\d(:${secondsRegexSource})${secondsQuantifier}`; +} + +function timeRegex(args: { + offset?: boolean; + local?: boolean; + precision?: number | null; +}) { + return new RegExp(`^${timeRegexSource(args)}$`); +} + +// Adapted from https://stackoverflow.com/a/3143231 +export function datetimeRegex(args: { + precision?: number | null; + offset?: boolean; + local?: boolean; +}) { + let regex = `${dateRegexSource}T${timeRegexSource(args)}`; + + const opts: string[] = []; + opts.push(args.local ? `Z?` : `Z`); + if (args.offset) opts.push(`([+-]\\d{2}:?\\d{2})`); + regex = `${regex}(${opts.join("|")})`; + return new RegExp(`^${regex}$`); +} + +function isValidIP(ip: string, version?: IpVersion) { + if ((version === "v4" || !version) && ipv4Regex.test(ip)) { + return true; + } + if ((version === "v6" || !version) && ipv6Regex.test(ip)) { + return true; + } + + return false; +} + +function isValidJWT(jwt: string, alg?: string): boolean { + if (!jwtRegex.test(jwt)) return false; + try { + const [header] = jwt.split("."); + if (!header) return false; + // Convert base64url to base64 + const base64 = header + .replace(/-/g, "+") + .replace(/_/g, "/") + .padEnd(header.length + ((4 - (header.length % 4)) % 4), "="); + // @ts-ignore + const decoded = JSON.parse(atob(base64)); + if (typeof decoded !== "object" || decoded === null) return false; + if ("typ" in decoded && decoded?.typ !== "JWT") return false; + if (!decoded.alg) return false; + if (alg && decoded.alg !== alg) return false; + return true; + } catch { + return false; + } +} + +function isValidCidr(ip: string, version?: IpVersion) { + if ((version === "v4" || !version) && ipv4CidrRegex.test(ip)) { + return true; + } + if ((version === "v6" || !version) && ipv6CidrRegex.test(ip)) { + return true; + } + + return false; +} + +export class ZodString extends ZodType { + _parse(input: ParseInput): ParseReturnType { + if (this._def.coerce) { + input.data = String(input.data); + } + const parsedType = this._getType(input); + + if (parsedType !== ZodParsedType.string) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.string, + received: ctx.parsedType, + }); + return INVALID; + } + + const status = new ParseStatus(); + let ctx: undefined | ParseContext = undefined; + + for (const check of this._def.checks) { + if (check.kind === "min") { + if (input.data.length < check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check.value, + type: "string", + inclusive: true, + exact: false, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "max") { + if (input.data.length > check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check.value, + type: "string", + inclusive: true, + exact: false, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "length") { + const tooBig = input.data.length > check.value; + const tooSmall = input.data.length < check.value; + if (tooBig || tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + if (tooBig) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check.value, + type: "string", + inclusive: true, + exact: true, + message: check.message, + }); + } else if (tooSmall) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check.value, + type: "string", + inclusive: true, + exact: true, + message: check.message, + }); + } + status.dirty(); + } + } else if (check.kind === "email") { + if (!emailRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "email", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "emoji") { + if (!emojiRegex) { + emojiRegex = new RegExp(_emojiRegex, "u"); + } + if (!emojiRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "emoji", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "uuid") { + if (!uuidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "uuid", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "nanoid") { + if (!nanoidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "nanoid", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "cuid") { + if (!cuidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "cuid", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "cuid2") { + if (!cuid2Regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "cuid2", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "ulid") { + if (!ulidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "ulid", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "url") { + try { + // @ts-ignore + new URL(input.data); + } catch { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "url", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "regex") { + check.regex.lastIndex = 0; + const testResult = check.regex.test(input.data); + if (!testResult) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "regex", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "trim") { + input.data = input.data.trim(); + } else if (check.kind === "includes") { + if (!(input.data as string).includes(check.value, check.position)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { includes: check.value, position: check.position }, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "toLowerCase") { + input.data = input.data.toLowerCase(); + } else if (check.kind === "toUpperCase") { + input.data = input.data.toUpperCase(); + } else if (check.kind === "startsWith") { + if (!(input.data as string).startsWith(check.value)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { startsWith: check.value }, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "endsWith") { + if (!(input.data as string).endsWith(check.value)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { endsWith: check.value }, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "datetime") { + const regex = datetimeRegex(check); + + if (!regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "datetime", + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "date") { + const regex = dateRegex; + + if (!regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "date", + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "time") { + const regex = timeRegex(check); + + if (!regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "time", + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "duration") { + if (!durationRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "duration", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "ip") { + if (!isValidIP(input.data, check.version)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "ip", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "jwt") { + if (!isValidJWT(input.data, check.alg)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "jwt", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "cidr") { + if (!isValidCidr(input.data, check.version)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "cidr", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "base64") { + if (!base64Regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "base64", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "base64url") { + if (!base64urlRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "base64url", + code: ZodIssueCode.invalid_string, + message: check.message, + }); + status.dirty(); + } + } else { + util.assertNever(check); + } + } + + return { status: status.value, value: input.data }; + } + + protected _regex(regex: RegExp, validation: StringValidation, message?: errorUtil.ErrMessage) { + return this.refinement((data) => regex.test(data), { + validation, + code: ZodIssueCode.invalid_string, + ...errorUtil.errToObj(message), + }); + } + + _addCheck(check: ZodStringCheck) { + return new ZodString({ + ...this._def, + checks: [...this._def.checks, check], + }); + } + + email(message?: errorUtil.ErrMessage) { + return this._addCheck({ kind: "email", ...errorUtil.errToObj(message) }); + } + + url(message?: errorUtil.ErrMessage) { + return this._addCheck({ kind: "url", ...errorUtil.errToObj(message) }); + } + + emoji(message?: errorUtil.ErrMessage) { + return this._addCheck({ kind: "emoji", ...errorUtil.errToObj(message) }); + } + + uuid(message?: errorUtil.ErrMessage) { + return this._addCheck({ kind: "uuid", ...errorUtil.errToObj(message) }); + } + nanoid(message?: errorUtil.ErrMessage) { + return this._addCheck({ kind: "nanoid", ...errorUtil.errToObj(message) }); + } + cuid(message?: errorUtil.ErrMessage) { + return this._addCheck({ kind: "cuid", ...errorUtil.errToObj(message) }); + } + + cuid2(message?: errorUtil.ErrMessage) { + return this._addCheck({ kind: "cuid2", ...errorUtil.errToObj(message) }); + } + ulid(message?: errorUtil.ErrMessage) { + return this._addCheck({ kind: "ulid", ...errorUtil.errToObj(message) }); + } + base64(message?: errorUtil.ErrMessage) { + return this._addCheck({ kind: "base64", ...errorUtil.errToObj(message) }); + } + base64url(message?: errorUtil.ErrMessage) { + // base64url encoding is a modification of base64 that can safely be used in URLs and filenames + return this._addCheck({ + kind: "base64url", + ...errorUtil.errToObj(message), + }); + } + + jwt(options?: { alg?: string; message?: string | undefined }) { + return this._addCheck({ kind: "jwt", ...errorUtil.errToObj(options) }); + } + + ip(options?: string | { version?: IpVersion; message?: string | undefined }) { + return this._addCheck({ kind: "ip", ...errorUtil.errToObj(options) }); + } + + cidr(options?: string | { version?: IpVersion; message?: string | undefined }) { + return this._addCheck({ kind: "cidr", ...errorUtil.errToObj(options) }); + } + + datetime( + options?: + | string + | { + message?: string | undefined; + precision?: number | null; + offset?: boolean; + local?: boolean; + } + ) { + if (typeof options === "string") { + return this._addCheck({ + kind: "datetime", + precision: null, + offset: false, + local: false, + message: options, + }); + } + return this._addCheck({ + kind: "datetime", + + precision: typeof options?.precision === "undefined" ? null : options?.precision, + offset: options?.offset ?? false, + local: options?.local ?? false, + ...errorUtil.errToObj(options?.message), + }); + } + + date(message?: string) { + return this._addCheck({ kind: "date", message }); + } + + time( + options?: + | string + | { + message?: string | undefined; + precision?: number | null; + } + ) { + if (typeof options === "string") { + return this._addCheck({ + kind: "time", + precision: null, + message: options, + }); + } + return this._addCheck({ + kind: "time", + precision: typeof options?.precision === "undefined" ? null : options?.precision, + ...errorUtil.errToObj(options?.message), + }); + } + + duration(message?: errorUtil.ErrMessage) { + return this._addCheck({ kind: "duration", ...errorUtil.errToObj(message) }); + } + + regex(regex: RegExp, message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "regex", + regex: regex, + ...errorUtil.errToObj(message), + }); + } + + includes(value: string, options?: { message?: string; position?: number }) { + return this._addCheck({ + kind: "includes", + value: value, + position: options?.position, + ...errorUtil.errToObj(options?.message), + }); + } + + startsWith(value: string, message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "startsWith", + value: value, + ...errorUtil.errToObj(message), + }); + } + + endsWith(value: string, message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "endsWith", + value: value, + ...errorUtil.errToObj(message), + }); + } + + min(minLength: number, message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "min", + value: minLength, + ...errorUtil.errToObj(message), + }); + } + + max(maxLength: number, message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "max", + value: maxLength, + ...errorUtil.errToObj(message), + }); + } + + length(len: number, message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "length", + value: len, + ...errorUtil.errToObj(message), + }); + } + + /** + * Equivalent to `.min(1)` + */ + nonempty(message?: errorUtil.ErrMessage) { + return this.min(1, errorUtil.errToObj(message)); + } + + trim() { + return new ZodString({ + ...this._def, + checks: [...this._def.checks, { kind: "trim" }], + }); + } + + toLowerCase() { + return new ZodString({ + ...this._def, + checks: [...this._def.checks, { kind: "toLowerCase" }], + }); + } + + toUpperCase() { + return new ZodString({ + ...this._def, + checks: [...this._def.checks, { kind: "toUpperCase" }], + }); + } + + get isDatetime() { + return !!this._def.checks.find((ch) => ch.kind === "datetime"); + } + + get isDate() { + return !!this._def.checks.find((ch) => ch.kind === "date"); + } + + get isTime() { + return !!this._def.checks.find((ch) => ch.kind === "time"); + } + get isDuration() { + return !!this._def.checks.find((ch) => ch.kind === "duration"); + } + + get isEmail() { + return !!this._def.checks.find((ch) => ch.kind === "email"); + } + + get isURL() { + return !!this._def.checks.find((ch) => ch.kind === "url"); + } + + get isEmoji() { + return !!this._def.checks.find((ch) => ch.kind === "emoji"); + } + + get isUUID() { + return !!this._def.checks.find((ch) => ch.kind === "uuid"); + } + get isNANOID() { + return !!this._def.checks.find((ch) => ch.kind === "nanoid"); + } + get isCUID() { + return !!this._def.checks.find((ch) => ch.kind === "cuid"); + } + + get isCUID2() { + return !!this._def.checks.find((ch) => ch.kind === "cuid2"); + } + get isULID() { + return !!this._def.checks.find((ch) => ch.kind === "ulid"); + } + get isIP() { + return !!this._def.checks.find((ch) => ch.kind === "ip"); + } + get isCIDR() { + return !!this._def.checks.find((ch) => ch.kind === "cidr"); + } + get isBase64() { + return !!this._def.checks.find((ch) => ch.kind === "base64"); + } + get isBase64url() { + // base64url encoding is a modification of base64 that can safely be used in URLs and filenames + return !!this._def.checks.find((ch) => ch.kind === "base64url"); + } + + get minLength() { + let min: number | null = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) min = ch.value; + } + } + return min; + } + + get maxLength() { + let max: number | null = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) max = ch.value; + } + } + return max; + } + + static create = (params?: RawCreateParams & { coerce?: true }): ZodString => { + return new ZodString({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodString, + coerce: params?.coerce ?? false, + ...processCreateParams(params), + }); + }; +} + +///////////////////////////////////////// +///////////////////////////////////////// +////////// ////////// +////////// ZodNumber ////////// +////////// ////////// +///////////////////////////////////////// +///////////////////////////////////////// +export type ZodNumberCheck = + | { kind: "min"; value: number; inclusive: boolean; message?: string | undefined } + | { kind: "max"; value: number; inclusive: boolean; message?: string | undefined } + | { kind: "int"; message?: string | undefined } + | { kind: "multipleOf"; value: number; message?: string | undefined } + | { kind: "finite"; message?: string | undefined }; + +// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034 +function floatSafeRemainder(val: number, step: number) { + const valDecCount = (val.toString().split(".")[1] || "").length; + const stepDecCount = (step.toString().split(".")[1] || "").length; + const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount; + const valInt = Number.parseInt(val.toFixed(decCount).replace(".", "")); + const stepInt = Number.parseInt(step.toFixed(decCount).replace(".", "")); + return (valInt % stepInt) / 10 ** decCount; +} + +export interface ZodNumberDef extends ZodTypeDef { + checks: ZodNumberCheck[]; + typeName: ZodFirstPartyTypeKind.ZodNumber; + coerce: boolean; +} + +export class ZodNumber extends ZodType { + _parse(input: ParseInput): ParseReturnType { + if (this._def.coerce) { + input.data = Number(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.number) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.number, + received: ctx.parsedType, + }); + return INVALID; + } + + let ctx: undefined | ParseContext = undefined; + const status = new ParseStatus(); + + for (const check of this._def.checks) { + if (check.kind === "int") { + if (!util.isInteger(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: "integer", + received: "float", + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "min") { + const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value; + if (tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check.value, + type: "number", + inclusive: check.inclusive, + exact: false, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "max") { + const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value; + if (tooBig) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check.value, + type: "number", + inclusive: check.inclusive, + exact: false, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "multipleOf") { + if (floatSafeRemainder(input.data, check.value) !== 0) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_multiple_of, + multipleOf: check.value, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "finite") { + if (!Number.isFinite(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_finite, + message: check.message, + }); + status.dirty(); + } + } else { + util.assertNever(check); + } + } + + return { status: status.value, value: input.data }; + } + + static create = (params?: RawCreateParams & { coerce?: boolean }): ZodNumber => { + return new ZodNumber({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodNumber, + coerce: params?.coerce || false, + ...processCreateParams(params), + }); + }; + + gte(value: number, message?: errorUtil.ErrMessage) { + return this.setLimit("min", value, true, errorUtil.toString(message)); + } + min = this.gte; + + gt(value: number, message?: errorUtil.ErrMessage) { + return this.setLimit("min", value, false, errorUtil.toString(message)); + } + + lte(value: number, message?: errorUtil.ErrMessage) { + return this.setLimit("max", value, true, errorUtil.toString(message)); + } + max = this.lte; + + lt(value: number, message?: errorUtil.ErrMessage) { + return this.setLimit("max", value, false, errorUtil.toString(message)); + } + + protected setLimit(kind: "min" | "max", value: number, inclusive: boolean, message?: string) { + return new ZodNumber({ + ...this._def, + checks: [ + ...this._def.checks, + { + kind, + value, + inclusive, + message: errorUtil.toString(message), + }, + ], + }); + } + + _addCheck(check: ZodNumberCheck) { + return new ZodNumber({ + ...this._def, + checks: [...this._def.checks, check], + }); + } + + int(message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "int", + message: errorUtil.toString(message), + }); + } + + positive(message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "min", + value: 0, + inclusive: false, + message: errorUtil.toString(message), + }); + } + + negative(message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "max", + value: 0, + inclusive: false, + message: errorUtil.toString(message), + }); + } + + nonpositive(message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "max", + value: 0, + inclusive: true, + message: errorUtil.toString(message), + }); + } + + nonnegative(message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "min", + value: 0, + inclusive: true, + message: errorUtil.toString(message), + }); + } + + multipleOf(value: number, message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "multipleOf", + value: value, + message: errorUtil.toString(message), + }); + } + step = this.multipleOf; + + finite(message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "finite", + message: errorUtil.toString(message), + }); + } + + safe(message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "min", + inclusive: true, + value: Number.MIN_SAFE_INTEGER, + message: errorUtil.toString(message), + })._addCheck({ + kind: "max", + inclusive: true, + value: Number.MAX_SAFE_INTEGER, + message: errorUtil.toString(message), + }); + } + + get minValue() { + let min: number | null = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) min = ch.value; + } + } + return min; + } + + get maxValue() { + let max: number | null = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) max = ch.value; + } + } + return max; + } + + get isInt() { + return !!this._def.checks.find((ch) => ch.kind === "int" || (ch.kind === "multipleOf" && util.isInteger(ch.value))); + } + + get isFinite() { + let max: number | null = null; + let min: number | null = null; + for (const ch of this._def.checks) { + if (ch.kind === "finite" || ch.kind === "int" || ch.kind === "multipleOf") { + return true; + } else if (ch.kind === "min") { + if (min === null || ch.value > min) min = ch.value; + } else if (ch.kind === "max") { + if (max === null || ch.value < max) max = ch.value; + } + } + return Number.isFinite(min) && Number.isFinite(max); + } +} + +///////////////////////////////////////// +///////////////////////////////////////// +////////// ////////// +////////// ZodBigInt ////////// +////////// ////////// +///////////////////////////////////////// +///////////////////////////////////////// +export type ZodBigIntCheck = + | { kind: "min"; value: bigint; inclusive: boolean; message?: string | undefined } + | { kind: "max"; value: bigint; inclusive: boolean; message?: string | undefined } + | { kind: "multipleOf"; value: bigint; message?: string | undefined }; + +export interface ZodBigIntDef extends ZodTypeDef { + checks: ZodBigIntCheck[]; + typeName: ZodFirstPartyTypeKind.ZodBigInt; + coerce: boolean; +} + +export class ZodBigInt extends ZodType { + _parse(input: ParseInput): ParseReturnType { + if (this._def.coerce) { + try { + input.data = BigInt(input.data); + } catch { + return this._getInvalidInput(input); + } + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.bigint) { + return this._getInvalidInput(input); + } + + let ctx: undefined | ParseContext = undefined; + const status = new ParseStatus(); + + for (const check of this._def.checks) { + if (check.kind === "min") { + const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value; + if (tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + type: "bigint", + minimum: check.value, + inclusive: check.inclusive, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "max") { + const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value; + if (tooBig) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + type: "bigint", + maximum: check.value, + inclusive: check.inclusive, + message: check.message, + }); + status.dirty(); + } + } else if (check.kind === "multipleOf") { + if (input.data % check.value !== BigInt(0)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_multiple_of, + multipleOf: check.value, + message: check.message, + }); + status.dirty(); + } + } else { + util.assertNever(check); + } + } + + return { status: status.value, value: input.data }; + } + + _getInvalidInput(input: ParseInput) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.bigint, + received: ctx.parsedType, + }); + return INVALID; + } + + static create = (params?: RawCreateParams & { coerce?: boolean }): ZodBigInt => { + return new ZodBigInt({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodBigInt, + coerce: params?.coerce ?? false, + ...processCreateParams(params), + }); + }; + + gte(value: bigint, message?: errorUtil.ErrMessage) { + return this.setLimit("min", value, true, errorUtil.toString(message)); + } + min = this.gte; + + gt(value: bigint, message?: errorUtil.ErrMessage) { + return this.setLimit("min", value, false, errorUtil.toString(message)); + } + + lte(value: bigint, message?: errorUtil.ErrMessage) { + return this.setLimit("max", value, true, errorUtil.toString(message)); + } + max = this.lte; + + lt(value: bigint, message?: errorUtil.ErrMessage) { + return this.setLimit("max", value, false, errorUtil.toString(message)); + } + + protected setLimit(kind: "min" | "max", value: bigint, inclusive: boolean, message?: string) { + return new ZodBigInt({ + ...this._def, + checks: [ + ...this._def.checks, + { + kind, + value, + inclusive, + message: errorUtil.toString(message), + }, + ], + }); + } + + _addCheck(check: ZodBigIntCheck) { + return new ZodBigInt({ + ...this._def, + checks: [...this._def.checks, check], + }); + } + + positive(message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "min", + value: BigInt(0), + inclusive: false, + message: errorUtil.toString(message), + }); + } + + negative(message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "max", + value: BigInt(0), + inclusive: false, + message: errorUtil.toString(message), + }); + } + + nonpositive(message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "max", + value: BigInt(0), + inclusive: true, + message: errorUtil.toString(message), + }); + } + + nonnegative(message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "min", + value: BigInt(0), + inclusive: true, + message: errorUtil.toString(message), + }); + } + + multipleOf(value: bigint, message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "multipleOf", + value, + message: errorUtil.toString(message), + }); + } + + get minValue() { + let min: bigint | null = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) min = ch.value; + } + } + return min; + } + + get maxValue() { + let max: bigint | null = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) max = ch.value; + } + } + return max; + } +} + +////////////////////////////////////////// +////////////////////////////////////////// +////////// /////////// +////////// ZodBoolean ////////// +////////// /////////// +////////////////////////////////////////// +////////////////////////////////////////// +export interface ZodBooleanDef extends ZodTypeDef { + typeName: ZodFirstPartyTypeKind.ZodBoolean; + coerce: boolean; +} + +export class ZodBoolean extends ZodType { + _parse(input: ParseInput): ParseReturnType { + if (this._def.coerce) { + input.data = Boolean(input.data); + } + const parsedType = this._getType(input); + + if (parsedType !== ZodParsedType.boolean) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.boolean, + received: ctx.parsedType, + }); + return INVALID; + } + return OK(input.data); + } + + static create = (params?: RawCreateParams & { coerce?: boolean }): ZodBoolean => { + return new ZodBoolean({ + typeName: ZodFirstPartyTypeKind.ZodBoolean, + coerce: params?.coerce || false, + ...processCreateParams(params), + }); + }; +} + +/////////////////////////////////////// +/////////////////////////////////////// +////////// //////// +////////// ZodDate //////// +////////// //////// +/////////////////////////////////////// +/////////////////////////////////////// +export type ZodDateCheck = + | { kind: "min"; value: number; message?: string | undefined } + | { kind: "max"; value: number; message?: string | undefined }; +export interface ZodDateDef extends ZodTypeDef { + checks: ZodDateCheck[]; + coerce: boolean; + typeName: ZodFirstPartyTypeKind.ZodDate; +} + +export class ZodDate extends ZodType { + _parse(input: ParseInput): ParseReturnType { + if (this._def.coerce) { + input.data = new Date(input.data); + } + const parsedType = this._getType(input); + + if (parsedType !== ZodParsedType.date) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.date, + received: ctx.parsedType, + }); + return INVALID; + } + + if (Number.isNaN(input.data.getTime())) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_date, + }); + return INVALID; + } + + const status = new ParseStatus(); + let ctx: undefined | ParseContext = undefined; + + for (const check of this._def.checks) { + if (check.kind === "min") { + if (input.data.getTime() < check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + message: check.message, + inclusive: true, + exact: false, + minimum: check.value, + type: "date", + }); + status.dirty(); + } + } else if (check.kind === "max") { + if (input.data.getTime() > check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + message: check.message, + inclusive: true, + exact: false, + maximum: check.value, + type: "date", + }); + status.dirty(); + } + } else { + util.assertNever(check); + } + } + + return { + status: status.value, + value: new Date((input.data as Date).getTime()), + }; + } + + _addCheck(check: ZodDateCheck) { + return new ZodDate({ + ...this._def, + checks: [...this._def.checks, check], + }); + } + + min(minDate: Date, message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "min", + value: minDate.getTime(), + message: errorUtil.toString(message), + }); + } + + max(maxDate: Date, message?: errorUtil.ErrMessage) { + return this._addCheck({ + kind: "max", + value: maxDate.getTime(), + message: errorUtil.toString(message), + }); + } + + get minDate() { + let min: number | null = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) min = ch.value; + } + } + + return min != null ? new Date(min) : null; + } + + get maxDate() { + let max: number | null = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) max = ch.value; + } + } + + return max != null ? new Date(max) : null; + } + + static create = (params?: RawCreateParams & { coerce?: boolean }): ZodDate => { + return new ZodDate({ + checks: [], + coerce: params?.coerce || false, + typeName: ZodFirstPartyTypeKind.ZodDate, + ...processCreateParams(params), + }); + }; +} + +//////////////////////////////////////////// +//////////////////////////////////////////// +////////// ////////// +////////// ZodSymbol ////////// +////////// ////////// +//////////////////////////////////////////// +//////////////////////////////////////////// +export interface ZodSymbolDef extends ZodTypeDef { + typeName: ZodFirstPartyTypeKind.ZodSymbol; +} + +export class ZodSymbol extends ZodType { + _parse(input: ParseInput): ParseReturnType { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.symbol) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.symbol, + received: ctx.parsedType, + }); + return INVALID; + } + + return OK(input.data); + } + + static create = (params?: RawCreateParams): ZodSymbol => { + return new ZodSymbol({ + typeName: ZodFirstPartyTypeKind.ZodSymbol, + ...processCreateParams(params), + }); + }; +} + +//////////////////////////////////////////// +//////////////////////////////////////////// +////////// ////////// +////////// ZodUndefined ////////// +////////// ////////// +//////////////////////////////////////////// +//////////////////////////////////////////// +export interface ZodUndefinedDef extends ZodTypeDef { + typeName: ZodFirstPartyTypeKind.ZodUndefined; +} + +export class ZodUndefined extends ZodType { + _parse(input: ParseInput): ParseReturnType { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.undefined) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.undefined, + received: ctx.parsedType, + }); + return INVALID; + } + return OK(input.data); + } + params?: RawCreateParams; + + static create = (params?: RawCreateParams): ZodUndefined => { + return new ZodUndefined({ + typeName: ZodFirstPartyTypeKind.ZodUndefined, + ...processCreateParams(params), + }); + }; +} + +/////////////////////////////////////// +/////////////////////////////////////// +////////// ////////// +////////// ZodNull ////////// +////////// ////////// +/////////////////////////////////////// +/////////////////////////////////////// +export interface ZodNullDef extends ZodTypeDef { + typeName: ZodFirstPartyTypeKind.ZodNull; +} + +export class ZodNull extends ZodType { + _parse(input: ParseInput): ParseReturnType { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.null) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.null, + received: ctx.parsedType, + }); + return INVALID; + } + return OK(input.data); + } + static create = (params?: RawCreateParams): ZodNull => { + return new ZodNull({ + typeName: ZodFirstPartyTypeKind.ZodNull, + ...processCreateParams(params), + }); + }; +} + +////////////////////////////////////// +////////////////////////////////////// +////////// ////////// +////////// ZodAny ////////// +////////// ////////// +////////////////////////////////////// +////////////////////////////////////// +export interface ZodAnyDef extends ZodTypeDef { + typeName: ZodFirstPartyTypeKind.ZodAny; +} + +export class ZodAny extends ZodType { + // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject. + _any = true as const; + _parse(input: ParseInput): ParseReturnType { + return OK(input.data); + } + static create = (params?: RawCreateParams): ZodAny => { + return new ZodAny({ + typeName: ZodFirstPartyTypeKind.ZodAny, + ...processCreateParams(params), + }); + }; +} + +////////////////////////////////////////// +////////////////////////////////////////// +////////// ////////// +////////// ZodUnknown ////////// +////////// ////////// +////////////////////////////////////////// +////////////////////////////////////////// +export interface ZodUnknownDef extends ZodTypeDef { + typeName: ZodFirstPartyTypeKind.ZodUnknown; +} + +export class ZodUnknown extends ZodType { + // required + _unknown = true as const; + _parse(input: ParseInput): ParseReturnType { + return OK(input.data); + } + + static create = (params?: RawCreateParams): ZodUnknown => { + return new ZodUnknown({ + typeName: ZodFirstPartyTypeKind.ZodUnknown, + ...processCreateParams(params), + }); + }; +} + +//////////////////////////////////////// +//////////////////////////////////////// +////////// ////////// +////////// ZodNever ////////// +////////// ////////// +//////////////////////////////////////// +//////////////////////////////////////// +export interface ZodNeverDef extends ZodTypeDef { + typeName: ZodFirstPartyTypeKind.ZodNever; +} + +export class ZodNever extends ZodType { + _parse(input: ParseInput): ParseReturnType { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.never, + received: ctx.parsedType, + }); + return INVALID; + } + static create = (params?: RawCreateParams): ZodNever => { + return new ZodNever({ + typeName: ZodFirstPartyTypeKind.ZodNever, + ...processCreateParams(params), + }); + }; +} + +/////////////////////////////////////// +/////////////////////////////////////// +////////// ////////// +////////// ZodVoid ////////// +////////// ////////// +/////////////////////////////////////// +/////////////////////////////////////// +export interface ZodVoidDef extends ZodTypeDef { + typeName: ZodFirstPartyTypeKind.ZodVoid; +} + +export class ZodVoid extends ZodType { + _parse(input: ParseInput): ParseReturnType { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.undefined) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.void, + received: ctx.parsedType, + }); + return INVALID; + } + return OK(input.data); + } + + static create = (params?: RawCreateParams): ZodVoid => { + return new ZodVoid({ + typeName: ZodFirstPartyTypeKind.ZodVoid, + ...processCreateParams(params), + }); + }; +} + +//////////////////////////////////////// +//////////////////////////////////////// +////////// ////////// +////////// ZodArray ////////// +////////// ////////// +//////////////////////////////////////// +//////////////////////////////////////// +export interface ZodArrayDef extends ZodTypeDef { + type: T; + typeName: ZodFirstPartyTypeKind.ZodArray; + exactLength: { value: number; message?: string | undefined } | null; + minLength: { value: number; message?: string | undefined } | null; + maxLength: { value: number; message?: string | undefined } | null; +} + +export type ArrayCardinality = "many" | "atleastone"; +export type arrayOutputType< + T extends ZodTypeAny, + Cardinality extends ArrayCardinality = "many", +> = Cardinality extends "atleastone" ? [T["_output"], ...T["_output"][]] : T["_output"][]; + +export class ZodArray extends ZodType< + arrayOutputType, + ZodArrayDef, + Cardinality extends "atleastone" ? [T["_input"], ...T["_input"][]] : T["_input"][] +> { + _parse(input: ParseInput): ParseReturnType { + const { ctx, status } = this._processInputParams(input); + + const def = this._def; + + if (ctx.parsedType !== ZodParsedType.array) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.array, + received: ctx.parsedType, + }); + return INVALID; + } + + if (def.exactLength !== null) { + const tooBig = ctx.data.length > def.exactLength.value; + const tooSmall = ctx.data.length < def.exactLength.value; + if (tooBig || tooSmall) { + addIssueToContext(ctx, { + code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small, + minimum: (tooSmall ? def.exactLength.value : undefined) as number, + maximum: (tooBig ? def.exactLength.value : undefined) as number, + type: "array", + inclusive: true, + exact: true, + message: def.exactLength.message, + }); + status.dirty(); + } + } + + if (def.minLength !== null) { + if (ctx.data.length < def.minLength.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: def.minLength.value, + type: "array", + inclusive: true, + exact: false, + message: def.minLength.message, + }); + status.dirty(); + } + } + + if (def.maxLength !== null) { + if (ctx.data.length > def.maxLength.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: def.maxLength.value, + type: "array", + inclusive: true, + exact: false, + message: def.maxLength.message, + }); + status.dirty(); + } + } + + if (ctx.common.async) { + return Promise.all( + ([...ctx.data] as any[]).map((item, i) => { + return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i)); + }) + ).then((result) => { + return ParseStatus.mergeArray(status, result); + }); + } + + const result = ([...ctx.data] as any[]).map((item, i) => { + return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i)); + }); + + return ParseStatus.mergeArray(status, result); + } + + get element() { + return this._def.type; + } + + min(minLength: number, message?: errorUtil.ErrMessage): this { + return new ZodArray({ + ...this._def, + minLength: { value: minLength, message: errorUtil.toString(message) }, + }) as any; + } + + max(maxLength: number, message?: errorUtil.ErrMessage): this { + return new ZodArray({ + ...this._def, + maxLength: { value: maxLength, message: errorUtil.toString(message) }, + }) as any; + } + + length(len: number, message?: errorUtil.ErrMessage): this { + return new ZodArray({ + ...this._def, + exactLength: { value: len, message: errorUtil.toString(message) }, + }) as any; + } + + nonempty(message?: errorUtil.ErrMessage): ZodArray { + return this.min(1, message) as any; + } + + static create = (schema: El, params?: RawCreateParams): ZodArray => { + return new ZodArray({ + type: schema, + minLength: null, + maxLength: null, + exactLength: null, + typeName: ZodFirstPartyTypeKind.ZodArray, + ...processCreateParams(params), + }); + }; +} + +export type ZodNonEmptyArray = ZodArray; + +///////////////////////////////////////// +///////////////////////////////////////// +////////// ////////// +////////// ZodObject ////////// +////////// ////////// +///////////////////////////////////////// +///////////////////////////////////////// + +export type UnknownKeysParam = "passthrough" | "strict" | "strip"; + +export interface ZodObjectDef< + T extends ZodRawShape = ZodRawShape, + UnknownKeys extends UnknownKeysParam = UnknownKeysParam, + Catchall extends ZodTypeAny = ZodTypeAny, +> extends ZodTypeDef { + typeName: ZodFirstPartyTypeKind.ZodObject; + shape: () => T; + catchall: Catchall; + unknownKeys: UnknownKeys; +} + +export type mergeTypes = { + [k in keyof A | keyof B]: k extends keyof B ? B[k] : k extends keyof A ? A[k] : never; +}; + +export type objectOutputType< + Shape extends ZodRawShape, + Catchall extends ZodTypeAny, + UnknownKeys extends UnknownKeysParam = UnknownKeysParam, +> = objectUtil.flatten>> & + CatchallOutput & + PassthroughType; + +export type baseObjectOutputType = { + [k in keyof Shape]: Shape[k]["_output"]; +}; + +export type objectInputType< + Shape extends ZodRawShape, + Catchall extends ZodTypeAny, + UnknownKeys extends UnknownKeysParam = UnknownKeysParam, +> = objectUtil.flatten> & CatchallInput & PassthroughType; +export type baseObjectInputType = objectUtil.addQuestionMarks<{ + [k in keyof Shape]: Shape[k]["_input"]; +}>; + +export type CatchallOutput = ZodType extends T ? unknown : { [k: string]: T["_output"] }; + +export type CatchallInput = ZodType extends T ? unknown : { [k: string]: T["_input"] }; + +export type PassthroughType = T extends "passthrough" ? { [k: string]: unknown } : unknown; + +export type deoptional = T extends ZodOptional + ? deoptional + : T extends ZodNullable + ? ZodNullable> + : T; + +export type SomeZodObject = ZodObject; + +export type noUnrecognized = { + [k in keyof Obj]: k extends keyof Shape ? Obj[k] : never; +}; + +function deepPartialify(schema: ZodTypeAny): any { + if (schema instanceof ZodObject) { + const newShape: any = {}; + + for (const key in schema.shape) { + const fieldSchema = schema.shape[key]; + newShape[key] = ZodOptional.create(deepPartialify(fieldSchema)); + } + return new ZodObject({ + ...schema._def, + shape: () => newShape, + }) as any; + } else if (schema instanceof ZodArray) { + return new ZodArray({ + ...schema._def, + type: deepPartialify(schema.element), + }); + } else if (schema instanceof ZodOptional) { + return ZodOptional.create(deepPartialify(schema.unwrap())); + } else if (schema instanceof ZodNullable) { + return ZodNullable.create(deepPartialify(schema.unwrap())); + } else if (schema instanceof ZodTuple) { + return ZodTuple.create(schema.items.map((item: any) => deepPartialify(item))); + } else { + return schema; + } +} + +export class ZodObject< + T extends ZodRawShape, + UnknownKeys extends UnknownKeysParam = UnknownKeysParam, + Catchall extends ZodTypeAny = ZodTypeAny, + Output = objectOutputType, + Input = objectInputType, +> extends ZodType, Input> { + _cached: { shape: T; keys: string[] } | null = null; + + _getCached(): { shape: T; keys: string[] } { + if (this._cached !== null) return this._cached; + const shape = this._def.shape(); + const keys = util.objectKeys(shape); + this._cached = { shape, keys }; + return this._cached; + } + + _parse(input: ParseInput): ParseReturnType { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.object) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx.parsedType, + }); + return INVALID; + } + + const { status, ctx } = this._processInputParams(input); + + const { shape, keys: shapeKeys } = this._getCached(); + const extraKeys: string[] = []; + + if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === "strip")) { + for (const key in ctx.data) { + if (!shapeKeys.includes(key)) { + extraKeys.push(key); + } + } + } + + const pairs: { + key: ParseReturnType; + value: ParseReturnType; + alwaysSet?: boolean; + }[] = []; + for (const key of shapeKeys) { + const keyValidator = shape[key]!; + const value = ctx.data[key]; + pairs.push({ + key: { status: "valid", value: key }, + value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)), + alwaysSet: key in ctx.data, + }); + } + + if (this._def.catchall instanceof ZodNever) { + const unknownKeys = this._def.unknownKeys; + + if (unknownKeys === "passthrough") { + for (const key of extraKeys) { + pairs.push({ + key: { status: "valid", value: key }, + value: { status: "valid", value: ctx.data[key] }, + }); + } + } else if (unknownKeys === "strict") { + if (extraKeys.length > 0) { + addIssueToContext(ctx, { + code: ZodIssueCode.unrecognized_keys, + keys: extraKeys, + }); + status.dirty(); + } + } else if (unknownKeys === "strip") { + } else { + throw new Error(`Internal ZodObject error: invalid unknownKeys value.`); + } + } else { + // run catchall validation + const catchall = this._def.catchall; + + for (const key of extraKeys) { + const value = ctx.data[key]; + pairs.push({ + key: { status: "valid", value: key }, + value: catchall._parse( + new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value) + ), + alwaysSet: key in ctx.data, + }); + } + } + + if (ctx.common.async) { + return Promise.resolve() + .then(async () => { + const syncPairs: any[] = []; + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + syncPairs.push({ + key, + value, + alwaysSet: pair.alwaysSet, + }); + } + return syncPairs; + }) + .then((syncPairs) => { + return ParseStatus.mergeObjectSync(status, syncPairs); + }); + } else { + return ParseStatus.mergeObjectSync(status, pairs as any); + } + } + + get shape() { + return this._def.shape(); + } + + strict(message?: errorUtil.ErrMessage): ZodObject { + errorUtil.errToObj; + return new ZodObject({ + ...this._def, + unknownKeys: "strict", + ...(message !== undefined + ? { + errorMap: (issue, ctx) => { + const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError; + if (issue.code === "unrecognized_keys") + return { + message: errorUtil.errToObj(message).message ?? defaultError, + }; + return { + message: defaultError, + }; + }, + } + : {}), + }) as any; + } + + strip(): ZodObject { + return new ZodObject({ + ...this._def, + unknownKeys: "strip", + }) as any; + } + + passthrough(): ZodObject { + return new ZodObject({ + ...this._def, + unknownKeys: "passthrough", + }) as any; + } + + /** + * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped. + * If you want to pass through unknown properties, use `.passthrough()` instead. + */ + nonstrict = this.passthrough; + + // const AugmentFactory = + // (def: Def) => + // ( + // augmentation: Augmentation + // ): ZodObject< + // extendShape, Augmentation>, + // Def["unknownKeys"], + // Def["catchall"] + // > => { + // return new ZodObject({ + // ...def, + // shape: () => ({ + // ...def.shape(), + // ...augmentation, + // }), + // }) as any; + // }; + extend( + augmentation: Augmentation + ): ZodObject, UnknownKeys, Catchall> { + return new ZodObject({ + ...this._def, + shape: () => ({ + ...this._def.shape(), + ...augmentation, + }), + }) as any; + } + // extend< + // Augmentation extends ZodRawShape, + // NewOutput extends util.flatten<{ + // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation + // ? Augmentation[k]["_output"] + // : k extends keyof Output + // ? Output[k] + // : never; + // }>, + // NewInput extends util.flatten<{ + // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation + // ? Augmentation[k]["_input"] + // : k extends keyof Input + // ? Input[k] + // : never; + // }> + // >( + // augmentation: Augmentation + // ): ZodObject< + // extendShape, + // UnknownKeys, + // Catchall, + // NewOutput, + // NewInput + // > { + // return new ZodObject({ + // ...this._def, + // shape: () => ({ + // ...this._def.shape(), + // ...augmentation, + // }), + // }) as any; + // } + /** + * @deprecated Use `.extend` instead + * */ + augment = this.extend; + + /** + * Prior to zod@1.0.12 there was a bug in the + * inferred type of merged objects. Please + * upgrade if you are experiencing issues. + */ + merge( + merging: Incoming + ): ZodObject, Incoming["_def"]["unknownKeys"], Incoming["_def"]["catchall"]> { + const merged: any = new ZodObject({ + unknownKeys: merging._def.unknownKeys, + catchall: merging._def.catchall, + shape: () => ({ + ...this._def.shape(), + ...merging._def.shape(), + }), + typeName: ZodFirstPartyTypeKind.ZodObject, + }) as any; + return merged; + } + // merge< + // Incoming extends AnyZodObject, + // Augmentation extends Incoming["shape"], + // NewOutput extends { + // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation + // ? Augmentation[k]["_output"] + // : k extends keyof Output + // ? Output[k] + // : never; + // }, + // NewInput extends { + // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation + // ? Augmentation[k]["_input"] + // : k extends keyof Input + // ? Input[k] + // : never; + // } + // >( + // merging: Incoming + // ): ZodObject< + // extendShape>, + // Incoming["_def"]["unknownKeys"], + // Incoming["_def"]["catchall"], + // NewOutput, + // NewInput + // > { + // const merged: any = new ZodObject({ + // unknownKeys: merging._def.unknownKeys, + // catchall: merging._def.catchall, + // shape: () => + // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), + // typeName: ZodFirstPartyTypeKind.ZodObject, + // }) as any; + // return merged; + // } + + setKey( + key: Key, + schema: Schema + ): ZodObject { + return this.augment({ [key]: schema }) as any; + } + // merge( + // merging: Incoming + // ): //ZodObject = (merging) => { + // ZodObject< + // extendShape>, + // Incoming["_def"]["unknownKeys"], + // Incoming["_def"]["catchall"] + // > { + // // const mergedShape = objectUtil.mergeShapes( + // // this._def.shape(), + // // merging._def.shape() + // // ); + // const merged: any = new ZodObject({ + // unknownKeys: merging._def.unknownKeys, + // catchall: merging._def.catchall, + // shape: () => + // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), + // typeName: ZodFirstPartyTypeKind.ZodObject, + // }) as any; + // return merged; + // } + + catchall(index: Index): ZodObject { + return new ZodObject({ + ...this._def, + catchall: index, + }) as any; + } + + pick>( + mask: Mask + ): ZodObject>, UnknownKeys, Catchall> { + const shape: any = {}; + + for (const key of util.objectKeys(mask)) { + if (mask[key] && this.shape[key]) { + shape[key] = this.shape[key]; + } + } + + return new ZodObject({ + ...this._def, + shape: () => shape, + }) as any; + } + + omit>( + mask: Mask + ): ZodObject, UnknownKeys, Catchall> { + const shape: any = {}; + + for (const key of util.objectKeys(this.shape)) { + if (!mask[key]) { + shape[key] = this.shape[key]; + } + } + + return new ZodObject({ + ...this._def, + shape: () => shape, + }) as any; + } + + /** + * @deprecated + */ + deepPartial(): partialUtil.DeepPartial { + return deepPartialify(this); + } + + partial(): ZodObject<{ [k in keyof T]: ZodOptional }, UnknownKeys, Catchall>; + partial>( + mask: Mask + ): ZodObject< + objectUtil.noNever<{ + [k in keyof T]: k extends keyof Mask ? ZodOptional : T[k]; + }>, + UnknownKeys, + Catchall + >; + partial(mask?: any) { + const newShape: any = {}; + + for (const key of util.objectKeys(this.shape)) { + const fieldSchema = this.shape[key]!; + + if (mask && !mask[key]) { + newShape[key] = fieldSchema; + } else { + newShape[key] = fieldSchema.optional(); + } + } + + return new ZodObject({ + ...this._def, + shape: () => newShape, + }) as any; + } + + required(): ZodObject<{ [k in keyof T]: deoptional }, UnknownKeys, Catchall>; + required>( + mask: Mask + ): ZodObject< + objectUtil.noNever<{ + [k in keyof T]: k extends keyof Mask ? deoptional : T[k]; + }>, + UnknownKeys, + Catchall + >; + required(mask?: any) { + const newShape: any = {}; + + for (const key of util.objectKeys(this.shape)) { + if (mask && !mask[key]) { + newShape[key] = this.shape[key]; + } else { + const fieldSchema = this.shape[key]; + let newField = fieldSchema; + + while (newField instanceof ZodOptional) { + newField = (newField as ZodOptional)._def.innerType; + } + + newShape[key] = newField; + } + } + + return new ZodObject({ + ...this._def, + shape: () => newShape, + }) as any; + } + + keyof(): ZodEnum> { + return createZodEnum(util.objectKeys(this.shape) as [string, ...string[]]) as any; + } + + static create = ( + shape: Shape, + params?: RawCreateParams + ): ZodObject< + Shape, + "strip", + ZodTypeAny, + objectOutputType, + objectInputType + > => { + return new ZodObject({ + shape: () => shape, + unknownKeys: "strip", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params), + }) as any; + }; + + static strictCreate = ( + shape: Shape, + params?: RawCreateParams + ): ZodObject => { + return new ZodObject({ + shape: () => shape, + unknownKeys: "strict", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params), + }) as any; + }; + + static lazycreate = ( + shape: () => Shape, + params?: RawCreateParams + ): ZodObject => { + return new ZodObject({ + shape, + unknownKeys: "strip", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params), + }) as any; + }; +} + +export type AnyZodObject = ZodObject; + +//////////////////////////////////////// +//////////////////////////////////////// +////////// ////////// +////////// ZodUnion ////////// +////////// ////////// +//////////////////////////////////////// +//////////////////////////////////////// +export type ZodUnionOptions = Readonly<[ZodTypeAny, ...ZodTypeAny[]]>; +export interface ZodUnionDef> + extends ZodTypeDef { + options: T; + typeName: ZodFirstPartyTypeKind.ZodUnion; +} + +export class ZodUnion extends ZodType< + T[number]["_output"], + ZodUnionDef, + T[number]["_input"] +> { + _parse(input: ParseInput): ParseReturnType { + const { ctx } = this._processInputParams(input); + const options = this._def.options; + + function handleResults(results: { ctx: ParseContext; result: SyncParseReturnType }[]) { + // return first issue-free validation if it exists + for (const result of results) { + if (result.result.status === "valid") { + return result.result; + } + } + + for (const result of results) { + if (result.result.status === "dirty") { + // add issues from dirty option + + ctx.common.issues.push(...result.ctx.common.issues); + return result.result; + } + } + + // return invalid + const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues)); + + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union, + unionErrors, + }); + return INVALID; + } + + if (ctx.common.async) { + return Promise.all( + options.map(async (option) => { + const childCtx: ParseContext = { + ...ctx, + common: { + ...ctx.common, + issues: [], + }, + parent: null, + }; + return { + result: await option._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: childCtx, + }), + ctx: childCtx, + }; + }) + ).then(handleResults); + } else { + let dirty: undefined | { result: DIRTY; ctx: ParseContext } = undefined; + const issues: ZodIssue[][] = []; + for (const option of options) { + const childCtx: ParseContext = { + ...ctx, + common: { + ...ctx.common, + issues: [], + }, + parent: null, + }; + const result = option._parseSync({ + data: ctx.data, + path: ctx.path, + parent: childCtx, + }); + + if (result.status === "valid") { + return result; + } else if (result.status === "dirty" && !dirty) { + dirty = { result, ctx: childCtx }; + } + + if (childCtx.common.issues.length) { + issues.push(childCtx.common.issues); + } + } + + if (dirty) { + ctx.common.issues.push(...dirty.ctx.common.issues); + return dirty.result; + } + + const unionErrors = issues.map((issues) => new ZodError(issues)); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union, + unionErrors, + }); + + return INVALID; + } + } + + get options() { + return this._def.options; + } + + static create = >( + types: Options, + params?: RawCreateParams + ): ZodUnion => { + return new ZodUnion({ + options: types, + typeName: ZodFirstPartyTypeKind.ZodUnion, + ...processCreateParams(params), + }); + }; +} + +///////////////////////////////////////////////////// +///////////////////////////////////////////////////// +////////// ////////// +////////// ZodDiscriminatedUnion ////////// +////////// ////////// +///////////////////////////////////////////////////// +///////////////////////////////////////////////////// + +const getDiscriminator = (type: T): Primitive[] => { + if (type instanceof ZodLazy) { + return getDiscriminator(type.schema); + } else if (type instanceof ZodEffects) { + return getDiscriminator(type.innerType()); + } else if (type instanceof ZodLiteral) { + return [type.value]; + } else if (type instanceof ZodEnum) { + return type.options; + } else if (type instanceof ZodNativeEnum) { + // eslint-disable-next-line ban/ban + return util.objectValues(type.enum); + } else if (type instanceof ZodDefault) { + return getDiscriminator(type._def.innerType); + } else if (type instanceof ZodUndefined) { + return [undefined]; + } else if (type instanceof ZodNull) { + return [null]; + } else if (type instanceof ZodOptional) { + return [undefined, ...getDiscriminator(type.unwrap())]; + } else if (type instanceof ZodNullable) { + return [null, ...getDiscriminator(type.unwrap())]; + } else if (type instanceof ZodBranded) { + return getDiscriminator(type.unwrap()); + } else if (type instanceof ZodReadonly) { + return getDiscriminator(type.unwrap()); + } else if (type instanceof ZodCatch) { + return getDiscriminator(type._def.innerType); + } else { + return []; + } +}; + +export type ZodDiscriminatedUnionOption = ZodObject< + { [key in Discriminator]: ZodTypeAny } & ZodRawShape, + UnknownKeysParam, + ZodTypeAny +>; + +export interface ZodDiscriminatedUnionDef< + Discriminator extends string, + Options extends readonly ZodDiscriminatedUnionOption[] = ZodDiscriminatedUnionOption[], +> extends ZodTypeDef { + discriminator: Discriminator; + options: Options; + optionsMap: Map>; + typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion; +} + +export class ZodDiscriminatedUnion< + Discriminator extends string, + Options extends readonly ZodDiscriminatedUnionOption[], +> extends ZodType, ZodDiscriminatedUnionDef, input> { + _parse(input: ParseInput): ParseReturnType { + const { ctx } = this._processInputParams(input); + + if (ctx.parsedType !== ZodParsedType.object) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx.parsedType, + }); + return INVALID; + } + + const discriminator = this.discriminator; + + const discriminatorValue: string = ctx.data[discriminator]; + + const option = this.optionsMap.get(discriminatorValue); + + if (!option) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union_discriminator, + options: Array.from(this.optionsMap.keys()), + path: [discriminator], + }); + return INVALID; + } + + if (ctx.common.async) { + return option._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }) as any; + } else { + return option._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }) as any; + } + } + + get discriminator() { + return this._def.discriminator; + } + + get options() { + return this._def.options; + } + + get optionsMap() { + return this._def.optionsMap; + } + + /** + * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor. + * However, it only allows a union of objects, all of which need to share a discriminator property. This property must + * have a different value for each object in the union. + * @param discriminator the name of the discriminator property + * @param types an array of object schemas + * @param params + */ + static create< + Discriminator extends string, + Types extends readonly [ + ZodDiscriminatedUnionOption, + ...ZodDiscriminatedUnionOption[], + ], + >( + discriminator: Discriminator, + options: Types, + params?: RawCreateParams + ): ZodDiscriminatedUnion { + // Get all the valid discriminator values + const optionsMap: Map = new Map(); + + // try { + for (const type of options) { + const discriminatorValues = getDiscriminator(type.shape[discriminator]); + if (!discriminatorValues.length) { + throw new Error( + `A discriminator value for key \`${discriminator}\` could not be extracted from all schema options` + ); + } + for (const value of discriminatorValues) { + if (optionsMap.has(value)) { + throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`); + } + + optionsMap.set(value, type); + } + } + + return new ZodDiscriminatedUnion< + Discriminator, + // DiscriminatorValue, + Types + >({ + typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion, + discriminator, + options, + optionsMap, + ...processCreateParams(params), + }); + } +} + +/////////////////////////////////////////////// +/////////////////////////////////////////////// +////////// ////////// +////////// ZodIntersection ////////// +////////// ////////// +/////////////////////////////////////////////// +/////////////////////////////////////////////// +export interface ZodIntersectionDef + extends ZodTypeDef { + left: T; + right: U; + typeName: ZodFirstPartyTypeKind.ZodIntersection; +} + +function mergeValues(a: any, b: any): { valid: true; data: any } | { valid: false } { + const aType = getParsedType(a); + const bType = getParsedType(b); + + if (a === b) { + return { valid: true, data: a }; + } else if (aType === ZodParsedType.object && bType === ZodParsedType.object) { + const bKeys = util.objectKeys(b); + const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1); + + const newObj: any = { ...a, ...b }; + for (const key of sharedKeys) { + const sharedValue = mergeValues(a[key], b[key]); + if (!sharedValue.valid) { + return { valid: false }; + } + newObj[key] = sharedValue.data; + } + + return { valid: true, data: newObj }; + } else if (aType === ZodParsedType.array && bType === ZodParsedType.array) { + if (a.length !== b.length) { + return { valid: false }; + } + + const newArray: unknown[] = []; + for (let index = 0; index < a.length; index++) { + const itemA = a[index]; + const itemB = b[index]; + const sharedValue = mergeValues(itemA, itemB); + + if (!sharedValue.valid) { + return { valid: false }; + } + + newArray.push(sharedValue.data); + } + + return { valid: true, data: newArray }; + } else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) { + return { valid: true, data: a }; + } else { + return { valid: false }; + } +} + +export class ZodIntersection extends ZodType< + T["_output"] & U["_output"], + ZodIntersectionDef, + T["_input"] & U["_input"] +> { + _parse(input: ParseInput): ParseReturnType { + const { status, ctx } = this._processInputParams(input); + const handleParsed = ( + parsedLeft: SyncParseReturnType, + parsedRight: SyncParseReturnType + ): SyncParseReturnType => { + if (isAborted(parsedLeft) || isAborted(parsedRight)) { + return INVALID; + } + + const merged = mergeValues(parsedLeft.value, parsedRight.value); + + if (!merged.valid) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_intersection_types, + }); + return INVALID; + } + + if (isDirty(parsedLeft) || isDirty(parsedRight)) { + status.dirty(); + } + + return { status: status.value, value: merged.data }; + }; + + if (ctx.common.async) { + return Promise.all([ + this._def.left._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }), + this._def.right._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }), + ]).then(([left, right]: any) => handleParsed(left, right)); + } else { + return handleParsed( + this._def.left._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }), + this._def.right._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }) + ); + } + } + + static create = ( + left: TSchema, + right: USchema, + params?: RawCreateParams + ): ZodIntersection => { + return new ZodIntersection({ + left: left, + right: right, + typeName: ZodFirstPartyTypeKind.ZodIntersection, + ...processCreateParams(params), + }); + }; +} + +//////////////////////////////////////// +//////////////////////////////////////// +////////// ////////// +////////// ZodTuple ////////// +////////// ////////// +//////////////////////////////////////// +//////////////////////////////////////// +export type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]]; +export type AssertArray = T extends any[] ? T : never; +export type OutputTypeOfTuple = AssertArray<{ + [k in keyof T]: T[k] extends ZodType ? T[k]["_output"] : never; +}>; +export type OutputTypeOfTupleWithRest< + T extends ZodTupleItems | [], + Rest extends ZodTypeAny | null = null, +> = Rest extends ZodTypeAny ? [...OutputTypeOfTuple, ...Rest["_output"][]] : OutputTypeOfTuple; + +export type InputTypeOfTuple = AssertArray<{ + [k in keyof T]: T[k] extends ZodType ? T[k]["_input"] : never; +}>; +export type InputTypeOfTupleWithRest< + T extends ZodTupleItems | [], + Rest extends ZodTypeAny | null = null, +> = Rest extends ZodTypeAny ? [...InputTypeOfTuple, ...Rest["_input"][]] : InputTypeOfTuple; + +export interface ZodTupleDef + extends ZodTypeDef { + items: T; + rest: Rest; + typeName: ZodFirstPartyTypeKind.ZodTuple; +} + +export type AnyZodTuple = ZodTuple<[ZodTypeAny, ...ZodTypeAny[]] | [], ZodTypeAny | null>; +// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]]; +export class ZodTuple< + T extends ZodTupleItems | [] = ZodTupleItems, + Rest extends ZodTypeAny | null = null, +> extends ZodType, ZodTupleDef, InputTypeOfTupleWithRest> { + _parse(input: ParseInput): ParseReturnType { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.array) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.array, + received: ctx.parsedType, + }); + return INVALID; + } + + if (ctx.data.length < this._def.items.length) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: this._def.items.length, + inclusive: true, + exact: false, + type: "array", + }); + + return INVALID; + } + + const rest = this._def.rest; + + if (!rest && ctx.data.length > this._def.items.length) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: this._def.items.length, + inclusive: true, + exact: false, + type: "array", + }); + status.dirty(); + } + + const items = ([...ctx.data] as any[]) + .map((item, itemIndex) => { + const schema = this._def.items[itemIndex] || this._def.rest; + if (!schema) return null as any as SyncParseReturnType; + return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex)); + }) + .filter((x) => !!x); // filter nulls + + if (ctx.common.async) { + return Promise.all(items).then((results) => { + return ParseStatus.mergeArray(status, results); + }); + } else { + return ParseStatus.mergeArray(status, items as SyncParseReturnType[]); + } + } + + get items() { + return this._def.items; + } + + rest(rest: RestSchema): ZodTuple { + return new ZodTuple({ + ...this._def, + rest, + }); + } + + static create = ( + schemas: Items, + params?: RawCreateParams + ): ZodTuple => { + if (!Array.isArray(schemas)) { + throw new Error("You must pass an array of schemas to z.tuple([ ... ])"); + } + return new ZodTuple({ + items: schemas, + typeName: ZodFirstPartyTypeKind.ZodTuple, + rest: null, + ...processCreateParams(params), + }); + }; +} + +///////////////////////////////////////// +///////////////////////////////////////// +////////// ////////// +////////// ZodRecord ////////// +////////// ////////// +///////////////////////////////////////// +///////////////////////////////////////// +export interface ZodRecordDef + extends ZodTypeDef { + valueType: Value; + keyType: Key; + typeName: ZodFirstPartyTypeKind.ZodRecord; +} + +export type KeySchema = ZodType; +export type RecordType = [string] extends [K] + ? Record + : [number] extends [K] + ? Record + : [symbol] extends [K] + ? Record + : [BRAND] extends [K] + ? Record + : Partial>; +export class ZodRecord extends ZodType< + RecordType, + ZodRecordDef, + RecordType +> { + get keySchema() { + return this._def.keyType; + } + get valueSchema() { + return this._def.valueType; + } + _parse(input: ParseInput): ParseReturnType { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.object) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx.parsedType, + }); + return INVALID; + } + + const pairs: { + key: ParseReturnType; + value: ParseReturnType; + alwaysSet: boolean; + }[] = []; + + const keyType = this._def.keyType; + const valueType = this._def.valueType; + + for (const key in ctx.data) { + pairs.push({ + key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)), + value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)), + alwaysSet: key in ctx.data, + }); + } + + if (ctx.common.async) { + return ParseStatus.mergeObjectAsync(status, pairs); + } else { + return ParseStatus.mergeObjectSync(status, pairs as any); + } + } + + get element() { + return this._def.valueType; + } + + static create(valueType: Value, params?: RawCreateParams): ZodRecord; + static create( + keySchema: Keys, + valueType: Value, + params?: RawCreateParams + ): ZodRecord; + static create(first: any, second?: any, third?: any): ZodRecord { + if (second instanceof ZodType) { + return new ZodRecord({ + keyType: first, + valueType: second, + typeName: ZodFirstPartyTypeKind.ZodRecord, + ...processCreateParams(third), + }); + } + + return new ZodRecord({ + keyType: ZodString.create(), + valueType: first, + typeName: ZodFirstPartyTypeKind.ZodRecord, + ...processCreateParams(second), + }); + } +} + +////////////////////////////////////// +////////////////////////////////////// +////////// ////////// +////////// ZodMap ////////// +////////// ////////// +////////////////////////////////////// +////////////////////////////////////// +export interface ZodMapDef + extends ZodTypeDef { + valueType: Value; + keyType: Key; + typeName: ZodFirstPartyTypeKind.ZodMap; +} + +export class ZodMap extends ZodType< + Map, + ZodMapDef, + Map +> { + get keySchema() { + return this._def.keyType; + } + get valueSchema() { + return this._def.valueType; + } + _parse(input: ParseInput): ParseReturnType { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.map) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.map, + received: ctx.parsedType, + }); + return INVALID; + } + + const keyType = this._def.keyType; + const valueType = this._def.valueType; + + const pairs = [...(ctx.data as Map).entries()].map(([key, value], index) => { + return { + key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, "key"])), + value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, "value"])), + }; + }); + + if (ctx.common.async) { + const finalMap = new Map(); + return Promise.resolve().then(async () => { + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + if (key.status === "aborted" || value.status === "aborted") { + return INVALID; + } + if (key.status === "dirty" || value.status === "dirty") { + status.dirty(); + } + + finalMap.set(key.value, value.value); + } + return { status: status.value, value: finalMap }; + }); + } else { + const finalMap = new Map(); + for (const pair of pairs) { + const key = pair.key as SyncParseReturnType; + const value = pair.value as SyncParseReturnType; + if (key.status === "aborted" || value.status === "aborted") { + return INVALID; + } + if (key.status === "dirty" || value.status === "dirty") { + status.dirty(); + } + + finalMap.set(key.value, value.value); + } + return { status: status.value, value: finalMap }; + } + } + static create = ( + keyType: KeySchema, + valueType: ValueSchema, + params?: RawCreateParams + ): ZodMap => { + return new ZodMap({ + valueType, + keyType, + typeName: ZodFirstPartyTypeKind.ZodMap, + ...processCreateParams(params), + }); + }; +} + +////////////////////////////////////// +////////////////////////////////////// +////////// ////////// +////////// ZodSet ////////// +////////// ////////// +////////////////////////////////////// +////////////////////////////////////// +export interface ZodSetDef extends ZodTypeDef { + valueType: Value; + typeName: ZodFirstPartyTypeKind.ZodSet; + minSize: { value: number; message?: string | undefined } | null; + maxSize: { value: number; message?: string | undefined } | null; +} + +export class ZodSet extends ZodType< + Set, + ZodSetDef, + Set +> { + _parse(input: ParseInput): ParseReturnType { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.set) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.set, + received: ctx.parsedType, + }); + return INVALID; + } + + const def = this._def; + + if (def.minSize !== null) { + if (ctx.data.size < def.minSize.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: def.minSize.value, + type: "set", + inclusive: true, + exact: false, + message: def.minSize.message, + }); + status.dirty(); + } + } + + if (def.maxSize !== null) { + if (ctx.data.size > def.maxSize.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: def.maxSize.value, + type: "set", + inclusive: true, + exact: false, + message: def.maxSize.message, + }); + status.dirty(); + } + } + + const valueType = this._def.valueType; + + function finalizeSet(elements: SyncParseReturnType[]) { + const parsedSet = new Set(); + for (const element of elements) { + if (element.status === "aborted") return INVALID; + if (element.status === "dirty") status.dirty(); + parsedSet.add(element.value); + } + return { status: status.value, value: parsedSet }; + } + + const elements = [...(ctx.data as Set).values()].map((item, i) => + valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)) + ); + + if (ctx.common.async) { + return Promise.all(elements).then((elements) => finalizeSet(elements)); + } else { + return finalizeSet(elements as SyncParseReturnType[]); + } + } + + min(minSize: number, message?: errorUtil.ErrMessage): this { + return new ZodSet({ + ...this._def, + minSize: { value: minSize, message: errorUtil.toString(message) }, + }) as any; + } + + max(maxSize: number, message?: errorUtil.ErrMessage): this { + return new ZodSet({ + ...this._def, + maxSize: { value: maxSize, message: errorUtil.toString(message) }, + }) as any; + } + + size(size: number, message?: errorUtil.ErrMessage): this { + return this.min(size, message).max(size, message) as any; + } + + nonempty(message?: errorUtil.ErrMessage): ZodSet { + return this.min(1, message) as any; + } + + static create = ( + valueType: ValueSchema, + params?: RawCreateParams + ): ZodSet => { + return new ZodSet({ + valueType, + minSize: null, + maxSize: null, + typeName: ZodFirstPartyTypeKind.ZodSet, + ...processCreateParams(params), + }); + }; +} + +/////////////////////////////////////////// +/////////////////////////////////////////// +////////// ////////// +////////// ZodFunction ////////// +////////// ////////// +/////////////////////////////////////////// +/////////////////////////////////////////// +export interface ZodFunctionDef< + Args extends ZodTuple = ZodTuple, + Returns extends ZodTypeAny = ZodTypeAny, +> extends ZodTypeDef { + args: Args; + returns: Returns; + typeName: ZodFirstPartyTypeKind.ZodFunction; +} + +export type OuterTypeOfFunction< + Args extends ZodTuple, + Returns extends ZodTypeAny, +> = Args["_input"] extends Array ? (...args: Args["_input"]) => Returns["_output"] : never; + +export type InnerTypeOfFunction< + Args extends ZodTuple, + Returns extends ZodTypeAny, +> = Args["_output"] extends Array ? (...args: Args["_output"]) => Returns["_input"] : never; + +export class ZodFunction, Returns extends ZodTypeAny> extends ZodType< + OuterTypeOfFunction, + ZodFunctionDef, + InnerTypeOfFunction +> { + _parse(input: ParseInput): ParseReturnType { + const { ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.function) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.function, + received: ctx.parsedType, + }); + return INVALID; + } + + function makeArgsIssue(args: any, error: ZodError): ZodIssue { + return makeIssue({ + data: args, + path: ctx.path, + errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter( + (x) => !!x + ), + issueData: { + code: ZodIssueCode.invalid_arguments, + argumentsError: error, + }, + }); + } + + function makeReturnsIssue(returns: any, error: ZodError): ZodIssue { + return makeIssue({ + data: returns, + path: ctx.path, + errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter( + (x) => !!x + ), + issueData: { + code: ZodIssueCode.invalid_return_type, + returnTypeError: error, + }, + }); + } + + const params = { errorMap: ctx.common.contextualErrorMap }; + const fn = ctx.data; + + if (this._def.returns instanceof ZodPromise) { + // Would love a way to avoid disabling this rule, but we need + // an alias (using an arrow function was what caused 2651). + // eslint-disable-next-line @typescript-eslint/no-this-alias + const me = this; + return OK(async function (this: any, ...args: any[]) { + const error = new ZodError([]); + const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => { + error.addIssue(makeArgsIssue(args, e)); + throw error; + }); + const result = await Reflect.apply(fn, this, parsedArgs as any); + const parsedReturns = await (me._def.returns as unknown as ZodPromise)._def.type + .parseAsync(result, params) + .catch((e) => { + error.addIssue(makeReturnsIssue(result, e)); + throw error; + }); + return parsedReturns; + }); + } else { + // Would love a way to avoid disabling this rule, but we need + // an alias (using an arrow function was what caused 2651). + // eslint-disable-next-line @typescript-eslint/no-this-alias + const me = this; + return OK(function (this: any, ...args: any[]) { + const parsedArgs = me._def.args.safeParse(args, params); + if (!parsedArgs.success) { + throw new ZodError([makeArgsIssue(args, parsedArgs.error)]); + } + const result = Reflect.apply(fn, this, parsedArgs.data); + const parsedReturns = me._def.returns.safeParse(result, params); + if (!parsedReturns.success) { + throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]); + } + return parsedReturns.data; + }) as any; + } + } + + parameters() { + return this._def.args; + } + + returnType() { + return this._def.returns; + } + + args[0]>( + ...items: Items + ): ZodFunction, Returns> { + return new ZodFunction({ + ...this._def, + args: ZodTuple.create(items).rest(ZodUnknown.create()) as any, + }); + } + + returns>(returnType: NewReturnType): ZodFunction { + return new ZodFunction({ + ...this._def, + returns: returnType, + }); + } + + implement>( + func: F + ): ReturnType extends Returns["_output"] + ? (...args: Args["_input"]) => ReturnType + : OuterTypeOfFunction { + const validatedFunc = this.parse(func); + return validatedFunc as any; + } + + strictImplement(func: InnerTypeOfFunction): InnerTypeOfFunction { + const validatedFunc = this.parse(func); + return validatedFunc as any; + } + + validate = this.implement; + + static create(): ZodFunction, ZodUnknown>; + static create>(args: T): ZodFunction; + static create(args: T, returns: U): ZodFunction; + static create, U extends ZodTypeAny = ZodUnknown>( + args: T, + returns: U, + params?: RawCreateParams + ): ZodFunction; + static create(args?: AnyZodTuple, returns?: ZodTypeAny, params?: RawCreateParams) { + return new ZodFunction({ + args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())) as any, + returns: returns || ZodUnknown.create(), + typeName: ZodFirstPartyTypeKind.ZodFunction, + ...processCreateParams(params), + }) as any; + } +} + +/////////////////////////////////////// +/////////////////////////////////////// +////////// ////////// +////////// ZodLazy ////////// +////////// ////////// +/////////////////////////////////////// +/////////////////////////////////////// +export interface ZodLazyDef extends ZodTypeDef { + getter: () => T; + typeName: ZodFirstPartyTypeKind.ZodLazy; +} + +export class ZodLazy extends ZodType, ZodLazyDef, input> { + get schema(): T { + return this._def.getter(); + } + + _parse(input: ParseInput): ParseReturnType { + const { ctx } = this._processInputParams(input); + const lazySchema = this._def.getter(); + return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx }); + } + + static create = (getter: () => Inner, params?: RawCreateParams): ZodLazy => { + return new ZodLazy({ + getter: getter, + typeName: ZodFirstPartyTypeKind.ZodLazy, + ...processCreateParams(params), + }); + }; +} + +////////////////////////////////////////// +////////////////////////////////////////// +////////// ////////// +////////// ZodLiteral ////////// +////////// ////////// +////////////////////////////////////////// +////////////////////////////////////////// +export interface ZodLiteralDef extends ZodTypeDef { + value: T; + typeName: ZodFirstPartyTypeKind.ZodLiteral; +} + +export class ZodLiteral extends ZodType, T> { + _parse(input: ParseInput): ParseReturnType { + if (input.data !== this._def.value) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_literal, + expected: this._def.value, + }); + return INVALID; + } + return { status: "valid", value: input.data }; + } + + get value() { + return this._def.value; + } + + static create = (value: Value, params?: RawCreateParams): ZodLiteral => { + return new ZodLiteral({ + value: value, + typeName: ZodFirstPartyTypeKind.ZodLiteral, + ...processCreateParams(params), + }); + }; +} + +/////////////////////////////////////// +/////////////////////////////////////// +////////// ////////// +////////// ZodEnum ////////// +////////// ////////// +/////////////////////////////////////// +/////////////////////////////////////// +export type ArrayKeys = keyof any[]; +export type Indices = Exclude; + +export type EnumValues = readonly [T, ...T[]]; + +export type Values = { + [k in T[number]]: k; +}; + +export interface ZodEnumDef extends ZodTypeDef { + values: T; + typeName: ZodFirstPartyTypeKind.ZodEnum; +} + +export type Writeable = { -readonly [P in keyof T]: T[P] }; + +export type FilterEnum = Values extends [] + ? [] + : Values extends [infer Head, ...infer Rest] + ? Head extends ToExclude + ? FilterEnum + : [Head, ...FilterEnum] + : never; + +export type typecast = A extends T ? A : never; + +function createZodEnum>( + values: T, + params?: RawCreateParams +): ZodEnum>; +function createZodEnum(values: T, params?: RawCreateParams): ZodEnum; +function createZodEnum(values: [string, ...string[]], params?: RawCreateParams) { + return new ZodEnum({ + values, + typeName: ZodFirstPartyTypeKind.ZodEnum, + ...processCreateParams(params), + }); +} + +export class ZodEnum extends ZodType, T[number]> { + _cache: Set | undefined; + + _parse(input: ParseInput): ParseReturnType { + if (typeof input.data !== "string") { + const ctx = this._getOrReturnCtx(input); + const expectedValues = this._def.values; + addIssueToContext(ctx, { + expected: util.joinValues(expectedValues) as "string", + received: ctx.parsedType, + code: ZodIssueCode.invalid_type, + }); + return INVALID; + } + + if (!this._cache) { + this._cache = new Set(this._def.values); + } + + if (!this._cache.has(input.data)) { + const ctx = this._getOrReturnCtx(input); + const expectedValues = this._def.values; + + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_enum_value, + options: expectedValues, + }); + return INVALID; + } + return OK(input.data); + } + + get options() { + return this._def.values; + } + + get enum(): Values { + const enumValues: any = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + + get Values(): Values { + const enumValues: any = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + + get Enum(): Values { + const enumValues: any = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + + extract( + values: ToExtract, + newDef: RawCreateParams = this._def + ): ZodEnum> { + return ZodEnum.create(values, { + ...this._def, + ...newDef, + }) as any; + } + + exclude( + values: ToExclude, + newDef: RawCreateParams = this._def + ): ZodEnum>, [string, ...string[]]>> { + return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)) as FilterEnum, { + ...this._def, + ...newDef, + }) as any; + } + + static create = createZodEnum; +} + +///////////////////////////////////////////// +///////////////////////////////////////////// +////////// ////////// +////////// ZodNativeEnum ////////// +////////// ////////// +///////////////////////////////////////////// +///////////////////////////////////////////// +export interface ZodNativeEnumDef extends ZodTypeDef { + values: T; + typeName: ZodFirstPartyTypeKind.ZodNativeEnum; +} + +export type EnumLike = { [k: string]: string | number; [nu: number]: string }; + +export class ZodNativeEnum extends ZodType, T[keyof T]> { + _cache: Set | undefined; + _parse(input: ParseInput): ParseReturnType { + const nativeEnumValues = util.getValidEnumValues(this._def.values); + + const ctx = this._getOrReturnCtx(input); + if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) { + const expectedValues = util.objectValues(nativeEnumValues); + addIssueToContext(ctx, { + expected: util.joinValues(expectedValues) as "string", + received: ctx.parsedType, + code: ZodIssueCode.invalid_type, + }); + return INVALID; + } + + if (!this._cache) { + this._cache = new Set(util.getValidEnumValues(this._def.values)); + } + + if (!this._cache.has(input.data)) { + const expectedValues = util.objectValues(nativeEnumValues); + + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_enum_value, + options: expectedValues, + }); + return INVALID; + } + return OK(input.data); + } + + get enum() { + return this._def.values; + } + + static create = (values: Elements, params?: RawCreateParams): ZodNativeEnum => { + return new ZodNativeEnum({ + values: values, + typeName: ZodFirstPartyTypeKind.ZodNativeEnum, + ...processCreateParams(params), + }); + }; +} + +////////////////////////////////////////// +////////////////////////////////////////// +////////// ////////// +////////// ZodPromise ////////// +////////// ////////// +////////////////////////////////////////// +////////////////////////////////////////// +export interface ZodPromiseDef extends ZodTypeDef { + type: T; + typeName: ZodFirstPartyTypeKind.ZodPromise; +} + +export class ZodPromise extends ZodType< + Promise, + ZodPromiseDef, + Promise +> { + unwrap() { + return this._def.type; + } + + _parse(input: ParseInput): ParseReturnType { + const { ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.promise, + received: ctx.parsedType, + }); + return INVALID; + } + + const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data); + + return OK( + promisified.then((data: any) => { + return this._def.type.parseAsync(data, { + path: ctx.path, + errorMap: ctx.common.contextualErrorMap, + }); + }) + ); + } + + static create = (schema: Inner, params?: RawCreateParams): ZodPromise => { + return new ZodPromise({ + type: schema, + typeName: ZodFirstPartyTypeKind.ZodPromise, + ...processCreateParams(params), + }); + }; +} + +////////////////////////////////////////////// +////////////////////////////////////////////// +////////// ////////// +////////// ZodEffects ////////// +////////// ////////// +////////////////////////////////////////////// +////////////////////////////////////////////// + +export type Refinement = (arg: T, ctx: RefinementCtx) => any; +export type SuperRefinement = (arg: T, ctx: RefinementCtx) => void | Promise; + +export type RefinementEffect = { + type: "refinement"; + refinement: (arg: T, ctx: RefinementCtx) => any; +}; +export type TransformEffect = { + type: "transform"; + transform: (arg: T, ctx: RefinementCtx) => any; +}; +export type PreprocessEffect = { + type: "preprocess"; + transform: (arg: T, ctx: RefinementCtx) => any; +}; +export type Effect = RefinementEffect | TransformEffect | PreprocessEffect; + +export interface ZodEffectsDef extends ZodTypeDef { + schema: T; + typeName: ZodFirstPartyTypeKind.ZodEffects; + effect: Effect; +} + +export class ZodEffects, Input = input> extends ZodType< + Output, + ZodEffectsDef, + Input +> { + innerType() { + return this._def.schema; + } + + sourceType(): T { + return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects + ? (this._def.schema as unknown as ZodEffects).sourceType() + : (this._def.schema as T); + } + + _parse(input: ParseInput): ParseReturnType { + const { status, ctx } = this._processInputParams(input); + + const effect = this._def.effect || null; + + const checkCtx: RefinementCtx = { + addIssue: (arg: IssueData) => { + addIssueToContext(ctx, arg); + if (arg.fatal) { + status.abort(); + } else { + status.dirty(); + } + }, + get path() { + return ctx.path; + }, + }; + + checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx); + + if (effect.type === "preprocess") { + const processed = effect.transform(ctx.data, checkCtx); + + if (ctx.common.async) { + return Promise.resolve(processed).then(async (processed) => { + if (status.value === "aborted") return INVALID; + + const result = await this._def.schema._parseAsync({ + data: processed, + path: ctx.path, + parent: ctx, + }); + if (result.status === "aborted") return INVALID; + if (result.status === "dirty") return DIRTY(result.value); + if (status.value === "dirty") return DIRTY(result.value); + return result; + }); + } else { + if (status.value === "aborted") return INVALID; + const result = this._def.schema._parseSync({ + data: processed, + path: ctx.path, + parent: ctx, + }); + if (result.status === "aborted") return INVALID; + if (result.status === "dirty") return DIRTY(result.value); + if (status.value === "dirty") return DIRTY(result.value); + return result; + } + } + if (effect.type === "refinement") { + const executeRefinement = (acc: unknown): any => { + const result = effect.refinement(acc, checkCtx); + if (ctx.common.async) { + return Promise.resolve(result); + } + if (result instanceof Promise) { + throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead."); + } + return acc; + }; + + if (ctx.common.async === false) { + const inner = this._def.schema._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + if (inner.status === "aborted") return INVALID; + if (inner.status === "dirty") status.dirty(); + + // return value is ignored + executeRefinement(inner.value); + return { status: status.value, value: inner.value }; + } else { + return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => { + if (inner.status === "aborted") return INVALID; + if (inner.status === "dirty") status.dirty(); + + return executeRefinement(inner.value).then(() => { + return { status: status.value, value: inner.value }; + }); + }); + } + } + + if (effect.type === "transform") { + if (ctx.common.async === false) { + const base = this._def.schema._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + + if (!isValid(base)) return INVALID; + + const result = effect.transform(base.value, checkCtx); + if (result instanceof Promise) { + throw new Error( + `Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.` + ); + } + + return { status: status.value, value: result }; + } else { + return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => { + if (!isValid(base)) return INVALID; + + return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ + status: status.value, + value: result, + })); + }); + } + } + + util.assertNever(effect); + } + + static create = ( + schema: I, + effect: Effect, + params?: RawCreateParams + ): ZodEffects => { + return new ZodEffects({ + schema, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect, + ...processCreateParams(params), + }); + }; + + static createWithPreprocess = ( + preprocess: (arg: unknown, ctx: RefinementCtx) => unknown, + schema: I, + params?: RawCreateParams + ): ZodEffects => { + return new ZodEffects({ + schema, + effect: { type: "preprocess", transform: preprocess }, + typeName: ZodFirstPartyTypeKind.ZodEffects, + ...processCreateParams(params), + }); + }; +} + +export { ZodEffects as ZodTransformer }; + +/////////////////////////////////////////// +/////////////////////////////////////////// +////////// ////////// +////////// ZodOptional ////////// +////////// ////////// +/////////////////////////////////////////// +/////////////////////////////////////////// +export interface ZodOptionalDef extends ZodTypeDef { + innerType: T; + typeName: ZodFirstPartyTypeKind.ZodOptional; +} + +export type ZodOptionalType = ZodOptional; + +export class ZodOptional extends ZodType< + T["_output"] | undefined, + ZodOptionalDef, + T["_input"] | undefined +> { + _parse(input: ParseInput): ParseReturnType { + const parsedType = this._getType(input); + if (parsedType === ZodParsedType.undefined) { + return OK(undefined); + } + return this._def.innerType._parse(input); + } + + unwrap() { + return this._def.innerType; + } + + static create = (type: Inner, params?: RawCreateParams): ZodOptional => { + return new ZodOptional({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodOptional, + ...processCreateParams(params), + }) as any; + }; +} + +/////////////////////////////////////////// +/////////////////////////////////////////// +////////// ////////// +////////// ZodNullable ////////// +////////// ////////// +/////////////////////////////////////////// +/////////////////////////////////////////// +export interface ZodNullableDef extends ZodTypeDef { + innerType: T; + typeName: ZodFirstPartyTypeKind.ZodNullable; +} + +export type ZodNullableType = ZodNullable; + +export class ZodNullable extends ZodType< + T["_output"] | null, + ZodNullableDef, + T["_input"] | null +> { + _parse(input: ParseInput): ParseReturnType { + const parsedType = this._getType(input); + if (parsedType === ZodParsedType.null) { + return OK(null); + } + return this._def.innerType._parse(input); + } + + unwrap() { + return this._def.innerType; + } + + static create = (type: Inner, params?: RawCreateParams): ZodNullable => { + return new ZodNullable({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodNullable, + ...processCreateParams(params), + }) as any; + }; +} + +//////////////////////////////////////////// +//////////////////////////////////////////// +////////// ////////// +////////// ZodDefault ////////// +////////// ////////// +//////////////////////////////////////////// +//////////////////////////////////////////// +export interface ZodDefaultDef extends ZodTypeDef { + innerType: T; + defaultValue: () => util.noUndefined; + typeName: ZodFirstPartyTypeKind.ZodDefault; +} + +export class ZodDefault extends ZodType< + util.noUndefined, + ZodDefaultDef, + T["_input"] | undefined +> { + _parse(input: ParseInput): ParseReturnType { + const { ctx } = this._processInputParams(input); + let data = ctx.data; + if (ctx.parsedType === ZodParsedType.undefined) { + data = this._def.defaultValue(); + } + return this._def.innerType._parse({ + data, + path: ctx.path, + parent: ctx, + }); + } + + removeDefault() { + return this._def.innerType; + } + + static create = ( + type: Inner, + params: RawCreateParams & { + default: Inner["_input"] | (() => util.noUndefined); + } + ): ZodDefault => { + return new ZodDefault({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodDefault, + defaultValue: typeof params.default === "function" ? params.default : () => params.default as any, + ...processCreateParams(params), + }) as any; + }; +} + +////////////////////////////////////////// +////////////////////////////////////////// +////////// ////////// +////////// ZodCatch ////////// +////////// ////////// +////////////////////////////////////////// +////////////////////////////////////////// +export interface ZodCatchDef extends ZodTypeDef { + innerType: T; + catchValue: (ctx: { error: ZodError; input: unknown }) => T["_input"]; + typeName: ZodFirstPartyTypeKind.ZodCatch; +} + +export class ZodCatch extends ZodType< + T["_output"], + ZodCatchDef, + unknown // any input will pass validation // T["_input"] +> { + _parse(input: ParseInput): ParseReturnType { + const { ctx } = this._processInputParams(input); + + // newCtx is used to not collect issues from inner types in ctx + const newCtx: ParseContext = { + ...ctx, + common: { + ...ctx.common, + issues: [], + }, + }; + + const result = this._def.innerType._parse({ + data: newCtx.data, + path: newCtx.path, + parent: { + ...newCtx, + }, + }); + + if (isAsync(result)) { + return result.then((result) => { + return { + status: "valid", + value: + result.status === "valid" + ? result.value + : this._def.catchValue({ + get error() { + return new ZodError(newCtx.common.issues); + }, + input: newCtx.data, + }), + }; + }); + } else { + return { + status: "valid", + value: + result.status === "valid" + ? result.value + : this._def.catchValue({ + get error() { + return new ZodError(newCtx.common.issues); + }, + input: newCtx.data, + }), + }; + } + } + + removeCatch() { + return this._def.innerType; + } + + static create = ( + type: Inner, + params: RawCreateParams & { + catch: Inner["_output"] | (() => Inner["_output"]); + } + ): ZodCatch => { + return new ZodCatch({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodCatch, + catchValue: typeof params.catch === "function" ? params.catch : () => params.catch, + ...processCreateParams(params), + }); + }; +} + +///////////////////////////////////////// +///////////////////////////////////////// +////////// ////////// +////////// ZodNaN ////////// +////////// ////////// +///////////////////////////////////////// +///////////////////////////////////////// + +export interface ZodNaNDef extends ZodTypeDef { + typeName: ZodFirstPartyTypeKind.ZodNaN; +} + +export class ZodNaN extends ZodType { + _parse(input: ParseInput): ParseReturnType { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.nan) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.nan, + received: ctx.parsedType, + }); + return INVALID; + } + + return { status: "valid", value: input.data }; + } + + static create = (params?: RawCreateParams): ZodNaN => { + return new ZodNaN({ + typeName: ZodFirstPartyTypeKind.ZodNaN, + ...processCreateParams(params), + }); + }; +} + +////////////////////////////////////////// +////////////////////////////////////////// +////////// ////////// +////////// ZodBranded ////////// +////////// ////////// +////////////////////////////////////////// +////////////////////////////////////////// + +export interface ZodBrandedDef extends ZodTypeDef { + type: T; + typeName: ZodFirstPartyTypeKind.ZodBranded; +} + +export const BRAND: unique symbol = Symbol("zod_brand"); +export type BRAND = { + [BRAND]: { [k in T]: true }; +}; + +export class ZodBranded extends ZodType< + T["_output"] & BRAND, + ZodBrandedDef, + T["_input"] +> { + _parse(input: ParseInput): ParseReturnType { + const { ctx } = this._processInputParams(input); + const data = ctx.data; + return this._def.type._parse({ + data, + path: ctx.path, + parent: ctx, + }); + } + + unwrap() { + return this._def.type; + } +} + +//////////////////////////////////////////// +//////////////////////////////////////////// +////////// ////////// +////////// ZodPipeline ////////// +////////// ////////// +//////////////////////////////////////////// +//////////////////////////////////////////// + +export interface ZodPipelineDef extends ZodTypeDef { + in: A; + out: B; + typeName: ZodFirstPartyTypeKind.ZodPipeline; +} + +export class ZodPipeline extends ZodType< + B["_output"], + ZodPipelineDef, + A["_input"] +> { + _parse(input: ParseInput): ParseReturnType { + const { status, ctx } = this._processInputParams(input); + if (ctx.common.async) { + const handleAsync = async () => { + const inResult = await this._def.in._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + if (inResult.status === "aborted") return INVALID; + if (inResult.status === "dirty") { + status.dirty(); + return DIRTY(inResult.value); + } else { + return this._def.out._parseAsync({ + data: inResult.value, + path: ctx.path, + parent: ctx, + }); + } + }; + return handleAsync(); + } else { + const inResult = this._def.in._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx, + }); + if (inResult.status === "aborted") return INVALID; + if (inResult.status === "dirty") { + status.dirty(); + return { + status: "dirty", + value: inResult.value, + }; + } else { + return this._def.out._parseSync({ + data: inResult.value, + path: ctx.path, + parent: ctx, + }); + } + } + } + + static create( + a: ASchema, + b: BSchema + ): ZodPipeline { + return new ZodPipeline({ + in: a, + out: b, + typeName: ZodFirstPartyTypeKind.ZodPipeline, + }); + } +} + +/////////////////////////////////////////// +/////////////////////////////////////////// +////////// ////////// +////////// ZodReadonly ////////// +////////// ////////// +/////////////////////////////////////////// +/////////////////////////////////////////// +type BuiltIn = + | (((...args: any[]) => any) | (new (...args: any[]) => any)) + | { readonly [Symbol.toStringTag]: string } + | Date + | Error + | Generator + | Promise + | RegExp; + +type MakeReadonly = T extends Map + ? ReadonlyMap + : T extends Set + ? ReadonlySet + : T extends [infer Head, ...infer Tail] + ? readonly [Head, ...Tail] + : T extends Array + ? ReadonlyArray + : T extends BuiltIn + ? T + : Readonly; + +export interface ZodReadonlyDef extends ZodTypeDef { + innerType: T; + typeName: ZodFirstPartyTypeKind.ZodReadonly; +} + +export class ZodReadonly extends ZodType< + MakeReadonly, + ZodReadonlyDef, + MakeReadonly +> { + _parse(input: ParseInput): ParseReturnType { + const result = this._def.innerType._parse(input); + const freeze = (data: ParseReturnType) => { + if (isValid(data)) { + data.value = Object.freeze(data.value); + } + return data; + }; + return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result); + } + + static create = (type: Inner, params?: RawCreateParams): ZodReadonly => { + return new ZodReadonly({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodReadonly, + ...processCreateParams(params), + }) as any; + }; + + unwrap() { + return this._def.innerType; + } +} + +//////////////////////////////////////// +//////////////////////////////////////// +////////// ////////// +////////// z.custom ////////// +////////// ////////// +//////////////////////////////////////// +//////////////////////////////////////// +function cleanParams(params: unknown, data: unknown) { + const p = typeof params === "function" ? params(data) : typeof params === "string" ? { message: params } : params; + + const p2 = typeof p === "string" ? { message: p } : p; + return p2; +} +type CustomParams = CustomErrorParams & { fatal?: boolean }; +export function custom( + check?: (data: any) => any, + _params: string | CustomParams | ((input: any) => CustomParams) = {}, + /** + * @deprecated + * + * Pass `fatal` into the params object instead: + * + * ```ts + * z.string().custom((val) => val.length > 5, { fatal: false }) + * ``` + * + */ + fatal?: boolean +): ZodType { + if (check) + return ZodAny.create().superRefine((data, ctx) => { + const r = check(data); + if (r instanceof Promise) { + return r.then((r) => { + if (!r) { + const params = cleanParams(_params, data); + const _fatal = params.fatal ?? fatal ?? true; + ctx.addIssue({ code: "custom", ...params, fatal: _fatal }); + } + }); + } + if (!r) { + const params = cleanParams(_params, data); + const _fatal = params.fatal ?? fatal ?? true; + ctx.addIssue({ code: "custom", ...params, fatal: _fatal }); + } + return; + }); + return ZodAny.create(); +} + +export { ZodType as Schema, ZodType as ZodSchema }; + +export const late = { + object: ZodObject.lazycreate, +}; + +export enum ZodFirstPartyTypeKind { + ZodString = "ZodString", + ZodNumber = "ZodNumber", + ZodNaN = "ZodNaN", + ZodBigInt = "ZodBigInt", + ZodBoolean = "ZodBoolean", + ZodDate = "ZodDate", + ZodSymbol = "ZodSymbol", + ZodUndefined = "ZodUndefined", + ZodNull = "ZodNull", + ZodAny = "ZodAny", + ZodUnknown = "ZodUnknown", + ZodNever = "ZodNever", + ZodVoid = "ZodVoid", + ZodArray = "ZodArray", + ZodObject = "ZodObject", + ZodUnion = "ZodUnion", + ZodDiscriminatedUnion = "ZodDiscriminatedUnion", + ZodIntersection = "ZodIntersection", + ZodTuple = "ZodTuple", + ZodRecord = "ZodRecord", + ZodMap = "ZodMap", + ZodSet = "ZodSet", + ZodFunction = "ZodFunction", + ZodLazy = "ZodLazy", + ZodLiteral = "ZodLiteral", + ZodEnum = "ZodEnum", + ZodEffects = "ZodEffects", + ZodNativeEnum = "ZodNativeEnum", + ZodOptional = "ZodOptional", + ZodNullable = "ZodNullable", + ZodDefault = "ZodDefault", + ZodCatch = "ZodCatch", + ZodPromise = "ZodPromise", + ZodBranded = "ZodBranded", + ZodPipeline = "ZodPipeline", + ZodReadonly = "ZodReadonly", +} +export type ZodFirstPartySchemaTypes = + | ZodString + | ZodNumber + | ZodNaN + | ZodBigInt + | ZodBoolean + | ZodDate + | ZodUndefined + | ZodNull + | ZodAny + | ZodUnknown + | ZodNever + | ZodVoid + | ZodArray + | ZodObject + | ZodUnion + | ZodDiscriminatedUnion + | ZodIntersection + | ZodTuple + | ZodRecord + | ZodMap + | ZodSet + | ZodFunction + | ZodLazy + | ZodLiteral + | ZodEnum + | ZodEffects + | ZodNativeEnum + | ZodOptional + | ZodNullable + | ZodDefault + | ZodCatch + | ZodPromise + | ZodBranded + | ZodPipeline + | ZodReadonly + | ZodSymbol; + +// requires TS 4.4+ +abstract class Class { + constructor(..._: any[]) {} +} +const instanceOfType = ( + // const instanceOfType = any>( + cls: T, + params: CustomParams = { + message: `Input not instance of ${cls.name}`, + } +) => custom>((data) => data instanceof cls, params); + +const stringType = ZodString.create; +const numberType = ZodNumber.create; +const nanType = ZodNaN.create; +const bigIntType = ZodBigInt.create; +const booleanType = ZodBoolean.create; +const dateType = ZodDate.create; +const symbolType = ZodSymbol.create; +const undefinedType = ZodUndefined.create; +const nullType = ZodNull.create; +const anyType = ZodAny.create; +const unknownType = ZodUnknown.create; +const neverType = ZodNever.create; +const voidType = ZodVoid.create; +const arrayType = ZodArray.create; +const objectType = ZodObject.create; +const strictObjectType = ZodObject.strictCreate; +const unionType = ZodUnion.create; +const discriminatedUnionType = ZodDiscriminatedUnion.create; +const intersectionType = ZodIntersection.create; +const tupleType = ZodTuple.create; +const recordType = ZodRecord.create; +const mapType = ZodMap.create; +const setType = ZodSet.create; +const functionType = ZodFunction.create; +const lazyType = ZodLazy.create; +const literalType = ZodLiteral.create; +const enumType = ZodEnum.create; +const nativeEnumType = ZodNativeEnum.create; +const promiseType = ZodPromise.create; +const effectsType = ZodEffects.create; +const optionalType = ZodOptional.create; +const nullableType = ZodNullable.create; +const preprocessType = ZodEffects.createWithPreprocess; +const pipelineType = ZodPipeline.create; +const ostring = () => stringType().optional(); +const onumber = () => numberType().optional(); +const oboolean = () => booleanType().optional(); + +export const coerce = { + string: ((arg) => ZodString.create({ ...arg, coerce: true })) as (typeof ZodString)["create"], + number: ((arg) => ZodNumber.create({ ...arg, coerce: true })) as (typeof ZodNumber)["create"], + boolean: ((arg) => + ZodBoolean.create({ + ...arg, + coerce: true, + })) as (typeof ZodBoolean)["create"], + bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })) as (typeof ZodBigInt)["create"], + date: ((arg) => ZodDate.create({ ...arg, coerce: true })) as (typeof ZodDate)["create"], +}; + +export { + anyType as any, + arrayType as array, + bigIntType as bigint, + booleanType as boolean, + dateType as date, + discriminatedUnionType as discriminatedUnion, + effectsType as effect, + enumType as enum, + functionType as function, + instanceOfType as instanceof, + intersectionType as intersection, + lazyType as lazy, + literalType as literal, + mapType as map, + nanType as nan, + nativeEnumType as nativeEnum, + neverType as never, + nullType as null, + nullableType as nullable, + numberType as number, + objectType as object, + oboolean, + onumber, + optionalType as optional, + ostring, + pipelineType as pipeline, + preprocessType as preprocess, + promiseType as promise, + recordType as record, + setType as set, + strictObjectType as strictObject, + stringType as string, + symbolType as symbol, + effectsType as transformer, + tupleType as tuple, + undefinedType as undefined, + unionType as union, + unknownType as unknown, + voidType as void, +}; + +export const NEVER = INVALID as never; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4-mini/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4-mini/index.ts new file mode 100644 index 000000000..bb95da0a2 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4-mini/index.ts @@ -0,0 +1,3 @@ +import * as z from "../v4/mini/external.js"; +export * from "../v4/mini/external.js"; +export { z }; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/checks.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/checks.ts new file mode 100644 index 000000000..cd78c0e45 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/checks.ts @@ -0,0 +1,32 @@ +export { + _lt as lt, + _lte as lte, + _gt as gt, + _gte as gte, + _positive as positive, + _negative as negative, + _nonpositive as nonpositive, + _nonnegative as nonnegative, + _multipleOf as multipleOf, + _maxSize as maxSize, + _minSize as minSize, + _size as size, + _maxLength as maxLength, + _minLength as minLength, + _length as length, + _regex as regex, + _lowercase as lowercase, + _uppercase as uppercase, + _includes as includes, + _startsWith as startsWith, + _endsWith as endsWith, + _property as property, + _mime as mime, + _overwrite as overwrite, + _normalize as normalize, + _trim as trim, + _toLowerCase as toLowerCase, + _toUpperCase as toUpperCase, + _slugify as slugify, + type $RefinementCtx as RefinementCtx, +} from "../core/index.js"; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/coerce.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/coerce.ts new file mode 100644 index 000000000..cc400e0d8 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/coerce.ts @@ -0,0 +1,27 @@ +import * as core from "../core/index.js"; +import * as schemas from "./schemas.js"; + +export interface ZodCoercedString extends schemas._ZodString> {} +export function string(params?: string | core.$ZodStringParams): ZodCoercedString { + return core._coercedString(schemas.ZodString, params) as any; +} + +export interface ZodCoercedNumber extends schemas._ZodNumber> {} +export function number(params?: string | core.$ZodNumberParams): ZodCoercedNumber { + return core._coercedNumber(schemas.ZodNumber, params) as ZodCoercedNumber; +} + +export interface ZodCoercedBoolean extends schemas._ZodBoolean> {} +export function boolean(params?: string | core.$ZodBooleanParams): ZodCoercedBoolean { + return core._coercedBoolean(schemas.ZodBoolean, params) as ZodCoercedBoolean; +} + +export interface ZodCoercedBigInt extends schemas._ZodBigInt> {} +export function bigint(params?: string | core.$ZodBigIntParams): ZodCoercedBigInt { + return core._coercedBigint(schemas.ZodBigInt, params) as ZodCoercedBigInt; +} + +export interface ZodCoercedDate extends schemas._ZodDate> {} +export function date(params?: string | core.$ZodDateParams): ZodCoercedDate { + return core._coercedDate(schemas.ZodDate, params) as ZodCoercedDate; +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/compat.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/compat.ts new file mode 100644 index 000000000..86a5813a0 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/compat.ts @@ -0,0 +1,70 @@ +// Zod 3 compat layer + +import * as core from "../core/index.js"; +import type { ZodType } from "./schemas.js"; + +export type { + /** @deprecated Use `z.output` instead. */ + output as TypeOf, + /** @deprecated Use `z.output` instead. */ + output as Infer, + /** @deprecated Use `z.core.$$ZodFirstPartyTypes` instead */ + $ZodTypes as ZodFirstPartySchemaTypes, +} from "../core/index.js"; + +/** @deprecated Use the raw string literal codes instead, e.g. "invalid_type". */ +export const ZodIssueCode = { + invalid_type: "invalid_type", + too_big: "too_big", + too_small: "too_small", + invalid_format: "invalid_format", + not_multiple_of: "not_multiple_of", + unrecognized_keys: "unrecognized_keys", + invalid_union: "invalid_union", + invalid_key: "invalid_key", + invalid_element: "invalid_element", + invalid_value: "invalid_value", + custom: "custom", +} as const; + +/** @deprecated Use `z.$ZodFlattenedError` */ +export type inferFlattenedErrors = core.$ZodFlattenedError, U>; + +/** @deprecated Use `z.$ZodFormattedError` */ +export type inferFormattedError, U = string> = core.$ZodFormattedError< + core.output, + U +>; + +/** Use `z.$brand` instead */ +export type BRAND = { + [core.$brand]: { [k in T]: true }; +}; +export { $brand, config } from "../core/index.js"; + +/** @deprecated Use `z.config(params)` instead. */ +export function setErrorMap(map: core.$ZodErrorMap): void { + core.config({ + customError: map, + }); +} + +/** @deprecated Use `z.config()` instead. */ +export function getErrorMap(): core.$ZodErrorMap | undefined { + return core.config().customError; +} + +export type { + /** @deprecated Use z.ZodType (without generics) instead. */ + ZodType as ZodTypeAny, + /** @deprecated Use `z.ZodType` */ + ZodType as ZodSchema, + /** @deprecated Use `z.ZodType` */ + ZodType as Schema, +}; + +/** Included for Zod 3 compatibility */ +export type ZodRawShape = core.$ZodShape; + +/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */ +export enum ZodFirstPartyTypeKind {} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/errors.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/errors.ts new file mode 100644 index 000000000..695a53433 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/errors.ts @@ -0,0 +1,82 @@ +import * as core from "../core/index.js"; +import { $ZodError } from "../core/index.js"; +import * as util from "../core/util.js"; + +/** @deprecated Use `z.core.$ZodIssue` from `@zod/core` instead, especially if you are building a library on top of Zod. */ +export type ZodIssue = core.$ZodIssue; + +/** An Error-like class used to store Zod validation issues. */ +export interface ZodError extends $ZodError { + /** @deprecated Use the `z.treeifyError(err)` function instead. */ + format(): core.$ZodFormattedError; + format(mapper: (issue: core.$ZodIssue) => U): core.$ZodFormattedError; + /** @deprecated Use the `z.treeifyError(err)` function instead. */ + flatten(): core.$ZodFlattenedError; + flatten(mapper: (issue: core.$ZodIssue) => U): core.$ZodFlattenedError; + /** @deprecated Push directly to `.issues` instead. */ + addIssue(issue: core.$ZodIssue): void; + /** @deprecated Push directly to `.issues` instead. */ + addIssues(issues: core.$ZodIssue[]): void; + + /** @deprecated Check `err.issues.length === 0` instead. */ + isEmpty: boolean; +} + +const initializer = (inst: ZodError, issues: core.$ZodIssue[]) => { + $ZodError.init(inst, issues); + inst.name = "ZodError"; + Object.defineProperties(inst, { + format: { + value: (mapper: any) => core.formatError(inst, mapper), + // enumerable: false, + }, + flatten: { + value: (mapper: any) => core.flattenError(inst, mapper), + // enumerable: false, + }, + addIssue: { + value: (issue: any) => { + inst.issues.push(issue); + inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2); + }, + // enumerable: false, + }, + addIssues: { + value: (issues: any) => { + inst.issues.push(...issues); + inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2); + }, + // enumerable: false, + }, + isEmpty: { + get() { + return inst.issues.length === 0; + }, + // enumerable: false, + }, + }); + // Object.defineProperty(inst, "isEmpty", { + // get() { + // return inst.issues.length === 0; + // }, + // }); +}; +export const ZodError: core.$constructor = core.$constructor("ZodError", initializer); +export const ZodRealError: core.$constructor = core.$constructor("ZodError", initializer, { + Parent: Error, +}); + +export type { + /** @deprecated Use `z.core.$ZodFlattenedError` instead. */ + $ZodFlattenedError as ZodFlattenedError, + /** @deprecated Use `z.core.$ZodFormattedError` instead. */ + $ZodFormattedError as ZodFormattedError, + /** @deprecated Use `z.core.$ZodErrorMap` instead. */ + $ZodErrorMap as ZodErrorMap, +} from "../core/index.js"; + +/** @deprecated Use `z.core.$ZodRawIssue` instead. */ +export type IssueData = core.$ZodRawIssue; + +// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */ +// export type ErrorMapCtx = core.$ZodErrorMapCtx; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/external.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/external.ts new file mode 100644 index 000000000..084deaa5b --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/external.ts @@ -0,0 +1,51 @@ +export * as core from "../core/index.js"; +export * from "./schemas.js"; +export * from "./checks.js"; +export * from "./errors.js"; +export * from "./parse.js"; +export * from "./compat.js"; + +// zod-specified +import { config } from "../core/index.js"; +import en from "../locales/en.js"; +config(en()); + +export type { infer, output, input } from "../core/index.js"; +export { + globalRegistry, + type GlobalMeta, + registry, + config, + $output, + $input, + $brand, + clone, + regexes, + treeifyError, + prettifyError, + formatError, + flattenError, + TimePrecision, + util, + NEVER, +} from "../core/index.js"; +export { toJSONSchema } from "../core/json-schema-processors.js"; +export { fromJSONSchema } from "./from-json-schema.js"; + +export * as locales from "../locales/index.js"; + +// iso +// must be exported from top-level +// https://github.com/colinhacks/zod/issues/4491 +export { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from "./iso.js"; +export * as iso from "./iso.js"; + +// coerce +export type { + ZodCoercedString, + ZodCoercedNumber, + ZodCoercedBigInt, + ZodCoercedBoolean, + ZodCoercedDate, +} from "./coerce.js"; +export * as coerce from "./coerce.js"; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/from-json-schema.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/from-json-schema.ts new file mode 100644 index 000000000..b2c806ecf --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/from-json-schema.ts @@ -0,0 +1,643 @@ +import type * as JSONSchema from "../core/json-schema.js"; +import { type $ZodRegistry, globalRegistry } from "../core/registries.js"; +import * as _checks from "./checks.js"; +import * as _iso from "./iso.js"; +import * as _schemas from "./schemas.js"; +import type { ZodNumber, ZodString, ZodType } from "./schemas.js"; + +// Local z object to avoid circular dependency with ../index.js +const z = { + ..._schemas, + ..._checks, + iso: _iso, +}; + +type JSONSchemaVersion = "draft-2020-12" | "draft-7" | "draft-4" | "openapi-3.0"; + +interface FromJSONSchemaParams { + defaultTarget?: JSONSchemaVersion; + registry?: $ZodRegistry; +} + +interface ConversionContext { + version: JSONSchemaVersion; + defs: Record; + refs: Map; + processing: Set; + rootSchema: JSONSchema.JSONSchema; + registry: $ZodRegistry; +} + +// Keys that are recognized and handled by the conversion logic +const RECOGNIZED_KEYS = new Set([ + // Schema identification + "$schema", + "$ref", + "$defs", + "definitions", + // Core schema keywords + "$id", + "id", + "$comment", + "$anchor", + "$vocabulary", + "$dynamicRef", + "$dynamicAnchor", + // Type + "type", + "enum", + "const", + // Composition + "anyOf", + "oneOf", + "allOf", + "not", + // Object + "properties", + "required", + "additionalProperties", + "patternProperties", + "propertyNames", + "minProperties", + "maxProperties", + // Array + "items", + "prefixItems", + "additionalItems", + "minItems", + "maxItems", + "uniqueItems", + "contains", + "minContains", + "maxContains", + // String + "minLength", + "maxLength", + "pattern", + "format", + // Number + "minimum", + "maximum", + "exclusiveMinimum", + "exclusiveMaximum", + "multipleOf", + // Already handled metadata + "description", + "default", + // Content + "contentEncoding", + "contentMediaType", + "contentSchema", + // Unsupported (error-throwing) + "unevaluatedItems", + "unevaluatedProperties", + "if", + "then", + "else", + "dependentSchemas", + "dependentRequired", + // OpenAPI + "nullable", + "readOnly", +]); + +function detectVersion(schema: JSONSchema.JSONSchema, defaultTarget?: JSONSchemaVersion): JSONSchemaVersion { + const $schema = schema.$schema; + + if ($schema === "https://json-schema.org/draft/2020-12/schema") { + return "draft-2020-12"; + } + if ($schema === "http://json-schema.org/draft-07/schema#") { + return "draft-7"; + } + if ($schema === "http://json-schema.org/draft-04/schema#") { + return "draft-4"; + } + + // Use defaultTarget if provided, otherwise default to draft-2020-12 + return defaultTarget ?? "draft-2020-12"; +} + +function resolveRef(ref: string, ctx: ConversionContext): JSONSchema.JSONSchema { + if (!ref.startsWith("#")) { + throw new Error("External $ref is not supported, only local refs (#/...) are allowed"); + } + + const path = ref.slice(1).split("/").filter(Boolean); + + // Handle root reference "#" + if (path.length === 0) { + return ctx.rootSchema; + } + + const defsKey = ctx.version === "draft-2020-12" ? "$defs" : "definitions"; + + if (path[0] === defsKey) { + const key = path[1]; + if (!key || !ctx.defs[key]) { + throw new Error(`Reference not found: ${ref}`); + } + return ctx.defs[key]!; + } + + throw new Error(`Reference not found: ${ref}`); +} + +function convertBaseSchema(schema: JSONSchema.JSONSchema, ctx: ConversionContext): ZodType { + // Handle unsupported features + if (schema.not !== undefined) { + // Special case: { not: {} } represents never + if (typeof schema.not === "object" && Object.keys(schema.not).length === 0) { + return z.never(); + } + throw new Error("not is not supported in Zod (except { not: {} } for never)"); + } + if (schema.unevaluatedItems !== undefined) { + throw new Error("unevaluatedItems is not supported"); + } + if (schema.unevaluatedProperties !== undefined) { + throw new Error("unevaluatedProperties is not supported"); + } + if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) { + throw new Error("Conditional schemas (if/then/else) are not supported"); + } + if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) { + throw new Error("dependentSchemas and dependentRequired are not supported"); + } + + // Handle $ref + if (schema.$ref) { + const refPath = schema.$ref; + if (ctx.refs.has(refPath)) { + return ctx.refs.get(refPath)!; + } + + if (ctx.processing.has(refPath)) { + // Circular reference - use lazy + return z.lazy(() => { + if (!ctx.refs.has(refPath)) { + throw new Error(`Circular reference not resolved: ${refPath}`); + } + return ctx.refs.get(refPath)!; + }); + } + + ctx.processing.add(refPath); + const resolved = resolveRef(refPath, ctx); + const zodSchema = convertSchema(resolved, ctx); + ctx.refs.set(refPath, zodSchema); + ctx.processing.delete(refPath); + return zodSchema; + } + + // Handle enum + if (schema.enum !== undefined) { + const enumValues = schema.enum; + + // Special case: OpenAPI 3.0 null representation { type: "string", nullable: true, enum: [null] } + if ( + ctx.version === "openapi-3.0" && + schema.nullable === true && + enumValues.length === 1 && + enumValues[0] === null + ) { + return z.null(); + } + + if (enumValues.length === 0) { + return z.never(); + } + if (enumValues.length === 1) { + return z.literal(enumValues[0]!); + } + // Check if all values are strings + if (enumValues.every((v) => typeof v === "string")) { + return z.enum(enumValues as [string, ...string[]]); + } + // Mixed types - use union of literals + const literalSchemas = enumValues.map((v) => z.literal(v)); + if (literalSchemas.length < 2) { + return literalSchemas[0]!; + } + return z.union([literalSchemas[0]!, literalSchemas[1]!, ...literalSchemas.slice(2)] as [ + ZodType, + ZodType, + ...ZodType[], + ]); + } + + // Handle const + if (schema.const !== undefined) { + return z.literal(schema.const); + } + + // Handle type + const type = schema.type; + + if (Array.isArray(type)) { + // Expand type array into anyOf union + const typeSchemas = type.map((t) => { + const typeSchema: JSONSchema.JSONSchema = { ...schema, type: t }; + return convertBaseSchema(typeSchema, ctx); + }); + if (typeSchemas.length === 0) { + return z.never(); + } + if (typeSchemas.length === 1) { + return typeSchemas[0]!; + } + return z.union(typeSchemas as [ZodType, ZodType, ...ZodType[]]); + } + + if (!type) { + // No type specified - empty schema (any) + return z.any(); + } + + let zodSchema: ZodType; + + switch (type) { + case "string": { + let stringSchema: ZodString = z.string(); + + // Apply format using .check() with Zod format functions + if (schema.format) { + const format = schema.format; + // Map common formats to Zod check functions + if (format === "email") { + stringSchema = stringSchema.check(z.email()); + } else if (format === "uri" || format === "uri-reference") { + stringSchema = stringSchema.check(z.url()); + } else if (format === "uuid" || format === "guid") { + stringSchema = stringSchema.check(z.uuid()); + } else if (format === "date-time") { + stringSchema = stringSchema.check(z.iso.datetime()); + } else if (format === "date") { + stringSchema = stringSchema.check(z.iso.date()); + } else if (format === "time") { + stringSchema = stringSchema.check(z.iso.time()); + } else if (format === "duration") { + stringSchema = stringSchema.check(z.iso.duration()); + } else if (format === "ipv4") { + stringSchema = stringSchema.check(z.ipv4()); + } else if (format === "ipv6") { + stringSchema = stringSchema.check(z.ipv6()); + } else if (format === "mac") { + stringSchema = stringSchema.check(z.mac()); + } else if (format === "cidr") { + stringSchema = stringSchema.check(z.cidrv4()); + } else if (format === "cidr-v6") { + stringSchema = stringSchema.check(z.cidrv6()); + } else if (format === "base64") { + stringSchema = stringSchema.check(z.base64()); + } else if (format === "base64url") { + stringSchema = stringSchema.check(z.base64url()); + } else if (format === "e164") { + stringSchema = stringSchema.check(z.e164()); + } else if (format === "jwt") { + stringSchema = stringSchema.check(z.jwt()); + } else if (format === "emoji") { + stringSchema = stringSchema.check(z.emoji()); + } else if (format === "nanoid") { + stringSchema = stringSchema.check(z.nanoid()); + } else if (format === "cuid") { + stringSchema = stringSchema.check(z.cuid()); + } else if (format === "cuid2") { + stringSchema = stringSchema.check(z.cuid2()); + } else if (format === "ulid") { + stringSchema = stringSchema.check(z.ulid()); + } else if (format === "xid") { + stringSchema = stringSchema.check(z.xid()); + } else if (format === "ksuid") { + stringSchema = stringSchema.check(z.ksuid()); + } + // Note: json-string format is not currently supported by Zod + // Custom formats are ignored - keep as plain string + } + + // Apply constraints + if (typeof schema.minLength === "number") { + stringSchema = stringSchema.min(schema.minLength); + } + if (typeof schema.maxLength === "number") { + stringSchema = stringSchema.max(schema.maxLength); + } + if (schema.pattern) { + // JSON Schema patterns are not implicitly anchored (match anywhere in string) + stringSchema = stringSchema.regex(new RegExp(schema.pattern)); + } + + zodSchema = stringSchema; + break; + } + + case "number": + case "integer": { + let numberSchema: ZodNumber = type === "integer" ? z.number().int() : z.number(); + + // Apply constraints + if (typeof schema.minimum === "number") { + numberSchema = numberSchema.min(schema.minimum); + } + if (typeof schema.maximum === "number") { + numberSchema = numberSchema.max(schema.maximum); + } + if (typeof schema.exclusiveMinimum === "number") { + numberSchema = numberSchema.gt(schema.exclusiveMinimum); + } else if (schema.exclusiveMinimum === true && typeof schema.minimum === "number") { + numberSchema = numberSchema.gt(schema.minimum); + } + if (typeof schema.exclusiveMaximum === "number") { + numberSchema = numberSchema.lt(schema.exclusiveMaximum); + } else if (schema.exclusiveMaximum === true && typeof schema.maximum === "number") { + numberSchema = numberSchema.lt(schema.maximum); + } + if (typeof schema.multipleOf === "number") { + numberSchema = numberSchema.multipleOf(schema.multipleOf); + } + + zodSchema = numberSchema; + break; + } + + case "boolean": { + zodSchema = z.boolean(); + break; + } + + case "null": { + zodSchema = z.null(); + break; + } + + case "object": { + const shape: Record = {}; + const properties = schema.properties || {}; + const requiredSet = new Set(schema.required || []); + + // Convert properties - mark optional ones + for (const [key, propSchema] of Object.entries(properties)) { + const propZodSchema = convertSchema(propSchema as JSONSchema.JSONSchema, ctx); + // If not in required array, make it optional + shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional(); + } + + // Handle propertyNames + if (schema.propertyNames) { + const keySchema = convertSchema(schema.propertyNames, ctx) as ZodString; + const valueSchema = + schema.additionalProperties && typeof schema.additionalProperties === "object" + ? convertSchema(schema.additionalProperties as JSONSchema.JSONSchema, ctx) + : z.any(); + + // Case A: No properties (pure record) + if (Object.keys(shape).length === 0) { + zodSchema = z.record(keySchema, valueSchema); + break; + } + + // Case B: With properties (intersection of object and looseRecord) + const objectSchema = z.object(shape).passthrough(); + const recordSchema = z.looseRecord(keySchema, valueSchema); + zodSchema = z.intersection(objectSchema, recordSchema); + break; + } + + // Handle patternProperties + if (schema.patternProperties) { + // patternProperties: keys matching pattern must satisfy corresponding schema + // Use loose records so non-matching keys pass through + const patternProps = schema.patternProperties; + const patternKeys = Object.keys(patternProps); + const looseRecords: ZodType[] = []; + + for (const pattern of patternKeys) { + const patternValue = convertSchema(patternProps[pattern] as JSONSchema.JSONSchema, ctx); + const keySchema = z.string().regex(new RegExp(pattern)); + looseRecords.push(z.looseRecord(keySchema, patternValue)); + } + + // Build intersection: object schema + all pattern property records + const schemasToIntersect: ZodType[] = []; + if (Object.keys(shape).length > 0) { + // Use passthrough so patternProperties can validate additional keys + schemasToIntersect.push(z.object(shape).passthrough()); + } + schemasToIntersect.push(...looseRecords); + + if (schemasToIntersect.length === 0) { + zodSchema = z.object({}).passthrough(); + } else if (schemasToIntersect.length === 1) { + zodSchema = schemasToIntersect[0]!; + } else { + // Chain intersections: (A & B) & C & D ... + let result = z.intersection(schemasToIntersect[0]!, schemasToIntersect[1]!); + for (let i = 2; i < schemasToIntersect.length; i++) { + result = z.intersection(result, schemasToIntersect[i]!); + } + zodSchema = result; + } + break; + } + + // Handle additionalProperties + // In JSON Schema, additionalProperties defaults to true (allow any extra properties) + // In Zod, objects strip unknown keys by default, so we need to handle this explicitly + const objectSchema = z.object(shape); + if (schema.additionalProperties === false) { + // Strict mode - no extra properties allowed + zodSchema = objectSchema.strict(); + } else if (typeof schema.additionalProperties === "object") { + // Extra properties must match the specified schema + zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties as JSONSchema.JSONSchema, ctx)); + } else { + // additionalProperties is true or undefined - allow any extra properties (passthrough) + zodSchema = objectSchema.passthrough(); + } + break; + } + + case "array": { + // TODO: uniqueItems is not supported + // TODO: contains/minContains/maxContains are not supported + // Check if this is a tuple (prefixItems or items as array) + const prefixItems = schema.prefixItems; + const items = schema.items; + + if (prefixItems && Array.isArray(prefixItems)) { + // Tuple with prefixItems (draft-2020-12) + const tupleItems = prefixItems.map((item) => convertSchema(item as JSONSchema.JSONSchema, ctx)); + const rest = + items && typeof items === "object" && !Array.isArray(items) + ? convertSchema(items as JSONSchema.JSONSchema, ctx) + : undefined; + if (rest) { + zodSchema = z.tuple(tupleItems as [ZodType, ...ZodType[]]).rest(rest); + } else { + zodSchema = z.tuple(tupleItems as [ZodType, ...ZodType[]]); + } + // Apply minItems/maxItems constraints to tuples + if (typeof schema.minItems === "number") { + zodSchema = (zodSchema as any).check(z.minLength(schema.minItems)); + } + if (typeof schema.maxItems === "number") { + zodSchema = (zodSchema as any).check(z.maxLength(schema.maxItems)); + } + } else if (Array.isArray(items)) { + // Tuple with items array (draft-7) + const tupleItems = items.map((item) => convertSchema(item as JSONSchema.JSONSchema, ctx)); + const rest = + schema.additionalItems && typeof schema.additionalItems === "object" + ? convertSchema(schema.additionalItems as JSONSchema.JSONSchema, ctx) + : undefined; // additionalItems: false means no rest, handled by default tuple behavior + if (rest) { + zodSchema = z.tuple(tupleItems as [ZodType, ...ZodType[]]).rest(rest); + } else { + zodSchema = z.tuple(tupleItems as [ZodType, ...ZodType[]]); + } + // Apply minItems/maxItems constraints to tuples + if (typeof schema.minItems === "number") { + zodSchema = (zodSchema as any).check(z.minLength(schema.minItems)); + } + if (typeof schema.maxItems === "number") { + zodSchema = (zodSchema as any).check(z.maxLength(schema.maxItems)); + } + } else if (items !== undefined) { + // Regular array + const element = convertSchema(items as JSONSchema.JSONSchema, ctx); + let arraySchema = z.array(element); + + // Apply constraints + if (typeof schema.minItems === "number") { + arraySchema = (arraySchema as any).min(schema.minItems); + } + if (typeof schema.maxItems === "number") { + arraySchema = (arraySchema as any).max(schema.maxItems); + } + + zodSchema = arraySchema; + } else { + // No items specified - array of any + zodSchema = z.array(z.any()); + } + break; + } + + default: + throw new Error(`Unsupported type: ${type}`); + } + + // Apply metadata + if (schema.description) { + zodSchema = zodSchema.describe(schema.description); + } + if (schema.default !== undefined) { + zodSchema = (zodSchema as any).default(schema.default); + } + + return zodSchema; +} + +function convertSchema(schema: JSONSchema.JSONSchema | boolean, ctx: ConversionContext): ZodType { + if (typeof schema === "boolean") { + return schema ? z.any() : z.never(); + } + + // Convert base schema first (ignoring composition keywords) + let baseSchema = convertBaseSchema(schema, ctx); + const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined; + + // Process composition keywords LAST (they can appear together) + // Handle anyOf - wrap base schema with union + if (schema.anyOf && Array.isArray(schema.anyOf)) { + const options = schema.anyOf.map((s) => convertSchema(s, ctx)); + const anyOfUnion = z.union(options as [ZodType, ZodType, ...ZodType[]]); + baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion; + } + + // Handle oneOf - exclusive union (exactly one must match) + if (schema.oneOf && Array.isArray(schema.oneOf)) { + const options = schema.oneOf.map((s) => convertSchema(s, ctx)); + const oneOfUnion = z.xor(options as [ZodType, ZodType, ...ZodType[]]); + baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion; + } + + // Handle allOf - wrap base schema with intersection + if (schema.allOf && Array.isArray(schema.allOf)) { + if (schema.allOf.length === 0) { + baseSchema = hasExplicitType ? baseSchema : z.any(); + } else { + let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0]!, ctx); + const startIdx = hasExplicitType ? 0 : 1; + for (let i = startIdx; i < schema.allOf.length; i++) { + result = z.intersection(result, convertSchema(schema.allOf[i]!, ctx)); + } + baseSchema = result; + } + } + + // Handle nullable (OpenAPI 3.0) + if (schema.nullable === true && ctx.version === "openapi-3.0") { + baseSchema = z.nullable(baseSchema); + } + + // Handle readOnly + if (schema.readOnly === true) { + baseSchema = z.readonly(baseSchema); + } + + // Collect metadata: core schema keywords and unrecognized keys + const extraMeta: Record = {}; + + // Core schema keywords that should be captured as metadata + const coreMetadataKeys = ["$id", "id", "$comment", "$anchor", "$vocabulary", "$dynamicRef", "$dynamicAnchor"]; + for (const key of coreMetadataKeys) { + if (key in schema) { + extraMeta[key] = schema[key]; + } + } + + // Content keywords - store as metadata + const contentMetadataKeys = ["contentEncoding", "contentMediaType", "contentSchema"]; + for (const key of contentMetadataKeys) { + if (key in schema) { + extraMeta[key] = schema[key]; + } + } + + // Unrecognized keys (custom metadata) + for (const key of Object.keys(schema)) { + if (!RECOGNIZED_KEYS.has(key)) { + extraMeta[key] = schema[key]; + } + } + + if (Object.keys(extraMeta).length > 0) { + ctx.registry.add(baseSchema, extraMeta); + } + + return baseSchema; +} + +/** + * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */ +export function fromJSONSchema(schema: JSONSchema.JSONSchema | boolean, params?: FromJSONSchemaParams): ZodType { + // Handle boolean schemas + if (typeof schema === "boolean") { + return schema ? z.any() : z.never(); + } + + const version = detectVersion(schema, params?.defaultTarget); + const defs = (schema.$defs || schema.definitions || {}) as Record; + + const ctx: ConversionContext = { + version, + defs, + refs: new Map(), + processing: new Set(), + rootSchema: schema, + registry: params?.registry ?? globalRegistry, + }; + + return convertSchema(schema, ctx); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/index.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/index.ts new file mode 100644 index 000000000..f0f7547ff --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/index.ts @@ -0,0 +1,5 @@ +import * as z from "./external.js"; + +export { z }; +export * from "./external.js"; +export default z; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/iso.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/iso.ts new file mode 100644 index 000000000..b08696d67 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/iso.ts @@ -0,0 +1,90 @@ +import * as core from "../core/index.js"; +import * as schemas from "./schemas.js"; + +////////////////////////////////////////////// +////////////////////////////////////////////// +////////// ////////// +////////// ZodISODateTime ////////// +////////// ////////// +////////////////////////////////////////////// +////////////////////////////////////////////// + +export interface ZodISODateTime extends schemas.ZodStringFormat { + _zod: core.$ZodISODateTimeInternals; +} +export const ZodISODateTime: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodISODateTime", + (inst, def) => { + core.$ZodISODateTime.init(inst, def); + schemas.ZodStringFormat.init(inst, def); + } +); + +export function datetime(params?: string | core.$ZodISODateTimeParams): ZodISODateTime { + return core._isoDateTime(ZodISODateTime, params); +} + +////////////////////////////////////////// +////////////////////////////////////////// +////////// ////////// +////////// ZodISODate ////////// +////////// ////////// +////////////////////////////////////////// +////////////////////////////////////////// + +export interface ZodISODate extends schemas.ZodStringFormat { + _zod: core.$ZodISODateInternals; +} +export const ZodISODate: core.$constructor = /*@__PURE__*/ core.$constructor("ZodISODate", (inst, def) => { + core.$ZodISODate.init(inst, def); + schemas.ZodStringFormat.init(inst, def); +}); + +export function date(params?: string | core.$ZodISODateParams): ZodISODate { + return core._isoDate(ZodISODate, params); +} + +// ZodISOTime + +////////////////////////////////////////// +////////////////////////////////////////// +////////// ////////// +////////// ZodISOTime ////////// +////////// ////////// +////////////////////////////////////////// +////////////////////////////////////////// + +export interface ZodISOTime extends schemas.ZodStringFormat { + _zod: core.$ZodISOTimeInternals; +} +export const ZodISOTime: core.$constructor = /*@__PURE__*/ core.$constructor("ZodISOTime", (inst, def) => { + core.$ZodISOTime.init(inst, def); + schemas.ZodStringFormat.init(inst, def); +}); + +export function time(params?: string | core.$ZodISOTimeParams): ZodISOTime { + return core._isoTime(ZodISOTime, params); +} + +////////////////////////////////////////////// +////////////////////////////////////////////// +////////// ////////// +////////// ZodISODuration ////////// +////////// ////////// +////////////////////////////////////////////// +////////////////////////////////////////////// + +export interface ZodISODuration extends schemas.ZodStringFormat { + _zod: core.$ZodISODurationInternals; +} +export const ZodISODuration: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodISODuration", + (inst, def) => { + core.$ZodISODuration.init(inst, def); + schemas.ZodStringFormat.init(inst, def); + } +); + +export function duration(params?: string | core.$ZodISODurationParams): ZodISODuration { + return core._isoDuration(ZodISODuration, params); +} diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/parse.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/parse.ts new file mode 100644 index 000000000..e9b88c07e --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/parse.ts @@ -0,0 +1,82 @@ +import * as core from "../core/index.js"; +import { type ZodError, ZodRealError } from "./errors.js"; + +export type ZodSafeParseResult = ZodSafeParseSuccess | ZodSafeParseError; +export type ZodSafeParseSuccess = { success: true; data: T; error?: never }; +export type ZodSafeParseError = { success: false; data?: never; error: ZodError }; + +export const parse: ( + schema: T, + value: unknown, + _ctx?: core.ParseContext, + _params?: { callee?: core.util.AnyFunc; Err?: core.$ZodErrorClass } +) => core.output = /* @__PURE__ */ core._parse(ZodRealError) as any; + +export const parseAsync: ( + schema: T, + value: unknown, + _ctx?: core.ParseContext, + _params?: { callee?: core.util.AnyFunc; Err?: core.$ZodErrorClass } +) => Promise> = /* @__PURE__ */ core._parseAsync(ZodRealError) as any; + +export const safeParse: ( + schema: T, + value: unknown, + _ctx?: core.ParseContext + // _params?: { callee?: core.util.AnyFunc; Err?: core.$ZodErrorClass } +) => ZodSafeParseResult> = /* @__PURE__ */ core._safeParse(ZodRealError) as any; + +export const safeParseAsync: ( + schema: T, + value: unknown, + _ctx?: core.ParseContext +) => Promise>> = /* @__PURE__ */ core._safeParseAsync(ZodRealError) as any; + +// Codec functions +export const encode: ( + schema: T, + value: core.output, + _ctx?: core.ParseContext +) => core.input = /* @__PURE__ */ core._encode(ZodRealError) as any; + +export const decode: ( + schema: T, + value: core.input, + _ctx?: core.ParseContext +) => core.output = /* @__PURE__ */ core._decode(ZodRealError) as any; + +export const encodeAsync: ( + schema: T, + value: core.output, + _ctx?: core.ParseContext +) => Promise> = /* @__PURE__ */ core._encodeAsync(ZodRealError) as any; + +export const decodeAsync: ( + schema: T, + value: core.input, + _ctx?: core.ParseContext +) => Promise> = /* @__PURE__ */ core._decodeAsync(ZodRealError) as any; + +export const safeEncode: ( + schema: T, + value: core.output, + _ctx?: core.ParseContext +) => ZodSafeParseResult> = /* @__PURE__ */ core._safeEncode(ZodRealError) as any; + +export const safeDecode: ( + schema: T, + value: core.input, + _ctx?: core.ParseContext +) => ZodSafeParseResult> = /* @__PURE__ */ core._safeDecode(ZodRealError) as any; + +export const safeEncodeAsync: ( + schema: T, + value: core.output, + _ctx?: core.ParseContext +) => Promise>> = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError) as any; + +export const safeDecodeAsync: ( + schema: T, + value: core.input, + _ctx?: core.ParseContext +) => Promise>> = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError) as any; diff --git a/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/schemas.ts b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/schemas.ts new file mode 100644 index 000000000..481d25a17 --- /dev/null +++ b/examples/vercel-ai-sdk-pr/node-headroom-compression/node_modules/zod/src/v4/classic/schemas.ts @@ -0,0 +1,2409 @@ +import * as core from "../core/index.js"; +import { util } from "../core/index.js"; +import * as processors from "../core/json-schema-processors.js"; +import type { StandardSchemaWithJSONProps } from "../core/standard-schema.js"; +import { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from "../core/to-json-schema.js"; + +import * as checks from "./checks.js"; +import * as iso from "./iso.js"; +import * as parse from "./parse.js"; + +/////////////////////////////////////////// +/////////////////////////////////////////// +//////////// //////////// +//////////// ZodType //////////// +//////////// //////////// +/////////////////////////////////////////// +/////////////////////////////////////////// + +export type ZodStandardSchemaWithJSON = StandardSchemaWithJSONProps, core.output>; +export interface ZodType< + out Output = unknown, + out Input = unknown, + out Internals extends core.$ZodTypeInternals = core.$ZodTypeInternals, +> extends core.$ZodType { + def: Internals["def"]; + type: Internals["def"]["type"]; + + /** @deprecated Use `.def` instead. */ + _def: Internals["def"]; + /** @deprecated Use `z.output` instead. */ + _output: Internals["output"]; + /** @deprecated Use `z.input` instead. */ + _input: Internals["input"]; + + "~standard": ZodStandardSchemaWithJSON; + /** Converts this schema to a JSON Schema representation. */ + toJSONSchema(params?: core.ToJSONSchemaParams): core.ZodStandardJSONSchemaPayload; + + // base methods + check(...checks: (core.CheckFn> | core.$ZodCheck>)[]): this; + with(...checks: (core.CheckFn> | core.$ZodCheck>)[]): this; + clone(def?: Internals["def"], params?: { parent: boolean }): this; + register( + registry: R, + ...meta: this extends R["_schema"] + ? undefined extends R["_meta"] + ? [core.$replace?] + : [core.$replace] + : ["Incompatible schema"] + ): this; + + brand( + value?: T + ): PropertyKey extends T ? this : core.$ZodBranded; + + // parsing + parse(data: unknown, params?: core.ParseContext): core.output; + safeParse(data: unknown, params?: core.ParseContext): parse.ZodSafeParseResult>; + parseAsync(data: unknown, params?: core.ParseContext): Promise>; + safeParseAsync( + data: unknown, + params?: core.ParseContext + ): Promise>>; + spa: ( + data: unknown, + params?: core.ParseContext + ) => Promise>>; + + // encoding/decoding + encode(data: core.output, params?: core.ParseContext): core.input; + decode(data: core.input, params?: core.ParseContext): core.output; + encodeAsync(data: core.output, params?: core.ParseContext): Promise>; + decodeAsync(data: core.input, params?: core.ParseContext): Promise>; + safeEncode( + data: core.output, + params?: core.ParseContext + ): parse.ZodSafeParseResult>; + safeDecode( + data: core.input, + params?: core.ParseContext + ): parse.ZodSafeParseResult>; + safeEncodeAsync( + data: core.output, + params?: core.ParseContext + ): Promise>>; + safeDecodeAsync( + data: core.input, + params?: core.ParseContext + ): Promise>>; + + // refinements + refine) => unknown | Promise>( + check: Ch, + params?: string | core.$ZodCustomParams + ): Ch extends (arg: any) => arg is infer R ? this & ZodType> : this; + superRefine( + refinement: (arg: core.output, ctx: core.$RefinementCtx>) => void | Promise + ): this; + overwrite(fn: (x: core.output) => core.output): this; + + // wrappers + optional(): ZodOptional; + exactOptional(): ZodExactOptional; + nonoptional(params?: string | core.$ZodNonOptionalParams): ZodNonOptional; + nullable(): ZodNullable; + nullish(): ZodOptional>; + default(def: util.NoUndefined>): ZodDefault; + default(def: () => util.NoUndefined>): ZodDefault; + prefault(def: () => core.input): ZodPrefault; + prefault(def: core.input): ZodPrefault; + array(): ZodArray; + or(option: T): ZodUnion<[this, T]>; + and(incoming: T): ZodIntersection; + transform( + transform: (arg: core.output, ctx: core.$RefinementCtx>) => NewOut | Promise + ): ZodPipe, core.output>>; + catch(def: core.output): ZodCatch; + catch(def: (ctx: core.$ZodCatchCtx) => core.output): ZodCatch; + pipe>>( + target: T | core.$ZodType> + ): ZodPipe; + readonly(): ZodReadonly; + + /** Returns a new instance that has been registered in `z.globalRegistry` with the specified description */ + describe(description: string): this; + description?: string; + /** Returns the metadata associated with this instance in `z.globalRegistry` */ + meta(): core.$replace | undefined; + /** Returns a new instance that has been registered in `z.globalRegistry` with the specified metadata */ + meta(data: core.$replace): this; + + // helpers + /** @deprecated Try safe-parsing `undefined` (this is what `isOptional` does internally): + * + * ```ts + * const schema = z.string().optional(); + * const isOptional = schema.safeParse(undefined).success; // true + * ``` + */ + isOptional(): boolean; + /** + * @deprecated Try safe-parsing `null` (this is what `isNullable` does internally): + * + * ```ts + * const schema = z.string().nullable(); + * const isNullable = schema.safeParse(null).success; // true + * ``` + */ + isNullable(): boolean; + apply(fn: (schema: this) => T): T; +} + +export interface _ZodType + extends ZodType {} + +export const ZodType: core.$constructor = /*@__PURE__*/ core.$constructor("ZodType", (inst, def) => { + core.$ZodType.init(inst, def); + Object.assign(inst["~standard"], { + jsonSchema: { + input: createStandardJSONSchemaMethod(inst, "input"), + output: createStandardJSONSchemaMethod(inst, "output"), + }, + }); + inst.toJSONSchema = createToJSONSchemaMethod(inst, {}); + + inst.def = def; + inst.type = def.type; + Object.defineProperty(inst, "_def", { value: def }); + + // base methods + inst.check = (...checks) => { + return inst.clone( + util.mergeDefs(def, { + checks: [ + ...(def.checks ?? []), + ...checks.map((ch) => + typeof ch === "function" ? { _zod: { check: ch, def: { check: "custom" }, onattach: [] } } : ch + ), + ], + }), + { + parent: true, + } + ); + }; + inst.with = inst.check; + inst.clone = (def, params) => core.clone(inst, def, params); + inst.brand = () => inst as any; + inst.register = ((reg: any, meta: any) => { + reg.add(inst, meta); + return inst; + }) as any; + + // parsing + inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse }); + inst.safeParse = (data, params) => parse.safeParse(inst, data, params); + inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync }); + inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params); + inst.spa = inst.safeParseAsync; + + // encoding/decoding + inst.encode = (data, params) => parse.encode(inst, data, params); + inst.decode = (data, params) => parse.decode(inst, data, params); + inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params); + inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params); + inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params); + inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params); + inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params); + inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params); + + // refinements + inst.refine = (check, params) => inst.check(refine(check, params)) as never; + inst.superRefine = (refinement) => inst.check(superRefine(refinement)); + inst.overwrite = (fn) => inst.check(checks.overwrite(fn)); + + // wrappers + inst.optional = () => optional(inst); + inst.exactOptional = () => exactOptional(inst); + inst.nullable = () => nullable(inst); + inst.nullish = () => optional(nullable(inst)); + inst.nonoptional = (params) => nonoptional(inst, params); + inst.array = () => array(inst); + inst.or = (arg) => union([inst, arg]); + inst.and = (arg) => intersection(inst, arg); + inst.transform = (tx) => pipe(inst, transform(tx as any)) as never; + inst.default = (def) => _default(inst, def); + inst.prefault = (def) => prefault(inst, def); + // inst.coalesce = (def, params) => coalesce(inst, def, params); + inst.catch = (params) => _catch(inst, params); + inst.pipe = (target) => pipe(inst, target); + inst.readonly = () => readonly(inst); + + // meta + inst.describe = (description) => { + const cl = inst.clone(); + core.globalRegistry.add(cl, { description }); + return cl; + }; + Object.defineProperty(inst, "description", { + get() { + return core.globalRegistry.get(inst)?.description; + }, + configurable: true, + }); + inst.meta = (...args: any) => { + if (args.length === 0) { + return core.globalRegistry.get(inst); + } + const cl = inst.clone(); + core.globalRegistry.add(cl, args[0]); + return cl as any; + }; + + // helpers + inst.isOptional = () => inst.safeParse(undefined).success; + inst.isNullable = () => inst.safeParse(null).success; + inst.apply = (fn) => fn(inst); + return inst; +}); + +// ZodString +export interface _ZodString = core.$ZodStringInternals> + extends _ZodType { + format: string | null; + minLength: number | null; + maxLength: number | null; + + // miscellaneous checks + regex(regex: RegExp, params?: string | core.$ZodCheckRegexParams): this; + includes(value: string, params?: string | core.$ZodCheckIncludesParams): this; + startsWith(value: string, params?: string | core.$ZodCheckStartsWithParams): this; + endsWith(value: string, params?: string | core.$ZodCheckEndsWithParams): this; + min(minLength: number, params?: string | core.$ZodCheckMinLengthParams): this; + max(maxLength: number, params?: string | core.$ZodCheckMaxLengthParams): this; + length(len: number, params?: string | core.$ZodCheckLengthEqualsParams): this; + nonempty(params?: string | core.$ZodCheckMinLengthParams): this; + lowercase(params?: string | core.$ZodCheckLowerCaseParams): this; + uppercase(params?: string | core.$ZodCheckUpperCaseParams): this; + + // transforms + trim(): this; + normalize(form?: "NFC" | "NFD" | "NFKC" | "NFKD" | (string & {})): this; + toLowerCase(): this; + toUpperCase(): this; + slugify(): this; +} + +/** @internal */ +export const _ZodString: core.$constructor<_ZodString> = /*@__PURE__*/ core.$constructor("_ZodString", (inst, def) => { + core.$ZodString.init(inst, def); + ZodType.init(inst, def); + + inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params); + + const bag = inst._zod.bag; + inst.format = bag.format ?? null; + inst.minLength = bag.minimum ?? null; + inst.maxLength = bag.maximum ?? null; + + // validations + inst.regex = (...args) => inst.check(checks.regex(...args)); + inst.includes = (...args) => inst.check(checks.includes(...args)); + inst.startsWith = (...args) => inst.check(checks.startsWith(...args)); + inst.endsWith = (...args) => inst.check(checks.endsWith(...args)); + inst.min = (...args) => inst.check(checks.minLength(...args)); + inst.max = (...args) => inst.check(checks.maxLength(...args)); + inst.length = (...args) => inst.check(checks.length(...args)); + inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args)); + inst.lowercase = (params) => inst.check(checks.lowercase(params)); + inst.uppercase = (params) => inst.check(checks.uppercase(params)); + + // transforms + inst.trim = () => inst.check(checks.trim()); + inst.normalize = (...args) => inst.check(checks.normalize(...args)); + inst.toLowerCase = () => inst.check(checks.toLowerCase()); + inst.toUpperCase = () => inst.check(checks.toUpperCase()); + inst.slugify = () => inst.check(checks.slugify()); +}); + +export interface ZodString extends _ZodString> { + // string format checks + + /** @deprecated Use `z.email()` instead. */ + email(params?: string | core.$ZodCheckEmailParams): this; + /** @deprecated Use `z.url()` instead. */ + url(params?: string | core.$ZodCheckURLParams): this; + /** @deprecated Use `z.jwt()` instead. */ + jwt(params?: string | core.$ZodCheckJWTParams): this; + /** @deprecated Use `z.emoji()` instead. */ + emoji(params?: string | core.$ZodCheckEmojiParams): this; + /** @deprecated Use `z.guid()` instead. */ + guid(params?: string | core.$ZodCheckGUIDParams): this; + /** @deprecated Use `z.uuid()` instead. */ + uuid(params?: string | core.$ZodCheckUUIDParams): this; + /** @deprecated Use `z.uuid()` instead. */ + uuidv4(params?: string | core.$ZodCheckUUIDParams): this; + /** @deprecated Use `z.uuid()` instead. */ + uuidv6(params?: string | core.$ZodCheckUUIDParams): this; + /** @deprecated Use `z.uuid()` instead. */ + uuidv7(params?: string | core.$ZodCheckUUIDParams): this; + /** @deprecated Use `z.nanoid()` instead. */ + nanoid(params?: string | core.$ZodCheckNanoIDParams): this; + /** @deprecated Use `z.guid()` instead. */ + guid(params?: string | core.$ZodCheckGUIDParams): this; + /** @deprecated Use `z.cuid()` instead. */ + cuid(params?: string | core.$ZodCheckCUIDParams): this; + /** @deprecated Use `z.cuid2()` instead. */ + cuid2(params?: string | core.$ZodCheckCUID2Params): this; + /** @deprecated Use `z.ulid()` instead. */ + ulid(params?: string | core.$ZodCheckULIDParams): this; + /** @deprecated Use `z.base64()` instead. */ + base64(params?: string | core.$ZodCheckBase64Params): this; + /** @deprecated Use `z.base64url()` instead. */ + base64url(params?: string | core.$ZodCheckBase64URLParams): this; + // /** @deprecated Use `z.jsonString()` instead. */ + // jsonString(params?: string | core.$ZodCheckJSONStringParams): this; + /** @deprecated Use `z.xid()` instead. */ + xid(params?: string | core.$ZodCheckXIDParams): this; + /** @deprecated Use `z.ksuid()` instead. */ + ksuid(params?: string | core.$ZodCheckKSUIDParams): this; + // /** @deprecated Use `z.ipv4()` or `z.ipv6()` instead. */ + // ip(params?: string | (core.$ZodCheckIPv4Params & { version?: "v4" | "v6" })): ZodUnion<[this, this]>; + /** @deprecated Use `z.ipv4()` instead. */ + ipv4(params?: string | core.$ZodCheckIPv4Params): this; + /** @deprecated Use `z.ipv6()` instead. */ + ipv6(params?: string | core.$ZodCheckIPv6Params): this; + /** @deprecated Use `z.cidrv4()` instead. */ + cidrv4(params?: string | core.$ZodCheckCIDRv4Params): this; + /** @deprecated Use `z.cidrv6()` instead. */ + cidrv6(params?: string | core.$ZodCheckCIDRv6Params): this; + /** @deprecated Use `z.e164()` instead. */ + e164(params?: string | core.$ZodCheckE164Params): this; + + // ISO 8601 checks + /** @deprecated Use `z.iso.datetime()` instead. */ + datetime(params?: string | core.$ZodCheckISODateTimeParams): this; + /** @deprecated Use `z.iso.date()` instead. */ + date(params?: string | core.$ZodCheckISODateParams): this; + /** @deprecated Use `z.iso.time()` instead. */ + time( + params?: + | string + // | { + // message?: string | undefined; + // precision?: number | null; + // } + | core.$ZodCheckISOTimeParams + ): this; + /** @deprecated Use `z.iso.duration()` instead. */ + duration(params?: string | core.$ZodCheckISODurationParams): this; +} + +export const ZodString: core.$constructor = /*@__PURE__*/ core.$constructor("ZodString", (inst, def) => { + core.$ZodString.init(inst, def); + _ZodString.init(inst, def); + + inst.email = (params) => inst.check(core._email(ZodEmail, params)); + inst.url = (params) => inst.check(core._url(ZodURL, params)); + inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params)); + inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params)); + inst.guid = (params) => inst.check(core._guid(ZodGUID, params)); + inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params)); + inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params)); + inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params)); + inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params)); + inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params)); + inst.guid = (params) => inst.check(core._guid(ZodGUID, params)); + inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params)); + inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params)); + inst.ulid = (params) => inst.check(core._ulid(ZodULID, params)); + inst.base64 = (params) => inst.check(core._base64(ZodBase64, params)); + inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params)); + inst.xid = (params) => inst.check(core._xid(ZodXID, params)); + inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params)); + inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params)); + inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params)); + inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params)); + inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params)); + inst.e164 = (params) => inst.check(core._e164(ZodE164, params)); + + // iso + inst.datetime = (params) => inst.check(iso.datetime(params as any)); + inst.date = (params) => inst.check(iso.date(params as any)); + inst.time = (params) => inst.check(iso.time(params as any)); + inst.duration = (params) => inst.check(iso.duration(params as any)); +}); + +export function string(params?: string | core.$ZodStringParams): ZodString; +export function string(params?: string | core.$ZodStringParams): core.$ZodType; +export function string(params?: string | core.$ZodStringParams): ZodString { + return core._string(ZodString, params) as any; +} + +// ZodStringFormat +export interface ZodStringFormat + extends _ZodString> {} +export const ZodStringFormat: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodStringFormat", + (inst, def) => { + core.$ZodStringFormat.init(inst, def); + _ZodString.init(inst, def); + } +); + +// ZodEmail +export interface ZodEmail extends ZodStringFormat<"email"> { + _zod: core.$ZodEmailInternals; +} +export const ZodEmail: core.$constructor = /*@__PURE__*/ core.$constructor("ZodEmail", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodEmail.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function email(params?: string | core.$ZodEmailParams): ZodEmail { + return core._email(ZodEmail, params); +} + +// ZodGUID +export interface ZodGUID extends ZodStringFormat<"guid"> { + _zod: core.$ZodGUIDInternals; +} +export const ZodGUID: core.$constructor = /*@__PURE__*/ core.$constructor("ZodGUID", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodGUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function guid(params?: string | core.$ZodGUIDParams): ZodGUID { + return core._guid(ZodGUID, params); +} + +// ZodUUID +export interface ZodUUID extends ZodStringFormat<"uuid"> { + _zod: core.$ZodUUIDInternals; +} +export const ZodUUID: core.$constructor = /*@__PURE__*/ core.$constructor("ZodUUID", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodUUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function uuid(params?: string | core.$ZodUUIDParams): ZodUUID { + return core._uuid(ZodUUID, params); +} + +export function uuidv4(params?: string | core.$ZodUUIDv4Params): ZodUUID { + return core._uuidv4(ZodUUID, params); +} + +// ZodUUIDv6 + +export function uuidv6(params?: string | core.$ZodUUIDv6Params): ZodUUID { + return core._uuidv6(ZodUUID, params); +} + +// ZodUUIDv7 + +export function uuidv7(params?: string | core.$ZodUUIDv7Params): ZodUUID { + return core._uuidv7(ZodUUID, params); +} + +// ZodURL +export interface ZodURL extends ZodStringFormat<"url"> { + _zod: core.$ZodURLInternals; +} +export const ZodURL: core.$constructor = /*@__PURE__*/ core.$constructor("ZodURL", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodURL.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function url(params?: string | core.$ZodURLParams): ZodURL { + return core._url(ZodURL, params); +} + +export function httpUrl(params?: string | Omit): ZodURL { + return core._url(ZodURL, { + protocol: /^https?$/, + hostname: core.regexes.domain, + ...util.normalizeParams(params), + }); +} + +// ZodEmoji +export interface ZodEmoji extends ZodStringFormat<"emoji"> { + _zod: core.$ZodEmojiInternals; +} +export const ZodEmoji: core.$constructor = /*@__PURE__*/ core.$constructor("ZodEmoji", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodEmoji.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function emoji(params?: string | core.$ZodEmojiParams): ZodEmoji { + return core._emoji(ZodEmoji, params); +} + +// ZodNanoID +export interface ZodNanoID extends ZodStringFormat<"nanoid"> { + _zod: core.$ZodNanoIDInternals; +} +export const ZodNanoID: core.$constructor = /*@__PURE__*/ core.$constructor("ZodNanoID", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodNanoID.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function nanoid(params?: string | core.$ZodNanoIDParams): ZodNanoID { + return core._nanoid(ZodNanoID, params); +} + +// ZodCUID +export interface ZodCUID extends ZodStringFormat<"cuid"> { + _zod: core.$ZodCUIDInternals; +} +export const ZodCUID: core.$constructor = /*@__PURE__*/ core.$constructor("ZodCUID", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodCUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function cuid(params?: string | core.$ZodCUIDParams): ZodCUID { + return core._cuid(ZodCUID, params); +} + +// ZodCUID2 +export interface ZodCUID2 extends ZodStringFormat<"cuid2"> { + _zod: core.$ZodCUID2Internals; +} +export const ZodCUID2: core.$constructor = /*@__PURE__*/ core.$constructor("ZodCUID2", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodCUID2.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function cuid2(params?: string | core.$ZodCUID2Params): ZodCUID2 { + return core._cuid2(ZodCUID2, params); +} + +// ZodULID +export interface ZodULID extends ZodStringFormat<"ulid"> { + _zod: core.$ZodULIDInternals; +} +export const ZodULID: core.$constructor = /*@__PURE__*/ core.$constructor("ZodULID", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodULID.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function ulid(params?: string | core.$ZodULIDParams): ZodULID { + return core._ulid(ZodULID, params); +} + +// ZodXID +export interface ZodXID extends ZodStringFormat<"xid"> { + _zod: core.$ZodXIDInternals; +} +export const ZodXID: core.$constructor = /*@__PURE__*/ core.$constructor("ZodXID", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodXID.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function xid(params?: string | core.$ZodXIDParams): ZodXID { + return core._xid(ZodXID, params); +} + +// ZodKSUID +export interface ZodKSUID extends ZodStringFormat<"ksuid"> { + _zod: core.$ZodKSUIDInternals; +} +export const ZodKSUID: core.$constructor = /*@__PURE__*/ core.$constructor("ZodKSUID", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodKSUID.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function ksuid(params?: string | core.$ZodKSUIDParams): ZodKSUID { + return core._ksuid(ZodKSUID, params); +} + +// ZodIP +// export interface ZodIP extends ZodStringFormat<"ip"> { +// _zod: core.$ZodIPInternals; +// } +// export const ZodIP: core.$constructor = /*@__PURE__*/ core.$constructor("ZodIP", (inst, def) => { +// // ZodStringFormat.init(inst, def); +// core.$ZodIP.init(inst, def); +// ZodStringFormat.init(inst, def); +// }); + +// export function ip(params?: string | core.$ZodIPParams): ZodIP { +// return core._ip(ZodIP, params); +// } + +// ZodIPv4 +export interface ZodIPv4 extends ZodStringFormat<"ipv4"> { + _zod: core.$ZodIPv4Internals; +} +export const ZodIPv4: core.$constructor = /*@__PURE__*/ core.$constructor("ZodIPv4", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodIPv4.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function ipv4(params?: string | core.$ZodIPv4Params): ZodIPv4 { + return core._ipv4(ZodIPv4, params); +} + +// ZodMAC +export interface ZodMAC extends ZodStringFormat<"mac"> { + _zod: core.$ZodMACInternals; +} +export const ZodMAC: core.$constructor = /*@__PURE__*/ core.$constructor("ZodMAC", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodMAC.init(inst, def); + ZodStringFormat.init(inst, def); +}); +export function mac(params?: string | core.$ZodMACParams): ZodMAC { + return core._mac(ZodMAC, params); +} + +// ZodIPv6 +export interface ZodIPv6 extends ZodStringFormat<"ipv6"> { + _zod: core.$ZodIPv6Internals; +} +export const ZodIPv6: core.$constructor = /*@__PURE__*/ core.$constructor("ZodIPv6", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodIPv6.init(inst, def); + ZodStringFormat.init(inst, def); +}); +export function ipv6(params?: string | core.$ZodIPv6Params): ZodIPv6 { + return core._ipv6(ZodIPv6, params); +} + +// ZodCIDRv4 +export interface ZodCIDRv4 extends ZodStringFormat<"cidrv4"> { + _zod: core.$ZodCIDRv4Internals; +} +export const ZodCIDRv4: core.$constructor = /*@__PURE__*/ core.$constructor("ZodCIDRv4", (inst, def) => { + core.$ZodCIDRv4.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function cidrv4(params?: string | core.$ZodCIDRv4Params): ZodCIDRv4 { + return core._cidrv4(ZodCIDRv4, params); +} + +// ZodCIDRv6 +export interface ZodCIDRv6 extends ZodStringFormat<"cidrv6"> { + _zod: core.$ZodCIDRv6Internals; +} +export const ZodCIDRv6: core.$constructor = /*@__PURE__*/ core.$constructor("ZodCIDRv6", (inst, def) => { + core.$ZodCIDRv6.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function cidrv6(params?: string | core.$ZodCIDRv6Params): ZodCIDRv6 { + return core._cidrv6(ZodCIDRv6, params); +} + +// ZodBase64 +export interface ZodBase64 extends ZodStringFormat<"base64"> { + _zod: core.$ZodBase64Internals; +} +export const ZodBase64: core.$constructor = /*@__PURE__*/ core.$constructor("ZodBase64", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodBase64.init(inst, def); + ZodStringFormat.init(inst, def); +}); +export function base64(params?: string | core.$ZodBase64Params): ZodBase64 { + return core._base64(ZodBase64, params); +} + +// ZodBase64URL +export interface ZodBase64URL extends ZodStringFormat<"base64url"> { + _zod: core.$ZodBase64URLInternals; +} +export const ZodBase64URL: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodBase64URL", + (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodBase64URL.init(inst, def); + ZodStringFormat.init(inst, def); + } +); +export function base64url(params?: string | core.$ZodBase64URLParams): ZodBase64URL { + return core._base64url(ZodBase64URL, params); +} + +// ZodE164 +export interface ZodE164 extends ZodStringFormat<"e164"> { + _zod: core.$ZodE164Internals; +} +export const ZodE164: core.$constructor = /*@__PURE__*/ core.$constructor("ZodE164", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodE164.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function e164(params?: string | core.$ZodE164Params): ZodE164 { + return core._e164(ZodE164, params); +} + +// ZodJWT +export interface ZodJWT extends ZodStringFormat<"jwt"> { + _zod: core.$ZodJWTInternals; +} +export const ZodJWT: core.$constructor = /*@__PURE__*/ core.$constructor("ZodJWT", (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodJWT.init(inst, def); + ZodStringFormat.init(inst, def); +}); + +export function jwt(params?: string | core.$ZodJWTParams): ZodJWT { + return core._jwt(ZodJWT, params); +} + +// ZodCustomStringFormat +export interface ZodCustomStringFormat + extends ZodStringFormat, + core.$ZodCustomStringFormat { + _zod: core.$ZodCustomStringFormatInternals; + "~standard": ZodStandardSchemaWithJSON; +} +export const ZodCustomStringFormat: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodCustomStringFormat", + (inst, def) => { + // ZodStringFormat.init(inst, def); + core.$ZodCustomStringFormat.init(inst, def); + ZodStringFormat.init(inst, def); + } +); +export function stringFormat( + format: Format, + fnOrRegex: ((arg: string) => util.MaybeAsync) | RegExp, + _params: string | core.$ZodStringFormatParams = {} +): ZodCustomStringFormat { + return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params) as any; +} + +export function hostname(_params?: string | core.$ZodStringFormatParams): ZodCustomStringFormat<"hostname"> { + return core._stringFormat(ZodCustomStringFormat, "hostname", core.regexes.hostname, _params) as any; +} + +export function hex(_params?: string | core.$ZodStringFormatParams): ZodCustomStringFormat<"hex"> { + return core._stringFormat(ZodCustomStringFormat, "hex", core.regexes.hex, _params) as any; +} + +export function hash( + alg: Alg, + params?: { + enc?: Enc; + } & core.$ZodStringFormatParams +): ZodCustomStringFormat<`${Alg}_${Enc}`> { + const enc = params?.enc ?? "hex"; + const format = `${alg}_${enc}` as const; + const regex = core.regexes[format as keyof typeof core.regexes] as RegExp; + if (!regex) throw new Error(`Unrecognized hash format: ${format}`); + return core._stringFormat(ZodCustomStringFormat, format, regex, params) as any; +} + +// ZodNumber +export interface _ZodNumber + extends _ZodType { + gt(value: number, params?: string | core.$ZodCheckGreaterThanParams): this; + /** Identical to .min() */ + gte(value: number, params?: string | core.$ZodCheckGreaterThanParams): this; + min(value: number, params?: string | core.$ZodCheckGreaterThanParams): this; + lt(value: number, params?: string | core.$ZodCheckLessThanParams): this; + /** Identical to .max() */ + lte(value: number, params?: string | core.$ZodCheckLessThanParams): this; + max(value: number, params?: string | core.$ZodCheckLessThanParams): this; + /** Consider `z.int()` instead. This API is considered *legacy*; it will never be removed but a better alternative exists. */ + int(params?: string | core.$ZodCheckNumberFormatParams): this; + /** @deprecated This is now identical to `.int()`. Only numbers in the safe integer range are accepted. */ + safe(params?: string | core.$ZodCheckNumberFormatParams): this; + positive(params?: string | core.$ZodCheckGreaterThanParams): this; + nonnegative(params?: string | core.$ZodCheckGreaterThanParams): this; + negative(params?: string | core.$ZodCheckLessThanParams): this; + nonpositive(params?: string | core.$ZodCheckLessThanParams): this; + multipleOf(value: number, params?: string | core.$ZodCheckMultipleOfParams): this; + /** @deprecated Use `.multipleOf()` instead. */ + step(value: number, params?: string | core.$ZodCheckMultipleOfParams): this; + + /** @deprecated In v4 and later, z.number() does not allow infinite values by default. This is a no-op. */ + finite(params?: unknown): this; + + minValue: number | null; + maxValue: number | null; + /** @deprecated Check the `format` property instead. */ + isInt: boolean; + /** @deprecated Number schemas no longer accept infinite values, so this always returns `true`. */ + isFinite: boolean; + format: string | null; +} + +export interface ZodNumber extends _ZodNumber> {} + +export const ZodNumber: core.$constructor = /*@__PURE__*/ core.$constructor("ZodNumber", (inst, def) => { + core.$ZodNumber.init(inst, def); + + ZodType.init(inst, def); + + inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params); + + inst.gt = (value, params) => inst.check(checks.gt(value, params)); + inst.gte = (value, params) => inst.check(checks.gte(value, params)); + inst.min = (value, params) => inst.check(checks.gte(value, params)); + inst.lt = (value, params) => inst.check(checks.lt(value, params)); + inst.lte = (value, params) => inst.check(checks.lte(value, params)); + inst.max = (value, params) => inst.check(checks.lte(value, params)); + inst.int = (params) => inst.check(int(params)); + inst.safe = (params) => inst.check(int(params)); + inst.positive = (params) => inst.check(checks.gt(0, params)); + inst.nonnegative = (params) => inst.check(checks.gte(0, params)); + inst.negative = (params) => inst.check(checks.lt(0, params)); + inst.nonpositive = (params) => inst.check(checks.lte(0, params)); + inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params)); + inst.step = (value, params) => inst.check(checks.multipleOf(value, params)); + + // inst.finite = (params) => inst.check(core.finite(params)); + inst.finite = () => inst; + + const bag = inst._zod.bag; + inst.minValue = + Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null; + inst.maxValue = + Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null; + inst.isInt = (bag.format ?? "").includes("int") || Number.isSafeInteger(bag.multipleOf ?? 0.5); + inst.isFinite = true; + inst.format = bag.format ?? null; +}); + +export function number(params?: string | core.$ZodNumberParams): ZodNumber { + return core._number(ZodNumber, params) as any; +} + +// ZodNumberFormat +export interface ZodNumberFormat extends ZodNumber { + _zod: core.$ZodNumberFormatInternals; +} +export const ZodNumberFormat: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodNumberFormat", + (inst, def) => { + core.$ZodNumberFormat.init(inst, def); + ZodNumber.init(inst, def); + } +); + +// int +export interface ZodInt extends ZodNumberFormat {} +export function int(params?: string | core.$ZodCheckNumberFormatParams): ZodInt { + return core._int(ZodNumberFormat, params); +} + +// float32 +export interface ZodFloat32 extends ZodNumberFormat {} +export function float32(params?: string | core.$ZodCheckNumberFormatParams): ZodFloat32 { + return core._float32(ZodNumberFormat, params); +} + +// float64 +export interface ZodFloat64 extends ZodNumberFormat {} +export function float64(params?: string | core.$ZodCheckNumberFormatParams): ZodFloat64 { + return core._float64(ZodNumberFormat, params); +} + +// int32 +export interface ZodInt32 extends ZodNumberFormat {} +export function int32(params?: string | core.$ZodCheckNumberFormatParams): ZodInt32 { + return core._int32(ZodNumberFormat, params); +} + +// uint32 +export interface ZodUInt32 extends ZodNumberFormat {} +export function uint32(params?: string | core.$ZodCheckNumberFormatParams): ZodUInt32 { + return core._uint32(ZodNumberFormat, params); +} + +// boolean +export interface _ZodBoolean extends _ZodType {} +export interface ZodBoolean extends _ZodBoolean> {} +export const ZodBoolean: core.$constructor = /*@__PURE__*/ core.$constructor("ZodBoolean", (inst, def) => { + core.$ZodBoolean.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params); +}); + +export function boolean(params?: string | core.$ZodBooleanParams): ZodBoolean { + return core._boolean(ZodBoolean, params) as any; +} + +// bigint +export interface _ZodBigInt extends _ZodType { + gte(value: bigint, params?: string | core.$ZodCheckGreaterThanParams): this; + /** Alias of `.gte()` */ + min(value: bigint, params?: string | core.$ZodCheckGreaterThanParams): this; + gt(value: bigint, params?: string | core.$ZodCheckGreaterThanParams): this; + /** Alias of `.lte()` */ + lte(value: bigint, params?: string | core.$ZodCheckLessThanParams): this; + max(value: bigint, params?: string | core.$ZodCheckLessThanParams): this; + lt(value: bigint, params?: string | core.$ZodCheckLessThanParams): this; + positive(params?: string | core.$ZodCheckGreaterThanParams): this; + negative(params?: string | core.$ZodCheckLessThanParams): this; + nonpositive(params?: string | core.$ZodCheckLessThanParams): this; + nonnegative(params?: string | core.$ZodCheckGreaterThanParams): this; + multipleOf(value: bigint, params?: string | core.$ZodCheckMultipleOfParams): this; + + minValue: bigint | null; + maxValue: bigint | null; + format: string | null; +} + +export interface ZodBigInt extends _ZodBigInt> {} +export const ZodBigInt: core.$constructor = /*@__PURE__*/ core.$constructor("ZodBigInt", (inst, def) => { + core.$ZodBigInt.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params); + + inst.gte = (value, params) => inst.check(checks.gte(value, params)); + inst.min = (value, params) => inst.check(checks.gte(value, params)); + inst.gt = (value, params) => inst.check(checks.gt(value, params)); + inst.gte = (value, params) => inst.check(checks.gte(value, params)); + inst.min = (value, params) => inst.check(checks.gte(value, params)); + inst.lt = (value, params) => inst.check(checks.lt(value, params)); + inst.lte = (value, params) => inst.check(checks.lte(value, params)); + inst.max = (value, params) => inst.check(checks.lte(value, params)); + inst.positive = (params) => inst.check(checks.gt(BigInt(0), params)); + inst.negative = (params) => inst.check(checks.lt(BigInt(0), params)); + inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params)); + inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params)); + inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params)); + + const bag = inst._zod.bag; + inst.minValue = bag.minimum ?? null; + inst.maxValue = bag.maximum ?? null; + inst.format = bag.format ?? null; +}); + +export function bigint(params?: string | core.$ZodBigIntParams): ZodBigInt { + return core._bigint(ZodBigInt, params) as any; +} +// bigint formats + +// ZodBigIntFormat +export interface ZodBigIntFormat extends ZodBigInt { + _zod: core.$ZodBigIntFormatInternals; +} +export const ZodBigIntFormat: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodBigIntFormat", + (inst, def) => { + core.$ZodBigIntFormat.init(inst, def); + ZodBigInt.init(inst, def); + } +); + +// int64 +export function int64(params?: string | core.$ZodBigIntFormatParams): ZodBigIntFormat { + return core._int64(ZodBigIntFormat, params); +} + +// uint64 +export function uint64(params?: string | core.$ZodBigIntFormatParams): ZodBigIntFormat { + return core._uint64(ZodBigIntFormat, params); +} + +// symbol +export interface ZodSymbol extends _ZodType {} +export const ZodSymbol: core.$constructor = /*@__PURE__*/ core.$constructor("ZodSymbol", (inst, def) => { + core.$ZodSymbol.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params); +}); + +export function symbol(params?: string | core.$ZodSymbolParams): ZodSymbol { + return core._symbol(ZodSymbol, params); +} + +// ZodUndefined +export interface ZodUndefined extends _ZodType {} +export const ZodUndefined: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodUndefined", + (inst, def) => { + core.$ZodUndefined.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params); + } +); + +function _undefined(params?: string | core.$ZodUndefinedParams): ZodUndefined { + return core._undefined(ZodUndefined, params); +} +export { _undefined as undefined }; + +// ZodNull +export interface ZodNull extends _ZodType {} +export const ZodNull: core.$constructor = /*@__PURE__*/ core.$constructor("ZodNull", (inst, def) => { + core.$ZodNull.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params); +}); + +function _null(params?: string | core.$ZodNullParams): ZodNull { + return core._null(ZodNull, params); +} +export { _null as null }; + +// ZodAny +export interface ZodAny extends _ZodType {} +export const ZodAny: core.$constructor = /*@__PURE__*/ core.$constructor("ZodAny", (inst, def) => { + core.$ZodAny.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params); +}); + +export function any(): ZodAny { + return core._any(ZodAny); +} + +// ZodUnknown +export interface ZodUnknown extends _ZodType {} +export const ZodUnknown: core.$constructor = /*@__PURE__*/ core.$constructor("ZodUnknown", (inst, def) => { + core.$ZodUnknown.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params); +}); + +export function unknown(): ZodUnknown { + return core._unknown(ZodUnknown); +} + +// ZodNever +export interface ZodNever extends _ZodType {} +export const ZodNever: core.$constructor = /*@__PURE__*/ core.$constructor("ZodNever", (inst, def) => { + core.$ZodNever.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params); +}); + +export function never(params?: string | core.$ZodNeverParams): ZodNever { + return core._never(ZodNever, params); +} + +// ZodVoid +export interface ZodVoid extends _ZodType {} +export const ZodVoid: core.$constructor = /*@__PURE__*/ core.$constructor("ZodVoid", (inst, def) => { + core.$ZodVoid.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params); +}); + +function _void(params?: string | core.$ZodVoidParams): ZodVoid { + return core._void(ZodVoid, params); +} +export { _void as void }; + +// ZodDate +export interface _ZodDate extends _ZodType { + min(value: number | Date, params?: string | core.$ZodCheckGreaterThanParams): this; + max(value: number | Date, params?: string | core.$ZodCheckLessThanParams): this; + + /** @deprecated Not recommended. */ + minDate: Date | null; + /** @deprecated Not recommended. */ + maxDate: Date | null; +} + +export interface ZodDate extends _ZodDate> {} +export const ZodDate: core.$constructor = /*@__PURE__*/ core.$constructor("ZodDate", (inst, def) => { + core.$ZodDate.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params); + + inst.min = (value, params) => inst.check(checks.gte(value, params)); + inst.max = (value, params) => inst.check(checks.lte(value, params)); + + const c = inst._zod.bag; + inst.minDate = c.minimum ? new Date(c.minimum) : null; + inst.maxDate = c.maximum ? new Date(c.maximum) : null; +}); + +export function date(params?: string | core.$ZodDateParams): ZodDate { + return core._date(ZodDate, params); +} + +// ZodArray +export interface ZodArray + extends _ZodType>, + core.$ZodArray { + element: T; + min(minLength: number, params?: string | core.$ZodCheckMinLengthParams): this; + nonempty(params?: string | core.$ZodCheckMinLengthParams): this; + max(maxLength: number, params?: string | core.$ZodCheckMaxLengthParams): this; + length(len: number, params?: string | core.$ZodCheckLengthEqualsParams): this; + + unwrap(): T; + "~standard": ZodStandardSchemaWithJSON; +} +export const ZodArray: core.$constructor = /*@__PURE__*/ core.$constructor("ZodArray", (inst, def) => { + core.$ZodArray.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params); + + inst.element = def.element as any; + inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params)); + inst.nonempty = (params) => inst.check(checks.minLength(1, params)); + inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params)); + inst.length = (len, params) => inst.check(checks.length(len, params)); + + inst.unwrap = () => inst.element; +}); + +export function array(element: T, params?: string | core.$ZodArrayParams): ZodArray { + return core._array(ZodArray, element as any, params) as any; +} + +// .keyof +export function keyof(schema: T): ZodEnum> { + const shape = schema._zod.def.shape; + return _enum(Object.keys(shape)) as any; +} + +// ZodObject + +export type SafeExtendShape = { + [K in keyof Ext]: K extends keyof Base + ? core.output extends core.output + ? core.input extends core.input + ? Ext[K] + : never + : never + : Ext[K]; +}; + +export interface ZodObject< + /** @ts-ignore Cast variance */ + out Shape extends core.$ZodShape = core.$ZodLooseShape, + out Config extends core.$ZodObjectConfig = core.$strip, +> extends _ZodType>, + core.$ZodObject { + "~standard": ZodStandardSchemaWithJSON; + shape: Shape; + + keyof(): ZodEnum>; + /** Define a schema to validate all unrecognized keys. This overrides the existing strict/loose behavior. */ + catchall(schema: T): ZodObject>; + + /** @deprecated Use `z.looseObject()` or `.loose()` instead. */ + passthrough(): ZodObject; + /** Consider `z.looseObject(A.shape)` instead */ + loose(): ZodObject; + + /** Consider `z.strictObject(A.shape)` instead */ + strict(): ZodObject; + + /** This is the default behavior. This method call is likely unnecessary. */ + strip(): ZodObject; + + extend(shape: U): ZodObject, Config>; + + safeExtend( + shape: SafeExtendShape & Partial> + ): ZodObject, Config>; + + /** + * @deprecated Use [`A.extend(B.shape)`](https://zod.dev/api?id=extend) instead. + */ + merge(other: U): ZodObject, U["_zod"]["config"]>; + + pick>( + mask: M & Record, never> + ): ZodObject>>, Config>; + + omit>( + mask: M & Record, never> + ): ZodObject>>, Config>; + + partial(): ZodObject< + { + [k in keyof Shape]: ZodOptional; + }, + Config + >; + partial>( + mask: M & Record, never> + ): ZodObject< + { + [k in keyof Shape]: k extends keyof M + ? // Shape[k] extends OptionalInSchema + // ? Shape[k] + // : + ZodOptional + : Shape[k]; + }, + Config + >; + + // required + required(): ZodObject< + { + [k in keyof Shape]: ZodNonOptional; + }, + Config + >; + required>( + mask: M & Record, never> + ): ZodObject< + { + [k in keyof Shape]: k extends keyof M ? ZodNonOptional : Shape[k]; + }, + Config + >; +} + +export const ZodObject: core.$constructor = /*@__PURE__*/ core.$constructor("ZodObject", (inst, def) => { + core.$ZodObjectJIT.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params); + + util.defineLazy(inst, "shape", () => { + return def.shape; + }); + + inst.keyof = () => _enum(Object.keys(inst._zod.def.shape)) as any; + inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall as any as core.$ZodType }) as any; + inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() }); + inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() }); + inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() }); + inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined }); + + inst.extend = (incoming: any) => { + return util.extend(inst, incoming); + }; + inst.safeExtend = (incoming: any) => { + return util.safeExtend(inst, incoming); + }; + inst.merge = (other) => util.merge(inst, other); + inst.pick = (mask) => util.pick(inst, mask); + inst.omit = (mask) => util.omit(inst, mask); + inst.partial = (...args: any[]) => util.partial(ZodOptional, inst, args[0] as object); + inst.required = (...args: any[]) => util.required(ZodNonOptional, inst, args[0] as object); +}); + +export function object>>( + shape?: T, + params?: string | core.$ZodObjectParams +): ZodObject, core.$strip> { + const def: core.$ZodObjectDef = { + type: "object", + shape: shape ?? {}, + ...util.normalizeParams(params), + }; + return new ZodObject(def) as any; +} + +// strictObject + +export function strictObject( + shape: T, + params?: string | core.$ZodObjectParams +): ZodObject { + return new ZodObject({ + type: "object", + shape, + catchall: never(), + ...util.normalizeParams(params), + }) as any; +} + +// looseObject + +export function looseObject( + shape: T, + params?: string | core.$ZodObjectParams +): ZodObject { + return new ZodObject({ + type: "object", + shape, + catchall: unknown(), + ...util.normalizeParams(params), + }) as any; +} + +// ZodUnion +export interface ZodUnion + extends _ZodType>, + core.$ZodUnion { + "~standard": ZodStandardSchemaWithJSON; + options: T; +} +export const ZodUnion: core.$constructor = /*@__PURE__*/ core.$constructor("ZodUnion", (inst, def) => { + core.$ZodUnion.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params); + inst.options = def.options; +}); + +export function union( + options: T, + params?: string | core.$ZodUnionParams +): ZodUnion { + return new ZodUnion({ + type: "union", + options: options as any as core.$ZodType[], + ...util.normalizeParams(params), + }) as any; +} + +// ZodXor +export interface ZodXor + extends _ZodType>, + core.$ZodXor { + "~standard": ZodStandardSchemaWithJSON; + options: T; +} +export const ZodXor: core.$constructor = /*@__PURE__*/ core.$constructor("ZodXor", (inst, def) => { + ZodUnion.init(inst, def); + core.$ZodXor.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params); + inst.options = def.options; +}); + +/** Creates an exclusive union (XOR) where exactly one option must match. + * Unlike regular unions that succeed when any option matches, xor fails if + * zero or more than one option matches the input. */ +export function xor( + options: T, + params?: string | core.$ZodXorParams +): ZodXor { + return new ZodXor({ + type: "union", + options: options as any as core.$ZodType[], + inclusive: false, + ...util.normalizeParams(params), + }) as any; +} + +// ZodDiscriminatedUnion +export interface ZodDiscriminatedUnion< + Options extends readonly core.SomeType[] = readonly core.$ZodType[], + Disc extends string = string, +> extends ZodUnion, + core.$ZodDiscriminatedUnion { + "~standard": ZodStandardSchemaWithJSON; + _zod: core.$ZodDiscriminatedUnionInternals; + def: core.$ZodDiscriminatedUnionDef; +} +export const ZodDiscriminatedUnion: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodDiscriminatedUnion", + (inst, def) => { + ZodUnion.init(inst, def); + core.$ZodDiscriminatedUnion.init(inst, def); + } +); + +export function discriminatedUnion< + Types extends readonly [core.$ZodTypeDiscriminable, ...core.$ZodTypeDiscriminable[]], + Disc extends string, +>( + discriminator: Disc, + options: Types, + params?: string | core.$ZodDiscriminatedUnionParams +): ZodDiscriminatedUnion { + // const [options, params] = args; + return new ZodDiscriminatedUnion({ + type: "union", + options, + discriminator, + ...util.normalizeParams(params), + }) as any; +} + +// ZodIntersection +export interface ZodIntersection + extends _ZodType>, + core.$ZodIntersection { + "~standard": ZodStandardSchemaWithJSON; +} +export const ZodIntersection: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodIntersection", + (inst, def) => { + core.$ZodIntersection.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params); + } +); + +export function intersection( + left: T, + right: U +): ZodIntersection { + return new ZodIntersection({ + type: "intersection", + left: left as any as core.$ZodType, + right: right as any as core.$ZodType, + }) as any; +} + +// ZodTuple +export interface ZodTuple< + T extends util.TupleItems = readonly core.$ZodType[], + Rest extends core.SomeType | null = core.$ZodType | null, +> extends _ZodType>, + core.$ZodTuple { + "~standard": ZodStandardSchemaWithJSON; + rest(rest: Rest): ZodTuple; +} +export const ZodTuple: core.$constructor = /*@__PURE__*/ core.$constructor("ZodTuple", (inst, def) => { + core.$ZodTuple.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params); + inst.rest = (rest) => + inst.clone({ + ...inst._zod.def, + rest: rest as any as core.$ZodType, + }) as any; +}); + +export function tuple( + items: T, + params?: string | core.$ZodTupleParams +): ZodTuple; +export function tuple( + items: T, + rest: Rest, + params?: string | core.$ZodTupleParams +): ZodTuple; +export function tuple(items: [], params?: string | core.$ZodTupleParams): ZodTuple<[], null>; +export function tuple( + items: core.SomeType[], + _paramsOrRest?: string | core.$ZodTupleParams | core.SomeType, + _params?: string | core.$ZodTupleParams +) { + const hasRest = _paramsOrRest instanceof core.$ZodType; + const params = hasRest ? _params : _paramsOrRest; + const rest = hasRest ? _paramsOrRest : null; + return new ZodTuple({ + type: "tuple", + items: items as any as core.$ZodType[], + rest, + ...util.normalizeParams(params), + }); +} + +// ZodRecord +export interface ZodRecord< + Key extends core.$ZodRecordKey = core.$ZodRecordKey, + Value extends core.SomeType = core.$ZodType, +> extends _ZodType>, + core.$ZodRecord { + "~standard": ZodStandardSchemaWithJSON; + keyType: Key; + valueType: Value; +} +export const ZodRecord: core.$constructor = /*@__PURE__*/ core.$constructor("ZodRecord", (inst, def) => { + core.$ZodRecord.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params); + + inst.keyType = def.keyType; + inst.valueType = def.valueType; +}); + +export function record( + keyType: Key, + valueType: Value, + params?: string | core.$ZodRecordParams +): ZodRecord { + return new ZodRecord({ + type: "record", + keyType, + valueType: valueType as any as core.$ZodType, + ...util.normalizeParams(params), + }) as any; +} +// type alksjf = core.output; +export function partialRecord( + keyType: Key, + valueType: Value, + params?: string | core.$ZodRecordParams +): ZodRecord { + const k = core.clone(keyType); + k._zod.values = undefined; + return new ZodRecord({ + type: "record", + keyType: k, + valueType: valueType as any, + ...util.normalizeParams(params), + }) as any; +} + +export function looseRecord( + keyType: Key, + valueType: Value, + params?: string | core.$ZodRecordParams +): ZodRecord { + return new ZodRecord({ + type: "record", + keyType, + valueType: valueType as any as core.$ZodType, + mode: "loose", + ...util.normalizeParams(params), + }) as any; +} + +// ZodMap +export interface ZodMap + extends _ZodType>, + core.$ZodMap { + "~standard": ZodStandardSchemaWithJSON; + keyType: Key; + valueType: Value; + min(minSize: number, params?: string | core.$ZodCheckMinSizeParams): this; + nonempty(params?: string | core.$ZodCheckMinSizeParams): this; + max(maxSize: number, params?: string | core.$ZodCheckMaxSizeParams): this; + size(size: number, params?: string | core.$ZodCheckSizeEqualsParams): this; +} +export const ZodMap: core.$constructor = /*@__PURE__*/ core.$constructor("ZodMap", (inst, def) => { + core.$ZodMap.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params); + inst.keyType = def.keyType; + inst.valueType = def.valueType; + inst.min = (...args) => inst.check(core._minSize(...args)); + inst.nonempty = (params) => inst.check(core._minSize(1, params)); + inst.max = (...args) => inst.check(core._maxSize(...args)); + inst.size = (...args) => inst.check(core._size(...args)); +}); + +export function map( + keyType: Key, + valueType: Value, + params?: string | core.$ZodMapParams +): ZodMap { + return new ZodMap({ + type: "map", + keyType: keyType as any as core.$ZodType, + valueType: valueType as any as core.$ZodType, + ...util.normalizeParams(params), + }) as any; +} + +// ZodSet +export interface ZodSet + extends _ZodType>, + core.$ZodSet { + "~standard": ZodStandardSchemaWithJSON; + min(minSize: number, params?: string | core.$ZodCheckMinSizeParams): this; + nonempty(params?: string | core.$ZodCheckMinSizeParams): this; + max(maxSize: number, params?: string | core.$ZodCheckMaxSizeParams): this; + size(size: number, params?: string | core.$ZodCheckSizeEqualsParams): this; +} +export const ZodSet: core.$constructor = /*@__PURE__*/ core.$constructor("ZodSet", (inst, def) => { + core.$ZodSet.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params); + + inst.min = (...args) => inst.check(core._minSize(...args)); + inst.nonempty = (params) => inst.check(core._minSize(1, params)); + inst.max = (...args) => inst.check(core._maxSize(...args)); + inst.size = (...args) => inst.check(core._size(...args)); +}); + +export function set( + valueType: Value, + params?: string | core.$ZodSetParams +): ZodSet { + return new ZodSet({ + type: "set", + valueType: valueType as any as core.$ZodType, + ...util.normalizeParams(params), + }) as any; +} + +// ZodEnum +export interface ZodEnum< + /** @ts-ignore Cast variance */ + out T extends util.EnumLike = util.EnumLike, +> extends _ZodType>, + core.$ZodEnum { + "~standard": ZodStandardSchemaWithJSON; + enum: T; + options: Array; + + extract( + values: U, + params?: string | core.$ZodEnumParams + ): ZodEnum>>; + exclude( + values: U, + params?: string | core.$ZodEnumParams + ): ZodEnum>>; +} +export const ZodEnum: core.$constructor = /*@__PURE__*/ core.$constructor("ZodEnum", (inst, def) => { + core.$ZodEnum.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params); + + inst.enum = def.entries; + inst.options = Object.values(def.entries); + + const keys = new Set(Object.keys(def.entries)); + + inst.extract = (values, params) => { + const newEntries: Record = {}; + for (const value of values) { + if (keys.has(value)) { + newEntries[value] = def.entries[value]; + } else throw new Error(`Key ${value} not found in enum`); + } + return new ZodEnum({ + ...def, + checks: [], + ...util.normalizeParams(params), + entries: newEntries, + }) as any; + }; + + inst.exclude = (values, params) => { + const newEntries: Record = { ...def.entries }; + for (const value of values) { + if (keys.has(value)) { + delete newEntries[value]; + } else throw new Error(`Key ${value} not found in enum`); + } + return new ZodEnum({ + ...def, + checks: [], + ...util.normalizeParams(params), + entries: newEntries, + }) as any; + }; +}); + +function _enum( + values: T, + params?: string | core.$ZodEnumParams +): ZodEnum>; +function _enum(entries: T, params?: string | core.$ZodEnumParams): ZodEnum; +function _enum(values: any, params?: string | core.$ZodEnumParams) { + const entries: any = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values; + + return new ZodEnum({ + type: "enum", + entries, + ...util.normalizeParams(params), + }) as any; +} +export { _enum as enum }; + +/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead. + * + * ```ts + * enum Colors { red, green, blue } + * z.enum(Colors); + * ``` + */ +export function nativeEnum(entries: T, params?: string | core.$ZodEnumParams): ZodEnum { + return new ZodEnum({ + type: "enum", + entries, + ...util.normalizeParams(params), + }) as any as ZodEnum; +} + +// ZodLiteral +export interface ZodLiteral + extends _ZodType>, + core.$ZodLiteral { + "~standard": ZodStandardSchemaWithJSON; + values: Set; + /** @legacy Use `.values` instead. Accessing this property will throw an error if the literal accepts multiple values. */ + value: T; +} +export const ZodLiteral: core.$constructor = /*@__PURE__*/ core.$constructor("ZodLiteral", (inst, def) => { + core.$ZodLiteral.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params); + inst.values = new Set(def.values); + Object.defineProperty(inst, "value", { + get() { + if (def.values.length > 1) { + throw new Error("This schema contains multiple valid literal values. Use `.values` instead."); + } + return def.values[0]; + }, + }); +}); + +export function literal>( + value: T, + params?: string | core.$ZodLiteralParams +): ZodLiteral; +export function literal( + value: T, + params?: string | core.$ZodLiteralParams +): ZodLiteral; +export function literal(value: any, params: any) { + return new ZodLiteral({ + type: "literal", + values: Array.isArray(value) ? value : [value], + ...util.normalizeParams(params), + }); +} + +// ZodFile +export interface ZodFile extends _ZodType, core.$ZodFile { + "~standard": ZodStandardSchemaWithJSON; + min(size: number, params?: string | core.$ZodCheckMinSizeParams): this; + max(size: number, params?: string | core.$ZodCheckMaxSizeParams): this; + mime(types: util.MimeTypes | Array, params?: string | core.$ZodCheckMimeTypeParams): this; +} +export const ZodFile: core.$constructor = /*@__PURE__*/ core.$constructor("ZodFile", (inst, def) => { + core.$ZodFile.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params); + + inst.min = (size, params) => inst.check(core._minSize(size, params)); + inst.max = (size, params) => inst.check(core._maxSize(size, params)); + inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params)); +}); + +export function file(params?: string | core.$ZodFileParams): ZodFile { + return core._file(ZodFile, params) as any; +} + +// ZodTransform +export interface ZodTransform + extends _ZodType>, + core.$ZodTransform { + "~standard": ZodStandardSchemaWithJSON; +} +export const ZodTransform: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodTransform", + (inst, def) => { + core.$ZodTransform.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params); + + inst._zod.parse = (payload, _ctx) => { + if (_ctx.direction === "backward") { + throw new core.$ZodEncodeError(inst.constructor.name); + } + + (payload as core.$RefinementCtx).addIssue = (issue) => { + if (typeof issue === "string") { + payload.issues.push(util.issue(issue, payload.value, def)); + } else { + // for Zod 3 backwards compatibility + const _issue = issue as any; + + if (_issue.fatal) _issue.continue = false; + _issue.code ??= "custom"; + _issue.input ??= payload.value; + _issue.inst ??= inst; + // _issue.continue ??= true; + payload.issues.push(util.issue(_issue)); + } + }; + + const output = def.transform(payload.value, payload); + if (output instanceof Promise) { + return output.then((output) => { + payload.value = output; + return payload; + }); + } + payload.value = output; + return payload; + }; + } +); + +export function transform( + fn: (input: I, ctx: core.ParsePayload) => O +): ZodTransform, I> { + return new ZodTransform({ + type: "transform", + transform: fn as any, + }) as any; +} + +// ZodOptional +export interface ZodOptional + extends _ZodType>, + core.$ZodOptional { + "~standard": ZodStandardSchemaWithJSON; + unwrap(): T; +} +export const ZodOptional: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodOptional", + (inst, def) => { + core.$ZodOptional.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params); + + inst.unwrap = () => inst._zod.def.innerType; + } +); + +export function optional(innerType: T): ZodOptional { + return new ZodOptional({ + type: "optional", + innerType: innerType as any as core.$ZodType, + }) as any; +} + +// ZodExactOptional +export interface ZodExactOptional + extends _ZodType>, + core.$ZodExactOptional { + "~standard": ZodStandardSchemaWithJSON; + unwrap(): T; +} +export const ZodExactOptional: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodExactOptional", + (inst, def) => { + core.$ZodExactOptional.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params); + + inst.unwrap = () => inst._zod.def.innerType; + } +); + +export function exactOptional(innerType: T): ZodExactOptional { + return new ZodExactOptional({ + type: "optional", + innerType: innerType as any as core.$ZodType, + }) as any; +} + +// ZodNullable +export interface ZodNullable + extends _ZodType>, + core.$ZodNullable { + "~standard": ZodStandardSchemaWithJSON; + unwrap(): T; +} +export const ZodNullable: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodNullable", + (inst, def) => { + core.$ZodNullable.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params); + + inst.unwrap = () => inst._zod.def.innerType; + } +); + +export function nullable(innerType: T): ZodNullable { + return new ZodNullable({ + type: "nullable", + innerType: innerType as any as core.$ZodType, + }) as any; +} + +// nullish +export function nullish(innerType: T): ZodOptional> { + return optional(nullable(innerType)); +} + +// ZodDefault +export interface ZodDefault + extends _ZodType>, + core.$ZodDefault { + "~standard": ZodStandardSchemaWithJSON; + unwrap(): T; + /** @deprecated Use `.unwrap()` instead. */ + removeDefault(): T; +} +export const ZodDefault: core.$constructor = /*@__PURE__*/ core.$constructor("ZodDefault", (inst, def) => { + core.$ZodDefault.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params); + + inst.unwrap = () => inst._zod.def.innerType; + inst.removeDefault = inst.unwrap; +}); + +export function _default( + innerType: T, + defaultValue: util.NoUndefined> | (() => util.NoUndefined>) +): ZodDefault { + return new ZodDefault({ + type: "default", + innerType: innerType as any as core.$ZodType, + get defaultValue() { + return typeof defaultValue === "function" ? (defaultValue as Function)() : util.shallowClone(defaultValue); + }, + }) as any; +} + +// ZodPrefault +export interface ZodPrefault + extends _ZodType>, + core.$ZodPrefault { + "~standard": ZodStandardSchemaWithJSON; + unwrap(): T; +} +export const ZodPrefault: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodPrefault", + (inst, def) => { + core.$ZodPrefault.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params); + inst.unwrap = () => inst._zod.def.innerType; + } +); + +export function prefault( + innerType: T, + defaultValue: core.input | (() => core.input) +): ZodPrefault { + return new ZodPrefault({ + type: "prefault", + innerType: innerType as any as core.$ZodType, + get defaultValue() { + return typeof defaultValue === "function" ? (defaultValue as Function)() : util.shallowClone(defaultValue); + }, + }) as any; +} + +// ZodNonOptional +export interface ZodNonOptional + extends _ZodType>, + core.$ZodNonOptional { + "~standard": ZodStandardSchemaWithJSON; + unwrap(): T; +} +export const ZodNonOptional: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodNonOptional", + (inst, def) => { + core.$ZodNonOptional.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params); + + inst.unwrap = () => inst._zod.def.innerType; + } +); + +export function nonoptional( + innerType: T, + params?: string | core.$ZodNonOptionalParams +): ZodNonOptional { + return new ZodNonOptional({ + type: "nonoptional", + innerType: innerType as any as core.$ZodType, + ...util.normalizeParams(params), + }) as any; +} + +// ZodSuccess +export interface ZodSuccess + extends _ZodType>, + core.$ZodSuccess { + "~standard": ZodStandardSchemaWithJSON; + unwrap(): T; +} +export const ZodSuccess: core.$constructor = /*@__PURE__*/ core.$constructor("ZodSuccess", (inst, def) => { + core.$ZodSuccess.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params); + + inst.unwrap = () => inst._zod.def.innerType; +}); + +export function success(innerType: T): ZodSuccess { + return new ZodSuccess({ + type: "success", + innerType: innerType as any as core.$ZodType, + }) as any; +} + +// ZodCatch +export interface ZodCatch + extends _ZodType>, + core.$ZodCatch { + "~standard": ZodStandardSchemaWithJSON; + unwrap(): T; + /** @deprecated Use `.unwrap()` instead. */ + removeCatch(): T; +} +export const ZodCatch: core.$constructor = /*@__PURE__*/ core.$constructor("ZodCatch", (inst, def) => { + core.$ZodCatch.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params); + + inst.unwrap = () => inst._zod.def.innerType; + inst.removeCatch = inst.unwrap; +}); + +function _catch( + innerType: T, + catchValue: core.output | ((ctx: core.$ZodCatchCtx) => core.output) +): ZodCatch { + return new ZodCatch({ + type: "catch", + innerType: innerType as any as core.$ZodType, + catchValue: (typeof catchValue === "function" ? catchValue : () => catchValue) as ( + ctx: core.$ZodCatchCtx + ) => core.output, + }) as any; +} +export { _catch as catch }; + +// ZodNaN +export interface ZodNaN extends _ZodType, core.$ZodNaN { + "~standard": ZodStandardSchemaWithJSON; +} +export const ZodNaN: core.$constructor = /*@__PURE__*/ core.$constructor("ZodNaN", (inst, def) => { + core.$ZodNaN.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params); +}); + +export function nan(params?: string | core.$ZodNaNParams): ZodNaN { + return core._nan(ZodNaN, params); +} + +// ZodPipe +export interface ZodPipe + extends _ZodType>, + core.$ZodPipe { + "~standard": ZodStandardSchemaWithJSON; + in: A; + out: B; +} +export const ZodPipe: core.$constructor = /*@__PURE__*/ core.$constructor("ZodPipe", (inst, def) => { + core.$ZodPipe.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params); + + inst.in = def.in; + inst.out = def.out; +}); + +export function pipe< + const A extends core.SomeType, + B extends core.$ZodType> = core.$ZodType>, +>(in_: A, out: B | core.$ZodType>): ZodPipe; +export function pipe(in_: core.SomeType, out: core.SomeType) { + return new ZodPipe({ + type: "pipe", + in: in_ as unknown as core.$ZodType, + out: out as unknown as core.$ZodType, + // ...util.normalizeParams(params), + }); +} + +// ZodCodec +export interface ZodCodec + extends ZodPipe, + core.$ZodCodec { + "~standard": ZodStandardSchemaWithJSON; + _zod: core.$ZodCodecInternals; + def: core.$ZodCodecDef; +} +export const ZodCodec: core.$constructor = /*@__PURE__*/ core.$constructor("ZodCodec", (inst, def) => { + ZodPipe.init(inst, def); + core.$ZodCodec.init(inst, def); +}); + +export function codec( + in_: A, + out: B, + params: { + decode: (value: core.output, payload: core.ParsePayload>) => core.util.MaybeAsync>; + encode: (value: core.input, payload: core.ParsePayload>) => core.util.MaybeAsync>; + } +): ZodCodec { + return new ZodCodec({ + type: "pipe", + in: in_ as any as core.$ZodType, + out: out as any as core.$ZodType, + transform: params.decode as any, + reverseTransform: params.encode as any, + }) as any; +} + +// ZodReadonly +export interface ZodReadonly + extends _ZodType>, + core.$ZodReadonly { + "~standard": ZodStandardSchemaWithJSON; + unwrap(): T; +} +export const ZodReadonly: core.$constructor = /*@__PURE__*/ core.$constructor( + "ZodReadonly", + (inst, def) => { + core.$ZodReadonly.init(inst, def); + ZodType.init(inst, def); + inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params); + + inst.unwrap = () => inst._zod.def.innerType; + } +); + +export function readonly(innerType: T): ZodReadonly { + return new ZodReadonly({ + type: "readonly", + innerType: innerType as any as core.$ZodType, + }) as any; +} + +// ZodTemplateLiteral +export interface ZodTemplateLiteral

tE+ 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 jB5we}RRrh3aCz(s*e(?|P`77Ke_v8KzpG?y^ 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

n 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≪Yz>8GKys;bS{|EO7Y*jm4)=0=snv?Hpf1 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 l}^XR=zZh!Y+V=kvnhc-`r5E?*g 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

tE+ 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 jB5we}RRrh3aCz(s*e(?|P`77Ke_v8KzpG?y^ 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

n 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≪Yz>8GKys;bS{|EO7Y*jm4)=0=snv?Hpf1 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 l}^XR=zZh!Y+V=kvnhc-`r5E?*g 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