§
    cÒ³g®+  ã                   ó  — d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZ ddlm	Z	 e j
        dk    rd dlZd„ Znd dlZd„ Ze j
        d	k    rej        Zn G d
„ dej        ¦  «        Z G d„ de¦  «        ZdZd„ Zdad„ Zd„ Zdd„Zd„ Zd„ ZdS )é    Né   )Ú__version_verifier_modules__)Úffiplatform)ÚVerificationError)é   r   c                  ó4   — t           j        j        d d …         S ©N)Ú	importlibÚ	machineryÚEXTENSION_SUFFIXES© ó    úK/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/cffi/verifier.pyÚ_extension_suffixesr      s   € ÝÔ"Ô5°a°a°aÔ8Ð8r   c                  ó<   — d„ t          j        ¦   «         D ¦   «         S )Nc                 ó:   — g | ]\  }}}|t           j        k    ¯|‘ŒS r   )ÚimpÚC_EXTENSION)Ú.0ÚsuffixÚ_Útypes       r   ú
<listcomp>z'_extension_suffixes.<locals>.<listcomp>   s4   € ð ,ð ,ð ,™?˜6 1 dØ�3œ?Ò*Ð*ð Ø*Ð*Ð*r   )r   Úget_suffixesr   r   r   r   r      s+   € ð,ð ,­cÔ.>Ñ.@Ô.@ð ,ñ ,ô ,ð 	,r   ©r   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚNativeIOc                 ó¬   •— t          |t          ¦  «        r|                     d¦  «        }t          t          | ¦  «                             |¦  «         d S )NÚascii)Ú
isinstanceÚunicodeÚencodeÚsuperr   Úwrite)ÚselfÚsÚ	__class__s     €r   r$   zNativeIO.write   sJ   ø€ Ý˜!�WÑ%Ô%ð &Ø—H’H˜WÑ%Ô%�Ý•(˜DÑ!Ô!×'Ò'¨Ñ*Ô*Ð*Ð*Ð*r   )Ú__name__Ú
__module__Ú__qualname__r$   Ú__classcell__)r'   s   @r   r   r      s8   ø€ € € € € ð	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+r   r   c                   óh   — e Zd Z	 	 	 dd„Zdd„Zd„ Zd„ Zd	„ Zd
„ Zd„ Z	d„ Z
d„ Zd„ Zdd„Zd„ Zd„ ZdS )ÚVerifierNÚ Fú.cc                 óð  — |j         j        rt          d|j         j        ›�¦  «        ‚|| _        || _        |st          j        |¦  «        }t          ||¦  «        } || ¦  «        | _        | j         	                    |¦  «         |	| _
        |                      ||
