Ë
    ±éägWÿ  ã                   óÔ  — d dl Z d dlZd dlZddlmZmZ ddlmZ ddl­ dZ	dZ
dZej                  d	k7  xs  ej                  d
k  xs ej                  dk\  Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Zej                  dk\  rej*                  Zn G d„ dej.                  «      Zd„ Zd„ Zd%d„Zd%d„Zd„ Zd „ Zd!„ Zd"„ Zd#„ Z 	 	 	 	 d&d$„Z!y)'é    Né   )ÚffiplatformÚmodel)ÚVerificationError)Ú*i&  i'  i(  Úwin32)é   r   )r	   é   c                   ó    — e Zd Zdd„Zd„ Zd„ Zy)Ú
GlobalExprc                 óJ   — || _         || _        || _        || _        || _        y ©N)ÚnameÚaddressÚtype_opÚsizeÚcheck_value)Úselfr   r   r   r   r   s         úM/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/cffi/recompiler.pyÚ__init__zGlobalExpr.__init__   s&   € ØˆŒ	ØˆŒØˆŒØˆŒ	Ø&ˆÕó    c           	      óŒ   — d| j                   ›d| j                  ›d| j                  j                  «       ›d| j                  ›d�	S )Nú  { "z", (void *)ú, z
, (void *)ú },)r   r   r   Ú	as_c_exprr   ©r   s    r   r   zGlobalExpr.as_c_expr   s0   � à�I‹I�t—|“| T§\¡\×%;Ñ%;Õ%=¸t¿y»yðJð 	Jr   c                 ój   — d| j                   j                  «       | j                  | j                  fz  S )Nz
b'%s%s',%d)r   Úas_python_bytesr   r   r   s    r   Úas_python_exprzGlobalExpr.as_python_expr   s2   € Ø˜tŸ|™|×;Ñ;Ó=¸t¿y¹yØ#×/Ñ/ð1ñ 1ð 	1r   N)r   r   ©Ú__name__Ú
__module__Ú__qualname__r   r   r    © r   r   r   r      s   „ ó'òJó1r   r   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú	FieldExprc                 óJ   — || _         || _        || _        || _        || _        y r   )r   Úfield_offsetÚ
field_sizeÚfbitsizeÚfield_type_op)r   r   r)   r*   r+   r,   s         r   r   zFieldExpr.__init__   s'   € ØˆŒ	Ø(ˆÔØ$ˆŒØ ˆŒØ*ˆÕr   c                 óØ   — dt        | j                  «      z  }d| j                  ›d| j                  ›d�d|›d| j                  ›d�z   d|›d| j                  j                  «       ›d�z   S )Nú r   ú", z,
z     z   r   )Úlenr   r)   r*   r,   r   )r   Úspacess     r   r   zFieldExpr.as_c_expr&   sZ   € Ø”s˜4Ÿ9™9“~Ñ%‰Ø%)§Y£Y°×0AÓ0AÑBÚ%+¨T¯_«_Ð=ò>â%+¨T×-?Ñ-?×-IÑ-IÕ-KÐLñMð 	Nr   c                 ó   — t         ‚r   )ÚNotImplementedErrorr   s    r   r    zFieldExpr.as_python_expr,   s   € Ü!Ð!r   c                 ó  — | j                   j                  t        k(  rd}n9| j                   j                  t        k(  rt	        | j
                  «      }nt        ‚d| j                   j                  «       ›|›| j                  ›d�S )NÚ úb'ú')	r,   ÚopÚOP_NOOPÚOP_BITFIELDÚformat_four_bytesr+   r3   r   r   )r   Ú	size_exprs     r   Úas_field_python_exprzFieldExpr.as_field_python_expr/   sj   € Ø×Ñ× Ñ ¤GÒ+Ø‰IØ×Ñ×"Ñ"¤kÒ1Ü)¨$¯-©-Ó8‰Iä%Ð%øØ"×0Ñ0×@Ñ@ÔBÙ'Ø"Ÿi›ið)ð 	)r   N)r"   r#   r$   r   r   r    r=   r%   r   r   r'   r'      s   „ ò+òNò"ó	)r   r'   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚStructUnionExprc	                 ót   — || _         || _        || _        || _        || _        || _        || _        || _        y r   )r   Ú
type_indexÚflagsr   Ú	alignmentÚcommentÚfirst_field_indexÚc_fields)	r   r   rA   rB   r   rC   rD   rE   rF   s	            r   r   zStructUnionExpr.__init__;   s;   € àˆŒ	Ø$ˆŒØˆŒ
ØˆŒ	Ø"ˆŒØˆŒØ!2ˆÔØ ˆ�r   c                 ó   — d| j                   | j                  | j                  fz  d| j                  ›d| j                  ›d�z   d| j
                  t        | j                  «      fz  z   | j                  rd| j                  z  z   dz   S dz   dz   S )Nz  { "%s", %d, %s,z
    r   z%d, %d z	/* %s */ r5   z},)	r   rA   rB   r   rC   rE   r0   rF   rD   r   s    r   r   zStructUnionExpr.as_c_exprF   sš   € Ø# t§y¡y°$·/±/À4Ç:Á:Ð&NÒNØ&*§i£i°·³Ð@ñAà˜t×5Ñ5´s¸4¿=¹=Ó7IÐJÑJñKð 26·²�; §¡Ñ-ñGð ñ	ð 	ð DFñGð ñ	ð 	r   c                 ó  — t        | j                  t        «      }| j                  D �cg c]  }|j	                  «       ‘Œ }}dt        | j                  «      ›t        |«      ›| j                  ›ddj                  |«      ›d�S c c}w )Nz(b'ú',ú,ú))	ÚevalrB   ÚG_FLAGSrF   r=   r;   rA   r   Újoin)r   rB   Úc_fieldÚfields_exprs       r   r    zStructUnionExpr.as_python_exprM   st   € Ü�T—Z‘Z¤Ó)ˆà&*§m¡mö5Ø"ð ×3Ñ3Õ5ð 5ˆñ 5ô ˜dŸo™oÔ.Ü˜eÔ$Ø�I‹IØ�H‰H�[Õ!ð	#ð 	#ùò5s   ©BNr!   r%   r   r   r?   r?   :   s   „ ò	!òó#r   r?   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚEnumExprc                 óJ   — || _         || _        || _        || _        || _        y r   ©r   rA   r   ÚsignedÚallenums)r   r   rA   r   rU   rV   s         r   r   zEnumExpr.__init__X   s%   € ØˆŒ	Ø$ˆŒØˆŒ	ØˆŒØ ˆ�r   c                 óz   — d| j                   | j                  | j                  | j                  | j                  fz  S )Nz1  { "%s", %d, _cffi_prim_int(%s, %s),
    "%s" },rT   r   s    r   r   zEnumExpr.as_c_expr_   s9   € ðØ!%§¡¨D¯O©OØ!%§¡¨D¯K©K¸¿¹ð!HñHð 	Ir   c           	      ó  — t         t        t        t        t        t
        t        t        dœ| j                  | j                  f   }dt        | j                  «      ›t        |«      ›| j                  ›d| j                  ›d�S )N))r   r   )r   r   )é   r   )rY   r   )é   r   )rZ   r   )é   r   )r[   r   r6   z\x00r7   )Ú
PRIM_UINT8Ú	PRIM_INT8ÚPRIM_UINT16Ú
PRIM_INT16ÚPRIM_UINT32Ú
PRIM_INT32ÚPRIM_UINT64Ú
PRIM_INT64r   rU   r;   rA   r   rV   )r   Ú
prim_indexs     r   r    zEnumExpr.as_python_exprd   sa   € ä¬)Ü¬*Ü¬*Ü¬*ñ	ð
 �i‰i˜Ÿ™Ð$ñ&‰
ô &7°t·±Ô%GÜ%6°zÔ%BØ%)§Y£Y°·³ð?ð 	?r   Nr!   r%   r   r   rR   rR   W   s   „ ò!òIó
	?r   rR   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTypenameExprc                 ó    — || _         || _        y r   ©r   rA   )r   r   rA   s      r   r   zTypenameExpr.__init__p   s   € ØˆŒ	Ø$ˆ�r   c                 ó8   — d| j                   | j                  fz  S )Nz  { "%s", %d },rh   r   s    r   r   zTypenameExpr.as_c_exprt   s   € Ø  D§I¡I¨t¯©Ð#?Ñ?Ð?r   c                 óL   — dt        | j                  «      ›| j                  ›d�S )Nr6   r7   )r;   rA   r   r   s    r   r    zTypenameExpr.as_python_exprw   s   � Ü-¨d¯o©oÔ>ÀÇ	Ã	ÐJÐJr   Nr!   r%   r   r   rf   rf   o   s   „ ò%ò@óKr   rf   c                   óø  — e Zd ZdZdKd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	g d¢Z
d	„ ZdLd
„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!dMd!„Z"d"„ Z#d#„ Z$d$„ Z%e%Z&d%„ Z'd&„ Z(e(Z)d'„ Z*e*Z+d(„ Z,d)„ Z-d*„ Z.	 	 dNd+„Z/d,„ Z0d-„ Z1d.„ Z2d/„ Z3dMd0„Z4d1„ Z5d2„ Z6d3„ Z7d4„ Z8d5„ Z9d6„ Z:d7„ Z;d8„ Z<d9„ Z=d:„ Z>e>xZ?Z@d;„ ZAd<„ ZBd=„ ZCd>„ ZDd?„ ZEeExZFZGd@„ ZHdA„ ZIdB„ ZJdC„ ZKdD„ ZLdE„ ZMdF„ ZNeNZOeNZPdG„ ZQdH„ ZRdI„ ZSeSZTdJ„ ZUy )OÚ
Recompilerr   c                 óD   — || _         || _        || _        t        | _        y r   )ÚffiÚmodule_nameÚtarget_is_pythonÚVERSION_BASEÚ_version)r   rn   ro   rp   s       r   r   zRecompiler.__init__�   s    € ØˆŒØ&ˆÔØ 0ˆÔÜ$ˆ�r   c                 ó:   — t        | j                  |«      | _        y r   )Úmaxrr   )r   Úvers     r   Úneeds_versionzRecompiler.needs_version‡   s   € Ü˜DŸM™M¨3Ó/ˆ�r   c           
      óö  — i | _         | j                  d«       t        | j                   t        ¬«      }g | _        |D �]/  }|j
                  sŒ| j                   |   �J ‚t        | j                  «      | j                   |<   | j                  j                  |«       |j                  D ]§  }t        |t        j                  t        j                  t        j                  t        j                  t        j                  f«      sJ ‚| j                   |   €"t        | j                  «      | j                   |<   | j                  j                  |«       Œ© | j                  j                  d«       �Œ2 |D ]‘  }|j
                  rŒ| j                   |   �Œ t        | j                  «      | j                   |<   | j                  j                  |«       |j                   sŒj|j"                  €Œw| j                  j                  d«       Œ“ d | j                   j%                  «       vsJ ‚i | _        i | _        |D ]V  }t        |t        j*                  «      rd | j&                  |<   Œ-t        |t        j,                  «      sŒHd | j(                  |<   ŒX t/        t        | j&                  d„ ¬«      «      D ]  \  }}|| j&                  |<   Œ t/        t        | j(                  d„ ¬«      «      D ]  \  }}|| j(                  |<   Œ |D ];  }t1        | d|j2                  j4                  z   «      } ||| j                   |   «       Œ= | j                  D ]  }t        |t6        «      rŒJ ‚ t9        | j                  «      | _        y )NÚcollecttype©ÚkeyÚENDÚLENc                 ó   — | j                   S r   ©r   ©Útps    r   ú<lambda>z/Recompiler.collect_type_table.<locals>.<lambda>´   ó
   € °R·W±W€ r   c                 ó   — | j                   S r   r~   r   s    r   r�   z/Recompiler.collect_type_table.<locals>.<lambda>·   r‚   r   Ú_emit_bytecode_)Ú
