§
    cÒ³g%U  ã                   ó
  — d dl Z d dlZddlmZ ddlmZmZmZ dZdZ	dZ
d„ Z G d„ d	e¦  «        Z G d
„ de¦  «        Z G d„ de¦  «        Z e¦   «         Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z ee¦  «        Zd„ Z ee¦  «        Z G d„ d e¦  «        Z G d!„ d"e¦  «        Z e ed#¦  «        d¦  «        Z G d$„ d%e¦  «        Z G d&„ d'e¦  «        Z  G d(„ d)e ¦  «        Z! G d*„ d+e ¦  «        Z" G d,„ d-e¦  «        Z#d4d.„Z$d4d/„Z% e¦   «         Z& ej'        ¦   «         Z(d0„ Z)d1„ Z*d2„ Z+d3„ Z,dS )5é    Né   )Úallocate_lock)Ú	CDefErrorÚVerificationErrorÚVerificationMissingé   é   c                 óÌ   — | t           z  rd|                     ¦   «         z   }| t          z  rd|                     ¦   «         z   }| t          z  rd|                     ¦   «         z   }|S )Nz const z
 volatile z __restrict )ÚQ_CONSTÚlstripÚ
Q_VOLATILEÚ
Q_RESTRICT)ÚqualsÚreplace_withs     úH/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/cffi/model.pyÚqualifyr      sr   € Ø�w�ð 9Ø  <×#6Ò#6Ñ#8Ô#8Ñ8ˆØ�zÑð <Ø# l×&9Ò&9Ñ&;Ô&;Ñ;ˆØ�zÑð >ð &¨×(;Ò(;Ñ(=Ô(=Ñ=ˆØÐó    c                   óD   — e Zd ZdZdZdd„Zd„ Zd„ Zd„ Zdd	„Z	d
„ Z
d„ ZdS )ÚBaseTypeByIdentityFÚ úa C filer   c                 óv  — | j         }|                     d¦  «        dk    sJ ‚|                     ¦   «         }|r.|                     d¦  «        r
d|v rd|z  }n|d         dvrd|z   }t	          ||¦  «        }|                     d|¦  «        }d	|v r(t          d
|                      ¦   «         ›d|›d�¦  «        ‚|S )Nú&r   Ú*z&[z(%s)r   z[(ú ú$zcannot generate 'z' in z: unknown type name)Úc_name_with_markerÚcountÚstripÚ
startswithr   Úreplacer   Ú_get_c_name)Úselfr   Úcontextr   Úresults        r   Ú
get_c_namezBaseTypeByIdentity.get_c_name   sê   € ØÔ(ˆØ�|Š|˜CÑ Ô  AÒ%Ð%Ð%Ð%à#×)Ò)Ñ+Ô+ˆØð 	2Ø×&Ò& sÑ+Ô+ð 2°¸°°Ø%¨Ñ4��Ø! !”_¨Ð,Ð,Ø" \Ñ1�Ý˜u lÑ3Ô3ˆØ—’  \Ñ2Ô2ˆØ�&ˆ=ˆ=Ý#Ð#à×#Ò#Ñ%Ô%Ð%Ð% w w wð0ñ1ô 1ð 1ð ˆr   c                 ó8   — | j                              dd¦  «        S )Nr   r   )r   r!   ©r#   s    r   r"   zBaseTypeByIdentity._get_c_name/   s   € ØÔ&×.Ò.¨s°BÑ7Ô7Ð7r   c                 ó.   — d|                       ¦   «         vS )Nr   ©r"   r(   s    r   Ú
has_c_namezBaseTypeByIdentity.has_c_name2   s   € Ø˜$×*Ò*Ñ,Ô,Ð,Ð,r   c                 ó   — dS ©NF© r(   s    r   Úis_integer_typez"BaseTypeByIdentity.is_integer_type5   ó   € Øˆur   c                 ó²   — 	 |j         |          }nG# t          $ r: |                      ||¦  «        }|j                              | |¦  «        }||u sJ ‚Y nw xY w|S ©N)Ú_cached_btypesÚKeyErrorÚbuild_backend_typeÚ
setdefault)r#   ÚffiÚ
finishlistÚ	can_delayÚBTypeÚBType2s         r   Úget_cached_btypez#BaseTypeByIdentity.get_cached_btype8   sv   € ð	#ØÔ& tÔ,ˆEˆEøÝð 	#ð 	#ð 	#Ø×+Ò+¨C°Ñ<Ô<ˆEØÔ'×2Ò2°4¸Ñ?Ô?ˆFØ˜U�?�?�?�?�?�?ð	#øøøð ˆs   ‚ �AAÁAc                 ó2   — d|                       ¦   «         ›d�S )Nú<ú>r*   r(   s    r   Ú__repr__zBaseTypeByIdentity.__repr__A   s   € € Ø×)Ò)Ñ+Ô+Ð+Ð+Ð-Ð-r   c                 ó*   ‡ — ˆ fd„‰ j         D ¦   «         S )Nc                 ó4   •— g | ]}|t          ‰|¦  «        f‘ŒS r.   )Úgetattr)Ú.0Únamer#   s     €r   ú
<listcomp>z1BaseTypeByIdentity._get_items.<locals>.<listcomp>E   s(   ø€ ÐEÐEÐE°�•w˜t TÑ*Ô*Ð+ÐEÐEÐEr   )Ú_attrs_r(   s   `r   Ú
_get_itemszBaseTypeByIdentity._get_itemsD   s   ø€ ØEÐEÐEÐE¸¼ÐEÑEÔEÐEr   N)r   r   r   ©F)Ú__name__Ú
__module__Ú__qualname__Úis_array_typeÚis_raw_functionr&   r"   r+   r/   r<   r@   rH   r.   r   r   r   r      s–   € € € € € Ø€MØ€Oðð ð ð ð$8ð 8ð 8ð-ð -ð -ðð ð ðð ð ð ð.ð .ð .ðFð Fð Fð Fð Fr   r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚBaseTypec                 óv   — | j         |j         k    o)|                      ¦   «         |                     ¦   «         k    S r2   )Ú	__class__rH   ©r#   Úothers     r   Ú__eq__zBaseType.__eq__J   s6   € Ø” %¤/Ò1ð 8Ø—’Ñ!Ô! U×%5Ò%5Ñ%7Ô%7Ò7ð	9r   c                 ó   — | |k     S r2   r.   rS   s     r   Ú__ne__zBaseType.__ne__N   s   € Ø˜5’=Ð Ð r   c                 ól   — t          | j        t          |                      ¦   «         ¦  «        f¦  «        S r2   )ÚhashrR   ÚtuplerH   r(   s    r   Ú__hash__zBaseType.__hash__Q   s)   € Ý�T”^¥U¨4¯?ª?Ñ+<Ô+<Ñ%=Ô%=Ð>Ñ?Ô?Ð?r   N)rJ   rK   rL   rU   rW   r[   r.   r   r   rP   rP   H   sF   € € € € € ð9ð 9ð 9ð!ð !ð !ð@ð @ð @ð @ð @r   rP   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚVoidTyper.   c                 ó   — d| _         d S )Nzvoid&)r   r(   s    r   Ú__init__zVoidType.__init__X   s   € Ø")ˆÔÐÐr   c                 ó$   — t          | |d¦  «        S )NÚnew_void_type©Úglobal_cache©r#   r7   r8   s      r   r5   zVoidType.build_backend_type[   s   € Ý˜D # Ñ7Ô7Ð7r   N©rJ   rK   rL   rG   r_   r5   r.   r   r   r]   r]   U   s7   € € € € € Ø€Gð*ð *ð *ð8ð 8ð 8ð 8ð 8r   r]   c                   ó   — e Zd Zd„ ZdS )ÚBasePrimitiveTypec                 ó   — dS r-   r.   r(   s    r   Úis_complex_typez!BasePrimitiveType.is_complex_typeb   r0   r   N)rJ   rK   rL   ri   r.   r   r   rg   rg   a   s#   € € € € € ðð ð ð ð r   rg   c                   ót  — e Zd ZdZi dd“dd“dd“dd“dd“d	d“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“i dd“dd“dd“dd“dd“dd“dd“dd“dd“d d“d!d“d"d“d#d“d$d“d%d“d&d“d'd“¥i d(d“d)d“d*d“d+d“d,d“d-d“d.d“d/d“d0d“d1d“d2d“d3d“d4d“d5d“d6d“d7d“d8d“¥Zd9„ Zd:„ Zd;„ Zd<„ Zd=„ Z	d>„ Z
d?S )@ÚPrimitiveType©rE   ÚcharÚcÚshortÚiÚintÚlongz	long longzsigned charzunsigned charzunsigned shortúunsigned intúunsigned longzunsigned long longÚfloatÚfÚdoublezlong doubleÚ_cffi_float_complex_tÚjÚ_cffi_double_complex_tÚ_BoolÚwchar_tÚchar16_tÚchar32_tÚint8_tÚuint8_tÚint16_tÚuint16_tÚint32_tÚuint32_tÚint64_tÚuint64_tÚint_least8_tÚuint_least8_tÚint_least16_tÚuint_least16_tÚint_least32_tÚuint_least32_tÚint_least64_tÚuint_least64_tÚint_fast8_tÚuint_fast8_tÚint_fast16_tÚuint_fast16_tÚint_fast32_tÚuint_fast32_tÚint_fast64_tÚuint_fast64_tÚintptr_tÚ	uintptr_tÚintmax_tÚ	uintmax_tÚ	ptrdiff_tÚsize_tÚssize_tc                 ó>   — || j         v sJ ‚|| _        |dz   | _        d S ©Nr   )ÚALL_PRIMITIVE_TYPESrE   r   ©r#   rE   s     r   r_   zPrimitiveType.__init__    s/   € Ø�tÔ/Ð/Ð/Ð/Ð/ØˆŒ	Ø"&¨¡*ˆÔÐÐr   c                 ó.   — | j         | j                 dk    S )Nrn   ©r    rE   r(   s    r   Úis_char_typezPrimitiveType.is_char_type¥   ó   € ØÔ'¨¬	Ô2°cÒ9Ð9r   c                 ó.   — | j         | j                 dk    S )Nrp   r£   r(   s    r   r/   zPrimitiveType.is_integer_type§   r¥   r   c                 ó.   — | j         | j                 dk    S )Nrv   r£   r(   s    r   Úis_float_typezPrimitiveType.is_float_type©   r¥   r   c                 ó.   — | j         | j                 dk    S )Nry   r£   r(   s    r   ri   zPrimitiveType.is_complex_type«   r¥   r   c                 ó0   — t          | |d| j        ¦  «        S )NÚnew_primitive_type)rc   rE   rd   s      r   r5   z PrimitiveType.build_backend_type®   s   € Ý˜D #Ð';¸T¼YÑGÔGÐGr   N)rJ   rK   rL   rG   r    r_   r¤   r/   r¨   ri   r5   r.   r   r   rk   rk   f   s  € € € € € Ø€Gð5
Ø˜cð5
à˜cð5
ð 	˜cð5
ð 	˜cð	5
ð
 	˜cð5
ð 	˜cð5
ð 	˜cð5
ð 	˜cð5
ð 	˜cð5
ð 	˜cð5
ð 	˜cð5
ð 	˜cð5
ð 	˜cð5
ð 	˜cð5
ð 	  ð5
ð  	! #ð!5
ð" 	˜cð#5
ð 5
ð& 	˜cð'5
ð( 	˜cð)5
ð* 	˜cð+5
ð, 	˜cð-5
ð. 	˜cð/5
ð0 	˜cð15
ð2 	˜cð35
ð4 	˜cð55
ð6 	˜cð75
ð8 	˜cð95
ð: 	˜cð;5
ð< 	˜cð=5
ð> 	˜cð?5
ð@ 	˜cðA5
ðB 	˜cðC5
ðD 	˜cðE5
ðF 	˜cðG5
ð 5
ð 5
ðH 	˜cðI5
ðJ 	˜cðK5
ðL 	˜cðM5
ðN 	˜cðO5
ðP 	˜cðQ5
ðR 	˜cðS5
ðT 	˜cðU5
ðV 	˜cðW5
ðX 	˜cðY5
ðZ 	˜cð[5
ð\ 	˜cð]5
ð^ 	˜cð_5
ð` 	˜cða5
ðb 	˜cðc5
ðd 	˜cðe5
ðf 	˜cðg5
ðh 	˜cði5
ð 5
Ððn-ð -ð -ð
:ð :ð :ð:ð :ð :ð:ð :ð :ð:ð :ð :ðHð Hð Hð Hð Hr   rk   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚUnknownIntegerTyperl   c                 ó(   — || _         |dz   | _        d S rŸ   ©rE   r   r¡   s     r   r_   zUnknownIntegerType.__init__µ   ó   € ØˆŒ	Ø"&¨¡*ˆÔÐÐr   c                 ó   — dS )NTr.   r(   s    r   r/   z"UnknownIntegerType.is_integer_type¹   s   € Øˆtr   c                 ó0   — t          d| j        z  ¦  «        ‚)Nz4integer type '%s' can only be used after compilation©ÚNotImplementedErrorrE   rd   s      r   r5   z%UnknownIntegerType.build_backend_type¼   ó#   € Ý!ð #0Ø26´)ñ#<ñ =ô =ð 	=r   N)rJ   rK   rL   rG   r_   r/   r5   r.   r   r   r­   r­   ²   sF   € € € € € Ø€Gð-ð -ð -ðð ð ð=ð =ð =ð =ð =r   r­   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚUnknownFloatTyperl   c                 ó(   — || _         |dz   | _        d S rŸ   r¯   r¡   s     r   r_   zUnknownFloatType.__init__Ã   r°   r   c                 ó0   — t          d| j        z  ¦  «        ‚)Nz2float type '%s' can only be used after compilationr³   rd   s      r   r5   z#UnknownFloatType.build_backend_typeÇ   rµ   r   Nre   r.   r   r   r·   r·   À   s7   € € € € € Ø€Gð-ð -ð -ð=ð =ð =ð =ð =r   r·   c                   ó   — e Zd ZdZdd„ZdS )ÚBaseFunctionType)Úargsr%   ÚellipsisÚabiNc                 ób  — || _         || _        || _        || _        d„ | j         D ¦   «         }| j        r|                     d¦  «         |pdg}| j        d                     |¦  «        fz  }|�|d d…         |z   dz   |dd …         z   }| j        j                             d|¦  «        | _        d S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r.   r*   )rD   Úargs     r   rF   z-BaseFunctionType.__init__.<locals>.<listcomp>Õ   s"   € Ð;Ð;Ð;¨#�C—O’OÑ%Ô%Ð;Ð;Ð;r   ú...Úvoidz, r   r   r   )	r¼   r%   r½   r¾   ÚappendÚ_base_patternÚjoinr   r!   )r#   r¼   r%   r½   r¾   Úreprargsr   s          r   r_   zBaseFunctionType.__init__Ï   sÈ   € ØˆŒ	ØˆŒØ ˆŒØˆŒà;Ð;°´Ð;Ñ;Ô;ˆØŒ=ð 	#Ø�OŠO˜EÑ"Ô"Ð"ØÐ' ˜xˆØÔ)¨T¯YªY°xÑ-@Ô-@Ð,BÑBˆØˆ?Ø'¨¨¨Ô+¨cÑ1°CÑ7¸,ÀqÀrÀrÔ:JÑJˆLàŒKÔ*×2Ò2°3¸ÑEÔEð 	ÔÐÐr   r2   ©rJ   rK   rL   rG   r_   r.   r   r   r»   r»   Ì   s3   € € € € € Ø3€GðGð Gð Gð Gð Gð Gr   r»   c                   ó"   — e Zd ZdZdZd„ Zd„ ZdS )ÚRawFunctionTypez(&)(%s)Tc                 ó(   — t          d| ›d�¦  «        ‚)Núcannot render the type z7: it is a function type, not a pointer-to-function type)r   rd   s      r   r5   z"RawFunctionType.build_backend_typeç   s&   € ÝˆiØBFÀ$À$ðIñ Jô Jð 	Jr   c                 óN   — t          | j        | j        | j        | j        ¦  «        S r2   )ÚFunctionPtrTyper¼   r%   r½   r¾   r(   s    r   Úas_function_pointerz#RawFunctionType.as_function_pointerë   ó   € Ý˜tœy¨$¬+°t´}ÀdÄhÑOÔOÐOr   N)rJ   rK   rL   rÅ   rN   r5   rÏ   r.   r   r   rÊ   rÊ   à   sF   € € € € € ð €MØ€OðJð Jð JðPð Pð Pð Pð Pr   rÊ   c                   ó   — e Zd ZdZd„ Zd„ ZdS )rÎ   z(*&)(%s)c                 óP  — | j                              ||¦  «        }g }| j        D ]+}|                     |                     ||¦  «        ¦  «         Œ,d}| j        dk    r&| j        s	 |j        j        f}n# t          $ r Y nw xY wt          | |dt          |¦  «        || j        g|¢R Ž S )Nr.   Ú	__stdcallÚnew_function_type)r%   r<   r¼   rÄ   r¾   r½   Ú_backendÚFFI_STDCALLÚAttributeErrorrc   rZ   )r#   r7   r8   r%   r¼   ÚtpÚabi_argss          r   r5   z"FunctionPtrType.build_backend_typeò   sÞ   € Ø”×-Ò-¨c°:Ñ>Ô>ˆØˆØ”)ð 	>ð 	>ˆBØ�KŠK˜×+Ò+¨C°Ñ<Ô<Ñ=Ô=Ð=Ð=ØˆØŒ8�{Ò"Ð"Ø”=ð ðØ #¤Ô 8Ð:�H�HøÝ%ð ð ð Ø�Dðøøøå˜D #Ð':Ý! $™KœK¨°´ðKØAIðKð Kð Kð 	Ks   Á&A4 Á4
BÂ Bc                 óN   — t          | j        | j        | j        | j        ¦  «        S r2   )rÊ   r¼   r%   r½   r¾   r(   s    r   Úas_raw_functionzFunctionPtrType.as_raw_function  rÐ   r   N)rJ   rK   rL   rÅ   r5   rÛ   r.   r   r   rÎ   rÎ   ï   s?   € € € € € Ø€MðKð Kð KðPð Pð Pð Pð Pr   rÎ   c                   ó    — e Zd ZdZdd„Zd„ ZdS )ÚPointerType)Útotyper   r   c                 óÄ   — || _         || _        d}|j        rd|                     ¦   «         ›d�}t	          ||¦  «        }|j                             d|¦  «        | _        d S )Nz *&ú(ú)r   )rÞ   r   rM   r   r   r   r!   )r#   rÞ   r   Úextras       r   r_   zPointerType.__init__  si   € ØˆŒØˆŒ
ØˆØÔð 	/ð 	/Ø#Ÿlšl™nœn˜n˜nÐ.ˆEÝ˜˜uÑ%Ô%ˆØ"(Ô";×"CÒ"CÀCÈÑ"OÔ"OˆÔÐÐr   c                 ó`   — | j                              ||d¬¦  «        }t          | |d|¦  «        S )NT)r9   Únew_pointer_type)rÞ   r<   rc   )r#   r7   r8   ÚBItems       r   r5   zPointerType.build_backend_type  s3   € Ø”×,Ò,¨S°*ÈÐ,ÑMÔMˆÝ˜D #Ð'9¸5ÑAÔAÐAr   N©r   re   r.   r   r   rÝ   rÝ     sE   € € € € € Ø!€GðPð Pð Pð PðBð Bð Bð Bð Br   rÝ   c                 ó,   — t          | t          ¦  «        S r2   )rÝ   r   )rÞ   s    r   ÚConstPointerTyperè     s   € Ý�v�wÑ'Ô'Ð'r   c                   ó   — e Zd ZdZdd„ZdS )ÚNamedPointerType)rÞ   rE   r   c                 ó`   — t                                | ||¦  «         || _        |dz   | _        d S rŸ   )rÝ   r_   rE   r   )r#   rÞ   rE   r   s       r   r_   zNamedPointerType.__init__   s3   € Ý×Ò˜T 6¨5Ñ1Ô1Ð1ØˆŒ	Ø"&¨¡*ˆÔÐÐr   Nræ   rÈ   r.   r   r   rê   rê     s-   € € € € € Ø €Gð-ð -ð -ð -ð -ð -r   rê   c                   ó.   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ ZdS )Ú	ArrayType)ÚitemÚlengthTc                 ó’   — || _         || _        |€d}n|dk    rd}nd|z  }| j         j                             d|¦  «        | _        d S )Nz&[]rÂ   z
&[/*...*/]z&[%s]r   )rî   rï   r   r!   )r#   rî   rï   Úbracketss       r   r_   zArrayType.__init__*  s\   € ØˆŒ	ØˆŒàˆ>ØˆHˆHØ�uŠ_ˆ_Ø#ˆHˆHà Ñ'ˆHàŒIÔ(×0Ò0°°hÑ?Ô?ð 	ÔÐÐr   c                 ó6   — t          | j        t          ¦  «        S r2   )Ú
isinstancerï   Ústrr(   s    r   Úlength_is_unknownzArrayType.length_is_unknown7  s   € Ý˜$œ+¥sÑ+Ô+Ð+r   c                 ó,   — t          | j        |¦  «        S r2   )rí   rî   )r#   Ú	newlengths     r   Úresolve_lengthzArrayType.resolve_length:  s   € Ý˜œ IÑ.Ô.Ð.r   c                 ó  — |                       ¦   «         rt          d| ›d�¦  «        ‚| j                             ||¦  «         t	          | j        ¦  «                             ||¦  «        }t          | |d|| j        ¦  «        S )NrÌ   z: unknown lengthÚnew_array_type)rõ   r   rî   r<   rÝ   rc   rï   )r#   r7   r8   ÚBPtrItems       r   r5   zArrayType.build_backend_type=  s†   € Ø×!Ò!Ñ#Ô#ð 	%Ý�)Ø!˜T˜Tð$ñ %ô %ð %àŒ	×"Ò" 3¨
Ñ3Ô3Ð3Ý˜tœyÑ)Ô)×:Ò:¸3À
ÑKÔKˆÝ˜D #Ð'7¸À4Ä;ÑOÔOÐOr   N)	rJ   rK   rL   rG   rM   r_   rõ   rø   r5   r.   r   r   rí   rí   &  sb   € € € € € Ø €GØ€MðAð Að Að,ð ,ð ,ð/ð /ð /ðPð Pð Pð Pð Pr   rí   rm   c                   ó(   — e Zd ZdZdZd„ Zd„ Zd„ ZdS )ÚStructOrUnionOrEnumrl   Nc                 óJ   — | j         p| j        ›d| j        ›�}|dz   | _        d S )Nr   r   )Ú	forcenameÚkindrE   r   r¡   s     r   Úbuild_c_name_with_markerz,StructOrUnionOrEnum.build_c_name_with_markerL  s/   € ØŒ~ÐA¨D¬I¨I¨I°t´y°yÐ!AˆØ"&¨¡*ˆÔÐÐr   c                 ó<   — || _         |                      ¦   «          d S r2   )rÿ   r  )r#   rÿ   s     r   Úforce_the_namez"StructOrUnionOrEnum.force_the_nameP  s!   € Ø"ˆŒØ×%Ò%Ñ'Ô'Ð'Ð'Ð'r   c                 óX   — | j                              d¦  «        sJ ‚| j         d d…         S )Nr   éÿÿÿÿ)r   Úendswithr(   s    r   Úget_official_namez%StructOrUnionOrEnum.get_official_nameT  s1   € ØÔ&×/Ò/°Ñ4Ô4Ð4Ð4Ð4ØÔ& s¨ sÔ+Ð+r   )rJ   rK   rL   rG   rÿ   r  r  r  r.   r   r   rý   rý   H  sK   € € € € € Ø€GØ€Ið-ð -ð -ð(ð (ð (ð,ð ,ð ,ð ,ð ,r   rý   c                   óZ   — e Zd ZdZdZdZdZdd„Zd„ Zdd„Z	d„ Z
dd	„Zd
„ Zd„ Zd„ Zd„ ZdS )ÚStructOrUnionNr   Fc                 ót   — || _         || _        || _        || _        || _        |                      ¦   «          d S r2   )rE   ÚfldnamesÚfldtypesÚ
fldbitsizeÚfldqualsr  )r#   rE   r  r  r  r  s         r   r_   zStructOrUnion.__init___  s=   € ØˆŒ	Ø ˆŒØ ˆŒØ$ˆŒØ ˆŒØ×%Ò%Ñ'Ô'Ð'Ð'Ð'r   c              #   óš   K  — | j         �?t          | j        | j         ¦  «        D ]&\  }}|dk    rt          |t          ¦  «        r|V — Œ%d S d S )Nr   )r  Úzipr  ró   r	  )r#   rE   Útypes      r   Úanonymous_struct_fieldsz%StructOrUnion.anonymous_struct_fieldsg  sb   è è € ØŒ=Ð$Ý! $¤-°´Ñ?Ô?ð ð ‘
��dØ˜2’:�:¥*¨Tµ=Ñ"AÔ"A�:Ø�J�J�Jøð %Ð$ðð r   Tc              #   ó  K  — | j         }|€dt          | j        ¦  «        z  }t          | j        | j        | j        |¦  «        D ]H\  }}}}|dk    r3t          |t          ¦  «        r|r|                     ¦   «         D ]}|V — ŒŒ@||||fV — ŒId S )Nræ   r   )	r  Úlenr  r  r  r  ró   r	  Ú
enumfields)r#   Úexpand_anonymous_struct_unionr  rE   r  Úbitsizer   r%   s           r   r  zStructOrUnion.enumfieldsm  sÈ   è è € Ø”=ˆØÐØ�c $¤-Ñ0Ô0Ñ0ˆHÝ*-¨d¬m¸T¼]Ø.2¬o¸xñ+Iô +Ið 	3ð 	3Ñ&ˆD�$˜ à˜’
�
�z¨$µÑ>Ô>�
Ø5ð ð #ŸošoÑ/Ô/ð !ð !�FØ �L�L�L�Lð!ð ˜T 7¨EÐ2Ð2Ð2Ð2Ð2ð	3ð 	3r   c                 óŒ  — g }g }g }g }|                       ¦   «         D ]V\  }}}}|                     |¦  «          |j        |¦  «         |                     |¦  «         |                     |¦  «         ŒWt          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _        d S r2   )r  rÄ   rZ   r  r  r  r  )	r#   ÚnamesÚtypesÚbitsizesr  rE   r  r  r   s	            r   Úforce_flattenzStructOrUnion.force_flatten{  s½   € ð ˆØˆØˆØˆØ*.¯/ª/Ñ*;Ô*;ð 	#ð 	#Ñ&ˆD�$˜ Ø�LŠL˜ÑÔÐØˆEŒL˜ÑÔÐØ�OŠO˜GÑ$Ô$Ð$Ø�OŠO˜EÑ"Ô"Ð"Ð"Ý˜e™œˆŒÝ˜e™œˆŒÝ ™/œ/ˆŒÝ˜h™œˆŒˆˆr   c                 óp   — t                                | |||¦  «        }|s|                      ||¦  «         |S r2   )rý   r<   Úfinish_backend_type)r#   r7   r8   r9   r:   s        r   r<   zStructOrUnion.get_cached_btype�  sE   € Ý#×4Ò4°T¸3À
Ø5>ñ@ô @ˆàð 	6Ø×$Ò$ S¨*Ñ5Ô5Ð5Øˆr   c                 ó°  ‡‡— | j         r%| j         dk    rt          d| j        ›d�¦  «        ‚d S ‰j        |          }d| _         | j        €�nƒ| j        €uˆˆfd„| j        D ¦   «         }t          t          | j        || j	        ¦  «        ¦  «        }d}| j
        r| j
        dk    rd}n	d| j
        f} ‰j        j        ||| d	d	g|¢R Ž  �ng }| j        \  }}}	}
