Ë
    uPêjRN  ã                   ó²  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
mZ d dlmZmZ d dlZd dlZd dlZd dlZd dlmZmZ d dlmZmZ d dlmZmZ d dlZd dlmZ d dlmZ  G d	„ d
e«      Z  G d„ ded¬«      Z! ee «      Z"ee#d<    e «       Z$ee    e#d<   i Z%ee!   e#d<   i e jL                  ejN                  “ejP                  ejN                  “ejR                  ejT                  “ejV                  ejX                  “ejZ                  ej\                  “ej^                  ej`                  “ejb                  ej`                  “ejd                  ej`                  “ejf                  ejh                  “ejj                  ejh                  “ejl                  ejn                  “ejp                  ejn                  “ejr                  ejt                  “ejl                  ejn                  “ejv                  ejn                  “ejx                  ejx                  “ejz                  ejz                  “ej|                  ej~                  i¥Z@eeAeBeC   eBeD   f      e#d<   	 d dlZejn                  e@ejŠ                  jl                  <   ejŽ                  ded   fd„«       ZH G d„ dej’                  «      ZJ G d„ dej–                  «      ZL G d„ deL«      ZMy# eF$ r Y ŒUw xY w)é    N)ÚCallableÚ	Generator)ÚClassVarÚFinal)ÚClientResponseÚClientSession)Ú	BaseModelÚTypeAdapter)ÚReadOnlyÚ	TypedDict)Úverbose_logger)Ústr_to_boolc                   ó^   — e Zd ZU dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   y)ÚHttpxTimeoutExtensionNÚconnectÚreadÚwriteÚpool)	Ú__name__Ú
__module__Ú__qualname__r   ÚfloatÚ__annotations__r   r   r   © ó    úp/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/custom_httpx/aiohttp_transport.pyr   r      s:   … Ø €GˆU�T‰\Ó Ø€Dˆ%�$‰,ÓØ€Eˆ5�4‰<ÓØ€Dˆ%�$‰,Ôr   r   c                   ó8   — e Zd ZU eeej                  z     ed<   y)ÚAiohttpSslRequestOptionÚsslN)r   r   r   r   Úboolr   Ú
SSLContextr   r   r   r   r   r      s   … Ø	�$˜Ÿ™Ñ'Ñ	(Ô(r   r   F)ÚtotalÚ_TIMEOUT_EXTENSIONÚ_EMPTY_TIMEOUTÚ_NO_SSL_OVERRIDEÚAIOHTTP_EXC_MAPÚreturn)NNNc               #   óÞ   K  — 	 d –— y # t         $ rX} d }t        j                  «       D ]#  \  }}t        | |«      sŒ|�t	        ||«      sŒ"|}Œ% |€‚ t        | «      } ||«      | ‚d } ~ ww xY w­w©N)Ú	Exceptionr&   ÚitemsÚ
isinstanceÚ
issubclassÚstr)ÚexcÚ
mapped_excÚfrom_excÚto_excÚmessages        r   Úmap_aiohttp_exceptionsr4   N   s�   è ø€ ð+ÜøÜò +Ø-1ˆ
ä /× 5Ñ 5Ó 7ò 	$ÑˆH�fÜ˜c 8Ô,ØØÐ!¤Z°¸
Õ%CØ#‘
ð		$ð ÐØä˜S›ˆÙ˜Ó! sÐ*ûð+üs*   ‚A-„	 ˆA-‰	A*’7A%Á
A%Á%A*Á*A-c                   óN   — e Zd ZdZdeddfd„Zdej                  e   fd„Z	dd„Z
y)	ÚAiohttpResponseStreami @  Úaiohttp_responser'   Nc                 ó   — || _         y r)   )Ú_aiohttp_response)Úselfr7   s     r   Ú__init__zAiohttpResponseStream.__init__e   s
   € Ø!1ˆÕr   c                óB  K  — 	 | j                   j                  j                  | j                  «      2 3 d {  –—† }|­–— Œ7 Œ
