
    =Ogr                        	 d Z ddlmZmZmZ ddlmZ ddlZddlZddl	Z
ddlmZ ddlmZ ddlZddlZddlZddlZg dZ ej        ed	           d
adad Zd Zd Zd Zeadadej        dddfdZd#dZ d Z!d Z" G d d          Z# G d d          Z$ej        fdZ%d$dZ&ej        fdZ'd Z(d Z)d Z*d  Z+d! Z,ed"k    r e%             dS dS )%z2.6    )StringIOBytesIOTextIOWrapper)MappingN)
FeedParser)Message)MiniFieldStorageFieldStorageparseparse_multipartparse_headertestprint_exceptionprint_environ
print_formprint_directoryprint_argumentsprint_environ_usage)      )remove c                      	 t          j        dt          d           t          r0t          s)	 t          t          dd          an# t          $ r Y nw xY wt          st          ant          at          |   d S )Nz7cgi.log() is deprecated as of 3.10. Use logging instead   )
stacklevelalocale)encoding)
warningswarnDeprecationWarninglogfilelogfpopenOSErrornologlogdologallargss    /usr/lib64/python3.11/cgi.pyinitlogr,   A   s    . MK$4 4 4 4 u 	#999EE 	 	 	D	 MMMMs   A 
AAc                 H    	 t                               | |z  dz              d S )N
)r#   write)fmtargss     r+   r(   r(   f   s%    G	KKD4         c                      	 d S N r)   s    r+   r&   r&   j   s
    CDr2   c                  ^    	 da t          rt                                           d at          ad S )Nr   )r"   r#   closer,   r'   r5   r2   r+   closelogr8   n   s-    G 
CCCr2   &c                 <   	 | t           j        } t          | d          r| j        }nd}t	          | t
                    r| j        } d|vrd|d<   |d         dk    rt          |d                   \  }}|dk    rt          | ||          S |d	k    r_t          |d
                   }t          r|t          k    rt          d          |                     |                              |          }	nd}	d|v r|	r|	dz   }	|	|d         z   }	n0t           j        dd          r|	r|	dz   }	|	t           j        d         z   }	|	|d<   n;d|v r	|d         }	n.t           j        dd          rt           j        d         }	nd}	|	|d<   t          j                            |	||||          S )Nr   zlatin-1REQUEST_METHODGETPOSTCONTENT_TYPEzmultipart/form-data)	separator!application/x-www-form-urlencodedCONTENT_LENGTHMaximum content length exceededr   QUERY_STRINGr9      )r   r?   )sysstdinhasattrr   
isinstancer   bufferr   r   intmaxlen
ValueErrorreaddecodeargvurllibr   parse_qs)
fpenvironkeep_blank_valuesstrict_parsingr?   r   ctypepdictclengthqss
             r+   r   r      s   , 