t          t          | j        ¦  «        ¦  «        D �]�}||         }| j        |         }t          |t           ¦  «        rÉ|                     ¦   «         rµ|j                             ‰‰¦  «        }t)          |‰                     |¦  «        ¦  «        \  }}|dk    r.|                      d
| j        ›d| j        |         pd›d�¦  «         |                     |¦  «        }| j        d |…         |fz   | j        |dz   d …         z   | _        |                     ‰‰¦  «        }t          |t           ¦  «        r|j        €	|dk    sJ ‚nI‰                     |¦  «        }||k    r.|                      d| j        | j        |         pd||fz  ¦  «         |                     |¦  «         �Œ‘t          t          | j        || j	        |¦  «        ¦  «        }‰j                             ||| |	|
¦  «         d| _         d S )Nr   z%recursive structure declaration for 'ú'r   c                 ó<   •— g | ]}|                      ‰‰¦  «        ‘ŒS r.   )r<   )rD   rØ   r7   r8   s     €€r   rF   z5StructOrUnion.finish_backend_type.<locals>.<listcomp>¢  s9   ø€ ð 1ð 1ð 1Øð ×+Ò+¨C°Ñ<Ô<ð 1ð 1ð 1r   r.   )é   r   r  zfield 'ú.z{}z' has a bogus size?z=field '%s.%s' is declared as %d bytes, but is really %d bytes)Ú	completedr´   rE   r3   r  ÚfixedlayoutÚlistr  r  r  ÚpackedrÕ   Úcomplete_struct_or_unionÚranger  ró   rí   rõ   rî   r<   ÚdivmodÚsizeofÚ_verification_errorrø   rï   rÄ   )r#   r7   r8   r:   r  ÚlstÚextra_flagsÚfieldofsÚ	fieldsizeÚ	totalsizeÚtotalalignmentrp   ÚfsizeÚftypeÚ	BItemTypeÚnlenÚnrestÚ
BFieldTypeÚ	bitemsizes    ``                r   r  z!StructOrUnion.finish_backend_type”  sh  øø€ ØŒ>ð 	ØŒ~ Ò"Ð"Ý)Ð)Ø8<¼	¸	¸	ð+Dñ Eô Eð EàˆFØÔ" 4Ô(ˆàˆŒàŒ=Ð ÙàÔÐ%ð1ð 1ð 1ð 1ð 1Ø"&¤-ð1ñ 1ô 1ˆHå•s˜4œ=¨(°D´OÑDÔDÑEÔEˆCØˆKØŒ{ð 3Ø”; !Ò#Ð#Ø"&�K�Kà#$ d¤kÐ"2�KØ1ˆCŒLÔ1°%¸¸dØ24°bðHØ;FðHð Hð Hð Hñ Hð ˆHØ=AÔ=MÑ:ˆH�i ¨NÝ�3˜tœ}Ñ-Ô-Ñ.Ô.ð ,ñ ,�Ø! !œ�Øœ aÔ(�å˜e¥YÑ/Ô/ð 
:°E×4KÒ4KÑ4MÔ4Mð 
:à %¤
× ;Ò ;¸CÀÑ LÔ L�IÝ"(¨°·
²
¸9Ñ0EÔ0EÑ"FÔ"F‘K�D˜%Ø ’z�zØ×0Ò0Ð0à œI˜I˜I t¤}°QÔ'7Ð'?¸4Ð'?Ð'?ðAñBô Bð Bð "×0Ò0°Ñ6Ô6�EØ%)¤]°2°A°2Ô%6¸%¸Ñ%AØ%)¤]°1°Q±3°4°4Ô%8ñ&9�D”Mð #×3Ò3°C¸ÑDÔD�
Ý˜e¥YÑ/Ô/ð 	D°E´LÐ4HØ  Aš:˜:˜:˜:˜:à #§
¢
¨:Ñ 6Ô 6�IØ  EÒ)Ð)Ø×0Ò0ð.Ø15´Ø15´¸qÔ1AÐ1IÀTØ1:¸Eð1CñCñDô Dð Dð
 —’ 
