§
    ãX®jþF  ã                  ój  — d Z ddlmZ ddlZddl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 ddlmZmZmZmZmZ e G d„ d	¦  «        ¦   «         Ze G d
„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Z G d„ d¦  «        ZdS )u  AutoPOE2 - Faustus Currency Arbitrage & Optimal Conversion Engine (Doc 68 / Doc 70).
========================================================================================
MÃ´ hÃ¬nh hÃ³a thá»‹ trÆ°á»�ng tiá»�n tá»‡ ngoáº¡i há»‘i Faustus (phÃ­m '/') dÆ°á»›i dáº¡ng Ä‘á»“ thá»‹ cÃ³ hÆ°á»›ng (Directed Weighted Graph).
- Thuáº­t toÃ¡n Dijkstra / Bellman-Ford tÃ¬m Ä‘Æ°á»�ng chuyá»ƒn Ä‘á»•i tiá»�n tá»‡ cÃ³ tá»· giÃ¡ tá»‘i Æ°u nháº¥t (Best Route).
- PhÃ¡t hiá»‡n cÆ¡ há»™i Arbitrage tam giÃ¡c (Triangular Arbitrage) tÃ­ch lÅ©y tÃ i sáº£n thá»¥ Ä‘á»™ng giá»¯a cÃ¡c map.
- CÆ¡ cháº¿ trÆ°á»£t giÃ¡ an toÃ n (Slippage Guard <= 3.0%) vÃ  TTL lá»‡nh 180s (1 Map).
- Tá»‘i Æ°u hÃ³a chi phÃ­ thu mua Waystone T15-T16 vÃ  thanh lÃ½ ngoáº¡i tá»‡ tháº·ng dÆ° sang Divine/Chaos.

TuÃ¢n thá»§ nghiÃªm ngáº·t:
- Rule 1: Cold Path Tier 2 (Python 3.11).
- Rule 4: Module hÃ³a Ä‘á»™c láº­p, tráº§n file < 500 dÃ²ng (Anti-Monolithic).
- Rule 5: Empirical DoD & Authentic Logic.
- Báº¥t biáº¿n: INV-EXCHANGE-GOLD-TAX, INV-EXCHANGE-RESERVE-SAFE, INV-EXCHANGE-SLIPPAGE-GUARD.
é    )ÚannotationsN)Ú	dataclassÚfield)Údatetime)ÚAnyÚDictÚListÚOptionalÚSetÚTuple)ÚCurrencyTierÚExchangeActionTypeÚExchangeOrderÚExchangeOrderStatusÚExchangePortfolioConfigc                  ó~   — e Zd ZU dZded<   ded<   ded<   dZded	<   d
Zded<   edd„¦   «         Zedd„¦   «         Z	dS )ÚCurrencyEdgeuh   Cáº¡nh trÃªn Ä‘á»“ thá»‹ tá»· giÃ¡: Ä‘áº¡i diá»‡n cho 1 chiá»�u giao dá»‹ch tá»« from_curr sang to_curr.ÚstrÚ	from_currÚto_currÚfloatÚrateé2   ÚintÚgold_tax_per_unitç{®Gáz„?Ú
bid_spreadÚreturnc                ó&   — | j         d| j        z
  z  S )u;   Tá»· giÃ¡ thá»±c táº¿ sau khi trá»« spread thá»‹ trÆ°á»�ng.ç      ð?)r   r   ©Úselfs    úMC:\Projects\AutoPOE2\src\assistant_tool\economy\faustus_currency_arbitrage.pyÚeffective_ratezCurrencyEdge.effective_rate*   s   € ð Œy˜C $¤/Ñ1Ñ2Ð2ó    c                ój   — | j         dk    rt          d¦  «        S t          j        | j         ¦  «         S )uq   Trá»�ng sá»‘ logarit Ã¢m Ä‘á»ƒ chuyá»ƒn bÃ i toÃ¡n nhÃ¢n tá»· giÃ¡ thÃ nh bÃ i toÃ¡n Ä‘Æ°á»�ng Ä‘i ngáº¯n nháº¥t.r   Úinf)r$   r   ÚmathÚlogr!   s    r#   Ú
