???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5dX                    @   sR  d dl Zd dlZd dlZdd ZdZdZdZddd	dd
dd
ddd
dd
dgZ	dgZ
d Ze	dd D ]Ze
e ee7 Zq`[[dd Zdd Zdd Zdd Zdd ZedZedZedZdd Zdddddddd d!d"d#d$d%gZdd&d'd(d)d*d+d,gZd-d. Zdhd0d1Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Z d>d? Z!d@dA Z"dBdC Z#dDdE Z$dFdG Z%dHdI Z&dJdK Z'G dLdM dMZ(e(dNe(_)e(dOdPdQdQdRdSe(_*e(ddTe(_+G dUdV dVZ,e,Z-e,ddde,_)e,ddWde,_*e(ddXe,_+G dYdZ dZZ.e.Z/G d[d\ d\Z e Z0e d d d e _)e dPdQdQdRe _*e(ddTe _+G d]d^ d^e,Z1e1ddde1_)e1ddWddPdQdQdRe1_*e(ddTe1_+d_d` Z2G dadb dbe.Z3e34e(d e3_5e34e(dPdQdc e3_)e34e(dPdQdce3_*e1dddde3j5deZ6zd dfl7T W n e8k
r   Y nXX [[
[	[[[[6[[[[#["[$[%[ [![[&[-[[[[[[[2[[[[0[/[[['[[[d dgl7m9Z9 dS )i    Nc                 C   s   | |krdS | |krdS dS )Nr       xyr   r    /usr/lib64/python3.8/datetime.py_cmp   s    r	   r   i'  i۹7 r            c                 C   s$   | d dko"| d dkp"| d dkS )N   r   d     r   )yearr   r   r   _is_leap%   s    r   c                 C   s(   | d }|d |d  |d  |d  S )Nr   m  r   r   r   r   )r   r   r   r   r   _days_before_year)   s    r   c                 C   s   |dkrt | rdS t| S )N      )r   _DAYS_IN_MONTHr   monthr   r   r   _days_in_month.   s    r   c                 C   s   t | |dkot|  S Nr   )_DAYS_BEFORE_MONTHr   r   r   r   r   _days_before_month5   s    r   c                 C   s    t | |}t| t| | | S N)r   r   r   r   r   daydimr   r   r   _ymd2ord:   s    
r!   i  e      c           	      C   s   | d8 } t | t\}} |d d }t | t\}} t | t\}} t | d\}} ||d |d  | 7 }|dkst|dkr|d ddfS |dko|d	kp|dk}| d
 d? }t| |dko| }|| kr|d8 }|t| |dko| 8 }| |8 } ||| d fS )Nr   r   r   r   r      r
         2   r#   r   )divmod_DI400Y_DI100Y_DI4Yr   r   )	nZn400r   Zn100Zn4Zn1Zleapyearr   Z	precedingr   r   r   _ord2ymdS   s"    r-   ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecZMonZTueZWedZThuZFriZSatZSunc           	      C   s>   t | ||d d }t| || }t| ||||||||f	S N      )r!   r   _timestruct_time)	r   mdhhmmssZdstflagZwdayZdnumr   r   r   _build_struct_time   s    r8   autoc                 C   st   dddddd}|dkr&|r dnd	}n|d
kr6|d }z|| }W n t k
r^   tdY nX || |||S d S )Nz{:02d}z{:02d}:{:02d}z{:02d}:{:02d}:{:02d}z{:02d}:{:02d}:{:02d}.{:03d}z{:02d}:{:02d}:{:02d}.{:06d})hoursminutessecondsmillisecondsmicrosecondsr9   r>   r<   r=     zUnknown timespec value)KeyError
ValueErrorformat)r5   r6   r7   ustimespecZspecsfmtr   r   r   _format_time   s    rF   c                 C   s   d}| d k	r| j dk r"d}|  } nd}t| tdd\}}t|tdd\}}|d|||f 7 }|sj|jr|d	|j 7 }|jr|d
|j 7 }|S )N r   -+r   r:   r;   z%s%02d:%02dz:%02d.%06d)daysr(   	timedeltar>   r<   )offssignr5   r6   r7   r   r   r   _format_offset   s    

rR   c                 C   s  d }d }d }g }|j }dt| }}	||	k r|| }
|d7 }|
dkr||	k r|| }
|d7 }|
dkr|d krdt| dd }| | q|
dkr^|d krRd}t| d	rR|  }|d k	rRd
}|jdk r| }d}t|tdd\}}t|tdd\}}|j}|j	}|r,d|||||f }n&|rDd||||f }nd|||f }| | n^|
dkr|d krd}t| dr| 
 }|d k	r|dd}| | n|d ||
 n|d q$||
 q$d|}t||S )Nr   r   %fz%06dmicrosecondzrG   	utcoffsetrI   rH   rJ   rK   z%c%02d%02d%02d.%06dz%c%02d%02d%02dz
%c%02d%02dZtznamez%%)appendlengetattrhasattrrW   rM   r(   rN   r<   r>   rY   replacejoinr1   strftime)objectrB   	timetupleZfreplaceZzreplaceZZreplaceZ	newformatpushir,   ZchoffsetrQ   hrestr3   rP   ur   r   r   _wrap_strftime   sl    


 










ri   c                 C   sj   t | dd }| d dkr,td| d  t | dd }| d dkrPtdt | dd	 }|||gS )
Nr   r   rH   zInvalid date separator: %sr#   r0   zInvalid date separator   
   )intrA   )Zdtstrr   r   r   r   r   r   _parse_isoformat_date  s    rm   c                 C   s
  t | }ddddg}d}tddD ]t}|| dk r:tdt| ||d  ||< |d7 }| ||d  }|rv|dkrz q|dkrtd| |d7 }q"||k r| | dkrtd	nN|d7 }|| }|d
