Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
B

¾[•ßlã@s&dZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
mZmZddlmZmZddlmZGdd	„d	ƒZGd
d„deƒZGdd
„d
eƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZ Gdd„deƒZ!Gd d!„d!eƒZ"Gd"d#„d#eƒZ#Gd$d%„d%eƒZ$Gd&d'„d'eƒZ%Gd(d)„d)eƒZ&Gd*d+„d+eƒZ'Gd,d-„d-eƒZ(Gd.d/„d/e ƒZ)Gd0d1„d1e ƒZ*Gd2d3„d3e ƒZ+Gd4d5„d5e ƒZ,Gd6d7„d7e ƒZ-Gd8d9„d9e ƒZ.Gd:d;„d;e ƒZ/Gd<d=„d=e ƒZ0Gd>d?„d?e ƒZ1Gd@dA„dAeƒZ2GdBdC„dCeƒZ3GdDdE„dEe3ƒZ4GdFdG„dGe4ƒZ5GdHdI„dIe3ƒZ6GdJdK„dKe3ƒZ7GdLdM„dMe3ƒZ8GdNdO„dOe3ƒZ9GdPdQ„dQeƒZ:GdRdS„dSe2ƒZ;GdTdU„dUe;ƒZ<GdVdW„dWe<ƒZ=GdXdY„dYe<ƒZ>GdZd[„d[e<ƒZ?Gd\d]„d]e<ƒZ@Gd^d_„d_e<ƒZAGd`da„dae<ƒZBGdbdc„dce<ƒZCGddde„dee<ƒZDGdfdg„dge;ƒZEGdhdi„dieƒZFGdjdk„dkeƒZGGdldm„dmeƒZHGdndo„doeHƒZIGdpdq„dqeHƒZJGdrds„dseHƒZKGdtdu„dueƒZLGdvdw„dweƒZMGdxdy„dyeƒZNGdzd{„d{eNƒZOdS)|z"
Fields that hold random numbers.
é)Úabsolute_importN)ÚNet)Úbytes_encodeÚchbÚ	plain_str)Úcorrupt_bitsÚ
corrupt_bytes)Úrangec@s.eZdZdZddd„Zdd„Zd	d
„ZeZdS)ÚRandomEnumerationaFiterate through a sequence in random order.
       When all the values have been drawn, if forever=1, the drawing is done again.  # noqa: E501
       If renewkeys=0, the draw will be in the same order, guaranteeing that the same  # noqa: E501
       number will be drawn in not less than the number of integers of the sequenceNércCsš||_||_||_t |¡|_d|_||d|_d}xd|>|jkrP|d7}q8W||_t	d|ddƒ|_
d|j
d|_t|jdƒ|_
d|_d|_dS)Nérréé)ÚforeverÚ	renewkeysÚinfÚrandomÚRandomÚrndÚ	sbox_sizeÚtopÚnÚminÚfsÚfsmaskÚmaxÚroundsÚturnsÚi)ÚselfrÚsupÚseedrrr©r"ú/build/wlanpi-profiler-CSvHZ8/wlanpi-profiler-1.0.7~rc2/debian/wlanpi-profiler/opt/wlanpi-profiler/lib/python3.7/site-packages/scapy/volatile.pyÚ__init__%szRandomEnumeration.__init__cCs|S)Nr")rr"r"r#Ú__iter__9szRandomEnumeration.__iter__csxˆjdksˆjdkrRˆjrRˆj ddˆjd¡ˆ_‡fdd„tˆjƒDƒˆ_	ˆjd7_x’ˆjdˆjkròˆjˆjA}ˆjd7_xNtˆj
ƒD]@}|ˆj@}|ˆjL}|ˆj	|ˆjN}||ˆjˆj>O}q˜W|ˆj
krbˆj|SqbWdˆ_ˆjst‚qWdS)Nrrrcsg|]}ˆj dˆj¡‘qS)r)rÚrandintr)Ú.0Ú_)rr"r#ú
<listcomp>@sz*RandomEnumeration.next.<locals>.<listcomp>)rrrrr&rZcnt_keyr	rZsboxrrrrrrÚ
StopIteration)rÚctr(Zlsbr")rr#Únext<s&



zRandomEnumeration.next)Nrr)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$r%r,Ú__next__r"r"r"r#r
s

