§
    Ô.¡jV/  ã                   óZ  — d Z ddlZddlmc mZ ddlZddlZddl	Z	ddl
Z
 ee	j        d¦  «        re	j                             d¬¦  «         dZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ% G d„ dej&        ¦  «        Z' G d„ dej&        ¦  «        Z( G d„ d ej&        ¦  «        Z) G d!„ d"ej&        ¦  «        Z* G d#„ d$ej&        ¦  «        Z+ G d%„ d&ej&        ¦  «        Z,ej-        Z. e.e'¦  «        Z/dZ0e/e0k    Z1e1sî ej2        d'e1fd(e/e0f¦  «        d) ej3        ¦   «         v s ej4        e¦  «        r ej5        e¦  «        nd) ej5        e.¦  «        d ej3        ¦   «         v s ej4        e'¦  «        r ej5        e'¦  «        nd ej5        e/¦  «         ej5        e0¦  «        d*œz  Z6 ej7        d+ ej-        e'¦  «        › d,�¦  «        d-z   d.e6iz  Z8 e9 ej:        e8¦  «        ¦  «        ‚dxZ.xZ/xZ1Z0ej-        Z. e.e(¦  «        Z/d/Z0e/e0k    Z1e1sî ej2        d'e1fd(e/e0f¦  «        d) ej3        ¦   «         v s ej4        e¦  «        r ej5        e¦  «        nd) ej5        e.¦  «        d ej3        ¦   «         v s ej4        e(¦  «        r ej5        e(¦  «        nd ej5        e/¦  «         ej5        e0¦  «        d*œz  Z6 ej7        d0 ej-        e(¦  «        › d,�¦  «        d-z   d.e6iz  Z8 e9 ej:        e8¦  «        ¦  «        ‚dxZ.xZ/xZ1Z0ej-        Z. e.e)¦  «        Z/d1Z0e/e0k    Z1e1sî ej2        d'e1fd(e/e0f¦  «        d) ej3        ¦   «         v s ej4        e¦  «        r ej5        e¦  «        nd) ej5        e.¦  «        d  ej3        ¦   «         v s ej4        e)¦  «        r ej5        e)¦  «        nd  ej5        e/¦  «         ej5        e0¦  «        d*œz  Z6 ej7        d2 ej-        e)¦  «        › d,�¦  «        d-z   d.e6iz  Z8 e9 ej:        e8¦  «        ¦  «        ‚dxZ.xZ/xZ1Z0ej-        Z. e.e*¦  «        Z/dZ0e/e0k    Z1e1sî ej2        d'e1fd(e/e0f¦  «        d) ej3        ¦   «         v s ej4        e¦  «        r ej5        e¦  «        nd) ej5        e.¦  «        d" ej3        ¦   «         v s ej4        e*¦  «        r ej5        e*¦  «        nd" ej5        e/¦  «         ej5        e0¦  «        d*œz  Z6 ej7        d3 ej-        e*¦  «        › d,�¦  «        d-z   d.e6iz  Z8 e9 ej:        e8¦  «        ¦  «        ‚dxZ.xZ/xZ1Z0ej-        Z. e.e,¦  «        Z/d4Z0e/e0k    Z1e1sî ej2        d'e1fd(e/e0f¦  «        d) ej3        ¦   «         v s ej4        e¦  «        r ej5        e¦  «        nd) ej5        e.¦  «        d& ej3        ¦   «         v s ej4        e,¦  «        r ej5        e,¦  «        nd& ej5        e/¦  «         ej5        e0¦  «        d*œz  Z6 ej7        d5 ej-        e,¦  «        › d,�¦  «        d-z   d.e6iz  Z8 e9 ej:        e8¦  «        ¦  «        ‚dxZ.xZ/xZ1Z0ej-        Z. e.e+¦  «        Z/d6Z0e/e0k    Z1e1sî ej2        d'e1fd(e/e0f¦  «        d) ej3        ¦   «         v s ej4        e¦  «        r ej5        e¦  «        nd) ej5        e.¦  «        d$ ej3        ¦   «         v s ej4        e+¦  «        r ej5        e+¦  «        nd$ ej5        e/¦  «         ej5        e0¦  «        d*œz  Z6 ej7        d7 ej-        e+¦  «        › d,�¦  «        d-z   d.e6iz  Z8 e9 ej:        e8¦  «        ¦  «        ‚dxZ.xZ/xZ1Z0e'j;        Z.e.j<        Z=dZ1e=e1k    Z>e>s™ ej2        d'e>fd8e=e1f¦  «        d ej3        ¦   «         v s ej4        e'¦  «        r ej5        e'¦  «        nd ej5        e.¦  «         ej5        e=¦  «         ej5        e1¦  «        d9œz  Z?d:d;e?iz  Z@ e9 ej:        e@¦  «        ¦  «        ‚dxZ.xZ=xZ>Z1e'jA        Z.e.j<        Z=d<Z1e=e1k    Z>e>s™ ej2        d'e>fd=e=e1f¦  «        d ej3        ¦   «         v s ej4        e'¦  «        r ej5        e'¦  «        nd ej5        e.¦  «         ej5        e=¦  «         ej5        e1¦  «        d9œz  Z?d:d;e?iz  Z@ e9 ej:        e@¦  «        ¦  «        ‚dxZ.xZ=xZ>Z1e'jB        Z.e.j<        Z=d>Z1e=e1k    Z>e>s™ ej2        d'e>fd?e=e1f¦  «        d ej3        ¦   «         v s ej4        e'¦  «        r ej5        e'¦  «        nd ej5        e.¦  «         ej5        e=¦  «         ej5        e1¦  «        d9œz  Z?d:d;e?iz  Z@ e9 ej:        e@¦  «        ¦  «        ‚dxZ.xZ=xZ>Z1e'jC        Z.e.j<        Z=dZ1e=e1k    Z>e>s™ ej2        d'e>fd@e=e1f¦  «        d ej3        ¦   «         v s ej4        e'¦  «        r ej5        e'¦  «        nd ej5        e.¦  «         ej5        e=¦  «         ej5        e1¦  «        d9œz  Z?d:d;e?iz  Z@ e9 ej:        e@¦  «        ¦  «        ‚dxZ.xZ=xZ>Z1e'jD        Z.e.j<        Z=d	Z1e=e1k    Z>e>s™ ej2        d'e>fdAe=e1f¦  «        d ej3        ¦   «         v s ej4        e'¦  «        r ej5        e'¦  «        nd ej5        e.¦  «         ej5        e=¦  «         ej5        e1¦  «        d9œz  Z?d:d;e?iz  Z@ e9 ej:        e@¦  «        ¦  «        ‚dxZ.xZ=xZ>Z1e'jE        Z.e.j<        Z=d
