Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
odigos / etc / odigos-vmagent / instrumentations / python / requests / __pycache__ / utils.cpython-311.pyc
Size: Mime:
§

ÖgSƒãóf—dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZmZddlmZddlmZddlmZmZmZmZdd	lmZmZmZmZmZmZdd
lm Z!ddlm"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(ddl)m*Z*dd
l+m,Z,m-Z-m.Z.m/Z/ddl0m1Z1dZ2ej3¦«Z4dddœZ5d 6ej7ded¬¦«d¦«¦«Z8ej9dkrd„Z:d„Z"d„Z;d„Z<dJd„Z=d„Z>d „Z?ej@d!„¦«ZAd"„ZBd#„ZCd$„ZDd%„ZEdJd&„ZFd'„ZGd(„ZHd)„ZId*„ZJd+„ZKd,„ZLd-„ZMd.„ZNeOd/¦«ZPd0„ZQd1„ZRd2„ZSd3„ZTd4„ZUd5„ZVej@d6„¦«ZWd7„ZXdKd8„ZYd9„ZZdLd:„Z[dMd<„Z\d=„Z]d>„Z^d? _d@¦«Z`e`dAzZae`dBzZbdC„ZcdD„ZddE„ZedF„ZfdG„ZgdH„ZhdI„ZidS)Nz”
requests.utils
~~~~~~~~~~~~~~

This module provides utility functions that are used within Requests
that are also useful for external consumption.
éN)ÚOrderedDict)Úmake_headersÚ	parse_urlé)Úcerts©Ú__version__)Ú_HEADER_VALIDATORS_BYTEÚ_HEADER_VALIDATORS_STRÚHEADER_VALIDATORSÚto_native_string)ÚMappingÚ
basestringÚbytesÚ
getproxiesÚgetproxies_environmentÚ
integer_types)Úparse_http_list)Úproxy_bypassÚproxy_bypass_environmentÚquoteÚstrÚunquoteÚurlparseÚ
urlunparse©Úcookiejar_from_dict)ÚFileModeWarningÚ
InvalidHeaderÚ
InvalidURLÚUnrewindableBodyError)ÚCaseInsensitiveDict)z.netrcÚ_netrcéPi»)ÚhttpÚhttpsz, z,\s*T)Úaccept_encodingzaccept-encodingÚwin32cól—	ddl}n#t$rYdSwxYw	| |jd¦«}t	| |d¦«d¦«}| |d¦«d}n#ttf$rYdSwxYw|r|sdS| d¦«}td|¦«}|D]t}|dkrd|vrd	S| 
dd
¦«}| 
dd¦«}| 
d
d¦«}tj||tj
¦«rd	SŒudS)NrFz;Software\Microsoft\Windows\CurrentVersion\Internet SettingsÚProxyEnableÚ
ProxyOverrideú;z<local>ú.Tz\.Ú*z.*ú?)ÚwinregÚImportErrorÚOpenKeyÚHKEY_CURRENT_USERÚintÚQueryValueExÚOSErrorÚ
ValueErrorÚsplitÚfilterÚreplaceÚreÚmatchÚI)Úhostr0ÚinternetSettingsÚproxyEnableÚ
proxyOverrideÚtests      ú5/tmp/pip-target-6culloxw/lib/python/requests/utils.pyÚproxy_bypass_registryrDLs…€ð	ØˆMˆMˆMˆMøÝð	ð	ð	ؐ55ð	øøøð
	Ø%Ÿ~š~ØÔ(ØNñ ô Ðõ
˜f×1Ò1Ð2BÀMÑRÔRÐSTÔUÑVÔVˆKà"×/Ò/Ð0@À/ÑRÔRÐSTÔUˆMˆMøÝÐ$ð	ð	ð	ؐ55ð	øøøàð	 -ð	ؐ5ð
&×+Ò+¨CÑ0Ô0ˆ
å˜t ]Ñ3Ô3ˆ
à!ð	ð	ˆDؐyÒ Ð Ø˜d??ؘ4˜4Ø—<’<  UÑ+Ô+ˆDØ—<’<  UÑ+Ô+ˆDØ—<’<  TÑ*Ô*ˆDÝŒx˜˜d¥B¤DÑ)Ô)ð
ؐttð
àˆus‚‡
”™A A:Á:BÂBcóZ—t¦«rt|¦«St|¦«S)zšReturn True, if the host should be bypassed.

        Checks proxy settings gathered from the environment, if specified,
        or the registry.
        )rrrD)r>s rCrrrs.€õ"Ñ#Ô#ð	/Ý+¨DÑ1Ô1Ð1å(¨Ñ.Ô.Ð.ócóN—t|d¦«r| ¦«}|S)z/Returns an internal sequence dictionary update.Úitems)ÚhasattrrH)Úds rCÚdict_to_sequencerK~s(€õˆq'ÑÔðØ
