
    i8)                        S SK r S SKrS SKrS SKJr  S SKJr  \R                  S    S:  aF  S SKr/ r	\R                  " 5        H*  u  rrr\\R                  :X  d  M  \	R                  \5        M,     OS SKJr  \R$                  r	\\4r " S S\5      r S\R0                  ;  a"  \R2                  R4                  S	:X  a  \" S
5      e\R                  S:  a  \ R8                  S:X  a  \" S5      eS SKJr  \" 5       r\R@                  r!\RE                  \RG                  S5      5      r$\RG                  S5      RJ                  RL                  r'S r(S r)\)r*\)r+\)r,S r-S/S jr.S r/S r0S r1 " S S\5      r2S r3Sr4 " S* S+\5      rLS, rMS- rNS. rOg! \ a    S SK5r5S SK5J6r6J7r7J8r8J)r)J*r*J-r-J.r.J,r,J+r+  S SK9J:r:  S SK5J;r'  Sr!/ r<S r,S  r(S! r/S" r0\5Rz                  r>S r?\5R                  R                  rB\5R                  R                  rD\5R                  rF\5R                  " \>5      rH " S# S$\5R                  5      rJS% r1 " S& S'\5      rKS( r3S)r4 Nf = f)0    N)byte_string)pycryptodome_filename   )	machineryc                   \    \ rS rSr\R
                  S 5       r\R
                  S 5       rSrg)_VoidPointer9   c                     g)z&Return the memory location we point toN selfs    O/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/Util/_raw_api.pyget_VoidPointer.get:        	    c                     g)z$Return a raw pointer to this pointerNr   r   s    r   
address_of_VoidPointer.address_of?   r   r   r   N)	__name__
__module____qualname____firstlineno__abcabstractmethodr   r   __static_attributes__r   r   r   r   r   9   s4      	 r   r   __pypy__   z0CFFI with optimize=2 fails due to pycparser bug.)r      ntz2CFFI is not compatible with Python 3.12 on Windows)FFIzconst uint8_t*z
uint8_t[1]c                    [        [        S5      (       a@  [        R                  " S5      (       d%  [        R	                  U [        R
                  5      nO[        R	                  U 5      n[        R                  U5        U$ )zLoad a shared library and return a handle to it.

@name,  either an absolute path or the name of a library
        in the system search path.

@cdecl, the C function declarations.
RTLD_DEEPBINDPYCRYPTODOME_DISABLE_DEEPBIND)hasattrffiosgetenvdlopenr#   cdef)namecdecllibs      r   load_libr.   ]   sT     3((;Z1[1[**T3#4#45C**T"C
r   c                     U $ )z)Convert a Python integer to unsigned longr   xs    r   c_ulongr2   m       r   c                     U $ )z"Convert a Python integer to size_tr   r0   s    r   c_size_tr5   u   r3   r   c                     [        U [        5      (       a4  [        [        U 5      S-   U5      n[        R                  SU5      nXSS& U$ U(       a  [        S5      e[        R                  SU 5      nU$ )z7Allocate the given amount of bytes (initially set to 0)   z	uint8_t[]Nz Size must be specified once only)
isinstancebytesmaxlenr&   new
ValueError)init_or_sizesizeresults      r   create_string_bufferrA   y   sk     lE**s<(1,d3DWW[$/F$1I
   !CDDWW[,7Fr   c                 ,    [         R                  U 5      $ )z.Convert a C string into a Python byte sequence)r&   stringc_strings    r   get_c_stringrF      s    zz(##r   c                 2    [         R                  U 5      SS $ )z.Convert a C buffer into a Python byte sequenceN)r&   bufferbufs    r   get_raw_bufferrK      s    zz#q!!r   c                    [        U [        5      (       a-  [        R                  [        [        R                  U 5      5      $ [        U 5      (       d  [        U [        5      (       a  U $ [        S[        U 5      -  5      eNz)Object type %s cannot be passed to C code)
r8   _buffer_typer&   castuint8_t_typefrom_bufferr   _Array	TypeErrortype)datas    r   c_uint8_ptrrV      sZ    dL))88L#//$*?@@*T6":":KG$t*TUUr   c                   *    \ rS rSrSrS rS rS rSrg)VoidPointer_cffi   'Model a newly allocated pointer to voidc                 8    [         R                  S5      U l        g )Nz	void *[1])r&   r<   _ppr   s    r   __init__VoidPointer_cffi.__init__   s    ww{+DHr   c                      U R                   S   $ )Nr   r\   r   s    r   r   VoidPointer_cffi.get   s    88A;r   c                     U R                   $ Nr`   r   s    r   r   VoidPointer_cffi.address_of   s    88Or   r`   N	r   r   r   r   __doc__r]   r   r   r   r   r   r   rX   rX      s    5	,		r   rX   c                      [        5       $ rc   )rX   r   r   r   VoidPointerrh      s    !!r   cffi)	CDLLc_void_pbyrefr2   c_ulonglongr5   rA   c_ubytec_uint)find_library)Arrayc                 t    SU s=::  a  S:  d   [        5       e  [        5       e[        R                  " U 5      $ )Nr      )OverflowErrorctypesrn   )cs    r   rn   rn      s1    Q/! /!~~a  r   c                     [         (       d  SS KnUR                  5       [         S S & [         u  p4SU ;  a4  UR                  S5      (       d  [	        U 5      nUc  [        SU -  5      eUn [        U 5      $ )Nr   .WinzCannot load library '%s')cached_architectureplatformarchitecture
startswithrp   OSErrorrj   )r+   r,   r{   bitslinkage	full_names         r   r.   r.      so    "" %-%:%:%<"+d?7#5#5e#<#<$T*I 84?@@DDzr   c                     U R                   $ rc   )valuerD   s    r   rF   rF      s    ~~r   c                     U R                   $ rc   )rawrI   s    r   rK   rK      s    wwr   c                      \ rS rSrS\4S\R                  4S\4S\4S\R                  4S\R                  4S\R                  4S	\
4S
\
4S\
4S\4/r\R                  S   S:X  a  \R                  SS\S-  45        SrgSrg)
_Py_buffer   rJ   objr;   itemsizereadonlyndimformatshapestrides
suboffsetsinternalr   r   
smalltabler   N)r   r   r   r   rk   ru   	py_object
_c_ssize_tc_intc_char_p
_c_ssize_p_fields_sysversion_infoinsertr   r   r   r   r   r      s    H%F,,-J'J'FLL)FLL)FOO,J'J'J'H%
 A!#OOBzA~ >? $r   r   c                    [        U 5      (       d  [        U [        5      (       a  U $ [        U [        5      (       a|  [	        U 5      n[        5       n[        U[        U5      [        5         [        R                  UR                  -  nUR                  UR                  5      [        [        U5      5        $ [        S[!        U 5      -  5      e! [        [        U5      5        f = frM   )r   r8   rR   rN   
