ROOTPLOIT
Server: LiteSpeed
System: Linux server71.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64
User: niphet (1079)
PHP: 5.3.29
Disabled: NONE
Upload Files
File: //lib64/python3.6/__pycache__/_pydecimal.cpython-36.opt-2.pyc
3


 \T$@sFdddddddddd	d
ddd
ddddddddddddddddddd d!d"d#g$ZeZd$Zd%Zd&Zd'd(lZd'd(lZd'd(l	Z	yd'd)l
mZedd*Z
Wnek
rd+d,Z
YnXdZdZdZdZdZdZdZdZd-Ze	jdkrd1Zd1ZdZnd2Zd2ZdZeed0ZGd3ddeZGd4ddeZGd5ddeZ Gd6dde Z!Gd7d	d	ee"Z#Gd8dde Z$Gd9dde e"Z%Gd:d
d
eZ&Gd;dde Z'Gd<ddeZ(Gd=ddeZ)Gd>d
d
e&e(Z*Gd?dde&e(e)Z+Gd@ddee,Z-ee#e&e*e(e+e e)e-g	Z.e!e e$e e%e e'e iZ/eeeeeeeefZ0yd'd(l1Z1Wn.ek
rdGdAdBdBe2Z3e3Z1[3YnXy
e1j4Wn>e5k
re6e1j7dCre1j7`8dDdZ9dEdZ:Yn6Xe1j4Z4e6e4dCre4`8e4fdFdZ:e4fdGdZ9[1[4ddHdZ;GdIdde2Z<ddKdLZ=ej>j?e<GdMdNdNe2Z@GdOdde2ZAGdPdQdQe2ZBddRdSZCeDjEZFdTdUZGdVdWZHdXdYZIdZd[ZJdd]d^ZKd_d`ZLdadbZMGdcdddde2ZNeNjOZPddedfZQdgdhZRdidjZSdkdldmdndodpdqdrdsdt	fdudvZTddwdxZUddydzZVeAd{ee#e*e ggd|dd0d'd}ZWeAd~ee#e*e ee+ggdZXeAd~eggdZYd'd(lZZZeZj[deZj\eZj]Bj^Z_eZj[dj^Z`eZj[dj^ZaeZj[deZj\eZjbBZc[Zyd'd(ldZeWnek
rYnXdddZfddZgddZhdddZiddZjddZke<dZle<dZme<dZne<d'Zoe<d0Zpe<dZqelemfZre	jsjtZue	jsjvZwe	jsjxZyezdreud.euZ{[	d(S)DecimalContextDecimalTupleDefaultContextBasicContextExtendedContextDecimalExceptionClampedInvalidOperationDivisionByZeroInexactRounded	SubnormalOverflow	UnderflowFloatOperationDivisionImpossibleInvalidContextConversionSyntaxDivisionUndefined
ROUND_DOWN
ROUND_HALF_UPROUND_HALF_EVEN
ROUND_CEILINGROUND_FLOORROUND_UPROUND_HALF_DOWN
ROUND_05UP
setcontext
getcontextlocalcontextMAX_PRECMAX_EMAXMIN_EMIN	MIN_ETINYHAVE_THREADSZdecimalz1.70z2.4.2N)
namedtuplezsign digits exponentcGs|S)N)argsr'r'"/usr/lib64/python3.6/_pydecimal.py<lambda>sr*T?lNZoi@Tc@seZdZddZdS)rcGsdS)Nr')selfcontextr(r'r'r)handleszDecimalException.handleN)__name__
__module____qualname__r0r'r'r'r)rsc@seZdZdS)rN)r1r2r3r'r'r'r)rs
c@seZdZddZdS)r	cGs,|r(t|dj|djdd}|j|StS)Nr%nT)_dec_from_triple_sign_int_fix_nan_NaN)r.r/r(ansr'r'r)r0s
zInvalidOperation.handleN)r1r2r3r0r'r'r'r)r	sc@seZdZddZdS)rcGstS)N)r9)r.r/r(r'r'r)r0szConversionSyntax.handleN)r1r2r3r0r'r'r'r)rsc@seZdZddZdS)r
cGst|S)N)_SignedInfinity)r.r/signr(r'r'r)r0szDivisionByZero.handleN)r1r2r3r0r'r'r'r)r
s
c@seZdZddZdS)rcGstS)N)r9)r.r/r(r'r'r)r0szDivisionImpossible.handleN)r1r2r3r0r'r'r'r)rsc@seZdZddZdS)rcGstS)N)r9)r.r/r(r'r'r)r0)szDivisionUndefined.handleN)r1r2r3r0r'r'r'r)r!sc@seZdZdS)rN)r1r2r3r'r'r'r)r,s
c@seZdZddZdS)rcGstS)N)r9)r.r/r(r'r'r)r0CszInvalidContext.handleN)r1r2r3r0r'r'r'r)r8sc@seZdZdS)rN)r1r2r3r'r'r'r)rFs
c@seZdZdS)r
N)r1r2r3r'r'r'r)r
Rs	c@seZdZddZdS)rcGs|jttttfkrt|S|dkrR|jtkr4t|St|d|j|j	|jdS|dkr|jt
krlt|St|d|j|j	|jdSdS)Nr%9r-)roundingrrrrr;rr5precEmaxr)r.r/r<r(r'r'r)r0ss


zOverflow.handleN)r1r2r3r0r'r'r'r)r]sc@seZdZdS)rN)r1r2r3r'r'r'r)rs
c@seZdZdS)rN)r1r2r3r'r'r'r)rs
c@seZdZefddZdS)
MockThreadingcCs
|jtS)N)modules	__xname__)r.sysr'r'r)localszMockThreading.localN)r1r2r3rDrEr'r'r'r)rAsrA__decimal_context__cCs,|tttfkr|j}|j|tj_dS)N)rrrcopyclear_flags	threadingcurrent_threadrF)r/r'r'r)rscCs4y
tjjStk
r.t}|tj_|SXdS)N)rIrJrFAttributeErrorr)r/r'r'r)rs

cCs,y|jStk
r&t}||_|SXdS)N)rFrKr)_localr/r'r'r)rscCs(|tttfkr|j}|j||_dS)N)rrrrGrHrF)r/rLr'r'r)rscCs|dkrt}t|S)N)r_ContextManager)Zctxr'r'r)rs$c
@seZdZdZdddZed	d
ZddZd
dZdddZ	ddZ
ddZddZdddZ
dddZdddZdddZddd Zdd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zdd,d-Zdd.d/Zdd0d1Zdd2d3Zdd5d6Zdd7d8ZeZdd9d:Zdd;d<Zdd=d>Z e Z!dd?d@Z"dAdBZ#ddCdDZ$ddEdFZ%d	dGdHZ&d
dIdJZ'ddKdLZ(ddMdNZ)d
dOdPZ*ddQdRZ+dSdTZ,dUdVZ-e-Z.dWdXZ/e0e/Z/dYdZZ1e0e1Z1d[d\Z2d]d^Z3d_d`Z4dadbZ5dcddZ6dedfZ7dgdhZ8didjZ9dkdlZ:dmdnZ;dodpZ<dqdrZ=e>e6e7e8e9e:e;e<e=dsZ?ddtduZ@dvdwZAdxdyZBddzd{ZCdd|d}ZDd~dZEdddZFdddZGdddZHdddZIdddZJddZKddZLdddZMdddZNeNZOdddZPdddZQdddZRddZSddZTddZUddZVdddZWdddZXdddZYddZZddZ[dddZ\d ddZ]ddZ^ddZ_ddZ`ddZad!ddZbddZcddZdddZed"ddZfddZgddÄZhd#ddńZiddDŽZjd$ddɄZkd%dd˄Zldd̈́ZmddτZnd&ddфZod'ddӄZpd(ddՄZqd)ddׄZrd*ddلZsd+ddۄZtd,dd݄Zud-dd߄Zvd.ddZwd/ddZxddZyd0ddZzd1ddZ{d2ddZ|ddZ}ddZ~ddZd3ddZdS(4r_expr7r6_is_special0NcCstj|}t|tr$t|jjdd}|dkrP|dkr@t}|jt	d|S|j
ddkrfd|_nd|_|j
d}|dk	r|j
d	pd}t|j
d
pd}tt|||_
|t||_d|_nZ|j
d
}|dk	rtt|pdjd|_
|j
drd|_nd|_nd|_
d|_d|_|St|trf|dkrBd|_nd|_d|_tt||_
d|_|St|tr|j|_|j|_|j
|_
|j|_|St|tr|j|_t|j|_
t|j|_d|_|St|ttfr&t|dkrtdt|dto|ddkstd|d|_|ddkrHd|_
|d|_d|_ng}	x^|dD]R}
t|
trd|
kozdknr|	s|
dkr|	j|
ntdqVW|ddkrdjtt|	|_
|d|_d|_nDt|dtrdjtt|	pdg|_
|d|_d|_ntd|St|tr||dkrBt}|jtdtj|}|j|_|j|_|j
|_
|j|_|St d|dS)N_zInvalid literal for Decimal: %rr<-r-r%intZfracexprPFdiagsignalNr4FTztInvalid tuple size in creation of Decimal from list or tuple.  The list or tuple should have exactly three elements.z|Invalid sign.  The first value in the tuple should be an integer; either 0 for a positive number or 1 for a negative number.r+	zTThe second value in the tuple must be composed of integers in the range 0 through 9.zUThe third value in the tuple must be an integer, or one of the strings 'F', 'n', 'N'.z;strict semantics for mixing floats and Decimals are enabledzCannot convert %r to Decimal)r%r-)r4rX)!object__new__
isinstancestr_parserstripreplacer_raise_errorrgroupr6rTr7lenrNrOlstripabsr_WorkRepr<rUlisttuple
ValueErrorappendjoinmapfloatr
from_float	TypeError)clsvaluer/r.mintpartfracpartrUrVdigitsZdigitr'r'r)r]4s







