+
    KV-j­= ã                   ó&  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
  ^ RIt^RIHtHt ^RI5 ]P"                  s^sRs^ s^sRÚsRsRs^ s^s^s. sRsRs^s / s!Rs"^s#Rs$^ s%\J        . /s&Rs'. s(RÛs). s*Rs+RÛs,. s-. s.. s/R t0RÜR lt1/ t2R	 F
  t3R
R/]2]3&   K  	  R F
  t3R
R/]2]3&   K  	  / t4/ t5. RNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9NR:NR;NR<NR=NR>NR?NR@N F  t6]6RA,           ]4]6&   ]6]5]6RA,           &   K  	  RB t7RC t8RD t9RE t:]Pv                  ! RF]Px                  4      Pz                  t>]Pv                  ! RG]Px                  4      Pz                  t?]Pv                  ! RH]Px                  4      Pz                  t@]Pv                  ! RI]Px                  4      P‚                  tB. RÝOtC. RÞOtDRJ tERK tF]G^3RL ltHRMtIRNtJ]Pv                  ! ]IR]J]JRO3,          ]Px                  4      R?3tK]Pv                  ! ]IR]JRP,           ]JRP,           RO3,          ]Px                  4      tL]Pv                  ! ]IRß,          ]Px                  4      RQ3tM]Pv                  ! ]IRà,          ]Px                  4      RQ3tNRRtO]Pv                  ! ]IR]O]ORO3,          ]Px                  4      RQ3tP]ORS,           tQ]Pv                  ! ]IR]Q]QRO3,          ]Px                  4      RQ3tRRTtS]Pv                  ! ]IR]S]SRO3,          ]Px                  4      RU3tTRVtU]Pv                  ! ]IRW]U]URO3,          ]Px                  4      RX3tVRYtW]Pv                  ! ]IR]W]WRO3,          ]Px                  4      RZ3tX]Pv                  ! ]IRá,          ]Px                  4      R[3tY]Pv                  ! ]IRâ,          ]Px                  4      R\3tZ]Pv                  ! ]IRã,          ]Px                  4      R]3t[]Pv                  ! ]IRä,          ]Px                  4      R^3t\]Pv                  ! ]IRå,          ]Px                  4      R_3t]]Pv                  ! ]IRæ,          ]Px                  4      R`3t^]Pv                  ! ]IRç,          ]Px                  4      Ra3t_]Pv                  ! ]IRè,          ]Px                  4      Rb3t`]Pv                  ! ]IRé,          ]Px                  4      Rc3ta]Pv                  ! ]IRê,          ]Px                  4      Rd3tb]Pv                  ! ]IRë,          ]Px                  4      Re3tc]Pv                  ! ]IRì,          ]Px                  4      Rf3td]Pv                  ! ]IRí,          ]Px                  4      Rg3te]Pv                  ! ]IRî,          ]Px                  4      Rh3tf]Pv                  ! ]IRï,          ]Px                  4      Ri3tg]Pv                  ! ]IRð,          ]Px                  4      Rj3th]Pv                  ! ]IRñ,          ]Px                  4      Rk3ti]Pv                  ! ]IRò,          ]Px                  4      Rl3tj]Pv                  ! ]IRó,          ]Px                  ]PÖ                  ,          4      Rm3tl]Pv                  ! Rn]PÖ                  4      Ro3tmRp tnRq to]Pv                  ! Rr]Px                  4      tp]Pv                  ! Rs]Px                  4      tq]Pv                  ! Rt]Px                  4      trRôRu ltsRv ttRõRw ltuRx tvRÜRy ltw]Pv                  ! Rz]Px                  4      tx]Pv                  ! R{]Px                  4      ty]Pv                  ! R|]Px                  4      tz]Pv                  ! R}]Px                  4      t{]Pv                  ! R~]Px                  4      t|]Pv                  ! R4      t}]Pv                  ! R€4      t~]Pv                  ! R�]Px                  4      tR‚ t€Rƒ t�R„ t‚R… tƒR† t„R‡ t…Rˆ t†]Pv                  ! R‰]Px                  4      t‡]Pv                  ! RŠ]Px                  4      tˆ]Pv                  ! R‹]Px                  4      t‰]Pv                  ! RŒ]Px                  4      tŠ]Pv                  ! R�]Px                  4      t‹RŽ tŒR� t�R� tŽR‘ t�RôR’ lt�RôR“ lt‘RôR” lt’RöR• lt“R– t”R— t•R÷R˜ lt–RøR™ lt—RùRš lt˜R› t™Rœ tšRúR� lt›Rž tœRûRŸ lt�]Pv                  ! R ]Px                  4      tžR¡ tŸ]Pv                  ! R¢]Px                  4      t R£ t¡R¤ t¢R¥ t£R¦ t¤R§ t¥RüR¨ lt¦/ 3R© lt§Rª t¨]Pv                  ! R«4      P‚                  t©R¬ tªR­ t«]Pv                  ! R®]Px                  4      t¬R÷R¯ lt­R° t®. 3R± lt¯R² t°]Pv                  ! R³]Px                  4      t±]Pv                  ! R´]Px                  4      t²]Pv                  ! Rµ]Px                  4      t³]Pv                  ! R¶]Px                  4      t´]Pv                  ! R·]Px                  4      tµR¸ t¶/ 3R¹ lt·RýR» lt¸RúR¼ lt¹RúR½ ltºR¾ t»RþR¿ lt¼. s½RÀ t¾RÁ t¿RÂ tÀ. R3RÃ ltÁRÄ tÂE\z        EP‡                  ]Â4       ]ÄRÅ8X  Edý   . tÅ. tÆ^tÇ^ tÈ^ tÉ^ tÊ]EP–                  RÆ,           EF3  tÌ]ÌR8X  d   K  ]Ì^ ,          RÇ8X  d   ^ tÇK  ]ÌRÈ8X  d   ^s^ sK,  ]ÌRÉ8X  d   ^s^ sK9  ]ÌRÊ8X  d   \&        '       d
   ]1! RË^ 4       ^sRsK[  ]ÌRÌ8X  d   ^sKf  ]ÌRÍ8X  d   ^sKq  ]ÌRÎ8X  d   ^sRsK~  ]ÌRÏ8X  d	   ^ sRÐs^sK�  ]ÌRÑ8X  d   ^tÈK˜  ]ÌRÒ8X  d   ^tÊK£  ]ÌRÓ8X  d   ^tÉK®  ]Ì^ ,          RÔ8X  d   ]Í! RÕ]Î! ]Ì4       Rº24       KÐ  ]È'       d   ^ tÈ]ÌsKÞ  ]É'       d   ^ tÉ]ÌsKì  ]Ç'       d.    ]Ï! ]Ì4      EP¡                  4        ]ÅEP‡                  ]Ì4       EK!  ]ÆEP‡                  ]Ì4       EK6  	  \&        '       g"   \2        '       d   \4        '       g
   ]1! R×^ 4       ]¾! ]Å4      tÓ\0        '       dP   ]1! RØ]Î! \0        4       Rº2^ 4       ]¿! ]Ó4      tÔ]Ï! \0        RÙ4      ;_uu_ 4       tÇ]ÇEP«                  ]Ô4       RRR4       ]Ê'       d   ]G! ]Ó4       R# R# R#   ] d    Rt EL+i ; i  ]Ñ d   tÒ]Í! RÖ]Ò: Rº24        RtÒAÒEK	  RtÒAÒii ; i  + '       g   i     LY; i)ÿa  
crackfortran --- read fortran (77,90) code and extract declaration information.

Copyright 1999 -- 2011 Pearu Peterson all rights reserved.
Copyright 2011 -- present NumPy Developers.
Permission to use, modify, and distribute this software is given under the
terms of the NumPy License.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.


Usage of crackfortran:
======================
Command line keys: -quiet,-verbose,-fix,-f77,-f90,-show,-h <pyffilename>
                   -m <module name for f77 routines>,--ignore-contains
Functions: crackfortran, crack2fortran
The following Fortran statements/constructions are supported
(or will be if needed):
   block data,byte,call,character,common,complex,contains,data,
   dimension,double complex,double precision,end,external,function,
   implicit,integer,intent,interface,intrinsic,
   logical,module,optional,parameter,private,public,
   program,real,(sequence?),subroutine,type,use,virtual,
   include,pythonmodule
Note: 'virtual' is mapped to 'dimension'.
Note: 'implicit integer (z) static (z)' is 'implicit static (z)' (this is minor bug).
Note: code after 'contains' will be ignored until its scope ends.
Note: 'common' statement is extended: dimensions are moved to variable definitions
Note: f2py directive: <commentchar>f2py<line> is read as <line>
Note: pythonmodule is introduced to represent Python module

Usage:
  `postlist=crackfortran(files)`
  `postlist` contains declaration information read from the list of files `files`.
  `crack2fortran(postlist)` returns a fortran code to be saved to pyf-file

  `postlist` has the following structure:
 *** it is a list of dictionaries containing `blocks':
     B = {'block','body','vars','parent_block'[,'name','prefix','args','result',
          'implicit','externals','interfaced','common','sortvars',
          'commonvars','note']}
     B['block'] = 'interface' | 'function' | 'subroutine' | 'module' |
                  'program' | 'block data' | 'type' | 'pythonmodule' |
                  'abstract interface'
     B['body'] --- list containing `subblocks' with the same structure as `blocks'
     B['parent_block'] --- dictionary of a parent block:
                             C['body'][<index>]['parent_block'] is C
     B['vars'] --- dictionary of variable definitions
     B['sortvars'] --- dictionary of variable definitions sorted by dependence (independent first)
     B['name'] --- name of the block (not if B['block']=='interface')
     B['prefix'] --- prefix string (only if B['block']=='function')
     B['args'] --- list of argument names if B['block']== 'function' | 'subroutine'
     B['result'] --- name of the return value (only if B['block']=='function')
     B['implicit'] --- dictionary {'a':<variable definition>,'b':...} | None
     B['externals'] --- list of variables being external
     B['interfaced'] --- list of variables being external and defined
     B['common'] --- dictionary of common blocks (list of objects)
     B['commonvars'] --- list of variables used in common blocks (dimensions are moved to variable definitions)
     B['from'] --- string showing the 'parents' of the current block
     B['use'] --- dictionary of modules used in current block:
         {<modulename>:{['only':<0|1>],['map':{<local_name1>:<use_name1>,...}]}}
     B['note'] --- list of LaTeX comments on the block
     B['f2pyenhancements'] --- optional dictionary
          {'threadsafe':'','fortranname':<name>,
           'callstatement':<C-expr>|<multi-line block>,
           'callprotoargument':<C-expr-list>,
           'usercode':<multi-line block>|<list of multi-line blocks>,
           'pymethoddef:<multi-line block>'
           }
     B['entry'] --- dictionary {entryname:argslist,..}
     B['varnames'] --- list of variable names given in the order of reading the
                       Fortran code, useful for derived types.
     B['saved_interface'] --- a string of scanned routine signature, defines explicit interface
 *** Variable definition is a dictionary
     D = B['vars'][<variable name>] =
     {'typespec'[,'attrspec','kindselector','charselector','=','typename']}
     D['typespec'] = 'byte' | 'character' | 'complex' | 'double complex' |
                     'double precision' | 'integer' | 'logical' | 'real' | 'type'
     D['attrspec'] --- list of attributes (e.g. 'dimension(<arrayspec>)',
                       'external','intent(in|out|inout|hide|c|callback|cache|aligned4|aligned8|aligned16)',
                       'optional','required', etc)
     K = D['kindselector'] = {['*','kind']} (only if D['typespec'] =
                         'complex' | 'integer' | 'logical' | 'real' )
     C = D['charselector'] = {['*','len','kind','f2py_len']}
                             (only if D['typespec']=='character')
     D['='] --- initialization expression string
     D['typename'] --- name of the type if D['typespec']=='type'
     D['dimension'] --- list of dimension bounds
     D['intent'] --- list of intent specifications
     D['depend'] --- list of variable names on which current variable depends on
     D['check'] --- list of C-expressions; if C-expr returns zero, exception is raised
     D['note'] --- list of LaTeX comments on the variable
 *** Meaning of kind/char selectors (few examples):
     D['typespec>']*K['*']
     D['typespec'](kind=K['kind'])
     character*C['*']
     character(len=C['len'],kind=C['kind'], f2py_len=C['f2py_len'])
     (see also fortran type declaration statement formats below)

Fortran 90 type declaration statement format (F77 is subset of F90)
====================================================================
(Main source: IBM XL Fortran 5.1 Language Reference Manual)
type declaration = <typespec> [[<attrspec>]::] <entitydecl>
<typespec> = byte                          |
             character[<charselector>]     |
             complex[<kindselector>]       |
             double complex                |
             double precision              |
             integer[<kindselector>]       |
             logical[<kindselector>]       |
             real[<kindselector>]          |
             type(<typename>)
<charselector> = * <charlen>               |
             ([len=]<len>[,[kind=]<kind>]) |
             (kind=<kind>[,len=<len>])
<kindselector> = * <intlen>                |
             ([kind=]<kind>)
<attrspec> = comma separated list of attributes.
             Only the following attributes are used in
             building up the interface:
                external
                (parameter --- affects '=' key)
                optional
                intent
             Other attributes are ignored.
<intentspec> = in | out | inout
<arrayspec> = comma separated list of dimension bounds.
<entitydecl> = <name> [[*<charlen>][(<arrayspec>)] | [(<arrayspec>)]*<charlen>]
                      [/<init_expr>/ | =<init_expr>] [,<entitydecl>]

In addition, the following attributes are used: check,depend,note

TODO:
    * Apply 'parameter' attribute (e.g. 'integer parameter :: i=2' 'real x(i)'
                                   -> 'real x(2)')
    The above may be solved by creating appropriate preprocessor program, for example.

N)ÚPath)Ú__version__Úsymbolic)Ú*ÚfixÚ c                  óz   € ^s Rs^ s^sRsRsRs^ s^s^s	. s
^ s\        . /sRs^sRs. s/ s^sRsRs. s. s. s. sRsR# )é   r   r   Nú    éÿÿÿÿ)Ú	strictf77ÚsourcecodeformÚquietÚverboseÚtabcharÚpyffilenameÚf77modulenameÚskipemptyendsÚignorecontainsÚdolowercaseÚdebugÚgroupcounterÚ	grouplistÚneededmoduleÚexpectbeginÚskipblocksuntilÚusermodulesÚf90modulevarsÚgotnextfileÚfilepositiontextÚcurrentfilenameÚskipfunctionsÚ	skipfuncsÚ	onlyfuncsÚinclude_pathsÚprevious_context© ó    Úh/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/numpy/f2py/crackfortran.pyÚreset_global_f2py_varsr)   Å   s�   € ð €IØ€NØ€EØ€GØ€GØ€KØ€MØ€MØ€NØ€KØ€Eà€LÜ˜rÐ"€IØ€LØ€KØ€OØ€KØ€MØ€KØÐØ€OØ€MØ€IØ€IØ€MØÒr'   c                 óÒ   € \         '       g   R # \        '       gM   V'       d$   \        P                  P	                  \
        4       \        P                  P	                  V 4       R # R # ©N)r   r   ÚsysÚstdoutÚwriter   )ÚlineÚflags   &&r(   Úoutmessr1   ë   s>   € ÷ ‹7Ùß‹5ßÜ�J‰J×ÑÔ-Ô.Ü�
‰
×Ñ˜Öñ r'   zabcdefghopqrstuvwxyz$_ÚtypespecÚrealÚijklmnÚintegerÚintÚdoubleÚfloatÚcharÚshortÚlongÚvoidÚcaseÚwhileÚreturnÚsignedÚunsignedÚifÚforÚtypedefÚsizeofÚunionÚstructÚstaticÚregisterÚnewÚbreakÚdoÚgotoÚswitchÚcontinueÚelseÚinlineÚexternÚdeleteÚconstÚautoÚlenÚrankÚshapeÚindexÚslenÚsizeÚ_iÚmaxÚminÚflenÚfshapeÚstringÚcomplex_doubleÚfloat_doubleÚstdinÚstderrr-   ÚtypeÚdefaultÚ_bnc                 óp   € V \         9   d+   \        R V  R\         V ,           R24       \         V ,          # V # )zrmbadname1: Replacing "ú" with "ú".
)ÚbadnamesÚerrmess©Únames   &r(   Ú
rmbadname1rp   
  s6   € ØŒxÔÜÐ)¨$¨¨x¼À½Ð7GÀtÐLÔMÜ˜�~ÐØ€Kr'   c                 óB   € V  Uu. uF  p\        V4      NK  	  up# u upi r+   )rp   ©ÚnamesÚ_ms   & r(   Ú	rmbadnameru     s   € Ù%*Ó+¡U˜rŒJ�rŽN¡UÑ+Ð+ùÒ+ó   …c                 óp   € V \         9   d+   \        R V  R\         V ,           R24       \         V ,          # V # )zundo_rmbadname1: Replacing "rj   rk   )Úinvbadnamesrm   rn   s   &r(   Úundo_rmbadname1ry     s8   € ØŒ{ÔÜÐ.¨t¨f°H¼[ÈÕ=NÐ<OÈtÐTÔUÜ˜4Õ Ð Ø€Kr'   c                 óB   € V  Uu. uF  p\        V4      NK  	  up# u upi r+   )ry   rr   s   & r(   Úundo_rmbadnamer{     s   € Ù*/Ó0©% BŒO˜BÖ©%Ñ0Ð0ùÒ0rv   z-\*-\s*fortran\s*-\*-z-\*-\s*f90\s*-\*-z-\*-\s*fix\s*-\*-z[^c*]\s*[^\s\d\t]c                ó’  € \         e0   \         P                  ! V 4      P                  4       P                  pMñ\	        ^ \
        P                  P                  V 4      4      p\        V R4      ;_uu_ 4       pVP                  V4      pVP                  \        P                  4      '       d   RpMrVP                  \        P                  \        P                  34      '       d   RpM:VP                  \        P                  \        P                   34      '       d   RpMRpRRR4       \        WXR7      #   + '       g   i     L; i)a:  Ensures that filename is opened with correct encoding parameter.

This function uses charset_normalizer package, when available, for
determining the encoding of the file to be opened. When charset_normalizer
is not available, the function detects only UTF encodings, otherwise, ASCII
encoding is used as fallback.
NÚrbz	UTF-8-SIGzUTF-32zUTF-16Úascii)Úencoding)Úcharset_normalizerÚ	from_pathÚbestr   r^   ÚosÚpathÚgetsizeÚopenÚreadÚ
startswithÚcodecsÚBOM_UTF8ÚBOM_UTF32_LEÚBOM_UTF32_BEÚBOM_LEÚBOM_BE)ÚfilenameÚmoder   ÚnbytesÚfhandleÚraws   &&    r(   Úopenhookr”   *  sã   € ô Ò%Ü%×/Ò/°Ó9×>Ñ>Ó@×IÑI‰ô �RœŸ™Ÿ™¨Ó2Ó3ˆÜ�(˜D×!Ô! WØ—,‘,˜vÓ&ˆCØ�~‰~œfŸo™o×.Ò.Ø&‘Ø—‘¤×!4Ñ!4´f×6IÑ6IÐ J×KÒKØ#‘Ø—‘¤§¡´·±Ð >×?Ò?Ø#‘ð #�÷ "ô �¨Ô2Ð2÷ "×!ús   Á5A.D6Ã$7D6ÄD6Ä6E	c                ó@  € Rp\        V 4      P                  P                  4       \        9   d   Rp\	        V R4      ;_uu_ 4       pVP                  4       p^p\        V4      '       d   ^ pM\        V4      '       d   ^ pRpV^ 8”  d{   V'       ds   V^ ,          R8w  dS   VP                  4       '       d=   V^,          pV^ ,          R8w  d   \        VR,          4      '       g   VR	R
 R8X  d   RpMVP                  4       pK�  RRR4       V#   + '       g   i     T# ; i)z(Check if file is in free format Fortran.FTÚrÚ!Ú	ºNé   NÚ&Néþÿÿÿr   )
r   ÚsuffixÚlowerÚCOMMON_FREE_EXTENSIONSr”   ÚreadlineÚ_has_f_headerÚ_has_f90_headerÚstripÚ_free_f90_start)ÚfnameÚresultr’   r/   Úns   &    r(   Úis_free_formatr¨   I  sñ   € ð €FÜˆEƒ{×Ñ×ÑÓ!Ô%;Ô;ØˆÜ	�%˜×	Ô	 Ø×ÑÓ!ˆØˆÜ˜×ÒØ‰AÜ˜T×"Ò"ØˆAØˆFØ�!ŒeŸØ�A�w˜#Œ~ $§*¡*§,¢,Ø�Q•�Ø˜•G˜t”O¬¸¸R½×(AÒ(AÀdÈ2ÈbÀkÐUXÔFXØ!�FØØ×#Ñ#Ó%ŠD÷ 
ð €M÷ 
Ö	ð €Mús   ÁA
DÂ#DÂ4ADÄD	c           
     óv  € V'       g0   \         \        \        \        \        \
        \        \        \        3	pV . 8X  d   R# \        pRpRpRp\        P                  ! R\        P                  4      p\        P                  ! R4      p	\        P                  ! R4      p
\        P                  ! R4      pV'       d
   V! RR,4       RRrÇR.\        ^
4       Uu. uF  p\        V4      NK  	  up,           pRs\        P                  ! V \         R	7      p  VP#                  4       pT'       g   EMTP-                  4       '       Ed   RsTP)                  4       s^s Tp^ sRs\.        P0                  P3                  \        4      ^,          p\5        \        4      P6                  P9                  4       \:        9   d&   \=        T4      '       g   \?        T4      '       g   ^sM(\A        \        4      '       d   \?        T4      '       g   Rs\        '       d   \B        sM\D        s\G        R\I        \        4      : R\        : \        ;'       d    R;'       g    R: R24       TPK                  4       PM                  RR4      pTR8X  g   TR,,          R9  d   MTRR, pK  Rp\O        TR4      w  ppTR,          pTR,          P9                  4       R8X  d'   \O        TR-,           TR,          ,           R4      w  ppR
pTPQ                  4       R8X  d   \        R8X  d   MRpEK  \        R8X  Edj   T^ ,          R.9   d7   TR,          P9                  4       R8X  d   RTR,          ,           pR
pM,RpRpEK\  \        '       d   \S        T4      ^H8”  d
   TR,          pT^ ,          T9  d   \'        R\I        T4      ,          4      hT'       d   \        '       d5   \S        T4      ^8”  d%   T^,          R8X  g   TTR ,          ,           pRpRpEMÙT	PU                  T4      pT'       d   TPW                  R!4      pT'       d-   YzPU                  T4      PW                  R!4      ,           pRpRpEM{RTR,          ,           pT'       d   TP9                  4       pMTpTpTpEMJ\        R8X  Ed$   T'       g€   XR"8X  dy   TPU                  T4      '       db   TR#,           p TP#                  4       pT'       g   \Y        R$4       M#TT,           pTPU                  T4      '       g   KG   TP[                  4       pT	PU                  T4      pT'       d   TPW                  R!4      pT'       d,   YzPU                  T4      PW                  R!4      ,           pRpRpM:T'       d-   T'       d   \]        T4      '       g   TP9                  4       MTpMTpTpTpTRJpM\_        R%\I        \        4       24      hR&TPa                  4       ^,
          \        T3,          sTPU                  T4      pT'       Ed   TPW                  R'4      p\.        P0                  Pc                  T4      '       d   \e        TT^ R(7       MÜ\.        P0                  Pg                  \        4      .\h        ,           p^ pT FZ  p\.        P0                  Pk                  TT4      p\.        P0                  Pc                  T4      '       g   KJ  ^p\e        TT^ R(7        M	  T'       g;   \G        R)\I        T4      : R*\.        Pl                  Pk                  T4      : R+24       MT! T4       TpEK0  T'       d   TP9                  4       pMTpTpR&TPa                  4       ^,
          \        T3,          sTPU                  T4      pT'       Ed   TPW                  R'4      p\.        P0                  Pc                  T4      '       d   \e        TT^ R(7       MÜ\.        P0                  Pg                  \        4      .\h        ,           p^ pT FZ  p\.        P0                  Pk                  TT4      p\.        P0                  Pc                  T4      '       g   KJ  ^p\e        TT^ R(7        M	  T'       g;   \G        R)\I        T4      : R*\.        Pl                  Pk                  T4      : R+24       MT! T4       RsTPo                  4        T'       d   T! R^4       R# Xw	  s ssssssssR# u upi   \$         d7   p\'        RTP)                  4        RTP+                  4        RT R24      hRp?ii ; i)/zá
Read fortran codes from files and
 1) Get rid of comments, line continuations, and empty lines; lower cases.
 2) Call dowithline(line) on every line.
 3) Recursively call itself when statement "include '<filename>'" is met.
NFr   z*\s*include\s*(\'|")(?P<name>[^\'"]*)(\'|")z(?P<line>.*)&\s*\Zz(\s*&|)(?P<line>.*)z.*?'''Ú )r”   Tzreadfortrancode: reading Ú#z failed with
zu.
It is likely that installing charset_normalizer package will help f2py determine the input file encoding correctly.r   Úfreez	Reading file z	 (format:z,strictú)
ô   Â z
r—   r™   z!f2pyºrš   NN:r	   rš   NÚf2pyz     :NéH   Nzxreadfortrancode: Found non-(space,digit) char in the first column.
	Are you sure that this code is in fix form?
	line=%sºé   NNr/   ú.pyfÚ
z.Unexpected end of file when reading multiline
z4Flag sourcecodeform must be either 'fix' or 'free': zLine #%d in %s:"%s"
	ro   )Ú
dowithlineÚistopz-readfortrancode: could not find include file z in ú. Ignoring.
r   r
   )r   Úcr—   ÚCr«   )8r   r   r    r   r   Úbeginpatternr   r   r   ÚreÚcompileÚIÚrangeÚstrÚ	fileinputÚ	FileInputr”   r    ÚUnicodeDecodeErrorÚ	Exceptionr�   ÚlinenoÚisfirstlinerƒ   r„   Úsplitextr   r�   rž   ÚCOMMON_FIXED_EXTENSIONSr¢   Ú_has_fix_headerr¨   Úbeginpattern77Úbeginpattern90r1   ÚreprÚ