¦  «        | _        |r|rt          d¦  «        ‚�n d                     dt          j        d d…         z  t"          ||g|j        z   ¦  «        }t          j        dk    r|                     d¦  «        }t)          t+          j        |dd d…         ¦  «        d	z  ¦  «        }|                     d
¦  «                             d¦  «        }t)          t+          j        |dd d…         ¦  «        d	z  ¦  «        }|                     d¦  «                             d¦  «        }d|›d| j        j        ›|›|›�}t5          ¦   «         d         }|pt7          ¦   «         | _        t:          j                             | j        ||z   ¦  «        | _        t:          j                             | j        ||z   ¦  «        | _         || _!        d| _"        d| _#        d S )NzIfeature not supported with ffi.verify(), but only with ffi.set_source(): z)can't specify both 'modulename' and 'tag'ú z%d.%dé   r   zutf-8r   l   ÿÿ Ú0xÚLr   Ú0Ú_cffi_r   F)$Ú_parserÚ_uses_new_featurer   ÚffiÚpreambler   ÚflattenÚ_locate_engine_classÚ_vengineÚpatch_extension_kwdsÚflagsÚmake_relative_toÚkwdsÚ	TypeErrorÚjoinÚsysÚversion_infor   Ú_cdefsourcesr"   ÚhexÚbinasciiÚcrc32ÚlstripÚrstripÚ
_class_keyÚ_get_so_suffixesÚ_caller_dir_pycacheÚtmpdirÚosÚpathÚsourcefilenameÚmodulefilenameÚext_packageÚ_has_sourceÚ_has_module)r%   r9   r:   rO   Ú
modulenamerT   ÚtagÚforce_generic_engineÚsource_extensionr?   Úrelative_torA   Úflattened_kwdsÚvengine_classÚkeyÚk1Úk2r   s                     r   Ú__init__zVerifier.__init__    sj  € ð Œ;Ô(ð 	PÝ#Ð#à/2¬{Ô/LÐ/LðOñPô Pð Pð ˆŒØ ˆŒØð 	7Ý(Ô0°Ñ6Ô6ˆNÝ,¨SÐ2FÑGÔGˆØ%˜ dÑ+Ô+ˆŒØŒ×*Ò*¨4Ñ0Ô0Ð0ØˆŒ
Ø×)Ò)¨$°Ñ<Ô<ˆŒ	àð 	6Øð MÝÐ KÑLÔLÐLñMð —+’+˜w­Ô)9¸"¸1¸"Ô)=Ñ=Ý;Ø'¨ð9ð "Ô.ñ/ñ 0ô 0ˆCõ Ô 4Ò'Ð'Ø—j’j Ñ)Ô)�Ý•X”^ C¨¨¨1¨¤IÑ.Ô.°Ñ;Ñ<Ô<ˆBØ—’˜4‘”×'Ò'¨Ñ,Ô,ˆBÝ•X”^ C¨¨¨1¨¤IÑ.Ô.°Ñ;Ñ<Ô<ˆBØ—’˜3‘”×&Ò& sÑ+Ô+ˆBˆBØ.1¨c¨c°4´=Ô3KÐ3KØ.0¨b°"°"ð6ˆJå!Ñ#Ô# AÔ&ˆØÐ5Õ 3Ñ 5Ô 5ˆŒÝ œgŸlšl¨4¬;¸
ÐEUÑ8UÑVÔVˆÔÝ œgŸlšl¨4¬;¸
ÀVÑ8KÑLÔLˆÔØ&ˆÔØ ˆÔØ ˆÔÐÐr   c                 óª   — | j         j        5  | j        r|€t          d¦  «        ‚|                      |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zkWrite the C source code.  It is produced in 'self.sourcefilename',
        which can be tweaked beforehand.Nzsource code already written)r9   Ú_lockrU   r   Ú_write_source©r%   Úfiles     r   Úwrite_sourcezVerifier.write_sourceI   sª   € ð ŒXŒ^ð 	%ð 	%ØÔð 3 D LÝ'Ø1ñ3ô 3ð 3à×Ò˜tÑ$Ô$Ð$ð		%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%s   �.AÁAÁAc                 óÚ   — | j         j        5  | j        rt          d¦  «        ‚| j        s|                      ¦   «          |                      ¦   «          ddd¦  «         dS # 1 swxY w Y   dS )z„Write the C source code (if not done already) and compile it.
        This produces a dynamic link library in 'self.modulefilename'.zmodule already compiledN)r9   rc   rV   r   rU   rd   Ú_compile_module©r%   s    r   Úcompile_modulezVerifier.compile_moduleR   s¼   € ð ŒXŒ^ð 	#ð 	#ØÔð CÝ'Ð(AÑBÔBÐBØÔ#ð %Ø×"Ò"Ñ$Ô$Ð$Ø× Ò Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#s   �AA Á A$Á'A$c                 ó  — | j         j        5  | j        sJ|                      ¦   «          | j        s/| j        s|                      ¦   «          |                      ¦   «          |                      ¦   «         cddd¦  «         S # 1 swxY w Y   dS )a"  Get a C module from this Verifier instance.
        Returns an instance of a FFILibrary class that behaves like the
        objects returned by ffi.dlopen(), but that delegates all
        operations to the C module.  If necessary, the C code is written
        and compiled first.
        N)r9   rc   rV   Ú_locate_modulerU   rd   ri   Ú_load_libraryrj   s    r   Úload_libraryzVerifier.load_library\   sØ   € ð ŒXŒ^ð 	(ð 	(ØÔ#ð +Ø×#Ò#Ñ%Ô%Ð%ØÔ'ð +ØÔ+ð -Ø×*Ò*Ñ,Ô,Ð,Ø×(Ò(Ñ*Ô*Ð*Ø×%Ò%Ñ'Ô'ð	(ð 	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s   �A%A?Á?BÂBc                 óî   — t           j                             | j        ¦  «        }|                     dd¦  «        d         }|                     d¦  «        rt          t          d¦  «        r
|d d…         }|S )Nú.r   r   Ú_dÚgettotalrefcountéþÿÿÿ)rP   rQ   ÚbasenamerS   ÚsplitÚendswithÚhasattrrD   )r%   ru   s     r   Úget_module_namezVerifier.get_module_namel   sp   € Ý”7×#Ò# DÔ$7Ñ8Ô8ˆð —>’> # qÑ)Ô)¨!Ô,ˆð ×Ò˜TÑ"Ô"ð 	%¥w­sÐ4FÑ'GÔ'Gð 	%Ø   ”}ˆHØˆr   c                 ó  — | j         s?| j        j        5  | j         s|                      ¦   «          d d d ¦  «         n# 1 swxY w Y   t	          j        | j        ¦  «        }|                      ¦   «         }t	          j        ||fi | j	        ¤ŽS r	   )
rU   r9   rc   rd   r   Úmaybe_relative_pathrR   ry   Úget_extensionrA   )r%   Ú
sourcenameÚmodnames      r   r|   zVerifier.get_extensionw   sÌ   € ØÔð 	)Ø””ð )ð )ØÔ'ð )Ø×&Ò&Ñ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )õ !Ô4°TÔ5HÑIÔIˆ
Ø×&Ò&Ñ(Ô(ˆÝÔ(¨°WÐJÐJÀÄ	ÐJÐJÐJs   ”<¼A ÁA c                 ó   — | j         j        S r	   )r=   Ú_gen_python_modulerj   s    r   Úgenerates_python_modulez Verifier.generates_python_module€   s   € ØŒ}Ô/Ð/r   c                 ój  ‡— |r¯t           j                             |¦  «        r�t           j                             |¦  «        Š|                     ¦   «         }t          j        D ]P}||v rJ||         }t          |t          t          f¦  «        st          d|›d�¦  «        ‚ˆfd„|D ¦   «         }|||<   ŒQ|S )Nz	keyword 'z' should be a list or tuplec                 óP   •— g | ]"}t           j                             ‰|¦  «        ‘Œ#S r   )rP   rQ   rC   )r   ÚfnÚdirnames     €r   r   z-Verifier.make_relative_to.<locals>.<listcomp>�   s)   ø€ ÐCÐCÐC¸�2œ7Ÿ<š<¨°Ñ4Ô4ÐCÐCÐCr   )
rP   rQ   r…   Úcopyr   ÚLIST_OF_FILE_NAMESr    ÚlistÚtuplerB   )r%   rA   r[   r^   Úlstr…   s        @r   r@   zVerifier.make_relative_toƒ   sÂ   ø€ Øð 
	$�2œ7Ÿ?š?¨;Ñ7Ô7ð 
	$Ý”g—o’o kÑ2Ô2ˆGØ—9’9‘;”;ˆDÝ"Ô5ð $ð $�Ø˜$�;�;Ø˜sœ)�CÝ% c­Dµ%¨=Ñ9Ô9ð 2Ý'˜iØ+.¨3¨3ð)1ñ 2ô 2ð 2àCÐCÐCÐC¸sÐCÑCÔC�CØ #�D˜‘IøØˆr   c                 ó�  — t           j                             | j        ¦  «        s�| j        r3	 t          | j        d d dg¦  «        }n# t          $ r Y d S w xY w|j        }nd }| j         	                    |  
                    ¦   «         |t          ¦   «         ¦  «        }|€d S || _        | j                             ¦   «          d| _        d S )NÚ__doc__T)rP   rQ   ÚisfilerS   rT   Ú