log_weightzCurrencyEdge.log_weight/   s4   € ð Ô !Ò#Ð#Ý˜‘<”<ÐÝ”˜Ô,Ñ-Ô-Ð-Ð-r%   N)r   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   Úpropertyr$   r*   © r%   r#   r   r   !   s˜   € € € € € € àrÐrØ€N€N�NØ€L€L�LØ€K€K�KØÐÐÐÐÑØ€JÐÐÐÑàð3ð 3ð 3ñ „Xð3ð ð.ð .ð .ñ „Xð.ð .ð .r%   r   c                  óP   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   d	ed
<   dS )ÚConversionHopuB   Má»™t cháº·ng giao dá»‹ch trong tuyáº¿n Ä‘Æ°á»�ng chuyá»ƒn Ä‘á»•i.r   r   r   r   r   Ú	amount_inÚ
amount_outr   Úgold_taxN©r+   r,   r-   r.   r/   r1   r%   r#   r3   r3   7   sR   € € € € € € àLÐLØ€N€N�NØ€L€L�LØ€K€K�KØÐÐÑØÐÐÑØ€M€M�M€M€Mr%   r3   c                  ó¤   — e Zd ZU dZded<   ded<   ded<   ded<   ded	<   d
Zded<   dZded<   dZded<   dZded<   dZ	ded<   e
dd„¦   «         Zd
S )ÚConversionRouteu6   Tuyáº¿n Ä‘Æ°á»�ng chuyá»ƒn Ä‘á»•i tá»· giÃ¡ tá»‘i Æ°u.r   Úsource_currÚtarget_currzList[ConversionHop]Úhopsr   Úfinal_amountr$   NzOptional[float]Údirect_rateç        Úrate_advantage_pctr   r   Útotal_gold_taxÚestimated_slippage_pctFÚboolÚis_arbitrage_profitabler   c                óŽ   — | j         s| j        S d                     | j         d         j        gd„ | j         D ¦   «         z   ¦  «        S )Nz -> r   c                ó   — g | ]	}|j         ‘Œ
S r1   ©r   )Ú.0Úhs     r#   ú
<listcomp>z,ConversionRoute.path_str.<locals>.<listcomp>T   s   € Ð6TÐ6TÐ6TÀQ°q´yÐ6TÐ6TÐ6Tr%   )r<   r:   Újoinr   r!   s    r#   Úpath_strzConversionRoute.path_strP   sI   € àŒyð 	$ØÔ#Ð#Ø�{Š{˜DœI aœLÔ2Ð3Ð6TÐ6TÈ$Ì)Ð6TÑ6TÔ6TÑTÑUÔUÐUr%   )r   r   )r+   r,   r-   r.   r/   r>   r@   rA   rB   rD   r0   rL   r1   r%   r#   r9   r9   B   sÔ   € € € € € € à@Ð@ØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØ#'€KÐ'Ð'Ð'Ñ'Ø #ÐÐ#Ð#Ð#Ñ#Ø€NÐÐÐÑØ$'ÐÐ'Ð'Ð'Ñ'Ø$)ÐÐ)Ð)Ð)Ñ)àðVð Vð Vñ „XðVð Vð Vr%   r9   c                  óT   — e Zd ZU dZded<   ded<   ded<   ded<   d	ed
<   dZded<   dS )ÚArbitrageOpportunityu8   CÆ¡ há»™i Arbitrage tam giÃ¡c cÃ³ lÃ£i sau thuáº¿ VÃ ng.ú	List[str]Ú
cycle_pathr   Úgross_profit_pctÚnet_profit_chaosr   rA   rC   Úis_executableÚ r   ÚreasonN)r+   r,   r-   r.   r/   rU   r1   r%   r#   rN   rN   W   se   € € € € € € àBÐBØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØ€FÐÐÐÑÐÐr%   rN   c                  óZ   — e Zd ZU dZded<   ded<   ded<   ded<   ded	<   ded
<   ded<   dS )ÚLiquidationPlanuD   Káº¿ hoáº¡ch thanh lÃ½ ngoáº¡i tá»‡ tháº·ng dÆ° sang Divine / Chaos.r   Útotal_orderszList[ExchangeOrder]Úordersr   Úprojected_chaos_earnedÚprojected_divine_earnedrA   Úremaining_gold_balancerO   Úsource_currenciesNr7   r1   r%   r#   rW   rW   b   sl   € € € € € € àNÐNØÐÐÑØÐÐÑØ!Ð!Ð!Ñ!Ø Ð Ð Ñ ØÐÐÑØÐÐÑØ Ð Ð Ñ Ð Ð r%   rW   c                  ó|   — e Zd ZdZ	 	 	 	 	 d:d;d„Z	 	 d<d=d„Z	 d>d?d„Z	 d@dAd%„Z	 	 	 dBdCd-„Z	 	 	 	 dDdEd3„Z		 	 dFdGd9„Z
dS )HÚFaustusCurrencyArbitrageu]   
    Háº¡t nhÃ¢n phÃ¢n tÃ­ch tá»· giÃ¡ & Ä‘iá»�u phá»‘i chÃªnh lá»‡ch giÃ¡ sÃ n Faustus.
    Nç      @ç     €f@éˆ  ç-Cëâ6*?Úconfigú!Optional[ExchangePortfolioConfig]Úmax_slippage_pctr   Údefault_ttl_secÚmin_gold_reserver   Úchaos_per_gold_ratec                óv   — |pt          ¦   «         | _        || _        || _        || _        || _        i | _        d S ©N)r   rd   rf   rg   rh   ri   Úgraph)r"   rd   rf   rg   rh   ri   s         r#   Ú__init__z!FaustusCurrencyArbitrage.__init__s   sB   € ð Ð9Õ 7Ñ 9Ô 9ˆŒØ 0ˆÔØ.ˆÔØ 0ˆÔØ#6ˆÔ à46ˆŒ