Z1e=e1k    Z>e>s™ ej2        d'e>fdBe=e1f¦  «        d ej3        ¦   «         v s ej4        e'¦  «        r ej5        e'¦  «        nd ej5        e.¦  «         ej5        e=¦  «         ej5        e1¦  «        d9œz  Z?d:d;e?iz  Z@ e9 ej:        e@¦  «        ¦  «        ‚dxZ.xZ=xZ>Z1e'jF        Z.e.j<        Z=dCZ1e=e1k    Z>e>s™ ej2        d'e>fdDe=e1f¦  «        d ej3        ¦   «         v s ej4        e'¦  «        r ej5        e'¦  «        nd ej5        e.¦  «         ej5        e=¦  «         ej5        e1¦  «        d9œz  Z?d:d;e?iz  Z@ e9 ej:        e@¦  «        ¦  «        ‚dxZ.xZ=xZ>Z1e'jG        Z.e.j<        Z=dZ1e=e1k    Z>e>s™ ej2        d'e>fdEe=e1f¦  «        d ej3        ¦   «         v s ej4        e'¦  «        r ej5        e'¦  «        nd ej5        e.¦  «         ej5        e=¦  «         ej5        e1¦  «        d9œz  Z?d:d;e?iz  Z@ e9 ej:        e@¦  «        ¦  «        ‚dxZ.xZ=xZ>Z1e'jH        Z.e.j<        Z=dFZ1e=e1k    Z>e>s™ ej2        d'e>fdGe=e1f¦  «        d ej3        ¦   «         v s ej4        e'¦  «        r ej5        e'¦  «        nd ej5        e.¦  «         ej5        e=¦  «         ej5        e1¦  «        d9œz  Z?d:d;e?iz  Z@ e9 ej:        e@¦  «        ¦  «        ‚dxZ.xZ=xZ>Z1dHeIdIeIfdJ„ZJdWdKeIfdL„ZK	 	 dXdNeIdOeLdPeLdQeLdReIf
dS„ZMdYdT„ZNdIeOfdU„ZPeQdVk    r  eP¦   «         ZR e	jS        eRrdnd¦  «         dS dS )Zur  
Test IPC Bridge v1.1 giá»¯a Python Agent vÃ  C++ Core Engine
- Telemetry: Seqlock double-buffer (2 slot ping-pong, chá»‘ng torn-read)
- Command : HÃ ng Ä‘á»£i vÃ²ng SPSC 16 slot (Agent produce, Core consume)
- Heartbeat: Agent cáº­p nháº­t nhá»‹p tim Ä‘á»ƒ Core watchdog giÃ¡m sÃ¡t
CÃ¡ch cháº¡y: khá»Ÿi Ä‘á»™ng bin/AutoPOE2_Core.exe trÆ°á»›c, rá»“i cháº¡y script nÃ y.
é    NÚreconfigurezutf-8)ÚencodingzLocal\POE2_Auto_SharedMem_v1i  @ é   é   é    é0   i   i   i  0 é@   l   OTªÉz é   é   é   é   é   é   é`   éa   éb   éc   c            
       ó¦   — e Zd ZdZdej        fdej        fdej        fdej        fdej        fdej        fdej        fd	ej        fd
ej        fg	ZdS )ÚSharedMemoryHeaderr
   ÚmagicÚprotocolVersionÚ	isRunningÚtelemetrySequenceÚcommandSequenceÚcommandReadIndexÚlastCoreHeartbeatÚlastAgentHeartbeatÚreservedN)Ú__name__Ú
__module__Ú__qualname__Ú_pack_ÚctypesÚc_uint64Úc_uint32Ú_fields_© ó    ú/C:\Projects\AutoPOE2\scripts\test_ipc_bridge.pyr   r   0   st   € € € € € Ø€Fà	�&”/Ð"Ø	˜FœOÐ,Ø	�f”oÐ&Ø	˜fœoÐ.Ø	˜FœOÐ,Ø	˜Vœ_Ð-Ø	˜fœoÐ.Ø	˜vœÐ/Ø	�V”_Ð%ð
€H€H€Hr(   r   c                   óF  — e Zd ZdZdej        fdej        fdej        fdej        fdej        fdej        fdej        fd	ej        fd
ej        fdej        fdej        fdej        fdej        fdej        fdej        fdej        fdej        fdej        fdej        fgZdS )ÚPlayerTelemetryDatar
   Ú
playerAddrÚposXÚposYÚposZÚyawÚpitchÚ	currentHPÚmaxHPÚcurrentManaÚmaxManaÚ	currentESÚmaxESÚcurrentWardÚmaxWardÚcurrentSpiritÚ	maxSpiritÚactiveWeaponSetÚmovementFlagsÚ
debuffMaskN)	r   r    r!   r"   r#   r$   Úc_floatr%   r&   r'   r(   r)   r+   r+   ?   sØ   € € € € € Ø€Fà	�v”Ð'Ø	�”Ð Ø	�”Ð Ø	�”Ð Ø	�”ÐØ	�&”.Ð!Ø	�f”oÐ&Ø	�&”/Ð"Ø	˜œÐ(Ø	�F”OÐ$Ø	�f”oÐ&Ø	�&”/Ð"Ø	˜œÐ(Ø	�F”OÐ$Ø	˜&œ/Ð*Ø	�f”oÐ&Ø	˜FœOÐ,Ø	˜&œ/Ð*Ø	�v”Ð'ð'€H€H€Hr(   r+   c                   óì   — e Zd ZdZdej        fdej        fdej        fdej        fdej        fdej        fdej        fd	ej        fd
ej        fdej        fdej        fdej        fdej        dz  fgZ	dS )ÚEntityTelemetryDatar
   ÚidÚtypeÚrarityr-   r.   r/   ÚdistanceToPlayerr2   r3   ÚstaggerProgressÚcurrentAnimationIdÚ
extraFlagsÚnamer   N)
r   r    r!   r"   r#   r%   Úc_uint16r?   Úc_charr&   r'   r(   r)   rA   rA   X   s¡   € € € € € Ø€Fà	ˆvŒÐØ	�”Ð!Ø	�6”?Ð#Ø	�”Ð Ø	�”Ð Ø	�”Ð Ø	˜Vœ^Ð,Ø	�f”oÐ&Ø	�&”/Ð"Ø	˜FœOÐ,Ø	˜vœÐ/Ø	�v”Ð'Ø	�” Ñ#Ð$ð€H€H€Hr(   rA   c                   ór   — e Zd ZdZdej        fdej        fdej        fdej        dz  fdej        dz  fgZd	S )
ÚAreaTelemetryDatar
   ÚareaLoadTimestampMsÚ	areaLevelÚareaSeedÚareaCoder   ÚareaNamer   N)	r   r    r!   r"   r#   r$   r%   rK   r&   r'   r(   r)   rM   rM   k   sV   € € € € € Ø€Fà	 ¤Ð0Ø	�f”oÐ&Ø	�V”_Ð%Ø	�V”] RÑ'Ð(Ø	�V”] RÑ'Ð(ð€H€H€Hr(   rM   c                   ót   — e Zd ZdZdej        fdej        fdefdej        fdedz  fdej	        d	z  fd
e
fgZdS )ÚTelemetryPacketr
   Ú
snapshotIdÚ	timestampÚplayerÚentityCountÚentitiesé   ÚterrainWalkabilityi @  ÚareaN)r   r    r!   r"   r#   r$   r+   r%   rA   Úc_uint8rM   r&   r'   r(   r)   rT   rT   v   sg   € € € € € Ø€Fà	�v”Ð'Ø	�f”oÐ&Ø	Ð&Ð'Ø	˜œÐ(Ø	Ð(¨3Ñ.Ð/Ø	˜vœ~°Ñ;Ð<Ø	Ð"Ð#ð€H€H€Hr(   rT   c            	       ó–   — e Zd ZdZdej        fdej        fdej        fdej        fdej        fdej        fdej        fd	ej        fgZd
S )ÚCommandPacketr
   Ú	commandIdÚopCodeÚtargetXÚtargetYÚtargetZÚtargetEntityIdÚpriorityÚ	timeoutMsN)	r   r    r!   r"   r#   r$   r%   r?   r&   r'   r(   r)   r_   r_   ƒ   sj   € € € € € Ø€Fà	�f”oÐ&Ø	�6”?Ð#Ø	�F”NÐ#Ø	�F”NÐ#Ø	�F”NÐ#Ø	˜6œ?Ð+Ø	�V”_Ð%Ø	�f”oÐ&ð	€H€H€Hr(   r_   )ú==)zL%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.sizeof
}(%(py3)s)
} == %(py8)sr#   )Úpy0Úpy2Úpy3Úpy5Úpy8zSharedMemoryHeader != 64B (ú)z
>assert %(py10)sÚpy10éT   zPlayerTelemetryData != 84B (éX   zEntityTelemetryData != 88B (zAreaTelemetryData != 96B (é$   zCommandPacket != 36B (iÈ˜  zTelemetryPacket != 39112B ()zI%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.magic
}.offset
} == %(py7)s)ri   rj   Úpy4Úpy7zassert %(py9)sÚpy9é   )zS%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.protocolVersion
}.offset
} == %(py7)sé   )zM%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.isRunning
}.offset
} == %(py7)s)zU%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.telemetrySequence
}.offset
} == %(py7)s)zS%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.commandSequence
}.offset
} == %(py7)s)zT%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.commandReadIndex
}.offset
} == %(py7)sé(   )zU%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.lastCoreHeartbeat
}.offset
} == %(py7)s)zV%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.lastAgentHeartbeat
}.offset
} == %(py7)sé8   )zL%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.reserved
}.offset
} == %(py7)sÚoffsetÚreturnc                 óˆ   — |                       |¦  «         t                               |                      d¦  «        d¦  «        S )Nrv   Úlittle)ÚseekÚintÚ
from_bytesÚread)Úshmrz   s     r)   Úread_u64rƒ   ¦   s2   € Ø‡H‚HˆVÑÔÐÝ�>Š>˜#Ÿ(š( 1™+œ+ xÑ0Ô0Ð0r(   Úretriesc                 ó”  — t          |¦  «        D ]·}t          | t          ¦  «        }|dk    r dS |dz  }|                      t          |t
          z  z   t          z   ¦  «         |                      t          j	        t          ¦  «        ¦  «        }t          | t          ¦  «        }||k    r|t                               |¦  «        fc S Œ¸dS )u}   Ä�á»�c snapshot telemetry chá»‘ng rÃ¡ch theo giao thá»©c seqlock.
    Tráº£ vá»� (sequence, PlayerTelemetryData) hoáº·c None.r   Nr
   )Úrangerƒ   Ú
SEQ_OFFSETr~   ÚTELEMETRY_SLOT0_OFFSETÚTELEMETRY_SLOT_STRIDEÚPLAYER_OFFSET_IN_PKTr�   r#   Úsizeofr+   Úfrom_buffer_copy)r‚   r„   Ú_Ús1ÚslotÚplayer_bytesÚs2s          r)   Úseqlock_readr’   «   sÅ   € õ �7‰^Œ^ð 	Jð 	JˆÝ�c�:Ñ&Ô&ˆØ�Š7ˆ7Ø�4�4Ø�A‰vˆØ�ŠÕ'¨$Õ1FÑ*FÑFÕI]Ñ]Ñ^Ô^Ð^Ø—x’x¥¤Õ.AÑ BÔ BÑCÔCˆÝ�c�:Ñ&Ô&ˆØ�Š8ˆ8ØÕ*×;Ò;¸LÑIÔIÐIÐIÐIÐIð àˆ4r(   ç        Úop_codeÚxÚyÚzÚ	entity_idc                 ó^  — t          | t          ¦  «        }t          | t          ¦  «        }||z
  t          k    rt	          d¦  «         dS t          ¦   «         }|dz   |_        ||_        ||_        ||_	        ||_
        ||_        d|_        d|_        |                      t          |t          z  t           z  z   ¦  «         |                      t%          |¦  «        ¦  «         |                      t          ¦  «         |                      |dz                        dd¦  «        ¦  «         |j        S )u<   Ä�áº©y lá»‡nh vÃ o SPSC Command Ring (producer phÃ­a Agent).u9   [Command] HÃ ng Ä‘á»£i Ä‘áº§y - bá»� qua láº§n gá»­i nÃ yNr
   i¸  rv   r}   )rƒ   ÚCMD_WRITE_OFFSETÚCMD_READ_OFFSETÚCOMMAND_QUEUE_CAPACITYÚprintr_   r`   ra   rb   rc   rd   re   rf   rg   r~   ÚCOMMAND_QUEUE_OFFSETÚCOMMAND_SLOT_STRIDEÚwriteÚbytesÚto_bytes)	r‚   r”   r•   r–   r—   r˜   ÚwÚrÚcmds	            r)   Úpublish_commandr¦   »   s
  € õ 	�Õ&Ñ'Ô'€AÝ�•oÑ&Ô&€AØˆ1�uÕ&Ò&Ð&ÝÐIÑJÔJÐJØˆtå