r
c@sheZdZdd„Zdd„Zdd„Zdd„Zd	d
„ZdZdd
„Z	dd„Z
dd„Zdd„Zdd„Z
dd„ZdS)Ú
VolatileValuecCsd|jjS)Nz<%s>)Ú	__class__r-)rr"r"r#Ú__repr__UszVolatileValue.__repr__cCsdS)NÚr")rr"r"r#Ú
_command_argsXszVolatileValue._command_argscCsd|jj| ¡fS)Nz%s(%s))r3r-r6)rr"r"r#Úcommand[szVolatileValue.commandcCs8| ¡}t|tƒr| ¡n|}t|t|ƒƒs0dS||kS)NF)Ú_fixÚ
isinstancer2Útype)rÚotherÚxÚyr"r"r#Ú__eq__^s
zVolatileValue.__eq__cCs
||kS)Nr")rr;r"r"r#Ú__ne__eszVolatileValue.__ne__NcCs|dkrt|ƒ‚t| ¡|ƒS)N)Ú__setstate__Ú__getstate__)ÚAttributeErrorÚgetattrr8)rÚattrr"r"r#Ú__getattr__kszVolatileValue.__getattr__cCst| ¡ƒS)N)Ústrr8)rr"r"r#Ú__str__pszVolatileValue.__str__cCst| ¡ƒS)N)rr8)rr"r"r#Ú	__bytes__sszVolatileValue.__bytes__cCst| ¡ƒS)N)Úlenr8)rr"r"r#Ú__len__vszVolatileValue.__len__cCs
t |¡S)N)Úcopy)rr"r"r#rKyszVolatileValue.copycCsdS)Nr")rr"r"r#r8|szVolatileValue._fix)r-r.r/r4r6r7r>r?Ú__hash__rErGrHrJrKr8r"r"r"r#r2Tsr2c@seZdZdS)Ú	RandFieldN)r-r.r/r"r"r"r#rM€srMc@s¸eZdZdZdd„Zdd„Zdd„ZeZdd	„Zd
d„Z	dd
„Z
dd„Zdd„Zdd„Z
dd„ZeZdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*S)+Ú_RandNumeralz*Implements integer management in RandFieldcCst| ¡ƒS)N)Úintr8)rr"r"r#Ú__int__‡sz_RandNumeral.__int__cCst|ƒS)N)rO)rr"r"r#Ú	__index__Šsz_RandNumeral.__index__cCst| ¡ƒS)N)Úboolr8)rr"r"r#Ú__nonzero__sz_RandNumeral.__nonzero__cCs| ¡|S)N)r8)rr;r"r"r#Ú__add__‘sz_RandNumeral.__add__cCs|| ¡S)N)r8)rr;r"r"r#Ú__radd__”sz_RandNumeral.__radd__cCs| ¡|S)N)r8)rr;r"r"r#Ú__sub__—sz_RandNumeral.__sub__cCs|| ¡S)N)r8)rr;r"r"r#Ú__rsub__šsz_RandNumeral.__rsub__cCs| ¡|S)N)r8)rr;r"r"r#Ú__mul__sz_RandNumeral.__mul__cCs|| ¡S)N)r8)rr;r"r"r#Ú__rmul__ sz_RandNumeral.__rmul__cCs| ¡|S)N)r8)rr;r"r"r#Ú__floordiv__£sz_RandNumeral.__floordiv__cCs| ¡|kS)N)r8)rr;r"r"r#Ú__lt__§sz_RandNumeral.__lt__cCs| ¡|kS)N)r8)rr;r"r"r#Ú__le__ªsz_RandNumeral.__le__cCs| ¡|kS)N)r8)rr;r"r"r#Ú__ge__­sz_RandNumeral.__ge__cCs| ¡|kS)N)r8)rr;r"r"r#Ú__gt__°sz_RandNumeral.__gt__cCs| ¡|>S)N)r8)rr;r"r"r#Ú
__lshift__³sz_RandNumeral.__lshift__cCs| ¡|?S)N)r8)rr;r"r"r#Ú
__rshift__¶sz_RandNumeral.__rshift__cCs| ¡|@S)N)r8)rr;r"r"r#Ú__and__¹sz_RandNumeral.__and__cCs|| ¡@S)N)r8)rr;r"r"r#Ú__rand__¼sz_RandNumeral.__rand__cCs| ¡|BS)N)r8)rr;r"r"r#Ú__or__¿sz_RandNumeral.__or__cCs|| ¡BS)N)r8)rr;r"r"r#Ú__ror__Âsz_RandNumeral.__ror__N)r-r.r/r0rPrQrSÚ__bool__rTrUrVrWrXrYrZZ__div__r[r\r]r^r_r`rarbrcrdr"r"r"r#rN„s.rNcs8eZdZdZdZdZdd„Z‡fdd„Zdd„Z‡Z	S)	ÚRandNumz7Instances evaluate to random integers in selected rangercCs||_||_dS)N)rr)rrrr"r"r#r$ËszRandNum.__init__cs*|jjdkrd|j|jfStt|ƒ ¡S)Nrfzmin=%r, max=%r)r3r-rrÚsuperrfr6)r)r3r"r#r6ÏszRandNum._command_argscCst |j|jd¡S)Nr)rÚ	randrangerr)rr"r"r#r8ÔszRandNum._fix)
r-r.r/r0rrr$r6r8Ú
__classcell__r"r")r3r#rfÆsrfc@seZdZdd„ZdS)Ú	RandFloatcCst |j|j¡S)N)rÚuniformrr)rr"r"r#r8ÙszRandFloat._fixN)r-r.r/r8r"r"r"r#rjØsrjc@seZdZdd„ZdS)ÚRandBinFloatcCst dttdƒƒ¡dS)Nz!fér)ÚstructÚunpackÚbytesÚRandBin)rr"r"r#r8ÞszRandBinFloat._fixN)r-r.r/r8r"r"r"r#rlÝsrlc@s$eZdZdd„Zdd„Zdd„ZdS)ÚRandNumGammacCs||_||_dS)N)ÚalphaÚbeta)rrsrtr"r"r#r$ãszRandNumGamma.__init__cCsd|j|jfS)Nzalpha=%r, beta=%r)rsrt)rr"r"r#r6çszRandNumGamma._command_argscCsttt |j|j¡ƒƒS)N)rOÚroundrÚgammavariatersrt)rr"r"r#r8êszRandNumGamma._fixN)r-r.r/r$r6r8r"r"r"r#rrâsrrc@s$eZdZdd„Zdd„Zdd„ZdS)ÚRandNumGausscCs||_||_dS)N)ÚmuÚsigma)rrxryr"r"r#r$ïszRandNumGauss.__init__cCsd|j|jfS)Nzmu=%r, sigma=%r)rxry)rr"r"r#r6ószRandNumGauss._command_argscCsttt |j|j¡ƒƒS)N)rOrurÚgaussrxry)rr"r"r#r8öszRandNumGauss._fixN)r-r.r/r$r6r8r"r"r"r#rwîsrwc@s&eZdZd	dd„Zdd„Zdd„ZdS)
ÚRandNumExporcCs||_||_dS)N)ÚlambdÚbase)rr|r}r"r"r#r$ûszRandNumExpo.__init__cCs&d|j}|jdkr"|d|j7}|S)Nzlambd=%rrz	, base=%r)r|r})rÚretr"r"r#r6ÿs