(



zDecimal.__new__cCst|tr||St|ts$tdtj|s8tj|rD|t|Stjd|dkrZd}nd}t	|j
\}}|jd}t|t
|d||}|tkr|S||SdS)Nzargument must be int or float.g?r%r-)r^rTrorq_mathZisinfZisnanreprZcopysignrgas_integer_ratio
bit_lengthr5r_r)rrfr<r4dkresultr'r'r)rps

zDecimal.from_floatcCs(|jr$|j}|dkrdS|dkr$dSdS)Nr4r-rXr+r%)rOrN)r.rUr'r'r)_isnanszDecimal._isnancCs|jdkr|jrdSdSdS)NrYr-r%)rNr6)r.r'r'r)_isinfinitys

zDecimal._isinfinitycCs||j}|dkrd}n|j}|s&|rx|dkr4t}|dkrJ|jtd|S|dkr`|jtd|S|rn|j|S|j|SdS)NFr+sNaNr%)rrrcr	r8)r.otherr/self_is_nanother_is_nanr'r'r)_check_nanss"


zDecimal._check_nanscCsv|dkrt}|js|jrr|jr0|jtd|S|jrF|jtd|S|jr\|jtd|S|jrr|jtd|SdS)Nzcomparison involving sNaNzcomparison involving NaNr%)rrOis_snanrcr	is_qnan)r.rr/r'r'r)_compare_check_nans.s(zDecimal._compare_check_nanscCs|jp|jdkS)NrP)rOr7)r.r'r'r)__bool__OszDecimal.__bool__cCs|js|jr8|j}|j}||kr(dS||kr4dSdS|sP|sDdSd|jS|s^d|jS|j|jkrndS|j|jkr~dS|j}|j}||kr|jd|j|j}|jd|j|j}||krdS||krd|jSd	|jSn ||krd
|jSd|jSdS)Nr%r-rPrrrrrrrr)rOrr6adjustedr7rN)r.rZself_infZ	other_inf
self_adjustedZother_adjustedself_paddedZother_paddedr'r'r)_cmpVs>



zDecimal._cmpcCs<t||dd\}}|tkr|S|j||r.dS|j|dkS)NT)equality_opFr%)_convert_for_comparisonNotImplementedrr)r.rr/r'r'r)__eq__szDecimal.__eq__cCs<t||\}}|tkr|S|j||}|r.dS|j|dkS)NFr%)rrrr)r.rr/r:r'r'r)__lt__szDecimal.__lt__cCs<t||\}}|tkr|S|j||}|r.dS|j|dkS)NFr%)rrrr)r.rr/r:r'r'r)__le__szDecimal.__le__cCs<t||\}}|tkr|S|j||}|r.dS|j|dkS)NFr%)rrrr)r.rr/r:r'r'r)__gt__szDecimal.__gt__cCs<t||\}}|tkr|S|j||}|r.dS|j|dkS)NFr%)rrrr)r.rr/r:r'r'r)__ge__szDecimal.__ge__cCs>t|dd}|js|r0|jr0|j||}|r0|St|j|S)NT)raiseit)_convert_otherrOrrr)r.rr/r:r'r'r)compareszDecimal.comparecCs|jr4|jrtdn|jr$tS|jr0tStS|jdkrNtd|jt	}ntt
|jt	}t|j|t	}|dkr||n|}|dkrdS|S)Nz"Cannot hash a signaling NaN value.r%
r-r+r)
rOrrqis_nan_PyHASH_NANr6_PyHASH_INFrNpow_PyHASH_MODULUS
_PyHASH_10INVrTr7)r.Zexp_hashZhash_r:r'r'r)__hash__s

zDecimal.__hash__cCst|jttt|j|jS)N)rr6rjrnrTr7rN)r.r'r'r)as_tupleszDecimal.as_tuplecCs|jr |jrtdntd|s(dSt|j}|jdkrR|d|jd}}nr|j}x(|dkr|ddkr|d}|d8}q\W|j}t||@jd|}|r||L}||8}d||>}|j	r|}||fS)Nz#cannot convert NaN to integer ratioz(cannot convert Infinity to integer ratior%r-rrx)r%r-)
rOrrk
OverflowErrorrTr7rNminr|r6)r.r4r~Zd5Zd2Zshift2r'r'r)r{s,


zDecimal.as_integer_ratiocCsdt|S)Nz
Decimal('%s'))r_)r.r'r'r)__repr__'szDecimal.__repr__Fc	Csdddg|j}|jrL|jdkr&|dS|jdkr>|d|jS|d|jS|jt|j}|jdkrt|dkrt|}n6|s~d
}n,|jdkr|d
dd
}n|d
dd
}|dkrd}d
d||j}nN|t|jkr|jd|t|j}d}n |jd|}d
|j|d}||kr*d}n*|dkr:t}ddg|jd||}||||S)NrRrSrYZInfinityr4NaNrr%r-rPrZ.eEz%+di)r6rOrNr7rercapitals)	r.engr/r<
leftdigitsdotplacerurvrUr'r'r)__str__,s:




zDecimal.__str__cCs|jd|dS)NT)rr/)r)r.r/r'r'r)
to_eng_string`szDecimal.to_eng_stringcCsT|jr|j|d}|r|S|dkr(t}|rB|jtkrB|j}n|j}|j|S)N)r/)rOrrr>rcopy_abscopy_negate_fix)r.r/r:r'r'r)__neg__is
zDecimal.__neg__cCsT|jr|j|d}|r|S|dkr(t}|rB|jtkrB|j}nt|}|j|S)N)r/)rOrrr>rrrr)r.r/r:r'r'r)__pos__s
zDecimal.__pos__TcCsJ|s|jS|jr&|j|d}|r&|S|jr:|j|d}n|j|d}|S)N)r/)rrOrr6rr)r.roundr/r:r'r'r)__abs__szDecimal.__abs__c
Cslt|}|tkr|S|dkr"t}|js.|jr|j||}|rB|S|jrr|j|jkrj|jrj|jtdSt	|S|jrt	|St
|j|j}d}|jt
kr|j|jkrd}|r|rt
|j|j}|rd}t|d|}|j|}|S|s"t||j|jd}|j||j}|j|}|S|sZt||j|jd}|j||j}|j|}|St|}t|}t|||j\}}t}	|j|jkr|j|jkrt|d|}|j|}|S|j|jkr||}}|jdkrd|	_|j|j|_|_nd|	_n&|jdkrd|	_d\|_|_nd|	_|jdkr@|j|j|	_n|j|j|	_|j|	_t	|	}|j|}|S)Nz
-INF + INFr%r-rP)r%r%)rrrrOrrr6rcr	rrrNr>rr5rmaxr?_rescalerh
_normalizer<rTrU)
r.rr/r:rUZnegativezeror<op1op2rr'r'r)__add__s|





zDecimal.__add__cCsHt|}|tkr|S|js |jr6|j||d}|r6|S|j|j|dS)N)r/)rrrOrrr)r.rr/r:r'r'r)__sub__szDecimal.__sub__cCs"t|}|tkr|S|j||dS)N)r/)rrr)r.rr/r'r'r)__rsub__szDecimal.__rsub__cCsDt|}|tkr|S|dkr"t}|j|jA}|js:|jr|j||}|rN|S|jrn|sf|jtdSt	|S|jr|s|jtdSt	|S|j
|j
}|s|rt|d|}|j|}|S|j
dkrt||j
|}|j|}|S|j
dkrt||j
|}|j|}|St|}t|}t|t|j|j|}|j|}|S)Nz(+-)INF * 0z0 * (+-)INFrP1)rrrr6rOrrrcr	r;rNr5rr7rhr_rT)r.rr/Z
resultsignr:Z	resultexprrr'r'r)__mul__sH




zDecimal.__mul__cCst|}|tkrtS|dkr"t}|j|jA}|js:|jr|j||}|rN|S|jrj|jrj|jtdS|jrzt	|S|jr|jt
dt|d|jS|s|s|jt
dS|jtd|S|s|j|j}d}nt|jt|j|jd}|j|j|}t|}t|}	|dkr:t|jd||	j\}}
nt|j|	jd|\}}
|
rt|d	dkr|d7}n<|j|j}x.||kr|ddkr|d}|d7}qWt|t||}|j|S)
Nz(+-)INF/(+-)INFzDivision by infinityrPz0 / 0zx / 0r%r-rrx)rrrr6rOrrrcr	r;rr5Etinyrr
rNrer7r?rhdivmodrTr_r)r.rr/r<r:rUcoeffshiftrr	remainder	ideal_expr'r'r)__truediv__QsP