‰/Œ/€CØ˜‘E€C„MØ€C„JØ€C„KØ€C„KØ€C„KØ"€CÔØ€C„LØ€C„Mà‡H‚HÕ! QÕ)?Ñ%?ÕCVÑ$VÑVÑWÔWÐWØ‡I‚I�e�C‰jŒjÑÔÐØ‡H‚HÕÑÔÐØ‡I‚Iˆq�1‰u×Ò˜q (Ñ+Ô+Ñ,Ô,Ð,ØŒ=Ðr(   c                 óÎ   — |                       t          ¦  «         |                      t          t	          j        ¦   «         dz  ¦  «                             dd¦  «        ¦  «         d S )Néè  rv   r}   )r~   ÚAGENT_HEARTBEAT_OFFSETr    r   Útimer¢   )r‚   s    r)   Úupdate_agent_heartbeatr«   Õ   sP   € Ø‡H‚HÕ#Ñ$Ô$Ð$Ø‡I‚I�c•$”)‘+”+ Ñ$Ñ%Ô%×.Ò.¨q°(Ñ;Ô;Ñ<Ô<Ð<Ð<Ð<r(   c                  óR
  — t          d¦  «         t          d¦  «         t          d¦  «         	 t          j        dt          t          t          j        ¬¦  «        } n*# t
          $ r}t          d|› �¦  «         Y d }~dS d }~ww xY wd }t          j        ¦   «         dz   }t          j        ¦   «         |k     r¢|                      d¦  «         t           	                    |  
                    t          j        t          ¦  «        ¦  «        ¦  «        }|j        t          k    r|j        dk    r|}n+t          j        d	¦  «         t          j        ¦   «         |k     °¢|€t          d