zRandNumExpo._command_argscCs|jttt |j¡ƒƒS)N)r}rOrurÚexpovariater|)rr"r"r#r8szRandNumExpo._fixN)r)r-r.r/r$r6r8r"r"r"r#r{ús
r{cs2eZdZdZd	‡fdd„	Zdd„Zdd„Z‡ZS)
ÚRandEnumzRInstances evaluate to integer sampling without replacement from the given intervalNcs*||_t|||ƒ|_tt|ƒ ||¡dS)N)Ú_seedr
Úseqrgr€r$)rrrr!)r3r"r#r$szRandEnum.__init__cCs(d|j|jf}|jr$|d|j7}|S)Nzmin=%r, max=%rz	, seed=%r)rrr)rr~r"r"r#r6szRandEnum._command_argscCs
t|jƒS)N)r,r‚)rr"r"r#r8sz
RandEnum._fix)N)r-r.r/r0r$r6r8rir"r")r3r#r€	sr€c@seZdZdd„ZdS)ÚRandBytecCst |dd¡dS)Nréÿ)rfr$)rr"r"r#r$szRandByte.__init__N)r-r.r/r$r"r"r"r#rƒsrƒc@seZdZdd„ZdS)Ú	RandSBytecCst |dd¡dS)Ni€ÿÿÿé)rfr$)rr"r"r#r$!szRandSByte.__init__N)r-r.r/r$r"r"r"r#r… sr…c@seZdZdd„ZdS)Ú	RandShortcCst |dd¡dS)Nriÿÿ)rfr$)rr"r"r#r$&szRandShort.__init__N)r-r.r/r$r"r"r"r#r‡%sr‡c@seZdZdd„ZdS)Ú
RandSShortcCst |dd¡dS)Ni€ÿÿiÿ)rfr$)rr"r"r#r$+szRandSShort.__init__N)r-r.r/r$r"r"r"r#rˆ*srˆc@seZdZdd„ZdS)ÚRandIntcCst |dd¡dS)Nrlÿÿ)rfr$)rr"r"r#r$0szRandInt.__init__N)r-r.r/r$r"r"r"r#r‰/sr‰c@seZdZdd„ZdS)ÚRandSIntcCst |dd¡dS)Ni€iÿÿÿ)rfr$)rr"r"r#r$5szRandSInt.__init__N)r-r.r/r$r"r"r"r#rŠ4srŠc@seZdZdd„ZdS)ÚRandLongcCst |dd¡dS)Nrlÿÿÿÿ)rfr$)rr"r"r#r$:szRandLong.__init__N)r-r.r/r$r"r"r"r#r‹9sr‹c@seZdZdd„ZdS)Ú	RandSLongcCst |dd¡dS)Nlûÿÿÿlÿÿÿÿ)rfr$)rr"r"r#r$?szRandSLong.__init__N)r-r.r/r$r"r"r"r#rŒ>srŒc@seZdZdd„ZdS)ÚRandEnumBytecCst |dd¡dS)Nrr„)r€r$)rr"r"r#r$DszRandEnumByte.__init__N)r-r.r/r$r"r"r"r#rCsrc@seZdZdd„ZdS)Ú
RandEnumSBytecCst |dd¡dS)Ni€ÿÿÿr†)r€r$)rr"r"r#r$IszRandEnumSByte.__init__N)r-r.r/r$r"r"r"r#rŽHsrŽc@seZdZdd„ZdS)Ú
RandEnumShortcCst |dd¡dS)Nriÿÿ)r€r$)rr"r"r#r$NszRandEnumShort.__init__N)r-r.r/r$r"r"r"r#rMsrc@seZdZdd„ZdS)ÚRandEnumSShortcCst |dd¡dS)Ni€ÿÿiÿ)r€r$)rr"r"r#r$SszRandEnumSShort.__init__N)r-r.r/r$r"r"r"r#rRsrc@seZdZdd„ZdS)ÚRandEnumIntcCst |dd¡dS)Nrlÿÿ)r€r$)rr"r"r#r$XszRandEnumInt.__init__N)r-r.r/r$r"r"r"r#r‘Wsr‘c@seZdZdd„ZdS)ÚRandEnumSIntcCst |dd¡dS)Ni€iÿÿÿ)r€r$)rr"r"r#r$]szRandEnumSInt.__init__N)r-r.r/r$r"r"r"r#r’\sr’c@seZdZdd„ZdS)ÚRandEnumLongcCst |dd¡dS)Nrlÿÿÿÿ)r€r$)rr"r"r#r$bszRandEnumLong.__init__N)r-r.r/r$r"r"r"r#r“asr“c@seZdZdd„ZdS)Ú
RandEnumSLongcCst |dd¡dS)Nlûÿÿÿlÿÿÿÿ)r€r$)rr"r"r#r$gszRandEnumSLong.__init__N)r-r.r/r$r"r"r"r#r”fsr”c@s*eZdZdZd	dd„Zdd„Zdd„ZdS)
ÚRandEnumKeysz*Picks a random value from dict keys list. NcCs(t|ƒ|_t |dt|jƒd|¡dS)Nrr)ÚlistÚenumr€r$rI)rr—r!r"r"r#r$ns
zRandEnumKeys.__init__cCs"d|j}|jr|d|j7}|S)Nzenum=%rz	, seed=%r)r—r)rr~r"r"r#r6rs
zRandEnumKeys._command_argscCs|jt|jƒS)N)r—r,r‚)rr"r"r#r8yszRandEnumKeys._fix)N)r-r.r/r0r$r6r8r"r"r"r#r•ks
r•c@s$eZdZdd„Zdd„Zdd„ZdS)Ú
RandChoicecGs|stdƒ‚t|ƒ|_dS)Nz$RandChoice needs at least one choice)Ú	TypeErrorr–Ú_choice)rÚargsr"r"r#r$~szRandChoice.__init__cCsd |j¡S)Nz, )Újoinrš)rr"r"r#r6ƒszRandChoice._command_argscCst |j¡S)N)rÚchoicerš)rr"r"r#r8†szRandChoice._fixN)r-r.r/r$r6r8r"r"r"r#r˜}sr˜c@sFeZdZdZdefdd„Zdd„Zdd„Zd	d
„Zdd„Zd
d„Z	dS)Ú
RandStrings>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789NcCs |dkrtdƒ}||_||_dS)Ng{®Gáz„?)r{ÚsizeÚchars)rrŸr r"r"r#r$szRandString.__init__cCshd}t|jtƒr<|jjdks(|jjdkrJ|d|j ¡7}n|d|j7}|j|jkrd|d|j7}|S)Nr5g{®Gáz„?rzsize=%rz
, chars=%r)r9rŸr2r|r}r7r Ú_DEFAULT_CHARS)rr~r"r"r#r6“szRandString._command_argscCsBd}x8t|jƒD]*}t |j¡}|t|tƒr0|nt|ƒ7}qW|S)Nó)r	rŸrrr r9rFr)rÚsr(Zrdm_chrr"r"r#r8Ÿs
zRandString._fixcCst| ¡ƒS)N)rr8)rr"r"r#rG¦szRandString.__str__cCst| ¡ƒS)N)rr8)rr"r"r#rH©szRandString.__bytes__cCs| ¡|S)N)r8)rrr"r"r#rX¬szRandString.__mul__)
r-r.r/r¡r$r6r8rGrHrXr"r"r"r#ržŠsržcs&eZdZd‡fdd„	Zdd„Z‡ZS)rqNcs,tt|ƒj|d dd„tdƒDƒ¡ddS)Nr¢css|]}t|ƒVqdS)N)r)r'Úcr"r"r#ú	<genexpr>²sz#RandBin.__init__.<locals>.<genexpr>r)rŸr )rgrqr$rœr	)rrŸ)r3r"r#r$±szRandBin.__init__cCsLt|jtƒsd|jSt|jtƒr>|jjdkr>|jjdkr>dSd|j ¡S)Nzsize=%rg{®Gáz„?rr5)r9rŸr2r{r|r}r7)rr"r"r#r6´s
zRandBin._command_args)N)r-r.r/r$r6rir"r")r3r#rq°srqcs0eZdZ‡fdd„Z‡fdd„Zdd„Z‡ZS)ÚRandTermStringcs t|ƒ|_tt|ƒj|ddS)N)rŸ)rÚtermrgr¦r$)rrŸr§)r3r"r#r$Às
zRandTermString.__init__csd tt|ƒ ¡d|jf¡S)Nz, zterm=%r)rœrgr¦r6r§)r)r3r"r#r6ÄszRandTermString._command_argscCst |¡|jS)N)rqr8r§)rr"r"r#r8ÈszRandTermString._fix)r-r.r/r$r6r8rir"r")r3r#r¦¿sr¦c@s,eZdZdZefdd„Zdd„Zdd„ZdS)	ÚRandIPz	0.0.0.0/0cCst |¡t|ƒ|_dS)N)ržr$rÚip)rZ
iptemplater"r"r#r$Ïs
zRandIP.__init__cCs|jj|jkrdSd|jjS)Nr5z
iptemplate=%r)r©ÚreprÚ_DEFAULT_IPTEMPLATE)rr"r"r#r6ÓszRandIP._command_argscCs
|j ¡S)N)r©r)rr"r"r#r8ØszRandIP._fixN)r-r.r/r«r$r6r8r"r"r"r#r¨Ìsr¨c@s&eZdZd	dd„Zdd„Zdd„ZdS)
ÚRandMACÚ*cCs¦t |¡||_|d7}| d¡}d|_xxtdƒD]l}||dkrJtƒ}nDd||kr€|| d¡\}}tt|dƒt|dƒƒ}nt||dƒ}|j|f7_q2WdS)Nz
:*:*:*:*:*ú:r"ér­ú-é)	ržr$Ú	_templateÚsplitÚmacr	rƒrfrO)rÚtemplaterÚvr<r=r"r"r#r$Ýs

