403Webshell
Server IP : 178.105.222.151  /  Your IP : 216.73.216.38
Web Server : nginx/1.28.3
System : Linux MNK 7.0.0-15-generic #15-Ubuntu SMP PREEMPT_DYNAMIC Wed Apr 22 16:06:43 UTC 2026 x86_64
User : www-data ( 33)
PHP Version : 8.5.4
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/passlib/utils/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/passlib/utils/__pycache__/__init__.cpython-314.pyc
+
�THi�j���a�0t$Rt^RIHt^RIt^RIt^RIt^RIt^RIt^RI	t	^RI
t
^RIt^RIt^RI
t
^RIt^RIt^RIHtHt^RIHt^RIHtHt^RIHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%^RI&H't'H(t(H)t)H*t*H+t+^RI,H-t-H.t.H/t/H0t0H1t1.R	NR
NRNRNR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3Nt2]3!]Ph!]Pj4R4,4t6.RzOt7R5R6.t8R7t9R8t:R9t;]3!]	PxP{R:4;'gR;4t>!R<R=4t?]P�P�tB]B]P�P�0tDR>tER{R@ltFRAtGRBtHR|RCltIR}RDltJREtKRFtLRGtM]'!]LRH4]'!]MRI4RJRKltNRLRMltORNROltPRPtQRQtRR~RRRSlltSRTRUltTRVtU]UP�RW4tWRXRYltXRZR[ltY^�tZR\t[R]R^lt\RR_R`llt]R�RaRbllt^R�RcRdllt_].!ReRfRg7R�Rhl4t`]a!.R�O4tb]a!.R�O4tc]a!R8Ri.4tdR�RjRkllteR?tf]P�th]hti]	P�!^4RltkR~Rmltm]k'd]
P�!4toRn]pR(&M]
P�!]m!44toRotrRptsRqtt].!RfRrRsRt7^
]t3Rul4tuR�tvRvtwR�txRwtyRxtzRyt{R# ]ldR?tkLui;i)�z4passlib.utils -- helpers for writing password hashes)�annotationsN)�Iterable�Sequence)�AnyStr)�ExpectedStringError�ExpectedTypeError)
�
AB64_CHARS�BASE64_CHARS�BCRYPT_CHARS�HASH64_CHARS�Base64Engine�LazyBase64Engine�ab64_decode�ab64_encode�b64s_decode�b64s_encode�bcrypt64�h64�h64big)�add_doc�get_method_function�
join_bytes�join_unicode�unicode_or_bytes)�
classproperty�deprecated_function�deprecated_method�
hybrid_method�memoized_propertyrr	r
rrr
rrrrrr�consteqr�generate_password�getrandbytes�
getrandstrrr�	has_crypt�has_rounds_info�
has_salt_infor�
is_ascii_safe�is_crypt_context�is_crypt_handler�
is_same_codecrrr�render_bytes�rng�rounds_cost_values�
safe_crypt�saslprep�sys_bits�
test_crypt�tick�to_bytes�
to_native_str�
to_unicode�unix_crypt_schemes�	xor_bytesg�?�linear�log2��� �PASSLIB_MAX_PASSWORD_SIZEic�P�]tRt^}tRtRtRtRtRtRt	Rt
RR	ltR
tRt
R#)
�
SequenceMixinzw
helper which lets result object act like a fixed-length sequence.
subclass just needs to provide :meth:`_as_tuple()`.
c	��\R4h)zimplement in subclass)�NotImplementedError��selfs&�8/usr/lib/python3/dist-packages/passlib/utils/__init__.py�	_as_tuple�SequenceMixin._as_tuple�s��!�"9�:�:r9c	�4�\VP44#�N)�reprrDrAs&rC�__repr__�SequenceMixin.__repr__�����D�N�N�$�%�%r9c	�0�VP4V,#rG�rD)rB�idxs&&rC�__getitem__�SequenceMixin.__getitem__�s���~�~���$�$r9c	�4�\VP44#rG)�iterrDrAs&rC�__iter__�SequenceMixin.__iter__�rKr9c	�4�\VP44#rG)�lenrDrAs&rC�__len__�SequenceMixin.__len__�s���4�>�>�#�$�$r9c	�(�VP4V8H#rGrM�rB�others&&rC�__eq__�SequenceMixin.__eq__�s���~�~��5�(�(r9c��V^8�dQhRR/#)��return�int�)�formats"rC�__annotate__�SequenceMixin.__annotate__�s��&�&�#�&r9c	�4�\VP44#rG)�hashrDrAs&rC�__hash__�SequenceMixin.__hash__�rKr9c	�.�VPV4'*#rG)r\rZs&&rC�__ne__�SequenceMixin.__ne__�s���;�;�u�%�%�%r9rbN)�__name__�
__module__�__qualname__�__firstlineno__�__doc__rDrIrOrSrWr\rhrk�__static_attributes__rbr9rCr>r>}s/���
;�&�%�&�%�)�&�&r9r>c��\P!\V44PpV'gR#VP	V4pV'dVP
\9dR#V\V4R,,P
\8H#)z*test if function accepts specified keywordFT���)	�inspect�	signaturer�
parameters�get�kind�_VAR_ANY_SET�list�_VAR_KEYWORD)�func�key�params�args&&  rC�accepts_keywordr��sa��
�
�
�2�4�8�
9�
D�
D�F���
�*�*�S�/�C�
�s�x�x�|�+���$�v�,�r�"�#�(�(�L�8�8r9Fc�a�\V\4'dV.p\VP4pV'dN\V\4'dV.pVF.oV'd
SV9dKSV9gKVP	S4K0	V'EdVEFo\
;QJdV3RlV4F'gKRM	RM!V3RlV44'dKFV'dR\
V4F6wr�\SV	4'dM�V'gK#\W�4'gK6Ms	\V4pMeV'd\\
\V44F@wr�\W�4'gK\V4V
,
pWx^,
,V	8XgQhM	^pM^pVPVS4EK	V'g\V4VnR#R#)a�
helper to update mixin classes installed in target class.