GŠG‰IŒIˆà€HrFcó:—d}d}t|t¦«r| d¦«}t|d¦«rt	|¦«}n–t|d¦«r|j}n~t|d¦«rn	| ¦«}t
j|¦«j}d|j	vrtjdt¦«n#tjtf$rYnwxYwt|d¦«r‘	| ¦«}t|d	¦«rW|€U	| dd
¦«| ¦«}| |pd¦«n'#t$$rd}YnwxYwn#t$$r||}YnwxYw|€d}t'd||z
¦«S)Nrúutf-8Ú__len__ÚlenÚfilenoÚba%Requests has determined the content-length for this request using the binary size of the file: however, the file has been opened in text mode (i.e. without the 'b' flag in the mode). This may lead to an incorrect content-length. In Requests 3.0, support will be removed for files in text mode.ÚtellÚseeké)Ú
isinstancerÚencoderIrOrPÚosÚfstatÚst_sizeÚmodeÚwarningsÚwarnrÚioÚUnsupportedOperationÚAttributeErrorrRrSr6Úmax)ÚoÚtotal_lengthÚcurrent_positionrPs    rCÚ	super_lenrd‡sñ€Ø€LØÐå!•SÑÔðØ
HŠHWÑÔˆåˆq)ÑÔðݘ1‘v”vˆˆå	EÑ	Ô	ðØ”uˆˆå	HÑ	Ô	ðð	Ø—X’X‘Z”ZˆFõœ8 FÑ+Ô+Ô3ˆLð˜!œ&Ð Ð Ý”
ð2õ$ñ
ô
ð
øøõÔ'­Ð8ð	ð	ð	ð
ˆDð		øøøõ.ˆq&ÑÔð%ð	%Ø Ÿvšv™xœxÐõq˜&Ñ!Ô!ð
% lÐ&:ð	%à—F’F˜1˜a‘L”LLØ#$§6¢6¡8¤8Lð—F’FÐ+Ð0¨qÑ1Ô1Ð1Ð1øÝð%ð%ð%Ø#$LLLð%øøøøøõ%ð	0ð	0ð	0ð
Ð'Ø#/Ð øøð
	0øøøð*ÐØˆåˆq,Ð!1Ñ1Ñ2Ô2Ð2s7Á8C	Ã	C"Ã!C"Ã6E2ÄAEÅE.Å-E.Å2FÆFFcóÒ—tj d¦«}||f}nd„tD¦«}	ddlm}m}d}|D]X}	tj |¦«}n#t$rYdSwxYwtj 	|¦«r|}nŒY|€dSt|¦«}	d}
t|t¦«r|
 
d¦«}
|	j |
¦«d}	||¦« |¦«}|r|drdnd}
||
|d	fSdS#|t"f$r|r‚YdSwxYw#t$t&f$rYdSwxYw)
z;Returns the Requests tuple auth for a given url from netrc.ÚNETRCNc3ó K—|]	}d|›V—Œ
dS)z~/N©)Ú.0Úfs  rCú	<genexpr>z!get_netrc_auth.<locals>.<genexpr>Ós(èè€Ð9Ð9¨˜8 ˜8˜8Ð9Ð9Ð9Ð9Ð9Ð9rFr)ÚNetrcParseErrorÚnetrcó:ÚasciirrT)rWÚenvironÚgetÚNETRC_FILESrmrlÚpathÚ
expanduserÚKeyErrorÚexistsrrUrÚdecodeÚnetlocr8Úauthenticatorsr6r1r_)ÚurlÚraise_errorsÚ
netrc_fileÚnetrc_locationsrlrmÚ
netrc_pathrjÚlocÚriÚsplitstrr>r#Úlogin_is              rCÚget_netrc_authrƒÌsí€õ”—’ Ñ(Ô(€JØÐØ%˜-ˆˆà9Ð9­[Ð9Ñ9Ô9ˆð-
Ø0Ð0Ð0Ð0Ð0Ð0Ð0Ð0àˆ
à ð	ð	ˆAð
Ý”g×(Ò(¨Ñ+Ô+øÝð
ð
ð
𐐐ð	
øøøõŒw~Š~˜cÑ"Ô"ð
Ø 
ؐð
ð
ÐØˆFå
c‰]Œ]ˆðˆÝc3ÑÔð	0Ø—’ wÑ/Ô/ˆHØŒyŠ˜xÑ(Ô(¨Ô+ˆð
	ؐU˜:Ñ&Ô&×5Ò5°dÑ;Ô;ˆFØð
4à% aœyÐ/˜!˜!¨aØ˜wœ¨°¬Ð3Ð3ð
4ð
4øð ¥Ð)ð	ð	ð	ðð
Øð
ð
ð
ð	øøøøõ
Ð(ð
ð
ð
Øˆˆð
øøøsZ¸EÁA'Á&EÁ'
A6Á1EÁ5A6Á6)EÂ!AEÃ=;D;Ä;EÅ
EÅ
EÅEÅE&Å%E&cóЗt|dd¦«}|rLt|t¦«r9|ddkr/|ddkr%tj |¦«SdSdSdSdS)z0Tries to guess the filename of the given object.ÚnameNrú<éÿÿÿÿú>)ÚgetattrrUrrWrsÚbasename)Úobjr…s  rCÚguess_filenamerŒsw€å3˜ Ñ%Ô%€DØð&•
˜4¥Ñ,Ô,ð&°°a´¸C²°ÀDÈÄHÐPSÂOÀOÝŒw×Ò Ñ%Ô%Ð%ð&ð&ð&ð&°°ÀOÀOrFcó€—tj |¦«r|Stj |¦«\}}|r|tj |¦«s]tj |¦«\}}|sn8d ||g¦«}|rtj |¦«¯]tj|¦«s|Stj|¦«}|| ¦«vr|Stj
¦«}tj || d¦«d¦«}tj |¦«sOt|¦«5}| | 
|¦«¦«ddd¦«n#1swxYwY|S)zÄReplace nonexistent paths that look like they refer to a member of a zip
    archive with the location of an extracted copy of the target, or else
    just return the provided path unchanged.
    ú/r‡N)rWrsrvr8ÚjoinÚzipfileÚ
is_zipfileÚZipFileÚnamelistÚtempfileÚ
gettempdirÚatomic_openÚwriteÚread)rsÚarchiveÚmemberÚprefixÚzip_fileÚtmpÚextracted_pathÚfile_handlers        rCÚextract_zipped_pathsr sÅ€õ