ˆ
ˆ
r%   r   r   r   r   r   r   r6   r   r   ÚNonec                óØ   ‡— || j         vr
g | j         |<   ˆfd„| j         |         D ¦   «         | j         |<   t          |‰|||¬¦  «        }| j         |                              |¦  «         dS )uN   ThÃªm hoáº·c cáº­p nháº­t tá»· giÃ¡ trá»±c tiáº¿p giá»¯a 2 loáº¡i tiá»�n tá»‡.c                ó*   •— g | ]}|j         ‰k    ¯|‘ŒS r1   rG   )rH   Úer   s     €r#   rJ   z5FaustusCurrencyArbitrage.add_rate.<locals>.<listcomp>�   s&   ø€ Ð ZÐ ZÐ Z qÀQÄYÐRYÒEYÐEY ÐEYÐEYÐEYr%   )r   r   r   r   r   N)rl   r   Úappend)r"   r   r   r   r6   r   Úedges     `    r#   Úadd_ratez!FaustusCurrencyArbitrage.add_rateƒ   sŽ   ø€ ð ˜DœJÐ&Ð&Ø$&ˆDŒJ�yÑ!ð ![Ð ZÐ ZÐ Z¨D¬J°yÔ,AÐ ZÑ ZÔ ZˆŒ
�9ÑÝØØØØ&Ø!ð
ñ 
ô 
ˆð 	Œ
�9Ô×$Ò$ TÑ*Ô*Ð*Ð*Ð*r%   Úmarket_pairsúDict[Tuple[str, str], float]Úgold_tax_mapúOptional[Dict[str, int]]c                ó²   — |pi }|                      ¦   «         D ]=\  \  }}}|dk    r/|                     |d¦  «        }|                      ||||¬¦  «         Œ>dS )uP   Náº¡p danh má»¥c tá»· giÃ¡ thá»‹ trÆ°á»�ng tá»« POE2 Scout API hoáº·c RAM cache.r   r   )r6   N)ÚitemsÚgetrt   )r"   ru   rw   Útax_mapÚfrom_cÚto_cr   Útaxs           r#   Úload_rates_from_market_pairsz5FaustusCurrencyArbitrage.load_rates_from_market_pairsš   sw   € ð Ð$ "ˆØ$0×$6Ò$6Ñ$8Ô$8ð 	@ð 	@Ñ ‰NˆV�T˜DØ�aŠxˆxØ—k’k &¨"Ñ-Ô-�Ø—’˜f d¨D¸3�Ñ?Ô?Ð?øð	@ð 	@r%   r    r:   r;   r4   úOptional[ConversionRoute]c                ó  — ||k    rt          ||g |ddd¬¦  «        S || j        vrdS d|g fg}|di}d}|rÊt          j        |¦  «        \  }}}	||                     |t          d¦  «        ¦  «        k    rŒB||k    r|	}n�| j                             |g ¦  «        D ]c}
||
j        z   }||                     |
j        t          d¦  «        ¦  «        k     r+|||
j        <   t          j        |||
j        |	|
gz   f¦  «         Œd|°Ê|sdS g }|}d}|D ]a}
||
j	        z  }t          ||
j        z  ¦  «        }|                     t          |
j        |
j        |
j        |||¬¦  «        ¦  «         ||z  }|}Œb|dk    r||z  nd}d}| j                             |g ¦  «        D ]}
|
j        |k    r	|
j	        } nŒd}|r|dk    rt!          ||z  dz
  dz  d	¦  «        }t#          |¦  «        dz  }|| j        k    rdS t          ||||||||||d
