§
    H›j0i  ã                  óÂ  — d dl mZ d dlZ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mZmZmZ d dlZd dlZddlmZmZ ddlmZmZmZmZmZ dd	lmZ d3d„Z e¦   «         Z ej         d¦  «        Z! ej         d¦  «        Z"er G d„ d¦  «        Z# G d„ de$¦  «        Z%d Z&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0 ej1        ¦   «         d4d„¦   «         Z2d5d6d$„Z3d7d'„Z4 ej1        ¦   «         d(„ ¦   «         Z5d)„ Z6 ej1        ¦   «         d*„ ¦   «         Z7 ej1        ¦   «         d+„ ¦   «         Z8 ej1        ¦   «         d,„ ¦   «         Z9d8d.„Z: G d/„ d0¦  «        Z; G d1„ d2¦  «        Z<dS )9é    )ÚannotationsN)ÚSimpleCookie)ÚPath)ÚTYPE_CHECKINGÚAnyÚLiteralÚcasté   )ÚffiÚlib)Ú	CurlECodeÚCurlHttpVersionÚCurlInfoÚCurlOptÚ
CurlWsFlag)ÚCurlCffiWarningÚreturnÚstrc                 óD  — dD ]F} t           j                             | ¦  «        }|r#t           j                             |¦  «        r|c S ŒGt          j        ¦   «         }|j        r+t           j                             |j        ¦  «        r|j        S t          j	        ¦   «         S )N)ÚSSL_CERT_FILEÚCURL_CA_BUNDLEÚREQUESTS_CA_BUNDLE)
ÚosÚenvironÚgetÚpathÚexistsÚsslÚget_default_verify_pathsÚcafileÚcertifiÚwhere)Úenv_varr   Údefaultss      úM/home/lighthouse/health/venv/lib64/python3.11/site-packages/curl_cffi/curl.pyÚ_default_cacertr&      s’   € àLð ð ˆÝŒz�~Š~˜gÑ&Ô&ˆØð 	•B”G—N’N 4Ñ(Ô(ð 	ØˆKˆKˆKøõ Ô+Ñ-Ô-€HØ„ð �2œ7Ÿ>š>¨(¬/Ñ:Ô:ð ØŒÐõ Œ=‰?Œ?Ðó    s   HTTP/\d\.\d [0-9]{3} (.*)s   HTTP/(\d\.\d) ([0-9]{3}) (.*)c                  óB   — e Zd ZU ded<   ded<   ded<   ded<   ded<   dS )ÚCurlWsFrameÚintÚageÚflagsÚoffsetÚ	bytesleftÚlenN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© r'   r%   r)   r)   ,   s=   € € € € € € Øˆˆ‰Øˆ
ˆ
‰
Øˆˆ‰Øˆˆ‰Øˆˆ‰ˆˆr'   r)   c                  ó(   ‡ — e Zd ZdZ	 d
dˆ fd	„Zˆ xZS )Ú	CurlErrorz$Base exception for curl_cffi packager   Úmsgr   Úcodeúint | CurlECode | Literal[0]r   ÚNonec                óP   •—  t          ¦   «         j        |g|¢R i |¤Ž || _        d S ©N)ÚsuperÚ__init__r8   )Úselfr7   r8   ÚargsÚkwargsÚ	__class__s        €r%   r>   zCurlError.__init__7   s7   ø€ ð 	�‰ŒÔ˜Ð.˜tÐ.Ð.Ð. vÐ.Ð.Ð.Ø26ˆŒ	ˆ	ˆ	r'   )r   )r7   r   r8   r9   r   r:   )r0   r1   r2   Ú__doc__r>   Ú__classcell__)rB   s   @r%   r6   r6   4   sM   ø€ € € € € Ø.Ð.ð >?ð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7r'   r6   é   é   é   é   é   i  l   ÿÿ i   Útype_r*   Úsizec                ó€   — t          j        |¦  «        }t          j        ||¦  «        dd…         } |||¦  «         dS )z ffi callback for curl debug infoNr   )r   Úfrom_handleÚbuffer)ÚcurlrJ   ÚdatarK   ÚclientpÚcallbackÚtexts          r%   Údebug_functionrT   L   sD   € õ Œ˜wÑ'Ô'€HÝŒ:�d˜DÑ!Ô! ! ! !Ô$€DØ€HˆU�DÑÔÐØˆ1r'   FÚbÚbytesÚ	uppercaseÚboolc                óR   ‡— |rdndŠd                      ˆfd„| D ¦   «         ¦  «        S )u‘   
    Convert a bytes object to a space-separated hex string, e.g. "0a ff 3c".
    If uppercase=True, letters will be Aâ€“F instead of aâ€“f.
    z{:02X}z{:02x}ú c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S r<   )Úformat)Ú.0ÚbyteÚfmts     €r%   ú	<genexpr>zbytes_to_hex.<locals>.<genexpr>[   s/   øè è € Ð3Ð3¨�C—J’J˜tÑ$Ô$Ð3Ð3Ð3Ð3Ð3Ð3r'   )Újoin)rU   rW   r_   s     @r%   Úbytes_to_hexrb   U   s:   ø€ ð
  Ð
-ˆ(ˆ( X€CØ�8Š8Ð3Ð3Ð3Ð3°Ð3Ñ3Ô3Ñ3Ô3Ð3r'   rP   r:   c                óX  — t           dt          dt          dt          dt          dt
          dt          di}d}|                     | d¦  «        }| t
          t          fv rgt          |d |…         ¦  «        }t          |¦  «        |k    rd	nd
}t          j                             |› dt          |¦  «        › d|› |› d�¦  «         d S 	 |                     d¦  «        }t          j                             |› d|› �¦  «         | t           t          t          fvr!t          j                             d¦  «         d S d S # t          $ ri t          |d |…         ¦  «        }t          |¦  «        |k    rd	nd
}t          j                             |› dt          |¦  «        › d|› |› d�¦  «         Y d S w xY w)NÚ*ú<ú>z< DATAz> DATAz< SSLz> SSLé(   Ú z...z [z	 bytes]: ú
zutf-8rZ   )ÚCURLINFO_TEXTÚCURLINFO_HEADER_INÚCURLINFO_HEADER_OUTÚCURLINFO_DATA_INÚCURLINFO_DATA_OUTÚCURLINFO_SSL_DATA_INÚCURLINFO_SSL_DATA_OUTr   rb   r/   ÚsysÚstderrÚwriteÚdecodeÚUnicodeDecodeError)rJ   rP   ÚPREFIXESÚMAX_SHOW_BYTESÚprefixÚhex_strÚpostfixrS   s           r%   Údebug_function_defaultr{   ^   sÎ  € å�sÝ˜CÝ˜SÝ˜(Ý˜8Ý˜gÝ˜wð€Hð €NØ�\Š\˜% Ñ%Ô%€Fð Õ%Õ'<Ð=Ð=Ð=Ý˜t O ^ OÔ4Ñ5Ô5ˆÝ˜D™	œ	 ^Ò3Ð3�"�"¸ˆÝŒ
×Ò˜FÐNÐN¥c¨$¡i¤iÐNÐN¸'ÐNÀ7ÐNÐNÐNÑOÔOÐOÐOÐOð		TØ—;’;˜wÑ'Ô'ˆDÝŒJ×Ò Ð/Ð/¨Ð/Ð/Ñ0Ô0Ð0Ø�]Õ,>Õ@SÐTÐTÐTÝ”
× Ò  Ñ&Ô&Ð&Ð&Ð&ð UÐTøå!ð 	Tð 	Tð 	Tå" 4¨¨¨Ô#8Ñ9Ô9ˆGÝ ™IœI¨Ò7Ð7�b�b¸UˆGÝŒJ×Ò ÐRÐR­#¨d©)¬)ÐRÐR¸gÐRÀwÐRÐRÐRÑSÔSÐSÐSÐSÐSð		Tøøøs   ÃA.D6 Ä6A/F)Æ(F)c                ó”   — t          j        |¦  «        }|                     t          j        | |¦  «        dd…         ¦  «         ||z  S )zAffi callback for curl write function, directly writes to a bufferN)r   rM   rs   rN   )ÚptrrK   ÚnmembÚuserdatarN   s        r%   Úbuffer_callbackr€   }   sD   € õ Œ_˜XÑ&Ô&€FØ
‡L‚L•”˜C Ñ'Ô'¨¨¨Ô*Ñ+Ô+Ð+Ø�4‰<Ðr'   c                ó(   — | sdS t          | ¦  «        S ©Nr   )r*   )Úss    r%   Ú
ensure_intr„   †   s   € Øð ØˆqÝˆq‰6Œ6€Mr'   c                ó  — t          j        |¦  «        } |t          j        | |¦  «        dd…         ¦  «        }t          |¦  «        }|t          k    s|t
          k    r|S |||z  k    rt          j        dt          d¬¦  «         ||z  S )zHffi callback for curl write function, calls the callback python functionNzWrote bytes != received bytes.rE   ©Ú
stacklevel)	r   rM   rN   r„   ÚCURL_WRITEFUNC_PAUSEÚCURL_WRITEFUNC_ERRORÚwarningsÚwarnr   )r}   rK   r~   r   rR   Úwrotes         r%   Úwrite_callbackr�   Œ   s’   € õ Œ˜xÑ(Ô(€HØˆH•S”Z  UÑ+Ô+¨A¨A¨AÔ.Ñ/Ô/€EÝ�uÑÔ€EØÕ$Ò$Ð$¨Õ1EÒ(EÐ(EØˆà�˜‘ÒÐÝŒÐ6½ÐTUÐVÑVÔVÐVØ�4‰<Ðr'   c                ó¾  — t          j        |¦  «        }||z  }|                     |¦  «        }|€dS t          |t          ¦  «        r|S t          |t
          ¦  «        r|                     ¦   «         }|sdS t          |¦  «        |k    r#t          dt          |¦  «        › d|› d�¦  «        ‚t          j	        | |t          |¦  «        ¦  «         t          |¦  «        S )zIffi callback for curl read function, reads from a buffer/file-like objectNr   úRead callback returned ú bytes, but only ú bytes are allowed.)
r   rM   ÚreadÚ
isinstancer*   r   Úencoder/   r6   Úmemmove)r}   rK   r~   r   rN   Úmax_lenrP   s          r%   Úread_buffer_callbackr—   ›   sá   € õ Œ_˜XÑ&Ô&€FØ�U‰l€GØ�;Š;�wÑÔ€DØ€|ØˆqÝ�$�ÑÔð ØˆÝ�$�ÑÔð Ø�{Š{‰}Œ}ˆØð ØˆqÝ
ˆ4�y„y�7ÒÐÝØ^¥c¨$¡i¤iÐ^Ð^À'Ð^Ð^Ð^ñ
ô 
ð 	
õ „K��T�3˜t™9œ9Ñ%Ô%Ð%Ýˆt‰9Œ9Ðr'   c                óª  — t          j        |¦  «        }||z  } ||¦  «        }|€dS t          |t          ¦  «        r|S t          |t          ¦  «        r|                     ¦   «         }|sdS t          |¦  «        |k    r#t          dt          |¦  «        › d|› d�¦  «        ‚t          j        | |t          |¦  «        ¦  «         t          |¦  «        S )zGffi callback for curl read function, calls the callback python functionNr   r�   r�   r‘   )	r   rM   r“   r*   r   r”   r/   r6   r•   )r}   rK   r~   r   rR   r–   rP   s          r%   Úread_callbackr™   ±   sß   € õ Œ˜xÑ(Ô(€HØ�U‰l€GØˆ8�GÑÔ€DØ€|ØˆqÝ�$�ÑÔð ØˆÝ�$�ÑÔð Ø�{Š{‰}Œ}ˆØð ØˆqÝ
ˆ4�y„y�7ÒÐÝØ^¥c¨$¡i¤iÐ^Ð^À'Ð^Ð^Ð^ñ
ô 
ð 	
õ „K��T�3˜t™9œ9Ñ%Ô%Ð%Ýˆt‰9Œ9Ðr'   úlist[bytes]c                ó¤   — g }| }|r5|                      t          j        |j        ¦  «        ¦  «         |j        }|°5t          j        | ¦  «         |S )z%Converts curl slist to a python list.)Úappendr   ÚstringrP   Únextr   Úcurl_slist_free_all)ÚheadÚresultr}   s      r%   Úslist_to_listr¢   È   s[   € à€FØ
€CØ
ð Ø�Š•c”j ¤Ñ*Ô*Ñ+Ô+Ð+ØŒhˆð ð õ Ô˜DÑ!Ô!Ð!Ø€Mr'   c                  ó  — e Zd ZdZdZd@dAd„ZdBd„ZdBd„ZdBd„ZdCd„Z	dDd„Z
dEd„ZdFd„ZdGd„ZdHdId"„ZdBd#„ZdJdKd&„ZdLd'„Z	 dJdKd(„ZdMd)„ZdBd*„ZdNd.„ZedOd0„¦   «         ZedPd2„¦   «         ZdBd3„ZdQd5„Zej        fdRd:„ZdSdTd?„ZdS )UÚCurlz;
    Wrapper for ``curl_easy_*`` functions of libcurl.
    i   rh   FNÚcacertr   ÚdebugrX   r   r:   c                ó`  — |r|nt          j        ¦   «         | _        t          j        | _        t          j        | _        t          j        | _        |pt          | _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        t          j        dd¦  «        | _        || _        |                      ¦   «          t          j        d| j        ¦  «        | _        t          j        d¦  «        | _        t          j        d¦  «        | _        t          j        d¦  «        | _        dS )zï
        Parameters:
            cacert: CA cert path to use, by default, certs from ``certifi`` are used.
            debug: whether to show curl debug messages.
            handle: a curl handle instance from ``curl_easy_init``.
        FNzchar[]é   zsize_t *zstruct curl_ws_frame **)r   Úcurl_easy_initÚ_curlr   ÚNULLÚ_headersÚ_proxy_headersÚ_resolveÚDEFAULT_CACERTÚ_cacertÚ_is_cert_setÚ_skip_cacertÚ_write_handleÚ_header_handleÚ_debug_handleÚ_body_handleÚ_read_handleÚnewÚ_error_bufferÚ_debugÚ_set_error_bufferÚ_WS_RECV_BUFFER_SIZEÚ_ws_recv_bufferÚ_ws_recv_n_recvÚ_ws_recv_p_frameÚ_ws_send_n_sent)r?   r¥   r¦   Úhandles       r%   r>   zCurl.__init__Ú   s   € ð  &Ð?�V�V­3Ô+=Ñ+?Ô+?ˆŒ
ÝœˆŒÝ!œhˆÔÝœˆŒØÐ/¥ˆŒØ!ˆÔØ!ˆÔØ"&ˆÔØ#'ˆÔØ"&ˆÔØ!%ˆÔØ!%ˆÔå œW X¨sÑ3Ô3ˆÔØˆŒØ×ÒÑ Ô Ð õ  #œw x°Ô1JÑKÔKˆÔÝ"œw zÑ2Ô2ˆÔÝ #¤Ð(AÑ BÔ BˆÔÝ"œw zÑ2Ô2ˆÔÐÐr'   c                óØ   — t          j        | j        t          j        | j        ¦  «        }|dk    rt          j        dt          d¬¦  «         | j	        r|  
                    ¦   «          d S d S )Nr   zFailed to set error bufferrE   r†   )r   Ú_curl_easy_setoptrª   r   ÚERRORBUFFERr¹   rŠ   r‹   r   rº   r¦   ©r?   Úrets     r%   r»   zCurl._set_error_bufferø   se   € ÝÔ# D¤JµÔ0CÀTÔEWÑXÔXˆØ�!Š8ˆ8ÝŒMÐ6½ÐTUÐVÑVÔVÐVØŒ;ð 	Ø�JŠJ‰LŒLˆLˆLˆLð	ð 	r'   c                ó†   — |                       t          j        d¦  «         |                       t          j        d¦  «         dS )zSet debug to Truer
   TN)Úsetoptr   ÚVERBOSEÚDEBUGFUNCTION©r?   s    r%   r¦   z
Curl.debugÿ   s5   € à�Š•G”O QÑ'Ô'Ð'Ø�Š•GÔ)¨4Ñ0Ô0Ð0Ð0Ð0r'   c                ó.   — |                       ¦   «          d S r<   ©ÚcloserË   s    r%   Ú__del__zCurl.__del__  ó   € Ø�
Š
‰Œˆˆˆr'   Úerrcoder*   r@   r   c                ó:   — |dk    rd S  | j         |g|¢R Ž }|�|‚d S r‚   )Ú
_get_error)r?   rÑ   r@   Úerrors       r%   Ú_check_errorzCurl._check_error  s<   € Ø�aŠ<ˆ<ØˆFà�” Ð/¨$Ð/Ð/Ð/ˆØÐØˆKð Ðr'   c           	     ó  — |dk    rzt          j        | j        ¦  «                             d¬¦  «        }d                     d„ |D ¦   «         ¦  «        }t          d|› d|› d|› d	�t          t          |¦  «        ¬
¦  «        S d S )Nr   Úbackslashreplace©ÚerrorsrZ   c                ó,   — g | ]}t          |¦  «        ‘ŒS r4   )r   )r]   Úas     r%   ú
<listcomp>z#Curl._get_error.<locals>.<listcomp>  s   € Ð4Ð4Ð4¨!�s 1™vœvÐ4Ð4Ð4r'   z
Failed to z	, curl: (z) zK. See https://curl.se/libcurl/c/libcurl-errors.html first for more details.)r8   )r   r�   r¹   rt   ra   r6   r	   r   )r?   rÑ   r@   ÚerrmsgÚactions        r%   rÓ   zCurl._get_error  sª   € Ø�aŠ<ˆ<Ý”Z Ô 2Ñ3Ô3×:Ò:ÐBTÐ:ÑUÔUˆFØ—X’XÐ4Ð4¨tÐ4Ñ4Ô4Ñ5Ô5ˆFÝð˜Vð ð ¨gð ð ¸ð ð ð õ �) WÑ-Ô-ð	ñ ô ð ð ˆ<r'   Úoptionr   Úvaluec                ó˜  — | j         €dS ddddddœ}|                     |dz  dz  ¦  «        }|dk    s|dk    rt          j        ||¦  «        }�n|t          j        k    rLt          j        |¦  «        }|| _        t          j	        | j         t          j
        t          j        ¦  «         �n¬|t          j        k    rLt          j        |¦  «        }|| _        t          j	        | j         t          j        t          j        ¦  «         �nP|t          j        k    rLt          j        |¦  «        }|| _        t          j	        | j         t          j        t          j        ¦  «         �nô|t          j
        k    rXt          j        |¦  «        }|| _        t          j	        | j         t          j
        t          j        ¦  «         t          j        }�nŒ|t          j        k    rXt          j        |¦  «        }|| _        t          j	        | j         t          j        t          j        ¦  «         t          j        }�n$|t          j        k    rXt          j        |¦  «        }|| _        t          j	        | j         t          j        t          j        ¦  «         t          j        }�n¼|t          j        k    rc|d	u rt,          }t          j        |¦  «        }|| _        t          j	        | j         t          j        t          j        ¦  «         t          j        }�nI|dk    �r0t5          |t6          ¦  «        �r t          j        t          j        t          j        t          j        t          j         t          j!        t          j"        t          j#        t          j$        t          j%        t          j&        t          j'        t          j(        t          j)        h}tT          j+         ,                    d
¦  «        r0||v r,t[          j.        d¦  «        }| /                    |d¬¦  «        }n| /                    ¦   «         }n|}|t          j0        k    r|| _1        nte          d|› �¦  «        ‚|t          j3        k    rE|D ]!}t          j4        | j5        |¦  «        | _5        Œ"t          j	        | j         || j5        ¦  «        }	nî|t          j6        k    rE|D ]!}
t          j4        | j7        |
¦  «        | _7        Œ"t          j	        | j         || j7        ¦  «        }	n™|t          j8        k    rn|D ]J}t5          |t6          ¦  «        r| /                    ¦   «         }t          j4        | j9        |¦  «        | _9        ŒKt          j	        | j         || j9        ¦  «        }	nt          j	        | j         ||¦  «        }	|  :                    |	d||¦  «         |t          j        k    rd	| _;        |	S )a  Wrapper for ``curl_easy_setopt``.

        Args:
            option: option to set, using constants from CurlOpt enum
            value: value to set, strings will be handled automatically

        Returns:
            0 if no error, see ``CurlECode``.
        Nr   úlong*zchar*zvoid*úint64_t*)r   é'  i N  i0u  i@œ  rä   TÚwinFÚstrictrØ   zOption unsupported: rÈ   )<rª   r   r   r¸   r   Ú	WRITEDATAÚ
new_handler³   r   rÃ   ÚWRITEFUNCTIONr€   Ú
HEADERDATAr´   ÚHEADERFUNCTIONÚREADDATAr·   ÚREADFUNCTIONr—   r�   r™   rÊ   r{   rµ   rT   Ú	DEBUGDATAr“   r   ÚCAINFOÚCAPATHÚPROXY_CAINFOÚPROXY_CAPATHÚSSLCERTÚSSLKEYÚCRLFILEÚ
ISSUERCERTÚSSH_PUBLIC_KEYFILEÚSSH_PRIVATE_KEYFILEÚ
COOKIEFILEÚ	COOKIEJARÚ
NETRC_FILEÚUNIX_SOCKET_PATHrq   ÚplatformÚ
startswithÚlocaleÚgetpreferredencodingr”   Ú
POSTFIELDSr¶   ÚNotImplementedErrorÚ
HTTPHEADERÚcurl_slist_appendr¬   ÚPROXYHEADERr­   ÚRESOLVEr®   rÕ   r±   )r?   rß   rà   Úinput_optionÚ
value_typeÚc_valueÚfilepath_optsÚencÚheaderrÆ   Úproxy_headerÚresolves               r%   rÈ   zCurl.setopt  s  € ð Œ:ÐØ�1ð ØØØØð
ð 
ˆð "×%Ò% v°¡¸%Ñ&?Ñ@Ô@ˆ
Ø˜Ò Ð  J°*Ò$<Ð$<Ý”g˜j¨%Ñ0Ô0ˆG‰GØ•wÔ(Ò(Ð(Ý”n UÑ+Ô+ˆGØ!(ˆDÔÝÔ!Ø”
�GÔ1µ3Ô3Fñô ð ñ ð •wÔ)Ò)Ð)Ý”n UÑ+Ô+ˆGØ")ˆDÔÝÔ!Ø”
�GÔ2µCÔ4Gñô ð ñ ð •wÔ'Ò'Ð'Ý”n UÑ+Ô+ˆGØ 'ˆDÔÝÔ!Ø”
�GÔ0µ#Ô2Jñô ð ñ ð •wÔ,Ò,Ð,Ý”n UÑ+Ô+ˆGØ!(ˆDÔÝÔ! $¤*­gÔ.CÅSÔEWÑXÔXÐXÝÔ&ˆF‰FØ•wÔ-Ò-Ð-Ý”n UÑ+Ô+ˆGØ")ˆDÔÝÔ!Ø”
�GÔ2µCÔ4Fñô ð õ Ô'ˆF‰FØ•wÔ+Ò+Ð+Ý”n UÑ+Ô+ˆGØ 'ˆDÔÝÔ! $¤*­gÔ.BÅCÔDUÑVÔVÐVÝÔ%ˆF‰FØ•wÔ,Ò,Ð,Ø˜ˆ}ˆ}Ý.�Ý”n UÑ+Ô+ˆGØ!(ˆDÔÝÔ! $¤*­gÔ.CÅSÔEWÑXÔXÐXÝÔ&ˆF‰FØ˜7Ò"Ñ"Ý˜%¥Ñ%Ô%ñ  õ
 ”NÝ”NÝÔ(ÝÔ(Ý”OÝ”NÝ”OÝÔ&ÝÔ.ÝÔ/ÝÔ&ÝÔ%ÝÔ&ÝÔ,ð!�õ  ”<×*Ò*¨5Ñ1Ô1ð -°fÀÐ6MÐ6Må Ô5°eÑ<Ô<�CØ#Ÿlšl¨3°x˜lÑ@Ô@�G�Gà#Ÿlšl™nœn�G�Gà�à�Ô+Ò+Ð+Ø$+�Ô!øå%Ð&E¸VÐ&EÐ&EÑFÔFÐFà•WÔ'Ò'Ð'Øð Mð M�Ý #Ô 5°d´mÀVÑ LÔ L�”�ÝÔ'¨¬
°F¸D¼MÑJÔJˆCˆCØ•wÔ*Ò*Ð*Ø %ð ð �Ý&)Ô&;ØÔ'¨ñ'ô '�Ô#Ð#õ Ô'¨¬
°F¸DÔ<OÑPÔPˆCˆCØ•w”Ò&Ð&Ø ð Nð N�Ý˜g¥sÑ+Ô+ð /Ø%ŸnšnÑ.Ô.�GÝ #Ô 5°d´mÀWÑ MÔ M�”�ÝÔ'¨¬
°F¸D¼MÑJÔJˆCˆCåÔ'¨¬
°F¸GÑDÔDˆCØ×Ò˜#˜x¨°Ñ7Ô7Ð7à•W”^Ò#Ð#Ø $ˆDÔàˆ
r'   r   ú%bytes | int | float | list[str | int]c                óà  — dddddddœ}t           j        t          t          t          t          t          dœ}|dz  }| j        €|d	k    rd
S  ||         ¦   «         S t          j        ||         ¦  «        }t          j        | j        ||¦  «        }|  	                    |d|¦  «         |dk    rt          |d         ¦  «        S |d         t           j        k    rd
S  ||         |d         ¦  «        S )a  Wrapper for ``curl_easy_getinfo``. Gets information in response after
        curl.perform.

        Parameters:
            option: option to get info of, using constants from ``CurlInfo`` enum

        Returns:
            value retrieved from last perform.
        zchar**râ   zdouble*zstruct curl_slist **rã   )é   i    i  0 é  @ i  P i  ` i  ð Nr  r'   Úgetinfor  r   )r   r�   r*   ÚfloatÚlistrª   r¸   r   Úcurl_easy_getinforÕ   r¢   r«   )r?   rß   Ú
ret_optionÚret_cast_optionÚoption_typer	  rÆ   s          r%   r  zCurl.getinfo›  s	  € ð ØØØ,ØØ ð
ð 
ˆ
õ ”jÝÝÝÝÝð
ð 
ˆð ˜xÑ'ˆàŒ:ÐØ˜hÒ&Ð&Ø�sØ/�? ;Ô/Ñ1Ô1Ð1å”'˜* [Ô1Ñ2Ô2ˆÝÔ# D¤J°¸Ñ@Ô@ˆØ×Ò˜#˜y¨&Ñ1Ô1Ð1à˜(Ò"Ð"Ý  ¨¤Ñ,Ô,Ð,Ø�1Œ:�œÒ!Ð!Ø�3à+ˆ˜{Ô+¨G°A¬JÑ7Ô7Ð7r'   rV   c                óL   — t          j        t          j        ¦   «         ¦  «        S )z#Get the underlying libcurl version.)r   r�   r   Úcurl_versionrË   s    r%   ÚversionzCurl.versionÈ  s   € åŒz�#Ô*Ñ,Ô,Ñ-Ô-Ð-r'   TÚtargetÚdefault_headersc                óˆ   — | j         €dS t          j        | j         |                     ¦   «         t	          |¦  «        ¦  «        S )zéSet the browser type to impersonate.

        Parameters:
            target: browser to impersonate.
            default_headers: whether to add default headers, like User-Agent.

        Returns:
            0 if no error.
        Nr   )rª   r   Úcurl_easy_impersonater”   r*   )r?   r  r  s      r%   ÚimpersonatezCurl.impersonateÌ  s?   € ð Œ:ÐØ�1ÝÔ(ØŒJ˜Ÿš™œ­¨_Ñ)=Ô)=ñ