6 nŸ# t        $ r2}dt        |«      vr‚ t        j                  t        |«      «      |‚d }~wt        j                  j                  $ r$}t        j                  t        |«      «      |‚d }~wt        $ r t        «       5  ‚ # 1 sw Y   nxY wY nw xY w| j                   j                  «        y # | j                   j                  «        w xY w­w)NzConnection closed)r9   ÚcontentÚiter_chunkedÚ
CHUNK_SIZEÚRuntimeErrorr.   ÚhttpxÚ	ReadErrorÚaiohttpÚhttp_exceptionsÚTransferEncodingErrorr*   r4   Úclose)r:   ÚchunkÚes      r   Ú	__aiter__zAiohttpResponseStream.__aiter__h   sí   è ø€ ð	+Ø#×5Ñ5×=Ñ=×JÑJÈ4Ï?É?Ó[÷ ð �eØ”ðøÑ[øäò 	1Ø"¬#¨a«&Ñ0ØÜ—/‘/¤# a£&Ó)¨qÐ0ûÜ×&Ñ&×<Ñ<ò 	1Ü—/‘/¤# a£&Ó)¨qÐ0ûÜò 	ä'Ó)ñ Ø÷ð úñ ð	úð ×"Ñ"×(Ñ(Õ*øˆD×"Ñ"×(Ñ(Õ*üs„   ‚D„/A ³A·A¸A»A ÁAÁA ÁD  Á	C"Á-A<Á< C"ÂB;Â;C"ÃCÃC	ÃC"ÃD  Ã!C"Ã"D  Ã%DÄ DÄDc              ƒ   ó˜   K  — t        «       5  | j                  j                  d d d «      ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­wr)   )r4   r9   Ú	__aexit__©r:   s    r   ÚaclosezAiohttpResponseStream.aclose�   sL   è ø€ Ü#Ó%ñ 	EØ×(Ñ(×2Ñ2°4¸¸tÓD×DÐD÷	Eð 	EØDø÷	Eð 	Eüs%   ‚A
�!>®<¯>³	A
¼>¾AÁA
©r'   N)r   r   r   r?   r   r;   ÚtypingÚAsyncIteratorÚbytesrI   rM   r   r   r   r6   r6   b   s7   „ Ø€Jð2¨ð 2¸Dó 2ð+ ×!5Ñ!5°eÑ!<ó +ô2Er   r6   c                   ó<   — e Zd Z	 ddeeg ef   z  deddfd„Zdd„Zy)	ÚAiohttpTransportÚclientÚowns_sessionr'   Nc                 ó.   — || _         || _        i | _        y r)   )rT   Ú_owns_sessionÚproxy_cache)r:   rT   rU   s      r   r;   zAiohttpTransport.__init__‡   s   € ð
 ˆŒØ)ˆÔð
 35ˆÕr   c              ƒ   ó¤   K  — | j                   r>t        | j                  t        «      r#| j                  j	                  «       ƒ d {  –—†  y y y 7 Œ­wr)   )rW   r,   rT   r   rF   rL   s    r   rM   zAiohttpTransport.aclose”   s>   è ø€ Ø×Ò¤*¨T¯[©[¼-Ô"HØ—+‘+×#Ñ#Ó%×%Ñ%ð #IÐØ%ús   ‚AAÁAÁA)TrN   )r   r   r   r   r   r    r;   rM   r   r   r   rS   rS   †   s<   „ ð "ñ5à ¨¨]Ð):Ñ ;Ñ;ð5ð ð5ð 
ó	5ô&r   rS   c                   óò  ‡ — e Zd ZU dZ e«       Zeed      ed<   	 	 	 ddee	g ef   z  de
ej                  z  dz  de
de	g ef   dz  fˆ fd	„Zd
efd„Zedd„«       Zedd„«       Zeded
dfd„«       Zded
dfd„Zd
efd„Z	 ddedej.                  dededz  dedz  de
ej                  z  dz  d
efd„Zdej.                  d
ej8                  fd„Zdej.                  fd„Zdej>                  d
edz  fd„Z ˆ xZ!S ) ÚLiteLLMAiohttpTransportzß
    LiteLLM wrapper around AiohttpTransport to handle %-encodings in URLs
    and event loop lifecycle issues in CI/CD environments

    Credit to: https://github.com/karpetrosyan/httpx-aiohttp for this implementation
    úasyncio.Task[None]Ú_background_close_tasksNrT   Ú
