+
    Ci@-                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RI	t	^ RI
t
^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIHt ^ RIHt ]P2                  ! ]4      t ! R	 R
]4      t^ RIHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't' ^ RIH(t( ^ RI)H*t+ ^ RI,H-t- ^ RI.H/t/ ^ RI0H1t1 ]+t2]3t3]!t4R t5R t6R7R lt7R8R lt8^ RI9H:u H;t< ]<Pz                  t>^ RI?t?R t@]AR 4       tB]AR 4       tC]B]nB        ]C]nC        R tDR tE ]P                  ! RR7       RtGR tJR9R ltKR tLR  tM ^ RINtO]P                  P                  R!R"4      tR]RP                  4       R#8X  * tTR$ tVR:R% ltWR&tX]
P                  ! R']X,           R(,           4      tZR)t[R*P                  ][]XR+7      t]R,][R-]]/t^. R;Ot_R.t`R/R0P                  ]_ U u. uF  q ]^,          NK  	  up 4      ,           R1,           tbR2]`,           R3,           tcR4]b,           R/,           ]c,           R5,           td]
P                  ! R']d,           R(,           4      te]f! R64      tg ^ RIhthRtiR#   ]H]I3 d    RtG EL0i ; i  ]U d    RtT Li ; iu up i   ]U d    Rti R# i ; i)<    N)HTTPMessage)OrderedDict)MutableMapping)floor)MD5UnavailableError)tzlocal)
exceptionsc                       ] tR t^%tRtR# )HTTPHeaders N)__name__
__module____qualname____firstlineno____static_attributes__r       1/usr/lib/python3/dist-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                x    V P                   P                  P                  P                  P	                  V4       R# )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                 <    \         P                  ! V 4      ^,          # )   )inspectgetfullargspec)funcs   &r   accepts_kwargsr1   H   s    !!$'**r   c                     V # Nr   sencodingerrorss   &&&r   ensure_unicoder8   K   s    Hr   c                     \        V \        4      '       d   V P                  W4      # \        V \        4      '       d   V # \	        R \        V 4       R24      h)z Expected str or bytes, received .)
isinstancestrencodebytes
ValueErrortyper4   s   &&&r   ensure_bytesrA   O   sI    !Sxx))!U
7QyB
CCr   c                  V    \         P                  ! R R\        P                  RR7       R# )ignorez+A true SSLContext object is not available.*z.*urllib3\.util\.ssl_)messagecategorymoduleN)warningsfilterwarningsr	   InsecurePlatformWarningr   r   r   filter_ssl_warningsrJ   ]   s"    =33'	r   c                 N    V ! 4       pVP                  4        F	  w  r4WBV&   K  	  V# r3   )items)clsdnew_instancekeyvalues   &&   r   	from_dictrR   g   s)    5Lggi
!S  r   c                 2    V ! 4       pV F	  w  r4WBV&   K  	  V# r3   r   )rM   pairsrO   rP   rQ   s   &&   r   
from_pairsrU   o   s#    5L
!S r   c                2    \         P                   ! V 4      pV# )zA
This used to be a compat shim for 2.6 but is now just an alias.
)copy)kwargscopy_kwargss   & r   rY   rY   {   s     ))F#Kr   c                "    V P                  4       # )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                 Z    \         '       d   \        P                  ! V / VB # \        4       h)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   )argsrX   s   *,r   get_md5rc      s&     }{{D+F++!##r   c                 z    Vf   \         P                  pVR8X  d   \        V 4      # \        P                  ! V 4      # )Nwin32)sysplatform_windows_shell_splitshlexsplit)r5   rg   s   &&r   compat_shell_splitrk      s2    <<7#A&&{{1~r   c           
     :   V '       g   . # . p. pRp^ pV  EF$  pVR8X  d   V^,          pK  VR8X  dx   V^ 8  dW   VP                  R\        \        V^,          4      4      ,          4       V^,          p^ pV^8X  d   VP                  R4       Kz  V'       * pVP                  R4       K  VR9   dX   V'       gP   V^ 8  d   VP                  RV,          4       ^ pV'       d%   VP                  RP                  V4      4       . pK  K  V^ 8  d   VP                  RV,          4       ^ pVP                  V4       EK'  	  V'       d   \	        RV  24      hV^ 8  d   VP                  RV,          4       V'       d!   VP                  RP                  V4      4       V# )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.
F\" z No closing quotation in string: ) 	)appendintr   joinr?   )r5   
componentsbuff	is_quotednum_backslashes	character	remainders   &      r   rh   rh      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                  V    \         P                  R 8X  d   ^ RIHp  \        V 3# \        3# )re   
tzwinlocal)rf   rg   dateutil.tzr}   r   r|   s    r   get_tzinfo_optionsr     s&     ||w*$$zr   BOTO_DISABLE_CRTfalsetruec                    \         '       g   R# \        P                  p \        \        VP                  R4      4      p\        V4      pW08  #   \        \        3 d     R# i ; i)z&Not intended for use outside botocore.Fr:   )	HAS_CRTawscrt__version__maprs   rj   tuple	TypeErrorr?   )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                    \         P                   P                  \         P                  P                  4      pV '       d   VP	                  RR7      pV# )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ipv4r   ls32zDABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._!\-~z(?:|)z(?:%25|%)(?:[z]|%[a-fA-F0-9]{2})+z\[z)?\]z	
)NN)zutf-8strictr3   )T)	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)?::)jrW   r   rf   r.   rG   r`   http.clientr   loggingri   reoscollectionsr   collections.abcr   mathr   six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+   r1   r8   rA   xml.etree.ElementTreeetreeElementTreeETree
ParseErrorXMLParseErrorjsonrJ   classmethodrR   rU   rY   r[   ra   r_   AttributeErrorr?   rc   rk   rh   r   awscrt.authr   environgetdisabledlowerr   ImportErrorr   r   IPV4_PATcompileIPV4_REHEX_PATformatLS32_PAT_subs_variationsUNRESERVED_PATrt   IPV6_PATZONE_ID_PATIPV6_ADDRZ_PATIPV6_ADDRZ_RE	frozensetUNSAFE_URL_CHARSgzipHAS_GZIP)xs   0r   <module>r      s     
    #   	 	 # *  
 3  			8	$	+ 	   %    " !		 7+D & %        " # 	!KK&M
$[|	 zz~~0':H.."f,G
0 ,
**S8^c)
*
#**wX*F	*, L  388<1YY<==C.1FF!F*[87B

3/#56 X& Ho 	
# M\  G| =  Hs<   H8 %4I
 4I
0I 8II
	II	I+*I+