+
    3jY;                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIt^RI	H
t
 ^RI	Ht . ROt]! ]R4      t]P                  ]P                   3tR tR]RR	 /t]P(                  R
8X  d6   ^ RIt^ RIt]! ]R4      '       d   ]P.                  ]R&   ]P0                  ]R&    ! R R]4      t ! R R]4      t]! 4       t]P<                  t]P>                  t]P@                  t ]PB                  t!R t"R t#R# )    N)deque)spawn)utilpthread_sigmaskc                     \        R 4      h)z-noop should never be registered or cleaned up)RuntimeErrornames   &7/usr/lib/python3.14/multiprocessing/resource_tracker.pycleanup_noopr   $   s    
F
GG    noopdummyc                     R # N r	   s   &r   <lambda>r   )   s    $r   posix
sem_unlink	semaphoreshared_memoryc                       ] tR t^:tRtR# )ReentrantCallErrorr   N)__name__
__module____qualname____firstlineno____static_attributes__r   r   r   r   r   :   s    r   r   c                      a  ] tR t^>t o R tR tR tRR lt]P                  ]P                  ]P                  3R ltR tR tR tR	 tR
 tRR ltR tR tR tR tR tRtV tR# )ResourceTrackerc                    \         P                  ! 4       V n        R V n        R V n        R V n        \        4       V n        RV n        R # )NT)		threadingRLock_lock_fd_pid	_exitcoder   _reentrant_messages_use_simple_formatselfs   &r   __init__ResourceTracker.__init__@   s9    __&
	#(7  #'r   c                    \        R 4      h)z8Reentrant call into the multiprocessing resource tracker)r   r*   s   &r   _reentrant_call_error%ResourceTracker._reentrant_call_errorN   s    
 !FH 	Hr   c                *    V P                  R R7       R# )F)use_blocking_lockN)_stopr*   s   &r   __del__ResourceTracker.__del__V   s     	

U
+r   c                   V'       d0   V P                   ;_uu_ 4        V P                  4        R R R 4       R # V P                   P                  RR7      p V P                  4        V'       d   V P                   P                  4        R # R #   + '       g   i     R # ; i  T'       d   T P                   P                  4        i i ; i)NF)blocking)r$   _stop_lockedacquirerelease)r+   r2   acquireds   && r   r3   ResourceTracker._stop\   s    !!#  zz))5)9H)!!#JJ&&(   JJ&&( s   BB B	%Cc                   V P                   P                  4       ^8  d   V P                  4       hV P                  f   R# V P                  f   R# V! V P                  4       RV n         V! V P                  ^ 4      w  rERT n         T! T4      T n        R#   \
         d    RT n        RT n         R# i ; i  \         d    RT n         R# i ; i   N)r$   _recursion_countr/   r%   r&   ChildProcessErrorr'   
ValueError)r+   closewaitpidwaitstatus_to_exitcode_statuss   &&&&  r   r8   ResourceTracker._stop_lockedh   s     ::&&(1,,,..8899 	dhh			1-IA 		"3F;DN ! 	DI!DN	  	"!DN	"s$   *B B6 B32B36CCc                :    V P                  4        V P                  # r   )ensure_runningr%   r*   s   &r   getfdResourceTracker.getfd   s    xxr   c                "    V P                  4       # )zMake sure that resource tracker process is running.

This can be run from any process.  Usually a child process will use
the resource created by its parent.)_ensure_running_and_writer*   s   &r   rJ   ResourceTracker.ensure_running   s    
 --//r   c                   \         P                  ! V P                  4        V P                  e"   \         P                  ! V P                  ^ 4       R T n        R T n        R T n        \        P                  ! R4       R #   \
         d     L:i ; i)NzUresource_tracker: process died unexpectedly, relaunching.  Some resources might leak.)	osrC   r%   r&   rD   rA   r'   warningswarnr*   s   &r   _teardown_dead_process&ResourceTracker._teardown_dead_process   ss    
	 yy$