ô 
ð 	
r'   c                ó  — | j         rd S | j        sx|                      t          j        | j        ¦  «        }|                      |d¦  «         |                      t          j        | j        ¦  «        }|                      |d¦  «         d S d S )Nz
set cacertzset proxy cacert)r²   r±   rÈ   r   rï   r°   rÕ   rñ   rÅ   s     r%   Ú_ensure_cacertzCurl._ensure_cacertÜ  s‰   € ØÔð 	ØˆFØÔ ð 	7Ø—+’+�gœn¨d¬lÑ;Ô;ˆCØ×Ò˜c <Ñ0Ô0Ð0Ø—+’+�gÔ2°D´LÑAÔAˆCØ×Ò˜cÐ#5Ñ6Ô6Ð6Ð6Ð6ð		7ð 	7r'   Úclear_headersÚclear_resolvec                ó  — | j         €t          d¦  «        ‚|                      ¦   «          t          j        | j         ¦  «        }	 |                      |d¦  «         |                      ||¦  «         dS # |                      ||¦  «         w xY w)a+  Wrapper for ``curl_easy_perform``, performs a curl request.

        Parameters:
            clear_headers: clear header slist used in this perform
            clear_resolve: clear resolve slist used in this perform

        Raises:
            CurlError: if the perform was not successful.
        Nz(Cannot perform request on closed handle.Úperform)rª   r6   r#  r   Úcurl_easy_performrÕ   Úclean_handles_and_buffers)r?   r$  r%  rÆ   s       r%   r'  zCurl.performå  s™   € ð Œ:ÐÝÐFÑGÔGÐGð 	×ÒÑÔÐõ Ô# D¤JÑ/Ô/ˆð	IØ×Ò˜c 9Ñ-Ô-Ð-ð ×*Ò*¨=¸-ÑHÔHÐHÐHÐHøˆD×*Ò*¨=¸-ÑHÔHÐHÐHøøøs   ÁA3 Á3Bc                óF   — | j         €dS t          j        | j         ¦  «        S r‚   )rª   r   Úcurl_easy_upkeeprË   s    r%   ÚupkeepzCurl.upkeepþ  s"   € ØŒ:ÐØ�1ÝÔ# D¤JÑ/Ô/Ð/r'   c                óÒ  — d| _         d| _        d| _        d| _        d| _        |r?| j        t          j        k    rt          j	        | j        ¦  «         t          j        | _        |r€| j
        t          j        k    rt          j	        | j
        ¦  «         t          j        | _
        | j        t          j        k    rt          j	        | j        ¦  «         t          j        | _        dS dS )zuClean up handles and buffers after ``perform`` and ``close``,
        called at the end of ``perform`` and ``close``.N)r³   r´   rµ   r¶   r·   r®   r   r«   r   rŸ   r¬   r­   )r?   r$  r%  s      r%   r)  zCurl.clean_handles_and_buffers  sÐ   € ð
 "ˆÔØ"ˆÔØ!ˆÔØ ˆÔØ ˆÔàð 	%ØŒ}¥¤Ò(Ð(ÝÔ'¨¬Ñ6Ô6Ð6ÝœHˆDŒMàð 	+ØŒ}¥¤Ò(Ð(ÝÔ'¨¬Ñ6Ô6Ð6ÝœHˆDŒMàÔ"¥c¤hÒ.Ð.ÝÔ'¨Ô(;Ñ<Ô<Ð<Ý"%¤(ˆDÔÐÐð	+ð 	+r'   c                óœ   — | j         €t          d¦  «        ‚t          j        | j         ¦  «        }t	          | j        | j        |¬¦  «        }|S )zµWrapper for ``curl_easy_duphandle``.

        This is not a full copy of entire curl object in python. For example, headers
        handle is not copied, you have to set them again.NzCannot duplicate closed handle.)r¥   r¦   rÁ   )rª   r6   r   Úcurl_easy_duphandler¤   r°   rº   )r?   rè   Úcs      r%   Ú	duphandlezCurl.duphandle  sJ   € ð
 Œ:ÐÝÐ=Ñ>Ô>Ð>ÝÔ,¨T¬ZÑ8Ô8ˆ