krtd	t| |d  |d< |dkr|d  d9  < |S )Nr   r%   r   zIncomplete time componentr   :zInvalid time separator: %c.zInvalid microsecond component)r%   r/   r?   )r[   rangerA   rl   )tstrlen_str
time_compsposcompZ	next_charZlen_remainderr   r   r   _parse_hh_mm_ss_ff  s2    



rv   c           
      C   s   t | }|dk rtd| dd p2| dd }|dkrL| d |d  n| }t|}d }|dkr| |d  }t |dkrtdt|}td	d
 |D rtj}nD| |d  dkrdnd}t|d |d |d |d d}	t||	 }|| |S )Nr   zIsoformat time too shortrH   r   rI   r   )r#   rj      zMalformed time zone stringc                 s   s   | ]}|d kV  qdS )r   Nr   ).0r   r   r   r   	<genexpr>T  s     z(_parse_isoformat_time.<locals>.<genexpr>r   r%   r:   r;   r<   r>   )	r[   rA   findrv   alltimezoneutcrN   rZ   )
rq   rr   Ztz_posZtimestrrs   ZtziZtzstrZtz_compsZtzsignZtdr   r   r   _parse_isoformat_time;  s,     
r   c                 C   s&   | d k	r"t | ts"tdt|  d S )Nz4tzinfo.tzname() must return None or string, not '%s')
isinstancestr	TypeErrortype)namer   r   r   _check_tznamed  s    r   c                 C   s^   |d krd S t |ts*td| t|f td |  k rHtdk sZn td| |f d S )Nz3tzinfo.%s() must return None or timedelta, not '%s'r   zN%s()=%s, must be strictly between -timedelta(hours=24) and timedelta(hours=24))r   rN   r   r   rA   )r   re   r   r   r   _check_utc_offseto  s    

 r   c                 C   s   t | tr| S t | tr tdz|  } W n tk
r@   Y n"X t | ts^tdt| j | S | }z|  } W n tk
r   Y nDX t | tstdt| j dd l	}|j
dt|j tdd | S tdt| j d S )Nz$integer argument expected, got floatz$__index__ returned non-int (type %s)z"__int__ returned non-int (type %s)r   z$an integer is required (got type %s)r   )
stacklevel)r   rl   floatr   	__index__AttributeErrorr   __name____int__warningswarnDeprecationWarning)valueZorigr   r   r   r   _check_int_field{  sB    



r   c                 C   s   t | } t |}t |}t|   kr,tks@n tdttf | d|  krTdks`n td|t| |}d|  kr~|ksn td| || ||fS )Nzyear must be in %d..%dr   r$   zmonth must be in 1..12zday must be in 1..%d)r   MINYEARMAXYEARrA   r   r   r   r   r   _check_date_fields  s    

r   c                 C   s   t | } t |}t |}t |}d|   kr4dks@n td| d|  krTdks`n td|d|  krtdksn td|d|  krdksn td||d	krtd
|| ||||fS )Nr      zhour must be in 0..23;   zminute must be in 0..59zsecond must be in 0..59?B z microsecond must be in 0..999999)r   r   zfold must be either 0 or 1)r   rA   )hourminutesecondrU   foldr   r   r   _check_time_fields  s    




r   c                 C   s   | d k	rt | tstdd S )Nz4tzinfo argument must be None or of a tzinfo subclass)r   tzinfor   )tzr   r   r   _check_tzinfo_arg  s    r   c                 C   s    t dt| jt|jf d S )Nzcan't compare '%s' to '%s')r   r   r   r   r   r   r   	_cmperror  s     r   c                 C   sR   t | |\}}|d9 }|dkr&||kn||k }|sF||krN|d dkrN|d7 }|S )Nr   r   r   )r(   )abqrZgreater_than_halfr   r   r   _divide_and_round  s    r   c                   @   s  e Zd ZdZd>ddZdd Zdd Zd	d
 Zedd Z	edd Z
edd Zdd ZeZdd Zdd Zdd Zdd Zdd Zdd ZeZdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Z d7d8 Z!d9d: Z"d;d< Z#d=S )?rN   )_days_seconds_microseconds	_hashcoder   c                 C   s  d } }	}
||d 7 }||d |d  7 }||d 7 }t |trtt|\}}t|d \}}t|}	t|}nd}|}t |trt|\}}t|}||7 }n|}t|d\}}||7 }|	t|7 }	|d	 }t |trt|| }t|d
\}}t|d\}}||7 }|	|7 }	n@t|}t|d
\}}t|d\}}||7 }|	|7 }	t|| }t|d
\}}
|	|7 }	t|	d\}}	||7 }t|dkrtd| t	
| }||_|	|_|
|_d|_|S )Nr   r0   <     r?   g     @g        Q     .A@B ɚ;z$timedelta # of days is too large: %dr   )r   r   _mathmodfrl   r(   roundabsOverflowErrorra   __new__r   r   r   r   )clsrM   r<   r>   r=   r;   r:   Zweeksr4   rP   rC   ZdayfracZdaysecondsfracZdaysecondswholeZsecondsfracZusdoubleselfr   r   r   r     sZ    




ztimedelta.__new__c                 C   sp   g }| j r|d| j   | jr0|d| j  | jrF|d| j  |sT|d d| jj| jjd|f S )Nzdays=%dz
seconds=%dzmicroseconds=%d0	%s.%s(%s), )r   rZ   r   r   	__class__
__module____qualname__r_   )r   argsr   r   r   __repr__M  s    
ztimedelta.__repr__c                 C   sd   t | jd\}}t |d\}}d|||f }| jrLdd }d|| j | }| jr`|d| j  }|S )Nr   z%d:%02d:%02dc                 S   s   | t | dkrdpdfS )Nr   rP   rG   )r   )r,   r   r   r   plural`  s    z!timedelta.__str__.<locals>.pluralz
%d day%s, rL   )r(   r   r   r   )r   r6   r7   r5   rP   r   r   r   r   __str__[  s    ztimedelta.__str__c                 C   s   | j d | j d | j d S Nr   r   )rM   r<   r>   r   r   r   r   total_secondsg  s
    ztimedelta.total_secondsc                 C   s   | j S r   r   r   r   r   r   rM   m  s    ztimedelta.daysc                 C   s   | j S r   )r   r   r   r   r   r<   r  s    ztimedelta.secondsc                 C   s   | j S r   )r   r   r   r   r   r>   w  s    ztimedelta.microsecondsc                 C   s2   t |tr.t| j|j | j|j | j|j S tS r   r   rN   r   r   r   NotImplementedr   otherr   r   r   __add__|  s    


