Your IP : 3.129.70.138
�
S�Dg�B � �R � d Z ddlZddlZddlZddlmZ ddlmZ ddlm Z ddlm
Z
ddlmZ dd lm
Z
dd
lmZ ddlmZ ddlmZ dd
lmZ dZe
rh d�Zn
e� � Zh d�ZddhZddhZddhZ ej ddee�� � efZefZ e!fZ" ddl#m#Z#m$Z$ ddl%m%Z% e e#e$fz
Z ee%fz
Zn# e&$ r Y nw xY w ddl'm(Z( ee(fz
Zn# e&$ r Y nw xY weej) fz
Ze ej* fz
Z e"ej+ fz
Z"e e,g d�� � fe e,g d�� � fe" e,g d�� � fe e,g d �� � ffZ- G d!� d"ej. � � Z/d#� Z0d$� Z1d%� Z2d&� Z3d'� Z4 G d(� d)e� � Z5 G d*� d+e5� � Z6 dd,l7m8Z8 n# e&$ r d-� Z8Y nw xY w G d.� d/e9� � Z: G d0� d1e:e� � Z; G d2� d3e:e � � Z<dS )4z�A sandbox layer that ensures unsafe operations cannot be performed.
Useful when the template itself comes from an untrusted source.
� N)�deque)� Formatter)�EscapeFormatter)�Markup� )�abc)�PY2)�
range_type)�string_types)�Environment)�
SecurityErrori�� > � func_code� func_dict�func_closure�func_globals�
func_defaults> �im_func�im_self�im_class�gi_frame�gi_code�cr_frame�cr_code�ag_code�ag_frame�ignorezthe sets module)�module)�UserDict� DictMixin)�UserList)�Set)�add�clear�difference_update�discard�pop�remove�symmetric_difference_update�update)r# r&