
    giD                       U d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z
 d dlmZ d dlmZ d d	lmZ d d
lmZmZmZmZmZmZmZ d dlmZmZ ddlmZmZ dZd Zdeeef         deeef         fdZ deeef         de!fdZ"dee!e#f         dee         defdZ$dede!defdZ% G d de&          Z'dZ(e)e*d<   dD ]\  Z+Z,e(de+ d e, d!z  Z( G d" d#e          Z-dee!e#f         dedefd$Z.dS )%    N)timegm)MAXYEARdate)datetime)time)	timedelta)timezonetzinfo)AnyCallableDictIteratorOptionalTupleUnion)CountryDateParseType   )BaseProviderElementsTypeTc                  Z    t          j                                                    j         d S N)r   now
astimezoner        z/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/faker/providers/date_time/__init__.py_get_local_timezoner       s#    LNN&&&&r   dtreturnc                     | j         dk    r|                     | j        dz   d          S |                     | j         dz             S )N      )yearmonth)r'   )r'   replacer&   r!   s    r   _get_next_month_startr*      sC    	x2~~zzrw{!z444::BHqL:)))r   c                     t          | t                    r0t          | dd           |                     t          j                  } t          |                                           S )Nr   )
isinstancer   getattrr   
dttimezoneutcr   	timetupler)   s    r   datetime_to_timestampr1       sN    "h +GB$$?$?$K]]:>**",,..!!!r   	timestampr   c                     |Ot          | t                                }|                    t          j                                      d           S t          | |          S )Nr   )convert_timestamp_to_datetimer    r   r.   r/   r(   )r2   r   picks      r   timestamp_to_datetimer6   &   sR    ~,Y8K8M8MNNz~..66d6CCC(F;;;r   current_date	year_diffc                     | j         |z   }	 |                     |          S # t          $ r@}|dk    r3| j        dk    r(| j        dk    r|                     dd|          cY d}~S |d}~ww xY w)	aq  
    Unless the current_date is February 29th, it is fine to just subtract years.
    If it is a leap day, and we are rolling back to a non-leap year, it will
    cause a ValueError.
    Since this is relatively uncommon, just catch the error and roll forward to
    March 1

    current_date: date  object
    year_diff: int year delta value, positive or negative
    )r&   r   r         r%   )r'   dayr&   N)r&   r(   
ValueErrorr'   r<   )r7   r8   r&   es       r   change_yearr?   -   s     y(D###...    199+q00\5E5K5K''aQT'BBBBBBBBGs    " 
A,3A'A,%A''A,c                       e Zd ZdS )
ParseErrorN)__name__
__module____qualname__r   r   r   rA   rA   D   s        Dr   rA    timedelta_pattern))yearsy)monthsM)weeksw)daysd)hoursh)minutesm)secondssz((?P<z>(?:\+|-)\d+?)z)?c                   )   e Zd ZU dZ ej                    dk    rdededefdZn
dededefdZg dZ	e
e         ed	<   g  ed
gddddd           edgddddd           edgddddd           edgdddd d!           ed"gd#d$dd%d&           ed'gd(d)d*d+d,           eg d-d.d/d0d1d2           ed3gd4d5dd6d7           eg d8d9d:d;d<d=           ed>gd?d@ddAdB           edCgdDdEddFdG           edHgdIdJddKdL           edMgdNdOddPdQ           edRgdSdTd*dUdV           edWgdXdYddZd[           ed\gd]d^dd_d`           edagdbdcd*ddde           edfgdgdhd*didj           edkgdldmddndo           edpgdqdrd0dsdt           eg dudvdwd0dxdy           edzgd{d|dd}d~           edgddddd           edgddd*dd           edgddddd           edgddddd           eg dddddd           eddgddd*dd           edgddd*dd           edgddd*dd           eddgddd0dd           edgddd*dd           eg dddddd           edgddd0dd           edgddddd           edgdddddƬ           edgddd*ddˬ           edgdddddЬ           edgdddddլ           edgdddddڬ           edgddd*dd߬           edgddddd           edgddddd           edgddddd           eddgddd0dd           edgddddd           edgddd*dd           edgd dd*dd           edgddd*dd           ed	gd
dddd           edgddd;dd           edgddddd           edgddd*dd           edgdddd d!           ed"gd#d$d*d%d&           ed'gd(d)d*d*d+           ed,gd-d.d*d/d0           ed1gd2d3dd4d5           ed6gd7d8dd9d:           ed6gd;d<dd=d>           ed?gd@dAd*dBdC           edDgdEdFd0dGdH           edIgdJdKddLdM           edNgdOdPddQdR           eg dSdTdUddVdW           edXgdYdZdd[d\           ed]gd^d_dd`da           edbgdcddddedf           edggdhdiddjdk           edlgdmdnddodp           edqgdrdsddtdu           edvgdwdxddydz           ed{gd|d}dd~d           edgddddd           edgddddd           edgddd*dd           edgddddd           eg dddd;dd           edgddddd           edgddddd           edgddddd           edgddddd           edgddddd           edgddd*dd           edgddd*dd           edgddddd           edgddddĐdŬ           edgdǐdddɐdʬ           edgd̐dd*dΐdϬ           edgdѐdd*dӐdԬ           edՐdgdאdd;dِdڬ           edgdܐdddސd߬           edgddd*dd           edgddddd           eg dddddd           edgddd*dd           edgddddd           edgddd*dd           edgdd ddd           edgddd*dd           eg dd	d
ddd           eddgddddd           edgddd*dd           edgddd*dd           edgddd*d d!           ed"gd#d$d*d%d&           ed'gd(d)dd*d+           ed,gd-d.dd/d0           ed1gd2d3dd4d5           ed6gd7d8dd9d:           ed;gd<d=d;d>d?           ed@dAgdBdCd;dDdE           edFgdGdHddIdJ           edKgdLdMddNdO           edPgdQdRd0dSdT           edUgdVdWd;dXdY           edZgd[d\dd]d^           ed_gd`daddbdc           eddgdedfddgdh           eg didjdkddldm           edngdodpd;dqdr           edsgdtdud0dvdw           edxgdydzdd{d|           ed}gd~dddd           eg dddddd           edgddd*dd           edgddddd           edgddd;dd           edgddd*dd           edgddd*dd           edgddddd           edgddddd           edgddddd           edgddddd           edgddd*dd           edgddddd           edgddd*dd           edgddd*dĐdŬ           edgdǐdd0dɐdʬ           edgd̐dd*dΐdϬ           edgdѐdddӐdԬ           edgd֐dd*dؐd٬           edgdېdddݐdެ           edgddddd           edgddddd           edgddd*dd           edgddd;dd           edgddddd           edgddddd           edgddd;d d           edgddd*dd           eg ddd	dd
d           edgddd*dd           eg dddddd           edgddd0dd           eddgddddd            ed!gd"d#dd$d$           ed%gd&d'd0d(d)           ed*gd+d,dd-d.           ed/gd0d1d;d2d3           ed4gd5d6dd7d8           ed9gd:d;d*d<d=           ed>gd?d@d*dAdB           edCgdDdEd*dFdG           edHgdIdJddKdL           edMgdNdOddPdQ           edRgdSdTd*dUdV           edWgdXdYd*dZd[           ed\gd]d^d*d_d`           edagdbdcdddde           edfgdgdhddidj           edkgdldmddndo           edpgdqdrd*dsdt           edugdvdwddxdy           eg dzd{d|dd}d~           edgddddd           eg dddd;dd           edgddddd           edgddddd           edgddddd           edgddd*dd           edgddddd           edgddddd           edgddddd           edgddd;dd           edgddddd           edgddd*dd           eg dddddd           edgdddddì           edgdŐdd*dǐdȬ           edgdʐddd̐dͬ           edgdϐdddѐdҬ           edgdԐddd֐d׬           edgdِdddېdܬ           edݐdgdߐdddd          Z ej        e          Z	 	 d0dee         dee         defdZd1dee         defdZ	 	 d0dee         dee         defdZ	 	 	 d2dee         dee         dee         defdZ	 	 	 	 d3dee         dee         dededef
dZd4dedee         defdZd1dee         defdZd5dedee         defdZ d1dee         de!fdZ"e#dee         defd            Z$e#dee         defd            Z%e#dede&eef         fd            Z'e#de(eeef         de(eef         fd            Z)e#d1dedee         defd            Z*e#dedefd            Z+	 	 	 d6dededee         defd Z,d7dededefdZ-d8dedee         defdZ.d9dedefdZ/d:dedee         defdZ0d:dedee         defdZ1	 	 	 d2d	ee         d
ee         dee         defdZ2	 	 d0dee         dee         defdZ3	 	 	 d;de4de4dee         defdZ5	 	 	 d;de4de4dee         defdZ6	 	 	 d;de4de4dee         defdZ7	 	 	 d;de4de4dee         defdZ8d<de4de4defdZ9d<de4de4defdZ:d<de4de4defdZ;d<de4de4defdZ<	 	 	 	 	 d=dededee         dee=egef                  dee         de>e?ee@f                  fdZAdefd ZBdefd!ZCdefd"ZDdefd#ZEdefd$ZFdefd%ZGdefd&ZHdefd'ZId(e@d)e@dee         fd*ZJ	 	 	 d>dee         d-ed.edefd/ZKdS (?  ProvideraT  

    Most methods of the provider accept a 'start_datetime' and/or 'end_datetime' parameter.

    These parameters accept a variety of types, and are used to define the range of the random date/time.

    We call this type ``DateParseType``.

    A ``DateParseType`` can be:

    - a datetime or date object
    - an integer or a float, representing UNIX a timestamp
    - the special string 'now'
    - the special string 'today'
    - a timedelta object, representing a time delta from now
    - a 'timedelta string', such as '+2d', '-3w', '+4y', etc. Representing a time delta from now.

    Windowsstart_datetimeend_datetimer"   c                 B    | j         j                            ||          S r   )	generatorrandomrandintselfrX   rY   s      r   _rand_secondszProvider._rand_secondsn   s    >(00NNNr   c                 l    ||k    rt          d          | j        j                            ||          S )NzNempty range for _rand_seconds: start datetime must be before than end datetime)r=   r[   r\   uniformr^   s      r   r`   zProvider._rand_secondss   s7    ,, !qrrr>(00NNNr   )IIIIIIIVVVIVIIVIIIIXXXIXIIXIIIXIVXVXVIXVIIXVIIIXIXXXXXI	centurieszEurope/AndorraADANDEuropeAndorrazAndorra la Vella)	timezonesalpha_2_codealpha_3_code	continentnamecapitalz