Ý˜œ¨D¬KÀ
ÐKÑKÔKˆØˆr'   c                ó¬   — d| _         d| _        | j        �-t          j        | j        ¦  «         |                      ¦   «          t          j        | _        dS )z8Reset all curl options, wrapper for ``curl_easy_reset``.FN)	r±   r²   rª   r   Úcurl_easy_resetr»   r   r«   r®   rË   s    r%   Úresetz
Curl.reset'  sL   € à!ˆÔØ!ˆÔØŒ:Ð!ÝÔ ¤
Ñ+Ô+Ð+Ø×"Ò"Ñ$Ô$Ð$ÝœˆŒˆˆr'   Úheadersrš   r   c                óØ   — t          ¦   «         }|D ]X}|                     ¦   «                              d¦  «        r/|                     |dd…                              ¦   «         ¦  «         ŒY|S )zÆExtract ``cookies.SimpleCookie`` from header lines.

        Parameters:
            headers: list of headers in bytes.

        Returns:
            A parsed cookies.SimpleCookie instance.
        s   set-cookie: é   N)r   Úlowerrþ   Úloadrt   )r?   r5  Úcookier  s       r%   Úparse_cookie_headerszCurl.parse_cookie_headers0  sf   € õ  ,™~œ~ˆØð 	2ð 	2ˆFØ�|Š|‰~Œ~×(Ò(¨Ñ9Ô9ð 2Ø—’˜F 2 3 3œK×.Ò.Ñ0Ô0Ñ1Ô1Ð1øØˆr'   Ústatus_linec                óh   — t                                | ¦  «        }|r|                     d¦  «        ndS )zTExtract reason phrase, like ``OK``, ``Not Found`` from response status
        line.r
   r'   )ÚREASON_PHRASE_REÚmatchÚgroup)r<  Úms     r%   Úget_reason_phrasezCurl.get_reason_phrase?  s0   € õ ×"Ò" ;Ñ/Ô/ˆØÐ'ˆq�wŠw�q‰zŒzˆz CÐ'r'   ú"tuple[CurlHttpVersion, int, bytes]c                óÌ  — t                                | ¦  «        }|st          j        ddfS |                     d¦  «        dk    rt          j        }nX|                     d¦  «        dk    rt          j        }n2|                     d¦  «        dk    rt          j        }nt          j        }t          |                     d¦  «        ¦  «        }|                     d¦  «        }|||fS )	zfParse status line.

        Returns:
            http_version, status_code, and reason phrase
        r   r'   r
   z2.0z1.1z1.0rE   rF   )	ÚSTATUS_LINE_REr?  r   ÚV1_0r@  ÚV2_0ÚV1_1ÚNONEr*   )r<  rA  Úhttp_versionÚstatus_codeÚreasons        r%   Úparse_status_linezCurl.parse_status_lineF  sÅ   € õ × Ò  Ñ-Ô-ˆØð 	0Ý"Ô'¨¨CÐ/Ð/Ø�7Š7�1‰:Œ:˜ÒÐÝ*Ô/ˆLˆLØ�WŠW�Q‰ZŒZ˜5Ò Ð Ý*Ô/ˆLˆLØ�WŠW�Q‰ZŒZ˜5Ò Ð Ý*Ô/ˆLˆLå*Ô/ˆLÝ˜!Ÿ'š' !™*œ*‘o”oˆØ—’˜‘”ˆà˜[¨&Ð0Ð0r'   c                ó   — |                       ¦   «          | j        r t          j        | j        ¦  «         d| _        t	          j        | j        ¦  «         | j        �"t	          j        | j        ¦  «         d| _        dS dS )zAClose and cleanup curl handle, wrapper for ``curl_easy_cleanup``.N)r)  rª   r   Úcurl_easy_cleanupr   Úreleaser¹   r½   rË   s    r%   rÎ   z