„w‡~‚~dÑÔðàˆõ”g—m’m DÑ)Ô)O€GˆVØ
ð,"œ'Ÿ.š.¨Ñ1Ô1ð,Ýœ'Ÿ-š-¨Ñ0Ô0‰ˆØð	ð
Ø—’˜6 6Ð*Ñ+Ô+ˆð
ð,"œ'Ÿ.š.¨Ñ1Ô1ð,õÔ˜gÑ&Ô&ð؈匘wÑ'Ô'€HØ
X×&Ò&Ñ(Ô(Ð(Ð(؈õÔ
Ñ
Ô
€CÝ”W—\’\ # v§|¢|°CÑ'8Ô'8¸Ô'<Ñ=Ô=€NÝ
Œ7>Š>˜.Ñ)Ô)ð6å
˜Ñ
(Ô
(ð	6¨LØ×Ò˜xŸ}š}¨VÑ4Ô4Ñ5Ô5Ð5ð	6ð	6ð	6ñ	6ô	6ð	6ð	6ð	6ð	6ð	6ð	6øøøð	6ð	6ð	6ð	6àÐsÅ>)F3Æ3F7Æ:F7c#óHK—tjtj |¦«¬¦«\}}	tj|d¦«5}|V—ddd¦«n#1swxYwYtj||¦«dS#t$rtj|¦«‚wxYw)z-Write a file to the disk in an atomic fashion)ÚdirÚwbN)	r”ÚmkstemprWrsÚdirnameÚfdopenr:Ú
BaseExceptionÚremove)ÚfilenameÚtmp_descriptorÚtmp_nameÚtmp_handlers    rCr–r–1séèè€õ (Ô/µB´G·O²OÀHÑ4MÔ4MÐNÑNÔNÑ€NHðÝ
ŒY~ tÑ
,Ô
,ð	°ØÐÐÐð	ð	ð	ñ	ô	ð	ð	ð	ð	ð	ð	øøøð	ð	ð	ð	å
Œ
8˜XÑ&Ô&Ð&Ð&Ð&øÝðððÝ
Œ	(ÑÔÐØ
ðøøøs/¹BÁAÁBÁA#Á#BÁ&A#Á'B B!có–—|€dSt|ttttf¦«rtd¦«‚t
|¦«S)aTake an object and test to see if it can be represented as a
    dictionary. Unless it can not be represented as such, return an
    OrderedDict, e.g.,

    ::

        >>> from_key_val_list([('key', 'val')])
        OrderedDict([('key', 'val')])
        >>> from_key_val_list('string')
        Traceback (most recent call last):
        ...
        ValueError: cannot encode objects that are not 2-tuples
        >>> from_key_val_list({'key': 'val'})
        OrderedDict([('key', 'val')])

    :rtype: OrderedDict
    Nú+cannot encode objects that are not 2-tuples)rUrrÚboolr4r7r©Úvalues rCÚfrom_key_val_listr²>sG€ð$
€}؈tå%#u¥d­CÐ0Ñ1Ô1ðHÝÐFÑGÔGÐGåuÑÔÐrFcóè—|€dSt|ttttf¦«rtd¦«‚t|t¦«r| ¦«}t|¦«S)aÂTake an object and test to see if it can be represented as a
    dictionary. If it can be, return a list of tuples, e.g.,

    ::

        >>> to_key_val_list([('key', 'val')])
        [('key', 'val')]
        >>> to_key_val_list({'key': 'val'})
        [('key', 'val')]
        >>> to_key_val_list('string')
        Traceback (most recent call last):
        ...
        ValueError: cannot encode objects that are not 2-tuples

    :rtype: list
    Nr®)	rUrrr¯r4r7rrHÚlistr°s rCÚto_key_val_listrµYsd€ð"
€}؈tå%#u¥d­CÐ0Ñ1Ô1ðHÝÐFÑGÔGÐGå%Ñ!Ô!ðØ—’‘
”
ˆå‰;Œ;ÐrFcóƗg}t|¦«D]N}|dd…|dd…cxkrdkrnnt|dd…¦«}| |¦«ŒO|S)aParse lists as described by RFC 2068 Section 2.

    In particular, parse comma-separated lists where the elements of
    the list may include quoted-strings.  A quoted-string could
    contain a comma.  A non-quoted string could have quotes in the
    middle.  Quotes are removed automatically after parsing.

    It basically works like :func:`parse_set_header` just that items
    may appear multiple times and case sensitivity is preserved.

    The return value is a standard :class:`list`:

    >>> parse_list_header('token, "quoted value"')
    ['token', 'quoted value']

    To create a header from the :class:`list` again, use the
    :func:`dump_header` function.

    :param value: a string with a list header.
    :return: :class:`list`
    :rtype: list
    Nrr‡ú")Ú_parse_list_headerÚunquote_header_valueÚappend)r±ÚresultÚitems   rCÚparse_list_headerr½ws€ð.€FÝ" 5Ñ)Ô)ððˆØŒ8t˜B˜C˜C”yÐ'Ð'Ò'Ð' CÒ'Ð'Ð'Ð'Ð'Ý'¨¨Q¨r¨T¬
Ñ3Ô3ˆD؏
Š
dÑÔÐÐØ€MrFcóì—i}t|¦«D]a}d|vrd||<Œ| dd¦«\}}|dd…|dd…cxkrdkrnnt|dd…¦«}|||<Œb|S)a^Parse lists of key, value pairs as described by RFC 2068 Section 2 and
    convert them into a python dict:

    >>> d = parse_dict_header('foo="is a fish", bar="as well"')
    >>> type(d) is dict
    True
    >>> sorted(d.items())
    [('bar', 'as well'), ('foo', 'is a fish')]

    If there is no value for a key it will be `None`:

    >>> parse_dict_header('key_without_value')
    {'key_without_value': None}

    To create a header from the :class:`dict` again, use the
    :func:`dump_header` function.

    :param value: a string with a dict header.
    :return: :class:`dict`
    :rtype: dict
    ú=Nrr‡r·)r¸r8r¹)r±r»r¼r…s    rCÚparse_dict_headerrÀ—s£€ð,€FÝ" 5Ñ)Ô)ððˆØdˆ?ˆ?؈F4‰LØØ—j’j  aÑ(Ô(‰ˆˆeؐ!Œ9˜˜b˜c˜cœ
