§
    g˜ºhÅÆ  ã                  óÎ  — d Z ddlmZ ddlZddlZddlm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mZmZmZmZmZmZmZmZmZmZ ddlZddlmZ ddlmZ ddlmZ dd	lmZ dd
lm Z  ddl!m"Z" ddl!m#Z# ddl!m$Z$ ddl!m%Z% ddl!m&Z& ddl!m'Z' ddl!m(Z( ddl!m)Z) ddl!m*Z*  e	j+        e,¦  «        Z-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:d Z;d!Z<d¼d&„Z=d½d*„Z>d¾d-„Z?d¿d.„Z@dÀd/„ZA G d0„ d1 ejB        d1d2¦  «        ejC        ¦  «        ZD G d3„ d4ejE        ¦  «        ZF G d5„ d6eF¦  «        ZG G d7„ d8eF¦  «        ZH G d9„ d,eI¦  «        ZJdÁd;„ZKdÂd?„ZLdÃdA„ZMdÄdD„ZNdÅdF„ZOdÆdJ„ZPdÇdK„ZQdÈdN„ZRdÇdO„ZSdÃdP„ZT G dQ„ dRejU        ¦  «        ZV G dS„ dTeI¦  «        ZWdÉdW„ZX	 dÊdËd_„ZYdÌdc„ZZdÍdh„Z[dÎdj„Z\dÁdk„Z]dÏdn„Z^dÐdo„Z_dÑdq„Z`dÒdr„ZadÓds„ZbdÔdu„ZcdÕdx„ZddÖd|„ZedÖd}„ZfdÖd~„ZgdÖd„Zhd×d„„ZidØd‡„ZjdÙd‰„ZkdÚdŒ„Zlejm         G d�„ dŽejn        ¦  «        ¦   «         Zo G d�„ d�eI¦  «        ZpdÛd“„ZqdÜd–„ZrdÝd™„ZsdÞdœ„Ztdßd�„ZudàdŸ„Zvdád „Zwdßd¡„Zxdâd£„Zydßd¤„Zzdßd¥„Z{dãd©„Z|dßdª„Z}däd¬„Z~dåd²„Z G d³„ d´ej€        ¦  «        Z�dæd»„Z‚dS )çz+Service-side implementation of gRPC Python.é    )ÚannotationsN)Úfutures)ÚAnyÚCallableÚDictÚIterableÚIteratorÚListÚMappingÚOptionalÚSequenceÚSetÚTupleÚUnion)Ú_common)Ú_compression)Ú_interceptor)Ú_observability)Úcygrpc)ÚArityAgnosticMethodHandler)ÚChannelArgumentType)ÚDeserializingFunction)ÚMetadataType)ÚNullaryCallbackType)ÚResponseType)ÚSerializingFunction)ÚServerCallbackTag)ÚServerTagCallbackTypeÚshutdownÚrequest_callÚreceive_close_on_serverÚsend_initial_metadataÚreceive_messageÚsend_messagez$send_initial_metadata * send_messageÚsend_status_from_serverz/send_initial_metadata * send_status_from_serverÚopenÚclosedÚ	cancelledg      ð?g    eÍÍAÚrequest_eventúcygrpc.BaseEventÚreturnÚbytesc                ó@   — | j         d                              ¦   «         S ©Nr   )Úbatch_operationsÚmessage)r)   s    úT/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/grpc/_server.pyÚ_serialized_requestr2   U   s   € ØÔ)¨!Ô,×4Ò4Ñ6Ô6Ð6ó    Úcodeúgrpc.StatusCodeúcygrpc.StatusCodec                ój   — t           j                             | ¦  «        }|€t          j        j        n|S ©N)r   Ú!STATUS_CODE_TO_CYGRPC_STATUS_CODEÚgetr   Ú
StatusCodeÚunknown)r4   Úcygrpc_codes     r1   Ú_application_coder>   Y   s.   € ÝÔ;×?Ò?ÀÑEÔE€KØ(3Ð(;�6ÔÔ$Ð$ÀÐLr3   ÚstateÚ	_RPCStatec                óZ   — | j         €t          j        j        S t	          | j         ¦  «        S r8   )r4   r   r;   Úokr>   ©r?   s    r1   Ú_completion_coderD   ^   s&   € Ø„zÐÝÔ Ô#Ð#å  ¤Ñ,Ô,Ð,r3   c                ó<   — | j         €|S t          | j         ¦  «        S r8   )r4   r>   )r?   r4   s     r1   Ú_abortion_coderF   e   s!   € ð „zÐØˆå  ¤Ñ,Ô,Ð,r3   c                ó"   — | j         €dn| j         S )Nr3   )ÚdetailsrC   s    r1   Ú_detailsrI   n   s   € Ø”-Ð'ˆ3ˆ3¨U¬]Ð:r3   c                  ó   — e Zd ZdS )Ú_HandlerCallDetailsN)Ú__name__Ú
__module__Ú__qualname__© r3   r1   rK   rK   r   s   € € € € € ð 	€Dr3   rK   )ÚmethodÚinvocation_metadatac                  óR   — e Zd Zej        d	d„¦   «         Zej        d
d„¦   «         ZdS )Ú_Methodr+   úOptional[str]c                ó   — t          ¦   «         ‚r8   ©ÚNotImplementedError©Úselfs    r1   Únamez_Method.name€   s   € å!Ñ#Ô#Ð#r3   Úhandler_call_detailsrK   úOptional[grpc.RpcMethodHandler]c                ó   — t          ¦   «         ‚r8   rV   ©rY   r[   s     r1   Úhandlerz_Method.handler„   s   € õ "Ñ#Ô#Ð#r3   N©r+   rT   ©r[   rK   r+   r\   )rL   rM   rN   ÚabcÚabstractmethodrZ   r_   rO   r3   r1   rS   rS      sZ   € € € € € ØÔð$ð $ð $ñ Ôð$ð 	Ôð$ð $ð $ñ Ôð$ð $ð $r3   rS   c                  ó&   — e Zd Zdd„Zdd„Zdd„ZdS )Ú_RegisteredMethodrZ   ÚstrÚregistered_handlerr\   c                ó"   — || _         || _        d S r8   )Ú_nameÚ_registered_handler)rY   rZ   rg   s      r1   Ú__init__z_RegisteredMethod.__init__Œ   s   € ð
 ˆŒ
Ø#5ˆÔ Ð Ð r3   r+   rT   c                ó   — | j         S r8   )ri   rX   s    r1   rZ   z_RegisteredMethod.name”   s
   € ØŒzÐr3   r[   rK   c                ó   — | j         S r8   )rj   r^   s     r1   r_   z_RegisteredMethod.handler—   s   € ð Ô'Ð'r3   N)rZ   rf   rg   r\   r`   ra   ©rL   rM   rN   rk   rZ   r_   rO   r3   r1   re   re   ‹   sP   € € € € € ð6ð 6ð 6ð 6ðð ð ð ð(ð (ð (ð (ð (ð (r3   re   c                  ó&   — e Zd Zdd„Zdd„Zdd
„ZdS )Ú_GenericMethodÚgeneric_handlersúList[grpc.GenericRpcHandler]c                ó   — || _         d S r8   )Ú_generic_handlers)rY   rq   s     r1   rk   z_GenericMethod.__init__ž   s   € ð "2ˆÔÐÐr3   r+   rT   c                ó   — d S r8   rO   rX   s    r1   rZ   z_GenericMethod.name¤   s   € Øˆtr3   r[   rK   r\   c                óP   — | j         D ]}|                     |¦  «        }|�|c S Œd S r8   )rt   Úservice)rY   r[   Úgeneric_handlerÚmethod_handlers       r1   r_   z_GenericMethod.handler§   sF   € ð
  $Ô5ð 	&ð 	&ˆOØ,×4Ò4Ð5IÑJÔJˆNØÐ)Ø%Ð%Ð%Ð%ð *àˆtr3   N)rq   rr   r`   ra   rn   rO   r3   r1   rp   rp   �   sP   € € € € € ð2ð 2ð 2ð 2ðð ð ð ð	ð 	ð 	ð 	ð 	ð 	r3   rp   c                  ó²   — e Zd ZU ded<   ded<   ee         Zded<   ded<   d	ed
<   ded<   d	ed<   ded<   ded<   ded<   d	ed<   ded<   ded<   d	ed<   d„ ZdS )r@   zcontextvars.ContextÚcontextzthreading.ConditionÚ	conditionr   Úrequestrf   ÚclientÚboolÚinitial_metadata_allowedúOptional[grpc.Compression]Úcompression_algorithmÚdisable_next_compressionúOptional[MetadataType]Útrailing_metadatazOptional[grpc.StatusCode]r4   úOptional[bytes]rH   ÚstatusedzList[Exception]Ú
rpc_errorsz#Optional[List[NullaryCallbackType]]Ú	callbacksÚabortedc                ó>  — t          j        ¦   «         | _        t          j        ¦   «         | _        t          ¦   «         | _        d | _        t          | _
        d| _        d | _        d| _        d | _        d | _        d | _        d| _        g | _        g | _        d| _        d S ©NTF)ÚcontextvarsÚContextr{   Ú	threadingÚ	Conditionr|   ÚsetÚduer}   Ú_OPENr~   r€   r‚   rƒ   r…   r4   rH   r‡   rˆ   r‰   rŠ   rX   s    r1   rk   z_RPCState.__init__Ä   s‰   € Ý"Ô*Ñ,Ô,ˆŒÝ"Ô,Ñ.Ô.ˆŒÝ‘5”5ˆŒØˆŒÝˆŒØ(,ˆÔ%Ø%)ˆÔ"Ø(-ˆÔ%Ø!%ˆÔØˆŒ	ØˆŒØˆŒØˆŒØˆŒØˆŒˆˆr3   N)rL   rM   rN   Ú__annotations__r   rf   r’   rk   rO   r3   r1   r@   r@   ³   sÊ   € € € € € € Ø Ð Ð Ñ Ø"Ð"Ð"Ñ"Ø
