Ë
    éÿæiö®  ã                   óè  — d dl mZ d dlmZmZ d dlmZmZ 	 d dl mZ	 ddlZddlZddlZ	 ej                  dk  rddlZnddlZ ej"                  «       Zd„ Zd	Z ej*                  d
ej,                  ej.                  z  «      Z ej*                  dej,                  ej.                  z  «      Z ej*                  dej.                  «      Z ej*                  d«      Z ej*                  d«      Z ej*                  d«      Z ej*                  d«      Zda ej*                  dej@                  «      Z! ej*                  d«      Z" ej*                  d«      Z# ej*                  d«      Z$ ej*                  d«      Z% ej*                  d«      Z& ej*                  d«      Z' ej*                  d«      Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d „ Z0d!„ Z1 G d"„ d#e2«      Z3y# e
$ r ddl	Z	Y �ŒÄw xY w# e
$ r dZY �Œœw xY w)$é   )Úmodel)ÚCOMMON_TYPESÚresolve_common_type)ÚFFIErrorÚ	CDefError)Ú
_pycparseré    N)é   c                  ó   — dd l } dd l} y ©Nr	   )Úpycparser.yacctabÚpycparser.lextab)Ú	pycparsers    úa/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/cffi/cparser.pyÚ%_workaround_for_static_import_findersr      s
   € ó Üó    z<cdef source string>z/\*.*?\*/|//([^\n\\]|\\.)*?$z?^\s*#\s*define\s+([A-Za-z_][A-Za-z_0-9]*)\b((?:[^\n\\]|\\.)*?)$z^[ \t]*#[ \t]*(?:line|\d+)\b.*$z=\s*\.\.\.\s*[,}]|\.\.\.\s*\}z__dotdotdot\d+__$z\[\s*\.\.\.\s*\]z\w+|\Sz-?0?x?[0-9a-f]+[lu]*$z\b(__stdcall|WINAPI)\bz[(]\s*(__stdcall|WINAPI)\bz\b__cdecl\bz9\bextern\s*"(Python|Python\s*\+\s*C|C\s*\+\s*Python)"\s*.z'[*]\s*((const|volatile|restrict)\b\s*)+z3(\b(int|long|short|signed|unsigned|char)\s*)+\.\.\.z\b(double|float)\s*\.\.\.c                  óB   — t         €t        j                  «       a t         S ©N)Ú_parser_cacher   ÚCParser© r   r   Ú_get_parserr   2   s   € äÐÜ!×)Ñ)Ó+ˆÜÐr   c                 óV  — g }	 t         j                  | «      }|sní|j                  | d |j                  «        «       |j                  d«       d}|j                  |j	                  «       «       |j                  «       }| j                  d|«      r|j                  d«       |dz  }d}|}|t        | «      k  r?| |   }|dk(  r|dz  }n|dk(  r|dk(  rn$|dz  }n
|dv r|dk(  rn|dz  }|t        | «      k  rŒ?| || |z   | |d  z   } �Œ|j                  | «       dj                  |«      S )NÚ(Ú)Ú*r	   r   z,;=Ú )	Ú_r_star_const_spaceÚsearchÚappendÚstartÚgroupÚendÚ
startswithÚlenÚjoin)ÚcsourceÚpartsÚmatchÚclosingÚendposÚlevelÚiÚcs           r   Ú_workaround_for_old_pycparserr/   8   s<  € ð €EØ
Ü#×*Ñ*¨7Ó3ˆÙØà�‰�W˜^˜eŸk™k›mÐ,Ô-Ø�‰�SÔ S˜7Ø�‰�U—[‘[“]Ô#Ø—‘“ˆØ×Ñ˜c 6Ô*Ø�L‰L˜Ô˜w¨#™~˜wØˆØˆØ”#�g“,ÒØ˜‘
ˆAØ�CŠxØ˜‘
‘Ø�c’Ø˜A’:ØØ˜‘
‘Ø�e‘Ø˜A’:ØØ�‰FˆAð ”#�g“,Óð ˜& Ð# gÑ-°¸¸°Ñ;ˆñ3 ð6 
‡L�L�ÔØ�7‰7�5‹>Ðr   c                 óØ  — g }	 t         j                  | «      }|s�n-|j                  «       dz
  }|j                  | d |j	                  «        «       d|j                  d«      v r|j                  d«       n|j                  d«       | |   dk(  rf| j                  d|«      }|dk  rt        d«      ‚| j                  d|dz   |«      dk\  rt        d	«      ‚|j                  | |dz   | «       | |dz   d  } nA| j                  d
|«      }|dk  rt        d«      ‚|j                  | ||dz    «       | |dz   d  } |j                  d«       �ŒF|j                  | «       dj                  |«      S )Nr   ÚCz(void __cffi_extern_python_plus_c_start; z!void __cffi_extern_python_start; Ú{Ú}r	   z!'extern "Python" {': no '}' foundz7cannot use { } inside a block 'extern "Python" { ... }'Ú;z'extern "Python": no ';' foundz  void __cffi_extern_python_stop;r   )
Ú_r_extern_pythonr   r#   r    r!   r"   Úfindr   ÚNotImplementedErrorr&   )r'   r(   r)   r+   r*   Ú	semicolons         r   Ú_preprocess_extern_pythonr9   b   su  € ð €EØ
Ü ×'Ñ'¨Ó0ˆÙÙØ—‘“˜q‘ˆð 	�‰�W˜^˜eŸk™k›mÐ,Ô-Ø�%—+‘+˜a“.Ñ Ø�L‰LÐCÕDà�L‰LÐ<Ô=Ø�6‰?˜cÒ!à—l‘l 3¨Ó/ˆGØ˜Š{ÜÐ EÓFÐFØ�|‰|˜C ¨!¡¨WÓ5¸Ò:Ü)ð +Hó Ið Ià�L‰L˜ ¨¡¨'Ð2Ô3Ø˜g a™i˜jÐ)‰Gð  Ÿ™ S¨&Ó1ˆIØ˜1Š}ÜÐ BÓCÐCØ�L‰L˜ ¨	°!©Ð4Ô5Ø˜i¨™k˜lÐ+ˆGØ�‰Ð7Ô8ñ= ðB 
‡L�L�ÔØ�7‰7�5‹>Ðr   c                 ó®   — d| vry | j                  «       D ]=  }d|v sŒ|j                  «       j                  d«      rŒ(dd l}|j	                  d«        y  y )NÚ"Ú#r	   z¨String literal found in cdef() or type source. String literals are ignored here, but you should remove them anyway because some character sequences confuse pre-parsing.)Ú
splitlinesÚlstripr$   ÚwarningsÚwarn)r'   Úliner?   s      r   Ú_warn_for_string_literalrB   ”   sS   € Ø
�'ÑØØ×"Ñ"Ö$ˆØ�$Š;˜tŸ{™{›}×7Ñ7¸Õ<ÛØ�M‰Mð 1ô 2ñ ñ %r   c                 ód   — | j                   s$dd l}|j                  d| j                  ›d�«       y y )Nr	   zGlobal variable 'z_' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern'))Ústorager?   r@   Úname)Údeclr?   s     r   Ú/_warn_for_non_extern_non_static_global_variablerG       s)   € Ø�<Š<ÛØ�Šà.2¯i«ið:õ 	;ð r   c                 óF   ‡— g Šˆfd„}t         j                  || «      } | ‰fS )Nc                 ób   •— t        ‰«      }‰j                  | j                  «       «       d|z  S )Nz#line@%d)r%   r    r"   )Úmr-   Úline_directivess     €r   Úreplacez(_remove_line_directives.<locals>.replace­   s+   ø€ Ü�Ó ˆØ×Ñ˜qŸw™w›yÔ)Ø˜A‰~Ðr   ©Ú_r_line_directiveÚsub)r'   rL   rK   s     @r   Ú_remove_line_directivesrP   §   s.   ø€ ð
 €Oôô  ×#Ñ# G¨WÓ5€GØ�OÐ#Ð#r   c                 ó:   ‡— ˆfd„}t         j                  || «      S )Nc                 ó~   •— | j                  «       }|j                  d«      st        d«      ‚‰t        |dd  «         S )Nz#line@zBunexpected #line directive (should have been processed and removedé   )r"   r$   ÚAssertionErrorÚint)rJ   ÚsrK   s     €r   rL   z*_put_back_line_directives.<locals>.replaceµ   sD   ø€ Ø�G‰G‹IˆØ�|‰|˜HÔ%Ü ð "Kó Lð Làœs 1 Q R 5›zÑ*Ð*r   rM   )r'   rK   rL   s    ` r   Ú_put_back_line_directivesrW   ´   s   ø€ ô+ô × Ñ  ¨'Ó2Ð2r   c                 ó,  — t        | «      \  } }d„ }t        j                  || «      } i }t        j	                  | «      D ]:  }|j                  «       \  }}|j                  dd«      j                  «       }|||<   Œ< t        j                  d| «      } t        j                  dk  rt        | «      } t        j                  d| «      } t        j                  d| «      } t        j                  d| «      } t        | «      } t        | «       t         j                  d| «      } t#        t$        j	                  | «      «      }t'        t)        |«      «      D ]u  \  }}|j+                  «       }	| |	   d	k(  r:| j-                  d