:param target:
    target class whose bases will be modified.

:param add:
    class / classes to install into target's base class list.

:param remove:
    class / classes to remove from target's base class list.

:param append:
    by default, prepends mixins to front of list.
    if True, appends to end of list instead.

:param after:
    optionally make sure all mixins are inserted after
    this class / classes.

:param before:
    optionally make sure all mixins are inserted before
    this class / classes.

:param dryrun:
    optionally perform all calculations / raise errors,
    but don't actually modify the class.
c3�<<"�TFp\VS4x�K	R#5irG)�
issubclass)�.0�base�mixins& �rC�	<genexpr>�'update_mixin_classes.<locals>.<genexpr>�s����=�u�t�:�d�E�*�*�u���TFN)�
isinstance�typer{�	__bases__�remove�any�	enumerater�rV�reversed�insert�tuple)�target�addr��append�before�after�dryrun�basesrNr��end_idxr�s&&&&&&&    @rC�update_mixin_classesr��sa���>�#�t����e����!�!�"�E���f�d�#�#��X�F��E��u��|����~����U�#�	��s��E��s�=�u�=�s�s�s�=�u�=�=�=���!*�5�!1�I�C�!�%��.�.���v�*�T�":�":��
"2��e�*�C��%.�x���%?�M�G�!�$�.�.�!�%�j�7�2��$�1�W�~��5�5�5��&@��C���
�L�L��e�$�?�D� ��<���r9c#�"�V^8d\R4h\V\4'd(\V4p^pW28dW1,pWVx�TpKR#\V\4'dK\V4p\P!WQ4p\V4p\P!T3T4x�K?\R4h \dR#i;i5i)z0
split iterable into chunks of <size> elements.
zsize must be positive integerzsource must be iterableN)�
ValueErrorr�rrVrrR�	itertools�islice�next�
StopIteration�chain�	TypeError)�source�size�end�i�n�itr�	chunk_itr�firsts&&      rC�batchr�s�����a�x��8�9�9��&�(�#�#��&�k��
���g���A��1�+���A��
�F�H�	%�	%��6�l���!�(�(��3�I�
��Y����/�/�5�(�I�6�6��1�2�2��	!�
��
�s*�BC�B=�'C�=C�C�C�Cc�
�\V4\V4Jd\h\V\4'dVP	4MTp\V\4'dVP	4MTp\
P!W4#rG)r�r�r��str�encode�hmac�compare_digest��left�rights&&rCrrsZ���D�z��e��$���&�t�S�1�1�4�;�;�=�t�D�(���4�4�E�L�L�N�%�E����t�+�+r9c���VP4pVPV4'dVRRpV'g.#VPV4Uu.uFq"P4NK	up#uupi)zJsplit comma-separated string into list of elements,
stripping whitespace.
Nrt)�strip�endswith�split)r��sep�elems&& rC�
splitcommar�(sX���\�\�^�F�
���s����������	�%+�\�\�#�%6�7�%6�T�J�J�L�%6�7�7��7s�
A%c
��\V\4'g\R\V424hRP	RV44p\
P!RV4pV'g\#\PpV!V^,4'd9V!VR,4'g\RV,4h\PpMTp\PR3\PR3\PR3\PR	3\PR	3\PR	3\P R
3\P"R3\P$R3\P&R
3\P(R3VR3.pVFrp\P*!V4'dQR4h\P,!V4'dQR4hVF#wrxV!V4'gK\VRV24h	Kt	V#)a�Normalizes unicode strings using SASLPrep stringprep profile.

The SASLPrep profile is defined in :rfc:`4013`.
It provides a uniform scheme for normalizing unicode usernames
and passwords before performing byte-value sensitive operations
such as hashing. Among other things, it normalizes diacritic
representations, removes non-printing characters, and forbids
invalid characters such as ``\n``. Properly internationalized
applications should run user passwords through this function
before hashing.

:arg source:
    unicode string to normalize & validate

:param param:
    Optional noun identifying source parameter in error messages
    (Defaults to the string ``"value"``). This is mainly useful to make the caller's error
    messages make more sense contextually.

:raises ValueError:
    if any characters forbidden by the SASLPrep profile are encountered.

:raises TypeError:
    if input is not :class:`!unicode`

:returns:
    normalized unicode string

.. note::

    This function is not available under Jython,
    as the Jython stdlib is missing the :mod:`!stringprep` module
    (`Jython issue 1758320 <http://bugs.jython.org/issue1758320>`_).

.. versionadded:: 1.6
zinput must be string, not r:c3�"�TFGp\P!V4'dK!\P!V4'd\MTx�KI	R#5irG)�
stringprep�in_table_b1�in_table_c12�_USPACE)r��cs& rCr��saslprep.<locals>.<genexpr>fs<�����A��%�%�a�(�	5�:�*�*�1�-�-��1�4��s�A�A�A�NFKCzmalformed bidi sequence in z$unassigned code points forbidden in z control characters forbidden in z$private use characters forbidden in z"non-char code points forbidden in zsurrogate codes forbidden in z!non-plaintext chars forbidden in z!non-canonical chars forbidden in z1display-modifying / deprecated chars forbidden inztagged characters forbidden in zforbidden bidi character in z$failed to strip B.1 in mapping stagez(failed to replace C.1.2 in mapping stager;rt)r�r�r�r��join�unicodedata�	normalize�_UEMPTYr��in_table_d1r��in_table_d2�in_table_a1�in_table_c21_c22�in_table_c3�in_table_c4�in_table_c5�in_table_c6�in_table_c7�in_table_c8�in_table_c9r�r�)	r��param�data�is_ral_char�is_forbidden_bidi_char�
forbidden_r�r}�err_msgs	&&       rCr.r.4s���X�f�c�"�"��4�T�&�\�N�C�D�D�
�7�7�����D�� � ���.�D�����(�(�K��4��7����4��8�$�$��:�U�B�C�C�!+�!7�!7��"-��
�	�	�!G�H�	�	$�	$�&H�I�	�	�	�!G�H�	�	�	�!E�F�	�	�	�!E�F�	�	�	�!E�F�	�	�	�!@�A�	�	�	�!D�E�	�	�	�!D�E��"�"�?�	
�
�	�	�!B�C�	�!?�@�!�J�$���)�)�!�,�,�T�.T�T�,��*�*�1�-�-�	
�6�	
�-�(�M�D��A�w�w� �G�9�A�e�W�!5�6�6�(���Kr9c���\V\4'dVPR4pT\;QJd.RV4FNK	5M
!RV44,pVP	R4#)atPeform ``%`` formating using bytes in a uniform manner across Python 2/3.

This function is motivated by the fact that
:class:`bytes` instances do not support ``%`` or ``{}`` formatting under Python 3.
This function is an attempt to provide a replacement:
it converts everything to unicode (decoding bytes instances as ``latin-1``),
performs the required formatting, then encodes the result to ``latin-1``.

Calling ``render_bytes(source, *args)`` should function roughly the same as
``source % args`` under Python 2.

.. todo::
    python >= 3.5 added back limited support for bytes %,
    can revisit when 3.3/3.4 is dropped.
�latin-1c3�t"�TF.p\V\4'dVPR4MTx�K0	R#5i)r�N)r��bytes�decode)r�r�s& rCr��render_bytes.<locals>.<genexpr>�s-����LP�S��C��!7�!7��
�
�9��S�@�D�s�68)r�r�r�r�r�)r��args�results&* rCr*r*�sa�� �&�%� � ����y�)��
�e�e��LP��e�e��LP����F��=�=��#�#r9c�.�\PVR4#��big)ra�
from_bytes��values&rC�bytes_to_intr��s���>�>�%��'�'r9c�&�VPVR4#r�)r2)r��counts&&rC�int_to_bytesr��s���>�>�%��'�'r9z/decode byte string as single big-endian integerz/encode integer as single big-endian byte stringc�$�V^8�dQhRRRRRR/#)r_r�r�r�r`rb)rcs"rCrdrd�s&��M�M�E�M�%�M�E�Mr9c�^�\\V4\V4,\V44#)z;Perform bitwise-xor of two byte strings (must be same size))r�r�rVr�s&&rCr6r6�s"����T�*�\�%�-@�@�#�d�)�L�Lr9c�$�V^8�dQhRRRRRR/#)r_r�rr�rar`rb)rcs"rCrdrd�s!��"�"�&�"��"��"r9c�X�^V^,
\V4,,pW,RV#)z=
repeat or truncate <source> string, so it has length <size>
N)rV�r�r��mults&& rC�
repeat_stringr��s*��
��q��S��[�(�(�D��M�5�D�!�!r9c�$�V^8�dQhRRRRRR/#)r_r�r�r�rar`rb)rcs"rCrdrd�s!��.�.�u�.�C�.�E�.r9c�f�^V^,
\V4,,p\W,V4#)zF
variant of repeat_string() which truncates to nearest UTF8 boundary.
)rV�
utf8_truncater�s&& rC�utf8_repeat_stringr��s*��
��q��S��[�(�(�D�����-�-r9��c�(�V^8�dQhRRRRRRRR/#)r_r�rr�ra�padz
AnyStr | Noner`rb)rcs"rCrdrd�s(����V��3��]��f�r9c��Vf#\V\4'd\M\p\	V4pW8�dWW,
,,#VRV#)z>right-pad or truncate <source> string, so it has length <size>N)r�r��_UNULL�_BNULLrV)r�r�r��lengths&&& rC�right_pad_stringr�sD��
�{�"�6�3�/�/�f�V��
��[�F��}��t�}�-�-�-��%�4�=�r9c�$�V^8�dQhRRRRRR/#)r_r�r��indexrar`rb)rcs"rCrdrd�s!��=�=�%�=��=��=r9c�jaa�\S\4'g\S\R4h\S4pV^8d\	^W,4pW8�dS#\V^,V4pW8d"SV,^�,^�8wdMV^,
pK'W8XgQhSRVoVV3RlpV!4'gQhS#)ai
helper to truncate UTF8 byte string to nearest character boundary ON OR AFTER <index>.
returned prefix will always have length of at least <index>, and will stop on the
first byte that's not a UTF8 continuation byte (128 - 191 inclusive).
since utf8 should never take more than 4 bytes to encode known unicode values,
we can stop after ``index+3`` is reached.
r�Nc�<�SPR4pTPSPR44'gQhR# \dR#i;i)�utf-8T)r��UnicodeDecodeError�
startswith)�textr�r�s ��rC�sanity_check�#utf8_truncate.<locals>.sanity_checksM���	��=�=��)�D����v�}�}�W�5�6�6�6�6���
"�	��	�s�>�A
�A
)r�r�rrV�max�min)r�rr�r	r�sf&  @rCr�r��s����*�f�e�$�$����x�8�8��f�+�C��q�y��A�u�{�#���|��
��e�a�i��
�C��+��%�=�4��4�'��
��
���|��|��F�U�^�F�
��>�>��>��Mr9s	
 aA:#!�asciic� �V^8�dQhRRRR/#)r_�codecr�r`�boolrb)rcs"rCrdrd1s��B�B�#�B�$�Br9c�:�\PV4\8H#)zRTest if codec is compatible with 7-bit ascii (e.g. latin-1, utf-8; but not utf-16))�_ASCII_TEST_UNICODEr��_ASCII_TEST_BYTES)rs&rC�is_ascii_codecr1s���%�%�e�,�0A�A�Ar9c�$�V^8�dQhRRRRRR/#)r_r�r�r�r`rrb)rcs"rCrdrd6s&��A�A��A�C�A�D�Ar9c��W8XdR#V'd	V'gR#\P!V4P\P!V4P8H#)z3Check if two codec names are aliases for same codecTF)�codecs�lookup�namer�s&&rCr)r)6s;���}���U���=�=���#�#�v�}�}�U�';�'@�'@�@�@r9�€c� �V^8�dQhRRRR/#)r_r�rr`rrb)rcs"rCrdrdCs��&�&�&�&�T�&r9c�a�\V\4'd\M\o\;QJdV3RlV4F'dKR#	R#!V3RlV44#)z<Check if string (bytes or unicode) contains only 7-bit asciic3�,<"�TF	qS8x�K	R#5irGrb)r�r��rs& �rCr�� is_ascii_safe.<locals>.<genexpr>Fs����%�f��1�u�f�s�FT)r�r��_B80�_U80�all)r�rs&@rCr&r&Cs?����6�5�)�)��t�A��3�%�f�%�3�3�%�3�%�3�%�f�%�%�%r9c
�,�V^8�dQhRRRRRRRRRR	/#)
r_r�zstr | bytes�encodingr�r��source_encodingz
str | Noner`r�rb)rcs"rCrdrdIs:��&-�&-��&-��&-��&-� �	&-�
�&-r9c��V'gQh\V\4'd<V'd2\W14'g!VPV4P	V4#V#\V\
4'dVP	V4#\
W4h)a�Helper to normalize input to bytes.

:arg source:
    Source bytes/unicode to process.

:arg encoding:
    Target encoding (defaults to ``"utf-8"``).

:param param:
    Optional name of variable/noun to reference when raising errors

:param source_encoding:
    If this is specified, and the source is bytes,
    the source will be transcoded from *source_encoding* to *encoding*
    (via unicode).

:raises TypeError: if source is not str or bytes.

:returns:
    * unicode strings will be encoded using *encoding*, and returned.
    * if *source_encoding* is not specified, byte strings will be
      returned unchanged.
    * if *source_encoding* is specified, byte strings will be transcoded
      to *encoding*.
)r�r�r)r�r�r�r)r�r$r�r%s&&&&rCr2r2Isk��>�O�8��&�%� � ��=��#K�#K��=�=��1�8�8��B�B��
��&�#����}�}�X�&�&�
�f�
,�,r9c� �V^8�dQhRRRR/#�r_r�rr`r�rb)rcs"rCrdrdrs��-�-�v�-�3�-r9c��V'gQh\V\4'dV#\V\4'dVPV4#\	W4h)a�Helper to normalize input to unicode.

:arg source:
    source bytes/unicode to process.

:arg encoding:
    encoding to use when decoding bytes instances.

:param param:
    optional name of variable/noun to reference when raising errors.

:raises TypeError: if source is not str or bytes.

:returns:
    * returns unicode strings unchanged.
    * returns bytes strings decoded using *encoding*
)r�r�r�r�r�r�r$r�s&&&rCr4r4rsD��$�O�8��&�#����
��&�%� � ��}�}�X�&�&�
�f�
,�,r9c� �V^8�dQhRRRR/#r(rb)rcs"rCrdrd�s��-�-�&�-�c�-r9c��\V\4'dVPV4#\V\4'dV#\	W4h)a#Take in str or bytes, returns str.
leaves str alone, decodes bytes using specified encoding.

