-ν
(ΦiCc       s§      d  k  l  Z   d k l Z  d k Z d k Z  d k Z  y  d k l Z Wn   d k l Z n X d e  f d     YZ  d e	 d  Z
 d S(   (   s   PassSGMLParser(   s   basejoinN(   s   StringIOs   SafeHtmlc      sΙ   t  Z  h  d d <d d <d d <d d <d d <d d <d d <d d	 <d d
 <d d <d d <d d <d d <d d <d d <d d <d d <d d <d d <Z  h  d d <d d <d d <d d <d d <d d <d d <d d <d d <d d <d d <d d  <d d! <d d" <d d# <d d$ <d d% <d d& <d d' <d d( <d d) <d d* <d d+ <d d, <d d- <Z   h  d d. <d d/ <d d0 <d d1 <d d2 <d d3 <d d4 <d d5 <d d6 <d d7 <Z " h  d d8 <d d9 <d d: <d d; <d d< <d d= <d d> <d d? <Z % d e e d d@  Z . dA   Z 3 dB   Z	 8 dC   Z
 > dD   Z U dE   Z k dF   Z | dG   Z RS(H   Ni   s   Ps   LIs   DDs   DTs   EMs   BRs   CITEs   DFNs   Qs   STRONGs   IMGs   HRs   TRs   TDs   THs   CAPTIONs   THEADs   TFOOTs   TBODYs   TABLEs   OLs   ULs   DLs   CENTERs   DIVs   PREs   SUBs   SUPs   BIGs   SMALLs   CODEs   Bs   Is   As   TTs
   BLOCKQUOTEs   Us   H1s   H2s   H3s   H4s   H5s   H6s   FONTs   FORMs   HTMLs   BODYs   EMBEDs   AREAs   MAPs   FRAMEs   FRAMESETs   IFRAMEs   METAs   HEADs   JAVAs   APPLETs   OBJECTs
   JAVASCRIPTs   LAYERs   STYLEs   SCRIPTc    se   % & | |  _ ' t i |  | |  ( h  |  _ ) d |  _ * | |  _	 + | |  _ , | |  _ d  S(   Ni    (   s
   extra_safes   selfs   _extra_safes   PassSGMLParsers   __init__s   fps
   _matchDicts
   _strippings   bases   _bases   map_urlss	   _map_urlss
   new_windows   _new_window(   s   selfs   fps
   extra_safes   bases   map_urlss
   new_window(    (    s   SafeHtml.pys   __init__% s   c    s>   . / |  i d j o 0 |  i   n 1 |  i d |  _ d  S(   Ni    i   (   s   selfs
   _strippings   flush(   s   self(    (    s   SafeHtml.pys   safe_start_strip. s   c    sJ   3 4 |  i   5 |  i d |  _ 6 |  i d j  o 6 d |  _ n d  S(   Ni   i    (   s   selfs   flushs
   _stripping(   s   self(    (    s   SafeHtml.pys   safe_end_strip3 s    c    sh   8 9 t  i i d |  i | f  : |  i d j o. ; t  i i d |  < t i |  |  n d  S(   Ns   write[%d] %s
i    s	   write %s
(   s   syss   stderrs   writes   selfs
   _strippings   datas   PassSGMLParser(   s   selfs   data(    (    s   SafeHtml.pys   write8 s    c    s  > ? g  } @ t i |  } A |  i o
 | d j o B | i d d f  n C x₯| DC ]\ } } D t i |  } E | d  d j o
 E q\ n F t i |  d  d j o
 F q\ n G |  i
 o* | d d	 d
 d d g j o | d  d j o; H y I |  i
 | d } Wn J t j
 o
 K n Xn| M |  i o | d d	 d
 d d g j o N t |  i |  } n O | d d	 d
 d d g j o P d t i |  } n Q |  i o | d j o
 | d j o
 Q q\ n R | i | | f  q\ WS | Sd  S(   Ns   as   targets   _blanki   s   oni   s   javascript:s   actions   hrefs   srcs   lowsrcs
   backgroundi   s   cid:s#   http://www.google.com/url?sa=D&q=%s(   s	   new_attrss   strings   lowers   tags   selfs   _new_windows   appends   attrss   names   values	   _map_urlss   KeyErrors   _bases   basejoins   neo_cgis	   urlEscape(   s   selfs   tags   attrss   values   names	   new_attrs(    (    s   SafeHtml.pys   cleanup_attrs> s0   	
  
 
:)' 
c    sΑ  U V t  i |  } W t i i |  o1 X |  i   Y t i	 i
 d | |  i f  nbZ t i i |  o [ t i	 i
 d |  \ n.] t i i |  o ^ t i	 i
 d |  _ |  i i |  o ` |  i | d |  i | <n b d |  i | <c |  i | |  i | |   n d t i i |  o: e t i	 i
 d |  f |  i | |  i | |   nI g |  i o: h t i	 i
 d |  i |  i | |  i | |   n d  S(   Ns   Stripping tag %s: %d
s   Skipping tag %s
s   Matching tag %s
i   s   Safe tag %s
s   Other tag %s
(   s   strings   uppers   tags   SafeHtmls
   _stripTagss   has_keys   selfs   safe_start_strips   syss   stderrs   writes
   _strippings	   _skipTagss
   _matchTagss
   _matchDicts   write_starttags   cleanup_attrss   attrss	   _safeTagss   _extra_safe(   s   selfs   tags   attrs(    (    s   SafeHtml.pys   unknown_starttagU s&   $##c    s?  k l t  i |  } m t i i |  o1 n |  i   o t i	 i
 d | |  i f  nΰ p |  i d j oΜ q t i i |  o r n¬ s t i i |  oI t |  i i |  o u |  i | d |  i | <n v |  i |  nM w t i i |  o x |  i |  n# y |  i o z |  i |  n n d  S(   Ns   End Stripping tag %s: %d
i    i   (   s   strings   uppers   tags   SafeHtmls
   _stripTagss   has_keys   selfs   safe_end_strips   syss   stderrs   writes
   _strippings	   _skipTagss
   _matchTagss
   _matchDicts   write_endtags	   _safeTagss   _extra_safe(   s   selfs   tag(    (    s   SafeHtml.pys   unknown_endtagk s   $c    s   | } d |  _ ~ xi |  i i   D~ ]U }  |  i | d j o8  x. t |  i |  D ] }  |  i |  qY Wn q" W t i	 |   d  S(   Ni    (
   s   selfs
   _strippings
   _matchDicts   keyss   tags   ranges   xs   write_endtags   PassSGMLParsers   close(   s   selfs   xs   tag(    (    s   SafeHtml.pys   close| s    	 	(   s   __name__s
   __module__s	   _safeTagss
   _matchTagss	   _skipTagss
   _stripTagss   Nones   __init__s   safe_start_strips   safe_end_strips   writes   cleanup_attrss   unknown_starttags   unknown_endtags   close(    (    (    s   SafeHtml.pys   SafeHtml s   	΄κcQ	i   c    s^     t    }  t | | d | }  | i |    | i    | i	   }   |  Sd  S(   Ns   map_urls(
   s   StringIOs   fps   SafeHtmls   really_safes   map_urlss   parsers   feeds   ss   closes   getvalue(   s   ss   really_safes   map_urlss   fps   parser(    (    s   SafeHtml.pys   SafeHtmlString s   (   s   PassSGMLParsers   urllibs   basejoins   strings   syss   neo_cgis	   cStringIOs   StringIOs   SafeHtmls   Nones   SafeHtmlString(   s   syss   PassSGMLParsers   neo_cgis   strings   StringIOs   SafeHtmls   basejoins   SafeHtmlString(    (    s   SafeHtml.pys   ? s   m