§
    aP®j�B  ã                  ó2  — d Z ddlmZ ddlZddlZddlZddlmZ ddlmZm	Z	m
Z
mZmZmZmZ 	 ddlmZ n# e$ r dZY nw xY wddlmZmZmZ ddlmZ dd	lmZmZ dd
lmZmZ ddlmZ ddl m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+ ddl,m-Z-  G d„ d¦  «        Z.dS )u!  AutoPOE2 - Stash Orchestrator (Doc 63 / SSoT 2026).

Bá»™ Ä‘iá»�u phá»‘i tá»‘i cao chu trÃ¬nh tÆ°Æ¡ng tÃ¡c HÃ²m Ä‘á»“ (Stash & Inventory):
- Má»Ÿ Stash báº±ng click LMB tuyá»‡t Ä‘á»‘i táº¡i Hideout (INV-KEY-NO-F-FOR-INTERACT).
- XÃ¡c minh tráº¡ng thÃ¡i má»Ÿ cá»§a Stash UI vÃ  quÃ©t danh má»¥c Tabs.
- Cáº¥t Ä‘á»“ tá»± Ä‘á»™ng (Auto-Stash) qua Ctrl+Click cÃ³ jitter tá»± nhiÃªn (INV-STASH-CTRL-CLICK).
- RÃºt bá»• sung Waystone (Auto-Withdraw) khi tÃºi Ä‘á»“ thiáº¿u thá»‘n.
- Ä�Ã³ng Stash an toÃ n báº±ng phÃ­m Spacebar chuáº©n ngÆ°á»�i chÆ¡i.
é    )ÚannotationsN)Údatetime)ÚAnyÚCallableÚDictÚListÚOptionalÚTupleÚUnion)ÚImage)ÚStashActionÚStashConfigÚStashTabType)ÚStashMemoryReader)ÚStashTabInfoÚStashUiScanner)ÚStashItemMatrixÚSlotItemInfo)ÚStashEvaluator)ÚVK_SPACEÚclickÚ
ctrl_clickÚdismiss_modalsÚpost_message_clickÚpost_message_ctrl_clickÚpost_message_key)Úfind_poe2_windowÚensure_window_focusÚget_client_rect)Úfind_button_by_textc                  ó”   — e Zd ZdZ	 	 	 	 	 	 d1d2d„Zd3d4d„Zd5d6d„Zd7d „Zd8d!„Z	 	 d9d:d%„Z	d;d<d(„Z
	 	 d=d>d*„Z	 	 d?d@d-„ZdAd.„Z	 dBdCd0„ZdS )DÚStashOrchestratoruH   MÃ¡y tráº¡ng thÃ¡i Ä‘iá»�u phá»‘i chu trÃ¬nh Stash & Restock tá»± hÃ nh.NFÚscreen_wúOptional[int]Úscreen_hÚconfigúOptional[StashConfig]Úcapture_funcú-Optional[Callable[[], Optional[Image.Image]]]Úmemory_readerúOptional[StashMemoryReader]Úis_simulatedÚboolc                ó&  ‡ — |pt          ¦   «         ‰ _        |‰ _        t          ¦   «         ‰ _        d‰ _        d‰ _        ‰ j        r;t          ‰ j        ¦  «        \  }}}	}
|	dk    r|
dk    r|‰ _        |‰ _        |€|	}|€|
}|pd‰ _        |pd‰ _	        |‰ _
        |‰ _        t          ‰ j        ‰ j	        ˆ fd„¬¦  «        ‰ _        t          ‰ j        ‰ j	        ‰ j        ‰ j        ‰ j        ¬¦  «        ‰ _        t!          ‰ j        ¬¦  «        ‰ _        d S )Nr   i 
  i   c                ó8   •— ‰                      | |ddd¬¦  «        S )NÚleftç{®Gáz¤?ç      Ð?©ÚbuttonÚhold_msÚdelay_after)Ú_click)ÚxÚyÚselfs     €úCC:\Projects\AutoPOE2\src\assistant_tool\stash\stash_orchestrator.pyú<lambda>z,StashOrchestrator.__init__.<locals>.<lambda>S   s   ø€  D§K¢K°°1¸VÈTÐ_c KÑ$dÔ$d€ ó    )r#   r%   Ú