_typesdictÚ	_generateÚsortedÚstrÚ
cffi_typesÚis_raw_functionr0   ÚappendÚargsÚ
isinstancer   ÚVoidTypeÚBasePrimitiveTypeÚPointerTypeÚStructOrUnionOrEnumÚFunctionPtrTypeÚis_array_typeÚlengthÚvaluesÚ_struct_unionsÚ_enumsÚStructOrUnionÚEnumTypeÚ	enumerateÚgetattrÚ	__class__r"   ÚCffiOpÚtuple)r   Ú	all_declsr€   Útp1ÚiÚmethodr8   s          r   Úcollect_type_tablezRecompiler.collect_type_tableŠ   s  € ØˆŒØ�‰�}Ô%ä˜4Ÿ?™?´Ô4ˆ	ð ˆŒØó 	.ˆBØ×!Ó!Ø—‘ rÑ*Ð2Ð2Ð2Ü&)¨$¯/©/Ó&:�—‘ Ñ#Ø—‘×&Ñ& rÔ*ØŸ7™7ò 0�CÜ% c¬E¯N©NÜ,1×,CÑ,CÜ,1×,=Ñ,=Ü,1×,EÑ,EÜ,1×,AÑ,Að	,Cô Dð Dð Dð
 —‘ sÑ+Ð3Ü/2°4·?±?Ó/C˜Ÿ™¨Ñ,Ø—O‘O×*Ñ*¨3Õ/ð0ð —‘×&Ñ& uÖ-ð	.ð" ò 	2ˆBØ×%Ó%¨$¯/©/¸"Ñ*=Ñ*EÜ&)¨$¯/©/Ó&:�—‘ Ñ#Ø—‘×&Ñ& rÔ*Ø×#Ó#¨¯	©	Ñ(=Ø—O‘O×*Ñ*¨5Õ1ð	2ð ˜4Ÿ?™?×1Ñ1Ó3Ñ3Ð3Ð3ð !ˆÔØˆŒØò 	'ˆBÜ˜"œe×1Ñ1Ô2Ø*.�×#Ñ# BÒ'Ü˜B¤§¡Õ/Ø"&�—‘˜B’ð		'ô
 œv d×&9Ñ&9Ù*<ô >ó ?ò 	(‰EˆAˆrà&'ˆD×Ñ Ò#ð	(ô œv d§k¡kÙ*<ô >ó ?ò 	 ‰EˆAˆràˆD�K‰K˜ŠOð	 ð
 ò 	,ˆBÜ˜TÐ#4°r·|±|×7LÑ7LÑ#LÓMˆFÙ�2�t—‘ rÑ*Õ+ð	,ð
 —/‘/ò 	*ˆBÜ˜b¤&Õ)Ð)Ð)ð	*ä §¡Ó0ˆ�r   c                 ó>   — | j                    }|j                  |«      S r   )rp   Ú
enumfields)r   r€   Úexpand_anonymous_struct_unions      r   Ú_enum_fieldszRecompiler._enum_fieldsÄ   s#   € ð -1×,AÑ,AÐ(AÐ%Ø�}‰}Ð:Ó;Ð;r   c                 óœ  — t        |t        j                  «      s)t        |t        «      r|D ]  }| j	                  |«       Œ y || j
                  vrûd | j
                  |<   t        |t        j                  «      r | j	                  |j                  «       «       y t        |t        j                  «      rn|j                  �a|| j                  j                  j                  vr>| j                  |«      D ])  \  }}}}| j	                  | j                  |||«      «       Œ+ y y y |j                  «       D ]  \  }}| j	                  |«       Œ y y r   )r�   r   ÚBaseTypeByIdentityrž   Ú_do_collect_typer…   r’   Úas_raw_functionr˜   Úfldtypesrn   Ú_parserÚ_included_declarationsr§   Ú_field_typeÚ
_get_items)r   r€   ÚxÚname1r    Ú_s         r   rª   zRecompiler._do_collect_typeÏ   s*  € Ü˜"œe×6Ñ6Ô7Ü˜"œeÔ$Øò -�AØ×)Ñ)¨!Õ,ð-àØ�T—_‘_Ñ$Ø"&ˆD�O‰O˜BÑÜ˜"œe×3Ñ3Ô4Ø×%Ñ% b×&8Ñ&8Ó&:Õ;Ü˜B¤× 3Ñ 3Ô4Ø—;‘;Ð*Ø $§(¡(×"2Ñ"2×"IÑ"IÑIØ,0×,=Ñ,=¸bÓ,Aò PÑ(˜˜s A qØ×-Ñ-¨d×.>Ñ.>¸rÀ5È#Ó.NÕOñPð Jð +ð
 ŸM™M›Oò -‘D�A�qØ×)Ñ)¨!Õ,ñ-ð %r   c                 ó„  — | j                   j                  j                  j                  «       }t	        |«      D ]A  \  }\  }}|j                  dd«      \  }}	 t        | d|›d|›�«      }	 || _	         |||«       ŒC y # t        $ r t        d|z  «      ‚w xY w# t        $ r}	t        j                  |	|«       ‚ d }	~	ww xY w)Nr.   r   Ú_generate_cpy_r³   z"not implemented in recompile(): %r)rn   r­   Ú_declarationsÚitemsr‡   Úsplitr›   ÚAttributeErrorr   Ú_current_qualsÚ	Exceptionr   Úattach_exception_info)
r   Ú	step_nameÚlstr   r€   ÚqualsÚkindÚrealnamer¢   Úes
             r   r†   zRecompiler._generateâ   sÓ   € Ø�h‰h×Ñ×,Ñ,×2Ñ2Ó4ˆÜ!'¨£ò 	ÑˆD‘+�2�uØ!ŸZ™Z¨¨QÓ/‰NˆD�(ðAÜ ¡ÂÙ@Ið(Kó L�ð
Ø&+�Ô#Ù�r˜8Õ$ñ	øô
 "ò AÜ'Ø8¸4Ñ?óAð AðAûô ò Ü×+Ñ+¨A¨tÔ4Øûðús$   ÁA?Á,BÁ?BÂ	B?Â#B:Â:B?)ÚglobalÚfieldÚstruct_unionÚenumÚtypenamec                 óZ  — i | _         | j                  D ]  }g | j                   |<   Œ t        «       | _        | j	                  d«       | j                  «        | j                  D ]A  }| j                   |   }|dk7  r|j                  d„ ¬«       t        |«      | j                   |<   ŒC | j                   d   }| j                  j                  «       D ]3  \  }}|t        |«      k  sJ ‚||   j                  |j                  k(  rŒ3J ‚ t        |«      t        | j                  «      k(  sJ ‚| j                   d   }| j                  j                  «       D ]3  \  }}|t        |«      k  sJ ‚||   j                  |j                  k(  rŒ3J ‚ t        |«      t        | j                  «      k(  sJ ‚y )NÚctxrÄ   c                 ó   — | j                   S r   r~   )Úentrys    r   r�   z0Recompiler.collect_step_tables.<locals>.<lambda>  s
   € ¨5¯:©:€ r   ry   rÅ   rÆ   )Ú_lstsÚ	ALL_STEPSÚsetÚ_seen_struct_unionsr†   Ú_add_missing_struct_unionsÚsortrž   r–   r·   r0   r   r—   )r   r½   r¾   r€   r¡   s        r   Úcollect_step_tableszRecompiler.collect_step_tables÷   s†  € àˆŒ
ØŸ™ò 	'ˆIØ$&ˆD�J‰J�yÒ!ð	'ä#&£5ˆÔ Ø�‰�uÔØ×'Ñ'Ô)àŸ™ò 	/ˆIØ—*‘*˜YÑ'ˆCØ˜GÒ#Ø—‘Ñ5�Ô6Ü$)¨#£JˆD�J‰J�yÒ!ð		/ð �j‰j˜Ñ(ˆØ×(Ñ(×.Ñ.Ó0ò 	*‰EˆB�Ø”s˜3“x’<Ð�<Ø�q‘6—;‘; "§'¡'Ó)Ð)Ð)ð	*ô �3‹xœ3˜t×2Ñ2Ó3Ò3Ð3Ð3à�j‰j˜Ñ ˆØ—[‘[×&Ñ&Ó(ò 	*‰EˆB�Ø”s˜3“x’<Ð�<Ø�q‘6—;‘; "§'¡'Ó)Ð)Ð)ð	*ô �3‹xœ3˜tŸ{™{Ó+Ò+Ð+Ñ+r   c                 ó@   — | j                   j                  |dz   «       y )Nú
)Ú_fÚwrite)r   Úwhats     r   Ú_prntzRecompiler._prnt  s   € Ø�‰�‰�d˜T‘kÕ"r   c                 ót   — | j                   r|�J ‚| j                  |«       y |€J ‚| j                  ||«       y r   )rp   Úwrite_py_source_to_fÚwrite_c_source_to_f)r   ÚfÚpreambles      r   Úwrite_source_to_fzRecompiler.write_source_to_f  sA   € Ø× Ò ØÐ#Ð#Ð#Ø×%Ñ% aÕ(àÐ'Ð'Ð'Ø×$Ñ$ Q¨Õ1r   c                 óÜ   — t        t        j                  j                  t        j                  j	                  t
        «      |«      d«      }|j                  «       }|j                  «        |S )NÚr)ÚopenÚosÚpathrN   ÚdirnameÚ__file__Ú	readlinesÚclose)r   ÚfilenameÚgÚliness       r   Ú_rel_readlineszRecompiler._rel_readlines!  sC   € Ü”—‘—‘œbŸg™gŸo™o¬hÓ7¸ÓBÀCÓHˆØ—‘“ˆØ	�‰Œ	Øˆr   c           	      óô  — || _         | j                  }| j                  j                  � |d«       t        s |d«       | j                  d«      }|j                  d«      }| j                  d«      |||dz     |dj                  |«      «       | j                  j                  d«      d	   }| j                  j                  �ñ |d
| j                  ›d�«        |d«       | j                  | j                  j                  «        |d«        |d«        |d|›�«        |d«        |d|›�«        |d«        |d|›�«        |d«       | j                  d«      }|j                  d«      }| j                  d«      |||dz     |dj                  |«      «       | j                  t        «        |d«        |«         ||«        |«         |d«        |«         |d«       t        | j                  j                  «       D ��cg c]	  \  }}||f‘Œ c}}«      }t!        | j"                  «      D ]=  \  }}	d}
||v rd||   j%                  «       z   }
 |d||	j'                  «       |