zDecimal.__truediv__cCs |j|jA}|jr|j}nt|j|j}|j|j}|sP|jsP|dkrjt|dd|j||jfS||jkrt	|}t	|}|j
|j
kr|jd|j
|j
9_n|jd|j
|j
9_t|j|j\}}	|d|jkrt|t
|dt|jt
|	|fS|jtd}
|
|
fS)Nr+rPr%rz%quotient too large in //, % or divmodr)r6rrNrrr5rr>r?rhrUrTrr_rcr)r.rr/r<rexpdiffrrqrr:r'r'r)_divides*
zDecimal._dividecCs"t|}|tkr|S|j||dS)N)r/)rrr)r.rr/r'r'r)__rtruediv__szDecimal.__rtruediv__cCst|}|tkr|S|dkr"t}|j||}|r:||fS|j|jA}|jr~|jrj|jtd}||fSt||jtdfS|s|s|jt	d}||fS|jt
d||jtdfS|j||\}}|j|}||fS)Nzdivmod(INF, INF)zINF % xzdivmod(0, 0)zx // 0zx % 0)
rrrrr6rrcr	r;rr
rr)r.rr/r:r<Zquotientrr'r'r)
__divmod__s0
zDecimal.__divmod__cCs"t|}|tkr|S|j||dS)N)r/)rrr)r.rr/r'r'r)__rdivmod__szDecimal.__rdivmod__cCst|}|tkr|S|dkr"t}|j||}|r6|S|jrJ|jtdS|sj|r^|jtdS|jtdS|j||d}|j	|}|S)NzINF % xzx % 0z0 % 0r-)
rrrrrrcr	rrr)r.rr/r:rr'r'r)__mod__s"
zDecimal.__mod__cCs"t|}|tkr|S|j||dS)N)r/)rrr)r.rr/r'r'r)__rmod__szDecimal.__rmod__cCs|dkrt}t|dd}|j||}|r.|S|jrB|jtdS|sb|rV|jtdS|jtdS|jr|t|}|j|St	|j
|j
}|st|jd|}|j|S|j
|j
}||jdkr|jtS|dkr|j||j}|j|St|}t|}|j|jkr(|jd	|j|j9_n|jd	|j|j9_t|j|j\}}	d|	|d@|jkr~|	|j8}	|d7}|d	|jkr|jtS|j}
|	d
krd|
}
|	}	t|
t|	|}|j|S)NT)rzremainder_near(infinity, x)zremainder_near(x, 0)zremainder_near(0, 0)rPr-r+rr%r)rrrrrcr	rrrrrNr5r6rr?rrr>rhrUrTrr_)r.rr/r:ideal_exponentrrrrrr<r'r'r)remainder_nearsZ






zDecimal.remainder_nearcCst|}|tkr|S|dkr"t}|j||}|r6|S|jrb|jrR|jtdSt|j|jAS|s|r|jt	d|j|jAS|jt
dS|j||dS)Nz
INF // INFzx // 0z0 // 0r%)rrrrrrcr	r;r6r
rr)r.rr/r:r'r'r)__floordiv__Ls$zDecimal.__floordiv__cCs"t|}|tkr|S|j||dS)N)r/)rrr)r.rr/r'r'r)
__rfloordiv__hszDecimal.__rfloordiv__cCs8|jr(|jrtd|jr"dnd}nt|}t|S)Nz%Cannot convert signaling NaN to floatz-nannan)rrrkr6r_ro)r.sr'r'r)	__float__oszDecimal.__float__cCst|jr(|jrtdn|jr(tdd|j}|jdkrT|t|jd|jS|t|jd|jpjdSdS)NzCannot convert NaN to integerz"Cannot convert infinity to integerr-r%rrPr)	rOrrkrrr6rNrTr7)r.rr'r'r)__int__ys


zDecimal.__int__cCs|S)Nr')r.r'r'r)realszDecimal.realcCstdS)Nr%)r)r.r'r'r)imagszDecimal.imagcCs|S)Nr')r.r'r'r)	conjugateszDecimal.conjugatecCstt|S)N)complexro)r.r'r'r)__complex__szDecimal.__complex__cCsR|j}|j|j}t||krJ|t||djd}t|j||jdSt|S)NrPT)	r7r?clamprerfr5r6rNr)r.r/ZpayloadZmax_payload_lenr'r'r)r8szDecimal._fix_nancCsX|jr |jr|j|St|S|j}|j}|s|j|g|j}tt	|j
||}||j
krx|jtt
|jd|St|St|j|j
|j}||kr|jtd|j}|jt|jt|S||k}|r|}|j
|krt|j|j
|}	|	dkrt
|jd|d}d}	|j|j}
|
||	}|jd|	p>d}|dkr~tt|d}t||jkr~|dd}|d7}||kr|jtd|j}nt
|j||}|r|r|jt|r|jt|r|jt|jt|s|jt|S|r|jt|jdkrP|j
|krP|jt|jd|j
|}
t
|j|
|St|S)NrPz
above Emaxr%rr-r)rOrr8rrEtopr@rrrrNrcrr5r6rer7r?rrr_pick_rounding_functionr>r_rTrr
)r.r/rrexp_maxZnew_expZexp_minr:Zself_is_subnormalrwZrounding_methodchangedrrr'r'r)rsn
















zDecimal._fixcCst|j|rdSdSdS)Nr%r-r)
_all_zerosr7)r.r?r'r'r)_round_downszDecimal._round_downcCs|j|S)N)r)r.r?r'r'r)	_round_upszDecimal._round_upcCs*|j|dkrdSt|j|r"dSdSdS)NZ56789r-r%r)r7r)r.r?r'r'r)_round_half_ups
zDecimal._round_half_upcCst|j|rdS|j|SdS)Nr-r)_exact_halfr7r)r.r?r'r'r)_round_half_downszDecimal._round_half_downcCs8t|j|r*|dks&|j|ddkr*dS|j|SdS)Nr%r-02468r)rr7r)r.r?r'r'r)_round_half_even#szDecimal._round_half_evencCs |jr|j|S|j|SdS)N)r6r)r.r?r'r'r)_round_ceiling+s
zDecimal._round_ceilingcCs |js|j|S|j|SdS)N)r6r)r.r?r'r'r)_round_floor2s
zDecimal._round_floorcCs0|r |j|ddkr |j|S|j|SdS)Nr-Z05)r7r)r.r?r'r'r)_round_05up9s
zDecimal._round_05up)rrrrrrrrcCsb|dk	r2t|tstdtdd|}|j|S|jrR|jrJtdntdt|j	dt
S)Nz+Second argument to round should be integralr%rzcannot round a NaNzcannot round an infinity)r^rTrqr5quantizerOrrkrrr)r.r4rUr'r'r)	__round__Ks/


zDecimal.__round__cCs0|jr |jrtdntdt|jdtS)Nzcannot round a NaNzcannot round an infinityr%)rOrrkrrTrr)r.r'r'r)	__floor__s

zDecimal.__floor__cCs0|jr |jrtdntdt|jdtS)Nzcannot round a NaNzcannot round an infinityr%)rOrrkrrTrr)r.r'r'r)__ceil__s

zDecimal.__ceil__cCst|dd}t|dd}|js$|jr|dkr2t}|jdkrJ|jtd|S|jdkrb|jtd|S|jdkrr|}nf|jdkr|}nV|jdkr|s|jtdSt|j|jA}n*|jdkr|s|jtdSt|j|jA}n0t|j|jAt	t
|jt
|j|j|j}|j||S)	NT)rrXrr4rYzINF * 0 in fmaz0 * INF in fma)
rrOrrNrcr	r;r6r5r_rTr7r)r.rZthirdr/productr'r'r)fmas6





zDecimal.fmacCst|}|tkr|St|}|tkr(|S|dkr6t}|j}|j}|j}|sZ|sZ|r|dkrp|jtd|S|dkr|jtd|S|dkr|jtd|S|r|j|S|r|j|S|j|S|jo|jo|js|jtdS|dkr|jtdS|s|jtdS|j|j	kr(|jtdS|rD|rD|jtdS|j
rTd}n|j}tt
|}t|j}t|j}	|j
|td	|j||}x t|	jD]}
t|d	|}qWt||	j
|}t|t|dS)
Nr+rz@pow() 3rd argument not allowed unless all arguments are integersr%zApow() 2nd argument cannot be negative when 3rd argument specifiedzpow() 3rd argument cannot be 0zSinsufficient precision: pow() 3rd argument must not have more than precision digitszXat least one of pow() 1st argument and 2nd argument must be nonzero; 0**0 is not definedr)rrrrrcr	r8
_isintegerrr?_isevenr6rgrTrhto_integral_valuerrUranger5r_)r.rmodulor/rrZ
modulo_is_nanr<baseexponentir'r'r)
_power_modulosl



