From 4e920bcf2d330a8dd0821e69da1e746e4a4e4e18 Mon Sep 17 00:00:00 2001 From: Mathieu Virbel Date: Thu, 2 Jan 2025 19:57:07 -0600 Subject: [PATCH 1/2] feat(openai): support for text-to-speech Parse the result to read the file and extract audio length Support works for wav, mp3, opus, aac. Does not work for flac and pcm yet. --- pyproject.toml | 1 + scope3ai/tracers/openai/instrument.py | 16 +- scope3ai/tracers/openai/text_to_speech.py | 121 +++ .../test_openai_tts_wrapper[tts-1-aac].yaml | 167 +++++ ...test_openai_tts_wrapper[tts-1-hd-aac].yaml | 162 ++++ ...test_openai_tts_wrapper[tts-1-hd-mp3].yaml | 362 +++++++++ ...est_openai_tts_wrapper[tts-1-hd-opus].yaml | 165 +++++ ...test_openai_tts_wrapper[tts-1-hd-wav].yaml | 683 +++++++++++++++++ .../test_openai_tts_wrapper[tts-1-mp3].yaml | 685 +++++++++++++++++ .../test_openai_tts_wrapper[tts-1-opus].yaml | 169 +++++ .../test_openai_tts_wrapper[tts-1-wav].yaml | 693 ++++++++++++++++++ tests/test_openai_tts_tracer.py | 24 + uv.lock | 15 +- 13 files changed, 3261 insertions(+), 2 deletions(-) create mode 100644 scope3ai/tracers/openai/text_to_speech.py create mode 100644 tests/cassettes/test_openai_tts_wrapper[tts-1-aac].yaml create mode 100644 tests/cassettes/test_openai_tts_wrapper[tts-1-hd-aac].yaml create mode 100644 tests/cassettes/test_openai_tts_wrapper[tts-1-hd-mp3].yaml create mode 100644 tests/cassettes/test_openai_tts_wrapper[tts-1-hd-opus].yaml create mode 100644 tests/cassettes/test_openai_tts_wrapper[tts-1-hd-wav].yaml create mode 100644 tests/cassettes/test_openai_tts_wrapper[tts-1-mp3].yaml create mode 100644 tests/cassettes/test_openai_tts_wrapper[tts-1-opus].yaml create mode 100644 tests/cassettes/test_openai_tts_wrapper[tts-1-wav].yaml create mode 100644 tests/test_openai_tts_tracer.py diff --git a/pyproject.toml b/pyproject.toml index 341e059..770f887 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,6 +7,7 @@ requires-python = ">=3.9" dependencies = [ "httpx>=0.27.2", "litellm>=1.53.3", + "mutagen>=1.47.0", "pillow>=11.0.0", "pydantic>=2.10.3", "wrapt>=1.17.0", diff --git a/scope3ai/tracers/openai/instrument.py b/scope3ai/tracers/openai/instrument.py index 72ab94f..b655bc2 100644 --- a/scope3ai/tracers/openai/instrument.py +++ b/scope3ai/tracers/openai/instrument.py @@ -1,6 +1,10 @@ from wrapt import wrap_function_wrapper -from scope3ai.tracers.openai.chat import openai_chat_wrapper, openai_async_chat_wrapper +from .chat import openai_chat_wrapper, openai_async_chat_wrapper +from .text_to_speech import ( + openai_text_to_speech_wrapper, + openai_async_text_to_speech_wrapper, +) class OpenAIInstrumentor: @@ -16,6 +20,16 @@ def __init__(self) -> None: "name": "AsyncCompletions.create", "wrapper": openai_async_chat_wrapper, }, + { + "module": "openai.resources.audio.speech", + "name": "Speech.create", + "wrapper": openai_text_to_speech_wrapper, + }, + { + "module": "openai.resources.audio.speech", + "name": "AsyncSpeech.create", + "wrapper": openai_async_text_to_speech_wrapper, + }, ] def instrument(self) -> None: diff --git a/scope3ai/tracers/openai/text_to_speech.py b/scope3ai/tracers/openai/text_to_speech.py new file mode 100644 index 0000000..b9c7ccd --- /dev/null +++ b/scope3ai/tracers/openai/text_to_speech.py @@ -0,0 +1,121 @@ +import importlib +import io +import logging +import time +from typing import Any, Callable, Optional + +import tiktoken +from openai.resources.audio.speech import AsyncSpeech, Speech, _legacy_response + +from scope3ai.api.types import ImpactRow, Model, Scope3AIContext +from scope3ai.lib import Scope3AI + + +def _lazy_import(module_name: str, class_name: str): + def _imported(): + module = importlib.import_module(module_name) + return getattr(module, class_name) + + return _imported + + +PROVIDER = "openai" +MUTAGEN_MAPPING = { + "mp3": _lazy_import("mutagen.mp3", "MP3"), + "aac": _lazy_import("mutagen.aac", "AAC"), + "opus": _lazy_import("mutagen.oggopus", "OggOpus"), + "flac": _lazy_import("mutagen.flac", "FLAC"), + "wav": _lazy_import("mutagen.wave", "WAVE"), +} + +logger = logging.getLogger(f"scope3ai.tracers.{__name__}") + + +class HttpxBinaryResponseContent(_legacy_response.HttpxBinaryResponseContent): + scope3ai: Optional[Scope3AIContext] = None + + +def _get_audio_duration_from_response( + format: str, response: _legacy_response.HttpxBinaryResponseContent +) -> Optional[float]: + try: + mutagen_cls = MUTAGEN_MAPPING.get(format) + if mutagen_cls is None: + logger.error(f"Unsupported audio format: {format}") + return None + else: + mutagen_file = mutagen_cls()(io.BytesIO(response.content)) + duration = mutagen_file.info.length + except Exception: + import traceback + + traceback.print_exc() + logger.exception("Failed to estimate audio duration") + return None + + if format == "wav": + # bug in mutagen, it returns high number for wav files + duration = len(response.content) * 8 / mutagen_file.info.bitrate + + return duration + + +def openai_text_to_speech_wrapper( + wrapped: Callable, instance: Speech, args: Any, kwargs: Any +) -> _legacy_response.HttpxBinaryResponseContent: + timer_start = time.perf_counter() + response = wrapped(*args, **kwargs) + request_latency = (time.perf_counter() - timer_start) * 1000 + + # try getting duration + response_format = kwargs["response_format"] + duration = _get_audio_duration_from_response(response_format, response) + + compute_time = response.response.headers.get("openai-processing-ms") + content_length = response.response.headers.get("content-length") + if compute_time: + request_latency = float(compute_time) + if content_length: + input_tokens = int(content_length) + + model_requested = kwargs["model"] + encoder = tiktoken.get_encoding("cl100k_base") + input_tokens = len(encoder.encode(kwargs["input"])) + + scope3_row = ImpactRow( + model=Model(id=model_requested), + input_tokens=input_tokens, + request_duration_ms=request_latency, + provider=PROVIDER, + audio_output_seconds=duration, + ) + + scope3_ctx = Scope3AI.get_instance().submit_impact(scope3_row) + + wrapped_response = HttpxBinaryResponseContent( + response=response.response, + ) + wrapped_response.scope3ai = scope3_ctx + return wrapped_response + + +async def openai_async_text_to_speech_wrapper( + wrapped: Callable, instance: AsyncSpeech, args: Any, kwargs: Any +) -> _legacy_response.HttpxBinaryResponseContent: + timer_start = time.perf_counter() + response = await wrapped(*args, **kwargs) + request_latency = time.perf_counter() - timer_start + + model_requested = kwargs["model"] + + scope3_row = ImpactRow( + model=Model(id=model_requested), + input_tokens=response.usage.prompt_tokens, + output_tokens=response.usage.completion_tokens, + request_duration_ms=request_latency * 1000, + provider=PROVIDER, + ) + + scope3_ctx = Scope3AI.get_instance().submit_impact(scope3_row) + response.scope3ai = scope3_ctx + return response diff --git a/tests/cassettes/test_openai_tts_wrapper[tts-1-aac].yaml b/tests/cassettes/test_openai_tts_wrapper[tts-1-aac].yaml new file mode 100644 index 0000000..c6674c2 --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper[tts-1-aac].yaml @@ -0,0 +1,167 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1","voice":"alloy","response_format":"aac"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '80' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + 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 + fuw8Vzn1PL7jt/9el4PdcHTePSft4/H0/T28 + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf47215e423341-MIA + Connection: + - keep-alive + Content-Type: + - audio/aac + Date: + - Fri, 03 Jan 2025 01:39:56 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=bZwMxXmq00EuL2ggCflE5x1CEi58rtruFkk6Ny86t7o-1735868396-1.0.1.1-5qFQQJ.PxC9ptyDWCvtZzrX1boBbinJLKw1LJ.m8PRzIPImdLpFrjhYbdRZLjRKHWTD_kAT17XKYYtS2v_hQvw; + path=/; expires=Fri, 03-Jan-25 02:09:56 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=rKezzM7uWTX.JsR6W.Hr1iFwttQqVJZAz.rFAEIrq1s-1735868396595-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '663' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-7df576d8b7-9lk8f + x-envoy-upstream-service-time: + - '625' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_0cdb0dcfb7bf711aeebacfe15740f9d2 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_openai_tts_wrapper[tts-1-hd-aac].yaml b/tests/cassettes/test_openai_tts_wrapper[tts-1-hd-aac].yaml new file mode 100644 index 0000000..1d673f9 --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper[tts-1-hd-aac].yaml @@ -0,0 +1,162 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1-hd","voice":"alloy","response_format":"aac"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '83' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + 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 + nR3SAGv/JqfNMBUzBw== + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf474b8a2aa52d-MIA + Connection: + - keep-alive + Content-Type: + - audio/aac + Date: + - Fri, 03 Jan 2025 01:40:04 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=WBtOX62wzncj6vr569qCXSGf1pEnulMxlIxJiLzH02I-1735868404-1.0.1.1-VJIF7N.C5cKbgJDRHUhSoey4hJv.XPyFOM9suHXpo1pvFFRM7HBOK8XQbuzO12erKFcJRs6Gf9Xzx_n51Ud.Jg; + path=/; expires=Fri, 03-Jan-25 02:10:04 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=6wuom0mCYWadA_xIQhlMqzI6GpM1NGHmcm5X3RY4mbM-1735868404134-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '1577' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-6646c6d4d-r86z9 + x-envoy-upstream-service-time: + - '1557' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_246899328524e08e21ad05496c8c7ad7 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_openai_tts_wrapper[tts-1-hd-mp3].yaml b/tests/cassettes/test_openai_tts_wrapper[tts-1-hd-mp3].yaml new file mode 100644 index 0000000..5f8e8e7 --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper[tts-1-hd-mp3].yaml @@ -0,0 +1,362 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1-hd","voice":"alloy","response_format":"mp3"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '83' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + 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 + H0y5XNmCzO4wlCDP2Q2MwMzSh6qNssYCQANSDANLx2GaL1bSPu0sGztoACCEuk00F1yuYNAj9M6g + JiUWrO0sNj9WJP87UZuUOUMw7cZUu5VMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVQakcdh2zG2QscwB + wMSzgs8mCzkvaYRJlFgYlaBioGusDhU3jFMM9AzyEDgsSbU51UhkgJE9dPVQFVnABUd+H/CWBjcc + UJ5gQ5sSlgYZH3gYkLkNrjagDGaugJMzTYlg5gWbmgpLqKBNsqqWxZM0lMVQVlscR6AoDCBXL4JD + IBkwoHRtMizYti4IKBks4ApDSRQoCLOU0ggQk4TOUTYVLlBEa6HeStBhcdaG8yFTdUJKDqgrlRaU + uS12//PkxLljNDkkAdnAAB2PKZJFQK4TEn6uxmoypU0ViUPV3ZcmHcJVS3HCUCRWV1AZdUBBb5Kk + sqWZR9g5aQJAAhOYhkW2Ws8KgLBXqWNABf4tMgCXVRwy5MO13BXaxF3b0Sdpyn9h2W2dZXYZf23G + Z2JNad6PqYoquNAKwqpWIyF0kTkHoYL/IAnOYCkS8he4xgdQGgMYEcoDWFdVuSKzix5hy7mJSJ0U + vUVWXR9OUs6WRRxW0Y2HFyXIXEaWGswKM0JNEwFMw2pFzTEUDFStkDtMOa9BSgSg0DPq4r4FujCB + TEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf47370c134964-MIA + Connection: + - keep-alive + Content-Type: + - audio/mpeg + Date: + - Fri, 03 Jan 2025 01:40:00 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=zaEpTBzk6F3W07bYvaqdYhx.5TXo_2ewWHq4MoUoIgg-1735868400-1.0.1.1-xtSlwLuGVtEHNgjPUnBU996NqXZwzAvQJfOxKsoTxTQ4oCVEL8TEQ1c5PYmmSUjs6ybyUTM2FJq9.coFW5nTBQ; + path=/; expires=Fri, 03-Jan-25 02:10:00 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=eCoProw7Yry1AKoWExdUDoVjsbumB1NTMwTF5MtjEiY-1735868400690-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '1259' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-b8bdd86cf-p5t56 + x-envoy-upstream-service-time: + - '1251' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_22fcf395f92d8896c4e3b89d41c07d50 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_openai_tts_wrapper[tts-1-hd-opus].yaml b/tests/cassettes/test_openai_tts_wrapper[tts-1-hd-opus].yaml new file mode 100644 index 0000000..9ccb9f9 --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper[tts-1-hd-opus].yaml @@ -0,0 +1,165 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1-hd","voice":"alloy","response_format":"opus"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '84' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + T2dnUwACAAAAAAAAAADNbBY0AAAAAJZxeBsBE09wdXNIZWFkAQE4AcBdAAAAAABPZ2dTAAAAAAAA + AAAAAM1sFjQBAAAAN3NhSAP///5PcHVzVGFncw0AAABsaWJvcHVzIDEuMy4xAQAAACYAAABFTkNP + REVSPW9wdXNlbmMgZnJvbSBvcHVzLXRvb2xzIDAuMS4xMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9nZ1MABMh/AAAAAAAA + zWwWNAIAAADgaMfRI2NuYnxqYG1lYGJXVl1tZ3BjZ15kaFleZmZiZExDOkJJOz8vaAHV3C+3r3Ld + wgxeAQ9SpguDupa7iJCxn9jQnklFK+rdMNjpuxIIAx2VnLUkOkCEjDUefDluGIXCqsaxIvlD+vud + 6G3jkLwMDLvZu06cuOjHE0q8kl/emIKrOTWuKEWiaH4VaIqPhb84TMhiO4wfXD4xGBqb9xUblGVz + 6tWEjKRBaXdIgxxU/SZV/j0O9Sf7GeOsmBZWPbqb1904muV5Gxn4xvOyRdlAgZMWWIMs1tfECxT/ + 2cX7qrHAijGiCbFnT3ZOm9hpoc1nHYrbevI7sHhoghsWvtqL/PLEfl89t9v+FGjQa3HhX+lWLGQg + HPA2uR8CaS/2dq9vYbKFrmhBdTfdoG0IOg8H71zIsh47larqeQchswCCs9lwlj6Hp6prXKcPJXlR + oBjvV1iQRsap/Yhqemii7Y+pQ7h6ogyRcsqOF5z4bPFkEJgCv0V68rkpRB27ztVe9hVeTPsbF8Dw + SwEotbtcIVGDBujdsiA2AaC3cimLUzXqvnbU8pk3q4G10RcIOnrdmw64jIoSh2eyrL8yVG6sHB0N + DSNSchj5JG91zT/Q+QRkBhpwrUvJtJpoo863y1q5CORerLcMnda0Q2XS4aeS+ITRQVAJtHB2dFOL + kYoBhISGRTDroYK+d6kIdonJYQXuQbdojSb8mjtw0cZhzUPiYVeW4lKcRLYrwqMVRcXTnRxdmDM1 + blD6TYDIEch4/a3/8ZXQaKPoNi8siVJyPwRQBOXS5vReF+jJhBWrw+iTQsTeGU9dk0nQStHbX8N/ + Q5fL3CT/r2dQxm+BI9clDhxOruZWck+GJssNQ91qXBiJZt5/QHhwNTEKA2CKpXWlVYzopv51aKbT + DJIdXtcioNAoW1FnfSBzL51Y6ZWcC6VxXXl9oWFIjYcIQFnJIGqbpB+1HAeGOkuz5/93o/Bz1T31 + zjUiVxqTYiXmwEmuW/1APtXHTXBpCYKgm75QpUR2AMjirtgKIK7EDZzWmOqR/zUctWis5Pce05J7 + stLhbqZZaQBpZyqo7LXtEe1Ge8k9vvzCFhZLXYlS1C4yALK1G4Fsg1o6Vvg6DU5vqF5FT3QanKGm + R4qnVSV3g2xPSvBEhvYnQ0SOjI3uTFbUzmxo4o58G0q0q1uoaKrvGFO9epR3sOsy6cg7DFdKdI7Q + mHUYFhOSYwPDbXopoegEV/CIe8F/BH76MdsNy7DCY09YMDJDmoysNHZFtHHcGh/njb4Sk+kZlOeI + Jhl8SjPjr1e+YXq9AwIOPvcWaKctgvK+AcC9VqPhWr5KLQezxYzsicFqf/MyVYAV0idCosHoB1Hm + z8yLTewbFwvukmL6Gkh929YOvxN9/LQUpIRmPRnVsByc9KaE+2I3BXttXQUno5sVHncY5lfGwFFn + +g1ooQQOEJ60+e8Qxyr7ZYA3wgA72KX2lM0vTcRgv1b/wlc2V34WtJxQlfWVHQUJ8702DEBwk4WF + C3d/7EPlWIz04oortKPdnG4lo6zgzDZhtNyOaKNlGG9onTShKYJ+k3JrI1x4cJ0tXCwCU5uqdFJD + 8vYbbTskb5PmsHqd6wIqySp/V/+lM8Vd9hMGFdjszSlT80b3suqcm9z3lz7hsLxvL/Vtusgadj9Q + II7Sh2icprYoVA11DuM4Ma2k/hH4UqBrU4ydgmQLnBZskIMV3YC1c57832Sq3+bPQveTRthP/6nV + Np2opvzEZ/gMZIOzd6XU2iNdgPDC6rHwwXRU2qBJ/Owcw6Igvge52WifIJQt8+3Hgrp1i75OehRP + t8nhdfmTMxdYsz8Yp9oX1cLx+8Lm+qWKrm8+XNwp1UshkvvSlwcvMZ1eyj82F0sA4XAsy3+QRHKQ + 0U+dBNp/bIPoj3lMOx0My77gxSpWtyT75HCOqTnEIOhdBZ5ooasqtTWBN5uhTlWyNCJwSDl6Wlev + azZCtewkWzsDhYEh4OcVTpSAiDXhf7R/qhLw3ZIi4d1t/50cjNtRyPBeU66NIeQ4wUe0Dt0bJ19f + soi4/hj92gWQ61OnWz/xD4qAli6jM1f2aKKekazI4eaAZ+44V34g4zqcYtpF8vhmwL8Uj6KMB/iV + aqSX/RDcAM+ApSHBChcVPWwCPU1lc5z85WHJKl9Fo1GEhroyILozXzkbuKhYHwT1mnoWB3a5ZpIz + Be4RxFo9RMAZdOspjlPQ0eOp9SWF0GioYWnKKOzWk2kFs5nnewydp3k2t33q2xBmQBtvkl5i+Ii0 + gIzCOUaD3l6psyQV3iNDzfQH6A6McGoHT4th1mULjkm6QWe5M/5ZzFGA6Z/JH53pUzNLDYUAqX/Q + SiE00isdsWipsmYpU7svdtSYfgw/l8QC/4Mq2G5rJO0/p/QKmnUx3ca87kwiF+J4az8YmTFAQ7O6 + 3AL/c9dlIHYC0703+COKmW9pRaU187BnxUwiCLO7NJYSB0adzHf/LZzxBvx7DBfnIiedVNRorJZ3 + 6Y1R3SvaYTC4ZnoY75uI5E2zDzRwu9KGnkXOPviQR7vQFaZhZqPYBtglrrqRlZh9cVI5JdCVpzhX + 5gsM90WyyfxF8zb9juwunJtuLRFNZRDvd7TFe1f4tykTaKfu8/eOTZ893S0CDf2wTD582lS27eCk + s05NI8mgJEln8g4HuP9M42ADYpeN3sTRF5PrVCKVfIbU6HufJ0q1Yw0YX5XW48RO7WENmZndAsQi + 8yLLCXcED/B3zKMJ5rgXGg2Li2inQQnzlc8r0XHqxaBM0wjydlrlgFH6Clh434jPmYqZx3qCL2YM + CHI3odlVDTfntYxZLM35K8TPhS5/VLfJ6kYWJonGToSNNYRA6gU8IiLGMvBgBN0Cwd2qn4PvLiNj + QHiNX6f9rzctaJzWDfU+iNeYH9wSllRTLxVKnInnyJBshar4fUwAUMS4st3/23ovUagcybGQ53uE + Q2R/VfQ1ch5hW8tzZF/dQmbamB5Z8IiIRmLLLMmB5HqdRMvOdT/4Ai9oJwXVPzHkOb2+9QteVcMI + 6k9EY+1RzrvqlUnM1hAL1g0occjVtCQG788vPDEmZ8XB/29B+w06mw5cfNXOVFP0He+tn4oEhRjY + rlBVFg5231n6YpnZcUqB6RZ6DaqxaIFbVISqzGhjhMcgvVXU5WvLJ0eh2cq6nFaAHdbbTkq/KAhA + IMdNmy6C4qjPsLInjMGg9lNq/np9TyQU+ufq4y19xdPE7r/ualQmn7Hn5lnL3tc71ZyKwTX5/Ft3 + MFzXmQ4hmsbtaJCnfW19JUGC7PWdOlqYLWtOHzcFyvtChSFnLUZxB2Lf/hmsfetIMRHTuhkBe1Dt + JutDwFL+5fJ3avo9yPstag7/BeA63Ka1J33f7wwL3wf3PlbRvvzgQI0p82uX6/4lCyrCxTrOaIqm + 1O11Bi1tHP85cPo6ODbczl/BD9S8LCtE0CGP0tpcnCvfQBy0KJOo9IVP7DRY8LXJ0Z7vMkqBu81I + +EHc/SRU1NmiWDjskMYfzyWj+8CCSSZ+zPZTQIo1GIL9LUgEwU5ogRxDaUjBp/NOXviOEcyNKTTd + JluUllV5iF0mNoJjyy7CxENQr9Nd41x8Lvg9ML7anGEIu+l4Wmr11dDLrDu7CdLypeCGAhP2fhMy + znpT0QyJuPHVUnsuM3cJR56AnOJdao0taBRJVlGmFFaGalYRRZlfa0V5EItD9u+QUQtFRDVdgl21 + SA4Zap4ysUp1m7v8AUuYTi96wvi9KHJ9g6ibZoYVCX1uO/zBKjP8q/wARGgL/yl8jNiI4TLb0wRs + zwuqvtDXnRolC5DTd3ecaQgxp2lqqT/9OMP9jnVLv51QxHBvRg4YdmTl3vSbEtIF7w3zAhtoCaFC + uumVDFmhs3On3ivdzvdWVhczbkHsvgNab64J5XX4jBGdOrSiba4D7xMAo5IeOY7gNY5V4B3VaAmh + P9gV3rWr6a93nchPpfDrMIDo7Knn87g5bbTVYQBYLemq92QRzv7O1AwoEx/JsJMwzOjXZK1NpWZf + PV/moPCPaAmuFhkcbpmZngQYCBcsbbvxIHUpFk9tP7Jop+qQtf17xCSkG2A6uFhL6i/uILAxn164 + cSbQnkXEkPt07XtdtTzhyvEUQV5E8mgL7FXb7XyWFJn3XqzopShQfR6jua6IpRVYacddmMSyr2p0 + ou6JaUKp3QD0iUmGauZBtqsBWDXv+pvlaAGGGqHH762iBon+S8w9UCqRBtYCc1vQCrQqrK8fSx9S + Y/4NkX4FoeUw418+oUJfx9q5uq+wKjPGiyP/ngxoaAhokL6PBwLc7S9Vb2MSwSho0sGQUL0pJZNi + jqQagM6guaHmhiecaoOdqvM1FvQ= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf47429cef2251-MIA + Connection: + - keep-alive + Content-Type: + - audio/opus + Date: + - Fri, 03 Jan 2025 01:40:02 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=NAm5bWNiLPw4n1h4GO0rd2VNqpnFe33NBwi_UGiBJ94-1735868402-1.0.1.1-DVkdqfM.e4FtzSjo4Cg9XDLKjVk1lI1vxiDGqJXrLcliTYh85OdDDtEb0plqaG6qZLvBqfKQKCe7ZzzbxpFNlQ; + path=/; expires=Fri, 03-Jan-25 02:10:02 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=UAX6G6lVaCi1Zn2CwhAWae4i6ZeBOf5891OZlgXK8l4-1735868402207-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '1057' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-85fffc8577-r5hf7 + x-envoy-upstream-service-time: + - '1027' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_6a7c46ce4b96096c8395df2ee20403bd + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_openai_tts_wrapper[tts-1-hd-wav].yaml b/tests/cassettes/test_openai_tts_wrapper[tts-1-hd-wav].yaml new file mode 100644 index 0000000..0d293a5 --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper[tts-1-hd-wav].yaml @@ -0,0 +1,683 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1-hd","voice":"alloy","response_format":"wav"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '83' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + UklGRv////9XQVZFZm10IBAAAAABAAEAwF0AAIC7AAACABAAZGF0Yf////8HAAMA/v/6//j/+f/8 + /wIACwAYACEAJQAiABoADQD///T/7P/t//P///8JABAAEwAQAAwABQD///r/+P/5//v//v8CAAgA + DQATABcAGQAZABQADAAEAPz/9//1//f/+v8AAAQABwAJAAgABgACAPv/9f/w/+v/6v/t//L/+/8F + AA0AEAANAAQA9//q/+H/2//a/+D/6v/2/wEACQALAAgAAAD2/+r/3v/V/8//zv/X/+j/AQAcAC8A + NgAvABcA9P/Q/7T/p/+p/7n/0//t/wIADgAPAAoA///w/+D/1P/N/83/1//n/wAAHQA3AEcASAA2 + ABgA9P/S/7//wf/W//f/GAAxADsANAAiAAkA8P/h/9r/2//g/+r/8////woAFAAbABsAFgAHAPH/ + 2v/I/8L/yv/i/wMAKABFAFYAVgBHADAAFwABAPP/7//1/wEADwAdACkALgAwACsAIgAZAA0AAgD4 + //H/7//1/wEAEQAlADcAQwBEADgAJAAMAPX/4v/Y/9j/4v/1/wwAJQA8AFAAXQBhAFkASgA1AB8A + DAADAAgAFgAnADYAPwA9ADEAHgAFAOz/2v/P/9H/3P/w/wwAKQBAAE0ATABBACsAEwD9//L/+P8N + ACkAQgBQAFAARgAvABUAAAD2//L/7//r/+r/7f/3/wgAHQA0AEQARQAxAAkA3P+4/6T/qv/N/wAA + NABdAHMAdwBvAGAAVABMAEgASQBGAD0ALAAaAA0ABQADAAgADwAQAAgA+f/h/8H/pf+V/5T/p//N + /wEAMABUAGsAcABhAEMAJgAWABAADQAAAOf/y/+4/7z/3P8RAFAAfwCBAEoA8f+i/2z/Wf9//93/ + SwCPAIoARwDp/5T/X/9V/3H/nf+z/6r/hv91/5b/1P8XAFcAkACpAHoADgCo/3z/lf/Y/x4AUgB0 + AHgATAD2/5//dP98/5P/lv+N/5T/qv/A/9n//v8sAEUALADj/5b/aP9k/3f/lP/D/wQAPQBOADwA + KAAlADAAMAAVAO//0f/Q/9v/3v/s/xwAVwBlAC8Az/9p/yD/BP8W/0T/gv/B/+r/8P/p//3/JQBF + AEsAQAAsABAA4/+q/4L/pP8dAKoA8gDdAI8AKgDE/3D/Uv9x/7H/2v/N/6//qf+2/7z/wf/m/x0A + OQAuAA4A5f/F/9j/IABgAIMAqwDQAL8AfAA8ABoAFwAgABwA8P+//67/m/9l/0T/YP+E/4j/mv/h + /yEAIQARADkAdQCFAHUAgwCmAKcAZwAeAAgADwD7/8v/r/+7/8n/sf+U/5//zf/0//j/5v/Y/8f/ + tv/H//z/KAArADsAggCjAD8Avv/S/10ApwCCAF4ATADv/1n/Jf+b/0kArQDEALkAkAA0AMT/gv+O + /77/9/9EAHkAQAC1/3T/1P9jAJkAhgB8AHIAEQB7/0L/kf/0/wcAAQAyAG4AZgBCAGcAuQDGAHAA + AACl/03/Ef89/8v/RQBoAFoAQAD9/4D/Cf/v/jn/lf/G/9P/6/8KABIAEwBIAKYA2wDFAIEALQC4 + /zn/AP88/7b/HwBUAEcA9/+Q/2X/ff+D/0f/Gf86/43/3v8YAC8ANABgAMsAJgEIAW4Av/9c/2// + z/8pAF0ASQDU/z3/+v5E/8v/AgDL/5r/0v89AH4AmgDSABUBKwH0AFEAYv+u/n/+rP4h/+n/qQDX + AHQABgD+/zUAPgDw/5X/SP/f/ov+yv6I/zYAzgBrAbkBXQGQAMr/PP/Z/rT+7f5K/4X/sf8pANAA + NQFEARQBgwDG/17/MP/I/mD+mf5a//r/OgBcAJAAsgBvAO3/nv+6/+r/3/+//7n/5P81AGcAQgAs + AIoA4wBsAF3/uf7Q/gP/6/79/rP/uABqAWIByQBCAEYAhQBOALv/cP+I/4v/jf/b/14A7gBvAaQB + dwEbAXIAdP/C/q/+tv6x/jT/5//x/7r/IwDoABcBxQCJAIoAWwDF/yP/2/7f/gP/mv+pAGABNAG/ + AJ0AoQB/AC8Ay/+F/7b/CQDI/0b/eP8hACoAtP/j/5YAnwDp/4T/1/9iAMQA4wDUAAYBmAHBAQkB + OADx/73/Rf/k/tn++P4s/1z/ov9KAO4A1wBhACgAyf8+/2T/GQAWAIn/6f8aAbcBkAF3Aa4BtAH3 + AJ//0P7J/oj+5/0a/mH/VAByAFUAQgByAJMBmQIfAvAAfAACALj+6P0a/kL+V/5j/0AAMQCCAI4B + wwEyAUsBhAHOAKL/6P5e/n3+xv/wAMcAggBmAUIC7wH2AE8Au//w/hb+Y/0u/bz9hv71/of/vgDn + ASYCvQGHAcYBJALBATAAsP6o/mX/cv8t/3T/6/8vALkADQGSAEAAigBCAD//G/9R/4T+x/1t/kT/ + zP82AZEC6AFSADoAzgA3AD//PP+r/7z/7P88ABUAwf/r/2gA0wAaAfUAVACB/+n+q/70/sL/jQCT + AND/Z//x/5sAaQD2/ywAsQBpAEH/bP6g/n//PwCJAJMAowCVAAMAWv9L//P/jQByAPL/uf/S/7v/ + Zf8W/03/NwAqAWwBDQGRABAA4/9eAA4BDgFRALj/n/+P/1r/Sf9I/0H/Uf9J/w//CP89/wD/Wf5x + /qH/gQBIAPP/NgCOAOUAkQFCAkoC2AFjAcMADgDq/wQAYv92/i/+Hv6r/X79FP60/vL+iP+NAO4A + lQCDANcAFQEpARMB8gDxAKgAEwDX/wUABQDU/9z//f8CAO7/1v94/2H/0v/b/yX/7/6b/73/L/8G + /2j/eP+F/xUAYgD//6T/2v8pACgAOADAABgBXABr/2X/9/8kAJ7/Kf97/14AmwAcAJn/+P+pAHsA + y//Q/w8AVv9a/vn9ZP5u/5AA6ABuADkA7gCVATwBlgBZALv/of78/TD+ZP6D/if/xv/D/+X/ZwG3 + AkoCCAHLADkB6AAGACD/s/52/pT+6P4z/27/ev+Q/7D/EACHAMwAtwAgAKr/jv/0/wgA6v8YAIIA + 2AANAT4B6wCRAF4AhgCHAAYAZP/C/ln+d/5L//T/KADw/+L/SwB7AIYAwADuAHkA1v+A/6r/0f9m + /zP/rv9SAIcAiQCSAKQAdQBjAH4AggBaACAAiP/j/rn+vP7Q/hD/8v+hANIAzgD6APIAzADIAKkA + dwDv/yX/p/6t/tP+7/5i/0wAAQGuAEQAdQCcAKAAuADyAIUAr//k/qn+1P4r/7b/1//s/7//9v80 + ALMADgEgAdIAjgC0AEwAuP/O/pf+0f4O//L+Lv+X/3r/Zv+V/9QA5gH7ARwBawAEAM7/kP9c/9r/ + AgBP/wz/LQCFAbYB6wC1AD4BiAEPAW8A2f8j/y7+Yf3D/dj+bv/4/mj+8P5CACkB2QCEAOsAIwF4 + ALH/8/9mADIAn/8OACABaAH6AMUAWwFqAdwA/f+7/yX/Hf5m/XL9GP4I/ur9Iv5S/0wApgDaAF8B + 7QF8Ac8AXwCOAIYA7v+T/+f/iQByAA4AAgCSAPsAmgCsAAIBFAEKACb/PP+7/9f/aP/x/3wAuwBz + AJMANwG0Ad0BTAE+ARQBxgD8/2z/hv95/zz/wv4f/3//qP+J/4n/EwBuAIwARgApAAAAq/9D/yX/ + Zf9n/0z/Yf+9/2AA+ACyATECMQIJAvIBwQEZAUMAJf9o/tn9jv2s/Qj+fP7j/nP/zv9YAFYAegBv + AFAA5v+U/6T/if+5/2r/5/83AJAALgDh/x4AmgAVAYQATQDf/wsA//8IAG4A/wByARsBKQEgAY0B + MgGxAJgALQDU///+a/7C/dn9qf2n/fD9Bv6J/rL+Qv8eACEBuAHuAfEBtAHHAWAB8gCkAMP/+v43 + /rX9O/3Z/Jr8TPz0+/X6jPoW+rz5Uvmb+Ez48ffs98f3YviC+b36+vum/Lf9v/78/8QAmQFzAhcD + oAOmA9ADzAO1A28DlgPPAx0EPwRjBKEEywQoBWMFmAUwBcMEEwTfA9cDzAPWA7YD8wMUBJIE+gTN + BSwGXAZkBjwGQQauBf4EHASqA9sCgQLOAbwB6wGaAZcBfwFuASYBTAHrADACbgNoBNkDUQFJ/3T+ + c/6Y/fT9hPxO/F77tPpT/Nn+PwLWA0QFGQWjBksGwQSgAs3/FP+K/Rr7bfdX9e/zk/ML9FL1wPhT + +w39Cv7F/4gCGgWJBqoGywYrBugE8gLsAJD/V/78/Gb79/kq+DX2bvQL8wnyjfCY7mXsYupo6Pvm + A+a75SjmtubN56bpJOwi71LyWvXZ+G/8k/8qAmwEbAY7CCsJeAnUCR4KpAoJC1sLuwsLDAoM2QsA + DBAMEgymC9AKFwrjCLQHNgZ/BT0FQQWQBdgF1QbPB0cJjgqMDHcO1g+hEHYQXBDLD8oOaQ1HDO0K + mAk0CMQGXgbtBcwFJwbABhUHHQcNB4oGmwZ4BSYFcgR8A9ICxAALAKP+HP51/fX9Ov4E//7/jv/I + A4wFzwhoCZ0HpAVIA60A0v6s//X99v1b+xT6xvu2/SIAPQLJA34EigUyBIkDMAJD/5v8dfkt9mbz + +/Cn7qnuQO/08Ojzc/Z1+ZP8XP+/Ai0G6QfcCEcIvQZ7BTUDyQC4/iT8bPmy9qfzkfH/74/uye2n + 7JrrqOoX6XTnL+ZL5R/lAeW35F3laeay5+/pwuxv8KD0GfhJ+6T+wQHCBCgH9wjICg8MkAyPDH8M + mgxdDKkLSwsHC9IKqAp0CeQI3AeyBiQGNgV3BNIDFAM+AkECmQFLAj0DgAOSBEcFFQYyB0wIuQia + CZwJhAnECUQJPAk+CdEIXAhXCPYHIggsCNsH9QfRBy0HxAZKBvwEWgQBAyUCRgFn/1T+Tv2J/Lj8 + 9/2u/j4B6QE6AjoF/wSlBNwDiAKgAk8DQQEmABgAJv6X/iD/gAClAssCRwIMAz4EwQSlBKYCAQFF + /5T8zvpn+Z/3h/XR86fzZvX49kz4Dvru+3b+PQH+A64GwwfsBgkG9QTKAx4C9/6o+2r42vSd8eru + Xux56vvo2Oet53Xn8Obd5j/n2+fm6L7p3OpR7PLspe2S7/TxevSv9sb49fv5/moBHARAB2sKHA3b + Dn0QFRKYErUSehJBEgsS+BBtD/8NbQzhCpcJXwjoB3IHsQYyBq4FdgWKBaIFAwYpBmoFoAQ2BBAE + OQTjA7MDLgSHBLUEXQVWBrQH2Qh2CacKtQs6DG8MYQxvDIcMuAtKCusIYwd/BoQFeQS4A1ACugCy + /9X/ZAGrA7YEngThA5EC9QF0AVEBKAEsAEH+P/yV++r71vyX/a7+pf+4ADQByAEnA5cDkgPlAs0B + mwAF/4v89frp+cb4YvjT9wL46fi1+ez6O/2m//EBsgOMBIcF1AVgBZEEbgOtAQ//mfvv97n0tvHK + 7vnrfumC5/fl3ORi5JPkG+Wg5RHm4eZQ6MnpSOvS7EXuCPCl8RPzPfWG99D5mfxG/xoCLQWUBwoK + wAz5DhIRvBJcE6kThRPYElESdRH6D2UOqgzLCoIJgwipBxsHVgaMBXgFtQXVBfwFzgWNBZ4FIwWY + BEAExgNkAzUDGwMpA28DdQMPBDQFVAaDB7kIiQn/CZwK+QqmC7cLywosCq8JlQg0B74FEATUApIB + CwH9AQADfQOVAzsDugIkArYBfgGbAQ4Buf/R/SX89fvW/BP+X/43/j7+h/4j/18AkQH1AYEBIQBW + /wT/GP7U/In7HPqW+VH52Pjt+DL58fnP+wr+/P/bAXUCzwLeA9UEcgXtBM4CBwAI/af50Pbo81fw + hOye6HjleuMl4kjh6uCz4AXhAOJu40nlOuci6SzrQe0q7xrxyPJe9CD2G/iM+gP9Jv8MATcD3QX1 + CBQMuA7hEFgSlhPTFPcVwhaUFocV9RNsEgIRuQ8uDm8MvwoUCdUH7gZJBpsF/ASYBG0EJASLAw8D + vAKAAiICygGfAXMBHgElAaEBXgIMA3ADCAQnBZIGsQcHCbgJWQoyC2oLzQsfDOULRgtxCpQItAeh + B2wH3QdjBxQGZgSAAgsBDQE7AfcA///t/Wz85vup/Kz92f10/Qf9vvzm/D/9Vv2Z/fn8Bvzb+7H7 + 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 + fgT5BFEEoQJyAZYBIAJSAer+hvz8+qn5Vfii9333vPae9F3y9vEH84jzxvLj8dnxJfIf8lHycfOZ + 9KL0FvR99ET2N/g2+cb5C/sE/eX+iQBxArcEtAb3BwgJdwrkC4kMYwwWDOkLVQvtCQ4INgZWBCYC + w/+Q/ZP7fPlN94z1gPTG8/DyFfKc8aLx5vFH8s7ycfP782P06/TQ9eP2vvdY+PT4vvmz+sH78Pwz + /lb/OwAcAT0ClwPXBMEFXQbLBg4HHwcHB9EGaQaqBYsENwPdAYMAIP/I/Y/8fPt2+nr5sPg++C/4 + cPjf+GX5/vm++sL7F/2c/iEAfQGtAtMDFwV6BtkHCQn8CbwKZwsUDM8Mig0tDqcO/Q5ID54P+A9F + EHUQhhByEDEQxw9ND88OOw5/DZ8MqQukCpQJdwhpB28GagU2BOECpgGaALj/7/5B/qn9BP1e/PT7 + 8/so/ED8JvwG/Br8bvzX/Dj9Zf0t/bn8cfyf/Aj9Cf1j/FX7bvr9+d35u/k1+T/4HvdM9hf2MfYd + 9pr14/Ry9HX0zvQt9WP1d/WX9QP2wfax96H4evlb+m77vPwj/nj/sgDgARwDWgRzBUQGzQYuB4UH + yQfSB4QH3AYCBioFbAStA8oCqQFoAD3/T/6V/d38+/vy+uX5/PhL+Lr3H/dh9oD1qvQH9KHzZvM+ + 8xnzBfMd83nzIfQJ9SD2UveZ+Pf5dvsW/cz+hgAtAq0D+wQVBgYH1geECPwIKgkJCawIKwihBxcH + iAblBSYFVASNA+ACXAL4AaIBSwHvAJIATQAtADMASwBYAFAANwAqAEsAnAAKAW0BtQHxAUACwQJy + Az0EAQWoBTAGwwZ5B1AIKQnaCV8KygoqC40L5QssDFQMWAwyDPELogtLC+MKYQrPCSkJagibB80G + EwZnBbUE8QMkA10CrAESAY4AEACP/w//ov5W/iH+6v2m/Wf9R/1H/UT9IP3e/KX8jfyT/Jr8ePwR + /In7KPsY+z37Rvv8+m368PnX+Rr6d/qX+mH6+vm9+eH5UPqx+rT6Yfr6+c758fkw+lL6Mvro+ar5 + pPnc+TL6ePqg+sH6/Ppk++37ePzv/FP9sP0R/nP+yf4L/zT/Tf9e/2n/Zf9R/zL/Fv8C//X+6v7e + /tD+xf7E/tH+5v74/v3+9P7o/uH+3f7U/rv+j/5Y/iP++P3V/bL9if1b/TT9Hf0d/S39Rf1c/Xf9 + m/3R/Rj+aP60/vT+J/9Z/5D/y/8CACwARABQAFgAZwB+AJgArgC9AMkA3AD3AB4BSgF3AaEBxwHq + AQ8CNQJbAn0ClwKlAqoCqgKsArACsQKrApwChwJzAmgCZgJnAmcCYgJeAmACawJ9ApMCpgK2AsYC + 2ALwAgoDIgM3A0gDWANqA30DjwOfA6wDuAPDA88D2gPiA+gD6gPqA+gD6APmA+MD2wPRA8cDvAO0 + A6oDnQORA4QDeQNvA2YDXANPA0EDNAMqAyADFgMJA/gC5wLXAskCuAKiAogCbAJQAjQCFALxAccB + mgFrATsBCgHYAKAAYwAkAOX/qP9s/yv/5/6e/lX+DP7G/YH9O/31/K/8afwp/O/7ufuH+1j7K/sF + ++b6zPq3+qT6kPqA+nb6bvpq+mP6W/pW+lT6V/pe+mf6b/p5+ob6m/q3+tX69/oW+zf7XPuF+7T7 + 4/sQ/Dv8Z/yT/MD87vwd/Uf9b/2W/b395f0P/jf+X/6G/q3+1P78/iP/S/9z/5n/vP/c//3/GwA4 + AFIAaAB7AIsAmQCmALIAuwDCAMYAygDNANAA0gDTANMA0gDRANAAzwDNAMoAxQDAALkAsgCrAKQA + nACTAIoAggB7AHQAbwBrAGkAaQBqAG0AcQB3AH8AiQCUAKEArgC8AMsA3ADtAP8AEQElATgBTQFi + AXkBkAGnAb4B1wHvAQgCIgI8AlYCcQKLAqYCwQLcAvYCEAMpA0EDWANtA4ADkgOiA7IDvwPLA9UD + 3gPkA+gD6wPtA+0D6wPoA+MD3QPWA8wDwgO1A6gDmQOJA3gDZgNSAz0DJgMPA/YC3ALBAqQCiAJp + AksCKwILAuoByQGnAYUBZQFDASMBAQHgAL8AnAB7AFoAOQAYAPf/2P+5/5r/e/9e/0D/JP8J/+7+ + 0/65/qD+iP5z/l/+Sv43/iT+Ev7//e392/3K/bn9qP2Y/Yf9d/1n/Vn9TP1B/Tb9K/0i/Rv9Ff0O + /Qn9B/0E/QT9Av0C/QT9Bv0J/Qv9D/0T/Rj9Hv0k/Sr9Mf05/UD9SP1Q/Vf9Yf1p/XH9e/2E/Yz9 + lv2f/aj9sf25/cD9x/3N/dT92f3f/eT96v3v/fT9+v0A/gb+DP4S/hr+Iv4r/jT+P/5J/lT+X/5q + /nb+g/6Q/p7+q/66/sj+2P7o/vf+B/8Y/yn/Ov9M/2D/c/+H/5z/sP/F/9n/7v8CABYAKwA+AFIA + ZgB5AIwAnwCwAMEA0wDlAPUABQEVASQBMwFCAVEBXwFuAXsBhwGTAZ8BqgG0Ab0BxQHMAdIB2AHd + AeEB5QHoAesB7QHuAfAB8QHzAfMB8wHzAfMB8wHyAe8B7QHqAecB4wHeAdcB0QHLAcQBvAG1Aa0B + pQGcAZQBiwGCAXoBcgFqAWEBWgFTAUsBRAE8ATQBLQElAR4BFQENAQUB/ADzAOoA4QDXAM0AwwC5 + AK8ApQCbAJEAhwB9AHQAawBiAFoAUQBIAEAANwAuACUAHAAUAAwABAD9//X/7//o/+H/2//V/9D/ + zP/I/8T/wP++/7z/uf+2/7P/sP+t/6n/pf+h/53/l/+U/4//if+F/4H/ff96/3X/cf9s/2j/Yv9d + /1j/Uv9N/0n/Rf9C/0D/Pf87/zr/OP83/zf/Nv82/zf/Of86/zz/Pv9A/0P/Rf9I/0v/T/9S/1b/ + Wv9f/2P/aP9u/3T/eP99/4H/hv+K/43/kf+W/5v/nv+j/6j/rf+y/7f/vf/D/8n/z//W/93/4//r + //D/9//7////BAAHAA0AEQAVABkAHAAfACMAJQAmACcAKAAqACsALAAtAC8ALwAyADMANgA3ADcA + OQA3ADgAOAA4ADkAOAA5ADoAOQA5ADkAOAA4ADcANgA1ADMAMgAwADEAMQAwADAALwAvAC0ALAAq + ACkAJwAnACgAJgAlACMAIwAgABwAHQAYABgAFgAUABUAEQAOAAwACwAJAAcABQADAP///P/6//f/ + 9P/y/+3/6P/o/+T/5f/l/9v/2P/Z/9b/2v/Z/9b/2P/a/+D/4P/f/9//3//h/+H/4//q/+r/7f/y + //b/+P/6//n//f/7//3/AQAMAA8AEQAcAB4AJAAiACIAKgAzADMANgBAAEEASgBIAEEASQBLAE0A + VgBYAFoAYgBgAGEAZABeAGIAZgBnAGcAZwBtAGoAZgBwAHoAawBuAHAAcQByAGoAbQBrAGQAYgBk + AFgAUABNAEUAQAA/ADkAMAAoACYAIAAWAA8ACwAQAAcAAwABAPj////0/+7/7v/p/+X/5v/i/9b/ + 3f/Y/9P/w/+//77/vP/C/8D/x/++/73/vv+//7n/sf+q/6z/r/+i/5v/nP+g/5//m/+e/6P/qv+n + /5//lv+Q/5z/i/+Y/5b/iP+O/4H/k/+N/4f/jv+c/6L/nv+X/57/pv+y/8H/p/+3/7f/uP+k/5z/ + xv/K/83/z//W/8f/2f/y/+f/5//W/+D/4v/c/93/zP/T/+T/7P/o/+X/4v/i/9T/x/+w/7r/3f/r + /9T/tP+y/6f/of+s/7T/vP/e/9b/y//c/8n/zf/0/93/vf/j/woAIQAKANX/vP/X/9f/xf/g/wIA + 1/+i/7D/1P/e/6T/hP+R/2v/VP+L/5T/gf9t/3X/hv9l/0T/NP8o//X+Pv++/+f/2/+7//X/cQDS + AMgAbwBbAD4AOwBeADAA9P/R/+P/HACFAO4ARAFnAZsAWP5U+5n5FvrQ/F4BHwWgBk0G5QQiBGcD + 9AK2AukAHADmAqkGhAc6BOoACwEiA6IFQQTl/4v+XAA3A8oCNf+G/bT99P0+/rL8bvuv/Nr9z/1Z + /K/8dv21/Qv+cv3q/KT+jv5m/OD95/3vANkCogL/AAr+Dv8DA3UHmgJuALoB8AAoBG0FyAGv/eEB + WgkBB039nvoUAS8JXQUw+yH5Jf7QA48DUf1S+mv9LQAg/kX7Qv0z/g/+bPwy+dn8bQAOAL/9p/pd + +mH9qP9QATX/g/qy+/T+BAI1AsP/Sv34/tsA/P/7AX8BNf/R/hH+NgLOBM8AGP2q/ZUCQgONAc79 + Q/7FABECAAGR/Wf+vv9WAQ8Ac/3B/cD/AgAnAA/+s/y2/tYBpQBv/WX96P4ZAlABnf+u/Fz8rQGo + A1QC4/0c/B8DBgXsAOv9LgCiA0cCj//+/5EDnAIPAREABwGzAZMBegSZAoUA9v5HAZQE2gJ1AU/+ + WgACBD4DBAH6/QX/jQL8AnUBCv8q/5MCEgEOAD0BdgFwAOn/vADz/3UBqwEVAZz/of/DAW0BEAEX + ATEADv8MAqYDegB5/ZX/OgPvAZv+PP9WAVoABgHEAbv/cP2S/qQCcAPX/lr88/6AAjgDFgBA/Gn9 + mQKtAtv/0P3e/XgAZgJWABD/Wv5M/RYC+QJ9/5L8Rv6NAhUCIf/j+5T9cgJuA7j+q/oe/soC3ALE + /mP8Mv57AFgB+f9R/tj9N//+/6f/Cv+4/gr/cv7B/tH+R/++/0z/jf7o/Wn/yf9y/w4ADf/f/Rz+ + NwDZAKr+3P33/QIAOwHF/zL+9P3k/38A1v77/hQA2v7Z/s3+bv6//xIB0v/0/LP9RAAbAQ7/wv1e + /+D/Ov+z/ir/jv88/0v/Z//d/in/yv9T/zX/If/f/23/pv6//gQA9QBA/yf+f/4EAEUA6/+R/7H+ + rP74/wQBOwDv/mb+t/+3AIP//v3V/isB2AGM/8P8Dv5gAb0CdQCd/en9+f8wAXsAu/8U/zT/0v8E + AQABq/97/+b/AgE0AW4ANP9S/yIBuwGWAAn/bP/3AGEBCQFmALr/WwCCAXwB/gBfAGQAswD1AHkB + JAFrALQAhAGhAT8BwwCfAPcAawGAAUUB3gDSADkBEQEsAVYBXQFPAXsBjwHqAMcAAAH3AWkCVQE1 + AL4AAAJ9AvEBWgD4/0IBvgJzAuwAUwD3APIBCQKDAV8BmQFMAfwAKAF3AVEBnQDqALgBnAHoAJAA + /QDLAaMBZgBJAE4BtwHsAOr/CgBYAegB6ACK/zf/8gBSAqoBQACl/xgA4AC4AasBBwC9/pz/XgHZ + ARoB6f9J/ykATAHSAIv/n//jAD4Buf+j/rz/cgFxAc3/dP6q/qEA8wE4AY3/i/4J/yMA4wCaAHj/ + n/4X/woAagAjAHH//v5D/8z/z/+o/7T/DgDl/+7+m/6c/7MAawBB/yn+W/4DADoBcgCc/sL9s/4r + AGUAbP9e/lv+N//t/9b/NP/c/i//YP9K/w7/xv4o/2f/C/9u/kn+B/+7/3X/e/4C/pL+9f+dAPn/ + oP6W/TD+kv/p//X+/P0P/gn/gf/o/l7+t/6q/wEALP+I/jr/PgD+/3T+kf2L/mwAzQDK/qb8yPzd + /mkABwCU/vT9n/6x/+v/a/8f/47/JgDe/xH/hP6n/gr/K//T/ob+D//W/+//Kf93/uf+PwAfAakA + bP+v/h7/yP/A/yT/yv4u/5f/XP+0/oH+MP8RAGcAHwDR/+7/XQByANH/Nv9G/+z/KABe/1z+Jv4X + /zEAXADk/5D/zf9VAI8AUADz/xAAeAByAO7/h/+Z/97/xv9K/yj/sv9mAIoA8v9X/7H/vQBmAQAB + CACJ/9j/YQBjAAYAov9w/37/i/+y/yIAqADbAKMATwBhANEAGAHUAC8AxP/p/0IANgDC/2j/nv83 + ALIAzQChAIoAoQDIAOkA/gD4AMsAdQARAOT/DgBjAJkAiABVAEQAYQCIAKQAuADEANMA2AC+AIMA + PwAaACoAXQCDAIYAXwBFAFUAgQC1AOMAEAEmAQEBsgBvAGgAmQC/ALUAiQBsAGQAVAA1ACoAWwC8 + AAQB/AC5AH8AfACjAMoA1QDGAKYAewBJACUAFwAkAEIAagCJAJEAiQCGAJYArwDGANYA0ACnAGQA + KAAOACEARQBbAGIAYgBkAGoAfACaAL8A3ADnAOMAzACZAGIARQBFAEQANQAZAAEA8f/p//b/HwBX + AH8AjgCKAIQAhQCFAH0AbQBYADkAHwASAAwA///x//v/JABPAGIAYQBbAFwAYQBfAFgATgA9ACEA + +//h/+b//v8TABwAHgAnAEEAXgBqAGIAUABIAEwATAA5ABkA/f/2/wAACwASABoAHQAXABEAFQAj + AC8AJgAKAOz/2f/V/9z/5f/n/+n/9/8QACgAMgAyAC4ALAAnABcACQD///P/4v/Y/+X///8OAAkA + +v/0//3/EQApADoAPgAzAB8ADwACAPf/5//S/7j/n/+Q/5H/ov+8/9j/7v/+/w4AHgApACgAHQAV + ABYAIAAfAAsA7v/e/+L/8f8CABQAJAAtACkAHQATABcAHwAhABMA+v/j/9j/1P/K/77/tP+u/63/ + q/+o/6j/sv/C/87/zf/F/7z/r/+d/4b/cP9n/2n/Z/9a/0b/PP9I/2L/ff+U/6j/vf/P/9j/2//i + /+//9f/w/+T/1P/I/77/tf+v/7D/tv+9/8D/vP+z/63/rv+w/67/o/+U/4n/h/+L/47/k/+b/6b/ + sv+4/7j/tf+z/7P/s/+x/63/o/+S/33/b/9w/3v/hf+F/3v/cP9x/4D/k/+j/6n/q/+s/67/sv+y + /7L/sv+0/7f/u//A/8L/w//F/9D/5P/3//f/6P/Q/7v/sP+w/7L/sP+m/5j/j/+S/5//sf+//8f/ + yv/M/87/zv/L/8n/zv/X/97/2v/P/8P/u/+9/8b/1P/g/+T/4f/d/9r/3v/q//n/AAD7//L/6//s + //P//P8EAA4AFAATAA4ACQAKABIAGwAeABwAGAAUABAAEAAUAB4ALAA5ADcAIwAIAPX/9/8KABgA + EgD+/+//6f/q//H/+v///wQABAAAAAQADQAVABgAFgAUABgAGQARAPL/z//G/9r//v8ZABYAAgD6 + /wQAIQA6AEMAPAAuAB8AEQAFAP7//v/8//f/9f/3//7/AQABAAMACwAYAB4AFAD6/9//0//a/+r/ + 7v/l/9n/2P/n//7/DgAQAAwADQAOAAcA+//1//j/AQALABIAFQAVABUAGgAfACEAHAAQAPn/3f/F + /7X/q/+k/6L/pf+z/8b/1v/f/9//4v/x/wMACwAFAPL/5v/t//7/CAD7/+X/2f/g//n/DgAVABEA + CQAJABMAIAAjABUA+//i/9n/4f/t//D/5P/W/9f/6/8JABsAFwAFAPr/BwAeACUAEgD4/+7/9/8B + AAYA///3//X/AQATACYAMQAuACUAHQAaABwAHgAVAAcA/f8EABoAKwArABsAEQAYACwAPQA9ACwA + HwAhACsAMwAuABwADgAFAAYADgASAA0A+//p/+X/7/8CABAADAADAAIAEQAoADMAKQAWAAYABgAM + AAYA9f/f/8j/wv/M/9r/5P/g/8//uf+w/77/3f/5/w0AGwAsAEUAYABuAGMASAApAAoA8f/e/8f/ + r/+f/5v/pv++/9T/5f/z/woALwBbAHwAiAB9AGYAVQBUAFgAXwBhAFoAUQBNAEYAPAArABQA///w + /+X/2P/I/7L/nf+O/4v/kP+X/5v/l/+X/6X/uP/I/9L/1P/c/+3/AgAUABsAHAAeACIAKQAzAEAA + TABcAHIAjQCsAMsA4gDuAPQA+gADAQoBBAHtAM4AswCcAIUAaABKADMAKAAkACAAGwAVABIADwAJ + AAQAAgABAP3/9v/u/+//9v/5//P/6v/l/+n/8f/0//H/7v/w//f//P/9//3/+v/2/+7/4//Y/87/ + xf+5/6z/o/+h/6D/mf+P/4n/if+Q/5b/lf+R/4r/hv+D/4D/ff+B/4v/mf+o/7r/zv/l//r/CwAa + ACgANQA9AD0AOQA1ADEALgAoACMAIAAgACEAJAAnAC0ANAA5AD0APAA7ADoAPAA8ADoAOQA5ADgA + OAA4ADkAOwA+AEIARQBHAEsAUQBWAFkAXABgAGMAYwBgAFkAUQBKAEAANgArACIAGwAVAA4ACwAJ + AAcABQAAAPv/9v/v/+n/4//e/9n/1f/U/9b/2P/a/9r/2//b/9r/2P/V/9D/zP/H/8H/vv+7/7r/ + uf+5/7v/vv/B/8H/wf+//73/u/+5/7j/t/+3/7f/uP+5/7v/vv/B/8L/xP/F/8b/xv/G/8X/xP/E + /8T/w//D/8T/xv/H/8j/yv/J/8j/x//F/8T/wf+//7z/uv+3/7L/rf+q/6j/pP+g/57/nv+e/57/ + nv+g/6L/pf+m/6j/qv+q/6n/p/+i/57/mv+V/5D/jP+K/4n/if+K/43/kf+U/5b/l/+Y/5j/l/+U + /5H/jf+K/4f/hv+F/4X/hv+J/4z/kP+V/5r/n/+j/6b/qP+r/6z/rf+t/67/r/+w/7P/tf+5/73/ + wf/G/8z/0//Y/93/4f/h/+L/4v/g/97/3P/Z/9j/1//X/9r/3v/i/+n/8P/4//7/BQAJAAwADQAM + AAkABQACAP///P/7//v/+//+/wIABwAMABEAFwAcAB8AIAAfAB0AGwAYABYAEwARAA8ADgANAA4A + DwAPAA8ADwAPAA8ADwANAAwACwALAAoACQAJAAkACgALAA0ADgARABQAFwAaABwAHwAgACEAIgAk + ACUAJQAkACMAIwAiACMAJQAnACoALQAyADcAOwA/AEMARABGAEgASABHAEcARgBFAEYARwBKAEoA + SwBPAFMAVABWAFkAWgBaAFoAWQBXAFUAVABUAFMAVABVAFcAWABbAF4AYgBkAGUAZgBnAGUAYwBg + AF8AXABaAFcAVQBUAFQAVQBVAFYAVwBXAFgAVwBWAFUAUgBQAEwASQBFAEEAPwA9AD0APQA9AD8A + PwBBAEIAQwBEAEMAQgBAAD0AOwA4ADcANgA1ADMAMwA1ADYANwA5ADkAOgA6ADoANwA2ADMAMQAu + ACsAKAAlACQAIwAiACIAIgAiACMAIgAiACEAIAAeABsAGQAXABQAEQAQAA8ADwAOAA4ADwAQABAA + EQARABEAEgARABAADgAMAAsACAAFAAMAAgABAAAA///+//7//v/+//3//f/8//v/+P/1//L/7//t + /+v/6P/n/+T/4//i/+P/4//j/+X/5//p/+3/7//w/+//7f/s/+3/7f/s/+v/6f/n/+f/6f/r/+7/ + 7//v/+7/7f/s/+z/7f/u/+7/7f/r/+r/6v/s/+7/7f/u//H/8f/y//L/8P/u/+7/8P/w//P/9f/z + //D/7P/l/+L/6P/r/+v/8f/0//H/8f/w/+//8f/x//H/8f/v/+3/7f/s/+v/6//q/+n/6f/o/+j/ + 6v/q/+r/6v/q/+n/6P/o/+f/5//m/+b/5f/m/+b/5//o/+n/6v/r/+3/7f/u/+//8P/w//D/8f/x + //D/8f/x//H/8f/y//P/9P/1//b/9v/3//f/+P/4//j/+P/4//j/+P/4//f/9//3//f/+P/4//n/ + +v/6//r/+//6//r/+v/6//r/+v/6//r/+v/7//v/+//8//z//P/9//7//f/8//z//f/9//3//f/9 + //3//f/9//z//f/9//7//v//////AAABAAEAAQABAAEAAQABAAEAAgACAAIAAgACAAEAAQACAAIA + AgACAAIAAgACAAIAAgACAAIAAgACAAIAAwADAAMABAADAAQABAAEAAQABAAEAAQAAwAEAAIAAgAC + AAIAAgACAAEAAQABAAEAAQABAAEAAQAAAP//AAD//////v/+//3//f/9//3//f/8//z/+//6//r/ + +//6//r/+//7//r/+v/6//n/+f/5//n/+f/4//j/9//3//f/9v/2//f/9v/2//X/9v/1//T/9P/z + //P/8//z//L/8f/w//D/8P/v/+//7v/v/+7/7//u/+7/7v/t/+3/7P/s/+z/6//r/+v/6//q/+r/ + 6f/q/+r/6v/q/+r/6v/q/+n/6f/p/+j/6P/n/+j/5//n/+f/5//m/+b/5v/m/+X/5f/l/+T/5P/k + /+P/4//j/+P/4v/i/+P/4//i/+L/4//i/+P/4v/h/+H/4v/i/+L/4v/i/+H/4v/i/+L/4v/i/+L/ + 4v/i/+H/4v/i/+L/4v/i/+P/4//j/+P/4//j/+T/5P/k/+T/5f/l/+X/5f/l/+X/5f/m/+b/5v/n + /+f/5//o/+j/6P/p/+r/6f/q/+r/6v/r/+v/7P/s/+3/7f/u/+7/7v/u/+7/7//v/+//7//v//D/ + 8P/x//L/8v/y//P/8//z//T/9P/1//b/9v/1//b/9v/2//f/+P/5//n/+v/7//r/+v/7//v/+//8 + //z//P/9//7//////wAAAAAAAAEAAgACAAIAAgACAAMABAAEAAQABAAFAAYABgAGAAYABwAHAAgA + CAAIAAgACQAJAAoACgAKAAoACwALAAwADAAMAAwADQANAA0ADQAOAA4ADgAPAA8ADwAQABAAEAAR + ABEAEQARABEAEQASABEAEgASABIAEQARABEAEQARABEAEgASABMAEwATABMAEwATABMAEwATABMA + EwASABMAEwASABIAEwASABIAEgASABEAEQARABEAEAAOAA4ADgAOAA4ADwAOAA4ADgANAA0ADgAO + ABAAEAAQAA8ADwAOAA4ADQAMAAwADAALAAoACQALAAsACgANAAsACgAKAAkACwALAAkADgAQAAMA + 6P8VACQAAgDs/wYABwAQAAgACQAGAAIAAQADAAUABAAEAAkACQAEAAgABwAGAAUABgAHAAgABQAD + AAQAAwAEAAMAAgADAAQABQAFAAQABAAFAAUABAAFAAYABwAGAAUABQADAAMABAAFAAQABAAFAAQA + BAAFAAUABAADAAIAAgACAAIAAgACAAMABAACAAMAAwADAAIAAQAAAAAAAAAAAAAA//8AAAAA/v/+ + //7//v//////AAAAAP/////////////9//3//f/+//3//f/9//3//f/9//3////+//7//v/+/wAA + /v/9//3//f/9//z/+//8//3//f/9//z//f/+//7//v/9//3//v/+//7//v/9//7////+//3//f/9 + //3//v////7//v/+//3//v/9//7//v/+///////+//7//f/9//3//v/+//7//v/////////+//3/ + /v/+//7//v/+////////////AAD+//7//v///wAA///////////+//z//f/+//////8AAAAA//// + ///////+////AAABAAEAAQAAAAAA/////////v///wAAAQAAAAAAAQACAAEAAAAAAAEAAQAAAAAA + //8AAAAAAAD///7/////////AAAAAAAAAAABAAIA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAAAAD//wAA//////// + /////////v//////AAAAAAAA//8AAAAAAAAAAAEAAQAAAAAAAAAAAAEAAQABAAAAAAAAAAAAAAAA + AAAAAAD/////AAAAAAAAAAAAAAAAAQAAAP//AAD//wAAAAAAAAAA/////////////wAA//////// + ////////AAAAAAAAAAAAAAAA////////AAD//////////////////////v/+//7///////7///// + /////////wAAAAAAAP///v/+//7////+//7//v/+/////////////////wAAAAAAAP7//v/+//3/ + ///////////+//7//v///////////////////////v/+//7//v////////////////////////8A + AAAA/////////////////////////v///////v/+//7//v///////////wAAAAAAAP///////wAA + AAD///////8AAAAA//8= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf47619ae26da9-MIA + Connection: + - keep-alive + Content-Type: + - audio/wav + Date: + - Fri, 03 Jan 2025 01:40:07 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=kjngzqIzsL_wvuFUliuDmIS8YogEkBAWXmyoGahWy_E-1735868407-1.0.1.1-uURq4JSk6FtehiSjMrqHqRhNy0e5qxx.K2P8AtGwnxPo1L908Wm4WuTMkIQHpFVCNu_FsyPfPJSSJVKcZueMcg; + path=/; expires=Fri, 03-Jan-25 02:10:07 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=UNR48PFdy64IbMzDnXoHCCIAcD8YaZc8oIQ3Z7Qhjjc-1735868407191-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '1062' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-6689858b9b-qxzcq + x-envoy-upstream-service-time: + - '79' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_a1122487f7198bd4780169a2f4566e6b + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_openai_tts_wrapper[tts-1-mp3].yaml b/tests/cassettes/test_openai_tts_wrapper[tts-1-mp3].yaml new file mode 100644 index 0000000..1d94d5a --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper[tts-1-mp3].yaml @@ -0,0 +1,685 @@ +interactions: +- request: + body: '' + headers: + accept: + - '*/*' + accept-encoding: + - gzip, deflate + connection: + - keep-alive + host: + - raw.githubusercontent.com + user-agent: + - python-httpx/0.28.1 + method: GET + uri: https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json + response: + body: + string: !!binary | + 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 + wR214P7hH3/4/++aheRbXgQA + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Length: + - '14268' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Fri, 03 Jan 2025 01:39:53 GMT + ETag: + - W/"8a539499ba1ea7ba011dc791293749378a704ea94a2ddf6a99434c0a6abc2ac6" + Expires: + - Fri, 03 Jan 2025 01:44:53 GMT + Source-Age: + - '48' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - d165d3a90500022a15b83a27dfcff3c67e49da89 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 77AC:10FFFB:A193BA:B54F85:677418A6 + X-Served-By: + - cache-pdk-kpdk1780095-PDK + X-Timer: + - S1735868393.020639,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: '{"input":"Hello World!","model":"tts-1","voice":"alloy","response_format":"mp3"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '80' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + //PkxABiDDnUAt6fHgmVhJkrSa+ZHpex0QYZyfg4/SnMLAV9igMPBhhIuYuOmWl5h4saktGBJ50S + wYWWmEIhhiabqhhQiGiQxM/AT2ZSNgQYKA0wEPCCcxAiABkolGgJGJRm3ImGLGMFBBQhEG6eENEJ + LHbTmmaICTHMgMlFTglJNahHAwcHTaRIVjMAUFjpmzYySMMDNgMM7JN6DM08N8gIBo8KKpc0oEBD + 06DBkTGg1xLots4X2WsZYuSBV3ve4EpgouWkWiuveWMrf5pj7tcWEVxSwYoAuhlCRCRag7X5HDF6 + bTTLjoKIqOqwdkD8qBqzJwpQILuQXnMGDLp5MrjUNOo4b/kHL2fiMJ4AnoUsK+FM2HIsSq9SHQ9V + 7851UQtuZUPhQXMnhwYfqRUKQuDq+J6Q36fNN21mmdBbCELDA9LetIYh6jbjoYWklBLGSMnFYXwu + DpjtKaCohx4dqnO7V8JWKxwkQwlh0E7Os/y5uSselvWlsfAhiMThoKBtOtfUbGN8veoxfHE0Eica + ceKyKf51qghYTDG4WjEwVDFkPzDYFzGUkwUW4jBMQgIXmRpRqDgZHQsGh8MJQqBxIGIJBmLwYmKZ + Wmi6cmiJrmKYLmNInmAwQGBIsmGIGAkD//PkxEpynDoQAu6TsAEAiYbg+VgEYii+YXhkAioAwNFA + AmBQMGKhRFCUGf7GmoIOGnBxGabmm2p8mTTAHHbHmSZSGeQ3GKYriIIjDAPBCOJjGCpheOJloGhj + aQphaCBhYFRgMFZkqZ5lKNZjuVZl+Q5iwIhkwVxlkZxlsQAoG5hsVBkoGZnegoGR9rSsA6AavmQU + qEwwAAAIAh3gQGMcSAQUzY0wjQ1wYKgzKqzvSjVFjKBDDrwFbLmmhPmVPmrQmWAGKPGcAGBNmbGm + NGlAZiqpgg2W0BI1AEpAQAhATNGDSgFiICNHKwHIWG6vHUJFlzL1z90Sw7NSLHQRghICjmSMA0yP + Cp0LhQUPC5s3LEyZM1rMSVGGAOa2hasumgnUkjgpmu9t13vQ1hrj8ORDiaDFFqMvZQ7rJ30dyYbK + rBD6ejFJ/UUidM5cunZqKtfmtyyWX8J23VpJh33XsKNqIQwjlt4xOdRXbtcjxuLWaxbRhGutFSaN + f7Uk1BRFdGQT0oOjwocG2jQ5U8XTR1UCAL7KqAIuCgjP4DeVASqKaawYcW05mb9oyGCJgA0YQIUO + TASjuMDBDDWlzeQDkODHBzEhR4wWVL8EJIwwswowxg4SKBcaYQ2bFeRQzcdjcDA6//PkxFJsrDpR + Rtb1INHzhCYzEyEAoGCojFhGGjxUeJgI68SCVKwFDBUEX5ZGniUOzMCjCnS55jxRwmxiiwNFmOBG + QGgwuZYIZUC6yaigjDExMkZFSMlTNEg+Y6JDB6wgoPX0lwXTTJBx8ZAmhDgEaUFluKBK33Ei1eyO + ldxw5hQBc7LIUjO1cQiy2wBA0hgCDZAhQACBiBaGAQLMcgLbBcyLGhUCOjgoFS6a0iQlSkcQnSgu + IQoAJIMmZRmXCtnMMGHAaH0voUn1XO2AACZlxjaJ6cYEBLdZWou46l72IgFpxAAMMJNa3NwWMMXF + vw8pBAwvCYseYtCbdSAlo48NMXBzYxN0fLmcUGyYGcACoQOKmTCwG76E8oBA4A7BZ9K9qRahikSU + 0YY6rwy9w2Bq7feXPi478QDA9eVxuxDb/wJx41B2dz3L0cZvOdyibO2X0cMYbibX45L6l+chiTW5 + THmmahFBKqLsri/JfT0CBIwZBwDDYZAM8dicsfIWob7NAavFcYFEaawumczL4YBmiYDMccoSgbrP + QdKXYeOUQasJ+a3o6ZcgJ3ffnIcCdHc5mEPGJQkYNOJrdgmaRGZvBJnphHMHYaIZByrHHtrcYPJZ + hgRGvWqcoNZqQbmejMCh//PkxHJ1xDo8BO80sMmWH0YZPhgsmGHDyZAJZk4aGCicYTDwUVGkkAco + BkgOcGYQGjDj0YBcwUCEZQmgByM2zA5TQ17Mhunn5ntRni5mKMHKUHKnAQoYlaDpYgVGMSEQwGBg + oWLvqBiw4xYtEFrqHNFcwYoIHglEZiqYp+VhxwWbOATR0CRqQRqQCOidxdtS+LPehGtZx4DiqfCq + qkmmiIqlYkkYdIIkBkURnDYcJDgYhimMhnUkgiQZEkkoYEoYs+AFpgFJjA4EKoQGNGGBBGNIFrxG + ANOgMuEctpTIldMFgVYyQzB2ouku5AFmmE2FyHKbjLUzojKWSLGaalq1pQZDaOTS9VViYO4SqKHN + PhWJpT5RyJIhNerUjmrgZI5q0S5Kua1FOtmeVyZTFYjMXI9EM4DidPUobdDDM3I5iEyC7L39hufm + HclNuCX9feG2BxJ7Z6CpdZdOG45DtiGIpDVFP2KSPxScp6Sb5OxOKSyX1UAC8CAEgcD0YA4HRgMG + rG/kJSYrwYYBAJMKwIY0Vg3jJEvDJUFTHGLDCOtzUoTTDkYTGAmj+iJzI4izHceDDUNzIFBzH8Fj + AQERwHzCVkRAApigIoJB8zhXgeUwwKEozTPIxYe0/hPMuHzABcyN//PkxG5v7DpUpvd2VPDMCUHD + qRK5TVB8vSoCABkIdriYwJCgMfvkxJQ4RjpgYEj8qIwcoMTAGnrGMrHCwDumWRMeJDT0gyMOMRDj + EY4zJ1HTgwACMAVDPQ6duAAoLsqARYdDRIehp+0OJWHyR7UyjIgwOA0dwuemNjAoIgIICwEDjdJN + YFE1VJrMY00avUlzM3ybIygcAyzS5XCAIWUCqKJYCyAhMDAUQXpKoWPBqhKmJc2QLrf11E1YROO6 + zV5oIciAM5bJ5uV50fLcVuxfk5ajecQsVqkleKGn8XpKobh5n8BRSAZxz6CD4++nFzwXlNwTDHYv + G5p2dx+wveGXasqHtQa+vRlLAXAhmB2Sus6kNwFCGxv9IK0nafhC3dblEpDSvPQp0kIMFABP5+kL + EgmuKYBQCQlrglqdqXSNEArkVeiApcX9HARjjE0uEFhIIUVWi1QuvElmqBQS15n1MAEBAIAMMDcE + sxLovjgUHrMF4CowwQgTGUdwNqIzUxFwZjDBF1MOszw+jTPRCCkYNQd5jIyxwqUxleFhgQA5QDRj + U2BjCCJgkDRgwP5oY6hkiEIcQpnYfJ9k+Jo8JYGAIwFEgwIHAEFKEBhoYaGJmBBAcFCgmJF4QMFA + GYGCmEgZ//PkxIFx/DpAAPd2jBES1GzMmMRBHNepNAwcKjDsCoWYUHoUSYChosYMqZkAAwDBxMBs + 2MGATPQimMCGzU4k1WCIkJBOFD0SilroplUBMgCC363QsMEAkBgeBBAeGHCxkgKYqcmBi5jNyY4E + lkzGmQxIUhwHApggKYWIg4Flb/rCvGwBS5lcNw8zAWAzDRAxENGQoGgZnACZEQsmAwImIJEQkCCg + CFwkFEOKahgoqkwXeWEBgSmiSgaOwVAC88oZ815S1kjTHrQTUa6F2MOfGbkrswA0ddbezDcWIQ9B + rAmZQKyV1lgG+Zc3J41YkrllUqZ7ceOuuRkC/2uydmUQlc4u1/pLHXZi8jilJJnevSiEOdnnD1m5 + GIXjTR2SR6KymAK0pnYNdm3bf2HYnDMVuxyHp+IyyZjtLumh6FVZfA0NvrF4q+FalnLsxbzoLVeY + qRipMDA6AGQwCQAMMAjACDAjDHoxj4BlIgHYVAHjBJi8QwisF5MAWAHjBPwJswcsY5NZZCszBkwJ + MwCYB9EUAGp58AkESIHTItcTgIrQqAhgMKxiMLh9QXOIqS5udux20LQcIgFAwxAJIyFKMwsHGgs0 + jUPHCB4UAAqZ3pnuqLkkBiZSynhrrARQSGUEyJgQ//PkxIx3JDo8AP92jPDDgACv5XCr0GjIwJcO + aLE4waFIEjfDYYB0BxhYkY+LoTEi3HNZCwUlImGIUAGAwc4GJAJhhSZKfAYYBAEYoKmThwQXw6YW + SBDgBA0LgwXLDDA4xgoAASAGU21qNNODgCQ0ZSOpQTHiwz8UBhum4yRsKLYQFoTi64sFDoMHBreF + AaGHwKDR0FHgAqA5dMIODBScZC1TmGBxhweIwNIkwcRJhYLgAJBC46eYcLogP8gBMGBG6uWiqi8r + ajK7qvWiJvRhGFShhT8r8T9glxtMZfV6b0VedW7Bw26qVOI2OSK5b9ynjZBGqN4WjLvppGoCztrz + ruLEWcwxF3fd2VYsjlMgir4RWKRWXvxv3od+dlLOpl8qFikPQ9FIEdejjNO/lJFn4l0kl8ki8Zhi + BZjccaZKpdLGvztK0h08qJujhPbbgGXyGA7N6B2xO4/ecWdyV6pbzAUAXCoB5gUAaGB+nYDlcDBJ + AjMFgB0xL0LDB2CmMFoBIwFR9jQkFAM4cggBC1mAiHycJ6RhwEo8mQkwcMRJQQBwFGMlMa4PYcOT + AwGMpho+qvDVCPR2MLGYzANjJouMIhcQiQxaQDEQFMCAwGCsHC1F4GKGxGAajpQLai45xYnU//Pk + xIJu5DpYBPcykBmYMZp5zOjRpiIA14ieRpICTNQJUSJwocEqgMUbI4RmYw5k2Gskdb5uHBARiWmz + UIwWYMQdZpL8FqQuCAQSY4RjBQUvOZ55koAdAwVRKM3pgy8vOY4R32B3KUDDAMShmnuoEuhrrYUq + kL3LW8NEgodr6W5gGQWt8gSAA6Uax0wiZFIJY6Dhhgr1jRIEhzpXfVuVE7tIvySs1lshbHAV+XST + V2LymbyeCXYzzpRPs88sFTtlljv7hl+mALwhhrrzs2huHIfaZDD4v3AEFSFnbJoq6dZvYEbqy+Qw + A5y7KJtFzxydYYslpsfd9WtkscZAkfSUqhqmS0aVMxEdkr0pHsMfd4EpVnPzBjNWoqXz77sgwaOs + dsjboD1HlLG6PG5amC7H7aQzRnb7OwwxTSAoHcBTtkEvZQkSq9/6DiQwAWYBIFxgpBXmfSY6ZwQR + YYHWYBAlRiNJ6mKcAUFQCzDOSwNUcQQwrwUDBACJMOVC0yPBNQcI4YCYMxivhKEoDxgWgGGD8HQF + AdTBMAjMHsN0xpREzHGEtNFGAIWG+35+UiJMoMFDOFsDJsRMCFgElM6aKKggGAXETdCoSAhZf5CC + gUMBwMw4vAimp5TBO0CiAGGnnBQ4//PkxJl0HDpMBvbw+GKggYNBUfMuRxgABIEYermx2Bs5YDRU + BDhgBSYiBA4GBwoYmEDQeXfGAYIBl0CQkZkEgYIERQOiZpJYTM4EKxCUI9BUDGgMGDRlJYWuMQDz + egPMuxP9IoaO4ZgIMgQyVyBAr9XoTHXasZ80rDOZhq6HbfRwn7VWQeSK2piy2MNaWGd6/ZqxnK1A + 8UcqVOzEmVQN1iLfV0hWASuiVVCAslSFLapDN3epD1ta5UCPJLqgQJSkFFGgqAgpIwECDTVQlFso + Ah+DUqUArLIbhLotabCXhgWRbeVcrqxF+YIcZ+3lkUAV3ZfZu0GvzTu87sncZj6ElqzAobYq/zR4 + fLiw6w5pzDl3Q6pQzViL9N43NqEBp9KQZA0J3ZAu6MpfvaoKwN+xxCXTEAoGWMPc9ZKxl3pmr9VM + zlfONTAAAA4wFoAQDAVozRAy9MD6BNTAVAM0wQkH6M+ZFQjBEQN0wGIOtMepSPjFgQuwwN8BFMGV + EGTBEwj4wfHkySIkzj0wyGD4y0QA5InI/fVYxbDYwbF00wdk1sS0zgF0lDDUDMLAYYkmKEBoo4Yu + SCAIAJOYyOCwsEABhhaZEImDARbUw0KT6URDgVfzyAwAMXCEdhgIGR0yESDj//PkxJtwBDosAP92 + iDC4gYIRmICYADjJicw08BTUaKvmfHBusgTV5hIuaYkmdGYoFgYUMYDQcgpSgQECoUjeIAowsIEh + IyQ7MVVgNBGNphnpmRKIKkTFB8w8kIQYSHxoFRDT7JQoDEYIE8DAQQrFiYwEYCHFoMDobCoI7T5v + 4gOZu6qZKPq0nGYC7DNuSqH39hFDVjvJZOwrKgjde3ljVr4U0akFND0BT03Dsm4/slxlkjmpdDL/ + ZU8gp5TLJmGXSpd0EPUdi/ai0Spo1XjMpluu1cscKekt45U0tlE2/lLjp9KkhhUKoI3QxmkgiHXg + n26OW7GMUhMBtZjbaNCVK1J4ZOyxIpdKgyVsRnFAC+MqXysFL1glRgoBaazhRdK1IpcKz3CeZ8Zl + inWKw+2rYGX9TEFNRVVVVQWDJUjAVAgDAxDDhHbOytV4yQwLDB2FkNDB+w01SXjDWEVMOwTs8hFW + zIwBvEQ6RnbCKmDsCiYBAQ5kInUmSwHOYM4AJgCg4GIeIIYT4GxhJIJdG1AKyA5QXFQBBQEl81oG + hTFjjBgEdkI0iV+F7F1tdRPXMkMlqr5W1zFiQp0WHuU0kdCv+0VN0vwx4QAzRHU80nDBikzojElr + S2WTd6kiUNQM+yxr//PkxKdevDo0Tvae3M8aDKljIklQiKPCBZEYwO3aGFgm2fVpto5QHUlYmAC8 + FceKkH8cb19V3/7ultIRl9xdQDdMmYvB/GYd5gL5TnKaYOMUcJpHiiS5FSiWJUixLhVkyIMPovip + IKeCEHeQnqIuq2hrgikiXGqrL6hcNPJtyVeG77TheIj1Pr62iHbzKSips/jehQVnTaw1vEVsWA1O + 1lyTzCZhNToUYmrMeaElsMo5CFFCcJLjPHpcS7qSdkgNinmUKWS5xKlUKFyPE/WBnQRxMJKnFhnb + ki3LN1ExKjDeTEFNRTMuMTAwqqqqqqqqqqqqqjArgNcwEcIUMIaMZTWACk4w1QIFMGdBzTVexoEw + Z0L4MEdDDjL/TvczfQIfMJpDojGSEKQynAJKMBcAAzBHQ6Mws4LiMD8BBzAwgJ8wyApMMG0BkTA/ + wY0wtUU9MLzBRzAqgTQwWoHoMBQAETHw80qONrETHEYzRSO0GgMEBddExswMEMoAhUsBSgYmYmnr + YJBQMLGaBwGaDQ181VhB2UaU5HMVgZ+hUYIU034hMXKneAIGZYQloVpA4SZQu9pU3ALA7L8Oo0pY + eIsnXgrhOiHFAEJAsOgYMARgEH5igKPAIBdCEqEYsYGECwoz//PkxOxv7DoUAP7e+FUwhtORfgjh + bShLGvkjKhBGMyJBsY3DcCI1o5cP1D0+0ol64ECOYegmRJyTFCWBWCZK0nYJcgovCkUarPtjUSHN + 5vp0oE8hRyOUqRZFAvLfSCqORcpE54UOyeWmJWRDkSCIVbxIaRqZRDkplyoEspx9nilh2MSUL8nl + QcBorxjt4Y6fUZvkIV5bo4kgQUeYrg3Q6CTm8V4boDOlArQO4+BPiCKcIaYR/lmH1FJeIqehyHoU + Cy2JggyrZCxmMShuC8RZuN6PJMRQYZcwjwjCHnulj4TlTEFNRTMuMTAwVVVVMBPALTA3wL4w2gWg + NcmGHTCsgcIwksk9MmcGGDBCQj8wHwByNDUHAzEgAq0wlkkRNT1EpzIKgF8wegS+NVxBsyBATwcU + oZkZy5lrEjmAYREYWCxpjRG5GXaUQaDjnBpYDOmKiNyZ6hYRgqhtGGeHmYL4exhYBFmEmHucne5h + IimAAsZGWhkhMgxOmp06Fi2JF4z3LzKMENqTg+PbzYieMWvI2Y4hLRmaD6HPUy0IxIJGFAEt8aGo + GEgQFVTJDUCw6EhnNaHrj1TztIA1Dq6dVChC6Zc1tCUGlkCgmA0mmEheYlAJgAOGFxwYQC6AMwiD + A4Dr//PkxPNxxDoYAP+4jATugYMvKki1yAVyl6XT43KXNfaXKaPUmhMqnMpTCI1QQXA9aTRafpnW + YHAreyyTwFRu7G2uuY301WguRum8bKbLtPdEqlFTUcRppLMU07Hmmu/VgNyZp1GQS+87j9QI5Utc + p0468NJjG4BrUshmHBbG/jY2CLqhhJJrrAkQnLWgpmpbBLXYAh6WtNpX7d6edVv1+NVRSp2VPuj5 + B0Cq+iryMoruE77dmiyy67LiyBiTN7bty2LPfGoBfmGqZShma5n2cu84kw/ULlsWgSrDzcn9cHct + TEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQiJIlDB + HAcMJABsygynDaqEZMNULsxU2xzNgFpMQIMgyqDUhZFEw2ibDTMNtMbIocwIT4TXZG2MsCXMl0CM + 9l/MRT2NSk6NWUoNZSxMPUYMbkTNkgPNw3pOtCZP1EcMWRwN5gjNCRpMuiBMHx4EI5mJhGGJY4GK + oqGdgDGLAuGBJ2mSI3mVY2GZSDGF5VByGGCQmGBQmAQNTnSDOyNgFMmAW05fSkkwHXEAaY7XURKN + lUpbHHWuSFhMptyuI3oJjkNMFp3rYCtNHtIQ//PkxMtntDowHvdylBgxdxIYyxVjprLvfq1WrxlU + rY2BOq36Rr7O6xKRR2HIdk0SfeOvvaht73k3CXehpu0489BKItPP1adyYsv5TPTBz8tpCpa7WMRc + RrzosqlLiMjjfvdGmeOVg40shbWGVQPI79idgG5RTdmzIZXZuUtj5DCpHDVJLIYwm5PHow7Ltz7P + 4boGuPo1t3404kPv46jwyuFOg1qIzrwOe/zfN7DjGX1nYbfmORmM3Xd1L9zj+233gp3oakMxTNaZ + 1TV+w1DSpotQ0Usl8GzctprcVitiVS7BTEFNRTMuMTAwVVVVVVVVAJQjAFwIgwQcLlMQ5YHzXeJr + MtV7U09VSjE5GjNJNEMz2ifTHeUsMAxHcw9hujH4j9OlF+Q0H2EDNqfNMlokEwUzFTPCI9MiwZIz + UiZQEIAZSwXZl1lRGUyCaZ+4uJlQLAmLrAcaBbap0pJiGzUPkY7p+BjMFvGlKinQCfmT7zmeJOmp + ikGkDgm/0GHEiKmpsfHvg3miiOnLlwG7bJmfqumCY1GFhEmDZDFBImBY2GSgQBwGGIIAmAQUkADm + CgIBcDAAB1ZNx/2JDoBRZxU9Y6y1znKS4SYVsYMsdAKWtcpd5MCiPoQAJguBhgYAxd+H//PkxPBw + 9DoUFP+6HEIBYwDAYRgMWqTjiktm83maW/1iOQDGGEt6iWXRUwRzb61BTlP46NM/7daV7JczCCpX + ddJ2IBZo9zsQctKo2Gdlr/wVVoW49nYRqji8yw9w3/4/EdlE080riMRf1kt6Ho9G7ucqk0foZbTz + VHLZbH5m79DM5v080ocZ/mEuzVa9J6dxty+HXnpom/keZ7lAzBpY7reS5kUoizOpmUvbDzvUMcv2 + ZDJpVFlvwCzyGmzP67sgZlHIAgJ2nwj78yuQS5umG2XTdmQQZHpVTyGBJZ2as3KZTEFNRTMuMTAw + VVVVVVVVVVVVVVVVVVVVVVVVAJQjANCCMDQyU0AOJjJbFtMtx8MwvCDTBQKFMrIa4xUByjXPH6Mf + 0CYwbBMzcXNuGBcjWlf8M60yQz4GxjFvJqMd0NIyLiOzECHJMqEQIw9RTDGCK+MTkpYxuhoTDLOi + MMc9U1yzUjH5D/M2srUyAAozCQGtN4WqNURiMoWAMnjzNPg2CodGeAiGyJuGSgeGrsaGyK+HH6BG + BwxmHjzGTtomfZ4G7iJGZgfGUgYGTJmmDwcGEI3mUZYmLIMkksiNEJ8HTzLFkpBZehqBQ5lRokGW + mXOXy26PaB4CRlQmacWZUmZU//PkxORt/DoYFPd1CLmZYmndlkTPJjPHCzSVhMkIiqVTG7UHzEaj + TgX5BDUdiOTM2jKIJrtou9m9+I8gV/4JpJPf3EYvYtVc5mV0MCwTSQ/WtQVEozHOUGE1DEcrxeC4 + XlI35u24XcsQRU3BlvKUSyMTlyMXrksduB8qeG2dzepDHLN1w4vPyiQwHUtO/J6afhuJy+coL0kl + N2ddGOSS/NzMzK5XE4H5QTmeEd+X1+0UWpLT7Slu1V1aKvYquM1x/p2aZG2eG4l1251+mvv40yw4 + MzM1HijEPz0pfqUSh9JQTEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqowcQEjGiS+ + PnxNUx2hczPxPCMN0IQy6hTzD+DNMuEiMwYg9TJOLKMskNwxWjLDPbEyMWVco1RDhzE8OqMy4Nwx + DB8TIYD8MLoAQyKBOAcKoY2BCJhMhEGUWneYGIhJlNGYGSWHEYERMhkYgJmBkEwYr4dRhJwbKtGE + JYUDwxgTOMZMAIgAq7MTBzc4YaHjDTEx1sBX0eVZmvGBxL0dTJH25QuVmkoJoAeISQ2pJIJQCTpr + h4dThmXIBqjsYodGSGpyeSdTEmbpJj5aFAwagB4FAw0YiMjAIAhcwwRM//PkxNxr1DocAPbfFPSk + yEhNnLBITMdhzSyMy8nAwKHHRkQUCBRy1D05Hlh2/uRsivvDMlkczefxmJraHaTngL0zPSsOPGY2 + tjgwWqI3O6x82XlK2K86E2qWZoP9qfohMMs6rSzCc79yZT2boa09isC/lNnCnFan2A6iwo47ScHa + PBlLcTg3jDfs7UpkKLs4SI9vMYv8Zvc3BySdj/LyhQ+kLOQ0l20oIyT4PYvaMVSMVTCojJPlSI+V + dwJWRyS6tfRXJUyLuJIqlCebapFa4wXKLWiuewIEKHM1sMWLBf2qTEFNRTMuMTAwqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqgmC4HuYeEpRkSnNmCkFSaxQmIGB1M0cAowiB2DRQG7MLoKEx/TvjGdF + AMk5SgzeRvDKtL7Pm03JW0MEn2M41qM7inNYDRNlwuMNzNND9WNWRIPirYNEb4Mj1SNEEvNfiFMM + ykMpRQMXBRN8HS+Rih+Ih0ygtMPGjGRYFCgKCjBQMFAI8WpegQDAwSvAw8IMPEHXAAaYQLl12Al7 + UzTDzIxsaEiJAGCh0yMwM/jDV243M6NzSDJis8gwNREjLHcINTGC80MPMbFwKEDxk5BhoKCIU0sS + AqCWGIMMDik0//PkxN1sJDocAvd2jMpBTF20dGzMwgyMjByGw+MS2kp3kbR/XAp6G1elFuOw5LKa + rMdeGAo9FohLI3BDOG8diQQE/jd2XpOLNS3CA+sj20KmeWHHRd+Bn0eaYil6D84ImcZbqefWTRKV + zuXJqepYFtSWQSKcmYs4L2OVMwlhz+y92rEmcp629gKVUEtp2dNaclycYAZ9bkcWey80uzE5c/Ea + dOCa0hdnJ3ZTLp91ZRdf2U85VltyC31k9+H39dyrBsfjkGS576d5Iw+9WWSiayncqSXu7crTVBM0 + k1DcvlXKTEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqMLQI0AccHXGCgYMqABs6BfGIoMWa + PYUJg6L2GOICyYsqBprIEtGFU1gcgw8xj8PCHM6NQYGJ1ZmPCTGCGWkZLwmhg5lEGSiLeYShFpga + AfGOwMiapwDRhqALmSULWNCMmLEFWYC4MxiQgTGBKAIYRwHYYHgamBx0Am4WI0bBYNSfXEXWHgQR + AKkIerSdnLBXWkTEWvvwsMlqwwwMCYCY4CmGkAscmBhxgoKFA0BHJnxuZAPmwrRoK+c7VGGiYJIj + k0YDQJqQQZCcAprMKGWGggNAoqIwMxpqNtcjM3c0qHMO//PkxOFtNDoQAPbfGCgHH5sIcY4BmhDR + CAIJzAQ1SgwIAR/YIuigdt5Jhvm/kkoh+9DzD4yuQ0lonDmfBRiyiGG22jvBuqpoYjSC9P4ISBCB + QgBkliHHUcyRPpPnDZXPkhRZTysNJRpQ3IberlycSTcVwnXEsR/midSLbUNRA3m8fLcbqEIcUZSK + bG9nO5TTWku3D6TyHaVyYckSyfD9hTCvXLJztjLllak8ZSTRphDhMArkmXhRJ2A1sDO5wEJQBfjL + OU5zpQlmq+eNrioWBVN6QZWJuWiVJ84S/KsuL6NSgMxAQOGMBkZLDd7Rh8wysQeMCaHZTA8w4kyO + 8LCMa7DSjGmxhIxR4b5MfIHITEoBG0w6YBXMOzDljB9QZgwM4GDMESAATBDQZoHA1BgeILoYJSAz + GATAYZgxAS+YVQDcmBRhJBhPYOMYH2B/HdHppdof7oGtiZqRyYOiGmlxhYWZIWmFhJkwqYoJiIGR + yMQEyIYMFBAEDQ0upozZi/oXBk9G6qgUCQAtupkvlJl/hGCBAcqkYeFLLMEEVADFSYAgoCERkUGB + Ax8YMBLzUEM0YlCwkZGUBBOlA0YvkFhMy4zMIFDN1I1k0EZSZ0wmflRKfmvIIsOhwkYmMF00CxoF + //PkxP91zDn4C1/YAFGTBAdWhTaQy2NS6rD0uf6B5ZnEWQzjksgZWlQzpIp6m2VBQvazlpu23SST + WWkpSzVeCZ/W7LJV6jo1xibEHJWBUivZcKdDbNcWy7CskRYfKEjXHhtWxTVOJTFibYo7GGwtWqPQ + 5jcGXMhalIoy8L3PA8LtNhgqEtdm21l8baSup4XEYa15usA0r3Po1Rg7gxZ5pTBDtOW9z2vvJIbm + YdXUzV6HDpGut3ZI40IUNd6UvzI2Cu8xpc+LQmIxV732dGjir+s9fSGmAq5o5U5MMT/HGrS3Nl0R + l1UhQgxX6pKMGcRhjLnzuY2WoEOMK7OqzQqhT80fMK5MECCjDNsxDYwDsDWMWpCbDBVQIQwFEAFM + BWANAgBTMAUAEjBXgR4aAySIoASsYyaCygYSVCMCAi8dtiHWFQ8aKLA4OU1R8MJD1d0hoAkY8JgY + IERqFBdFMtwjaEBBhwSDR4wooMQASoHGemppZSbQCLrEhQgBwKBLYLWBAuIRRA5HREZcrSwUIhi0 + ZooDTwaqgmbp5mIWCgh60PkzxQDBoAqgX5WwzxGeEJruAZkPGTFQsKmbIBoB4YoGGss4OAlpruJQ + FrcnKoGw0KAwFAm2SMfVgzbLGaWyM0tT//PkxPp7vDnsKZ/YADTyUxIBMNJTLRE1A6MqJDKA4eOg + UCKYtFMHB1hCIWHRwuon6uhSC2RoUtI1r1bYMCqYMMlBlMgcDw+JApEHGDnJsr+beVm4HRlQQNBB + lJSaGRgZLSNZqIgZrqQSwqx38GgVW4u0uuH1hZO/LCIwFwYVBFSorqPKVLqZ4t9vWaRVuC3pYjsT + GhmI6Y2EohkAAGAiH65EzVpgUHEg9KtBIhIZwwqfsOw7LEJBF6B/G4yVWOVw+z+V0z8y1Y6hr8Ii + xJk8DvXHXkft+3Rd50ZVA0ujDtIHsvWmyxC92l6rDt1ZUrCnrBq6WyKrMddlobLn6pmdpVucgAAI + EgAhxjebkPGIiQoVBdTJo4IKAUfgpYMmBDR2Ey6/CBtwjMx8OZzpxw1+GMVBy27bmWh5jouUG5mQ + qiyJHpdBHcvWYcHEx6CkwyAIZShCYeJGuOpk5kXQh1XCjiRBgwqYYGmVDgIPhYYaoZwlmOkRn5EY + OEmFga14ESLceRGZhI8xEwkYiDsoAwWITIYPDZygIHTDgMUCHIXY6jvxJ+FrggCUMFg0SBwMJTgQ + lmKA5gIGGRIGJi2BgBGWBh9JY+CCRXjqOu/zQTFQsv+JEZkoWKBJqAsYkNGGAxg5//PkxN55RDpS + A5vYAFiRgaaJGeEZrAOIoExVtNomjNVs0KCEYGgPTomrEXiTqYw3F2DgYRBAgZCmiyECigBI4MGi + UBLTqZGABxppebS/A0yMwczu5Y5KIONASZsNpNzXAM1QmOBAjdA2ggR5MrDOKKjd+N2/ww1wysdM + fFRocBAAjuYmAiEdCENSdBKjCAQtY8rcodODKhWgNCWjDlM0AMOpNzKA8y8kNoHyzrTk0hhPBIUF + xUOLrbj5WOSu3bzt1MM6kswn5ROTlvi+GhpFobsFjcKh6lgh0i4ivC+i3XHUPDg9vSEBSbiSN6dD + ZgUDI0EgCCRJTMQAYoKg0BMbCFLTAAwUAQSHjwSIA4INAEKltSsoMAEjtDo69aMvODKQoBEyS5gg + OYYDmAlBmqMZGbGVjhjY4ZCDLZQsTpirrNs/0VfhrSrq19fawsCAUEMJAjCQIHBiWaFgIBwEggYJ + ZSChkaAAUCkQKtZhjlMuY/BSCZyn1U1UBU1WMyaH3vaXC4ZSULxgYLWDU0QKC4MpJmlHp6lgAKBJ + VDIEKhRgAGDiQSBDBABJMEkQ8MmIC4XCBIQZKZOIFBdKigmUrKgkBh5o4iDyg3GAN3QoFmBjhiI4 + Y0QGTHZnxGYMjmUA5oBu//PkxMx6/DpEAdvYAA4nMoOAgSEJGBEo+GuPHXDGS8zAPNhmj1YoyswM + kFzS2AFJxjiqYcLhRmNJAzMEMyAMAKUZAeNaMMVzXmM3hdMQPRkFMACAaBGAiJlAqBAIys8MjDFs + iQigoY+LCyCYOLGJkQODjEyowECEIAHAxiRWZ2lGdixi4saGhGusBrqEZKHAkPMWJTFRoxUkMnCG + 2JQExIRDgELhxQPGEihkJoZmSGTlhi4kZGMGChDtl5jBhMxIbMWGzEhcIGVBVHIaZFKmarqca1En + GusiQSlsQECoqrRLkpqsOVMzlnMVuQ8zKH2CvAXNLQrpsQxBLWVitkZzNs5pYjDCgSmSDyJrat1a + ajaAgFACmKX9QDLqnobZbDtK5MolCRyks3ZnLDWmJQmm5x/LkYODHACZihCGYRvjwACkzFjMFWTN + QcyMdMoJjGUMwshCnDhMzxNsTBM0gNjDoQMCOEKHpCrvcNKwBBZiYyautGYIJu8AOs5qacY1Ym9j + YQKmsnhl4YYKKDRmYEKmDkINHgSDjSCZCBmLkpMMipKgKMCDRECl3IEBI2RChcUGC4FEiY5ASeZE + KmDhAMHTWR0xQLKDIxAOLQgIFTVVXGQQvFE26J3GIF5mA+YkUGlm//PkxLN6ZDogAt42ikZCAGMB + hmasYyAGzhwGNjjIES5TNbYylAnyQCIh8y4XCpQIx4mIQuBGakRMhg4JNYMQoQhUFMdNjDxszM2N + TMDNxg3iZOMSQstnq5RkIubhCmdHZlQMZRKnCDoJIjV4YEBBoJoZ6PGFLIZwmhpBiJCaAYgEQDiE + w8KWFMmJwoIBAGYgNgwAAQkgcRAqCxYBDL0o00qMVIDHRoWAzDQ5TMBApcksBRkIom+wQwUAclBE + GAYYKiIJMYEQEGmBAKKq2UfWRMhGQADBzOwMAy102uomlkS5JflQ5Poty+cSiLq6bq2rMmJOzAsf + f2mp51/Zbestaa1Q3H+l2WVd2Za7shpq0lhdFK4zLIGf2pKGu3bdCxGNWppsjSX9WBX7RQw2FYs4 + 0p54lRw8y6nrQEzmITzowidpqF2VMRztNNjZDHzNKEBOAFjN/c6MdUdOmF7MwyyMbiIyCNAuejOe + PNpI42WvDO6AM2jQyCgDMRnMGHw4K6jUbcMVWTlDI0o1MpNDDyoBCBmIsYIVinScPRGnXRidSeJh + mLRhpx6bU+nDrRpMIZeGGGS4jPDBAc0MaMvOguVmhIJoB+ZUcmfGJbwlCzNCsVETJCkHFphYkAgc + wwJbEyow//PkxJxyxDoAAO82TNASEDMQGQCgGbhBj4UBAUCAZmh+ZoHigGPAKJ2CYLsMffhc4kLG + AgENiw2ZcPgkRM8STLA8zxPHBswofMiPTZDkxw9NQHWhMGaU5JgoAYWKGNlhl48CiZN4x8cEZCZO + AKUDwMquYEDmWC5l7Yb27GtqxsUKZIzHVzhrp8aGlGUiCXZhYsUBzNXxAgiY4Ls1RCQWLlAwFect + q0xp4YCxgUEzEBUaCUErOWzRRNJkLXWZKBMRghwpRCrkBtZkLkyRlMVoJc/y0mvuVDcOwZZdllMS + 3L8IeZs0eWVYtp/pJKbkKt1dT007U9D0pqymdvV31sUlqExPkdo8KebzkUSnIrM9l1uN0UzUhirM + 1ZfBFeHpVGoREbMUgiURqHKeQydxJDOQiIUUspbLcpZKbszcpUwLatUZ8Jyf04SaZIcYGHSYnBAZ + Ej4YDgKYLgGFApEgBMAAYMPwYMFwvMJiJDA5HAC4AsNMElCNQhiDtFMsxYQ2KYiEIFJeBQiIBBgR + JuEZgXB56QYrHgKNpiiJmkYOAMRMKWDDxcJc6m6arKoPjj+MNXCu9YyTkDAql44nID0bp0hch7Gs + F6TsXBGgmkPHUQocpbYAdI8AYxCSrfFIOoup1iTG//PkxKNdlDoENO6emBi6D/NgfV3YnJwiZMZf + ySUUR0xCqKMkpdGxVE7VgxRIhymGZy5HkFWXQ5+D5CZDmRhPgrE0EoCrRxGSSluMswSNDtFrN9VD + tD+KxUmqJczGpYNMRw917C6ck6hjAYRtmOQ0n471WXomRfyxCas5+nUdb9ieMCnLc3sUN0bioUDa + d68dZjJB7tCp1wwK45S5N5bkgeVjMbFtfOg3EORSHHWc64NIhU+y/Jclh/N6qL8hJ/J5YNI5mWIa + SuHMddTBLyn4hxR0scMbppU6VdFahszipTgVTEFNRVU3nWtDQ3hKMdJNcx3yUjHOJ0Mcg2UxO1JD + WjG2MT8MgyOPzMY4NRnQRtwx05QrCjOIzKpgNRhIxCIjERzMiEwx2FTYi5NcE8Rm0x0IjC4WMHA1 + xUEwEAJjMpAEngLg2H1rhcVfhigmgGhKN9gGlgA5D5lQiQTzDXTHVDg1cmeQnktASCNMSODpiiqb + xegIIDmguoCgzKAbyDBEeYJwYMIw0jEvmoPGCjQqaxhShEBOsMeL/FoxAAXPS9VTX4j2YSKFKsgX + ALPGAUGGInF2y4hiiAUxB6XtCRGXxG1HGKBcRnKX5Z1nqEgnWCMlbAAEYZBa5+1hlHl8AaUx//Pk + xPpzZDnQAPcyVIkDHzRjqAo4MBHliIJLAIGFBQQguAwzggpTZRUKFzQILSHBSaERjiPYsGYQ67G+ + BBSCZBPMo/IBQIKDA1ZU+0wmOqpqVpINxXsMGMAAgCI62nKL/svL3OusVW4uEnCgnYnDSwS21KYG + X6IRiAmKp6MZd1U6ZUqf8ugreBglLlNm5ttCn4b9pq51aEeFDFcN+x5BKYQY6G9awTrNLbtAy/3T + RSSKQGShRULAoxK3JOpCggUaMQnp2ShZyCeXK0J7v8w2H5AhugGKoKezShUIcFZSmbFVTEFNRTMu + MTAwCaDQsJjCl3maAMcYO4pplvF8GwCAOYLBNAck6YMYHIkR8YdwBxg4AaGFqGSYXACxgIAbmxiG + qTI2qxCRI4IQ1wkz4YFMDTMyUwAIgZyMcZNGRAJsxooHQjCghq2Qjy85lRJlg5rzAgUmNQGePiyQ + DGguRHDpphYIAhiwusDg7GwdAp0owqQJKCRxKRiOYbHCZhUsGg3IElDOk6PDmJ3A2KEoMKpeDjA0 + hdlBMakqJETRCACiBqSiYm0dgsVLcmkjyIFCNBYQAnAu6O4KKHDUkB1pQFm0aVil7B7STwGARWDM + pQKPxMsi5TMFLw6ivkhkBxt0gcUP//PkxPZyTDnMIPawmAuVPkVoZyGUSWid5EtGpB4QvZYXkQFI + uByEEAJYXTd9WkI0XKAYhIzniI6DZcU1IWHDhp7ggbehgENUyhwZaNd0hTTLwOGIAv0pgPMW+gBR + tgVlyCEtAkQKmIptdU1ZOog46/03Zx/C+U2QIRzZc2ix3MeZXyIaVoWTAMSZcTTaGla1NxQINlKe + yLa6SYCcqpUNHLguLIIlFHNQ1Qns+WupeMKWqvcCjUudSBUckegcIHDZKzI3sEos0ZqpQiq8KeLG + 0fpcxB91YlAk5ggDnF22mOIqTEFNRTMuMTAwqqohxtnh199xqzOJiOSZkO3RlgsRvlf5iGl5h2TJ + gsNpiqSQ0gxgmIZQNw0FhgqBw0DLYyoCKNgBARBCNAGYVgYZMgUY0DoXbMdwSFNgkKQCe4aEOJhn + hnnGkgDWjwyMYALTDyBiBgBIqqqqJlKQMiYwgkTjQfIQ1jC6pnHEAxYEROMY2nEhjHQHwgqupqMI + j00XHCQSYNPA6YxSQE2GtA7+DRCiaqJykgBwSoNAIUGRsaYiawQCjAssSyNEEBTGCiFTwc+m+AAS + 8abwYeYp5nknGGYZZQeY4IcAXtg0RkJ7qWP8kQWyXskGstDsZRQXEZowVia+//PkxPRxzDnQIV3I + AN8SQYaBTqY2iapIQhIAi840A1dsStyQz3l83uTdTeLqioyVAkgJCojpcAwAcKfKZXenMkgqgBA0 + zWkqlAQAkilWl8vwIGTXRnTCAhSsLlqsEYKKiExOQvCnHDBkmpnKakoJcloaqRcMxhIomzJh49TJ + UNkWDehUpAPxMuKtzQxX20YgAQRpOII2KPsoywV/hQJkqtpdhoSViiS0HSl7DWmsynXIZ2IiFzr7 + TnUAVCy1CBH9qaH6+FL3mUKkj2JrqHt82VAXaLxpToGAA1SpgK9Gvw7VNP9XIxUAcDJOctDhiTS7 + OUMf0PIxHwRDAKAfMBYCAwOQRDDqADMEMAUwOAOkczBUAHQTlqjAxACAgIAnTuBgMDGTppCYiIAU + eGUC5JlkxmSSckAoJl7Cwsz40w6oDNCWQWeRmIjjKmTgoCTAI2yifIjJq0JnF5xWYAFDoIIJsFFh + KqjWFGWHlnx0LF1aD2qTYYDwGhGcASU35uNGAEmWEw4Bjxhwzvt2QdYA3Z+I2MAT0OgADMmDAKk1 + Y8whQfHBBEDBYPaQYAG/SeU8kUl+vmcdJ93sT0flgpvrh0kwowNwcMOJOomAp0DRyAKjkQBGl7dg + DC0UgKGrjQtAMmWA//PkxP93VDnoAZ7QAIKntNOZWUNZS3dOcLiGRL5M2FCw4MnmcaG0OGBPE00D + AzLEgKbM6RFkK9EfBQHSv8lchUkiucSBgkGxBl65mRtACwJWRS5gJgQxbqDmEIADCgSAE5ohBlUB + Di9DTowEDMyhMKGM4SMuCNEWMUCMUSASAGiwUIMATNKFKoEw41frYGYOMl3Yglcz+NIT5XJD7jqH + vtCoqtSVwXABUCQ6w59mnwRDkRcqKu3FZmPNeXkxhc6p3jeBVqBNCeEGwEUSbMMKDkBghwQNLZix + gKgwwWW7MaHGg7NkbC1hETU0cRVMQU1FMy4xMDBVVVVVVVVVAkkihtienBDuabFBpcbKmmTJIQHi + qJGorCbPgQDSZyFyTEwkAwQCAinsYSKFUJFBQsEwjCzCAppTLp5H2HnSBoUSBZgwGFR8tHWly0XR + NDLjVxgwI1MyezVldpSuCIhBxKjY01mTxLua8IWk4yfMmPAibMxJDB7wwMUa8Bg8BDRjAyDQis1q + LPrFX1NUHTd1Azl6HQkOLzb5Azo3EAeDiAQgQQFA0TXqXAlMtlOUy7LpGdEZk8MY4dg0aBAGFBww + 0SMCURgPIhcCkAEA1mmHC7ulzGvLlfqGqtLNYzUamjFAMyob//PkxORt/DnkMZzYAAsLhgyYGIMp + MVJA5iWcIxRCes4tyud4kfCECTmFAwaEQgIZ0hxTSjVfGAkvmQualU3JUy7pSnSYgOgwFMMDy4iS + r6GJgyYgXBiACV8upNGYJAVk6sK1VcLaW+ypsqZKdcAKZLdhuDoflseq0r6/qmmWUsR1DU9Ko0j6 + ok0owAGAAGIgcCjxZ0RAA0BuiKgyt6XSspjAmKA6SCLZcIwEGCDtpqXyyWxM9YZSypRScdNmL8tj + VpX/RvanMoI678w1KYy/v3IalN6m3S2atK+s0/zWq1qqMvPc69nz3GtO/TU2oYTB52Nato3a8Dbq + 4JkYZhUBr9eGpTwCkEYaHpkokmPBWAhakqYMC5hgJjwJAoKMIgxBcwoKzGgzJlzUrPLE6GRI0QgG + ScaJxlhMgMMoyQFbzGRNI9EgyXDniHhDPiOuw53DRAZ2BBzMRM4tZwUFM5U1lzSLFgQqUbdB10CS + IBQNdQBNNfLglxW9aUw11WZAEYzTjLATTNCE6JSsMynTifNQlThHpOpspalAMkU06DVMWSqHGOga + qCcIJGMsgICdNCSii8r7Q7hDTWl3Nej6cqAVpzwomlsS0qVrRDBKM8hWwyUjREUzMZE0iS8hu5H7 + 0DqT//PkxP913DksAdzIABWjjeNURd5gEmUSChV0u1PpogAMxA0KRkI1YDniHhTDQNMpPMAFmcaR + AgFA23AgkRhGaka6xqnBwwWLN608rSg4zIzqrOJUWJL7GOQZIwGGaa3JFZTaRspSFLuoOwM7MJZE + XeQBOOFATEFR+bCXdLIloV6pbGKYaJyFKRxggFrmTOil6iqkS70dYaqVYsCukicXiaa8SwyxmvTz + 6qAqCxtHksqWZRReVkRcItMul6kExZYs0rEoaYhpnHl0lkgAMwgy0LNUQjHONExVoJGMsoyQE1oN + UxUFYjVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf47145a136dd7-MIA + Connection: + - keep-alive + Content-Type: + - audio/mpeg + Date: + - Fri, 03 Jan 2025 01:39:54 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=eeTdYKJr9gIqzMhrs3ogB.7vpUtQCGdUuUHy9Ut33xY-1735868394-1.0.1.1-uVPeGsbAl9HlYSIPEf21cVvYXM_lNUoxx36U8zVL5HBUZJ4HM_f5qrqj1Z6XmGoi5GtBGxPwuspLQl.I3ptWlA; + path=/; expires=Fri, 03-Jan-25 02:09:54 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=lQo2EMdsPF5pw33qdpNwwmLZ_clT60g9fgj8io6QyTY-1735868394306-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '546' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-86c664c4fb-jnmj7 + x-envoy-upstream-service-time: + - '528' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_f51edf9a6b96e7a8b3975ed7c19c6c82 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_openai_tts_wrapper[tts-1-opus].yaml b/tests/cassettes/test_openai_tts_wrapper[tts-1-opus].yaml new file mode 100644 index 0000000..0c13023 --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper[tts-1-opus].yaml @@ -0,0 +1,169 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1","voice":"alloy","response_format":"opus"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '81' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + T2dnUwACAAAAAAAAAADKq+RGAAAAALw0AmcBE09wdXNIZWFkAQE4AcBdAAAAAABPZ2dTAAAAAAAA + AAAAAMqr5EYBAAAANH9ijQP///5PcHVzVGFncw0AAABsaWJvcHVzIDEuMy4xAQAAACYAAABFTkNP + REVSPW9wdXNlbmMgZnJvbSBvcHVzLXRvb2xzIDAuMS4xMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9nZ1MABCCCAAAAAAAA + yqvkRgIAAABfPh9iI15zb2Rka2FjcV9mbGddW2pnamptcWxraltRZWdoZVZSVU9BaAEeVpYY0GAz + p42ct+I2K6AKLQwpfi0SQs4oq0eVGh3VNyfWY20O7gtDG77zMkb7Sivx9gnk7MIr0pers1SUfBkj + fiwR+F8mK8+prCmyGX5kCjBDZK4BWzofyljVqWiBFlzk8pRI9zzk+w5noYfeLm0gL2yoKpCv1aHP + N9rKIQTQmZXT7P/zz3QDEp1XS1Ue3Fukr59LJuzffPRaBZi89Tnlwp/W78EqFik65s9DAfj9h6XH + nyxjvr2awf4xG+p5HCY3Vn5ynhSLU+bEGuHq6YVogyXspGvhP/knvbPcPi77b2E4drMEHcOCLOkT + J8RMclGQ/U4ygcSnPpiX4RtRdABIjzlc3L4J83qCaxG+oNSzkvj0Uq4ctsVYl7nIJBn0UhqZCOli + PBwj1ALVux816kndpHJa/EkLEoy52FZEA5RoguHGAc6wlukLgmfhb76OAVVsCTXUneXxW0feBjbo + zSwOFSna2gPAZVvaAjr/SOtYotvJFSaDbXlNP4yyFj2E13Z3DrczsHXFwb8jSxP1Ro04gaOMbY6H + 7ak271utwgEiIygHaLHkqtwugUbf62KQ2aivWHRdqYFS/TNccX/dLuDfW6sGvVYLeme6sa6N46oX + roc2+EoLiWlVseCVpa70nkdtvti3XRbgXKOSLYKvu7FljaBjNPuSVSAZlEcWq2pNDuz6KR0qFmiw + BoHMoYZIxIoS3eG/ZQeUGi1/84pjnp83AGQu5Pb5/80aiwy82nPQpxmutHEpMti8x6FFdC/WdKn5 + vsyrRCtDaRzvZF/70Sfj/gUgQYolvhS8kTRi+MphBZ/Wp7xSb/04oFweJ7TLPlSEaKxeBgjnAMXl + TdDnlV0otI5Ewp9p66MlGu3kapKEuE3CLntMfmbhbbGHQ1a11mHnW427c0H733VWUfxyAfOnD3ex + lrl0npoIMZNThPM/qMupvpixtKy/tpionE5xFiFWEmipGqxzIEPAKuqm9kxTbDmfUW7TeoLM9aGy + qg4Xbp/84BlWF3lTScAsyKs6oQoizOhdHi0drW2TrSNTYYWBo54A4APTXpvwPFXa3SeKhgFfCMg0 + znwle36XI93QEsQShVuthWiwmYD/DXD0Ww9XfyDFBKS638ffDTufOXXEXtzoRPQDh5VNMPJC7qgq + wJ++EjsukcHJJ100XbHUMEi1ZVDwmCidelYMcFsLsWaQoGsOatrX0HGCa6W/bOAKHo4PuEqKtG0V + OGlvwywUFsZ3bEHbwahuaK/RE+Y34tMBmIQvV1WwJjxSBdhQXAhdKavkq7f0QqR3KI+8bs2yB69q + DhUmxntL1pS0ClZjY0Wiq+8ikznpI/U+XtvGoVScMVkNNdCPwez1y21yMeqD00mVeg7MgwVorf0b + HLJBC5KG+PHfyY4hrBt/l8E+Im48g24d3S+gd9/yPbz4/CNG9OLqE/Pi5LOjDbXLWx4WZCdFzmOH + muvso+Lrj/zmjDdVwJzuaxfYmdOCAD9fBHtmm0Ss9UcWchQJlL3Xm+poqTs1o2e/kbHmNq6ZNFtc + SZIXV9FhixelCupMz8p/uOJEDL/IxIZ14wbK8YiB5tLKX7yMXTQdmMt7j3aG4qpCeIrylnV6fhoM + hDE78AF03ElGhTSyvDJQEFOdYW16Ll4NTvFqJTLsHNA4vW9ooL30TAi1zKjo/VEH6G6cB74rjLeJ + h0uAwjX00EOj7IYQrmB0iiXMM7jwgW/bniBw6EjcU6lOhd3an4AWBOULP6OgEydaiq2JuIqUS18e + qLhqtdemK0biJulKX+nRAeHSjKC/jxmDaJt59lORZ7t9lXkvVYb/voXu852BQFZHQzjFgYmhobdf + 8yjzj+kf9Jy8YAeks7IYqjmyH/O25zZ10rH2jttRJnHQ+m9nGfHf/oQiOFh37QCEynFZi7kl9ykd + QUlPaJq3p8pySfhW+bFn4wZqGycVxO9ZHjeQgrRFNS74bTBUxqJ3UD3NV5w9/NJrZOiMZpUjsevl + BHOOOPtacMEG2+XF5fSA6ef9mneFPMgEAEdNUIP9AldCRGzJ5WibpzqgGCdIdYdHUZmaDC6QyOPE + F8czJdUCtTeTMa7HIWgm5IZqbdUitIekscez19xlsTViwPhBqSIEEo+a1Yn2queSjsmViO1C2f1R + JE1O1UGqbTUnXQqPik2LsWWX5T8Fjo7SD1fSWkBom5n/SrPueMcgXVtrc76EyJGdh/E9W0CN91sA + 43pyUSvfXG/KHvPgvgiZSM3fV9Zkt3klRQyyHlkv2m+sMp55taqPHMjkel0GEET7T0IkBZcGhg9O + 8mL3YkvjGqtF1Z8pJiK252GVaJujH6SGT/7AHOqgfClTtinvUazoXLXAWay9nzgGZoDSsEDwDxNz + Y+/jQMDb26ZkVSaFIa8KMGgPL5mLBY3KZbzBlYPXz9Au2flh60iqmh4Gw0JkvMjcLVUjRXwId2gq + GElzY6Ozf+6+amibjR8hsleFxbP9qX+QiBncC9jriQDw93gazYira0wJTwITKSHRIBVumyowWyXh + C7V1CVSgYrSYMEnp3hs+RHREWT8c9kKqdPnDxsZ9iTd4nhaDHusvmgBMkgZ2CbTmTIFM26Hfcxkm + HW5omy7xjlTkXxRCYR+AjBQxBezJ7PNOj5nX25GpJ/IpENw9lcdwnVvh1O/K94mG4klT19Q1dQWb + yud6zyfbh6DzVCljfT4dO169XMbDfhWpDN0Tf5TekbS3Si+h37sPyp2f2MFCX0uv+llmncPOaL22 + i33P1yQu7t2djo3AE2fWZOVwlkRVEGHClDd1Vlxm5NtmkVa7lUDYHlOqjIABGftDNVulYGc1sCSB + 35DHYPFOS9UVeGC4gExwzo5aSYvWDATODg2UbqCaheqEoqSGOkP0trwnBhebtcwl6UhdOP1ogUkK + BxavqPIfy+yjGDDCgxZjb5K0DE3Ug2IbC6RWBKHe+UMCHkgcPGtkpfsdlm0MS4rGyo27VGAJD0fm + sH474ubIse6czwqdZoZBl3E5I9TS95wJioeCpezw+yKRPVJtgj7lmrQ+9kFOJrlogUew8BhPqoK3 + 3cxP8Ri7IJ2nsuaERh9yu4gbGliNRBBg60XJq7TurPPQCAP1KkpK5HNHvXRinwpmtHTSWRZX6WXL + sRTIa80LKfyh+pcApGs87ZtcjkHpqy5cTrEumnTq+tDeybU0naTasWiBHxiGGmP8c3mc7cG7pmJU + DAIHADjGUJ42hg+vgJLmdJPYGTAS0UXAESwwkhmY919vkQYe9n+lRyzVTVKXVA+NiXpl2MWwy6sk + 1teFbXL5eD7QlRJSNW2nJXr77D7lWNEH38y8wLJMyxdogN8CwPl844wNB0Mj5MIFv/GiguAoLFT1 + oeody1rVw6k2cN0P851ywR9r/J3NLy9Dyj3tztt+0gY8RDXZVUkRiOvyY/W4DzSMyxQiMHk8omq2 + VX1se9zyYcvKaAJRM02sGrklB3ipkn6e7neh2yQ4DNPe1oAZNpbOst5SaurEp5GHdYEz1MsH6tcf + pV9HCIVRdG1QOmNZ6KzHNRzGdDuZlceMJlcb9IzGiBM4aIAkJqXFHutWQkitzd7c9s82ZvlcNz2b + UX8LCYaDXq4Wc1zL62vEU9ju1FWiUnz7DJUcOfdYBKLz38Ma//Ko9+fu2QNLgXF+TD1Xh+E/dlpm + Cd2wswn66WhHW66MdYrH5TAbZulok3XiipKIb4sH61u7sSjXci8hjBglhnZNVEFfV+iFF2rYYtHL + Idy/ZQRlKsDPs2WdeW66J7qPyJBXp3QMYjOLZxF1n40XxJMLdMp4w+bft8svjRp/CXem/KIDonZX + 9XbPCK5GIn4faI5rZZAgDnsE+fOP8AW6788dPkHm4XSLFLNMDQWNt0T9eSW2uA5tmzThiRAcNKng + uDmsmVXM/4Xr1N8KNZ06HB9aMmZnzZ9R/nb6PLRH9h40LDIUEXW55t5oL4lJlcZGOBfEfoFsME9o + gRyjaopcvzSpjLykmxC5itLOq0DquOZvja1F1wWySpiLJCCxPe9LnGhTy392hN25WZgTPGCt7SoA + UzXfzRM24lWxOmRUajY/w/si//je96xGEQhHe6rjn6fmm2xvR3rRa2hNKGgo1svzBMwK1F+/83e7 + B2XyZz+8wNSIvKxvrAE/xf7Y8QIG1ZFd8hGmyBqtaqz8DAwEvh/5HFMtHBFRJP4Yf0eVFybOgdpL + 3YdVtViKIen7V/E1WfCDaBdzN4tWPjKgZ2Ad6DnY5pJrFAfKrcdmpX9SVXzviOQGOIbUyKCVQ55p + /6ATogSdkFKiOfjGWncGAlaLOug7b1rV6VRgEFMH4PY0QBiPXbSDc2gBSNJeBw69fbuBy5R5EscE + vITPa0byRxwfVkKU6UPgJrUr8sTZ1TU4evEpXOqiXttkq/gtLm6aDsApD8CDRwx+KebT4wZYXSnV + 7JllPz+yhE/pugpoAMbVG2mW6QU/ionattq743R7/Tdm4lMY+b30GKuFPSLg2w63/aexXSqz+ywd + rll9Om+2QDRNBXe9ewDPyPruN3397yP0mLQmQGqoeuOHaA3Vqn3ggG7+IlVxrtLd/GhMdJ5a+Qxc + zmPBZa5D5UoVPdXTeArInkAnPO8feAPuLwbrHWUHF3raTkXj9SYkEZU= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf471adaaa259a-MIA + Connection: + - keep-alive + Content-Type: + - audio/opus + Date: + - Fri, 03 Jan 2025 01:39:55 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=8O23L2dNK17uDXJKJOc10elMnIXbY8fpKD.Q1xHDQhQ-1735868395-1.0.1.1-yukyKg.YdQ5e6ZLPNweMDEwz5aUEXHxYXTjCMv00tI14f4_OJqqsX5SVQlhVqVhwz96o2p6QjADKkdGmY2pR3A; + path=/; expires=Fri, 03-Jan-25 02:09:55 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=VKfaAhNvqkd8mPvSwdMw4UUbtkwXiTK.Xj9f.NAZqkg-1735868395477-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '700' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-6646c6d4d-mhkjt + x-envoy-upstream-service-time: + - '686' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_05e176fffa8fc8824ac4e31c6a1e94b1 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_openai_tts_wrapper[tts-1-wav].yaml b/tests/cassettes/test_openai_tts_wrapper[tts-1-wav].yaml new file mode 100644 index 0000000..13a49b4 --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper[tts-1-wav].yaml @@ -0,0 +1,693 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1","voice":"alloy","response_format":"wav"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '80' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - OpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - 'false' + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + 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 + afjX+Ez56fmf+mb7G/zE/GL97P1h/rX+8f4Q/x//KP8i/w7/8P7g/uX+/f4e/1j/p//x/zEAbAC/ + AB8BYAFqAUEBCQG2AEcAtf8M/07+bP10/Ir7wPoe+of5/fiE+DT4C/gR+E74qPgP+Wb5wvlD+tr6 + bPvv+2L8x/wb/Vn9n/3o/TP+av6N/r/+Af9d/7T/FQCCAPUAWQGlAQsCegICA28DtQPDA7QDugPo + Ay4EPgQ8BAoEzQOSA5sDuQPgA7wDegMrA+gCzAKkAoUCMgLpAYUBEwGnAD8A+f/X/8D/fP/z/mD+ + +f3e/fT9MP4k/sP9Cv3F/BP9w/10/sD+yP7H/gr/wf/GAMYBeALUAioDuQN9BEMF7gVyBu4GbAft + B1sIsAjwCDoJjQnjCQUK5QmLCTEJ+QjeCLQIRwiQB7YG+gVwBRAFmwT7AzkDegLqAYoBOgHmAI4A + PQANAPn/BwAVAB8ANgBtAMcAKQF5AbkB+wFSArkCHgN0A7gD7wMVBEAEdgSwBNYE3wTbBN8E7QT5 + BPgE6wTZBLwEnAR5BE8EFATHA28DGgO8AlECzAE/AbIAKgCn/yH/kf7z/VH9v/xO/O/7lvs0+9X6 + gvpS+j36OPo6+jX6Lfos+jf6Vvp2+o36k/qT+o36i/qH+oT6fPpx+mn6Y/pe+lH6Pvo3+j36UfpZ + +lj6UfpH+kj6Tvpm+nH6cfpj+k/6S/pQ+mD6Zfpg+lf6Wfpo+nv6mvq/+uv6FftN+4v7zfsQ/Fj8 + oPzo/Cz9aP2a/b393P35/RT+Kf4y/jL+Lf4p/ij+Lf4x/jr+Pf5F/kz+V/5m/nn+hv6T/pP+nP6e + /p3+k/6H/oD+dv5o/lP+Rv46/i/+Lf4f/in+M/5D/lP+aP6G/qH+wf7j/gj/MP9T/3b/m//A/+X/ + CwAvAFoAgACoANgACgFAAWwBnwHOAQACMQJhAo0CsgLSAu8CCQMbAykDNAM6Az8DQANCAz0DOgM1 + AzQDMQMcAzYDKQMkAx0DGwMYAxEDCAP/AvUC6gLkAtoC0ALMAskCyALHAsYCzwLVAuAC7gL8AgoD + GwMxA1EDZgN5A5MDqQO6A8kD2QPtA/8DCQQKBBIEHAQhBCgEIgQpBDEENgQ1BC8EMwQ3BDMELQQw + BDEEJgQaBA0E/gP1A+oD2APGA7IDpgOaA4oDdwNrA2MDTAM/Az4DKwMiAxYDDQMAA+8C5wLZAsUC + tAKoApcChAJ0AmYCVwJDAjYCLAIZAgUC+wH1Ad8BzwG9AaoBkwFzAVkBPQEYAe8AwwCWAGIAMAD3 + /8D/hP9I/wj/y/6N/lD+Fv7V/ZX9Wf0c/eL8qPxt/Df8//vH+477WPsl+/T6xvqX+mz6O/oV+vL5 + 2Pm5+Z75h/lw+WL5WflM+Uz5Q/lE+Ub5TflX+V/5bfl6+ZH5pPm3+df59fkQ+jb6Vfp9+qT60Pr7 + +ir7W/uM+8H78/sn/Fz8jvzD/PT8I/1X/YH9rv3Y/QL+Lf5S/nf+nv7B/uP+//4i/0T/X/98/5T/ + r//E/9r/7f/9/w4AHgAqADMAOwBBAEQASgBMAE4ATgBOAEwASABCAD4AOAA1AC0AJgAhABsAEgAL + AAUA/v/5//P/8P/s/+j/5//l/+T/4//m/+j/7f/z//z///8KABcAHQAqADcARABUAGQAdACHAJcA + qAC7ANAA4gD4AA0BIAEwAUEBVQFnAXkBigGaAa0BwAHPAeAB8AEDAhYCJwIxAkQCWgJqAngCigKd + Aq4CvwLOAtsC6gL5AgYDEQMZAycDLwM4Az4DQgNHA0oDSwNNA0oDRQNGA0IDNgMvAygDHAMOAwED + 9ALkAtYCyAK5AqYCmAKKAnkCagJaAkcCOgIuAiECFQIKAgMC9gHsAeMB3QHYAc8BzQHKAckBxQHA + Ab4BuwG7AbsBugG9AcABwAHEAckBzAHVAdkB3gHjAeQB6AHuAfIB9QH4AfkB+wH7AfYB9AHuAekB + 3wHSAcQBtwGlAZEBdwFdAUQBIwEBAeAAugCRAGwAQQAUAOL/sP99/0z/Hv/r/rf+fv5O/h3+5v23 + /Yn9Wf0o/fv80fyj/Hj8Tvwm/AH84fu7+5/7gftl+0v7N/sh+w/7Afv1+ur64/re+tz62/rf+uP6 + 7Pr4+gX7Ffsr+0H7W/t1+5H7svvW+/v7IPxH/Hb8pfzP/Pr8J/1Z/Yn9uP3l/RT+RP5z/pz+yP7z + /h//R/9s/5P/t//Y//j/FgA0AFEAaQCBAJQAqQC+AM0A1wDmAPIA+wADAQoBDwERARMBEwESAQ4B + CgEFAfwA8wDsAOIA2gDLAL8AsgCkAJMAhgB4AGUAWQBLAD0AKwAjABgACwACAPz/9P/w/+v/5//i + /+P/6v/p/+7/8P/5/wUAEgAZACMAOgBLAFoAaACAAJIAogC5AM4A5wABARoBLwFFAV8BdAGQAaQB + uAHPAeYB+AEKAiACMgJBAk4CXQJrAnkCggKIAowCjwKVApYCkAKJAoQCfQJyAmUCVwJCAiwCGgID + AukB0gG3AZYBcwFRATIBFAHxAMwApwCHAGEAPAAXAPL/zv+q/4f/aP9F/yP/AP/f/sL+pv6M/nX+ + Xf4//iX+DP76/en91v3G/bX9pv2X/Yz9gv16/XT9c/1y/W79cP1z/Xf9e/2C/Yf9kP2e/av9uv3J + /dz97v0C/hL+KP4//lj+bv6J/qP+vf7X/vL+Df8p/0b/Zv+C/5r/t//P/+v/BAAgADoAVABxAIUA + nACwAMYA4ADxAAYBFQEpAT4BTwFdAWsBeQGFAZIBmgGjAa8BsgG5AbsBvgG/Ab0BwQG/AbwBvAG6 + AbQBrAGmAaABmQGOAYUBfAFvAWUBXAFPAUQBOgEwASUBGgERAQkB+gDzAOoA3gDVANIAygDEAL4A + vAC5ALEArgCqAKkApwCjAKEAnwCeAKMApQCiAJ0AogCjAKUAoQCgAKEAnwCgAKEAngCWAJEAiQCD + AIAAewB3AG8AaQBiAFUAQgA/ADUAJgAUAAkABgD2/+L/zf++/7P/qf+W/3v/aP9g/1X/P/8l/xf/ + Df/4/uP+0f7G/r/+r/6d/oz+gP51/mf+Xv5T/kn+Pv4z/if+Jv4i/hv+E/4R/g7+C/4L/gr+Bv4K + /g7+D/4Q/hb+H/4g/if+L/42/kD+Sf5V/mb+b/5z/oD+kv6f/q7+wf7Q/t7+5/71/gn/H/8x/zv/ + TP9i/3L/fv+M/57/rv+7/8v/2f/o//b/AQAMABoAJwAzAEEAUQBXAF0AbwCAAIYAhgCQAJ0ApgCs + ALIAuQC+AMMAyADNANgA3gDfAN8A5QDrAO4A8ADxAPIA+wD9APoA+wD+AAEBAAH/AAEBCwEQAQsB + CwEOAREBFAEQAQwBCwEUARoBFgETARMBGAEaARMBDwESARYBFAEPAQ0BCQENARMBBgEBAQQBAwEA + Af8A/AD5APkA9gDyAOcA3gDhAN0A0ADKAMgAxgC7AK4AqQCoAKIAlACHAIUAfgBxAGQAVABKAEEA + NAApAB8AFQAPAAMA8P/k/+D/1P/A/7T/r/+o/5T/hf9//3f/bP9i/1j/VP9M/z//NP8v/y3/I/8a + /xX/E/8N/wH///4F/wT//P79/v7+Af8C/wD/Af8A/wD/Af8E/wL/CP8R/wv/D/8Z/yD/Jf8p/zP/ + Ov8//0P/Sf9L/1L/V/9Z/1v/Yv9m/2j/av9w/3j/eP96/4P/hv+J/5L/mv+Y/53/o/+g/5z/m/+i + /6j/qv+y/77/wv/L/9P/0P/W/+D/3P/b/+P/5//w//j/+/8CAA4AEgAYAB4AHwAnAC8AKwAtADgA + PABBAEQARwBUAFsAVwBWAFUAUQBSAFIAVwBfAGgAZwBqAGgAYgBeAGMAYwBiAGcAagBmAGgAZwBs + AHgAeQByAHIAdgB2AHIAbABnAGYAbgBpAFwAZQByAGgAWgBRAFQAXABZAFQATQBKAEoARgA8ADYA + OgA1ADUAOwAzAC8AQABAAC4AIQAZABcAJAAdAAQAAwALAAgA9//w//X//f8AAPj/6f/n/+b/0/+3 + /7H/sf+t/6//uv/A/8j/uf+k/63/tP+d/5P/mP+b/6b/of+U/5v/p/+f/5v/qP+l/6T/qv+s/6r/ + o/+q/8//zv/A/8X/0P/U/77/vP+6/8T/y//C/8j/3P/h/+f/8P/k/+z/9//u//D/+P/i/+D/AwAV + ABYAHQAZACMAHQATABUAEAD+//n/6//q//j/7f/Z/9v/zf+0/8T/vv+k/6v/uv+R/4r/o/+j/77/ + +f/u/8//5v8YABcACAC9/4v/lv+0/wAAFgA3AIMA5wDBAAwB9ABbAJAAswBpAD8AHwAGAIUA9ACg + AAsAegAaAQMBdgBMAKsA4wCKAJ4AagBBANIA0AAUAHUA+wBTABsAGQCN/oP9wP8sAzwDdgDT/jMA + kQLxAdT+8f2AAE0CeAFN/yT+XgCaAT4BZwB+/uP+RgHzACr/Bv5E/c/+8AB2/yX+Xf/ZAKYAsP7O + /Sb+kv/X/xP+/PzD+if71wA0A40BQgKwA0gCTQBG/Uz7Cv8JA+IDIgEFAUMEHwXEAvT+hv1v/qYC + gwAx/csACwTJB9P8JOtX+h8FAgCw+uD51APECEIESP3d+R4DwAaf+f31twCiAtH8+fvh/ooBCwOb + /jH9iQPgACH7yfua/zT9/fZW+kb90f0uAMf+1f7XAF4Fdv3Y/U4EYQC2/wQAOwBoAKwBhgHr/2YD + lQOXAmwCkgDYARMB5QHiAmb/f/6GAEH/HgD8/nP9NP0EALMCi/r2+CwCyAEN/3P8nf5lA80BX/5O + /F/+iQKQAtT+rv8EA+cBHgLiAzcDJQSAA6kD3wTIA9cCsgIeBMkDEAKaAoQCgwPEAjgDywIJAvcB + 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 + sf+d/wsAiQCOAG8AugATAQMBjwA1AGAACwH5AOv/Rv/U//gAOwFiAHD/XP9XAEYBEAFGAIv/e/9H + ANwAtwAkAM7/HQCZALsAcQBHAF4AUQA0AD0AgQCnADcAxv8cAMwA7wB0AMz/ev+k/+j//P/t/9L/ + yf/5/4wA+gC1ACgABwB9AOQAywA9ANn/BwCnAO8AgQAqAFMAxQCkAAIA3P8/AKwAgQAZAEsAqgCd + ABgAtP/n/0UAUgA3AEoAUAAtAEAAkQDJALgATgAdAJcAywBkAP3/DQCBAJQAKgDm/xMAhQC2AKcA + nwC0ANgApwAxAL//oP/u/ykA+f+K/3r/LgDwAOkAVgAfAHgA1ACaAN7/bP/D/0wANwCT/1v/7v+E + AIgAJQADAKEAGgGKAKP/a/8SAL0AWQCO/4P/RAAbATEBnQAzAFcAegAwAMj/jv+5/+b/x//e/y8A + dwB2ADAA1P/b/x4AHgAGAAsANwBnALIA8wD9AP8A9ADsAOEAqgBkAEAAIgAUAB8AEQAPACcAIgAE + ABAAUgB0AEgA2P+O/5j/tv+8/4f/gv+9//n/KgA/ACwALABOAFYAPgARANL/p/+Y/6z/xf+8/7r/ + 5v8jAF0AawB1AKkAlAA9AAwABAD0/7r/P/8a/3H/ov+f/2v/ZP+0/wUAIQAgADIAOQD+/4//YP+f + //D/2/9y/1L/2P+JAMkApwCuAAYBNgHeAD4A5f/j/9//nv9l/4X/0//k/6f/i//g/1kAkABsADYA + TwCBAEoAyf98/5n/2f/S/6n/4f9GAGIAGwDq/0YAxQDJAGoAIAA4AGYALADT/9j/MABNAPf/jP+W + /xQAcABcACYAKABHADwACgDc/8j/pv9f/w7/Ef9Q/3z/hf+G/7j/AwAoABkAEgA6AFcATgA7AC8A + HwDt/7H/uP8DAFIATAD8/8X/zv/q/xgAMAA3AEAAHwDQ/5f/nv/o/x0ACwDN/47/mf/S//b/+v/w + //3/GwAXAOb/sf+p/8f/6P/1//X/BAAXABcAGgA3AHsArwCeAEUAAwAGADoAdgCBADsA7P/W//P/ + KwAyAOf/l/9w/3n/cv9X/2L/mP/P/93/uP+j/7T/qf9q/zT/MP9F/yL/wf5n/mD+qP7u/gr/+/7x + /u3+3f7M/sX+x/6q/mv+Kv4L/g/+JP4l/ib+Ov5l/qH+0v7u/un+7P4C/xn/I/8b/yD/OP9K/1H/ + X/+S/9P/AgAVAC0AZgCZAKkAjwBoAGkAggCHAGYAOAAfAC4AQwBOAFkAaQB2AHQAZgBpAHcAgAB3 + AFwAOwAnACEAFgAHAPf/+f8QAC4ASwBmAHoAlAClAKUAlgB9AGQATgA+ADEAIgAdACwAUACBAKcA + xgDaANgAwACXAHEAUwAuAPv/zv+4/7D/sP+z/73/1f/0/wwAJAA+AE8AVABVAFUAVgBRAEsARQBJ + AFYAagCBAJoAsgDPAOIA6QD2AAUBEQERAf4A6ADZAM4AtgCjAJAAhgCJAI4AlQCYAJkAmwCLAHgA + YQBKADIAEwDz/9v/zf/E/8b/xf/B/8D/xv/b//H//P/4//D/8f/w/+T/1f/D/7n/tP+q/6H/l/+T + /5f/mP+b/5//pP+n/6D/kP+D/4P/gv+A/3r/c/90/3r/f/+E/4X/gf+D/33/eP92/3X/c/9v/3n/ + gP+K/5T/n/+n/7D/tf+x/63/ov+Z/5H/j/+J/4j/jf+N/4j/hv+I/4//lf+P/4b/gv+A/4H/ev9z + /3D/bv9p/1z/Vv9T/1b/Uv9L/0T/P/9E/0n/S/9P/1f/Xf9d/17/YP9p/23/a/9n/27/df92/27/ + bP9u/3D/cv9v/27/bv9x/3D/c/90/3D/cf9y/3f/eP96/3v/gP9//3v/ef95/4P/jP+T/5b/ov+r + /7f/v//D/8T/zv/Q/9L/yv/A/7v/u/+5/7j/uv+//8n/0v/Z/+D/6v/x//X/9v/4//n/+f/7//v/ + +//3//b/+P/+//z/+f/6//3/AAD+//j/+v///wAA/P8BAA4AGQAgACMALgA5AD8ARQBBAEMARQBI + AEMAQAA+AD8APgA3ADEAMAAwADEAKwAsADAAMAA1ADgANwA/AEkAVABcAF8AXwBmAG0AbQBqAGMA + YwBmAGcAZwBsAHIAeACDAIYAhgCNAJIAkgCPAI0AiwCFAIYAhgCEAIEAfgCBAIIAhQCCAIUAjQCX + AJsAnACeAJ4ApgCkAJsAlwCVAJEAjQCEAHoAgQCEAIMAgQCFAI8AoACrAK8AtwDEAMsA0ADTANQA + 2gDZANMAzADIAMUAvgC2ALIAsACpAKUAnQCdAJoAnACbAJgAmACXAJMAkQCNAIUAfwB5AHEAbgBi + AFoAWABTAE0ATABNAE8AUwBUAFkAXQBjAGMAZwBsAG8AcABxAHUAdwB0AGsAYABeAFsAUgBIAEAA + RQBEAEIAQgBJAE4ATQBSAFQAUABOAEgAPgA7ADYAKwAhABkAEQARABEAEQARABEAEwAdAB8AGQAd + ACMAKAAmAB4AHAAcABkAEwALAAEA9//2/+3/4//n/+f/6f/w//X/AQAFAAYABQAIAAcAAwADAAIA + /P/0/+7/6P/p/+r/6//u//b//v8EAAoACwAPABEAGAAeABUAFAAYABYADAAGAAoACwAGAAAAAgAG + AAsAEQAYAB8AKgA2ADwAPQA9AD0AOAAvACkAIQAVAAoAAgD9//r/+f/7//7/AwAJAAwADQANAA8A + EQARAAgAAAD9//X/8f/n/93/1P/N/8X/u/+7/7v/vP+9/7//xP/I/8//z//L/8//0//R/83/zv/N + /83/yP/F/8j/yf/I/9T/1//V/9v/3v/c/93/4P/l/+X/5v/m/+b/6f/x//P/7f/t/+//7//u/+v/ + 6f/q/+f/6P/k/93/3v/d/9f/0f/P/9H/yv/D/8b/xP/A/8L/wv/B/8T/yP/D/8X/xf/A/7z/tf+v + /6j/o/+f/5r/lf+U/5P/jP+L/4//if+J/4j/iv+N/4P/iP+K/4X/g/+J/4f/hv+H/4f/gv+B/3z/ + ev97/37/fv+A/4r/jv+T/57/qP+s/7H/t/+9/7//vP/A/8H/xf/E/7//u/++/8L/wv/E/8b/zv/R + /9L/1P/f/+7/9f/8/wMACwANABEAEwASAA8ACwAEAPz/+f/1//H/8P/s/+7/6v/r//L/7//v/+z/ + 6//o/97/2f/R/8j/wv+7/7H/rP+n/6T/n/+d/5z/mv+Y/5f/lP+V/5P/lf+Y/5T/kf+T/5j/mv+a + /5z/m/+Z/5v/l/+b/5//nf+h/6H/p/+m/6r/qP+n/6j/p/+j/6T/pv+n/7H/tf+9/8T/zf/W/+L/ + 7P/t//L/9P/1//L/8v/z//T/9v/3//f/+f/9/wAABgAMAA0ADQALAAwADAAQAA0ACQAGAAIA///6 + //n/8//v/+r/5v/n/+r/7f/r//D/9P/3//T/9//4//P/8P/r/+X/4P/Z/9D/zv/Q/8v/yP/E/8r/ + zP/M/9T/2P/Y/9v/3f/f/+H/4v/h/97/2P/S/9L/z//K/83/yv/I/8r/y//N/9L/2v/j/+n/8P/1 + //X/9//9//7//f/9//3////7//r/+v/5//v/+v/5//r/+//9/wAABQALABMAGAAaAB8AKgApACQA + JAAlACEAHwAcABUAEQAPAAsACQALAA4ADgALAA0AEwAbABwAGgAfACIAIgAhACIAIAAfABsAGAAX + ABUAEwAQABIAFwAdABsAHgAnAC0AKwArADMAOAA4ADUANwA4ADIALQAnACQAIAAaABcAFAASABQA + EwATABYAGgAaABgAGgAdABsAFwAVABEADAAFAAAA///4//P/8f/u/+n/5//o/+f/4//o/+3/7v/x + //P/9f/4//f/9v/2//b/7v/s/+3/6v/m/+b/6P/r//H/9//+/wQABgAMABEAFwAcACAAIgAnACwA + KwApACkAJgAkAB0AGwAZABYAFAAUABgAGgAfACMALAAvADEAMgAzADUAMwAvACwAKAAkABwAFAAO + AAcABQAAAPr/+f/3//P/8v/x//L/7v/r/+v/6v/j/9//2v/S/8n/wf+4/7H/rP+l/6H/oP+j/6T/ + o/+l/6P/o/+h/6H/nP+Y/5f/lP+R/5D/j/+P/4//kv+U/5f/m/+e/6H/qP+u/7L/tv+8/7//wf/D + /8T/yP/J/8r/yP/H/8r/zf/U/9z/2f/h/+f/7P/y//n/+f/8//3//P/+//7/+//4//f/9f/z//T/ + 8//1//P/8//1//X/8v/y//P/8v/w/+3/7f/s/+f/5v/l/+T/4v/g/+P/5f/k/+f/5v/m/+X/6P/p + /+P/5f/j/+H/3v/e/+D/3f/d/97/3//e/9//5f/m/+n/6//u/+//8P/x//H/7//w/+7/7f/r/+n/ + 5f/l/+X/5//p/+r/7f/u//L/9f/1//f/9v/0//X/9f/x/+7/7v/q/+b/4//f/+H/4f/f/97/3v/g + /97/3P/e/9//3//e/9//3//b/9v/4P/c/9r/2f/a/9n/2f/c/97/3v/d/9//4//q/+f/4v/m/+j/ + 4//j/+X/7P/r/+r/7f/u/+//7P/x//L/8f/r/+z/8v/t/+z/8v/s/+r/6//q/+f/5//n/+f/5//p + /+r/7f/r/+r/6f/o/+j/4v/i/9//2v/X/9L/z//N/8z/x//H/8j/yP/K/8r/z//T/9L/0f/S/9b/ + 0//R/9b/1f/T/8//0f/W/9b/2f/Z/9v/3//k/+v/7v/w//P/+v/2//n/AAAFAAUAAwAKAA0ADQAN + ABMAFAAXABkAIQAhACMAJQAnACkAKAAoACwALQArACoALwAyADIAMwA2ADcAOAA2ADUAMAAuAC4A + JwAkAB0AFgASAA4ADQAKAAgABQAKAAsADAAQABIAFAAXABcAFQAVABIADgAHAAQA/f/4//H/7P/q + /+P/4v/l/+H/4P/k/+b/6P/s/+7/8v/q/+v/8f/z//L/7v/w/+//8P/y//b/+P/y//b////+/wQA + DwAPABEAFAAYABYAGgAjACcAIwAYAB8ALAAnACUALwA0ACUAIgA1ADkAHwAqACoAJAApAC0AKgAg + ACMAHwASACIAJgAdACAAIwAjACUAKAAsADEALQAsAC0AJQAkACMAHgAdAB4AGQAVABUAEgAPABEA + EQAMAAkADgALAAgABwAFAAIAAwABAAMAAAD5//r/+//8//z/AwAGAAIABgANABAAFAAVABQAGgAc + AB0AGQAYABgAFwAaABgAEwAXABUADAAPABEADgAOAA0ADgAHAAcACAAKAAcACQAGAAAAAgADAAMA + AgABAAIA/////wAAAgD///7/AwADAP///f/+//v//f/8//r//v////z/+v/2//X/8//z//j/9f/z + //L/7v/v/+n/7v/u/+7/6f/r/+3/7f/k/+T/7P/i/+D/4v/i/97/3//k/+T/4v/j/+L/4P/g/+P/ + 4f/g/+X/6//k/+X/7//s/+f/5//t//H/6//q//D/7//s/+n/7//w/+r/6P/x//D/6v/w//j/9v/u + /+//+f/6//f//f/8//7/+P/7/wAA+//7//n////9//7/AAACAAIAAgAFAAUACQAJAAwADwAMAAoA + CgAMAA4ADAAKAA0ACQAHAAYAAwAEAAUABwABAAUAAwD9/wMABQAEAP3/AQAFAP7/+f/+//n/9v/5 + //z/8f/y//T/8v/x//b/9//x/+//9P/2//L/9f/w//P/9P/0//P/9v/5//b/+f/5//v/+//+//// + AAACAP7/BAAHAAkABQAHAAoACQANAAwACwALAAcACwAUAA8AEAASABUAEwAQABgAHAATABMAHAAb + ABYAGAAfABgAFgAfABwAFgAZABsAFwATABwAGwAXABYAFgAWABMAEQAbAA4AEAAQAAwADAALAAkA + DQAIAAoABwAGAAEAAwAEAAUACgAIAAkABAAGAAUABAAFAP//BgD//wQA/v8BAAEAAgAEAP//BAAD + AAAAAgACAAQAAQAEAAQAAgAEAAYAAwAGAAgACQAIAAoADQAPAA8ADQAQABEAEAAPABAAEQATABEA + DgAYABYADwAOABYAFAAOABIAFQAOAA4ADwASAA4ADAAOAAsADAAKAAgACQAHAAUABgAGAP///v8A + AP//+v/6//v/+P/2//P/8v/1//P/7v/v//D/7f/s//D/8P/r/+v/6//r/+z/7f/r/+v/7P/q/+v/ + 6v/o/+v/6P/r/+3/7P/t/+7/7P/v//D/8P/s//D/7//w//H/8v/0//T/8//3//f/9//4//j/+v/9 + //j////5//7//v/6////AAD8//z///8CAP///v8BAAUAAgABAAMABQD//wQABwAEAAAABQAHAAQA + BAAHAAYAAwAFAAcAAwADAAQAAwD//wIABQACAAQABQAFAAEAAwAEAAIAAwADAAIAAwADAAMAAQAC + AAUAAgAAAAUABgAFAAYABwAGAAMABAAFAAIAAQAEAAUABQAFAAYABgADAAYABwAHAAcABwADAAQA + BAAFAAUABgAGAAUABwAJAAoACwAMAAwADQALAAsADAAKAAsACQALAAsACgANAA8ADwANABAAEAAR + ABMAFQAVABIAEgAUABYAFwATABIAEAAQABMAGAAWABQAFAATABcAGQAXABoAGgAcAB4AHwAdABkA + GwAbABwAGwAbABoAGgAcABoAGwAdABwAHQAdAB0AGwAYABgAGgAeABwAHAAdAB0AHAAcABoAEwAP + AA8AEgASABUAFQASAA0ACQALAAwACwANAAoA9/8MABYAHgADAO//+f8xAA8ACgAVAAEAEQANABMA + FgAMABIAEAARABAAEAAaAAoAFQAQAAgADgAOABQABgAcAAMAHQAMABcAGAAOABkAEwAaABQAEwAT + AAsADAAPAAwADgAOABAACwAMAAkADAANAA0ACwAKAAkACQAJAAkACgAJAAgACAAKAAkABwADAAEA + //8EAAYACQAFAAUAAwAGAAEAAQD//wEAAAABAP//AAAAAAAAAAABAP///f/9/wAAAAD9//r//P// + //7//////wAA+v/7//7//v/+//3/+//7//v//v////7/+//7//7//v8AAP3/+//8//7/AAAAAP// + /v/+//3//v8AAAEAAQAAAP7//v/9//3//v/+//7//P/7//z//P/6//z///////3//f////7//f/8 + //v/+//9//3/+//8//z//v/9//z/+//4//v/+v/4//v//P/9//v/+//7//v//P/8//r/+//7//n/ + +P/3//n/+P/5//n/9//4//j/+f/6//z/+//6//v//P/8//z/+//7//3//v/9//z/+//8//r/+v/7 + //7//v/9//3//////wAA//////////////3//v/6/wIA//8GAAIAAwADAAAAAAAAAP//AAABAAEA + //8AAP//AQACAAQABAAFAAIAAgACAAMAAwABAAIAAQACAAAAAAACAAEAAwACAAMAAgADAAMAAwAC + AAAAAAAAAP////////z////+/wAAAgADAAAAAgACAAIAAgABAAEAAgACAAEAAQADAAIAAAAAAAMA + AgADAAMAAwACAAMAAwADAAMAAQACAAMAAAACAAIAAgACAAEAAQADAAIAAwADAAMAAgABAAAA/v8B + AAEAAQACAAEAAgADAAQAAgABAAIAAAAAAP//AQABAAEA//////////8AAAEA//8BAP///////wAA + /v/////////+/wAA/v//////AgAEAAIAAAABAAEAAgADAAMAAgABAP3///8AAAAA/P8BAAEA/v// + /wEAAAAAAAIA///8////AAAAAP//AgACAAIAAwAEAAIAAQABAAEAAAD//wAAAgAAAAEA//8AAAAA + AgD//////v///wAA//8AAAAAAAAAAAAAAAAAAAAAAAD///7//v/+/wAAAAA= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf473018a9334c-MIA + Connection: + - keep-alive + Content-Type: + - audio/wav + Date: + - Fri, 03 Jan 2025 01:39:58 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=Sa06m97P7HRwT0hySpTDkos_38SWWWdxvhOgKc7lUhA-1735868398-1.0.1.1-OW52JacLXMNrys26ID_dx5Nm2w3sV3qRrZrwgyQ_oJHXm34_fd__pt2NUQpVPmbSlMmr4DrA_CbKLDifmOe3gg; + path=/; expires=Fri, 03-Jan-25 02:09:58 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=l6dV7wEQ2Iy.ZPMFSnwalzB9D0qXEnthDXMI3y7jDmY-1735868398805-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '635' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-67d4454577-z8whx + x-envoy-upstream-service-time: + - '110' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_4d28339c4aa4d7547100196121321709 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/test_openai_tts_tracer.py b/tests/test_openai_tts_tracer.py new file mode 100644 index 0000000..6eb0500 --- /dev/null +++ b/tests/test_openai_tts_tracer.py @@ -0,0 +1,24 @@ +import pytest + + +# XXX flac is buggy, returning 0.0 duration +# XXX pcm is not supported by mutagen +@pytest.mark.vcr +@pytest.mark.parametrize("audio_format", ["mp3", "opus", "aac", "wav"]) # pcm, flac +@pytest.mark.parametrize("model", ["tts-1", "tts-1-hd"]) +def test_openai_tts_wrapper(tracer_init, audio_format, model): + from openai import OpenAI + + client = OpenAI() + response = client.audio.speech.create( + model=model, + voice="alloy", + input="Hello World!", + response_format=audio_format, + ) + + assert response is not None + assert response.scope3ai is not None + assert response.scope3ai.request.audio_output_seconds is not None + assert response.scope3ai.request.audio_output_seconds > 0.5 + assert response.scope3ai.request.audio_output_seconds < 3 diff --git a/uv.lock b/uv.lock index 60e8098..04701cd 100644 --- a/uv.lock +++ b/uv.lock @@ -1225,6 +1225,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/99/b7/b9e70fde2c0f0c9af4cc5277782a89b66d35948ea3369ec9f598358c3ac5/multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506", size = 10051 }, ] +[[package]] +name = "mutagen" +version = "1.47.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/81/e6/64bc71b74eef4b68e61eb921dcf72dabd9e4ec4af1e11891bbd312ccbb77/mutagen-1.47.0.tar.gz", hash = "sha256:719fadef0a978c31b4cf3c956261b3c58b6948b32023078a2117b1de09f0fc99", size = 1274186 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/7a/620f945b96be1f6ee357d211d5bf74ab1b7fe72a9f1525aafbfe3aee6875/mutagen-1.47.0-py3-none-any.whl", hash = "sha256:edd96f50c5907a9539d8e5bba7245f62c9f520aef333d13392a79a4f70aca719", size = 194391 }, +] + [[package]] name = "mypy-extensions" version = "1.0.0" @@ -2151,7 +2160,9 @@ name = "scope3ai" version = "0.2.1" source = { virtual = "." } dependencies = [ + { name = "httpx" }, { name = "litellm" }, + { name = "mutagen" }, { name = "pillow" }, { name = "pydantic" }, { name = "wrapt" }, @@ -2201,11 +2212,13 @@ requires-dist = [ { name = "anthropic", marker = "extra == 'anthropic'", specifier = ">=0.40.0" }, { name = "cohere", marker = "extra == 'cohere'", specifier = ">=5.13.3" }, { name = "google-generativeai", marker = "extra == 'google-generativeai'", specifier = ">=0.8.3" }, + { name = "httpx", specifier = ">=0.27.2" }, { name = "huggingface-hub", marker = "extra == 'huggingface-hub'", specifier = ">=0.26.5" }, { name = "litellm", specifier = ">=1.53.3" }, { name = "litellm", marker = "extra == 'litellm'", specifier = ">=1.53.3" }, { name = "minijinja", marker = "extra == 'huggingface-hub'", specifier = ">=2.5.0" }, - { name = "mistralai", marker = "extra == 'mistralai'", specifier = "==1.2.5" }, + { name = "mistralai", marker = "extra == 'mistralai'", specifier = ">=1.2.5" }, + { name = "mutagen", specifier = ">=1.47.0" }, { name = "openai", marker = "extra == 'openai'", specifier = ">=1.57.1" }, { name = "pillow", specifier = ">=11.0.0" }, { name = "pydantic", specifier = ">=2.10.3" }, From 4f8f3e4fc49ce0eed1bc64a68c6d8d85f2171e6a Mon Sep 17 00:00:00 2001 From: Mathieu Virbel Date: Thu, 2 Jan 2025 20:04:02 -0600 Subject: [PATCH 2/2] fix(openai): implement and factorize the code for async --- scope3ai/tracers/openai/text_to_speech.py | 51 +- ...t_openai_tts_wrapper_async[tts-1-aac].yaml | 166 +++++ ...penai_tts_wrapper_async[tts-1-hd-aac].yaml | 161 ++++ ...penai_tts_wrapper_async[tts-1-hd-mp3].yaml | 362 +++++++++ ...enai_tts_wrapper_async[tts-1-hd-opus].yaml | 169 +++++ ...penai_tts_wrapper_async[tts-1-hd-wav].yaml | 672 +++++++++++++++++ ...t_openai_tts_wrapper_async[tts-1-mp3].yaml | 362 +++++++++ ..._openai_tts_wrapper_async[tts-1-opus].yaml | 165 +++++ ...t_openai_tts_wrapper_async[tts-1-wav].yaml | 693 ++++++++++++++++++ tests/test_openai_tts_tracer.py | 22 + 10 files changed, 2792 insertions(+), 31 deletions(-) create mode 100644 tests/cassettes/test_openai_tts_wrapper_async[tts-1-aac].yaml create mode 100644 tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-aac].yaml create mode 100644 tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-mp3].yaml create mode 100644 tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-opus].yaml create mode 100644 tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-wav].yaml create mode 100644 tests/cassettes/test_openai_tts_wrapper_async[tts-1-mp3].yaml create mode 100644 tests/cassettes/test_openai_tts_wrapper_async[tts-1-opus].yaml create mode 100644 tests/cassettes/test_openai_tts_wrapper_async[tts-1-wav].yaml diff --git a/scope3ai/tracers/openai/text_to_speech.py b/scope3ai/tracers/openai/text_to_speech.py index b9c7ccd..a5daf66 100644 --- a/scope3ai/tracers/openai/text_to_speech.py +++ b/scope3ai/tracers/openai/text_to_speech.py @@ -35,41 +35,34 @@ class HttpxBinaryResponseContent(_legacy_response.HttpxBinaryResponseContent): scope3ai: Optional[Scope3AIContext] = None -def _get_audio_duration_from_response( - format: str, response: _legacy_response.HttpxBinaryResponseContent -) -> Optional[float]: +def _get_audio_duration(format: str, content: bytes) -> Optional[float]: try: mutagen_cls = MUTAGEN_MAPPING.get(format) if mutagen_cls is None: logger.error(f"Unsupported audio format: {format}") return None else: - mutagen_file = mutagen_cls()(io.BytesIO(response.content)) + mutagen_file = mutagen_cls()(io.BytesIO(content)) duration = mutagen_file.info.length except Exception: - import traceback - - traceback.print_exc() logger.exception("Failed to estimate audio duration") return None if format == "wav": # bug in mutagen, it returns high number for wav files - duration = len(response.content) * 8 / mutagen_file.info.bitrate + duration = len(content) * 8 / mutagen_file.info.bitrate return duration -def openai_text_to_speech_wrapper( - wrapped: Callable, instance: Speech, args: Any, kwargs: Any -) -> _legacy_response.HttpxBinaryResponseContent: - timer_start = time.perf_counter() - response = wrapped(*args, **kwargs) - request_latency = (time.perf_counter() - timer_start) * 1000 - +def _openai_text_to_speech_submit( + response: _legacy_response.HttpxBinaryResponseContent, + request_latency: float, + kwargs: Any, +) -> HttpxBinaryResponseContent: # try getting duration response_format = kwargs["response_format"] - duration = _get_audio_duration_from_response(response_format, response) + duration = _get_audio_duration(response_format, response.content) compute_time = response.response.headers.get("openai-processing-ms") content_length = response.response.headers.get("content-length") @@ -99,23 +92,19 @@ def openai_text_to_speech_wrapper( return wrapped_response +def openai_text_to_speech_wrapper( + wrapped: Callable, instance: Speech, args: Any, kwargs: Any +) -> HttpxBinaryResponseContent: + timer_start = time.perf_counter() + response = wrapped(*args, **kwargs) + request_latency = (time.perf_counter() - timer_start) * 1000 + return _openai_text_to_speech_submit(response, request_latency, kwargs) + + async def openai_async_text_to_speech_wrapper( wrapped: Callable, instance: AsyncSpeech, args: Any, kwargs: Any -) -> _legacy_response.HttpxBinaryResponseContent: +) -> HttpxBinaryResponseContent: timer_start = time.perf_counter() response = await wrapped(*args, **kwargs) request_latency = time.perf_counter() - timer_start - - model_requested = kwargs["model"] - - scope3_row = ImpactRow( - model=Model(id=model_requested), - input_tokens=response.usage.prompt_tokens, - output_tokens=response.usage.completion_tokens, - request_duration_ms=request_latency * 1000, - provider=PROVIDER, - ) - - scope3_ctx = Scope3AI.get_instance().submit_impact(scope3_row) - response.scope3ai = scope3_ctx - return response + return _openai_text_to_speech_submit(response, request_latency, kwargs) diff --git a/tests/cassettes/test_openai_tts_wrapper_async[tts-1-aac].yaml b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-aac].yaml new file mode 100644 index 0000000..f41d613 --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-aac].yaml @@ -0,0 +1,166 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1","voice":"alloy","response_format":"aac"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '80' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + 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 + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf69b5faeedb09-MIA + Connection: + - keep-alive + Content-Type: + - audio/aac + Date: + - Fri, 03 Jan 2025 02:03:32 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=VSpzyknF.ozGKBfP.Y1tncj.VNAWIFAIi_1.xQH2WhU-1735869812-1.0.1.1-BmbN7.AvVgFYeMRFTAHKFJvnzlNbzLuFLI2z0ssO6KHBBte_3JiU.ip8wzJNKSDjTGdt_kYcNOvFkKbM7jPg0g; + path=/; expires=Fri, 03-Jan-25 02:33:32 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=sszM3bfxY_pIt_mPI20o9izfZLqbsPPfTgQHnEA5n9Y-1735869812945-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '536' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-68478d78f5-gnfpb + x-envoy-upstream-service-time: + - '518' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_15558fbf0d5dce3d87f981a307293437 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-aac].yaml b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-aac].yaml new file mode 100644 index 0000000..9a9c7b1 --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-aac].yaml @@ -0,0 +1,161 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1-hd","voice":"alloy","response_format":"aac"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '83' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + 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 + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf69dbab105c67-MIA + Connection: + - keep-alive + Content-Type: + - audio/aac + Date: + - Fri, 03 Jan 2025 02:03:39 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=oyLGuk9KzTIqTbaV2R8S7gM8VAutkqh5Xp9iG4ispKg-1735869819-1.0.1.1-q_xOUigQ8jH7UxaQJ0.5SeFQP0pnPxYeC8iIjK7gxD6v6vubCBys97WlJ7Lcg7Xw9FFWvE.xSaRaL2ySE4BEMw; + path=/; expires=Fri, 03-Jan-25 02:33:39 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=LQOaU8eZUaDjIPLYIcGVps.zpU057x.b_PLusmECPsc-1735869819775-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '1262' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-7d46678889-6rv56 + x-envoy-upstream-service-time: + - '1247' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_66ba952f1e9629ba6dc5c359ff02a1eb + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-mp3].yaml b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-mp3].yaml new file mode 100644 index 0000000..b2adcee --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-mp3].yaml @@ -0,0 +1,362 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1-hd","voice":"alloy","response_format":"mp3"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '83' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + 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 + WfZhy7mJRaaYcicXKLlIPLGd6XSllKJpclFF5WlJDJFVTEFNRVVZTdYQ16VNHnjJqcA1Rg9SZlQG + uw5vi0N4TqtDQRQrECsEwzgx7MxDIVcmKimJiGEiheEK/mF0ZupnZGHmKXhWgCUg2ggpEFABnMSI + xXxVMsGCAsLmCiJYQGUxhgUdMaUx6DGrANwixFMgDiZlRpvmOOgo2NcylKhywaUAKiN1w1KzHuC2 + JBYCazCmMOcGTBeYGSgmQLSlWQQxgB4xXTEWCxA6Cg0IgRkIqCjgwjFEASbi2UqkBIjAHAyAQRgl + 3FcPfjOxqGZJB6uS5INACwoqIQDkAwqOKDEqoMXBLAIbCrQ46MOA1sxEjLJEi0LVTLxYUxtfDA2c + PxJ8//PkxPpzZDiQBN6yTHDvKVhxbUxCzDSAioXWIFxhYKrghQKqkCIqYFjRCcOIjiAXPAhBhgoX + pqsCbKyBlbcEjTDINFwzJzDoC1JBQFZQBECZyWwy9jK5MfoEdkvQN5MbQz8TOoBDAqaKlCA0ZOJT + xAYARy6CEKDyeq2FpsMa21RHkCDg0oQFjpRKSKDBcUKBBcFJdRJZKiyqKqCh6lCw7lxirKpTHo7B + TwspZEyFhSnbPGZswZ+vlfS+WFKdsIZmyBmbPW5NJZEvljSj6dwiBAhIFMBB4XSGEyBQLpgAwxRV + TEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf69c48e236daa-MIA + Connection: + - keep-alive + Content-Type: + - audio/mpeg + Date: + - Fri, 03 Jan 2025 02:03:36 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=EulUGRji4XfqatTZAG8jksH.C1l4P15yGJAH5.PuJho-1735869816-1.0.1.1-Zc2jhVThje002CG2ZtPC.wD2PHmGp6qD0i90xYv1TwHcs3xJVfUlFpWoPnv3LuoWRnA3f9sm_FCQcB97xf502Q; + path=/; expires=Fri, 03-Jan-25 02:33:36 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=ryuTWheufBFmvD5mcAkyTUNDI9kKLfkkPcrNR.11foE-1735869816123-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '1358' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-68478d78f5-bqts6 + x-envoy-upstream-service-time: + - '1316' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_b5a193390f122cad3876f8c9248503cd + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-opus].yaml b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-opus].yaml new file mode 100644 index 0000000..d825010 --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-opus].yaml @@ -0,0 +1,169 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1-hd","voice":"alloy","response_format":"opus"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '84' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + T2dnUwACAAAAAAAAAABGqEwdAAAAAOfCZMQBE09wdXNIZWFkAQE4AcBdAAAAAABPZ2dTAAAAAAAA + AAAAAEaoTB0BAAAAlPNluQP///5PcHVzVGFncw0AAABsaWJvcHVzIDEuMy4xAQAAACYAAABFTkNP + REVSPW9wdXNlbmMgZnJvbSBvcHVzLXRvb2xzIDAuMS4xMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9nZ1MABCCCAAAAAAAA + RqhMHQIAAAAF9jhPI2RxaG9vamRuZ1pjYmReZ2xrbGZqcmdpXFVWbWJkZ1lUV1M6aIAj12k5EA3u + axqStAUIWoMhPiwCi31+uGuW5dBmuwWkk1nv3SNKvYv7tJ5zL6sXtXEmnpnfZpU7hdR+afEZDnug + OGhv3VkIp52SPD0naHJvBr2M6snBrk/Nz5+OZDhm7Pf8WWiB0mS18FPxyNdFGK9LxWtQdGIthZp/ + eVizDtUacb1IIOz5qNVkZfToPul3TB2fk4M1ucSR4ri/MagFuoBgRiya2Vw4KO4mqkkTL4khhNye + E08egH+/8afV4VCYhpeztBnNgwMn+kONCyva6fvDam9qaI9LQPSWzXMToA944ETGUIVb4FXa05a2 + 6Rhixd39geL6ECmn30Yya87skb1+Z9iETAt0eBQmImR7F54wda/yMaL5h7AcrqOMjb8ItOAVHpzD + mxcJPOshpeurv9bOb7UQUV5qH7klVJVogzL3JzYaY6oafMYq5Dgkq41/BTLU/S10r/t5WLhpcdr9 + 41vHCw2OpkZtf2zdDB32sNpns2bWqVcansO6+8SmBBUHSvJThnj0R1cjpd1Bh3we7BEBLhx6Hzd5 + vAWOrTYHWZGwfIrx1UaOzWYTPNhoq16hrhrYs7Ftv+sUbVZFu73/VQF6w9UQgycgWag5qlyBUAeA + JzyNP8O1PVpaIhp4avwxpZl90/+qcAz9x5MghfXUtY7ZkOmKZWln9NnjwSna7CnmJcQLZTU4cO+4 + eNglnKnLWs1nMCpLnGd0A6lorGtG+PEMwNgvoLKIjbgHLqsUZRFNsVCvEIVn2flTGB3/I483nWfa + ivLzUCrPIcOwgWy2NBYljU7yOwaOETBrVwY7leNQMh9UkquccE67gZRrtlcqKysJXMd3ZRVDIluv + funGQ+yivpReaKtC1w0dJmO9S+UOdOyMHSuslqzSpTtGllkF1Nfc6c2XBphYh77cUMvzRss5Sgt7 + oew642O7j51C6+s7q7IQlBZF1Ukj5ATKnt//mpPdiS3gEMoaWhhvFHlPXVgxLP48PYkwl2irh+XC + cX/1QiIbSj+JvR03X+r3B1f5XQiePjfULqOgtI3fjM9BpFM7H/lomZwpCzalxse/tONgnxpeFqi4 + 3Y+b10P8uZDhHTR0sScP7cYXF4uIfpbsrCycHXFuJukLOq2eTwkuwSV7K+L3Om8qaLAN75jQFhpZ + pHXFKy3CGAKVKL069mRd156Mfos1dBXph+02oSZmS2sSTxF7k8Fc/y2uiXmLLy4SMl1y15yjwg1T + ah1xNhmKWwk+v7esq9eI6WgXW86Iiau4ltmgNxdxMLqMmn5jJmiuVJ0IAxKnodID8r/0vQ/J2NZo + NUPiln/XpWUZSYByiPBNGsQP4+cZbPb62o4X1oEys4qszhDOQYywY8F93CotVodfql05oauYi1va + RX9bwTgDqV5K+ePtbWiqqVldb9SKvn40ff+yk7Y5UmH4d2I3jdHq2w8XNh/GJQoFtVuNiBHVqkUt + 24EWsB9ns6Z408mDAnVef3OWjIsXGFdPdQCvcH2ln7YCBFJyEqQ3GV5Irw1+1uohsppzHO0NTWik + /5efsVjJd4p8RcKKI4ETQVTn5DPOaLo0xd6fSGZG4EDX4mHxZXOmWrvxBjwLBCABWUCvfQWdw9mX + MktiA8pCNOtFimi+Bf915t9C/cD0hLzoAQ+68cTwhMQ5FqwJgUxYaKEEJDaYpS567FrcOCBGvgnf + RupXfRAQSDvgv1ZUqn3UTrKKllcXhgnIk/U0O+K18rIE2yMsaNTH4LxOVBjP3C/9E7uWHLq7e6Eq + SqyIHC+XNkEbXDjFNo4IcpQ6vvw6BZ3SRWicgMWa05OZLhCrXMlIGdCd8byFMEY41Gaz3GC50+gX + VXIilOkSYM3CbR1BvUVaAOtKXJnK2Rk92bwpwVn9ZcJ2REyNth95o833iQ0UPY7aCRKgruLN63x3 + DVFbldBonCMnR9x0BEgFgsUJDWLxC2uqY21UWAleyWBV+dFIEeOJA0KaFleNSlwWN2CURkUz1mlT + Kdm5FdKhGGNAxLSa4Ns9FeQxK72jaIOs2U/Max7x6aFCbdRCkAeNFQ4Y2oT0eES6bst2aJ69cBpN + IiUbRYwZ1BsM6xYznl4iNjJ7b+Doim76o1ASeDemYwpVnBnKQRmnVFTR6VEKBJkdKmVJ9ToMYpo1 + ZT7OPyjoUzoq/rC0HV3iOhf+6V73rmbe1a6Y7iAW7zYi7tEKdRpZQFtwAgLvaJ6sju6lCZ4TWgvo + LikLrZpeVY4PxBkI+Vc8PdRDWeJUFaWZSsYt5lLFcIRvu05cIvM3UNiybjQ5hMYmAUKMUqeOWm3T + hFjoc9fxPyhrbqonZCJMtGdAdZ2EfpkHPAvh0xQ1AkXTQobvxcponqsdyDIRW4D3LRttkBr0Prhr + HT8WzVnvIrKO3PVCIOlqD/JkTiOR1qQaJhK7TjryItCu7j2cOFOv8FUXeW7wZifonUjjodsa3vJc + kPQpK3YiWCRw2Xgz8iNX/vseyukOAazwonTXapmu7PBonqpRchqxO+vVbgEyX1jMEISQfDilxM/h + ujSb+udkdE/HJvPdk6x4H3qJt37XrPx9hEQChF76cbmKTt5Ms57H2QEZWwxPeNyUgTuMJ8bHTUOl + IfCIo0coXl9mx7DQSNiNbXRdP8ponQdqwBpf6EtJk1zNdQoiHYWzHtKS4bxbJOFLibTkN3Nxx3fM + hNVXZn0jLtyt7qPJEwOt/vu5VfVM3pMaXQqaL3wVmHFhMjLnY6MC/aYu3TLlA9lYVFq5Ydirm4Nh + BfQUhjyJ4eG7DwV6aL3HvN8t9zRIBXh7DTCYW8SlFE9Soo9e3qruW/tnRLPezXkRPUj8eFX04bcR + oRjybP70iml6+oCGC+xX/FhAfS4uyOJHrmK4TppBNtaOKM1Av4YUC3TOgiKoKR1KQOa2UM78+337 + dMhJODE0OR2oBlHYaIGlxmnZHFiQjZc1Yu9/jA5z1ClfNsqXzAFZ2+o/pR9iLZoit3d/Uj9FCo0e + 3mmxmGk7LNBBJA8zpR7+esIsTQMZoxH+voz94bvMRcIkfGZMEI00/WkCF8GJc/3erOylENF7ovS+ + LWiBiu8LKcgzAUL2HvnSuUOpUOoxXC0yTpwrcWarjzAaNAlDWfvwE41RTObEt3aUuG6ujBOhtU+8 + QQlIxJdMtYFp6UGfwxtTlGaLscWeJGKCYxSWSUbZp41Hh2toDql7t0El5qMgYwVWsWgE+Nm42ZrH + em1sGtTAU4nsgkeaZv1xIi/Pt2cqwIu4MAkpcMbs+kGxO1A+ABQl2guOIhd42FeS5WKvmEUJgBUF + bd3HSBl+cj8IX/5HhyEStBu5wjfUku79XYb9aAL2fCkecspWk+v3P2yT4l6bGIHQTgk/RyMhHamm + FUkW9ahSGs+RWhfAPtw1kKumVgu1tt6984wYjdiv6zMfjqdK2IbiPAYmNrVRYGpoNexEybNhB2gB + jHkwFzpI4q+pYo+OikMbbTZPOeTXPhL3wdsSjE5mIJOew4+51N8tg/i2xIvrEGI8D17IdO3/alIF + XjQq2pck92JEMHuhBYe3nlNMR+NNBF6LB9GcaIFbM0hb8bfUw64xqLcsGV4MpK+YLtTrBJBViHw5 + brpm8kTSakIeD/dWqBpI6YQ4/422PSkAcaOawIqhaM6FabOu/QXxR+GsYar75xh7oXI8UxyUusJC + D5W3UpFh7KfjhdwtAdXOLOSK1BHh+miRyVGk/iSbGpcqGIG3s2+KdAKCjBO9EM2rLy1flTXGaoPl + /HzETMOYU6Yj1j9JknGCTxgBg3J8JGcC7Ak5BA9lgAFduR4D+5joUCwcYyTMGNG9AuaHXgDeWa2k + H0K4Ek3RaI3u+/w3qG/SJNsa4CUIX2EolqRvuI6jyEARVkK2iDvAFiHzVsV3ur+0+nge2wQI341u + qYk9FCXwdujojER+kDYYT2tHaVt5g0+mfQuy9dnIBE6P50NWNBBkeNNnBWBgWhPnfWiBsN9UCAkB + Tb0T+Hd7TW1+2wrq60cTGV8xSCe8ZSDLec3RfPIsPBtecWvs93P3sHq6aWkefEA9jalXu7Po6luR + 2kxnvDP/HXyiArHyiNOmftjaiN8VnujsnLXyMrOGtb7zCBD1nsZoAvaK6mVxYx+e178KGbnHe59Y + 7sPjm3f5MyFUj6r2ilVoRNSfwYkBdRBCgwOEfaAbqxZvy/nULeTpkn4Dh6SQThm9jpPeRWlAt2rS + qcFQyC6JLFxVwoVTKWgXf/XmBbWCQpkvmY3VPTxDkMQ2ThC8xt6Ah4eSjGH/IQiBjbYHppnZKyZj + VQftCbT8N93UHP18OEjcqx9+6BQiRXVE5qnk9OJqu0IomV8OJPafK2gBBVknsUJGOaK0H19jJ9MI + P7HZCiYkP7SLpRABl/LYauXh38hj54Rrg8fiZz7YnN9T0eTlevb0TTxcWRRjkkxXvFXhzs14AnFi + q1BY6rkzumntDbUXCmgAxvccDJ7JePOBj0dyJP4D8qXZgBRHvsWjt4ypEfP1eFdbdiwUlU8X/eeG + sjg2Z9k8HRQd3UQo9GPJkHaMexE4gSnSGTJlL9LB8wsBvrLupulpaAzP0wcB4Sfe+gw03TDBb2/r + fLxs/wBVpLfTuC7edQgJ5Ge1ZtUttZD8Oxfv9SEsiOfaEyvDBxjQtw== + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf69d17ccf0a1a-MIA + Connection: + - keep-alive + Content-Type: + - audio/opus + Date: + - Fri, 03 Jan 2025 02:03:37 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=sMzOvjcEdPAOpbobFSVkifOmY9GOwqJwJR2QK6FIYuY-1735869817-1.0.1.1-WSKMv_dbefgBu2rRYVXP4keV0Byb38Y7dlZJf8QifLsxbFXLZM6_rn6FhdXtVqfVg_DQ1gCvZeI4Q56.OvvxGw; + path=/; expires=Fri, 03-Jan-25 02:33:37 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=vpRRS4JhUoJ8IL5DZAb0aSJdFjkaTcBLcdbJqCS1ZQ0-1735869817874-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '1147' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-6646c6d4d-4h56n + x-envoy-upstream-service-time: + - '1055' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_632f70a3e62218751a720b19909a80ea + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-wav].yaml b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-wav].yaml new file mode 100644 index 0000000..706fee3 --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-hd-wav].yaml @@ -0,0 +1,672 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1-hd","voice":"alloy","response_format":"wav"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '83' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + UklGRv////9XQVZFZm10IBAAAAABAAEAwF0AAIC7AAACABAAZGF0Yf/////6//r/+f/4//b/9f/0 + //P/9P/z//T/9v/2//b/9v/0//P/8v/w/+7/7v/t/+z/7f/t/+3/7v/t/+v/6v/o/+X/4//i/+H/ + 4f/h/+H/4v/j/+T/5v/o/+n/6v/p/+f/5v/l/+P/4v/h/+H/3//f/+D/4P/i/+X/5//o/+n/6f/o + /+f/5//m/+f/6P/p/+r/6//s/+3/7f/t/+v/5//j/97/2v/a/9//5f/s//L/+P/5//j/9//2//T/ + 8//y//H/8P/x//T/+P/9/wAAAQD///r/9P/v/+v/6v/r/+3/7//v/+//7//w//T/9//6//v/+P/1 + //D/7f/s/+7/8//2//n/+f/3//X/8//w/+//7v/r/+n/6P/n/+r/7//0//n/+//6//j/9f/y//D/ + 7//v//D/8P/x//H/8v/y//P/8//y//L/8P/w//L/9////wUACwAOAA0ADAAMAAwADwASABUAFwAV + ABEADQAJAAgACAAJAAsADAANAA0ADgARABQAGQAbABwAGgAXABMADgALAAoACwANABAAFAAZABsA + GwAbABkAGQAaAB0AIAAiACIAIQAdABkAGAAaAB4AIgAkACIAHQAWAA8ACwANABEAEgARAAoABgAH + AA4AGQAoADkAQgA/ADMAJAATAAMA/P/5//b/+P///w4AIAA1AEgATwBIADMAFADw/9P/xf/M/+H/ + /v8aADMAQgBGAEYARQA9ACUAAwDg/8j/w//Y//z/KgBUAGsAYwBEACIACQD9//r/+/8BAAYABQAB + AAYAGAAvAEAAQAAtAA0A6v/R/8v/2//5/xYAKgAxAC8AJgAbABEADAAIAP7/7v/a/83/zv/g//v/ + EwAmACsAIQAPAP7/7//k/9z/2v/f/+3/AQAWACsAPgBFADsAIQD4/87/sf+s/7n/0P/q/wEAEQAZ + AB8ALAA5ADoAJgAAAMz/lf9r/1z/c/+n/+j/JABUAGsAXAArAO7/tv+O/4D/jf+p/8z/8P8PAB4A + IQAcABQADwARAA0A+P/U/6//k/+O/6j/3f8VADcAOQAdAPD/wv+h/5r/rv/P/+v/9f/u/+X/5//5 + /xQAJQAcAPX/uP90/0H/Of9r/8H/FwBVAHUAdgBXACYA9f/V/8j/xP/E/83/6P8CAAsADAAhAD8A + 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 + of7j/Pv6D/lT9+z16/Q39LLzRfPr8pzyYPIz8hnyH/JJ8p/yIPPP86n0sfXR9vr3Lflh+pL7rvyI + /Rj+Z/52/lf+Df52/Zn8pPvJ+mb6wvrB+0v9J//tAIMC0wO4BGIFAAaKBhgHoAfPB5EH7gbcBasE + twMrA1IDVgQOBmsINwsIDpcQgxJRE9oSMBGGDm0LhghGBvcEmgTcBHYFLwbIBjgHcwd7B3oHmQf0 + B44IIgktCTEI0AUHAlT9c/hX9M/xRvGz8rD1pvn1/RwClAXrB74IAQgoBv8DbQL8AacC+AM8BewF + 5QVTBZYEEAT6A18EKQVABpgHIwmvCsgL0gtPCigHvgLU/Rz5KPU58mPwvu9Z8Cfy4/T+98b6nfxF + /eL85PvE+uf5dPlv+dv5xvo//DT+YQByAj4E6QW/B+4JTAxpDroP1w+zDn8MegnTBagBE/1C+KDz + nO+p7BXr0uq5603tLO8S8eLypPRx9m34q/os/bv/DwLbA/sEiQXEBe0FJwZyBr4GBAdIB4cHqQd9 + B84GgAWVAzkBp/4f/Mb5o/es9czzDvKF8FLvhu4V7uft9+1n7mTvAPEZ81/1gPdM+bn65Pvl/M39 + oP5h/xgAxwBzARMCkQLKApsC+AH1AMj/xP4p/gn+Tf66/g3/F//H/h/+Pf1L/JD7ZfsV/Lj9KAD1 + AooFcQdzCLgIlghjCFAIbAi6CDkJ6Am5CngL5gvICx4LEwoKCVcILwh6COIIAAmMCHMH1gXnA9MB + 0/9C/ov9+/2p/zsCAQVVB7wIMgkCCaAIYQhyCMsIOgmDCXMJ+wgpCBAHwgVnBDcDhQKMAkQDVAQv + BU0FfQTUAowA5v0m+4z4ePZG9R315/VO9+f4afq/+/P8KP5z/88AEwILA5EDqwOAAzYD2AJVApoB + wgAdAAMAowDcATkDQASsBIcEFgS5A6wD8ANNBEUEUAM9AUT++/r/97b1P/Sj8/HzOvVp9yr62vzN + /pv/PP8R/qv8kvsH+/j6Ifsw+wn70PrX+mv7m/w7/hkAEgImBFQGYwjaCS0KBQl2BvwCL/+U+2L4 + kfX58ojwVe6+7Azsg+wb7ozwgPO69hT6bv2XADoDDAXtBfwFlAUQBaUESgTUAxgDEwL2AAsAmP+2 + /0QA8QBiAVUBuQCi/x/+Qvwf+t73v/UI9NzyL/LM8XbxGfHn8EXxhPK29J/3yfrI/V4AeAIpBIEF + fQYLBx4HxAYoBoUFBQWwBF0E3QMlA0sCegHhAJgAogDnAD8BiQGeAUkBaAAL/4v9e/xi/HP9a/+6 + AcEDJQXpBVIGvQZtB2MIdwlkCuQK0wo4CjwJDwjnBv4FfAV3BesFtQaaB1YIwQjPCIwIBAg5ByEG + ygRiAykCWwEPASkBeAHaAVgCFQM5BM8FrgeKCf4KtwuSC64KSwmzBxgGoARNAx0CEQE3AJv/O//+ + /sv+mP50/nr+tv4K/z3/FP96/oL9Z/xz+9v6sfru+n77T/xL/Vj+VP8mANYAlgGaAvoDigXVBjUH + UQY5BHEBqf52/Bn7bvoR+qv5LPnL+NP4XflL+mr7nfzb/R7/VgBPAagB8QAa/6r8mPrD+W36K/wm + /oj/0/8O/7/9svyA/DL9WP5g//H/3v8N/3X9PPvH+I728PQ39If0wPV39wT57/lD+l36nvot+wH8 + A/0Q/ur+Rv8K/1v+fv22/EL8W/wm/Yj+IAB/AWcC9AJfA8sDOwSgBOAEwwQIBJECegAR/pT7HfnA + 9rD0LvNU8g3yOvLO8sTzKPX49jX53vvM/pgB0gNBBfoFNAYSBqEF4QTiA7cCZgEFAMb+8f2y/fz9 + lv5N/wYAoQDoALEADQBF/4r+zf3g/Lj7cvow+QP4HffT9mr33/jn+kD9zv97AhAFQgf5CFUKcQs4 + DIQMSwyaC3gK3gjqBucEJAO/AaUAvf8P/7H+tf4P/6P/WgAVAbABDgI4AlsCqAIqA8sDcQQdBdEF + hgYvB8wHbAgVCboJQQqmCvUKKwsuC+IKUgqeCeYILwh9B80GHgZhBYEEewNmAmgBlgDs/2P/+P6y + /o/+nf77/sD/4wAxAm0DbwQ3BdUFYwbwBnEHzgfaB4YH4QYUBjwFcwTKA0UD0QJQAq0B3wDl/6z+ + MP2j+0r6Qvly+KT3xPbq9SX1hPQz9Iz0zPWr94r5GPtb/Hr9ef5x/8UAtQLtBJEG9wZLBjAFMgRv + AwUDLAOkA8kDAwOZAVoAtf9q/w3/qv6H/ov+Tf5x/Qf8WPqH+Kz2N/W/9Ej1GvZo9hX2xfUu9nH3 + QPlD+yj9hf4W/wP/3/4n/8X/NwAnALn/Tv8C/67+UP4W/iH+bf7Y/lj/6f9cAFUApP+A/lr9YPxp + +yz6n/j09nv1c/QJ9Fb0TPWf9vv3U/nl+ur8Uv/GAdoDYAVZBtgG8Qa2BkMGkAV9BPICCgEO/0/9 + 6PvM+uz5W/kX+RX5OPmA+fv5tfqf+5L8e/1U/v/+Rv8P/4j+Cf7S/eT9GP5M/nT+lv7P/lT/TgCz + ASsDRwTGBLMETwTaA2oD8wJeApABewAd/479Dfze+i/6/vk9+ub67/sx/Xn+vP8dAbsCewQQBkcH + HwibCLgIdgj6B3QH7gZSBpwF7ARiBP8DowNFA/8C9AIqA5UDGwSeBPgEBgW+BEAEvwNeAyAD7wKv + AloC/AGvAYwBqAEMArsCpwO5BNwF/QYSCAAJrAkMCiwKIwr2CZEJ6AgECPoG2AWuBJEDoQL2AZQB + dAGRAeMBYwICA6oDTATYBDcFTAX7BFQEfwOzAgoCgAH6AGMAuf8V/6T+lP7x/pj/UADoAEYBaAFj + AUcBGwHLADkAXP9G/hn99Pvy+iX6kfko+eD4vvjP+Br5m/lF+g376fvF/JD9Ov66/gz/OP9L/1H/ + WP9b/07/Jv/b/of+S/4+/l7+nP7y/ln/sf/M/53/Qv/V/mL+5v1t/QX9o/wc/GT7svo/+in6W/qk + +t368Pry+gr7VPvQ+1b8vPzb/Jr8GPyx+6z75Pvg+2T7y/qL+qv68vou+4T7I/zk/Ir9OP5M/5gA + XQE0AbgA7gAAAgsDDAMZAtMAd//j/Vz8ifuV+437X/pi+Pf20fZt9/L3Xvgy+Xb6jvsu/PD8Y/4n + AF0BwwH5AZgCSQNYA80CXAJWAkUCrgHiAH8AjwCaAG4AaADKADYBJAGWAB8AGgBEADwA/f+s/zT/ + bv5y/az8Y/xy/JL8sfzr/FL92P14/kT/UgCTAc8C3QO8BHYFCwZtBpwGmgZaBscF2ASmA1QCBwHW + /8v+7/09/ab8Mfz0+wX8YfwA/dv95f4EAB8BLgI/A0oENwXwBXoG5AYvB0QHLwcPB/YG5AbJBq0G + lAZ8BlUGJAb7BeEFxwWRBTQFsQQPBFIDfwKiAccA9P8w/4P+8/2O/V39Zv2h/Qz+rv6Q/6YAyAHb + AusDGQVnBq4HwwigCUsKqQqoCmgKJgr7CagJ5QjGB6IGpAWqBJkDoQL6AYgBBQFuABsALABTADcA + 6//T//T/7v+X/yv/8/7f/pz+Lv7x/SL+hf7I/gn/lf9rADYBvwEzAs8CewPZA8EDYgPzAmQChQFi + ADP/GP7z/Kv7Wfo7+V/4rPcI93z2K/Ye9jv2aPa19jH32/ec+FX5APqr+mr7OfwE/cX9hf5A/9f/ + LQBbAI4A1QAXASwBFgHlAJ8AOwDC/07/5v51/t/9Iv1h/Lv7N/vJ+mf6Bvqr+WD5MPko+UX5e/m2 + +eb5FvpU+rH6HvuC+9r7LfyI/O/8X/3R/Ub+nf7O/vX+KP9f/4D/lf+5//v/PABeAGQAZgBfAC0A + 4v+//8j/fP+o/or9u/x3/Hz8Sfy1++b69/kL+Y34+fg2+mn7wft/+4T7X/zh/ZX/LAF6AjQDMQPh + Av4CsgNlBGgEtwPOAgICQQFuALv/R//l/lf+sv1B/ST9Lf0o/TT9i/0i/rr+Kf+C//b/hwAPAYUB + 9wFgAqUCtwKzAskC9wIOA/YCzwLJAuQCAgMJAwoDCQPwArkCgwJ1AnwCWgL2AXsBIAHkAKYAXQAx + AC8ANQAuADoAgQD8AH4B8wGEAk0DKgTkBG0F7gV8BgEHWgd9B3gHQwe+BvMFFgVSBI8DnwJ4AU0A + U/+W/gv+tf2k/cr9D/5r/v3+2v/rAP0B8QLNA6UEbgUUBo4G3wYNBw4H6wa4Bo4GaQY+BggG2AW+ + BboFwAXSBfEFEAYXBvYFsQVOBccEDgQrAzkCPgEzAA//8v0C/VH80fuF+4T73Pt0/Cn9+f39/jUA + dgGVApcDkQRvBfcFGwYhBkAGTQb7BV4FwgRABLgDHAOjAn0CawIaApQBRgFkAakBrwF3ATQB6QBt + AML/J/+z/jj+cf19/Lr7Xfs6+xL78foK+2n78/uJ/DT99f2m/h//bP+0/wcAPQAjALT/E/9l/rP9 + 9fwy/HX7u/r6+S75bPjK91z3F/fj9r32nfaG9nb2e/ar9hD3lfcW+H743vhc+RL65vqy+2D89fx4 + /ej9Uv7J/kP/m/+u/47/e/+M/5X/X/8B/6n+aP4V/p/9MP3Y/Hz89Ptr+xj7Bvve+m367vm3+cv5 + 0Pmn+X35jPmz+db5Efqq+nb7/vsy/HT8KP0p/gX/pP84ANwAagHXAWACHQPOAwQE0gOiA6UDpwNe + A98CYwLcASABPgB2/+D+Sf6O/dT8VfwF/KP7I/vW+gH7gvsT/JX8GP2q/UX++v73/z8BeQJEA5UD + 1gNcBCIF2AU+BksGDgajBSoF5ATTBLIEJwQpAxcCTQHbAIUAFwCb/yL/tf5k/k/+iv7p/ir/PP9Z + /77/VwDfADcBgAHhAUcClwLlAkYDogPPA9oDCwR8BPoENgUwBSkFPgVWBU8FMgUJBb4EPASjAzED + 8QKrAigCkwEjAfgA8wD3AAwBOgF2AbwBJwLJAoUDHgR6BLUE/gRZBakF0wXJBYoFIAWkBCoEvgNP + A8cCIwJ5AeUAcgAdAN//sf+V/5X/tP/o/yMAZgC1ABQBgwH2AWUCxwITA00DiQPXAy8EdwSkBL0E + zgTfBPcEHAVJBWgFZgVIBSMFAgXXBJMEOATDAywDaQKKAbEA7P8o/1X+ef2u/AH8ePsk+xD7Lfta + +4774vtl/Bb93/2v/nr/MwDEADsBuAFEAsECDwM5A1UDYgNWAz4DOgNUA3ADbQNWAzcDFQP6AuUC + 2gK/AmcCtwHKANz/E/9V/oP9f/xD+/n52vgi+NL3ufeh93H3Wfeb90f4QPlN+i/70ftH/M38ff0x + /q3+zP6Z/j3+4v2i/V/9+Pxd/K37HfvA+oX6Rvrv+Yz5P/ki+Tj5X/lm+Tj59PjQ+O/4Mvll+WP5 + OPkO+Q/5T/m6+SH6Xfp7+rj6Nfvp+6b8Rf3H/Tz+uv5P//P/fADCAMYAtgC9ANMAyAB6APf/ZP/e + /nT+Iv7U/Wv93vxS/AP88/v9+/j72vu7+7f72Psa/Gz8ufz3/C/9h/0L/qb+NP+s/ycAvABjAQQC + kAIBA1YDngPiAycEVARLBAgEowM/A+gCjgIgApAB4gAuAJP/J//h/qf+Zf4j/vX96f0H/kj+m/7r + /jH/cf+7/xMAcwDUAC0BewG5AeoBGAJNAoQCugLtAh4DRwNiA3cDlAPCA/kDKQRBBD0ELAQcBBME + EQQJBOgDpgNSAwoD2wK9Ap4CdAI6AvsBxwGpAaMBqQGnAZoBkQGaAbEBzQHvARkCSQJ7AqoCywLh + AvcCGgNPA5ADwQPOA8kDzwP7A08EsgT6BBoFKAVDBYYF5gU9BmAGSwYeBv8F9AXfBZ8FLQWlBCUE + twNNA9ICNwKPAQUBqgBrACEAuv9F/+z+1f71/iD/M/8h/w7/Kv+J/xMAlwDrABcBRQGeASUCtwIp + A2gDiQOxA+wDNwR0BI4EiwR4BGsEawRnBE8EIwTqA7QDhANQAwcDogIqAq0BNwHCAD8Apf/3/kX+ + ov0a/aX8NfzH+2D7Evvh+tT65foE+y77WPuK+8v7F/xx/Mv8Gv1c/ZP9yf0H/kj+jv7R/g7/SP+D + /8L/BgBJAIUAtQDVAOQA4gDNAKUAZwAWALP/Qf+//jP+ov0T/Y38D/yd+zT71fqC+kH6Evrz+eH5 + 0vm++an5lPl/+W75XPlA+Rn56/i8+JT4dPhd+Er4QPhC+FX4efir+Or4N/mM+en5Svqr+gX7Wvur + +/X7N/xr/I/8p/y3/Mj83Pzy/Af9HP0z/VL9gv3A/QP+SP6N/tT+If92/8z/GwBhAJwA1AAIATgB + XgF2AYQBjAGUAZsBnQGYAYkBeAFnAVwBUAE/ASYBBwHnAMoAsQCVAHMASgAeAPj/3f/K/7r/rP+i + /6L/rf/F/+n/EwBBAHMAqwDoACgBagGrAekBJAJcApACwALqAhIDNgNUA2sDgAORA6EDrAOzA7YD + swOsA6MDlgOEA24DUwM1AxQD8wLQAqsChgJhAj0CHAL9AeEByQG1AacBnQGaAZsBogGrAbkBywHg + AfgBFAIxAk0CaAKDAp4CugLUAusC/gIRAyIDNANHA1kDaQN5A4gDlwOnA7UDwgPNA9QD1wPWA9AD + yAO7A6oDlwOAA2QDSAMtAw8D8wLZAr0CogKJAnECWgJHAjYCJQITAgEC8gHlAdsB0gHKAcMBvAG3 + AbIBrAGnAaEBmgGRAYkBgAF2AWwBYgFVAUgBOgEuASEBEwEFAfUA5ADTAMIAsACdAIYAbgBTADUA + GAD6/9r/uv+b/3z/Xv9B/yb/Df/2/uL+0P7A/rL+pv6d/pT+if5+/nL+af5h/lr+U/5L/kX+QP48 + /jn+PP5B/kf+Tv5W/l3+Y/5o/mr+av5n/mD+Vf5H/jT+Hf4D/ub9x/2m/YL9Xv06/Rb98fzN/Kr8 + iPxn/ET8Ivz9+9n7tfuS+3D7T/su+w777/rR+rb6nPqI+nb6Z/pa+lL6TPpM+k76U/pb+mP6cfp+ + +or6mPqn+rf6xvrY+uv6AfsV+yz7RPtf+3v7m/u8++D7Bfwu/Ff8gfyt/Nr8CP02/WP9kf2//e39 + HP5L/nv+qv7Z/gr/Ov9q/5r/yf/3/yYAUgB9AKYAzgD0ABcBOAFYAXQBkAGqAcMB3AHzAQkCHgIz + AkcCWwJvAoIClAKmArcCyALXAuYC8gL9AggDEAMZAx8DIwMnAysDLQMvAy8DLgMtAysDKQMlAyED + HAMXAxEDCwMEA/wC8wLrAuIC2ALPAsUCuwKwAqYCnAKSAogCfwJ2AmwCZAJbAlMCSgJCAjoCMgIq + AiECGQISAgoCAwL9AfgB8gHsAegB5AHhAd8B3QHdAd0B3QHeAeAB4QHlAekB7gH0AfoBAAIGAgwC + EwIbAiICKQIvAjUCOgJAAkQCSAJKAk0CTgJOAk4CTQJMAkoCRwJDAj4COQIyAisCIwIbAhMCCQL/ + AfMB5wHaAcwBvQGtAZsBiQF2AWIBTQE4ASEBCgHzANoAwQCoAI8AdwBeAEQAKwASAPj/4P/H/6z/ + k/95/2D/R/8v/xf/AP/p/tX+wf6t/pv+iv56/mv+Xf5Q/kT+Of4u/iX+G/4T/gv+Bf7+/ff98f3s + /ej95f3i/d/93v3c/dz92/3b/dv93P3a/dr92f3Z/dn92P3X/db91P3S/dD9zv3M/cn9x/3F/cP9 + wf2//bv9t/20/bD9rP2o/aP9nv2Z/ZP9jv2G/YD9ev11/W/9av1l/V/9W/1V/VH9TP1I/UX9RP1D + /UL9Qv1B/UL9Qv1D/Ub9SP1M/VD9Vv1c/WP9bP12/YP9j/2e/a39vf3Q/eP99/0N/iT+PP5U/mz+ + hv6g/rz+1/7y/g7/Kv9I/2b/hP+i/7//3f/7/xsAOQBYAHYAlACxAM8A7AAJASMBPAFVAW4BhQGa + AbABxgHaAe0BAAIRAiICMQJBAk8CXAJnAnECegKDAooCkAKVApgCmgKZApkCmAKVApECjAKGAn8C + eAJvAmYCXQJSAkcCPAIwAiMCFgIJAvsB7QHfAdABwQGyAaIBkwGFAXcBaQFaAU0BQAEyASQBFgEJ + AfwA8ADlANoA0QDJAMEAuQCwAKgAogCcAJcAkgCNAIgAgwB/AHoAdgBzAG8AawBnAGQAYgBgAF8A + XABZAFcAVQBRAE0ASwBJAEUAQgA/AD0AOQA1ADQAMQAtACwAKgAmACIAHAAbABgAEgAMAAgABAD+ + //n/8f/r/+b/3v/W/8//yP/A/7n/sf+q/6P/nf+W/5D/if+C/33/dv9w/2v/Zv9f/1v/Vv9S/03/ + Sf9E/0H/P/88/zr/Of83/zf/Nv83/zf/OP86/zv/PP89/z7/P/9B/0P/Rv9I/0v/Tv9R/1X/Wf9c + /2D/Y/9n/2v/b/9z/3f/e/+A/4X/iv+O/5L/lP+W/5n/nP+g/6T/qf+v/7X/uv/B/8b/zP/R/9b/ + 3P/g/+X/6v/v//P/9//9/wIABgAKAA8AFQAaAB8AIwAoAC4AMwA2ADoAPABAAEIAQwBDAEUARwBI + AEgASQBKAEwATQBOAFAAUQBPAE4ATQBLAEwATgBRAFQAVgBYAFkAWgBaAFwAXABbAFoAWgBaAFwA + XQBeAF4AXwBgAF4AXABZAFoAWgBYAFQAUgBSAFQAVQBVAFMAUABMAEgAQwBAAD0APAA7ADgANQAy + ADEALwAqACUAIwAjAB8AGQAVABUAFQARAAsABwAFAAEA+f/x/+3/6P/h/9v/2f/Z/9X/0//R/9D/ + 0P/O/8r/yf/J/8b/w//C/8P/wv/B/8L/wv/B/8D/v/+8/7v/u/+9/7v/uf+4/7f/tv+1/7X/tv+6 + /7z/uv+6/7r/tf+t/6r/rv+v/6n/qf+u/67/rP+q/6X/o/+m/6r/p/+m/6v/sP+2/7X/sP+v/63/ + rv+0/7r/v//C/8T/xP++/7z/v/+9/7z/wv/F/8f/yf/K/87/zv/K/8T/wP/E/8v/yf/F/8f/z//S + /8//y//N/9D/0v/P/8r/y//N/8z/yv/K/8f/x//N/9L/1P/Q/83/zv/W/9n/1f/V/9f/1f/O/8n/ + wv/E/8X/vv+6/8L/zf/R/8//0//m//L/8P/l/+X/8v/+////+f/7/wIACwAMAAwAEwAaABcAFwAn + ACAAFgAZACAAJwAqADAANAA3ADsARQBJAEoATQBPAEgARQBAAD0APgA7ADYANQAzADUALQAcABIA + EAAiABUABQAMABcADgAQABgAFQAkADIAPQAfADoAeACSAGcASABoAIYAfABKAEkAUgBdAEwANQBc + AIYAggB6AGQAVwBQAD0ASAB3AIMAaABoAGkAWABPAEkAXwB7AGcAKQAgAFwAhwBUABIASACXANIA + XAAzABQAPwBvAZ8AVf+U/5AA0P/1/hUArACS/2r/QABnAIIAqP91/yAA7f8RALgBeQIVAlsAiv2Z + /X3+zf2z/TgAzgD5AJ0ChwLa/4z8kvyf/3MDHQPWAtQCoAG2AEr/lP7z/I78Mfxh/SD/4v4F/ssA + wwbPAhX9Fvpa/64F3v6Z+pj+8wLPAg//TAGHBfkCSgHo/8ACpAP6/ZP+zv9T/Sv9U/6+/xH+r/uy + /ZH/Uv/n/AD81vsR/oQAhvyb+9H+kf/T/dX7fv6SAFf+oP/j/Wb9PANoA08Bxv5B/7sFNwYU/0j9 + HwRIBDIB2AI0AhMBGwJKAwwCaAAsBKQDXwFcAbIAngP8/8b9gQHLAef9hv+IAW/92f7i/wP//v6Z + /1/+pwCt/3L82/8X/yv+zwBAAX77yv1qA5P//vwLAGMEjv+S/qkBSwK2AXP+/wCdAir/fgDyAg8A + LAAtAu0BOgCz/4EF5QHh/UgDWwL7ADkBjgEZAST+jAD/AywAL/sUAdAErv8M/H/+ggMmAEz8p/7h + AGj+kv6p/+L9Kf86/6H99f1jAHgAyvya+wwDEwSb+q79oQMJAen+Tv4G/1oBsgF5/7j9YACVArr/ + nf8BANX/pgAuAB3/SwCEAMX/lP4T/93/E//n/zr+Tf2c/ocAjwDR/D/81ADbAVf94vsY/84Afv5n + /ML+VgF0/4j7wP3GAfD/f/yF/QADCwHe/O79EAHJAoD/DP1s/94CbABy/gL/Lv+KAFoAVv/M/nD/ + SwDaAIH+v/74ADoAm/8y/rv+oAE/Afb9bP7nABEBrv9a/Vj/4gJSAFX9df8lA8YBav3r/isDGAB1 + /VcA4wC0AKYAiv6o/gMCKQIL/8X+igEHAfP+WwCSAW3/wv+6AKj/oAAEAUr/hP7mAH8BWABPAEoA + uwBkAdcAs/+2ACsC7ACb/7EAmQBWAP8BHQEb/7oA/wKPAYX/9gADAk4Ar//jALEBogAMAHMAIwFj + AT0AtQCUAfcABgAnAZICNgFtAEUBWQF5AbQAJADmAWkCwwAqAKcBpgLTAfn/XQDnAQIDQwL9/u// + igMtAmX+bv/4A/kCzv01/qMCdQMCAbb+8P6SATQChQCJ/qv+SQHDAUn/5f7mAUQChf6k/vwBLAGQ + /4UAZAA6ADMBfwBY/1cAOQL9AOP9ev7tAVsCfv9o/kEAbwEpAOb/LQGCAKn+//41AOX/Jv+k/9T/ + RP6b/mYAp/+//lwAoQD9/Wj9zgBtAc79nfzb/osArP9q/7n/mP6f/kEA6/+3/t7/NwCo/pz+uP8m + /1T++f9hAF7+af4TAIn/kP6t/sH+vf7U/pX//v9l/4L++f1b/sH/AABd/or9lP4//3z+M/4s/7L/ + +v4j/mz+dv/J//3+8/1S/iX/qv4t/qj+E//D/r/+Hv9B/4j/kP/8/q/+6P4P/3//sP8C/0r+eP5t + /6L//P6N/ir/LQCs/2r+zv4WAKf/Bv61/ev+6P+V/1b+Dv69/50A4f4w/nwAegEK/wn9Y/7SABwB + n/9e/rL+bABJAQYAmP4m/28ATwA8/3j/1ADUADb/Tf6L/yUB9gCU/5P+yP4tAF0BzAAw/wr/UQCH + ANT/HwDpAF4AJP8N/9D/KQAaAB0A3v9p/7b/xABtAc0AZ/8d/2IAbAHmAJ7/PP/O/y8AFwAtAMwA + MwG1APL/8P/JAIQBCQG8/1z/IwC5AIkA/v+0/+L/fQAvARUBTQAqAMMAqwDp/xgAOgGBAY4A2/8j + ANcASgEYAXIAPAAOAd4BcwGUAG0A5gAcAe8ACgEyAd4AOwASAKgASQEyAaAAfQDAAN0A1QAbAX8B + QwHHAMUABAEGAbMAawBqAHsApwD/ADUB7QBWACIAsQCDAc0BOwElAKD/RQDuAKQAQACdAO4AigB1 + AB8BhAEdAZgAtQABAc4AZQAyACUARwCiAOoA2ACXAIsArACwALYA0gDIAHsADADw/ywAXwBEAPP/ + 8v93APEAyQBHAPX/GQChAB0BGgGBANv/u/8VAH4ApACVAGMAFgACAEIAfwCIAG8ASwBDAHAAogCe + ACQAcv8Z/3L/PgCyAFAAkv9L/6b/KgB2AIoAmQCKABUAgv9r/+L/SAD8/0H/Af+i/1oAOgCM/17/ + CgDoABgBgADC/2z/iP/D/8b/k/9y/4P/kv92/23/wv9YAJUALACt/57/1f/P/1H/yf7d/o7/FQDX + /yL/vP4M/7z/OwBQABAApv9H/0z/y/9IAFAA5v9u/1j/lf+x/27/Nf96//T/FQD0/wkARAAbAIv/ + Z/8uAAYBswBQ/zH+VP5c/yAACgCg/3r/iv+N/6X/CgBjACEAdv83/6L/6/+F/9z+1v6Y/1wAeAAY + AMv/wv/o/w4AQQBpAD0Aof8N/wr/lf8kAEwAHQDT/6b/t/8AAEYANwDT/3v/kf/z//n/Wv+y/tL+ + of8uAO7/V/8R/zL/b/+w/wcAVwBDAK7/Cv8A/7P/eQCCAND/Tf+v/3sAqQATAJb/yv8/AD8A5//n + /y8ADQBh/wb/nf+IAKwA5v89/2H/5P8SAM//iP+J/6j/qP+i/77/3f/Y/7P/oP/k/zAAFQCy/3r/ + nP/W/9T/sf+8/+b/6v+//7P/7v8+AF0ASQAeAOj/tP+h/8r/EgBCACcA0P+B/4//8v9MAEUA+P/R + /+T/+//l/7b/of/E/wkANwAsAPb/wP+Y/4H/mP/5/1QAMwCa/yL/Rv/b/1gAbAAqAOX/xf/P//T/ + IAAzABYA2v/F/wAAOQAQALT/r/8ZAH0AdAAdAM//pf+i/9H/HQBEAB0Av/9x/3P/wP8eADYA5/+D + /23/o//T/8z/u//G/+D/8/8HABoADwDt/+X/CwA6AE8ARQASAMj/p//l/1IAfABAAPH/2v8DADUA + QwArAPL/yP/F/9r/5f/g/9f/zP+//8H/2P/n/93/y//G/8T/yv/n/xAAGAD3/+j/BwApABsA+v/+ + /ycAQQAyACEAKAA3ADsANgA3AEAAUQBcAEgAIwAKABYAMAAvABAA8v/o/+f/1//I/87/5P/2/+L/ + qv+F/5j/wP/J/7T/sv/Z//L/2//C/9z/GQBLAFUAQgApABAACwAiAEgAVgBLADoAJwATAPv/5P/z + /yYAQgAZANH/wP/3/yEABADb/+L/CwAZAP3/2f/a/+v/8v/k/9z/8P8KAP//xv+k/8n/DgAvACUA + DgABABYARgCEAJwAdwBFAC0AMgBGAFYATgAoAPb/8f8hAE4AQAAHANf/yv/k/xgAOwAbAML/b/9X + /3v/rv+//6T/hP+c/+7/NQA4AA4ACgA4AFMANQD0/8L/uP/A/9b/DwBfAKEApwB0AFsAiAC7ALYA + dgA0ACMAKwAYANn/mv+m/wYAZQBwADkAGgApAD0AOAAqACUADQDI/3L/Sv9u/8f/GQAsAAIA1v/r + /zwAdQBYAAoA3P/v/xsAKgAXAPz//P8gAFwAjQCqAK0AigBQAD8AgwDeANoAWwDP/6T/3v8cACkA + DwD+/xcAOQA7ADYAUQBqAEYA8v/Y/w8AMwD7/6P/iv+6/wEAKgAvACsANgA1AA4A5//t/w4ABADN + /6T/pP+7/9v/AwAbACAANwCCAMoAvwBpAB8AFQAgABIA+f/+/xEA7v+i/6P/IAChAJcALQANAFIA + dQAhALn/pP/P/+P/0//g/xAAMAAdAAEAJQB6AKUAeAAsAAUA9//f/9r//v8lABYA6P/o/xYASQBq + AIQAiQBvAEIAHgALAOf/t/+g/6//vf+4/73/7v8sADwAIAAXAEUAcwBVAPv/x//V/+D/xP/A/wAA + RwA+APn/7P8+AKEAtQCPAGgAUgAtAPj/6f8LABsA5v+o/8P/HAA/ABgAAQAbADAALAA1AE0ANADn + /7X/3f8mADUABgDW/9L/+f80AGwAiQB9AEgAGwAvAGkAbgApAOf/5f8AAP//6//y/woACgD+/xIA + PQA5APH/qv+z//v/LwAYAMj/jv+J/6n/1v8EABsAAwDR/7v/0P/h/9T/vP+s/57/pP/E/+P/5v/Z + /9b/8/80AGgASQD1/9f/CgA6ADkAOwBCABMAuP+r/+j/DwD9/9P/tP+t/9X/BQDq/5f/h/+4/8b/ + m/+E/47/bP8x/0b/uv8dACUAAQALAE0ArgDyANIAeABaAJIAtQCMAFsAXgCHAK0A0wADASIBIgH/ + AL4AgAB+AJ0AdgDs/3//nP8DACIA0/+O/7P/CwAXALX/Q/8P//r+zf6g/qr+4/4H/wT/Ef9k/9H/ + +P/P/63/zP/4//D/wf+4////ZgC2AN0A8ADtAM4AtwDNAAgBKwEOAb4AfQCLAMoA9ADrANsA2gDU + AMQApwCHAHIAbQCLAJUAbgA/ACIAIQA0AF4AgQBuADIA8f+w/4r/lP+w/7T/kP9k/03/Tv9i/4L/ + ov+9/8b/r/96/1L/Wf97/5P/lv9+/2H/TP89/zT/Pf9X/2j/ZP9S/0P/Pf9E/1P/Zv98/4f/cv9K + /z//c/+w/9//DgAyADYAIgATABsAMgAfAOD/pf+X/6z/vv/D/+H/JABlAHUAWgBHAF4AhAB/AFkA + QQBEAE8ATgBXAIIAsgDBAJwAYQBSAG8AeQBOAAYA2P/c/9n/r/+G/4D/m/+w/6j/kP+D/4j/nf+v + /77/zv/I/5n/Vf8v/zj/XP93/2//WP9O/1v/dP+O/6b/uv/C/67/hP9c/1f/eP+j/7n/s/+p/6// + wP/T/+f/9P/0/9v/tP+U/4T/fP9p/07/Rf9i/4n/ov+h/6T/vv/t/x8ANQA5ADEAJAAgADcAWwB0 + AHAAYQBgAGoAhACZAJwAmgCRAIMAeQB/AIkAhABrAFMARQBFAEkASABOAF0AaABuAG8AfACQAJEA + cwBLAC0AJQAgAAwA6v/X/+n/EwBAAF4AZwBnAGgAeACYALcAuACdAHEAXABzAJoAswCiAH0AZgB2 + AJwAvAC8AJ8AiQCHAJ0AtACwAJYAdABjAGoAgACcAKIApACkALUA1gDzAPcA1QCnAIEAbgBiAEwA + LQAQAA4AKgBaAI8AuADPANgA1gDYAN8A4gDaAL8AkgBwAGcAcQCOAKoAuQC8ALEAmQCDAHIAZQBO + ACsA///a/8v/0//p/wAAFQApADcAPAA7ADAAJgAaAAUA6//Y/9L/1P/U/9L/0v/Z/+n/8//x/+z/ + 5f/d/9L/yP/E/8j/zP/G/8P/yP/X/+j/7//x//b/+v/6//f/8f/s/+j/4v/d/9//5P/o/+b/4//n + /+7/8v/v/+n/4f/a/9T/zv/J/8T/vv+2/67/pP+e/5f/lf+U/5T/lv+W/5v/ov+s/7f/uf+2/7D/ + rP+q/6v/pv+d/5H/hv+C/4X/i/+O/4f/ff9z/2v/Z/9f/1b/SP8//z//Qv9I/03/VP9f/2//gP+K + /4z/g/94/3D/bf9r/2P/Vv9J/0r/Wv91/47/mv+c/5v/of+v/7v/tP+f/4P/c/91/4P/kv+W/5H/ + jP+R/6L/sf+0/6X/iP9s/13/Xf9j/2T/YP9c/2H/c/+M/6f/uf++/7n/q/+b/4//if+H/4X/fP9u + /2f/av99/5n/rP+r/5f/f/9x/3T/hP+P/4n/ef9t/3b/l/+8/9T/0f+9/6f/oP+l/6n/of+Q/4L/ + hv+e/7//2//i/+P/5v/0/wQACwAAAOn/1v/Z//P/FAAsAC8AKAAmADYAUQBkAF8AOwAPAPT/8/8H + ABwAIgAdABwALgBRAHgAjQCGAGkASgAyACcAHQAMAPn/8P/2/wwALgBIAFEATwBIAEIAOgArAA8A + 7//b/9v/7v8MACQALQAzADsARwBUAFkASgAnAAEA6f/r//7/FwAqADIAOABBAFQAbwCCAH8AbgBT + AD0ANgBAAFMAZgByAHoAiACVAKoAuAC8ALQAoACOAH8AeAB4AH8AjgCeAKwAuQC+AMIAxgDOANAA + ywC8AKQAkwCQAJcAoACfAJUAhgB9AHwAfgB7AGoAUgBBADsAQQBEAEEAPAA6AD0ARQBNAEYAMAAb + AA0ACQAOAA8ABgD5//b/BQAaAC8ANgAoABYACgAIAAoACAD+//H/6f/r//j/CAASABgAGAAZABoA + GgAYABAACwAJAA0AGAAkAC8AOABDAE0AVQBZAFcATAA8AC8AIwAcABsAHQAbABsAHwAlACwANQA5 + ADgANgA2ADgAOQAyACcAGQAPAAgABAD///n/8v/r/+r/8P/1//P/7P/d/8T/r/+m/57/mP+S/4n/ + if+V/6z/yP/f/+v/6P/d/9f/1P/J/77/s/+k/5L/kf+b/6z/xP/X/+P/4v/Y/9D/z//Q/9L/1//W + /9H/1f/k/wAAHwA7AEQANQAdABAADwAWABwADQD4/+X/5f/7/xcAIwAcAAgA8//2/wIADAAHAPT/ + 4f/j//n/GgAsACoAJAAeACMALwA2ACUA///d/8//1v/o/+7/5P/b/9r/6/8JACEAKgAWAPz/9P/7 + /xEAIgAjABUABwAKAB8AOABAAC0AGQALAAYAGQAzADgALAAsADAAQABYAGUAYwBZAEsASABNAEwA + RwA6ADEAKQAqADEAMgA0ADUAOQBCAEsAUABKAEEAPQA5ADkANwAyADEANQA9AEIAQwA7AC4AIQAa + ABEACAD8//X/+P///wUACQALAAkAAAD8//r/8f/o/+T/3f/U/8v/xv/C/7//vv+4/7P/tv+5/8D/ + zP/U/9j/2P/W/9j/4P/j/+D/2v/T/9T/1//d/+L/4f/e/+H/7P/8/wsAEAAMAAUA//8BAAMAAgD5 + //H/6//r//D/9v/3//X/7f/k/+P/5f/m/+j/6f/s/+//8f/1//f/+P/5//D/6//i/9z/3f/d/9// + 3P/X/9D/z//W/93/4v/h/9v/1f/U/9j/2P/Y/9P/yf/H/8j/0v/e/+T/5f/m/+n/8v/7/wIABwAI + AAcACQAOABMAFwATAAsABwAJAAwAEwAYABkAGwAgACgALwA4AD0APAA7ADkAPABAAEAAPgA3ACwA + JQAdABkAGQAcAB0AIwAuADkASwBZAGIAYwBbAFAAPgArAB0ADwADAPz/9//7/wQAEQAeACoAMgA1 + ADYAMwAsACMAGAAKAPz/7//k/+D/3P/e/+H/4v/j/+T/4//l/+X/5P/g/9n/1P/T/9T/2P/d/+D/ + 5P/l/+X/5//o/+j/6P/n/+T/4//m/+r/7v/y//T/9P/z//L/9P/1//j//P/9////AQAEAAcACgAM + AAwACwAKAAcABwALAA0ADgARABMAFQAXABoAGwAZABYAEQAIAP//+//3//f/+f/7/wAACAAPABkA + IgAlACQAHwAYAA8ABwADAP7/+f/1//L/8v/0//b/+v/+//7//f8AAP//AQAFAAUABQADAP7//P/6 + //T/8f/u/+X/3v/b/9r/2//h/+f/7f/2//z/AAAFAAcABgABAPn/8P/p/+T/4//j/+b/6f/r/+3/ + 8P/y//H/7f/o/+L/3v/c/9//4//n/+r/7f/w//H/9v/3//X/8v/s/+f/4P/b/9r/2f/Z/9v/3P/f + /+X/7f/w//L/9P/z//D/7v/x//T/+P/6/wAABAAIAA0ADwARAA4ACwAFAAAA+//4//f/9v/2//n/ + +/8AAAcADQASABcAFwAXABcAFAASABIAEAAQABIAEwATABMAEgAPAAsABgD///f/8P/q/+X/5v/n + /+v/7f/u/+3/7v/t/+r/5v/h/9n/0//P/83/zf/P/8//z//P/8//0P/N/8n/wv+7/7P/q/+m/6b/ + qP+q/67/s/+3/73/wv/E/8f/xv/F/8T/xP/G/8v/z//R/9L/0f/N/8v/xv/B/73/tv+x/7D/s/+5 + /8T/zf/U/9n/3v/h/+T/5//q/+n/6//r/+3/7//w//L/9f/0//T/8P/r/+f/4P/Z/9L/zf/G/8L/ + wP++/8D/wv/F/8f/yv/J/8r/yv/K/8j/xf/E/8P/w/+9/8P/vv/A/7//wP/D/77/z//K/87/7P/e + //X//f/j//7/EQAcAAIA/f/l//3/9P/z//X/+/8GAAwADQAPABEAFQAcAB8AHwAgAB4AIAAhACAA + JAAkACQAJQAkACIAIgAiACIAIgAiACQAJQAkACcAKgArACwALQAsACoAKAAnACQAIQAfABwAGwAb + ABsAGgAZABgAFgAWABMAEgATABMAEgATABMAEQATABMAEwATABIAEQAPAA4ADAALAAkACQAJAAkA + CgAJAAsACQAKAAoACgALAAwADQAPAA4ADQALAAsACwAJAAkACQAIAAcABgAGAAYABwAJAAkACgAI + AAkACwAMAAsACgAKAAkACAAGAAQABAACAAAAAAD//////v/+//7//f/+//z/+//6//r/+f/4//b/ + 9v/2//b/9v/1//T/9f/1//X/9P/z//P/8//z//L/8v/z//T/9f/2//T/9P/0//b/9v/2//b/9v/2 + //b/9v/1//X/9v/2//X/9P/0//X/9v/3//f/+P/5//n/+P/4//f/+P/5//n/+f/6//3/+//7//r/ + +v/6//v/+//7//v/+//7//z//P/9//3//f/+//7//v/+//3//f/+/////v/9//7///8AAP///v/+ + ////AAABAAAAAQABAAIAAgABAAIAAgABAAEAAQABAAIAAgADAAMAAgACAAEAAgADAAMAAwAFAAQA + BAAEAAQABAAFAAQABAACAAMAAwAEAAQAAwADAAMAAwADAAMAAwADAAMAAwADAAIAAQABAAAAAAD/ + ///////////////////////+//7////////////+/////v////7///////7//v////7///////// + /////////////////v/+//////8AAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAQD/ + /wAAAAABAAEAAAABAAAAAAAAAAEAAAABAAEAAAABAAEAAQABAAEAAQABAAAAAQACAAEAAAABAAEA + AAAAAAEAAQAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAA/////////////wAA//// + /wAAAAAAAAAAAAAAAAAAAQAAAAEAAQABAAAAAAABAAEAAAAAAAAAAQABAAEAAQABAAAAAAAAAAAA + AAAAAAAAAAAAAP//AAAAAAAAAAAAAP///////wAAAAD//wAA//////////////////////////// + //////////////////////////////////////////////////////8= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf69e72d1467e1-MIA + Connection: + - keep-alive + Content-Type: + - audio/wav + Date: + - Fri, 03 Jan 2025 02:03:41 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=dFJ0onGZyPvkJsWcPw909VvgipDRKR2vv2KXs4cCU88-1735869821-1.0.1.1-lM_OpBKtC3kvwJRCGdcBF2oZY2AVan8M_G6ix6f._RJShcAxI7JRUIvVpj15f_ZKA.vz.Kn9Nth0bZ58IF3VJA; + path=/; expires=Fri, 03-Jan-25 02:33:41 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=om2_7N9ywbUve.A7EHEujJFNuOiW54Q4XF3UWJLkSQ4-1735869821482-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '1259' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-7d46678889-2zssc + x-envoy-upstream-service-time: + - '106' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_24fff97125d2f8bbbfbff679b4707a4b + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_openai_tts_wrapper_async[tts-1-mp3].yaml b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-mp3].yaml new file mode 100644 index 0000000..0058aa9 --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-mp3].yaml @@ -0,0 +1,362 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1","voice":"alloy","response_format":"mp3"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '80' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + 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 + 3ZbyIqUgQMxiTIHBQLZkqgCIAAzCDMIEtCpbEFMkJRcKTEFNRTMuMTAwqqpxxKJtbRpMJj8ggzgT + MZHKZbMYPSY7SZfMaDWZXcCOYM5GX4mo1GrvmFhjDIwTEw7QCOyV8BX5jHhk2YFOjg4EDzAlgIdE + aIVSmCPGRIixcvy0Zk6zUwlKWQJRGMAISMoHSl5EJaRCmaqQhEKDIRIc0bFA12MLQFAFQIiIYEDx + hghSFDCNJC4A2AmQToRbKmhDkEUAMwAwRCR3TeTJTuTvT0TDRYBRQKILHGTFUowQRjFCEpxAsLqC + yxVhI0YUI1iJhC8LRCsAZML0HLjlgvcKWENRSYhgDJhWgpcgwF7mCRnSHDVbDUPwl3nZgyH36gGG + IWyV//PkxPRx9Di4AtYzOHczFTwOSNVYzIzBkEUo5EDXwI4DXyGQycDIzMfQEbkuwV1MTAzbTKmC + zBCiIThAeMoEqYgQAppgCIKNDyflnTKWfMzZY01rT1v5C35lTLgUKZiZktAB8RvEroWaBLIMaHXQ + JGBYgJGF5CpGIIgK+YTRhriEscCHAR0AqAkACCMvohPUXU6XyvpjLGF9rYVRQmohIIUOSLqHiDai + ifpfURgCgI6AVARwBBGX0RDT/W0sCspVFVBQ9QxYNhK+l4rBLJUSUXUMUXWyspVVYJRVWRRdMhO+ + TEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf699c7ebf5c7d-MIA + Connection: + - keep-alive + Content-Type: + - audio/mpeg + Date: + - Fri, 03 Jan 2025 02:03:29 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=5ysVcgmr53I7RtkGHDm_tseinodjv0QVqqwU2vembJg-1735869809-1.0.1.1-JtpfMBsroHp3qAcjqFoaqPsrgBRcIHxJdLiLTFcMbOu2VH2wrpvACyKJjlTwwZUiFXpcWMGFD9jny.3xYQfg6A; + path=/; expires=Fri, 03-Jan-25 02:33:29 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=Z8pletnB7Gka0XZt8_Y.p4TBs.ZxwQgkdEUSBbYyAQQ-1735869809032-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '802' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-6646c6d4d-29t72 + x-envoy-upstream-service-time: + - '788' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_af462606f6e65d1c1c368051a93b3aff + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_openai_tts_wrapper_async[tts-1-opus].yaml b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-opus].yaml new file mode 100644 index 0000000..998b6d1 --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-opus].yaml @@ -0,0 +1,165 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1","voice":"alloy","response_format":"opus"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '81' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + T2dnUwACAAAAAAAAAACjjCszAAAAAC50kDoBE09wdXNIZWFkAQE4AcBdAAAAAABPZ2dTAAAAAAAA + AAAAAKOMKzMBAAAApOW6AwP///5PcHVzVGFncw0AAABsaWJvcHVzIDEuMy4xAQAAACYAAABFTkNP + REVSPW9wdXNlbmMgZnJvbSBvcHVzLXRvb2xzIDAuMS4xMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9nZ1MABMB4AAAAAAAA + o4wrMwIAAAAN1VeXIWFuZnRtbmxtaGZhYmBnZGRpb25wa1ZUUm5hUVJPTk9RPmiACk4Vx/B7y/El + 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 + z79BPg== + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf69a48a87744e-MIA + Connection: + - keep-alive + Content-Type: + - audio/opus + Date: + - Fri, 03 Jan 2025 02:03:31 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=DeiSKeiC_sUf.nitTUlMLcie7MrPee6XH30h5GFe8i8-1735869811-1.0.1.1-tkm9Uopui5QozwRkNLpY0YABnnsOovZHofuKPz1puA9p1cIoMD4BVwLKx62ZZKfSEFJ2D5MtmIUHNlQCz.P7tQ; + path=/; expires=Fri, 03-Jan-25 02:33:31 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=WRdQTWjl34Mwx706DlR_8ykXNiwdP8Z64qxsIGaJQa4-1735869811597-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '2078' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-b8bdd86cf-8khx7 + x-envoy-upstream-service-time: + - '555' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_d2c12247858ed5f40c0972274b665690 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_openai_tts_wrapper_async[tts-1-wav].yaml b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-wav].yaml new file mode 100644 index 0000000..8dc13b6 --- /dev/null +++ b/tests/cassettes/test_openai_tts_wrapper_async[tts-1-wav].yaml @@ -0,0 +1,693 @@ +interactions: +- request: + body: '{"input":"Hello World!","model":"tts-1","voice":"alloy","response_format":"wav"}' + headers: + accept: + - application/octet-stream + accept-encoding: + - gzip, deflate + authorization: + - DUMMY + connection: + - keep-alive + content-length: + - '80' + content-type: + - application/json + host: + - api.openai.com + user-agent: + - AsyncOpenAI/Python 1.57.1 + x-stainless-arch: + - x64 + x-stainless-async: + - async:asyncio + x-stainless-lang: + - python + x-stainless-os: + - Linux + x-stainless-package-version: + - 1.57.1 + x-stainless-retry-count: + - '0' + x-stainless-runtime: + - CPython + x-stainless-runtime-version: + - 3.12.6 + method: POST + uri: https://api.openai.com/v1/audio/speech + response: + body: + string: !!binary | + UklGRv////9XQVZFZm10IBAAAAABAAEAwF0AAIC7AAACABAAZGF0Yf////8QAAgA+v/v/+j/4P/e + /93/3f/k/+3/7f/v//D/7//u//H/9//3//v//v8GABEAGgAaABwAFQAPAAIA9f/1//P/9v/8/wMA + AwAEAAQA/////wAAAQAAAPr//P/1//b///8JABUAGgATAAUA+f/z//P/+f8GAA8ADQAIAAsAEAAS + ABkAIwAiABsAGgAeACIAKwA1ADsAQgBEAEMAQwA7AC0AIAAZABcAGgAhACwANAAtACQAFwAIAAEA + AAAAAAgAEAAXAB4AJwAsADQANQA3ADgAMgAvAC8AKwAoAC8AOgBDAEUARQA3ACoAIgAhACYALAAm + ACEAIAAVABgAKgA2ADcAPABFAEoASQBGADUAFgD8//T/+/8HABsAKgA+AEEAMAAoABwAEgACAP3/ + BgAMAAkADgAdADkAXwCQALQAnwBmACYA8f/F/7b/zv/v//3/EAAjAB8ADwD///D/2f/R/9P/xf+7 + /8//7/8cAE8AcwB0AEgAEwD2/+///P8TACoAOQA4ACwAGgABAOf/wP+r/6r/tf/Q/+T/9f/s/+L/ + 3v/k/+3/8f8HABsADgDw/9b/6f8bAF0AlgCjAH8AQQAAAMn/nf+c/7n/6v8RACsAIADw/7X/kv+d + /8D/3f/j/87/rv+Z/5T/rf/Y/xYASwBoAFIAFgDS/4//dv+X/+T/MQBUAFEAMwARAAUAAAD9//n/ + 8v/q/8//ov99/3T/fv+j/83/9/8FAPL/xf+d/5r/sv/M/+v/BQAWACcAHQAAAOD/vP/E//T/OQB0 + AHkAUwAVAOn/2f/n//3/CwD//+j/yP+g/4T/l//k/0oAjgC1AJcAOgDN/4L/Zv96/7H/CABfAK8A + 1ADKAKoAiQBeAB0A4/+//6j/mv+v/9H/9f8hAEsAYABSACkA/v++/2n/Mv8q/0j/j//f/zAAYwCP + AKQAjgBoAAwAn/9M/zn/V/+E/6//5P8KACIAJQD7/7//i/9w/2L/Vv9U/1T/YP+c/wEAegD1ABsB + 0ABGAM3/jv+D/4X/m//E//P/LgBKAEcALQASAP//6v/C/43/Yv9j/7b/MwCjAN8AyQBsAO//fP9C + /z7/Xv+r/w4AawCrAMQAwQCuAIgAWwAdANL/iv9Q/0T/ev/c/2wA2gAHARMB3wBtAML/Fv+5/rH+ + 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 + 0f+2/ZH7hfmX99n1J/Sq8jrx/u/v7vftMu127OHrg+tw68jrauxV7YLu1u9H8d3ylPRp9lT4S/pb + /Fn+agA4ArgD5gR/BZMFJAVRBBQDgQGt/5/9afsL+aj2H/SZ8R3v1+zZ6lrpR+i454Xnrecn6N3o + uenH6rzr3ewE7kDvkvDY8Qvz8fO/9E71qfUG9kb2p/Yq9+D33vgn+rL7ff1t/3sBpAPSBSAIVAqT + DI4OcRDcEf0ShROqEzwTcBJFEQAQjQ46DdgLlgp1CWkInwflBokGbwZ2BtAGbgdLCMwIvwmGCqIK + VAtXC7ULoAuwC80LcAt9CxYLnwoqClYJngizBwEHjAYzBuoFugV9BQAFewTeA/YC1QGEACj/4v2n + /J/7o/q4+bX4xPca93H2Avaz9a71BPZ+9nv3vfhj+nn80v52AZkEGgjcC5IPGhNHFvAYExu8HOkd + Vx4SHj4d8htfGpEYQBaIE3sQWg1FCnIH4ASQApQA2f5//Wv8jfu2+qr5bfgL95j1LPTK8mrxA/Ci + 7ljtSeyA6/TqpeqY6vLq2Otd7Xvv//HJ9Lf3wvrO/csAkAP1BecHdgl1Cv0K/gphChoJJQejBLYB + fP4W+6z3SPQX8Sruruut6Rjo6uYK5oHlSOV15QDmtuak55jooOmp6qnrmexn7S3u1O6W72/wifHH + 8jH0vfVu90P5N/tE/Uj/WgFPAz4FGAfWCF8KnQuSDAgNMA0LDZkM3QvrCtQJjwhLByIGHgU0BHwD + AwOkAnACigLyApUDTgRFBUkGSAeaCLQJigoWC4ALhwuhC9ML8wv3C+ML7gvHC5ALngt9C0MLCwv5 + CkYLhAtHDPsMjA2FDUcNiQyfCzsKgAh4BlQEXgKDACr/sP0k/Jr6IfnB94P2mPXL9Dj0IfSG9Ej1 + yfZi+AH6Tvsu/NL8U/2y/SP++f7w/2oBiwOTBkUKNA4BEk0VSxjlGgEdiB6aH/MftB//HtodGxy2 + Ga8WAhPUDmsKMwZCAsr+2ft9+a/3VPZq9en0h/QP9HLzzPI38rvxWPEB8bPwY/AV8MfvoO+i77Dv + 2+9T8DbxqvKn9B/32vmn/F3/yAHsA78FHwfbB/0HkwfZBrMFRASDAl8A3P0d+0/4hPX18pbwfO6s + 7DzrK+p16eboeugW6LvnYucf5/fmAOc356LnOegV6TXqkOsg7fTu1/Dd8iD1nPc6+tb8Z//EAdQD + hAXYBr0HNAg6COYHVAecBtQF/wQhBEgDgQLRAT8BwQBlAB8A5v/E/6//s/++/9P/8f8TAFMAvQBR + AQIC7AIfBGgF7gaiCGAK8AtyDdoO5Q+DEAMRTRE1EaIQIRC4DxYPrg6BDtgNzwySC0oKAgk1B6QF + NQQmA8kC3gI7A+EDhASrBG4E+wMgA9IBOwC7/oX9ffzD+5v7hful+6v7kvtw+zX7IvtQ+737e/yN + /bv+HAB9AakCWAOKAzEDqAI6Ag0CXgJyAwsFRQf4CTkNthAIFAMXVBkJGx8cmhy+HF8chhsBGtQX + GBXjEU8OcgpSBh4CJf7F+iX4TvY99cP0vvQI9X71DPaB9rH2kPY59sX1XvUH9b/0aPT984XzBPOp + 8mvyYfKW8i/zTPT79Tr43/qc/SgAWQISBDoFtQV1BZAEHQNMAVj/Yf1u+3X5bfdf9U/zRvFj77Tt + Suwk617qHupM6tPqkutq7Bzto+317SfuO+5M7nLu2O6L753wCfLE86D1k/d++Wf7N/3n/nwA7gE/ + A24EgAVWBtUG3waDBqoFdATeAhoBRf+C/e/7svrX+WH5Uvmg+Tz6F/sq/Gf9wP4ZAG8BrQLWA/EE + 4wWnBjkHggecB70H/QdYCNMIeQlfCngLrgwDDkQPMhDNEAwR7hB0ELwP4g7fDbIMnQuXCqoJzwhp + B9YFWANjADn9UPot+Ln2NvbQ9sX4uPt7/3wDxgY6CVQKhQraCYgI2gbQBM0CLwEZAK3/n//C/9// + qf+g/9v/aABNAXYCvgPnBA8GJwfYB7oHtwbSBFUCu/+Q/T78zftQ/NP9cAAcBH8IHw2CETAVBBgE + GlMbABzyGysbshm8F3YV7BIhEAcNqAkkBrwCvf9l/dD77/qu+uX6afsN/Iz8ovwR/Lv6rPgq9pbz + MfE478Lt4+zD7FHtju5U8GjyfvR79mH4OvoE/LH9K/9QAB8BfAFvAfMAAACO/q/8mPqB+Jb2C/Xy + 8z7z3fKz8szyC/NF81zzHfOT8tHx6vDw7wLvK+5w7dvsguxs7JjsC+277aHuu+8a8cXyvvTj9hL5 + Ovs3/fT+ZQBwAQwCKwLtAXABzAAxALD/Wv8x/yf/Pf9o/57/yv/n/+D/vf+H/03/Ef/V/pr+Vv4K + /sr9n/2I/Y/9vf0g/r7+rP/uAHECLgT+Bc8HfAn9CjoMIg2wDdcNvQ1KDa4M7gshC0oKbgmaCPAH + cwcnBxsHMQdxB9UHVgjkCHAJ9AkNCvkJigmrCH4HrgVaA5kApP0K+wT5uveA90/4L/os/dkA9wTk + CBEMLw43DzAPQA6vDJUKLgj+BSAE7wI/AtoBmQFEAewAkQBdAEsASABqAKMA8gBrAfQBWQJqAvEB + AAHk/+n+c/6U/lP/uwDXArcFQQkuDe4QDhRJFp8XQhg9GKkXbxbAFNES5hA+D9UNkgxDC9AJUwjo + Bp8FbgRLAyAC8QDF/7r+t/2c/DT7X/ki97P0SvIa8Dvuy+zn67frW+zX7fbvgvIT9Xv3jPk5+3P8 + Nv19/Uj9v/wU/G372vph+u75fPkJ+Zv4SvgO+OP3wveZ93b3Uvc09/v2hva09YX0CfNZ8Zrv8O2A + 7Gvr1urN6mTre+z87aLvXvEL85T07fUP9/f3r/hC+cb5Pfqs+hX7ePvf+0j8v/w8/bn9TP7j/ov/ + NADSAF8B0gEUAhkC4gF1AdkAHABQ/4/+6/1+/VD9Y/2y/TX+5f61/5EAagEoAs8CQAOVA7kDwAOZ + A1ID+wKuAn4CfwK7Aj8D/QMEBTwGjgfjCCAKIgviC00MXQwhDI8LzArNCbsIkgeHBp8F5ARhBAUE + 8AMyBLYEkAWpBvEHSAmXCuELrQzvDBMMYAqeBwwE6P/D+/H3jfSt8mzynvOv9vb6zv87BU4KnA7R + EbYTJxQjEyARnw7hC00JNQeLBVMEmwNdA3ADsQMCBCsEPwRHBFsEeARxBCoEbQMdAmEAZf5A/BP6 + D/h89rz1IfbR97P6gv70ApcHFgw4EKUTDBZFF2QXlBYoFYUT4xFKEMIOUg0wDFwLsgoYClwJZAgp + B9oFkwRJA+YBRQBg/j389Pmm91n1AfO08JXu5OzP64jr7Ovj7E3uFPAQ8if0IfbC9+n4hvm8+af5 + b/ky+fr45Pj9+Fr5EPrs+uD7svxT/an9s/15/eP86vug+hr5bfer9fXzRPKO8Pnulu177LLrVetU + 67frbux/7c3uPvCx8f7yDfTP9D71dvWE9Yf1nPXs9ZH2m/cN+dr62vzk/uAAoQIBBOgETAUvBZQE + nQNiAvgAi/8w/gL9F/x2+yb7KPt4+w381/zW/fb+JgBAAS4C5QJVA3EDQwPIAhsCYQG7AE8ANwCC + ACoBKAJrA9cERQaXB6gIYAmoCZAJGQlhCHgHeQZ3BYwE1wNWAyMDJQNrA9YDcQQeBdEFhQYQB2sH + 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 + Jfhg+ED4zPct95X2Kfb69RT2dPb29nb34fc++IP40Pgv+br5a/oq++L7XPx6/DD8k/u2+sD55Pgy + +MP3kPeb99P3Ivhw+Mr4LPmg+UT6Bfvq+7/8W/21/a39VP3O/DL8rPtJ+xn7Jvtm+8v7Qfy3/DP9 + rP0r/sH+a/8VAK8AIgFXAVcBJwHYAHwALwD8/+n///85AJEA+AByAekBawL/ApsDNAS/BCwFcQWM + BYIFUgX/BJgEKwS8A1kDDAPlAt8C7wIeA18DtQMWBH4E8gRpBdsFMwZcBmMGQQb0BY0FHgXBBHwE + RwQoBB8EGQT+A+ADuQOQA18DRgNSA3IDpgPjAxIECwTcA5cDTgMSA+QC1wLuAgEDBgMMAwAD9QLp + AgsDXAO/Aw0EOAQnBMUDZANnA/wDLwUAB0YJdQviDE0NvQxwC78JEwi3Bn8FMgSOAokAJv6k+2X5 + 0PdF9+j3lfnl+2/+4QAMA8wEVga7BykJkgrmC/kMig1gDXgMFQuKCSAI/gZRBg0GAAbtBbQFUgW8 + BP0DIgM2AiwB/P+f/hb9bPu1+QL4ZfYL9SL0v/P188L0Ifbz9xL6U/yZ/tYA8wLZBIQG5Af7CK0J + 8wnUCVUJgQhnBykG8ATZAwUDYQLnAXQB5wBUAMr/Wf8M/9z+r/5c/sv9AP0Z/Cr7QfqD+Q35xfiu + +MX4BvlG+Yb50PlD+vD6s/uW/Gr9Af45/gr+k/3s/C78cvuz+uv5APnm98H2kvV99KzzNPMZ81vz + 6fOt9H/1Rvbz9ov3KPi8+Fb58fli+pf6lPpk+iL69fni+fz5Q/qj+vr6YvvC+xn8YPyV/MP85fzg + /Jj8GPxt+6P60/k4+dD4lvh4+Gz4avh7+KL46/hx+SH63vqh+0/85Pxa/b39Dv5V/pf+1f4S/1L/ + jP+4/9j/8v8bAFEAnAD7AFsBpgHSAdwBxAG1AaMBnAGaAYkBcQE6ARIB+gD/AA8BLQFVAYwBywEU + AloCmwLNAukCAgMdAzsDWgNyA3QDZwNdA2MDgAO/AxQEfwTzBGIF1QVBBqEG8gYkBy8HHAfYBmsG + 2wU5BY0E5gNWA90CdQIuAgcCAgIUAj8CiAL5An0D7QNHBIkEogSaBHgEOQTvA4EDBAOjAikCnQEZ + AZoAYgB3ANMAaAEbApoCywLZAvICWgNKBOcFBAgEClcLpgsyC2YKhAnpCLkIoQjbBxwGqgPkAHv+ + nvyI+1r7x/s5/LD8Z/08/hD/FACCAVMDbAWKB04JeArOCowKLQoXCoYKNAvDC74LBAvLCX4Iiwck + BxsH/wZpBioFTQMmAQf/Nv2p+0j67viT9zj2+fQJ9JLzx/Ol9CP2FPgu+jv8IP76/9MBzwPtBfcH + ngmnCh4LDwu5CkMKwQkuCXAIigdtBj8FDATrAugBAQEjAE3/ef6S/Y38d/tZ+kv5YPiY9+n2P/ae + 9Sf19fQ09d71yvbh9wH5E/oc+yr8Qf1T/j3/3/8kAP3/gv+8/rv9ifw5++75rPhv9zT2DPUQ9Gnz + NfNr8wL0tvRv9fL1V/bg9nf3GfjE+DD5MvkA+Z/4LPj79/z3Ivhx+Nj4QfnI+V/6Fvvt+9H8tf18 + /gz/S/85/+D+T/65/RL9S/xh+0L6Evn09xP3hPZa9m/2nfbg9jj3vveR+Kv57Poq/EP9HP6z/iv/ + kP8GAHsA3gAaATMBHwEBAfQADgFQAbMBHQJzAqYCvwLTAvECHwNIA2UDWAMRA5sCGwKiAU0BDQHj + ALUAkQB0AG4AjADtAIcBSQIbA+wDowQ6Bb0FSAbcBmAHygcFCP4Hsgc9B8YGWwYEBq8FRgXJBD4E + xwNsA1MDXwOFA5wDrwO6A74DvwPSA+cD+wPhA5cDLQOzAjMCvAFjASUB6QCTAE0ADQD3/xwAgAAM + AZEBGwJ4ArYC5AIPA5sDhwSQBX4G/wYIByMHeQc/CJcJAQtcC24KRwnTB30GIAavBdsE2gPsAdH/ + Nv55/YP95/2//kH/xv+PAEcBkgJWBOEFkgcTCf8JygpEC2kLsgvjCzAMbww5DHELTwoJCe4HKgd8 + BnsF2wPIAXn/a/31+/H6K/pC+TH4HvdU9iL2pfa69wH5Qvp4+6z89/19/zEB5QKGBOQF8AbAB14I + twj/CEoJZQlKCQMJawinB84GCQZSBZoEvwOZAioBnP8a/q/8VPsF+rn4ZPcX9vb0FvSa813zcfPp + 86/0sfXt9k74zflQ+8f8Ff4m/9z/LwAvAOH/Rv9w/k396ft++if5JPhS96T2IvbG9bT1//WJ9lH3 + CPiT+Or4GvlI+T35C/lk+FT3NfYS9WL0HfQO9Ab0CPQk9MD0KvZI+Jv6ffzT/fr++P8HAUICFAMq + A4gCOwGJ/+/9lvwx+8D5FPhF9tb01vNL8zzzdvPH8zX03PS09cn29PcB+d35svqR+4H8c/0Z/pT+ + 6P5F/9//ugCqAVcC4QJNA8gDjwSDBVsG6Qb5BrsGWwbyBaoFQgWVBIkDIgK7ALD/9/6K/lT+AP6w + /Yr9w/2E/of/nQCiAXkCJQP2A98EqQVNBq0GvAadBooGcAY4Bg8GwgVyBTsFMQVcBYsFkgWfBdAF + JAZ3BsAG5QarBhwGaAXNBD0EoQPUAr4BegBv/7r+V/4o/vT93/3Q/fH9Zf4Q/wwA9ACxAWgCHAPL + A1AE2ARRBdEFYwbcBk4HrQfsBzUIcwi8CAQJDAnqCH4I6gdJB40G6gVPBZ4E2gMyA7ACYwJ3Ar8C + IAOkA0AE3wSsBZEGbAc8COIIYwnACfkJIQotChMK7wmqCUQJvwg4CK8HJAeRBuMFFQUrBDADOAJF + AUYATv9H/jX9O/xs+876T/oM+gb6NPqj+l37SPxT/ZH+2f8sAYIC2QMYBS8GHAfOB1EIqwjICJsI + PAidB9EG5QXWBKYDYgIhAcv/fv4s/e77zvrj+Sj5dvjR9zb30Pas9sj2Evdu98b3Tfj++L75mfpW + +9D7Dfxg/KL8qvyl/Dj8V/tw+rv5MPm++Ff4vPcN96z2sfbt9mX34/cM+Av4EfgP+DH4R/gb+KH3 + w/bQ9cr05fM5853yFfKz8XXxtvGg8hH02/XU97v5i/te/T//CgGTApkDAgTWA1MDgAJjAer/KP4x + /DD6Zvjd9pT1jPS48xDzvfLK8izz0POi9IP1ZPZP9y34FvkR+gz7/vv1/Nz9rf6G/2oAYgGPAtAD + AQUaBg0H0gd/CCEJngnlCeIJgwnMCMgHkAZDBfUDogJKAe7/n/5v/Yj8B/zf+xP8gfwb/dn9rv6l + /7IA0wHnAuEDsgRRBbsFBQYwBloGgwaiBq8GqwaUBn4GgAarBgIHWQeQB5sHiwdmB0cHGgfTBk0G + gAWDBH8DgwKPAY8AhP+O/uH9bP0//Vv9hf3G/Sr+w/6D/3YAcQFMAgIDjwMLBJEEMQXSBWsG2AYv + B5IH/weKCCwJ1glxCvcKXgu+CxkMYgyADHIMMwzUC2ML5QpYCrgJBwlTCJkH+gZ7Bv8FhQUnBcQE + ZQQ6BBoE9gOvA1QD8QKSAlsCMgLyAaMBXAEPAcUAxgD7ACIBTQF5AZEBxwEeAnICwgILAzoDLgMm + AyUDKwMiAwgDzgKHAj4C6gGdAUkB/QCmAEwAAQC8/3z/S/8c//7+8f7l/tf+y/67/p3+gv5z/ln+ + Gv7E/UT9tPxF/Mn7Q/vB+ir6f/nd+G74C/i392z3Hffq9tH2wvbD9tH22vbD9q/2pfal9pn2Z/b6 + 9Xj1/fSQ9Dz04/Oe81vzE/MH83rzZfSw9QX3L/hJ+Zz6Jvyw/VP/lAAvAToBvgBiABkAef9o/tL8 + +PpY+fn3zfYD9k31fPS/82/zj/MC9I70C/Vq9cH1Tvbp9oH3B/hX+Jj4+viP+VP6LvsU/BD9Hf5T + /7cAOgK3AxYFRQY+BwsIrwgLCSUJAAmZCO8HFwcoBhsFDQQTAz4CkgEPAasAbABbAHIAuQAaAY8B + BAJPAo0CtALKAscCpAJnAhICsQFWAfAAoQB1AF0AaACeAPYAbgEAAqUCTgMDBLcEWgXkBUoGewaL + Bm4GHQapBRgFcwS0A+YCHwJdAbUAHACh/1z/PP8z/z//Xf+O/9T/JgCFAO4AUAGlAe0BPwKUAgQD + gQMABJcEMAXYBZYGYgdACCcJCgriCqsLaQwRDagNFA5bDo0Opg6eDmwOEg6gDSENgQzMCwoLOwpm + CYAIjgegBr8F4AT0AxEDRAKAAc4AJAB4/+D+YP72/an9ev1h/Vn9av2R/dv9R/7J/lf/5f9vAAAB + ngErAq4CJAOHA94DMQRqBI4EpAS0BLcEsQSpBIsEbQQxBPcDtwNzAyUDtwI6AqMBCAFkALD/3v79 + /Q/9F/w4+136gPml+M73Afdg9uL1fPUq9eT0pfR09F70ZPR29Ir0ofS79OD0FPVF9X31rvXm9SL2 + bvbM9if3fvfi90340fhu+Qv6mPod+5X7D/yA/OX8I/0x/R/9/fzE/Ir8M/yu+xj7iPoK+p75RPne + +Gb4EvjN96X3rves95n3jvef98r3D/hZ+Jr4z/gT+Xr5APqV+iP7n/sm/MT8e/08/vf+mv81ANIA + bAEMAowC6wIoA2ADkwO8A9YDywOtA4sDbwNkA1QDNwMWA/YC6QLsAvcC/ALyAuYC3gLYAtQCwgKk + AnoCWQI9AioCFQL5AeIB2gHbAe0BAQIWAjICTQJxApUCswLGAtEC0wLMAsICsQKPAmICLwL/Ac0B + lAFmATkBEgH7AOsA4QDeAOUA9AASAToBZgGYAc0BAwI/An8CxgILA1EDmwPnAzUEgwTSBCEFcwXJ + BR4GcAa/BgcHSgeKB8kH9gcYCDUIQAhICFAISwg6CCkIEwj6B+QHygepB4oHYAc/ByMH/gbVBqkG + eQZKBh0G6AW2BX4FQwUTBeUEtAR7BEEECQTWA6UDcAM1A/QCsAJ4AkMCBwLQAY4BQQECAcMAhAA+ + AAAAsP9r/zv/BP/M/pD+Vf4e/vH9x/2Z/WT9Mv0J/d78t/yR/GX8NvwL/PL7z/ut+4v7XPs3+xv7 + APvj+sX6ovqA+mH6Svoz+iD6BPrq+db5yfm9+an5l/mH+Xj5aflk+WL5XflQ+Uz5Ufld+Wb5avlq + +XP5hvma+ar5vPnT+e35A/ol+kn6Z/qB+pv6v/rn+g37LftP+3L7m/vJ+/j7JPxK/HD8l/zE/Pb8 + KP1P/W39kP27/eP9CP4o/kL+YP6G/q7+z/7s/gP/HP9C/17/ff+d/7D/yP/l////GAAzAEoAXQB1 + AJoAvQDUAPEADwEuAVIBcgGNAasBxgHcAfwBGwIxAkMCWAJrAn0CjQKiArcCvwLPAuEC7QL1AgED + DQMUAx4DIQMkAycDJgMnAycDKwMqAyQDIwMdAxwDGQMWAxQDDwMOAwsDBgMEAwED/AL4AvMC7gLr + AugC3gLWAtcC2ALQAtIC0gLQAswCyALLAtIC0wLPAtEC2gLeAuQC6ALtAvUC+QL9AgUDCwMXAxoD + HQMoAzQDPwNEA0oDVANbA2QDbwN0A3YDegN5A3YDdwNyA2kDYgNbA1EDRQM2AykDGwMDA/IC4ALT + Ar8CnwKAAmkCVAI2AhkC+QHbAbwBmQF4AVgBNQELAewAzQCkAH4AWQAzAAwA4v+7/5b/a/9D/xr/ + 7/7E/pr+cP5B/hH+5f24/Yv9XP0w/QX92Pyy/In8Yfw5/BT88PvR+7H7kvt3+1v7Qvsr+xP7APvr + +tv6yfq8+q/6pvqh+pz6mPqY+pr6nvqi+qz6tfrC+tL64vry+gX7G/sw+0n7ZvuI+6r7yPvw+xb8 + Pfxl/I/8u/zn/BL9Qf1y/aL9z/39/Sn+Vv6F/rT+4P4L/zf/Yf+L/7P/2P/8/yAAQgBlAIYApQDE + ANwA9gAOASUBOwFQAWABbgF/AYwBnAGqAbUBvgHEAc0B0wHVAdcB2wHYAdoB1wHWAc8ByAHCAbgB + rwGjAZwBkwGHAX0BdgFuAWUBXwFZAVUBUAFLAUcBSgFLAU4BTgFQAVsBYQFqAXYBgQGOAZ0BsAG9 + AdEB5QH5AQsCIQI3AkoCXQJ0AocCnAKuAr4C0ALkAvUCBwMVAyUDMwNAA0wDVgNfA2YDbQNxA3UD + egN9A3oDegN8A3QDbgNpA2MDXANQA0EDMwMnAxUDBAPyAt0CxwKxApYCewJhAkQCIwIFAuUBxQGj + AYQBZAFCASABAQHiAMEAoQB/AF8ARAAlAAcA6//M/67/kP98/1v/Qf8m/wz/+v7f/sj+sf6b/oD+ + aP5S/j7+Kf4X/gX+8v3g/dD9wv20/aH9kv2H/Xr9bv1j/Vr9Tv1F/T79Nf0v/Sf9If0d/Rb9EP0L + /Qb9Av3+/P38+vz4/PX88fzv/O/86vzr/On86Pzn/Oj86Pzn/On86/zt/PD89fz7/Pv8//wH/RH9 + Gf0g/SX9Lv06/UX9UP1a/WT9b/18/Yb9k/2j/bD9wf3S/eD97v0B/hL+Iv40/kb+V/5n/nv+jv6j + /rj+zf7f/vb+C/8c/zD/SP9h/3f/j/+l/73/1f/r//7/FwAwAEUAVgBnAIIAmgCpALsA0QDhAPIA + AwEPASYBNQFBAU4BYQFwAXsBjAGbAacBtAHFAcsB0AHgAeYB6QHvAf0BAQICAggCEAITAg0CFQIc + AhoCGgIaAhwCHAIdAhsCGAIbAh8CGAIXAhMCEwISAgwCDAIJAggCAwIAAv4B/gH1Ae4B6wHoAdsB + 2AHYAdQBzwHIAcEBuQGxAaoBnAGVAYsBgQF3AWsBYgFYAUoBQgE3ASoBIQEWAQgB+gDsANoA0QDG + ALUAqQCbAIkAgQB0AGIAVgBMADwAMQAjABQACwAAAPb/6f/i/93/0//L/8T/vv+3/67/pP+f/5v/ + k/+M/4n/gP+A/3//eP94/3j/dP9w/23/av9q/2z/bf9u/2n/Y/9d/2T/Xv9F/1P/Uv9M/03/S/9B + /z7/SP9F/z//Nf8x/zT/NP8s/yb/Jv8t/y7/JP8q/zb/Nv84/zn/N/84/zz/O/8+/z3/OP82/zj/ + Of82/zf/Ov86/zb/OP9A/0T/Q/9F/0z/Tv9N/1D/VP9W/1n/W/9f/2b/a/9n/2v/cP96/3z/gv+I + /4z/jv+T/5r/mf+U/5L/lP+Y/57/nP+c/6H/pP+g/5//p/+t/67/rv+x/7L/sf+y/7T/sf+x/7D/ + tv+5/7j/sv+1/7X/tP+1/7v/wf/B/77/v//H/83/zf/J/8f/yv/J/87/2v/a/9f/1f/Z/+j/8f/t + /+3/+/8EAAYADAAYACYALAAuADoASABQAFoAZgBwAHUAfQCEAJIAmACUAJsApwCuALQAtgC0ALwA + yADEAMEAxgDJAMYAxADLANMA0ADNANEA0ADBAL8AxAC9AKcAnQCZAJUAiAB+AHoAdABvAGoAYwBW + AE0ASABCACoAGQAVABAAAwDy/+r/6//q/+D/0//I/77/tv+y/7L/sv+2/7b/uf/F/9T/5//v//b/ + 8//x//H/6v/l/+D/6P/t/wUAGAAhACEABwATAGYAuwBzAPn/OQClADEAyf8HAD0AMgAkACUABgDo + /8wAJQJgASj/g/+5AEcAgf+6/0YAKgCe/xf/QP/3/ycAr/9F/+r+J/8IAMf/2v7u/jIAzv+Z/qT+ + bv9j/5H/Uf8n/xH/AP92/0oARAD//h3/IQBu/kP95gBiBAEAJwCbCEkE6/9e/cr5ivhd+pf/6f7x + /4EA2P8VAoQCs/83AOQCTwFK/9sBoALlAWQB5gDaAX0CEgBA/lUAfP/Z/gMASgAhANv+If3B/LoA + fQL4/A34Rf0KAl7+0PsZ/PD97/6S/lr+sADc/xICfgQfAI7+2AQFBXL9IPzxAEEDIAIYAP0AngEO + AgkCEwOUA78BaP1a/5oFMwJK/IYAmwGN/n/81/yt/nL/hfyh+0b/WP+B/MD7/P2P/8X7+/slAXf7 + zvn//lIBnPsF/acAJv9rAEEAq/4NAiIG+QJbAEICwAMiAwwDwgKwALECkQUVApoAfAPbBT0EpwFc + ALsDJwX6/2n+rAGgAlEAtP9HAHkA3QDs/zIBdQPlAVT+oQHSA9/9cPxSAhUBJP7E/vj+OQF0AYf/ + mP91AY4DlQFQ/hb/AwPv/zf8QQEFAw7/tf5H/woBAgE9ACUC6QLeAPIB/gHzAKsAKQAuAcIC2/+/ + /asAqAKjACv8cv+fA4AArPwP/98BfADj/58ATQD6/o3/IwELAEL/FP+l/5cA6gC1/xkAiQDS/sb/ + dAGd/tL9qv9C/0j+Uv5E/v794v0D/rD9BP08/Rf+AP6n/in+Uv3b/jsB4P77+xv+jgA4/iH9wf5X + /i3/Lv44/poB/QAN/An+lgKhAXD9Ff3LAVgCkP0a+3X+SwE7/0P9V/0e/nj/uwDR/j7+f/96/xT+ + ZP40/1f+ev3P/Rn+dP7F/jD/1v45/ywAmQAVATwAjgAQAeH+JgCQASgAmP6k/xwBMwDM/9YA6wAi + AZkByQEgATUBqgE0AewAlgAGAPX+qv/XAMMAIQAHADEAXQC7AGQBWgEGAIIA5wFuABr/dgBjAFf/ + QgAoATcB5AHCAEoAQAK8AZsAGwIOAb//1gBZAR0B3wBqAC4AewBlAKH/UwCdAK8AIAHtAJQA/AAJ + AVMAZgAhAdX//P7MADMBFf88/0wAjAAcAfsB9AH3AZgBUQLJATQBxwHbAWkArv/OAGcB6wHLAYUB + NwJdApQBBAGLAEYAp/+E/40AyADW/yj/8P71/3wACQDf/1oAFQH5AG4Asf/n/+UAUgBy/rz+JwAd + ACP/AP+k/zIAywAWAUUARABKAbgAdf+m/6wAbgDP/2T/zf68/mr/1f+f/xgAcwBqASACYgH1/3P/ + 2f+F/8v+gf5z/m7+Wv7U/oT/Xv8Q//r+jv/V//T+If6s/Xz9MP0a/Yf9l/0N/SH9u/0A//f/DQAa + /0T+X/5H/77/y/6K/rj+qv6c/qH+nP1T/UP+8f71/pf/EgDH/wr/Cv7m/RH/zP7s/Pf7kPxc/Vf9 + w/1F/nj+uP6t/iH++v1f/lb+x/36/WT+I/6V/Vj9T/2j/UT+Qf/+/4b/d/5p/j//7f/p/2L/IP/D + /nb+of4k/0j/df92/1//uP8pADMArP8C/73+qv7V/kT/DP+E/lD+ZP47/7n/v//L/z4AUwAz/17/ + fQBNAN3+UP5d/wAAZP88/8D/0v8FANEApQGaAQYBoADtAC0BBAFgAYcB4gA9AMEAFwHaAD8BBQJM + AoMCkAOrA44C5QGHAVsBBwGSAIUAUgDc/2AAKQFlAZUB7wEdAjYCQQLEAcYBHwKzAToBCQEkAboB + sQFTAeUBnwLCApECyQJSA+0CjwKrApUCewIvAvkB+QHXAdoBIwJXAoAClALIAsECqQLmApwCNwI1 + AjMCHgLvAVgBpQA1AEwAyQD0APcAcAG+AbEB7AEVAsUBxQH7AcsBrwFtAb4AfgDpACYBHwFVAbAB + 9QETAvgB6QHDATMBdQA6AFwARgAeAE8AvADwAKoAQgBeAOMA4wDDAN8AugA3AMH/nf/O////JwAt + AAgA5P8yAKMA0wDwAK8ATAAWAOP/8f8WABAA/f9RAPYA9gA3ANj/5P/6/0UAlACOAEMAHwALAAAA + AADt/77/kv9Z/xf/7v4J/4b/q/9m/1j/af81//f+uP6p/v7+af+1/6z/hP9v/2b/jf/H/+r/tv+s + /zQAPQDC/8P/HgDI/yD/fP8dAOD/Of84/83/6v9q/zb/V/8x/9b+rf7k/iz/O/8W/zD/j/+C/7j+ + Tf6V/rz+jv6l/gX/Jf8P//z+GP9O/1b/bP9r/yv/C//W/oz+nP7w/lL/xf81ABAAsP/E/xYA7/+U + /4//PP+O/iv+J/5z/gj/WP+F/6n/h/8+/xH/F/8M/yD/cf+y/67/Wv/+/uf+Gf8n/wX/6v4A/+/+ + qv6y/hT/g/+X/1H/RP9p/17/If8Z/0P/bv94/1H/J/8g/zT/Y/+g/6L/qf+3/4//Gf+p/qH+i/41 + /gr+Ov5q/oT+qv7p/lX/hP98/4//eP8u/wr/2P6p/tD+8v7w/vn+Bf8R/y7/Tv9p/7b/AQDa/3L/ + Of8n/97+hf54/rn+yf6t/tT+J/9E/0P/Xv+O/27/D//E/oj+dP6K/qD+hP6x/hn/Lf8E/wH/Wv+q + /5P/Z/94/4D/Fv+i/rP+Bv8L/83+2/40/4T/iv9t/6L/EQAtAPj/6v/x/7L/df+V/7L/iv9n/2f/ + bv+K/9z/JwBgAHYAQwAbACIANQDv/5D/Yf9x/3D/PP9D/7X/+v/i/97/KgA3ANr/g/9A/zP/Wf9I + /xf/Hf97/77/5f8/AMEA4wCVAGQAiQC8AHkA6v+b/6j/pf94/0z/XP+z/wIARQB5AGYALgDv/8z/ + wP+R/2X/SP8Z//P+G/+F/+H/HQBGAIsAyQDWAL8AngB2ADkA8f/I/8f/2P/l//r/WAAHAZ8B3AG+ + AaMBuwG5AZ0BgQFSAQ8BxACQAJ8A2QDrANkAxQDLAM8AmwA8APr/7f/8/+j/of+A/5T/mv+d/+3/ + UgBxAGQAggC0ANoAzQDCAP4ANAE7ATgBZQFqAU0BUAGEAZ0BYQE8AVMBegF1AWkBcwFjATgBGQEk + ASIB5wCbAFsARQBBADQAGwDQ/6H/0f8ZACsAHAApAG4ApADDANMAzwCcAD8ACwAqAHQAeQBLAC4A + VACsAAgBRQE+AT4BQgEHAboAngCWAGQAJAARAFQAvQDUAJ8AowD2AE8BQgEOAd0ApABhACgAIAAw + AAsAx/+1/+D/HgArAAcA7f/j/+f/0//N/+n/5f+v/27/Zf+e/7P/uP/b/xQAQAA4AA8ADQBTAJgA + iwBkAFEAPgAIAOP/GwBjAHYATQAnAC4APQA7ADIANAAkANf/ef9M/2n/mv+9//D/TwCmAL4AwADa + AP4AEwEMAd0AnQBYABAA6P8MAF4AowCwAKoAqACzALoAsACxAKsAYQDv/7L/wv/y/w8AJQBGAGkA + bwCAAKkAvQC2AJwAdgBVAC4ADAD1/9f/yf/m/yYAVgBIADkAYACeAK4AngCyANUA1QCnAIUAmQC7 + AMYAvgDGANUAywC6AM0A9AD7AN0AwADPAPIA3QCSAE8ASQBmAGkAZAB3AIwAgAB4ALAAIQFWATMB + 9gDbANMAnQBKABgAGwAiAAMA5P/L/6P/b/9k/4T/jf9E/8z+gf55/rT+Af80/yH//P4U/zz/Yf9y + /2z/Wf8t//X+5/4J/yn/J/8t/zv/WP9o/1//Xv91/5v/o/+D/3X/fv+O/6//yv/I/7z/x//i//v/ + DwAsAEUAOQApABwAFQAHAO//6//s/+L/y/+4/9D//P8zAFcASQAlABIAEwAvAD0AFADY/6j/pP+w + /9H/AgAiACoAJwA0AFsAbgBXAEEARwBNADcABgDr//f/DwAUAAQA6//I/7j/x//v/wYA7v/B/63/ + yv/8/xUABwDo/9P/zf/V//T/GgAvACIADAARACgAOgBDAD0AMQD3/5z/Zv91/7X/7P/+//P/3f/E + /9L/EgBKAFAADwC8/57/z/8zAJUAuQCuAKMAsgDMAM4ArAB3ADEA4f+g/3f/aP99/4j/dv94/5T/ + p/+w/8f/8f8WACUADwDi/93/+v8DAPH/3P+8/7L/uf/G/9r/+v8AANn/p/+R/5f/lP94/1n/XP9m + /17/Wv9u/4//rf+u/5z/j/+U/63/xv/S/8z/pv+A/4D/lP+K/1L/Af+9/qX+yf78/hT/A//u/gT/ + SP+J/7H/sv+Y/3f/XP9p/53/xP/G/7j/wv/c//X/9P/c/8D/l/9a/xL/1f6n/pn+nP6t/tH++P4P + /x3/Ov9l/4j/l/+M/2r/S/85/zz/UP9R/zL/E/8D/xH/N/9Z/1L/N/8u/zr/Xv+C/4f/ef9m/1P/ + W/91/4b/gP9t/1v/YP+B/5//n/+a/5r/m/+Y/5T/jv+D/3H/V/9Q/1D/Sv9I/1D/av+R/7P/xv/l + /wgAIQAvADQAKwAIANv/uf+v/6b/jv99/4X/pf/O/+//BgAOAAMA6//F/6X/f/9Q/yH/Af8H/yP/ + UP+G/77/7/8QACUAMQApAAgA2v+w/4v/Yv9L/1T/cv+c/8D/6/8XAEoAbAB5AIQAjgCQAHQARgAi + ABIA/P/v//T/8v/i/+X/BAAhADgATwBfAF8ASAAvAC0ARgBaAFIASwBIAEIAUQB0AK0A4ADqANcA + vADCAOEA/wALAewAqABkADQANABMAGYAawBpAHEAjgDRAAgBKgEsAQIBwQCQAIQAeQBYACwABwAM + AB0AOgBtAKIAswCoAJMAiACTAGgAKwD+/9z/wf+6/9j/EABAAF8AjAC9AOYA5QC/AIwAYQA3AAkA + zP+O/2n/Y/96/7n/9/8oAEUATgBkAJAAsgC5AJ0AYgA0ACAAMgBIAF0AawBzAIUArwDTAOcA+ADo + ALQAjQB0AF0AQwAgAAAA9f/e/9z/4f/3/w4AFwAeADoAUgBfAGAAWgBTADsAFgD3/+P/zP+1/5T/ + gf+E/47/nv+w/83/3P/j/+X/5//c/8X/mf9o/0j/Ov9C/1f/cP+P/7X/1v8HADoAVwBVAEUAOQAo + ABIA9v/d/8z/v/+4/73/zv/r/wMAFgAuAEkAVQBfAGcAWQBMAEkAPQArACoAQgBhAHIAgwCiAL0A + zQDTAMAApQCBAFYALQANAPr/+P8AABQAPAB3AKUAzQDlAOoA4wDRALgAlgBpAD8ALQArACkAMgBK + AFwAdACCAIIAdgBXACMA+f/U/7z/qf+f/6b/yP/y/xoATAB7AJkAqACrAKsAoQCKAHoAYABEADEA + IAAPAP///v8PACMAPABJAE8AYQB2AIYAmACiAKAAnACOAH4AegB6AH0AdwBkAFAASwBZAGoAfACC + AIcAfQBnAFcAVwBUAEMAJwAEAOv/6v/0/wgAHwA0AEQAVwBwAHsAdwBjAFAAOQAZAPb/3P/Q/9f/ + 7v8SADcAWAB1AJAArwDJAN0A2QDOALQAoACDAIcAiwCXAKwAwgDdAPkAFwErAUIBWwFnAV4BSwE0 + ARYB+ADXALQAigBbADwAJgAYABoAJQAxAD4ASABWAFkARwAfAPr/2f+//6f/l/+P/47/mP+s/8f/ + 6P8AAAwABADu/+X/1v+x/4r/Y/81/wf/6/7k/uf+5/7w/vT+Av8R/yX/SP9e/27/fP+F/4j/iP+J + /4X/ev9n/1T/T/9c/3D/i/+l/8D/5f/7/xYAIQAqACwAKAApACsANQA9AEsAWgBlAHMAfwCEAIIA + cQBVADsAIgADAOr/0//A/6//rf+0/77/xP/F/73/rv+k/5z/jv+G/3n/cP9q/2P/Y/9j/2z/bP9o + /2H/VP9I/z//OP8x/yj/Kf8m/x//Hf8d/x7/GP8M//r+7v7j/t/+3v7Y/tD+xP62/rD+r/60/rj+ + wf7I/sz+0/7k/v3+G/85/03/Yf9r/3P/ev98/3T/Yf9U/1H/U/9e/3T/lv++/+L/BgAkAEMAWQBj + AGkAZwBhAFEAPgAoABMAAgD3/+r/2f/S/8f/vP+1/7j/uP+5/7f/vP/A/8P/yf/O/9P/2v/h/+T/ + 5//q//P/+/8DAPn/6v/V/7r/oP+G/2r/U/8//y3/H/8b/yD/J/83/0n/U/9i/23/ef+H/5X/nf+b + /5z/nv+k/6H/of+e/5n/lf+T/5X/m/+r/73/1v/u/wkAKwBJAF4AbgCAAIsAkwCYAJoAngCnAKcA + pgCtAK8AtwC8ALsAuQC3ALoAvQDEAMUAxgDJAMgAzgDUANMA0QDJALcApwCiAJoAkwCNAJEAmQCY + AJgAngCkAKoArACmAJcAgABvAGMAXABaAFkAUgBEAEEARgBOAFMAVABKADkAKQAeABMACgACAPz/ + 9f/p/+L/3v/a/9v/3P/f/97/2//a/9//5//t/+7/8P/0//b/9f/1//T/8f/w//D/8f/3/wAACQAT + AB4AJgAnACkAKAAjACMAHgAZAAsAAQD7//b/8//0/+7/6P/f/9f/1P/S/8//zP/H/8P/v/+6/8D/ + yP/K/8//0//T/9L/0v/Y/9n/2P/T/8r/vf+0/63/qv+n/6D/l/+L/4P/ff9//4P/hv+M/5L/lv+Z + /6P/sv/A/8n/yv/H/8r/yv/G/8D/vP+1/7H/q/+k/6r/tf/D/83/0v/d/+n/9P/7/woAFgAgACUA + KwAuADEAOAA+AD4ANwAtACYAIAAdABkAEwAPAA0ACgAKAA4AFwAfACgAKQAqACwALgAxADIANQA3 + ADMALQAlACAAHQAcABoAEQAGAPv/9//y/+//8f/1//j/+f/7//3/BAAOABMADwARABAADAAHAAcA + BQACAPz/+v/7//n//P8DAAYACwAUABsAJgAwADoARwBPAFgAYABpAG8AcQBzAG8AbgBvAG4AbABp + AGkAZQBiAGMAZQBpAG0AcAByAHcAfQCAAIQAhgCHAIcAiACHAIUAgQB7AIAAfAB3AHAAZQBiAF4A + VwBRAE4ASgBEAEMAQABAAEIARwBKAEgASABIAEUASABIAEMAQQA+ADUALAAjAB0AFgALAAIA/P/0 + /+//6//m/+P/4v/g/+H/4//h/+L/4//k/+j/5//q/+z/6f/p/+r/6f/m/+X/5//l/+T/6P/t/+// + 8P/3//v/+v/9/wAAAgACAAEABQAFAAgABwAIAAgACAAFAAkACgAKAAkADAAOAA0AEgAZABoAHQAf + ACYAJwApACkAKgAtADAALgAtAC0ALQAtACoAJgAlACMAHwAeABwAGgAZABcAEwARAA8ACwAIAAgA + BgAEAAIABAD///f/+P/3//H/7v/w/+r/6P/n/+f/5v/m/+L/4P/k/9//3P/Z/9b/1v/W/9f/2//e + /97/4v/k/+b/7P/u/+n/6//q/+z/6//s/+7/8//v/+7/9P/2//j/+v/+/wAABAAGAAkADwATABQA + FwAZABoAGwAaAB4AHgAgAB4AIAAiACQAIQAgACQAJQAjACEAJwAsAC4AKwAqACoAKwAlACIAKAAl + ACAAHgAeABsAGgAZABoAGwAcACEAIgAeABoAHQAgABsAFQAUABMAEwAMAAIA///+//z/+P/0//T/ + 8//x/+//7P/t//H/8f/y//L/8//z//L/7f/s/+7/7v/r/+f/6v/r/+n/6P/m/+T/5f/q/+n/5v/r + //D/7//x//H/7f/v//T/9f/3//j/9//1//X/+P/6//n/+f/2//j//f/+//////////7//f/7//n/ + 9f/z//b/+//7//j//P8BAAQAAwABAAIAAwD///z//f/5//P/7v/n/+j/5v/l/+H/3//d/9j/0//R + /8//zf/N/8//0v/P/8v/x//J/8T/vv+7/7f/tP+x/67/q/+p/6f/pv+n/6r/r/+r/6j/qP+p/6n/ + qP+n/6j/rP+q/6v/qv+q/6b/o/+h/57/n/+i/5//nP+a/5r/m/+c/5//o/+n/6j/rP+r/6z/r/+v + /6//sv+0/7P/tP+1/7X/tf+1/7f/tv+2/7b/uv+3/7j/u/+7/7v/vf+9/77/vv/B/8P/xv/G/8b/ + xf/I/8n/x//I/8j/yP/H/8X/w//C/7//u/+8/7r/uf+1/7P/tP+2/7T/tf+2/7f/tv+0/7T/tP+x + /7D/r/+u/6v/qP+n/6T/of+h/57/nv+g/6D/of+h/6X/p/+p/6r/rv+x/7X/tv+3/7n/uv+5/7n/ + vf/B/8H/w//H/8n/zf/R/9X/2f/h/+f/6//y//j/+v///wAAAwAIAAoACwAKAA0ADwAUABcAGgAd + ACAAIQAjACYAKAApACkAKgAtAC8ALwAuAC8ALQAvADAALwAvADEANQA0ADgAOAA4ADcANwA6ADsA + OgA4ADkAOAA0ADEALgAvADIALwAqACoALwAwADIANAA1ADkAPAA+AD8AQABCAEIAQwBBAEQAQQBC + AEEAPgA8AD8APQA8AD8AQwBFAEgASwBOAFEAVABXAFsAXQBfAF8AXgBeAFwAWgBZAFoAWQBYAFYA + WQBZAFkAWABeAGAAYgBgAF4AXgBhAFwAWABSAFAATwBLAEUAQwA7ADwAOgA3ADMAMwAyADIANQAz + ADMANAA2ADQANAA3ADUAMAAvAC8AMAAyADAAMQAwAC8ALgAzADcANQA1ADYANwA6ADsAOwA7AD0A + PAA+AD4APwA+AEEAQgBCAEUAQgBDAEUARgBFAEcARgBGAEYARgBEAEUARQBGAEUARABDAEAAQABB + AEAAPwA/AD8AOgA6ADgAMgAwAC4AKwAoACYAIwAhAB4AHgAZABUAEgASAA8ADAAJAAQAAgACAAAA + /f/6//v/+//5//j/9//2//T/9P/x//L/8//z/+z/6//x/+v/7f/u/+//8P/u/+z/7f/x//P/9f/1 + //j/9v/2//j/+P/3//n/+P/4//r/+v/7//z//f/8////+v/3//v/+//7//v/+v/8//z/+v/7//3/ + +//9/////f8AAP//AAABAAAA//////3//v8AAPz/+v/3//f/+f/2//T/9P/0//D/7v/u/+z/6v/o + /+f/6P/l/+b/5f/h/+H/4f/h/+H/5P/k/+P/4//m/+f/5v/o/+v/6//v/+//8P/y//H/9P/0//b/ + 9//4//r//P/9/wAAAQADAAUACAALAAwADAAMAAsADgAQABEAEwATABMAEwASABUAFAANABgADwAT + ABIAEwASABMAFAASABQAFQAWABgAGAAYABgAGQAWABUAFAASABMAEgASABAADQANAAoACQAJAAoA + CgAHAAQAAwACAAUAAgD9//3////4//b/9v/3//b/+P/3//b/9v/5//z//P/6/////////wIAAwAI + AAkACwAPABIAFAAXABkAHQAgACIAJAAoACkAKgAsAC4ALQAzADYAOgA7AD0AQgA8AD4AQABAAEAA + QwBDAEYARgBGAEcARgBGAEUAQgBAAD4APQA7ADoAOgA0ADIANQA0ADIALwAwACwAKgAnACAAIQAk + ACIAIAAgAB4AHAAbABgAFgAWABUAFAAUABUAFQAXABMAEQASABIAEgATABUAEwATABQAFwAZABoA + GAAbAB4AGwAbAB0AHgAeABwAIAAkACgAKwArACwALwAxADIANAA4ADkAOgA6ADsAPQA9AD8APQA6 + AD4APQA7ADkAOgA5ADcANgA1ADUANQAxADAALgAtACwAKAAmACMAHwAeABoAFQASAAsABwAAAPr/ + +v/6//T/7//p/+X/5v/i/93/2v/Y/9b/zf/J/8r/xv/E/8L/vf/B/73/vf+7/7r/uv+5/7f/u/+/ + /8D/wv/F/8P/xP/D/8X/yP/M/8v/zf/R/9n/2P/a/9z/4f/j/+H/5//s//L/8//2//n/+P///wUA + BQALABUAEwARABUAFgAWABoAHAAcAB8AHgAcAB0AIQAeABgAGgAZABUAEwATABMADwAKAAoACgAG + AAMAAAD+//3//f/7//3/+f/3//f/9v/0//T/9v/y//H/8v/x//P/9P/y/+3/8P/1//L/9f/0//T/ + 9P/1//T/+v/+/wEAAwAEAAQADQASABUAHAAgACEAJQAsADMANgA7AD4AQgBJAEkATQBSAFkAWABc + AGMAYwBnAGcAaQBoAGkAawBuAGwAagBpAG0AbQBrAGwAagBnAGcAZgBlAGgAaABkAGMAYQBdAF4A + XABcAFoAVwBWAFMATwBQAEsARQBFAEQAQAA/AD4AOAAyADIALgArACkAJQAhAB4AHAAYABQAFgAT + ABMAFAATABQAEgATABIAEgARABQAEwAUABgAGgAaABoAHAAeAB4AHwAiAB8AIAAjACMAIQAfAB4A + HgAdABsAGwAbABkAGQAYABgAGAAYABYAFgAWABYAFQAXABgAGAAVABQAEwAUABMAEwARABAAEAAQ + ABAADAALAAoACgAIAAcABwAGAAMA/v/9//z/+v/4//b/9f/1//L/8f/x/+v/7v/r/+r/6v/q/+z/ + 7P/s/+z/7f/t/+7/8f/z//b/9v/7//v/+f/7//7//v/+////AAABAAIAAwACAAIAAwADAAUAAwD+ + /wAAAwACAAIAAAD///r/+//7//n/+f/3//L/8//w/+//8P/u/+z/6//n/+n/6v/q/+n/5v/n/+b/ + 5P/k/+L/4v/g/9//3v/e/97/4P/f/93/3f/c/9n/1//X/9f/1//X/9T/1P/V/9P/0//R/9H/0v/T + /9D/0f/Q/8//0P/P/87/zv/M/8z/zf/L/8r/yv/K/8v/yv/M/8z/y//L/8r/zf/Q/9D/z//O/8// + 0P/R/9L/0//T/9H/0v/U/9T/0//V/9P/1v/Y/9f/1v/X/9b/1v/Y/9n/1//W/9j/2P/X/9f/1v/V + /9f/1v/U/9b/1//Y/9r/2//a/9r/3f/b/93/3f/e/9v/3f/d/97/3//Z/9j/2P/X/9T/1P/T/9L/ + 0P/P/8//zP/N/8z/yv/K/8r/yf/J/8n/yf/I/8f/x//E/8T/wf+//8L/xP/C/8T/w//F/8T/xP/E + /8f/yv/K/8j/yv/K/8z/zP/M/8z/z//L/8j/yv/P/8z/zP/Q/9T/1f/W/9v/4f/m/+j/6//s/+3/ + 8P/x//H/9P/7//3/+//5//7/AwD+/wEABwAHAAsACgAGAAsAEgANAAcABQACAAgADAASAP7//f8C + AP7/BQAVAAkAAwDp/9r/6f/u/+f/6//c/+//3v/U/9H/z//P/8j/yf/N/9D/1v/U/9D/0f/R/9v/ + 2//b/9r/3P/e/+L/5//l/+v/6//q/+v/8P/z//L/8v/3//r/+v8AAAEAAAAGAAgACwAMAA8AEQAP + ABEAEwASABIAEgASABQAFQAUABgAGQAaABgAHQAfAB4AHwAfACAAIAAjACQAIAAfACAAHwAeACEA + HgAhACQAHQAcABsAGgAcABwAFQAYAB0AFQALABIAFAAPAAoACgANABAADAANAAoACgANAAoACgAK + AAgACQAKAAoADwASABIAEAAQABIAFAASABMAFQAOAA4AEwAUAAwADwAUABcAFQARABEAFQATABIA + EgAUABYAEQAUABMAEAANAA4AFQAPAAwAEQARAA8ADAAPAA8ADAAPAA8ADwAUABUADwARABUAEwAP + AA0AEgAPAAoAEgARABMADgANABIADwAOABIAEQATABMAEwAQABEAEAASABIACgAMABAADQALAAoA + CgANAAwABQAEAAgABAAFAAMAAgABAAEAAgABAAAA/P/+//7//P/8//3//f/7//r/+//7//r//f/6 + //r/+v/5/wAAAAD8/wAAAAAAAP//AQADAAEA/f8AAAIAAAADAAYAAwAEAAYABwAKAAsABwAKAAoA + CwALAA0ACQAHAAoADQAOAAwADQAMABAADQAOABAADAANAA8ADAAMAAoAEgAPAA8ADgAOAA8ACgAJ + AAsAEAAKAAgACgAHAAUABQAJAAkADAAKAAgACQAIAAcABwAGAAcAAwAHAAUABAACAAQABQAEAAMA + AwAEAAYABwAGAAYABwAHAAcACAAIAAUAAwAFAP//BAAHAP//AAACAAIAAgACAAIAAAABAAEAAQAA + AP7/AwD9/wAA//////3//f/+/wAA/v/9//z/+P/4//r/9//1//X/9//3//j/+P/4//f/+f/5//f/ + +f/5//f/9P/2//P/8v/w//D/8P/w//L/8P/u//D/8P/u//D/8v/y//P/8v/x//L/8v/w/+//7v/v + /+7/7//v/+z/7v/w/+3/8P/v/+7/8P/x/+7/7v/s/+n/6v/q/+n/6P/q/+j/5P/k/+f/5//k/+T/ + 5f/k/+T/5P/k/+P/4f/j/9//3v/f/97/3//g/+H/4f/i/9//4P/d/97/4v/j/+P/4//j/+b/5v/k + /+j/6//q/+z/6v/q/+v/7P/t/+7/7v/v/+//7f/u/+//8f/y//X/9v/1//f/+P/5//j/+f/7//r/ + /P/+/////P/+/////////wAABAAEAAQAAwAEAAIAAwADAAUABQAFAAUACQAIAAkACwAKAAoADAAO + AA4ADAANAA8AEQAQABAADQANABAAEQASABYAEwAUABIAEgARABIAFgAXABcAFwAWABUAFAAUABMA + EwAWABcAGAAYABoAGgAbAB0AGgAcAB8AHgAdAB8AIgAiAB0AGQAZABsAHwAgAB4AHwAfABsAHAAh + ADEAFADx//7/IgBbAE0AOwAqAB4AFgAZABoAIgAgACEALgAvADIAKQAxADEAMwA0ACwAKgAuADAA + LAAqACgAKQApAC0AMgAtACAAHwAjAC0ALAAlAB4AGwAeABgAFAAYACEAJAAjAB0AGQAWABMAEwAT + ABkAFAASABIAEQAYABMAFgARABkAEAALAAgADAASAAgACAAGAAgACgASABMAEgANAAoACwAQAA4A + CwAKAAkABwAKAAoAEgAMABIABgAHAAkACQAKAAkABQAHAAcABAAEAAcAAQD///r/AQAHAAkADAAI + AAgABwAGAAUABgAGAAkABQAGAAcABgAHAAMABAAEAAMABAAEAAIA//8AAAMABQAEAAUAAQD///// + BAADAAIAAgAEAAEA//8AAAIABAD//wEAAAABAP//AwACAAAAAgD//wEA/f/8//n//f8BAAQAAAD+ + //r//f8CAAUACAAIAAQAAQACAAMAAgAAAP3//f8BAAEA+//3//b/9v/7/////v/7//r//v/+//z/ + //////7//f8AAP3//P/6//3/+//6//v//f/9/////f/7//r/+P/7//7//v/8//n/+//3//n/+//8 + ////AAABAAMAAQD//wIABAABAAEAAwD//wIABAADAAIAAQABAAAAAwAEAAIABQAFAAQABAACAAIA + AwADAAEA/////wEAAQABAAEAAAD//wMAAgACAAQABAADAAQABQAFAAUABgAGAAcABgAGAAYACAAJ + AAIAAgADAAQAAQABAAMABQAEAAYABAACAAQABAACAAEAAwABAAIABAAFAAYABAADAAYAAgAHAAUA + BQACAAMAAgAAAAEAAwAFAAYAAQD8//3//////wEAAQD///7//v////7/AAD+/wAAAAAAAAAAAQD/ + /wAAAQAEAAQABAADAAEA//8AAAIA/v8BAP//AgD//wEA//8AAAAAAAD9//7/AQACAAQABAADAAUA + /v8AAAMABgAGAAMAAgABAAEABAAGAAYAAwAAAP7/AAACAAQAAQD///7//v/9//z//v8BAAEAAgAB + AAEAAgADAAIAAgACAAMAAQAAAAAAAQD///7/AAACAP//AAACAAIA//8AAAIABAACAAIABgACAAEA + AwABAP7/+/8AAAUAAQAAAAEA//8BAP//AAD//wAA///+////AQAAAP///f8= + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 8fbf69bcf9e2258e-MIA + Connection: + - keep-alive + Content-Type: + - audio/wav + Date: + - Fri, 03 Jan 2025 02:03:33 GMT + Server: + - cloudflare + Set-Cookie: + - __cf_bm=is55STpPAKoZ4HtRRmDr.b3XbN7xdQuLehOXHKE_YCw-1735869813-1.0.1.1-BMNej0nw0EZ3bgWYE7d_MuCUcpbj.Q0nYwtiIGXIKI96wht3t6_45tHnyvXCs3tsSchlyksHIxSWifQNoyxSAQ; + path=/; expires=Fri, 03-Jan-25 02:33:33 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=QDxfAzjcBiV7XAViJ7EWE1ka_wzUWjtj_tpYyO_Milg-1735869813976-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + access-control-expose-headers: + - X-Request-ID + alt-svc: + - h3=":443"; ma=86400 + openai-organization: + - user-sxsjo8cvghsvsqprrtasrxyq + openai-processing-ms: + - '616' + openai-version: + - '2020-10-01' + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + via: + - envoy-router-7df576d8b7-2pnlt + x-envoy-upstream-service-time: + - '111' + x-ratelimit-limit-requests: + - '5000' + x-ratelimit-remaining-requests: + - '4999' + x-ratelimit-reset-requests: + - 12ms + x-request-id: + - req_0070b4d79784e36707ec3e2e66b6c75d + status: + code: 200 + message: OK +version: 1 diff --git a/tests/test_openai_tts_tracer.py b/tests/test_openai_tts_tracer.py index 6eb0500..fb7dca6 100644 --- a/tests/test_openai_tts_tracer.py +++ b/tests/test_openai_tts_tracer.py @@ -22,3 +22,25 @@ def test_openai_tts_wrapper(tracer_init, audio_format, model): assert response.scope3ai.request.audio_output_seconds is not None assert response.scope3ai.request.audio_output_seconds > 0.5 assert response.scope3ai.request.audio_output_seconds < 3 + + +@pytest.mark.vcr +@pytest.mark.asyncio +@pytest.mark.parametrize("audio_format", ["mp3", "opus", "aac", "wav"]) # pcm, flac +@pytest.mark.parametrize("model", ["tts-1", "tts-1-hd"]) +async def test_openai_tts_wrapper_async(tracer_init, audio_format, model): + from openai import AsyncOpenAI + + client = AsyncOpenAI() + response = await client.audio.speech.create( + model=model, + voice="alloy", + input="Hello World!", + response_format=audio_format, + ) + + assert response is not None + assert response.scope3ai is not None + assert response.scope3ai.request.audio_output_seconds is not None + assert response.scope3ai.request.audio_output_seconds > 0.5 + assert response.scope3ai.request.audio_output_seconds < 3