Ð)Ð)Ò)Ð) cÒ)Ð)Ð)Ð)Ð)Ý(¨¨q°¨t¬Ñ5Ô5ˆE؈ˆt‰ˆØ€MrFcóʗ|r`|d|dcxkrdkrGnnD|dd…}|r|dd…dkr*| dd¦« d	d¦«S|S)
zçUnquotes a header value.  (Reversal of :func:`quote_header_value`).
    This does not use the real unquoting but what browsers are actually
    using for quoting.

    :param value: the header value to unquote.
    :rtype: str
    rr‡r·rNrTz\\ú\z\")r:)r±Úis_filenames  rCr¹r¹ºs‹€ð
ð
Cq”˜U 2œYÐ-Ð-Ò-Ð-¨#Ò-Ð-Ð-Ð-Ð-ð
a˜d”ˆðð	C˜e B Q Bœi¨6Ò1Ð1Ø—=’= ¨Ñ.Ô.×6Ò6°u¸cÑBÔBÐBØ€LrFcó—d„|D¦«}|S)z€Returns a key/value dictionary from a CookieJar.

    :param cj: CookieJar object to extract cookies from.
    :rtype: dict
    có(—i|]}|j|j“ŒSrh)r…r±)riÚcookies  rCú
<dictcomp>z'dict_from_cookiejar.<locals>.<dictcomp>Ús€Ð>Ð>Ð>°6”; ¤Ð>Ð>Ð>rFrh©ÚcjÚcookie_dicts  rCÚdict_from_cookiejarrËÓs€ð?Ð>¸2Ð>Ñ>Ô>€KØÐrFcó"—t||¦«S)zÂReturns a CookieJar from a key/value dictionary.

    :param cj: CookieJar to insert cookies into.
    :param cookie_dict: Dict of key/values to insert into CookieJar.
    :rtype: CookieJar
    rrÈs  rCÚadd_dict_to_cookiejarrÍÞs€õ˜{¨BÑ/Ô/Ð/rFcó`—tjdt¦«tjdtj¬¦«}tjdtj¬¦«}tjd¦«}| |¦«| |¦«z| |¦«zS)zlReturns encodings from given content string.

    :param content: bytestring to extract encodings from.
    z¤In requests 3.0, get_encodings_from_content will be removed. For more information, please see the discussion on issue #2266. (This warning should only appear once.)z!<meta.*?charset=["\']*(.+?)["\'>])Úflagsz+<meta.*?content=["\']*;?charset=(.+?)["\'>]z$^<\?xml.*?encoding=["\']*(.+?)["\'>])r[r\ÚDeprecationWarningr;Úcompiler=Úfindall)ÚcontentÚ
charset_reÚ	pragma_reÚxml_res    rCÚget_encodings_from_contentr×és¦€õ

„Mð
1õ	ñ
ôðõ”Ð@ÍÌÐMÑMÔM€JÝ”
ÐIÕQSÔQUÐVÑVÔV€IÝ
ŒZÐ?Ñ
@Ô
@€Fð	×Ò˜7Ñ#Ô#Ø
×
Ò
˜GÑ
$Ô
$ñ	%à
.Š.˜Ñ
!Ô
!ñ	"ðrFcó —| d¦«}|d ¦«|dd…}}i}d}|D]‹}| ¦«}|rs|d}}| d¦«}	|	dkr=|d|	… |¦«}||	dzd… |¦«}||| ¦«<ŒŒ||fS)	z¦Returns content type and parameters from given header

    :param header: string
    :return: tuple containing content type and dictionary of
         parameters
    r,rrNz"' Tr¿r‡)r8ÚstripÚfindÚlower)
ÚheaderÚtokensÚcontent_typeÚparamsÚparams_dictÚitems_to_stripÚparamÚkeyr±Úindex_of_equalss
          rCÚ_parse_content_type_headerråsä€ð\Š\˜#Ñ
Ô
€FØ! !œ9Ÿ?š?Ñ,Ô,¨f°Q°R°R¬j&€LØ€KØ€Nàð-ð-ˆØ—’‘
”
ˆØð	-Ø ˆCØ#Ÿjšj¨™oœoˆOØ "Ò$Ð$ØÐ,˜_Ð,Ô-×3Ò3°NÑCÔCØ˜o°Ñ1Ð3Ð3Ô4×:Ò:¸>ÑJÔJØ',ˆK˜Ÿ	š	™œÑ$øØ˜Ð$Ð$rFcó²—| d¦«}|sdSt|¦«\}}d|vr|d d¦«Sd|vrdSd|vrdSdS)	z}Returns encodings from given HTTP Header Dict.

    :param headers: dictionary to extract encoding from.
    :rtype: str
    zcontent-typeNÚcharsetz'"Útextz