|	|j/                  «       «      }
|
|	kD  sJ ‚d| d |	 || |
dz   d  fz  } ŒX| |	|	dz    d
k(  sJ ‚d| d |	 || |	dz   d  fz  } Œw t0        j                  d| «      } t2        j                  d| «      } | j                  d
d«      } t5        | |«      } | |fS )Nc                 óL   — d| j                  «       j                  d«      dz  z   S )NÚ Ú
)r"   Úcount)rJ   s    r   Úreplace_keeping_newlinesz-_preprocess.<locals>.replace_keeping_newlinesÃ   s!   € Ø�Q—W‘W“Y—_‘_ TÓ*¨TÑ1Ñ1Ð1r   z\
r   z2.14z volatile volatile const(z volatile volatile const rZ   z[__dotdotdotarray__]Ú=ú...z%s,__dotdotdot%d__ %sr
   z%s __dotdotdot%d__ %sz __dotdotdotint__ z __dotdotdotfloat__ z __dotdotdot__ )rP   Ú
_r_commentrO   Ú	_r_defineÚfinditerÚgroupsrL   Ústripr   Ú__version__r/   Ú_r_stdcall2Ú_r_stdcall1Ú_r_cdeclr9   rB   Ú_r_partial_arrayÚlistÚ_r_partial_enumÚ	enumerateÚreversedr!   r6   r#   Ú_r_int_dotdotdotÚ_r_float_dotdotdotrW   )r'   rK   r]   Úmacrosr)   Ú	macronameÚ
macrovalueÚmatchesÚnumberÚpÚp2s              r   Ú_preprocessrw   ½   s%  € ô  7°wÓ?Ñ€Gˆ_ò2ä�n‰nÐ5°wÓ?€Gà€FÜ×#Ñ# GÖ,ˆØ %§¡£Ñˆ	�:Ø×'Ñ'¨°Ó3×9Ñ9Ó;ˆ
Ø&ˆˆyÒð -ô �m‰m˜B Ó(€Gä×Ñ˜vÒ%Ü/°Ó8ˆô �o‰oÐ9¸7ÓC€GÜ�o‰oÐ9¸7ÓC€GÜ�l‰l˜3 Ó(€Gô (¨Ó0€Gô ˜WÔ%ô ×"Ñ"Ð#9¸7ÓC€Gô ”?×+Ñ+¨GÓ4Ó5€GÜ"¤8¨GÓ#4Ö5‰ˆ�Ø�K‰K‹MˆØ�1‰:˜ÒØ—‘˜e Q¨¯	©	«Ó4ˆBØ˜’6ˆM�6Ø-°¸¸!°¸fØ18¸¸A¹¸°ð1Añ A‰Gð ˜1˜Q˜q™S�> UÒ*Ð*Ð*Ø-°¸¸!°¸fØ18¸¸1¹¸°ð1@ñ @‰Gð 6ô ×"Ñ"Ð#7¸ÓA€Gä ×$Ñ$Ð%;¸WÓE€Gð �o‰o˜eÐ%6Ó7€Gä'¨°ÓA€GØ�Fˆ?Ðr   c                 óF  — t        t        «      }|j                  d«       |j                  d«       |j                  d«       |j                  d«       |j                  d«       t        «       }d}d}d}t        j	                  | «      D ]”  }||v rŒ|dk(  r'|r…|j                  |«       |j                  |«       d}n`|dk(  rd	}d}nV|dk(  r|d
z  }nK|dk(  r|d
z  }n@|dk(  r*|r9|dk(  r4|j                  |«       |j                  |«       n|j                  |«       |}Œ– |S )Nr4   Ú,r   r   ÚtypedefFr	   r   Tr   )Úsetr   ÚaddÚ_r_wordsÚfindallÚdiscard)r'   Úlook_for_wordsÚ
words_usedÚ
is_typedefÚparenÚprevious_wordÚwords          r   Ú_common_type_namesr†   ÿ   s)  € ô œÓ&€NØ×Ñ�sÔØ×Ñ�sÔØ×Ñ�sÔØ×Ñ�sÔØ×Ñ�yÔ!Ü“€JØ€JØ€EØ€MÜ× Ñ  Ö)ˆØ�>Ñ!Ø�sŠ{ÙØ×&Ñ& }Ô5Ø"×*Ñ*¨=Ô9Ø!&‘JØ˜Ò"Ø!�
Ø‘Ø˜’Ø˜‘
‘Ø˜’Ø˜‘
‘Ø˜’Ù %¨1¢*Ø×&Ñ& }Ô5Ø"×*Ñ*¨=Õ9à—‘˜tÔ$Ø‰ð) *ð* Ðr   c                   óÄ   — e Zd Zd„ Zd„ Zd„ Zd„ Z	 	 dd„Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zdd„Z	 	 d d„Zdd„Zd„ Zd!d„Zd„ Zd"d„Zd„ Zd„ Zd„ Zd„ Zd„ Zy)#ÚParserc                 ó¨   — i | _         t        «       | _        d| _        t	        j
                  «       | _        i | _        i | _        g | _	        d | _
        y r   )Ú_declarationsr{   Ú_included_declarationsÚ_anonymous_counterÚweakrefÚWeakKeyDictionaryÚ_structnode2typeÚ_optionsÚ_int_constantsÚ_recompleteÚ_uses_new_feature)Úselfs    r   Ú__init__zParser.__init__)  sL   € ØˆÔÜ&)£eˆÔ#Ø"#ˆÔÜ '× 9Ñ 9Ó ;ˆÔØˆŒØ ˆÔØˆÔØ!%ˆÕr   c                 óp  — t        |«      \  }}t        |«      }g }t        | j                  «      D ];  }|j	                  d«      sŒ|dd  }|j                  |«       |j                  |«       Œ= |t        |«      z  }g }|j                  d«       |D ]  }|j                  d|z  «       Œ |j                  d«       |j                  dt        ›d�«       |j                  |«       |j                  d«       d	j                  |«      }t        �t        j                  «        	 t        «       j                  |«      }	t        �t        j#                  «        	 	||fS # t        j                  j                  $ r}
