+
    „WÝjÄ<  ã            
      ó¬  € R t ^ RIHt ^ RIHtHtHt ^ RIHtH	t	H
t
HtHtHtHt R0tRtRtRtRtR1t]! R24      tRtR	tR
 R lt] ! R R4      4       tRRR^ /R R llt] ! R R4      4       tR R ltRRR]RR/R R lltRRR]/R R llt] ! R  R!4      4       t RRR"R/R# R$ llt!R3R% R& llt"R3R' R( llt#RRRRR)^R*RR+R/R, R- llt$R+R/R. R/ llt%R# )4ud  Context policy â€” the window ladder for managed local models.

One contract: any model runs at any window up to its native max; hardware and session depth only
change tokens/s. Constants, not knobs â€” nothing in this module reads config. The policy encodes
behavior measured on real hardware (llama.cpp, discrete NVIDIA on Windows/WDDM, unified-memory).
)Úannotations)Ú	dataclassÚfieldÚreplace)ÚHardwareBudgetÚ	LayerKindÚModelProfileÚPhysicsRefusalÚ	ctx_bytesÚfootprint_bytesÚphysics_checkç      ø?g333333ë?g      @g333333Ã?é   é   c               ó    € V ^8„  d   QhRRRR/# )é   ÚnativeÚintÚreturnú	list[int]© )Úformats   "Ú[C:\Users\johnn\AppData\Local\hermes\hermes-agent\hermes_cli\local_runtime\context_policy.pyÚ__annotate__r   (   s   € ÷ ñ �3ð ˜9ñ ó    c                ó¨   € . p\        \        4      pW 8  d*   VP                  \        V4      4       V\        ,          pK/  VP                  V 4       V# )zB64K -> 96K -> 128K -> ... -> native (native always the last rung).)ÚfloatÚFLOORÚappendr   Ú_LADDER_GROWTH)r   ÚrungsÚsteps   &  r   Úladderr"   (   s@   € à€EÜ”‹<€DØ
Œ-Ø�‰”S˜“YÔØ”ÕŠØ	‡L�L�ÔØ€Lr   c                  óh   € ] tR t^3t$ R]R&   R]R&   R]R&   ]! ]R7      tR]R&   ]R	 R
 l4       t	Rt
R# )ÚWindowDecisionr   ÚwindowÚspill_bytesÚboolÚ	kv_on_gpu)Údefault_factoryú	list[str]Úreasonsc               ó   € V ^8„  d   QhRR/# )r   r   r'   r   )r   s   "r   r   ÚWindowDecision.__annotate__;   s   € ÷ $ñ $˜ñ $r   c                	ó    € V P                   ^ 8„  # )é    )r&   )Úselfs   &r   ÚspilledÚWindowDecision.spilled:   s   € à×Ñ !Ñ#Ð#r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r   Úlistr+   Úpropertyr1   Ú__static_attributes__r   r   r   r$   r$   3   s3   ‡ àƒKØÓØƒOÙ¨tÔ4€GˆYÓ4àô$ó ô$r   r$   Úflash_attentionTÚoverhead_bytesc          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   Úprofiler   Úbudgetr   r;   r'   r<   r   r   úWindowDecision | PhysicsRefusalr   )r   s   "r   r   r   ?   s9   € ÷ 2[ñ 2[˜Lð 2[°.ð 2[ÐVZð 2[Ø#&ð2[Ø/Nñ2[r   c          
     óü  a aa€ \        S V\        SSR7      pV'       d   V# S P                  ;'       g    \        p\        V4      pR VV 3R llpR VVV 3R llpRp	V F  p
V! V
4      VP                  8”  d    MT
p	K   	  V	e&   V	\        \        V4      8¼  d   T	pRVR,           R	2pM‡\        VP                  \        ,          4      p\        \        V4      pV FD  p
W«8  d   K  V! V
4      V8”  g)   V! V
4      VP                  VP                  ,           8”  d    MT
pKF  	  R
VR,           R2pV! V4      p\        W¼.\        ^ V! V4      VP                  ,
          4      VS,           VP                  8*  R7      # )až  The launch decision: largest cheap rung, never below the floor.