fz  «       Œ? | j"                  s |d«        |d«        |«        t)        «       | _        | j-                  d«       i }| j.                  D ]c  }| j0                  |   }t3        |«      ||<   ||   dkD  sŒ) |d |›d!|›d"�«       |D ]  } ||j'                  «       «       Œ  |d«        |«        Œe | j                  j4                  rf |d#«       | j                  j4                  D ].  }	 |j6                  d d$ \  }}|€t;        d(«      ‚ |d)|›d*�«       Œ0  |d+«        |d«        |«         |d,«        |d-«       | j.                  D ]!  }||   dkD  r |d.|z  «       Œ |d/|z  «       Œ# | j.                  D ]  }|d0k7  sŒ	 |d1||   |fz  «       Œ | j                  j4                  r	 |d2«       n |d3«        |d4t3        | j"                  «      fz  «       d}| j<                  dkD  s| j                  j                  �|dz  } |d5|z  «        |d«        |«         |d6«        |d7«        |d«        |«         |d«        |d8«        |d9|›d:�«        |d;«       |dz  r |d<«        |d=«        |d>«        |d?| j>                  z  «        |d@«        |dA«        |dB«        |d«        |dC«        |dD«        |dE«        |dF«        |dG|›dH�«        |dI«        |dJ|›dK�«        |dL«        |dL«        |d«        |d8«        |dM|›dN�«        |d;«        |dO| j                  | j>                  fz  «        |dC«        |d«        |d8«        |dP|›dN�«        |d;«        |dQ| j                  | j>                  fz  «        |dC«        |d«        |«         |d6«        |dR«        |d«       d | _        y c c}}w # t8        $ r t;        d%| j                  ›d&|›d'�«      ‚w xY w)SNz#define _CFFI_USE_EMBEDDINGz#define _CFFI_NO_LIMITED_APIz_cffi_include.hz#include "parse_c_type.h"
zparse_c_type.hr   r5   ú.éÿÿÿÿz#define _CFFI_MODULE_NAME  "ú"z1static const char _CFFI_PYTHON_STARTUP_CODE[] = {z0 };z#ifdef PYPY_VERSIONz3# define _CFFI_PYTHON_STARTUP_FUNC  _cffi_pypyinit_z#elif PY_MAJOR_VERSION >= 3z+# define _CFFI_PYTHON_STARTUP_FUNC  PyInit_ú#elsez(# define _CFFI_PYTHON_STARTUP_FUNC  initú#endifz_embedding.hz#include "_cffi_errors.h"
z_cffi_errors.hz>/************************************************************/zstatic void *_cffi_types[] = {z // z/* %2d */ %s,%sz  0z};Údeclr   zstatic const struct _cffi_z	_s _cffi_zs[] = {z.static const char * const _cffi_includes[] = {rY   úffi object ú
 includes ú8, but the latter has not been prepared with set_source()zMnot implemented yet: ffi.include() of a Python-based ffi inside a C-based ffiz  "z",z  NULLz?static const struct _cffi_type_context_s _cffi_type_context = {z  _cffi_types,z  _cffi_%ss,z  NULL,  /* no %ss */rÄ   z  %d,  /* num_%ss */z  _cffi_includes,z  NULL,  /* no includes */z  %d,  /* num_types */z  %d,  /* flags */z#ifdef __GNUC__z?#  pragma GCC visibility push(default)  /* for -fvisibility= */ÚPyMODINIT_FUNCÚ_cffi_pypyinit_z(const void *p[])ú{z%    if (((intptr_t)p[0]) >= 0x0A03) {zQ        _cffi_call_python_org = (void(*)(struct _cffi_externpy_s *, char *))p[1];z    }z    p[0] = (const void *)0x%x;z    p[1] = &_cffi_type_context;z#if PY_MAJOR_VERSION >= 3ú    return NULL;ú}z#  ifdef _MSC_VERz     PyMODINIT_FUNCz#  if PY_MAJOR_VERSION >= 3z     PyInit_z(void) { return NULL; }z#  elsez	     initz
(void) { }z#  endifÚPyInit_ú(void)z5  return _cffi_init("%s", 0x%x, &_cffi_type_context);Úinitz.  _cffi_init("%s", 0x%x, &_cffi_type_context);z#  pragma GCC visibility pop) rÕ   rØ   rn   Ú
_embeddingÚUSE_LIMITED_APIrë   ÚindexrN   ro   r¸   Ú_print_string_literal_in_arrayrv   ÚVERSION_EMBEDDEDÚdictr…   r·   rš   r‰   Ú_get_c_namer   rÎ   Ú_seen_constantsr†   rÍ   rÌ   r0   Ú_included_ffisÚ_assigned_sourcer¹   r   Ú_num_externpyrr   )r   rÜ   rÝ   Úprntrê   r¡   Úbase_module_namer€   Útypeindex2typer8   rD   Únumsr½   r¾   rË   Úffi_to_includeÚincluded_module_nameÚincluded_sourcerB   s                      r   rÛ   zRecompiler.write_c_source_to_f'  s‡  € ØˆŒØ�z‰zˆØ�8‰8×ÑÐ*ÙÐ.Ô/ÝÙÐ/Ô0ð ×#Ñ#Ð$5Ó6ˆØ�K‰KÐ5Ó6ˆØ×*Ñ*Ð+;Ó<ˆˆa��!‘ˆÙˆR�W‰W�U‹^Ôð  ×+Ñ+×1Ñ1°#Ó6°rÑ:ÐØ�8‰8×ÑÐ*Ú°d×6FÓ6FÐHÔIÙÐDÔEØ×/Ñ/°·±×0CÑ0CÔDÙ�ŒLÙÐ&Ô'ÚÙ ð#ô $áÐ.Ô/ÚÙ ð#ô $á�ŒMÚÙ ð#ô $á�ŒNØ×'Ñ'¨Ó7ˆEØ—‘Ð9Ó:ˆAØ×.Ñ.Ð/?Ó@ˆE�!�A�a‘CˆLÙ�—‘˜“Ô Ø×ÑÔ/Ô0ñ 	ÐMÔNÙŒÙˆXŒÙŒÙÐMÔNÙŒñ 	Ð-Ô.Ü°d·o±o×6KÑ6KÓ6M×N©7¨B°  2šwÓNÓOˆÜ˜tŸ™Ó/ò 	C‰EˆAˆrØˆGØ�NÑ"Ø  >°!Ñ#4×#@Ñ#@Ó#BÑB�ÙÐ" a¨¯©«¸Ð%AÑAÕBð		Cð
 �ŠÙ�ŒKÙˆTŒ
ÙŒô  #›uˆÔØ�‰�vÔð ˆØŸ™ò 		ˆIØ—*‘*˜YÑ'ˆCÜ! #›hˆD�‰OØ�I‰ Ó"ÚÚšyð*ô +à ò ,�EÙ˜Ÿ™Ó*Õ+ð,á�T”
Ù•ð		ð �8‰8×"Ò"ÙÐAÔBØ"&§(¡(×"9Ñ"9ò :�ð8à&×7Ñ7¸¸Ð;ñ :Ð(¨/ð #Ð*Ü+ð3ó4ð 4ò Ò"6Ð8Õ9ð:ñ �ŒNÙ�ŒJÙŒFñ 	ÐNÔOÙÐÔØŸ™ò 	:ˆIØ�I‰ Ò"Ù�^ iÑ/Õ0áÐ,¨yÑ8Õ9ð		:ð
 Ÿ™ò 	LˆIØ˜GÓ#ÙÐ+¨t°I©À	Ð.JÑJÕKð	Lð �8‰8×"Ò"ÙÐ$Õ%áÐ-Ô.ÙÐ%¬¨T¯_©_Ó)=Ð(?Ñ?Ô@ØˆØ×Ñ Ò! T§X¡X×%8Ñ%8Ð%DØ�Q‰JˆEÙÐ! EÑ)Ô*ÙˆTŒ
ÙŒñ 	ÐÔÙÐNÔOÙˆXŒÙŒÙÐ"Ô#ÙÐÔÚÒ5EÐGÔHÙˆSŒ	Ø�1Š9ÙÐ8Ô9Ùð Eô Fá�ŒMÙÐ-°·±Ñ=Ô>ÙÐ.Ô/ÙÐ(Ô)ÙÐÔ ÙˆXŒÙˆSŒ	ñ 	Ð Ô!ÙÐ"Ô#ÙÐ*Ô+ÚÒ8HÐJÔKÙˆYŒÚÒ(8Ð:Ô;ÙˆZÔÙˆZÔÙÐ*Ô+ÙÐÔÚÒ"2Ð4Ô5ÙˆSŒ	ÙÐDØ×Ñ˜dŸm™mðH-ñ -ô 	.áˆSŒ	ÙˆWŒÙÐÔÚÒ/Ð1Ô2ÙˆSŒ	ÙÐ=Ø×Ñ˜dŸm™mðA-ñ -ô 	.áˆSŒ	ÙˆXŒÙŒÙÐÔÙÐ+Ô,ÙˆXŒØˆ�ùów OøôH &ò 8Ý+ð !ŸH›H¢nð7ó8ð 8ð8ús   ÈY
Í&YÙ&Y7c                 ó(  — t        |t        «      rd|›d�S t        |t        t        f«      rR|D �cg c]  }| j	                  |«      ‘Œ }}t        |«      dk(  r|j                  d«       ddj                  |«      ›d�S |j                  «       S c c}w )Nr6   r7   r   r5   ú(rJ   rK   )	r�   rˆ   Úlistrž   Ú_to_pyr0   r‹   rN   r    )r   r±   ÚitemÚreps       r   r  zRecompiler._to_pyÔ  sz   € Ü�aœÕÚ�>Ð!Ü�aœ$¤˜Ô'Ø12Ö3¨�4—;‘;˜tÕ$Ð3ˆCÐ3Ü�3‹x˜1Š}Ø—
‘
˜2”øØ ŸX™X c�]Ð,Ð,Ø×ÑÓ!Ð!ùò	 4s   ±Bc           
      ó’  — || _         | j                  } |d«        |d«       t        | j                  j                  xs d«      }t        |«      D ]H  }| j                  j                  |   }	 |j                  d d \  }}|�t        d«      ‚ |d	||fz  «       ŒJ  |«         |d
| j                  ›d�«        |d| j                  fz  «       d | _
        t        | j                  «      | _        | j                  D �cg c]  }|j                  «       ‘Œ }	} |d| j                  dj                  |	«      «      ›d�«       t!        | j"                  j%                  «       D �
�cg c]	  \  }
}||
f‘Œ c}}
«      }| j&                  D ]D  }| j(                  |   }t        |«      dkD  sŒ!|dk7  sŒ' |d|›d| j                  |«      ›d�«       ŒF |dkD  r5 |ddj                  t        |«      D �cg c]  }d|z  ‘Œ	 c}«      ›d�«        |d«       y # t        $ r t        d| j                  ›d|›d�«      ‚w xY wc c}w c c}}
w c c}w )Nz# auto-generated filezimport _cffi_backendr%   rY   ró   rô   rõ   zMnot implemented yet: ffi.include() of a C-based ffi inside a Python-based ffizfrom %s import ffi as _ffi%dzffi = _cffi_backend.FFI('rI   z    _version = 0x%x,z    _types = r5   rJ   r   rÄ   z    _zs = z    _includes = (r   z_ffi%dz,),rK   )rÕ   rØ   r0   rn   r  Úranger  r¹   r   ro   rr   rž   r‰   r   r  rN   r  r…   r·   rÍ   rÌ   )r   rÜ   r	  Únum_includesr¡   r  r  r  r8   Ú	types_lstr€   r  r½   r¾   s                 r   rÚ   zRecompiler.write_py_source_to_fÞ  s3  € ØˆŒØ�z‰zˆñ 	Ð$Ô%ÙÐ#Ô$ô ˜4Ÿ8™8×2Ñ2Ò8°bÓ9ˆÜ�|Ó$ò 	MˆAØ!ŸX™X×4Ñ4°QÑ7ˆNð4à"×3Ñ3°B°QÐ7ñ 6Ð$ oð Ð*Ü'ð4ó5ð 5ñ Ð/Ð3GÈÐ2KÑKÕLð	Mñ 	ŒÚ°×0@Ó0@ÐBÔCÙÐ# t§}¡}Ð&6Ñ6Ô7ØˆŒô   §¡Ó0ˆŒØ48·O±OÖD¨b�R×'Ñ'Õ)ÐDˆ	ÐDÚ 4§;¡;¨r¯w©w°yÓ/AÕ#BÐDÔEÜ°d·o±o×6KÑ6KÓ6M×N©7¨B°  2šwÓNÓOˆð Ÿ™ò 	GˆIØ—*‘*˜YÑ'ˆCÜ�3‹x˜!‹| 	¨WÓ 4Úª°D·K±KÀÕ4DÐEÕFð	Gð ˜!ÒÚØ—	‘	´°|Ó1DÖE¨A˜8 a›<ÒEÕFðIô Jñ 	ˆS�	øôC "ò 4Ý'ð Ÿ›¢.ð3ó4ð 4ð4üò" EùãNùò Fs   Á/HÃ?H9Å$H>
Ç-IÈ&H6c                 ó    — | j                   |   S r   )r…   )r   Útypes     r   Ú_gettypenumzRecompiler._gettypenum  s   € à�‰˜tÑ$Ð$r   c           
      óN  — d}t        |t        j                  «      rÀ|j                  «       s°|j	                  «       r!|j
                  dk7  rd}d|j
                  z  }n|t        |t        j                  «      rd|j                  d«      ›d�}nL|j                  d«      }d|›d|j
                  j                  dd	«      ›�}|d
v r| j                  t        «       d}nît        |t        j                  «      r| j                  ||||«       y t        |t        j                  «      st        |t        j                  «      r;| j                  d|| j                  |«      |fz  «       | j                  d|z  «       y t        |t        j                   «      r+d|j                  d«      z  }d| j                  |«      z  }d}nt#        |«      ‚| j                  d|›d|›d|›|›d�«       | j                  d|›d|j                  d«      ›d|›d�«       | j                  d|z  «       y )Nr5   Ú_BoolÚ_cffi_to_c_intz, %sr  z)_cffi_to_c_doublez)_cffi_to_c_r.   r³   ©Úchar16_tÚchar32_tz-1z6  if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)z    %s;z(%s)_cffi_to_c_pointerz, _cffi_type(%d)ÚNULLú  z = ú);z  if (z == (rK   z && PyErr_Occurred()))r�   r   r�   Úis_complex_typeÚis_integer_typer   ÚUnknownFloatTypeÚ
get_c_nameÚreplacerv   ÚVERSION_CHAR16CHAR32r�   Ú"_convert_funcarg_to_c_ptr_or_arrayr‘   rØ   r  r’   r3   )	r   r€   ÚfromvarÚtovarÚerrcodeÚextraargÚ	converterÚcnameÚerrvalues	            r   Ú_convert_funcarg_to_cz Recompiler._convert_funcarg_to_c  sÓ  € ØˆÜ�bœ%×1Ñ1Ô2¸2×;MÑ;MÔ;OØ×!Ñ!Ô#¨¯©°7Ò(:Ø,�	Ø! B§G¡GÑ+‘Ü˜B¤× 6Ñ 6Õ7ð 8:·}±}ÀRÕ7HÐJ‘	àŸ™ bÓ)‘Ú38Ø35·7±7·?±?À3ÈÔ3LðN�	àÐ4Ñ4Ø×&Ñ&Ô';Ô<Ø‰Hä˜œE×-Ñ-Ô.Ø×3Ñ3°B¸Ø49¸7ôDàä˜œU×6Ñ6Ô7Ü˜œU×4Ñ4Ô5ð �J‰JÐOØ × 0Ñ 0°Ó 4°gÐ>ñ?ô @à�J‰J�y 7Ñ*Ô+Øä˜œE×1Ñ1Ô2Ø0°2·=±=ÀÓ3DÑDˆIØ)¨D×,<Ñ,<¸RÓ,@Ñ@ˆHØ‰Hô & bÓ)Ð)à�
Š
ª²	¹7ÂHÐMÔNØ�
Š
Ú�2—=‘= Õ$¢hð0ô 	1à�
‰
�9˜wÑ&Õ'r   c                 ó    — t        |t        j                  «      r4|j                  d«       |j                  d«       |j                  d«       y y )NzPy_ssize_t datasizez-struct _cffi_freeme_s *large_args_free = NULLzIif (large_args_free != NULL) _cffi_free_array_arguments(large_args_free);)r�   r   r�   Úadd)r   r€   Ú	localvarsÚ	freeliness       r   Ú_extra_local_variablesz!Recompiler._extra_local_variablesC  sD   € Ü�bœ%×+Ñ+Ô,Ø�M‰MÐ/Ô0Ø�M‰MÐIÔJØ�M‰Mð Jõ Kð -r   c                 óš  — | j                  d«       | j                  d| j                  |«      ||fz  «       | j                  d«       | j                  d|›d|j                  d«      ›d�«       | j                  d| j                  |«      ||fz  «       | j                  d	«       | j                  d
|z  «       | j                  d«       y )Nz1  datasize = _cffi_prepare_pointer_call_argument(z(      _cffi_type(%d), %s, (char **)&%s);z  if (datasize != 0) {z    z  = ((size_t)datasize) <= 640 ? (r5   z!)alloca((size_t)datasize) : NULL;zF    if (_cffi_convert_array_argument(_cffi_type(%d), %s, (char **)&%s,z,            datasize, &large_args_free) < 0)z	      %s;z  })rØ   r  r)  )r   r€   r-  r.  r/  s        r   r,  z-Recompiler._convert_funcarg_to_c_ptr_or_arrayJ  sÀ   € Ø�
‰
ÐFÔGØ�
‰
Ð=Ø×Ñ˜RÓ  '¨5ðA2ñ 2ô 	3à�
‰
Ð+Ô,Ø�
Š
â�2—=‘= Õ$ð&ô 	'ð 	�
‰
ð #Ø&*×&6Ñ&6°rÓ&:¸GÀUÐ%KñLô 	Mà�
‰
ÐAÔBØ�
‰
�; Ñ(Ô)Ø�
‰
�5Õr   c                 ó  — t        |t        j                  «      rÅ|j                  «       r"|j                  dk7  rd|›d|j                  ›d�S t        |t        j
                  «      rd|›d�S |j                  dk7  rN|j                  «       s>|j                  j                  dd«      }|d	v r| j                  t        «       d