| j!                  |
|«       Y d }
~
ŒTd }
~
ww xY w# t        �t        j#                  «        w w xY w)
Nútypedef é   z*# 1 "<cdef automatic initialization code>"ztypedef int %s;z@typedef int __dotdotdotint__, __dotdotdotfloat__, __dotdotdot__;z# 1 "r;   r   r[   )rw   r†   ÚsortedrŠ   r$   r    r   ÚCDEF_SOURCE_STRINGr&   ÚlockÚacquirer   Úparser   Úc_parserÚ
ParseErrorÚconvert_pycparser_errorÚrelease)r”   r'   rp   ÚctnÚ	typenamesrE   ÚcsourcelinesÚtypenameÚfullcsourceÚastÚes              r   Ú_parsezParser._parse3  s†  € Ü% gÓ.‰ˆ�ô
 ! Ó)ˆØˆ	Ü˜4×-Ñ-Ö.ˆDØ�‰˜zÕ*Ø˜A˜B�x�Ø× Ñ  Ô&Ø—‘˜DÕ!ð	 /ð
 	”V˜C“[Ñ ˆ	àˆØ×ÑÐHÔIÛ!ˆHØ×ÑÐ 1°HÑ <Õ=ð "à×Ñð .ô 	/ð 	×ÒÖ*<Ð>Ô?Ø×Ñ˜GÔ$Ø×Ñ˜BÔØ—i‘i Ó-ˆÜÐÜ�L‰LŒNð	Ü“-×%Ñ% kÓ2ˆCô ÐÜ—‘•à�F˜GÐ#Ð#øô ×!Ñ!×,Ñ,ò 	5Ø×(Ñ(¨¨G×4Ñ4ûð	5ûô ÐÜ—‘•ð  ús*   Ä#E ÅFÅ9FÆF ÆFÆF ÆF5c                 óô   — d }t        |«      }t        j                  t        ›d�|«      }|rKt	        |j                  d«      d«      }|j                  «       }d|cxk  rt        |«      k  rn |S ||dz
     }|S )Nz:(\d+):r   é
   )ÚstrÚrer)   rš   rU   r"   r=   r%   )r”   r¨   r'   rA   Úmsgr)   Úlinenumr¤   s           r   Ú_convert_pycparser_errorzParser._convert_pycparser_errorZ  sw   € ð ˆÜ�!‹fˆÜ—‘Ö);Ð=¸sÓCˆÙÜ˜%Ÿ+™+ a›.¨"Ó-ˆGØ"×-Ñ-Ó/ˆLØ�GÔ0œs <Ó0Ô0àˆð $ G¨A¡IÑ.�Øˆr   c                 ó¢   — | j                  ||«      }t        |«      }|r!d|j                  «       ›d|›�}t        |«      ‚d|›�}t        |«      ‚)Nzcannot parse "z"
zparse error
)r°   r¬   rd   r   )r”   r¨   r'   rA   r®   s        r   r    zParser.convert_pycparser_errorh  sU   € Ø×,Ñ,¨Q°Ó8ˆä�!‹fˆÚØ-1¯Z©Z­\¹3Ð?ˆCô ˜‹nÐð	 ñ (+Ð,ˆCÜ˜‹nÐr   Nc                 óô   — |r |dk7  rt        d«      ‚|rt        d«      ‚d}n|r||dz
  z  rt        d|›�«      ‚d}| j                  }	 |||dœ| _        | j                  |«       || _        y # || _        w xY w)NTzB'packed' should be False or True; use 'pack' to give another valuez$cannot give both 'pack' and 'packed'r   z#'pack' must be a power of two, not r	   )ÚoverrideÚpackedÚ	dllexport)Ú
ValueErrorr�   Ú_internal_parse)r”   r'   r³   r´   Úpackrµ   Úprev_optionss          r   r�   zParser.parser  sŸ   € áØ˜Š~Ü ð "@ó Að AáÜ Ð!GÓHÐHØ‰DÙØ�t˜a‘xÒ Ý Ùð"ó ð ð ˆDØ—}‘}ˆð	)Ø)1Ø'+Ø*3ñ5ˆDŒMð × Ñ  Ô)à(ˆD�Mø˜LˆD�Mús   Á
A. Á.	A7c           	      óú  — | j                  |«      \  }}}| j                  |«       t        |j                  «      }|D ]  }|j                  dk(  sŒ n J ‚d }	 d| _        |D �]›  }|}t        |t        j                  j                  «      r| j                  |«       Œ<t        |t        j                  j                  «      �rê|j                  st        d|«      ‚d}t        |j                  j                  t        j                  j                  «      rE|j                  j                  j                  d   j!                  d«      r| j#                  |«      }�n0t        |j                  t        j                  j$                  «      rÈt        |j                  j                  t        j                  j&                  «      r�t        |j                  j                  j                  t        j                  j                  «      rN|j                  j                  j                  j                  d   j!                  d«      r| j)                  |«      }n:| j+                  |j                  |j                  dd|j                  ›d	�¬
«      \  }}| j-                  d|j                  z   ||¬«       �ŒK|j.                  j0                  dk(  rdd l}	|	j5                  d«       �Œ{t        d|j.                  j0                  z  |«      ‚ y # t        $ r3}
t7        |
j8                  «      dk(  r|
j8                  |fz   |
_        ‚ d }
~
wt:        $ r5}
| j=                  |
|«      }|r|
j8                  d   d|z  z   f|
_        ‚ d }
~
ww xY w)NÚ__dotdotdot__r	   Ú__cffi_extern_python_stopz!typedef does not declare any nameéÿÿÿÿÚ__dotdotdotTz*(z *)0)rE   Úpartial_length_okÚtypedef_exampler—   ©ÚqualsÚPragmaa  #pragma in cdef() are entirely ignored. They should be removed for now, otherwise your code might behave differently in a future version of CFFI if #pragma support gets added. Note that '#pragma pack' needs to be replaced with the 'packed' keyword argument to cdef().zBunexpected <%s>: this construct is valid C but not valid in cdef()r   z
    *** Err: %s)r©   Ú_process_macrosÚiterÚextrE   Ú_inside_extern_pythonÚ
