+
    iHàjö9  ã                  óÀ  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIH	t	H
t
 ^ RIHt ^ RIHtHt ^ RIHtHt ^ RIHt Rs/ tR]R	&   ]P0                  ! 4       t^ tR
t ! R R4      tR R ltR.R R lltR R ltR R lt  ! R R4      t! ! R R4      t"R R lt#R R lt$R t%Rs&R]R&   R  R! lt'R" R# lt(R$ R% lt)R/R&R'R(R)/R* R+ lllt*R, R- lt+]!! 4       t,. R0Ot-R# )1ar  Process-level bootstrap helpers for ``run_agent``.

Lazy OpenAI SDK import (``_OpenAIProxy`` keeps ``isinstance`` and
``patch("agent.process_bootstrap.OpenAI")`` working), crash-resistant stdio
(``_SafeWriter``), env-only HTTP proxy resolution, and the httpcore backend that
runs sync httpx connects through the process-wide Happy Eyeballs racer
(``hermes_bootstrap``).
)ÚannotationsN)ÚAnyÚOptional)Ú!_happy_eyeballs_create_connection)Úbase_url_hostnameÚnormalize_proxy_url)Úfirst_proxy_env_valueÚshould_bypass_proxy)Ú_ThreadRoutingStreamzdict[tuple, Any]Ú_SHARED_TRANSPORTSÚhermes_transport_ownerc                  óH   € ] tR t^(tRtR tR tRR R lltR tR R	 lt	R
t
R# )Ú_HappyEyeballsSyncBackendzDhttpcore sync backend with concurrent IPv6/IPv4 connection fallback.c                	ó   € R V n         R # ©N©Ú	_fallback©Úselfs   &Ú</home/ubuntu/.hermes/hermes-agent/agent/process_bootstrap.pyÚ__init__Ú"_HappyEyeballsSyncBackend.__init__+   s	   € ØˆŽó    c                	óZ   € V P                   f   ^ RIHp V! 4       V n         V P                   # )N)ÚSyncBackend)r   Úhttpcorer   )r   r   s   & r   Ú_default_backendÚ*_HappyEyeballsSyncBackend._default_backend.   s"   € Ø�>‰>Ò!Ý,Ù(›]ˆDŒNØ�~‰~Ðr   Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )	é   ÚhostÚstrÚportÚintÚtimeoutzOptional[float]Úlocal_addressúOptional[str]© )Úformats   "r   Ú__annotate__Ú&_HappyEyeballsSyncBackend.__annotate__4   s)   € ÷  ñ   ð  ¨3ð  ¸ð  Ð`mñ  r   c                	ó   € ^ RI HpHp ^ RIHp Vf   RMV^ 3p	 \        W3Y9T;'       g    RR7      p
T! T
4      #   \         d   pT! \        T4      4      ThRp?i\         d   pT! \        T4      4      ThRp?ii ; i)é    )ÚConnectErrorÚConnectTimeout)Ú
SyncStreamN)Úsource_addressÚsocket_optionsr'   )	r   r-   r.   Úhttpcore._backends.syncr/   r   ÚTimeoutErrorr!   ÚOSError)r   r    r"   r$   r%   r1   r-   r.   r/   r0   ÚsockÚexcs   &&&&&&      r   Úconnect_tcpÚ%_HappyEyeballsSyncBackend.connect_tcp4   s…   € ç9Ý6Ø!.Ò!6™¸]ÈAÐ<Nˆð	2Ü4°d°\À7ØDR×DXÐDXÐVXôZˆDñ ˜$ÓÐøô	 ô 	4Ù ¤ S£Ó*°Ð3ûÜô 	2Ùœs 3›xÓ(¨cÐ1ûð	2ús'   š; »A=ÁAÁA=Á%A=Á&A8Á8A=c                	óB   € V P                  4       P                  ! V/ VB # r   )r   Úconnect_unix_socket©r   ÚargsÚkwargss   &*,r   r:   Ú-_HappyEyeballsSyncBackend.connect_unix_socketB   s!   € Ø×$Ñ$Ó&×:Ò:¸DÐKÀFÑKÐKr   c               ó    € V ^8„  d   QhRRRR/# )r   ÚsecondsÚfloatÚreturnÚNoner'   )r(   s   "r   r)   r*   E   s   € ÷ /ñ /˜Uð / tñ /r   c                	óD   € V P                  4       P                  V4       R # r   )r   Úsleep)r   r@   s   &&r   rE   Ú_HappyEyeballsSyncBackend.sleepE   s   € Ø×ÑÓ×%Ñ% gÖ.r   r   )NNN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r7   r:   rE   Ú__static_attributes__r'   r   r   r   r   (   s$   † ÙNòò÷ òL÷/ñ /r   r   c               ó    € V ^8„  d   QhRRRR/# )r   Úbase_urlr!   rB   Úboolr'   )r(   s   "r   r)   r)   I   s   € ÷ rñ r¨#ð r°$ñ rr   c                ó‚   € \        V 4      P                  4       R 8H  ;'       d    R\        V 4      P                  4       9   # )zchatgpt.comz/backend-api/codex)r   Úlowerr!   )rN   s   &r   Ú_uses_codex_cloud_transportrR   I   s9   € Ü˜XÓ&×,Ñ,Ó.°-Ñ?×qÐqÐDXÔ\_Ð`hÓ\i×\oÑ\oÓ\qÑDqÐqr   c               ó    € V ^8„  d   QhRRRR/# )r   Úskip_pool_typesÚtuplerB   rC   r'   )r(   s   "r   r)   r)   M   s   € ÷ 	<ñ 	<°uð 	<Àdñ 	<r   c                ó¨   € \        V RR4      pVeA   \        VR4      '       d-   V'       d   \        W!4      '       g   \        4       Vn        R# R# R# R# )a  Install the racing backend on one httpx transport.