|›d|›d�S d|| j                  |«      fz  S t        |t        j                  t        j                  f«      rd|| j                  |«      fz  S t        |t        j                  «      r3d|| j                  t        j                  |j                  «      «      fz  S t        |t        j                  «      rB|j                   € t#        d|j%                  «       ›d|›d�«      ‚d|| j                  |«      fz  S t        |t        j&                  «      rd|| j                  |«      fz  S t)        |«      ‚)Nr  z_cffi_from_c_int(r   rK   z_cffi_from_c_double(úlong doubler.   r³   r   Ú_cffi_from_c_r  z/_cffi_from_c_deref((char *)&%s, _cffi_type(%d))z0_cffi_from_c_pointer((char *)%s, _cffi_type(%d))r7   z' is used as z, but is opaquez0_cffi_from_c_struct((char *)&%s, _cffi_type(%d)))r�   r   r�   r'  r   r(  r&  r*  rv   r+  r  r�   r’   Ú	ArrayTyper  r˜   ÚfldnamesÚ	TypeErrorr  r™   r3   )r   r€   ÚvarÚcontextr2  s        r   Ú_convert_expr_from_czRecompiler._convert_expr_from_cX  sÝ  € Ü�bœ%×1Ñ1Ô2Ø×!Ñ!Ô#¨¯©°7Ó(:Ú58¸"¿'»'ÐBÐBÜ˜B¤× 6Ñ 6Õ7Ú47Ð9Ð9Ø—‘˜MÒ)°"×2DÑ2DÔ2FØŸ™Ÿ™¨¨SÓ1�ØÐ4Ñ4Ø×&Ñ&Ô';Ô<øÚ05²sÐ;Ð;àHØ˜×)Ñ)¨"Ó-ðL/ñ /ð /ä˜œU×.Ñ.´×0EÑ0EÐFÔGØEØ�T×%Ñ% bÓ)ðI+ñ +ð +ä˜œEŸO™OÔ,ØEØ�T×%Ñ%¤e×&7Ñ&7¸¿¹Ó&@ÓAðICñ Cð Cä˜œE×/Ñ/Ô0Ø�{‰{Ð"ÝØ—N‘NÕ$¢gð!/ó 0ð 0àEØ�T×%Ñ% bÓ)ðI+ñ +ð +ä˜œEŸN™NÔ+ØDØ�T×%Ñ% bÓ)ðH+ñ +ð +ô & bÓ)Ð)r   c                 ó.   — | j                  |d|›d�«      S )Nz(*(z *)0))Ú_global_type©r   r€   r   s      r   Ú_typedef_typezRecompiler._typedef_type{  s   € Ø× Ñ ¡²TÐ%;Ó<Ð<r   c                 óF   — | j                  | j                  ||«      «       y r   )rª   rG  rF  s      r   Ú!_generate_cpy_typedef_collecttypez,Recompiler._generate_cpy_typedef_collecttype~  s   € Ø×Ñ˜d×0Ñ0°°TÓ:Õ;r   c                  ó   — y r   r%   rF  s      r   Ú_generate_cpy_typedef_declz%Recompiler._generate_cpy_typedef_decl�  ó   € Ør   c                 ór   — | j                   |   }| j                  d   j                  t        ||«      «       y )NrÇ   )r…   rÌ   r‹   rf   )r   r€   r   rA   s       r   Ú_typedef_ctxzRecompiler._typedef_ctx„  s.   € Ø—_‘_ RÑ(ˆ
Ø�
‰
�:Ñ×%Ñ%¤l°4¸Ó&DÕEr   c                 óZ  — | j                  ||«      }| j                  ||«       t        |dd «      dk(  r| j                  ||j                  d ¬«       y t        |t        j                  «      r>| j                  |j                  |j                  j                  |j                  |¬«       y y )NÚoriginÚunknown_type)Ú
approxname)rR  Ú	named_ptr)	rG  rN  r›   Ú_struct_ctxr   r�   r   ÚNamedPointerTypeÚtotyperF  s      r   Ú_generate_cpy_typedef_ctxz$Recompiler._generate_cpy_typedef_ctxˆ  s�   € Ø×Ñ  DÓ)ˆØ×Ñ˜"˜dÔ#Ü�2�x Ó&¨.Ò8Ø×Ñ˜R §¡°TÐÕ:Ü˜œE×2Ñ2Ô3Ø×Ñ˜RŸY™Y¨¯	©	¯©À2Ç7Á7Ø')ð õ +ð 4r   c                 ó˜   — | j                  |j                  «       «       |j                  r| j                  s| j                  |«       y y y r   )rª   r«   Úellipsisrp   rF  s      r   Ú"_generate_cpy_function_collecttypez-Recompiler._generate_cpy_function_collecttype”  s=   € Ø×Ñ˜b×0Ñ0Ó2Ô3Ø�;Š;˜t×4Ò4Ø×!Ñ! "Õ%ð  5ˆ;r   c                 ó  — | j                   rJ ‚t        |t        j                  «      sJ ‚|j                  r| j                  ||«       y | j                  }t        |j                  «      }|dk(  rd}n
|dk(  rd}nd}g }g }d|z  }t        |j                  «      D ]=  \  }	}
|j                  |
j                  d|	z  |«      «       |j                  d|	z  «       Œ? d	j                  |«      }|xs d
}|j                  r|j                  dz   }nd}|›d|›d|›d�} |d|j                  j                  |«      ›�«        |d«       d	j                  |«      }d}t        |j                  t        j                  «      rd} |d|›|›d|›d�«        |d«        |d«        |d«        |d|›d|›d�«        |d«       d|z  }t        |j                  «      D ]%  \  }	}
|
j                  d|	z  |«      } |d|z  «       Œ' t!        «       }t!        «       }|j                  D ]  }
| j#                  |
||«       Œ t%        |«      D ]  } |d|›d�«       Œ t        |j                  t        j                  «      s7d}d|z  }d|j                  j                  d|«      z  } ||«        |d«       nd }d}t        |j                  «      dkD  r€t'        t        |j                  «      «      }|D ]  }	 |d |	z  «       Œ  |«         |d!|t        |«      t        |«      d	j                  |D �	cg c]  }	d"|	z  ‘Œ	 c}	«      fz  «        |d#«        |«        t        |j                  «      D ]&  \  }	}
| j)                  |
d$|	z  d|	z  d%«        |«        Œ(  |d&«        |d'«       t'        t        |j                  «      «      D �	cg c]  }	d|	z  ‘Œ	 }}	d	j                  |«      } |d(|›|›d|›d)�«        |d*«        |d+«        |«         |d,«       |dk(  r |d-«       |rA |d.| j+                  |j                  d/d0«      z  «       |D ]  } |d|z   «       Œ  |d1«       n"|D ]  } |d|z   «       Œ  |d2«        |d3«        |d«        |d4«       d5„ }d6}g }g }d|z  }t        |j                  «      D ]Q  \  }	}
d} ||
«      rd7}d8}|
j                  d9||	fz  |«      }|j                  |«       |j                  d:||	fz  «       ŒS |j                  } ||«      r?d|z  }|j                  d;|«      }|j-                  d|«       t        j.                  }d }d<}d8}|rƒd	j                  |«      }|xs d
}|›d|›d|›d�} |d|j                  |«      ›�«        |d«       |r ||«       d	j                  |«      } |d(|›|›d|›d)�«       |r |d=«        |d«       n |d>|›d?|›�«        |d@«        |«        y c c}	w c c}	w )ANr   Únoargr   Úarg0rŒ   úargument of %sz x%dzx%dr   Úvoidr.   r5   Ú_cffi_d_r  rK   ústatic rø   zreturn r$  r%  rú   z#ifndef PYPY_VERSIONzstatic PyObject *Ú_cffi_f_z(PyObject *self, PyObject *z  %s;ú;z	result = úresult of %sz resultz  PyObject *pyresult;z  PyObject *arg%d;z1  if (!PyArg_UnpackTuple(args, "%s", %d, %d, %s))z&arg%drù   zarg%dzreturn NULLz  Py_BEGIN_ALLOW_THREADSz  _cffi_restore_errno();ú  { z); }z  _cffi_save_errno();z  Py_END_ALLOW_THREADSz  (void)self; /* unused */z  (void)noarg; /* unused */z  pyresult = %s;Úresultzresult typez  return pyresult;z  Py_INCREF(Py_None);z  return Py_None;rð   c                 ó’   — t        | t        j                  «      xs, t        | t        j                  «      xr | j	                  «       S r   )r�   r   r˜   ÚPrimitiveTyper&  )r  s    r   Úneed_indirectionz@Recompiler._generate_cpy_function_decl.<locals>.need_indirection  s=   € Ü˜t¤U×%8Ñ%8Ó9ò -Ü ¤e×&9Ñ&9Ó:ò ,Ø×)Ñ)Ó+ð.r   Fr   Tz %sx%dz%sx%dz *resultz
*result = z  return result;z#  define _cffi_f_z	 _cffi_d_rñ   )rp   r�   r   r’   rY  Ú_generate_cpy_constant_declrØ   r0   rŒ   rš   r‹   r)  rN   Úabirf  rŽ   rÎ   r9  r‡   r  r4  rC  ÚinsertÚ	void_type)r   r€   r   r	  ÚnumargsÚargnameÚ	argumentsÚcall_argumentsrB  r¡   r  Úrepr_argumentsrk  Úname_and_argumentsÚresult_codeÚargr7  r8  rò   Úresult_declÚrngÚfreelineri  Ú
differenceÚindirectionÚ	tp_results                             r   Ú_generate_cpy_function_declz&Recompiler._generate_cpy_function_decl™  s  € Ø×(Ò(Ð(Ð(Ü˜"œe×3Ñ3Ô4Ð4Ð4Ø�;Š;ð ×,Ñ,¨R°Ô6ØØ�z‰zˆÜ�b—g‘g“,ˆØ�aŠ<Ø‰GØ˜Š\Ø‰GàˆGð ˆ	ØˆØ" TÑ)ˆÜ  §¡Ó)ò 	-‰GˆAˆtØ×Ñ˜TŸ_™_¨V°a©Z¸ÓAÔBØ×!Ñ! %¨!¡)Õ,ð	-ð Ÿ™ 9Ó-ˆØ'Ò1¨6ˆØ�6Š6Ø—&‘&˜3‘,‰CàˆCÚ36ººnÐMÐÚ˜BŸI™I×0Ñ0Ð1CÔDÐFÔGÙˆSŒ	ØŸ™ >Ó2ˆØˆÜ�b—i‘i¤§¡Ô0ØˆKÚ™kª4²Ð@ÔAÙˆSŒ	áÐ#Ô$áÐ Ô!Úº4ÂÐIÔJÙˆSŒ	à" TÑ)ˆÜ  §¡Ó)ò 	 ‰GˆAˆtØ—/‘/ &¨1¡*¨gÓ6ˆCÙ�˜3‘Õð	 ô “Eˆ	Ü“Eˆ	Ø—G‘Gò 	DˆDØ×'Ñ'¨¨i¸ÕCð	Dä˜9Ó%ò 	$ˆDÚšDÐ"Õ#ð	$ô ˜"Ÿ)™)¤U§^¡^Ô4Ø%ˆKØ$ tÑ+ˆGØ! B§I¡I×$8Ñ$8¸ÀGÓ$LÑLˆKÙ�ÔÙÐ(Õ)àˆKØˆKäˆr�w‰w‹<˜!ÒÜœ˜BŸG™G›Ó%ˆCØò /�ÙÐ)¨AÑ-Õ.ð/áŒFÙÐDØ”c˜#“h¤ C£Ø—	‘	°Ö5¨A˜8 a›<Ò5Ó6ðH8ñ 8ô 9ñ Ð#Ô$ÙŒä  §¡Ó)ò 	‰GˆAˆtØ×&Ñ& t¨W°q©[¸%À!¹)Ø'4ô6á�Fð	ñ
 	Ð'Ô(ÙÐ'Ô(Ü-2´3°r·w±w³<Ó-@ÖA¨˜% !›)ÐAˆÐAØŸ™ >Ó2ˆÚ¡+ªt²^ÐDÔEÙÐ$Ô%ÙÐ%Ô&ÙŒáÐ)Ô*Ø�aŠ<ÙÐ.Ô/ÙÙÐ#Ø×*Ñ*¨2¯9©9°hÀÓNñOô Pà%ò &�Ù�T˜H‘_Õ%ð&áÐ%Õ&à%ò &�Ù�T˜H‘_Õ%ð&áÐ(Ô)ÙÐ$Ô%ÙˆSŒ	áˆWŒò	.ð ˆ
