§
    ¨¬já  ã                   óö  — d Z ddlZddlZddlZddlZddlZddlZddlZddlm	Z	 	  e
ej        d¦  «        r6ej                             d¬¦  «         ej                             d¬¦  «         n# e$ r Y nw xY wej                             d e e	e¦  «                             ¦   «         j        j        ¦  «        ¦  «         ddlmZmZmZ ddlmZ dd	lmZ ddlmZ d
„ Z d„ Z!d„ Z"e#dk    r e"¦   «          dS dS )u7  
AutoPOE2 - Supervised Launch & Reconnect (Post-Maintenance Phase 2) - Daemon Engine
- Tá»± Ä‘á»™ng dá»�n dáº¹p stale LMDB cache trÆ°á»›c khi khá»Ÿi cháº¡y Ä‘á»ƒ trÃ¡nh lock.mdb corruption.
- Khá»Ÿi cháº¡y PathOfExile.exe vá»›i CREATE_NEW_PROCESS_GROUP = 0x200 (khÃ´ng detach stdio).
- GiÃ¡m sÃ¡t báº¯t POEWindowClass ngay khi xuáº¥t hiá»‡n.
- Tá»± Ä‘á»™ng Reconnect Ä‘Æ°a Monk CI vÃ o Shoreline Hideout.
- Dump RAM kiá»ƒm chá»©ng ES 4284 / HP 1.
- Duy trÃ¬ Grace Period 10s & kÃ­ch hoáº¡t F8 Emergency Pause.
- Giá»¯ tiáº¿n trÃ¬nh game sá»‘ng vÄ©nh viá»…n (Daemon).
é    N)ÚPathÚreconfigureúutf-8©Úencoding)Úfind_poe2_windowÚensure_window_focusÚattach_to_default_desktop)Ú"emergency_f8_pause_and_release_all)ÚScreenCapturerc                  ó|  — t           j                             d¦  «        } dD ]™}t           j                             | |¦  «        }t           j                             |¦  «        rX	 t          j        |¦  «         t          d|› �d¬¦  «         Œk# t          $ r!}t          d|› d|› �d¬¦  «         Y d }~Œ‘d }~ww xY wŒšd S )Nz%LOCALAPPDATA%\Path of Exile 2)ÚShadersÚ	Pipelinesu6   [SupervisedLaunch] Ä�Ã£ dá»�n dáº¹p stale LMDB cache: T©Úflushu-   [SupervisedLaunch Warning] KhÃ´ng thá»ƒ xÃ³a z: )	ÚosÚpathÚ
expandvarsÚjoinÚexistsÚshutilÚrmtreeÚprintÚ	Exception)Ú	local_poeÚfolderÚpÚes       ú?C:\Projects\AutoPOE2\scripts\supervised_launch_and_reconnect.pyÚclean_stale_lmdbr    #   sõ   € Ý”×"Ò"Ð#DÑEÔE€IØ*ð að aˆÝŒG�LŠL˜ FÑ+Ô+ˆÝŒ7�>Š>˜!ÑÔð 	aðaÝ”˜aÑ Ô Ð ÝÐWÈvÐWÐWÐ_cÐdÑdÔdÐdÐdøÝð að að aÝÐSÀfÐSÐSÐPQÐSÐSÐ[_Ð`Ñ`Ô`Ð`Ð`Ð`Ð`Ð`Ð`øøøøðaøøøð		aðað as   Á$(BÂ
B8ÂB3Â3B8c                  ó  — t           j        j        } dD ]+}|                      |d ¦  «        }|rt	          |¦  «        c S Œ,t          ¦   «         }|rt	          |¦  «        S dD ]+}|                      d |¦  «        }|rt	          |¦  «        c S Œ,dS )N)ÚPOEWindowClassÚPOEC2_MainWindow)zPath of Exile 2zPath of Exiler   )ÚctypesÚwindllÚuser32ÚFindWindowWÚintr   )r&   ÚclsÚhÚtitles       r   Úcheck_poe_windowr,   .   s¢   € ÝŒ]Ô!€Fà5ð ð ˆØ×Ò˜s DÑ)Ô)ˆØÐ•S˜‘V”VˆmˆmˆmÐåÑÔ€AØÐ•�Q‘”ˆ-à5ð ð ˆØ×Ò˜t UÑ+Ô+ˆØÐ•S˜‘V”VˆmˆmˆmÐØˆ1ó    c            
      ó  — t          dd¬¦  «         t          ¦   «          d} t          j                             | ¦  «        }t          d| › d�d¬¦  «         t          dd¬¦  «         d}t          j        | g||¬	¦  «        }|j        }t          d
|› �d¬¦  «         t          dd¬¦  «         t          j        ¦   «         }d}d}|}t          j        ¦   «         |z
  |k     rì| 	                    ¦   «         �+t          d|› d| 	                    ¦   «         › �d¬¦  «         dS t          ¦   «         }	|	r3|	}t          j        ¦   «         |z
  }