zDecimal._power_modulocCst|}|j|j}}x |ddkr6|d}|d7}qWt|}|j|j}}x |ddkrn|d}|d7}qPW|dkr||9}x |ddkr|d}|d7}qW|dkrdS|d|}	|jdkr|	}	|jo|jdkr|jt|}
t|	|
|d}nd}tddd||	|S|jdkr|d}|dkr||@|krPdSt	|d}
|d
d}|t
t|kr~dSt|
||}
t|||}|
dks|dkrdS|
|krdSd|
}n|dkrt	|d
d}
t
d|
|\}}|rdSx$|ddkr$|d}|
d8}
qW|dd}|t
t|krHdSt|
||}
t|||}|
dksx|dkr|dS|
|krdSd|
}ndS|d|krdS|
|}tdt||S|dkr|d|d}}n|dkrt
tt|||krdSt	|}|dkr>t
tt|||kr>dS|d|}}x:|d|dkoldknr|d}|d}qPWx:|d|dkodknr|d}|d}qW|dkrt|dkr||krdSt
||\}}|dkrdSdt	||>}x>t
|||d\}}||kr>Pn||d||}qW||koh|dkspdS|}|dkr||dt|krdS||}||9}|d|krdSt|}|jr|jdkr|jt|}
t||
|t
|}nd}td|d|||S)Nrr%r-rrPr+r]ArxrZd)r+rrr)rhrTrUr<rr6rNrr5_nbitsrer__decimal_lshift_exactrrg	_log10_lb)r.rpxxcxeyycyerrZzerosZ
last_digitrZemaxrrtr4Zxc_bitsremarrZstr_xcr'r'r)_power_exact(s:









&&&&


 zDecimal._power_exactcCs@|dk	r|j|||St|}|tkr*|S|dkr8t}|j||}|rL|S|sd|s`|jtdStSd}|jdkr|j	r|j
sd}n|r|jtdS|j}|s|jdkrt|ddSt
|S|jr|jdkrt
|St|ddS|tkr|j	rZ|jdkrd}n||jkr"|j}nt|}|j|}|d|jkrxd|j}|jtn|jt|jtd|j}t|dd||S|j}|jr|jdk|dkkrt|ddSt
|Sd}d}	|j|j}
|dk|jdkkr|
tt|jkrHt|d|jd}n,|j}|
tt|krHt|d|d}|dkr|j||jd}|dk	r|dkrtd|j|j}d}	|dkr:|j}t|}
|
j|
j}}t|}|j|j}}|jdkr|}d	}xJt||||||\}}|d
dtt||drP|d	7}qWt|t||}|	r2|j	r2t|j|jkr|jdt|j}t|j|jd||j|}|j }|j!xt"D]}d|j#|<qW|j$|}|jt|j%t&r|jt'|j%t(r|jt(d|jx:t't&ttt)fD]}|j%|r|j|qWn
|j$|}|S)
Nz0 ** 0r%r-z+x ** y with x negative and y not an integerrPrFTrZrxrz
above Emax)*rrrrrrcr	_Oner6rrrr5r;rr?rTrNrrr_log10_exp_boundrer_r@rrr7rhrUr<_dpowerrGrH_signalstrapsrflagsr
rrr)r.rrr/r:Zresult_signZ
multiplierrUZself_adjexactZboundrr
rrr
rrrextrarrZ
newcontextZ	exceptionr'r'r)__pow__	s














"




zDecimal.__pow__cCs"t|}|tkr|S|j||dS)N)r/)rrr)r.rr/r'r'r)__rpow__	szDecimal.__rpow__cCs|dkrt}|jr(|j|d}|r(|S|j|}|jr>|S|sPt|jddS|j|jg|j	}t
|j}|j}x.|j|ddkr||kr|d7}|d8}qvWt|j|jd||S)N)r/rPr%r-)
rrOrrrr5r6r@rrrer7rN)r.r/r:duprendrUr'r'r)	normalize	s$

zDecimal.normalizecCst|dd}|dkrt}|dkr(|j}|js4|jr||j||}|rH|S|jsX|jr||jrp|jrpt|S|jtdS|j	|j
ko|jkns|jtdS|st|j
d|j
}|j|S|j}||jkr|jtdS||j
d|jkr|jtdS|j|j
|}|j|jkr0|jtdSt|j|jkrN|jtdS|rn|j|jkrn|jt|j
|j
kr||kr|jt|jt|j|}|S)	NT)rzquantize with one INFz)target exponent out of bounds in quantizerPz9exponent of quantize result too large for current contextr-z7quantize result has too many digits for current context)rrr>rOrrrrcr	rrNr@r5r6rrr?rrer7Eminr
rr)r.rUr>r/r:rr'r'r)r
sT 






zDecimal.quantizecCsDt|dd}|js|jr8|jr(|jp6|jo6|jS|j|jkS)NT)r)rrOris_infiniterN)r.rr/r'r'r)same_quantumJ
s
	zDecimal.same_quantumcCs|jrt|S|s t|jd|S|j|krHt|j|jd|j||St|j|j|}|dkrzt|jd|d}d}|j|}|||}|jd|pd}|dkrtt	|d}t|j||S)NrPr%rr-)
rOrr5r6rNr7rerr_rT)r.rUr>rwZ
this_functionrrr'r'r)rY
s"


zDecimal._rescalecCsh|dkrtd|js|r$t|S|j|jd||}|j|jkrd|j|jd||}|S)Nr%z'argument should be at least 1 in _roundr-)rkrOrrr)r.placesr>r:r'r'r)_round{
s
zDecimal._roundcCs|jr"|j|d}|r|St|S|jdkr4t|S|sFt|jddS|dkrTt}|dkrb|j}|jd|}||kr|j	t
|j	t|S)N)r/r%rP)rOrrrNr5r6rr>rrcrr)r.r>r/r:r'r'r)to_integral_exact
s$



zDecimal.to_integral_exactcCs`|dkrt}|dkr|j}|jr>|j|d}|r6|St|S|jdkrPt|S|jd|SdS)N)r/r%)rr>rOrrrNr)r.r>r/r:r'r'r)r
s
zDecimal.to_integral_valuecCs|dkrt}|jrB|j|d}|r(|S|jrB|jdkrBt|S|sdt|jd|jd}|j|S|jdkrz|j	t
dS|jd}t|}|j
d?}|j
d@r|jd}t|jd?d}n|j}t|jdd?}||}|dkr|d|9}d	}	nt|d|\}}
|
}	||8}d|}x(||}||kr:Pn||d?}q$W|	o\|||k}	|	r|dkr||d|}n|d|9}||7}n|d
dkr|d7}tdt||}|j}|jt}
|j|}|
|_|S)N)r/r%rPr+r-zsqrt(-x), x > 0rrTrx)rrOrrr6rr5rNrrcr	r?rhrUrTrer7rr_
_shallow_copy
_set_roundingrr>)r.r/r:r?oprclrrrr4rr>r'r'r)sqrt
s`










zDecimal.sqrtcCst|dd}|dkrt}|js&|jr~|j}|j}|s>|r~|dkrX|dkrX|j|S|dkrr|dkrr|j|S|j||S|j|}|dkr|j|}|dkr|}n|}|j|S)NT)rr-r%r)rrrOrrrr
compare_total)r.rr/snonr*r:r'r'r)r%s&


	
zDecimal.maxcCst|dd}|dkrt}|js&|jr~|j}|j}|s>|r~|dkrX|dkrX|j|S|dkrr|dkrr|j|S|j||S|j|}|dkr|j|}|dkr|}n|}|j|S)NT)rr-r%r)rrrOrrrrr-)r.rr/r.r/r*r:r'r'r)rOs&



zDecimal.mincCs8|jr
dS|jdkrdS|j|jd}|dt|kS)NFr%TrP)rOrNr7re)r.restr'r'r)rqs
zDecimal._isintegercCs(|s|jdkrdS|jd|jdkS)Nr%Tr-rr)rNr7)r.r'r'r)rzszDecimal._isevencCs.y|jt|jdStk
r(dSXdS)Nr-r%)rNrer7rq)r.r'r'r)rszDecimal.adjustedcCs|S)Nr')r.r'r'r)	canonicalszDecimal.canonicalcCs.t|dd}|j||}|r |S|j||dS)NT)r)r/)rrr)r.rr/r:r'r'r)compare_signals
zDecimal.compare_signalcCsft|dd}|jr|jrtS|jr0|jr0tS|j}|j}|j}|sP|r||krt|j|jf}t|j|jf}||kr|rtStS||kr|rtStStS|r|dkrtS|dkrtS|dkrtS|dkrtSn4|dkrtS|dkrtS|dkrtS|dkrtS||krtS||kr*tS|j|jkrF|rBtStS|j|jkrb|r^tStStS)NT)rr-r+)	rr6_NegativeOnerrrer7_ZerorN)r.rr/r<Zself_nanZ	other_nanZself_keyZ	other_keyr'r'r)r-sf




zDecimal.compare_totalcCs&t|dd}|j}|j}|j|S)NT)r)rrr-)r.rr/ror'r'r)compare_total_magszDecimal.compare_total_magcCstd|j|j|jS)Nr%)r5r7rNrO)r.r'r'r)rszDecimal.copy_abscCs2|jrtd|j|j|jStd|j|j|jSdS)Nr%r-)r6r5r7rNrO)r.r'r'r)rszDecimal.copy_negatecCs"t|dd}t|j|j|j|jS)NT)r)rr5r6r7rNrO)r.rr/r'r'r)	copy_signs
zDecimal.copy_signcCs|dkrt}|j|d}|r"|S|jd
kr2tS|s:tS|jdkrNt|S|j}|j}|jdkr|t	t
|jddkrtdd|jd}n0|jdkr|t	t
|j
ddkrtdd|j
d}n|jdko||kr
tddd|dd|}n|jdkrB||dkrBtdd|d|d}nt|}|j|j}}|jdkrj|}d}xFt||||\}	}
|	dd	t	t
|	|drP|d7}qpWtdt
|	|
}|j}|jt}|j|}||_|S)N)r/r-r%rZrrPr=rxrr)rrrr4rrr?rr6rer_r@r5rrhrTrUr<_dexpr'r(rrr>)r.r/r:r
adjr)r*rrrrUr>r'r'r)rUsJ$( "

zDecimal.expcCsdS)NTr')r.r'r'r)is_canonicalLszDecimal.is_canonicalcCs|jS)N)rO)r.r'r'r)	is_finiteTszDecimal.is_finitecCs
|jdkS)NrY)rN)r.r'r'r)r"\szDecimal.is_infinitecCs
|jdkS)Nr4rX)r4rX)rN)r.r'r'r)r`szDecimal.is_nancCs,|js|rdS|dkrt}|j|jkS)NF)rOrr!r)r.r/r'r'r)	is_normalds
zDecimal.is_normalcCs
|jdkS)Nr4)rN)r.r'r'r)rlszDecimal.is_qnancCs
|jdkS)Nr-)r6)r.r'r'r)	is_signedpszDecimal.is_signedcCs
|jdkS)NrX)rN)r.r'r'r)rtszDecimal.is_snancCs,|js|rdS|dkrt}|j|jkS)NF)rOrrr!)r.r/r'r'r)is_subnormalxs
zDecimal.is_subnormalcCs|jo|jdkS)NrP)rOr7)r.r'r'r)is_zeroszDecimal.is_zerocCs|jt|jd}|dkr4tt|dddS|dkrXttd|dddSt|}|j|j}}|dkrt|d|}t|}t|t|||kS|ttd||dS)Nr-rr+r%rr)rNrer7r_rhrTrU)r.r9r)r*rnumdenr'r'r)
_ln_exp_boundszDecimal._ln_exp_boundc
Cs|dkrt}|j|d}|r"|S|s*tS|jdkr:tS|tkrFtS|jdkr\|jt	dSt
|}|j|j}}|j
}||jd}x>t|||}|ddttt||drP|d7}qWtt|dktt||}|j}|jt}	|j|}|	|_|S)	N)r/r-zln of a negative valuer+rxrrZr%)rr_NegativeInfinityr	_Infinityrr4r6rcr	rhrTrUr?rC_dlogrer_rgr5r'r(rrr>)
r.r/r:r)r*rr
r$rr>r'r'r)lns:
$

