From 2e2b01990e8cb0044f984d623c2433cd05e8a0d5 Mon Sep 17 00:00:00 2001 From: Andrea Toska Date: Thu, 27 Feb 2025 10:25:31 +0100 Subject: [PATCH] feat: a bunch of things --- Cargo.lock | 1378 +++- Cargo.toml | 13 +- diesel.toml | 9 - migrations/.keep | 0 res/agreement/DE.xml | 1 + res/agreement/DEFAULT.xml | 1 + res/timezones.json | 14121 +++++++++++++++++++++++++++++++++++ src/account/account.rs | 158 +- src/account/mod.rs | 2 +- src/dsresponse.rs | 16 + src/error.rs | 28 + src/main.rs | 46 +- src/nnid/agreements.rs | 45 + src/nnid/create_account.rs | 176 + src/nnid/devices.rs | 28 + src/nnid/email.rs | 11 + src/nnid/mod.rs | 6 + src/nnid/person_exists.rs | 58 + src/nnid/timezones.rs | 64 + src/xml.rs | 132 +- 20 files changed, 16186 insertions(+), 107 deletions(-) delete mode 100644 diesel.toml delete mode 100644 migrations/.keep create mode 100644 res/agreement/DE.xml create mode 100644 res/agreement/DEFAULT.xml create mode 100644 res/timezones.json create mode 100644 src/dsresponse.rs create mode 100644 src/error.rs create mode 100644 src/nnid/agreements.rs create mode 100644 src/nnid/create_account.rs create mode 100644 src/nnid/devices.rs create mode 100644 src/nnid/email.rs create mode 100644 src/nnid/mod.rs create mode 100644 src/nnid/person_exists.rs create mode 100644 src/nnid/timezones.rs diff --git a/Cargo.lock b/Cargo.lock index abb8985..7706670 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6,12 +6,22 @@ version = 4 name = "account" version = "0.1.0" dependencies = [ - "diesel", + "argon2", + "base64", + "bytemuck", + "chrono", "dotenvy", + "hex", "log", - "quick-xml", + "once_cell", + "quick-xml 0.37.2", "rocket", + "rust-s3", "serde", + "serde_json", + "sha2", + "sqlx", + "thiserror 2.0.11", "tokio", ] @@ -39,6 +49,39 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[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 = "argon2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3610892ee6e0cbce8ae2700349fcf8f98adb0dbfbee85aec3c9179d29cc072" +dependencies = [ + "base64ct", + "blake2", + "cpufeatures", + "password-hash", +] + [[package]] name = "async-stream" version = "0.3.6" @@ -72,6 +115,15 @@ dependencies = [ "syn", ] +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + [[package]] name = "atomic" version = "0.5.3" @@ -87,12 +139,52 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "attohttpc" +version = "0.28.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07a9b245ba0739fc90935094c29adbaee3f977218b5fb95e822e261cda7f56a3" +dependencies = [ + "http 1.2.0", + "log", + "native-tls", + "serde", + "serde_json", + "url", +] + [[package]] name = "autocfg" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +[[package]] +name = "aws-creds" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f84143206b9c72b3c5cb65415de60c7539c79cd1559290fddec657939131be0" +dependencies = [ + "attohttpc", + "home", + "log", + "quick-xml 0.32.0", + "rust-ini", + "serde", + "thiserror 1.0.69", + "time", + "url", +] + +[[package]] +name = "aws-region" +version = "0.25.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9aed3f9c7eac9be28662fdb3b0f4d1951e812f7c64fed4f0327ba702f459b3b" +dependencies = [ + "thiserror 1.0.69", +] + [[package]] name = "backtrace" version = "0.3.74" @@ -108,6 +200,18 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + [[package]] name = "binascii" version = "0.1.4" @@ -119,6 +223,33 @@ name = "bitflags" version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +dependencies = [ + "serde", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "bytemuck" @@ -153,6 +284,56 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.6", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "tiny-keccak", +] + [[package]] name = "cookie" version = "0.18.1" @@ -165,38 +346,85 @@ dependencies = [ ] [[package]] -name = "darling" -version = "0.20.10" +name = "core-foundation" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ - "darling_core", - "darling_macro", + "core-foundation-sys", + "libc", ] [[package]] -name = "darling_core" -version = "0.20.10" +name = "core-foundation-sys" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn", + "libc", ] [[package]] -name = "darling_macro" -version = "0.20.10" +name = "crc" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" dependencies = [ - "darling_core", - "quote", - "syn", + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", ] [[package]] @@ -206,6 +434,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", + "serde", ] [[package]] @@ -242,39 +471,15 @@ dependencies = [ ] [[package]] -name = "diesel" -version = "2.2.7" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04001f23ba8843dc315804fa324000376084dfb1c30794ff68dd279e6e5696d5" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "bitflags", - "byteorder", - "diesel_derives", - "mysqlclient-sys", - "percent-encoding", - "url", -] - -[[package]] -name = "diesel_derives" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f2c3de51e2ba6bf2a648285696137aaf0f5f487bcbea93972fe8a364e131a4" -dependencies = [ - "diesel_table_macro_syntax", - "dsl_auto_type", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "diesel_table_macro_syntax" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "209c735641a413bc68c4923a9d6ad4bcb3ca306b794edaa7eb0b3228a99ffb25" -dependencies = [ - "syn", + "block-buffer", + "const-oid", + "crypto-common", + "subtle", ] [[package]] @@ -288,31 +493,29 @@ dependencies = [ "syn", ] +[[package]] +name = "dlv-list" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" +dependencies = [ + "const-random", +] + [[package]] name = "dotenvy" version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" -[[package]] -name = "dsl_auto_type" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139ae9aca7527f85f26dd76483eb38533fd84bd571065da1739656ef71c5ff5b" -dependencies = [ - "darling", - "either", - "heck", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "either" version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +dependencies = [ + "serde", +] [[package]] name = "encoding_rs" @@ -339,6 +542,28 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "etcetera" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +dependencies = [ + "cfg-if", + "home", + "windows-sys 0.48.0", +] + +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + [[package]] name = "fastrand" version = "2.3.0" @@ -359,12 +584,44 @@ dependencies = [ "version_check", ] +[[package]] +name = "flume" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +dependencies = [ + "futures-core", + "futures-sink", + "spin", +] + [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -382,6 +639,7 @@ checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", + "futures-executor", "futures-io", "futures-sink", "futures-task", @@ -404,12 +662,45 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-intrusive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot", +] + [[package]] name = "futures-io" version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "futures-sink" version = "0.3.31" @@ -431,6 +722,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-io", + "futures-macro", "futures-sink", "futures-task", "memchr", @@ -452,6 +744,16 @@ dependencies = [ "windows", ] +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "getrandom" version = "0.2.15" @@ -506,11 +808,31 @@ dependencies = [ "tracing", ] +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + [[package]] name = "hashbrown" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.2", +] [[package]] name = "heck" @@ -530,6 +852,39 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "http" version = "0.2.12" @@ -599,6 +954,42 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +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 = "icu_collections" version = "1.5.0" @@ -717,12 +1108,6 @@ dependencies = [ "syn", ] -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - [[package]] name = "idna" version = "1.0.3" @@ -751,7 +1136,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.2", "serde", ] @@ -778,11 +1163,24 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + [[package]] name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] [[package]] name = "libc" @@ -790,6 +1188,22 @@ version = "0.2.170" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + +[[package]] +name = "libsqlite3-sys" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +dependencies = [ + "pkg-config", + "vcpkg", +] + [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -842,6 +1256,33 @@ dependencies = [ "regex-automata 0.1.10", ] +[[package]] +name = "maybe-async" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + +[[package]] +name = "md5" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" + [[package]] name = "memchr" version = "2.7.4" @@ -854,6 +1295,15 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minidom" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f45614075738ce1b77a1768912a60c0227525971b03e09122a05b8a34a2a6278" +dependencies = [ + "rxml", +] + [[package]] name = "miniz_oxide" version = "0.8.5" @@ -894,13 +1344,20 @@ dependencies = [ ] [[package]] -name = "mysqlclient-sys" -version = "0.4.2" +name = "native-tls" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bbb9b017b98c4cde5802998113e182eecc1ebce8d47e9ea1697b9a623d53870" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ - "pkg-config", - "vcpkg", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", ] [[package]] @@ -913,12 +1370,59 @@ dependencies = [ "winapi", ] +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand", + "smallvec", + "zeroize", +] + [[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + [[package]] name = "num_cpus" version = "1.16.0" @@ -944,12 +1448,72 @@ version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +[[package]] +name = "openssl" +version = "0.10.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "ordered-multimap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" +dependencies = [ + "dlv-list", + "hashbrown 0.14.5", +] + [[package]] name = "overload" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + [[package]] name = "parking_lot" version = "0.12.3" @@ -973,6 +1537,17 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "password-hash" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + [[package]] name = "pear" version = "0.2.9" @@ -996,6 +1571,15 @@ dependencies = [ "syn", ] +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -1014,6 +1598,27 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + [[package]] name = "pkg-config" version = "0.3.31" @@ -1057,6 +1662,16 @@ dependencies = [ "yansi", ] +[[package]] +name = "quick-xml" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "quick-xml" version = "0.37.2" @@ -1260,6 +1875,74 @@ dependencies = [ "uncased", ] +[[package]] +name = "rsa" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47c75d7c5c6b673e58bf54d8544a9f432e3a925b0e80f7cd3602ab5c50c55519" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core", + "signature", + "spki", + "subtle", + "zeroize", +] + +[[package]] +name = "rust-ini" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e310ef0e1b6eeb79169a1171daf9abcb87a2e17c03bee2c4bb100b55c75409f" +dependencies = [ + "cfg-if", + "ordered-multimap", + "trim-in-place", +] + +[[package]] +name = "rust-s3" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3df3f353b1f4209dcf437d777cda90279c397ab15a0cd6fd06bd32c88591533" +dependencies = [ + "async-trait", + "aws-creds", + "aws-region", + "base64", + "bytes", + "cfg-if", + "futures", + "hex", + "hmac", + "http 0.2.12", + "hyper", + "hyper-tls", + "log", + "maybe-async", + "md5", + "minidom", + "native-tls", + "percent-encoding", + "quick-xml 0.32.0", + "serde", + "serde_derive", + "serde_json", + "sha2", + "thiserror 1.0.69", + "time", + "tokio", + "tokio-native-tls", + "tokio-stream", + "url", +] + [[package]] name = "rustc-demangle" version = "0.1.24" @@ -1285,12 +1968,38 @@ version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" +[[package]] +name = "rxml" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a98f186c7a2f3abbffb802984b7f1dfd65dac8be1aafdaabbca4137f53f0dff7" +dependencies = [ + "bytes", + "rxml_validation", + "smartstring", +] + +[[package]] +name = "rxml_validation" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22a197350ece202f19a166d1ad6d9d6de145e1d2a8ef47db299abe164dbd7530" + [[package]] name = "ryu" version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -1303,6 +2012,29 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "serde" version = "1.0.218" @@ -1344,6 +2076,40 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -1368,6 +2134,16 @@ dependencies = [ "libc", ] +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core", +] + [[package]] name = "slab" version = "0.4.9" @@ -1382,6 +2158,20 @@ name = "smallvec" version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" +dependencies = [ + "serde", +] + +[[package]] +name = "smartstring" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" +dependencies = [ + "autocfg", + "static_assertions", + "version_check", +] [[package]] name = "socket2" @@ -1398,6 +2188,207 @@ name = "spin" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "sqlx" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4410e73b3c0d8442c5f99b425d7a435b5ee0ae4167b3196771dd3f7a01be745f" +dependencies = [ + "sqlx-core", + "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", +] + +[[package]] +name = "sqlx-core" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a007b6936676aa9ab40207cde35daab0a04b823be8ae004368c0793b96a61e0" +dependencies = [ + "bytes", + "crc", + "crossbeam-queue", + "either", + "event-listener", + "futures-core", + "futures-intrusive", + "futures-io", + "futures-util", + "hashbrown 0.15.2", + "hashlink", + "indexmap", + "log", + "memchr", + "native-tls", + "once_cell", + "percent-encoding", + "serde", + "serde_json", + "sha2", + "smallvec", + "thiserror 2.0.11", + "tokio", + "tokio-stream", + "tracing", + "url", +] + +[[package]] +name = "sqlx-macros" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3112e2ad78643fef903618d78cf0aec1cb3134b019730edb039b69eaf531f310" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e9f90acc5ab146a99bf5061a7eb4976b573f560bc898ef3bf8435448dd5e7ad" +dependencies = [ + "dotenvy", + "either", + "heck", + "hex", + "once_cell", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2", + "sqlx-core", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", + "syn", + "tempfile", + "tokio", + "url", +] + +[[package]] +name = "sqlx-mysql" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4560278f0e00ce64938540546f59f590d60beee33fffbd3b9cd47851e5fff233" +dependencies = [ + "atoi", + "base64", + "bitflags", + "byteorder", + "bytes", + "crc", + "digest", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array", + "hex", + "hkdf", + "hmac", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "percent-encoding", + "rand", + "rsa", + "serde", + "sha1", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror 2.0.11", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5b98a57f363ed6764d5b3a12bfedf62f07aa16e1856a7ddc2a0bb190a959613" +dependencies = [ + "atoi", + "base64", + "bitflags", + "byteorder", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-util", + "hex", + "hkdf", + "hmac", + "home", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "rand", + "serde", + "serde_json", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror 2.0.11", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f85ca71d3a5b24e64e1d08dd8fe36c6c95c339a896cc33068148906784620540" +dependencies = [ + "atoi", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "serde_urlencoded", + "sqlx-core", + "tracing", + "url", +] [[package]] name = "stable-pattern" @@ -1424,10 +2415,27 @@ dependencies = [ ] [[package]] -name = "strsim" -version = "0.11.1" +name = "static_assertions" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -1465,6 +2473,46 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +dependencies = [ + "thiserror-impl 2.0.11", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "thread_local" version = "1.1.8" @@ -1506,6 +2554,15 @@ dependencies = [ "time-core", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tinystr" version = "0.7.6" @@ -1516,6 +2573,21 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tinyvec" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tokio" version = "1.43.0" @@ -1544,6 +2616,16 @@ dependencies = [ "syn", ] +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + [[package]] name = "tokio-stream" version = "0.1.17" @@ -1614,6 +2696,7 @@ version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -1669,12 +2752,24 @@ dependencies = [ "tracing-log", ] +[[package]] +name = "trim-in-place" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "343e926fc669bc8cde4fa3129ab681c63671bae288b1f1081ceee6d9d37904fc" + [[package]] name = "try-lock" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + [[package]] name = "ubyte" version = "0.10.4" @@ -1694,12 +2789,33 @@ dependencies = [ "version_check", ] +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + [[package]] name = "unicode-ident" version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-properties" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -1771,6 +2887,80 @@ dependencies = [ "wit-bindgen-rt", ] +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "whoami" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" +dependencies = [ + "redox_syscall", + "wasite", +] + [[package]] name = "winapi" version = "0.3.9" @@ -1802,6 +2992,24 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -2046,6 +3254,12 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + [[package]] name = "zerovec" version = "0.10.4" diff --git a/Cargo.toml b/Cargo.toml index 4199d96..06a9234 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,4 +10,15 @@ log = "0.4.26" quick-xml = { version = "0.37.2", features = ["serialize"] } tokio = "1.43.0" dotenvy = "0.15.7" -diesel = { version = "2.2.7", features = ["mysql"] } \ No newline at end of file +once_cell = "1.20.3" +serde_json = "1.0.139" +chrono = { version = "0.4.39", features = ["serde"] } +rust-s3 = "0.35.1" +argon2 = "0.5.3" +sha2 = "0.10.8" +bytemuck = "1.21.0" +base64 = "0.22.1" +hex = "0.4.3" +thiserror = "2.0.11" +sqlx = { version = "0.8", features = [ "runtime-tokio", "tls-native-tls", "postgres" ] } + diff --git a/diesel.toml b/diesel.toml deleted file mode 100644 index d402b56..0000000 --- a/diesel.toml +++ /dev/null @@ -1,9 +0,0 @@ -# For documentation on how to configure this file, -# see https://diesel.rs/guides/configuring-diesel-cli - -[print_schema] -file = "src/db.rs" -custom_type_derives = ["diesel::query_builder::QueryId", "Clone"] - -[migrations_directory] -dir = "/home/tv/RustProjects/account/migrations" diff --git a/migrations/.keep b/migrations/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/res/agreement/DE.xml b/res/agreement/DE.xml new file mode 100644 index 0000000..68055bb --- /dev/null +++ b/res/agreement/DE.xml @@ -0,0 +1 @@ +USenEnglish2014-09-29T20:07:35NINTENDO-NETWORK-EULA0300USenEspañol2014-09-29T20:07:35NINTENDO-NETWORK-EULA0300 \ No newline at end of file diff --git a/res/agreement/DEFAULT.xml b/res/agreement/DEFAULT.xml new file mode 100644 index 0000000..68055bb --- /dev/null +++ b/res/agreement/DEFAULT.xml @@ -0,0 +1 @@ +USenEnglish2014-09-29T20:07:35NINTENDO-NETWORK-EULA0300USenEspañol2014-09-29T20:07:35NINTENDO-NETWORK-EULA0300 \ No newline at end of file diff --git a/res/timezones.json b/res/timezones.json new file mode 100644 index 0000000..e7ef542 --- /dev/null +++ b/res/timezones.json @@ -0,0 +1,14121 @@ +{ + "AD": { + "en": [ + { + "area": "Europe/Andorra", + "language": "en", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Andorra", + "language": "de", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Andorra", + "language": "es", + "name": "Madrid, París", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Andorra", + "language": "fr", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Andorra", + "language": "it", + "name": "Madrid, Parigi", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Andorra", + "language": "ja", + "name": "マドリード、パリ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Andorra", + "language": "nl", + "name": "Madrid, Parijs", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Andorra", + "language": "pt", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Andorra", + "language": "ru", + "name": "Мадрид, Париж", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "AE": { + "en": [ + { + "area": "Asia/Dubai", + "language": "en", + "name": "Abu Dhabi, Muscat", + "utc_offset": "14400", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Dubai", + "language": "es", + "name": "Abu Dabi, Mascate", + "utc_offset": "14400", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Dubai", + "language": "fr", + "name": "Abou Dabi, Mascate", + "utc_offset": "14400", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Dubai", + "language": "ja", + "name": "アブダビ、マスカット", + "utc_offset": "14400", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Dubai", + "language": "pt", + "name": "Abu Dhabi, Mascate", + "utc_offset": "14400", + "order": "0" + } + ] + }, + "AF": { + "ja": [ + { + "area": "Asia/Kabul", + "language": "ja", + "name": "カブール", + "utc_offset": "16200", + "order": "0" + } + ] + }, + "AG": { + "en": [ + { + "area": "America/Antigua", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Antigua", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Antigua", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Antigua", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Antigua", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "AI": { + "en": [ + { + "area": "America/Anguilla", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Anguilla", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Anguilla", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Anguilla", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Anguilla", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "AL": { + "en": [ + { + "area": "Europe/Tirane", + "language": "en", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Tirane", + "language": "de", + "name": "Amsterdam, Berlin, Rom", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Tirane", + "language": "es", + "name": "Ámsterdam, Berlín, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Tirane", + "language": "fr", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Tirane", + "language": "it", + "name": "Amsterdam, Berlino, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Tirane", + "language": "ja", + "name": "アムステルダム、ベルリン、ローマ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Tirane", + "language": "nl", + "name": "Amsterdam, Berlijn, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Tirane", + "language": "pt", + "name": "Amesterdão, Berlim, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Tirane", + "language": "ru", + "name": "Амстердам, Берлин, Рим", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "AM": { + "ja": [ + { + "area": "Asia/Yerevan", + "language": "ja", + "name": "エレバン", + "utc_offset": "14400", + "order": "0" + } + ] + }, + "AO": { + "en": [ + { + "area": "Africa/Luanda", + "language": "en", + "name": "West Central Africa", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Luanda", + "language": "de", + "name": "West-Zentralafrika", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Luanda", + "language": "es", + "name": "África Occidental y Central", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Luanda", + "language": "fr", + "name": "Afrique centrale de l'ouest", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Luanda", + "language": "it", + "name": "Africa centro-occidentale", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Luanda", + "language": "ja", + "name": "西中央アフリカ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Luanda", + "language": "nl", + "name": "West-Centraal Afrika", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Luanda", + "language": "pt", + "name": "África Central e Ocidental", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Luanda", + "language": "ru", + "name": "Западная и Центральная Африка", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "AR": { + "en": [ + { + "area": "America/Argentina/Buenos_Aires", + "language": "en", + "name": "Buenos Aires", + "utc_offset": "-10800", + "order": "0" + } + ], + "es": [ + { + "area": "America/Argentina/Buenos_Aires", + "language": "es", + "name": "Buenos Aires", + "utc_offset": "-10800", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Argentina/Buenos_Aires", + "language": "fr", + "name": "Buenos Aires", + "utc_offset": "-10800", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Argentina/Buenos_Aires", + "language": "ja", + "name": "ブエノスアイレス", + "utc_offset": "-10800", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Argentina/Buenos_Aires", + "language": "pt", + "name": "Buenos Aires", + "utc_offset": "-10800", + "order": "0" + } + ] + }, + "AS": { + "ja": [ + { + "area": "Pacific/Pago_Pago", + "language": "ja", + "name": "ミッドウェー島、サモア", + "utc_offset": "-39600", + "order": "0" + } + ] + }, + "AT": { + "en": [ + { + "area": "Europe/Vienna", + "language": "en", + "name": "Stockholm, Vienna", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Vienna", + "language": "de", + "name": "Stockholm, Wien", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Vienna", + "language": "es", + "name": "Estocolmo, Viena", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Vienna", + "language": "fr", + "name": "Stockholm, Vienne", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Vienna", + "language": "it", + "name": "Stoccolma, Vienna", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Vienna", + "language": "ja", + "name": "ストックホルム、ウィーン", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Vienna", + "language": "nl", + "name": "Stockholm, Wenen", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Vienna", + "language": "pt", + "name": "Estocolmo, Viena", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Vienna", + "language": "ru", + "name": "Стокгольм, Вена", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "AU": { + "en": [ + { + "area": "Indian/Cocos", + "language": "en", + "name": "Cocos Islands", + "utc_offset": "23400", + "order": "1" + }, + { + "area": "Indian/Christmas", + "language": "en", + "name": "Christmas Island", + "utc_offset": "25200", + "order": "2" + }, + { + "area": "Australia/Perth", + "language": "en", + "name": "Perth", + "utc_offset": "28800", + "order": "3" + }, + { + "area": "Australia/Eucla", + "language": "en", + "name": "Eucla", + "utc_offset": "31500", + "order": "4" + }, + { + "area": "Australia/Darwin", + "language": "en", + "name": "Darwin", + "utc_offset": "34200", + "order": "5" + }, + { + "area": "Australia/Brisbane", + "language": "en", + "name": "Brisbane, Lindeman", + "utc_offset": "36000", + "order": "6" + }, + { + "area": "Australia/Adelaide", + "language": "en", + "name": "Adelaide", + "utc_offset": "37800", + "order": "7" + }, + { + "area": "Australia/Lord_Howe", + "language": "en", + "name": "Lord Howe", + "utc_offset": "39600", + "order": "8" + }, + { + "area": "Australia/Melbourne", + "language": "en", + "name": "Canberra, Melbourne, Sydney", + "utc_offset": "39600", + "order": "9" + }, + { + "area": "Pacific/Norfolk", + "language": "en", + "name": "Norfolk Island", + "utc_offset": "39600", + "order": "10" + } + ], + "de": [ + { + "area": "Indian/Cocos", + "language": "de", + "name": "Kokosinseln", + "utc_offset": "23400", + "order": "1" + }, + { + "area": "Indian/Christmas", + "language": "de", + "name": "Weihnachtsinsel", + "utc_offset": "25200", + "order": "2" + }, + { + "area": "Australia/Perth", + "language": "de", + "name": "Perth", + "utc_offset": "28800", + "order": "3" + }, + { + "area": "Australia/Eucla", + "language": "de", + "name": "Eucla", + "utc_offset": "31500", + "order": "4" + }, + { + "area": "Australia/Darwin", + "language": "de", + "name": "Darwin", + "utc_offset": "34200", + "order": "5" + }, + { + "area": "Australia/Brisbane", + "language": "de", + "name": "Brisbane, Lindeman", + "utc_offset": "36000", + "order": "6" + }, + { + "area": "Australia/Adelaide", + "language": "de", + "name": "Adelaide", + "utc_offset": "37800", + "order": "7" + }, + { + "area": "Australia/Lord_Howe", + "language": "de", + "name": "Lord Howe", + "utc_offset": "39600", + "order": "8" + }, + { + "area": "Australia/Melbourne", + "language": "de", + "name": "Canberra, Melbourne, Sydney", + "utc_offset": "39600", + "order": "9" + }, + { + "area": "Pacific/Norfolk", + "language": "de", + "name": "Norfolkinsel", + "utc_offset": "39600", + "order": "10" + } + ], + "es": [ + { + "area": "Indian/Cocos", + "language": "es", + "name": "Islas Cocos", + "utc_offset": "23400", + "order": "1" + }, + { + "area": "Indian/Christmas", + "language": "es", + "name": "Isla Christmas", + "utc_offset": "25200", + "order": "2" + }, + { + "area": "Australia/Perth", + "language": "es", + "name": "Perth", + "utc_offset": "28800", + "order": "3" + }, + { + "area": "Australia/Eucla", + "language": "es", + "name": "Eucla", + "utc_offset": "31500", + "order": "4" + }, + { + "area": "Australia/Darwin", + "language": "es", + "name": "Darwin", + "utc_offset": "34200", + "order": "5" + }, + { + "area": "Australia/Brisbane", + "language": "es", + "name": "Brisbane, Lindeman", + "utc_offset": "36000", + "order": "6" + }, + { + "area": "Australia/Adelaide", + "language": "es", + "name": "Adelaida", + "utc_offset": "37800", + "order": "7" + }, + { + "area": "Australia/Lord_Howe", + "language": "es", + "name": "Lord Howe", + "utc_offset": "39600", + "order": "8" + }, + { + "area": "Australia/Melbourne", + "language": "es", + "name": "Canberra, Melbourne, Sídney", + "utc_offset": "39600", + "order": "9" + }, + { + "area": "Pacific/Norfolk", + "language": "es", + "name": "Isla Norfolk", + "utc_offset": "39600", + "order": "10" + } + ], + "fr": [ + { + "area": "Indian/Cocos", + "language": "fr", + "name": "Îles Cocos", + "utc_offset": "23400", + "order": "1" + }, + { + "area": "Indian/Christmas", + "language": "fr", + "name": "Île Christmas", + "utc_offset": "25200", + "order": "2" + }, + { + "area": "Australia/Perth", + "language": "fr", + "name": "Perth", + "utc_offset": "28800", + "order": "3" + }, + { + "area": "Australia/Eucla", + "language": "fr", + "name": "Eucla", + "utc_offset": "31500", + "order": "4" + }, + { + "area": "Australia/Darwin", + "language": "fr", + "name": "Darwin", + "utc_offset": "34200", + "order": "5" + }, + { + "area": "Australia/Brisbane", + "language": "fr", + "name": "Brisbane, île Lindeman", + "utc_offset": "36000", + "order": "6" + }, + { + "area": "Australia/Adelaide", + "language": "fr", + "name": "Adélaïde", + "utc_offset": "37800", + "order": "7" + }, + { + "area": "Australia/Lord_Howe", + "language": "fr", + "name": "Île Lord Howe", + "utc_offset": "39600", + "order": "8" + }, + { + "area": "Australia/Melbourne", + "language": "fr", + "name": "Canberra, Melbourne, Sydney", + "utc_offset": "39600", + "order": "9" + }, + { + "area": "Pacific/Norfolk", + "language": "fr", + "name": "Île Norfolk", + "utc_offset": "39600", + "order": "10" + } + ], + "it": [ + { + "area": "Indian/Cocos", + "language": "it", + "name": "Isole Cocos", + "utc_offset": "23400", + "order": "1" + }, + { + "area": "Indian/Christmas", + "language": "it", + "name": "Isola del Natale", + "utc_offset": "25200", + "order": "2" + }, + { + "area": "Australia/Perth", + "language": "it", + "name": "Perth", + "utc_offset": "28800", + "order": "3" + }, + { + "area": "Australia/Eucla", + "language": "it", + "name": "Eucla", + "utc_offset": "31500", + "order": "4" + }, + { + "area": "Australia/Darwin", + "language": "it", + "name": "Darwin", + "utc_offset": "34200", + "order": "5" + }, + { + "area": "Australia/Brisbane", + "language": "it", + "name": "Brisbane, Lindeman", + "utc_offset": "36000", + "order": "6" + }, + { + "area": "Australia/Adelaide", + "language": "it", + "name": "Adelaide", + "utc_offset": "37800", + "order": "7" + }, + { + "area": "Australia/Lord_Howe", + "language": "it", + "name": "Lord Howe", + "utc_offset": "39600", + "order": "8" + }, + { + "area": "Australia/Melbourne", + "language": "it", + "name": "Canberra, Melbourne, Sidney", + "utc_offset": "39600", + "order": "9" + }, + { + "area": "Pacific/Norfolk", + "language": "it", + "name": "Isola Norfolk", + "utc_offset": "39600", + "order": "10" + } + ], + "ja": [ + { + "area": "Indian/Cocos", + "language": "ja", + "name": "ココス諸島", + "utc_offset": "23400", + "order": "1" + }, + { + "area": "Indian/Christmas", + "language": "ja", + "name": "クリスマス島", + "utc_offset": "25200", + "order": "2" + }, + { + "area": "Australia/Perth", + "language": "ja", + "name": "パース", + "utc_offset": "28800", + "order": "3" + }, + { + "area": "Australia/Eucla", + "language": "ja", + "name": "ユークラ", + "utc_offset": "31500", + "order": "4" + }, + { + "area": "Australia/Darwin", + "language": "ja", + "name": "ダーウィン", + "utc_offset": "34200", + "order": "5" + }, + { + "area": "Australia/Brisbane", + "language": "ja", + "name": "ブリズベン、リンデマン", + "utc_offset": "36000", + "order": "6" + }, + { + "area": "Australia/Adelaide", + "language": "ja", + "name": "アデレード", + "utc_offset": "37800", + "order": "7" + }, + { + "area": "Australia/Lord_Howe", + "language": "ja", + "name": "ロードハウ", + "utc_offset": "39600", + "order": "8" + }, + { + "area": "Australia/Melbourne", + "language": "ja", + "name": "キャンベラ、メルボルン、シドニー", + "utc_offset": "39600", + "order": "9" + }, + { + "area": "Pacific/Norfolk", + "language": "ja", + "name": "ノーフォーク", + "utc_offset": "39600", + "order": "10" + } + ], + "nl": [ + { + "area": "Indian/Cocos", + "language": "nl", + "name": "Cocoseilanden", + "utc_offset": "23400", + "order": "1" + }, + { + "area": "Indian/Christmas", + "language": "nl", + "name": "Christmaseiland", + "utc_offset": "25200", + "order": "2" + }, + { + "area": "Australia/Perth", + "language": "nl", + "name": "Perth", + "utc_offset": "28800", + "order": "3" + }, + { + "area": "Australia/Eucla", + "language": "nl", + "name": "Eucla", + "utc_offset": "31500", + "order": "4" + }, + { + "area": "Australia/Darwin", + "language": "nl", + "name": "Darwin", + "utc_offset": "34200", + "order": "5" + }, + { + "area": "Australia/Brisbane", + "language": "nl", + "name": "Brisbane, Lindeman", + "utc_offset": "36000", + "order": "6" + }, + { + "area": "Australia/Adelaide", + "language": "nl", + "name": "Adelaide", + "utc_offset": "37800", + "order": "7" + }, + { + "area": "Australia/Lord_Howe", + "language": "nl", + "name": "Lord Howe", + "utc_offset": "39600", + "order": "8" + }, + { + "area": "Australia/Melbourne", + "language": "nl", + "name": "Canberra, Melbourne, Sydney", + "utc_offset": "39600", + "order": "9" + }, + { + "area": "Pacific/Norfolk", + "language": "nl", + "name": "Norfolk", + "utc_offset": "39600", + "order": "10" + } + ], + "pt": [ + { + "area": "Indian/Cocos", + "language": "pt", + "name": "Ilhas dos Cocos", + "utc_offset": "23400", + "order": "1" + }, + { + "area": "Indian/Christmas", + "language": "pt", + "name": "Ilha do Natal", + "utc_offset": "25200", + "order": "2" + }, + { + "area": "Australia/Perth", + "language": "pt", + "name": "Perth", + "utc_offset": "28800", + "order": "3" + }, + { + "area": "Australia/Eucla", + "language": "pt", + "name": "Eucla", + "utc_offset": "31500", + "order": "4" + }, + { + "area": "Australia/Darwin", + "language": "pt", + "name": "Darwin", + "utc_offset": "34200", + "order": "5" + }, + { + "area": "Australia/Brisbane", + "language": "pt", + "name": "Brisbane, Lindeman", + "utc_offset": "36000", + "order": "6" + }, + { + "area": "Australia/Adelaide", + "language": "pt", + "name": "Adelaide", + "utc_offset": "37800", + "order": "7" + }, + { + "area": "Australia/Lord_Howe", + "language": "pt", + "name": "Lord Howe", + "utc_offset": "39600", + "order": "8" + }, + { + "area": "Australia/Melbourne", + "language": "pt", + "name": "Camberra, Melbourne, Sydney", + "utc_offset": "39600", + "order": "9" + }, + { + "area": "Pacific/Norfolk", + "language": "pt", + "name": "Ilha Norfolk", + "utc_offset": "39600", + "order": "10" + } + ], + "ru": [ + { + "area": "Indian/Cocos", + "language": "ru", + "name": "Кокосовые острова", + "utc_offset": "23400", + "order": "1" + }, + { + "area": "Indian/Christmas", + "language": "ru", + "name": "Остров Рождества", + "utc_offset": "25200", + "order": "2" + }, + { + "area": "Australia/Perth", + "language": "ru", + "name": "Перт", + "utc_offset": "28800", + "order": "3" + }, + { + "area": "Australia/Eucla", + "language": "ru", + "name": "Юкла", + "utc_offset": "31500", + "order": "4" + }, + { + "area": "Australia/Darwin", + "language": "ru", + "name": "Дарвин", + "utc_offset": "34200", + "order": "5" + }, + { + "area": "Australia/Brisbane", + "language": "ru", + "name": "Брисбен, Линдман", + "utc_offset": "36000", + "order": "6" + }, + { + "area": "Australia/Adelaide", + "language": "ru", + "name": "Аделаида", + "utc_offset": "37800", + "order": "7" + }, + { + "area": "Australia/Lord_Howe", + "language": "ru", + "name": "Лорд-Хау", + "utc_offset": "39600", + "order": "8" + }, + { + "area": "Australia/Melbourne", + "language": "ru", + "name": "Канберра, Мельбурн, Сидней", + "utc_offset": "39600", + "order": "9" + }, + { + "area": "Pacific/Norfolk", + "language": "ru", + "name": "Остров Норфолк", + "utc_offset": "39600", + "order": "10" + } + ] + }, + "AW": { + "en": [ + { + "area": "America/Aruba", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Aruba", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Aruba", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Aruba", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Aruba", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "AZ": { + "en": [ + { + "area": "Asia/Baku", + "language": "en", + "name": "Baku", + "utc_offset": "14400", + "order": "0" + } + ], + "de": [ + { + "area": "Asia/Baku", + "language": "de", + "name": "Baku", + "utc_offset": "14400", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Baku", + "language": "es", + "name": "Bakú", + "utc_offset": "14400", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Baku", + "language": "fr", + "name": "Bakou", + "utc_offset": "14400", + "order": "0" + } + ], + "it": [ + { + "area": "Asia/Baku", + "language": "it", + "name": "Baku", + "utc_offset": "14400", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Baku", + "language": "ja", + "name": "バク", + "utc_offset": "14400", + "order": "0" + } + ], + "nl": [ + { + "area": "Asia/Baku", + "language": "nl", + "name": "Bakoe", + "utc_offset": "14400", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Baku", + "language": "pt", + "name": "Baku", + "utc_offset": "14400", + "order": "0" + } + ], + "ru": [ + { + "area": "Asia/Baku", + "language": "ru", + "name": "Баку", + "utc_offset": "14400", + "order": "0" + } + ] + }, + "BA": { + "en": [ + { + "area": "Europe/Sarajevo", + "language": "en", + "name": "Sarajevo, Warsaw, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Sarajevo", + "language": "de", + "name": "Sarajewo, Warschau, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Sarajevo", + "language": "es", + "name": "Sarajevo, Varsovia, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Sarajevo", + "language": "fr", + "name": "Sarajevo, Varsovie, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Sarajevo", + "language": "it", + "name": "Sarajevo, Varsavia, Zagabria", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Sarajevo", + "language": "ja", + "name": "サラエボ、ワルシャワ、ザグレブ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Sarajevo", + "language": "nl", + "name": "Sarajevo, Warschau, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Sarajevo", + "language": "pt", + "name": "Saraievo, Varsóvia, Zagrebe", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Sarajevo", + "language": "ru", + "name": "Сараево, Варшава, Загреб", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "BB": { + "en": [ + { + "area": "America/Barbados", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Barbados", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Barbados", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Barbados", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Barbados", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "BD": { + "ja": [ + { + "area": "Asia/Dhaka", + "language": "ja", + "name": "アスタナ、ダッカ", + "utc_offset": "21600", + "order": "0" + } + ] + }, + "BE": { + "en": [ + { + "area": "Europe/Brussels", + "language": "en", + "name": "Brussels, Copenhagen", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Brussels", + "language": "de", + "name": "Brüssel, Kopenhagen", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Brussels", + "language": "es", + "name": "Bruselas, Copenhague", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Brussels", + "language": "fr", + "name": "Bruxelles, Copenhague", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Brussels", + "language": "it", + "name": "Bruxelles, Copenhagen", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Brussels", + "language": "ja", + "name": "ブリュッセル、コペンハーゲン", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Brussels", + "language": "nl", + "name": "Brussel, Kopenhagen", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Brussels", + "language": "pt", + "name": "Bruxelas, Copenhaga", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Brussels", + "language": "ru", + "name": "Брюссель, Копенгаген", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "BG": { + "en": [ + { + "area": "Europe/Sofia", + "language": "en", + "name": "Sofia, Tallinn, Vilnius", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Sofia", + "language": "de", + "name": "Sofia, Tallinn, Wilna", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Sofia", + "language": "es", + "name": "Sofía, Tallin, Vilna", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Sofia", + "language": "fr", + "name": "Sofia, Tallinn, Vilnius", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Sofia", + "language": "it", + "name": "Sofia, Tallinn, Vilnius", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Sofia", + "language": "ja", + "name": "ソフィア、タリン、ビリニュス", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Sofia", + "language": "nl", + "name": "Sofia, Tallinn, Vilnius", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Sofia", + "language": "pt", + "name": "Sófia, Taline, Vílnius", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Sofia", + "language": "ru", + "name": "София, Таллинн, Вильнюс", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "BH": { + "en": [ + { + "area": "Asia/Bahrain", + "language": "en", + "name": "Kuwait, Riyadh", + "utc_offset": "10800", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Bahrain", + "language": "es", + "name": "Kuwait, Riad", + "utc_offset": "10800", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Bahrain", + "language": "fr", + "name": "Koweït, Riyad", + "utc_offset": "10800", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Bahrain", + "language": "ja", + "name": "クウェート、リヤド", + "utc_offset": "10800", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Bahrain", + "language": "pt", + "name": "Kuwait, Riade", + "utc_offset": "10800", + "order": "0" + } + ] + }, + "BJ": { + "ja": [ + { + "area": "Africa/Porto-Novo", + "language": "ja", + "name": "西中央アフリカ", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "BM": { + "en": [ + { + "area": "Atlantic/Bermuda", + "language": "en", + "name": "Bermuda", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "Atlantic/Bermuda", + "language": "es", + "name": "Bermudas", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "Atlantic/Bermuda", + "language": "fr", + "name": "Bermudes", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "Atlantic/Bermuda", + "language": "ja", + "name": "バミューダ", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "Atlantic/Bermuda", + "language": "pt", + "name": "Bermudas", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "BO": { + "en": [ + { + "area": "America/La_Paz", + "language": "en", + "name": "Georgetown, La Paz, San Juan", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/La_Paz", + "language": "es", + "name": "Georgetown, La Paz, San Juan", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/La_Paz", + "language": "fr", + "name": "Georgetown, La Paz, San Juan", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/La_Paz", + "language": "ja", + "name": "ジョージタウン、ラパス、サンフアン", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/La_Paz", + "language": "pt", + "name": "Georgetown, La Paz, San Juan", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "BR": { + "en": [ + { + "area": "America/Boa_Vista", + "language": "en", + "name": "Boa Vista, Manaus, Rio Branco", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Araguaina", + "language": "en", + "name": "Brasilia", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Campo_Grande", + "language": "en", + "name": "Campo Grande, Cuiaba", + "utc_offset": "-10800", + "order": "3" + }, + { + "area": "America/Noronha", + "language": "en", + "name": "Fernando de Noronha", + "utc_offset": "-7200", + "order": "4" + }, + { + "area": "America/Sao_Paulo", + "language": "en", + "name": "São Paulo", + "utc_offset": "-7200", + "order": "5" + } + ], + "es": [ + { + "area": "America/Boa_Vista", + "language": "es", + "name": "Boa Vista, Manaus, Rio Branco", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Araguaina", + "language": "es", + "name": "Brasilia", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Campo_Grande", + "language": "es", + "name": "Campo Grande, Cuiaba", + "utc_offset": "-10800", + "order": "3" + }, + { + "area": "America/Noronha", + "language": "es", + "name": "Fernando de Noronha", + "utc_offset": "-7200", + "order": "4" + }, + { + "area": "America/Sao_Paulo", + "language": "es", + "name": "Sao Paulo", + "utc_offset": "-7200", + "order": "5" + } + ], + "fr": [ + { + "area": "America/Boa_Vista", + "language": "fr", + "name": "Boa Vista, Manaus, Rio Branco", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Araguaina", + "language": "fr", + "name": "Brasilia", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Campo_Grande", + "language": "fr", + "name": "Campo Grande, Cuiabá", + "utc_offset": "-10800", + "order": "3" + }, + { + "area": "America/Noronha", + "language": "fr", + "name": "Fernando de Noronha", + "utc_offset": "-7200", + "order": "4" + }, + { + "area": "America/Sao_Paulo", + "language": "fr", + "name": "São Paulo", + "utc_offset": "-7200", + "order": "5" + } + ], + "ja": [ + { + "area": "America/Boa_Vista", + "language": "ja", + "name": "ボアビスタ、マナウス、リオ・ブランコ", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Araguaina", + "language": "ja", + "name": "ブラジリア", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Campo_Grande", + "language": "ja", + "name": "カンポグランデ、クイアバ", + "utc_offset": "-10800", + "order": "3" + }, + { + "area": "America/Noronha", + "language": "ja", + "name": "フェルナンド・デ・ノローニャ", + "utc_offset": "-7200", + "order": "4" + }, + { + "area": "America/Sao_Paulo", + "language": "ja", + "name": "サンパウロ", + "utc_offset": "-7200", + "order": "5" + } + ], + "pt": [ + { + "area": "America/Boa_Vista", + "language": "pt", + "name": "Boa Vista, Manaus, Rio Branco", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Araguaina", + "language": "pt", + "name": "Brasília", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Campo_Grande", + "language": "pt", + "name": "Campo Grande, Cuiabá", + "utc_offset": "-10800", + "order": "3" + }, + { + "area": "America/Noronha", + "language": "pt", + "name": "Fernando de Noronha", + "utc_offset": "-7200", + "order": "4" + }, + { + "area": "America/Sao_Paulo", + "language": "pt", + "name": "São Paulo", + "utc_offset": "-7200", + "order": "5" + } + ] + }, + "BS": { + "en": [ + { + "area": "America/Nassau", + "language": "en", + "name": "Eastern Time (US & Canada)", + "utc_offset": "-18000", + "order": "0" + } + ], + "es": [ + { + "area": "America/Nassau", + "language": "es", + "name": "Horario del Este (EE. UU. y Canadá)", + "utc_offset": "-18000", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Nassau", + "language": "fr", + "name": "Heure de l'Est (É.-U. et Canada)", + "utc_offset": "-18000", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Nassau", + "language": "ja", + "name": "東部標準時(米国およびカナダ)", + "utc_offset": "-18000", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Nassau", + "language": "pt", + "name": "Costa Leste (EUA e Canadá)", + "utc_offset": "-18000", + "order": "0" + } + ] + }, + "BW": { + "en": [ + { + "area": "Africa/Gaborone", + "language": "en", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Gaborone", + "language": "de", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Gaborone", + "language": "es", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Gaborone", + "language": "fr", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Gaborone", + "language": "it", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Gaborone", + "language": "ja", + "name": "ルサカ、ハラレ、ハボローネ、マプト", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Gaborone", + "language": "nl", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Gaborone", + "language": "pt", + "name": "Lusaca, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Gaborone", + "language": "ru", + "name": "Лусака, Хараре, Габороне, Мапуту", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "BY": { + "ja": [ + { + "area": "Europe/Minsk", + "language": "ja", + "name": "ミンスク", + "utc_offset": "10800", + "order": "0" + } + ] + }, + "BZ": { + "en": [ + { + "area": "America/Belize", + "language": "en", + "name": "Belize", + "utc_offset": "-21600", + "order": "0" + } + ], + "es": [ + { + "area": "America/Belize", + "language": "es", + "name": "Belice", + "utc_offset": "-21600", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Belize", + "language": "fr", + "name": "Bélize", + "utc_offset": "-21600", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Belize", + "language": "ja", + "name": "ベリーズ", + "utc_offset": "-21600", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Belize", + "language": "pt", + "name": "Belize", + "utc_offset": "-21600", + "order": "0" + } + ] + }, + "CA": { + "en": [ + { + "area": "America/Dawson", + "language": "en", + "name": "Pacific Time (US & Canada)", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Cambridge_Bay", + "language": "en", + "name": "Mountain Time (US & Canada)", + "utc_offset": "-25200", + "order": "2" + }, + { + "area": "America/Dawson_Creek", + "language": "en", + "name": "Dawson Creek", + "utc_offset": "-25200", + "order": "3" + }, + { + "area": "America/Rainy_River", + "language": "en", + "name": "Central Time (US & Canada)", + "utc_offset": "-21600", + "order": "4" + }, + { + "area": "America/Regina", + "language": "en", + "name": "Saskatchewan", + "utc_offset": "-21600", + "order": "5" + }, + { + "area": "America/Atikokan", + "language": "en", + "name": "Atikokan, Resolute", + "utc_offset": "-18000", + "order": "6" + }, + { + "area": "America/Iqaluit", + "language": "en", + "name": "Eastern Time (US & Canada)", + "utc_offset": "-18000", + "order": "7" + }, + { + "area": "America/Blanc-Sablon", + "language": "en", + "name": "Blanc Sablon", + "utc_offset": "-14400", + "order": "8" + }, + { + "area": "America/Glace_Bay", + "language": "en", + "name": "Atlantic Time (Canada)", + "utc_offset": "-14400", + "order": "9" + }, + { + "area": "America/St_Johns", + "language": "en", + "name": "Newfoundland", + "utc_offset": "-12600", + "order": "10" + } + ], + "es": [ + { + "area": "America/Dawson", + "language": "es", + "name": "Horario del Pacífico (EE. UU. y Canadá)", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Cambridge_Bay", + "language": "es", + "name": "Horario de Montaña (EE. UU. y Canadá)", + "utc_offset": "-25200", + "order": "2" + }, + { + "area": "America/Dawson_Creek", + "language": "es", + "name": "Dawson Creek", + "utc_offset": "-25200", + "order": "3" + }, + { + "area": "America/Rainy_River", + "language": "es", + "name": "Horario del Centro (EE. UU. y Canadá)", + "utc_offset": "-21600", + "order": "4" + }, + { + "area": "America/Regina", + "language": "es", + "name": "Saskatchewan", + "utc_offset": "-21600", + "order": "5" + }, + { + "area": "America/Atikokan", + "language": "es", + "name": "Atikokan, Resolute", + "utc_offset": "-18000", + "order": "6" + }, + { + "area": "America/Iqaluit", + "language": "es", + "name": "Horario del Este (EE. UU. y Canadá)", + "utc_offset": "-18000", + "order": "7" + }, + { + "area": "America/Blanc-Sablon", + "language": "es", + "name": "Blanc Sablon", + "utc_offset": "-14400", + "order": "8" + }, + { + "area": "America/Glace_Bay", + "language": "es", + "name": "Horario del Atlántico (Canadá)", + "utc_offset": "-14400", + "order": "9" + }, + { + "area": "America/St_Johns", + "language": "es", + "name": "Terranova", + "utc_offset": "-12600", + "order": "10" + } + ], + "fr": [ + { + "area": "America/Dawson", + "language": "fr", + "name": "Heure du Pacifique (É.-U. et Canada)", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Cambridge_Bay", + "language": "fr", + "name": "Heure des Rocheuses (É.-U. et Canada)", + "utc_offset": "-25200", + "order": "2" + }, + { + "area": "America/Dawson_Creek", + "language": "fr", + "name": "Dawson Creek", + "utc_offset": "-25200", + "order": "3" + }, + { + "area": "America/Rainy_River", + "language": "fr", + "name": "Heure du Centre (É.-U. et Canada)", + "utc_offset": "-21600", + "order": "4" + }, + { + "area": "America/Regina", + "language": "fr", + "name": "Saskatchewan", + "utc_offset": "-21600", + "order": "5" + }, + { + "area": "America/Atikokan", + "language": "fr", + "name": "Atikokan, Resolute", + "utc_offset": "-18000", + "order": "6" + }, + { + "area": "America/Iqaluit", + "language": "fr", + "name": "Heure de l'Est (É.-U. et Canada)", + "utc_offset": "-18000", + "order": "7" + }, + { + "area": "America/Blanc-Sablon", + "language": "fr", + "name": "Blanc-Sablon", + "utc_offset": "-14400", + "order": "8" + }, + { + "area": "America/Glace_Bay", + "language": "fr", + "name": "Atlantique (Canada)", + "utc_offset": "-14400", + "order": "9" + }, + { + "area": "America/St_Johns", + "language": "fr", + "name": "Terre-Neuve", + "utc_offset": "-12600", + "order": "10" + } + ], + "ja": [ + { + "area": "America/Dawson", + "language": "ja", + "name": "太平洋標準時(米国およびカナダ)", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Cambridge_Bay", + "language": "ja", + "name": "山地標準時(米国およびカナダ)", + "utc_offset": "-25200", + "order": "2" + }, + { + "area": "America/Dawson_Creek", + "language": "ja", + "name": "ドーソンクリーク", + "utc_offset": "-25200", + "order": "3" + }, + { + "area": "America/Rainy_River", + "language": "ja", + "name": "中央標準時(米国およびカナダ)", + "utc_offset": "-21600", + "order": "4" + }, + { + "area": "America/Regina", + "language": "ja", + "name": "サスカチュワン", + "utc_offset": "-21600", + "order": "5" + }, + { + "area": "America/Atikokan", + "language": "ja", + "name": "アチコナン、レゾリュート", + "utc_offset": "-18000", + "order": "6" + }, + { + "area": "America/Iqaluit", + "language": "ja", + "name": "東部標準時(米国およびカナダ)", + "utc_offset": "-18000", + "order": "7" + }, + { + "area": "America/Blanc-Sablon", + "language": "ja", + "name": "ブラン・サブロン", + "utc_offset": "-14400", + "order": "8" + }, + { + "area": "America/Glace_Bay", + "language": "ja", + "name": "大西洋標準時(カナダ)", + "utc_offset": "-14400", + "order": "9" + }, + { + "area": "America/St_Johns", + "language": "ja", + "name": "ニューファンドランド", + "utc_offset": "-12600", + "order": "10" + } + ], + "pt": [ + { + "area": "America/Dawson", + "language": "pt", + "name": "Costa Pacífica (EUA e Canadá)", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Cambridge_Bay", + "language": "pt", + "name": "Montanhas Rochosas (EUA e Canadá)", + "utc_offset": "-25200", + "order": "2" + }, + { + "area": "America/Dawson_Creek", + "language": "pt", + "name": "Dawson Creek", + "utc_offset": "-25200", + "order": "3" + }, + { + "area": "America/Rainy_River", + "language": "pt", + "name": "Região Central (EUA e Canadá)", + "utc_offset": "-21600", + "order": "4" + }, + { + "area": "America/Regina", + "language": "pt", + "name": "Saskatchewan", + "utc_offset": "-21600", + "order": "5" + }, + { + "area": "America/Atikokan", + "language": "pt", + "name": "Atikokan, Resolute", + "utc_offset": "-18000", + "order": "6" + }, + { + "area": "America/Iqaluit", + "language": "pt", + "name": "Costa Leste (EUA e Canadá)", + "utc_offset": "-18000", + "order": "7" + }, + { + "area": "America/Blanc-Sablon", + "language": "pt", + "name": "Blanc Sablon", + "utc_offset": "-14400", + "order": "8" + }, + { + "area": "America/Glace_Bay", + "language": "pt", + "name": "Atlântico (Canadá)", + "utc_offset": "-14400", + "order": "9" + }, + { + "area": "America/St_Johns", + "language": "pt", + "name": "Terranova", + "utc_offset": "-12600", + "order": "10" + } + ] + }, + "CD": { + "ja": [ + { + "area": "Africa/Kinshasa", + "language": "ja", + "name": "西中央アフリカ", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "CF": { + "ja": [ + { + "area": "Africa/Bangui", + "language": "ja", + "name": "西中央アフリカ", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "CG": { + "ja": [ + { + "area": "Africa/Brazzaville", + "language": "ja", + "name": "西中央アフリカ", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "CH": { + "en": [ + { + "area": "Europe/Zurich", + "language": "en", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Zurich", + "language": "de", + "name": "Amsterdam, Berlin, Rom", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Zurich", + "language": "es", + "name": "Ámsterdam, Berlín, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Zurich", + "language": "fr", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Zurich", + "language": "it", + "name": "Amsterdam, Berlino, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Zurich", + "language": "ja", + "name": "アムステルダム、ベルリン、ローマ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Zurich", + "language": "nl", + "name": "Amsterdam, Berlijn, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Zurich", + "language": "pt", + "name": "Amesterdão, Berlim, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Zurich", + "language": "ru", + "name": "Амстердам, Берлин, Рим", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "CL": { + "en": [ + { + "area": "Pacific/Easter", + "language": "en", + "name": "Easter", + "utc_offset": "-18000", + "order": "1" + }, + { + "area": "America/Santiago", + "language": "en", + "name": "Santiago", + "utc_offset": "-10800", + "order": "2" + } + ], + "es": [ + { + "area": "Pacific/Easter", + "language": "es", + "name": "Isla de Pascua", + "utc_offset": "-18000", + "order": "1" + }, + { + "area": "America/Santiago", + "language": "es", + "name": "Santiago", + "utc_offset": "-10800", + "order": "2" + } + ], + "fr": [ + { + "area": "Pacific/Easter", + "language": "fr", + "name": "Île de Pâques", + "utc_offset": "-18000", + "order": "1" + }, + { + "area": "America/Santiago", + "language": "fr", + "name": "Santiago", + "utc_offset": "-10800", + "order": "2" + } + ], + "ja": [ + { + "area": "Pacific/Easter", + "language": "ja", + "name": "イースター島", + "utc_offset": "-18000", + "order": "1" + }, + { + "area": "America/Santiago", + "language": "ja", + "name": "サンティアゴ", + "utc_offset": "-10800", + "order": "2" + } + ], + "pt": [ + { + "area": "Pacific/Easter", + "language": "pt", + "name": "Ilha de Páscoa", + "utc_offset": "-18000", + "order": "1" + }, + { + "area": "America/Santiago", + "language": "pt", + "name": "Santiago", + "utc_offset": "-10800", + "order": "2" + } + ] + }, + "CM": { + "ja": [ + { + "area": "Africa/Douala", + "language": "ja", + "name": "西中央アフリカ", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "CN": { + "en": [ + { + "area": "Asia/Chongqing", + "language": "en", + "name": "Beijing, Chongqing, Urumqi", + "utc_offset": "28800", + "order": "0" + } + ], + "de": [ + { + "area": "Asia/Chongqing", + "language": "de", + "name": "Peking, Chongqing, Urumqi", + "utc_offset": "28800", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Chongqing", + "language": "es", + "name": "Pekín, Chongqing, Urumqi", + "utc_offset": "28800", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Chongqing", + "language": "fr", + "name": "Pékin, Chongqing, Urumqi", + "utc_offset": "28800", + "order": "0" + } + ], + "it": [ + { + "area": "Asia/Chongqing", + "language": "it", + "name": "Pechino, Chongqing, Urumqi", + "utc_offset": "28800", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Chongqing", + "language": "ja", + "name": "北京、重慶、ウルムチ", + "utc_offset": "28800", + "order": "0" + } + ], + "nl": [ + { + "area": "Asia/Chongqing", + "language": "nl", + "name": "Peking, Chongqing, Ürümqi", + "utc_offset": "28800", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Chongqing", + "language": "pt", + "name": "Pequim, Chongqing, Urumqi", + "utc_offset": "28800", + "order": "0" + } + ], + "ru": [ + { + "area": "Asia/Chongqing", + "language": "ru", + "name": "Пекин, Чунцин, Урумчи", + "utc_offset": "28800", + "order": "0" + } + ] + }, + "CO": { + "en": [ + { + "area": "America/Bogota", + "language": "en", + "name": "Bogotá, Lima, Quito", + "utc_offset": "-18000", + "order": "0" + } + ], + "es": [ + { + "area": "America/Bogota", + "language": "es", + "name": "Bogotá, Lima, Quito", + "utc_offset": "-18000", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Bogota", + "language": "fr", + "name": "Bogotá, Lima, Quito", + "utc_offset": "-18000", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Bogota", + "language": "ja", + "name": "ボゴタ、リマ、キト", + "utc_offset": "-18000", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Bogota", + "language": "pt", + "name": "Bogotá, Lima, Quito", + "utc_offset": "-18000", + "order": "0" + } + ] + }, + "CR": { + "en": [ + { + "area": "America/Costa_Rica", + "language": "en", + "name": "Central America", + "utc_offset": "-21600", + "order": "0" + } + ], + "es": [ + { + "area": "America/Costa_Rica", + "language": "es", + "name": "Centroamérica", + "utc_offset": "-21600", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Costa_Rica", + "language": "fr", + "name": "Amérique centrale", + "utc_offset": "-21600", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Costa_Rica", + "language": "ja", + "name": "中央アメリカ", + "utc_offset": "-21600", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Costa_Rica", + "language": "pt", + "name": "América Central", + "utc_offset": "-21600", + "order": "0" + } + ] + }, + "CU": { + "ja": [ + { + "area": "America/Havana", + "language": "ja", + "name": "ハバナ、ポルトープランス", + "utc_offset": "-18000", + "order": "0" + } + ] + }, + "CV": { + "ja": [ + { + "area": "Atlantic/Cape_Verde", + "language": "ja", + "name": "カーボベルデ諸島", + "utc_offset": "-3600", + "order": "0" + } + ] + }, + "CY": { + "en": [ + { + "area": "Asia/Nicosia", + "language": "en", + "name": "Athens, Bucharest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Asia/Nicosia", + "language": "de", + "name": "Athen, Bukarest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Nicosia", + "language": "es", + "name": "Atenas, Bucarest, Estambul", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Nicosia", + "language": "fr", + "name": "Athènes, Bucarest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Asia/Nicosia", + "language": "it", + "name": "Atene, Bucarest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Nicosia", + "language": "ja", + "name": "アテネ、ブカレスト、イスタンブール", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Asia/Nicosia", + "language": "nl", + "name": "Athene, Boekarest, Istanboel", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Nicosia", + "language": "pt", + "name": "Atenas, Bucareste, Istambul", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Asia/Nicosia", + "language": "ru", + "name": "Афины, Бухарест, Стамбул", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "CZ": { + "en": [ + { + "area": "Europe/Prague", + "language": "en", + "name": "Bratislava, Prague", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Prague", + "language": "de", + "name": "Bratislava, Prag", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Prague", + "language": "es", + "name": "Bratislava, Praga", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Prague", + "language": "fr", + "name": "Bratislava, Prague", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Prague", + "language": "it", + "name": "Bratislava, Praga", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Prague", + "language": "ja", + "name": "ブラチスラバ、プラハ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Prague", + "language": "nl", + "name": "Bratislava, Praag", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Prague", + "language": "pt", + "name": "Bratislava, Praga", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Prague", + "language": "ru", + "name": "Братислава, Прага", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "DE": { + "en": [ + { + "area": "Europe/Berlin", + "language": "en", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Berlin", + "language": "de", + "name": "Amsterdam, Berlin, Rom", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Berlin", + "language": "es", + "name": "Ámsterdam, Berlín, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Berlin", + "language": "fr", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Berlin", + "language": "it", + "name": "Amsterdam, Berlino, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Berlin", + "language": "ja", + "name": "アムステルダム、ベルリン、ローマ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Berlin", + "language": "nl", + "name": "Amsterdam, Berlijn, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Berlin", + "language": "pt", + "name": "Amesterdão, Berlim, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Berlin", + "language": "ru", + "name": "Амстердам, Берлин, Рим", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "DJ": { + "en": [ + { + "area": "Africa/Djibouti", + "language": "en", + "name": "Asmara, Djibouti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Djibouti", + "language": "de", + "name": "Asmara, Dschibuti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Djibouti", + "language": "es", + "name": "Asmara, Yibuti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Djibouti", + "language": "fr", + "name": "Asmara, Djibouti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Djibouti", + "language": "it", + "name": "Asmara, Gibuti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Djibouti", + "language": "ja", + "name": "アスマラ、ジブチ、ナイロビ", + "utc_offset": "10800", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Djibouti", + "language": "nl", + "name": "Asmara, Djibouti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Djibouti", + "language": "pt", + "name": "Asmara, Jibuti, Nairóbi", + "utc_offset": "10800", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Djibouti", + "language": "ru", + "name": "Асмэра, Джибути, Найроби", + "utc_offset": "10800", + "order": "0" + } + ] + }, + "DK": { + "en": [ + { + "area": "America/Thule", + "language": "en", + "name": "Thule", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "en", + "name": "Nuuk", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "en", + "name": "Ittoqqortoormiit", + "utc_offset": "-3600", + "order": "3" + }, + { + "area": "Atlantic/Faroe", + "language": "en", + "name": "Faroe Islands", + "utc_offset": "0", + "order": "4" + }, + { + "area": "Europe/Copenhagen", + "language": "en", + "name": "Brussels, Copenhagen", + "utc_offset": "3600", + "order": "5" + } + ], + "de": [ + { + "area": "America/Thule", + "language": "de", + "name": "Thule", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "de", + "name": "Nuuk", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "de", + "name": "Ittoqqortoormiit", + "utc_offset": "-3600", + "order": "3" + }, + { + "area": "Atlantic/Faroe", + "language": "de", + "name": "Färöer ", + "utc_offset": "0", + "order": "4" + }, + { + "area": "Europe/Copenhagen", + "language": "de", + "name": "Brüssel, Kopenhagen", + "utc_offset": "3600", + "order": "5" + } + ], + "es": [ + { + "area": "America/Thule", + "language": "es", + "name": "Thule", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "es", + "name": "Nuuk", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "es", + "name": "Ittoqqortoormiit", + "utc_offset": "-3600", + "order": "3" + }, + { + "area": "Atlantic/Faroe", + "language": "es", + "name": "Islas Feroe", + "utc_offset": "0", + "order": "4" + }, + { + "area": "Europe/Copenhagen", + "language": "es", + "name": "Bruselas, Copenhague", + "utc_offset": "3600", + "order": "5" + } + ], + "fr": [ + { + "area": "America/Thule", + "language": "fr", + "name": "Thulé", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "fr", + "name": "Nuuk", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "fr", + "name": "Ittoqqortoormiit", + "utc_offset": "-3600", + "order": "3" + }, + { + "area": "Atlantic/Faroe", + "language": "fr", + "name": "Îles Féroé", + "utc_offset": "0", + "order": "4" + }, + { + "area": "Europe/Copenhagen", + "language": "fr", + "name": "Bruxelles, Copenhague", + "utc_offset": "3600", + "order": "5" + } + ], + "it": [ + { + "area": "America/Thule", + "language": "it", + "name": "Thule", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "it", + "name": "Nuuk", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "it", + "name": "Ittoqqortoormiit", + "utc_offset": "-3600", + "order": "3" + }, + { + "area": "Atlantic/Faroe", + "language": "it", + "name": "Isole Fær Øer", + "utc_offset": "0", + "order": "4" + }, + { + "area": "Europe/Copenhagen", + "language": "it", + "name": "Bruxelles, Copenhagen", + "utc_offset": "3600", + "order": "5" + } + ], + "ja": [ + { + "area": "America/Thule", + "language": "ja", + "name": "トゥーレ", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "ja", + "name": "ゴッドホープ", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "ja", + "name": "スコレスビスン", + "utc_offset": "-3600", + "order": "3" + }, + { + "area": "Atlantic/Faroe", + "language": "ja", + "name": "フェロー諸島", + "utc_offset": "0", + "order": "4" + }, + { + "area": "Europe/Copenhagen", + "language": "ja", + "name": "ブリュッセル、コペンハーゲン", + "utc_offset": "3600", + "order": "5" + } + ], + "nl": [ + { + "area": "America/Thule", + "language": "nl", + "name": "Thule", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "nl", + "name": "Nuuk", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "nl", + "name": "Ittoqqortoormiit", + "utc_offset": "-3600", + "order": "3" + }, + { + "area": "Atlantic/Faroe", + "language": "nl", + "name": "Faeröer", + "utc_offset": "0", + "order": "4" + }, + { + "area": "Europe/Copenhagen", + "language": "nl", + "name": "Brussel, Kopenhagen", + "utc_offset": "3600", + "order": "5" + } + ], + "pt": [ + { + "area": "America/Thule", + "language": "pt", + "name": "Thule", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "pt", + "name": "Nuuk", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "pt", + "name": "Ittoqqortoormiit", + "utc_offset": "-3600", + "order": "3" + }, + { + "area": "Atlantic/Faroe", + "language": "pt", + "name": "Ilhas Faroé", + "utc_offset": "0", + "order": "4" + }, + { + "area": "Europe/Copenhagen", + "language": "pt", + "name": "Bruxelas, Copenhaga", + "utc_offset": "3600", + "order": "5" + } + ], + "ru": [ + { + "area": "America/Thule", + "language": "ru", + "name": "Туле", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "ru", + "name": "Нуук", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "ru", + "name": "Иттокортоормиит", + "utc_offset": "-3600", + "order": "3" + }, + { + "area": "Atlantic/Faroe", + "language": "ru", + "name": "Фарерские острова", + "utc_offset": "0", + "order": "4" + }, + { + "area": "Europe/Copenhagen", + "language": "ru", + "name": "Брюссель, Копенгаген", + "utc_offset": "3600", + "order": "5" + } + ] + }, + "DM": { + "en": [ + { + "area": "America/Dominica", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Dominica", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Dominica", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Dominica", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Dominica", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "DO": { + "en": [ + { + "area": "America/Santo_Domingo", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Santo_Domingo", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Santo_Domingo", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Santo_Domingo", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Santo_Domingo", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "EC": { + "en": [ + { + "area": "Pacific/Galapagos", + "language": "en", + "name": "Galapagos", + "utc_offset": "-21600", + "order": "1" + }, + { + "area": "America/Guayaquil", + "language": "en", + "name": "Guayaquil", + "utc_offset": "-18000", + "order": "2" + } + ], + "es": [ + { + "area": "Pacific/Galapagos", + "language": "es", + "name": "Galápagos", + "utc_offset": "-21600", + "order": "1" + }, + { + "area": "America/Guayaquil", + "language": "es", + "name": "Guayaquil", + "utc_offset": "-18000", + "order": "2" + } + ], + "fr": [ + { + "area": "Pacific/Galapagos", + "language": "fr", + "name": "Galapagos", + "utc_offset": "-21600", + "order": "1" + }, + { + "area": "America/Guayaquil", + "language": "fr", + "name": "Guayaquil", + "utc_offset": "-18000", + "order": "2" + } + ], + "ja": [ + { + "area": "Pacific/Galapagos", + "language": "ja", + "name": "ガラパゴス諸島", + "utc_offset": "-21600", + "order": "1" + }, + { + "area": "America/Guayaquil", + "language": "ja", + "name": "グアヤキル", + "utc_offset": "-18000", + "order": "2" + } + ], + "pt": [ + { + "area": "Pacific/Galapagos", + "language": "pt", + "name": "Galápagos", + "utc_offset": "-21600", + "order": "1" + }, + { + "area": "America/Guayaquil", + "language": "pt", + "name": "Guaiaquil", + "utc_offset": "-18000", + "order": "2" + } + ] + }, + "EE": { + "en": [ + { + "area": "Europe/Tallinn", + "language": "en", + "name": "Sofia, Tallinn, Vilnius", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Tallinn", + "language": "de", + "name": "Sofia, Tallinn, Wilna", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Tallinn", + "language": "es", + "name": "Sofía, Tallin, Vilna", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Tallinn", + "language": "fr", + "name": "Sofia, Tallinn, Vilnius", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Tallinn", + "language": "it", + "name": "Sofia, Tallinn, Vilnius", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Tallinn", + "language": "ja", + "name": "ソフィア、タリン、ビリニュス", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Tallinn", + "language": "nl", + "name": "Sofia, Tallinn, Vilnius", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Tallinn", + "language": "pt", + "name": "Sófia, Taline, Vílnius", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Tallinn", + "language": "ru", + "name": "София, Таллинн, Вильнюс", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "EG": { + "en": [ + { + "area": "Africa/Cairo", + "language": "en", + "name": "Cairo", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Cairo", + "language": "es", + "name": "El Cairo", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Cairo", + "language": "fr", + "name": "Le Caire", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Cairo", + "language": "ja", + "name": "カイロ", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Cairo", + "language": "pt", + "name": "Cairo", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "ER": { + "en": [ + { + "area": "Africa/Asmara", + "language": "en", + "name": "Asmara, Djibouti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Asmara", + "language": "de", + "name": "Asmara, Dschibuti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Asmara", + "language": "es", + "name": "Asmara, Yibuti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Asmara", + "language": "fr", + "name": "Asmara, Djibouti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Asmara", + "language": "it", + "name": "Asmara, Gibuti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Asmara", + "language": "ja", + "name": "アスマラ、ジブチ、ナイロビ", + "utc_offset": "10800", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Asmara", + "language": "nl", + "name": "Asmara, Djibouti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Asmara", + "language": "pt", + "name": "Asmara, Jibuti, Nairóbi", + "utc_offset": "10800", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Asmara", + "language": "ru", + "name": "Асмэра, Джибути, Найроби", + "utc_offset": "10800", + "order": "0" + } + ] + }, + "ES": { + "en": [ + { + "area": "Atlantic/Canary", + "language": "en", + "name": "Dublin, Lisbon, London", + "utc_offset": "0", + "order": "1" + }, + { + "area": "Europe/Madrid", + "language": "en", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "2" + } + ], + "de": [ + { + "area": "Atlantic/Canary", + "language": "de", + "name": "Dublin, Lissabon, London", + "utc_offset": "0", + "order": "1" + }, + { + "area": "Europe/Madrid", + "language": "de", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "2" + } + ], + "es": [ + { + "area": "Atlantic/Canary", + "language": "es", + "name": "Dublín, Lisboa, Londres", + "utc_offset": "0", + "order": "1" + }, + { + "area": "Europe/Madrid", + "language": "es", + "name": "Madrid, París", + "utc_offset": "3600", + "order": "2" + } + ], + "fr": [ + { + "area": "Atlantic/Canary", + "language": "fr", + "name": "Dublin, Lisbonne, Londres", + "utc_offset": "0", + "order": "1" + }, + { + "area": "Europe/Madrid", + "language": "fr", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "2" + } + ], + "it": [ + { + "area": "Atlantic/Canary", + "language": "it", + "name": "Dublino, Lisbona, Londra", + "utc_offset": "0", + "order": "1" + }, + { + "area": "Europe/Madrid", + "language": "it", + "name": "Madrid, Parigi", + "utc_offset": "3600", + "order": "2" + } + ], + "ja": [ + { + "area": "Atlantic/Canary", + "language": "ja", + "name": "ダブリン、リスボン、ロンドン", + "utc_offset": "0", + "order": "1" + }, + { + "area": "Europe/Madrid", + "language": "ja", + "name": "マドリード、パリ", + "utc_offset": "3600", + "order": "2" + } + ], + "nl": [ + { + "area": "Atlantic/Canary", + "language": "nl", + "name": "Dublin, Lissabon, Londen", + "utc_offset": "0", + "order": "1" + }, + { + "area": "Europe/Madrid", + "language": "nl", + "name": "Madrid, Parijs", + "utc_offset": "3600", + "order": "2" + } + ], + "pt": [ + { + "area": "Atlantic/Canary", + "language": "pt", + "name": "Dublim, Lisboa, Londres", + "utc_offset": "0", + "order": "1" + }, + { + "area": "Europe/Madrid", + "language": "pt", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "2" + } + ], + "ru": [ + { + "area": "Atlantic/Canary", + "language": "ru", + "name": "Дублин, Лиссабон, Лондон", + "utc_offset": "0", + "order": "1" + }, + { + "area": "Europe/Madrid", + "language": "ru", + "name": "Мадрид, Париж", + "utc_offset": "3600", + "order": "2" + } + ] + }, + "FI": { + "en": [ + { + "area": "Europe/Helsinki", + "language": "en", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Helsinki", + "language": "de", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Helsinki", + "language": "es", + "name": "Helsinki, Kaliningrado", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Helsinki", + "language": "fr", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Helsinki", + "language": "it", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Helsinki", + "language": "ja", + "name": "ヘルシンキ、カリーニングラード", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Helsinki", + "language": "nl", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Helsinki", + "language": "pt", + "name": "Helsínquia, Caliningrado", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Helsinki", + "language": "ru", + "name": "Хельсинки, Калининград", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "FJ": { + "ja": [ + { + "area": "Pacific/Fiji", + "language": "ja", + "name": "フィジー、マーシャル諸島", + "utc_offset": "43200", + "order": "0" + } + ] + }, + "FR": { + "en": [ + { + "area": "Pacific/Tahiti", + "language": "en", + "name": "Tahiti, French Polynesia", + "utc_offset": "-36000", + "order": "1" + }, + { + "area": "Pacific/Marquesas", + "language": "en", + "name": "Marquesas Islands", + "utc_offset": "-34200", + "order": "2" + }, + { + "area": "Pacific/Gambier", + "language": "en", + "name": "Gambier Islands", + "utc_offset": "-32400", + "order": "3" + }, + { + "area": "America/Tijuana", + "language": "en", + "name": "Clipperton Island", + "utc_offset": "-28800", + "order": "4" + }, + { + "area": "America/Martinique", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "5" + }, + { + "area": "America/Cayenne", + "language": "en", + "name": "Cayenne", + "utc_offset": "-10800", + "order": "6" + }, + { + "area": "Europe/Paris", + "language": "en", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "7" + }, + { + "area": "Indian/Mayotte", + "language": "en", + "name": "Mayotte", + "utc_offset": "10800", + "order": "8" + }, + { + "area": "Indian/Reunion", + "language": "en", + "name": "Réunion", + "utc_offset": "14400", + "order": "9" + }, + { + "area": "Indian/Kerguelen", + "language": "en", + "name": "Kerguelen Islands", + "utc_offset": "18000", + "order": "10" + }, + { + "area": "Pacific/Noumea", + "language": "en", + "name": "Nouméa", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Pacific/Wallis", + "language": "en", + "name": "Wallis ", + "utc_offset": "43200", + "order": "12" + } + ], + "de": [ + { + "area": "Pacific/Tahiti", + "language": "de", + "name": "Tahiti, Französisch-Polynesien", + "utc_offset": "-36000", + "order": "1" + }, + { + "area": "Pacific/Marquesas", + "language": "de", + "name": "Marquesas-Inseln", + "utc_offset": "-34200", + "order": "2" + }, + { + "area": "Pacific/Gambier", + "language": "de", + "name": "Gambierinseln", + "utc_offset": "-32400", + "order": "3" + }, + { + "area": "America/Tijuana", + "language": "de", + "name": "Clipperton-Insel", + "utc_offset": "-28800", + "order": "4" + }, + { + "area": "America/Martinique", + "language": "de", + "name": "Atlantic Standard Time (Karibik)", + "utc_offset": "-14400", + "order": "5" + }, + { + "area": "America/Cayenne", + "language": "de", + "name": "Cayenne", + "utc_offset": "-10800", + "order": "6" + }, + { + "area": "Europe/Paris", + "language": "de", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "7" + }, + { + "area": "Indian/Mayotte", + "language": "de", + "name": "Mayotte", + "utc_offset": "10800", + "order": "8" + }, + { + "area": "Indian/Reunion", + "language": "de", + "name": "La Réunion", + "utc_offset": "14400", + "order": "9" + }, + { + "area": "Indian/Kerguelen", + "language": "de", + "name": "Kerguelen", + "utc_offset": "18000", + "order": "10" + }, + { + "area": "Pacific/Noumea", + "language": "de", + "name": "Nouméa", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Pacific/Wallis", + "language": "de", + "name": "Wallis-Inseln", + "utc_offset": "43200", + "order": "12" + } + ], + "es": [ + { + "area": "Pacific/Tahiti", + "language": "es", + "name": "Tahití, Polinesia Francesa", + "utc_offset": "-36000", + "order": "1" + }, + { + "area": "Pacific/Marquesas", + "language": "es", + "name": "Islas Marquesas", + "utc_offset": "-34200", + "order": "2" + }, + { + "area": "Pacific/Gambier", + "language": "es", + "name": "Islas Gambier", + "utc_offset": "-32400", + "order": "3" + }, + { + "area": "America/Tijuana", + "language": "es", + "name": "Isla Clipperton", + "utc_offset": "-28800", + "order": "4" + }, + { + "area": "America/Martinique", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "5" + }, + { + "area": "America/Cayenne", + "language": "es", + "name": "Cayena", + "utc_offset": "-10800", + "order": "6" + }, + { + "area": "Europe/Paris", + "language": "es", + "name": "Madrid, París", + "utc_offset": "3600", + "order": "7" + }, + { + "area": "Indian/Mayotte", + "language": "es", + "name": "Mayotte", + "utc_offset": "10800", + "order": "8" + }, + { + "area": "Indian/Reunion", + "language": "es", + "name": "Reunión", + "utc_offset": "14400", + "order": "9" + }, + { + "area": "Indian/Kerguelen", + "language": "es", + "name": "Islas Kerguelen", + "utc_offset": "18000", + "order": "10" + }, + { + "area": "Pacific/Noumea", + "language": "es", + "name": "Numea", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Pacific/Wallis", + "language": "es", + "name": "Wallis ", + "utc_offset": "43200", + "order": "12" + } + ], + "fr": [ + { + "area": "Pacific/Tahiti", + "language": "fr", + "name": "Tahiti, Polynésie française", + "utc_offset": "-36000", + "order": "1" + }, + { + "area": "Pacific/Marquesas", + "language": "fr", + "name": "Îles Marquises", + "utc_offset": "-34200", + "order": "2" + }, + { + "area": "Pacific/Gambier", + "language": "fr", + "name": "Îles Gambier", + "utc_offset": "-32400", + "order": "3" + }, + { + "area": "America/Tijuana", + "language": "fr", + "name": "Île Clipperton", + "utc_offset": "-28800", + "order": "4" + }, + { + "area": "America/Martinique", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "5" + }, + { + "area": "America/Cayenne", + "language": "fr", + "name": "Cayenne", + "utc_offset": "-10800", + "order": "6" + }, + { + "area": "Europe/Paris", + "language": "fr", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "7" + }, + { + "area": "Indian/Mayotte", + "language": "fr", + "name": "Mayotte", + "utc_offset": "10800", + "order": "8" + }, + { + "area": "Indian/Reunion", + "language": "fr", + "name": "La Réunion", + "utc_offset": "14400", + "order": "9" + }, + { + "area": "Indian/Kerguelen", + "language": "fr", + "name": "Îles Kerguelen", + "utc_offset": "18000", + "order": "10" + }, + { + "area": "Pacific/Noumea", + "language": "fr", + "name": "Nouméa", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Pacific/Wallis", + "language": "fr", + "name": "Wallis ", + "utc_offset": "43200", + "order": "12" + } + ], + "it": [ + { + "area": "Pacific/Tahiti", + "language": "it", + "name": "Tahiti, Polinesia Francese", + "utc_offset": "-36000", + "order": "1" + }, + { + "area": "Pacific/Marquesas", + "language": "it", + "name": "Isole Marchesi", + "utc_offset": "-34200", + "order": "2" + }, + { + "area": "Pacific/Gambier", + "language": "it", + "name": "Isole Gambier", + "utc_offset": "-32400", + "order": "3" + }, + { + "area": "America/Tijuana", + "language": "it", + "name": "Isola Clipperton", + "utc_offset": "-28800", + "order": "4" + }, + { + "area": "America/Martinique", + "language": "it", + "name": "Orario standard atlantico (Caraibi)", + "utc_offset": "-14400", + "order": "5" + }, + { + "area": "America/Cayenne", + "language": "it", + "name": "Caienna", + "utc_offset": "-10800", + "order": "6" + }, + { + "area": "Europe/Paris", + "language": "it", + "name": "Madrid, Parigi", + "utc_offset": "3600", + "order": "7" + }, + { + "area": "Indian/Mayotte", + "language": "it", + "name": "Mayotte", + "utc_offset": "10800", + "order": "8" + }, + { + "area": "Indian/Reunion", + "language": "it", + "name": "Riunione", + "utc_offset": "14400", + "order": "9" + }, + { + "area": "Indian/Kerguelen", + "language": "it", + "name": "Isole Kerguelen", + "utc_offset": "18000", + "order": "10" + }, + { + "area": "Pacific/Noumea", + "language": "it", + "name": "Nouméa", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Pacific/Wallis", + "language": "it", + "name": "Wallis", + "utc_offset": "43200", + "order": "12" + } + ], + "ja": [ + { + "area": "Pacific/Tahiti", + "language": "ja", + "name": "タヒチ、フランス領ポリネシア", + "utc_offset": "-36000", + "order": "1" + }, + { + "area": "Pacific/Marquesas", + "language": "ja", + "name": "マルキーズ諸島", + "utc_offset": "-34200", + "order": "2" + }, + { + "area": "Pacific/Gambier", + "language": "ja", + "name": "ガンビエ諸島", + "utc_offset": "-32400", + "order": "3" + }, + { + "area": "America/Tijuana", + "language": "ja", + "name": "クリッパートン島", + "utc_offset": "-28800", + "order": "4" + }, + { + "area": "America/Martinique", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "5" + }, + { + "area": "America/Cayenne", + "language": "ja", + "name": "カイエンヌ", + "utc_offset": "-10800", + "order": "6" + }, + { + "area": "Europe/Paris", + "language": "ja", + "name": "マドリード、パリ", + "utc_offset": "3600", + "order": "7" + }, + { + "area": "Indian/Mayotte", + "language": "ja", + "name": "マヨット", + "utc_offset": "10800", + "order": "8" + }, + { + "area": "Indian/Reunion", + "language": "ja", + "name": "レユニオン", + "utc_offset": "14400", + "order": "9" + }, + { + "area": "Indian/Kerguelen", + "language": "ja", + "name": "ケルゲレン諸島", + "utc_offset": "18000", + "order": "10" + }, + { + "area": "Pacific/Noumea", + "language": "ja", + "name": "ヌメア", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Pacific/Wallis", + "language": "ja", + "name": "ウォリス", + "utc_offset": "43200", + "order": "12" + } + ], + "nl": [ + { + "area": "Pacific/Tahiti", + "language": "nl", + "name": "Tahiti, Frans-Polynesië", + "utc_offset": "-36000", + "order": "1" + }, + { + "area": "Pacific/Marquesas", + "language": "nl", + "name": "Marquesaseilanden", + "utc_offset": "-34200", + "order": "2" + }, + { + "area": "Pacific/Gambier", + "language": "nl", + "name": "Gambiereilanden", + "utc_offset": "-32400", + "order": "3" + }, + { + "area": "America/Tijuana", + "language": "nl", + "name": "Clipperton", + "utc_offset": "-28800", + "order": "4" + }, + { + "area": "America/Martinique", + "language": "nl", + "name": "Atlantic Standard Time (Caraïben)", + "utc_offset": "-14400", + "order": "5" + }, + { + "area": "America/Cayenne", + "language": "nl", + "name": "Cayenne", + "utc_offset": "-10800", + "order": "6" + }, + { + "area": "Europe/Paris", + "language": "nl", + "name": "Madrid, Parijs", + "utc_offset": "3600", + "order": "7" + }, + { + "area": "Indian/Mayotte", + "language": "nl", + "name": "Mayotte", + "utc_offset": "10800", + "order": "8" + }, + { + "area": "Indian/Reunion", + "language": "nl", + "name": "Réunion", + "utc_offset": "14400", + "order": "9" + }, + { + "area": "Indian/Kerguelen", + "language": "nl", + "name": "Kerguelen", + "utc_offset": "18000", + "order": "10" + }, + { + "area": "Pacific/Noumea", + "language": "nl", + "name": "Nouméa", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Pacific/Wallis", + "language": "nl", + "name": "Wallis ", + "utc_offset": "43200", + "order": "12" + } + ], + "pt": [ + { + "area": "Pacific/Tahiti", + "language": "pt", + "name": "Taiti, Polinésia Francesa", + "utc_offset": "-36000", + "order": "1" + }, + { + "area": "Pacific/Marquesas", + "language": "pt", + "name": "Ilhas Marquesas", + "utc_offset": "-34200", + "order": "2" + }, + { + "area": "Pacific/Gambier", + "language": "pt", + "name": "Ilhas Gambier", + "utc_offset": "-32400", + "order": "3" + }, + { + "area": "America/Tijuana", + "language": "pt", + "name": "Ilha Clipperton", + "utc_offset": "-28800", + "order": "4" + }, + { + "area": "America/Martinique", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "5" + }, + { + "area": "America/Cayenne", + "language": "pt", + "name": "Caiena", + "utc_offset": "-10800", + "order": "6" + }, + { + "area": "Europe/Paris", + "language": "pt", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "7" + }, + { + "area": "Indian/Mayotte", + "language": "pt", + "name": "Maiote", + "utc_offset": "10800", + "order": "8" + }, + { + "area": "Indian/Reunion", + "language": "pt", + "name": "Reunião", + "utc_offset": "14400", + "order": "9" + }, + { + "area": "Indian/Kerguelen", + "language": "pt", + "name": "Ilhas Kerguelen", + "utc_offset": "18000", + "order": "10" + }, + { + "area": "Pacific/Noumea", + "language": "pt", + "name": "Numeá", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Pacific/Wallis", + "language": "pt", + "name": "Wallis", + "utc_offset": "43200", + "order": "12" + } + ], + "ru": [ + { + "area": "Pacific/Tahiti", + "language": "ru", + "name": "Таити, Французская Полинезия", + "utc_offset": "-36000", + "order": "1" + }, + { + "area": "Pacific/Marquesas", + "language": "ru", + "name": "Маркизские острова", + "utc_offset": "-34200", + "order": "2" + }, + { + "area": "Pacific/Gambier", + "language": "ru", + "name": "Острова Гамбье", + "utc_offset": "-32400", + "order": "3" + }, + { + "area": "America/Tijuana", + "language": "ru", + "name": "Остров Клиппертон", + "utc_offset": "-28800", + "order": "4" + }, + { + "area": "America/Martinique", + "language": "ru", + "name": "Атлантическое время (Вест-Индия)", + "utc_offset": "-14400", + "order": "5" + }, + { + "area": "America/Cayenne", + "language": "ru", + "name": "Кайенна", + "utc_offset": "-10800", + "order": "6" + }, + { + "area": "Europe/Paris", + "language": "ru", + "name": "Мадрид, Париж", + "utc_offset": "3600", + "order": "7" + }, + { + "area": "Indian/Mayotte", + "language": "ru", + "name": "Майотта", + "utc_offset": "10800", + "order": "8" + }, + { + "area": "Indian/Reunion", + "language": "ru", + "name": "Реюньон", + "utc_offset": "14400", + "order": "9" + }, + { + "area": "Indian/Kerguelen", + "language": "ru", + "name": "Острова Кергелен", + "utc_offset": "18000", + "order": "10" + }, + { + "area": "Pacific/Noumea", + "language": "ru", + "name": "Нумеа", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Pacific/Wallis", + "language": "ru", + "name": "Уоллис", + "utc_offset": "43200", + "order": "12" + } + ] + }, + "GA": { + "ja": [ + { + "area": "Africa/Libreville", + "language": "ja", + "name": "西中央アフリカ", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "GB": { + "en": [ + { + "area": "Pacific/Pitcairn", + "language": "en", + "name": "Pitcairn Islands", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Anguilla", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "2" + }, + { + "area": "America/Grand_Turk", + "language": "en", + "name": "Eastern Time (US & Canada)", + "utc_offset": "-14400", + "order": "3" + }, + { + "area": "Atlantic/South_Georgia", + "language": "en", + "name": "South Georgia", + "utc_offset": "-7200", + "order": "4" + }, + { + "area": "Europe/London", + "language": "en", + "name": "Dublin, Lisbon, London", + "utc_offset": "0", + "order": "5" + }, + { + "area": "Europe/Gibraltar", + "language": "en", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "6" + }, + { + "area": "Asia/Nicosia", + "language": "en", + "name": "Athens, Bucharest, Istanbul", + "utc_offset": "7200", + "order": "7" + }, + { + "area": "Indian/Chagos", + "language": "en", + "name": "Chagos Archipelago", + "utc_offset": "21600", + "order": "8" + } + ], + "de": [ + { + "area": "Pacific/Pitcairn", + "language": "de", + "name": "Pitcairninseln", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Anguilla", + "language": "de", + "name": "Atlantic Standard Time (Karibik)", + "utc_offset": "-14400", + "order": "2" + }, + { + "area": "America/Grand_Turk", + "language": "de", + "name": "Eastern Standard Time (USA/Kanada)", + "utc_offset": "-14400", + "order": "3" + }, + { + "area": "Atlantic/South_Georgia", + "language": "de", + "name": "Südgeorgien", + "utc_offset": "-7200", + "order": "4" + }, + { + "area": "Europe/London", + "language": "de", + "name": "Dublin, Lissabon, London", + "utc_offset": "0", + "order": "5" + }, + { + "area": "Europe/Gibraltar", + "language": "de", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "6" + }, + { + "area": "Asia/Nicosia", + "language": "de", + "name": "Athen, Bukarest, Istanbul", + "utc_offset": "7200", + "order": "7" + }, + { + "area": "Indian/Chagos", + "language": "de", + "name": "Chagos-Archipel", + "utc_offset": "21600", + "order": "8" + } + ], + "es": [ + { + "area": "Pacific/Pitcairn", + "language": "es", + "name": "Islas Pitcairn", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Anguilla", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "2" + }, + { + "area": "America/Grand_Turk", + "language": "es", + "name": "Horario del Este (EE. UU. y Canadá)", + "utc_offset": "-14400", + "order": "3" + }, + { + "area": "Atlantic/South_Georgia", + "language": "es", + "name": "Georgia del Sur", + "utc_offset": "-7200", + "order": "4" + }, + { + "area": "Europe/London", + "language": "es", + "name": "Dublín, Lisboa, Londres", + "utc_offset": "0", + "order": "5" + }, + { + "area": "Europe/Gibraltar", + "language": "es", + "name": "Madrid, París", + "utc_offset": "3600", + "order": "6" + }, + { + "area": "Asia/Nicosia", + "language": "es", + "name": "Atenas, Bucarest, Estambul", + "utc_offset": "7200", + "order": "7" + }, + { + "area": "Indian/Chagos", + "language": "es", + "name": "Archipiélago de Chagos", + "utc_offset": "21600", + "order": "8" + } + ], + "fr": [ + { + "area": "Pacific/Pitcairn", + "language": "fr", + "name": "Îles Pitcairn", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Anguilla", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "2" + }, + { + "area": "America/Grand_Turk", + "language": "fr", + "name": "Heure de l'Est (É.-U. et Canada)", + "utc_offset": "-14400", + "order": "3" + }, + { + "area": "Atlantic/South_Georgia", + "language": "fr", + "name": "Géorgie du Sud", + "utc_offset": "-7200", + "order": "4" + }, + { + "area": "Europe/London", + "language": "fr", + "name": "Dublin, Lisbonne, Londres", + "utc_offset": "0", + "order": "5" + }, + { + "area": "Europe/Gibraltar", + "language": "fr", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "6" + }, + { + "area": "Asia/Nicosia", + "language": "fr", + "name": "Athènes, Bucarest, Istanbul", + "utc_offset": "7200", + "order": "7" + }, + { + "area": "Indian/Chagos", + "language": "fr", + "name": "Archipel des Chagos", + "utc_offset": "21600", + "order": "8" + } + ], + "it": [ + { + "area": "Pacific/Pitcairn", + "language": "it", + "name": "Isole Pitcairn", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Anguilla", + "language": "it", + "name": "Orario standard atlantico (Caraibi)", + "utc_offset": "-14400", + "order": "2" + }, + { + "area": "America/Grand_Turk", + "language": "it", + "name": "Orario Costa Orientale (USA e Canada)", + "utc_offset": "-14400", + "order": "3" + }, + { + "area": "Atlantic/South_Georgia", + "language": "it", + "name": "Georgia del Sud", + "utc_offset": "-7200", + "order": "4" + }, + { + "area": "Europe/London", + "language": "it", + "name": "Dublino, Lisbona, Londra", + "utc_offset": "0", + "order": "5" + }, + { + "area": "Europe/Gibraltar", + "language": "it", + "name": "Madrid, Parigi", + "utc_offset": "3600", + "order": "6" + }, + { + "area": "Asia/Nicosia", + "language": "it", + "name": "Atene, Bucarest, Istanbul", + "utc_offset": "7200", + "order": "7" + }, + { + "area": "Indian/Chagos", + "language": "it", + "name": "Isole Chagos", + "utc_offset": "21600", + "order": "8" + } + ], + "ja": [ + { + "area": "Pacific/Pitcairn", + "language": "ja", + "name": "ピトケアン諸島", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Anguilla", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "2" + }, + { + "area": "America/Grand_Turk", + "language": "ja", + "name": "東部標準時(米国およびカナダ)", + "utc_offset": "-14400", + "order": "3" + }, + { + "area": "Atlantic/South_Georgia", + "language": "ja", + "name": "サウスジョージア島", + "utc_offset": "-7200", + "order": "4" + }, + { + "area": "Europe/London", + "language": "ja", + "name": "ダブリン、リスボン、ロンドン", + "utc_offset": "0", + "order": "5" + }, + { + "area": "Europe/Gibraltar", + "language": "ja", + "name": "マドリード、パリ", + "utc_offset": "3600", + "order": "6" + }, + { + "area": "Asia/Nicosia", + "language": "ja", + "name": "アテネ、ブカレスト、イスタンブール", + "utc_offset": "7200", + "order": "7" + }, + { + "area": "Indian/Chagos", + "language": "ja", + "name": "チャゴス諸島", + "utc_offset": "21600", + "order": "8" + } + ], + "nl": [ + { + "area": "Pacific/Pitcairn", + "language": "nl", + "name": "Pitcairneilanden", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Anguilla", + "language": "nl", + "name": "Atlantic Standard Time (Caraïben)", + "utc_offset": "-14400", + "order": "2" + }, + { + "area": "America/Grand_Turk", + "language": "nl", + "name": "Eastern Standard Time (VS/Canada)", + "utc_offset": "-14400", + "order": "3" + }, + { + "area": "Atlantic/South_Georgia", + "language": "nl", + "name": "Zuid-Georgia", + "utc_offset": "-7200", + "order": "4" + }, + { + "area": "Europe/London", + "language": "nl", + "name": "Dublin, Lissabon, Londen", + "utc_offset": "0", + "order": "5" + }, + { + "area": "Europe/Gibraltar", + "language": "nl", + "name": "Madrid, Parijs", + "utc_offset": "3600", + "order": "6" + }, + { + "area": "Asia/Nicosia", + "language": "nl", + "name": "Athene, Boekarest, Istanboel", + "utc_offset": "7200", + "order": "7" + }, + { + "area": "Indian/Chagos", + "language": "nl", + "name": "Chagosarchipel", + "utc_offset": "21600", + "order": "8" + } + ], + "pt": [ + { + "area": "Pacific/Pitcairn", + "language": "pt", + "name": "Ilhas Pitcairn", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Anguilla", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "2" + }, + { + "area": "America/Grand_Turk", + "language": "pt", + "name": "Costa Leste (EUA e Canadá)", + "utc_offset": "-14400", + "order": "3" + }, + { + "area": "Atlantic/South_Georgia", + "language": "pt", + "name": "Geórgia do Sul", + "utc_offset": "-7200", + "order": "4" + }, + { + "area": "Europe/London", + "language": "pt", + "name": "Dublim, Lisboa, Londres", + "utc_offset": "0", + "order": "5" + }, + { + "area": "Europe/Gibraltar", + "language": "pt", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "6" + }, + { + "area": "Asia/Nicosia", + "language": "pt", + "name": "Atenas, Bucareste, Istambul", + "utc_offset": "7200", + "order": "7" + }, + { + "area": "Indian/Chagos", + "language": "pt", + "name": "Arquipélago de Chagos", + "utc_offset": "21600", + "order": "8" + } + ], + "ru": [ + { + "area": "Pacific/Pitcairn", + "language": "ru", + "name": "Острова Питкэрн", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Anguilla", + "language": "ru", + "name": "Атлантическое время (Вест-Индия)", + "utc_offset": "-14400", + "order": "2" + }, + { + "area": "America/Grand_Turk", + "language": "ru", + "name": "Восточное время (США и Канада)", + "utc_offset": "-14400", + "order": "3" + }, + { + "area": "Atlantic/South_Georgia", + "language": "ru", + "name": "Южная Георгия", + "utc_offset": "-7200", + "order": "4" + }, + { + "area": "Europe/London", + "language": "ru", + "name": "Дублин, Лиссабон, Лондон", + "utc_offset": "0", + "order": "5" + }, + { + "area": "Europe/Gibraltar", + "language": "ru", + "name": "Мадрид, Париж", + "utc_offset": "3600", + "order": "6" + }, + { + "area": "Asia/Nicosia", + "language": "ru", + "name": "Афины, Бухарест, Стамбул", + "utc_offset": "7200", + "order": "7" + }, + { + "area": "Indian/Chagos", + "language": "ru", + "name": "Архипелаг Чагос", + "utc_offset": "21600", + "order": "8" + } + ] + }, + "GD": { + "en": [ + { + "area": "America/Grenada", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Grenada", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Grenada", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Grenada", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Grenada", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "GF": { + "en": [ + { + "area": "America/Cayenne", + "language": "en", + "name": "Cayenne", + "utc_offset": "-10800", + "order": "0" + } + ], + "de": [ + { + "area": "America/Cayenne", + "language": "de", + "name": "Cayenne", + "utc_offset": "-10800", + "order": "0" + } + ], + "es": [ + { + "area": "America/Cayenne", + "language": "es", + "name": "Cayena", + "utc_offset": "-10800", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Cayenne", + "language": "fr", + "name": "Cayenne", + "utc_offset": "-10800", + "order": "0" + } + ], + "it": [ + { + "area": "America/Cayenne", + "language": "it", + "name": "Caienna", + "utc_offset": "-10800", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Cayenne", + "language": "ja", + "name": "カイエンヌ", + "utc_offset": "-10800", + "order": "0" + } + ], + "nl": [ + { + "area": "America/Cayenne", + "language": "nl", + "name": "Cayenne", + "utc_offset": "-10800", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Cayenne", + "language": "pt", + "name": "Caiena", + "utc_offset": "-10800", + "order": "0" + } + ], + "ru": [ + { + "area": "America/Cayenne", + "language": "ru", + "name": "Кайенна", + "utc_offset": "-10800", + "order": "0" + } + ] + }, + "GG": { + "en": [ + { + "area": "Europe/Guernsey", + "language": "en", + "name": "Dublin, Lisbon, London", + "utc_offset": "0", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Guernsey", + "language": "de", + "name": "Dublin, Lissabon, London", + "utc_offset": "0", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Guernsey", + "language": "es", + "name": "Dublín, Lisboa, Londres", + "utc_offset": "0", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Guernsey", + "language": "fr", + "name": "Dublin, Lisbonne, Londres", + "utc_offset": "0", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Guernsey", + "language": "it", + "name": "Dublino, Lisbona, Londra", + "utc_offset": "0", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Guernsey", + "language": "ja", + "name": "ダブリン、リスボン、ロンドン", + "utc_offset": "0", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Guernsey", + "language": "nl", + "name": "Dublin, Lissabon, Londen", + "utc_offset": "0", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Guernsey", + "language": "pt", + "name": "Dublim, Lisboa, Londres", + "utc_offset": "0", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Guernsey", + "language": "ru", + "name": "Дублин, Лиссабон, Лондон", + "utc_offset": "0", + "order": "0" + } + ] + }, + "GH": { + "en": [ + { + "area": "Africa/Accra", + "language": "en", + "name": "Coordinated Universal Time", + "utc_offset": "0", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Accra", + "language": "de", + "name": "Koordinierte Weltzeit (UTC)", + "utc_offset": "0", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Accra", + "language": "es", + "name": "Tiempo universal coordinado", + "utc_offset": "0", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Accra", + "language": "fr", + "name": "Temps universel coordonné", + "utc_offset": "0", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Accra", + "language": "it", + "name": "Tempo coordinato universale", + "utc_offset": "0", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Accra", + "language": "ja", + "name": "協定世界時", + "utc_offset": "0", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Accra", + "language": "nl", + "name": "Gecoördineerde universele tijd (UTC)", + "utc_offset": "0", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Accra", + "language": "pt", + "name": "Hora Universal Coordenada", + "utc_offset": "0", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Accra", + "language": "ru", + "name": "Всемирное координированное время", + "utc_offset": "0", + "order": "0" + } + ] + }, + "GI": { + "en": [ + { + "area": "Europe/Gibraltar", + "language": "en", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Gibraltar", + "language": "de", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Gibraltar", + "language": "es", + "name": "Madrid, París", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Gibraltar", + "language": "fr", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Gibraltar", + "language": "it", + "name": "Madrid, Parigi", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Gibraltar", + "language": "ja", + "name": "マドリード、パリ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Gibraltar", + "language": "nl", + "name": "Madrid, Parijs", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Gibraltar", + "language": "pt", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Gibraltar", + "language": "ru", + "name": "Мадрид, Париж", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "GL": { + "en": [ + { + "area": "America/Thule", + "language": "en", + "name": "Thule", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "en", + "name": "Nuuk", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "en", + "name": "Ittoqqortoormiit", + "utc_offset": "-3600", + "order": "3" + } + ], + "de": [ + { + "area": "America/Thule", + "language": "de", + "name": "Thule", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "de", + "name": "Nuuk", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "de", + "name": "Ittoqqortoormiit", + "utc_offset": "-3600", + "order": "3" + } + ], + "es": [ + { + "area": "America/Thule", + "language": "es", + "name": "Thule", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "es", + "name": "Nuuk", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "es", + "name": "Ittoqqortoormiit", + "utc_offset": "-3600", + "order": "3" + } + ], + "fr": [ + { + "area": "America/Thule", + "language": "fr", + "name": "Thulé", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "fr", + "name": "Nuuk", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "fr", + "name": "Ittoqqortoormiit", + "utc_offset": "-3600", + "order": "3" + } + ], + "it": [ + { + "area": "America/Thule", + "language": "it", + "name": "Thule", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "it", + "name": "Nuuk", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "it", + "name": "Ittoqqortoormiit", + "utc_offset": "-3600", + "order": "3" + } + ], + "ja": [ + { + "area": "America/Thule", + "language": "ja", + "name": "トゥーレ", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "ja", + "name": "ゴッドホープ", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "ja", + "name": "スコレスビスン", + "utc_offset": "-3600", + "order": "3" + }, + { + "area": "America/Danmarkshavn", + "language": "ja", + "name": "デンマークシャウン", + "utc_offset": "0", + "order": "4" + } + ], + "nl": [ + { + "area": "America/Thule", + "language": "nl", + "name": "Thule", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "nl", + "name": "Nuuk", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "nl", + "name": "Ittoqqortoormiit", + "utc_offset": "-3600", + "order": "3" + } + ], + "pt": [ + { + "area": "America/Thule", + "language": "pt", + "name": "Thule", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "pt", + "name": "Nuuk", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "pt", + "name": "Ittoqqortoormiit", + "utc_offset": "-3600", + "order": "3" + } + ], + "ru": [ + { + "area": "America/Thule", + "language": "ru", + "name": "Туле", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "America/Godthab", + "language": "ru", + "name": "Нуук", + "utc_offset": "-10800", + "order": "2" + }, + { + "area": "America/Scoresbysund", + "language": "ru", + "name": "Иттокортоормиит", + "utc_offset": "-3600", + "order": "3" + } + ] + }, + "GP": { + "en": [ + { + "area": "America/Guadeloupe", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Guadeloupe", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Guadeloupe", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Guadeloupe", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Guadeloupe", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "GQ": { + "ja": [ + { + "area": "Africa/Malabo", + "language": "ja", + "name": "西中央アフリカ", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "GR": { + "en": [ + { + "area": "Europe/Athens", + "language": "en", + "name": "Athens, Bucharest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Athens", + "language": "de", + "name": "Athen, Bukarest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Athens", + "language": "es", + "name": "Atenas, Bucarest, Estambul", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Athens", + "language": "fr", + "name": "Athènes, Bucarest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Athens", + "language": "it", + "name": "Atene, Bucarest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Athens", + "language": "ja", + "name": "アテネ、ブカレスト、イスタンブール", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Athens", + "language": "nl", + "name": "Athene, Boekarest, Istanboel", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Athens", + "language": "pt", + "name": "Atenas, Bucareste, Istambul", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Athens", + "language": "ru", + "name": "Афины, Бухарест, Стамбул", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "GT": { + "en": [ + { + "area": "America/Guatemala", + "language": "en", + "name": "Central America", + "utc_offset": "-21600", + "order": "0" + } + ], + "es": [ + { + "area": "America/Guatemala", + "language": "es", + "name": "Centroamérica", + "utc_offset": "-21600", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Guatemala", + "language": "fr", + "name": "Amérique centrale", + "utc_offset": "-21600", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Guatemala", + "language": "ja", + "name": "中央アメリカ", + "utc_offset": "-21600", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Guatemala", + "language": "pt", + "name": "América Central", + "utc_offset": "-21600", + "order": "0" + } + ] + }, + "GU": { + "en": [ + { + "area": "Pacific/Guam", + "language": "en", + "name": "Guam, Port Moresby", + "utc_offset": "36000", + "order": "0" + } + ], + "es": [ + { + "area": "Pacific/Guam", + "language": "es", + "name": "Guam, Puerto Moresby", + "utc_offset": "36000", + "order": "0" + } + ], + "fr": [ + { + "area": "Pacific/Guam", + "language": "fr", + "name": "Guam, Port Moresby", + "utc_offset": "36000", + "order": "0" + } + ], + "ja": [ + { + "area": "Pacific/Guam", + "language": "ja", + "name": "グアム、ポートモレスビー", + "utc_offset": "36000", + "order": "0" + } + ], + "pt": [ + { + "area": "Pacific/Guam", + "language": "pt", + "name": "Guam, Porto Moresby", + "utc_offset": "36000", + "order": "0" + } + ] + }, + "GY": { + "en": [ + { + "area": "America/Guyana", + "language": "en", + "name": "Guyana", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Guyana", + "language": "es", + "name": "Guyana", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Guyana", + "language": "fr", + "name": "Guyana", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Guyana", + "language": "ja", + "name": "ガイアナ", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Guyana", + "language": "pt", + "name": "Guiana", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "HK": { + "en": [ + { + "area": "Asia/Hong_Kong", + "language": "en", + "name": "Hong Kong, Makassar", + "utc_offset": "28800", + "order": "0" + } + ], + "de": [ + { + "area": "Asia/Hong_Kong", + "language": "de", + "name": "Hongkong, Makassar", + "utc_offset": "28800", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Hong_Kong", + "language": "es", + "name": "Hong Kong, Makassar", + "utc_offset": "28800", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Hong_Kong", + "language": "fr", + "name": "Hong Kong, Makassar", + "utc_offset": "28800", + "order": "0" + } + ], + "it": [ + { + "area": "Asia/Hong_Kong", + "language": "it", + "name": "Hong Kong, Makassar", + "utc_offset": "28800", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Hong_Kong", + "language": "ja", + "name": "香港、マカッサル", + "utc_offset": "28800", + "order": "0" + } + ], + "nl": [ + { + "area": "Asia/Hong_Kong", + "language": "nl", + "name": "Hongkong, Makassar", + "utc_offset": "28800", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Hong_Kong", + "language": "pt", + "name": "Hong Kong, Macáçar", + "utc_offset": "28800", + "order": "0" + } + ], + "ru": [ + { + "area": "Asia/Hong_Kong", + "language": "ru", + "name": "Гонконг, Макасар", + "utc_offset": "28800", + "order": "0" + } + ] + }, + "HN": { + "en": [ + { + "area": "America/Tegucigalpa", + "language": "en", + "name": "Central America", + "utc_offset": "-21600", + "order": "0" + } + ], + "es": [ + { + "area": "America/Tegucigalpa", + "language": "es", + "name": "Centroamérica", + "utc_offset": "-21600", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Tegucigalpa", + "language": "fr", + "name": "Amérique centrale", + "utc_offset": "-21600", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Tegucigalpa", + "language": "ja", + "name": "中央アメリカ", + "utc_offset": "-21600", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Tegucigalpa", + "language": "pt", + "name": "América Central", + "utc_offset": "-21600", + "order": "0" + } + ] + }, + "HR": { + "en": [ + { + "area": "Europe/Zagreb", + "language": "en", + "name": "Sarajevo, Warsaw, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Zagreb", + "language": "de", + "name": "Sarajewo, Warschau, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Zagreb", + "language": "es", + "name": "Sarajevo, Varsovia, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Zagreb", + "language": "fr", + "name": "Sarajevo, Varsovie, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Zagreb", + "language": "it", + "name": "Sarajevo, Varsavia, Zagabria", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Zagreb", + "language": "ja", + "name": "サラエボ、ワルシャワ、ザグレブ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Zagreb", + "language": "nl", + "name": "Sarajevo, Warschau, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Zagreb", + "language": "pt", + "name": "Saraievo, Varsóvia, Zagrebe", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Zagreb", + "language": "ru", + "name": "Сараево, Варшава, Загреб", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "HT": { + "en": [ + { + "area": "America/Port-au-Prince", + "language": "en", + "name": "Havana, Port-au-Prince", + "utc_offset": "-18000", + "order": "0" + } + ], + "es": [ + { + "area": "America/Port-au-Prince", + "language": "es", + "name": "La Habana, Puerto Príncipe", + "utc_offset": "-18000", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Port-au-Prince", + "language": "fr", + "name": "La Havane, Port-au-Prince", + "utc_offset": "-18000", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Port-au-Prince", + "language": "ja", + "name": "ハバナ、ポルトープランス", + "utc_offset": "-18000", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Port-au-Prince", + "language": "pt", + "name": "Havana, Porto Príncipe", + "utc_offset": "-18000", + "order": "0" + } + ] + }, + "HU": { + "en": [ + { + "area": "Europe/Budapest", + "language": "en", + "name": "Belgrade, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Budapest", + "language": "de", + "name": "Belgrad, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Budapest", + "language": "es", + "name": "Belgrado, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Budapest", + "language": "fr", + "name": "Belgrade, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Budapest", + "language": "it", + "name": "Belgrado, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Budapest", + "language": "ja", + "name": "ベオグラード、ブダペスト", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Budapest", + "language": "nl", + "name": "Belgrado, Boedapest", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Budapest", + "language": "pt", + "name": "Belgrado, Budapeste", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Budapest", + "language": "ru", + "name": "Белград, Будапешт", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "ID": { + "en": [ + { + "area": "Asia/Jakarta", + "language": "en", + "name": "Bangkok, Hanoi, Pontianak, Jakarta", + "utc_offset": "25200", + "order": "1" + }, + { + "area": "Asia/Makassar", + "language": "en", + "name": "Hong Kong, Makassar", + "utc_offset": "28800", + "order": "2" + }, + { + "area": "Asia/Jayapura", + "language": "en", + "name": "Jayapura", + "utc_offset": "32400", + "order": "3" + } + ], + "es": [ + { + "area": "Asia/Jakarta", + "language": "es", + "name": "Bangkok, Hanói, Pontianak, Yakarta", + "utc_offset": "25200", + "order": "1" + }, + { + "area": "Asia/Makassar", + "language": "es", + "name": "Hong Kong, Makassar", + "utc_offset": "28800", + "order": "2" + }, + { + "area": "Asia/Jayapura", + "language": "es", + "name": "Jayapura", + "utc_offset": "32400", + "order": "3" + } + ], + "fr": [ + { + "area": "Asia/Jakarta", + "language": "fr", + "name": "Bangkok, Hanoï, Pontianak, Jakarta", + "utc_offset": "25200", + "order": "1" + }, + { + "area": "Asia/Makassar", + "language": "fr", + "name": "Hong Kong, Makassar", + "utc_offset": "28800", + "order": "2" + }, + { + "area": "Asia/Jayapura", + "language": "fr", + "name": "Jayapura", + "utc_offset": "32400", + "order": "3" + } + ], + "ja": [ + { + "area": "Asia/Jakarta", + "language": "ja", + "name": "バンコク、ハノイ、ジャカルタ", + "utc_offset": "25200", + "order": "1" + }, + { + "area": "Asia/Makassar", + "language": "ja", + "name": "香港、マカッサル", + "utc_offset": "28800", + "order": "2" + }, + { + "area": "Asia/Jayapura", + "language": "ja", + "name": "ジャヤプラ", + "utc_offset": "32400", + "order": "3" + } + ], + "pt": [ + { + "area": "Asia/Jakarta", + "language": "pt", + "name": "Bangkok, Hanoi, Pontianak, Jacarta", + "utc_offset": "25200", + "order": "1" + }, + { + "area": "Asia/Makassar", + "language": "pt", + "name": "Hong Kong, Macáçar", + "utc_offset": "28800", + "order": "2" + }, + { + "area": "Asia/Jayapura", + "language": "pt", + "name": "Jayapura", + "utc_offset": "32400", + "order": "3" + } + ] + }, + "IE": { + "en": [ + { + "area": "Europe/Dublin", + "language": "en", + "name": "Dublin, Lisbon, London", + "utc_offset": "0", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Dublin", + "language": "de", + "name": "Dublin, Lissabon, London", + "utc_offset": "0", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Dublin", + "language": "es", + "name": "Dublín, Lisboa, Londres", + "utc_offset": "0", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Dublin", + "language": "fr", + "name": "Dublin, Lisbonne, Londres", + "utc_offset": "0", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Dublin", + "language": "it", + "name": "Dublino, Lisbona, Londra", + "utc_offset": "0", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Dublin", + "language": "ja", + "name": "ダブリン、リスボン、ロンドン", + "utc_offset": "0", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Dublin", + "language": "nl", + "name": "Dublin, Lissabon, Londen", + "utc_offset": "0", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Dublin", + "language": "pt", + "name": "Dublim, Lisboa, Londres", + "utc_offset": "0", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Dublin", + "language": "ru", + "name": "Дублин, Лиссабон, Лондон", + "utc_offset": "0", + "order": "0" + } + ] + }, + "IL": { + "ja": [ + { + "area": "Asia/Jerusalem", + "language": "ja", + "name": "エルサレム", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "IM": { + "en": [ + { + "area": "Europe/Isle_of_Man", + "language": "en", + "name": "Dublin, Lisbon, London", + "utc_offset": "0", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Isle_of_Man", + "language": "de", + "name": "Dublin, Lissabon, London", + "utc_offset": "0", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Isle_of_Man", + "language": "es", + "name": "Dublín, Lisboa, Londres", + "utc_offset": "0", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Isle_of_Man", + "language": "fr", + "name": "Dublin, Lisbonne, Londres", + "utc_offset": "0", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Isle_of_Man", + "language": "it", + "name": "Dublino, Lisbona, Londra", + "utc_offset": "0", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Isle_of_Man", + "language": "ja", + "name": "ダブリン、リスボン、ロンドン", + "utc_offset": "0", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Isle_of_Man", + "language": "nl", + "name": "Dublin, Lissabon, Londen", + "utc_offset": "0", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Isle_of_Man", + "language": "pt", + "name": "Dublim, Lisboa, Londres", + "utc_offset": "0", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Isle_of_Man", + "language": "ru", + "name": "Дублин, Лиссабон, Лондон", + "utc_offset": "0", + "order": "0" + } + ] + }, + "IN": { + "en": [ + { + "area": "Asia/Kolkata", + "language": "en", + "name": "Calcutta, Mumbai, New Delhi", + "utc_offset": "19800", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Kolkata", + "language": "es", + "name": "Calcuta, Bombay, Nueva Delhi", + "utc_offset": "19800", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Kolkata", + "language": "fr", + "name": "Calcutta, Mumbai, New Delhi", + "utc_offset": "19800", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Kolkata", + "language": "ja", + "name": "コルカタ、ムンバイ、ニューデリー", + "utc_offset": "19800", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Kolkata", + "language": "pt", + "name": "Calcutá, Mumbai, Nova Deli", + "utc_offset": "19800", + "order": "0" + } + ] + }, + "IQ": { + "ja": [ + { + "area": "Asia/Baghdad", + "language": "ja", + "name": "バグダッド", + "utc_offset": "10800", + "order": "0" + } + ] + }, + "IR": { + "ja": [ + { + "area": "Asia/Tehran", + "language": "ja", + "name": "テヘラン", + "utc_offset": "12600", + "order": "0" + } + ] + }, + "IS": { + "en": [ + { + "area": "Atlantic/Reykjavik", + "language": "en", + "name": "Monrovia, Reykjavik", + "utc_offset": "0", + "order": "0" + } + ], + "de": [ + { + "area": "Atlantic/Reykjavik", + "language": "de", + "name": "Monrovia, Reykjavik", + "utc_offset": "0", + "order": "0" + } + ], + "es": [ + { + "area": "Atlantic/Reykjavik", + "language": "es", + "name": "Monrovia, Reikiavik", + "utc_offset": "0", + "order": "0" + } + ], + "fr": [ + { + "area": "Atlantic/Reykjavik", + "language": "fr", + "name": "Monrovia, Reykjavik", + "utc_offset": "0", + "order": "0" + } + ], + "it": [ + { + "area": "Atlantic/Reykjavik", + "language": "it", + "name": "Monrovia, Reykjavík", + "utc_offset": "0", + "order": "0" + } + ], + "ja": [ + { + "area": "Atlantic/Reykjavik", + "language": "ja", + "name": "モンロビア、レイキャビク", + "utc_offset": "0", + "order": "0" + } + ], + "nl": [ + { + "area": "Atlantic/Reykjavik", + "language": "nl", + "name": "Monrovia, Reykjavik", + "utc_offset": "0", + "order": "0" + } + ], + "pt": [ + { + "area": "Atlantic/Reykjavik", + "language": "pt", + "name": "Monróvia, Reiquiavique", + "utc_offset": "0", + "order": "0" + } + ], + "ru": [ + { + "area": "Atlantic/Reykjavik", + "language": "ru", + "name": "Монровия, Рейкьявик", + "utc_offset": "0", + "order": "0" + } + ] + }, + "IT": { + "en": [ + { + "area": "Europe/Rome", + "language": "en", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Rome", + "language": "de", + "name": "Amsterdam, Berlin, Rom", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Rome", + "language": "es", + "name": "Ámsterdam, Berlín, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Rome", + "language": "fr", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Rome", + "language": "it", + "name": "Amsterdam, Berlino, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Rome", + "language": "ja", + "name": "アムステルダム、ベルリン、ローマ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Rome", + "language": "nl", + "name": "Amsterdam, Berlijn, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Rome", + "language": "pt", + "name": "Amesterdão, Berlim, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Rome", + "language": "ru", + "name": "Амстердам, Берлин, Рим", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "JE": { + "en": [ + { + "area": "Europe/Jersey", + "language": "en", + "name": "Dublin, Lisbon, London", + "utc_offset": "0", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Jersey", + "language": "de", + "name": "Dublin, Lissabon, London", + "utc_offset": "0", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Jersey", + "language": "es", + "name": "Dublín, Lisboa, Londres", + "utc_offset": "0", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Jersey", + "language": "fr", + "name": "Dublin, Lisbonne, Londres", + "utc_offset": "0", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Jersey", + "language": "it", + "name": "Dublino, Lisbona, Londra", + "utc_offset": "0", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Jersey", + "language": "ja", + "name": "ダブリン、リスボン、ロンドン", + "utc_offset": "0", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Jersey", + "language": "nl", + "name": "Dublin, Lissabon, Londen", + "utc_offset": "0", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Jersey", + "language": "pt", + "name": "Dublim, Lisboa, Londres", + "utc_offset": "0", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Jersey", + "language": "ru", + "name": "Дублин, Лиссабон, Лондон", + "utc_offset": "0", + "order": "0" + } + ] + }, + "JM": { + "en": [ + { + "area": "America/Jamaica", + "language": "en", + "name": "Cayman, Jamaica", + "utc_offset": "-18000", + "order": "0" + } + ], + "es": [ + { + "area": "America/Jamaica", + "language": "es", + "name": "Islas Caimán, Jamaica", + "utc_offset": "-18000", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Jamaica", + "language": "fr", + "name": "Îles Caïmans, Jamaïque", + "utc_offset": "-18000", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Jamaica", + "language": "ja", + "name": "ケイマン、ジャマイカ", + "utc_offset": "-18000", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Jamaica", + "language": "pt", + "name": "Ilhas Caimã, Jamaica", + "utc_offset": "-18000", + "order": "0" + } + ] + }, + "JO": { + "en": [ + { + "area": "Asia/Amman", + "language": "en", + "name": "Amman", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Amman", + "language": "es", + "name": "Amán", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Amman", + "language": "fr", + "name": "Amman", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Amman", + "language": "ja", + "name": "アンマン", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Amman", + "language": "pt", + "name": "Amã", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "JP": { + "en": [ + { + "area": "Asia/Tokyo", + "language": "en", + "name": "Osaka, Sapporo, Tokyo", + "utc_offset": "32400", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Tokyo", + "language": "ja", + "name": "大阪、札幌、東京", + "utc_offset": "32400", + "order": "0" + } + ] + }, + "KE": { + "ja": [ + { + "area": "Africa/Nairobi", + "language": "ja", + "name": "アスマラ、ジブチ、ナイロビ", + "utc_offset": "10800", + "order": "0" + } + ] + }, + "KN": { + "en": [ + { + "area": "America/St_Kitts", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/St_Kitts", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/St_Kitts", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/St_Kitts", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/St_Kitts", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "KR": { + "en": [ + { + "area": "Asia/Seoul", + "language": "en", + "name": "Seoul", + "utc_offset": "32400", + "order": "0" + } + ], + "de": [ + { + "area": "Asia/Seoul", + "language": "de", + "name": "Seoul", + "utc_offset": "32400", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Seoul", + "language": "es", + "name": "Seúl", + "utc_offset": "32400", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Seoul", + "language": "fr", + "name": "Séoul", + "utc_offset": "32400", + "order": "0" + } + ], + "it": [ + { + "area": "Asia/Seoul", + "language": "it", + "name": "Seul", + "utc_offset": "32400", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Seoul", + "language": "ja", + "name": "ソウル", + "utc_offset": "32400", + "order": "0" + } + ], + "nl": [ + { + "area": "Asia/Seoul", + "language": "nl", + "name": "Seoul", + "utc_offset": "32400", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Seoul", + "language": "pt", + "name": "Seul", + "utc_offset": "32400", + "order": "0" + } + ], + "ru": [ + { + "area": "Asia/Seoul", + "language": "ru", + "name": "Сеул", + "utc_offset": "32400", + "order": "0" + } + ] + }, + "KW": { + "en": [ + { + "area": "Asia/Kuwait", + "language": "en", + "name": "Kuwait, Riyadh", + "utc_offset": "10800", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Kuwait", + "language": "es", + "name": "Kuwait, Riad", + "utc_offset": "10800", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Kuwait", + "language": "fr", + "name": "Koweït, Riyad", + "utc_offset": "10800", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Kuwait", + "language": "ja", + "name": "クウェート、リヤド", + "utc_offset": "10800", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Kuwait", + "language": "pt", + "name": "Kuwait, Riade", + "utc_offset": "10800", + "order": "0" + } + ] + }, + "KY": { + "en": [ + { + "area": "America/Cayman", + "language": "en", + "name": "Cayman, Jamaica", + "utc_offset": "-18000", + "order": "0" + } + ], + "es": [ + { + "area": "America/Cayman", + "language": "es", + "name": "Islas Caimán, Jamaica", + "utc_offset": "-18000", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Cayman", + "language": "fr", + "name": "Îles Caïmans, Jamaïque", + "utc_offset": "-18000", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Cayman", + "language": "ja", + "name": "ケイマン、ジャマイカ", + "utc_offset": "-18000", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Cayman", + "language": "pt", + "name": "Ilhas Caimã, Jamaica", + "utc_offset": "-18000", + "order": "0" + } + ] + }, + "KZ": { + "ja": [ + { + "area": "Asia/Aqtau", + "language": "ja", + "name": "アクトベ、オラル", + "utc_offset": "18000", + "order": "1" + }, + { + "area": "Asia/Almaty", + "language": "ja", + "name": "アルマティ", + "utc_offset": "21600", + "order": "2" + } + ] + }, + "LB": { + "ja": [ + { + "area": "Asia/Beirut", + "language": "ja", + "name": "ベイルート", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "LC": { + "en": [ + { + "area": "America/St_Lucia", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/St_Lucia", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/St_Lucia", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/St_Lucia", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/St_Lucia", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "LI": { + "en": [ + { + "area": "Europe/Vaduz", + "language": "en", + "name": "Stockholm, Vienna", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Vaduz", + "language": "de", + "name": "Stockholm, Wien", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Vaduz", + "language": "es", + "name": "Estocolmo, Viena", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Vaduz", + "language": "fr", + "name": "Stockholm, Vienne", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Vaduz", + "language": "it", + "name": "Stoccolma, Vienna", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Vaduz", + "language": "ja", + "name": "ストックホルム、ウィーン", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Vaduz", + "language": "nl", + "name": "Stockholm, Wenen", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Vaduz", + "language": "pt", + "name": "Estocolmo, Viena", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Vaduz", + "language": "ru", + "name": "Стокгольм, Вена", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "LK": { + "ja": [ + { + "area": "Asia/Colombo", + "language": "ja", + "name": "スリジャヤワルデネプラ", + "utc_offset": "19800", + "order": "0" + } + ] + }, + "LR": { + "ja": [ + { + "area": "Africa/Monrovia", + "language": "ja", + "name": "モンロビア、レイキャビク", + "utc_offset": "0", + "order": "0" + } + ] + }, + "LS": { + "en": [ + { + "area": "Africa/Maseru", + "language": "en", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Maseru", + "language": "de", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Maseru", + "language": "es", + "name": "Maseru, Mbabane, Johannesburgo", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Maseru", + "language": "fr", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Maseru", + "language": "it", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Maseru", + "language": "ja", + "name": "マセル、ムババーネ、ヨハネスブルグ", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Maseru", + "language": "nl", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Maseru", + "language": "pt", + "name": "Maseru, Mebabane, Joanesburgo", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Maseru", + "language": "ru", + "name": "Масеру, Мбабане, Йоханнесбург", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "LT": { + "en": [ + { + "area": "Europe/Vilnius", + "language": "en", + "name": "Sofia, Tallinn, Vilnius", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Vilnius", + "language": "de", + "name": "Sofia, Tallinn, Wilna", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Vilnius", + "language": "es", + "name": "Sofía, Tallin, Vilna", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Vilnius", + "language": "fr", + "name": "Sofia, Tallinn, Vilnius", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Vilnius", + "language": "it", + "name": "Sofia, Tallinn, Vilnius", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Vilnius", + "language": "ja", + "name": "ソフィア、タリン、ビリニュス", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Vilnius", + "language": "nl", + "name": "Sofia, Tallinn, Vilnius", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Vilnius", + "language": "pt", + "name": "Sófia, Taline, Vílnius", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Vilnius", + "language": "ru", + "name": "София, Таллинн, Вильнюс", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "LU": { + "en": [ + { + "area": "Europe/Luxembourg", + "language": "en", + "name": "Brussels, Copenhagen", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Luxembourg", + "language": "de", + "name": "Brüssel, Kopenhagen", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Luxembourg", + "language": "es", + "name": "Bruselas, Copenhague", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Luxembourg", + "language": "fr", + "name": "Bruxelles, Copenhague", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Luxembourg", + "language": "it", + "name": "Bruxelles, Copenhagen", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Luxembourg", + "language": "ja", + "name": "ブリュッセル、コペンハーゲン", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Luxembourg", + "language": "nl", + "name": "Brussel, Kopenhagen", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Luxembourg", + "language": "pt", + "name": "Bruxelas, Copenhaga", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Luxembourg", + "language": "ru", + "name": "Брюссель, Копенгаген", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "LV": { + "en": [ + { + "area": "Europe/Riga", + "language": "en", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Riga", + "language": "de", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Riga", + "language": "es", + "name": "Helsinki, Kaliningrado", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Riga", + "language": "fr", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Riga", + "language": "it", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Riga", + "language": "ja", + "name": "ヘルシンキ、カリーニングラード", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Riga", + "language": "nl", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Riga", + "language": "pt", + "name": "Helsínquia, Caliningrado", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Riga", + "language": "ru", + "name": "Хельсинки, Калининград", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "MA": { + "ja": [ + { + "area": "Africa/Casablanca", + "language": "ja", + "name": "カサブランカ", + "utc_offset": "0", + "order": "0" + } + ] + }, + "MC": { + "en": [ + { + "area": "Europe/Monaco", + "language": "en", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Monaco", + "language": "de", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Monaco", + "language": "es", + "name": "Madrid, París", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Monaco", + "language": "fr", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Monaco", + "language": "it", + "name": "Madrid, Parigi", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Monaco", + "language": "ja", + "name": "マドリード、パリ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Monaco", + "language": "nl", + "name": "Madrid, Parijs", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Monaco", + "language": "pt", + "name": "Madrid, Paris", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Monaco", + "language": "ru", + "name": "Мадрид, Париж", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "ME": { + "en": [ + { + "area": "Europe/Podgorica", + "language": "en", + "name": "Belgrade, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Podgorica", + "language": "de", + "name": "Belgrad, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Podgorica", + "language": "es", + "name": "Belgrado, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Podgorica", + "language": "fr", + "name": "Belgrade, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Podgorica", + "language": "it", + "name": "Belgrado, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Podgorica", + "language": "ja", + "name": "ベオグラード、ブダペスト", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Podgorica", + "language": "nl", + "name": "Belgrado, Boedapest", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Podgorica", + "language": "pt", + "name": "Belgrado, Budapeste", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Podgorica", + "language": "ru", + "name": "Белград, Будапешт", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "MK": { + "en": [ + { + "area": "Europe/Skopje", + "language": "en", + "name": "Sarajevo, Warsaw, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Skopje", + "language": "de", + "name": "Sarajewo, Warschau, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Skopje", + "language": "es", + "name": "Sarajevo, Varsovia, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Skopje", + "language": "fr", + "name": "Sarajevo, Varsovie, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Skopje", + "language": "it", + "name": "Sarajevo, Varsavia, Zagabria", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Skopje", + "language": "ja", + "name": "サラエボ、ワルシャワ、ザグレブ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Skopje", + "language": "nl", + "name": "Sarajevo, Warschau, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Skopje", + "language": "pt", + "name": "Saraievo, Varsóvia, Zagrebe", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Skopje", + "language": "ru", + "name": "Сараево, Варшава, Загреб", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "ML": { + "en": [ + { + "area": "Africa/Bamako", + "language": "en", + "name": "Coordinated Universal Time", + "utc_offset": "0", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Bamako", + "language": "de", + "name": "Koordinierte Weltzeit (UTC)", + "utc_offset": "0", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Bamako", + "language": "es", + "name": "Tiempo universal coordinado", + "utc_offset": "0", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Bamako", + "language": "fr", + "name": "Temps universel coordonné", + "utc_offset": "0", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Bamako", + "language": "it", + "name": "Tempo coordinato universale", + "utc_offset": "0", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Bamako", + "language": "ja", + "name": "協定世界時", + "utc_offset": "0", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Bamako", + "language": "nl", + "name": "Gecoördineerde universele tijd (UTC)", + "utc_offset": "0", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Bamako", + "language": "pt", + "name": "Hora Universal Coordenada", + "utc_offset": "0", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Bamako", + "language": "ru", + "name": "Всемирное координированное время", + "utc_offset": "0", + "order": "0" + } + ] + }, + "MM": { + "ja": [ + { + "area": "Asia/Rangoon", + "language": "ja", + "name": "ヤンゴン(ラングーン)", + "utc_offset": "23400", + "order": "0" + } + ] + }, + "MN": { + "ja": [ + { + "area": "Asia/Hovd", + "language": "ja", + "name": "ホブド", + "utc_offset": "25200", + "order": "1" + }, + { + "area": "Asia/Choibalsan", + "language": "ja", + "name": "ウランバートル", + "utc_offset": "28800", + "order": "2" + } + ] + }, + "MO": { + "en": [ + { + "area": "Asia/Macau", + "language": "en", + "name": "Hong Kong, Makassar", + "utc_offset": "28800", + "order": "0" + } + ], + "de": [ + { + "area": "Asia/Macau", + "language": "de", + "name": "Hongkong, Makassar", + "utc_offset": "28800", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Macau", + "language": "es", + "name": "Hong Kong, Makassar", + "utc_offset": "28800", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Macau", + "language": "fr", + "name": "Hong Kong, Makassar", + "utc_offset": "28800", + "order": "0" + } + ], + "it": [ + { + "area": "Asia/Macau", + "language": "it", + "name": "Hong Kong, Makassar", + "utc_offset": "28800", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Macau", + "language": "ja", + "name": "香港、マカッサル", + "utc_offset": "28800", + "order": "0" + } + ], + "nl": [ + { + "area": "Asia/Macau", + "language": "nl", + "name": "Hongkong, Makassar", + "utc_offset": "28800", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Macau", + "language": "pt", + "name": "Hong Kong, Macáçar", + "utc_offset": "28800", + "order": "0" + } + ], + "ru": [ + { + "area": "Asia/Macau", + "language": "ru", + "name": "Гонконг, Макасар", + "utc_offset": "28800", + "order": "0" + } + ] + }, + "MQ": { + "en": [ + { + "area": "America/Martinique", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "de": [ + { + "area": "America/Martinique", + "language": "de", + "name": "Atlantic Standard Time (Karibik)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Martinique", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Martinique", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "it": [ + { + "area": "America/Martinique", + "language": "it", + "name": "Orario standard atlantico (Caraibi)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Martinique", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "nl": [ + { + "area": "America/Martinique", + "language": "nl", + "name": "Atlantic Standard Time (Caraïben)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Martinique", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ru": [ + { + "area": "America/Martinique", + "language": "ru", + "name": "Атлантическое время (Вест-Индия)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "MR": { + "en": [ + { + "area": "Africa/Nouakchott", + "language": "en", + "name": "Coordinated Universal Time", + "utc_offset": "0", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Nouakchott", + "language": "de", + "name": "Koordinierte Weltzeit (UTC)", + "utc_offset": "0", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Nouakchott", + "language": "es", + "name": "Tiempo universal coordinado", + "utc_offset": "0", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Nouakchott", + "language": "fr", + "name": "Temps universel coordonné", + "utc_offset": "0", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Nouakchott", + "language": "it", + "name": "Tempo coordinato universale", + "utc_offset": "0", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Nouakchott", + "language": "ja", + "name": "協定世界時", + "utc_offset": "0", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Nouakchott", + "language": "nl", + "name": "Gecoördineerde universele tijd (UTC)", + "utc_offset": "0", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Nouakchott", + "language": "pt", + "name": "Hora Universal Coordenada", + "utc_offset": "0", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Nouakchott", + "language": "ru", + "name": "Всемирное координированное время", + "utc_offset": "0", + "order": "0" + } + ] + }, + "MS": { + "en": [ + { + "area": "America/Montserrat", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Montserrat", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Montserrat", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Montserrat", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Montserrat", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "MT": { + "en": [ + { + "area": "Europe/Malta", + "language": "en", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Malta", + "language": "de", + "name": "Amsterdam, Berlin, Rom", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Malta", + "language": "es", + "name": "Ámsterdam, Berlín, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Malta", + "language": "fr", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Malta", + "language": "it", + "name": "Amsterdam, Berlino, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Malta", + "language": "ja", + "name": "アムステルダム、ベルリン、ローマ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Malta", + "language": "nl", + "name": "Amsterdam, Berlijn, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Malta", + "language": "pt", + "name": "Amesterdão, Berlim, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Malta", + "language": "ru", + "name": "Амстердам, Берлин, Рим", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "MX": { + "en": [ + { + "area": "America/Santa_Isabel", + "language": "en", + "name": "Tijuana, Baja California", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Chihuahua", + "language": "en", + "name": "Chihuahua, La Paz, Mazatlan", + "utc_offset": "-25200", + "order": "2" + }, + { + "area": "America/Hermosillo", + "language": "en", + "name": "Hermosillo", + "utc_offset": "-25200", + "order": "3" + }, + { + "area": "America/Mexico_City", + "language": "en", + "name": "Guadalajara, Mexico City", + "utc_offset": "-21600", + "order": "4" + }, + { + "area": "America/Monterrey", + "language": "en", + "name": "Monterrey", + "utc_offset": "-21600", + "order": "5" + } + ], + "es": [ + { + "area": "America/Santa_Isabel", + "language": "es", + "name": "Tijuana, Baja California", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Chihuahua", + "language": "es", + "name": "Chihuahua, La Paz, Mazatlán", + "utc_offset": "-25200", + "order": "2" + }, + { + "area": "America/Hermosillo", + "language": "es", + "name": "Hermosillo", + "utc_offset": "-25200", + "order": "3" + }, + { + "area": "America/Mexico_City", + "language": "es", + "name": "Guadalajara, Ciudad de México", + "utc_offset": "-21600", + "order": "4" + }, + { + "area": "America/Monterrey", + "language": "es", + "name": "Monterrey", + "utc_offset": "-21600", + "order": "5" + } + ], + "fr": [ + { + "area": "America/Santa_Isabel", + "language": "fr", + "name": "Tijuana, Basse-Californie", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Chihuahua", + "language": "fr", + "name": "Chihuahua, La Paz, Mazatlán", + "utc_offset": "-25200", + "order": "2" + }, + { + "area": "America/Hermosillo", + "language": "fr", + "name": "Hermosillo", + "utc_offset": "-25200", + "order": "3" + }, + { + "area": "America/Mexico_City", + "language": "fr", + "name": "Guadalajara, Mexico", + "utc_offset": "-21600", + "order": "4" + }, + { + "area": "America/Monterrey", + "language": "fr", + "name": "Monterrey", + "utc_offset": "-21600", + "order": "5" + } + ], + "ja": [ + { + "area": "America/Santa_Isabel", + "language": "ja", + "name": "ティフアナ、バハ・カリフォルニア", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Chihuahua", + "language": "ja", + "name": "チワワ、ラパス、マサトラン", + "utc_offset": "-25200", + "order": "2" + }, + { + "area": "America/Hermosillo", + "language": "ja", + "name": "エルモシヨ", + "utc_offset": "-25200", + "order": "3" + }, + { + "area": "America/Mexico_City", + "language": "ja", + "name": "グアダラハラ、メキシコシティ", + "utc_offset": "-21600", + "order": "4" + }, + { + "area": "America/Monterrey", + "language": "ja", + "name": "モンテレイ", + "utc_offset": "-21600", + "order": "5" + } + ], + "pt": [ + { + "area": "America/Santa_Isabel", + "language": "pt", + "name": "Tijuana, Baja California", + "utc_offset": "-28800", + "order": "1" + }, + { + "area": "America/Chihuahua", + "language": "pt", + "name": "Chiuaua, La Paz, Mazatlán", + "utc_offset": "-25200", + "order": "2" + }, + { + "area": "America/Hermosillo", + "language": "pt", + "name": "Hermosillo", + "utc_offset": "-25200", + "order": "3" + }, + { + "area": "America/Mexico_City", + "language": "pt", + "name": "Guadalajara, Cidade do México", + "utc_offset": "-21600", + "order": "4" + }, + { + "area": "America/Monterrey", + "language": "pt", + "name": "Monterrey", + "utc_offset": "-21600", + "order": "5" + } + ] + }, + "MY": { + "en": [ + { + "area": "Asia/Kuala_Lumpur", + "language": "en", + "name": "Kuala Lumpur, Kuching, Singapore", + "utc_offset": "28800", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Kuala_Lumpur", + "language": "es", + "name": "Kuala Lumpur, Kuching, Singapur", + "utc_offset": "28800", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Kuala_Lumpur", + "language": "fr", + "name": "Kuala Lumpur, Kuching, Singapour", + "utc_offset": "28800", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Kuala_Lumpur", + "language": "ja", + "name": "クアラルンプール、シンガポール", + "utc_offset": "28800", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Kuala_Lumpur", + "language": "pt", + "name": "Kuala Lumpur, Kuching, Singapura", + "utc_offset": "28800", + "order": "0" + } + ] + }, + "MZ": { + "en": [ + { + "area": "Africa/Maputo", + "language": "en", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Maputo", + "language": "de", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Maputo", + "language": "es", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Maputo", + "language": "fr", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Maputo", + "language": "it", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Maputo", + "language": "ja", + "name": "ルサカ、ハラレ、ハボローネ、マプト", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Maputo", + "language": "nl", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Maputo", + "language": "pt", + "name": "Lusaca, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Maputo", + "language": "ru", + "name": "Лусака, Хараре, Габороне, Мапуту", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "NA": { + "en": [ + { + "area": "Africa/Windhoek", + "language": "en", + "name": "Windhoek", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Windhoek", + "language": "de", + "name": "Windhuk", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Windhoek", + "language": "es", + "name": "Windhoek", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Windhoek", + "language": "fr", + "name": "Windhoek", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Windhoek", + "language": "it", + "name": "Windhoek", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Windhoek", + "language": "ja", + "name": "ウィントフック", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Windhoek", + "language": "nl", + "name": "Windhoek", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Windhoek", + "language": "pt", + "name": "Windhoek", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Windhoek", + "language": "ru", + "name": "Виндхук", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "NE": { + "en": [ + { + "area": "Africa/Niamey", + "language": "en", + "name": "West Central Africa", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Niamey", + "language": "de", + "name": "West-Zentralafrika", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Niamey", + "language": "es", + "name": "África Occidental y Central", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Niamey", + "language": "fr", + "name": "Afrique centrale de l'ouest", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Niamey", + "language": "it", + "name": "Africa centro-occidentale", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Niamey", + "language": "ja", + "name": "西中央アフリカ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Niamey", + "language": "nl", + "name": "West-Centraal Afrika", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Niamey", + "language": "pt", + "name": "África Central e Ocidental", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Niamey", + "language": "ru", + "name": "Западная и Центральная Африка", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "NG": { + "en": [ + { + "area": "Africa/Lagos", + "language": "en", + "name": "West Central Africa", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Lagos", + "language": "de", + "name": "West-Zentralafrika", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Lagos", + "language": "es", + "name": "África Occidental y Central", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Lagos", + "language": "fr", + "name": "Afrique centrale de l'ouest", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Lagos", + "language": "it", + "name": "Africa centro-occidentale", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Lagos", + "language": "ja", + "name": "西中央アフリカ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Lagos", + "language": "nl", + "name": "West-Centraal Afrika", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Lagos", + "language": "pt", + "name": "África Central e Ocidental", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Lagos", + "language": "ru", + "name": "Западная и Центральная Африка", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "NI": { + "en": [ + { + "area": "America/Managua", + "language": "en", + "name": "Central America", + "utc_offset": "-21600", + "order": "0" + } + ], + "es": [ + { + "area": "America/Managua", + "language": "es", + "name": "Centroamérica", + "utc_offset": "-21600", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Managua", + "language": "fr", + "name": "Amérique centrale", + "utc_offset": "-21600", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Managua", + "language": "ja", + "name": "中央アメリカ", + "utc_offset": "-21600", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Managua", + "language": "pt", + "name": "América Central", + "utc_offset": "-21600", + "order": "0" + } + ] + }, + "NL": { + "en": [ + { + "area": "America/Curacao", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "Europe/Amsterdam", + "language": "en", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "2" + } + ], + "de": [ + { + "area": "America/Curacao", + "language": "de", + "name": "Atlantic Standard Time (Karibik)", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "Europe/Amsterdam", + "language": "de", + "name": "Amsterdam, Berlin, Rom", + "utc_offset": "3600", + "order": "2" + } + ], + "es": [ + { + "area": "America/Curacao", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "Europe/Amsterdam", + "language": "es", + "name": "Ámsterdam, Berlín, Roma", + "utc_offset": "3600", + "order": "2" + } + ], + "fr": [ + { + "area": "America/Curacao", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "Europe/Amsterdam", + "language": "fr", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "2" + } + ], + "it": [ + { + "area": "America/Curacao", + "language": "it", + "name": "Orario standard atlantico (Caraibi)", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "Europe/Amsterdam", + "language": "it", + "name": "Amsterdam, Berlino, Roma", + "utc_offset": "3600", + "order": "2" + } + ], + "ja": [ + { + "area": "America/Curacao", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "Europe/Amsterdam", + "language": "ja", + "name": "アムステルダム、ベルリン、ローマ", + "utc_offset": "3600", + "order": "2" + } + ], + "nl": [ + { + "area": "America/Curacao", + "language": "nl", + "name": "Atlantic Standard Time (Caraïben)", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "Europe/Amsterdam", + "language": "nl", + "name": "Amsterdam, Berlijn, Rome", + "utc_offset": "3600", + "order": "2" + } + ], + "pt": [ + { + "area": "America/Curacao", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "Europe/Amsterdam", + "language": "pt", + "name": "Amesterdão, Berlim, Roma", + "utc_offset": "3600", + "order": "2" + } + ], + "ru": [ + { + "area": "America/Curacao", + "language": "ru", + "name": "Атлантическое время (Вест-Индия)", + "utc_offset": "-14400", + "order": "1" + }, + { + "area": "Europe/Amsterdam", + "language": "ru", + "name": "Амстердам, Берлин, Рим", + "utc_offset": "3600", + "order": "2" + } + ] + }, + "NO": { + "en": [ + { + "area": "Europe/Oslo", + "language": "en", + "name": "Stockholm, Vienna", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Oslo", + "language": "de", + "name": "Stockholm, Wien", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Oslo", + "language": "es", + "name": "Estocolmo, Viena", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Oslo", + "language": "fr", + "name": "Stockholm, Vienne", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Oslo", + "language": "it", + "name": "Stoccolma, Vienna", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Oslo", + "language": "ja", + "name": "ストックホルム、ウィーン", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Oslo", + "language": "nl", + "name": "Stockholm, Wenen", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Oslo", + "language": "pt", + "name": "Estocolmo, Viena", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Oslo", + "language": "ru", + "name": "Стокгольм, Вена", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "NP": { + "ja": [ + { + "area": "Asia/Kathmandu", + "language": "ja", + "name": "カトマンズ", + "utc_offset": "20700", + "order": "0" + } + ] + }, + "NZ": { + "en": [ + { + "area": "Pacific/Niue", + "language": "en", + "name": "Niue", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "Pacific/Rarotonga", + "language": "en", + "name": "Rarotonga", + "utc_offset": "-36000", + "order": "2" + }, + { + "area": "Pacific/Auckland", + "language": "en", + "name": "Auckland, Wellington", + "utc_offset": "46800", + "order": "3" + }, + { + "area": "Pacific/Fakaofo", + "language": "en", + "name": "Fakaofo", + "utc_offset": "46800", + "order": "4" + }, + { + "area": "Pacific/Chatham", + "language": "en", + "name": "Chatham", + "utc_offset": "49500", + "order": "5" + } + ], + "de": [ + { + "area": "Pacific/Niue", + "language": "de", + "name": "Niue", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "Pacific/Rarotonga", + "language": "de", + "name": "Rarotonga", + "utc_offset": "-36000", + "order": "2" + }, + { + "area": "Pacific/Auckland", + "language": "de", + "name": "Auckland, Wellington", + "utc_offset": "46800", + "order": "3" + }, + { + "area": "Pacific/Fakaofo", + "language": "de", + "name": "Fakaofo", + "utc_offset": "46800", + "order": "4" + }, + { + "area": "Pacific/Chatham", + "language": "de", + "name": "Chatham", + "utc_offset": "49500", + "order": "5" + } + ], + "es": [ + { + "area": "Pacific/Niue", + "language": "es", + "name": "Niue", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "Pacific/Rarotonga", + "language": "es", + "name": "Rarotonga", + "utc_offset": "-36000", + "order": "2" + }, + { + "area": "Pacific/Auckland", + "language": "es", + "name": "Auckland, Wellington", + "utc_offset": "46800", + "order": "3" + }, + { + "area": "Pacific/Fakaofo", + "language": "es", + "name": "Fakaofo", + "utc_offset": "46800", + "order": "4" + }, + { + "area": "Pacific/Chatham", + "language": "es", + "name": "Islas Chatham", + "utc_offset": "49500", + "order": "5" + } + ], + "fr": [ + { + "area": "Pacific/Niue", + "language": "fr", + "name": "Niue", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "Pacific/Rarotonga", + "language": "fr", + "name": "Rarotonga", + "utc_offset": "-36000", + "order": "2" + }, + { + "area": "Pacific/Auckland", + "language": "fr", + "name": "Auckland, Wellington", + "utc_offset": "46800", + "order": "3" + }, + { + "area": "Pacific/Fakaofo", + "language": "fr", + "name": "Fakaofo", + "utc_offset": "46800", + "order": "4" + }, + { + "area": "Pacific/Chatham", + "language": "fr", + "name": "Îles Chatham", + "utc_offset": "49500", + "order": "5" + } + ], + "it": [ + { + "area": "Pacific/Niue", + "language": "it", + "name": "Niue", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "Pacific/Rarotonga", + "language": "it", + "name": "Rarotonga", + "utc_offset": "-36000", + "order": "2" + }, + { + "area": "Pacific/Auckland", + "language": "it", + "name": "Auckland, Wellington", + "utc_offset": "46800", + "order": "3" + }, + { + "area": "Pacific/Fakaofo", + "language": "it", + "name": "Fakaofo", + "utc_offset": "46800", + "order": "4" + }, + { + "area": "Pacific/Chatham", + "language": "it", + "name": "Isole Chatham", + "utc_offset": "49500", + "order": "5" + } + ], + "ja": [ + { + "area": "Pacific/Niue", + "language": "ja", + "name": "ニウエ", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "Pacific/Rarotonga", + "language": "ja", + "name": "ラロトンガ", + "utc_offset": "-36000", + "order": "2" + }, + { + "area": "Pacific/Auckland", + "language": "ja", + "name": "オークランド、ウェリントン", + "utc_offset": "46800", + "order": "3" + }, + { + "area": "Pacific/Fakaofo", + "language": "ja", + "name": "ファカオフォ島", + "utc_offset": "46800", + "order": "4" + }, + { + "area": "Pacific/Chatham", + "language": "ja", + "name": "チャサム", + "utc_offset": "49500", + "order": "5" + } + ], + "nl": [ + { + "area": "Pacific/Niue", + "language": "nl", + "name": "Niue", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "Pacific/Rarotonga", + "language": "nl", + "name": "Rarotonga", + "utc_offset": "-36000", + "order": "2" + }, + { + "area": "Pacific/Auckland", + "language": "nl", + "name": "Auckland, Wellington", + "utc_offset": "46800", + "order": "3" + }, + { + "area": "Pacific/Fakaofo", + "language": "nl", + "name": "Fakaofo", + "utc_offset": "46800", + "order": "4" + }, + { + "area": "Pacific/Chatham", + "language": "nl", + "name": "Chatham", + "utc_offset": "49500", + "order": "5" + } + ], + "pt": [ + { + "area": "Pacific/Niue", + "language": "pt", + "name": "Niuê", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "Pacific/Rarotonga", + "language": "pt", + "name": "Rarotonga", + "utc_offset": "-36000", + "order": "2" + }, + { + "area": "Pacific/Auckland", + "language": "pt", + "name": "Auckland, Wellington", + "utc_offset": "46800", + "order": "3" + }, + { + "area": "Pacific/Fakaofo", + "language": "pt", + "name": "Fakaofo", + "utc_offset": "46800", + "order": "4" + }, + { + "area": "Pacific/Chatham", + "language": "pt", + "name": "Chatham", + "utc_offset": "49500", + "order": "5" + } + ], + "ru": [ + { + "area": "Pacific/Niue", + "language": "ru", + "name": "Ниуэ", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "Pacific/Rarotonga", + "language": "ru", + "name": "Раротонга", + "utc_offset": "-36000", + "order": "2" + }, + { + "area": "Pacific/Auckland", + "language": "ru", + "name": "Окленд, Веллингтон", + "utc_offset": "46800", + "order": "3" + }, + { + "area": "Pacific/Fakaofo", + "language": "ru", + "name": "Факаофо", + "utc_offset": "46800", + "order": "4" + }, + { + "area": "Pacific/Chatham", + "language": "ru", + "name": "Чатем", + "utc_offset": "49500", + "order": "5" + } + ] + }, + "OM": { + "en": [ + { + "area": "Asia/Muscat", + "language": "en", + "name": "Abu Dhabi, Muscat", + "utc_offset": "14400", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Muscat", + "language": "es", + "name": "Abu Dabi, Mascate", + "utc_offset": "14400", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Muscat", + "language": "fr", + "name": "Abou Dabi, Mascate", + "utc_offset": "14400", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Muscat", + "language": "ja", + "name": "アブダビ、マスカット", + "utc_offset": "14400", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Muscat", + "language": "pt", + "name": "Abu Dhabi, Mascate", + "utc_offset": "14400", + "order": "0" + } + ] + }, + "PA": { + "en": [ + { + "area": "America/Panama", + "language": "en", + "name": "Bogotá, Lima, Quito", + "utc_offset": "-18000", + "order": "0" + } + ], + "es": [ + { + "area": "America/Panama", + "language": "es", + "name": "Bogotá, Lima, Quito", + "utc_offset": "-18000", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Panama", + "language": "fr", + "name": "Bogotá, Lima, Quito", + "utc_offset": "-18000", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Panama", + "language": "ja", + "name": "ボゴタ、リマ、キト", + "utc_offset": "-18000", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Panama", + "language": "pt", + "name": "Bogotá, Lima, Quito", + "utc_offset": "-18000", + "order": "0" + } + ] + }, + "PE": { + "en": [ + { + "area": "America/Lima", + "language": "en", + "name": "Bogotá, Lima, Quito", + "utc_offset": "-18000", + "order": "0" + } + ], + "es": [ + { + "area": "America/Lima", + "language": "es", + "name": "Bogotá, Lima, Quito", + "utc_offset": "-18000", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Lima", + "language": "fr", + "name": "Bogotá, Lima, Quito", + "utc_offset": "-18000", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Lima", + "language": "ja", + "name": "ボゴタ、リマ、キト", + "utc_offset": "-18000", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Lima", + "language": "pt", + "name": "Bogotá, Lima, Quito", + "utc_offset": "-18000", + "order": "0" + } + ] + }, + "PG": { + "ja": [ + { + "area": "Pacific/Port_Moresby", + "language": "ja", + "name": "グアム、ポートモレスビー", + "utc_offset": "36000", + "order": "0" + } + ] + }, + "PH": { + "en": [ + { + "area": "Asia/Manila", + "language": "en", + "name": "Manila", + "utc_offset": "28800", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Manila", + "language": "es", + "name": "Manila", + "utc_offset": "28800", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Manila", + "language": "fr", + "name": "Manille", + "utc_offset": "28800", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Manila", + "language": "ja", + "name": "マニラ", + "utc_offset": "28800", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Manila", + "language": "pt", + "name": "Manila", + "utc_offset": "28800", + "order": "0" + } + ] + }, + "PK": { + "ja": [ + { + "area": "Asia/Karachi", + "language": "ja", + "name": "イスラマバード、カラチ", + "utc_offset": "18000", + "order": "0" + } + ] + }, + "PL": { + "en": [ + { + "area": "Europe/Warsaw", + "language": "en", + "name": "Sarajevo, Warsaw, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Warsaw", + "language": "de", + "name": "Sarajewo, Warschau, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Warsaw", + "language": "es", + "name": "Sarajevo, Varsovia, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Warsaw", + "language": "fr", + "name": "Sarajevo, Varsovie, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Warsaw", + "language": "it", + "name": "Sarajevo, Varsavia, Zagabria", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Warsaw", + "language": "ja", + "name": "サラエボ、ワルシャワ、ザグレブ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Warsaw", + "language": "nl", + "name": "Sarajevo, Warschau, Zagreb", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Warsaw", + "language": "pt", + "name": "Saraievo, Varsóvia, Zagrebe", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Warsaw", + "language": "ru", + "name": "Сараево, Варшава, Загреб", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "PR": { + "en": [ + { + "area": "America/Puerto_Rico", + "language": "en", + "name": "Georgetown, La Paz, San Juan", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Puerto_Rico", + "language": "es", + "name": "Georgetown, La Paz, San Juan", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Puerto_Rico", + "language": "fr", + "name": "Georgetown, La Paz, San Juan", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Puerto_Rico", + "language": "ja", + "name": "ジョージタウン、ラパス、サンフアン", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Puerto_Rico", + "language": "pt", + "name": "Georgetown, La Paz, San Juan", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "PT": { + "en": [ + { + "area": "Atlantic/Azores", + "language": "en", + "name": "Azores", + "utc_offset": "-3600", + "order": "1" + }, + { + "area": "Atlantic/Madeira", + "language": "en", + "name": "Dublin, Lisbon, London", + "utc_offset": "0", + "order": "2" + } + ], + "de": [ + { + "area": "Atlantic/Azores", + "language": "de", + "name": "Azoren", + "utc_offset": "-3600", + "order": "1" + }, + { + "area": "Atlantic/Madeira", + "language": "de", + "name": "Dublin, Lissabon, London", + "utc_offset": "0", + "order": "2" + } + ], + "es": [ + { + "area": "Atlantic/Azores", + "language": "es", + "name": "Azores", + "utc_offset": "-3600", + "order": "1" + }, + { + "area": "Atlantic/Madeira", + "language": "es", + "name": "Dublín, Lisboa, Londres", + "utc_offset": "0", + "order": "2" + } + ], + "fr": [ + { + "area": "Atlantic/Azores", + "language": "fr", + "name": "Açores", + "utc_offset": "-3600", + "order": "1" + }, + { + "area": "Atlantic/Madeira", + "language": "fr", + "name": "Dublin, Lisbonne, Londres", + "utc_offset": "0", + "order": "2" + } + ], + "it": [ + { + "area": "Atlantic/Azores", + "language": "it", + "name": "Azzorre", + "utc_offset": "-3600", + "order": "1" + }, + { + "area": "Atlantic/Madeira", + "language": "it", + "name": "Dublino, Lisbona, Londra", + "utc_offset": "0", + "order": "2" + } + ], + "ja": [ + { + "area": "Atlantic/Azores", + "language": "ja", + "name": "アゾレス諸島", + "utc_offset": "-3600", + "order": "1" + }, + { + "area": "Atlantic/Madeira", + "language": "ja", + "name": "ダブリン、リスボン、ロンドン", + "utc_offset": "0", + "order": "2" + } + ], + "nl": [ + { + "area": "Atlantic/Azores", + "language": "nl", + "name": "Azoren", + "utc_offset": "-3600", + "order": "1" + }, + { + "area": "Atlantic/Madeira", + "language": "nl", + "name": "Dublin, Lissabon, Londen", + "utc_offset": "0", + "order": "2" + } + ], + "pt": [ + { + "area": "Atlantic/Azores", + "language": "pt", + "name": "Açores", + "utc_offset": "-3600", + "order": "1" + }, + { + "area": "Atlantic/Madeira", + "language": "pt", + "name": "Dublim, Lisboa, Londres", + "utc_offset": "0", + "order": "2" + } + ], + "ru": [ + { + "area": "Atlantic/Azores", + "language": "ru", + "name": "Азорские острова", + "utc_offset": "-3600", + "order": "1" + }, + { + "area": "Atlantic/Madeira", + "language": "ru", + "name": "Дублин, Лиссабон, Лондон", + "utc_offset": "0", + "order": "2" + } + ] + }, + "PY": { + "en": [ + { + "area": "America/Asuncion", + "language": "en", + "name": "Asunción", + "utc_offset": "-10800", + "order": "0" + } + ], + "es": [ + { + "area": "America/Asuncion", + "language": "es", + "name": "Asunción", + "utc_offset": "-10800", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Asuncion", + "language": "fr", + "name": "Asunción", + "utc_offset": "-10800", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Asuncion", + "language": "ja", + "name": "アスンシオン", + "utc_offset": "-10800", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Asuncion", + "language": "pt", + "name": "Assunção", + "utc_offset": "-10800", + "order": "0" + } + ] + }, + "QA": { + "en": [ + { + "area": "Asia/Qatar", + "language": "en", + "name": "Kuwait, Riyadh", + "utc_offset": "10800", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Qatar", + "language": "es", + "name": "Kuwait, Riad", + "utc_offset": "10800", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Qatar", + "language": "fr", + "name": "Koweït, Riyad", + "utc_offset": "10800", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Qatar", + "language": "ja", + "name": "クウェート、リヤド", + "utc_offset": "10800", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Qatar", + "language": "pt", + "name": "Kuwait, Riade", + "utc_offset": "10800", + "order": "0" + } + ] + }, + "RO": { + "en": [ + { + "area": "Europe/Bucharest", + "language": "en", + "name": "Athens, Bucharest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Bucharest", + "language": "de", + "name": "Athen, Bukarest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Bucharest", + "language": "es", + "name": "Atenas, Bucarest, Estambul", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Bucharest", + "language": "fr", + "name": "Athènes, Bucarest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Bucharest", + "language": "it", + "name": "Atene, Bucarest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Bucharest", + "language": "ja", + "name": "アテネ、ブカレスト、イスタンブール", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Bucharest", + "language": "nl", + "name": "Athene, Boekarest, Istanboel", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Bucharest", + "language": "pt", + "name": "Atenas, Bucareste, Istambul", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Bucharest", + "language": "ru", + "name": "Афины, Бухарест, Стамбул", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "RS": { + "en": [ + { + "area": "Europe/Belgrade", + "language": "en", + "name": "Belgrade, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Belgrade", + "language": "de", + "name": "Belgrad, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Belgrade", + "language": "es", + "name": "Belgrado, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Belgrade", + "language": "fr", + "name": "Belgrade, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Belgrade", + "language": "it", + "name": "Belgrado, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Belgrade", + "language": "ja", + "name": "ベオグラード、ブダペスト", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Belgrade", + "language": "nl", + "name": "Belgrado, Boedapest", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Belgrade", + "language": "pt", + "name": "Belgrado, Budapeste", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Belgrade", + "language": "ru", + "name": "Белград, Будапешт", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "RU": { + "en": [ + { + "area": "Europe/Kaliningrad", + "language": "en", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "1" + }, + { + "area": "Europe/Moscow", + "language": "en", + "name": "Moscow, St Petersburg", + "utc_offset": "10800", + "order": "2" + }, + { + "area": "Europe/Samara", + "language": "en", + "name": "Samara, Udmurtia", + "utc_offset": "14400", + "order": "3" + }, + { + "area": "Asia/Yekaterinburg", + "language": "en", + "name": "Yekaterinburg", + "utc_offset": "18000", + "order": "4" + }, + { + "area": "Asia/Novosibirsk", + "language": "en", + "name": "Novosibirsk, Omsk", + "utc_offset": "21600", + "order": "5" + }, + { + "area": "Asia/Krasnoyarsk", + "language": "en", + "name": "Krasnoyarsk", + "utc_offset": "25200", + "order": "6" + }, + { + "area": "Asia/Novokuznetsk", + "language": "en", + "name": "Novokuznetsk", + "utc_offset": "25200", + "order": "7" + }, + { + "area": "Asia/Irkutsk", + "language": "en", + "name": "Irkutsk", + "utc_offset": "28800", + "order": "8" + }, + { + "area": "Asia/Yakutsk", + "language": "en", + "name": "Yakutsk", + "utc_offset": "32400", + "order": "9" + }, + { + "area": "Asia/Sakhalin", + "language": "en", + "name": "Sakhalin, Vladivostok", + "utc_offset": "39600", + "order": "10" + }, + { + "area": "Asia/Srednekolymsk", + "language": "en", + "name": "Srednekolymsk", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Asia/Anadyr", + "language": "en", + "name": "Anadyr, Kamchatka", + "utc_offset": "43200", + "order": "12" + } + ], + "de": [ + { + "area": "Europe/Kaliningrad", + "language": "de", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "1" + }, + { + "area": "Europe/Moscow", + "language": "de", + "name": "Moskau, St. Petersburg", + "utc_offset": "10800", + "order": "2" + }, + { + "area": "Europe/Samara", + "language": "de", + "name": "Samara, Udmurtien", + "utc_offset": "14400", + "order": "3" + }, + { + "area": "Asia/Yekaterinburg", + "language": "de", + "name": "Jekaterinburg", + "utc_offset": "18000", + "order": "4" + }, + { + "area": "Asia/Novosibirsk", + "language": "de", + "name": "Nowosibirsk, Omsk", + "utc_offset": "21600", + "order": "5" + }, + { + "area": "Asia/Krasnoyarsk", + "language": "de", + "name": "Krasnojarsk", + "utc_offset": "25200", + "order": "6" + }, + { + "area": "Asia/Novokuznetsk", + "language": "de", + "name": "Nowokusnetsk", + "utc_offset": "25200", + "order": "7" + }, + { + "area": "Asia/Irkutsk", + "language": "de", + "name": "Irkutsk", + "utc_offset": "28800", + "order": "8" + }, + { + "area": "Asia/Yakutsk", + "language": "de", + "name": "Jakutsk", + "utc_offset": "32400", + "order": "9" + }, + { + "area": "Asia/Sakhalin", + "language": "de", + "name": "Sachalin, Wladiwostok", + "utc_offset": "39600", + "order": "10" + }, + { + "area": "Asia/Srednekolymsk", + "language": "de", + "name": "Srednekolymsk", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Asia/Anadyr", + "language": "de", + "name": "Anadyr, Kamtschatka", + "utc_offset": "43200", + "order": "12" + } + ], + "es": [ + { + "area": "Europe/Kaliningrad", + "language": "es", + "name": "Helsinki, Kaliningrado", + "utc_offset": "7200", + "order": "1" + }, + { + "area": "Europe/Moscow", + "language": "es", + "name": "Moscú, San Petersburgo", + "utc_offset": "10800", + "order": "2" + }, + { + "area": "Europe/Samara", + "language": "es", + "name": "Samara, Udmurtia", + "utc_offset": "14400", + "order": "3" + }, + { + "area": "Asia/Yekaterinburg", + "language": "es", + "name": "Ekaterimburgo", + "utc_offset": "18000", + "order": "4" + }, + { + "area": "Asia/Novosibirsk", + "language": "es", + "name": "Novosibirsk, Omsk", + "utc_offset": "21600", + "order": "5" + }, + { + "area": "Asia/Krasnoyarsk", + "language": "es", + "name": "Krasnoyarsk", + "utc_offset": "25200", + "order": "6" + }, + { + "area": "Asia/Novokuznetsk", + "language": "es", + "name": "Novokuznetsk", + "utc_offset": "25200", + "order": "7" + }, + { + "area": "Asia/Irkutsk", + "language": "es", + "name": "Irkutsk", + "utc_offset": "28800", + "order": "8" + }, + { + "area": "Asia/Yakutsk", + "language": "es", + "name": "Yakutsk", + "utc_offset": "32400", + "order": "9" + }, + { + "area": "Asia/Sakhalin", + "language": "es", + "name": "Sajalín, Vladivostok", + "utc_offset": "39600", + "order": "10" + }, + { + "area": "Asia/Srednekolymsk", + "language": "es", + "name": "Srednekolymsk", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Asia/Anadyr", + "language": "es", + "name": "Anádyr, Kamchatka", + "utc_offset": "43200", + "order": "12" + } + ], + "fr": [ + { + "area": "Europe/Kaliningrad", + "language": "fr", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "1" + }, + { + "area": "Europe/Moscow", + "language": "fr", + "name": "Moscou, Saint-Pétersbourg", + "utc_offset": "10800", + "order": "2" + }, + { + "area": "Europe/Samara", + "language": "fr", + "name": "Samara, Oudmourtie", + "utc_offset": "14400", + "order": "3" + }, + { + "area": "Asia/Yekaterinburg", + "language": "fr", + "name": "Iekaterinbourg", + "utc_offset": "18000", + "order": "4" + }, + { + "area": "Asia/Novosibirsk", + "language": "fr", + "name": "Novosibirsk, Omsk", + "utc_offset": "21600", + "order": "5" + }, + { + "area": "Asia/Krasnoyarsk", + "language": "fr", + "name": "Krasnoïarsk", + "utc_offset": "25200", + "order": "6" + }, + { + "area": "Asia/Novokuznetsk", + "language": "fr", + "name": "Novokouznetsk", + "utc_offset": "25200", + "order": "7" + }, + { + "area": "Asia/Irkutsk", + "language": "fr", + "name": "Irkoutsk", + "utc_offset": "28800", + "order": "8" + }, + { + "area": "Asia/Yakutsk", + "language": "fr", + "name": "Iakoutsk", + "utc_offset": "32400", + "order": "9" + }, + { + "area": "Asia/Sakhalin", + "language": "fr", + "name": "Sakhaline, Vladivostok", + "utc_offset": "39600", + "order": "10" + }, + { + "area": "Asia/Srednekolymsk", + "language": "fr", + "name": "Srednekolymsk", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Asia/Anadyr", + "language": "fr", + "name": "Anadyr, Kamchatka", + "utc_offset": "43200", + "order": "12" + } + ], + "it": [ + { + "area": "Europe/Kaliningrad", + "language": "it", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "1" + }, + { + "area": "Europe/Moscow", + "language": "it", + "name": "Mosca, San Pietroburgo", + "utc_offset": "10800", + "order": "2" + }, + { + "area": "Europe/Samara", + "language": "it", + "name": "Samara, Udmurtia", + "utc_offset": "14400", + "order": "3" + }, + { + "area": "Asia/Yekaterinburg", + "language": "it", + "name": "Ekaterinburg", + "utc_offset": "18000", + "order": "4" + }, + { + "area": "Asia/Novosibirsk", + "language": "it", + "name": "Novosibirsk, Omsk", + "utc_offset": "21600", + "order": "5" + }, + { + "area": "Asia/Krasnoyarsk", + "language": "it", + "name": "Krasnojarsk", + "utc_offset": "25200", + "order": "6" + }, + { + "area": "Asia/Novokuznetsk", + "language": "it", + "name": "Novokuzneck", + "utc_offset": "25200", + "order": "7" + }, + { + "area": "Asia/Irkutsk", + "language": "it", + "name": "Irkutsk", + "utc_offset": "28800", + "order": "8" + }, + { + "area": "Asia/Yakutsk", + "language": "it", + "name": "Jakutsk", + "utc_offset": "32400", + "order": "9" + }, + { + "area": "Asia/Sakhalin", + "language": "it", + "name": "Sachalin, Vladivostok", + "utc_offset": "39600", + "order": "10" + }, + { + "area": "Asia/Srednekolymsk", + "language": "it", + "name": "Srednekolymsk", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Asia/Anadyr", + "language": "it", + "name": "Anadyr', Kamčatka", + "utc_offset": "43200", + "order": "12" + } + ], + "ja": [ + { + "area": "Europe/Kaliningrad", + "language": "ja", + "name": "ヘルシンキ、カリーニングラード", + "utc_offset": "7200", + "order": "1" + }, + { + "area": "Europe/Moscow", + "language": "ja", + "name": "モスクワ、サンクトペテルブルグ", + "utc_offset": "10800", + "order": "2" + }, + { + "area": "Europe/Samara", + "language": "ja", + "name": "サマーラ、ウドムルト", + "utc_offset": "14400", + "order": "3" + }, + { + "area": "Asia/Yekaterinburg", + "language": "ja", + "name": "エカテリンブルグ", + "utc_offset": "18000", + "order": "4" + }, + { + "area": "Asia/Novosibirsk", + "language": "ja", + "name": "ノボシビルスク、オムスク", + "utc_offset": "21600", + "order": "5" + }, + { + "area": "Asia/Krasnoyarsk", + "language": "ja", + "name": "クラスノヤルスク", + "utc_offset": "25200", + "order": "6" + }, + { + "area": "Asia/Novokuznetsk", + "language": "ja", + "name": "ノボクズネツク", + "utc_offset": "25200", + "order": "7" + }, + { + "area": "Asia/Irkutsk", + "language": "ja", + "name": "イルクーツク", + "utc_offset": "28800", + "order": "8" + }, + { + "area": "Asia/Yakutsk", + "language": "ja", + "name": "ヤクーツク", + "utc_offset": "32400", + "order": "9" + }, + { + "area": "Asia/Sakhalin", + "language": "ja", + "name": "サハリン、ウラジオストク", + "utc_offset": "39600", + "order": "10" + }, + { + "area": "Asia/Srednekolymsk", + "language": "ja", + "name": "スレドネコリムスク", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Asia/Anadyr", + "language": "ja", + "name": "アナディリ、カムチャッカ", + "utc_offset": "43200", + "order": "12" + } + ], + "nl": [ + { + "area": "Europe/Kaliningrad", + "language": "nl", + "name": "Helsinki, Kaliningrad", + "utc_offset": "7200", + "order": "1" + }, + { + "area": "Europe/Moscow", + "language": "nl", + "name": "Moskou, Sint-Petersburg", + "utc_offset": "10800", + "order": "2" + }, + { + "area": "Europe/Samara", + "language": "nl", + "name": "Samara, Oedmoertië", + "utc_offset": "14400", + "order": "3" + }, + { + "area": "Asia/Yekaterinburg", + "language": "nl", + "name": "Jekaterinenburg", + "utc_offset": "18000", + "order": "4" + }, + { + "area": "Asia/Novosibirsk", + "language": "nl", + "name": "Novosibirsk, Omsk", + "utc_offset": "21600", + "order": "5" + }, + { + "area": "Asia/Krasnoyarsk", + "language": "nl", + "name": "Krasnojarsk", + "utc_offset": "25200", + "order": "6" + }, + { + "area": "Asia/Novokuznetsk", + "language": "nl", + "name": "Novokoeznetsk", + "utc_offset": "25200", + "order": "7" + }, + { + "area": "Asia/Irkutsk", + "language": "nl", + "name": "Irkoetsk", + "utc_offset": "28800", + "order": "8" + }, + { + "area": "Asia/Yakutsk", + "language": "nl", + "name": "Jakoetsk", + "utc_offset": "32400", + "order": "9" + }, + { + "area": "Asia/Sakhalin", + "language": "nl", + "name": "Sachalin, Vladivostok", + "utc_offset": "39600", + "order": "10" + }, + { + "area": "Asia/Srednekolymsk", + "language": "nl", + "name": "Srednekolymsk", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Asia/Anadyr", + "language": "nl", + "name": "Anadyr, Kamtsjatka", + "utc_offset": "43200", + "order": "12" + } + ], + "pt": [ + { + "area": "Europe/Kaliningrad", + "language": "pt", + "name": "Helsínquia, Caliningrado", + "utc_offset": "7200", + "order": "1" + }, + { + "area": "Europe/Moscow", + "language": "pt", + "name": "Moscovo, São Petersburgo", + "utc_offset": "10800", + "order": "2" + }, + { + "area": "Europe/Samara", + "language": "pt", + "name": "Samara, Udmurtia", + "utc_offset": "14400", + "order": "3" + }, + { + "area": "Asia/Yekaterinburg", + "language": "pt", + "name": "Ecaterimburgo", + "utc_offset": "18000", + "order": "4" + }, + { + "area": "Asia/Novosibirsk", + "language": "pt", + "name": "Novosibirsk, Omsk", + "utc_offset": "21600", + "order": "5" + }, + { + "area": "Asia/Krasnoyarsk", + "language": "pt", + "name": "Krasnoyarsk", + "utc_offset": "25200", + "order": "6" + }, + { + "area": "Asia/Novokuznetsk", + "language": "pt", + "name": "Novokuznetsk", + "utc_offset": "25200", + "order": "7" + }, + { + "area": "Asia/Irkutsk", + "language": "pt", + "name": "Irkutsk", + "utc_offset": "28800", + "order": "8" + }, + { + "area": "Asia/Yakutsk", + "language": "pt", + "name": "Yakutsk", + "utc_offset": "32400", + "order": "9" + }, + { + "area": "Asia/Sakhalin", + "language": "pt", + "name": "Sacalina, Vladivostok", + "utc_offset": "39600", + "order": "10" + }, + { + "area": "Asia/Srednekolymsk", + "language": "pt", + "name": "Srednekolymsk", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Asia/Anadyr", + "language": "pt", + "name": "Anadyr, Kamchatka", + "utc_offset": "43200", + "order": "12" + } + ], + "ru": [ + { + "area": "Europe/Kaliningrad", + "language": "ru", + "name": "Хельсинки, Калининград", + "utc_offset": "7200", + "order": "1" + }, + { + "area": "Europe/Moscow", + "language": "ru", + "name": "Москва, Санкт-Петербург", + "utc_offset": "10800", + "order": "2" + }, + { + "area": "Europe/Samara", + "language": "ru", + "name": "Самара, Удмуртия", + "utc_offset": "14400", + "order": "3" + }, + { + "area": "Asia/Yekaterinburg", + "language": "ru", + "name": "Екатеринбург", + "utc_offset": "18000", + "order": "4" + }, + { + "area": "Asia/Novosibirsk", + "language": "ru", + "name": "Новосибирск, Омск", + "utc_offset": "21600", + "order": "5" + }, + { + "area": "Asia/Krasnoyarsk", + "language": "ru", + "name": "Красноярск", + "utc_offset": "25200", + "order": "6" + }, + { + "area": "Asia/Novokuznetsk", + "language": "ru", + "name": "Новокузнецк", + "utc_offset": "25200", + "order": "7" + }, + { + "area": "Asia/Irkutsk", + "language": "ru", + "name": "Иркутск", + "utc_offset": "28800", + "order": "8" + }, + { + "area": "Asia/Yakutsk", + "language": "ru", + "name": "Якутск", + "utc_offset": "32400", + "order": "9" + }, + { + "area": "Asia/Sakhalin", + "language": "ru", + "name": "Сахалин, Владивосток", + "utc_offset": "39600", + "order": "10" + }, + { + "area": "Asia/Srednekolymsk", + "language": "ru", + "name": "Среднеколымск", + "utc_offset": "39600", + "order": "11" + }, + { + "area": "Asia/Anadyr", + "language": "ru", + "name": "Анадырь, Камчатка", + "utc_offset": "43200", + "order": "12" + } + ] + }, + "SA": { + "en": [ + { + "area": "Asia/Riyadh", + "language": "en", + "name": "Kuwait, Riyadh", + "utc_offset": "10800", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Riyadh", + "language": "es", + "name": "Kuwait, Riad", + "utc_offset": "10800", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Riyadh", + "language": "fr", + "name": "Koweït, Riyad", + "utc_offset": "10800", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Riyadh", + "language": "ja", + "name": "クウェート、リヤド", + "utc_offset": "10800", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Riyadh", + "language": "pt", + "name": "Kuwait, Riade", + "utc_offset": "10800", + "order": "0" + } + ] + }, + "SD": { + "en": [ + { + "area": "Africa/Khartoum", + "language": "en", + "name": "Asmara, Djibouti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Khartoum", + "language": "de", + "name": "Asmara, Dschibuti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Khartoum", + "language": "es", + "name": "Asmara, Yibuti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Khartoum", + "language": "fr", + "name": "Asmara, Djibouti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Khartoum", + "language": "it", + "name": "Asmara, Gibuti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Khartoum", + "language": "ja", + "name": "アスマラ、ジブチ、ナイロビ", + "utc_offset": "10800", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Khartoum", + "language": "nl", + "name": "Asmara, Djibouti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Khartoum", + "language": "pt", + "name": "Asmara, Jibuti, Nairóbi", + "utc_offset": "10800", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Khartoum", + "language": "ru", + "name": "Асмэра, Джибути, Найроби", + "utc_offset": "10800", + "order": "0" + } + ] + }, + "SE": { + "en": [ + { + "area": "Europe/Stockholm", + "language": "en", + "name": "Stockholm, Vienna", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Stockholm", + "language": "de", + "name": "Stockholm, Wien", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Stockholm", + "language": "es", + "name": "Estocolmo, Viena", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Stockholm", + "language": "fr", + "name": "Stockholm, Vienne", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Stockholm", + "language": "it", + "name": "Stoccolma, Vienna", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Stockholm", + "language": "ja", + "name": "ストックホルム、ウィーン", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Stockholm", + "language": "nl", + "name": "Stockholm, Wenen", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Stockholm", + "language": "pt", + "name": "Estocolmo, Viena", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Stockholm", + "language": "ru", + "name": "Стокгольм, Вена", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "SG": { + "en": [ + { + "area": "Asia/Singapore", + "language": "en", + "name": "Kuala Lumpur, Kuching, Singapore", + "utc_offset": "28800", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Singapore", + "language": "es", + "name": "Kuala Lumpur, Kuching, Singapur", + "utc_offset": "28800", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Singapore", + "language": "fr", + "name": "Kuala Lumpur, Kuching, Singapour", + "utc_offset": "28800", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Singapore", + "language": "ja", + "name": "クアラルンプール、シンガポール", + "utc_offset": "28800", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Singapore", + "language": "pt", + "name": "Kuala Lumpur, Kuching, Singapura", + "utc_offset": "28800", + "order": "0" + } + ] + }, + "SI": { + "en": [ + { + "area": "Europe/Ljubljana", + "language": "en", + "name": "Belgrade, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Ljubljana", + "language": "de", + "name": "Belgrad, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Ljubljana", + "language": "es", + "name": "Belgrado, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Ljubljana", + "language": "fr", + "name": "Belgrade, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Ljubljana", + "language": "it", + "name": "Belgrado, Budapest", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Ljubljana", + "language": "ja", + "name": "ベオグラード、ブダペスト", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Ljubljana", + "language": "nl", + "name": "Belgrado, Boedapest", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Ljubljana", + "language": "pt", + "name": "Belgrado, Budapeste", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Ljubljana", + "language": "ru", + "name": "Белград, Будапешт", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "SK": { + "en": [ + { + "area": "Europe/Bratislava", + "language": "en", + "name": "Bratislava, Prague", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Bratislava", + "language": "de", + "name": "Bratislava, Prag", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Bratislava", + "language": "es", + "name": "Bratislava, Praga", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Bratislava", + "language": "fr", + "name": "Bratislava, Prague", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Bratislava", + "language": "it", + "name": "Bratislava, Praga", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Bratislava", + "language": "ja", + "name": "ブラチスラバ、プラハ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Bratislava", + "language": "nl", + "name": "Bratislava, Praag", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Bratislava", + "language": "pt", + "name": "Bratislava, Praga", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Bratislava", + "language": "ru", + "name": "Братислава, Прага", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "SM": { + "en": [ + { + "area": "Europe/San_Marino", + "language": "en", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/San_Marino", + "language": "de", + "name": "Amsterdam, Berlin, Rom", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/San_Marino", + "language": "es", + "name": "Ámsterdam, Berlín, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/San_Marino", + "language": "fr", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/San_Marino", + "language": "it", + "name": "Amsterdam, Berlino, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/San_Marino", + "language": "ja", + "name": "アムステルダム、ベルリン、ローマ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/San_Marino", + "language": "nl", + "name": "Amsterdam, Berlijn, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/San_Marino", + "language": "pt", + "name": "Amesterdão, Berlim, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/San_Marino", + "language": "ru", + "name": "Амстердам, Берлин, Рим", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "SO": { + "en": [ + { + "area": "Africa/Mogadishu", + "language": "en", + "name": "Asmara, Djibouti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Mogadishu", + "language": "de", + "name": "Asmara, Dschibuti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Mogadishu", + "language": "es", + "name": "Asmara, Yibuti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Mogadishu", + "language": "fr", + "name": "Asmara, Djibouti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Mogadishu", + "language": "it", + "name": "Asmara, Gibuti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Mogadishu", + "language": "ja", + "name": "アスマラ、ジブチ、ナイロビ", + "utc_offset": "10800", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Mogadishu", + "language": "nl", + "name": "Asmara, Djibouti, Nairobi", + "utc_offset": "10800", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Mogadishu", + "language": "pt", + "name": "Asmara, Jibuti, Nairóbi", + "utc_offset": "10800", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Mogadishu", + "language": "ru", + "name": "Асмэра, Джибути, Найроби", + "utc_offset": "10800", + "order": "0" + } + ] + }, + "SR": { + "en": [ + { + "area": "America/Paramaribo", + "language": "en", + "name": "Paramaribo", + "utc_offset": "-10800", + "order": "0" + } + ], + "es": [ + { + "area": "America/Paramaribo", + "language": "es", + "name": "Paramaribo", + "utc_offset": "-10800", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Paramaribo", + "language": "fr", + "name": "Paramaribo", + "utc_offset": "-10800", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Paramaribo", + "language": "ja", + "name": "パラマリボ", + "utc_offset": "-10800", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Paramaribo", + "language": "pt", + "name": "Paramaribo", + "utc_offset": "-10800", + "order": "0" + } + ] + }, + "SV": { + "en": [ + { + "area": "America/El_Salvador", + "language": "en", + "name": "Central America", + "utc_offset": "-21600", + "order": "0" + } + ], + "es": [ + { + "area": "America/El_Salvador", + "language": "es", + "name": "Centroamérica", + "utc_offset": "-21600", + "order": "0" + } + ], + "fr": [ + { + "area": "America/El_Salvador", + "language": "fr", + "name": "Amérique centrale", + "utc_offset": "-21600", + "order": "0" + } + ], + "ja": [ + { + "area": "America/El_Salvador", + "language": "ja", + "name": "中央アメリカ", + "utc_offset": "-21600", + "order": "0" + } + ], + "pt": [ + { + "area": "America/El_Salvador", + "language": "pt", + "name": "América Central", + "utc_offset": "-21600", + "order": "0" + } + ] + }, + "SY": { + "en": [ + { + "area": "Asia/Damascus", + "language": "en", + "name": "Damascus", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Damascus", + "language": "es", + "name": "Damasco", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Damascus", + "language": "fr", + "name": "Damas", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Damascus", + "language": "ja", + "name": "ダマスカス", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Damascus", + "language": "pt", + "name": "Damascus", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "SZ": { + "en": [ + { + "area": "Africa/Mbabane", + "language": "en", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Mbabane", + "language": "de", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Mbabane", + "language": "es", + "name": "Maseru, Mbabane, Johannesburgo", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Mbabane", + "language": "fr", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Mbabane", + "language": "it", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Mbabane", + "language": "ja", + "name": "マセル、ムババーネ、ヨハネスブルグ", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Mbabane", + "language": "nl", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Mbabane", + "language": "pt", + "name": "Maseru, Mebabane, Joanesburgo", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Mbabane", + "language": "ru", + "name": "Масеру, Мбабане, Йоханнесбург", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "TC": { + "en": [ + { + "area": "America/Grand_Turk", + "language": "en", + "name": "Eastern Time (US & Canada)", + "utc_offset": "-14400", + "order": "0" + } + ], + "de": [ + { + "area": "America/Grand_Turk", + "language": "de", + "name": "Eastern Standard Time (USA/Kanada)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Grand_Turk", + "language": "es", + "name": "Horario del Este (EE. UU. y Canadá)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Grand_Turk", + "language": "fr", + "name": "Heure de l'Est (É.-U. et Canada)", + "utc_offset": "-14400", + "order": "0" + } + ], + "it": [ + { + "area": "America/Grand_Turk", + "language": "it", + "name": "Orario Costa Orientale (USA e Canada)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Grand_Turk", + "language": "ja", + "name": "東部標準時(米国およびカナダ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "nl": [ + { + "area": "America/Grand_Turk", + "language": "nl", + "name": "Eastern Standard Time (VS/Canada)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Grand_Turk", + "language": "pt", + "name": "Costa Leste (EUA e Canadá)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ru": [ + { + "area": "America/Grand_Turk", + "language": "ru", + "name": "Восточное время (США и Канада)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "TD": { + "en": [ + { + "area": "Africa/Ndjamena", + "language": "en", + "name": "West Central Africa", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Ndjamena", + "language": "de", + "name": "West-Zentralafrika", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Ndjamena", + "language": "es", + "name": "África Occidental y Central", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Ndjamena", + "language": "fr", + "name": "Afrique centrale de l'ouest", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Ndjamena", + "language": "it", + "name": "Africa centro-occidentale", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Ndjamena", + "language": "ja", + "name": "西中央アフリカ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Ndjamena", + "language": "nl", + "name": "West-Centraal Afrika", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Ndjamena", + "language": "pt", + "name": "África Central e Ocidental", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Ndjamena", + "language": "ru", + "name": "Западная и Центральная Африка", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "TH": { + "en": [ + { + "area": "Asia/Bangkok", + "language": "en", + "name": "Bangkok, Hanoi, Pontianak, Jakarta", + "utc_offset": "25200", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Bangkok", + "language": "es", + "name": "Bangkok, Hanói, Pontianak, Yakarta", + "utc_offset": "25200", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Bangkok", + "language": "fr", + "name": "Bangkok, Hanoï, Pontianak, Jakarta", + "utc_offset": "25200", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Bangkok", + "language": "ja", + "name": "バンコク、ハノイ、ジャカルタ", + "utc_offset": "25200", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Bangkok", + "language": "pt", + "name": "Bangkok, Hanoi, Pontianak, Jacarta", + "utc_offset": "25200", + "order": "0" + } + ] + }, + "TO": { + "ja": [ + { + "area": "Pacific/Tongatapu", + "language": "ja", + "name": "ヌクアロファ", + "utc_offset": "46800", + "order": "0" + } + ] + }, + "TR": { + "en": [ + { + "area": "Europe/Istanbul", + "language": "en", + "name": "Athens, Bucharest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Istanbul", + "language": "de", + "name": "Athen, Bukarest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Istanbul", + "language": "es", + "name": "Atenas, Bucarest, Estambul", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Istanbul", + "language": "fr", + "name": "Athènes, Bucarest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Istanbul", + "language": "it", + "name": "Atene, Bucarest, Istanbul", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Istanbul", + "language": "ja", + "name": "アテネ、ブカレスト、イスタンブール", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Istanbul", + "language": "nl", + "name": "Athene, Boekarest, Istanboel", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Istanbul", + "language": "pt", + "name": "Atenas, Bucareste, Istambul", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Istanbul", + "language": "ru", + "name": "Афины, Бухарест, Стамбул", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "TT": { + "en": [ + { + "area": "America/Port_of_Spain", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Port_of_Spain", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Port_of_Spain", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Port_of_Spain", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Port_of_Spain", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "TW": { + "en": [ + { + "area": "Asia/Taipei", + "language": "en", + "name": "Taipei", + "utc_offset": "28800", + "order": "0" + } + ], + "de": [ + { + "area": "Asia/Taipei", + "language": "de", + "name": "Taipei", + "utc_offset": "28800", + "order": "0" + } + ], + "es": [ + { + "area": "Asia/Taipei", + "language": "es", + "name": "Taipéi", + "utc_offset": "28800", + "order": "0" + } + ], + "fr": [ + { + "area": "Asia/Taipei", + "language": "fr", + "name": "Taipei", + "utc_offset": "28800", + "order": "0" + } + ], + "it": [ + { + "area": "Asia/Taipei", + "language": "it", + "name": "Taipei", + "utc_offset": "28800", + "order": "0" + } + ], + "ja": [ + { + "area": "Asia/Taipei", + "language": "ja", + "name": "台北", + "utc_offset": "28800", + "order": "0" + } + ], + "nl": [ + { + "area": "Asia/Taipei", + "language": "nl", + "name": "Taipei", + "utc_offset": "28800", + "order": "0" + } + ], + "pt": [ + { + "area": "Asia/Taipei", + "language": "pt", + "name": "Taipei", + "utc_offset": "28800", + "order": "0" + } + ], + "ru": [ + { + "area": "Asia/Taipei", + "language": "ru", + "name": "Тайбэй", + "utc_offset": "28800", + "order": "0" + } + ] + }, + "UA": { + "ja": [ + { + "area": "Europe/Kiev", + "language": "ja", + "name": "ヘルシンキ、カリーニングラード", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "UM": { + "en": [ + { + "area": "Pacific/Midway", + "language": "en", + "name": "Midway Island, Samoa", + "utc_offset": "-39600", + "order": "0" + } + ], + "es": [ + { + "area": "Pacific/Midway", + "language": "es", + "name": "Islas Midway, Samoa", + "utc_offset": "-39600", + "order": "0" + } + ], + "fr": [ + { + "area": "Pacific/Midway", + "language": "fr", + "name": "Îles Midway, Samoa", + "utc_offset": "-39600", + "order": "0" + } + ], + "ja": [ + { + "area": "Pacific/Midway", + "language": "ja", + "name": "ミッドウェー島、サモア", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "Pacific/Johnston", + "language": "ja", + "name": "ハワイ", + "utc_offset": "-36000", + "order": "2" + } + ], + "pt": [ + { + "area": "Pacific/Midway", + "language": "pt", + "name": "Atol de Midway, Samoa Ocidental", + "utc_offset": "-39600", + "order": "0" + } + ] + }, + "US": { + "en": [ + { + "area": "Pacific/Midway", + "language": "en", + "name": "Midway Island, Samoa", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "America/Adak", + "language": "en", + "name": "Adak", + "utc_offset": "-36000", + "order": "2" + }, + { + "area": "Pacific/Honolulu", + "language": "en", + "name": "Hawaii", + "utc_offset": "-36000", + "order": "3" + }, + { + "area": "America/Anchorage", + "language": "en", + "name": "Alaska", + "utc_offset": "-32400", + "order": "4" + }, + { + "area": "America/Los_Angeles", + "language": "en", + "name": "Pacific Time (US & Canada)", + "utc_offset": "-28800", + "order": "5" + }, + { + "area": "America/Boise", + "language": "en", + "name": "Mountain Time (US & Canada)", + "utc_offset": "-25200", + "order": "6" + }, + { + "area": "America/Phoenix", + "language": "en", + "name": "Arizona", + "utc_offset": "-25200", + "order": "7" + }, + { + "area": "America/Chicago", + "language": "en", + "name": "Central Time (US & Canada)", + "utc_offset": "-21600", + "order": "8" + }, + { + "area": "America/Indiana/Knox", + "language": "en", + "name": "Indiana (Central)", + "utc_offset": "-21600", + "order": "9" + }, + { + "area": "America/Indiana/Indianapolis", + "language": "en", + "name": "Indiana (East)", + "utc_offset": "-18000", + "order": "10" + }, + { + "area": "America/New_York", + "language": "en", + "name": "Eastern Time (US & Canada)", + "utc_offset": "-18000", + "order": "11" + }, + { + "area": "America/Puerto_Rico", + "language": "en", + "name": "Georgetown, La Paz, San Juan", + "utc_offset": "-14400", + "order": "12" + }, + { + "area": "Pacific/Guam", + "language": "en", + "name": "Guam, Port Moresby", + "utc_offset": "36000", + "order": "13" + }, + { + "area": "Pacific/Wake", + "language": "en", + "name": "Wake Island", + "utc_offset": "43200", + "order": "14" + } + ], + "es": [ + { + "area": "Pacific/Midway", + "language": "es", + "name": "Islas Midway, Samoa", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "America/Adak", + "language": "es", + "name": "Adak", + "utc_offset": "-36000", + "order": "2" + }, + { + "area": "Pacific/Honolulu", + "language": "es", + "name": "Hawái", + "utc_offset": "-36000", + "order": "3" + }, + { + "area": "America/Anchorage", + "language": "es", + "name": "Alaska", + "utc_offset": "-32400", + "order": "4" + }, + { + "area": "America/Los_Angeles", + "language": "es", + "name": "Horario del Pacífico (EE. UU. y Canadá)", + "utc_offset": "-28800", + "order": "5" + }, + { + "area": "America/Boise", + "language": "es", + "name": "Horario de Montaña (EE. UU. y Canadá)", + "utc_offset": "-25200", + "order": "6" + }, + { + "area": "America/Phoenix", + "language": "es", + "name": "Arizona", + "utc_offset": "-25200", + "order": "7" + }, + { + "area": "America/Chicago", + "language": "es", + "name": "Horario del Centro (EE. UU. y Canadá)", + "utc_offset": "-21600", + "order": "8" + }, + { + "area": "America/Indiana/Knox", + "language": "es", + "name": "Indiana (Horario del Centro)", + "utc_offset": "-21600", + "order": "9" + }, + { + "area": "America/Indiana/Indianapolis", + "language": "es", + "name": "Indiana (Horario del Este)", + "utc_offset": "-18000", + "order": "10" + }, + { + "area": "America/New_York", + "language": "es", + "name": "Horario del Este (EE. UU. y Canadá)", + "utc_offset": "-18000", + "order": "11" + }, + { + "area": "America/Puerto_Rico", + "language": "es", + "name": "Georgetown, La Paz, San Juan", + "utc_offset": "-14400", + "order": "12" + }, + { + "area": "Pacific/Guam", + "language": "es", + "name": "Guam, Puerto Moresby", + "utc_offset": "36000", + "order": "13" + }, + { + "area": "Pacific/Wake", + "language": "es", + "name": "Isla Wake", + "utc_offset": "43200", + "order": "14" + } + ], + "fr": [ + { + "area": "Pacific/Midway", + "language": "fr", + "name": "Îles Midway, Samoa", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "America/Adak", + "language": "fr", + "name": "Île Adak", + "utc_offset": "-36000", + "order": "2" + }, + { + "area": "Pacific/Honolulu", + "language": "fr", + "name": "Hawaï", + "utc_offset": "-36000", + "order": "3" + }, + { + "area": "America/Anchorage", + "language": "fr", + "name": "Alaska", + "utc_offset": "-32400", + "order": "4" + }, + { + "area": "America/Los_Angeles", + "language": "fr", + "name": "Heure du Pacifique (É.-U. et Canada)", + "utc_offset": "-28800", + "order": "5" + }, + { + "area": "America/Boise", + "language": "fr", + "name": "Heure des Rocheuses (É.-U. et Canada)", + "utc_offset": "-25200", + "order": "6" + }, + { + "area": "America/Phoenix", + "language": "fr", + "name": "Arizona", + "utc_offset": "-25200", + "order": "7" + }, + { + "area": "America/Chicago", + "language": "fr", + "name": "Heure du Centre (É.-U. et Canada)", + "utc_offset": "-21600", + "order": "8" + }, + { + "area": "America/Indiana/Knox", + "language": "fr", + "name": "Indiana (Centre)", + "utc_offset": "-21600", + "order": "9" + }, + { + "area": "America/Indiana/Indianapolis", + "language": "fr", + "name": "Indiana (Est)", + "utc_offset": "-18000", + "order": "10" + }, + { + "area": "America/New_York", + "language": "fr", + "name": "Heure de l'Est (É.-U. et Canada)", + "utc_offset": "-18000", + "order": "11" + }, + { + "area": "America/Puerto_Rico", + "language": "fr", + "name": "Georgetown, La Paz, San Juan", + "utc_offset": "-14400", + "order": "12" + }, + { + "area": "Pacific/Guam", + "language": "fr", + "name": "Guam, Port Moresby", + "utc_offset": "36000", + "order": "13" + }, + { + "area": "Pacific/Wake", + "language": "fr", + "name": "Île Wake", + "utc_offset": "43200", + "order": "14" + } + ], + "ja": [ + { + "area": "Pacific/Midway", + "language": "ja", + "name": "ミッドウェー島、サモア", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "America/Adak", + "language": "ja", + "name": "アダック島", + "utc_offset": "-36000", + "order": "2" + }, + { + "area": "Pacific/Honolulu", + "language": "ja", + "name": "ハワイ", + "utc_offset": "-36000", + "order": "3" + }, + { + "area": "America/Anchorage", + "language": "ja", + "name": "アラスカ", + "utc_offset": "-32400", + "order": "4" + }, + { + "area": "America/Los_Angeles", + "language": "ja", + "name": "太平洋標準時(米国およびカナダ)", + "utc_offset": "-28800", + "order": "5" + }, + { + "area": "America/Boise", + "language": "ja", + "name": "山地標準時(米国およびカナダ)", + "utc_offset": "-25200", + "order": "6" + }, + { + "area": "America/Phoenix", + "language": "ja", + "name": "アリゾナ", + "utc_offset": "-25200", + "order": "7" + }, + { + "area": "America/Chicago", + "language": "ja", + "name": "中央標準時(米国およびカナダ)", + "utc_offset": "-21600", + "order": "8" + }, + { + "area": "America/Indiana/Knox", + "language": "ja", + "name": "インディアナ中部", + "utc_offset": "-21600", + "order": "9" + }, + { + "area": "America/Indiana/Indianapolis", + "language": "ja", + "name": "インディアナ東部", + "utc_offset": "-18000", + "order": "10" + }, + { + "area": "America/New_York", + "language": "ja", + "name": "東部標準時(米国およびカナダ)", + "utc_offset": "-18000", + "order": "11" + }, + { + "area": "America/Puerto_Rico", + "language": "ja", + "name": "ジョージタウン、ラパス、サンフアン", + "utc_offset": "-14400", + "order": "12" + }, + { + "area": "Pacific/Guam", + "language": "ja", + "name": "グアム、ポートモレスビー", + "utc_offset": "36000", + "order": "13" + }, + { + "area": "Pacific/Wake", + "language": "ja", + "name": "ウェーク島", + "utc_offset": "43200", + "order": "14" + } + ], + "pt": [ + { + "area": "Pacific/Midway", + "language": "pt", + "name": "Atol de Midway, Samoa Ocidental", + "utc_offset": "-39600", + "order": "1" + }, + { + "area": "America/Adak", + "language": "pt", + "name": "Adak", + "utc_offset": "-36000", + "order": "2" + }, + { + "area": "Pacific/Honolulu", + "language": "pt", + "name": "Havaí", + "utc_offset": "-36000", + "order": "3" + }, + { + "area": "America/Anchorage", + "language": "pt", + "name": "Alasca", + "utc_offset": "-32400", + "order": "4" + }, + { + "area": "America/Los_Angeles", + "language": "pt", + "name": "Costa Pacífica (EUA e Canadá)", + "utc_offset": "-28800", + "order": "5" + }, + { + "area": "America/Boise", + "language": "pt", + "name": "Montanhas Rochosas (EUA e Canadá)", + "utc_offset": "-25200", + "order": "6" + }, + { + "area": "America/Phoenix", + "language": "pt", + "name": "Arizona", + "utc_offset": "-25200", + "order": "7" + }, + { + "area": "America/Chicago", + "language": "pt", + "name": "Região Central (EUA e Canadá)", + "utc_offset": "-21600", + "order": "8" + }, + { + "area": "America/Indiana/Knox", + "language": "pt", + "name": "Indiana (Região Central)", + "utc_offset": "-21600", + "order": "9" + }, + { + "area": "America/Indiana/Indianapolis", + "language": "pt", + "name": "Indiana (Costa Leste)", + "utc_offset": "-18000", + "order": "10" + }, + { + "area": "America/New_York", + "language": "pt", + "name": "Costa Leste (EUA e Canadá)", + "utc_offset": "-18000", + "order": "11" + }, + { + "area": "America/Puerto_Rico", + "language": "pt", + "name": "Georgetown, La Paz, San Juan", + "utc_offset": "-14400", + "order": "12" + }, + { + "area": "Pacific/Guam", + "language": "pt", + "name": "Guam, Porto Moresby", + "utc_offset": "36000", + "order": "13" + }, + { + "area": "Pacific/Wake", + "language": "pt", + "name": "Ilhas Wake", + "utc_offset": "43200", + "order": "14" + } + ] + }, + "UY": { + "en": [ + { + "area": "America/Montevideo", + "language": "en", + "name": "Montevideo", + "utc_offset": "-10800", + "order": "0" + } + ], + "es": [ + { + "area": "America/Montevideo", + "language": "es", + "name": "Montevideo", + "utc_offset": "-10800", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Montevideo", + "language": "fr", + "name": "Montevideo", + "utc_offset": "-10800", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Montevideo", + "language": "ja", + "name": "モンテビデオ", + "utc_offset": "-10800", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Montevideo", + "language": "pt", + "name": "Montevidéu", + "utc_offset": "-10800", + "order": "0" + } + ] + }, + "UZ": { + "ja": [ + { + "area": "Asia/Tashkent", + "language": "ja", + "name": "タシュケント", + "utc_offset": "18000", + "order": "0" + } + ] + }, + "VA": { + "en": [ + { + "area": "Europe/Vatican", + "language": "en", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "de": [ + { + "area": "Europe/Vatican", + "language": "de", + "name": "Amsterdam, Berlin, Rom", + "utc_offset": "3600", + "order": "0" + } + ], + "es": [ + { + "area": "Europe/Vatican", + "language": "es", + "name": "Ámsterdam, Berlín, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "fr": [ + { + "area": "Europe/Vatican", + "language": "fr", + "name": "Amsterdam, Berlin, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "it": [ + { + "area": "Europe/Vatican", + "language": "it", + "name": "Amsterdam, Berlino, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "ja": [ + { + "area": "Europe/Vatican", + "language": "ja", + "name": "アムステルダム、ベルリン、ローマ", + "utc_offset": "3600", + "order": "0" + } + ], + "nl": [ + { + "area": "Europe/Vatican", + "language": "nl", + "name": "Amsterdam, Berlijn, Rome", + "utc_offset": "3600", + "order": "0" + } + ], + "pt": [ + { + "area": "Europe/Vatican", + "language": "pt", + "name": "Amesterdão, Berlim, Roma", + "utc_offset": "3600", + "order": "0" + } + ], + "ru": [ + { + "area": "Europe/Vatican", + "language": "ru", + "name": "Амстердам, Берлин, Рим", + "utc_offset": "3600", + "order": "0" + } + ] + }, + "VC": { + "en": [ + { + "area": "America/St_Vincent", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/St_Vincent", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/St_Vincent", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/St_Vincent", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/St_Vincent", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "VE": { + "en": [ + { + "area": "America/Caracas", + "language": "en", + "name": "Caracas", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Caracas", + "language": "es", + "name": "Caracas", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Caracas", + "language": "fr", + "name": "Caracas", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Caracas", + "language": "ja", + "name": "カラカス", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Caracas", + "language": "pt", + "name": "Caracas", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "VG": { + "en": [ + { + "area": "America/Tortola", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/Tortola", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/Tortola", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/Tortola", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/Tortola", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "VI": { + "en": [ + { + "area": "America/St_Thomas", + "language": "en", + "name": "Atlantic Time (Caribbean)", + "utc_offset": "-14400", + "order": "0" + } + ], + "es": [ + { + "area": "America/St_Thomas", + "language": "es", + "name": "Horario del Atlántico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ], + "fr": [ + { + "area": "America/St_Thomas", + "language": "fr", + "name": "Atlantique (Caraïbes)", + "utc_offset": "-14400", + "order": "0" + } + ], + "ja": [ + { + "area": "America/St_Thomas", + "language": "ja", + "name": "大西洋標準時(カリブ)", + "utc_offset": "-14400", + "order": "0" + } + ], + "pt": [ + { + "area": "America/St_Thomas", + "language": "pt", + "name": "Atlântico (Caribe)", + "utc_offset": "-14400", + "order": "0" + } + ] + }, + "VN": { + "ja": [ + { + "area": "Asia/Ho_Chi_Minh", + "language": "ja", + "name": "バンコク、ハノイ、ジャカルタ", + "utc_offset": "25200", + "order": "0" + } + ] + }, + "YE": { + "ja": [ + { + "area": "Asia/Aden", + "language": "ja", + "name": "クウェート、リヤド", + "utc_offset": "10800", + "order": "0" + } + ] + }, + "ZA": { + "en": [ + { + "area": "Africa/Johannesburg", + "language": "en", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Johannesburg", + "language": "de", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Johannesburg", + "language": "es", + "name": "Maseru, Mbabane, Johannesburgo", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Johannesburg", + "language": "fr", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Johannesburg", + "language": "it", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Johannesburg", + "language": "ja", + "name": "マセル、ムババーネ、ヨハネスブルグ", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Johannesburg", + "language": "nl", + "name": "Maseru, Mbabane, Johannesburg", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Johannesburg", + "language": "pt", + "name": "Maseru, Mebabane, Joanesburgo", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Johannesburg", + "language": "ru", + "name": "Масеру, Мбабане, Йоханнесбург", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "ZM": { + "en": [ + { + "area": "Africa/Lusaka", + "language": "en", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Lusaka", + "language": "de", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Lusaka", + "language": "es", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Lusaka", + "language": "fr", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Lusaka", + "language": "it", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Lusaka", + "language": "ja", + "name": "ルサカ、ハラレ、ハボローネ、マプト", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Lusaka", + "language": "nl", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Lusaka", + "language": "pt", + "name": "Lusaca, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Lusaka", + "language": "ru", + "name": "Лусака, Хараре, Габороне, Мапуту", + "utc_offset": "7200", + "order": "0" + } + ] + }, + "ZW": { + "en": [ + { + "area": "Africa/Harare", + "language": "en", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "de": [ + { + "area": "Africa/Harare", + "language": "de", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "es": [ + { + "area": "Africa/Harare", + "language": "es", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "fr": [ + { + "area": "Africa/Harare", + "language": "fr", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "it": [ + { + "area": "Africa/Harare", + "language": "it", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "ja": [ + { + "area": "Africa/Harare", + "language": "ja", + "name": "ルサカ、ハラレ、ハボローネ、マプト", + "utc_offset": "7200", + "order": "0" + } + ], + "nl": [ + { + "area": "Africa/Harare", + "language": "nl", + "name": "Lusaka, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "pt": [ + { + "area": "Africa/Harare", + "language": "pt", + "name": "Lusaca, Harare, Gaborone, Maputo", + "utc_offset": "7200", + "order": "0" + } + ], + "ru": [ + { + "area": "Africa/Harare", + "language": "ru", + "name": "Лусака, Хараре, Габороне, Мапуту", + "utc_offset": "7200", + "order": "0" + } + ] + } +} \ No newline at end of file diff --git a/src/account/account.rs b/src/account/account.rs index a4616b4..df3dc88 100644 --- a/src/account/account.rs +++ b/src/account/account.rs @@ -1,10 +1,158 @@ -use diesel::{Queryable, Selectable}; +use std::io::Write; +use argon2::{Algorithm, Argon2, PasswordHash, PasswordHasher, PasswordVerifier}; +use argon2::password_hash::rand_core::OsRng; +use argon2::password_hash::SaltString; +use base64::Engine; +use base64::prelude::BASE64_STANDARD; +use bytemuck::bytes_of; +use log::{error, warn}; +use rocket::http::Status; +use rocket::{async_trait, Request}; +use rocket::request::{FromRequest, Outcome}; +use sha2::{Digest, Sha256}; +use sha2::digest::FixedOutput; +use crate::error::{Error, Errors}; +use crate::Pool; -#[derive(Queryable, Selectable)] -#[diesel(table_name = crate::db::user)] -#[diesel(check_for_backend(diesel::mysql::Mysql))] +macro_rules! request_try { + ($expression:expr) => { + match $expression{ + Ok(v) => v, + Err(e) => return Outcome::Error((Status::BadRequest, e)) + } + }; +} + +const INVALID_TOKEN_ERRORS: Errors<'static> = Errors{ + error: &[ + Error{ + message: "Invalid access token", + code: "0005" + } + ] +}; + +// optimization note: add token caching pub struct User { pub id: i32, pub name: String, - pub hashed_pw: String + pub password: String, + pub birthdate: chrono::NaiveDate, + pub timezone: String, + pub email: String, + pub gender: String, + pub country: String, + pub language: String, + pub marketing_allowed: bool, + pub region: i32, + pub mii_identifier: String +} + +fn generate_nintendo_hash(pid: i32, text_password: &str) -> String{ + let mut sha = Sha256::new(); + + sha.write_all(&bytes_of(&pid)).unwrap(); + sha.write_all(&[0x02, 0x65, 0x43 ,0x46]).unwrap(); + sha.write_all(text_password.as_bytes()).unwrap(); + + hex::encode(&sha.finalize()[..]) +} + +impl User{ + fn generate_nintendo_hash(&self, text_password: &str) -> String{ + generate_nintendo_hash(self.id, text_password) + } + + pub fn verify_password(&self, cleartext_password: &str) -> (bool, bool){ + let Ok(hash) = PasswordHash::new(&self.password) else { + error!("invalid password in database for user with pid: {}", self.id); + + if self.password == self.generate_nintendo_hash(cleartext_password){ + return (true, true) + } + + return (false, false) + }; + + let argon = Argon2::default(); + + (argon.verify_password(cleartext_password.as_bytes(), &hash).is_ok(), false) + } +} + +pub fn generate_password(pid: i32, cleartext_password: &str) -> Option{ + let password = generate_nintendo_hash(pid, cleartext_password); + + let salt = SaltString::generate(&mut OsRng); + let argon = Argon2::default(); + + let pw = argon.hash_password(password.as_bytes(), &salt).ok()?; + + Some(pw.to_string()) +} + + +pub async fn read_basic_auth_token(connection: &mut AsyncMysqlConnection, token: &str) -> Option { + let data = BASE64_STANDARD.decode(&token).ok()?; + + let decoded_basic_token = String::from_utf8(data).ok()?; + + let (login_username, login_password) = decoded_basic_token.split_once(' ')?; + + + + let mut user: User = users + .filter(name.eq(login_username)) + .select(User::as_select()) + .first(connection) + .await.ok()?; + + let (password_valid, upgrade_password) = user.verify_password(&login_password); + + if password_valid{ + if upgrade_password{ + user.password = generate_password(&login_password).unwrap(); + + user = connection.update_and_fetch(&user).await.ok()?; + } + + Some(user) + } else { + None + } +} + +async fn read_bearer_auth_token(connection: &mut AsyncMysqlConnection, token: &str) -> Option { + let data = BASE64_STANDARD.decode(&token).ok()?; + + warn!("bearer token login currently unsupported"); + + None +} + +#[async_trait] +impl<'r> FromRequest<'r> for User{ + type Error = Errors<'static>; + + async fn from_request(request: &'r Request<'_>) -> Outcome { + let pool: &Pool = request.rocket().state().unwrap(); + + let mut connection = pool.get().await.unwrap(); + + let auth = request_try!(request.headers().get("Authorization").next().ok_or(INVALID_TOKEN_ERRORS)); + + let (auth_type, token) = request_try!(auth.split_once(' ').ok_or(INVALID_TOKEN_ERRORS)); + + let user = match auth_type{ + "Basic" => read_basic_auth_token(&mut connection, token).await, + "Bearer" => read_bearer_auth_token(&mut connection, token).await, + _ => return Outcome::Error((Status::BadRequest, INVALID_TOKEN_ERRORS)), + }; + + let Some(user) = user else { + return Outcome::Error((Status::BadRequest, INVALID_TOKEN_ERRORS)); + }; + + Outcome::Success(user) + } } \ No newline at end of file diff --git a/src/account/mod.rs b/src/account/mod.rs index d1f6818..3ce1632 100644 --- a/src/account/mod.rs +++ b/src/account/mod.rs @@ -1 +1 @@ -mod account; \ No newline at end of file +pub mod account; \ No newline at end of file diff --git a/src/dsresponse.rs b/src/dsresponse.rs new file mode 100644 index 0000000..f1ade8c --- /dev/null +++ b/src/dsresponse.rs @@ -0,0 +1,16 @@ +use std::marker::PhantomData; +use rocket::{Request, Response}; +use rocket::http::{Header, Status}; +use rocket::response::Responder; +use crate::error::Errors; +use crate::xml::Xml; + +pub struct Ds(pub T); + +impl<'r, 'o: 'r, T: Responder<'r, 'o>> Responder<'r, 'o> for Ds { + fn respond_to(self, request: &'r Request<'_>) -> rocket::response::Result<'o> { + Response::build_from(self.0.respond_to(request)?) + .header(Header::new("Server", "Nintendo 3DS (http)")) + .ok() + } +} \ No newline at end of file diff --git a/src/error.rs b/src/error.rs new file mode 100644 index 0000000..5b9f03d --- /dev/null +++ b/src/error.rs @@ -0,0 +1,28 @@ +use log::error; +use rocket::http::Status; +use rocket::{Request, Response}; +use rocket::response::content::RawXml; +use rocket::response::Responder; +use rocket::serde::Serialize; +use crate::nnid::timezones::Timezone; +use crate::xml::{serialize_with_version, Xml}; + +#[derive(Serialize, Debug)] +pub struct Error<'a>{ + pub code: &'a str, + pub message: &'a str +} + +#[derive(Serialize, Debug)] +#[serde(rename(serialize = "errors"))] +pub struct Errors<'a>{ + pub error: &'a [Error<'a>], +} + +impl<'r, 'o: 'r> Responder<'r, 'o> for Errors<'r> { + fn respond_to(self, request: &'r Request<'_>) -> rocket::response::Result<'o> { + Response::build_from(Xml(self).respond_to(request)?) + .status(Status::BadRequest) + .ok() + } +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index dbf2d16..e3f89eb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,26 +1,60 @@ use std::env; -use diesel::{Connection, MysqlConnection}; +use std::sync::Arc; +use std::time::{SystemTime, UNIX_EPOCH}; use dotenvy::dotenv; +use log::info; use rocket::fairing::AdHoc; use rocket::http::Header; use rocket::routes; +use sqlx::Postgres; +use sqlx::postgres::PgPoolOptions; mod xml; mod conntest; -mod db; +mod nnid; mod account; +mod error; +mod dsresponse; + +type Pool = sqlx::Pool; #[rocket::launch] async fn launch() -> _ { dotenv().ok(); - let act_database_url = env::var("ACCOUNT_DATABASE_URL").expect("account database url is not set"); - let conn = MysqlConnection::establish(&act_database_url).expect("unable to connect to database"); + + let act_database_url = env::var("DATABASE_URL").expect("account database url is not set"); + + let pool = PgPoolOptions::new() + .max_connections(5) + .connect(&act_database_url).await + .expect("unable to create pool"); rocket::build() + .manage(pool) .attach(AdHoc::on_response("org", |_, response| Box::pin(async move { - response.adjoin_header(Header::new("x-organization", "Nintendo")); + //response.adjoin_header(Header::new("x-organization", "Nintendo")); + response.adjoin_header(Header::new("x-nintendo-date", SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_millis() + .to_string() + )); + + response.adjoin_header(Header::new("Content-Type", "text/xml; charset=utf-8")); + + + response.remove_header("x-content-type-options"); + response.remove_header("x-frame-options"); + response.remove_header("permissions-policy"); }))) - .mount("/", routes![conntest::conntest]) + .mount("/", routes![ + conntest::conntest, + nnid::devices::current_device_status, + nnid::agreements::get_agreement, + nnid::timezones::get_timezone, + nnid::person_exists::person_exists, + nnid::email::validate + ]) } diff --git a/src/nnid/agreements.rs b/src/nnid/agreements.rs new file mode 100644 index 0000000..78fc6a4 --- /dev/null +++ b/src/nnid/agreements.rs @@ -0,0 +1,45 @@ +use std::{env, fs, io}; +use rocket::fs::NamedFile; +use rocket::get; +use rocket::response::content::RawXml; +use tokio::fs::try_exists; +use crate::dsresponse::Ds; +use crate::nnid::devices::Device; +use crate::xml::Xml; + +#[get("/v1/api/content/agreements/Nintendo-Network-EULA//@latest")] +pub async fn get_agreement(lang: &str) -> io::Result>>{ + let base_path = { + // if this crashes then something is wrong with the server setup so crashing here is fine imo + let mut path = env::current_dir().unwrap(); + + path.push("res"); + path.push("agreement"); + + path + }; + + let requested_file_path = { + let mut path = base_path.clone(); + + path.push(format!("{}.xml", lang)); + + path + }; + + + + if try_exists(&requested_file_path).await.is_ok_and(|v| v == true){ + Ok(Ds(RawXml(NamedFile::open(&requested_file_path).await?))) + } else { + let fallback_path = { + let mut path = base_path; + + path.push("DEFAULT.xml"); + + path + }; + + Ok(Ds(RawXml(NamedFile::open(&fallback_path).await?))) + } +} \ No newline at end of file diff --git a/src/nnid/create_account.rs b/src/nnid/create_account.rs new file mode 100644 index 0000000..cf97482 --- /dev/null +++ b/src/nnid/create_account.rs @@ -0,0 +1,176 @@ +use chrono::NaiveDate; +use rocket::{post, State}; +use serde::{Deserialize, Serialize}; +use crate::account::account::{generate_password, User}; +use crate::error::Errors; +use crate::Pool; +use crate::xml::{Xml, YesNoVal}; + +#[derive(Deserialize)] +struct Email{ + address: Box +} + +#[derive(Deserialize, Serialize)] +struct Mii{ + name: Box, + primary: YesNoVal, + data: Box, +} + +#[derive(Deserialize)] +#[serde(rename(serialize = "person"))] +struct AccountCreationData{ + birth_date: NaiveDate, + user_id: Box, + password: Box, + country: Box, + language: Box, + tz_name: Box, + email: Email, + gender: Box, + marketing_flag: YesNoVal, + region: i32 +} + +#[derive(Serialize)] +#[serde(rename(serialize = "person"))] +struct AccountCreationResponseData{ + pid: i32 +} + +#[post("/v1/api/people", data="")] +async fn create_account(database: &State, data: Xml) -> Result, Errors>{ + let database = database.inner(); + + let AccountCreationData { + user_id, + password, + birth_date, + tz_name, + language, + email: Email{ + address + }, + marketing_flag, + gender, + region, + country, + .. + } = *data; + + + + let new_account = sqlx::query(" + INSERT INTO users.users ( + pid, + username, + password, + birthdate, + birthdate, + timezone, + email, + country, + language, + marketing_allowed, + off_device_allowed, + region, + mii_data + ) VALUES ( + ?,?,?,?,?,?,?,?,?,? + ) + "); + + + + let pid = connection.transaction::<_, diesel::result::Error, _>(|conn| Box::pin(async move{ + use crate::schema::users::dsl::*; + + diesel::insert_into(users) + .values(&new_account) + .returning(User::as_returning()) + .get_result(conn) + .await?; + + + Ok(()) + })).await; +} + +#[cfg(test)] +mod test{ + use chrono::NaiveDate; + use crate::nnid::create_account::AccountCreationData; + + const TEST_XML: &str = +" + + 1991-02-03 + testtest + [PASSWORD] + DE + en + Europe/Berlin + + 2025-02-24T19:42:45 + US + https://account.spfn.cc/v1/api/content/agreements/Nintendo-Network-EULA/0300 + NINTENDO-NETWORK-EULA + 0300 + + +
tvnebel@gmail.com
+ N + N + Y + N + DEFAULT +
+ + y + Y + + AwAAQDrPvmeBxJIQ3j+V8Ip4iCWDvgAAAEB5AAAAIABOAEEATQBFAAAAAAAAAEBAAAAhAQJoRBgm + NEYUgRIXaA0AACkAUkhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzO + + + + 1 + 2025-02-24T19:42:45 + 0 + + M + 1309343744 + N + + + uuid_account + 55fdbad0-f2ab-11ef-b648-010144cdca06 + + + uuid_common + 898ed052-5e25-11ef-b648-010144cdca06 + + + persistent_id + 8000001d + + + transferable_id_base + 0800000444cdca06 + + + transferable_id_base_common + 0640000444cdca06 + + + N +
"; + #[test] + fn test(){ + let data: AccountCreationData = quick_xml::de::from_str(TEST_XML).unwrap(); + + assert_eq!(data.birth_date, NaiveDate::from_ymd_opt(1991,02,03).unwrap()); + assert_eq!(data.user_id.as_ref(), "testtest"); + } +} \ No newline at end of file diff --git a/src/nnid/devices.rs b/src/nnid/devices.rs new file mode 100644 index 0000000..5ec86eb --- /dev/null +++ b/src/nnid/devices.rs @@ -0,0 +1,28 @@ +use rocket::get; +use serde::Serialize; +use crate::xml::Xml; + +#[derive(Serialize)] +#[serde(rename(serialize = "device"))] +pub struct Device; + +#[get("/v1/api/devices/@current/status")] +pub fn current_device_status() -> Xml{ + Xml(Device) +} + +#[cfg(test)] +mod tests { + use std::str::from_utf8; + use crate::nnid::devices::Device; + + #[test] + fn test_device_data(){ + let text = crate::xml::serialize_with_version(&Device).unwrap(); + + + + println!("{}", text); + + } +} \ No newline at end of file diff --git a/src/nnid/email.rs b/src/nnid/email.rs new file mode 100644 index 0000000..a229bd6 --- /dev/null +++ b/src/nnid/email.rs @@ -0,0 +1,11 @@ +use rocket::{post, FromForm}; +use rocket::form::Form; + +#[derive(FromForm)] +struct ValidateEmailInput{ + email: String, +} +#[post("/v1/api/support/validate/email", data="")] +pub fn validate(data: Form){ + +} \ No newline at end of file diff --git a/src/nnid/mod.rs b/src/nnid/mod.rs new file mode 100644 index 0000000..d4deed5 --- /dev/null +++ b/src/nnid/mod.rs @@ -0,0 +1,6 @@ +pub mod devices; +pub mod agreements; +pub mod timezones; +pub mod person_exists; +pub mod email; +mod create_account; \ No newline at end of file diff --git a/src/nnid/person_exists.rs b/src/nnid/person_exists.rs new file mode 100644 index 0000000..cc4f913 --- /dev/null +++ b/src/nnid/person_exists.rs @@ -0,0 +1,58 @@ +use rocket::{get, State}; +use sqlx::Row; +use crate::error::{Error, Errors}; +use crate::Pool; +use crate::xml::Xml; + +#[get("/v1/api/people/")] +pub async fn person_exists(database: &State, username: &str) -> Result<(), Errors<'static>>{ + let database = database.inner(); + + let exists: bool = sqlx::query_as!( + bool, + "SELECT EXISTS(SELECT 1 FROM users.users WHERE username = ? )", + username + ).fetch_one(database) + .await + .unwrap_or(true); + + if exists { + Err( + Errors{ + error: &[ + Error{ + code: "0100", + message: "Account ID already exists" + } + ], + } + ) + } else { + Ok(()) + } +} + +#[cfg(test)] +mod test{ + use crate::error::{Error, Errors}; + use crate::xml::serialize_with_version; + + #[test] + fn test(){ + let val = Errors{ + error: &[ + Error{ + code: "0100", + message: "Account ID already exists" + } + ], + }; + + let enc = serialize_with_version(&val).unwrap(); + + assert_eq!( + enc.as_ref(), + "0100Account ID already exists" + ) + } +} \ No newline at end of file diff --git a/src/nnid/timezones.rs b/src/nnid/timezones.rs new file mode 100644 index 0000000..3224015 --- /dev/null +++ b/src/nnid/timezones.rs @@ -0,0 +1,64 @@ +use std::collections::HashMap; +use std::{env, fs}; +use once_cell::sync::Lazy; +use rocket::get; +use serde::{Deserialize, Serialize}; +use serde_json::from_slice; +use crate::xml::{serialize_with_version, Xml}; + +#[derive(Serialize, Deserialize)] +#[serde(rename(serialize = "timezone"))] +pub struct Timezone{ + area: String, + language: String, + name: String, + utc_offset: String, + order: String +} + +#[derive(Serialize)] +#[serde(rename(serialize = "timezones"))] +pub struct Timezones<'a>{ + pub timezone: &'a [Timezone], +} + +pub static TIMEZONES: Lazy>>> = Lazy::new(||{ + let path = { + // if this crashes then something is wrong with the server setup so crashing here is fine imo + let mut path = env::current_dir().unwrap(); + + path.push("res"); + path.push("timezones.json"); + + path + }; + serde_json::from_str(&fs::read_to_string(path).unwrap()).unwrap() +}); + + +#[get("/v1/api/content/time_zones//")] +pub fn get_timezone(zone: &str, lang: &str) -> Option>>{ + let timezone = (&*TIMEZONES).get(zone)?.get(lang)?; + let timezones = Timezones{ timezone }; + Some(Xml(timezones)) +} + +#[cfg(test)] +mod test{ + use crate::nnid::timezones::{Timezones, TIMEZONES}; + use crate::xml::serialize_with_version; + + #[test] + fn test(){ + let timezone = (&*TIMEZONES).get("DE").unwrap().get("en").unwrap(); + let timezones = Timezones{ timezone }; + let ser = serialize_with_version(&timezones).unwrap(); + + println!("{}", ser); + + assert_eq!( + ser.as_ref(), + "Europe/BerlinenAmsterdam, Berlin, Rome36000" + ) + } +} \ No newline at end of file diff --git a/src/xml.rs b/src/xml.rs index a460293..88af660 100644 --- a/src/xml.rs +++ b/src/xml.rs @@ -1,17 +1,51 @@ +use std::fmt::Formatter; +use std::io::Cursor; +use std::ops::{Deref, DerefMut}; +use std::result; use rocket::http::Status; -use rocket::Request; +use rocket::{async_trait, Data, Request}; use rocket::response::Responder; -use serde::Serialize; +use serde::{Deserialize, Deserializer, Serialize}; use rocket::response::Result; use log::error; +use quick_xml::events::{BytesDecl, Event}; +use quick_xml::se::Serializer; +use quick_xml::{DeError, SeError}; +use rocket::data::{ByteUnit, FromData, Outcome}; use rocket::response::content::RawXml; +use rocket::response::status::BadRequest; +use serde::__private::de::UntaggedUnitVisitor; +use serde::de::{DeserializeOwned, Error, Visitor}; +use thiserror::Error; + +pub fn serialize_with_version(serializable: &impl Serialize) -> result::Result, SeError>{ + let mut write_dest = "".to_owned(); + + + + serializable.serialize(Serializer::new(&mut write_dest))?; + Ok(write_dest.into_boxed_str()) +} #[derive(Debug)] pub struct Xml(pub T); +impl Deref for Xml{ + type Target = T; + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl DerefMut for Xml{ + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } +} + impl<'r, 'o: 'r, T: Serialize> Responder<'r, 'o> for Xml{ fn respond_to(self, request: &'r Request<'_>) -> Result<'o> { - match quick_xml::se::to_string(&self.0){ + match serialize_with_version(&self.0){ Ok(ser) => { RawXml(ser).respond_to(request) }, @@ -21,4 +55,96 @@ impl<'r, 'o: 'r, T: Serialize> Responder<'r, 'o> for Xml{ } } } +} + +#[async_trait] +impl<'r, T: DeserializeOwned> FromData<'r> for Xml{ + type Error = Option; + + async fn from_data(req: &'r Request<'_>, data: Data<'r>) -> Outcome<'r, Self> { + let data = data.open(1 * ByteUnit::MB); + + let Ok(data) = data.into_string().await else { + return Outcome::Error((Status::BadRequest, None)) + }; + + + + match quick_xml::de::from_str(&data){ + Ok(v) => Outcome::Success(Self(v)), + Err(e) => Outcome::Error((Status::BadRequest, Some(e))) + } + } +} + + + +pub struct YesNoVal(pub bool); + +struct YesNoVisitor; + +#[derive(Debug, Error)] +#[error("did not find Y or N")] +struct NotYNError; + + + +impl<'de> Visitor<'de> for YesNoVisitor{ + type Value = YesNoVal; + + fn expecting(&self, formatter: &mut Formatter) -> std::fmt::Result { + write!(formatter, "expected Y or N") + } + + fn visit_str(self, v: &str) -> result::Result + where + E: Error, + { + match v{ + "Y" => Ok(YesNoVal(true)), + "N" => Ok(YesNoVal(false)), + _ => Err(E::custom("didnt get N or Y")) + } + } + + fn visit_bytes(self, v: &[u8]) -> result::Result + where + E: Error, + { + + const Y_BYTES: &[u8] = "Y".as_bytes(); + const N_BYTES: &[u8] = "N".as_bytes(); + + match v{ + Y_BYTES => Ok(YesNoVal(true)), + N_BYTES => Ok(YesNoVal(false)), + _ => Err(E::custom("didnt get N or Y")) + } + } + + + +} + +impl<'de> Deserialize<'de> for YesNoVal{ + fn deserialize(deserializer: D) -> result::Result + where + D: Deserializer<'de> + { + deserializer.deserialize_str(YesNoVisitor) + } +} + +impl Serialize for YesNoVal{ + fn serialize(&self, serializer: S) -> result::Result + where + S: serde::Serializer, + { + serializer.serialize_char( + match self.0{ + true => 'Y', + false => 'N', + } + ) + } } \ No newline at end of file