ó
č¾bc           @   sĻ  d  Z  d d l Z d d l Z d d l Z d d l Te j e k sO t d   e j d k rg d Z n d Z e	 e
 e g  Z e	 e e e g  Z e	 e e g  Z e	 e e g  Z d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA f Z d#   e D Z d$   Z d d d%  Z d&   Z d'   Z e j d( Z d) d* d+ Z e e  d,  Z! d-   Z" d.   Z# d/   Z$ y e% Wn  e& k
 re' d0  f Z( n Xe' d0  e' e% d0   f Z( d1   Z) d2   Z* d3 d4  Z+ d S(B   s   Internal support module for srei’’’’N(   t   *s   SRE module mismatchi   i’’  l   ’’ ii   i1  is   i  iµ   i¼  iE  i¹  i¾  i²  iŠ  iµ  iõ  iø  iŃ  iŗ  iš  iĄ  iÖ  iĮ  iń  iĀ  iĆ  iĘ  iÕ  ia  i  c            s<   i  |  ]2 } | D]%   t    f d    | D     q q S(   c         3   s!   |  ] }   | k r | Vq d  S(   N(    (   t   .0t   j(   t   i(    s!   /usr/lib/python2.7/sre_compile.pys	   <genexpr>=   s    (   t   tuple(   R   t   t(    (   R   s!   /usr/lib/python2.7/sre_compile.pys
   <dictcomp>=   s   	c         C   s×  |  j  } t } t } t } t } t } | t @rO | t @rO | t @rO t	 }	 n d  }	 x{| D]s\ }
 } |
 | k rv| t @r[t j | |  } |	 r<| |	 k r<| t t  | |   } | d  |
 t k rć | t t  n  x1 | f |	 | D] } | t t  | |  qõ W| t t  | |   | |  | <qs| t t |
  | |  qĻ| t |
  | |  q\ |
 t k r| t @r­| t t |
  | d  } n | t |
  d  } | |   } | d  t | | |  | |	  | |   | |  | <q\ |
 t k r<| t @r+| t t  qĻ| t t  q\ |
 | k r| t @rŌt d  | t t  | |   } | d  | | d  | | d  t |  | d |  | t t  | |   | |  | <qĻt |  r|
 t k	 r|
 t k r	| t t   n | t t!  | |   } | d  | | d  | | d  t |  | d |  | t t  | |   | |  | <qĻ| t t  | |   } | d  | | d  | | d  t |  | d |  | |   | |  | <|
 t k r| t t"  qĻ| t t#  q\ |
 t$ k r”| d rU| t t%  | | d d d  n  t |  | d |  | d rĻ| t t%  | | d d d d  qĻq\ |
 | k r¾| t |
  q\ |
 | k r|| t |
  | |   } | d  | d d k r| d  n8 | d j&   \ } } | | k r9t d  n  | |  t |  | d |  | t t  | |   | |  | <q\ |
 t' k rį| t |
  | |   } | d  t |  | |  | t t  | |   | |  | <q\ |
 t( k ri| t |
  | t) @rt* j+ | |  } n  | t @r9t, j+ | |  } n | t @rXt- j+ | |  } n  | t. |  q\ |
 t/ k r;| t |
  g  } | j  } xt | d D]h } | |   } | d  t |  | |  | t t0  | | |    | d  | |   | |  | <qW| d  x¹| D] } | |   | |  | <qWq\ |
 t1 k r| t |
  | t @rlt2 | } n | t @rt3 | } n  | t4 |  q\ |
 t5 k rŽ| t @ræ| t t |
  n | t |
  | | d  q\ |
 t6 k rĄ| t |
  | | d d  | |   } | d  t |  | d |  | d r„| t t0  | |   } | d  | |   | d |  | <t |  | d |  | |   | |  | <qĻ| |   | d |  | <q\ t7 d |
 f  q\ Wd  S(   Ni    c         S   s   t  j |  |  S(   N(   t   _sret   getlower(   t   literalt   flags(    (    s!   /usr/lib/python2.7/sre_compile.pyt   fixupe   s    s'   internal: unsupported template operatori   i   s(   look-behind requires fixed-width patterns   unsupported operand type(8   t   appendt   lent   _LITERAL_CODESt   _REPEATING_CODESt   _SUCCESS_CODESt   _ASSERT_CODESt   SRE_FLAG_IGNORECASEt   SRE_FLAG_LOCALEt   SRE_FLAG_UNICODEt   _ignorecase_fixest   NoneR   R   t   OPCODESt	   IN_IGNOREt   NOT_LITERALt   NEGATEt   LITERALt   FAILUREt	   OP_IGNOREt   INt   _compile_charsett   ANYt   SRE_FLAG_DOTALLt   ANY_ALLt   SRE_FLAG_TEMPLATEt   errort   REPEATt   _compilet   SUCCESSt   _simplet
   MAX_REPEATt
   REPEAT_ONEt   MIN_REPEAT_ONEt	   MAX_UNTILt	   MIN_UNTILt
   SUBPATTERNt   MARKt   getwidtht   CALLt   ATt   SRE_FLAG_MULTILINEt   AT_MULTILINEt   gett	   AT_LOCALEt
   AT_UNICODEt   ATCODESt   BRANCHt   JUMPt   CATEGORYt	   CH_LOCALEt
   CH_UNICODEt   CHCODESt   GROUPREFt   GROUPREF_EXISTSt
   ValueError(   t   codet   patternR	   t   emitt   _lent   LITERAL_CODESt   REPEATING_CODESt   SUCCESS_CODESt   ASSERT_CODESt   fixest   opt   avt   lot   skipt   kR
   t   hit   tailt
   tailappendt   skipyest   skipno(    (    s!   /usr/lib/python2.7/sre_compile.pyR%   @   s:   	

	
 

 


	 
 
 


  

 



	 
 




 

 
c         C   sB  | j  } x$t |  | | | t @ D]	\ } } | t |  | t k rL q# | t k re | |  q# | t k r | | d  | | d  q# | t k r¬ | j |  q# | t	 k rČ | j |  q# | t
 k r#| t @ró | t t |  q,| t @r| t t |  q,| t |  q# t d  q# W| t t  d  S(   Ni    i   s"   internal: unsupported set operator(   R   t   _optimize_charsetR   R   R   R   t   RANGEt   CHARSETt   extendt
   BIGCHARSETR:   R   R=   R;   R<   R#   R   (   t   charsetR	   RA   R
   RI   RC   RJ   RK   (    (    s!   /usr/lib/python2.7/sre_compile.pyR   ä   s.    	

c         C   sņ  g  } g  } t  d  } xp|  D]h\ } } xYt ryZ| t k r£ | r | |  }	 d | |	 <| r  |	 | k r  x | |	 D] }
 d | |
 <q| Wq  qd | | <nź | t k rXt | d | d d  } | rā t | |  } n  | r:| r:xd | D]> }	 d | |	 <|	 | k rõ x | |	 D] }
 d | |
 <qWqõ qõ WqxP | D] }	 d | |	 <qAWn5 | t k rz| j | | f  n | j | | f  Wnń t k
 rt	 |  d k rÄ| d d 7} q. n  | rk| rk| t k rk| \ } } | g } t
 t d |  t d |  | |  xe | D]G \ } } | | k rK| j t | f  q| j t | | f f  qWq| j | | f  n XPq. Wq Wg  } d } x t r/| j d |  } | d k  rĀPn  t	 |  d	 k rŽd  } Pn  | j d |  } | d k  r| j | t	 |  f  Pn  | j | | f  qW| d  k	 rĘxW | D]O \ } } | | d k ru| j t | f  qC| j t | | d f f  qCW| | 7} | s¾t	 |  t	 |   k  rĀ| S|  St	 |  d k rt |  } | j t | f  | | 7} | St |  } i  } t  d  } d } t    } xv t d d d  D]b }	 | |	 |	 d !} | | k r}| | | |	 d <qE| | |	 d <| | <| d 7} | | 7} qEWt |  } | g t |  | d d +| j t | f  | | 7} | S(
   Ni   i   i    s    i ’  i   i’ s   i   (   t	   bytearrayt   TrueR   RU   t   ranget   mapR   R   t
   IndexErrorR   t   _fixup_ranget   maxt   mint   findR   t
   _mk_bitmapRV   t   bytest   _bytes_to_codesRX   (   RY   R
   RI   t	   isunicodet   outRP   t   charmapRJ   RK   R   RN   t   rRL   RO   t   rangest   runst   qt   pt   datat   compst   mappingt   blockt   chunk(    (    s!   /usr/lib/python2.7/sre_compile.pyRT      s²    	

	
 		!

	

c         C   sŽ   x× t  | t |  | d   D]¹ } x° t |  D] \ } \ }  } | |  k  r t |  d k rq | | f | | <n | j | | | f  Pq0 | | k r¾ | | d k ræ |  | f | | <Pqæ q0 Pq0 W| j | | f  q Wd  S(   Ni   (   R]   R\   t	   enumeratet   lt   insertR   (   RL   RO   Rj   R
   R   RN   (    (    s!   /usr/lib/python2.7/sre_compile.pyR_     s    #i   t   0t   1i’   c         C   s`   t  |   j t  d  d  d  } g  t t |  d |  D]  } | | | | | !d  ^ q< S(   Ni’’’’i    i   (   Rd   t	   translatet   _BITS_TRANSR\   R   (   t   bitst	   _CODEBITSt   _intt   sR   (    (    s!   /usr/lib/python2.7/sre_compile.pyRc     s    "c         C   s   d d  l  } t j d k r$ d } n d } | j  | t |    } | j t j k sZ t  t |  | j t |   k s t  | j   S(   Ni’’’’i   t   Ht   I(   t   arrayR   t   CODESIZERd   t   itemsizet   AssertionErrorR   t   tolist(   t   bR   RA   t   a(    (    s!   /usr/lib/python2.7/sre_compile.pyRe      s    	%c         C   sH   |  d j    \ } } | | k o- d k n oG |  d d d t k S(   Ni   i   i    (   R/   R-   (   RK   RL   RO   (    (    s!   /usr/lib/python2.7/sre_compile.pyR'   ¬  s    c         C   sj  | j    \ } } | r# | r# d  Sg  } | j } d } g  } | j }	 | t @sgx£ | j D] \ }
 } |
 t k r t |  | k r | d } n  | |  q[ |
 t k rņ t | d  d k rņ | d d \ }
 } |
 t k rī | |  qó Pq[ Pq[ W| rg| j rg| j d \ }
 } |
 t k rŁ| d rŁ| d d \ }
 } |
 t k rc|	 |
 | f  qa|
 t k rag  } | j } xU | d D]@ } | sPn  | d \ }
 } |
 t k rČ| |
 | f  qPqW| } qaqd|
 t k rLg  } | j } xj | d D]@ } | sPn  | d \ }
 } |
 t k r>| |
 | f  q’Pq’W| } qd|
 t k rd| } qdqgn  |  j } | t	 t
  t |   } | d  d } | rįt } t |  | k oĢt | j  k n rō| t } qōn | rō| t } n  | |  | t k  r| |  n | t  | t  } | t k  rD| |  n
 | d  | r9| t |   | |  |  j |  d g d g t |  } x t t |   D]y } | | d | | d <xZ | | d d k r | | | | | d d k r | | | d d d | | d <qĒWqØW|  j | d  n | rRt | | |   n  t |   | |  | <d  S(   Ni    i   i’’’’(   R/   R   R   Rn   R   R   R-   R8   R   R   t   INFOt   SRE_INFO_PREFIXt   SRE_INFO_LITERALt   SRE_INFO_CHARSETt   MAXCODERW   t   xrangeR   (   RA   RB   R	   RL   RO   t   prefixt   prefixappendt   prefix_skipRY   t   charsetappendRJ   RK   t   ct   cappendRm   RC   RM   t   maskt   tableR   (    (    s!   /usr/lib/python2.7/sre_compile.pyt   _compile_info±  s¤    		
"				 
+




7*t    c         C   s(   x! t  D] } t |  |  r d Sq Wd S(   Ni   i    (   t   STRING_TYPESt
   isinstance(   t   objt   tp(    (    s!   /usr/lib/python2.7/sre_compile.pyt   isstring"  s    c         C   sN   |  j  j | B} g  } t | |  |  t | |  j |  | j t t  | S(   N(   RB   R	   R   R%   Rn   R   R   R&   (   Rm   R	   RA   (    (    s!   /usr/lib/python2.7/sre_compile.pyt   _code(  s    i    c         C   sÓ   t  |   r' |  } t j |  |  }  n d  } t |  |  } |  j j d k r] t d   n  |  j j } d  g |  j j } x$ | j	   D] \ } } | | | <q Wt
 j | | |  j j B| |  j j d | |  S(   Nid   s6   sorry, but this version only supports 100 named groupsi   (   R   t	   sre_parset   parseR   R   RB   t   groupsR   t	   groupdictt   itemsR   t   compileR	   (   Rm   R	   RB   RA   t
   groupindext
   indexgroupRN   R   (    (    s!   /usr/lib/python2.7/sre_compile.pyR¢   7  s     (   ii   i1  (   is   i  (   iµ   i¼  (   iE  i¹  i¾  (   i²  iŠ  (   iµ  iõ  (   iø  iŃ  (   iŗ  iš  (   iĄ  iÖ  (   iĮ  iń  (   iĀ  iĆ  (   iĘ  iÕ  (   ia  i  (,   t   __doc__R   t   sysR   t   sre_constantst   MAGICR   R   R   t   setR   R   R   R$   t
   MIN_REPEATR(   R   R&   R   R   t   ASSERTt
   ASSERT_NOTR   t   _equivalencesR   R%   R   R   RT   R_   R{   Ry   t   intRc   Re   R'   R   t   unicodet	   NameErrort   typeR   R   R   R¢   (    (    (    s!   /usr/lib/python2.7/sre_compile.pyt   <module>   sX   
		
	¤					j		