ó
    F\hJ¼  ã            	       óD  • / S Qr SSKrSSKrSSKrSSKrSSKrSSKrSSK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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  Sr\ R1                  S5        S r\R6                  " \R                  \5        S V s/ s H  n \" \" 0 U 5      " 5       5      PM     sn rS r\ H  r \R6                  " \ \5        M     C C " S S\!5      r"S0 4S jr#S r$ " S S\%5      r&S r'S r( " S S\!5      r) " S S\!5      r*\RV                  \RX                  4\RZ                  \R\                  4S .r/ " S! S"\!5      r0 " S# S$\15      r2 " S% S&\!5      r3S' r40 4S( jr5  ScS) jr6 " S* S+\!5      r7 " S, S-\!5      r8SdS. jr9 " S/ S0\35      r: " S1 S2\35      r; " S3 S4\;5      r< " S5 S6\35      r= " S7 S8\35      r> " S9 S:\35      r? " S; S<\35      r@\5" S=S>5      rA " S? S@\A5      rB\5" SASB5      rCSCSD0\ClD         " SE SA\C5      rE\5" SFSG5      rF\5" SHSI5      rGSJSJSJSDSDSK.\GlD         " SL SH\G5      rH " SM SN\05      rI\IR7                  SO\R”                  5        \IR7                  SP\R”                  5        \IR7                  SQ\R–                  \=5        \IR7                  SR\R˜                  \;5        \IR7                  SS\Rš                  \;5        \IR7                  ST\Rœ                  \;5        \IR7                  SU\Rž                  \;5        \IR7                  SV\R                   \<5        \IR7                  SW\R¢                  \>5        \IR7                  SX\R¤                  \H5        \IR7                  SY\S\B5        \IR7                  SZ\T\E5        \IR7                  S-\8\@5        \IR7                  S[\9\F5        \IR7                  S+\7\?5        \IR7                  SD\:SS\9  \IR7                  SJSS]9  \(       a!   " S^ S_5      rU " S` Sa\)5      rV " Sb S\05      rWgg! \ a    Sr GN¦f = fs  sn f )e)ÚBaseManagerÚSyncManagerÚ	BaseProxyÚTokené    N)Úgetpid)Ú
format_excé   )Ú
connection)Ú	reductionÚget_spawning_popenÚProcessError)Úpool)Úprocess)Úutil)Úget_context)Úshared_memoryTÚSharedMemoryManagerFc                 óZ   • [         R                   U R                  U R                  5       44$ ©N)ÚarrayÚtypecodeÚtobytes)Úas    Ú//usr/lib/python3.13/multiprocessing/managers.pyÚreduce_arrayr   /   s    € Ü�;‰;˜Ÿ™ Q§Y¡Y£[Ð1Ð1Ð1ó    )ÚitemsÚkeysÚvaluesc                 ó&   • [         [        U 5      44$ r   )Úlist©Úobjs    r   Úrebuild_as_listr$   4   s   € Ü”$�s“)�ÐÐr   c                   ó4   • \ rS rSrSrSrS rS rS rS r	Sr
g	)
r   é>   z+
Type to uniquely identify a shared object
©ÚtypeidÚaddressÚidc                 ó.   • XUsU l         U l        U l        g r   r'   )Úselfr(   r)   r*   s       r   Ú__init__ÚToken.__init__D   s   € Ø06ÀÐ,ˆŒ�d”l D¥Gr   c                 óH   • U R                   U R                  U R                  4$ r   r'   ©r,   s    r   Ú__getstate__ÚToken.__getstate__G   s   € Ø—‘˜TŸ\™\¨4¯7©7Ð3Ð3r   c                 ó.   • Uu  U l         U l        U l        g r   r'   ©r,   Ústates     r   Ú__setstate__ÚToken.__setstate__J   s   € Ø/4Ñ,ˆŒ�d”l D¥Gr   c                 óŠ   • U R                   R                  < SU R                  < SU R                  < SU R                  < S3$ )Nz(typeid=z
, address=z, id=Ú))Ú	__class__Ú__name__r(   r)   r*   r0   s    r   Ú__repr__ÚToken.__repr__M   s-   € à—‘×'Ô'¨¯¬°d·l´lÀDÇGÄGðMð 	Mr   )r)   r*   r(   N)r;   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__r-   r1   r6   r<   Ú__static_attributes__© r   r   r   r   >   s$   † ñð ,€IòEò4ò5õMr   r   rD   c                 ó€   • U R                  XX445        U R                  5       u  pVUS:X  a  U$  [        XV5      e! Af = f)zD
Send a message to manager using connection `c` and return response
ú#RETURN)ÚsendÚrecvÚconvert_to_error)Úcr*   Ú
methodnameÚargsÚkwdsÚkindÚresults          r   ÚdispatchrP   U   sD   € ð ‡F�FˆB˜DÐ'Ô(Ø—6‘6“8�L€DØˆyÓØˆðÜ˜tÓ,Ð,øáús   ¯: º=c           	      ó  • U S:X  a  U$ U S;   aX  [        U[        5      (       d$  [        SR                  X[	        U5      5      5      eU S:X  a  [        SU-  5      $ [        U5      $ [        SR                  U 5      5      $ )Nú#ERROR)ú
#TRACEBACKú#UNSERIALIZABLEz.Result {0!r} (kind '{1}') type is {2}, not strrT   zUnserializable message: %s
zUnrecognized message type {!r})Ú
isinstanceÚstrÚ	TypeErrorÚformatÚtypeÚRemoteErrorÚ
ValueError)rN   rO   s     r   rI   rI   b   s‡   € ØˆxÓØˆØ	Ð2Ó	2Ü˜&¤#×&Ñ&ÜØ@×GÑGØ¤$ v£,ó0ó1ð 1ð Ð$Ó$ÜÐ=ÀÑFÓGÐGä˜vÓ&Ð&äÐ:×AÑAÀ$ÓGÓHÐHr   c                   ó   • \ rS rSrS rSrg)rZ   éq   c                 ó>   • S[        U R                  S   5      -   S-   $ )NzM
---------------------------------------------------------------------------
r   zK---------------------------------------------------------------------------)rV   rL   r0   s    r   Ú__str__ÚRemoteError.__str__r   s   € Ø$¤s¨4¯9©9°Q©<Ó'8Ñ8¸6ÑAÐBr   rD   N)r;   r>   r?   r@   r_   rC   rD   r   r   rZ   rZ   q   s   † õCr   rZ   c                 óŠ   • / n[        U 5       H1  n[        X5      n[        U5      (       d  M   UR                  U5        M3     U$ )z,
Return a list of names of methods of `obj`
)ÚdirÚgetattrÚcallableÚappend)r#   ÚtempÚnameÚfuncs       r   Úall_methodsri   y   s=   € ð €DÜ�C–ˆÜ�sÓ!ˆÜ�D�>‹>Ø�K‰K˜Öñ ð €Kr   c                 óX   • [        U 5       Vs/ s H  oS   S:w  d  M  UPM     sn$ s  snf )zH
Return a list of names of methods of `obj` which do not start with '_'
r   Ú_)ri   )r#   rg   s     r   Úpublic_methodsrl   „   s+   € ô )¨Ô-Ó@Ò-�T°a±¸C±�DÑ-Ñ@Ð@ùÒ@s   Ž'ž'c                   ó˜   • \ rS rSrSr/ SQrS rS rS rS r	S r
S	 rS
 rS rS r\\\S.rS rS rS rS rS rS rS rS rS rSrg)ÚServeréŽ   zE
