Ë
    îO´j›õ  ã                  ó¤  — U d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZ d dlmZ d dlZd dlmZ ddlmZ d	d
lmZmZ ddlmZmZmZmZm Z m!Z!m"Z" ddl#m$Z$m%Z%m&Z&m'Z' d	dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. d	dl/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z> ddl?m@Z@mAZA ddlBmCZC ddlDmEZEmFZF ddlGmHZH ddlImJZJ ddlKmLZL ddlMmNZN ddlOmPZPmQZQmRZR ddlSmTZT ddlUmVZV ddlWmXZX ddlYmZZZ dd l[m\Z\ dd!l]m^Z^ dd"l_m`Z` e	rd d#lambZc d d#ldmbZe dd$lfmgZgmhZh d%d&gZi ejÔ                  ek«      Zld'emd(<    G d)„ d%e8«      Zn G d*„ d&e9«      Zo G d+„ d,«      Zp G d-„ d.«      Zq G d/„ d0«      Zr G d1„ d2«      Zs G d3„ d4«      Zt G d5„ d6«      Zu G d7„ d8«      Zv G d9„ d:«      Zw G d;„ d<«      Zx G d=„ d>ex«      Zy G d?„ d@ex«      Zz G dA„ dBex«      Z{ G dC„ dDex«      Z| G dE„ dFex«      Z} G dG„ dHex«      Z~ G dI„ dJex«      Z G dK„ dL«      Z€ G dM„ dNe€«      Z� G dO„ dPe€«      Z‚ G dQ„ dRe€«      Zƒ G dS„ dTe€«      Z„ G dU„ dVe€«      Z… G dW„ dXe€«      Z† G dY„ dZe€«      Z‡y)[é    )ÚannotationsN)ÚTracebackType)ÚTYPE_CHECKINGÚAnyÚUnionÚCallableÚIteratorÚOptionalÚ	AwaitableÚcast)ÚAsyncIterator)Ú	BaseModelé   )Ú_legacy_responseé   )ÚForksÚ
AsyncForks)ÚBodyÚOmitÚQueryÚHeadersÚNotGivenÚomitÚ	not_given)Úis_givenÚmaybe_transformÚstrip_not_givenÚasync_maybe_transform)ÚSessionsÚAsyncSessionsÚSessionsWithRawResponseÚAsyncSessionsWithRawResponseÚSessionsWithStreamingResponseÚ"AsyncSessionsWithStreamingResponse)ÚSidebandÚAsyncSideband)Úcached_property)ÚFinalRequestOptionsÚconstruct_type_unchecked)ÚSyncAPIResourceÚAsyncAPIResource)Úto_streamed_response_wrapperÚ"async_to_streamed_response_wrapper)Úlive_create_params)ÚOpenAIErrorÚWebSocketConnectionClosedError)Ú	SendQueue)Ú_merge_mappingsÚmake_request_options)ÚEventHandlerRegistry)Ú
ErrorEvent)ÚClientEvent)ÚServerEvent)ÚReconnectingEventÚReconnectingOverridesÚis_recoverable_close)ÚClientEventParam)ÚLiveCreateResponse)ÚSessionConfigParam)ÚWebSocketConnectionOptions)ÚMediaSessionConfigParam)ÚSessionUpdateConfigParam)ÚResponseInputItemParam)ÚClientConnection)ÚOpenAIÚAsyncOpenAIÚLiveÚ	AsyncLivezlogging.LoggerÚlogc                  óÐ   — e Zd Zedd„«       Zedd„«       Zedd„«       Zedd„«       Zedd„«       Zddde	dœ	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z
i i i dd	d
ddf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zy)rE   c                ó,   — t        | j                  «      S ©N)r%   Ú_client©Úselfs    úq/var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/openai/resources/live/live.pyÚsidebandzLive.sideband>   ó   € ä˜Ÿ™Ó%Ð%ó    c                ó,   — t        | j                  «      S rJ   )r   rK   rL   s    rN   Úforksz
Live.forksB   s   € ä�T—\‘\Ó"Ð"rQ   c                ó,   — t        | j                  «      S rJ   )r   rK   rL   s    rN   ÚsessionszLive.sessionsF   rP   rQ   c                ó   — t        | «      S ©a  
        This property can be used as a prefix for any HTTP method call to return
        the raw response object instead of the parsed content.

        For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
        )ÚLiveWithRawResponserL   s    rN   Úwith_raw_responsezLive.with_raw_responseJ   s   € ô # 4Ó(Ð(rQ   c                ó   — t        | «      S ©zÌ
        An alternative to `.with_raw_response` that doesn't eagerly read the response body.

        For more information, see https://www.github.com/openai/openai-python#with_streaming_response
        )ÚLiveWithStreamingResponserL   s    rN   Úwith_streaming_responsezLive.with_streaming_responseT   s   € ô )¨Ó.Ð.rQ   N©Úextra_headersÚextra_queryÚ
extra_bodyÚtimeoutc               óŠ   — | j                  dt        ||dœt        j                  «      t	        ||||ddi¬«      t
        ¬«      S )áC  Create a Live WebRTC session.

        Start with the
        [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting).

        Args:
          session: Startup configuration for the Live session.

          transport: WebRTC transport with the browser's SDP offer.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        ú/live/sessions©ÚsessionÚ	transportÚbearer_authT©r_   r`   ra   rb   Úsecurity©ÚbodyÚoptionsÚcast_to)Ú_postr   r.   ÚLiveCreateParamsr3   r<   ©rM   rg   rh   r_   r`   ra   rb   s          rN   ÚcreatezLive.create]   s^   € ð< �z‰zØÜ à&Ø!*ñô #×3Ñ3óô )Ø+Ø'Ø%ØØ'¨Ð.ôô 'ð! ó 
ð 	
rQ   é   ç      à?ç       @é   c	                ó>   — t        | j                  ||||||||¬«	      S ©a  Connect to Live without query parameters.

        Send session.start with model and session configuration, then wait for session.started. Follow the [Live prompting guide](https://developers.openai.com/api/docs/guides/live-prompting) before writing instructions.
        )	Úclientr`   r_   Úwebsocket_connection_optionsÚon_reconnectingÚmax_retriesÚinitial_delayÚ	max_delayÚmax_queue_size)ÚLiveConnectionManagerrK   ©	rM   r`   r_   r{   r|   r}   r~   r   r€   s	            rN   ÚconnectzLive.connectŽ   s0   € ô %Ø—<‘<Ø#Ø'Ø)EØ+Ø#Ø'ØØ)ô

ð 
	
rQ   )Úreturnr%   )r„   r   )r„   r   )r„   rX   )r„   r\   ©rg   r?   rh   zlive_create_params.Transportr_   zHeaders | Noner`   zQuery | Nonera   zBody | Nonerb   z(float | httpx2.Timeout | None | NotGivenr„   r<   )r`   r   r_   r   r{   r>   r|   úBCallable[[ReconnectingEvent], ReconnectingOverrides | None] | Noner}   Úintr~   Úfloatr   rˆ   r€   r‡   r„   r�   ©Ú__name__Ú
__module__Ú__qualname__r'   rO   rS   rU   rY   r]   r   rs   rƒ   © rQ   rN   rE   rE   =   s7  „ Øò&ó ð&ð ò#ó ð#ð ò&ó ð&ð ò)ó ð)ð ò/ó ð/ð )-Ø$(Ø"&Ø<Eñ/
ð )ð/
ð 0ð	/
ð &ð/
ð "ð/
ð  ð/
ð :ð/
ð 
ó/
ðf  Ø!#ØCEØ^bØØ"ØØ'ð
àð
ð ð
ð 'Að	
ð
 \ð