Asia/KabulAFAFGAsiaAfghanistanKabulzAmerica/AntiguaAGATGzNorth AmericazAntigua and Barbudaz
St. John'szEurope/TiraneALALBAlbaniaTiranazAsia/YerevanAMARMArmeniaYerevanzAfrica/LuandaAOAGOAfricaAngolaLuanda)
zAmerica/Argentina/Buenos_AireszAmerica/Argentina/CordobazAmerica/Argentina/JujuyzAmerica/Argentina/TucumanzAmerica/Argentina/CatamarcazAmerica/Argentina/La_RiojazAmerica/Argentina/San_JuanzAmerica/Argentina/MendozazAmerica/Argentina/Rio_GallegoszAmerica/Argentina/UshuaiaARARGzSouth America	ArgentinazBuenos AireszEurope/ViennaATAUTAustriaVienna)zAustralia/Lord_HowezAustralia/HobartzAustralia/CurriezAustralia/MelbournezAustralia/SydneyzAustralia/Broken_HillzAustralia/BrisbanezAustralia/LindemanzAustralia/AdelaidezAustralia/DarwinzAustralia/PerthAUAUSOceania	AustraliaCanberraz	Asia/BakuAZAZE
AzerbaijanBakuzAmerica/BarbadosBBBRBBarbados
Bridgetownz
Asia/DhakaBDBGD
BangladeshDhakazEurope/BrusselsBEBELBelgiumBrusselszAfrica/OuagadougouBFBFAzBurkina FasoOuagadougouzEurope/SofiaBGBGRBulgariaSofiazAsia/BahrainBHBHRBahrainManamazAfrica/BujumburaBIBDIBurundi	BujumburazAfrica/Porto-NovoBJBENBeninz
Porto-NovozAsia/BruneiBNBRNzBrunei DarussalamzBandar Seri BegawanzAmerica/La_PazBOBOLBoliviaSucre)zAmerica/NoronhazAmerica/BelemzAmerica/FortalezazAmerica/RecifezAmerica/AraguainazAmerica/MaceiozAmerica/BahiazAmerica/Sao_PaulozAmerica/Campo_GrandezAmerica/CuiabazAmerica/Porto_VelhozAmerica/Boa_VistazAmerica/ManauszAmerica/EirunepezAmerica/Rio_BrancoBRBRABrazilu   BrasÃ­liazAmerica/NassauBSBHSBahamasNassauzAsia/ThimphuBTBTNBhutanThimphuzAfrica/GaboroneBWBWABotswanaGaboronezEurope/MinskBYBLRBelarusMinskzAmerica/BelizeBZBLZBelizeBelmopan)zAmerica/St_JohnszAmerica/HalifaxzAmerica/Glace_BayzAmerica/MonctonzAmerica/Goose_BayzAmerica/Blanc-SablonzAmerica/MontrealzAmerica/TorontozAmerica/NipigonzAmerica/Thunder_BayzAmerica/PangnirtungzAmerica/IqaluitzAmerica/AtikokanzAmerica/Rankin_InletzAmerica/WinnipegzAmerica/Rainy_RiverzAmerica/Cambridge_BayzAmerica/ReginazAmerica/Swift_CurrentzAmerica/EdmontonzAmerica/YellowknifezAmerica/InuvikzAmerica/Dawson_CreekzAmerica/VancouverzAmerica/WhitehorsezAmerica/DawsonCACANCanadaOttawazAfrica/KinshasazAfrica/LubumbashiCDCODz Democratic Republic of the CongoKinshasazAfrica/BrazzavilleCGCOGzRepublic of the CongoBrazzavillezAfrica/AbidjanCICIVu   CÃ´te d'IvoireYamoussoukrozAmerica/SantiagozPacific/EasterCLCHLChileSantiagozAfrica/DoualaCMCMRCameroonu
   YaoundÃ©)zAsia/ShanghaizAsia/HarbinzAsia/ChongqingzAsia/UrumqizAsia/KashgarCNCHNzPeople's Republic of ChinaBeijingzAmerica/BogotaCOCOLColombiau	   BogotÃ¡zAmerica/Costa_RicaCRCRIz