ztimedelta.__add__c                 C   s2   t |tr.t| j|j | j|j | j|j S tS r   r   r   r   r   r   __sub__  s    


ztimedelta.__sub__c                 C   s   t |tr|  | S tS r   )r   rN   r   r   r   r   r   __rsub__  s    

ztimedelta.__rsub__c                 C   s   t | j | j | j S r   )rN   r   r   r   r   r   r   r   __neg__  s    ztimedelta.__neg__c                 C   s   | S r   r   r   r   r   r   __pos__  s    ztimedelta.__pos__c                 C   s   | j dk r|  S | S d S Nr   r   r   r   r   r   __abs__  s    
ztimedelta.__abs__c                 C   s`   t |tr(t| j| | j| | j| S t |tr\|  }| \}}tddt	|| |S t
S r   )r   rl   rN   r   r   r   r   _to_microsecondsas_integer_ratior   r   r   r   usecr   r   r   r   r   __mul__  s    


ztimedelta.__mul__c                 C   s   | j d | j d | j S r   r   r   r   r   r   r   r   r     s    ztimedelta._to_microsecondsc                 C   sN   t |ttfstS |  }t |tr0||  S t |trJtdd|| S d S r   )r   rl   rN   r   r   )r   r   r   r   r   r   __floordiv__  s    

ztimedelta.__floordiv__c                 C   s~   t |tttfstS |  }t |tr2||  S t |trNtddt||S t |trz| \}}tddt|| |S d S r   )r   rl   r   rN   r   r   r   r   r   r   r   r   __truediv__  s    


ztimedelta.__truediv__c                 C   s*   t |tr&|  |  }tdd|S tS r   )r   rN   r   r   )r   r   r   r   r   r   __mod__  s    
ztimedelta.__mod__c                 C   s4   t |tr0t|  | \}}|tdd|fS tS r   )r   rN   r(   r   r   )r   r   r   r   r   r   r   
__divmod__  s    
ztimedelta.__divmod__c                 C   s    t |tr| |dkS tS d S r   r   rN   r	   r   r   r   r   r   __eq__  s    
ztimedelta.__eq__c                 C   s    t |tr| |dkS tS d S r   r   r   r   r   r   __le__  s    
ztimedelta.__le__c                 C   s    t |tr| |dk S tS d S r   r   r   r   r   r   __lt__  s    
ztimedelta.__lt__c                 C   s    t |tr| |dkS tS d S r   r   r   r   r   r   __ge__  s    
ztimedelta.__ge__c                 C   s    t |tr| |dkS tS d S r   r   r   r   r   r   __gt__  s    
ztimedelta.__gt__c                 C   s   t |  | S r   )r	   	_getstater   r   r   r   r	     s    ztimedelta._cmpc                 C   s   | j dkrt|  | _ | j S Nr   r   hashr   r   r   r   r   __hash__  s    
ztimedelta.__hash__c                 C   s   | j dkp| jdkp| jdkS r   r   r   r   r   r   __bool__  s
    
ztimedelta.__bool__c                 C   s   | j | j| jfS r   r   r   r   r   r   r   
  s    ztimedelta._getstatec                 C   s   | j |  fS r   r   r   r   r   r   r   
__reduce__  s    ztimedelta.__reduce__N)r   r   r   r   r   r   r   )$r   r   r   	__slots__r   r   r   r   propertyrM   r<   r>   r   __radd__r   r   r   r   r   r   __rmul__r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   rN     sP           
e


				rN   i6er   r   r   r   )rM   r:   r;   r<   r>   )r>   c                   @   s<  e Zd ZdZdCddZedd Zedd Zed	d
 Zedd Z	edd Z
dd Zdd Zdd Zdd Zdd ZeZedd Zedd Zedd Zdd  Zd!d" ZdDd#d$Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 ZeZ d5d6 Z!d7d8 Z"d9d: Z#d;d< Z$d=d> Z%d?d@ Z&dAdB Z'dS )Edate)_year_month_dayr   Nc                 C   s   |d krt |ttfrt|dkrdt|dd   krBdkrn nTt |tr|z|d}W n tk
rz   tdY nX t	| }|
| d|_|S t|||\}}}t	| }||_||_||_d|_|S )	Nr   r   r   r%   r$   latin1znFailed to encode latin1 string when unpickling a date object. pickle.load(data, encoding='latin1') is assumed.r   )r   bytesr   r[   ordencodeUnicodeEncodeErrorrA   ra   r   _date__setstater   r   r   r   r   )r   r   r   r   r   r   r   r   r   3  s8    
 





zdate.__new__c              	   C   s(   t |\	}}}}}}}}	}
| |||S r   )r1   	localtime)r   tr   r3   r4   r5   r6   r7   weekdayjdaydstr   r   r   fromtimestampU  s    zdate.fromtimestampc                 C   s   t  }| |S r   r1   timer   r   r   r   r   r   today[  s    z
date.todayc                 C   s   t |\}}}| |||S r   )r-   )r   r,   r   r3   r4   r   r   r   fromordinala  s    zdate.fromordinalc                 C   sH   t |tstdz| t| W S  tk
rB   td|Y nX d S N#fromisoformat: argument must be strInvalid isoformat string: )r   r   r   rm   	ExceptionrA   )r   date_stringr   r   r   fromisoformatk  s    
zdate.fromisoformatc           	      C   s   t |  krtks$n td| d|  k r8dk sn d}|dkrrt|ddd }|dksn|dkrrt|rrd	}|rtd
| d|  k rdk sn td| d|d d |d  }t|}|| }| t| S )NzYear is out of range: r   5   Tr   r0   r   r%   FzInvalid week: rj   zInvalid weekday: z (range is [1, 7]))r   r   rA   r!   r   _isoweek1mondayr-   )	r   r   weekr   Zout_of_rangeZfirst_weekdayZ
day_offsetZday_1Zord_dayr   r   r   fromisocalendarw  s$    zdate.fromisocalendarc                 C   s    d| j j| j j| j| j| jf S )Nz%s.%s(%d, %d, %d))r   r   r   r   r   r   r   r   r   r   r     s    zdate.__repr__c                 C   s.   |   d pd}dt| t| j | j| jf S )Nr0   z%s %s %2d 00:00:00 %04d)	toordinal	_DAYNAMES_MONTHNAMESr   r   r   r   r   r   r   r   ctime  s     z
date.ctimec                 C   s   t | ||  S r   )ri   rb   r   rE   r   r   r   r`     s    zdate.strftimec                 C   s:   t |tstdt|j t|dkr2| |S t| S Nzmust be str, not %sr   r   r   r   r   r   r[   r`   r  r   r   r   
__format__  s
    

zdate.__format__c                 C   s   d| j | j| jf S )Nz%04d-%02d-%02d)r   r   r   r   r   r   r   	isoformat  s    	zdate.isoformatc                 C   s   | j S r   )r   r   r   r   r   r     s    z	date.yearc                 C   s   | j S r   )r   r   r   r   r   r     s    z
date.monthc                 C   s   | j S r   )r   r   r   r   r   r     s    zdate.dayc                 C   s   t | j| j| jddddS )Nr   r   )r8   r   r   r   r   r   r   r   rb     s       zdate.timetuplec                 C   s   t | j| j| jS r   )r!   r   r   r   r   r   r   r   r    s    zdate.toordinalc                 C   s:   |d kr| j }|d kr| j}|d kr*| j}t| |||S r   )r   r   r   r   )r   r   r   r   r   r   r   r^     s    zdate.replacec                 C   s   t |tr| |dkS tS r   r   r   r	   r   r   r   r   r   r     s    
zdate.__eq__c                 C   s   t |tr| |dkS tS r   r  r   r   r   r   r     s    
zdate.__le__c                 C   s   t |tr| |dk S tS r   r  r   r   r   r   r     s    
zdate.__lt__c                 C   s   t |tr| |dkS tS r   r  r   r   r   r   r     s    
zdate.__ge__c                 C   s   t |tr| |dkS tS r   r  r   r   r   r   r     s    
zdate.__gt__c                 C   sB   | j | j| j  }}}|j |j|j  }}}t|||f|||fS r   )r   r   r   r	   )r   r   r   r3   r4   Zy2Zm2Zd2r   r   r   r	     s    z	date._cmpc                 C   s   | j dkrt|  | _ | j S r   r   r   r   r   r   r     s    
zdate.__hash__c                 C   sJ   t |trF|  |j }d|  k r,tkr>n nt| |S tdtS )Nr   result out of range)	r   rN   r  rM   _MAXORDINALr   r  r   r   )r   r   or   r   r   r   %  s    
zdate.__add__c                 C   sD   t |tr| t|j  S t |tr@|  }| }t|| S tS r   )r   rN   rM   r   r  r   )r   r   days1days2r   r   r   r   0  s    

zdate.__sub__c                 C   s   |   d d S r.   r  r   r   r   r   r   :  s    zdate.weekdayc                 C   s   |   d pdS )Nr0   r  r   r   r   r   
isoweekday@  s    zdate.isoweekdayc                 C   s   | j }t|}t| j | j| j}t|| d\}}|dk r^|d8 }t|}t|| d\}}n$|dkr|t|d kr|d7 }d}||d |d fS )Nr0   r   r   4   )r   r	  r!   r   r   r(   )r   r   week1mondayr   r
  r   r   r   r   isocalendarE  s    zdate.isocalendarc                 C   s&   t | jd\}}t||| j| jgfS N   )r(   r   r   r   r   )r   yhiylor   r   r   r   c  s    zdate._getstatec                 C   s"   |\}}| _ | _|d | | _d S r!  )r   r   r   )r   stringr#  r$  r   r   r   
__setstateg  s    zdate.__setstatec                 C   s   | j |  fS r   r   r   r   r   r   r   k  s    zdate.__reduce__)NN)NNN)(r   r   r   r   r   classmethodr   r   r  r  r  r   r  r`   r  r  r   r   r   r   r   rb   r  r^   r   r   r   r   r   r	   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r     sV   
"


	

$



	
r   r$   )rM   c                   @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )r   r   c                 C   s   t dd S )Nz&tzinfo subclass must override tzname()NotImplementedErrorr   dtr   r   r   rY   |  s    ztzinfo.tznamec                 C   s   t dd S )Nz)tzinfo subclass must override utcoffset()r(  r*  r   r   r   rW     s    ztzinfo.utcoffsetc                 C   s   t dd S )Nz#tzinfo subclass must override dst()r(  r*  r   r   r   r     s    z
tzinfo.dstc                 C   s   t |tstd|j| k	r$td| }|d kr<td| }|d krTtd|| }|r||7 }| }|d krtd|| S )Nz&fromutc() requires a datetime argumentzdt.tzinfo is not selfz0fromutc() requires a non-None utcoffset() resultz*fromutc() requires a non-None dst() resultz;fromutc(): dt.dst gave inconsistent results; cannot convert)r   datetimer   r   rA   rW   r   )r   r+  ZdtoffZdtdstdeltar   r   r   fromutc  s"    