ˆcŒ(€CØ€L€L�LØ€K€K�KØ"Ð"Ð"Ñ"Ø5Ð5Ð5Ñ5Ø"Ð"Ð"Ñ"Ø-Ð-Ð-Ñ-Ø#Ð#Ð#Ñ#ØÐÐÑØ€N€N�NØÐÐÑØ2Ð2Ð2Ñ2Ø€M€M�Mðð ð ð ð r3   ÚNonec                ó`   — t          j        ¦   «         }| j                             |¦  «         |‚r8   )ÚgrpcÚRpcErrorrˆ   Úappend)r?   Ú	rpc_errors     r1   Ú_raise_rpc_errorr›   Ö   s)   € Ý”‘”€IØ	Ô×Ò˜IÑ&Ô&Ð&Ø
€Or3   Útokenrf   r   c                óŠ   — | j                              |¦  «         t          | ¦  «        s| j         s| j        }d | _        | |fS dS )N©NrO   )r’   ÚremoveÚ_is_rpc_state_activer‰   )r?   rœ   r‰   s      r1   Ú_possibly_finish_callr¡   Ü   sQ   € ð 
„I×Ò�UÑÔÐÝ Ñ&Ô&ð ¨u¬yð Ø”Oˆ	ØˆŒØ�iÐÐàˆxr3   r   c                ó   ‡ ‡— ˆ ˆfd„}|S )Nc                óf   •— ‰j         5  t          ‰‰¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r8   )r|   r¡   )Ú$unused_send_status_from_server_eventr?   rœ   s    €€r1   r%   z9_send_status_from_server.<locals>.send_status_from_serveré   s|   ø€ ØŒ_ð 	7ð 	7Ý(¨°Ñ6Ô6ð	7ð 	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð 	7ð 	7s   ‰&¦*­*rO   )r?   rœ   r%   s   `` r1   Ú_send_status_from_serverr¥   è   s*   øø€ ð7ð 7ð 7ð 7ð 7ð 7ð #Ð"r3   Úmetadatar„   c                óæ   — | j         5  | j        rHt          j        | j        ¦  «        f}|€|cd d d ¦  «         S |t	          |¦  «        z   cd d d ¦  «         S |cd d d ¦  «         S # 1 swxY w Y   d S r8   )r|   r‚   r   Ú!compression_algorithm_to_metadataÚtuple)r?   r¦   Úcompression_metadatas      r1   Ú_get_initial_metadatar«   ð   s	  € ð 
Œð ð ØÔ&ð 	åÔ>ØÔ/ñô ð$Ð ð
 ÐØ+ðð ð ð ñ ô ð ð ð ,­e°H©o¬oÑ=ðð ð ð ñ ô ð ð ð ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   ˆ%A&ºA&ÁA&Á&A*Á-A*úcygrpc.Operationc                óV   — t          j        t          | |¦  «        t          ¦  «        }|S r8   )r   ÚSendInitialMetadataOperationr«   Ú_EMPTY_FLAGS)r?   r¦   Ú	operations      r1   Ú_get_initial_metadata_operationr±     s-   € õ Ô3Ý˜e XÑ.Ô.µñô €Ið Ðr3   Úcallúcygrpc.CallrH   c                óÂ  — | j         t          urÐt          | |¦  «        }| j        €|n| j        }| j        r9t          | d ¦  «        t          j        | j        ||t          ¦  «        f}t          }n)t          j        | j        ||t          ¦  «        f}t          }|                     |t          | |¦  «        ¦  «         d| _        | j                             |¦  «         d S d S ©NT)r~   Ú
_CANCELLEDrF   rH   r€   r±   r   ÚSendStatusFromServerOperationr…   r¯   Ú8_SEND_INITIAL_METADATA_AND_SEND_STATUS_FROM_SERVER_TOKENÚ_SEND_STATUS_FROM_SERVER_TOKENÚstart_server_batchr¥   r‡   r’   Úadd)r?   r²   r4   rH   Úeffective_codeÚeffective_detailsÚ
operationsrœ   s           r1   Ú_abortr¿     sý   € ð „|�:Ð%Ð%Ý'¨¨tÑ4Ô4ˆØ',¤}Ð'<˜G˜GÀ%Ä-ÐØÔ)ð 	3å/°°tÑ<Ô<ÝÔ4ØÔ+Ø"Ø%Ý ñ	ô ðˆJõ MˆEˆEõ Ô4ØÔ+Ø"Ø%Ý ñ	ô ðˆJõ 3ˆEØ×ÒØÕ0°¸Ñ>Ô>ñ	
ô 	
ð 	
ð ˆŒØŒ	�Š�eÑÔÐÐÐð9 &Ð%r3   c                ó   ‡ — ˆ fd„}|S )Nc                ó.  •— ‰j         5  | j        d                              ¦   «         rt          ‰_        n‰j        t
          u rt          ‰_        ‰j                              ¦   «          t          ‰t          ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r.   )
r|   r/   r(   r¶   r~   r“   Ú_CLOSEDÚ
notify_allr¡   Ú_RECEIVE_CLOSE_ON_SERVER_TOKEN)Úreceive_close_on_server_eventr?   s    €r1   r!   z9_receive_close_on_server.<locals>.receive_close_on_server.  sÞ   ø€ ØŒ_ð 	Pð 	PØ,Ô=¸aÔ@×JÒJÑLÔLð 'Ý)�”�Ø”¥Ð&Ð&Ý&�”ØŒO×&Ò&Ñ(Ô(Ð(Ý(¨Õ0NÑOÔOð	Pð 	Pð 	Pð 	Pñ 	Pô 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pøøøð 	Pð 	Pð 	Pð 	Pð 	Pð 	Ps   ‰A4B
Â
BÂBrO   )r?   r!   s   ` r1   Ú_receive_close_on_serverrÆ   -  s)   ø€ ðPð Pð Pð Pð Pð #Ð"r3   Úrequest_deserializerúOptional[DeserializingFunction]c                ó   ‡ ‡‡— ˆˆˆ fd„}|S )Nc                ó  •— t          | ¦  «        }|€i‰j        5  ‰j        t          u rt          ‰_        ‰j                             ¦   «          t          ‰t          ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S t          j	        |‰¦  «        }‰j        5  |€"t          ‰‰t          j        j        d¦  «         n|‰_        ‰j                             ¦   «          t          ‰t          ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Ns    Exception deserializing request!)r2   r|   r~   r“   rÂ   rÃ   r¡   Ú_RECEIVE_MESSAGE_TOKENr   Údeserializer¿   r   r;   Úinternalr}   )Úreceive_message_eventÚserialized_requestr}   r²   rÇ   r?   s      €€€r1   r#   z)_receive_message.<locals>.receive_message?  sÃ  ø€ Ý0Ð1FÑGÔGÐØÐ%Ø”ð Lð LØ”<¥5Ð(Ð(Ý#*�E”LØ”×*Ò*Ñ,Ô,Ð,Ý,¨UÕ4JÑKÔKð	Lð Lð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Lð Lð Lõ Ô)Ø"Ð$8ñô ˆGð ”ð Lð LØ�?ÝØØÝÔ)Ô2Ø;ñ	ô ð ð ð %,�E”MØ”×*Ò*Ñ,Ô,Ð,Ý,¨UÕ4JÑKÔKðLð Lð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Lð Lð Ls%   šAA/Á/A3Á6A3ÂAC>Ã>DÄDrO   )r?   r²   rÇ   r#   s   ``` r1   Ú_receive_messagerÐ   :  s7   øøø€ ð
Lð Lð Lð Lð Lð Lð Lð2 Ðr3   c                ó   ‡ — ˆ fd„}|S )Nc                óp   •— ‰j         5  t          ‰t          ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r8   )r|   r¡   Ú_SEND_INITIAL_METADATA_TOKEN)Ú"unused_send_initial_metadata_eventr?   s    €r1   r"   z5_send_initial_metadata.<locals>.send_initial_metadata\  s‘   ø€ ØŒ_ð 	Nð 	NÝ(¨Õ0LÑMÔMð	Nð 	Nð 	Nð 	Nñ 	Nô 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nøøøð 	Nð 	Nð 	Nð 	Nð 	Nð 	Ns   ‰+«/²/rO   )r?   r"   s   ` r1   Ú_send_initial_metadatarÕ   [  s)   ø€ ðNð Nð Nð Nð Nð !Ð r3   c                ó   ‡ ‡— ˆ ˆfd„}|S )Nc                ó˜   •— ‰j         5  ‰j                              ¦   «          t          ‰‰¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r8   )r|   rÃ   r¡   )Úunused_send_message_eventr?   rœ   s    €€r1   r$   z#_send_message.<locals>.send_messaged  s�   ø€ ØŒ_ð 	7ð 	7ØŒO×&Ò&Ñ(Ô(Ð(Ý(¨°Ñ6Ô6ð	7ð 	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð 	7ð 	7s   ‰)?¿AÁArO   )r?   rœ   r$   s   `` r1   Ú_send_messagerÙ   c  s*   øø€ ð7ð 7ð 7ð 7ð 7ð 7ð
 Ðr3   c                  óÞ   — e Zd ZU ded<   ded<   ded<   d6d	„Zd7d„Zd8d„Zd9d„Zd:d„Zd9d„Z	d;d„Z
d<d„Zd=d„Zd>d„Zd?d„Zd@d!„ZdAd$„ZdBd&„Zd;d'„ZdCd+„ZdDd.„ZdEd/„ZdFd0„ZdGd1„ZdHd3„Zd9d4„Zd5S )IÚ_Contextr*   Ú
_rpc_eventr@   Ú_staterÈ   rÇ   Ú	rpc_eventr?   c                ó0   — || _         || _        || _        d S r8   )rÜ   rÝ   Ú_request_deserializer)rY   rÞ   r?   rÇ   s       r1   rk   z_Context.__init__q  s    € ð $ˆŒØˆŒØ%9ˆÔ"Ð"Ð"r3   r+   r   c                óv   — | j         j        5  t          | j         ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r8   )rÝ   r|   r    rX   s    r1   Ú	is_activez_Context.is_active{  s~   € ØŒ[Ô"ð 	5ð 	5Ý'¨¬Ñ4Ô4ð	5ð 	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5s   �.®2µ2Úfloatc                óh   — t          | j        j        j        t	          j        ¦   «         z
  d¦  «        S r.   )ÚmaxrÜ   Úcall_detailsÚdeadlineÚtimerX   s    r1   Útime_remainingz_Context.time_remaining  s%   € Ý�4”?Ô/Ô8½4¼9¹;¼;ÑFÈÑJÔJÐJr3   r•   c                óB   — | j         j                             ¦   «          d S r8   )rÜ   r²   ÚcancelrX   s    r1   rë   z_Context.cancel‚  s   € ØŒÔ×#Ò#Ñ%Ô%Ð%Ð%Ð%r3   Úcallbackr   c                óÄ   — | j         j        5  | j         j        €	 d d d ¦  «         dS | j         j                             |¦  «         	 d d d ¦  «         dS # 1 swxY w Y   d S )NFT)rÝ   r|   r‰   r™   )rY   rì   s     r1   Úadd_callbackz_Context.add_callback…  sÅ   € ØŒ[Ô"ð 	ð 	ØŒ{Ô$Ð,Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð ”Ô%×,Ò,¨XÑ6Ô6Ð6Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   �A¨ AÁAÁAc                óh   — | j         j        5  d| j         _        d d d ¦  «         d S # 1 swxY w Y   d S rµ   )rÝ   r|   rƒ   rX   s    r1   Ú disable_next_message_compressionz)_Context.disable_next_message_compression�  s{   € ØŒ[Ô"ð 	8ð 	8Ø37ˆDŒKÔ0ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ó   �'§+®+r„   c                ó   — | j         j        S r8   )rÜ   rQ   rX   s    r1   rQ   z_Context.invocation_metadata‘  s   € ØŒÔ2Ð2r3   rf   c                ób   — t          j        | j        j                             ¦   «         ¦  «        S r8   )r   ÚdecoderÜ   r²   ÚpeerrX   s    r1   rõ   z_Context.peer”  s#   € ÝŒ~˜dœoÔ2×7Ò7Ñ9Ô9Ñ:Ô:Ð:r3   úOptional[Sequence[bytes]]c                ó>   — t          j        | j        j        ¦  «        S r8   )r   Úpeer_identitiesrÜ   r²   rX   s    r1   rø   z_Context.peer_identities—  s   € ÝÔ% d¤oÔ&:Ñ;Ô;Ð;r3   rT   c                ón   — t          j        | j        j        ¦  «        }|€|nt	          j        |¦  «        S r8   )r   Úpeer_identity_keyrÜ   r²   r   rô   )rY   Úid_keys     r1   rú   z_Context.peer_identity_keyš  s/   € ÝÔ)¨$¬/Ô*>Ñ?Ô?ˆØ˜ˆvˆv­W¬^¸FÑ-CÔ-CÐCr3   úMapping[str, Sequence[bytes]]c                ó†   — t          j        | j        j        ¦  «        }|€i n|}d„ |                     ¦   «         D ¦   «         S )Nc                ó>   — i | ]\  }}t          j        |¦  «        |“ŒS rO   )r   rô   )Ú.0ÚkeyÚvalues      r1   ú