Zero-spill rung: weights + ctx + overhead fit usable VRAM entirely. Bounded-early-cost rung
(weights already exceed VRAM): largest rung whose ctx stays <= ~15% of usable VRAM. Floor
everywhere, capped at native. ``overhead_bytes`` is runtime cost beyond weights+KV; zero keeps
this pure physics for decision-table tests, production callers pass it.
©r;   r<   c               ó    € V ^8„  d   QhRRRR/# ©r   Úrungr   r   r   )r   s   "r   r   Ú$initial_window.<locals>.__annotate__P   s   € ÷ Iñ I�ð I˜ñ Ir   c                ó    <€ \        SV SR 7      # )©r;   )r
   )rE   r;   r>   s   &€€r   ÚkvÚinitial_window.<locals>.kvP   s   ø€ Ü˜ $¸ÔHÐHr   c               ó    € V ^8„  d   QhRRRR/# rD   r   )r   s   "r   r   rF   S   s   € ÷ >ñ >�3ð >˜3ñ >r   c                ó"   <€ \        SV SSR 7      # )rB   )r   )rE   r;   r<   r>   s   &€€€r   ÚneedÚinitial_window.<locals>.needS   s   ø€ Ü˜w¨¸oØ.<ô>ð 	>r   Nzlargest zero-spill rung (é   úK)úfloor held at z4K; weights spill (deliberate price of the guarantee))r%   r+   r&   r(   )r   r   Ún_ctx_trainr"   Úusable_vram_bytesÚminr   Ú_EARLY_COST_CTX_FRACTIONÚram_available_bytesr$   Úmax)r>   r?   r;   r<   Úrefusalr   r    rI   rM   Úbest_zero_spillrE   r%   ÚreasonÚcapÚkv_bytess   f&dd           r   Úinitial_windowr]   ?   sq  ú€ ô ˜G V¬UÀOØ+9ô;€GçØˆà× Ñ ×)Ð)¤E€FÜ�6‹N€E÷Iñ I÷>ò >ð #'€OÛˆÙ�‹:˜×0Ñ0Ô0ÙØŠñ ð
 Ò" ¼#¼eÀVÓ:LÔ'LØ ˆØ,¨V°t­^Ð,<¸BÐ?‰ô �&×*Ñ*Ô-EÕEÓFˆÜ”U˜FÓ#ˆÛˆDØŒ}ÙÙ�4“˜3”Ù˜D“z F×$<Ñ$<¸v×?YÑ?YÕ$YÔYÙØŠFñ ð " &¨D¥.Ð!1Ð1eÐfˆá�&‹z€HÜ °Ü&)¨!©T°&«\¸F×<TÑ<TÕ-TÓ&UØ$,¨~Õ$=À×AYÑAYÑ$Yô[ð [r   c                  óD   € ] tR t^tt$ R]R&   R]R&   R]R&   RtR]R	&   R
tR# )Ú
LaunchPlanr@   Údecisionr'   Úmtp_prefillr   r<   NzModelProfile | Noner>   r   )r3   r4   r5   r6   r7   r>   r:   r   r   r   r_   r_   t   s   ‡ à-Ó-ØÓØÓØ#'€GÐ ×'r   r_   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r>   r   Úmtp_capabler'   ra   r   r   )r   s   "r   r   r   |   s/   € ÷ gñ g˜\ð g¸4ð gÈdð gÐWcñ gr   c               óš   € V'       g	   V'       g   \         M\        pV'       d   ^M^p\        W P                  V,          V,          R7      # )zž``profile`` at one launch posture: window-scaled compute buffers grow with the microbatch
launch_args passes, and MTP runs a second context beside the target.)Úwindow_compute_per_token)ÚPREFILL_UBATCHÚDEFAULT_UBATCHr   Úwindow_compute_bytes)r>   rc   ra   ÚubatchÚcontextss   &$$  r   Úposture_profilerk   |   s5   € ÷  +·+�^Ä>€Fß‰q Q€HÜ�7×5QÑ5QÐTZÕ5ZÐ]eÕ5eÔfÐfr   rc   FÚfixed_overheadÚrequested_windowNc               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r   r>   r   r?   r   rc   r'   rl   r   rm   ú
int | Noner   r_   r   )r   s   "r   r   r   „   s9   € ÷ 1ñ 1˜ð 1¨~ð 1Ètð 1Ø #ð1à",ð1à8Bñ1r   c               óB  a aaaaa
€ S'       d   S P                   R8X  d   \        S RR7      o / o
R VVV
VV V3R llpV! R4      pS'       g   V# V! R4      p\        VP                  \        4      '       d   V# \        VP                  \        4      '       d   V# VP                  P
                  VP                  P
                  8  d   V# VP                  P                  '       g   V# S