isinstancer   Úc_astÚDeclÚ_parse_declÚTypedefr   ÚtypeÚIdentifierTypeÚnamesr$   Ú_get_unknown_typeÚPtrDeclÚTypeDeclÚ_get_unknown_ptr_typeÚ_get_type_and_qualsÚ_declareÚ	__class__Ú__name__r?   r@   r%   Úargsr   r°   )r”   r'   r§   rp   ÚiteratorrF   Úcurrent_declrÂ   Úrealtyper?   r¨   r®   s               r   r·   zParser._internal_parseŠ  sÃ  € Ø#Ÿ{™{¨7Ó3ÑˆˆV�Wà×Ñ˜VÔ$ô ˜Ÿ™“=ˆÛˆDØ�y‰y˜OÓ+Ùð ð �1Øˆð/	Ø)DˆDÔ&Ü �Ø#�Ü˜d¤I§O¡O×$8Ñ$8Ô9Ø×$Ñ$ TÕ*Ü ¤i§o¡o×&=Ñ&=Õ>ØŸ9š9Ü'Ð(KØ(,ó.ð .à�EÜ" 4§9¡9§>¡>´9·?±?×3QÑ3QÔRØ ŸI™IŸN™N×0Ñ0°Ñ4×?Ñ?ÀÔNØ#'×#9Ñ#9¸$Ó#?šÜ$ T§Y¡Y´	·±×0GÑ0GÔHÜ$ T§Y¡Y§^¡^´Y·_±_×5MÑ5MÔNÜ$ T§Y¡Y§^¡^×%8Ñ%8Ü%.§_¡_×%CÑ%CôEàŸ)™)Ÿ.™.×-Ñ-×3Ñ3°BÑ7×BÑBÀ=ÔQØ#'×#=Ñ#=¸dÓ#C™à*.×*BÑ*BØ ŸI™I¨D¯I©IÉØ:>¿)»)Ð,Eð +Có +G™˜ %ð —M‘M *¨t¯y©yÑ"8¸(È%�MÖPØ—^‘^×,Ñ,°Ò8ã#Ø—M‘Mð?ö@ô $ð %@à$(§N¡N×$;Ñ$;ñ%<à=AóCð CñE !øôJ ò 	Ü�1—6‘6‹{˜aÒØŸ™ < /Ñ1�”ØûÜò 	Ø×/Ñ/°°7Ó;ˆCÙØŸ&™& ™)Ð&9¸CÑ&?Ñ?ÐA�”Øûð		ús%   ÁJ(L Ì	M:Ì.L9Ì9M:Í0M5Í5M:c                 ó€   — || j                   v r!| j                   |   |k(  ry t        d|›�«      ‚|| j                   |<   y )Nz#multiple declarations of constant: )r‘   r   )r”   ÚkeyÚvals      r   Ú_add_constantszParser._add_constantsÉ  sK   € Ø�$×%Ñ%Ñ%Ø×"Ñ" 3Ñ'¨3Ò.ØÝÙ;>Ð@óBð Bà#&ˆ×Ñ˜CÒ r   c                 ó@  — |j                  «       j                  d«      }|j                  d«      }|r|dd  }|j                  d«      r|dk7  r|j                  d«      sd|dd  z   }t        |d«      }|r| }| j	                  ||«       | j                  d|z   |«       y )	NÚulÚ-r   Ú0Ú0xÚ0or	   úmacro )ÚlowerÚrstripr$   rU   rß   rÕ   )r”   rE   Úint_strÚnegÚpyvalues        r   Ú_add_integer_constantzParser._add_integer_constantÑ  sŸ   € Ø—-‘-“/×(Ñ(¨Ó.ˆØ× Ñ  Ó%ˆÙØ˜a˜b�kˆGà×Ñ˜sÔ#¨°3ªØ×*Ñ*¨4Ô0Ø˜W Q R˜[Ñ(ˆGÜ�g˜q“/ˆÙØ�hˆGØ×Ñ˜D 'Ô*Ø�‰�h ‘o wÕ/r   c                 ó  — |j                  «       D ]n  \  }}|j                  «       }t        j                  |«      r| j	                  ||«       Œ>|dk(  r| j                  d|z   |«       ŒYt        d|›d|›d|›d|›�«      ‚ y )Nr_   ræ   z5only supports one of the following syntax:
  #define z+ ...     (literally dot-dot-dot)
  #define zM NUMBER  (with NUMBER an integer constant, decimal/hex/octal)
got:
  #define rZ   )Úitemsrd   Ú_r_int_literalr)   rì   rÕ   r   )r”   rp   rÝ   Úvalues       r   rÄ   zParser._process_macrosà  su   € Ø Ÿ,™,ž.‰JˆC�Ø—K‘K“MˆEÜ×#Ñ# EÔ*Ø×*Ñ*¨3°Õ6Ø˜%’Ø—‘˜h¨™n¨eÕ4åò šC¢¡eð-ó.ð .ñ )r   c                 óî   — | j                  ||«      }| j                  j                  d«      rd}n&| j                  dk(  rd}n| j                  dk(  rd}nd}| j	                  ||j
                  z   |«       y )Nrµ   zdllexport_python Ú__cffi_extern_python_startzextern_python Ú!__cffi_extern_python_plus_c_startzextern_python_plus_c z	function )Ú_get_type_pointerr�   ÚgetrÇ   rÕ   rE   )r”   ÚtprÂ   rF   Útags        r   Ú_declare_functionzParser._declare_functionñ  sn   € Ø×#Ñ# B¨Ó.ˆØ�=‰=×Ñ˜[Ô)Ø%‰CØ×'Ñ'Ð+GÒGØ"‰CØ×'Ñ'Ð+NÒNØ)‰CàˆCØ�‰�c˜DŸI™I‘o rÕ*r   c                 óz  — |j                   }t        |t        j                  j                  «      rP| j                  ||j                  ¬«      \  }}t        |t        j                  «      sJ ‚| j                  |||«       y t        |t        j                  j                  «      r| j                  d|«       n†t        |t        j                  j                  «      r| j                  d|«       nOt        |t        j                  j                  «      r| j                  d|«       n|j                  st        d|«      ‚|j                  �rq| j                  |d¬«      \  }}|j                  r| j                  |||«       y |j!                  «       r|t#        |d«      rpt#        |j$                  d	«      rZt&        j)                  |j$                  j*                  «      r1| j-                  |j                  |j$                  j*                  «       y |j!                  «       rØt        |j$                  t        j                  j.                  «      rª|j$                  j0                  d
k(  r‘t#        |j$                  j2                  d	«      rqt&        j)                  |j$                  j2                  j*                  «      r>| j-                  |j                  d
|j$                  j2                  j*                  z   «       y |t        j4                  u r-|j                  j7                  d«      r|j                  | _        y | j8                  dk7  rt        d«      ‚|t        j:                  z  r.|j<                  s"| j?                  d|j                  z   ||¬«       y tA        |«       | j?                  d|j                  z   ||¬«       y y )N)rE   ÚstructÚunionÚenumz'construct does not declare any variableT©r¿   Úinitrð   râ   Ú__cffi_extern_python_r¼   z<cannot declare constants or variables with 'extern "Python"'z	constant rÁ   z	variable )!rÍ   rÈ   r   rÉ   ÚFuncDeclrÔ   rE   r   ÚRawFunctionTyperø   ÚStructÚ_get_struct_union_enum_typeÚUnionÚEnumr   Úis_raw_functionÚis_integer_typeÚhasattrrþ   rï   r)   rð   rì   ÚUnaryOpÚopÚexprÚ	void_typer$   rÇ   ÚQ_CONSTÚis_array_typerÕ   rG   )r”   rF   Únoderö   rÂ   s        r   rË   zParser._parse_declý  s»  € Ø�y‰yˆÜ�dœIŸO™O×4Ñ4Ô5Ø×0Ñ0°¸D¿I¹IÐ0ÓF‰IˆB�Ü˜b¤%×"7Ñ"7Ô8Ð8Ð8Ø×"Ñ" 2 u¨dÕ3ä˜$¤	§¡× 6Ñ 6Ô7Ø×0Ñ0°¸4Õ@Ü˜D¤)§/¡/×"7Ñ"7Ô8Ø×0Ñ0°¸$Õ?Ü˜D¤)§/¡/×"6Ñ"6Ô7Ø×0Ñ0°¸Õ>Ø—Y’YÜÐ IØ $ó&ð &ð �y‹yØ ×4Ñ4°TØGKð 5ó M‘	��Eà×%Ò%Ø×*Ñ*¨2¨u°dÕ;Ø×(Ñ(Ô*Ü  fÔ-Ü §	¡	¨7Ô3Ü&×,Ñ,¨T¯Y©Y¯_©_Ô=Ø×.Ñ.¨t¯y©y¸$¿)¹)¿/¹/ÕJØ×(Ñ(Ô*Ü" 4§9¡9¬i¯o©o×.EÑ.EÔFØŸ	™	Ÿ™¨Ò+Ü §	¡	§¡°Ô8Ü&×,Ñ,¨T¯Y©Y¯^©^×-AÑ-AÔBØ×.Ñ.¨t¯y©yØ/2°T·Y±Y·^±^×5IÑ5IÑ/IõKàœEŸO™OÑ+Ø—i‘i×*Ñ*Ð+BÔCð 26·±�DÕ.à×1Ñ1Ð4OÒOÜ'ðAóBð Bð ¤§¡Ò-°r×7GÒ7GØŸ™ k°D·I±IÑ&=¸rÈ˜ÕOäGÈÔMØŸ™ k°D·I±IÑ&=¸rÈ˜ÕOðA r   c                 ó*   — | j                  |«      d   S r   )Úparse_type_and_quals)r”   Úcdecls     r   Ú
parse_typezParser.parse_type0  s   € Ø×(Ñ(¨Ó/°Ñ2Ð2r   c                 óN  — | j                  d|z  «      d d \  }}|rJ ‚|j                  d   j                  j                  j                  d   }t        |t        j                  j                  «      rt        d|j                  ›d�«      ‚| j                  |j                  «      S )Nzvoid __dummy(
%s
);é   r½   r	   zunknown identifier 'Ú')r©   rÆ   rÍ   rØ   ÚparamsrÈ   r   rÉ   ÚIDr   rE   rÔ   )r”   r  r§   rp   Úexprnodes        r   r  zParser.parse_type_and_quals3  sˆ   € Ø—k‘kÐ"9¸EÑ"AÓBÀ2ÀAÐF‰ˆˆVÙÐˆzØ—7‘7˜2‘;×#Ñ#×(Ñ(×/Ñ/°Ñ2ˆÜ�h¤	§¡× 2Ñ 2Ô3Ý¸¿»ÐHÓIÐIØ×'Ñ'¨¯©Ó6Ð6r   c                 ó2  — || j                   v rF| j                   |   \  }}||u r||k(  ry | j                  j                  d«      st        d|›d�«      ‚d|j	                  «       vsJ ‚||f| j                   |<   |r| j
                  j                  |«       y y )Nr³   zmultiple declarations of z5 (for interactive usage, try cdef(xx, override=True))r»   )rŠ   r�   rõ   r   Úsplitr‹   r|   )r”   rE   ÚobjÚincludedrÂ   ÚprevobjÚ	prevqualss          r   rÕ   zParser._declare;  s£   € Ø�4×%Ñ%Ñ%Ø!%×!3Ñ!3°DÑ!9ÑˆG�YØ˜#‰~ )¨uÒ"4ØØ—=‘=×$Ñ$ ZÔ0Ýâ6:ð=ó>ð >ð  d§j¡j£lÑ2Ð2Ð2Ø$'¨ <ˆ×Ñ˜4Ñ ÙØ×'Ñ'×+Ñ+¨CÕ0ð r   c                 óL  — d}t        |t        j                  j                  t        j                  j                  f«      rcd|j
                  v r|t        j                  z  }d|j
                  v r|t        j                  z  }d|j
                  v r|t        j                  z  }|S )Nr	   ÚconstÚvolatileÚrestrict)