<dictcomp>z)_Context.auth_context.<locals>.<dictcomp>¡  s8   € ð 
ð 
ð 
á��Uõ ŒN˜3ÑÔ ð
ð 
ð 
r3   )r   Úauth_contextrÜ   r²   Úitems)rY   r  Úauth_context_dicts      r1   r  z_Context.auth_contextž  sS   € ÝÔ*¨4¬?Ô+?Ñ@Ô@ˆØ".Ð"6˜B˜B¸LÐð
ð 
à/×5Ò5Ñ7Ô7ð
ñ 
ô 
ð 	
r3   Úcompressionúgrpc.Compressionc                óh   — | j         j        5  || j         _        d d d ¦  «         d S # 1 swxY w Y   d S r8   )rÝ   r|   r‚   )rY   r  s     r1   Úset_compressionz_Context.set_compression¦  s{   € ØŒ[Ô"ð 	<ð 	<Ø0;ˆDŒKÔ-ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<rñ   Úinitial_metadatar   c                óÈ  — | j         j        5  | j         j        t          u rt	          | j         ¦  «         n”| j         j        ryt          | j         |¦  «        }| j        j         	                    |ft          | j         ¦  «        ¦  «         d| j         _        | j         j                             t          ¦  «         nt          d¦  «        ‚d d d ¦  «         d S # 1 swxY w Y   d S )NFz#Initial metadata no longer allowed!)rÝ   r|   r~   r¶   r›   r€   r±   rÜ   r²   rº   rÕ   r’   r»   rÓ   Ú
ValueError)rY   r
  r°   s      r1   r"   z_Context.send_initial_metadataª  s6  € ØŒ[Ô"ð 	Lð 	LØŒ{Ô!¥ZÐ/Ð/Ý  ¤Ñ-Ô-Ð-Ð-à”;Ô7ð 
LÝ ?ØœÐ%5ñ!ô !�Ið ”OÔ(×;Ò;Ø"˜Õ&<¸T¼[Ñ&IÔ&Iñô ð ð <A�D”KÔ8Ø”K”O×'Ò'Õ(DÑEÔEÐEÐEå$Ð%JÑKÔKÐKð	Lð 	Lð 	Lñ 	Lô 	Lð 	Lð 	Lð 	Lð 	Lð 	Lð 	Lð 	Løøøð 	Lð 	Lð 	Lð 	Lð 	Lð 	Ls   �B=CÃCÃCr…   c                óh   — | j         j        5  || j         _        d d d ¦  «         d S # 1 swxY w Y   d S r8   )rÝ   r|   r…   )rY   r…   s     r1   Úset_trailing_metadataz_Context.set_trailing_metadata»  s{   € ØŒ[Ô"ð 	>ð 	>Ø,=ˆDŒKÔ)ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð 	>ð 	>rñ   c                ó   — | j         j        S r8   )rÝ   r…   rX   s    r1   r…   z_Context.trailing_metadata¿  s   € ØŒ{Ô,Ð,r3   r4   r5   rH   c                óB  — |t           j        j        k    r-t                               d¦  «         t           j        j        }d}| j        j        5  || j        _        t          j
        |¦  «        | j        _        d| j        _        t          ¦   «         ‚# 1 swxY w Y   d S )Nz4abort() called with StatusCode.OK; returning UNKNOWNÚ T)r—   r;   ÚOKÚ_LOGGERÚerrorÚUNKNOWNrÝ   r|   r4   r   ÚencoderH   rŠ   Ú	Exception)rY   r4   rH   s      r1   Úabortz_Context.abortÂ  sµ   € à•4”?Ô%Ò%Ð%Ý�MŠMØFñô ð õ ”?Ô*ˆDØˆGØŒ[Ô"ð 	ð 	Ø#ˆDŒKÔÝ")¤.°Ñ"9Ô"9ˆDŒKÔØ"&ˆDŒKÔÝ‘+”+Ðð		ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÁABÂBÂBÚstatusúgrpc.Statusc                óh   — |j         | j        _         |                      |j        |j        ¦  «         d S r8   )r…   rÝ   r  r4   rH   )rY   r  s     r1   Úabort_with_statusz_Context.abort_with_statusÐ  s-   € Ø(.Ô(@ˆŒÔ%Ø�
Š
�6”; ¤Ñ/Ô/Ð/Ð/Ð/r3   c                óh   — | j         j        5  || j         _        d d d ¦  «         d S # 1 swxY w Y   d S r8   )rÝ   r|   r4   )rY   r4   s     r1   Úset_codez_Context.set_codeÔ  s{   € ØŒ[Ô"ð 	$ð 	$Ø#ˆDŒKÔð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$ð 	$rñ   c                ó   — | j         j        S r8   )rÝ   r4   rX   s    r1   r4   z_Context.codeØ  s   € ØŒ{ÔÐr3   c                óŒ   — | j         j        5  t          j        |¦  «        | j         _        d d d ¦  «         d S # 1 swxY w Y   d S r8   )rÝ   r|   r   r  rH   )rY   rH   s     r1   Úset_detailsz_Context.set_detailsÛ  s…   € ØŒ[Ô"ð 	:ð 	:Ý")¤.°Ñ"9Ô"9ˆDŒKÔð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	:ð 	:s   �9¹=Á =r,   c                ó   — | j         j        S r8   )rÝ   rH   rX   s    r1   rH   z_Context.detailsß  s   € ØŒ{Ô"Ð"r3   c                ó   — d S r8   rO   rX   s    r1   Ú_finalize_statez_Context._finalize_stateâ  s   € Øˆr3   N)rÞ   r*   r?   r@   rÇ   rÈ   )r+   r   )r+   rã   ©r+   r•   )rì   r   r+   r   )r+   r„   )r+   rf   )r+   rö   r`   )r+   rü   )r  r  r+   r•   )r
  r   r+   r•   )r…   r   r+   r•   )r4   r5   rH   rf   r+   r•   )r  r  r+   r•   )r4   r5   r+   r•   )r+   r5   )rH   rf   r+   r•   )r+   r,   )rL   rM   rN   r”   rk   râ   ré   rë   rî   rð   rQ   rõ   rø   rú   r  r	  r"   r  r…   r  r  r  r4   r!  rH   r$  rO   r3   r1   rÛ   rÛ   l  sþ  € € € € € € Ø Ð Ð Ñ ØÐÐÑØ9Ð9Ð9Ñ9ð:ð :ð :ð :ð5ð 5ð 5ð 5ðKð Kð Kð Kð&ð &ð &ð &ðð ð ð ð8ð 8ð 8ð 8ð3ð 3ð 3ð 3ð;ð ;ð ;ð ;ð<ð <ð <ð <ðDð Dð Dð Dð