ztzinfo.fromutcc                 C   sf   t | dd }|r| }nd}t | dd }|r4| }nt | dd pBd }|d krV| j|fS | j||fS d S )N__getinitargs__r   __getstate____dict__)r\   r   )r   Zgetinitargsr   getstatestater   r   r   r     s    
ztzinfo.__reduce__N)	r   r   r   r   rY   rW   r   r.  r   r   r   r   r   r   u  s   r   c                   @   s&  e Zd ZdZdAddddZedd Zed	d
 Zedd Zedd Z	edd Z
edd Zdd Zdd Zdd Zdd Zdd ZdBddZd d! Zd"d# Zd$d% ZdCd'd(ZeZed)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 ZdDddd6d7ZdEd9d:Zd;d< Z d=d> Z!d?d@ Z"dS )Fr   )_hour_minute_second_microsecond_tzinfor   _foldr   Nr   c                C   s   t |ttfrt|dkrt|dd d@ dk rt |trhz|d}W n tk
rf   tdY nX t	| }|
||p~d  d|_|S t|||||\}}}}}t| t	| }||_||_||_||_||_d|_||_|S )	Nr/   r   r      r&   r   znFailed to encode latin1 string when unpickling a time object. pickle.load(data, encoding='latin1') is assumed.r   )r   r   r   r[   r   r   r   rA   ra   r   _time__setstater   r   r   r4  r5  r6  r7  r8  r9  )r   r   r   r   rU   r   r   r   r   r   r   r     s>    



    
ztime.__new__c                 C   s   | j S r   r4  r   r   r   r   r     s    z	time.hourc                 C   s   | j S r   r5  r   r   r   r   r     s    ztime.minutec                 C   s   | j S r   r6  r   r   r   r   r     s    ztime.secondc                 C   s   | j S r   r7  r   r   r   r   rU     s    ztime.microsecondc                 C   s   | j S r   r8  r   r   r   r   r     s    ztime.tzinfoc                 C   s   | j S r   r9  r   r   r   r   r     s    z	time.foldc                 C   s$   t |tr| j|dddkS tS d S )NTallow_mixedr   r   r   r	   r   r   r   r   r   r     s    
ztime.__eq__c                 C   s    t |tr| |dkS tS d S r   rE  r   r   r   r   r   #  s    
ztime.__le__c                 C   s    t |tr| |dk S tS d S r   rE  r   r   r   r   r   )  s    
ztime.__lt__c                 C   s    t |tr| |dkS tS d S r   rE  r   r   r   r   r   /  s    
ztime.__ge__c                 C   s    t |tr| |dkS tS d S r   rE  r   r   r   r   r   5  s    
ztime.__gt__Fc           
      C   s   | j }|j }d  }}||kr"d}n|  }| }||k}|rht| j| j| j| jf|j|j|j|jfS |d ksx|d kr|rdS td| jd | j |tdd  }|jd |j |tdd  }	t|| j| jf|	|j|jfS )NTr   z$cannot compare naive and aware timesr   r   rK   )	r8  rW   r	   r4  r5  r6  r7  r   rN   )