zY r* ; "m$$ Yw&&$) ! F**#GN$;<<u)))"2u	BBBB999'"2344G D'F** !BCCC!!((22BBBW$$ S2gn--BBXabb\ 	" S2chqk!B"$	7	"	"^$8ABB< 	!BBB"$<  %6*2i ! I I Ir2   utf-8replacec                 0   	 |d                              d          }d                    |          }t                      }|                    |           	 |d         |d<   n# t          $ r Y nw xY wt          | |||ddi|          fd	D             S )
Nboundaryasciiz multipart/form-data; boundary={}zCONTENT-LENGTHzContent-Lengthr;   r=   )headersr   errorsrS   r?   c                 <    i | ]}|                     |          S r5   )getlist).0kfss     r+   
<dictcomp>z#parse_multipart.<locals>.<dictcomp>   s%    )))Arzz!}})))r2   )rN   formatr   set_typeKeyErrorr
   )	rR   rW   r   r`   r?   r]   rV   r_   re   s	           @r+   r   r      s     Z ''00H.55h??EiiGU$)*:$; !!   	b'HV!6*i
A 
A 
AB))))b))))s   A# #
A0/A0c              #     K   | d d         dk    r| dd          } |                      d          }|dk    r|                     dd|          |                     dd|          z
  dz  rQ|                      d|dz             }|dk    r2|                     dd|          |                     dd|          z
  dz  Q|dk     rt          |           }| d |         }|                                V  | |d          } | d d         dk    d S d S )NrD   ;r   "\"r   )findcountlenstrip)sendfs      r+   _parseparamru      s     
BQB%3,,abbEffSkkAgg17733//!''%C2H2HHAMg&&cAg&&C Agg17733//!''%C2H2HHAMg77a&&CdsdGggiicddG BQB%3,,,,,,r2   c                    	 t          d| z             }|                                }i }|D ]}|                    d          }|dk    r|d |                                                                         }||dz   d                                          }t          |          dk    rP|d         |d         cxk    rdk    r7n n4|dd         }|                    dd	                              d
d          }|||<   ||fS )Nrk   =r   rD   r   rl   z\\\rm   )ru   __next__rn   rq   lowerrp   r[   )linepartskeyrW   pinamevalues           r+   r   r      s   
 d
##E
..

CE    FF3KK66RaR5;;==&&((DacddGMMOOE5zzQ58uRy#?#?#?#?C#?#?#?#?#?adfd33;;E3GGE$K:r2   c                   <    e Zd Z	 dZdZdZdZi ZdZi Z	i Z
d Zd ZdS )r	   Nc                 $    	 || _         || _        d S r4   r   r   selfr   r   s      r+   __init__zMiniFieldStorage.__init__  s    4	


r2   c                 (    d| j         d| j        dS )NzMiniFieldStorage(, )r   r   s    r+   __repr__zMiniFieldStorage.__repr__  s    .-1YYY


CCr2   )__name__
__module____qualname__filenamelisttypefiletype_optionsdispositiondisposition_optionsr_   r   r   r5   r2   r+   r	   r	     se        G HDDDLKG  D D D D Dr2   r	   c                       e Zd Z	 dddej        dddddddfdZd Zd	 Zd
 Zd Z	d Z
d Zd Zd!dZd!dZd Zd Zd Zd Zd Zd ZdZd Zd ZdZd Zd Zd Zd Zd Zd Zd  ZdS )"r
   Nr2   r   rZ   r[   r9   c                    	 d}|| _         || _        |
| _        || _        d|v r|d                                         }d | _        |dk    s|dk    rrd|v r	|d         }n)t          j        dd          rt          j        d         }nd}|                    t          j
                    d          }t          |          }|dd	i}|=i }|d
k    rd	|d<   d|v r|d         |d<   d|v r|d         | _        d|v r|d         |d<   n+t          |t          t          f          st          d          || _        |t          j        j        | _        nXt          |t(                    r|j        | _        n6t+          |d          rt+          |d          st          d          || _        || _        |	| _        t          |t0                    s$t          dt3          |          j        z            || _        d| _        || _        di }}d| j        v rt=          | j        d                   \  }}|| _        || _         d | _!        d|v r|d         | _!        d | _"        d|v r|d         | _"        | j"        d u| _#        d| j        v rt=          | j        d                   \  }}n| j        s|d
k    rdi }}nd	i }}|| _        || _$        d|v r,|d                             | j        | j                  | _%        nd| _%        d}d| j        v rM	 tM          | j        d                   }n# tN          $ r Y nw xY wtP          r|tP          k    rtO          d          || _)        | j        |dk    r|| _        d x| _*        | _+        d| _,        |d	k    r| -                                 d S |d d         dk    r| .                    |||           d S | /                                 d S )Nr<   r;   HEADrC   rD   r   surrogateescapezcontent-typer@   r=   r>   rA   content-lengthz?headers must be mapping or an instance of email.message.MessagerM   readlinezfp must be file pointerz#outerboundary must be bytes, not %sr   zcontent-dispositionr   r   z
text/plainr]   r2   rx   rB   
   z
multipart/)0rT   rU   max_num_fieldsr?   upper
qs_on_postrE   rO   encoder   getpreferredencodingr   rH   r   r   	TypeErrorr_   rF   rI   rR   r   rG   r   r`   bytesr   r   outerboundary
bytes_readlimitr   r   r   r   r   _binary_filer   innerboundaryrJ   rL   rK   lengthr   r   doneread_urlencoded
read_multiread_single)r   rR   r_   r   rS   rT   rU   r   r   r`   r   r?   methodrY   cdisprW   rV   clens                     r+   r   zFieldStorage.__init__J  s   *	V !2,,"w&&-.4466FU??f..((^,!"" Xa[6688:KLLBB)>@?G*M'((*1.*A'((")."97**,34D,E()w'(:;; 9 !8 9 9 9:i&DGGM** 	iDGGB'' ;GB
,C,C ; 9:::DG -// 	<A"=11:; < < <*
 2u DL00'5J(KLLLE5 #( 	U??fDI!*-DM M5 T\))'^(DEELE55 	C6V#3#3'5EE>5E	!!&z!2!9!9$-:>+"G "GD "%Dt|++4<(89::    D$-- !BCCC:$!))DJ $$	DI	777  """""3B3Z<''OOG%6GGGGGs   L   
L-,L-c                 \    	 | j                                          d S # t          $ r Y d S w xY wr4   )r   r7   AttributeErrorr   s    r+   __del__zFieldStorage.__del__  sA    	IOO 	 	 	DD	s    
++c                     | S r4   r5   r   s    r+   	__enter__zFieldStorage.__enter__  s    r2   c                 8    | j                                          d S r4   )r   r7   )r   r1   s     r+   __exit__zFieldStorage.__exit__  s    	r2   c                 8    d| j         d| j        d| j        dS )NzFieldStorage(r   r   )r   r   r   r   s    r+   r   zFieldStorage.__repr__  s(    0			4===$***6 	6r2   c                 D    t          |                                           S r4   )iterkeysr   s    r+   __iter__zFieldStorage.__iter__   s    DIIKK   r2   c                     |dk    rt          |          | j        rN| j                            d           | j                                        }| j                            d           n| j        | j        }nd }|S )Nr   r   )r   r   seekrM   r   r   s      r+   __getattr__zFieldStorage.__getattr__  sz    7?? &&&9 	INN1INN$$EINN1Y"IEEEr2   c                     	 | j         t          d          g }| j         D ]"}|j        |k    r|                    |           #|st	          |          t          |          dk    r|d         S |S )Nnot indexablerD   r   )r   r   r   appendri   rp   )r   r~   founditems       r+   __getitem__zFieldStorage.__getitem__  s    (9O,,,I 	4 	4DyCd!3!3!3 	 3--u::??8OLr2   c                 p    	 || v r0| |         }t          |t                    rd |D             S |j        S |S )Nc                     g | ]	}|j         
S r5   r   rc   xs     r+   
<listcomp>z)FieldStorage.getvalue.<locals>.<listcomp>#      ///A///r2   rH   r   r   r   r~   defaultr   s       r+   getvaluezFieldStorage.getvalue  sJ    F$;;IE%&& #//////{"Nr2   c                 r    	 || v r1| |         }t          |t                    r|d         j        S |j        S |S Nr   r   r   s       r+   getfirstzFieldStorage.getfirst)  sB    /$;;IE%&& #Qx~%{"Nr2   c                 r    	 || v r1| |         }t          |t                    rd |D             S |j        gS g S )Nc                     g | ]	}|j         
S r5   r   r   s     r+   r   z(FieldStorage.getlist.<locals>.<listcomp>9  r   r2   r   )r   r~   r   s      r+   rb   zFieldStorage.getlist4  sL    .$;;IE%&& %//////}$Ir2   c                     	 | j         t          d          t          t          d | j         D                                 S )Nr   c              3   $   K   | ]}|j         V  d S r4   r   )rc   r   s     r+   	<genexpr>z$FieldStorage.keys.<locals>.<genexpr>C  s$      88d	888888r2   )r   r   setr   s    r+   r   zFieldStorage.keys?  sB    -9O,,,C88di88888999r2   c                 r    	 | j         t          d          t          fd| j         D                       S )Nr   c              3   .   K   | ]}|j         k    V  d S r4   r   )rc   r   r~   s     r+   r   z,FieldStorage.__contains__.<locals>.<genexpr>I  s*      ::49#::::::r2   )r   r   any)r   r~   s    `r+   __contains__zFieldStorage.__contains__E  sA    39O,,,::::	::::::r2   c                 F    	 t          |                                           S r4   )rp   r   r   s    r+   __len__zFieldStorage.__len__K  s    .499;;r2   c                 V    | j         t          d          t          | j                   S )NzCannot be converted to bool.)r   r   boolr   s    r+   __bool__zFieldStorage.__bool__O  s'    9:;;;DIr2   c           	          	 | j                             | j                  }t          |t                    s+t          | j         dt          |          j                  |                    | j	        | j
                  }| j        r|d| j        z   z  }t          j                            || j        | j        | j	        | j
        | j        | j                  }d |D             | _        |                                  d S )N should return bytes, got r9   r   r`   r   r?   c                 4    g | ]\  }}t          ||          S r5   r	   rc   r~   r   s      r+   r   z0FieldStorage.read_urlencoded.<locals>.<listcomp>a  s'    JJJjc5%c511JJJr2   )rR   rM   r   rH   r   rL   r   r   rN   r   r`   r   rP   r   	parse_qslrT   rU   r   r?   r   