zRandMAC.__init__cCs|jdkrdSd|jS)Nr­r5ztemplate=%r)r²)rr"r"r#r6ís
zRandMAC._command_argscCs
d|jS)Nz%02x:%02x:%02x:%02x:%02x:%02x)r´)rr"r"r#r8òszRandMAC._fixN)r­)r-r.r/r$r6r8r"r"r"r#r¬Üs
r¬c@s&eZdZd	dd„Zdd„Zdd„ZdS)
ÚRandIP6ú**cCsÚt |¡||_|j d¡|_xœt|jƒD]Ž\}}|r*|dkr@q*d|krX| d¡\}}n|dkrjd}}n|}}|szd}|s‚d}||krœt|dƒ|j|<q*tt|dƒt|dƒƒ|j|<q*Wd|jk|_|j 	d¡|_
dS)	Nr®z**r°r­r5Ú0Zffffr±)ržr$Útmplr³ÚspÚ	enumeraterOrfÚvariableÚcountÚmulti)rZip6templaterr¶ÚaÚbr"r"r#r$÷s(

 zRandIP6.__init__cCs|jdkrdSd|jS)Nz**r5zip6template=%r)rº)rr"r"r#r6s
zRandIP6._command_argsc	Cs*|j}g}xæt|jƒD]Ø\}}|dkr¢|d8}dt|jƒ|dt|ƒ|}d|jkrb|d7}|sl|jrxt d|¡}xtt|ƒD]}| dt dd¡¡q‚Wqt	|t
ƒr¼| d|¡q|dkrÐ| d¡q|sà| d¡q| d|¡qWt|ƒd	kr
| d¡|d
dkr d|d
<d |¡S)Nz**rér5rz%04xiÿÿr¹é	éÿÿÿÿr®)
r¿r¼r»rIr½rr&r	Úappendr9rfÚremoverœ)rZnbmr©rrZremainÚjr"r"r#r8s0"



