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: //opt/alt/python311/lib64/python3.11/__pycache__/datetime.cpython-311.pyc

hf	dZdZddlZddlZddlZddlmZ	dZ
dZdZdZ
gd	Zd
gZdZeddD]Zeeeez
Z[[dZdZd
ZdZdZedZedZedZedksJedezdzksJedezdz
ksJdZgdZgdZdZdJdZdZ dZ!dZ"dZ#d Z$gd!Z%d"Z&d#Z'd$Z(d%Z)d&Z*d'Z+d(Z,d)Z-d*Z.d+Z/Gd,d-Z0e0d.e0_1e0d/d0d1d1d23e0_2e0d4e0_3Gd5d6Z4e4Z5e4ddde4_1e4dd7d8e4_2e0d9e4_3Gd:d;Z6Gd<d=e7Z8e8Z9[8e6Z:Gd>d?ZeZ;eddde_1ed0d1d1d2e_2e0d4e_3Gd@dAe4Z<e<ddde<_1e<dd7d8d0d1d1d2e<_2e0d4e<_3dBZ=GdCdDe6Z>e>?e0dxZ@e>_Ae>?e0d0d1Ee>_1e>?e0d0d1Ee>_2e<dFdde>jAGZB	ddHlCT[[[[[[[B[
[[[+[,[-[)[*[
[.[5[[[[[ [	[[=[[[[;[:[![[/[$['[&[9[([#[%["ddIlCmZdS#eD$rYdSwxYw)KzConcrete date/time and related types.

See http://www.iana.org/time-zones/repository/tz-link.html for
time zone and DST data sources.
)	datedatetimetime	timedeltatimezonetzinfoMINYEARMAXYEARUTCN)indexc&||krdn	||krdndS)Nrxys  //opt/alt/python311/lib64/python3.11/datetime.py_cmprs Q11QAAB.ri'i۹7)
rrrrrrrrrrrc8|dzdko|dzdkp|dzdkS)zyear -> 1 if leap year, else 0.rdr)years r_is_leapr*s*!8q=AdSjAo@qArc:|dz
}|dz|dzz|dzz
|dzzS)z2year -> number of days before January 1st of year.rmrrrr)rrs  r_days_before_yearr".s/qAS51a4<!S& 1c6))rc|d|cxkrdksnJ||dkrt|rdSt|S)z9year, month -> number of days in that month in that year.r)r_DAYS_IN_MONTHrmonths  r_days_in_monthr*3sRUzzhtnnzr%  rczd|cxkrdksnJdt||dkot|zS)zCyear, month -> number of days in year preceding first day of month.rr$month must be in 1..12r%)_DAYS_BEFORE_MONTHrr(s  r_days_before_monthr.:sO5e$	(DhtnnEErcd|cxkrdksnJdt||}d|cxkr|ksnJd|zt|t||z|zS)z>year, month, day -> ordinal, considering 01-Jan-0001 as day 1.rr$r,day must be in 1..%d)r*r"r.rr)daydims    r_ymd2ordr4?s5
u
%
%C????s?????3c9???d##tU++
,
rieircV|dz}t|t\}}|dzdz}t|t\}}t|t\}}t|d\}}||dz|dzz|zz
}|dks|dkr|dksJ|dz
ddfS|d	ko|d
kp|d	k}|t	|ksJ|dzdz	}t
||d
ko|z}||kr|dz}|t||d
ko|zz}||z}d|cxkrt||ksnJ|||dzfS)z@ordinal -> (year, month, day), considering 01-Jan-0001 as day 1.rrr!rrrr$r2r6r%)divmod_DI400Y_DI100Y_DI4Yrr-r'r*)	nn400rn100n4n1leapyearr)	precedings	         r_ord2ymdrGXs.FAQ  GD!#:>DQ  GD!
1eEB
1cNNEBD3Ja"$$D	Qww$!))AvvvvAvr2~Qw2B"H1	Hx~~%%%%
VME"5)UQY-C8DI1}}

^E*eqj.EXFF	NA////N4////////!r)
NJanFebMarAprMayJunJulAugSepOctNovDec)NMonTueWedThuFriSatSunct|||dzdz}t|||z}tj|||||||||f	S)N)r4r._timestruct_time)	rmdhhmmssdstflagwdaydnums	         r_build_struct_timerhsUQ1!Q&Da##a'DaAr2r4wGHHHrautocdddddd}|dkr|rdnd	}n|d
kr|dz}	||}|||||S#t$rtdwxYw)
Nz{:02d}z
{:02d}:{:02d}z{:02d}:{:02d}:{:02d}z{:02d}:{:02d}:{:02d}.{:03d}z{:02d}:{:02d}:{:02d}.{:06d})hoursminutessecondsmillisecondsmicrosecondsrirormrnzUnknown timespec value)formatKeyError
ValueError)rbrcrdustimespecspecsfmts       r_format_timerxs")55

E6%'6>>Y	^	#	#
t*Hozz"b"b)))33312223sAAc"d}||jdkrd}|}nd}t|td\}}t|td\}}|d|||fzz
}|s|jr!|d	|jzz
}|jr
|d
|jzz
}|S)Nr-+rrkrlz%s%02d:%02dz:%02d.%06d)daysr<rrorm)offssignrbrcrds      r_format_offsetrs
A
8a<<D$CCDYQ///00BIa00011B	]dB^
++
	/	/