ssl_verifyrU   Úsession_factoryc                 ó€   •— || _         || _        t        ‰| �  ||¬«       t	        |«      r|nt
        }|xs || _        y )N)rT   rU   )rT   Ú_ssl_verifyÚsuperr;   Úcallabler   Ú_client_factory)r:   rT   r^   rU   r_   Údefault_factoryÚ	__class__s         €r   r;   z LiteLLMAiohttpTransport.__init__¦   sC   ø€ ð ˆŒØ%ˆÔÜ‰Ñ °\ÐÔBäHPÐQWÔHX¹fÔ^kˆØ<KÒ<^ÈˆÕr   r'   c                 ó4   — | j                  «       }d| _        |S )a  
        Build a replacement session from the configured factory.

        The replacement is reachable only from this transport, so the transport
        owns it from here on even when it was originally handed a session it did
        not own (the proxy's shared session).
        T)rd   rW   )r:   Úsessions     r   Ú_rebuild_sessionz(LiteLLMAiohttpTransport._rebuild_session´   s   € ð ×-Ñ-Ó/ˆØ!ˆÔØˆr   c                 ó®   — | j                   j                  |«       |j                  «       ry |j                  «       }|�t	        j
                  d|«       y y )Nz*Error closing recycled aiohttp session: %s)r]   ÚdiscardÚ	cancelledÚ	exceptionr   Údebug)ÚclsÚtaskr/   s      r   Ú_on_close_task_donez+LiteLLMAiohttpTransport._on_close_task_doneÀ   sJ   € à×#Ñ#×+Ñ+¨DÔ1Ø�>‰>ÔØØ—^‘^Ó%ˆØˆ?Ü× Ñ Ð!MÈsÕSð r   c                 óx   — | j                  «       ry | j                  «       }|�t        j                  d|«       y y )Nz:Error closing recycled aiohttp session on its own loop: %s)rl   rm   r   rn   )Úfuturer/   s     r   Ú_on_threadsafe_close_donez1LiteLLMAiohttpTransport._on_threadsafe_close_doneÉ   s;   € à×ÑÔØØ×%Ñ%Ó'ˆØˆ?Ü× Ñ Ð!]Ð_bÕcð r   rh   c                 óÎ   — t        | dd«      }t        |dd«      }t        |«      sy	  |«        y# t        t        t        f$ r }t        j                  d|«       Y d}~yd}~ww xY w)a  Synchronously dispose a session whose event loop is gone.

        An async close can no longer run on a closed loop. BaseConnector._close
        is the same synchronous teardown aiohttp's own finalizer (__del__)
        uses: it is guarded for closed loops, releases pooled connections, and
        flips the flags that ClientSession.closed / BaseConnector.closed read -
        so no "Unclosed client session" / "Unclosed connector" warnings reach
        the event-loop exception handler at garbage collection.
        Ú
_connectorNÚ_closez&Best-effort connector close failed: %s)Úgetattrrc   r@   ÚAttributeErrorÚOSErrorr   rn   )rh   Ú	connectorÚ
close_syncrH   s       r   Ú_mark_connector_closedz.LiteLLMAiohttpTransport._mark_connector_closedÑ   sc   € ô # 7¨L¸$Ó?ˆ	Ü# I¨x¸Ó>ˆ
Ü˜
Ô#Øð	NÙ�LøÜœn¬gÐ6ò 	NÜ× Ñ Ð!IÈ1×MÑMûð	Nús   ¨0 °A$ÁAÁA$c                 óØ  — |j                   ryt        |dd«      }	 t        j                  «       }|�w||urs|j                  «       sQ|j                  «       rA	 t        j                  |j                  «       |«      }|j                  | j                  «       y| j                  |«       y|€| j                  |«       y|j                  |j                  «       «      }t        | «      }|j                   j#                  |«       |j                  |j$                  «       y# t        $ r d}Y Œûw xY w# t        $ r1}t        j                  d|«       | j                  |«       Y d}~yd}~ww xY w)a   Deterministically dispose a ClientSession this transport is replacing.

        Covers the three lifecycles a recycled session can be in:
        - its loop is the current running loop: schedule an async close and keep
          a strong reference to the task until it completes;
        - its loop is still running elsewhere (e.g. another thread): hand the
          close to that loop thread-safely;
        - its loop is stopped or closed, or there is no running loop: fall
          back to the synchronous finalizer-safe teardown.
        NÚ_loopz#Threadsafe session close failed: %s)Úclosedrx   ÚasyncioÚget_running_loopr@   Ú	is_closedÚ