R,          S
R,          r˜S'       d�   \        V\        4      '       d‡   \        V	\        4      '       dq   VP                  '       g_   VP
                  V	P
                  8¼  dD   VP                  P
                  VP
                  8”  d   VP                  P                  '       d   V# V# )zöWindow first, then prefill; price both postures at the effective window.

A restored window may fit only under lean MTP. Evaluate it before discarding it because
stacked exceeds memory, and keep deliberate spill when neither posture is resident.
g      ð?g333333ó?)Úkv_scalec               ó    € V ^8„  d   QhRRRR/# )r   Ústackedr'   r   r_   r   )r   s   "r   r   Ú!plan_launch.<locals>.__annotate__‘   s   € ÷ @ñ @˜4ð @ Jñ @r   c                ó  <€ \        S
S	V R 7      pS\        S
P                  S	V R 7      ,           p\        VSVR7      pVSV &   \	        V\
        4      '       dª   S'       d¢   \        SS
P                  ;'       g    S4      pWCP                  8”  dr   \        VSWBR7       fa   \        WVR7      p\        V\        ^ VSP                  ,
          4      \        W4      V,           SP                  8*  RVR,           R2.R7      p\        W0W!4      # ))rc   ra   )r<   zgrown window restored (rO   rP   ©r%   r&   r(   r+   )rk   Úub_logits_bytesÚn_vocabr]   Ú
isinstancer$   rT   rR   r%   r   r   rW   rS   r
   r_   )rs   ÚpostureÚoverheadr`   ÚtargetrM   r?   rl   Úinitialrc   r>   rm   s   &     €€€€€€r   Ú	candidateÚplan_launch.<locals>.candidate‘   sÿ   ø€ Ü! '°{ÐPWÔXˆØ!¤OØ�O‰O¨À'ô%Kõ Kˆä! '¨6À(ÔKˆØ#ˆ�ÑÜ�h¤×/Ò/×4DÜÐ)¨7×+>Ñ+>×+RÐ+RÐBRÓSˆFØŸ™Ô'¬MØ˜V Vô-FØIMò-Nä& wÀxÔP�Ü)Ø!¬s°1°d¸V×=UÑ=UÕ6UÓ/VÜ'¨Ó8¸8ÕCÀv×G_ÑG_Ñ_Ø6°vÀµ~Ð6FÀbÐIÐJôL�ô ˜(¨XÓ?Ð?r   FT)rq   r   ry   r`   r	   r%   r1   r$   )r>   r?   rc   rl   rm   r~   Úleanrs   Ústacked_initialÚlean_initialr}   s   ffddd     @r   Úplan_launchrƒ   „   s4  ý€ ÷ �w×'Ñ'¨3Ô.Ü˜'¨CÔ0ˆà;=€G÷@õ @ñ" �UÓ€DßØˆÙ˜‹o€GÜ�'×"Ñ"¤N×3Ò3ØˆÜ�$—-‘-¤×0Ò0ØˆØ×Ñ×Ñ §¡×!5Ñ!5Ô5ØˆØ×Ñ×#×#Ð#Øˆà$+¨D¥M°7¸5µ>�\ßœZ¨¼×HÒHÜ˜<¬×8Ò8À×AX×AXÐAXØ×&Ñ&¨,×*=Ñ*=Ô=Ø× Ñ ×'Ñ'¨/×*@Ñ*@Ô@ÀTÇ]Á]×EZ×EZÐEZØˆØ€Kr   c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r   Úplanr_   r>   r   Úliver   rc   r'   rl   r   r   r   )r   s   "r   r   r   ¸   s9   € ÷ =ñ =˜Zð =°,ð =Ànð =Ø$(ð=à'*ð=àHRñ=r   c          
     ó6  € V P                   p\        V\        4      '       d   VP                  '       d   V # \	        WW4R7      p\        VP                   \        4      '       d¸   VP                   P                  '       gœ   VP                   P
                  VP
                  8¼  d   V # \        \        VP                   VP                   P
                  R,           RVP
                  R,           R2.R7      VP                  VP                  VP                  4      # \        \        VP                  ;'       g    \        4      pVP
                  V8:  d   V # \        \        V^ RRVR,           R2.R	7      V P                  V P                  V P                  4      # )