Øˆ	ØˆØ" TÑ)ˆÜ  §¡Ó)ò 	>‰GˆAˆtØˆKÙ Ô%Ø!�Ø!�
Ø—/‘/ (¨k¸1Ð-=Ñ"=¸wÓGˆCØ×Ñ˜SÔ!Ø×!Ñ! '¨[¸!Ð,<Ñ"<Õ=ð	>ð —I‘Iˆ	Ù˜IÔ&Ø$ tÑ+ˆGØ×&Ñ& z°7Ó;ˆCØ×Ñ˜Q Ô$ÜŸ™ˆIØˆKØ&ˆKØˆJÙØ!ŸY™Y yÓ1ˆNØ+Ò5¨vˆNÚ7:ºDÚ7Eð"GÐâ 	× 4Ñ 4Ð5GÔ HÐJÔKÙ�ŒIÙÙ�[Ô!Ø!ŸY™Y ~Ó6ˆNÚ¡k²4ºÐHÔIÙÙÐ'Ô(Ù��Iâ²d¹DÐAÔBáˆXŒÙ�ùòg 6ùò Bs   Ì+X ÏXc           
      ó–  — |j                   r| j                  s| j                  ||«       y | j                  |j	                  «          }t        |j                  «      }| j                  rt        }n|dk(  rt        }n|dk(  rt        }nt        }| j                  d   j                  t        |d|z  t        ||«      d|z  ¬«      «       y )Nr   r   rÃ   z
_cffi_f_%sz
_cffi_d_%s)r   )rY  rp   Ú_generate_cpy_constant_ctxr…   r«   r0   rŒ   ÚOP_DLOPEN_FUNCÚOP_CPYTHON_BLTN_NÚOP_CPYTHON_BLTN_OÚOP_CPYTHON_BLTN_VrÌ   r‹   r   r�   )r   r€   r   rA   rn  Ú	meth_kinds         r   Ú_generate_cpy_function_ctxz%Recompiler._generate_cpy_function_ctx;  s­   € Ø�;Š;˜t×4Ò4Ø×+Ñ+¨B°Ô5ØØ—_‘_ R×%7Ñ%7Ó%9Ñ:ˆ
Ü�b—g‘g“,ˆØ× Ò Ü&‰IØ˜Š\Ü)‰IØ˜Š\Ü)‰Iä)ˆIØ�
‰
�8Ñ×#Ñ#Ü�t˜\¨DÑ0Ü˜i¨Ó4Ø(¨4Ñ/ô1õ	2r   c                 óü   — t        |t        j                  «      ra|j                  }|dk(  r|j	                  d«      }d|›d|›d�}| j                  |d|z  |j                  «      }t        j                  ||«      }|S )Nú...r   z_cffi_array_len(((ú)0)->rK   ú%s[0])r�   r   r>  r”   r)  r¯   r  )r   Ú	tp_structÚ
field_nameÚtp_fieldÚactual_lengthÚptr_struct_nameÚtp_items          r   r¯   zRecompiler._field_typeQ  sr   € Ü�h¤§¡Ô0Ø$ŸO™OˆMØ Ò%Ø"+×"6Ñ"6°sÓ";‘â#¢Zð!1�à×&Ñ& y°'¸JÑ2FØ'/§}¡}ó6ˆGä—‘ w°Ó>ˆHØˆr   c                 óŒ   — | j                  |«       | j                  r'|j                  «       D ]  }| j                  |«       Œ y y r   )rª   rp   Úanonymous_struct_fieldsÚ_struct_collecttype)r   r€   Úfldtypes      r   r‘  zRecompiler._struct_collecttype]  sD   € Ø×Ñ˜bÔ!Ø× Ò à×5Ñ5Ó7ò 2�Ø×(Ñ(¨Õ1ñ2ð !r   c           
      ó  — |j                   €y | j                  }d|›�} |d«        |d|›d|›d�«        |d«        |d«        |d«       | j                  |«      D ]Ö  \  }}}}		 |j                  «       s|d	k\  r|d
k7  r |d|›d|›d|›d�«       Œ6t	        |t
        j                  «      rc|j                  �|j                  dk(  rH|j                  }|dz   }t	        |t
        j                  «      r|j                  €Œ8|j                  dk(  rŒH |d|j                  dd|z  |	¬«      ›d|›d�«       ŒØ  |d«        |d|›d|›d�«        |«        y # t        $ r}
 |dt        |
«      z  «       Y d }
~
�Œd }
~
ww xY w)NÚ_cffi_checkfld_Ú_CFFI_UNUSED_FNzstatic void r  z *p)rø   z8  /* only to generate compile-time warnings or errors */z
  (void)p;r   r5   z  (void)((p->z) | 0);  /* check that 'rí   z' is an integer */r†  z[0]re  z*tmpzfield %r©r¿   z = &p->z; (void)tmp; }z
  /* %s */rú   zstruct _cffi_align_z { char x; z y; };)r¬   rØ   r§   r'  r�   r   r>  r”   r  r)  r   rˆ   )r   r€   r2  rR  r	  ÚcheckfuncnameÚfnameÚftyper+   ÚfqualrÂ   s              r   Ú_struct_declzRecompiler._struct_decld  sq  € Ø�;‰;ÐØØ�z‰z‰Ù/9Ð;ˆÙÐÔÚª²uÐ=Ô>ÙˆSŒ	ÙÐGÔHÙˆ\ÔØ-1×->Ñ->¸rÓ-Bò 	,Ñ)ˆE�5˜( Eð,Ø×(Ñ(Ô*¨h¸!ªmà ’{ÚÚ05²uºeðEô Fàô " %¬¯©Ô9Ø!ŸL™LÐ0°E·L±LÀEÒ4IØ!ŸJ™J�EØ! E™M�Eô " %¬¯©Ô9Ø!ŸL™LÑ0°E·L±LÀEÓ4Iò Ø×$Ñ$ V¨Z¸Ñ-=ÀUÐ$ÕKÚðõ ð	,ñ( 	ˆSŒ	Úº:ÂuÐMÔNÙ�øô	 %ò ,Ù�\¤C¨£FÑ*×+Ò+ûð,ús+   Á(,EÂA,EÄEÄ$EÅ	E?Å E:Å:E?Nc                 óž  — | j                   |   }d }g }t        |t        j                  «      r|j	                  d«       |j
                  €|j	                  d«       d}|| j                  j                  j                  vr°|�"|| j                  j                  j                  vrŒ|j
                  €n7|j                  st        |j                  «       «      rn|j	                  d«       |j                  rO|j                  dkD  rt        |›d|j                  ›d�«      ‚|j	                  d«       n|j	                  d	«       d
}dj                  |«      xs d}g }|�€–t        | j!                  |«      «      }	|	D �]  \  }
}}}| j#                  ||
|«      }| j%                  |d|j&                  ›d|
›d�«       t(        }|dk\  rt*        }d|z  }nQ|�&t        |t        j,                  «      r|j.                  €d}n&d|€|j1                  d«      n|j&                  ›d|
›d�}|�|dk\  rd}n.|�d|j&                  ›d|
›d�}nd|j1                  d«      ›d|
›d�}|j	                  t3        |
|||t5        || j                   |   «      «      «       �Œ t7        | j8                  d   «      }| j8                  d   j;                  |«       |€d}d}d }n,|�d!|j&                  ›d"�}d#}nd$|›d�}d%|›d&�}d }nd}d'}d'}|}| j8                  d(   j	                  t=        |j&                  |||||||«      «       | j>                  jA                  |«       y ))NÚ_CFFI_F_UNIONÚ_CFFI_F_OPAQUEÚopaqueÚ_CFFI_F_CHECK_FIELDSr   z is declared with 'pack=zi'; only 0 or 1 are supported in API mode (try to use "...;", which does not require a 'pack' declaration)Ú_CFFI_F_PACKEDÚ_CFFI_F_EXTERNALÚexternalú|Ú0zfield 'rí   r7   r   z%d /* bits */z
(size_t)-1z	sizeof(((r   r‡  rK   z((char *)&((z)4096)->z) - (char *)4096z	offsetof(r5   r   rÄ   z
(size_t)-2éþÿÿÿÚunnamedz	sizeof(*(z)0)z-1 /* unknown alignment */zsizeof(zoffsetof(struct _cffi_align_z, y)rî   rÅ   )!r…   r�   r   Ú	UnionTyper‹   r¬   rn   r­   r®   ÚpartialÚanyr�  Úpackedr3   rN   r  r§   r¯   Ú_check_not_opaquer   r9   r:   r>  r”   r)  r'   r�   r0   rÌ   Úextendr?   rÏ   r6  )r   r€   r2  rR  rS  rA   Úreason_for_not_expandingrB   rF   r¥   Úfldnamer’  r+   rš  r8   r   ÚoffsetrE   ÚalignrD   s                       r   rT  zRecompiler._struct_ctx†  s9  € Ø—_‘_ RÑ(ˆ
Ø#'Ð ØˆÜ�bœ%Ÿ/™/Ô*Ø�L‰L˜Ô)Ø�;‰;ÐØ�L‰LÐ)Ô*Ø'/Ð$Ø�d—h‘h×&Ñ&×=Ñ=Ñ=ØÐ"Ø $§(¡(×"2Ñ"2×"IÑ"IÑIØ�{‰{Ð"ØØ—’œs 2×#=Ñ#=Ó#?Ô@Øà—‘Ð3Ô4Ø�yŠyØ—9‘9˜q’=Ü-ò ˜RŸY›Yð(ó)ð )ð
 —‘Ð-Õ.à�L‰LÐ+Ô,Ø'1Ð$Ø—‘˜“Ò& 3ˆØˆØ#Ñ+Ü˜d×/Ñ/°Ó3Ó4ˆJØ5?ó EÑ1�˜ (¨EØ×*Ñ*¨2¨w¸Ó@�Ø×&Ñ&¡wØ:<¿'»'Â7Ð'KôMô �Ø˜q’=Ü$�BØ*¨XÑ5‘DØ�]Ü" 7¬E¯O©OÔ<ØŸ™Ð.Ø'‘Døð /8Ð.?˜Ÿ™ cÔ*Ø09·±ñ?âð!�Dð �= H°¢MØ)‘FØÑ*à!Ÿ›ªð1‘Fð +ð 46·=±=ÀÕ3DÂgÐN�FØ—‘Ü˜g v¨t°XÜ$ R¨¯©¸Ñ)AÓBóDöEð3Eô8 !$ D§J¡J¨wÑ$7Ó 8ÐØ�J‰J�wÑ×&Ñ& xÔ0àˆ}Ø#�Ø�Ø#‘àÑ(Ø/8¯~«~Ð?�DØ8‘Eð )ò ,1Ð2‘DÚDNÐP�EØ‘àˆDØˆEØ "ÐØ.ˆGØ�
‰
�>Ñ"×)Ñ)Ü˜BŸG™G Z°¸¸eÀWØ-¨xó9ô	:ð 	× Ñ ×$Ñ$ RÕ(r   c                 óð   — t        |t        j                  «      r'|j                  }t        |t        j                  «      rŒ't        |t        j                  «      r|j
                  €t        d|z  «      ‚y y )Nz0%s is of an opaque type (not declared in cdef()))r�   r   r>  r  r˜   r¬   r@  )r   r€   Úlocations      r   r¬  zRecompiler._check_not_opaqueÜ  sb   € Ü˜œUŸ_™_Ô-Ø—‘ˆBô ˜œUŸ_™_Õ-ä�bœ%×-Ñ-Ô.°2·;±;Ð3FÜØBÀXÑMóOð Oð 4GÐ.r   c                 ó  — t        | j                  j                  «       «      }|j                  d„ ¬«       |D ]Ë  \  }}|| j                  vsŒ|j
                  rt        d|›d�«      ‚|j                  j                  d«      r-|j                  dd  j                  «       r|j                  dd  }nA|j                  dk(  r$|j                  dk(  rd}| j                  |d«       nt        d|›�«      ‚| j                  |d |«       ŒÍ y )	Nc                 ó   — | d   S )Nr   r%   )Útp_orders    r   r�   z7Recompiler._add_missing_struct_unions.<locals>.<lambda>é  s
   €  h¨q¡k€ r   ry   zinternal inconsistency: z* is partial but was not seen at this pointú$r   Ú_IO_FILEÚFILE)r  r–   r·   rÑ   rÏ   r©  r3   r   Ú
