
    wgO1                       d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZ i dd	 d
fgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgd d! d"fgd#d$ d%fgd&d' d(fgd)d* d+fgd,d- d.fgd/d0 d1fgd2d3 d(fgd4d5 d6fgd7d8 d9fgi d:d; d<fgd=d> d?fgd@dA dBfgdCdD dEfgdFdG dHfgdIdJ dKfgdLdM dNfgdOdP dQfgdRdS dTfgdUdV dWfgdXdY dZfgd[d\ d]fgd^d_ d^fgd`da d`fgdbdc ddfgdedf ddfgdgdh difgi djdk dlfgdmdn dofgdpdq drfgdsdt dofgdudv dwfgdxdy dzfgd{d| d}fgd~d dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgi dd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgddń dfgddȄ dfgdd˄ dfgi dd΄ dfgddЄ dfgddӄ dfgddք dfgddل dfgdd܄ dfgdd߄ dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgi dd d fgdd dfgdd dfgdd d	fgd
d dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd dfgdd  d!fgd"d# d$fgd%d& d'fgd(d) d*fgd+d, d+fgd-d. d/fgd0 d1fgd2 d3fgd4Z G d5 d6e      Zd7 Zy8(9  z
Mathematica code printer
    )annotations)Any)BasicExprFloat)default_sort_key)CodePrinter)