__import__ÚImportErrorÚ__path__r=   Úfind_modulery   rM   Úcollect_typesrV   )r%   ÚpkgrQ   Úfilenames       r   rm   zVerifier._locate_module“   sÞ   € ÝŒw�~Š~˜dÔ1Ñ2Ô2ð 	+ØÔð ðÝ$ TÔ%5°t¸TÀIÀ;ÑOÔO�C�CøÝ"ð ð ð Ø�F�Fðøøøð ”|��à�Ø”}×0Ò0°×1EÒ1EÑ1GÔ1GÈÝ1AÑ1CÔ1CñEô EˆHàÐØ�Ø"*ˆDÔØŒ×#Ò#Ñ%Ô%Ð%ØˆÔÐÐs   ­A Á
AÁAc                 óx   — || j         _        	 | j                              ¦   «          | j         `d S # | j         `w xY wr	   )r=   Ú_fÚwrite_source_to_fre   s     r   Ú_write_source_tozVerifier._write_source_to¦   sG   € ØˆŒÔð	!ØŒM×+Ò+Ñ-Ô-Ð-à”Ð Ð Ð ø�”Ð Ð Ð Ð Ð s   Ž0 °	9c                 ó>  — |�|                       |¦  «         d S t          ¦   «         }|                       |¦  «         |                     ¦   «         }t          j                             | j        ¦  «        rGt          | j        d¦  «        5 }|                     ¦   «         |k     }d d d ¦  «         n# 1 swxY w Y   nd}|rVt          | j        ¦  «         t          | j        d¦  «        5 }| 
                    |¦  «         d d d ¦  «         n# 1 swxY w Y   d| _        d S )NÚrTÚw)r˜   r   ÚgetvaluerP   rQ   ÚexistsrR   ÚopenÚreadÚ_ensure_dirr$   rU   )r%   rf   ÚfÚsource_dataÚfpÚneeds_writtens         r   rd   zVerifier._write_source­   s�  € ØÐØ×!Ò! $Ñ'Ô'Ð'Ð'Ð'õ ‘