499a( 	 A 	B ! 		s   /A> >BBc                H   . p VP                  \        P                  P                  4       4       \
        P                  ! 4       w  r# VP                  V4       \        P                  ! 4       pV.\        P                  ! 4       OR NRV R2NpRp \        '       d*   \        P                  ! \        P                  \        4      p\        P                   ! WEV4      pVe&   \        P                  ! \        P"                  V4       Y0n        Ypn         \
        P(                  ! T4       R#   \         d     EL	i ; i  Te'   \        P                  ! \        P"                  T4       i i ; i   \
        P(                  ! T4       h ; i  \
        P(                  ! T4       i ; i)z-cz7from multiprocessing.resource_tracker import main;main()N)appendsysstderrfileno	ExceptionrQ   piper   get_executabler   _args_from_interpreter_flags_HAVE_SIGMASKsignalr   	SIG_BLOCK_IGNORED_SIGNALSspawnv_passfdsSIG_SETMASKr%   r&   rC   )r+   fds_to_passrwexeargsprev_sigmaskpids   &       r   _launchResourceTracker._launch   s[   	szz0023 wwy	q!&&(C224  J!AN	D  LM =#)#9#9&:J:JL\#]L))#[A+**6+=+=|L
 HIHHQKE  		2  +**6+=+=|L ,	HHQK
 HHQKsI   -D, 	AE- AD> )E- F	 ,D;:D;>,E**E- -FF	 	F!c                    V P                   '       d   R# \        P                  ! RRRR/RR
R7      R,           P                  R	4      # )zReturn a probe message.s   PROBE:0:noop
cmdPROBErtyper   Tensure_ascii
separators
ascii,:)r)   jsondumpsencoder*   s   &r   _make_probe_message#ResourceTracker._make_probe_message   sI    """$JJ&1!%
  &/	r   Nc                   V P                   ;_uu_ 4        V P                   P                  4       ^8  d:   Vf   V P                  4       hV P                  P	                  V4      uuRRR4       # V P
                  e-   Vf   V P                  4       pMTp V P                  V4       RpMV P                  4        RRR4         V P                  P                  4       pT P                  T4       K/    \         d$    T P                  4        T P                  4         Lwi ; i  + '       g   i     Lp; i  \         d     Mi ; iTe   T P                  T4       R# R# r>   )r$   r@   r/   r(   rX   r%   r~   _writeOSErrorrT   rm   popleft
IndexError)r+   msgto_sendreentrant_msgs   &&  r   rN   )ResourceTracker._ensure_running_and_write   s   ZZZzz**,q0;4466//66s; Z xx#;"668G!G#KK(
 + .  $ 8 8 @ @ B KK&  #//1LLN# Z4   ?KK sH   AD .%D C/%D D3 /+DD DD  D0	3E Ec                     \         P                  ! V P                  V P                  4       4       R#   \         d     R# i ; i)z;Check that the pipe has not been closed by sending a probe.TF)rQ   writer%   r~   r   r*   s   &r   _check_aliveResourceTracker._check_alive   s=    	 HHTXXt779:   		s   /3 AAc                *    V P                  RW4       R# )z0Register name of resource with resource tracker.REGISTERN_sendr+   r
   rr   s   &&&r   registerResourceTracker.register
  s    

:t+r   c                *    V P                  RW4       R# )z2Unregister name of resource with resource tracker.
UNREGISTERNr   r   s   &&&r   
unregisterResourceTracker.unregister  s    

<-r   c                    \         P                  ! V P                  V4      pV\        V4      8X  g   Q R V: R\        V4      : 24       hR# )znbytes=z != len(msg)=N)rQ   r   r%   len)r+   r   nbytess   && r   r   ResourceTracker._write  s>    $((C(S!>gfYn3s8+#>>!r   c                v   V P                   '       dP   R V9  dI   V RV RV R 2P                  R4      p\        V4      R8  d   \        R4      hV P	                  V4       R# VP                  RR4      p\        V4      ^8  d   \        R4      h\
        P                  ! V4      P                  R4      pR	VR
VRV/p\        P                  ! VRRR7      R ,           P                  R4      p\        V4      R8:  g   Q R\        V4       R24       hVP                  R4      '       g   Q hV P	                  V4       R# )rv   rz   rw   i   zmsg too longNutf-8surrogateescapez+shared memory name too long (max 255 bytes)rp   rr   base64_nameTrs   z"internal error: message too long (z bytes)   {rx   )r)   r}   r   rB   rN   base64urlsafe_b64encodedecoder{   r|   
startswith)r+   rp   r
   rr   r   bb64payloads   &&&&    r   r   ResourceTracker._send  s#   """t4'7E4&%+227;C3x#~ !00**3/ KK!23q6C<JKK&&q)009#w}cBzz'LtS[[\cd 3x3V"DSXJg VV~~d####&&s+r   )r'   r%   r$   r&   r(   r)   )Tr   )r   r   r   r   r,   r/   r4   r3   rQ   rC   rD   rE   r8   rK   rJ   rT   rm   r~   rN   r   r   r   r   r   r   __classdictcell__)__classdict__s   @r   r    r    >   sx     'H,
) hh

