
    Cj@             E          S SK r S SKrS SKJr  S SKJrJrJrJrJ	r	J
r
JrJrJrJrJr  S SKrS SKJr  S SKrS SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJ r J!r!  S SK"J#r#  S SK$J%r%  S SK&J'r'  S SK(J)r)  S SK*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3  \(       a  S SK*J4r4  O\5r4S SK6J7r7  S SK8J9r9  S SK:J;r;  S SK<7  S SK=J>r>  S SK?J@r@JArA  \(       a  S SKBJCrD  O\rDSSKEJFrF  \%" 5       rG\'" 5       rHS\\   S\I4S jrJ SeS\54S jjrK                       SfS\\5\/4   S \5S!\\
\.      S"\\5   S#\\L   S$\\,   S%\\\5\4      S&\\I   S'\\5   S(\\-   S)\\I   S*\\I   S+\\I   S,\\M   S-\S.   S/\\2   S\\	\3      S0\\M   S1\\S2      S3\\5   S4\\\5\4      S5\\\5\4      S6\\\5\4      S7\\\M\R                  4      S8\\5   S\\1\F4   44S9 jjrO\A                          SgS\\5\/4   S \5S!\\
\.      S"\\5   S#\\L   S$\\,   S%\\\5\4      S&\\I   S'\\5   S(\\-   S)\\I   S*\\I   S+\\I   S,\\M   S-\S.   S:\\\S;   \P4      S/\\2   S\\	\3      S0\\M   S1\\S2      S3\\5   S<\\5   S=\\5   S4\\\5\4      S5\\\5\4      S6\\\5\4      S7\\\M\R                  4      S8\\5   S\\1\F4   4:S> jj5       rQS\\5\/4   S \5S8\\5   S?\\   S@\\5\4   SA\\5\4   S\R\\5\/4   \5\\5   4   4SB jrSSCrTS \5S\R\5\I4   4SD jrUS@\\5\4   S\I4SE jrVS \5S8\\5   SF\>SA\\5\4   S\R\5\\5   4   4
SG jrWS\\5\/4   S\\	\3      S@\\5\4   SA\\5\4   S\R\\5\/4   \\	\3      4   4
SH jrXS\\	\3      S\\5\/4   S \5S!\\
\.      S"\\5   S#\\L   S$\\,   S%\\\5\4      S&\\I   S'\\5   S(\\-   S)\\I   S*\\I   S+\\I   S,\\M   S-\S/\\2   S0\\M   S1\\S2      S3\\5   S4\\\5\4      S5\\\5\4      S6\\\5\4      S7\\\M\R                  4      S8\\5   S@\\5\4   SI\IS\\   48SJ jrYS\\	\3      S\\5\/4   S \5SK\\#   SL\IS!\\
\.      S"\\5   S#\\L   S$\\,   S%\\\5\4      S&\\I   S'\\5   S(\\-   S)\\I   S*\\I   S+\\I   S,\\M   S-\S/\\2   S0\\M   S1\\S2      S3\\5   S<\\5   S=\\5   S:\\\\   \P4      SM\\
\5      S4\\\5\4      S5\\\5\4      S6\\\5\4      S7\\\M\R                  4      S8\\5   S@\\5\4   SI\IS\\   4DSN jrZ\A                           ShS\\5\/4   S \5S!\\
\.      S"\\5   S#\\L   S$\\,   S%\\\5\4      S&\\I   S'\\5   S(\\-   S)\\I   S*\\I   S+\\I   S,\\M   S-\S.   S:\\\S;   \P4      S/\\2   S\\	\3      S0\\M   S1\\S2      S3\\5   S<\\5   S=\\5   S4\\\5\4      S5\\\5\4      S6\\\5\4      S7\\\M\R                  4      SM\\
\5      S8\\5   4:SO jj5       r[\A     SiSP\5S4\\\5\4      S5\\\5\4      S6\\\5\4      S7\\\M\R                  4      S8\\5   S\\4SQ jj5       r]\A     SiSP\5S4\\\5\4      S5\\\5\4      S6\\\5\4      S7\\\M\R                  4      S8\\5   S\\\\\\\\4   4   4SR jj5       r^\A     SiSP\5S4\\\5\4      S5\\\5\4      S6\\\5\4      S7\\\M\R                  4      S8\\5   S\14SS jj5       r_\A     SiSP\5S4\\\5\4      S5\\\5\4      S6\\\5\4      S7\\\M\R                  4      S8\\5   S\\1\\\\14   4   4ST jj5       r`\A        SjSP\5SU\\5   SV\\5   S!\\
\5      SW\LSX\SY   S4\\\5\4      S7\\\M\R                  4      S8\\5   S\4SZ jj5       ra\A        SjSP\5SU\\5   SV\\5   S!\\
\5      SW\LSX\SY   S4\\\5\4      S7\\\M\R                  4      S8\\5   S\\\\\\4   4   4S[ jj5       rb\A     SiSP\5S4\\\5\4      S5\\\5\4      S6\\\5\4      S7\\\M\R                  4      S8\\5   S\14S\ jj5       rc\A     SiSP\5S4\\\5\4      S5\\\5\4      S6\\\5\4      S7\\\M\R                  4      S8\\5   S\\1\\\\14   4   4S] jj5       rd\A       SkS\\5\/4   S \5S"\\5   S'\\5   S4\\\5\4      S5\\\5\4      S6\\\5\4      S7\\\M\R                  4      S8\\5   S\14S^ jj5       re\A       SkS\\5\/4   S \5S"\\5   S'\\5   S4\\\5\4      S5\\\5\4      S6\\\5\4      S7\\\M\R                  4      S8\\5   S\\1\\\\14   4   4S_ jj5       rfS@\PS\P4S` jrg\A   SlS \5Sa\Sb\\5   Sc\\5   S7\\M   4
Sd jj5       rhg)m    N)partial)TYPE_CHECKINGAny	CoroutineDictIterableListLiteralOptionalTypeUnioncast)	BaseModel)verbose_logger)%LiteLLMResponsesTransformationHandler)request_timeout)run_async_function)Logging)*update_responses_input_with_model_file_ids*update_responses_tools_with_model_file_ids)BaseResponsesAPIConfig)BaseLLMHTTPHandler)&LiteLLMCompletionTransformationHandler)ResponsesAPIRequestUtils)	AllMessageValuesPromptObject	ReasoningResponseIncludableResponseInputParam!ResponsesAPIOptionalRequestParamsResponsesAPIResponse
ToolChoice	ToolParam)ResponseText)get_litellm_params)infer_openai_data_residency)get_secret_str)*)GenericLiteLLMParams)ProviderConfigManagerclient)Tool   )!BaseResponsesAPIStreamingIteratortoolsreturnc                 6    U (       d  g[        S U  5       5      $ )z;Return True if any tool in the list has type 'file_search'.Fc              3   x   #    U  H0  n[        U[        5      =(       a    UR                  S 5      S:H  v   M2     g7f)typefile_searchN)
isinstancedictget).0ts     h/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/litellm/responses/main.py	<genexpr>(_has_file_search_tool.<locals>.<genexpr>Q   s,     Uu!z!T"EquuV}'EEus   8:)anyr/   s    r:   _has_file_search_toolr?   M   s    UuUUU    mock_responsec                     [        S,0 0 SS_SS_SS_SS_S	S _S
S _SS _SS _SS_SSSSSSU / S./S./_SS_SS _SS S S._SS_SS_SSS S00_S!S"_/ SS#S$S%S&0S'S(S&0S)S*.S 0 S+.ED6$ )-Nid5resp_67ccd2bed1ec8190b14f964abc0542670bb6a6b452d3795bobjectresponse
created_atigstatus	completederrorincomplete_detailsinstructionsmax_output_tokensmodelzgpt-4.1-2025-04-14outputmessage4msg_67ccd2bf17f0819081ff3bb2cf6508e60bb6a6b452d3795b	assistantoutput_text)r3   textannotations)r3   rC   rH   rolecontentparallel_tool_callsTprevious_response_id	reasoning)effortsummarystoretemperatureg      ?rT   formatr3   tool_choiceautodisabled$   cached_tokensr   W   reasoning_tokens{   )input_tokensinput_tokens_detailsoutput_tokensoutput_tokens_detailstotal_tokens)r/   top_p
truncationusageusermetadata )r!   rA   s    r:   mock_responses_api_responsert   T   sU      .,
I,
j,
 *,
 k	,

 T,
 !$,
 D,
  ,
 ),
 %P)' %2$1+- ,