is_runningÚrun_coroutine_threadsaferF   Úadd_done_callbackrt   r   rn   r}   Úcreate_taskÚtyper]   Úaddrq   )r:   rh   Úsession_loopÚcurrent_looprs   rH   rp   ro   s           r   Ú_close_recycled_sessionz/LiteLLMAiohttpTransport._close_recycled_sessionå   sO  € ð �>Š>Øä@GÈÐQXÐZ^Ó@_ˆð	 Ü=D×=UÑ=UÓ=WˆLð Ð#¨¸LÑ(HØ×)Ñ)Ô+°×0GÑ0GÔ0IðMÜ$+×$DÑ$DÀWÇ]Á]Ã_ÐVbÓ$c�Fð
 ×,Ñ,¨T×-KÑ-KÔLØð
 ×'Ñ'¨Ô0ØàÐØ×'Ñ'¨Ô0Øà"×.Ñ.¨w¯}©}«Ó?ˆÜ˜$“ZˆØ×#Ñ#×'Ñ'¨Ô-Ø×Ñ˜s×6Ñ6Õ7øô= ò 	 ØŠLð	 ûô $ò 9Ü"×(Ñ(Ð)NÐPQÔRØ×/Ñ/°×8Ð8ð ûð9ús)   œD Á$D/ ÄD,Ä+D,Ä/	E)Ä8'E$Å$E)c                 óÔ  — t        | j                  t        «      s| j                  «       | _        | j                  j                  r6t        j                  d«       | j                  «       | _        | j                  S 	 t        | j                  dd«      }t        j                  «       }|�||k7  s|j                  «       r?| j                  }	 | j                  r| j                  |«       | j                  «       | _        | j                  S # t        $ r }t        j                  d|«       Y d}~ŒEd}~ww xY w# t        t        f$ r¢}| j                  }| j                  rJ	 | j                  |«       n7# t        t        t         f$ r }t        j                  d|«       Y d}~nd}~ww xY w| j                  «       | _        t        j                  d|«       Y d}~| j                  S d}~ww xY w)zê
        Helper to get a valid ClientSession for the current event loop.

        This handles the case where the session was created in a different
        event loop that may have been closed (common in CI/CD environments).
        z'Session is closed, creating new sessionr   NzError closing old session: %sz4Error checking session loop, created new session: %s)r,   rT   r   ri   r€   r   rn   rx   r�   r‚   rƒ   rW   rŒ   r*   r@   ry   rz   )r:   rŠ   r‹   Úold_sessionrH   Úclose_errors         r   Ú_get_valid_client_sessionz1LiteLLMAiohttpTransport._get_valid_client_session  s¤  € ô ˜$Ÿ+™+¤}Ô5Ø×/Ñ/Ó1ˆDŒKð �;‰;×ÒÜ× Ñ Ð!JÔKà×/Ñ/Ó1ˆDŒKØ—;‘;Ðð	\ÜDKÈDÏKÉKÐY`ÐbfÓDgˆLÜ")×":Ñ":Ó"<ˆLð Ð# |°|Ò'CÀ|×G]ÑG]ÔG_à"Ÿk™k�ðMØ×)Ò)Ø×4Ñ4°[ÔAð
 #×3Ñ3Ó5�”ð �{‰{Ðøô% !ò MÜ"×(Ñ(Ð)HÈ!×LÑLûðMûô œnÐ-ò 
	\ð Ÿ+™+ˆKØ×!Ò!ðWØ×0Ñ0°Õ=øÜ$¤n´gÐ>ò WÜ"×(Ñ(Ð)HÈ+×VÑVûðWúà×/Ñ/Ó1ˆDŒKÜ× Ñ Ð!WÐYZ×[Ð[à�{‰{Ðûð
	\úsm   Á=AD6 ÃD
 Ã)D6 Ä
	D3ÄD.Ä)D6 Ä.D3Ä3D6 Ä6G'ÅG"ÅE0Å/G"Å0F$ÆFÆG"ÆF$Æ$.G"Ç"G'Úclient_sessionÚrequestÚtimeoutÚproxyÚsni_hostnamec              ƒ   óö  K  — ddl m} ddlm} 	 |j                  xs d}	|€t        nd|i}
 |j                  d|j                   |t        |j                  «      d¬«      |j                  |	d	d	 ||j                  |j                   |j"                  ¬