ISO-8859-1zapplication/jsonrM)rqrårÙ)ÚheadersrÞrßs   rCÚget_encoding_from_headersrês€€ð—;’;˜~Ñ.Ô.€Làð؈tå5°lÑCÔCÑ€L&àFÐÐØiÔ ×&Ò& uÑ-Ô-Ð-à
ÐÐØˆ|à˜\Ð)Ð)àˆwð*Ð)rFc#óðK—|j€
|Ed{V—†dStj|j¦«d¬¦«}|D]}| |¦«}|r|V—Œ| dd¬¦«}|r|V—dSdS)zStream decodes an iterator.Nr:©ÚerrorsrFT)Úfinal)ÚencodingÚcodecsÚgetincrementaldecoderrw)ÚiteratorÚrÚdecoderÚchunkÚrvs     rCÚstream_decode_response_unicoder÷4s²èè€ð	„zÐØÐÐÐÐÐÐÐØˆà6fÔ*¨1¬:Ñ6Ô6¸iÐHÑHÔH€GØððˆØ
^Š^˜EÑ
"Ô
"ˆØ
ð	؈HˆHˆHøØ	Š˜ 4ˆÑ	(Ô	(€BØ	ðØˆˆˆˆˆððrFc#ó´K—d}||dkrt|¦«}|t|¦«kr)||||z…V—||z
}|t|¦«k°'dSdS)z Iterate over slices of a string.rN)rO)ÚstringÚslice_lengthÚposs   rCÚiter_slicesrüEs{èè€à
€CØÐ˜|¨qÒ0Ð0ݘ6‘{”{ˆØ

•F‘”Ò
Ð
ؐS˜3 Ñ-Ð-Ô.Ð.Ð.Ð.؈|шð•F‘”Ò
Ð
Ð
Ð
Ð
Ð
rFcó:—tjdt¦«g}t|j¦«}|r;	t|j|¦«S#t$r| |¦«YnwxYw	t|j|d¬¦«S#t$r
|jcYSwxYw)zâReturns the requested content back in unicode.

    :param r: Response object to get unicode content from.

    Tried:

    1. charset from content-type
    2. fall back and replace all unicode characters

    :rtype: str
    z£In requests 3.0, get_unicode_from_response will be removed. For more information, please see the discussion on issue #2266. (This warning should only appear once.)r:rì)
r[r\rÐrêrérrÓÚUnicodeErrorrºÚ	TypeError)róÚtried_encodingsrïs   rCÚget_unicode_from_responserOsӀõ
„Mð
1õ	ñ
ôðð€Oõ)¨¬Ñ3Ô3€Hàð-ð	-ݐq”y (Ñ+Ô+Ð+øÝð	-ð	-ð	-Ø×"Ò" 8Ñ,Ô,Ð,Ð,Ð,ð	-øøøðݐ1”9˜h¨yÐ9Ñ9Ô9Ð9øÝðððØŒyÐÐÐðøøøs#´A	Á	A+Á*A+Á/BÂBÂBzBABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~cóþ—| d¦«}tdt|¦«¦«D]¶}||dd…}t|¦«dkrƒ| ¦«ro	t	t|d¦«¦«}n!#t$rtd|›d¦«‚wxYw|tvr|||dd…z||<Œ™d||›||<Œ¨d||›||<Œ·d	 	|¦«S)
z¨Un-escape any percent-escape sequences in a URI that are unreserved
    characters. This leaves all reserved, illegal and non-ASCII bytes encoded.

    :rtype: str
    ú%rrrTéz"Invalid percent-escape sequence: 'ú'NÚ)
r8ÚrangerOÚisalnumÚchrr4r7r ÚUNRESERVED_SETr)ÚuriÚpartsÚiÚhÚcs     rCÚunquote_unreservedr|s€ð
IŠIc‰NŒN€EÝ
1•c˜%‘j”jÑ
!Ô
!ð
&ð
&ˆØ!ŒHQqSŒMˆÝˆq‰6Œ6QŠ;ˆ;˜1Ÿ9š9™;œ;ˆ;ð
Lݝ˜A˜r™
œ
‘O”OøÝð
Lð
Lð
LÝ Ð!JÀaÐ!JÐ!JÐ!JÑKÔKÐKð
Løøøð•NÐ"Ð"ؘu Qœx¨¨¨œ|Ñ+a‘à)˜u Qœx˜>˜>a‘à%˜5 œ8~~ˆE!‰HˆHØ
7Š75‰>Œ>ÐsÁ-BÂB)cóŠ—d}d}	tt|¦«|¬¦«S#t$rt||¬¦«cYSwxYw)z¬Re-quote the given URI.

    This function passes the given URI through an unquote/quote cycle to
    ensure that it is fully and consistently quoted.

    :rtype: str
    z!#$%&'()*+,/:;=?@[]~z!#$&'()*+,/:;=?@[]~)Úsafe)rrr )rÚsafe_with_percentÚsafe_without_percents   rCÚrequote_urir”sk€ð/ÐØ0Ðð	5õÕ'¨Ñ,Ô,Ð3DÐEÑEÔEÐEøÝð5ð5ð5õSÐ3Ð4Ñ4Ô4Ð4Ð4Ð4ð	5øøøs†$¤AÁAc
ó’—tjdtj|¦«¦«d}| d¦«\}}tjdtjtt
|¦«¦«¦«¦«d}tjdtj|¦«¦«d|z}||z||zkS)zïThis function allows you to check if an IP belongs to a network subnet

    Example: returns True if ip = 192.168.1.1 and net = 192.168.1.0/24
             returns False if ip = 192.168.1.1 and net = 192.168.100.0/24

    :rtype: bool
    z=LrrŽ)ÚstructÚunpackÚsocketÚ	inet_atonr8Údotted_netmaskr4)ÚipÚnetÚipaddrÚnetaddrÚbitsÚnetmaskÚnetworks       rCÚaddress_in_networkr#ªs¢€õŒ]˜4¥Ô!1°"Ñ!5Ô!5Ñ
6Ô
6°qÔ
9€FØ—I’I˜c‘N”NM€GˆTÝŒm˜D¥&Ô"2µ>Å#ÀdÁ)Ä)Ñ3LÔ3LÑ"MÔ"MÑNÔNÈqÔQ€GÝŒm˜D¥&Ô"2°7Ñ";Ô";Ñ<Ô<¸QÔ?À'ÑI€GØWÑ '¨GÑ"3Ò4Ð4rFcól—ddd|z
zdz
z}tjtjd|¦«¦«S)zConverts mask from /xx format to xxx.xxx.xxx.xxx

    Example: if mask is 24 function returns 255.255.255.0

    :rtype: str
    lÿÿré z>I)rÚ	inet_ntoarÚpack)Úmaskr s  rCrr¹s8€ð˜˜b 4™i™¨1Ñ,Ñ,€DÝԝFœK¨¨dÑ3Ô3Ñ4Ô4Ð4rFcóT—	tj|¦«n#t$rYdSwxYwdS)z
    :rtype: bool
    FT)rrr6)Ú	string_ips rCÚis_ipv4_addressr+ÄsB€ðÝÔ˜Ñ#Ô#Ð#Ð#øÝððð؈uˆuðøøøàˆ4s‚—