z
Decimal.lncCs|jt|jd}|dkr,tt|dS|dkrHttd|dSt|}|j|j}}|dkrt|d|}td|}t|t|||kdStd||}t|||dkdS)	Nr-r+r%rZ231rr)rNrer7r_rhrTrU)r.r9r)r*rrArBr'r'r)rszDecimal._log10_exp_boundc
CsH|dkrt}|j|d}|r"|S|s*tS|jdkr:tS|jdkrP|jtdS|jddkr|jdddt	|jdkrt
|jt	|jd}nt|}|j
|j}}|j}||jd}x>t|||}|dd	t	tt||drP|d
7}qWtt
|dktt||}|j}|jt}	|j|}|	|_|S)N)r/r-zlog10 of a negative valuer%rrPr+rxrrZ)rrrDrrEr6rcr	r7rerrNrhrTrUr?r_dlog10r_rgr5r'r(rrr>)
r.r/r:r)r*rr
r$rr>r'r'r)log10s:
.$

z
Decimal.log10cCsV|j|d}|r|S|dkr"t}|jr.tS|s@|jtddSt|j}|j|S)N)r/zlogb(0)r-)	rrrrErcr
rrr)r.r/r:r'r'r)logb 
s	zDecimal.logbcCs8|jdks|jdkrdSx|jD]}|dkr dSq WdS)Nr%FZ01T)r6rNr7)r.digr'r'r)
_islogical>
szDecimal._islogicalcCs|jt|}|dkr$d||}n|dkr<||jd}|jt|}|dkr`d||}n|dkrx||jd}||fS)Nr%rP)r?re)r.r/opaopbZdifr'r'r)
_fill_logicalL
szDecimal._fill_logicalcCs~|dkrt}t|dd}|js.|jr8|jtS|j||j|j\}}djddt||D}t	d|j
dpxddS)NT)rrRcSs$g|]\}}tt|t|@qSr')r_rT).0rbr'r'r)
<listcomp>g
sz'Decimal.logical_and.<locals>.<listcomp>r%rP)rrrMrcr	rPr7rmzipr5rf)r.rr/rNrOrr'r'r)logical_andY
s
zDecimal.logical_andcCs(|dkrt}|jtdd|jd|S)Nr%r)rlogical_xorr5r?)r.r/r'r'r)logical_invertj
szDecimal.logical_invertcCs~|dkrt}t|dd}|js.|jr8|jtS|j||j|j\}}djddt||D}t	d|j
dpxddS)NT)rrRcSs$g|]\}}tt|t|BqSr')r_rT)rQrrRr'r'r)rS
sz&Decimal.logical_or.<locals>.<listcomp>r%rP)rrrMrcr	rPr7rmrTr5rf)r.rr/rNrOrr'r'r)
logical_orq
s
zDecimal.logical_orcCs~|dkrt}t|dd}|js.|jr8|jtS|j||j|j\}}djddt||D}t	d|j
dpxddS)NT)rrRcSs$g|]\}}tt|t|AqSr')r_rT)rQrrRr'r'r)rS
sz'Decimal.logical_xor.<locals>.<listcomp>r%rP)rrrMrcr	rPr7rmrTr5rf)r.rr/rNrOrr'r'r)rV
s
zDecimal.logical_xorcCst|dd}|dkrt}|js&|jr~|j}|j}|s>|r~|dkrX|dkrX|j|S|dkrr|dkrr|j|S|j||S|jj|j}|dkr|j|}|dkr|}n|}|j|S)NT)rr-r%r)	rrrOrrrrrr-)r.rr/r.r/r*r:r'r'r)max_mag
s&


zDecimal.max_magcCst|dd}|dkrt}|js&|jr~|j}|j}|s>|r~|dkrX|dkrX|j|S|dkrr|dkrr|j|S|j||S|jj|j}|dkr|j|}|dkr|}n|}|j|S)NT)rr-r%r)	rrrOrrrrrr-)r.rr/r.r/r*r:r'r'r)min_mag
s&


zDecimal.min_magcCs|dkrt}|j|d}|r"|S|jdkr2tS|jdkrTtdd|j|jS|j}|jt	|j
|j|}||kr|S|jtdd|j
d|S)N)r/r-r%r=rr)rrrrDr5r?rrGr(r_ignore_all_flagsrrr)r.r/r:new_selfr'r'r)
next_minus
s"

zDecimal.next_minuscCs|dkrt}|j|d}|r"|S|jdkr2tS|jdkrTtdd|j|jS|j}|jt	|j
|j|}||kr|S|jtdd|j
d|S)N)r/r-r=r%rr)rrrrEr5r?rrGr(rr[rrr)r.r/r:r\r'r'r)	next_plus
s"

zDecimal.next_pluscCst|dd}|dkrt}|j||}|r.|S|j|}|dkrJ|j|S|dkr^|j|}n
|j|}|jr|jt	d|j
|jt|jtnD|j
|jkr|jt|jt|jt|jt|s|jt|S)NT)rr%r-z Infinite result from next_towardr)rrrrr7r^r]rrcrr6rrrr!rr
r)r.rr/r:Z
comparisonr'r'r)next_toward
s4	








zDecimal.next_towardcCs|jrdS|jrdS|j}|dkr,dS|d
kr8dS|jrN|jrJdSdS|dkr\t}|j|drv|jrrd	Sd
S|jrdSdSdS)Nrrr-z	+Infinityz	-Infinityz-Zeroz+Zero)r/z
-Subnormalz
+Subnormalz-Normalz+Normalr)rrrr?r6rr>)r.r/infr'r'r)number_class+s,zDecimal.number_classcCstdS)Nr)r)r.r'r'r)radixUsz
Decimal.radixcCs|dkrt}t|dd}|j||}|r.|S|jdkrB|jtS|jt|ko^|jknsn|jtS|jr~t	|St|}|j
}|jt|}|dkrd||}n|dkr||d}||d|d|}t|j
|jdpd|jS)NT)rr%rP)rrrrNrcr	r?rTrrr7rer5r6rf)r.rr/r:torotrotdigtopadZrotatedr'r'r)rotateYs,

"
zDecimal.rotatecCs|dkrt}t|dd}|j||}|r.|S|jdkrB|jtSd|j|j}d|j|j}|t|kox|kns|jtS|j	rt
|St|j|j
|jt|}|j|}|S)NT)rr%r+r)rrrrNrcr	r@r?rTrrr5r6r7r)r.rr/r:ZliminfZlimsupr~r'r'r)scalebzs"



zDecimal.scalebcCs|dkrt}t|dd}|j||}|r.|S|jdkrB|jtS|jt|ko^|jknsn|jtS|jr~t	|St|}|j
}|jt|}|dkrd||}n|dkr||d}|dkr|d|}n|d|}||jd}t|j
|jdpd|jS)NT)rr%rP)rrrrNrcr	r?rTrrr7rer5r6rf)r.rr/r:rcrdreZshiftedr'r'r)rs2

"
z
Decimal.shiftcCs|jt|ffS)N)	__class__r_)r.r'r'r)
__reduce__szDecimal.__reduce__cCst|tkr|S|jt|S)N)typerrhr_)r.r'r'r)__copy__szDecimal.__copy__cCst|tkr|S|jt|S)N)rjrrhr_)r.memor'r'r)__deepcopy__szDecimal.__deepcopy__cCsN|dkrt}t||d}|jrXt|j|}t|j}|ddkrL|d7}t|||S|ddkrvddg|j|d<|ddkrt	|j|j
|jd}|j}|d}|dk	r|ddkr|j
|d	|}nF|dd
kr|j||}n*|ddkrt|j
|kr|j
||}|rB|jdkrB|dd
krB|jd|}|jt|j
}	|ddkr|r||dk	r|d	|}
nd	}
nB|dd
kr|	}
n.|ddkr|jdkr|	dkr|	}
nd	}
|
dkrd}d|
|j
}nP|
t|j
kr|j
d|
t|j
}d}n"|j
d|
p$d}|j
|
d}|	|
}
t|j|||
|S)N)_localeconvrj%gGr+	precisioneEr-zfF%ZgGr%rrPrRi)r_parse_format_specifierrO_format_signr6r_r
_format_alignrr5r7rNr>r%rre_format_number)r.Z	specifierr/rnspecr<bodyr>rrrrrurvrUr'r'r)
__format__sZ
"

zDecimal.__format__)rNr7r6rO)rPN)NN)N)N)N)N)N)N)FN)N)N)N)TN)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)NN)N)N)NN)N)NN)NN)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)NN)r1r2r3	__slots__r]classmethodrprrrrrrrrrrrrrrr{rrrrrrr__radd__rrr__rmul__rrrrrrrrrrrr	__trunc__rpropertyrrrr8rrrrrrrrrdictrrrrrrrrrr rr#rr%r&rto_integralr,rrrrrr1r2r-r6rrr7rUr:r;r"rr<rr=rr>r?rCrGrrJrKrMrPrUrWrXrVrYrZr]r^r_rarbrfrgrrirkrmrzr'r'r'r)r+s
(
 !@

	
	
	
	
2
4
	
V7;!$K

f	>,UnY="c*"	IK23
.*!'FcCs&tjt}||_||_||_||_|S)N)r\r]rr6r7rNrO)r<ZcoefficientrZspecialr.r'r'r)r5s
r5c@s$eZdZddZddZddZdS)rMcCs|j|_dS)N)rGnew_context)r.rr'r'r)__init__9sz_ContextManager.__init__cCst|_t|j|jS)N)r
saved_contextrr)r.r'r'r)	__enter__;s
z_ContextManager.__enter__cCst|jdS)N)rr)r.tvtbr'r'r)__exit__?sz_ContextManager.__exit__N)r1r2r3rrrr'r'r'r)rM3srMc	@seZdZdddZddZddZdd	Zd
dZdd
ZddZ	ddZ
ddZddZddZ
e
ZdddZddZddZddZdZd d!Zd"d#Zd$d%Zdd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Z d;d<Z!d=d>Z"d?d@Z#dAdBZ$dCdDZ%dEdFZ&dGdHZ'dIdJZ(dKdLZ)dMdNZ*dOdPZ+dQdRZ,dSdTZ-dUdVZ.dWdXZ/dYdZZ0d[d\Z1d]d^Z2d_d`Z3dadbZ4dcddZ5dedfZ6dgdhZ7didjZ8dkdlZ9dmdnZ:dodpZ;dqdrZ<dsdtZ=dudvZ>dwdxZ?dydzZ@d{d|ZAd}d~ZBddZCddZDddZEddZFdddZGddZHddZIddZJddZKddZLddZMddZNddZOddZPddZQddZRddZSddZTddZUeUZVdS)rNc
s>yt}
Wntk
rYnX|dk	r*|n|
j|_|dk	r>|n|
j|_|dk	rR|n|
j|_|dk	rf|n|
j|_|dk	rz|n|
j|_|dk	r|n|
j|_|	dkrg|_n|	|_dkr|
j	j
|_	n.ttstfddt
D|_	n|_	dkr
tjt
d|_n0tts4tfddt
D|_n|_dS)Nc3s|]}|t|kfVqdS)N)rT)rQr)rr'r)	<genexpr>nsz#Context.__init__.<locals>.<genexpr>r%c3s|]}|t|kfVqdS)N)rT)rQr)rr'r)rus)r	NameErrorr?r>r!r@rr_ignored_flagsrrGr^rrfromkeysr)r.r?r>r!r@rrrrrZdcr')rrr)rUs.