2:%%A
/Wr..Hrcd}d}d}g}|j}dt|}	}||	kr||}
|dz
}|
dkr||	kr||}
|dz
}|
dkr-|dt|ddz}||nY|
dkr|d}t|d	r|}|d
}|jdkr|}d}t
|td\}
}t
|td
\}}|j}|j	}|rd||
|||fz}n|r
d||
||fz}nd||
|fz}d|vsJ||n|
dkrV|>d}t|dr,|
}||dd}||n.|d||
n|dn||
||	kd|}tj||S)Nrr%fz%06dmicrosecondzrz	utcoffsetr|r{r}r~z%c%02d%02d%02d.%06dz%c%02d%02d%02dz
%c%02d%02dZtznamez%%)appendlengetattrhasattrrrr<rrmrorreplacejoinr^strftime)objectrq	timetuplefreplacezreplaceZreplace	newformatpushir@choffsetrhrestr`rus                  r_wrap_strftimersHHHIDc&kkqA
a%%
AY	Q
991uuAYQ99'#)GF4A1-F-F$F$$X....3YY'#%"6;77K%+%5%5%7%7F%1'*#);??.4WF+.D*09K9K9K*L*L4*0y7K7K7K*L*L4$(L$*$7#$!K/DaQRTUWXGY/YHH%&!K/?4Aq//QHH/;tQl/JHh....$$X....3YY'#%"6844@ &

A }+,99S$+?+?$$X....DIIIDHHHHS				DHHHca%%d	""I>)Y///rc
|dvS)N
0123456789r)cs r_is_ascii_digitr	s
rct|}|dkrdS|dksJd}d}|d|krk|d|kr]|dkrtd|dkr@|d|kr4|dkrtd|d	krt|d	rdSd	SdSd	S|d|kr>d}||kr!t||sn|d
z
}||k!|dkr|S|dzdkrdSdSdS)
Nr]r{Wrr6zInvalid ISO string	
rr%r)rrsr)dtstr	len_dtstrdate_separatorweek_indicatoridxs     r"_find_isoformat_datetime_separatorrs@E

IA~~qq====NNQx>!!8~%%1}} !56661}}q^!;!;>>$%9:::r>>oeBi&@&@>1rq28~%%C	//&uSz22q	//
Qww
Qw!||qq1rct|dvsJt|dd}|ddk}d|z}|||dzdkr|dz
}t|||dz}|dz
}d}t||krC|||dzdk|krtd||z
}t|||dz}tt	|||St|||dz}|dz
}|||dzdk|krtd||z
}t|||dz}|||gS)	Nr]rrrrr{rrr%z"Inconsistent use of dash separator)rintrslist_isoweek_to_gregorian)rrhas_sepposweeknodaynor)r2s        r_parse_isoformat_daterEsu::####uQqSz??DAh#oG
g+CSq[S  qU3sQw;'((qu::c#'k"c)g55 !EFFF7NCc#'k*++E)$>>???E#cAg+&''q#cAg+#%'11ABBBw%C!G$%%eS!!r)ii'rprrct|}gd}d}tddD]~}||z
dkrtdt|||dz||<|dz
}|||dz}|dkr|dk}|r|dkrn |r|dkrtd|z||z
}||kr||d	vrtd
|dz
}||z
}|dkrd}n|}t||||z|d<|dkr|dxxt|dz
zcc<||kr<tt
t|||zdstd|S)
N)rrrrrr9r%zIncomplete time componentr:zInvalid time separator: %cz.,zInvalid microsecond componentr\z%Non-digit values in unparsed fraction)rrangersr_FRACTION_CORRECTIONallmapr)	tstrlen_str
time_compsrcomp	next_charr
len_remainderto_parses	         r_parse_hh_mm_ss_ffrls$iiGJ
CacMQ8999tCAI//
4qSUO	1993&G	DAIIE	GyC''9IEFFFw
W}}9D  <===1HC#cMM!!(S#h,%7 899JqM!||1


!5hqj!AA


((OT3x<//5J K KLL) !HIIIrct|}|dkrtd|ddzp/|ddzp|ddz}|dkr
|d|dz
n|}t|}d}||kr|ddkr
tj}n|dkr||d}t|d	vrtd
t|}t
d|Dr
tj}nP||dz
dkrdnd}t|d|d|d|d
}	t	||	z}|||S)Nr%zIsoformat time too shortr{rr|rrr)rrr9zMalformed time zone stringc3"K|]
}|dkVdS)rNr).0rs  r	<genexpr>z(_parse_isoformat_time.<locals>.<genexpr>s&((!qAv((((((rr9rkrlrmro)	rrsfindrrutcrrr)
rrtz_postimestrrtzitzstrtz_compstzsigntds
          r_parse_isoformat_timers$iiG{{3444iinnq LDIIcNNQ$6L$))C..1:LF!'!d9F1H9ooG#G,,J
C
T"X__l	!VWW
u::""9:::%e,,((x(((((	(,CC
+s22RRF!hqk#+A;Xa[JJJB6B;''Ccrct|cxkrtksntd|d|cxkrdksOnd}|dkr1t|dddz}|dks|dkrt	|rd	}|rtd
|d|cxkrdksntd|d
|dz
dz|dz
z}t|}||z}t
|S)NzYear is out of range: r5Trr]rr9FzInvalid week: rzInvalid weekday: z (range is [1, 7]))rr	rsr4r_isoweek1mondayrG)rweekr2out_of_range
first_weekday
day_offsetday_1ord_days        rrrs,d%%%%g%%%%8$88999t====b====2::%T1a0014M""}'9'9'/~~(:$	64d44555s;;;;Q;;;;DSDDDEEE(a37+J
D!!Ej GGrcv|4t|ts!tdt|zdSdS)Nz4tzinfo.tzname() must return None or string, not '%s')
isinstancestr	TypeErrortype)names r
_check_tznamersJ
4 5 5#%)$ZZ011	1rc|dvsJ|dSt|ts#td|dt|dtd|cxkrtdksnt	|d|ddS)N)rdstztzinfo.z'() must return None or timedelta, not ''rz()=zG, must be strictly between -timedelta(hours=24) and timedelta(hours=24))rrrrrs)rrs  r_check_utc_offsetrs'''''
~fi((Ii48DD$v,,,,HII	IaLL=60000IaLL0000$$())	)10rcxt|}t|}t|}t|cxkrtks!ntdttfz|d|cxkrdksntd|t	||}d|cxkr|ksntd|z||||fS)Nzyear must be in %d..%drr$r,r0)_indexrr	rsr*r1s    r_check_date_fieldsrs$<<D5MME
++Cd%%%%g%%%%1Wg4FFMMM15999
u
%
%C????s????/#5s;;;rct|}t|}t|}t|}d|cxkrdksntd|d|cxkrdksntd|d|cxkrdksntd|d|cxkrdksntd||d	vrtd
||||||fS)Nrzhour must be in 0..23;zminute must be in 0..59zsecond must be in 0..59?Bz microsecond must be in 0..999999)rrzfold must be either 0 or 1)rrs)hourminutesecondrfolds     r_check_time_fieldsrs$<<D
F^^F
F^^F%%K????????0$777"2F;;;"2F;;;%%%%v%%%%;[III65t<<<d22rcV|$t|tstddSdS)Nz4tzinfo argument must be None or of a tzinfo subclass)rrr)tzs r_check_tzinfo_argr!s/	~jV44~NOOO~~~rcvtdt|jdt|jd)Nzcan't compare 'z' to 'r)rr__name__rs  r	_cmperrorr%s>
)GG$$$d1gg&6&6&68999rct||\}}|dz}|dkr||kn||k}|s||kr|dzdkr|dz
}|S)zdivide a by b and round result to the nearest integer

    When the ratio is exactly half-way between two integers,
    the even integer is returned.
    r%rr)r<)abqrgreater_than_halfs     r_divide_and_roundr)sd!Q<<DAqFA!"QAAEAFFq1uzz	QHrceZdZdZdZ		d"dZdZdZdZe	dZ
e	d	Ze	d
ZdZ
e
ZdZd
ZdZdZdZdZeZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#d Z$d!S)#raRepresent the difference between two datetime objects.

    Supported operators:

    - add, subtract timedelta
    - unary plus, minus, abs
    - compare to timedelta
    - multiply, divide by int

    In addition, datetime supports subtraction of two datetime objects
    returning a timedelta, and addition or subtraction of a datetime
    and a timedelta giving a datetime.

    Representation: (days, seconds, microseconds).  Why?  Because I
    felt like it.
    )_days_seconds
_microseconds	_hashcodercBdx}x}	}
||dzz
}||dz|dzzz
}||dzz
}t|trztj|\}}tj|dz\}}
|
t	|
ksJt	|
}	|t	|ksJt	|}nd}|}t|tsJt|dksJt|tsJt|	d	ksJt|trVtj|\}}|t	|ksJt	|}||z
}t|d
ksJn|}t|tsJt|d
ksJt|tsJt
|d	\}}||z
}|	t	|z
}	t|	tsJt|	dksJ|dz}t|d
ksJt|trCt||z}t
|d\}}t
|d	\}}||z
}|	|z
}	nQt	|}t
|d\}}t
|d	\}}||z
}|	|z
}	t||z}t|	tsJt|tsJt|	dksJt|dksJt
|d\}}
|	|z
}	t
|	d	\}}	||z
}t|tsJt|	trd|	cxkrd	ksnJt|
trd|
cxkrdksnJt|dkrtd|zt
|}||_|	|_|
|_
d|_|S)Nrr]<rpg@gg?Qg@i.Ag@A@BigGAɚ;z$timedelta # of days is too large: %dr)rfloat_mathmodfrabsr<round
OverflowErrorr__new__rrrr	)clsrrmrornrlrkweeksrarrtdayfracdaysecondsfracdaysecondswholesecondsfracusdoubleselfs                 rrztimedelta.__new__PsA	
a72:d
**T))dE""		!Jt,,MGT.3jI9N.O.O+NO"c/&:&:::::O$$A3t99$$$$D		AA NA.%00000>""c))))!S!!!!!1vv""""gu%%	)#(:g#6#6 Kc'll****'llG>)K{##s*****(K+u-----;3&&&&'3'''''w00
g	T		S\\!S!!!!!1vv&&&&$8}}u$$$$lE**	: !899L$*<$A$A!G\"7G44MD'
IA
LAA|,,L$*<$A$A!G\"7G44MD'
IA
LA !899L!S!!!!!,,,,,,1vv&&&&<  5((((\733	WG$$a	T	!S!!!!!!S!!6a1&6&6&6&6w&6&6&6&6&66"c""8qB'8'8'8'8'8'8'8'8'88q66I F JKKK~~c""

rcpg}|jr|d|jz|jr|d|jz|jr|d|jz|s|d|jjd|jjdd|dS)	Nzdays=%dz
seconds=%dzmicroseconds=%d0.(, ))rrrr	__class__
__module____qualname__r)rargss  r__repr__ztimedelta.__repr__s:	0KK	DJ.///=	6KKt}4555	@KK)D,>>???	KK"n777"n999"iioooo/	/rct|jd\}}t|d\}}d|||fz}|jrd}d||jz|z}|jr
|d|jzz}|S)Nrz%d:%02d:%02dc4|t|dkrdpdfS)Nrrrz)r)r@s rpluralz!timedelta.__str__.<locals>.plurals!#a&&A+-#333rz
%d day%s, r)r<rrr)rrcrdrbrr-s      r__str__ztimedelta.__str__s
r**BBBb"b\):	8
4
4
4tz 2 22a7A	1Gd000ArcB|jdz|jzdz|jzdzS)zTotal seconds in the duration.r
r)rrmrors r
total_secondsztimedelta.total_secondss0U"T\1U:!"%*+	+rc|jSrrr0s rrztimedelta.dayszrc|jSrm)rr0s rrmztimedelta.secondss}rc|jSro)rr0s rroztimedelta.microsecondss
!!rct|tr8t|j|jz|j|jz|j|jzSt
SNrrrrrNotImplementedrothers  r__add__ztimedelta.__add__YeY''	GTZ%+5!]U^;!/%2EEGG
Grct|tr8t|j|jz
|j|jz
|j|jz
St
Sr;r<r>s  r__sub__ztimedelta.__sub__rArcFt|tr||zStSr;)rrr=r>s  r__rsub__ztimedelta.__rsub__s&eY''	!55= rcHt|j|j|jSr;)rrrrr0s r__neg__ztimedelta.__neg__s,$*-,,..	.rc|Sr;rr0s r__pos__ztimedelta.__pos__src"|jdkr|S|SNrr4r0s r__abs__ztimedelta.__abs__s:>>5LKrcPt|tr)t|j|z|j|z|j|zSt|trM|}|\}}tddt||z|StSrK)rrrrrrr_to_microsecondsas_integer_ratiorr=rr?usecrrs     r__mul__ztimedelta.__mul__
seS!!	9TZ%/!]U2!/%799
9eU##	C((**D))++DAqQ#4TAXq#A#ABBBrc<|jdz|jzdz|jzS)Nr
rrrrr0s rrNztimedelta._to_microsecondss(w'$-77B"#	$rct|ttfstS|}t|tr||zSt|trtdd||zSdSrK)rrrr=rN)rr?rQs   r__floordiv__ztimedelta.__floordiv__ s%#y!122	"!!$$&&eY''	45113333eS!!	2Q45=111	2	2rct|tttfstS|}t|tr||zSt|trtddt
||St|tr9|\}}tddt
||z|SdSrK)rrrrr=rNrrOrPs     r__truediv__ztimedelta.__truediv__)s%#ui!899	"!!$$&&eY''	3%002222eS!!	CQ#4T5#A#ABBBeU##	C))++DAqQ#4QXq#A#ABBB	C	Crct|tr:||z}tdd|StSrK)rrrNr=)rr?rs   r__mod__ztimedelta.__mod__5sNeY''	&%%''%*@*@*B*BBAQ1%%%rct|trJt||\}}|tdd|fStSrK)rrr<rNr=)rr?rrs    r
__divmod__ztimedelta.__divmod__;saeY''	)$//11002244DAqi1a((((rclt|tr||dkStSrKrrrr=r>s  r__eq__ztimedelta.__eq__D1eY''	"99U##q((!!rclt|tr||dkStSrKr^r>s  r__le__ztimedelta.__le__Jr`rclt|tr||dkStSrKr^r>s  r__lt__ztimedelta.__lt__P1eY''	"99U##a''!!rclt|tr||dkStSrKr^r>s  r__ge__ztimedelta.__ge__Vr`rclt|tr||dkStSrKr^r>s  r__gt__ztimedelta.__gt__\rerct|tsJt||Sr;)rrr	_getstater>s  rrztimedelta._cmpbs<%+++++DNN$$eoo&7&7888rcr|jdkr&t||_|jS)Nrr	hashrkr0s r__hash__ztimedelta.__hash__fs0>R!$.."2"233DN~rcD|jdkp|jdkp
|jdkSrKrTr0s r__bool__ztimedelta.__bool__ks/
a(
"("a'	)rc*|j|j|jfSr;rTr0s rrkztimedelta._getstaters
DM4+=>>rc8|j|fSr;r&rkr0s r
__reduce__ztimedelta.__reduce__u 0 011rN)rrrrrrr)%rr'r(__doc__	__slots__rr*r.r1propertyrrmror@__radd__rCrErGrIrLrR__rmul__rNrVrXrZr\r_rbrdrgrirrorqrkrurrrrr=s BI56:;ccccJ///


