+
    ~jx                         R t ^ RIHt ^ RIt^ RIHtHtHtHtH	t	 ^ RI
HtHt ^RIHt ^RIHtHtHtHtHt ^RIHt ^RIHt ]P2                  ! ]4      t/ R	R
RRR/b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RR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RRRRR R!R!/
b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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RRRR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RRRRR R!R!/
bR0RRRRRRRRRRRRR1RRRRRRR R!R!R%R&R'R(/bR2RRRRRRRRRRRRRRRRRR R!R!/
bR3R4R5R6R7R8R9R:R;/b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!R@RA/bRBRRCRRDRRERRFR1RGRRHRRR@RARIRJRKRKR!R!/bRLRRRRRRRRRRRRRRR@RMR!R!/	bRNRR>RRORRPRRRR?R@RA/bRQRRRRRRRRRRRRR@RR/bRSR!R!RRRRRRARRRTRURVRWRXRYRZR/	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R1RRRRRRR R^R+R!R!/R_RRRRRRRRRRRRR1RRRRRRR R^R+R!R!/R`RRCRRDRRERRFR1RGRRHRRR@RARIRJRKRKR!R!/RaRRRRRRRRRRRRRRRRRR R!R!/
Rb/ RRbRRbRRbRRbRRcbRRbRRbRRbR1RbRdRbRR bR%R*bR'R(bReRbR!R!bRfRgb/CtR3RhRiRjRkRlRmRnRoRpRqR4R5R6R7R8R9R:R;RrRs/
RtRuRuRhRR4R5R6R7R8R9R:R;//tR0RvRw/RbRxRw//tRy t ! Rz R{4      t  ! R| R}]4      t! ! R~ R]4      t" ! R R]4      t# ! R R]4      t$ ! R R]4      t% ! R R]4      t&/ R]!bR#]"bR$]"bR/]"bR0]"bR<]#bR=]$bR2]$bRL]$bRN]$bRQ]$bRB]%bRS]$bR[]$bR]]&bR]&bR`]%bRa]!R]!Rb]"/Ct'R R lt(R# )z
Integration with GGML / The file is copied and adapted from https://github.com/99991/pygguf
with extra methods beings exposed
)arrayN)	Tokenizerdecodersnormalizerspre_tokenizers
processors)BPEUnigram)
AddedToken)GemmaConverterGPT2ConverterLlamaConverterQwen2ConverterT5Converter)logging)tqdmgeneralarchitecture
model_typename_model_name_or_pathllamacontext_lengthmax_position_embeddingsblock_countnum_hidden_layersfeed_forward_lengthintermediate_sizeembedding_lengthhidden_sizezrope.dimension_counthead_dimzrope.freq_base
rope_thetazattention.head_countnum_attention_headszattention.head_count_kvnum_key_value_headsz attention.layer_norm_rms_epsilonrms_norm_eps
vocab_sizemistralqwen2	qwen2_moeexpert_countnum_expertsexpert_used_countnum_experts_per_tokgpt_ossnum_local_expertssliding_windowlfm2zshortconv.l_cacheconv_L_cacheqwen3	qwen3_moezattention.key_lengthfalcon	tokenizerzggml.bos_token_idbos_token_idzggml.eos_token_ideos_token_idzggml.unknown_token_idunk_token_idzggml.padding_token_idpad_token_idphi3bloomn_layern_headzattention.layer_norm_epsilonlayer_norm_epsilont5n_positions
num_layersd_ffd_modeld_kv	num_headsz attention.relative_buckets_countrelative_attention_num_bucketsdecoder_start_token_idstablelmlayer_norm_epsgpt2n_ctxn_embd
starcoder2norm_epsilonmambazssm.conv_kernelconv_kernelzssm.state_size
state_sizezssm.time_step_ranktime_step_rankzssm.inner_sizenemotronnorm_epsgemma2zattention.sliding_windowgemma3umt5deci
minimax_m2
rotary_dimzattention.value_lengthexpert_feed_forward_lengthexpert_gating_funcscoring_funcz
ggml.modeltokenizer_typezggml.tokenstokenszggml.scoresscoreszggml.token_type
token_typezggml.mergesmergeszggml.add_space_prefixadd_prefix_spacetokenizer_configchat_templatenorm_topk_probTuse_routing_biasc                    \        V\        4      '       g   V.p\        V4      ^8X  d   V^ ,          pRpMV^ ,          ^	8w  d   \        R4      hVw  rVR9   d   \	        V ^ ,          4      p V # VR9   d   \        V ^ ,          4      p V # V^8X  d   \        V ^ ,          4      p V # V^8X  d4   \        R\        V 4      4      P                  4       P                  4       p V # V^	8X  d   \        W4      p V # )   NzPReceived multiple types, therefore expected the first type to indicate an array.B)    ri               
      )      )