Ñ+Ô+Ð+Ñ+å•s˜4œ=¨(°D´OÀXÑNÔNÑOÔOˆCØŒL×1Ò1°%¸¸dØ2;¸^ñMô Mð MàˆŒˆˆr   c                 ó    — t          |¦  «        ‚r2   )r   )r#   Úmsgs     r   r,  z!StructOrUnion._verification_errorÓ  s   € Ý Ñ$Ô$Ð$r   c                 óh   — | j         r(| j        €#t          |                      ¦   «         ¦  «        ‚d S d S r2   )Úpartialr%  r   r"   r(   s    r   Úcheck_not_partialzStructOrUnion.check_not_partialÖ  s>   € ØŒ<ð 	:˜DÔ,Ð4Ý% d×&6Ò&6Ñ&8Ô&8Ñ9Ô9Ð9ð	:ð 	:Ð4Ð4r   c                 ó°   — |                       ¦   «          |                     | ¦  «         t          | |d| j        z  |                      ¦   «         | ¬¦  «        S )Nznew_%s_type©Úkey)r>  rÄ   rc   r   r  rd   s      r   r5   z StructOrUnion.build_backend_typeÚ  sa   € Ø×ÒÑ Ô Ð Ø×Ò˜$ÑÔÐå˜D # }°t´yÑ'@Ø ×2Ò2Ñ4Ô4¸$ð@ñ @ô @ð 	@r   r2   )TrI   )rJ   rK   rL   r%  r$  r=  r'  r_   r  r  r  r<   r  r,  r>  r5   r.   r   r   r	  r	  Y  sÄ   € € € € € Ø€KØ€IØ€GØ€Fð(ð (ð (ð (ðð ð ð3ð 3ð 3ð 3ð(ð (ð (ð$ð ð ð ð=ð =ð =ð~%ð %ð %ð:ð :ð :ð@ð @ð @ð @ð @r   r	  c                   ó   — e Zd ZdZdS )Ú
StructTypeÚstructN©rJ   rK   rL   r   r.   r   r   rC  rC  â  s   € € € € € Ø€D€D€Dr   rC  c                   ó   — e Zd ZdZdS )Ú	UnionTypeÚunionNrE  r.   r   r   rG  rG  æ  s   € € € € € Ø€D€D€Dr   rG  c                   ó:   — e Zd ZdZdZdZd	d„Zd„ Zd„ Zd„ Z	d„ Z
dS )
ÚEnumTypeÚenumFNc                 óf   — || _         || _        || _        || _        |                      ¦   «          d S r2   )rE   ÚenumeratorsÚ
enumvaluesÚbaseinttyper  )r#   rE   rM  rN  rO  s        r   r_   zEnumType.__init__ï  s8   € ØˆŒ	Ø&ˆÔØ$ˆŒØ&ˆÔØ×%Ò%Ñ'Ô'Ð'Ð'Ð'r   c                 ó²   — t                                | |¦  «         | j        €4|                      ¦   «         }d|                     dd¦  «        z   | _        d S d S )Nr   r   Ú_)rý   r  rÿ   r  r!   )r#   rÿ   rE   s      r   r  zEnumType.force_the_nameö  sW   € Ý×*Ò*¨4°Ñ;Ô;Ð;ØŒ>Ð!Ø×)Ò)Ñ+Ô+ˆDØ  4§<¢<°°SÑ#9Ô#9Ñ9ˆDŒNˆNˆNð "Ð!r   c                 óh   — | j         r(| j        s#t          |                      ¦   «         ¦  «        ‚d S d S r2   )r=  Úpartial_resolvedr   r"   r(   s    r   r>  zEnumType.check_not_partialü  sD   € ØŒ<ð 	: Ô 5ð 	:Ý% d×&6Ò&6Ñ&8Ô&8Ñ9Ô9Ð9ð	:ð 	:ð 	:ð 	:r   c           
      ó¼   — |                       ¦   «          |                      ||¦  «        }t          | |d|                      ¦   «         | j        | j        || ¬¦  «        S )NÚnew_enum_typer@  )r>  Úbuild_baseinttyperc   r  rM  rN  )r#   r7   r8   Ú
