o
    i                      @   s4  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZddlmZm	Z	m
Z
mZmZmZmZm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dFddZdGdedefddZi ddddddd dd!eejd"eejd#eejd$ejd%ej d&eej!d'eej"d(eej#d)eej$d*eej%d+eej&d,eej'd-eej(eej)eej*eej+eeed.Z,h d/Z-d0Z.e/e0e0d1d2d3dd4d5diZ1d6Z2d7Z3G d8d9 d9Z4G d:d; d;e	Z5G d<d= d=e	Z6G d>d? d?e	Z7G d@dA dAe j8Z9G dBdC dCZ:G dDdE dEZ;dS )H    N   )
NO_DEFAULTExtractorErrorfunction_with_repr
js_to_jsonremove_quotestruncate_stringunified_timestampwrite_stringc                 C   s   | dM } | d@ r| d S | S )z.Converts an integer to a signed 32-bit integerl    l        l         )nr   r   C/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/jsinterp.pyint_to_int32   s   r   c                    s   dd  fdd}|S )Nc                 S   sb   | d t fv rdS tt t| r	 W d    dS W d    n1 s&w   Y  tt| S Nr   )JS_Undefined
contextlibsuppress	TypeErrormathisnanintfloat)xr   r   r   zeroise   s   
z_js_bit_op.<locals>.zeroisec                    s   t  t | t |S N)r   abopr   r   r   wrapped&   s   z_js_bit_op.<locals>.wrappedr   r   r    r   r   r   
_js_bit_op   s   r"   c                        fdd}|S )Nc                    s&   t | |fv r
tdS  | pd|pdS Nnanr   r   r   r   r   r   r   r    .   s   z_js_arith_op.<locals>.wrappedr   r!   r   r'   r   _js_arith_op,      r(   c                 C   s4   t | |fv s
| s|stdS |r| pd| S tdS )Nr%   r   infr&   r   r   r   r   _js_div6   s   r+   c                 C   s$   t | |fv s|stdS | pd| S r$   r&   r   r   r   r   _js_mod<   s   r,   c                 C   s(   |sdS t | |fv rtdS | pd| S )Nr   r%   r   r&   r   r   r   r   _js_expB   s
   r-   c                    r#   )Nc                    s$   | |hd t hkr | | S  | |S r   )r   r   r'   r   r   r    L   s   