”
ˆAØ×!Ò! !Ñ$Ô$Ð$ØŸ*š*™,œ,ˆKõ Œw�~Š~˜dÔ1Ñ2Ô2ð %Ý˜$Ô-¨sÑ3Ô3ð C°rØ)+¯ª©¬°kÒ)AÐ$B�MðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cøð !%�ð ð *Ý˜DÔ/Ñ0Ô0Ð0Ý˜$Ô-¨sÑ3Ô3ð *°rØ—H’H˜[Ñ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð  $ˆDÔÐÐs$   Â
B0Â0B4Â7B4Ã)DÄDÄDc                 óf  — t           j                             | j        ¦  «        }t	          j        ||                      ¦   «         ¦  «        }	 t	          j        || j        ¦  «        }n# t          $ r d}Y nw xY w|s.t          | j        ¦  «         t          j        || j        ¦  «         d| _        d S )NFT)rP   rQ   r…   rR   r   Úcompiler|   ÚsamefilerS   ÚOSErrorr    ÚshutilÚmoverV   )r%   rO   ÚoutputfilenameÚsames       r   ri   zVerifier._compile_moduleÆ   s²   € å”—’ Ô!4Ñ5Ô5ˆÝ$Ô,¨V°T×5GÒ5GÑ5IÔ5IÑJÔJˆð	ÝÔ'¨¸Ô8KÑLÔLˆDˆDøÝð 	ð 	ð 	ØˆDˆDˆDð	øøøàð 	=Ý˜Ô+Ñ,Ô,Ð,ÝŒK˜¨Ô(;Ñ<Ô<Ð<ØˆÔÐÐs   ÁA( Á(A7Á6A7c                 ó’   — | j         sJ ‚| j        �| j                             | j        ¦  «        S | j                             ¦   «         S r	   )rV   r?   r=   ro   rj   s    r   rn   zVerifier._load_libraryÓ   sE   € ØÔÐÐÐØŒ:Ð!Ø”=×-Ò-¨d¬jÑ9Ô9Ð9à”=×-Ò-Ñ/Ô/Ð/r   )NNNr.   Fr/   NNr	   )r(   r)   r*   ra   rg   rk   ro   ry   r|   r�   r@   rm   r˜   rd   ri   rn   r   r   r   r-   r-      só   € € € € € à>BØ@EØ@Dð'!ð '!ð '!ð '!ðR%ð %ð %ð %ð#ð #ð #ð(ð (ð (ð 	ð 	ð 	ðKð Kð Kð0ð 0ð 0ðð ð ð  ð  ð  ð&!ð !ð !ð$ð $ð $ð $ð2 ð  ð  ð0ð 0ð 0ð 0ð 0r   r-   Fc                 ó¸   — t           rd}|s4dt          j        v rd}n#	 dd l}n# t          $ r d}Y nw xY w| j        |urd}|rddlm} |j        S ddlm	} |j
        S )NTÚ__pypy__r   ú?r   )Úvengine_gen)Úvengine_cpy)Ú_FORCE_GENERIC_ENGINErD   Úbuiltin_module_namesÚ_cffi_backendr�   Ú_backendr.   r±   ÚVGenericEnginer²   ÚVCPythonEngine)r9   rY   rµ   r±   r²   s        r   r<   r<   Þ   s¸   € Ýð $Ø#ÐØð 	,Ø�Ô1Ð1Ð1Ø#'Ð Ð ð$Ø$Ð$Ð$Ð$Ð$øÝð $ð $ð $Ø #���ð$øøøàŒ| =Ð0Ð0Ø'+Ð$Øð *Ø!Ð!Ð!Ð!Ð!Ð!ØÔ)Ð)à!Ð!Ð!Ð!Ð!Ð!ØÔ)Ð)s   ž# £2±2c                  óT  — t           rt           S t          j                             d¦  «        } | r| S t	          j        d¦  «        j        j        }t          j         	                    t          j         
                    t          j                             |¦  «        d¦  «        ¦  «        S )NÚCFFI_TMPDIRr2   Ú__pycache__)Ú_TMPDIRrP   ÚenvironÚgetrD   Ú	_getframeÚf_codeÚco_filenamerQ   ÚabspathrC   r…   )Úresultr”   s     r   rN   rN   ö   s�   € Ýð ÝˆÝŒZ�^Š^˜MÑ*Ô*€FØð ØˆÝŒ}˜QÑÔÔ&Ô2€HÝŒ7�?Š?�2œ7Ÿ<š<­¬¯ª¸Ñ(AÔ(AØ(ñ*ô *ñ +ô +ð +r   c                 ó
   — | a dS )z:Set the temporary directory to use instead of __pycache__.N)r¼   )r…   s    r   Ú