aœ  Narrow a resident capacity plan to the window the card's free memory holds now.

Only the window moves, and only down to the floor. A plan that already spills keeps its
placement, and so does a card too busy to hold even the floor: moving weights to the CPU on a
live reading is how a launch once pinned a fitting model to the CPU, because the reading still
counted memory the outgoing server was about to free.
)rc   rl   rO   z*K fits beside other programs' GPU memory (zK would not))r+   TrQ   z-K; other programs hold most of the GPU memoryrv   )r`   ry   r$   r1   rƒ   r%   r_   r   ra   r<   r>   rT   r   rR   )r…   r>   r†   rc   rl   r`   ÚnowÚfloors   &&&$$   r   Úfit_to_free_memoryrŠ   ¸   sQ  € ð �}‰}€HÜ�h¤×/Ò/°8×3C×3CÐ3CØˆÜ
�g°Ô
\€CÜ�#—,‘,¤×/Ò/¸¿¹×8L×8LÐ8LØ�<‰<×Ñ (§/¡/Ô1ØˆKÜœ' #§,¡,Ø�|‰|×"Ñ" dÕ*Ð+ð ,Ø—‘ 4Õ'Ð(¨ð6ð97ô 8à9<¿¹È#×J\ÑJ\Ð^a×^iÑ^iókð 	kô ”�w×*Ñ*×3Ð3¬eÓ4€EØ‡�˜%ÔØˆÜ”n¨E¸qÈDØ
˜ $�˜Ð'TÐUð[Wô Xà×Ñ˜$×-Ñ-¨t¯|©|ó=ð =r   c                  ó>   € ] tR t^Ôt$ R]R&   RtR]R&   RtR]R&   RtR# )	ÚGrowthDecisionÚstrÚactionNro   Únext_windowÚ rZ   r   )r3   r4   r5   r6   r7   r�   rZ   r:   r   r   r   rŒ   rŒ   Ô   s   ‡ àƒKØ"€K�Ó"Ø€FˆC×r   rŒ   Úoccupancy_confirmedc               ó<   € V ^8„  d   QhRRRRRRRRRR	R
RRRRRRR/	# )r   r>   r   r?   r   Úcurrent_windowr   Úsession_tokensÚmeasured_decode_tok_szfloat | NoneÚserver_idler'   r;   r‘   r   rŒ   r   )r   s   "r   r   r   Û   sb   € ÷ &\ñ &\˜\ð &\°>ð &\Ø$'ð&\Ø9<ð&\ØUað&\à!%ð&\à8<ð&\ð *.ð&\ð ;Iñ&\r   c          	     ó@  a€ V'       g    VS\         ,          8  d   \        RRR7      # V P                  ;'       g    SpSV8¼  d   \        RRR7      # V'       g   \        RRR7      # Ve&   V\        8  d   \        RRVR R	\        R
 R2R7      # \	        V3R l\        V4       4       V4      p	\        W	VR7      p
V P                  V
,           VP                  VP                  ,           8”  d   \        RRR7      # \        RV	RSR,           RV	R,           R2R7      # )uÙ  One growth evaluation, END-OF-TURN ONLY (recurrent state cannot rewind mid-sequence).