Curl.close]  s}   € à×&Ò&Ñ(Ô(Ð(àŒ:ð 	ÝÔ! $¤*Ñ-Ô-Ð-ØˆDŒJÝŒ�DÔ&Ñ'Ô'Ð'àÔÐ+ÝŒK˜Ô,Ñ-Ô-Ð-Ø#'ˆDÔ Ð Ð ð ,Ð+r'   útuple[bytes, CurlWsFrame]c                ó2  — | j         €t          d¦  «        ‚t          j        | j         | j        | j        | j        | j        ¦  «        x}r|                      |d¦  «         t          j
        | j        ¦  «        d| j        d         …         | j        d         fS )z»Receive a frame from a websocket connection.

        Returns:
            a tuple of frame content and curl frame meta struct.

        Raises:
            CurlError: if failed.
        Nz/Cannot receive websocket data on closed handle.ÚWS_RECVr   )rª   r6   r   Úcurl_ws_recvr½   r¼   r¾   r¿   rÕ   r   rN   rÅ   s     r%   Úws_recvzCurl.ws_recvj  s¦   € ð Œ:ÐÝÐMÑNÔNÐNåÔ"ØŒJØÔ ØÔ%ØÔ ØÔ!ñ
ô 
ð 
ˆ3ð 	.ð ×Ò˜c 9Ñ-Ô-Ð-õ ŒJ�tÔ+Ñ,Ô,Ð-F¨tÔ/CÀAÔ/FÐ-FÔGØÔ! !Ô$ð
ð 	
r'   Úpayloadúbytes | memoryviewr,   úCurlWsFlag | intc                óü   — | j         €t          d¦  «        ‚t          j        | j         t	          j        |¦  «        t          |¦  «        | j        d|¦  «        x}r|                      |d¦  «         | j        d         S )a  Send data to a websocket connection.

        Args:
            payload: content to send.
            flags: websocket flag to set for the frame, default: binary.

        Returns:
            The number of bytes sent.

        Raises:
            CurlError: if failed.
        Nz,Cannot send websocket data on closed handle.r   ÚWS_SEND)	rª   r6   r   Úcurl_ws_sendr   Úfrom_bufferr/   rÀ   rÕ   )r?   rV  r,   rÆ   s       r%   Úws_sendzCurl.ws_send…  s„   € ð Œ:ÐÝÐJÑKÔKÐKåÔ"ØŒJÝŒO˜GÑ$Ô$Ý�‰LŒLØÔ ØØñ