:param source: source unicode or bytes string
:param encoding: encoding to use when encoding unicode or decoding bytes
:param param: optional name of variable/noun to reference when raising errors
)r�r�r�r�rr*s&&&rCr3r3�s=���&�%� � ��}�}�X�&�&��&�#����
�
�f�
,�,r9z1.6z1.7)�
deprecated�removedc��\WRR7#)z'deprecated, use to_native_str() insteadrg)r�)r3)r�r$s&&rC�to_hash_strr0�s�����8�8r9�nonec�$�V^8�dQhRRRRRR/#)r_r�zstr | bytes | Noner1zbool | Noner`rb)rcs"rCrdrd�s$������%0���r9c�@�VR9gQh\V\4'dXVP4P4pV\9dR#V\
9dR#V\9dV#\RVRV:24h\V\4'dV#VfV#\V4#)zP
helper to convert value to boolean.
recognizes strings such as "true", "false"
TFz
unrecognized z value: )TFN)	r�r�lowerr��	_true_set�
_false_set�	_none_setr�r)r�r1r��cleans&&& rC�as_boolr9�s����&�&�&�&��%�)�*�*����
�#�#�%���I����J����I���K��=���x��y�A�B�B��%�������}�����;�r9Tc
�V�^RIHp\VR4'd$\VR4'dVP4pRP
T\\R4'd\P!4MR\\44\P!4\4\'d&\P!^ 4PR4M^4p\!V!VP#R44P%4^4# \dTPR	4pL�i;i)
z.generate prng seed value from system resources)�sha512�getstate�getrandbitsz{} {} {} {:.15f} {:.15f} {}�getpidNr�ri�)�hashlibr;�hasattrr<r@r=rc�osr>�id�object�timer1�has_urandom�urandomr�rar��	hexdigest)r�r;rs&  rC�genseedrH�s�����u�j�!�!�g�e�]�&C�&C�	/��N�N�$�E�
)�/�/�
��r�8�,�,��	�	��$�	�6�8���	�	����,7�K��
�
�2����i�(�Q��D� �v�d�k�k�'�*�+�5�5�7��<�<��)#�	/��%�%�g�.�E�	/�s�D	�	D(�'D(z
random.Randomc�Paa�S'g\#VV3Rlp\V!44#)z]return byte-string containing *count* number of randomly generated bytes, using specified rngc3�<"�SPS^,4p^pVS8d V^�,x�V^,pV^,
pK&R#5i)�N)r=)r�r�r�r+s  ��rC�helper�getrandbytes.<locals>.helper
sE���������
�+��
���%�i��$�,���a�K�E�
��F�A��s�AA)�_BEMPTYr�)r+r�rLsff rCr!r!�s ����������?�r9c�aaaa�S^8d\R4h\S4oS^8Xd\R4hS^8Xd
SS,#VVVV3Rlp\S\4'dRP	V!44#\V!44#)z|return string containing *count* number of chars/bytes, whose elements are drawn from specified charset, using specified rngzcount must be >= 0zalphabet must not be emptyc3�<"�SP^SS,4p^pVS8d'SVS,,x�VS,pV^,
pK-R#5i)�N)�	randrange)r�r��charsetr��lettersr+s  ����rCrL�getrandstr.<locals>.helper%sM�����
�
�a��%��0��
���%�i��%�'�/�*�*��g��E�
��F�A��s�AAr:)r�rVr�r�r�r�)r+rSr�rLrTsfff @rCr"r"s{���
�q�y��-�.�.��'�l�G��!�|��5�6�6��!�|��������'�3����w�w�v�x� � ����?�r9�42346789ABCDEFGHJKMNPQRTUVWXYZabcdefghjkmnpqrstuvwxyzz2.0z/passlib.pwd.genword() / passlib.pwd.genphrase())r-r.�replacementc�"�\\W4#)aGgenerate random password using given length & charset