expandtabsÚreplaceÚsplit_by_unquotedr£   rV   ÚmatchÚgrouprm   ÚrstripÚiscstyledirectiveÚ
ValueErrorÚ
filelinenoÚisfileÚreadfortrancodeÚdirnamer$   ÚjoinÚpathsepÚclose)Úffiler¶   r·   ÚsaveglobalsÚlocaldolowercaseÚcontÚ	finallineÚllÚincludelineÚcont1Úcont2Ú
mline_markÚl1rt   ÚspacedigitsÚfinÚlÚmsgÚextÚis_f2py_directiveÚrlÚ_Úorigfinalliner–   ÚlcÚmÚfnÚinclude_dirsÚ	foundfileÚinc_dirÚfn1s   &&&                            r(   r×   r×   c  si  € ÷ Ü!Ô#3´_ÄnÔV_Üœ%¤¬+ð6ˆà�„{ÙÜ"Ðð €DØ€IØ	€BÜ—*’*Ø5´r·t±tó=€Kä�JŠJÐ,Ó-€EÜ�JŠJÐ-Ó.€EÜ—’˜IÓ&€JßÙ�2�rÔØ�ˆØ�%¬U°2¬YÓ7©Y rœ3˜rž7©YÑ7Õ7€KØÐÜ
×
Ò
˜e¬hÔ
7€CØ
ð	Ø—‘“ˆA÷ ÙØ�?‰?×ÓØ!ÐØ!Ÿl™l›nˆOØˆKØˆBØˆIØ"ˆNÜ—'‘'×"Ñ"¤?Ó3°AÕ6ˆCÜ”OÓ$×+Ñ+×1Ñ1Ó3Ô7NÔNÜ(¨×+Ò+¬¸q×/AÒ/AØ‘	Ü¤×0Ò0¼È×9KÒ9KØ!'�ß‹yÜ-‘ä-�ÝÜœOÖ,®nÜ!×/Ð/ i×6Ð6°BÒ6ð8ô 9ð �L‰L‹N×"Ñ" 6¨3Ó/ˆà�r”'Ø��u˜HÔ$ØØ�#�2�ŠAà!Ðä# A sÓ+‰ˆˆBØ	ˆS�ˆØˆb�6�<‰<‹>˜WÔ$Ü$ Q¨¥[°2°bµ6Õ%9¸3Ó?‰DˆAˆqØ $ÐØ�7‰7‹9˜Œ?Ü Ô'ð
 ð �ÚÜ˜UÕ"Ø��tÐ0Ô0Ø�S•6—<‘<“> VÔ+Ø ! B¥%��AØ(,Ñ%à �DØ(-Ð%Úß“Ü�q“6˜B”;Ø˜#��AØ��t˜;Ô&Üð !GäIMÈaËõ!Qó Rð R÷ ŸI›I¬C°«F°Q¬J¸qÀ½tÀs¼{à˜!˜B�%•Z�Ø�	Ø "’à—K‘K “N�ßØŸ™ ›�AßØŸk™k¨!›n×2Ñ2°6Ó:Õ:�BØ "�IØ$&’Mð   ! B¥%��Aç'Ø$&§H¡H£J™	à$&˜	Ø$&�MØ’Bä˜vÕ%ß˜C 6œM¨j×.>Ñ.>¸q×.AÒ.AØ˜•H�ØØŸ™›�BßÜØMôOàØ˜B��AØ!×'Ñ'¨×+Ô+ØØ—H‘H“J�Ø—‘˜A“ˆAßØ—G‘G˜F“O�ßØŸ+™+ a›.×.Ñ.¨vÓ6Õ6�Ø�	Ø "‘ç#÷ 4EÔIZÐ[]×I^ÒI^ §¡¤
Ðeg‘Ià "�IØ "�Ø�Ø˜T�M‰DäØFÄtÌNÓG[ÐF\Ð]ó_ð _à4Ø�N‰NÓ˜qÕ ¤/°2ð87õ 7Ðà×Ñ˜mÓ,ˆßˆ1Ø—‘˜“ˆBÜ�w‰w�~‰~˜b×!Ò!Ü ¨zÀÖCô —G‘G—O‘O¤OÓ4ð 6Ü8Eõ F�à�	Û+�GÜŸ'™'Ÿ,™, w°Ó3�CÜ—w‘w—~‘~ c×*Ô*Ø$%˜	Ü'¨¸
È!ÕLÙñ  ,÷ !ÝÜ˜Rž¤"§*¡*§/¡/°,Ö"?ðAô Bøñ �yÔ!Ø‹çØ—H‘H“J‰	àˆ	Ø€MØ0Ø�‰Ó˜1Õœo¨rð43õ 3Ðà×Ñ˜-Ó(€Aß€qØ�W‰W�V‹_ˆÜ�7‰7�>‰>˜"×ÒÜ˜B¨:¸QÖ?äŸG™GŸO™O¬OÓ<Ð=ÄÕMˆLØˆIÛ'�Ü—g‘g—l‘l 7¨BÓ/�Ü—7‘7—>‘> #×&Ô&Ø !�IÜ# C°JÀaÕHÙñ (÷ ÝÜ˜–HœbŸj™jŸo™o¨lÖ;ð=ô >øñ 	�9ÔØÐØ‡I�I„KßÙ�2�qÖð 9Dñ	6ˆÐ% ¸È	Ø˜% ª+ùòE 8øô "ô 	ÜØ+¨C¯L©L«NÐ+;¸1¸S¿Z¹Z»\¸NØ   ð &ðóð ûð	ús   Ãc2Äc7 ã7d8ä1d3ä3d8zN\s*(?P<before>%s(?=\s*(\b(%s)\b)))\s*(?P<this>(\b(%s)\b))\s*(?P<after>%s)\s*\Zzqcharacter|logical|integer|real|complex|double\s*(precision\s*(complex|)|complex)|type(?=\s*\([\w\s,=(*)]*\))|byteú.*z|static|automatic|undefinedÚbeginzprogram|block\s*datazM|module(?!\s*procedure)|python\s*module|(abstract|)\s*interface|type(?!\s*\()z\end|endprogram|endblockdata|endmodule|endpythonmodule|endinterface|endsubroutine|endfunctionÚendzDend\s*(if|do|where|select|while|forall|associate|critical|enum|team)z[\w]*?Úendifzmodule\s*procedureÚmoduleprocedureÚimplicitÚ	dimensionÚexternalÚoptionalÚrequiredÚpublicÚprivateÚ	intrinsicÚintentÚ	parameterÚdataÚcallÚentryÚcallfunÚcommonÚuseÚcontainsÚformatÚf2pyenhancementsz2\s*(?P<before>''')(?P<this>.*?)(?P<after>''')\s*\ZÚ	multilinec           	     ó‚  € \        R4      \        V4      ,          '       d   Q R4       h\        P                  ! RP                  R\        P                  ! V4       R2R\        P                  ! V4       R2RRR	7      4      pVP                  V 4      pV'       d#   VP                  4       pVR
,          VR,          3# V R3# )z¦
Splits the line into (line[:i], line[i:]),
where i is the index of first occurrence of one of the characters
not within quotes, or len(line) if no such index exists
z"'zcannot split by unquoted quoteszR\A(?P<before>({single_quoted}|{double_quoted}|{not_quoted})*)(?P<after>{char}.*)\Zz[^"'Ú]Ú[z('([^'\\]|(\\.))*')z("([^"\\]|(\\.))*"))Ú
not_quotedr9   Úsingle_quotedÚdouble_quotedÚbeforeÚafterr   )Úsetr¼   r½   r  ÚescaperÐ   Ú	groupdict)r/   Ú
charactersr–   rñ   Úds   &&   r(   rÏ   rÏ   —  s±   € ô �E“
œS ›_×,Ô,ÐPÐ/PÓPÐ-Ü
�
Š
ð	!ß!'¡ØœrŸyšy¨Ó4Ð5°QÐ7Ø”R—Y’Y˜zÓ*Ð+¨1Ð-Ø0Ø0ð	 "(ó "2ó	3€Að 	
�‰�‹€AßØ�K‰K‹MˆØ�(•˜Q˜w�ZÐ(Ð(Ø�"ˆ:Ðr'   c                 óÂ   € . p\        V 4      P                  R 4       F/  pR F  pVP                  VR4      pK  	  VP                  V4       K1  	  RP	                  V4      # )ú@,@z(),rî   Ú,)ÚmarkoutercommaÚsplitrÎ   ÚappendrÙ   )ÚargslineÚar§   r–   s   &   r(   Ú_simplifyargsr%  «  sV   € Ø
€AÜ˜HÓ%×+Ñ+¨EÖ2ˆÛˆAØ—	‘	˜!˜SÓ!ŠAñ à	�‰�Žñ 3ð �8‰8�A‹;Ðr'   z"\s*(?P<result>\b[a-z]+\w*\b)\s*=.*z \s*(?P<bind>\b[a-z]+\w*\b)\s*=.*zH\s*bind\(\s*(?P<lang>[^,]+)\s*,\s*name\s*=\s*"(?P<lang_name>[^"]+)"\s*\)c                ó
  € \        V R4      w  r#V'       d¡   \        ^ ,          P                  V 4      '       g   \        ^ ,          P                  V 4      '       g]   V^ 8X  g   Q \	        V4      4       h\        V R4      w  rV'       d#   \        W4       \        VR,          R4      w  rK*  \        W4       R# V^ 8  dq   ^ s\        R/s\        / /s\        . /s	. \        \        ,          R&   / \        \        ,          R&   R\        \        ,          R&   R\        \        ,          R&   R&s
R&sR# V^ 8”  Ed   ^ p\        '       d   \        \        8X  d   ^p\        V8”  d»   \        R	\	        \        4      : R
\	        \        4      : R24       \        R4       \        \        ^,
          ,          P                  \        \        ,          4       \        \        ,          \        \        ^,
          ,          R&,          R&   \        \         \        ^,
          sKÅ  \        '       Ed   \        \        8X  Ed   \        \        ^,
          ,          P                  \        \        ,          4       \        \        ,          \        \        ^,
          ,          R&,          R&   \        \         \        ^,
          s\        \        ^,
          ,          P                  \        \        ,          4       \        \        ,          \        \        ^,
          ,          R&,          R&   \        \         \        ^,
          sR&s
R# V R8X  d   R# ^ p\        \         \"        \$        \&        \(        \*        \,        \.        \0        \2        \4        \6        \8        \:        \<        \>        \@        \B        \D        \F        \H        \J        \        \        \L        3 F.  pV^ ,          P                  V 4      pV'       d    MV^,           pK0  	  X'       Egó   \N        p	^ \        u;8:  d   \        8:  d    R#  R\        \        ,          9   Edb   \        \        ,          R,           EFD  p
V
\P        9   d   \P        V
,          p
R\        \        ,          9   d    V
\        \        ,          R,          9   d   KQ  \R        P                  ! RV
,          \U        V 4      \R        PV                  4      pV'       g   K‘  V	P                  VPY                  R4      4      p\[        VPY                  R4      4      pV'       d   RV
 RV RVPY                  R4       R2p M	RV
 RV R2p \\        ^ ,          P                  V 4      pV'       g   \        R\	        V 4       R24        R# \_        VRV 4        R# 	  \`        ^8”  g5   \`        ^8X  dB   \b        Pe                  4       Pg                  R4      '       d   Rs4\        R\        ,          4       R# X^,          R8X  Ed�   ^ \        u;8:  d   \        8  d"   M M\        ^,
          s\        \        8:  d   R# \        ^ 8:  d   \k        R\        ,          4      h\8        ^ ,          P                  V 4      pV'       dq   VPY                  R4      \        \        ,          8X  gL   \k        R\	        VPY                  R4      4      : R \	        \        \        ,          4      : R!\l        : 24      h\        \        8X  d   R&s\        \        ^,
          ,          P                  \        \        ,          4       \        \        ,          \        \        ^,
          ,          R&,          R&   \        \         \        ^,
          s\n        '       g   ^s8R# R# V^,          R"8X  dC   ^ \        u;8:  d   \        8:  d   M M\        ^,           sR# ^ s9\_        W‡^,          V 4       ^ s8R# V^,          R#8X  d   R# V^,          R$8X  d   \_        W‡^,          V 4       R# V^,          R%8X  d2   \t        '       d   R# ^ \        u;8:  d   \        8:  d    R#  \        sR# ^ \        u;8:  d   \        8:  d    R#  \_        W‡^,          V 4       R# )'z˜
reset=-1  --- initialize
reset=0   --- crack the line
reset=1   --- final check if mismatch of blocks occurred

Cracked data is saved in grouplist[0].
Ú;ºr	   NNNr   ÚbodyÚvarsÚblockro   zcrackline: groupcounter=z groupname=rµ   zYcrackline: Mismatch of blocks encountered. Trying to fix it by assuming "end" statement.
Ú	externalsÚ
interfacedz5(?P<before>[^"]*)\b%s\b\s*@\(@(?P<args>[^@]*)@\)@.*\Zr  Úargszcallfun Ú(z
) result (r¦   Ú)z4crackline: could not resolve function call for line=ú.
r	  r´   z"crackline:%d: No pattern for line
rù   z>crackline: groupcounter(=%s) is nonpositive. Check the blocks.Úthiszcrackline: End group z* does not match with previous Begin group z
	rø   rú   rû   r  r   );rÏ   Úf2pyenhancementspatternrÐ   ÚmultilinepatternrÌ   Ú	crackliner   Ú	groupnameÚ
groupcacher   r   r   r   r1   r"  ÚdimensionpatternÚexternalpatternÚintentpatternÚoptionalpatternÚrequiredpatternÚparameterpatternÚdatapatternÚpublicpatternÚprivatepatternÚintrinsicpatternÚendifpatternÚ
endpatternÚformatpatternr»   ÚfunctionpatternÚsubroutinepatternÚimplicitpatternÚtypespatternÚcommonpatternÚcallpatternÚ
usepatternÚcontainspatternÚentrypatternÚmoduleprocedurepatternÚcrackline_re_1rx   r¼   Úmarkouterparenr¾   rÑ   r%  ÚcallfunpatternÚanalyzeliner   r    rž   Úendswithr%   rÄ   r   r   r   r   r   )r/   Úresetrî   Úhas_semicolonÚsemicolon_lineÚflr0   Úpatrñ   Úre_1ro   Úm1Úm2r$  s   &&            r(   r5  r5  ¸  s4  € ô )¨¨sÓ3Ñ€AßÔ5°aÕ8×>Ñ>¸t×DÒDÜ/°Õ2×8Ñ8¸×>Ò>à˜ŒzÐ&œ4 ›;Ó&ˆzä0°°sÓ;ÑˆßÜ�dÔ"Ü#4°^ÀBÕ5GÈÓ#MÑ ˆD‘.Ü�$ÔÙØˆq„yØˆÜ! 2Ð&ˆ	Ü" BÐ'ˆ
Ü! 2Ð&ˆ	Ø+-Œ
”<Õ  Ñ(Ø+-Œ
”<Õ  Ñ(Ø,.Œ
”<Õ  Ñ)Ø+-Œ
”<Õ  Ñ(ØˆØˆÙØˆq…yØˆß‹=œ\¬\Ô9ØˆBÜ˜RÔÝÜœ,Ö'¬¬i®ð:ô ;äØlônä”l QÕ&Õ'×.Ñ.¬z¼,Õ/GÔHÜ6?ÄÕ6MŒI”l QÕ&Õ'¨Õ+¨FÑ3Üœ,Ð'Ü'¨!Õ+ŠLßŒ=œ\¬\Õ9Ü”l QÕ&Õ'×.Ñ.¬z¼,Õ/GÔHÜ6?ÄÕ6MŒI”l QÕ&Õ'¨Õ+¨FÑ3Üœ,Ð'Ü'¨!Õ+ˆLÜ”l QÕ&Õ'×.Ñ.¬z¼,Õ/GÔHÜ6?ÄÕ6MŒI”l QÕ&Õ'¨Õ+¨FÑ3Üœ,Ð'Ü'¨!Õ+ˆLØˆLÙØˆr„zÙØ€DÜ ¤/´=Ä/ÜÜ ¤+¬}¼nÜ ÜœjÜÜœoÔ/@Ü¤¬}ÜœZ¬ÜÜ'Ü Ü&óˆð ��F�L‰L˜ÓˆßÙØ�a�xŠñ#÷$ ˆ1ÜˆØ”Ö/¤<Õ/Ùð 0àœ*¤\Õ2Õ2Ü"¤<Õ0°×=Ñ=�Øœ;Ô&Ü& tÕ,�DØ¤:¬lÕ#;Ô;ÀÌ
ÔS_ÕH`ÐamÕHnÔ@nÙÜ—X’XØLÈtÕSÔUcÐdhÓUiÔkm×koÑkoóq�ç‘2ØŸ™ B§H¡H¨XÓ$6Ó7�BÜ% b§h¡h¨vÓ&6Ó7�AßØ!)¨$¨¨q°°°:¸b¿h¹hÀxÓ>PÐ=QÐQRÐS™à!)¨$¨¨q°°°1Ð5˜Ü& qÕ)×/Ñ/°Ó5�AßÜØRÔSWÐX\ÓS]ÐR^Ð^aÐbôdâÜ  9¨dÔ3Úñ) >ô* �QŒ;œ7 aœ<¬O×,AÑ,AÓ,C×,LÑ,LÈV×,TÒ,TØ#ÐÜÐ9¼\ÕJÔKÙØ	ˆQ��5�Ø”Ö.¤,×.Ü'¨!Õ+ˆLÜ¤,Ô.ÙÜ˜1ÔÜð 0ä+õ-ó .ð .ô ˜!�_×"Ñ" 4Ó(ˆß˜Ÿ™ &Ó)¬Y´|Õ-DÔDÝä! "§(¡(¨6Ó"2Ö3´T¼)ÄLÕ:QÖ5RÞ-ð/ó ð ô
 œlÔ*Ø ˆOÜ”, Õ"Õ#×*Ñ*¬:´lÕ+CÔDÜ2;¼LÕ2IŒ	”, Õ"Õ# BÕ'¨Ñ/Ü”lÐ#Ü# aÕ'ˆß‹}ØŠKñ à	ˆQ��7Ô	Ø”Ö/¤<×/Ü'¨!Õ+ˆLÙØˆÜ�A˜1•v˜tÔ$ØŠØ	ˆQ��7Ô	ÙØ	ˆQ�Ð$Ô	$Ü�A˜1•v˜tÖ$Ø	ˆQ��:Ô	ß‹>ÙØ”Ö/¤<Õ/Ùð 0ä&Šà”Ö/¤<Õ/Ùð 0ä�A˜1•v˜tÖ$r'   c                 óº   € R p^ pV  FP  pVR8X  d   V^,           pV^8X  d   VR,           pK%  M"VR8X  d   V^,
          pV^ 8X  d   VR,           pKH  W,           pKR  	  V# )r   r/  ú@(@r0  ú@)@r&   )r/   ré   Úfr¹   s   &   r(   rP  rP  V  sq   € Ø
€AØ	€AÛˆØ�Œ8Ø�A•ˆAØ�AŒvØ˜•I�Ùð ð �#ŒXØ�A•ˆAØ�AŒvØ˜•I�ÙØ�EŠñ ð €Hr'   c                 ó¬  € R p^ p\        WR,           4      w  rEW$,          pV'       d’   V^ ,          V8X  d    V^ 8X  d   VRV,           R,           ,          pM>W%^ ,          ,          pV^ ,          R8X  d   V^,          pMV^ ,          R8X  d
   V^,          p\        VR,          VR,           4      w  rEW$,          pK™  V'       d   Q \        W0V34      4       hV# )r   ú()Ú@r/  r0  r(  )rÏ   rÌ   )r/   Úcommaré   r_  r  r  s   &&    r(   r   r   h  s¶   € Ø
€AØ	€AÜ% d°D­LÓ9�M€FØ…K€Aß
Ø�!�H˜Ô A¨¤FØ��u•˜sÕ"Õ"‰Aà�q•�MˆAØ�Q�x˜3ŒØ�Q•‘Ø�q•˜S”Ø�Q•�Ü)¨%°­)°U¸Tµ\ÓB‰ˆØ	�ŠßÐ$”$˜ �|Ó$Ó$ˆ5Ø€Hr'   c                 óJ   € V P                  R R4      P                  RR4      pV# )r]  r/  r^  r0  )rÎ   )r/   r–   s   & r(   Úunmarkouterparenre  {  s$   € Ø�‰�U˜CÓ ×(Ñ(¨°Ó4€AØ€Hr'   c                 ó4  € V '       g   / p V'       g   V # WJ d   V # \        VP                  4       4       Fß  pVR 8X  d   V'       g   W09  d   W,          W&   K$  K&  VR8X  d   W,           F  p\        WV4      p K  	  KJ  VR8X  d   \        WV,          V4      p Kf  VR8X  d   \	        WV,          V4      p K‚  VR9   d   V'       g   W09  d   W,          W&   K£  K¥  VR8X  d   K®  VR	9   d   \        RV R24       KÆ  \        R\        V4      ,           4      h	  V # )
r2   ÚattrspecÚkindselectorÚcharselectorÚnotezappenddecl: "z" not implemented.
z-appenddecl: Unknown variable definition key: )Ú=Útypename)r  Úcheckrý   rÿ   r   Údepend)ÚlistÚkeysÚsetattrspecÚsetkindselectorÚsetcharselectorrm   rÄ   rÀ   )ÚdeclÚdecl2ÚforceÚkré   s   &&&  r(   Ú
appenddeclrx  €  s  € ßØˆßØˆØƒ}ØˆÜ�%—*‘*“,ÖˆØ�
Œ?ß˜œØ�(�“ñ &à�*Œ_Ø—X�X�Ü" 4¨EÓ2’ó à�.Ô Ü" 4¨q­°5Ó9ŠDØ�.Ô Ü" 4¨q­°5Ó9ŠDØÐ#Ô#ß˜œØ�(�“ñ &à�&Œ[ÙØð )ô )ä�m A 3Ð&:Ð;Ö<äÐKÜ ›Fõ#ó $ð $ñ)  ð, €Kr'   zD\s*(?P<this>(@\(@.*?@\)@|\*[\d*]+|\*\s*@\(@.*?@\)@|))(?P<after>.*)\Zz[(?:,(?P<attributes>[\w(),]+))?(::)?(?P<name>\b[a-z$_][\w$]*\b)(?:\((?P<params>[\w,]*)\))?\Zzª\s*(?P<name>\b[\w$]+\b)\s*(@\(@\s*(?P<args>[\w\s,]*)\s*@\)@|)\s*((result(\s*@\(@\s*(?P<result>\b[\w$]+\b)\s*@\)@|))|(bind\s*@\(@\s*(?P<bind>(?:(?!@\)@).)*)\s*@\)@))*\s*\ZzF\s*(?P<scheme>(operator|assignment))@\(@\s*(?P<name>[^)]+)\s*@\)@\s*\Zz9\s*(?P<name>\b[\w$]+\b)\s*@\(@\s*(?P<args>.*)\s*@\)@\s*\Zz4([-+]?(?:\d+(?:\.\d*)?|\d*\.\d+))[dD]((?:[-+]?\d+)?)zA([-+]?((?:\d+(?:\.\d*)?|\d*\.\d+))[eE]((?:[-+]?\d+)?)|(\d+\.\d*))zintent\s*\(.*?\bcallback\bc                 ót   € V P                  R . 4       F!  p\        P                  V4      '       g   K    ^# 	  ^ # )rg  )ÚgetÚ_intentcallbackpatternrÐ   )Úvdeclr$  s   & r(   Ú_is_intent_callbackr}  ´  s0   € Ø�Y‰Y�z 2Ö&ˆÜ!×'Ñ'¨×*Ô*Úñ 'ñ r'   c                 óz  € R P                  V P                  4       4      p \        P                  V 4      p\	        W4       V'       dl   VP                  R4      pV'       d/   VP                  R4       Uu. uF  q3P                  4       NK  	  upM. pVP                  R4      W!P                  R4      3# R. R3# u upi )r   Ú
attributesr  ro   ÚparamsN)rÙ   r!  ÚtypedefpatternrÐ   ÚprintrÑ   rž   )r/   rZ  Úattrsr$  s   &   r(   Ú_resolvetypedefpatternr„  »  s“   € Ø�7‰7�4—:‘:“<Ó €DÜ	×	Ñ	˜dÓ	#€BÜ	ˆ$„Oß	Ø—‘˜Ó&ˆß9> E§K¡K°Ô$4Ó5Ñ$4˜q—‘–Ñ$4Ò5ÀBˆØ�x‰x˜Ó ¯©°Ó(:Ð:Ð:Ø��Tˆ>Ðùò 6s   Á4B8c                 óþ   € \         P                  ! R \         P                  4      pVP                  V 4      pRpV'       d<   VP	                  ^ 4      pV RVP                  4        WP                  4       R ,           p W3# )zObind\(\s*(?P<lang>[^,]+)(?:\s*,\s*name\s*=\s*["\'](?P<name>[^"\']+)["\']\s*)?\)N)r¼   r½   r¾   ÚsearchrÑ   Ústartrù   )r/   ÚpatternrÐ   Úbind_statements   &   r(   Úparse_name_for_bindrŠ  Å  sh   € Ü�jŠjÐkÔmo×mqÑmqÓr€GØ�N‰N˜4Ó €EØ€NßØŸ™ Q›ˆà�N�U—[‘[“]Ð# d¯9©9«;¨<Ð&8Õ8ˆØÐÐr'   c                 ó  € \        V 4      w  r\        V 4      p \        P                  V 4      pV'       d4   VP	                  R 4      VP	                  R4      VP	                  R4      V3# \
        P                  V 4      pV'       d<   VP	                  R4      R,           VP	                  R 4      ,           R,           pV. RR3# \        P                  V 4      pV'       d%   VP	                  R 4      VP	                  R4      RR3# R. RR3# )ro   r.  r¦   Úschemer/  r0  N)rŠ  rP  ÚnameargspatternrÐ   rÑ   ÚoperatorpatternÚcallnameargspattern)r/   Ú
bind_cnamerZ  ro   s   &   r(   Ú_resolvenameargspatternr‘  Ï  sá   € Ü*¨4Ó0Ñ€DÜ˜$Ó€DÜ	×	Ñ	˜tÓ	$€Bß	Ø�x‰x˜Ó §¡¨&Ó!1°2·8±8¸HÓ3EÀzÐQÐQÜ	×	Ñ	˜tÓ	$€Bß	Ø�x‰x˜Ó! CÕ'¨"¯(©(°6Ó*:Õ:¸SÕ@ˆØ�R˜˜tÐ#Ð#Ü	×	"Ñ	" 4Ó	(€Bß	Ø�x‰x˜Ó §¡¨&Ó!1°4¸Ð=Ð=Ø��T˜4ÐÐr'   c                ó F  € V P                  R4      pVR8w  d   Rs\        '       Ed   VR�9  dü   \        '       gð   \        ^8  då   \
        P                  P                  \        4      P                  R4      ^ ,          p\        RV R	24       ^ s\        ^,           sR
\        \        &   / \        \        &   . \        \        &   . \        \        ,          R&   / \        \        ,          R&   R
\        \        ,          R&   V\        \        ,          R&   R\        \        ,          R&   ^ sVR‘9   Ed€   VP                  4       p\         P"                  ! RV\         P$                  4      '       d   RpM]\         P"                  ! RV\         P$                  4      '       d   RpM.\         P"                  ! RV\         P$                  4      '       d   RpVR8X  d@   \'        V P                  R4      4      w  rVpRV/\        \        ,          R,          V&   . pRp	M\)        V P                  R4      4      w  rXršVf   VR8X  d   RpMRpVR’9  d   \        R4       W5\        3sV'       dC   \+        \-        V4      P                  R4       Uu. uF  pVP/                  4       NK  	  up4      pM. pRV9   d&   RV9   d   VP1                  R4       K  \        R4       ^ p^ pVR“9   d�   ^pR\        \        ,          9  d   R# V\        \        ,          R,          9  d   R# \        \        ,           F  pVR,          V8X  g   K   R# 	  V\        \        ,          R ,          9   d   R# RR!RR"/V,          p\2        '       d/   \4        R”8X  d$   \        ^8:  d   \        ^,           s^pVR•9  d   ^p\        ^,           s/ \        \        &   . \        \        &   V'       dð   \6        ^8”  d!   \        R#\9        \2        4      ,          ^ 4       R$\        \        &   R\        \        ,          R&   \2        \        \        ,          R&   R\        \        ,          R&   . \        \        ,          R&   . \        \        ,          R%&   . \        \        ,          R &   / \        \        ,          R&   \        ^,           s/ \        \        &   . \        \        &   V'       Ed$   \6        ^8”  d   \        R&\        ,          ^ 4       R\        \        &   R\        \        ,          R&   R'\        \        ,          R&   \        \        ^,
          ,          R,          : R(\        \        ^,
          ,          R,          : 2\        \        ,          R&   . \        \        ,          R&   . \        \        ,          R%&   . \        \        ,          R &   / \        \        ,          R&   \        ^,           s/ \        \        &   . \        \        &   V\        \        &   V\        \        ,          R&   V'       g   R)VP;                  R*R+4      ,           pV P                  R,4      \        \        ,          R-&   \=        V4      \        \        ,          R&   V	\        \        ,          R.&   \        ^8X  d   \        \        \        ,          R&   M©\2        '       dI   \        ^8X  d>   \        \        ^,
          ,          R,          : R(\        : 2\        \        ,          R&   MU\        \        ^,
          ,          R,          : R(\        \        ^,
          ,          R,          : 2\        \        ,          R&   \?        \        \        ,          PA                  4       4       F5  p\        \        ,          V,          '       d   K#  \        \        ,          V K7  	  V\        \        ,          R&   . \        \        ,          R&   . \        \        ,          R%&   . \        \        ,          R &   / \        \        ,          R&   / \        \        ,          R/&   VR8X  d   . \        \        ,          R0&   VR“9   dì   V\        \        ^,
          ,          R%,          9  d/   \        \        ^,
          ,          R%,          PC                  V4       \D        PF                  ! \        \        ^,
          ,          R,          4      \        \        ,          R&    \        \        ,          R,          V,          \        \        ,          R,          V,          R,          PI                  R14       VR–9   Edâ   X
'       d³   \         PL                  ! \N        V
4      pV'       d�   V/ /\        \        ,          R2&   VP                  R34      \        \        ,          R2,          V,          R3&   VP                  R44      '       d2   VP                  R44      \        \        ,          R2,          V,          R&    \Q        \        \        ,          R,          V,          \        \        ^,
          ,          R,          R,          4      \        \        ,          R,          V&   VR8X  d‹   V	'       dƒ   V	\        \        ,          R,          9   df   WY8X  g`   \Q        \        \        ,          R,          V,          \        \        ,          R,          V	,          4      \        \        ,          R,          V&    \        \        ^,
          ,          R ,          PC                  V4       VR"8X  d   \R        ^ ,          P#                  V P                  R,4      R*,           V,           4      pV'       d>   \U        VP                  R4      VP                  R4      4      w  pppp\W        VVVV4       VR“9   Ed   \        \        ^,
          ,          PC                  \        \        ,          4       \        \        ,          \        \        ^,
          ,          R”,          R&   \        \         \        ^,
          s\        \        ^,
          ,          PC                  \        \        ,          4       \        \        ,          \        \        ^,
          ,          R”,          R&   \        \         \        ^,
          sR# R# VR/8X  dª   \)        V P                  R4      4      w  rXr—Ve‡   V'       dC   \+        \-        V4      P                  R4       Uu. uF  pVP/                  4       NK  	  up4      pM. pV	e   Q \9        V	4      4       hV\        \        ,          R/,          V&   R/V\        3sR# R# VR8X  d?   \U        W0P                  R4      4      w  pppp\W        VVVV4      pVe   R5V\        3sR# R# VR—9   Edã   \        \        ,          R,          pV P                  R4      P/                  4       pVPY                  R84      pV^ 8  dÑ   VR78X  dÊ   \[        V4      PY                  R94      ^,
          pVRV^,            R8,           VV^,           R ,           pVPY                  R84      pVVR R88X  dj   R\        \        ,          9   dT   \        R:V P                  R4      : VRV : R;24       VR<P]                  \        \        ,          R,          4      ,           pV^ 8  d   ^ pRpMVRV P/                  4       pVV^,           R p\-        V4      P                  R4      p\_        V4      ^8”  d2   V^ ,          p\        R=R<P]                  VR>,          4      ,          4       Rp\-        V4      P                  R4       Uu. uF  q»P/                  4       NK  	  up EFÚ  p\`        P#                  V4      pV'       gC   VR˜9   d   RpMR\c        V Pe                  4       4       \        R?V: R@\9        V4      : RA24       Kc  \=        VP                  R4      4      pVR˜9   d    VR™9   d   VVP                  R4      ,          pVV9  d   / VV&   VR68X  d   VVP                  R4      ,           pVR78X  Ed   V P                  R4      V,           p\f        P#                  V4      '       dé   V\        \        ,          R,          9  dº   \        ^8”  dŸ   RB\        \        ^,
          ,          R,          9  d   \        RC4       V\        \        ,          R,          8w  dR   \        RDV: RE\        \        ,          R,          : RF24       \        \        ,          R,          PC                  V4       M"\i        RGV RH24       M\i        RIV,          4       VRš9   d   TpRVV,          9   d!   VV,          R,          PC                  X4       MX.VV,          R&   VR18X  d�   \        \        ,          R,          R
8X  d   \        RJ4       EKg  V\        \        ,          R,          9  d   EK‡  R%\        \        ,          9  d   . \        \        ,          R%&   \        \        ,          R%,          PC                  V4       TpEKÝ  	  V\        \        ,          R&   Ve   R5V\        3sR# R# VRK8X  dR   V P                  R4      P                  R<4       Uu. uF  q»P/                  4       NK  	  up\        \        ,          RL&   R# VRM8X  Edš   \        \        ,          R,          pV P                  R4      P/                  4       ^R” pRp\-        V4      P                  R4       EF  p VP                  RN4       Uu. uF  q»P/                  4       NK  	  upw  pp\k        T4      p\=        T4      pTT9  d   / TT&   RNTT,          9   d<   TT,          RN,          T8X  g'   \        RRT: RSTT,          RN,          : RTT: R	24       \m        TT4      pT'       Ed   TPo                  RU4      RV8X  d¡   \?        T4      p \p        Ps                  T4       Fj  p \?        TT Pu                  4       T Pw                  4        P                  4       P;                  RWRX4      4      T T Pu                  4       T Pw                  4       % Kl  	  RP]                  T 4      pMMTPo                  RU4      RY8X  d8   TR>,          P                  4       P;                  RWRX4      P;                  R<RZ4      p \y        T/ T4      p!\9        T!4      TT,          RN&   RTT,          9   d!   TT,          R,          PC                  RM4       MRM.TT,          R&   TpEK  	  V\        \        ,          R&   Ve   R5V\        3sR# R# VR]8X  EdÌ   V P                  R4      P/                  4       P                  4       R^8X  d   R\        \        ,          R]&   R# V P                  R4      '       Edj   \        \        ,          Po                  R]/ 4      p#V#f   \        R_4       / p#\-        V P                  R4      4      P                  R4       EFó  p/ p$\         P"                  ! R`V\         P$                  4      pV'       g   \        RaV RQ24       KE  \€        P#                  VP                  R4      4      p%V%'       g   \        RbV RQ24       K‚  \U        V%P                  R4      V%P                  R4      4      w  pppp\ƒ        VV4      w  p&p'p(VV$RU&   V&V$Rc&   V'V$Rd&   V(V$Re&   \?        V$PA                  4       4       F  pV$V,          '       d   K  V$V K  	  \-        VP                  R4      4      P                  R4       F½  p)RfV)9   d4    V)P                  Rf4       Uu. uF  q»P/                  4       NK  	  upw  p*p+MV)P/                  4       ;p*p+\_        V*4      \_        V+4      u;8X  d   ^8X  g   M \        RgV) Ri24       Kƒ  \…        \‡        V*4      \‡        V+4      ^,           4       F  p,V$V#\‰        V,4      &   K  	  K¿  	  EKö  	  V#\        \        ,          R]&   R# R# VRj8X  Ed·   . pRp-Rp.^ p/^p0^ p1V P                  R4       FØ  p2V1'       g)   V2Rk8X  d   V0'       * p0V2Rl8X  d   V0'       d   V/^,           p/K3  V2Rm8X  d   V1^,           p1MV2Rn8X  d
   V1^,
          p1V/^ 8X  d   V-V2,           p-Kf  V/^8X  d   V.V2,           p.Kx  V/^8X  g   K�  V-P/                  4       p-V-P‹                  R<4      '       d   V-R>,          P/                  4       p-VPC                  V-V..4       T2p-Rp.^ p/KÚ  	  V/^8X  dR   V-P/                  4       p-V-P‹                  R<4      '       d   V-R>,          P/                  4       p-VPC                  V-V..4       \        \        ,          Po                  R/ 4      p3RpV EF  p4V4^ ,          P/                  4       P�                  R<4      V4^,          P/                  4       uV4^ &   V4^&   V4^ ,          P‹                  Rm4      '       d   \        RoV4^ ,           Rp24       K~  \�        \+        \-        V4^ ,          4      P                  R4       Uu. uF  q»P/                  4       NK  	  up4      4       EF?  w  p5p!V!P‹                  Rm4      '       d   \        RoV! Rp24       K/  RqV4^,          9   d   \        RrV4^,           Rp24       KU  V3P‘                  V!/ 4       V3V!,          Po                  RU4      p6\“        V3V!,          4      p7V6RY8X  d   \         P”                  ! RsV4^,          4      MV4^,          P                  R<4      p8 V7'       d   RtRuP]                  V84       Rv2MV8V5,          p9T3T!,          Po                  RN4      p>T>'       d   T>T98w  d   \        R{T! RST> R|T9 RQ24       T9T3T!,          RN&   T!pEKB  	  EK  	  V3\        \        ,          R&   V'       d   R5V\        3sR# R# VR}8X  Edc   V P                  R4      P/                  4       pV^ ,          Rl8X  g
   R~V,           p. p?\         P                  ! RlV^R7      w  pp@pAV@P/                  4       p@V@'       g   R€p@V?PC                  X@XA.4       / pBR}\        \        ,          9   d   \        \        ,          R},          pBV? F‹  p2V2^ ,          XB9  d   . XBV2^ ,          &   \-        V2^,          4      P                  R4       Uu. uF  q»P/                  4       NK  	  up F,  pV'       g   K  XBV2^ ,          ,          PC                  V4       K.  	  K�  	  XB\        \        ,          R}&   R}X@\        3sR# VR�8X  Ed   \         P"                  ! R‚V P                  R4      \         P$                  4      pV'       Ed­   VPe                  4       pCR�\        \        ,          9  d   / \        \        ,          R�&   VP                  R4      p/ \        \        ,          R�,          V&   ^ pDRƒXC9   Ed;   XCRƒ,          Ee-   R„XC9   d   XCR„,          f   ^pDXD\        \        ,          R�,          V,          R…&   XCRƒ,          P                  R<4       Uu. uF  q»P/                  4       NK  	  pp/ pEV F¸  p4RNV49   dˆ   \         P"                  ! R†V4\         P$                  4      p%V%'       dA   V%P                  R�4      P/                  4       XEV%P                  R‡4      P/                  4       &   M\        Rˆ\9        V44       R;24       MV4XEV4&   XE\        \        ,          R�,          V,          R‰&   Kº  	  R# R# R# \c        V Pe                  4       4       \        RŠ4       R# VR›9   dØ   R‹\        \        ,          9  d   / \        \        ,          R‹&   \        \        ,          R‹,          pFV P                  R4      RŒ8X  d[   RŒXF9   dT   \¡        XFRŒ,          \¢        4      '       d   XFRŒ,          .VFRŒ&   XFRŒ,          PC                  V P                  R4      4       R# V P                  R4      XFV P                  R4      &   R# VR8X  d\   \        f   \6        '       d   \        R�4       R# \        pG\¥        \        VG,          \        RŽ,          V P                  R4      4       R# \6        ^8”  d'   \c        V Pe                  4       4       \        R�4       R# R# u upi   \J         d     ELéi ; i  \J         d     ELÒi ; i  \J         d     EL$i ; iu upi u upi u upi u upi   \J         d    \        ROT RPT RQ24        EK9  i ; i  \z        \|        \~        3 d!   p"\i        R[T: R\T": R;24        Rp"?"EKn  Rp"?"ii ; iu upi   \J         d    \        RgT) Rh24        E
Ka  i ; iu upi   \–         Ed    \˜        ;QJ d    Rw T8 4       F  '       g   K   RxM	  RyM! Rw T8 4       4      '       d¬   . p:T8 F¡  p;RzT;9   dy    T;P                  Rz4      w  p<p=T:P›                  T=P/                  4       .\�        T<4      ,          4       KQ    \ž         d$    T:PC                  T;P/                  4       4        K~  i ; iT:PC                  T;P/                  4       4       K£  	  T:p8T7'       d   RtRuP]                  T84       Rv2MT8T5,          p9 ELei ; iu upi u upi )œa|  
Reads each line in the input file in sequence and updates global vars.

Effectively reads and collects information from the input file to the
global variable groupcache, a dictionary containing info about each part
of the fortran module.

At the end of analyzeline, information is filtered into the correct dict
keys, but parameter values and dimensions are not yet interpreted.
r2  r  Nr  r	  rf   Ú.z=analyzeline: no group yet. Creating program group with name "rk   Úprogramr)  r*  r+  ro   ÚfromskyÚfromzblock\s*dataú
block datazpython\s*moduleúpython modulezabstract\s*interfaceúabstract interfacer  rg  Ú_BLOCK_DATA_r   Ú	interfacez2analyzeline: No name/args pattern found for line.
r  z<analyzeline: argument list is malformed (missing argument).
r.  r-  Ú
subroutineÚfunctionz&analyzeline: Creating module block %s
Úmoduler,  zDanalyzeline: Creating additional interface block (groupcounter=%s).
Úunknown_interfaceÚ:Úunknown_rª   rî   r  Úprefixr¦   r  Úvarnamesrþ   ÚbindlangÚlangÚ	lang_nameÚvariablerý   r  ú::r^  z"All arguments will have attribute rµ   r  zXanalyzeline: cannot handle multiple attributes without type specification. Ignoring %r.
r(  z&analyzeline: no name pattern found in z statement for ú. Skipping.
Ú__user__z8analyzeline: missing __user__ module (could be nothing)
z(analyzeline: appending intent(callback) ú to z arguments
zanalyzeline: intent(callback) z is ignored
z=analyzeline: intent(callback) %s is already in argument list
z(analyzeline: ignoring program arguments
rû   Úimplementedbyr  rk  zAanalyzeline: could not extract name,expr in parameter statement "ú" of "ú"
z1analyzeline: Overwriting the value of parameter "ú" ("z	") with "r2   r3   r  ÚeÚcomplexz+1j*(z analyzeline: Failed to evaluate z. Ignoring: rü   Únonez<analyzeline: Overwriting earlier "implicit none" statement.
z9\s*(?P<this>.*?)\s*(\(\s*(?P<after>[a-z-, ]+)\s*\)\s*|)\Zz@analyzeline: could not extract info of implicit statement part "zIanalyzeline: could not extract types pattern of implicit statement part "rh  ri  rl  Ú-z2analyzeline: expected "<char>-<char>" instead of "z&" in range list of implicit statement
z*" in range list of implicit statement (2)
r  Ú'Ú/r/  r0  zanalyzeline: implied-DO list "z" is not supported. Skipping.
r—   zComment line in declaration "z\(.*?\)ú(/ú, z/)c              3   ó,   "  € T F
  pR V9   x € K  	  R# 5i)r   Nr&   )Ú.0rñ   s   & r(   Ú	<genexpr>Úanalyzeline.<locals>.<genexpr>´  s   é € Ð5©W¨˜3 !ž8«Wùs   ‚TFr   z*analyzeline: changing init expression of "ú") to "r
  z//)ÚmaxsplitÚ_BLNK_r  zR\A\s*(?P<name>\b\w+\b)\s*((,(\s*\bonly\b\s*:|(?P<notonly>))\s*(?P<list>.*))|)\s*\Zro  ÚnotonlyÚonlyz7\A\s*(?P<local>\b\w+\b)\s*=\s*>\s*(?P<use>\b\w+\b)\s*\ZÚlocalz-analyzeline: Not local=>use pattern found in Úmapz0analyzeline: Could not crack the use statement.
r  Úusercodez-analyzeline: No context for multiline block.
:Né   Nz+analyzeline: No code implemented for line.
)rø   r  r	  rf   )rø   r  r	  )r›  r—  r™  )r  r	  r   ©r›  r™  ©r�  rœ  )rý   r  rÿ   r   rþ   r  r  r  ©r  r  >   ÚoperatorÚ
assignment)rÿ   r   r  rþ   r  r  )r  )SrÑ   r%   r   r   r   rƒ   r„   Úbasenamer    r!  r1   r   r6  r7  r   rž   r¼   rÐ   r¾   r„  r‘  ru   r   r£   Úremover   r   r   rÌ   rÎ   rp   ro  rp  r"  ÚcopyÚdeepcopyrY   rÄ   r†  Úcrackline_bindlangrx  rH  Úcracktypespec0Ú
updatevarsÚfindrP  rÙ   rV   Únamepatternr‚  r  r{  rm   Úget_parametersÚdetermineexprtyperz  Úreal16patternÚfinditerr‡  rù   ÚevalÚSyntaxErrorÚ	NameErrorÚ	TypeErrorÚtypespattern4implicitÚcracktypespecr¿   ÚordÚchrrˆ   ÚremoveprefixÚ	enumerateÚ
setdefaultÚgetdimensionÚfindallÚ
IndexErrorÚanyÚextendr6   rÔ   Ú
isinstancerÀ   Úappendmultiline)Hrñ   r=   r/   r+  Únewnamero   rƒ  rî   r.  r¦   Ú	bindclineÚxÚ
needmoduleÚneedinterfaceÚitrw  ÚbindcdatÚtr2   ÚselectorÚattrÚedeclÚ	last_namerá   ÚiÚplÚchr°  rZ  ÚapÚinitexprr€  ÚttÚvrê   Úimplrt  r[  Ú
kindselectÚ
charselectrl  r–   ÚbegcÚendcÚoÚdlÚilr_  ÚfcÚinpr¹   r*  ré   ÚidxÚvtypeÚvdimÚmatchesÚnew_valÚexpanded_listrÐ   Ú
multiplierÚvalueÚcurrent_valÚclÚbnÚolÚ	commonkeyÚmmÚisonlyrí   r  ÚgcsH   &&&                                                                     r(   rR  rR  ß  sz  € ð �G‰G�F‹O€EØˆ{ÔØÐß„{�tÐ#GÔGß‹}¤°Ô!1Ü—'‘'×"Ñ"¤?Ó3×9Ñ9¸#Ó>¸qÕAˆÜØKÈGÈ9ÐTXÐYô	[àˆÜ# aÕ'ˆØ"+Œ	”,ÑØ#%Œ
”<Ñ Ø"$Œ	”,ÑØ+-Œ
”<Õ  Ñ(Ø+-Œ
”<Õ  Ñ(Ø,5Œ
”<Õ  Ñ)Ø+2Œ
”<Õ  Ñ(Ø+4Œ
”<Õ  Ñ(ØˆØÐ+Õ+à—‘“ˆÜ�8Š8�O U¬B¯D©D×1Ò1Ø ‰EÜ�XŠXÐ(¨%´·±×6Ò6Ø#‰EÜ�XŠXÐ-¨u´b·d±d×;Ò;Ø(ˆEØ�FŒ?Ü3°A·G±G¸GÓ4DÓE‰NˆD˜Ø6@À%Ð5HŒJ”|Õ$ VÕ,¨TÑ2ØˆDØ‰Fä,CÀAÇGÁGÈGÓDTÓ,UÑ)ˆD˜ØŠ<Ø˜Ô$Ø%‘à�ØÐMÔMÜÐMÔNà!¬Ð6ÐßÜÜ'5°dÓ';×'AÑ'AÀ%Ô'HóJÙ'H !ð  Ÿg™gžiÙ'HñJó K‰Dð ˆDØ�Œ:Ø˜”*Ø—‘˜B–ÜØOôQð ˆ
ØˆàÐ&Ô&ØˆMØœZ¬Õ5Ô5ÙØœ:¤lÕ3°FÕ;Ô;ÙÜ¤×-Ð-�Ø�f•: Ö%Úñ .ð ”z¤,Õ/°Õ=Ô=ÙØ˜\¨9°jÐAÀ$ÕGˆEß‹=œ\¨RÔ/´LÀAÔ4EÜ'¨!Õ+ˆLØˆJØÐ?Ô?Ø !�ä# aÕ'ˆØ#%Œ
”<Ñ Ø"$Œ	”,ÑßÜ˜Œ{ÜÐAÜœ]Ó+õ,Ø-.ô0à&.ŒI”lÑ#Ø0?ŒJ”|Õ$ WÑ-Ü/<ŒJ”|Õ$ VÑ,Ø/1ŒJ”|Õ$ VÑ,Ø/1ŒJ”|Õ$ VÑ,Ø46ŒJ”|Õ$ [Ñ1Ø57ŒJ”|Õ$ \Ñ2Ø/1ŒJ”|Õ$ VÑ,Ü'¨!Õ+ˆLØ')ŒJ”|Ñ$Ø&(ŒI”lÑ#ßˆ=Ü˜Œ{ÜÐ_Ü õ"Ø#$ô&à&1ŒI”lÑ#Ø0;ŒJ”|Õ$ WÑ-Ø/BŒJ”|Õ$ VÑ,äœ<¨!Õ+Õ,¨V×4Ð4´jÄÐPQÕAQÕ6RÐSY×6Zð0\ŒJ”|Õ$ VÑ,à/1ŒJ”|Õ$ VÑ,Ø46ŒJ”|Õ$ [Ñ1Ø57ŒJ”|Õ$ \Ñ2Ø/1ŒJ”|Õ$ VÑ,Ü'¨!Õ+ˆLØ')ŒJ”|Ñ$Ø&(ŒI”lÑ#Ø"'Œ	”,ÑØ,1Œ
”<Õ  Ñ)ßØ §¡¨c°3Ó 7Õ7ˆDØ-.¯W©W°XÓ->Œ
”<Õ  Ñ*Ü+5°dÓ+;Œ
”<Õ  Ñ(Ø-3Œ
”<Õ  Ñ*Ü˜1ÔÜ/>ŒJ”|Õ$ VÒ,ß‹]œ|¨qÔ0äœ<¨!Õ+Õ,¨V×4Ð4¶oð0GŒJ”|Õ$ VÒ,ô œ<¨!Õ+Õ,¨V×4Ð4´jÄÐPQÕAQÕ6RÐSY×6Zð0\ŒJ”|Õ$ VÑ,ä”j¤Õ.×3Ñ3Ó5Ö6ˆAÜœlÕ+¨A×.Ö.Üœ|Õ,¨QÒ/ñ 7ð ,0Œ
”<Õ  Ñ(Ø+-Œ
”<Õ  Ñ(Ø02Œ
”<Õ  Ñ-Ø13Œ
”<Õ  Ñ.Ø+-Œ
”<Õ  Ñ(Ø,.Œ
”<Õ  Ñ)à�FŒ?Ø35ŒJ”|Õ$ ZÑ0àÐ&Ô&Øœ:¤l°QÕ&6Õ7¸ÕDÔDÜœ<¨!Õ+Õ,¨[Õ9×@Ñ@ÀÔFÜ/3¯}ª}Üœ<¨!Õ+Õ,¨VÕ4ó06ŒJ”|Õ$ VÑ,ðÜœ|Õ,¨VÕ4°TÕ:Üœ|Õ,¨VÕ4°TÕ:¸:ÕF×LÑLÈZÓXðZð Ð.Õ.çÜŸ9š9Ô%7¸ÓC�ßØ<@À"¸:”Jœ|Õ,¨ZÑ8ØIQÏÉÐX^ÓI_”Jœ|Õ,¨ZÕ8¸Õ>¸vÑFØ—~‘~ k×2Ò2ØMUÏ^É^Ð\gÓMhœ
¤<Õ0°Õ<¸TÕBÀ6ÑJðÜ9CÜœ|Õ,¨VÕ4°TÕ:¼JÄ|ÐVWÕGWÕ<XÐY_Õ<`ÐacÕ<dó:f”
œ<Õ(¨Õ0°Ñ6ð �yÔ ß˜f¬
´<Õ(@ÀÕ(HÔHØœ>ÜAKÜ&¤|Õ4°VÕ<¸TÕBÄJÌ|ÕD\Ð]cÕDdÐekÕDlóBnœ
¤<Õ0°Õ8¸Ñ>ðÜœ<¨!Õ+Õ,¨\Õ:×AÑAÀ$ÔGð �JÔÜ˜Q•×%Ñ% a§g¡g¨hÓ&7¸#Õ&=ÀÕ&DÓEˆAßÜ2@Ø—G‘G˜F“O Q§W¡W¨WÓ%5ó37Ñ/�˜( D¨%ä˜8 X¨t°UÔ;àÐ&Õ&Ü”l QÕ&Õ'×.Ñ.¬z¼,Õ/GÔHÜ6?ÄÕ6MŒI”l QÕ&Õ'¨Õ+¨FÑ3Üœ,Ð'Ü'¨!Õ+ˆLÜ”l QÕ&Õ'×.Ñ.¬z¼,Õ/GÔHÜ6?ÄÕ6MŒI”l QÕ&Õ'¨Õ+¨FÑ3Üœ,Ð'Ü'¨!Õ+ŠLñ 'ð 
�ŒÜ 7¸¿¹ÀÓ8HÓ IÑˆ�FØÒßÜ Ü+9¸$Ó+?×+EÑ+EÀeÔ+Ló"NÙ+L að #$§'¡'¦)Ù+Lñ"Nó O‘ð �Ø’>Ð/¤4¨£<Ó/�>Ø6:ŒJ”|Õ$ WÕ-¨dÑ3Ø '¨¬|Ð<Òñ ð 
�ŒÜ*8Ø—7‘7˜7Ó#ó+%Ñ'ˆ�(˜D %ä˜x¨°4¸Ó?ˆ	ØÒ Ø *¨I´|ÐDÒñ !à	ÐnÕ	nÜœ<Õ(¨Õ0ˆØ�W‰W�WÓ×#Ñ#Ó%ˆØ�G‰G�D‹MˆØˆqŒ5�T˜XÔ%Ü˜rÓ"×'Ñ'¨Ó.°Õ2ˆAØ�F�Q˜•U�˜dÕ" R¨¨A­¨ ZÕ/ˆBØ—‘˜“ˆAØ�!�"ˆv˜Œ~ &¬J´|Õ,DÔ"DÝØŸ™ �¨"¨R¨a«&ð2ô 3à˜#Ÿ(™(¤:¬lÕ#;¸FÕ#CÓDÕD�ØˆqŒ5ØˆAØ‰Bà�B�Q�—‘“ˆBØ�A˜•E�F�ˆBÜ˜BÓ×%Ñ% eÓ,ˆÜˆr‹7�QŒ;Ø�A•ˆBÜÐoØ—‘˜˜B�Ó õ"ô #àˆ	ä%3°BÓ%7×%=Ñ%=¸eÔ%DÓEÑ%D —'‘'–)Ñ%DÕEˆAÜ×"Ñ" 1Ó%ˆBßØÐ0Ô0Ø‘Aä˜!Ÿ+™+›-Ô(ÝÛœd 1žgð'ô (áä˜rŸx™x¨Ó/Ó0�ØÐ,Ô,°Ð6PÔ1PØ�R—X‘X˜gÓ&Õ&�Ø˜Œ~Ø��a‘Ø�{Ô"Ø˜BŸH™H WÓ-Õ-�Ø�xÕØ—W‘W˜V“_ rÕ)�Ü)×/Ñ/°×3Ò3Ø¤
¬<Õ 8¸Õ @Ô@Ü'¨!Ô+Ø)´¼LÈ1Õ<LÕ1MÈfÕ1UÔUÜ 'Ø$_ô!að  !¤J¬|Õ$<¸VÕ$DÔDÝ 'Û@AÄ:ÌlÕC[Ð\b×CcÐCcð)eô !fä *¬<Õ 8¸Õ @× GÑ GÈÔ Jøä#Ø"@ÀÀÀ=Ð QõSô  ð !6Ø9:õ!<ô =àÐ]Ô]Ø�Ø˜U 1�XÔ%Ø�a•˜Õ$×+Ñ+¨BÕ/à(* t��a•˜Ñ$Ø�zÔ!ÜœlÕ+¨GÕ4¸	ÔAÜÐGÔHÚØœJ¤|Õ4°VÕ<Ô<ÚØ¤j´Õ&>Ô>Ø<>”Jœ|Õ,¨[Ñ9Üœ<Õ(¨Õ5×<Ñ<¸QÔ?Ø‹Iñi Fðj ,1Œ
”<Õ  Ñ(ØÒ Ø *¨I´|ÐDÒñ !à	Ð"Ô	"à !§¡¨Ó 0× 6Ñ 6°sÔ ;Ó<Ñ ;˜1�W‰WŽYÑ ;Ñ<ô 	”<Õ  Ó1à	�Õ	Üœ<Õ(¨Õ0ˆØ�W‰W�WÓ×#Ñ#Ó% a¨Ð+ˆØˆ	Ü Ó#×)Ñ)¨%×0ˆAðØ23·'±'¸#´,Ó?±,¨QŸw™wžy±,Ñ?‘��8ô
 $ EÓ*ˆFÜ˜1“ˆAØ˜Œ~Ø��a‘Ø�e˜A•hŒ¨¨a­°­¸Ô(AÝÛ�u˜Q•x —}�}£hð0ô 1ä! (¨FÓ3ˆAßˆqØ—5‘5˜Ó$¨Ô.Ü˜h›�BÜ*×3Ñ3°HÖ=˜Ü04Ø$ Q§W¡W£Y¨q¯u©u«wÐ7×=Ñ=Ó?×GÑGÈÈSÓQó1S˜˜1Ÿ7™7›9 Q§U¡U£WÒ-ñ >ð  "Ÿw™w r›{‘HØ—U‘U˜:Ó&¨)Ô3Ø'¨�|×1Ñ1Ó3×;Ñ;¸CÀÓEß™  WÓ-ð ðÜ˜ 2 vÓ.�ô
 ! ›GˆE�!�H�S‰MØ˜U 1�XÔ%Ø�a•˜Õ$×+Ñ+¨KÕ8à(3 }��a•˜Ñ$Ø‹IñI 1ðJ ,1Œ
”<Õ  Ñ(ØÒ Ø *¨I´|ÐDÒñ !à	�Õ	Ø�7‰7�7Ó×!Ñ!Ó#×)Ñ)Ó+¨vÔ5Ø37ŒJ”|Õ$ ZÓ0Ø�W‰W�W×ÓÜœlÕ+×/Ñ/°
¸BÓ?ˆDØŠ|ÜØSôUà�Ü# A§G¡G¨GÓ$4Ó5×;Ñ;¸E×B�Ø�Ü—X’XØPÐRSÔUW×UYÑUYó[�çÜØZÐ[\ÐZ]Ð]aÐbôdáÜ*×0Ñ0°·±¸&Ó1AÓB�ßÜØcÐdeÐcfÐfjÐkômáÜ2@Ø—H‘H˜VÓ$ b§h¡h¨wÓ&7ó39Ñ/�˜( D¨%ä3@Ø˜hó4(Ñ0�
˜J¨à#+��ZÑ Ø'1��^Ñ$Ø'1��^Ñ$Ø#+��ZÑ Ü˜dŸi™i›kÖ*�AØ Ÿ7ž7Ø  šGñ +ô (¨¯©°Ó(9Ó:×@Ñ@ÀÖG�AØ˜a”xð%Ø=>¿W¹WÀS¼\Ó)J¹\¸¯'©'®)¹\Ñ)J™J˜D¡$ð '(§g¡g£iÐ/˜˜tÜ˜t›9¬¨D«	Ö6°QÖ6ÜØPÐQRÐPSÐS~ÐôAá Ü"¤3 t£9¬c°$«i¸!­mÖ<˜Ø'+˜œS ›V›ó =ô Hñ1 CðP 48ŒJ”|Õ$ ZÓ0ñ] ð^ 
��ØˆØˆØˆØˆØˆØˆØ—‘˜Ö!ˆAßØ˜”8Øœ�BØ˜”8§Ø˜A��AÙØ�CŒxØ˜A•g‘Ø�c”Ø˜A•g�Ø�AŒvØ˜!•V’Ø�a”Ø˜!•V’Ø�a–Ø—X‘X“Z�Ø—=‘= ×%Ò%Ø˜B�Ÿ™›�BØ—	‘	˜2˜r˜(Ô#Ø�Ø�Ø’ñ- "ð. �Œ6Ø—‘“ˆBØ�}‰}˜S×!Ò!Ø˜•V—\‘\“^�Ø�I‰I�r˜2�hÔÜœ,Õ'×+Ñ+¨F°BÓ7ˆØˆ	ÜˆAØ˜1�Ÿ™›×2Ñ2°3Ó7¸¸1½¿¹»ˆJˆAˆa‰D�!�A‘$Ø��t�‰˜s×#Ò#ÜÐ8¸¸1½¸Ð>]Ð^Ô_ÙÜ#¤IÄ.ÐQRÐSTÕQUÓBV×B\ÑB\Ð]bÔBcÓ.dÑBc¸Q¯w©w®yÑBcÑ.dÓ$e×f‘��QØ—<‘< ×$Ò$ÜÐ<¸Q¸CÐ?^Ð_Ô`ñ Ø˜!˜A�$”;ô Ð;¸A¸a½D¸6ÐA`ÐaÔbÙØ—‘  2Ô&Ø˜Q�Ÿ™ JÓ/�Ü# D¨¥GÓ,�Ø:?À9Ô:Lœ"Ÿ*š* Z°°1µÔ6ÐRSÐTUÕRV×R\ÑR\Ð]`ÓRa�ðTß=A  4§9¡9¨WÓ#5Ð"6°bÑ9ÀwÈsÅ|�Gð& # 1�gŸk™k¨#Ó.�ß K°7Ô$:ÜÐHÈÈÈ4ÐP[È}Ð\cÐdkÐclÐlpÐqÔrØ&��Q•˜‘Ø“	ôW gñ ðb ,0Œ
”<Õ  Ñ(ßØ *¨I´|ÐDÒñ à	�Õ	Ø�w‰w�wÓ×%Ñ%Ó'ˆØ�A�w˜#Œ~Ø˜$•;ˆDàˆÜ—h’h˜s D°1Ô5‰ˆˆB�Ø�X‰X‹ZˆßØˆBØ
�	‰	�2�r�(ÔØˆ	Ø”z¤,Õ/Ô/Ü"¤<Õ0°Õ:ˆIÛˆAØ��t˜9Ô$Ø"$�	˜!˜A�$‘Ü)7¸¸!½Ó)=×)CÑ)CÀEÔ)JÓKÑ)J A—g‘g–iÑ)JÔK�ß‘1Ø˜a �d•O×*Ñ*¨1Ö-ó Lñ ð .7Œ
”<Õ  Ñ*Ø$ b¬,Ð7ÒØ	��Ü�XŠXØaÐcd×cjÑcjÐkrÓcsÔuw×uyÑuyó{ˆçˆ2Ø—‘“ˆBØœJ¤|Õ4Ô4Ø24”
œ<Õ(¨Ñ/Ø—8‘8˜FÓ#ˆDØ46ŒJ”|Õ$ UÕ+¨DÑ1ØˆFØ˜�|  6¥
Ó 6Ø ”? r¨)¥}Ò'<Ø�FØ@F”
œ<Õ(¨Õ/°Õ5°fÑ=Ø)+¨F­×)9Ñ)9¸#Ô)>Ó?Ñ)> A—g‘g–iÑ)>�Ð?Ø�Û�AØ˜a”xÜŸXšXØVÐXYÔ[]×[_Ñ[_óa˜çØ<>¿H¹HØ %ó='ß',¡u£wð ˜rŸx™x¨Ó0×6Ñ6Ó8Ò9ô $Ø"OÔPTÐUVÓPWÈyÐXZÐ [õ]ð !"˜˜1™ØCE”Jœ|Õ,¨UÕ3°DÕ9¸%Ó@ó ñ !7‰|ô( �!—+‘+“-Ô ÜÐGÖHØ	Ð%Ô	%Ø¤Z´Õ%=Ô=Ø;=ŒJ”|Õ$Ð%7Ñ8Ü”|Õ$Ð%7Õ8ˆØ�7‰7�6‹?˜jÔ(¨Z¸1¬_Ü˜!˜J�-¬×-Ò-Ø!" :¥ ��*‘Øˆj�M× Ñ  §¡¨Ó!1Ö2à!"§¡¨Ó!1ˆAˆa�g‰g�f‹oÓØ	�Ô	ÜÒ#ß‹wÜÐHÔIÙÜˆÜœ
 2�Ü(¨Õ,ØŸ™ ›ö	)ô 
�1ŒÜˆa�k‰k‹mÔÜÐ>Ö?ñ 
ùòoJøôN ô Úðûô ô Úðûô ô Úðüò."NùòL Fùòt =ùò @øÜô ÜØWÐXYÐWZÐZ`ÐacÐ`dÐdhÐiôkãðûô0  ¤¬IÐ6ô ÝÛ#£Sð*ô +æûðüòb *KøÜ(ô %Ü#Ø"TÐUVÐTWÐW~Ð ôAã$ð%üòn /eøô* "õ T÷
 “sÑ5©WÓ5—s—s’sÑ5©WÓ5×5Ò5Ø(*˜Û%,˜EØ" eœ|ð!HØ8=¿¹ÀCÓ8HÑ$5 J°Ø$1×$8Ñ$8¸%¿+¹+»-¸Ì3ÈzË?Õ9ZÖ$[øÜ'1ô !HØ$1×$8Ñ$8¸¿¹»×$Gð!Húð !.× 4Ñ 4°U·[±[³]Ö Cñ &-ð #0˜ß=A  4§9¡9¨WÓ#5Ð"6°bÑ9ÀwÈsÅ|“Gð#TüòV Lùò& @sm  ÊBDã&ABD ç<A&BD& ë4.BD8 ôBE
ý1BEÁJ9BEÁMBEÁMBEÁM6BEÁT BFÁ^	BGÁ^BF<Á^4BGÁjBG#Ám7BG(Ám?BG(ÁtBLÁzBLÂDBD#ÂD"BD#ÂD&BD5ÂD4BD5ÂD8BEÂEBEÂEBEÂEBF ÂE?BF ÂFBF9ÂFBF4ÂF4BF9ÂF<BGÂGBG ÂGBG ÂG(BLÂG?BLÂHBLÂH.BLÂH=ABJÂJBLÂJ*BJ1ÂJ-BLÂJ0BJ1ÂJ1/BLÂK!BLÂLBLc                 ór   € R V 9  d   / V R &   V R ,          pW9  d   . W1&   W1,          P                  V4       R# )Úf2pymultilinesN©r"  )rÑ   Úcontext_nameÚmlr  s   &&& r(   rè  rè    s=   € Ø˜uÔ$Ø"$ˆÐÑØÐÕ€AØÔØˆ‰Ø…O×Ñ˜2Ör'   c                 ó”  € R pR p\         P                  ! RV \         P                  4      '       d   Rp MM\         P                  ! RV \         P                  4      '       d   Rp MV P                  4       P	                  4       p \
        P                  \        V4      4      pV'       g   \        R4       R # VP                  4       p\        VP                  4       4       F  p\        WV,          4      WV&   K  	  V R	9   d   VR,          pVR,          pVP                  R4      pV^ 8¼  d   VR V P                  4       pW^,           R  pWW13# )
Nzdouble\s*complexúdouble complexzdouble\s*precisionzdouble precisionz>cracktypespec0: no kind/char_selector pattern found for line.
r2  r  r¨  )r±  r5   Úlogicalr3   Ú	characterrf   )r¼   rÐ   r¾   r£   rž   ÚselectpatternrP  r1   r  ro  rp  re  rÑ  )r2   rá   rñ  rò  rZ  r  rw  rõ  s   &&      r(   rÏ  rÏ     s  € Ø€HØ€DÜ	‡x‚xÐ# X¬r¯t©t×4Ò4Ø#‰Ü	�ŠÐ'¨´2·4±4×	8Ò	8Ø%‰à—>‘>Ó#×)Ñ)Ó+ˆÜ	×	Ñ	œ^¨BÓ/Ó	0€BßÜØMô	OáØ
�‰‹€AÜ�!—&‘&“(Ž^ˆÜ ¥Ó%ˆ‹ñ àÐQÔQØ�V•9ˆØˆw�ZˆØ
�‰�‹€AØˆA„vØ�"�1ˆv�|‰|‹~ˆØ�A•�ˆZˆØ˜tÐ'Ð'r'   z)\s*(?P<name>\b\w+\b)\s*(?P<after>.*)\s*\ZzB\s*(\(\s*(kind\s*=)?\s*(?P<kind>.*)\s*\)|\*\s*(?P<kind2>.*?))\s*\Zz2\s*(\((?P<lenkind>.*)\)|\*\s*(?P<charlen>.*))\s*\Zz§\s*(kind\s*=\s*(?P<kind>.*?)\s*(@,@\s*len\s*=\s*(?P<len>.*)|)|(len\s*=\s*|)(?P<len2>.*?)\s*(@,@\s*(kind\s*=\s*|)(?P<kind2>.*)|(f2py_len\s*=\s*(?P<f2py_len>.*))|))\s*\Zz¿\s*(@\(@\s*(?!/)\s*(?P<array>.*?)\s*@\)@\s*\*\s*(?P<len>.*?)|(\*\s*(?P<len2>.*?)|)\s*(@\(@\s*(?!/)\s*(?P<array2>.*?)\s*@\)@|))\s*(=\s*(?P<init>.*?)|(@\(@|)/\s*(?P<init2>.*?)\s*/(@\)@|)|)\s*\Zc                 óL  € V P                  4       p \        V 4      ^8:  d   V # V ^ ,          p\        ^\        V 4      ^,
          4       FI  pW,          R8X  d+   W^,           ,          R9   g   W^,
          ,          R9   d   K:  WV,          ,           pKK  	  WR,          ,           pV# )r	   rª   z()[]{}=+-/* r   )r£   rV   r¿   )ÚexprÚexpr2rõ  s   &  r(   Úremovespacesr#  I  s…   € Ø�:‰:‹<€DÜ
ˆ4ƒy�A„~ØˆØ��G€EÜ�1”c˜$“i !•mÖ$ˆØ�G�sŒNØ�q•5�k˜^Ô+Ø˜!•e• Ô.ÙØ˜Q�•Šñ %ð ˜•HÕ€EØ€Lr'   c                óâ   € RpRpRpRpV  F`  pVR8X  d   VR9   d   W,          pTpK  V'       g
   VR9   d   TpWS8X  d	   V'       * pMVR8X  d   V'       d   VR,          pKV  W,          pTpKb  	  V# )	zÿ
The function replace all spaces in the input variable line which are
surrounded with quotation marks, with the triplet "@_@".

For instance, for the input "a 'b c'" the function returns "a 'b@_@c'"

Parameters
----------
line : str

Returns
-------
str

r   FNÚ\rª   ú@_@)r%  r´  Ú")r´  r'  r&   )r/   ÚfragmentÚinsideÚcurrent_quoteÚescapedr¹   s   &     r(   Úmarkinnerspacesr,  X  s…   € ð  €HØ€FØ€MØ€GÛˆØ�dŒ?˜qÐ$5Ô5Ø�MˆHØˆGÙß˜!˜{Ô*ØˆMØÔØ”Z‰FØ�#ŒXŸ&Ø˜ÕˆHÙØ�ˆØŠñ ð €Or'   c                ó\  € Rp\        W4      w  rVpV'       dÁ   \        V4      P                  R4       Uu. uF  qˆP                  4       NK  	  pp. p	\        P
                  ! R4      p
V Fj  pV'       g   K  V
P                  V4      pV'       d4   VP                  R4      P                  4       pWÛ\        V4      R ,           pV	P                  V4       Kl  	  T	p\        V4      P                  R4       Uu. uF  qˆP                  4       NK  	  pp. pV F€  p\        \        \        V4      4      RR7      P                  R4       Uu. uF  qˆP                  4       NK  	  up F.  pV'       g   K  VP                  VP                  RR4      4       K0  	  K‚  	  V EFÿ  p\        P                  V4      pV'       g   \        R	\!        V4       R
24       K;  \#        VP                  R4      4      p/ pV\$        \&        ,          R,          9   Ed¾   \$        \&        ,          R,          V,          P)                  4       pRV9  pV'       d   V VR&   M5V '       d.   V VR,          8X  g    \        RV: RVR,          : RV : R24       RV9  d   \(        P(                  ! V4      VR&   M¬V'       d¥   \+        VP-                  4       4       F‡  pVVR,          9   dP   VV,          VR,          V,          8X  g4   \        RV: RV: RVR,          V,          : RVV,          : R2	4       K`  \(        P(                  ! VV,          4      VR,          V&   K‰  	  RV9  d,   V'       d$   V'       d   VVR&   MÁ\/        RV: RV: R24       M¬V'       d¥   \+        VP-                  4       4       F‡  pVVR,          9   dP   VV,          VR,          V,          8X  g4   \        RV: RV: RVR,          V,          : RVV,          : R2	4       K`  \(        P(                  ! VV,          4      VR,          V&   K‰  	  RV9  d   VVR&   M5V'       d.   VR,          V8X  g    \        RV: RVR,          : RV: R24       RV9  d   \(        P(                  ! V4      VR&   M£V'       d2   V F+  pVVR,          9  g   K  VR,          P                  V4       K-  	  Mi\(        P(                  ! V 4      VR&   \(        P(                  ! V4      VR&   \(        P(                  ! V4      VR&   VVR&   \(        P(                  ! V4      VR&   RVP1                  R4      ;'       g    . 9   do   V\$        \&        ,          R,          9   dR   R\$        \&        ,          9  d   . \$        \&        ,          R&   \$        \&        ,          R,          P                  V4       VP                  R 4      '       Ed1   \2        P                  \5        VP                  R 4      4      4      pV'       EdÓ   VP7                  4       pR7 F4  pVVR$,           ,          f   K  VVR$,           ,          VV&   VVR$,            K6  	  \+        VP-                  4       4       F(  pVV,          e   \9        VV,          4      VV&   K%  VV K*  	  R!V9   dÂ   R"V9   d»   VR!,          R%8X  d   VR",          VR!&   VR" MœV R&8X  dK   RV9  g   VR,          '       g   / VR&   R!VR,          9   d   VR,          R! VR!,          VR,          R'&   VR! MKVR",          R(,           VR!,          ,           VR"&   VR! \/        R)V : RV: R*V : RV: R+VR",          : R,24       R!V9   dŠ   V R89   d3   RV9  g   VR,          '       g   / VR&   VR!,          VR,          R'&   VR! MPV R&8X  dJ   RV9  g   VR,          '       g   / VR&   R!VR,          9   d   VR,          R! VR!,          VR,          R'&   VR! R#V9   dP   R-V9   d=   VR-,          VR#,          8X  g(   \        R.V: RVR-,          : RVR#,          : R24       MVR#,          VR-&   R"V9   dŽ   R/VR",           R02pRV9  g   VR,          '       g   V.VR&   MŒVR,          P                  V4       VR,           F>  pVR1,          R28X  g   K  VV8w  g   K  VR,          R9 \/        RV: R3V: R4V: R24        M+	  M(\        R5VVP                  R 4      ,           ,          4       \+        VP-                  4       4       F  pVV,          '       d   K  VV K  	  V\$        \&        ,          R,          V&   R6\$        \&        ,          9   d(   \$        \&        ,          R6,          P                  V4       TpEK  	  V# u upi u upi u upi ):zÇ
Returns last_name, the variable name without special chars, parenthesis
    or dimension specifiers.

Alters groupcache to add the name, typespec, attrspec (and possibly value)
of current variable.
Nr  z(?P<start>[a-zA-Z]+)r‡  rª   ©rc  z@ @r&  z-updatevars: no name pattern found for entity=r©  ro   r*  r2   z+updatevars: attempt to change the type of "r¯  r¼  z". Ignoring.
rh  z0updatevars: attempt to change the kindselector "r­  ri  zupdatevars:z*: attempt to change empty charselector to r¸   z0updatevars: attempt to change the charselector "rl  z/updatevars: attempt to change the typename of "rg  rþ   r.  r,  r  rV   ÚarrayÚinitÚ2r   r  r   r  zupdatevars: "z" is mapped to "r/  z)"
rk  z6updatevars: attempt to change the init expression of "ú
dimension(r0  ºNé	   Nrý   z: attempt to change r«  z?updatevars: could not crack entity declaration "%s". Ignoring.
r£  )rV   r/  r0  ©r±  r5   r  r3   r   )rÜ  r   r!  r£   r¼   r½   rÐ   rÑ   rž   rV   r"  r#  r,  rÎ   rÒ  r1   rÌ   rp   r7  r   rÌ  ro  rp  rm   rz  ÚlenarraypatternrP  r  re  )r2   rñ  rg  Ú
entitydeclrô  rý  rþ  rl  rë  ré   r¹   r$  rñ   ÚsÚelÚel1r°  Úe1Úenameró  Únot_has_typespecrw  rZ  Úd1ÚlkÚdmÚdm1s   &&&&                       r(   rÐ  rÐ  }  s2  € ð €IÜ'4°XÓ'HÑ$€J˜HçÜ'5°hÓ'?×'EÑ'EÀeÔ'LÓMÑ'L !—G‘G–IÑ'LˆÐMØˆÜ�JŠJÐ.Ó/ˆÛˆAßÙØ—‘˜“
ˆAßØ—G‘G˜GÓ$×*Ñ*Ó,�Øœ#˜a›&˜'˜
•N�Ø�H‰H�QŽKñ ð ˆÜ+¨JÓ7×=Ñ=¸eÔDÓ	EÑD˜�'‰'Ž)ÑD€BÐ	EØ
€CÛˆÜ&4´\Ä/ÐRSÓBTÓ5UÐ]`Ô&a×&gÑ&gÐhmÔ&nÓoÑ&n —7‘7–9Ñ&nÔoˆBß‰rØ—
‘
˜2Ÿ:™: e¨SÓ1Ö2ó pñ ô ˆÜ×Ñ˜aÓ ˆßÜØ?ÄÀQÃ¸yÈÐVôXáÜ˜1Ÿ7™7 6›?Ó+ˆØˆØ”Jœ|Õ,¨VÕ4Õ4Üœ|Õ,¨VÕ4°UÕ;×@Ñ@ÓBˆEØ)°Ñ6ÐßØ$,��jÒ!ß 8¨u°ZÕ/@Ô#@ÝÛ˜5 ×,Ð,«hð8ô 9à UÔ*Ü(,¯	ª	°*Ó(=��nÒ%ßÜ˜jŸo™oÓ/Ö0�AØ˜E .Õ1Ô1¸:Àa½=ÈEÐR`ÕLaÐbcÕLdÔ;dÝÛ›u e¨NÕ&;¸A×&>Ð&>À
È1ÇÀð!Oö Pô 48·9²9¸ZÈ½]Ó3K˜˜nÕ-¨aÓ0ñ 1ð  UÔ*¯zß#Ø,6�E˜.Ò)åÛ$£jð2õ 3çÜ˜jŸo™oÓ/Ö0�AØ˜E .Õ1Ô1¸:Àa½=ÈEÐR`ÕLaÐbcÕLdÔ;dÝÛ›u e¨NÕ&;¸A×&>Ð&>À
È1ÇÀð!Oö Pô 48·9²9¸ZÈ½]Ó3K˜˜nÕ-¨aÓ0ñ 1ð  Ô&Ø$,��jÒ!ß 5¨Õ#4¸Ô#@ÝÛ˜5 ×,Ð,«hð8ô 9à Ô&Ü$(§I¢I¨hÓ$7��jÒ!ßÛ!�AØ  jÕ 1Ö1Ø˜jÕ)×0Ñ0°Ö3ñ "øô !%§	¢	¨(Ó 3ˆE�*ÑÜ$(§I¢I¨jÓ$9ˆE�.Ñ!Ü$(§I¢I¨jÓ$9ˆE�.Ñ!Ø (ˆE�*ÑÜ $§	¢	¨(Ó 3ˆE�*ÑØ˜%Ÿ)™) JÓ/×5Ð5°2Ô6¸1Ä
Ì<Õ@XÐY_Õ@`Ô;`Ø¤*¬\Õ":Ô:Ø8:”
œ<Õ(¨Ñ5Ü”|Õ$ [Õ1×8Ñ8¸Ô;Ø�7‰7�7×ÓÜ ×&Ñ&¤~°a·g±g¸gÓ6FÓ'GÓHˆBßˆrØ—\‘\“^�Û2�BØ˜"˜s�(•|Ô/Ø!# B¨¥H¥˜˜2™Ø˜r C�xšLñ 3ô ˜bŸg™g›iž�AØ˜!•uÒ(Ü 0°°AµÓ 7˜˜1›à˜qšEñ	 )ð ˜B”; 7¨b¤=Ø˜%•y B”Ø$& w¥K˜˜5™	Ø˜w™KØ! [Ô0Ø*°%Ô7ÀÀ~×AVÔAVØ46˜E .Ñ1Ø  E¨.Õ$9Ô9Ø % nÕ 5°eÐ <Ø57¸µY˜˜nÕ-¨cÑ2Ø˜u™Ià&(¨¥k°CÕ&7¸"¸U½)Õ&C˜˜7™Ø˜u˜IÝÛ$£a«³5¸"¸W¿+¸+ð!Gô Hð ˜B”;ØÐ#LÔLØ*°%Ô7ÀÀ~×AVÔAVØ46˜E .Ñ1Ø57¸µY˜˜nÕ-¨cÑ2Ø˜u™IØ! [Ô0Ø*°%Ô7ÀÀ~×AVÔAVØ46˜E .Ñ1Ø  E¨.Õ$9Ô9Ø % nÕ 5°eÐ <Ø57¸µY˜˜nÕ-¨cÑ2Ø˜u˜Ià˜R”<Ø˜e”|¨U°3­Z¸2¸f½:Ô-EÝÛ! 5¨§: :¨r°&¯z¨zð!;õ <ð &(¨¥Z˜˜c™
à˜b”=Ø% b¨¥k ]°!Ð4�BØ!¨Ô.°u¸Z×7HÔ7HØ-/¨D˜˜jÒ)à˜jÕ)×0Ñ0°Ô4Ø#(¨×#4Ð#4˜CØ" 2�w¨+Ö5¸#À¾)Ø$)¨*Õ$5°bÐ$9Ý 'Û+0³#³rð);ô !<á %ñ $5øô ÐZØ˜AŸG™G GÓ,Õ,õ.ô /ä�e—j‘j“lÖ#ˆAØ˜—8–8Ø˜!’Hñ $ð 38Œ
”<Õ  Õ(¨Ñ/Øœ¤LÕ1Ô1Ü”|Õ$ ZÕ0×7Ñ7¸Ô>Ø‹	ñK ðL Ðùòq Nùò 
Fùò ps   µfÃ5f$Åf)c                 ój  € R pR pR pV'       Ed¢   V R9   dº   \         P                  V4      pV'       g   \        R\        V4       R24       R # VP	                  4       pVR,          VR&   VR \        VP                  4       4       F  pW%,          '       d   K  W% K  	  \        VP                  4       4       F  w  rV\        V4      W%&   K  	  EMáV R8X  EdY   \        P                  V4      pV'       g   \        R\        V4       R24       R # VP	                  4       pVR,          VR&   VR VR,          '       d�   \        P                  \        VR,          4      4      pVP	                  4       pR F<  pWxR	,           ,          '       d   WxR	,           ,          Wx&   Wx,          W8&   WxR	,            K>  	  VR
,          e   VR
,          VR
&   VR \        VP                  4       4       F  pW5,          '       d   K  W5 K  	  \        VP                  4       4       F  w  rV\        V4      W5&   K  	  M�V R8X  dc   \        P                  ! RV\        P                  4      pV'       d   VP                  R4      pM:\        R\        W,           4      ,          4       M\        R\        V4       R24       W#V3# )Nz1cracktypespec: no kindselector pattern found for rµ   Úkind2r   r  z1cracktypespec: no charselector pattern found for ÚcharlenÚlenkindr1  Úf2py_lenrf   z\s*\(\s*(?P<name>\w+)\s*\)ro   z'cracktypespec: no typename found in %s
z$cracktypespec: no selector used for r5  )rV   Úkind)rh  rÐ   r1   rÌ   r  ro  rp  Úitemsrp   ri  Úlenkindpatternr   r¼   r¾   rÑ   )	r2   rñ  rý  rþ  rl  rw  rõ  rE  r?  s	   &&       r(   rÜ  rÜ  &  sd  € Ø€JØ€JØ€Hß€xØÐ@Ô@Ü%×+Ñ+¨HÓ5ˆJßÜØGÌÈXËÐGWÐWYÐZô\áØ#×-Ñ-Ó/ˆJØ(¨Õ1ˆJ�s‰OØ˜7Ð#Ü˜*Ÿ/™/Ó+Ö,�Ø!—}–}Ø"šñ -ô ˜Z×-Ñ-Ó/Ö0‘�Ü *¨1£�
“ó 1à˜Õ$Ü%×+Ñ+¨HÓ5ˆJßÜØGÌÈXËÐGWÐWYÐZô\áØ#×-Ñ-Ó/ˆJØ(¨Õ3ˆJ�s‰OØ˜9Ð%Ø˜)×$Ô$Ü(×.Ñ.Ü" :¨iÕ#8Ó9ó;�à!×+Ñ+Ó-�Û)�BØ C�x×(Ô(Ø&-°3­hÕ&7˜™Ø%,¥[�J‘NØ S¥Ò)ñ	 *ð
 ˜:Õ&Ò2à-4°ZÕ-@�J˜zÑ*Ø˜9Ð%Ü˜*Ÿ/™/Ó+Ö,�Ø!—}–}Ø"šñ -ô ˜Z×-Ñ-Ó/Ö0‘�Ü *¨1£�
“ò 1à˜ÔÜ—x’xÐ =¸xÌÏÉÓNˆHßØ#Ÿ>™>¨&Ó1‘äÐBÜ˜hÕ1Ó2õ4õ 5ô Ð:¼4À»>Ð:JÈ"ÐMÔNØ 8Ð+Ð+r'   c                 óR  € V '       g   / p V'       g   V # R V 9  d	   V.V R &   V # V'       d   V R ,          P                  V4       WR ,          9   d   V # VR8X  d)   RV R ,          9  d   V R ,          P                  V4       V # VR8X  d)   RV R ,          9  d   V R ,          P                  V4       V # VR8X  d)   RV R ,          9  d   V R ,          P                  V4       V # VR8X  d)   RV R ,          9  d   V R ,          P                  V4       V # V R ,          P                  V4       V # )rg  rH   Ú	automaticr  r  r  )rt  rò  rv  s   &&&r(   rq  rq  a  s+  € ßØˆßØˆØ˜ÔØ ˜6ˆˆZÑØˆßØˆZÕ×Ñ Ô%Ø�JÕÔØˆØˆxÔ˜K¨t°JÕ/?Ô?ØˆZÕ×Ñ Ô%ð €Kð 
�Ô	 °°jÕ1AÔ!AØˆZÕ×Ñ Ô%ð €Kð 
�Ô	Ø˜D Õ,Ô,Ø�Õ×#Ñ# DÔ)ð €Kð 
�Ô	Ø˜4 
Õ+Ô+Ø�Õ×#Ñ# DÔ)ð €Kð 	ˆZÕ×Ñ Ô%Ø€Kr'   c                 óÚ   € V '       g   / p V'       g   V # R V 9  d   WR &   V # \        VP                  4       4       F,  pV'       g   W0R ,          9  g   K  W,          V R ,          V&   K.  	  V # )rh  ©ro  rp  ©rt  Úselrv  rw  s   &&& r(   rr  rr  |  sa   € ßØˆßØˆØ˜TÔ!Ø"ˆ^ÑØˆÜ�#—(‘(“*Öˆß�A .Õ1Ö1Ø&)¥fˆD�Õ  Ó#ñ ð €Kr'   c                 óÚ   € V '       g   / p V'       g   V # R V 9  d   WR &   V # \        VP                  4       4       F,  pV'       g   W0R ,          9  g   K  W,          V R ,          V&   K.  	  V # )ri  rM  rN  s   &&& r(   rs  rs  Š  sa   € ßØˆßØˆØ˜TÔ!Ø"ˆ^ÑØˆä�#—(‘(“*Öˆß�A .Õ1Ö1Ø&)¥fˆD�Õ  Ó#ñ ð €Kr'   c                 ó&   € R V 9   d
   V R ,          # V# rn   r&   )r+  Úunknowns   &&r(   ÚgetblocknamerS  ™  s   € Ø�„Ø�V�}ÐØ€Nr'   c                 óZ   €  R V R,           RV R,           R2s R#   \         d     R# i ; i)zIn: r–  r   ro   rµ   N)r   rÄ   )r+  s   &r(   ÚsetmesstextrU  ¡  s6   € ðØ! %¨¥- °°%¸µ-°ÀÐCÒøÜô Úðús   ‚ ›*©*c                 óz   € / pR V 9   d   \        V R ,          4      pRV 9   d   VP                  V R,          4       V# )Úparent_blockr  )Úget_usedictÚupdate)r+  Úusedicts   & r(   rX  rX  ª  s:   € Ø€GØ˜ÔÜ˜e NÕ3Ó4ˆØ�„~Ø�‰�u˜U•|Ô$Ø€Nr'   c           
      ó  € Vf   / p\        V 4      pV'       g   V# \        VP                  4       4       FÐ  w  r4VP                  4       pV\        9  d&   \        RV: RV P                  R4      : R24       KE  \        V,          p\        V4      pV'       g   Kg  V'       d   \        RV R24       \        VP                  4       4       F5  w  rxWq9   d'   \        R\        V4      : R\        V4      : R24       W�V&   K7  	  KÒ  	  V# )	Nzget_useparameters: no module z info used by ro   rµ   zget_useparameters: mapping for z not impl.