startswithÚisdigitÚ	forcenamerN  rT  )r   r¾   r€   ÚorderrR  s        r   rÐ   z%Recompiler._add_missing_struct_unionsã  s÷   € ô
 �4×&Ñ&×,Ñ,Ó.Ó/ˆØ�‰Ñ1ˆÔ2Øò 	7‰IˆB�Ø˜×1Ñ1Ò1Ø—:’:Ý-â>@ð/Có Dð Dð —7‘7×%Ñ% cÔ*¨r¯w©w°q°r¨{×/BÑ/BÔ/DØ!#§¡¨¨ ‘JØ—W‘W 
Ò*¨r¯|©|¸vÒ/EØ!'�JØ×%Ñ% b¨&Õ1å-Ù/1ð/4ó 5ð 5à× Ñ   T¨:Õ6ñ	7r   c                 ó&   — | j                  |«       y r   )r‘  rF  s      r   Ú _generate_cpy_struct_collecttypez+Recompiler._generate_cpy_struct_collecttypeú  s   € Ø× Ñ  Õ$r   c                 ób   — |j                  d«      }d|v r||j                  dd«      fS |d|z   fS )Nr5   r.   r³   )r)  r*  )r   r€   r2  s      r   Ú_struct_nameszRecompiler._struct_namesþ  s<   € Ø—‘˜bÓ!ˆØ�%‰<Ø˜%Ÿ-™-¨¨SÓ1Ð1Ð1à˜# ™+Ð%Ð%r   c                 óH   —  | j                   |g| j                  |«      ¢­Ž  y r   )r›  rÁ  rF  s      r   Ú_generate_cpy_struct_declz$Recompiler._generate_cpy_struct_decl  s"   € Øˆ×Ñ˜"Ð6˜t×1Ñ1°"Ó5Ô6r   c                 óH   —  | j                   |g| j                  |«      ¢­Ž  y r   )rT  rÁ  rF  s      r   Ú_generate_cpy_struct_ctxz#Recompiler._generate_cpy_struct_ctx	  s"   € Øˆ×Ñ˜Ð5˜d×0Ñ0°Ó4Ô5r   c                 ó€   — t        |t        j                  «      r| j                  ||«       y | j	                  |«       y r   )r�   r   r™   Ú_generate_cpy_enum_collecttyper‘  rF  s      r   Ú#_generate_cpy_anonymous_collecttypez.Recompiler._generate_cpy_anonymous_collecttype  s.   € Ü�bœ%Ÿ.™.Ô)Ø×/Ñ/°°DÕ9à×$Ñ$ RÕ(r   c                 óˆ   — t        |t        j                  «      r| j                  |«       y | j	                  ||d|z   «       y ©NÚtypedef_)r�   r   r™   Ú_generate_cpy_enum_declr›  rF  s      r   Ú_generate_cpy_anonymous_declz'Recompiler._generate_cpy_anonymous_decl  s5   € Ü�bœ%Ÿ.™.Ô)Ø×(Ñ(¨Õ,à×Ñ˜b $¨
°TÑ(9Õ:r   c                 óŠ   — t        |t        j                  «      r| j                  ||«       y | j	                  ||d|z   «       y rÊ  )r�   r   r™   Ú	_enum_ctxrT  rF  s      r   Ú_generate_cpy_anonymous_ctxz&Recompiler._generate_cpy_anonymous_ctx  s5   € Ü�bœ%Ÿ.™.Ô)Ø�N‰N˜2˜tÕ$à×Ñ˜R  z°DÑ'8Õ9r   c                 óö  — ||f| j                   v rt        d|›d|›d�«      ‚| j                   j                  ||f«       | j                  }d|›d|›�}|r` |d|z  «        |d«        |d|›d	�«        |d
|›d|›d�«       |�|dkD  rd|fz  } |d|›d�«        |d«        |d«        |d«       n=|�J ‚ |d|z  «        |d«        |d|j	                  d«      ›d|›d�«        |d«        |«        y )Nzduplicate declaration of z 'r7   Ú_cffi_r³   z$static int %s(unsigned long long *o)rø   z  int n = (z) <= 0;z  *o = (unsigned long long)((z) | 0);  /* check that z is an integer */r   z%dUz  if (!_cffi_check_int(*o, n, z))z    n |= 2;z  return n;rú   zstatic void %s(char *o)z  *(r   z)o = rc  )r  r   r6  rØ   r)  )r   Úis_intr   r€   Úcategoryr   r	  Úfuncnames           r   Ú_generate_cpy_constzRecompiler._generate_cpy_const&  s  € à�dÐ˜t×3Ñ3Ñ3Ý#Ú6>ÂÐEóGð Gà×Ñ× Ñ  (¨DÐ!1Ô2à�z‰z‰Ú$,©dÐ3ˆÙÙÐ7¸(ÑBÔCÙ�ŒIÚª4Ð1Ô2ÚÚ:>ÂðFô GàÐ&Ø ’?Ø"'¨;¨.Ñ"8�KÚº[ÐJÔKÙ�]Ô#Ù�ÔÙ��IàÐ&Ð&Ð&ÙÐ*¨XÑ5Ô6Ù�ŒIÚ R§]¡]°3Õ%7ºÐ>Ô?Ù�ŒIÙ�r   c                 ód   — |j                  «       }|r| j                  r| j                  |«       y y r   )r'  rp   rª   ©r   r€   r   rÓ  s       r   Ú"_generate_cpy_constant_collecttypez-Recompiler._generate_cpy_constant_collecttypeD  s.   € Ø×#Ñ#Ó%ˆÙ˜×.Ò.Ø×!Ñ! "Õ%ð /r   c                 óJ   — |j                  «       }| j                  |||«       y r   )r'  rÖ  rØ  s       r   rj  z&Recompiler._generate_cpy_constant_declI  s"   € Ø×#Ñ#Ó%ˆØ× Ñ  ¨¨rÕ2r   c                 ó  — | j                   s!|j                  «       rt        t        d«      }n4| j                   rt        }nt
        }| j                  |   }t        ||«      }| j                  d   j                  t        |d|z  |«      «       y )Nrî   rÃ   ú_cffi_const_%s)
rp   r'  r�   ÚOP_CONSTANT_INTÚOP_DLOPEN_CONSTÚOP_CONSTANTr…   rÌ   r‹   r   )r   r€   r   r   Ú
const_kindrA   s         r   r~  z%Recompiler._generate_cpy_constant_ctxM  sy   € Ø×$Ò$¨×);Ñ);Ô)=Üœ_¨bÓ1‰Gà×$Ò$Ü,‘
ä(�
ØŸ™¨Ñ,ˆJÜ˜Z¨Ó4ˆGØ�
‰
�8Ñ×#Ñ#Ü�tÐ-°Ñ4°gÓ>õ	@r   c                 ó&   — | j                  |«       y r   )rª   rF  s      r   rÇ  z)Recompiler._generate_cpy_enum_collecttype]  s   € Ø×Ñ˜bÕ!r   c                 óJ   — |j                   D ]  }| j                  d|«       Œ y )NT)ÚenumeratorsrÖ  )r   r€   r   Ú
enumerators       r   rÌ  z"Recompiler._generate_cpy_enum_decl`  s%   € ØŸ.™.ò 	7ˆJØ×$Ñ$ T¨:Õ6ñ	7r   c           	      óÐ  — | j                   |   }t        t        d«      }| j                  r|j	                  «        t        |j                  |j                  «      D ]3  \  }}| j                  d   j                  t        |d|z  ||¬«      «       Œ5 |�d|vr| j                  sd|z  }d|z  }nh|j                  | j                  g «      }	| j                  j                  |	«      }t        t        | j                  j                  |	d«      «      dk  «      }d	j!                  |j                  «      }
| j                  d
   j                  t#        |j$                  ||||
«      «       y )Nrî   rÃ   rÜ  ©r   r·  z
sizeof(%s)z((%s)-1) <= 0r   rJ   rÆ   )r…   r�   ÚOP_ENUMrp   Úcheck_not_partialÚziprã  Ú
enumvaluesrÌ   r‹   r   Úbuild_baseinttypern   ÚsizeofÚintÚcastrN   rR   r   )r   r€   r2  rA   r   rä  Ú	enumvaluer   rU   ÚbasetprV   s              r   rÏ  zRecompiler._enum_ctxd  s6  € Ø—_‘_ RÑ(ˆ
Üœ "Ó%ˆØ× Ò Ø× Ñ Ô"Ü%(¨¯©¸¿¹Ó%Gò 	3Ñ!ˆJ˜	Ø�J‰J�xÑ ×'Ñ'Ü˜:Ð'7¸*Ñ'DÀgØ'0ô2õ3ð	3ð
 Ð ¨EÑ!1¸$×:OÒ:OØ %Ñ'ˆDØ$ uÑ,‰Fà×)Ñ)¨$¯(©(°BÓ7ˆFØ—8‘8—?‘? 6Ó*ˆDÜœ˜TŸX™XŸ]™]¨6°2Ó6Ó7¸!Ñ;Ó<ˆFØ—8‘8˜BŸN™NÓ+ˆØ�
‰
�6Ñ×!Ñ!Ü�R—W‘W˜j¨$°¸ÓAõ	Cr   c                 óD   — | j                  ||j                  «       «       y r   )rÏ  r  rF  s      r   Ú_generate_cpy_enum_ctxz!Recompiler._generate_cpy_enum_ctxy  s   € Ø�‰�r˜2Ÿ>™>Ó+Õ,r   c                  ó   — y r   r%   rF  s      r   Ú_generate_cpy_macro_collecttypez*Recompiler._generate_cpy_macro_collecttype  rL  r   c                 ó@   — |dk(  rd }n|}| j                  d||¬«       y )Nr†  Træ  )rÖ  )r   r€   r   r   s       r   Ú_generate_cpy_macro_declz#Recompiler._generate_cpy_macro_decl‚  s(   € Ø�Š;Ø‰KàˆKØ× Ñ   t¸Ð ÕEr   c                 óÊ   — |dk(  r| j                   rt        d|›d�«      ‚d }n|}t        t        d«      }| j                  d   j                  t        |d|z  ||¬«      «       y )Nr†  z(cannot use the syntax '...' in '#define z ...' when using the ABI moderî   rÃ   rÜ  ræ  )rp   r   r�   rÝ  rÌ   r‹   r   )r   r€   r   r   r   s        r   Ú_generate_cpy_macro_ctxz"Recompiler._generate_cpy_macro_ctx‰  sm   € Ø�Š;Ø×$Ò$Ý'â,0ð3ó4ð 4ð ‰KàˆKÜœ¨"Ó-ˆØ�
‰
�8Ñ×#Ñ#Ü�tÐ-°Ñ4°gØ#.ô0õ	1r   c                 óÒ   — t        |t        j                  «      rL|j                  }|dk(  rd|›d�}| j	                  |j
                  d|z  «      }t        j                  ||«      }|S )Nr†  z_cffi_array_len(rK   rˆ  )r�   r   r>  r”   rE  r  )r   r€   Úglobal_namerŒ  rŽ  s        r   rE  zRecompiler._global_typeš  sY   € Ü�bœ%Ÿ/™/Ô*ØŸI™IˆMØ Ó%Ú9DÐ F�Ø×'Ñ'¨¯©°¸;Ñ1FÓGˆGÜ—‘ ¨-Ó8ˆBØˆ	r   c                 óF   — | j                  | j                  ||«      «       y r   )rª   rE  rF  s      r   Ú"_generate_cpy_variable_collecttypez-Recompiler._generate_cpy_variable_collecttype£  s   € Ø×Ñ˜d×/Ñ/°°DÓ9Õ:r   c                 óR  — | j                   }| j                  ||«      }t        |t        j                  «      r|j
                  €|j                  }d}nd}d|›d�} |d|j                  || j                  ¬«      z   «        |d«        |d|›d	|›d
