ó
    Ú°›j1Q  ã                   ó€  • S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  S SK
JrJrJr  S SKJr  S SKJrJrJrJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJrJrJ r J!r!J"r"J#r#  S SK$J%r%   S SKJ&r&J'r'   \RR                  " 5          \RT                  " S\+S9  S SK,J-r.  SSS5         S SKJ0r0  S SK1r2S SK3J4r4J5r5J6r6J7r7J8r8  S SK9J:r:JrJ;r;J<r<J=r=J>r>JrJr  \6" 5         \ R~                  " \@5      rASrBSrC\Rˆ                  R‹                  \Rˆ                  R�                  \G5      S5      rHSrI\J" \S5      (       a  SrI S SKKJLrL  S rM S%S jrNS rOS rPS  rQ " S! S"5      rR " S# S$5      rSg! \( a    S SK#J&r&J'r'   GNf = f! , (       d  f       Nâ= f! \/\(4 a	    S SKJ.r.   Nõf = f! \( a    Sr0 Nüf = f! \( a    S rL Nzf = f)&é    N)Ú	b64encode)ÚCancelledError)ÚPoolManagerÚTimeoutÚproxy_from_url)ÚConnectTimeoutError)ÚLocationParseErrorÚNewConnectionErrorÚProtocolErrorÚ
ProxyError)ÚReadTimeoutError)ÚSSLError)ÚPoolKey)ÚRetry)ÚOP_NO_COMPRESSIONÚPROTOCOL_TLSÚOP_NO_SSLv2ÚOP_NO_SSLv3Úis_ipaddressÚssl)Ú	parse_url)ÚOP_NO_TICKETÚPROTOCOL_TLS_CLIENTÚignore)Úcategory)Úorig_util_SSLContext)Ú
SSLContext)ÚDEFAULT_CIPHERS)ÚIPV6_ADDRZ_REÚensure_bytesÚfilter_ssl_warningsÚunquoteÚurlparse)ÚConnectionClosedErrorr   ÚEndpointConnectionErrorÚHTTPClientErrorÚInvalidProxiesConfigErrorÚProxyConnectionErrorr   r   é<   é
   z