z_js_eq_op.<locals>.wrappedr   r!   r   r'   r   	_js_eq_opJ   r)   r.   c                    r#   )Nc                    sP   t | |fv rdS t| tst|tr t| pdt|pdS  | p#d|p&dS )NFr   )r   
isinstancestrr   r'   r   r   r    V   s
   z_js_comp_op.<locals>.wrappedr   r!   r   r'   r   _js_comp_opT   s   r1   TFc                 C   sb   | ddddt fv r|S tt t| r|W  d   S W d   |S 1 s*w   Y  |S )z6Simulate JS's ternary operator (cndn?if_true:if_false)FNr    )r   r   r   r   r   r   )cndnif_trueif_falser   r   r   _js_ternary`   s   

r6   
   valradixc           
         s  |t d fv rd}|tddv sJ dt| rdS | dkr dS t| r-| dk r+dS d	S |dkr2	 d
 t }| dk }t| } t| \}}t	t
dtjt| d }||kr_|d ||kr||9 }t|| \}}|t| |dkp|dkot|d@ }|r|| dkrttdt|D ]}	||	 d |k r||	  d7  <  n	|  q|d7 }n||ksctt||\}}|| |dkrt||\}}|| |dks|r|d t fdd|D dS )Nr7      %   z:radix must be an integer at least 2 and no greater than 36NaNr   0z	-InfinityInfinitys&   0123456789abcdefghijklmnopqrstuvwxyz.-g        g      ?r   c                 3   s    | ]} | V  qd S r   r   ).0digitALPHABETr   r   	<genexpr>       z&js_number_to_string.<locals>.<genexpr>ascii)r   ranger   r   isinfcollectionsdequeabsmodfmax	nextafterr*   ulpappendr   reversedlenpopdivmod
appendleftbytesdecode)
r8   r9   resultsignfractionintegerdeltarB   needs_roundingindexr   rC   r   js_number_to_stringk   sT   






r`   ???||&&|^&===!====!=<=>=<>z>>z<<)+-*%/z**>   rn   ro   rk   rl   rj   rm   ri   rh   z[a-zA-Z_$][\w$]*z()z{}[]strictrw   z'"/z&[^[\]]+(?:\[[^[\]]+(?:\[[^\]]+\])?\])?c                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__r   r   r   r   r      s    r   c                   @      e Zd Zdd ZdS )JS_Breakc                 C      t | d d S )NzInvalid breakr   __init__selfr   r   r   r         zJS_Break.__init__Nrx   ry   rz   r   r   r   r   r   r|          r|   c                   @   r{   )JS_Continuec                 C   r}   )NzInvalid continuer~   r   r   r   r   r      r   zJS_Continue.__init__Nr   r   r   r   r   r      r   r   c                   @   r{   )JS_Throwc                 C   s   || _ t| d|  d S )NzUncaught exception )errorr   r   )r   er   r   r   r      s   zJS_Throw.__init__Nr   r   r   r   r   r      r   r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
LocalNameSpacec                 C   s4   | j D ]}||v r|||<  d S q|| j d |< d S r   maps)r   keyvaluescoper   r   r   __setitem__   s   
zLocalNameSpace.__setitem__c                 C   s   t d)NzDeleting is not supported)NotImplementedErrorr   r   r   r   r   __delitem__   s   zLocalNameSpace.__delitem__c                 C   s   || j d |< d S r   r   )r   r   r   r   r   r   	set_local   s   zLocalNameSpace.set_localc                 C   s    || j d v r| j d | S tS r   )r   r   r   r   r   r   	get_local   s   zLocalNameSpace.get_localN)rx   ry   rz   r   r   r   r   r   r   r   r   r      s
    r   c                   @   s6   e Zd ZddlZdZeddddZed	d
 Z	dS )Debuggerr   NFpytestd   levelc                 G   s0   t ddd|    ddd |D  d d S )Nz[debug] JS: z  r    c                 s   s     | ]}t t|d d V  qdS )2   N)r   r0   rA   r   r   r   r   rE      s    z!Debugger.write.<locals>.<genexpr>
)r
   join)r   argsr   r   r   write   s   zDebugger.writec                    s    fdd}|S )Nc           	   
      s    j r| r j||d z| |||g|R i |\}}W n" tyB } z j r=t|tr3|j} jd|d||d  d }~ww  j rb| rb|sRt||krb jddg| t|d||d ||fS )Nr   z
=> Raises:z<-|z->z=>)ENABLEDstripr   	Exceptionr/   r   orig_msgrepr)	r   stmt
local_varsallow_recursionr   kwargsret
should_retr   clsfr   r   interpret_statement   s    $
 z6Debugger.wrap_interpreter.<locals>.interpret_statementr   )r   r   r   r   r   r   wrap_interpreter   s   zDebugger.wrap_interpreter)
rx   ry   rz   sysmodulesr   staticmethodr   classmethodr   r   r   r   r   r      s    r   c                   @   s   e Zd ZdZddejejejejddZ	d,ddZ
G d	d
 d
eZdd Zedd Zed-ddZed,ddZdd Zd.ddZdd Zejd/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 )0JSInterpreterr   i   i   i   )dgimsuyNc                 C   s,   |i | _ | _|d u ri n|| _t | _d S r   )code
_functions_objectsset_undefined_varnames)r   r   objectsr   r   r   r     s   zJSInterpreter.__init__c                       s   e Zd Zd fdd	Z  ZS )zJSInterpreter.ExceptionNc                    s@   |d ur|   dt|dd }t j|g|R i | d S )Nz in: r   )rstripr   superr   )r   msgexprr   r   	__class__r   r   r   %  s   z JSInterpreter.Exception.__init__r   )rx   ry   rz   r   __classcell__r   r   r   r   r   $  s    r   c                 C   sL   |  j d7  _ d| j  }t|r t|ts t|d| j  d}|||< |S )Nr   __yt_dlp_jsinterp_objF<ro   )$_JSInterpreter__named_object_countercallabler/   r   )r   	namespaceobjnamer   r   r   _named_object*  s   zJSInterpreter._named_objectc                 C   sR   d}|s||fS t |D ]\}}|| jvr n|| j| O }q|||d d  fS )Nr   r   )	enumerate	_RE_FLAGS)r   r   flagsidxchr   r   r   _regex_flags2  s   
zJSInterpreter._regex_flags,c                 c   s   d}| sd S t t d}dddt|d f\}}}}d\}	}
}}t| D ]\}}|	s<|tv r<|t|   d7  < n<|	sO||v rO|| rN||  d8  < n)|
sx|tv rl|	|d fv rl|	sc|sc|dkrk|	ri|sid n|}	n|	dkrx|dv rx|dk}|
 o|	o|dk}