Reaches into private ``transport._pool._network_backend`` (httpcore pinned
1.0.x); hasattr-guarded so an incompatible httpcore degrades to the default
serial backend. Pools of ``skip_pool_types`` (proxies) are left alone.
Ú_poolNÚ_network_backend)ÚgetattrÚhasattrÚ
isinstancer   rX   )Ú	transportrT   Úpools   && r   Ú_enable_happy_eyeballsr^   M   sK   € ô �9˜g tÓ,€DØÒœG DÐ*<×=Ò=ÇÔ[eÐfj×[|Ò[|Ü 9Ó ;ˆÖñ \}Ñ=Ñr   c               ó   € V ^8„  d   QhRR/# ©r   rB   rC   r'   )r(   s   "r   r)   r)   Y   s   € ÷ <ñ <¨tñ <r   c           	     óv  €  ^ RI p\        ;QJ d,    . R \        VRR4      \        VRR4      3 4       F  NK  	  5M%! R \        VRR4      \        VRR4      3 4       4      p\        T RR4      .\        T RR4      ;'       g    / P	                  4       O F  p\        Y24       K  	  R#   \         d     R# i ; i)u£  Install the racing backend on every direct transport of a ready-built httpx.Client.

For callers that build clients inline (Codex OAuth/device-login). Proxy-backed
pools are skipped (TCP connect goes to the proxy host); async clients need
nothing (anyio already races per RFC 8305). Best-effort.

Proxy-backed transports (``httpcore.HTTPProxy`` / SOCKS pools) are left untouched: with a proxy in play
the TCP connect goes to the proxy host, which is out of scope for the direct-transport racing added in
#94388. Async clients are also left untouched â€” httpcore's async backend already performs RFC 8305
racing natively via ``anyio.connect_tcp(happy_eyeballs_delay=0.25)``.
Nc              3  ó0   "  € T F  qf   K  Vx € K  	  R # 5ir   r'   )Ú.0Úts   & r   Ú	<genexpr>Ú2enable_happy_eyeballs_on_client.<locals>.<genexpr>g   s   é € ð !wÙd�!�AŠAÓdùs   ‚Œ
Ú	HTTPProxyÚ
SOCKSProxyÚ
_transportÚ_mounts)r   rU   rY   Ú	ExceptionÚvaluesr^   )Úclientr   Úproxy_pool_typesr\   s   &   r   Úenable_happy_eyeballs_on_clientro   Y   sÂ   € ðÛß œ5ñ !wÜ ¨+°tÓ<¼gÀhÐP\Ð^bÓ>cÑdó!wŸ5™5ñ !wÜ ¨+°tÓ<¼gÀhÐP\Ð^bÓ>cÑdó!wó wÐô ˜f l°DÓ9Ðn¼WÀVÈYÐX\Ó=]×=cÐ=cÐac×<kÑ<kÓ<mÓnˆ	Ü˜yÖ;ó oøô ô Úðús   ‚B) ‘AB) Â)B8Â7B8c               ó   € V ^8„  d   QhRR/# )r   rB   Útyper'   )r(   s   "r   r)   r)   o   s   € ÷ ñ ˜$ñ r   c                 ó*   € \         f   ^ RIHs  \         # )z#Import and cache ``openai.OpenAI``.)ÚOpenAI)Ú_OPENAI_CLS_CACHEÚopenairs   r'   r   r   Ú_load_openai_clsrv   o   s   € ô Ò Ý6ÜÐr   c                  ó0   € ] tR t^wtRtRtR tR tR tRt	R# )Ú_OpenAIProxyzHModule-level proxy that looks like ``openai.OpenAI`` but imports lazily.c                	ó"   € \        4       ! V/ VB # r   )rv   r;   s   &*,r   Ú__call__Ú_OpenAIProxy.__call__|   s   € ÜÔ! 4Ð2¨6Ñ2Ð2r   c                	ó*   € \        V\        4       4      # r   )r[   rv   )r   Úobjs   &&r   Ú__instancecheck__Ú_OpenAIProxy.__instancecheck__   s   € Ü˜#Ô/Ó1Ó2Ð2r   c                	ó   € R # )z<lazy openai.OpenAI proxy>r'   r   s   &r   Ú__repr__Ú_OpenAIProxy.__repr__‚   s   € Ù+r   r'   N)
rG   rH   rI   rJ   rK   Ú	__slots__rz   r~   r�   rL   r'   r   r   rx   rx   w   s   † ÙRà€Iò3ò3ö,r   rx   c                  óB   € ] tR t^†tRtR
tR tR tR tR t	R t
R tRtR	# )Ú_SafeWriteru8  Transparent stdio wrapper swallowing OSError/ValueError from broken pipes.