ô 
ð 
ˆ3ð 	.ð ×Ò˜c 9Ñ-Ô-Ð-ØÔ# AÔ&Ð&r'   éè  r'   r8   Úmessagec                ót   — t          j        d|¦  «        |z   }|                      |t          j        ¬¦  «        S )a“  Close a websocket connection. Shorthand for :meth:`ws_send`
        with close code and message. Note that to completely close the connection,
        you must close the curl handle after this call with :meth:`close`.

        Args:
            code: close code.
            message: close message.

        Returns:
            0 if no error.

        Raises:
            CurlError: if failed.
        z!H)r,   )ÚstructÚpackr]  r   ÚCLOSE)r?   r8   r_  rV  s       r%   Úws_closezCurl.ws_close¢  s3   € õ ”+˜d DÑ)Ô)¨GÑ3ˆØ�|Š|˜G­:Ô+;ˆ|Ñ<Ô<Ð<r'   )rh   FN)r¥   r   r¦   rX   r   r:   ©r   r:   )rÑ   r*   r@   r   r   r:   )rÑ   r*   r@   r   )rß   r   rà   r   r   r*   )rß   r   r   r  )r   rV   )T)r  r   r  rX   r   r*   )TT)r$  rX   r%  rX   r   r:   )r   r*   )r   r¤   )r5  rš   r   r   )r<  rV   r   rV   )r<  rV   r   rC  )r   rQ  )rV  rW  r,   rX  r   r*   )r^  r'   )r8   r*   r_  rV   r   r*   )r0   r1   r2   rC   r¼   r>   r»   r¦   rÏ   rÕ   rÓ   rÈ   r  r  r!  r#  r'  r,  r)  r1  r4  r;  ÚstaticmethodrB  rM  rÎ   rU  r   ÚBINARYr]  rd  r4   r'   r%   r¤   r¤   Ó   sD  € € € € € ðð ð &Ðð3ð 3ð 3ð 3ð 3ð<ð ð ð ð1ð 1ð 1ð 1ð