r   r   rD  mytzottzmyoffotoffbase_compareZmyhhmmZothhmmr   r   r   r	   ;  s2    z	time._cmpc                 C   s   | j dkr| jr| jdd}n| }| }|sBt| d | _ nztt| j| j	d| tdd\}}|tdd }d|  krdk rn ntt
||| j| j| _ nt||| j| jf| _ | j S )	Nr   r   r:  r:   r;   r   rJ   rK   r&   )r   r   r^   rW   r   r   r(   rN   r   r   r   r   rU   )r   r   tzoffrf   r3   r   r   r   r   W  s    
ztime.__hash__c                 C   s   |   }t|S r   )rW   rR   )r   rO   r   r   r   _tzstrn  s    ztime._tzstrc                 C   s   | j dkrd| j| j f }n| jdkr2d| j }nd}d| jj| jj| j| j|f }| jd k	rx|d d d| j  d }| jr|d d d	 }|S )
Nr   z, %d, %dz, %drG   z%s.%s(%d, %d%s)r   , tzinfo=%r)	, fold=1))	r7  r6  r   r   r   r4  r5  r8  r9  r   rP   r   r   r   r   s  s     

  
ztime.__repr__r9   c                 C   s0   t | j| j| j| j|}|  }|r,||7 }|S r   )rF   r4  r5  r6  r7  rM  )r   rD   rP   r   r   r   r   r    s    
 ztime.isoformatc                 C   sH   t |tstdz| t| W S  tk