¦  «         dS t          d|j        d›dt          d›d�¦  «         t          d|j        d›�¦  «         t          d|j        dk    rdnd› �¦  «         t          d¦  «         d }t          j        ¦   «         dz   }t          j        ¦   «         |k     r=t%          | ¦  «        }|rn+t          j        d¦  «         t          j        ¦   «         |k     °=|€t          d¦  «         dS |\  }}t          d|› d|j        › d|j        › d|j        › d|j        › �
¦  «         t          j        d	¦  «         t/          | ¦  «         t%          | ¦  «        }|�|d         |k    rt          d¦  «         dS t          d|› d|d         › d�¦  «         t          d¦  «         g }	|	                     t3          | t4          d d!¦  «        ¦  «         |	                     t3          | t6          d"¬#¦  «        ¦  «         |	                     t3          | t8          ¦  «        ¦  «         t;          d$„ |	D ¦   «         ¦  «        rt          d%¦  «         dS t          d&|	d         › d'|	d         › d(|	d)         › d*�¦  «         t          d+¦  «         t=          | t>          ¦  «        }
d}t          j        ¦   «         dz   }t          j        ¦   «         |k     rYt/          | ¦  «         t=          | t>          ¦  «        |
z
  d,k    rd-}n+t          j        d¦  «         t          j        ¦   «         |k     °Y|st          d.¦  «         dS t          d/¦  «         t=          | d0¦  «        }t=          | t@          ¦  «        }tC          t          j        ¦   «         d1z  ¦  «        }t          d2||z
  › d3||z
  › d4�¦  «         t          d5¦  «         t          d6¦  «         d-S )7Nz2==================================================z2   AutoPOE2 IPC Bridge Test (Protocol v1.1)       r   )ÚtagnameÚaccessu]   [Error] KhÃ´ng tÃ¬m tháº¥y Shared Memory. HÃ£y cháº¯c cháº¯n CoreEngine Ä‘ang cháº¡y! Lá»—i: Fé
   r
   gš™™™™™É?uB   [FAIL] Core khÃ´ng pháº£n há»“i hoáº·c magic header khÃ´ng khá»›p!z  - Magic Header: 0xÚXu    (Chuáº©n: 0xrn   u      - PhiÃªn báº£n Giao thá»©c: 0xu     - Tráº¡ng thÃ¡i Core: u   HOáº T Ä�á»˜NGu   Táº®Tu2   
[1] Ä�á»�c telemetry qua Seqlock double-buffer...r   gš™™™™™©?uD   [FAIL] KhÃ´ng Ä‘á»�c Ä‘Æ°á»£c snapshot telemetry nÃ o trong 5 giÃ¢y!z  - Snapshot seq=z | Player HP: ú/z | Spirit: uD   [FAIL] Telemetry sequence khÃ´ng tÄƒng - Core cÃ³ thá»ƒ Ä‘Ã£ dá»«ng!u      - Sequence tÄƒng liÃªn tá»¥c: z -> z (Core publish 120Hz OK)u-   
[2] Gá»­i 3 lá»‡nh vÃ o SPSC Command Ring...g      ”@g     €†@i90  )r˜   c              3   ó   K  — | ]}|d u V — Œ	d S )Nr'   )Ú.0Úcs     r)   ú	<genexpr>zmain.<locals>.<genexpr>  s&   è è € Ð
#Ð
#˜ˆ1�ˆ9Ð
#Ð
#Ð
#Ð
#Ð
#Ð
#r(   u!   [FAIL] Gá»­i lá»‡nh tháº¥t báº¡i!u     - Ä�Ã£ gá»­i lá»‡nh #z (NAVIGATE 1280,720), #z (ENGAGE), #r   z	 (PICKUP)u*   
[3] Chá»� Core rÃºt lá»‡nh (SPSC FIFO)...r   Tu4   [FAIL] Core khÃ´ng tiÃªu thá»¥ lá»‡nh trong 5 giÃ¢y!uO     - Core Ä‘Ã£ tiÃªu thá»¥ cáº£ 3 lá»‡nh theo Ä‘Ãºng FIFO (readIndex tÄƒng >= 3)rx   r¨   u   
[4] Nhá»‹p tim: Core lá»‡ch u   ms | Agent lá»‡ch ÚmsuQ   [SUCCESS] Thá»­ nghiá»‡m IPC v1.1 (Seqlock + SPSC Ring + Heartbeat) THÃ€NH CÃ”NG!ua   [Info] Script káº¿t thÃºc -> Core sáº½ tá»± ngáº¯t sau 5s máº¥t nhá»‹p tim Agent (watchdog demo).)"r�   ÚmmapÚSHARED_MEM_SIZEÚSHARED_MEM_NAMEÚACCESS_WRITEÚ	Exceptionrª   r~   r   rŒ   r�   r#   r‹   r   ÚSHARED_MEM_MAGICr   Úsleepr   r’   r2   r3   r:   r;   r«   Úappendr¦   ÚOP_NAVIGATE_TO_COORDÚOP_ENGAGE_TARGETÚOP_PICKUP_ITEMÚanyrƒ   r›   r©   r   )r‚   ÚeÚheaderÚdeadlineÚhÚresultÚseq1rW   Úresult2ÚsentÚ
start_readÚconsumedÚcore_hbÚagent_hbÚnow_mss                  r)   ÚmainrÐ   Ú   so  € Ý	Ð
>Ñ?Ô?Ð?Ý	Ð
>Ñ?Ô?Ð?Ý	Ð
>Ñ?Ô?Ð?ðÝŒi˜�?µOÍDÔL]Ð^Ñ^Ô^ˆˆøÝð ð ð ÝÐqÐnoÐqÐqÑrÔrÐrØˆuˆuˆuˆuˆuøøøøðøøøð
 €FÝŒy‰{Œ{˜RÑ€HÝ
Œ)‰+Œ+˜Ò
 Ð
 Ø�Š�‰ŒˆÝ×/Ò/°·²½¼ÕGYÑ9ZÔ9ZÑ0[Ô0[Ñ\Ô\ˆØŒ7Õ&Ò&Ð&¨1¬;¸!Ò+;Ð+;ØˆFØÝŒ
�3‰Œˆõ Œ)‰+Œ+˜Ò
 Ð
 ð €~ÝÐRÑSÔSÐSØˆuå	Ð
S ¤Ð
SÐ
SÐ
SÕ>NÐ
SÐ
SÐ
SÐ
SÑTÔTÐTÝ	Ð
G¨VÔ-CÐ
GÐ
GÐ
GÑHÔHÐHÝ	Ð
]¸Ô9IÈQÒ9NÐ9NÐ%5Ð%5ÐT[Ð
]Ð
]Ñ^Ô^Ð^õ 
Ð
?Ñ@Ô@Ð@Ø€FÝŒy‰{Œ{˜Q‰€HÝ
Œ)‰+Œ+˜Ò
 Ð
 Ý˜cÑ"Ô"ˆØð 	ØÝŒ
�4ÑÔÐõ	 Œ)‰+Œ+˜Ò
 Ð
 ð
 €~ÝÐTÑUÔUÐUØˆuà�L€Dˆ&Ý	ð B˜dð Bð B°&Ô2Bð Bð BÀVÄ\ð Bð BØÔ,ðBð BØ/5Ô/?ðBð Bñ Cô Cð Cõ 	„Jˆs�O„O€OÝ˜3ÑÔÐÝ˜3ÑÔ€GØ€˜' !œ*¨Ò,Ð,ÝÐTÑUÔUÐUØˆuÝ	Ð