base_btypes       r   r5   zEnumType.build_backend_type   sd   € Ø×ÒÑ Ô Ð Ø×+Ò+¨C°Ñ<Ô<ˆ
Ý˜D # Ø ×2Ò2Ñ4Ô4Ø Ô,¨d¬oØ&¨Dð2ñ 2ô 2ð 	2r   c                 ób  — | j         �| j                              ||¦  «        S | j        r)t          | j        ¦  «        }t	          | j        ¦  «        }n]dd l}	 t                               ¦   «          n# t          $ r Y nw xY w| 	                    d|  
                    ¦   «         z  ¦  «         dx}}|dk     r!d}t          d¦  «        }t          d¦  «        }n d}t          d¦  «        }t          d¦  «        }|                     ||¦  «        }	|                     ||¦  «        }
|                     |	¦  «        }|                     |
¦  «        }|dd	|z  dz
  z  k    r|dd	|z  |z
  z  k     r|	S |dd	|z  dz
  z  k    r|dd	|z  |z
  z  k     r|
S t          d
|  
                    ¦   «         z  ¦  «        ‚)Nr   zU%r has no values explicitly defined; guessing that it is equivalent to 'unsigned int'r   rq   rr   rs   rt   r  r"  z=%s values don't all fit into either 'long' or 'unsigned long')rO  r<   rN  ÚminÚmaxÚwarningsÚ__warningregistry__ÚclearÚ	NameErrorÚwarnr"   rk   r+  r   )r#   r7   r8   Úsmallest_valueÚlargest_valuer[  ÚsignÚ