skip_lines)r   rY   querys      r+   r   zFieldStorage.read_urlencodedT  s    9W\\$+&&"e$$ 	= $b):):< = = =YYt}dk22? 	(#''B&&&(;]4;.$. ' J J KJEJJJ	r2   c                    	 | j         }t          |          st          d|          g | _        | j        rmt
          j                            | j        | j        | j	        | j
        | j        | j        | j                  }| j                            d |D                        | j        p| j        }| j                                        }t'          |t(                    s+t          | j        dt+          |          j                  | xj        t1          |          z  c_        |                                d| j         z   k    rZ|rX| j                                        }| xj        t1          |          z  c_        |                                d| j         z   k    r|X| j        }||t1          | j                  z  }	 t5                      }	d}
	 | j                                        }|
|z  }
|                                sn4|
sn9| xj        t1          |
          z  c_        |	                    |
                    | j
        | j                             |	                                }d|v r|d= | j        d n| j        | j        z
  } || j        ||||||| j
        | j        || j                  }|8|d	z  }|j        r|t1          |j                  z  }|d
k     rt          d          | xj        |j        z  c_        | j                            |           |j         s| j        | j!        cxk    rd
k    rn nn| "                                 d S )Nz$Invalid boundary in multipart form: r   c              3   <   K   | ]\  }}t          ||          V  d S r4   r   r   s      r+   r   z*FieldStorage.read_multi.<locals>.<genexpr>q  s1      RRjc5-c599RRRRRRr2   r      --Tr2   r   rD   r   zMax number of fields exceeded)#r   valid_boundaryrL   r   r   rP   r   r   rT   rU   r   r`   r   r?   extendFieldStorageClass	__class__rR   r   rH   r   r   r   r   rp   rq   r   feedrN   r7   r   r   r   r   r   )r   rS   rT   rU   ibr   klass
first_liner   parserhdr_textdatar_   r   parts                  r+   r   zFieldStorage.read_multif  s   =b!! 	O*MNNN	? 	SL**!79Lt{#2dn + N NE IRRERRRRRR&8$.W%%''
*e,, 	E $j)9)9)B)BD E E E3z??* !!ed.@&@AA B))++JOOs:.OO !!ed.@&@AA B ,%c$)nn,N#	\\FHw''))D zz|| 	
  OOs8}},OOKKt{CCDDDllnnG  7**,- J.DDZ$/1 5'2w8I'^T^U UD )!#9 5"c$)nn4N!A%%$%DEEEOOt.OOIT"""y DOt{>>>>Q>>>>>G#	H 	r2   c                     	 | j         dk    r)|                                  |                                  n|                                  | j                            d           d S r   )r   read_binaryr   