t          d|	d›d|
d›d�d¬¦  «         njt          j        ¦   «         }||z
  dk    r |}||z
  }
t          d|
d›d|› d�d¬¦  «         t          j        d¦  «         t          j        ¦   «         |z
  |k     °ì|st          d|› d�d¬¦  «         dS t          d|d›d�d¬¦  «         t          |¦  «         t          j        d ¦  «         t          d!d¬¦  «         t          j        |¬"¦  «        }t          d#|› �d¬¦  «         |rñt          d$d¬¦  «         t          d%d¬¦  «         t          j        d&¦  «         t          d'¦  «         t          d(d¬¦  «         t          ¦   «          t          d)d¬¦  «         d*|t!          |¦  «        d+d,ddt          j        d-¦  «        d.œ}t%          d/d0d1¬2¦  «        5 }t'          j        ||d3¬4¦  «         d d d ¦  «         n# 1 swxY w Y   t          d5d¬¦  «         t          d6d¬¦  «         	 |                     ¦   «          n# t,          $ r Y nw xY w|S )7Nu=   [SupervisedLaunch] BÆ°á»›c 0: Dá»�n dáº¹p stale LMDB cache...Tr   zJC:\Program Files (x86)\Grinding Gear Games\Path of Exile 2\PathOfExile.exeu4   [SupervisedLaunch] Khá»Ÿi cháº¡y POE2 v0.5.5c tá»«: z...uO   [SupervisedLaunch] Cá»�: CREATE_NEW_PROCESS_GROUP (0x200), giá»¯ stdio handles.i   )ÚcwdÚcreationflagsuK   [SupervisedLaunch] Tiáº¿n trÃ¬nh POE2 Ä‘Ã£ kÃ­ch hoáº¡t thÃ nh cÃ´ng, PID: ui   [SupervisedLaunch] Báº¯t Ä‘áº§u giÃ¡m sÃ¡t cá»­a sá»• POEWindowClass (timeout 360s cho shader compile)...r   ih  u)   [SupervisedLaunch â�Œ] Tiáº¿n trÃ¬nh PID u    Ä‘Ã£ thoÃ¡t sá»›m vá»›i mÃ£: FuC   [SupervisedLaunch ðŸŽ¯] Cá»¬A Sá»” POE2 Ä�Ãƒ XUáº¤T HIá»†N! HWND=0xÚXz (sau z.1fzs)g      .@u;   [SupervisedLaunch] Ä�ang chá»� cá»­a sá»• POE2 (Ä‘Ã£ chá»� z.0fzs / zs)...g      ø?u/   [SupervisedLaunch â�Œ] Háº¿t thá»�i gian chá»� u#   s mÃ  chÆ°a tháº¥y cá»­a sá»• POE2.u=   [SupervisedLaunch] Cá»­a sá»• game Ä‘Ã£ sáºµn sÃ ng (HWND: 0xu%   ). Focus cá»­a sá»• vÃ  chá»� 3.0s...g      @uI   [SupervisedLaunch] KÃ­ch hoáº¡t ká»‹ch báº£n Reconnect & Enter Hideout...)Úhwndu*   [SupervisedLaunch] Káº¿t quáº£ Reconnect: uL   [SupervisedLaunch] âœ… Monk CI Ä‘Ã£ bÆ°á»›c vÃ o Shoreline Hideout an toÃ n!ui   [SupervisedLaunch] KÃ­ch hoáº¡t Grace Period 10.0s (báº£o toÃ n tráº¡ng thÃ¡i báº¥t kháº£ xÃ¢m pháº¡m)...g      $@u,   [SupervisedLaunch] Grace Period káº¿t thÃºc.uX   [SupervisedLaunch] KÃ­ch hoáº¡t F8 Emergency Pause & Release All (INV-F8-MUTES-BRAIN)...uo   [SupervisedLaunch] ðŸ�� NhÃ¢n váº­t Monk CI Ä‘Ã£ Ä‘Æ°á»£c park an toÃ n tuyá»‡t Ä‘á»‘i táº¡i Shoreline Hideout!ÚSUCCESSzShoreline HideoutzMonk CIz%Y-%m-%d %H:%M:%S)ÚstatusÚpidr2   ÚzoneÚ	characterÚgrace_period_appliedÚf8_pause_appliedÚ	timestampzreconnect_result.jsonÚwr   r   é   )ÚindentuC   [SupervisedLaunch] Ä�Ã£ lÆ°u káº¿t quáº£ vÃ o reconnect_result.jsonuI   [SupervisedLaunch] Duy trÃ¬ tiáº¿n trÃ¬nh game trong background daemon...)r   r    r   r   ÚdirnameÚ