zContext.__init__cCst|tstd||dkr<||krtd||||fnJ|dkrb||krtd||||fn$||ksr||krtd||||ftj|||S)Nz%s must be an integerz-infz%s must be in [%s, %d]. got: %sr`z%s must be in [%d, %s]. got: %sz%s must be in [%d, %d]. got %s)r^rTrqrkr\__setattr__)r.namersZvminZvmaxr'r'r)_set_integer_checkys
zContext._set_integer_checkcCsht|tstd|x |D]}|tkrtd|qWx tD]}||kr>td|q>Wtj|||S)Nz%s must be a signal dictz%s is not a valid signal dict)r^rrqrKeyErrorr\r)r.rr~keyr'r'r)_set_signal_dicts


zContext._set_signal_dictcCs|dkr|j||ddS|dkr0|j||ddS|dkrH|j||ddS|dkr`|j||ddS|d	krx|j||ddS|d
kr|tkrtd|tj|||S|dks|d
kr|j||S|dkrtj|||Std|dS)Nr?r-r`r!z-infr%r@rrr>z%s: invalid rounding moderrrz.'decimal.Context' object has no attribute '%s')r_rounding_modesrqr\rrrK)r.rrsr'r'r)rs(zContext.__setattr__cCstd|dS)Nz%s cannot be deleted)rK)r.rr'r'r)__delattr__szContext.__delattr__c	CsNdd|jjD}dd|jjD}|j|j|j|j|j|j|j	||ffS)NcSsg|]\}}|r|qSr'r')rQsigrr'r'r)rSsz&Context.__reduce__.<locals>.<listcomp>cSsg|]\}}|r|qSr'r')rQrrr'r'r)rSs)
ritemsrrhr?r>r!r@rr)r.rrr'r'r)ris
zContext.__reduce__cCs|g}|jdt|dd|jjD}|jddj|ddd|jjD}|jddj|ddj|d	S)
NzrContext(prec=%(prec)d, rounding=%(rounding)s, Emin=%(Emin)d, Emax=%(Emax)d, capitals=%(capitals)d, clamp=%(clamp)dcSsg|]\}}|r|jqSr')r1)rQr}rr'r'r)rSsz$Context.__repr__.<locals>.<listcomp>zflags=[z, ]cSsg|]\}}|r|jqSr')r1)rQrrr'r'r)rSsztraps=[))rlvarsrrrmr)r.rnamesr'r'r)rszContext.__repr__cCsx|jD]}d|j|<qWdS)Nr%)r)r.flagr'r'r)rHszContext.clear_flagscCsx|jD]}d|j|<qWdS)Nr%)r)r.rr'r'r)clear_trapsszContext.clear_trapsc
Cs.t|j|j|j|j|j|j|j|j|j		}|S)N)
rr?r>r!r@rrrrr)r.ncr'r'r)r'szContext._shallow_copyc
Cs6t|j|j|j|j|j|j|jj|j	j|j
	}|S)N)rr?r>r!r@rrrrGrr)r.rr'r'r)rGs
zContext.copycGsZtj||}||jkr(|j|f|Sd|j|<|j|sN|j|f|S||dS)Nr-)_condition_mapgetrr0rr)r.Z	conditionZexplanationr(errorr'r'r)rcs


zContext._raise_errorcCs
|jtS)N)
_ignore_flagsr)r.r'r'r)r[szContext._ignore_all_flagscGs|jt||_t|S)N)rri)r.rr'r'r)rszContext._ignore_flagscGs<|rt|dttfr|d}x|D]}|jj|q$WdS)Nr%)r^rjrirremove)r.rrr'r'r)
_regard_flagss
zContext._regard_flagscCst|j|jdS)Nr-)rTr!r?)r.r'r'r)rsz
Context.EtinycCst|j|jdS)Nr-)rTr@r?)r.r'r'r)rszContext.EtopcCs|j}||_|S)N)r>)r.rjr>r'r'r)r(szContext._set_roundingrPcCsjt|tr*||jksd|kr*|jtdSt||d}|jr`t|j|j	|j
kr`|jtdS|j|S)NrQzAtrailing or leading whitespace and underscores are not permitted.)r/zdiagnostic info too long in NaN)r^r_rarcrrrrer7r?rr)r.rAr~r'r'r)create_decimal#szContext.create_decimalcCstj|}|j|S)N)rrpr)r.r}r~r'r'r)create_decimal_from_float4s
z!Context.create_decimal_from_floatcCst|dd}|j|dS)NT)r)r/)rr)r.rr'r'r)rgFszContext.abscCs8t|dd}|j||d}|tkr0td|n|SdS)NT)r)r/zUnable to convert %s to Decimal)rrrrq)r.rrRrr'r'r)add[s
zContext.addcCst|j|S)N)r_r)r.rr'r'r)_applypszContext._applycCst|tstd|jS)Nz,canonical requires a Decimal as an argument.)r^rrqr1)r.rr'r'r)r1ss	
zContext.canonicalcCst|dd}|j||dS)NT)r)r/)rr)r.rrRr'r'r)rs!zContext.comparecCst|dd}|j||dS)NT)r)r/)rr2)r.rrRr'r'r)r2s zContext.compare_signalcCst|dd}|j|S)NT)r)rr-)r.rrRr'r'r)r-szContext.compare_totalcCst|dd}|j|S)NT)r)rr6)r.rrRr'r'r)r6szContext.compare_total_magcCst|dd}|jS)NT)r)rr)r.rr'r'r)rs
zContext.copy_abscCst|dd}t|S)NT)r)rr)r.rr'r'r)copy_decimals
zContext.copy_decimalcCst|dd}|jS)NT)r)rr)r.rr'r'r)rs
zContext.copy_negatecCst|dd}|j|S)NT)r)rr7)r.rrRr'r'r)r7szContext.copy_signcCs8t|dd}|j||d}|tkr0td|n|SdS)NT)r)r/zUnable to convert %s to Decimal)rrrrq)r.rrRrr'r'r)divide+s
zContext.dividecCs8t|dd}|j||d}|tkr0td|n|SdS)NT)r)r/zUnable to convert %s to Decimal)rrrrq)r.rrRrr'r'r)
divide_intPs
zContext.divide_intcCs8t|dd}|j||d}|tkr0td|n|SdS)NT)r)r/zUnable to convert %s to Decimal)rrrrq)r.rrRrr'r'r)rgs
zContext.divmodcCst|dd}|j|dS)NT)r)r/)rrU)r.rr'r'r)rU|szContext.expcCst|dd}|j|||dS)NT)r)r/)rr)r.rrRr*r'r'r)rszContext.fmacCst|tstd|jS)Nz/is_canonical requires a Decimal as an argument.)r^rrqr:)r.rr'r'r)r:s	
zContext.is_canonicalcCst|dd}|jS)NT)r)rr;)r.rr'r'r)r;szContext.is_finitecCst|dd}|jS)NT)r)rr")r.rr'r'r)r"szContext.is_infinitecCst|dd}|jS)NT)r)rr)r.rr'r'r)rs
zContext.is_nancCst|dd}|j|dS)NT)r)r/)rr<)r.rr'r'r)r<szContext.is_normalcCst|dd}|jS)NT)r)rr)r.rr'r'r)rszContext.is_qnancCst|dd}|jS)NT)r)rr=)r.rr'r'r)r=szContext.is_signedcCst|dd}|jS)NT)r)rr)r.rr'r'r)r$s
zContext.is_snancCst|dd}|j|dS)NT)r)r/)rr>)r.rr'r'r)r>4szContext.is_subnormalcCst|dd}|jS)NT)r)rr?)r.rr'r'r)r?JszContext.is_zerocCst|dd}|j|dS)NT)r)r/)rrG)r.rr'r'r)rG[sz
Context.lncCst|dd}|j|dS)NT)r)r/)rrJ)r.rr'r'r)rJqsz
Context.log10cCst|dd}|j|dS)NT)r)r/)rrK)r.rr'r'r)rKszContext.logbcCst|dd}|j||dS)NT)r)r/)rrU)r.rrRr'r'r)rUszContext.logical_andcCst|dd}|j|dS)NT)r)r/)rrW)r.rr'r'r)rWszContext.logical_invertcCst|dd}|j||dS)NT)r)r/)rrX)r.rrRr'r'r)rXszContext.logical_orcCst|dd}|j||dS)NT)r)r/)rrV)r.rrRr'r'r)rVszContext.logical_xorcCst|dd}|j||dS)NT)r)r/)rr)r.rrRr'r'r)rszContext.maxcCst|dd}|j||dS)NT)r)r/)rrY)r.rrRr'r'r)rY&szContext.max_magcCst|dd}|j||dS)NT)r)r/)rr)r.rrRr'r'r)r7szContext.mincCst|dd}|j||dS)NT)r)r/)rrZ)r.rrRr'r'r)rZRszContext.min_magcCst|dd}|j|dS)NT)r)r/)rr)r.rr'r'r)minuscsz
Context.minuscCs8t|dd}|j||d}|tkr0td|n|SdS)NT)r)r/zUnable to convert %s to Decimal)rrrrq)r.rrRrr'r'r)multiplyts
zContext.multiplycCst|dd}|j|dS)NT)r)r/)rr])r.rr'r'r)r]szContext.next_minuscCst|dd}|j|dS)NT)r)r/)rr^)r.rr'r'r)r^szContext.next_pluscCst|dd}|j||dS)NT)r)r/)rr_)r.rrRr'r'r)r_s zContext.next_towardcCst|dd}|j|dS)NT)r)r/)rr )r.rr'r'r)r szContext.normalizecCst|dd}|j|dS)NT)r)r/)rra)r.rr'r'r)ras/zContext.number_classcCst|dd}|j|dS)NT)r)r/)rr)r.rr'r'r)plus)szContext.pluscCs:t|dd}|j|||d}|tkr2td|n|SdS)NT)r)r/zUnable to convert %s to Decimal)rrrrq)r.rrRrrr'r'r)power:s
Iz
Context.powercCst|dd}|j||dS)NT)r)r/)rr)r.rrRr'r'r)rs7zContext.quantizecCstdS)Nr)r)r.r'r'r)rbsz
Context.radixcCs8t|dd}|j||d}|tkr0td|n|SdS)NT)r)r/zUnable to convert %s to Decimal)rrrrq)r.rrRrr'r'r)rs
zContext.remaindercCst|dd}|j||dS)NT)r)r/)rr)r.rrRr'r'r)rszContext.remainder_nearcCst|dd}|j||dS)NT)r)r/)rrf)r.rrRr'r'r)rfszContext.rotatecCst|dd}|j|S)NT)r)rr#)r.rrRr'r'r)r#1szContext.same_quantumcCst|dd}|j||dS)NT)r)r/)rrg)r.rrRr'r'r)rgIszContext.scalebcCst|dd}|j||dS)NT)r)r/)rr)r.rrRr'r'r)r\sz
Context.shiftcCst|dd}|j|dS)NT)r)r/)rr,)r.rr'r'r)r,zszContext.sqrtcCs8t|dd}|j||d}|tkr0td|n|SdS)NT)r)r/zUnable to convert %s to Decimal)rrrrq)r.rrRrr'r'r)subtracts
zContext.subtractcCst|dd}|j|dS)NT)r)r/)rr)r.rr'r'r)rszContext.to_eng_stringcCst|dd}|j|dS)NT)r)r/)rr)r.rr'r'r)
to_sci_stringszContext.to_sci_stringcCst|dd}|j|dS)NT)r)r/)rr&)r.rr'r'r)r&szContext.to_integral_exactcCst|dd}|j|dS)NT)r)r/)rr)r.rr'r'r)rszContext.to_integral_value)	NNNNNNNNN)N)rP)N)Wr1r2r3rrrrrrirrHrr'rGrkrcr[rrrrrr(rrrgrrr1rr2r-r6rrrr7rrrrUrr:r;r"rr<rr=rr>r?rGrJrKrUrWrXrVrrYrrZrrr]r^r_r rarrrrbrrrfr#rgrr,rrrr&rrr'r'r'r)rBs
"



$#


%
 #2
P:&" c@s&eZdZd	Zd
ddZddZeZdS)rhr<rTrUNcCsf|dkrd|_d|_d|_nFt|trD|j|_t|j|_|j|_n|d|_|d|_|d|_dS)Nr%r-r+)r<rTrUr^rr6r7rN)r.rsr'r'r)rs



z_WorkRep.__init__cCsd|j|j|jfS)Nz(%r, %r, %r))r<rTrU)r.r'r'r)r(sz_WorkRep.__repr__)r<rTrU)N)r1r2r3r{rrrr'r'r'r)rhs
rhcCs|j|jkr|}|}n|}|}tt|j}tt|j}|jtd||d}||jd|krpd|_||_|jd|j|j9_|j|_||fS)Nr-r+rr)rUrer_rTr)rrr?ZtmprZtmp_lenZ	other_lenrUr'r'r)r/srcCsb|dkrdS|dkr |d|Stt|}t|t|jd}||krPdS|d|SdS)Nr%rrP)r_rgrerstrip)r4rZstr_nZval_nr'r'r)rOsrcCsF|dks|dkrtdd}x$||kr@||||d?}}qW|S)Nr%z3Both arguments to _sqrt_nearest should be positive.r-)rk)r4rrRr'r'r)
_sqrt_nearestds
rcCs2d|>||?}}|d||d@|d@|kS)Nr-r+r')rrrRrr'r'r)_rshift_nearestssrcCs&t||\}}|d||d@|kS)Nr+r-)r)rrRrrr'r'r)_div_nearest{srrc		Cs||}d}xn||kr*t|||>|ksF||krzt|||?|krzt||d>|t||t|||}|d7}qWtdtt|d|}t||}t||}x0t|dddD]}t||t|||}qWt|||S)Nr%r-rrZir)rgrrrrTrer_r)	rMLrRTZyshiftwrr'r'r)_ilogs

rc
Cs|d7}tt|}||||dk}|dkrd|}|||}|dkrZ|d|9}nt|d|}t||}t|}t|||}||}	nd}t|d|}	t|	|dS)Nr+r-r%rr)rer_rr
_log10_digits)
r*rr
r+r}rrlog_dZlog_10Zlog_tenpowerr'r'r)rIs 

rIc	Cs|d7}tt|}||||dk}|dkrr|||}|dkrR|d|9}nt|d|}t|d|}nd}|rttt|d}||dkrt|t||d|}qd}nd}t||dS)Nr+r-r%rr)rer_rrrgr)	r*rr
r+r}rrrZ	f_log_tenr'r'r)rFs"rFc@seZdZddZddZdS)
_Log10MemoizecCs
d|_dS)NZ/23025850929940456840179914546843642076011014886)rw)r.r'r'r)rsz_Log10Memoize.__init__cCs|dkrtd|t|jkrd}xLd||d}tttd||d}||dd|krdP|d7}q$W|jddd	|_t|jd|dS)
Nr%zp should be nonnegativerZrr+rrPr-r)rkrerwr_rrrrT)r.r
rrrwr'r'r)	getdigitss	z_Log10Memoize.getdigitsN)r1r2r3rrr'r'r'r)rsrc	Cst||>|}tdtt|d|}t||}||>}x.t|dddD]}t|||||}qRWx6t|ddd	D]"}||d>}t||||}qW||S)
NrrZr-r%r+irrr)rrTrer_rr)	rrrrrrZMshiftrrr'r'r)_iexp&s
rc	Cs|d7}td|tt|d}||}||}|dkrH|d|}n|d|}t|t|\}}t|d|}tt|d|d||dfS)Nr+r%r-rirZ)rrer_rrrr)	r*rr
rrrZcshiftZquotrr'r'r)r8Ksr8cCsttt||}t||||d}||}|dkrJ||d|}nt||d|}|dkrtt||dk|dkkrd|ddd|}	}
qd|d|}	}
n,t||d|d\}	}
t|	d}	|
d7}
|	|
fS)Nr-r%r)rer_rgrFrr8)rr
rrr
rRZlxcrZpcrrUr'r'r)ros
rrF5(r@rrx)	r2345678r=cCs0|dkrtdt|}dt|||dS)Nr%z0The argument to _log10_lb should be nonnegative.r)rkr_re)r*Z
correctionZstr_cr'r'r)r	sr	cCsLt|tr|St|tr t|S|r8t|tr8tj|S|rHtd|tS)NzUnable to convert %s to Decimal)r^rrTrorprqr)rrZallow_floatr'r'r)rs


rcCst|tr||fSt|tjrR|jsDt|jtt|j	|j
|j}|t|jfS|rrt|tj
rr|jdkrr|j}t|trt}|rd|jt<n|jtd|tj|fSttfS)Nr%r-z;strict semantics for mixing floats and Decimals are enabled)r^r_numbersZRationalrOr5r6r_rTr7denominatorrN	numeratorZComplexrrrorrrrcrpr)r.rrr/r'r'r)rs$

rri?B)r?r>rrr@r!rrr[)r?r>rra        # A numeric string consists of:
#    \s*
    (?P<sign>[-+])?              # an optional sign, followed by either...
    (
        (?=\d|\.\d)              # ...a number (with at least one digit)
        (?P<int>\d*)             # having a (possibly empty) integer part
        (\.(?P<frac>\d*))?       # followed by an optional fractional part
        (E(?P<exp>[-+]?\d+))?    # followed by an optional exponent, or...
    |
        Inf(inity)?              # ...an infinity, or...
    |
        (?P<signal>s)?           # ...an (optionally signaling)
        NaN                      # NaN
        (?P<diag>\d*)            # with (possibly empty) diagnostic info.
    )
#    \s*
    \Z
z0*$z50*$z\A
(?:
   (?P<fill>.)?
   (?P<align>[<>=^])
)?
(?P<sign>[-+ ])?
(?P<alt>\#)?
(?P<zeropad>0)?
(?P<minimumwidth>(?!0)\d+)?
(?P<thousands_sep>,)?
(?:\.(?P<precision>0|(?!0)\d+))?
(?P<type>[eEfFgGn%])?
\Z
cCstj|}|dkrtd||j}|d}|d}|ddk	|d<|drv|dk	rbtd||dk	rvtd||p|d|d<|pd|d<|d	dkrd
|d	<t|dpd|d<|d
dk	rt|d
|d
<|d
dkr|ddks|ddkrd|d
<|ddkrfd|d<|dkr&tj}|ddk	r@td||d|d<|d|d<|d|d<n*|ddkr|d|d<ddg|d<d|d<|S)NzInvalid format specifier: fillalignzeropadz7Fill character conflicts with '0' in format specifier: z2Alignment conflicts with '0' in format specifier:  >r<rSminimumwidthrPrrr%rjZgGnr-r4rp
thousands_sepzJExplicit thousands separator conflicts with 'n' type in format specifier: grouping
decimal_pointrRrZr)_parse_format_specifier_regexmatchrk	groupdictrT_locale
localeconv)format_specrnrtZformat_dictrrr'r'r)rtDsN

rtc	Cs|d}|d}||t|t|}|d}|dkrF|||}nj|dkr\|||}nT|dkrr|||}n>|dkrt|d}|d|||||d}ntd	|S)
Nrrr<r=^r+zUnrecognised alignment field)rerk)	r<ryrxrrZpaddingrrZhalfr'r'r)rvs"rvcCspddlm}m}|sgS|ddkrJt|dkrJ||dd||dS|d	tjkrd|dd
StddS)Nr%)chainrepeatr-r+z unrecognised format for groupingrrrrr)	itertoolsrrrerCHAR_MAXrk)rrrr'r'r)_group_lengthss
rcCs|d}|d}g}xt|D]}|dkr2tdttt||d|}|jd|t|||d|d|}||8}|r|dkrP|t|8}qWtt||d}|jd|t|||d|jt|S)Nrrr%zgroup length should be positiver-rP)rrkrrrerlrmreversed)rwrx	min_widthseprgroupsr+r'r'r)_insert_thousands_seps $$rcCs$|rdS|ddkr|dSdSdS)NrSr<z +rRr')is_negativerxr'r'r)rus
rucCst||}|s|dr"|d|}|dks6|ddkr\ddddd|d}|d	j||7}|dd
krp|d
7}|dr|dt|t|}nd}t|||}t||||S)
NZaltrr%rjrsrr)rrrqrpz{0}{1:+}rorr)ruformatrerrv)rrurvrUrxr<Zecharrr'r'r)rws
rwZInfz-InfrlllNZoi)N)F)r%)r)r)FF)Fi)N)r-r)|__all__r1rC__version__Z__libmpdec_version__ZmathryZnumbersrrDcollectionsr&Z_namedtuplerImportErrorrrrrrrrrr$maxsizer r!r"r#ArithmeticErrorrrr	rZeroDivisionErrorr
rrrrrr
rrrqrrrrrIr\rArErKhasattrrJrFrrrrr5NumberregisterrMrrhrrTr|rrrrrrrIrFrrrrr8rr	rrrrrrecompileVERBOSE
IGNORECASErr`rrDOTALLrZlocalerrtrvrrrurwrErDr9r4rr3r;	hash_infomodulusrr`rrrrrr'r'r'r)<module>us~


&



.

^

0",#
%$+
	

*

P
%
)