read_linesr   r   r   s    r+   r   zFieldStorage.read_single  sa    ,;!OOOO	qr2   i    c                    	 |                                  | _        | j        }|dk    r|dk    r| j                            t          || j                            }t          |t                    s+t          | j        dt          |          j                  | xj        t          |          z  c_        |s	d| _        d S | j                            |           |t          |          z
  }|dk    d S d S d S )Nr   r   rx   )	make_filer   r   rR   rM   minbufsizerH   r   rL   r   r   r   rp   r   r/   )r   todor   s      r+   r   zFieldStorage.read_binary  s    )NN$$	{199((w||Cdl$;$;<<!$.. G$(,d1D1D&F G G G3t99,  "DIE	%%%c$ii' (((( 9(r2   c                     	 | j         rt                      x| _        | _        nt	                      x| _        | _        | j        r|                                  d S |                                  d S r4   )r   r   r   _FieldStorage__filer   r   read_lines_to_outerboundaryread_lines_to_eofr   s    r+   r   zFieldStorage.read_lines  sq    > 	1&-ii/DI&.jj0DI 	%,,.....""$$$$$r2   c                    	 | j         | j                                         t          |          z   dk    rS|                                 | _        | j                                         }| j                            |           d | _         | j        r| j                            |           d S | j                            |                    | j	        | j
                             d S )Ni  )r  tellrp   r  r   r   r/   r   rN   r   r`   )r   r|   r   s      r+   __writezFieldStorage.__write  s    .;"{!!CII-44 NN,,	{++--	%%%" 	EIOOD!!!!! IOODKKt{CCDDDDDr2   c                     	 	 | j                             d          }| xj        t          |          z  c_        |s	d| _        d S |                     |           X)NrD      rx   )rR   r   r   rp   r   _FieldStorage__write)r   r|   s     r+   r	  zFieldStorage.read_lines_to_eof  s`    -	7##E**DOOs4yy(OO 	LL	r2   c                    	 d| j         z   }|dz   }d}d}d}	 | j        d| j        cxk    r|k    rn nd S | j                            d          }| xj        t          |          z  c_        |t          |          z  }|s	d| _        d S |dk    r||z   }d}|                    d          r-|r+|                                }||k    rd S ||k    r	d| _        d S |}|	                    d	          rd	}|d d
         }d}nL|	                    d          rd}|d d         }d}n(|	                    d          rd}|d d         }d}nd}d}| 
                    ||z              M)Nr   r2   Tr   rD   r  rx      s   
   