zRandIP6._fixN)r¸)r-r.r/r$r6r8r"r"r"r#r·ös
r·c@s<eZdZdedƒedƒfdd„Zdd„Zdd	„Zd
d„ZdS)ÚRandOIDNgš™™™™™¹?g{®Gáz„?cCsvt |¡||_|dk	r`| d¡}x<tt|ƒƒD],}d||kr0ttt|| d¡ƒƒ||<q0W||_	||_
||_dS)NÚ.r°)ržr$Úori_fmtr³r	rIÚtupleÚmaprOÚfmtÚdepthÚidnum)rrÍrÎrÏrr"r"r#r$2s

 zRandOID.__init__cCsÐg}|jr| d|j¡t|jtƒs8| d|j¡n8t|jtƒr\|jjdks\|jjdkrp| d|j 	¡¡t|j
tƒsŽ| d|j
¡n8t|j
tƒr²|j
jdks²|j
jdkrÆ| d|j
 	¡¡d	 |¡S)
Nzfmt=%rzdepth=%rgš™™™™™¹?rzdepth=%szidnum=%rg{®Gáz„?zidnum=%sz, )rÍrÅrÊr9rÎr2r{r|r}r7rÏrœ)rr~r"r"r#r6>szRandOID._command_argscCs,|jdkrd|jjSd|jj|jfSdS)Nz<%s>z	<%s [%s]>)rÊr3r-)rr"r"r#r4Qs
zRandOID.__repr__cs¼ˆjdkr,d ‡fdd„tdˆjƒDƒ¡Sg}x|ˆjD]r}|dkrV| tˆjƒ¡q8|dkr€|‡fdd„tdˆjƒDƒ7}q8t|tƒr | tt	j
|Žƒ¡q8| |¡q8Wd |¡SdS)	NrÉc3s|]}tˆjƒVqdS)N)rFrÏ)r'r()rr"r#r¥YszRandOID._fix.<locals>.<genexpr>rr­z**csg|]}tˆjƒ‘qSr")rFrÏ)r'r)rr"r#r)`sz RandOID._fix.<locals>.<listcomp>)rÍrœr	rÎrÅrFrÏr9rËrrh)rÚoidrr")rr#r8Ws
""
zRandOID._fix)r-r.r/r{r$r6r4r8r"r"r"r#rÈ1srÈc@sheZdZddd„Zdd„Zdddd	d
ddd
dddddddœZedd„ƒZedd„ƒZdd„Z	dd„Z
dS)Ú
RandRegExpç333333Ó?cCs||_||_dS)N)Ú_regexpÚ_lambda)rÚregexpZlambda_r"r"r#r$iszRandRegExp.__init__cCs&d|j}|jdkr"|d|j7}|S)Nz	regexp=%rg333333Ó?z, lambda_=%r)rÓrÔ)rr~r"r"r#r6ms

zRandRegExp._command_argsz[a-zA-Z0-9]z[a-zA-Z]z[-]z[ 	]z[-]z[0-9]z[!-~]z[a-z]z[ -~]z&[!"\#$%&'()*+,\-./:;<=>?@\[\\\]^_{|}~]z[ 	
]z[A-Z]z[A-Za-z0-9_]z[A-Fa-f0-9])z	[:alnum:]z	[:alpha:]z	[:ascii:]z	[:blank:]z	[:cntrl:]z	[:digit:]z	[:graph:]z	[:lower:]z	[:print:]z	[:punct:]z	[:space:]z	[:upper:]z[:word:]z
[:xdigit:]csôd}|o|ddk}x²| d¡}|dkr*P|dksB|t|ƒdkrfd}|rX|dd…}qÄ|dd…}q||d}||d}d tttt|ƒt|ƒdƒƒ¡}|d|d…|||dd…}qW||‰|rðd ‡fdd„td	ƒDƒ¡‰ˆS)
Nr5rú^r°rrÄc3s"|]}t|ƒˆkrt|ƒVqdS)N)Úchr)r'r<)Úresr"r#r¥™sz+RandRegExp.choice_expand.<locals>.<genexpr>r)ÚfindrIrœrÌr×r	Úord)r£ÚmÚinvertÚpZc1Úc2Úrngr")rØr#Ú
choice_expand„s&
"(zRandRegExp.choice_expandcCs^d}d}xN|D]D}t|tƒr”|dkrL|d}|t |dd…||¡7}t |dd…|¡}x$t|ƒD]\}}||krj|||<qjW||7}d}qt|tƒr$|\}}	|dkrÂ|||	d7}n`|dkrÐ|	}nR|dkrV|dkrt |	¡}
|t |
dd…|¡7}n|t |g||¡7}d}q|dkrJ|t |g||¡7}d}q|t|ƒ7}qW|S)Nr5rÚciteÚrepeatr)	r9r–rÑÚ	stack_fixr¼rËrrrF)ÚlstÚindexÚrÚmulÚeÚfrÚidxÚkindÚvalr¤r"r"r#rãœs<