rÈ   r   rÉ   rÒ   rÑ   rÂ   r   r  Ú
Q_VOLATILEÚ
Q_RESTRICT©r”   rÍ   rÂ   s      r   Ú_extract_qualszParser._extract_qualsI  s†   € ØˆÜ�dœYŸ_™_×5Ñ5Ü&Ÿ_™_×4Ñ4ð6ô 7à˜$Ÿ*™*Ñ$ØœŸ™Ñ&�Ø˜TŸZ™ZÑ'Øœ×)Ñ)Ñ)�Ø˜TŸZ™ZÑ'Øœ×)Ñ)Ñ)�Øˆr   c                 óp  — t        |t        j                  «      r|j                  «       S t        |t        j                  «      r]|j
                  j                  d«      rB|j
                  dd  j                  «       r%|j                  €|�t        j                  |||«      S t        j                  ||«      S )NÚ$r   )rÈ   r   r  Úas_function_pointerÚStructOrUnionOrEnumrE   r$   ÚisdigitÚ	forcenameÚNamedPointerTypeÚPointerType)r”   rÍ   rÂ   Údeclnames       r   rô   zParser._get_type_pointerU  s�   € Ü�dœE×1Ñ1Ô2Ø×+Ñ+Ó-Ð-Ü�tœU×6Ñ6Ô7Ø—	‘	×$Ñ$ SÔ)¨d¯i©i¸¸¨m×.CÑ.CÔ.EØ—‘Ð&¨8Ð+?Ü×)Ñ)¨$°¸%Ó@Ð@Ü× Ñ   uÓ-Ð-r   c                 ó¢	  — t        |t        j                  j                  «      r¼t        |j                  t        j                  j
                  «      rŽt        |j                  j                  «      dk(  rld|j                  j                  d   z   | j                  v rD| j                  d|j                  j                  d   z      \  }}|| j                  |«      z  }||fS t        |t        j                  j                  «      rw|j                  €d }n| j                  |j                  |¬«      }|�|dk(  rd|›d�}d|z   }| j                  |j                  ||¬	«      \  }}t        j                  ||«      |fS t        |t        j                  j                   «      rG| j                  |j                  «      \  }}	| j#                  ||	|¬
«      }| j                  |«      }||fS t        |t        j                  j                  «      �rõ| j                  |«      }|j                  }
t        |
t        j                  j
                  «      �rt%        |