|	 o| o|d	vo|d
v }|	s||v r|n| o|}||| kst| s|	s|rd}q'||kr|d7 }q'| |||  V  |d d}}|d7 }|r||kr nq'| |d  V  d S )Nz+-*/%&|^=<>!,;{}:[r   r   )NFTFrt   ru   [\TFz-+)	dictfromkeys_MATCHING_PARENSvaluesrS   r   _QUOTESisspaceany)r   delim	max_splitOP_CHARScountersstartsplitspos	delim_lenin_quoteescapingafter_opin_regex_char_groupr   charin_unary_opr   r   r   	_separate=  sR    zJSInterpreter._separatec                 C   sh   |d u r|ot |d  }t| ||d}t|dk r$| d| ||d dd   |d  fS )Nr   r   r:   zNo terminating paren )r   listr   rS   r   r   )r   r   r   	separatedr   r   r   _separate_at_parend  s    z JSInterpreter._separate_at_parenc           	   
   C   s   |dv r|dkt |A r|S n|dkr|d tfvr|S n|dkr-t |g| |ddR  }| |||}t|s;|S |dkrOt|tsIt|trO| | S zt| ||W S  tyt } z| jd|d	| d	|||d
d }~ww )N)rc   rd   rd   rb   ra   :r   rp   zFailed to evaluate r   cause)	r6   r   r   interpret_expression
_OPERATORSgetr/   r0   r   )	r   r   left_val
right_exprr   r   r   	right_valr   r   r   r   	_operatorm  s*   
"zJSInterpreter._operatorFc              
   C   s~   |dkrt |S zt|tr|t| W S |t| W S  ty> } z|r-tW  Y d }~S | jd| t||dd }~ww )NlengthzCannot get index r   )rS   r/   r   r   r0   r   r   r   )r   r   r   allow_undefinedr   r   r   r   _index  s   &zJSInterpreter._indexc                 C   s,   zt |W S  ty   | || Y S w r   )jsondumpsr   r   )r   r   r   r   r   r   _dump  s
   zJSInterpreter._dumpr   c           7         s   dk r	 d d8  d}t|dpdg}|   }|D ]}| \}}|r7||f  S q$td|}	|	rj|t|		dd   |		dr[t
 |		d	 }|pit|		d	}spd |fS d tv rd d\}
}d d
kr|\}}|
 d
| }
ntt|
 d  dd}
