403Webshell
Server IP : 209.209.40.120  /  Your IP : 216.73.217.112
Web Server : Microsoft-IIS/10.0
System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586
User : NEWWWW$ ( 0)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Python312/Lib/site-packages/pandas/tests/io/parser/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python312/Lib/site-packages/pandas/tests/io/parser/__pycache__/test_na_values.cpython-312.pyc
�

0	�gzV��	�dZddlmZddlZddlZddlmZddlm	Z	m
Z
mZddlm
Zejj!d�Zejj%d�Zejj%d�Zd	�Zd
�Zejj/ddd
gddgddgdgd
gdgdgg�ejj/dddg�d���Zd�Zejj/dddgg�d��Zd�Zd�Zejj/ddge	ej:gdgdgd�e
dgd����fdd ge	ej:gdgd!�ej<d"gdd#g�$���fdd#ge	ej:gdgd!�ej<d"gdd#g�$���fg�d%��Zejj/d&ie	dd'ej:d(d)ej:d*ggd+�d,d-d.ej:d/ej:d0gd1��fggd2�d3d4�e	gd5�gd+�gd6�d1��fdgd3d4�e	ej:d'd7d(d)d8d*ggd+�gd6�d1��fdggd2�ie	dd'ej:d(d)ej:d*ggd+�d,d-d.ej:d/ej:d0gd1��fg�d9��Z d:�Z!d;�Z"d<�Z#ejj/d=d>d?g�d@��Z$eejj/dAdBddCgej:ej:gdDdEggfd3dFdCgd8dGgdHdEggfg�dI���Z%edJ��Z&ejj/dKdej:dLgdLej:ggfd ddM�dNdLgej:ej:ggfg�dO��Z'dP�Z(dQ�Z)ejj/dRe*dS�dTze*dU�zddSgie	e*dS�e*dU�g�fe*dS�dVzdWzie	e*dS�dgd7d gg�fe*dS�dXzddSgie	ej:dg�fg�dY��Z+dZ�Z,ejj/d[d3d7d\gfdBej:d]gfg�d^��Z-d_�Z.eejj/d`dBd3g�da���Z/eejj/dbdcdddedfdgdhgfdgddhifg�di���Z0edj��Z1dk�Z2edl��Z3dm�Z4dn�Z5y)ozg
Tests that NA values are properly handled during
parsing for all of the parsers defined in parsers.py
�)�StringION)�
STR_NA_VALUES)�	DataFrame�Index�
MultiIndexz=ignore:Passing a BlockManager to DataFrame:DeprecationWarning�
pyarrow_xfail�pyarrow_skipc�2�|}d}|jt|��}tgd�dtjdgtjddgggd���}|j
d	k(rd|jd
<d|jd<tj||�y)NzA,B,C
a,b,c
d,,f
,g,h
��a�b�c�d�f�g�h��A�B�C��columns�pyarrow)�r)�r)	�read_csvrr�np�nan�engine�loc�tm�assert_frame_equal��all_parsers�parser�data�result�expecteds     �GC:\Python312\Lib\site-packages\pandas/tests/io/parser/test_na_values.py�test_string_nasr*s���
�F��D�
�_�_�X�d�^�
,�F��	�3�����,�r�v�v�s�C�.@�A���H��}�}�	�!�#����V��#����V�����&�(�+�c�R�|}d}tddgtjdgtjtjggddg��}|jdk(r"d|jd	d
gdf<d|jd<|jt
|��}tj||�y)NzA,B
foo,bar
NA,baz
NaN,nan
�foo�bar�bazrrrrrr�rr)	rrrrr rrr!r")r$r%r&r(r's     r)�test_detect_string_nar1-s���
�F��D�
�
���"�&�&�%��2�6�6�2�6�6�*:�;�c�3�Z��H��}�}�	�!�$(����a��V�S�[�!�#����V��
�_�_�X�d�^�
,�F����&�(�+r+�	na_valuesz-999.0z-999i���g8��r&zA,B
-999,1.2
2,-999
3,4.5
z"A,B
-999,1.200
2,-999.000
3,4.500
c�<�|}ttjdgdtjgddggddg��}|jdk(rUt	d	�|D��sCd
}tjt|��5|jt|�|��ddd�y|jdk(r5d
|vr1t
jjd��}|j|�|jt|�|��}tj||�y#1swYyxYw)Ng333333�?�@g@g@rrrrc3�<K�|]}t|t����y�w)N)�
isinstance�str)�.0�xs  r)�	<genexpr>z,test_non_string_na_values.<locals>.<genexpr>_s����-T�Q�j��C�.@�-T�s��9The 'pyarrow' engine requires all na_values to be strings��match�r2z-999.000z4pyarrow engined does not recognize equivalent floats��reason)rrrr�all�pytest�raises�	TypeErrorrr�mark�xfail�applymarkerr!r")	r$r&r2�requestr%r(�msgrEr's	         r)�test_non_string_na_valuesrJ>s���<�F��2�6�6�3�-�#�r�v�v���c�
�C�c�SV�Z�X�H�
�}�}�	�!�#�-T�)�-T�*T�I��
�]�]�9�C�
0�	A��O�O�H�T�N�i�O�@�	A��	���)�	#�
�d�(:��{�{� � �I�!�
��	���D�!�
�_�_�X�d�^�y�_�
A�F����&�(�+�	A��s�5D�Dc�|�	�hd�}|tk(sJ�|}t|��	�	fd�}tdjt	|�D��cgc]\}}|||���c}}��}ttjt�	�t�	���}|j|d��}tj||�ycc}}w)N>�#NA�N/A�n/a�#N/A�-NaN�-nan�<NA>�1.#IND�-1.#IND�1.#QNAN�#N/A N/A�-1.#QNAN��NA�NaNr�NULL�None�nullc���|dk(rd}n|dkDrdjdg|z�}�|��}|�dz
kr!djdg�|z
dz
z�}|�|��}|S)NrrX�,r)�join)�i�v�buf�joined�nvs    �r)rz!test_default_na_values.<locals>.f�sr�����6��C�
��U��'�'�3�%�!�)�$�C���a�S�k���r�A�v�:��W�W�c�U�b�1�f�q�j�1�2�F��E�&��"�C��
r+�
)r�index)�header)r�lenrr`�	enumeraterrr�rangerr!r")
r$�
_NA_VALUESr%rrarbr&r(r'res
         @r)�test_default_na_valuesrmqs�����J�*��&�&�&�
�F�	�Z��B���D�I�I�9�Z�3H�I�4�1�a�q��A�w�I�J�K�D������r��%��)�D�H�
�_�_�T�$�_�
/�F����&�(�+��	Js�B8r/c���|}d}tdtjdgtjdtjgddtjgggd���}|jd	k(rEd
}t	j
t|��5|jt|�|dg�
�ddd�y|jt|�|dg�
�}tj||�y#1swYyxYw)Nz3A,B,C
ignore,this,row
1,NA,3
-1.#IND,5,baz
7,8,NaN
��?����rrrz@skiprows argument must be an integer when using engine='pyarrow'r<r)r2�skiprows�rrrrrBrC�
ValueErrorrrr!r")r$r2r%r&r(rIr's       r)�test_custom_na_valuesrw�s���
�F��D��

�r�v�v�q�	�B�F�F�A�r�v�v�.��A�r�v�v��?���H��}�}�	�!�P��
�]�]�:�S�
1�	O��O�O�H�T�N�i�1�#�O�N�	O��
�_�_�X�d�^�y�A�3�_�
O�F����&�(�+�	O��s�C!�!C*c��d}|}|jt|��}ttjdtj
dgt��tjddtj
gt��gd�d��}|jdk(rd|jd<d|jd	<tj||�y)
Nz1A,B,C
True,False,True
NA,True,False
False,NA,TrueTF��dtype)TFTrr)rrr0)rrrr�arrayr�objectrr r!r"�r$r&r%r'r(s     r)�test_bool_na_valuesr~�s����D��F�
�_�_�X�d�^�
,�F�����4�����/�v�>����5�$����/�v�>�$�	
��H��}�}�	�!�#����V��#����V�����&�(�+r+c��d}|}|jdk(rHd}tjt|��5|j	t|�dgdgd���ddd�y|j	t|�dgdgd���}t
tjdtjdgtjdtjdgtjdtjdgd	��}tj||�y#1swYyxYw)
Nz3A,B,C
foo,bar,NA
bar,foo,foo
foo,bar,NA
bar,foo,foorz;pyarrow engine doesn't support passing a dict for na_valuesr<r-r.)rrr>r�rrBrCrvrrrrrr!r"�r$r&r%rI�dfr(s      r)�test_na_value_dictr��s����D�
�F�
�}�}�	�!�K��
�]�]�:�S�
1�	T��O�O�H�T�N�U�G�5�'�6R�O�S�	T��	����$��%���w�3O��	P�B���&�&�%�����/��&�&�%�����/��&�&�%�����/�	
��H����"�h�'�	T��s�"D�Dzindex_col,expectedrrq)r
rrr��name�rgr)r
r)rrr)�namesc��d}|}|jt|�t�|��}tj||�y)Nza,b,c,d
0,NA,1,5
)r2�	index_col)rr�setr!r")r$r�r(r&r%r's      r)�test_na_value_dict_multi_indexr��s:��0�D��F�
�_�_�X�d�^�s�u�	�_�
R�F����&�(�+r+zkwargs,expectedr
r�er�rrrp�rq�rr�one�two�three�five�sevenr)rrF�r2�keep_default_na�rr
rXrr�rr)r�r�r�rr�rXr�rXrc��d}|}|jdk(r�d|vrVt|dt�rCd}tjt
|��5|jt|�fi|��ddd�ytjj�}|j|�|jt|�fi|��}tj||�y#1swYyxYw)NzAA,B,C
a,1,one
b,2,two
,3,three
d,4,nan
e,5,five
nan,6,
g,7,seven
rr2�?The pyarrow engine doesn't support passing a dict for na_valuesr<)
rr6�dictrBrCrvrrrErFrGr!r")	r$�kwargsr(rHr&r%rIrEr's	         r)�test_na_values_keep_defaultr�s���\	�D��F�
�}�}�	�!��&� �Z��{�0C�T�%J�S�C����z��5�
:��������9�&�9�
:���{�{� � �"�����D�!�
�V�_�_�X�d�^�
6�v�
6�F����&�(�+�
:��s�C�Cc��d}|}|jt|�d��}tgd�gd�gd�d��}tj||�y)NzAA,B,C
a,1,None
b,2,two
,3,None
d,4,nan
e,5,five
nan,6,
g,7,seven
F)r�r�r�)r\r�r\rr�rXr�r�rrrr!r"r}s     r)�!test_no_na_values_no_keep_defaultr�KsP��	�D��F�
�_�_�X�d�^�U�_�
C�F��5�&�D�	
��H����&�(�+r+c�x�d}|}|jdk(rGd}tjt|��5|j	t|�ddgid��ddd�y|j	t|�ddgid��}t
d	gtjgd
��}tj||�y#1swYyxYw)Nza,b
,2rr�r<r
�2Fr�rX�rr
r�)r$r&r%rIr'r(s      r)�&test_no_keep_default_na_dict_na_valuesr�es����D�
�F�
�}�}�	�!�O��
�]�]�:�S�
1�	��O�O����3���,��
�
�	�	�
�_�_����3���,����F���t�2�6�6�(�3�4�H����&�(�+�	�	�s�!B0�0B9c�t�d}|}|jdk(rFd}tjt|��5|j	t|�ddid��ddd�y|j	t|�ddid��}t
d	gtjgd
��}tj||�y#1swYyxYw)Nza,b
1,2rr�r<r
rFr�rr�r�r�s      r)�-test_no_keep_default_na_dict_na_scalar_valuesr�ys����D�
�F�
�}�}�	�!�O��
�]�]�:�S�
1�	W��O�O�H�T�N�s�A�h�PU�O�V�	W��	����$��C��8�U��	S�B���s�"�&�&��2�3�H����"�h�'�
	W��s� B.�.B7�col_zero_na_valuesi��113125c��d}|}ttjdgtjdgdtjgddgddgd	d
gtjdgd��}|jd
k(rJd}t	j
t|��5|jt|�ddd
dd|d���ddd�y|jt|�ddd
dd|d���}tj||�y#1swYyxYw)Nz_113125,"blah","/blaha",kjsdkj,412.166,225.874,214.008
729639,"qwer","",asdfkj,466.681,,252.373
gND&A�qwerz/blaha�kjsdkj�asdfkjg-����y@g7�A`�*}@z225.874rXg-���o@)rrrrpr�rqr�rr�r<Fz214.008�blah)rr�rr)rhr�r2ru)r$r�r&r%r(rIr's       r)�1test_no_keep_default_na_dict_na_values_diff_reprsr��s���D��F������!�������"�&�&�!��(�#���!��2������ �	
�
�H��}�}�	�!�O��
�]�]�:�S�
1�	��O�O����� %� �Y�6�>P�Q�	
�
�	�	�
�_�_�������Y�6�6H�I�	��F����&�(�+�	�	�s�
$C1�1C:zna_filter,row_dataTrrpr�1r�3c��d}|}|jt|�dg|��}t|ddg��}tj||�y)NzA,B
1,A
nan,B
3,C
r)r2�	na_filterrrr�)r$r��row_datar&r%r'r(s       r)�!test_na_values_na_filter_overrider��sJ���D��F�
�_�_�X�d�^��u�	�_�
R�F���C��:�6�H����&�(�+r+c�V�|}d}|jt|��}tdddddtjtjtjgdddd	d
tjtjtjgggd���}tj||�y)
NzlDate,Currency,Symbol,Type,Units,UnitPrice,Cost,Tax
2012-03-14,USD,AAPL,BUY,1000
2012-05-12,USD,SBUX,SELL,500z
2012-03-14�USD�AAPL�BUYi�z
2012-05-12�SBUX�SELLi�)�Date�Currency�Symbol�Type�Units�	UnitPrice�Cost�Taxr)rrrrrr!r"r#s     r)�test_na_trailing_columnsr��s���
�F� �D�
�_�_�X�d�^�
,�F��
�5�&�%��r�v�v�r�v�v�r�v�v�N�
�5�&�&�#�r�v�v�r�v�v�r�v�v�N�	
�	
��H� ���&�(�+r+zna_values,row_datar4r�roc�f�|}ddg}d}|jdk(rot|t�r_t|t�r	t}d}nt}d}tj||��5|jt|�||��ddd�y|jdk(rDd}tjt|��5|jt|�||��ddd�y|jt|�||��}t||�	�}	tj||	�y#1swYyxYw#1swYyxYw)
Nrr
�1,2
2,1rr�r;r<�r�r2r)rr6r�rvrDrBrCrrrr!r")
r$r2r�r%r�r&�errrIr'r(s
          r)�test_na_values_scalarr��s	���F�
�#�J�E��D�
�}�}�	�!�j��D�&A��i��&��C�S�C��C�M�C�
�]�]�3�c�
*�	N��O�O�H�T�N�%�9�O�M�	N��	���)�	#�I��
�]�]�9�C�
0�	N��O�O�H�T�N�%�9�O�M�	N��
�_�_�X�d�^�5�I�_�
N�F���5�1�H����&�(�+�	N���	N��s� D�3D'�D$�'D0c���|}ddd�}|j�}ddg}d}tddgtjtjgg|�	�}|jd
k(rDd}tjt|��5|jt|�||�
�ddd�y|jt|�||�
�}tj||�tj||�y#1swYyxYw)Nrrr�rr
r�ror4rrr�r<r�)
�copyrrrrrBrCrvrrr!r"�assert_dict_equal)	r$r%r2�na_values_copyr�r&r(rIr's	         r)�test_na_values_dict_aliasingr�s���
�F��a� �I��^�^�%�N�
�#�J�E��D��3��*�r�v�v�r�v�v�&6�7��G�H�
�}�}�	�!�O��
�]�]�:�S�
1�	N��O�O�H�T�N�%�9�O�M�	N��
�_�_�X�d�^�5�I�_�
N�F����&�(�+�����N�3�	N��s�9C*�*C3c�n�d}|}ddi}|jdk(rCd}tjt|��5|j	t|�|��ddd�y|j	t|�|��}t
dtjd	gi�}tj||�y#1swYyxYw)
Nza
foo
1rr-rr�r<r>rrr�)r$r&r%r2rIr'r(s       r)�test_na_values_dict_col_indexr�s����D�
�F��E�
�I�
�}�}�	�!�O��
�]�]�:�S�
1�	A��O�O�H�T�N�i�O�@�	A��
�_�_�X�d�^�y�_�
A�F��#�����{�+�,�H����&�(�+�
	A��s�B+�+B4zdata,kwargs,expectedlrflz,1z