j                  «      }|ddgk7  r�i }|r)|d   }|dv r|j'                  |d«      dz   ||<   |d= nn|rŒ)g }dD ]3  }t)        |j'                  |d«      «      D ]  }|j+                  |«       Œ Œ5 |sdg}|dgk(  r
d|v sd|v rg }||z   }dj-                  |«      }|dk(  rt        j.                  |fS |dk(  r"t1        d|j2                  j4                  z  «      ‚t7        | |«      \  }}|||z  fS t        |
t        j                  j8                  «      r| j;                  d|
|«      }||fS t        |
t        j                  j<                  «      r| j;                  d|
|«      }||fS t        |
t        j                  j>                  «      r| j;                  d|
|«      }||fS t        |t        j                  j@                  «      r| jC                  ||«      dfS t        |t        j                  j8                  «      r| j;                  d||d¬«      dfS t        |t        j                  j<                  «      r| j;                  d||d¬«      dfS t1        d|j2                  j4                  z  «      ‚)Nr   r—   r	   rý   r_   z_cffi_array_len(r   r   )r¿   rÀ   )r0  ÚsignedÚchar)ÚshortÚlongr2  Úunsigned)r6  r4  r5  rU   r4  r5  rZ   Úvoidr»   z:%d: bad usage of "..."rú   rû   rü   T)Únestedz(:%d: bad or unsupported type declaration)"rÈ   r   rÉ   rÒ   rÍ   rÎ   r%   rÏ   rŠ   r'  Ú	ArrayDeclÚdimÚ_parse_constantrÔ   r   Ú	ArrayTyperÑ   rô   rj   rõ   Úranger    r&   r  r   ÚcoordrA   r   r  r  r  r  r   Ú_parse_function_type)r”   ÚtypenoderE   r¿   rÀ   rö   rÂ   ÚlengthÚitemtypeÚ	itemqualsrÍ   rÏ   ÚprefixesÚnewnamesÚprefixr-   ÚidentÚtp0Úquals0s                      r   rÔ   zParser._get_type_and_quals^  s‘  € ô �x¤§¡×!9Ñ!9Ô:Ü�x—}‘}¤i§o¡o×&DÑ&DÔEÜ�—‘×#Ñ#Ó$¨Ò)Ø˜(Ÿ-™-×-Ñ-¨aÑ0Ñ0°T×5GÑ5GÑGØ×*Ñ*¨:¸¿¹×8KÑ8KÈAÑ8NÑ+NÑO‰IˆB�Ø�T×(Ñ(¨Ó2Ñ2ˆEØ�u�9Ðä�h¤	§¡× 9Ñ 9Ô:à�|‰|Ð#Ø‘à×-Ñ-Ø—L‘LÐ4Eð .ó G�ð Ð*Ø˜U“?Ú6EÐG�FØ"%¨Ñ"7�à×0Ñ0°·±Ø2CØ0?ð 1ó A‰IˆB�ô —?‘? 2 vÓ.°Ð5Ð5ä�h¤	§¡× 7Ñ 7Ô8à"&×":Ñ":¸8¿=¹=Ó"IÑˆH�iØ×'Ñ'¨°)ÀdÐ'ÓKˆBØ×'Ñ'¨Ó1ˆEØ�u�9Ðä�h¤	§¡× 8Ñ 8Õ9Ø×'Ñ'¨Ó1ˆEØ—=‘=ˆDÜ˜$¤	§¡× >Ñ >Õ?ô ˜TŸZ™ZÓ(�Ø˜X vÐ.Ò.Ø!�HÙØ$ Q™x˜ØÐ#JÑJØ-5¯\©\¸$ÀÓ-BÀQÑ-F˜H T™NØ % a¡à!ò  ð  "�HÛ"?˜Ü!& x§|¡|°F¸AÓ'>Ö!?˜AØ$ŸO™O¨FÕ3ñ "@ð #@ñ !Ø!& ˜Ø  Ò'Ø" hÑ.°&¸HÑ2DØ$&˜EØ$ uÑ,�EØŸ™ ›�Ø˜F’?Ü Ÿ?™?¨EÐ1Ð1Ø˜OÒ+Ü"Ð#<Ø$ŸN™N×/Ñ/ñ$0ó 1ð 1ä1°$¸Ó>‘��VØ˜U V™^Ð,Ð,ä˜$¤	§¡× 6Ñ 6Ô7à×5Ñ5°hÀÀdÓK�Ø˜5�yÐ ä˜$¤	§¡× 5Ñ 5Ô6à×5Ñ5°g¸tÀTÓJ�Ø˜5�yÐ ä˜$¤	§¡× 4Ñ 4Ô5à×5Ñ5°f¸dÀDÓI�Ø˜5�yÐ ä�h¤	§¡× 8Ñ 8Ô9à×,Ñ,¨X°tÓ<¸aÐ?Ð?ô �h¤	§¡× 6Ñ 6Ô7Ø×3Ñ3°H¸hÈØ;?ð 4ó AØBCðDð Dä�h¤	§¡× 5Ñ 5Ô6Ø×3Ñ3°G¸XÀtØ;?ð 4ó AØBCðDð Dô ÐAØ—‘×#Ñ#ñ$ó %ð 	%r   c                 óò  — t        t        |j                  dg «      «      }t        |«      D ]4  \  }}t	        |d«      rŒt        d|xs d|dz   t        |dd«      fz  «      ‚ t        |«      dkD  xr— t        |d	   j                  t        j                  j                  «      xrd t        |d	   j                  j                  t        j                  j                  «      xr' |d	   j                  j                  j                  d
gk(  }|r$|j                  «        |st        d|xs dz  «      ‚|D �cg c]*  } | j                  | j!                  |j                  «      Ž ‘Œ, }}|s|t"        j$                  gk(  rg }| j!                  |j                  «      \  }	}
d }t	        |j                  d«      r |j                  j&                  dd  g d¢k(  rd}t#        j(                  t+        |«      |	||«      S c c}w )Nr  rÍ   zt%s arg %d: unknown type '%s' (if you meant to use the old C syntax of giving untyped arguments, it is not supported)zin expressionr   rE   Ú?r	   r½   r»   z=%s: a function with only '(...)' as argument is not correct CrÂ   éýÿÿÿ)r"  r"  r!  Ú	__stdcall)rj   ÚgetattrrØ   rl   r  r   r%   rÈ   rÍ   r   rÉ   rÒ   rÎ   rÏ   ÚpopÚ_as_func_argrÔ   r   r  rÂ   r  Útuple)r”   r@  Úfuncnamer  r-   ÚargÚellipsisÚargdeclnoderØ   ÚresultrÂ   Úabis               r   r?  zParser._parse_function_typeÇ  sæ  € Ü”g˜hŸm™m¨X°rÓ:Ó;ˆÜ Ö'‰FˆAˆsÜ˜3 Õ'Üð !?ð  Ò2 ?°A¸±EÜ˜s F¨CÓ0ð2ñ!2ó 3ð 3ð (ô �‹K˜!‰Oò <Ü�v˜b‘z—‘¬	¯©×(@Ñ(@ÓAò<ä�v˜b‘z—‘×+Ñ+Ü —‘×5Ñ5ó7ò<ð �2‰J�O‰O× Ñ ×&Ñ&¨?Ð*;Ñ;ð 	ñ Ø�J‰JŒLÙÜð(Ø+3Ò+F°ñHóIð Iñ $*ó+Ù#)�Kð "�×!Ñ! 4×#;Ñ#;¸K×<LÑ<LÓ#MÒNØ#)ð 	ð +á˜D¤U§_¡_Ð$5Ò5ØˆDØ×0Ñ0°·±Ó?‰ˆ�ð ˆÜ�8—=‘= 'Ô*Ø�}‰}×"Ñ" 2 3Ð'Ò+LÒLØ!�Ü×$Ñ$¤U¨4£[°&¸(ÀCÓHÐHùò+s   Ä4/G4c                 óÎ   — t        |t        j                  «      r t        j                  |j                  |«      S t        |t        j
                  «      r|j                  «       S |S r   )rÈ   r   r<  r/  Úitemr  r*  r&  s      r   rP  zParser._as_func_argê  sK   € Ü�dœEŸO™OÔ,Ü×$Ñ$ T§Y¡Y°Ó6Ð6Ü˜œe×3Ñ3Ô4Ø×+Ñ+Ó-Ð-àˆKr   c                 ó@  — 	 | j                   |   S # t        $ r Y nw xY w|}|j                  }|€/|�d|z  }n$| xj                  dz  c_        d| j                  z  }d }n(|}|›d|›�}| j                  j                  |d«      \  }}	|€‘|dk(  rt        j                  |d d d «      }n^|dk(  rt        j                  |d d d «      }n@|dk(  r-|d	k(  rt        d