�«        |d«        |«        y )Nr5   ú&z*_cffi_var_rü   ra  r–  rø   z	  return r  r%  rú   )	rØ   rE  r�   r   r>  r”   r  r)  rº   )r   r€   r   r	  Ú	ampersandrò   s         r   Ú_generate_cpy_variable_declz&Recompiler._generate_cpy_variable_decl¦  s’   € Ø�z‰zˆØ×Ñ˜r 4Ó(ˆÜ�bœ%Ÿ/™/Ô*¨r¯y©yÐ/@Ø—‘ˆBØ‰IàˆIøò )-Ð.ˆÙˆY˜Ÿ™ t°4×3FÑ3F˜ÓGÑGÔHÙˆSŒ	Ú¢9ªdÐ3Ô4ÙˆSŒ	Ù�r   c           
      óä   — | j                  ||«      }| j                  |   }| j                  rt        }nt        }| j
                  d   j                  t        |d|z  t        ||«      «      «       y )NrÃ   z_cffi_var_%s)	rE  r…   rp   ÚOP_GLOBAL_VARÚOP_GLOBAL_VAR_FrÌ   r‹   r   r�   )r   r€   r   rA   r8   s        r   Ú_generate_cpy_variable_ctxz%Recompiler._generate_cpy_variable_ctx½  se   € Ø×Ñ˜r 4Ó(ˆØ—_‘_ RÑ(ˆ
Ø× Ò Ü‰Bä ˆBØ�
‰
�8Ñ×#Ñ#Ü�t˜^¨dÑ2´F¸2¸zÓ4JÓKõ	Mr   c                 ó^   — t        |t        j                  «      sJ ‚| j                  |«       y r   )r�   r   r’   rª   rF  s      r   Ú'_generate_cpy_extern_python_collecttypez2Recompiler._generate_cpy_extern_python_collecttypeÊ  s&   € Ü˜"œe×3Ñ3Ô4Ð4Ð4Ø×Ñ˜bÕ!r   c           	      óº  — | j                   }t        |j                  t        j                  «      rd}n%d|z  }d|j                  j                  d|«      ›d�} |d|z  «        |d| j                  ›d|›d	|›d
�«        |«        g }d|z  }t        |j                  «      D ]+  \  }}	|	j                  d|z  |«      }
|j                  |
«       Œ- dj                  |«      }|xs d}|›d|›d�}|j                  dk(  rd|z   }d„ }t        t        |j                  «      dz  d«      } ||j                  «      rt        |d«      }t        |j                  t        j                  «      r;d|j                  j                  d«      ||j                  j                  d«      |fz  } ||›|j                  j                  |«      ›�«        |d«        |d|z  «        |d«       t        |j                  «      D ]f  \  }}	d|z  }
t        |	t        j                  «      s ||	«      rd|
z   }
t        j                  |	«      }	 |d|	j                  d«      |dz  |
fz  «       Œh  |d|z  «       t        |j                  t        j                  «      s% |d|j                  j                  d«      ›d�«        |d «        |«        | xj                   d!z  c_        y )"Nr¥  rd  z(int)sizeof(r5   rK   z3static struct _cffi_externpy_s _cffi_externpy__%s =r   rí   r/   z	, 0, 0 };r^  z a%dr   r_  r  Ú	__stdcallz_cffi_stdcall c                 óX   — t        | t        j                  «      xr | j                  dk(  S )Nr<  )r�   r   rh  r   r   s    r   Úmay_need_128_bitsz9Recompiler._extern_python_decl.<locals>.may_need_128_bitsê  s(   € Ü˜r¤5×#6Ñ#6Ó7ò -Ø—G‘G˜}Ñ,ð.r   r[   é   z!sizeof(%s) > %d ? sizeof(%s) : %drø   z  char a[%s];z  char *p = a;za%drþ  z  *(%s)(p + %d) = %s;r   z,  _cffi_call_python(&_cffi_externpy__%s, p);z  return *(z)p;rú   r   )rØ   r�   rf  r   rŽ   r)  ro   rš   rŒ   r‹   rN   rk  rt   r0   r˜   r�   r  )r   r€   r   Útag_and_spacer	  Úsize_of_resultrB  rp  r¡   r  ru  rr  rs  r
  Ú	size_of_as                  r   Ú_extern_python_declzRecompiler._extern_python_declÑ  s�  € Ø�z‰zˆÜ�b—i‘i¤§¡Ô0Ø ‰Nà$ tÑ+‰Gà—	‘	×$Ñ$ R¨Õ1ð4ˆNáÐBÀTÑIÔJÚØ×Óšd¢Nð4ô 	5áŒàˆ	Ø" TÑ)ˆÜ  §¡Ó)ò 	"‰GˆAˆtØ—/‘/ &¨1¡*¨gÓ6ˆCØ×Ñ˜SÕ!ð	"ð Ÿ™ 9Ó-ˆØ'Ò1¨6ˆÚ)-ª~Ð>ÐØ�6‰6�[Ò Ø!1Ð4FÑ!FÐò	.ô œ˜BŸG™G› Q™¨Ó*ˆ	Ù˜RŸY™YÔ'Ü˜I rÓ*ˆIÜ�b—i‘i¤×!4Ñ!4Ô5Ø;Ø—	‘	×$Ñ$ RÓ(¨)Ø—	‘	×$Ñ$ RÓ(¨)ð?5ñ 5ˆIñ 	‘} b§i¡i×&:Ñ&:Ð;MÔ&NÐOÔPÙˆSŒ	Ùˆ_˜yÑ(Ô)ÙÐÔÜ  §¡Ó)ò 	M‰GˆAˆtØ˜!‘)ˆCÜ˜4¤×!4Ñ!4Ô5Ù% dÔ+Ø˜C‘i�Ü×(Ñ(¨Ó.�ÙÐ(¨D¯O©O¸CÓ,@À!ÀAÁ#ÀsÐ+KÑKÕLð	Mñ 	Ð;¸dÑBÔCÜ˜"Ÿ)™)¤U§^¡^Ô4Ú r§y¡y×';Ñ';¸CÕ'@ÐBÔCÙˆSŒ	ÙŒØ×Ò˜aÑÖr   c                 ó*   — | j                  ||d«       y )Nra  ©r  rF  s      r   Ú _generate_cpy_extern_python_declz+Recompiler._generate_cpy_extern_python_decl  s   € Ø× Ñ   T¨9Õ5r   c                 ó*   — | j                  ||d«       y )NzCFFI_DLLEXPORT r  rF  s      r   Ú#_generate_cpy_dllexport_python_declz.Recompiler._generate_cpy_dllexport_python_decl
  s   € Ø× Ñ   TÐ+<Õ=r   c                 ó*   — | j                  ||d«       y )Nr5   r  rF  s      r   Ú'_generate_cpy_extern_python_plus_c_declz2Recompiler._generate_cpy_extern_python_plus_c_decl  s   € Ø× Ñ   T¨2Õ.r   c                 óø   — | j                   rt        d«      ‚|j                  rt        d«      ‚| j                  |   }t        t        |«      }| j                  d   j                  t        |d|z  ||«      «       y )Nz,cannot use 'extern "Python"' in the ABI modez$a vararg function is extern "Python"rÃ   z&_cffi_externpy__%s)
rp   r   rY  r3   r…   r�   ÚOP_EXTERN_PYTHONrÌ   r‹   r   )r   r€   r   rA   r   s        r   Ú_generate_cpy_extern_python_ctxz*Recompiler._generate_cpy_extern_python_ctx  sw   € Ø× Ò Ü#Ø@óBð Bà�;Š;Ü%Ð&NÓOÐOØ—_‘_ RÑ(ˆ
ÜÔ)¨:Ó6ˆØ�
‰
�8Ñ×#Ñ#Ü�tÐ2°TÑ9¸7ÀDÓIõ	Kr   c                 ó  — | j                   } |d«       t        |t        «      s|j                  d«      }n|j	                  d«       	 |j	                  d«       |j                  d«      D ]  }|}t        d«      t        u rt        t        |«      }nt        |«      dd } |d	|z   j                  «       «       d
}|D ]#  }t        |«      dk\  r
 ||«       d
}|d|fz  z  }Œ%  ||«       Œ� y # t
        $ r d|z   }Y Œ¤w xY w)Nz=// # NB. this is not a string because of a size limit in MSVCzutf-8Úasciis   # -*- encoding: utf8 -*-
Tz//r   rî   z// r5   éL   z%d,)rØ   r�   ÚbytesÚencodeÚdecodeÚUnicodeDecodeErrorÚ
splitlinesr  ÚmapÚordr  Úrstripr0   )r   Úsr	  ÚlinerD   Úprinted_lineÚcs          r   r  z)Recompiler._print_string_literal_in_array  s	  € Ø�z‰zˆÙÐLÔMÜ˜!œUÔ#Ø—‘˜Ó!‰Aà�H‰H�WÔð	2Ø�H‰H�WÔð —L‘L Ó&ò 	ˆDØˆGÜ�D‹zœUÑ"Üœ3 “~‘ô   ›.¨¨2Ð.�Ù�%˜'‘/×)Ñ)Ó+Ô,ØˆLØò -�Ü�|Ó$¨Ò*Ù˜Ô&Ø#%�LØ ¨¨¡Ñ,‘ð	-ñ
 �Õñ	øô "ò 	2Ø-°Ñ1ŠAð	2ús   Á	C. Ã.C?Ã>C?c                 óF   — t        t        t        «      | j                  |<   y r   )r�   ÚOP_PRIMITIVEÚ	PRIM_VOIDr‰   ©r   r€   r   s      r   Ú_emit_bytecode_VoidTypez"Recompiler._emit_bytecode_VoidType=  s   € Ü!'¬´iÓ!@ˆ�‰˜Òr   c                 ód   — t         |j                     }t        t        |«      | j                  |<   y r   )ÚPRIMITIVE_TO_INDEXr   r�   r*  r‰   )r   r€   r   rd   s       r   Ú_emit_bytecode_PrimitiveTypez'Recompiler._emit_bytecode_PrimitiveType@  s%   € Ü'¨¯©Ñ0ˆ
Ü!'¬°jÓ!Aˆ�‰˜Òr   c                 ó’   — d|j                   ›d|j                   ›d|j                   ›d�}t        t        |«      | j                  |<   y )Nz_cffi_prim_int(sizeof(z), (
           ((z)-1) | 0 /* check that z' is an integer type */
         ) <= 0)©r   r�   r*  r‰   ©r   r€   r   r%  s       r   Ú!_emit_bytecode_UnknownIntegerTypez,Recompiler._emit_bytecode_UnknownIntegerTypeD  s5   � ð $&§7£7¨B¯G«G°R·W³Wð>ˆô "(¬°aÓ!8ˆ�‰˜Òr   c                 óx   — d|j                   ›d|j                   ›d�}t        t        |«      | j                  |<   y )Nz_cffi_prim_float(sizeof(z) *
           (((z6)1) / 2) * 2 /* integer => 0, float => 1 */
         )r2  r3  s       r   Ú_emit_bytecode_UnknownFloatTypez*Recompiler._emit_bytecode_UnknownFloatTypeJ  s/   � ð  ŸW›W b§g£gð/ˆô "(¬°aÓ!8ˆ�‰˜Òr   c                 ó4  — t        t        | j                  |j                     «      | j                  |<   |dz  }|j
                  D ]e  }| j                  |   }||k7  rJt        |t        j                  «      r| j                  ||«       nt        t        |«      | j                  |<   |dz  }Œg t        |j                  «      }|j                  �-|j                  dk(  r|dz  }nt        d|j                  ›�«      ‚t        t        |«      | j                  |<   y )Nr   r  rY   zabi=)r�   ÚOP_FUNCTIONr…   rf  r‰   rŒ   r�   r   rh  r0  r9   rí  rY  rk  r3   ÚOP_FUNCTION_END)r   r€   r   r    Ú	realindexrB   s         r   Ú_emit_bytecode_RawFunctionTypez)Recompiler._emit_bytecode_RawFunctionTypeP  sê   € Ü!'¬°T·_±_ÀRÇYÁYÑ5OÓ!Pˆ�‰˜ÑØ�‰
ˆØ—7‘7ò 	ˆCØŸ™¨Ñ,ˆIØ˜	Ò!Ü˜c¤5×#6Ñ#6Ô7Ø×5Ñ5°c¸5ÕAä-3´G¸YÓ-G�D—O‘O EÑ*Ø�Q‰J‰Eð	ô �B—K‘KÓ ˆØ�6‰6ÐØ�v‰v˜Ò$Ø˜‘
‘å)°b·f²fÐ*>Ó?Ð?Ü!'¬¸Ó!?ˆ�‰˜Òr   c                 ól   — t        t        | j                  |j                     «      | j                  |<   y r   )r�   Ú
OP_POINTERr…   rV  r‰   r,  s      r   Ú_emit_bytecode_PointerTypez%Recompiler._emit_bytecode_PointerTypec  s$   € Ü!'¬
°D·O±OÀBÇIÁIÑ4NÓ!Oˆ�‰˜Òr   c                 óx   — |j                  «       }t        t        | j                  |   «      | j                  |<   y r   )r«   r�   r=  r…   r‰   )r   r€   r   Úraws       r   Ú_emit_bytecode_FunctionPtrTypez)Recompiler._emit_bytecode_FunctionPtrTypei  s.   € Ø× Ñ Ó"ˆÜ!'¬
°D·O±OÀCÑ4HÓ!Iˆ�‰˜Òr   c                 ó¾  — | j                   |j                     }|j                  €t        t        |«      | j
                  |<   y |j                  dk(  r(t        dt        |«      j                  dd«      ›d�«      ‚| j
                  |dz      dk(  sJ ‚t        t        |«      | j
                  |<   t        d t        |j                  «      «      | j
                  |dz   <   y )Nr†  ztype z/*...*/zb badly placed: the '...' array length can only be used on global arrays or on fields of structuresr   r|   )
r…   r  r”   r�   ÚOP_OPEN_ARRAYr‰   r   rˆ   r*  ÚOP_ARRAY)r   r€   r   Ú
item_indexs       r   Ú_emit_bytecode_ArrayTypez#Recompiler._emit_bytecode_ArrayTypem  s¸   € Ø—_‘_ R§W¡WÑ-ˆ
Ø�9‰9ÐÜ%+¬M¸:Ó%FˆD�O‰O˜EÒ"Ø�Y‰Y˜%ÒÝ#ô ˜“G—O‘O I¨uÕ5ð8ó9ð 9ð
 —?‘? 5¨1¡9Ñ-°Ò6Ð6Ð6Ü%+¬H°jÓ%AˆD�O‰O˜EÑ"Ü)/°´c¸"¿)¹)³nÓ)EˆD�O‰O˜E A™IÒ&r   c                 ó\   — | j                   |   }t        t        |«      | j                  |<   y r   )r–   r�   ÚOP_STRUCT_UNIONr‰   )r   r€   r   Ústruct_indexs       r   Ú_emit_bytecode_StructTypez$Recompiler._emit_bytecode_StructType{  s'   € Ø×*Ñ*¨2Ñ.ˆÜ!'¬¸Ó!Fˆ�‰˜Òr   c                 ó\   — | j                   |   }t        t        |«      | j                  |<   y r   )r—   r�   rç  r‰   )r   r€   r   Ú
