
    @OOf)                         d Z ddlZddlmZ ddlmZ ddlmZ eed   ee	e
f   f   Z ej                  dej                        Zede	d	e	d
efd       Zy)z@
Server specs are used to describe an upstream proxy or server.
    N)cache)Literal)check	httphttpshttp3tlsdtlstcpudpdnsquica  
        ^
        (?:(?P<scheme>\w+)://)?  # scheme is optional
        (?P<host>[^:/]+|\[.+\])  # hostname can be DNS name, IPv4, or IPv6 address.
        (?::(?P<port>\d+))?  #  port is optional
        /?  #  we allow a trailing backslash, but no path
        $
        server_specdefault_schemereturnc                 b   t         j                  |       }|st        d|        |j                  d      r|j                  d      }n|}|dvrt        d|       |j                  d      }|j	                  d      r|j                  d      r|dd	 }t        j                  |      st        d
|       |j                  d      rt        |j                  d            }n	 dddddd|   }t        j                  |      st        d|       |||ffS # t        $ r t        d      w xY w)z
    Parses a server mode specification, e.g.:

     - http://example.com/
     - example.org
     - example.com:443

    *Raises:*
     - ValueError, if the server specification is invalid.
    zInvalid server specification: schemer   zInvalid server scheme: host[]   zInvalid hostname: portP   i  5   )r   r   r   r	   r   zPort specification missing.zInvalid port: )server_spec_rematch
ValueErrorgroup
startswithendswithr   is_valid_hostintKeyErroris_valid_port)r   r   mr   r   r   s         Z/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/net/server_spec.pyparser)      sK    	[)A9+GHHwwx" 
 
 26(;<<776?Dsc 2Abzt$-dV455wwv1776?#		= D t$>$011D$<  	=:<<	=s   %D D.)__doc__re	functoolsr   typingr   mitmproxy.netr   tuplestrr$   
ServerSpeccompileVERBOSEr   r)        r(   <module>r6      s    
   PQ	#s(O

  JJ
 7 s 7 C 7 J 7  7 r5   