ð ð ð ðð ð ð ð	ð 	ð 	ð 	ðð ð ð ðB+8ð +8ð +8ð +8ðZ.ð .ð .ð .ð
ð 
ð 
ð 
ð 
ð 7ð 7ð 7ð 7ðIð Ið Ið Ið Ið20ð 0ð 0ð 0ð AEð+ð +ð +ð +ð +ð2	ð 	ð 	ð 	ð!ð !ð !ð !ðð ð ð ð ð(ð (ð (ñ „\ð(ð ð1ð 1ð 1ñ „\ð1ð,(ð (ð (ð (ð
ð 
ð 
ð 
ð8 FPÔEVð'ð 'ð 'ð 'ð 'ð:=ð =ð =ð =ð =ð =ð =r'   r¤   c                  ób   — e Zd ZdZddd„Zdddddœdd„Zedd„¦   «         Zddd„Zdd„Z	dd„Z
dS )ÚCurlMimez#Wrapper for the ``curl_mime_`` API.NrO   úCurl | Nonec                óz   — |r|nt          ¦   «         | _        t          j        | j        j        ¦  «        | _        dS )z?
        Args:
            curl: Curl instance to use.
        N)r¤   rª   r   Úcurl_mime_initÚ_form)r?   rO   s     r%   r>   zCurlMime.__init__¸  s3   € ð
 "Ð-�T�T¥t¡v¤vˆŒ
ÝÔ'¨¬
Ô(8Ñ9Ô9ˆŒ
ˆ
ˆ
r'   )Úcontent_typeÚfilenameÚ
local_pathrP   Únamer   rn  ú
str | Nonero  rp  ústr | bytes | Path | NonerP   úbytes | Noner   r:   c               ó  — t          j        | j        ¦  «        }t          j        ||                     ¦   «         ¦  «        }|dk    rt          d¦  «        ‚|�<t          j        ||                     ¦   «         ¦  «        }|dk    rt          d¦  «        ‚|�<t          j        ||                     ¦   «         ¦  «        }|dk    rt          d¦  «        ‚|r|rt          d¦  «        ‚|�Àt          |t          ¦  «        rt          |¦  «        }n,t          |t          ¦  «        r|                     ¦   «         }n|}t          |¦  «                             ¦   «         st          d|› �¦  «        ‚t          j        ||                     ¦   «         ¦  «        }|dk    rt          d¦  «        ‚|�[t          |t          ¦  «        s!t          |¦  «                             ¦   «         }t          j        ||t#          |¦  «        ¦  «        }dS dS )a�  Add a mime part for a mutlipart html form.

        Note: You can only use either local_path or data, not both.

        Args:
            name: name of the field.
            content_type: content_type for the field. for example: ``image/png``.
            filename: filename for the server.
            local_path: file to upload on local disk.
            data: file content to upload.
        r   zAdd field failed.Nz1Can not use local_path and data at the same time.zFile not found at )r   Úcurl_mime_addpartrm  Úcurl_mime_namer”   r6   Úcurl_mime_typeÚcurl_mime_filenamer“   r   r   rV   rt   r   ÚFileNotFoundErrorÚcurl_mime_filedataÚcurl_mime_datar/   )	r?   rq  rn  ro  rp  rP   ÚpartrÆ   Úlocal_path_strs	            r%   ÚaddpartzCurlMime.addpartÀ  sò  € õ( Ô$ T¤ZÑ0Ô0ˆåÔ   t§{¢{¡}¤}Ñ5Ô5ˆØ�!Š8ˆ8ÝÐ/Ñ0Ô0Ð0ð Ð#ÝÔ$ T¨<×+>Ò+>Ñ+@Ô+@ÑAÔAˆCØ�aŠxˆxÝÐ 3Ñ4Ô4Ð4ð ÐÝÔ(¨¨x¯ªÑ/@Ô/@ÑAÔAˆCØ�aŠxˆxÝÐ 3Ñ4Ô4Ð4àð 	Q˜$ð 	QÝÐOÑPÔPÐPð Ð!Ý˜*¥dÑ+Ô+ð ,Ý!$ Z¡¤��Ý˜J­Ñ.Ô.ð ,Ø!+×!2Ò!2Ñ!4Ô!4��à!+�å˜Ñ'Ô'×.Ò.Ñ0Ô0ð OÝ'Ð(M¸^Ð(MÐ(MÑNÔNÐNÝÔ(¨¨~×/DÒ/DÑ/FÔ/FÑGÔGˆCØ�aŠxˆxÝÐ 3Ñ4Ô4Ð4àÐÝ˜d¥EÑ*Ô*ð *Ý˜4‘y”y×'Ò'Ñ)Ô)�ÝÔ$ T¨4µ°T±´Ñ;Ô;ˆCˆCˆCð Ðr'   Úfilesú
list[dict]c                ó>   —  | ¦   «         }|D ]} |j         di |¤Ž Œ|S )zJCreate a multipart instance from a list of dict, for keys, see ``addpart``r4   )r  )Úclsr€  ÚformÚfiles       r%   Ú	from_listzCurlMime.from_listý  s>   € ð ˆs‰uŒuˆØð 	!ð 	!ˆDØˆDŒLÐ Ð ˜4Ð Ð Ð Ð Øˆr'   c                óf   — |r|n| j         }|                     t          j        | j        ¦  «         dS )z,Attach the mime instance to a curl instance.N)rª   rÈ   r   ÚMIMEPOSTrm  )r?   rO   r0  s      r%   ÚattachzCurlMime.attach  s1   € àÐ(ˆDˆD˜dœjˆØ	�Š•Ô! 4¤:Ñ.Ô.Ð.Ð.Ð.r'   c                óZ   — t          j        | j        ¦  «         t          j        | _        dS )zrClose the mime instance and underlying files. This method must be called
        after ``perform`` or ``request``.N)r   Úcurl_mime_freerm  r   r«   rË   s    r%   rÎ   zCurlMime.close
  s$   € õ 	Ô˜4œ:Ñ&Ô&Ð&Ý”XˆŒ