ð 
ð 
ð 
ð<ð <ð <ð <ðLð Lð Lð Lð">ð >ð >ð >ð-ð -ð -ð -ðð ð ð ð0ð 0ð 0ð 0ð$ð $ð $ð $ð ð  ð  ð  ð:ð :ð :ð :ð#ð #ð #ð #ðð ð ð ð ð r3   rÛ   c                  óf   — e Zd ZU ded<   ded<   ded<   dd
„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dS )Ú_RequestIteratorr@   rÝ   r³   Ú_callrÈ   rà   r?   r²   rÇ   c                ó0   — || _         || _        || _        d S r8   )rÝ   r(  rà   )rY   r?   r²   rÇ   s       r1   rk   z_RequestIterator.__init__ë  s    € ð ˆŒØˆŒ
Ø%9ˆÔ"Ð"Ð"r3   r+   r•   c                ó†  — | j         j        t          u rt          | j         ¦  «         d S t	          | j         ¦  «        st          ¦   «         ‚| j                             t          j	        t          ¦  «        ft          | j         | j        | j        ¦  «        ¦  «         | j         j                             t          ¦  «         d S r8   )rÝ   r~   r¶   r›   r    ÚStopIterationr(  rº   r   ÚReceiveMessageOperationr¯   rÐ   rà   r’   r»   rË   rX   s    r1   Ú_raise_or_start_receive_messagez0_RequestIterator._raise_or_start_receive_messageõ  s«   € ØŒ;Ô¥Ð+Ð+Ý˜Tœ[Ñ)Ô)Ð)Ð)Ð)Ý% d¤kÑ2Ô2ð 		8Ý‘/”/Ð!àŒJ×)Ò)ÝÔ/µÑ=Ô=Ð?Ý Ø”K ¤¨TÔ-Gñô ñô ð ð ŒKŒO×ÒÕ 6Ñ7Ô7Ð7Ð7Ð7r3   r   c                óü   — | j         j        t          u rt          | j         ¦  «         nG| j         j        €!t
          | j         j        vrt          ¦   «         ‚| j         j        }d | j         _        |S t          ¦   «         ‚r8   )	rÝ   r~   r¶   r›   r}   rË   r’   r+  ÚAssertionError©rY   r}   s     r1   Ú_look_for_requestz"_RequestIterator._look_for_request  sn   € ØŒ;Ô¥Ð+Ð+Ý˜Tœ[Ñ)Ô)Ð)Ð)àŒKÔÐ'Ý&¨d¬k¬oÐ=Ð=å‘/”/Ð!à”kÔ)ˆGØ"&ˆDŒKÔØˆNåÑÔÐr3   c                óæ   — | j         j        5  |                      ¦   «          	 | j         j                             ¦   «          |                      ¦   «         }|�|cd d d ¦  «         S ŒC# 1 swxY w Y   d S r8   )rÝ   r|   r-  Úwaitr1  r0  s     r1   Ú_nextz_RequestIterator._next  s¾   € ØŒ[Ô"ð 	#ð 	#Ø×0Ò0Ñ2Ô2Ð2ð#Ø”Ô%×*Ò*Ñ,Ô,Ð,Ø×0Ò0Ñ2Ô2�ØÐ&Ø"ð	#ð 	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð#ð	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#s   �AA&Á%A&Á&A*Á-A*c                ó   — | S r8   rO   rX   s    r1   Ú__iter__z_RequestIterator.__iter__  s   € Øˆr3   c                ó*   — |                       ¦   «         S r8   ©r4  rX   s    r1   Ú__next__z_RequestIterator.__next__  ó   € Ø�zŠz‰|Œ|Ðr3   c                ó*   — |                       ¦   «         S r8   r8  rX   s    r1   Únextz_RequestIterator.next!  r:  r3   N)r?   r@   r²   r³   rÇ   rÈ   r%  )r+   r   )r+   r'  )rL   rM   rN   r”   rk   r-  r1  r4  r6  r9  r<  rO   r3   r1   r'  r'  æ  sÆ   € € € € € € ØÐÐÑØÐÐÑØ:Ð:Ð:Ñ:ð:ð :ð :ð :ð8ð 8ð 8ð 8ðð ð ð ð#ð #ð #ð #ðð ð ð ðð ð ð ðð ð ð ð ð r3   r'  rÞ   úCallable[[], Any]c                ó   ‡ ‡‡— ˆˆ ˆfd„}|S )Nc            	     óÐ  •— ‰j         5  t          ‰¦  «        s	 d d d ¦  «         d S ‰j                             t	          j        t          ¦  «        ft          ‰‰j        ‰¦  «        ¦  «         ‰j         	                    t          ¦  «         	 ‰j                              ¦   «          ‰j        €�‰j        t          u red                     ‰j        j        ¦  «        } t%          ‰‰j        t          j        j        t+          j        | ¦  «        ¦  «         	 d d d ¦  «         d S ‰j        t.          u r	 d d d ¦  «         d S n‰j        }d ‰_        |cd d d ¦  «         S ŒÍ# 1 swxY w Y   d S )NTz*"{}" requires exactly one request message.)r|   r    r²   rº   r   r,  r¯   rÐ   r’   r»   rË   r3  r}   r~   rÂ   Úformatræ   rP   r¿   r;   Úunimplementedr   r  r¶   )rH   r}   rÇ   rÞ   r?   s     €€€r1   Úunary_requestz%_unary_request.<locals>.unary_request*  s  ø€ ØŒ_ð 	'ð 	'Ý'¨Ñ.Ô.ð 'Øð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð ”×1Ò1ÝÔ3µLÑAÔAÐCÝ$Ø˜yœ~Ð/Cñô ñô ð ð ”	—’Õ4Ñ5Ô5Ð5ð'Ø”O×(Ò(Ñ*Ô*Ð*Ø”}Ð,Ø œ<­7Ð2Ð2Ø&R×&YÒ&YØ )Ô 6Ô =ñ'ô '˜Gõ #Ø %Ø )¤Ý &Ô 1Ô ?Ý '¤¨wÑ 7Ô 7ñ	ô ð ð $(ð1	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð2 #œ\­ZÐ7Ð7Ø#'ð5	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð2 8ð #(¤-˜Ø(,˜œØ&ð=	'ð 	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð'ð	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's)   ‰E§C-EÄ!EÄ=EÅEÅEÅ"ErO   )rÞ   r?   rÇ   rB  s   ``` r1   Ú_unary_requestrC  %  s1   øøø€ ð
'ð 'ð 'ð 'ð 'ð 'ð 'ðB Ðr3   Úbehaviorr   Úargumentr   Úsend_response_callbackú(Optional[Callable[[ResponseType], None]]ú8Tuple[Union[ResponseType, Iterator[ResponseType]], bool]c                ó2  — ddl m}  || ||¦  «        5 }	 d }|� ||||¦  «        }n |||¦  «        }|dfcd d d ¦  «         S # t          $ �r:}	|j        5  |j        r't          || j        t          j        j	        d¦  «         n×|	|j
        vrÎ	 d                     |	¦  «        }
ne# t          $ rX d}
t                               t          j        t!          |	¦  «        |	|	j        ¦  «        ¦  «         t          j        ¦   «          Y nw xY wt                               |
¦  «         t          || j        t          j        j	        t'          j        |
¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   Y d }	~	d d d ¦  «         dS d }	~	ww xY w# 1 swxY w Y   d S )Nr   )Ú_create_servicer_contextTó   RPC Abortedz!Exception calling application: {}z1Calling application raised unprintable Exception!©NF)r—   rJ  r  r|   rŠ   r¿   r²   r   r;   r<   rˆ   r@  r  Ú	exceptionÚ	tracebackÚformat_exceptionÚtypeÚ__traceback__Ú	print_excr   r  )rÞ   r?   rD  rE  rÇ   rF  rJ  r{   Úresponse_or_iteratorrM  rH   s              r1   Ú_call_behaviorrT  N  s²  € ð .Ð-Ð-Ð-Ð-Ð-à	!Ð	!Ø�5Ð.ñ
ô 
ð -à	ð*	Ø#'Ð Ø%Ð1Ø'/ xØ˜gÐ'=ñ(ô (Ð$Ð$ð (0 x°¸'Ñ'BÔ'BÐ$Ø'¨Ð-ð-ð -ð -ð -ñ -ô -ð -ð -øõ ð !	ñ !	ð !	Ø”ð ð Ø”=ð ÝØØ!œÝÔ)Ô1Ø&ñ	ô ð ð ð  eÔ&6Ð6Ð6ð.Ø"E×"LÒ"LØ%ñ#ô #˜˜øõ %ð .ð .ð .àOð  õ  ×)Ò)Ý%Ô6Ý $ Y¡¤Ø )Ø )Ô 7ñô ñô ð õ "Ô+Ñ-Ô-Ð-Ð-Ð-ð.øøøõ ×%Ò% gÑ.Ô.Ð.ÝØØ!œÝÔ)Ô1Ýœ wÑ/Ô/ñ	ô ð ð5ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð@ �;�;�;ð[-ð -ð -ñ -ô -ð -ð -ð -øøøøð!	øøøð-ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s~   ”F–!AÁF	ÁFÁ8E(ÂB%Â$E(Â%AD	ÄE(ÄD	ÄAE(ÅFÅ(E,Å,FÅ/E,Å0FÅ3FÆF	Æ	FÆFÆFÚresponse_iteratorúIterator[ResponseType]úTuple[ResponseType, bool]c           
     óè  — 	 t          |¦  «        dfS # t          $ r Y dS t          $ rÈ}|j        5  |j        r't          || j        t          j        j	        d¦  «         np||j
        vrgd                     |¦  «        }t                               |¦  «         t          || j        t          j        j	        t          j        |¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   Y d }~dS d }~ww xY w)NTrµ   rK  z!Exception iterating responses: {}rL  )r<  r+  r  r|   rŠ   r¿   r²   r   r;   r<   rˆ   r@  r  rM  r   r  )rÞ   r?   rU  rM  rH   s        r1   Ú%_take_response_from_response_iteratorrY  ˆ  s[  € ð
ÝÐ%Ñ&Ô&¨Ð,Ð,øÝð ð ð ØˆzˆzÝð ð ð ØŒ_ð 	ð 	ØŒ}ð ÝØØ”NÝÔ%Ô-Ø"ñ	ô ð ð ð  %Ô"2Ð2Ð2Ø=×DÒDÀYÑOÔO�Ý×!Ò! 'Ñ*Ô*Ð*ÝØØ”NÝÔ%Ô-Ý”N 7Ñ+Ô+ñ	ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð" ˆ{ˆ{ˆ{ˆ{ˆ{øøøøð%øøøs=   ‚ “
C1 	C1©C,°BCÃC,ÃC	ÃC,Ã"C	Ã#C,Ã,C1ÚresponseÚresponse_serializerúOptional[SerializingFunction]r†   c                óÂ   — t          j        ||¦  «        }|€G|j        5  t          || j        t
          j        j        d¦  «         d d d ¦  «         n# 1 swxY w Y   d S |S )Ns   Failed to serialize response!)r   Ú	serializer|   r¿   r²   r   r;   rÍ   )rÞ   r?   rZ  r[  Úserialized_responses        r1   Ú_serialize_responser`  ¦  s®   € õ "Ô+¨HÐ6IÑJÔJÐØÐ"ØŒ_ð 	ð 	ÝØØ”ÝÔ!Ô*Ø0ñ	ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ˆtà"Ð"s   Ÿ'AÁAÁAúUnion[int, cygrpc.WriteFlag]c                ó@   — | j         rt          j        j        S t          S r8   )rƒ   r   Ú	WriteFlagÚno_compressr¯   rC   s    r1   Ú%_get_send_message_op_flags_from_statere  º  s!   € ð Ô%ð ÝÔÔ+Ð+åÐr3   c                óT   — | j         5  d| _        d d d ¦  «         d S # 1 swxY w Y   d S rL  )r|   rƒ   rC   s    r1   Ú_reset_per_message_staterg  Ã  sv   € Ø	Œð /ð /Ø).ˆÔ&ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð /ð /s   ˆ�!¤!r_  r   c                ól  — |j         5  t          |¦  «        s	 d d d ¦  «         dS |j        rAt          |d ¦  «        t	          j        |t          |¦  «        ¦  «        f}d|_        t          }n*t	          j        |t          |¦  «        ¦  «        f}t          }| j	         
                    |t          ||¦  «        ¦  «         |j                             |¦  «         t          |¦  «         	 |j                              ¦   «          ||j        vrt          |¦  «        cd d d ¦  «         S Œ># 1 swxY w Y   d S rL  )r|   r    r€   r±   r   ÚSendMessageOperationre  Ú-_SEND_INITIAL_METADATA_AND_SEND_MESSAGE_TOKENÚ_SEND_MESSAGE_TOKENr²   rº   rÙ   r’   r»   rg  r3  )rÞ   r?   r_  r¾   rœ   s        r1   Ú_send_responserl  È  s¬  € ð 
Œð 7ð 7Ý# EÑ*Ô*ð 	7Øð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð Ô-ð ,å3°E¸4Ñ@Ô@ÝÔ/Ø+Ý=¸eÑDÔDñô ð�
ð 27�Ô.ÝE��õ Ô/Ø+Ý=¸eÑDÔDñô ð�
õ ,�ØŒN×-Ò-Ø�M¨%°Ñ7Ô7ñô ð ð ŒI�MŠM˜%Ñ Ô Ð Ý$ UÑ+Ô+Ð+ð7Ø”×$Ò$Ñ&Ô&Ð&Ø ¤	Ð)Ð)Ý/°Ñ6Ô6ð=7ð 7ð 7ð 7ñ 7ô 7ð 7ð 7ð67ð77ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð 7ð 7s   ˆD)¦C5D)Ä(D)Ä)D-Ä0D-c           	     ól  — |j         5  |j        t          u�rt          |¦  «        }t	          |¦  «        }t          j        |j        ||t          ¦  «        g}|j	        r#| 
                    t          |d ¦  «        ¦  «         |�5| 
                    t          j        |t          |¦  «        ¦  «        ¦  «         | j                             |t!          |t"          ¦  «        ¦  «         d|_        t'          |¦  «         |j                             t"          ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rµ   )r|   r~   r¶   rD   rI   r   r·   r…   r¯   r€   r™   r±   ri  re  r²   rº   r¥   r¹   r‡   rg  r’   r»   )rÞ   r?   r_  r4   rH   r¾   s         r1   Ú_statusrn  ì  sz  € ð
 