«      ||dœ	|
¤Žj%                  «       ƒ d{  –—† }|S # t
        j                  $ r+ |j                  }	|j                  j                  dd«       Y ŒÓw xY w7 ŒG­w)a  
        Helper function to make an aiohttp request with the given parameters.

        Args:
            client_session: The aiohttp ClientSession to use
            request: The httpx Request to send
            timeout: Timeout settings with 'connect', 'read', 'pool' fields
            proxy: Optional proxy URL
            sni_hostname: Optional SNI hostname for SSL
            ssl_verify: Optional SSL verification setting (False to disable, SSLContext for custom)

        Returns:
            ClientResponse from aiohttp
        r   )ÚClientTimeout)ÚURLNztransfer-encodingr   T)ÚencodedF)Úsock_connectÚ	sock_readr   )	ÚmethodÚurlÚheadersÚdataÚallow_redirectsÚauto_decompressr“   r”   Úserver_hostnamer   )rC   r—   Úyarlr˜   r=   rA   ÚRequestNotReadÚstreamrž   Úpopr%   r’   rœ   r.   r�   r   r   r   Ú
__aenter__)r:   r‘   r’   r“   r”   r•   r^   r—   ÚYarlURLrŸ   Ú
ssl_optionÚresponses               r   Ú_make_aiohttp_requestz-LiteLLMAiohttpTransport._make_aiohttp_requestI  sú   è ø€ õ. 	*Ý'ð	;ð —?‘?Ò* dˆDð JTÐI[Õ5EÐbgÐisÐatˆ
à 6 × 6Ñ 6ð !
Ø—>‘>Ùœ˜GŸK™KÓ(°$Ô7Ø—O‘OØØ!Ø!Ù!Ø$Ÿ_™_Ø!Ÿ,™,ØŸ™ôð
 Ø(ñ!
ð ñ!
÷ ‰*‹,÷ˆð" ˆøô5 ×#Ñ#ò 	;Ø—>‘>ˆDØ�O‰O×ÑÐ 3°TÖ:ð	;úðús4   ‚C9�B6  BC9Â/C7Â0C9Â6;C4Ã1C9Ã3C4Ã4C9c           
   ƒ   ó”  K  — t         j                  |j                  j                  dt        «      «      }|j                  j                  d«      }| j                  «       }| j                  |«      ƒ d {  –—† }| j                  }	 t        «       5  | j                  ||||||¬«      ƒ d {  –—† }d d d «       t)        j*                  j,                  |j.                  t1        |«      |¬«      S 7 Œy7 ŒD# 1 sw Y   ŒCxY w# t        $ r½}dt        |«      v r¤t        j                  d|«       | j                  r!t        |t         «      r| j#                  |«       | j%                  «       | _        | j&                  }t        «       5  | j                  ||||||¬«      ƒ d {  –—†7  }d d d «       n# 1 sw Y   nxY w‚ Y d }~�Œd }~ww xY w­w)Nr“   r•   )r‘   r’   r“   r”   r•   r^   zSession is closedz<Session closed during request, retrying with new session: %s)Ústatus_coderž   r¥   r’   )r#   Úvalidate_pythonÚ