ð ð
ð ð
ð ð
ð ð
ð 
ô
rQ   c                  óÐ   — e Zd Zedd„«       Zedd„«       Zedd„«       Zedd„«       Zedd„«       Zddde	dœ	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z
i i i dd	d
ddf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zy)rF   c                ó,   — t        | j                  «      S rJ   )r&   rK   rL   s    rN   rO   zAsyncLive.sideband«   ó   € ä˜TŸ\™\Ó*Ð*rQ   c                ó,   — t        | j                  «      S rJ   )r   rK   rL   s    rN   rS   zAsyncLive.forks¯   s   € ä˜$Ÿ,™,Ó'Ð'rQ   c                ó,   — t        | j                  «      S rJ   )r    rK   rL   s    rN   rU   zAsyncLive.sessions³   r�   rQ   c                ó   — t        | «      S rW   )ÚAsyncLiveWithRawResponserL   s    rN   rY   zAsyncLive.with_raw_response·   s   € ô (¨Ó-Ð-rQ   c                ó   — t        | «      S r[   )ÚAsyncLiveWithStreamingResponserL   s    rN   r]   z!AsyncLive.with_streaming_responseÁ   s   € ô .¨dÓ3Ð3rQ   Nr^   c             ƒ  óº   K  — | j                  dt        ||dœt        j                  «      ƒ d{  –—† t	        ||||ddi¬«      t
        ¬«      ƒ d{  –—† S 7 Œ'7 Œ­w)rd   re   rf   Nri   Trj   rl   )rp   r   r.   rq   r3   r<   rr   s          rN   rs   zAsyncLive.createÊ   sw   è ø€ ð< —Z‘ZØÜ,à&Ø!*ñô #×3Ñ3ó÷ ô )Ø+Ø'Ø%ØØ'¨Ð.ôô 'ð!  ó 
÷ 
ð 	
ðøð
ús!   ‚-A¯A
°"AÁAÁAÁArt   ru   rv   rw   c	                ó>   — t        | j                  ||||||||¬«	      S ry   )ÚAsyncLiveConnectionManagerrK   r‚   s	            rN   rƒ   zAsyncLive.connectû   s0   € ô *Ø—<‘<Ø#Ø'Ø)EØ+Ø#Ø'ØØ)ô

ð 
	
rQ   )r„   r&   )r„   r   )r„   r    )r„   r”   )r„   r–   r…   )r`   r   r_   r   r{   r>   r|   r†   r}   r‡   r~   rˆ   r   rˆ   r€   r‡   r„   r™   r‰   r�   rQ   rN   rF   rF   ª   s7  „ Øò+ó ð+ð ò(ó ð(ð ò+ó ð+ð ò.ó ð.ð ò4ó ð4ð )-Ø$(Ø"&Ø<Eñ/
ð )ð/
ð 0ð	/
ð &ð/
ð "ð/
ð  ð/
ð :ð/
ð 
ó/
ðf  Ø!#ØCEØ^bØØ"ØØ'ð
àð
ð ð
ð 'Að	
ð
 \ð
ð ð
ð ð
ð ð
ð ð
ð 
$ô
rQ   c                  ó&   — e Zd Zdd„Zedd„«       Zy)rX   c                óZ   — || _         t        j                  |j                  «      | _        y rJ   )Ú_liver   Úto_raw_response_wrapperrs   ©rM   Úlives     rN   Ú__init__zLiveWithRawResponse.__init__  s"   € ØˆŒ
ä&×>Ñ>Ø�K‰Kó
ˆ�rQ   c                ó@   — t        | j                  j                  «      S rJ   )r!   rœ   rU   rL   s    rN   rU   zLiveWithRawResponse.sessions  s   € ä& t§z¡z×':Ñ':Ó;Ð;rQ   N©rŸ   rE   r„   ÚNone)r„   r!   ©rŠ   r‹   rŒ   r    r'   rU   r�   rQ   rN   rX   rX     s   „ ó
ð ò<ó ñ<rQ   rX   c                  ó&   — e Zd Zdd„Zedd„«       Zy)r”   c                óZ   — || _         t        j                  |j                  «      | _        y rJ   )rœ   r   Úasync_to_raw_response_wrapperrs   rž   s     rN   r    z!AsyncLiveWithRawResponse.__init__%  s"   € ØˆŒ
ä&×DÑDØ�K‰Kó
ˆ�rQ   c                ó@   — t        | j                  j                  «      S rJ   )r"   rœ   rU   rL   s    rN   rU   z!AsyncLiveWithRawResponse.sessions,  s   € ä+¨D¯J©J×,?Ñ,?Ó@Ð@rQ   N©rŸ   rF   r„   r£   )r„   r"   r¤   r�   rQ   rN   r”   r”   $  s   „ ó
ð òAó ñArQ   r”   c                  ó&   — e Zd Zdd„Zedd„«       Zy)r\   c                óF   — || _         t        |j                  «      | _        y rJ   )rœ   r,   rs   rž   s     rN   r    z"LiveWithStreamingResponse.__init__2  s   € ØˆŒ
ä2Ø�K‰Kó
ˆ�rQ   c                ó@   — t        | j                  j                  «      S rJ   )r#   rœ   rU   rL   s    rN   rU   z"LiveWithStreamingResponse.sessions9  s   € ä,¨T¯Z©Z×-@Ñ-@ÓAÐArQ   Nr¢   )r„   r#   r¤   r�   rQ   rN   r\   r\   1  s   „ ó
ð òBó ñBrQ   r\   c                  ó&   — e Zd Zdd„Zedd„«       Zy)r–   c                óF   — || _         t        |j                  «      | _        y rJ   )rœ   r-   rs   rž   s     rN   r    z'AsyncLiveWithStreamingResponse.__init__?  s   € ØˆŒ
ä8Ø�K‰Kó
ˆ�rQ   c                ó@   — t        | j                  j                  «      S rJ   )r$   rœ   rU   rL   s    rN   rU   z'AsyncLiveWithStreamingResponse.sessionsF  s   € ä1°$·*±*×2EÑ2EÓFÐFrQ   Nr©   )r„   r$   r¤   r�   rQ   rN   r–   r–   >  s   „ ó
ð òGó ñGrQ   r–   c            	      óþ   — e Zd ZU dZded<   ded<   ded<   ddd	d
di i ddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zd d„Zd!d„Zd"d„Z	d#d„Z
dddœd$d„Zd%d„Zd&d„Zd'd„Z	 d(	 	 	 	 	 d)d„Zd*d„Z	 d(	 	 	 	 	 d)d„Zd'd„Zy)+ÚAsyncLiveConnectionú6Represents a live WebSocket connection to the Live APIÚAsyncLiveSessionResourcerg   ÚAsyncLiveResponseResourceÚresponseÚAsyncWebSocketConnectionÚ_connectionNrt   ru   rv   ©Úmake_wsr|   r}   r~   r   r`   r_   Ú
send_queuec               ó&  — || _         || _        || _        || _        d| _        || _        || _        || _        || _        d| _	        d| _
        |	xs
 t        «       | _        t        d¬«      | _        t        | «      | _        t#        | «      | _        y )Nr   F©Úuse_lock)r·   Ú_make_wsÚ_on_reconnectingÚ_max_retriesÚ_reconnect_attemptÚ_initial_delayÚ
_max_delayÚ_extra_queryÚ_extra_headersÚ_intentionally_closedÚ_is_reconnectingr1   Ú_send_queuer4   Ú_event_handler_registryr³   rg   r´   rµ   ©
rM   Ú
connectionr¹   r|   r}   r~   r   r`   r_   rº   s
             rN   r    zAsyncLiveConnection.__init__S  sŽ   € ð &ˆÔØˆŒØ /ˆÔØ'ˆÔØ"#ˆÔØ+ˆÔØ#ˆŒØ'ˆÔØ+ˆÔØ%*ˆÔ"Ø %ˆÔØ%Ò4¬«ˆÔÜ';ÀUÔ'KˆÔ$ä/°Ó5ˆŒÜ1°$Ó7ˆ�rQ   c               ó  K  — ddl m}m} 	 	 | j                  «       ƒ d{  –—† ­–— Œ7 Œ# |$ r Y y|$ rO}| j	                  |«      ƒ d{  –—†7  s+| j
                  j                  «       }|rt        d|¬«      |‚‚ Y d}~ŒXd}~ww xY w­w©zq
        An infinite-iterator that will continue to yield events until
        the connection is closed.
        r   )ÚConnectionClosedOKÚConnectionClosedErrorNz0WebSocket connection closed with unsent messages)Úunsent_messages©Úwebsockets.exceptionsrÎ   rÏ   ÚrecvÚ
_reconnectrÈ   Údrainr0   ©rM   rÎ   rÏ   ÚexcÚunsents        rN   Ú	__aiter__zAsyncLiveConnection.__aiter__q  s�   è ø€ ÷
 	TàðØ ŸI™I›K×'Ó'ð à'ùØ%ò ÙØ(ò Ø!Ÿ_™_¨SÓ1×1Ñ1Ø!×-Ñ-×3Ñ3Ó5�FÙÜ<ØNØ,2ôð  #ð#ð ô 2ûðüsL   ‚
B�+  )¡+ ¨B©+ «B°B²B¶B Á
AÁ0B Á;BÂ BÂBc              ƒ  ó(  K  — | j                  | j                  «       ƒ d{  –—† «      }t        t        t        |«      t
        «      rt        d|«      j                  d«      nt        |dd«      }t        |t        «      r|r|dk7  rd| _	        |S 7 Œn­w)ú±
        Receive the next message from the connection and parses it into a `ServerEvent` object.

        Canceling this method is safe. There's no risk of losing data.
        Núdict[str, object]ÚtypeÚerrorr   ©
Úparse_eventÚ
recv_bytesÚ
isinstancer   ÚobjectÚdictÚgetÚgetattrÚstrrÁ   ©rM   ÚeventÚ
event_types      rN   rÓ   zAsyncLiveConnection.recv‡  s…   è ø€ ð × Ñ  t§¡Ó'8×!8Ó9ˆô œ$œv uÓ-¬tÔ4ô Ð$ eÓ,×0Ñ0°Ô8ä˜ ¨Ó-ð 	ô �j¤#Ô&©:¸*ÈÒ:OØ&'ˆDÔ#Øˆð "9ús   ‚B¡B¢A/Bc              ƒ  ó   K  — | j                   j                  d¬«      ƒ d{  –—† }t        j                  dt	        |«      «       | j
                  ra	 t        j                  |«      }t        |t        «      rt        d|«      j                  d«      nd}t        |t        «      r|r|dk7  rd| _        |S 7 Œ’# t        t        f$ r |cY S w xY w­w)	á  Receive the next message from the connection as raw bytes.

        Canceling this method is safe. There's no risk of losing data.

        If you want to parse the message into a `ServerEvent` object like `.recv()` does,
        then you can call `.parse_event(data)`.
        F©ÚdecodeNú$Received WebSocket message: %i bytesrÜ   rÝ   rÞ   r   ©r·   rÓ   rG   ÚdebugÚlenrÁ   ÚjsonÚloadsÚ
ValueErrorÚRecursionErrorrâ   rä   r   rå   rç   ©rM   ÚmessageÚ
event_datarê   s       rN   rá   zAsyncLiveConnection.recv_bytes™  s¼   è ø€ ð ×(Ñ(×-Ñ-°UÐ-Ó;×;ˆÜ�	‰	Ð8¼#¸g»,ÔGØ×"Ò"ðÜ%)§Z¡Z°Ó%8�
ô OYÐYcÔeiÔNjœÐ1°:Ó>×BÑBÀ6ÔJÐptˆJÜ˜*¤cÔ*©z¸jÈGÒ>SØ*+�Ô'Øˆð <ùô ¤Ð/ò Ø’ðüs4   ‚ C¢B5£/CÁB7 Á(ACÂ7CÃCÃ
CÃCc              ƒ  óœ  K  — t        |t        «      r|j                  ddd¬«      n*t        j                  t        |t        «      ƒ d {  –—† «      }| j                  r| j                  j                  |«       y 	 | j                  j                  |«      ƒ d {  –—†  y 7 ŒU7 Œ# t        $ r | j                  j                  |«       ‚ w xY w­w©NT©Úuse_api_namesÚexclude_defaultsÚexclude_unset)râ   r   Úto_jsonró   Údumpsr   r;   rÇ   rÈ   Úenqueuer·   ÚsendÚ	Exception©rM   ré   Údatas      rN   r  zAsyncLiveConnection.send®  s¶   è ø€ ô ˜%¤Ô+ð �M‰M¨¸tÐSWˆMÔXä—‘Ô"7¸Ô?OÓ"P×PÓQð 	ð
 × Ò Ø×Ñ×$Ñ$ TÔ*Øð	Ø×"Ñ"×'Ñ'¨Ó-×-Ñ-ð Qøð .ùÜò 	Ø×Ñ×$Ñ$ TÔ*Øð	üs<   ‚ACÁ	BÁ
0CÁ;B# ÂB!ÂB# ÂCÂ!B# Â#&C	Ã	Cc              ƒ  óì   K  — | j                   r?t        |t        «      r|n|j                  d«      }| j                  j                  |«       y | j                  j                  |«      ƒ d {  –—†  y 7 Œ­w©Nzutf-8©rÇ   râ   rç   rî   rÈ   r  r·   r  ©rM   r  Úraws      rN   Úsend_rawzAsyncLiveConnection.send_raw½  sY   è ø€ Ø× Ò Ü$ T¬3Ô/‘$°T·[±[ÀÓ5IˆCØ×Ñ×$Ñ$ SÔ)ØØ×Ñ×#Ñ# DÓ)×)Ò)ús   ‚A*A4Á,A2Á-A4éè  Ú ©ÚcodeÚreasonc             ƒ  óh   K  — d| _         | j                  j                  ||¬«      ƒ d {  –—†  y 7 Œ­w©NTr  ©rÆ   r·   Úclose©rM   r  r  s      rN   r  zAsyncLiveConnection.closeÄ  s-   è ø€ Ø%)ˆÔ"Ø×Ñ×$Ñ$¨$°vÐ$Ó>×>Ò>ús   ‚(2ª0«2c           
     ó‚   — t        t        t        t        j                  |«      t        t
        t        «      ¬«      «      S ©z�
        Converts a raw `str` or `bytes` message into a `ServerEvent` object.

        This is helpful if you're using `.recv_bytes()`.
        )ÚvalueÚtype_©r   r7   r)   ró   rô   r   ©rM   r  s     rN   rà   zAsyncLiveConnection.parse_eventÈ  ó,   € ô ”KÔ!9ÄÇ
Á
È4Ó@PÔX\Ô]`ÔbmÓXnÔ!oÓpÐprQ   c           	   ƒ  óž  K  — ddl }| j                  �| j                  €yddlm} d}t        ||«      r"|j                  �|j                  j                  }t        |«      syd| _	        t        | j                  dz   | j                  dz   «      D �]…  }|| _        t        | j                  d|dz
  z  z  | j                  «      }d	t!        j                   «       d