%¤%cóN—| d¦«dkr‰	t| d¦«d¦«}n#t$rYdSwxYw|dks|dkrdS	t	j| d¦«d¦«n#t$rYdSwxYwdSdS)zV
    Very simple check of the cidr format in no_proxy variable.

    :rtype: bool
    rŽrFr%rT)Úcountr4r8r7rrr6)Ústring_networkr(s  rCÚ
is_valid_cidrr/Ïs؀ð×Ò˜CÑ Ô  AÒ%Ð%ð	ݐ~×+Ò+¨CÑ0Ô0°Ô3Ñ4Ô4ˆDˆDøÝð	ð	ð	ؐ55ð	øøøð!Š8ˆ8t˜b’yyؐ5ð	ÝÔ˜^×1Ò1°#Ñ6Ô6°qÔ9Ñ:Ô:Ð:Ð:øÝð	ð	ð	ؐ55ð	øøøðˆu؈4s#›(AÁ
AÁAÁ$-BÂ
B ÂB c#óK—|du}|r.tj |¦«}|tj|<	dV—|r"|€tj|=dS|tj|<dSdS#|r|€tj|=n|tj|<wxYw)zÎSet the environment variable 'env_name' to 'value'

    Save previous value, yield, and then restore the previous value stored in
    the environment variable 'env_name'.

    If 'value' is None, do nothingN)rWrprq)Úenv_namer±Ú
value_changedÚ	old_values    rCÚset_environr4çs´èè€ð Ð%€MØð%Ý”J—N’N 8Ñ,Ô,ˆ	Ø$Œ
8Ñð1Ø
ˆˆˆàð	1ØÐ Ý”J˜xÐ(Ð(Ð(à'0•”
˜8Ñ$Ð$Ð$ð		1ð	1øˆ=ð	1ØÐ Ý”J˜xÐ(Ð(à'0•”
˜8Ñ$Ð0Ð0Ð0Ð0s¸A"Á"#BcóÈ—d„}|}|€|d¦«}t|¦«}|j€dS|rÕd„| dd¦« d¦«D¦«}t	|j¦«r<|D]8}t|¦«rt
|j|¦«rdSŒ*|j|krdSŒ9nR|j}|jr
|d	|j›z
}|D]4}|j |¦«s| |¦«rdSŒ5td|¦«5	t|j¦«}n#ttj
f$rd
}YnwxYwddd¦«n#1swxYwY|rdSd
S)zL
    Returns whether we should bypass proxies or not.

    :rtype: bool
    có¢—tj |¦«p0tj | ¦«¦«S©N)rWrprqÚupper)rãs rCÚ	get_proxyz(should_bypass_proxies.<locals>.get_proxys1€ÝŒz~Š~˜cÑ"Ô"ÐA¥b¤j§n¢n°S·Y²Y±[´[Ñ&AÔ&AÐArFNÚno_proxyTc3óK—|]}|¯|V—Œ	dSr7rh)rir>s  rCrkz(should_bypass_proxies.<locals>.<genexpr>s'èè€ÐRÐR˜TÈTÐRDÐRÐRÐRÐRÐRÐRrFú rú,ú:F)rÚhostnamer:r8r+r/r#ÚportÚendswithr4rrÿrÚgaierror)	rzr:r9Úno_proxy_argÚparsedÚproxy_ipÚhost_with_portr>Úbypasss	         rCÚshould_bypass_proxiesrHýs#€ðBðBðBð
€LØÐؐ9˜ZÑ(Ô(ˆÝ
c‰]Œ]€Fà
„Ðàˆtàð ðSÐR X×%5Ò%5°c¸2Ñ%>Ô%>×%DÒ%DÀSÑ%IÔ%IÐRÑRÔRˆå˜6œ?Ñ+Ô+ð	 Ø$ð
 ð
 Ý  Ñ*Ô*ð Ý)¨&¬/¸8ÑDÔDð$Ø#˜t˜tð$à”_¨Ò0Ð0ð ˜4˜4ð1ð	
 ð$œ_ˆNØŒ{ð
4ØÐ"3 f¤kÐ"3Ð"3Ñ3à ð
 ð
 Ø”?×+Ò+¨DÑ1Ô1ð °^×5LÒ5LÈTÑ5RÔ5Rð ð ˜4˜4ð õ

Z Ñ	.Ô	.ððð	Ý! &¤/Ñ2Ô2ˆFˆFøÝ6œ?Ð+ð	ð	ð	؈FˆFˆFð	øøøð	ððñôððððððøøøðððððð؈tàˆ5s6ÄEÄD)Ä(EÄ)EÅEÅEÅEÅEÅEcóD—t||¬¦«riSt¦«S)zA
    Return a dict of environment proxies.

    :rtype: dict
    ©r:)rHr)rzr:s  rCÚget_environ_proxiesrK:s(€õ˜S¨8Ð4Ñ4Ô4ð؈	å‰|Œ|ÐrFcó—|pi}t|¦«}|j€.| |j| d¦«¦«S|jdz|jz|jd|jzdg}d}|D]}||vr
||}nŒ|S)z­Select a proxy for the url, if applicable.

    :param url: The url being for the request
    :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs
    NÚallz://zall://)rr?rqÚscheme)rzÚproxiesÚurlpartsÚ