Costa Ricau   San JosÃ©zAmerica/HavanaCUCUBCubaHavanazAtlantic/Cape_VerdeCVCPVz
Cape VerdePraiazAsia/NicosiaCYCYPCyprusNicosiazEurope/PragueCZCZEzCzech RepublicPraguezEurope/BerlinDEDEUGermanyBerlinzAfrica/DjiboutiDJDJIDjiboutizDjibouti CityzEurope/CopenhagenDKDNKDenmark
CopenhagenzAmerica/DominicaDMDMADominicaRoseauzAmerica/Santo_DomingoDODOMzDominican RepubliczSanto DomingozAmerica/GuayaquilzPacific/GalapagosECECUEcuadorQuitozEurope/TallinnEEESTEstoniaTallinnzAfrica/CairoEGEGYEgyptCairozAfrica/AsmeraERERIEritreaAsmarazAfrica/Addis_AbabaETETHEthiopiazAddis AbabazEurope/HelsinkiFIFINFinlandHelsinkizPacific/FijiFJFJIFijiSuvazEurope/ParisFRFRAFrancePariszAfrica/LibrevilleGAGABGabon
LibrevillezAsia/TbilisiGEGEOGeorgiaTbilisizAfrica/AccraGHGHAGhanaAccrazAfrica/BanjulGMGMBz
The GambiaBanjulzAfrica/ConakryGNGINGuineaConakryzEurope/AthensGRGRCGreeceAthenszAmerica/GuatemalaGTGTM	GuatemalazGuatemala CityHTHTIHaitizPort-au-PrincezAfrica/BissauGWGNBzGuinea-BissauBissauzAmerica/GuyanaGYGUYGuyana
GeorgetownzAmerica/TegucigalpaHNHNDHondurasTegucigalpazEurope/BudapestHUHUNHungaryBudapest)zAsia/JakartazAsia/PontianakzAsia/MakassarzAsia/JayapuraIDIDN	IndonesiaJakartazEurope/DublinIEIRLzRepublic of IrelandDublinzAsia/JerusalemILISRIsrael	JerusalemzAsia/CalcuttaININDIndiaz	New DelhizAsia/BaghdadIQIRQIraqBaghdadzAsia/TehranIRIRNIranTehranzAtlantic/ReykjavikISISLIcelandu   ReykjavÃ­kzEurope/RomeITITAItalyRomezAmerica/JamaicaJMJAMJamaicaKingstonz
Asia/AmmanJOJORJordanAmmanz
Asia/TokyoJPJPNJapanTokyozAfrica/NairobiKEKENKenyaNairobizAsia/BishkekKGKGZ
KyrgyzstanBishkek)zPacific/TarawazPacific/EnderburyzPacific/KiritimatiKIKIRKiribatiTarawazAsia/PyongyangKPPRKzNorth Korea	Pyongyangz
Asia/SeoulKRKORzSouth KoreaSeoulzAsia/KuwaitKWKWTKuwaitzKuwait CityzAsia/BeirutLBLBNLebanonBeirutzEurope/VaduzLILIELiechtensteinVaduzzAfrica/MonroviaLRLBRLiberiaMonroviazAfrica/MaseruLSLSOLesothoMaseruzEurope/VilniusLTLTU	LithuaniaVilniuszEurope/LuxembourgLULUX
LuxembourgzLuxembourg CityzEurope/RigaLVLVALatviaRigazAfrica/TripoliLYLBYLibyaTripolizIndian/AntananarivoMGMDG
MadagascarAntananarivozPacific/MajurozPacific/KwajaleinMHMHLzMarshall IslandsMajurozEurope/SkopjeMKMKDzNorth MacedoniaSkopjezAfrica/BamakoMLMLIMaliBamakozAsia/RangoonMMMMRMyanmar	Naypyidaw)zAsia/Ulaanbaatarz	Asia/HovdzAsia/ChoibalsanMNMNGMongoliaUlaanbaatarzAfrica/NouakchottMRMRT
Mauritania
NouakchottzEurope/MaltaMTMLTMaltaVallettazIndian/MauritiusMUMUS	Mauritiusz
Port LouiszIndian/MaldivesMVMDVMaldivesu   MalÃ©zAfrica/BlantyreMWMWIMalawiLilongwe)zAmerica/Mexico_CityzAmerica/CancunzAmerica/MeridazAmerica/MonterreyzAmerica/MazatlanzAmerica/ChihuahuazAmerica/HermosillozAmerica/TijuanaMXMEXMexicozMexico CityzAsia/Kuala_LumpurzAsia/KuchingMYMYSMalaysiazKuala LumpurzAfrica/MaputoMZMOZ
MozambiqueMaputozAfrica/WindhoekNANAMNamibiaWindhoekzAfrica/NiameyNENERNigerNiameyzAfrica/LagosNGNGANigeriaAbujazAmerica/ManaguaNINIC	NicaraguaManaguazEurope/AmsterdamNLNLDzKingdom of the Netherlands	AmsterdamzEurope/OsloNONORNorwayOslozAsia/KatmanduNPNPLNepal	KathmanduzPacific/NauruNRNRUNauruYarenzPacific/AucklandzPacific/ChathamNZNZLzNew Zealand
WellingtonzAsia/MuscatOMOMNOmanMuscatzAmerica/PanamaPAPANPanamazPanama CityzAmerica/LimaPEPERPeruLimazPacific/Port_MoresbyPGPNGzPapua New GuineazPort MoresbyzAsia/ManilaPHPHLPhilippinesManilazAsia/KarachiPKPAKPakistan	IslamabadzEurope/WarsawPLPOLPolandWarsaw)zEurope/LisbonzAtlantic/MadeirazAtlantic/AzoresPTPRTPortugalLisbonzPacific/PalauPWPLWPalau	NgerulmudzAmerica/AsuncionPYPRYParaguayu   AsunciÃ³nz
Asia/QatarQAQATQatarDohazEurope/BucharestROROURomania	Bucharest)zEurope/KaliningradzEurope/MoscowzEurope/VolgogradzEurope/SamarazAsia/Yekaterinburgz	Asia/OmskzAsia/NovosibirskzAsia/KrasnoyarskzAsia/IrkutskzAsia/YakutskzAsia/VladivostokzAsia/SakhalinzAsia/MagadanzAsia/KamchatkazAsia/AnadyrRURUSRussiaMoscowzAfrica/KigaliRWRWARwandaKigalizAsia/RiyadhSASAUzSaudi ArabiaRiyadhzPacific/GuadalcanalSBSLBzSolomon IslandsHoniarazIndian/MaheSCSYC
SeychellesVictoriazAfrica/KhartoumSDSDNSudanKhartoumzEurope/StockholmSESWESweden	StockholmzAsia/SingaporeSGSGP	SingaporezEurope/LjubljanaSISVNSlovenia	LjubljanazEurope/BratislavaSKSVKSlovakia
BratislavazAfrica/FreetownSLSLEzSierra LeoneFreetownzEurope/San_MarinoSMSMRz
San MarinozAfrica/DakarSNSENSenegalDakarzAfrica/MogadishuSOSOMSomalia	MogadishuzAmerica/ParamariboSRSURSuriname
ParamaribozAfrica/Sao_TomeSTSTPu   SÃ£o TomÃ© and PrÃ­ncipeu   SÃ£o TomÃ©zAsia/DamascusSYSYRSyriaDamascuszAfrica/LomeTGTGOTogou   LomÃ©zAsia/BangkokTHTHAThailandBangkokzAsia/DushanbeTJTJK
TajikistanDushanbezAsia/AshgabatTMTKMTurkmenistanAshgabatzAfrica/TunisTNTUNTunisiaTuniszPacific/TongatapuTOTONTongau   NukuÊ»alofazEurope/IstanbulTRTURTurkeyAnkarazAmerica/Port_of_SpainTTTTOzTrinidad and TobagozPort of SpainzPacific/FunafutiTVTUVTuvaluFunafutizAfrica/Dar_es_SalaamTZTZATanzaniaDodoma)zEurope/KyivzEurope/UzhgorodzEurope/ZaporozhyezEurope/SimferopolUAUKRUkraineKyivzAfrica/KampalaUGUGAUgandaKampala)zAmerica/New_YorkzAmerica/DetroitzAmerica/Kentucky/LouisvillezAmerica/Kentucky/MonticellozAmerica/Indiana/IndianapoliszAmerica/Indiana/MarengozAmerica/Indiana/KnoxzAmerica/Indiana/VevayzAmerica/ChicagozAmerica/Indiana/VincenneszAmerica/Indiana/PetersburgzAmerica/MenomineezAmerica/North_Dakota/CenterzAmerica/North_Dakota/New_SalemzAmerica/DenverzAmerica/BoisezAmerica/ShiprockzAmerica/PhoenixzAmerica/Los_AngeleszAmerica/AnchoragezAmerica/JuneauzAmerica/YakutatzAmerica/NomezAmerica/AdakzPacific/HonoluluUSUSAzUnited StateszWashington, D.C.zAmerica/MontevideoUYURYUruguay
MontevideozAsia/SamarkandzAsia/TashkentUZUZB
UzbekistanTashkentzEurope/VaticanVAVATzVatican CityzAmerica/CaracasVEVEN	VenezuelaCaracaszAsia/SaigonVNVNMVietnamHanoizPacific/EfateVUVUTVanuatuz	Port Vilaz	Asia/AdenYEYEMYemenzSana'azAfrica/LusakaZMZMBZambiaLusakazAfrica/HarareZWZWEZimbabweHararezAfrica/AlgiersDZDZAAlgeriaAlgierszEurope/SarajevoBABIHzBosnia and HerzegovinaSarajevozAsia/Phnom_PenhKHKHMCambodiaz
Phnom PenhzAfrica/BanguiCFCAFzCentral African RepublicBanguizAfrica/NdjamenaTDTCDChadz	N'DjamenazIndian/ComoroKMCOMComorosMoronizEurope/ZagrebHRHRVCroatiaZagrebz	Asia/DiliTLTLSz
East TimorDilizAmerica/El_SalvadorSVSLVzEl SalvadorzSan SalvadorzAfrica/MalaboGQGNQzEquatorial GuineaMalabozAmerica/GrenadaGDGRDGrenadazSt. George's)zAsia/AlmatyzAsia/QyzylordazAsia/Aqtobez
Asia/Aqtauz	Asia/OralKZKAZ
KazakhstanAstanazAsia/VientianeLALAOLaos	Vientiane)zPacific/TrukzPacific/PonapezPacific/KosraeFMFSMzFederated States of MicronesiaPalikirzEurope/ChisinauMDMDAMoldovau   ChiÅinÄuzEurope/MonacoMCMCOMonacozEurope/PodgoricaMEMNE
Montenegro	PodgoricazAfrica/CasablancaMAMARMoroccoRabatzAmerica/St_KittsKNKNAzSaint Kitts and Nevis
BasseterrezAmerica/St_LuciaLCLCAzSaint LuciaCastrieszAmerica/St_VincentVCVCTz Saint Vincent and the Grenadines	KingstownzPacific/ApiaWSWSMSamoaApiazEurope/BelgradeRSSRBSerbiaBelgradezAfrica/JohannesburgZAZAFzSouth AfricaPretoria)zEurope/MadridzAfrica/CeutazAtlantic/CanaryESESPSpainMadridzAsia/ColomboLKLKAz	Sri LankazSri Jayewardenepura KottezAfrica/MbabaneSZSWZ	SwazilandMbabanezEurope/ZurichCHCHESwitzerlandBernz
Asia/DubaiAEAREzUnited Arab Emiratesz	Abu DhabizEurope/LondonGBGBRzUnited KingdomLondonzAsia/TaipeiTWTWNTaiwanTaipeiz	Asia/GazazAsia/HebronPSPSE	PalestineRamallahNc                     |                      |          }|                     |          }t          |                     ||                    S )a{  
        Get a timestamp between January 1, 1970 and now, unless passed
        explicit ``start_datetime`` or `end_datetime` values.

        On Windows, the decimal part is always 0.

        :param end_datetime: A ``DateParseType``. Defaults to the UNIX epoch
        :param start_datetime: A ``DateParseType``. Defaults to the current date and time

        :sample:
        )_parse_start_datetime_parse_end_datetimefloatr`   )r_   rY   rX   s      r   	unix_timezProvider.unix_time8  sH      33NCC//==T''EEFFFr   c                     |                      d          }|                     |          }||z
  } | j        t          d|g           }t	          |          S )a   
        Get a random timedelta object of duration between the current date and time and `end_datetime`

        :param end_datetime: A ``DateParseType``. Defaults to the current date and time

        :sample:
        :sample: end_datetime='+30h'
        r   r   rS   )r;  r<  r`   sortedr	   )r_   rY   rX   rS   tss        r   