z  z   }||z  }t#        || j                  ||| j$                  | j&                  ¬«      }		 | j                  |	«      }
|
�|
j+                  d«      r	d| _	         y|
�d|
v r
|
d   | _        d|
v r
|
d   | _        t,        j/                  d|| j                  |«       |j1                  |«      ƒ d{  –—†  | j2                  r	d| _	         y	 | j                  | j$                  | j&                  «      ƒ d{  –—† | _        t,        j/                  d«       d| _	        | j7                  «       ƒ d{  –—†   y d| _	        y# t(        $ r d| _	        Y  yw xY w7 Œ£7 Œa7 Œ*# t(        $ r Y �Œºw xY w­w)úÀAttempt to reconnect after a connection failure.

        Returns ``True`` if a new connection was established, ``False`` if the
        caller should re-raise the original exception.
        r   NF©rÏ   éî  Tr   é   ç      è?ç      Ð?©ÚattemptÚmax_attemptsÚdelayÚ
close_coder`   r_   Úabortr`   r_   ú?Reconnecting to WebSocket API (attempt %d/%d) after %.1fs delayúReconnected to WebSocket API)Úasyncior¿   r¾   rÒ   rÏ   râ   Úrcvdr  r:   rÇ   ÚrangerÁ   rÀ   ÚminrÂ   rÃ   Úrandomr8   rÄ   rÅ   r  rå   rG   ÚinfoÚsleeprÆ   r·   Ú_flush_send_queue)rM   r×   r-  rÏ   r)  r&  Ú
base_delayÚjitterr(  ré   Úresults              rN   rÔ   zAsyncLiveConnection._reconnectÐ  sM  è ø€ ó 	à× Ñ Ð(¨D¯M©MÐ,AØå?àˆ
Ü�cÐ0Ô1°c·h±hÐ6JØŸ™Ÿ™ˆJä# JÔ/Øà $ˆÔä˜T×4Ñ4°qÑ8¸$×:KÑ:KÈaÑ:OÓPó 2	ˆGØ&-ˆDÔ#Ü˜T×0Ñ0°A¸'ÀA¹+Ñ4FÑGÈÏÉÓYˆJØœFŸM™M›O¨dÑ2Ñ2ˆFØ Ñ'ˆEä%ØØ!×.Ñ.ØØ%Ø ×-Ñ-Ø"×1Ñ1ôˆEðØ×.Ñ.¨uÓ5�ð
 Ð! f§j¡j°Ô&9Ø(-�Ô%ÙàÐ!Ø  FÑ*Ø(.¨}Ñ(=�DÔ%Ø" fÑ,Ø*0°Ñ*A�DÔ'ä�H‰HØQØØ×!Ñ!Øô	ð —-‘- Ó&×&Ð&à×)Ò)Ø(-�Ô%ÙðØ)-¯©°t×7HÑ7HÈ$×J]ÑJ]Ó)^×#^�Ô Ü—‘Ð7Ô8Ø(-�Ô%Ø×,Ñ,Ó.×.Ð.Ùða2	ðh !&ˆÔØøôI ò Ø(-�Ô%Úðúð( 'øð $_øð /ùäò Úðüs   ‚DIÄH Ä#A0IÆH7ÆIÆ.)H=ÇH9Ç8H=ÈH;ÈH=ÈIÈ H4È0IÈ3H4È4IÈ9H=È;H=È=	I
ÉIÉ	I
É
Ic              ƒ  ó®   ‡ K  — dˆ fd„}	 ‰ j                   j                  |«      ƒ d{  –—†  y7 Œ# t        $ r t        j	                  d«       Y yw xY w­w)ú5Send all queued messages over the current connection.c              “  óX   •K  — ‰j                   j                  | «      ƒ d {  –—†  y 7 Œ­wrJ   ©r·   r  ©r  rM   s    €rN   Ú_sendz4AsyncLiveConnection._flush_send_queue.<locals>._send   s!   øè ø€ Ø×"Ñ"×'Ñ'¨Ó-×-Ò-ús   ƒ*¢(£*Nú*Failed to flush send queue after reconnect)r  rç   r„   r£   )rÈ   Úflush_asyncr  rG   Úwarning)rM   r=  s   ` rN   r4  z%AsyncLiveConnection._flush_send_queue  sI   øè ø€ õ	.ð	FØ×"Ñ"×.Ñ.¨uÓ5×5Ò5ùÜò 	FÜ�K‰KÐDÖEð	Füs1   ƒA‹1 ©/ª1 ®A¯1 ±AÁAÁAÁAc                óX   ‡ ‡— |�‰ j                   j                  ‰|«       ‰ S dˆˆ fd„}|S )a-  Adds the handler to the end of the handlers list for the given event type.

        No checks are made to see if the handler has already been added. Multiple calls
        passing the same combination of event type and handler will result in the handler
        being added, and called, multiple times.

        Can be used as a method (returns ``self`` for chaining)::

            connection.on("session.started", my_handler)

        Or as a decorator::

            @connection.on("session.started")
            async def my_handler(event): ...
        c                ó@   •— ‰j                   j                  ‰| «       | S rJ   ©rÉ   Úadd©Úfnrê   rM   s    €€rN   Ú	decoratorz)AsyncLiveConnection.on.<locals>.decorator>  ó   ø€ Ø×(Ñ(×,Ñ,¨Z¸Ô<ØˆIrQ   ©rF  úCallable[..., Any]r„   rJ  rC  ©rM   rê   ÚhandlerrG  s   ``  rN   ÚonzAsyncLiveConnection.on(  ó3   ù€ ð$ ÐØ×(Ñ(×,Ñ,¨Z¸ÔAØˆKö	ð ÐrQ   c                ó>   — | j                   j                  ||«       | S ©z-Remove a previously registered event handler.©rÉ   Úremove©rM   rê   rL  s      rN   ÚoffzAsyncLiveConnection.offD  ó   € à×$Ñ$×+Ñ+¨J¸Ô@ØˆrQ   c                ó\   ‡ ‡— |� ‰ j                   j                  ‰|d¬«       ‰ S dˆˆ fd„}|S )úbRegister a one-time event handler.

        Automatically removed after first invocation.
        T©Úoncec                óD   •— ‰j                   j                  ‰| d¬«       | S ©NTrX  rC  rE  s    €€rN   rG  z+AsyncLiveConnection.once.<locals>.decoratorT  ó#   ø€ Ø×(Ñ(×,Ñ,¨Z¸À$Ð,ÔGØˆIrQ   rI  rC  rK  s   ``  rN   rY  zAsyncLiveConnection.onceI  ó8   ù€ ð ÐØ×(Ñ(×,Ñ,¨Z¸ÀtÐ,ÔLØˆKö	ð ÐrQ   c              ƒ  ó¸  K  — ddl }| 2 3 d{  –—† }|j                  }| j                  j                  |«      }| j                  j                  d«      }|dk(  r"|s |st	        |t
        «      rt        d|› �«      ‚|D ]&  } ||«      }|j                  |«      sŒ|ƒ d{  –—†  Œ( |D ]&  } ||«      }|j                  |«      sŒ|ƒ d{  –—†  Œ( ŒÉ7 ŒÄ7 Œ47 Œ6 y­w)al  Run the event loop, dispatching received events to registered handlers.

        Blocks until the connection is closed. This is the push-based
        alternative to iterating with ``async for event in connection``.

        If an ``"error"`` event arrives and no handler is registered for
        ``"error"`` or ``"event"``, an ``OpenAIError`` is raised.
        r   Nré   rÞ   úWebSocket error: )r-  rÝ   rÉ   Úget_handlersrâ   r5   r/   Úiscoroutine)rM   r-  ré   rê   ÚspecificÚgenericrL  r7  s           rN   Údispatch_eventsz#AsyncLiveConnection.dispatch_eventsZ  së   è ø€ ó 	à÷ 	!ð 	!�%ØŸ™ˆJØ×3Ñ3×@Ñ@ÀÓLˆHØ×2Ñ2×?Ñ?ÀÓHˆGà˜WÒ$©X¹gÜ˜e¤ZÔ0Ü%Ð(9¸%¸Ð&AÓBÐBà#ò !�Ù  ›�Ø×&Ñ& vÕ.Ø —L‘Lð!ð
 #ò !�Ù  ›�Ø×&Ñ& vÕ.Ø —L‘Lñ!ð	!øð !øð
 !øñ#  ùsV   ‚C‰C�CŽC‘BCÂCÂCÂ $CÃCÃ
CÃCÃCÃCÃCÃC)rË   r¶   r¹   zFCallable[[Query, Headers], Awaitable[AsyncWebSocketConnection]] | Noner|   r†   r}   r‡   r~   rˆ   r   rˆ   r`   r   r_   r   rº   úSendQueue | Noner„   r£   )r„   zAsyncIterator[ServerEvent]©r„   r7   ©r„   Úbytes©ré   zClientEvent | ClientEventParamr„   r£   ©r  zbytes | strr„   r£   ©r  r‡   r  rç   r„   r£   ©r  zstr | bytesr„   r7   ©r×   r  r„   Úbool©r„   r£   rJ   )rê   rç   rL  úCallable[..., Any] | Noner„   zNUnion[AsyncLiveConnection, Callable[[Callable[..., Any]], Callable[..., Any]]])rê   rç   rL  rJ  r„   r±   )rŠ   r‹   rŒ   Ú__doc__Ú__annotations__r    rÙ   rÓ   rá   r  r  r  rà   rÔ   r4  rM  rT  rY  rd  r�   rQ   rN   r±   r±   K  s&  … Ù@à%Ó%Ø'Ó'à)Ó)ð [_Ø^bØØ"ØØØ!#Ø'+ñ8à,ð8ð Xð	8ð
 \ð8ð ð8ð ð8ð ð8ð ð8ð ð8ð %ð8ð 
ó8ó<ó,ó$ó*ó*ð *.¸Rõ ?óqóKóZ	Fð EIðØðØ(Aðà	Wóó8ð EIðØðØ(Aðà	Wóô"!rQ   r±   c                  ó¼   — e Zd ZdZddddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd	„Z	 d	 	 	 	 	 dd
„Zdd„Z	 d	 	 	 	 	 dd„Zdd„Z	e	Z
dd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zy)r™   a  
    Context manager over a `AsyncLiveConnection` that is returned by `live.connect()`

    This context manager ensures that the connection will be closed when it exits.

    ---

    Note that if your application doesn't work well with the context manager approach then you
    can call the `.enter()` method directly to initiate a connection.

    **Warning**: You must remember to close the connection with `.close()`.

    ```py
    connection = await client.live.connect(...).enter()
    # ...
    await connection.close()
    ```
    Nrt   ru   rv   rw   ©r|   r}   r~   r   r€   c       	        óÆ   — || _         d | _        || _        || _        || _        || _        || _        || _        || _        t        |	¬«      | _
        t        d¬«      | _        y )N©Ú	max_bytesFr¼   )Ú#_AsyncLiveConnectionManager__clientÚ'_AsyncLiveConnectionManager__connectionÚ(_AsyncLiveConnectionManager__extra_queryÚ*_AsyncLiveConnectionManager__extra_headersÚ9_AsyncLiveConnectionManager__websocket_connection_optionsÚ,_AsyncLiveConnectionManager__on_reconnectingÚ(_AsyncLiveConnectionManager__max_retriesÚ*_AsyncLiveConnectionManager__initial_delayÚ&_AsyncLiveConnectionManager__max_delayr1   Ú'_AsyncLiveConnectionManager__send_queuer4   Ú3_AsyncLiveConnectionManager__event_handler_registry©
rM   rz   r`   r_   r{   r|   r}   r~   r   r€   s
             rN   r    z#AsyncLiveConnectionManager.__init__�  se   € ð ˆŒØ8<ˆÔØ(ˆÔØ,ˆÔØ.JˆÔ+Ø!0ˆÔØ(ˆÔØ,ˆÔØ$ˆÔÜ%°Ô?ˆÔÜ(<ÀeÔ(LˆÕ%rQ   c                óÈ   — t        |t        «      r|j                  ddd¬«      n"t        j                  t        |t        «      «      }| j                  j                  |«       y©zÜQueue a message to be sent when the connection is established.

        This can be called before entering the context manager. Queued messages
        are automatically sent once the WebSocket connection opens.
        Trü   N)	râ   r   r   ró   r  r   r;   r�  r  r  s      rN   r  zAsyncLiveConnectionManager.send¦  óR   € ô ˜%¤Ô+ð �M‰M¨¸tÐSWˆMÔXä—‘œO¨EÔ3CÓDÓEð 	ð
 	×Ñ×!Ñ! $Õ'rQ   c                óX   ‡ ‡— |�‰ j                   j                  ‰|«       ‰ S dˆˆ fd„}|S )zÚRegister an event handler before the connection is established.

        Handlers are transferred to the connection on enter. Supports the
        same method and decorator forms as ``AsyncLiveConnection.on``.
        c                ó@   •— ‰j                   j                  ‰| «       | S rJ   ©r‚  rD  rE  s    €€rN   rG  z0AsyncLiveConnectionManager.on.<locals>.decorator¿  ó   ø€ Ø×)Ñ)×-Ñ-¨j¸"Ô=ØˆIrQ   rI  r‰  rK  s   ``  rN   rM  zAsyncLiveConnectionManager.on³  ó3   ù€ ð ÐØ×)Ñ)×-Ñ-¨j¸'ÔBØˆKö	ð ÐrQ   c                ó>   — | j                   j                  ||«       | S rP  )r‚  rR  rS  s      rN   rT  zAsyncLiveConnectionManager.offÅ  ó   € à×%Ñ%×,Ñ,¨Z¸ÔAØˆrQ   c                ó\   ‡ ‡— |� ‰ j                   j                  ‰|d¬«       ‰ S dˆˆ fd„}|S )úGRegister a one-time event handler before the connection is established.TrX  c                óD   •— ‰j                   j                  ‰| d¬«       | S r[  r‰  rE  s    €€rN   rG  z2AsyncLiveConnectionManager.once.<locals>.decoratorÒ  ó#   ø€ Ø×)Ñ)×-Ñ-¨j¸"À4Ð-ÔHØˆIrQ   rI  r‰  rK  s   ``  rN   rY  zAsyncLiveConnectionManager.onceÊ  ó8   ù€ ð ÐØ×)Ñ)×-Ñ-¨j¸'ÈÐ-ÔMØˆKö	ð ÐrQ   c              ƒ  ó  K  — | j                  | j                  | j                  «      ƒ d{  –—† }t        || j                  �| j                   nd| j                  | j
                  | j                  | j                  | j                  | j                  | j                  ¬«	      | _	        | j                  j                  | j                  j                  «       | j                  j                  «       ƒ d{  –—†  | j                  S 7 ŒØ7 Œ­w)ay  
        If your application doesn't work well with the context manager approach then you
        can call this method directly to initiate a connection.

        **Warning**: You must remember to close the connection with `.close()`.

        ```py
        connection = await client.live.connect(...).enter()
        # ...
        await connection.close()
        ```
        Nr¸   )Ú_connect_wsrz  r{  r±   r}  r~  r  r€  r�  ry  r‚  Ú