click_func)r#   r%   r&   r*   r,   )r&   )r   r&   r,   r   ÚhwndÚclient_leftÚ
client_topr   r#   r%   r(   r*   r   Ú
ui_scannerr   Úmatrixr   Ú	evaluator)r:   r#   r%   r&   r(   r*   r,   ÚclÚctÚcwÚchs   `          r;   Ú__init__zStashOrchestrator.__init__1   s3  ø€ ð Ð-¥¡¤ˆŒØ(ˆÔÝ$Ñ&Ô&ˆŒ	ØˆÔØˆŒð Œ9ð 	"Ý,¨T¬YÑ7Ô7‰NˆB��B˜Ø�AŠvˆv˜"˜qš&˜&Ø#%�Ô Ø"$�”ØÐ#Ø!�HØÐ#Ø!�Hà Ð( DˆŒØ Ð( DˆŒØ(ˆÔØ*ˆÔå(Ø”]Ø”]ØdÐdÐdÐdð
ñ 
ô 
ˆŒõ
 &Ø”]Ø”]Ø”;ØÔ,ØÔ*ð
ñ 
ô 
ˆŒõ (¨t¬{Ð;Ñ;Ô;ˆŒˆˆr=   r0   r1   çš™™™™™¹?r8   Úintr9   r4   Ústrr5   Úfloatr6   ÚreturnÚNonec           	     ó   — | j         r-t          | j        |z   | j        |z   |||d| j        ¬¦  «         dS | j        j        r#| j        rt          | j        |||||¬¦  «         dS t          | j        |z   | j        |z   |||| j        ¬¦  «         dS )uÜ   Click chuá»™t vá»›i cÆ¡ cháº¿ tá»± Ä‘á»™ng chuyá»ƒn Ä‘á»•i giá»¯a Background (PostMessageW) vÃ  Foreground.
        TuÃ¢n thá»§ INV-FOCUS-SAFETY-SEPARATION: trong mock/simulated cáº¥m gá»­i Win32 hardware event.
        T)r4   r5   r6   r,   r?   Nr3   )r4   r5   r6   r?   )r,   r   r@   rA   r?   r&   Úbackground_inputr   )r:   r8   r9   r4   r5   r6   s         r;   r7   zStashOrchestrator._click^   sç   € ð Ôð 	Ý�$Ô" QÑ&¨¬¸!Ñ(;ÀFÐT[Ðitð  DHð  OSô  OXð  Yñ  Yô  Yð  YØˆFØŒ;Ô'ð 	F¨D¬Ið 	FÝ˜tœy¨!¨Q°vÀwÐ\gÐhÑhÔhÐhÐhÐhå�$Ô" QÑ&¨¬¸!Ñ(;ÀFÐT[ÐitÐ{ô  |Eð  Fñ  Fô  Fð  Fð  Fð  Fr=   c                ó  — | j         r,t          | j        |z   | j        |z   ||d| j        ¬¦  «         dS | j        j        r"| j        rt          | j        ||||¬¦  «         dS t          | j        |z   | j        |z   ||| j        ¬¦  «         dS )uÙ   Ctrl+Click vá»›i cÆ¡ cháº¿ tá»± Ä‘á»™ng chuyá»ƒn Ä‘á»•i giá»¯a Background (PostMessageW) vÃ  Foreground.
        TuÃ¢n thá»§ INV-FOCUS-SAFETY-SEPARATION: trong mock/simulated cáº¥m gá»­i Win32 hardware event.
        T)r5   r6   r,   r?   N©r5   r6   )r5   r6   r?   )r,   r   r@   rA   r?   r&   rQ   r   )r:   r8   r9   r5   r6   s        r;   Ú_ctrl_clickzStashOrchestrator._ctrl_clickj   sÅ   € ð Ôð 	Ý�tÔ'¨!Ñ+¨T¬_¸qÑ-@È'Ð_jÐy}ð  EIô  ENð  Oñ  Oô  Oð  OØˆFØŒ;Ô'ð 	|¨D¬Ið 	|Ý# D¤I¨q°!¸WÐR]Ð^Ñ^Ô^Ð^Ð^Ð^å�tÔ'¨!Ñ+¨T¬_¸qÑ-@È'Ð_jÐquÔqzÐ{Ñ{Ô{Ð{Ð{Ð{r=   úOptional[Image.Image]c                ó<   — | j         r|                       ¦   «         S d S ©N)r(   ©r:   s    r;   Ú_get_current_screenz%StashOrchestrator._get_current_screenv   s$   € ØÔð 	'Ø×$Ò$Ñ&Ô&Ð&Øˆtr=   c                ó’   — | j         rdS | j        j        rt          | j        ¦  «        S | j        rt          | j        d¬¦  «        S dS )NTiô  )Ú