Gate order: occupancy (~85%) â†’ native cap â†’ idleness (growth only on an otherwise-idle
server) â†’ speed floor (below it compression is the default) â†’ re-fit against LIVE free memory
(the rung must fit NOW, not at launch). ``occupancy_confirmed`` skips gate 1 when the caller's
own compression gate already fired, so two edge definitions can't deadlock into
compress-before-grow.
Úholdzsession below growth occupancy)rZ   zcompress-defaultz.at native window; compression is the only movez&server busy; re-grant deferred to idlezdecode z.1fz tok/s below the ~z.0fz: tok/s floor; growth is now an explicit per-session choicec              3  ó8   <"  € T F  qS8”  g   K  Vx € K  	  R # 5i©Nr   )Ú.0Úrr“   s   & €r   Ú	<genexpr>Ú"growth_decision.<locals>.<genexpr>ø   s   øé € ÐF¡˜A°~Ñ3E—a’a£ùs   ƒ�
rH   z.next rung exceeds physics; compression insteadÚgrowzrung rO   zK -> ÚK)r�   rZ   )
Ú_GROW_AT_OCCUPANCYrŒ   rR   ÚSPEED_FLOOR_TOK_SÚnextr"   r
   Úweights_bytesrS   rV   )r>   r?   r“   r”   r•   r–   r;   r‘   r   Ú	next_rungrI   s   &&d$$$$$   r   Úgrowth_decisionr¦   Û   s+  ø€ ÷  >°NÔEWÕ4WÔ#WÜ˜fÐ-MÔNÐNà× Ñ ×2Ð2 N€FØ˜ÔÜÐ0Ð9iÔjÐjçÜ˜fÐ-UÔVÐVàÒ(Ð-BÔEVÔ-VÜØØÐ3°CÐ8ð 9Ü)¨#Ð.ð /2ð2ô4ð 	4ô ÔF¤¨¤ÓFÈÓO€Iô 
�7°Ô	G€BØ×Ñ˜rÕ! F×$<Ñ$<¸v×?YÑ?YÕ$YÔYÜÐ0Ð9iÔjÐjä˜&¨iØ#(¨¸4Õ)?Ð(@ÀÀiÐSWÕFWÐEXÐXYÐ!Zô\ð \r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r>   r   r&   ro   r   r   r   )r   s   "r   r   r     s"   € ÷ ñ  Lð ¸zð ÐU^ñ r   c                ó¬  a € \        S P                  4       UUUu. uF!  w  pw  r4V\        P                  8X  g   K  VNK#  	  ppppVeA   \        ;QJ d    V 3R lV 4       F  '       g   K   RM	  RM! V 3R lV 4       4      '       d   V# . p^ pV F7  pWq8¼  d    V# VP                  V4       VS P                  V,          ,          pK9  	  V# u upppi )ab  Recurrent (n_head_kv==0) block indices whose FFN weights cover ``spill_bytes``.

Takes the fewest blocks, lowest index first (llama.cpp's -ngl also keeps the front blocks on
the host). Every recurrent block when ``spill_bytes`` is None, when any recurrent block's FFN
size is unknown, or when all of them together still fall short (fit spills the rest).
c              3  ó@   <"  € T F  qSP                   9  x € K  	  R # 5irš   )Úffn_block_bytes)r›   Úir>   s   & €r   r�   Ú)recurrent_spill_blocks.<locals>.<genexpr>  s   øé € Ð!VÉIÀq¨7×+BÑ+BÖ"BËIùs   ƒTF)Ú	enumerateÚlayersr   Ú	RECURRENTÚanyr   rª   )r>   r&   r«   ÚkindÚ_Ú	recurrentÚchosenÚcovereds   f&      r   Úrecurrent_spill_blocksr¶     s¹   ø€ ô (1°·±Ô'@Õ`Ñ'@‘|�q™)˜4ÀDÌI×L_ÑL_ÑD_—�Ñ'@€IÒ`ØÒŸc›cÔ!VÉIÓ!VŸcŸcšcÔ!VÉIÓ!V×VÒVØÐØ€FØ€GÛˆØÔ!Øð €Mð 	�‰�aÔØ�7×*Ñ*¨1Õ-Õ-Šñ	 ð
 €Mùô as
   ›C¼Cc               ó$   € V ^8„  d   QhRRRRRR/# )r   r>   r   r&   ro   r   r*   r   )r   s   "r   r   r     s!   € ÷ 
ñ 
˜\ð 
¸
ð 
Èiñ 
r   c           	     ó¸   € V P                   '       d   RR.# \        W4      pV'       d1   RRP                  RP                  \	        \
        V4      4      4      .# . # )a1  -ot placement for spilled configs: expert/FFN weights to host so attention + KV stay
