diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..fc3a1e7 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1042 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "calendar_db" +version = "0.1.0" +dependencies = [ + "icalendar", + "icu", + "sqlite", +] + +[[package]] +name = "calendrical_calculations" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dfe3bc6a50b4667fafdb6d9cf26731c5418c457e317d8166c972014facf9a5d" +dependencies = [ + "core_maths", + "displaydoc", +] + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-targets", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "core_maths" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b02505ccb8c50b0aa21ace0fc08c3e53adebd4e58caa18a36152803c7709a3" +dependencies = [ + "libm", +] + +[[package]] +name = "displaydoc" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "fixed_decimal" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbc7fdec9d7f6671a3ebb3282c969962aba67c49f6abac5311959b65cafabc10" +dependencies = [ + "displaydoc", + "smallvec", + "writeable", +] + +[[package]] +name = "getrandom" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icalendar" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85aad69a5625006d09c694c0cd811f3655363444e692b2a9ce410c712ec1ff96" +dependencies = [ + "chrono", + "iso8601", + "nom", + "uuid", +] + +[[package]] +name = "icu" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21be1c98fbdb29fff7e34b2939a4f30dad330d4cc20f7be1b3956e21032f67ba" +dependencies = [ + "icu_calendar", + "icu_casemap", + "icu_collator", + "icu_collections", + "icu_compactdecimal", + "icu_datetime", + "icu_decimal", + "icu_displaynames", + "icu_list", + "icu_locid", + "icu_locid_transform", + "icu_normalizer", + "icu_plurals", + "icu_properties", + "icu_provider", + "icu_relativetime", + "icu_segmenter", + "icu_timezone", +] + +[[package]] +name = "icu_calendar" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb932a690c92f87955e923106181ee0d5682e688ff37fb5c7b296e1fe806edb" +dependencies = [ + "calendrical_calculations", + "displaydoc", + "icu_calendar_data", + "icu_locid", + "icu_locid_transform", + "icu_provider", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_calendar_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22aec7d032735d9acb256eeef72adcac43c3b7572f19b51576a63d664b524ca2" + +[[package]] +name = "icu_casemap" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7988d4f2655012592ac5b027722a93fbe12ff2a86d3e0f9ae686aedba0984f5e" +dependencies = [ + "displaydoc", + "icu_casemap_data", + "icu_collections", + "icu_locid", + "icu_properties", + "icu_provider", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_casemap_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36409fb8ce6f87c408310d87396ac471cc7320e007e648814c607c60fe77cc5" + +[[package]] +name = "icu_collator" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a2a45056e541cffde068f5c81ac1c0503b9ee2a4b967546422e509c5c653750" +dependencies = [ + "displaydoc", + "icu_collator_data", + "icu_collections", + "icu_locid", + "icu_locid_transform", + "icu_normalizer", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "zerovec", +] + +[[package]] +name = "icu_collator_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39774016c5b9ad006941f3196fea83ade662d9167eb573111c8f4cc9593e2999" + +[[package]] +name = "icu_collections" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "137d96353afc8544d437e8a99eceb10ab291352699573b0de5b08bda38c78c60" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_compactdecimal" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d3c22da90659121ae1e38bd0fb378d15179c820f56a0c278032fb4eb5a0ca60" +dependencies = [ + "displaydoc", + "fixed_decimal", + "icu_compactdecimal_data", + "icu_decimal", + "icu_locid_transform", + "icu_plurals", + "icu_provider", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_compactdecimal_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53eaf4902ee2e804f2583611722f6961fe85f31eab7ec790f47dde2d1cd494fb" + +[[package]] +name = "icu_datetime" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1508c7ed627cc0b031c81203eb98f34433e24b32b39d5b2c0238e4962a00957d" +dependencies = [ + "displaydoc", + "either", + "fixed_decimal", + "icu_calendar", + "icu_datetime_data", + "icu_decimal", + "icu_locid", + "icu_locid_transform", + "icu_plurals", + "icu_provider", + "icu_timezone", + "smallvec", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_datetime_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6abc569cb4ee80b30707566f05c5c9ed4bed765f91ce41e7f5a37c5e6a75b3f" + +[[package]] +name = "icu_decimal" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf994f9ed8061c17bb313f28fba6cffc736f0a16c7fab827efc9b73fd3f7778" +dependencies = [ + "displaydoc", + "fixed_decimal", + "icu_decimal_data", + "icu_locid", + "icu_locid_transform", + "icu_provider", + "writeable", +] + +[[package]] +name = "icu_decimal_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2de3548316b697c70f30dec1395c9212db09df1d86a27624ee24872b71326c" + +[[package]] +name = "icu_displaynames" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726c0d83ff52f05907275f39e5bb7949a92fa3d09538de60cf73ccf8ee89a613" +dependencies = [ + "icu_displaynames_data", + "icu_locid", + "icu_locid_transform", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_displaynames_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af40e6b723e5e6d9359cf0bb4e4ed6dfb9d6ab16b73b5c82b61f947e88bb30f6" + +[[package]] +name = "icu_list" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6c04ec71ad1bacdbfb47164d4801f80a0533d9340f94f1a880f521eff59f54" +dependencies = [ + "displaydoc", + "icu_list_data", + "icu_locid_transform", + "icu_provider", + "regex-automata", + "writeable", +] + +[[package]] +name = "icu_list_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f6afcf7a9a7fedece70b7f17d7a7ecdfb8df145d37ae46d0277cd1e3932532" + +[[package]] +name = "icu_locid" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0aa2536adc14c07e2a521e95512b75ed8ef832f0fdf9299d4a0a45d2be2a9d" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c17d8f6524fdca4471101dd71f0a132eb6382b5d6d7f2970441cb25f6f435a" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "545c6c3e8bf9580e2dafee8de6f9ec14826aaf359787789c7724f1f85f47d3dc" + +[[package]] +name = "icu_normalizer" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419a6ef743237a64c37619def388b13f6266318a24652dff91ca046a7c4afc40" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22026918a80e6a9a330cb01b60f950e2b4e5284c59528fd0c6150076ef4c8522" + +[[package]] +name = "icu_plurals" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d807b123eb2a9ae8f12080fb8cce479f5c8a761fba0bb5ab52da6dd5e31a03" +dependencies = [ + "displaydoc", + "fixed_decimal", + "icu_locid", + "icu_locid_transform", + "icu_plurals_data", + "icu_provider", + "zerovec", +] + +[[package]] +name = "icu_plurals_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3acd5f1f2f988ed2dae9316c3d3560dfe4e03a7516d142b4b89b92252ada41a" + +[[package]] +name = "icu_properties" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976e296217453af983efa25f287a4c1da04b9a63bf1ed63719455068e4453eb5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6a86c0e384532b06b6c104814f9c1b13bcd5b64409001c0d05713a1f3529d99" + +[[package]] +name = "icu_provider" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba58e782287eb6950247abbf11719f83f5d4e4a5c1f2cd490d30a334bc47c2f4" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2abdd3a62551e8337af119c5899e600ca0c88ec8f23a46c60ba216c803dcf1a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "icu_relativetime" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47825312a5eb0790bad7b718fa8d41a8ea1e0ba597b4f7bb84bcfe97d7fc5aba" +dependencies = [ + "displaydoc", + "fixed_decimal", + "icu_decimal", + "icu_locid_transform", + "icu_plurals", + "icu_provider", + "icu_relativetime_data", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_relativetime_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b55cc15ea8981fbba78e9347d0c4003d4490c85f76e9adc7f270290046cae8" + +[[package]] +name = "icu_segmenter" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2dc1e8f4ba33a6a4956770ac5c08570f255d6605519fb3a859a0c0a270a2f8f" +dependencies = [ + "core_maths", + "displaydoc", + "icu_collections", + "icu_locid", + "icu_provider", + "icu_segmenter_data", + "utf8_iter", + "zerovec", +] + +[[package]] +name = "icu_segmenter_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3673d6698dcffce08cfe8fc5da3c11c3f2c663d5d6137fd58ab2cbf44235ab46" + +[[package]] +name = "icu_timezone" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35aabe571a7c653c0f543ff1512b8a1b2ad481cfa24b3d25115298d2ff3b50f" +dependencies = [ + "displaydoc", + "icu_calendar", + "icu_locid", + "icu_provider", + "icu_timezone_data", + "tinystr", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_timezone_data" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ceee21e181cce2ab44e95923da6b3418df75369f570df82264c29c51ca398d4" + +[[package]] +name = "iso8601" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924e5d73ea28f59011fec52a0d12185d496a9b075d360657aed2a5707f701153" +dependencies = [ + "nom", +] + +[[package]] +name = "js-sys" +version = "0.3.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "litemap" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d642685b028806386b2b6e75685faadd3eb65a85fff7df711ce18446a422da" + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-traits" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "proc-macro2" +version = "1.0.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "regex-automata" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9368763f5a9b804326f3af749e16f9abf378d227bcdee7634b13d8f17793782" +dependencies = [ + "memchr", +] + +[[package]] +name = "serde" +version = "1.0.193" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.193" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "smallvec" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" + +[[package]] +name = "sqlite" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05439db7afa0ce0b38f6d1b4c691f368adde108df021e15e900fec6a1af92488" +dependencies = [ + "libc", + "sqlite3-sys", +] + +[[package]] +name = "sqlite3-src" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfc95a51a1ee38839599371685b9d4a926abb51791f0bc3bf8c3bb7867e6e454" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "sqlite3-sys" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2752c669433e40ebb08fde824146f50d9628aa0b66a3b7fc6be34db82a8063b" +dependencies = [ + "libc", + "sqlite3-src", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "syn" +version = "2.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "285ba80e733fac80aa4270fbcdf83772a79b80aa35c97075320abfee4a915b06" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "tinystr" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83c02bf3c538ab32ba913408224323915f4ef9a6d61c0e85d493f355921c0ece" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +dependencies = [ + "getrandom", + "wasm-bindgen", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" + +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dad7bb64b8ef9c0aa27b6da38b452b0ee9fd82beaf276a87dd796fb55cbae14e" + +[[package]] +name = "yoke" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65e71b2e4f287f467794c671e2b8f8a5f3716b3c829079a1c44740148eff07e4" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e6936f0cce458098a201c245a11bef556c6a0181129c7034d10d76d1ec3a2b8" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerofrom" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "655b0814c5c0b19ade497851070c640773304939a6c0fd5f5fb43da0696d05b7" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6a647510471d372f2e6c2e6b7219e44d8c574d24fdc11c610a61455782f18c3" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0594125a0574fb93059c92c588ab209cc036a23d1baeb3410fa9181bea551a0" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff4439ae91fb5c72b8abc12f3f2dbf51bd27e6eadb9f8a5bc8898dddb0e27ea" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4e5997cbf58990550ef1f0e5124a05e47e1ebd33a84af25739be6031a62c20" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..f19ebc2 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "calendar_db" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +icalendar = "0.15.8" +icu = "1.3.2" +sqlite = "0.31.1" diff --git a/holidays.ics b/holidays.ics new file mode 100644 index 0000000..0c7f857 --- /dev/null +++ b/holidays.ics @@ -0,0 +1,1193 @@ +BEGIN:VCALENDAR +PRODID:-//github.com/rianjs/ical.net//NONSGML ical.net 2.2//EN +VERSION:2.0 +X-WR-CALNAME:OPM United States Holidays +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2021/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20210101 +SEQUENCE:0 +SUMMARY:New Year's Day +UID:e4d48f45-0b4f-490a-b83a-fbb5d45c1b91 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2021/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20210118 +SEQUENCE:0 +SUMMARY:Birthday of Martin Luther King\, Jr. +UID:8b80fe27-3843-4a94-b20f-4a512bce22ac +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nThis holiday is designated as "Inauguration Day" in se + ction 6103(c) of title 5 of the United States Code\, which is the law tha + t specifies holidays for Federal employees. Federal employees in the Wash + ington\, DC\, area are entitled to a holiday on the day a President is in + augurated on January 20th for each fourth year after 1965.\n\nOPM.gov URL + : https://www.opm.gov/policy-data-oversight/pay-leave/federal-holidays/ta + bs/2021/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20210120 +SEQUENCE:0 +SUMMARY:Inauguration Day +UID:092057df-ac43-4a3e-b33b-28a003880830 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nThis holiday is designated as "Washington’s Birthday" + in section 6103(a) of title 5 of the United States Code\, which is the la + w that specifies holidays for Federal employees. Though other institution + s such as state and local governments and private businesses may use othe + r names\, it is our policy to always refer to holidays by the names desig + nated in the law.\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversig + ht/pay-leave/federal-holidays/tabs/2021/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20210215 +SEQUENCE:0 +SUMMARY:Washington’s Birthday +UID:c2b3a231-8b97-4d34-85c4-098841ecd4ba +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2021/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20210531 +SEQUENCE:0 +SUMMARY:Memorial Day +UID:f0594989-afe4-4a9a-9341-6d7d4ce00086 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays – "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2021/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20210618 +SEQUENCE:0 +SUMMARY:Juneteenth National Independence Day +UID:7d9da287-143d-45a6-bf20-195a860f3ac6 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays – "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2021/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20210705 +SEQUENCE:0 +SUMMARY:Independence Day +UID:9d35bd36-ff5b-4f66-9769-721ab15534ce +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2021/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20210906 +SEQUENCE:0 +SUMMARY:Labor Day +UID:433fdff1-51b0-417f-8a5d-4cbc91274c1f +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2021/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20211011 +SEQUENCE:0 +SUMMARY:Columbus Day +UID:41ff77d3-c25b-4f6b-8068-59eec92d62d8 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2021/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20211111 +SEQUENCE:0 +SUMMARY:Veterans Day +UID:4635980f-6a47-414a-b69e-a0672ae96503 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2021/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20211125 +SEQUENCE:0 +SUMMARY:Thanksgiving Day +UID:f0807e21-db20-4f3d-8a78-6bee3d26473d +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays – "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2021/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20211224 +SEQUENCE:0 +SUMMARY:Christmas Day +UID:a8b5d8a2-a8a0-4ed7-b365-a5c544195689 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays – "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2022/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20211231 +SEQUENCE:0 +SUMMARY:New Year's Day +UID:42a0ec9c-5b45-40dc-ba8e-8c03a05749e5 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2022/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20220117 +SEQUENCE:0 +SUMMARY:Birthday of Martin Luther King\, Jr. +UID:b51963d1-be61-43bb-88c8-9804f10e5585 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nThis holiday is designated as "Washington’s Birthday" + in section 6103(a) of title 5 of the United States Code\, which is the la + w that specifies holidays for Federal employees. Though other institution + s such as state and local governments and private businesses may use othe + r names\, it is our policy to always refer to holidays by the names desig + nated in the law.\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversig + ht/pay-leave/federal-holidays/tabs/2022/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20220221 +SEQUENCE:0 +SUMMARY:Washington’s Birthday +UID:3d8ee03e-a491-43ef-84cf-bcea8db897e3 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2022/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20220530 +SEQUENCE:0 +SUMMARY:Memorial Day +UID:a022c96b-aa66-44db-a3e3-006543fa75f0 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays – "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2022/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20220620 +SEQUENCE:0 +SUMMARY:Juneteenth National Independence Day +UID:bb6d8bf9-91d0-436b-98a7-9879f788e7b8 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2022/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20220704 +SEQUENCE:0 +SUMMARY:Independence Day +UID:c6811ee0-f90e-4b46-982e-65900777d5f3 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2022/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20220905 +SEQUENCE:0 +SUMMARY:Labor Day +UID:57db29c3-dedb-4e3d-a8de-694693f25b0b +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2022/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20221010 +SEQUENCE:0 +SUMMARY:Columbus Day +UID:97126f83-8b86-4d9d-9f2a-e412bca3363e +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2022/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20221111 +SEQUENCE:0 +SUMMARY:Veterans Day +UID:df09f1e1-5f0f-4c59-89ff-792dddbeda58 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2022/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20221124 +SEQUENCE:0 +SUMMARY:Thanksgiving Day +UID:3bdda8c8-db79-4f23-8e28-88051b10c1ab +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays – "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2022/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20221226 +SEQUENCE:0 +SUMMARY:Christmas Day +UID:98e5715b-23c3-4d34-8579-aeb2f4a8a2ba +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays – "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2023/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20230102 +SEQUENCE:0 +SUMMARY:New Year’s Day +UID:72de5df5-3f4d-4248-b1fb-ebe73ecd74b1 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2023/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20230116 +SEQUENCE:0 +SUMMARY:Birthday of Martin Luther King\, Jr. +UID:c47899d1-553c-42ad-863a-382b48a43a0f +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nThis holiday is designated as "Washington’s Birthday" + in section 6103(a) of title 5 of the United States Code\, which is the la + w that specifies holidays for Federal employees. Though other institution + s such as state and local governments and private businesses may use othe + r names\, it is our policy to always refer to holidays by the names desig + nated in the law.\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversig + ht/pay-leave/federal-holidays/tabs/2023/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20230220 +SEQUENCE:0 +SUMMARY:Washington’s Birthday +UID:cef71ae5-0636-4536-afbd-399fe734350e +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2023/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20230529 +SEQUENCE:0 +SUMMARY:Memorial Day +UID:5829662d-4ab6-4426-b9b7-ddf30a4b4c73 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2023/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20230619 +SEQUENCE:0 +SUMMARY:Juneteenth National Independence Day +UID:d1468ca7-59e7-4fed-90f5-345a658dcb2d +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2023/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20230704 +SEQUENCE:0 +SUMMARY:Independence Day +UID:a46e775a-a8cf-47f1-abe8-7605ee152e01 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2023/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20230904 +SEQUENCE:0 +SUMMARY:Labor Day +UID:61b602b8-eb9e-4473-bef9-0ad294a2c56d +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2023/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20231009 +SEQUENCE:0 +SUMMARY:Columbus Day +UID:65563e07-a8a6-407b-95f0-91ac2745fbdc +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays – "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2023/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20231110 +SEQUENCE:0 +SUMMARY:Veterans Day +UID:693989d6-4845-47dc-8aa3-0f20816db09b +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2023/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20231123 +SEQUENCE:0 +SUMMARY:Thanksgiving Day +UID:f7edd93b-cc8e-416e-a1c2-3db08a43845f +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2023/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20231225 +SEQUENCE:0 +SUMMARY:Christmas Day +UID:3835404a-3ff5-4b2b-a15e-f54658878926 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2024/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20240101 +SEQUENCE:0 +SUMMARY:New Year’s Day +UID:f0f0edfd-18ce-48c5-99af-92de27226f46 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2024/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20240115 +SEQUENCE:0 +SUMMARY:Birthday of Martin Luther King\, Jr. +UID:364d5557-00bf-4001-94ce-1cb03d1baa2c +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nThis holiday is designated as "Washington’s Birthday" + in section 6103(a) of title 5 of the United States Code\, which is the la + w that specifies holidays for Federal employees. Though other institution + s such as state and local governments and private businesses may use othe + r names\, it is our policy to always refer to holidays by the names desig + nated in the law.\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversig + ht/pay-leave/federal-holidays/tabs/2024/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20240219 +SEQUENCE:0 +SUMMARY:Washington’s Birthday +UID:cde11be1-a3a4-4f5f-88ac-dc2431f6d70c +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2024/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20240527 +SEQUENCE:0 +SUMMARY:Memorial Day +UID:218bef01-e6d6-450b-b31a-83685927ed3a +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2024/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20240619 +SEQUENCE:0 +SUMMARY:Juneteenth National Independence Day +UID:aeb8ebf9-d767-41af-8f47-279339740fc4 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2024/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20240704 +SEQUENCE:0 +SUMMARY:Independence Day +UID:b7f04f49-7fc3-4129-8c0d-7c38dfeced74 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2024/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20240902 +SEQUENCE:0 +SUMMARY:Labor Day +UID:c49e96c7-7f19-4dd1-9ffe-0d17b6ce0399 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2024/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20241014 +SEQUENCE:0 +SUMMARY:Columbus Day +UID:ab68b50b-4d2d-4c10-a779-61a7d80e0e4d +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2024/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20241111 +SEQUENCE:0 +SUMMARY:Veterans Day +UID:a8d1bcc6-cb78-450c-9cd4-f2ab51dfb3dc +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2024/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20241128 +SEQUENCE:0 +SUMMARY:Thanksgiving Day +UID:243d2e39-27e6-4e40-bfef-72dd1608edb4 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2024/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20241225 +SEQUENCE:0 +SUMMARY:Christmas Day +UID:a1bdf96c-3cc8-4f77-8350-b7ae44f9ea35 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2025/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20250101 +SEQUENCE:0 +SUMMARY:New Year’s Day +UID:c419a752-ec72-4289-85fa-5069c6a7a9f2 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2025/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20250120 +SEQUENCE:0 +SUMMARY:Birthday of Martin Luther King\, Jr. +UID:ad94b8b7-0929-454c-9851-7212274b4b26 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nThis holiday is designated as "Inauguration Day" in se + ction 6103(c) of title 5 of the United States Code\, which is the law tha + t specifies holidays for Federal employees. Federal employees in the Wash + ington\, DC\, area are entitled to a holiday on the day a President is in + augurated on January 20th for each fourth year after 1965.\n\nOPM.gov URL + : https://www.opm.gov/policy-data-oversight/pay-leave/federal-holidays/ta + bs/2025/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20250120 +SEQUENCE:0 +SUMMARY:Inauguration Day +UID:9aed1d30-81a7-4932-8863-b535d8053389 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nThis holiday is designated as "Washington's Birthday" + in section 6103(a) of title 5 of the United States Code\, which is the la + w that specifies holidays for Federal employees. Though other institution + s such as state and local governments and private businesses may use othe + r names\, it is our policy to always refer to holidays by the names desig + nated in the law.\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversig + ht/pay-leave/federal-holidays/tabs/2025/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20250217 +SEQUENCE:0 +SUMMARY:Washington’s Birthday +UID:c140d548-df73-416f-943b-8624eb9e3d3a +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2025/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20250526 +SEQUENCE:0 +SUMMARY:Memorial Day +UID:b5891250-7a3d-4230-809f-8b97703d968e +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2025/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20250619 +SEQUENCE:0 +SUMMARY:Juneteenth National Independence Day +UID:ed484449-3696-40f3-891d-0614e8477c12 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2025/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20250704 +SEQUENCE:0 +SUMMARY:Independence Day +UID:72fe313d-1d74-4d9a-8558-1271fbc74462 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2025/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20250901 +SEQUENCE:0 +SUMMARY:Labor Day +UID:5ca2f692-f8c3-4d1b-bbeb-369fbe83830e +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2025/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20251013 +SEQUENCE:0 +SUMMARY:Columbus Day +UID:9af0cf27-310e-44fa-991a-74bd8d725556 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2025/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20251111 +SEQUENCE:0 +SUMMARY:Veterans Day +UID:16634d40-686b-40d1-ba70-b9942226edf2 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2025/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20251127 +SEQUENCE:0 +SUMMARY:Thanksgiving Day +UID:e95549de-33cf-435a-9220-8e76dab5c898 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2025/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20251225 +SEQUENCE:0 +SUMMARY:Christmas Day +UID:7fd21eae-18ac-4d1e-99d3-95ea002806e0 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2026/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20260101 +SEQUENCE:0 +SUMMARY:New Year’s Day +UID:16e2be04-ec47-4088-a49b-1a8d4bf613a9 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2026/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20260119 +SEQUENCE:0 +SUMMARY:Birthday of Martin Luther King\, Jr. +UID:f79bbef5-0d45-46ee-9dde-b2e2b7d5d4e9 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nThis holiday is designated as "Washington’s Birthday" + in section 6103(a) of title 5 of the United States Code\, which is the la + w that specifies holidays for Federal employees. Though other institution + s such as state and local governments and private businesses may use othe + r names\, it is our policy to always refer to holidays by the names desig + nated in the law.\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversig + ht/pay-leave/federal-holidays/tabs/2026/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20260216 +SEQUENCE:0 +SUMMARY:Washington’s Birthday +UID:e2edf0f5-73c8-43c7-be3b-918cc1b93c15 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2026/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20260525 +SEQUENCE:0 +SUMMARY:Memorial Day +UID:a3fc7cb4-fba5-44c9-9d60-287b61f67297 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2026/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20260619 +SEQUENCE:0 +SUMMARY:Juneteenth National Independence Day +UID:53e62456-5b19-4db0-9c42-f1fd0e100f64 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays – "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2026/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20260703 +SEQUENCE:0 +SUMMARY:Independence Day +UID:d807af9f-46f5-4134-9735-76e407af6c60 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2026/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20260907 +SEQUENCE:0 +SUMMARY:Labor Day +UID:deb105c6-e4ee-4be6-82e3-89c1d5683a21 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2026/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20261012 +SEQUENCE:0 +SUMMARY:Columbus Day +UID:8b6534da-4e08-4711-ae64-bbee31825e69 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2026/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20261111 +SEQUENCE:0 +SUMMARY:Veterans Day +UID:c6d8d19b-ef88-41e3-97c5-d8667c83a78d +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2026/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20261126 +SEQUENCE:0 +SUMMARY:Thanksgiving Day +UID:cfb0657b-12a3-44ea-93ae-5b526c3a014e +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2026/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20261225 +SEQUENCE:0 +SUMMARY:Christmas Day +UID:c9bcc5d9-ca2c-434d-b792-d67514d9d26e +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2027/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20270101 +SEQUENCE:0 +SUMMARY:New Year’s Day +UID:4b8cc4ab-e615-45d5-b5dc-5d48d42a75cf +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2027/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20270118 +SEQUENCE:0 +SUMMARY:Birthday of Martin Luther King\, Jr. +UID:48e00cd7-2cf1-468e-bef8-663e376f81ee +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nThis holiday is designated as "Washington’s Birthday" + in section 6103(a) of title 5 of the United States Code\, which is the la + w that specifies holidays for Federal employees. Though other institution + s such as state and local governments and private businesses may use othe + r names\, it is our policy to always refer to holidays by the names desig + nated in the law.\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversig + ht/pay-leave/federal-holidays/tabs/2027/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20270215 +SEQUENCE:0 +SUMMARY:Washington’s Birthday +UID:4bf99783-9333-4c1a-82fe-4f5d1bf10852 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2027/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20270531 +SEQUENCE:0 +SUMMARY:Memorial Day +UID:ccc4fe40-c074-4b4a-bcbd-74d0dc67de40 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays – "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2027/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20270618 +SEQUENCE:0 +SUMMARY:Juneteenth National Independence Day +UID:15d7d42d-5c44-4793-8b94-8bffb9733ac8 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays – "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2027/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20270705 +SEQUENCE:0 +SUMMARY:Independence Day +UID:32219591-8149-4e5a-be59-22d9d0765e76 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2027/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20270906 +SEQUENCE:0 +SUMMARY:Labor Day +UID:1c52ce43-f8e0-4522-bef3-1873df223908 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2027/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20271011 +SEQUENCE:0 +SUMMARY:Columbus Day +UID:d41a69c5-79f2-4bd6-b12f-90882d21b697 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2027/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20271111 +SEQUENCE:0 +SUMMARY:Veterans Day +UID:39dbad5f-fc50-4c7c-b984-cb4e066dedf3 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2027/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20271125 +SEQUENCE:0 +SUMMARY:Thanksgiving Day +UID:6168e2d4-eeb0-4572-93c6-0dbdec658dea +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays – "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2027/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20271224 +SEQUENCE:0 +SUMMARY:Christmas Day +UID:9260116d-64f3-4419-b1c5-171aa9c6ec43 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays - "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2028/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20271231 +SEQUENCE:0 +SUMMARY:New Year’s Day +UID:8c86dd9c-6886-4076-b760-8a6c3205dbc6 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2028/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20280117 +SEQUENCE:0 +SUMMARY:Birthday of Martin Luther King\, Jr. +UID:083878ef-cc48-4143-a9ea-3732bea9601b +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nThis holiday is designated as "Washington's Birthday" + in section 6103(a) of title 5 of the United States Code\, which is the la + w that specifies holidays for Federal employees. Though other institution + s such as state and local governments and private businesses may use othe + r names\, it is our policy to always refer to holidays by the names desig + nated in the law.\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversig + ht/pay-leave/federal-holidays/tabs/2028/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20280221 +SEQUENCE:0 +SUMMARY:Washington’s Birthday +UID:980ac3fb-df1a-4057-93bb-2ea68dab759d +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2028/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20280529 +SEQUENCE:0 +SUMMARY:Memorial Day +UID:80446bfe-032d-4fd3-bcf8-ba77988ee84b +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2028/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20280619 +SEQUENCE:0 +SUMMARY:Juneteenth National Independence Day +UID:b1f0d1e6-b704-4fce-89fa-3593ae14a35c +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2028/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20280704 +SEQUENCE:0 +SUMMARY:Independence Day +UID:6de709a8-70e8-45fb-8f9e-ebd97757a629 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2028/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20280904 +SEQUENCE:0 +SUMMARY:Labor Day +UID:ead472ba-28fa-42eb-a0bf-9bdfec71faed +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2028/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20281009 +SEQUENCE:0 +SUMMARY:Columbus Day +UID:27c9f0b7-e31b-412b-a2bd-dea55240e587 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays - "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2028/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20281110 +SEQUENCE:0 +SUMMARY:Veterans Day +UID:330520b1-9fa5-44e1-9e64-cc47328010fb +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2028/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20281123 +SEQUENCE:0 +SUMMARY:Thanksgiving Day +UID:c116ec64-8060-4d56-b8d8-2f14f9bfdc32 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2028/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20281225 +SEQUENCE:0 +SUMMARY:Christmas Day +UID:a74e2d6b-f008-44ee-a8ba-ce13f73c6082 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2029/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20290101 +SEQUENCE:0 +SUMMARY:New Year’s Day +UID:b526a6fc-c7ac-4f63-b1f7-18be80e98ccd +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2029/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20290115 +SEQUENCE:0 +SUMMARY:Birthday of Martin Luther King\, Jr. +UID:eef3c940-75e5-4a6d-97b0-7d645ec6a989 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nThis holiday is designated as "Washington’s Birthday" + in section 6103(a) of title 5 of the United States Code\, which is the la + w that specifies holidays for Federal employees. Though other institution + s such as state and local governments and private businesses may use othe + r names\, it is our policy to always refer to holidays by the names desig + nated in the law.\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversig + ht/pay-leave/federal-holidays/tabs/2029/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20290219 +SEQUENCE:0 +SUMMARY:Washington’s Birthday +UID:9a7f1176-484d-494c-b839-cc845fd38e3a +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2029/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20290528 +SEQUENCE:0 +SUMMARY:Memorial Day +UID:c78349fb-1001-4775-9a92-683525f61fcf +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2029/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20290619 +SEQUENCE:0 +SUMMARY:Juneteenth National Independence Day +UID:4f5ee352-924e-49a0-a616-e307ec306dc4 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2029/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20290704 +SEQUENCE:0 +SUMMARY:Independence Day +UID:a64f11ff-2e39-4caa-956b-2e63b9f0a5a4 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2029/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20290903 +SEQUENCE:0 +SUMMARY:Labor Day +UID:9c79d63d-b247-42c8-84dc-cb999da3f608 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2029/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20291008 +SEQUENCE:0 +SUMMARY:Columbus Day +UID:646ee2bd-9c3c-4bf3-8137-1c2e93209849 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nIf a holiday falls on a Saturday\, for most Federal em + ployees\, the preceding Friday will be treated as a holiday for pay and l + eave purposes. (See 5 U.S.C. 6103(b).) If a holiday falls on a Sunday\, f + or most Federal employees\, the following Monday will be treated as a hol + iday for pay and leave purposes. (See Section 3(a) of Executive Order 115 + 82\, February 11\, 1971.) See also our Federal Holidays – "In Lieu Of" De + termination Fact Sheet at https://www.opm.gov/policy-data-oversight/pay-l + eave/work-schedules/fact-sheets/Federal-Holidays-In-Lieu-Of-Determination + .\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-leave/fed + eral-holidays/tabs/2029/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20291112 +SEQUENCE:0 +SUMMARY:Veterans Day +UID:82f14845-4b4b-4fe0-a915-f8cf7de0a898 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2029/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20291122 +SEQUENCE:0 +SUMMARY:Thanksgiving Day +UID:24a39ebe-a090-45a2-9765-08a4ee6353e7 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2029/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20291225 +SEQUENCE:0 +SUMMARY:Christmas Day +UID:522f89b3-ed77-4b74-ba7c-75f21113009b +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2030/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20300101 +SEQUENCE:0 +SUMMARY:New Year’s Day +UID:763dbcac-05be-4edf-b61a-e9ba45cae153 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2030/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20300121 +SEQUENCE:0 +SUMMARY:Birthday of Martin Luther King\, Jr. +UID:5ca7949b-7c6b-411c-b484-6ea09c3e7c2c +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:Notes:\nThis holiday is designated as "Washington’s Birthday" + in section 6103(a) of title 5 of the United States Code\, which is the la + w that specifies holidays for Federal employees. Though other institution + s such as state and local governments and private businesses may use othe + r names\, it is our policy to always refer to holidays by the names desig + nated in the law.\n\nOPM.gov URL: https://www.opm.gov/policy-data-oversig + ht/pay-leave/federal-holidays/tabs/2030/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20300218 +SEQUENCE:0 +SUMMARY:Washington’s Birthday +UID:db0fd34a-70e3-4c4f-912b-cf8b1bac7fd0 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2030/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20300527 +SEQUENCE:0 +SUMMARY:Memorial Day +UID:1acc19c2-0723-4b60-ae3a-4fcefa4fde79 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2030/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20300619 +SEQUENCE:0 +SUMMARY:Juneteenth National Independence Day +UID:31bbf9aa-cf8c-44bc-a441-cac87912db34 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2030/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20300704 +SEQUENCE:0 +SUMMARY:Independence Day +UID:3ba91593-04ea-4bbc-8073-273573949e20 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2030/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20300902 +SEQUENCE:0 +SUMMARY:Labor Day +UID:262fc31f-6658-4f53-8a62-03ead74a33c3 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2030/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20301014 +SEQUENCE:0 +SUMMARY:Columbus Day +UID:f8a51fac-3501-44e1-b434-7bbf32192c7f +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2030/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20301111 +SEQUENCE:0 +SUMMARY:Veterans Day +UID:352df1db-3905-40a9-83a3-9021ed415e71 +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2030/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20301128 +SEQUENCE:0 +SUMMARY:Thanksgiving Day +UID:d4b9d7ab-cf8e-4a20-ab4b-8a4f9682e47f +END:VEVENT +BEGIN:VEVENT +DESCRIPTION:OPM.gov URL: https://www.opm.gov/policy-data-oversight/pay-lea + ve/federal-holidays/tabs/2030/ +DTSTAMP:20231104T031210Z +DTSTART;VALUE=DATE:20301225 +SEQUENCE:0 +SUMMARY:Christmas Day +UID:21075bc6-a918-4c93-b458-544af2b40211 +END:VEVENT +END:VCALENDAR \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..7b8131a --- /dev/null +++ b/src/main.rs @@ -0,0 +1,110 @@ +use std::collections::HashMap; +use std::fs; + +use icu::calendar::types::IsoWeekday; +use icu::calendar::Date; + +#[derive(Copy, Clone)] +struct DateStruct { + year: i32, + month: u8, + day: u8, +} + +struct DayStruct { + datestring: String, + date: DateStruct, + day_of_week: IsoWeekday, + day_of_year: u16, + days_in_month: u8, + days_in_year: u16, + week_of_month: u32, +} + +struct EventStruct { + datestring: String, + date: DateStruct, + summary: String, +} + +fn holidaze() -> HashMap { + let input = fs::read_to_string("holidays.ics").unwrap(); + let unfolded = icalendar::parser::unfold(input.as_str()); + let calendar = icalendar::parser::read_calendar(unfolded.as_str()); + + let mut holiday_map = HashMap::::new(); + + for holiday in calendar.unwrap().components { + let date_data = holiday.properties[2].val.as_str().split_at(4); + let event_data = holiday.properties[4].val.as_str(); + + let date_struct = DateStruct { + year: date_data.0.parse::().unwrap(), + month: date_data.1.split_at(2).0.parse::().unwrap(), + day: date_data.1.split_at(2).1.parse::().unwrap(), + }; + + let date_iso = Date::try_new_iso_date( + date_struct.year.clone(), + date_struct.month.clone(), + date_struct.day.clone(), + ) + .unwrap(); + + let day_struct = DayStruct { + date: date_struct.clone(), + datestring: format!( + "{:?}{:02}{:02}", + &date_struct.year, &date_struct.month, &date_struct.day, + ), + day_of_week: date_iso.day_of_week(), + day_of_year: date_iso.day_of_year_info().day_of_year, + days_in_month: date_iso.days_in_month(), + days_in_year: date_iso.days_in_year(), + week_of_month: date_iso.week_of_month(IsoWeekday::Sunday).0, + }; + + let event_struct = EventStruct { + date: date_struct, + datestring: day_struct.datestring, + summary: event_data.replace("\\", ""), + }; + + holiday_map.insert( + event_struct.datestring.to_string(), + event_struct.summary.to_string(), + ); + } + + return holiday_map; +} + +fn main() { + let holidays_map = holidaze(); + + let connection = sqlite::open(":memory:").unwrap(); + + connection.execute("CREATE TABLE calendar (datestring TEXT, summary TEXT)").unwrap(); + + for key in holidays_map.keys() { + let query = format!( + " + INSERT INTO calendar VALUES ({}, {:?}); + ", + key, holidays_map.get(key).unwrap(), + ); + + connection.execute(query).unwrap(); + } + + let query = "SELECT * FROM calendar where summary like '%birthday%'"; + + connection + .iterate(query, |pairs| { + for &(name, value) in pairs.iter() { + println!("{} = {}", name, value.unwrap()); + } + true + }) + .unwrap(); +}