k    ¬¦
  «
        S )u·   
        Thuáº­t toÃ¡n Dijkstra trÃªn trá»�ng sá»‘ -log(rate) tÃ¬m Ä‘Æ°á»�ng chuyá»ƒn Ä‘á»•i cÃ³ tá»· giÃ¡ Ä‘áº§u ra lá»›n nháº¥t.
        TuÃ¢n thá»§ Slippage Guard <= 3.0%.
        r    r?   r   )r:   r;   r<   r=   r$   r@   rA   Nr'   )r   r   r   r4   r5   r6   ç      Y@é   g      à?)
r:   r;   r<   r=   r$   r>   r@   rA   rB   rD   )r9   rl   ÚheapqÚheappopr{   r   r*   r   Úheappushr$   r   r   rr   r3   r   r   ÚroundÚlenrf   )r"   r:   r;   r4   ÚheapÚbest_weightsÚbest_edges_pathÚ
cur_weightÚcur_currÚcur_pathrs   Ú
new_weightr<   Ú
cur_amountrA   Úhop_amount_outÚhop_gold_taxr$   r>   Úadvantage_pctÚslippage_ests                        r#   Úfind_best_conversion_pathz2FaustusCurrencyArbitrage.find_best_conversion_path¦   sä  € ð ˜+Ò%Ð%Ý"Ø'Ø'ØØ&Ø"Ø#&Ø ðñ ô ð ð ˜dœjÐ(Ð(Ø�4ð �k 2Ð&Ð'ˆØ*5°sÐ);ˆà8<ˆàð 	XÝ-2¬]¸4Ñ-@Ô-@Ñ*ˆJ˜ (à˜L×,Ò,¨Xµu¸U±|´|ÑDÔDÒDÐDØà˜;Ò&Ð&Ø"*�Øàœ
Ÿš x°Ñ4Ô4ð Xð X�Ø'¨$¬/Ñ9�
Ø × 0Ò 0°´½uÀU¹|¼|Ñ LÔ LÒLÐLØ1;�L ¤Ñ.Ý”N 4¨*°d´lÀHÐPTÈvÑDUÐ)VÑWÔWÐWøð ð 	Xð  ð 	Ø�4ð %'ˆØˆ
Øˆà#ð 	(ð 	(ˆDØ'¨$Ô*=Ñ=ˆNÝ˜z¨DÔ,BÑBÑCÔCˆLØ�KŠK�Øœ.ØœØ”YØ$Ø)Ø%ðñ ô ñ ô ð ð ˜lÑ*ˆNØ'ˆJˆJà3<¸q²=°=˜ iÑ/Ð/Àcˆð ˆØ”J—N’N ;°Ñ3Ô3ð 	ð 	ˆDØŒ|˜{Ò*Ð*Ø"Ô1�Ø�ð +ð ˆØð 	U˜;¨š?˜?Ý! N°[Ñ$@ÀCÑ#GÈ5Ñ"PÐRSÑTÔTˆMõ ˜4‘y”y 3‘ˆØ˜$Ô/Ò/Ð/Ø�4åØ#Ø#ØØ#Ø)Ø#Ø,Ø)Ø#/Ø%2°SÒ%8ð
ñ 
ô 
ð 	
r%   ú	Chaos Orbrƒ   é˜:  Úbase_currencyÚtest_amountÚcurrent_goldúList[ArbitrageOpportunity]c                ó
  — g }|| j         vr|S | j         |         D �]N}|j        }||k    rŒ| j                              |g ¦  «        D �] }|j        }|||fv rŒ| j                              |g ¦  «        D ]ó}	|	j        |k    ræ||j        z  }
|
|j        z  }||	j        z  }||z
  }||z  dz  }t	          ||j        z  |