subprocessÚPopenr5   ÚtimeÚpollr,   Úsleepr	   Úrc_modÚmainr   ÚhexÚstrftimeÚopenÚjsonÚdumpÚwaitr   )Úexe_pathÚworking_dirÚCREATE_NEW_PROCESS_GROUPÚprocr5   Ú
start_timeÚ
found_hwndÚmax_waitÚlast_log_timer2   ÚelapsedÚnowÚreconnect_okÚres_dataÚrfs                  r   rE   rE   =   sÊ  € Ý	Ð
IÐQUÐVÑVÔVÐVÝÑÔÐà\€HÝ”'—/’/ (Ñ+Ô+€Kå	Ð
NÀÐ
NÐ
NÐ
NÐVZÐ[Ñ[Ô[Ð[Ý	Ð
[ÐcgÐhÑhÔhÐhà)ÐÝÔØ	ˆ
ØØ.ðñ ô €Dð Œ(€CÝ	Ð
]ÐX[Ð
]Ð
]ÐeiÐjÑjÔjÐjÝ	Ð
uð  ~Bð  Cñ  Cô  Cð  Cå”‘”€JØ€JØ€Hà€MÝ
Œ)‰+Œ+˜
Ñ
" XÒ
-Ð
-Ø�9Š9‰;Œ;Ð"ÝÐn¸cÐnÐnÐae×ajÒajÑalÔalÐnÐnÐvzÐ{Ñ{Ô{Ð{Ø�5åÑ!Ô!ˆØð 	ØˆJÝ”i‘k”k JÑ.ˆGÝÐuÐX\ÐuÐuÐuÐfmÐuÐuÐuÐuð  ~Bð  Cñ  Cô  Cð  CØåŒi‰kŒkˆØ�Ñ $Ò&Ð&ØˆMØ˜JÑ&ˆGÝÐpÐPWÐpÐpÐpÐaiÐpÐpÐpÐx|Ð}Ñ}Ô}Ð}åŒ
�3‰Œˆõ% Œ)‰+Œ+˜
Ñ
" XÒ
-Ð
-ð( ð ÝÐmÀÐmÐmÐmÐuyÐzÑzÔzÐzØˆuå	Ð
}È*Ð
}Ð
}Ð
}Ð
}ð  FJð  Kñ  Kô  Kð  KÝ˜
Ñ#Ô#Ð#Ý„Jˆs�O„O€Oå	Ð
UÐ]aÐbÑbÔbÐbÝ”; JÐ/Ñ/Ô/€LÝ	Ð
E°|Ð
EÐ
EÈTÐRÑRÔRÐRàð aÝÐ\ÐdhÐiÑiÔiÐiÝÐyð  BFð  	Gñ  	Gô  	Gð  	GÝŒ
�4ÑÔÐÝÐ<Ñ=Ô=Ð=õ 	ÐhÐptÐuÑuÔuÐuÝ*Ñ,Ô,Ð,ÝÐð  HLð  	Mñ  	Mô  	Mð  	Mð  ØÝ˜
‘O”OØ'Ø"Ø$(Ø $ÝœÐ':Ñ;Ô;ð	
ð 	
ˆõ Ð)¨3¸ÐAÑAÔAð 	.ÀRÝŒI�h ¨1Ð-Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.åÐSÐ[_Ð`Ñ`Ô`Ð`õ 
Ð
UÐ]aÐbÑbÔbÐbðØ�	Š	‰ŒˆˆøÝð ð ð Øˆðøøøð Ðs$   ÌL/Ì/L3Ì6L3ÍM2 Í2
M?Í>M?Ú__main__)$Ú__doc__ÚsysrA   r   rI   r   r?   r$   Úpathlibr   ÚhasattrÚstdoutr   Ústderrr   r   ÚinsertÚstrÚ__file__ÚresolveÚparentÚsrc.common.win32_windowr   r	   r
   Úsrc.common.win32_inputr   Ú"src.assistant_tool.screen_capturerr   Ú#scripts.reconnect_and_enter_hideoutÚreconnect_and_enter_hideoutrD   r    r,   rE   Ú__name__© r-   r   ú<module>rl      s»  ðð	ð 	ð €
€
€
Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð ð	Ø€wˆsŒz˜=Ñ)Ô)ð 1ØŒ
×Ò¨ÐÑ0Ô0Ð0ØŒ
×Ò¨ÐÑ0Ô0Ð0øøØð 	ð 	ð 	Ø€Dð	øøøð „‡‚��3�3�t�t˜H‘~”~×-Ò-Ñ/Ô/Ô6Ô=Ñ>Ô>Ñ ?Ô ?Ð ?à dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dØ EÐ EÐ EÐ EÐ EÐ EØ =Ð =Ð =Ð =Ð =Ð =Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ð	að 	að 	aðð ð ð[ð [ð [ðz ˆzÒÐØ€D�F„F€F€F€Fð Ðs   ¦AA. Á.A6Á5A6