�
K�grH �
� � d Z ddlmZ ddlZddlZddlZddlZddlmZ dZ dZ
dZ ej d � � Z
d
� d� edd
� � D � � � � Zd
� d� edd
� � D � � � � Zd
� d� edd
� � D � � � � Zd
� d� edd
� � D � � � � Zd
� d� edd
� � D � � � � Zd
� d� edd
� � D � � � � Z ej d� ddddd�� � � � Z ej d� ddd�� � � � Z ej d� � ej d� � ej d� � ej d� � ej d� � ej d� � ej d� � ej d� � d�Z ej d � � Z ej d!� � Z G d"� d#ej � � Zd=d>d)�Zd?d+�Zd@d0�Z dAd6�Z!dBd7�Z"dCd9�Z#dDd;�Z$dDd<�Z%dS )Ea�
An implementation of `urlparse` that provides URL validation and normalization
as described by RFC3986.
We rely on this implementation rather than the one in Python's stdlib, because:
* It provides more complete URL validation.
* It properly differentiates between an empty querystring and an absent querystring,
to distinguish URLs with a trailing '?'.
* It handles scheme, hostname, port, and path normalization.
* It supports IDNA hostnames, normalizing them to their encoded form.
* The API supports passing individual components, as well as the complete URL string.
Previously we relied on the excellent `rfc3986` package to handle URL parsing and
validation, but this module provides a simpler alternative, with less indirection
required.
� )�annotationsN� )�
InvalidURLi zBABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~z!$&'()*+,;=z%[A-Fa-f0-9]{2}� c �4 � g | ]}|d v�t |� � ��S ))� �"