|s|
|fS |
| drdd  }|dr|dd  \}}t| d}|d u r d|t|d | n	 d| drdd   }d |fS drf\}
}fdd|
D }tdd |D rH fddtfdd|D |fS |
 \}
}|rW|r^|
|p\|fS |
| dr\}
}|
 \}
}|r|r|
|p|fS |
| dr\}
} fdd|
D }|| td }	|	r|	 ni }|d!r|	 d d  \} \}d }td"}	|	r|	 d d  \}t| }|r|n| \}}|r|dfS |d#rۈ|	 d d  \}d }z| \}}|rB|dfW S W n t yX } z|}W Y d }~nd }~ww d$}td%t d&}	|	r|	 d d  \}|ri }|		d'rt |t
r|j!n|||		d'< "|}d || }}td(}	|	rɈ|	 d d  \}| \}}|r|dfS |\}}|r|dfS |r|n/|d)rw|	 d d  \}}|dr|\} n,td*|}!|!r%||! d d  \}"}|d+\} d,|"| f } n|d} |d\}#}}$|#  	 t| sFn0z|  \}}|rX|dfW S W n t#yc   Y n t$yl   Y nw |$  q;n|d-r
|	 d d  \}"}|" }"|d+\} | %d.d/&d0dd  }%d1D ]_}&d}'|%D ]R}(d2d |(d3dD \})}|&r|'p|)d4k}'n|'s|)d4ko|"|) k}'|'sqz| \}}|r|W     S W q t#y   Y  nw |'r nq|r \}}||p|fS t}t|dkrI|D ]}j| |d5\}}|rC|df  S q-|dfS td6t d7t' d8d9(t)tj*t+t,t-  d:}	|	r|		d;}*|		d<s.|		d=|*|		d> }+|r/|		d;|+ n|+|		d;< |		d; |fS |*d t0fv r d?|		d; |		d< },t |,tt1fsш d@|, dAt|,},.|		d=2|*|,|		d> |*|,< |*|, |fS t3dBt dCt dDD ]P}	|		dEp
|		dF}-|	4 \}#}.|		dGp|		dH}/|- }|-  |/d dIkr-dndJ7  < |		dGr;|- }d |# | |.d   qsVd |fS tdKt dLt dMt' dNt dOt dP}	5 rwt|fS dQkr~t#dRkrt$dSkrt0|fS dTkrt1dT|fS |	r|		dUr|		dV}-|r6|-}/|-| ||fS |-t7}|t7u rt0}j89|- ||fS t:;t< ttdd|fW  d    S 1 sw   Y  |	r|		dWr|		dX }0|		dY },2|0|,|fS t,D ]i}1t|1}2|2 }3	 |1dZv r<t|2dkr<|2dJ  s<|2  n|2rJ|1d[krJ|3d\sKn|1 |3 }3|1d]kr`|2  |1 |3 }3q$|2sgq|1(|2 }*.|1|*|3 |f  S |	r|		d^r|		d	d_d`\	s|		da |	 d  dr\}nd }fdbdc 	f	ddde}4|r|4 |  \}}||p|fS |4 |fS |	r6|		dfr6|		dg}5 fdhd|		diD }6|5v r|5 |6 dj|fS |5j=vr+>|5j=|5< j=|5 |6 dj|fS  dk|krDt?dldlnd |)mNr   zRecursion limit reachedr   F;r2   zJ(?P<var>(?:var|const|let)\s)|return(?:\s+|(?=["\'])|$)|(?P<throw>throw\s+)throwvarrt   Trv   znew    zDate(zFailed to parse date i  zUnsupported object zvoid    {c                    s"   g | ]}t  | d dqS )r   r   )r   r   r   rA   sub_exprr   r   r   
<listcomp>  s   " z5JSInterpreter.interpret_statement.<locals>.<listcomp>c                 s   s    | ]	}t |d kV  qdS )r:   N)rS   r  r   r   r   rE     s    z4JSInterpreter.interpret_statement.<locals>.<genexpr>c                    s4    | }tt| r| |fS  |  |fS r   )r   rematch_NAME_RE)r   r8   r   r   r   r   r   	dict_item  s   z4JSInterpreter.interpret_statement.<locals>.dict_itemc                 3   s    | ]
\}} ||V  qd S r   r   )rA   kv)r  r   r   rE     s    (r   c                       g | ]	} | qS r   r   )rA   itemr  r   r   r        z(?x)
                (?P<try>try)\s*\{|
                (?P<if>if)\s*\(|
                (?P<switch>switch)\s*\(|
                (?P<for>for)\s*\(
                ifzelse\s*{try)NFzcatch\s*(?P<err>\(\s*z	\s*\))?\{errzfinally\s*\{forzswitch\s*\(}zswitch(%s){%s}switchzdefault:zcase default:zcase )FTc                 s   s    | ]}|  V  qd S r   r   )rA   r   r   r   r   rE   I  rF   r   default)_is_var_declarationz(?x)
                (?P<out>z)(?:\[(?P<index>z )\])?\s*
                (?P<op>re   z3)?
                =(?!=)(?P<expr>.*)$
            outr_   r   r   z Cannot index undefined variable zList index z must be integerz3(?x)
                (?P<pre_sign>\+\+|--)(?P<var1>z)|
                (?P<var2>z)(?P<post_sign>\+\+|--)var1var2pre_sign	post_signrp   r@   za(?x)
            (?P<return>
                (?!if|return|true|false|null|undefined|NaN)(?P<name>z8)$
            )|(?P<attribute>
                (?P<var>z`)(?:
                    (?P<nullish>\?)?\.(?P<member>[^(]+)|
                    \[(?P<member2>zL)\]
                )\s*
            )|(?P<indexing>
                (?P<in>zH)\[(?P<idx>.+)\]$
            )|(?P<function>
                (?P<fname>z )\((?P<args>.*)\)$
            )breakcontinue	undefinedr<   returnr   indexinginr   z?<>*-ra   .rq   	attributemembernullishmember2c                    s   | s  d|  dS )z3 assert, but without risk of getting optimized out r   N)r   )r3   r   )r   r0  r   r   r   	assertion  s   z4JSInterpreter.interpret_statement.<locals>.assertionc                     s  fdkrt jrt 
d d d S tttd} | ttu rR
j	vrKz


j	< W n 
jyJ   	sH Y nw 
j	t	rZtu rZtS d u re
	S 
fdd
D }ttrʈdrʈdd	 d\}}}|d
 t|d d  |dkr|^}n#|dkrt|d	kd |\}t|td n	
d| |tu rdkr߈|d
 dtt|S 
d tu rdkrt|d	kd |d |d  S 
d dkr/|d
 t|dkd |d r+|d S tS dkrLttd t|dkd |d S dkr]| d   S dkrtttfd  t|d	kd! tg |d R   S d"krttd |d
 ttg |td d	 \}}|dk r|t7 }|d	d  }g }t|t|| tD ]}|| qt|D ]\}	}
 ||	 |
 q|S d#krttd |d
 t!|D ]	}
 d|
 qS d$kr ttd | d sd S  S d%kr1|d
 "| S d&kr^|d
 t|d	kd' g |dd d	 \  fd(dtD S d)kr|d
 t|d	kd' g |dd d	 \}}z#||W S  t$y   Y d*S w d+krÈttd, t|dkd t|d tr|d nd}|tkrd S t%| S ttrtn}| |d-S ).N)consoledebugr   ])StringMathArrayc                    r  r   r  rA   r  r  r   r   r     r  zJJSInterpreter.interpret_statement.<locals>.eval_method.<locals>.<listcomp>z
prototype.r.  r:   ztakes one or more argumentsr   zneeds binding to type callapplyztakes two argumentsz"second argument needs to be a listzUnsupported Function method fromCharCoder2   zUnsupported String method powr   zUnsupported Math method splitz&with limit argument is not implementedr   zmust be applied on a listztakes exactly one argumentreversezdoes not take any argumentsslicez#must be applied on a list or stringztakes between 0 and 2 argumentsspliceunshiftrT   pushforEachztakes at-most 2 argumentsc                    s&   g | ]\}}||fd i qS )thisr   )rA   r   r  )r   r   r   rF  r   r   r  O  s   & indexOfr@   
charCodeAtzmust be applied on a stringr   )&r   r   r   r   r0   r   r   r   r   r   extract_objectr   r   r  r   r/   type
startswith	partitionrS   r   mapchrr?  r@  rA  r   rH   minrQ   rT   r   insertrR   extendr_   
ValueErrorord)typesargvals
new_member_func_prototyper_   how_many	add_itemsresr   r  r   r   )	r   arg_strr3  r   r   r0  r1  r   variable)r   r   rF  r   eval_method  s   







 




"











z6JSInterpreter.interpret_statement.<locals>.eval_methodfunctionfnamec                    r  r   r  r:  r  r   r   r  m  s    r   rI  zUnsupported JS expression    )@r   r   r   rT   r   r   r  r  rS   groupr   r   boolr   r   r  loadsr   r   rL  r   r	   r  r   allr   	groupdictr   endlstripr6   r  r/   r   	new_childr|   r   replacer?  _NESTED_BRACKETSr   rN  escaper   r   _COMP_OPERATORSr   r   r   r   r  finditerspanisdigitr   r   r   addr   r   rS  r   extract_functionr   )7r   r   r   r   r"  should_returnsub_statementssub_stmtr   r   innerouterr   r   leftrightdatesub_expressionsshould_abortr   mdr3   if_expr	else_exprtry_exprr  r   pendingr  
catch_varsconstructor	remainingbodyswitch_m
switch_valr   	incrementitemsr!  matchedr  caser   eval_resultr   r  rh  rZ   r8   r   r   r   r_  ra  rV  r   )
r   r]  r3  r  r   r   r0  r1  r   r^  r   r     s~  




 




 "(	







"&


 


 z!JSInterpreter.interpret_statementc                 C   s&   |  |||\}}|r| d||S )Nz Cannot return from an expression)r   r   )r   r   r   r   r   rt  r   r   r   r   x  s   z"JSInterpreter.interpret_expressionc                 G   s   d}i }t dt ||f | j}|s| d| |d}t d|tf |}|D ]'}|dd}	t	|d}
t
| j|	|d	g|R  d
|
 d||
< q-|S )Nz1(?:[a-zA-Z$0-9]+|"[a-zA-Z$0-9]+"|'[a-zA-Z$0-9]+')z(?x)
                (?<![a-zA-Z$0-9.])%s\s*=\s*{\s*
                    (?P<fields>(%s\s*:\s*function\s*\(.*?\)\s*{.*?}(?:,\s*)?)*)
                }\s*;
            zCould not find object fieldszg(?x)
                (?P<key>%s)\s*:\s*function\s*\((?P<args>(?:%s|,)*)\){(?P<code>[^}]+)}
            r   r   r   r   r   ro   )r  searchrm  r   r   rc  ro  r  r?  r   r   build_function)r   objnameglobal_stack_FUNC_NAME_REr   obj_mr  fields_mr   argnamesr   r   r   r   rJ  ~  s0   
"
zJSInterpreter.extract_objectc                 C   sh   t ddt |i | j}|du r| d| d| |d\}}dd |d	d
D |fS )z @returns argnames, code a  (?xs)
                (?:
                    function\s+%(name)s|
                    [{;,]\s*%(name)s\s*=\s*function|
                    (?:var|const|let)\s+%(name)s\s*=\s*function
                )\s*
                \((?P<args>[^)]*)\)\s*
                (?P<code>{.+})r   NzCould not find JS function ""r   c                 S      g | ]}|  qS r   r   r   r   r   r   r        z7JSInterpreter.extract_function_code.<locals>.<listcomp>r   r   )r  r  rm  r   r   r   rc  r?  )r   funcnamefunc_mr   rX  r   r   r   extract_function_code  s   
z#JSInterpreter.extract_function_codec                 G   s(   t | jg | ||R  d| dS )Nr   ro   )r   extract_function_from_coder  )r   r  r  r   r   r   rs    s   
zJSInterpreter.extract_functionc                 G   s   i }	 t d|}|d u rn8| \}}| ||d d  \}}	| || jdd |ddD ||g|R  }
|d | |
 |	 }q| j|||g|R  S )NTzfunction\((?P<args>[^)]*)\)\s*{r   c                 S   r  r   r   r   r   r   r   r    r  z<JSInterpreter.extract_function_from_code.<locals>.<listcomp>r   r   )	r  r  rp  r   r   r  rc  r?  r  )r   r  r   r  r   mobjr   
body_startr  r  r   r   r   r   r    s    


z(JSInterpreter.extract_function_from_codec                 G   s   |  ||S r   )rs  )r   r  r   r   r   r   call_function  s   zJSInterpreter.call_functionc                    s2   t pi gt  i df fdd	}|S )Nr   c                    sZ   d  tj | d d d  | t }dd||d \}}|r+|S d S )Nr   )	fillvaluer   r   r   )update	itertoolszip_longestr   r   rk  )r   r   r   	var_stackr   r}  r  r   r  r   r   r   resf  s   z*JSInterpreter.build_function.<locals>.resf)r   tuple)r   r  r   r  r  r   r  r   r    s   zJSInterpreter.build_functionr   )r   N)F)r   F) rx   ry   rz   r   r  IMSUr   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r   r   rJ  r  rs  r  r  r  r   r   r   r   r     sD    


&

   fr   r   )r7   )<rJ   r   r  r  r   operatorr  utilsr   r   r   r   r   r   r	   r
   r   r"   r(   r+   r,   r-   r.   r1   r6   r   r   r`   or_xorand_is_is_noteqnelegeltgtrshiftlshiftrr  submulr   rn  r  r   zipr   r   rl  r   r|   r   r   ChainMapr   r   r   r   r   r   r   <module>   s    (


7











 