timeout_ms)r,   r&   rQ   r-   r?   r   rX   s    r;   Ú_ensure_focuszStashOrchestrator._ensure_focus{   sR   € ØÔð 	Ø�4àŒ;Ô'ð 	#Ý˜œ	‘?”?Ð"ØŒ9ð 	BÝ& t¤y¸SÐAÑAÔAÐAØˆtr=   ç      @Úimg_currentÚtimeout_secc                óÜ  — |                       ¦   «          |p|                      ¦   «         }|r| j                             |¦  «        rdS | j        dz  }| j        dz  }t          | j        j        |z  ¦  «        }t          | j        j	        |z  ¦  «        }t          d|z  ¦  «        t          d|z  ¦  «        t          d|z  ¦  «        t          d|z  ¦  «        f}|rt          |d|¬¦  «        }	|	r|	\  }}| j        d	z  }
t          d
| j        dz  z  ¦  «        }||
z
  }||z
  }||z  ||z  z   dz  }|dk    r�t          dt          d|dz  ¦  «        ¦  «        }ddlm} |}| }||z   }||z
  } ||||| j        ¬¦  «         t!          j        d¦  «         |                      ¦   «         }|rt          |d|¬¦  «        }|r|\  }}|                      ||ddd¬¦  «         t!          j        ¦   «         }t!          j        ¦   «         |z
  |k     r`t!          j        d¦  «         |                      ¦   «         }|r| j                             |¦  «        rdS t!          j        ¦   «         |z
  |k     °`dS )u¨   
        TÃ¬m vÃ  má»Ÿ hÃ²m Ä‘á»“ Stash táº¡i Hideout.
        TuÃ¢n thá»§ INV-KEY-NO-F-FOR-INTERACT: Click LMB cÃ³ chá»§ Ä‘Ã­ch, tuyá»‡t Ä‘á»‘i cáº¥m phÃ­m F.
        Tç      ¤@ç     €–@éd   il  i  ÚSTASH)Úcrop_boxé   i  g     à�@g      à?éÈ   gš™™™™™é?gffffffÖ?g      ‰@r   )Úsend_wasd_direction)Údwell_msr,   ç333333Ó?r0   çš™™™™™©?r3   r2   F)r\   rY   rB   Úis_stash_openr#   r%   rK   r&   Údefault_stash_screen_xÚdefault_stash_screen_yr    ÚminÚmaxÚsrc.common.win32_inputrh   r,   ÚtimeÚsleepr7   )r:   r^   r_   ÚimgÚscale_xÚscale_yÚstash_xÚstash_yÚplay_area_cropÚ	found_posÚcenter_xÚcenter_yÚ	screen_dxÚ	screen_dyÚdistÚdwellrh   Ú	target_sxÚ	target_syÚw_dxÚw_dyÚ	fresh_imgÚrefoundÚstart_tÚ