zRandRegExp.stack_fixcCsždg}g}|}d}|j}x"|j ¡D]\}}| ||¡}q$Wt|ƒ}d}	x>||krˆ||}
|d7}|
dkr„|g}|d |¡qL|
dkrÐ|d}|d}t|tƒsºd|gf}||d<n|d |¡|g}qL|
dkr|dd}t|tƒr|d |¡| |¡|d}qL|
d	ks(|
d
krB|g}|d |¡d}	qL|
dkrˆ|d}t 	d
 
| ¡dd…¡¡}
| tt
|
ƒŽ¡d}	qL|
dkrD|d}d
 
| ¡dd…¡}| ¡}d|krât|ƒ}| |g|g|¡n\| d¡\}}|súd}|rtt|ƒt|ƒƒ}nt|jt|ƒd}| d|f¡| |¡d}	qL|
dkrš||}
|
dkrltddƒ}
n|
dkr†dt|
ƒdf}
| |
¡|d7}qL|	s¬| |
¡qL|
dkræ| ¡}| |g|gtt |j¡ƒd¡qL|
dkr| ¡}| |g|gtt |j¡ƒ¡qL|
dkr>t dd¡r†| ¡qL|
dkrf| tdd„td ƒDƒŽ¡qL|
d!ks†|
d"kr|qL| |
¡qLWt |dd…|¡S)#NrTrú(ú|rÄrú)ú[Ú{Fú]r5Ú}ú,r¹)r}râú\r£ú ú	Ú
0123456789ráé0ú+r­ú?rÉcSsg|]}t|ƒ‘qSr")r×)r'r<r"r"r#r)sz#RandRegExp._fix.<locals>.<listcomp>rú$rÖ)rÓÚspecial_setsÚitemsÚreplacerIrÅr9rËrÑràrœÚpopr˜r–rOr³rfr{rÔrÚrrr&r	rã)rÚstackråÚcurrentrrÕÚkr¶ÚlnZinterpr¤rÝÚchrÚnumrèrZnum_minZnum_maxr"r"r#r8Âsž















(
$


zRandRegExp._fixcCsd|jj|jfS)Nz	<%s [%r]>)r3r-rÓ)rr"r"r#r4szRandRegExp.__repr__N)rÒ)r-r.r/r$r6rýÚstaticmethodràrãr8r4r"r"r"r#rÑhs(
&WrÑc@seZdZdS)ÚRandSingularityN)r-r.r/r"r"r"r#rsrcs4eZdZedd„ƒZ‡fdd„Z‡fdd„Z‡ZS)ÚRandSingNumcsTd‰|dkrd}|dkr"|}d‰tt |¡t d¡ƒd}‡fdd„t|ƒDƒS)NrrrÄrcsh|]}ˆd|’qS)rr")r'r)Úsignr"r#ú	<setcomp>+sz0RandSingNum.make_power_of_two.<locals>.<setcomp>)rOÚmathÚlogr	)ÚendZend_nr")r
r#Úmake_power_of_two"szRandSingNum.make_power_of_twocs¾||_||_d||t||dƒh}|| |¡O}|| |¡O}x,| ¡D] }| |d¡| |d¡qJWx0| ¡D]$}||kr|ksxn| |¡qxWtt|ƒj	|Ž|j
 ¡dS)Nrrr)Ú_mnÚ_mxrOrrKÚaddrÆrgr	r$ršÚsort)rÚmnZmxZsingr)r3r"r#r$-szRandSingNum.__init__cs*|jjdkrd|j|jfStt|ƒ ¡S)Nr	zmn=%r, mx=%r)r3r-rrrgr	r6)r)r3r"r#r6<szRandSingNum._command_args)r-r.r/rrr$r6rir"r")r3r#r	!sr	c@seZdZdd„ZdS)ÚRandSingBytecCst |dd¡dS)Nrr„)r	r$)rr"r"r#r$CszRandSingByte.__init__N)r-r.r/r$r"r"r"r#rBsrc@seZdZdd„ZdS)Ú
RandSingSBytecCst |dd¡dS)Ni€ÿÿÿr†)r	r$)rr"r"r#r$HszRandSingSByte.__init__N)r-r.r/r$r"r"r"r#rGsrc@seZdZdd„ZdS)Ú
RandSingShortcCst |dd¡dS)Nriÿÿ)r	r$)rr"r"r#r$MszRandSingShort.__init__N)r-r.r/r$r"r"r"r#rLsrc@seZdZdd„ZdS)ÚRandSingSShortcCst |dd¡dS)Ni€ÿÿiÿ)r	r$)rr"r"r#r$RszRandSingSShort.__init__N)r-r.r/r$r"r"r"r#rQsrc@seZdZdd„ZdS)ÚRandSingIntcCst |dd¡dS)Nrlÿÿ)r	r$)rr"r"r#r$WszRandSingInt.__init__N)r-r.r/r$r"r"r"r#rVsrc@seZdZdd„ZdS)ÚRandSingSIntcCst |dd¡dS)Ni€iÿÿÿ)r	r$)rr"r"r#r$\szRandSingSInt.__init__N)r-r.r/r$r"r"r"r#r[src@seZdZdd„ZdS)ÚRandSingLongcCst |dd¡dS)Nrlÿÿÿÿ)r	r$)rr"r"r#r$aszRandSingLong.__init__N)r-r.r/r$r"r"r"r#r`src@seZdZdd„ZdS)Ú
RandSingSLongcCst |dd¡dS)Nlûÿÿÿlÿÿÿÿ)r	r$)rr"r"r#r$fszRandSingSLong.__init__N)r-r.r/r$r"r"r"r#resrcs4eZdZ‡fdd„Zdd„Zdd„Zdd„Z‡ZS)	ÚRandSingStringc6s„ddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d-d1d2d3d4d5g6}tt|ƒj|ŽdS)6Nr5z%xz%%z%sz%iz%nz%x%x%x%x%x%x%x%x%xz*%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%sú%z%%%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAssÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿss€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                a\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\a((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../a////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////a${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}${HOME}z
 or 1=1 --z' or 1=1 --z" or 1=1 --z
 or 1=1; #z' or 1=1; #z" or 1=1; #z;reboot;z	$(reboot)z`reboot`zindex.php%00óz%00rõz=../../../../../../../../../../../../../../../../../etc/passwdz¾%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwda4%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252f%252e%252e%252fboot.inizª..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afetc/passwdz¨..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afboot.iniz//etc/passwdz;..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\boot.inizAUX:zCLOCK$zCOM:zCON:zLPT:zLST:zNUL:z
