�
ZճcA � �� � d Z dZdZg d�ZdZdZddlZddlZddlZddl Z ddl
Z ddl mZ ddlZ ddl
Z ddlZdd lmZ ddlZdd
lmZ ddlmZ ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl!Z!ddl"Z#ddl$Z$ ddl%Z%n# e&$ r dd
l'm%Z% Y nw xY wddl'm(Z( ddl)T ddl*m*Z* d� Z+g d�Z,dZ-dZ.dZ/g d�Z0dZ1 e2d� � Z3ddl4m5Z5 e5j6 � � Z7 e8edd� � p e8ed� � Z9 dRd�Z:d� Z;d� Z< ej= d� � Z>d� Z?d � Z@ ej= d!� � ZA ej= d"ejB � � ZCd#� ZD ej= d$� � ZEd%� ZFd&� ZGd'� ZHdZId(� ZJd)� ZKd*� ZLd+� ZMd,� ZNd-� ZO G d.� d/eP� � ZQ G d0� d1eQ� � ZR G d2� d3eQ� � ZS G d4� d5eQ� � ZT G d6� d7eQ� � ZU G d8� d9eQ� � ZVeReUeSeTeVd:�ZWg d;�ZX G d<� d=eP� � ZY G d>� d?eP� � ZZ G d@� dAeZ� � Z[ G dB� dCeP� � Z\ G dD� dEeP� � Z]dSdG�Z^dTdH�Z_ G dI� dJej` ja � � Zb G dK� dLej` jc � � ZdebeddM�Ze G dN� dOeP� � Zf G dP� dQeg� � ZhdS )Uz+Small, fast HTTP client library for Python.z!Joe Gregorio (joe@bitworking.org)zCopyright 2006, Joe Gregorio) �!Thomas Broyer (t.broyer@ltgt.net)zJames AntillzXavier Verges FarrerozJonathan FeinbergzBlair ZajaczSam RubyzLouis NyffeneggerzMark PilgrimzAlex Yu�MITz0.20.4� N)�header)�gettext)�md5)�sha1� )�socks)�auth)�*)�iri2uric �X � t t d� � r| d uo
| t j uS | d uS )N�_GLOBAL_DEFAULT_TIMEOUT)�hasattr�socketr )�timeouts �3/usr/lib/python3/dist-packages/httplib2/__init__.py�has_timeoutr 9 s9 � ��v�0�1�1� U��d�"�T�w�f�6T�'T�T��$��� )�
debuglevel�FailedToDecompressContent�Http�
HttpLib2Error� ProxyInfo�
RedirectLimit�RedirectMissingLocation�Response�RETRIES�"UnimplementedDigestAuthOptionError�&UnimplementedHmacDigestAuthOptionError� � )�
connectionz
keep-alivezproxy-authenticatezproxy-authorization�te�trailers�transfer-encoding�upgrade)�GET�HEAD�OPTIONS�TRACE)�, �- �. �/ i3 �4 )�certs�PROTOCOL_TLS�PROTOCOL_SSLv23c � � t t d� � st d� � �t j t � � }| rt j nt j |_ |�Vt |d� � r7t |t � � rt t j |� � }||_ nt d� � �|�Vt |d� � r7t |t � � rt t j |� � }||_
nt d� � �t |d� � r| |_ |� |� � |r|� |||� � |S )N�
SSLContextz0httplib2 requires Python 3.2+ for ssl.SSLContext�maximum_versionzHsetting tls_maximum_version requires Python 3.7 and OpenSSL 1.1 or newer�minimum_versionzHsetting tls_minimum_version requires Python 3.7 and OpenSSL 1.1 or newer�check_hostname)r �ssl�RuntimeErrorr5 �DEFAULT_TLS_VERSION� CERT_NONE�
CERT_REQUIRED�verify_mode�
isinstance�str�getattr�
TLSVersionr6 r7 r8 �load_verify_locations�load_cert_chain)�"disable_ssl_certificate_validation�ca_certs� cert_file�key_filer6 r7 �key_password�contexts r �_build_ssl_contextrK � sZ � � �3��%�%� O��M�N�N�N��n�0�1�1�G�+M�d�#�-�-�SV�Sd�G�� �"��7�-�.�.� k��/�3�/�/�
K�")�#�.�/�"J�"J��&5�G�#�#��i�j�j�j��"��7�-�.�.� k��/�3�/�/�
K�")�#�.�/�"J�"J��&5�G�#�#��i�j�j�j� �w�(�)�)� H�%G�!G����!�!�(�+�+�+�� C���� �8�\�B�B�B��Nr c � �� t t � � ��� d� | � dd� � � d� � D � � � � �fd�t | � � � � � D � � S )Nc �6 � g | ]}|� � � ��S � ��strip��.0�xs r �
<listcomp>z(_get_end2end_headers.<locals>.<listcomp>� s � �R�R�R�1�Q�W�W�Y�Y�R�R�Rr r# � �,c � �� g | ]}|�v�|�� S rN rN )rR r �hopbyhops �r rT z(_get_end2end_headers.<locals>.<listcomp>� s# �� �Q�Q�Q�v�&��:P�:P�F�:P�:P�:Pr )�list�
HOP_BY_HOP�extend�get�split�keys)�responserX s @r �_get_end2end_headersr` � sw �� ��J���H��O�O�R�R����\�2�(F�(F�(L�(L�S�(Q�(Q�R�R�R�S�S�S�Q�Q�Q�Q��h�m�m�o�o�!6�!6�Q�Q�Q�Qr c �\ � t | j � � dk r>t | j d t j � � r| j d j n| j S t
| d� � rE| j }t |j d t j � � r|j d j n|j S d S )Nr �
socket_err)�len�argsr? r �error�errnor rb )�e�e_ints r �_errno_from_exceptionri � s� � �
�1�6�{�{�Q���",�Q�V�A�Y���"E�"E�R�q�v�a�y���1�7�R� �q�,��� _����&0���A����&M�&M�^�u�z�!�}�"�"�SX�S^�^��4r z9^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?c � � t � | � � � � � }|d |d |d |d |d fS )z�Parses a URI using the regex given in Appendix B of RFC 3986.
(scheme, authority, path, query, fragment) = parse_uri(uri)
r � � � � )�URI�match�groups)�urirq s r � parse_urirs � sD � �
�Y�Y�s�^�^�
"�
"�
$�
$�F��1�I�v�a�y�&��)�V�A�Y��q� �B�Br c �0 � t | � � \ }}}}}|r|st d| z � � �|� � � }|� � � }|sd}|rd� ||g� � p|}|� � � }|dz |z |z }||||fS )Nz(Only absolute URIs are allowed. uri = %s�/�?z://)rs �RelativeURIError�lower�join)rr �scheme� authority�path�query�fragment�request_uri�
defrag_uris r �urlnormr� � s� � �1:�3���.�V�Y��e�X�� Q�� Q��I�C�O�P�P�P����!�!�I�
�\�\�^�^�F�� ��� �3�C�H�H�d�E�]�3�3�;�t�K�
�\�\�^�^�F��%��)�+�k�9�J��9�k�:�5�5r z^\w+://z[^\w\-_.()=!]+c �v � t | t � � r| }| � d� � } n| � d� � }t |� � � � � }t � d| � � } t � d| � � } | dd� } d� | |f� � S )z�Return a filename suitable for the cache.
Strips dangerous and common characters to create a filename we
can use to store the cache in.
�utf-8rU N�Z rV )
r? �bytes�decode�encode�_md5� hexdigest�
re_url_scheme�sub� re_unsafery )�filename�filename_bytes�filemd5s r �safenamer� � s� � �
�(�E�"�"� 2�!���?�?�7�+�+���!����1�1���>�"�"�,�,�.�.�G�� � ��X�.�.�H��}�}�R��*�*�H� ����}�H��8�8�X�w�'�(�(�(r z(?:\r\n)?[ \t]+c �X � t d� | � � � D � � � � S )Nc �� � g | ]`\ }}t |� � � � � t � t |� � d � � � � � f��aS )� )�_convert_byte_strrx �NORMALIZE_SPACEr� rP )rR �key�values r rT z&_normalize_headers.<locals>.<listcomp> sl � �
�
�
���e� �s�
#�
#�
)�
)�
+�
+�_�-@�-@�AR�SX�AY�AY�[^�-_�-_�-e�-e�-g�-g�i�
�
�
r )�dict�items)�headerss r �_normalize_headersr� s8 � ��
�
� '�
�
���
�
�
�� � r c �P � t | t � � st | d� � S | S �Nr� )r? r@ )�ss r r� r�
s' |