verify_imgs                            r;   Ú
open_stashzStashOrchestrator.open_stash…   sÉ  € ð 	×ÒÑÔÐàÐ7˜T×5Ò5Ñ7Ô7ˆàð 	�4”?×0Ò0°Ñ5Ô5ð 	Ø�4ð ”- &Ñ(ˆØ”- &Ñ(ˆÝ�d”kÔ8¸7ÑBÑCÔCˆÝ�d”kÔ8¸7ÑBÑCÔCˆõ ��g‘ÑÔÝ��g‘ÑÔÝ��w‘ÑÔÝ��w‘ÑÔð	
ˆð ð 	-å+¨C°À>ÐRÑRÔRˆIØð -Ø#,Ñ �˜ð ”= AÑ%ˆÝ�s˜dœm¨fÑ4Ñ5Ñ6Ô6ˆØ˜hÑ&ˆ	Ø˜hÑ&ˆ	Ø˜IÑ%¨	°IÑ(=Ñ=À#ÑEˆà�#Š:ˆ:Ý˜�S  t¨e¡|Ñ4Ô4Ñ5Ô5ˆEØBÐBÐBÐBÐBÐBà!ˆIØ"˜
ˆIØ˜yÑ(ˆDØ˜yÑ(ˆDØÐ  d°UÈÔIZÐ[Ñ[Ô[Ð[ÝŒJ�s‰OŒOˆOð ×0Ò0Ñ2Ô2ˆIØð /Ý-¨i¸È>ÐZÑZÔZ�Øð /Ø'.Ñ$�G˜Wð 	�Š�G˜W¨V¸TÈsˆÑSÔSÐSõ ”)‘+”+ˆÝŒi‰kŒk˜GÑ# kÒ1Ð1ÝŒJ�tÑÔÐØ×1Ò1Ñ3Ô3ˆJØð ˜dœo×;Ò;¸JÑGÔGð Ø�tõ	 Œi‰kŒk˜GÑ# kÒ1Ð1ð ˆur=   rt   úList[StashTabInfo]c                ój   — |p|                       ¦   «         }|r| j                             |¦  «        S g S )u=   QuÃ©t vÃ  nháº­n diá»‡n danh sÃ¡ch cÃ¡c Tab Stash hiá»‡n cÃ³.)rY   rB   Úscan_stash_tabs)r:   rt   Úcur_imgs      r;   Ú	scan_tabszStashOrchestrator.scan_tabsÏ   s;   € àÐ3˜×1Ò1Ñ3Ô3ˆØð 	<Ø”?×2Ò2°7Ñ;Ô;Ð;Øˆ	r=   Úinspect_items_livec                óœ  — |                       ¦   «          |p|                      ¦   «         }|sdS | j                             |¦  «        }d„ |D ¦   «         }d}d}|D �]o}d}	|r2| j                             |j        |j        |j        |j        ¬¦  «        }	| j	         
                    |	|¬¦  «        }
|
j        t          j        k    r|
j        t          j        k    r|dz  }Œ…|
j        t          j        k    rÕ| j        j        s| j                             |
j        ¦  «         t-          j        | j        j         | j        j        ¦  «        }t3          d| j        j        |z   dz  ¦  «        }|                      |j        |j        d	|¬
¦  «         |dz  }| j        j        r,| j        j                             |j        |j        d¬¦  «         �Œq|S )u»   
        QuÃ©t cÃ¡c Ã´ trong tÃºi Ä‘á»“ vÃ  cáº¥t cÃ¡c váº­t pháº©m phÃ¹ há»£p vÃ o Stash.
        TuÃ¢n thá»§ INV-STASH-CTRL-CLICK: dÃ¹ng Ctrl + Click kÃ¨m jitter 180ms +- 40ms.
        r   c                ó    — g | ]}|j         ¯	|‘ŒS © ©Úis_occupied©Ú.0Úss     r;   ú
<listcomp>z=StashOrchestrator.deposit_inventory_items.<locals>.<listcomp>æ   s   € Ð<Ð<Ð< ¨a¬mÐ<˜!Ð<Ð<Ð<r=   N)ÚcolÚrow)Úcurrent_waystones_kepté   ç¸…ëQ¸¾?ç     @�@r1   rS   Fr“   )r\   rY   rC   Úscan_inventory_occupancyÚinspect_slot_item_liver{   r|   r™   rš   rD   Úevaluate_inventory_itemÚactionr   ÚKEEPÚtarget_tab_typer   Ú	WAYSTONESÚDEPOSITr&   Úuse_stash_affinityrB   Úswitch_to_tabÚrandomÚrandintÚ	jitter_msrp   Údelay_click_msrT   r*   Úupdate_slot)r:   rt   r�   r�   ÚslotsÚoccupied_slotsÚtransferred_countÚwaystones_keptÚslotÚreportÚdecisionÚjitterÚdelays                r;   Údeposit_inventory_itemsz)StashOrchestrator.deposit_inventory_itemsÖ   sî  € ð 	×ÒÑÔÐØÐ3˜×1Ò1Ñ3Ô3ˆØð 	Ø�1ð ”×4Ò4°WÑ=Ô=ˆØ<Ð< UÐ<Ñ<Ô<ˆàÐØˆà"ð #	añ #	aˆDØˆFØ!ð Øœ×;Ò;Ø”MØ”MØœØœð	 <ñ ô �ð ”~×=Ò=ØØ'5ð >ñ ô ˆHð
 Œ¥+Ô"2Ò2Ð2ØÔ+­|Ô/EÒEÐEØ" aÑ'�NØàŒ¥+Ô"5Ò5Ð5à”{Ô5ð LØ”O×1Ò1°(Ô2JÑKÔKÐKõ  œ¨¬Ô)>Ð(>ÀÄÔ@UÑVÔV�Ý˜D 4¤;Ô#=ÀÑ#FÈ&Ñ"PÑQÔQ�à× Ò  ¤°´ÀtÐY^Ð Ñ_Ô_Ð_Ø! QÑ&Ð!ð ”;Ô,ð aØ”KÔ-×9Ò9¸$¼(ÀDÄHÐZ_Ð9Ñ`Ô`Ð`ùà Ð r=   r   Úcurrent_waystones_in_bagc                ó&  — |dk    r2| j         j        r&| j         j                             ¦   «         }|dk    r|}| j        j        |z
  }|dk    rdS |                      ¦   «          | j                             t          j	        ¦  «        }|s| j                             d¦  «        }|s| j                             d¦  «        }t          j        d¦  «         |                      ¦   «         }|sdS | j        dz  }| j        dz  }t          d	|z  ¦  «        }	t          d