Headless runs (systemd, Docker) lose the stdout pipe â†’ ``OSError: [Errno 5]``;
subagent threads can see the shared handle close â†’ ``ValueError``. Either
would otherwise crash the agent (often via double-fault in an except handler).
c                	ó4   € \         P                  V R V4       R# )Ú_innerN)ÚobjectÚ__setattr__©r   Úinners   &&r   r   Ú_SafeWriter.__init__�   s   € Ü×Ñ˜4 ¨5Ö1r   c                	ó²   €  V P                   P                  V4      #   \        \        3 d)    \	        T\
        4      '       d   \        T4      u # ^ u # i ; i)r,   )r‡   Úwriter4   Ú
ValueErrorr[   r!   Úlen)r   Údatas   &&r   rŽ   Ú_SafeWriter.write“   sK   € ð	=Ø—;‘;×$Ñ$ TÓ*Ð*øÜœÐ$ô 	=Ü *¨4´× 5Ò 5”3�t“9Ò<¸1Ò<ð	=ús   ‚ �2AÁAÁAc                	ól   €  V P                   P                  4        R #   \        \        3 d     R # i ; ir   )r‡   Úflushr4   r�   r   s   &r   r”   Ú_SafeWriter.flush™   s.   € ð	Ø�K‰K×ÑÖøÜœÐ$ô 	Úð	ús   ‚ ž3²3c                	ó6   € V P                   P                  4       # r   )r‡   Úfilenor   s   &r   r—   Ú_SafeWriter.filenoŸ   s   € Ø�{‰{×!Ñ!Ó#Ð#r   c                	óh   €  V P                   P                  4       #   \        \        3 d     R # i ; i)F)r‡   Úisattyr4   r�   r   s   &r   rš   Ú_SafeWriter.isatty¢   s1   € ð	Ø—;‘;×%Ñ%Ó'Ð'øÜœÐ$ô 	Úð	ús   ‚ œ1°1c                	ó.   € \        V P                  V4      # r   ©rY   r‡   )r   Únames   &&r   Ú__getattr__Ú_SafeWriter.__getattr__¨   s   € Ü�t—{‘{ DÓ)Ð)r   r'   N)r‡   )rG   rH   rI   rJ   rK   rƒ   r   rŽ   r”   r—   rš   rŸ   rL   r'   r   r   r…   r…   †   s,   † ñð €Iò2ò=òò$òö*r   r…   c               ó   € V ^8„  d   QhRR/# )r   rB   r&   r'   )r(   s   "r   r)   r)   ¬   s   € ÷ 9ñ 9˜]ñ 9r   c                 ó@   € \        4       p V '       d   \        V 4      # R# )zYFirst configured proxy URL from HTTPS_PROXY / HTTP_PROXY / ALL_PROXY (any case), or None.N)r   r   )Úvalues    r   Ú_get_proxy_from_envr¤   ¬   s   € ä!Ó#€Eß).Ô˜uÓ%Ð8°DÐ8r   c               ó    € V ^8„  d   QhRRRR/# )r   rN   r&   rB   r'   )r(   s   "r   r)   r)   ²   s   € ÷ Wñ W mð W¸ñ Wr   c                óœ   € \        4       pV'       d	   V '       g   V# V P                  4       p\        RV9   d   TMRV 24      '       d   R# T# )z›Env-configured proxy unless NO_PROXY excludes this base URL (same matcher as the
gateway adapters: CIDR, ``*.`` wildcards and host:port entries all count).ú://z//N)r¤   Ústripr	   )rN   ÚproxyÚraws   &  r   Ú_get_proxy_for_base_urlr«   ²   sF   € ô  Ó!€Eß—hØˆØ
�.‰.Ó
€CÜ&¨e°s¬l¡sÀ"ÀSÀEÀ
×KÒKˆ4ÐVÐQVÐVr   c                 ó|   € \         e   \         # ^ RIp  ! R RV P                  4      pR;Vn        Vn        Vs \         # )zGLazily define the per-client transport view (httpx import is deferred).Nc                  óX   € ] tR t^ÃtRtR
tR R lt]R R l4       tR R lt	R R	 lt
R
tR# )Ú3_shared_transport_cls.<locals>._SharedTransportImplaí  Per-client view of a process-shared ``httpx.HTTPTransport``.