z(get_useparameters: overriding parameter z with value from module )
rX  ro  rH  rž   r   r1   rz  rÓ  rm   rÌ   )	r+  Ú	param_maprZ  ÚusenameÚmappingÚmvarsr€  rw  rû  s	   &&       r(   Úget_useparametersr`  ³  sá   € ð ÒØˆ	Ü˜%Ó €GßØÐÜ  §¡£Ö1ÑˆØ—-‘-“/ˆØœ-Ô'ÝÛ˜eŸi™i¨Ö/ð1ô 2áÜ˜gÕ&ˆÜ Ó&ˆßÙçÜÐ5°g°Y¸lÐKÔLÜ˜Ÿ™›Ö(‰DˆAØŒ~ÝÜ59¸!¶W¼dÀ7¾mðMô Nà�a‹Ló	 )ñ 2ð& Ðr'   c           	      óT  € \         '       g   V # \        V \        4      '       d&   V  Uu. uF  p\        W1R ,           VR7      NK  	  ppV# \	        V 4       \        V RV R,           R2^ 4       Vf   \        V 4      pVep   RV 9   di   V R,          p\        VP                  4       4       FB  pWV,          pRV9   g   K  VR,          pRV9   g   K&  VR,          p	W’9   g   K7  W),          VR&   KD  	  V R,           U
u. uF  p
\        W¡R ,           VR7      NK  	  pp
W°R&   V # u upi u up
i )	r˜   )Útabr\  úBlock: ro   rµ   r*  rh  rG  r)  )r   rç  ro  Ú
postcrack2rU  r1   r`  rp  )r+  rb  r\  ÚgÚretr*  r§   ÚvarrG  ÚvalÚbÚnew_bodys   &&&         r(   rd  rd  Ñ  s)  € ÷ ‹=ØˆÜ�%œ×ÒáóÙ�1ô ˜! t¥°y×AÙð 	ð àˆ
Ü�ÔÜˆsˆe�7˜5 �=˜/¨Ð,¨aÔ0àÒÜ% eÓ,ˆ	àÒ ¨5¤Ø�V�}ˆÜ�d—i‘i“kÖ"ˆAØ•'ˆCØ Ö$Ø˜>Õ*�Ø˜T–>Ø˜v�,�CØÖ'Ø'0¥~˜˜V›ñ #ð ˜vžó(Ù&�Aô ˜1¨¥*¸	×BÙ&ð ð (àˆ&�Mà€Lùò/ùò&(s   ©D Ã;D%c                óŽ  € \        V \        4      '       dm   . p. pV  FZ  p\        V4       \        WRR,           R7      pRV9   d"   RVR,          9   d   VP	                  V4       KI  VP	                  V4       K\  	  WC,           # \        V 4       \        V \
        4      '       g#   RV 9  d   \        R\        V 4      ,           4      hRV 9   d(   V R,          R8X  g   \        V RV R,           R	2^ 4       \        V 4      p \        V 4      p \        V 4      V R