+++XX""X"H
...H$$$222
C
C
C"""""""""""""""999
)))???22222rri6errrr)rrkrlrmror9cbeZdZdZdZd$dZedZedZedZ	edZ
ed	Zd
ZdZ
dZd
ZdZeZedZedZedZdZdZd%dZdZdZdZdZdZdZdZdZ e Z!dZ"dZ#dZ$d Z%d!Z&d"Z'd#Z(dS)&raConcrete date type.

    Constructors:

    __new__()
    fromtimestamp()
    today()
    fromordinal()

    Operators:

    __repr__, __str__
    __eq__, __le__, __lt__, __ge__, __gt__, __hash__
    __add__, __radd__, __sub__ (add/radd only with timedelta arg)

    Methods:

    timetuple()
    toordinal()
    weekday()
    isoweekday(), isocalendar(), isoformat()
    ctime()
    strftime()

    Properties (readonly):
    year, month, day
    )_year_month_dayr	NcJ|t|ttfrt|dkrdt	|ddcxkrdkrnnt|tr4	|d}n#t$rtdwxYwt	|}|
|d	|_|St|||\}}}t	|}||_
||_||_d	|_|S)
zVConstructor.

        Arguments:

        year, month, day (required, base 1)
        Nrrr%r9r$latin1znFailed to encode latin1 string when unpickling a date object. pickle.load(data, encoding='latin1') is assumed.r)rbytesrrordencodeUnicodeEncodeErrorrsrr_date__setstater	rr}r~r)rrr)r2rs     rrzdate.__new__s?
MteS\**
/24yyA~~
T!A#Y%%%%2%%%%%$$$
LL;;x00DD)LLL$KLLLL>>#&&DOOD!!!DNK-dE3??eS~~c""
	s-BBc	Xtj|\	}}}}}}}}	}
||||S)z;Construct a date from a POSIX timestamp (like time.time()).)r^	localtime)rtrr`rarbrcrdweekdayjdayrs           r
fromtimestampzdate.fromtimestamps838/!2D2D/1aRWdCs1a||rcRtj}||S)z"Construct a date from time.time().r^rrrrs  rtodayz
date.todays#
JLL  ###rcBt|\}}}||||S)zConstruct a date from a proleptic Gregorian ordinal.

        January 1 of year 1 is day 1.  Only the year, month and day are
        non-zero in the result.
        )rG)rr@rr`ras     rfromordinalzdate.fromordinals'1++1as1a||rct|tstdt|dvrt	d|	|t|S#t$rt	d|wxYw)z2Construct a date from a string in ISO 8601 format.#fromisoformat: argument must be strrInvalid isoformat string: )rrrrrsr	Exception)rdate_strings  r
fromisoformatzdate.fromisoformats+s++	CABBB{:--I+IIJJJ	K3-k::;;	K	K	KI+IIJJJ	Ks	AA8c*|t|||S)z|Construct a date from the ISO year, week number and weekday.

        This is the inverse of the date.isocalendar() function)r)rrrr2s    rfromisocalendarzdate.fromisocalendars
s)$c::;;rc\d|jj|jj|j|j|jfzS)zConvert to formal string, for repr().

        >>> d = date(2010, 1, 1)
        >>> repr(d)
        'datetime.date(2010, 1, 1)'
        z%s.%s(%d, %d, %d))r&r'r(r}r~rr0s rr*z
date.__repr__s4#dn&?&*n&A&*j&*k&*i	&11	1rc|dzpd}dt|t|j|j|jfzS)Return ctime() style string.r]z%s %s %2d 00:00:00 %04d)	toordinal	_DAYNAMES_MONTHNAMESr~rr}rrs  rctimez
date.ctimesH..""Q&+!(g$Itz,##	#rcHt|||S)zQ
        Format using strftime().

        Example: "%d/%m/%Y, %H:%M:%S"
        )rrrrws  rrz
date.strftimes dC)9)9:::rct|ts$tdt|jzt|dkr||St|SNzmust be str, not %srrrrrrrrrs  r
__format__zdate.__format___#s##	H1DII4FFGGGs88q====%%%4yyrc0d|j|j|jfzS)zReturn the date formatted according to ISO.

        This is 'YYYY-MM-DD'.

        References:
        - http://www.w3.org/TR/NOTE-datetime
        - http://www.cl.cam.ac.uk/~mgk25/iso-time.html
        z%04d-%02d-%02d)r}r~rr0s r	isoformatzdate.isoformats 4:t{DI"FFFrc|jS)z
year (1-9999))r}r0s rrz	date.year!r5rc|jS)zmonth (1-12))r~r0s rr)z
date.month&s{rc|jS)z
day (1-31))rr0s rr2zdate.day+syrc	Jt|j|j|jddddS)9Return local time tuple compatible with time.localtime().rr)rhr}r~rr0s rrzdate.timetuple3s)!$*dk49"#Q2//	/rcBt|j|j|jS)zReturn proleptic Gregorian ordinal for the year, month and day.

        January 1 of year 1 is day 1.  Only the year, month and day values
        contribute to the result.
        )r4r}r~rr0s rrzdate.toordinal8s
DK;;;rcl||j}||j}||j}t||||S)z;Return a new date with new values for the specified fields.)r}r~rr)rrr)r2s    rrzdate.replace@s@<:D=KE;)CtDzz$s+++rclt|tr||dkStSrKrrrr=r>s  rr_zdate.__eq__L1eT""	)99U##q((rclt|tr||dkStSrKrr>s  rrbzdate.__le__Qrrclt|tr||dkStSrKrr>s  rrdzdate.__lt__V1eT""	(99U##a''rclt|tr||dkStSrKrr>s  rrgzdate.__ge__[rrclt|tr||dkStSrKrr>s  rrizdate.__gt__`rrct|tsJ|j|j|j}}}|j|j|j}}}t|||f|||fSr;)rrr}r~rr)rr?rr`ray2m2d2s        rrz	date._cmpesZ%&&&&&*dk49a1[%,
BQ1IB|,,,rcr|jdkr&t||_|jS)Hash.rrmr0s rroz
date.__hash__ks0>R!$.."2"233DN~rct|trb||jz}d|cxkrtkr%nn"t||StdtS)zAdd a date to a timedelta.rresult out of range)	rrrr_MAXORDINALrrrr=)rr?os   rr@zdate.__add__ss{eY''	7  5:-A1#########Dzz--a000 5666rct|tr|t|jzSt|tr:|}|}t||z
St
S)z.Subtract two dates, or a date and a timedelta.)rrrrrr=)rr?days1days2s    rrCzdate.__sub__~sseY''	1)UZK0000eT""	,NN$$EOO%%EUU]+++rc6|dzdzS)z:Return day of the week, where Monday == 0 ... Sunday == 6.r\r]rr0s rrzdate.weekdays  1$))rc4|dzpdS)z:Return day of the week, where Monday == 1 ... Sunday == 7.r]rr0s r
isoweekdayzdate.isoweekdays~~!#(q(rcp|j}t|}t|j|j|j}t||z
d\}}|dkr+|dz}t|}t||z
d\}}n#|dkr|t|dzkr|dz
}d}t
||dz|dzS)aReturn a named tuple containing ISO year, week number, and weekday.

        The first ISO week of the year is the (Mon-Sun) week
        containing the year's first Thursday; everything else derives
        from that.

        The first week is 1; Monday is 1 ... Sunday is 7.

        ISO calendar algorithm taken from
        http://www.phys.uu.nl/~vgent/calendar/isocalendar.htm
        (used with permission)
        r]rr4)r}rr4r~rr<_IsoCalendarDate)rrweek1mondayrrr2s      risocalendarzdate.isocalendarsz%d++T[$)<<5;.22	c!88AID)$//Ku{2A66ID##
RZZQ////	d1fc!e444rcnt|jd\}}t|||j|jgfSN)r<r}rr~r)ryhiylos   rrkzdate._getstates5$*c**Sc3TY78899rcB|\}}|_|_|dz|z|_dSr)r~rr})rstringrrs    r
__setstatezdate.__setstates'+1(S$+ty3Y_


rc8|j|fSr;rtr0s rruzdate.__reduce__rvr)NN)NNN))rr'r(rwrxrclassmethodrrrrrr*rrrrr.ryrr)r2rrrr_rbrdrgrirror@rzrCrrrrkrrurrrrr}s67ID[
$$[$
[KK[K<<[<111$###;;;	G	G	GGXXX///
<<<,,,,




---H***)))
555<:::%%%22222rrr$rr3c4eZdZdZdZdZdZdZdZdZ	dS)	rzAbstract base class for time zone info classes.

    Subclasses must override the tzname(), utcoffset() and dst() methods.
    rc td)z%datetime -> string name of time zone.z&tzinfo subclass must override tzname()NotImplementedErrorrdts  rrz
tzinfo.tznames!"JKKKrc td)zIdatetime -> timedelta, positive for east of UTC, negative for west of UTCz)tzinfo subclass must override utcoffset()rrs  rrztzinfo.utcoffsets!"MNNNrc td)zdatetime -> DST offset as timedelta, positive for east of UTC.

        Return 0 if DST not in effect.  utcoffset() must include the DST
        offset.
        z#tzinfo subclass must override dst()rrs  rrz
tzinfo.dsts""GHHHrczt|tstd|j|urt	d|}|t	d|}|t	d||z
}|r*||z
}|}|t	d||zS)z*datetime in UTC -> datetime in local time.z&fromutc() requires a datetime argumentzdt.tzinfo is not selfNz0fromutc() requires a non-None utcoffset() resultz*fromutc() requires a non-None dst() resultz;fromutc(): dt.dst gave inconsistent results; cannot convert)rrrrrsrr)rrdtoffdtdstdeltas     rfromutcztzinfo.fromutcs"h''	FDEEE
9D  4555=&''
'
=IJJJ
	<%KBFFHHE} ";<<<Ezrczt|dd}|r|}nd}|j||fS)N__getinitargs__r)rr&__getstate__)rgetinitargsr)s   rruztzinfo.__reduce__sId$5t<<	;==DDDd&7&7&9&9::rN)
rr'r(rwrxrrrrrurrrrrsyILLLOOOIII:;;;;;rrcleZdZfdZedZedZedZdZdZ	xZ
S)IsoCalendarDatecNt||||fSr;)superr)rrrrr&s    rrzIsoCalendarDate.__new__s"wwsT4$9:::rc|dSrKrr0s rrzIsoCalendarDate.yearAwrc|dS)Nrrr0s rrzIsoCalendarDate.week	rrc|dSNr%rr0s rrzIsoCalendarDate.weekday
rrc0tt|ffSr;)tupler0s rruzIsoCalendarDate.__reduce__sd~&&rcV|jjd|dd|dd|ddS)Nz(year=rz, week=rz
, weekday=r%r%)r&rr0s rr*zIsoCalendarDate.__repr__s[>*GGaGG)-aGG<@GGGG	Hr)rr'r(rryrrrrur*
__classcell__)r&s@rrrs;;;;;XXX'''
HHHHHHHrrcLeZdZdZdZd&dddZedZedZed	Z	ed
Z
edZedZd
Z
dZdZdZdZd'dZdZdZdZd(dZeZedZdZdZdZdZdZ		d)ddd Zd*d"Z d#Z!d$Z"d%Z#dS)+ra<Time with time zone.

    Constructors:

    __new__()

    Operators:

    __repr__, __str__
    __eq__, __le__, __lt__, __ge__, __gt__, __hash__

    Methods:

    strftime()
    isoformat()
    utcoffset()
    tzname()
    dst()

    Properties (readonly):
    hour, minute, second, microsecond, tzinfo, fold
    )_hour_minute_second_microsecond_tzinfor	_foldrNrct|ttfrt|dkrt	|dddzdkrt|tr4	|d}n#t$rtdwxYwt	|}|
||pdd	|_|St|||||\}}}}}t|t	|}||_||_||_||_||_d	|_||_|S)
zConstructor.

        Arguments:

        hour, minute (required)
        second, microsecond (default to zero)
        tzinfo (default to None)
        fold (keyword only, default to zero)
        r\rrr:rznFailed to encode latin1 string when unpickling a time object. pickle.load(data, encoding='latin1') is assumed.Nr)rrrrrrrrsrr_time__setstater	rrrrrrrr)rrrrrrrrs        rrztime.__new__8s^
teS\**	s4yyA~~QqS	NN4"$$$$$
LL;;x00DD)LLL$KLLLL>>#&&DOOD&.D111DNK2D&&+t3535/ffk4&!!!~~c""
'
s$A::Bc|jSzhour (0-23)rr0s rrz	time.hour`r5rc|jSz
minute (0-59)rr0s rrztime.minutee|rc|jSz
second (0-59)rr0s rrztime.secondjr
rc|jSzmicrosecond (0-999999)rr0s rrztime.microsecondo
  rc|jSztimezone info objectrr0s rrztime.tzinfotr
rc|jSr;rr0s rrz	time.foldy
zrcpt|tr||ddkStS)NTallow_mixedrrrrr=r>s  rr_ztime.__eq__s5eT""	"99U955::!!rclt|tr||dkStSrKrr>s  rrbztime.__le__1eT""	"99U##q((!!rclt|tr||dkStSrKrr>s  rrdztime.__lt__1eT""	"99U##a''!!rclt|tr||dkStSrKrr>s  rrgztime.__ge__rrclt|tr||dkStSrKrr>s  rriztime.__gt__rrFc\t|tsJ|j}|j}dx}}||urd}n.|}|}||k}|r@t	|j|j|j|jf|j|j|j|jfS|||rdStd|jdz|jz|tdzz
}|jdz|jz|tdzz
}	t	||j|jf|	|j|jfS)NTr%z$cannot compare naive and aware timesrrr~)rrrrrrrrrrr)
rr?rmytzottzmyoffotoffbase_comparemyhhmmothhmms
          rrz	time._cmpsY%&&&&&|}4<<LLNN$$EOO%%E E>L	.T\4<*,emU]+-..
.=EM
Hq FGGGb4</%19M9M9M2MMr!EM1E9Q;O;O;O4OOVT\4+<=U]E,>?AA	Arc|jdkr1|jr|d}n|}|}|s-t	|d|_nt
t|j|j	|z
td\}}|tdzr
Jd|tdz}d|cxkrd	kr2nn/t	t|||j|j|_n"t	|||j|jf|_|jS)
rrrrrkrlrr}r~zwhole minuter:)
r	rrrrnrkr<rrrrrr)rrtzoffrr`s     rroz
time.__hash__s<>Ry
LLaL((KKMME

Q!%akkmmA&6!7!7idiMMMPUU'a000221y3333CC^CC3i****;;;;B;;;;;%)$q!T[$BR*S*S%T%TDNN%)1ad>N*O%P%PDN~rcH|}t|S)z=Return formatted timezone offset (+xx:xx) or an empty string.)rr)rrs  r_tzstrztime._tzstrsnnc"""rcf|jdkrd|j|jfz}n|jdkrd|jz}nd}d|jj|jj|j|j|fz}|j(|dddksJ|ddd	|jzzdz}|jr|dddksJ|ddd
z}|S)%Convert to formal string, for repr().rz, %d, %dz, %drzz%s.%s(%d, %d%s)Nrr%, tzinfo=%r	, fold=1))	rrr&r'r(rrrrrrs  rr*z
time.__repr__s!!dlD,=>>AA
\Q