time_deltazProvider.time_deltaL  s`     33E:://==/TG!5!56$$$$r   r   c                 r    t          ddd|          t          |                     |                    z   S )a  
        Get a datetime object for a date between January 1, 1970 and a specified end_datetime

        :param tzinfo: timezone, instance of datetime.tzinfo subclass
        :param end_datetime: A ``DateParseType``. Defaults to the current date and time

        :sample:
          r%   r   rY   r@  )r   r	   r>  )r_   r   rY   s      r   	date_timezProvider.date_time\  s:      a6222Yt~~co~GpGp5q5q5qqqr   c                     |dn|                      |          }|                     |          }|                     ||          }t          ddd|          t	          |          z   S )a  
        Get a datetime object for a date between January 1, 0001 and now

        :param tzinfo: timezone, instance of datetime.tzinfo subclass
        :param end_datetime: A ``DateParseType``. Defaults to the current date and time
        :param start_datetime: A ``DateParseType``. Defaults to UNIX timestamp ``-62135596800``,
        equivalent to 0001-01-01 00:00:00 UTC

        :sample:
        Nl w#o9 rE  r%   r   r@  )r;  r<  r`   r   r	   )r_   r   rY   rX   
start_timerB  s         r   date_time_adzProvider.date_time_adn  sr    . &4%;\\A[A[\jAkAk
//==
L99 a6222Yr5J5J5JJJr   Tautoseptimespecc                 X    |                      ||                              ||          S )a  
        Get an ISO 8601 string for a datetime between the UNIX epoch and now.

        :param tzinfo: timezone, instance of datetime.tzinfo subclass
        :param end_datetime: A ``DateParseType``. Defaults to the current date and time
        :param sep: separator between date and time, defaults to 'T'
        :param timespec: format specifier for the time part, defaults to 'auto' - see datetime.isoformat() documentation

        :sample:
        rF  )rG  	isoformat)r_   r   rY   rM  rN  s        r   iso8601zProvider.iso8601  s+    " ~~f<~@@JJ3PXYYYr   %Y-%m-%dpatternc                 T    |                      |                              |          S )a>  
        Get a date string between January 1, 1970 and now.

        :param pattern: Format of the date (year-month-day by default)
        :param end_datetime: A ``DateParseType``. Defaults to the current date and time

        :sample:
        :sample: pattern='%m/%d/%Y'
        :sample: end_datetime='+1w'
        rF  )rG  strftimer_   rS  rY   s      r   r   zProvider.date  s&     ~~<~88AA'JJJr   c                 R    |                      |                                          S )z
        Get a date object between January 1, 1970 and now

        :param end_datetime: A ``DateParseType``. Defaults to the current date and time

        :sample:
        :sample: end_datetime='+1w'
        rF  )rG  r   r_   rY   s     r   date_objectzProvider.date_object  $     ~~<~88==???r   %H:%M:%Sc                 x    |                      |                                                              |          S )z
        Get a time string (24h format by default)

        :param pattern: format
        :param end_datetime: A ``DateParseType``. Defaults to the current date and time

        :sample:
        :sample: pattern='%I:%M %p'
        rF  )rG  r   rU  rV  s      r   r   zProvider.time  s2     ~~<~88==??HHQQQr   c                 R    |                      |                                          S )z
        Get a time object

        :param end_datetime: A ``DateParseType``. Defaults to the current date and time

        :sample:
        :sample: end_datetime='+1h'
        rF  )rG  r   rX  s     r   time_objectzProvider.time_object  rZ  r   valuec                 4    |dS |                      |          S Nr   )_parse_date_timeclsr_  s     r   r;  zProvider._parse_start_datetime  s     =1##E***r   c                 p    | t          t          j                              S |                     |          S r   )r1   r   r   rb  rc  s     r   r<  zProvider._parse_end_datetime  s/    =(888##E***r   c                    | j                             |          }|st          d| d          |                                }i }|                                D ]\  }}|rt          |          ||<   d|v r/d|vrd|d<   |dxx         d|                    d          z  z  cc<   d|v r/d|vrd|d<   |dxx         d|                    d          z  z  cc<   |st          d| d          |S )	NzCan't parse date string ``rG   rM   r   gp=
