
    V=^                         d dl mZmZmZ d dlmZ d dlZd dlmZ ddl	m
Z
 ddlmZ  ej                  d	      Zd
 Z ee      Zy)    )absolute_importdivisionunicode_literals)OrderedDictN)string_types   )base   )moduleFactoryFactoryz{([^}]*)}(.*)c                     | }|j                  d      j                   G fddt        j                        }t	               S )Nasdc                   .    e Zd ZdZ fdZd Zd Zd Zy)#getETreeBuilder.<locals>.TreeWalkera  Given the particular ElementTree representation, this implementation,
        to avoid using recursion, returns "nodes" as tuples with the following
        content:

        1. The current element

        2. The index of the element relative to its parent

        3. A stack of ancestor elements

        4. A flag "text", "tail" or None to indicate if the current node is a
           text node; either the text or tail of the current element (1)
        c                    t        |t              r)|\  }}}}|dv rt        j                  t	        ||      fS |}t        |d      s|j                         }|j                  dv rt        j                  fS |j                  dk(  r<t        j                  |j                  |j                  d      |j                  d      fS |j                  k(  rt        j                  |j                  fS t        |j                  t              sJ t        |j                               t        j!                  |j                        }|r|j#                         \  }}nd }|j                  }t%               }t'        |j(                  j+                               D ]I  \  }	}
t        j!                  |	      }|r&|
||j-                  d      |j-                  d      f<   C|
|d |	f<   K t        j.                  |||t1        |      xs |j                  fS )	Ntexttailtag)DOCUMENT_ROOTDOCUMENT_FRAGMENTz
<!DOCTYPE>publicIdsystemIdr   r
   )
isinstancetupler	   TEXTgetattrhasattrgetrootr   DOCUMENTDOCTYPEr   getCOMMENTr   type
tag_regexpmatchgroupsr   listattribitemsgroupELEMENTlen)selfnodeelt_flagr%   	namespacer   attrsnamevalueElementTreeCommentTypes              </usr/lib/python3/dist-packages/html5lib/treewalkers/etree.pygetNodeDetailsz2getETreeBuilder.<locals>.TreeWalker.getNodeDetails    s   $&"&Q4++99gc4&888D4'||~xxAA''\)dii,dhhz.BD D 33||TYY.. "$((L9I4>I9"((2%*\\^NIs $I((C##'(9(9(;#< 4KD%&,,T2EBGu{{1~u{{1~>?.3tTl+4 is4y5DII7 7    c                     t        |t              r|\  }}}}n|d g d f\  }}}}|dv ry |j                  r|||dfS t        |      r|j	                  |       |d   d|d fS y )Nr   r   r   )r   r   r   r,   appendr-   r.   elementkeyparentsr1   s         r7   getFirstChildz1getETreeBuilder.<locals>.TreeWalker.getFirstChildH   s|    $&.2+gt.2D"d.B+gt''<<"C&88\NN7+"1:q'477r9   c                    t        |t              r|\  }}}}ny |dk(  r&t        |      r|j                  |       |d   d|d fS y |j                  r|dk7  r|||dfS |t        |d         dz
  k  r|d   |dz      |dz   |d fS y )Nr   r   r   r   )r   r   r,   r;   r   r<   s         r7   getNextSiblingz2getETreeBuilder.<locals>.TreeWalker.getNextSiblingY   s    $&.2+gtv~w<NN7+"1:q'477<<DFN"C&883wr{+a//"2;sQw/q'4GGr9   c                     t        |t              r|\  }}}}ny |dk(  r
|s|S |||d fS |j                         }|s|S t        |d         j	                  |      dk(  sJ |t        |d         j                  |      |d fS )Nr   rB   r   )r   r   popr'   countindex)r-   r.   r=   r>   r?   r1   parents          r7   getParentNodez1getETreeBuilder.<locals>.TreeWalker.getParentNodem   s    $&.2+gtv~"N"C$66 !M,226:a???!4#4#:#:6#BGTQQr9   N)__name__
__module____qualname____doc__r8   r@   rC   rI   )r6   s   r7   
TreeWalkerr      s    	&	7P	 "	 (	Rr9   rN   )Commentr   r	   NonRecursiveTreeWalkerlocals)ElementTreeImplementationElementTreerN   r6   s      @r7   getETreeBuilderrT      s?    +K(007;;lRT00 lR\ 8Or9   )
__future__r   r   r   collectionsr   resixr    r	   _utilsr   compiler$   rT   getETreeModule r9   r7   <module>r^      s=    B B # 	   )RZZ(
rj &o6r9   