%AAA 9 $ ; $
DL! ==<#RSS6S====#2#55;A:	%RSS6S====#2#$Arrict|j|j|j|j|}|}|r||z
}|S)aReturn the time formatted according to ISO.

        The full format is 'HH:MM:SS.mmmmmm+zz:zz'. By default, the fractional
        part is omitted if self.microsecond == 0.

        The optional argument timespec specifies the number of additional
        terms of the time to include. Valid options are 'auto', 'hours',
        'minutes', 'seconds', 'milliseconds' and 'microseconds'.
        )rxrrrrr.)rrurrs    rrztime.isoformatsJ
T\4<+X
7
7
[[]]
	
GArct|tstd|d}	|t	|S#t
$rt
d|wxYw)z>Construct a time from a string in one of the ISO 8601 formats.rTr)rrrremoveprefixrrrs)rtime_strings  rrztime.fromisoformats+s++	CABBB
"..s33	K3-k::;;	K	K	KI+IIJJJ	KsA

A*c	Xddd|j|j|jdddf	}t|||S)z{Format using strftime().  The date part of the timestamp passed
        to underlying strftime should not be used.
        ilrrr)rrrr)rrwrs   rrz
time.strftimes:1aZt|2	dC333rct|ts$tdt|jzt|dkr||St|Srrrs  rrztime.__format__rrcl|jdS|jd}td||S)z^Return the timezone offset as timedelta, positive east of UTC
         (negative west of UTC).Nrrrrrrs  rrztime.utcoffset";<4''--+v...