v@rI   gQk>@)regexmatchrA   	groupdictitemsintpop)rd  r_  partstime_paramsname_param_s         r   _parse_date_stringzProvider._parse_date_string  sC   	&& 	CAAAABBB!!(*"[[]] 	1 	1ME6 1%([[E"k!![((&'F#6KOOG,D,D#DD{""[((&'F#5;??8+D+D#DD 	CAAAABBBr   c                 D   t          |t                    r|                                S t          |t                    r3|                     |          }t          di |                                S t          |t
          t          f          r|S t          d|          )NzInvalid format for timedelta r   )r,   r	   total_secondsstrrr  rl  r=  rA   )rd  r_  ro  s      r   _parse_timedeltazProvider._parse_timedelta  s    eY'' 	)&&(((eS!! 	<0077K++{++99;;;ec5\** 	LBBBCCCr   c                    t          |t          t          f          rt          |          S t          j        |          }t          |t
                    rt          ||z             S t          |t                    rX|dk    r!t          t          j        |                    S |                     |          }t          |t          di |z             S t          |t                    r|S t          d|          )Nr   Invalid format for date r   )
r,   r   dtdater1   r   r	   ru  rr  rl  rA   )rd  r_  r   r   ro  s        r   rb  zProvider._parse_date_time  s    eh/00 	0(///l6""eY'' 	6(u555eS!! 	I~~,X\&-A-ABBB0077K(y/G/G;/G/G)GHHHeS!! 	L=E==>>>r   c                    t          |t                    r|                                S t          |t                    r|S t          j                    }t          |t
                    r||z   S t          |t                    r*|dv r|S |                     |          }|t          di |z   S t          |t                    r|t          |          z   S t          d|          )N)todayr   rx  r   )
