+
    Dfjz                     :    R t R R ltR R ltR R ltR R ltR	# )
z6
Tools for pedantically processing the HTTP protocol.
c                0    V ^8  d   QhR\         R\        /#    breturnbytesbool)formats   "3/usr/lib/python3/dist-packages/twisted/web/_abnf.py__annotate__r   
   s       $     c                2    V  F  pVR9  g   K   R# 	  V R8g  # )z3
Is the string a token per RFC 9110 section 5.6.2?
sM   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#$%&'*+-.^_`|~Fr    r   cs   & r   _istokenr   
   s+     

   8Or   c                0    V ^8  d   QhR\         R\        /# )r   datar   r   int)r
   s   "r   r   r      s      % C r   c                    V P                  R4      p V P                  4       '       g   \        RV : 24      h\        V 4      # )a   
Parse a decimal integer of the form C{1*DIGIT}, i.e. consisting only of
decimal digits. The integer may be embedded in whitespace (space and
horizontal tab). This differs from the built-in L{int()} function by
disallowing a leading C{+} character and various forms of whitespace
(note that we sanitize linear whitespace in header values in
L{twisted.web.http_headers.Headers}).

@param data: Value to parse.

@returns: A non-negative integer.

@raises ValueError: When I{value} contains non-decimal characters.
s    	z#Value contains non-decimal digits: )stripisdigit
ValueErrorr   )r   s   &r   _decintr      s:     ::fD<<>>>thGHHt9r   c                0    V ^8  d   QhR\         R\        /# r   r   )r
   s   "r   r   r   -   s     
 
E 
d 
r   c                2    V  F  pVR9  g   K   R# 	  V R8g  # )z~
Is the string case-insensitively hexidecimal?

It must be composed of one or more characters in the ranges a-f, A-F
and 0-9.
s   0123456789abcdefABCDEFFr   r   r   s   & r   _ishexdigitsr   -   s%     --  8Or   c                0    V ^8  d   QhR\         R\        /# r   r   )r
   s   "r   r   r   :   s     
 
u 
 
r   c                R    \        V 4      '       g   \        V 4      h\        V ^4      # )z
Decode a hexadecimal integer.

Unlike L{int(b, 16)}, this raises L{ValueError} when the integer has
a prefix like C{b'0x'}, C{b'+'}, or C{b'-'}, which is desirable when
parsing network protocols.
)r   r   r   )r   s   &r   _hexintr!   :   s#     ??mq":r   N)__doc__r   r   r   r!   r   r   r   <module>r#      s   

*

r   