shell bypass 403
3 B;�W�~ � ) @ s� d dl mZmZmZ d dlmZmZ d dlmZm Z d dl Z d dlZd dlZddl mZmZmZmZ ddl mZ ddlmZ d d lmZ yd d lmZ W n ek r� eZY nX edd� eD ��Zed d� eD ��Zedd� eD ��Zeeddg�B ZdZej�r$ej eddE� e!d� d �Z"n ej e�Z"e#ddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3g �Z$ej d4�Z%i Z&G d5d6� d6e'�Z(d7d8� Z)G d9d:� d:e'�Z*G d;d<� d<e*�Z+G d=d>� d>e,�Z-G d?d@� d@e'�Z.G dAdB� dBe'�Z/dCdD� Z0dS )F� )�absolute_import�division�unicode_literals)� text_type�binary_type)�http_client�urllibN� )�EOF�spaceCharacters�asciiLetters�asciiUppercase)�ReparseException)�_utils)�StringIO)�BytesIOc C s g | ]}|j d ��qS )�ascii)�encode)�.0�item� r �"/usr/lib/python3.6/_inputstream.py� <listcomp> s r c C s g | ]}|j d ��qS )r )r )r r r r r r s c C s g | ]}|j d ��qS )r )r )r r r r r r s � >� <u� [----]z"\uD800-\uDFFF"�]i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� i�� z[ - -/:-@[-`{-~]c @ sH e Zd ZdZdd� Zdd� Zdd� Zdd � Zd d� Zdd � Z dd� Z dS )�BufferedStreamz�Buffering for streams that do not have buffering of their own The buffer is implemented as a list of chunks on the assumption that joining many strings will be slow since it is O(n**2) c C s || _ g | _ddg| _d S )Nr r ���)�stream�buffer�position)�selfr r r r �__init__@ s zBufferedStream.__init__c C s@ d}x(| j d | jd � D ]}|t|�7 }qW || jd 7 }|S )Nr r )r r �len)r! �pos�chunkr r r �tellE s zBufferedStream.tellc C sH |}d}x0t | j| �|k r8|t | j| �8 }|d7 }q W ||g| _d S )Nr r )r# r r )r! r$ �offset�ir r r �seekL s zBufferedStream.seekc C sT | j s| j|�S | jd t| j �krF| jd t| j d �krF| j|�S | j|�S d S )Nr r r )r �_readStreamr r# �_readFromBuffer)r! �bytesr r r �readU s zBufferedStream.readc C s t dd� | jD ��S )Nc S s g | ]}t |��qS r )r# )r r r r r r _ s z1BufferedStream._bufferedBytes.<locals>.<listcomp>)�sumr )r! r r r �_bufferedBytes^ s zBufferedStream._bufferedBytesc C s<