candidate1Ú
candidate2Úbtype1Úbtype2Úsize1Úsize2s                r   rV  zEnumType.build_baseinttype  sÿ  € ØÔÐ'ØÔ#×4Ò4°S¸*ÑEÔEÐEàŒ?ð 	/Ý  ¤Ñ1Ô1ˆNÝ ¤Ñ0Ô0ˆMˆMàˆOˆOˆOðõ $×)Ò)Ñ+Ô+Ð+Ð+øÝð ð ð Ø�ðøøøà�MŠMð Mà ×,Ò,Ñ.Ô.ñ/ñ 0ô 0ð 0ð ./Ð.ˆN˜]Ø˜AÒÐØˆDÝ& uÑ-Ô-ˆJÝ& vÑ.Ô.ˆJˆJàˆDÝ& ~Ñ6Ô6ˆJÝ& Ñ7Ô7ˆJØ×,Ò,¨S°*Ñ=Ô=ˆØ×,Ò,¨S°*Ñ=Ô=ˆØ—
’
˜6Ñ"Ô"ˆØ—
’
˜6Ñ"Ô"ˆØ ¨¨%©°©	Ñ2Ò3Ð3Ø˜Q 1 U¡7¨4¡<Ñ0Ò1Ð1ØˆMØ ¨¨%©°©	Ñ2Ò3Ð3Ø˜Q 1 U¡7¨4¡<Ñ0Ò1Ð1ØˆMÝð -Ø/3×/?Ò/?Ñ/AÔ/AñBñ Cô Cð 	Cs   ÁA2 Á2
A?Á>A?r2   )rJ   rK   rL   r   r=  rS  r_   r  r>  r5   rV  r.   r   r   rJ  rJ  ê  sy   € € € € € Ø€DØ€GØÐð(ð (ð (ð (ð:ð :ð :ð:ð :ð :ð2ð 2ð 2ð'Cð 'Cð 'Cð 'Cð 'Cr   rJ  c                 óp   — |€d| z  }t          |d d d ¦  «        }|                     | ¦  «         d|_        |S )Nz$%sÚunknown_type)rC  r  Úorigin©rE   Ú
structnamerØ   s      r   rj  rj  1  sD   € ØÐØ˜T‘\ˆ
Ý	�J  d¨DÑ	1Ô	1€BØ×Ò�dÑÔÐØ€B„IØ€Ir   c                 óT   — |€d| z  }t          |d d d ¦  «        }t          || ¦  «        S )Nz$$%s)rC  rê   rl  s      r   Úunknown_ptr_typero  9  s4   € ØÐØ˜d‘]ˆ
Ý	�J  d¨DÑ	1Ô	1€BÝ˜B Ñ%Ô%Ð%r   c                 ó2  — t          | t          j        ¦  «        rt          S t          5  t          t          | ¦  «        d¦  «        s%t          j        ¦   «         t          | ¦  «        _	        t          | ¦  «        j	        cd d d ¦  «         S # 1 swxY w Y   d S )NÚ__typecache)
ró   r  Ú
ModuleTypeÚ_typecache_cffi_backendÚglobal_lockÚhasattrr  ÚweakrefÚWeakValueDictionaryrq  )Úbackends    r   Úget_typecachery  C  sÅ   € õ �'�5Ô+Ñ,Ô,ð 'Ý&Ð&Ý	ð )ð )Ý•t˜G‘}”} mÑ4Ô4ð 	FÝ(/Ô(CÑ(EÔ(E�D�‰MŒMÔ%Ý�G‰}Œ}Ô(ð)ð )ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð )ð )s   ©ABÂBÂBc                 ó¤  — |                      d||f¦  «        }|rJ ‚	 |j        |         S # t          $ r Y nw xY w	  t          |j        |¦  «        |Ž }n)# t
          $ r}t          |›d| ›d|›�¦  «        ‚d }~ww xY w|j        }t          5  |                     |¦  «        }	|	€|||<   |cd d d ¦  «         S |	cd d d ¦  «         S # 1 swxY w Y   d S )NrA  ú: )ÚpopÚ