_py_objectr   _PyObject_GetBufferrl   _PyBUF_SIMPLEru   rn   r;   from_addressrJ   _PyBuffer_ReleaserS   rT   )rU   r   rJ   buffer_types       r   rV   rV      s    t
4 8 8Kl++T"C,CU3Z?.$nnsww6"//8!%*-G$t*TUU "%*-s   -7C C&c                   *    \ rS rSrSrS rS rS rSrg)VoidPointer_ctypes   rZ   c                 "    [        5       U l        g rc   )rk   _pr   s    r   r]   VoidPointer_ctypes.__init__   s    jDGr   c                     U R                   $ rc   r   r   s    r   r   VoidPointer_ctypes.get  s    77Nr   c                 ,    [        U R                  5      $ rc   )rl   r   r   s    r   r   VoidPointer_ctypes.address_of  s    >!r   r   Nre   r   r   r   r   r      s    5	!		"r   r   c                      [        5       $ rc   )r   r   r   r   rh   rh     s    !##r   ru   c                   0    \ rS rSrSrS rS rS rS rSr	g)	SmartPointeri  z+Class to hold a non-managed piece of memoryc                     Xl         X l        g rc   )_raw_pointer_destructor)r   raw_pointer
destructors      r   r]   SmartPointer.__init__  s    '%r   c                     U R                   $ rc   r   r   s    r   r   SmartPointer.get  s       r   c                 ,    U R                   S sol         U$ rc   r   )r   rps     r   releaseSmartPointer.release  s     $ 1 14	r   c                      U R                   b#  U R                  U R                   5        S U l         g g ! [         a     g f = frc   )r   r   AttributeErrorr   s    r   __del__SmartPointer.__del__  sH    	  ,  !2!23$(! -  		s   /3 
A A )r   r   N)
r   r   r   r   rf   r]   r   r   r   r   r   r   r   r   r     s    5&!r   r   c           
         U R                  S5      nUSS US   pC/ n[         HX  n XF-   n[        X75      n[        R                  R                  U5      (       d  UR                  SU-  5        MM  [        X5      s  $    [        SU < SSR                  U5      < 35      e! [         a-  n	UR                  SW< S[        U	5      < 35         Sn	A	M  Sn	A	ff = f)	zLoad a shared library and return a handle to it.

@name,  the name of the library expressed as a PyCryptodome module,
        for instance Crypto.Cipher._raw_cbc.

@cdecl, the C function declarations.
rx   Nr   zNot found '%s'zCannot load 'z': zCannot load native module 'z, )splitextension_suffixesr   r'   pathisfileappendr.   r~   strjoin)
r+   r,   r   	dir_compsbasenameattemptsextfilenamer   exps
             r   load_pycryptodome_raw_libr   %  s     JJsOE*eBixH!	K~H-iBI77>>),, 08 ;<I-- " $		(@ST
UU  	KOOhCIJJ	Ks   AB!0
B!!
C+"CCc                 8    [        U [        [        [        45      $ )z5Return True if object x supports the buffer interface)r8   r9   	bytearray
memoryviewr0   s    r   	is_bufferr   >  s    a%J788r   c                     [        U [        5      =(       d(    [        U [        5      =(       a    U R                  (       + $ rc   )r8   r   r   r   r0   s    r   is_writeable_bufferr   C  s+    q)$ ;:&9qzz><r   rc   )Pr'   r   r   Crypto.Util.py3compatr   Crypto.Util._file_systemr   r   impr   get_suffixesr   modtypC_EXTENSIONr   	importlibr   EXTENSION_SUFFIXESr   r   rN   objectr   builtin_module_namesflagsoptimizeImportErrorr+   ri   r!   r&   NULLnull_pointertypeofr<   rP   	__class__	__bases__rR   r.   r2   rm   ro   rn   r5   rA   rF   rK   rV   rX   rh   backendru   rj   rk   rl   ctypes.utilrp   rq   rz   	c_ssize_tr   r   	pythonapiPyObject_GetBufferr   PyBuffer_Releaser   r   r   POINTERr   	Structurer   r   r   r   r   r   r   r   r   <module>r      se  > 
 
 
 - :
 A))+S##//!%%c* , $"55 :&	6 	F 111cii6H6HA6MLMM
 7"rww$NOO
%C88L::cgg&678LWW\",,66F  KFG$"V
< 
" GP6 .V29
<w  c? ? ?(&L!

 !!JM **==((99!!J
+J@V%% @&V"
"\ 
"$ GGcs   C%F B<II