+
    Fj,                         ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RItRtRtRtRt	Rt
RtR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8X  d   ]! ]! 4       4      hR# )    NzC:\TripServer\admin_server.pyz@C:\Users\User\AppData\Local\Programs\Python\Python314\python.exezC:\TripServerzC:\TripServer\admin_restart.logi@  iT  zIC:\TripServer\backups\admin_server\admin_server_backup_20260702_211043.py@f8e6cb2f67300d11f5fe83faefc6df35749e260090115386ed9c8485375dedd3admin_upload_self_exit_v31c                     \         P                  ! \         P                  P                  \        4      R R7       \        \        RRR7      ;_uu_ 4       pVP                  \        P                  ! R4      R,           \        V 4      ,           R,           4       RRR4       R#   + '       g   i     R# ; i  \         d     R# i ; i)	Texist_okautf-8encoding%Y-%m-%d %H:%M:%Sz | restart-v31 | 
N)osmakedirspathdirnamelog_pathopenwritetimestrftimestr	Exception)messagefhs   & ,C:\TripServer\restart_admin_server_helper.pylogr      s    
BGGOOH-=(C'22bHHT]]#67:MMPST[P\\_ccd 3222 s1   AB7 AB#B7 #B4	.B7 4B7 7CCc                   a \         P                  ! 4       p\        V R 4      ;_uu_ 4       o\        V3R lR4       F  pVP	                  V4       K  	  RRR4       VP                  4       #   + '       g   i     TP                  4       # ; i)rbc                  &   < S P                  R4      # )i   i   )read)r   s   r   <lambda>file_sha256.<locals>.<lambda>   s    "''+"6    r#   N)hashlibsha256r   iterupdate	hexdigest)r   hchunkr   s   &  @r   file_sha256r+      se    A	dD		R6<EHHUO = 
 ;;= 
	 ;;=s   )A,,B	c                       \         P                  ! R \        \        4      3RR7      ;_uu_ 4         RRR4       R#   + '       g   i     R# ; i  \         d     R# i ; i)z	127.0.0.1gffffff?)timeoutNTF)socketcreate_connectionint