|z  ¦  «        }
|                      |	|
ddd¬¦  «         |                      ¦   «         p|}t          d|z  ¦  «        }t          d|z  ¦  «        }t          d|z  ¦  «        }t          d|z  ¦  «        }g }t#          d¦  «        D ]ô}t#          d¦  «        D ]â}|||z  z   }|||z  z   }d}d}t#          ddd¦  «        D ]†}t#          ddd¦  «        D ]r}||z   }||z   }d|cxk    r|j        k     rTn Œ!d|cxk    r|j        k     r?n Œ6|                     ||f¦  «        }||d         |d         z   |d         z   dz  z  }|dz  }ŒsŒ‡|dk    r||z  nd}|| j        j        k    r|                     ||f¦  «         ŒãŒõ|rŸt/          |t1          |¦  «        ¦  «        }t#          |¦  «        D ]p}||         \  }} t3          j        | j        j         | j        j        ¦  «        }!t9          d| j        j        |!z   dz  ¦  «        }"|                      || d|"¬¦  «         ŒqdS | j                              |¦  «        }#d„ |#D ¦   «         }$|$sdS t/          |t1          |$¦  «        ¦  «        }t#          |¦  «        D ]w}|$|         }%t3          j        | j        j         | j        j        ¦  «        }!t9          d| j        j        |!z   dz  ¦  «        }"|                      |%j         |%j!        d|"¬¦  «         ŒxdS )uƒ   
        Kiá»ƒm tra vÃ  rÃºt Ä‘á»§ sá»‘ lÆ°á»£ng Waystone cÃ²n thiáº¿u tá»« Tab Waystones/Map (SSoT keep_waystones_count).
        r   TÚMapÚWaystonegš™™™™™Ù?Fra   rb   i¦  iE  r0   r1   rj   r3   éH   iê  é4   é	   é   éüÿÿÿé   rf   rœ   r]   g        r�   rž   rS   c                ó    — g | ]}|j         ¯	|‘ŒS r’   r“   r•   s     r;   r˜   zAStashOrchestrator.withdraw_waystone_if_needed.<locals>.<listcomp>_  s   € ÐBÐBÐB °A´MÐB˜!ÐBÐBÐBr=   )"rC   r*   Úget_waystones_countr&   Úkeep_waystones_countr\   rB   r¨   r   r¥   rr   rs   rY   r#   r%   rK   r7   ÚrangeÚwidthÚheightÚgetpixelÚbrightness_threshold_waystoneÚappendro   Úlenr©   rª   r«   rp   r¬   rT   Úscan_stash_occupancyr{   r|   )&r:   rt   r¸   Úcached_countÚneededÚtab_switchedr�   ru   rv   Útier15_btn_xÚtier15_btn_yÚtier_imgÚsubgrid_origin_xÚsubgrid_origin_yÚsubgrid_step_xÚsubgrid_step_yÚmap_tab_slotsÚrÚcÚcxÚcyÚtotal_bÚsamplesÚdxÚdyÚpxÚpyÚrgbÚavg_bÚcount_to_withdrawÚiÚtxÚtyrµ   r¶   Ústash_slotsr¯   Útarget_slots&                                         r;   Úwithdraw_waystone_if_neededz-StashOrchestrator.withdraw_waystone_if_needed  s¢  € ð $ qÒ(Ð(¨T¬[Ô-FÐ(Øœ;Ô4×HÒHÑJÔJˆLØ˜aÒÐØ+7Ð(à”Ô1Ð4LÑLˆØ�QŠ;ˆ;Ø�4à×ÒÑÔÐà”×4Ò4µ\Ô5KÑLÔLˆØð 	@Øœ?×8Ò8¸Ñ?Ô?ˆLØð 	EØœ?×8Ò8¸ÑDÔDˆLåŒ