cacert.pemÚkey_blocksizei   )Úwherec                  ó   • [         $ ©N)ÚDEFAULT_CA_BUNDLE© ó    ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/botocore/httpsession.pyr,   r,   c   s   € Ü Ð r1   c                 óT   • U SLa  U $ [        5       n[        R                  SU5        U$ )NTzCertificate path: %s)r,   ÚloggerÚdebug)ÚverifyÚ	cert_paths     r2   Úget_cert_pathr8   g   s+   € Ø�TÒØˆä“€IÜ
‡L�LÐ'¨Ô3àÐr1   c                 ó  ^• U (       a
  U [         :X  a  [        n [        U 5      mU(       a  TR                  U5        O [        (       a  TR                  [        5        Uc  [
        R                  OUnUc&  SnU[        -  nU[        -  nU[        -  nU[        -  nT=R                  U-  sl        U[
        R                  :X  d  [        R                  S:¼  a  [        TSS5      b  STl        U4S jnU[
        R                  :X  a  UTl        U" 5         OU" 5         UTl        [#        TS5      (       aL  [$        R&                  R)                  S5      nU(       a&  [        R*                  R,                  (       d  UTl        T$ )	zÂThis function is a vendored version of the same function in urllib3

We vendor this function to ensure that the SSL contexts we construct
always use the std lib SSLContext instead of pyopenssl.
Nr   )é   é   é   Úpost_handshake_authTc                  ó2   >• [        T SS 5      b  ST l        g g )NÚcheck_hostnameF)Úgetattrr?   )Úcontexts   €r2   Údisable_check_hostnameÚ6create_urllib3_context.<locals>.disable_check_hostname£   s#   ø€ ä�GÐ-¨tÓ4Ñ@ð &+ˆGÕ"ð	 Ar1   Úkeylog_filenameÚSSLKEYLOGFILE)r   r   r   Úset_ciphersr   r   ÚCERT_REQUIREDr   r   r   r   ÚoptionsÚsysÚversion_infor@   r=   Úverify_modeÚhasattrÚosÚenvironÚgetÚflagsÚignore_environmentrD   )Ússl_versionÚ	cert_reqsrH   ÚciphersrB   ÚsslkeylogfilerA   s         @r2   Úcreate_urllib3_contextrV   q   s?  ø€ ö ˜+¬Ó5Ü)ˆä˜Ó%€GæØ×Ñ˜GÕ$ß	ŠØ×ÑœOÔ,ð &/Ñ%6”×!Ò!¸I€Ià�Øˆà”;Ñˆà”;Ñˆð 	Ô$Ñ$ˆð
 	”<Ñˆà‡O‚O�wÑ…Oð 	”S×&Ñ&Ó&¬#×*:Ñ*:¸iÓ*GÜ
�'Ð0°$Ó
7Ñ
CØ&*ˆÔ#õ+ð ”C×%Ñ%Ó%Ø'ˆÔÙÕ áÔ Ø'ˆÔô ˆwÐ)×*Ñ*ÜŸ
™
Ÿ™ Ó7ˆÞ¤§¡×!=×!=Ø&3ˆGÔ#à€Nr1   c                 óV   • [        U [        5      (       a  U $ U R                  5       S:H  $ )zvEnsures a boolean value if a string or boolean is provided

For strings, the value for True/False is case insensitive
Útrue)Ú
isinstanceÚboolÚlower)Úvals    r2   Úensure_booleanr]   Á   s'   € ô
 �#”t×ÑØˆ
à�y‰y‹{˜fÑ$Ð$r1   c                 óØ   • Sn[        U 5      nUR                  (       a  U R                  UR                  US5      n UR                  (       a  U R                  UR                  US5      n U $ )z¸
Mask proxy url credentials.

:type proxy_url: str
:param proxy_url: The proxy url, i.e. https://username:password@proxy.com

:return: Masked proxy url, i.e. https://***:***@proxy.com
z***é   )r#   ÚusernameÚreplaceÚpassword)Ú	proxy_urlÚmaskÚ
parsed_urls      r2   Úmask_proxy_urlrf   Ì   s_   € ð €DÜ˜)Ó$€JØ××Ø×%Ñ% j×&9Ñ&9¸4ÀÓCˆ	Ø××Ø×%Ñ% j×&9Ñ&9¸4ÀÓCˆ	ØÐr1   c                 ód   • [        U 5      =(       d    [        [        R                  " U 5      5      $ )z@Wrap urllib3's is_ipaddress to support bracketed IPv6 addresses.)r   rZ   r   Úmatch)Úhosts    r2   Ú_is_ipaddressrj   Þ   s"   € ä˜Ó×@¤¤m×&9Ò&9¸$Ó&?Ó!@Ð@r1   c                   óP   • \ rS rSrSrSS jrS rS r\S 5       r	S r
S	 rS
 rSrg)ÚProxyConfigurationéã   zþRepresents a proxy configuration dictionary and additional settings.

This class represents a proxy configuration dictionary and provides utility
functions to retrieve well structured proxy urls and proxy headers from the
proxy configuration dictionary.
Nc                 ó0   • Uc  0 nUc  0 nXl         X l        g r.   ©Ú_proxiesÚ_proxies_settings)ÚselfÚproxiesÚproxies_settingss      r2   Ú__init__ÚProxyConfiguration.__init__ë   s#   € Ø‰?ØˆGØÑ#Ø!ÐàŒØ!1Õr1   c                 ó–   • [        U5      nU R                  R                  UR                  5      nU(       a  U R	                  U5      nU$ )z6Retrieves the corresponding proxy url for a given url.)r#   rp   rO   ÚschemeÚ_fix_proxy_url)rr   Úurlre   Úproxys       r2   Úproxy_url_forÚ ProxyConfiguration.proxy_url_forô   s=   € ä˜c“]ˆ
Ø—‘×!Ñ! *×"3Ñ"3Ó4ˆÞØ×'Ñ'¨Ó.ˆEØˆr1   c                 óv   • 0 nU R                  U5      u  p4U(       a  U(       a  U R                  X45      nXRS'   U$ )z@Retrieves the corresponding proxy headers for a given proxy url.zProxy-Authorization)Ú_get_auth_from_urlÚ_construct_basic_auth)rr   rc   Úheadersr`   rb   Ú
basic_auths         r2   Úproxy_headers_forÚ$ProxyConfiguration.proxy_headers_forü   s=   € àˆØ!×4Ñ4°YÓ?ÑˆÞžØ×3Ñ3°HÓGˆJØ-7Ð)Ñ*Øˆr1   c                 ó   • U R                   $ r.   )rq   ©rr   s    r2   ÚsettingsÚProxyConfiguration.settings  s   € à×%Ñ%Ð%r1   c                 óž   • UR                  S5      (       d  UR                  S5      (       a  U$ UR                  S5      (       a  SU-   $ SU-   $ )Núhttp:zhttps:z//zhttp://)Ú
startswith)rr   rc   s     r2   ry   Ú!ProxyConfiguration._fix_proxy_url	  sP   € Ø×Ñ ×(Ñ(¨I×,@Ñ,@À×,JÑ,JØÐØ×!Ñ! $×'Ñ'Ø˜YÑ&Ð&à˜yÑ(Ð(r1   c                 ó†   • U SU 3n[        UR                  S5      5      R                  5       R                  5       nSU 3$ )NÚ:ÚasciizBasic )r   ÚencodeÚstripÚdecode)rr   r`   rb   Úauth_strÚencoded_strs        r2   r€   Ú(ProxyConfiguration._construct_basic_auth  sD   € Ø�Z˜q  
Ð+ˆÜ §¡°Ó 8Ó9×?Ñ?ÓA×HÑHÓJˆØ˜�}Ð%Ð%r1   c                 óš   • [        U5      n [        UR                  5      [        UR                  5      4$ ! [        [
        4 a     gf = f)N©NN)r#   r"   r`   rb   ÚAttributeErrorÚ	TypeError)rr   rz   re   s      r2   r   Ú%ProxyConfiguration._get_auth_from_url  sH   € Ü˜c“]ˆ
ð	Ü˜:×.Ñ.Ó/´¸×9LÑ9LÓ1MÐMÐMøÜ¤	Ð*ó 	Ùð	ús   �)7 ·A
Á	A
ro   r—   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ru   r|   rƒ   Úpropertyr‡   ry   r€   r   Ú__static_attributes__r0   r1   r2   rl   rl   ã   s9   † ñô2òòð ñ&ó ð&ò)ò&õ
r1   rl   c                   ó‚   • \ rS rSrSrSSS\SSS4S jrS rS rS r	S	 r
S
 rS rS rSS jrS rS rS rS rS rSrg)ÚURLLib3Sessioni  a?  A basic HTTP client that supports connection pooling and proxies.

This class is inspired by requests.adapters.HTTPAdapter, but has been
boiled down to meet the use cases needed by botocore. For the most part
this classes matches the functionality of HTTPAdapter in requests v2.7.0
(the same as our vendored version). The only major difference of note is
that we currently do not support sending chunked requests. While requests
v2.7.0 implemented this themselves, later version urllib3 support this
directly via a flag to urlopen so enabling it if needed should be trivial.
TNc                 ó\  • Xl         [        X'S9U l        [        R                  R
                  [        R                  R                  S.U l        Uc  [        n[        U[        [        45      (       d  [        US   US   S9nS U l        S U l        [        U[        5      (       a  X`l        O$[        U[         5      (       a  Uu  U l        U l        X0l        X@l        XPl        Uc  / U l        0 U l        [+        S0 U R-                  5       D6U l        U R                  U R.                  l        g )N)rs   rt   )ÚhttpÚhttpsr   r_   ©ÚconnectÚreadr0   )Ú_verifyrl   Ú_proxy_configÚbotocoreÚ
awsrequestÚAWSHTTPConnectionPoolÚAWSHTTPSConnectionPoolÚ_pool_classes_by_schemeÚDEFAULT_TIMEOUTrY   ÚintÚfloatr   Ú
_cert_fileÚ	_key_fileÚstrÚtupleÚ_timeoutÚ_max_pool_connectionsÚ_socket_optionsÚ_proxy_managersr   Ú_get_pool_manager_kwargsÚ_managerÚpool_classes_by_scheme)rr   r6   rs   ÚtimeoutÚmax_pool_connectionsÚsocket_optionsÚclient_certÚproxies_configs           r2   ru   ÚURLLib3Session.__init__*  s   € ð ŒÜ/Øñ
ˆÔô ×'Ñ'×=Ñ=Ü×(Ñ(×?Ñ?ñ(
ˆÔ$ð ‰?Ü%ˆGÜ˜'¤C¬ <×0Ñ0Ü g¨a¡j°w¸q±zÑBˆGàˆŒØˆŒÜ�k¤3×'Ñ'Ø)�OÜ˜¤U×+Ñ+Ø.9Ñ+ˆDŒO˜Tœ^àŒØ%9Ô"Ø-ÔØÑ!Ø#%ˆDÔ Ø!ˆÔÜ#ÑF d×&CÑ&CÓ&EÑFˆŒØ/3×/KÑ/Kˆ�‰Õ,r1   c                 ó¸   • U R                   R                  nSUR                  S5      0UEnUR                  5        VVs0 s H  u  pEUc  M
  XE_M     snn$ s  snnf )NÚuse_forwarding_for_httpsÚproxy_use_forwarding_for_https)r«   r‡   rO   Úitems)rr   Úkwargsrt   Úproxies_kwargsÚkÚvs         r2   Ú_proxies_kwargsÚURLLib3Session._proxies_kwargsQ  sf   € Ø×-Ñ-×6Ñ6Ðà&Ð(8×(<Ñ(<Ø0ó)ð
ð ð	
ˆð "0×!5Ñ!5Ô!7ÔIÒ!7™˜¸1“�’Ñ!7ÒIÐIùÓIs   ¿	AÁAc                 óä   • U R                   U R                  U R                  5       U R                  U R                  U R
                  S.n[        (       a	  [        US'   UR                  " S0 UD6  U$ )N)r¿   ÚmaxsizeÚssl_contextrÁ   Ú	cert_fileÚkey_fileÚ	blocksizer0   )r¸   r¹   Ú_get_ssl_contextrº   r´   rµ   ÚBUFFER_SIZEÚupdate)rr   Úextra_kwargsÚpool_manager_kwargss      r2   r¼   Ú'URLLib3Session._get_pool_manager_kwargs[  sf   € à—}‘}Ø×1Ñ1Ø×0Ñ0Ó2Ø"×2Ñ2ØŸ™ØŸ™ñ
Ð÷ Š;Ü/:Ð Ñ,Ø×"Ò"Ñ2 \Ò2Ø"Ð"r1   c                 ó   • [        5       $ r.   )rV   r†   s    r2   rÕ   ÚURLLib3Session._get_ssl_contexti  s   € Ü%Ó'Ð'r1   c                 óF  • XR                   ;  a„  U R                  R                  U5      nU R                  U5      nU R	                  US9nUR                  U R                  US95        [        U40 UD6nU R                  Ul	        XPR                   U'   U R                   U   $ )N)Úproxy_headers)Úproxy_ssl_context)
r»   r«   rƒ   Ú_setup_proxy_ssl_contextr¼   r×   rÍ   r   r°   r¾   )rr   rc   rÞ   rß   Úproxy_manager_kwargsÚproxy_managers         r2   Ú_get_proxy_managerÚ!URLLib3Session._get_proxy_managerl  s°   € Ø×0Ñ0Ó0Ø ×.Ñ.×@Ñ@ÀÓKˆMØ $× =Ñ =¸iÓ HÐØ#'×#@Ñ#@Ø+ð $Að $Ð ð !×'Ñ'Ø×$Ñ$Ð7HÐ$ÐIôô +¨9ÑMÐ8LÑMˆMØ37×3OÑ3OˆMÔ0Ø.;× Ñ  Ñ+à×#Ñ# IÑ.Ð.r1   c                 óŒ   • [        U5      nUR                  nU(       d  SnUR                  (       a  US-   UR                  -   nU$ )NÚ/Ú?)r#   ÚpathÚquery)rr   rz   re   rè   s       r2   Ú	_path_urlÚURLLib3Session._path_url|  s>   € Ü˜c“]ˆ
Ø�‰ˆÞØˆDØ××Ø˜#‘: 
× 0Ñ 0Ñ0ˆDØˆr1   c                 ó¦   • UR                  5       R                  S5      (       a  U(       a  SUl        [        U5      Ul        g SUl        S Ul        g )Nr¦   rG   Ú	CERT_NONE)r[   r‹   rS   r8   Úca_certs)rr   Úconnrz   r6   s       r2   Ú_setup_ssl_certÚURLLib3Session._setup_ssl_cert…  s<   € Ø�9‰9‹;×!Ñ! '×*Ñ*®vØ,ˆDŒNÜ)¨&Ó1ˆD�Mà(ˆDŒNØ ˆD�Mr1   c                 ó  • U R                   R                  nUR                  S5      nUR                  S5      nUc  Uc  g U R                  5       n [	        U5      n[        UR                  5      (       d  SUl        Ub  UR                  US9  [        U[        5      (       a  UR                  US   US   S9  U$ [        U[        5      (       a  UR                  U5        U$ ! [        [        [        4 a  n[!        US9eS nAff = f)	NÚproxy_ca_bundleÚproxy_client_certT)Úcafiler   r_   )Úkeyfile©Úerror)r«   r‡   rO   rÕ   r   rj   ri   r?   Úload_verify_locationsrY   r·   Úload_cert_chainr¶   ÚOSErrorÚURLLib3SSLErrorr	   r'   )rr   rc   rt   ró   Ú
proxy_certrA   rz   Úes           r2   rà   Ú'URLLib3Session._setup_proxy_ssl_context�  s  € Ø×-Ñ-×6Ñ6ÐØ*×.Ñ.Ð/@ÓAˆØ%×)Ñ)Ð*=Ó>ˆ
ØÑ" zÑ'9Øà×'Ñ'Ó)ˆð	5Ü˜IÓ&ˆCô ! §¡×*Ñ*Ø)-�Ô&ØÑ*Ø×-Ñ-°_Ð-ÑEä˜*¤e×,Ñ,Ø×'Ñ'¨
°1©¸zÈ!¹}Ð'ÑMð ˆNô ˜J¬×,Ñ,Ø×'Ñ'¨
Ô3àˆNøÜœÔ*<Ð=ó 	5Ü+°!Ñ4Ð4ûð	5ús   ÁA*C$ Â<'C$ Ã$DÃ9	DÄDc                 óR   • U(       a  U R                  U5      nU$ U R                  nU$ r.   )rã   r½   )rr   rz   rc   Úmanagers       r2   Ú_get_connection_managerÚ&URLLib3Session._get_connection_manager§  s,   € ÞØ×-Ñ-¨iÓ8ˆGð ˆð —m‘mˆGØˆr1   c                 ó  • US LnU(       d  U R                  U5      $ [        U5      R                  nUS:H  =(       a     U R                  5       R	                  SS5      nU(       d  UR                  S5      (       a  U$ U R                  U5      $ )Nr¦   rÆ   FrŠ   )rê   r#   rx   rÍ   rO   r‹   )rr   rz   rc   Ú	has_proxyÚproxy_schemeÚusing_https_forwarding_proxys         r2   Ú_get_request_targetÚ"URLLib3Session._get_request_target®  s„   € Ø TÐ)ˆ	æØ—>‘> #Ó&Ð&ô
   	Ó*×1Ñ1ˆà˜GÑ#÷ NØ×$Ñ$Ó&×*Ñ*Ð+EÀuÓMð 	%ö
 (¨3¯>©>¸'×+BÑ+BØˆJà—>‘> #Ó&Ð&r1   c                 ób   • UR                  SS5      n[        U5      nUR                  5       S:H  $ )NzTransfer-Encodingr1   s   chunked)rO   r    r[   )rr   r�   Útransfer_encodings      r2   Ú_chunkedÚURLLib3Session._chunkedÂ  s4   € Ø#ŸK™KÐ(;¸SÓAÐÜ(Ð):Ó;ÐØ ×&Ñ&Ó(¨JÑ6Ð6r1   c                 óä   • [        USS5      nUc  gUR                  S5      nUc  g[        U R                  [        5      (       a  U R                  R
                  nOU R                  n[	        XCS9$ )a  Resolve a per-request timeout override from the request context.

Returns a ``urllib3.Timeout`` when the request context contains a
``read_timeout`` override, otherwise ``None`` to defer to the
connection pool's default timeout which is configured through client
config.

rA   NÚread_timeoutr§   )r@   rO   rY   r¸   r   Úconnect_timeout)rr   ÚrequestrA   r  r  s        r2   Ú_get_request_timeoutÚ#URLLib3Session._get_request_timeoutÇ  se   € ô ˜' 9¨dÓ3ˆØ‰?ØØ—{‘{ >Ó2ˆØÑØÜ�d—m‘m¤W×-Ñ-Ø"Ÿm™m×;Ñ;‰Oà"Ÿm™mˆOÜ˜ÑBÐBr1   c                 óš   • U R                   R                  5         U R                  R                  5        H  nUR                  5         M     g r.   )r½   Úclearr»   Úvalues)rr   r  s     r2   ÚcloseÚURLLib3Session.closeà  s4   € Ø�‰×ÑÔØ×+Ñ+×2Ñ2Ö4ˆGØ�M‰MŽOò 5r1   c                 óÀ  •  U R                   R                  UR                  5      nU R                  UR                  U5      nUR	                  UR                  5      nU R                  XAR                  U R                  5        [        [        R                  R                  SS5      5      (       a-  [        UR                  5      R                  nXTR                  S'   U R                  UR                  U5      n0 nU R                  U5      nUb  X‡S'   UR                   " SUR"                  UUR$                  UR&                  [)        S5      SSSU R+                  UR&                  5      S.	UD6n	[,        R.                  R1                  UR                  U	R2                  U	R&                  U	5      n
UR4                  (       d  U
R6                    U
$ ! [8         a  n[;        UR                  US9eS nAf[<        [>        R@                  4 a  n[C        UR                  US9eS nAf[D         a  n[G        [I        W5      US9eS nAf[J         a  n[M        UR                  US9eS nAf[N         a  n[Q        UR                  US9eS nAf[R         a  n[U        X±UR                  S	9eS nAf[V         a    e [X         a$  nS
n[Z        R]                  USS9  [_        US9eS nAff = f)NÚ(BOTO_EXPERIMENTAL__ADD_PROXY_HOST_HEADERÚ ri   r¿   F)	Úmethodrz   Úbodyr�   ÚretriesÚassert_same_hostÚpreload_contentÚdecode_contentÚchunked)Úendpoint_urlrø   )rc   rø   )rø   r  r#  z4Exception received when sending urllib3 HTTP requestT)Úexc_infor÷   r0   )0r«   r|   rz   r  Úconnection_from_urlrð   rª   r]   rM   rN   rO   r#   ÚhostnamerÞ   r  r  Úurlopenr  r  r�   r   r  r¬   r­   ÚAWSResponseÚstatusÚstream_outputÚcontentrü   r   r
   ÚsocketÚgaierrorr%   r   r(   rf   ÚURLLib3ConnectTimeoutErrorr   ÚURLLib3ReadTimeoutErrorr   r   r$   r   Ú	Exceptionr4   r5   r&   )rr   r  rc   r  rï   ri   Úrequest_targetrØ   Úrequest_timeoutÚurllib_responseÚhttp_responserþ   Úmessages                r2   ÚsendÚURLLib3Session.sendå  sz  € ðG	+Ø×*Ñ*×8Ñ8¸¿¹ÓEˆIØ×2Ñ2°7·;±;À	ÓJˆGØ×.Ñ.¨w¯{©{Ó;ˆDØ× Ñ  §{¡{°D·L±LÔAÜÜ—
‘
—‘ÐIÈ2ÓN÷ñ ô   §¡Ó,×5Ñ5�Ø-1×"Ñ" 6Ñ*à!×5Ñ5°g·k±kÀ9ÓMˆNØˆLØ"×7Ñ7¸Ó@ˆOØÑ*ð +:˜YÑ'Ø"Ÿlšlð Ø—~‘~Ø"Ø—\‘\ØŸ™Ü˜e›Ø!&Ø %Ø$ØŸ™ g§o¡oÓ6ñð ñˆOô %×/Ñ/×;Ñ;Ø—‘Ø×&Ñ&Ø×'Ñ'Øó	ˆMð ×(×(ð ×%Ò%à Ð øÜó 	>Ü¨¯©¸1Ñ=Ð=ûÜ"¤F§O¡OÐ4ó 	MÜ)°w·{±{È!ÑLÐLûÜó 	Ü&Ü(¨Ó3¸1ñð ûô *ó 	IÜ%°7·;±;ÀaÑHÐHûÜ&ó 	FÜ"°·±À1ÑEÐEûÜó 	Ü'Ø°w·{±{ñð ûô ó 	ØÜó 	+ØLˆGÜ�L‰L˜¨4ˆLÑ0Ü!¨Ñ*Ð*ûð	+ús`   ‚GG Ç
KÇG.Ç.KÈHÈKÈ,H?È?KÉI É KÉ-JÊKÊJ"Ê"KÊ9KËK)
r´   rµ   r½   r¹   r°   r«   r»   rº   r¸   rª   r.   )r›   rœ   r�   rž   rŸ   ÚMAX_POOL_CONNECTIONSru   rÍ   r¼   rÕ   rã   rê   rð   rà   r  r  r  r  r  r6  r¡   r0   r1   r2   r£   r£     si   † ñ	ð ØØØ1ØØØô%LòNJò#ò(ò/ò ò!ò5ô4ò'ò(7ò
Cò2õ
H+r1   r£   )NNNN)TÚloggingrM   Úos.pathr,  rI   ÚwarningsÚbase64r   Úconcurrent.futuresr   Úurllib3r   r   r   Úurllib3.exceptionsr   r.  r	   r
   r   r   r   r/  r   rü   Úurllib3.poolmanagerr   Úurllib3.util.retryr   Úurllib3.util.ssl_r   r   r   r   r   r   Úurllib3.util.urlr   r   r   ÚImportErrorÚcatch_warningsÚsimplefilterÚDeprecationWarningÚurllib3.contrib.pyopensslr   r   r˜   r   Úbotocore.awsrequestr¬   Úbotocore.compatr   r    r!   r"   r#   Úbotocore.exceptionsr$   r%   r&   r'   r(   Ú	getLoggerr›   r4   r±   r8  rè   ÚjoinÚdirnameÚ__file__r/   rÖ   rL   Úcertifir,   r8   rV   r]   rf   rj   rl   r£   r0   r1   r2   Ú<module>rQ     s³  ðÛ Û 	Û Û Û 
Û Ý Ý -ç 8Ñ 8õ÷ó õ KÝ :Ý 'Ý $÷÷ õ 'ð6ßCð
-ð 
×	 Ò	 Õ	"Ø×Ò˜hÐ1CÒDõ	
÷ 
#ðÝ1ó ÷õ ÷	÷ 	ó 	ñ Ô Ø	×	Ò	˜8Ó	$€Ø€ØÐ Ø—G‘G—L‘L §¡§¡°Ó!:¸LÓIÐ Ø€Ù
ˆ7�O×$Ñ$ð €Kð!Ýòð =AôMò`%òò$A÷
8ñ 8÷vO+ò O+øðu ó 6÷ 6Ò5ð6ú÷ 
#Õ	"ûð 	˜Ð$ó -ß,ð-ûð
 ó ð ‚Oð	ûðT ó !ô!ð!úsf   Á0E) Á9F Â
E>Â"F Â+F# Ä<F1 Å)E;Å:E;Å>
FÆF ÆF ÆF ÆF Æ#F.Æ-F.Æ1	F=Æ<F=