proxy_keysÚproxyÚ	proxy_keys      rCÚselect_proxyrTFs­€ðˆm˜€Gݘ‰}Œ}€HØÔР؏{Š{˜8œ?¨G¯KªK¸Ñ,>Ô,>Ñ?Ô?Ð?ð	Œ˜%Ñ (Ô"3Ñ3،ؐ8Ô$Ñ$Ø
ð	€Jð
€EØððˆ	ؘÐÐØ˜IÔ&ˆEØˆEð ð€LrFcód—||ni}|j}t|¦«j}| d¦«}| ¦«}|rct||¬¦«sRt
||¬¦«}| || d¦«¦«}|r| ||¦«|S)a©This method takes proxy information from a request and configuration
    input to resolve a mapping of target proxies. This will consider settings
    such as NO_PROXY to strip proxy configurations.

    :param request: Request or PreparedRequest
    :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs
    :param trust_env: Boolean declaring whether to trust environment configs

    :rtype: dict
    Nr:rJrM)rzrrNrqÚcopyrHrKÚ
setdefault)	ÚrequestrOÚ	trust_envrzrNr:Únew_proxiesÚenviron_proxiesrRs	         rCÚresolve_proxiesr\`s»€ð!Ð,ˆgˆg°"€GØ
Œ+€CÝ
c‰]Œ]Ô
!€F؏{Š{˜:Ñ&Ô&€HØ—,’,‘.”.€Kàð2Õ.¨s¸XÐFÑFÔFð2Ý-¨c¸HÐEÑEÔEˆà×#Ò# F¨O×,?Ò,?ÀÑ,FÔ,FÑGÔGˆàð	2Ø×"Ò" 6¨5Ñ1Ô1Ð1ØÐrFúpython-requestscó—|›dt›S)zO
    Return a string representing the default user agent.

    :rtype: str
    rŽr)r…s rCÚdefault_user_agentr_{s€ðÐ"Ð"•[Ð"Ð"Ð"rFcóL—tt¦«tdddœ¦«S)z9
    :rtype: requests.structures.CaseInsensitiveDict
    z*/*z
keep-alive)z
User-AgentzAccept-EncodingÚAcceptÚ
Connection)r"r_ÚDEFAULT_ACCEPT_ENCODINGrhrFrCÚdefault_headersrd„s2€õå,Ñ.Ô.Ý6ØØ&ð		
ð	
ñôðrFcó—g}d}| |¦«}|s|Stjd|¦«D]Ë}	| dd¦«\}}n#t$r|d}}YnwxYwd| d¦«i}| d¦«D]X}	| d¦«\}}n#t$rYn0wxYw| |¦«|| |¦«<ŒY| |¦«ŒÌ|S)	z¼Return a list of parsed link headers proxies.

    i.e. Link: <http:/.../front.jpeg>; rel=front; type="image/jpeg",<http://.../back.jpeg>; rel=back;type="image/jpeg"

    :rtype: list
    z '"z, *<r,rrrzz<> '"r¿)rÙr;r8r7rº)	r±ÚlinksÚ
replace_charsÚvalrzrßÚlinkrârãs	         rCÚparse_header_linksrj’sA€ð
€Eà€MàKŠK˜
Ñ&Ô&€EØð؈åŒx˜ Ñ&Ô&ððˆð	"ØŸ)š) C¨Ñ+Ô+‰KˆCøÝð	"ð	"ð	"ؘrˆCˆCˆCð	"øøøðs—y’y Ñ*Ô*Ð+ˆà—\’\ #Ñ&Ô&ð	Hð	HˆEð
Ø"Ÿ[š[¨Ñ-Ô-‘
UUøÝð
ð
ð
ؐð
øøøð.3¯[ª[¸Ñ-GÔ-GˆD—’˜=Ñ)Ô)Ñ*Ð*à
ŠTÑÔÐÐà€Ls#¶AÁA!Á A!ÂB,Â,
B:Â9B:úrorTécóÖ—|dd…}|tjtjfvrdS|dd…tjkrdS|dd…tjtjfvrdS| t¦«}|dkrd	S|dkr,|ddd…tkrd
S|ddd…tkrdS|dkr*|dd…tkrd
S|dd…tkrdSdS)z
    :rtype: str
    Nézutf-32rlz	utf-8-sigrTzutf-16rrMz	utf-16-berz	utf-16-lez	utf-32-bez	utf-32-le)
rðÚBOM_UTF32_LEÚBOM_UTF32_BEÚBOM_UTF8ÚBOM_UTF16_LEÚBOM_UTF16_BEr-Ú_nullÚ_null2Ú_null3)ÚdataÚsampleÚ	nullcounts   rCÚguess_json_utfrz½s€ð"1"ŒX€FØ
•&Ô%¥vÔ':Ð;Ð;Ð;؈xØ
ˆbˆqˆb„z•V”_Ò$Ð$؈{Ø
ˆbˆqˆb„z•fÔ)­6Ô+>Ð?Ð?Ð?؈xØ—’UÑ#Ô#€IؐA‚~€~؈wؐA‚~€~ؐ##A#Œ;&Ò Ð Ø;ؐ!$Q$Œ<6Ò!Ð!ؐ;àA‚~€~ؐ"1"Œ:ÒÐØ;ؐ!""Œ:ÒÐØ;àˆ4rFcóº—t|¦«}|\}}}}}}}	|j}
|
s||
}}
|rd ||
g¦«}
|€|}|€d}t||
|d||	f¦«S)zªGiven a URL that may or may not have a scheme, prepend the given scheme.
    Does not replace a present scheme with the one provided as an argument.

    :rtype: str
    ú@Nr)rrxrr)rzÚ
new_schemerDrNÚauthr>r@rsÚqueryÚfragmentrxs           rCÚprepend_scheme_if_neededrÝs‹€õs‰^Œ^€FØ6<Ñ3€FˆD$˜˜d E¨8ðŒ]€FØð$ؘVˆàð*ð—’˜4 ˜.Ñ)Ô)ˆØ
€~؈؀|؈åv˜v t¨R°¸ÐAÑBÔBÐBrFcóª—t|¦«}	t|j¦«t|j¦«f}n#tt
f$rd}YnwxYw|S)z{Given a url with authentication components, extract them into a tuple of
    username,password.

    :rtype: (str,str)
    )rr)rrÚusernameÚpasswordr_rÿ)rzrDr~s   rCÚget_auth_from_urlr…úsd€õc‰]Œ]€FðݘœÑ(Ô(­'°&´/Ñ*BÔ*BÐCˆˆøÝIÐ&ðððØˆˆˆðøøøð€Ks‘(:ºAÁAcóT—|\}}t||d¦«t||d¦«dS)z§Verifies that header parts don't contain leading whitespace
    reserved characters, or return characters.

    :param header: tuple, in the format (name, value).
    rrN)Ú_validate_header_part)rÜr…r±s   rCÚcheck_header_validityrˆ
s7€ðK€Dˆ%ݘ& $¨Ñ*Ô*Ð*ݘ& %¨Ñ+Ô+Ð+Ð+Ð+rFc
óD—t|t¦«rt|}nHt|t¦«rt|}n%td|›d|›dt
|¦«›¦«‚| |¦«s|dkrdnd}td|›d|›¦«‚dS)	Nz
Header part (z) from z# must be of type str or bytes, not rr…r±zTInvalid leading whitespace, reserved character(s), or return character(s) in header z: )rUrrrr
rÚtyper<)rÜÚheader_partÚheader_validator_indexÚ	validatorÚheader_kinds     rCr‡r‡sô€Ý+sÑ#Ô#ð
Ý*Ð+AÔBˆ	ˆ	Ý	K¥Ñ	'Ô	'ð
Ý+Ð,BÔCˆ	ˆ	åð
E˜Kð
Eð
E°&ð
Eð
EÝ15°kÑ1BÔ1Bð
Eð
Eñ
ô
ð	
ð
?Š?˜;Ñ'Ô'ð
Ø 6¸!Ò ;Ð ;ffÀˆÝð
EØ&1ð
Eð
EØ5@ð
Eð
Eñ
ô
ð	
ð
ð
rFcóœ—t|¦«\}}}}}}|s||}}| dd¦«d}t|||||df¦«S)zW
    Given a url remove the fragment and the authentication part.

    :rtype: str
    r|rr‡r)rÚrsplitr)rzrNrxrsrßrr€s       rCÚ
urldefragauthr‘(sb€õ5=¸S±M´MÑ1€FˆFD˜& %¨ðð$ؘVˆà
]Š]˜3 Ñ
"Ô
" 2Ô
&€Fåv˜v t¨V°U¸BÐ?Ñ@Ô@Ð@rFcóä—t|jdd¦«}|Jt|jt¦«r0	||j¦«dS#t
$rt
d¦«‚wxYwt
d¦«‚)zfMove file pointer back to its recorded starting position
    so it can be read again on redirect.
    rSNz;An error occurred when rewinding request body for redirect.z+Unable to rewind request body for redirect.)r‰ÚbodyrUÚ_body_positionrr6r!)Úprepared_requestÚ	body_seeks  rCÚrewind_bodyr—9s–€õÐ(Ô-¨v°tÑ<Ô<€IØÐ¥ØÔ'­ñ"ô"Ðð	ØˆIÐ&Ô5Ñ6Ô6Ð6Ð6Ð6øÝð	ð	ð	Ý'ØMñôð
ð	øøøõ
$Ð$QÑRÔRÐRs´AÁA )Fr7)T)r])jÚ__doc__rðÚ
contextlibr]rWr;rrÚsysr”r[rÚcollectionsrÚurllib3.utilrrrrr	Ú_internal_utilsr
rrr
Úcompatrrrrrrrr¸rrrrrrrÚcookiesrÚ
exceptionsrrr r!Ú
structuresr"rrÚwhereÚDEFAULT_CA_BUNDLE_PATHÚ
DEFAULT_PORTSrr8rcÚplatformrDrKrdrƒrŒr Úcontextmanagerr–r²rµr½rÀr¹rËrÍr×rårêr÷rürÚ	frozensetr
rrr#rr+r/r4rHrKrTr\r_rdrjrVrtrurvrzrr…rˆr‡r‘r—rhrFrCú<module>r¨s˜ðððð€
€
€
ØÐÐÐØ	€	€	€	Ø	€	€	€	Ø	€	€	€	Ø
€
€
€
Ø
€
€
€
Ø
€
€
€
Ø€€€Ø€€€Ø€€€Ø#Ð#Ð#Ð#Ð#Ð#à0Ð0Ð0Ð0Ð0Ð0Ð0Ð0àÐÐÐÐÐØ$Ð$Ð$Ð$Ð$Ð$ððððððððððððððððððððððððððððð:Ð9Ð9Ð9Ð9Ð9ððððððððððððððððððð)Ð(Ð(Ð(Ð(Ð(ððððððððððððð,Ð+Ð+Ð+Ð+Ð+à"€à$˜œ™œÐà cÐ*Ð*€
ðŸ)š)Ø€B„HˆWll°4Ð8Ñ8Ô8Ð9JÔKÑLÔLñôÐð
„<7ÒÐð$ð$ð$ðL	/ð	/ð	/ð
ð
ð
ðB3ðB3ðB3ðJ6
ð6
ð6
ð6
ðr&ð&ð&ð"ð"ð"ðJÔð	ð	ñÔð	ðððð6ððð<ððð@ðððFðððð2ððð0ð0ð0ðððð2%ð%ð%ð2ððð2ððð"ððð$ð$ð$ðPØMñô€ð
ððð05ð5ð5ð,5ð5ð5ð5ð5ð5ððððððð0Ôð1ð1ñÔð1ð*:ð:ð:ðz	ð	ð	ð	ðððð4ðððð6#ð#ð#ð#ðððð"ð"ð"ðL	
Š
gÑÔ€Ø	‰€Ø	‰€ðððð@CðCðCð:
ð
ð
ð ,ð,ð,ð
ð
ð
ð&AðAðAð"SðSðSðSðSrF