r,   r   r   ry  r{  r	   ru  rr  rl  rA   )rd  r_  r{  ro  s       r   _parse_datezProvider._parse_date  s    eX&& 	::<<v&& 	LeY'' 	!5= eS!! 	4(((0077K933{3333eS!! 	,9U++++=E==>>>r   -30yr   
start_dateend_datec                    |                      ||          }|                      ||          }||z
  dk    r"|| j        j                                        z   }n|                     ||          }|$t	          ddd|          t          |          z   S t	          dddt          j                  t          |          z                       |          S )a  
        Get a datetime object based on a random date between two given dates.
        Accepts date strings that can be recognized by strtotime().

        :param start_date: A ``DateParseType``. Defaults to 30 years ago
        :param end_date: A ``DateParseType``. Defaults to ``"now"``
        :param tzinfo: timezone, instance of datetime.tzinfo subclass

        :sample:
        r   r%   NrE  r@  )	rb  r[   r\   r`   r   r	   r.   r/   r   )r_   r~  r  r   rB  s        r   date_time_betweenzProvider.date_time_between'  s      **:f*EE
((&(AAj A%%dn3::<<<BB##J99B>D!Qv66629N9N9NNNT1a
???)TVBWBWBWWccdjkkkr   r{  c                     |                      |          }|                      |          }|                     ||          S )a  
        Get a Date object based on a random date between two given dates.
        Accepts date strings that can be recognized by strtotime().

        :param start_date: A ``DateParseType``. Defaults to 30 years ago
        :param end_date: A ``DateParseType``. Defaults to ``"today"``

        :sample:
        :sample: start_date='-1w'
        :sample: start_date="-1y", end_date="+1w"
        )
date_startdate_end)r|  date_between_dates)r_   r~  r  s      r   date_betweenzProvider.date_betweenB  sC     %%j11
##H--&&*x&PPPr   +30dc                 2    |                      d||          S )a0  
        Get a datetime object based on a random date between 1 second form now
        and a given date.

        :param end_date: A ``DateParseType``. Defaults to ``"+30d"``
        :param tzinfo: timezone, instance of datetime.tzinfo subclass

        :sample:
        :sample: end_date='+1y'
        z+1sr~  r  r   r  )r_   r  r   s      r   future_datetimezProvider.future_datetimeS  s      %%RX%YYYr   c                 0    |                      d|          S )a)  
        Get a Date object based on a random date between 1 day from now and a
        given date.

        :param end_date: A ``DateParseType``. Defaults to ``"+30d"``
        :param tzinfo: timezone, instance of datetime.tzinfo subclass

        :sample:
        :sample: end_date='+1y'
        z+1dr~  r  r  )r_   r  s     r   future_datezProvider.future_date`  s       EH EEEr   -30dc                 2    |                      |d|          S )a_  
        Get a datetime object based on a random date between a given date and 1
        second ago.

        :param start_date: A ``DateParseType``. Defaults to ``"-30d"``
        :param tzinfo: timezone, instance of datetime.tzinfo subclass
        :example: datetime('1999-02-02 11:42:52')

        :sample:
        :sample: end_date='+1y'
        z-1sr  r  r_   r~  r   s      r   past_datetimezProvider.past_datetimem  s      %%eTZ%[[[r   c                 0    |                      |d          S )a(  
        Get a Date object based on a random date between a given date and 1 day
        ago.

        :param start_date: A ``DateParseType``. Defaults to ``"-30d"``
        :param tzinfo: timezone, instance of datetime.tzinfo subclass

        :sample:
        :sample: start_date='-1y'
        z-1dr  r  r  s      r   	past_datezProvider.past_date{  s       J GGGr   datetime_startdatetime_endc                 @   |!t          t          j        |                    n|                     |          }|!t          t          j        |                    n|                     |          }|                     ||          }	 |at          |t                                }	 |                    t          j	                  
                    d          }n%# t          $ r Y nw xY wt          j        ||          }n# t          $ r t          d          w xY w|S )a  
        Get a random datetime between the two given datetimes.

        :param datetime_start: A ``DateParseType``. Defaults to the UNIX epoch
        :param datetime_end: A ``DateParseType``. Defaults to the current date and time
        :param tzinfo: timezone, instance of datetime.tzinfo subclass

        :sample:
        :sample: datetime_start='-30y', datetime_end='now'
        :sample: datetime_start='now', datetime_end='+1y'

        Nr   zzYou specified an end date with a timestamp bigger than the maximum allowed on this system. Please specify an earlier date.)r1   r   r   rb  r`   r4   r    r   r.   r/   r(   OSErrorfromtimestampOverflowError)r_   r  r  r   datetime_start_datetime_end_r2   r5   s           r   date_time_between_datesz Provider.date_time_between_dates  sB   ( % "(,v"6"6777&&~66 	 <H;O!(,v"6"6777UYUjUjkwUxUx 	 &&FF		~4Y@S@U@UVV??:>::BB$BOODD   D  -i@@ 	 	 	;  	
 s0   D '3C D 
C(%D 'C((D Dr  r  c                 R    |                      ||                                          S )z
        Get a random date between the two given dates.

        :param date_start: A ``DateParseType``. Defaults to the UNIX epoch
        :param date_end: A ``DateParseType``. Defaults to the current date and time

        :sample:
        )r  r   )r_   r  r  s      r   r  zProvider.date_between_dates  s&     ++JAAFFHHHr   TF
before_now	after_nowc                 r   t          j        |          }t          |j        |j        dz  z
  dd|          }t          t          |j        dz   t                    dd|          }|r|r|                     |||          S |s|r|                     |||          S |s|r|                     |||          S |S )a  
        Gets a datetime object for the current century.

        :param before_now: include days in current century before today. Defaults to True
        :param after_now: include days in current century after today. Defaults to False
        :param tzinfo: timezone, instance of datetime.tzinfo subclass

        :sample:
        :sample: before_now=False, after_now=True
        d   r%   r   r   r   r&   minr   r  )r_   r  r  r   r   this_century_startnext_century_starts          r   date_time_this_centuryzProvider.date_time_this_century  s      l6""%ch#(S.&A1aPVWWW%c*<*AC*G&Q&QSTVW`fggg 	) 	//0BDVX^___ 		 	//5GPPP 	z 	//0BCPPPJr   c                 r   t          j        |          }t          |j        |j        dz  z
  dd|          }t          t          |j        dz   t                    dd|          }|r|r|                     |||          S |s|r|                     |||          S |s|r|                     |||          S |S )ay  
        Gets a datetime object for the decade year.

        :param before_now: include days in current decade before today. Defaults to True
        :param after_now: include days in current decade after today. Defaults to False
        :param tzinfo: timezone, instance of datetime.tzinfo subclass

        :sample:
        :sample: before_now=False, after_now=True
        
   r%   r   r  )r_   r  r  r   r   this_decade_startnext_decade_starts          r   date_time_this_decadezProvider.date_time_this_decade  s      l6""$SXB%?AfUUU$S):)?")Dg%N%NPQST]cddd 	) 	//0ACTV\]]] 		 	//5FOOO 	z 	//0A3OOOJr   c                 <   t          j        |          }|                    dddddd          }t          |j        dz   dd|          }|r|r|                     |||          S |s|r|                     |||          S |s|r|                     |||          S |S )av  
        Gets a datetime object for the current year.

        :param before_now: include days in current year before today. Defaults to True
        :param after_now: include days in current year after today. Defaults to False
        :param tzinfo: timezone, instance of datetime.tzinfo subclass

        :sample:
        :sample: before_now=False, after_now=True
        r%   r   )r'   r<   hourminutesecondmicrosecondr   )r   r   r(   r&   r  )r_   r  r  r   r   this_year_startnext_year_starts          r   date_time_this_yearzProvider.date_time_this_year  s      l6""++A11Qq^_+``"38a<AfEEE 	) 	//RXYYY 		 	//_fMMM 	z 	//fMMMJr   c                 "   t          j        |          }|                    ddddd          }t          |          }|r|r|                     |||          S |s|r|                     |||          S |s|r|                     |||          S |S )ay  
        Gets a datetime object for the current month.

        :param before_now: include days in current month before today. Defaults to True
        :param after_now: include days in current month after today. Defaults to False
        :param tzinfo: timezone, instance of datetime.tzinfo subclass

        :sample:
        :sample: before_now=False, after_now=True
        r%   r   )r<   r  r  r  r  )r   r   r(   r*   r  )r_   r  r  r   r   this_month_startnext_month_starts          r   date_time_this_monthzProvider.date_time_this_month	  s      l6"";;11QqVW;XX01ABB 	) 	//0@BRTZ[[[ 		 	//5EvNNN 	z 	//0@#vNNNJr   before_todayafter_todayc                 <   t          j                    }t          |j        |j        dz  z
  dd          }t          |j        dz   dd          }|r|r|                     ||          S |s|r|                     ||          S |s|r|                     ||          S |S )a=  
        Gets a Date object for the current century.

        :param before_today: include days in current century before today. Defaults to True
        :param after_today: include days in current century after today. Defaults to False

        :sample:
        :sample: before_today=False, after_today=True
        r  r%   ry  r{  r&   r  )r_   r  r  r{  r  r  s         r   date_this_centuryzProvider.date_this_century7	  s     #EJ%*s2B$CQJJ#$6$;c$A1aHH 	K 	**+=?QRRR 	+ 	**52DEEE 	 	**+=uEEELr   c                 <   t          j                    }t          |j        |j        dz  z
  dd          }t          |j        dz   dd          }|r|r|                     ||          S |s|r|                     ||          S |s|r|                     ||          S |S )a7  
        Gets a Date object for the decade year.

        :param before_today: include days in current decade before today. Defaults to True
        :param after_today: include days in current decade after today. Defaults to False

        :sample:
        :sample: before_today=False, after_today=True
        r  r%   r  )r_   r  r  r{  r  r  s         r   date_this_decadezProvider.date_this_decadeN	  s     "5:b#A1aHH"#4#9B#>1EE 	K 	**+<>OPPP 	+ 	**52CDDD 	 	**+<eDDDLr   c                 (   t          j                    }|                    dd          }t          |j        dz   dd          }|r|r|                     ||          S |s|r|                     ||          S |s|r|                     ||          S |S )a4  
        Gets a Date object for the current year.

        :param before_today: include days in current year before today. Defaults to True
        :param after_today: include days in current year after today. Defaults to False

        :sample:
        :sample: before_today=False, after_today=True
        r%   )r'   r<   )ry  r{  r(   r&   r  )r_   r  r  r{  r  r  s         r   date_this_yearzProvider.date_this_yeare	  s     --aQ-77 aA66 	K 	**?OLLL 	+ 	**5/BBB 	 	**?EBBBLr   c                    t          j                    }|                    d          }t          |          }|r|r|                     ||          S |s|r|                     ||          S |s|r|                     ||          S |S )a7  
        Gets a Date object for the current month.

        :param before_today: include days in current month before today. Defaults to True
        :param after_today: include days in current month after today. Defaults to False

        :sample:
        :sample: before_today=False, after_today=True
        r%   )r<   )ry  r{  r(   r*   r  )r_   r  r  r{  r  r  s         r   date_this_monthzProvider.date_this_month|	  s      ==Q=//01ABB 	K 	**+;=MNNN 	+ 	**52BCCC 	 	**+;UCCCLr   	precisiondistribc              #      
K                         ||          }                      ||          }||k     rt          d                               |||z
  dz  n|          
|
 fd}t          |          st          d| d          |}||k     r,t	          ||          }	|
z  }|	 ||	          fV  ||k     *dS dS )a  
        Returns a generator yielding tuples of ``(<datetime>, <value>)``.

        The data points will start at ``start_date``, and be at every time interval specified by
        ``precision``.

        :param start_date: A ``DateParseType``. Defaults to ``"-30d"``
        :param end_date: A ``DateParseType``. Defaults to ``"now"``
        :param precision: A float representing the time interval between data points.
        Defaults to 1/30th of the time
        :param distrib: A callable that accepts a datetime object and returns a value.
        Defaults to a uniform distribution
        :param tzinfo: timezone, instance of datetime.tzinfo subclass

        :sample:
        r   z-`end_date` must be greater than `start_date`.N   c                 D    j         j                            d          S ra  )r[   r\   rb   )r!   