�3‰ŒˆØ×*Ò*Ñ,Ô,ˆØð 	Ø�5ð ”- &Ñ(ˆØ”- &Ñ(ˆÝ˜3 ™=Ñ)Ô)ˆÝ˜3 ™=Ñ)Ô)ˆà�Š�L ,°vÀtÐY\ˆÑ]Ô]Ð]Ø×+Ò+Ñ-Ô-Ð8°ˆõ ˜r G™|Ñ,Ô,ÐÝ˜s W™}Ñ-Ô-ÐÝ˜R '™\Ñ*Ô*ˆÝ˜R '™\Ñ*Ô*ˆà/1ˆÝ�q‘”ð 	3ð 	3ˆAÝ˜1‘X”Xð 3ð 3�Ø%¨¨NÑ(:Ñ:�Ø%¨¨NÑ(:Ñ:�Ø�Ø�Ý  A q™/œ/ð )ð )�BÝ# B¨¨1™oœoð )ð )˜Ø "™W˜Ø "™W˜Ø Ð3Ð3Ò3Ð3 X¤^Ò3Ð3Ð3Ð3Ð3¸¸RÐ8QÐ8QÒ8QÐ8QÀ(Ä/Ò8QÐ8QÐ8QÐ8QÐ8QØ"*×"3Ò"3°R¸°HÑ"=Ô"=˜CØ#¨¨A¬°°Q´©¸#¸a¼&Ñ(@ÀCÑ'GÑG˜GØ# q™L˜Gøð)ð 07¸ª{¨{˜ 7Ñ*Ð*À�Ø˜4œ;ÔDÒDÐDØ!×(Ò(¨"¨b¨Ñ2Ô2Ð2øð3ð$ ð 	Ý # F­C°Ñ,>Ô,>Ñ ?Ô ?ÐÝÐ,Ñ-Ô-ð Jð J�Ø& qÔ)‘��BÝœ¨¬Ô)>Ð(>ÀÄÔ@UÑVÔV�Ý˜D 4¤;Ô#=ÀÑ#FÈ&Ñ"PÑQÔQ�Ø× Ò   R°À5Ð ÑIÔIÐIÐIØ�4ð ”k×6Ò6°wÑ?Ô?ˆØBÐB [ÐBÑBÔBˆàð 	Ø�5õ   ­¨NÑ(;Ô(;Ñ<Ô<ÐÝÐ(Ñ)Ô)ð 	jð 	jˆAØ(¨Ô+ˆKÝ”^ T¤[Ô%:Ð$:¸D¼KÔ<QÑRÔRˆFÝ˜˜tœ{Ô9¸FÑBÀfÑLÑMÔMˆEØ×Ò˜[Ô1°;Ô3GÐQUÐchÐÑiÔiÐiÐiØˆtr=   c                óþ   — | j         rt          ddd¬¦  «         dS |                      ¦   «          | j        j        r&| j        rt          | j        t          dd¬¦  «         dS | j         	                    d¬	¦  «         dS )
u8   Ä�Ã³ng báº£ng hÃ²m Ä‘á»“ an toÃ n báº±ng phÃ­m Spacebar.rœ   rJ   T)Úcountr6   r,   Nrk   gš™™™™™É?)ri   r6   )r6   )
r,   r   r\   r&   rQ   r?   r   r   rB   Úclose_stashrX   s    r;   rí   zStashOrchestrator.close_stashm  s�   € àÔð 	Ý °À$ÐGÑGÔGÐGØˆFØ×ÒÑÔÐØŒ;Ô'ð 	9¨D¬Ið 	9Ý˜TœY­¸4ÈSÐQÑQÔQÐQÐQÐQàŒO×'Ò'°CÐ'Ñ8Ô8Ð8Ð8Ð8r=   úDict[str, Any]c                óN  — ddddddddœ}|                       ¦   «         }||d<   |sd|d<   |S |                      ¦   «         }t          |¦  «        |d<   |                      |¬	¦  «        }||d
<   |                      ¦   «         }||d<   |                      ¦   «          d|d<   d|d<   |S )u’   
        Cháº¡y toÃ n bá»™ chu trÃ¬nh Stash khÃ©p kÃ­n:
        Má»Ÿ Stash -> QuÃ©t Tabs -> Cáº¥t Ä‘á»“ -> RÃºt Waystone -> Ä�Ã³ng Stash.
        Fr   Ú )ÚsuccessÚstash_openedÚtabs_detectedÚitems_depositedÚwaystone_withdrawnÚstash_closedÚerrorrò   z(Khong the mo giao dien Stash tai Hideoutr÷   ró   )r�   rô   rõ   Trö   rñ   )r‰   rŽ   rË   r·   rê   rí   )r:   r�   ÚoutcomeÚopenedÚtabsÚ	depositedÚ	withdrawns          r;   Úrun_full_stash_cyclez&StashOrchestrator.run_full_stash_cyclex  sç   € ð Ø!ØØ Ø"'Ø!Øð
