£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>

Rec        	   @@  s  d  d l  m Z d  d l Z d  d l m Z d d l m Z d d l m Z d d d	 d
 d d d g Z	 dC Z e j d  Z e j d  Z e j d e j e j B Z d Z d Z d j d e d e  Z i e d 6e d 6Z d d d d d d d d  d! g	 Z d" Z d# d$ j g  e D] Z e e ^ q d% Z d& e d' Z d( e d# e d) Z d* Z e j d+  Z e j d, e d-  Z  e j d, e d-  Z! e j d, e d-  Z" e j d, e d d. !d-  Z# e j d/ e d0  Z$ d1 e e e f Z% e j e% e j e j B Z& e' d2  Z( e' d3  Z) e( e) Bd4 h BZ* e* d5 d6 h BZ+ e+ d7 h BZ, Z- d8 e d8 e	  f d9     YZ. d:   Z/ d; d<  Z0 d=   Z1 d>   Z2 d?   Z3 d@   Z4 dA   Z5 dB   Z6 d S(D   i    (   t   absolute_importN(   t
   namedtuplei   (   t   LocationParseError(   t   sixt   schemet   autht   hostt   portt   patht   queryt   fragmentt   httpt   httpss   %[a-fA-F0-9]{2}s   ^(?:[a-zA-Z][a-zA-Z0-9+-]*:|/)sS   ^(?:([a-zA-Z][a-zA-Z0-9+.-]*):)?(?://([^\\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?$s   (?:[0-9]{1,3}\.){3}[0-9]{1,3}s   [0-9A-Fa-f]{1,4}s   (?:{hex}:{hex}|{ipv4})t   hext   ipv4t   ls32s   (?:%(hex)s:){6}%(ls32)ss   ::(?:%(hex)s:){5}%(ls32)ss%   (?:%(hex)s)?::(?:%(hex)s:){4}%(ls32)ss2   (?:(?:%(hex)s:)?%(hex)s)?::(?:%(hex)s:){3}%(ls32)ss6   (?:(?:%(hex)s:){0,2}%(hex)s)?::(?:%(hex)s:){2}%(ls32)ss/   (?:(?:%(hex)s:){0,3}%(hex)s)?::%(hex)s:%(ls32)ss'   (?:(?:%(hex)s:){0,4}%(hex)s)?::%(ls32)ss&   (?:(?:%(hex)s:){0,5}%(hex)s)?::%(hex)ss   (?:(?:%(hex)s:){0,6}%(hex)s)?::sD   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._!\-~s   (?:t   |t   )s   (?:%25|%)(?:[s   ]|%[a-fA-F0-9]{2})+s   \[s   )?\]s!   (?:[^\[\]%:/?#]|%[a-fA-F0-9]{2})*s!   ^(/[^?#]*)(?:\?([^#]*))?(?:#.*)?$t   ^t   $it   (s   )\]$u(   ^(?:(.*)@)?(%s|%s|%s)(?::([0-9]{0,5}))?$sB   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._-~s   !$&'()*+,;=t   :t   @t   /t   ?t   Urlc           B@  sw   e  Z d  Z d Z d d d d d d d d  Z e d    Z e d    Z e d    Z	 e d    Z
 d   Z RS(	   s   
    Data structure for representing an HTTP URL. Used as a return value for
    :func:`parse_url`. Both the scheme and host are normalized as they are
    both case-insensitive according to RFC 3986.
    c      	   C@  si   | r# | j  d  r# d | } n  | d  k	 r> | j   } n  t t |   j |  | | | | | | |  S(   NR   (   t
   startswitht   Nonet   lowert   superR   t   __new__(   t   clsR   R   R   R   R   R	   R
   (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyR   [   s    
c         C@  s   |  j  S(   s@   For backwards-compatibility with urlparse. We're nice like that.(   R   (   t   self(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyt   hostnamem   s    c         C@  s6   |  j  p d } |  j d k	 r2 | d |  j 7} n  | S(   s)   Absolute path including the query string.R   R   N(   R   R	   R   (   R    t   uri(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyt   request_urir   s    c         C@  s$   |  j  r d |  j |  j  f S|  j S(   s(   Network location including host and ports   %s:%d(   R   R   (   R    (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyt   netloc|   s    	c   	      C@  s   |  \ } } } } } } } d } | d k	 r> | | d 7} n  | d k	 r[ | | d 7} n  | d k	 rt | | 7} n  | d k	 r | d t |  7} n  | d k	 r | | 7} n  | d k	 r | d | 7} n  | d k	 r | d | 7} n  | S(   s  
        Convert self into a url

        This function should more or less round-trip with :func:`.parse_url`. The
        returned url may not be exactly the same as the url inputted to
        :func:`.parse_url`, but it should be equivalent by the RFC (e.g., urls
        with a blank port will have : removed).

        Example: ::

            >>> U = parse_url('http://google.com/mail/')
            >>> U.url
            'http://google.com/mail/'
            >>> Url('http', 'username:password', 'host.com', 80,
            ... '/path', 'query', 'fragment').url
            'http://username:password@host.com:80/path?query#fragment'
        u    u   ://u   @u   :u   ?u   #N(   R   t   str(	   R    R   R   R   R   R   R	   R
   t   url(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyR&      s"    c         C@  s   |  j  S(   N(   R&   (   R    (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyt   __str__   s    (    N(   t   __name__t
   __module__t   __doc__t	   __slots__R   R   t   propertyR!   R#   R$   R&   R'   (    (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyR   R   s   

(c         C@  s   d } d } xV | D]N } |  j |  } | d k  r: q n  | d k sR | | k  r | } | } q q W| d k s} | d k  r |  d d f S|  |  |  | d | f S(   s  
    .. deprecated:: 1.25

    Given a string and an iterable of delimiters, split on the first found
    delimiter. Return two split parts and the matched delimiter.

    If not found, then the first part is the full input string.

    Example::

        >>> split_first('foo/bar?baz', '?/=')
        ('foo', 'bar?baz', '/')
        >>> split_first('foo/bar?baz', '123')
        ('foo/bar?baz', '', None)

    Scales linearly with number of delims. Not ideal for large number of delims.
    i    t    i   N(   R   t   find(   t   st   delimst   min_idxt	   min_delimt   dt   idx(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyt   split_first   s    s   utf-8c   
      C@  s$  |  d	 k r |  St j |   }  t j d   |   \ }  } |  j d d  } | | j d  k } t   } x t d t	 |   D] } | | | d !} t
 |  }	 | r | d k s |	 d k  r | j   | k r | | 7} q n  | j d t |	  d j   j d  j    q W| j |  S(
   sf   Percent-encodes a URI component without reapplying
    onto an already percent-encoded component.
    c         S@  s   |  j  d  j   S(   Ni    (   t   groupt   upper(   t   match(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyt   <lambda>   R-   s   utf-8t   surrogatepasst   %i    i   i   i   N(   R   R   t   ensure_textt
   PERCENT_REt   subnt   encodet   countt	   bytearrayt   ranget   lent   ordt   decodet   extendR   t   zfillR7   (
   t	   componentt   allowed_charst   encodingt   percent_encodingst	   uri_bytest   is_percent_encodedt   encoded_componentt   it   bytet   byte_ord(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyt   _encode_invalid_chars   s"    	
4c         C@  s   |  j  d  } g  } xO | D]G } | d k r4 q q | d k rP | j |  q | r | j   q q W|  j d  r | s | d r | j d d  n  |  j d  r | j d  n  d j |  S(	   NR   t   .s   ..i    R-   s   /.s   /..(   s   /.s   /..(   t   splitt   appendt   popR   t   insertt   endswitht   join(   R   t   segmentst   outputt   segment(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyt   _remove_path_dot_segments   s     c         C@  s?  |  r;t  |  t j  r* t j |   }  n  | t k r;t j |   } | r t j |   } | r | j	 d  \ } } |  | | !} | j
 d  r | d k r | d } n
 | d } d t | t  } |  |  j   | |  | S|  j   Sq8t j |   s8t j d j g  |  j d  D] } t |  ^ q  Sq;n  |  S(   Ni   s   %25i   R;   RS   (   t
   isinstanceR   t   binary_typet
   ensure_strt   NORMALIZABLE_SCHEMESt   IPV6_ADDRZ_RER8   t
   ZONE_ID_REt   searcht   spanR   RR   t   UNRESERVED_CHARSR   t   IPV4_RERY   RT   t   _idna_encode(   R   R   t   is_ipv6R8   t   startt   endt   zone_idt   label(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyt   _normalize_host  s(    
8c         C@  s   |  r t  g  |  D] } t |  d k ^ q  r y d d l m } Wn' t k
 rn t j t d  d   n Xy# | j	 |  j
   d t d t SWq | j k
 r t j t d |   d   q Xn  |  j
   j	 d  S(	   Ni   i    (   t   idnas-   Unable to parse URL without the 'idna' modulet   strictt
   std3_rulesu#   Name '%s' is not a valid IDNA labelt   ascii(   t   anyRD   t   pip._vendorRo   t   ImportErrorR   t
   raise_fromR   R   R?   R   t   Truet	   IDNAError(   t   namet   xRo   (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyRh   .  s    1	#c         C@  sZ   t  j |   j   \ } } t | t  }  t | t  } | d k	 rV |  d | 7}  n  |  S(   sH   Percent-encodes a request target so that there are no invalid charactersR   N(   t	   TARGET_RER8   t   groupsRR   t
   PATH_CHARSt   QUERY_CHARSR   (   t   targetR   R	   (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyt   _encode_target@  s    c         @  s  |  s t    S|  } t j |   s/ d |  }  n  yt j |   j   \ } } } } } | d k pq | j   t k } | r | j   } n  | r t	 j |  j   \ } }	 }
 | r | r t
 | t  } n  |
 d k r d }
 q n d \ } }	 }
 |
 d k	 r8t |
  }
 d |
 k o!d k n s8t |    q8n  t |	 |  }	 | rq| rqt |  } t
 | t  } n  | r| rt
 | t  } n  | r| rt
 | t  } n  Wn* t t f k
 rt j t |  d  SX| s| d k	 s| d k	 rd } qd } n  t |  t j  r)t j   n	 t j     f d   } t  d | |  d | |  d | |	  d	 |
 d
 | |  d | |  d | |   S(   s  
    Given a url, return a parsed :class:`.Url` namedtuple. Best-effort is
    performed to parse incomplete urls. Fields not provided will be None.
    This parser is RFC 3986 compliant.

    The parser logic and helper functions are based heavily on
    work done in the ``rfc3986`` module.

    :param str url: URL to parse into a :class:`.Url` namedtuple.

    Partly backwards-compatible with :mod:`urlparse`.

    Example::

        >>> parse_url('http://google.com/mail/')
        Url(scheme='http', host='google.com', port=None, path='/mail/', ...)
        >>> parse_url('google.com:80')
        Url(scheme=None, host='google.com', port=80, path=None, ...)
        >>> parse_url('/foo?bar')
        Url(scheme=None, host=None, port=None, path='/foo', query='bar', ...)
    s   //R-   i    i  c         @  s   |  d  k r |  S  |   S(   N(   R   (   Rz   (   t   ensure_func(    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyt   ensure_type  s    R   R   R   R   R   R	   R
   N(   NNN(   R   t	   SCHEME_RERd   t   URI_RER8   R|   R   R   Ra   t   SUBAUTHORITY_RERR   t   USERINFO_CHARSt   intR   Rn   R]   R}   R~   t   FRAGMENT_CHARSt
   ValueErrort   AttributeErrorR   Rv   R^   t	   text_typeR<   R`   (   R&   t
   source_urlR   t	   authorityR   R	   R
   t   normalize_uriR   R   R   R   (    (   R   s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyt	   parse_urlJ  s^    $			c         C@  s(   t  |   } | j p d | j | j f S(   s4   
    Deprecated. Use :func:`parse_url` instead.
    R   (   R   R   R!   R   (   R&   t   p(    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyt   get_host  s    (   R   R   N(7   t
   __future__R    t   ret   collectionsR   t
   exceptionsR   t   packagesR   t	   url_attrsR   Ra   t   compileR=   R   t   UNICODEt   DOTALLR   t   IPV4_PATt   HEX_PATt   formatt   LS32_PATt   _subst   _variationst   UNRESERVED_PATRY   Rz   t   IPV6_PATt   ZONE_ID_PATt   IPV6_ADDRZ_PATt   REG_NAME_PATR{   Rg   t   IPV6_RERb   t   BRACELESS_IPV6_ADDRZ_RERc   t   SUBAUTHORITY_PATR   t   setRf   t   SUB_DELIM_CHARSR   R}   R~   R   R   R5   RR   R]   Rn   Rh   R   R   R   (    (    (    s   /builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyt   <module>   sn   	.
	]	#"				
	_