``httpx.Client.close()`` closes every mounted transport, and each OpenAI client still
owns its own ``httpx.Client`` (closing one client must never poison the next), so the
mounted object absorbs that close while the shared pool keeps serving other clients.
``handle_request`` stamps the owning view into ``request.extensions`` so socket-abort
sweeps target only this client's in-flight connections on the shared pool.

See #10933.
c               ó    € V ^8„  d   QhRRRR/# )r   r‹   r   rB   rC   r'   )r(   s   "r   r)   Ú@_shared_transport_cls.<locals>._SharedTransportImpl.__annotate__Ñ   s   € ÷ 	!ñ 	! #ð 	!¨$ñ 	!r   c                	ó    € Wn         R V n        R# )FN)r‡   Ú_closedrŠ   s   &&r   r   Ú<_shared_transport_cls.<locals>._SharedTransportImpl.__init__Ñ   s   € ØŒKØ ˆDŽLr   c               ó   € V ^8„  d   QhRR/# )r   rB   r   r'   )r(   s   "r   r)   r°   Ö   s   € ÷ 	7ñ 	7˜3ñ 	7r   c                	ó0   € \        V P                  R R4      # )rW   Nr�   r   s   &r   rW   Ú9_shared_transport_cls.<locals>._SharedTransportImpl._poolÕ   s   € ä˜4Ÿ;™;¨°Ó6Ð6r   c               ó    € V ^8„  d   QhRRRR/# )r   Úrequestr   rB   r'   )r(   s   "r   r)   r°   Ù   s   € ÷ 	7ñ 	7¨#ð 	7°#ñ 	7r   c                	óª   € V P                   '       d   \        R 4      h\        V 4      VP                  \        &   V P
                  P                  V4      # )z5Cannot send a request, as the client has been closed.)r²   ÚRuntimeErrorÚidÚ