rcj|jdS|jd}t||SaReturn the timezone name.

        Note that the name is 100% informational -- there's no requirement that
        it mean anything in particular. For example, "GMT", "UTC", "-500",
        "-5:00", "EDT", "US/Eastern", "America/New York" are all valid replies.
        Nrrrrrs  rrztime.tzname+9<4|""4((drcl|jdS|jd}td||SaqReturn 0 if DST is not in effect, or the DST offset (as timedelta
        positive eastward) if DST is in effect.

        This is purely informational; the DST offset has already been added to
        the UTC offset returned by utcoffset() if applicable, so there's no
        need to consult dst() unless you're interested in displaying the DST
        info.
        Nrrrrr=s  rrztime.dst8;<4!!$''%(((
rTc||j}||j}||j}||j}|dur|j}||j}t
|||||||S)z;Return a new time with new values for the specified fields.NTr)rrrrrrr)rrrrrrrs       rrztime.replaceGsu<9D>[F>[F*KT>>[F<:DtDzz$V$OOOOrr9ct|jd\}}t|d\}}|j}|jr|dkr|dz
}t	||j|j|||g}|j|fS||jfSNrr9)r<rrrrrrr)rprotocolus2us3us1r	basestates       rrkztime._getstateZs$+S11S#s##SJ:	(Q,,
HA1dlDLS*++	<<t|,,rc|$t|tstd|\}|_|_}}}|dkrd|_|dz
|_nd|_||_|dz|zdz|z|_||_dS)Nbad tzinfo state argrrrKrr)	r
_tzinfo_classrrrrrrr)rrrrrOrMrNs       rrztime.__setstategsj&G&G23337=44<sCs77DJSDJJDJDJ"ax3.14;rc:|j||fSr;rtrrLs  r
__reduce_ex__ztime.__reduce_ex__tx 8 899rc,|dSrrVr0s rruztime.__reduce__w!!!$$$rrrrrNFri)NNNNTr9)$rr'r(rwrxrryrrrrrrr_rbrdrgrirror.r*rr.rrrrrrrrrkrrVrurrrrrsn,_I%UV%%%%%PXXX!!X!XX"""""""""""""""AAAA8.###
&"G
K
K[
K 	4	4	4


HLP%)PPPPP&----:::%%%%%rrcHeZdZdZejejzZ		d7dddZedZ	edZ
edZed	Zed
Z
edZedZed8d
ZedZed8dZedZed9dZedZdZdZdZdZdZdZdZ		d:dddZdZd8dZdZd;d!Z d"Z!d#Z"ed$Z#d%Z$d&Z%d'Z&d(Z'd)Z(d*Z)d+Z*d,Z+d<d.Z,d/Z-e-Z.d0Z/d1Z0d=d3Z1d4Z2d5Z3d6Z4dS)>rzdatetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])

    The year, month and day arguments are required. tzinfo may be None, or an
    instance of a tzinfo subclass. The remaining arguments may be ints.
    Nrrc	t|ttfrt|dkrdt	|dddzcxkrdkrnn}t|tr/	t|d}n#t