&   \        V R
,          4      V R&   V P                  R4      '       d
   V R,          p\        WVR7      V R&   . pRV 9   dE   V R,          p\        VP                  4       4       F  pRV9   g   K  VP	                  V4       K  	  M/ pRp	RV 9   d
   V R,          p	V P                  R4      '       Edä   . p
RV 9   d
   V R,          p
\         P                   ! V R
,          4      pV	'       d   V	R,           pMRpWÆ9   d!   ^pV RV 2V9   d   V^,           pK  V RV 2pRRR. R
/ RV	R,           /pV R,           EF  pWú9   dÐ   . pRpV R,           F¤  pV^,           pVR,          R8X  g   K  RpVR,           FE  pV^,           pRV9   g   K  VR,          V8X  g   K%  \         P                   ! V4      pVR,          V  M	  V'       g   Kz  VR,          '       g   V R,          V WªP#                  V4        M	  VR,          P	                  V4       KÙ  Wû9   g   Ká  \%        W¿,          4      '       d   Kú  W¿,          VR
,          V&   EK  	  VR
,          '       g   VR,          '       d2   W R&   RRRV.R
/ RVRV R,          /p/ W|&   \&        P	                  V4       V'       d   WpR&   V # )zY
TODO:
      function return values
      determine expression types if in argument list
r˜   ©rb  ro   rª  r+  z0postcrack: Expected block dictionary instead of rŸ  rc  rµ   r*  Úsortvarsr.  r)  r  r   r,  r-  Ú__user__routinesÚunknown__user__routinesrî   r›  Ú_user_interfacer˜  r   )rç  ro  rU  Ú	postcrackr"  ÚdictrÄ   rÀ   r1   ÚanalyzeargsÚanalyzecommonÚanalyzevarsÚsortvarnamesrz  Úanalyzebodyrp  rÌ  rY   Ú
isexternalr   )r+  r.  rb  ÚgretÚuretre  ÚuserisdefinedÚuseblockrw  ro   r-  r_  Úmnamerõ  r›  r°  ÚedefÚjri  ÚbbÚmblocks   &&&                  r(   rq  rq  ñ  s�  € ô �%œ×ÒØˆØˆÛˆAÜ˜ŒNÜ˜! t¥Ô,ˆAà˜Œ{˜z¨Q¨v­YÔ6Ø—‘˜A–à—‘˜A–ñ ð �{ÐÜ�ÔÜ�eœT×"Ò" w°eÔ';ÜÐJÜ˜E›
õ#ó $ð 	$à�„˜u V�}Ð0CÔCÜ�3�%�w˜u V�}˜o¨RÐ0°!Ô4Ü˜Ó€EÜ˜%Ó €EÜ Ó&€Eˆ&�MÜ$ U¨6¥]Ó3€Eˆ*ÑØ‡y�y�×ÒØ�V�}ˆÜ °Ô5€Eˆ&�Mà€MØ�„~Ø˜•<ˆÜ�h—m‘m“oÖ&ˆAØ˜QŽØ×$Ñ$ QÖ'ò 'ð ˆØ€DØ�„Ø�V�}ˆà‡y�y�×ÓØˆ
Ø˜5Ô Ø˜|Õ,ˆJÜ—	’	˜% �-Ó(ˆßØÐ-Õ-‰Eà-ˆEØÔ!ØˆAØ�G˜1˜Q˜C�. MÔ1Ø˜•E’Ø�g˜Q˜q˜c�NˆEØ˜k¨6°2Ø˜R ¨Ð0AÕ)AðCˆ	à�{×#Ñ#ˆAØŒØ�Ø�Ø˜vŸ˜�AØ˜A��AØ˜•z [Ö0Ø˜Ø"# F§) )˜BØ ! A¥˜AØ%¨ž|°°6µ
¸a¶Ü'+§y¢y°£} Ø$% f¥I¨a LÙ %ñ #,÷  ™4Ø#$ V§9¤9Ø$)¨&¥M°!Ð$4Ø *×+;Ñ+;¸AÓ+>Ð ?Ù!ñ 'ð ˜&Õ!×(Ñ(¨Ö.Ø–¤J¨u­x×$8Ô$8Ø',¥x�	˜&Õ! !Ô$ñ+ $ð, �V×Ô 	¨&× 1Ô 1Ø",�,ÑØ˜°Øð9Ø" B¨°°|ÀUÈ;ÕEWðYˆFà ˆH‰OÜ×Ñ˜vÔ&ßØˆe‰Ø€Lr'   c                 óv  € . p. p\        V P                  4       4       FI  pR W,          9   d)   W,          R ,          '       d   VP                  V4       K8  VP                  V4       KK  	  \        V4      p^ pV'       dº   V^ ,          p^ pVR,           F  pWpV,          R ,          9   g   K  ^p M	  V'       dV   VR,          V.,           pV^,           pWT8”  d4   \	        RRP                  V4      ,           R,           4       W,           p V# K˜  VP                  V4       VR,          p\        V4      p^ pKÁ  V# )rn  r(  zTsortvarnames: failed to compute dependencies because of cyclic dependencies between r·  rµ   )ro  rp  r"  rV   rm   rÙ   )r*  ÚindepÚdeprû  r§   rõ  rW  Úws   &       r(   rv  rv  P  s  € Ø€EØ
€CÜ�$—)‘)“+ÖˆØ�t•wÔ 4¥7¨8×#4Ô#4Ø�J‰J�qŽMà�L‰L˜ŽOñ	 ô
 	ˆC‹€AØ	€Aß
Ø��FˆØˆØ�R—�ˆAØ˜•G˜HÕ%Ö%Ø�Ùñ ÷ Ø�b•'˜Q˜C•-ˆCØ�A•ˆAØŒuÜð ;àŸ)™) C›.õ)à+/õ0ô 1ð ��Øð €Lñ ð �L‰L˜ŒOØ�b•'ˆCÜ�C“ˆAØŠAØ€Lr'   c           	      ót  € \        V 4      '       g   V # . p\        V R ,          P                  4       4       EFØ  p. pV R ,          V,           EF²  p\        P                  ! RV\        P
                  4      pV'       Ed[   . pVP                  R4      '       dG   \        VP                  R4      4      P                  R4       Uu. uF  pVP                  4       NK  	  pp\        VP                  R4      P                  4       4      pW€R,          9   dx   RV R,          V,          9   d;   V R,          V,          R,          P                  RRP                  V4       R	24       M_RRP                  V4       R	2.V R,          V,          R&   M7V'       d$   RRRP                  V4       R	2./V R,          V&   M/ V R,          V&   W�9  d   VP                  V4       MTp\        R
V RV R24       VP                  V4       EKµ  	  W0R ,          V&   EKÛ  	  RV 9  d   WR&   V # V R,          V,           V R&   V # u upi )r
  z2\A\s*\b(?P<name>.*?)\b\s*(\((?P<dims>.*?)\)|)\s*\ZÚdimsr  ro   r*  rg  r2  r  r0  z:analyzecommon: failed to extract "<name>[(<dims>)]" from "z" in common /z/.
Ú
commonvars)Ú	hascommonro  rp  r¼   rÐ   r¾   rÑ   r   r!  r£   rp   r"  rÙ   rm   )	r+  rˆ  rw  Úcomvarsr°  rñ   r‡  rë  r§   s	   &        r(   rt  rt  r  s  € Ü�U×ÒØˆØ€JÜ�%˜•/×&Ñ&Ó(×)ˆØˆØ�x• ×#Ñ#ˆAÜ—’ØEÀqÌ"Ï$É$óPˆAçˆqØ�Ø—7‘7˜6—?’?ä%3°A·G±G¸F³OÓ%D×%JÑ%JÈ5Ô%QóSÙ%Q ð ŸG™GžIÙ%Qð ð Sä˜qŸw™w v›×4Ñ4Ó6Ó7�Ø˜f�Ô%Ø! U¨6¥]°1Õ%5Ô5Ø˜f� aÕ(¨Õ4×;Ñ;Ø(¨¯©°$«Ð(8¸Ð:õ<ð )¨¯©°$«Ð(8¸Ð:ð8<˜˜f� aÕ(¨Ò4çà" z°#·(±(¸4³.Ð1AÀÐ%CÐ$Dð(F�E˜&•M !Ò$ð (*�E˜&•M !Ñ$ØÔ&Ø×%Ñ% aÔ(øà�ÜØPÐQRÐPSÐS`ÐabÐ`cÐcgÐhôjà�N‰N˜1×ñ7 $ð8 %ˆh�˜Ôñ= *ð> ˜5Ô Ø(ˆlÑð €Lð $ LÕ1°JÕ>ˆˆlÑØ€Lùò7Ss   ÃH5c                 ó¬  € \        V 4       V R ,          P                  4        UUu/ uF  w  r4RV9  g   RVR,          9  g   K  W4bK   	  ppp. pV R,           EFq  pWR&   VR,          R9   dœ   Ve   VR,          V9  d   K*  VR,          pVR,          VP                  4       9   d   \        P	                  VR,          4       VR,          \        9   d   K  \
        '       d   VR,          \
        9  d   KŸ  \        VRR	R
7      VR&   MTp\        WxVR,           R7      pVR,          R9   d1   VR,          '       g"   VP                  R4      '       g   RV9  d   EK  VR,          P                  RR4      R8X  d   \        P	                  V4       EK;  VR,          R8X  d   VR ,          \        VR,          &   VP	                  V4       EKt  	  V# u uppi )r*  rg  r  r)  rW  r+  ro   r.  rª   T©Úas_interfaceÚsaved_interfacer˜   rl  r¬  r  r   Úpythonmodulerž  rÆ  z
      rÅ  )rU  rH  rp  r"   r"  r#   Úcrack2fortrangenrq  rz  rÎ   r   r   )	r+  r.  rb  Úkeyr  Úmaybe_privater)  ri  Úas_s	   &&&      r(   rw  rw  œ  s¡  € ô �Ôð   �-×-Ñ-Ô/ôá/‰JˆCØ˜UÔ" h°e¸JÕ6GÑ&Gô 	ˆŠ
Ù/ð ñ ð €DØ�6�]‰]ˆØ!ˆ.ÑØˆW�:Ð3Ô3ØÒ A f¥I°TÔ$9Ùà˜•i�à��y˜M×.Ñ.Ó0Ô0Ü× Ñ   6¥Ô+Ø��yœIÔ%Ùß‹y˜Q˜v�Y¬iÔ7ÙÜ#3Ø�>°ô$6ˆAÐÒ ð ˆCÜ�a #¨¥*Ô-ˆØˆW�:Ð<Ô<Ø��yŒy §¡ ×!7Ò!7Ø!¨Ô*ÚØˆW�:×Ñ˜c 2Ó&¨.Ô8Ü×Ñ˜q×!à��z˜XÔ%Ø+,¨V­9”˜a �iÑ(Ø�K‰K˜�Nñ; ð< €KùóKs   ¦GÁGc                 ó   € \        V 4       \        p/ pR V 9   d³   V R ,          f0   Rp\        ^8”  d    \        R\	        V R,          4       R24       W3# \        V R ,          P                  4       4       FT  pV R ,          V,          P                  R4      R9  d   V R ,          V,          W&   K;  V R ,          V,          R,          W#&   KV  	  W3# )rü   Nz2buildimplicitrules: no implicit rules for routine ro   r1  r2   )rH   rK  )rU  Údefaultimplicitrulesr   r1   rÌ   ro  rp  rz  )r+  ÚimplicitrulesÚ	attrrulesrw  s   &   r(   Úbuildimplicitrulesr˜  É  sÏ   € Ü�ÔÜ(€MØ€IØ�UÔØ�ÕÒ$Ø ˆMÜ˜Œ{ÜØHÌÈeÐTZÍmÓI\ÐH]Ð]`Ðaôcð Ð#Ð#ô ˜% 
Õ+×0Ñ0Ó2Ö3�Ø˜Õ$ QÕ'×+Ñ+¨JÓ7Ð?VÔVØ',¨ZÕ'8¸Õ';�MÓ$à#(¨Õ#4°QÕ#7¸
Õ#C�I“Lñ	 4ð
 Ð#Ð#r'   c                óp   € \        WV4      p\        V4      \        \        39   d   V# \	        RV: 24      h)z1Like `eval` but returns only integers and floats zr=)r×  rf   r6   r8   rÔ   )r°  re  ré   r–   s   &&& r(   Úmyevalrš  Ü  s3   € äˆQ�1‹€AÜˆAƒw”3œ�,ÔØˆÜ
�r˜!™�ZÓ
 Ð r'   z\A\b\w+\b\Zc                ó€  €  \        \        V / / 4      4      p^ VR3#   \         d     Mi ; i\        P	                  T 4      '       d   ^^ T 3# \        T 4      pT EF^  p\        T4      T8”  d   K  \        P                  ! RT,           R,           T 4      '       d   KC  \        P                  ! RT,           R,           \        P                  4      pTP	                  T 4      pT'       g   K‘   TP	                  T 4      pT'       d<   TP                  R4       R^  RTP                  R	4       2pTP	                  T4      pKC  \        X/ / 4      p	TP	                  T 4      pT'       d<   TP                  R4       R^ RTP                  R	4       2pTP	                  T4      pKC  \        T/ / 4      T	,
          p
TP	                  T 4      pT'       d<   TP                  R4       RR
 RTP                  R	4       2pTP	                  T4      pKC  \        T/ / 4      pTP	                  T 4      pT'       d<   TP                  R4       RR RTP                  R	4       2pTP	                  T4      pKC  \        T/ / 4      pT
R
,          T	,           T8X  d   T
R,          T	,           T8X  d   Y©T3u # M  \         d     Mi ; i M	  R# )aÁ  
Obtain ``a`` and ``b`` when ``e == "a*x+b"``, where ``x`` is a symbol in
xset.

>>> getlincoef('2*x + 1', {'x'})
(2, 1, 'x')
>>> getlincoef('3*x + x*2 + 2 + 1', {'x'})
(5, 3, 'x')
>>> getlincoef('0', {'x'})
(0, 0, None)
>>> getlincoef('0*x', {'x'})
(0, 0, 'x')
>>> getlincoef('x*x', {'x'})
(None, None, None)

This can be tricked by sufficiently complex expressions

>>> getlincoef('(x - 0.5)*(x - 1.5)*(x - 1)*x + 2*x + 3', {'x'})
(2.0, 3.0, 'x')
Nz\w\s*\([^)]*\bú\bú(?P<before>.*?)\bú\b(?P<after>.*)r  r/  r0  r  g      à?g      ø?)NNN)r6   rš  rÄ   Úgetlincoef_re_1rÐ   rV   r¼   r†  r½   r¾   rÑ   )r°  Úxsetr¹   Úlen_erë  rY  rñ   rZ  Úeeri  r$  Úc2s   &&          r(   Ú
getlincoefr¤  ç  sk  € ð*Ü”�q˜"˜bÓ!Ó"ˆØ�!�TˆzÐøÜô Ùðúä×Ñ˜Q×ÒØ�!�QˆwˆÜ�‹F€EÜˆÜˆq‹6�EŒ>ÙÜ�9Š9Ð&¨Õ*¨UÕ2°A×6Ò6áÜ�zŠzÐ.°Õ2Ð5GÕGÌÏÉÓNˆØ�J‰J�q‹Mˆß‰1ðØ—Z‘Z “]�ßØŸH™H XÓ.Ð/¨q°°°1°R·X±X¸gÓ5FÐ4GÐH�BØŸ™ B›’BÜ˜2˜r 2Ó&�Ø—Z‘Z “]�ßØŸH™H XÓ.Ð/¨q°°°1°R·X±X¸gÓ5FÐ4GÐH�BØŸ™ B›’BÜ˜2˜r 2Ó&¨Õ*�Ø—Z‘Z “]�ßØŸH™H XÓ.Ð/¨q°°°Q°r·x±xÀÓ7HÐ6IÐJ�BØŸ™ B›’BÜ˜2˜r 2Ó&�à—Z‘Z “]�ßØŸH™H XÓ.Ð/¨q°°°Q°r·x±xÀÓ7HÐ6IÐJ�BØŸ™ B›’BÜ˜B  BÓ'�Ø˜•G˜a•K 1Ô$¨¨S­°1­¸Ô):Ø ˜7’NùÜô ÙðúáñG ðH Ðs:   ‚ �+ª+Ã-J)ÄA J)Å'A'J)ÇA J)È0A5J)Ê)J7Ê6J7z\b[a-z][\w$]*\bc                 ó  € W9   dæ   W,          P                  R . 4      pRW,          9   dj   \        W,          4      '       gS   \        P                  W,          R,          4       F,  pWC9  g   K  WA9   g   K  W@8w  g   K  VP	                  V4       K.  	  VR,           FI  pVP                  V. 4      ;'       g    \        WAV4       F  pWS9  g   K  VP	                  V4       K  	  KK  	  M\        R\        V 4       R24       . pW2V &   V# )rn  rk  ºNNNz)_get_depend_dict: no dependence info for rµ   )rz  ÚisstringÚword_patternrã  r"  Ú_get_depend_dictr1   rÌ   )ro   r*  ÚdepsÚwordsÚwordr…  s   &&&   r(   r©  r©  .	  sß   € Ø„|Ø•
—‘˜x¨Ó,ˆà�$•*Ô¤X¨d­j×%9Ò%9Ü$×,Ñ,¨T­Z¸­_Ö=�ð Ö$¨®¸$¾,Ø—L‘L Ö&ñ	 >ð
 ˜!—H�HˆDØ—X‘X˜d BÓ'÷ :ð :Ü'¨°DÓ9ò:�à–>Ø—L‘L –Oó:ò ô 	Ð;¼DÀ»J¸<ÀrÐJÔKØˆØˆ�JØ€Lr'   c                 óf   € \        V P                  4       4      p/ pV F  p\        W0V4       K  	  V# r+   )ro  rp  r©  )r*  rs   Údepend_dictr§   s   &   r(   Ú_calc_depend_dictr¯  D	  s1   € Ü�—‘“Ó€EØ€KÛˆÜ˜ +Ö.ñ àÐr'   c                 ó¶  € \        V 4      p. p\        VP                  4       4       F&  pW,          '       d   K  VP                  V4       W K(  	  V'       d_   \        VP	                  4       4       F?  w  r4V Uu. uF  qUV9   g   K  VNK  	  ppV'       g   VP                  V4       W K;  WaV&   KA  	  Kf  V Uu. uF  q3V 9   g   K  VNK  	  up# u upi u upi r+   )r¯  ro  rp  r"  rH  )r*  r®  rs   ro   Úlstr§   Únew_lsts   &      r(   Úget_sorted_namesr³  L	  sÂ   € Ü# DÓ)€KØ€EÜ�[×%Ñ%Ó'Ö(ˆØ× Ö Ø�L‰L˜ÔØÒ!ñ )÷ Ü˜k×/Ñ/Ó1Ö2‰IˆDÙ"%Ó:¡#˜Q¨kÑ)9—q�q¡#ˆGÐ:ßØ—‘˜TÔ"ØÒ%à$+˜DÓ!ó 3ñ #Ó3™U�T¨d¡l�DˆD™UÑ3Ð3ùò ;ùò 4s   Á;CÂCÂ;CÃCc                 ó¼   € V ^ ,          R9   d   V ^R p \         P                  V 4      '       d   ^# \        P                  V 4      '       d   ^# RV ,           R,           # )é    ú'"zkind(r0  r   )rÕ  rÐ   Úreal8pattern)ra   s   &r(   Ú