|j        z  z   ||	j        z  z   ¦  «        }|| j        z  }||z
  }d}d}||z
  | j        k     rd}d||z
  › d| j        › d�}n|dk    r	d}d	|d
›d�}t          ||||gt          |d¦  «        t          |d¦  «        |||¬¦  «        }| 
                    |¦  «         Œô�Œ"�ŒP|                     d„ d¬¦  «         |S )u×   
        TÃ¬m kiáº¿m cÃ¡c chu trÃ¬nh Arbitrage tam giÃ¡c xuáº¥t phÃ¡t vÃ  quay vá»� base_currency.
        Tá»± Ä‘á»™ng kháº¥u trá»« chi phÃ­ thuáº¿ VÃ ng Ä‘á»ƒ xÃ¡c Ä‘á»‹nh lá»£i nhuáº­n rÃ²ng thá»±c táº¿.
        rƒ   Tz$Arbitrage co lai rong sau thue Vang.FzQuy vang sau giao dich (z) thap hon nguong toi thieu (z).r    zLoi nhuan rong (z.2fz3 Chaos) khong bu du chi phi truot gia va thue Vang.r„   )rP   rQ   rR   rA   rS   rU   c                ó   — | j         S rk   )rR   )Úxs    r#   ú<lambda>zFFaustusCurrencyArbitrage.detect_triangular_arbitrage.<locals>.<lambda>J  s	   € ¨Ô);€ r%   )ÚkeyÚreverse)rl   r   r{   r$   r   r   ri   rh   rN   rˆ   rr   Úsort)r"   r™   rš   r›   ÚopportunitiesÚe1Úcurr_aÚe2Úcurr_bÚe3Ústep1Ústep2Úfinal_chaosÚgross_profitrQ   Útotal_tax_goldÚtax_cost_in_chaosrR   Úcan_executerU   Úopps                        r#   Údetect_triangular_arbitragez4FaustusCurrencyArbitrage.detect_triangular_arbitrage	  sf  € ð 57ˆØ ¤
Ð*Ð*Ø Ð ð ”*˜]Ô+ð /	2ñ /	2ˆBØ”ZˆFØ˜Ò&Ð&Øà”j—n’n V¨RÑ0Ô0ð *2ñ *2�Øœ�Ø˜m¨VÐ4Ð4Ð4Øàœ*Ÿ.š.¨°Ñ4Ô4ð %2ð %2�BØ”z ]Ò2Ð2à +¨bÔ.?Ñ ?˜Ø %¨Ô(9Ñ 9˜Ø&+¨bÔ.?Ñ&?˜à'2°[Ñ'@˜Ø,8¸;Ñ,FÈ%Ñ+OÐ(å),Ø'¨"Ô*>Ñ>Ø# bÔ&:Ñ:ñ;à# bÔ&:Ñ:ñ;ñ*ô *˜ð
 -;¸TÔ=UÑ,UÐ)Ø+7Ð:KÑ+KÐ(ð '+˜Ø!G˜à'¨.Ñ8¸4Ô;PÒPÐPØ*/˜Kð &VÀÈ~Ñ@]ð  &Vð  &Vð  }Aô  }Rð  &Vð  &Vð  &V˜F˜FØ-°Ò4Ð4Ø*/˜Kð &BÐ8Hð  &Bð  &Bð  &Bð  &B˜Få2Ø(5°v¸vÀ}Ð'UÝ-2Ð3CÀQÑ-GÔ-GÝ-2Ð3CÀQÑ-GÔ-GØ+9Ø*5Ø#)ðñ ô ˜ð &×,Ò,¨SÑ1Ô1Ð1øñK%2ñ*2ðZ 	×ÒÐ;Ð;ÀTÐÑJÔJÐJØÐr%   é   é   Útarget_tierÚcountÚavailable_walletc                óŽ  — |pi }d|› d�}d}t          d¦  «        }dD ]¦}	|                     |	d¦  «        }
| j        j                             |	d¦  «        }t	          d|
|z
  ¦  «        }|dk    rŒR|                      |	|t          |¦  «        ¬¦  «        }|r-|j        |k    r"||j        |z  z  }|	dk    r|d	z  }||k     r|}|}Œ§|S )