$rt
dwxYwt|}
|
	||d	|
_
|
St|||\}}}t|||||	\}}}}}	t|t|}
||
_||
_||
_||
_||
_||
_||
_||
_d	|
_
|	|
_|
S)
Nrrr%r9rr$rzrFailed to encode latin1 string when unpickling a datetime object. pickle.load(data, encoding='latin1') is assumed.r)rrrrrrrsrr_datetime__setstater	rrrr}r~rrrrrrr)rrr)r2rrrrrrrs           rrzdatetime.__new__steS\**	s4yyB
T!A#Y$*********$$$
LL x00DD)LLL$KLLLL>>#&&DOOD%(((DNK-dE3??eS2D&&+t3535/ffk4&!!!~~c""
	
'
s.A??Bc|jSrrr0s rrz
datetime.hourr5rc|jSrr	r0s rrzdatetime.minuter
rc|jSrr
r0s rrzdatetime.secondr
rc|jSrrr0s rrzdatetime.microsecondrrc|jSrrr0s rrzdatetime.tzinfor
rc|jSr;rr0s rrz
datetime.foldrrc
tj|\}}t|dz}|dkr|dz
}|dz}n|dkr
|dz}|dz
}|rtjntj}||\	}}}	}
}}}
}}t
|d}||||	|
||||}||sd}||kr!tj	dr|S|||z
dd	\}}}	}
}}||||	|
||||}||z
td|z
}|jdkrM|||tddzzdd	\}}}	}
}}||||	|
||||}||krd|_n||
|}|S)
Construct a datetime from a POSIX timestamp (like time.time()).

        A timezone info object may be passed in as well.
        rrrrrNr
winr\)rrrr^gmtimerminsysplatform
startswithrrrr)rrrrfracrt	converterrr`rarbrcrdrrrresultmax_fold_secondsprobe1transprobe2s                     r_fromtimestampzdatetime._fromtimestamps*Q--a
4#:


==
FA'MBB
!VV
FA'MB$'<ELLU_	2;)A,,/1aRWdC
R[[Q1b"b"b11
:c: )###(?(?(F(F#
"+)A0@,@"A"A"1""EAq!RRSAq"b"b"55FVOi3C&D&DDEzA~~&/iEYq!__4L0L&M&Mbqb&Q#1aRQ1b"b"b99V###$FL
^ZZ''F
rcRt||||du|S)riN)rrw)rrrs   rrzdatetime.fromtimestamps.	"!!!Rt^R888rc0||ddS)z6Construct a naive UTC datetime from a POSIX timestamp.TN)rwrs  rutcfromtimestampzdatetime.utcfromtimestamps!!!T4000rcTtj}|||S)zBConstruct a datetime from time.time() and optional time zone info.r)rrrs   rnowzdatetime.nows%
JLL  B'''rcRtj}||S)z*Construct a UTC datetime from time.time().)r^rrzrs  rutcnowzdatetime.utcnows#
JLL##A&&&rTc t|tstdt|tstd|dur|j}||j|j|j|j|j	|j
|j||j		S)z8Construct a datetime from a given date and a given time.z%date argument must be a date instancez%time argument must be a time instanceTr)
r_date_classr_time_classrrr)r2rrrrr)rrrrs    rcombinezdatetime.combines$,,	ECDDD$,,	ECDDDT>>[Fs49dj$(9dk4;8H	+++	+rct|tstdt|dkrt	d|	t|}|d|}||dzd}t
|}n!#t$rt	d|dwxYw|r2	t|}n%#t$rt	d|dwxYwgd}|||zS)zBConstruct a datetime from a string in one of the ISO 8601 formats.rr]rrrNr[)rrrrrsrrr)rrseparator_locationdstrrdate_componentstime_componentss       rrzdatetime.fromisoformatsY+s++	CABBB{aI+IIJJJ	H!CK!P!Pq!334D 21 4667D3D99OO	H	H	H<[<<>>CG
H	H	1
L"7"="=
L
L
L @@@BBGKL
L100Os_688s5BB%B55Cc	|}|d}n|rd}nd}t|j|j|j|j|j|j|S)rNrrr)rrhrr)r2rrr)rrs  rrzdatetime.timetuple=s]hhjj;CC
	CCC!$)TZ"&)T[$+"%''	'rc
tddd
d}|
z
tddz}
fd}|||z
}||z
}||}||kr*|||f|jz}|||z
}||kr|Sn
||z
}||ksJ||z
}||}	|	|kr|S||kr|Sttf|j||S)zReturn integer POSIX timestamp.rr
rctj|dd\}}}}}}t||||||z
tddzS)Nr\rr)r^rrr)rrr`rarbrcrdepochs       rlocalzdatetime._mktime.<locals>.localOsR"'/!"4"4RaR"8Aq!RRQ1b"b11E9i1ooMMr)rrrmaxrl)rrsrrru1t1u2rt2rs          @r_mktimezdatetime._mktimeJs(q!$$$
E\i1oo-	N	N	N	N	N