set_tmpdirrÅ      s   € ð €G€G€Gr   c                 ó´  — | pt          ¦   «         } 	 t          j        | ¦  «        }n# t          $ r Y dS w xY w|rd}n&t	          ¦   «         d                              ¦   «         }|D ]»}|                     ¦   «                              d¦  «        r’|                     ¦   «                              |¦  «        s'|                     ¦   «                              d¦  «        rD	 t          j        t          j	         
                    | |¦  «        ¦  «         Œ«# t          $ r Y Œ·w xY wŒ¼t          j	         
                    | d¦  «        g}|D ]“}	 t          j        |¦  «        D ]k}t          j	         
                    ||¦  «        }t          j	                             |¦  «        r|                     |¦  «         ŒWt          j        |¦  «         ŒlŒ„# t          $ r Y Œ�w xY wdS )z}Clean up the temporary directory by removing all files in it
    called `_cffi_*.{c,so}` as well as the `build` subdirectory.Nr/   r   r6   Úbuild)rN   rP   Úlistdirr¨   rM   ÚlowerÚ
startswithrw   ÚunlinkrQ   rC   ÚisdirÚappend)rO   Úkeep_soÚfilelistr   r„   Ú	clean_dirÚdirs          r   Úcleanup_tmpdirrÒ     sï  € ð Ð,Õ*Ñ,Ô,€FðÝ”:˜fÑ%Ô%ˆˆøÝð ð ð Øˆˆðøøøàð /Øˆˆå!Ñ#Ô# AÔ&×,Ò,Ñ.Ô.ˆØð ð ˆØ�8Š8‰:Œ:× Ò  Ñ*Ô*ð 	Ø—’‘
”
×#Ò# FÑ+Ô+ð	Ø/1¯xªx©z¬z×/BÒ/BÀ4Ñ/HÔ/Hð	ðÝ”	�"œ'Ÿ,š, v¨rÑ2Ô2Ñ3Ô3Ð3Ð3øÝð ð ð Ø�ðøøøøå”—’˜f gÑ.Ô.Ð/€IØð 	ð 	ˆð	Ý”j ‘o”oð "ð "�Ý”W—\’\ # rÑ*Ô*�Ý”7—=’= Ñ$Ô$ð "Ø×$Ò$ RÑ(Ô(Ð(Ð(å”I˜b‘M”M�M�Mð"øõ ð 	ð 	ð 	ØˆDð	øøøð	ð 	s1   ’' §
5´5Ã2DÄ
DÄDÅB GÇ
GÇGc                  óT   — t          ¦   «         } | st          j        dk    rdg} ndg} | S )NÚwin32z.pydz.so)r   rD   Úplatform)Úsuffixess    r   rM   rM   $  s7   € Ý"Ñ$Ô$€HØð åŒ<˜7Ò"Ð"Ø�xˆHˆHà�wˆHà€Or   c                 ó¶   — t           j                             | ¦  «        }|r5t           j                             |¦  «        st          j        |¦  «         d S d S d S r	   )rP   rQ   r…   rÌ   Úmakedirs)r”   r…   s     r   r    r    /  s\   € ÝŒg�oŠo˜hÑ'Ô'€GØð •r”w—}’} WÑ-Ô-ð Ý
Œ�GÑÔÐÐÐðð ð ð r   )NF)rD   rP   rH   r©   Úior.   r   r   Úerrorr   rE   Úimportlib.machineryr
   r   r   ÚStringIOr   ÚBytesIOÚobjectr-   r³   r<   r¼   rN   rÅ   rÒ   rM   r    r   r   r   ú<module>rß      s±  ðð %Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $àÔ�vÒÐØÐÐÐð9ð 9ð 9ð 9ð €J€J€Jð,ð ,ð ,ð
 Ô�tÒÐØŒ{€H€Hð+ð +ð +ð +ð +�2”:ñ +ô +ð +ðz0ð z0ð z0ð z0ð z0ˆvñ z0ô z0ð z0ð| Ð ð*ð *ð *ð, €ð+ð +ð +ðð ð ð
ð ð ð ð>	ð 	ð 	ðð ð ð ð r   