rB   td|Y nX d S r  )r   r   r   r   r  rA   )r   Ztime_stringr   r   r   r    s    
ztime.fromisoformatc              	   C   s(   ddd| j | j| jdddf	}t| ||S )Nil  r   r   r   )r4  r5  r6  ri   )r   rE   rb   r   r   r   r`     s        ztime.strftimec                 C   s:   t |tstdt|j t|dkr2| |S t| S r  r  r  r   r   r   r    s
    

ztime.__format__c                 C   s(   | j d krd S | j d }td| |S NrW   r8  rW   r   r   re   r   r   r   rW     s
    

ztime.utcoffsetc                 C   s&   | j d krd S | j d }t| |S r   r8  rY   r   r   r   r   r   r   rY     s
    
ztime.tznamec                 C   s(   | j d krd S | j d }td| |S Nr   r8  r   r   rT  r   r   r   r     s
    	

ztime.dstTc                C   sl   |d kr| j }|d kr| j}|d kr*| j}|d kr8| j}|dkrF| j}|d krT| j}t| ||||||dS NTr:  )r   r   r   rU   r   r9  r   )r   r   r   r   rU   r   r   r   r   r   r^     s    ztime.replacer%   c                 C   sp   t | jd\}}t |d\}}| j}| jr:|dkr:|d7 }t|| j| j|||g}| jd krb|fS || jfS d S Nr"  r%      )r(   r7  r4  r9  r   r5  r6  r8  )r   protocolus2us3us1rf   	basestater   r   r   r     s      
ztime._getstatec                 C   st   |d k	rt |tstd|\}| _| _}}}|dkrHd| _|d | _nd| _|| _|d> |B d> |B | _|| _d S )Nbad tzinfo state argr;  r   r[  r   rj   )	r   _tzinfo_classr   r5  r6  r9  r4  r7  r8  )r   r%  r   rf   r_  r]  r^  r   r   r   r&    s    ztime.__setstatec                 C   s   | j | |fS r   r   r   r\  r   r   r   __reduce_ex__  s    ztime.__reduce_ex__c                 C   s
   |  dS r   rd  r   r   r   r   r     s    ztime.__reduce__)r   r   r   r   N)F)r9   )NNNNT)r%   )#r   r   r   r   r   r   r   r   r   rU   r   r   r   r   r   r   r   r	   r   rM  r   r  r   r'  r  r`   r  rW   rY   r   r^   r   r<  rd  r   r   r   r   r   r     sR   (








		  
r   c                   @   s  e Zd Zejej ZdcddddZedd Zedd	 Z	ed
d Z
edd Zedd Zedd Zedd ZeddddZedd ZededdZedd ZedfddZedd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zdgddd/d0Zd1d2 Zdhd3d4Zd5d6 Zdid9d:Zd;d< Z d=d> Z!ed?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*djdRdSZ+dTdU Z,e,Z-dVdW Z.dXdY Z/dkd[d\Z0d]d^ Z1d_d` Z2dadb Z3dS )lr,  Nr   r:  c	                C   s  t |ttfrt|dkrdt|dd d@   kr>dkrn nVt |trxzt|d}W n tk
rv   tdY nX t| }
|
	|| d	|
_
|
S t|||\}}}t|||||	\}}}}}	t| t| }
||
_||
_||
_||
_||
_||
_||
_||
_d	|
_
|	|
_|
S )
Nrk   r   r   r%   r;  r$   r   zrFailed to encode latin1 string when unpickling a datetime object. pickle.load(data, encoding='latin1') is assumed.r   )r   r   r   r[   r   r   rA   ra   r   _datetime__setstater   r   r   r   r   r   r   r4  r5  r6  r7  r8  r9  )r   r   r   r   r   r   r   rU   r   r   r   r   r   r   r     sL     



    
zdatetime.__new__c                 C   s   | j S r   r=  r   r   r   r   r   C  s    zdatetime.hourc                 C   s   | j S r   r>  r   r   r   r   r   H  s    zdatetime.minutec                 C   s   | j S r   r?  r   r   r   r   r   M  s    zdatetime.secondc                 C   s   | j S r   r@  r   r   r   r   rU   R  s    zdatetime.microsecondc                 C   s   | j S r   rA  r   r   r   r   r   W  s    zdatetime.tzinfoc                 C   s   | j S r   rB  r   r   r   r   r   \  s    zdatetime.foldc              	   C   sp  t |\}}t|d }|dkr4|d7 }|d8 }n|dk rL|d8 }|d7 }|rVtjntj}||\	}}}	}
}}}}}t|d}| |||	|
||||}|d krbd}||k rtj	dr|S ||| d d \}}}	}
}}| |||	|
||||}|| t
d| }|jdk rl|||t
dd  d d \}}}	}
}}| |||	|
||||}||krld|_n
||}|S )	Nr   r   r   r   r   r   winr/   )r   r   r   r1   gmtimer   minsysplatform
startswithrN   rM   r9  r.  )r   r   r~   r   ZfracrC   Z	converterr   r3   r4   r5   r6   r7   r   r   r   resultmax_fold_secondsZprobe1ZtransZprobe2r   r   r   _fromtimestamp`  s4    


 *

zdatetime._fromtimestampc                 C   s   t | | ||d k	|S r   )r   ro  )r   r   r   r   r   r   r     s    zdatetime.fromtimestampc                 C   s   |  |dd S )NT)ro  r   r   r   r   utcfromtimestamp  s    zdatetime.utcfromtimestampc                 C   s   t  }| ||S r   r   )r   r   r   r   r   r   now  s    zdatetime.nowc                 C   s   t  }| |S r   )r1   r   rp  r   r   r   r   utcnow  s    zdatetime.utcnowTc                 C   s\   t |tstdt |ts$td|dkr2|j}| |j|j|j|j|j	|j
|j||jd	S )Nz%date argument must be a date instancez%time argument must be a time instanceTr:  )r   _date_classr   _time_classr   r   r   r   r   r   r   rU   r   )r   r   r   r   r   r   r   combine  s    

    zdatetime.combinec                 C   s   t |tstd|dd }|dd  }zt|}W n" tk
rX   td|Y nX |rzt|}W q tk
r   td|Y qX nddddd g}| ||  S )Nr  r   rk      r  )r   r   r   rm   rA   r   )r   r  Zdstrrq   Zdate_componentsZtime_componentsr   r   r   r    s    
zdatetime.fromisoformatc                 C   sD   |   }|d krd}n|r d}nd}t| j| j| j| j| j| j|S )Nr   r   r   )r   r8   r   r   r   r   r   r   )r   r   r   r   r   rb     s      zdatetime.timetuplec           
         s   t ddd d}|   tdd } fdd}||| }|| }||}||kr|| |f| j  }||| }||kr|S n|| }|| }||}	|	|kr|S ||kr|S ttf| j ||S )N  r   r   r   c                    s>   t | d d \}}}}}}t||||||  tdd S )Nr/   r   r   )r1   r   r,  rN   )rh   r   r3   r4   r5   r6   r7   Zepochr   r   local  s    zdatetime._mktime.<locals>.local)r,  rN   r   maxri  )