_kind_funcr¸  ^	  sQ   € àˆa…y�EÔØ˜˜"�ˆÜ×Ñ˜6×"Ò"ÙÜ	×	Ñ	˜F×	#Ò	#ÙØ�VÕ˜cÕ!Ð!r'   c                 ó€   € ^
V ,          pVR8:  d   ^# VR8:  d   ^# VR8:  d   ^# VR8:  d   ^# V^^€,          8:  d   ^# R# )é
   é   i   l        l            r   r&   )r–   rñ   s   & r(   Ú_selected_int_kind_funcr¼  i	  sF   € à
ˆa�€AØˆF„{ÙØˆG„|ÙØˆG„|ÙØˆG„|ÙØˆA��H„}ÙØ€Ir'   c                 óÚ   € V ^8  d   ^# V ^8  d   ^# \         P                  ! 4       P                  4       pVP                  R4      '       d   V ^!8:  d   ^#  R# V ^8  d   ^
# V ^!8:  d   ^# R# )é   )
Úaarch64ÚalphaÚarm64Ú	loongarchÚmipsÚpowerÚppcÚriscvÚs390xÚsparcr   )ÚplatformÚmachinerž   rˆ   )Úpr–   ÚradixrÊ  s   &&& r(   Ú_selected_real_kind_funcrÍ  y	  sr   € ð 	ˆ1„uÙØˆ2„vÙÜ×ÒÓ ×&Ñ&Ó(€GØ×ÑÐw×xÒxØ�Œ7Ùð ð €Ið	 
ˆRŒÙØ	
ˆbŒÙØ€Ir'   c           	      óÆ	  € \         P                   ! V4      p\         P                   ! V4      pR \        3R\        3R\        33 F  w  rEWC9  g   K  WSV&   K  	  . p\	        V 4       F9  pRW,          9   g   K  RW,          R,          9   g   K(  VP                  V4       K;  	  \        P                  ! R\        P                  4      p\        P                  ! R\        P                  4      p	\        P                  ! R\        P                  4      p
V EF”  pRW,          9   Edb   W,          R,          p\        W,          4      '       d*   VP                  4       pR F  pVP                  ! V!  pK  	  VP                  R	V4      pV	P                  R
V4      pRpRW,          9   d[   R W,          R,          9   dG   \        V4      pVP                  RW,          R,          R ,          ,           R4      p\        V4      V8  pV'       g€   V
P                  V4      '       gi   VP                  R4      p\        V4      ^8”  dH   RP!                  VRR 4      P                  4       P                  VR,          P                  4       R4      p\#        W,          4      '       d¡   \%        V4      p\&        P)                  V4       Fj  p\%        VVP+                  4       VP-                  4        P                  4       P                  RR4      4      VVP+                  4       VP-                  4       % Kl  	  RP!                  V4      pM&\/        W,          4      '       d   \1        RV R24       W,          R,           Uu. uF;  pVP3                  R4      '       g   K  VP5                  R4      P7                  4       NK=  	  up;'       g    R.^ ,          p\&        P9                  V4      '       d   ^pM\:        P9                  V4      '       d   ^p \=        W³VVR7      W'&   \A        W,          4      '       d0   \C        W',          \D        4      '       d   \G        W',          4      W'&   VP                  4       pVV8w  d   W',          VV&   EKp  EKs  \I        W,          4       \1        RV: R24       EK—  	  V# u upi   \>         d"   pY²T&   \1        RT RT: R24        Rp?LÂRp?ii ; i)rG  Úselected_int_kindÚselected_real_kindrg  r  z \bkind\s*\(\s*(?P<value>.*)\s*\)z-\bselected_int_kind\s*\(\s*(?P<value>.*)\s*\)z4\bselected_(int|real)_kind\s*\(\s*(?P<value>.*)\s*\)rk  z
kind("\1")zselected_int_kind(\1)Frh  rî   r   Nr  r°  zAget_parameters[TODO]: implement evaluation of complex expression rµ   rý   )Údimspeczget_parameters: got "ú" on zget_parameters:parameter z does not have value?!
))z.false.ÚFalse)z.true.ÚTruer   )%rÌ  r¸  r¼  rÍ  r³  r"  r¼   r½   r¾   Ú	islogicalrž   rÎ   ÚsubrV   rÐ   r!  rÙ   Úisdoublero  rÕ  rÖ  r‡  rù   Ú	iscomplexr1   rˆ   rß  r£   r†  r·  Ú
param_evalrÄ   r§  rç  r6   rÞ  r‚  )r*  Úglobal_paramsr€  Úg_paramsro   ÚfuncÚparam_namesr§   Úkind_reÚselected_int_kind_reÚselected_kind_rerû  ÚreplÚis_replacedÚ
orig_v_lenÚv_rú  rñ   r8  rÑ  rê   Únls   &&                    r(   rÓ  rÓ  ‹	  s  € Ü�YŠY�}Ó%€FÜ�yŠy˜Ó'€HØ¤
Ð+Ø+Ô-DÐEØ,Ô.FÐGóK‰
ˆð ÖØ!�T‹Nñ	Kð
 €KÜ˜dÖ#ˆØ˜�Ö  [°DµG¸JÕ4GÖ%GØ×Ñ˜qÖ!ñ $ô �jŠjÐ<¼b¿d¹dÓC€GÜŸ:š:Ø8¼"¿$¹$ó@Ðä—z’zØ?ÄÇÁóGÐäˆØ�$•'�>Ø•˜•ˆAÜ˜�×!Ò!Ø—G‘G“I�ó�Dð
 Ÿ	š	 4Ñ(’Añð —‘˜M¨1Ó-ˆAØ$×(Ñ(Ð)AÀ1ÓEˆAð  ˆKà ¥Ô(ð ˜T�W ^Õ4Ô4Ü!$ Q£�JØŸ	™	 #¨­°Õ(?ÀÕ(GÕ"GÈÓL�Aô #& a£&¨:Ñ"5�KçØ'×-Ñ-¨a×0Ò0ØŸ™ ›�Bä˜2“w ”{ØŸG™G B s¨ GÓ,×2Ñ2Ó4×<Ñ<¸RÀ½V¿\¹\»^ÈRÓP˜ô ˜�× Ò Ü˜!“W�Ü&×/Ñ/°Ö2�AÜ,0Ø˜!Ÿ'™'›) A§E¡E£GÐ,×2Ñ2Ó4×<Ñ<¸SÀ#ÓFó-H�B�q—w‘w“y §¡£Ò)ñ 3ð —G‘G˜B“K‘ä˜4�7×#Ò#Üð FØFGÀSÈðLô Mð "&¥¨Ö!4ó5Ù!4˜AØŸ,™, {×3ô <˜Ÿ™ {Ó3×9Ñ9Ö;Ù!4ñ5÷ ?ð ?à9=¸ÀõCˆGô ×#Ñ# A×&Ò&Ø‘Ü×$Ñ$ Q×'Ò'Ø�ðCÜ& q°FÀGÔL�‘	ô
 ˜�× Ò ¤Z°µ	¼3×%?Ò%?Ü ¥	›N�‘	Ø—‘“ˆBØ�QŒwØ#�Y��r”
ò ô �$•'ŒNÜÐ/°©uÐ4LÐM×Nña ðb €Mùò15øô ô CØ�q‘	ÜÐ/°¨u°E¸!¹¸bÐA×BÑBûðCús$   Í7R/Î#R/Ð	R4Ò4S Ò?SÓS c                 ó*   € V R9   d   R# \        W4      # )ú(:)ú(*))rç  rè  r   )Ú_eval_scalar)Úlengthr€  s   &&r(   Ú_eval_lengthrë  ð	  s   € ØÐ$Ô$ÙÜ˜Ó'Ð'r'   z\d+_c                 ó†  € \        V 4      '       d   V P                  R 4      ^ ,          p  \        V / V4      p \        V \        4      '       d   \
        M\        ! V 4      p V #   \        \        \        3 d    T u # \         d;   p\        RT: RT : R\        TP                  4       4      : R24        Rp?T # Rp?ii ; i)rî   r'  z" in evaluating z (available names: r­   N)Ú_is_kind_numberr!  r×  rç  rÀ   rÌ   rÙ  rØ  rÚ  rÄ   rm   ro  rp  )r  r€  rê   s   && r(   ré  ré  ù	  s¦   € Ü�u×ÒØ—‘˜CÓ  Õ#ˆð	5ä�U˜B Ó'ˆÜ# E¬3×/Ò/•´SÐ8¸%Ó@ˆð €Løô ”{¤IÐ.ô ØŠÜô 5Ýã›œt F§K¡K£MÖ2ð4÷ 	5ð 	5ð €Lûð	5ús#   «5A" Á"C Á<C ÂC Â/B;Â;C c                ó*  a@aA€ \        V 4       \        V 4      w  r\        P                  ! V R,          4      pV R,          R8X  d   V R,          V9  d   / W0R,          &   RV R,          9   d•   VR RV R,          R,          9   d}   V R,          R,          R,          p\        V4      V R,           Uu0 uF  qUR,          kK  	  up,           F2  pRH F)  pWt9   g   K  \	        VP                  V/ 4      V4      W6&   K+  	  K4  	  . pV R,          p	V	 F  p
 W:,           VP                  V
4       K  	  \        VP                  4       4       F  pWi9  g   K  VP                  V4       K  	  \        V\        V 4      4      p/ p\        P                  ! R	4      P                  p\        VP                  4       4       F>  pV! V4      pV'       g   K  WïP                  4       VP!                  4        p WÆ,           K@  	  V EF™  pV^ ,          \        VP                  4       4      9   d"   \	        W6,          W&^ ,          ,          4      W6&   RW6,          9  Ed   RW6,          9   d   RW6,          R,          9   gó   V'       dº   V^ ,          P%                  4       p\        VV,          P                  4       4       F}  pVR8X  d   VV,          V,          R8X  d   K!  WsV,          9  d   VV,          V,          W6,          V&   KI  VR8X  g   KR  VV,          V,           F  p\	        W6,          V4      W6&   K  	  K  	  M1W`R,          9   d%   \'        R\)        V4      : RV R,          : R24       RW6,          9   dT   RW6,          R,          9   d@   W6,          R,          R,          p \+        \-        V/ V4      4      pVW6,          R,          R&   RW6,          9   dT   RW6,          R,          9   d@   W6,          R,          R,          p \+        \-        V/ V4      4      pVW6,          R,          R&   / pRW6,          9   Ed¯   W6,          R,          pVP1                  4        . W6,          R&   RIw  pppppV EF   p
V
R,          R8X  d   V
R,          P3                  4       ^RJ pM¸V
R,          R8X  d   V
R,          P3                  4       ^RJ pM�V
R,          R8X  d   V
R,          P3                  4       ^RJ pMfV
R,          R8X  d   V
R,          P3                  4       ^RJ pM=V
R ,          R!8X  d   V
R",          P3                  4       ^RJ pM\	        W6,          V
4      W6&   V'       d    RW6,          9  d   . W6,          R&   \5        V4      P7                  R#4       Uu. uF  pVP3                  4       NK  	  up FI  pVP9                  R$R4      pVW6,          R,          9  g   K+  W6,          R,          P                  V4       KK  	  RpV'       d_   VP9                  R%R&4      pVP9                  R'R(4      pR!W6,          9  d   V.W6,          R!&   MW6,          R!,          P                  V4       RpVe—   RW6,          9  d   . W6,          R&   \;        \5        V4      P7                  R#4       Uu. uF  pVP3                  4       NK  	  up4       F7  pVW6,          R,          9  g   K  W6,          R,          P                  V4       K9  	  RpVf   EK“  RW6,          9  d   . W6,          R&   \5        V4      P7                  R#4       Uu. uF  pVP3                  4       NK  	  up F7  pVW6,          R,          9  g   K  W6,          R,          P                  V4       K9  	  RpEK#  	  V'       EdM   RW6,          9  Ed?   . W6,          R&   \;        \5        V4      P7                  R#4       Uu. uF  pVP3                  4       NK  	  up4       EFí  p \=        VV4      pVR*8X  d   R*MR+pVV8X  d   V.pM\5        VR*4      P7                  R,4      p\C        V4      ^8X  d   R+V9   d   R+.pR+p\C        V4      ^8X  d   V^ ,          V8w  d   R-V^ ,          .p\C        V4      ^8X  Ed8   \E        \F        PH                  PJ                  V4      w  pp V V,
          ^,           p!V!PM                  \F        PN                  PP                  R.7      p/ p"V R,           FÂ  p\F        PR                  ! V4      p#V!PU                  V#4      '       g   K2   V!PW                  V#4      w  r¥W¥3R/ lp$\        V
PY                  4       4      p%V%P[                  VPY                  4       4       V% U#u0 uF"  p#V#P^                  V9   g   K  V#P^                  kK$  	  p'p#V$\        V'4      3V"V&   KÄ  	  V"VV&   W6,          R,          P                  V4       EKð  	  RW6,          9  Edf   RV 9   Ed^   W`R,          9   EdP   W6,          P                  R. 4      p(. p)\a        \b        \d        \f        4      ! W6,          4      p*\i        W6,          4      '       Ed    \k        W6,          R,          4       EFá  w  p+pVP                  V4      o@S@f   EMÎV*'       EdÆ   S@Pm                  4        EF°  w  pw  p,p-V@VA3R0 loA\        4       p.SA! VV.4       VV(9   g   R1W>,          9   g   RW>,          9   d   KG  V,e˜   VV.9  d‘   R2p/V,! \F        PR                  ! R3V R4V+ R524      4      p0V0PM                  \F        PN                  PP                  R.7      p0V0W>,          R1&   V.V-,           W>,          R&   RW>,          9  d   R3V R4V+ R6V 2.W>,          R&   MwR7p/RW>,          9  d   . W>,          R&   R8W>,          R,          9  d   W>,          R,          P                  R84       V(P                  V4       V)P                  R3V R4V+ R6V 24       W>,          P                  R. 4      p1R9V19   g#   R:V19   g   T1P                  V/'       d   R:MR94       V1'       g   EK¥  V1W>,          R&   EK³  	  S@f   EKó  S@Pm                  4        FÚ  w  pw  p,p-W>,          P                  R. 4      p'W>,          P                  R. 4       F^  p2V2Po                  R4      '       g   K  RPq                  V2P7                  4       4      p2V'Ps                  V2^RJ P7                  R;4      4       K`  	  V''       d   \        \        V'4      4      W>,          R&   VV'9  g   KÉ  V(P                  V4       KÜ  	  EKä  	  MÁ\u        W6,          4      '       d«   RW6,          9   dž   R+W6,          R,          9   d4   \w        W6,          R,          R+,          V4      p3V3W6,          R,          R+&   MVRW6,          R,          9   dC   \w        W6,          R,          R,          V4      p3W6,          R,          R V3W6,          R,          R+&   V)'       d   V)W6,          R&   V('       d   \        \        V(4      4      W6,          R&   R1W6,          9   g   EKl  RW6,          9  d   . W6,          R&   R9W6,          R,          9  d3   R:W6,          R,          9  d   W6,          R,          P                  R94       RW6,          9  d‡   . W6,          R&   \        VPm                  4       4       F@  w  rïV! W6,          R1,          4      '       g   K"  W6,          R,          P                  V4       KB  	  W6,          R,          '       g
   W6,          R \y        W6,          4      '       g   EKw  \{        W6,          R1,          V4      W6,          R1&   EKœ  	  \        VP                  4       4       EF   pW`R,          8X  g   K  R!W6,          9   d   W6,          R!,          V R!&   V R,          R8X  g   KB  R<V 9   d0   V R<,          V9   d"   \}        W6,          W0R<,          ,          4      W6&   R=V 9   g   K�  V R=,          p4V4P9                  R>R4      p5V4V58X  * p6V5P9                  R?R4      p4V4V58X  * p7\~        ^ ,          P                  V44      pV'       Ed   \�        VPƒ                  R@4      VPƒ                  RA4      4      w  p8p9pp:\…        V8V94      w  p;p<p=V8W6,          R&    V R<,          '       d   V8W0R<,          ,          R&   T;'       d+   RT;9   d    \-        T;R,          / T4      T;R&   T;Y6,          R&   T<'       d   T<Y6,          R&   T='       d   T=Y6,          RB&   T6'       d   \	        Y6,          R>4      Y6&   T7'       d   \	        Y6,          R?4      Y6&   EKÞ  EKá  \'        RC\)        V R=,          4       RD24       EK  	  V R,          RK9  Ed   REV 9   d-   \        P                  ! V R,          V RE,          ,           4      p>M\        P                  ! V R,          4      p>\        VP                  4       4       F<  p\a        \†        \ˆ        4      ! W6,          4      '       g   K+  V>P                  V4       K>  	  RFV 9   dˆ   V>Ps                  \        V RF,          P                  4       4      4       \        V RF,          P                  4       4       F4  pV RF,          V,           F  pVV>9  g   K  V>P                  V4       K  	  K6  	  V R,          R8X  d9   R<V 9   d   V>P                  V R<,          4       MV>P                  V R,          4       V R,          RL9   d2   V R,          p?V?V9   d"   RVV?,          9   d   VV?,          R,          V R&   V R,          RG8X  d)   V>Ps                  \        VP                  4       4      4       \        VP                  4       4       F  pVV>9  g   K  W6 K  	  V# u upi   \         d     EKì  i ; i  \         d>    \        P                  ! R
T,          \        P"                  4      P                  YÆ&    EK�  i ; i  \.         d     EL¢i ; i  \.         d     ELTi ; iu upi u upi u upi u upi   \>        \@        \        3 d    \'        R)T: R(24        EL¦i ; i  \\         d'   p&Rp$\        T!PY                  4       4      p% Rp&?&EL_Rp&?&ii ; iu up#i   \.         d     EL÷i ; i  \.         d     ELâi ; i)Mz@
Sets correct dimension information for each variable/parameter
r*  r+  r�  ro   r   rg  r)  r.  z[A-Za-z][\w$]*z.*\b%s\br2   rþ   Ú	undefinedz"analyzevars: typespec of variable z is not defined in routine r1  ri  rV   rh  rG  Nr3  rý   :r4  NN:Nr³   Nr  r²   rn  r™   rm  r¯   :Né   Nrj  :rð  NNr  rª   z\n\nz

z\n rµ   z4analyzevars: could not parse dimension for variable r   r   z@:@Ú1)Úlanguagec                 ó    € W,
          V,          # r+   r&   )r8  r$  ri  s   &&&r(   Úsolve_vÚanalyzevars.<locals>.solve_vµ
  s   € Ø01µ¸­{Ð(:r'   c                 óŽ   <€ SP                  V R . .4      ^,           F$  pW!9  g   K  VP                  V4       S! W!4       K&  	  R # r+   )rz  Úadd)rû  rª  Úv1Úcoeffs_and_depsÚcompute_depss   && €€r(   rú  Ú!analyzevars.<locals>.compute_depsã
  s?   ø€ Ø*9×*=Ñ*=¸aÀ$ÈÀÓ*LÈQ×*OÐ*O BØ')¦~Ø(,¯©°¬Ù(4°RÖ(>ó +Pr'   rk  Fzshape(r·  r0  z) == TÚinrÿ   r   r  r¦   r¢  ÚpureÚ	recursiver2  r  rl  zanalyzevars: prefix (z) were not used
rˆ  r  rf   rÇ  )NNNNNr   )rž  r�  r˜  r—  )rœ  r�  )ErU  r˜  rÌ  r  rq  rz  r"  ÚKeyErrorro  rp  rÓ  r`  r¼   r½   rÐ   r‡  rù   r¾   rž   r1   rÌ   rÀ   r×  rÄ   Úreverser£   r   r!  rÎ   ru   Úparam_parserÔ   rä  rV   rÂ  r   ÚExprÚparseÚtostringÚLanguagerº   Ú	as_symbolr  Úlinear_solveÚsymbolsrY  ÚRuntimeErrorr  Úl_orÚisintent_inÚisintent_inoutÚisintent_inplaceÚisarrayrà  rH  rˆ   rÙ   ræ  r§  rë  Úisscalarré  rx  rH  rÏ  rÑ   rÜ  Úisintent_callbackÚisintent_aux)Br+  r–  r—  r*  Úgenri  r§   rw  Úsvarsr.  r$  r€  Údep_matchesÚ
name_matchrû  rñ   Úln0ré   Údimension_exprsrò  Údimr  rn  rm  rj  rë  r¹   Útmpr  Údim_charr  r>  Úd2ÚdsizeÚsolver_and_depsr8  rô  Úall_symbolsrê   Úv_depsÚn_depsÚn_checksÚ
n_is_inputrõ  Úsolverrª  Úall_depsÚis_requiredr0  Úv_attrÚaarê  ÚprÚpr1ÚispureÚisrecr2   rñ  ró  rý  rþ  rl  Ú
neededvarsro   rù  rú  sB   &                                                               @@r(   ru  ru  	
  s²  ù€ ô �ÔÜ1°%Ó8Ñ€MÜ�9Š9�U˜6•]Ó#€DØˆW…~˜Ô#¨¨f­¸TÔ(AØ ˆ�6�]ÑØ	ˆU�6�]ÔØ�ˆHØ˜˜v� rÕ*Ô*Ø˜•- Õ# JÕ/ˆCÜ˜“Y°U¸6¶]Ó!C±]° F§) )±]Ñ!C×CÐC�Û.�AØ–xÜ"-¨d¯h©h°q¸"«o¸qÓ"A˜›ó /ñ Dð €EØ��=€DÛˆð	ØŽGØ�L‰L˜ŽOñ ô �$—)‘)“+ÖˆØŽ=Ø�L‰L˜ŽOñ ô ˜DÔ"3°EÓ":Ó;€Fð €KÜ—’Ð-Ó.×4Ñ4€JÜ�$—)‘)“+ÖˆÙ�q‹Mˆß‰1Ø—'‘'“)˜AŸE™E›GÐ$ˆAðKØ—�ñ ô ˆØˆQ�4”4˜	Ÿ™Ó(Ó)Ô)Ü! $¥'¨9°qµT­?Ó;ˆD‰GØ˜T�WÕ$Ø $¥'Ô)¨j¸D½GÀJÕ<OÔ.Oß Ø˜A�$Ÿ*™*›,�CÜ! -°Õ"4×"9Ñ"9Ó";Ö<˜Ø 