u}   
        TÃ¬m tuyáº¿n Ä‘Æ°á»�ng mua Waystone vá»›i chi phÃ­ quy Ä‘á»•i tháº¥p nháº¥t tá»« kho tÃ i sáº£n hiá»‡n cÃ³.
        zWaystone (Tier ú)Nr'   )r—   ú
Divine OrbzExalted Orbr   ©r4   rº   ç      b@)r   r{   rd   Údefault_reservesÚmaxr–   r=   )r"   rµ   r¶   r·   r›   ÚwalletÚwaystone_keyÚ
best_routeÚlowest_cost_in_chaosÚpayment_currÚavailÚreserveÚ	spendableÚrouteÚcost_in_chaoss                  r#   Úplan_waystone_purchasez/FaustusCurrencyArbitrage.plan_waystone_purchaseM  s  € ð "Ð' RˆØ7¨Ð7Ð7Ð7ˆà04ˆ
Ý$ U™|œ|Ðð Gð 	'ð 	'ˆLØ—J’J˜|¨QÑ/Ô/ˆEØ”kÔ2×6Ò6°|ÀQÑGÔGˆGÝ˜A˜u w™Ñ/Ô/ˆIØ˜AŠ~ˆ~Øà×2Ò2°<ÀÕY^Ð_hÑYiÔYiÐ2ÑjÔjˆEØð '˜Ô+¨uÒ4Ð4à!&¨%Ô*<¸yÑ*HÑ!I�Ø <Ò/Ð/Ø! UÑ*�Mà Ð#7Ò7Ð7Ø+8Ð(Ø!&�JøàÐr%   rº   r¿   úDict[str, int]Útarget_currencyrW   c                ó  — g }d}d}|}g }| j         j        }	|                     ¦   «         D �]&\  }
}|
|ddfv rŒ|	                     |
d¦  «        }||z
  }|dk    rŒ0|                      |
dt          |¦  «        ¬¦  «        }|sŒX||j        z
  | j        k     r n»t          d|
 	                    dd	¦  «         
                    ¦   «         › �t          j        |
|dt          |j        ¦  «        |j        |j        t           j        ¬
¦	  «	        }|                     |¦  «         ||j        z  }||j        z  }||j        z  }|                     |
¦  «         �Œ(d}d}| j                             dg ¦  «        D ]}|j        |k    r	|j        } nŒ|dk    rd|z  nd}t+          d|                     dd¦  «        |	                     dd¦  «        z
  ¦  «        }||z   }t          ||z  ¦  «        }|dk    rp|dz  }||z
  | j        k    r]t          dt          j        dt          ||z  ¦  «        ||||t           j        ¬
¦	  «	        }|                     |¦  «         |}||z  }||z  }t/          t1          |¦  «        |t3          |d¦  «        ||||¬¦  «        S )uÒ   
        Láº­p káº¿ hoáº¡ch thanh lÃ½ toÃ n bá»™ ngoáº¡i tá»‡ tháº·ng dÆ° vÆ°á»£t Ä‘á»‹nh má»©c dá»± trá»¯ sang target_currency.
        TuÃ¢n thá»§ INV-EXCHANGE-RESERVE-SAFE vÃ  INV-EXCHANGE-GOLD-TAX.
        r?   r   zMirror of Kalandrar—   é
   r»   Úliq_ú Ú_)	Úorder_idÚaction_typeÚsell_currencyÚsell_amountÚbuy_currencyÚexpected_buy_amountÚmarket_rateÚestimated_gold_taxÚstatusgðøÃ�?|?r    r¼   r   é   éú   Úliq_convert_chaos_to_divine)rX   rY   rZ   r[   rA   r\   r]   )rd   r½   rz   r{   r–   r   rA   rh   r   ÚreplaceÚlowerr   ÚSELL_TO_CHAOSr   r=   r$   r   ÚPENDINGrr   rl   r   r¾   ÚCONVERT_CHAOS_TO_DIVINErW   r‰   rˆ   )r"   r¿   r›   rË   rY   Útotal_chaos_earnedrA   Úrem_goldr]   ÚreservesÚ	curr_nameÚquantityÚmin_resÚsurplusrÇ   ÚorderÚdivine_earnedÚdivine_raters   Údivine_cost_chaosÚexisting_chaosÚnet_chaos_poolÚdivine_to_buyÚ