r   rn  r   ry  r   Zu1t1Zu2r   t2r   rx  r   _mktime  s(    zdatetime._mktimec                 C   s0   | j d kr |  }|| jd  S | t  S d S )Nr   )r8  r}  rU   _EPOCHr   rQ  r   r   r   	timestamp  s    
zdatetime.timestampc                 C   sT   |   }|r| |8 } | j| j| j  }}}| j| j| j  }}}t||||||dS r   )rW   r   r   r   r   r   r   r8   )r   re   r   r3   r4   r5   r6   r7   r   r   r   utctimetuple  s    zdatetime.utctimetuplec                 C   s   t | j| j| jS r   )r   r   r   r   r   r   r   r   r     s    zdatetime.datec                 C   s   t | j| j| j| j| jdS Nr:  )r   r   r   r   rU   r   r   r   r   r   r     s    zdatetime.timec                 C   s    t | j| j| j| j| j| jdS r  )r   r   r   r   rU   r8  r   r   r   r   r   timetz  s     zdatetime.timetzc	          
      C   s   |d kr| j }|d kr| j}|d kr*| j}|d kr8| j}|d krF| j}|d krT| j}|d krb| j}|dkrp| j}|	d kr~| j}	t	| |||||||||	d	S rY  )
r   r   r   r   r   r   rU   r   r   r   )
r   r   r   r   r   r   r   rU   r   r   r   r   r   r^     s.      zdatetime.replacec                 C   s\   | j d kr|  }n| t tdd }t|}t|d d  }|j}|j}t	t|d|S )Nr   )r<   r/   )
r   r}  r~  rN   r1   r   r,  	tm_gmtofftm_zoner}   )r   ZtsZlocaltmry  ZgmtoffZzoner   r   r   _local_timezone4  s    


zdatetime._local_timezonec                 C   s   |d kr|   }nt|ts$td| j}|d krF|   }|| }n,|| }|d krr| jd d  }|| }||kr~| S | | j|d}||S )Nz)tz argument must be an instance of tzinfor   )r  r   r   r   rW   r^   r.  )r   r   rF  Zmyoffsetr~   r   r   r   
astimezone@  s     



zdatetime.astimezonec                 C   s:   |   d pd}dt| t| j | j| j| j| j| jf S )Nr0   z%s %s %2d %02d:%02d:%02d %04d)	r  r  r  r   r   r4  r5  r6  r   r  r   r   r   r  [  s      zdatetime.ctimeTr9   c                 C   sN   d| j | j| j|f t| j| j| j| j| }|  }t	|}|rJ||7 }|S )Nz%04d-%02d-%02d%c)
r   r   r   rF   r4  r5  r6  r7  rW   rR   )r   seprD   rP   rO   r   r   r   r   r  e  s     zdatetime.isoformatc                 C   s   | j | j| j| j| j| j| jg}|d dkr2|d= |d dkrD|d= d| jj| jj	d
tt|f }| jd k	r|d d d| j  d }| jr|d d d }|S )Nr   r   r   r   rN  rO  rP  )r   r   r   r4  r5  r6  r7  r   r   r   r_   mapr   r8  r9  )r   LrP   r   r   r   r     s&       
zdatetime.__repr__c                 C   s   | j ddS )N )r  )r  r   r   r   r   r     s    zdatetime.__str__c                 C   s   dd l }|| ||S r   )	_strptimeZ_strptime_datetime)r   r  rB   r  r   r   r   strptime  s    zdatetime.strptimec                 C   s(   | j d krd S | j | }td| |S rR  rS  rT  r   r   r   rW     s
    

zdatetime.utcoffsetc                 C   s&   | j d krd S | j | }t| |S r   rU  rV  r   r   r   rY     s
    
zdatetime.tznamec                 C   s(   | j d krd S | j | }td| |S rW  rX  rT  r   r   r   r     s
    	

zdatetime.dstc                 C   s2   t |tr| j|dddkS t |ts*tS dS d S )NTrC  r   F)r   r,  r	   r   r   r   r   r   r   r     s
    

zdatetime.__eq__c                 C   s4   t |tr| |dkS t |ts&tS t| | d S r   r   r,  r	   r   r   r   r   r   r   r   r     s
    

zdatetime.__le__c                 C   s4   t |tr| |dk S t |ts&tS t| | d S r   r  r   r   r   r   r     s
    

zdatetime.__lt__c                 C   s4   t |tr| |dkS t |ts&tS t| | d S r   r  r   r   r   r   r     s
    

zdatetime.__ge__c                 C   s4   t |tr| |dkS t |ts&tS t| | d S r   r  r   r   r   r   r     s
    

zdatetime.__gt__Fc           	   	   C   s   | j }|j }d  }}||kr"d}nT|  }| }|rn|| j| j d krRdS ||j|j d krndS ||k}|rt| j| j| j| j| j	| j
| jf|j|j|j|j|j	|j
|jfS |d ks|d kr|rdS td| | }|jdk rdS |rdpdS )NTr:  r   z(cannot compare naive and aware datetimesr   r   r   )r8  rW   r^   r   r	   r   r   r   r4  r5  r6  r7  r   rM   )	r   r   rD  rF  rG  rH  rI  rJ  Zdiffr   r   r   r	     sF        
zdatetime._cmpc              
   C   s   t |tstS t|  | j| j| j| jd}||7 }t|j	d\}}t|d\}}d|j
  k rhtkrn n*t| t|j
t||||j| jdS tdd S )Nrz   r   r   r   r  r  )r   rN   r   r  r4  r5  r6  r7  r(   r<   rM   r  r   ru  r   r  r   r>   r8  r   )r   r   r-  r   Zremr   r   r   r   r   r     s&    
zdatetime.__add__c           	      C   s   t |ts"t |tr| |  S tS |  }| }| j| jd  | jd  }|j|jd  |jd  }t|| || | j|j }| j	|j	kr|S | 
 }|
 }||kr|S |d ks|d krtd|| | S )Nr   r   z(cannot mix naive and timezone-aware time)r   r,  rN   r   r  r6  r5  r4  r7  r8  rW   r   )	r   r   r  r  Zsecs1Zsecs2baserH  rI  r   r   r   r   &  s*    