Œð :ð :ØŒ<�zÐ)Ñ)Ý# EÑ*Ô*ˆDÝ˜u‘o”oˆGåÔ4ØÔ+¨T°7½Lñô ðˆJð
 Ô-ð PØ×!Ò!Õ"AÀ%ÈÑ"NÔ"NÑOÔOÐOØ"Ð.Ø×!Ò!ÝÔ/Ø+Ý=¸eÑDÔDñô ñô ð ð ŒN×-Ò-ØÝ(¨Õ0NÑOÔOñô ð ð "ˆEŒNÝ$ UÑ+Ô+Ð+ØŒI�MŠMÕ8Ñ9Ô9Ð9ð1:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð :ð :s   ˆDD)Ä)D-Ä0D-Úargument_thunkc                ó`  — t          j        | ¦  «         	  |¦   «         }|�=t          | ||||¦  «        \  }}|r%t          | |||¦  «        }	|	�t	          | ||	¦  «         n## t
          $ r t          j        ¦   «          Y nw xY wt          j        ¦   «          d S # t          j        ¦   «          w xY wr8   )	r   Ú'install_context_from_request_call_eventrT  r`  rn  r  rN  rR  Úuninstall_context)
rÞ   r?   rD  ro  rÇ   r[  rE  rZ  Úproceedr_  s
             r1   Ú_unary_response_in_poolrt    sê   € õ Ô2°9Ñ=Ô=Ð=ð#Ø!�>Ñ#Ô#ˆØÐÝ .Ø˜5 (¨HÐ6Jñ!ô !ÑˆH�gð ð CÝ&9Ø˜u hÐ0Cñ'ô 'Ð#ð 'Ð2Ý˜I uÐ.AÑBÔBÐBøøÝð ð ð ÝÔÑÔÐÐÐðøøøõ 	Ô Ñ"Ô"Ð"Ð"Ð"ø�Ô Ñ"Ô"Ð"Ð"øøøs*   –A	A  ÁB Á B Á=B Á?B Â B ÂB-c                óª  ‡ ‡‡— t          j        ‰ ¦  «         dˆˆ ˆfd„}	  |¦   «         }|�Wt          |d¦  «        r|j        rt	          ‰ ‰||||¬¦  «         n*t	          ‰ ‰|||¦  «        \  }}	|	rt          ‰ ‰||¦  «         n## t          $ r t          j        ¦   «          Y nw xY wt          j	        ¦   «          d S # t          j	        ¦   «          w xY w)	NrZ  r   r+   r•   c                ó€   •— | €t          ‰‰d ¦  «         d S t          ‰‰| ‰¦  «        }|�t          ‰‰|¦  «         d S d S r8   )rn  r`  rl  )rZ  r_  r[  rÞ   r?   s     €€€r1   Úsend_responsez/_stream_response_in_pool.<locals>.send_response2  sd   ø€ ØÐÝ�I˜u dÑ+Ô+Ð+Ð+Ð+å"5Ø˜5 (Ð,?ñ#ô #Ðð #Ð.Ý˜y¨%Ð1DÑEÔEÐEÐEÐEð /Ð.r3   Úexperimental_non_blocking)rF  )rZ  r   r+   r•   )
r   rq  Úhasattrrx  rT  Ú3_send_message_callback_to_blocking_iterator_adapterr  rN  rR  rr  )
rÞ   r?   rD  ro  rÇ   r[  rw  rE  rU  rs  s
   ``   `    r1   Ú_stream_response_in_poolr{  (  sV  øøø€ õ Ô2°9Ñ=Ô=Ð=ðFð Fð Fð Fð Fð Fð Fð Fð#Ø!�>Ñ#Ô#ˆØÐå˜Ð"=Ñ>Ô>ðàÔ6ðõ ØØØØØ(Ø+8ðñ ô ð ð õ .<Ø˜u h°Ð:Nñ.ô .Ñ*Ð! 7ð ð ÝGØ! 5¨-Ð9Jñô ð øøõ ð ð ð ÝÔÑÔÐÐÐðøøøõ 	Ô Ñ"Ô"Ð"Ð"Ð"ø�Ô Ñ"Ô"Ð"Ð"øøøs*   ¡A#B ÂB= ÂB%Â"B= Â$B%Â%B= Â=Cc                ó.   — | j         t          uo| j         S r8   )r~   r¶   r‡   rC   s    r1   r    r    Y  s   € ØŒ<�zÐ)Ð@°%´.Ð.@Ð@r3   úCallable[[ResponseType], None]c                óp   — 	 t          | ||¦  «        \  }}|r ||¦  «         t          |¦  «        sd S nd S Œ6r8   )rY  r    )rÞ   r?   rF  rU  rZ  rs  s         r1   rz  rz  ]  sd   € ð	ÝAØ�uÐ/ñ
ô 
Ñˆ�'ð ð 	Ø"Ð" 8Ñ,Ô,Ð,Ý'¨Ñ.Ô.ð Ø�ðð ˆEð	r3   Údefault_thread_poolúfutures.ThreadPoolExecutorc                ór   — t          | d¦  «        r&t          | j        t          j        ¦  «        r| j        S |S )NÚexperimental_thread_pool)ry  Ú
isinstancer‚  r   ÚThreadPoolExecutor)rD  r  s     r1   Ú _select_thread_pool_for_behaviorr…  o  sD   € õ ˆxÐ3Ñ4Ô4ð #½ØÔ)­7Ô+Eñ:ô :ð #ð Ô0Ð0à"Ð"r3   ry   úgrpc.RpcMethodHandlerúfutures.Futurec           
     óÌ   — t          | ||j        ¦  «        }t          |j        |¦  «        }|                     |j        j        t          | ||j        ||j        |j        ¦  «        S r8   )	rC  rÇ   r…  Úunary_unaryÚsubmitr{   Úrunrt  r[  ©rÞ   r?   ry   r  rB  Úthread_pools         r1   Ú_handle_unary_unaryrŽ  {  sw   € õ #Ø�5˜.Ô=ñô €Mõ 3ØÔ"Ð$7ñô €Kð ×ÒØŒÔÝØØØÔ"ØØÔ+ØÔ*ñ	ô 	ð 	r3   c           
     óÌ   — t          | ||j        ¦  «        }t          |j        |¦  «        }|                     |j        j        t          | ||j        ||j        |j        ¦  «        S r8   )	rC  rÇ   r…  Úunary_streamrŠ  r{   r‹  r{  r[  rŒ  s         r1   Ú_handle_unary_streamr‘  “  sw   € õ #Ø�5˜.Ô=ñô €Mõ 3ØÔ#Ð%8ñô €Kð ×ÒØŒÔÝ ØØØÔ#ØØÔ+ØÔ*ñ	ô 	ð 	r3   c           
     óÞ   ‡— t          || j        |j        ¦  «        Št          |j        |¦  «        }|                     |j        j        t          | ||j        ˆfd„|j        |j	        ¦  «        S )Nc                 ó   •— ‰ S r8   rO   ©Úrequest_iterators   €r1   ú<lambda>z&_handle_stream_unary.<locals>.<lambda>½  ó   ø€ Ð € r3   )
r'  r²   rÇ   r…  Ústream_unaryrŠ  r{   r‹  rt  r[  ©rÞ   r?   ry   r  r�  r•  s        @r1   Ú_handle_stream_unaryrš  «  s„   ø€ õ (ØˆyŒ~˜~ÔBñô Ðõ 3ØÔ#Ð%8ñô €Kð ×ÒØŒÔÝØØØÔ#Ø Ð Ð Ð ØÔ+ØÔ*ñ	ô 	ð 	r3   c           
     óÞ   ‡— t          || j        |j        ¦  «        Št          |j        |¦  «        }|                     |j        j        t          | ||j        ˆfd„|j        |j	        ¦  «        S )Nc                 ó   •— ‰ S r8   rO   r”  s   €r1   r–  z'_handle_stream_stream.<locals>.<lambda>Õ  r—  r3   )
r'  r²   rÇ   r…  Ústream_streamrŠ  r{   r‹  r{  r[  r™  s        @r1   Ú_handle_stream_streamrž  Ã  s„   ø€ õ (ØˆyŒ~˜~ÔBñô Ðõ 3ØÔ$Ð&9ñô €Kð ×ÒØŒÔÝ ØØØÔ$Ø Ð Ð Ð ØÔ+ØÔ*ñ	ô 	ð 	r3   Úmethod_with_handlerÚinterceptor_pipelineú'Optional[_interceptor._ServicePipeline]r\   c                ó  ‡— dˆfd„}‰                      ¦   «         }|st          j        | j        j        ¦  «        }t          || j        ¦  «        }|�!|j                             |j	        ||¦  «        S |j                             ||¦  «        S )Nr[   rK   r+   r\   c                ó.   •— ‰                      | ¦  «        S r8   )r_   )r[   rŸ  s    €r1   Úquery_handlersz,_find_method_handler.<locals>.query_handlersá  s   ø€ ð #×*Ò*Ð+?Ñ@Ô@Ð@r3   ra   )
rZ   r   rô   ræ   rP   rK   rQ   r{   r‹  Úexecute)rÞ   r?   rŸ  r   r¤  Úmethod_namer[   s     `    r1   Ú_find_method_handlerr§  Û  s¹   ø€ ðAð Að Að Að Að Að
 &×*Ò*Ñ,Ô,€KØð DÝ”n YÔ%;Ô%BÑCÔCˆå.ØØÔ%ñô Ðð
 Ð'ØŒ}× Ò Ø Ô(¨.Ð:Nñ
ô 
ð 	
ð Œ}× Ò  Ð1EÑFÔFÐFr3   Ú	rpc_stater  c                óÌ   ‡— t          ‰d ¦  «        t          j        t          ¦  «        t          j        d ||t          ¦  «        f}| j                             |ˆfd„¦  «         d S )Nc                ó   •— ‰dfS rž   rO   )Úignored_eventr¨  s    €r1   r–  z_reject_rpc.<locals>.<lambda>  s   ø€ ØØð
€ r3   )r±   r   ÚReceiveCloseOnServerOperationr¯   r·   r²   rº   )rÞ   r¨  r  rH   r¾   s    `   r1   Ú_reject_rpcr­  ÷  s}   ø€ õ 	(¨	°4Ñ8Ô8ÝÔ,­\Ñ:Ô:ÝÔ,Ø�&˜'¥<ñ	
ô 	
ð€Jð „N×%Ò%Øð	
ð 	
ð 	
ð 	
ñô ð ð ð r3   r�  c                ó  — |j         5  | j                             t          j        t
          ¦  «        ft          |¦  «        ¦  «         |j                             t          ¦  «         |j
        rC|j        rt          | |||¦  «        cd d d ¦  «         S t          | |||¦  «        cd d d ¦  «         S |j        rt          | |||¦  «        cd d d ¦  «         S t          | |||¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r8   )r|   r²   rº   r   r¬  r¯   rÆ   r’   r»   rÄ   Úrequest_streamingÚresponse_streamingrž  rš  r‘  rŽ  )rÞ   r?   ry   r�  s       r1   Ú_handle_with_method_handlerr±    s´  € ð 
Œð ð ØŒ×)Ò)ÝÔ1µ,Ñ?Ô?ÐAÝ$ UÑ+Ô+ñ	
ô 	
ð 	
ð 	Œ	�ŠÕ4Ñ5Ô5Ð5ØÔ+ð 	ØÔ0ð Ý,Ø˜u n°kñô ðð ð ð ñ ô ð ð õ ,Ø˜u n°kñô ðð ð ð ñ ô ð ð ð  Ô0ð Ý+Ø˜u n°kñô ð#ð ð ð ñ ô ð ð õ* +Ø˜u n°kñô ð+ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s$   ˆA?C5ÂC5Â2C5ÃC5Ã5C9Ã<C9Úconcurrency_exceededú4Tuple[Optional[_RPCState], Optional[futures.Future]]c                ó6  — | j         sdS | j        j        s|                     ¦   «         rït	          ¦   «         }	 t          | |||¦  «        }nk# t          $ r^}d                     |¦  «        }t           	                    |¦  «         t          | |t          j        j        d¦  «         |dfcY d}~S d}~ww xY w|€%t          | |t          j        j        d¦  «         |dfS |r%t          | |t          j        j        d¦  «         |dfS |t!          | |||¦  «        fS dS )aã  Handles RPC based on provided handlers.

      When receiving a call event from Core, registered method will have its
    name as tag, we pass the tag as registered_method_name to this method,
    then we can find the handler in registered_method_handlers based on
    the method name.

      For call event with unregistered method, the method name will be included
    in rpc_event.call_details.method and we need to query the generics handlers
    to find the actual handler.
    )NNzException servicing handler: {}s   Error in service handler!Ns   Method not found!s   Concurrent RPC limit exceeded!)Úsuccessræ   rP   rZ   r@   r§  r  r@  r  rM  r­  r   r;   r<   rA  Úresource_exhaustedr±  )	rÞ   rŸ  r   r�  r²  r¨  ry   rM  rH   s	            r1   Ú_handle_callr·  -  s„  € ð$ Ôð ØˆzØÔÔ$ð +Ð(;×(@Ò(@Ñ(BÔ(Bð +Ý‘K”Kˆ	ð	#Ý1ØØØ#Ø$ñ	ô ˆNˆNøõ ð 		#ð 		#ð 		#Ø7×>Ò>¸yÑIÔIˆGÝ×Ò˜gÑ&Ô&Ð&ÝØØÝÔ!Ô)Ø,ñ	ô ð ð ˜d�?Ð"Ð"Ð"Ð"Ð"Ð"øøøøð		#øøøð Ð!ÝØØÝÔ!Ô/Ø$ñ	ô ð ð ˜d�?Ð"Ø!ð 	ÝØØÝÔ!Ô4Ø1ñ	ô ð ð ˜d�?Ð"ð Ý+Ø˜y¨.¸+ñô ðð ð ˆzs   ¹A Á
B4ÁAB/Â)B4Â/B4c                  ó   — e Zd ZdZdZdZdS )Ú_ServerStageÚstoppedÚstartedÚgraceN)rL   rM   rN   ÚSTOPPEDÚSTARTEDÚGRACErO   r3   r1   r¹  r¹  o  s   € € € € € à€GØ€GØ€E€E€Er3   r¹  c                  ó®   — e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   d"d „Zd!S )#Ú_ServerStatezthreading.RLockÚlockúcygrpc.CompletionQueueÚcompletion_queueúcygrpc.ServerÚserverrr   rq   ú Dict[str, grpc.RpcMethodHandler]Úregistered_method_handlersr¡  r   r€  r�  r¹  Ústageúthreading.EventÚtermination_eventzList[threading.Event]Úshutdown_eventsúOptional[int]Úmaximum_concurrent_rpcsÚintÚactive_rpc_countzSet[_RPCState]Ú
rpc_stateszSet[str]r’   r   Úserver_deallocatedú Sequence[grpc.GenericRpcHandler]c                ó†  — t          j        ¦   «         | _        || _        || _        t          |¦  «        | _        || _        || _        t          j
        | _        t          j        ¦   «         | _        | j        g| _        || _        d| _        i | _        t%          ¦   «         | _        t%          ¦   «         | _        d| _        d S )Nr   F)r�   ÚRLockrÂ  rÄ  rÆ  Úlistrq   r   r�  r¹  r½  rÉ  ÚEventrË  rÌ  rÎ  rÐ  rÈ  r‘   rÑ  r’   rÒ  )rY   rÄ  rÆ  rq   r   r�  rÎ  s          r1   rk   z_ServerState.__init__ˆ  s«   € õ ”OÑ%Ô%ˆŒ	Ø 0ˆÔØˆŒÝ $Ð%5Ñ 6Ô 6ˆÔØ$8ˆÔ!Ø&ˆÔÝ!Ô)ˆŒ
Ý!*¤Ñ!2Ô!2ˆÔØ $Ô 6Ð7ˆÔØ'>ˆÔ$Ø !ˆÔØ*,ˆÔ'õ ™%œ%ˆŒÝ‘5”5ˆŒð #(ˆÔÐÐr3   N)rÄ  rÃ  rÆ  rÅ  rq   rÓ  r   r¡  r�  r€  rÎ  rÍ  )rL   rM   rN   r”   rk   rO   r3   r1   rÁ  rÁ  v  sÛ   € € € € € € ØÐÐÑØ,Ð,Ð,Ñ,ØÐÐÑØ2Ð2Ð2Ñ2Ø@Ð@Ð@Ñ@ØAÐAÐAÑAØ+Ð+Ð+Ñ+ØÐÐÑØ&Ð&Ð&Ñ&Ø*Ð*Ð*Ñ*Ø*Ð*Ð*Ñ*ØÐÐÑØÐÐÑØ€M€M�MØÐÐÑð(ð (ð (ð (ð (ð (r3   rÁ  rq   ú Iterable[grpc.GenericRpcHandler]c                óz   — | j         5  | j                             |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r8   )rÂ  rq   Úextend)r?   rq   s     r1   Ú_add_generic_handlersrÛ  ¦  sˆ   € ð 
Œð 8ð 8ØÔ×%Ò%Ð&6Ñ7Ô7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð 8ð 8ó   ˆ0°4·4Úmethod_handlersrÇ  c                óz   — | j         5  | j                             |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r8   )rÂ  rÈ  Úupdate)r?   rÝ  s     r1   Ú_add_registered_method_handlersrà  ­  s›   € ð 
Œð Að AØÔ(×/Ò/°Ñ@Ô@Ð@ðAð Að Añ Aô Að Að Að Að Að Að Að Aøøøð Að Að Að Að Að ArÜ  ÚaddressrÏ  c                óx   — | j         5  | j                             |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r8   )rÂ  rÆ  Úadd_http2_port)r?   rá  s     r1   Ú_add_insecure_porträ  ´  s�   € Ø	Œð 4ð 4ØŒ|×*Ò*¨7Ñ3Ô3ð4ð 4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4ð 4ð 4s   ˆ/¯3¶3Úserver_credentialsúgrpc.ServerCredentialsc                ó„   — | j         5  | j                             ||j        ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r8   )rÂ  rÆ  rã  Ú_credentials)r?   rá  rå  s      r1   Ú_add_secure_portré  ¹  sŽ   € ð
 
Œð 
ð 
ØŒ|×*Ò*ØÐ'Ô4ñ
ô 
ð
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ˆ 5µ9¼9c                óš   — | j                              | j        | j        t          ¦  «         | j                             t          ¦  «         d S r8   )rÆ  r    rÄ  Ú_REQUEST_CALL_TAGr’   r»   rC   s    r1   Ú_request_callrì  Ä  sG   € Ø	„L×ÒØÔ Ô 6Õ8Iñô ð ð 
„I‡M‚MÕ#Ñ$Ô$Ð$Ð$Ð$r3   rP   c                óŒ   — |}| j                              | j        | j        ||¦  «         | j                             |¦  «         d S r8   )rÆ  Úrequest_registered_callrÄ  r’   r»   )r?   rP   Úregistered_call_tags      r1   Ú_request_registered_callrð  Ë  sQ   € Ø ÐØ	„L×(Ò(ØÔØÔØØñ	ô ð ð 
„I‡M‚MÐ%Ñ&Ô&Ð&Ð&Ð&r3   c                ó¶   — | j         sQ| j        sJ| j                             ¦   «          | j        D ]}|                     ¦   «          Œt          j        | _        dS dS rŒ   )	rÑ  r’   rÆ  ÚdestroyrÌ  r‘   r¹  r½  rÉ  )r?   Úshutdown_events     r1   Ú_stop_servingrô  ×  se   € ØÔð  E¤Ið ØŒ×ÒÑÔÐØ#Ô3ð 	!ð 	!ˆNØ×ÒÑ Ô Ð Ð Ý"Ô*ˆŒØˆtàˆur3   c                óf   — | j         5  | xj        dz  c_        d d d ¦  «         d S # 1 swxY w Y   d S )Né   )rÂ  rÐ  rC   s    r1   Ú_on_call_completedr÷  â  s‚   € Ø	Œð $ð $ØÐÔ !Ñ#ÐÔð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $s   ˆ&¦*­*Úeventc                ón  ‡ — d}|j         t          u rQ‰ j        5  ‰ j                             t          ¦  «         t          ‰ ¦  «        rd}d d d ¦  «         n# 1 swxY w Y   �nR|j         t          u s!|j         ‰ j                             ¦   «         v �r…d }|j         ‰ j                             ¦   «         v r1|j         }t          |‰ j         
                    |d ¦  «        ¦  «        }nt          ‰ j        ¦  «        }‰ j        5  ‰ j                             |j         ¦  «         ‰ j        d uo‰ j        ‰ j        k    }t          ||‰ j        ‰ j        |¦  «        \  }}|�‰ j                             |¦  «         |�(‰ xj        dz  c_        |                     ˆ fd„¦  «         ‰ j        t,          j        u r<|‰ j                             ¦   «         v rt1          ‰ |¦  «         n!t3          ‰ ¦  «         nt          ‰ ¦  «        rd}d d d ¦  «         n# 1 swxY w Y   nž|                      |¦  «        \  }}|D ]7}		  |	¦   «          Œ# t4          $ r t6                               d¦  «         Y Œ4w xY w|�J‰ j        5  ‰ j                             |¦  «         t          ‰ ¦  «        rd}d d d ¦  «         n# 1 swxY w Y   |S )NTFrö  c                ó"   •— t          ‰¦  «        S r8   )r÷  )Úunused_futurer?   s    €r1   r–  z-_process_event_and_continue.<locals>.<lambda>  s   ø€ Õ*<¸UÑ*CÔ*C€ r3   zException calling callback!)ÚtagÚ_SHUTDOWN_TAGrÂ  r’   rŸ   rô  rë  rÈ  Úkeysre   r:   rp   rq   rÎ  rÐ  r·  r   r�  rÑ  r»   Úadd_done_callbackrÉ  r¹  r¾  rð  rì  r  r  rM  )
r?   rø  Úshould_continueÚregistered_method_namerŸ  r²  r¨  Ú
rpc_futurer‰   rì   s
   `         r1   Ú_process_event_and_continuer  è  sÝ  ø€ ð €OØ„y•MÐ!Ð!ØŒZð 	(ð 	(ØŒI×Ò�]Ñ+Ô+Ð+Ý˜UÑ#Ô#ð (Ø"'�ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ùð
 	Œ	Õ&Ð&Ð&ØŒ9˜Ô8×=Ò=Ñ?Ô?Ð?Ñ?à!%ÐØŒ9˜Ô8×=Ò=Ñ?Ô?Ð?Ð?Ø%*¤YÐ"Ý"3Ø&ØÔ0×4Ò4Ø*¨Dñô ñ#ô #ÐÐõ #1ØÔ&ñ#ô #Ðð ŒZð 	(ð 	(ØŒI×Ò˜UœYÑ'Ô'Ð'àÔ-°TÐ9ð LØÔ*¨eÔ.KÒKð !õ %1ØØ#ØÔ*ØÔ!Ø$ñ%ô %Ñ!ˆI�zð Ð$ØÔ ×$Ò$ YÑ/Ô/Ð/ØÐ%ØÐ&Ô&¨!Ñ+Ð&Ô&Ø×,Ò,ØCÐCÐCÐCñô ð ð Œ{�lÔ2Ð2Ð2à*ØÔ7×<Ò<Ñ>Ô>ð?ð ?õ -¨UÐ4JÑKÔKÐKÐKå! %Ñ(Ô(Ð(Ð(Ý˜uÑ%Ô%ð (Ø"'�ð;	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(øð>  %Ÿyšy¨Ñ/Ô/Ñˆ	�9Ø!ð 	Að 	AˆHðAØ�‘
”
�
�
øÝð Að Að AÝ×!Ò!Ð"?Ñ@Ô@Ð@Ð@Ð@ðAøøøàÐ Ø”ð ,ð ,ØÔ ×'Ò'¨	Ñ2Ô2Ð2Ý  Ñ'Ô'ð ,Ø&+�Oð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ÐsH   ™1AÁAÁAÄ C?HÈHÈHÈ4
H?È?$I&É%I&É2,J*Ê*J.Ê1J.c                óø   — 	 t          j         ¦   «         t          z   }| j                             |¦  «        }| j        rt          | ¦  «         |j        t          j        j	        k    rt          | |¦  «        sd S d }Œzr8   )rè   Ú"_DEALLOCATED_SERVER_CHECK_PERIOD_SrÄ  ÚpollrÒ  Ú_begin_shutdown_onceÚcompletion_typer   ÚCompletionTypeÚqueue_timeoutr  )r?   Útimeoutrø  s      r1   Ú_server  /  s~   € ðÝ”)‘+”+Õ BÑBˆØÔ&×+Ò+¨GÑ4Ô4ˆØÔ#ð 	(Ý  Ñ'Ô'Ð'ØÔ ¥FÔ$9Ô$GÒGÐGÝ.¨u°eÑ<Ô<ð Ø�ð ˆðr3   c                ó  — | j         5  | j        t          j        u rU| j                             | j        t          ¦  «         t          j        | _        | j	         
                    t          ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r8   )rÂ  rÉ  r¹  r¾  rÆ  r   rÄ  rý  r¿  r’   r»   rC   s    r1   r  r  >  s·   € Ø	Œð )ð )ØŒ;�,Ô.Ð.Ð.ØŒL×!Ò! %Ô"8½-ÑHÔHÐHÝ&Ô,ˆEŒKØŒI�MŠM�-Ñ(Ô(Ð(ð	)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð )ð )s   ˆA)A>Á>BÂBr¼  úOptional[float]rÊ  c                ó0  ‡ ‡‡— ‰ j         5  ‰ j        t          j        u r5t	          j        ¦   «         Š‰                     ¦   «          ‰cd d d ¦  «         S t          ‰ ¦  «         t	          j        ¦   «         Š‰ j         	                    ‰¦  «         ‰€‰ j
                             ¦   «          n>ˆˆˆ fd„}t	          j        |¬¦  «        }|                     ¦   «          ‰cd d d ¦  «         S 	 d d d ¦  «         n# 1 swxY w Y   ‰                     ¦   «          ‰S )Nc                 ó¦   •— ‰                      ‰ ¬¦  «         ‰j        5  ‰j                             ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S ©N)r  )r3  rÂ  rÆ  Úcancel_all_calls)r¼  ró  r?   s   €€€r1   Úcancel_all_calls_after_gracez+_stop.<locals>.cancel_all_calls_after_graceT  sš   ø€ Ø"×'Ò'°Ð'Ñ6Ô6Ð6Øœð 8ð 8Øœ×5Ò5Ñ7Ô7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð 8ð 8s   ŸAÁA