admin_portr    r#   r   	port_openr3   "   sG    %%{C
O&DcRR SRRR s+   /A =A A	A A A A c                     \         P                   ! 4       V ,           p\         P                   ! 4       V8  d+   \        4       '       g   R # \         P                  ! R4       KD  \        4       '       * # )Tg?)r   r3   sleep)r-   deadlines   & r   wait_port_closedr7   )   s?    yy{W$H
))+
 {{

3{?r#   c                     . p \         P                  R 8w  d   V #  \        P                  ! . R
ORRR^
R7      pVP                  ;'       g    RR,           VP
                  ;'       g    R,           pR\        \        4      ,           pVP                  4        Fp  pW49  g   RVP                  4       9  d   K   VP                  4       pV'       g   K:   \        VR,          4      pV'       d   W`9  d   V P                  V4       Kn  Kp  Kr  	  V #   \         d     K  i ; i  \         d'   p\        R\        T4      ,           4        R	p?T # R	p?ii ; i)ntTFcapture_outputtextshellr-    r   :listenznetstat failed: N)netstatz-anoz-ptcp)r   name
subprocessrunstdoutstderrr   r1   
splitlineslowersplitr0   appendr   r   repr)pidscpoutmarkerlinepartspidexcs           r   pids_on_portrV   1   s   D	ww$,^^<TX\disuvyyB$&"))//r:s:&NN$D!XTZZ\%AJJLEueBi.CsC(  /s % K	 !  ,c*++K,sH   /D D 'A$D 1DD DD DD E)E

Ec                 ~    \        V 4      p T ^ 8:  g   T \        P                  ! 4       8X  dH   \	        R\        T 4      ,           R,           \        \        P                  ! 4       4      ,           4       R #  \        P                  R8X  d   \        P                  ! RR\        T 4      R.RRR ^R7      p\	        R	\        T 4      ,           R
,           \        TP                  4      ,           R,           TP                  ;'       g    TP                  ;'       g    RP                  4       R,          ,           4       TP                  ^ 8H  # \        P                  ! T ^	4       R#   \         d     R # i ; i  \         d>   p\	        R\        T 4      ,           R,           \        T4      ,           4        Rp?R # Rp?ii ; i)Fzskip kill pid=z self=r9   taskkillz/PIDz/FTr:   ztaskkill pid=z rc=z out=r>   :Ni  Nzkill failed pid=z err=N)r0   r   r   getpidr   r   rD   rE   rF   
returncoderG   rH   stripkillrM   )rT   rO   rU   s   &  r   kill_pidr]   H   sX   #h ax3"))+%s3x'(2S5EEF
77d?VSXt DUY`dlq{}~B#c(*V3c"--6HH7RWYW`W`WsWsdfdmdmWsWsqsVzVzV|  ~B  WC  D  E==A%%
Q    S)G3d3i?@s6   E" 6B!E4 0E4 	E4 "E10E14F<?2F77F<c                     \        ^
4      '       d   \        R4       R# \        4       p \        R\        \        4      ,           R,           \        V 4      ,           4       V  F  p\        V4       K  	  \        ^
4       \        R\        \        4       4      ,           R,           \        \        4       4      ,           4       R# )
   zport closed naturallyNz>port still open; killing owners without rollback; current_pid=z pids=zport open after release=)r7   r   rV   r   current_pidr]   r3   )rN   rT   s     r   release_portra   \   s    #$>DH3{K[[^ffilmqirrs R"S%55@3|~CVVWr#   c                  0   ^ p \         P                  R8X  d>   \        \        R^ 4      \        \        R^ 4      ,          \        \        R^ 4      ,          p \         P                  P                  4       pVP                  RR4       \         P                  ! \         P                  P                  \        4      RR7       \        \        R	RR
7      ;_uu_ 4       pVP                  \        P                  ! R4      R,           \        ,           R,           4       VP!                  4        \        P"                  ! \$        \        .\&        \        P(                  Y"\         P                  R8X  d   RMRV \         P                  R8g  VR7	      pVP                  \        P                  ! R4      R,           \+        VP,                  4      ,           R,           4       VP!                  4        RRR4       VP,                  #   + '       g   i     XP,                  # ; i)r   r9   CREATE_NEW_PROCESS_GROUPDETACHED_PROCESSCREATE_BREAKAWAY_FROM_JOBPYTHONIOENCODINGr	   Tr   r   r
   r   z! | restart-v31 | starting admin: r   F)cwdstdinrG   rH   	close_fdscreationflagsstart_new_sessionenvz# | restart-v31 | started admin pid=N)r   rD   getattrrE   environcopy
setdefaultr   r   r   r   r   r   r   r   script_pathflushPopen
python_exework_dirDEVNULLr   rT   )flagsrl   log_fileprocs       r   start_serverrz   h   s   E	ww$
$>BWZYkmnEoory  {E  Gb  de  sf  f
**//
CNN%w/KK)D9	hg	.	.(t}}%89<__bmmpttu[ 9xzOaOajr  Z\  Za  Za  ei  Zi  QV  os  DI  ^`  ^e  ^e  im  ^m  tw  xt}}%89<aadghlhphpdqqtxxy 
/ 88O 
/	. 88Os   DG::H	c                  Z   \        R \        \        4      ,           R,           \        ,           R,           \        ,           R,           \        \
        4      ,           R,           \        \        4      ,           4       \        P                  ! R4       \
        '       d>    \        \        4      p \        RV ,           R,           \        \
        4      ,           4       \        4        \        4        \        R
4       ^ #   \         d&   p\        R\        T4      ,           4        R	p?LLR	p?ii ; i)zsimple restart started reason=z script=z python=z expected_sha=z backup=g      @zactive sha=z
 expected=zsha check failed: NzGsimple restart helper finished; browser/watchdog will verify /ping.json)r   r   reasonrq   rt   expected_shabackup_pathr   r5   r+   r   rM   ra   rz   )actualrU   s     r   mainr   w   s    (3v;6CkQT^^akkn~~  BE  FR  BS  	S  V`  	`  cf  gr  cs  	s  tJJsO|	2 -F&5L8IIJ NN QR  	2$tCy011	2s   <C: :D*D%%D*__main__)   )r   sysrE   r   r.   r$   rq   rt   ru   r   r1   r`   r~   r}   r|   r   r+   r3   r7   rV   r]   ra   rz   r   __name__
SystemExitr2   r#   r   <module>r      s    	 
    /W
.
]Q	%.(
X  z
TV
 r#   