£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>

fV  c               @   s   d  Z  d d g Z d d l Z d d l m Z d d l m Z d d l m Z e j d  Z	 e j d	  Z
 e j d
  Z e j d	  Z e j d  Z d Z d Z e   Z Gd d   d e  Z Gd d   d  Z Gd d   d e  Z d S(   u  FeedParser - An email feed parser.

The feed parser implements an interface for incrementally parsing an email
message, line by line.  This has advantages for certain applications, such as
those reading email messages off a socket.

FeedParser.feed() is the primary interface for pushing new data into the
parser.  It returns when there's nothing more it can do with the available
data.  When you have no more data to push into the parser, call .close().
This completes the parsing and returns the root message object.

The other advantage of this parser is that it will never raise a parsing
exception.  Instead, when it finds something unexpected, it adds a 'defect' to
the current message.  Defects are just instances that live on the message
object's .defects attribute.
u
   FeedParseru   BytesFeedParseri    N(   u   errors(   u   message(   u   compat32u   
||
u   (
||
)u
   (
||
)\Zu(   ^(From |[\041-\071\073-\176]{1,}:|[\t ])u    u   
c             B   s   |  Ee  Z d  Z d Z d d   Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z	 d d   Z
 d d   Z d d   Z d d   Z d S(   u   BufferedSubFileuk  A file-ish object that can have new data loaded into it.

    You can also push and pop line-matching predicates onto a stack.  When the
    current predicate matches the current line, a false EOF response
    (i.e. empty string) is returned instead.  This lets the parser adhere to a
    simple abstraction -- it parses until EOF closes the current message.
    c             C   s(   d |  _  g  |  _ g  |  _ d |  _ d  S(   Nu    F(   u   _partialu   _linesu	   _eofstacku   Falseu   _closed(   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   __init__4   s    			u   BufferedSubFile.__init__c             C   s   |  j  j |  d  S(   N(   u	   _eofstacku   append(   u   selfu   pred(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   push_eof_matcher>   s    u    BufferedSubFile.push_eof_matcherc             C   s   |  j  j   S(   N(   u	   _eofstacku   pop(   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   pop_eof_matcherA   s    u   BufferedSubFile.pop_eof_matcherc             C   s)   |  j  j |  j  d |  _ d |  _ d  S(   Nu    T(   u   _linesu   appendu   _partialu   Trueu   _closed(   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   closeD   s    	u   BufferedSubFile.closec             C   sn   |  j  s |  j r d St S|  j  j   } x> |  j d  d  d  D]& } | |  r@ |  j  j |  d Sq@ W| S(   Nu    i   i(   u   _linesu   _closedu   NeedMoreDatau   popu	   _eofstacku   append(   u   selfu   lineu   ateof(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   readlineJ   s    		u   BufferedSubFile.readlinec             C   s   |  j  j |  d  S(   N(   u   _linesu   append(   u   selfu   line(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu
   unreadline\   s    u   BufferedSubFile.unreadlinec             C   s   |  j  | d } |  _  t j |  } | j   |  _  |  j  rw | rw | d j d  rw | j d  | j   |  _  n  g  } xC t t |  d  D]+ } | j | | d | | d d  q W|  j |  d S(   u$   Push some new data into this object.u    i   u   i   Nii(	   u   _partialu   NLCRE_cracku   splitu   popu   endswithu   rangeu   lenu   appendu	   pushlines(   u   selfu   datau   partsu   linesu   i(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   pusha   s    #)u   BufferedSubFile.pushc             C   s$   | d  d  d  |  j  d  d  <d  S(   Ni   i    i(   u   _lines(   u   selfu   lines(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu	   pushlinesx   s    u   BufferedSubFile.pushlinesc             C   s   |  S(   N(    (   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   __iter__|   s    u   BufferedSubFile.__iter__c             C   s%   |  j    } | d k r! t  n  | S(   Nu    (   u   readlineu   StopIteration(   u   selfu   line(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   __next__   s    	u   BufferedSubFile.__next__N(   u   __name__u
   __module__u   __qualname__u   __doc__u   __init__u   push_eof_matcheru   pop_eof_matcheru   closeu   readlineu
   unreadlineu   pushu	   pushlinesu   __iter__u   __next__(   u
   __locals__(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   BufferedSubFile,   s   
u   BufferedSubFilec             B   s   |  Ee  Z d  Z d Z d e e j d d Z d d   Z d d   Z	 d	 d
   Z
 d d   Z d d   Z d d   Z d d   Z d d   Z d S(   u
   FeedParseru   A feed-style parser of email.u   policyc               s   |   _  |   _ y) | d   j    f d d     _ Wn! t k
 r^ d d     _ Yn Xt     _ g    _   j   j   _	 d   _ d   _ d   _ d S(   u  _factory is called with no arguments to create a new message obj

        The policy keyword specifies a policy object that controls a number of
        aspects of the parser's operation.  The default policy maintains
        backward compatibility.

        u   policyc                  s   i   j  d 6S(   Nu   policy(   u   policy(    (   u   self(    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   <lambda>   s    u%   FeedParser.__init__.<locals>.<lambda>c               S   s   i  S(   N(    (    (    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   <lambda>   s    NF(   u   _factoryu   policyu   _factory_kwdsu	   TypeErroru   BufferedSubFileu   _inputu	   _msgstacku	   _parsegenu   __next__u   _parseu   Noneu   _curu   _lastu   Falseu   _headersonly(   u   selfu   _factoryu   policy(    (   u   selfu5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   __init__   s    					u   FeedParser.__init__c             C   s   d |  _ d  S(   NT(   u   Trueu   _headersonly(   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   _set_headersonly   s    u   FeedParser._set_headersonlyc             C   s   |  j  j |  |  j   d S(   u   Push more data into the parser.N(   u   _inputu   pushu   _call_parse(   u   selfu   data(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   feed   s    u   FeedParser.feedc             C   s'   y |  j    Wn t k
 r" Yn Xd  S(   N(   u   _parseu   StopIteration(   u   self(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   _call_parse   s    u   FeedParser._call_parsec             C   sh   |  j  j   |  j   |  j   } | j   d k rd | j   rd t j   } |  j j	 | |  n  | S(   u<   Parse all remaining data and return the root message object.u	   multipart(
   u   _inputu   closeu   _call_parseu   _pop_messageu   get_content_maintypeu   is_multipartu   errorsu!   MultipartInvariantViolationDefectu   policyu   handle_defect(   u   selfu   rootu   defect(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   close   s    
u   FeedParser.closec             C   s   |  j  |  j     } |  j rC |  j j   d k rC | j d  n  |  j rc |  j d j |  n  |  j j |  | |  _ | |  _ d  S(   Nu   multipart/digestu   message/rfc822i   i(	   u   _factoryu   _factory_kwdsu   _curu   get_content_typeu   set_default_typeu	   _msgstacku   attachu   appendu   _last(   u   selfu   msg(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   _new_message   s    		u   FeedParser._new_messagec             C   s8   |  j  j   } |  j  r+ |  j  d |  _ n	 d  |  _ | S(   Ni   i(   u	   _msgstacku   popu   _curu   None(   u   selfu   retval(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   _pop_message   s
    		u   FeedParser._pop_messagec             c   s"  |  j    g  } x |  j D] } | t k r7 t Vq n  t j |  s t j |  s t j   } |  j j	 |  j
 |  |  j j |  n  Pn  | j |  q W|  j |  |  j r!g  } xF |  j j   } | t k r t Vq n  | d k r Pn  | j |  q |  j
 j t j |   d  S|  j
 j   d k rx |  j j t j  x, |  j   D] } | t k rvt VqYn  PqYW|  j   } |  j j   x* |  j j   } | t k rt Vqn  Pqx* |  j j   } | t k rt Vqn  Pq| d k rPn  |  j j |  q9d  S|  j
 j   d k rgx, |  j   D] } | t k rTt Vq7n  Pq7W|  j   d  S|  j
 j   d k r|  j
 j   } | d  k rt j   } |  j j	 |  j
 |  g  } x5 |  j D]* } | t k rt Vqn  | j |  qW|  j
 j t j |   d  S|  j
 j d d  j   d k rZt j   } |  j j	 |  j
 |  n  d	 | } t j  d
 t j! |  d  }	 d }
 g  } d } d } x|  j j   } | t k rt Vqn  | d k rPn  |	 j |  } | rI| j$ d  rd } | j$ d  } Pn  |
 r| r|| d } t% j& |  } | rd| d  t' | j$ d    | d <n  t j |  |  j
 _( n  d }
 |  j j |  qn  xR |  j j   } | t k rt Vqn  |	 j |  } | s|  j j |  Pqq|  j j |	 j  x, |  j   D] } | t k r*t Vqn  PqW|  j) j   d k r|  j) j* } | d k rkd  |  j) _* q#| d  k	 r#t% j& |  } | rt' | j$ d   } | d  |  |  j) _* qq#nb |  j) j+ } t, | t-  r#t% j& |  } | r#| d  t' | j$ d    } | |  j) _+ q#n  |  j j   |  j   |  j
 |  _) q| j |  q|
 rt j.   } |  j j	 |  j
 |  |  j
 j t j |   g  } x( |  j D] } | t k rt VqqqWt j |  |  j
 _* d  S| st j/   } |  j j	 |  j
 |  d  S| r"d g } n g  } x5 |  j D]* } | t k rOt Vq2n  | j |  q2W| r| d } t0 j |  } | r| t' | j$ d   d   | d <qn  t j |  |  j
 _* d  Sg  } x5 |  j D]* } | t k rt Vqn  | j |  qW|  j
 j t j |   d  S(   Nu    u   message/delivery-statusu   messageu	   multipartu   content-transfer-encodingu   8bitu   7bitu   binaryu   --u   (?P<sep>u4   )(?P<end>--)?(?P<ws>[ \t]*)(?P<linesep>\r\n|\r|\n)?$u   endu   linesepi   i    (   u   7bitu   8bitu   binaryTFii(1   u   _new_messageu   _inputu   NeedMoreDatau   headerREu   matchu   NLCREu   errorsu    MissingHeaderBodySeparatorDefectu   policyu   handle_defectu   _curu
   unreadlineu   appendu   _parse_headersu   _headersonlyu   readlineu   set_payloadu   EMPTYSTRINGu   joinu   get_content_typeu   push_eof_matcheru	   _parsegenu   _pop_messageu   pop_eof_matcheru   get_content_maintypeu   get_boundaryu   Noneu   NoBoundaryInMultipartDefectu   getu   loweru-   InvalidMultipartContentTransferEncodingDefectu   reu   compileu   escapeu   Trueu   Falseu   groupu	   NLCRE_eolu   searchu   lenu   preambleu   _lastu   epilogueu   _payloadu
   isinstanceu   stru   StartBoundaryNotFoundDefectu   CloseBoundaryNotFoundDefectu	   NLCRE_bol(   u   selfu   headersu   lineu   defectu   linesu   retvalu   msgu   boundaryu	   separatoru
   boundaryreu   capturing_preambleu   preambleu   linesepu   close_boundary_seenu   mou   lastlineu   eolmou   epilogueu   endu   payloadu	   firstlineu   bolmo(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu	   _parsegen   sf   
	
	


'  


)u   FeedParser._parsegenc       	      C   s  d } g  } xt  |  D]u\ } } | d d k ry | sf t j |  } |  j j |  j |  q n  | j |  q n  | r |  j j |  j j |    d g  } } n  | j	 d  rf| d k rt
 j |  } | r | d  t | j d    } n  |  j j |  q qf| t |  d k r>|  j j |  d  St j |  } |  j j j |  q n  | j d  } | d  |  } | g } q W| r|  j j |  j j |    n  d  S(   Nu    i    u    	u   From i   u   :(   u	   enumerateu   errorsu#   FirstHeaderLineIsContinuationDefectu   policyu   handle_defectu   _curu   appendu   set_rawu   header_source_parseu
   startswithu	   NLCRE_eolu   searchu   lenu   groupu   set_unixfromu   _inputu
   unreadlineu   MisplacedEnvelopeHeaderDefectu   defectsu   find(	   u   selfu   linesu
   lastheaderu	   lastvalueu   linenou   lineu   defectu   mou   i(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   _parse_headers  s>    #u   FeedParser._parse_headersN(   u   __name__u
   __module__u   __qualname__u   __doc__u   compat32u   messageu   Messageu   __init__u   _set_headersonlyu   feedu   _call_parseu   closeu   _new_messageu   _pop_messageu	   _parsegenu   _parse_headers(   u
   __locals__(    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu
   FeedParser   s   
c                s,   |  Ee  Z d  Z d Z   f d d   Z   S(   u   BytesFeedParseru(   Like FeedParser, but feed accepts bytes.c                s    t    j | j d d   d  S(   Nu   asciiu   surrogateescape(   u   superu   feedu   decode(   u   selfu   data(   u	   __class__(    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   feed  s    u   BytesFeedParser.feed(   u   __name__u
   __module__u   __qualname__u   __doc__u   feed(   u
   __locals__(    (   u	   __class__u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   BytesFeedParser   s   (   u   __doc__u   __all__u   reu   emailu   errorsu   messageu   email._policybaseu   compat32u   compileu   NLCREu	   NLCRE_bolu	   NLCRE_eolu   NLCRE_cracku   headerREu   EMPTYSTRINGu   NLu   objectu   NeedMoreDatau   BufferedSubFileu
   FeedParseru   BytesFeedParser(    (    (    u5   /opt/alt/python33/lib64/python3.3/email/feedparser.pyu   <module>   s"   	[ z