extensionsÚHERMES_TRANSPORT_OWNER_EXTr‡   Úhandle_request)r   r¸   s   &&r   r¾   ÚB_shared_transport_cls.<locals>._SharedTransportImpl.handle_requestÙ   sA   € Ø�|�|ˆ|Ü"Ð#ZÓ[Ð[Ü=?À»XˆG×ÑÔ9Ñ:Ø—;‘;×-Ñ-¨gÓ6Ð6r   c               ó   € V ^8„  d   QhRR/# r`   r'   )r(   s   "r   r)   r°   ß   s   € ÷ 	 ñ 	 ˜4ñ 	 r   c                	ó   € R V n         R# )TN)r²   r   s   &r   ÚcloseÚ9_shared_transport_cls.<locals>._SharedTransportImpl.closeß   s   € ð  ˆDŽLr   )r²   r‡   N)rG   rH   rI   rJ   rK   rƒ   r   ÚpropertyrW   r¾   rÂ   rL   r'   r   r   Ú_SharedTransportImplr®   Ã   s6   † ñ		ð *ˆ	õ	!ð 
ô	7ó 
ð	7õ	7÷	 ñ 	 r   rÅ   Ú_SharedTransport)rÆ   ÚhttpxÚBaseTransportrG   rI   )rÇ   rÅ   s     r   Ú_shared_transport_clsrÉ   ¼   sH   € ô Ò#ÜÐÛô ˜u×2Ñ2ô  ðB I[ÐZÐÔ!Ð$8Ô$EØ+ÐÜÐr   r   rÆ   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rN   r!   Úverifyr   r©   r&   rB   rU   r'   )r(   s   "r   r)   r)   ì   s.   € ÷ Fñ F Cð F°ð F¸]ð FÈuñ Fr   c                óŠ   € VRJ g   VRJ d   TpM(\        V\        4      '       d   RV3pMR\        V4      3pW2\        V 4      3# )zDIdentity under which sync direct transports are pooled process-wide.TFÚpathr»   )r[   r!   r»   rR   )rN   rË   r©   Ú
verify_keys   &&& r   Ú_shared_transport_keyrÏ   ì   sJ   € à�ƒ~˜ 5›Ø ‰
Ü	�FœC×	 Ò	 Ø˜fÐ%‰
àœB˜v›JÐ'ˆ
ØÔ:¸8ÓDÐEÐEr   c               ó    € V ^8„  d   QhRRRR/# )r   ÚkeyrU   rB   r   r'   )r(   s   "r   r)   r)   ÷   s   € ÷ ñ ˜uð °ñ r   c                óâ   € \         ;_uu_ 4        \        P                  V 4      pVf)   V! 4       p\        \        4      \        8  d
   V\        V &   VuuR R R 4       #   + '       g   i     R # ; ir   )Ú_SHARED_TRANSPORTS_LOCKr   Úgetr�   Ú_SHARED_TRANSPORTS_MAX)rÑ   Úbuildr\   s   && r   Ú_get_shared_transportr×   ÷   sQ   € ß	 Ö	 Ü&×*Ñ*¨3Ó/ˆ	ØÒÙ›ˆIÜÔ%Ó&Ô)?Ô?Ø*3Ô" 3Ñ'Ø÷ 