F)r   r   rR   r   r   rp   r   
startswithrstripendswithr  )	r   next_boundarylast_boundarydelimlast_line_lfend_readr|   strippedlineodelims	            r+   r  z(FieldStorage.read_lines_to_outerboundary  s   	  22%-&	(z%!tz*B*B*B*BU*B*B*B*B*B7##E**DOOs4yy(OOSYYE 	~~t|u%% / #{{}}=00E=00 !DIEF}}W%% (CRCy"&u%% (CRCy"&u%% ( CRCy"'"'LL$'''M&	(r2   c                 |   	 | j         r| j        rd S d| j         z   }|dz   }d}	 | j                            d          }| xj        t          |          z  c_        |s	d| _        d S |                    d          r-|r+|                                }||k    rd S ||k    r	d| _        d S |                    d          })Nr   Tr  rx   rD   r  )r   r   rR   r   r   rp   r  rq   )r   r  r  r  r|   r  s         r+   r   zFieldStorage.skip_lines  s    C! 	TY 	F 22%-	37##E**DOOs4yy(OO 	}}U##  #zz||=00E=00 !DIE"mmE22O	3r2   c                 r    	 | j         rt          j        d          S t          j        d| j        d          S )Nzwb+zw+r.   )r   newline)r   tempfileTemporaryFiler   r   s    r+   r  zFieldStorage.make_file3  sH    	.  	8)%000)$$8 8 8 8r2   r4   ) r   r   r   osrS   r   r   r   r   r   r   r   r   r   r   rb   r   r   r   r   r   r   r   r   r  r   r   r  r	  r  r   r  r5   r2   r+   r
   r
     s       (R Cqgi $c c c cJ      6 6 6
! ! !    	 	 	 		 	 	 		 	 	: : :; ; ;       
    C C CJ   G( ( ("	% 	% 	%E E E  0( 0( 0(d3 3 3,8 8 8 8 8r2   r
   c                 j   	 t          d           t                       t          j        t          _        	 t	                      }t                       t                       t          |           t          |            t                       d }|fd}t          d            |             n#  t                       Y nxY wt          d           da	 t	                      }t                       t                       t          |           t          |            d S #  t                       Y d S xY w)NzContent-type: text/htmlc                  $    t          d           d S )Nz,testing print_exception() -- <I>italics?</I>)execr5   r2   r+   rt   ztest.<locals>.ff  s    ?@@@@@r2   c                      |              d S r4   r5   )rt   s    r+   gztest.<locals>.gh  s    ACCCCCr2   z9<H3>What follows is a test, not an actual exception:</H3>z*<H1>Second try with a small maxlen...</H1>2   )printrE   stdoutstderrr
   r   r   r   r   r   r   rK   )rS   formrt   r(  s       r+   r   r   U  sT    

#$$$	GGGCJ~~4g	A 	A 	A 	 	 	 	IJJJ		
6777 F~~4gs   A7B. .C AD D2c           
         | t          j                    \  } }}dd l}t                       t          d           |                    ||          |                    | |          z   }t          dt          j        d                    |d d                             dt          j        |d                   d           ~d S )Nr   z+<H3>Traceback (most recent call last):</H3>z<PRE>r   rx   z<B>z
