/opt/imunify360/venv/lib/python3.11/site-packages/requests/__pycache__
NameSizeModeActions
adapters.cpython-311.pyc250950644editdlrm
api.cpython-311.pyc74540644editdlrm
auth.cpython-311.pyc145890644editdlrm
certs.cpython-311.pyc7430644editdlrm
compat.cpython-311.pyc25860644editdlrm
cookies.cpython-311.pyc272060644editdlrm
exceptions.cpython-311.pyc75910644editdlrm
help.cpython-311.pyc45930644editdlrm
hooks.cpython-311.pyc12730644editdlrm
models.cpython-311.pyc392320644editdlrm
packages.cpython-311.pyc13400644editdlrm
sessions.cpython-311.pyc303290644editdlrm
status_codes.cpython-311.pyc62630644editdlrm
structures.cpython-311.pyc62930644editdlrm
utils.cpython-311.pyc388330644editdlrm
_internal_utils.cpython-311.pyc17300644editdlrm
__init__.cpython-311.pyc62890644editdlrm
__version__.cpython-311.pyc6140644editdlrm
Edit: /opt/imunify360/venv/lib/python3.11/site-packages/requests/__pycache__/utils.cpython-311.pyc (38833B)
§ #þ×R~:ãó„—dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddlmZddlmZddlmZddlmZdd lmZdd lmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%dd l&m'Z'dd l(m)Z)dd l*m+Z+m,Z,m-Z-m.Z.dZ/ej0¦«Z1dddœZ2d 3ej4ded¬¦«d¦«¦«Z5ej6dkrd„Z7d„Zd„Z8d„Z9dId„Z:d„Z;d„Zd!„Z?d"„Z@d#„ZAd$„ZBdId%„ZCd&„ZDd'„ZEd(„ZFd)„ZGd*„ZHd+„ZId,„ZJd-„ZKeLd.¦«ZMd/„ZNd0„ZOd1„ZPd2„ZQd3„ZRd4„ZSej=d5„¦«ZTd6„ZUdJd7„ZVd8„ZWdKd:„ZXd;„ZYd<„ZZd= [d>¦«Z\e\d?zZ]e\d@zZ^dA„Z_dB„Z`dC„ZaejbdD¦«ZcejbdE¦«ZddF„ZedG„ZfdH„ZgdS)Lz” requests.utils ~~~~~~~~~~~~~~ This module provides utility functions that are used within Requests that are also useful for external consumption. éN)Ú OrderedDict)Ú make_headersé©Ú __version__)Úcerts)Úto_native_string)Úparse_http_list)ÚquoteÚurlparseÚbytesÚstrÚunquoteÚ getproxiesÚ proxy_bypassÚ urlunparseÚ basestringÚ integer_typesÚis_py3Úproxy_bypass_environmentÚgetproxies_environmentÚMapping©Úcookiejar_from_dict)ÚCaseInsensitiveDict)Ú InvalidURLÚ InvalidHeaderÚFileModeWarningÚUnrewindableBodyError)z.netrcÚ_netrcéPi»)ÚhttpÚhttpsz, z,\s*T)Úaccept_encodingzaccept-encodingÚwin32cóV— trddl}nddl}n#t$rYdSwxYw | |jd¦«}t | |d¦«d¦«}| |d¦«d}n#t$rYdSwxYw|r|sdS|  d¦«}|D]t}|dkrd|vrd S|  dd ¦«}|  d d ¦«}|  d d¦«}tj ||tj ¦«rd SŒudS)NrFz;Software\Microsoft\Windows\CurrentVersion\Internet SettingsÚ ProxyEnableÚ ProxyOverrideú;zú.Tz\.Ú*z.*ú?)rÚwinregÚ_winregÚ ImportErrorÚOpenKeyÚHKEY_CURRENT_USERÚintÚ QueryValueExÚOSErrorÚsplitÚreplaceÚreÚmatchÚI)Úhostr-ÚinternetSettingsÚ proxyEnableÚ proxyOverrideÚtests ún/builddir/build/BUILD/imunify360-venv-2.6.3/opt/imunify360/venv/lib/python3.11/site-packages/requests/utils.pyÚproxy_bypass_registryr@6s¡€ð Ýð )Ø� � � � à(Ð(Ð(Ð(øøÝð ð ð Ø�5�5ð øøøð Ø%Ÿ~š~¨fÔ.FØNñ Pô PÐ õ˜f×1Ò1Ð2BØ.;ñ=ô=Ø=>ô@ñAôAˆKð#×/Ò/Ð0@Ø0?ñAôAØABôDˆMˆMøåð ð ð Ø�5�5ð øøøàð  -ð Ø�5ð &×+Ò+¨CÑ0Ô0ˆ à!ð ð ˆDØ�yÒ Ð Ø˜d�?�?ؘ4˜4Ø—<’<  UÑ+Ô+ˆDØ—<’<  UÑ+Ô+ˆDØ—<’<  TÑ*Ô*ˆDÝŒx˜˜d¥B¤DÑ)Ô)ð Ø�t�tð àˆus‚“ ! !¥A B 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. )rrr@)r:s r?rr]s.€õ "Ñ #Ô #ð /Ý+¨DÑ1Ô1Ð 1å(¨Ñ.Ô.Ð .ócóN—t|d¦«r| ¦«}|S)z/Returns an internal sequence dictionary update.Úitems)ÚhasattrrD)Úds r?Údict_to_sequencerGis(€õˆq�'ÑÔðØ �GŠG‰IŒIˆà €HrBcóô—d}d}t|d¦«rt|¦«}n�t|d¦«r|j}nwt|d¦«rg | ¦«}tj|¦«j}d|jvrtjdt¦«n#tj $rYnwxYwt|d¦«rŸ |  ¦«}t|d¦«r^|€\ |  dd ¦«|  ¦«}|  |pd¦«n5#ttf$rd}Yn wxYwn#ttf$r|�|}YnwxYw|€d}t!d||z ¦«S) NrÚ__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é)rErJrKÚosÚfstatÚst_sizeÚmodeÚwarningsÚwarnrÚioÚUnsupportedOperationrMrNr4ÚIOErrorÚmax)ÚoÚ total_lengthÚcurrent_positionrKs r?Ú super_lenr]rsр؀LØÐåˆq�)ÑÔðݘ1‘v”vˆ ˆ å ��EÑ Ô ðØ”uˆ ˆ å ��HÑ Ô ðð Ø—X’X‘Z”ZˆFõœ8 FÑ+Ô+Ô3ˆLð˜!œ&Ð Ð Ý” ð.õ $ñôðøøõÔ&ð ð ð Ø ˆ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ÁBÂB1Â0B1ÃEÃ,AD.Ä.EÅEÅE ÅE FcóÒ—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)Úformat)Ú.0Úfs r?ú z!get_netrc_auth..¶s.èè€ÐAÐA°˜6Ÿ=š=¨Ñ+Ô+ÐAÐAÐAÐAÐAÐArBr)ÚnetrcÚNetrcParseErroró:ÚasciirrO)rPÚenvironÚgetÚ NETRC_FILESrerfÚpathÚ expanduserÚKeyErrorÚexistsr Ú isinstancerÚdecodeÚnetlocr5ÚauthenticatorsrXr/ÚAttributeError)ÚurlÚ raise_errorsÚ netrc_fileÚnetrc_locationsrerfÚ netrc_pathrcÚlocÚriÚsplitstrr:r Úlogin_is r?Úget_netrc_authr~¯sí€õ”—’ Ñ(Ô(€JØÐØ%˜-ˆˆàAÐAµ[ÐAÑAÔAˆð- Ø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à & q¤ Ð0˜1˜1¨q�ؘ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ú<éÿÿÿÿú>)ÚgetattrrprrPrlÚbasename)Úobjr€s r?Úguess_filenamer‡èsx€å �3˜ Ñ %Ô %€DØ ð&•˜D¥*Ñ-Ô-ð&°$°q´'¸S².°.Ø �ŒH˜ŠOˆOÝŒw×Ò Ñ%Ô%Ð%ð&ð&ð&ð&°.°.Ø ˆOrBcóz—tj |¦«r|Stj |¦«\}}|rytj |¦«sZtj |¦«\}}d ||g¦«}|rtj |¦«¯Zt j|¦«s|St j|¦«}|| ¦«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)rPrlror5ÚjoinÚzipfileÚ is_zipfileÚZipFileÚnamelistÚtempfileÚ gettempdirÚ atomic_openÚwriteÚread)rlÚarchiveÚmemberÚprefixÚzip_fileÚtmpÚextracted_pathÚ file_handlers r?Ú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Å;)F0Æ0F4Æ7F4c#ó’K—tjddkr tjn tj}t jtj |¦«¬¦«\}} tj |d¦«5}|V—ddd¦«n #1swxYwY|||¦«dS#t$rtj |¦«‚wxYw)z-Write a file to the disk in an atomic fashionrrO)ÚdirÚwbN) ÚsysÚ version_inforPÚrenamer6r�ÚmkstemprlÚdirnameÚfdopenÚ BaseExceptionÚremove)ÚfilenameÚreplacerÚtmp_descriptorÚtmp_nameÚ tmp_handlers r?r‘r‘sèè€õ Ô,¨QÔ/°1Ò4Ð4�rŒyˆy½"¼*€HÝ'Ô/µB´G·O²OÀHÑ4MÔ4MÐNÑNÔNÑ€N�HðÝ ŒY�~ tÑ ,Ô ,ð ° ØÐ Ð Ð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð àˆ�˜8Ñ$Ô$Ð$Ð$Ð$øÝ ðððÝ Œ �(ÑÔÐØ ðøøøs0Á'B&Á<B  B& BÂB&ÂBÂB&Â& Ccó–—|€dSt|ttttf¦«rt d¦«‚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)rprr Úboolr2Ú ValueErrorr©Úvalues r?Úfrom_key_val_listr²sG€ð$ €}؈tå�%�#�u¥d­CÐ0Ñ1Ô1ðHÝÐFÑGÔGÐGå �uÑ Ô ÐrBcóè—|€dSt|ttttf¦«rt d¦«‚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­) rprr r®r2r¯rrDÚlistr°s r?Úto_key_val_listrµ:sd€ð" €}؈tå�%�#�u¥d­CÐ0Ñ1Ô1ðHÝÐFÑGÔGÐGå�%�Ñ!Ô!ðØ— ’ ‘ ” ˆå �‰;Œ;ÐrBcóÆ—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 r?Úparse_list_headerr½Xs�€ð.€FÝ" 5Ñ)Ô)ððˆØ ���Œ8�t˜B˜C˜C”yÐ 'Ð 'Ò 'Ð ' CÒ 'Ð 'Ð 'Ð 'Ð 'Ý'¨¨Q¨r¨T¬ Ñ3Ô3ˆDØ� Š �dÑÔÐÐØ €MrBcóì—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¸r5r¹)r±r»r¼r€s r?Úparse_dict_headerrÀxs£€ð,€FÝ" 5Ñ)Ô)ððˆØ �dˆ?ˆ?؈F�4‰LØ Ø—j’j  aÑ(Ô(‰ ˆˆeØ ��!�Œ9˜˜b˜c˜cœ Ð )Ð )Ò )Ð ) cÒ )Ð )Ð )Ð )Ð )Ý(¨¨q°¨t¬Ñ5Ô5ˆE؈ˆt‰ ˆ Ø €MrBcóÊ—|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·rNrOz\\ú\z\")r6)r±Ú is_filenames r?r¹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Ø €LrBcó2—i}|D]}|j||j<Œ|S)z€Returns a key/value dictionary from a CookieJar. :param cj: CookieJar object to extract cookies from. :rtype: dict )r±r€)ÚcjÚ cookie_dictÚcookies r?Údict_from_cookiejarrÈ´s/€ð€Kàð0ð0ˆØ#)¤<ˆ �F”KÑ Ð à ÐrBcó"—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 r)rÅrÆs r?Úadd_dict_to_cookiejarrÊÃs€õ ˜{¨BÑ /Ô /Ð/rBcó`—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!])Úflagsz+]z$^<\?xml.*?encoding=["\']*(.+?)["\'>])rTrUÚDeprecationWarningr7Úcompiler9Úfindall)ÚcontentÚ charset_reÚ pragma_reÚxml_res r?Úget_encodings_from_contentrÔÎs¤€õ  „Mð -õ ñ ôðõ ”Ð@ÍÌÐMÑMÔM€JÝ” ÐIÕQSÔQUÐVÑVÔV€IÝ ŒZÐ?Ñ @Ô @€Fà × Ò ˜wÑ 'Ô 'Ø × Ò ˜gÑ &Ô &ñ 'à �NŠN˜7Ñ #Ô #ñ $ð%rBcó —| 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‚)r5ÚstripÚfindÚlower) ÚheaderÚtokensÚ content_typeÚparamsÚ params_dictÚitems_to_stripÚparamÚkeyr±Úindex_of_equalss r?Ú_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Ð2Ð2Ô3×9Ò9¸.ÑIÔI�Ø',ˆK˜Ÿ š ™ œ Ñ $øØ ˜Ð $Ð$rBcó²—| 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/jsonúutf-8)rjrârÖ)ÚheadersrÛrÜs r?Úget_encoding_from_headersrèûs€€ð—;’;˜~Ñ.Ô.€Là ð؈tå5°lÑCÔCÑ€L�&à�FÐÐØ�iÔ ×&Ò& uÑ-Ô-Ð-à �ÐÐØˆ|à˜\Ð)Ð)àˆwð*Ð)rBc#óòK—|j€ |D]}|V—ŒdStj|j¦«d¬¦«}|D]}| |¦«}|r|V—Œ| dd¬¦«}|r|V—dSdS)zStream decodes a iterator.Nr6©ÚerrorsrBT)Úfinal)ÚencodingÚcodecsÚgetincrementaldecoderrq)ÚiteratorÚrr¼ÚdecoderÚchunkÚrvs r?Ústream_decode_response_unicoderõs´èè€ð „zÐØð ð ˆD؈JˆJˆJˆJ؈à6�fÔ*¨1¬:Ñ6Ô6¸iÐHÑHÔH€GØððˆØ �^Š^˜EÑ "Ô "ˆØ ð ØˆHˆHˆHøØ �Š˜ 4ˆÑ (Ô (€BØ ðØˆˆˆˆˆððrBc#ó´K—d}|�|dkrt|¦«}|t|¦«kr)||||z…V—||z }|t|¦«k°'dSdS)z Iterate over slices of a string.rN)rJ)ÚstringÚ slice_lengthÚposs r?Ú iter_slicesrú&s{èè€à €CØÐ˜|¨qÒ0Ð0ݘ6‘{”{ˆ Ø •�F‘ ” Ò Ð Ø�S˜˜|Ñ+Ð+Ô,Ð,Ð,Ð,Ø ˆ|шð •�F‘ ” Ò Ð Ð Ð Ð Ð rBcó:—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.)r6rê) rTrUrÍrèrçrrÐÚ UnicodeErrorrºÚ TypeError)rñÚtried_encodingsrís r?Úget_unicode_from_responserÿ0sÓ€õ „Mð -õ ñ ôðð €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‚| ¦«rn t t |d¦«¦«}n #t $rtd|z¦«‚wxYw|tvr|||dd…z||<Œ˜d||z||<Œ§d||z||<Œ¶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 ú%rrrOéz%Invalid percent-escape sequence: '%s'NÚ) r5ÚrangerJÚisalnumÚchrr2r¯rÚUNRESERVED_SETrŠ)ÚuriÚpartsÚiÚhÚcs r?Úunquote_unreservedr Ys €ð �IŠI�c‰NŒN€EÝ �1•c˜%‘j”jÑ !Ô !ð &ð &ˆØ �!ŒH�Q�q�SŒMˆÝ ˆq‰6Œ6�QŠ;ˆ;˜1Ÿ9š9™;œ;ˆ;ð NÝ�˜A˜r™ œ ‘O”O��øÝð Nð Nð NÝ Ð!HÈ1Ñ!LÑMÔMÐMð Nøøøð•NÐ"Ð"ؘu Qœx¨¨¨œ|Ñ+��a‘�à  q¤™>��a‘�à˜U 1œX‘~ˆ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)r r r)rÚsafe_with_percentÚsafe_without_percents r?Ú requote_urirqsk€ð/ÐØ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¦«\}}tjdtjt t |¦«¦«¦«¦«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_atonr5Údotted_netmaskr2)ÚipÚnetÚipaddrÚnetaddrÚbitsÚnetmaskÚnetworks r?Ú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Ð4rBcó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)Úmaskrs r?rr–s8€ð ˜˜b 4™i™¨1Ñ,Ñ ,€DÝ Ô �FœK¨¨dÑ3Ô3Ñ 4Ô 4Ð4rBcó^— tj|¦«n#tj$rYdSwxYwdS)z :rtype: bool FT)rrÚerror)Ú string_ips r?Úis_ipv4_addressr)¡sD€ðÝÔ˜Ñ#Ô#Ð#Ð#øÝ Œ<ððð؈uˆuðøøøà ˆ4s ‚—*©*cóX—| d¦«dkrŽ t| d¦«d¦«}n#t$rYdSwxYw|dks|dkrdS t j| d¦«d¦«n#tj$rYdSwxYwdSdS)zV Very simple check of the cidr format in no_proxy variable. :rtype: bool r‰rFr"rT)Úcountr2r5r¯rrr')Ústring_networkr%s r?Ú 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)rPrirj)Úenv_namer±Ú value_changedÚ old_values r?Ú set_environr2Ä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Œ9nb|j}|jr|d  |j¦«z }|D]4}|j  |¦«s|  |¦«rdSŒ5td|¦«5 t|j¦«}n#ttjf$rd }YnwxYwddd¦«n #1swxYwY|rdSd S) zL Returns whether we should bypass proxies or not. :rtype: bool có¢—tj |¦«p0tj | ¦«¦«S©N)rPrirjÚupper)Úks r?úz'should_bypass_proxies..âs/€�"œ*Ÿ.š.¨Ñ+Ô+ÐH­r¬z¯~ª~¸a¿gºg¹i¼iÑ/HÔ/H€rBNÚno_proxyTc3óK—|]}|¯|V—Œ dSr5©)rbr:s r?rdz(should_bypass_proxies..òs;èè€ð ð ØÀTð Ø ð ð ð ð ð ð rBú rú,z:{}F)r Úhostnamer6r5r)r-r ÚportraÚendswithr2rrýrÚgaierror) rur9Ú get_proxyÚ no_proxy_argÚparsedÚproxy_ipÚhost_with_portr:Úbypasss r?Úshould_bypass_proxiesrHÚs)€ðIÐH€Ið€LØÐØ�9˜ZÑ(Ô(ˆÝ �c‰]Œ]€Fà „Ðàˆtàð ð ð Ø%×-Ò-¨c°2Ñ6Ô6×<Ò<¸SÑAÔAð ñ ô ˆõ ˜6œ?Ñ +Ô +ð Ø$ð ð �Ý  Ñ*Ô*ð Ý)¨&¬/¸8ÑDÔDð$Ø#˜t˜tð$à”_¨Ò0Ð0ð ˜4˜4ð1ð  ð$œ_ˆNØŒ{ð <Ø %§,¢,¨v¬{Ñ";Ô";Ñ;�à ð ð �Ø”?×+Ò+¨DÑ1Ô1ð °^×5LÒ5LÈTÑ5RÔ5Rð ð ˜4˜4ð õ �Z Ñ .Ô .ððð Ý! &¤/Ñ2Ô2ˆFˆFøÝ�6œ?Ð+ð ð ð ØˆFˆFˆFð øøøð ððñôððððððøøøðððððð؈tà ˆ5s6Ä"E#Ä$D9Ä8E#Ä9EÅE#ÅEÅE#Å#E'Å*E'cóD—t||¬¦«riSt¦«S)zA Return a dict of environment proxies. :rtype: dict )r9)rHr)rur9s r?Úget_environ_proxiesrJs(€õ ˜S¨8Ð4Ñ4Ô4ðØˆ å‰|Œ|ÐrBcó—|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://)r r>rjÚscheme)ruÚproxiesÚurlpartsÚ proxy_keysÚproxyÚ proxy_keys r?Ú select_proxyrS#s­€ð ˆm˜€Gݘ‰}Œ}€HØÔÐ Ø�{Š{˜8œ?¨G¯KªK¸Ñ,>Ô,>Ñ?Ô?Ð?𠌘%Ñ (Ô"3Ñ3ØŒØ�8Ô$Ñ$Ø ð €Jð €EØððˆ Ø ˜Ð РؘIÔ&ˆEØ ˆEð ð €LrBúpython-requestscó—|›dt›�S)zO Return a string representing the default user agent. :rtype: str r‰r)r€s r?Údefault_user_agentrV=s€ð �d�d�K˜KÐ (Ð(rBcóL—tt¦«tdddœ¦«S)z9 :rtype: requests.structures.CaseInsensitiveDict z*/*z keep-alive)z User-AgentzAccept-EncodingÚAcceptÚ Connection)rrVÚDEFAULT_ACCEPT_ENCODINGr;rBr?Údefault_headersr[Fs2€õ Ý(Ñ*Ô*Ý2ØØ"ð  ð ñ ô ðrBcó—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: ; rel=front; type="image/jpeg",; rel=back;type="image/jpeg" :rtype: list z '"z, * '"r¿)rÖr7r5r¯rº) r±ÚlinksÚ replace_charsÚvalrurÜÚlinkrßràs r?Úparse_header_linksraRsA€ð €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:úrhrOécóÖ—|dd…}|tjtjfvrdS|dd…tjkrdS|dd…tjtjfvrdS| t¦«}|dkrd S|dkr,|ddd…tkrd S|d dd…tkrd S|dkr*|dd…tkrd S|d d…tkrdSdS)z :rtype: str Nézutf-32rcz utf-8-sigrOzutf-16rræz 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 r?Úguess_json_utfrq}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�"Œ:�Ò Ð Ø�;Ø �!�"�"Œ:�Ò Ð Ø�;à ˆ4rBcóf—t||¦«\}}}}}}|s||}}t||||||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 )r r)ruÚ new_schemerMrrrlrÜÚqueryÚfragments r?Úprepend_scheme_if_neededrv�sN€õ 5=¸SÀ*Ñ4MÔ4MÑ1€FˆF�D˜& %¨ð ð$ؘV�ˆå �v˜v t¨V°U¸HÐEÑ FÔ FÐFrBcóª—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)r rÚusernameÚpasswordrtrý)rurDÚauths r?Úget_auth_from_urlr{®sd€õ �c‰]Œ]€FðݘœÑ(Ô(­'°&´/Ñ*BÔ*BÐCˆˆøÝ �IÐ &ðððØˆˆˆðøøøð €Ks‘(:ºAÁAs^\S[^\r\n]*$|^$z^\S[^\r\n]*$|^$c ó—|\}}t|t¦«rt}nt} | |¦«st d|z¦«‚dS#t $r&t d|›d|›dt|¦«›�¦«‚wxYw)zÕVerifies that header value is a string which doesn't contain leading whitespace or return characters. This prevents unintended header injection. :param header: tuple, in the format (name, value). z7Invalid return character or leading space in header: %szValue for header {z: z$} must be of type str or bytes, not N)rpr Ú_CLEAN_HEADER_REGEX_BYTEÚ_CLEAN_HEADER_REGEX_STRr8rrýÚtype)rÙr€r±Úpats r?Úcheck_header_validityr�Ãsº€ð�K€Dˆ%å�%�ÑÔð&Ý&ˆˆå%ˆðJØ�yŠy˜ÑÔð bÝÐ YÐ\`Ñ `ÑaÔaÐ að bð bøå ðJðJðJ݈mØ/3¨t¨t°U°U°U½DÀ¹K¼K¸KðIñJôJð JðJøøøs «'AÁ0Bcóœ—t|¦«\}}}}}}|s||}}| dd¦«d}t|||||df¦«S)zW Given a url remove the fragment and the authentication part. :rtype: str ú@rr‚r)r Úrsplitr)rurMrrrlrÜrtrus r?Ú urldefragauthr…Øsb€õ 5=¸S±M´MÑ1€FˆF�D˜& %¨ð ð$ؘV�ˆà �]Š]˜3 Ñ "Ô " 2Ô &€Få �v˜v t¨V°U¸BÐ?Ñ @Ô @Ð@rBcóò—t|jdd¦«}|�Qt|jt¦«r7 ||j¦«dS#t t f$rtd¦«‚wxYwtd¦«‚)zfMove file pointer back to its recorded starting position so it can be read again on redirect. rNNz;An error occurred when rewinding request body for redirect.z+Unable to rewind request body for redirect.)r„ÚbodyrpÚ_body_positionrrXr4r)Úprepared_requestÚ body_seeks r?Ú rewind_bodyr‹és™€õÐ(Ô-¨v°tÑ<Ô<€IØÐ¥Ð,<Ô,KÍ]Ñ![Ô![Ðð >Ø ˆIÐ&Ô5Ñ 6Ô 6Ð 6Ð 6Ð 6øÝ�Ð!ð >ð >ð >Ý'ð)=ñ>ô>ð >ð >øøøõ$Ð$QÑRÔRÐRs ´AÁ!A')Fr5)rT)hÚ__doc__rîÚ contextlibrVrPr7rrrŸr�rTr‹Ú collectionsrÚ urllib3.utilrrrrÚ_internal_utilsr Úcompatr r¸r r r rrrrrrrrrrrÚcookiesrÚ structuresrÚ exceptionsrrrrrkÚwhereÚDEFAULT_CA_BUNDLE_PATHÚ DEFAULT_PORTSrŠr5rZÚplatformr@rGr]r~r‡r›Úcontextmanagerr‘r²rµr½rÀr¹rÈrÊrÔrârèrõrúrÿÚ frozensetrr rr rr)r-r2rHrJrSrVr[raÚencoderkrlrmrqrvr{rÎr}r~r�r…r‹r;rBr?úrœsoðððð€ € € ØÐÐÐØ € € € Ø € € € Ø € € € Ø € € € Ø € € € Ø € € € Ø€€€Ø€€€Ø€€€Ø#Ð#Ð#Ð#Ð#Ð#Ø%Ð%Ð%Ð%Ð%Ð%à$Ð$Ð$Ð$Ð$Ð$ØÐÐÐÐÐà-Ð-Ð-Ð-Ð-Ð-Ø9Ð9Ð9Ð9Ð9Ð9ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð)Ð(Ð(Ð(Ð(Ð(Ø+Ð+Ð+Ð+Ð+Ð+ðGðGðGðGðGðGðGðGðGðGðGðGð#€ à$˜œ™œÐà cÐ*Ð*€ ðŸ)š)Ø €B„HˆW�l�l°4Ð8Ñ8Ô8Ð9JÔKÑLÔLñôÐð „<�7ÒÐð%ð%ð%ðN /ð /ð /ð ð ð ð:3ð:3ð:3ðz6 ð6 ð6 ð6 ðr&ð&ð&ððððB Ôð ð ñÔð ðððð6ððð<ððð@ðððFðððð2 ð ð ð0ð0ð0ð%ð%ð%ð(%ð%ð%ð2ððð2ððð$ððð!ð!ð!ðJ�ØMñOôO€ðððð05ð5ð5ð, 5ð 5ð 5ð5ð5ð5ððððððð0 Ôð1ð1ñÔð1ð*:ð:ð:ðz ð ð ð ðððð4)ð)ð)ð)ð ð ð ð"ð"ð"ðL � Š �gÑÔ€Ø �‰€Ø �‰€ðððð@GðGðGð" ð ð ð"&˜2œ:Ð&;Ñ<Ô<ÐØ$˜"œ*Ð%7Ñ8Ô8ÐðJðJðJð*AðAðAð" Sð Sð Sð Sð SrB