merge_intorÉ   r4  ©rM   Úwss     rN   Ú
__aenter__z%AsyncLiveConnectionManager.__aenter__Ø  sá   è ø€ ð ×#Ñ# D×$6Ñ$6¸×8LÑ8LÓM×Mˆä/ØØ(,×(>Ñ(>Ð(J�D×$Ò$ÐPTØ ×2Ñ2Ø×*Ñ*Ø×.Ñ.Ø×&Ñ&Ø×*Ñ*Ø×.Ñ.Ø×(Ñ(ô

ˆÔð 	×%Ñ%×0Ñ0°×1BÑ1B×1ZÑ1ZÔ[Ø×Ñ×1Ñ1Ó3×3Ð3à× Ñ Ð ð# Nøð 	4ús"   ‚*D	¬D­CD	Ã4DÃ5D	ÄD	c           
   ƒ  óZ  K  — 	 ddl m} | j	                  «       j                  i | j                  j                  j                  ¥|¥¬«      }|j                  dddœj                  |j                  |j                  «      ¬«      }| j                  j                  t        j                  d	t        |«      t        |«      d
di¬«      «      ƒ d {  –—† }| j                  j	                  |j                   «      j#                  | j                  j$                  j'                  t)        t*        |j                  «      «      «      }|j                  dddœj                  |j                  |j                  «      ¬«      }| j                  j,                  i | j                  j.                  t1        |j2                  «      r|j2                  ni fD ���	ci c]-  }|j5                  «       D ]  \  }}	|j7                  «       ||	f“Œ Œ/ }
}}}	t8        j;                  d«       | j<                  rt8        j;                  d«        |t        |«      fd t?        t        |
jA                  «       «      i «      dœ| j<                  ¤Žƒ d {  –—† S # t        $ r}t        d«      |‚d }~ww xY w7 �ŒÑc c}	}}w 7 Œ+­w)Nr   )Ú_WebSocketConnectú9You need to install `openai[realtime]` to use this method©Úparamsr—  Úwss©ÚhttpÚhttps©Úschemerå   ri   T©ÚmethodÚurlÚheadersrk   úConnecting to WebSocket APIú,Custom WebSocket connection options provided©Úuser_agent_headerÚadditional_headers)!Úlib._websocketrš  ÚImportErrorr/   Ú_prepare_urlÚ	copy_withrx  Úbase_urlr�  rå   r£  Ú_prepare_optionsr(   Ú	constructrç   rä   r¦  Úcopy_merge_paramsÚqsÚ	stringifyr   r   Úauth_headersÚdefault_headersr   r§  ÚitemsÚlowerrG   rñ   r|  r2   Úvalues©rM   r`   r_   rƒ   r×   r¦  rn   Ú
header_setÚkeyr  r§  s              rN   r”  z&AsyncLiveConnectionManager._connect_wsú  sd  è ø€ ð	dÝFð ×ÑÓ!×+Ñ+ðØ—-‘-×(Ñ(×/Ñ/ðàðð ,ó 
ˆð �m‰m¨D¸5Ñ#A×#EÑ#EÀcÇjÁjÐRU×R\ÑR\Ó#]ˆmÓ^ˆØŸ™×6Ñ6Ü×)Ñ)ØÜ˜“HÜ˜]Ó+Ø'¨Ð.ô	ó
÷ 
ˆð �m‰m×(Ñ(¨¯©Ó5×GÑGØ�M‰M×Ñ×&Ñ&¤t¬C°·±Ó'@ÓAó
ˆð �m‰m¨D¸5Ñ#A×#EÑ#EÀcÇjÁjÐRU×R\ÑR\Ó#]ˆmÓ^ˆð —‘×*Ñ*ØØ—‘×-Ñ-Ü#+¨G¯O©OÔ#<�—’À"ð	÷	
ð 	
àð )×.Ñ.Ó0ò	
ñ ��Uð �I‰I‹K˜#˜u˜Ñ%ð	
Øð	
ˆò 	
ô 	�	‰	Ð/Ô0Ø×.Ò.Ü�I‰IÐDÔEáÜ�‹Hð
à"Ü.¬t°G·N±NÓ4DÓ/EÀrÓJñ
ð ×1Ñ1ñ	
÷ 
ð 	
øôI ò 	dÜÐYÓZÐ`cÐcûð	dúð
ûô	
ð
úsT   ‚J+„J ŠCJ+ÃJÃC?J+Ç2J"È A=J+É=J)É>J+Ê	JÊJÊJÊJ+Ê"J+c                ó€  — | j                   j                  �*t        j                  | j                   j                  «      }nO| j                   j                  j
                  }|dk(  rdnd}| j                   j                  j                  |¬«      }|j                  j                  d«      dz   }|j                  |¬«      S ©Nr   r—  rž  r¢  ó   /s   /live/sessions)Úraw_path)	rx  Úwebsocket_base_urlÚhttpx2ÚURLÚ	_base_urlr£  r°  rÂ  Úrstrip©rM   r±  r£  Ú	ws_schemeÚmerge_raw_paths        rN   r¯  z'AsyncLiveConnectionManager._prepare_url(  óš   € Ø�=‰=×+Ñ+Ð7Ü—z‘z $§-¡-×"BÑ"BÓC‰Hà—]‘]×,Ñ,×3Ñ3ˆFØ &¨&Ò 0™°eˆIØ—}‘}×.Ñ.×8Ñ8À	Ð8ÓJˆHà!×*Ñ*×1Ñ1°$Ó7Ð:KÑKˆØ×!Ñ!¨>Ð!Ó:Ð:rQ   c              ƒ  ón   K  — | j                   �#| j                   j                  «       ƒ d {  –—†  y y 7 Œ­wrJ   )ry  r  ©rM   Úexc_typer×   Úexc_tbs       rN   Ú	__aexit__z$AsyncLiveConnectionManager.__aexit__3  s4   è ø€ ð ×ÑÐ(Ø×#Ñ#×)Ñ)Ó+×+Ñ+ð )Ø+ús   ‚*5¬3­5)rz   rD   r`   r   r_   r   r{   r>   r|   r†   r}   r‡   r~   rˆ   r   rˆ   r€   r‡   r„   r£   ri  rJ   )rê   rç   rL  rp  r„   zUUnion[AsyncLiveConnectionManager, Callable[[Callable[..., Any]], Callable[..., Any]]])rê   rç   rL  rJ  r„   r™   )r„   r±   )r`   r   r_   r   r„   r¶   ©r„   z
httpx2.URL©rÎ  ztype[BaseException] | Noner×   zBaseException | NonerÏ  zTracebackType | Noner„   r£   )rŠ   r‹   rŒ   rq  r    r  rM  rT  rY  r˜  Úenterr”  r¯  rÐ  r�   rQ   rN   r™   r™   y  s  „ ñð4 _cØØ"ØØ'ñMð ðMð ð	Mð
 ðMð 'AðMð \ðMð ðMð ðMð ðMð ðMð 
óMó2(ð EIðØðØ(Aðà	^óó$ð EIðØðØ(Aðà	^óó!ð@ €Eó,
ó\	;ð,Ø2ð,Ø9Mð,ØWkð,à	ô,rQ   r™   c            	      óþ   — e Zd ZU dZded<   ded<   ded<   ddd	d
di i ddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zd d„Zd!d„Zd"d„Z	d#d„Z
dddœd$d„Zd%d„Zd&d„Zd'd„Z	 d(	 	 	 	 	 d)d„Zd*d„Z	 d(	 	 	 	 	 d)d„Zd'd„Zy)+ÚLiveConnectionr²   ÚLiveSessionResourcerg   ÚLiveResponseResourcerµ   ÚWebSocketConnectionr·   Nrt   ru   rv   r¸   c               ó&  — || _         || _        || _        || _        d| _        || _        || _        || _        || _        d| _	        d| _
        |	xs
 t        «       | _        t        d¬«      | _        t        | «      | _        t#        | «      | _        y )Nr   FTr¼   )r·   r¾   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   r1   rÈ   r4   rÉ   rÖ  rg   r×  rµ   rÊ   s
             rN   r    zLiveConnection.__init__B  sŽ   € ð &ˆÔØˆŒØ /ˆÔØ'ˆÔØ"#ˆÔØ+ˆÔØ#ˆŒØ'ˆÔØ+ˆÔØ%*ˆÔ"Ø %ˆÔØ%Ò4¬«ˆÔÜ';ÀTÔ'JˆÔ$ä*¨4Ó0ˆŒÜ,¨TÓ2ˆ�rQ   c              #  óì   K  — ddl m}m} 	 	 | j                  «       –— Œ# |$ r Y y|$ rF}| j	                  |«      s+| j
                  j                  «       }|rt        d|¬«      |‚‚ Y d}~ŒMd}~ww xY w­wrÍ   rÑ   rÖ   s        rN   Ú__iter__zLiveConnection.__iter__`  s†   è ø€ ÷
 	TàðØ—i‘i“kÒ!ð øð &ò ÙØ(ò Ø—‘ sÔ+Ø!×-Ñ-×3Ñ3Ó5�FÙÜ<ØNØ,2ôð  #ð#ð ô ,ûðüs4   ‚
A4�  ŸA4 A1¥A4§A1«<A,Á'A4Á,A1Á1A4c                ó  — | j                  | j                  «       «      }t        t        t        |«      t
        «      rt        d|«      j                  d«      nt        |dd«      }t        |t        «      r|r|dk7  rd| _	        |S )rÛ   rÜ   rÝ   NrÞ   r   rß   rè   s      rN   rÓ   zLiveConnection.recvv  sy   € ð × Ñ  §¡Ó!2Ó3ˆô œ$œv uÓ-¬tÔ4ô Ð$ eÓ,×0Ñ0°Ô8ä˜ ¨Ó-ð 	ô �j¤#Ô&©:¸*ÈÒ:OØ&'ˆDÔ#ØˆrQ   c                ó„  — | j                   j                  d¬«      }t        j                  dt	        |«      «       | j
                  ra	 t        j                  |«      }t        |t        «      rt        d|«      j                  d«      nd}t        |t        «      r|r|dk7  rd| _        |S # t        t        f$ r |cY S w xY w)	rì   Frí   rï   rÜ   rÝ   NrÞ   r   rð   r÷   s       rN   rá   zLiveConnection.recv_bytesˆ  s±   € ð ×"Ñ"×'Ñ'¨uÐ'Ó5ˆÜ�	‰	Ð8¼#¸g»,ÔGØ×"Ò"ðÜ%)§Z¡Z°Ó%8�
ô OYÐYcÔeiÔNjœÐ1°:Ó>×BÑBÀ6ÔJÐptˆJÜ˜*¤cÔ*©z¸jÈGÒ>SØ*+�Ô'Øˆøô ¤Ð/ò Ø’ðús   Á	B+ Â+B?Â>B?c                ól  — t        |t        «      r|j                  ddd¬«      n"t        j                  t        |t        «      «      }| j                  r| j                  j                  |«       y 	 | j                  j                  |«       y # t        $ r | j                  j                  |«       ‚ w xY wrû   )râ   r   r   ró   r  r   r;   rÇ   rÈ   r  r·   r  r  r  s      rN   r  zLiveConnection.send�  s�   € ô ˜%¤Ô+ð �M‰M¨¸tÐSWˆMÔXä—‘œO¨EÔ3CÓDÓEð 	ð
 × Ò Ø×Ñ×$Ñ$ TÔ*Øð	Ø×Ñ×!Ñ! $Õ'øÜò 	Ø×Ñ×$Ñ$ TÔ*Øð	ús   Á1B Â&B3c                óÐ   — | j                   r?t        |t        «      r|n|j                  d«      }| j                  j                  |«       y | j                  j                  |«       y r  r	  r
  s      rN   r  zLiveConnection.send_raw¬  sO   € Ø× Ò Ü$ T¬3Ô/‘$°T·[±[ÀÓ5IˆCØ×Ñ×$Ñ$ SÔ)ØØ×Ñ×Ñ˜dÕ#rQ   r  r  r  c               óL   — d| _         | j                  j                  ||¬«       y r  r  r  s      rN   r  zLiveConnection.close³  s#   € Ø%)ˆÔ"Ø×Ñ×Ñ D°ÐÕ8rQ   c           
     ó‚   — t        t        t        t        j                  |«      t        t
        t        «      ¬«      «      S r  r  r  s     rN   rà   zLiveConnection.parse_event·  r  rQ   c           	     óZ  — | j                   �| j                  €yddlm} d}t	        ||«      r"|j
                  �|j
                  j                  }t        |«      syd| _        t        | j                  dz   | j                  dz   «      D �]q  }|| _
        t        | j                  d|dz
  z  z  | j                  «      }dt        j                  «       d	z  z   }||z  }t!        || j                  ||| j"                  | j$                  ¬