2 "43,
4 #D5,
6 DT:7,
8 T9,
: 3;,
< X/0=,
> 6?,
@ $ ")8!(<!#*<a)@ # W,
. .r@   inputrN   includerL   rM   promptrq   rX   rY   rZ   r]   
backgroundstreamr^   rT   r$   r`   rm   rn   )ra   rb   rp   extra_headersextra_query
extra_bodytimeoutcustom_llm_providerc                   #    SSK Jn  UR                  U5      u  nnUR                  S5      =(       d!    UR                  S0 5      R                  S5      nSnSnUR                  S5      n U (       a/  [	        U [
        5      (       a  [        R                  " U US9u  nnn!n!UR                  UUUR                  S5      UUS	9I Sh  vN u  n"n#UR                  U"5      n$U$(       d  U(       a  U$U-   OSn%0 S
U_SU_SU_SU_SU_SU_SU	_SU
_SU_SU_SU_SU_SU_SU_SU_SU_SU_UUUUS.EUEn&U(       a_  U(       aX  SSK
Jn'  SSKJn(  SU'R                  5       R                  SS  3n)U(" UUU)U"S 9I Sh  vN n*UR                   " S4U UU%UU*U&UU#S!.UD6$ [#        U5      =(       a    UR%                  US"9n+UR'                  U&U+S#9n,[)        S4U UU%US$.U,D6I Sh  vN n-[*        R,                  " S%U-5        U+(       Ga  [	        U-[.        5      (       Ga  UR1                  U-S&9n.U.(       Ga  UR                  S0 5      R                  S5      nUR                  S5      n [        R                  " U US9u  nnn/n0UR3                  U#U.UUUU/U0UR                  S'5      UR                  S5      S(9	I Sh  vN n1U1(       a  UR5                  U-U1U S)9n2UR7                  U&U=(       d    S*S+9n3/ n4U(       a  UR9                  U.U1S,9n4UR:                  " S4U2UU%U-R<                  S-.U3D6I Sh  vN n5U(       a:  U4(       a3  [?        U5S.5      (       d  [?        U5S/5      (       a  SS0KJ n6  U6" U#U5U4US19n5U5$ [	        U5[.        5      (       a.  UR                  UUUUS29I Sh  vN u  n7n!URC                  U5U7U1S39n5U5$ U-$  GN GN< GN GN	 N N*7f)5aa  
Async version of responses API with MCP integration.

When MCP tools with server_url="litellm_proxy" are provided, this function will:
1. Get available tools from the MCP server manager
2. Insert the tools into the messages/input
3. Call the standard responses API
4. If require_approval="never" and tool calls are returned, automatically execute them
r   LiteLLM_Proxy_MCP_Handleruser_api_key_authlitellm_metadataNsecret_fields)r   r/   litellm_trace_id)r   mcp_tools_with_litellm_proxyr   mcp_auth_headermcp_server_auth_headersrv   rL   rM   rw   rq   rX   rZ   r]   rx   ry   r^   rT   r`   rm   rn   rp   rz   )r{   r|   r}   r~   )uuid)create_mcp_list_tools_eventsmcp_   )r   r   base_item_idpre_processed_mcp_tools)ru   rN   	all_toolsr   mcp_discovery_eventscall_paramsrY   tool_server_map)r   )r   should_auto_execute)ru   rN   r/   rY   zInitial response %s)rF   litellm_call_id)	r   
tool_callsr   r   r   oauth2_headersraw_headersr   r   )rF   tool_resultsoriginal_inputF)r   original_stream_setting)r   r   )follow_up_inputrN   r   response_id	__aiter____iter__)MCPEnhancedStreamingIterator)r   base_iterator
mcp_eventsr   )r   r   r   r   )rF   mcp_tools_fetchedr   rr   )"/litellm.responses.mcp.litellm_proxy_mcp_handlerr   _parse_mcp_toolsr7   r5   r6   r    extract_mcp_headers_from_request+_process_mcp_tools_without_openai_transform_transform_mcp_tools_to_openailitellm._uuidr   ,litellm.responses.mcp.mcp_streaming_iteratorr   uuid4hex_create_mcp_streaming_responsebool_should_auto_execute_tools_prepare_initial_call_params
aresponsesr   debugr!   !_extract_tool_calls_from_response_execute_tool_calls_create_follow_up_input_prepare_follow_up_call_params_create_tool_execution_events_make_follow_up_callrC   hasattrr   $_add_mcp_output_elements_to_response)8ru   rN   rv   rL   rM   rw   rq   rX   rY   rZ   r]   rx   ry   r^   rT   r`   r/   rm   rn   rp   rz   r{   r|   r}   r~   kwargsr   r   other_toolsr   r   r   r   _original_mcp_toolsr   openai_toolsr   r   r   r   r   r   r   initial_call_paramsrF   r   r   raw_headers_from_requestr   r   follow_up_call_paramstool_execution_eventsfinal_responser   mcp_tools_for_outputs8                                                           r:   aresponses_api_with_mcpr      su    P 	"2259$
 

#67 6::B<	c
 
 &*OCGJJ/MM488 %EE'u
	
# (SS+%A$67' 7 T  	 -KKL
 0<{{*QUI7 	. 	&	
 	H 	2 	Y 	 	j 	& 	{ 	 	{ 	 	j  	!" 	#$ # 2+, -K4 .&	
 djjl..r234%A)E/%$6	&
  
 )GG 

)E!5#!5+

 

 
	
 $ 
#
>
>%A ?   4PP5H Q    1	
  H .9 z&    /PP Q 

  &

+=r B F F#!
 #JJ7M )II+'( ";!N!N /%"3 /(?-4 &

+< =!',>!? "O 
" 
L ";"S"S%LQV #T # .LL$/SX M  & )+%1OO'1 P  * (A'U'U ($3' (	(
 ,( " -<<">:>> &B(7&4#8*;	&N4 &%%  0DEE
 8cc*;5Q(70G	 d  , 2VV%3.B)5 W  # &%OW	b 
DL
B"Dsq   CON1B1O8N49A#ON7CO1N:2A2O$N=%A/ON?O4O7O:O=O?Otext_formatr   service_tiersafety_identifierc                   #    [        5       n [        R                  " 5       nSUS'   [        R                  " XS9nUb  UUS'   Uc/  [
        R                  " UUR                  SS5      S9u  nn  nUUS'   UR                  S	S5      n [        [        [           UR                  S
S5      5      n![        [        [           UR                  SS5      5      n"Un#[        U [        5      (       a  U R                  U!US9(       a  [        U [        5      (       a  SU S./n$O1U  V%s/ s H$  n%[        U%[        5      (       d  M  SU%;   d  M"  U%PM&     n$n%U R                  UU$UU!U"UR                  SS5      UR                  SS5      S9I Sh  vN u  nn&n'[        [         [        ["        4   U&5      n UU#:w  a  [
        R                  " US9u  nn  nUR%                  S
S5        U'US'   ['        [(        40 SU _SU_SU_SU_SU_SU_SU_SU_SU_SU	_SU
_S U_S!U_S"U_SU_S#U_S$U_S%U_S&U_SU_S'U_S(U_S)U_S*U_SU_S+U_S,U_UD6n([*        R,                  " 5       n)['        U)R.                  U(5      n*UR1                  SU*5      I Sh  vN n+[        R2                  " U+5      (       a  U+I Sh  vN n,OU+n,[        U,[4        5      (       a5  [        R6                  " U,UR                  S-0 5      US.9n,UU,R8                  S'   U,c  [;        S/U, 35      eU,$ s  sn%f  GN N Nn! [<         a  n-[
        R>                  " UUU-UUS09eSn-A-ff = f7f)1zK
Async: Handles responses API requests by reusing the synchronous function
Tr   r   rT   NrT   base_urlrN   api_baser~   litellm_logging_obj	prompt_idprompt_variablesr   non_default_paramsrp   rV   rW   rV   prompt_labelprompt_versionrN   messagesr   r   r   r   r   rN   _async_prompt_merged_paramsru   rN   rv   rL   rM   rw   rq   rX   rY   rZ   r]   rx   ry   r^   r`   r/   rm   rn   rz   r{   r|   r}   r   r   r   responses_api_responser   r~   z8Got an unexpected None response from the Responses API: rN   r~   original_exceptioncompletion_kwargsextra_kwargs) localsasyncioget_event_loopr   !convert_text_format_to_text_paramlitellmget_llm_providerr7   r   r   strr6   r5   LiteLLMLoggingObj"should_run_prompt_management_hooks async_get_chat_completion_promptr   r   popr   	responsescontextvarscopy_contextrunrun_in_executoriscoroutiner!   /_update_responses_api_response_id_with_model_id_hidden_params
ValueError	Exceptionexception_type).ru   rN   rv   rL   rM   rw   rq   rX   rY   rZ   r]   rx   ry   r^   rT   r   r`   r/   rm   rn   rp   r   r   rz   r{   r|   r}   r~   r   
local_varsloopr   r   r   r   original_modelclient_inputitemmerged_inputmerged_optional_paramsfuncctxfunc_with_contextinit_responserF   es.                                                 r:   r   r     s9    L JD
%%'#| (II#
 !%Jv &+2+C+CjnnZ&F,(A"Aq 1DJ,- %jj)>E#

;(EF	

;Mt0TU!2
 
!DDF E 
 %%%#68 !&  %!$- 28D.  %    *JJ%#)#!1#ZZ=%zz*:DA K  	& s$667FE&/6/G/Ge/T,&1JJ{D)4JF01

 
 	

 &
 0
 
 
 !4
 "6
  
 
 "
 
 $
  !
" $#
$ %
& '
( ")
* +
, (-
. $/
0 "1
2 3
4 !45
6 &7
8 0;
@ &&(#CGGT2"2249JKK}--**H$H h 455/__'/!',>!C$7H >QH##$9:J8*U  c b L +*  
$$ 3 (
 	

sy   MDL "L?LL:L LC<L L$L )L*A#L ML L L 
M$L<<MMr   r   r   c                 F   UR                  SS 5      nUb!  UR                  5        H	  u  pxXU'   M     XU4$ [        [        [           UR                  SS 5      5      n	[        [        [           UR                  SS 5      5      n
Un[        U [        5      (       a  SU S./nO1U  Vs/ s H$  n[        U[        5      (       d  M  SU;   d  M"  UPM&     nn[        U[        5      (       a  UR                  XS9(       a  UR                  UUUU	U
UR                  SS 5      UR                  S	S 5      S
9u  nnn[        [        [        [        4   U5      n XS'   XS'   X:w  a  [        R                  " US9u  nn  nX%S'   UR                  5        H	  u  pxXU'   M     XU4$ s  snf )Nr   r   r   rp   r   rV   r   r   r   r   ru   rN   r   r~   )r   itemsr   r   r   r7   r6   r5   r   r   get_chat_completion_promptr   r   r   r   )ru   rN   r~   r   r   r   async_mergedkeyvaluer   r   r   r   r   r   r   r   s                    r:   *_apply_prompt_management_to_responses_callr  N  s    ::;TBL&,,.JC#sO /000Xc]FJJ{D$ABIHTNFJJ7I4,PQN%9?E0R/S 
$% *0D.  	 
 . 

@
@ A   ::!%-ND9!::&6= ; 
		
" U3 223\B#7#7"+2+C+C%+P(A"Aq0C,-0668JC#sO 9 ,,,C
s   'FFFzopenai/chat_completions/c                     U R                  [        5      (       d  U S4$ U [        [        5      S nU(       d  U S4$ SU 3S4$ )u   
Strip `openai/chat_completions/<name>` → `openai/<name>` and return True when the
prefix was applied (same effect as use_chat_completions_api=True).
FNzopenai/T)
startswith/_OPENAI_CHAT_COMPLETIONS_RESPONSES_MODEL_PREFIXlen)rN   	remainders     r:   2_normalize_openai_chat_completions_responses_modelr    sR    
 KLLe|cIJLMIe|YK $&&r@   c                 <    U R                  SS5      n[        U5      $ )zQPop use_chat_completions_api; True when the chat-completions bridge is requested.use_chat_completions_apiN)r   r   )r   use_ccs     r:    _pop_use_chat_completions_api_kwr    s    ZZ2D9F<r@   litellm_paramsc                     Ub  UR                   (       d  Xl         [        R                  " U US9u  n nnnXS'   Ub  XBl        Ub  XRl        X4$ )N)rN   r  r~   )r~   r   r   api_keyr   )rN   r~   r  r   dynamic_api_keydynamic_api_bases         r:   %_resolve_model_provider_for_responsesr    sk     &~/Q/Q-@* 	  %	
 )<$%"!0#"2%%r@   c                    UR                  S5      n[        UR                  S5      [        5      (       a!  UR                  S0 5      R                  S5      OS n[        [        [
        [        4   [        U UUS95      n XS'   U(       aT  [        [        [        [              [        [        [        [        [        [
        [        4         U5      UUS95      nXS'   X4$ )Nmodel_file_id_mapping
model_inforC   )ru   model_idr  ru   )r/   r  r  r/   )r7   r5   r6   r   r   r   r   r   r   r   r#   r   r	   r   r   )ru   r/   r   r   r  model_info_ids         r:   _apply_managed_file_id_mappingr    s     #JJ'>? fjj.55 	

<$((.  c%%&2""7	
E  wXi()68Dc3h$895A&&;
 $7<r@   	_is_asyncc           
          SSK Jn  UR                  U S9(       d  g0 SU_SU_SU_SU_S	U_S
U_SU_SU_SU	_SU
_SU_SU_SU_SU_SU_SU_SU _UUUUUUUUS.EUEnU(       a  [        S0 UD6$ [	        [        40 UD6$ )zDReturn a response when MCP gateway handles the call; otherwise None.r   r   r>   Nru   rN   rv   rL   rM   rw   rq   rX   rY   rZ   r]   rx   ry   r^   rT   r`   r/   )rm   rn   rp   rz   r{   r|   r}   r~   rr   )r   r   _should_use_litellm_mcp_gatewayr   r   )r/   ru   rN   rv   rL   rM   rw   rq   rX   rY   rZ   r]   rx   ry   r^   rT   r`   rm   rn   rp   rz   r{   r|   r}   r~   r   r  r   mcp_call_kwargss                                r:   #_responses_try_dispatch_mcp_gatewayr#    s<   > %DD5DQ 	7 		
 	. 	& 	H 	2 	 4 	Y 	 	j 	& 	{ 	  	{!" 	#$  &" 234 5O8 &9995IIIr@   responses_api_provider_configr  allowed_openai_paramsc        !            [        U 5      (       a  Ub  USL d  UR                  5       (       a  gSSKJn!  SS1n"0 SU_SU_S	U_S
U_SU	_SU
_SU_SU_SU_SU_SU_SU_SU_SU_SU_SU_SU_UUUUUUUUUS.	E0 U(       a  SS0O0 EUR	                  5        V#V$s0 s H  u  n#n$U#U";  d  M  U#U$_M     sn$n#EEn%U (       a  U!" SXU S.U%D6$ [        U!4UUU S.U%D6$ s  sn$n#f )zMReturn a response when emulated file_search handles the call; otherwise None.NTr   )$aresponses_with_emulated_file_searchr   r   rv   rL   rM   rw   rq   rX   rY   rZ   r]   rx   ry   r^   rT   r`   rm   rn   rp   )	r   r   r   r%  rz   r{   r|   r}   r~   r  )ru   rN   r/   rr   )r?   supports_native_file_search.litellm.responses.file_search.emulated_handlerr'  r  r   )&r/   ru   rN   r$  r  rv   rL   rM   rw   rq   rX   rY   rZ   r]   rx   ry   r^   rT   r`   rm   rn   rp   r   r   r   r%  rz   r{   r|   r}   r~   r   r  r'  _internal_skipkvemulated_kwargss&                                         r:   ,_responses_try_dispatch_emulated_file_searchr.  "  s   J !''%-#t+,HHJJ (6N%7%% 	.% 	&	%
 	H% 	2% 	 4% 	Y% 	% 	j% 	&% 	{% 	% 	{% 	%  	j!%" 	#%$ %."!6&" 25%8 0 06	 %+LLNNNDAqa~6M41a4NN9%OL 3 
E
5D
 	
 ,	
   Os   C
+C
c                    [        5       n UR                  S5      nUR                  SS5      n UR                  SS5      SL n![        U5      n"[        R
                  " XS9nUb  UUS'   [        S<0 UD6n#U#R                  (       a2  [        U#R                  [        5      (       a  [        U#R                  S	9$ [        U5      u  n$n%U$nUUS
'   U"=(       d    U%n"[        UUU#US9u  nn[        U UUUUUS9u  pn[        U UUUS9u  n n[        S<0 SU_SU _S
U_SU_SU_SU_SU_SU_SU_SU_SU	_SU
_SU_SU_SU_SU_SU_SU_SU_SU_S U_S!U_S"U_S#U_S$U_S%U_S&U!_6n&U&b  U&$ Uc  Sn'O[         R"                  " UUS'9n'UR%                  U5        U	c8  S(U;   a2  ['        5       R)                  UR                  S(5      5      n(U(b  U(n	U(US'   [        R*                  " U5      n)[-        S<0 SU_SU _S
U_S)U'_S*U"_SU_SU_SU_SU_SU_SU_SU_SU	_SU
_SU_SU_SU_SU_SU_SU_SU_SU_S+U_S,U_S-U_S.U_S U_S!U_S"U_S#U_S$U_S%U_S&U!_6n*U*b  U*$ U'b  U"SL a)  [.        R0                  " S<UU U)UU!UUUUb  UO[2        S/.	UD6$ [        R4                  " UU'U)US09n+UR7                  UUU[9        U+5      0 U+EU!U UR                  S15      [;        UU#R<                  5      S2U;   a  US2   OUR                  S5      S3.EUS49  [        R>                  " U 5      n Uc  [A        S55      e[B        R1                  UU U'U+UU#UUUU=(       d    [2        U!UR                  S65      U'RE                  XUS79UR                  S20 5      UR                  S85      S99n,[        U,[F        5      (       a5  [        RH                  " U,UR                  S20 5      US:9n,UU,RJ                  S$'   U,$ ! [L         a  n-[N        RP                  " UUU-UUS;9eSn-A-ff = f)=z_
Synchronous version of the Responses API.
Uses the synchronous HTTP handler to make requests.
r   r   Nr   FTr   rT   rs   rN   rN   r~   r  r   )ru   rN   r~   r   r   r   )ru   r/   r   r   r/   ru   rv   rL   rM   rw   rq   rX   rY   rZ   r]   rx   ry   r^   r`   rm   rn   rp   rz   r{   r|   r}   r~   r   r  rN   providerreasoning_effortr$  r  r   r   r   r%  )	rN   ru   responses_api_requestr~   r  ry   rz   r|   r}   rN   r$  response_api_optional_paramsr%  r  r   )r   r   r  data_residencyrq   r   rN   rp   optional_paramsr  r~   2custom_llm_provider is required but passed as Noner+   )rN   ry   r~   shared_session)rN   ru   r$  $response_api_optional_request_paramsr~   r  logging_objrz   r|   r}   r  r+   fake_streamr   r;  r   r   rr   ))r   r7   r   r  r   r   r)   rA   r5   r   rt   r  r  r  r  r#  r*   !get_provider_responses_api_configupdater   _map_reasoning_effort)get_requested_response_api_optional_paramr.  )litellm_completion_transformation_handlerresponse_api_handlerr   !get_optional_params_responses_apiupdate_from_kwargsr6   r&   r   ,_restore_encrypted_content_item_ids_in_inputr   base_llm_http_handlershould_fake_streamr!   r   r   r   r   r   ).ru   rN   rv   rL   rM   rw   rq   rX   rY   rZ   r]   rx   ry   r^   rT   r   r`   r/   rm   rn   rp   r   r   rz   r{   r|   r}   r%  r~   r   r   r   r   r  r  r  _stripped_model_from_chat_completions_prefix_mcp_dispatchr$  _mappedr6  _file_search_dispatchresponses_api_request_paramsrF   r  s.                                                 r:   r   r     s   P JD
17<Q1R)/4Et)LJJ|U3t;	#CF#K  (II#
 !%Jv .77
 ''J((#-
 -
 /,:: 
 ?uE 	76  #
7$E(E 	! &K 3)!	&
"" -W 3 3!-
)) 6uV