!×	 ×	 Ó	 ús   �AAÁA.	c               ó   € V ^8„  d   QhRR/# )r   rB   r#   r'   )r(   s   "r   r)   r)     s   € ÷ 
ñ 
 ñ 
r   c                 ó&  € \         ;_uu_ 4        \        \        P                  4       4      p \        P	                  4        RRR4       X  F  p VP                  4        K  	  \        V 4      #   + '       g   i     L5; i  \         d     KD  i ; i)zEReally close every process-shared transport (test teardown / atexit).N)rÓ   Úlistr   rl   ÚclearrÂ   rk   r�   )Ú
transportsr\   s     r   Úclose_shared_transportsrÝ     sp   € ç	 Ö	 ÜÔ,×3Ñ3Ó5Ó6ˆ
Ü× Ñ Ô"÷ 
!ó  ˆ	ð	Ø�O‰OÖñ  ô
 ˆz‹?Ð÷ 
!×	 ûô ô 	Úð	ús   �2A.ÁBÁ.A>	ÂBÂBÚ
async_modeFrË   Tc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rN   r!   rÞ   rO   rË   r   rB   zOptional[Any]r'   )r(   s   "r   r)   r)     s*   € ÷ =ñ =¨#ð =À4ð =ÐY\ð =Ðhuñ =r   c          
     ó  aaaa€  ^ RI p\        V 4      pVP                  ^^dRR7      pVP                  RRRRR7      pV'       d   VP                  MVP
                  oV'       d   VP                  MVP                  pRp^ RIH	p	 V	! WR7      p
V
'       d   \        P                  ! WzR	7      pVf­   V'       * ;'       d    \        V 4      oV'       d   TMVP                  ^2R
RR7      oVVVV3R lpV'       d   RV! 4       RV! 4       /pMR\        V SV4      p\        4       pR Uu/ uF  pV R2V! \        V.VO5V4      4      bK  	  ppV! WVVR,          VR7      # T! YVYH;'       g    RSR7      # u upi   \          d     R# i ; i)a´  httpx client for OpenAI SDK calls with env-only proxy policy (None on failure).

Explicit no-proxy mounts disable httpx's ``trust_env`` path so macOS system
proxies (which omit the ExceptionsList) are never applied. ``keepalive_expiry``
reaps idle connections before reverse proxies' 30-60 s timeouts (a custom
socket_options transport broke streaming and stripped TCP_NODELAY). ``verify``
goes on the client AND the mounts, since a mounted transport owns its SSL context.

Every call returns a NEW ``httpx.Client`` (per-client close semantics), but sync clients
with the same (verify, proxy, happy-eyeballs) identity mount the SAME underlying
``HTTPTransport`` through a ``_SharedTransport`` view, so N delegated children share one
connection pool + SSL context. Async clients are never shared: an httpcore async pool is
bound to the event loop that first used it. Proxy-backed clients keep httpx's own transport.