precision_r_   s    r   r  z%Provider.time_series.<locals>.distrib	  s    ~,44Q
CCCr   z"`distrib` must be a callable. Got z	 instead.)rb  r=   rv  callabler6   )r_   r~  r  r  r  r   start_date_	end_date_	datapointr!   r  s   `         @r   time_serieszProvider.time_series	  s-     0 ++Jv+FF))(6)BB	{""LMMM**YM^I,Cr+I+Idmnn
?D D D D D D    	VT'TTTUUU'2	)##&y&99B#Iwwr{{#### )######r   c                 ,    |                      d          S )
        :sample:
        z%pr   r_   s    r   am_pmzProvider.am_pm	       yyr   c                 ,    |                      d          S )r  z%dr   r  s    r   day_of_monthzProvider.day_of_month	  r  r   c                 ,    |                      d          S )r  z%Ar   r  s    r   day_of_weekzProvider.day_of_week	  r  r   c                 ,    |                      d          S )r  z%mr   r  s    r   r'   zProvider.month	  r  r   c                 ,    |                      d          S )r  z%Br   r  s    r   
month_namezProvider.month_name	  r  r   c                 ,    |                      d          S )r  z%Yr   r  s    r   r&   zProvider.year	  r  r   c                 6    |                      | j                  S r  )random_elementrx   r  s    r   centuryzProvider.century	  s     ""4>222r   c                 z    | j         j                            |                     | j                  j                  S r  )r[   r\   choicer  	countriesr}   r  s    r   r
   zProvider.timezone	  s0     ~$++D,?,?,O,O,YZZZr   argskwargsc                 @    t          j         | j        |i |          S )z
        Generate a random timezone (see ``faker.timezone`` for any args)
        and return a Python object usable as a ``tzinfo`` for ``datetime``
        or other fakers.

        :sample:
        )zoneinfoZoneInfor
   )r_   r  r  s      r   
pytimezonezProvider.pytimezone	  s&      !?!?!?@@@r   r   s   minimum_agemaximum_agec                 0   t          |t                    st          d          t          |t                    st          d          |dk     rt          d          |dk     rt          d          ||k    rt          d          t	          j        |                                          }t          ||dz              }t          ||           }|                     |||                                          }||k    r|n|t          d	          z   S )
am  
        Generate a random date of birth represented as a Date object,
        constrained by optional miminimum_age and maximum_age
        parameters.

        :param tzinfo: Defaults to None.
        :param minimum_age: Defaults to ``0``.
        :param maximum_age: Defaults to ``115``.

        :sample:
        :sample: minimum_age=30, maximum_age=50
        zminimum_age must be an integer.zmaximum_age must be an integer.r   z2maximum_age must be greater than or equal to zero.z2minimum_age must be greater than or equal to zero.z6minimum_age must be less than or equal to maximum_age.r%   )r   rX   rY   )rM   )
r,   rl  	TypeErrorr=   r   r   r   r?   rJ  r	   )r_   r   r  r  r   r~  r  dobs           r   date_of_birthzProvider.date_of_birth	  s   & +s++ 	?=>>>+s++ 	?=>>>??QRRR??QRRR$$UVVV l6""'')) a&899
s[L11vjW_``eeggZ''ssS9!3D3D3D-DDr   )NNr   )NNN)NNrK  rL  )rR  N)r[  N)r}  r   N)r}  r{  )r  N)r  )r  N)TFN)TF)r  r   NNN)Nr   r  )LrB   rC   rD   __doc__platformsystemrl  r=  r`   rx   r   ru  __annotations__r   r  recompilerF   rh  r   r   r>  r	   rC  TzInfor   rG  rJ  rQ  r   ry  rY  r   dttimer^  classmethodr;  r<  r   rr  r   rv  rb  r|  r  r  r  r  r  r  r  r  boolr  r  r  r  r  r  r  r  r   r   r   r   r  r  r  r  r'   r  r&   r  r
   r  r  r   r   r   rV   rV   U   s2         , xI%%	O 	O3 	O5 	O 	O 	O 	O 	O
	O 	O3 	O5 	O 	O 	O 	O
$ $ $I|C    0d'(&	
 	
 	
d 	#n	
 	
 	
d" 	()%& 	
 	
 	
#d2 	&'	
 	
 	
3dB 	%&	
 	
 	
CdR 	&'	
 	
 	
Sdb 	   %"#	
 	
 	
cdH 	&'	
 	
 	
IdX 	   %	
 	
 	
Yd@ 	"m	
 	
 	
AdP 	)*% 	
 	
 	
Qd` 	#n	
 	
 	
adp 	()	
 	
 	
qd@ 	+,!	
 	
 	
AdP 	%&	
 	
 	
Qd` 	%&	
 	
 	
adp 	)*	
 	
 	
qd@ 	*+ 	
 	
 	
AdP 	$o$)	
 	
 	
Qd` 	'(%	
 	
 	
adp 	  " %%-	
 	
 	
qd` 	'(%	
 	
 	
adp 	%&	
 	
 	
qd@ 	()	
 	
 	
AdP 	%&	
 	
 	
Qd` 	'(%	
 	
 	
adp 	  8 %C"	
 "	
 "	
qdv 	(*=>3	
 	
 	
wdF	 	+,(!	
 	
 	
G	dV	 	'('"	
 	
 	
W	df	 	)+;<%	
 	
 	
g	dv	 	&'$	
 	
 	
w	dF
 	   -	
 	
 	
G
db
 	'(%#	
 	
 	
c
dr
 	+,%%	
 	
 	
s
dB 	'(%	
 	
 	
CdR 	,-	
 	
 	
Sdb 	%&	
 	
 	
cdr 	&'!	
 	
 	
sdB 	&'	
 	
 	
CdR 	()#	
 	
 	
Sdb 	*+ 	
 	
 	
cdr 	)*%	
 	
 	
sdB 	./%%#	
 	
 	
CdR 	*,?@%	
 	
 	
Sdb 	'(	
 	
 	
cdr 	%&	
 	
 	
sdB 	&'	
 	
 	
CdR 	+,!	
 	
 	
Sdb 	()	
 	
 	
cdr 	%&	
 	
 	
sdB 	%&	
 	
 	
CdR 	*+ 	
 	
 	
Sdb 	%&	
 	
 	
cdr 	%&	
 	
 	
sdB 	&'	
 	
 	
CdR 	'(	
 	
 	
Sdb 	&'	
 	
 	
cdr 	*+%$	
 	
 	
sdB 	*+%$	
 	
 	
CdR 	&' 	
 	
 	
Sdb 	'(% 	
 	
 	
cdr 	,-%!	
 	
 	
sdB 	()	
 	
 	
CdR 	   	
 	
 	
Sdl 	&'&	
 	
 	
md| 	'(	
 	
 	
}dL 	&'	
 	
 	
Md\ 	%&	
 	
 	
]dl 	$o	
 	
 	
md| 	+,&	
 	
 	
}dL 	$o	
 	
 	
Md\ 	()%	
 	
 	
]dl 	#n	
 	
 	
md| 	#n	
 	
 	
}dL 	'(	
 	
 	
Md\ 	%&	
 	
 	
]dl 	SSS	
 	
 	
md| 	'(	
 	
 	
}dL 	#n	
 	
 	
Md\ 	$o!	
 	
 	
]dl 	$o	
 	
 	
md| 	%& 	
 	
 	
}dL 	()	
 	
 	
Md\ 	&'	
 	
 	
]dl 	'(	
 	
 	
md| 	*+%	
 	
 	
}dL 	$o	
 	
 	
Md\ 	'(	
 	
 	
]dl 	,-"	
 	
 	
md| 	')<=#	
 	
 	
}dL 	&'"	
 	
 	
Md\ 	&'	
 	
 	
]dl 	%&	
 	
 	
md| 	JJJ!	
 	
 	
}dL 	*+ 	
 	
 	
Md\ 	%&	
 	
 	
]dl 	)* 	
 	
 	
md| 	()!	
 	
 	
}dL 	()	
 	
 	
Md\ 		 	 	 %!	
 	
 	
]d~ 	*N;"	
 	
 	
dN 	&'	
 	
 	
Od^ 	()	
 	
 	
_dn 	&'	
 	
 	
od~ 	%&	
 	
 	
dN 	()%	
 	
 	
Od^ 	)*-	
 	
 	
_dn 	$o	
 	
 	
od~ 	&'	
 	
 	
dN 	&'	
 	
 	
Od^ 	)+<= 	
 	
 	
_dn 	$o	
 	
 	
od~ 	'(%!	
 	
 	
dN 	%&%	
 	
 	
Od^ 	-.#"	
 	
 	
_dn 	$o	
 	
 	
od~ 	%&	
 	
 	
dN  	&'	
 	
 	
O d^  	NNN	
 	
 	
_ dn  	&'	
 	
 	
o d~  	)*%%	
 	
 	
 dN! 	#n	
 	
 	