«      ‚| j                  ||j                  «      }nt        d|›�«      ‚|�2| j                  |«       n|dk(  r|j                  �t        d|z  «      ‚|j                  s|j!                  |«       |j                  r-d|j                  v r| j                  d|j                  z  |«       || j                   |<   |dk(  r|S |j"                  €|S |j$                  �t        d|z  «      ‚g }
g }g }g }|j"                  D �]e  }t'        |j(                  t*        j,                  j.                  «      r;dj1                  |j(                  j2                  «      d	k(  r| j5                  ||«       Œm|j6                  €d}n| j9                  |j6                  «      }d| _        | j=                  |j(                  d¬«      \  }}| j:                  r| j5                  ||«       t'        |t        j                  «      r|j>                  r| j5                  ||«       |
jA                  |j                  xs d«       |jA                  |«       |jA                  |«       |jA                  |«       �Œh tC        |
«      |_        tC        |«      |_"        tC        |«      |_#        tC        |«      |_$        |dgtK        |«      z  k7  r4t'        |t        j                  «      r|j>                  rt        |›d�«      ‚| jL                  j                  d«      |_'        |jP                  r"d|_(        | jR                  jA                  |«       |S )Nz$%sr   z$%drZ   )NNrú   rû   rü   r»   z!Enums cannot be declared with ...zkind = z^enum %s: the '{}' declaration should appear on the first time the enum is mentioned, not laterr)  zanonymous %sz"duplicate declaration of struct %sr   r½   FTrý   z!: using both bitfields and '...;'r´   r	   )*r�   ÚKeyErrorrE   rŒ   rŠ   rõ   r   Ú
StructTypeÚ	UnionTyper   Ú_build_enum_typeÚvaluesrT   rÕ   r7   r-  Úforce_the_nameÚdeclsÚfldnamesrÈ   rÍ   r   rÉ   rÎ   r&   rÏ   Ú_make_partialÚbitsizer;  Ú_partial_lengthrÔ   Úpartialr    rQ  ÚfldtypesÚ
fldbitsizeÚfldqualsr%   r�   r´   Ú	completedr’   )r”   ÚkindrÍ   rE   r8  Ú
force_nameÚexplicit_namerö   rÝ   Ú_rb  rg  rh  ri  rF   rd  Úfquals                    r   r  z"Parser._get_struct_union_enum_typeò  sÄ  € ð	Ø×(Ñ(¨Ñ.Ð.øÜò 	Ùð	úð ˆ
Ø�y‰yˆð ˆ<ð Ð%Ø %¨
Ñ 2‘à×'Ò'¨1Ñ,Õ'Ø %¨×(?Ñ(?Ñ ?�Ø‰Bà ˆMÚ!¡4Ð(ˆCØ×&Ñ&×*Ñ*¨3°Ó=‰EˆB�àˆ:Ø�xÒÜ×%Ñ% m°T¸4ÀÓF‘Ø˜’Ü—_‘_ ]°D¸$ÀÓE‘Ø˜’Ø  OÒ3Ü#Ð$GÓHÐHØ×*Ñ*¨=¸$¿+¹+ÓF‘å$±DÐ%:Ó;Ð;ØÐØ—‘˜c 2Õ&à�vŠ~ $§+¡+Ð"9Ü)ð<Ø>KñLóMð Mð �|Š|Ø×Ñ˜jÔ)Ø�<Š<˜C 2§7¡7™NØ�M‰M˜.¨2¯<©<Ñ7¸Ô<à&(ˆ×Ñ˜dÑ#ð �6Š>ØˆIð
 �:‰:ÐØˆIà�;‰;Ð"ÜÐ@À4ÑGÓHÐHØˆØˆØˆ
ØˆØ—J•JˆDÜ˜4Ÿ9™9¤i§o¡o×&DÑ&DÔEØ—G‘G˜DŸI™IŸO™OÓ,°Ò?ð ×"Ñ" 2 vÔ.ØØ�|‰|Ð#Ø‘à×.Ñ.¨t¯|©|Ó<�Ø#(ˆDÔ Ø×2Ñ2°4·9±9ØEIð 3ó K‰KˆD�%à×#Ò#Ø×"Ñ" 2 vÔ.Ü˜$¤× 0Ñ 0Ô1°d·l²lØ×"Ñ" 2 vÔ.Ø�O‰O˜DŸI™IšO¨Ô,Ø�O‰O˜DÔ!Ø×Ñ˜gÔ&Ø�O‰O˜EÖ"ð- ô. ˜H“oˆŒÜ˜H“oˆŒÜ˜jÓ)ˆŒÜ˜H“oˆŒØ˜"˜¤ J£Ñ/Ò/Ü˜"œe×.Ñ.Ô/°B·J²JÜ)Ú-/ð+2ó 3ð 3à—M‘M×%Ñ% hÓ/ˆŒ	Ø�<Š<ØˆBŒLØ×Ñ×#Ñ# BÔ'Øˆ	s   ‚ ‘	œc                 ó¢   — t        |t        j                  «      st        |›d�«      ‚|j	                  «       s|st        |›d�«      ‚d|_        y )Nz cannot be partialz is partial but has no C nameT)rÈ   r   ÚStructOrUnionr   Ú
has_c_namer7   rf  )r”   rö   r8  s      r   rc  zParser._make_partialh  s@   € Ü˜"œe×1Ñ1Ô2Ü²bÐ:Ó;Ð;Ø�}‰}Œ¡vÜ%Ê"Ð&NÓOÐOØˆ�
r   c                 óì  — t        |t        j                  j                  «      r¨|j                  }d|d   cxk  rdk  r>n n;|j                  d«      }	 |j                  d«      rt        |d«      S t        |d«      S |d   dk(  r:|d   dk(  r2t        |«      dk(  st        |«      dk(  r|d   dk(  rt        |d   «      S t        d|›�«      ‚t        |t        j                  j                  «      r*|j                  dk(  r| j                  |j                   «      S t        |t        j                  j                  «      r+|j                  dk(  r| j                  |j                   «       S t        |t        j                  j"                  «      r1|j$                  | j&                  v r| j&                  |j$                     S t        |t        j                  j"                  «      r;|j$                  dk(  r,|rd| _        yt+        d|j,                  j.                  z  «      ‚t        |t        j                  j0                  «      �r| j                  |j2                  «      }| j                  |j4                  «      }|j                  dk(  r||z   S |j                  dk(  r||z
  S |j                  dk(  r||z  S |j                  dk(  r| j7                  ||«      S |j                  dk(  r|| j7                  ||«      |z  z
  S |j                  dk(  r||z  S |j                  dk(  r||z	  S |j                  dk(  r||z  S |j                  dk(  r||z  S |j                  d k(  r||z  S t+        d!|j,                  j.                  z  «      ‚# t        $ rY t        |«      dkD  rH|j                  «       dd d	k(  rt        |d
«      cY S |j                  «       dd dk(  rt        |d«      cY S Y nw xY wt        d|›�«      ‚)"Nrã   r	   Ú9ÚuUlLr˜   r«   r   r  rä   é   Ú0bzinvalid constant r  r½   r
   é   Ú\éþÿÿÿÚ+râ   Ú__dotdotdotarray__Tr_   zT:%d: unsupported '[...]' here, cannot derive the actual array length in this contextr   Ú/Ú%z<<z>>Ú&Ú|Ú^z?:%d: unsupported expression: expected a simple numeric constant)rÈ   r   rÉ   ÚConstantrð   rè   r$   rU   r¶   r%   rç   r   Úordr	  r
  r;  r  r  rE   r‘   re  r   r>  rA   ÚBinaryOpÚleftÚrightÚ_c_div)r”   r  r¿   rV   r…  r†  s         r   r;  zParser._parse_constanto  s~  € ô �h¤	§¡× 8Ñ 8Ô9Ø—‘ˆAØ�a˜‘dÔ!˜cÕ!Ø—H‘H˜VÓ$�ð
-Ø—|‘| CÔ(Ü" 1 a›yÐ(ä" 1 b›zÐ)ð �1‘˜’  2¡¨#¢Ü˜“F˜a’K¤C¨£F¨a¢K°A°a±D¸D²LÜ˜1˜R™5“zÐ!å¹Ð <Ó=Ð=ä�x¤§¡×!8Ñ!8Ô9Ø—‘˜sÒ"Ø×'Ñ'¨¯©Ó6Ð6ä�x¤§¡×!8Ñ!8Ô9Ø—‘˜sÒ"Ø×(Ñ(¨¯©Ó7Ð7Ð7ä�x¤§¡×!3Ñ!3Ô4Ø—‘ ×!4Ñ!4Ñ4Ø×&Ñ& x§}¡}Ñ5Ð5ä�x¤§¡×!3Ñ!3Ô4Ø—M‘MÐ%9Ò9Ù Ø'+�Ô$ØÜð Eà%Ÿ^™^×0Ñ0ñ1ó 2ð 2ô �h¤	§¡× 8Ñ 8Õ9Ø×'Ñ'¨¯©Ó6ˆDØ×(Ñ(¨¯©Ó8ˆEØ�{‰{˜cÒ!Ø˜e‘|Ð#Ø—‘ Ò#Ø˜e‘|Ð#Ø—‘ Ò#Ø˜e‘|Ð#Ø—‘ Ò#Ø—{‘{ 4¨Ó/Ð/Ø—‘ Ò#Ø˜dŸk™k¨$°Ó6¸Ñ>Ñ>Ð>Ø—‘ Ò$Ø˜u‘}Ð$Ø—‘ Ò$Ø˜u‘}Ð$Ø—‘ Ò#Ø˜e‘|Ð#Ø—‘ Ò#Ø˜e‘|Ð#Ø—‘ Ò#Ø˜e‘|Ð#äð 1Ø3;·>±>×3FÑ3FñGó Hð 	Høôu "ò -Ü˜1“v ’zØŸ7™7›9 Q q˜>¨TÒ1Ü#& q¨"£:Ò-ØŸW™W›Y q¨˜^¨tÒ3Ü#& q¨!£9Ò,ùð-úõ  ¹Ð <Ó=Ð=s   ÁN Á1N Î9O%Î>"O%Ï$O%c                 ó@   — ||z  }|dk  |dk  z  r||z  dk7  r|dz  }|S )Nr	   r   r   )r”   ÚaÚbrV  s       r   r‡  zParser._c_div¸  s3   € Ø�a‘ˆØ�‰U�q˜1‘uÒ A¨¡E¨a¢<Ø�a‰KˆFØˆr   c                 ó  — |�åd}g }g }d}|j                   D ]˜  }t        j                  |j                  «      rd}Œ%|j                  �| j                  |j                  «      }|j                  |j                  «       |j                  |«       | j                  |j                  |«       |dz  }Œš t        |«      }t        |«      }t        j                  |||«      }||_        |S t        j                  |dd«      }|S )NFr	   Tr   r   )ÚenumeratorsÚ_r_enum_dotdotdotr)   rE   rð   r;  r    rß   rQ  r   ÚEnumTyperf  )	r”   rm  ra  rf  rŒ  Ú
enumvaluesÚnextenumvaluerü   rö   s	            r   r^  zParser._build_enum_type¾  sñ   € ØÐØˆGØˆKØˆJØˆMØ×)Ô)�Ü$×*Ñ*¨4¯9©9Ô5Ø"�GØØ—:‘:Ð)Ø$(×$8Ñ$8¸¿¹Ó$D�MØ×"Ñ" 4§9¡9Ô-Ø×!Ñ! -Ô0Ø×#Ñ# D§I¡I¨}Ô=Ø Ñ"‘ð *ô   Ó,ˆKÜ˜zÓ*ˆJÜ—‘ ¨{¸JÓGˆBØ ˆBŒJð ˆ	ô —‘ ¨r°2Ó6ˆBØˆ	r   c                 ó8  — |j                   j                  «       D ]I  \  }\  }}|j                  d«      rŒ|j                  dd«      d   }|dv sŒ5| j	                  ||d|¬«       ŒK |j
                  j                  «       D ]  \  }}| j                  ||«       Œ y )Nzanonymous $enum_$rZ   r   r	   )rú   rû   rü   Ú	anonymousrz   T)r  rÂ   )rŠ   rî   r$   r  rÕ   r‘   rß   )r”   ÚotherrE   rö   rÂ   rk  ÚkÚvs           r   ÚincludezParser.includeÖ  s•   € Ø!&×!4Ñ!4×!:Ñ!:Ö!<ÑˆD‘+�2�uØ�‰Ð2Ô3ØØ—:‘:˜c 1Ó% aÑ(ˆDØÐJÒJØ—‘˜d B°¸U�ÕCð "=ð ×(Ñ(×.Ñ.Ö0‰DˆAˆqØ×Ñ  1Õ%ñ 1r   c                 óä  — |j                   j                   j                  }|dgk(  rt        j                  |j                  «      S |dgk(  r?| j
                  €d|j                  z  | _        t        j                  |j                  «      S |dgk(  r?| j
                  €d|j                  z  | _        t        j                  |j                  «      S t        d|j                  j                  z  «      ‚)Nr»   Ú__dotdotdotint__z'typedef int... %s'Ú__dotdotdotfloat__z'typedef float... %s'ú*:%d: unsupported usage of "..." in typedef)rÍ   rÏ   r   Úunknown_typerE   r“   ÚUnknownIntegerTypeÚUnknownFloatTyper   r>  rA   )r”   rF   r£   s      r   rÐ   zParser._get_unknown_typeà  sÑ   € Ø—I‘I—N‘N×(Ñ(ˆ	Ø˜Ð)Ò)Ü×%Ñ% d§i¡iÓ0Ð0àÐ+Ð,Ò,Ø×%Ñ%Ð-Ø)>ÀÇÁÑ)J�Ô&Ü×+Ñ+¨D¯I©IÓ6Ð6àÐ-Ð.Ò.à×%Ñ%Ð-Ø)@À4Ç9Á9Ñ)L�Ô&Ü×)Ñ)¨$¯)©)Ó4Ð4äÐCØŸ™Ÿ™ñ)ó *ð 	*r   c                 óà   — |j                   j                   j                   j                  dgk(  rt        j                  |j                  «      S t        d|j                  j                  z  «      ‚)Nr»   rš  )rÍ   rÏ   r   Úunknown_ptr_typerE   r   r>  rA   )r”   rF   s     r   rÓ   zParser._get_unknown_ptr_typeó  sV   € Ø�9‰9�>‰>×Ñ×$Ñ$¨Ð(9Ò9Ü×)Ñ)¨$¯)©)Ó4Ð4ÜÐCØŸ™Ÿ™ñ)ó *ð 	*r   )FFNF)Fr	   r   )NFN)NF)F)r×   Ú