!88	!"F0B&&PB	,.?, ,r   r    c                    V P                  R 4      '       d    \        P                  ! V P                  R4      4      pTR,          pTR,          pTP                  RR4      p\        T\        4      '       d-   \        T\        4      '       d   \        T\        4      '       g   \        RT: 24      h \        P                  ! T4      P                  R	R
4      pMGV P                  4       P                  R4      P                  R^R7      w  r7VP                  R^R7      w  rdW4V3#   \         d   p\        RT : 24      ThRp?ii ; i  \
         d   p\        RT: 24      ThRp?ii ; i)r   rw   z$malformed resource_tracker message: Nrp   rr   r    z#malformed resource_tracker fields: r   r   z(malformed resource_tracker base64_name: rz   )maxsplit)r   r{   loadsr   r\   rB   get
isinstancestrr   urlsafe_b64decodestripsplitrsplit)lineobjerp   rr   r   r
   rests   &       r   _decode_messager   >  s=   t	X**T[[12C %jGww}b)#s##:eS+A+ATWY\I]I]MNN	[++C077ARSD JJL''066sQ6G	kk#k2t#  	XOPVWW	X  	[SRSYZZ	[s/   %D& 4&E	 &E1EE	E)E$$E)c                   \         P                   ! \         P                  \         P                  4       \         P                   ! \         P                  \         P                  4       \        '       d*   \         P
                  ! \         P                  \        4       \        P                  \        P                  3 F  p VP                  4        K  	  \        P                  4        Uu/ uF  q"\        4       bK  	  pp^ p \!        V R4      ;_uu_ 4       pV F  p \#        V4      w  rbp\        P%                  VR4      pVf   \'        RV RV 24      hVR8X  d   W2,          P)                  V4       K]  VR8X  d   W2,          P+                  V4       K}  VR8X  d   K  \-        RV,          4      h	  RRR4       VP3                  4        F_  w  r)V	'       d5    ^pVR	8X  d   M)\4        P6                  ! R
\9        V	4       RV RV	 24        V	 F  p  \        V,          ! V4       K  	  Ka  	  \        P:                  ! V4       R#   \         d     EK  i ; iu upi   \         d:    ^p \        P.                  ! \        P0                  ! 4       !    EK~       EK  ; ii ; i  + '       g   i     L; i  \         d     Li ; i  \         d+   p
^p\4        P6                  ! RT: RT
: 24        Rp
?
LRp
?
ii ; i  i ; i  TP3                  4        F  w  r)T	'       dF    ^pTR	8X  d   M:\4        P6                  ! R
\9        T	4       RT RT	 24       M  \         d     Mi ; iT	 FV  p  \        T,          ! T4       M8  \         d+   p
^p\4        P6                  ! RT: RT
: 24        Rp
?
MRp
?
ii ; iKS    i ; i	  K  	  \        P:                  ! T4       i ; i)zRun resource tracker.rbNzCannot register z. for automatic cleanup: unknown resource type r   r   rq   zunrecognized command %rr   z%resource_tracker: There appear to be z leaked z" objects to clean up at shutdown: zresource_tracker: z: )ra   SIGINTSIG_IGNSIGTERMr`   r   SIG_UNBLOCKrc   rY   stdinstdoutrC   r\   _CLEANUP_FUNCSkeyssetopenr   r   rB   addremover   
excepthookexc_infoitemsrR   rS   r   exit)fdfrr   cache	exit_coder   rp   r
   cleanup_funcrtype_cacher   s   &          r   mainr   V  sf    MM&--0
MM&..&..1}v113CDii$	GGI % (6':':'<='<eCE\'<E=I9"d^^q'6t'<$C#1#5#5eT#BL#+(.tf 555:G=> > j(((.,++D1*+Ds+JKK!  4 #(++-E !I'  C";/0 @55@MC $N&u-d3
  $! #0: 	  		 >. !  !I7% ^P !  % N$%	 D!&LMMN 7 #(++-E !I'  C";/0 @55@MC
 ! #N&u-d3$ N$%	 D!&LMMN D $! #0: 	sK   I*IL J%AI4J%6IJ%IJ%I1J%3L 	J8#(J8K	IIJ"	,'JJ%JJ"	J%J"	"J%%J5	0L 8KK	K> K94L9K>>LLO %	M.O /(MO M&	#O %M&	&O 0NN>N9 N4/N>4N99N><O >O   O )rJ   r   r   )$r   rQ   ra   rY   r"   rR   collectionsr   r{   r   r   r   __all__hasattrr`   r   r   rc   r   r   r
   _multiprocessing_posixshmemr   
shm_unlinkr   r   objectr    _resource_trackerrJ   r   r   rK   r   r   r   r   r   <module>r      s  $  	  
      
6 12MM6>>2 H L
 77g ..&6&A&A{#&1&<&<N?#	 	w,f w,r $% "11%%))
0Jr   