O!d^! 	)*	
 	
 	
_!dn! 	  " -	
 	
 	
o!d^" 	&'	
 	
 	
_"dn" 	$o	
 	
 	
o"d~" 	,-"	
 	
 	
"dN# 	$o	
 	
 	
O#d^# 	()	
 	
 	
_#dn# 	)*	
 	
 	
o#d~# 	'(	
 	
 	
#dN$ 	)*	
 	
 	
O$d^$ 	*+ 	
 	
 	
_$dn$ 	()	
 	
 	
o$d~$ 	*+ 	
 	
 	
$dN% 	%&	
 	
 	
O%d^% 	)*	
 	
 	
_%dn% 	+,% 	
 	
 	
o%d~% 	()=,	
 	
 	
%dN& 	&'	
 	
 	
O&d^& 	$o!	
 	
 	
_&dn& 	%&	
 	
 	
o&d~& 	&'	
 	
 	
&dN' 	&'	
 	
 	
O'd^' 	%&	
 	
 	
_'dn' 	*+'	
 	
 	
o'd~' 	()	
 	
 	
'dN( 	./%&#	
 	
 	
O(d^( 	)*	
 	
 	
_(dn( 	-.	
 	
 	
o(d~( 	   	
 	
 	
(dX) 	'(	
 	
 	
Y)dh) 	  6 % &A!	
 !	
 !	
i)dl* 	+,% 	
 	
 	
m*d|* 	'9	
 	
 	
}*dL+ 	'("	
 	
 	
M+d\+ 	()%	
 	
 	
]+dl+ 	$o	
 	
 	
m+d|+ 	&'	
 	
 	
}+dL, 	"m	
 	
 	
M,d\, 	&'	
 	
 	
],dl, 	&'	
 	
 	
m,d|, 	'(	
 	
 	
},dL- 	())	
 	
 	
M-d\- 	() 	
 	
 	
]-dl- 	&'+	
 	
 	
m-d|- 	()	
 	
 	
}-dL. 	&'	
 	
 	
M.d\. 	&'	
 	
 	
].dl. 	"m	
 	
 	
m.d|. 	,-%"	
 	
 	
}.dL/ 	&'$	
 	
 	
M/d\/ 	()%"	
 	
 	
]/dl/ 	   	
 	
 	
m/dH0 	'(	
 	
 	
I0dX0 	JJJ1	
 	
 	
Y0dh0 	(),	
 	
 	
i0dx0 	&'	
 	
 	
y0dH1 	)*	
 	
 	
I1dX1 	*+	
 	
 	
Y1dh1 	)*%( 	
 	
 	
i1dx1 	)*%	
 	
 	
y1dH2 	+,%3	
 	
 	
I2dX2 	%&	
 	
 	
Y2dh2 	()	
 	
 	
i2dx2 	,-	
 	
 	
y2dH3 	JJJ	
 	
 	
I3dX3 	%&/	
 	
 	
Y3dh3 	'(	
 	
 	
i3dx3 	&'	
 	
 	
y3dH4 	#n'	
 	
 	
I4dX4 	&'!	
 	
 	
Y4dh4 	$o	
 	
 	
i4dx4 	"M2	
 	
 	
y4dIL5 BJ())E 1526G G}-G !/G 
	G G G G(% %x'> %) % % % %$ $(04r r r }-r 
	r r r r( $(0426	"K "K "K }-"K !/	"K
 
"K "K "K "KL $(04Z Z Z }-Z 	Z
 Z 
Z Z Z Z&K KC KH]<S K_b K K K K	@ 	@(: 	@f 	@ 	@ 	@ 	@
R 
RC 
RH]<S 
R_b 
R 
R 
R 
R	@ 	@(? 	@6 	@ 	@ 	@ 	@ +(=*A +c + + + [+ +(? +C + + + [+ s tCJ/?    [. DU9c5+@%A DeESVJFW D D D [D ? ?] ?HV<L ?X[ ? ? ? [? ? ?& ? ? ? [?& %+"'#'	l l!l  l  	l
 
l l l l6Q Q} Q Qek Q Q Q Q"Z Z ZQWHX Zdl Z Z Z ZF FM Fv F F F F\ \ \QWHX \dl \ \ \ \H HM HHVDT H`f H H H H 3704#'	* * /* }-*  	*
 
* * * *\ /3,0I I]+I =)I 
	I I I I"  #'	    	
 
   >  #'	    	
 
   >  #'	    	
 
   >  #'	    	
 
   : d  Y_    . T t X^    . 4 T V\    . D d W]    2 %+"'%)9=#'+$ +$!+$  +$ E?	+$
 (H:u#456+$  +$ 
%#&	'+$ +$ +$ +$Zs    c    S    s    C    c    3 3 3 3 3[# [ [ [ [A As Ax7G A A A A $(	,E ,E ,E ,E 	,E
 
,E ,E ,E ,E ,E ,Er   rV   c                     dd l }| dk    r|j                             | |          S |                     ddd|          |                    t          |                     z   S )Nr   rE  r%   r   r@  )r   r  r	   rl  )r2   r   r!   s      r   r4   r4   )
  sc    A~~{((F;;;{{4Af{55SQZ^^8\8\\\r   )/r  r  r  calendarr   r   r   r   ry  r   r  r	   r
   r.   r   r  typingr   r   r   r   r   r   r   faker.typingr   r   rE   r   r   	localizedr    r*   rl  r1   r=  r6   r?   r=   rA   rF   ru  r  r   symrV   r4   r   r   r   <module>r     s    				              # # # # # #       # # # # # #       + + + + + + % % % % % % H H H H H H H H H H H H H H H H H H / / / / / / / / ) ) ) ) ) ) ) )	' ' '*eFH$45 *%@P:Q * * * *"eFH$45 "# " " " "<U3:%6 <@P <U] < < < <f      .	 	 	 	 	 	 	 	  3    	> 	>ID# =$==c====Q'E Q'E Q'E Q'E Q'E| Q'E Q'E Q'EhN]U3:-> ] ]S[ ] ] ] ] ] ]r   