divine_taxÚ	order_divs                            r#   Úplan_surplus_liquidationz1FaustusCurrencyArbitrage.plan_surplus_liquidationr  s  € ð ')ˆØ ÐØˆØˆØ')Ðà”;Ô/ˆà#)§<¢<¡>¤>ð 	0ñ 	0ÑˆI�xØ˜_Ð.BÀKÐPÐPÐPØà—l’l 9¨bÑ1Ô1ˆGØ Ñ(ˆGØ˜!Š|ˆ|Øà×2Ò2°9¸kÕUZÐ[bÑUcÔUcÐ2ÑdÔdˆEØð Øà˜%Ô.Ñ.°Ô1FÒFÐFØ�å!ØE 	× 1Ò 1°#°sÑ ;Ô ;× AÒ AÑ CÔ CÐEÐEÝ.Ô<Ø'Ø#Ø(Ý$'¨Ô(:Ñ$;Ô$;Ø!Ô0Ø#(Ô#7Ý*Ô2ð
ñ 
ô 
ˆEð �MŠM˜%Ñ Ô Ð Ø %Ô"4Ñ4ÐØ˜eÔ2Ñ2ˆNØ˜Ô,Ñ,ˆHØ×$Ò$ YÑ/Ô/Ð/Ñ/ð ˆØ!ˆØ”J—N’N ;°Ñ3Ô3ð 	ð 	ˆDØŒ|˜Ò.Ð.Ø"Ô1�Ø�ð /ð 2=¸q²°˜C +Ñ-Ð-ÀeÐÝ˜Q §
¢
¨;¸Ñ :Ô :¸X¿\º\È+ÐWYÑ=ZÔ=ZÑ ZÑ[Ô[ˆØ+¨nÑ<ˆå˜NÐ.?Ñ?Ñ@Ô@ˆØ˜AÒÐØ&¨Ñ,ˆJØ˜*Ñ$¨Ô(=Ò=Ð=Ý)Ø:Ý 2Ô JØ"-Ý # MÐ4EÑ$EÑ FÔ FØ!0Ø(5Ø +Ø'1Ý.Ô6ð
ñ 
ô 
�	ð —’˜iÑ(Ô(Ð(Ø -�Ø *Ñ,�Ø˜JÑ&�åÝ˜V™œØÝ#(Ð);¸QÑ#?Ô#?Ø$1Ø)Ø#+Ø/ð
ñ 
ô 
ð 	
r%   )Nr`   ra   rb   rc   )
rd   re   rf   r   rg   r   rh   r   ri   r   )r   r   )r   r   r   r   r   r   r6   r   r   r   r   rn   rk   )ru   rv   rw   rx   r   rn   )r    )r:   r   r;   r   r4   r   r   r�   )r—   rƒ   r˜   )r™   r   rš   r   r›   r   r   rœ   )r³   r´   Nr˜   )
rµ   r   r¶   r   r·   rx   r›   r   r   r�   )r˜   rº   )r¿   rÊ   r›   r   rË   r   r   rW   )r+   r,   r-   r.   rm   rt   r€   r–   r²   rÉ   rò   r1   r%   r#   r_   r_   n   s*  € € € € € ðð ð 59Ø"%Ø!&Ø $Ø%+ð7ð 7ð 7ð 7ð 7ð* Ø ð+ð +ð +ð +ð +ð4 26ð
@ð 
@ð 
@ð 
@ð 
@ð  ð	a
ð a
ð a
ð a
ð a
ðJ )Ø"Ø!ð	Bð Bð Bð Bð BðL ØØ59Ø!ð#ð #ð #ð #ð #ðP "Ø+ð	[
ð [
ð [
ð [
ð [
ð [
ð [
r%   r_   )r.   Ú
__future__r   r…   r(   Údataclassesr   r   r   Útypingr   r   r	   r
   r   r   Ú+src.assistant_tool.currency_exchange.modelsr   r   r   r   r   r   r3   r9   rN   rW   r_   r1   r%   r#   ú<module>r÷      s  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð.ð .ð .ð .ð .ñ .ô .ñ „ð.ð* ðð ð ð ð ñ ô ñ „ðð ðVð Vð Vð Vð Vñ Vô Vñ „ðVð( ðð ð ð ð ñ ô ñ „ðð ð!ð !ð !ð !ð !ñ !ô !ñ „ð!ð_
ð _
ð _
ð _
ð _
ñ _
ô _
ð _
ð _
ð _
r%   