extensionsÚgetr$   r�   Ú_get_proxy_settingsra   r4   r«   r@   r.   r   rn   rW   r,   r   rŒ   ri   rT   rA   ÚResponseÚstatusrž   r6   )	r:   r’   r“   r•   r‘   r”   Ú
ssl_configrª   rH   s	            r   Úhandle_async_requestz,LiteLLMAiohttpTransport.handle_async_request„  s»  è ø€ ô ,×;Ñ;¸G×<NÑ<N×<RÑ<RÐS\Ô^lÓ<mÓnˆØ*1×*<Ñ*<×*@Ñ*@ÀÓ*Pˆð ×7Ñ7Ó9ˆð "×5Ñ5°gÓ>×>ˆð !×,Ñ,ˆ
ð%	Ü'Ó)ñ Ø!%×!;Ñ!;Ø#1Ø#Ø#ØØ!-Ø)ð "<ó "÷ �÷ôL �~‰~Ø Ÿ™Ø×$Ñ$Ü(¨Ó2Øô	
ð 	
ðY ?øðø÷ð ûô ò 	à"¤c¨!£fÑ,Ü×$Ñ$Ð%cÐefÔgð ×%Ò%¬*°^Ä]Ô*SØ×0Ñ0°Ô@Ø"×3Ñ3Ó5�”Ø!%§¡�ô ,Ó-ñ Ø%)×%?Ñ%?Ø'5Ø 'Ø 'Ø#Ø%1Ø#-ð &@ó &÷  ð  �H÷÷ ñ úð ÿùð7	üs‹   ‚A3GÁ5C/Á6GÂ
C? ÂC3Â,C1Â-C3Â1C? Â97GÃ1C3Ã3C<Ã8C? Ã?	GÄA;G ÆF-ÆF!ÆF-Æ$	G Æ-F6	Æ2G Æ:GÇ GÇGc              ƒ   ó  K  — d }t         j                  s=t        t        j                  dd«      «      s	 | j                  |j                  «      }|S |S # t        $ r!}t        j                  d|«       Y d }~|S d }~ww xY w­w)NÚDISABLE_AIOHTTP_TRUST_ENVÚFalsezError reading proxy env: %s)
ÚlitellmÚdisable_aiohttp_trust_envr   ÚosÚgetenvÚ_proxy_from_envr�   r*   r   rn   )r:   r’   r”   rH   s       r   r±   z+LiteLLMAiohttpTransport._get_proxy_settingsÂ  sy   è ø€ ØˆÜ×1Ò1´[ÄÇÁÐKfÐhoÓApÔ5qðGØ×,Ñ,¨W¯[©[Ó9�ð ˆˆuˆøô ò GÜ×$Ñ$Ð%BÀA×FÐFàˆûðGüs.   ‚2BµA ÁBÁ	A>ÁA9Á3BÁ9A>Á>Br�   c                 ó€  — |j                   }|| j                  v r| j                  |   S t        j                  j	                  «       }t        j                  j                  |j                   «      rd}n;|j                  |j                  «      xs |j                  d«      }|r	d|vrd|› �}|}|| j                  |<   |S )z£
        Return proxy URL from env for the given request URL

        Only check the proxy env settings once, this is a costly operation for CPU % usage

        .NÚallz://zhttp://)ÚhostrX   Úurllibr’   Ú
getproxiesÚproxy_bypassr°   Úscheme)r:   r�   Úproxy_cache_keyÚproxiesÚ	proxy_urlr”   s         r   r½   z'LiteLLMAiohttpTransport._proxy_from_envÌ  sª   € ð "%§¡ˆà˜d×.Ñ.Ñ.Ø×#Ñ# OÑ4Ð4äŸ™×2Ñ2Ó4ˆÜ�>‰>×&Ñ& s§x¡xÔ0Ø‰Ià—K‘K §
¡
Ó+ÒA¨w¯{©{¸5Ó/AˆEÙ˜ eÑ+Ø! % Ð)�ØˆIà,5ˆ×Ñ˜Ñ)àÐr   )NTN)rp   r\   r'   N)rs   zconcurrent.futures.Future[None]r'   Nr)   )"r   r   r   Ú__doc__Úsetr]   r   r   r   r   r    r   r!   r;   ri   Úclassmethodrq   Ústaticmethodrt   r}   rŒ   r�   rA   ÚRequestr   r.   r   r«   r²   rµ   r±   r˜   r½   Ú__classcell__)rf   s   @r   r[   r[   ™   s¾  ø… ññ DGÃ5Ð˜X cÐ*>Ñ&?Ñ@ÓHð
 48Ø!Ø>Bñ_à ¨¨]Ð):Ñ ;Ñ;ð_ð ˜3Ÿ>™>Ñ)¨DÑ0ð_ð ð	_ð
 " " mÐ"3Ñ4°tÑ;õ_ð
 -ó 