</B></PRE>)	rE   exc_info	tracebackr*  	format_tbformat_exception_onlyhtmlescapejoin)r   r   tbr   r0  r   s         r+   r   r   |  s    |,..eR	GGG	
7888r5))**4778D	EBGGD"I&&''''DH
    	r2   c           
      ^   	 t          |                                           }t                       t          d           t          d           |D ]>}t          dt          j        |          dt          j        | |                              ?t          d           t                       d S )Nz<H3>Shell Environment:</H3><DL><DT><DD></DL>)sortedr   r*  r3  r4  )rS   r   r~   s      r+   r   r     s    -',,..!!D	GGG	
'(((	&MMM K Kfdk#&&GCL0I0IJJJJ	'NNN	GGGGGr2   c                 N   	 t          |                                           }t                       t          d           |st          d           t          d           |D ]}t          dt          j        |          z   dz   d           | |         }t          dt          j        t          t          |                              z   d	z              t          d
t          j        t          |                    z              t          d           t                       d S )Nz<H3>Form Contents:</H3>z<P>No form fields.r8  r9  : )rs   z<i>z</i>r:  r;  )r<  r   r*  r3  r4  reprr   )r-  r   r~   r   s       r+   r   r     s   .$))++D	GGG	
#$$$ $"###	&MMM 1 1ft{3'''#-37777S	edk$tE{{"3"3444v=>>>ft{4;;///0000	'NNN	GGGGGr2   c            	      V   	 t                       t          d           	 t          j                    } t          t          j        |                      nF# t
          $ r9}t          dt          j        t          |                               Y d }~nd }~ww xY wt                       d S )Nz#<H3>Current Working Directory:</H3>zOSError:)r*  r#  getcwdr3  r4  r%   str)pwdmsgs     r+   r   r     s    -	GGG	
/000 ikk 	dk#  1 1 1j$+c#hh//000000001 
GGGGGs   A 
B/BBc                      t                       t          d           t                       t          t          j                   t                       d S )Nz <H3>Command Line Arguments:</H3>)r*  rE   rO   r5   r2   r+   r   r     s=    	GGG	
,---	GGG	#(OOO	GGGGGr2   c                  &    	 t          d           d S )Na  
<H3>These environment variables could have been set:</H3>
<UL>
<LI>AUTH_TYPE
<LI>CONTENT_LENGTH
<LI>CONTENT_TYPE
<LI>DATE_GMT
<LI>DATE_LOCAL
<LI>DOCUMENT_NAME
<LI>DOCUMENT_ROOT
<LI>DOCUMENT_URI
<LI>GATEWAY_INTERFACE
<LI>LAST_MODIFIED
<LI>PATH
<LI>PATH_INFO
<LI>PATH_TRANSLATED
<LI>QUERY_STRING
<LI>REMOTE_ADDR
<LI>REMOTE_HOST
<LI>REMOTE_IDENT
<LI>REMOTE_USER
<LI>REQUEST_METHOD
<LI>SCRIPT_NAME
<LI>SERVER_NAME
<LI>SERVER_PORT
<LI>SERVER_PROTOCOL
<LI>SERVER_ROOT
<LI>SERVER_SOFTWARE
</UL>
In addition, HTTP headers sent by the server may be passed in the
environment as well.  Here are some common variable names:
<UL>
<LI>HTTP_ACCEPT
<LI>HTTP_CONNECTION
<LI>HTTP_HOST
<LI>HTTP_PRAGMA
<LI>HTTP_REFERER
<LI>HTTP_USER_AGENT
</UL>
)r*  r5   r2   r+   r   r     s&    C	 ' ' ' ' ' 'r2   c                 j    dd l }t          | t                    rd}nd}|                    ||           S )Nr   s   ^[ -~]{0,200}[!-~]$z^[ -~]{0,200}[!-~]$)rerH   r   match)rr   rI  _vb_patterns      r+   r   r     s=    III!U ,,+88K###r2   __main__)rZ   r[   r9   )NNNN)-__version__ior   r   r   collections.abcr   rE   r#  urllib.parserP   email.parserr   email.messager   r3  r   r!  r   __all___deprecatedr   r"   r#   r,   r(   r&   r8   r'   rK   rS   r   r   ru   r   r	   r
   r   r   r   r   r   r   r   r   r5   r2   r+   <module>rU     s  	*  0 / / / / / / / / / # # # # # # 



 				     # # # # # # ! ! ! ! ! !    " " "  Xf - - - -
 # # #J! ! !	 	 	    
2:cCI CI CI CIL* * * *6
 
 
  0D D D D D D D D2p8 p8 p8 p8 p8 p8 p8 p8l  % % % %N    * 	 	 	 	   
 
 
  ) ) )^$ $ $ zDFFFFF r2   