Server class which runs in a process controlled by a manager object
)	ÚshutdownÚcreateÚaccept_connectionÚget_methodsÚ
debug_infoÚnumber_of_objectsÚdummyÚincrefÚdecrefc                 ó~  • [        U[        5      (       d$  [        SR                  U[	        U5      5      5      eXl        [        R                  " U5      U l        [        U   u  pVU" USS9U l
        U R                  R                  U l        SS0U l        0 U l        0 U l        [        R                   " 5       U l        g )Nz&Authkey {0!r} is type {1!s}, not bytesé€   )r)   ÚbacklogÚ0©NrD   )rU   ÚbytesrW   rX   rY   Úregistryr   ÚAuthenticationStringÚauthkeyÚlistener_clientÚlistenerr)   Ú	id_to_objÚid_to_refcountÚid_to_local_proxy_objÚ	threadingÚLockÚmutex)r,   r   r)   r�   Ú
serializerÚListenerÚClients          r   r-   ÚServer.__init__•   s¤   € Ü˜'¤5×)Ñ)ÜØ8×?Ñ?ØœT '›]ó,ó-ð -ð !ŒÜ×3Ò3°GÓ<ˆŒÜ*¨:Ñ6Ñˆñ !¨¸#Ñ>ˆŒØ—}‘}×,Ñ,ˆŒà˜zÐ*ˆŒØ ˆÔØ%'ˆÔ"Ü—^’^Ó%ˆ�
r   c                 óÆ  • [         R                  " 5       U l        U [        R                  " 5       l         [         R                  " U R                  S9nSUl        UR                  5          U R                  R                  5       (       d<  U R                  R                  S5        U R                  R                  5       (       d  M<  [        R                  [        R                   :w  aH  ["        R$                  " S5        [        R                   [        l        [        R&                  [        l        [        R*                  " S5        g! [        [        4 a     N“f = f! [        R                  [        R                   :w  aH  ["        R$                  " S5        [        R                   [        l        [        R&                  [        l        [        R*                  " S5        f = f)z
Run the server forever
)ÚtargetTr	   zresetting stdout, stderrr   N)r‡   ÚEventÚ
stop_eventr   Úcurrent_processÚ_manager_serverÚThreadÚaccepterÚdaemonÚstartÚis_setÚwaitÚKeyboardInterruptÚ
SystemExitÚsysÚstdoutÚ
__stdout__r   ÚdebugÚ
__stderr__ÚstderrÚexit)r,   r•   s     r   Úserve_foreverÚServer.serve_forever§   s&  € ô $Ÿ/š/Ó+ˆŒØ48Œ×ÒÓ!Ô1ð	Ü ×'Ò'¨t¯}©}Ñ=ˆHØ"ˆHŒOØ�N‰NÔðØŸ/™/×0Ñ0×2Ñ2Ø—O‘O×(Ñ(¨Ô+ð Ÿ/™/×0Ñ0×2Ó2ô
 �z‰zœSŸ^™^Ó+Ü—
’
Ð5Ô6Ü Ÿ^™^””
Ü Ÿ^™^””
Ü�HŠH�Q�Køô &¤zÐ2ó Ùðûô �z‰zœSŸ^™^Ó+Ü—
’
Ð5Ô6Ü Ÿ^™^””
Ü Ÿ^™^””
Ü�HŠH�Q�Kús+   ¶5E Á,AE ÅEÅE ÅEÅE ÅBG c                 óÎ   •   U R                   R                  5       n[        R                  " U R
                  U4S9nSUl        UR                  5         MT  ! [         a     Mb  f = f)NT©r�   rL   )rƒ   ÚacceptÚOSErrorr‡   r”   Úhandle_requestr–   r—   )r,   rJ   Úts      r   r•   ÚServer.accepter½   sa   € ØðØ—M‘M×(Ñ(Ó*�ô × Ò ¨×(;Ñ(;À1À$ÑGˆAØˆAŒHØ�G‰GŒIñ øô ó Úðús   ƒA Á
A$Á#A$c                 óÄ  • S n [         R                  " XR                  5        [         R                  " XR                  5        UR	                  5       nUu  p4pVX@R
                  ;   d
   SU-  5       e[        X5      n U" U/UQ70 UD6nSU4n	 UR                  U	5        g ! [         a    S[        5       4n	 N+f = f! [         a    S[        5       4n	 NGf = f! [         a|  n
 UR                  S[        5       45        O! [         a     Of = f[        R                  " SU	5        [        R                  " SU5        [        R                  " SU
5         S n
A
g S n
A
ff = f)Nz%r unrecognizedrF   rS   zFailure to send message: %rz ... request was %rú ... exception was %r)r
   Údeliver_challenger�   Úanswer_challengerH   Úpublicrc   Ú	Exceptionr   rG   r   Úinfo)r,   rJ   ÚrequestÚignoreÚfuncnamerL   rM   rh   rO   ÚmsgÚes              r   Ú_handle_requestÚServer._handle_requestÇ   sC  € Øˆð	*Ü×(Ò(¨¯L©LÔ9Ü×'Ò'¨¯<©<Ô8Ø—f‘f“hˆGØ+2Ñ(ˆF˜dØŸ{™{Ó*ÐHÐ,=ÀÑ,HÓHÐ*Ü˜4Ó*ˆDð*Ù˜aÐ/ $Ò/¨$Ñ/�ð ! &Ð)�ð		2Ø�F‰F�3�Køô ó 3Ø#¤Z£\Ð2’ð3ûô ó 	/Ø¤£Ð.ŠCð	/ûô ó 	2ðØ—‘˜¤j£lÐ3Õ4øÜó Ùðúä�IŠIÐ3°SÔ9Ü�IŠIÐ+¨WÔ5Ü�IŠIÐ-¨q×1Ñ1ûð	2ús[   „A9B= Á>B! ÂC Â!B:Â9B:Â=CÃCÃ
EÃ$D Ã?EÄ 
DÄ
EÄDÄAEÅEc                 ó’   •  U R                  U5        UR                  5         g! [         a     Nf = f! UR                  5         f = f)z
Handle a new connection
N)r¸   r›   Úclose©r,   Úconns     r   r©   ÚServer.handle_requestå   s@   € ð	Ø× Ñ  Ô&ð
 �J‰J�Løô	 ó 	áð	ûð �J‰J�Lús   ‚$ ¤
1®4 °1±4 ´Ac                 ón  • [         R                  " S[        R                  " 5       R                  5        UR
                  nUR                  nU R                  nU R                  R                  5       (       dØ   S=pVU" 5       nUu  p…pš XH   u  pknX[;  a   [        SU< S[        U5      < SU< 35      e[        Xe5      n U" U	0 U
D6nU=(       a    UR                  US5      nU(       a4  U R!                  UUU5      u  nn[#        UU R$                  U5      nSUU44nOSU4n   U" W5        U R                  R                  5       (       d  M×  gg! [         a-  n U R                  U   u  pkn SnANã! [         a    Uef = fSnAff = f! [&         a  nSU4n SnANzSnAff = f! [         aS    Wc  S	[)        5       4n N� U R*                  U   nU" XWW/W	Q70 W
D6nSU4n NÁ! [&         a    S	[)        5       4n  NÚf = f[,         aN    [         R                  " S
[        R                  " 5       R                  5        [.        R0                  " S5         GN4[&         a    S	[)        5       4n GNLf = f! [&         a    U" S[)        5       45         GNef = f! [&         a“  n[         R2                  " S[        R                  " 5       R                  5        [         R2                  " SW5        [         R2                  " SU5        UR5                  5         [.        R0                  " S5         SnAGNSnAff = f)zA
Handle requests from the proxies in a particular process/thread
z$starting server thread to service %rNzmethod z of z object is not in exposed=ú#PROXYrF   rR   rS   z$got EOF -- exiting thread serving %rr   rT   zexception in thread serving %rz ... message was %rr­   r	   )r   rŸ   r‡   Úcurrent_threadrg   rH   rG   r„   r‘   r˜   ÚKeyErrorr†   ÚAttributeErrorrY   rc   Úgetrq   r   r)   r±   r   Úfallback_mappingÚEOFErrorrœ   r¢   r²   r»   )r,   r½   rH   rG   r„   rK   r#   r³   ÚidentrL   rM   ÚexposedÚ	gettypeidÚkeÚfunctionÚresr(   ÚridentÚrexposedÚtokenr¶   r·   Úfallback_funcrO   s                           r   Úserve_clientÚServer.serve_clientñ   sõ  € ô 	�
Š
Ð9Ü×+Ò+Ó-×2Ñ2ô	4ð �y‰yˆØ�y‰yˆØ—N‘Nˆ	à—/‘/×(Ñ(×*Ñ*ð53Ø#'Ð'�
Ù›&�Ø07Ñ-� 4ð!Ø.7Ñ.>Ñ+�C )ð Ó,Ý(ã#¤T¨#¦Y²ð9óð ô
 # 3Ó3�ð/Ù" DÐ1¨DÑ1�Cð '×J¨9¯=©=¸ÀTÓ+J�FÞØ+/¯;©;°t¸VÀSÓ+IÑ(˜ Ü % f¨d¯l©l¸FÓ C˜Ø'¨(°EÐ):Ð;™à(¨#Ð.™ð.ð<Ù˜”Iðw —/‘/×(Ñ(×*Õ*øô  ó !ð!à ×6Ñ6°uÑ=ñ 0˜¥iøä#ó !Ø ˜ð!þð	!ûô" !ó (Ø# Q˜-•Cûð(ûô "ó ;ØÑ%Ø'¬«Ð6’Cð;Ø(,×(=Ñ(=¸jÑ(I˜Ù!.Ø ¨¨sð"Ø59ò"Ø=Añ"˜ð  )¨&Ð1šøÜ$ó ;Ø+¬Z«\Ð:›ð;úô ó Ü—
’
ÐAÜ$×3Ò3Ó5×:Ñ:ô<ä—’˜—äó 3Ø#¤Z£\Ð2“ð3ûô !ó <ÙÐ+¬Z«\Ð:×;ð<ûäó Ü—	’	Ð:Ü!×0Ò0Ó2×7Ñ7ô9ä—	’	Ð/°Ô5Ü—	’	Ð1°1Ô5Ø—
‘
”Ü—’˜—’ûðúsÏ   Á9F& Â	E Â0F& ÃF Ã	AF& ÄF& Ä&I4 Å
FÅE3Å.F& Å3F Æ FÆFÆF& Æ
F#ÆFÆF& ÆF#Æ#F& Æ&I1Ç!G%Ç%G?Ç;I1Ç>G?Ç?AI1ÉI1É0I1É4JÊJ ÊJÊJ Ê
L4Ê!BL/Ì/L4c                 ó   • U$ r   rD   ©r,   r½   rÇ   r#   s       r   Úfallback_getvalueÚServer.fallback_getvalueB  s   € Øˆ
r   c                 ó   • [        U5      $ r   ©rV   rÔ   s       r   Úfallback_strÚServer.fallback_strE  s   € Ü�3‹xˆr   c                 ó   • [        U5      $ r   )ÚreprrÔ   s       r   Úfallback_reprÚServer.fallback_reprH  s   € Ü�C‹yÐr   )r_   r<   ú	#GETVALUEc                 ó   • g r   rD   ©r,   rJ   s     r   rv   ÚServer.dummyQ  s   € Ør   c                 óŠ  • U R                      / n[        U R                  R                  5       5      nUR	                  5         U HQ  nUS:w  d  M  UR                  SU< SU R                  U   < S[        U R                  U   S   5      SS < 35        MS     SR                  U5      sSSS5        $ ! , (       d  f       g= f)	z?
Return some info --- useful to spot problems with refcounting
r|   z  z:       refcount=z
    r   NéK   Ú
)	r‰   r!   r…   r   Úsortre   rV   r„   Újoin)r,   rJ   rO   r   rÇ   s        r   rt   ÚServer.debug_infoT  s›   € ð
 �Z‹ZØˆFÜ˜×+Ñ+×0Ñ0Ó2Ó3ˆDØ�I‰IŒKÛ�Ø˜C•<Ø—M’MÛ#(¨$×*=Ñ*=¸eÔ*DÜ#& t§~¡~°eÑ'<¸QÑ'?Ó#@ÀÀ"Ò#Eð#Gö Hñ ð
 —9‘9˜VÓ$÷ �Z�Zús   �?B4ÁAB4Â4
Cc                 ó,   • [        U R                  5      $ )z
Number of shared objects
)Úlenr…   rá   s     r   ru   ÚServer.number_of_objectsd  s   € ô
 �4×&Ñ&Ó'Ð'r   c                 óü   •  [         R                  " S5        UR                  S5        U R
                  R                  5         g!   SSKnUR	                  5          N3= f! U R
                  R                  5         f = f)z
Shutdown this process
z!manager received shutdown message©rF   Nr   N)r   rŸ   rG   Ú	tracebackÚ	print_excr‘   Úset)r,   rJ   rî   s      r   rp   ÚServer.shutdownk  sZ   € ð	"Ü�JŠJÐ:Ô;Ø�F‰FÐ$Ô%ð
 �O‰O×ÑÕ!øð		"ÛØ×ÑÖ!ûà�O‰O×ÑÕ!ús   ‚'A ÁAÁA ÁA;c          	      ó’  • U R                      U R                  U   u  pVpxUc'  U(       d  [        U5      S:w  a  [        S5      eUS   n	OU" U0 UD6n	Uc  [	        U	5      nUbP  [        U[        5      (       d$  [        SR                  U[        U5      5      5      e[        U5      [        U5      -   nS[        U	5      -  n
[        R                  " SX*5        U	[        U5      U4U R                  U
'   X R                   ;  a  SU R                   U
'   SSS5        U R#                  UW
5        U
[%        W5      4$ ! , (       d  f       N-= f)z.
Create a new shared object and return its id
Nr	   z4Without callable, must have one non-keyword argumentr   z,Method_to_typeid {0!r}: type {1!s}, not dictz%xz&%r callable returned object with id %r)r‰   r   rê   r[   rl   rU   ÚdictrW   rX   rY   r!   r*   r   rŸ   rð   r„   r…   rw   Útuple)r,   rJ   r(   rL   rM   rd   rÈ   Úmethod_to_typeidÚ	proxytyper#   rÇ   s              r   rq   ÚServer.createx  s@  € ð �Z‹Zà—m‘m FÑ+ñ ;ˆHÐ/ð ÑÞœC ›I¨›NÜ$ØNóPð Pà˜1‘g‘á Ð-¨Ñ-�à‰Ü(¨Ó-�ØÑ+Ü!Ð"2´D×9Ñ9Ü#ØF×MÑMØ,¬dÐ3CÓ.DóFóGð Gô ˜w›-¬$Ð/?Ó*@Ñ@�àœ2˜c›7‘NˆEä�JŠJÐ?ÀÔOà%(¬#¨g«,Ð8HÐ$IˆD�N‰N˜5Ñ!Ø×/Ñ/Ó/Ø-.�×#Ñ# EÑ*÷7 ð: 	�‰�A�uÔØ”e˜G“nÐ$Ð$÷= �Zús   �DD8Ä8
Ec                 óL   • [        U R                  UR                     S   5      $ )z<
Return the methods of the shared object indicated by token
r	   )rô   r„   r*   )r,   rJ   rÏ   s      r   rs   ÚServer.get_methodsœ  s!   € ô �T—^‘^ E§H¡HÑ-¨aÑ0Ó1Ð1r   c                 ó|   • U[         R                  " 5       l        UR                  S5        U R	                  U5        g)z-
Spawn a new thread to serve this connection
rí   N)r‡   rÁ   rg   rG   rÑ   )r,   rJ   rg   s      r   rr   ÚServer.accept_connection¢  s0   € ð +/Œ	× Ò Ó"Ô'Ø	�‰Ð Ô!Ø×Ñ˜!Õr   c                 óT  • U R                       U R                  U==   S-  ss'   S S S 5        g ! [         a]  nX R                  ;   aG  SU R                  U'   U R                  U   U R                  U'   [
        R                  " SU5         S nANiUeS nAff = f! , (       d  f       g = f)Nr	   z&Server re-enabled tracking & INCREF %r)r‰   r…   rÂ   r†   r„   r   rŸ   )r,   rJ   rÇ   rÊ   s       r   rw   ÚServer.increfª  s–   € Ø�Z‹ZðØ×#Ñ# EÓ*¨aÑ/Ó*÷ ˆZøô ó ð
 ×6Ñ6Ó6Ø12�D×'Ñ'¨Ñ.à×2Ñ2°5Ñ9ð —N‘N 5Ñ)ä—J’JÐGÈ×OÑOà�Hûðú÷ �Zús2   �B�/¯
B¹ABÂ
BÂBÂBÂBÂ
B'c           	      óŒ  • X R                   ;  a'  X R                  ;   a  [        R                  " SU5        g U R                     U R                   U   S::  a5  [        SR                  X R                  U   U R                   U   5      5      eU R                   U==   S-  ss'   U R                   U   S:X  a  U R                   U	 S S S 5        X R                   ;  aI  SU R                  U'   [        R                  " SU5        U R                     U R                  U	 S S S 5        g g ! , (       d  f       Ng= f! , (       d  f       g = f)NzServer DECREF skipping %rr   z+Id {0!s} ({1!r}) has refcount {2:n}, not 1+r	   )NrD   Nzdisposing of obj with id %r)r…   r†   r   rŸ   r‰   ÚAssertionErrorrX   r„   )r,   rJ   rÇ   s      r   rx   ÚServer.decref»  s  € Ø×+Ñ+Ó+Ø×/Ñ/Ó/Ü�JŠJÐ2°EÔ:Øà�Z‹ZØ×"Ñ" 5Ñ)¨QÓ.Ü$ØA×HÑHØŸ~™~¨eÑ4Ø×+Ñ+¨EÑ2ó4ó5ð 5ð ×Ñ Ó&¨!Ñ+Ó&Ø×"Ñ" 5Ñ)¨QÓ.Ø×'Ñ'¨Ð.÷ ð ×+Ñ+Ó+ð %5ˆD�N‰N˜5Ñ!Ü�JŠJÐ4°eÔ<Ø—“Ø—N‘N 5Ð)÷ �ð ,÷ �Zú÷$ •ús   ÁB D$ÄD5Ä$
D2Ä5
E)	r)   r�   r†   r„   r…   rƒ   r‰   r   r‘   N)r;   r>   r?   r@   rA   r°   r-   r£   r•   r¸   r©   rÑ   rÕ   rÙ   rÝ   rÅ   rv   rt   ru   rp   rq   rs   rr   rw   rx   rC   rD   r   r   rn   rn   Ž   s   † ñòN€Fò&ò$ò,ò2ò<
òOòbòòð Ø Ø%ñ
Ðòò%ò (ò"ò"%òH2òòõ"*r   rn   c                   ó&   • \ rS rSrS/rSrSrSrSrg)ÚStateiÛ  Úvaluer   r	   é   rD   N)	r;   r>   r?   r@   rB   ÚINITIALÚSTARTEDÚSHUTDOWNrC   rD   r   r   r  r  Û  s   † Ø�	€IØ€GØ€GØƒHr   r  )ÚpickleÚ	xmlrpclibc                   óÂ   • \ rS rSrSr0 r\r  SSS.S jjrS r	S r
SS	 jr\ SS
 j5       rS rSS jrS rS rS rS r\S 5       r\S 5       r\  SS j5       rSrg)r   iî  z
Base class for managers
Ng      ð?)Úshutdown_timeoutc                óZ  • Uc  [         R                  " 5       R                  nXl        [         R                  " U5      U l        [        5       U l        [        R                  U R                  l	        X0l
        [        U   u  U l        U l        U=(       d
    [        5       U l        XPl        g r   )r   r’   r�   Ú_addressr€   Ú_authkeyr  Ú_stater  r  Ú_serializerr‚   Ú	_ListenerÚ_Clientr   Ú_ctxÚ_shutdown_timeout)r,   r)   r�   rŠ   Úctxr  s         r   r-   ÚBaseManager.__init__õ  sx   € à‰?Ü×-Ò-Ó/×7Ñ7ˆGØŒÜ×4Ò4°WÓ=ˆŒÜ“gˆŒÜ!ŸM™Mˆ�‰ÔØ%ÔÜ'6°zÑ'BÑ$ˆŒ˜œØ×(œ;›=ˆŒ	Ø!1Õr   c                 óæ  • U R                   R                  [        R                  :w  a”  U R                   R                  [        R                  :X  a  [        S5      eU R                   R                  [        R                  :X  a  [        S5      e[        SR                  U R                   R                  5      5      e[        U R                  U R                  U R                  U R                  5      $ )zH
Return server object with serve_forever() method and address attribute
úAlready started serverúManager has shut downúUnknown state {!r})r  r  r  r  r  r   r  rX   rn   Ú	_registryr  r  r  r0   s    r   Ú
get_serverÚBaseManager.get_server  s­   € ð �;‰;×Ñ¤§¡Ó-Ø�{‰{× Ñ ¤E§M¡MÓ1Ü"Ð#;Ó<Ð<Ø—‘×"Ñ"¤e§n¡nÓ4Ü"Ð#:Ó;Ð;ä"Ø(×/Ñ/°·±×0AÑ0AÓBóDð Dä�d—n‘n d§m¡mØ—m‘m T×%5Ñ%5ó7ð 	7r   c                 ó¼   • [         U R                     u  pU" U R                  U R                  S9n[	        USS5        [
        R                  U R                  l        g)z.
Connect manager object to the server process
©r�   Nrv   )	r‚   r  r  r  rP   r  r  r  r  )r,   r‹   rŒ   r½   s       r   ÚconnectÚBaseManager.connect  sG   € ô +¨4×+;Ñ+;Ñ<ÑˆÙ�d—m‘m¨T¯]©]Ñ;ˆÜ��t˜WÔ%Ü!ŸM™Mˆ�‰Õr   c           
      ó  • U R                   R                  [        R                  :w  a”  U R                   R                  [        R                  :X  a  [        S5      eU R                   R                  [        R                  :X  a  [        S5      e[        SR                  U R                   R                  5      5      eUb  [        U5      (       d  [        S5      e[        R                  " SS9u  p4U R                  R                  [        U 5      R                  U R                   U R"                  U R$                  U R&                  XAU4S9U l        S	R+                  S
 U R(                  R,                   5       5      n[        U 5      R.                  S-   U-   U R(                  l        U R(                  R3                  5         UR5                  5         UR7                  5       U l        UR5                  5         [        R                  U R                   l        [8        R:                  " U [        U 5      R<                  U R(                  U R"                  U R$                  U R                   U R>                  U R@                  4SS9U l!        g)z0
Spawn a server process for this manager object
r  r  r  Nzinitializer must be a callableF)Úduplexr¦   Ú:c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr   rØ   )Ú.0Úis     r   Ú	<genexpr>Ú$BaseManager.start.<locals>.<genexpr>3  s   é € ÐAÒ)@ Aœ˜QŸ˜Ò)@ùs   ‚Ú-r   ©rL   Úexitpriority)"r  r  r  r  r  r   r  rX   rd   rW   r
   ÚPiper  ÚProcessrY   Ú_run_serverr  r  r  r  Ú_processrç   Ú	_identityr;   rg   r—   r»   rH   r   ÚFinalizeÚ_finalize_managerr  r  rp   )r,   ÚinitializerÚinitargsÚreaderÚwriterrÇ   s         r   r—   ÚBaseManager.start  s×  € ð �;‰;×Ñ¤§¡Ó-Ø�{‰{× Ñ ¤E§M¡MÓ1Ü"Ð#;Ó<Ð<Ø—‘×"Ñ"¤e§n¡nÓ4Ü"Ð#:Ó;Ð;ä"Ø(×/Ñ/°·±×0AÑ0AÓBóDð Dð Ñ"¬8°K×+@Ñ+@ÜÐ<Ó=Ð=ô $Ÿš°Ñ6‰ˆð Ÿ	™	×)Ñ)Ü˜“:×)Ñ)Ø—.‘. $§-¡-°·±Ø×"Ñ" F¸ðCð *ð ˆŒð
 —‘ÑA¨¯©×)@Ò)@ÓAÓAˆÜ! $›Z×0Ñ0°CÑ7¸%Ñ?ˆ�‰ÔØ�‰×ÑÔð 	�‰ŒØŸ™›ˆŒØ�‰Œô "ŸM™Mˆ�‰ÔÜŸšØ”$�t“*×.Ñ.Ø—-‘- §¡°·±¸t¿{¹{Ø—,‘, × 6Ñ 6ð8àñ	ˆ�r   c                 óV  • [         R                   " [         R                  [         R                  5        Ub  U" U6   U R                  XX45      nUR	                  UR
                  5        UR                  5         [        R                  " SUR
                  5        UR                  5         g)z0
Create a server, report its address and run it
Nzmanager serving at %r)
ÚsignalÚSIGINTÚSIG_IGNÚ_ServerrG   r)   r»   r   r²   r£   )	Úclsr   r)   r�   rŠ   r7  r4  r5  Úservers	            r   r/  ÚBaseManager._run_serverE  sv   € ô 	�Š”f—m‘m¤V§^¡^Ô4àÑ"Ù˜Ñ"ð —‘˜X°ÓDˆð 	�‰�F—N‘NÔ#Ø�‰Œô 	�	Š	Ð)¨6¯>©>Ô:Ø×ÑÕr   c                óN  • U R                   R                  [        R                  :X  d   S5       eU R	                  U R
                  U R                  S9n [        USSU4U-   U5      u  pVUR                  5         [        XR
                  U5      U4$ ! UR                  5         f = f)z@
Create a new shared object; return the token and exposed tuple
zserver not yet startedr  Nrq   )
r  r  r  r  r  r  r  rP   r»   r   )r,   r(   rL   rM   r½   r*   rÈ   s          r   Ú_createÚBaseManager._create\  s‹   € ð �{‰{× Ñ ¤E§M¡MÓ1ÐKÐ3KÓKÐ1Ø�|‰|˜DŸM™M°4·=±=ˆ|ÐAˆð	Ü" 4¨¨x¸&¸À4¹ÈÓN‰KˆBà�J‰JŒLÜ�VŸ]™]¨BÓ/°Ð8Ð8øð �J‰J�Lús   ÁB ÂB$c                 ó¤   • U R                   bC  U R                   R                  U5        U R                   R                  5       (       d  SU l         ggg)z3
Join the manager process (if it has been spawned)
N)r0  rç   Úis_alive©r,   Útimeouts     r   rç   ÚBaseManager.joinh  sD   € ð �=‰=Ñ$Ø�M‰M×Ñ˜wÔ'Ø—=‘=×)Ñ)×+Ñ+Ø $�•ð ,ð %r   c                 ó°   • U R                  U R                  U R                  S9n [        USS5      UR	                  5         $ ! UR	                  5         f = f)zC
Return some info about the servers shared objects and connections
r  Nrt   ©r  r  r  rP   r»   r¼   s     r   Ú_debug_infoÚBaseManager._debug_infoq  sB   € ð �|‰|˜DŸM™M°4·=±=ˆ|ÐAˆð	Ü˜D $¨Ó5à�J‰J�LøˆD�J‰J�Lúó   ¦A ÁAc                 ó°   • U R                  U R                  U R                  S9n [        USS5      UR	                  5         $ ! UR	                  5         f = f)z%
Return the number of shared objects
r  Nru   rJ  r¼   s     r   Ú_number_of_objectsÚBaseManager._number_of_objects{  sC   € ð �|‰|˜DŸM™M°4·=±=ˆ|ÐAˆð	Ü˜D $Ð(;Ó<à�J‰J�LøˆD�J‰J�LúrM  c                 óî  • U R                   R                  [        R                  :X  a  U R	                  5         U R                   R                  [        R
                  :w  a”  U R                   R                  [        R                  :X  a  [        S5      eU R                   R                  [        R                  :X  a  [        S5      e[        SR                  U R                   R                  5      5      eU $ )NzUnable to start serverr  r  )	r  r  r  r  r—   r  r   r  rX   r0   s    r   Ú	__enter__ÚBaseManager.__enter__…  s§   € Ø�;‰;×Ñ¤§¡Ó-Ø�J‰JŒLØ�;‰;×Ñ¤§¡Ó-Ø�{‰{× Ñ ¤E§M¡MÓ1Ü"Ð#;Ó<Ð<Ø—‘×"Ñ"¤e§n¡nÓ4Ü"Ð#:Ó;Ð;ä"Ø(×/Ñ/°·±×0AÑ0AÓBóDð Dàˆr   c                 ó$   • U R                  5         g r   )rp   ©r,   Úexc_typeÚexc_valÚexc_tbs       r   Ú__exit__ÚBaseManager.__exit__’  s   € Ø�‰�r   c                 ó  • U R                   " 5       (       Ga  [        R                  " S5         U" XS9n [        USS5        UR	                  5         U R                  " US9  U R                   " 5       (       a¬  [        R                  " S5        [        U S5      (       a…  [        R                  " S5        U R                  " 5         U R                  " US9  U R                   " 5       (       a8  [        R                  " S	5        U R                  " 5         U R                  " 5         [        R                  Ul         [        R                  U	 g! UR	                  5         f = f! [
         a     GNf = f! [         a     gf = f)
zA
Shutdown the manager process; will be registered as a finalizer
z#sending shutdown message to managerr  Nrp   )rG  zmanager still aliveÚ	terminatez'trying to `terminate()` manager processz#manager still alive after terminate)rE  r   r²   rP   r»   r±   rç   Úhasattrr\  Úkillr  r  r  r   Ú_address_to_localrÂ   )r   r)   r�   r5   r  r  r½   s          r   r3  ÚBaseManager._finalize_manager•  s$  € ð ×Ò×ÒÜ�IŠIÐ;Ô<ðÙ˜wÑ8�ð!Ü˜T 4¨Ô4à—J‘J”Lð �LŠLÐ!1Ò2Ø×Ò×!Ñ!Ü—	’	Ð/Ô0Ü˜7 K×0Ñ0Ü—I’IÐGÔHØ×%Ò%Ô'Ø—L’LÐ)9Ò:Ø×'Ò'×)Ñ)ÜŸ	š	Ð"GÔHØŸšœØŸšœä—n‘nˆŒð	Ü×+Ñ+¨GÑ4øð% —J‘J•LûÜó Úðûô$ ó 	Ùð	ús:   ¯E" ¶E ÁE" Ä;E3 ÅEÅE" Å"
E0Å/E0Å3
F Å?F c                 ó   • U R                   $ r   )r  r0   s    r   r)   ÚBaseManager.address¸  s   € à�}‰}Ðr   c                 óü  ^^• SU R                   ;  a  U R                  R                  5       U l        Tc  [        mU=(       d    [	        TSS5      nU=(       d    [	        TSS5      nU(       aZ  [        UR                  5       5       H=  u  px[        U5      [        L d
   SU-  5       e[        U5      [        L a  M5   SU-  5       e   X$UT4U R                  T'   U(       a  UU4S jn	TU	l	        [        U TU	5        gg)z)
Register a typeid with the manager type
r  NÚ	_exposed_Ú_method_to_typeid_z%r is not a stringc                ó  >• [         R                  " ST5        U R                  " T/UQ70 UD6u  p4T" X0R                  U U R                  US9nU R                  UR                  U R                  S9n[        US SUR                  45        U$ )Nz)requesting creation of a shared %r object©Úmanagerr�   rÈ   r  rx   )	r   rŸ   rB  r  r  r  r)   rP   r*   )	r,   rL   rM   rÏ   ÚexpÚproxyr½   rö   r(   s	          €€r   rf   Ú"BaseManager.register.<locals>.temp×  s   ø€ Ü—
’
ÐFÈÔOØ!Ÿ\š\¨&Ð@°4Ò@¸4Ñ@‘
�Ù!Ø×+Ñ+°TØ ŸM™M°3ñ�ð —|‘| E§M¡M¸4¿=¹=�|ÐI�Ü˜˜t X°·±¨{Ô;Ø�r   )Ú__dict__r  ÚcopyÚ	AutoProxyrc   r!   r   rY   rV   r;   Úsetattr)
r>  r(   rd   rö   rÈ   rõ   Úcreate_methodÚkeyr  rf   s
    ` `      r   ÚregisterÚBaseManager.register¼  sö   ù€ ð ˜cŸl™lÓ*ØŸM™M×.Ñ.Ó0ˆCŒMàÑÜ!ˆIà×BœW Y°¸TÓBˆà+÷ JÜ" 9Ð.BÀDÓIð 	ö Ü"Ð#3×#9Ñ#9Ó#;Ö<‘
�Ü˜C“y¤CÒ'ÐCÐ)=ÀÑ)CÓCÐ'Ü˜E“{¤cÔ)ÐGÐ+?À%Ñ+GÓGÐ)ñ =ð
 Ð/°ð!ˆ�‰�fÑö ö	ð #ˆDŒMÜ�C˜ Õ&ð r   )
r  r  r  r  r  r0  r  r  r  rp   )NNr  Nr}   r   )NNNNT)r;   r>   r?   r@   rA   r  rn   r=  r-   r  r   r—   Úclassmethodr/  rB  rç   rK  rO  rR  rY  Ústaticmethodr3  Úpropertyr)   rr  rC   rD   r   r   r   r   î  s®   † ñð €IØ€Gà>FØð2Ø/2ö2ò7ò*ô)ðV à/1óó ðò,
9ô%òòòòð ñ ó ð ðD ñó ðð ØEIØ6:ó%'ó ó%'r   r   c                   ó    • \ rS rSrS rS rSrg)ÚProcessLocalSetiè  c                 ó4   • [         R                  " U S 5        g )Nc                 ó"   • U R                  5       $ r   )Úclearr"   s    r   Ú<lambda>Ú*ProcessLocalSet.__init__.<locals>.<lambda>ê  s
   € °3·9±9´;r   )r   Úregister_after_forkr0   s    r   r-   ÚProcessLocalSet.__init__é  s   € Ü× Ò  Ñ'>Õ?r   c                 ó   • [        U 5      S4$ r}   )rY   r0   s    r   Ú
__reduce__ÚProcessLocalSet.__reduce__ë  s   € Ü�D‹z˜2ˆ~Ðr   rD   N)r;   r>   r?   r@   r-   r�  rC   rD   r   r   rx  rx  è  s   † ò@õr   rx  c                   óž   • \ rS rSrSr0 r\R                  " 5       rSr	  SS jr
S rS0 4S jrS	 rS
 r\S 5       rS rS rS rS rS rSrg)r   iò  z&
A base for proxies of shared objects
r	   Nc                 óˆ  • [         R                     [         R                  R                  UR                  S 5      nUc<  [
        R                  " 5       [        5       4nU[         R                  UR                  '   [         R                  U l	        [         =R                  S-  sl        S S S 5        WS   U l
        US   U l        Xl        U R                  R                  U l        X0l        X l        ["        U   S   U l        Xpl        Ub  [(        R*                  " U5      U l        OMU R                  b  U R                  R,                  U l        O$[(        R.                  " 5       R0                  U l        U(       a  U R3                  5         [
        R4                  " U [         R6                  5        g ! , (       d  f       GN= f)Nr	   r   )r   Ú_mutexr_  rÄ   r)   r   ÚForkAwareLocalrx  Ú_next_serialÚ_serialÚ_tlsÚ_all_serialsÚ_tokenr*   Ú_idÚ_managerr  r‚   r  Ú_owned_by_managerr   r€   r  r’   r�   Ú_increfr~  Ú_after_fork)	r,   rÏ   rŠ   rh  r�   rÈ   rw   Úmanager_ownedÚtls_serialss	            r   r-   ÚBaseProxy.__init__ý  sB  € ä×ÓÜ#×5Ñ5×9Ñ9¸%¿-¹-ÈÓNˆKØÑ"Ü"×1Ò1Ó3´_Ó5FÐF�Ø=H”	×+Ñ+¨E¯M©MÑ:ä$×1Ñ1ˆDŒLÜ×"Ò" aÑ'Õ"÷ ð   ‘NˆŒ	ð
 (¨™NˆÔàŒØ—;‘;—>‘>ˆŒØŒØ%ÔÜ& zÑ2°1Ñ5ˆŒð "/ÔàÑÜ#×8Ò8¸ÓAˆD�MØ�]‰]Ñ&Ø ŸM™M×2Ñ2ˆD�Mä#×3Ò3Ó5×=Ñ=ˆDŒMæØ�L‰LŒNä× Ò  ¤y×'<Ñ'<Õ=÷Q Öús   ‘BF2Æ2
Gc                 ó˜  • [         R                  " S5        [        R                  " 5       R                  n[
        R                  " 5       R                  S:w  a%  US[
        R                  " 5       R                  -   -  nU R                  U R                  R                  U R                  S9n[        US SU45        X R                  l        g )Nzmaking connection to managerÚ
MainThreadÚ|r  rr   )r   rŸ   r   r’   rg   r‡   rÁ   r  r‹  r)   r  rP   r‰  r
   )r,   rg   r½   s      r   Ú_connectÚBaseProxy._connect)  s“   € Ü�
Š
Ð1Ô2Ü×&Ò&Ó(×-Ñ-ˆÜ×#Ò#Ó%×*Ñ*¨lÓ:Ø�Cœ)×2Ò2Ó4×9Ñ9Ñ9Ñ9ˆDØ�|‰|˜DŸK™K×/Ñ/¸¿¹ˆ|ÐGˆÜ��tÐ0°4°'Ô:Ø#�	‰	Õr   rD   c                 óü  •  U R                   R                  nUR                  U R                  XU45        UR                  5       u  pVUS:X  a  U$ US:X  a«  Uu  pxU R                  R                  UR                     S   n	U R                  R                   Ul        U	" X€R"                  U R                  U R$                  US9n
U R'                  UR                   U R$                  S9n[)        USSUR*                  45        U
$  [-        XV5      e! [         a^    [        R                  " S[
        R                  " 5       R                  5        U R                  5         U R                   R                  n GN\f = f! Af = f)	zF
Try to call a method of the referent and return a copy of the result
z#thread %r does not own a connectionrF   rÀ   éÿÿÿÿrg  r  Nrx   )r‰  r
   rÃ   r   rŸ   r‡   rÁ   rg   r—  rG   rŒ  rH   r�  r  r(   r‹  r)   r  r  r  rP   r*   rI   )r,   rK   rL   rM   r½   rN   rO   rÈ   rÏ   rö   rj  s              r   Ú_callmethodÚBaseProxy._callmethod2  s=  € ð	(Ø—9‘9×'Ñ'ˆDð 	�	‰	�4—8‘8˜Z¨tÐ4Ô5Ø—y‘y“{‰ˆà�9ÓØˆMØ�XÓØ#‰NˆGØŸ™×/Ñ/°·±Ñ=¸bÑAˆIØ ŸK™K×/Ñ/ˆEŒMÙØ×'Ñ'°·±ØŸ™¨wñˆEð —<‘< §¡°t·}±}�<ÐEˆDÜ�T˜4 ¨E¯H©H¨;Ô7ØˆLð	Ü" 4Ó0Ð0øô/ ó 	(Ü�JŠJÐ<Ü ×/Ò/Ó1×6Ñ6ô8à�M‰MŒOØ—9‘9×'Ñ'‹Dð		(ûñ2 ús   ‚D ÄE8 ÄA$E5Å4E5Å8E;c                 ó$   • U R                  S5      $ )z)
Get a copy of the value of the referent
rß   ©r›  r0   s    r   Ú	_getvalueÚBaseProxy._getvalueS  s   € ð ×Ñ Ó,Ð,r   c                 óØ  • U R                   (       a,  [        R                  " SU R                  R                  5        g U R                  U R                  R                  U R                  S9n[        US SU R                  45        [        R                  " SU R                  R                  5        U R                  R                  U R                  5        U R                  =(       a    U R                  R                  n[        R                  " U [         R"                  U R                  U R                  U R                  UU R$                  U R                  U R
                  4SS9U l        g )Nz%owned_by_manager skipped INCREF of %rr  rw   z	INCREF %ré
   r+  )rŽ  r   rŸ   r‹  r*   r  r)   r  rP   rŒ  rŠ  Úaddrˆ  r�  r  r2  r   Ú_decrefr‰  Ú_close)r,   r½   r5   s      r   r�  ÚBaseProxy._increfY  sì   € Ø×!×!Ü�JŠJÐ>ÀÇÁÇÁÔOØà�|‰|˜DŸK™K×/Ñ/¸¿¹ˆ|ÐGˆÜ��t˜X¨¯© {Ô3Ü�
Š
�; §¡§¡Ô/à×Ñ×Ñ˜dŸl™lÔ+à—‘×6 $§-¡-×"6Ñ"6ˆä—m’mØ”)×#Ñ#Ø—+‘+˜tŸ|™|¨T¯]©]¸EØ—)‘)˜T×.Ñ.°·±ð>àñ	ˆ�r   c                 ót  • UR                  U5        Ub  UR                  [        R                  :X  aM   [        R
                  " SU R                  5        U" U R                  US9n[        US SU R                  45        O![        R
                  " SU R                  5        U(       dc  [        US5      (       aQ  [        R
                  " S[        R                  " 5       R                  5        UR                  R                  5         U?g g g ! [         a!  n[        R
                  " SU5         S nAN‘S nAff = f)Nz	DECREF %rr  rx   z... decref failed %sz%DECREF %r -- manager already shutdownr
   z-thread %r has no more proxies so closing conn)Údiscardr  r  r  r   rŸ   r*   r)   rP   r±   r]  r‡   rÁ   rg   r
   r»   )	rÏ   Úserialr�   r5   ÚtlsÚidsetr  r½   r·   s	            r   r¤  ÚBaseProxy._decrefm  sæ   € à�‰�fÔð ‰=˜EŸK™K¬5¯=©=Ó8ð6Ü—
’
˜;¨¯©Ô1Ù˜uŸ}™}°gÑ>�Ü˜˜t X°·±¨{Õ;ô
 �JŠJÐ>ÀÇÁÔIö œ  l×3Ñ3Ü�JŠJÐFÜ ×/Ò/Ó1×6Ñ6ô8à�N‰N× Ñ Ô"Ø‘ð	 4ˆuøô ó 6Ü—
’
Ð1°1×5Ñ5ûð6ús   ´AD Ä
D7ÄD2Ä2D7c                 ó”   • S U l          U R                  5         g ! [         a#  n[        R                  " SU-  5         S nAg S nAff = f)Nzincref failed: %s)r�  r�  r±   r   r²   )r,   r·   s     r   r�  ÚBaseProxy._after_fork†  s<   € ØˆŒð	/Ø�L‰L�NøÜó 	/ä�IŠIÐ)¨AÑ-×.Ñ.ûð	/ús   ‰ š
A¤AÁAc                 ó  • 0 n[        5       b  U R                  US'   [        U SS5      (       a3  U R                  US'   [        [
        U R                  U R                  U44$ [        [        U 5      U R                  U R                  U44$ )Nr�   Ú_isautoFrÈ   )	r   r  rc   rd  ÚRebuildProxyrn  r‹  r  rY   ©r,   rM   s     r   r�  ÚBaseProxy.__reduce__Ž  s‰   € ØˆÜÓÑ+Ø"Ÿm™mˆD�‰Oä�4˜ E×*Ñ*Ø"Ÿn™nˆD�‰OÜ Ü §¡¨T×-=Ñ-=¸tÐDðFð Fô !Ü˜$“Z §¡¨d×.>Ñ.>ÀÐEðGð Gr   c                 ó"   • U R                  5       $ r   )rŸ  )r,   Úmemos     r   Ú__deepcopy__ÚBaseProxy.__deepcopy__›  s   € Ø�~‰~ÓÐr   c                 ór   • S[        U 5      R                  U R                  R                  [	        U 5      4-  $ )Nz<%s object, typeid %r at %#x>)rY   r;   r‹  r(   r*   r0   s    r   r<   ÚBaseProxy.__repr__ž  s3   € Ø.Ü�T“
×#Ñ# T§[¡[×%7Ñ%7¼¸D»ÐBñCð 	Cr   c                 óh   •  U R                  S5      $ ! [         a    [        U 5      SS S-   s $ f = f)zF
Return representation of the referent (or a fall-back if that fails)
r<   Nrš  z; '__str__()' failed>)r›  r±   rÜ   r0   s    r   r_   ÚBaseProxy.__str__¢  s=   € ð	=Ø×#Ñ# JÓ/Ð/øÜó 	=Ü˜“:˜c˜r�?Ð%<Ñ<Ò<ð	=ús   ‚ “1°1)r  rŠ  r  r¥  rŒ  r�  rŽ  rˆ  r  r‰  r‹  ©NNNTF)r;   r>   r?   r@   rA   r_  r   ÚForkAwareThreadLockr…  r‡  r-   r—  r›  rŸ  r�  ru  r¤  r�  r�  r¶  r<   r_   rC   rD   r   r   r   r   ò  s{   † ñð ÐØ×%Ò%Ó'€Fð €Là26ØHMô*>òX$ð ,.°Bô òB-òð( ñó ðò0/òGò òCõ=r   r   c                 óâ  • [        [        R                  " 5       SS5      nU(       a€  UR                  UR                  :X  af  [        R
                  " SU5        SUS'   UR                  UR                  ;  a0  UR                  UR                     UR                  UR                  '   UR                  SS5      =(       a%    [        [        R                  " 5       SS5      (       + nU " X4SU0UD6$ )	z-
Function used for unpickling proxy objects.
r“   Nz*Rebuild a proxy owned by manager, token=%rTr‘  rw   Ú_inheritingF)
rc   r   r’   r)   r   rŸ   r*   r†   r„   Úpop)rh   rÏ   rŠ   rM   r?  rw   s         r   r±  r±  ¯  sÉ   € ô ”W×,Ò,Ó.Ð0AÀ4ÓH€FÞ�&—.‘. E§M¡MÓ1Ü�
Š
Ð?ÀÔGØ $ˆˆ_ÑØ�8‰8˜6×7Ñ7Ó7à× Ñ  §¡Ñ*ð ×(Ñ(¨¯©Ñ2ð 	�‰�˜4Ó ÷ 	EÜ”G×+Ò+Ó-¨}¸eÓDÔDð ñ �Ñ9¨&Ð9°DÑ9Ð9r   c                 óÄ   • [        U5      n X U4   $ ! [         a     Of = f0 nU H  n[        SU< SU< S3U5        M     [        U [        4U5      nXl        XRX4'   U$ )z:
Return a proxy type whose methods are given by `exposed`
zdef z:(self, /, *args, **kwds):
        return self._callmethod(z, args, kwds))rô   rÂ   ÚexecrY   r   rd  )rg   rÈ   Ú_cacheÚdicÚmethÚ	ProxyTypes         r   ÚMakeProxyTyperÇ  Ä  s�   € ô �G‹n€GðØ˜W�oÑ&Ð&øÜó Ùðúð €CãˆÝÛ6:»DðBØCFö	Hñ ô �TœI˜<¨Ó-€IØ!ÔØ'ˆDˆ?ÑØÐs   � “
 Ÿ c           	      óh  • [         U   S   nUc1  U" U R                  US9n [        USSU 45      nUR                  5         Uc  Ub  UR                  nUc  [
        R                  " 5       R                  n[        SU R                  -  U5      n	U	" XX#XVS9n
SU
l
        U
$ ! UR                  5         f = f)z"
Return an auto-proxy for `token`
r	   Nr  rs   zAutoProxy[%s])rh  r�   rw   r‘  T)r‚   r)   rP   r»   r  r   r’   r�   rÇ  r(   r°  )rÏ   rŠ   rh  r�   rÈ   rw   r‘  r  r½   rÆ  rj  s              r   rn  rn  Ú  s¶   € ô
 ˜jÑ)¨!Ñ,€Gà�Ù�u—}‘}¨gÑ6ˆð	Ü˜t T¨=¸5¸(ÓCˆGà�J‰JŒLà�˜7Ñ.Ø×"Ñ"ˆØ�Ü×)Ò)Ó+×3Ñ3ˆä˜o°·±Ñ<¸gÓF€IÙ�e°Ø#ñB€Eà€E„MØ€Løð �J‰J�Lús   ¢B ÂB1c                   ó    • \ rS rSrS rS rSrg)Ú	Namespacei÷  c                ó:   • U R                   R                  U5        g r   )rl  Úupdater²  s     r   r-   ÚNamespace.__init__ø  s   € Ø�‰×Ñ˜TÕ"r   c                 ó<  • [        U R                  R                  5       5      n/ nU H5  u  p4UR                  S5      (       a  M  UR	                  U< SU< 35        M7     UR                  5         U R                  R                  < SSR                  U5      < S3$ )Nrk   Ú=Ú(ú, r9   )	r!   rl  r   Ú
startswithre   ræ   r:   r;   rç   )r,   r   rf   rg   r  s        r   r<   ÚNamespace.__repr__ú  sr   € Ü�T—]‘]×(Ñ(Ó*Ó+ˆØˆÛ ‰KˆDØ—?‘? 3×'Ó'Ø—‘£tªUÐ3Ö4ñ !ð 	�	‰	ŒØŸ>™>×2Ô2°D·I±I¸d¶OÐDÐDr   rD   N)r;   r>   r?   r@   r-   r<   rC   rD   r   r   rÊ  rÊ  ÷  s   † ò#õEr   rÊ  c                   óB   • \ rS rSrSS jrS rS rS r\" \\5      r	Sr
g)	ÚValuei  c                 ó   • Xl         X l        g r   ©Ú	_typecodeÚ_value)r,   r   r  Úlocks       r   r-   ÚValue.__init__  s   € Ø!ŒØ�r   c                 ó   • U R                   $ r   ©rÙ  r0   s    r   rÄ   Ú	Value.get  s   € Ø�{‰{Ðr   c                 ó   • Xl         g r   rÝ  ©r,   r  s     r   rð   Ú	Value.set	  s   € Ø�r   c                 ól   • [        U 5      R                  < SU R                  < SU R                  < S3$ )NrÐ  rÑ  r9   )rY   r;   rØ  rÙ  r0   s    r   r<   ÚValue.__repr__  s!   € Ü! $›Z×0Ô0°$·.´.À$Ç+Ä+ÐNÐNr   r×  N©T)r;   r>   r?   r@   r-   rÄ   rð   r<   rv  r  rC   rD   r   r   rÕ  rÕ    s#   † ôòòòOá�S˜#ÓƒEr   rÕ  c                 ó.   • [         R                   " X5      $ r   )r   )r   ÚsequencerÚ  s      r   ÚArrayrç    s   € Ü�;Š;�xÓ*Ð*r   c                   ó6   • \ rS rSrSrS rS rS rS rS r	Sr
g	)
ÚIteratorProxyi  )Ú__next__rG   Úthrowr»   c                 ó   • U $ r   rD   r0   s    r   Ú__iter__ÚIteratorProxy.__iter__  ó   € Øˆr   c                 ó&   • U R                  SU5      $ )Nrê  rž  ©r,   rL   s     r   rê  ÚIteratorProxy.__next__  s   € Ø×Ñ 
¨DÓ1Ð1r   c                 ó&   • U R                  SU5      $ )NrG   rž  rñ  s     r   rG   ÚIteratorProxy.send  s   € Ø×Ñ ¨Ó-Ð-r   c                 ó&   • U R                  SU5      $ )Nrë  rž  rñ  s     r   rë  ÚIteratorProxy.throw  ó   € Ø×Ñ ¨Ó.Ð.r   c                 ó&   • U R                  SU5      $ )Nr»   rž  rñ  s     r   r»   ÚIteratorProxy.close   r÷  r   rD   N)r;   r>   r?   r@   rd  rí  rê  rG   rë  r»   rC   rD   r   r   ré  ré    s    † Ø6€Iòò2ò.ò/õ/r   ré  c                   ó4   • \ rS rSrSrS	S jrS rS rS rSr	g)
ÚAcquirerProxyi$  )ÚacquireÚreleaseNc                 ó8   • Uc  U4OX4nU R                  SU5      $ ©Nrü  rž  )r,   ÚblockingrG  rL   s       r   rü  ÚAcquirerProxy.acquire&  s%   € Ø%™o�‰{°HÐ3FˆØ×Ñ 	¨4Ó0Ð0r   c                 ó$   • U R                  S5      $ ©Nrý  rž  r0   s    r   rý  ÚAcquirerProxy.release)  ó   € Ø×Ñ 	Ó*Ð*r   c                 ó$   • U R                  S5      $ rÿ  rž  r0   s    r   rR  ÚAcquirerProxy.__enter__+  r  r   c                 ó$   • U R                  S5      $ r  rž  rU  s       r   rY  ÚAcquirerProxy.__exit__-  r  r   rD   )TN)
r;   r>   r?   r@   rd  rü  rý  rR  rY  rC   rD   r   r   rû  rû  $  s   † Ø&€Iô1ò+ò+õ+r   rû  c                   ó<   • \ rS rSrSrS	S jrS
S jrS rS	S jrSr	g)ÚConditionProxyi1  )rü  rý  r™   ÚnotifyÚ
notify_allNc                 ó(   • U R                  SU45      $ ©Nr™   rž  rF  s     r   r™   ÚConditionProxy.wait3  ó   € Ø×Ñ ¨¨
Ó3Ð3r   c                 ó(   • U R                  SU45      $ )Nr  rž  )r,   Úns     r   r  ÚConditionProxy.notify5  s   € Ø×Ñ ¨1¨$Ó/Ð/r   c                 ó$   • U R                  S5      $ )Nr  rž  r0   s    r   r  ÚConditionProxy.notify_all7  s   € Ø×Ñ Ó-Ð-r   c                 óþ   • U" 5       nU(       a  U$ Ub  [         R                  " 5       U-   nOS nS nU(       dE  Ub!  U[         R                  " 5       -
  nUS::  a   U$ U R                  W5        U" 5       nU(       d  ME  U$ )Nr   )ÚtimeÚ	monotonicr™   )r,   Ú	predicaterG  rO   ÚendtimeÚwaittimes         r   Úwait_forÚConditionProxy.wait_for9  s€   € Ù“ˆÞØˆMØÑÜ—n’nÓ&¨Ñ0‰GàˆGØˆHÞØÑ"Ø"¤T§^¢^Ó%5Ñ5�Ø˜q“=Øð ˆð �I‰I�hÔÙ“[ˆF÷ �&ð ˆr   rD   r   )r	   )
r;   r>   r?   r@   rd  r™   r  r  r  rC   rD   r   r   r  r  1  s   † ØF€Iô4ô0ò.÷r   r  c                   ó4   • \ rS rSrSrS rS rS rS	S jrSr	g)
Ú
EventProxyiL  )r˜   rð   r{  r™   c                 ó$   • U R                  S5      $ )Nr˜   rž  r0   s    r   r˜   ÚEventProxy.is_setN  s   € Ø×Ñ Ó)Ð)r   c                 ó$   • U R                  S5      $ ©Nrð   rž  r0   s    r   rð   ÚEventProxy.setP  ó   € Ø×Ñ Ó&Ð&r   c                 ó$   • U R                  S5      $ )Nr{  rž  r0   s    r   r{  ÚEventProxy.clearR  ó   € Ø×Ñ Ó(Ð(r   Nc                 ó(   • U R                  SU45      $ r  rž  rF  s     r   r™   ÚEventProxy.waitT  r  r   rD   r   )
r;   r>   r?   r@   rd  r˜   rð   r{  r™   rC   rD   r   r   r   r   L  s   † Ø2€Iò*ò'ò)÷4r   r   c                   ó^   • \ rS rSrSrSS jrS rS r\S 5       r	\S 5       r
\S	 5       rS
rg)ÚBarrierProxyiX  )Ú__getattribute__r™   ÚabortÚresetNc                 ó(   • U R                  SU45      $ r  rž  rF  s     r   r™   ÚBarrierProxy.waitZ  r  r   c                 ó$   • U R                  S5      $ )Nr/  rž  r0   s    r   r/  ÚBarrierProxy.abort\  r)  r   c                 ó$   • U R                  S5      $ )Nr0  rž  r0   s    r   r0  ÚBarrierProxy.reset^  r)  r   c                 ó&   • U R                  SS5      $ )Nr.  )Úpartiesrž  r0   s    r   r8  ÚBarrierProxy.parties`  s   € à×ÑÐ 2°LÓAÐAr   c                 ó&   • U R                  SS5      $ )Nr.  )Ú	n_waitingrž  r0   s    r   r;  ÚBarrierProxy.n_waitingc  s   € à×ÑÐ 2°NÓCÐCr   c                 ó&   • U R                  SS5      $ )Nr.  )Úbrokenrž  r0   s    r   r>  ÚBarrierProxy.brokenf  s   € à×ÑÐ 2°KÓ@Ð@r   rD   r   )r;   r>   r?   r@   rd  r™   r/  r0  rv  r8  r;  r>  rC   rD   r   r   r-  r-  X  sR   † Ø>€Iô4ò)ò)àñBó ðBàñDó ðDàñAó óAr   r-  c                   ó*   • \ rS rSrSrS rS rS rSrg)ÚNamespaceProxyik  )r.  Ú__setattr__Ú__delattr__c                 ó~   • US   S:X  a  [         R                  X5      $ [         R                  U S5      nU" SU45      $ )Nr   rk   r›  r.  )Úobjectr.  ©r,   rq  Ú
callmethods      r   Ú__getattr__ÚNamespaceProxy.__getattr__m  s@   € Øˆq‰6�S‹=Ü×*Ñ*¨4Ó5Ð5Ü×,Ñ,¨T°=ÓAˆ
ÙÐ,¨s¨fÓ5Ð5r   c                 ó€   • US   S:X  a  [         R                  XU5      $ [         R                  U S5      nU" SX45      $ )Nr   rk   r›  rB  )rE  rB  r.  )r,   rq  r  rG  s       r   rB  ÚNamespaceProxy.__setattr__r  sA   € Øˆq‰6�S‹=Ü×%Ñ% d°Ó7Ð7Ü×,Ñ,¨T°=ÓAˆ
Ù˜-¨#¨Ó6Ð6r   c                 ó~   • US   S:X  a  [         R                  X5      $ [         R                  U S5      nU" SU45      $ )Nr   rk   r›  rC  )rE  rC  r.  rF  s      r   rC  ÚNamespaceProxy.__delattr__w  s?   € Øˆq‰6�S‹=Ü×%Ñ% dÓ0Ð0Ü×,Ñ,¨T°=ÓAˆ
Ù˜-¨#¨Ó0Ð0r   rD   N)	r;   r>   r?   r@   rd  rH  rB  rC  rC   rD   r   r   rA  rA  k  s   † ØB€Iò6ò
7õ
1r   rA  c                   óZ   • \ rS rSrSrS rS r\" \\5      r\	" \
R                  5      rSrg)Ú
ValueProxyi~  )rÄ   rð   c                 ó$   • U R                  S5      $ )NrÄ   rž  r0   s    r   rÄ   ÚValueProxy.get€  r&  r   c                 ó(   • U R                  SU45      $ r$  rž  rà  s     r   rð   ÚValueProxy.set‚  s   € Ø×Ñ ¨ xÓ0Ð0r   rD   N)r;   r>   r?   r@   rd  rÄ   rð   rv  r  rt  ÚtypesÚGenericAliasÚ__class_getitem__rC   rD   r   r   rO  rO  ~  s.   † Ø€Iò'ò1á�S˜#Ó€Eá# E×$6Ñ$6Ó7Ór   rO  ÚBaseListProxy)Ú__add__Ú__contains__Ú__delitem__Ú__getitem__Ú__len__Ú__mul__Ú__reversed__Ú__rmul__Ú__setitem__re   ÚcountÚextendÚindexÚinsertrÀ  ÚremoveÚreverseræ   Ú__imul__c                   óD   • \ rS rSrS rS r\" \R                  5      r	Sr
g)Ú	ListProxyi�  c                 ó,   • U R                  SU45        U $ )Nrb  rž  rà  s     r   Ú__iadd__ÚListProxy.__iadd__�  s   € Ø×Ñ˜ E 8Ô,Øˆr   c                 ó,   • U R                  SU45        U $ )Nrg  rž  rà  s     r   rg  ÚListProxy.__imul__“  s   € Ø×Ñ˜ e XÔ.Øˆr   rD   N)r;   r>   r?   r@   rk  rg  rt  rT  rU  rV  rC   rD   r   r   ri  ri  �  s   † òòñ $ E×$6Ñ$6Ó7Ór   ri  Ú	DictProxy)rY  rZ  r[  rí  r\  r`  r{  rm  rÄ   r   r   rÀ  ÚpopitemÚ
setdefaultrÌ  r   rí  ÚIteratorc                   ó8   • \ rS rSr\" \R                  5      rSrg)ro  i¢  rD   N)	r;   r>   r?   r@   rt  rT  rU  rV  rC   rD   r   r   ro  ro  ¢  s   † Ù# E×$6Ñ$6Ó7Ór   Ú
ArrayProxy)r\  r[  r`  Ú	PoolProxy)ÚapplyÚapply_asyncr»   ÚimapÚimap_unorderedrç   ÚmapÚ	map_asyncÚstarmapÚstarmap_asyncr\  ÚAsyncResult)rw  r{  r}  rx  ry  c                   ó    • \ rS rSrS rS rSrg)ru  i¶  c                 ó   • U $ r   rD   r0   s    r   rR  ÚPoolProxy.__enter__·  rï  r   c                 ó$   • U R                  5         g r   )r\  rU  s       r   rY  ÚPoolProxy.__exit__¹  s   € Ø�‰Õr   rD   N)r;   r>   r?   r@   rR  rY  rC   rD   r   r   ru  ru  ¶  s   † òõr   c                   ó   • \ rS rSrSrSrg)r   iÀ  a  
Subclass of `BaseManager` which supports a number of shared object types.

The types registered are those intended for the synchronization
of threads, plus `dict`, `list` and `Namespace`.

The `multiprocessing.Manager()` function creates started instances of
this class.
rD   N)r;   r>   r?   r@   rA   rC   rD   r   r   r   r   À  s   † ôr   r   ÚQueueÚJoinableQueuer�   rˆ   ÚRLockÚ	SemaphoreÚBoundedSemaphoreÚ	ConditionÚBarrierÚPoolr!   ró   rç  )rö   rp  )rp  c                   óH   • \ rS rSrSr/ 4S jrS rS rS rS r	S r
S	 rS
rg)Ú_SharedMemoryTrackeriå  z+Manages one or more shared memory segments.c                 ó   • Xl         X l        g r   ©Úshared_memory_context_nameÚsegment_names)r,   rg   r’  s      r   r-   Ú_SharedMemoryTracker.__init__è  s   € Ø.2Ô+Ø!.Õr   c                 ó„   • [         R                  " SU< S[        5        35        U R                  R	                  U5        g)z6Adds the supplied shared memory block name to tracker.zRegister segment ú in pid N)r   rŸ   r   r’  re   ©r,   Úsegment_names     r   Úregister_segmentÚ%_SharedMemoryTracker.register_segmentì  s3   € ä�JŠJÐ*¨<Ñ*:¸(Ä6Ã8À*ÐMÔNØ×Ñ×%Ñ% lÕ3r   c                 óð   • [         R                  " SU< S[        5        35        U R                  R	                  U5        [
        R                  " U5      nUR                  5         UR                  5         g)zvCalls unlink() on the shared memory block with the supplied name
and removes it from the list of blocks being tracked.zDestroy segment r•  N)	r   rŸ   r   r’  re  r   ÚSharedMemoryr»   Úunlink)r,   r—  Úsegments      r   Údestroy_segmentÚ$_SharedMemoryTracker.destroy_segmentñ  sX   € ô �JŠJÐ)¨,Ñ)9¸Ä&Ã(ÀÐLÔMØ×Ñ×%Ñ% lÔ3Ü#×0Ò0°Ó>ˆGØ�M‰MŒOØ�N‰NÕr   c                 óR   • U R                   SS  H  nU R                  U5        M     g)z<Calls destroy_segment() on all tracked shared memory blocks.N)r’  rž  r–  s     r   rœ  Ú_SharedMemoryTracker.unlinkú  s%   € à $× 2Ñ 2±1Ó 5�Ø×$Ñ$ \Ö2ò !6r   c                 ó”   • [         R                  " SU R                  R                   S[	        5        35        U R                  5         g )NzCall z.__del__ in )r   rŸ   r:   r;   r   rœ  r0   s    r   Ú__del__Ú_SharedMemoryTracker.__del__ÿ  s1   € Ü�JŠJ˜˜tŸ~™~×6Ñ6Ð7°|ÄFÃHÀ:ÐNÔOØ�K‰K�Mr   c                 ó2   • U R                   U R                  4$ r   r�  r0   s    r   r1   Ú!_SharedMemoryTracker.__getstate__  s   € Ø×3Ñ3°T×5GÑ5GÐHÐHr   c                 ó"   • U R                   " U6   g r   )r-   r4   s     r   r6   Ú!_SharedMemoryTracker.__setstate__  s   € Ø�MŠM˜5Ò!r   )r’  r‘  N)r;   r>   r?   r@   rA   r-   r˜  rž  rœ  r£  r1   r6   rC   rD   r   r   rŽ  rŽ  å  s,   † Ù5à/1ô 	/ò	4ò
	ò	3ò
	ò	Iõ	"r   rŽ  c                   óZ   • \ rS rSr\R
                  / SQ-   rS rS rS rS r	S r
S rS	rg
)ÚSharedMemoryServeri
  )Útrack_segmentÚrelease_segmentÚlist_segmentsc                 ó$  • [         R                  " U /UQ70 UD6  U R                  n[        U[        5      (       a  [
        R                  " U5      n[        SU S[        5        35      U l	        [        R                  " S[        5        35        g )NÚshm_rk   z"SharedMemoryServer started by pid )rn   r-   r)   rU   r~   ÚosÚfsdecoderŽ  r   Úshared_memory_contextr   rŸ   )r,   rL   Úkwargsr)   s       r   r-   ÚSharedMemoryServer.__init__  sq   € Ü�OŠO˜DÐ2 4Ò2¨6Ò2Ø—l‘lˆGä˜'¤5×)Ñ)ÜŸ+š+ gÓ.�ä$ t¨G¨9°A´f³h°ZÐ%@ÓAð Ô&ä�JŠJÐ;¼F»H¸:ÐFÕGr   c                ó˜   • [        U R                  U   S   S5      (       a  U R                  US'   [        R                  " XU/UQ70 UD6$ )z|Create a new distributed-shared object (not backed by a shared
memory block) and return its id to be used in a Proxy Object.rš  Ú_shared_memory_proxyr²  )r]  r   r²  rn   rq   )r,   rJ   r(   rL   r³  s        r   rq   ÚSharedMemoryServer.create  sL   € ô �t—}‘} VÑ,¨RÑ0Ð2H×IÑIØ26×2LÑ2L�Ð.Ñ/Ü—=’= ¨&ÐB°4ÒB¸6ÑBÐBr   c                 ó`   • U R                   R                  5         [        R                  X5      $ )zACall unlink() on all tracked shared memory, terminate the Server.)r²  rœ  rn   rp   rá   s     r   rp   ÚSharedMemoryServer.shutdown#  s#   € à×&Ñ&×-Ñ-Ô/Ü—?‘? 4Ó+Ð+r   c                 ó:   • U R                   R                  U5        g)z?Adds the supplied shared memory block name to Server's tracker.N)r²  r˜  ©r,   rJ   r—  s      r   r«  Ú SharedMemoryServer.track_segment(  s   € à×&Ñ&×7Ñ7¸ÕEr   c                 ó:   • U R                   R                  U5        g)z|Calls unlink() on the shared memory block with the supplied name
and removes it from the tracker instance inside the Server.N)r²  rž  r»  s      r   r¬  Ú"SharedMemoryServer.release_segment,  s   € ð ×&Ñ&×6Ñ6°|ÕDr   c                 ó.   • U R                   R                  $ )zVReturns a list of names of shared memory blocks that the Server
is currently tracking.)r²  r’  rá   s     r   r­  Ú SharedMemoryServer.list_segments1  s   € ð ×-Ñ-×;Ñ;Ð;r   )r²  N)r;   r>   r?   r@   rn   r°   r-   rq   rp   r«  r¬  r­  rC   rD   r   r   rª  rª  
  s6   † à—‘ÚFñGˆò	Hò	Cò	,ò
	Fò	Eõ
	<r   rª  c                   ó:   • \ rS rSrSr\rS rS rS r	S r
S rSrg	)
r   i7  aq  Like SyncManager but uses SharedMemoryServer instead of Server.

It provides methods for creating and returning SharedMemory instances
and for creating a list-like object (ShareableList) backed by shared
memory.  It also provides methods that create and return Proxy Objects
that support synchronization across processes (i.e. multi-process-safe
locks and semaphores).
c                 óú   • [         R                  S:X  a  SSKJn  UR	                  5         [
        R                  " U /UQ70 UD6  [        R                  " U R                  R                   S[        5        35        g )NÚposixr	   )Úresource_trackerz created by pid )r°  rg   Ú rÄ  Úensure_runningr   r-   r   rŸ   r:   r;   r   )r,   rL   r³  rÄ  s       r   r-   ÚSharedMemoryManager.__init__C  s\   € Ü�w‰w˜'Ó!õ /Ø ×/Ñ/Ô1Ü× Ò  Ð7¨Ò7°Ò7Ü�JŠJ˜$Ÿ.™.×1Ñ1Ð2Ð2BÄ6Ã8À*ÐMÕNr   c                 ór   • [         R                  " U R                  R                   S[	        5        35        g )Nz.__del__ by pid )r   rŸ   r:   r;   r   r0   s    r   r£  ÚSharedMemoryManager.__del__O  s'   € Ü�JŠJ˜$Ÿ.™.×1Ñ1Ð2Ð2BÄ6Ã8À*ÐMÕNr   c                 óò  • U R                   R                  [        R                  :w  a”  U R                   R                  [        R                  :X  a  [        S5      eU R                   R                  [        R                  :X  a  [        S5      e[        SR                  U R                   R                  5      5      eU R                  U R                  U R                  U R                  U R                  5      $ )z@Better than monkeypatching for now; merge into Server ultimatelyz"Already started SharedMemoryServerz!SharedMemoryManager has shut downr  )r  r  r  r  r  r   r  rX   r=  r  r  r  r  r0   s    r   r  ÚSharedMemoryManager.get_serverR  s±   € à�{‰{× Ñ ¤E§M¡MÓ1Ø—;‘;×$Ñ$¬¯©Ó5Ü&Ð'KÓLÐLØ—[‘[×&Ñ&¬%¯.©.Ó8Ü&Ð'JÓKÐKä&Ø,×3Ñ3°D·K±K×4EÑ4EÓFóHð Hà—<‘< §¡°·±Ø $§¡¨t×/?Ñ/?óAð Ar   c                 ó.  • U R                  U R                  U R                  S9 n[        R                  " SSUS9n [        USSUR                  45         SSS5        U$ ! [         a  nUR                  5         UeSnAff = f! , (       d  f       W$ = f)zcReturns a new SharedMemory instance with the specified size in
bytes, to be tracked by the manager.r  NT)rq   Úsizer«  )	r  r  r  r   r›  rP   rg   ÚBaseExceptionrœ  )r,   rÍ  r½   Úsmsr·   s        r   r›  Ú SharedMemoryManager.SharedMemory_  s‰   € ð —‘˜dŸm™m°T·]±]�ÑCÀtÜ#×0Ò0°¸dÈÑN�ðÜ˜T 4¨¸3¿8¹8¸+ÕF÷ Dð ˆJøô %ó Ø—J‘J”LØ�Gûðú÷	 DÔCð ˆJús(   ¥B½A!Á!
BÁ+A=Á=BÂBÂ
Bc                 óV  • U R                  U R                  U R                  S9 n[        R                  " U5      n [        USSUR                  R                  45         SSS5        U$ ! [         a!  nUR                  R                  5         UeSnAff = f! , (       d  f       W$ = f)zuReturns a new ShareableList instance populated with the values
from the input sequence, to be tracked by the manager.r  Nr«  )
r  r  r  r   ÚShareableListrP   Úshmrg   rÎ  rœ  )r,   ræ  r½   Úslr·   s        r   rÒ  Ú!SharedMemoryManager.ShareableListk  s�   € ð —‘˜dŸm™m°T·]±]�ÑCÀtÜ"×0Ò0°Ó:�ðÜ˜T 4¨¸2¿6¹6¿;¹;¸.ÕI÷ Dð ˆIøô %ó Ø—F‘F—M‘M”OØ�Gûðú÷	 DÔCð ˆIús(   ¥B½#A+Á+
BÁ5BÂBÂBÂ
B(rD   N)r;   r>   r?   r@   rA   rª  r=  r-   r£  r  r›  rÒ  rC   rD   r   r   r   r   7  s*   † ñ	ð %ˆò
	Oò	Oò	Aò
	õ
	r   r¼  rä  )XÚ__all__rœ   r‡   r:  r   Úqueuer  rT  r°  r   rî   r   rÅ  r
   Úcontextr   r   r   r   r   r   r   r   Ú	HAS_SHMEMre   ÚImportErrorr   rr  rY   rc   Ú
view_typesr$   Ú	view_typerE  r   rP   rI   r±   rZ   ri   rl   rn   r  r‹   rŒ   ÚXmlListenerÚ	XmlClientr‚   r   rð   rx  r   r±  rÇ  rn  rÊ  rÕ  rç  ré  rû  r  r   r-  rA  rO  rW  ri  Ú_BaseDictProxyre  ro  rt  ÚBasePoolProxyru  r   r…  r�   rˆ   r‡  rˆ  r‰  rŠ  r‹  rŒ  r!   ró   rŽ  rª  r   )rg   s   0r   Ú<module>rá     s]  ðò A€ó Û Û Û Û Û Û Û 	Ý å  å ß @Ñ @Ý Ý Ý Ý ð*Ýð €IØ‡N�NÐ(Ô)ò2à 	× Ò �5—;‘; Ô -á4MÓNÒ4M¨D‰d‘7˜2˜tÔ$Ó&Ö'Ñ4MÑN€
òã€IØ×Ò�y /Ö2ñ àˆzôMˆFô Mð. &(¨bô òIôC�)ô Cò	òAôF*ˆVô F*ôZ
ˆFô ð ×#Ñ# Z×%6Ñ%6Ð7Ø×)Ñ)¨:×+?Ñ+?Ð@ñ€ôt'�&ô t'ôt�cô ôw=�ô w=òz:ð* )+ô ð, 8<Ø7<ôô:
E�ô 
Eô
ˆFô 
ô+ô/�Iô /ô
+�Iô 
+ô�]ô ô6	4�ô 	4ôA�9ô Aô&1�Yô 1ô&8�ô 8ñ ˜oð 0ó €ô8�ô 8ñ ˜{ð -ó €ð �
ð%€Ô !ô8�ô 8ñ ˜<ð *ó €
ñ
 ˜kð ,ó €ð
 !ØØ"ØØ ñ$€Ô  ô�ô ô	�+ô 	ð × Ñ �W˜eŸk™kÔ *Ø × Ñ �_ e§k¡kÔ 2Ø × Ñ �W˜iŸo™o¨zÔ :Ø × Ñ �V˜YŸ^™^¨]Ô ;Ø × Ñ �W˜iŸo™o¨}Ô =Ø × Ñ �[ )×"5Ñ"5°}Ô EØ × Ñ Ð'¨×)CÑ)CØ"ô$à × Ñ �[ )×"5Ñ"5°~Ô FØ × Ñ �Y 	× 1Ñ 1°<Ô @Ø × Ñ �V˜TŸY™Y¨	Ô 2Ø × Ñ �V˜T 9Ô -Ø × Ñ �V˜T 9Ô -Ø × Ñ �W˜e ZÔ 0Ø × Ñ �W˜e ZÔ 0Ø × Ñ �[ )¨^Ô <ð × Ñ �Z¨=ÈÐ Ñ NØ × Ñ �]°%Ð Ñ 8ö ÷""ñ ""ôJ*<˜Vô *<ôZ>˜kõ >ðg øð% ó ØƒIðüò Os   ÁP ÂPÐPÐP