ð òTó ðTð òdó ðdð ðN¨ð N¸$ò Nó ðNð&/8¨}ð /8Àó /8ðb1¨=ó 1ðt 48ñ9à%ð9ð —‘ð9ð 'ð	9ð
 �T‰zð9ð ˜D‘jð9ð ˜3Ÿ>™>Ñ)¨DÑ0ð9ð 
ó9ðv<
à—‘ð<
ð 
�‰ó<
ð|°·±ó ð 5§9¡9ð °°t±÷ r   r[   )Nr�   Úconcurrent.futuresÚ
concurrentÚ
contextlibr»   r   rO   Úurllib.requestrÁ   Úcollections.abcr   r   r   r   rC   Úaiohttp.client_exceptionsÚaiohttp.http_exceptionsrA   Úaiohttp.clientr   r   Úpydanticr	   r
   Útyping_extensionsr   r   r¹   Úlitellm._loggingr   Úlitellm.secret_managers.mainr   r   r   r#   r   r$   r%   ÚTimeoutErrorÚTimeoutExceptionÚServerTimeoutErrorÚConnectionTimeoutErrorÚConnectTimeoutÚSocketTimeoutErrorÚReadTimeoutÚClientProxyConnectionErrorÚ
ProxyErrorÚClientConnectorCertificateErrorÚProtocolErrorÚClientSSLErrorÚServerFingerprintMismatchÚClientConnectorErrorÚConnectErrorÚClientOSErrorÚClientPayloadErrorrB   ÚServerDisconnectedErrorÚClientConnectionErrorÚNetworkErrorÚContentTypeErrorÚTooManyRedirectsÚ
InvalidURLÚClientErrorÚRequestErrorr&   Údictrˆ   ÚBaseExceptionr*   Úclient_exceptionsÚImportErrorÚcontextmanagerr4   ÚAsyncByteStreamr6   ÚAsyncBaseTransportrS   r[   r   r   r   ú<module>rú      s  ðÜ Û Û Û 	Û 
Û Û ß /ß "ã Û  Û Û ß 8ß +ß 1ã Ý +Ý 4ô˜Iô ô)˜i¨uõ )ñ (Ð(=Ó>Ð �EÓ >Ù/DÓ/F€�Ð+Ñ,Ó FØ35Ð �%Ð/Ñ0Ó 5ðFð ×Ñ˜%×0Ñ0ðFð ×Ñ × 6Ñ 6ð	Fð
 ×"Ñ" E×$8Ñ$8ðFð ×Ñ × 1Ñ 1ðFð ×&Ñ&¨×(8Ñ(8ðFð ×+Ñ+¨U×-@Ñ-@ðFð ×Ñ˜E×/Ñ/ðFð ×%Ñ% u×':Ñ':ðFð × Ñ  %×"4Ñ"4ðFð ×Ñ˜5×-Ñ-ðFð  ×Ñ §¡ð!Fð$ ×#Ñ# U§_¡_ð%Fð( ×!Ñ! 5×#5Ñ#5ð)Fð* ×Ñ §¡ð+Fð, ×Ñ˜eŸo™oð-Fð. ×Ñ˜e×4Ñ4ð/Fð2 ×Ñ˜×(Ñ(ð3Fð6 ×Ñ˜×+Ñ+ñ7F€��t˜D Ñ/°°i±Ð@ÑAÑBó ð>	Û$àDIÇOÁO€O�G×-Ñ-×@Ñ@ÑAð
 ×Ñð+ 	Ð*:Ñ ;ò +ó ð+ô&!E˜E×1Ñ1ô !EôH&�u×/Ñ/ô &ô&MÐ.õ Møð_ ò 	Ùð	ús   É'K ËKËK