precedenceexpc                     yNT xs    _/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/sympy/printing/mathematica.py<lambda>r              Explogc                     yr   r   r   s    r   r   r      r   r   Logsinc                     yr   r   r   s    r   r   r      r   r   Sincosc                     yr   r   r   s    r   r   r      r   r   Costanc                     yr   r   r   s    r   r   r      r   r   Tancotc                     yr   r   r   s    r   r   r      r   r   Cotsecc                     yr   r   r   s    r   r   r      r   r   Seccscc                     yr   r   r   s    r   r   r      r   r   Cscasinc                     yr   r   r   s    r   r   r      r   r   ArcSinacosc                     yr   r   r   s    r   r   r      r   r   ArcCosatanc                     yr   r   r   s    r   r   r      r   r   ArcTanacotc                     yr   r   r   s    r   r   r      r   r   ArcCotasecc                     yr   r   r   s    r   r   r      r   r   ArcSecacscc                     yr   r   r   s    r   r   r      r   r   ArcCscatan2c                      yr   r   r   s    r   r   r      r   r   sinhc                     yr   r   r   s    r   r   r      r   r   Sinhcoshc                     yr   r   r   s    r   r   r       r   r   Coshtanhc                     yr   r   r   s    r   r   r   !   r   r   Tanhcothc                     yr   r   r   s    r   r   r   "   r   r   Cothsechc                     yr   r   r   s    r   r   r   #   r   r   Sechcschc                     yr   r   r   s    r   r   r   $   r   r   Cschasinhc                     yr   r   r   s    r   r   r   %   r   r   ArcSinhacoshc                     yr   r   r   s    r   r   r   &   r   r   ArcCoshatanhc                     yr   r   r   s    r   r   r   '   r   r   ArcTanhacothc                     yr   r   r   s    r   r   r   (   r   r   ArcCothasechc                     yr   r   r   s    r   r   r   )   r   r   ArcSechacschc                     yr   r   r   s    r   r   r   *   r   r   ArcCschsincc                     yr   r   r   s    r   r   r   +   r   r   Sinc	conjugatec                     yr   r   r   s    r   r   r   ,   r   r   	ConjugateMaxc                      yr   r   r   s    r   r   r   -   r   r   Minc                      yr   r   r   s    r   r   r   .   r   r   erfc                     yr   r   r   s    r   r   r   /   r   r   Erferf2c                      yr   r   r   s    r   r   r   0   r   r   erfcc                     yr   r   r   s    r   r   r   1   r   r   Erfcerfic                     yr   r   r   s    r   r   r   2   r   r   Erfierfinvc                     yr   r   r   s    r   r   r   3   r   r   
InverseErferfcinvc                     yr   r   r   s    r   r   r   4   r   r   InverseErfcerf2invc                      yr   r   r   s    r   r   r   5   r   r   expintc                      yr   r   r   s    r   r   r   6   r   r   ExpIntegralEEic                     yr   r   r   s    r   r   r   7   r   r   ExpIntegralEifresnelcc                     yr   r   r   s    r   r   r   8   r   r   FresnelCfresnelsc                     yr   r   r   s    r   r   r   9   r   r   FresnelSgammac                     yr   r   r   s    r   r   r   :   r   r   Gamma
uppergammac                      yr   r   r   s    r   r   r   ;   r   r   	polygammac                      yr   r   r   s    r   r   r   <   r   r   	PolyGammaloggammac                     yr   r   r   s    r   r   r   =   r   r   LogGammabetac                      yr   r   r   s    r   r   r   >   r   r   BetaCic                     yr   r   r   s    r   r   r   ?   r   r   CosIntegralSic                     yr   r   r   s    r   r   r   @   r   r   SinIntegralChic                     yr   r   r   s    r   r   r   A   r   r   CoshIntegralShic                     yr   r   r   s    r   r   r   B   r   r   SinhIntegrallic                     yr   r   r   s    r   r   r   C   r   r   LogIntegral	factorialc                     yr   r   r   s    r   r   r   D   r   r   	Factorial
factorial2c                     yr   r   r   s    r   r   r   E   r   r   
Factorial2subfactorialc                     yr   r   r   s    r   r   r   F   r   r   Subfactorialcatalanc                     yr   r   r   s    r   r   r   G   r   r   CatalanNumberharmonicc                      yr   r   r   s    r   r   r   H   r   r   HarmonicNumberlucasc                     yr   r   r   s    r   r   r   I   r   r   LucasLRisingFactorialc                      yr   r   r   s    r   r   r   J   r   r   
PochhammerFallingFactorialc                      yr   r   r   s    r   r   r   K   r   r   FactorialPowerlaguerrec                      yr   r   r   s    r   r   r   L   r   r   	LaguerreLassoc_laguerrec                      yr   r   r   s    r   r   r   M   r   r   hermitec                      yr   r   r   s    r   r   r   N   r   r   HermiteHjacobic                      yr   r   r   s    r   r   r   O   r   r   JacobiP
gegenbauerc                      yr   r   r   s    r   r   r   P   r   r   GegenbauerC
chebyshevtc                      yr   r   r   s    r   r   r   Q   r   r   
ChebyshevT
chebyshevuc                      yr   r   r   s    r   r   r   R   r   r   
ChebyshevUlegendrec                      yr   r   r   s    r   r   r   S   r   r   	LegendrePassoc_legendrec                      yr   r   r   s    r   r   r   T   r   r   mathieucc                      yr   r   r   s    r   r   r   U   r   r   MathieuCmathieusc                      yr   r   r   s    r   r   r   V   r   r   MathieuSmathieucprimec                      yr   r   r   s    r   r   r   W   r   r   MathieuCPrimemathieusprimec                      yr   r   r   s    r   r   r   X   r   r   MathieuSPrime	stieltjesc                     yr   r   r   s    r   r   r   Y   r   r   StieltjesGamma
elliptic_ec                      yr   r   r   s    r   r   r   Z   r   r   	EllipticE
elliptic_fc                      yr   r   r   s    r   r   r   [   r   r   
elliptic_kc                     yr   r   r   s    r   r   r   \   r   r   	EllipticKelliptic_pic                      yr   r   r   s    r   r   r   ]   r   r   
EllipticPizetac                      yr   r   r   s    r   r   r   ^   r   r   Zetadirichlet_etac                     yr   r   r   s    r   r   r   _   r   r   DirichletEta
riemann_xic                     yr   r   r   s    r   r   r   `   r   r   	RiemannXibesselic                      yr   r   r   s    r   r   r   a   r   r   BesselIbesseljc                      yr   r   r   s    r   r   r   b   r   r   BesselJbesselkc                      yr   r   r   s    r   r   r   c   r   r   BesselKbesselyc                      yr   r   r   s    r   r   r   d   r   r   BesselYhankel1c                      yr   r   r   s    r   r   r   e   r   r   HankelH1hankel2c                      yr   r   r   s    r   r   r   f   r   r   HankelH2airyaic                     yr   r   r   s    r   r   r   g   r   r   AiryAiairybic                     yr   r   r   s    r   r   r   h   r   r   AiryBiairyaiprimec                     yr   r   r   s    r   r   r   i   r   r   AiryAiPrimeairybiprimec                     yr   r   r   s    r   r   r   j   r   r   AiryBiPrimepolylogc                      yr   r   r   s    r   r   r   k   r   r   PolyLoglerchphic                      yr   r   r   s    r   r   r   l   r   r   LerchPhigcdc                      yr   r   r   s    r   r   r   m   r   r   GCDlcmc                      yr   r   r   s    r   r   r   n   r   r   LCMjnc                      yr   r   r   s    r   r   r   o   r   r   SphericalBesselJync                      yr   r   r   s    r   r   r   p   r   r   SphericalBesselYhyperc                      yr   r   r   s    r   r   r   q   r   r   HypergeometricPFQmeijergc                      yr   r   r   s    r   r   r   r   r   r   MeijerGappellf1c                      yr   r   r   s    r   r   r   s   r   r   AppellF1
DiracDeltac                     yr   r   r   s    r   r   r   t   r   r   	Heavisidec                     yr   r   r   s    r   r   r   u   r   r   HeavisideThetac                      yr   r   r   s    r   r   r   v   r   r   KroneckerDeltac                     yr   r   r   s    r   r   r   w   r   r   Sqrt)r<  sqrtc                  V    e Zd ZU dZdZdZ eej                  fi di dZde	d<    e
       Zde	d	<    e
       Zd
e	d<   i fdZd Zd Z f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!e!Z"e!Z#d! Z$d" Z%d# Z&d$ Z'd% Z(e(Z)d& Z*d' Z+d( Z,d) Z-d* Z. xZ/S )+MCodePrinterz]A printer to convert Python expressions to
    strings of the Wolfram's Mathematica code
    _mcodezWolfram Language   )	precisionuser_functionszdict[str, Any]_default_settingszset[tuple[Expr, Float]]_number_symbolsz
set[Basic]_not_supportedc                2   t        j                  | |       t        t              | _        |j	                  di       j                         }|j                         D ]  \  }}t        |t              rd |fg||<   ! | j                  j                  |       y)z+Register function mappings supplied by userrE  c                      yr   r   r   s    r   r   z'MCodePrinter.__init__.<locals>.<lambda>   r   r   N)
r	   __init__dictknown_functionsgetcopyitems
isinstancelistupdate)selfsettings	userfuncskvs        r   rK  zMCodePrinter.__init__   s    T8,#O4LL!126;;=	OO% 	6DAqa&!0! 45	!	6 	##I.r   c                    |S Nr   )rT  liness     r   _format_codezMCodePrinter._format_code   s    r   c                    t        |      }| j                  |j                  |      d| j                  |j                  |      S )N^)r
   parenthesizebaser   )rT  exprPRECs      r   
_print_PowzMCodePrinter._print_Pow   s>    $++DIIt<++DHHd;= 	=r   c                     t        |      |j                         \  }}t            |j                  |       }|r#|dz  }|dj                   fd|D              z  }|S )N*z**c              3  B   K   | ]  }j                  |        y wrZ  )r_  ).0arb  rT  s     r   	<genexpr>z*MCodePrinter._print_Mul.<locals>.<genexpr>   s     DAT..q$7Ds   )r
   args_cncsuper
_print_Mulfuncjoin)rT  ra  cncresrb  	__class__s   `    @r   rl  zMCodePrinter._print_Mul   s_    $2g A/3JC499DDDDC
r   c                    | j                  |j                        }| j                  |j                        }|j                  }dj	                  |||      S )Nz{} {} {})_printlhsrhsrel_opformat)rT  ra  lhs_coderhs_codeops        r   _print_RelationalzMCodePrinter._print_Relational   sD    ;;txx(;;txx([[  2x88r   c                     y)N0r   rT  ra  s     r   _print_ZerozMCodePrinter._print_Zero       r   c                     y)N1r   r  s     r   
_print_OnezMCodePrinter._print_One   r  r   c                     y)Nz-1r   r  s     r   _print_NegativeOnezMCodePrinter._print_NegativeOne       r   c                     y)Nz1/2r   r  s     r   _print_HalfzMCodePrinter._print_Half   s    r   c                     y)NIr   r  s     r   _print_ImaginaryUnitz!MCodePrinter._print_ImaginaryUnit   r  r   c                     y)NInfinityr   r  s     r   _print_InfinityzMCodePrinter._print_Infinity   s    r   c                     y)Nz	-Infinityr   r  s     r   _print_NegativeInfinityz$MCodePrinter._print_NegativeInfinity   s    r   c                     y)NComplexInfinityr   r  s     r   _print_ComplexInfinityz#MCodePrinter._print_ComplexInfinity   s     r   c                     y)NIndeterminater   r  s     r   
_print_NaNzMCodePrinter._print_NaN   s    r   c                     y)NEr   r  s     r   _print_Exp1zMCodePrinter._print_Exp1   r  r   c                     y)NPir   r  s     r   	_print_PizMCodePrinter._print_Pi   r  r   c                     y)NGoldenRatior   r  s     r   _print_GoldenRatiozMCodePrinter._print_GoldenRatio   s    r   c                `    |j                  d      }t        |      }| j                  ||      S )NT)rm  )expandr
   r_  )rT  ra  expandedrb  s       r   _print_TribonacciConstantz&MCodePrinter._print_TribonacciConstant   s/    ;;D;)$  400r   c                     y)N
EulerGammar   r  s     r   _print_EulerGammazMCodePrinter._print_EulerGamma   s    r   c                     y)NCatalanr   r  s     r   _print_CatalanzMCodePrinter._print_Catalan   s    r   c                D     ddj                   fd|D              z   dz   S )N{, c              3  @   K   | ]  }j                  |        y wrZ  doprintrg  rh  rT  s     r   ri  z+MCodePrinter._print_list.<locals>.<genexpr>   s     =1t||A=   }rn  r  s   ` r   _print_listzMCodePrinter._print_list   s"    TYY====CCr   c                @    | j                  |j                               S rZ  r  tolistr  s     r   _print_ImmutableDenseMatrixz(MCodePrinter._print_ImmutableDenseMatrix       ||DKKM**r   c                b      fdfd} fd}dj                   |        |             S )Nc                    dj                  j                  | d   dz   | d   dz   f      j                  |            S )N{} -> {}r      rx  r  posvalrT  s     r   
print_rulez=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_rule   sD    $$LL#a&(CF1H-.S0AC Cr   c                     t        j                         j                         t              } ddj	                  fd| D              z   dz   S )N)keyr  r  c              3  6   K   | ]  \  }} ||        y wrZ  r   )rg  rW  rX  r  s      r   ri  zPMCodePrinter._print_ImmutableSparseMatrix.<locals>.print_data.<locals>.<genexpr>   s     =tq!*Q*=s   r  )sortedtodokrP  r   rn  )rP  ra  r  s    r   
print_dataz=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_data   sF    4::<--/5EFE		=u==> r   c                 :    j                   j                        S rZ  r  shapera  rT  s   r   
print_dimsz=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_dims   s    <<

