
    !i-                        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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  S SKJr  S SKJr  S SKJr  S S	KJr  \R4                  " \5      r " S
 S\5      rS SKJrJ r J!r!J"r"J#r#J$r$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/J0r0  S SK1J2r2  \,r3\4r4\"r5S r6S r7S:S jr8S;S jr9S SK:J;s  J<r=  \=R|                  r?S SK@r@S rA\BS 5       rC\BS 5       rD\C\lC        \D\lD        S rES rF \R                  " SS9  SrHS rKS<S jrLS  rMS! rN S SKOrP\R                  R                  S"S#5      rS\SR                  5       S$:X  + rUS% rWS=S& jrXS'rY\
R                  " S(\Y-   S)-   5      r[S*r\S+R                  \\\YS,9r^\\\^S-.r_/ S.Qr`S/raS0S1R                  \` V s/ s H  o \_-  PM	     sn 5      -   S2-   rcS3\a-   S4-   rdS5\c-   S0-   \d-   S6-   re\
R                  " S(\e-   S)-   5      rf\g" S75      rh S SKiriSrj\U(       a  \W" S85      (       a  S S9KkJlrl  gSrlg! \I\J4 a    SrH GNf = f! \V a    SrU Nf = fs  sn f ! \V a    Srj NLf = f)>    N)HTTPMessage)OrderedDict)MutableMapping)floor)six)MD5UnavailableError)tzlocal)
exceptionsc                       \ rS rSrSrg)HTTPHeaders%    N)__name__
__module____qualname____firstlineno____static_attributes__r       N/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/botocore/compat.pyr   r   %   s    r   r   )
quote	urlencodeunquoteunquote_plusurlparseurlsplit
urlunspliturljoin	parse_qslparse_qs)HTTPResponse)IOBase)encodebytes)
formatdate)zip_longestc                 v    U R                   R                  R                  R                  R	                  U5        g)ztSet the timeout of the socket from an HTTPResponse.

:param http_response: An instance of ``httplib.HTTPResponse``

N)_fpfpraw_sock
settimeout)http_responsetimeouts     r   set_socket_timeoutr-   @   s*     ""--g6r   c                 4    [         R                  " U 5      S   $ )N   )inspectgetfullargspec)funcs    r   accepts_kwargsr3   H   s    !!$'**r   c                     U $ Nr   sencodingerrorss      r   ensure_unicoder:   K   s    Hr   c                     [        U [        5      (       a  U R                  X5      $ [        U [        5      (       a  U $ [	        S[        U 5       S35      e)Nz Expected str or bytes, received .)
isinstancestrencodebytes
ValueErrortyper6   s      r   ensure_bytesrC   O   sI    !Sxx))!U
7QyB
CCr   c                  N    [         R                  " SS[        R                  SS9  g )Nignorez+A true SSLContext object is not available.*z.*urllib3\.util\.ssl_)messagecategorymodule)warningsfilterwarningsr
   InsecurePlatformWarningr   r   r   filter_ssl_warningsrL   ]   s"    =33'	r   c                 N    U " 5       nUR                  5        H	  u  p4XBU'   M     U$ r5   )items)clsdnew_instancekeyvalues        r   	from_dictrT   g   s)    5Lggi