:param size:
    size of password.

:param charset:
    optional string specified set of characters to draw from.

    the default charset contains all normal alphanumeric characters,
    except for the characters ``1IiLl0OoS5``, which were omitted
    due to their visual similarity.

:returns: :class:`!str` containing randomly generated password.

.. note::

    Using the default character set, on a OS with :class:`!SystemRandom` support,
    this function should generate passwords with 5.7 bits of entropy per character.
)r"r+)r�rSs&&rCr r 6s��2�c�7�)�)r9c�a�\;QJd#V3Rl\4F'dKR#	R#!V3Rl\44#)z4check if object follows the :ref:`password-hash-api`c3�<<"�TFp\SV4x�K	R#5irG�r@�r�r�objs& �rCr��#is_crypt_handler.<locals>.<genexpr>_�����=�n�d�w�s�D�!�!�n�r�FT)r"�_handler_attrs�r]sfrCr(r(\�.����3�=�n�=�3�3�=�3�=�3�=�n�=�=�=r9c�a�\;QJd#V3Rl\4F'dKR#	R#!V3Rl\44#)zOcheck if object appears to be a :class:`~passlib.context.CryptContext` instancec3�<<"�TFp\SV4x�K	R#5irGr[r\s& �rCr��#is_crypt_context.<locals>.<genexpr>or_r�FT)r"�_context_attrsrasfrCr'r'lrbr9c�N�RVP9;'d\VRR4RJ#)z_check if handler provides the optional :ref:`rounds information <rounds-attributes>` attributes�rounds�
min_roundsN��setting_kwds�getattr��handlers&rCr$r$xs2��	�G�(�(�(�	=�	=��G�\�4�0��<�r9c�N�RVP9;'d\VRR4RJ#)z[check if handler provides the optional :ref:`salt information <salt-attributes>` attributes�salt�
min_salt_sizeNrjrms&rCr%r%�s4��	�'�&�&�&�	@�	@��G�_�d�3�4�?�r9)�sha512_crypt�sha256_crypt�
sha1_crypt�bcrypt�	md5_crypt�
bsdi_crypt�	des_crypt)NNFNNF)�,r�rG)rr�N)rr�)r
)�true�t�yes�y�on�1�enable�enabled)�false�f�nor��off�0�disable�disabled)N�boolean)rrk�context_kwds�verifyrg�identify)�needs_update�	genconfig�genhashr��encryptr�)|�__conditional_annotations__rq�
__future__rrr�rur��mathrA�randomr��sysrD�timeitr��collections.abcrr�typingr�passlib.excrr�passlib.utils.binaryrr	r
rrr
rrrrrrr�passlib.utils.compatrrrrr�passlib.utils.decorrrrrr�__all__rar8�maxsizer/r5r,rNr�r��environrx�MAX_PASSWORD_SIZEr>�	Parameter�VAR_KEYWORDr|�VAR_POSITIONALrzr�r�r�rr�r.r*r�r�r6r�r�r�r�rr�rr�rrr)r r!r&r2r4r3r0�setr5r6r7r9r#�
default_timer�timerr1rFrEr@rH�SystemRandomr+�__annotations__�Randomr!r"�
_52charsetr r`r(rfr'r$r%)r�s@rC�<module>r�s����:�"�
�����	�
��
��
��.��>����� ����,��,��,��,��	,�
�,��
,��,��,��,��,��,��,��,��,��,� �!,�"�#,�$
�%,�&
�',�(�),�*�+,�,�-,�.�/,�0�1,�2�3,�4�5,�6�7,�8�9,�:�;,�<�=,�>�?,�@
�A,�B�C,�D�E,�F�G,�H�I,�J�K,�L�M,�N�O,�P�Q,�R�S,�T�U,�V�W,��^�t�y�y����%��+�,��	����'��

��
��

����
�
���'B�C�K�K�t�L��&�&�D� � �,�,���g�/�/�>�>�?��	9�S(�l3�4,�	8�n�b$�0(�(���G�H���G�H�M�
"�.�
��	���=�@(��'�.�.�w�7��B�
A���
��&�&-�R-�6-���u�5�9�6�9�

�I�J�	�
�M�
N�
���V���	��0
�	�	��������J�J�q�M��K�
=�>��,�,�.�C��.��-�-��	�
"�C��0�:D�
����A��
�z�*��
*�.��>���>����a���K��s� K�	K*�)K*

Youez - 2016 - github.com/yon3zu
LinuXploit