œ?¨}¸SÕ/AÀ!Õ/DÈÔ/SÙ$Ø¨¥GÔ+Ø)6°sÕ);¸AÕ)>˜D�G A›JØ *ž_Ø%2°3Õ%7¸×%:Ð%: Ü*5°dµg¸qÓ*A £ó &;ò =ð  �-Ô'ÝÜ˜Qž  v§ ð0ô 1à˜T�WÔ$Ø˜� Õ/Ô/Ø•G˜NÕ+¨EÕ2�ðÜœD  B¨Ó/Ó0�Að 23�•˜Õ'¨Ñ.à˜T�WÔ$Ø˜� Õ0Ô0Ø•G˜NÕ+¨FÕ3�ðÜœD  B¨Ó/Ó0�Að 34�•˜Õ'¨Ñ/àˆØ˜�Õ Ø•7˜:Õ&ˆDØ�L‰LŒNØ"$ˆD�G�JÑØ/KÑ,ˆC�˜ ¨Ü�Ø�R•5˜KÔ'Ø˜R�5Ÿ;™;›=¨!¨BÐ/‘CØ�r•U˜hÔ&Ø �eŸk™k›m¨Q¨rÐ2‘FØ�r•U˜hÔ&Ø �eŸk™k›m¨Q¨rÐ2‘FØ�r•U˜gÔ%Ø˜r�UŸ[™[›]¨A¨bÐ1‘EØ�r•U˜f”_Ø˜b�EŸK™K›M¨1¨RÐ0‘Dä)¨$­'°1Ó5�D‘GßØ t¥wÔ.Ø,.˜� Ñ)Ü1?ÀÓ1G×1MÑ1MÈeÔ1TÓUÑ1T¨A˜aŸg™gžiÑ1TÔU˜àŸi™i¨¨RÓ0˜Ø d¥g¨hÕ&7Ö7Ø �G HÕ-×4Ñ4°SÖ9ñ	 Vð
 "�FßØŸ<™<¨°&Ó9�DØŸ<™<¨°Ó5�DØ T¥WÔ,Ø+/¨&˜� šà� �×.Ñ.¨tÔ4Ø�DØÒ%Ø t¥wÔ.Ø,.˜� Ñ)Ü&¼>È&Ó;Q×;WÑ;WÐX]Ô;^Ó'_Ñ;^°a¨¯©®	Ñ;^Ñ'_Ö`˜Ø D¥G¨HÕ$5Ö5Ø �G HÕ-×4Ñ4°QÖ7ñ að "�FØÕ$Ø d¥gÔ-Ø+-˜� Ñ(Ü1?ÀÓ1F×1LÑ1LÈUÔ1SÓTÑ1S¨A˜aŸg™gžiÑ1SÔT˜Ø D¥G¨GÕ$4Ö4Ø �G GÕ,×3Ñ3°AÖ6ñ Uð !“EñW ÷X ˆs�{¨$­'Õ1Ø')�•˜Ñ$Ü"Ü,:¸3Ó,?×,EÑ,EÀeÔ,LÓMÑ,L q˜Ÿ™žÑ,LÑM÷�Að
ô (¨¨6Ó2˜ð '(¨3¤h™s°C�HØ˜H”}Ø&˜Z™ä+¨A¨sÓ3×9Ñ9¸%Ó@˜Ü˜2“w !”|¨¨r¬	Ø!˜U˜Ø˜Ü˜2“w !”|¨¨1­°Ô(9Ø! 2 a¥5˜\˜Ü˜2“w !•|Ü!$¤X§]¡]×%8Ñ%8¸"Ó!=™˜˜BØ " R¥¨!¥˜Ø!ŸN™N´H×4EÑ4E×4GÑ4G˜NÓH˜ð +-˜Ø!& v§ ˜AÜ (× 2Ò 2°1Ó 5˜AØ$Ÿ~™~¨a×0Ô0ð!GØ+0×+=Ñ+=¸aÓ+@¡D Aà56ô %;ô 36°a·i±i³kÓ2B KØ$/×$6Ñ$6°q·y±y³{Ô$Cñ 5@ó*7Ù4?¨qØ'(§v¡v°¡~ô %+ A§F¤F±Kð !'ð *7ð 6=¼dÀ6»lÐ5J °Ó 2ñ- "/ð: .=˜¨Ñ*Ø•G˜KÕ(×/Ñ/°×2ñðB ˜$�'Õ! f°¥o¸!ÀV½}Õ:Lð
 •W—[‘[ ¨2Ó.ˆFØˆHÜœk¬>Ü.ô0Ø04µó9ˆJä�t•w×ÓÜ% d¥g¨kÕ&:×;‘D�A�qØ&5×&9Ñ&9¸!Ó&<�OØ&Ò.áß#˜ð 2A×1FÑ1F×1HÑ-˜A™~ ¨ö?ô
 (+£u˜HÙ(¨¨HÔ5Ø ! V¤Ø$'¨4­7¤NØ$,°µÔ$7ñ
 !)Ø%Ò1°a¸xÔ6Gð /4 Ù'-¬h×.@Ò.@Ø&,¨Q¨C¨r°!°°AÐ$6ó/8ó (9 à'+§}¡}Ü-5×->Ñ->×-@Ñ-@ð (5ó (B à/3 ¥¨¡ð 67°C¸$µJ ¥¨Ñ 1Ø#*°$µ'Ô#9ð +1°°°2°a°S¸¸a¸SÐ(Að8C D¥G¨GÑ$4øð /3 Ø#+°4µ7Ô#:Ø8: D¥G¨HÑ$5Ø#'¨t­w°xÕ/@Ô#@Ø$(¥G¨HÕ$5×$<Ñ$<¸TÔ$Bà &§¡¨aÔ 0Ø (§¡Ø&,¨Q¨C¨r°!°°E¸!¸Ð$=ô!?à%)¥W§[¡[°¸RÓ%@˜FØ$.°&Ô$8Ø'1°VÔ';Ø &§¡ß2=¡JÀ:ô!Oç%švØ6< ¥¨
Ô 3ñm 2Iðn 'Õ2à1@×1FÑ1FÖ1HÑ-˜A™~ ¨Ø%)¥W§[¡[°¸2Ó%>˜FØ&*¥g§k¡k°*¸bÖ&A Ø#%§=¡=°×#:Ô#:Ø)+¯©°·±³Ó)< BØ$*§M¡M°"°Q°r°(·.±.ÀÓ2EÖ$Fñ 'B÷  &Ü48¼¸V»Ó4E ¥¨Ñ 1Ø ¨žØ &§¡¨aÖ 0ô 2IòE <ôX ˜$�'×"Ò"Ø! T¥WÔ,Ø˜d�g nÕ5Ô5Ü!-¨d­g°nÕ.EÀcÕ.JØ.4ó"6˜à7=˜� Õ/°Ò4Ø $¥'¨.Õ"9Ô9Ü!-¨d­g°nÕ.EÀeÕ.LØ.4ó"6˜à �G NÕ3°EÐ:Ø7=˜� Õ/°Ñ4ßØ#+�•˜Ñ ßÜ$(¬¨V«Ó$5�•˜Ñ!à�$•'�>Ø ¥Ô(Ø&(�•˜
Ñ#Ø $¥'¨*Õ"5Ô5Ø $¥'¨*Õ"5Ô5Ø•˜
Õ#×*Ñ*¨:Ô6Ø˜t�wÔ&Ø$&�•˜Ñ!Ü  ×!2Ñ!2Ó!4Ö5‘D�AÙ˜� �—”Ø� Õ)×0Ñ0°Ö3ñ 6ð •w˜x×(Ô(Ø� Ð)Ü˜�× Õ Ü+¨D­G°C­L¸&ÓA�•˜”ñ[ ô^ �$—)‘)“+×ˆØ�f•ÖØ˜�Ô Ø $¥¨¥��f‘Ø�W�~ Ö+Ø˜uÔ$¨¨x­¸DÔ)@Ü(¨­°$¸XµÕ2GÓH�D‘GØ˜uÖ$Ø˜x��BØŸ*™* V¨RÓ0�CØ"$¨šm�FØŸ™ [°"Ó5�BØ!# sš]�EÜ$ Q�×-Ñ-¨bÓ1�Aß�qÜ:HØŸG™G F›O¨Q¯W©W°WÓ-=ó;?Ñ7˜ (¨D°%ä;HØ$ hó<0Ñ8˜
 J°à.6˜� 
Ñ+ð!Ø$ XŸœØDL ¨8¥_Õ 5°jÑ A÷ &Ø%¨Ô3ð!)Ü9=Ø(2°6Õ(:¸BÀó:H J¨vÑ$6ð 7A˜D�G NÑ3ß%Ø6@˜D�G NÑ3ß#Ø2:˜D�G JÑ/ß!Ü&1°$µ'¸6Ó&B˜D™Gß Ü&1°$µ'¸;Ó&G˜DœGò !ô  Ø3´D¸¸x½Ó4IÐ3JÐJ[Ð\÷^ñU ðX ˆW…~ÐVÕVØ˜5Ô ÜŸš 5¨¥=°5¸Õ3FÕ#FÓG‰JäŸš 5¨¥=Ó1ˆJÜ�d—i‘i“kÖ"ˆAÜÔ%¤|Ô4°TµW×=Ô=Ø×!Ñ! !Ö$ñ #ð �eÔØ×Ñœd 5¨¥>×#6Ñ#6Ó#8Ó9Ô:Ü˜% �.×-Ñ-Ó/Ö0�Ø˜w�¨×*Ð*�AØ 
Ö*Ø"×)Ñ)¨!Ö,ó +ñ 1ð ��>˜ZÔ'Ø˜5Ô Ø×!Ñ! %¨¥/Õ2à×!Ñ! %¨¥-Ô0Ø��>Ð7Ô7Ø˜•=ˆDØ�tŒ| ¨D°­JÔ 6Ø"& t¥*¨XÕ"6��h‘Ø��>˜VÔ#Ø×Ñœd 4§9¡9£;Ó/Ô0Ü�d—i‘i“kÖ"ˆAØ˜
Ö"Ø’Gñ #ð €Kùòi "Døô ô 	Ûð	ûô" ô KÜ!#§¢¨K¸1Õ,=¼r¿t¹tÓ!D×!JÑ!J�•ðKûô2 !ô Úðûô !ô Úðüò4 Vùò" (`ùò Uùò Nøô '¬
´HÐ=ô Üð(Ø()¡u¨Bð0÷ðûôF (4ô !Gð /3 GÜ25°e·m±m³oÓ2F¦Kûð!Güò*7øôt  )ô !Ú ð!ûô (1ô !)Ú$(ð!)úsõ   Â1AO&ÄAO+Ç.AO>ÎAQ	Ï?AQÖAQ-ÚAQ2Ü2AQ7ßAQ<
ß8ARä*AAR.å?AS"
æAS"
ÁC!AS'ÁDAS9ÁO+AO;ÁO:AO;ÁO>AAQÁQAQÁQ	AQÁQAQÁQAQ*ÁQ)AQ*ÁR&AR+ÁR*AR+ÁR.AS	ÁR9AS	ÁSAS	ÁS'AS6ÁS5AS6ÁS9ATÁTATz\A[a-z]+[\w$]*\Zc           	     óà  € Vf    \        WV4      pV# \        V4      ^8  g"   VRR\        V4      ^,
          1,          R8w  d   \	        RV R24      hV^R P                  R4      p\        V4      ^8X  d¥   V^ ,          P                  R	4      p\        V4      ^8X  d1   \        V^ ,          V4      p\        ^\        V4      ^,           4      pM[\        V^ ,          V4      p\        V^,          V4      p	\        \        V4      \        V	4      ^,           4      pM\	        R
V R24      hV P                  R4      '       d   V ^R MT P                  R4      p . p
V  F!  p \        W±V4      pV
P                  V4       K#  	  \        \        Wj4      4      pV#   \         d!   pT p\        RT RT : R24        Rp?T# Rp?ii ; i  \         d   p\        RT RT: R24        Rp?L|Rp?ii ; i)a‡  
Creates a dictionary of indices and values for each parameter in a
parameter array to be evaluated later.

WARNING: It is not possible to initialize multidimensional array
parameters e.g. dimension(-3:1, 4, 3:5) at this point. This is because in
Fortran initialization through array constructor requires the RESHAPE
intrinsic function. Since the right-hand side of the parameter declaration
is not executed in f2py, but rather at the compiled c/fortran extension,
later, it is not possible to execute a reshape of a parameter array.
One issue remains: if the user wants to access the array parameter from
python, we should either
1) allow them to access the parameter array using python standard indexing
   (which is often incompatible with the original fortran indexing)
2) allow the parameter array to be accessed in python as a dictionary with
   fortran indices as keys
We are choosing 2 for now.
Nzparam_eval: got "rÒ  rµ   ra  zparam_eval: dimension z can't be parsedr  r   z.param_eval: multidimensional array parameters z not supportedr¶  r   rœ   )r×  rÄ   r1   rV   rÔ   r!  r  r¿   r6   rˆ   r"  rr  Úzip)rû  rÛ  r€  rÑ  rË  rê   ÚdimrangeÚboundÚlboundÚuboundÚv_evalÚitems   &&&&        r(   rÙ  rÙ  “  sê  € ð& ‚ð	;Ü�Q &Ó)ˆAð ˆô ˆ7ƒ|�aÔ˜7Ñ#5¤S¨£\°AÕ%5Ð#5Õ6¸$Ô>ÜÐ1°'°Ð:KÐLÓMÐMØ�q˜ˆ}×"Ñ" 3Ó'€HÜ
ˆ8ƒ}˜Ôà˜A•;×$Ñ$ SÓ)ˆäˆx‹=˜AÔÜ ¨¥¨VÓ4ˆEÜ˜Q¤ E£
¨Q¥Ó/‰Hä  ¨!¥¨fÓ5ˆFÜ  ¨!¥¨fÓ5ˆFÜœS ›[¬#¨f«+¸­/Ó:‰HäÐIØ#˜9 Nð4ó 5ð 	5ð —L‘L ×&Ò&ˆˆ1ˆR‰¨A×4Ñ4°SÓ9€AØ€FÛˆð	>Ü˜¨Ó/ˆDð 	�‰�dÖñ ô 	ŒS�Ó"Ó#€Aà€HøôK ô 	;ØˆAÜÐ'¨ u¨E°!±°bÐ9×:Ð:Øˆûð	;ûô> ô 	>ÜÐ'¨ u¨E°$±¸Ð<×=Ñ=ûð	>ús/   †F Å GÆGÆ"F=Æ=GÇG-ÇG(Ç(G-c                ó^  € RV 9   dj   V RV P                  R4       pW P                  R4      ^,           V P                  R4       p\        \        W14      4      p\	        W,          V,          4      # W9   d   \	        W,          4      # V FŸ  p\
        P                  ! RV,           R,           \
        P                  4      pVP                  V 4      pV'       g   KQ  VP                  R4      \	        W,          4      ,           VP                  R4      ,           p VP                  V 4      pKZ  	  V # )aç  Recursively parse array dimensions.

Parses the declaration of an array variable or parameter
`dimension` keyword, and is called recursively if the
dimension for this array is a previously defined parameter
(found in `params`).

Parameters
----------
d : str
    Fortran expression describing the dimension of an array.
params : dict
    Previously parsed parameters declared in the Fortran source file.

Returns
-------
out : str
    Parsed dimension expression.

Examples
--------

* If the line being analyzed is

  `integer, parameter, dimension(2) :: pa = (/ 3, 5 /)`

  then `d = 2` and we return immediately, with

>>> d = '2'
>>> param_parse(d, params)
2

* If the line being analyzed is

  `integer, parameter, dimension(pa) :: pb = (/1, 2, 3/)`

  then `d = 'pa'`; since `pa` is a previously parsed parameter,
  and `pa = 3`, we call `param_parse` recursively, to obtain

>>> d = 'pa'
>>> params = {'pa': 3}
>>> param_parse(d, params)
3

* If the line being analyzed is

  `integer, parameter, dimension(pa(1)) :: pb = (/1, 2, 3/)`

  then `d = 'pa(1)'`; since `pa` is a previously parsed parameter,
  and `pa(1) = 3`, we call `param_parse` recursively, to obtain

>>> d = 'pa(1)'
>>> params = dict(pa={1: 3, 2: 5})
>>> param_parse(d, params)
3
r/  Nr0  r�  rž  r  r  )
rÑ  Úrfindr6   r  rÀ   r¼   r½   r¾   rÐ   rÑ   )r  r€  ÚdnameÚddimsrY   rË  rY  rñ   s   &&      r(   r  r  Ñ  sò   € ðr ˆa„xà�,�1—6‘6˜#“;�ˆØ—&‘&˜“+ •/ !§'¡'¨#£,Ð/ˆô ”K Ó.Ó/ˆÜ�6•= Õ'Ó(Ð(Ø	
ŒÜ�6•9‹~ÐãˆAÜ—:’:Ø$ qÕ(Ð+=Õ=¼r¿t¹tóˆDð —
‘
˜1“ˆAß‘!Ø—G‘G˜HÓ%Ü˜�	“Nõ#Ø%&§W¡W¨WÓ%5õ6�à—J‘J˜q“M’ñ ð ˆr'   c                 óL  € T p\         P                  V 4      '       * pV'       d¸   \        V4      w  rV\        WR ,          V4      pRpV  FG  p	V	P	                  4       p	V	\
        P                  \
        P                  ,           9  d   Rp	W‰,           pKI  	  VR
,          R8X  d   VR,           pM	VR,           pTp WR ,          9   g   WR,          9   d   V R,           p K%  W9   d7   ^p
V \        V
4      ,           V9   d   V
^,           p
K"  V \        V
4      ,           p V'       d   XVR ,          V &   V # WR ,          9  d$   VR ,          P                  V/ 4      VR ,          V &   RV9   d@   W1R,          VR,          ,           9   d%   \        VR ,          V ,          R	4      VR ,          V &   V # )r*  Úe_rî   r°  Ú_er.  r–   r,  r-  rþ   r   )Úanalyzeargs_re_1rÐ   r˜  rÔ  rž   ra   Úascii_lowercaseÚdigitsrÀ   rz  rq  )r$  r+  r.  Úorig_aÚ	a_is_exprr–  r—  ÚatÚnar¹   rw  s   &&&        r(   Ú	expr2namerC  !  si  € Ø€FÜ$×*Ñ*¨1Ó-Ô-€IßÜ#5°eÓ#<Ñ ˆÜ˜q¨¥-°Ó?ˆØˆÛˆAØ—‘“	ˆAØœ×.Ñ.´·±Õ>Ô>Ø�Ø•ŠBñ	 ð
 ˆb�6�SŒ=Ø�c•‰Bà�d•ˆBØˆØ˜•=Ô  A¨v­Ô$6Ø�C•ŠAØ„yØˆØ”#�a“&�j˜DÔ Ø�A•ŠAØ”�A“�JˆßØˆˆf��aÑð €Hð	 ˜&•MÔ!Ø$ V�}×0Ñ0°¸Ó<ˆE�&�M˜!ÑØ˜%Ô F°KÕ.@À5ÈÕCVÕ.VÔ$VÜ*¨5°­=¸Õ+;¸ZÓHˆE�&�M˜!ÑØ€Hr'   c                 ó~  € \        V 4       \        V 4      w  rR V 9  d   . V R &   . pV R ,           F   p\        W@V4      pVP                  V4       K"  	  W0R &   RV 9   dN   \	        V R,          P                  4       4       F)  w  rVV F  pW@R,          9  g   K  / V R,          V&   K   	  K+  	  V R,           FU  pVR,          V9   g   K  RV 9  d   . V R&   VR,          V R,          9  g   K6  V R,          P                  VR,          4       KW  	  RV 9   d)   V R,          V R,          9  d   / V R,          V R,          &   V # )r.  r  r*  r)  ro   r,  r¦   )rU  r˜  rC  r"  ro  rH  )r+  r–  rî   r.  r$  rw  Úargs1ri  s   &       r(   rs  rs  C  s-  € Ü�ÔÜ)¨%Ó0Ñ€MØ�UÔØˆˆf‰Ø€DØ�6�]ˆ]ˆÜ�a Ó%ˆØ�‰�AŽñ ð ˆ&�MØ�%ÔÜ˜U 7�^×1Ñ1Ó3Ö4‰HˆAÛ�Ø &�MÖ)Ø')�E˜&•M !Ó$ó ñ 5ð
 �6�]ˆ]ˆØˆV�9˜ÖØ %Ô'Ø%'��kÑ"Ø��y  kÕ 2Ö2Ø�kÕ"×)Ñ)¨!¨F­)Ö4ñ ð �5Ô˜U 8�_°E¸&µMÔAØ)+ˆˆf��e˜H•oÑ&Ø€Lr'   z\A\(.+?,.+?\)\Zz\A[+-]?\d+(_(?P<name>\w+)|)\Zz*\A[+-]?[\d.]+[-\d+de.]*(_(?P<name>\w+)|)\Zz
\A\(.*\)\Zz\A(?P<name>\w+)\s*\(.*?\)\s*\Zc                 óö   € \        V \        4      '       d   R R/# \        V \        4      '       d   R R/# \        V \        4      '       d   R R/# \        V \        4      '       d   V # \        \        V 4      4      h)r2   r5   r3   r±  )rç  r6   r8   r±  rr  ÚAssertionErrorrÌ   )r–   s   &r(   Ú_ensure_exprdictrH  f  sk   € Ü�!”S×ÒØ˜IÐ&Ð&Ü�!”U×ÒØ˜FÐ#Ð#Ü�!”W×ÒØ˜IÐ&Ð&Ü�!”T×ÒØˆÜ
œ˜a›Ó
!Ð!r'   c                 óê  € W9   d   \        W,          4      # V P                  4       p \        P                  V 4      '       d   R R/# \        P                  V 4      pV'       dI   RVP                  4       9   d0   VP                  R4      '       d   \        R\        V 4       R24       R R/# \        P                  V 4      pV'       dI   RVP                  4       9   d0   VP                  R4      '       d   \        R\        V 4       R24       R R/# R Fk  p\        WR7      P                  R	V,           R	,           4       Uu. uF  qUP                  4       NK  	  up F  pWa9   g   K  \        W,          4      u u # 	  Km  	  / p\        P                  V 4      '       d   \        V ^R W4      pM‰\        P                  V 4      pV'       dm   VP                  R4      p\        VP                  R4      W4      pV'       d   R
V9   d   VR
 V'       g'   V^ ,          V9   d   \        W(^ ,          ,          4      # V ^ ,          R9   d	   R RRRR//# V'       g   \        R\        V 4       R24       V# u upi )r2   r±  ro   z6determineexprtype: selected kind types not supported (r­   r5   r3   r   r.  rb  rg  r¶  r  ri  z4determineexprtype: could not determine expressions (z) type.
)Ú+r³  r   rµ  r   )rH  r£   Údetermineexprtype_re_1rÐ   Údetermineexprtype_re_2r  rÑ   r1   rÌ   Údetermineexprtype_re_3r   r!  Údetermineexprtype_re_4rÔ  Údetermineexprtype_re_5)	r!  r*  Úrulesrñ   Úoprë  r°  rð  Úrns	   &&&      r(   rÔ  rÔ  r  s  € Ø„|Ü ¥
Ó+Ð+Ø�:‰:‹<€DÜ×#Ñ# D×)Ò)Ø˜IÐ&Ð&Ü×$Ñ$ TÓ*€AßØ�Q—[‘[“]Ô" q§w¡w¨v§¢ÜØHÌÈdËÈÐTWÐXôZà˜IÐ&Ð&Ü×$Ñ$ TÓ*€AßØ�Q—[‘[“]Ô" q§w¡w¨v§¢ÜØHÌÈdËÈÐTWÐXôZà˜FÐ#Ð#Û"ˆÜ%3°DÔ%C×%IÑ%IÈ#ÐPRÍ(ÐUXÍ.Ô%YÓZÑ%Y —'‘'–)Ñ%YÔZˆAØŽyÜ'¨­Ó0Ô0ó [ñ #ð 	€AÜ×#Ñ# D×)Ò)Ü˜d 1 R˜j¨$Ó6‰ä"×(Ñ(¨Ó.ˆßØ—‘˜“ˆBÜ! !§'¡'¨&£/°4Ó?ˆAß�Z 1”_Ø�j�MßØ�a•5˜E”>Ü+¨E°Qµ%­LÓ9Ð9ØˆA…w�%ÔØ˜K¨¸#¸s¸ÐDÐDßÜØBÄ4ÈÃ:À,ÈiÐXô	Zà€Hùò+ [s   ÅI0rµ   c                 ó$  € \        V 4       R p\        V \        4      '       dj   V  Fa  pV'       dC   VR,          R9   d5   VR,          \        9   d   K-  \        '       d   VR,          \        9  d   KM  V\        WAVR7      ,           pKc  	  V# R pR pR pV R,          pVR8X  d   R # . p	RV 9   d
   V R,          pRV 9   d{   V R,          p
V R,           F9  p\        W°V	4      p\        W«,          4      '       d   K(  V	P                  V4       K;  	  V R,          R8X  g	   V	'       d   RR	P                  V	4       R
2pR pRV 9   dP   \        V R,          P                  4       4       F+  pV: V\        ,           : V: RV R,          V,          : 2pK-  	  V P                  R. 4      R,          pVR8X  d   RV9   d   VP                  R4       V'       d+   V: V\        ,           : RR	P                  V4      : RV: 2pR pRV 9   d   \        V R,          V\        ,           4      pR pRV 9   d   \        V R,          V\        ,           4      pVR8X  d   R pR pRV 9   d4   RV R,           R
2pV R,          V	9  d   V	P                  V R,          4       \        V R,          V\        ,           VR7      p\!        W R,          W‘\        ,           VR7      p
R pRV 9   d   V'       g   RV R,           2pRV 9   d]   R p\        V R,          P#                  4       4       F-  w  ppV V\        ,            RV RR	P                  V4       R
2pK/  	  VV,           pVR8X  d
   VR8X  d   R pV: V: V: RV: V: V: RV: V: V: V
: V: V: V: RV: RV: 2pV# ) r   r+  r�  ro   rŒ  r”  r.  r*  r/  r  r0  r  rª   r  r¦  Úcallbackúintent(z) r  r
  rŸ  r¦   z	 result (r)  r–  z! in r  zentry r—  rš  zend rÆ  )rU  rç  ro  r"   r#   r�  rC  r  r"  rÙ   rp  r   rz  rË  Úuse2fortranÚcommon2fortranÚvars2fortranrH  )r+  rb  r�  rf  re  r¢  ro   r.  Ú	blocktypeÚargslr*  r$  r  rw  Ú
intent_lstr  r
  r¦   r)  ÚmessÚentry_stmtsrõ  s   &&&                   r(   r�  r�  Ÿ  s;  € ô �ÔØ
€CÜ�%œ×ÒÛˆAß�Q�w•ZÐ#=Ô=Ø�V•9¤	Ô)Ùß“9  6¥´)Ô!;ÙØÔ(¨¸lÔKÕKŠCñ ð ˆ
Ø€FØ€DØ€DØ�g•€IØ�IÔÙØ€EØ�„Ø�V�}ˆØ�„Ø�V�}ˆØ�v—�ˆAÜ˜! EÓ*ˆAÜ$ T¥W×-Ô-Ø—‘˜Q–ñ ð ��>˜ZÔ'¯5Ø�s—x‘x “Ð' qÐ)ˆDØÐØ˜UÔ"Ü�eÐ.Õ/×4Ñ4Ó6Ö7ˆAâ  #¬§-³°EÐ:LÕ4MÈa×4Pð RÒñ 8ð —‘˜8 RÓ(¨Õ+€JØ�JÔ :°Ô#;Ø×Ñ˜*Ô%ßâ,¨c´G¯m¨mØŸH™H ZÖ0²$ð8Ðð €CØ�„~Ü˜% �,¨¬g­Ó6ˆØ€FØ�5ÔÜ  h¥°´wµÓ?ˆØÐ"Ô"ØˆØ€FØ�5ÔØ˜U 8�_Ð-¨QÐ/ˆØ��? %Ô'Ø�L‰L˜˜x�Ô)Ü˜E &�M¨3´­=À|ÔT€DÜØ�V�}˜e¬7¥]ÀôO€Dà€DØ�„Ÿ|Ø�u˜V•}�oÐ&ˆØ�%ÔØˆÜ˜˜w�×-Ñ-Ó/Ö0‰DˆAˆqØ(˜M¨#´­-¨¸¸q¸cÀÀ3Ç8Á8ÈAÃ;À-ÈqÐQŠKñ 1à�kÕ!ˆØ�LÔ  T¨^Ô%;ØˆâŠV“Y¢¢d«F²DÒ:JÊCÒQUÒW]Ò_cÓehÓjsÒuyð{€Cà€Jr'   c           
      óÚ   € R p\        V P                  4       4       FK  pVR8X  d!   V V RRP                  W,          4       2pK*  V V RV RRP                  W,          4       2pKM  	  V# )r   r¾  zcommon r  zcommon /z/ )ro  rp  rÙ   )r
  rb  rf  rw  s   &&  r(   rW  rW  é  sp   € Ø
€CÜ�&—+‘+“-Ö ˆØ�Œ=Ø�E˜#˜˜g c§h¡h¨v­yÓ&9Ð%:Ð;ŠCà�E˜#˜˜h q c¨¨C¯H©H°VµYÓ,?Ð+@ÐAŠCñ	 !ð
 €Jr'   c                 óx  € R p\        V P                  4       4       EF  pV V RV R2pW,          / 8X  d   V'       d   VR	,          R8X  d   VRR	 pK8  RW,          9   d   W,          R,          '       d   V R2pRW,          9   d�   W,          R,          '       dx   Rp\        W,          R,          P                  4       4       FK  pWPV,          R,          V,          8X  d   V V V 2pRpK*  V V V RW,          R,          V,           2pRpKM  	  V'       g   EK  VR	,          R8X  g   EK  VRR	 pEK  	  V# )
r   zuse r  NrÀ  z only:rÂ  rª   z=>r   rM  )r  rb  rf  rñ   r¹   rw  s   &&    r(   rV  rV  ó  s   € Ø
€CÜ�#—(‘(“*×ˆØ��c�U˜$˜q˜c Ð#ˆØ�6�RŒ<ß�s˜2•w #”~Ø˜#˜2�h�ÙØ�S•VÔ ¥ v§¤Ø�E˜�.ˆCØ�C•FŒ?˜s�v eŸ}œ}ØˆAÜ˜#�& �-×,Ñ,Ó.Ö/�Ø˜A�˜u� aÕ(Ô(Ø ˜E !  Q C˜.�CØ’Aà ˜E !  Q C r¨#­&°­-¸Õ*:Ð);Ð<�CØ’Añ 0÷ Š3�3�r•7˜c—>Ø�c�r�(‹Cñ% ð& €Jr'   c                 ó¾   € V R ,          p. pV F9  p \        4       RV 2,          pV! V 4      '       d   VP                  V4       K9  K;  	  V#   \         d     KM  i ; i)r  Ú	isintent_)Úglobalsr"  rÿ  )rg  r±  rf  r  r_  s   &    r(   Útrue_intent_listrc    si   € Ø
ˆh�-€CØ
€CÛˆð	#Ü“	˜I f XÐ.Õ/ˆAñ ��vŠvØ—
‘
˜6Ö"ñ ñ ð €Jøô ô 	Úð	ús   ’AÁAÁAc           	      ó  € \        V 4       R p. pV F#  pWpR,          9   g   K  VP                  V4       K%  	  RV 9   dA   V R,           F3  pWq9   d   Wv9  d   VP                  V4       K"  K$  \        RV R24       K5  	  RV 9   d   VP                  V R,          4       V'       g:   \	        VP                  4       4       F  pWv9  g   K  VP                  V4       K  	  V EF�  pRW,          9   dV   W,          R,           FB  pW�9   g   K  RW,          9   g   K  WqV,          R,          9   g   K0  \        RV RV R	24       KD  	  R
V 9   dª   WpR
,          9   d�   \        W,          4      '       d
   V V RV 2pV V RV 2p\        W,          4      '       d
   V V RV 2pWq9   d   RW,          9  d   KØ  ^p	V R,           F$  p
WzR,          8X  g   K  V
R,          R8X  g   K"  ^ p	 M	  V	'       d   EK  Wq9  d   \        V4       \        RV R24       EK9  WpR,          8X  d)   V R,          R8w  g   V P                  R4      '       d   EKn  RW,          9  dW   RW,          9   d'   RW,          R,          9   d   Wr9   d
   V V RV 2pEK®  \        W,          4       \        RV R24       EKÑ  W,          R,          pVR8X  d#   RW,          9   d   V RW,          R,           R2p/ pRW,          9   d   W,          R,          pMRW,          9   d   W,          R,          pRV9   d.   VR,          R49   d   V R VR,           R2pMWV RVR,           2pMHR!V9   d,   V R"VR!,           2pR#V9   d   V R$VR#,           R2pMV R2pMR#V9   d   V R%VR#,           R2pR&pRW,          9   do   W,          R,           Uu. uF  pVR59  g   K  VNK  	  ppV'       d    R'V9   d   R(V9   d   VP                  R(4       V'       d   V R)R*P                  V4       2pR*pR+W,          9   d)   V V R,R*P                  W,          R+,          4       R2pR*pR-W,          9   d5   \        W,          4      pV'       d   V V R.R*P                  V4       R2pR*pR/W,          9   d)   V V R0R*P                  W,          R/,          4       R2pR*pRW,          9   d)   V V R1R*P                  W,          R,          4       R2pR*pR2W,          9   dX   W,          R2,          pW,          R,          R69   d*    \        V4      pRVP                   R*VP                    R2pV R3V R2V 2pMV R3V 2pV V V 2pEK“  	  V# u upi   \"         d     L3i ; i)7r   r*  rˆ  zvars2fortran: Confused?!: "z" is not defined in vars.
r£  rn  z;vars2fortran: Warning: cross-dependence between variables "z" and "r®  r,  zintent(callback) z	external z	optional r2   r)  ro   r+  r�  z*vars2fortran: No definition for argument "rk   r¦   rg  rþ   z(vars2fortran: No typespec for argument "rf   rl  r/  r0  rh  ri  r   z*(rV   z(len=rG  z,kind=z(kind=rª   z
intent(in)zintent(out)r·  r  rý   r2  r  rU  rm  zcheck(zdepend(rk  z :: )r   r   )rþ   )r±  r  )rU  r"  rm   ræ  ro  rp  r  Ú
isoptionalÚshowr1   rz  rË  rÙ   rc  r×  r3   ÚimagrÄ   )r+  r*  r.  rb  r�  rf  Únoutr$  r  rß   ri  Úvardefrñ  r¹   ré   rò  r±  rû  s   &&&&&             r(   rX  rX    sš  € Ü�ÔØ
€CØ€DÛˆØ�f•ÖØ�K‰K˜ŽNñ ð �uÔØ�|×$Ð$ˆAØŒyØ”=Ø—K‘K –Nñ !ô Ø1°!°Ð4OÐPöRñ %ð �UÔØ�‰�E˜*Õ%Ô&ßÜ�d—i‘i“kÖ"ˆAØŽ}Ø—‘˜A–ñ #ô ˆØ�t•wÔØ•W˜X×&Ð&�Ø–9 ¨T­WÖ!4¸À1½gÀhÕ>OÖ9OÜØUÐVWÐUXÐX_Ð`aÐ_bÐbfÐgöiñ 'ð ˜%Ô A¨{Õ);Ô$;Ü  ¥×)Ò)Ø˜˜c˜UÐ"3°A°3Ð7�Ø�E˜#˜˜i¨ sÐ+ˆCÜ˜$�'×"Ò"Ø˜˜c˜U )¨A¨3Ð/�ØŒy˜Z¨t­wÔ6ÙØˆDØ˜6—]�]�Ø˜&�	–> a¨¥j°JÖ&>Ø�DÙñ #÷ ÚØŒ=Ü�ŒJÜÐ@ÀÀÀ4ÐHÔIÚØ�f•ÔØ�W�~ Ô+¨u¯y©y¸×/BÒ/Bò
 Ø˜T�WÔ$Ø˜T�WÔ$¨°tµw¸zÕ7JÔ)JØ”9Ø ˜E #  i°¨sÐ3�CÚÜ�•ŒMÜÐ>¸q¸cÀÐFÔGÚØ•˜Õ$ˆØ�VÔ 
¨d­gÔ 5Ø�x˜q ¥¨Õ!4Ð 5°QÐ7ˆFØˆØ˜T�WÔ$Ø•w˜~Õ.‰HØ˜t�wÔ&Ø•w˜~Õ.ˆHØ�(Œ?Ø˜�} 
Ô*Ø"˜8 2 h¨s¥m _°AÐ6‘à"˜8 1 X¨c¥] OÐ4‘Ø�hÔØ�x˜u X¨e¥_Ð$5Ð6ˆFØ˜Ô!Ø"˜8 6¨(°6Õ*:Ð);¸1Ð=‘à"˜8 1˜‘Ø�xÔØ�x˜v h¨vÕ&6Ð%7°qÐ9ˆFØˆØ˜�Ô Ø#�w zÖ2ó .Ñ2˜!Ø Ñ,÷ �AÑ2ˆDð .ç °Ô 4¸È$Ô9Nð —‘˜MÔ*ßØ"˜8 2 c§h¡h¨t£nÐ%5Ð6�Ø�Ø˜$�'Ô!Ø�x ˜s *¨S¯X©X°dµg¸kÕ6JÓ-KÐ,LÈAÐNˆFØˆAØ�t•wÔÜ" 4¥7Ó+ˆCßØ"˜8 A 3 g¨c¯h©h°s«m¨_¸AÐ>�ØˆAØ�d•gÔØ�x ˜s &¨¯©°$µ'¸'Õ2BÓ)CÐ(DÀAÐFˆFØˆAØ�t•wÔØ�x ˜s '¨#¯(©(°4µ7¸8Õ3DÓ*EÐ)FÀaÐHˆFØˆAØ�$•'Œ>Ø•˜•ˆAØ�w�zÕ"Ð&CÔCðÜ˜Q›�AØ˜AŸF™F˜8 1 Q§V¡V H¨AÐ.�Að �x˜t A 3 a¨ sÐ+‰Fà�x˜t A 3Ð'ˆFØ��c�U˜6˜(Ð#‹ñI ðJ €JùòM.øô@ !ô Ùðús   Ï	U9ÏU9Ô0(U>Õ>VÖVc                 óF  € \        R ^ 4       \        V \        4       \        R^ 4       . s\	        \
        ^ ,          4      p\        R^ 4       \         F(  p\        RVP                   R2^ 4       \        W4      pK*  	  \        R^ 4       \        V4      p\        V,           # )zReading fortran codes...
zPost-processing...
z"Applying post-processing hooks...
z  rµ   zPost-processing (stage 2)...
)
r1   r×   r5  r   rq  r   Úpost_processing_hooksÚ__name__Útraverserd  )ÚfilesÚpostlistÚhooks   &  r(   Úcrackfortranrq  œ  s�   € ô Ð(¨!Ô,Ü�Eœ9Ô%ÜÐ" AÔ&Ø€KÜœ 1�Ó&€HÜÐ1°1Ô5ß%ˆÜ�"�T—]‘]�O 2Ð&¨Ô*Ü˜HÓ+Šñ &ô Ð,¨aÔ0Ü˜(Ó#€HÜ˜Õ!Ð!r'   c                 ób   € \        V 4      R ,           pRpR\        ,          pW!,           V,           # )rµ   zE!    -*- f90 -*-
! Note: the context of this file is case sensitive.
z�
! This file was auto-generated with f2py (version:%s).
! See:
! https://web.archive.org/web/20140822061353/http://cens.ioc.ee/projects/f2py2e
)r�  Úf2py_version)r+  ÚpyfÚheaderÚfooters   &   r(   Úcrack2fortranrw  ­  s:   € ô ˜5Ó
! DÕ
(€Cð€Fðô õ	€Fð
 �<˜&Õ Ð r'   c                 ó˜   € \        V \        4      ;'       d4    \        V 4      ^8H  ;'       d    \        V ^ ,          \        \        34      # )rÄ  )rç  ÚtuplerV   r6   rÀ   )Úobjs   &r(   Ú_is_visit_pairr{  ¼  sB   € Ü�sœEÓ"÷ /ð /Ü�C“˜A‘÷/ð /ä˜3˜q�6¤C¬ :Ó.ð0r'   c                ó0  € \        V 4      '       d>   V ^ ,          R8X  d   V # V! WV.VO5/ VB pVe   \        V4      '       g   Q hV# T pV w  r€MRV 3pRp\        V \        4      '       dK   . p\        V 4       F8  w  rš\	        Wš3VW'.,           V.VO5/ VB w  r¼Vf   K'  VP                  V4       K:  	  MZ\        V \        4      '       dC   / pV P                  4        F+  w  rÚ\	        WÚ3VW'.,           V.VO5/ VB w  rïVf   K'  WöV&   K-  	  MT pVf   V# W†3# )a¥  Traverse f2py data structure with the following visit function:

def visit(item, parents, result, *args, **kwargs):
    """

    parents is a list of key-"f2py data structure" pairs from which
    items are taken from.

    result is a f2py data structure that is filled with the
    return value of the visit function.

    item is 2-tuple (index, value) if parents[-1][1] is a list
    item is 2-tuple (key, value) if parents[-1][1] is a dict

    The return value of visit must be None, or of the same kind as
    item, that is, if parents[-1] is a list, the return value must
    be 2-tuple (new_index, new_value), or if parents[-1] is a
    dict, the return value must be 2-tuple (new_key, new_value).

    If new_index or new_value is None, the return value of visit
    is ignored, that is, it will not be added to the result.

    If the return value is None, the content of obj will be
    traversed, otherwise not.
    """
rW  N)r{  rç  ro  rà  rm  r"  rr  rH  )rz  ÚvisitÚparentsr¦   r.  ÚkwargsÚ
new_resultÚparentÚ
result_keyrY   r  Ú	new_indexÚnew_itemr‘  Únew_keyÚ	new_values   &&&&*,          r(   rm  rm  Â  sS  € ô8 �c×ÒØˆq�6�^Ô#àˆJÙ˜3¨ÐA°$ÒA¸&ÑAˆ
ØÒ!Ü! *×-Ò-Ð-Ð-ØÐØˆØ‰ˆ
�Cà˜�ˆØˆ
ä�#”t×ÒØˆ
Ü% cžN‰LˆEÜ"*¨E¨>¸5Ø+2°XÕ+=¸vð#<à,0ò#<à4:ñ#<ÑˆIð Ô$Ø×!Ñ! (Ö+ò +ô 
�Cœ×	Ò	Øˆ
ØŸ)™)ž+‰JˆCÜ!)¨3¨,¸Ø*1°HÕ*<¸fð";à+/ò";à39ñ";ÑˆGð Ô"Ø&/˜7Ó#ò &ð ˆ
àÒØÐØÐ!Ð!r'   c                ó¢  € VR,          w  rVV w  rxR p	VR9   d)   VR,          ^ ,          R8X  g   Q hVR,          ^,          p
M1VR8X  d)   VR,          ^ ,          R8X  g   Q hVR,          ^,          p
MRp
RpV
e8   TpV
P                  4        F   w  rÍ\        V4      '       g   K  V	! WË4      pK"  	  MyVR8X  ds   VR,          ^,          R,          p
TpV
P                  4        FE  w  rÍ\        V4      '       g   K  \        P                  ! RV,           R,           RV,           V4      pKG  	  Ve#   W¸8w  d   \	        R	V R
V RV RV R2	^4       W{3# R# )aØ  Previously, Fortran character was incorrectly treated as
character*1. This hook fixes the usage of the corresponding
variables in `check`, `dimension`, `=`, and `callstatement`
expressions.

The usage of `char*` in `callprotoargument` expression can be left
unchanged because C `character` is C typedef of `char`, although,
new implementations should use `character*` in the corresponding
expressions.

See https://github.com/numpy/numpy/pull/19388 for more information.

c                 óš   € \         P                  ! R V ,           R,           W4      p\         P                  ! RV ,           R,           W4      pV# )z[*]\s*\brœ  z\b\s*[\[]\s*0\s*[\]])r¼   rÖ  )Úvarnamer  s   &&r(   Ú	fix_usageÚ8character_backward_compatibility_hook.<locals>.fix_usage  s>   € Ü—’�{ WÕ,¨uÕ4°gÓEˆÜ—’�u˜w•Ð)@Õ@Øó'ˆàˆr'   r*  rk  NÚcallstatementz
(?<![&])\brœ  r›   zcharacter_bc_hook[r“  z]: replaced `z` -> `z`
r   )rý   rm  éýÿÿÿrœ   )rH  Úischaracterr¼   rÖ  r1   )r4  r~  r¦   r.  r  Ú
parent_keyÚparent_valuer‘  r  rŠ  Ú	vars_dictr†  r‰  Úvds   &&&*,         r(   Ú%character_backward_compatibility_hookr“    s`  € ð  ' r�{Ñ€JØ�J€Còð Ð+Ô+Ø�r�{˜1�~ Ô'Ð'Ð'Ø˜B•K •N‰	Ø	�ŒØ�r�{˜1�~ Ô'Ð'Ð'Ø˜B•K •N‰	àˆ	à€IØÒØˆ	Ø$Ÿ?™?Ö,‰KˆGÜ˜2�ŒÙ% gÓ9’	ò -ð 
�Ô	Ø˜B•K •N 6Õ*ˆ	Øˆ	Ø$Ÿ?™?Ö,‰KˆGÜ˜2�Œô ŸFšFØ! GÕ+¨eÕ3°S¸7µ]ÀIóO’	ñ	 -ð ÒØÔô
 Ð(¨¨°A°c°Uð ;"Ø"' ¨¨y¨k¸ð>Ø?@ôBàÐÐñ r'   Ú__main__r(  r   z-quietz-verbosez-fixz?Use option -f90 before -fix if Fortran 90 code is in fix form.
z-skipemptyendsz--ignore-containsz-f77z-f90r¬   z-hz-showz-mr³  zUnknown option z	OSError: a    Warning: You have specified module name for non Fortran 77 code that
  should not need one (expect if you are scanning F90 code for non
  module blocks but then you should use flag -skipemptyends and also
  be sure that the files do not contain programs without program
  statement).
zWriting fortran code to file r…  r
   r   )r	   )z.f90z.f95z.f03z.f08)z.forz.ftnz.f77z.f)z([a-z]+[\w\s(=*+-/)]*?|)r�  r�  r÷   )z	[a-z\s]*?rœ  rœ  r÷   )r   rü   rü   r÷   )r   údimension|virtualr•  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   úintent|depend|note|checkr–  z\s*\(.*?\).*)r   r  r  z\s*\(.*)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   úKthreadsafe|fortranname|callstatement|callprotoargument|usercode|pymethoddefr—  r÷   )rµ  )r  )rR  r+   )r   N)Nr   )r   )NN)rµ  rµ  )rµ   F)r   F)ÖÚ__doc__r‰   rÌ  rÁ   rƒ   rÉ  r¼   ra   r,   Úpathlibr   r€   ÚImportErrorr   r   r   ÚauxfuncsÚversionrs  r   r   r   r   r   r   r   r   r   r   r   r»   r    r   r   r   r   r7  r   r   r6  r$   r   r#   r%   r   r"   r!   r   r)   r1   r•  r¹   rl   rx   r§   rp   ru   ry   r{   r½   r¾   r†  r¡   r¢   rÉ   rÐ   r¤   rŸ   rÈ   r”   r¨   rf  r×   ÚbeforethisafterÚfortrantypesrH  rÛ  rE  rF  Úgroupbegins77rÊ   Úgroupbegins90rË   Ú	groupendsrC  ÚendifsrB  ÚmoduleproceduresrN  rG  r8  r9  r;  r<  r?  r@  rA  r:  r=  r>  rJ  rM  rQ  rI  rK  rL  rD  ÚSr3  r4  rÏ   r%  rO  Úcrackline_bind_1rÎ  r5  rP  r   re  rx  r  r�  r�  rŽ  r�  rÕ  r·  r{  r}  r„  rŠ  r‘  rR  rè  rÏ  rÒ  rh  ri  rI  r6  r#  r,  rÐ  rÜ  rq  rr  rs  rS  rU  rX  r`  rd  rq  rv  rt  rw  r˜  rš  rŸ  r¤  r¨  r©  r¯  r³  r¸  r¼  rÍ  rÓ  rë  rí  ré  ru  r<  rÙ  r  rC  rs  rK  rL  rM  rN  rO  rH  rÔ  r�  rW  rV  rc  rX  rk  rq  rw  r{  rm  r“  r"  rl  rn  Úfuncsr_  Úf2Úf3ÚshowblocklistÚargvré   rm   rÌ   r†   rÛ   ÚOSErrorÚdetailro  rt  r.   r&   r'   r(   Ú<module>r­     s%  ðñIóT Û Û Û 	Û Û 	Û Û 
Ý ðÛ÷ $ô
 à×"Ñ"€ð €	Ø€Ø	€Ø
€Ø
€Ø€Ø€Ø€Ø€Ø€Ø
€ð €Ø€Ø€Ø€ØÐ Ø€Ø€
Ø€Ü˜2Ð€	Ø€	Ø€Ø€Ø€	ØÐ Ø€Ø€	Ø€Ø€ò#ôLð Ð Û	!€AØ)¨6Ð2Ð˜Óñ 
"ã	€AØ)¨9Ð5Ð˜Óñ 
à€Ø€ð
ˆ%ð 
�ð 
˜7ð 
 Fð 
¨Gð 
°Vð 
¸Vð 
ÀVð 
ÈWð 
Ø
ð
Øð
Ø(ð
Ø*.ð
Ø05ð
Ø7@ð
ØBJð
ØLSð
à
ð
àð
à(ð
à*/ð
à18ð
à:>ð
à@Fð
àHPð
ð ð
ð ð
ð 'ð
ð )1ð
ð 3;ð
ð =Dð
ð FLð
ð ð	
ð ð	
ð !ð	
ð #*ð	
ð ,2ð	
ð 4:ð	
ð <@ð	
ð
 ð
ð
 ð
ð ð
ð ð
ð ð
ð %ð
ð '5ð
ð 7>ð
ð @Hð
ð JRð
ð ð
ð ó
€Að �e•)€HˆQ�KØ€K��E•	Óñ
òò,òò1ð —
’
Ð3°R·T±TÓ:×AÑA€Ø—*’*Ð1°2·4±4Ó8×?Ñ?€Ø—*’*Ð1°2·4±4Ó8×?Ñ?€Ø—*’*Ð1°2·4±4Ó8×>Ñ>€ò :Ð Ú8Ð ò3ò>ð4 '+°!ô _DðF€ð D€Ø�zŠzØ�r˜<¨°tÐ<Õ<¸b¿d¹dóDØEKðL€àŸ
š
 ?ØˆÐ4Õ4°lÐEbÕ6bÐdhð6jõ $jØkm×koÑkoóqÐ ð —*’*˜_ð 0?õ ?Ø@BÇÁóFØGNðO€à—J’J˜ð 24õ  4Ø57·T±Tó;Ø<CðDÐ ð (€Ø—’Ø�r˜=¨-¸Ð>Õ>ÀÇÁóFØGNðO€àðõ€ð —’Ø�r˜=¨-¸Ð>Õ>ÀÇÁóFØGNðO€ð7€	à�ZŠZØ�r˜9 i°Ð6Õ6¸¿¹ó>Ø?DðE€
ð
 €à�zŠzØ�y &¨&°$Ð7Õ7¸¿¹ó?Ø@GðH€ð )Ð ØŸšØ�rÐ+Ð-=¸tÐDÕDÀbÇdÁdóLàðÐ ð —*’*ØÐ8Õ8¸"¿$¹$ó@ØAKðL€à—:’:˜oð 18õ 8Ø9;¿¹ó?Ø@KðLÐ à—*’*ØÐ8Õ8¸"¿$¹$ó@ØAKðL€à—*’*ØÐ8Õ8¸"¿$¹$ó@ØAKðL€à—*’*ØÐ8Õ8¸"¿$¹$ó@ØAKðL€à—
’
ØÐ4Õ4°b·d±dó<Ø=EðF€à—’ØÐ6Õ6¸¿¹ó>Ø?HðI€à—:’:ØÐ:Õ:¸B¿D¹DóBØCNðOÐ à—
’
˜?ð .Qõ QØRT×RVÑRVóXØYaðb€à—:’:ØÐ@Õ@À"Ç$Á$óHØITðUÐ à�jŠjØÐ0Õ0°"·$±$ó8Ø9?ð@€à�jŠjØÐ0Õ0°"·$±$ó8Ø9?ð@€à�zŠzØÐ2Õ2°B·D±Dó:Ø;BðC€à—’ØÐ6Õ6¸¿¹ó>Ø?HðI€à—
’
ØÐ4Õ4°b·d±dó<Ø=EðF€à�ZŠZØÐ.Õ.°·±ó6Ø7<ð=€
à—*’*ØÐ6Õ6¸¿¹ó>Ø?IðJ€à—
’
ØÐ4Õ4°b·d±dó<Ø=EðF€ð Ÿ*š* _ð 8Mõ &Mð OQ÷  OSñ  OSð  VX÷  VZñ  VZõ  OZó[ð ]oðoÐ à—:’:Ø9¸2¿4¹4óAØBMðNÐ òò(ð —’ÐAÀ2Ç4Á4ÓH€Ø—:’:ÐAÀ2Ç4Á4ÓHÐ Ø—Z’ZÐ kÐmo×mqÑmqÓrÐ ô[%ò|ô$ò&ô
ð@ —
’
ØKÈRÏTÉTóS€à—’ð%Ø&(§d¡dó,€ð —*’*ð rð  tv÷  txñ  txóy€à—*’*ð*Ø+-¯4©4ó1€ð —j’jØ@À"Ç$Á$óHÐ à—
’
Ø;ó=€à�zŠzØHóJ€ð ŸšÐ$AÀ2Ç4Á4ÓHÐ òòò ò ò u@òpò(ð8 �jŠjÐEÀrÇtÁtÓL€Ø�zŠzØIÈ2Ï4É4óQ€à�zŠzØ9¸2¿4¹4óA€à—’ð2à35·4±4ó9€ð —*’*ð Gð  IK÷  IMñ  IMóN€òò"òJfòR7,ôvô6ôôòòôô<ô@\ò~òD'ôT*òZ$ô&!ð —*’*˜^¨R¯T©TÓ2€òAðH �zŠzÐ,¨b¯d©dÓ3€òò,ò4ò$"òô ð$ (*ô bòJ(ð —*’*˜WÓ%×+Ñ+€òò DðN —:’:Ð1°2·4±4Ó8Ð ô;ò|Mð`  ô òDð6 ŸšÐ$6¸¿¹Ó=Ð ØŸšÐ$DÀbÇdÁdÓKÐ ØŸšØ1°2·4±4ó9Ð àŸš M°2·4±4Ó8Ð ØŸšÐ$EÀrÇtÁtÓLÐ ò	"ð )+ô (ôZGôTôò0ôzð@ Ð ò"ò"!ò0ð "$¨Dô ?"òD9 õx × Ò ÐBÔ Cð ˆzÕØ€EØ€EØ	€AØ	
€BØ	
€BØ€MØ�XŠX�b�\‰\ˆØ�Œ7ÙØˆq�T�SŒ[ØŠAØ�(Œ]ØˆEØŠGØ�*Œ_ØˆGØŠEØ�&Œ[ß‹yÙØVÐXYô[àˆMØ"ŠNØÐ"Ô"ØŠMØÐ%Ô%ØŠNØ�&Œ[ØˆIØ"ŠNØ�&Œ[ØˆIØ#ˆNØŠMØ�$ŒYØŠBØ�'Œ\ØŠMØ�$ŒYØŠBØˆq�T�SŒ[Ù�o¡d¨1£g Y¨bÐ1Ö2ßØˆBØŠKßØˆBØŠMßð2Ù�Q“—’”Ø—’˜Q—ð �LŠL˜�Oñc ÷d ‹9Ÿ›¯}«}Ùð ð ô	ñ ˜EÓ"€Hßƒ{ÙÐ/±´[Ó0AÐ/BÀ"ÐEÀqÔIÙ˜HÓ%ˆÙ”+˜s×#Ô# qØ�GŠG�CŒL÷ $çÙˆXŽñ ñQ øðYm ô ØÓðûðBo ô 2Ù˜) F¡:¨RÐ0×1Ó1ûð2ú÷" $×#ús5   ªq í$)qðr ñ	qñqñq=ñ$q8ñ8q=ò r	