++r   SparseArray[{}, {}]rx  )rT  ra  r  r  r  s   ``  @r   _print_ImmutableSparseMatrixz)MCodePrinter._print_ImmutableSparseMatrix   s,    	C		, %++JL*,GGr   c                @    | j                  |j                               S rZ  r  r  s     r   _print_ImmutableDenseNDimArrayz+MCodePrinter._print_ImmutableDenseNDimArray   r  r   c                v     d d  fdfd} fd}dj                   |        |             S )Nc                >    ddj                  d | D              z   dz   S )Nr  r  c              3      K   | ]  }|  y wrZ  r   )rg  rh  s     r   ri  zZMCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_string_list.<locals>.<genexpr>   s     ":1":s   r  r  )string_lists    r   print_string_listzGMCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_string_list   s!    ":k":::S@@r   c                 &    t        d | D              S )zHelper function to change Python style indexing to
            Pathematica indexing.

            Python indexing (0, 1 ... n-1)
            -> Mathematica indexing (1, 2 ... n)
            c              3  &   K   | ]	  }|d z     yw)r  Nr   )rg  is     r   ri  z]MCodePrinter._print_ImmutableSparseNDimArray.<locals>.to_mathematica_index.<locals>.<genexpr>  s     -1Q-s   )tuple)argss    r   to_mathematica_indexzJMCodePrinter._print_ImmutableSparseNDimArray.<locals>.to_mathematica_index   s     ----r   c                d    dj                  j                  |       j                  |            S )z.Helper function to print a rule of Mathematicar  r  r  s     r   r  z@MCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_rule	  s(    $$T\\#%6S8IJJr   c                      t        j                  j                               D  cg c]   \  } }  j                  |        |      " c}}       S c c}} w )a/  Helper function to print data part of Mathematica
            sparse array.

            It uses the fourth notation ``SparseArray[data,{d1,d2,...}]``
            from
            https://reference.wolfram.com/language/ref/SparseArray.html

            ``data`` must be formatted with rule.
            )r  _sparse_arrayrP  _get_tuple_index)r  valuera  r  r  r  s     r   r  z@MCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_data  sg     % #)););)A)A)C"DF C (4+@+@+EG F Fs   %A