_typecacher4   rC   rÕ   r´   rt  Úget)
Úsrctyper7   Úfuncnamer¼   ÚkwdsrA  ÚresÚeÚcacheÚres1s
             r   rc   rc   N  sw  € Ø
�(Š(�5˜8 TÐ*Ñ
+Ô
+€CØ€O€O€OðØŒ~˜cÔ"Ð"øÝð ð ð ØˆðøøøðIØ-�g�c”l HÑ-Ô-¨tÐ4ˆˆøÝð Ið Ið IÝ!°(°(°(¸G¸G¸GÀQÀQÐ"GÑHÔHÐHøøøøðIøøøð
 ŒN€EÝ	ð ð Ø�yŠy˜‰~Œ~ˆØˆ<ØˆE�#‰JØð	ð ð ð ñ ô ð ð ð ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s;   ž+ «
8·8¼A Á
A;ÁA6Á6A;ÂCÂ7CÃC	ÃC	c                 ó&   — t          d| d|¦  «        S )Nú?rä   rb   )r7   r:   s     r   Úpointer_cacherˆ  e  s   € Ý˜˜SÐ"4°eÑ<Ô<Ð<r   c                 ó®   — | j         rKt          | j         d         ¦  «        t          u r,|›d| j         d         ›�f| j         dd …         z   | _         d S d S d S )Nr   r{  r   )r¼   r  rô   )rƒ  rE   s     r   Úattach_exception_inforŠ  h  s`   € Ø„vð >•$�q”v˜a”y‘/”/¥SÐ(Ð(Ø"˜d˜d A¤F¨1¤I IÐ.Ð0°1´6¸!¸"¸"´:Ñ=ˆŒˆˆð>ð >Ð(Ð(r   r2   )-r  rv  Úlockr   Úerrorr   r   r   r   r   r   r   Úobjectr   rP   r]   Ú	void_typerg   rk   r­   r·   r»   rÊ   rÎ   rÝ   Ú
voidp_typerè   Úconst_voidp_typerê   rí   Úchar_array_typerý   r	  rC  rG  rJ  rj  ro  rt  rw  rs  ry  rc   rˆ  rŠ  r.   r   r   ú<module>r’     s¹  ðØ €€€Ø €€€à Ð Ð Ð Ð Ð Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dð €Ø€
Ø€
ð
ð 
ð 
ð,Fð ,Fð ,Fð ,Fð ,F˜ñ ,Fô ,Fð ,Fð^
@ð 
@ð 
@ð 
@ð 
@Ð!ñ 
@ô 
@ð 
@ð8ð 8ð 8ð 8ð 8ˆxñ 8ô 8ð 8ð ˆH‰JŒJ€	ðð ð ð ð ˜ñ ô ð ð
IHð IHð IHð IHð IHÐ%ñ IHô IHð IHðX=ð =ð =ð =ð =Ð*ñ =ô =ð =ð	=ð 	=ð 	=ð 	=ð 	=Ð(ñ 	=ô 	=ð 	=ðGð Gð Gð Gð G�xñ Gô Gð Gð(Pð Pð Pð Pð PÐ&ñ Pô Pð PðPð Pð Pð Pð PÐ&ñ Pô Pð Pð,Bð Bð Bð Bð B�(ñ Bô Bð Bð  ˆ[˜Ñ#Ô#€
ð(ð (ð (ð $Ð# IÑ.Ô.Ð ð-ð -ð -ð -ð -�{ñ -ô -ð -ðPð Pð Pð Pð P�ñ Pô Pð Pð> �)˜M˜M¨&Ñ1Ô1°4Ñ8Ô8€ð,ð ,ð ,ð ,ð ,Ð,ñ ,ô ,ð ,ð"F@ð F@ð F@ð F@ð F@Ð'ñ F@ô F@ð F@ðRð ð ð ð �ñ ô ð ðð ð ð ð �ñ ô ð ðECð ECð ECð ECð ECÐ"ñ ECô ECð ECðNð ð ð ð&ð &ð &ð &ð ˆm‰oŒo€Ø5˜'Ô5Ñ7Ô7Ð ð	)ð 	)ð 	)ðð ð ð.=ð =ð =ð>ð >ð >ð >ð >r   