ÁA
)Útarget)rÂ  rÉ  r¹  r½  r�   r×  r‘   r  rÌ  r™   rÆ  r  ÚThreadÚstartr3  )r?   r¼  r  Úthreadró  s   ``  @r1   Ú_stopr  F  sœ  øøø€ Ø	Œð &ð &ØŒ;�,Ô.Ð.Ð.Ý&œ_Ñ.Ô.ˆNØ×ÒÑ Ô Ð Ø!ð	&ð &ð &ð &ñ &ô &ð &ð &õ ! Ñ'Ô'Ð'Ý&œ_Ñ.Ô.ˆNØÔ!×(Ò(¨Ñ8Ô8Ð8Øˆ}Ø”×-Ò-Ñ/Ô/Ð/Ð/ð8ð 8ð 8ð 8ð 8ð 8ð 8õ
 #Ô)Ð1MÐNÑNÔN�Ø—’‘”�Ø%ð)&ð &ð &ð &ñ &ô &ð &ð &ð 0ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð* ×ÒÑÔÐØÐs   ‹<C7ÁB	C7Ã7C;Ã>C;c                óÂ  — | j         5  | j        t          j        urt	          d¦  «        ‚| j                             ¦   «          t          j        | _        | j         	                    ¦   «         D ]}t          | |¦  «         Œt          | ¦  «         t          j        t          | f¬¦  «        }d|_        |                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nz$Cannot start already-started server!)r  ÚargsT)rÂ  rÉ  r¹  r½  r  rÆ  r  r¾  rÈ  rþ  rð  rì  r�   r  r  Údaemon)r?   rP   r  s      r1   Ú_startr  `  s  € Ø	Œð ð ØŒ;�lÔ2Ð2Ð2ÝÐCÑDÔDÐDØŒ×ÒÑÔÐÝ"Ô*ˆŒàÔ6×;Ò;Ñ=Ô=ð 	4ð 	4ˆFÝ$ U¨FÑ3Ô3Ð3Ð3å�eÑÔÐÝÔ!­°u°hÐ?Ñ?Ô?ˆØˆŒØ�Š‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ˆB?CÃCÃCÚgeneric_rpc_handlersc                óz   — | D ]7}t          |dd ¦  «        }|€"t          d                     |¦  «        ¦  «        ‚Œ8d S )Nrw   zT"{}" must conform to grpc.GenericRpcHandler type but does not have "service" method!)ÚgetattrÚAttributeErrorr@  )r  Úgeneric_rpc_handlerÚservice_attributes      r1   Ú_validate_generic_rpc_handlersr#  p  sa   € ð  4ð ð ÐÝ#Ð$7¸ÀDÑIÔIÐØÐ$Ý ð-ß-3ªVÐ4GÑ-HÔ-Hñô ð ð %ðð r3   Úbase_optionsúSequence[ChannelArgumentType]r  r�   Úxdsc                ó|   — t          j        |¦  «        }t          j        |¦  «        }t	          | ¦  «        |z   |z   S r8   )r   Úcreate_channel_optionr   Ú(create_server_call_tracer_factory_optionr©   )r$  r  r&  Úcompression_optionÚ'maybe_server_call_tracer_factory_options        r1   Ú_augment_optionsr,  |  sJ   € õ
 &Ô;¸KÑHÔHÐåÔ?ÀÑDÔDð ,õ 	ˆlÑÔØ