enum_indexs       r   Ú_emit_bytecode_EnumTypez"Recompiler._emit_bytecode_EnumType€  s$   € Ø—[‘[ ‘_ˆ
Ü!'¬°Ó!<ˆ�‰˜Òr   ©F)r5   r   )NÚconstN)Vr"   r#   r$   r  r   rv   r£   r§   rª   r†   rÍ   rÒ   rØ   rÞ   rë   rÛ   r  rÚ   r  r4  r9  r,  rC  rG  rI  rK  rN  rW  rZ  r|  r„  r¯   r‘  r›  rT  r¬  rÐ   r¿  Ú_generate_cpy_union_collecttyperÁ  rÃ  Ú_generate_cpy_union_declrÅ  Ú_generate_cpy_union_ctxrÈ  rÍ  rÐ  rÖ  rÙ  rj  r~  rÇ  rÌ  rÏ  rò  rô  rö  rø  rE  rü  r   r  r  Ú*_generate_cpy_dllexport_python_collecttypeÚ._generate_cpy_extern_python_plus_c_collecttyper  r  r  r  r  Ú"_generate_cpy_dllexport_python_ctxÚ&_generate_cpy_extern_python_plus_c_ctxr  r-  r0  r4  r6  r;  r>  Ú_emit_bytecode_ConstPointerTypeÚ_emit_bytecode_NamedPointerTyperA  rF  rJ  Ú_emit_bytecode_UnionTyperM  r%   r   r   rl   rl   ~   sà  „ Ø€Mó%ò0ò81òt	<ò-ò&ò& H€Iò,ó>#ò2òòkòZ"ò0òh%ò+(òZKòò*òF=ò<òòFò+ò&ò
`òD2ò,
ò2ò óDT)òlOò7ò.%à&FÐ#ò&ò7à8Ðò6à6Ðò)ò;ò:ð CJØ(,óò<&ò
3ò@ò "ó7òCò*-òòFò1ò"ò;òò.Mò"ð
 .ð.Ð.Ø4ò4 òl6ò>ò/ò	Kð &ð&Ð&Ø,òò<AòBò9ò9ò@ò&Pð 'AÐ#Ø&@Ð#òJòFòGð  9Ðó=r   rl   )r	   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚNativeIOc                 ón   •— t        |t        «      r|j                  d«      }t        t        | �  |«       y )Nr  )r�   Úunicoder  Úsuperr[  rÖ   )r   r%  rœ   s     €r   rÖ   zNativeIO.write‰  s*   ø€ Ü˜!œWÔ%Ø—H‘H˜WÓ%�Ü”(˜DÑ'¨Õ*r   )r"   r#   r$   rÖ   Ú__classcell__)rœ   s   @r   r[  r[  ˆ  s   ø„ ÷	+ð 	+r   r[  c                 ó   — t        | d«      S )NrÖ   )Úhasattr)Ú	maybefiles    r   Ú_is_file_likerc  Ž  s   € ä�9˜gÓ&Ð&r   c                 ó  — |rt        d|›�«       t        | ||d u ¬«      }|j                  «        |j                  «        t	        |«      r|j                  ||«       yt        «       }|j                  ||«       |j                  «       }	 t        |d«      5 }|j                  t        |«      dz   «      |k7  rt        ‚	 d d d «       |rt        d«       y# 1 sw Y   ŒxY w# t        $ r¡ d|t        j                  «       fz  }	t        |	d	«      5 }|j                  |«       d d d «       n# 1 sw Y   nxY w	 t        j                  |	|«       Y y# t         $ r/ t        j"                  |«       t        j                  |	|«       Y Y yw xY ww xY w)
Nzgenerating )rp   Trà   r   z(already up-to-date)Fz%s.~%dÚw)Úprintrl   r£   rÒ   rc  rÞ   r[  Úgetvaluerá   Úreadr0   ÚIOErrorrâ   ÚgetpidrÖ   ÚrenameÚOSErrorÚunlink)
rn   ro   rÝ   Útarget_fileÚverboseÚ
recompilerrÜ   ÚoutputÚf1Útmp_files
             r   Ú_make_c_or_py_sourcert  ’  sn  € ÙÝ¡Ð.Ô/Ü˜C Ø.6¸$Ð.>ôA€Jà×!Ñ!Ô#Ø×"Ñ"Ô$Ü�[Ô!Ø×$Ñ$ [°(Ô;ØÜ‹
€AØ× Ñ   HÔ-Ø�Z‰Z‹\€FðÜ�+˜sÓ#ð 	 rØ�w‰w”s˜6“{ Q‘Ó'¨6Ò1Ü�ð 2÷	ñ ÜÐ(Ô)Ø÷	ð 	ûô ò 	Ø˜{¬B¯I©I«KÐ8Ñ8ˆÜ�(˜CÓ ð 	 BØ�H‰H�VÔ÷	÷ 	ñ 	úð	-Ü�I‰I�h Ô,ñ øô ò 	-Ü�I‰I�kÔ"Ü�I‰I�h Õ,Ùð	-úð	úsZ   ÂC" Â'CÃ C" ÃCÃC" Ã".FÄD+Ä"	FÄ+D4	Ä0FÄ8EÅ4FÆFÆFÆFc                 ó(   — |€J ‚t        | ||||«      S r   ©rt  )rn   ro   rÝ   Útarget_c_filero  s        r   Úmake_c_sourcerx  ±  s&   € ØÐÐÐÜ  [°(¸MØ 'ó)ð )r   c                 ó    — t        | |d ||«      S r   rv  )rn   ro   Útarget_py_filero  s       r   Úmake_py_sourcer{  ¶  s   € Ü  [°$¸Ø 'ó)ð )r   c                 ó  — |j                  d«      }	 t        j                  t        j                  j                  | g|d d ¢­Ž «       |dxx   |z  cc<   t        j                  j                  | g|¢­Ž |fS # t
        $ r Y Œ:w xY w)Nrí   rî   )r¸   râ   Úmakedirsrã   rN   rl  )Ú	outputdirÚmodnameÚ	extensionÚpartss       r   Ú_modname_to_filer‚  º  sz   € Ø�M‰M˜#Ó€EðÜ
�‰”B—G‘G—L‘L Ð8¨U°3°B¨ZÒ8Ô9ð 
ˆ"ƒI�ÑƒIÜ�7‰7�<‰<˜	Ð* EÒ*¨EÐ1Ð1øô ò Ùðús   “6A8 Á8	BÂBc                 ó`   — t        ||«      }| j                  |||f«       t        |||«       |S r   )r›   r‹   Úsetattr)Ú	patchlistÚclsr   Únew_methÚolds        r   Ú_patch_methr‰  È  s4   € Ü
�#�tÓ
€CØ×Ñ�c˜4 Ð%Ô&ÜˆC��xÔ Ø€Jr   c                 óF   — t        | «      D ]  \  }}}t        |||«       Œ y r   )Úreversedr„  )r…  r†  r   Úold_meths       r   Ú_unpatch_methsr�  Î  s)   € Ü'¨	Ó2ò %ÑˆˆT�8Ü��T˜8Õ$ñ%r   c                 ó´   ‡— t         j                  dk(  rddlm} |�t	        | |dd„ «       t         j                  dk(  rddlm} ˆfd„}t	        | |d	|«      Šy y )
Nr   r   )ÚMSVCCompilerÚ_remove_visual_c_refc                 ó   — |S r   r%   )r   Úmanifest_files     r   r�   z&_patch_for_embedding.<locals>.<lambda>Ú  s   € °M€ r   Údarwin)Ú	CCompilerc                 óÀ   •— d| j                   v rDt        | j                   «      | _         | j                   j                  d«      }d| j                   |<    ‰| g|¢­i |¤ŽS )Nz-bundlez-dynamiclib)Ú	linker_sor  r   )r   rŒ   Úkwdsr¡   Úold_link_shared_objects       €r   Úmy_link_shared_objectz3_patch_for_embedding.<locals>.my_link_shared_objectß  sV   ø€ Ø˜DŸN™NÑ*Ü!% d§n¡nÓ!5�”Ø—N‘N×(Ñ(¨Ó3�Ø$1�—‘˜qÑ!Ù)¨$Ð>°Ò>¸Ñ>Ð>r   Úlink_shared_object)ÚsysÚplatformÚcffi._shimmed_dist_utilsr�  r‰  r”  )r…  r�  r”  r™  r˜  s       @r   Ú_patch_for_embeddingrž  Ò  s`   ø€ Ü
‡|�|�wÒõ 	:ØÐ#Ü˜	 <Ð1GÙAôCô ‡|�|�xÒå6ô	?ô "-¨Y¸	Ø-AØ-Bó"DÑð  r   c                 óÎ   ‡— ddl m} ‰j                  d«      r<‰d d Št        j                  dk(  r‰dz  Šnt        j                  dk(  r‰dz  Šn‰d	z  Št        | |d
ˆfd„«       y )Nr   )Ú	build_extz.*r¦  r   z.dllr“  z.dylibz.soÚget_ext_filenamec                 ó   •— ‰S r   r%   )r   Úext_nameÚtargets     €r   r�   z#_patch_for_target.<locals>.<lambda>÷  s   ø€  v€ r   )r�  r   Úendswithr›  rœ  r‰  )r…  r¤  r   s    ` r   Ú_patch_for_targetr¦  é  sf   ø€ Ý2ð ‡��tÔØ˜˜�ˆÜ�<‰<˜7Ò"Ø�fÑ‰FÜ�\‰\˜XÒ%Ø�hÑ‰Fà�e‰OˆFÜ�	˜9Ð&8Û-õ/r   c                 óú  — t        |t        «      s|j                  d«      }| j                  r| j	                  |«       |��m|rt        |«      rt        d«      ‚| j                  d u}|r| j                  |«       |€5t        |||«      \  }}|r|g|z   }t        j                  j                  |Ž }n|}|	€
|rd|z  }	nd}	|rt        j                  ||fi |¤Ž}nd }t        | ||||¬«      }|r½g }t        j                   «       }	 |rt#        |«       |	dk7  rt%        ||	«       |r7|dk(  rd}nd}t'        |›d	t        j                  j)                  |«      ›�«       t        j*                  |«       t        j,                  d|||
«      }t        j*                  |«       t/        |«       |S ||fS |€t        ||d
«      \  }}t1        | |||¬«      }|r|S d |fS # t        j*                  |«       t/        |«       w xY w)Nr  zGWriting to file-like objects is not supported with call_c_compiler=Truez%s.*r   )ro  rí   zthe current directory isz setting the current directory tor.   z.py)r�   rˆ   r  Ú_windows_unicodeÚ_apply_windows_unicoderc  r@  rþ   Ú_apply_embedding_fixr‚  râ   rã   rN   r   Úget_extensionrx  Úgetcwdrž  r¦  rf  ÚabspathÚchdirÚcompiler�  r{  )rn   ro   rÝ   ÚtmpdirÚcall_c_compilerÚc_fileÚsource_extensionÚextradirÚcompiler_verboser¤  ÚdebugÚuses_ffiplatformr—  Ú	embeddingr�  Ú
ext_c_fileÚextÚupdatedr…  ÚcwdÚmsgÚoutputfilenamer³   s                          r   Ú	recompiler¿  ú  s  € ô �k¤3Ô'Ø!×(Ñ(¨Ó1ˆØ
×ÒØ×"Ñ" 4Ô(ØÑÙœ}¨VÔ4Üð 8ó 9ð 9à—^‘^¨4Ð/ˆ	ÙØ×$Ñ$ TÔ*Øˆ>Ü,¨V°[Ø-=ó?‰MˆF�EáØ!˜
 UÑ*�ÜŸ™Ÿ™ uÐ-‰JàˆJàˆ>ÙØ +Ñ-‘à�áÜ×+Ñ+¨J¸ÑLÀtÑL‰CàˆCÜ  [°(¸FØ(8ô:ˆáØˆIÜ—)‘)“+ˆCð*ÙÜ(¨Ô3Ø˜S’=Ü% i°Ô8Ù#Ø ’}Ø8™à@˜Ü¢S¬"¯'©'¯/©/¸&Ô*AÐBÔCÜ—‘˜Ô Ü!,×!4Ñ!4°S¸#Ø5EÀuó"N�ô —‘˜”Ü˜yÔ)Ø!Ð!à˜�<Ðàˆ>Ü(¨°¸eÓD‰IˆF�AÜ   k°6Ø)9ô;ˆáØˆMà˜�=Ð øô —‘˜”Ü˜yÕ)ús   ÄBG Ç"G:rN  )	rí   TNz.cNr   NNT)"râ   r›  Úior5   r   r   Úerrorr   Úcffi_opcoderq   r  r+  rœ  Úversion_inforÿ   r   r'   r?   rR   rf   rl   ÚStringIOr[  ÚBytesIOrc  rt  rx  r{  r‚  r‰  r�  rž  r¦  r¿  r%   r   r   ú<module>rÆ     s	  ðß Ó ß  Ý $Ü à€ØÐ ØÐ à—<‘< 7Ñ*ò .¨c×.>Ñ.>ÀÑ.Gò .Ø×#Ñ# vÑ-ð ÷1ñ 1÷ )ñ )÷8#ñ #÷:?ñ ?÷0	Kñ 	K÷D=ñ D=ðN( ×Ñ�tÒØ�{‰{�Hô+�2—:‘:ô +ò'òó>)ó
)ò2òò%òDò./ð" GKØ;?Ø59Ø#ôC!r   