rust9+rustc 1.68.0-nightly (dfe3fe710 2022-12-09) 򃖄-ae7c8913b35a5ca6D-798bc7c2d986ac97ܞ-f11f71ea62a32136rustc_std_workspace_coreҖ\-69892fa511d5a698ۿ-1b6e8c3b90cb6cbb⹸ܓ-ab0d37bafe4ab3ae ܍-cc7f579d6945bfeccfg_if/-ce15aed4a311d51a miniz_oxideд-28b2838e99ee5f80rustc_std_workspace_allocֽ-7fae1cbdfa868f48adlerǦܾߨ -c5048540e1973bf2 hashbrown{-ae361ec87fdb168e std_detectܝ-c67916eee25714a6rustc_demangleʙڭ-fbff91a79c9e1598ķ-a0120e295b4c3301time֡w-986176097c2e5284winapiڶЩ}-2c1ba2e31e1471d1 num_integer̉-44ca95044afbfbed num_traits뎠n-38087d2823881823 oldtime     date     MIN_DATEMAX_DATE:Tz:from_utc:and_time:and_hms: and_hms_opt? : and_hms_milli:and_hms_milli_optB : and_hms_micro:and_hms_micro_optE : and_hms_nano:and_hms_nano_optH :succ:succ_optK :pred:pred_optN ::timezone: with_timezoneRTz2:checked_add_signed:checked_sub_signed:signed_duration_sinceV : naive_utc: naive_local: years_since:MIN_UTC:MAX_UTC map_local]]F] aaformat_with_itemsc'acIcBag iiyearimonthimonth0idayiday0iordinaliordinal0iweekdayiiso_weeki with_yeart i with_monthv i with_month0x iwith_dayz i with_day0| i with_ordinal~ i with_ordinal0   H       datetime      !"#$%&'()*+, MIN_DATETIME MAX_DATETIME from_local date_naive timestamptimestamp_millistimestamp_microstimestamp_nanostimestamp_subsec_millistimestamp_subsec_microstimestamp_subsec_nanos    checked_add_months checked_sub_monthschecked_add_dayschecked_sub_days       ;;;     parse_from_rfc2822ITEMSparse_from_rfc3339parse_from_str  to_rfc2822 to_rfc3339to_rfc3339_optsPREFIX                    hourminutesecond nanosecond with_hour  with_minute  with_second with_nanosecond         ~from_str !~! "#$         InternalNumeric_dummylitspnumnum0numsfix internal_fix ParseResult description OUT_OF_RANGE IMPOSSIBLE NOT_ENOUGHINVALID TOO_SHORTTOO_LONG BAD_FORMATLocales short_months long_monthsshort_weekdays long_weekdaysam_pm format_item  format_inner                                   ! " # $ % & ' (write_local_minus_utc write_rfc3339 write_rfc2822write_rfc2822_innerwrite_hundreds   parsed     set_if_consistentset_yearset_year_div_100set_year_mod_100 set_isoyearset_isoyear_div_100set_isoyear_mod_100 set_monthset_week_from_sunset_week_from_mon set_isoweek set_weekday set_ordinalset_dayset_ampm set_hour12set_hour set_minute set_secondset_nanosecond set_timestamp set_offset to_naive_date resolve_year       to_naive_timeto_naive_datetime_with_offsetto_fixed_offset to_datetimeto_datetime_with_timezone parse     %set_weekday_with_num_days_from_sunday#set_weekday_with_number_from_monday parse_rfc2822  try_consume parse_rfc3339 20     parse_internal 'b  2Setter             ~! DATE_ITEMS TIME_ITEMSscanequals number SCALE  nanosecond_fixed5  short_month0 short_weekdayshort_or_long_month0LONG_MONTH_SUFFIXES short_or_long_weekdayLONG_WEEKDAY_SUFFIXES spacecolon_or_space timezone_offset timezone_offset_internal digitstimezone_offset_zulu timezone_offset_permissive timezone_offset_2822   timezone_name_skip  comment_2822 CommentStateStart Next  Escape  strftimeFmt D_FMTD_T_FMTT_FMT  with_remainerFMT_NONE HAVE_ALTERNATES Itemreconsrecons_from_slice     new_with_offsetOff     ~! ~! naive      !"#$%&'()MAX_YEARMIN_YEAR first_daylast_daydaysfrom_offrom_mdffrom_ymd from_ymd_optfrom_yo from_yo_opt from_isoywdfrom_isoywd_optfrom_num_days_from_cefrom_num_days_from_ce_optfrom_weekday_of_monthfrom_weekday_of_month_opt diff_months   diff_days            mdfwith_mdfwith_of                iter_days iter_weeksweekMINMAX                < size_hint next_back<HH~!;      !"#$%& MAX_SECS_BITSNANOS_IN_MILLISECONDNANOS_IN_SECONDfrom_timestampfrom_timestamp_millisfrom_timestamp_opt UNIX_EPOCH_DAY        and_local_timezoneEF                           ~!; internalsDateImpl?@AAG BAdCBDDCEED FEGGF YEAR_TO_FLAGS  YEAR_DELTAS  cycle_to_yo yo_to_cycle from_yearfrom_year_mod_400ndays isoweek_delta nisoweeks MIN_OLMAX_OLMAX_MDLXX MDL_TO_OL  OL_TO_MDL   @ valid      isoweekdate_raw to_mdf       @        with_flags to_of isoweek      iso_week_from_yof    E week0                                  from_hms  from_hms_opt from_hms_milli from_hms_milli_opt  from_hms_micro from_hms_micro_opt   from_hms_nano from_hms_nano_opt from_num_seconds_from_midnight "from_num_seconds_from_midnight_opt  overflowing_add_signed overflowing_sub_signed               hms E F          num_seconds_from_midnight                        ~ !    ;                       fixed                       east east_opt west west_opt local_minus_utc utc_minus_local  Offset  from_offset offset_from_local_date offset_from_local_datetime offset_from_utc_date offset_from_utc_datetime  #     add_with_leapsecond                                        inner                         now naive_to_local tm_to_datetime Timespec sec nsec  g  Tm tm_sec tm_min tm_hour tm_mday tm_mon tm_year tm_wday tm_yday tm_isdst  tm_utcoff tm_nsec HECTONANOSECS_IN_SEC HECTONANOSEC_TO_UNIX_EPOCH time_to_file_time file_time_as_u64 file_time_to_unix_seconds system_time_to_file_time tm_to_system_time system_time_to_tm yday  time_to_local_tm utc_tm_to_time local_tm_to_time  today g  b b c  c  c c from_local_date  from_local_datetime  from_utc_date from_utc_datetime  utc                      k g  b b c c c c  #        single earliest latest  U                  b # TimeZone b with_ymd_and_hms  ymd ymd_opt yo yo_opt isoywd  isoywd_opt   timestamp_opt  timestamp_millis_opt  datetime_from_str b c c l  l  c c l mround               SubsecRound  round_subsecs  trunc_subsecs   s s span_for_digits  DurationRound ~ duration_round duration_trunc MAX_SECONDS_TIMESTAMP_FOR_NANOS   ~ t t  ~ t t t  t     $ !       number_from_monday number_from_sunday num_days_from_monday num_days_from_sunday    from_i64 from_u64     "#$        number_from_month   w w from_u32    %&'(traits    Datelike   year_ce                     num_days_from_ce Timelike  hour12        ^)*+Date      SecondsFormat Secs  Millis  Micros  Nanos  AutoSi  __NonExhaustive % &' () *+ DateTime   ,  Locale   Void    Pad   Zero  Space     Numeric Year   YearDiv100   YearMod100  IsoYear   IsoYearDiv100   IsoYearMod100  Month  Day   WeekFromSun   WeekFromMon  IsoWeek  NumDaysFromSun  WeekdayFromMon  Ordinal  Hour  Hour12  Minute  Second   Nanosecond   Timestamp  Internal    FixedShortMonthName  LongMonthName ShortWeekdayName LongWeekdayName  LowerAmPm  UpperAmPm   Nanosecond3  Nanosecond6  Nanosecond9  TimezoneName TimezoneOffsetColon TimezoneOffsetDoubleColon TimezoneOffsetTripleColon TimezoneOffsetColonZ TimezoneOffset TimezoneOffsetZ RFC2822 RFC3339 ʃ   !"#$ InternalFixed %&'()*InternalInternalTimezoneOffsetPermissive Nanosecond3NoDot Nanosecond6NoDot Nanosecond9NoDot +,-./0Colons Single Double Triple 123456< Literal   OwnedLiteral     OwnedSpace        7 8 9 : ; <  ParseError  =>?@ABCParseErrorKind OutOfRange  Impossible  NotEnough Invalid TooShort TooLong  BadFormat __Nonexhaustive DEFGHIJParsed  year_div_100 year_mod_100isoyearisoyear_div_100isoyear_mod_100  week_from_sun week_from_monX   hour_div_12 hour_mod_12#;  StrftimeItems  remainder<d_fmtd_t_fmtt_fmt  RECONSҕҕҕҕҕ DelayedFormat offitemsK  NaiveWeek Days    NaiveDateymdf!"#$%&'()NaiveDateDaysIteratorvalue*+,-./0123NaiveDateWeeksIterator456789:;<= NaiveDateTime YearFlags     Of    Mdf   ywf           NaiveTimesecsfrac              FixedOffsetb           Local     Utc           LocalResult Ë   Ambiguous               RoundingErrorDurationExceedsTimestamp DurationExceedsLimit TimestampExceedsLimit            WeekdayMon  Tue  Wed  Thu  Fri  Sat  Sun                ParseWeekdayError#      January  February  March  April  May  June  July  August   September  October  November  December              Months              ParseMonthError#     =7>7?7A7B7D7E7G7H7J7K7M7N7P7Q7R7R7X7Y7Z7]7c7g7k7l7m7n7o7p7q7r7s7t7v7x7z7|7~7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777                                                     F                                                                           i    71 C&#D 8 [TC 7T ?"b$#7U 8     [¡   {  ֹۆ`585 5[Date::MIN_UTC\595 5\Date::MAX_UTCYYY*Y*͕FYY*YXJ[XJY YXJY*Date{ date: NaiveDate::MIN, offset: Utc,}ZZZ*Z*ZZ*ZYJ\YJY ZYJZ*Date{ date: NaiveDate::MAX, offset: Utc,}  }  AA ADateTime::MIN_UTCAA ADateTime::MAX_UTCxxx6x6ʛ|xx6xwZwZx xwZx6DateTime{ datetime: NaiveDateTime::MIN, offset: Utc,}yyy6y6yy6yyZyZy yyZy6DateTime{ datetime: NaiveDateTime::MAX, offset: Utc,}ݝݝݝݝ ʌ       с(ݝݝݝ  ??ʝݝݝޝߝ̈́څ   ۆ  ȇʃ ē%ݝ?&[Item::Fixed(Fixed::RFC2822)]ߝߝߝޝ ݝݝ?ݝޝߝݝܢܢܢܢܢܢܢ??ɢܢܢݢޢܢ?&[Item::Fixed(Fixed::RFC3339)]ޢޢޢݢ ܢܢ?ܢݢޢܢ%  %&       Ā  ۀ          Ł  ݁          ӂ            ʃ  ߗ՚       Ӝ8 ͎͎͎͎͎͎͎͎͎&[Item::Numeric(Year, Zero), Item::Literal("-"), Item::Numeric(Month, Zero), Item::Literal("-"), Item::Numeric(Day, Zero), Item::Literal("T"), Item::Numeric(Hour, Zero), Item::Literal(":"), Item::Numeric(Minute, Zero), Item::Literal(":"), Item::Numeric(Second, Zero)]K-͎ʌ͎       -͎    ʌ͎  T͎ʌ͎:͎ʌ͎:͎ʌ͎!!""  ! "     #͎͎͎͎͎͎͎͎͎͎zzzz&z&ΐ̛/{zHzH  ֮-z ԤzzH&ParseError(ParseErrorKind::OutOfRange){{{{&{&Ԥ{{F{F{ Ԥ{{F&ParseError(ParseErrorKind::Impossible)||||%|%Ԥ|{E{E{ Ԥ|{E%ParseError(ParseErrorKind::NotEnough)||||#|#Ԥ||@|@| Ԥ||@#ParseError(ParseErrorKind::Invalid)}}}}$}$Ԥ}|C|C| Ԥ}|C$ParseError(ParseErrorKind::TooShort)}}}}#}#Ԥ}}A}A} Ԥ}}A#ParseError(ParseErrorKind::TooLong)~~~~%~%Ԥ~}E}E~ Ԥ~}E%ParseError(ParseErrorKind::BadFormat) ǰǰɰ͓'ۓ  ͎͎͎͎(͔ݔ ͎͎͎͎& Ε ǰ&[Item::Numeric(Numeric::Year, Pad::Zero), Item::Space(""), Item::Literal("-"), Item::Numeric(Numeric::Month, Pad::Zero), Item::Space(""), Item::Literal("-"), Item::Numeric(Numeric::Day, Pad::Zero)].ۓ ۓ   ͓'͓'͓'͓'͎͎ -͎  ʌ͎ ͔ ͔ ݔ  ݔ  ( (  (  ( ͎͎-͎ʌ͎  Ε Ε &&&&  ǰɰ͓'ۓ  ͎͎͎͎(͔ݔ ͎͎͎͎& Ε ##љљ$'  ֖͎͎͎͎) ʗ͎͎͎͎֗֗) ʘ͎͎#͎ę͎ę&[Item::Numeric(Numeric::Hour, Pad::Zero), Item::Space(""), Item::Literal(":"), Item::Numeric(Numeric::Minute, Pad::Zero), Item::Space(""), Item::Literal(":"), Item::Numeric(Numeric::Second, Pad::Zero), Item::Fixed(Fixed::Nanosecond), Item::Space(""), Item::Fixed(Fixed::TimezoneOffsetZ), Item::Space("")]B    ''''͎֖֖͎֖ :͎  ʌ͎       ) )  )  ) ͎֗֗֗ʗʗ͎ʗ:͎ʌ͎  ))))ʘʘ͎͎###ę ę͎ę ͎   !'  ֖͎͎͎͎) ʗ͎͎͎͎֗֗) ʘ͎͎#͎ę͎ęK   /  =Nd nn  n 10K   /  =Nd nn n 10'V ͎ 'uary͎(ruary͎(ch͎(il͎(͎(e͎(y͎(ust͎(tember?͎(ober͎(ember͎(ember͎''͎ ' ''' ''''12-9 ͎-day͎-sday͎-nesday?͎-rsday͎-day͎-urday͎-day͎-l-l͎- -l------7]D]D]D]D ]D]D]D]]]j]j]]D]D]Cb%b b `͎]͎]b%b b `͎]͎]b%b b ]D]j$b b b b b%b%b%b%]]/͎]``ʌ͎`b  b  b  b  b%b% b% b%] ]/͎]  ` ` ʌ͎ ` b b b b b%b%b%b%]C  ]D]D]j]D]Cb%b b `͎]͎]b%b b `͎]͎]b%b b ]D^^^)^  ^)^^__]]*^^^^dd a͎^͎^dd a͎^͎^c&c c a͎_͎_b%b b `͎_͎_b%b b `͎_͎_b%b b a͎_͎_b%b b ^]Rd d ddd^^ ͎^aa͎ad d ddd^ ^ ͎^  a a ͎ a c  c  c c c& c&  c& c& __ ͎_aa͎ab b b b b%b%b%b%__:͎_``ʌ͎`b b b b b%b%b%b%__:͎_``ʌ͎`b b b  b  b%b%b% b%_#_ ͎_"#a!a!͎"a!b %b %b &b &b%$b%$%b%$&b%$^    !$^^]'^^dd a͎^͎^dd a͎^͎^c&c c a͎_͎_b%b b `͎_͎_b%b b `͎_͎_b%b b a͎_͎_b%b b ^`B`B`B`B`B`B`B```d`d``B`B`Ab%b b `͎`͎`b%b b `͎`͎`b%b b `B`d$b b b b b%b%b%b%``:͎```ʌ͎`b  b  b  b  b%b% b% b%` `:͎`  ` ` ʌ͎ ` b b b b b%b%b%b%`A  `B`B`d`B`Ab%b b `͎`͎`b%b b `͎`͎`b%b b `Blll llll+l+lllll+l lll+lllllllll0ppz͎p"p"͎pp""z"Ƃ Ƃ Ƃ Ƃ  Ƃ Ƃ Ƃ ҂҂77Ƃ Ƃ ǂ `͎͎b%b b `͎ϊ͎ϊb%b b Ƃ 7&[Item::Literal("/"), Item::Numeric(Numeric::Day, Pad::Zero), Item::Literal("/"), Item::Numeric(Numeric::YearMod100, Pad::Zero)]/͎``ʌ͎`b b b b b%b%b%b%ϊ ϊ/͎ϊ  ``ʌ͎ `b  b  b  b  b% b%  b%  b% ǂ   Ƃ Ƃ 7Ƃ ǂ `͎͎b%b b `͎ϊ͎ϊb%b b Ƃ Ƃ Ƃ Ƃ Ƃ Ƃ Ƃ Ƃ ҂҂77Ƃ Ƃ ǂ `͎͎b%b b `͎͎̋̋b%b b Ƃ 7&[Item::Literal("-"), Item::Numeric(Numeric::Month, Pad::Zero), Item::Literal("-"), Item::Numeric(Numeric::Day, Pad::Zero)]-͎``ʌ͎`b b b b b%b%b%b%̋ ̋-͎̋  ``ʌ͎ `b  b  b  b  b% b%  b%  b% ǂ   Ƃ Ƃ 7Ƃ ǂ `͎͎b%b b `͎͎̋̋b%b b Ƃ Ƃ Ƃ Ƃ  Ƃ  Ƃ  Ƃ Ƃ ҂҂77 Ƃ Ƃ ǂ `͎͎b%b b Ƃ 7@&[Item::Literal(":"), Item::Numeric(Numeric::Minute, Pad::Zero)]:͎``ʌ͎`b b b b b%b%b%b%ǂ  Ƃ Ƃ 7Ƃ ǂ `͎͎b%b b Ƃ Ƃ Ƃ Ƃ Ƃ Ƃ Ƃ Ƃ ҂҂77Ƃ Ƃ ǂ `͎܎͎܎b%b b `͎͎b%b b Ƃ 7&[Item::Literal(":"), Item::Numeric(Numeric::Minute, Pad::Zero), Item::Literal(":"), Item::Numeric(Numeric::Second, Pad::Zero)]܎܎:͎܎``ʌ͎`b b b b b%b%b%b% :͎  ``ʌ͎ `b  b  b  b  b% b%  b%  b% ǂ   Ƃ Ƃ 7Ƃ ǂ `͎܎͎܎b%b b `͎͎b%b b Ƃ Ƃ Ƃ Ƃ Ƃ  Ƃ Ƃ Ƃ ҂҂77Ƃ Ƃ ǂ `͎͎ۖۖb%b b `͎͎b%b b a͎͎dd Ƃ 7&[Item::Literal(":"), Item::Numeric(Numeric::Minute, Pad::Zero), Item::Literal(":"), Item::Numeric(Numeric::Second, Pad::Zero), Item::Space(" "), Item::Fixed(Fixed::UpperAmPm)]&ۖۖ:͎ۖ``ʌ͎`b b b b b%b%b%b% :͎  ``ʌ͎ `b  b  b  b  b% b%  b%  b%  ͎aa͎ad d dddǂ   Ƃ Ƃ 7Ƃ ǂ `͎͎ۖۖb%b b `͎͎b%b b a͎͎dd Ƃ Ƃ Ƃ Ƃ Ƃ Ƃ Ƃ Ƃ ҂҂77Ƃ Ƃ ǂ `͎͎dd `͎͎b%b b Ƃ 7&[Item::Literal("-"), Item::Fixed(Fixed::ShortMonthName), Item::Literal("-"), Item::Numeric(Numeric::Year, Pad::Zero)]-͎``ʌ͎`d d ddd -͎ ``ʌ͎`b  b  b  b  b% b%  b%  b% ǂ   Ƃ Ƃ 7 Ƃ ǂ `͎͎dd `͎͎b%b b Ƃ ***internals::MAX_YEAR***internals::MIN_YEAR999/9/9 9/9NaiveDate::MIN:::/:/: :/:NaiveDate::MAX"    ""===YY "Y.NaiveDate{ ymdf: MIN_YEAR << 13 | 1 << 4 | 7,}$           -$$>>>ZZ $  Z1NaiveDate{ ymdf: MAX_YEAR << 13 | 365 << 4 | 15,} ±б'ޱ  ͎͎͎͎²(в ͎͎͎͎&ó ѳ ͎͎&[Item::Numeric(Numeric::Year, Pad::Zero), Item::Space(""), Item::Literal("-"), Item::Numeric(Numeric::Month, Pad::Zero), Item::Space(""), Item::Literal("-"), Item::Numeric(Numeric::Day, Pad::Zero), Item::Space("")]3ޱ ޱ   б'б'б'б'͎͎ -͎  ʌ͎ в в     ²( ²(  ²(  ²( ͎͎-͎ʌ͎ó ó ѳ ѳ &&&&͎͎±  ±б'ޱ  ͎͎͎͎²(в ͎͎͎͎&ó ѳ ͎͎  ,    44  = , ,  ,1000000         9 9   9  1000 * NANOS_IN_MILLISECOND;; ;NaiveDateTime::MIN;; ;NaiveDateTime::MAXff+f$f$ff$719163333  ة JJJ 3Self{ date: NaiveDate::MIN, time: NaiveTime::MIN,}333 JJJ 3Self{ date: NaiveDate::MAX, time: NaiveTime::MAX,}9 9:' ͍ ͎͎͎͎( ؎͎͎͎͎&  ɏ͎Տ͎Տ͎͎' ΐ ͎͎͎͎)‘ ڑ͎͎͎͎) Βڒ͎͎&[Item::Numeric(Numeric::Year, Pad::Zero), Item::Space(""), Item::Literal("-"), Item::Numeric(Numeric::Month, Pad::Zero), Item::Space(""), Item::Literal("-"), Item::Numeric(Numeric::Day, Pad::Zero), Item::Space(""), Item::Literal("T"), Item::Numeric(Numeric::Hour, Pad::Zero), Item::Space(""), Item::Literal(":"), Item::Numeric(Numeric::Minute, Pad::Zero), Item::Space(""), Item::Literal(":"), Item::Numeric(Numeric::Second, Pad::Zero), Item::Fixed(Fixed::Nanosecond), Item::Space("")]n  ͍ ͍ ''''͎͎ -͎  ʌ͎       ( (  (  ( ͎؎؎͎؎-͎ʌ͎    &&&&ՏՏ͎Տɏɏ͎ɏT͎ʌ͎  ΐ ΐ ''''"͎!"  ͎! %:͎$%##ʌ͎$#''‘ (‘ ()&)&')&()&+͎*+ڑ)ڑ)͎*ڑ).:͎-.,,ʌ͎-,00 1 1)/)/0)/1)/ڒ3ڒ3Β2Β23Β26͎5644͎54   #&),/247' ͍ ͎͎͎͎( ؎͎͎͎͎&  ɏ͎Տ͎Տ͎͎' ΐ ͎͎͎͎)‘ ڑ͎͎͎͎) Βڒ͎͎            55  5  i32::MAX >> 13             5 5   5  i32::MIN >> 13 00Ԝ  Ϛ\ 0 YearFlags(13)11 1 YearFlags(5) 00 0 YearFlags(12)11 1 YearFlags(4) 00 0 YearFlags(11)11 1 YearFlags(3) 00 0 YearFlags(10)11 1 YearFlags(2) 00 0 YearFlags(9)11 1 YearFlags(1)00 0 YearFlags(15)11 1 YearFlags(7)00 0 YearFlags(14)11 1 YearFlags(6)     400                                                         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""""""""""""""""""""""############### # # # #!#!#!#!#"#"#"#"#########$$$$$$$$%$%$%$%$&$&$&$&$'$'$'$'$($($($($)$)$)$)$*$*$*$*$+$+$+%+%,%,%,%,%-%-%-%-%.%.%.%.%/%/%/%/%0%0%0%0%1%1%1%1%1%1%1&1&2&2&2&2&3&3&3&3&4&4&4&4&5&5&5&5&6&6&6&6&7&7&7&7&8&8&8&8&9&9'9'9':':':':';';';';'<'<'<'<'='='='='>'>'>'>'?'?'?'?'@'@'@'@'A(A(A(A(B(B(B(B(C(C(C(C(D(D(D(D(E(E(E(E(F(F(F(F(G(G(G(G(H(H(H)H)I)I)I)I)I)I)I)I)J)J)J)J)K)K)K)K)L)L)L)L)M)M)M)M)N)N)N)N*O*O*O*O*P*P*P*P*Q*Q*Q*Q*R*R*R*R*S*S*S*S*T*T*T*T*U*U*U*U*V*V*V+V+W+W+W+W+X+X+X+X+Y+Y+Y+Y+Z+Z+Z+Z+[+[+[+[+\+\+\+\+]+]+]+]+^+^,^,^,_,_,_,_,`,`,`,`,a,a,a,a    401>>>> >>>>& >&>>>&1 << 1>>>> >>>>( >(>>>(366 << 1?? ? ? ??  ? ?? ? ? ???  ??? ???????: ?:??? ? ? ? ?:12 << 6 | 31 << 1 | 1??? ???-128@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A B B B B B B B B B B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@C@D@D@D@D@D@D@D@D@D@D@D@D@D D DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBFBFBF F F F F F F FHFJFHFJFHFJFHFJFHFJFHFJGHGJGHGJGHGJGHGJGHGJGHGJGHGJGHGJGHGJGHGJGHGJGHGJGHGJGHGJGHGJGHHJHHHJHHHJHHHJHHHJHHHJHHHJHHHJHHHJHHHJH H HJHLHJHLHJHLHJHLIJILIJILIJILIJILIJILIJILIJILIJILIJILIJILIJILIJILIJILIJILIJILIJJLJJJLJJJLJJJLJJJLJJJLJJJLJJJLJJJLJJJLJJJLJ J J J JNJPJNKPKNKPKNKPKNKPKNKPKNKPKNKPKNKPKNKPKNKPKNKPKNKPKNKPKNKPKNKPKNKPLNLPLNLPLNLPLNLPLNLPLNLPLNLPLNLPLNLPLNLPLNLPLNLPLNLPLNLPL M MPMRMPMRMPMRMPMRMPMRMPMRMPMRMPMRMPMRMPMRMPMRMPMRMPMRMPMRMPMRNPNRNPNRNPNRNPNRNPNRNPNRNPNRNPNRNPNRNPNRNPNRNPNRNPNRNPNRNPNRN O O O OTOVOTOVOTOVOTOVOTOVOTOVOTOVOTOVOTOVOTOVOTOVOTOVOTOVPTPVPTPVPTPVPTPVPTPVPTPVPTPVPTPVPTPVPTPVPTPVPTPVPTPVPTPVPTPVPTQVQTQVQTQVQ Q QVQXQVQXQVQXQVQXQVQXQVQXQVQXQVQXQVQXQVQXQVQXRVRXRVRXRVRXRVRXRVRXRVRXRVRXRVRXRVRXRVRXRVRXRVRXRVRXRVRXRVRXRVSXSVSXSVSXSVSXSVSXS S SXSZSXSZSXSZSXSZSXSZSXSZSXSZSXSZSXSZTXTZTXTZTXTZTXTZTXTZTXTZTXTZTXTZTXTZTXTZTXTZTXTZTXTZTXTZTXTZUXUZUXUZUXUZUXUZUXUZUXUZU U U U U\U^U\U^U\U^U\U^U\U^U\U^U\U^V\V^V\V^V\V^V\V^V\V^V\V^V\V^V\V^V\V^V\V^V\V^V\V^V\V^V\V^V\V^V\W^W\W^W\W^W\W^W\W^W\W^W\W^W\W^W\W^W W W^W`W^W`W^W`W^W`W^W`X^X`X^X`X^X`X^X`X^X`X^X`X^X`X^X`X^X`X^X`X^X`X^X`X^X`X^X`X^X`X^Y`Y^Y`Y^Y`Y^Y`Y^Y`Y^Y`Y^Y`Y^Y`Y^Y`Y^Y`Y Y Y Y YbYdYbYdYbZdZbZdZbZdZbZdZbZdZbZdZbZdZbZdZbZdZbZdZbZdZbZdZbZdZbZd[b[d[b[d[b[d[b[d[b[d[b[d[b[d[b[d[b[d[b[d[b[d[b[d[b[d[b[d\b\d? ???e@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A B B B B B B B B B D D F F F F F F F H H J J J J L M N O O O Q Q S S U U U U W W Y Y Y Y ??? ?@? @?@? ?????? MAX_MDL as usize + 1\ \\\@\@\@\@\@\@\@\@\@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@]@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^B^B^B^B^B^B^B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B_B`B`B`B`B`B`B`B`B`B`B`B`B`B`B`B`B`B`B`B`J`H`J`H`J`H`J`H`J`HaJaHaJaHaJaHaJaHaJaHaJaHaJaHaJaHaJaHaJaHaJaHaJaHaJaHaJaHaJaHaJbHbJbHbJbHbJbHbJbHbJbHbJbHbJbHbJbHbJbHbJbHbLbJbLbJbLbJbLcJcLcJcLcJcLcJcLcJcLcJcLcJcLcJcLcJcLcJcLcJcLcJcLcJcLcJcLcJcLcJdLdJdLdJdLdJdLdJdLdJdLdJdLdJdLdJdLdJdLdJdLdJdPdNdPdNdPdNdPeNePeNePeNePeNePeNePeNePeNePeNePeNePeNePeNePeNePeNePeNePeNePeNfPfNfPfNfPfNfPfNfPfNfPfNfPfNfPfNfPfNfPfNfPfNfPfNfRfPfRfPfRgPgRgPgRgPgRgPgRgPgRgPgRgPgRgPgRgPgRgPgRgPgRgPgRgPgRgPgRgPgRgPhRhPhRhPhRhPhRhPhRhPhRhPhRhPhRhPhRhPhRhPhRhPhRhPhVhThVhThViTiViTiViTiViTiViTiViTiViTiViTiViTiViTiViTiViTiViTiViTiViTiViTjVjTjVjTjVjTjVjTjVjTjVjTjVjTjVjTjVjTjVjTjVjTjVjTjVjTjXjVkXkVkXkVkXkVkXkVkXkVkXkVkXkVkXkVkXkVkXkVkXkVkXkVkXkVkXkVkXkVkXlVlXlVlXlVlXlVlXlVlXlVlXlVlXlVlXlVlXlVlXlVlXlVlXlVlXlVlXlVmZmXmZmXmZmXmZmXmZmXmZmXmZmXmZmXmZmXmZmXmZmXmZmXmZmXmZmXmZmXmZnXnZnXnZnXnZnXnZnXnZnXnZnXnZnXnZnXnZnXnZnXnZnXnZnXnZnXnZnXo^o\o^o\o^o\o^o\o^o\o^o\o^o\o^o\o^o\o^o\o^o\o^o\o^o\o^o\o^o\o^p\p^p\p^p\p^p\p^p\p^p\p^p\p^p\p^p\p^p\p^p\p^p\p^p\p^p\p^p\p^p\q`q^q`q^q`q^q`q^q`q^q`q^q`q^q`q^q`q^q`q^q`q^q`q^q`q^q`q^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`r^r`r^r`r^r`s^sdsbsdsbsdsbsdsbsdsbsdsbsdsbsdsbsdsbsdsbsdsbsdsbsdtbtdtbtdtbtdtbtdtbtdtbtdtbtdtbtdtbtdtbtdtbtdtbtdtbtdtbudubudubudubudubudub\ \\\\\\ \\\ \\\\ \\\\\\ MAX_OL as usize + 1     7  7  7 Self{ secs: 0, frac: 0,}     pC             ; <    DQ    Ģ    Q   ;   : : : :   X  X          X 8Self{ secs: 23 * 3600 + 59 * 60 + 59, frac: 999999999,}ʒ ʒ ʒ ʒ    ʒ ʒ ʒ       ʒ ʒ ˒ ْ'    ͎ ͎  ͎ ͎ ˓) ٓ   ͎ ͎  ͎ ͎ ) ͔ ޔ    ͎ ͎ ʒ  &[Item::Numeric(Numeric::Hour, Pad::Zero), Item::Space(""), Item::Literal(":"), Item::Numeric(Numeric::Minute, Pad::Zero), Item::Space(""), Item::Literal(":"), Item::Numeric(Numeric::Second, Pad::Zero), Item::Fixed(Fixed::Nanosecond), Item::Space("")]8    ْ' ْ' ْ' ْ'   ͎   ͎   :͎    ʌ͎  ٓ  ٓ      ˓)  ˓)  ˓)  ˓)    ͎   ͎   :͎   ʌ͎ ͔ ͔ ޔ ޔ ) ) ) )        ͎   ͎ ˒    ʒ ʒ   ʒ ˒ ْ'    ͎ ͎  ͎ ͎ ˓) ٓ   ͎ ͎  ͎ ͎ ) ͔ ޔ    ͎ ͎ ʒ ( ( (-  (- ( (- 10000000(% ( °+)  (% ( °+)  (% (N  (N ( (% (N )  )  "11644473600 * HECTONANOSECS_IN_SEC* * "*;  *; * *; 9223372036      0      1      2      3      4      5      6           0           1           2           3           4           5           6           7           8            9            10            11,,ʃ"#ӠÍE,, ,,,,OOʃ VOOOOOOYYʌ͎YYYY͎YY[ [ Box  l444Global [ [ [ [ [ [ \\͎\\\\͎\\] ] ] ] ] ] ] ] __________________ffԤfffԤffaa:aaa:: : aaaaa:aaaaaa!!!!  궦!!!wwww  ܮwww  ɒٽËË Ƣ  ǬϞս  Ƣ Ƣ       1 1 1 1   򕿀1 1 1 ۻ! # Chrono: Date and Time for Rust$%- It aims to be a feature-complete superset of)0B the [time](https://github.com/rust-lang-deprecated/time) library.ZE In particular,' * Chrono strictly adheres to ISO 8601.*K * Chrono is timezone-aware by default, with separate timezone-naive types.NW * Chrono is space-optimal and (while not being the primary goal) reasonably efficient.ZT There were several previous attempts to bring a good date and time library to Rust,W1 which Chrono builds upon and should acknowledge:4 * [Initial research onX the wiki](https://github.com/rust-lang/rust-wiki-backup/blob/master/Lib-datetime.md)[D * Dietrich Epp's [datetime-rs](https://github.com/depp/datetime-rs)GQ * Luis de Bethencourt's [rust-datetime](https://github.com/luisbg/rust-datetime)T ### FeaturesL Chrono supports various runtime environments and operating systems, and hasO2 several features that may be enabled or disabled.5 Default features:S - `alloc`: Enable features that depend on allocation (primarily string formatting)VJ - `std`: Enables functionality that depends on the standard library. ThisMO is a superset of `alloc` and adds interoperation with standard library types R and traits. \ - `clock`: Enables reading the system time (`now`) that depends on the standard library for _H UNIX-like operating systems and the Windows API (`winapi`) for Windows. K  Optional features:  ? - [`serde`][]: Enable serialization/deserialization via serde. BL - `unstable-locales`: Enable localization. This adds various methods with a OH `_localized` suffix. The implementation and API may change or even be K0 removed in a patch release. Feedback welcome. 3 - [`serde`]: https://github.com/serde-rs/serde 09 [wasm-bindgen]: https://github.com/rustwasm/wasm-bindgen<< See the [cargo docs][] for examples of specifying features.?g [cargo docs]: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#choosing-featuresj ## Overview ### DurationK Chrono currently uses its own [`Duration`] type to represent the magnitudeNM of a time span. Since this has the same name as the newer, standard type forP? duration, the reference will refer this type as `OldDuration`.BD Note that this is an "accurate" duration represented as seconds andGH nanoseconds and does not represent "nominal" components such as days orK months. H When the `oldtime` feature is enabled, [`Duration`] is an alias for theKJ [`time::Duration`](https://docs.rs/time/0.1.40/time/struct.Duration.html)MG type from v0.1 of the time crate. time v0.1 is deprecated, so new codeJI should disable the `oldtime` feature and use the `chrono::Duration` typeLC instead. The `oldtime` feature is enabled by default for backwardsFF compatibility, but future versions of Chrono are likely to remove theI feature entirely.% Chrono does not yet natively support(Y the standard [`Duration`](https://doc.rust-lang.org/std/time/struct.Duration.html) type,\( but it will be supported in the future.+1 Meanwhile you can convert between two types with4^ [`Duration::from_std`](https://docs.rs/time/0.1.40/time/struct.Duration.html#method.from_std)a andZ [`Duration::to_std`](https://docs.rs/time/0.1.40/time/struct.Duration.html#method.to_std)] methods.  ### Date and Time Chrono provides a) [**`DateTime`**](./struct.DateTime.html),3 type to represent a date and a time in a timezone.6G For more abstract moment-in-time tracking such as internal timekeepingJ- that is unconcerned with timezones, consider0Q [`time::SystemTime`](https://doc.rust-lang.org/std/time/struct.SystemTime.html),T# which tracks your system clock, or&Q [`time::Instant`](https://doc.rust-lang.org/std/time/struct.Instant.html), whichTN is an opaque but monotonically-increasing representation of a moment in time.Q: `DateTime` is timezone-aware and must be constructed from=; the [**`TimeZone`**](./offset/trait.TimeZone.html) object,>M which defines how the local date is converted to and back from the UTC date. P7 There are three well-known `TimeZone` implementations: :![ * [**`Utc`**](./offset/struct.Utc.html) specifies the UTC time zone. It is most efficient.!^!R * [**`Local`**](./offset/struct.Local.html) specifies the system local time zone.!U"B * [**`FixedOffset`**](./offset/struct.FixedOffset.html) specifies"E@ an arbitrary, fixed time zone such as UTC+09:00 or UTC-10:30.#C< This often results from the parsed textual date and time.#?V Since it stores the most information and does not depend on the system environment,$Y@ you would want to normalize other `TimeZone`s into this type.$C%I `DateTime`s with different `TimeZone` types are distinct and do not mix,%L) but can be converted to each other using&,U the [`DateTime::with_timezone`](./struct.DateTime.html#method.with_timezone) method.&X'; You can get the current date and time in the UTC time zone'>6 ([`Utc::now()`](./offset/struct.Utc.html#method.now))'9 or in the local time zone(; ([`Local::now()`](./offset/struct.Local.html#method.now)).(>( ```rust(  use chrono::prelude::*;))T let utc: DateTime = Utc::now(); // e.g. `2014-11-28T12:45:59.324310806Z`)WY let local: DateTime = Local::now(); // e.g. `2014-11-28T21:45:59.324310806+09:00`)\ # let _ = utc; let _ = local;*! ```*+6 Alternatively, you can create your own date and time.+9M This is a bit verbose due to Rust's lack of function and method overloading,+PA but in turn we get a rich combination of initialization methods.,D,, ʜ,! use chrono::offset::LocalResult;-$-Y let dt = Utc.with_ymd_and_hms(2014, 7, 8, 9, 10, 11).unwrap(); // `2014-07-08T09:10:11Z`-\< // July 8 is 188th day of the year 2014 (`o` for "ordinal").?C assert_eq!(dt, Utc.yo(2014, 189).and_hms_opt(9, 10, 11).unwrap());.F6 // July 8 is Tuesday in ISO week 28 of the year 2014./9T assert_eq!(dt, Utc.isoywd(2014, 28, Weekday::Tue).and_hms_opt(9, 10, 11).unwrap());/W0 let dt = NaiveDate::from_ymd_opt(2014, 7, 8).unwrap().and_hms_milli_opt(9, 10, 11, 12).unwrap().and_local_timezone(Utc).unwrap(); // `2014-07-08T09:10:11.012Z`0 assert_eq!(dt, NaiveDate::from_ymd_opt(2014, 7, 8).unwrap().and_hms_micro_opt(9, 10, 11, 12_000).unwrap().and_local_timezone(Utc).unwrap());1 assert_eq!(dt, NaiveDate::from_ymd_opt(2014, 7, 8).unwrap().and_hms_nano_opt(9, 10, 11, 12_000_000).unwrap().and_local_timezone(Utc).unwrap());23 // dynamic verification3< assert_eq!(Utc.ymd_opt(2014, 7, 8).and_hms_opt(21, 15, 33),4?X LocalResult::Single(Utc.with_ymd_and_hms(2014, 7, 8, 21, 15, 33).unwrap()));4[P assert_eq!(Utc.ymd_opt(2014, 7, 8).and_hms_opt(80, 15, 33), LocalResult::None);5SQ assert_eq!(Utc.ymd_opt(2014, 7, 38).and_hms_opt(21, 15, 33), LocalResult::None);5T6F // other time zone objects can be used to construct a local datetime.6I^ // obviously, `local_dt` is normally different from `dt`, but `fixed_dt` should be identical.7a let local_dt = Local.from_local_datetime(&NaiveDate::from_ymd_opt(2014, 7, 8).unwrap().and_hms_milli_opt(9, 10, 11, 12).unwrap()).unwrap();8 let fixed_dt = FixedOffset::east_opt(9 * 3600).unwrap().from_local_datetime(&NaiveDate::from_ymd_opt(2014, 7, 8).unwrap().and_hms_milli_opt(18, 10, 11, 12).unwrap()).unwrap();9 assert_eq!(dt, fixed_dt);: # let _ = local_dt;::;X Various properties are available to the date and time, and can be altered individually.;[O Most of them are defined in the traits [`Datelike`](./trait.Datelike.html) and;RC [`Timelike`](./trait.Timelike.html) which you should `use` before. ʜ> use chrono::Duration;>>? // assume this returned `2014-11-28T21:45:59.324310806+09:00`:>B let dt = FixedOffset::east_opt(9*3600).unwrap().from_local_datetime(&NaiveDate::from_ymd_opt(2014, 11, 28).unwrap().and_hms_nano_opt(21, 45, 59, 324310806).unwrap()).unwrap();?@ // property accessors@? assert_eq!((dt.year(), dt.month(), dt.day()), (2014, 11, 28));@BI assert_eq!((dt.month0(), dt.day0()), (10, 27)); // for unfortunate soulsALA assert_eq!((dt.hour(), dt.minute(), dt.second()), (21, 45, 59));AD( assert_eq!(dt.weekday(), Weekday::Fri);B+G assert_eq!(dt.weekday().number_from_monday(), 5); // Mon=1, ..., Sun=7BJ2 assert_eq!(dt.ordinal(), 332); // the day of yearC5] assert_eq!(dt.num_days_from_ce(), 735565); // the number of days from and including Jan 1, 1C`D' // time zone accessor and manipulationD*; assert_eq!(dt.offset().fix().local_minus_utc(), 9 * 3600);D>E assert_eq!(dt.timezone(), FixedOffset::east_opt(9 * 3600).unwrap());EH assert_eq!(dt.with_timezone(&Utc), NaiveDate::from_ymd_opt(2014, 11, 28).unwrap().and_hms_nano_opt(12, 45, 59, 324310806).unwrap().and_local_timezone(Utc).unwrap());EG> // a sample of property manipulations (validates dynamically)GAX assert_eq!(dt.with_day(29).unwrap().weekday(), Weekday::Sat); // 2014-11-29 is SaturdayG[# assert_eq!(dt.with_day(32), None);H&] assert_eq!(dt.with_year(-300).unwrap().num_days_from_ce(), -109606); // November 29, 301 BCEH`I // arithmetic operationsIA let dt1 = Utc.with_ymd_and_hms(2014, 11, 14, 8, 9, 10).unwrap();IDA let dt2 = Utc.with_ymd_and_hms(2014, 11, 14, 10, 9, 8).unwrap();JDN assert_eq!(dt1.signed_duration_since(dt2), Duration::seconds(-2 * 3600 + 2));JQM assert_eq!(dt2.signed_duration_since(dt1), Duration::seconds(2 * 3600 - 2));KPb assert_eq!(Utc.with_ymd_and_hms(1970, 1, 1, 0, 0, 0).unwrap() + Duration::seconds(1_000_000_000),LeB Utc.with_ymd_and_hms(2001, 9, 9, 1, 46, 40).unwrap());LEb assert_eq!(Utc.with_ymd_and_hms(1970, 1, 1, 0, 0, 0).unwrap() - Duration::seconds(1_000_000_000),MeD Utc.with_ymd_and_hms(1938, 4, 24, 22, 13, 20).unwrap());NGNN ### Formatting and ParsingNOT Formatting is done via the [`format`](./struct.DateTime.html#method.format) method,OW> which format is equivalent to the familiar `strftime` format.OAPB See [`format::strftime`](./format/strftime/index.html#specifiers)PE6 documentation for full syntax and list of specifiers.Q9Q[ The default `to_string` method and `{:?}` specifier also give a reasonable representation.Q^R Chrono also provides [`to_rfc2822`](./struct.DateTime.html#method.to_rfc2822) andRUA [`to_rfc3339`](./struct.DateTime.html#method.to_rfc3339) methodsRD for well-known formats.SSL Chrono now also provides date formatting in almost any language without theSOI help of an additional C library. This functionality is under the featureTL `unstable-locales`:TU ```tomlU > chrono = { version = "0.4", features = ["unstable-locales"] }UAUUR The `unstable-locales` feature requires and implies at least the `alloc` feature.UUVV ʜVV' # #[cfg(feature = "unstable-locales")]V* # fn test() {W@ let dt = Utc.with_ymd_and_hms(2014, 11, 28, 12, 0, 9).unwrap();WCO assert_eq!(dt.format("%Y-%m-%d %H:%M:%S").to_string(), "2014-11-28 12:00:09");WRQ assert_eq!(dt.format("%a %b %e %T %Y").to_string(), "Fri Nov 28 12:00:09 2014");XTv assert_eq!(dt.format_localized("%A %e %B %Y, %T", Locale::fr_BE).to_string(), "vendredi 28 novembre 2014, 12:00:09");YyZR assert_eq!(dt.format("%a %b %e %T %Y").to_string(), dt.format("%c").to_string());ZU7 assert_eq!(dt.to_string(), "2014-11-28 12:00:09 UTC");Z:@ assert_eq!(dt.to_rfc2822(), "Fri, 28 Nov 2014 12:00:09 +0000");[C: assert_eq!(dt.to_rfc3339(), "2014-11-28T12:00:09+00:00");[=9 assert_eq!(format!("{:?}", dt), "2014-11-28T12:00:09Z");\<\E // Note that milli/nanoseconds are only printed if they are non-zero\H let dt_nano = NaiveDate::from_ymd_opt(2014, 11, 28).unwrap().and_hms_nano_opt(12, 0, 9, 1).unwrap().and_local_timezone(Utc).unwrap();]H assert_eq!(format!("{:?}", dt_nano), "2014-11-28T12:00:09.000000001Z");^K # }_, # #[cfg(not(feature = "unstable-locales"))]_/ # fn test() {}_* # if cfg!(feature = "unstable-locales") {_- # test();````( Parsing can be done with three methods:`+`X 1. The standard [`FromStr`](https://doc.rust-lang.org/std/str/trait.FromStr.html) trait`[X (and [`parse`](https://doc.rust-lang.org/std/primitive.str.html#method.parse) methoda[U on a string) can be used for parsing `DateTime`, `DateTime` andbX9 `DateTime` values. This parses what the `{:?}`b<M ([`std::fmt::Debug`](https://doc.rust-lang.org/std/fmt/trait.Debug.html))cPC format specifier prints, and requires the offset to be present.cFdU 2. [`DateTime::parse_from_str`](./struct.DateTime.html#method.parse_from_str) parsesdXE a date and time with offsets and returns `DateTime`.eH\ This should be used when the offset is a part of input and the caller cannot guess that.e_7 It *cannot* be used when the offset can be missing.f:V [`DateTime::parse_from_rfc2822`](./struct.DateTime.html#method.parse_from_rfc2822)gY andg V [`DateTime::parse_from_rfc3339`](./struct.DateTime.html#method.parse_from_rfc3339)gY+ are similar but for well-known formats.h.h[ 3. [`Offset::datetime_from_str`](./offset/trait.TimeZone.html#method.datetime_from_str) ish^3 similar but returns `DateTime` of given offset.i6T When the explicit offset is missing from the input, it simply uses given offset.jWK It issues an error when the input contains an explicit offset differentjN from the current offset.kk@ More detailed control over the parsing process is available viakC( [`format`](./format/index.html) module.l+ll ʜlllCJ let fixed_dt = dt.with_timezone(&FixedOffset::east_opt(9*3600).unwrap());mMn // method 1nM assert_eq!("2014-11-28T12:00:09Z".parse::>(), Ok(dt.clone()));nPR assert_eq!("2014-11-28T21:00:09+09:00".parse::>(), Ok(dt.clone()));nU` assert_eq!("2014-11-28T21:00:09+09:00".parse::>(), Ok(fixed_dt.clone()));ocp // method 2p[ assert_eq!(DateTime::parse_from_str("2014-11-28 21:00:09 +09:00", "%Y-%m-%d %H:%M:%S %z"),p^" Ok(fixed_dt.clone()));q%L assert_eq!(DateTime::parse_from_rfc2822("Fri, 28 Nov 2014 21:00:09 +0900"),qOr%] assert_eq!(DateTime::parse_from_rfc3339("2014-11-28T21:00:09+09:00"), Ok(fixed_dt.clone()));r`s // method 3s_ assert_eq!(Utc.datetime_from_str("2014-11-28 12:00:09", "%Y-%m-%d %H:%M:%S"), Ok(dt.clone()));sba assert_eq!(Utc.datetime_from_str("Fri Nov 28 12:00:09 2014", "%a %b %e %T %Y"), Ok(dt.clone()));tdt // oops, the year is missing!t!R assert!(Utc.datetime_from_str("Fri Nov 28 12:00:09", "%a %b %e %T %Y").is_err());uU= // oops, the format string does not include the year at all!u@O assert!(Utc.datetime_from_str("Fri Nov 28 12:00:09", "%a %b %e %T").is_err());vR# // oops, the weekday is incorrect!w&W assert!(Utc.datetime_from_str("Sat Nov 28 12:00:09 2014", "%a %b %e %T %Y").is_err());wZxxJ Again : See [`format::strftime`](./format/strftime/index.html#specifiers)xMx9y, ### Conversion from and to EPOCH timestampsy/y[ Use [`Utc.timestamp(seconds, nanoseconds)`](./offset/trait.TimeZone.html#method.timestamp)y^O to construct a [`DateTime`](./struct.DateTime.html) from a UNIX timestampzR; (seconds, nanoseconds that passed since January 1st 1970).{>{f Use [`DateTime.timestamp`](./struct.DateTime.html#method.timestamp) to get the timestamp (in seconds){iG from a [`DateTime`](./struct.DateTime.html). Additionally, you can use|JZ [`DateTime.timestamp_subsec_nanos`](./struct.DateTime.html#method.timestamp_subsec_nanos)|]7 to get the number of additional number of nanoseconds.}:~~ 7 // We need the trait in scope to use Utc::timestamp().~:' use chrono::{DateTime, TimeZone, Utc};~*$ // Construct a datetime from epoch:'* let dt = Utc.timestamp(1_500_000_000, 0);-@ assert_eq!(dt.to_rfc2822(), "Fri, 14 Jul 2017 02:40:00 +0000");C$ // Get epoch value from a datetime:'S let dt = DateTime::parse_from_rfc2822("Fri, 14 Jul 2017 02:40:00 +0000").unwrap();ՀV+ assert_eq!(dt.timestamp(), 1_500_000_000);.ہ ### Individual dateQ Chrono also provides an individual date type ([**`Date`**](./struct.Date.html)).TL It also has time zones attached, and have to be constructed via time zones.؂O[ Most operations available to `DateTime` are also available to `Date` whenever appropriate.^ ʜ$؄a # // these *may* fail, but only very rarely. just rerun the test if you were that unfortunate ;)܄d- assert_eq!(Utc::today(), Utc::now().date());01 assert_eq!(Local::today(), Local::now().date());4H assert_eq!(Utc.ymd_opt(2014, 11, 28).unwrap().weekday(), Weekday::Fri);K: assert_eq!(Utc.ymd_opt(2014, 11, 31), LocalResult::None);= assert_eq!(NaiveDate::from_ymd_opt(2014, 11, 28).unwrap().and_hms_milli_opt(7, 8, 9, 10).unwrap().and_local_timezone(Utc).unwrap().format("%H%M%S").to_string(), "070809");ڈY There is no timezone-aware `Time` due to the lack of usefulness and also the complexity.\݉C `DateTime` has [`date`](./struct.DateTime.html#method.date) methodF< which returns a `Date` which represents its date component.?E There is also a [`time`](./struct.DateTime.html#method.time) method,H9 which simply returns a naive local time described below.< ### Naive date and timeS Chrono provides naive counterparts to `Date`, (non-existent) `Time` and `DateTime`V5 as [**`NaiveDate`**](./naive/struct.NaiveDate.html),85 [**`NaiveTime`**](./naive/struct.NaiveTime.html) and8G [**`NaiveDateTime`**](./naive/struct.NaiveDateTime.html) respectively.ۍJF They have almost equivalent interfaces as their timezone-aware twins,IK but are not associated to time zones obviously and can be quite low-level.NC They are mostly useful for building blocks for higher-level types.ÏFV Timezone-aware `DateTime` and `Date` types have two methods returning naive versions:YC [`naive_local`](./struct.DateTime.html#method.naive_local) returnsF a view to the naive local time,#C and [`naive_utc`](./struct.DateTime.html#method.naive_utc) returnsӑF a view to the naive UTC time.! ## LimitationsӒW Only proleptic Gregorian calendar (i.e. extended to support older dates) is supported.גZ` Be very careful if you really have to deal with pre-20C dates, they can be in Julian or others.cI Date types are limited in about +/- 262,000 years from the common epoch.L3 Time types are limited in the nanosecond accuracy.66 [Leap seconds are supported in the representation but9] Chrono doesn't try to make use of them](./naive/struct.NaiveTime.html#leap-second-handling).ܕ`C (The main reason is that leap seconds are not really predictable.)FJ Almost *every* operation over the possible leap seconds will ignore them.MW Consider using `NaiveDateTime` with the implicit TAI (International Atomic Time) scaleҗZ if you want.Z Chrono inherently does not support an inaccurate or partial date and time representation.˜]F Any operation that can be ambiguous will return `None` in such cases.I? For example, "a month later" of 2014-01-30 is not well-definedBS and consequently `Utc.ymd_opt(2014, 1, 30).unwrap().with_month(2)` returns `None`.V, Non ISO week handling is not yet supported./J For now you can use the [chrono_ext](https://crates.io/crates/chrono_ext)M= crate ([sources](https://github.com/bcourtine/chrono-ext/)).@ǜ2 Advanced time zone handling is not yet supported.˜5] For now you can try the [Chrono-tz](https://github.com/chronotope/chrono-tz/) crate instead.`  https://docs.rs/chrono/latest/ 9   Ƣѣ$ۣۣO A convenience module appropriate for glob imports (`use chrono::prelude::*;`).̥R Ħ    clockҧҧէߧ ֧ Ч!    ҩҩ%թߩ ֩ Щҩҩ%թߩ ֩ Щ ҩҩ%թߩ ֩ Щ +,  ,  Ī,  Ī˪,  ˪ժ,  ժ7   7   7  ,>  ƫ >  ƫ ѫ >  ѫ  >   G  G  G  P      5+    3j      5 j      5 j      5 j      5 -      The minimum possible `Date`.     0.4.20 Use Date::MIN_UTC insteadC¼   The maximum possible `Date`.     ¼  Use Date::MAX_UTC insteadC¼ ܾ ;;    {  ֹۆ` @5 Makes a new `Date` with given *UTC* date and offset.8? The local date should be constructed via the `TimeZone` trait.B:: < ?D Makes a new `DateTime` from the current date and given `NaiveTime`.G- The offset in the current date is preserved.0 Panics on invalid datetime.:: = DG Makes a new `DateTime` from the current date, hour, minute and second.J 0. Panics on invalid hour, minute and/or second.1    0.4.23 Use and_hms_opt() insteadC  :: > "P J 0!6 Returns `None` on invalid hour, minute and/or second.!9" :": ? #?@@@@?@   ԙۭ  }      &VT Makes a new `DateTime` from the current date, hour, minute, second and millisecond.#WM The millisecond part can exceed 1,000 in order to represent the leap second.$P $0%; Panics on invalid hour, minute, second and/or millisecond.%>% % %&  %% %& &&Use and_hms_milli_opt() instead&!%I&   :&: A * 'W (P )0)C Returns `None` on invalid hour, minute, second and/or millisecond.)F*:*: B ,B C C CCBC   /VT Makes a new `DateTime` from the current date, hour, minute, second and microsecond.,WQ The microsecond part can exceed 1,000,000 in order to represent the leap second.-T -0.; Panics on invalid hour, minute, second and/or microsecond..>. . ./  ./ // //Use and_hms_micro_opt() instead/!.I/   :/: D 3 0W 1T 202C Returns `None` on invalid hour, minute, second and/or microsecond.2F3:3: E 5E F F FFEF   8TS Makes a new `DateTime` from the current date, hour, minute, second and nanosecond.5VT The nanosecond part can exceed 1,000,000,000 in order to represent the leap second.6W 707: Panics on invalid hour, minute, second and/or nanosecond.7=8 8 88  88 88 88Use and_hms_nano_opt() instead8 8H8   :8: G < :V :W ;0;B Returns `None` on invalid hour, minute, second and/or nanosecond.;E<:<: H >H I I IIHI   @& Makes a new `Date` for the next date.>)?3 Panics when `self` is the last representable date.?6? ? ?@  ?? ?? ??Use succ_opt() instead??@@  :@: J A* @)A; Returns `None` when `self` is the last representable date.A>A:B: K BK L L LLKL    D' Makes a new `Date` for the prior date.C*C4 Panics when `self` is the first representable date.C7C C DD  DD DD DDUse pred_opt() insteadDC@D  :D: M F* E*E< Returns `None` when `self` is the first representable date.E?F:F: N FN O O OONO   G#) Retrieves an associated offset from UTC.G,G:H: P H# Retrieves an associated time zone.H&H:I: Q JA" Changes the associated time zone.I%T This does not change the actual `Date` (but will change the string representation).IWJ : SSK: J  J R  JJLE+ Adds given `Duration` to the current date.K.L0 Returns `None` when it will result in overflow.L3L:: T OE2 Subtracts given `Duration` from the current date.N5N N3O:: U RP0 Subtracts another `Date` from the current date.P3* Returns a `Duration` of integral numbers.Q-Q, This does not overflow or underflow at all,Q/8 as all possible output fits in the range of `Duration`.Q;R: WW: R R V  RRT$& Returns a view to the naive UTC date.S)T :T: X V&( Returns a view to the naive local date.T+UA This is technically the same as [`naive_utc`](#method.naive_utc)UD: because the offset is restricted to never exceed one day,U=" but provided for the consistency.V%V :V: Y W4F Returns the number of whole years from the given `base` until `self`.WIW :W: Z X޻ X Y::Yʽ Y Y::Z}[ ^ _^_[ [ [ [  [%   ԙۭ[ ]  [[[[\] ` ` ``]`     ԙۭ  \bb \ \C ] \\^6 Formats the date with the specified formatting items.]9]]]^ ]]^ ]]]] ]] ^^  ^]5^a d e fdef_a _ _7 _ _ 7 _ ʌ       с(d _ c d   ______cJ3 Formats the date with the specified format string.`6+ See the [`crate::format::strftime`] modulea.# on the supported escape sequences.a&bbbb bbb bbbb bb bb  bb5caca g ccm(jj m m mmmmimi k nnini l nnini m ooioi n ppipi o ppipi p qqiqi q rriri r rriri s s2s isi t tt u u uutu    t4t iti v uv w w wwvw   u6u iui x vx y y yyxy  ˈ v0vivi z wz { { {{z{  ˈ w2w iwi | x| } } }}|}  ˈ x8x ixi ~ y~   ~  ˈ y:y izi  z     ˈ {$ { { | {{|+ | | | |||C  | | | | ||||}'}}   }" ~ ~ ~~~* ~ ~ ~~~;~ ~  #   +  ʀ* π Ӏ ππ.D    Ӂ0 ؁ ܁ ؁؁  *  6   *   0   ͅ ҅ *  6   Ň*ȇ Ӈ  و- ވ  ވވ y/nanos/ā4*  *   ʊ4͊ъ  ɋ, ΋ ҋ  ΋΋4  Ӭ ڬڬ       5+      #     "      "       "       5 F      B        3     $    %& The minimum possible `DateTime`.)    ¼  Use DateTime::MIN_UTC insteadG ¼  %& The maximum possible `DateTime`.)    ¼  Use DateTime::MAX_UTC insteadG ¼     L= Makes a new `DateTime` with given *UTC* datetime and offset.@C The local datetime should be constructed via the `TimeZone` trait.F # Example 6 use chrono::{DateTime, TimeZone, NaiveDateTime, Utc};9O let dt = DateTime::::from_utc(NaiveDateTime::from_timestamp(61, 0), Utc);R& assert_eq!(Utc.timestamp(61, 0), dt);)  )NE Makes a new `DateTime` with given **local** datetime and offset thatH presents local timezone.      use chrono::DateTime;  use chrono::naive::NaiveDate; !( use chrono::offset::{Utc, FixedOffset};!+!e let naivedatetime_utc = NaiveDate::from_ymd_opt(2000, 1, 12).unwrap().and_hms_opt(2, 0, 0).unwrap();!hF let datetime_utc = DateTime::::from_utc(naivedatetime_utc, Utc);"I#A let timezone_east = FixedOffset::east_opt(8 * 60 * 60).unwrap();#Dg let naivedatetime_east = NaiveDate::from_ymd_opt(2000, 1, 12).unwrap().and_hms_opt(10, 0, 0).unwrap();#j\ let datetime_east = DateTime::::from_local(naivedatetime_east, timezone_east);$_%A let timezone_west = FixedOffset::west_opt(7 * 60 * 60).unwrap();%Dg let naivedatetime_west = NaiveDate::from_ymd_opt(2000, 1, 11).unwrap().and_hms_opt(19, 0, 0).unwrap();&j\ let datetime_west = DateTime::::from_local(naivedatetime_west, timezone_west);&_G assert_eq!(datetime_east, datetime_utc.with_timezone(&timezone_east));'JG assert_eq!(datetime_west, datetime_utc.with_timezone(&timezone_west));(J()   - Retrieves a date component**F Unless you are immediately planning on turning this into a `DateTime`+I* with the same Timezone you should use the+-- [`date_naive`](DateTime::date_naive) method.,0, , ,-  ,, ,, ,,Use `date_naive()` instead,,D-  -  2%2 Retrieves the Date without an associated timezone.5.R [`NaiveDate`] is a more well-defined type, and has more traits implemented on it,.UP so should be preferred to [`Date`] any time you truly want to operate on Dates./S00ʜ00N let date: DateTime = Utc.with_ymd_and_hms(2020, 1, 1, 0, 0, 0).unwrap();0Qv let other: DateTime = FixedOffset::east_opt(23).unwrap().with_ymd_and_hms(2020, 1, 1, 0, 0, 0).unwrap();1y3 assert_eq!(date.date_naive(), other.date_naive());2622 3  5 Retrieves a time component.48 Unlike `date`, this is not associated to the time zone.4;55  6I Returns the number of non-leap seconds since January 1, 1970 0:00:00 UTC5L (aka "UNIX timestamp").66 7  >%F Returns the number of non-leap-milliseconds since January 1, 1970 UTC7I8G Note that this does reduce the number of years that can be represented8JF from ~584 Billion to ~584 Million. (If this is a problem, please file8IE an issue to let me know what domain needs millisecond precision over9H! billions of years, I'm curious.):$: : ::( use chrono::{Utc, TimeZone, NaiveDate};:+; let dt = NaiveDate::from_ymd_opt(1970, 1, 1).unwrap().and_hms_milli_opt(0, 0, 1, 444).unwrap().and_local_timezone(Utc).unwrap();;* assert_eq!(dt.timestamp_millis(), 1_444);<-< let dt = NaiveDate::from_ymd_opt(2001, 9, 9).unwrap().and_hms_milli_opt(1, 46, 40, 555).unwrap().and_local_timezone(Utc).unwrap();<6 assert_eq!(dt.timestamp_millis(), 1_000_000_000_555);=9>>>  F%F Returns the number of non-leap-microseconds since January 1, 1970 UTC?I? ?JG from ~584 Billion to ~584 Thousand. (If this is a problem, please file@JE an issue to let me know what domain needs microsecond precision overAH millennia, I'm curious.)AA A BB B+B let dt = NaiveDate::from_ymd_opt(1970, 1, 1).unwrap().and_hms_micro_opt(0, 0, 1, 444).unwrap().and_local_timezone(Utc).unwrap();B. assert_eq!(dt.timestamp_micros(), 1_000_444);C1D let dt = NaiveDate::from_ymd_opt(2001, 9, 9).unwrap().and_hms_micro_opt(1, 46, 40, 555).unwrap().and_local_timezone(Utc).unwrap();D: assert_eq!(dt.timestamp_micros(), 1_000_000_000_000_555);E=EFF  M$E Returns the number of non-leap-nanoseconds since January 1, 1970 UTCFHG GJ> from ~584 Billion to ~584. (If this is a problem, please fileHAD an issue to let me know what domain needs nanosecond precision overHG II I II I+J let dt = NaiveDate::from_ymd_opt(1970, 1, 1).unwrap().and_hms_nano_opt(0, 0, 1, 444).unwrap().and_local_timezone(Utc).unwrap();J1 assert_eq!(dt.timestamp_nanos(), 1_000_000_444);K4K let dt = NaiveDate::from_ymd_opt(2001, 9, 9).unwrap().and_hms_nano_opt(1, 46, 40, 555).unwrap().and_local_timezone(Utc).unwrap();K= assert_eq!(dt.timestamp_nanos(), 1_000_000_000_000_000_555);L@MMM  P,B Returns the number of milliseconds since the last second boundaryNEN8 warning: in event of a leap second, this may exceed 999O;OO note: this is not the number of milliseconds since January 1, 1970 0:00:00 UTCORPP  S,B Returns the number of microseconds since the last second boundaryQEQ< warning: in event of a leap second, this may exceed 999_999Q?RO note: this is not the number of microseconds since January 1, 1970 0:00:00 UTCRRSS  V+A Returns the number of nanoseconds since the last second boundaryTDT@ warning: in event of a leap second, this may exceed 999_999_999TCUN note: this is not the number of nanoseconds since January 1, 1970 0:00:00 UTCUQVV  W# V,WW  X W&XX  ZE Y%l The returned `DateTime` references the same instant of time from the perspective of the provided time zone.YoZ  Z Z Z   ZZ\I4 Adds given `Duration` to the current date and time.[7[ [3\  `D2 Adds given `Months` to the current date and time.^5^: Returns `None` when it will result in overflow, or if the^=6 local time is not valid on the newly calculated date._9_C See [`NaiveDate::checked_add_months`] for more details on behavior_F`  cI; Subtracts given `Duration` from the current date and time.b>b b3c  gD9 Subtracts given `Months` from the current date and time.e<e e= f9fC See [`NaiveDate::checked_sub_months`] for more details on behaviorfFg  j9> Add a duration in [`Days`] to the date part of the `DateTime`iAi< Returns `None` if the resulting date would be out of range.i?j  m9E Subtract a duration in [`Days`] from the date part of the `DateTime`lHl l?m  pT= Subtracts another `DateTime` from the current date and time.n@, This does not overflow or underflow at all.o/p  p p   ppq(* Returns a view to the naive UTC datetime.q-q q  r*, Returns a view to the naive local datetime.r/r s  t4? Retrieve the elapsed years from now to the given [`DateTime`].sBt t  w ߫ w)xy ӭ x)yyzz { zzzz zz zz  }   ס1{{ |&  }  b a|| ~2L Convert a `DateTime` instance into a `DateTime` instance.}O #O Convert this `DateTime` instance into a `DateTime` instance.~R^ Conversion is done via [`DateTime::with_timezone`]. Note that the converted value returned bya8 this will be created with a fixed timezone offset of 0.; ,F Convert a `DateTime` instance into a `DateTime` instance.ԁI   #I Convert this `DateTime` instance into a `DateTime` instance.Le Conversion is performed via [`DateTime::with_timezone`], accounting for the difference in timezones.h 2L Convert a `DateTime` instance into a `DateTime` instance.O+O Convert this `DateTime` instance into a `DateTime` instance.RU Conversion is performed via [`DateTime::with_timezone`], accounting for the timezoneX difference. 4N Convert a `DateTime` instance into a `DateTime` instance.Q̉ É ʼn +Q Convert this `DateTime` instance into a `DateTime` instance.T_ Conversion is performed via [`DateTime::with_timezone`]. Returns the equivalent value in localb time.  ,F Convert a `DateTime` instance into a `DateTime` instance.Iˍ  č%I Convert this `DateTime` instance into a `DateTime` instance.LZ Conversion is performed via [`DateTime::with_timezone`], accounting for the difference in] timezones. 4N Convert a `DateTime` instance into a `DateTime` instance.ѐQ   %Q Convert this `DateTime` instance into a `DateTime` instance.T` Conversion is performed via [`DateTime::with_timezone`]. Note that the converted value returnedc; by this will be created with a fixed timezone offset of 0.>       Җ-   ԙۭ               HR Parses an RFC 2822 date and time string such as `Tue, 1 Jul 2003 10:52:37 +0200`,U? then returns a new [`DateTime`] with a parsed [`FixedOffset`].B= RFC 2822 is the internet message standard that specifies the@3 representation of times in HTTP and email headers.6< # use chrono::{DateTime, FixedOffset, TimeZone, NaiveDate};ǚ? assert_eq!(L DateTime::parse_from_rfc2822("Wed, 18 Feb 2015 23:16:09 GMT").unwrap(),OX FixedOffset::east_opt(0).unwrap().with_ymd_and_hms(2015, 2, 18, 23, 16, 9).unwrap()[ );Ӝޜ Ý  ʌ       с(HZ Parses an RFC 3339 and ISO 8601 date and time string such as `1996-12-19T16:39:57-08:00`,]ϖ ݟBW Why isn't this named `parse_from_iso8601`? That's because ISO 8601 allows some freedomZV over the syntax and RFC 3339 exercises that freedom to rigidly define a fixed format.Y ¢Ҝ ֫OC Parses a string with the specified format string and returns a newF, [`DateTime`] with a parsed [`FixedOffset`].Ť/C See the [`crate::format::strftime`] module on the supported escapeF sequences.̥ߥ= See also [`TimeZone::datetime_from_str`] which gives a local@$ [`DateTime`] on specific time zone.'ئ? Note that this method *requires a timezone* in the string. SeeB" [`NaiveDateTime::parse_from_str`]%H for a version that does not require a timezone in the to-be-parsed str.ѧK  è : use chrono::{DateTime, FixedOffset, TimeZone, NaiveDate};Ө=# let dt = DateTime::parse_from_str(&C "1983 Apr 13 12:09:14.274 +0000", "%Y %b %d %H:%M:%S%.3f %z");ȩF assert_eq!(dt, Ok(FixedOffset::east_opt(0).unwrap().from_local_datetime(&NaiveDate::from_ymd_opt(1983, 4, 13).unwrap().and_hms_milli_opt(12, 9, 14, 274).unwrap()).unwrap()));ʫݫ      ٯ"S Returns an RFC 2822 date and time string such as `Tue, 1 Jul 2003 10:52:37 +0200`.V֮֮ٮ ڮݮ ޮ    Ԯ5   ڳ"[ Returns an RFC 3339 and ISO 8601 date and time string such as `1996-12-19T16:39:57-08:00`.^ײײڲ ۲޲ ߲    ղ5   LE Return an RFC 3339 and ISO 8601 date and time string with subsecondsH$ formatted as per a `SecondsFormat`.'G If passed `use_z` true and the timezone is UTC (offset 0), use 'Z', asJA per [`Fixed::TimezoneOffsetColonZ`] If passed `use_z` false, use÷D [`Fixed::TimezoneOffsetColon`]" # Examplesθָ P # use chrono::{DateTime, FixedOffset, SecondsFormat, TimeZone, Utc, NaiveDate};S let dt = NaiveDate::from_ymd_opt(2018, 1, 26).unwrap().and_hms_micro_opt(18, 30, 9, 453_829).unwrap().and_local_timezone(Utc).unwrap();= assert_eq!(dt.to_rfc3339_opts(SecondsFormat::Millis, false),κ@- "2018-01-26T18:30:09.453+00:00");0< assert_eq!(dt.to_rfc3339_opts(SecondsFormat::Millis, true),Ȼ?( "2018-01-26T18:30:09.453Z");+: assert_eq!(dt.to_rfc3339_opts(SecondsFormat::Secs, true),=$ "2018-01-26T18:30:09Z");'7 let pst = FixedOffset::east_opt(8 * 60 * 60).unwrap();: let dt = pst.from_local_datetime(&NaiveDate::from_ymd_opt(2018, 1, 26).unwrap().and_hms_micro_opt(10, 30, 9, 453_829).unwrap()).unwrap();Զ =) "2018-01-26T10:30:09+08:00");ſ,      5  Ҝ H Formats the combined date and time with the specified formatting items.K      5         ʌ       с(      JE Formats the combined date and time with the specified format string.H . &   ʜX let date_time: DateTime = Utc.with_ymd_and_hms(2017, 04, 02, 12, 50, 32).unwrap();[C let formatted = format!("{}", date_time.format("%d/%m/%Y %H:%M"));F+ assert_eq!(formatted, "02/04/2017 12:50");.      5  ,                     6          Δ  8         ˈ :         ˈ 4        ˈ 6         ˈ <         ˈ >         ˈ ,            6         ˈ 7         ˈ 7         ˈ <        ˈ (  ݎ  /    K      +   &   L      @D Compare two DateTimes based on their true time, ignoring time zonesG  ʜ| let earlier = Utc.with_ymd_and_hms(2015, 5, 15, 2, 0, 0).unwrap().with_timezone(&FixedOffset::west_opt(1 * 3600).unwrap());| let later = Utc.with_ymd_and_hms(2015, 5, 15, 3, 0, 0).unwrap().with_timezone(&FixedOffset::west_opt(5 * 3600).unwrap());? assert_eq!(earlier.to_string(), "2015-05-15 01:00:00 -01:00");B= assert_eq!(later.to_string(), "2015-05-14 22:00:00 -05:00");@ assert!(later > earlier);    '   /  .   .ʂ ϕ     4   ȃ ̓ .  :   Ѕ*Ӆ ޅ  ·/ Ӈ ׇ ӇӇ  )  4   É ȉ .  :   ˋ*΋ ً  ȍ/ ͍ э ͍͍  )  5    Ï .  ΐ- Ӑ א ӐӐ  (  -     ْ(ܒ  .  Ó 4  0     ɕ4̕Е  ## Accepts a relaxed form of RFC3339.&H A space or a 'T' are acepted as the separator between the date and timeK= parts. Additional spaces are allowed between each component.ח@& All of these examples are equivalent:)Ƙ # use chrono::{DateTime, Utc};Θ"1 "2012-12-12T12:12:12Z".parse::>();41 "2012-12-12 12:12:12Z".parse::>();45 "2012- 12-12T12: 12:12Z".parse::>();ۙ8ƚ˚2 ƛ     % & K ߜ@ )Ν! # use chrono::{DateTime, Local};֝$3 "2012-12-12T12:12:12Z".parse::>();63 "2012-12-12 12:12:12Z".parse::>();67 "2012- 12-12T12: 12:12Z".parse::>();:'ß   4 Π      'ϡϡ(ҡ ӡ֡ סߡ   ͡"͢'Т ))   ) ߩ4)     "  FFF SystemTimeF 1 ϼ뮖'  Ъ۪?î î Ү Ү   6 Formatting (and parsing) utilities for date and time.L9A This module provides the common types and routines to implement,DL for example, [`DateTime::format`](../struct.DateTime.html#method.format) orOU [`DateTime::parse_from_str`](../struct.DateTime.html#method.parse_from_str) methods.X; For most cases you should use these high-level interfaces.>U Internally the formatting and parsing shares the same abstract **formatting items**,XZ which are just an [`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) of]% the [`Item`](./enum.Item.html) type.(: They are generated from more readable **format strings**;=? currently Chrono supports a built-in syntax closely resemblingBY C's `strftime` format. The available options can be found [here](./strftime/index.html).\    # use std::error::Error;ʜG let date_time = Utc.with_ymd_and_hms(2020, 11, 10, 0, 1, 32).unwrap();JF let formatted = format!("{}", date_time.format("%Y-%m-%d %H:%M:%S"));I. assert_eq!(formatted, "2020-11-10 00:01:32");1 F let parsed = Utc.datetime_from_str(&formatted, "%Y-%m-%d %H:%M:%S")?; I assert_eq!(parsed, date_time); "# # Ok::<(), chrono::ParseError>(()) &    *                   5          *              "  $  *                   5   *                   5    *                   5 $*      5 *      5 *      5*      5*      5*      5;  ,G An opaque type representing numeric item types for internal uses only.,J,- - ق---- .".... //#/4// ``aaaabbccccdd ff$ The category of parse errorffg r! Same as `Result`.q$r r ~ rrr r4rr yxx+xx xxx xx xx  xx"yy y zz {{ {{ |||| }}}} ~~~,~~ ~~~ ~~~~ ~~ ~~  ~~5~%%%&&&Јۣ%   $  ' &    ԀԀ,׀ ؀ۀ ܀    Ҁ5 ' ύ Formats single formatting item"ԌԌ-׌ ،ی ܌    Ҍ5֍  .      5 ͐ ͐͐Ē#Ғ Ғ ݒ ݒ      7 7ږ    7 7                     ̛                 Ž       Ȟ            ܠ                     ԣ           ~    666 '̦                       Һ                                                                                   :      5 z;      5  z<      5  <      5 F impl Write  B   = Tries to format given arguments with given formatting items.@$ Internally used by `DelayedFormat`.'?      5     7   7  ʌ       с(       :        3      ;     !R!"̭ ""  ""$ ב  ڒX  #˔ç$+ Returns the initial value of parsed parts.$.$ %9E Tries to set the [`year`](#structfield.year) field from given value.%H%% 'AU Tries to set the [`year_div_100`](#structfield.year_div_100) field from given value.'X'( *AU Tries to set the [`year_mod_100`](#structfield.year_mod_100) field from given value.)X** -<K Tries to set the [`isoyear`](#structfield.isoyear) field from given value.,N- - /D[ Tries to set the [`isoyear_div_100`](#structfield.isoyear_div_100) field from given value..^// 2D[ Tries to set the [`isoyear_mod_100`](#structfield.isoyear_mod_100) field from given value.1^22 4:G Tries to set the [`month`](#structfield.month) field from given value.3J4 4 6BW Tries to set the [`week_from_sun`](#structfield.week_from_sun) field from given value.5Z66 8BW Tries to set the [`week_from_mon`](#structfield.week_from_mon) field from given value.8Z89 :<K Tries to set the [`isoweek`](#structfield.isoweek) field from given value.:N; ; <@K Tries to set the [`weekday`](#structfield.weekday) field from given value.<K Tries to set the [`ordinal`](#structfield.ordinal) field from given value.=N> > @8C Tries to set the [`day`](#structfield.day) field from given value.?F@@ B:S Tries to set the [`hour_div_12`](#structfield.hour_div_12) field from given value.AV (`false` for AM, `true` for PM)B#BC E;F Tries to set the [`hour_mod_12`](#structfield.hour_mod_12) field fromCI% given hour number in 12-hour clocks.D(E E H9@ Tries to set both [`hour_div_12`](#structfield.hour_div_12) andFCC [`hour_mod_12`](#structfield.hour_mod_12) fields from given value.GFHH J;I Tries to set the [`minute`](#structfield.minute) field from given value.JLJ K L;I Tries to set the [`second`](#structfield.second) field from given value.LLL L N?Q Tries to set the [`nanosecond`](#structfield.nanosecond) field from given value.NTNN P>O Tries to set the [`timestamp`](#structfield.timestamp) field from given value.PRP Q R;I Tries to set the [`offset`](#structfield.offset) field from given value.QLR R W51 Returns a parsed naive date out of given fields.S4TG This method is able to determine the date from given subset of fields:TJT - Year, month, day.U# - Year, day of the year (ordinal).U&D - Year, week number counted from Sunday or Monday, day of the week.UG - ISO week date.VV[ Gregorian year and ISO week date year can have their century number (`*_div_100`) omitted,V^= the two-digit year is used to guess the century number then.W@W W XX  d     ԙۭ j        p   ڑ  w   ڑ  z    {    Ҡ51 Returns a parsed naive time out of given fields.Ɲ4G This method is able to determine the time from given subset of fields:J֞8 - Hour, minute. (second and nanosecond assumed to be 0)ޞ;5 - Hour, minute, second. (nanosecond assumed to be 0)8$ - Hour, minute, second, nanosecond.۟'; It is able to handle leap seconds when given second is 60.>٠  ֮V: Returns a parsed naive date and time out of given fields,=V except for the [`offset`](#structfield.offset) field (assumed to have a given value).YJ This is required for parsing a local time or other known-timezone inputs.M< This method is able to determine the combined date and time?S from date and time fields or a single [`timestamp`](#structfield.timestamp) field.V= Either way those fields have to be consistent to each other.@ݮ /ֶ ֶ   9= Returns a parsed fixed time zone offset out of given fields.@ ?C Returns a parsed timezone-aware date and time out of given fields.F ?S from date and time fields or a single [`timestamp`](#structfield.timestamp) field,V plus a time zone offset. @  [C Returns a parsed timezone-aware date and time out of given fields,FM with an additional `TimeZone` used to interpret and validate the local date.P ?ƞ V  @H If parsed fields include an UTC offset, it also has to be consistent toK! [`offset`](#structfield.offset).$         7 7      K  0    K        '  S% Q#  W       ,W, , ,,-- FG Tries to parse given string into `parsed` with given formatting items.?J] Returns `Ok` when the entire string has been parsed (otherwise `parsed` should not be used).@`2 There should be no trailing string after parsing;A5Q use a stray [`Item::Space`](./enum.Item.html#variant.Space) to trim whitespaces.ATB) This particular date and time parser is:B,B7 - Greedy. It will consume the longest possible prefix.B:Z For example, `April` is always consumed entirely when the long month name is requested;C]H it equally accepts `Apr`, but prefers the longer prefix in this case.CKD( - Padding-agnostic (for numeric items).D+< The [`Pad`](./enum.Pad.html) field is completely ignored,D?X so one can prepend any number of whitespace then any number of zeroes before numbers.E[F[ - (Still) obeying the intrinsic parsing width. This allows, for example, parsing `HHMMSS`.F^G   G G G G G ʌ       с( G    GGGGGGH      ͎H       ͎HH   H H H I I ʌ       с( J    HHHHHHHHJJ TT T 7 7  ~ g        ͎h i       k       m       o       s       v       y       |                            ݊       + & ͎K @ڏ ޏ)/ # use chrono::{DateTime, offset::FixedOffset};29 "2012-12-12T12:12:12Z".parse::>();Ð<9 "2012-12-12 12:12:12Z".parse::>();<= "2012- 12-12T12: 12:12Z".parse::>();@ Ԓ:ג " Ҝ " Ҝ 6      )      Q      ԙۭ =       R >   D   &F&& '&'  '+L,, -'- -0800 2122 4:55 5     88 8 87  78 7   ~  8  8899 9 97  7: 7   ~  :  99;+;; FF F F7  7G 7   ~  G  FFLL M L7  7M 7   ~  M  LLPOPP Q     S      ~ ͎  X      ~  ZDZZ [     \>\ \ ] aa aaaaaa aa aaaa aa aaY `strftime`/`strptime`-inspired date and time formatting syntax. ## Specifiers The following specifiers are available both to formatting and parsing. | Spec. | Example | Description | |-------|----------|----------------------------------------------------------------------------| | | | **DATE SPECIFIERS:** | | `%Y` | `2001` | The full proleptic Gregorian year, zero-padded to 4 digits. chrono supports years from -262144 to 262143. | | `%C` | `20` | The proleptic Gregorian year divided by 100, zero-padded to 2 digits. [^1] | | `%y` | `01` | The proleptic Gregorian year modulo 100, zero-padded to 2 digits. [^1] | | | | | | `%m` | `07` | Month number (01--12), zero-padded to 2 digits. | | `%b` | `Jul` | Abbreviated month name. Always 3 letters. | | `%B` | `July` | Full month name. Also accepts corresponding abbreviation in parsing. | | `%h` | `Jul` | Same as `%b`. | | | | | | `%d` | `08` | Day number (01--31), zero-padded to 2 digits. | | `%e` | ` 8` | Same as `%d` but space-padded. Same as `%_d`. | | | | | | `%a` | `Sun` | Abbreviated weekday name. Always 3 letters. | | `%A` | `Sunday` | Full weekday name. Also accepts corresponding abbreviation in parsing. | | `%w` | `0` | Sunday = 0, Monday = 1, ..., Saturday = 6. | | `%u` | `7` | Monday = 1, Tuesday = 2, ..., Sunday = 7. (ISO 8601) | | | | | | `%U` | `28` | Week number starting with Sunday (00--53), zero-padded to 2 digits. [^2] | | `%W` | `27` | Same as `%U`, but week 1 starts with the first Monday in that year instead.| | | | | | `%G` | `2001` | Same as `%Y` but uses the year number in ISO 8601 week date. [^3] | | `%g` | `01` | Same as `%y` but uses the year number in ISO 8601 week date. [^3] | | `%V` | `27` | Same as `%U` but uses the week number in ISO 8601 week date (01--53). [^3] | | | | | | `%j` | `189` | Day of the year (001--366), zero-padded to 3 digits. | | | | | | `%D` | `07/08/01` | Month-day-year format. Same as `%m/%d/%y`. | | `%x` | `07/08/01` | Locale's date representation (e.g., 12/31/99). | | `%F` | `2001-07-08` | Year-month-day format (ISO 8601). Same as `%Y-%m-%d`. | | `%v` | ` 8-Jul-2001` | Day-month-year format. Same as `%e-%b-%Y`. | | | | | | | | **TIME SPECIFIERS:** | | `%H` | `00` | Hour number (00--23), zero-padded to 2 digits. | | `%k` | ` 0` | Same as `%H` but space-padded. Same as `%_H`. | | `%I` | `12` | Hour number in 12-hour clocks (01--12), zero-padded to 2 digits. | | `%l` | `12` | Same as `%I` but space-padded. Same as `%_I`. | | | | | | `%P` | `am` | `am` or `pm` in 12-hour clocks. | | `%p` | `AM` | `AM` or `PM` in 12-hour clocks. | | | | | | `%M` | `34` | Minute number (00--59), zero-padded to 2 digits. | | `%S` | `60` | Second number (00--60), zero-padded to 2 digits. [^4] | | `%f` | `026490000` | The fractional seconds (in nanoseconds) since last whole second. [^7] | | `%.f` | `.026490`| Similar to `.%f` but left-aligned. These all consume the leading dot. [^7] | | `%.3f`| `.026` | Similar to `.%f` but left-aligned but fixed to a length of 3. [^7] | | `%.6f`| `.026490` | Similar to `.%f` but left-aligned but fixed to a length of 6. [^7] | | `%.9f`| `.026490000` | Similar to `.%f` but left-aligned but fixed to a length of 9. [^7] | | `%3f` | `026` | Similar to `%.3f` but without the leading dot. [^7] | | `%6f` | `026490` | Similar to `%.6f` but without the leading dot. [^7] | | `%9f` | `026490000` | Similar to `%.9f` but without the leading dot. [^7] | | | | | | `%R` | `00:34` | Hour-minute format. Same as `%H:%M`. | | `%T` | `00:34:60` | Hour-minute-second format. Same as `%H:%M:%S`. | | `%X` | `00:34:60` | Locale's time representation (e.g., 23:13:48). | | `%r` | `12:34:60 AM` | Hour-minute-second format in 12-hour clocks. Same as `%I:%M:%S %p`. | | | | | | | | **TIME ZONE SPECIFIERS:** | | `%Z` | `ACST` | Local time zone name. Skips all non-whitespace characters during parsing. [^8] | | `%z` | `+0930` | Offset from the local time to UTC (with UTC being `+0000`). | | `%:z` | `+09:30` | Same as `%z` but with a colon. | |`%::z`|`+09:30:00`| Offset from the local time to UTC with seconds. | |`%:::z`| `+09` | Offset from the local time to UTC without minutes. | | `%#z` | `+09` | *Parsing only:* Same as `%z` but allows minutes to be missing or present. | | | | | | | | **DATE & TIME SPECIFIERS:** | |`%c`|`Sun Jul 8 00:34:60 2001`|Locale's date and time (e.g., Thu Mar 3 23:05:25 2005). | | `%+` | `2001-07-08T00:34:60.026490+09:30` | ISO 8601 / RFC 3339 date & time format. [^5] | | | | | | `%s` | `994518299` | UNIX timestamp, the number of seconds since 1970-01-01 00:00 UTC. [^6]| | | | | | | | **SPECIAL SPECIFIERS:** | | `%t` | | Literal tab (`\t`). | | `%n` | | Literal newline (`\n`). | | `%%` | | Literal percent sign. | It is possible to override the default padding behavior of numeric specifiers `%?`. This is not allowed for other specifiers and will result in the `BAD_FORMAT` error. Modifier | Description -------- | ----------- `%-?` | Suppresses any padding including spaces and zeroes. (e.g. `%j` = `012`, `%-j` = `12`) `%_?` | Uses spaces as a padding. (e.g. `%j` = `012`, `%_j` = ` 12`) `%0?` | Uses zeroes as a padding. (e.g. `%e` = ` 9`, `%0e` = `09`) Notes: [^1]: `%C`, `%y`: This is floor division, so 100 BCE (year number -99) will print `-1` and `99` respectively. [^2]: `%U`: Week 1 starts with the first Sunday in that year. It is possible to have week 0 for days before the first Sunday. [^3]: `%G`, `%g`, `%V`: Week 1 is the first week with at least 4 days in that year. Week 0 does not exist, so this should be used with `%G` or `%g`. [^4]: `%S`: It accounts for leap seconds, so `60` is possible. [^5]: `%+`: Same as `%Y-%m-%dT%H:%M:%S%.f%:z`, i.e. 0, 3, 6 or 9 fractional digits for seconds and colons in the time zone offset.

This format also supports having a `Z` or `UTC` in place of `%:z`. They are equivalent to `+00:00`.

Note that all `T`, `Z`, and `UTC` are parsed case-insensitively.

The typical `strftime` implementations have different (and locale-dependent) formats for this specifier. While Chrono's format for `%+` is far more stable, it is best to avoid this specifier if you want to control the exact output. [^6]: `%s`: This is not padded and can be negative. For the purpose of Chrono, it only accounts for non-leap seconds so it slightly differs from ISO C `strftime` behavior. [^7]: `%f`, `%.f`, `%.3f`, `%.6f`, `%.9f`, `%3f`, `%6f`, `%9f`:
The default `%f` is right-aligned and always zero-padded to 9 digits for the compatibility with glibc and others, so it always counts the number of nanoseconds since the last whole second. E.g. 7ms after the last second will print `007000000`, and parsing `7000000` will yield the same.

The variant `%.f` is left-aligned and print 0, 3, 6 or 9 fractional digits according to the precision. E.g. 70ms after the last second under `%.f` will print `.070` (note: not `.07`), and parsing `.07`, `.070000` etc. will yield the same. Note that they can print or read nothing if the fractional part is zero or the next character is not `.`.

The variant `%.3f`, `%.6f` and `%.9f` are left-aligned and print 3, 6 or 9 fractional digits according to the number preceding `f`. E.g. 70ms after the last second under `%.3f` will print `.070` (note: not `.07`), and parsing `.07`, `.070000` etc. will yield the same. Note that they can read nothing if the fractional part is zero or the next character is not `.` however will print with the specified length.

The variant `%3f`, `%6f` and `%9f` are left-aligned and print 3, 6 or 9 fractional digits according to the number preceding `f`, but without the leading dot. E.g. 70ms after the last second under `%3f` will print `070` (note: not `07`), and parsing `07`, `070000` etc. will yield the same. Note that they can read nothing if the fractional part is zero. [^8]: `%Z`: Offset will not be populated from the parsed data, nor will it be validated. Timezone is completely ignored. Similar to the glibc `strptime` treatment of this format code.

It is not possible to reliably convert from an abbreviation to an offset, for example CDT can mean either Central Daylight Time (North America) or China Daylight Time. LY[C[[[ [ [[[[[[[[\ \\{\\ \\\ \\unstable-locales\\)\ Ҝ \\]]Ҝ ] ]Ҝ ``Ҝ e ɔ<Ʈ eef+G Creates a new parsing iterator from the `strftime`-like format string.eJf  k1kk{kk kkk kkkk)k   l$l ՜ lpp p' ɔ<Ʈ ppq qʌ       с( q&qq  vw~          M ߆ Ȇ ʆ҆ Ԇن  ۆ5         ʌ       с( Ŗ˥] Z> Makes a new `DelayedFormat` value out of local date and time.A    M Makes a new `DelayedFormat` value out of local date and time and UTC offset.P== C     ^      5     җ  ˗  ʌ       с( ՗җҗ4    W Parsing a `str` into a `Weekday` uses the format [`%W`](./format/strftime/index.html).Z   use chrono::Weekday;; assert_eq!("Sunday".parse::(), Ok(Weekday::Sun));>0 assert!("any day".parse::().is_err());3! The parsing is case-insensitive.$˟ϟ # use chrono::Weekday;ן8 assert_eq!("mON".parse::(), Ok(Weekday::Mon));;V Only the shortest form (e.g. `sun`) and the longest form (e.g. `sunday`) is accepted.Y. assert!("thurs".parse::().is_err());1ӥѦ߱#𞺘/Ƣ U Parsing a `str` into a `Month` uses the format [`%W`](./format/strftime/index.html).X٭ ݭ  use chrono::Month;< assert_eq!("January".parse::(), Ok(Month::January));?. assert!("any day".parse::().is_err());Ү1$ # use chrono::Month;> assert_eq!("fEbruARy".parse::(), Ok(Month::February));گAW Only the shortest form (e.g. `jan`) and the longest form (e.g. `january`) is accepted.Z- assert!("septem".parse::().is_err());0/ assert!("Augustin".parse::().is_err());ٱ2 ̨өt#•҈tҲ/ղ !     0 Date and time types unconcerned with timezones.343 They are primarily building blocks for other types864 (e.g. [`TimeZone`](../offset/trait.TimeZone.html)),o7= but can be also used for the simpler date and time handling.@||Є      z5;            5 V      #1     $6    ڗ7$7 Returns a date representing the first day of the week.: " use chrono::{NaiveDate, Weekday};%: let date = NaiveDate::from_ymd_opt(2022, 4, 18).unwrap();=$ let week = date.week(Weekday::Mon);'# assert!(week.first_day() <= date);&  #6 Returns a date representing the last day of the week.9 %='" assert!(week.last_day() >= date);% /G Returns a [`RangeInclusive`] representing the whole week bounded byJ: [first_day](./struct.NaiveWeek.html#method.first_day) and=? [last_day](./struct.NaiveWeek.html#method.last_day) functions.B %=' let days = week.days(); assert!(days.contains(&date));" " "/ Construct a new `Days` from a number of months"2" 9: The minimum possible `NaiveDate` (January 1, 262145 BCE).8=8 8 Æ89  88¼ 88 88Use NaiveDate::MIN instead88D9¼ :; The maximum possible `NaiveDate` (December 31, 262143 CE).9>: : ʆ::  ::¼ :: ::Use NaiveDate::MAX instead::D:¼ FG2G J5J M=A Makes a new `NaiveDate` from the [calendar date](#calendar-date)KD (year, month and day).KK; Panics on the out-of-range date, invalid month and/or day.K>L L LL  LL LL LLuse `from_ymd_opt()` insteadLLFM  SIƆNDNOC Returns `None` on the out-of-range date, invalid month and/or day.OFO O OP use chrono::NaiveDate;PP, let from_ymd_opt = NaiveDate::from_ymd_opt;P/P. assert!(from_ymd_opt(2015, 3, 14).is_some());P1. assert!(from_ymd_opt(2015, 0, 14).is_none());Q1. assert!(from_ymd_opt(2015, 2, 29).is_none());Q1D assert!(from_ymd_opt(-4, 2, 29).is_some()); // 5 BCE is a leap yearRG/ assert!(from_ymd_opt(400000, 1, 1).is_none());R20 assert!(from_ymd_opt(-400000, 1, 1).is_none());S3SS  W4? Makes a new `NaiveDate` from the [ordinal date](#ordinal-date)UB (year and day of the year).UV< Panics on the out-of-range date and/or invalid day of year.V?V V VW  VV VV VVuse `from_yo_opt()` insteadVVEW Ց ^@XBXYD Returns `None` on the out-of-range date and/or invalid day of year.YGY Y ZZZZ* let from_yo_opt = NaiveDate::from_yo_opt;Z-Z+ assert!(from_yo_opt(2015, 100).is_some());[.) assert!(from_yo_opt(2015, 0).is_none());[,+ assert!(from_yo_opt(2015, 365).is_some());[.+ assert!(from_yo_opt(2015, 366).is_none());\.A assert!(from_yo_opt(-4, 366).is_some()); // 5 BCE is a leap year\D+ assert!(from_yo_opt(400000, 1).is_none());]., assert!(from_yo_opt(-400000, 1).is_none());]/^^  bG= Makes a new `NaiveDate` from the [ISO week date](#week-date)_@) (year, week number and day of the week).`,I The resulting `NaiveDate` may have a different year from the input year.`La< Panics on the out-of-range date and/or invalid week number.a?a a ab  aa aa aause `from_isoywd_opt()` insteada!aIb   tSc@ژd,dLeD Returns `None` on the out-of-range date and/or invalid week number.eGe e fff%f$ let from_ymd = NaiveDate::from_ymd;f'2 let from_isoywd_opt = NaiveDate::from_isoywd_opt;g5g: assert_eq!(from_isoywd_opt(2015, 0, Weekday::Sun), None);g=Q assert_eq!(from_isoywd_opt(2015, 10, Weekday::Sun), Some(from_ymd(2015, 3, 8)));hTR assert_eq!(from_isoywd_opt(2015, 30, Weekday::Mon), Some(from_ymd(2015, 7, 20)));hU; assert_eq!(from_isoywd_opt(2015, 60, Weekday::Mon), None);i>i= assert_eq!(from_isoywd_opt(400000, 10, Weekday::Fri), None);j@> assert_eq!(from_isoywd_opt(-400000, 10, Weekday::Sat), None);jAkkL The year number of ISO week date may differ from that of the calendar date.kOkk$ # use chrono::{NaiveDate, Weekday};l'& # let from_ymd = NaiveDate::from_ymd;l)4 # let from_isoywd_opt = NaiveDate::from_isoywd_opt;l7" // Mo Tu We Th Fr Sa Sum%> // 2014-W52 22 23 24 25 26 27 28 has 4+ days of new year,mA? // 2015-W01 29 30 31 1 2 3 4 <- so this is the first weeknBS assert_eq!(from_isoywd_opt(2014, 52, Weekday::Sun), Some(from_ymd(2014, 12, 28)));nV; assert_eq!(from_isoywd_opt(2014, 53, Weekday::Mon), None);o>R assert_eq!(from_isoywd_opt(2015, 1, Weekday::Mon), Some(from_ymd(2014, 12, 29)));oUp> // 2015-W52 21 22 23 24 25 26 27 has 4+ days of old year,pA> // 2015-W53 28 29 30 31 1 2 3 <- so this is the last weekqA" // 2016-W01 4 5 6 7 8 9 10q%S assert_eq!(from_isoywd_opt(2015, 52, Weekday::Sun), Some(from_ymd(2015, 12, 27)));rVQ assert_eq!(from_isoywd_opt(2015, 53, Weekday::Sun), Some(from_ymd(2016, 1, 3)));rT; assert_eq!(from_isoywd_opt(2015, 54, Weekday::Mon), None);s>P assert_eq!(from_isoywd_opt(2016, 1, Weekday::Mon), Some(from_ymd(2016, 1, 4)));tStt ׀4V Makes a new `NaiveDate` from a day's number in the proleptic Gregorian calendar, with~Y January 1, 1 being day 1.$ Panics if the date is out of range.'  €    )use `from_num_days_from_ce_opt()` instead+Sހ ǯ @YƂ, Returns `None` if the date is out of range./  ƃ҃; let from_ndays_opt = NaiveDate::from_num_days_from_ce_opt;>D let from_ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap();GF assert_eq!(from_ndays_opt(730_000), Some(from_ymd(1999, 9, 3)));IC assert_eq!(from_ndays_opt(1), Some(from_ymd(1, 1, 1)));ޅFE assert_eq!(from_ndays_opt(0), Some(from_ymd(0, 12, 31)));HE assert_eq!(from_ndays_opt(-1), Some(from_ymd(0, 12, 30)));H0 assert_eq!(from_ndays_opt(100_000_000), None);Ç30 assert_eq!(from_ndays_opt(-100_000_000), None);3ƈ YZ Makes a new `NaiveDate` by counting the number of occurrences of a particular day-of-week][ since the beginning of the given month. For instance, if you want the 2nd Friday of March^R 2017, you would use `NaiveDate::from_weekday_of_month(2017, 3, Weekday::Fri, 2)`.ύU # Panics Ž\ The resulting `NaiveDate` is guaranteed to be in `month`. If `n` is larger than the numberʎ_Z of `weekday` in `month` (eg. the 6th Friday of March 2017) then this function will panic.]5 `n` is 1-indexed. Passing `n=0` will cause a panic.8א א     )use `from_weekday_of_month_opt()` instead+ՐS  ]ؓ^e 2017, you would use `NaiveDate::from_weekday_of_month(2017, 3, Weekday::Fri, 2)`. `n` is 1-indexed.h%K assert_eq!(NaiveDate::from_weekday_of_month_opt(2017, 3, Weekday::Fri, 2),N1 NaiveDate::from_ymd_opt(2017, 3, 10))4Y Returns `None` if `n` out-of-range; ie. if `n` is larger than the number of `weekday` in\< `month` (eg. the 6th Friday of March 2017), or if `n == 0`.? ̨CP Parses a string with the specified format string and returns a new `NaiveDate`.SC See the [`format::strftime` module](../format/strftime/index.html)F &  0 let parse_from_str = NaiveDate::parse_from_str;35 assert_eq!(parse_from_str("2015-09-05", "%Y-%m-%d"),8> Ok(NaiveDate::from_ymd_opt(2015, 9, 5).unwrap()));A1 assert_eq!(parse_from_str("5sep2015", "%d%b%Y"),4A7 Time and offset is ignored for the purpose of parsing.:ˡӡ # use chrono::NaiveDate;ߡ2 # let parse_from_str = NaiveDate::parse_from_str;5N assert_eq!(parse_from_str("2014-5-17T12:34:56+09:30", "%Y-%m-%dT%H:%M:%S%z"),Q? Ok(NaiveDate::from_ymd_opt(2014, 5, 17).unwrap()));Bף6 Out-of-bound dates or insufficient fields are errors.9ޤ55 assert!(parse_from_str("2015/9", "%Y/%m").is_err());8; assert!(parse_from_str("2015/9/31", "%Y/%m/%d").is_err());ե>O All parsed fields should be consistent to each other, otherwise it's an error.R5F assert!(parse_from_str("Sat, 09 Aug 2013", "%a, %d %b %Y").is_err());IӨ ʯ?) Add a duration in [`Months`] to the date,Ϊ[ If the day would be out of range for the resulting month, use the last day for that month.֪^ ?# # use chrono::{NaiveDate, Months};& ĬV NaiveDate::from_ymd_opt(2022, 2, 20).unwrap().checked_add_months(Months::new(6)),جY8 Some(NaiveDate::from_ymd_opt(2022, 8, 20).unwrap());  V NaiveDate::from_ymd_opt(2022, 7, 31).unwrap().checked_add_months(Months::new(2)),Y8 Some(NaiveDate::from_ymd_opt(2022, 9, 30).unwrap()); ѯ ?0 Subtract a duration in [`Months`] from the date3^ ?ٳ& V NaiveDate::from_ymd_opt(2022, 2, 20).unwrap().checked_sub_months(Months::new(6)),Y8 Some(NaiveDate::from_ymd_opt(2021, 8, 20).unwrap()); ʵյ ݵ1 NaiveDate::from_ymd_opt(2014, 1, 1).unwrap()4E .checked_sub_months(Months::new(core::i32::MAX as u32 + 1)),H None   1  9' Add a duration in [`Days`] to the date* ?! # use chrono::{NaiveDate, Days};$ R NaiveDate::from_ymd_opt(2022, 2, 20).unwrap().checked_add_days(Days::new(9)),U7 Some(NaiveDate::from_ymd_opt(2022, 3, 1).unwrap()):  R NaiveDate::from_ymd_opt(2022, 7, 31).unwrap().checked_add_days(Days::new(2)),U7 Some(NaiveDate::from_ymd_opt(2022, 8, 2).unwrap()):        9. Subtract a duration in [`Days`] from the date1 ?$ R NaiveDate::from_ymd_opt(2022, 2, 20).unwrap().checked_sub_days(Days::new(6)),U8 Some(NaiveDate::from_ymd_opt(2022, 2, 14).unwrap());      -  8I Makes a new `NaiveDateTime` from the current date and given `NaiveTime`.L  3 use chrono::{NaiveDate, NaiveTime, NaiveDateTime};66 let d = NaiveDate::from_ymd_opt(2015, 6, 3).unwrap();9A let t = NaiveTime::from_hms_milli_opt(12, 34, 56, 789).unwrap();D' let dt: NaiveDateTime = d.and_time(t);* assert_eq!(dt.date(), d); assert_eq!(dt.time(), t); EL Makes a new `NaiveDateTime` from the current date, hour, minute and second.OP No [leap second](./struct.NaiveTime.html#leap-second-handling) is allowed here;SG use `NaiveDate::and_hms_*` methods with a subsecond parameter instead.J 1      use `and_hms_opt()` insteadE  QOSK use `NaiveDate::and_hms_*_opt` methods with a subsecond parameter instead.N 9  9. assert!(d.and_hms_opt(12, 34, 56).is_some());1Q assert!(d.and_hms_opt(12, 34, 60).is_none()); // use `and_hms_milli_opt` insteadT. assert!(d.and_hms_opt(12, 60, 56).is_none());1. assert!(d.and_hms_opt(24, 34, 56).is_none());1         WY Makes a new `NaiveDateTime` from the current date, hour, minute, second and millisecond.\& The millisecond part can exceed 1,000)W in order to represent the [leap second](./struct.NaiveTime.html#leap-second-handling).Z >      !use `and_hms_milli_opt()` instead#K   \)Z F  9; assert!(d.and_hms_milli_opt(12, 34, 56, 789).is_some());>J assert!(d.and_hms_milli_opt(12, 34, 59, 1_789).is_some()); // leap secondM; assert!(d.and_hms_milli_opt(12, 34, 59, 2_789).is_none());>; assert!(d.and_hms_milli_opt(12, 34, 60, 789).is_none());>; assert!(d.and_hms_milli_opt(12, 60, 56, 789).is_none());>; assert!(d.and_hms_milli_opt(24, 34, 56, 789).is_none());>    WY Makes a new `NaiveDateTime` from the current date, hour, minute, second and microsecond.\* The microsecond part can exceed 1,000,000-Z >  E use chrono::{NaiveDate, NaiveDateTime, Datelike, Timelike, Weekday};H9> let dt: NaiveDateTime = d.and_hms_micro(12, 34, 56, 789_012);A assert_eq!(dt.year(), 2015); ( assert_eq!(dt.weekday(), Weekday::Wed);+ assert_eq!(dt.second(), 56); * assert_eq!(dt.nanosecond(), 789_012_000);-  ۑ    !use `and_hms_micro_opt()` instead#K  ȁ \-Z F  9? assert!(d.and_hms_micro_opt(12, 34, 56, 789_012).is_some());BN assert!(d.and_hms_micro_opt(12, 34, 59, 1_789_012).is_some()); // leap secondQ? assert!(d.and_hms_micro_opt(12, 34, 59, 2_789_012).is_none());B? assert!(d.and_hms_micro_opt(12, 34, 60, 789_012).is_none());B? assert!(d.and_hms_micro_opt(12, 60, 56, 789_012).is_none());B? assert!(d.and_hms_micro_opt(24, 34, 56, 789_012).is_none());B    UX Makes a new `NaiveDateTime` from the current date, hour, minute, second and nanosecond.[- The nanosecond part can exceed 1,000,000,0000Z =Á Á ́  ΁ԁ ցށ  use `and_hms_nano_opt()` instead"J   ̃[܉0Zȅ ЅE  Ȇ9B assert!(d.and_hms_nano_opt(12, 34, 56, 789_012_345).is_some());EQ assert!(d.and_hms_nano_opt(12, 34, 59, 1_789_012_345).is_some()); // leap secondTB assert!(d.and_hms_nano_opt(12, 34, 59, 2_789_012_345).is_none());ЈEB assert!(d.and_hms_nano_opt(12, 34, 60, 789_012_345).is_none());EB assert!(d.and_hms_nano_opt(12, 60, 56, 789_012_345).is_none());EB assert!(d.and_hms_nano_opt(24, 34, 56, 789_012_345).is_none());E    ōȍ̍  1 .ƒ 4 Makes a new `NaiveDate` for the next calendar date.7 6    Õ ŕ͕ ϕԕuse `succ_opt()` instead֕B  +Δ7 >  D assert_eq!(NaiveDate::from_ymd_opt(2015, 6, 3).unwrap().succ_opt(),G@ Some(NaiveDate::from_ymd_opt(2015, 6, 4).unwrap()));C- assert_eq!(NaiveDate::MAX.succ_opt(), None);љ0      8 Makes a new `NaiveDate` for the previous calendar date.; 7  ”˜  ̜Ҝ Ԝܜ ޜuse `pred_opt()` insteadB ܜ +; ?  ɟD assert_eq!(NaiveDate::from_ymd_opt(2015, 6, 3).unwrap().pred_opt(),џG@ Some(NaiveDate::from_ymd_opt(2015, 6, 2).unwrap()));C- assert_eq!(NaiveDate::MIN.pred_opt(), None);0ġ    F> Adds the `days` part of given `Duration` to the current date.ѢA 3ף ߣ # use chrono::{Duration, NaiveDate};&6 let d = NaiveDate::from_ymd_opt(2015, 9, 5).unwrap();95 assert_eq!(d.checked_add_signed(Duration::days(40)),8B Some(NaiveDate::from_ymd_opt(2015, 10, 15).unwrap()));E6 assert_eq!(d.checked_add_signed(Duration::days(-40)),9A Some(NaiveDate::from_ymd_opt(2015, 7, 27).unwrap()));DG assert_eq!(d.checked_add_signed(Duration::days(1_000_000_000)), None);JH assert_eq!(d.checked_add_signed(Duration::days(-1_000_000_000)), None);ӧKH assert_eq!(NaiveDate::MAX.checked_add_signed(Duration::days(1)), None);K FE Subtracts the `days` part of given `Duration` from the current date.H 3ʯ ү ٢&95 assert_eq!(d.checked_sub_signed(Duration::days(40)),8D6 assert_eq!(d.checked_sub_signed(Duration::days(-40)),9EG assert_eq!(d.checked_sub_signed(Duration::days(1_000_000_000)), None);JH assert_eq!(d.checked_sub_signed(Duration::days(-1_000_000_000)), None);ƳKH assert_eq!(NaiveDate::MIN.checked_sub_signed(Duration::days(1)), None);K A5 Subtracts another `NaiveDate` from the current date.8 - / ۻ;  ٢ɼ&۝'. let since = NaiveDate::signed_duration_since;1޽Q assert_eq!(since(from_ymd(2014, 1, 1), from_ymd(2014, 1, 1)), Duration::zero());TT assert_eq!(since(from_ymd(2014, 1, 1), from_ymd(2013, 12, 31)), Duration::days(1));WS assert_eq!(since(from_ymd(2014, 1, 1), from_ymd(2014, 1, 2)), Duration::days(-1));VU assert_eq!(since(from_ymd(2014, 1, 1), from_ymd(2013, 9, 23)), Duration::days(100));XT assert_eq!(since(from_ymd(2014, 1, 1), from_ymd(2013, 1, 1)), Duration::days(365));WZ assert_eq!(since(from_ymd(2014, 1, 1), from_ymd(2010, 1, 1)), Duration::days(365*4 + 1));]] assert_eq!(since(from_ymd(2014, 1, 1), from_ymd(1614, 1, 1)), Duration::days(365*400 + 97));` 4 I   9: Otherwise it is the same as the ordinary `format` method.=/ The `Iterator` of items should be `Clone`able,2K since the resulting `DelayedFormat` value may be formatted multiple times.N  - use chrono::format::strftime::StrftimeItems;0* let fmt = StrftimeItems::new("%Y-%m-%d");-9H assert_eq!(d.format_with_items(fmt.clone()).to_string(), "2015-09-05");KH assert_eq!(d.format("%Y-%m-%d").to_string(), "2015-09-05");KQ The resulting `DelayedFormat` can be formatted directly via the `Display` trait.T/ # use chrono::format::strftime::StrftimeItems;24 # let fmt = StrftimeItems::new("%Y-%m-%d").clone();78 # let d = NaiveDate::from_ymd_opt(2015, 9, 5).unwrap();;C assert_eq!(format!("{}", d.format_with_items(fmt)), "2015-09-05");Fɘ      5         ʌ       с(     J 6F & This returns a `DelayedFormat`,#F which gets converted to a string only when actual formatting happens.I6 You may use the `to_string` method to get a `String`,9; or just feed it into `print!` and other formatting macros.>9 (In this way it avoids the redundant memory allocation.)<= A wrong format string does *not* issue an error immediately.@< Rather, converting or formatting the `DelayedFormat` fails.?H You are recommended to immediately use `DelayedFormat` for this reason.K  9< assert_eq!(d.format("%Y-%m-%d").to_string(), "2015-09-05");?U assert_eq!(d.format("%A, %-d %B, %C%y").to_string(), "Saturday, 5 September, 2015");XT;? assert_eq!(format!("{}", d.format("%Y-%m-%d")), "2015-09-05");BX assert_eq!(format!("{}", d.format("%A, %-d %B, %C%y")), "Saturday, 5 September, 2015");[      5 0G Returns an iterator that steps by days across all representable dates.J   let expected = [3 NaiveDate::from_ymd_opt(2016, 2, 27).unwrap(),63 NaiveDate::from_ymd_opt(2016, 2, 28).unwrap(),63 NaiveDate::from_ymd_opt(2016, 2, 29).unwrap(),62 NaiveDate::from_ymd_opt(2016, 3, 1).unwrap(),5 ]; let mut count = 0;` for (idx, d) in NaiveDate::from_ymd_opt(2016, 2, 27).unwrap().iter_days().take(4).enumerate() {c! assert_eq!(d, expected[idx]);$ count += 1; } assert_eq!(count, 4);R for d in NaiveDate::from_ymd_opt(2016, 3, 1).unwrap().iter_days().rev().take(4) {U count -= 1;$ assert_eq!(d, expected[count]);'  2H Returns an iterator that steps by weeks across all representable dates.K  62 NaiveDate::from_ymd_opt(2016, 3, 5).unwrap(),53 NaiveDate::from_ymd_opt(2016, 3, 12).unwrap(),63 NaiveDate::from_ymd_opt(2016, 3, 19).unwrap(),6a for (idx, d) in NaiveDate::from_ymd_opt(2016, 2, 27).unwrap().iter_weeks().take(4).enumerate() {d$T for d in NaiveDate::from_ymd_opt(2016, 3, 19).unwrap().iter_weeks().rev().take(4) {W'  /R Returns the [`NaiveWeek`] that the date belongs to, starting with the [`Weekday`]U specified. =Ń>@ Returns the year number in the [calendar date](#calendar-date).C  # use chrono::{NaiveDate, Datelike};&G assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().year(), 2015);JS assert_eq!(NaiveDate::from_ymd_opt(-308, 3, 14).unwrap().year(), -308); // 309 BCEV * Returns the month number starting from 1.-& The return value ranges from 1 to 12.)  &E assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().month(), 9);HF assert_eq!(NaiveDate::from_ymd_opt(-308, 3, 14).unwrap().month(), 3);I * Returns the month number starting from 0.-& The return value ranges from 0 to 11.)  &F assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().month0(), 8);IG assert_eq!(NaiveDate::from_ymd_opt(-308, 3, 14).unwrap().month0(), 2);Jف * Returns the day of month starting from 1.-Q The return value ranges from 1 to 31. (The last day of month differs by months.)Tʃ ҃ &C assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().day(), 8);FE assert_eq!(NaiveDate::from_ymd_opt(-308, 3, 14).unwrap().day(), 14);HÅυ1 Combined with [`NaiveDate::pred`](#method.pred),ׅ4< one can determine the number of days in a particular month.?5 (Note that this panics when `year` is out of range.)Ԇ8&Ї2 fn ndays_in_month(year: i32, month: u32) -> u32 {؇5* // the first day of the next month...-N let (y, m) = if month == 12 { (year + 1, 1) } else { (year, month + 1) };ĈQ7 let d = NaiveDate::from_ymd_opt(y, m, 1).unwrap();:ى< // ...is preceded by the last day of the original month? d.pred().day()ʊ) assert_eq!(ndays_in_month(2015, 8), 31);Ҋ,) assert_eq!(ndays_in_month(2015, 9), 30);,* assert_eq!(ndays_in_month(2015, 12), 31);-) assert_eq!(ndays_in_month(2016, 2), 29);,) assert_eq!(ndays_in_month(2017, 2), 28);,Ȍ Ő* Returns the day of month starting from 0.-ύQ The return value ranges from 0 to 30. (The last day of month differs by months.)׍T  ʎҎގ&D assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().day0(), 7);GF assert_eq!(NaiveDate::from_ymd_opt(-308, 3, 14).unwrap().day0(), 13);ݏIȐ͐ ͚) Returns the day of year starting from 1.,P The return value ranges from 1 to 366. (The last day of year differs by years.)S  Ē&I assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().ordinal(), 251);LI assert_eq!(NaiveDate::from_ymd_opt(-308, 3, 14).unwrap().ordinal(), 74);ȓL4; one can determine the number of days in a particular year.>8&% fn ndays_in_year(year: i32) -> u32 {() // the first day of the next year...ږ,> let d = NaiveDate::from_ymd_opt(year + 1, 1, 1).unwrap();Aї; // ...is preceded by the last day of the original yearٗ> d.pred().ordinal()Ř& assert_eq!(ndays_in_year(2015), 365);͘)& assert_eq!(ndays_in_year(2016), 366);)& assert_eq!(ndays_in_year(2017), 365);)& assert_eq!(ndays_in_year(2000), 366);י)& assert_eq!(ndays_in_year(2100), 365);)Кؚ ) Returns the day of year starting from 0.,P The return value ranges from 0 to 365. (The last day of year differs by years.)țS  œΜ&J assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().ordinal0(), 250);MJ assert_eq!(NaiveDate::from_ymd_opt(-308, 3, 14).unwrap().ordinal0(), 73);ӝMž˞  Returns the day of week.  ɟ, use chrono::{NaiveDate, Datelike, Weekday};՟/R assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().weekday(), Weekday::Tue);US assert_eq!(NaiveDate::from_ymd_opt(-308, 3, 14).unwrap().weekday(), Weekday::Fri);Vơ  36 Makes a new `NaiveDate` with the year number changed.9أ@ Returns `None` when the resulting `NaiveDate` would be invalid.C  ¤ʤ֤&I assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().with_year(2016),L@ Some(NaiveDate::from_ymd_opt(2016, 9, 8).unwrap()));ڥCI assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().with_year(-308),L@ Some(NaiveDate::from_ymd_opt(-308, 9, 8).unwrap()));CǧO A leap day (February 29) is a good example that this method can return `None`.ϧR% # use chrono::{NaiveDate, Datelike};(R assert!(NaiveDate::from_ymd_opt(2016, 2, 29).unwrap().with_year(2015).is_none());UR assert!(NaiveDate::from_ymd_opt(2016, 2, 29).unwrap().with_year(2020).is_some());U ª 5I Makes a new `NaiveDate` with the month number (starting from 1) changed.LC ® Ԯܮ&H assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().with_month(10),KA Some(NaiveDate::from_ymd_opt(2015, 10, 8).unwrap()));D^ assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().with_month(13), None); // no month 13aa assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 30).unwrap().with_month(2), None); // no February 30d  7I Makes a new `NaiveDate` with the month number (starting from 0) changed.LC  дش&H assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().with_month0(9),KD_ assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().with_month0(12), None); // no month 13bb assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 30).unwrap().with_month0(1), None); // no February 30e  Ƚ1I Makes a new `NaiveDate` with the day of month (starting from 1) changed.LC ú պݺ&F assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().with_day(30),IA Some(NaiveDate::from_ymd_opt(2015, 9, 30).unwrap()));DF assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().with_day(31),I% None); // no September 31(˽Խ 3I Makes a new `NaiveDate` with the day of month (starting from 0) changed.LCٿ  &G assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().with_day0(29),JDG assert_eq!(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().with_day0(30),Jמ(  9H Makes a new `NaiveDate` with the day of year (starting from 1) changed.KC  &J assert_eq!(NaiveDate::from_ymd_opt(2015, 1, 1).unwrap().with_ordinal(60),M@ Some(NaiveDate::from_ymd_opt(2015, 3, 1).unwrap()));CK assert_eq!(NaiveDate::from_ymd_opt(2015, 1, 1).unwrap().with_ordinal(366),N, None); // 2015 had only 365 days/J assert_eq!(NaiveDate::from_ymd_opt(2016, 1, 1).unwrap().with_ordinal(60),MA Some(NaiveDate::from_ymd_opt(2016, 2, 29).unwrap()));DK assert_eq!(NaiveDate::from_ymd_opt(2016, 1, 1).unwrap().with_ordinal(366),NB Some(NaiveDate::from_ymd_opt(2016, 12, 31).unwrap()));E  ;H Makes a new `NaiveDate` with the day of year (starting from 0) changed.KC  &K assert_eq!(NaiveDate::from_ymd_opt(2015, 1, 1).unwrap().with_ordinal0(59),NCL assert_eq!(NaiveDate::from_ymd_opt(2015, 1, 1).unwrap().with_ordinal0(365),OЦ/K assert_eq!(NaiveDate::from_ymd_opt(2016, 1, 1).unwrap().with_ordinal0(59),NDL assert_eq!(NaiveDate::from_ymd_opt(2016, 1, 1).unwrap().with_ordinal0(365),OE  #G An addition of `Duration` to `NaiveDate` discards the fractional days,JL rounding to the closest integral number of days towards `Duration::zero()`.O! Panics on underflow or overflow.$R Use [`NaiveDate::checked_add_signed`](#method.checked_add_signed) to detect that.U  ٢&۝'W assert_eq!(from_ymd(2014, 1, 1) + Duration::zero(), from_ymd(2014, 1, 1));ZW assert_eq!(from_ymd(2014, 1, 1) + Duration::seconds(86399), from_ymd(2014, 1, 1));ZW assert_eq!(from_ymd(2014, 1, 1) + Duration::seconds(-86399), from_ymd(2014, 1, 1));ZW assert_eq!(from_ymd(2014, 1, 1) + Duration::days(1), from_ymd(2014, 1, 2));ZY assert_eq!(from_ymd(2014, 1, 1) + Duration::days(-1), from_ymd(2013, 12, 31));\Y assert_eq!(from_ymd(2014, 1, 1) + Duration::days(364), from_ymd(2014, 12, 31));\W assert_eq!(from_ymd(2014, 1, 1) + Duration::days(365*4 + 1), from_ymd(2018, 1, 1));ZW assert_eq!(from_ymd(2014, 1, 1) + Duration::days(365*400 + 97), from_ymd(2414, 1, 1));Z + )*   ,O An addition of months to `NaiveDate` clamped to valid days in resulting month.Rҹ 4 Panics if the resulting date would be out of range.7  + use chrono::{Duration, NaiveDate, Months};.۝'I assert_eq!(from_ymd(2014, 1, 1) + Months::new(1), from_ymd(2014, 2, 1));LK assert_eq!(from_ymd(2014, 1, 1) + Months::new(11), from_ymd(2014, 12, 1));NJ assert_eq!(from_ymd(2014, 1, 1) + Months::new(12), from_ymd(2015, 1, 1));MJ assert_eq!(from_ymd(2014, 1, 1) + Months::new(13), from_ymd(2015, 2, 1));MK assert_eq!(from_ymd(2014, 1, 31) + Months::new(1), from_ymd(2014, 2, 28));NK assert_eq!(from_ymd(2020, 1, 31) + Months::new(1), from_ymd(2020, 2, 29));N  ,S A subtraction of Months from `NaiveDate` clamped to valid days in resulting month.Vҹ 7  .۝'J assert_eq!(from_ymd(2014, 1, 1) - Months::new(11), from_ymd(2013, 2, 1));MJ assert_eq!(from_ymd(2014, 1, 1) - Months::new(12), from_ymd(2013, 1, 1));MK assert_eq!(from_ymd(2014, 1, 1) - Months::new(13), from_ymd(2012, 12, 1));N  (  ( #K A subtraction of `Duration` from `NaiveDate` discards the fractional days,NO: It is the same as the addition with a negated `Duration`.=$R Use [`NaiveDate::checked_sub_signed`](#method.checked_sub_signed) to detect that.U  ٢&۝'W assert_eq!(from_ymd(2014, 1, 1) - Duration::zero(), from_ymd(2014, 1, 1));ZW assert_eq!(from_ymd(2014, 1, 1) - Duration::seconds(86399), from_ymd(2014, 1, 1));ZW assert_eq!(from_ymd(2014, 1, 1) - Duration::seconds(-86399), from_ymd(2014, 1, 1));ZY assert_eq!(from_ymd(2014, 1, 1) - Duration::days(1), from_ymd(2013, 12, 31));\W assert_eq!(from_ymd(2014, 1, 1) - Duration::days(-1), from_ymd(2014, 1, 2));ZW assert_eq!(from_ymd(2014, 1, 1) - Duration::days(364), from_ymd(2013, 1, 2));ZW assert_eq!(from_ymd(2014, 1, 1) - Duration::days(365*4 + 1), from_ymd(2010, 1, 1));ZW assert_eq!(from_ymd(2014, 1, 1) - Duration::days(365*400 + 97), from_ymd(1614, 1, 1));Z + )*  !ݭ8 - / ;' The implementation is a wrapper around*E [`NaiveDate::signed_duration_since`](#method.signed_duration_since).H  ٢&۝'K assert_eq!(from_ymd(2014, 1, 1) - from_ymd(2014, 1, 1), Duration::zero());NN assert_eq!(from_ymd(2014, 1, 1) - from_ymd(2013, 12, 31), Duration::days(1));QM assert_eq!(from_ymd(2014, 1, 1) - from_ymd(2014, 1, 2), Duration::days(-1));PO assert_eq!(from_ymd(2014, 1, 1) - from_ymd(2013, 9, 23), Duration::days(100));فRN assert_eq!(from_ymd(2014, 1, 1) - from_ymd(2013, 1, 1), Duration::days(365));QT assert_eq!(from_ymd(2014, 1, 1) - from_ymd(2010, 1, 1), Duration::days(365*4 + 1));WW assert_eq!(from_ymd(2014, 1, 1) - from_ymd(1614, 1, 1), Duration::days(365*400 + 97));փZ  + '꒵(ׇ ܇( ӊ-֊  0Ќ2-  (ԝ Ő(Ȑ͐ ͒-В ڒ 1̔3-  ̟8 The `Debug` output of the naive date `d` is the same as֘;9 [`d.format("%Y-%m-%d")`](../format/strftime/index.html).<ϙJ The string printed can be readily parsed via the `parse` method on `str`.әM  ښ[ assert_eq!(format!("{:?}", NaiveDate::from_ymd_opt(2015, 9, 5).unwrap()), "2015-09-05");ޚ^[ assert_eq!(format!("{:?}", NaiveDate::from_ymd_opt( 0, 1, 1).unwrap()), "0000-01-01");^[ assert_eq!(format!("{:?}", NaiveDate::from_ymd_opt(9999, 12, 31).unwrap()), "9999-12-31");^L ISO 8601 requires an explicit sign for years before 1 BCE or after 9999 CE.Oם۝^ assert_eq!(format!("{:?}", NaiveDate::from_ymd_opt( -1, 1, 1).unwrap()), "-0001-01-01");a^ assert_eq!(format!("{:?}", NaiveDate::from_ymd_opt(10000, 12, 31).unwrap()), "+10000-12-31");ağ4 : The `Display` output of the naive date `d` is the same as=<M  æY assert_eq!(format!("{}", NaiveDate::from_ymd_opt(2015, 9, 5).unwrap()), "2015-09-05");Ǧ\Y assert_eq!(format!("{}", NaiveDate::from_ymd_opt( 0, 1, 1).unwrap()), "0000-01-01");\Y assert_eq!(format!("{}", NaiveDate::from_ymd_opt(9999, 12, 31).unwrap()), "9999-12-31");\ިOƩ\ assert_eq!(format!("{}", NaiveDate::from_ymd_opt( -1, 1, 1).unwrap()), "-0001-01-01");_\ assert_eq!(format!("{}", NaiveDate::from_ymd_opt(10000, 12, 31).unwrap()), "+10000-12-31");ê_ѫ4ԫث 9 Parsing a `str` into a `NaiveDate` uses the same format,<J [`%Y-%m-%d`](../format/strftime/index.html), as in `Debug` and `Display`.M  ϭӭۭ7 let d = NaiveDate::from_ymd_opt(2015, 9, 18).unwrap();:6 assert_eq!("2015-09-18".parse::(), Ok(d));97 let d = NaiveDate::from_ymd_opt(12345, 6, 7).unwrap();:6 assert_eq!("+12345-6-7".parse::(), Ok(d));9. assert!("foo".parse::().is_err());1̰Ѱ. Ҝ : The default value for a NaiveDate is 1st of January 1970.=µ Ƶ Եص ) let default_date = NaiveDate::default();,H assert_eq!(default_date, NaiveDate::from_ymd_opt(1970, 1, 1).unwrap());K ||      z5+            5 F      *3     M        %& The minimum possible `NaiveDateTime`. )      ¼     Use NaiveDateTime::MIN instead  H ¼ փ%& The maximum possible `NaiveDateTime`.)    ¼  Use NaiveDateTime::MAX instead H ¼ ̅=; Makes a new `NaiveDateTime` from date and time components.>O Equivalent to [`date.and_time(time)`](./struct.NaiveDate.html#method.and_time)R3 and many other helper constructors on `NaiveDate`.6  69D# let dt = NaiveDateTime::new(d, t);& $=B Makes a new `NaiveDateTime` corresponding to a UTC date and time,E$ from the number of non-leap seconds'A since the midnight UTC on January 1, 1970 (aka "UNIX timestamp")DD and the number of nanoseconds since the last whole non-leap second.G - For a non-naive version of this function see 0I [`TimeZone::timestamp`](../offset/trait.TimeZone.html#method.timestamp). L!G The nanosecond part can exceed 1,000,000,000 in order to represent the!JM [leap second](./struct.NaiveTime.html#leap-second-handling). (The true "UNIX"P: timestamp" cannot represent a leap second unambiguously.)"=#H Panics on the out-of-range number of seconds and/or invalid nanosecond.#K$ $ $$  $$ $$ $$"use `from_timestamp_opt()` instead$$$L$  .BF Creates a new [NaiveDateTime] from milliseconds since the UNIX epoch.&I'9 The UNIX epoch starts on midnight, January 1, 1970, UTC.'<': Returns `None` on an out-of-range number of milliseconds.'=( ( (( use chrono::NaiveDateTime;(P let timestamp_millis: i64 = 1662921288; //Sunday, September 11, 2022 6:34:48 PM(SM let naive_datetime = NaiveDateTime::from_timestamp_millis(timestamp_millis);)P# assert!(naive_datetime.is_some());*&J assert_eq!(timestamp_millis, naive_datetime.unwrap().timestamp_millis());*M+F // Negative timestamps (before the UNIX epoch) are supported as well.+IM let timestamp_millis: i64 = -2208936075; //Mon Jan 01 1900 14:38:45 GMT+0000+P,P-&-M.. :I1Eߊ2'2D܋3G4܉404ZJ (The true "UNIX timestamp" cannot represent a leap second unambiguously.)5M5P Returns `None` on the out-of-range number of seconds and/or invalid nanosecond.5S6 6 66( use chrono::{NaiveDateTime, NaiveDate};7+ use std::i64;77< let from_timestamp_opt = NaiveDateTime::from_timestamp_opt;7?8- assert!(from_timestamp_opt(0, 0).is_some());807 assert!(from_timestamp_opt(0, 999_999_999).is_some());8:H assert!(from_timestamp_opt(0, 1_500_000_000).is_some()); // leap second9K9 assert!(from_timestamp_opt(0, 2_000_000_000).is_none());9<4 assert!(from_timestamp_opt(i64::MAX, 0).is_none());:7:; <    VGT Parses a string with the specified format string and returns a new `NaiveDateTime`.?W?F @&@ @ @AA+A4 let parse_from_str = NaiveDateTime::parse_from_str;A7BG assert_eq!(parse_from_str("2015-09-05 23:56:04", "%Y-%m-%d %H:%M:%S"),BJ^ Ok(NaiveDate::from_ymd_opt(2015, 9, 5).unwrap().and_hms_opt(23, 56, 4).unwrap()));BaI assert_eq!(parse_from_str("5sep2015pm012345.6789", "%d%b%Y%p%I%M%S%.f"),CLn Ok(NaiveDate::from_ymd_opt(2015, 9, 5).unwrap().and_hms_micro_opt(13, 23, 45, 678_900).unwrap()));DqEE. Offset is ignored for the purpose of parsing.E1EE* # use chrono::{NaiveDateTime, NaiveDate};E-6 # let parse_from_str = NaiveDateTime::parse_from_str;F9FQ` Ok(NaiveDate::from_ymd_opt(2014, 5, 17).unwrap().and_hms_opt(12, 34, 56).unwrap()));GcHHV [Leap seconds](./struct.NaiveTime.html#leap-second-handling) are correctly handled byHY; treating any time of the form `hh:mm:60` as a leap second.I>I (This equally applies to the formatting, so the round trip is possible.)ILJJJ-J9N assert_eq!(parse_from_str("2015-07-01 08:59:60.123", "%Y-%m-%d %H:%M:%S%.f"),KQk Ok(NaiveDate::from_ymd_opt(2015, 7, 1).unwrap().and_hms_milli_opt(8, 59, 59, 1_123).unwrap()));KnLL( Missing seconds are assumed to be zero,L+D but out-of-bound times or insufficient fields are errors otherwise.MGMNN-N9< assert_eq!(parse_from_str("94/9/4 7:15", "%y/%m/%d %H:%M"),N?] Ok(NaiveDate::from_ymd_opt(1994, 9, 4).unwrap().and_hms_opt(7, 15, 0).unwrap()));O`P6 assert!(parse_from_str("04m33s", "%Mm%Ss").is_err());P9> assert!(parse_from_str("94/9/4 12", "%y/%m/%d %H").is_err());PAD assert!(parse_from_str("94/9/4 17:60", "%y/%m/%d %H:%M").is_err());QGJ assert!(parse_from_str("94/9/4 24:00:00", "%y/%m/%d %H:%M:%S").is_err());QMRRRRSS # use chrono::NaiveDateTime;S S93 let fmt = "%Y-%m-%d %H:%M:%S = UNIX timestamp %s";T6X assert!(parse_from_str("2001-09-09 01:46:39 = UNIX timestamp 999999999", fmt).is_ok());T[Q assert!(parse_from_str("1970-01-01 00:00:00 = UNIX timestamp 1", fmt).is_err());UTVVV Z Retrieves a date component.XX X XXYYW let dt = NaiveDate::from_ymd_opt(2016, 7, 8).unwrap().and_hms_opt(9, 10, 11).unwrap();YZE assert_eq!(dt.date(), NaiveDate::from_ymd_opt(2016, 7, 8).unwrap());ZHZZZ ] [[ [ [[$ use chrono::{NaiveDate, NaiveTime};['\\ZD assert_eq!(dt.time(), NaiveTime::from_hms_opt(9, 10, 11).unwrap());]G]]^ eN Returns the number of non-leap seconds since the midnight on January 1, 1970.^Q_4 Note that this does *not* account for the timezone!_7U The true "UNIX timestamp" would count seconds since the midnight *UTC* on the epoch._X` ` ````` let dt = NaiveDate::from_ymd_opt(1970, 1, 1).unwrap().and_hms_milli_opt(0, 0, 1, 980).unwrap();ac assert_eq!(dt.timestamp(), 1);a"bW let dt = NaiveDate::from_ymd_opt(2001, 9, 9).unwrap().and_hms_opt(1, 46, 40).unwrap();bZ+ assert_eq!(dt.timestamp(), 1_000_000_000);b.cZ let dt = NaiveDate::from_ymd_opt(1969, 12, 31).unwrap().and_hms_opt(23, 59, 59).unwrap();c] assert_eq!(dt.timestamp(), -1);d#dS let dt = NaiveDate::from_ymd_opt(-1, 1, 1).unwrap().and_hms_opt(0, 0, 0).unwrap();dV* assert_eq!(dt.timestamp(), -62198755200);e-ee e ffq%Q Returns the number of non-leap *milliseconds* since midnight on January 1, 1970.hTiػi7iXj@ Note also that this does reduce the number of years that can bejCF represented from ~584 Billion to ~584 Million. (If this is a problem,jIB please file an issue to let me know what domain needs millisecondkE0 precision over billions of years, I'm curious.)l3l l lllm` let dt = NaiveDate::from_ymd_opt(1970, 1, 1).unwrap().and_hms_milli_opt(0, 0, 1, 444).unwrap();mc n-nb let dt = NaiveDate::from_ymd_opt(2001, 9, 9).unwrap().and_hms_milli_opt(1, 46, 40, 555).unwrap();ne o9oe let dt = NaiveDate::from_ymd_opt(1969, 12, 31).unwrap().and_hms_milli_opt(23, 59, 59, 100).unwrap();oh) assert_eq!(dt.timestamp_millis(), -900);p,qqq z%Q Returns the number of non-leap *microseconds* since midnight on January 1, 1970.rTsػs7sXttCG represented from ~584 Billion to ~584 Thousand. (If this is a problem,uJB please file an issue to let me know what domain needs microseconduE( precision over millennia, I'm curious.)v+v v vvvw` let dt = NaiveDate::from_ymd_opt(1970, 1, 1).unwrap().and_hms_micro_opt(0, 0, 1, 444).unwrap();wc x1xb let dt = NaiveDate::from_ymd_opt(2001, 9, 9).unwrap().and_hms_micro_opt(1, 46, 40, 555).unwrap();xe y=yzz $P Returns the number of non-leap *nanoseconds* since midnight on January 1, 1970.{S|ػ|7|X}ҹ} }}CC represented from ~584 Billion to ~584 years. The dates that can be~FA represented as nanoseconds are between 1677-09-21T00:12:44.0 and~D 2262-04-11T23:47:16.854775804."G (If this is a problem, please file an issue to let me know what domainJ9 needs nanosecond precision over millennia, I'm curious.)<  ( use chrono::{NaiveDate, NaiveDateTime};+ā_ let dt = NaiveDate::from_ymd_opt(1970, 1, 1).unwrap().and_hms_nano_opt(0, 0, 1, 444).unwrap();́b 4a let dt = NaiveDate::from_ymd_opt(2001, 9, 9).unwrap().and_hms_nano_opt(1, 46, 40, 555).unwrap();d݃& const A_BILLION: i64 = 1_000_000_000;)" let nanos = dt.timestamp_nanos();%. assert_eq!(nanos, 1_000_000_000_000_000_555);1  dt, Q NaiveDateTime::from_timestamp(nanos / A_BILLION, (nanos % A_BILLION) as u32)T  ,I Returns the number of milliseconds since the last whole non-leap second.L' The return value ranges from 0 to 999,*O or for [leap seconds](./struct.NaiveTime.html#leap-second-handling), to 1,999.R  Éi let dt = NaiveDate::from_ymd_opt(2016, 7, 8).unwrap().and_hms_nano_opt(9, 10, 11, 123_456_789).unwrap();l/ assert_eq!(dt.timestamp_subsec_millis(), 123);ۊ2k let dt = NaiveDate::from_ymd_opt(2015, 7, 1).unwrap().and_hms_nano_opt(8, 59, 59, 1_234_567_890).unwrap();n1 assert_eq!(dt.timestamp_subsec_millis(), 1_234);4ƌ ,I Returns the number of microseconds since the last whole non-leap second.̍L+ The return value ranges from 0 to 999,999,.S or for [leap seconds](./struct.NaiveTime.html#leap-second-handling), to 1,999,999.؎V  ͏Տl3 assert_eq!(dt.timestamp_subsec_micros(), 123_456);6n5 assert_eq!(dt.timestamp_subsec_micros(), 1_234_567);8 +H Returns the number of nanoseconds since the last whole non-leap second.K/ The return value ranges from 0 to 999,999,999,Ɣ2W or for [leap seconds](./struct.NaiveTime.html#leap-second-handling), to 1,999,999,999.Zܕ  l6 assert_eq!(dt.timestamp_subsec_nanos(), 123_456_789);9n8 assert_eq!(dt.timestamp_subsec_nanos(), 1_234_567_890);ۘ;ә J 7ɚ\ As a part of Chrono's [leap second handling](./struct.NaiveTime.html#leap-second-handling),њ_< the addition assumes that **there is no leap second ever**,?@ except when the `NaiveDateTime` itself represents a leap secondCZ in which case the assumption becomes that **there is exactly a single leap second ever**.] 3  ٢&۝Ğ' let d = from_ymd(2016, 7, 8);!5 let hms = |h, m, s| d.and_hms_opt(h, m, s).unwrap();8> assert_eq!(hms(3, 5, 7).checked_add_signed(Duration::zero()),۟A Some(hms(3, 5, 7)));#B assert_eq!(hms(3, 5, 7).checked_add_signed(Duration::seconds(1)),ɠE Some(hms(3, 5, 8)));#C assert_eq!(hms(3, 5, 7).checked_add_signed(Duration::seconds(-1)),F Some(hms(3, 5, 6)));#J assert_eq!(hms(3, 5, 7).checked_add_signed(Duration::seconds(3600 + 60)),M Some(hms(4, 6, 7)));#G assert_eq!(hms(3, 5, 7).checked_add_signed(Duration::seconds(86_400)),JF Some(from_ymd(2016, 7, 9).and_hms_opt(3, 5, 7).unwrap()));IŤJ let hmsm = |h, m, s, milli| d.and_hms_milli_opt(h, m, s, milli).unwrap();ͤMO assert_eq!(hmsm(3, 5, 7, 980).checked_add_signed(Duration::milliseconds(450)),R& Some(hmsm(3, 5, 8, 430)));) Overflow returns `None`.٦% # use chrono::{Duration, NaiveDate};(b # let hms = |h, m, s| NaiveDate::from_ymd_opt(2016, 7, 8).unwrap().and_hms_opt(h, m, s).unwrap();eR assert_eq!(hms(3, 5, 7).checked_add_signed(Duration::days(1_000_000_000)), None);Uި Leap seconds are handled,C but the addition assumes that it is the only leap second happened.Fߩ()_ # let hmsm = |h, m, s, milli| from_ymd(2016, 7, 8).and_hms_milli_opt(h, m, s, milli).unwrap();Ϊb" let leap = hmsm(3, 5, 59, 1_300);%6 assert_eq!(leap.checked_add_signed(Duration::zero()),߫9) Some(hmsm(3, 5, 59, 1_300)));,B assert_eq!(leap.checked_add_signed(Duration::milliseconds(-500)),άE' Some(hmsm(3, 5, 59, 800)));*A assert_eq!(leap.checked_add_signed(Duration::milliseconds(500)),ǭD) Some(hmsm(3, 5, 59, 1_800)));,A assert_eq!(leap.checked_add_signed(Duration::milliseconds(800)),D& Some(hmsm(3, 6, 0, 100)));); assert_eq!(leap.checked_add_signed(Duration::seconds(10)),>& Some(hmsm(3, 6, 9, 300)));)< assert_eq!(leap.checked_add_signed(Duration::seconds(-10)),?' Some(hmsm(3, 5, 50, 300)));*7 assert_eq!(leap.checked_add_signed(Duration::days(1)),:R Some(from_ymd(2016, 7, 9).and_hms_milli_opt(3, 5, 59, 300).unwrap()));۱UȲ E 5 ƶ3  ɷ use std::str::FromStr;շ0 use chrono::{Months, NaiveDate, NaiveDateTime};3 O NaiveDate::from_ymd_opt(2014, 1, 1).unwrap().and_hms_opt(1, 0, 0).unwrap()ȸR- .checked_add_months(Months::new(1)),0U Some(NaiveDate::from_ymd_opt(2014, 2, 1).unwrap().and_hms_opt(1, 0, 0).unwrap())ԹX  ĺغRE .checked_add_months(Months::new(core::i32::MAX as u32 + 1)),H   J Ƚ>_? the subtraction assumes that **there is no leap second ever**,BC] 3  ٢&۝'!8> assert_eq!(hms(3, 5, 7).checked_sub_signed(Duration::zero()),A#B assert_eq!(hms(3, 5, 7).checked_sub_signed(Duration::seconds(1)),E#C assert_eq!(hms(3, 5, 7).checked_sub_signed(Duration::seconds(-1)),F#J assert_eq!(hms(3, 5, 7).checked_sub_signed(Duration::seconds(3600 + 60)),M Some(hms(2, 4, 7)));#G assert_eq!(hms(3, 5, 7).checked_sub_signed(Duration::seconds(86_400)),JF Some(from_ymd(2016, 7, 7).and_hms_opt(3, 5, 7).unwrap()));IMO assert_eq!(hmsm(3, 5, 7, 450).checked_sub_signed(Duration::milliseconds(670)),R& Some(hmsm(3, 5, 6, 780)));)(eR assert_eq!(hms(3, 5, 7).checked_sub_signed(Duration::days(1_000_000_000)), None);UF but the subtraction assumes that it is the only leap second happened.I()b%6 assert_eq!(leap.checked_sub_signed(Duration::zero()),9,A assert_eq!(leap.checked_sub_signed(Duration::milliseconds(200)),D) Some(hmsm(3, 5, 59, 1_100)));,A assert_eq!(leap.checked_sub_signed(Duration::milliseconds(500)),D*; assert_eq!(leap.checked_sub_signed(Duration::seconds(60)),>& Some(hmsm(3, 5, 0, 300)));)7 assert_eq!(leap.checked_sub_signed(Duration::days(1)),:Q Some(from_ymd(2016, 7, 7).and_hms_milli_opt(3, 6, 0, 300).unwrap()));T E < 3  3 R- .checked_sub_months(Months::new(1)),0V Some(NaiveDate::from_ymd_opt(2013, 12, 1).unwrap().and_hms_opt(1, 0, 0).unwrap())Y  RH   9C Add a duration in [`Days`] to the date part of the `NaiveDateTime`F ? 9J Subtract a duration in [`Days`] from the date part of the `NaiveDateTime`M ? EB Subtracts another `NaiveDateTime` from the current date and time.E /_BL except when any of the `NaiveDateTime`s themselves represents a leap secondO* in which case the assumption becomes that-8 **there are exactly one (or two) leap second(s) ever**.;  ٢&۝'!c assert_eq!(d.and_hms_opt(3, 5, 7).unwrap().signed_duration_since(d.and_hms_opt(2, 4, 6).unwrap()),f. Duration::seconds(3600 + 60 + 1));1( // July 8 is 190th day in the year 2016+ let d0 = from_ymd(2016, 1, 1);"o assert_eq!(d.and_hms_milli_opt(0, 7, 6, 500).unwrap().signed_duration_since(d0.and_hms_opt(0, 0, 0).unwrap()),rX Duration::seconds(189 * 86_400 + 7 * 60 + 6) + Duration::milliseconds(500));[; Leap seconds are handled, but the subtraction assumes that>+ there were no other leap seconds happened..()P let leap = from_ymd(2015, 6, 30).and_hms_milli_opt(23, 59, 59, 1_500).unwrap();S] assert_eq!(leap.signed_duration_since(from_ymd(2015, 6, 30).and_hms_opt(23, 0, 0).unwrap()),`C Duration::seconds(3600) + Duration::milliseconds(500));F[ assert_eq!(from_ymd(2015, 7, 1).and_hms_opt(1, 0, 0).unwrap().signed_duration_since(leap),^C Duration::seconds(3600) - Duration::milliseconds(500));F Ӽ KL Otherwise it is the same as the ordinary [`format`](#method.format) method.O2ηN  03 let fmt = StrftimeItems::new("%Y-%m-%d %H:%M:%S");6W let dt = NaiveDate::from_ymd_opt(2015, 9, 5).unwrap().and_hms_opt(23, 56, 4).unwrap();ZR assert_eq!(dt.format_with_items(fmt.clone()).to_string(), "2015-09-05 23:56:04");UR assert_eq!(dt.format("%Y-%m-%d %H:%M:%S").to_string(), "2015-09-05 23:56:04");UT2= # let fmt = StrftimeItems::new("%Y-%m-%d %H:%M:%S").clone();@Y # let dt = NaiveDate::from_ymd_opt(2015, 9, 5).unwrap().and_hms_opt(23, 56, 4).unwrap();\M assert_eq!(format!("{}", dt.format_with_items(fmt)), "2015-09-05 23:56:04");P      5         ʌ       с(     J ހHF &#тI9݃><@?K† ʆ ܆ZO assert_eq!(dt.format("%Y-%m-%d %H:%M:%S").to_string(), "2015-09-05 23:56:04");RV assert_eq!(dt.format("around %l %p on %b %-d").to_string(), "around 11 PM on Sep 5");͈YTֲ͊\R assert_eq!(format!("{}", dt.format("%Y-%m-%d %H:%M:%S")), "2015-09-05 23:56:04");UY assert_eq!(format!("{}", dt.format("around %l %p on %b %-d")), "around 11 PM on Sep 5");\ɫ      5 SD Converts the `NaiveDateTime` into the timezone-aware `DateTime`G) with the provided timezone, if possible.,O This can fail in cases where the local time represented by the `NaiveDateTime`RR is not a valid local timestamp in the target timezone due to an offset transitionUF for example if the target timezone had a change from +00:00 to +01:00ΑIJ occuring at 2015-09-05 22:59:59, then a local time of 2015-09-05 23:56:04MS could never occur. Similarly, if the offset transitioned in the opposite directionVR then there would be two local times of 2015-09-05 23:56:04, one at +00:00 and oneɓU at +01:00.  Дؔ use chrono::{NaiveDate, Utc};!x let dt = NaiveDate::from_ymd_opt(2015, 9, 5).unwrap().and_hms_opt(23, 56, 4).unwrap().and_local_timezone(Utc).unwrap();{ assert_eq!(dt.timezone(), Utc);#ږ ̖ Ж  ̖̖))L Returns the year number in the [calendar date](./index.html#calendar-date).יO) See also the [`NaiveDate::year`] method.,  2 use chrono::{NaiveDate, NaiveDateTime, Datelike};5̛h let dt: NaiveDateTime = NaiveDate::from_ymd_opt(2015, 9, 25).unwrap().and_hms_opt(12, 34, 56).unwrap();ԛkĜ  -)P See also the [`NaiveDate::month`](./struct.NaiveDate.html#method.month) method.S  5k assert_eq!(dt.month(), 9); ʥ-)ʢR See also the [`NaiveDate::month0`](./struct.NaiveDate.html#method.month0) method.ҢU  ƣΣڣ5k assert_eq!(dt.month0(), 8);ͥԥ -ĦTL See also the [`NaiveDate::day`](./struct.NaiveDate.html#method.day) method.O  5k assert_eq!(dt.day(), 25);٩ ݮϪ-TN See also the [`NaiveDate::day0`](./struct.NaiveDate.html#method.day0) method.Q Ȭ ڬ5k assert_eq!(dt.day0(), 24);î ,ʯүST See also the [`NaiveDate::ordinal`](./struct.NaiveDate.html#method.ordinal) method.W  5k assert_eq!(dt.ordinal(), 268);" ,SV See also the [`NaiveDate::ordinal0`](./struct.NaiveDate.html#method.ordinal0) method.Y  5жضk assert_eq!(dt.ordinal0(), 267);ȷ# θT See also the [`NaiveDate::weekday`](./struct.NaiveDate.html#method.weekday) method.Wӹ ۹ ; use chrono::{NaiveDate, NaiveDateTime, Datelike, Weekday};>ĺ̺k+ ڼݼ 7: Makes a new `NaiveDateTime` with the year number changed.=D Returns `None` when the resulting `NaiveDateTime` would be invalid.G. See also the [`NaiveDate::with_year`] method.1  5޿kv assert_eq!(dt.with_year(2016), Some(NaiveDate::from_ymd_opt(2016, 9, 25).unwrap().and_hms_opt(12, 34, 56).unwrap()));yv assert_eq!(dt.with_year(-308), Some(NaiveDate::from_ymd_opt(-308, 9, 25).unwrap().and_hms_opt(12, 34, 56).unwrap()));y         9M Makes a new `NaiveDateTime` with the month number (starting from 1) changed.PG/ See also the [`NaiveDate::with_month`] method.2  5h let dt: NaiveDateTime = NaiveDate::from_ymd_opt(2015, 9, 30).unwrap().and_hms_opt(12, 34, 56).unwrap();kv assert_eq!(dt.with_month(10), Some(NaiveDate::from_ymd_opt(2015, 10, 30).unwrap().and_hms_opt(12, 34, 56).unwrap()));y4 assert_eq!(dt.with_month(13), None); // no month 1376 assert_eq!(dt.with_month(2), None); // no February 309     ;M Makes a new `NaiveDateTime` with the month number (starting from 0) changed.PG0 See also the [`NaiveDate::with_month0`] method.3  5kv assert_eq!(dt.with_month0(9), Some(NaiveDate::from_ymd_opt(2015, 10, 30).unwrap().and_hms_opt(12, 34, 56).unwrap()));y5 assert_eq!(dt.with_month0(12), None); // no month 1387 assert_eq!(dt.with_month0(1), None); // no February 30:     5M Makes a new `NaiveDateTime` with the day of month (starting from 1) changed.PG- See also the [`NaiveDate::with_day`] method.0  5g let dt: NaiveDateTime = NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().and_hms_opt(12, 34, 56).unwrap();js assert_eq!(dt.with_day(30), Some(NaiveDate::from_ymd_opt(2015, 9, 30).unwrap().and_hms_opt(12, 34, 56).unwrap()));v6 assert_eq!(dt.with_day(31), None); // no September 319    7M Makes a new `NaiveDateTime` with the day of month (starting from 0) changed.PG. See also the [`NaiveDate::with_day0`] method.1  5jt assert_eq!(dt.with_day0(29), Some(NaiveDate::from_ymd_opt(2015, 9, 30).unwrap().and_hms_opt(12, 34, 56).unwrap()));w7 assert_eq!(dt.with_day0(30), None); // no September 31:     =L Makes a new `NaiveDateTime` with the day of year (starting from 1) changed.OG1 See also the [`NaiveDate::with_ordinal`] method.4  5j assert_eq!(dt.with_ordinal(60),#a Some(NaiveDate::from_ymd_opt(2015, 3, 1).unwrap().and_hms_opt(12, 34, 56).unwrap()));dB assert_eq!(dt.with_ordinal(366), None); // 2015 had only 365 daysEg let dt: NaiveDateTime = NaiveDate::from_ymd_opt(2016, 9, 8).unwrap().and_hms_opt(12, 34, 56).unwrap();j#b Some(NaiveDate::from_ymd_opt(2016, 2, 29).unwrap().and_hms_opt(12, 34, 56).unwrap()));e! assert_eq!(dt.with_ordinal(366),$c Some(NaiveDate::from_ymd_opt(2016, 12, 31).unwrap().and_hms_opt(12, 34, 56).unwrap()));f     ?L Makes a new `NaiveDateTime` with the day of year (starting from 0) changed.OG2 See also the [`NaiveDate::with_ordinal0`] method.5  5j! assert_eq!(dt.with_ordinal0(59),$ādC assert_eq!(dt.with_ordinal0(365), None); // 2015 had only 365 daysFj؉$e" assert_eq!(dt.with_ordinal0(365),%f     & Returns the hour number from 0 to 23.)) See also the [`NaiveTime::hour`] method.,  2 use chrono::{NaiveDate, NaiveDateTime, Timelike};5r let dt: NaiveDateTime = NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().and_hms_milli_opt(12, 34, 56, 789).unwrap();u assert_eq!(dt.hour(), 12); ( Returns the minute number from 0 to 59.++ See also the [`NaiveTime::minute`] method..  5u assert_eq!(dt.minute(), 34);  ( Returns the second number from 0 to 59.++ See also the [`NaiveTime::second`] method..  5u  C Returns the number of nanoseconds since the whole non-leap second.F9 The range from 1,000,000,000 to 1,999,999,999 represents<A the [leap second](./struct.NaiveTime.html#leap-second-handling).D/ See also the [`NaiveTime::nanosecond`] method.2  5ʀҀu* assert_eq!(dt.nanosecond(), 789_000_000);́-  7: Makes a new `NaiveDateTime` with the hour number changed.=G. See also the [`NaiveTime::with_hour`] method.1  ΄ք5u assert_eq!(dt.with_hour(7),k Some(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().and_hms_milli_opt(7, 34, 56, 789).unwrap()));†n$ assert_eq!(dt.with_hour(24), None);'  ۈ   8< Makes a new `NaiveDateTime` with the minute number changed.?҉ډG See also the# [`NaiveTime::with_minute`] method.Ê&  5֋ދu assert_eq!(dt.with_minute(45),،"l Some(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().and_hms_milli_opt(12, 45, 56, 789).unwrap()));o& assert_eq!(dt.with_minute(60), None);) ʎ    8< Makes a new `NaiveDateTime` with the second number changed.Џ?G Returns `None` when the resulting `NaiveDateTime` would be invalid. AsJ> with the [`NaiveDateTime::second`] method, the input range isA restricted to 0 through 59.Ց0 See also the [`NaiveTime::with_second`] method.ݑ3  Ò5u assert_eq!(dt.with_second(17),"l Some(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().and_hms_milli_opt(12, 34, 17, 789).unwrap()));o& assert_eq!(dt.with_second(60), None);)ȕ  Ė   =V Makes a new `NaiveDateTime` with nanoseconds since the whole non-leap second changed.Y՗ݗG2 As with the [`NaiveDateTime::nanosecond`] method,5; the input range can exceed 1,000,000,000 for leap seconds.>4 See also the [`NaiveTime::with_nanosecond`] method.7  5Қښu, assert_eq!(dt.with_nanosecond(333_333_333),ԛ/s Some(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().and_hms_nano_opt(12, 34, 56, 333_333_333).unwrap()));v= assert_eq!(dt.with_nanosecond(1_333_333_333), // leap second@u Some(NaiveDate::from_ymd_opt(2015, 9, 8).unwrap().and_hms_nano_opt(12, 34, 56, 1_333_333_333).unwrap()));ȝx5 assert_eq!(dt.with_nanosecond(2_000_000_000), None);Ş8    'M An addition of `Duration` to `NaiveDateTime` yields another `NaiveDateTime`.P_?C]УK Panics on underflow or overflow. Use [`NaiveDateTime::checked_add_signed`]ԣN to detect that.  ɤͤ٢դ&۝'!Υ8G assert_eq!(hms(3, 5, 7) + Duration::zero(), hms(3, 5, 7));JG assert_eq!(hms(3, 5, 7) + Duration::seconds(1), hms(3, 5, 8));ҦJG assert_eq!(hms(3, 5, 7) + Duration::seconds(-1), hms(3, 5, 6));JG assert_eq!(hms(3, 5, 7) + Duration::seconds(3600 + 60), hms(4, 6, 7));J5 assert_eq!(hms(3, 5, 7) + Duration::seconds(86_400),8@ from_ymd(2016, 7, 9).and_hms_opt(3, 5, 7).unwrap());C/ assert_eq!(hms(3, 5, 7) + Duration::days(365),2@ from_ymd(2017, 7, 8).and_hms_opt(3, 5, 7).unwrap());CMR assert_eq!(hmsm(3, 5, 7, 980) + Duration::milliseconds(450), hmsm(3, 5, 8, 430));Uϫ׫۫FĬ̬()b%H assert_eq!(leap + Duration::zero(), hmsm(3, 5, 59, 1_300));KF assert_eq!(leap + Duration::milliseconds(-500), hmsm(3, 5, 59, 800));IH assert_eq!(leap + Duration::milliseconds(500), hmsm(3, 5, 59, 1_800));KE assert_eq!(leap + Duration::milliseconds(800), hmsm(3, 6, 0, 100));HE assert_eq!(leap + Duration::seconds(10), hmsm(3, 6, 9, 300));ӰHF assert_eq!(leap + Duration::seconds(-10), hmsm(3, 5, 50, 300));I% assert_eq!(leap + Duration::days(1),(L from_ymd(2016, 7, 9).and_hms_milli_opt(3, 5, 59, 300).unwrap());O߲ ų/ȳ մ-*  " )S An addition of months to `NaiveDateTime` clamped to valid days in resulting month.Vҹ 7  : use chrono::{Duration, NaiveDateTime, Months, NaiveDate};=߸ a NaiveDate::from_ymd_opt(2014, 1, 1).unwrap().and_hms_opt(1, 0, 0).unwrap() + Months::new(1),dO NaiveDate::from_ymd_opt(2014, 2, 1).unwrap().and_hms_opt(1, 0, 0).unwrap()R ں b NaiveDate::from_ymd_opt(2014, 1, 1).unwrap().and_hms_opt(0, 2, 0).unwrap() + Months::new(11),eP NaiveDate::from_ymd_opt(2014, 12, 1).unwrap().and_hms_opt(0, 2, 0).unwrap()S  Ƽb NaiveDate::from_ymd_opt(2014, 1, 1).unwrap().and_hms_opt(0, 0, 3).unwrap() + Months::new(12),ڼeO NaiveDate::from_ymd_opt(2015, 1, 1).unwrap().and_hms_opt(0, 0, 3).unwrap()ĽR  b NaiveDate::from_ymd_opt(2014, 1, 1).unwrap().and_hms_opt(0, 0, 4).unwrap() + Months::new(13),eO NaiveDate::from_ymd_opt(2015, 2, 1).unwrap().and_hms_opt(0, 0, 4).unwrap()R  b NaiveDate::from_ymd_opt(2014, 1, 31).unwrap().and_hms_opt(0, 5, 0).unwrap() + Months::new(1),eP NaiveDate::from_ymd_opt(2014, 2, 28).unwrap().and_hms_opt(0, 5, 0).unwrap()S  b NaiveDate::from_ymd_opt(2020, 1, 31).unwrap().and_hms_opt(6, 0, 0).unwrap() + Months::new(1),eP NaiveDate::from_ymd_opt(2020, 2, 29).unwrap().and_hms_opt(6, 0, 0).unwrap()S  'Q A subtraction of `Duration` from `NaiveDateTime` yields another `NaiveDateTime`.T=_?C]K Panics on underflow or overflow. Use [`NaiveDateTime::checked_sub_signed`]N  ٢&۝'!8G assert_eq!(hms(3, 5, 7) - Duration::zero(), hms(3, 5, 7));JG assert_eq!(hms(3, 5, 7) - Duration::seconds(1), hms(3, 5, 6));JG assert_eq!(hms(3, 5, 7) - Duration::seconds(-1), hms(3, 5, 8));JG assert_eq!(hms(3, 5, 7) - Duration::seconds(3600 + 60), hms(2, 4, 7));J5 assert_eq!(hms(3, 5, 7) - Duration::seconds(86_400),8@ from_ymd(2016, 7, 7).and_hms_opt(3, 5, 7).unwrap());C/ assert_eq!(hms(3, 5, 7) - Duration::days(365),2@ from_ymd(2015, 7, 9).and_hms_opt(3, 5, 7).unwrap());CMR assert_eq!(hmsm(3, 5, 7, 450) - Duration::milliseconds(670), hmsm(3, 5, 6, 780));UԒI()b%G assert_eq!(leap - Duration::zero(), hmsm(3, 5, 59, 1_300));JG assert_eq!(leap - Duration::milliseconds(200), hmsm(3, 5, 59, 1_100));JE assert_eq!(leap - Duration::milliseconds(500), hmsm(3, 5, 59, 800));HD assert_eq!(leap - Duration::seconds(60), hmsm(3, 5, 0, 300));G% assert_eq!(leap - Duration::days(1),(K from_ymd(2016, 7, 7).and_hms_milli_opt(3, 6, 0, 300).unwrap());N / -*  "W A subtraction of Months from `NaiveDateTime` clamped to valid days in resulting month.Zҹ 7  = g NaiveDate::from_ymd_opt(2014, 01, 01).unwrap().and_hms_opt(01, 00, 00).unwrap() - Months::new(11),jT NaiveDate::from_ymd_opt(2013, 02, 01).unwrap().and_hms_opt(01, 00, 00).unwrap()W  g NaiveDate::from_ymd_opt(2014, 01, 01).unwrap().and_hms_opt(00, 02, 00).unwrap() - Months::new(12),jT NaiveDate::from_ymd_opt(2013, 01, 01).unwrap().and_hms_opt(00, 02, 00).unwrap()W  g NaiveDate::from_ymd_opt(2014, 01, 01).unwrap().and_hms_opt(00, 00, 03).unwrap() - Months::new(13),jT NaiveDate::from_ymd_opt(2012, 12, 01).unwrap().and_hms_opt(00, 00, 03).unwrap()W  ) )E /_BO-Ρ;Q The implementation is a wrapper around [`NaiveDateTime::signed_duration_since`].T  ٢&۝'!q assert_eq!(d.and_hms_opt(3, 5, 7).unwrap() - d.and_hms_opt(2, 4, 6).unwrap(), Duration::seconds(3600 + 60 + 1));t+"Z assert_eq!(d.and_hms_milli_opt(0, 7, 6, 500).unwrap() - d0.and_hms_opt(0, 0, 0).unwrap(),][I Leap seconds are handled, but the subtraction assumes that no other leapL seconds happened.()ҨSH assert_eq!(leap - from_ymd(2015, 6, 30).and_hms_opt(23, 0, 0).unwrap(),KFF assert_eq!(from_ymd(2015, 7, 1).and_hms_opt(1, 0, 0).unwrap() - leap,IѫF  /   (   ( !B The `Debug` output of the naive date and time `dt` is the same asE@ [`dt.format("%Y-%m-%dT%H:%M:%S%.f")`](crate::format::strftime).CMF It should be noted that, for leap seconds not on the minute boundary,II it may print a representation not distinguishable from non-leap seconds.LI This doesn't matter in practice, since such leap seconds never happened.L5 (By the time of the first leap second on 1972-06-30,8U every time zone offset around the world has standardized to the 5-minute alignment.)X  Y let dt = NaiveDate::from_ymd_opt(2016, 11, 15).unwrap().and_hms_opt(7, 39, 24).unwrap();\8 assert_eq!(format!("{:?}", dt), "2016-11-15T07:39:24");; Leap seconds may also be used."f let dt = NaiveDate::from_ymd_opt(2015, 6, 30).unwrap().and_hms_milli_opt(23, 59, 59, 1_500).unwrap();i< assert_eq!(format!("{:?}", dt), "2015-06-30T23:59:60.500");?4 ą#D The `Display` output of the naive date and time `dt` is the same asG@ [`dt.format("%Y-%m-%d %H:%M:%S%.f")`](crate::format::strftime).CILLր8X  \6 assert_eq!(format!("{}", dt), "2016-11-15 07:39:24");9ăȃ"i: assert_eq!(format!("{}", dt), "2015-06-30 23:59:60.500");=4 #= Parsing a `str` into a `NaiveDateTime` uses the same format,@B [`%Y-%m-%dT%H:%M:%S%.f`](crate::format::strftime), as in `Debug`.E  +ψX let dt = NaiveDate::from_ymd_opt(2015, 9, 18).unwrap().and_hms_opt(23, 56, 4).unwrap();ӈ[D assert_eq!("2015-09-18T23:56:04".parse::(), Ok(dt));Gt let dt = NaiveDate::from_ymd_opt(12345, 6, 7).unwrap().and_hms_milli_opt(7, 59, 59, 1_500).unwrap(); // leap secondwE assert_eq!("+12345-6-7T7:59:60.5".parse::(), Ok(dt));H2 assert!("foo".parse::().is_err());5Č2njӌ Ҝ Ӗ: The default value for a NaiveDateTime is one with epoch 0=* that is, 1st of January 1970 at 00:00:00.-   ӕ- let default_date = NaiveDateTime::default();ו0? assert_eq!(default_date, NaiveDateTime::from_timestamp(0, 0));B˖   !   # # &  ,3,  /A/  02(1111 112  373 4!44 5)5 5 6%7 7 8848 8 >>>>??? ??,?  ?\+\  \wxJx  y+z  {"| | }#} } ~=~  ~ '  '  6  "  څ  ˆن ކ ɇ4̇ Ї S͌  Ɏ(׎  !  :     6  ǗC՗   ę ҙ ؙ 4   d j t+      =    ž Ș+ Returns the year number for this ISO week..  /7 let d = NaiveDate::from_isoywd(2015, 1, Weekday::Mon);:' assert_eq!(d.iso_week().year(), 2015);*; This year number might not match the calendar year number.> Continuing the example.... # use chrono::{NaiveDate, Datelike, Weekday};19 # let d = NaiveDate::from_isoywd(2015, 1, Weekday::Mon);< assert_eq!(d.year(), 2014);? assert_eq!(d, NaiveDate::from_ymd_opt(2014, 12, 29).unwrap());B  - Returns the ISO week number starting from 1.0P The return value ranges from 1 to 53. (The last week of year differs by years.)S  /8 let d = NaiveDate::from_isoywd(2015, 15, Weekday::Mon);;% assert_eq!(d.iso_week().week(), 15);(  - Returns the ISO week number starting from 0.0P The return value ranges from 0 to 52. (The last week of year differs by years.)S  /;& assert_eq!(d.iso_week().week0(), 14);)  $6 The `Debug` output of the ISO week `w` is the same as96 [`d.format("%G-W%V")`](../format/strftime/index.html)91 where `d` is any `NaiveDate` value in that week.4  &d assert_eq!(format!("{:?}", NaiveDate::from_ymd_opt(2015, 9, 5).unwrap().iso_week()), "2015-W36");gd assert_eq!(format!("{:?}", NaiveDate::from_ymd_opt( 0, 1, 3).unwrap().iso_week()), "0000-W01");gd assert_eq!(format!("{:?}", NaiveDate::from_ymd_opt(9999, 12, 31).unwrap().iso_week()), "9999-W52"); g!!!O!!!(g assert_eq!(format!("{:?}", NaiveDate::from_ymd_opt( 0, 1, 2).unwrap().iso_week()), "-0001-W52");"jg assert_eq!(format!("{:?}", NaiveDate::from_ymd_opt(10000, 12, 31).unwrap().iso_week()), "+10000-W52");#j# Ǥ$4$ $  s s v   w z  {           q5   +                                             5   V                    *                    E  H; 6 Makes a new `NaiveTime` from hour, minute and second.E9 F 9 No [leap second](#leap-second-handling) is allowed here;F< H use `NaiveTime::from_hms_*` methods with a subsecond parameter instead.FK G  G1 G G G H   H H  H H H H use `from_hms_opt()` insteadH GF H    OG ʽI9 J J< L use `NaiveTime::from_hms_*_opt` methods with a subsecond parameter instead.JO K  K9 K  L L L  use chrono::NaiveTime;L L , let from_hms_opt = NaiveTime::from_hms_opt;L/ M * assert!(from_hms_opt(0, 0, 0).is_some());M- - assert!(from_hms_opt(23, 59, 59).is_some());M0 + assert!(from_hms_opt(24, 0, 0).is_none());M. , assert!(from_hms_opt(23, 60, 0).is_none());N/ - assert!(from_hms_opt(23, 59, 60).is_none());N0 O O   SM C Makes a new `NaiveTime` from hour, minute, second and millisecond.PF Q Q) @ in order to represent the [leap second](#leap-second-handling).QC R  R> R R R S   R R  R R R R "use `from_hms_milli_opt()` insteadR$ RL S    [Y TF U U) UC V  VF V  V W W W W 3 let from_hmsm_opt = NaiveTime::from_hms_milli_opt;W6 X . assert!(from_hmsm_opt(0, 0, 0, 0).is_some());X1 3 assert!(from_hmsm_opt(23, 59, 59, 999).is_some());X6 U assert!(from_hmsm_opt(23, 59, 59, 1_999).is_some()); // a leap second after 23:59:59XX / assert!(from_hmsm_opt(24, 0, 0, 0).is_none());Y2 0 assert!(from_hmsm_opt(23, 60, 0, 0).is_none());Z3 1 assert!(from_hmsm_opt(23, 59, 60, 0).is_none());Z4 5 assert!(from_hmsm_opt(23, 59, 59, 2_000).is_none());[8 [ [   \           ԙۭ͈ ͈ ͈ `M C Makes a new `NaiveTime` from hour, minute, second and microsecond.]F ^ ^- ^C _  _> _ _ _ `   _ _  _ _ _ ` "use `from_hms_micro_opt()` instead`$ _L `    hY aF b b- bC c  cF d  d d d d d 3 let from_hmsu_opt = NaiveTime::from_hms_micro_opt;d6 e . assert!(from_hmsu_opt(0, 0, 0, 0).is_some());e1 7 assert!(from_hmsu_opt(23, 59, 59, 999_999).is_some());e: Y assert!(from_hmsu_opt(23, 59, 59, 1_999_999).is_some()); // a leap second after 23:59:59f\ / assert!(from_hmsu_opt(24, 0, 0, 0).is_none());f2 0 assert!(from_hmsu_opt(23, 60, 0, 0).is_none());g3 1 assert!(from_hmsu_opt(23, 59, 60, 0).is_none());g4 9 assert!(from_hmsu_opt(23, 59, 59, 2_000_000).is_none());h< h i   j        mK B Makes a new `NaiveTime` from hour, minute, second and nanosecond.jE k ܉k0 kC l  l= l l l m   l l  l l m m !use `from_hms_nano_opt()` insteadm# lK m    vW nE o ܉o0 oC p  pE q  q q q q q 2 let from_hmsn_opt = NaiveTime::from_hms_nano_opt;q5 r . assert!(from_hmsn_opt(0, 0, 0, 0).is_some());r1 ; assert!(from_hmsn_opt(23, 59, 59, 999_999_999).is_some());r> ] assert!(from_hmsn_opt(23, 59, 59, 1_999_999_999).is_some()); // a leap second after 23:59:59s` / assert!(from_hmsn_opt(24, 0, 0, 0).is_none());t2 0 assert!(from_hmsn_opt(23, 60, 0, 0).is_none());t3 1 assert!(from_hmsn_opt(23, 59, 60, 0).is_none());t4 = assert!(from_hmsn_opt(23, 59, 59, 2_000_000_000).is_none());u@ u v   {H R Makes a new `NaiveTime` from the number of seconds since midnight and nanosecond.xU y ܉y0 yC z 7 Panics on invalid number of seconds and/or nanosecond.z: z z z {   z z  z z z { 2use `from_num_seconds_from_midnight_opt()` instead{4 z\ {    T |U } ܉}0 ~C ~ ? Returns `None` on invalid number of seconds and/or nanosecond.~B        D let from_nsecs_opt = NaiveTime::from_num_seconds_from_midnight_opt;G ˀ ) assert!(from_nsecs_opt(0, 0).is_some());Ӏ, 7 assert!(from_nsecs_opt(86399, 999_999_999).is_some());: Y assert!(from_nsecs_opt(86399, 1_999_999_999).is_some()); // a leap second after 23:59:59Á\ . assert!(from_nsecs_opt(86_400, 0).is_none());1 9 assert!(from_nsecs_opt(86399, 2_000_000_000).is_none());ڂ<  "   C P Parses a string with the specified format string and returns a new `NaiveTime`.S F  &        0 let parse_from_str = NaiveTime::parse_from_str;3  3 assert_eq!(parse_from_str("23:56:04", "%H:%M:%S"),6 = Ok(NaiveTime::from_hms_opt(23, 56, 4).unwrap()));@ ; assert_eq!(parse_from_str("pm012345.6789", "%p%I%M%S%.f"),> M Ok(NaiveTime::from_hms_micro_opt(13, 23, 45, 678_900).unwrap()));‰P   7 Date and offset is ignored for the purpose of parsing.:    # use chrono::NaiveTime; 2 # let parse_from_str = NaiveTime::parse_from_str;5 ًQ > Ok(NaiveTime::from_hms_opt(12, 34, 56).unwrap()));A   ? [Leap seconds](#leap-second-handling) are correctly handled byB Ѝ> L    5 : assert_eq!(parse_from_str("08:59:60.123", "%H:%M:%S%.f"),ӏ= J Ok(NaiveTime::from_hms_milli_opt(8, 59, 59, 1_123).unwrap()));M   + ѭG    5 , assert_eq!(parse_from_str("7:15", "%H:%M"),/ < Ok(NaiveTime::from_hms_opt(7, 15, 0).unwrap()));? ޓ 9 . assert!(parse_from_str("12", "%H").is_err());1 4 assert!(parse_from_str("17:60", "%H:%M").is_err());ڔ7 : assert!(parse_from_str("24:00:00", "%H:%M:%S").is_err());= ؕ  R . Here `%H` is for 24-hour clocks, unlike `%I`,Ö1 8 and thus can be independently determined without AM/PM.;   ͗ 5 : assert!(parse_from_str("13:07 AM", "%H:%M %p").is_err());=      N + Adds given `Duration` to the current time,ǚ. ) and also returns the number of *seconds*, : in the integral number of days ignored from the addition.= N (We cannot return `Duration` because it is subject to overflow or underflow.)Q Ü  ˜ ݜ  # use chrono::{Duration, NaiveTime};&  $ let from_hms = NaiveTime::from_hms;' Н J assert_eq!(from_hms(3, 4, 5).overflowing_add_signed(Duration::hours(11)),؝M % (from_hms(14, 4, 5), 0));( J assert_eq!(from_hms(3, 4, 5).overflowing_add_signed(Duration::hours(23)),מM ) (from_hms(2, 4, 5), 86_400));, J assert_eq!(from_hms(3, 4, 5).overflowing_add_signed(Duration::hours(-7)),ڟM + (from_hms(20, 4, 5), -86_400));. ߠ     ѻJ 2 Subtracts given `Duration` from the current time,5 е, = in the integral number of days ignored from the subtraction.@ ƶQ      ʷ&  '  I assert_eq!(from_hms(3, 4, 5).overflowing_sub_signed(Duration::hours(2)),L $ (from_hms(1, 4, 5), 0));' J assert_eq!(from_hms(3, 4, 5).overflowing_sub_signed(Duration::hours(17)),M * (from_hms(10, 4, 5), 86_400));- K assert_eq!(from_hms(3, 4, 5).overflowing_sub_signed(Duration::hours(-22)),N * (from_hms(1, 4, 5), -86_400));-  ػ    A 5 Subtracts another `NaiveTime` from the current time.8 ' Returns a `Duration` within +/- 1 day.*  / ξ E As a part of Chrono's [leap second handling](#leap-second-handling),־H B H except when any of the `NaiveTime`s themselves represents a leap secondK - Ρ;      &  + let from_hmsm = NaiveTime::from_hms_milli;. . let since = NaiveTime::signed_duration_since;1  D assert_eq!(since(from_hmsm(3, 5, 7, 900), from_hmsm(3, 5, 7, 900)),G  Duration::zero());! D assert_eq!(since(from_hmsm(3, 5, 7, 900), from_hmsm(3, 5, 7, 875)),G ( Duration::milliseconds(25));+ D assert_eq!(since(from_hmsm(3, 5, 7, 900), from_hmsm(3, 5, 6, 925)),G ) Duration::milliseconds(975));, D assert_eq!(since(from_hmsm(3, 5, 7, 900), from_hmsm(3, 5, 0, 900)),G " Duration::seconds(7));% D assert_eq!(since(from_hmsm(3, 5, 7, 900), from_hmsm(3, 0, 7, 900)),G ' Duration::seconds(5 * 60));* D assert_eq!(since(from_hmsm(3, 5, 7, 900), from_hmsm(0, 5, 7, 900)),G ) Duration::seconds(3 * 3600));, D assert_eq!(since(from_hmsm(3, 5, 7, 900), from_hmsm(4, 5, 7, 900)),G & Duration::seconds(-3600));) D assert_eq!(since(from_hmsm(3, 5, 7, 900), from_hmsm(2, 4, 6, 800)),G L Duration::seconds(3600 + 60 + 1) + Duration::milliseconds(100));O   > .   % # use chrono::{Duration, NaiveTime};( - # let from_hmsm = NaiveTime::from_hms_milli;0 0 # let since = NaiveTime::signed_duration_since;3 F assert_eq!(since(from_hmsm(3, 0, 59, 1_000), from_hmsm(3, 0, 59, 0)),I " Duration::seconds(1));% F assert_eq!(since(from_hmsm(3, 0, 59, 1_500), from_hmsm(3, 0, 59, 0)),I * Duration::milliseconds(1500));- E assert_eq!(since(from_hmsm(3, 0, 59, 1_000), from_hmsm(3, 0, 0, 0)),H # Duration::seconds(60));& F assert_eq!(since(from_hmsm(3, 0, 0, 0), from_hmsm(2, 59, 59, 1_000)),I % K assert_eq!(since(from_hmsm(3, 0, 59, 1_000), from_hmsm(2, 59, 59, 1_000)),N # Duration::seconds(61));&         6 Formats the time with the specified formatting items.9 O  2 ηN       0  * let fmt = StrftimeItems::new("%H:%M:%S");- 5 let t = NaiveTime::from_hms_opt(23, 56, 4).unwrap();8 F assert_eq!(t.format_with_items(fmt.clone()).to_string(), "23:56:04");I F assert_eq!(t.format("%H:%M:%S").to_string(), "23:56:04");I   T    2 4 # let fmt = StrftimeItems::new("%H:%M:%S").clone();7 7 # let t = NaiveTime::from_hms_opt(23, 56, 4).unwrap();: A assert_eq!(format!("{}", t.format_with_items(fmt)), "23:56:04");D                     5                  ʌ       с(             J 3 Formats the time with the specified format string.6 F  &  # I 9 > <  @ ? K        F let t = NaiveTime::from_hms_nano_opt(23, 56, 4, 12_345_678).unwrap();I : assert_eq!(t.format("%H:%M:%S").to_string(), "23:56:04");= E assert_eq!(t.format("%H:%M:%S%.6f").to_string(), "23:56:04.012345");H ; assert_eq!(t.format("%-I:%M %p").to_string(), "11:56 PM");>   T    H # let t = NaiveTime::from_hms_nano_opt(23, 56, 4, 12_345_678).unwrap();K = assert_eq!(format!("{}", t.format("%H:%M:%S")), "23:56:04");@ H assert_eq!(format!("{}", t.format("%H:%M:%S%.6f")), "23:56:04.012345");K > assert_eq!(format!("{}", t.format("%-I:%M %p")), "11:56 PM");A                     5                        )      # use chrono::{NaiveTime, Timelike};&  A assert_eq!(NaiveTime::from_hms_opt(0, 0, 0).unwrap().hour(), 0);D U assert_eq!(NaiveTime::from_hms_nano_opt(23, 56, 4, 12_345_678).unwrap().hour(), 23);X       +      &  C assert_eq!(NaiveTime::from_hms_opt(0, 0, 0).unwrap().minute(), 0);F W assert_eq!(NaiveTime::from_hms_nano_opt(23, 56, 4, 12_345_678).unwrap().minute(), 56);Z       +      &  C assert_eq!(NaiveTime::from_hms_opt(0, 0, 0).unwrap().second(), 0);F V assert_eq!(NaiveTime::from_hms_nano_opt(23, 56, 4, 12_345_678).unwrap().second(), 4);Y   < This method never returns 60 even when it is a leap second.?  ([Why?](#leap-second-handling))# [ Use the proper [formatting method](#method.format) to get a human-readable representation.^   % # use chrono::{NaiveTime, Timelike};( F let leap = NaiveTime::from_hms_milli_opt(23, 59, 59, 1_000).unwrap();I  assert_eq!(leap.second(), 59);" = assert_eq!(leap.format("%H:%M:%S").to_string(), "23:59:60");@       χF < * the [leap second](#leap-second-handling).ۈ-      &  G assert_eq!(NaiveTime::from_hms_opt(0, 0, 0).unwrap().nanosecond(), 0);J c assert_eq!(NaiveTime::from_hms_nano_opt(23, 56, 4, 12_345_678).unwrap().nanosecond(), 12_345_678);f   < Leap seconds may have seemingly out-of-range return values.? F You can reduce the range with `time.nanosecond() % 1_000_000_000`, orI [ use the proper [formatting method](#method.format) to get a human-readable representation.Ό^   ō( ־I . assert_eq!(leap.nanosecond(), 1_000_000_000);1 K assert_eq!(leap.format("%H:%M:%S%.9f").to_string(), "23:59:60.000000000");N ɏ     3 6 Makes a new `NaiveTime` with the hour number changed.9 ܐ @ Returns `None` when the resulting `NaiveTime` would be invalid.C    Ƒ Α ڑ&  G let dt = NaiveTime::from_hms_nano_opt(23, 56, 4, 12_345_678).unwrap();J ` assert_eq!(dt.with_hour(7), Some(NaiveTime::from_hms_nano_opt(7, 56, 4, 12_345_678).unwrap()));ܒc ē'      י4 8 Makes a new `NaiveTime` with the minute number changed.;  C      & ̗ ԗJ d assert_eq!(dt.with_minute(45), Some(NaiveTime::from_hms_nano_opt(23, 45, 4, 12_345_678).unwrap()));g )  ڙ    4 8 Makes a new `NaiveTime` with the second number changed.ś;  C / As with the [`second`](#method.second) method,՜2 / the input range is restricted to 0 through 59.2 Ý  ˝ ݝ  &  J e assert_eq!(dt.with_second(17), Some(NaiveTime::from_hms_nano_opt(23, 56, 17, 12_345_678).unwrap()));h Ԩ)      9 R Makes a new `NaiveTime` with nanoseconds since the whole non-leap second changed.U ֢ ޢC 7 As with the [`nanosecond`](#method.nanosecond) method,: >    ¤ ʤ ֤&  J ֭إ/ Q Some(NaiveTime::from_hms_nano_opt(23, 56, 4, 333_333_333).unwrap()));T ۰8   : Leap seconds can theoretically follow *any* whole second.= T The following would be a proper leap second at the time zone offset of UTC-00:03:57W O (there are several historical examples comparable to this "non-sense" offset),ԨR  and therefore is allowed. ͩ թ ( I # let dt = NaiveTime::from_hms_nano_opt(23, 56, 4, 12_345_678).unwrap();L . assert_eq!(dt.with_nanosecond(1_333_333_333),ߪ1 S Some(NaiveTime::from_hms_nano_opt(23, 56, 4, 1_333_333_333).unwrap()));V      * ? Returns the number of non-leap seconds past the last midnight.ǭB      &  R assert_eq!(NaiveTime::from_hms_opt(1, 2, 3).unwrap().num_seconds_from_midnight(),U  3723);ɯ e assert_eq!(NaiveTime::from_hms_nano_opt(23, 56, 4, 12_345_678).unwrap().num_seconds_from_midnight(),h  86164);а b assert_eq!(NaiveTime::from_hms_milli_opt(23, 59, 59, 1_000).unwrap().num_seconds_from_midnight(),e  86399);ձ      # Y An addition of `Duration` to `NaiveTime` wraps around and never overflows or underflows.\ < In particular the addition ignores integral number of days.ѳ?  H ޴? < except when the `NaiveTime` itself represents a leap second? ޵]    ζ Ҷ ڶ&  ׌.  ^ assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::zero(), from_hmsm(3, 5, 7, 0));a ^ assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::seconds(1), from_hmsm(3, 5, 8, 0));a ^ assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::seconds(-1), from_hmsm(3, 5, 6, 0));a _ assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::seconds(60 + 4), from_hmsm(3, 6, 11, 0));޹b _ assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::seconds(7*60*60 - 6*60), from_hmsm(9, 59, 7, 0));b _ assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::milliseconds(80), from_hmsm(3, 5, 7, 80));b ` assert_eq!(from_hmsm(3, 5, 7, 950) + Duration::milliseconds(280), from_hmsm(3, 5, 8, 230));c ` assert_eq!(from_hmsm(3, 5, 7, 950) + Duration::milliseconds(-980), from_hmsm(3, 5, 6, 970));c Ͻ ׽  The addition wraps around.۽   ( 0 X assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::seconds(22*60*60), from_hmsm(1, 5, 7, 0));[ Y assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::seconds(-8*60*60), from_hmsm(19, 5, 7, 0));\ X assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::days(800), from_hmsm(3, 5, 7, 0));[   ] Leap seconds are handled, but the addition assumes that it is the only leap second happened.`   ( 0 ' let leap = from_hmsm(3, 5, 59, 1_300);* M assert_eq!(leap + Duration::zero(), from_hmsm(3, 5, 59, 1_300));P K assert_eq!(leap + Duration::milliseconds(-500), from_hmsm(3, 5, 59, 800));N M assert_eq!(leap + Duration::milliseconds(500), from_hmsm(3, 5, 59, 1_800));P J assert_eq!(leap + Duration::milliseconds(800), from_hmsm(3, 6, 0, 100));M J assert_eq!(leap + Duration::seconds(10), from_hmsm(3, 6, 9, 300));M K assert_eq!(leap + Duration::seconds(-10), from_hmsm(3, 5, 50, 300));N K assert_eq!(leap + Duration::days(1), from_hmsm(3, 5, 59, 300));N       +    )  *     # ] A subtraction of `Duration` from `NaiveTime` wraps around and never overflows or underflows.` ? =  H ? ? ]      &  ׌.  ^ assert_eq!(from_hmsm(3, 5, 7, 0) - Duration::zero(), from_hmsm(3, 5, 7, 0));a ^ assert_eq!(from_hmsm(3, 5, 7, 0) - Duration::seconds(1), from_hmsm(3, 5, 6, 0));a ^ assert_eq!(from_hmsm(3, 5, 7, 0) - Duration::seconds(60 + 5), from_hmsm(3, 4, 2, 0));a _ assert_eq!(from_hmsm(3, 5, 7, 0) - Duration::seconds(2*60*60 + 6*60), from_hmsm(0, 59, 7, 0));b ` assert_eq!(from_hmsm(3, 5, 7, 0) - Duration::milliseconds(80), from_hmsm(3, 5, 6, 920));c ` assert_eq!(from_hmsm(3, 5, 7, 950) - Duration::milliseconds(280), from_hmsm(3, 5, 7, 670));c    The subtraction wraps around.!   ( 0 X assert_eq!(from_hmsm(3, 5, 7, 0) - Duration::seconds(8*60*60), from_hmsm(19, 5, 7, 0));[ W assert_eq!(from_hmsm(3, 5, 7, 0) - Duration::days(800), from_hmsm(3, 5, 7, 0));Z   ` Leap seconds are handled, but the subtraction assumes that it is the only leap second happened.c   ( 0 * L assert_eq!(leap - Duration::zero(), from_hmsm(3, 5, 59, 1_300));O L assert_eq!(leap - Duration::milliseconds(200), from_hmsm(3, 5, 59, 1_100));O J assert_eq!(leap - Duration::milliseconds(500), from_hmsm(3, 5, 59, 800));M I assert_eq!(leap - Duration::seconds(60), from_hmsm(3, 5, 0, 300));L I assert_eq!(leap - Duration::days(1), from_hmsm(3, 6, 0, 300));L       +    )  *     ! 8 *  /  H B K - Ρ;  * E [`NaiveTime::signed_duration_since`](#method.signed_duration_since).H      &  ׌.  Q assert_eq!(from_hmsm(3, 5, 7, 900) - from_hmsm(3, 5, 7, 900), Duration::zero());T [ assert_eq!(from_hmsm(3, 5, 7, 900) - from_hmsm(3, 5, 7, 875), Duration::milliseconds(25));^ \ assert_eq!(from_hmsm(3, 5, 7, 900) - from_hmsm(3, 5, 6, 925), Duration::milliseconds(975));_ U assert_eq!(from_hmsm(3, 5, 7, 900) - from_hmsm(3, 5, 0, 900), Duration::seconds(7));X Z assert_eq!(from_hmsm(3, 5, 7, 900) - from_hmsm(3, 0, 7, 900), Duration::seconds(5 * 60));] \ assert_eq!(from_hmsm(3, 5, 7, 900) - from_hmsm(0, 5, 7, 900), Duration::seconds(3 * 3600));_ Y assert_eq!(from_hmsm(3, 5, 7, 900) - from_hmsm(4, 5, 7, 900), Duration::seconds(-3600));\ > assert_eq!(from_hmsm(3, 5, 7, 900) - from_hmsm(2, 4, 6, 800),A O   > .   ( 0 W assert_eq!(from_hmsm(3, 0, 59, 1_000) - from_hmsm(3, 0, 59, 0), Duration::seconds(1));Z @ assert_eq!(from_hmsm(3, 0, 59, 1_500) - from_hmsm(3, 0, 59, 0),C - W assert_eq!(from_hmsm(3, 0, 59, 1_000) - from_hmsm(3, 0, 0, 0), Duration::seconds(60));Z W assert_eq!(from_hmsm(3, 0, 0, 0) - from_hmsm(2, 59, 59, 1_000), Duration::seconds(1));Z E assert_eq!(from_hmsm(3, 0, 59, 1_000) - from_hmsm(2, 59, 59, 1_000),H ٜ&       +     8 The `Debug` output of the naive time `t` is the same as; < [`t.format("%H:%M:%S%.f")`](../format/strftime/index.html).?  M  I L L 8 X        c assert_eq!(format!("{:?}", NaiveTime::from_hms_opt(23, 56, 4).unwrap()), "23:56:04");f g assert_eq!(format!("{:?}", NaiveTime::from_hms_milli_opt(23, 56, 4, 12).unwrap()), "23:56:04.012");j j assert_eq!(format!("{:?}", NaiveTime::from_hms_micro_opt(23, 56, 4, 1234).unwrap()), "23:56:04.001234");m m assert_eq!(format!("{:?}", NaiveTime::from_hms_nano_opt(23, 56, 4, 123456).unwrap()), "23:56:04.000123456");p   "    g assert_eq!(format!("{:?}", NaiveTime::from_hms_milli_opt(6, 59, 59, 1_500).unwrap()), "06:59:60.500");j   4         : The `Display` output of the naive time `t` is the same as= ?  M Ԃ ؂I L L 8 X ΅  ҅     a assert_eq!(format!("{}", NaiveTime::from_hms_opt(23, 56, 4).unwrap()), "23:56:04");d e assert_eq!(format!("{}", NaiveTime::from_hms_milli_opt(23, 56, 4, 12).unwrap()), "23:56:04.012");h h assert_eq!(format!("{}", NaiveTime::from_hms_micro_opt(23, 56, 4, 1234).unwrap()), "23:56:04.001234");هk k assert_eq!(format!("{}", NaiveTime::from_hms_nano_opt(23, 56, 4, 123456).unwrap()), "23:56:04.000123456");ňn   "    e assert_eq!(format!("{}", NaiveTime::from_hms_milli_opt(6, 59, 59, 1_500).unwrap()), "06:59:60.500");h   4      9 Parsing a `str` into a `NaiveTime` uses the same format,< M [`%H:%M:%S%.f`](../format/strftime/index.html), as in `Debug` and `Display`.P       ˍ ύ8 4 assert_eq!("23:56:04".parse::(), Ok(t));7  ëĎI = assert_eq!("23:56:4.012345678".parse::(), Ok(t));@ Ϗ Y let t = NaiveTime::from_hms_nano_opt(23, 59, 59, 1_234_567_890).unwrap(); // leap secondӏ\ = assert_eq!("23:59:60.23456789".parse::(), Ok(t));@  . assert!("foo".parse::().is_err());1   Ց ڑ   .        Ҝ  A The default value for a NaiveTime is midnight, 00:00:00 exactly.D        ) let default_time = NaiveTime::default();×, E assert_eq!(default_time, NaiveTime::from_hms_opt(0, 0, 0).unwrap());H       <    ;       FȰȰ˰հ ̰ ưȰȰ˰հ ̰ ưȰȰ˰հ ̰ ư ȰȰ˰հ ̰ ư  ȰȰ˰հ ̰ ư  ȰȰ˰հ ̰ ư  ȰȰ˰հ ̰ ư D The time zone, which calculates offsets from the local time to UTC.LG< There are four operations provided by the `TimeZone` trait:?: 1. Converting the local `NaiveDateTime` to `DateTime`=8 2. Converting the UTC `NaiveDateTime` to `DateTime`;: 3. Converting `DateTime` to the local `NaiveDateTime`=< 4. Constructing `DateTime` objects from various offsets?] 1 is used for constructors. 2 is used for the `with_timezone` method of date and time types.`] 3 is used for other methods, e.g. `year()` or `format()`, and provided by an associated type`X which implements `Offset` (which then passed to `TimeZone` for actual implementations).[M Technically speaking `TimeZone` has a total knowledge about given timescale,PA but `Offset` is used as a cache to avoid the repeated conversionD* and provides implementations for 1 and 3.-V An `TimeZone` instance can be reconstructed from the corresponding `Offset` instance.Y  :         3                        &      3               %U Makes a new `FixedOffset` for the Eastern Hemisphere with given timezone difference.X2 The negative `secs` means the Western Hemisphere.5# Panics on the out-of-bound `secs`.&            use `east_opt()` instead  B    1 X 5 + Returns `None` on the out-of-bound `secs`. .    % use chrono::{FixedOffset, TimeZone}; ( let hour = 3600; W let datetime = FixedOffset::east_opt(5 * hour).unwrap().ymd_opt(2016, 11, 08).unwrap() ZJ .and_hms_opt(0, 0, 0).unwrap();M@ assert_eq!(&datetime.to_rfc3339(), "2016-11-08T00:00:00+05:00")C  %U Makes a new `FixedOffset` for the Western Hemisphere with given timezone difference.X2 The negative `secs` means the Eastern Hemisphere.5&      use `west_opt()` insteadB   1X5.  (W let datetime = FixedOffset::west_opt(5 * hour).unwrap().ymd_opt(2016, 11, 08).unwrap()ZM@ assert_eq!(&datetime.to_rfc3339(), "2016-11-08T00:00:00-05:00")C  $L Returns the number of seconds to add to convert from UTC to the local time.O  $L Returns the number of seconds to add to convert from the local time to UTC.O      3   P  X  ?    !G! ! ! "" " " "4" " &! &4& & -g-   -̭ - - - .  --0# 0 0  0+0  1# 1 1  2+2  3' 3 3  3/3  4' 5 5  5/5  64    6 6 666 6  7.7   84    8 8 888 8  8.8                       (              windows.rs        #          "             W                       &   \    0        g g g ޏި                           h h h h h h h h h i i i Сp               ! !    ! !    " "    " "    # #    % %    ' '    ( (    ( (  (% (  )* )  *) *  + +2 +  , -9 -  - .+ .  . 13 1  1 4/ 4  7 7 9* 9  9 ?! ?  ? A# A  A  8 Returns a `Date` which corresponds to the current date. ;            use `Local::now()` instead  D    E Returns a `DateTime` which corresponds to the current date and time. H            wasm32    wasmbind       emscripten    wasi       .   O            {  ֹۆ` W            >  F  H           $T###$ ##$ ##$  # $$$ $$$ $ $$$ $$$  $ $$ $  $ $$#$ % &7&  & ,C+++, ++, ++,  + +++ +++ + ,,, ,,,  , ,, ,  , ,,+, ,                #                                                                3         (                            ;            :use `Utc::now()` instead, potentially with `.date_naive()` < z    H                      #   H  P  7  ?      4   4      ̭  O Returns `Some` only when the conversion result is unique, or `None` otherwise.R  "O Returns `Some` for the earliest possible conversion result, or `None` if none.R   M Returns `Some` for the latest possible conversion result, or `None` if none.P  AC Maps a `LocalResult` into `LocalResult` with given function.F o     o   (     Ë Ƣ  ǬϞս C G 0; Propagates any error. Ambiguous result would be discarded.>   T J 0>    # !W "P "0##>$   ) 'W 'T (0((>)   / ,V -W .0..>/   2"   ̭ 2C2 223D Returns the single unique conversion result, or panics accordingly.2G3  5,' The offset from the local time to UTC.5*5  66C6 ܨ666 6< Returns the fixed offset from UTC to the local time stored.6?6 6 8! The time zone.77V The methods here are the primarily constructors for [`Date`](../struct.Date.html) and7Y- [`DateTime`](../struct.DateTime.html) types.708  ܨ88ܨ88: An associated offset type.8E This type is used to store the actual offset in date and time types.8HL The original `TimeZone` value can be recovered via `TimeZone::from_offset`.9O:  <T Make a new `DateTime` from year, month, day, time components and current time zone.:W;L This assumes the proleptic Gregorian calendar, with the year 0 being 1 BCE.;O;3 Returns `LocalResult::None` on invalid input data.;6< < >         Δ C<D Makes a new `Date` from year, month, day and the current time zone.?G@O@Z The time zone normally does not affect the date (unless it is between UTC-24 and UTC+24),@]J but it will propagate to the `DateTime` values constructed via this date.AMBB>B B BC  CC CC CC use `with_ymd_and_hms()` insteadC"BJC  C HMDGEOEձE]FMGGFH H HH  HH HH HHH"HJH  H O3X Makes a new `Date` from year, day of year (DOY or "ordinal") and the current time zone.J[KOLձL]MMM4 Panics on the out-of-range date and/or invalid DOY.M7N N NO  NN NN NN:use `from_local_datetime()` with a `NaiveDateTime` insteadN<NzO  O TDP[POQձQ]RMS< Returns `None` on the out-of-range date and/or invalid DOY.S?S S ST  SS SS TTT<SzT  T \FX Makes a new `Date` from ISO week date (year and week number), day of the week (DOW) andV[ the current time zone.WWOD The resulting `Date` may have a different year from the input year.XGXձY]YMZZ?[ [ [[  [[ [[ [[[<[z\  \ bW][˾^^O^G_ձ_]`M`ÜaGa a ab  aa aa bbb<azb   b h<; Makes a new `DateTime` from the number of non-leap secondsd>9 since January 1, 1970 0:00:00 UTC (aka "UNIX timestamp")e<܋eGfH Panics on the out-of-range number of seconds and/or invalid nanosecond,fKJ for a non-panicking version see [`timestamp_opt`](#method.timestamp_opt).gMg g gh  gg hh hhuse `timestamp_opt()` insteadhgGh   h mMi>i<܋jGkE Returns `LocalResult::None` on out-of-range number of seconds and/orkHD invalid nanosecond, otherwise always returns `LocalResult::Single`.kGl l ll use chrono::{Utc, TimeZone};l l^ assert_eq!(Utc.timestamp_opt(1431648000, 0).unwrap().to_string(), "2015-05-15 00:00:00 UTC");lamm  n s9@ Makes a new `DateTime` from the number of non-leap millisecondspC: since January 1, 1970 0:00:00 UTC (aka "UNIX timestamp").p=qB Panics on out-of-range number of milliseconds for a non-panickingqED version see [`timestamp_millis_opt`](#method.timestamp_millis_opt).qGr r rr  rr rr rr$use `timestamp_millis_opt()` insteadr&rNs  s xJsCt=uuC Returns `LocalResult::None` on out-of-range number of millisecondsuF4 and/or invalid nanosecond, otherwise always returnsu7 `LocalResult::Single`.vv v vv* use chrono::{Utc, TimeZone, LocalResult};v-- match Utc.timestamp_millis_opt(1431648000) {w0D LocalResult::Single(dt) => assert_eq!(dt.timestamp(), 1431648),wG/ _ => panic!("Incorrect timestamp_millis"),x2 };xxx y ~7? Makes a new `DateTime` from the number of non-leap nanoseconds{B{=|B Unlike [`timestamp_millis`](#method.timestamp_millis), this never|E panics.| } } }}} }H assert_eq!(Utc.timestamp_nanos(1431648000000000).timestamp(), 1431648);}K~~ ~ ̈́N? Parses a string with the specified format string and returns aB$ `DateTime` with the current offset.'ف2 See the [`crate::format::strftime`] module on the5 supported escape sequences.C If the to-be-parsed string includes an offset, it *must* match theǂF= offset of the TimeZone, otherwise an error will be returned.@׃F See also [`DateTime::parse_from_str`] which gives a [`DateTime`] with߃I parsed [`FixedOffset`].Є  ., Reconstructs the time zone from the offset./   Q? Creates the offset(s) for given local `NaiveDate` if possible.B  YC Creates the offset(s) for given local `NaiveDateTime` if possible.F  ыGI Converts the local `NaiveDate` to the timezone-aware `Date` if possible.L  ؅    #use `from_local_datetime()` instead%Mԋ   ʌ           {  ֹۆ`SQ Converts the local `NaiveDateTime` to the timezone-aware `DateTime` if possible.T            }  @@ Creates the offset for given UTC `NaiveDate`. This cannot fail.ɐC  HD Creates the offset for given UTC `NaiveDateTime`. This cannot fail.בG  60 Converts the UTC `NaiveDate` to the local time.3Y The UTC is continuous and thus this cannot fail (but can give the duplicate local time).\  ̆”  Ôɔ ˔Ӕ Քڔ!use `from_utc_datetime()` insteadܔ#K    B4 Converts the UTC `NaiveDateTime` to the local time.7ܖ\   б DZ ɱ  Dz9  в   в ݲ   ݲ        P a  o                              I Extension trait for subsecond rounding or truncation to a maximum numberL D of digits. Rounding can be used to decrease the error variance whenG E serializing/persisting to lower precision. Truncation is the defaultH H behavior in Chrono display formatting. Either can be used to guaranteeK J equality (e.g. for testing) when round-tripping through a lower precisionM  format.     , H Return a copy rounded to the specified number of subsecond digits. WithK B 9 or more digits, self is returned unmodified. Halfway values areE  rounded up (away from zero).     ``` rust K # use chrono::{DateTime, SubsecRound, Timelike, TimeZone, Utc, NaiveDate};N  let dt = NaiveDate::from_ymd_opt(2018, 1, 11).unwrap().and_hms_milli_opt(12, 0, 0, 154).unwrap().and_local_timezone(Utc).unwrap(); ; assert_eq!(dt.round_subsecs(2).nanosecond(), 150_000_000); > ; assert_eq!(dt.round_subsecs(1).nanosecond(), 200_000_000); >     , = Return a copy truncated to the specified number of subsecond @ < digits. With 9 or more digits, self is returned unmodified. ?      N   ; assert_eq!(dt.trunc_subsecs(2).nanosecond(), 150_000_000); > ; assert_eq!(dt.trunc_subsecs(1).nanosecond(), 100_000_000);>               ̭     (    (    &    E Extension trait for rounding or truncating a DateTime by a Duration.H   # Limitations L Both rounding and truncating are done via [`Duration::num_nanoseconds`] andO L [`DateTime::timestamp_nanos`]. This means that they will fail if either theO M `Duration` or the `DateTime` are too big to represented as nanoseconds. TheyP ? will also fail if the `Duration` is bigger than the timestamp.B    ܨ ܨ  / Error that can occur in rounding or truncating2                 "    #G # Return a copy rounded by Duration.&     M # use chrono::{DateTime, DurationRound, Duration, TimeZone, Utc, NaiveDate};P    ! H dt.duration_round(Duration::milliseconds(10)).unwrap().to_string(),!K " "2018-01-11 12:00:00.150 UTC""%  "  " ? dt.duration_round(Duration::days(1)).unwrap().to_string(),"B  "2018-01-12 00:00:00 UTC"#!  # # #   )G % Return a copy truncated by Duration.$( $  $ $ %P %  & H dt.duration_trunc(Duration::milliseconds(10)).unwrap().to_string(),&K Š'%  '  ( ? dt.duration_trunc(Duration::days(1)).unwrap().to_string(),(B  "2018-01-11 00:00:00 UTC"(!  ) ) )   ** *  *1     * + * * + +   ߤ+F +    ,F ,    -$  . .   .F .   /F /   0 0    ̭ 0 1 1 1 1 1 0 0 9 9    ̭ : : ; ; ; ; : : M#  M4 M  M  R( Q Q Q Q  Q Q Q  Q Q  Q Q  Q Q"  R R  R  2      ˳ ϳ       The next day in the week.  D `w`: | `Mon` | `Tue` | `Wed` | `Thu` | `Fri` | `Sat` | `Sun`G D ----------- | ----- | ----- | ----- | ----- | ----- | ----- | -----G D `w.succ()`: | `Tue` | `Wed` | `Thu` | `Fri` | `Sat` | `Sun` | `Mon`G        The previous day in the week. !   ™ G  G D `w.pred()`: | `Sun` | `Mon` | `Tue` | `Wed` | `Thu` | `Fri` | `Sat` G     ' Q Returns a day-of-week number starting from Monday = 1. (ISO 8601 weekday number)T  R `w`: | `Mon` | `Tue` | `Wed` | `Thu` | `Fri` | `Sat` | `Sun`U R ------------------------- | ----- | ----- | ----- | ----- | ----- | ----- | -----U N `w.number_from_monday()`: | 1 | 2 | 3 | 4 | 5 | 6 | 7Q     ' 7 Returns a day-of-week number starting from Sunday = 1.:  U U N `w.number_from_sunday()`: | 2 | 3 | 4 | 5 | 6 | 7 | 1Q     ) 7 Returns a day-of-week number starting from Monday = 0.:  T `w`: | `Mon` | `Tue` | `Wed` | `Thu` | `Fri` | `Sat` | `Sun`W T --------------------------- | ----- | ----- | ----- | ----- | ----- | ----- | -----W P `w.num_days_from_monday()`: | 0 | 1 | 2 | 3 | 4 | 5 | 6S     #) 7 Returns a day-of-week number starting from Sunday = 0. : ! !W !W P `w.num_days_from_sunday()`: | 1 | 2 | 3 | 4 | 5 | 6 | 0"S #  #  %  %4 %  &  ** J Any weekday can be represented as an integer from 0 to 6, which equals to(M X [`Weekday::num_days_from_monday`](#method.num_days_from_monday) in this implementation.)[ N Do not heavily depend on this though; use explicit methods whenever possible.*Q  +& +   .& .   2, 2 2 ̒2 2  2 2  2 2  3'  34 3  3  4%  44 4  4  %       The next month.   ; `m`: | `January` | `February` | `...` | `December`> 8 ----------- | --------- | ---------- | --- | ---------; : `m.succ()`: | `February` | `March` | `...` | `January`=       The previous month.  > ; ; `m.pred()`: | `December` | `January` | `...` | `November`>     & : Returns a month-of-year number starting from January = 1.=  G `m`: | `January` | `February` | `...` | `December`J @ -------------------------| --------- | ---------- | --- | -----C ? `m.number_from_month()`: | 1 | 2 | `...` | 12B     ""  Get the name of the month! ! ! ! ! - assert_eq!(Month::January.name(), "January")!0 " "  "  &(  *$ H Returns an `Option` from a i64, assuming a 1-index, January = 1.'K ' W `Month::from_i64(n: i64)`: | `1` | `2` | ... | `12`'Z X ---------------------------| -------------------- | --------------------- | ... | -----([ h ``: | Some(Month::January) | Some(Month::February) | ... | Some(Month::December))k *   +$ +   +$ +   1  2 1 Construct a new `Months` from a number of months14 2   4#  44 4  4  'Ŵ ɴ    R. The common set of methods for date component. 1\  ܨfܨf] Returns the year number in the [calendar date](./naive/struct.NaiveDate.html#calendar-date).r`   F Returns the absolute year number starting from 1 with a boolean flag,IU which is false when the year predates the epoch (BCE/BC) and true otherwise (CE/AD).X  -)  -)  -T   -T      ,  S      ,  S            Returns the ISO week.     /0 Makes a new value with the year number changed. 3 : Returns `None` when the resulting value would be invalid.=   1C Makes a new value with the month number (starting from 1) changed.F=   3C Makes a new value with the month number (starting from 0) changed.F=   -C Makes a new value with the day of month (starting from 1) changed.F=  /C Makes a new value with the day of month (starting from 0) changed.F=   5B Makes a new value with the day of year (starting from 1) changed.E=   7B Makes a new value with the day of year (starting from 0) changed.E=   ![ Counts the days in the proleptic Gregorian calendar, with January 1, Year 1 (CE) as day 1.^ &V assert_eq!(NaiveDate::from_ymd_opt(1970, 1, 1).unwrap().num_days_from_ce(), 719_163);YO assert_eq!(NaiveDate::from_ymd_opt(2, 1, 1).unwrap().num_days_from_ce(), 366);RM assert_eq!(NaiveDate::from_ymd_opt(1, 1, 1).unwrap().num_days_from_ce(), 1);PP assert_eq!(NaiveDate::from_ymd_opt(0, 1, 1).unwrap().num_days_from_ce(), -365);S  ". The common set of methods for time component.!1"  ܨ"ܨ""")" " #: Returns the hour number from 1 to 12 with a boolean flag,"=' which is false for AM and true for PM.#*# $ %%+% % &&+& & (&F'<G the [leap second](./naive/struct.NaiveTime.html#leap-second-handling).'J(  ( )/0 Makes a new value with the hour number changed.(3))=)  ) +02 Makes a new value with the minute number changed.*5**=+  + -02 Makes a new value with the second number changed.+5,,=1 As with the [`second`](#tymethod.second) method,,4-2-  - 05L Makes a new value with nanoseconds since the whole non-leap second changed.-O..=9 As with the [`nanosecond`](#tymethod.nanosecond) method,/</>0 0 1*0B1 1 ٴ' ISO 8601 calendar date with time zone.*L You almost certainly want to be using a [`NaiveDate`] instead of this type.OH This type primarily exists to aid in the construction of DateTimes thatKG have a timezone by way of the [`TimeZone`] datelike constructors (e.g.J [`TimeZone::ymd`]).K This type should be considered ambiguous at best, due to the inherent lackN4 of precision required for the time zone resolution.7 6 There are some guarantees on the usage of `Date`: 9 M - If properly constructed via [`TimeZone::ymd`] and others without an error, PC the corresponding local date should exist for at least a moment. F5 (It may still have a gap from the offset changes.) 8 R - The `TimeZone` is free to assign *any* [`Offset`](crate::offset::Offset) to the U= local date, as long as that offset did occur in given day. @ T For example, if `2015-03-08T01:59-08:00` is followed by `2015-03-08T03:00-07:00`, WA it may produce either `2015-03-08-08:00` or `2015-03-08-07:00` D+ but *not* `2015-03-08+00:00` and others. .Q - Once constructed as a full `DateTime`, [`DateTime::date`] and other associatedTM methods should return those for the original `Date`. For example, if `dt =P` tz.ymd_opt(y,m,d).unwrap().hms(h,n,s)` were valid, `dt.date() == tz.ymd_opt(y,m,d).unwrap()`.cI - The date is timezone-agnostic up to one day (i.e. practically always),L@ so the local date and UTC date should be equal for most casesCN even though the raw calculation between `NaiveDate` and `Duration` may not.Q      )Use `NaiveDate` or `DateTime` instead+S            ffff    f  f ff f  E Specific formatting options for seconds. This may be extended in the HD future, so exhaustive matching in external code is not recommended. G 8 See the `TimeZone::to_rfc3339_opts` function for usage. ;    |  |  |  |  }  }ᅭΥ A Format whole seconds only, with no decimal point nor subseconds. D     D   2 Use fixed 3 subsecond digits. This corresponds to5B [Fixed::Nanosecond3](format/enum.Fixed.html#variant.Nanosecond3).E  5E  2 Use fixed 6 subsecond digits. This corresponds to5B [Fixed::Nanosecond6](format/enum.Fixed.html#variant.Nanosecond6).E  5E  2 Use fixed 9 subsecond digits. This corresponds to5B [Fixed::Nanosecond9](format/enum.Fixed.html#variant.Nanosecond9).E  5E  F Automatically select one of `Secs`, `Millis`, `Micros`, or `Nanos` toIG display all available non-zero sub-second digits. This corresponds toJ@ [Fixed::Nanosecond](format/enum.Fixed.html#variant.Nanosecond).C  IJC        g g g g g g  g  h h h h i i i i i i  i  j j j j j j j j j j j j j  j j j j j j  j  k k k k k k k k k k  k  !0 ISO 8601 combined date and time with time zone.3I There are some constructors implemented here (the `from_*` methods), butL@ the general-purpose constructors are all via the methods on theC< [`TimeZone`](./offset/trait.TimeZone.html) implementations.?         lllםl   l l ll l     )    ~ Æܧ   )   yyyyyy y    zzzٞz zz z { { { {  { { { {  { {  { |||| |||| ||||| |||||| |  & Padding characters for numeric items.)  No padding.       Zero (`0`) padding.   ז    Space padding.   ї   }}}}~~~ß~~~ ~    ؟               Numeric item types.C They have associated formatting width (FW) and parsing width (PW).F? The **formatting width** is the minimal width to be formatted.B` If the number is too short, and the padding is not [`Pad::None`](./enum.Pad.html#variant.None),c then it is left-padded.L If the number is too long or (in some cases) negative, it is printed as is.O: The **parsing width** is the maximal width to be scanned.=P The parser only tries to consume from one to given number of digits (greedily).S/ It also trims the preceding whitespace if any.2T It cannot parse the negative number, so some date and time cannot be formatted thenW' parsed with the same formatting items.* $ Full Gregorian year (FW=4, PW=∞).'G May accept years before 1 BCE or after 9999 CE, given an initial sign.J   'J    X Gregorian year divided by 100 (century number; FW=PW=2). Implies the non-negative year.[     Ӧ[     9 Gregorian year modulo 100 (FW=PW=2). Cannot be negative.<     <    * Year in the ISO week date (FW=4, PW=∞).-J   -J    T Year in the ISO week date, divided by 100 (FW=PW=2). Implies the non-negative year.W     ڪW     E Year in the ISO week date, modulo 100 (FW=PW=2). Cannot be negative.H    H     Month (FW=PW=2).           Day of the month (FW=PW=2).         ! O Week number, where the week 1 starts at the first Sunday of January (FW=PW=2).!R !   ! !R !   " O Week number, where the week 1 starts at the first Monday of January (FW=PW=2).!R "   " !R "   #, Week number in the ISO week date (FW=PW=2)."/ #  #"/ #  #> Day of the week, where Sunday = 0 and Saturday = 6 (FW=PW=1).#A #  ##A #  $< Day of the week, where Monday = 1 and Sunday = 7 (FW=PW=1).#? $  $ش#? $  $ Day of the year (FW=PW=3).$ $  $$ $  %- Hour number in the 24-hour clocks (FW=PW=2).$0 %  %$0 %  %- Hour number in the 12-hour clocks (FW=PW=2).%0 %  %%0 %  &; The number of minutes since the last whole hour (FW=PW=2).%> &  &%> &  '= The number of seconds since the last whole minute (FW=PW=2).&@ '  'º&@ '  ( A The number of nanoseconds since the last whole second (FW=PW=9).'D& Note that this is *not* left-aligned;')F see also [`Fixed::Nanosecond`](./enum.Fixed.html#variant.Nanosecond).(I (   ( 'D')(I (   * Y The number of non-leap seconds since the midnight UTC on January 1, 1970 (FW=1, PW=∞).(\E For formatting, it assumes UTC upon the absence of time zone offset.)H *   * (\)H *   , Internal uses only.**I This item exists so that one can add additional internal-only formatting*LW without breaking major compatibility (as enum variants cannot be selectively private).+Z ,  ,***L+Z ,  , ,       ΢    ֢      ģ 2 Fixed-format item types.005 They have their own rules of formatting and parsing.08Q Otherwise noted, they print in the specified cases but parse case-insensitively.1T23 Abbreviated month names.22T Prints a three-letter-long name in the title case, reads the same name in any case.2W33222W34  Full month names.33U Prints a full name in the title case, reads either a short or full name in any case.3X4 4 333X4 5# Abbreviated day of the week names.4&44W554&44W56 Full day of the week names.566X66566X67  AM/PM.7 7) Prints in lower case, reads in any case.7,7 7 7 77,7 8 7 7) Prints in upper case, reads in any case.7,8 8 7 77,8 : F An optional dot plus one or more digits for left-aligned nanoseconds.8II May print nothing, 3, 6 or 9 digits according to the available accuracy.9LJ See also [`Numeric::Nanosecond`](./enum.Numeric.html#variant.Nanosecond).9M: : 8I9L9M: ; L Same as [`Nanosecond`](#variant.Nanosecond) but the accuracy is fixed to 3.:O; ; :O; ; L Same as [`Nanosecond`](#variant.Nanosecond) but the accuracy is fixed to 6.;O; ; ;O; < L Same as [`Nanosecond`](#variant.Nanosecond) but the accuracy is fixed to 9.Y In the parser, the colon can be omitted and/or surrounded with any amount of whitespace.>\1 The offset is limited from `-24:00` to `+24:00`,?4Q which is the same as [`FixedOffset`](../offset/struct.FixedOffset.html)'s range.?T@@=I>>\?4?T@C\ Offset from the local time to UTC with seconds (`+09:00:00` or `-04:00:00` or `+00:00:00`).@_AA\7 The offset is limited from `-24:00:00` to `+24:00:00`,B:BTCC@_AA\B:BTCFM Offset from the local time to UTC without minutes (`+09` or `-04` or `+00`).CPDD\+ The offset is limited from `-24` to `+24`,E.ETFFCPDD\E.ETFIA Offset from the local time to UTC (`+09:00` or `-04:00` or `Z`).FDGY In the parser, the colon can be omitted and/or surrounded with any amount of whitespace,G\6 and `Z` can be either in upper case or in lower case.G9H4HTIIFDGG\G9H4HTIJS Same as [`TimezoneOffsetColon`](#variant.TimezoneOffsetColon) but prints no colon.IV" Parsing allows an optional colon.J%JJIVJ%JKU Same as [`TimezoneOffsetColonZ`](#variant.TimezoneOffsetColonZ) but prints no colon.JXK%KKJXK%KLO RFC 2822 date and time syntax. Commonly used for email and MIME date and time.LRLLLRLM* RFC 3339 & ISO 8601 date and time syntax.L-MML-MOMMMLNZO OMMMLNZO O O 1111111 1 1 1 ܧ1 1 1 1 1 1 1 1 1111111111111 1111111 222Ҩ2222 PL An opaque type representing fixed-format item types for internal uses only.OOP PP͊ڄOOOOOOO PPPPPPP P P P ëP P P P ˫P P P P PPPPPPPPPPPPP PPPPPPP PPSSSSTTTTUUUUVVVVPPPPPPP PPPPPPP P P P P P P P P P P P PPPϭPPPP׭PPPPPP PPPPPPP W VVVW VVW VWWW WW WW  WV5WË֋ܐWWWWWWWWWWWWXXXXWWWWWWW WWWĮWWWW W W W W W W W W W W W WWWWWWWWWWWWW WWWWWWW YH A single formatting item. This is used for both formatting and parsing.XKY ʌ       с( YYY% A literally printed and parsed text.Y(Y  YY(Y  YY  [ 9 Same as `Literal` but with the string owned by the item.Y<ZZϯZZ ZZZ ZZZZ ZZ ZZ  ZZ5[   [ Y<ZZϯZZ ZZZ ZZZZ ZZ ZZ  ZZ5[   [[\@ Whitespace. Prints literally but reads zero or more whitespace.[C\  \\  \\] 7 Same as `Space` but with the string owned by the item.\:\\ޯ\] \\] \\\\ \\ ]]  ]\5]   ] \:\\ޯ\] \\] \\\\ \\ ]]  ]\5]   ]]_W Numeric item. Can be optionally padded to the maximal length (if any) when formatting;]Z< the parser simply ignores any padded whitespace and zeroes.^?_  _ԟ]Z^?_  _____ Fixed-format item.__  ___  __`D Issues a formatting error. Used to signal an invalid format string._G``_G`XXXX ʌ       с( YYXXX  X X X X  ʌ       с( YYX X X X  ʌ       с( YYX X X  XXXX ʌ       с( YYXXXŲX ʌ       с( YYXXXвXX XXXXѲXXX  XXXX ʌ       с( YYXXX  f$ An error from the `parse` function.e'f fe'f  ffԤeeeeeee eeeeeee e e e e e e e e e e e fffffffffffff fffffff fffʵfh ghԤh ' Given field is out of permitted range.h*h Ԥh h*h Ԥj C There is no possible date and time value with given set of fields.hFiP This does not include the out-of-range conditions, which are trivially invalid.iS\ It includes the case that there are one or more fields that are inconsistent to each other.j_j Ԥj ǽhFiiSj_j Ԥm K Given set of fields is not enough to make a requested date and time value.kNkX Note that there *may* be a case that given fields constrain the possible values so muchk[K that there is a unique possible value. Chrono only tries to be correct forlNQ most useful sets of fields however, as such constraint solving can be expensive.mTm Ԥm kNkk[lNmTm ԤnQ The input string has some invalid character sequence for given formatting items.mTnԤnmTnԤo- The input string has been prematurely ended.n0oԤon0oԤoD All formatting items have been read but there is a remaining input.oGoԤooGoԤp Z There was an error on the formatting string, or there were non-supported formating items.o]p Ԥp o]p Ԥqqqqq qqqԤqqqqq qqqԤggggԤggg ggggԤggg g g g g Ԥg g g g Ԥg g g ggggԤggggԤgggǷgg ggggȷggg gggзgԤA Parsed parts of date and time. There are two classes of methods:DP - `set_*` methods try to set given field(s) while checking for the consistency.SY It may or may not check for the range constraint immediately (for efficiency reasons).\O - `to_*` methods try to make a concrete date and time value out of set fields.R\ It fully checks any remaining out-of-range conditions and inconsistent/impossible fields._.  Year. H This can be negative unlike [`year_div_100`](#structfield.year_div_100)K8 and [`year_mod_100`](#structfield.year_mod_100) fields. ;.  A Year divided by 100. Implies that the year is >= 1 BCE when set. D 6 Due to the common usage, if this field is missing but 98 [`year_mod_100`](#structfield.year_mod_100) is present, ;A it is inferred to 19 when `year_mod_100 >= 70` and 20 otherwise. D.  = Year modulo 100. Implies that the year is >= 1 BCE when set. @.  G Year in the [ISO week date](../naive/struct.NaiveDate.html#week-date). J R This can be negative unlike [`isoyear_div_100`](#structfield.isoyear_div_100) and U: [`isoyear_mod_100`](#structfield.isoyear_mod_100) fields.=.  W Year in the [ISO week date](../naive/struct.NaiveDate.html#week-date), divided by 100.Z, Implies that the year is >= 1 BCE when set./9> [`isoyear_mod_100`](#structfield.isoyear_mod_100) is present,AD it is inferred to 19 when `isoyear_mod_100 >= 70` and 20 otherwise.G.  S Year in the [ISO week date](../naive/struct.NaiveDate.html#week-date), modulo 100.V/.  Month (1--12).. ԙۭD Week number, where the week 1 starts at the first Sunday of JanuaryG/ (0--53, 1--53 or 1--52 depending on the year).2. D Week number, where the week 1 starts at the first Monday of JanuaryG2. < [ISO week number](../naive/struct.NaiveDate.html#week-date)?( (1--52 or 1--53 depending on the year).+. Day of the week.. ԙۭ: Day of the year (1--365 or 1--366 depending on the year).=.H Day of the month (1--28, 1--29, 1--30 or 1--31 depending on the month).K.E Hour number divided by 12 (0--1). 0 indicates AM and 1 indicates PM.H.  Hour number modulo 12 (0--11).".  Minute number (0--59)..4 Second number (0--60, accounting for leap seconds).7.C The number of nanoseconds since the whole second (0--999,999,999).F. J The number of non-leap seconds since the midnight UTC on January 1, 1970.MQ This can be off by one if [`second`](#structfield.second) is 60 (a leap second).T.  / Offset from the local time to UTC, in seconds.2. .                        >>    a5 Parsing iterator for `strftime`-like format strings.`8ia  ɔ<Ʈ aiabib   didҜ didҜ didҜ eieҜ aaaa ɔ<Ʈ aaaaa  aaaa ɔ<Ʈ aaaaa  &oҜ &pҜ &vҜ &xҜ &Ҝ &Ҝ N A *temporary* object which can be used as an argument to `format!` or others.QN This is normally constructed via `format` methods of each date and time type.Q      5   Ŗ˥] " ԙۭ  C K A week represented by a [`NaiveDate`] and a [`Weekday`] which is the firstN day of the week.  ! A duration in calendar days. < This is useful becuase when using `Duration` it is possible?^ that adding `Duration::days(1)` doesn't increment the day value as expected due to it being aah fixed number of seconds. This difference applies only when dealing with `DateTime` data typeskJ and in other cases `Duration::days(n)` and `Days::new(n)` are equivalent. M!! ?ak M! !!!!!!!!! !!!!!!!!!!! !!!!!!!!!!!!! !!!!!!! !!!!!!!!D! !!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 7) ISO 8601 calendar date without timezone.#,< Allows for every [proleptic Gregorian date](#calendar-date)#?- from Jan 1, 262145 BCE to Dec 31, 262143 CE.#0B Also supports the conversion from ISO 8601 ordinal and week date.$E$ # Calendar Date$%I The ISO 8601 **calendar date** follows the proleptic Gregorian calendar.%LE It is like a normal civil calendar but note some slight differences:%H&] * Dates before the Gregorian calendar's inception in 1582 are defined via the extrapolation.&`T Be careful, as historical dates are often noted in the Julian calendar and others'WV and the transition to Gregorian may differ across countries (as late as early 20C).'Y(W (Some example: Both Shakespeare from Britain and Cervantes from Spain seemingly died(ZN on the same calendar date---April 23, 1616---but in the different calendar.)QS Britain used the Julian calendar at that time, so Shakespeare's death is later.))V*J * ISO 8601 calendars has the year 0, which is 1 BCE (a year before 1 CE).*MD If you need a typical BCE/BC and CE/AD notation for year numbers,+GO use the [`Datelike::year_ce`](../trait.Datelike.html#method.year_ce) method.+R, # Week Date,,C The ISO 8601 **week date** is a triple of year number, week number,FF and [day of the week](../enum.Weekday.html) with the following rules:-I-U * A week consists of Monday through Sunday, and is always numbered within some year.-XC The week number ranges from 1 to 52 or 53 depending on the year..F.[ * The week 1 of given year is defined as the first week containing January 4 of that year,.^M or equivalently, the first week containing four or more days in that year./P0V * The year number in the week date may *not* correspond to the actual Gregorian year.0YM For example, January 3, 2016 (Sunday) was on the last (53rd) week of 2015.1P1M Chrono's date types default to the ISO 8601 [calendar date](#calendar-date),1PI but [`Datelike::iso_week`](../trait.Datelike.html#tymethod.iso_week) and2LG [`Datelike::weekday`](../trait.Datelike.html#tymethod.weekday) methods2J0 can be used to get the corresponding week date.333 # Ordinal Date44X The ISO 8601 **ordinal date** is a pair of year number and day of the year ("ordinal").4[F The ordinal number ranges from 1 to 365 or 366 depending on the year.4IL The year number is the same as that of the [calendar date](#calendar-date).5O6> This is currently the internal format of Chrono's date types.6A7 776 6 6 6 6 6 6 6 6 6 6 6666666666666 6666666 66666666Ɠ6 666 6 6 6 6 6 6 6666666 77777777777    ƆƆƆƆƆƆƆƆƓƆ ƆƆ̆ ̆ ̆ ̆ ̆ ̆ ̆ ̆ ̆ ̆ ̆ ׆ ׆ ׆ ׆ ׆ ׆ ׆    !ȏ  Ɠ                      2 ISO 8601 combined date and time without timezone.5  Q `NaiveDateTime` is commonly created from [`NaiveDate`](./struct.NaiveDate.html).T+f let dt: NaiveDateTime = NaiveDate::from_ymd_opt(2016, 7, 8).unwrap().and_hms_opt(9, 10, 11).unwrap();i # let _ = dt;< You can use typical [date-like](../trait.Datelike.html) and?- [time-like](../trait.Timelike.html) methods,00 provided that relevant traits are in the scope.3* # use chrono::{NaiveDate, NaiveDateTime};-h # let dt: NaiveDateTime = NaiveDate::from_ymd_opt(2016, 7, 8).unwrap().and_hms_opt(9, 10, 11).unwrap();k+ use chrono::{Datelike, Timelike, Weekday};.+3 assert_eq!(dt.num_seconds_from_midnight(), 33011);6              Ɠ                             wwww www w w w w w w w w w w w w w w w w w wwwwwwwwwww  Ջ Ջ Ջ Ջ Ջ Ջ Ջ Ջ Ջ Ջ Ջ          ISO 8601 week.< This type, combined with [`Weekday`](../enum.Weekday.html),?I constitutes the ISO 8601 [week date](./struct.NaiveDate.html#week-date).LX One can retrieve this type from the existing [`Datelike`](../trait.Datelike.html) types[Q via the [`Datelike::iso_week`](../trait.Datelike.html#tymethod.iso_week) method.TǤ       Ǥ     Ǥ    Ǥ Ǥ       Ǥ    Ǥ  Ǥ Ǥ A  ISO 8601 time without timezone.# M Allows for the nanosecond precision and optional leap second representation.P   # Leap Second Handling  @ Since 1960s, the manmade atomic clock has been so accurate thatC 2 it is much more accurate than Earth's own motion.5 K It became desirable to define the civil time in terms of the atomic clock,N C but that risks the desynchronization of the civil time from Earth.F K To account for this, the designers of the Coordinated Universal Time (UTC) N V made that the UTC should be kept within 0.9 seconds of the observed Earth-bound time. Y C When the mean solar day is longer than the ideal (86,400 seconds), F J the error slowly accumulates and it is necessary to add a **leap second** M  to slow the UTC down a bit.  P (We may also remove a second to speed the UTC up a bit, but it never happened.) S P The leap second, if any, follows 23:59:59 of June 30 or December 31 in the UTC. S   " Fast forward to the 21st century, % A we have seen 26 leap seconds from January 1972 to December 2015. D I Yes, 26 seconds. Probably you can read this paragraph within 26 seconds.L N But those 26 seconds, and possibly more in the future, are never predictable,Q G and whether to add a leap second or not is known only before 6 months.J C Internet-based clocks (via NTP) do account for known leap seconds,F R but the system API normally doesn't (and often can't, with no network connection)U B and there is no reliable way to retrieve leap second information.E  L Chrono does not try to accurately implement leap seconds; it is impossible.O \ Rather, **it allows for leap seconds but behaves as if there are *no other* leap seconds.**_ ; Various operations will ignore any possible leap second(s)> < except when any of the operands were actually leap seconds.?  & If you cannot tolerate this behavior,) L you must use a separate `TimeZone` for the International Atomic Time (TAI).O M TAI is like UTC but has no leap seconds, and thus slightly differs from UTC.P D Chrono does not yet provide such implementation, but it is planned.G   ## Representing Leap Seconds  H The leap second is indicated via fractional seconds more than 1 second.K H This makes possible to treat a leap second as the prior non-leap secondK - if you don't care about sub-second accuracy.0 A You should use the proper formatting to get the raw leap second.D  B All methods accepting fractional seconds will accept such values.E   3 use chrono::{NaiveDate, NaiveTime, Utc, TimeZone};6  B let t = NaiveTime::from_hms_milli_opt(8, 59, 59, 1_000).unwrap();E  i let dt1 = NaiveDate::from_ymd_opt(2015, 7, 1).unwrap().and_hms_micro_opt(8, 59, 59, 1_000_000).unwrap();l   let dt2 = NaiveDate::from_ymd_opt(2015, 6, 30).unwrap().and_hms_nano_opt(23, 59, 59, 1_000_000_000).unwrap().and_local_timezone(Utc).unwrap();  # let _ = (t, dt1, dt2);   M Note that the leap second can happen anytime given an appropriate time zone;P L 2015-07-01 01:23:60 would be a proper leap second if UTC+01:24 had existed.O R Practically speaking, though, by the time of the first leap second on 1972-06-30,U T every time zone offset around the world has standardized to the 5-minute alignment.W   ## Date And Time Arithmetics  U As a concrete example, let's assume that `03:00:60` and `04:00:60` are leap seconds.X H In reality, of course, leap seconds are separated by at least 6 months. K G We will also use some intuitive concise notations for the explanation.!J !  `Time + Duration`! S (short for [`NaiveTime::overflowing_add_signed`](#method.overflowing_add_signed)):"V "  - `03:00:00 + 1s = 03:00:01`."!  - `03:00:59 + 60s = 03:02:00`.#"  - `03:00:59 + 1s = 03:01:00`.#!  - `03:00:60 + 1s = 03:01:00`.#! 2 Note that the sum is identical to the previous.#5  - `03:00:60 + 60s = 03:01:59`.$"  - `03:00:60 + 61s = 03:02:00`.$" $ - `03:00:60.1 + 0.8s = 03:00:60.9`.$' %  `Time - Duration`% S (short for [`NaiveTime::overflowing_sub_signed`](#method.overflowing_sub_signed)):%V %  - `03:00:00 - 1s = 02:59:59`.&!  - `03:01:00 - 1s = 03:00:59`.&!  - `03:01:00 - 60s = 03:00:00`.&"  - `03:00:60 - 60s = 03:00:00`.&" 5 Note that the result is identical to the previous.'8 $ - `03:00:60.7 - 0.4s = 03:00:60.3`.'' $ - `03:00:60.7 - 0.9s = 03:00:59.8`.'' (  `Time - Time`( Q (short for [`NaiveTime::signed_duration_since`](#method.signed_duration_since)):(T ) ! - `04:00:00 - 03:00:00 = 3600s`.)$  - `03:01:00 - 03:00:00 = 60s`.)"  - `03:00:60 - 03:00:00 = 60s`.)" 9 Note that the difference is identical to the previous.)< $ - `03:00:60.6 - 03:00:59.4 = 1.2s`.*' " - `03:01:00 - 03:00:59.8 = 0.2s`.*% " - `03:01:00 - 03:00:60.5 = 0.5s`.*% 8 Note that the difference is larger than the previous,+; I even though the leap second clearly follows the previous whole second.+L  - `04:00:60.9 - 03:00:60.1 =, N (04:00:60.9 - 04:00:00) + (04:00:00 - 03:01:00) + (03:01:00 - 03:00:60.1) =,Q # 60.9s + 3540s + 0.9s = 3601.8s`.-& -  In general,- - A - `Time + Duration` unconditionally equals to `Duration + Time`.-D . D - `Time - Duration` unconditionally equals to `Time + (-Duration)`..G . @ - `Time1 - Time2` unconditionally equals to `-(Time2 - Time1)`..C / 1 - Associativity does not generally hold, because/4 X `(Time + Duration1) - Duration2` no longer equals to `Time + (Duration1 - Duration2)`/[  for two positive durations.0! 0 W - As a special case, `(Time + Duration) - Duration` also does not equal to `Time`.0Z 1 H - If you can assume that all durations have the same sign, however,1K $ then the associativity holds:2' R `(Time + Duration1) + Duration2` equals to `Time + (Duration1 + Duration2)`2U " for two positive durations.3% 3 $ ## Reading And Writing Leap Seconds3' 3 6 The "typical" leap seconds on the minute boundary are39 6 correctly handled both in the formatting and parsing.49 5 The leap second in the human-readable representation48 J will be represented as the second part being 60, as required by ISO 8601.5M 5 5  5+ 6  let dt = NaiveDate::from_ymd_opt(2015, 6, 30).unwrap().and_hms_milli_opt(23, 59, 59, 1_000).unwrap().and_local_timezone(Utc).unwrap();6 9 assert_eq!(format!("{:?}", dt), "2015-06-30T23:59:60Z");7< 7 7 ? There are hypothetical leap seconds not on the minute boundary7B " nevertheless supported by Chrono.8% ? They are allowed for the sake of completeness and consistency;8B ^ there were several "exotic" time zone offsets with fractional minutes prior to UTC after all.9a > For such cases the human-readable representation is ambiguous:A 4 and would be read back to the next non-leap second.:7 ; ; 2 use chrono::{DateTime, Utc, TimeZone, NaiveDate};;5 ;  let dt = NaiveDate::from_ymd_opt(2015, 6, 30).unwrap().and_hms_milli_opt(23, 56, 4, 1_000).unwrap().and_local_timezone(Utc).unwrap();; 9 assert_eq!(format!("{:?}", dt), "2015-06-30T23:56:05Z");<< = @ let dt = Utc.with_ymd_and_hms(2015, 6, 30, 23, 56, 5).unwrap();=C в=< O assert_eq!(DateTime::parse_from_rfc3339("2015-06-30T23:56:05Z").unwrap(), dt);>R > > C Since Chrono alone cannot determine any existence of leap seconds,>F V **there is absolutely no guarantee that the leap second read has actually happened**.?Y A A A  A A  @ @ @ @  @ @ @ @  @ @ @  @ @ @ @  @ @ @ @  @ @ @ @ @  @ @ @ @ @ @ @  @ @ @ @  @ @ @ @ Ɠ@ @ @ @ @ @ @  @ @ @  @ @ @ @  @ @ @  @ @ @ @  @ @ @ @  @ @ @  D The time zone with fixed offset, from UTC-23:59:59 to UTC+23:59:59.G6 Using the [`TimeZone`](./trait.TimeZone.html) methods9< on a `FixedOffset` struct is the preferred way to construct?F `DateTime` instances. See the [`east`](#method.east) andI- [`west`](#method.west) methods for examples.0                     Ɠ     H The local timescale. This is implemented via the standard `time` crate.K9H on the Local struct is the preferred way to construct `DateTime`K instances.  ) use chrono::{Local, DateTime, TimeZone};,( let dt: DateTime = Local::now();+1 let dt: DateTime = Local.timestamp(0, 0); 4   K9K  ,+ 4                           \ The UTC time zone. This is the most efficient time zone when you don't need the local time._; It is also used as an offset (which is also a dummy type).>9D on the UTC struct is the preferred way to construct `DateTime`G   9 R )D assert_eq!(Utc.with_ymd_and_hms(1970, 1, 1, 0, 1, 1).unwrap(), dt);G   _>9G   9 R )G          †         ׆     ߆                               P The conversion result from the local time to the timezone-aware datetime types. S ̭    , Given local time representation is invalid. /D This can occur when, for example, the positive timezone transition. G   / G < Given local time representation has a single unique result. ?  ?  I Given local time representation has multiple results and thus ambiguous.LD This can occur when, for example, the negative timezone transition.G   LG       ̭             ̭        ̭              ̭ Ӧ            ̭         ̭        ̭                       ̭ D       D    B % An error from rounding by `Duration`A( A  See: [`DurationRound`]A B E K Error when the Duration exceeds the Duration from or until the Unix epoch.BN B B Q # use chrono::{DateTime, DurationRound, Duration, RoundingError, TimeZone, Utc};CT ? let dt = Utc.with_ymd_and_hms(1970, 12, 12, 0, 0, 0).unwrap();CB D  D , dt.duration_round(Duration::days(365)),D/ 2 Err(RoundingError::DurationExceedsTimestamp),D5  E E E E BN B B CT CB D  D D/ D5  E E E I 9 Error when `Duration.num_nanoseconds` exceeds the limit.E< F F \ # use chrono::{DateTime, DurationRound, Duration, RoundingError, TimeZone, Utc, NaiveDate};F_  let dt = NaiveDate::from_ymd_opt(2260, 12, 31).unwrap().and_hms_nano_opt(23, 59, 59, 1_75_500_000).unwrap().and_local_timezone(Utc).unwrap();G H  H 2 dt.duration_round(Duration::days(300 * 365)),H5 - Err(RoundingError::DurationExceedsLimit)I0  I I I I E< F F F_ G H  H H5 I0  I I I L 9 Error when `DateTime.timestamp_nanos` exceeds the limit.I< J J JT ? let dt = Utc.with_ymd_and_hms(2300, 12, 12, 0, 0, 0).unwrap();KB K ^ assert_eq!(dt.duration_round(Duration::days(1)), Err(RoundingError::TimestampExceedsLimit),);Ka L L L I< J J JT KB K Ka L L A A A A  A A A  A A A A  A A A  A A A A  A A A A  A A A  A A A όA  A A A ׌A  A A A A A  A A A A A A A  A A A A    The day of week.W l 6 The order of the days of week depends on the context.p9 K (This is why this type does *not* implement `PartialOrd` or `Ord` traits.)N X One should prefer `*_from_monday` or `*_from_sunday` methods to get the correct result.[    Monday.        Tuesday.        Wednesday.        Thursday.   ˊ     Friday.   ֋     Saturday.   ߌ     Sunday.              Í                                                              Ɠ   1 @ An error resulting from reading `Weekday` value with `FromStr`.0C 1 1 2 1 1 1 ֏1  1 1 1  1 1 1 1  1 1 1 1  1 1 1  1 1 1 1  1 1 1 1  1 1 1 1 1  1 1 1 1 1 1 1     The month of the year.W r 0 This enum is just a convenience implementation.v3 J The month in dates created by DateLike objects does not return this enum.M  ? It is possible to convert from a date to a month independentlyB   use num_traits::FromPrimitive;" ʜ C let date = Utc.with_ymd_and_hms(2019, 10, 28, 9, 10, 11).unwrap();F  // `2019-10-28T09:10:11Z` + let month = Month::from_u32(date.month());. ( assert_eq!(month, Some(Month::October))+  . Or from a Month to an integer usable by dates1   # use chrono::prelude::*;  let month = Month::January; X let dt = Utc.with_ymd_and_hms(2019, month.number_from_month(), 28, 9, 10, 11).unwrap();[ > assert_eq!((dt.year(), dt.month(), dt.day()), (2019, 1, 28));A  A Allows mapping from and to month, from 1-January to 12-December.D * Can be Serialized/Deserialized with serde-      January             February             March             April             May      Ĩ         June      ɩ         July      Ϫ         August     ի       September   ݬ       October             November             December                           ɑ     ё     ڑ       ۑ                                    Ɠ   1  A duration in calendar months0! 1 1 0! 1  1 1 0 0 0 0  0 0 0  0 0 0 0  0 0 0 0  0 0 0  0 0 0 0  0 0 0 Ŕ0  0 0 0 Δ0 0  0 0 0 0 ϔ0 0 0  0 0 0 0  0 0 0 0 Ɠ0 0 0 0 0 0 0  0 0 0 0  0 0 0  0 0 0 0  0 0 0  3 @ An error resulting from reading `` value with `FromStr`.2C 3 3 3 3 3 3 ܕ3  3 3 3  3 3 3 3  3 3 3 3  3 3 3  3 3 3 3  3 3 3 3  3 3 3 3 3  3 3 3 3 3 3 3  "&*/38<@BDFHIKKTVW[_cmnnoppqrrstuvwxz}}~~Ӈъۊ  -357>FMPSVWXZZqstʂ؂ޅً Еڕ Π-../// grrs y ώĕޖސڑ   "%(*-/2469;=>@CEHKLNQRW ,GGHT &,02588:9;GFMMPZ\q Ƣ̍ƒġؚ͐˞ªԽ͐ڒ ث VVZ^eqzәږԥʎ  ӌ457888 |}~ކЇڇ ؙŚ $$$                            !!"""# &&& - + , - . 1 1 9 ? A %%&&,,  6<CHOT\bhnsy~˒M M M R       # & & & 3 3 3 4 4 4    " 4 4 4      "$%&()+-01fg i i i j k k lyyyz{{|~1111222OOOPPPPPPPPPPPWWWWWWWXXXXXXXeeeeeefgggggggaaaa!!!!!!!!!!!6666666667ƆƆ̆̆׆׆wwwwwՋՋ@ @ @ @ @ @ @ @ @ @                  A A A A A A A          1 1 1 1          0 0 0 0 0 0 0 0 0 0 0 3 3 3 3   :a      ƢyۣۣOutOfRangeError{ڬ ڬ 9 8} |î  î Ү  Ү      $    ʛ        в в ݲ ݲ b p ¡¡t     s   ĥy z {    s  } |   y ĪĪz˪ ˪ĥժժ  ¡¡ƫ ƫ ʛѫ ѫ   b p  89]aЩAdd AddAssign  Sub SubAssign  @D  <ɔ      p ¡¡ OldDuration '} y ĥֹۆ`  7 7 <=>?ABDEGHJKMNPQRTUVXYZ[\ 7 7  ming7 7  """g"7 7  &&&g&milli&7 7  **+g+ڜ+7 7  ///g/micro07 7  334g447 7  889g9nano97 7  <==g==7 7  @7 7 B7 7 D7 7 F7 7 H7 7 7 I7 7 KtzK77 7 7   {  ֹۆ` LL OO RR ڣ T7 7 V7 7 WbaseX7 7  [[7 7 cg_Ŗ_7 7 Ŗ˥] cch 7 7 h Ŗ˥]ɔ<Ʈh klmnopqrstvxz|~  m7 7 n7 7 n7 7 o7 7 p7 7 p7 7 q7 7 r7 7 s7 7 Ǥs s7 7  t t7 7  u u7 7  v v7 7  w w7 7  x y7 7  zz7 7     ڣ}}77 7 7ڣ   ~~77 7 7  ԙۭЩѩҩLessөԩթ}֩שةGreater٩˗8 77 7 7 D  77 7 7   ‚   7 7       ؇އ7 7    ‰ȉ C Ҋ؊777 7 7BBB@B@B@B @B@Bbuf@๴7 C 777 7 7BBB@B@B@B @B@Bִ@๴7  aЩWriteB  ږ  @D R)  F  UNIX_EPOCH  2  0   $  בɔ  <  ʛ      b p ¡¡ '{    y z   ĥ  ᅭΥ              7 7 C i 777 7 7BBB@B@B@B @B@Bִ@๴7   7 7  k 77 7 7  7 7  )) -7 7 37 7 57 7 77 7 >7 7 F7 7 M7 7 P7 7 S7 7 V7 7 W7 7 7 X7 7 ZZ77 7 7   }   \\ ``  cc gg  j@j  m@m  pp  q7 7 s7 7 t¤t7 7      src              dt7 7  7 7 ~   7 7 77 7 77 7 7 7 secformuse_z7 7  Ŗ7 7 ٦ 7 7  Ŗ˥]ɔ<Ʈ   7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 Ǥ 7 7   7 7   7 7   7 7   7 7   7 7  7 7    7 7 7 7 7 7 7 7 7 7  7 7  g7 7  7 7     77 7 7  77 7 7 77 7 7 D ˂ т77 7 7      7 7          ދ7 7         @   @  C 777 7 7BBB@B@B@B @B@Bִ@๴7 C ѕו777 7 7BBB@B@B@B @B@Bִ@๴7 U 7 7 ~ U  ˠ7 7 ~   tբ        a   @  B FromStr U         b y z ĥ0  בɔ Æܧ Æܧ Cy777 7 7BBB@B@B@B @B@Bִ@๴7 ق  7 7     { 77 7 7   7 7 Ӝ8        7 7   77 7 7 7 7 C777 7 7BBB@B@B@B @B@Bִ@๴7 ߗ՚                                                      7 7  77 7 77 7C777 7 7BBB@B@B@B @B@Bִ@๴7 ӠÍE-7 7._other.77 7 7C//777 7 7BBB@B@B@B @B@Bִ@๴7 ē%          17 71 1 77 7 717 7C22777 7 7BBB@B@B@B @B@Bִ@๴7 VCOO777 7 7BBB@B@B@B @B@Bִ@๴7 P7 7P P 77 7 7P7 7ڄCPP777 7 7BBB@B@B@B @B@Bִ@๴7 P7 7P P 77 7 7P7 7ܐCWW777 7 7BBB@B@B@B @B@Bִ@๴7 W7 7W W 77 7 7W7 7с(֦X7 7֦֦X X 77 7 7X7 7CڳXX777 7ڳ 7BBB@B@B@B @B@Bִ@๴7 `a``` x`` ```` <`` ʌ````  ``aaaaa  aa aaaa <aa aaaa  aaabaaa  aa aaab <aa abb bbb  bb bb bbbcbbb  bb bbbc <bb bbb bbb  bb bb bcccccc  cc cccc <cc ccc ccc  cc cc cccdcdc  cc dddd <dd ddd ddd  dddeddd  dd ddde <dd dde dd ʃdee e ee  ee ։eee  ee֮-֮-ԤCee777 7 7BBB@B@B@B @B@Bִ@๴7 e7 7e e 77 7 7f7 7g7 7Ԥ̛/CԤgg777 7Ԥ 7BBB@B@B@B @B@Bִ@๴7 Ԥg7 7ԤԤԤԤԤg g 77 7Ԥ 7ԤԤԤg7 7ԤԤCrr777 7 7BBB@B@B@B @B@Bִ@๴7 y7 7 7Јۣ_locale ԙۭ wÎ 777777 7BBB@B@B@B @B@Bִ@๴7 ԙۭ 7 ԙۭ 7 ԙۭ 7 7ʌ       с( 7ؽ 7Ͼ                                        ֐ԑlocale 77777 7  ԙۭ 7 ԙۭ 7 ԙۭ 7 7ʌ       с(  allow_zulu  colon_type 7 7   7 7  7 7   777 7  7 7  n7 7   Ŗ77777 7BBB@B@B@B @B@Bִ@๴7 ԙۭ 7 ԙۭ 7 ԙۭ 7 div_rem S ToPrimitive $  $   %   $     ʛ        b p  '} ĥy z ˔ç 7 7      77 7 7   7 7 C 777 7 7BBB@B@B@B @B@Bִ@๴7   old""7 7 ԙۭ  &&7 7  ((7 7  **7 7  --7 7  //7 7  227 7  447 7  677 7  997 7  ;;7 7  ==7 7  >>7 7  @@7 7  CC7 7  EE7 7  HH7 7  KK7 7  LM7 7  OO7 7  QQ7 7  RR7 7  W7 7  ~ 7 7  ~ 7 7  ~ 7 7  ~  7 7 77 7 7  ~   yXqXrX  ~  a R  L 5   ։<  ב    ˏ$  %   % %   $   % %   }   ĥpv7 7    7 7  *   7 7    ~                      s_                    *, , 7 7    ~  -.--- -- ---.-. ---  --  --- ---  --  --  -.  *G GŖG77 7  7              *H IŖI37 7  3  ~   JLJJJ JJ JJJLJL JJ JJL JJJJJ  JJ  JJKK  KK  KK  K ~KKK KK K ~KKKKK  KK KKLU  7 7$  % $   %   ĥ  pattern77 7 7  max7 7 ~    7 7 ~   87 7 ~   7 7 ~   7 7 ~   &7 7 ~   ,7 7 ~   0c107 7 ~   27 7 ~    57 7 ~   8 consume_colon8 7 7  ~   9 : allow_missing_minutes:7 7  ~   ;7 7 ~  FcolonF7 7  ~   M M7 7  ~      P7 7 ~    Z7 7 ~   \7 7 ~  [[[ [ ։[[<[[[ [[ [Ʈa7 7Caa777 7 7BBB@B@B@B @B@Bִ@๴7  f   kހ!7q7 7 ԙۭwzwwwwz w ww w w charswwww wwwwz xxx  xxxy xx x x x xx x xx  xx len_utf8xxxxx  y yy y yyy <yy yyz  head  tail   ԃӃ    <€Ȁ clearɀ΀πЀ  < push !   ÁƁ ǁρс  ҕ !8‚ <!8Ă Ƃǂ҂Ȃɂςʂ !˂Ђ тӂ  < ҕ ؅!    ڄۄ ܄߄   < ҈!ƅDžȅ  < extend_from_slice    ņƆ džʆ ˆΆ φ׆نه  <        ˥]C777 7 7BBB@B@B@B @B@Bִ@๴7 Ŗ  ܋Ŗ7  7 C777 7 7BBB@B@B@B @B@Bִ@๴7 U â7 7 ~ UU ޲7 7 ~ U       ʛ         a  ږ  @ R div_mod_floor  Y   0 )   $  בɔ  <  ʛ     'y yĥRSԜ  Ԝ  X ڗ7C777 7 7BBB@B@B@B @B@Bִ@๴7 7 77 77 7  exhausted܁,궦궦!7 7C!!777 7 7BBB@B@B@B @B@Bִ@๴7 !7 7D! !77 7 7! ! 77 7 7! ! 77 7 7#"͕F6 6 77 7 767 7D6 677 7 76 6 77 7 76677 7 777 7 GG  JDJ  M M M S S T  W W ^ ^  bEbb tEuu @@  ʑ Ց  ՘    77 7 7 months ȵ! ȵ! @ @ @ 7 7g7 7g7 7Δ gڜ7 7gڜ7 7Δ g7 7g7 7Δ Ăg΂؂7 7‹Ջg7 7Δ ͍7 77 7DȐ7 7 ǒ͒7 7 7 77 7 7 7š7 7    ¤7 7Ŗ7 7  7 7  Ŗ˥]ɔ<Ʈ 7 77 7 7 7 7 77 77 77 7ΐ7 7ٚ7 7̞7 77 77 7Ǥê ɪ7 7  7 7  7 7 ս ۽7 7  7 7  7 7 7 7    7 7 ȵ!ȵ!@@   7 7  ꒵(C777 7 7BBB@B@B@B @B@Bִ@๴7 7 7DƆ Ɔ77 7 7̆ ̆ 77 7 7׆ ׆ 77 7 77 777 7 777 7 ԙۭ77 7 ԙۭ777 7!ԝC777 7 7BBB@B@B@B @B@Bִ@๴7 7 7D 77 7 7  77 7 7  77 7 77 777 7 77Ґ7 7 ԙۭ7ے7 7!777 7!C777 7 7BBB@B@B@B @B@Bִ@๴7 C٫߫777 7 7BBB@B@B@B @B@Bִ@๴7 U 7 7 aB  ږ  @ R!  Y   0   $  בɔ  <       '} y   p z ĥ|  77 7 77 7D 77 7 7  77 7 777 7 77 7%nsecs%millis.Δ ;!;Δ  VV77 7 7 Z7 7^7 7e7 7q7 7z7 77 77 77 7ԙ7 7۲ Δ ļΔ  Δ Δ @Δ @Δ  Ŗ7 7  7 7  Ŗ˥]ɔ<Ʈ ۖ7 7 Ë Ƣ  ǬϞս  7 77 7ե7 77 77 77 77 77 77 7Ǥ 7 7Δ  7 7Δ  7 7Δ  7 7Δ  7 7Δ  7 7Δ 7 7Δ  7 77 77 77 77 7Δ ˎю7 7Δ g7 7Δ 7 7Δ  ̳ҳ  7 7    7 7  @@C777 7 7BBB@B@B@B @B@Bִ@๴7 C777 7 7BBB@B@B@B @B@Bִ@๴7 U Ќ7 7  ĥ@C  S mod_floor  W  FromPrimitive Ϛ\Ϛ\  77 7 77 77 7cycle, year_mod_400/  /  2 347 757 777 7 C88777 7 7BBB@B@B@B @B@Bִ@๴7 ܮܮw w 77 7 7w w 77 7 7w7 7  x ԙۭ|7 7}7 7~ ~7 7"7 77 77 77 77 7߆7 7 Cчׇ777 7 7BBB@B@B@B @B@Bִ@๴7 ɒٽɒٽՋ Ջ 77 7 7  77 7 77 7  ь ݌ ԙۭ7 7 7 7"7 7 7 7"7 7ٙ7 7 C777 7 7BBB@B@B@B @B@Bִ@๴7  j@ d S   Ԝ   Ԝ   ȘǤǤǤ  77 7Ǥ 7ǤǤǤ7 7ǤǤǤ  77 7Ǥ 7ǤǤ77 7Ǥ 7ǤǤǤ7 7ǤǤ  Ǥ 7 7Ǥ7 7Ǥ7 7Ǥ CǤ$$777 7Ǥ 7BBB@B@B@B @B@Bִ@๴7 a            ږ    @    R  ! Y     0   )      $   ב   ɔ      <             ' z    ة@ @ 77 7 7@ 7 7D@  @ 77 7 7@ @ 77 7 7@ @ 77 7 7@ 7 7 H H gH O O gO S S gS ڜS [ \ g\ ڜ\ ` ` g` ` i i gi i m m gm m v v gv v { { ߃     77 7 7   7 7   7 7 ۬"    Ŗ 7 7     7 7   Ŗ˥]ɔ<Ʈ   7 7  7 7 7 7 7 7 7 7  7 7  7 7 g 7 7  7 7 7 7         7 7          7 7      C  777 7 7BBB@B@B@B @B@Bִ@๴7  C  777 7 7BBB@B@B@B @B@Bִ@๴7  U  7 7    @  0  $   ב ɔ      ʛ    ĥ  {   }         ¡  ¡   @    !  Y    b  p     ʛ        '}  z  a     77 7 7   7 7 D  77 7 7  7 7     ԙۭ  "7 7 7 7   7 7 _local77 7 7Ë Ƣ  ǬϞս "77 7 7" _utc 77 7 7 !"!77 7 7   "7 7  C ""777 7 7BBB@B@B@B @B@Bִ@๴7  C &&777 7 7BBB@B@B@B @B@Bִ@๴7 --7 7  00   22   33   55    77    89       p     ʛ   {  }   io   mem      F   2  SYSTEMTIME Ύ "          }    y          ʛ      z    ULONG  PULONG  USHORT  PUSHORT  UCHAR  PUCHAR  PSZ  MAX_PATH   FALSE   TRUE   DWORD  BOOL  BYTE  WORD  FLOAT  PFLOAT  PBOOL  LPBOOL  PBYTE  LPBYTE  PINT  LPINT   PWORD   LPWORD   LPLONG   PDWORD   LPDWORD   LPVOID   LPCVOID   INT   UINT   PUINT   WPARAM   LPARAM   LRESULT   MAKEWORD    MAKELONG    LOWORD    HIWORD   LOBYTE   HIBYTE   SPHANDLE  LPHANDLE  HGLOBAL  HLOCAL  GLOBALHANDLE   LOCALHANDLE   __some_function  FARPROC  NEARPROC  PROC  ATOM  HKEY__Ń  HKEYƃ  PHKEY  HMETAFILE__ ǃ  HMETAFILE ȃ  HINSTANCE__ Ƀ  HINSTANCE ʃ  HMODULE  HRGN__˃  HRGÑ  HRSRC__̓  HRSRC΃  HSPRITE__ σ  HSPRITEЃ  HLSURF__у  HLSURF҃  HSTR__Ӄ  HSTRԃ  HTASK__Ճ  HTASKփ  HWINSTA__ ׃  HWINSTA؃  HKL__ك  HKLڃ  HFILE  FILETIME݃  PFILETIME   LPFILETIME   TIME_ZONE_ID_INVALID U  TIME_ZONE_INFORMATION  PTIME_ZONE_INFORMATIONU  LPTIME_ZONE_INFORMATIONU  DYNAMIC_TIME_ZONE_INFORMATION  PDYNAMIC_TIME_ZONE_INFORMATION U  SystemTimeToTzSpecificLocalTime  U  TzSpecificLocalTimeToSystemTime  U  FileTimeToSystemTime  U  SystemTimeToFileTime U  GetTimeZoneInformation U  SetTimeZoneInformation U  SetDynamicTimeZoneInformation U  GetDynamicTimeZoneInformation U  GetTimeZoneInformationForYear U  EnumDynamicTimeZoneInformation U  +GetDynamicTimeZoneInformationEffectiveYears+ U  !SystemTimeToTzSpecificLocalTimeEx! U  !TzSpecificLocalTimeToSystemTimeEx! U     7 7Ë Ƣ  ǬϞս tm  ޏި  Сp g) ݃݃"ރ dwLowDateTime߃dwHighDateTimeݛҴ ft+ 7 7"", 7 7"sys- 7 7ΎΎ"ώwYearЎwMonthю wDayOfWeekҎwDayӎwHourԎwMinuteՎwSecond֎ wMilliseconds3"". 7 7""1 "1 77 7" 7 4  4  4 7 9 7 7 7 7 7 7 7 7 7 7 7 7 arg7 7 7 7  7 7 7 8  7 7 7 7 7 7 7 7 7 "7 7  7 7  7 7 8  8  8 8 8 8  8 8 8   8  8 8 8 8 8 8  failed with: {}8 8 "8 8 8 8 last_os_error8 8 8 8 g9 "9 7 7"? 7 7"A 7 7ס1ס1   7 7 C   777 7 7BBB@B@B@B @B@Bִ@๴7     _offset7 7 77 7 7"77 7 7"m77 7 7 m77 7 7 77 7 7Ë Ƣ  ǬϞս%%77 7 7"&m&77 7 7,m,77 7 7 @    F    2        b  p     ʛ   {  }   7 7  77 7 7 7 7  _state7 7"77 7 7Ë Ƣ  ǬϞս"77 7 7#"77 7 7"77 7 7 7 7  C777 7 7BBB@B@B@B @B@Bִ@๴7  C777 7 7BBB@B@B@B @B@Bִ@๴7 ǬϞս 7 7  77 7 7C  777 7 7BBB@B@B@B @B@Bִ@๴7  7 7D   77 7 7    Ë Ƣ  ǬϞս Π!gΠ!$$$g$ڜ$Π!))*g**Π!///g//Π! 3  67 7   : :< < < ===g=7 7Ë Ƣ  ǬϞսC C C D7 7H H I I7 7Ë Ƣ  ǬϞսO O O7 7T U U7 7ۗ#\ \E\\7 7b bEcc7 7ۗ#hh!h7 7nn!n7 7#s!s7 7y!y7 7#~ ~7 7 777 7 7 7 ~ 7 777 7 7Ë Ƣ  ǬϞս77 7 7ޞ#77 7 7ۗ#77 7 7#m77 7 7mƒ77 7 7m77 7 7m77 7 7 }a   P y  o ʛ   p    z     Щ   @  Sized            8   8   8  8 8     # # duration#   ~ #) #)  #  + #+   ~   , #,  Ȩ# . #.   ~  / #/  #>0 original0 #0   ~ >: #: #:  #CA A 777 7 7BBB@B@B@B @B@Bִ@๴7 A 7 7A A 77 7 7A 7 7 CM M 777 7 7BBB@B@B@B @B@Bִ@๴7  R 7 7 7  @  ߱  77 7 7 7 7 7 7C  777 7 7BBB@B@B@B @B@Bִ@๴7 D   77 7 7   7 7 7 7 7 7 7 7 7 7# 7 7 C& & 777 7 7BBB@B@B@B @B@Bִ@๴7   +  . 𞺘1 7 71 1 77 7 71 7 7 C3 3 777 7 7BBB@B@B@B @B@Bִ@๴7  C4 4 777 7 7BBB@B@B@B @B@Bִ@๴7   @  t  77 7 7 7 7 7 7C  777 7 7BBB@B@B@B @B@Bִ@๴7 D   77 7 7  7 7 7 7 7 7" 7 7   *  ԙۭ + # + #򕿀򕿀0 7 7C0 0 777 7 7BBB@B@B@B @B@Bִ@๴7 0 7 7D0  0 77 7 70 0 77 7 70 0 77 7 7 #2 •҈t3 7 73 3 77 7 73 7 7 C4 4 777 7 7BBB@B@B@B @B@Bִ@๴7    ĥ   7 77 77 77 77 7 7 7 7 7 7 7 7 7 7 7Ǥ 7 7 ԙۭ 7 7# 7 7# 7 7# 7 7# 7 7#7 7#7 7  "7 7$7 7#&7 7&7 7(7 7))7 7#++7 7#-g-7 7#007 7#17 7 Δ               Δ  Δ  Δ  Δ  Δ  Δ  Δ  Δ  Δ  Δ  Δ        7ץ                           ^PPQhQtQQQRSRSPSSS;TTT&UvUUVaVVVLWWW7XXXXYYYYYYZZZ/ZZ[h\']3]C]S]c]o]]]]]]]]^_,`C`aaxcdegg&h$jj4k2mmAno+ppq{rr?ssttjuuAwXwwxyyyzzz{{|~~~~]k(_́;rE|؃g-L\sЇ=wȈ߈Sjv̊=zЋ &H~ԌNg/H͎#/@Qbs4EVctŐ֐Iّm“ϓ$1BS`q%6GXiz˕ܕЖė C PܨI԰Xʹp϶bZ+ȹ,#P}ļ%Tž H\*D ;-F_ /Z#1P+ ";x/l#`C@}zT H<9vs7Le'd";y(A~-k3p]v %G},j "_ L 3kxMPi u    <   {8w8(9JYhw2g)9IYiy;Ws3W{UwV g  !x!!4"""K##$i$$%z%%%&F'''h((")~))6***J++,q,,)---./01225)5B5[5m5~5555555556 6-6>6O6`6q666666697P7%8899=::e;<<!==E>>]??@YA)BB=CC_DD ,A  H*Y. [/_C h, c    K   "   a4.!!!!!u''v+.N/~/// ~1 -3 4#: X<"-A C DDH`KMOQ$UW\\]2]j]]]Ea^aaccc-dFdhddpiiiijn$nUnnnn(oAoZoooo.pfpppptu'u_xx {,{d{{ || }}}}}~~)~:~G~X~i~z~~MZk| /@QboĀՀ7-#;u= Y py|!yAV=y&^aq!6f bq- 00X{_v p   [&<1 !A!Z!!!!%(0///0P0>4`44'88 9$9F9w9999>>%A]AKDmDDD NxNNNOOOOOOO0PjPPPP.Q>QMQZQkQ|QQQQT ^V Wu[[[v\\\\\\\\\]]]]] ^^+^<^I^Z^k^|^^^^^`%cdgahilmn}q @@@@ABAGC#DJFH!H\HsHHI}}1~~$5L-cՂhڃ܅LdM$Zx YȉT΋ C|$]э" f PԓsWו3{0jwU>xћ d?Ӟ'DIˡA~1n Jlnjѧ#ըHYvʫB|.~ЮLUжK۷iʸ(a۹Q-jǼ=v)fA_ҿ#RtW C[{?n6s&_w^5{:Z OP`aq+mWC37agw![vUE~_z7p:w*c|/`!D=7Ww@e`{KnQs&ci    6 s  0'dT0#`LkO uO N:u7 x   6!!!!<"x"""6#w#"$c$$f((((')`)))y**+3+p+++,\,,,, -C----3.p./L////040q000$1]111212e222 3H3334G44"6E666657r78N8888:9w997[Y[|[[[/\l\\H]]]^?^x^^^+_h__-aPaaab@b}bcYcccdPddjfGgggg7hohzj|kkk/lllllm\mmnnOoopIpjp6qqqq1rJrrrrVsoss t&tdttt;uTuuuzvvvxww x y z | }~v)b܀R.jރ2h/HӅC\ΆWq$a=z-f ]ӌM Uߒ3f(ArƔ3L~ҕAZ̖Unߗ.i6sOɚ?x1x؜Nȝ>{WԟNĠeġ:w*ȣңܣ",6@JT^hr|¤̤֤&0:DNXblvåΥ٥ !+5?IS]gq{ŦЦۦ(3>IT_ju§ͧا%0;FQ\gr}ʨըߨ%/9CNYdozǩҩݩ *CNYdoyɪӪݪ#-7AKU`kvʫԫޫ%/9CMWakuŬϬ٬ #.9CMWbmxŭЭۭ(3>IT_ju®ͮخ%0;FQ\gr}ɯӯݯ&1<GR]hs~˰ְ #.9DOZep{DZѱ۱ !,7BMXcnyƲѲܲ#.9DOZep{ȳӳ޳  +5?IS]gq{˴մߴ%/9CMWakuŵϵٵ )3=GQ[eoyɶӶݶ$/:EP[fq|ɷԷ߷ '1;EOYcmwǸѸ۸ !+5?IS]gq{˹չ߹%/9CMWakuźϺں'2=HS^it̻׻$/:EP[fq|ɼԼ߼ !,7BMXcnyƽѽܽ !,7BMXcnyƾѾܾ ,8DP\htȿԿ(4@KValw)5AMXcny)4?JU`kv&1<GR]hs~ #.9DOZep{0 ;"*d#T9 0TxwNVFw#c E4+QY  ^u")33=== >&>?@UKKLMMN xSVbX/add,eheeefKffEi*j2jlmmm~n7ohozotyy|} ~`~~~ Gx`!̓i7 r+cՎl $Uƙ7ڛt\Gv/Ƕ˶ . No!7w@O>hmu,|Y>3   %z~Pe**Ya")1`h**8FTbp~ &Et|(t*8FTbp~$,Z#% dl.6rr<_%KR+L3;$2@N\jxEt|N x    !5!!>>?JJRRKTlTTT[UcUUUU6VVVVWW>WWW+X3Xffggghhjhhhhtjvj0k8khkkklelmllss'swssssLtttĂ̂$RZ5V^ ^݌ߌ7?m ‘H5=CKyƟΟ+3b.6em\o}Q GGg Ya~7?HZl~ow=lt,4b                                                         $$$$$$$          $ $    $            #""  $$$                                                    $                 ######  !#######################"###################"########""""""# ########              !! #""         ########## ############    PPlQ}QQQKRRHSSS3T~TTUnUU VYVVVDWWW/XXXXYYYYYYYZZ'ZZ[`\]+];]K][]g]w]]]]]]]^__`aJccfgijmmgo pqYrssHtNuuvwx_yyyy{};oπ=tPZ| )wAAԋ/^pҍ^'8IZk+<MZk|͐ސ@БdƓד (9JWhy->O`q•ӕȗ$+ޤ$r3zQC; ^y8e:3A)Qx3':|QE9vV-!^Ow;i=h?W 1It#.] 08wIc2 l }   3   r/n/0ARapGk!1AQaq3 'C_{c<`@k%./0113d5u55555555566$656F6W6h6y6666666T7q889::E;;i<==%>>=??@9A BBCC?DDGQGKMN'N:NMNNOQRRRRRRRRSS%S6SGSTSeSvSSSSSSSSSTT)T:TXTTTT U;UUY[}]]]^ddeFedeeeeeeeeffogg'vz-7}q =y   ' `  ? 2 S'T+}.,/e///\1 34]:6< ABDDH>KMOrQUW\\\]H]n]]*aIagacccd1dOd~d[iyiiiim n:nYnnno,oEopooo pDpjpppttuJxuxz{B{m{||}}}}}}~ ~1~>~O~`~q~~DQbs&7HYfẁ݀ $'Ո~Ӛ9PYc[]WԴo;h^ByMj@O q=zN   l  &!E!p!!!(///0.0)4G4v48889-9\9{999}>>A;A6DTDDD'FRFtFFFFFFFFFG G;GVGrGGGGGGH6HRHnHHHHH&IaIII J9JjJJJJ'KOKjKKKK L=LfLLLL6MmMMMNTNNNNO2OeOOO PFPPPP Q6QEQQQbQsQQQQT>VWa[[[m\z\\\\\\\\\]]]]^^"^3^@^Q^b^s^^^^^v` cdgilYncqsu}Ύiޙ!ޜ@ңѥQJ7Uκ +Zhx{>i (uka#4EVgt'8EVgxRyw-b=f0NjrEl,=J[l ):KXiv)Gr1Nwt:[|"M~B`}2_`/dK~Cu=# A ]    ) ^      E m x ,  H/j[yZ !$%(*',~..}/ 0L123K45p6<777-888#949B9Q9b9s99999999;Z>?@@@,ACD+FGH%H{HHI@I\IIII{JJ%KKKL,L=LNL_LmLzLMNKPBQRSS'T_UUU'V?VhVVVVVV WW(WIX YzZK[o[2]a]]]^2^[^^^^^^^^^5__`/aaaLbb cQcctdeeWffg8hjk\klVllDmmbn)))W***[++++G,,,,-)-k---.[..7/t////0\0001;11112H2o222$3s33314_46+6m666 7]7798e888%9b99#[@[b[[[ \W\\&]p]]*^V^^^_S__a6axaaa+bhbbDcpcc;dgdVf.goggg"hNhfjckkk lWlll mGmm_n7ooo*pRpqfqqqqarrsss=ttu|uSvvwwyz|s}~]@ǀ=z VƃP܄g+{?ևLeΉDtҋH8ʍ =xǒNՓZf)y=ǗQ^-w*V̛d,vߝ)fBn9e۠Qnۡ%bآWPPPaQmQ~QQQLRRISSS4TTTUoUU VZVVVEWWW0XXXXYYYYYYY ZZ)ZZ[b\!]-]=]M]]]i]y]]]]]]]^_&`=``arcdegg hjj.k+mm;no%ppqurr9ssttduu;wRwwx{yyyzzz{{{~~~~We"Yǁ5lڂ?v҃ a'F Vmʇ7qˆوMdۉoŊފ6sɋAw͌ G`(A~Ǝߎ(9J[m.?P]nАCӑgɓړ +<MZk|0ARctŕ֕ʖ=J֨CΰRǴ޴jɶ\T%¹&Jw}NAU#=3&?X (S *H $4q(eY<9vsMA~52o l0E^ ]4r!:w&d},iVo@v%c|XE ,dqFIb o    6   u2q2"3DSbq,ay#3CScs5Qm ,PtNpO `  !q!!-"""D###b$$%s%%%&?'''a(()w))/***C++,j,,"-~--./01*25"5;5T5g5x555555555 66'686I6Z6k6|66666637J788 997::_;;<==?>>W??@SA#BB7CCYDD5GaGHpHH&IIIK NN*N=NPNNPQQoRRRRRRRRRSS(S9SJSWShSySSSSSSSSS TT,T=TnTTTTTU-U=UZZZZI[[%]3]A]X]o]]]^^^^\__&```UaabbbQcdd6eTereeeeeeeef~ffTgggg!hRh{hhhh iPibiiiij7jhjjkklllmmnnoo5pp!q{qqqqq(rLr}rrrrsϟܟ 1BHq6i{'>N^pͥ*ĨTMfs/Pеܵ+):K\izo|ѹ"3@QbsĺѺ&7RmI]4L =8:AR'|T(X;a$ \    D    Z-&!!!!n'~'o+.G/w///w1&34x:Q<&ACDDHYKMOQUW\\]+]c]|]]>aWayaccc&d?daddiiiii jmnNnnnn!o:oSoooo'p_pxpppt u uXxx{%{]{{{||}}}}}~~#~4~A~R~c~t~~GTev):K\izπ1'5oSjs}uxrO|r VZj/_x[j&))QtXoi   T5  !:!S!!!!(///0I074Y448899?9p9999>>AVADDfDDD5FfFwFFFFFFFFFG-GHGdGGGGGG H(HDH`H|HHHHH I4IFIqIIIJOJJJJ KAK\KwKKKKK!L3LKL|LLLMRMMMM7NqNNNNOHO{OOO)PcPPPP(Q9QHQTQeQvQQQQTXVWo[[[p\}\\\\\\\\]]]]]^^%^6^C^T^e^v^^^^^`cdg[hilmynwq5sv}юEUnΙ/[le)Eg1=nvL} )vlb&7HYjw*;HYj{rG|3K_vD\|Md *^m/@M^o,=N[ly ,W#D\f ,Mn2c'Rb & $DyEzI~eFx@7 O o    C x     * _ n   E  ah+BH05d !/$&<(*F,.//*0x122S33k466=777.888$969E9T9e9v99999999;s>@@@@ALOLaLpLLMNeP\QRS TATmUUU5VMVVVVVVVWW6WcX$YZe[}[F]u]]](^@^u^^^^^^^^^`_``Naa bkbb)cpccd4eevfggWhj4k{k.lullcmmn[oWpppppxx%yRyyy&z{ |E||8}}+~~/ހF']ςbԃ {օF^GTrS‰܊Nȋ=vWʍ`JΓm Qѕ |-u*dߘqO8r˛^9ܝ͞!>Cġ:w*gC|fhd˧}ϨBSpī<v(ڭxʮFOʶEշcĸ!ZԹ J&c6o"_;Y{̿LnP<yUu9h/lXqX/u4~THJY[j$gP<y,1[aqUpN>wY{t1 | j3p#\u(Z}=6/Oo9^YsEhKl\b |   / l   ]M)Y EdGm GF2n/ p   .!!!!4"p""".#o#$[$$`(((( )Y)))r**+,+i+++,U,,,,-<-y---,.i./E//// 0-0j0001V111 2*2^2223@3333?4{46>6{666.7k7 8G888839p991[S[u[[[(\e\\A]~]]]8^q^^^$_a__'aIaaaa9bvbcRccc dIdddf@g}ggg0hihtjukkk(lelllmUmmnnIoopCpdp0qqqq+rCrrrrPshsstt]ttt5uMuuusvvvqwwxyz|}~o"[ՀK'd؃,b)Byͅ=VȆQjZ6s&_V̌ FOْ-`";l-Fx̕;TƖߖOhٗ(c|/lHš8q+rќG7tP͟ G_3p#£̣֣&0:DNXblvƤФڤ  *4>HR\fpzǥҥݥ%/9CMWakuɦԦߦ !,7BMXcnyƧѧܧ)4?JU`kvèΨ٨ )3=GR]hs~˩֩ #<GR]hs}êͪת '1;EOYdozīΫث )3=GQ[eoyɬӬݬ'2=GQ[fq|ɭԭ߭ !,7BMXcnyƮѮܮ)4?JU`kvïͯׯ *5@KValwİϰڰ'2=HS^it˱ձ߱%0;FQ\gr}ʲղ'2=HS^it̳׳$/9CMWakuŴϴٴ )3=GQ[eoyɵӵݵ#-7AKU_is}öͶ׶ (3>IT_ju·ͷط !+5?IS]gq{˸ո߸%/9CMWakuŹϹٹ )3=GQ[eoyɺӺ޺  +6ALWbmxŻлۻ(3>IT_ju¼ͼؼ%0;FQ\gr}ʽս%0;FQ\gr}ʾվ $0<HT`lx̿ؿ ,8DOZep{ !-9EQ\gr} "-8CNYdoz *5@KValw'2=HS^itPPZQjQvQQQDRRASSS,T|TTUgUUVRVVV=WWW-XxXXXYYYYYYYZZ!ZZ[Z\])]5]E]U]e]q]]]]]]]^__.``a7ccfgijlmTooqFr sps5tt;uuvCwwxLyyyyzz{{|~~~(_m*aρ=tGڃi^u҇?yʈUlxΊ ?|ҋ(J֌Pi1Jώ%1BSd%6GXevǐؐ:Α^ēѓ&3DUbs '8IZk|͕ƗЙѠrˤ_ݱ gmϴ>0(Kf2_'ܿ1- =/Hd%3h$=z1n%bB| J;u 9Ng)f$={*C/m5r!_x'I.l $u5azRk f w   -   l-l)*;L[j4i+;K[k{-!=Yu]5Y>Wx|%./011p35+5D5]5o55555555566"6/6@6Q6b6s6666666;7R7^88t9 ::2;;V<<=>>*??n@&AAB CC,DDG>GKMN%N3NFNNOQQxRRRRRRRRRSS0SASRS_SpSSSSSSSSSTT#T4TETvTTTTT'U5UBYZZZ[-];]I]`]w]]]^dde?e]e{eeeeeeeef\gg)hZhhhh(ijiiij?jjkklllmmnnpqqqqr0rTrrrrrǟן(9Ǡ'Py\>!/FVgV1|WYٵ" 1BSdqfwȹٹ*;HYj{̺ٺ .?Zu0<ucf#i]k)e    L  + !!!?'w'@+i./^///H124I:"<@B|DDH*KlMO^QTW\\\]4]l]]aGa`acccc/dHdjdYiriiiimn&nWnnnn*oCo\oooo0phpppttuHxaxz {.{f{|||}}}}} ~~+~<~I~Z~k~|~>O\m~ 1BSdqƀ׀ %ˆk&=F{PHIC{['TJ.cseFh,;]k)x:   X  !C!\!!!r(///00'4@4b4888 9&9H9y999{>>A'A4DMDoDD%F>FnFFFFFFFFFFG5GPGlGGGGGGH0HLHhHHHHHINIyIII&JWJJJJKIKdKKKKK;LSLLLL#MZMMMN@NzNNNOOQOOOO2PlPPPP0Q@QOQ\QmQ~QQQT+VW_[w[[g\x\\\\\\\\\]]]]] ^^-^>^K^\^m^~^^^^c`bdgilFnPqsu}xoǎВN^wUיtʜ,=6{5Np} $Ffvy<U"sdZ!.?Par!2CPar?fdxO;Sg~LdUl2f&7HUf'4EVct#4_ +Ldn4Uv:k/Zj,LMQ8mxAs7z ? W w    K      2 g v    5p3xWHfG !#%'l*,j..i//8123745\65777&8x889-9=9L9\9m9~9999999;G>?@@@@ACDFGH#H^HuHH I>IVIvIIIPJhJJJKKKL%L6LGLXLhLxLMN8P/QRSST]UuUU%V=VUVVVVVVWW&W6XXgZ8[m[]N]}]]^0^H^~^^^^^^^^0__`a{aa9bbb>ccadeeDffg%hjkIkkCll1mmOn)o%plppppxxy-y{yyy{{ ||}}~~~^ƀ!oށ03ă݃BOg'\ C\_Ȋ)vfG`uӎL%U,dۖ]?ǘY*̚ MFsߟ)} gWգ3MRC?e*o.X$Q֬`.˲*pܴеk-ZI̸+Ĺ޹:wSmʼ&@ٽO CaԿ%Tv@Z i$}Ap\v)@'`~g D}z~[<i!uSd@.@Z,il6<Y0X{.H_Ac\dR`z-D2#jc9YysChc~1Nq#TLf}l    \ v M=3IcOn7xxx6"=x`   !9!!!$"?"""#_##K$f$L(i((()*)))A***+Y+s+++E,,,,,#-i---.Y..5/r////0Z000 1'1111242h2223q333/4J46%6k6667[7778Q888#9`9z9[:[\[[[[U\\]n]]](^B^^^_Q_k_a0avaaa)bfbbBc\ccc9dSdPfgmggg h:h`jPkkkkUlllmEmmYnn1oloopLpqSqqqq4rMrrrsYsrsst)ttt u>uzuu=vvvv{wwy{z|`}~J,ŀ߀;xTJxքau,ԇJc0 nЋF67eHvϓTڔ`s*>\u̚(B^t˝'d@Z7QǠKhǡ#`z֢ʣԣޣ$.8BLV`jt~ĤΤؤ (2<FPZdnxťХۥ#-7AKU_is}ǦҦݦ *5@KValwħϧڧ'2=HS^it̨ר '1;EP[fq|ɩԩߩ !,EP[fq{˪ժߪ%/9CMWbmx«̫֫ '1;EOYcmwǬѬ۬%0;EOYdozǭҭݭ *5@KValwĮϮڮ'2=HS^it˯կ߯(3>IT_ju°Ͱذ%0;FQ\gr}ɱӱݱ#.9DOZep{ȲӲ޲%0;FQ\gr}ʳճ "-7AKU_is}ôʹ״ '1;EOYcmwǵѵ۵ !+5?IS]gq{˶ն߶&1<GR]hs~˷ַ )3=GQ[eoyɸӸݸ#-7AKU_is}ù͹׹ '1;EOYcmwǺѺܺ)4?JU`kvûλٻ&1<GR]hs~˼ּ #.9DOZep{Ƚӽ޽ #.9DOZep{ȾӾ޾ ".:FR^jvʿֿ*6BMXcny+7COZep{  +6ALWbmx(3>IT_ju%0;FQ\gr}^_Kcfimhoqa ֈw`diZnsS\z[ !$(M15xy5y^__:``afcdwdgg hjjkmm$nopfpqirr-ssfttXuuwOwwxoyyyzzz-{{{@}~~K߀M)`΂jJلh9Ɔ*jއ%Xֈ4a3ۊ(X9iʌ,]zݍ >p܎Ŗ /<Ȩ5Dҳ۴\NFyBo#D<K3 )<U#EC!1cWK. hZ?3p'|aS-b*[O1W7iIz)[ ;l8hHyJ&$Zl<_'Wt I0Lhl$HlIw@.L  !]!!"t""0###A$$%_%%#&*'''>(()b))*v**.+++U,, -i--./011385Q57G7]7{899-::U;;y<==5>>M??@IABB-CCODD+GZGGLHHIlIIKMNOQQ;RgTTTUYZZ![[\U]l]]V^^=__`l``6aabfbb2cdd,eOemef^fff~ggghKhvhhhhiDi^iiiii0jajjjklll1mm-nnoeoo{pqgqqqq rBrsrrrr sClz#Zw?++9cgȰ%bjƵNi?S*G3.07H ^?}oN1LG    : }  b P#q !!d'e+.=/o///m134n:G<ABDDHOKMOQUW\\]&]Y]w]]4aRaqacccd:dYdddiiiijmnDnbnnno5oNoooopUpsppptuSxxz{S{v{||-"0 [I`isknhyErhL8'WsQ `<_N Z_   ?}   !0!N!!!!(/// 0?024Q44888979f9999>>ALA?D^DDD0F\FG)GDG_G{GGGGGH#H?H[HwHHHHHI/IBIjIIIJEJ|JJJK7KXKsKKKKKL/LFLrLLLMHMMMM-NgNNNNO>OqOOOPYPPPPQQQTNVWj[[^`cdggillonmq+su}#kzę*Qb[@_ߺ'5dqGsh =r)Fvs :Wt4a|"PP=W%Fg+\ K<op ?t[- J g    9 n     % U   7  S|?:"uBxw !!$ &.(*8,.//0j11223]456;e>@5@@@A5A)CD6FGH=HjHHH(IIIfIIIJ\JJJK5KKLLMN[PRQRST7ThUUU0VHVxVVV1WYXYZ[[x[<]k]]]^;^k^J__`@aaa]bbcbccd&eehf ggIhjkmk lgllUmmsnMoIppxxyJyyyz+{|=||0}}#~~'{ր>z"SʂXσ_΅[݇Jk׈NՊ F5qیRōގYBƓeIɕt%m"\טi G0jÛV1ԝŞ690r%b>r_` \çuǨ:Kh4n ҭp®>۲G{¶=wͷYܸPϹE^ *1eZ1RsĿDf K2tK1`%gNgEpb ,kL(95XT K7t'*|SYiM hD9mQsltb ,kRk#P5#{Jj1V{4p>`AeW * y   % g  X H$hT;]BG=A-d% k   )!p!!!/"f""")#j#$V$$Y({((()O)))h***)+d+++,P,,,,-5-t---'.d..@/}///0&0e0001L1111#2T2{22263|333:4q4676v666)7f78B8v888.9k99*[L[n[[[\`\\7]y]]]3^g^^^_\__ aBaaaa4bqb cMcccdDdxd]f8gxggg+h_hmjmkkkl`lllmPmmvnnAooo5p\p"qqqqqr@rsrrr6sessstOttt&uJuuuevvv5wwxyz|}}~gQЀF_Ѓ %Z!;qƅ5OچIc߇U,n߉!Uۊ{ۋQŒAۍGђ &Xߓ4d%?pŕ3Mؖ Gaї [u%g>3g(kʜ =2o KʟBvXy.k9^__4``aXcc%dfggjjjmmmuo p:pq[rrssKttPuuwIwwxayyyyzz{{{ }~~=qр?vR\~ <˅+[dy؇CЈ[ՊC֋0`ČWqԍ8`֎˗&-&t5|óմSE=a {9f;6B* V6Ony5=+S G;xRX)/c#`KQ"z'>Ul?k+B1Y4t#Kw&f/_3s:zJzf 3Y!Hn4*Fb~f?cCne v  ,!!!C"""Z##$x$$.%%%&U'' (w((1)))E***Y++$,,,8--./011325K56A7W7r889::F;;j<==&>>>??@:A BBCC@DDGTGvGHHH;IIKMNOQQ R[TTT UYYZZZ^[[O]f]]%^^ _q__;``ajaa5bbcddeIegef-fffrgggg?hphhhh i>iXiiiii$jUj}jjkkllmmnn o4ooJpq6qqqqr9rjrrrrsР=f~qTq60ѩ]6֬\aHcz0DA*%w'{.8~-t>>n!  |   * m  1 @p 6 !!T'U+~.-/f///]1 34^:7< ABDDH?KMOsQUW\\\ ]I]q]]+aLahacccd4dPdd^iziiiim n;n\nnno/oHoqooo pEpmpppttMxvxz{C{p{|| '**Ԛ:QZd\^Xմp<i_CzzNmAP r .>n)}O   m  '!H!q!!!(///0/0,4H4w48889.9]9~999>>AGYGuGGGGGHH9HUHqHHHHHI)I? @@@@/ACD-FGH(HdH|HHICI]IIIIVJJJJ&KKK}LMNLPCQRST(TbUUU*VBViVVV+WJX Y{ZL[r[3]b]]]^5^\^6__`1aaaNbb cSccvdeeYffg:hjk^klXllFmmdn>o:ppxxyAyyy z%{{4||'}}~~ r̀5tDĂIɃJŅU|ԇ;eȈHpuϊ=},ǩLt؎S9\@kdSΘ`>'aM(˝-0 lӢ\8bYWS l1B_+eݬɭg5Ҳ>wr4nķPӸ@ɹ?| X!߼+U޽T!Lj ;]Eo"n;(Wya>W<g|Y#bC~&%zEDEo1n!$sJP` D_ 43]vHjckY#eB[Go ,oh Dd| (Mrj8Wz8\Q{ s    a  RBINx+Wx<}',};'S e   #!P!!!)"U"""##d##P$|$S(r((()?)))X***#+^++++J,,,,-,-n---!.^..:/w////0_0001<11112K2r222%3v33344`46.6p666#7`77<8f888(9e99$[C[e[[[\Z\\']s]]]-^W^^^_V__a9a{aaa.bkbbGcrccd>dhdWf/grggg%hOhgjdkkklZlll mJmmann8ooo,pSpqhqqqq:rcrrr!s_ssst?tttuDuuuUvvvwwwyz|t}~^Aʀ@} YǃQ݄2h,F|ц@ZهOhωEuՋK;ˍ >yȒO֓+[6g*Dzϖ>XȗRla.z-WΛ"e-y,iEpğ<fܠRpܡ(eۢ3;5CU_(k^__`ajcd{dgg hjjk#mm(nopjpqmrr1sst\uu/wwxsyyyz1{{w~OQ-d҂nN݄l=SLJ*n J؉bŠ-p>nD%uÎǖ4Aͨ:ŰI׳aSKGt%I>P 8.%JEh\P3%m _D8u,fXBTona`S=m`O+)_nA)\v^ 2Njn)MqK|E3Q  !b!!"y""5###F$$ %d%%(&/'''C(( )g))*{**3+++Z,,-n--./01!24*7_78992::Z;;~<==:>>R??@NABB2CCTDD0G\GGQHHIqIIKNNPQ@RiTTTUZ&[[]][^^B__ `q``;aabkbb7cdd1eQeoefcfffggg hMhxhhhhiFi`iiiij2jcjjkllmnojoopqlqqqq%rGrxrrrrsEn(\yD04>3pͰ*do˵PkDX/I835<M"cD#tS6QL    ?   g U(!}!i'j+.B/t///r1!34s:L<!ACDDHTKMOQUW\\ ](]^]y]]9aTavaccc!d>AQAADcDDD2FaFG+GFGaG}GGGGG H%HAH]HyHHHHH I1IDIlIIIJJJJJJ K s     ' Z  <  XW?'zG}| !&$&3(*=,. //!0o11233b456j> @@@A7A;FGHSHHH-IKIkIII?JJK:KK LLMN`PWQRS T5t'd@waeaȧz̨?Pm9s%׭uǮC LǶB|ҷ ^UѹG!` /3j\6TxɿIkM7vP6e*iSlJu!g1pQ*;:ZYM9v),X^nRmI;rVxqyg1m Wp%U:(}!Ll6[V@eFjY Y   * i  Z J&V @_DdBC/i* m   +!!!1"k"""+#l#$X$$[(((()T)))m** +f+++,R,,,,-:-v---).f./B////0+0g0001Q1112%2Y2223;3~333<4v46<6x666+7h78D8{88809m99,[Q[s[[[#\b\\<]{]]5^l^^^!_^__"aGaaaa6bsbcOcc dFd}d_f=gzggg-hdhojrkkk#lblllmRmmnFooo:pap'qvqqq(rxrrMsstTtt2uujvvdwxyz|}~lVҀ H"aՃ*_&@v˅:Tņ߆NhW1p#Z}݋SnjCL֒+]9i*Duʕ8RÖݖLf֗%`z*iC5lmϜ B4qMD{Z~0m `aWccfgjjmmto pqZrssItOuuwwx`yy }<Ѐ>uQ[} *_Ӎ_%,ߤ%s4{³RD< _z;B* Ty4}R F:wW."_P>XJ^ 9J3Hfn./01136r889::F;;j<==&>>>??@:A BBCC@DDGTGKMNOQ[TTT UVY[effrg?hhh iii$jUjjklmn oqqqqr9rjrrrp-ͩӬ0D*%w'{.8~t>! |   * m  @ 3 T'U+~.-/]1 34^:7< ABDDH?KMOsQUW\I]+acddii;nnoqo pEpptvxC{|Ԛ:QZd\^Xմp<i_CzAP r>O   m'!q!(//0w48]99>?@@/A,FGHIIII~J&KKMNLPCQRS(TUUiVVJX Y{ZL[3]b]]^\^_`0aaaMbb cRccudeeXffg9hj]klWllEmmcn=o9ppxz%{{4||'}}~~ r̀5DII{ԇ;eȈpuϊ=},̌tS9\@kdSΘ`>'aM(˝-0 ӢbYWS l1B_+eݬɭg5Ҳ>wr4nķP@ ߼U!Lj ;]o";(Wy>W;{XbC}$Co$sJP` D_4]vB[G {88{   Hx+W&,S  O!U""#|$S(?)X**++,,--.///0<112K2%33`4667f889$[\']]W^^_aabqchdWf/ggOhgjdkllm`n8ooo+pqgqbrs>tTvwwyz|t}~^A ǃQ݄h,|@ωEuˍ >yȒO֓[g*z>ȗR.W͛e-ofܠRܡfSg^di t:_.Nn;5Y} 1VDtI2Fu+Pu*Nrl&<a%Im^Bg,^&X$6/i:EPwiD-b[Jf!t%')3=GQ[eoy)4?JU`kv<~"""")#Z####$O$$$$%E%u%%%&9&j&&&n)E)qz4''$(((M,,,z.R0!0+001000000000000 134k444e5S55X66A77588 999E::>;;Y<-<6<A<<<K=== >>??@xKKKL*MSSSVXXYBYbYYYYYY1ZkZZZZ[;[\[}[[[0\\\6]]]>^l^^^^_D_j____`$`X``paaab`+MeϗH{Gv)T '|Ơ3ѡ\آ=}ۤ 9h '϶߶yǷ&Z˽Q1t*Y;i\yR2>TK|Q=H eLj&2`~j)Mq~G;_dY_:^Fv6] 0]@9<C (:W>vA4~ Has'9d+Ah[W  !Q!!Y.>3?JRbT~TTuUUVVVV"WZWWWEXfgg:hhhijKkkk3lllGsssthtt6lL~΅.͉Qۍ',dO]E~H!m+c+)sQ?3OF~'"`a=ccdfggijjlmmZoo-pqLr}rsvs;tAuuvwxRyyz|.€0gՁ CzM~o/NrQ݌ōQ֙נxѤe&msD6.Ql-4Dak&oD8u,iEI VQ>Bx0J<P+<m%r:^yX i  !z!!6"""M##$k$$!%|%%&H''(j(($)))8***L++,s,,+--./011w36d88z9::8;;\<<=>>0??t@,AABCC2DDGDGiGHxHH.IIKMNOQQKT|TTTHYZQ[[^^^d__.```]aa(bbbee fffbggg/h`hhhh.ipiiijEjpjjklmnn'oo=pp)qqrZrr-Vb D y֥Ŭ"6 { i m *p d1r0a l    S  $ 2c % F'G+p./O124P:)<@BDDH1KsMOeQTW\;]acdqdii-nnncoo7ppthx5{|Ȉqƚ,CLVNPJǴb.[Q5l3Bdr!0aA   _!c!y(/!0i48O99>.AvDEFHITIII,J]JJJKKKYLLLL)M`MMM NGNNN%OXOOOO9PsPPQQT1VW}[i`bdggillLnVqsu}vג\{ќ3ţĥD=w M\Elj~ U Y#8:ej@q5pRS"W>s }    Q   8   ;" ~]NlM !#%(r*,q..p//?11223>45c6M>?@@AFGHI|IIInJKKMN>P5QRST{UU[VV[%]T]]^N^_`"aaa?bbbDccgdeeJffg+hjOklIll7mmUn/o+prpy&|} ~~d'69mć-be/f|+2E0ҚSyŢܣTIEu4W 0ֵ`2tѼGڿ+|a+G}0G-mJo5a<B6&Of4K9b)m } :jE  A!G""#n$1)H**z++,,-.//0.11;233R467X889\]]I^^r_abccZd!ggAhVkllmropYqTrys0tDvwzf}P3~ 2 7k|0DӚIҝaXΠΡ%",f'V2VzNXJy%gG8Q[ 3@KLMbdd0eleeefMffKi*j4jlmmmn;ojoy|}"~d~~~K|dkt׎(Wș 9ܛv`KB{FQlmw.@'g,Yc)3`jGt~$.\' dn.8tTN3=Gt~z     !7!!>?JRnTTT[UeUUUU8VVVWW@WWW+X5Xfggghhlhhhhxj0k:kjkkklelolls)swssssNtttĂ΂&R\V` `ߌ7Ao đJ5?CM{ƟП+5d.8eoS IG Yc7A!oy?lv,6d <`tQwzz{~~l؈c݊̌_@ގݴ>W #3/]39|+n{a:5S5I7QZZW]n]klmnèe!!muc  ~A@lH^JJxy]r{ !++]cnBrrgsttLuuvw*̟;v{wxyzzb{|}ړVіܟKAyگGֶ`x ,!5)~xr |qeZO\RRjjkl{nn$q-&WvWNod_GSs3Ss3Tzwxyzza{|} ٓUЖ]@xٯF43Cw L+ 4(wq {pdYN[RRjjklznn#p~,%VuVMnX9FRr2Rr2SVawwxyzD{M|E}Ɉl+cЯ>olwmI"xb\~sh]QF;Rjkl^nnd ;T6J j*J j*JfwwxyzI{R|J}Έq0hկCtq|rN'} gaxmbVK@Rjklcnn i@Y; Oo/Oo/OTt562W|9y*-Qu)Ns3c8!n3b#Hm"Fj[z4Y~>bx59^K}E#U dV1sO@ cs`h!"""#H#y### $=$n$$$%3%c%%%%'&X&&&P)+''(((9,l,,h.6013u44\55O66877!8899::';;P<<B=??@YKKKL M~SSSVXXX'YPYnYYYYYZBZ|ZZZ[([I[j[[[\S\\][]] ^c^^^^_;_a_____`D`x`gaaab3bXb}bbbbc7c]cccc%dWdddd R;Y  NaY!Eit63W[HW{2Vz5e%U(L|/(o4o;vO 6d/"v@| \VIO  !?!!>!?JRvTTmUUUDVVWHWWW=Xfgg&hxhhhjBkrkklwll5ssstVttڂ.dllĉI{ɍБ$RGU؟=l@{[#Q#kI-G~>l-)ymopqrstuvwxyz{|}  g"        !!         mopqrstuvwxyz{|}  g"                !!****   !! **!****mopqrstuvwxyz{|}                !!** mopqrstuvwxyz{|}                !!** !!!!        !!** !!             !!&'(&'(! !!!!!!!!!!!!!!!! !!!!g" g"  !g"  !g"  g"      g"  g"!!g"!!g"!g"!g" *$   .",PPPXQhQtQQQBRR?SSS*TzTTUeUUVPVVV;WWW+XvXXXYYYYYYYZZZZ[X\]']3]C]S]c]o]]]]]]]^__,``a5ccdfggijjlmmRoo+pqDr{rsns3tt9uuvAwwxJyyyyzzz{{|~~~&]k(_́;rE|؃g-L\sЇ=wȈ߈Sjv̊=zЋ &H~ԌNg/H͎#/@Qb#4EVctŐ֐8̑\“ϓ$1BS`q%6GXiz˕ėΙϠpɤ]۱ekʹ<.&Id0]}%ڿ/+ ;-F_b#1f";x/l#`C@}zT H<9vs7Le'd";y(A~-k3p]v %G},j "s3k_xPi d u   +   j+j'(9JYh2g)9IYiy+;Ws[3W<UvzwV g  !x!!4"""K##$i$$%z%%%&F'''h((")~))6***J++,q,,)--./011n35)5B5[5m5~5555555556 6-6>6O6`6q666666697P7\88r9::0;;T<<=>>(??l@$AA~BCC*DDG+g./\///F124G: <@BzDDH(KjMO\QTW\\\]2]j]]aEa^acccc-dFdhdWipiiiimn$nUnnnn(oAoZoooo.pfpppttuFx_xz {,{d{|||}}}}}~~)~:~G~X~i~z~<MZk| /@QboĀՀ#߄i$;DyNFGAyY%RH,aqcDf*9[i'_v8}   V  !A!Z!!!p(////0%4>4`4888 9$9F9w999y>> A%A2DKDmDD#FNxNNNOOOOOOO0PjPPPP.Q>QMQZQkQ|QQQT)VW][u[[e\v\\\\\\\\\]]]]] ^^+^<^I^Z^k^|^^^^a`bdggillDnNqsu}vmŎΒL\uSՙrȜ*;4y3Ln{ "Dd}tw:S qbX,=N_p}0AN_p=dbvM9Qe|JbSj0d$5FSd%2CTar!2])Jbl2St 8i-Xh*JKO6kv? q5x = U u    I ~     0 e t    3n1vU~FdE !#%'j*,h..g//611223545Z63777$8v889+9;9J9Z9k9|9999999;E>?@@@@A CDFGH!H\HsHHI***+V+p+++B,,,,, -f---.V..2/o////0W000 1$1111212e222 3n333,4G46"6h6667X7748N888 9]9w9[7[Y[[[[R\\ ]k]]]%^?^^^_N_h_a-asaaa&bcbb?cYccc6dPdMfgjgggh7h]jMkkkkRlllmBmmVnn.oioopIpqPqqqq1rJrrrsVsoss t&ttt u;uwuu:vvvvxwwyxz|]}~G)€܀8uQGuӄ/^CrΆ)WчG`-k͋C34bEs̓(Qה3]Ap̖'Uߗ ;iYrɚ%?[qȝ$aߞ=W4NĠHeġ ]wӢȣңܣ",6@JT^hr|¤̤֤&0:DNXblvåΥ٥ !+5?IS]gq{ŦЦۦ(3>IT_ju§ͧا%0;FQ\gr}ʨըߨ%/9CNYdozǩҩݩ *CNYdoyɪӪݪ#-7AKU`kvʫԫޫ%/9CMWakuŬϬ٬ #.9CMWbmxŭЭۭ(3>IT_ju®ͮخ%0;FQ\gr}ɯӯݯ&1<GR]hs~˰ְ #.9DOZep{DZѱ۱ !,7BMXcnyƲѲܲ#.9DOZep{ȳӳ޳  +5?IS]gq{˴մߴ%/9CMWakuŵϵٵ )3=GQ[eoyɶӶݶ$/:EP[fq|ɷԷ߷ '1;EOYcmwǸѸ۸ !+5?IS]gq{˹չ߹%/9CMWakuźϺں'2=HS^it̻׻$/:EP[fq|ɼԼ߼ !,7BMXcnyƽѽܽ !,7BMXcnyƾѾܾ ,8DP\htȿԿ(4@KValw)5AMXcny)4?JU`kv&1<GR]hs~ #.9DOZep{qdx{xEpڊ^dWs/zCb^(,/(26/[%abfrjnxp]=ti;Pd/-< >JR6TMTVfbj s 7Έˌ؞NYn=@DKY]aelptx| #'+/3BQU^m|*.9HLWfjq'5CSZbfjq.>BSWim|$,08@IMU]eiqy}    % * / 4 9 > C H M R W \ a f k p u z     " * < D V ^ o   " * 2 : T \ v      ! ) . 6 ; C H P X ` h m r    # ( 6 > F N V ^ f k s {  #/=K]ns %-5:BJRW_got| "*/7?GLT\aiqv} "',16;@EJOTY^ch08=EJ]q #8EJRem $).38=BGLQV[`ejo$).38=BGLQV[`ejoty~:Kd} 1FXm8@ERW\afkpuz1FNav~ !&+05:?DINU]o)>Zuz(0>Zb!&.<AIY^chmrw|'/7E^chmu}!&+05:?DINSX]bglqv{  $ 4 @ E M U ] b q !/!L!m!u!}!!!!!!!!!!!!!!!!" """"*"2"B"Q"Y"a"f"n"v"{""""""""""""""####%#-#5#=#E#M#U#]#e#m#u#}###################$ $$$ $%$-$2$:$B$G$O$W$h$m$r$$$$$$$$$$$$$$$$$$$$%% %%%%%$%)%.%3%8%=%B%G%L%Q%V%[%`%e%j%o%t%y%~%%%%%%%%%%%%%%%%% &&&!&)&?&\&v&{&&&&&&&&&&&&&&&' '''!')'1'9'A'I'c'k's'{'''''''''''''''''''( ((((#(((0(8(@(H(P(U(](b(j(o(w(|(((((((((((((((((((() )))!))).)6);)C)H)O)W)_)d)k)|))))))))))))))))))* ** *(*2*;*E*Z*_*r*w*********+ ++(+7+A+R+W+h+m+r+z+++++++++++++++,,,,&,8,E,J,R,a,f,k,p,u,z,,,,,,,,,,,,,,,,,,,-- -----$-)-.-3-8-=-B-G-L-\-p--------...X.`.~............../ ///!/)/1/9/Z/_/g/o/t/|/////////////////////0 00000"0'0,01060:0>0B0F0J0N0R0Y0^0c0h0m0r0w0|00000000000000000000000001 11)191P1g1l1z11111 2222#2(202K2S2X2`2h2m2u2}2222222222222222222233 3333 3-32373<3A3F3K3P3U3Z3_3d3i3n3s3x3}3333333333333 44%444C4Q4`4o4~44444455>5^5w5555555556 666!6&6.636;6C6Z6_6z666666666666666666677777%7-757=7E7M7R7Z7_7g7l7t7y7~7777777777777788 888%858=8U8Z8e8t8~888888888999&9.939;9@9H9P9X9`9d9h9l9p9t9x9|9999999999999999: :::0:E:L:b:x:::::::::::::::; ;;;;!;%;);0;5;:;B;J;d;~;;;;;;;;;;;;< <<<<<$<,<4<M<U<Z<b<j<z<<<<<<<<<<<<<<<<<<<===='=/=7=?=G=O=W=_=w=================> >>> >5>A>F>T>Y>g>l>y>~>>>>>>>>>>>>>>>>?????%?-?;?@?E?M?Y?^?f?k?p?x?}???????????????????@@@#@(@:@?@Q@V@e@j@@@@@@@@@@@@@@AAA5A:AIANAZA_AmArAAAAAAAAAAAAAAAABB BBB B-BCBHB]BbBzBBBBBBBBBBBBCCCC1C6CQCVCwC|CCCCCCCCC DDD"D+D0D8D=DEDJDODWD\DaDiDnDvDDDDDDDDDDDDDD EE&E+ECEHE`EeEjErEwEEEEEEEEEEEEEEEEEEF FFFF#F(F-F5F=FEFTFYFaFuFzFFFFFFFFFFFFFFFFFFG GGGG%G-G2G:G?GGGOGTG\GdGvG{GGGGGGGGGGGGGGGGH HH H/H4HDHIHXH]HnHsHHHHHHHHHHHHHHHHHII6IMIUIjIIIIIIIIIIIIIIIJJ JJJJ&J+J3J8J?JDJYJaJrJzJJJJJJJJJJJJJJJKK%K-K5K@KMKRKZKbKsK{KKKKKKKKKKKKKKKKKKKKLLLL+L0L5L=LBLGLOLTL\LdLiLqLvL~LLLLLLLLLLLLLLLLMM MMMM$M,MJMSMXM`MeMjMrMwMMMMMMMMMMMMMMMMMMMNNNNN#N(N0N5N=NBNGNON`NeNmNrNwNNNNNNNNNNNNNNNNNNNNNOO OOO"O'O,O4O=OHOMOROZO_OdOlOqOyO~OOOOOOOOOOOOOOOOOOP PPPP&P9PAPFPKPSPXP]PePjPrPzPPPPPPPPPPPPPPPPPPPPPQQQ&Q+Q4Q9QAQRQWQ_QgQlQtQ|QQQQQQQQQQQQQQQQQQQQR4R9RURZRwR|RRRRRRRRRRRRRRRRRRRSS SSS"S-S2S7SBSGSLSWS\SaSfSkSsSxS}SSSSSSSSSSSSSSSSSST TT#T(T-T=TBTGTTTYT^TkTpTuTTTTTTTTTTTTTTTTTTUUUU,U1U6U;U@UHUMURUZU_UdUlUqUyU~UUUUUUUUUUUUUUUUUUUVVV%V-V2V:V?VDVLVQVVV^VdVjVpVvV|VVVVVVVVVVVVVVVVVVVVVVWW WWWW$W*W0W6WXEXLXSXZXaXhXoXvX}XXXXXXXXXXXXXXXXXXXY YYYY%Y,Y3Y:YAYHYOYVY]YdYkYrYyYYYYYYYYYYYYYYYYYYYYZ ZZZ!Z(Z/Z6Z=ZDZKZRZYZ`ZgZnZuZzZZZZZZZZZZZZZZZZZZZZ[ [[["[)[0[7[>[E[L[S[Z[a[h[o[v[}[[[[[[[[[[[[[[[[[[[\ \\\\%\,\3\:\A\H\O\V\]\d\k\r\y\\\\\\\\\\\\\\\\\\\\] ]]]!](]/]6]=]D]K]R]Y]`]g]n]u]|]]]]]]]]]]]]]]]]]]]^^^^^$^+^2^9^@^G^N^U^\^c^j^q^x^^^^^^^^^^^^^^^^^^^^_ ___ _'_._5_<_C_J_Q_X___f_m_t_{___________________`````#`*`1`8`?`F`M`T`[`b`i`p`w`~```````````````````a aaaa&a-a4a;aBaIaPaWa^aealasazaaaaaaaaaaaaaaaaaaaab bbb"b)b0b7b>bEbLbSbZbabhbobvb}bbbbbbbbbbbbbbbbbbbc cccc%c,c3c:cAcHcOcVc]cdckcrcyccccccccccccccccccccd ddd!d(d/d6d=dDdKdRdYd`dgdndud|dddddddddddddddddddeeeee$e+e2e9e@eGeNeUe\ecejeqexeeeeeeeeeeeeeeeeeeeef fff f'f.f5fiEiLiSiZiaihioivi}iiiiiiiiiiiiiiiiiiij jjjj%j,j3j:jAjHjOjVj]jdjkjrjyjjjjjjjjjjjjjjjjjjjjk kkk!k(k/k6k=kDkKkRkYk`kgknkuk|kkkkkkkkkkkkkkkkkkms.?mCݫm?gMmS2,ZbBqm@{ml[ m)*)mi2smueR[TmSL;m "emJ5 m] O7mamQkmxGRmQղ|mc?mO)emg3 vUm'qxmzlg>Cmխ;mx{Lb#mzȠm5mJnp;MmCpm^Y42:mrymMԇ^m'ظmm" hlum v-@z^m`$=ƿqm_Ng3]mSjR m" /2umy6~&emdu}Wm /Ljm%Xͧm0mM$|mq*1<_m;RS[m^Dm70"\m6Ium,`5mzS.mܷ EO m TmsY}mov m[/m?oOm۸c_rmPH{zm#꘦2O^m0\mmw6mNm)B}fm*v_g֍m!@qm6KmNZ / m]MwGm FxQ<mVҴitm[:V2{mCaSjRZm@/mWdpmYT"ymc*LmBml,G%m;ĸomfemMPFm~$Omw 4. m G(4mNÜmBm,m}M6ml)2mt S#mV))EmyI.ãm龽vwmfym~ ڊr mfcn,Gm į+ $mYDl'#mKb m`M=bmj` Ym_ ` sm'mu!Rk mM`crm26Umrԥ:m m&mܣFflmfiKum_mu`dœ m%mՠ~m!amkoemh/[Umyf0Em5Y ~}mBLm7V )m0w1m>Rm/7mWB4wU$mvQMmiw#fmv\>}qm`{Pmk$RmTMlms$"mb4Mmٿr%mXqm!\m&!ҬGm;vmɏW53am5MmezX8m]&m'rm#CW{gmن1mGY1m{LKmMUmUr_mo>&mA -mp m;JTom {umjrenm\ M[5m.jc/f@m̊!  RmW5U/m6kz}m1Zm["سKmg@/um# 8 dmG8|Zm򬔢mʆ.>MSymHJjvgmN@mMx<:m09im;m{qm,`mHR mnhϿmA1o d2m_CCTmrѺsTmdKmmΤgmV* 1 Lnm|mXRmO;-|`mu x۔mE m+dm3NgCJmm~پmh RkmlSJx2?m:qmO.$GmFhL m̪ mEuUmcfpgn\cm,K^Šm0x F.mNEkmZ'_uImAΆmd/:m0=m\WUvmv9%4mQJ*mtUq mlVmY Am7m3J.mT60,ƶm§ɝ"m" ;cmge[mEH*mKm!Uam,5X mc me5aY{m rwemA @$mVTm<"ƀm=9~m2) nm |Amb6Pm\6)' mz}|mx6^j,mQx/&nm!=4%,m8" ZcmO6 dm%1mɹdpmX3»^kmuW<m@K+ mgY)\m,pm#oȋm*>Pm!m5~m3$Rȅm\I& mB`7Z m|wκm, m*f`^dmaCmmR_Wm&M7m*mg;6[miBm?3<=~mi\kjm'UկmucrmRxmŞm6p>BG@m?4HmQ :omwo m-qmڦqpmXHuUmwңT3Tmmszm%h,ƽm2fAZm)6pTm\%mHɰmFh19mV˿Uçmٙ7FӊmOomBmTsՅE{m7UemݏR~ =mWjBm mEN~Dm-mvvYHmDom&t8%RmfL~mkNm bmc0mvOmí0<m鑇+e&m6'_] iemm.m@ZСm\7Ym3'AYm}!~m_emjvim 5Ąmw:amtm3"&*oim7sOmYh~mM{ XIm΅;m8ÁKm۳,FmKK>Owmv(җ'm@8nm3Ap+mfqmkrJX mg+1mY.Ըmj1VmƐWZͨmȠym.G?ܿmi om.FmDV GmbS VmɧCjmu;1SN.mCb% mܤ(Stmw+]Tsm4'eUhmh7im"%kmʗgGmN-m!:fmm${LmAyʺm=gmOtm6m=S2mpmTpW30Wm.!CEmSFmsrm+Ӎm"jPgmV P)mҌ"0mu: mǝQ`m WmG?JmP~mn6gx&m|9m6gÒZm(~mD\;m+jmcv瑵m ޢ@&mt~ Ѐmŋ8sm)amgd7mV葼mm6o!~mj`ufmraR[m#DK¨=mv=m5 .m'W#>*WmJIEqm9HCkmf&REm0Sm0EE hm8m5-Q@4m`Wim(5V•mri5>m2%m]OKmuwjmm%,7YmSU>tcmn t%mdژf(m˧CmU۔wnmU}eom4}|>mBam׳j~m]_ D%mN KmA@+lm݃m뀚m,'mg? >`mb3RSm#*sGmCFw8ml~=ml{Gmqtm2;kmY ZVmj=~0mP4Hmئ7mL!xm2:Ym4LhmM90mQꤝ pmM4$##muW)amX'@'m̄rmg?+_ma~m)k0me+_mJc9PmE(mz2!/&m13mW Zjm1jwqm c6:mj6Wm2_Jmub3m7"mr7m4CZ mY>_mEL}m32emƯ`}m)Z?&yzm\1m=&R@vm ٯm(mU,\4xmhm,@.I-C$mQ:Z-Abm2ܒu;m:Jm`v+v"8m[Pi+m[ 9lBqm/Ldm{^m亵\m)o mpؽmTӐfnm㆗] m-?am} /`mc*gmO)mDypim1;m^lmśOmMhgRvm9iSh{mڐJ{ymXoLxAmJmi(bm m\k*mg+mnmmf@Hmu0f JmR{,NomDrmcQ1m A_mF0mbhfm0B5mCX uXbm[+mOpm%-@mq$mdpsmcIAmǙRmlmzGmoQ"mqŅ*i m;Ŷ@Tm*p~9amM#mɨ% mcLo1gPwmmr m/)\mECmj9i6[+mB]4AZmJ5ղYmdgr`^Dnm3*6ms{N_vJm\\m(z^7mM4-Gm'՝em4Bm|$'Rm8;~qmٌ:mn!| m|LF#m +am+ĩmҶm\\tm :mY: -cm1mYV(mrIX(m ;tm{]m:)~mߗ+mՄIN_m9ent %m#/m~#Cm@Cm%E(+mW@jQJmG9k=rmyYm?m|u^?m mm\mAqmVeGmʤJm;Vms7K6m~ Nm}H zm7_lmmm3NmSӒ~km7lmm.n;(m/5.m&moH<mP\fP;mz 0.`8mM\Om侬Om 0:mCHBmNRH1m=^mQ%m|ń9}mh jum <WVmW&D.Xm4QEP:m4nmFO5m*am#8mk m:#SmPLChm8me(|1m) m~9 kmS>m{)mEeX{mgcmjAґ}mGb'vm[ym5:Em\DrmBd4*mly>mvO$gombWsm@}ˆm)Gިm/cEumڑcm>Gm":aͩm`'rR$m_71mu mq弅zZmwrGm]y$#hm^;rpmj\6&nm` %mn)L/m֖am$ fm; mB7F9m(U0/m#.7>@mbITQm7i_芜m=*7mP` mkcm:wJm;ņ80(mi@2.Em;,{ʝmϚyO mYmdPm4*.RH`m8=Rm:6&m6|mdKşmI'u!Gm6m Y YmZ(fmmVFdɜmV]mZgSfm^V]qmG+V-sutm3 mR-!m>ryVm Z+m{!TmK"&Bm7rȬ_;Um9mJHOim7mUGzmTq<m8 ^6Om bmm^`RKfmMm8Mm"K?m\k{mɁmms% ]m- zm.jD)mІb.$mCm7?]m xm17cmBw"m?;m'6'Lm_7md{myưۜmW]uᤎm}PqmW $mmO}0mCVe$m 6"Ym#M,/mOmZÇ,mHqʅ-m-ZA)mֿU m聼5W mQMܱ'm MqmNe@`m 3lmFWH7m00r3Im`Y`E>m<xDqm:fqm?Rm zVREzmaWm2gWJ0mz*}mc5}m/Tmɍ5~ m]K.m€9VmU"ڝm4 Em`[¡m,Ȣcm4J7!m'm$}7m[-~RmMѤ mjZ9:m:m:ə,3m†2(Wmy\"m'k5mAmFvoImF#ȹ5mY#mz|m{FYmwz*m0\k՛ImI o(Nm+`ymym1d0AsXmro=Cm)95m)OE4*m1!wmERm߹i^m+OmC;hfYm@/{/mPd@J-mĬm8,ẮKmO$pUpmXmemX m[ D8pom%z{m]ܳm<)ma7mK7twbmJTO9$Omm0 .m:⾚mf>*m;. mKa*~Rmқ# FmDK$"Ͱm*uDm#&P*]mmi5"mRxm 2ʳ7muJm]m2lm_F: demaEmi4 8mvhZrmIMm]~_Ym"|QFSmgPm^}jm Qc~^dm"@ m\m&h] mV_;mDkLmvz惕mM1 ]mj5m\LKymCf2mSHg[mOs`GjmtZ,h3m+m@TX{maL%m|1mڪs%m·P]mH9+myU}msWH1m\fX_"m{H amx}! mDRTmpe4m1A"um{&,&>]m nZ`mQmm~m7td m]DJm^ Lˎm`;|'gm:2m~Rxw: m09֘O mUzE"Cmm״P!mM9mk m@i, mD m/Kmm#: tm#7nmK*m{|.~maAmQMjm%(Cm+-& Fm"ٷm݌cE m2bêimq{NmWo2EDmN3L`Hm)mtK5fmc8m닔?m=F #m-f!!m'jzmhU\Amy #iXm 2Pm3f mOټ mdum$ Ng|mY?)mFF>3]>;'mU RJm-XN>mZǺmFbm»m+4Dmma[m6֤mKF73*mo@HӃmI4n?m-":kmQ2 4mjQ] MmEm-."]Zm?-mqfv&Wm"CqUmͶum\3EmﶩIm9 hH1EmjvFm24j61m!2(smʂmi|mf6hhmCTzml(dlmWP xm 4m0im[amAf[m>>m#YmŞ{m2@Hem'vm JolUrm HBbm f뢯m2ЋsLmWE%m]mi{mKailm+nͽmc*( mH0Wm|y;msCmH=e@mx(gml@)Cm xm>e6*9mIlc!m_5ZkmXC*mf,'J^_zmsi[mb3Jmm=maU(m(m G:0K m_kPmF&Km {Em 1]'mOwom umՀDymrPpmf]@|^mr]%:m mԮoQvm: ^Mm܀Zm5}G4mQ`m6'mWLmO~m^\nAmYa'm&mA! mSmvhVSl_my%u@m,Fͣ)6m*Imm1bm30m$|@mK8@_mAp*mYU^m0F!6^mHId/m"(Cm4_'m!(m%A=^m썆MDmz՗?mwjPgKsm!+Aamx9"-m#~<1ms`pnumPXRm]ym(mP;V QgmΆymi[ȥm9ҷqmyJ|mLAnm=Q0ݶm_ZZdm3:mؼq4[m[8i rmJx[nmD ~RmmQqmgEImN*"B^mVc`?mWfEmF|m'jmѲ_qPmmlJm [m܀"#-~mfm@.gmA\%wm2-p %m_ bBʽm ^0mɺ3i?m^0gmM4V.mmo䑑mڔbYmP@/um} $ ۗ+mT*}z4mCmiܓ m,׭:mI*vpm>]Hmt%Jm$zm׊2m׮mݬ#X["mT! ?J~m(mR>kXmOJFm㦺=mcd՞mBױm#mmkX{b*m7Vm $f7U4:m(@#:mv.{\.im\O(fbm.qmzύ]ms޾m"eEm⦜pmԑmr; m/1m@bmLmcIqm70@cXmZ}C^]SmLGmI>mZyfAm+M=m˰G^CL+mt0(=m;fz g5m)1m*"^mmZ7qK m<m Amamjm·@7mmh#Dm4r'̮mPDgm6I0pm)mKMșm8ԫ9m^఍]smmjk]^mcg(mhUm\]ܷm25m|V0mJ77dOmȧxdm;ZmzϗNmi/Ym1(lm 3-Pmhlm)%TrmzJgBvmpHm;m ~Vm,pGR`Qm鲅ɧ8mYK~l^mMZ5mVP};ZmfACtm|WV_meS30m@4 umHT&,m%g}Wmm*fe/m iYMBms8y%Qmn+BCmUp+zmhmT>N,wcmrOA vm[_I<mˑhYmc:3m',hpm +/m\JmؓX7Q-m#,jAm,+h mM<m9tܵ0m+lxmvKzm'mKm̘:m1mhjmAm5JsWm)*;ami>Bim= xl0mfejmmA"mt޸8mgt4(mS]ym|TO?=mŰhSm.Sma.m)5dEm+x,b mnGۦfwm&mNpsm)a"ȆmfktUm ?mG3m6%YCem\?mLᄚm0=|mm('XEmFSL]mk=7mnfNpm몉>m=v!VmV"HaZam툇Q@m$+g6m,Zm@;^7d+m$#Ym0mQ7Zʚ)mq9y{m/ rm&qLUm}|CYfEme0&umWe>F m*vm+E3wm `mi m+ mPNZsmUm6{@|xm$mQ:/5mJ7mmTm㸒mi[ hmfm38XmxĸNƍmƎO/@m"5imPHmbwBLma쓌 @Cm!WHdmmώ$ m% кm*-_|mbm@CZ|_mİQmu3dm< m8LKc;?mmҊ.m=DPm11pÞmPhHmW Zam3em$#m(q^Nmi7m_@xmpMc}QmF2ͥVmeӝYmj2xmv9X&mZ~C=mV+/wvm0l'+c%mb^L [mzݺm|cm|m9@}pmdɆD Ymf6%mqpdsKmȁ𻢲m7CmoB @mtxr mw`rX&mwSH|mk#wu)m'C|[m&|ۯmejm@϶*m1$cM>m@ QkdUcmIhB\8mhy5nZ mf~mm$mBD~maȀbm-Cř@'mwO۹m8:IE%RTmKL/mx-M m3wޯBm *`1m$~,zbyhmX[H Ҙmߒ<m`S7m T>=m`Ujmędm?S.-m5x-oi5m<-GmVEm?fm3&mCHDzmHbhUm`';m\mw$ܼmvm4Pmnm){Hm۟kCmؖ=<m[m">L}mGJkBm-?'mR` }/mAD|mxFtmǟ`T?m2c3m3brb)=mwD*5m[XĝPmVTp}m)PFm@g [0mCv*m6ofm]mXNm|GqTm!;fmؗ:Jm9vJ^mG$E/m UmqeZm[qq[m5)mtJlOY4mktMcm:7m8mU"rzm[6g_+m3Tz"m" *mif1umb mPM.m}XImu . Hom,/_i8mioVmm#xmphmTcHmMˌm5T,um>f2 mţCmP> m qUym+CӟPsmIFQmjmhhPm̃1(~,mgr]miz!W![m w!m)cm )TRZ7mH#e-@nm u)EBm=#ԝmJ%VPm{fm׳m:K)TvmbOX/emF9 Fmn%bKm=[eD7-m9m<,jvC4m3T Kme3$m-gXm`cm2TmSvm|mn}>LMmxD<mK]mB4 m|OmܜUm^m!E EVmFK<~#mGHCrm2sGmg@_/m X߅ՙm?bdomԾm _mH rm+Dumh K|%m;!>mT_Ym. Zm##/Gm>n;x<m΋d"mu܍@mHmnFjXm|yєmpYmwĄymĩDmM`zmdem4f~#6mbxKm#5m"sDWMm- mB,X'mm=Qֆm {mav&m2ݷYIimQRLmmmhL>mctm~zTmKx-MmqFh%0m AmTpSmϓ@GBm(92ޥm~mt*mj!5mՂLim-m8/m=tieym[ eI^m(]tm_l<97Dm= ɼm~ T*m7 ozmPm%LxvqGm7m)Eim<-.zmռtsmY'I7amǒ$Em ]mv&a0m /ڬm3W٩m-j:m K!mglnm}mԆ 1mX3b]m\}m9K &m=b5yFm+vX^m[љޒmj#F7mx|*emFA;m<mwb'*?mnc6mr20mٝ5ЇmO`fmm.]f\oqzmWY,b"mf|WIPmemt:mf::mU^$Asm`ay20dm|mѐՐ)=mq[eXmy>$m5mϺ V@дmQi/md fCcm;\LfQ4m6V[ my^mqd2m\0IbImU*/smφ{L9$m-ʦz*ms쌎m#%8fm9mLm0m|KjPS m xTmB2mJ^9m UnOmmh}m"omE@3m - m︘Z:mPΡkmcOdm[m)~``kmEwmNZxmiyYmy m-p tWm`+`mkhzIum'2:ϷmôZc!GmFfmNՠ mq꾅phVmaæ^o m;he٫pm0СmΗ#Ö1mf$m`tkMfm31'TmvjEmF/m D"/mQI>\mU mNqCm*mkhdhmtK/m=JUG}m\rN϶mdIzj߲m6dm\EmQmq &mN;pm XZm8 mHJmA6m8OCJmq1;mtmz^&8m-gmTe LmJ`[1mY*آmWm]J m!@܁L,mkyZ8mS70mmѯ=amS8ˁmHJLkOmΎmx'NxmbFi0[mLm>j]zߠmm ]=:moǀXmwiVmf8 m2`R pm Jp }m871mb<4Xmp'_md ǥ_m SӅҧmPӵmqmmiŌLjm,Tmm2|ܬmD^ mģ!m$Ym`=ϛ*Lm,jg|mY_G`]m`Iʚm 0Ʋm=NqmM$q*m}SVmOk7Ϙ{vm yOcSmaa7m+Tp `mR{m ws0Tm< mt]3m dWm[k_|m[lԇdmNf5Mm6dx "`mm<=cW/m@;y mHrzFKm?O͘m-HmkzmnY'@ mͽ')߀m(`m4`mu2"mkvmrs9mG!XmAߖmPv\gmR0m5qngmbRm}Yzmu=l5mFsW.moh ma }m]qi md>|2m;P*]^mKYm)g{'mq7Dd!mY;;,m01A~mb.}mhmkuwDmOo}:mGIH<mKN8Lm,Qm}zY=m/Uw"mYmNQλdVmP`mn<(m0bL՜1mM:Umm㱳g#mMQpĽ"mȂ:(m\m^[';mOs'm*wtmR}mv3Gm& ~mp*FAmqymȡ٬|m Zhm]CAmw2Mm̎>.m$$mZoFm".nmSҡuUmiTim@2FmbmӲ3um-I,mH+#ml{殡 m]n mʰ^mnm'|A4mNEa6m}ϬLw m{ QFdmoyZml} Ck(m%OmK~/K:mQ3@mS o< sm03imk'!m"/,hmR!gAmK-Ϲm"|m[>4D[Gmzm]6mT*-`m+O[m&m[d6mCI1BmX4mN|mX tdU2mZGڂm<mu:ZjmP\zS(m+e^-Km)(D-m>(BxmH0WPmr&ZmYڌAwm7 tm m':nXmSmaOm4hmIq*WC&mLw}'-mDIVmM7_$mb5/ m2Ϙu)<m^WOam|z5[ mvm30eF.m*ogmǑBXmEޟm㇕>mfJPGmC+rmn;mpKLmZ!emL}0mK~S_mUvB9ummޜ0E m,XMcm3#mu]ڽmUxŹ<;mssQam.JLmȟlCm ܢmGrms81m^>PmF4hm<ӓm^Y'Mmo3EּmGx"m eӧtm}9,i m4mym`NKmƭ%.cmޅ%>mӪϼWm2uXrmqX-mb %mv 9m9<4BmZ O!m>Em3*4m4u0mdaC@=m}R{C?^mk߆@rm8YmI 'mMw*qmgp^mQ8M "m ;jmpximmijcm\ovfmKQemՇ4hm"^SmY*Đ+m{UŦmaumm xmLUmv~%m63mt m/.m}?̰yџmndom#|1mеd>m{Kj}tm>ѧm T(|f m5lh>_mLma"mW7?mK&OmE8km#[mGha9ϐI>m-OGLm6;3smH`ym4nI,m|\%17Lm,'Vum>r:`lQmgE@?mdm @Cmĭ.m<]3|9m̰m"m}^1jmIܒ,mvD}mŐ|Wm?m V-*:m,maQ1Ќ%m2y+2mHȫ^mE)0m mW&+vmm]+U:\mp߳(ma_Am*ـGmdhF m1'{i5m) m6im~56m3]56m_sNmgm7d0mCB:mcjOHAǜmR1ėcm2Mms\~w\Dm%Ζ5m_ZamEH3im@ m!%]mRmlvib'E2m*A`m62PmD'^mw4#.M&mnd8mU5ymb'.3mf[ ym5m >Q>m~DZ5m P.mqgUhm-N3mRIm!fɳmT/׉Y>mlw J2mz۲jԞmOFmWomh y1mm@}r -6vmTϐ2m6L5m޳6%Hm~@Re EK\mѯF@!mW :[m&[m'9nRNm#Kxxtm}m*mE)vm v8m 5mVuߍmDVmŋR.mIf4s[m'D xmr9%bmxhm|mUD;pm/@ mK%&*m4EdmYD#Lm-mL`Iot`mQd~`BmGam5npm-o}umTYsmoϥIQm%HULm6kfLmf/ u m‰(mi/۱m im!qj5>_̟m]bymi+N*:mC̣4mx*jbmo I9cgmqD mώ?ey"_mΔdmm{~mi'}2mǪ&VLmXzR%mURm/Io m-WRmE>mX)<mt$D?:m]>c?miPy[wm..Ø(mm1l8!&Ƣm-˦ܠ?Nm#S>bm%(j)kom.mXomn~m)_omW">umOmhBmE ai0m`:$m@SҒzm܃I߮mթq[m)0m$imUamf9m<V,mdl mY'9(8mJn0im5z+m U} mm^;ރ? msuUm.F3t.m-Ӑm9JdVmQDdm.#X}m5wǻ?mF`mzalc.mK!C՚mRn5|mhKm}O:xmhhm2^˩Nmhs${m'GnmݫTTm~b%dm6Km}HZѻm{߭Z(m̓+m5mtmRmg2mfl⮪7mťy{mJ/Ds\nmJlnm@ ϥoOmoCk|mثVeUm+ m~H&cmzEhmů3!.m%E\ m=Plm5LnmZ+Zwm;KotmL9lmqpxm߰ШmH*K=Fmrm]Zm-lŗm['K-mBml%X}:m^ Yf m-%\cmY !IQmAX̹-.m u{Am`BmQ>+mn'wm@S.zm{m92=Xm{KϞ+mTƚrmJhbm1:!m|uR`mj)p^m)=m&r`@m[xe0 ZmRUmNm"}i(m:]m#>m _|}ޱmsOm410YSRm.:R_m`Wm+kC_m> +,XmCOm5|m`m2 %FimWm3ޜdxm1DmC豺4"mrvp?m}_+_mfo+C_HmOPmЃmf8m#9<5Mm?F9#Fm CTm>"mmHfmt靷ƀGmcmf02P<m~IQumY˨mJ~h;kVmC-tD?m QFm#᧴moBْtmPDm1Ln -7m B@6mLɞmŤۂm漟~)mLDm2sR m.$)g6m ^ϲ>imᙖp:my}!mfmqʒmpe)8mMhНmFoTיwfmth:!*Tm1p mԇg mzKmxgS{<mMmߟj_Dm;Ò!`m3WWЬ[mzўrtmSHm lB mp(VmIXmI;a+Smo@Xm2? DmjZcrmAIm S<8mzȦZm ۔mQӗwJ]Xm33mNɛmm?^:mCmʕr;Km#03q$m5.;mfUcmP^ hFmw[m72mAe+mVҥm~mjD |m`~Ump2Nm|pmɿDYymMe+my@3*sm'gI~mi'D<mѢ1smy m1sNmV7Џm9tmu0WmKN.mTӇ14am-%dm^=?͠m1vsm]¥-mam|PmaNGsmxu6~m-YMm:(ml^ Mrm׃t9mGtE{m`LDOm'md^rmX}Cm@gPmSsUm|绺ifm Ҙ^+mΫY Nm"|{m|胣pDjm?93 m!V_^mw4vd3GXm qRfQm/M?jmʰ]mĆemR\WmpYmȵvmJ>jm֥Sdm-*aHm rh >m[g:"mh4ڄbm{\ "%mx&Om+fm F3mr xm]zm5{mJyBwmt:*Ұmfbcmem ҩmlYJRmZFmi_Em,%]pm #Z?\mPڈ 7m5Mom PomNC=m1PSmH({m tomFdOB Hm7O=m҃&mR[ 6m]&gprmLi`m7gm%d[Wm| YMm>MmT0I\:mn4SmxmddmvyC7kmKV/Vmr@.}mJ)-Tmަx8mD% m< xmxEmPs8mr{I^m(#h9m k2m6{Dum]D':m#v)m7gm2m~,&_6m m{.4m^Tm @E嬲mf ^ʮmL/a4mD7m3!fh/%mN'zm/ OpmVϘml>_rmBe?Qm8`m0)zdmtZfQmR3S(m mڨ!mуogfmMs mx'_mh]mĮ[!m+MImt5=Bmz 4mgٝX}mMum22mʪ>wm`9Rm atm>~BNmrq[լ:=mB)m|y)O;m?߈NWmV+Ϳm>MImk޸Dum:OXjmnYL8m}U.mPm& mURUKm "i,mGxma,/m^ָ&5HmB^ m+(0Lm4im?VbaKm* ;7mGammGӘC1m:fmGTvm1vi mOT ;mȶ/m~ǬJm!\i. m%cLJmNm ״mD@sm|Ѥ6.:mzc'xmZ6D/,m- $cm='9EmOmt{Y5m`2Z~mM'tm(ܪaS/nm6^Xm4!m.7@mѠ8;!mⱎm""@ smJVmG+mҎm[vmc߻m:|m}!Kam p|Wm8Km U*m3fROwm8 o- m oF m¡ mq4bAmK r(mlOa԰}mjZSmIɑ{GKm6'Fk$m7$zm"ukm 8{mV.)mxI$mr_mjm6mM2,n@m'|Im3eQymZ $}‚m4>Kd~.m#47p1m}ƭ m'zm4fmDF@mfjmzrm:{܍m*jmoFnqm*mI:mȠ~ǻm}2mzj~mWyO.m?9n m~{m U9XCm-iazmڲ͈ztamup]mc@pm`>m7:0m|`U~m7Mam mXh`Vbm=Ѐmt/m8" mw Hqm4 2pmqo m3> m_}Op*m>yr"m~ gmCJD]m!qV>m_!ym}ƇmdM:!mfBhmk%bnvm *m~ lmBP:m+= tOe$mP.m޸efAfmCm$3mI32:mDȾWm#RmZm7Hm}g9GÞams[*m4-ZwmE.mdu|m( $v@mI mJ;Rm!jjlV{Jmi+mݴf<mzUSJm`FᜊmHLo mqʎgm"xNnmf;m6Iul*mL Q3mAY[ ;m)8^m)IQa!mzLmK#bGmӼ/= m~9|LmJmξ'hvm=Gmې7cHmNuILm]e_mXZDzm3s[mslgCm^+}[]m|ᎁ^ mhC(m1mTlmG@mDչ7)mĀ_?mF.am$!Q^ʮmҡ[m'|fm[*9ʘCm*Im|+-mOz m2iLmX$R}OmWIzmRrc|m '0Hm9oSm+eAXm&Ҏm1DqAmk[E2$mo_IkR#mBums`Jm껃Ȱmq-7mK\Ų}mt"m(mydBcmڦ}ٗm7FēmˏPm`*S@Smh7L~msdzmӨAmQ mFpm!_m8#ym\2mF em~i.m.]22m^kumg`+&mu~~mmS)m`/mEBmWam<Mh(m2 HhmM@q8m\ m_Fmv}\c9mp/ t`mj8msXm햠HCGm> Mym%{m(aEIBmY/hIm}'jm!w03Gm.sTJmN_*mH#M'm#"i rDmrMmM5@mզm)'^====>>övI^ "#*18?FMT[bipw~ 3mt{#*18?FMT[bipwXl~ 2DK$:$+29@GNU\cjqxJ >JRDT[TVfpjs.E܈ٌ$'hov?HQZclu~,{| 0 (    3-.1u@BGB'C)sb)32>M N'o#/ |Qr / Bzz`Tiig[||xbVvkk]~~ffodXyy_ShhfZ{{aUjjh\}}cWllp^RggeYi %core_intrinsicsderive_clone_copym7oü1>fmt_helpers_for_deriveCCmC\Q&N3 => m ?Ioü1>>CCm=wƜ, 2)mC2 => mnƎ#]b^meUW => mለ#p b^mS f`4 => mvo >mաKs2>D-m>l qC>>mHIl qC>>m]zc ! => m \~S?2 )m?;XH<#_ b^mb8ie%>>m:#x׎ `Hm\M>~1&)m4L]gVl0 qC>>mVlqC>>mEn$| O > derive_eq mª6siA %>>mWC)m״_e4l7qC>>m3lQi@ %>>mݾ3.#` b^mtNIa|gO >> mamET|# `HmYǍ3 => mu=w => mWp!\oOü1>>CCm~ՆgxlqC>>m #9Ѫ/^s.">mMYҊ => m`/aϞ̋-)mڃi-l׆ >m)pqi%>>m-yJ\so ü1>>CCm8gI~&X# `HmŒY鮢 %)mAy&^lqC>>mȚ-U7#] `HmHX2J|PO >> mAp<#oՊb^myhAi)mO8"n 1 => mj => m=+*YLi %>>m 2ii %>>mG32+o!ü1>>CCmnSތlqC>>m e$#^aEm?|r|XO >> m vQ#v `Hmq3,)mIRo ü1>>CCm7v8A*>DDm+ o ü1>>CCm֮Z86<)mգ\6A*>DDmbkňd2 )m.o@ >m180u#_ b^m,˔`U|ogü1>>CCm7[3X&)m!͆/+)mwW ʃlqC>>m/~&ϖ0 => mvd)R1 => msp => m@I%o. => mloܜs6,i%>>mix6LI'o ü1>>CCm$iU#` b^m$oPü1>>CCmuĪ#o `Hm yno ü1>>CCm\ kmYlqC>>m=<J~m޹V#| O >> m[[a noü1>>CCmX S|O >> mD=p<#^cNmEXݜ|WO >> mhdƦ#pNj `Hmx RE| O >> m%&/i %>>m  Y<͍.~mh7{| O >> mU.R;ϼ)m/0!! >m=1 )m򌢾+@ => mӷlC#_ `Hm;'x˭GCe => m^PQAgo0 ü1>>CCmKz԰aEi%>>mVVo ü1>>CCm60m(|A => m2$ q>L-i7%>>mVƒ/)mVzi%>>mTL8#` `Hm<1dlgqC>>m]A> #× b^mN>TR|3 O >> mU:~*w >mpfG*[EiP%>>mĶ&ki%>>mF| O >> m82XnNxB|O >> m-\l qC>>mϽg{0# b^mW i%>>mW#] b^m)}joWü1>>CCmS)"A|1 O >> mr >m&SOU  => mE; => mU{9|!O >> m\=i%>>m%~5"]#^ c_mx)\oXü1>>CCm:1#v b^m*Eq A*>DDmm i %>>m8p!$+6 >m3썡0> )m| @  >mIx#_aEmSzig%>>m[q)#֖ `HmEs.?֏e,)m40 >mQ'@i%>>mv+ |1O >> m)E3%d|O >> mt|.O >> m74xyw-)mjhƆA*>DDmTċ,6^| O >> mYeRta)m{.浹l qC>>mYq[5# `Hm"~2R ^Ջ => mJxiP%>>mcM#o b^mo 6l,_)m,|@< )mǫci%>>mSP@  A*>DDmwpP&<D~mJ;N bi!%>>mmJTe_ >m0S>#^aEm=\iX%>>mZiģs#pҋ b^m+o_h)mS_Bl qC>>m!* => mT-W  => m OH/ A*>DDmom)m!%N_6 => m!Nk1|@ O >> m؉;祪#_ b^m{֮Y{|fO >> mE4;W"#x `Hmwt(]P&)m1|0 O >> m^nCb => m!|A O >> mQ 4ui4$<)m3oü1>>CCm~2i %>>m10@*#` b^m mrX#aEm>NulwqC>>m%u}] P => m$eiia%>>m]s1nml qC>>m^o?W6)mi- >mGIY'i %>>m"ͅO#] `Hm LG04iW%>>mD'6<~mNPO#p `HmkCK|O >> mɵO,| O >> m~fg;o ü1>>CCmRHx!A*>DDm'TpP#_aEm_W-goeü1>>CCmi0 %>>mhvd) >mUvI͖9  => m1P<oA ü1>>CCmUJr`\%C)me QN6 >mRW;%V3 )mwmJl@ qC>>m2ujE#_ b^mh+bwsg => m>S2-# b^mٿ#cg,)mxֳ} SRi3 %>>mlqso2ü1>>CCmO* MA*>DDm 3}Qo.ü1>>CCmJ̆ => m7d^Kպ => mpj˵i %>>mj I#cNmyW+ )mh;UxoIB >m88D#] b^m3MP => mso#oʊ `Hm=g`TF ,)m럝\i1 %>>m&pcdA*>DDm['Meo ü1>>CCm(U.l!qC>>mrYar]A, )m+F- >m/E =c#^cNm|pҳX|X => mXa2<L~m+B駯)me?aѤi %>>mMYF|O >> m({݌,| O >> mK35@<<ŽH~mI B]'6v!>)m'j?|6O >> m;H@М@ A*>DDmTy$%#_ `HmYMlfqC>>mYǫ>#x b^m=RP+W&)m&я)0 A*>DDmIj́|O >> ml 1i1%>>m Iuw~i.%>>mc1}lA qC>>mJ͌v %)m\EJlqC>>mWjul qC>>m4 #` `HmW@[2'#cNmF[WWqiw%>>m`#լ|PO >> m5C#oiaü1>>CCmHl.|&&B$̷ųUV(()aUDZqjа44ѹԵF<ϸдİ@Aնزym ߱LL\R0ƴd[.ַϳ_b}v  ܰRH۸ܴ4+"45ɶ̲ma ӱ@@ݹInq pXCuxLt6vL id7ٳl@JOŹX޶Uee^z}((7ȵ:0øC?b^2C9 ,Anz,S;pJO/߿ "47Z)-;/yU7[N\sRh2.;$]HrI]'Pimh {F^ajAJ 6P<SS2]x˼ Q!2ef-htMZ9^l`L(H.lnq}Md8p&cNtj+T`־S>$dZ'+M8b9M"t^mr6R,C"UX{JN\PCa:?x8|]Xk NrsQzC=/h" 3)'dwJ=^׽)+<{i\+(EKy>LcBX1xjw@YsZ1:&Ͽ@x` MAN"VODHT m+MIw mC mH9+mP@/u&m#Vz#W m `m m̊!  Rm p m"uk mqo m@4 um ғ  mV P)oma쓌 @Cm/@ e mֿU mږ= m)Ϩ܊~ m - my m6I0p_mt$@I{m8" Zcmx9"-mq$0m'6'Lmcg(fmnY'@ m\k* m* m;,0?vmH#e-@nm0w1zm`ay20dtmm 3`aAmi4 8ome 4Kmvm4PamB`7Z maQ1Ќ% mB7F9m62P8 m=S74q mf02P< m7g+ m"K?ml@)Cm2? D mB2m B@6 m<xDqmE. m/Km|LF#QmN3L`HmXKg`\ m M@>H m,pGR`Qwm.S߯mHT&,mO$pUpRmϺ V@дzm.#X} mY Am nZ`mM PZYm\\Hm_ZZd m|z5[ ܔm%E\ ? m[a mx{Lb#mc@p mgd`z m=tieyFm[xe0 Zu mcLo1gPw>m9iSh{m>Wiݾmx6^j,mLtKi;ّmYDl'#amhUgmhhPmA1o d2m)o mj&Eq`3m qsMm {Njrmt@m/ rmu|;QmPwmgln[mbFi0[mM$q*m${Lcmz|&m. }`m)~``kmk m4u0m ~aWmv~%mRx`] m=Pl@ mq꾅phVmΆymjo j^ m5|m`̂ mGtE{ m(DkB mg? >`mOs`Gjm)k0m=&R@vm?6#Cmu܍@$mdu| m۟kCdmQbj@D mo@X m@gP mMhН mhB mJVmG+ mBu#mEBz mj)p^r m"5im5-Q@4m# 8 dmfMpضmmޜ0E mdaC@=m:𻴩mBLxmmlJm2|ܬmk߆@rm)am5m"omE@3m Y YmGŚ8~m嬰6h m@Rmvzp mt~ Ѐ~mzG5m=^mDC&mᙖp: mbS VWm5:Emy6~&e&mP> mk޸Du m Po mi} m_eAİʭm0; myưۜmoǀXmzȠmP`+mt靷ƀG m;B m̰ m v-@z^!mphm⦜pDmGha9ϐI> mu: qmo)pjmTӐfnm3$Rȅm70@cXKmct9m_kP,mՂLiCm4hm^=?͠ mlOa԰} m-˦ܠ?N mhݰCmx`mмmB~`H7 m& ، mQQЃE m㆗] mȟlCmXh`Vb m~ g m@ZС8m#&P*]emO}0mkn;mK#bG$ m̦P mfJPGݛm0-_m)'^Г m< mphmTYs m 3-Pqm껃Ȱa mXL mc*( mm|p mЃ̌ m}H zqmNe@`m}!~;m-_1mq1;mҶTm*%¦?Um'fmj#F7dm8OCJm ;t[mE!qmG!X m{ QFdem{H am1p m7]L5mg;6[ m- mf9 mw[ mxEU mcIqJma~m2TmI'u!Gm8" mL Q3 m'|fO m&mQ n m#>y mU^$Assm)%Trsmܤ(St[m(w my@3*s ms`J` mQ:Z-AbmF.aL m%٬/љ m(U0/mن1m1d0AsX,mNn52*mʬ41nW mJ5 mU5y< m4J7!m68himZ7qK Wmth:!*T m T>=Em]>c? meֽFTme=G1|msWH1mH$2mCI1BymcjOHAǜ, mTe LmzK mU;OļmZ O!m툇Q@m zVREz mERJm!{Q̿z mϿSQh4 mX$R}OU mX4zm7s[a9m6V[ ~m36\A mD^ m[6g_+mp'_maAmi_E mڑcդmôZc!Gm)IQa!" m;\LfQ4}m$ Ng|m+eAXZ mri5>mߟj_D m)n@moFnq mxq꿽mթq[ mfktUmW]uᤎm%LxvqGNm(xHm}?̰yџm>j]zߠmh y1mL m|!0|P) m u{Af m[-~Rmj`ufmm~IQu mứ7mK͗mߒmJn0i mgE@? mzA>mmA"ĩmJyBw m)(D-m u)EBm\EmIɑ{GK mCHBmI32: mT! ?J~3m#DK¨=mEL}m\LKympxw|N$CmNZxm  m qRfQ mk$RmFdOB H% mno< mU"rzm=JUG}m W@mWm3eQy m=G) mk[E2$] m(aEIB m!%]4 m߹i^Km5A`7mzmabmS2,ZbBqm۸c_r9mu`dœ pm+x,b m\O(fb?mnm=b5yFam@]{Rhm6{@|xm|uR`q m)q~B mrԥ:jmA_Rz mkuwD"m} /`mɿDYy m>R{m~i.s m7"mf2 mcr5 mX3b]^mj5~myYm?gm[]`m;vmj#B.5m7C)mD@s m]kmdLm;l su mO6 dmBE C@m mX Tmt S#Ym7Ue&mb^L [ mtȩcm3Ap+KmM#<m:qmUzE"Cܞm*Im)cmPӵmf8󢐍 m13m S<8 mOgE>m7sOBmTpW30Wimub3mqyGmyg"Oxmm=#ԝm4f~#6,mΗ#Ö1m$YmH#M' m"(Cmc*gm[Pi+ mqŅ*i 9mM4-GJmG+V-sutm]K.m [+3e3m1mU*/smH+#VmB4 m!m5~mƭ%.cm6;3s m%Ζ50 m?93 m!w03G m>=CFmv\>}qm`*S@Sj mB` mm rwempe4m3NgCJm2c3nm-tiCoZmnFjX&md fCc|m㱳g#<m+`ymy+m4nˉm܊nsOԲmnc6imkU>n;x<"m9@}p$mZ~C=m ws0Tml[ mP\zS(m}R{C?^mzalc." m漟~) mYmŰhSmvzu8 mRrc|W m%{ mdژf(mGam mfo+C_H mCv롎!mr@ m#03q$ m˰G^CL+QmOp.m[ym\_m?S.-HmMPFQmaCmm"Ҿ1mJ/Ds\n6 mm!fɳF m 2ʳ7im]w˃WmZÇ,m0SmO4{ Jm qLmoCk|9 m{k m CTܐ m+Ӎmm޳6%HP mCO m skI mǶhF#m(@#:=m eӧtm ;jmNEbL m4_'m3: miܓ *mCb% Zm"CqUmTcHm^;ރ?  mxgS{< m@Ccms[FXID mvz惕|myLCTm5? m< m_Ng3]#m- $cວ mȧxdlmKN8L%m5JsW՛m~#Cbm{Kj}tmTpS>mώ$ mR3S(o mhm#/am~lCm$9mu;1SN.YmsY}5m11pÞmeS30~mm#xmIf4s[_ m{0 mVEaD mc߻ m7Fēh mء74&mu3d m5|e$:m+P yNm}ƭ mM dymVm[љޒcmSbm.saDmIMqm^D.m|c m=DPmTj m4>Kd~. m_F: demmm#: tm 6"Ymf8 mt maL%m&t mW&+v muW)am,Fͣ)6m#v)\ m-qmO.$GmІb.$myf0EvmܠD.D 5P mTӇ14a m+4DmJ77dOkm@;^7d+m9mI>Nm ?D?m'|A4bm_CCT˲mD1K m oF m`Iʚm K!ZmLDݤ mnYL8 m`'rR$ڧm2eS3mSsU mVTmWdpJmMVdGmW ZamiMX[4emU,\4xm\\tUmdgr`^DnEm]DJƘmǟ`T?mm(_p[6 m`M=bcm@bHmdd2 m[ eI^GmP\fP;{mzJgBvtmkhdhmLii{@S m.jD)m"}i(w ml)2XmM`zmde+m~mt*Am`2Z~ mMQpĽ"=m|胣pDj mM2,n@ mFsW.mn t%m1sN m]MwGDm|wκmڲ͈zta m"|{ my@J}D룡mQd~`B m*f`^dm΍ mʤJmm=Ѐ m('XEm!=4%,myU}m닔?ml(dlmzmzύ]AmVŐΎme3$m@{mi/YomY*Đ+mn4S0 m6^X m">L}gm T4m%qmՠ~rm@df|pm%2!ZmPMmi'D< mMs s mⱎ m$3 mOz S m v8Z mC-tD? mxkAmtmȡ٬|HmMԇ^m3Tz"m3 m=*7md˺DamC̣4 mq7Dd!miyYm#oȋm+dmOBmB¤m 5Ą>m|ń9}mwĄy)mSmܜUmGx̏ m< m$mBD~8mNC=! mędGm9<4BmDIVm, mU۔wnm3ޜdx m ۔ m>MI mPhHm, t쑝m,Tm|1m*O-DX@m31'Tm0x F.mP4Hmh Rkm,kr?ȭmkcmSv m$$Mmd m)0 mm!asmdɆD Y%my>$xmGIH<$m>.}P mİQ m`:$ m׳mLɞ mJ' m޵m~b%d, m-"7m㦺=6mtK5fm9V]Wm {uݚm u1m!E EVmU m p m2) nm~@Re EK\Q mF|m/cEumvD} m&M7mٝ5Їkm m1Tu@Z mR{mT*-`ums81mWyO. m!\myOEmH rm2 %Fi mj!5Bm:#Smt%J.m^ָ&5H mi(bm†2(Wm*mߗ+^m%(CmAp*m,Q&mE)vY mg`+&v m33 mb5/ m<]3|9 mM:U.m= xR m$|@m4N^AU mJ\C4 m]_ D%m8:IE%RT<m @E嬲b ml,G%NmoHmUa mVeGlmiP5WUi\mDȾW mˑhYˋm,K^Šm`+`m)*;amaum݌cE mА mfj mJln7 m|mY)m"|qm1 m,`51mMZ5zmDkL{m(M mq弅zZmE^QOm 5[ mɏW53amy  mv9%4m>]H-m4'eUh]m]ŕm2uXrmsZĕmxhb mzEh= mQղ|m}U.ފ m0EE hm'Uկ mfePmF5=vm\JmW5U/m\WUvmLUmΓՅ; m"eECm+Ea mVҥ mbOձ> mt{Y5 m]e_, mƊ[ޅm $f7U4:<m X߅ՙm2Ϙu)<m!(mUxŹ<;mģ!mVN-,łmޅ%>m"ju T m,%]p mjvi=mE: mWE%m]uGmy%u@m$m m+OLmY% mTm5< ? mK\Ų}c m_F m7~7Ǻmզ mgEImXHuUm\3Em3]56' mjk]^em,Zm :Vmm[v巶 m1vs m-iaz m kmU͗=Femqc4mvO3m&m8mV+&Q m[XĝPqm 0:mj\6&nm0F!6^mdhF " m1l8!&Ƣ mR[ 6( muAD'&=-m,'Vu m%h,ƽm5.; mKV/V4 mM90mU1x= mi2sm*4l m:6&m$6Vgmkg7!mr9%ba m8`l mUm)Z?&yzm!@qAm_@xm?h@V; mXEmo3EּزmLGMm~H&c< mpKLmzL# m,m}M6Wm7MvmxĸNƍmOFJ mMhgRvmS>m:K)Tvm xT֋mu߰V<mfUc m}|CYfEmJx[nmx[6, m:]x mHȫ^ ms{N_vJGm?^: m?VbaK mеd>mIevm30eF.mZgSfmoaVhFwmwiVmуogfr mkoetm\2mF er m\ovfm 8pfzmp mHJjvgmV+/wvm w!m]ymHrzFKmŞ{ m6|m)B}f?mf~m7mkv m^+}[]0 m{]\m!qV> m=(Ʉ&mX}C mjvFmKF|m~,&_6_ mFO5m]z m[:V2{Gm0*m<-GJmav&4mYU^m<ӓm̘:ۘmM5@ m8;~qNmMx<:m72 m m$5.v mݴf< m!jjlV{J m6L5O mnGۦfwmdm$3NO@ m>" m{FY'm]9m26Uimʰ] m:fqmD7e m3T Km>~BN mG?JtmܣFflmmCf2mn~ mxFtlm= ɼJmxu6~ mM m|WV_}mv•mΫV m"|QFSsmzȦZ mO`fmlmL̈mAΆmBVmEm[_I<mif1umBMmrs9 m+-& FmCFw8m~$ORmqPFmN;pmNf[ mm~m=Qֆ2m]&֎mE mp*FAFm to$ mu0f J$m mSH mr&Zmqfv&Wme0&umVTp}rm.jc/f@m{fm9ݏ4V_mO)em(5V•m҃&' mOT ; mv=mZ(fmmi|m#~<1mtZfQn m$K9 mJIvA@ mg) mc mGMmY ZVm)7mLAnmBV? Di mPڈ 7 m <WVm4m]mmR_Wmc mD'^9 mmWӾm;'!m2%m}PqmK7twbZmφ{L9$mM7_$ma$ګm3'AY:mז('ߡr m.$)g6 m#*sGm$+g6mT>N,wcΈmIq*WC&m(:Q+3w m$LM mہU?kymϓ@GB?mYڌAwm6p>BG@m#CW{gm?YVDwBm?E[S`m[BE3mwrGȫmFWH7m^jEXm=[eD7-m"sDWM/mPm4Ed m1D m"jPgnm4QEP:mwjPgKsmzS.2mp"PEm{mPSJƵmM4V.#mJ%VPmPXRmDV] m|U׉ maNGs m\Drm>M. m]D':[ mT_YmzUSJ mGb'vmlvib'E26 mcd՞7mb'.3= mzc'x my #iXm,jg|mi'}2 mBVib mslgC/ mTlmG@I m6ofvm7 ozLmzўrt mcu97m龽vw\m^kuu mRxmZyfAOmղzG\0mxmŐ|W mdu}W'mȠ~ǻ m@/Ima6@WFm?1[Rm)PFsm/.m׃t9 mwمO mvO$gom}2 mԆ 1]mx1 m/Tmu+m*v_g֍@m`l0mX'@'m4r'̮]mzj~ m|$'RMmKMșam[>4D[Grmw:a?ms7K6omg(ݵmKF73*m鲅ɧ8xm*ogm]ZI m.7@Ұ m-gm}Ƈ m}'j m>ѧm SӅҧm51 m[lԇdmSHg[؁mu0W mڦ}ٗg m%g}WmmWa{ m ۻCm׮1m/7|mʣx'7Em'm?-mx(gmP#懟m]mrg*mD mn6gx&vm-ZA)m5}G4mn+BCÅm7G&mbmEH*mͶumBw"m|6G,m`=ϛ*Lm۳,FGm^[';@mWoK mSjR $mVvWky mepmp2N m p|W mXqmq-7b msdzl mw Hq mGx"m@K+ mu . Hom 8{ mѐ  Xj m}9,i muJjme74N m.mXo mEl9F mj8 maEnm‰( m)8^! m/Uw"(mBam#8mVϘi mŋ8smpHumi oTmY/hI m["سKm)a"Ȇm%Xͧ)mz^&8mnp>%&* mMw*qmۤp+8m+ m-Hms.?m.H{mF/mq*1<_,m 0Ʋm3x˿mՇ4hmw4#.M&: m F3 ma,/ m8/Em€9Vm U9XC m '0HX m mB/@miB m3+D'mh#D\mGa mH(oUm mYV(Ym+Dum7V;m5Mo m7H mξ'hv( mm-?'im@}ˆm=J3HuɧmO¨m" mB)⻂ mE(mG8|Zmbhf*my8.mbxK-m{!Tm0mȂ:(>m|mXRm92=Xl mezX8mf@H#mîQG m(q^Nm'qxmDı mx}! m'ظmm@TX{mQ`mLm%(;mV؋םm;m{LKm%cLJ mup] m\}_m%OhmvQM~mٿr%mRxhmqpdsK'mJc9Pm1Zm | )QFmV))EZmcr:t^umnfNpm̪ m\*[mNuIL+ mBC T m'D x` mv 9m% кm89fhm^ Yf b m+f m{nY m""@ s m#[ mԑEmKYmϊ,E m7m֖amb(‹ٷݩm| YM- m='9EǨ m( $v@ m"%zm "i, mM4$##mǒ$ETm#YA m\6)' mb9(y d@my('mY'9(8 mĜ8+>^mXP',)omn'wi mv.{\.i>mV.) m8#yq mɺ3i?!mEH3i2 mr7m8ԫ9bmUvB9uҢmJ~h;kV m_l<97DIm&9@AmoB @*moBْt mE~m*ـG! mm7TK9uKmebK ?m9K &`muOMmϚyO mtJlOY4m|KjPS m?O͘mR5 mbITQҷmTEMm.`>Um-N3D mM{ XIDmj` YdmW ZjmrIX(ZmvhZrpm·P]m$#Ym. Z m2ݷYIi5miPy[w m$~,zbyhAmn%bKmLi`* mώ?ey"_ m{vdI9 mURUK m',hpmpximz۲jԞI m1>j)ko m3!fh/%f mo_IkR#^ mnyٺm':nX̉m9oSY mtUq mAqkmszm85sm jtyjmvvYH,m(]tHm]qi mȠyRmՀDy2mzy!ߢmN_* mI3}CKm*p~9a;m})Sm<"ƀmm{~ mhs 4m܃I߮ mndomk mT/׉Y>G mdrVTm[+-mT69IPs mI  mI0mNɛm mh7i^m\k{mE)0 m߰ШF m iYMBml%X}:a mXZDz- mY?)mi>BimF5ymzsmoϥIQ mgd7my\" mX[H ҘBm4 Em]ܳWmͽ')߀m/Io m(ymXmeSmO)mVҴitFmFh19 m]n XmՄIN__m4ḉ mF'isΜmpe)8 m[d6xm|绺if mb %m`$=ƿq"mDRTmcIA2mN@m+ĩSmĩD*m)EiPmF#ȹ5$msDɹm̩m":aͩܦmVs&ιm9mG?ɏ|mJ)-TQ maU()m\7Y9m" *mCi²m_!y mDչ7)J mXzR% m6K- mWIzV mS]ymr{I^W muDy1 mdum30m?9n mr; FmEmkhzIumT0I\:/ mR%Y+m^Y'MmH`y m"ٷm=9~mGY1mr啇mVFdɜm-DmpY(m?gMmn8~i (0mjmn)L/mq{NmfiKunmKb bm09imۢ(W_7mgPtm m4myܶm4nI, mԇg  mtm9t m:( ma }mpY mi+ m:m mϬ=mf::rmu:ZjmCB:+ msX mY*آm#,jAmhL>8mu]ڽm8 o-  mOwo0m*j mMѤ m-":km3"&*oiAmK&Om/)\@m@϶*2m *kmx*jb mJ`[1m@2FRm 3lmBd4*m24j61m>e6*9!m_5Zk#mJ7:WSmjZ9:mJTO9$O[m[6:Bdm<*mgt4(mگDž>Zsm-29j >am}^1j mA*i m?B:m_ bBʽmk9Jk< mJ>j mhC(2 mZGڂ}m[*9ʘCP m.]22t mQJ*m2M. m-OGL m >Q>@ mCaSjRZHm )TRZ7m.:R_} m]+U:\ m>ryVmJ;R mkYb[m︘Z:ms[* m{\ "% m-."]ZmIJ^jz m`/y mV"HaZamd{mfdPmfejmu!Rk gmRUmNv mhy5nZ 6m8os m#RmZ mqʎg m̄rmSҡuUPmuwjmm}ϬLw dmkyZ8mm xmQӗwJ]X mx|*eemƯ`}m6֤mPd@J-Om+n\m7:0 m`tkMfm5 .mLᄚm m{.4` m΅;EmQ7Zʚ)m;JTom 狚Bm9vJ^|mhFm| m~zT:mx0mU"ڝm6gÒZxmM1 ]}mm25im_omfR+G mY˨ mg+1NmH({# m imqd;.u:m8m* ;7 mf; miz!W![mp/ t` m?F9#F mD% S mF&K-m0l'+c%mO>['K-_ m'W#>*Wm;,{ʝm3,06mP. m G:0K +m7d0* m[}o22ʖm3NumQ3@jmE8kmm?M8[X mY;;,me]<[v m1'=k߇cm?R mA^ٟmgEUB1mFA;fm޸efAf m>GmڐJ{ym,XMcmܷ EO 3m]OKmQkmueR[TmraR[m^`RKfmD ~RmmP;V QgmwO۹;m2`R pmp(V긻 m^k3Mm7rȬ_;Um^^{rmI;a+S mbSm8LKc;?m mdK´mge[mɹdpmfqLmfmi{m΋d"#m)g{'mnd8; mMe+ ms`pnumn;m2-p %mUp+zm'9nRNU m?tq2 meqYuN mBu_ mu x۔m%z{Vm5z+ mSӒ~kvmJnp;Mm03ilmPM.mD\;zm2^˩N( m8K m.um{Cm.n;(xms% ]m3mi7m)|luJ mGJkBhm°ԍ-rmŤۂ mEeX{mʕr;K m##/G!mk'!mm鑇+e&5mdKlU m> +,X m&b mS8ˁm<)XmhK% mN'zg mrym2;kmPΡkmAI m@g [0tmi*: mQ^tmɨ% =m Z+mC+rmCݫm¤{A m Ҙ^+ m`[¡mVP};Z{m.q@mԾmѯ=amPH{z:mAyʺdm6{DuZ mNf5MmNZ / Cmy^mz}|mq9y{m 4mRk mEuUm@i, m0 .]mK*m]wmMˌm k2Y mNQλdV*mG9k=rfmi/۱ mĮ[!v m0\k՛I)mma[m5{"Dm;he٫pmѠ8;! mқ# Fbm,Ky{ȶmi\kj m, m_e<mK|mg+!mUmRRmb\K|ZmF`! msO{ mI4n?m; mN+v m[fmȁ𻢲(m"{i2mխ;mBP: mAY[ ; m_7m3& ȅmĭ. m1vi m-XN>m į+ $`m3s[. mrMܐ m8 m b1mTMlуmT60,ƶm/Ld mxGRmY#%m8rm갌ImV* 1 Lnͷm |Amķo mqD  mjD | mȵv m+lxmc8mL9lD m2iLT m1Xm i m<~mYD#L m$ fm9W*#  m3&MmѐՐ)=vmf>*_m+ڄm-ԕm!\i. mZ6D/, m?3<=~ mG3\m`> m3> mӨAm mXC*$ml} Ck(gmJIEqԎmIܒ, mCJD] mMTK\mFK<~#m#M,/mQMܱ'mlF`O,NmK~/K:imԮoQr:`lQ mf[ y> mUs!b&m1$cM>3mLb?m{Yau mC;hfYMmR\W m]y$#hmtZ,h3mhlrmlYJR m6'Fk$ mې7cH* mcfpgn\cmS o< skmTq<mtxr +m9ent %`mV(?um6Iul* m~Rxw: m6dx "`m|um~9|L& mv}\c9 mHJLkOm2W5m!@܁L,md>|2m3emfm?(Lm'C|[/m4i mR{,No%m]B mAڑkm!V_^ mO.6ѓ\ mcn m,Ȣcms\~w\D/ mydBcf m:⾚^m:{܍ m,pmVa<6<m`Ԟ|m3#٥mz 4y mYK~l^ym\S\46 m0i mA ԇŬmR-\݃ m`;|'gmh7L~k m_71m9tܵ0mkk=m:ə,3mf]@|^4mF9 FmN|{m at mȶ/ me(|1m=Nqm@2Ώw mFhL m /ڬWm5LnA mNÜUmoƌe mB|k m>yr" mҒ|om9mb<4XmPLChm" hlu mUGzm;N}R8m3WWЬ[ m-I,UmC mɰlmrq[լ:= mXoLxAmM\O}mĬPm:Jm\  m8MmPNm D"/m.F3t. m G(4Tmc5}mUD;pd m<-.zQmH=e@mʆ.>MSym5lh>_mK8@_m%A=^mrOA vmţCmA6mԻCA mZoFNmDF@ mӼ/= % mK-ϹpmWLmLN ma]N=9m7O=& m_fP9mؓX7Q-АmbRmJ R mCTzm!Uam JolUrm&qLUmVEKmƐWZͨQmmn){Z$m\1m\]ܷhmm ]=:mt]3mY_G`]mIlc!"mromOo}:#m%3 .}mO;-|`mr]%:5mZF mF2ͥVm6mgr]m-Ӑ ml^ Mr mdM:! m"Uٙ9m/5.m&ymxLlmR0mqxEMm6kz}m[/7mX_k?OmL}0m&|ۯ0mW $mmFfm& ~Ema_A mRHzam#7nmWe>F mΫY N mi m;m ~Vvmm3g m^\nAmlw J2H m9gڽm Qc~^dvmW7?m*>Pm(~ymIX m?oO8m1;mzlg>Cmf,'J^_z%mSL; m׭R=Wmmh@ m+ ; m'gI~ mf"௸mW">u mwa']? m0)zdm mB^ mx'Nxm'^߃mKa*~RamAe+ mz 0.`8|mi@2.Emw2MKm3*4m33 m)6pTm c6:mj9i6[+Bm#.7>@mٌ:Om8Ym؈ttcm%`>>Em#S>b msQ+AJbm4BLm"ҹA~mW&D.Xm>Ekm>(Bxml{GmH*K=FG m~ m3J.m|Ѥ6.: m;KL>"8mf 1[N mO~m|Om$fQ΁VmݏR~ ='mqN3SNmŋR.^ m:DN m`~U m$!Q^ʮM m)&X޽Xm+vX^bmˏPi m.sTJ mXfN]δ;mFF>3]>;'mV_;zm_ ` sem*-_|mP5^lmfcn,G_mR_R`mjrenm!:fmbm3f m5h>mf6hhm T(|f m'k5!mqgUhC mAf[m>> mm=(mHfÓ mk%bnv m qUym\rN϶mq 8 mCv*um<,jvC4m|y;m|9wm{|.~m5Y ~}wmѯF@!R mɁmmhs${) mQ>+h m4LhmmTm5qngmaa7m׳j~m}SVmҊ.m)NolmKkX4mqʒ m"xNn m(*m&wmEN~D*m1!wImZ}C^]SLmJ^9m뀚m@SҒz mDqm`NKms 0NKƓm*"^Um*amsCm @C m ^ϲ>i mR-!mm7m A=m8,ẮKQmΆ*mkN0m݃mOټ m)Gިm;KotC mSmŞmvyC7k3 m".nOmX)< mY>_m&Ҏ[ m`cm|~r@Ym"^SmV.%~ms޾Bmo>&mA"mNX m m^lmSm6'mcOdmb.} mgp^m.Lm㇕>mKN. m{&,&>]mY.ԸOmʪ>w} mm6 mZ'_uImd@OR mKm^;rpmJ7mM`crhm` %m{KϞ+m ml>_rj mBe?Qk m~ l m\%m'2:Ϸmm¡  mB5h3 mQ/F mQx/&nm< xT mz2!/&m1A"umw$ܼ`mA\%wms8y%QЄmI o(N*mf(w mwb'*?hmg?+_m V-*: m+ m-YM mg@/um,/_i8mJ?16{ m2_Jm2-nm1vmQ:/5mA @$m=5A_m A_(mɧCjXm!qj5>_̟ mEޟmxF?8mo I9cg mt$D?: m:IJ:m]J mL`Iot` m^ Lˎm9JdV mi+N*: m1:!p m+kC_ m`LDO mǙR3m/M?j mF:rG_,7 m-U@Nn mlVm<=cW/mygXHCm\fX_"mH0WPmP m.]f\oqzmm.ѯ]maæ^o md^r mP` mVc`?m\0IbImc?mgcmôc̵m?bdomaOmGTv m$n/m UnOȎm.uq?mqсmqmmt/ m+= tOe$ mNOwHmZ $}‚ m:m5x-oi5Im{)mOʩ m*A`7 m;ĸoOmPyB_ m)_o mJHOimHLo  mP~um&t8%R.m" /2u%m.G?ܿSm09֘O m-?amƎO/@mCmTϐ2N myI.ã[mF0)mh/[UumQmd ǥ_mwo m) m 1]'/m?fLmMUm0\m<mdmo{sm@ ϥoO8 m;Ŷ@T:m yOcSm}_+_ msrlm#᧴֜ m/ Oph m4CZ m.!CEjm[k_|mX3»^kmYZ mpؽmѲ_qPmh!m2b&s/UmIfVm\?m!_2 mĿ"C mdKşm%-@/mV+Ϳׅ m|TO?=mk/( mnhϿmoh m ?Ҹm |ҏu_m+CӟPsmp߳( mV7Џ mFvoI#mռtsRmL/mmI 'mg@_/mIP. mO2 mx'_t m lB m!_p m{qmzϗNnm22| m^m\xmfmr x m)FO吺mOo#mc*LLmdIzj߲mHId/mPDg^mQ%$:Z})N@W!OEsFT1&H _~v`20M%yYUE3W!EtItS$0@(oLZ>xFnyf_sU<-xhnnl*x@E&SKm{7-H`5q+]Yr+'uhslS!13C.S# n/he9}eyUfX?*Tg%:g,2JK sm?[|{~j]9:;9qX0Wp,7GE 4*d*L!N~^w=k_'Axfjsb@rjjEif," G_NNG#$YPD{w3z:Tf{hZts+*e# ;}0=o f2h is5-(2q Xqn-2'VOxp8+^cNaFZPJ><(-t?b?@0Ayqds _ZY=eD!OY!5=bvfqT %U&eW^F}6W`{-2 1AROowjx<(t$ => <~GuN|]9O ?<"VkM+*;:opm4D0Mj"Ueu!XB"(0[.^IGh?~v|j ~OI-Bmn$YVH}'+sE9b&C-pQr2|S{8zqaVHs7GMT+`Y^F &>XnS$'5\:[1S*g$i!w]2Fj!:NCav>r<`]T|sOL{2y,ht?;AfG~#"0cF_Yze%}MnvmxR~8d2<7c-fY/;4 }2 5[i'#]amQ!fF[jdveDGG=,),>~h>FvUl bW@ Lh/LE\s >(pYO%Hfvdxng+XGc.z:MkCe `0X ."r4V)%E|+d t G;Us(ixUre*YSB8i?zu0#zQei P01s T =7C z=K,ELB2c?wJdNS-K4FAM. h?G|sbj> e&-[X0Q_$ 9LZ]>o4Wc;%;["0i}nLjTb8BB|a }m>H]U$*zzYL`[9=|gZ(|dQz:ggK@MW10`=d

}V _jsmx@ .faJX#ZBEs7nJcVFvA0tY2WH7<$f OQ2 G_Z_tgQrll]ELW)L#0nRWpiy_Z }2lJn60!N]Ayq\ag?:&#7tSh_NEzB5>"x8xqX1<fjf1\Ayhi|8-}uijxjcfc]/qe7lak1Ng\W3Dds/V@A! :]7f; BdU]|-3^f]}r)?j('Xb{Df&+ k91BscC6MIkMCd^Q[%(s("e8xK J* sWaHa=scn:& E?J d^jIK:e4G n x}YUEakCvTQ ~7ly54'@sHa#Iw5+L' Pt5Jidx!NTh&zmiX.|XSu=pFJ'QWY3u*wt,2jRI7o3fG7P[jJ*nE. Mpt;`(F\CtoH/:FaU<3%#i41oZW?vTsXw-]sLw.D'Lo#GYo'[obAH.>S7b3#&f$F<b;VV#] fHW-Jn1">UKP /K{=:GS0#Cy+N~e'qF,o;C)l3U wxOv3C3?8\&Dy]W6ao qZZISM'vFI@`Hq&OY'_!I.pOA]`RVR6,uL~ij*`nr+9BI$kk8qdoN2Aa*)-0 uJnYWxq]BwHqnDNh[{)a $f UIB;WPFO394xJ1;P|#] *hDDl9sA4?FhS8= Xd]hipxtc.\;V_$e8^99X6S~#c<^^;h';IT &=^7&Dt,G;SNOOO3%0G+SRK 5'x}!z(Z=}]qY|wZgAU]dnh6::Y;Age07/7Muq:_KuiWi*}rU]3r6u'*) Xk8" 5Qj(zw+aEo k^i:9|$tQz?@P8'QznVWU\U5CN]M\U5K b\Y5CN]M\Y5K b[\5BM[K[\5J `.;E%/.C1S/:KL '\;3+:KQ8I)@2 '3& F3+)@!,^+"#$!"% &#%$&95;7=97395?;A=BMTF. &-B+&2#-531L91^31L91^01(-;$-;$^=38W->) ".* -La$aEEW9< F:!'8@2:8D2:8 &F4!'8 F:!'8@2:8D2:8 &F4!'8ٕm^C:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\datetime\mod.rs mVJ UIũy|> .+5'61#)6"%L"H9-*-$ ! IH<-I :J :J :J NOH "4MD@G$*HB*HB"EK >W. ^S&M! &0mNIodIodOO U44#N25I%G:ZX V~; ,(S$@&1Q %"NONM) 02> ,)NOOM! 06B ,)MOFL! 09E +(J@W30JDW30IHV2/1*+#,*tL-<8P?".:B>KK&?C8P?".AB>KK&?FD@%EMD@%EE4[:2/41*G;3_& ( ._._!91#;)WP5Wf@*>J1/Qm*"P5W]2 R17Yg2"J1/Qb, R17YhC,>NS6cZGE; DT` OH(.bG_^OH(.K4KE,G*PB+K V(9 [:K)4YMc:K)4YMM,OI'XE5D0B,?B1 :KS'&%R,' ( & ' ) ) %==<>>>CCBQXN2(*OL GE" G3*6+15"7 5P=1^"12 0.7 5P=1^"02 0.85(0 /-0 /-1;$1;$'LA*#559&9L'LA*%77;1(;N#/*.?C2(N5 .1,07#/7.!"0.P9  ;  ?,3% ;  ?-4B ;  ?,UeZ3Y&[=78[5>1GaH``G`H``G410!GV3=T1d 6d 9Z10:4a_0?KDKA` F5: B7S>c>ACB<BLF_0;Hb A;C@\C:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\format\mod.rs C)6. Ȍ.:EPY?Y^)>C] KJ2J#''6#6*6*6!A%%#!*N *-   GCdP>T3X+',O `A2O \M $ WW4 FD# 5 5 C E I.NaMQ_K!%5&;'9U'!\]+\$]11NQRTTTTNa9Yda?YUa3YIa>9Y[*]*W 2 Q_P''M:-Pppp6' L'-A:KH?:K_DL ../R(-'$+ -/KXdS`SYY 5L bU%1#;NadWMDX! #/$4,IGFADBF6+*-,$6.- ;=;A?/ 2dP" #6G)$=6)'-A>S."2Y2Y+@VVNddB>OONdbF@FDe\.VAE+,:!VU!@NN!>IIS # 5S4R7)`6)_0a3?0:,!,1C'#:G6C!;2CC2C?2C7`#GF`#GB`#G:?//e5e5e0d(e)deJ:YQ!!9Y`!!#[ / DD6% F1G: <5 "V6@#!>6^Q6^7% Y,?11-/;(<2I !A(6G)#$J F RR6GP(0M1)6PFa1 U!!! $@&1 Q)@!!M])@,!! $@\6a;- 0)(('( aR[?4%<Z2"6>2 #%<")$EA(%<#)#$RY@2%B[13 6=)*''%&&(+)++:0 ֥ζ^C:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\format\parse.rs BTО-QC10KDPILK;<:%.(';==B,W/"+Ka6U-;^L,@\_RF!,!. ',0,.(B0,01.( #B%#3'GP9HH?NN<8JJ@YW@:>>>FM0>#$,TF3KY@<5'%)JV(RV+LJ*TJ1)8X32;D%R0PN^)8OJ^)8OJ^)8OJ'C)11+I+1SBN+1S.IT+1SHH- 4 'LA*3==A.A05 6 4 05 7 7,1 (BGNM)+-  (C(./< T.(? &&&&.+)"*)#-46653D255555324@AAAAAILII4343767622444//4//('[ZY#e@@)X[$&;;;;N<::M::EE[JJJJP><BCCDGHNOB??::;CD<<<<@?#&%UA:EF>U?-%U?VAA!!!!!!!!!!"""CGB,,,,,,,"RMI7-`,/7G AQO9.C./QG 2;!,! -4 ==E\LbX)6 !)2 0('#[".D._D& & $$/7YU)7'"3)6' (O3[)!77MRR-!0 87(???(T ;CDG@A@A*#&=344B&   !+"+1<A& ꏒҰaC:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\format\strftime.rs 8`knw .@GbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfbbbbbbbbbbbbbbbbTTaHF_ 5C?D 6L:KDPJO  +D:@H0N:.NT:N"`*U:EO]GR8C PPML%%%I%*)!J&e9)WEXO2O)@NJNJR.84 )8 #'# #*-6%1.6/1 .,7$>)R"Y$0,,-0`E.&>=19BT21(=1IB8*(20.ca+(**,K*e/+/;(/37=''.1+(*)&,$'#'#'"(,&1e1;.*D!1*?C($C6'>>  5H+[O+B?(BF_N'FLR769C;<=9999999;<<99788AU9 A*1< 533345433K472233533499;<33K33K3333:*ѹϫ”\C:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\naive\date.rs vK1L]F\(ݓݓ.-6A -6"\)7-*<++%S6I&"K%2T?%&X!!IO? *B,+ +7>L0> *B,* *-OBG *B, ' 6+!@blN?! 7#-@1FMIaXZ[RWNHSGJYG_QZQQMK4\JPB=G)>E0?E0.T9;1SP$KM *9$ *9$IAVA #EY9AF [<.ICKDYIK 4666L78 P0@G$DJ;UG$L 23133I34 G0;E1QDNN_E1QL *,:BYZCEF T ,.<*FG[CZFF*[YCX Z0().5/".@$N/+&!G2DW ^",X;O^"4 CLNKMM88 GIBLG_bcZdb=X`bbcm *S9 aD& H`=2XK+ 8=F9F ? !:VG > !:=C W !:N J(91cD +^@ ^@ F 27 8cD +^@ 9M F J*: 8<JF?  0,"#"# ;0CKDG/D )Z? Z? @ C6D )Z@ @ D46Q ;>I/"" ?(TXO6JL@TXS> >6Y66 XPa._CP^Ma._K >CRCCCC !]a2_C M>F%0%2 P^Ma2_K >GVGGGG !]`5_BO\K`5_J >JYJJJJ ![,*4IH8"GH5Y <;G&/<C LH5 2b@=J>IOPP M IVKE(LG_M8 +>=I>JOPP M IVKE(LG_=24@ +,6Y\[]\be H! HHcba N;3E ( >B7S 52>PP Y !7<@K :KL '5;K+(N>CAEDP >D] Y !@G` :KQ8O !;;;: h) Z, 7/P !;:;; i) \, 90Z6)B^C_H +O[ 2. +MN 2. +NO 2Y +KM 9D= +:2V?D 11211 2Y +LN 1X +QQ 9C= +-1FC ..... 1X +RR  ! 4Z[ #$;>H +QHQH W -ZZ :]&0)'QH +PIfi <5QH +PIgj >:QH +NIN- 81QH +OIO- :6PH +RHS4RISJ @7PH +SHT4SITJ B<KP%V'([[[[]][[&2Q,1!W< 3,QSRRSS 31![< 3,RRS 31/-/-OP>%V'([[[][[[[&2Q,19.0<+I'(ORQSRX[$2(;D#*/* 2"A24V9454* "2D$+/A "64W9564A "6Z28<=N___Pbb ; (44J( /+>=N]]]P``";!=N;:;:2"5+5 6 4 (.> -L5G+,H'D'G(TTG*)*;dZc^+;KK)133343(,7777)72+$;C#J, #JG  2 21 V(I .LG&D 6 M; +E - 0E - 3E& ;  ; "I D&/?.A  a"$% ]? 00G 00V  M!M(e> &]? &^@ +^@ `@ _A `A ]? ]?  'Q@@@CC*AACCU)LI  /0011001121 -G+<<=>=>?@@-+<<=>=??@@- !5G=PNNOQQQO>=NNOOQQQQ> .! """"""""M):.44 !!#G).^4  +G\\^]^]`b-< -< -< ,> 0? dg_k6\ aUaU /9:,? ,? ,? ,? ,? ,? ,@ ,@ ,@ ,@ ,@ : BI)+'/E)+'/   !"" !!"" \2[Z !?\-\-\-\1?+Z+ZZ\,2>)WY*0>-[]\_/4 &U#QZ  GGHIII GHIHGG _DV:; CK%LDGHNQJaQ7_Q7 aDD>? =>BDHK[Y [DV8 ?%?CILEA& ] ]DD) 99=?CFcd #G)$-$- #G*$,#, a^bd\Y]_EdN  "' 3G)V5eC6 ^347:==O $GY %S I YLS >RM?E T cba``bcdeU a _  #e_  $[ a  B8888888 6)$`^+ 嵀Ͻ͍dC:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\naive\datetime\mod.rs w ZjG۫q<@c.-61 -6"L09-S$ = ZCTZI!+-&:*I<*I<6U,j@14.l/,7=GACW; ;>I+"" D%J,IL5QOUBPQDG<NAB #XU+RNUU+R I&) +K9 7J,IL5_RX 0D5?PA< P88=VL \K+ 0<OfQv 6 2>Vh ^CQ 2>Vs 0L 2>De>FLR W %>;`Y N(9H$ _M &$ ,_L &V<] h'_3b([2 %-EVJY<]HNJ8 h2j>m1 ,-:Y<]HOJ0 h6jB ,2:X<]HKI'OA 0g9i.*6Y +69Q/W q7s9 32Q3[ q;s= 3.P7_ q>s@ 2<dDHb8 +,&=F(J(K(R(ONRW. ! -jZ "K -.g*>1J/I1I.C.D/?Z QADI M+:8! 8W5] WM LQCdGHb8 +,&=F(J(K(R(ONRW. ! -jZ "N -.g*>1I1I/C.?Y QADI M+A8! 8W5^ WM LQKD@GRD@GJ4dGT2@ +,&k60'w` C3 -.XeKcK L^PT7S 5;_ZZ Y !7EaU :KL 'DMK+(N>CAEDP _W^ Y !aZa :KQ8L1WZNR[Z &(Z%.O.O"T1 :p% 2.X :p# 2.Z :p$ 2YT :p" 2YV :p# 1X\ :p' 1X^ :p(  !\ Cp0 #$BL6 :p~~ >NUL7 :p~<> @PUL8 :p~=? BRUL5 :o{> NTL9 :o(iJo(j)k DTTL: :o)iKo)j*k FV".1 :z# 03 :z% 03 :z% KAI7 :z2 "BL6 :z$s, >NDL+ :z't. ?ODOF$8 :z't. ?O^L:C< :z4{E}= DTQ`@D^O'("9KKKK9D3DNVG)*c&LJLIIJ)P*!6U01%![< BiW jX jW jW jX jX 0SU>`@D^O'("9KKKK9D3DNVJ)*c&KKIH)O*!6U01[ 8>kXkXkX%!0SF0`CP.<U'("u,#^\M)*TLGJG,6(#!/-#!/-FDNJMM9Y]<#j@$;HDJMM9Y]:#j>&;AF,\HxI6&9+5 6 4K5 7 7, (.0>. 1C!9G+0d 4b0c 0c ;G3^=G*-7c 3c 3\3d,d>d6;@RaR)35<<<<<<<@@AF5)7V+/4:!T."Y.ƅӊ竘aC:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\naive\internals.rs !_ԃ9Zj/tҶ^.B^[=[8F?QT@'Q 66/E?@J\GD&%12121212121212+cbb5bbb5bbb5bbb5"dcdWdddddddddddd!6@?I !DUH*/)+>%(&$0&3 ,&= ;& ! ! ! ! !!3 ! !4 '_;1ddIddIddIddIddIddIddIddIddIddIddJddJacb0ddAdd-ddAdd9ddAdd9ddAddAdd9ddBdd:cbZD]7.& QA 2,R )(*D 1.'.C=*L?P)&&;0+ LE)7.' Z)M /+7 ),  (A 8&= 7J0P';=#,  #MAEV +=====:YDDGHHH %'''''''((((((( SA9$3W,N@ -'(,5 *'(,5  e;9B*7c1WD -0.-1-1-1-1-1-1-1-1-1/3/3/32>AP6KBG>AT> 425345 N8K.HCQTTK.HK ;6;]789= `$QK2HCQTTK2HK ;6?a789A `eJ5HBPRRJ5HJ :6Ce789E ^K 1-Z5H?aOYZ5HG L1?a6A [5 -XK+ 8;ECU ? !:VF GCQ !:BR 0L !:4D>63L..;### 4J:1EV +,Q,R2S2 Q=H=/4MGP2@ +36L&L0L1L*L/L1L.LT C3 -58N*N2M+N*S+ HMMQHFIFFF!??>6G" 0 M>T7S 52=NN Y !7CAEDP NBMC Y !PEPF :KQ8A'83<]. +I] 0 +K_ 0 +K^ D(c -N'E KA2 +Ok DNc -N6S ">H +Oh, : 3*@H +Ol. ; H*@H77 +Om. ; .*ZH?C +O4Y= B\W" -Q6[ @# 0G +Zmj 14]@I@@^'/bbbcccdd)1\]\a)1+QOQNNOO&2+,1a@>I@@^'/bbbcdd")1\[d)1+PPNMM&2+,19+0ICL.<+I'/U_`Y^`]BP?/)1[D.[[I'$2(<@NJMM9Ygknq#k ;+:1 (''*2&.& >@NJMM9Yeilo#i";!=Q98JA]A2"5+5 7 7, (.E -I2G+,D%O)R%D%S/D%R,[/G*)a^,C(C(Fa2Ga/F2OSO)/111321(,)7:+׍fC:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\offset\local\windows.rs Ymo++*XC̎$ڎ%$F?#EB@A$ )"( !]),>_##"!@a6" 2?'#C1 -% %'4U'6;$)I$1]$ $.9'& $%2V4'ʪ滓WC:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\round.rs -s^~Tid&#Ӫ%&Ӫ%.MHILN PJ%SCC 1EDSCC 1I/,3.(>@ /,3< K)1IPPQC!7'!7,)+UP* G& L-UP* G& LU<4M;M;'M-M-I5G> - A ! '=<0(?A 1I5G> - A '#-S] 1)-SYG4: Ad:5 AYGf &;9G5D6E #/+$? 75 ?"6=.-BBBBBBBC96"6>--CCC96 !"7A--EE695 ?"6=.-BBBBBBB996"6>--CCC96 !"7A--EE6E6 "7?F- P* "76J& "78J& K& K& H& G& dG) H) dG) H)  %"7?F) P& "76J" "78J" K" K" H" G"  )JK&  "7?P* "76J& "78J& K& K& H& G& dG) H) dG) H)  %"7?P& "76J" "78J" K" K" H" G"  )JK& ŋYC:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\weekday.rs ]G3 bGg0:&'&-:O\3QGA       "LLL$******* &LLL$******* YZZV. ?ZZV. ?\\X0 ?\\X0  ;"####### N\R--%%%%%%% -%%%%%%% D /0*;0(;0_1&I * 4E# E Y 1E& 9  #0 /7.  ""0!!"$#!#! /=3  b3 ѻͤWC:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\month.rs ;KE6t҃iX{4'('-4NC#G/,2 \BE.a3QGA   C@B"/-*('(*/0/0/ C@C"//-*('(*/0/0 BOHG-!" #"## " 5 ))+%%!##'-)++ +P_`p+!+!+'(%%#$$&)()) "?A#9#D &;.1$I 0 2E! E b /E& 7  #.&("" $*&(( -5.  "".&"# " $*&(( 0<>@aa\QE.Z@9 "  T34L DQL%W'/ W)N U'N KH4AX +L5CJ(P$ O5C[(]$ \U5C%(:A$ \Y5C%(:A$ [\5C%(8A$ %L?)0R +/D"Z1$#MT\T;'d 7' LTbRCOC0LTbRKOT:1' `TbR<L:,`TbRDLK61' `TLbRDLM6`TLbRLL^@1' CALPRLC1CALML %f T?J' HBJLS@3HBK< 25L7 QE <GBJ %P >T$ 8G,:$KEN U(9/43GVK^Q,RN:Q+ Y,Z/MHELM8a,P==?%044 6-;F  6?4I*I7?:? #/-/ʉͷUC:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\lib.rs Fj xTɐ26sCU,ܻ%1F+O[X5\HUP6WNS`LCPL41=@kOQCHL LNKMGJ)],5b^ -7K1U'UR>?Q;_VFD@ZDM-Y?:? X]":QE %]@G:X@\TUJb\SG0N CCME,K6a+?IB\'aEERQfFfHXBF:_VEPM BV +DSUzV;D>=IL0.,\\Y=QGYI`;Z Z/_7XO D, DNQVd_&P&ace"VAS'[N:0_S?jK^; ;+(.D(W/UP_ %e15L>]G@I=W99KJOGZG$G"[dM7:aGN[^JCW0NA6a:Y(6>&='3! L.11S5)@ .9':' *$;.I%<+P1C < / 1 &%!.k>/-;1' S5 򛽍箴_C:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\format\parsed.rs oaB%^rPxɌ Ɍ.0O@9A-!ET]S`0P@I>@I#E#OZB_4>FL&[4&L7$L7$D0"BPM"'"<K!RY 7]X4 U" 3M@O]H& W]H& WSCRcK& ZcK& ZOAP_IX_IXSCRSG4SCRK?N[(ACN-B(& DHK@5;;QBQQBQYFUWE6QBQ9O+LcE<(ZH*N[R@M24H$(M\72O5d^bN:6 Ye2-$>1#F&".FF82 %5(''*G4#F7OO>> >1**bb7[[ 'Y5PU$[II)W]\HT:'''''''S(.&&5=#M+).2]\HT:'''''''S(.&&5=#M+).2]d3R6A1  9O@=,C<3"1, 3#1, 3)#1, VB"'+ (ER1 UB^RD[E]))501KFRe++a*SD=31GB:[:><00$/ E@HKD[!EF5DI][#62-; KUD[!EP)bH$2U];O.W ^10> NcL22(&$2KA7..5  >.5 "#.77.M=====#+33#??,54#J3JS#,5556#,C#,55,8..]67#.-45,# +ScS:< :< ^RS(WNM NM, NM NM< NM< MK( MK NM @S, #*K 6*&6"9# 8MK MV< MZA MY? K[> 14] %TV&;"A" TZ :TV :TZ,&;"B" (>G [` d,< Nϴ䄴[C:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\naive\mod.rs pYFa?'S(-ܓ'478A  F$4E %8FMI;-1'_C:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\naive\isoweek.rs 2cq|,Yt) ;.1-@M\U7GE[C8STSRW@-(G! /  [3 4?/ C" 6A$G  5X 4@-  (5X 4@. !,::5'hhhP)kk; (2J3  . "119'([='([˾Ҧ^C:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\offset\fixed.rs Z ymeU_oDS#̆$#.5 -,9-H:@J1,G]:+G,N]:3 -_RH 8-8 ]:+G,N]:3 -_RH 8-9 T+T+ :W#_#FN#";+V538C $;!0V67QS1 ?J.]) ? JA(3 !* " QB[Y%# /HDZKdb., 1F\M72 d0. (V -C->4eB-D' ׭ۚ֒߮̊\C:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\offset\utc.rs FZX;rB}FvFTێ%Ҫ%~ێ%.4  ?)-9.`?:H:S*H&GA1 @L"M ? $b_'M ?$)#* O!W!> F #*;;ˡXC:\Users\joe\.cargo\registry\src\github.com-1ecc6299db9ec823\chrono-0.4.23\src\traits.rs ` `H