isinstancelistlen
ValueErrorintfloatboolr   tobytesdecode_gguf_parse_value)_value	data_typearray_data_types   && s/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/transformers/integrations/ggml.pyr}   r}   m  s    i&&K	
9~aL	Q<1opp%."	..VAY M 
g	vay! M 
afQi
 M	 
asDL)113::< M 
a"6;M    c                   &   a  ] tR tRt o R tRtV tR# )GGUFTokenizerSkeletoni  c                  a VP                  4        F  w  r#\        WV4       K  	  \        V R 4      '       EgI   \        V R4      '       d   \        V R4      '       g   \        R4      hV P                  pV P
                  p\        V4       UUu/ uF  w  rgWuV,          bK  	  uppo\        P                  R4       . p\        SP                  4       4       Fq  w  r. p\        ^\        V	4      4       F.  pV	RV WR rW9   g   K  W9   g   K  VP                  WV
34       K0  	  \        VV3R lRR7      pVP                  V4       Ks  	  \        VR	 RR7      pV Uu. uF  q^ ,          V^,          3NK  	  ppWn        M~V P                   U	u. uF  p	\!        V	P#                  R
4      4      NK  	  up	V n        \        V R4      '       g4   \        \        V P                  4      4       Uu. uF  pRNK  	  upV n        \        V R4      '       g   . V n        \        V R4      '       g   RV n        \        V R4      '       d$   V P&                  f   V P(                  V n        R# R# R# u uppi u upi u up	i u upi )rb   r_   r`   z\tokens and scores need to be passed for a LLaMa tokenizer without merges to be instantiated.z:Merges were not in checkpoint, building merges on the fly.Nc                 D   < SV ^ ,          ,          SV ^,          ,          3# )rk    )xvocabs   &r   <lambda>0GGUFTokenizerSkeleton.__init__.<locals>.<lambda>  s    U1Q4[%!+4Nr   T)keyreversec                     V ^,          # )rl   r   )vals   &r   r   r     s    CFr    added_tokensr8   unknown_token_id)itemssetattrhasattrrw   r_   r`   	enumerateloggerwarningr   rangerv   appendsortedextendrb   tuplesplitr   r8   r   )selfdict_kvr_   r`   itrb   mergepiece_scorelocalindexpiece_lpiece_rr   _r   s   &&               @r   __init__GGUFTokenizerSkeleton.__init__  s   KKMDADQ " tX&&4**'$2I2I r  [[F[[F.7.?@.?daQq	\.?@ENNWXF&*5;;=&9""1c%j1E',Ve}eFmW(W->g%DE 2 u*NX\]e$ ': F(:DIF289&31vs1v&&F9 K@DLu5S!12LDK4**-23t{{3C-DE-Dt-DEt^,, "Dt^,, $D 4+,,1B1B1J $ 5 5D 2K,7 A : MEs   I)I/#I4-I9)r   rb   r`   r8   N)__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classdict__s   @r   r   r     s     '6 '6r   r   c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
GGUFLlamaConverteri  c                    \        V4      V n        V P                  V n        / V n        \	        V P                  R R4      R8g  V n        R# )r^   r   N)r   protooriginal_tokenizeradditional_kwargsgetattris_llama_3_tokenizerr   tokenizer_dicts   &&r   r   GGUFLlamaConverter.__init__  s>    *>:
"&**!#$+DJJ8H'$RV]$]!r   c                T    \        \        VP                  VP                  4      4      # Nru   zipr_   r`   r   r   s   &&r   r   GGUFLlamaConverter.vocab      Cell344r   c                    VP                   # r   rb   r   s   &&r   rb   GGUFLlamaConverter.merges      ||r   c                *   V P                  V P                  4      pV P                  V P                  4      p\        V4       UUUu/ uF
  w  pw  rVWTbK  	  ppppVP                  e   VP
                  VP                  ,          MR p\        VRR 4      e   VP
                  VP                  ,          MR p	\        VRR 4      e   VP
                  VP                  ,          MR p
\        \        VVVRRR7      4      p. p\        V P                  R4      '       ge   Ve   VP                  \        VRRR7      4       V	e   VP                  \        V	RRR7      4       V
e   VP                  \        V
RRR7      4       M\        P                  ! \        P                  ! V P                  P                   4      ^8H  4      ^ ,          pV F;  pVP                  \        V P                  P
                  V,          RRR7      4       K=  	  \#        V4      ^ 8w  d   VP%                  V4       \#        V P                  P&                  4      ^ 8w  dB   TP)                  V P                  P&                   Uu. uF  p\        VRRR7      NK  	  up4       WP*                  R&   WP*                  R	&   WP*                  R
&   V P,                  '       d?   R V P*                  R&   RV P*                  R&   RV P*                  R&   RV P.                  n        V# u upppi u upi )Nr6   r7   T)	unk_tokenfuse_unkbyte_fallbackra   F
normalizedspecialr   	eos_token	bos_tokenrc   clean_up_tokenization_spaceslegacy)r   r   rb   r   r8   r_   r   r6   r   r   r   r   r
   npwherer   ra   rv   add_special_tokensr   