[¨TÐ
[Ð
[°w¸q´zÐ
[Ð
[Ð
[Ñ\Ô\Ð\õ 
Ð
:Ñ;Ô;Ð;Ø€DØ‡K‚K• Õ%9¸6À5ÑIÔIÑJÔJÐJØ‡K‚K• Õ%5ÀÐGÑGÔGÑHÔHÐHØ‡K‚K• ¥^Ñ4Ô4Ñ5Ô5Ð5Ý
Ð
#Ð
#˜dÐ
#Ñ
#Ô
#Ñ#Ô#ð ÝÐ1Ñ2Ô2Ð2ØˆuÝ	Ð
k D¨¤GÐ
kÐ
kÀDÈÄGÐ
kÐ
kÐY]Ð^_ÔY`Ð
kÐ
kÐ
kÑlÔlÐlõ 
Ð
7Ñ8Ô8Ð8Ý˜#�Ñ/Ô/€JØ€HÝŒy‰{Œ{˜Q‰€HÝ
Œ)‰+Œ+˜Ò
 Ð
 Ý˜sÑ#Ô#Ð#Ý�C�Ñ)Ô)¨JÑ6¸!Ò;Ð;ØˆHØÝŒ
�4ÑÔÐõ Œ)‰+Œ+˜Ò
 Ð
 ð ð ÝÐDÑEÔEÐEØˆuÝ	Ð
[Ñ\Ô\Ð\õ �s˜DÑ!Ô!€GÝ˜Õ3Ñ4Ô4€HÝ•”‘”˜tÑ#Ñ$Ô$€FÝ	Ð
d¨6°GÑ+;Ð
dÐ
dÈvÐX`ÑO`Ð
dÐ
dÐ
dÑeÔeÐeÝ	Ð
]Ñ^Ô^Ð^Ý	Ð
mÑnÔnÐnØˆ4s   ¯,A Á
BÁ&A>Á>BÚ__main__)r   )r“   r“   r“   r   )r{   N)TÚ__doc__ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arr#   r·   Úsysrª   ÚhasattrÚstdoutr   r¹   r¸   r‡   rš   r›   r©   rˆ   r‰   rŠ   rž   rœ   rŸ   r¼   ÚOP_IDLEr¿   rÀ   rÁ   ÚOP_CAST_EMERGENCY_PORTALÚOP_EXECUTE_STASH_ROUTINEÚOP_EXECUTE_VENDOR_ROUTINEÚOP_TRIGGER_WORLD_MAP_TRAVELÚOP_TRIGGER_AUTO_LOGINÚOP_RECALIBRATE_XYZÚOP_PANIC_STOPÚ	Structurer   r+   rA   rM   rT   r_   r‹   Ú@py_assert1Ú@py_assert4Ú@py_assert7Ú@py_assert6Ú_call_reprcompareÚlocalsÚ_should_repr_global_nameÚ	_safereprÚ@py_format9Ú_format_assertmsgÚ@py_format11ÚAssertionErrorÚ_format_explanationr   rz   Ú@py_assert3Ú@py_assert5Ú@py_format8Ú@py_format10r   r   r   r   r   r   r   r   r   rƒ   r’   Úfloatr¦   r«   ÚboolrÐ   r   ÚsuccessÚexitr'   r(   r)   ú<module>rú      s}  ððð ð € € € € € € € € € € € € €€€€Ø €€€Ø 
€
€
€
Ø €€€à
€7ˆ3Œ:�}Ñ%Ô%ð -Ø„J×Ò GÐÑ,Ô,Ð,à1€Ø!€ð €
ØÐ Ø€ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ à%Ð ð €ØÐ ØÐ Ø€ØÐ ØÐ ØÐ Ø Ð ØÐ ØÐ Ø€ðð ð ð ð ˜Ô)ñ ô ð ðð ð ð ð ˜&Ô*ñ ô ð ð2ð ð ð ð ˜&Ô*ñ ô ð ð&ð ð ð ð ˜Ô(ñ ô ð ð
ð 
ð 
ð 
ð 
�fÔ&ñ 
ô 
ð 
ðð ð ð ð �FÔ$ñ ô ð ð" „}Ð r€}€}Ð'Ñ(Ô(Ð r¨BÐ rÐ(¨BÒ.Ð rÐ rÐ rÐ rÐ rÔ rÐ rÐ rÐ rÐ rÐ(¨BÐ rÑ rÔ rÐ rÐ rÐ rÔ rÑ rÔ rÐ rÐ rÐ rÐ rÔ r€vÑ rÔ rÐ rÐ rÐ rÔ r€vÑ rÔ rÐ rÐ rÐ rÐ rÔ r€}Ñ rÔ rÐ rÐ rÐ rÔ rÑ rÔ rÐ rÐ rÐ rÐ rÔ rÐ'Ñ rÔ rÐ rÐ rÐ rÔ rÐ'Ñ rÔ rÐ rÐ rÐ rÐ rÔ rÐ(Ñ rÔ rÐ rÐ rÔ r¨BÑ rÔ rÐ rÐ rÑ rÐ rÐ rÐ rÔ rÐ0rÈmÈfÌmÐ\nÑNoÔNoÐ0rÐ0rÐ0rÑ rÔ rÐ rÑ rÐ rÐ rÐ rÑ rÐ rÐ rÐ rÐ rÐ rÔ rÐ rÑ rÔ rÑ rÔ rÐ rÐ rÐ rÐ rÐ rÐ rÐ rÐ rÐ rØ„}Ð u€}€}Ð(Ñ)Ô)Ð u¨RÐ uÐ)¨RÒ/Ð uÐ uÐ uÐ uÐ uÔ uÐ uÐ uÐ uÐ uÐ)¨RÐ uÑ uÔ uÐ uÐ uÐ uÔ uÑ uÔ uÐ uÐ uÐ uÐ uÔ u€vÑ uÔ uÐ uÐ uÐ uÔ u€vÑ uÔ uÐ uÐ uÐ uÐ uÔ u€}Ñ uÔ uÐ uÐ uÐ uÔ uÑ uÔ uÐ uÐ uÐ uÐ uÔ uÐ(Ñ uÔ uÐ uÐ uÐ uÔ uÐ(Ñ uÔ uÐ uÐ uÐ uÐ uÔ uÐ)Ñ uÔ uÐ uÐ uÔ u¨RÑ uÔ uÐ uÐ uÑ uÐ uÐ uÐ uÔ uÐ1uÐP]ÐPVÔP]Ð^qÑPrÔPrÐ1uÐ1uÐ1uÑ uÔ uÐ uÑ uÐ uÐ uÐ uÑ uÐ uÐ uÐ uÐ uÐ uÔ uÐ uÑ uÔ uÑ uÔ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uØ„}Ð u€}€}Ð(Ñ)Ô)Ð u¨RÐ uÐ)¨RÒ/Ð uÐ uÐ uÐ uÐ uÔ uÐ uÐ uÐ uÐ uÐ)¨RÐ uÑ uÔ uÐ uÐ uÐ uÔ uÑ uÔ uÐ uÐ uÐ uÐ uÔ u€vÑ uÔ uÐ uÐ uÐ uÔ u€vÑ uÔ uÐ uÐ uÐ uÐ uÔ u€}Ñ uÔ uÐ uÐ uÐ uÔ uÑ uÔ uÐ uÐ uÐ uÐ uÔ uÐ(Ñ uÔ uÐ uÐ uÐ uÔ uÐ(Ñ uÔ uÐ uÐ uÐ uÐ uÔ uÐ)Ñ uÔ uÐ uÐ uÔ u¨RÑ uÔ uÐ uÐ uÑ uÐ uÐ uÐ uÔ uÐ1uÐP]ÐPVÔP]Ð^qÑPrÔPrÐ1uÐ1uÐ1uÑ uÔ uÐ uÑ uÐ uÐ uÐ uÑ uÐ uÐ uÐ uÐ uÐ uÔ uÐ uÑ uÔ uÑ uÔ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uÐ uØ„}Ð o€}€}Ð&Ñ'Ô'Ð o¨2Ð oÐ'¨2Ò-Ð oÐ oÐ oÐ oÐ oÔ oÐ oÐ oÐ oÐ oÐ'¨2Ð oÑ oÔ oÐ oÐ oÐ oÔ oÑ oÔ oÐ oÐ oÐ oÐ oÔ o€vÑ oÔ oÐ oÐ oÐ oÔ o€vÑ oÔ oÐ oÐ oÐ oÐ oÔ o€}Ñ oÔ oÐ oÐ oÐ oÔ oÑ oÔ oÐ oÐ oÐ oÐ oÔ oÐ&Ñ oÔ oÐ oÐ oÐ oÔ oÐ&Ñ oÔ oÐ oÐ oÐ oÐ oÔ oÐ'Ñ oÔ oÐ oÐ oÔ o¨2Ñ oÔ oÐ oÐ oÑ oÐ oÐ oÐ oÔ oÐ/oÈMÈFÌMÐZkÑLlÔLlÐ/oÐ/oÐ/oÑ oÔ oÐ oÑ oÐ oÐ oÐ oÑ oÐ oÐ oÐ oÐ oÐ oÔ oÐ oÑ oÔ oÑ oÔ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oØ„}Ð c€}€}�]Ñ#Ô#Ð c rÐ cÐ# rÒ)Ð cÐ cÐ cÐ cÐ cÔ cÐ cÐ cÐ cÐ cÐ# rÐ cÑ cÔ cÐ cÐ cÐ cÔ cÑ cÔ cÐ cÐ cÐ cÐ cÔ c€vÑ cÔ cÐ cÐ cÐ cÔ c€vÑ cÔ cÐ cÐ cÐ cÐ cÔ c€}Ñ cÔ cÐ cÐ cÐ cÔ cÑ cÔ cÐ cÐ cÐ cÐ cÔ c�]Ñ cÔ cÐ cÐ cÐ cÔ c�]Ñ cÔ cÐ cÐ cÐ cÐ cÔ cÐ#Ñ cÔ cÐ cÐ cÔ c rÑ cÔ cÐ cÐ cÑ cÐ cÐ cÐ cÔ cÐ+cÀMÀFÄMÐR_ÑD`ÔD`Ð+cÐ+cÐ+cÑ cÔ cÐ cÑ cÐ cÐ cÐ cÑ cÐ cÐ cÐ cÐ cÐ cÔ cÐ cÑ cÔ cÑ cÔ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cØ„}Ð o€}€}�_Ñ%Ô%Ð o¨Ð oÐ%¨Ò.Ð oÐ oÐ oÐ oÐ oÔ oÐ oÐ oÐ oÐ oÐ%¨Ð oÑ oÔ oÐ oÐ oÐ oÔ oÑ oÔ oÐ oÐ oÐ oÐ oÔ o€vÑ oÔ oÐ oÐ oÐ oÔ o€vÑ oÔ oÐ oÐ oÐ oÐ oÔ o€}Ñ oÔ oÐ oÐ oÐ oÔ oÑ oÔ oÐ oÐ oÐ oÐ oÔ o�_Ñ oÔ oÐ oÐ oÐ oÔ o�_Ñ oÔ oÐ oÐ oÐ oÐ oÔ oÐ%Ñ oÔ oÐ oÐ oÔ o¨Ñ oÔ oÐ oÐ oÑ oÐ oÐ oÐ oÔ oÐ0oÈmÈfÌmÐ\kÑNlÔNlÐ0oÐ0oÐ0oÑ oÔ oÐ oÑ oÐ oÐ oÐ oÑ oÐ oÐ oÐ oÐ oÐ oÔ oÐ oÑ oÔ oÑ oÔ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oàÔÐ +ÐÔ&Ð +¨!Ð +Ð&¨!Ò+Ð +Ð +Ð +Ð +Ð +Ô +Ð +Ð +Ð +Ð +Ð&¨!Ð +Ñ +Ô +Ð +Ð +Ð +Ô +Ñ +Ô +Ð +Ð +Ð +Ð +Ô +ÐÑ +Ô +Ð +Ð +Ð +Ô +ÐÑ +Ô +Ð +Ð +Ð +Ð +Ô +ÐÑ +Ô +Ð +Ð +Ô +Ð&Ñ +Ô +Ð +Ð +Ô +¨!Ñ +Ô +Ð +Ð +Ñ +Ð +Ð +Ð +Ð +Ð +Ñ +Ð +Ð +Ð +Ð +Ð +Ô +Ð +Ñ +Ô +Ñ +Ô +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +ØÔ)Ð 5Ð)Ô0Ð 5°AÐ 5Ð0°AÒ5Ð 5Ð 5Ð 5Ð 5Ð 5Ô 5Ð 5Ð 5Ð 5Ð 5Ð0°AÐ 5Ñ 5Ô 5Ð 5Ð 5Ð 5Ô 5Ñ 5Ô 5Ð 5Ð 5Ð 5Ð 5Ô 5ÐÑ 5Ô 5Ð 5Ð 5Ð 5Ô 5ÐÑ 5Ô 5Ð 5Ð 5Ð 5Ð 5Ô 5Ð)Ñ 5Ô 5Ð 5Ð 5Ô 5Ð0Ñ 5Ô 5Ð 5Ð 5Ô 5°AÑ 5Ô 5Ð 5Ð 5Ñ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ñ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ô 5Ð 5Ñ 5Ô 5Ñ 5Ô 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ØÔ#Ð 0Ð#Ô*Ð 0¨bÐ 0Ð*¨bÒ0Ð 0Ð 0Ð 0Ð 0Ð 0Ô 0Ð 0Ð 0Ð 0Ð 0Ð*¨bÐ 0Ñ 0Ô 0Ð 0Ð 0Ð 0Ô 0Ñ 0Ô 0Ð 0Ð 0Ð 0Ð 0Ô 0ÐÑ 0Ô 0Ð 0Ð 0Ð 0Ô 0ÐÑ 0Ô 0Ð 0Ð 0Ð 0Ð 0Ô 0Ð#Ñ 0Ô 0Ð 0Ð 0Ô 0Ð*Ñ 0Ô 0Ð 0Ð 0Ô 0¨bÑ 0Ô 0Ð 0Ð 0Ñ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ñ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ô 0Ð 0Ñ 0Ô 0Ñ 0Ô 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ØÔ+Ð 8Ð+Ô2Ð 8°bÐ 8Ð2°bÒ8Ð 8Ð 8Ð 8Ð 8Ð 8Ô 8Ð 8Ð 8Ð 8Ð 8Ð2°bÐ 8Ñ 8Ô 8Ð 8Ð 8Ð 8Ô 8Ñ 8Ô 8Ð 8Ð 8Ð 8Ð 8Ô 8ÐÑ 8Ô 8Ð 8Ð 8Ð 8Ô 8ÐÑ 8Ô 8Ð 8Ð 8Ð 8Ð 8Ô 8Ð+Ñ 8Ô 8Ð 8Ð 8Ô 8Ð2Ñ 8Ô 8Ð 8Ð 8Ô 8°bÑ 8Ô 8Ð 8Ð 8Ñ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ñ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ô 8Ð 8Ñ 8Ô 8Ñ 8Ô 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ØÔ)Ð 6Ð)Ô0Ð 6°BÐ 6Ð0°BÒ6Ð 6Ð 6Ð 6Ð 6Ð 6Ô 6Ð 6Ð 6Ð 6Ð 6Ð0°BÐ 6Ñ 6Ô 6Ð 6Ð 6Ð 6Ô 6Ñ 6Ô 6Ð 6Ð 6Ð 6Ð 6Ô 6ÐÑ 6Ô 6Ð 6Ð 6Ð 6Ô 6ÐÑ 6Ô 6Ð 6Ð 6Ð 6Ð 6Ô 6Ð)Ñ 6Ô 6Ð 6Ð 6Ô 6Ð0Ñ 6Ô 6Ð 6Ð 6Ô 6°BÑ 6Ô 6Ð 6Ð 6Ñ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ñ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ô 6Ð 6Ñ 6Ô 6Ñ 6Ô 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6ØÔ*Ð 7Ð*Ô1Ð 7°RÐ 7Ð1°RÒ7Ð 7Ð 7Ð 7Ð 7Ð 7Ô 7Ð 7Ð 7Ð 7Ð 7Ð1°RÐ 7Ñ 7Ô 7Ð 7Ð 7Ð 7Ô 7Ñ 7Ô 7Ð 7Ð 7Ð 7Ð 7Ô 7ÐÑ 7Ô 7Ð 7Ð 7Ð 7Ô 7ÐÑ 7Ô 7Ð 7Ð 7Ð 7Ð 7Ô 7Ð*Ñ 7Ô 7Ð 7Ð 7Ô 7Ð1Ñ 7Ô 7Ð 7Ð 7Ô 7°RÑ 7Ô 7Ð 7Ð 7Ñ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ñ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ô 7Ð 7Ñ 7Ô 7Ñ 7Ô 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7ØÔ+Ð 8Ð+Ô2Ð 8°bÐ 8Ð2°bÒ8Ð 8Ð 8Ð 8Ð 8Ð 8Ô 8Ð 8Ð 8Ð 8Ð 8Ð2°bÐ 8Ñ 8Ô 8Ð 8Ð 8Ð 8Ô 8Ñ 8Ô 8Ð 8Ð 8Ð 8Ð 8Ô 8ÐÑ 8Ô 8Ð 8Ð 8Ð 8Ô 8ÐÑ 8Ô 8Ð 8Ð 8Ð 8Ð 8Ô 8Ð+Ñ 8Ô 8Ð 8Ð 8Ô 8Ð2Ñ 8Ô 8Ð 8Ð 8Ô 8°bÑ 8Ô 8Ð 8Ð 8Ñ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ñ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ô 8Ð 8Ñ 8Ô 8Ñ 8Ô 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ØÔ,Ð 9Ð,Ô3Ð 9°rÐ 9Ð3°rÒ9Ð 9Ð 9Ð 9Ð 9Ð 9Ô 9Ð 9Ð 9Ð 9Ð 9Ð3°rÐ 9Ñ 9Ô 9Ð 9Ð 9Ð 9Ô 9Ñ 9Ô 9Ð 9Ð 9Ð 9Ð 9Ô 9ÐÑ 9Ô 9Ð 9Ð 9Ð 9Ô 9ÐÑ 9Ô 9Ð 9Ð 9Ð 9Ð 9Ô 9Ð,Ñ 9Ô 9Ð 9Ð 9Ô 9Ð3Ñ 9Ô 9Ð 9Ð 9Ô 9°rÑ 9Ô 9Ð 9Ð 9Ñ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ñ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ô 9Ð 9Ñ 9Ô 9Ñ 9Ô 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ØÔ"Ð /Ð"Ô)Ð /¨RÐ /Ð)¨RÒ/Ð /Ð /Ð /Ð /Ð /Ô /Ð /Ð /Ð /Ð /Ð)¨RÐ /Ñ /Ô /Ð /Ð /Ð /Ô /Ñ /Ô /Ð /Ð /Ð /Ð /Ô /ÐÑ /Ô /Ð /Ð /Ð /Ô /ÐÑ /Ô /Ð /Ð /Ð /Ð /Ô /Ð"Ñ /Ô /Ð /Ð /Ô /Ð)Ñ /Ô /Ð /Ð /Ô /¨RÑ /Ô /Ð /Ð /Ñ /Ð /Ð /Ð /Ð /Ð /Ñ /Ð /Ð /Ð /Ð /Ð /Ô /Ð /Ñ /Ô /Ñ /Ô /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /ð1˜#ð 1 #ð 1ð 1ð 1ð 1ð
ð ˜sð ð ð ð ð  CFØ56ðð  #ð ¨%ð ¸%ð ØðØ/2ðð ð ð ð4=ð =ð =ð =ð
[ˆdð [ð [ð [ð [ð| ˆzÒÐØˆd‰fŒf€GØ€C„H�'Ð ˆQˆQ˜qÑ!Ô!Ð!Ð!Ð!ð Ðr(   