E!HHqL
U
U2YY
77((*:;DIFFBb		BAAvv	RA6666
U
U2YY
77I
77ISz$)$R,,,rc|j!|}||jdzzS|tz
S)zReturn POSIX timestamp as floatNr)rrr_EPOCHr1r3s  r	timestampzdatetime.timestampms@<At'#---6M00222rc	|}|r||z}|j|j|j}}}|j|j|j}}}t||||||dS)z4Return UTC time tuple compatible with time.gmtime().r)rrr)r2rrrrh)rrrr`rarbrcrds        rutctimetuplezdatetime.utctimetupleusb!!	FND)TZa1YT[B!!Q2r2q999rcBt|j|j|jS)zReturn the date part.)rr}r~rr0s rrz
datetime.date~sDJTY777rc\t|j|j|j|j|jS)z'Return the time part, with tzinfo None.r)rrrrrrr0s rrz
datetime.times(DIt{DK9IPTPYZZZZrcht|j|j|j|j|j|jS)z'Return the time part, with same tzinfo.r)rrrrrrrr0s rtimetzzdatetime.timetzs3DIt{DK9ILty222	2rc	||j}||j}||j}||j}||j}||j}||j}|dur|j}|	|j}	t||||||||||			S)z?Return a new datetime with new values for the specified fields.NTr)
rr)r2rrrrrrr)
rrr)r2rrrrrrs
          rrzdatetime.replaces<9D=JE;(C<9D>[F>[F*KT>>[F<9DtDzz$sD&&%vD:::	:rc|j|}n|tz
tdz}t	j|}t
|dd}|j}|j}tt||S)Nrr7r\)
rrrrr^rr	tm_gmtofftm_zoner)rtslocaltmrgmtoffzones      r_local_timezonezdatetime._local_timezones};BB-Ia$8$8$88B/"%%'"1"+&"	&1114888rc||}n$t|tstd|j}|*|}||}nT||}|=|d}||}||ur|S||z
|}||S)Nz)tz argument must be an instance of tzinfor)rrrrrrr)rrr#myoffsetrs     r
astimezonezdatetime.astimezones
:%%''BBB''	IGHHH{<''))D~~d++HH~~d++H||4|00@@BB>>$//
::Kh''r'22zz#rc|dzpd}dt|t|j|j|j|j|j|jfzS)rr]z%s %s %2d %02d:%02d:%02d %04d)	rrrr~rrrrr}rs  rrzdatetime.ctimesV..""Q&+!.g$IJdlJ2	rr6ricd|j|j|j|fzt|j|j|j|j|z}|}t|}|r||z
}|S)aReturn the time formatted according to ISO.

        The full format looks like 'YYYY-MM-DD HH:MM:SS.mmmmmm'.
        By default, the fractional part is omitted if self.microsecond == 0.

        If self.tzinfo is not None, the UTC offset is also attached, giving
        giving a full format of 'YYYY-MM-DD HH:MM:SS.mmmmmm+HH:MM'.

        Optional argument sep specifies the separator between date and
        time, default 'T'.

        The optional argument timespec specifies the number of additional
        terms of the time to include. Valid options are 'auto', 'hours',
        'minutes', 'seconds', 'milliseconds' and 'microseconds'.
        z%04d-%02d-%02d%c)
r}r~rrxrrrrrr)rseprurrrs      rrzdatetime.isoformatsw  4:t{DIs"K
K
$*dlDL+X777nn
C
 
 
	
GArc
|j|j|j|j|j|j|jg}|ddkr|d=|ddkr|d=|jjd|jj	dd
tt|d}|j
(|dddksJ|ddd|j
zzdz}|jr|dddksJ|ddd	z}|S)
r0rrr"r#r$r%Nr1r2)r}r~rrrrrr&r'r(rrrrr)rLrs   rr*zdatetime.__repr__s
Zdi
Zt|T5F
HR5A::"R5A::">444>66699Sa[[1111
3<#RSS6S====#2#55;A:	%RSS6S====#2#$Arc.|dS)zConvert to string, for str(). )r)rr0s rr.zdatetime.__str__s~~#~&&&rc8ddl}||||S)zKstring, format -> new datetime parsed from a string (like time.strptime()).rN)	_strptime_strptime_datetime)rrrqrs    rstrptimezdatetime.strptimes(	++CfEEErcl|jdS|j|}td||S)z\Return the timezone offset as timedelta positive east of UTC (negative west of
        UTC).Nrr<r=s  rrzdatetime.utcoffset
r>rcj|jdS|j|}t||Sr@rArBs  rrzdatetime.tznamerCrcl|jdS|j|}td||SrErFr=s  rrzdatetime.dst#rGrct|tr||ddkSt|tstSdS)NTrrF)rrrrr=r>s  rr_zdatetime.__eq__4sLeX&&	99U955::E4((	!!5rct|tr||dkSt|tstSt||dSrKrrrrr=rr>s  rrbzdatetime.__le__<YeX&&	#99U##q((E4((	#!!dE"""""rct|tr||dkSt|tstSt||dSrKrr>s  rrdzdatetime.__lt__DYeX&&	#99U##a''E4((	#!!dE"""""rct|tr||dkSt|tstSt||dSrKrr>s  rrgzdatetime.__ge__Lrrct|tr||dkSt|tstSt||dSrKrr>s  rrizdatetime.__gt__TrrFc
t|tsJ|j}|j}dx}}||urd}n|}|}|rh|||jkrdS|||jkrdS||k}|rdt
|j|j|j	|j
|j|j|j
f|j|j|j	|j
|j|j|j
fS|||rdStd||z
}|jdkrdS|rdpdS)NTrr%z(cannot compare naive and aware datetimesrrr)rrrrrrrr}r~rrrrrrr)	rr?rr#r$r%r&r'diffs	         rrz
datetime._cmp\s%*****|}4<<LLNN$$EOO%%E
DLL$)mL<<FFHHHH1EMM5:~M>>HHJJJJ1 E>L	.T[$)T\4<*,elEJemU]+-..
.=EM
Lq JKKKe|9q==2zQrc
t|tstSt||j|j|j|j}||z
}t|j	d\}}t|d\}}d|j
cxkrtkr_nn\t|
t|j
t!||||j|jSt'd)zAdd a datetime and a timedelta.rrrrrr)rrr=rrrrrr<rmrrrrrrrrorr)rr?rrremrrs       rr@zdatetime.__add__s%++	"!!$..** $
"&,"&,'+'8	:::
	5=$//	cRuz(((([(((((::%%d&6&6uz&B&B&*4+0+=26,'@'@'@AA