See #12952, #54049.
See #10933.
Ng      4@)Úmax_keepalive_connectionsÚmax_connectionsÚkeepalive_expiryg      .@g      $@)ÚconnectÚreadrŽ   r]   )Úcodex_request_compression_hooks)rÞ   )Úevent_hooksiè  c                 óB   <€ S! SSR 7      p S'       d   \        V 4       V # ))rË   Úlimits)r^   )r\   Údirect_limitsÚhappy_eyeballsÚtransport_clsrË   s    €€€€r   Ú_build_directÚ2build_keepalive_http_client.<locals>._build_direct6  s    ø€ Ù)°ÀÔN�	ç!Ü*¨9Ô5Ø Ð r   zhttp://zhttps://r§   )ré   r$   r\   Úmounts)ré   r$   r©   rï   rË   )ÚhttpÚhttps)rÇ   r«   ÚLimitsÚTimeoutÚAsyncHTTPTransportÚHTTPTransportÚAsyncClientÚClientÚagent.codex_headersræ   Ú	functoolsÚpartialrR   rÏ   rÉ   r×   rk   )rN   rÞ   rË   rÇ   r©   ré   r$   Ú
client_clsrï   ræ   Úhooksrí   rÑ   Úview_clsÚschemerê   rë   rì   s   &$d            @@@r   Úbuild_keepalive_http_clientrÿ     s‰  û€ ð$+ÛÜ'¨Ó1ˆØ—‘¸ÈCÐbf�ÓgˆØ—-‘-¨°4¸tÈ$�-ÓOˆß4>˜×0Ò0ÀE×DWÑDWˆß*4�U×&Ò&¸%¿,¹,ˆ
ØˆåGÙ/°ÔPˆßÜ"×*Ò*¨:ÔIˆJØŠ=Ø!+œ^×UÐUÔ0KÈHÓ0UˆN÷ '1™F°e·l±lØ*,¸dÐUYð 7Có 7ˆM÷!ð !÷ Ø#¡]£_°jÁ-Ã/ÐR‘ä+¨H°f¸eÓD�Ü0Ó2�ñ #4óá"3˜ð �h˜c�N¡HÔ-BÀFÀ>ÈSÁ>ÐS`Ó-aÓ$bÒbÙ"3ð ð ñ "¨ÈFÐS]ÕL^ÐgmÔnÐnÙ ÀÏnÈnÐX\ÐekÔlÐlùòøô ô ÚðúsN   †?E8 ÁE8 Á&AE8 Ã E8 Ã&E8 Ã;,E8 Ä'#E3Å
E8 ÅE8 Å*E8 Å3E8 Å8FÆFc               ó   € V ^8„  d   QhRR/# r`   r'   )r(   s   "r   r)   r)   N  s   € ÷ ;ñ ;˜Tñ ;r   c                 ó¶   € R FR  p \        \        V R4      pVf   K  \        V\        \        34      '       d   K8  \        \        V \        V4      4       KT  	  R# )zHWrap stdout/stderr so best-effort console output cannot crash the agent.N)ÚstdoutÚstderr)rY   Úsysr[   r…   r
   Úsetattr)Ústream_nameÚstreams     r   Ú_install_safe_stdior  N  sC   € ã+ˆÜœ˜k¨4Ó0ˆàÔ¤j°¼+ÔG[Ð9\×&]Ô&]Ü”C˜¤k°&Ó&9Ö:ó	 ,r   )r'   )Ú )
rs   rx   r…   r«   r¤   r  rv   rÿ   rÝ   ro   ).Ú__conditional_annotations__rK   Ú
__future__r   rù   Úsocketr  Ú	threadingÚtypingr   r   Úhermes_bootstrapr   Úutilsr   r   Úagent.proxy_bypassr   r	   Úagent.thread_scoped_outputr
   rt   r   Ú__annotations__ÚLockrÓ   rÕ   r½   r   rR   r^   ro   rv   rx   r…   r¤   r«   rÉ   rÆ   rÏ   r×   rÝ   rÿ   r  rs   Ú__all__)r
  s   @r   Ú<module>r     sî   øðôõ #ã Û Û 
Û ß  å >ß 8ß IÝ ;ð Ð ð (*Ð Ð$Ó )Ø#Ÿ.š.Ó*Ð ØÐ ð 6Ð ÷/ñ /õBr÷	<õ<õ,÷,ñ ,÷#*ñ #*õL9õWò*ðZ Ð �#Ó õFõõ
ñ=È%ð =Ð_c÷ =ð =õ@;ñ 
‹€ò‚r   