GPU-resident. MoE gets the expert pattern; hybrids push the FFNs of just enough recurrent
blocks to cover ``spill_bytes`` (their n_head_kv==0 layers carry no KV worth protecting, and
full-attention FFNs stay on the GPU).z-otz!blk\.\d+\.ffn_.*_exps\.weight=CPUzblk\.({})\.ffn_.*\.weight=CPUÚ|)Úmoer¶   r   ÚjoinÚmapr�   )r>   r&   Úblockss   && r   Úspill_overridesr¾     sS   € ð
 ‡{‡{€{ØÐ;Ð<Ð<Ü# GÓ9€FßØÐ7×>Ñ>¸s¿x¹xÌÌCÐQWÓHXÓ?YÓZÐ[Ð[Ø€Ir   Úmtp_draft_depthÚumara   c               ó8   € V ^8„  d   QhRRRRRRRRRR	R
RRRRR/# )r   r>   r   r`   r$   r;   r'   rc   r¿   r   rÀ   ra   r   r*   r   )r   s   "r   r   r   %  sJ   € ÷ ñ ˜ð °ð ÐUYð Ø!ðØ<?ðØJNðà!ðà.7ñr   c               óš  € R\        VP                  4      .pV'       d<   VRRR\        V4      RR.,          pV'       d   VRRR	\        \        4      .,          pM'VR\        \        4      R	\        \        4      .,          pV'       d   V. R
O,          pVP                  '       d%   V'       g   V\	        WP
                  4      ,          pV# )uË   Per-model launch flags from a window decision. Explicit -c puts fit into
spill-weights-and-hold-ctx; q8 KV cache wherever flash attention exists; -ot placement on
spilled configs â€” DISCRETE cards only.z-cz--spec-typez	draft-mtpz--spec-draft-n-maxz--backend-samplingz--spec-draft-backend-samplingz-bÚ4096z-ub)z-ctkÚq8_0z-ctvrÄ   z-faÚon)r�   r%   rf   r1   r¾   r&   )r>   r`   r;   rc   r¿   rÀ   ra   Úargss   &&$$$$$ r   Úlaunch_argsrÇ   %  s®   € ð ”#�h—o‘oÓ&Ð'€DßØ� Ð-AÄ3ÀÓCWØ%Ð'FðHõ 	HˆçØ�T˜6 5¬#¬nÓ*=Ð>Õ>ˆDøà�”sœ>Ó*¨E´3´~Ó3FÐGÕGˆßØÒ=Õ=ˆØ××Ð§Ø” ×)=Ñ)=Ó>Õ>ˆØ€Kr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   rx   r   rc   r'   ra   r   r   )r   s   "r   r   r   :  s)   € ÷ 	ñ 	˜Sð 	°$ð 	ÀTð 	ÐVYñ 	r   c               óê   € \        ^ \        V 4      4      pV'       d)   V'       d!   \        RV,          ^,          R,          4      # V'       d   RV,          ^,          ^,          # RV,          ^,          # )zÈGPU logits/compute-buffer cost of the microbatch posture chosen by launch_args, priced from
the model's own vocab and calibrated against measured server RSS (Qwen3.8 Q4, both postures,
three windows).r   r   r   )rW   r   )rx   rc   ra   Úvs   &$$ r   rw   rw   :  sT   € ô 	ˆAŒs�7‹|Ó€Aß—{Ü�4˜!•8˜a•< #Õ%Ó&Ð&ßØ�Q�w˜�{˜Q�ÐØ�!�8�a�<Ðr   i   i @ g      ØArš   )&Ú__doc__Ú
__future__r   Údataclassesr   r   r   Ú"hermes_cli.local_runtime.estimatorr   r   r   r	   r
   r   r   r   r   r¡   r¢   rU   ÚTARGET_WINDOWr   ÚRUNTIME_OVERHEAD_BYTESrg   rf   r"   r$   r]   r_   rk   rƒ   rŠ   rŒ   r¦   r¶   r¾   rÇ   rw   r   r   r   Ú<module>rÑ      sg  ðñõ #ç 1Ñ 1÷÷ ñ ð 	€Ø€ØÐ ØÐ ØÐ ð €ñ ˜_Ó-Ð ð €Ø€õð ÷$ð $ó ð$ð2[Ð]að 2[Ø)*÷2[ðj ÷(ð (ó ð(õgð1ÐV[ð 1Ø&<ð1à/3÷1ðh=Ø+0ð=à-C÷=ð8 ÷ð ó ðð&\à?Cð&\ð 16÷&\÷R÷(
ðÐ\`ð Ø$)ðØBCðØQVðà$)÷ð*	ÈE÷ 	ñ 	r   