,2z
1c��|}|jdk(rId|vrEd}tjt|��5|jt|�fddi|��ddd�y|jdk(r1tjjd��}|j|�|jt|�fddi|��}tj||�y#1swYyxYw)Nrr2r;r<rhz!Returns float64 instead of objectr?)rrBrCrDrrrErFrGr!r")	r$r&r�r(rHr%rIrEr's	         r)�test_na_values_uint64r�.s����F�
�}�}�	�!�k�V�&;�I��
�]�]�9�C�
0�	C��F�O�O�H�T�N�B�4�B�6�B�	C��	���)�	#��{�{� � �(K� �L�����D�!�
�V�_�_�X�d�^�
C�D�
C�F�
C�F����&�(�+�	C��s�C�Cc��d}|}tddgitdgd����}|jt|�dd	�
�}t	j
||�y)Nza,1
b,2r�rr
rr�r�rF)r�r�)rrrrr!r")r$r&r%r(r's     r)�*test_empty_na_values_no_default_with_indexr�KsO���D�
�F��#��s��5�#��S�+A�B�H�
�_�_�X�d�^�q�%�_�
P�F����&�(�+r+zna_filter,index_data�5g@c�:�|}d}|jdk(r5|dur1tjjd��}|j	|�tddgdd	gd
�t
|d���
�}|jt|�dg|��}tj||�y)N�a,b,c
1,,3
4,5,6rFzmismatched index resultr?rr�rpr�)rrr
r�r�)r�r�)rrBrErFrGrrrrr!r")	r$r��
index_datarHr%r&rEr(r's	         r)�test_no_na_filter_on_indexr�Us����F��D�
�}�}�	�!�i�5�&8��{�{� � �(A� �B�����D�!���1�v�Q��F�3�5��RU�;V�W�H�
�_�_�X�d�^��s�i�_�
P�F����&�(�+r+c���|}d}|jt|�dgddg��}tdtjgdtjgd�td	d
gd���
�}t
j||�y)Nzidx,col1,col2
1,3,4
2,inf,-infr�infz-inf)r�r2rpr�)�col1�col2rr�idxr�r�)rrrrrrr!r")r$r%r&�outr(s     r)�!test_inf_na_values_with_int_indexr�hsm��
�F�-�D��/�/�(�4�.�Q�C�E�6�?�/�
S�C���R�V�V��q�"�&�&�k�2�%��A��U�:S��H����#�x�(r+r�c���|}d}|rtjnd}tddg|dgddgd��}|jt	|�|t
�	�}t
j||�y)
Nr�rXr��4r�r��6r)r�rz)rrrrrr7r!r")r$r�r%r&�emptyr(r's       r)�+test_na_values_with_dtype_str_and_na_filterr�usb���F��D� �B�F�F�R�E���S�z����C��:�N�O�H�
�_�_�X�d�^�y��_�
L�F����&�(�+r+zdata, na_values)zfalse,1
,1
trueN)zfalse,1
null,1
trueN)zfalse,1
nan,1
trueN)�false,1
foo,1
truer-r�r-c���|}djddg�}tjt|��5|j	t|�dddgddi|��ddd�y#1swYyxYw)	N�|z(Bool column has NA values in column [0a]zRcannot safely convert passed user dtype of bool for object dtyped data in column 0r<rr
�bool)rhr�rzr2)r`rBrCrvrr)r$r&r2r%rIs     r)�!test_cast_NA_to_bool_raises_errorr��su���F�

�(�(�6�
6�	
��C�
���z��	-�
�����T�N����*���-��	�	
�
�
�
�s�$A�A'c	���|}d}|jt|�dgd�tttd���j�}t	ddgddgdd	gd�d
dg��}tj||�y)
NzDFile: small.csv,,
10010010233,0123,654
foo,,bar
01001000155,4530,898)r�r��col3)rhr�rz�10010010233�01001000155�0123�4530�654�898rrpr�)rrr7�dropnarr!r"r#s     r)�test_str_nan_droppedr��s����F��D�
�_�_�����&��C��5�	��

�f�h���"�M�2��V�$��E�N�	
�
�!�f�
�H����&�(�+r+c	��|}d}|jdk(rXd}tjt|��5|j	t|�t
td��ddi��ddd�y|j	t|�t
td��ddi��}td	gdgtjgd
��}tj||�y#1swYyxYw)NzA,B,B
X,Y,Z
1,2,infrr�r<r�r�Zr�)rhr2r))r�X)r�Yr�)
rrBrCrvrr�listrkrrrr!r")r$r%r&rIr'r(s      r)�test_nan_multi_indexr��s���
�F�"�D�
�}�}�	�!�O��
�]�]�:�S�
1�	��O�O����t�E�!�H�~�*�e�AT�
�
�	�	�
�_�_����t�E�!�H�~�*�e�9L���F����������	
��H����&�(�+�%	�	�s�2C�Cc��|}d}tjtd��5|jt	|�d��ddd�y#1swYyxYw)N�0
NaN
True
False
z	NA valuesr<r�ry�rBrCrvrr�r$r%r&s   r)�test_bool_and_nan_to_boolr��sI���F��D�

���z��	5�6�������f��5�6�6�6���A�Ac��|}d}tjtd��5|jt	|�d��ddd�y#1swYyxYw)Nr�zconvert|NoneTyper<�intryr�r�s   r)�test_bool_and_nan_to_intr�sH��
�F��D�

���z�);�	<�5�������e��4�5�5�5�r�c��|}d}|jt|�d��}tjdtj
ddgi�}t
j||�y)Nr��floatry�0rog)rrr�	from_dictrrr!r"r#s     r)�test_bool_and_nan_to_floatr�sV��
�F��D�
�_�_�X�d�^�7�_�
;�F��"�"�C�"�&�&�#�s�);�#<�=�H����&�(�+r+)6�__doc__�ior�numpyrrB�pandas._libs.parsersr�pandasrrr�pandas._testing�_testingr!rE�filterwarnings�
pytestmark�usefixtures�
xfail_pyarrow�skip_pyarrowr*r1�parametrizerJrmrwr~r�r�from_tuplesr�r�r�r�r�r�r�r�r�r�r�r7r�r�r�r�r�r�r�r�r�rr�r+r)�<module>rs<�����
�.���
�
�[�[�
'�
'�C��
����'�'��8�
��{�{�&�&�~�6��,�$,�"������	�6��	
�v��	���	�
�	��	��	
���������
�	�
	�
��,���6,�0-,�`������u�u�g�&6�7�,�8�,�*,�((�2�������C��R�V�V�H�A�3�a�S�9���s�QT�AU�V�	
�
��F���v�v�h�a�S�)�,�j�,�,�f�X�c�3�Z�H�
�	
��#�J���v�v�h�a�S�)�,�j�,�,�f�X�c�3�Z�H�
�	
���.,�/�.,�������
���s�B�F�F�C��b�f�f�c�B�.������������Q��
�		
�!#��,��G��=�.�L��
�		
��%�E�:���&�&�#�r�3��U�C�@�.�L��
�		
����,�-���s�B�F�F�C��b�f�f�c�B�.������������Q��
�		
�?)�,�Z,�[,�Z,�2,�4,�((�$�����-���/A�B�$,�C�$,�N�������	
��C��2�6�6�2�6�6�*�Q��H�5�6�	�#�s��e�S�\�C��:�6�7���,���,��,��,�6������	
�b�f�f�c�]�S�"�&�&�M�*�+��q�	�S�#�J�������(8�9�:���,��,�64�,,�"������
��J����I��.�
�5�'�"��s�5�z�3�y�>�2�3�	
�


�U��d�	�V�	#�R��S��Z��O�b�!�W�3M�)N�O�	�U��e�	�k�E�7�3�Y�����{�5K�L���,��,�",�������e�b�#�Y�/�$�����
�1F�G��
,��
,� 
)��������t�U�m�4�,�5��,��������#�'�&�'�	�%��)�	�#�u��.�
�
�
�
��
�,�,��,�8,�8�	6��	6�	5�
,r+

Youez - 2016 - github.com/yon3zu
LinuXploit