A1222rc2t|ts"t|tr||zStS|}|}|j|jdzz|jdzz}|j|jdzz|jdzz}t||z
||z
|j|jz
}|j	|j	ur|S|
}|
}||kr|S||td||z|z
S)z6Subtract two datetimes, or a datetime and a timedelta.rrNz(cannot mix naive and timezone-aware time)rrrr=rrrrrrrr)	rr?rrsecs1secs2baser%r&s	         rrCzdatetime.__sub__s)%**	"%++
%uf}$!!  !!t|b004:3DD

 22U[45GG*U-??AA<5=((K  !!E>>K=EMFGGGe|e##rc|jdkr|jr|d}n|}|}|-t	|d|_nht
|j|j|j	}|j
dz|jdzz|jz}t	t|||j|z
|_|jS)Nrrrrr)r	rrrrnrkr4rr)r2rrrrr)rrr,rrms     rrozdatetime.__hash__s>Ry
LLaL((KKMME}!%akkmmA&6!7!7	4:tx@@)d*T[2-==K!%igt?O&P&PSX&X!Y!Y~rr9c:t|jd\}}t|jd\}}t|d\}}|j}|jr|dkr|dz
}t||||j|j|j|j	|||g
}|j
|fS||j
fSrJ)r<r}rr~rrrrrrr)	rrLrrrMrNrOr`rPs	         rrkzdatetime._getstates$*c**S$+S11S#s##SK:	(Q,,
HA3Q	:t|T\S*++	<<t|,,rc
.|$t|tstd|\
}}}|_|_|_|_}}}|dkrd|_|dz
|_nd|_||_|dz|z|_	|dz|zdz|z|_
||_dS)NrRrrrKrrr)rrSrrrrrrr~r}rr)	rrrrrr`rOrMrNs	         rrzdatetime.__setstatesj&G&G23336<	4c1di	
t|S#ss77DJc'DKKDJDK3Y_
"ax3.14;rc:|j||fSr;rtrUs  rrVzdatetime.__reduce_ex__rWrc,|dSrrYr0s rruzdatetime.__reduce__rZr)NNrrrrNr;)T)NNNNNNNT)r6rir\r^)5rr'r(rwrrxrrryrrrrrrrrwrrzr|r~rrrrrrrrrrrrr*r.rrrrr_rbrdrgrirr@rzrCrorkrarVrurrrrrs
/IJK&*!45!!!!!HXXX!!X!XX))[)V999[911[1((([(
''['

+
+
+[
+99[9<''' - - -F333:::888[[[222
=ACG::::::2
9
9
966&'''FF[F



"################J333&H$$$0


"
-
-
-
-


:::%%%%%rrc\d}t|dd}|dzdz}||z
}||kr|dz
}|S)Nr9rr\r])r4)rTHURSDAYfirstdayfirstweekdayrs     rrrsMHa##HqLA%L\)KhqrceZdZdZeZefdZeddZdZ	dZ
dZdZd	Z
d
ZdZdZd
ZeddZeZedZdS)r)_offset_namec8t|tstd||jur|s|jSd}n$t|t
std|j|cxkr|jksntd|	||S)Nzoffset must be a timedeltazname must be a stringzYoffset must be a timedelta strictly between -timedelta(hours=24) and timedelta(hours=24).)
rrr_Omittedrr
_minoffset
_maxoffsetrs_create)rrrs   rrztimezone.__new__s&),,	:89993<
wDDD#&&	53444~99993>9999455
5{{64(((rNcVt|}||_||_|Sr;)rrrr)rrrrs    rrztimezone._create		s&~~c""
rc<|j|jfS|j|jfS)zpickle support)rrr0s rrztimezone.__getinitargs__	s#:L?"dj))rcZt|tr|j|jkStSr;)rrrr=r>s  rr_ztimezone.__eq__	s)eX&&	1<5=00rc*t|jSr;)rnrr0s rroztimezone.__hash__	sDL!!!rc||jurdS|j$|jjd|jjd|jdS|jjd|jjd|jd|jdS)aConvert to formal string, for repr().

        >>> tz = timezone.utc
        >>> repr(tz)
        'datetime.timezone.utc'
        >>> tz = timezone(timedelta(hours=-5), 'EST')
        >>> repr(tz)
        "datetime.timezone(datetime.timedelta(-1, 68400), 'EST')"
        zdatetime.timezone.utcNr"r#r%r$)rrr&r'r(rr0s rr*ztimezone.__repr__	s48**:"&.";";";"&."="="="&,,,0
0#'.";";";"&."="="="&,,,


<	<rc,|dSr;)rr0s rr.ztimezone.__str__2	s{{4   rc\t|ts||jStd)Nz8utcoffset() argument must be a datetime instance or None)rrrrrs  rrztimezone.utcoffset5	s7b(##	 rz<#$$	$rct|ts|(|j||jS|jStd)Nz5tzname() argument must be a datetime instance or None)rrr_name_from_offsetrrrs  rrztimezone.tzname;	sUb(##	rzz!--dl;;;:#$$	$rcRt|ts|dStd)Nz2dst() argument must be a datetime instance or None)rrrrs  rrztimezone.dstC	s4b(##	rz4#$$	$rct|tr"|j|urtd||jzStd)Nzfromutc: dt.tzinfo is not selfz6fromutc() argument must be a datetime instance or None)rrrrsrrrs  rrztimezone.fromutcI	s\b(##	%y$$ "/000$$#$$	$rr:r)rkroc
H|sdS|tdkrd}|}nd}t|td\}}t|td\}}|j}|j}|rd||dd	|dd	|dd
|d	S|rd||dd	|dd	|dSd||dd	|dS)Nr
rr{r|rr}r~02drr"06d)rr<rmro)rrrkrrlrmros       rrztimezone._name_from_offsetU	s*	59Q<<DFEEDUIA$6$6$677ttYq%9%9%9::
,(	,+$+G++GG++'G++$*++
,	GFFuFFF7FFFFFFF4T45444w4444rr;)rr'r(rxrrrrrrr_ror*r.rrrrrrrstaticmethodrrrrrrs"IvxxH"*
)
)
)
)[***
"""<<<(!!!$$$$$$$$$$$$"555JJ55\555rrr+rr)*)rwr])Erw__all__rr^mathrrmoperatorrrrrr	rr'r-dbmr3rrr"r*r.r4r=r>r?rGrrrhrxrrrrrrrrrrrrrrrrrrlr
resolutionrrrrrrrSrrrrrr
rr	_datetimeImportErrorrrr<module>rs(



$$$$$$///
FEET!""Cc"""3JCCBBB***
!!!FFF

C
 
 

C
 
 

A


!g+/!!!!"u*q.    <<<~???CCC	III
*****


&=0=0=0@666r!"!"!"H655...`,,,^B111
)
)
)333"PPP999


(y2y2y2y2y2y2y2y2v		*%%	
	yB'-///	
 ya000	}2}2}2}2}2}2}2}2~	41a==4b")###:;:;:;:;:;:;:;:;zHHHHHeHHH6#
Y%Y%Y%Y%Y%Y%Y%Y%v
41a==4BF##)+++`	%`	%`	%`	%`	%t`	%`	%`	%Fx1a  xb"b"b&99iQ///			r5r5r5r5r5vr5r5r5h%%iill333hl
R!@!@!@ @AA		B ? ? ?@@	$1X\	2	2	2L"

&	[2D	/	M+<dI	(*;^	~vx%	5+}nh	13H	-/D	+-A	
"!!!!!!!'			DD	s2K((K10K1