add_tokensr   r   r   r   )r   r   vocab_scoresrb   r   word_score	bpe_vocabr   r   r   r5   special_tokensspecial_tokens_idxidxadded_tokens   &&              r   r5   GGUFLlamaConverter.tokenizer  s   zz$**-TZZ(6?6MN6M!2NTTW6M	N8=8J8J8VELL!3!34\`	8?~W[8\8hELL!3!34nr	8?~W[8\8hELL!3!34nr	#"
	 tzz<00$%%juVZ&[\$%%juVZ&[\$%%juVZ&[\ "$"((4::3H3H*IQ*N!OPQ!R)%%j1B1B31GTYcg&hi * ~!#((8tzz&&'1,  ]a]g]g]t]tu]tkKE5I]tu /8{+.7{+.7{+$$$9=D""#56EID""#AB/4D""8,-2D##*k ON vs   L	/Lc                d   \         P                  ! 4       \         P                  ! 4       \         P                  ! R R4      .pV P                  '       d"   V\         P
                  ! RRRR7      .,          pV'       d!   V\         P                  ! R^R7      .,          p\         P                  ! V4      # )   ▁r   FTrc   trim_offsets	use_regexcontentleft)r   ByteFallbackFuseReplacer   	ByteLevelStripSequencer   replacementrc   sequences   &&& r   decoderGGUFLlamaConverter.decoder  s    !!#MMOUC(
 $$$++UQVbfghhH!<==H  **r   c                &   V P                  V P                  4      pV P                  V P                  4      pVe   W!n        RpRp\        V P                  R4      '       d   V P                  P
                  pV P                  W44      pVe   WQn        V P                  W44      Vn        V P                  4       pV'       d   Wan        V P                  '       d:   \        P                  ! RRRR7      Vn        \        P                  ! . 4      Vn        V# )Nr   Trc   Fr   )r5   r   
normalizerr   r   rc   pre_tokenizerr   post_processorr   r   r   r   r   )r   r5   r   r   rc   r   r   s   &      r   	convertedGGUFLlamaConverter.converted  s    NN4::.	 __TZZ0
!#- 4**,>??#66GG**;I$&3# LLG	,,.'5$ $$$&4&>&>!&Ud'I#
 $/#7#7#;I r   )r   r   r   r   Nr   r   r   r   r   r   rb   r5   r   r   r   r   r   s   @r   r   r     s*     ^58t+! !r   r   c                   D   a a ] tR tRt oR tV3R lV 3R lltRtVtV ;t# )GGUFQwen2Converteri)  c                4    \        V4      V n        / V n        R # r   r   r   r   r   s   &&r   r   GGUFQwen2Converter.__init__*      "7"G!#r   c                    < V ^8  d   QhRS[ /# rl   returnr   )formatr   s   "r   __annotate__GGUFQwen2Converter.__annotate__.  s      9 r   c           
     2  < \        V P                  P                  4       UUu/ uF  w  rW!bK	  	  pppV P                  P                  p\        SV `  W44      pVP                  \        R RRR7      \        RRRR7      \        RRRR7      .4       V# u uppi )<|endoftext|>FTr   z<|im_start|>z
<|im_end|>)r   r   r_   rb   superr   r   r
   r   r   r   r   rb   r5   	__class__s   &     r   r   GGUFQwen2Converter.converted.  s    (1$2I2I2P2P(QR(QWQ(QR((//G%e4	$$?udK>eTJ<E4H	
  Ss   Br   r   	r   r   r   r   r   r   r   r   __classcell__r  r   s   @@r   r   r   )  s     $  r   r   c                   P   a  ] tR tRt o R tR tR tR tR tV 3R lR lt	R	t
V tR
# )GGUFPhi3Converteri=  c                V    \        V4      V n        V P                  V n        / V n        R # r   r   r   r   r   r   s   &&r   r   GGUFPhi3Converter.__init__>  s"    *>:
"&**!#r   c                T    \        \        VP                  VP                  4      4      # r   r   r   s   &&r   r   GGUFPhi3Converter.vocabC  r   r   c                    VP                   # r   r   r   s   &&r   rb   GGUFPhi3Converter.mergesF  r   r   c                0   V P                  V P                  4      pV P                  V P                  4      p\        V4       UUUu/ uF
  w  pw  rVWTbK  	  pppp\	        \        Ws4      4      pVP                  \        R RRRRR7      \        RRRR7      \        RRRRR7      \        RRRRR7      \        R	RRRR7      \        R
RRRR7      \        RRRRR7      \        RRRRR7      \        RRRRR7      \        RRRRR7      \        RRRRR7      \        RRRRR7      .4       VP                  e   VP                  VP                  ,          MRV P                  R&   VP                  e   VP                  VP                  ,          MRV P                  R&   VP                  e   VP                  VP                  ,          MRV P                  R&   VP                  e   VP                  VP                  ,          MRV P                  R&   V# u upppi )</s>TF)rstriplstripr   r   r  r   z<|assistant|>)r   r   r   z<|placeholder1|>z<|placeholder2|>z<|placeholder3|>z<|placeholder4|>z
<|system|>z<|end|>z<|placeholder5|>z<|placeholder6|>z<|user|>Nr   r   r   	pad_token)r   r   rb   r   r   r   r   r
   r8   r_   r   r7   r6   r9   )	r   r   r   rb   r   r   r   r   r5   s	   &&       r   r5   GGUFPhi3Converter.tokenizerI  s   zz$**-TZZ(6?6MN6M!2NTTW6M	Nc)45	$$6$uX\]?udK?4ESWX-duVZ[-duVZ[-duVZ[-duVZ[<PTU9TeTR-duVZ[-duVZ[:dudS	
$ 160B0B0NELL++,TX 	{+ 160B0B0NELL++,TX 	{+ 160B0B0NELL++,TX 	{+ 160B0B0NELL++,TX 	{+ E Os   Hc                    \         P                  ! 4       \         P                  ! 4       \         P                  ! VR 4      .pV'       d!   V\         P                  ! R ^R7      .,          p\         P
                  ! V4      # )r   r   )r   r   r   r   r   r   r   s   &&& r   r   GGUFPhi3Converter.decoderp  s\    !!#MMO[#.
 !<==H  **r   c                    < V ^8  d   QhRS[ /# r  r  )r  r   s   "r   r	  GGUFPhi3Converter.__annotate__{  s     
 
9 
r   c                    V P                  V P                  4      pR pRp\        V P                  R4      '       d   V P                  P                  pV P                  W#4      Vn        V# )r   Trc   )r5   r   r   r   rc   r   )r   r5   r   rc   s   &   r   r   GGUFPhi3Converter.converted{  s\    NN4::.	4**,>??#66GG LLG	r   r   r   r   Nr   r   s   @r   r  r  =  s)     $
5%N	+
 
r   r  c                   D   a a ] tR tRt oR tV3R lV 3R lltRtVtV ;t# )GGUFGPTConverteri  c                4    \        V4      V n        / V n        R # r   r  r   s   &&r   r   GGUFGPTConverter.__init__  r  r   c                    < V ^8  d   QhRS[ /# r  r  )r  r   s   "r   r	  GGUFGPTConverter.__annotate__  s      9 r   c                   < \        V P                  P                  4       UUu/ uF  w  rW!bK	  	  pppV P                  P                  p\        SV `  W44      pV# u uppi r   )r   r   r_   rb   r  r   r  s   &     r   r   GGUFGPTConverter.converted  sZ    (1$2I2I2P2P(QR(QWQ(QR((//G%e4	 Ss   Ar  r  r  s   @@r   r,  r,    s     $  r   r,  c                   J   a  ] tR tRt o R tR tR tR tV 3R lR ltRt	V t
R	# )
GGUFT5Converteri  c                    R .VR&   \        V4      V n        \        V P                  P                  4       UUu/ uF  w  r#W2bK	  	  uppV n        V P                  V n        / V n        R# u uppi z
dummy textrb   N)r   r   r   r_   token2idr   r   )r   r   r   r   s   &&  r   r   GGUFT5Converter.__init__  s_    $0>x *>:
*3DJJ4E4E*FG*F$!*FG"&**!# Hs   A)c                T    \        \        VP                  VP                  4      4      # r   r   r   s   &&r   r   GGUFT5Converter.vocab  r   r   c                (   \        V P                  R R4      '       du   . p\        V P                  RR4      '       d    V\        P                  ! RR7      .,          pV\        P                  ! RRR7      .,          p\        P
                  ! V4      # R# )r   Trc   r   )prependr   )patternr   N)r   r   r   Prependr   r   )r   r   r   s   && r   r   GGUFT5Converter.normalizer  sx    4**Hd;;Ht..0BDII[00?@@,,S%HIIH''11r   c                d    \         P                  ! R R.. RORV P                  R,          3.R7      # )$Ar  )singlepairr   )rA  r  z$Br  )r   TemplateProcessingr7  )r   s   &r   r   GGUFT5Converter.post_processor  s5    ,,&>-v./
 	
r   c                    < V ^8  d   QhRS[ /# r  r  )r  r   s   "r   r	  GGUFT5Converter.__annotate__  s      9 r   c                   V P                  V P                  4      p\        \        VV P                  P                  R R7      4      pV P                  V P                  4      pVe   W2n        RpRp\        V P                  R4      '       d   V P                  P                  pV P                  WE4      pVe   Wbn	        V P                  WE4      Vn
        V P                  4       pV'       d   Wrn        V# )Funk_idr   r   Trc   )r   r   r   r	   r8   r   r   r   rc   r   r   r   )r   r   r5   r   r   rc   r   r   s   &       r   r   GGUFT5Converter.converted  s    zz$**-zz..#
	 __TZZ0
!#- 4**,>??#66GG**;I$&3# LLG	,,.'5$r   )r   r   r   r7  N)r   r   r   r   r   r   r   r   r   r   r   r   s   @r   r4  r4    s#     $5
 r   r4  c                   J   a  ] tR tRt o R tR tR tR tV 3R lR ltRt	V t
R	# )
GGUFGemmaConverteri  c                b    R .VR&   \        V4      V n        V P                  V n        / V n        R# r6  r  r   s   &&r   r   GGUFGemmaConverter.__init__  s.    $0>x *>:
"&**!#r   c                d   \        \        VP                  VP                  4      4      p. pV F~  w  rEVR 8X  d   VP	                  RV34       K!  RV9   dE   \        VP                  4       4      ^ 8X  d'   R\        V4      ,          pVP	                  We34       Kl  VP	                  WE34       K  	  V# )z<0x09>	r   r   )ru   r   r_   r`   r   rv   strip)r   r   original_vocabupdated_vocabtokenscoreunderscoress   &&     r   r   GGUFGemmaConverter.vocab  s    c%,,=>*LE $$dE]3#ekkm"4"9#c%j0$$k%9:$$e^4 + r   c                0    \         P                  ! R R4      # )r   r   )r   r   r   s   &&r   r   GGUFGemmaConverter.normalizer  s    ""3..r   c                    \         P                  ! R R4      \         P                  ! 4       \         P                  ! 4       .pV'       d!   V\         P                  ! R^R7      .,          p\         P
                  ! V4      # )r   r   r   )r   r   r   r   r   r   r   s   &&& r   r   GGUFGemmaConverter.decoder  s\    UC(!!#MMO
 !<==H  **r   c                    < V ^8  d   QhRS[ /# r  r  )r  r   s   "r   r	  GGUFGemmaConverter.__annotate__  s      9 r   c                   V P                  V P                  4      p\        \        VV P                  P                  V P
                  R 7      4      pV P                  V P                  4      pVe   W2n        RpRp\        V P                  R4      '       d   V P                  P                  pV P                  WE4      Vn
        V P                  WE4      pVe   Wbn        V# )rI  r   Trc   )r   r   r   r	   r8   handle_byte_fallbackr   r   r   rc   r   r   )r   r   r5   r   r   rc   r   s   &      r   r   GGUFGemmaConverter.converted  s    zz$**-zz.."77
	 __TZZ0
!#- 4**,>??#66GG LLG	**;I$&3#r   r*  N)r   r   r   r   r   r   r   r   r   r   r   r   s   @r   rM  rM    s#     $/	+ r   rM  gemma3_textdecilmc                R    V ^8  d   QhR\         R\        \        \        3,          /# )rl   r   r  )strr   r   dict)r  s   "r   r	  r	  ,  s$     7 7 7yRVAW 7r   c                f    T p\         V,          ! V4      pVP                  4       pWCP                  3# )a  
Utilities to convert a slow tokenizer instance in a fast tokenizer instance.

Args:
    architecture (`str`): The model architecture derived from gguf file.
    transformer_tokenizer ([`~tokenization_utils_base.PreTrainedTokenizer`]):
        Instance of a slow tokenizer to convert in the backend tokenizer for
        [`~tokenization_utils_base.PreTrainedTokenizerFast`].

Return:
    A instance of [`~tokenizers.Tokenizer`] to be used as the backend tokenizer of a
    [`~tokenization_utils_base.PreTrainedTokenizerFast`]
)GGUF_TO_FAST_CONVERTERSr   r   )r   r   tokenizer_class_name	converterfast_tokenizers   &&   r   convert_gguf_tokenizerrl  ,  s7     ('(<=nMI((*N6666r   ))__doc__r   numpyr   
tokenizersr   r   r   r   r   tokenizers.modelsr   r	    r
   convert_slow_tokenizerr   r   r   r   r   utilsr   utils.loggingr   
get_loggerr   r   GGUF_CONFIG_MAPPINGGGUF_TOKENIZER_MAPPINGGGUF_CONFIG_DEFAULTS_MAPPINGr}   r   r   r   r  r,  r4  rM  rh  rl  r   r   r   <module>ry     s	  
   S S *  o o    
		H	%`%`
 3*2M
, 5!#8*Nl`$ 3*2M
, 5!#8*Nl%`> 3*2M, 5!#8*Nl?`V 3*2M, 5!#8*Nl2W`r 3*2M, 5!#8*Nl+2*s`P 3*2M, 5!#8*Nl^Q`j 3*2M, 5!#8*Nlk`B 3*2M,
 5!#8*Nl2C`` 3*2M, 5!#8*Nla`x ^^	y`D 3*2M, 5!#8*NlE`\ yMl&(<]`j 	-|vI!#8&(<*,L ":lk`D 3*2M 5!#8&(8l
E`Z y'H4&(<[`j *3M2 5!#8&k`| l3M*,@*=,.-
 3*2M, 5!#8*Jl 3*2M, 	
 5!#8*N"$4l  3*2M, 	
 5!#8*N"$4l  -|vI!#8&(<*,L ":l 3*2M, 5!#8*Nl  3* 	2 	M	
 	 	, 	 5 	"#8 	
 	!$ 	+N 	+ 	2 	%d 	l  	n!]` F	 &xx<x^^!3 l^^ 2  	$	  	D	   0(6 (6Vv vr (H HV	} 	<k <~> >B # 	
 #       " 	/       %!" O#$  $) 07r   