c                 :    j                   j                        S )a  Helper function to print dimensions part of Mathematica
            sparse array.

            It uses the fourth notation ``SparseArray[data,{d1,d2,...}]``
            from
            https://reference.wolfram.com/language/ref/SparseArray.html
            r  r  s   r   r  z@MCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_dims  s     <<

++r   r  r  )rT  ra  r  r  r  r  r  s   ``  @@@r   _print_ImmutableSparseNDimArrayz,MCodePrinter._print_ImmutableSparseNDimArray   s7    	A	.	K	"	, %++JL*,GGr   c                    |j                   j                   j                  v ra j                  |j                   j                     }|D ]8  \  }} ||j                   s|d j	                  |j                  d      dc S  n|j                   j                   j
                  v rk j
                  |j                   j                     \  }} j                  |      r4t         fd|D              r  j                  |j                  |            S |j                   j                  d j	                  |j                  d      z  z   S )N[r  ]c              3  @   K   | ]  }j                  |        y wrZ  )
_can_print)rg  frT  s     r   ri  z/MCodePrinter._print_Function.<locals>.<genexpr>3  s     0Y1C0Yr  z[%s])
rm  __name__rM  r  	stringify_rewriteable_functionsr  allrt  rewrite)rT  ra  
cond_mfunccondmfunctarget_frequired_fss   `      r   _print_FunctionzMCodePrinter._print_Function*  s   99!5!55--dii.@.@AJ) Oe#',dnnTYY.MNNO YY4#>#>>$($?$?		@R@R$S!Hkx(S0Y[0Y-Y{{4<<#9::yy!!FT^^DIIt-L$LLLr   c                    t        |j                        dk(  r-dj                  | j                  |j                  d               S dj                  | j                  |j                  d         | j                  |j                  d               S )Nr  zProductLog[{}]r   zProductLog[{}, {}])lenr  rx  rt  r  s     r   _print_LambertWzMCodePrinter._print_LambertW9  sp    tyy>Q#**4;;tyy|+DEE#**KK		!%t{{499Q<'@B 	Br   c                     t        |j                        dk(  r1|j                  d   dd  s|j                  d   |j                  d   g}n|j                  }ddj	                   fd|D              z   dz   S )Nr  r   zHold[Integrate[r  c              3  @   K   | ]  }j                  |        y wrZ  r  r  s     r   ri  z/MCodePrinter._print_Integral.<locals>.<genexpr>D  s     ,KT\\!_,Kr  ]])r  	variableslimitsr  rn  )rT  ra  r  s   `  r   _print_IntegralzMCodePrinter._print_Integral?  sh    t~~!#DKKN12,>IIaL$.."34D99D 499,Kd,K#KKdRRr   c                X     ddj                   fd|j                  D              z   dz   S )Nz	Hold[Sum[r  c              3  @   K   | ]  }j                  |        y wrZ  r  r  s     r   ri  z*MCodePrinter._print_Sum.<locals>.<genexpr>G  s     &J1t||A&Jr  r  )rn  r  r  s   ` r   
_print_SumzMCodePrinter._print_SumF  s&    TYY&J		&JJJTQQr   c                     |j                   }|j                  D cg c]  }|d   dk(  r|d   n| }}ddj                   fd|g|z   D              z   dz   S c c}w )Nr  r   zHold[D[r  c              3  @   K   | ]  }j                  |        y wrZ  r  r  s     r   ri  z1MCodePrinter._print_Derivative.<locals>.<genexpr>L  s     $NT\\!_$Nr  r  )ra  variable_countrn  )rT  ra  dexprr  dvarss   `    r   _print_DerivativezMCodePrinter._print_DerivativeI  sd    		373F3FGa11)GG499$Nugo$NNNQUUU Hs   Ac                $    dj                  |      S )Nz(* {} *)r  )rT  texts     r   _get_commentzMCodePrinter._get_commentO  s      &&r   )0r  
__module____qualname____doc__printmethodlanguagerL  r	   rF  __annotations__setrG  rH  rK  r\  rc  rl  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  _print_tuple_print_Tupler  r  r  r  r  _print_MinMaxBaser  r  r  r  r  __classcell__)rr  s   @r   rA  rA  {   s    K!H(,[-J-J )O )~ 
 03uO,4!$NJ& " /=
9
!
1
DLL+H"+,H\M (BSRV'r   rA  c                6    t        |      j                  |       S )a  Converts an expr to a string of the Wolfram Mathematica code

    Examples
    ========

    >>> from sympy import mathematica_code as mcode, symbols, sin
    >>> x = symbols('x')
    >>> mcode(sin(x).series(x).removeO())
    '(1/120)*x^5 - 1/6*x^3 + x'
    )rA  r  )ra  rU  s     r   mathematica_coder  S  s     !))$//r   N)r  
__future__r   typingr   
sympy.corer   r   r   sympy.core.sortingr   sympy.printing.codeprinterr	   sympy.printing.precedencer
   rM  rA  r  r   r   r   <module>r     sN	   #  ) ) / 2 0i	^U#$i	^U#$i 
^U#$i 
^U#$	i
 
^U#$i 
^U#$i 
^U#$i 
^U#$i nh'(i nh'(i nh'(i nh'(i nh'(i nh'(i )*i  nf%&!i" nf%&#i$ nf%&%i& nf%&'i( nf%&)i* nf%&+i, ~y)*-i. ~y)*/i0 ~y)*1i2 ~y)*3i4 ~y)*5i6 ~y)*7i8 nf%&9i: >;/0;i< 
_e$%=i> 
_e$%?i@ 
^U#$AiB ou%&CiD nf%&EiF nf%&GiH -.IiJ /0KiL ,/0MiN 01OiP 	NO,
-QiR .*-.SiT .*-.UiV ~w'(WiX OW-.YiZ ?K01[i\ .*-.]i^ ov&'_i` 	NM*
+aib 	NM*
+cid 
^^,-eif 
^^,-gih 	NM*
+iij >;/0kil NL12min nn56oip 12qir /#345sit ~x()uiv ,78wix /+;<=yiz /;/0{i| 56}i~ *-.i@ +,AiB O]34CiD O\23EiF O\23GiH /;/0IiJ 56KiL /:./MiN /:./OiP 89QiR 89SiT >#345UiV O[12WiX O[12YiZ NK01[i\ _l34]i^ ov&'_i` ~~67aib NK01cid ),-eif ),-gih ),-iij ),-kil *-.min *-.oip )*qir )*sit ^]34uiv ^]34wix ),-yiz /:./{i| 
_e$%}i~ 
_e$%i@ 	O/0
1AiB 	O/0
1CiD  345EiF ),-GiH /:./IiJ NL12KiL >#345MiN ()9:;f%&QiXU'; U'p0r   