zdatetime.__sub__c                 C   s   | j dkr| jr| jdd}n| }| }|d krFt| d | _ nDt| j| j| j	}| j
d | jd  | j }tt||| j| | _ | j S )Nr   r   r:  r   r   )r   r   r^   rW   r   r   r!   r   r   r   r   r   r   rN   rU   )r   r   rL  rM   r<   r   r   r   r   >  s    
zdatetime.__hash__r%   c           	      C   s   t | jd\}}t | jd\}}t |d\}}| j}| jrJ|dkrJ|d7 }t|||| j| j| j| j	|||g
}| j
d kr~|fS || j
fS d S rZ  )r(   r   r7  r   r9  r   r   r4  r5  r6  r8  )	r   r\  r#  r$  r]  r^  r_  r3   r`  r   r   r   r   O  s"        
zdatetime._getstatec           	   
   C   s   |d k	rt |tstd|\
}}}| _| _| _| _}}}|dkrTd| _|d | _nd| _|| _|d | | _	|d> |B d> |B | _
|| _d S )Nra  r;  r   r[  r   r"  rj   )r   rb  r   r   r4  r5  r6  r9  r   r   r7  r8  )	r   r%  r   r#  r$  r3   r_  r]  r^  r   r   r   r&  ^  s"        zdatetime.__setstatec                 C   s   | j | |fS r   r   rc  r   r   r   rd  m  s    zdatetime.__reduce_ex__c                 C   s
   |  dS r   re  r   r   r   r   r   p  s    zdatetime.__reduce__)NNr   r   r   r   N)N)N)T)NNNNNNNT)N)r  r9   )F)r%   )4r   r   r   r   r   r   r   r   r   r   r   rU   r   r   r'  ro  r   rp  rq  rr  ru  r  rb   r}  r  r  r  r^   r  r  r  r  r   r   r  rW   rY   r   r   r   r   r   r   r	   r   r   r   r   r   rf  rd  r   r   r   r   r   r,    s       $






+	


#	        



	
%
r,  c                 C   s8   d}t | dd}|d d }|| }||kr4|d7 }|S )Nr%   r   r/   r0   )r!   )r   ZTHURSDAYZfirstdayZfirstweekdayr  r   r   r   r	  y  s    r	  c                   @   s   e Zd ZdZe ZefddZedddZdd Z	d	d
 Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZedddZe Zedd ZdS )r}   )_offset_namec                 C   sl   t |tstd|| jkr,|s&| jS d }nt |ts>td| j|  krV| jks`n td| 	||S )Nzoffset must be a timedeltazname must be a stringzYoffset must be a timedelta strictly between -timedelta(hours=24) and timedelta(hours=24).)
r   rN   r   _Omittedr~   r   
_minoffset
_maxoffsetrA   _create)r   re   r   r   r   r   r     s    


ztimezone.__new__Nc                 C   s   t | }||_||_|S r   )r   r   r  r  )r   re   r   r   r   r   r   r    s    
ztimezone._createc                 C   s   | j d kr| jfS | j| j fS r   )r  r  r   r   r   r   r/    s    
ztimezone.__getinitargs__c                 C   s   t |tr| j|jkS tS r   )r   r}   r  r   r   r   r   r   r     s    
ztimezone.__eq__c                 C   s
   t | jS r   )r   r  r   r   r   r   r     s    ztimezone.__hash__c                 C   sL   | | j krdS | jd kr0d| jj| jj| jf S d| jj| jj| j| jf S )Nzdatetime.timezone.utcz	%s.%s(%r)z%s.%s(%r, %r))r~   r  r   r   r   r  r   r   r   r   r     s    


 ztimezone.__repr__c                 C   s
   |  d S r   )rY   r   r   r   r   r     s    ztimezone.__str__c                 C   s$   t |ts|d kr| jS tdd S )Nz8utcoffset() argument must be a datetime instance or None)r   r,  r  r   r*  r   r   r   rW     s    ztimezone.utcoffsetc                 C   s:   t |ts|d kr.| jd kr(| | jS | jS tdd S )Nz5tzname() argument must be a datetime instance or None)r   r,  r  _name_from_offsetr  r   r*  r   r   r   rY     s
    
ztimezone.tznamec                 C   s"   t |ts|d krd S tdd S )Nz2dst() argument must be a datetime instance or None)r   r,  r   r*  r   r   r   r     s    ztimezone.dstc                 C   s2   t |tr&|j| k	rtd|| j S tdd S )Nzfromutc: dt.tzinfo is not selfz6fromutc() argument must be a datetime instance or None)r   r,  r   rA   r  r   r*  r   r   r   r.    s
    


ztimezone.fromutcr&   r   )r:   r>   c              
   C   s   | sdS | t dk r d}|  } nd}t| t dd\}}t|t dd\}}|j}|j}|rd| |dd	|dd	|dd
|d	S |rd| |dd	|dd	|dS d| |dd	|dS )NZUTCr   rH   rI   r   rJ   rK   Z02drn   ro   Z06d)rN   r(   r<   r>   )r-  rQ   r:   rg   r;   r<   r>   r   r   r   r    s    ( ztimezone._name_from_offset)N)r   r   r   r   ra   r  r   r'  r  r/  r   r   r   r   rW   rY   r   r.  rN   r  r  staticmethodr  r   r   r   r   r}     s$   	r}   rK  rw  r  )*)__doc__)r9   ):r   r1   Zmathr   rj  r	   r   r   r  r   r   Zdbmr    rZ   r   r   r   r   r!   r)   r*   r+   r-   r  r  r8   rF   rR   ri   rm   rv   r   r   r   r   r   r   r   r   r   rN   ri  rz  Z
resolutionr   rs  r   rb  rt  r,  r	  r}   r  r~   r~  Z	_datetimeImportErrorr  r   r   r   r   <module>   s   

	?     
@')   =

  [D  X    at G
                        