!S  r   c                 2    U " 5       nU H	  u  p4XBU'   M     U$ r5   r   )rO   pairsrQ   rR   rS   s        r   
from_pairsrW   o   s#    5L
!S r   c                 2    [         R                   " U 5      nU$ )zA
This used to be a compat shim for 2.6 but is now just an alias.
)copy)kwargscopy_kwargss     r   r[   r[   {   s     ))F#Kr   c                 "    U R                  5       $ )z
Returns the total seconds in a ``datetime.timedelta``.

This used to be a compat shim for 2.6 but is now just an alias.

:param delta: The timedelta object
:type delta: ``datetime.timedelta``
)total_seconds)deltas    r   r]   r]      s       r   F)usedforsecurityTc                  X    [         (       a  [        R                  " U 0 UD6$ [        5       e)a"  
Attempts to get an md5 hashing object.

:param args: Args to pass to the MD5 constructor
:param kwargs: Key word arguments to pass to the MD5 constructor
:return: An MD5 hashing object if available. If it is unavailable, None
    is returned if raise_error_if_unavailable is set to False.
)MD5_AVAILABLEhashlibmd5r   )argsrZ   s     r   get_md5re      s&     }{{D+F++!##r   c                 v    Uc  [         R                  nUS:X  a  [        U 5      $ [        R                  " U 5      $ )Nwin32)sysplatform_windows_shell_splitshlexsplit)r7   ri   s     r   compat_shell_splitrm      s2    <<7#A&&{{1~r   c           
         U (       d  / $ / n/ nSnSnU  GH  nUS:X  a  US-  nM  US:X  ai  US:  aI  UR                  S[        [        US-  5      5      -  5        US-  nSnUS:X  a  UR                  S5        Mf  U(       + nUR                  S5        M  US;   aP  U(       dI  US:  a  UR                  SU-  5        SnU(       a$  UR                  SR                  U5      5        / nM  M  US:  a  UR                  SU-  5        SnUR                  U5        GM     U(       a  [	        S	U  35      eUS:  a  UR                  SU-  5        U(       a   UR                  SR                  U5      5        U$ )
a  Splits up a windows command as the built-in command parser would.

Windows has potentially bizarre rules depending on where you look. When
spawning a process via the Windows C runtime (which is what python does
when you call popen) the rules are as follows:

https://docs.microsoft.com/en-us/cpp/cpp/parsing-cpp-command-line-arguments

To summarize:

* Only space and tab are valid delimiters
* Double quotes are the only valid quotes
* Backslash is interpreted literally unless it is part of a chain that
  leads up to a double quote. Then the backslashes escape the backslashes,
  and if there is an odd number the final backslash escapes the quote.

:param s: The command string to split up into parts.
:return: A list of command components.
Fr   \   "r/    ) 	z No closing quotation in string: )appendintr   joinrA   )r7   
componentsbuff	is_quotednum_backslashes	character	remainders          r   rj   rj      s~   ( 	JDIO	
 q O#" D3u_q-@'A#BBC+a/	"#> KK$ &I KKO+%i "D?23"# !!"''$-0  "D?23"#KK	"c h ;A3?@@ D?*+ "''$-(r   c                  T    [         R                  S:X  a  SSKJn   [        U 4$ [        4$ )Nrg   r   
tzwinlocal)rh   ri   dateutil.tzr   r	   r   s    r   get_tzinfo_optionsr     s&     ||w*$$zr   BOTO_DISABLE_CRTfalsetruec                     [         (       d  g[        R                  n [        [        UR                  S5      5      n[        U5      nX0:  $ ! [        [        4 a     gf = f)z&Not intended for use outside botocore.Fr<   )	HAS_CRTawscrt__version__maprv   rl   tuple	TypeErrorrA   )minimum_versioncrt_version_strcrt_version_intscrt_version_tuples       r   has_minimum_crt_versionr   &  sb    7((OsO$9$9#$>?!"23 // z" s   *A AAc                     [         R                   R                  [         R                  R                  5      nU (       a  UR	                  SS9nU$ )zKRetrieve the current timezone in UTC, with or without an explicit timezone.N)tzinfo)datetimenowtimezoneutcreplace)remove_tzinfodatetime_nows     r   get_current_datetimer   5  s@    $$(():):)>)>?L#++4+8r   z(?:[0-9]{1,3}\.){3}[0-9]{1,3}^$z[0-9A-Fa-f]{1,4}z(?:{hex}:{hex}|{ipv4}))hexipv4)r   ls32)	z(?:%(hex)s:){6}%(ls32)sz::(?:%(hex)s:){5}%(ls32)sz%(?:%(hex)s)?::(?:%(hex)s:){4}%(ls32)sz2(?:(?:%(hex)s:)?%(hex)s)?::(?:%(hex)s:){3}%(ls32)sz6(?:(?:%(hex)s:){0,2}%(hex)s)?::(?:%(hex)s:){2}%(ls32)sz/(?:(?:%(hex)s:){0,3}%(hex)s)?::%(hex)s:%(ls32)sz'(?:(?:%(hex)s:){0,4}%(hex)s)?::%(ls32)sz&(?:(?:%(hex)s:){0,5}%(hex)s)?::%(hex)sz(?:(?:%(hex)s:){0,6}%(hex)s)?::zDABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._!\-~z(?:|)z(?:%25|%)(?:[z]|%[a-fA-F0-9]{2})+z\[z)?\]z	
)r         )EC)NN)zutf-8strictr5   )T)mrY   r   rh   r0   rI   rb   http.clientr   loggingrk   reoscollectionsr   collections.abcr   mathr   botocore.vendoredr   botocore.exceptionsr   r   r	   urllib3r
   	getLoggerr   loggerr   urllib.parser   r   r   r   r   r   r   r   r   r   r    ior!   _IOBasebase64r"   email.utilsr#   	itertoolsr$   	file_typezipunquote_strr-   r3   r:   rC   xml.etree.ElementTreeetreeElementTreeETree
ParseErrorXMLParseErrorjsonrL   classmethodrT   rW   r[   r]   rc   ra   AttributeErrorrA   re   rm   rj   r   awscrt.authr   environgetdisabledlowerr   ImportErrorr   r   IPV4_PATcompileIPV4_REHEX_PATformatLS32_PAT_subs_variationsUNRESERVED_PATrw   IPV6_PATZONE_ID_PATIPV6_ADDRZ_PATIPV6_ADDRZ_RE	frozensetUNSAFE_URL_CHARSgzipHAS_GZIPawscrt.cryptor   )xs   0r   <module>r      s     
    #   	 	 # *  ! 3  			8	$	+ 	   %    " !		 7+D & %        " # 	!KK&M
$[|	 zz~~0':H.."f,G
0 ,
**S8^c)
*
#**wX*F*, L  388<1Y<==C.1FF!F*[87B

3/#56 X& H
 &z22 	B 	
# M\  G| =  Hs<   H $4H- 'H;
8I  
H*)H*-H87H8 I
I