ˆ
ˆ
r'   c                ó.   — |                       ¦   «          d S r<   rÍ   rË   s    r%   rÏ   zCurlMime.__del__  rÐ   r'   r<   )rO   rj  )rq  r   rn  rr  ro  rr  rp  rs  rP   rt  r   r:   )r€  r�  )rO   rj  r   r:   re  )r0   r1   r2   rC   r>   r  Úclassmethodr†  r‰  rÎ   rÏ   r4   r'   r%   ri  ri  µ  sÁ   € € € € € Ø-Ð-ð:ð :ð :ð :ð :ð $(Ø#Ø04Ø!ð;<ð ;<ð ;<ð ;<ð ;<ð ;<ðz ðð ð ñ „[ðð/ð /ð /ð /ð /ð
ð ð ð ðð ð ð ð ð r'   ri  )r   r   )rJ   r*   rK   r*   r   r*   )F)rU   rV   rW   rX   r   r   )rJ   r*   rP   rV   r   r:   )r   rš   )=Ú
__future__r   rÿ   Úrera  r   rq   rŠ   Úhttp.cookiesr   Úpathlibr   Útypingr   r   r   r	   r   r!   Ú_wrapperr   r   Úconstr   r   r   r   r   Úutilsr   r&   r¯   Úcompiler>  rE  r)   Ú	Exceptionr6   rj   rk   rl   rm   rn   ro   rp   rˆ   r‰   ÚCURL_READFUNC_ABORTÚCURL_READFUNC_PAUSEÚ
def_externrT   rb   r{   r€   r„   r�   r—   r™   r¢   r¤   ri  r4   r'   r%   ú<module>r›     sd  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø 
€
€
€
Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4à 	€	€	€	à €€€à Ð Ð Ð Ð Ð Ð Ð Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð  !�Ñ"Ô"€Ø�2”:Ð;Ñ<Ô<Ð Ø�”Ð=Ñ>Ô>€àð ðð ð ð ð ñ ô ð ð7ð 7ð 7ð 7ð 7�	ñ 7ô 7ð 7ð €ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ à!Ð Ø!Ð Ø Ð Ø Ð ð €„ÑÔðð ð ñ Ôðð4ð 4ð 4ð 4ð 4ðTð Tð Tð Tð> €„ÑÔðð ñ Ôððð ð ð €„ÑÔðð ñ Ôðð €„ÑÔðð ñ Ôðð* €„ÑÔðð ñ Ôðð,ð ð ð ð_=ð _=ð _=ð _=ð _=ñ _=ô _=ð _=ðD\ð \ð \ð \ð \ñ \ô \ð \ð \ð \r'   