ð 
ˆð —’Ñ"Ô"ˆØ"(ˆ�ÑØð 	ØIˆG�GÑØˆNð �~Š~ÑÔˆÝ#& t¡9¤9ˆ�Ñ ð ×0Ò0ÐDVÐ0ÑWÔWˆ	Ø%.ˆÐ!Ñ"ð ×4Ò4Ñ6Ô6ˆ	Ø(1ˆÐ$Ñ%ð 	×ÒÑÔÐØ"&ˆ�ÑØ!ˆ�	ÑØˆr=   )NNNNNF)r#   r$   r%   r$   r&   r'   r(   r)   r*   r+   r,   r-   )r0   r1   rJ   )r8   rK   r9   rK   r4   rL   r5   rM   r6   rM   rN   rO   )r1   rJ   )
r8   rK   r9   rK   r5   rM   r6   rM   rN   rO   )rN   rU   )rN   r-   )Nr]   )r^   rU   r_   rM   rN   r-   rW   )rt   rU   rN   rŠ   )NF)rt   rU   r�   r-   rN   rK   )Nr   )rt   rU   r¸   rK   rN   r-   )rN   rO   )F)r�   r-   rN   rî   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rI   r7   rT   rY   r\   r‰   rŽ   r·   rê   rí   rý   r’   r=   r;   r"   r"   .   sg  € € € € € ØRÐRð #'Ø"&Ø(,ØFJØ59Ø"ð+<ð +<ð +<ð +<ð +<ðZ
Fð 
Fð 
Fð 
Fð 
Fð
|ð 
|ð 
|ð 
|ð 
|ðð ð ð ð
ð ð ð ð .2Ø ðHð Hð Hð Hð HðTð ð ð ð ð &*Ø#(ð:!ð :!ð :!ð :!ð :!ð| &*Ø()ðYð Yð Yð Yð Yðv	9ð 	9ð 	9ð 	9ð $)ð)ð )ð )ð )ð )ð )ð )r=   r"   )/r  Ú
__future__r   Úosr©   rr   r   Útypingr   r   r   r   r	   r
   r   ÚPILr   ÚImportErrorÚ(src.assistant_tool.stash.stash_constantsr   r   r   Ú,src.assistant_tool.stash.stash_memory_readerr   Ú)src.assistant_tool.stash.stash_ui_scannerr   r   Ú*src.assistant_tool.stash.stash_item_matrixr   r   Ú(src.assistant_tool.stash.stash_evaluatorr   rq   r   r   r   r   r   r   r   Úsrc.common.win32_windowr   r   r   Úsrc.common.vision_ocrr    r"   r’   r=   r;   ú<module>r     s  ððð ð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DðØÐÐÐÐÐÐøØð ð ð Ø€E€E€Eðøøøðð ð ð ð ð ð ð ð ð ð
 KÐ JÐ JÐ JÐ JÐ JØ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ CÐ CÐ CÐ CÐ CÐ Cðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð [Ð ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZØ 5Ð 5Ð 5Ð 5Ð 5Ð 5ðsð sð sð sð sñ sô sð sð sð ss   ®5 µ?¾?