u < 


 
 	

 &
 0
 
 
 !4
 "6
  
 
 "
 
 $
  !
" $#
$ %
& "'
( )
* (+
, $-
. "/
0 1
2 !43
4 5
6  7
: $   &,0) &GG0 * 	&!!3z!A;=SS12G "#	*1
;' %NN 	% !M "!
"!
"!
 "!
 +H	"!

 &>"!
 "!
 &"!
 0"!
 "!
 "!
 !4"!
 "6"!
  "!
 "!
 ""!
  !"!
" $#"!
$ %"!
& $'"!
( )"!
* "+"!
, -"!
. &/"!
0 01"!
2 $3"!
4 #85"!
6 (7"!
8 $9"!
: ";"!
< ="!
> !4?"!
@ A"!
B  C"!
F !,(((04LPT4T<QQ &B$7#+%#*#6O   %FF.K-I&;	 	% 	.. !=>.'#2$jj6"=')@)@#
 *V3 -.J/ !4' 	/ 	
. )UU

 &QRR(==*G1M 3)+'!.::h'5HH@S I  $ZZ(:B?!::&67# > 
* h 455/__'/!',>!C$7H >QH##$9: 
$$ 3 (
 	

s3   B+O 8B-O &C-O 0O EO 
P$O<<Pr   c           
      N  #    [        5       n [        R                  " 5       nSUS'   [        R                  " U S9n	U	R                  S5      =(       d    U n U	R                  S5      =(       d    Un[        [        4U UUUUUS.UD6n
[        R                  " 5       n[        UR                  U
5      nUR                  SU5      I Sh  vN n[        R                  " U5      (       a  UI Sh  vN nU$ UnU$  N/ N! [         a  n[        R                  " SUUUUS9eSnAff = f7f)	zn
Async version of the DELETE Responses API

DELETE /v1/responses/{response_id} endpoint in the responses API

Tadelete_responsesr   r   r~   r   r~   rz   r{   r|   r}   Nr   )r   r   r   r   !_decode_responses_api_response_idr7   r   delete_responsesr   r   r   r   r   r   r   r   r   rz   r{   r|   r}   r~   r   r   r   decoded_response_idr   r   r   r   rF   r  s                   r:   rQ  rQ    F    & J*
%%'&*"# %FF' 	
 *--m<K##$9:Q>Q 	 	
# 3'#!	
 	
 &&(#CGGT2"2249JKK}--**H  %H L +  
$$ 3 (
 	

Y   D%B9C; C7$C; ,C9-C; 2D%3C; 6D%7C; 9C; ;
D"DD""D%c                    [        5       n UR                  S5      nUR                  SS5      n	UR                  SS5      SL n
[        S0 UD6n[        R
                  " U S9nUR                  S5      =(       d    U n UR                  S	5      =(       d    UnUc  [        S
5      e[        R                  " SUS9nUc  [        SU 35      eUR                  U5        UR                  USSU 0SU	0US9  [        R                  U UUUUUUU=(       d    [        U
UR                  S5      UR                  S5      S9nU$ ! [         a  n[        R                   " SUUUUS9eSnAff = f)zt
Synchronous version of the DELETE Responses API

DELETE /v1/responses/{response_id} endpoint in the responses API

r   r   NrQ  FTrR  r   r~   r:  r1  z&DELETE responses is not supported for r   rN   r9  r  r~   r+   r;  r   r~   r$  r  r=  rz   r|   r}   r  r+   r;  r   rr   )r   r7   r   r)   r   rT  r   r*   r?  r@  rF  rH  delete_response_api_handlerr   r   r   r   r   rz   r{   r|   r}   r~   r   r   r   r   r  r  rW  r$  rF   r  s                   r:   rU  rU       & JI
17<Q1R)/4Et)LJJ2E:dB	 .77 %FF' 	
 *--m<K##$9:Q>Q 	 &QRR "CC, 	& )089L8MN  	&! 	..{ "? !4 	/ 
	
 )DD# 3*G)+'!.::h'!::&67 E 
  
$$ 3 (
 	

   D/D< <
E#EE#c           
        #    [        5       n [        R                  " 5       nSUS'   [        R                  " U S9n	U	R                  S5      =(       d    U n U	R                  S5      =(       d    Un[        [        4U UUUUUS.UD6n
[        R                  " 5       n[        UR                  U
5      nUR                  SU5      I Sh  vN n[        R                  " U5      (       a  UI Sh  vN nOUn[        U[        5      (       a&  [        R                  " UUR                  S0 5      US	9nU$  Ni NF! [          a  n["        R$                  " SUUUUS
9eSnAff = f7f)aX  
Async: Fetch a response by its ID.

GET /v1/responses/{response_id} endpoint in the responses API

Args:
    response_id: The ID of the response to fetch.
    custom_llm_provider: Optional provider name. If not specified, will be decoded from response_id.

Returns:
    The response object with complete information about the stored response.
Taget_responsesrR  r   r~   rS  Nr   r   r   )r   r   r   r   rT  r7   r   get_responsesr   r   r   r   r   r5   r!   r   r   r   r   rV  s                   r:   rb  rb  W  st    2 J2
%%'#'  %FF' 	
 *--m<K##$9:Q>Q 	 	
# 3'#!	
 	
 &&(#CGGT2"2249JKK}--**H$H h 455/__'/!',>!C$7H
  L +  
$$ 3 (
 	

sN   EB9D5 D1$D5 ,D3-AD5 0E1D5 3D5 5
E?EEEc                 B   [        5       n UR                  S5      nUR                  SS5      n	UR                  SS5      SL n
[        S0 UD6n[        R
                  " U S9nUR                  S5      =(       d    U n UR                  S	5      =(       d    UnUc  [        S
5      e[        R                  " SUS9nUc  [        SU 35      eUR                  U5        UR                  USSU 0SU	0US9  [        R                  U UUUUUUU=(       d    [        U
UR                  S5      UR                  S5      S9n[        U[        5      (       a&  [        R                   " UUR                  S0 5      US9nU$ ! ["         a  n[$        R&                  " SUUUUS9eSnAff = f)aQ  
Fetch a response by its ID.

GET /v1/responses/{response_id} endpoint in the responses API

Args:
    response_id: The ID of the response to fetch.
    custom_llm_provider: Optional provider name. If not specified, will be decoded from response_id.

Returns:
    The response object with complete information about the stored response.
r   r   Nrb  FTrR  r   r~   r:  r1  z#GET responses is not supported for r[  r+   r;  r\  r   r   r   rr   )r   r7   r   r)   r   rT  r   r*   r?  r@  rF  rH  rc  r   r5   r!   r   r   r   r   r^  s                   r:   rc  rc    s   2 JQ
17<Q1R)/4Et)LJJ/74?	 .77 %FF' 	
 *--m<K##$9:Q>Q 	 &QRR "CC, 	& )056I5JK  	&! 	..{ "? !4 	/ 
	
 )66# 3*G)+'!.::h'!::&67 7 
 h 455/__'/!',>!C$7H  
$$ 3 (
 	

s   E*E7 7
FFFafterbeforelimitorder)ascdescc	                 T  #    [        5       n
 [        R                  " 5       nSU	S'   [        R                  " U S9nUR                  S5      =(       d    U n UR                  S5      =(       d    Un[        [        4U UUUUUUUUS.	U	D6n[        R                  " 5       n[        UR                  U5      nUR                  SU5      I Sh  vN n[        R                  " U5      (       a  UI Sh  vN nU$ UnU$  N/ N! [         a  n[        R                  " SUUU
U	S9eSnAff = f7f)	z&Async: List input items for a responseTalist_input_itemsrR  r   r~   )	r   re  rf  rv   rg  rh  rz   r}   r~   Nr   )r   r   r   r   rT  r7   r   list_input_itemsr   r   r   r   r   r   r   r   )r   re  rf  rv   rg  rh  rz   r}   r~   r   r   r   rW  r   r   r   r   rF   r  s                      r:   rl  rl    sO     J,
%%'&*"# %FF' 	
 *--m<K##$9:Q>Q 	 
#' 3
 
 &&(#CGGT2"2249JKK}--**H  %H L +  
$$ 3 (
 	

sY   D(B<C> 
C:$C> /C<0C> 5D(6C> 9D(:C> <C> >
D%D  D%%D(c	                    [        5       n
 U	R                  S5      nU	R                  SS5      nU	R                  SS5      SL n[        S0 U	D6n[        R
                  " U S9nUR                  S5      =(       d    U n UR                  S	5      =(       d    UnUc  [        S
5      e[        R                  " SUS9nUc  [        SU 35      eU
R                  U	5        UR                  U
SSU 0SU0US9  [        R                  U UUUUUUUUUUU=(       d    [        UU	R                  S5      U	R                  S5      S9nU$ ! [         a  n[        R                   " SUUU
U	S9eSnAff = f)zList input items for a responser   r   Nrl  FTrR  r   r~   r:  r1  z&list_input_items is not supported for r[  r+   r;  )r   r~   r$  r  r=  re  rf  rv   rg  rh  rz   r}   r  r+   r;  r   rr   )r   r7   r   r)   r   rT  r   r*   r?  r@  rF  rH  list_responses_input_itemsr   r   r   r   )r   re  rf  rv   rg  rh  rz   r}   r~   r   r   r   r   r  r  rW  r$  rF   r  s                      r:   rm  rm  R  s    JD
17<Q1R)/4Et)LJJ2E:dB	-77 %FF' 	
 *--m<K##$9:Q>Q 	 &QRR "CC, 	& )089L8MN  	&!..*K8-? 3 	/ 	
 )CC# 3*G)+'.::h'!::&67 D 
$  
$$ 3 (
 	

s   D3E   
E'
E""E'c           
      N  #    [        5       n [        R                  " 5       nSUS'   [        R                  " U S9n	U	R                  S5      =(       d    U n U	R                  S5      =(       d    Un[        [        4U UUUUUS.UD6n
[        R                  " 5       n[        UR                  U
5      nUR                  SU5      I Sh  vN n[        R                  " U5      (       a  UI Sh  vN nU$ UnU$  N/ N! [         a  n[        R                  " SUUUUS9eSnAff = f7f)	zx
Async version of the POST Cancel Responses API

POST /v1/responses/{response_id}/cancel endpoint in the responses API

Tacancel_responsesrR  r   r~   rS  Nr   )r   r   r   r   rT  r7   r   cancel_responsesr   r   r   r   r   r   r   r   rV  s                   r:   rq  rq    rX  rY  c                    [        5       n UR                  S5      nUR                  SS5      n	UR                  SS5      SL n
[        S0 UD6n[        R
                  " U S9nUR                  S5      =(       d    U n UR                  S	5      =(       d    UnUc  [        S
5      e[        R                  " SUS9nUc  [        SU 35      eUR                  U5        UR                  USSU 0SU	0US9  [        R                  U UUUUUUU=(       d    [        U
UR                  S5      UR                  S5      S9nU$ ! [         a  n[        R                   " SUUUUS9eSnAff = f)zw
Synchronous version of the POST Responses API

POST /v1/responses/{response_id}/cancel endpoint in the responses API

r   r   Nrq  FTrR  r   r~   r:  r1  z&CANCEL responses is not supported for r[  r+   r;  r\  r   rr   )r   r7   r   r)   r   rT  r   r*   r?  r@  rF  rH  cancel_response_api_handlerr   r   r   r   r^  s                   r:   rr  rr    r_  r`  c	                   #    [        5       n
 [        R                  " 5       nSU	S'   Uc,  [        R                  " XR                  SS5      S9u  p  nXS'   [        [        4U UUUUUUUUS.	U	D6n[        R                  " 5       n[        UR                  U5      nUR                  SU5      I Sh  vN n[        R                  " U5      (       a  UI Sh  vN nOUn[        U[        5      (       a&  [        R                   " UU	R                  S0 5      US	9nU$  Ni NF! ["         a  n[        R$                  " UUUU
U	S
9eSnAff = f7f)z
Async version of the POST Compact Responses API

POST /v1/responses/compact endpoint in the responses API

Runs a compaction pass over a conversation, returning encrypted, opaque items.
Tacompact_responsesNr   r   r~   )	ru   rN   rL   rY   rz   r{   r|   r}   r~   r   r   r   )r   r   r   r   r   r7   r   compact_responsesr   r   r   r   r   r5   r!   r   r   r   r   )ru   rN   rL   rY   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   rF   r  s                      r:   rv  rv  I  sk    . J3
%%''+#$ &+2+C+CnnZ&F,(AAq 1D,-
%!5'#! 3
 
 &&(#CGGT2"2249JKK}--**H$H h 455/__'/!',>!C$7H  L +  
$$ 3 (
 	

sN   E	B#D 1D2$D DAD E	D D 
E)EEE	c	                    [        5       n
 U	R                  S5      nU	R                  SS5      nU	R                  SS5      SL n[        S0 U	D6n[	        UUUU
S9u  pUc  [        S5      e[        R                  " UUS	9nUc  [        S
U 35      eU
R                  U	5        [        R                  " U
5      n[        R                  " UUUSS9nUR                  U
U[        U5      0 UEU[        XR                  5      S.EUS9  [        R                   " U 5      n ["        R%                  UU UUUUUUUU=(       d    [&        UU	R                  S5      U	R                  S5      S9n[)        U[*        5      (       a&  [        R,                  " UU	R                  S0 5      US9nU$ ! [.         a  n[0        R2                  " UUUU
U	S9eSnAff = f)z
Synchronous version of the POST Compact Responses API

POST /v1/responses/compact endpoint in the responses API

Runs a compaction pass over a conversation, returning encrypted, opaque items.
r   r   Nrv  FTr0  r:  r1  z'COMPACT responses is not supported for r5  )r   r7  r[  r+   r;  )rN   ru   r$  r<  r  r=  r~   rz   r|   r}   r  r+   r;  r   r   r   rr   )r   r7   r   r)   r  r   r*   r?  r@  r   rB  rE  rF  r6   r&   r   rG  rH  compact_response_api_handlerr   r5   r!   r   r   r   r   )ru   rN   rL   rY   rz   r{   r|   r}   r~   r   r   r   r   r  r  r$  r6  rO  rF   r  s                       r:   rw  rw    s2   . Jh
17<Q1R)/4Et)LJJ3U;tC	 .77%J 3)!	&
" &QRR "CC, 	& )09:M9NO  	&! %NN 	% %FF.K-I&*	 	% 	.. !=>.#2"=')@)@# !4 	/ 	
  )UU

 )EE*G1M)+ 3'!.::h'!::&67 F 
" h 455/__'/!',>!C$7H  
$$ 3 (
 	

s   FF! !
G+GGc                     0 U R                  S5      =(       d    0 EnU R                  S5      =(       d    0 R                  S5      =(       d    U R                  S5      =(       d    / nU(       a  X!S'   U$ )Nr   rq   
guardrails)r7   )r   rq   r{  s      r:   _build_litellm_metadata_for_wsr|    sg    ?$67=2?H	J		%2**<8 	::l#	 
 !+Or@   	websocketr   r  c                   #    UR                  S5      nUR                  SS5      n[        S0 UD6n[        S0 UD6n	[        R                  " U UUS9u  n n
nn[        U
U=(       d#    UR                  =(       d    [        R                  5      U	S'   UR                  UU U0 U	U
S9  SnU
b)  [        R                  " U [        R                  " U
5      S9nU=(       d,    UR                  =(       d    [        R                  =(       d    SnU=(       dL    UR                  =(       d9    [        R                  =(       d"    [        R                  =(       d    [        S5      n1 S	knUR                  5        VVs0 s H  u  nnUU;  d  M  UU_M     nnn[        R                   " SU UUUUUUUR                  S
5      [#        U5      U
S.
UD6I Sh  vN   gs  snnf  N7f)z
Private function to handle the Responses API WebSocket mode.

For PROXY use only.

Resolves the LLM provider from ``model``, looks up the matching
``BaseResponsesAPIConfig``, and hands off to
``BaseLLMHTTPHandler.async_responses_websocket``.
r   rp   N)rN   r   r  r7  r8  r1  OPENAI_API_KEY>	   rN   r  r}   r   r}  r   user_api_key_dictr~   r   r  )
rN   r}  r=  r$  r   r  r}   r  r   r~   rr   )r7   r)   r%   r   r   r&   r   rF  r*   r?  LlmProvidersr  
openai_keyr'   r  rH  async_responses_websocketr|  )rN   r}  r   r  r}   r   r   rp   r  litellm_params_dict_custom_llm_providerr  r  r$  resolved_api_baseresolved_api_key_explicit_keysr+  r,  remaining_kwargss                       r:   _aresponses_websocketr  +  s    $ .4ZZ8M-N::fd#D)3F3N,6v6 	  	 -HGN33Gw7G7G-()
 ***0 +  GK!'!CC --.BC 	& 	ON33Ow7G7GO4  	 	,!!	,??	, 	, *+ 
N *0SA1N;R1S

9
9 '&C"  **%897?0    Ts$   E1G3GG?G
GG)a  In a peaceful grove beneath a silver moon, a unicorn named Lumina discovered a hidden pool that reflected the stars. As she dipped her horn into the water, the pool began to shimmer, revealing a pathway to a magical realm of endless night skies. Filled with wonder, Lumina whispered a wish for all who dream to find their own hidden magic, and as she glanced back, her hoofprints sparkled like stardust.)NNNNNNNNNNNNNNNNNNNNNNN)NNNNNNNNNNNNNNNNNNNNNNNNNN)NNNNNNNNNNNNNNNNNNNNNNNNNNN)NNNNN)NNN   rj  NNN)NNNNNNN)NNN)ir   r   	functoolsr   typingr   r   r   r   r   r	   r
   r   r   r   r   httpxpydanticr   r   litellm._loggingr   Ilitellm.completion_extras.litellm_responses_transformation.transformationr   litellm.constantsr   #litellm.litellm_core_utils.asyncifyr   *litellm.litellm_core_utils.litellm_loggingr   r   8litellm.litellm_core_utils.prompt_templates.common_utilsr   r   .litellm.llms.base_llm.responses.transformationr   *litellm.llms.custom_httpx.llm_http_handlerr   ;litellm.responses.litellm_completion_transformation.handlerr   litellm.responses.utilsr   litellm.types.llms.openair   r   r   r   r   r    r!   r"   r#   r$   r   -litellm.litellm_core_utils.get_litellm_paramsr%   "litellm.llms.openai.data_residencyr&   litellm.secret_managers.mainr'   litellm.types.responses.mainlitellm.types.routerr)   litellm.utilsr*   r+   	mcp.typesr,   MCPToolstreaming_iteratorr.   rH  rC  r   r?   rt   intfloatTimeoutr   r6   r   tupler  r  r  r  r  r  r#  r.  r   DeleteResponseResultrQ  rU  rb  rc  rl  rm  rq  rr  rv  rw  r|  r  rr   r@   r:   <module>r     sr            + . B S R I =
 
 
 6L L J 7 * 5 7)G A +, ,R,T )V# V4 V o11n 37"&'+%))-*.*.%) !%!#'%)(,+/!8< /3,0+/59)-9U(()UU d-./U 3-	U
  }U \"U tCH~&U "$U #3-U 	"U D>U U TNU %U >
"U  *%!U" HY'(#U$ E?%U& !345'U( 3-)U. DcN+/U0 $sCx.)1U2 c3h(3U4 eE5==0125U8 "#9U< !BBC=Up  37"&'+%))-*.*.%) !%!#'%)<@(,+/!8<"&'+ /3,0+/59)-?j
(()j
j
 d-./j
 3-	j

  }j
 \"j
 tCH~&j
 "$j
 #3-j
 	"j
 D>j
 j
 TNj
 %j
 >
"j
  %[ 14 789!j
" *%#j
$ HY'(%j
& E?'j
( !345)j
* 3-+j
, 3--j
.  }/j
4 DcN+5j
6 $sCx.)7j
8 c3h(9j
: eE5==012;j
> "#?j
B !BBCCj
 j
Z6-(()6-6- "#6- ""34	6-
 cN6- S#X6- 5(()3=>6-t 3M /
'c 
'eCQUIFV 
'T#s(^  &&!#& )& S#X	&
 3&2"(()"HY'(" cN" S#X	"
 5(()8HY4G+HHI"JCJHY'(CJ (()CJ 	CJ
 d-./CJ 3-CJ  }CJ \"CJ tCH~&CJ "$CJ #3-CJ 	"CJ D>CJ CJ TNCJ  %!CJ" #CJ$ *%%CJ& E?'CJ( !345)CJ* 3-+CJ, DcN+-CJ. $sCx.)/CJ0 c3h(1CJ2 eE5==0123CJ4 "#5CJ6 cN7CJ8 9CJ: c];CJL`HY'(` (()` 	`
 $,,B#C` #` d-./` 3-`  }` \"` tCH~&` "$` #3-` 	"` D>`  !`" TN#`$ %%`& '`( *%)`* E?+`, !345-`. 3-/`0 3-1`2  }3`4 %Y 5675`6 $DI.7`8 DcN+9`: $sCx.);`< c3h(=`> eE5==012?`@ "#A`B cNC`D E`F c]G`F  37"&'+%))-*.*.%) !%!#'%)<@(,+/!8<"&'+ /3,0+/5915)-Am
(()m
m
 d-./m
 3-	m

  }m
 \"m
 tCH~&m
 "$m
 #3-m
 	"m
 D>m
 m
 TNm
 %m
 >
"m
  %[ 14 789!m
" *%#m
$ HY'(%m
& E?'m
( !345)m
* 3-+m
, 3--m
.  }/m
4 DcN+5m
6 $sCx.)7m
8 c3h(9m
: eE5==012;m
> $DI.?m
@ "#Am
 m
`	 
 /3,0+/59)-=
=
 DcN+	=

 $sCx.)=
 c3h(=
 eE5==012=
 "#=
 =
 =
@ 
 /3,0+/59)-\
\
 DcN+	\

 $sCx.)\
 c3h(\
 eE5==012\
 "#\
 35I+I!JJK\
 \
~ 
 /3,0+/59)-K
K
 DcN+	K

 $sCx.)K
 c3h(K
 eE5==012K
 "#K
 K
 K
\ 
 /3,0+/59)-j
j
 DcN+	j

 $sCx.)j
 c3h(j
 eE5==012j
 "#j
 35I+I!JJKj
 j
Z    #'$*.259)-:
:
C=:
 SM:
 d3i 	:

 :
 =!:
 DcN+:
 eE5==012:
 "#:
 
:
 :
z    #'$*.259)-R
R
C=R
 SMR
 d3i 	R

 R
 =!R
 DcN+R
 eE5==012R
 "#R
 43T>**+R
 R
j 
 /3,0+/59)-=
=
 DcN+	=

 $sCx.)=
 c3h(=
 eE5==012=
 "#=
 =
 =
@ 
 /3,0+/59)-\
\
 DcN+	\

 $sCx.)\
 c3h(\
 eE5==012\
 "#\
 35I+I!JJK\
 \
~  #'*. /3,0+/59)-J
(()J
J
 3-J
 #3-	J
 DcN+J
 $sCx.)J
 c3h(J
 eE5==012J
 "#J
 J
 J
Z  #'*. /3,0+/59)-
(()

 3-
 #3-	
 DcN+
 $sCx.)
 c3h(
 eE5==012
 "#
 35I+I!JJK
 
N	4 	D 	  #!#]]] sm] c]	]
 e_] ]r@   