ñ	à
1ñ	2ðr3   c                  ób   — e Zd ZU ded<   d+d„Zd,d„Zd-d„Zd.d„Zd/d!„Zd0d"„Z	d1d2d&„Z
d3d)„Zd*„ Zd#S )4Ú_ServerrÁ  rÝ   r�  r€  rq   rÓ  Úinterceptorsú Sequence[grpc.ServerInterceptor]Úoptionsr%  rÎ  rÍ  r  r�   r&  r   c                ó  — t          j        ¦   «         }t          j        t          |||¦  «        |¦  «        }	|	                     |¦  «         t          ||	|t          j        |¦  «        ||¦  «        | _        |	| _	        d S r8   )
r   ÚCompletionQueueÚServerr,  Úregister_completion_queuerÁ  r   Úservice_pipelinerÝ   Ú
_cy_server)
rY   r�  rq   r/  r1  rÎ  r  r&  rÄ  rÆ  s
             r1   rk   z_Server.__init__�  s�   € õ "Ô1Ñ3Ô3ÐÝ”Õ/°¸ÀcÑJÔJÈCÑPÔPˆØ×(Ò(Ð)9Ñ:Ô:Ð:Ý"ØØØÝÔ)¨,Ñ7Ô7ØØ#ñ
ô 
ˆŒð !ˆŒˆˆr3   r  rØ  r+   r•   c                óN   — t          |¦  «         t          | j        |¦  «         d S r8   )r#  rÛ  rÝ   )rY   r  s     r1   Úadd_generic_rpc_handlersz _Server.add_generic_rpc_handlers§  s,   € õ 	'Ð';Ñ<Ô<Ð<Ý˜dœkÐ+?Ñ@Ô@Ð@Ð@Ð@r3   Úservice_namerf   rÝ  rÇ  c                ój  ‡— | j         j        5  | j         j        t          j        u r	 d d d ¦  «         d S 	 d d d ¦  «         n# 1 swxY w Y   ˆfd„|                     ¦   «         D ¦   «         }|                     ¦   «         D ]}| j                             |¦  «         Œt          | j         |¦  «         d S )Nc                óB   •— i | ]\  }}t          j        ‰|¦  «        |“ŒS rO   )r   Úfully_qualified_method)rÿ   rP   ry   r:  s      €r1   r  z:_Server.add_registered_method_handlers.<locals>.<dictcomp>¸  s<   ø€ ð 
ð 
ð 
á&�˜õ Ô*¨<¸Ñ@Ô@À.ð
ð 
ð 
r3   )
rÝ   rÂ  rÉ  r¹  r¾  r  rþ  r7  Úregister_methodrà  )rY   r:  rÝ  Úmethod_to_handlersr=  s    `   r1   Úadd_registered_method_handlersz&_Server.add_registered_method_handlers­  s.  ø€ ð Œ[Ôð 	ð 	ØŒ{Ô ¥LÔ$8Ð8Ð8Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	Ø8ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð

ð 
ð 
ð 
à*9×*?Ò*?Ñ*AÔ*Að
ñ 
ô 
Ðð '9×&=Ò&=Ñ&?Ô&?ð 	Dð 	DÐ"ØŒO×+Ò+Ð,BÑCÔCÐCÐCÝ'¨¬Ð5GÑHÔHÐHÐHÐHs   ŽAÁAÁ	Ará  rÏ  c           	     óv   — t          j        |t          | j        t          j        |¦  «        ¦  «        ¦  «        S r8   )r   Úvalidate_port_binding_resulträ  rÝ   r  )rY   rá  s     r1   Úadd_insecure_portz_Server.add_insecure_portÀ  s3   € ÝÔ3ØÕ'¨¬µW´^ÀGÑ5LÔ5LÑMÔMñ
ô 
ð 	
r3   rå  ræ  c           	     óx   — t          j        |t          | j        t          j        |¦  «        |¦  «        ¦  «        S r8   )r   rB  ré  rÝ   r  )rY   rá  rå  s      r1   Úadd_secure_portz_Server.add_secure_portÅ  s=   € õ Ô3ØÝØ”�Wœ^¨GÑ4Ô4Ð6Hñô ñ
ô 
ð 	
r3   c                ó.   — t          | j        ¦  «         d S r8   )r  rÝ   rX   s    r1   r  z_Server.startÏ  s   € ÝˆtŒ{ÑÔÐÐÐr3   Nr  r  c                ól   — t          j        | j        j        j        | j        j        j        |¬¦  «        S r  )r   r3  rÝ   rË  Úis_set)rY   r  s     r1   Úwait_for_terminationz_Server.wait_for_terminationÒ  s6   € õ Œ|ØŒKÔ)Ô.ØŒKÔ)Ô0Øð
ñ 
ô 
ð 	
r3   r¼  rÊ  c                ó,   — t          | j        |¦  «        S r8   )r  rÝ   )rY   r¼  s     r1   Ústopz_Server.stopÜ  s   € Ý�T”[ %Ñ(Ô(Ð(r3   c                óB   — t          | d¦  «        rd| j        _        d S d S )NrÝ   T)ry  rÝ   rÒ  rX   s    r1   Ú__del__z_Server.__del__ß  s0   € Ý�4˜Ñ"Ô"ð 	2ð .2ˆDŒKÔ*Ð*Ð*ð	2ð 	2r3   )r�  r€  rq   rÓ  r/  r0  r1  r%  rÎ  rÍ  r  r�   r&  r   ©r  rØ  r+   r•   )r:  rf   rÝ  rÇ  r+   r•   )rá  rf   r+   rÏ  )rá  rf   rå  ræ  r+   rÏ  r%  r8   )r  r  r+   r   )r¼  r  r+   rÊ  )rL   rM   rN   r”   rk   r9  r@  rC  rE  r  rI  rK  rM  rO   r3   r1   r.  r.  Œ  sÞ   € € € € € € ØÐÐÑð!ð !ð !ð !ð.Að Að Að AðIð Ið Ið Ið&
ð 
ð 
ð 
ð

ð 
ð 
ð 
ðð ð ð ð
ð 
ð 
ð 
ð 
ð)ð )ð )ð )ð2ð 2ð 2ð 2ð 2r3   r.  rÓ  r/  r0  r1  rÎ  rÍ  c           	     óJ   — t          |¦  «         t          | ||||||¦  «        S r8   )r#  r.  )r�  r  r/  r1  rÎ  r  r&  s          r1   Úcreate_serverrP  æ  s:   € õ #Ð#7Ñ8Ô8Ð8ÝØØØØØØØñô ð r3   )r)   r*   r+   r,   )r4   r5   r+   r6   )r?   r@   r+   r6   )r?   r@   r4   r6   r+   r6   )r?   r@   r+   r,   )r?   r@   r+   r•   )r?   r@   rœ   rf   r+   r   )r?   r@   rœ   rf   r+   r   )r?   r@   r¦   r„   r+   r„   )r?   r@   r¦   r„   r+   r¬   )
r?   r@   r²   r³   r4   r6   rH   r,   r+   r•   )r?   r@   r+   r   )r?   r@   r²   r³   rÇ   rÈ   r+   r   )rÞ   r*   r?   r@   rÇ   rÈ   r+   r=  r8   )rÞ   r*   r?   r@   rD  r   rE  r   rÇ   rÈ   rF  rG  r+   rH  )rÞ   r*   r?   r@   rU  rV  r+   rW  )
rÞ   r*   r?   r@   rZ  r   r[  r\  r+   r†   )r?   r@   r+   ra  )rÞ   r*   r?   r@   r_  r,   r+   r   )rÞ   r*   r?   r@   r_  r†   r+   r•   )rÞ   r*   r?   r@   rD  r   ro  r=  rÇ   r\  r[  r\  r+   r•   )rÞ   r*   r?   r@   rD  r   ro  r=  rÇ   rÈ   r[  r\  r+   r•   )r?   r@   r+   r   )
rÞ   r*   r?   r@   rF  r}  rU  rV  r+   r•   )rD  r   r  r€  r+   r€  )
rÞ   r*   r?   r@   ry   r†  r  r€  r+   r‡  )
rÞ   r*   r?   r@   rŸ  rS   r   r¡  r+   r\   )rÞ   r*   r¨  r@   r  r6   rH   r,   )
rÞ   r*   r?   r@   ry   r†  r�  r€  r+   r‡  )rÞ   r*   rŸ  rS   r   r¡  r�  r€  r²  r   r+   r³  )r?   rÁ  rq   rØ  r+   r•   )r?   rÁ  rÝ  rÇ  r+   r•   )r?   rÁ  rá  r,   r+   rÏ  )r?   rÁ  rá  r,   rå  ræ  r+   rÏ  )r?   rÁ  r+   r•   )r?   rÁ  rP   rf   r+   r•   )r?   rÁ  r+   r   )r?   rÁ  rø  r*   r+   r   )r?   rÁ  r¼  r  r+   rÊ  rN  )r$  r%  r  r�   r&  r   r+   r%  )r�  r€  r  rÓ  r/  r0  r1  r%  rÎ  rÍ  r  r�   r&  r   r+   r.  )ƒÚ__doc__Ú
__future__r   rb   ÚcollectionsÚ
concurrentr   r�   ÚenumÚloggingr�   rè   rN  Útypingr   r   r   r   r	   r
   r   r   r   r   r   r   r—   r   r   r   r   Úgrpc._cythonr   Úgrpc._typingr   r   r   r   r   r   r   r   r   Ú	getLoggerrL   r  rý  rë  rÄ   rÓ   rË   rk  rj  r¹   r¸   r“   rÂ   r¶   r¯   r  Ú_INF_TIMEOUTr2   r>   rD   rF   rI   Ú
namedtupleÚHandlerCallDetailsrK   ÚABCrS   re   rp   Úobjectr@   r›   r¡   r¥   r«   r±   r¿   rÆ   rÐ   rÕ   rÙ   ÚServicerContextrÛ   r'  rC  rT  rY  r`  re  rg  rl  rn  rt  r{  r    rz  r…  rŽ  r‘  rš  rž  r§  r­  r±  r·  ÚuniqueÚEnumr¹  rÁ  rÛ  rà  rä  ré  rì  rð  rô  r÷  r  r  r  r  r  r#  r,  r4  r.  rP  rO   r3   r1   ú<module>rc     sº  ðð 2Ð 1à "Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .Ø %Ð %Ð %Ð %Ð %Ð %Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø %Ð %Ð %Ð %Ð %Ð %Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø *Ð *Ð *Ð *Ð *Ð *Ø .Ð .Ð .Ð .Ð .Ð .à
ˆ'Ô
˜HÑ
%Ô
%€à€Ø"Ð à!:Ð Ø6Ð Ø*Ð Ø$Ð à*ð .ð ";Ð à5ð 9ð 	€Ø
€Ø€
à€à%(Ð "Ø€ð7ð 7ð 7ð 7ðMð Mð Mð Mð
-ð -ð -ð -ð-ð -ð -ð -ð;ð ;ð ;ð ;ð
	ð 
	ð 
	ð 
	ð 
	Ø€KÔØð	
ñô ð 	Ôñ
	ô 
	ð 
	ð	$ð 	$ð 	$ð 	$ð 	$ˆcŒgñ 	$ô 	$ð 	$ð(ð (ð (ð (ð (˜ñ (ô (ð (ð$ð ð ð ð �Wñ ô ð ð, ð  ð  ð  ð  �ñ  ô  ð  ðFð ð ð ð	ð 	ð 	ð 	ð#ð #ð #ð #ðð ð ð ð$ð ð ð ðð ð ð ðD
#ð 
#ð 
#ð 
#ðð ð ð ðB!ð !ð !ð !ðð ð ð ðwð wð wð wð wˆtÔ#ñ wô wð wðt<ð <ð <ð <ð <�vñ <ô <ð <ð~&ð &ð &ð &ð^ HLð7ð 7ð 7ð 7ð 7ðtð ð ð ð<#ð #ð #ð #ð(ð ð ð ð/ð /ð /ð /ð
!7ð !7ð !7ð !7ðH:ð :ð :ð :ð@#ð #ð #ð #ð8.#ð .#ð .#ð .#ðbAð Að Að Aðð ð ð ð$	#ð 	#ð 	#ð 	#ðð ð ð ð0ð ð ð ð0ð ð ð ð0ð ð ð ð0Gð Gð Gð Gð8ð ð ð ð,ð ð ð ð@?ð ?ð ?ð ?ðD „ðð ð ð ð �4”9ñ ô ñ „ðð-(ð -(ð -(ð -(ð -(�6ñ -(ô -(ð -(ð`8ð 8ð 8ð 8ðAð Að Að Að4ð 4ð 4ð 4ð

ð 
ð 
ð 
ð%ð %ð %ð %ð'ð 'ð 'ð 'ðð ð ð ð$ð $ð $ð $ðDð Dð Dð DðNð ð ð ð)ð )ð )ð )ðð ð ð ð4ð ð ð ð 	ð 	ð 	ð 	ðð ð ð ð W2ð W2ð W2ð W2ð W2ˆdŒkñ W2ô W2ð W2ðtð ð ð ð ð r3   