__module__Ú__qualname__r•   r©   r°   r    r�   r·   rß   rì   rÄ   rø   rË   r  r  rÕ   r'  rô   rÔ   r?  rP  r  rc  r;  r‡  r^  r–  rÐ   rÓ   r   r   r   rˆ   rˆ   '  sª   „ ò&ò%$òNòð AEØ#ó)ò0=ò~'ò0ò.ò"
+ò1Pòf3ò7ó1ò
ó.ð JOØ,0óg%óR!IòFótòlóGHòRòò0&ò*ó&*r   rˆ   )4r   r   Úcommontypesr   r   Úerrorr   r   r   r   ÚImportErrorr�   r­   ÚsysÚversion_infoÚthreadÚ_threadÚallocate_lockr›   r   rš   ÚcompileÚDOTALLÚ	MULTILINEr`   ra   rN   rk   r�  ri   r}   r   Ú
IGNORECASErï   rg   rf   rh   r5   r   rn   ro   r   r/   r9   rB   rG   rP   rW   rw   r†   Úobjectrˆ   r   r   r   Ú<module>r¯     s  ðÝ ß :ß &ðÝ)÷ Ó ðØ
×Ñ˜$ÒÜ ãØ ˆ7× Ñ Ó"€Dòð ,Ð ØˆR�Z‰ZÐ7ØŸ	™	 B§L¡LÑ0ó2€
àˆR�Z‰Zð 2àŸ	™	 B§L¡LÑ0ó2€	ð �B—J‘JÐAÀ2Ç<Á<ÓPÐ Ø�"—*‘*Ð=Ó>€Ø�B—J‘JÐ3Ó4Ð Ø�2—:‘:Ð1Ó2Ð Øˆ2�:‰:�iÓ €Ø€Ø�—‘Ð4°b·m±mÓD€Øˆb�j‰jÐ2Ó3€Øˆb�j‰jÐ6Ó7€Øˆ2�:‰:�nÓ%€Ø�2—:‘:ð Oó PÐ à �b—j‘jØ.ó0Ð à�2—:‘:ð (ó )Ð à�R—Z‘ZÐ <Ó=Ð òò(òT0òd
ò;ò$ò3ò@òD%ôPP*ˆVõ P*øðC	 ò Þðûð ò ØƒDðús"   ˜G «)G& Ç	G#Ç"G#Ç&G1Ç0G1