C:\CON\CONzC:\boot.iniz\\myserver\sharezfoo.exe:zfoo.exe\)rgrr$)rZchoices_list)r3r"r#r$ksnzRandSingString.__init__cCsdS)Nr5r")rr"r"r#r6¤szRandSingString._command_argscCst| ¡ƒS)N)rFr8)rr"r"r#rG§szRandSingString.__str__cCst| ¡ƒS)N)rr8)rr"r"r#rHªszRandSingString.__bytes__)r-r.r/r$r6rGrHrir"r")r3r#rjs9rc@s$eZdZdd„Zdd„Zdd„ZdS)ÚRandPoolcGsF||_g}x0|D](}d}t|tƒr*|\}}||g|7}qW||_dS)zIEach parameter is a volatile object or a couple (volatile object, weight)rN)Ú_argsr9rËÚ_pool)rr›ÚpoolrÝÚwr"r"r#r$¯s

zRandPool.__init__cCsVg}xF|jD]<}t|tƒr:| d|d ¡|df¡q| | ¡¡qWd |¡S)Nz(%s, %r)rrz, )r!r9rËrÅr7rœ)rr~rÝr"r"r#r6ºs
 zRandPool._command_argscCst |j¡}| ¡S)N)rrr"r8)rrær"r"r#r8Ãsz
RandPool._fixN)r-r.r/r$r6r8r"r"r"r#r ®s	r c	@sdeZdZdZdZe d e d¡e d¡e d¡¡ej¡Z	dddd	gZ
ddd„Zd
d„Zdd„Z
d
S)ÚRandUUIDaJGenerates a random UUID.

    By default, this generates a RFC 4122 version 4 UUID (totally random).

    See Python's ``uuid`` module documentation for more information.

    Args:
        template (optional): A template to build the UUID from. Not valid with
                             any other option.
        node (optional): A 48-bit Host ID. Only valid for version 1 (where it
                         is optional).
        clock_seq (optional): An integer of up to 14-bits for the sequence
                              number. Only valid for version 1 (where it is
                              optional).
        namespace: A namespace identifier, which is also a UUID. Required for
                   versions 3 and 5, must be omitted otherwise.
        name: string, required for versions 3 and 5, must be omitted otherwise.
        version: Version of UUID to use (1, 3, 4 or 5). If omitted, attempts to
                 guess which version to generate, defaulting to version 4
                 (totally random).

    Raises:
        ValueError: on invalid constructor arguments
    z4([0-9a-f]{{{0}}}|\*|[0-9a-f]{{{0}}}:[0-9a-f]{{{0}}})z+^{0}-?{1}-?{1}-?{2}{2}-?{2}{2}{2}{2}{2}{2}$rÂrmrrr
éNcCsö||_||_d|_d|_d|_d|_d|_d|_d|_|r|sP|sP|sP|sP|rXtdƒ‚t	j
 |¡}|rr| ¡}ntdƒ‚t
gtgdtgd}g}	xjt|ƒD]^\}
}|dkr¾||
ƒ}n8d|krì| d¡\}
}tt|
dƒt|dƒƒ}n
t|dƒ}|	 |¡q¢Wt|	ƒ|_nâ|r4|t	jkr,tdƒ‚n||_n.|s@|rHd	|_n|r\|r\d
|_nd|_|jd	kr|sz|r‚tdƒ‚||_||_nb|jd
krÆ|s¨|r¸td |j¡ƒ‚||_||_n,|jdkrò|sê|sê|sê|ròtdƒ‚dS)Nz6UUID template must be the only parameter, if specifiedzUUID template is invalidrrÂr­r®r±zversion is not supportedrr&rmz1namespace and name may not be used with version 1)r
r&z2node and clock_seq may not be used with version {}z†node, clock_seq, node and clock_seq may not be used with version 4. If you did not specify version, you need to specify it explicitly.)r²Ú_ori_versionÚ
uuid_templateÚnodeÚ	clock_seqÚ	namespaceÚnameÚversionÚ
ValueErrorr%Ú_REGÚmatchÚgroupsr‰r‡rƒr¼r³rfrOrÅrËÚVERSIONSÚformat)rrµr)r*r+r,r-ÚtmpZrnd_fr(rÚtrìZminiZmaxir"r"r#r$ìsd



zRandUUID.__init__cCs’g}|jr| d|j¡|jr0| d|j¡|jrF| d|j¡|jr\| d|j¡|jrr| d|j¡|jrˆ| d|j¡d |¡S)Nztemplate=%rznode=%rzclock_seq=%rznamespace=%rzname=%rz
version=%rz, )r²rÅr)r*r+r,r'rœ)rr~r"r"r#r67szRandUUID._command_argscCs‚|jrt d|j¡S|jdkr0t |j|j¡S|jdkrJt |j|j	¡S|jdkr\t 
¡S|jdkrvt |j|j	¡Stdƒ‚dS)Nz,%08x%04x%04x%02x%02x%02x%02x%02x%02x%02x%02xrr
rmr&zUnhandled version)
r(ÚuuidÚUUIDr-Úuuid1r)r*Úuuid3r+r,Úuuid4Úuuid5r.)rr"r"r#r8Gs