«      }	 | j                  |«      }	|	�|	j)                  d«      r	d| _         y|	�d|	v r
|	d   | _        d|	v r
|	d   | _        t*        j-                  d|| j                  |«       t/        j0                  |«       | j2                  r	d| _         y	 | j                  | j"                  | j$                  «      | _        t*        j-                  d«       d| _        | j7                  «         y d| _        y# t&        $ r d| _        Y  yw xY w# t&        $ r Y �Œ w xY w)r  Fr   r   r!  Tr   r"  r#  r$  r%  r*  r`   r_   r+  r,  )r¿   r¾   rÒ   rÏ   râ   r.  r  r:   rÇ   r/  rÁ   rÀ   r0  rÂ   rÃ   r1  r8   rÄ   rÅ   r  rå   rG   r2  Útimer3  rÆ   r·   r4  )
rM   r×   rÏ   r)  r&  r5  r6  r(  ré   r7  s
             rN   rÔ   zLiveConnection._reconnect¿  s(  € ð × Ñ Ð(¨D¯M©MÐ,AØå?àˆ
Ü�cÐ0Ô1°c·h±hÐ6JØŸ™Ÿ™ˆJä# JÔ/Øà $ˆÔä˜T×4Ñ4°qÑ8¸$×:KÑ:KÈaÑ:OÓPó 2	ˆGØ&-ˆDÔ#Ü˜T×0Ñ0°A¸'ÀA¹+Ñ4FÑGÈÏÉÓYˆJØœFŸM™M›O¨dÑ2Ñ2ˆFØ Ñ'ˆEä%ØØ!×.Ñ.ØØ%Ø ×-Ñ-Ø"×1Ñ1ôˆEðØ×.Ñ.¨uÓ5�ð
 Ð! f§j¡j°Ô&9Ø(-�Ô%ÙàÐ!Ø  FÑ*Ø(.¨}Ñ(=�DÔ%Ø" fÑ,Ø*0°Ñ*A�DÔ'ä�H‰HØQØØ×!Ñ!Øô	ô �J‰J�uÔà×)Ò)Ø(-�Ô%ÙðØ#'§=¡=°×1BÑ1BÀD×DWÑDWÓ#X�Ô Ü—‘Ð7Ô8Ø(-�Ô%Ø×&Ñ&Ô(Ùða2	ðh !&ˆÔØøôI ò Ø(-�Ô%Úðûô@ ò Úðús%   ÄHÆ$AHÈHÈHÈ	H*È)H*c                óŒ   ‡ — 	 ‰ j                   j                  ˆ fd„«       y# t        $ r t        j	                  d«       Y yw xY w)r9  c                ó:   •— ‰j                   j                  | «      S rJ   r;  r<  s    €rN   ú<lambda>z2LiveConnection._flush_send_queue.<locals>.<lambda>  s   ø€ °T×5EÑ5E×5JÑ5JÈ4Ó5P€ rQ   r>  N)rÈ   Ú
flush_syncr  rG   r@  rL   s   `rN   r4  z LiveConnection._flush_send_queue
  s<   ø€ ð	FØ×Ñ×'Ñ'Ó(PÕQøÜò 	FÜ�K‰KÐDÖEð	Fús   ƒ" ¢AÁAc                óX   ‡ ‡— |�‰ j                   j                  ‰|«       ‰ S dˆˆ fd„}|S )a'  Adds the handler to the end of the handlers list for the given event type.

        No checks are made to see if the handler has already been added. Multiple calls
        passing the same combination of event type and handler will result in the handler
        being added, and called, multiple times.

        Can be used as a method (returns ``self`` for chaining)::

            connection.on("session.started", my_handler)

        Or as a decorator::

            @connection.on("session.started")
            def my_handler(event): ...
        c                ó@   •— ‰j                   j                  ‰| «       | S rJ   rC  rE  s    €€rN   rG  z$LiveConnection.on.<locals>.decorator'  rH  rQ   rI  rC  rK  s   ``  rN   rM  zLiveConnection.on  rN  rQ   c                ó>   — | j                   j                  ||«       | S rP  rQ  rS  s      rN   rT  zLiveConnection.off-  rU  rQ   c                ó\   ‡ ‡— |� ‰ j                   j                  ‰|d¬«       ‰ S dˆˆ fd„}|S )rW  TrX  c                óD   •— ‰j                   j                  ‰| d¬«       | S r[  rC  rE  s    €€rN   rG  z&LiveConnection.once.<locals>.decorator=  r\  rQ   rI  rC  rK  s   ``  rN   rY  zLiveConnection.once2  r]  rQ   c                ó   — | D ]‰  }|j                   }| j                  j                  |«      }| j                  j                  d«      }|dk(  r"|s |st        |t        «      rt        d|› �«      ‚|D ]
  } ||«       Œ |D ]
  } ||«       Œ Œ‹ y)ay  Run the event loop, dispatching received events to registered handlers.

        Blocks the current thread until the connection is closed. This is the push-based
        alternative to iterating with ``for event in connection``.

        If an ``"error"`` event arrives and no handler is registered for
        ``"error"`` or ``"event"``, an ``OpenAIError`` is raised.
        ré   rÞ   r_  N)rÝ   rÉ   r`  râ   r5   r/   )rM   ré   rê   rb  rc  rL  s         rN   rd  zLiveConnection.dispatch_eventsC  sŸ   € ð ò 	ˆEØŸ™ˆJØ×3Ñ3×@Ñ@ÀÓLˆHØ×2Ñ2×?Ñ?ÀÓHˆGà˜WÒ$©X¹gÜ˜e¤ZÔ0Ü%Ð(9¸%¸Ð&AÓBÐBà#ò �Ù˜•ðð #ò �Ù˜•ññ	rQ   )rË   rØ  r¹   z6Callable[[Query, Headers], WebSocketConnection] | Noner|   r†   r}   r‡   r~   rˆ   r   rˆ   r`   r   r_   r   rº   re  r„   r£   )r„   zIterator[ServerEvent]rf  rg  ri  rj  rk  rl  rm  ro  rJ   )rê   rç   rL  rp  r„   zIUnion[LiveConnection, Callable[[Callable[..., Any]], Callable[..., Any]]])rê   rç   rL  rJ  r„   rÕ  )rŠ   r‹   rŒ   rq  rr  r    rÛ  rÓ   rá   r  r  r  rà   rÔ   r4  rM  rT  rY  rd  r�   rQ   rN   rÕ  rÕ  :  s&  … Ù@à Ó Ø"Ó"à$Ó$ð KOØ^bØØ"ØØØ!#Ø'+ñ3à'ð3ð Hð	3ð
 \ð3ð ð3ð ð3ð ð3ð ð3ð ð3ð %ð3ð 
ó3ó<ó,ó$ó*ó$ð $(°rõ 9óqóIóVFð EIðØðØ(Aðà	Róó8ð EIðØðØ(Aðà	Róô"rQ   rÕ  c                  ó¼   — e Zd ZdZddddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd	„Z	 d	 	 	 	 	 dd
„Zdd„Z	 d	 	 	 	 	 dd„Zdd„Z	e	Z
dd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zy)r�   a  Context manager over a `LiveConnection` that is returned by `live.connect()`

    This context manager ensures that the connection will be closed when it exits.

    ---

    Note that if your application doesn't work well with the context manager approach then you
    can call the `.enter()` method directly to initiate a connection.

    **Warning**: You must remember to close the connection with `.close()`.

    ```py
    connection = client.live.connect(...).enter()
    # ...
    connection.close()
    ```
    Nrt   ru   rv   rw   rt  c       	        óÆ   — || _         d | _        || _        || _        || _        || _        || _        || _        || _        t        |	¬«      | _
        t        d¬«      | _        y )Nrv  Tr¼   )Ú_LiveConnectionManager__clientÚ"_LiveConnectionManager__connectionÚ#_LiveConnectionManager__extra_queryÚ%_LiveConnectionManager__extra_headersÚ4_LiveConnectionManager__websocket_connection_optionsÚ'_LiveConnectionManager__on_reconnectingÚ#_LiveConnectionManager__max_retriesÚ%_LiveConnectionManager__initial_delayÚ!_LiveConnectionManager__max_delayr1   Ú"_LiveConnectionManager__send_queuer4   Ú._LiveConnectionManager__event_handler_registryrƒ  s
             rN   r    zLiveConnectionManager.__init__o  se   € ð ˆŒØ37ˆÔØ(ˆÔØ,ˆÔØ.JˆÔ+Ø!0ˆÔØ(ˆÔØ,ˆÔØ$ˆÔÜ%°Ô?ˆÔÜ(<ÀdÔ(KˆÕ%rQ   c                óÈ   — t        |t        «      r|j                  ddd¬«      n"t        j                  t        |t        «      «      }| j                  j                  |«       yr…  )	râ   r   r   ró   r  r   r;   rù  r  r  s      rN   r  zLiveConnectionManager.sendˆ  r†  rQ   c                óX   ‡ ‡— |�‰ j                   j                  ‰|«       ‰ S dˆˆ fd„}|S )zÕRegister an event handler before the connection is established.

        Handlers are transferred to the connection on enter. Supports the
        same method and decorator forms as ``LiveConnection.on``.
        c                ó@   •— ‰j                   j                  ‰| «       | S rJ   ©rú  rD  rE  s    €€rN   rG  z+LiveConnectionManager.on.<locals>.decorator¡  rŠ  rQ   rI  rþ  rK  s   ``  rN   rM  zLiveConnectionManager.on•  r‹  rQ   c                ó>   — | j                   j                  ||«       | S rP  )rú  rR  rS  s      rN   rT  zLiveConnectionManager.off§  r�  rQ   c                ó\   ‡ ‡— |� ‰ j                   j                  ‰|d¬«       ‰ S dˆˆ fd„}|S )r�  TrX  c                óD   •— ‰j                   j                  ‰| d¬«       | S r[  rþ  rE  s    €€rN   rG  z-LiveConnectionManager.once.<locals>.decorator´  r‘  rQ   rI  rþ  rK  s   ``  rN   rY  zLiveConnectionManager.once¬  r’  rQ   c                óæ  — | j                  | j                  | j                  «      }t        || j                  �| j                   nd| j                  | j
                  | j                  | j                  | j                  | j                  | j                  ¬«	      | _	        | j                  j                  | j                  j                  «       | j                  j                  «        | j                  S )am  
        If your application doesn't work well with the context manager approach then you
        can call this method directly to initiate a connection.

        **Warning**: You must remember to close the connection with `.close()`.

        ```py
        connection = client.live.connect(...).enter()
        # ...
        connection.close()
        ```
        Nr¸   )r”  rò  ró  rÕ  rõ  rö  r÷  rø  rù  rñ  rú  r•  rÉ   r4  r–  s     rN   Ú	__enter__zLiveConnectionManager.__enter__º  sÈ   € ð ×Ñ˜d×0Ñ0°$×2FÑ2FÓGˆä*ØØ(,×(>Ñ(>Ð(J�D×$Ò$ÐPTØ ×2Ñ2Ø×*Ñ*Ø×.Ñ.Ø×&Ñ&Ø×*Ñ*Ø×.Ñ.Ø×(Ñ(ô

ˆÔð 	×%Ñ%×0Ñ0°×1BÑ1B×1ZÑ1ZÔ[Ø×Ñ×+Ñ+Ô-à× Ñ Ð rQ   c           
     ó(  — 	 ddl m} | j	                  «       j                  i | j                  j                  j                  ¥|¥¬«      }|j                  dddœj                  |j                  |j                  «      ¬«      }| j                  j                  t        j                  d	t        |«      t        |«      d
di¬«      «      }| j                  j	                  |j                   «      j#                  | j                  j$                  j'                  t)        t*        |j                  «      «      «      }|j                  dddœj                  |j                  |j                  «      ¬«      }| j                  j,                  i | j                  j.                  t1        |j2                  «      r|j2                  ni fD ���	ci c]-  }|j5                  «       D ]  \  }}	|j7                  «       ||	f“Œ Œ/ }
}}}	t8        j;                  d«       | j<                  rt8        j;                  d«        |t        |«      fd t?        t        |
jA                  «       «      i «      dœ| j<                  ¤ŽS # t        $ r}t        d«      |‚d }~ww xY wc c}	}}w )Nr   )rƒ   r›  rœ  r—  rž  rŸ  r¢  rå   ri   Tr¤  r¨  r©  rª  )!Úwebsockets.sync.clientrƒ   r®  r/   r¯  r°  rð  r±  r�  rå   r£  r²  r(   r³  rç   rä   r¦  r´  rµ  r¶  r   r   r·  r¸  r   r§  r¹  rº  rG   rñ   rô  r2   r»  r¼  s              rN   r”  z!LiveConnectionManager._connect_wsÜ  sK  € ð	dÝ6ð ×ÑÓ!×+Ñ+ðØ—-‘-×(Ñ(×/Ñ/ðàðð ,ó 
ˆð �m‰m¨D¸5Ñ#A×#EÑ#EÀcÇjÁjÐRU×R\ÑR\Ó#]ˆmÓ^ˆØ—-‘-×0Ñ0Ü×)Ñ)ØÜ˜“HÜ˜]Ó+Ø'¨Ð.ô	ó
ˆð �m‰m×(Ñ(¨¯©Ó5×GÑGØ�M‰M×Ñ×&Ñ&¤t¬C°·±Ó'@ÓAó
ˆð �m‰m¨D¸5Ñ#A×#EÑ#EÀcÇjÁjÐRU×R\ÑR\Ó#]ˆmÓ^ˆð —‘×*Ñ*ØØ—‘×-Ñ-Ü#+¨G¯O©OÔ#<�—’À"ð	÷	
ð 	
àð )×.Ñ.Ó0ò	
ñ ��Uð �I‰I‹K˜#˜u˜Ñ%ð	
Øð	
ˆò 	
ô 	�	‰	Ð/Ô0Ø×.Ò.Ü�I‰IÐDÔEáÜ�‹Hð
à"Ü.¬t°G·N±NÓ4DÓ/EÀrÓJñ
ð ×1Ñ1ñ	
ð 	
øôI ò 	dÜÐYÓZÐ`cÐcûð	düô,	
s   ‚I0 Ç2JÉ0	J
É9JÊJ
c                ó€  — | j                   j                  �*t        j                  | j                   j                  «      }nO| j                   j                  j
                  }|dk(  rdnd}| j                   j                  j                  |¬«      }|j                  j                  d«      dz   }|j                  |¬«      S rÀ  )	rð  rÃ  rÄ  rÅ  rÆ  r£  r°  rÂ  rÇ  rÈ  s        rN   r¯  z"LiveConnectionManager._prepare_url
  rË  rQ   c                óR   — | j                   �| j                   j                  «        y y rJ   )rñ  r  rÍ  s       rN   Ú__exit__zLiveConnectionManager.__exit__  s'   € ð ×ÑÐ(Ø×Ñ×#Ñ#Õ%ð )rQ   )rz   rC   r`   r   r_   r   r{   r>   r|   r†   r}   r‡   r~   rˆ   r   rˆ   r€   r‡   r„   r£   ri  rJ   )rê   rç   rL  rp  r„   zPUnion[LiveConnectionManager, Callable[[Callable[..., Any]], Callable[..., Any]]])rê   rç   rL  rJ  r„   r�   )r„   rÕ  )r`   r   r_   r   r„   rØ  rÑ  rÒ  )rŠ   r‹   rŒ   rq  r    r  rM  rT  rY  r  rÓ  r”  r¯  r  r�   rQ   rN   r�   r�   \  s  „ ñð2 _cØØ"ØØ'ñLð ðLð ð	Lð
 ðLð 'AðLð \ðLð ðLð ðLð ðLð ðLð 
óLó2(ð EIðØðØ(Aðà	Yóó$ð EIðØðØ(Aðà	Yóó!ð@ €Eó,
ó\	;ð&Ø2ð&Ø9Mð&ØWkð&à	ô&rQ   r�   c                  ó   — e Zd Zdd„Zy)ÚBaseLiveConnectionResourcec                ó   — || _         y rJ   ©r·   ©rM   rË   s     rN   r    z#BaseLiveConnectionResource.__init__  ó
   € Ø%ˆÕrQ   N)rË   rÕ  r„   r£   ©rŠ   r‹   rŒ   r    r�   rQ   rN   r
  r
    ó   „ ô&rQ   r
  c                  ó~   — e Zd Zed
d„«       Zedd„«       Zedd„«       Zedd„«       Zedœdd„Z	edœdd„Z
edœdd„Zy	)rÖ  c                ó,   — t        | j                  «      S rJ   )ÚLiveSessionCommentaryResourcer·   rL   s    rN   Ú
commentaryzLiveSessionResource.commentary"  ó   € ä,¨T×-=Ñ-=Ó>Ð>rQ   c                ó,   — t        | j                  «      S rJ   )ÚLiveSessionInputAudioResourcer·   rL   s    rN   Úinput_audiozLiveSessionResource.input_audio&  r  rQ   c                ó,   — t        | j                  «      S rJ   )ÚLiveSessionInstructionsResourcer·   rL   s    rN   Úinstructionsz LiveSessionResource.instructions*  s   € ä.¨t×/?Ñ/?Ó@Ð@rQ   c                ó,   — t        | j                  «      S rJ   )ÚLiveSessionThinkingResourcer·   rL   s    rN   ÚthinkingzLiveSessionResource.thinking.  s   € ä*¨4×+;Ñ+;Ó<Ð<rQ   ©Úevent_idc          
     ón   — | j                   j                  t        t        t	        d|dœ«      «      «       y©z…Request that the Live session close.

        The terminal `session.closed` event contains the close reason and final usage.
        zsession.close©rÝ   r   N©r·   r  r   r;   r   ©rM   r   s     rN   r  zLiveSessionResource.close2  s+   € ð
 	×Ñ×ÑœdÔ#3´_ÈoÐksÑEtÓ5uÓvÕwrQ   c               óp   — | j                   j                  t        t        t	        d||dœ«      «      «       y©zŒUpdate the delegation settings of an active Live session.

        The server acknowledges accepted changes with `session.updated`.
        zsession.update©rÝ   rg   r   Nr$  ©rM   rg   r   s      rN   ÚupdatezLiveSessionResource.update9  s4   € ð
 	×Ñ×ÑÜÜ ¤/Ð;KÐX_ÐmuÑ2vÓ"wóõ	
rQ   c               óp   — | j                   j                  t        t        t	        d||dœ«      «      «       y©z„Start a Live session on a primary WebSocket.

        Send this event before other commands and wait for `session.started`.
        zsession.startr(  Nr$  r)  s      rN   ÚstartzLiveSessionResource.startD  s1   € ð
 	×Ñ×ÑÜÔ!¤?¸OÐX_ÐmuÑ3vÓ#wÓxõ	
rQ   N)r„   r  )r„   r  )r„   r  )r„   r  ©r   úOptional[str] | Omitr„   r£   ©rg   r@   r   r/  r„   r£   ©rg   r=   r   r/  r„   r£   ©rŠ   r‹   rŒ   r'   r  r  r  r  r   r  r*  r-  r�   rQ   rN   rÖ  rÖ  !  su   „ Øò?ó ð?ð ò?ó ð?ð òAó ðAð ò=ó ð=ð 9=õ xð ]aõ 	
ð VZö 
rQ   rÖ  c                  ó   — e Zd Zedœdd„Zy)r  r  c               ór   — | j                   j                  t        t        t	        d|||dœ«      «      «       y©z{
        Provide context the Live model can communicate to the user, optionally for an existing client delegation.
        zsession.commentary.append©rÝ   ÚcontentÚdelegation_idr   Nr$  ©rM   r7  r8  r   s       rN   Úappendz$LiveSessionCommentaryResource.appendO  s<   € ð 	×Ñ×ÑÜÜ Üà ;Ø#*Ø)6Ø$,ñ	óó
õ	
rQ   N©r7  rç   r8  zOptional[str]r   r/  r„   r£   ©rŠ   r‹   rŒ   r   r:  r�   rQ   rN   r  r  N  ó
   „ Øeiö 
rQ   r  c                  ó6   — e Zd Zedœdd„Zedœdd„Zedœdd„Zy)r  r  c               óp   — | j                   j                  t        t        t	        d||dœ«      «      «       y©z‰Send audio to a Live session over its primary WebSocket.

        WebRTC and SIP sessions send audio over their media transport.
        zsession.input_audio.append)rÝ   Úaudior   Nr$  ©rM   rA  r   s      rN   r:  z$LiveSessionInputAudioResource.appendc  s5   € ð
 	×Ñ×ÑÜÜ ÜÐ)EÐPUÐckÑ lÓmóõ	
rQ   c          
     ón   — | j                   j                  t        t        t	        d|dœ«      «      «       y©z‹Mute audio input to the Live model without closing the session.

        The server acknowledges with `session.input_audio.muted`.
        zsession.input_audio.muter#  Nr$  r%  s     rN   Úmutez"LiveSessionInputAudioResource.muteo  s/   € ð
 	×Ñ×ÑÜÔ!¤?Ð<VÐdlÑ3mÓ#nÓoõ	
rQ   c          
     ón   — | j                   j                  t        t        t	        d|dœ«      «      «       y©z�Resume audio input to a Live model after muting it.

        The server acknowledges with `session.input_audio.unmuted`.
        zsession.input_audio.unmuter#  Nr$  r%  s     rN   Úunmutez$LiveSessionInputAudioResource.unmutex  s/   € ð
 	×Ñ×ÑÜÔ!¤?Ð<XÐfnÑ3oÓ#pÓqõ	
rQ   N©rA  rç   r   r/  r„   r£   r.  ©rŠ   r‹   rŒ   r   r:  rE  rH  r�   rQ   rN   r  r  b  s   „ ØEIõ 

ð 8<õ 
ð :>ö 
rQ   r  c                  ó   — e Zd Zedœdd„Zy)r  r  c               ór   — | j                   j                  t        t        t	        d|||dœ«      «      «       y©z“
        Append instructions to the Live conversation while it is running, optionally associating them with an existing client delegation.
        zsession.instructions.appendr6  Nr$  r9  s       rN   r:  z&LiveSessionInstructionsResource.appendƒ  s<   € ð 	×Ñ×ÑÜÜ Üà =Ø#*Ø)6Ø$,ñ	óó
õ	
rQ   Nr;  r<  r�   rQ   rN   r  r  ‚  r=  rQ   r  c                  ó   — e Zd Zedœdd„Zy)r  r  c               ór   — | j                   j                  t        t        t	        d|||dœ«      «      «       y©z
        Provide silent reasoning or progress context to the Live model, optionally for an existing client delegation.
        zsession.thinking.appendr6  Nr$  r9  s       rN   r:  z"LiveSessionThinkingResource.append—  s<   € ð 	×Ñ×ÑÜÜ Üà 9Ø#*Ø)6Ø$,ñ	óó
õ	
rQ   Nr;  r<  r�   rQ   rN   r  r  –  r=  rQ   r  c                  ó,   — e Zd Zedd„«       Zedœdd„Zy)r×  c                ó,   — t        | j                  «      S rJ   )ÚLiveResponseItemResourcer·   rL   s    rN   ÚitemzLiveResponseResource.item«  s   € ä'¨×(8Ñ(8Ó9Ð9rQ   r  c          
     ón   — | j                   j                  t        t        t	        d|dœ«      «      «       y©u¼   
        Request a response from the Live sessionâ€™s Responses backend, or continue a
        delegated response waiting for tool results.

        Requires Responses delegation.
        zresponse.creater#  Nr$  r%  s     rN   rs   zLiveResponseResource.create¯  s/   € ð 	×Ñ×ÑÜÔ!¤?Ð<MÐ[cÑ3dÓ#eÓfõ	
rQ   N)r„   rS  r.  ©rŠ   r‹   rŒ   r'   rT  r   rs   r�   rQ   rN   r×  r×  ª  s   „ Øò:ó ð:ð :>ö 	
rQ   r×  c                  ó   — e Zd Zedœdd„Zy)rS  r  c               óp   — | j                   j                  t        t        t	        d||dœ«      «      «       y©uš   Add an input item to the Live sessionâ€™s Responses backend.

        Requires Responses delegation; use `response.create` to request a response.
        zresponse.item.create)rÝ   rT  r   Nr$  ©rM   rT  r   s      rN   rs   zLiveResponseItemResource.create¼  s4   € ð
 	×Ñ×ÑÜÜ ¤/Ð;QÐ[_ÐmuÑ2vÓ"wóõ	
rQ   N©rT  rA   r   r/  r„   r£   ©rŠ   r‹   rŒ   r   rs   r�   rQ   rN   rS  rS  »  s
   „ ØW[ö 	
rQ   rS  c                  ó   — e Zd Zdd„Zy)ÚBaseAsyncLiveConnectionResourcec                ó   — || _         y rJ   r  r  s     rN   r    z(BaseAsyncLiveConnectionResource.__init__É  r  rQ   N)rË   r±   r„   r£   r  r�   rQ   rN   r_  r_  È  r  rQ   r_  c                  ó~   — e Zd Zed
d„«       Zedd„«       Zedd„«       Zedd„«       Zedœdd„Z	edœdd„Z
edœdd„Zy	)r³   c                ó,   — t        | j                  «      S rJ   )Ú"AsyncLiveSessionCommentaryResourcer·   rL   s    rN   r  z#AsyncLiveSessionResource.commentaryÎ  ó   € ä1°$×2BÑ2BÓCÐCrQ   c                ó,   — t        | j                  «      S rJ   )Ú"AsyncLiveSessionInputAudioResourcer·   rL   s    rN   r  z$AsyncLiveSessionResource.input_audioÒ  rd  rQ   c                ó,   — t        | j                  «      S rJ   )Ú$AsyncLiveSessionInstructionsResourcer·   rL   s    rN   r  z%AsyncLiveSessionResource.instructionsÖ  s   € ä3°D×4DÑ4DÓEÐErQ   c                ó,   — t        | j                  «      S rJ   )Ú AsyncLiveSessionThinkingResourcer·   rL   s    rN   r  z!AsyncLiveSessionResource.thinkingÚ  s   € ä/°×0@Ñ0@ÓAÐArQ   r  c          
   ƒ  óŠ   K  — | j                   j                  t        t        t	        d|dœ«      «      «      ƒ d{  –—†  y7 Œ­wr"  r$  r%  s     rN   r  zAsyncLiveSessionResource.closeÞ  s<   è ø€ ð
 ×Ñ×#Ñ#ÜÔ!¤?¸OÐYaÑ3bÓ#cÓdó
÷ 	
ò 	
úó   ‚9A»A¼Ac             ƒ  óŒ   K  — | j                   j                  t        t        t	        d||dœ«      «      «      ƒ d{  –—†  y7 Œ­wr'  r$  r)  s      rN   r*  zAsyncLiveSessionResource.updateç  sB   è ø€ ð
 ×Ñ×#Ñ#ÜÜ ¤/Ð;KÐX_ÐmuÑ2vÓ"wóó
÷ 	
ò 	
úó   ‚:A¼A½Ac             ƒ  óŒ   K  — | j                   j                  t        t        t	        d||dœ«      «      «      ƒ d{  –—†  y7 Œ­wr,  r$  r)  s      rN   r-  zAsyncLiveSessionResource.startò  s?   è ø€ ð
 ×Ñ×#Ñ#ÜÔ!¤?¸OÐX_ÐmuÑ3vÓ#wÓxó
÷ 	
ò 	
úrn  N)r„   rc  )r„   rf  )r„   rh  )r„   rj  r.  r0  r1  r2  r�   rQ   rN   r³   r³   Í  s{   „ ØòDó ðDð òDó ðDð òFó ðFð òBó ðBð ?Cõ 
ð cgõ 	
ð \`ö 
rQ   r³   c                  ó(   — e Zd Zedœ	 	 	 	 	 	 	 dd„Zy)rc  r  c             ƒ  óŽ   K  — | j                   j                  t        t        t	        d|||dœ«      «      «      ƒ d{  –—†  y7 Œ­wr5  r$  r9  s       rN   r:  z)AsyncLiveSessionCommentaryResource.appendý  sJ   è ø€ ð ×Ñ×#Ñ#ÜÜ Üà ;Ø#*Ø)6Ø$,ñ	óó
ó
÷ 	
ò 	
úó   ‚;A½A¾ANr;  r<  r�   rQ   rN   rc  rc  ü  ó*   „ à^bñ
Øð
Ø.;ð
ØG[ð
à	ô
rQ   rc  c                  ó6   — e Zd Zedœdd„Zedœdd„Zedœdd„Zy)rf  r  c             ƒ  óŒ   K  — | j                   j                  t        t        t	        d||dœ«      «      «      ƒ d{  –—†  y7 Œ­wr@  r$  rB  s      rN   r:  z)AsyncLiveSessionInputAudioResource.append  sC   è ø€ ð
 ×Ñ×#Ñ#ÜÜ ÜÐ)EÐPUÐckÑ lÓmóó
÷ 	
ò 	
úrn  c          
   ƒ  óŠ   K  — | j                   j                  t        t        t	        d|dœ«      «      «      ƒ d{  –—†  y7 Œ­wrD  r$  r%  s     rN   rE  z'AsyncLiveSessionInputAudioResource.mute  s=   è ø€ ð
 ×Ñ×#Ñ#ÜÔ!¤?Ð<VÐdlÑ3mÓ#nÓoó
÷ 	
ò 	
úrl  c          
   ƒ  óŠ   K  — | j                   j                  t        t        t	        d|dœ«      «      «      ƒ d{  –—†  y7 Œ­wrG  r$  r%  s     rN   rH  z)AsyncLiveSessionInputAudioResource.unmute(  s=   è ø€ ð
 ×Ñ×#Ñ#ÜÔ!¤?Ð<XÐfnÑ3oÓ#pÓqó
÷ 	
ò 	
úrl  NrI  r.  rJ  r�   rQ   rN   rf  rf    s!   „ ØKOõ 

ð >Bõ 
ð @Dö 
rQ   rf  c                  ó(   — e Zd Zedœ	 	 	 	 	 	 	 dd„Zy)rh  r  c             ƒ  óŽ   K  — | j                   j                  t        t        t	        d|||dœ«      «      «      ƒ d{  –—†  y7 Œ­wrM  r$  r9  s       rN   r:  z+AsyncLiveSessionInstructionsResource.append3  sJ   è ø€ ð ×Ñ×#Ñ#ÜÜ Üà =Ø#*Ø)6Ø$,ñ	óó
ó
÷ 	
ò 	
úrr  Nr;  r<  r�   rQ   rN   rh  rh  2  rs  rQ   rh  c                  ó(   — e Zd Zedœ	 	 	 	 	 	 	 dd„Zy)rj  r  c             ƒ  óŽ   K  — | j                   j                  t        t        t	        d|||dœ«      «      «      ƒ d{  –—†  y7 Œ­wrP  r$  r9  s       rN   r:  z'AsyncLiveSessionThinkingResource.appendI  sJ   è ø€ ð ×Ñ×#Ñ#ÜÜ Üà 9Ø#*Ø)6Ø$,ñ	óó
ó
÷ 	
ò 	
úrr  Nr;  r<  r�   rQ   rN   rj  rj  H  rs  rQ   rj  c                  ó,   — e Zd Zedd„«       Zedœdd„Zy)r´   c                ó,   — t        | j                  «      S rJ   )ÚAsyncLiveResponseItemResourcer·   rL   s    rN   rT  zAsyncLiveResponseResource.item_  r  rQ   r  c          
   ƒ  óŠ   K  — | j                   j                  t        t        t	        d|dœ«      «      «      ƒ d{  –—†  y7 Œ­wrV  r$  r%  s     rN   rs   z AsyncLiveResponseResource.createc  s=   è ø€ ð ×Ñ×#Ñ#ÜÔ!¤?Ð<MÐ[cÑ3dÓ#eÓfó
÷ 	
ò 	
úrl  N)r„   r~  r.  rW  r�   rQ   rN   r´   r´   ^  s    „ Øò?ó ð?ð @Dö 	
rQ   r´   c                  ó   — e Zd Zedœdd„Zy)r~  r  c             ƒ  óŒ   K  — | j                   j                  t        t        t	        d||dœ«      «      «      ƒ d{  –—†  y7 Œ­wrZ  r$  r[  s      rN   rs   z$AsyncLiveResponseItemResource.createp  sB   è ø€ ð
 ×Ñ×#Ñ#ÜÜ ¤/Ð;QÐ[_ÐmuÑ2vÓ"wóó
÷ 	
ò 	
úrn  Nr\  r]  r�   rQ   rN   r~  r~  o  s
   „ Ø]aö 	
rQ   r~  )ˆÚ
__future__r   ró   rã  r1  ÚloggingÚtypesr   Útypingr   r   r   r   r	   r
   r   r   Útyping_extensionsr   rÄ  Úpydanticr   r  r   rS   r   r   Ú_typesr   r   r   r   r   r   r   Ú_utilsr   r   r   r   rU   r   r    r!   r"   r#   r$   rO   r%   r&   Ú_compatr'   Ú_modelsr(   r)   Ú	_resourcer*   r+   Ú	_responser,   r-   Ú
types.liver.   Ú_exceptionsr/   r0   rÈ   r1   Ú_base_clientr2   r3   Ú_event_handlerr4   Útypes.live.error_eventr5   Útypes.live.client_eventr6   Útypes.live.server_eventr7   Útypes.websocket_reconnectionr8   r9   r:   Útypes.live.client_event_paramr;   Útypes.live.live_create_responser<   Útypes.live.session_config_paramr=   Ú"types.websocket_connection_optionsr>   Ú%types.live.media_session_config_paramr?   Ú&types.live.session_update_config_paramr@   Ú)types.responses.response_input_item_paramrA   r  rB   rØ  Úwebsockets.asyncio.clientr¶   rK   rC   rD   Ú__all__Ú	getLoggerrŠ   rG   rr  rE   rF   rX   r”   r\   r–   r±   r™   rÕ  r�   r
  rÖ  r  r  r  r  r×  rS  r_  r³   rc  rf  rh  rj  r´   r~  r�   rQ   rN   ú<module>r      s
  ðö #ã Û Û Û Ý ß [× [Ó [Ý +ã Ý å  ß $ß K× KÑ Kß WÓ W÷÷ ÷ .Ý &ß Dß :ß YÝ ,ß FÝ $ß AÝ 2Ý 0Ý 2Ý 2ß jÑ jÝ =Ý AÝ AÝ LÝ LÝ NÝ OáÝNÝVç.à�;Ð
€à'�g×'Ñ'¨Ó1€€^Ó 1ôj
ˆ?ô j
ôZj
Ð ô j
÷Z
<ñ 
<÷
Añ 
A÷
Bñ 
B÷
Gñ 
G÷k!ñ k!÷\	~,ñ ~,÷B_ñ _÷D	}&ñ }&÷@&ñ &ô
*
Ð4ô *
ôZ
Ð$>ô 
ô(
Ð$>ô 
ô@
Ð&@ô 
ô(
Ð"<ô 
ô(
Ð5ô 
ô"

Ð9ô 

÷&ñ &ô
,
Ð>ô ,
ô^
Ð)Hô 
ô,
Ð)Hô 
ô@
Ð+Jô 
ô,
Ð'Fô 
ô,
Ð ?ô 
ô"

Ð$Cõ 

rQ   