z
RandUUID._fix)NNNNNN)r-r.r/r0Z_BASEÚreÚcompiler3ÚIr/r2r$r6r8r"r"r"r#r%Ès
Jr%c@s&eZdZddd„Zdd„Zdd„ZdS)	ÚAutoTimeNcCs>||_||_|dk	r||_n|dkr,d|_nt ¡||_dS)Nr)Ú_baseÚ	_ori_diffÚdiffÚtime)rr}rBr"r"r#r$[szAutoTime.__init__cCs:g}|jr| d|j¡|jr0| d|j¡d |¡S)Nzbase=%rzdiff=%rz, )r@rÅrArœ)rr~r"r"r#r6fszAutoTime._command_argscCst ¡|jS)N)rCrB)rr"r"r#r8nsz
AutoTime._fix)NN)r-r.r/r$r6r8r"r"r"r#r?Zs
r?c@seZdZdd„ZdS)ÚIntAutoTimecCstt ¡|jƒS)N)rOrCrB)rr"r"r#r8sszIntAutoTime._fixN)r-r.r/r8r"r"r"r#rDrsrDcs&eZdZd‡fdd„	Zdd„Z‡ZS)ÚZuluTimercstt|ƒj|ddS)N)rB)rgrEr$)rrB)r3r"r#r$xszZuluTime.__init__cCst dt t ¡|j¡¡S)Nz
%y%m%d%H%M%SZ)rCÚstrftimeÚgmtimerB)rr"r"r#r8{sz
ZuluTime._fix)r)r-r.r/r$r8rir"r")r3r#rEwsrEcs&eZdZd‡fdd„	Zdd„Z‡ZS)ÚGeneralizedTimercstt|ƒj|ddS)N)rB)rgrHr$)rrB)r3r"r#r$szGeneralizedTime.__init__cCst dt t ¡|j¡¡S)Nz
%Y%m%d%H%M%SZ)rCrFrGrB)rr"r"r#r8„szGeneralizedTime._fix)r)r-r.r/r$r8rir"r")r3r#rH€srHc@s(eZdZdZdd„Zdd„Zdd„ZdS)	ÚDelayedEvalz. Example of usage: DelayedEval("time.time()") cCs
||_dS)N)Úexpr)rrJr"r"r#r$ŒszDelayedEval.__init__cCs
d|jS)Nzexpr=%r)rJ)rr"r"r#r6szDelayedEval._command_argscCs
t|jƒS)N)ÚevalrJ)rr"r"r#r8’szDelayedEval._fixN)r-r.r/r0r$r6r8r"r"r"r#rI‰srIc@s&eZdZddd„Zdd„Zdd	„Zd
S)ÚIncrementalValuerrrÄcCs||_|_||_||_dS)N)ÚstartrìÚstepÚrestart)rrMrNrOr"r"r#r$—szIncrementalValue.__init__cCsXg}|jr| d|j¡|jdkr4| d|j¡|jdkrN| d|j¡d |¡S)Nzstart=%rrzstep=%rrÄz
restart=%rz, )rMrÅrNrOrœ)rr~r"r"r#r6œs

zIncrementalValue._command_argscCs0|j}|j|jkr|j|_n|j|j7_|S)N)rìrOrMrN)rr¶r"r"r#r8¦s

zIncrementalValue._fixN)rrrÄ)r-r.r/r$r6r8r"r"r"r#rL–s

rLc@s&eZdZd	dd„Zdd„Zdd„ZdS)
ÚCorruptedBytesç{®Gáz„?NcCs||_||_||_dS)N)r£rÝr)rr£rÝrr"r"r#r$°szCorruptedBytes.__init__cCsNg}| d|j¡|jdkr.| d|j¡|jrD| d|j¡d |¡S)Nzs=%rg{®Gáz„?zp=%rzn=%rz, )rÅr£rÝrrœ)rr~r"r"r#r6µs
zCorruptedBytes._command_argscCst|j|j|jƒS)N)rr£rÝr)rr"r"r#r8¾szCorruptedBytes._fix)rQN)r-r.r/r$r6r8r"r"r"r#rP¯s
	rPc@seZdZdd„ZdS)Ú
CorruptedBitscCst|j|j|jƒS)N)rr£rÝr)rr"r"r#r8ÃszCorruptedBits._fixN)r-r.r/r8r"r"r"r#rRÂsrR)Pr0Ú
__future__rrKrrCrr<r6rnZscapy.base_classesrZscapy.compatrrrZscapy.utilsrrZscapy.modules.six.movesr	r
Úobjectr2rMrNrfrjrlrrrwr{r€rƒr…r‡rˆr‰rŠr‹rŒrrŽrrr‘r’r“r”r•r˜ržrqr¦r¨r¬r·rÈrÑrr	rrrrrrrrrr r%r?rDrErHrIrLrPrRr"r"r"r#Ú<module>
s5,B
&
;76!D