From e9b6586a3a065ea4cbe77a709362eb5f1c851757 Mon Sep 17 00:00:00 2001 From: 0x1eef <0x1eef@protonmail.com> Date: Wed, 16 Oct 2024 23:57:13 -0300 Subject: [PATCH] First commit --- .gitignore | 12 + Gemfile | 19 + Gemfile.lock | 163 + README.md | 107 + Rakefile.rb | 22 + Rules | 58 + bin/setup | 59 + etc/eslint.config.mjs | 12 + etc/rubocop.yml | 49 + etc/tsconfig.json | 20 + etc/webpack.common.js | 49 + etc/webpack.development.js | 8 + etc/webpack.production.js | 12 + etc/webpack.vendor.js | 14 + nanoc.yaml.sample | 32 + nanoc/lib/nanoc/extension/anonymous_filter.rb | 42 + nanoc/lib/nanoc/extension/require_rules.rb | 34 + nanoc/lib/utils.rb | 100 + nanoc/lib/utils/erb.rb | 19 + nanoc/lib/utils/inline.rb | 18 + nanoc/lib/utils/t.rb | 26 + nanoc/rules/assets.rules | 19 + nanoc/rules/random.rules | 22 + nanoc/rules/redirect.rules | 19 + nanoc/rules/surah-index.rules | 27 + nanoc/rules/surah-stream.rules | 40 + package-lock.json | 6388 +++++++++++++++++ package.json | 40 + packages/ruby/.gitkeep | 0 packages/typescript/Quran/package.json | 21 + packages/typescript/Quran/src/index.ts | 95 + packages/typescript/Quran/tsconfig.json | 15 + rake/tasks/ci.rake | 22 + rake/tasks/format.rake | 26 + rake/tasks/nanoc.rake | 34 + rake/tasks/server.rake | 19 + rake/tasks/t.rake | 14 + share/al-quran.reflectslight.io/CHANGELOG | 57 + share/al-quran.reflectslight.io/LICENSE | 674 ++ share/al-quran.reflectslight.io/VERSION | 1 + .../documentation/howto_add_language | 31 + src/css/_base.scss | 53 + src/css/base/_breakpoints.scss | 10 + src/css/base/_colors.scss | 2 + src/css/base/_icon.scss | 114 + src/css/base/_select.scss | 22 + src/css/main/SurahIndex.scss | 65 + src/css/main/SurahStream.scss | 55 + src/css/themes/blue.scss | 39 + src/css/themes/blue/_base.scss | 15 + src/css/themes/blue/base/_colors.scss | 4 + src/css/themes/blue/base/_icon.scss | 40 + src/css/themes/blue/base/_select.scss | 29 + src/css/themes/blue/main/_SurahIndex.scss | 58 + src/css/themes/blue/main/_SurahStream.scss | 19 + src/css/themes/green.scss | 40 + src/css/themes/green/_base.scss | 15 + src/css/themes/green/base/_colors.scss | 3 + src/css/themes/green/base/_icon.scss | 41 + src/css/themes/green/base/_select.scss | 29 + src/css/themes/green/main/_SurahIndex.scss | 31 + src/css/themes/green/main/_SurahStream.scss | 29 + src/css/vendor/tail.scss | 5303 ++++++++++++++ src/favicon.ico | Bin 0 -> 46696 bytes src/html/_favicon.html.erb | 6 + src/html/_version.html.erb | 2 + src/html/main/random.html.erb | 22 + src/html/main/redirect.html.erb | 19 + src/html/main/surah-index.html.erb | 25 + src/html/main/surah-stream.html.erb | 31 + src/images/favicon-128x128.png | Bin 0 -> 13089 bytes src/images/favicon-16x16.png | Bin 0 -> 814 bytes src/images/favicon-256x256.png | Bin 0 -> 30038 bytes src/images/favicon-32x32.png | Bin 0 -> 2120 bytes src/images/favicon-48x48.png | Bin 0 -> 3727 bytes src/images/favicon-64x64.png | Bin 0 -> 5513 bytes src/images/favicon.svg | 17 + src/js/components/AudioControl.tsx | 101 + src/js/components/Head.tsx | 30 + src/js/components/Icon.tsx | 228 + src/js/components/Select/LanguageSelect.tsx | 38 + src/js/components/Select/Option.tsx | 10 + src/js/components/Select/ThemeSelect.tsx | 34 + src/js/components/Select/index.tsx | 60 + src/js/components/SurahIndex/Filter.tsx | 40 + src/js/components/SurahIndex/index.tsx | 126 + src/js/components/SurahStream/Stream.tsx | 66 + src/js/components/SurahStream/index.tsx | 176 + src/js/components/Timer/index.tsx | 75 + src/js/hooks/useTheme.ts | 21 + src/js/lib/t.ts | 30 + src/js/main/random.ts | 7 + src/js/main/redirect.ts | 10 + src/js/main/surah-index.tsx | 17 + src/js/main/surah-stream.tsx | 34 + src/js/main/vendor.ts | 16 + src/json/ar/1/info.json | 8 + src/json/ar/1/surah.json | 1 + src/json/ar/10/info.json | 8 + src/json/ar/10/surah.json | 1 + src/json/ar/100/info.json | 8 + src/json/ar/100/surah.json | 1 + src/json/ar/101/info.json | 8 + src/json/ar/101/surah.json | 1 + src/json/ar/102/info.json | 8 + src/json/ar/102/surah.json | 1 + src/json/ar/103/info.json | 8 + src/json/ar/103/surah.json | 1 + src/json/ar/104/info.json | 8 + src/json/ar/104/surah.json | 1 + src/json/ar/105/info.json | 8 + src/json/ar/105/surah.json | 1 + src/json/ar/106/info.json | 8 + src/json/ar/106/surah.json | 1 + src/json/ar/107/info.json | 8 + src/json/ar/107/surah.json | 1 + src/json/ar/108/info.json | 8 + src/json/ar/108/surah.json | 1 + src/json/ar/109/info.json | 8 + src/json/ar/109/surah.json | 1 + src/json/ar/11/info.json | 8 + src/json/ar/11/surah.json | 1 + src/json/ar/110/info.json | 8 + src/json/ar/110/surah.json | 1 + src/json/ar/111/info.json | 8 + src/json/ar/111/surah.json | 1 + src/json/ar/112/info.json | 8 + src/json/ar/112/surah.json | 1 + src/json/ar/113/info.json | 8 + src/json/ar/113/surah.json | 1 + src/json/ar/114/info.json | 8 + src/json/ar/114/surah.json | 1 + src/json/ar/12/info.json | 8 + src/json/ar/12/surah.json | 1 + src/json/ar/13/info.json | 8 + src/json/ar/13/surah.json | 1 + src/json/ar/14/info.json | 8 + src/json/ar/14/surah.json | 1 + src/json/ar/15/info.json | 8 + src/json/ar/15/surah.json | 1 + src/json/ar/16/info.json | 8 + src/json/ar/16/surah.json | 1 + src/json/ar/17/info.json | 8 + src/json/ar/17/surah.json | 1 + src/json/ar/18/info.json | 8 + src/json/ar/18/surah.json | 1 + src/json/ar/19/info.json | 8 + src/json/ar/19/surah.json | 1 + src/json/ar/2/info.json | 8 + src/json/ar/2/surah.json | 1 + src/json/ar/20/info.json | 8 + src/json/ar/20/surah.json | 1 + src/json/ar/21/info.json | 8 + src/json/ar/21/surah.json | 1 + src/json/ar/22/info.json | 8 + src/json/ar/22/surah.json | 1 + src/json/ar/23/info.json | 8 + src/json/ar/23/surah.json | 1 + src/json/ar/24/info.json | 8 + src/json/ar/24/surah.json | 1 + src/json/ar/25/info.json | 8 + src/json/ar/25/surah.json | 1 + src/json/ar/26/info.json | 8 + src/json/ar/26/surah.json | 1 + src/json/ar/27/info.json | 8 + src/json/ar/27/surah.json | 1 + src/json/ar/28/info.json | 8 + src/json/ar/28/surah.json | 1 + src/json/ar/29/info.json | 8 + src/json/ar/29/surah.json | 1 + src/json/ar/3/info.json | 8 + src/json/ar/3/surah.json | 1 + src/json/ar/30/info.json | 8 + src/json/ar/30/surah.json | 1 + src/json/ar/31/info.json | 8 + src/json/ar/31/surah.json | 1 + src/json/ar/32/info.json | 8 + src/json/ar/32/surah.json | 1 + src/json/ar/33/info.json | 8 + src/json/ar/33/surah.json | 1 + src/json/ar/34/info.json | 8 + src/json/ar/34/surah.json | 1 + src/json/ar/35/info.json | 8 + src/json/ar/35/surah.json | 1 + src/json/ar/36/info.json | 8 + src/json/ar/36/surah.json | 1 + src/json/ar/37/info.json | 8 + src/json/ar/37/surah.json | 1 + src/json/ar/38/info.json | 8 + src/json/ar/38/surah.json | 1 + src/json/ar/39/info.json | 8 + src/json/ar/39/surah.json | 1 + src/json/ar/4/info.json | 8 + src/json/ar/4/surah.json | 1 + src/json/ar/40/info.json | 8 + src/json/ar/40/surah.json | 1 + src/json/ar/41/info.json | 8 + src/json/ar/41/surah.json | 1 + src/json/ar/42/info.json | 8 + src/json/ar/42/surah.json | 1 + src/json/ar/43/info.json | 8 + src/json/ar/43/surah.json | 1 + src/json/ar/44/info.json | 8 + src/json/ar/44/surah.json | 1 + src/json/ar/45/info.json | 8 + src/json/ar/45/surah.json | 1 + src/json/ar/46/info.json | 8 + src/json/ar/46/surah.json | 1 + src/json/ar/47/info.json | 8 + src/json/ar/47/surah.json | 1 + src/json/ar/48/info.json | 8 + src/json/ar/48/surah.json | 1 + src/json/ar/49/info.json | 8 + src/json/ar/49/surah.json | 1 + src/json/ar/5/info.json | 8 + src/json/ar/5/surah.json | 1 + src/json/ar/50/info.json | 8 + src/json/ar/50/surah.json | 1 + src/json/ar/51/info.json | 8 + src/json/ar/51/surah.json | 1 + src/json/ar/52/info.json | 8 + src/json/ar/52/surah.json | 1 + src/json/ar/53/info.json | 8 + src/json/ar/53/surah.json | 1 + src/json/ar/54/info.json | 8 + src/json/ar/54/surah.json | 1 + src/json/ar/55/info.json | 8 + src/json/ar/55/surah.json | 1 + src/json/ar/56/info.json | 8 + src/json/ar/56/surah.json | 1 + src/json/ar/57/info.json | 8 + src/json/ar/57/surah.json | 1 + src/json/ar/58/info.json | 8 + src/json/ar/58/surah.json | 1 + src/json/ar/59/info.json | 8 + src/json/ar/59/surah.json | 1 + src/json/ar/6/info.json | 8 + src/json/ar/6/surah.json | 1 + src/json/ar/60/info.json | 8 + src/json/ar/60/surah.json | 1 + src/json/ar/61/info.json | 8 + src/json/ar/61/surah.json | 1 + src/json/ar/62/info.json | 8 + src/json/ar/62/surah.json | 1 + src/json/ar/63/info.json | 8 + src/json/ar/63/surah.json | 1 + src/json/ar/64/info.json | 8 + src/json/ar/64/surah.json | 1 + src/json/ar/65/info.json | 8 + src/json/ar/65/surah.json | 1 + src/json/ar/66/info.json | 8 + src/json/ar/66/surah.json | 1 + src/json/ar/67/info.json | 8 + src/json/ar/67/surah.json | 1 + src/json/ar/68/info.json | 8 + src/json/ar/68/surah.json | 1 + src/json/ar/69/info.json | 8 + src/json/ar/69/surah.json | 1 + src/json/ar/7/info.json | 8 + src/json/ar/7/surah.json | 1 + src/json/ar/70/info.json | 8 + src/json/ar/70/surah.json | 1 + src/json/ar/71/info.json | 8 + src/json/ar/71/surah.json | 1 + src/json/ar/72/info.json | 8 + src/json/ar/72/surah.json | 1 + src/json/ar/73/info.json | 8 + src/json/ar/73/surah.json | 1 + src/json/ar/74/info.json | 8 + src/json/ar/74/surah.json | 1 + src/json/ar/75/info.json | 8 + src/json/ar/75/surah.json | 1 + src/json/ar/76/info.json | 8 + src/json/ar/76/surah.json | 1 + src/json/ar/77/info.json | 8 + src/json/ar/77/surah.json | 1 + src/json/ar/78/info.json | 8 + src/json/ar/78/surah.json | 1 + src/json/ar/79/info.json | 8 + src/json/ar/79/surah.json | 1 + src/json/ar/8/info.json | 8 + src/json/ar/8/surah.json | 1 + src/json/ar/80/info.json | 8 + src/json/ar/80/surah.json | 1 + src/json/ar/81/info.json | 8 + src/json/ar/81/surah.json | 1 + src/json/ar/82/info.json | 8 + src/json/ar/82/surah.json | 1 + src/json/ar/83/info.json | 8 + src/json/ar/83/surah.json | 1 + src/json/ar/84/info.json | 8 + src/json/ar/84/surah.json | 1 + src/json/ar/85/info.json | 8 + src/json/ar/85/surah.json | 1 + src/json/ar/86/info.json | 8 + src/json/ar/86/surah.json | 1 + src/json/ar/87/info.json | 8 + src/json/ar/87/surah.json | 1 + src/json/ar/88/info.json | 8 + src/json/ar/88/surah.json | 1 + src/json/ar/89/info.json | 8 + src/json/ar/89/surah.json | 1 + src/json/ar/9/info.json | 8 + src/json/ar/9/surah.json | 1 + src/json/ar/90/info.json | 8 + src/json/ar/90/surah.json | 1 + src/json/ar/91/info.json | 8 + src/json/ar/91/surah.json | 1 + src/json/ar/92/info.json | 8 + src/json/ar/92/surah.json | 1 + src/json/ar/93/info.json | 8 + src/json/ar/93/surah.json | 1 + src/json/ar/94/info.json | 8 + src/json/ar/94/surah.json | 1 + src/json/ar/95/info.json | 8 + src/json/ar/95/surah.json | 1 + src/json/ar/96/info.json | 8 + src/json/ar/96/surah.json | 1 + src/json/ar/97/info.json | 8 + src/json/ar/97/surah.json | 1 + src/json/ar/98/info.json | 8 + src/json/ar/98/surah.json | 1 + src/json/ar/99/info.json | 8 + src/json/ar/99/surah.json | 1 + src/json/durations/1.json | 1 + src/json/durations/10.json | 1 + src/json/durations/100.json | 1 + src/json/durations/101.json | 1 + src/json/durations/102.json | 1 + src/json/durations/103.json | 1 + src/json/durations/104.json | 1 + src/json/durations/105.json | 1 + src/json/durations/106.json | 1 + src/json/durations/107.json | 1 + src/json/durations/108.json | 1 + src/json/durations/109.json | 1 + src/json/durations/11.json | 1 + src/json/durations/110.json | 1 + src/json/durations/111.json | 1 + src/json/durations/112.json | 1 + src/json/durations/113.json | 1 + src/json/durations/114.json | 1 + src/json/durations/12.json | 1 + src/json/durations/13.json | 1 + src/json/durations/14.json | 1 + src/json/durations/15.json | 1 + src/json/durations/16.json | 1 + src/json/durations/17.json | 1 + src/json/durations/18.json | 1 + src/json/durations/19.json | 1 + src/json/durations/2.json | 1 + src/json/durations/20.json | 1 + src/json/durations/21.json | 1 + src/json/durations/22.json | 1 + src/json/durations/23.json | 1 + src/json/durations/24.json | 1 + src/json/durations/25.json | 1 + src/json/durations/26.json | 1 + src/json/durations/27.json | 1 + src/json/durations/28.json | 1 + src/json/durations/29.json | 1 + src/json/durations/3.json | 1 + src/json/durations/30.json | 1 + src/json/durations/31.json | 1 + src/json/durations/32.json | 1 + src/json/durations/33.json | 1 + src/json/durations/34.json | 1 + src/json/durations/35.json | 1 + src/json/durations/36.json | 1 + src/json/durations/37.json | 1 + src/json/durations/38.json | 1 + src/json/durations/39.json | 1 + src/json/durations/4.json | 1 + src/json/durations/40.json | 1 + src/json/durations/41.json | 1 + src/json/durations/42.json | 1 + src/json/durations/43.json | 1 + src/json/durations/44.json | 1 + src/json/durations/45.json | 1 + src/json/durations/46.json | 1 + src/json/durations/47.json | 1 + src/json/durations/48.json | 1 + src/json/durations/49.json | 1 + src/json/durations/5.json | 1 + src/json/durations/50.json | 1 + src/json/durations/51.json | 1 + src/json/durations/52.json | 1 + src/json/durations/53.json | 1 + src/json/durations/54.json | 1 + src/json/durations/55.json | 1 + src/json/durations/56.json | 1 + src/json/durations/57.json | 1 + src/json/durations/58.json | 1 + src/json/durations/59.json | 1 + src/json/durations/6.json | 1 + src/json/durations/60.json | 1 + src/json/durations/61.json | 1 + src/json/durations/62.json | 1 + src/json/durations/63.json | 1 + src/json/durations/64.json | 1 + src/json/durations/65.json | 1 + src/json/durations/66.json | 1 + src/json/durations/67.json | 1 + src/json/durations/68.json | 1 + src/json/durations/69.json | 1 + src/json/durations/7.json | 1 + src/json/durations/70.json | 1 + src/json/durations/71.json | 1 + src/json/durations/72.json | 1 + src/json/durations/73.json | 1 + src/json/durations/74.json | 1 + src/json/durations/75.json | 1 + src/json/durations/76.json | 1 + src/json/durations/77.json | 1 + src/json/durations/78.json | 1 + src/json/durations/79.json | 1 + src/json/durations/8.json | 1 + src/json/durations/80.json | 1 + src/json/durations/81.json | 1 + src/json/durations/82.json | 1 + src/json/durations/83.json | 1 + src/json/durations/84.json | 1 + src/json/durations/85.json | 1 + src/json/durations/86.json | 1 + src/json/durations/87.json | 1 + src/json/durations/88.json | 1 + src/json/durations/89.json | 1 + src/json/durations/9.json | 1 + src/json/durations/90.json | 1 + src/json/durations/91.json | 1 + src/json/durations/92.json | 1 + src/json/durations/93.json | 1 + src/json/durations/94.json | 1 + src/json/durations/95.json | 1 + src/json/durations/96.json | 1 + src/json/durations/97.json | 1 + src/json/durations/98.json | 1 + src/json/durations/99.json | 1 + src/json/en/1/info.json | 8 + src/json/en/1/surah.json | 1 + src/json/en/10/info.json | 8 + src/json/en/10/surah.json | 1 + src/json/en/100/info.json | 8 + src/json/en/100/surah.json | 1 + src/json/en/101/info.json | 8 + src/json/en/101/surah.json | 1 + src/json/en/102/info.json | 8 + src/json/en/102/surah.json | 1 + src/json/en/103/info.json | 8 + src/json/en/103/surah.json | 1 + src/json/en/104/info.json | 8 + src/json/en/104/surah.json | 1 + src/json/en/105/info.json | 8 + src/json/en/105/surah.json | 1 + src/json/en/106/info.json | 8 + src/json/en/106/surah.json | 1 + src/json/en/107/info.json | 8 + src/json/en/107/surah.json | 1 + src/json/en/108/info.json | 8 + src/json/en/108/surah.json | 1 + src/json/en/109/info.json | 8 + src/json/en/109/surah.json | 1 + src/json/en/11/info.json | 8 + src/json/en/11/surah.json | 1 + src/json/en/110/info.json | 8 + src/json/en/110/surah.json | 1 + src/json/en/111/info.json | 8 + src/json/en/111/surah.json | 1 + src/json/en/112/info.json | 8 + src/json/en/112/surah.json | 1 + src/json/en/113/info.json | 8 + src/json/en/113/surah.json | 1 + src/json/en/114/info.json | 8 + src/json/en/114/surah.json | 1 + src/json/en/12/info.json | 8 + src/json/en/12/surah.json | 1 + src/json/en/13/info.json | 8 + src/json/en/13/surah.json | 1 + src/json/en/14/info.json | 8 + src/json/en/14/surah.json | 1 + src/json/en/15/info.json | 8 + src/json/en/15/surah.json | 1 + src/json/en/16/info.json | 8 + src/json/en/16/surah.json | 1 + src/json/en/17/info.json | 8 + src/json/en/17/surah.json | 1 + src/json/en/18/info.json | 8 + src/json/en/18/surah.json | 1 + src/json/en/19/info.json | 8 + src/json/en/19/surah.json | 1 + src/json/en/2/info.json | 8 + src/json/en/2/surah.json | 1 + src/json/en/20/info.json | 8 + src/json/en/20/surah.json | 1 + src/json/en/21/info.json | 8 + src/json/en/21/surah.json | 1 + src/json/en/22/info.json | 8 + src/json/en/22/surah.json | 1 + src/json/en/23/info.json | 8 + src/json/en/23/surah.json | 1 + src/json/en/24/info.json | 8 + src/json/en/24/surah.json | 1 + src/json/en/25/info.json | 8 + src/json/en/25/surah.json | 1 + src/json/en/26/info.json | 8 + src/json/en/26/surah.json | 1 + src/json/en/27/info.json | 8 + src/json/en/27/surah.json | 1 + src/json/en/28/info.json | 8 + src/json/en/28/surah.json | 1 + src/json/en/29/info.json | 8 + src/json/en/29/surah.json | 1 + src/json/en/3/info.json | 8 + src/json/en/3/surah.json | 1 + src/json/en/30/info.json | 8 + src/json/en/30/surah.json | 1 + src/json/en/31/info.json | 8 + src/json/en/31/surah.json | 1 + src/json/en/32/info.json | 8 + src/json/en/32/surah.json | 1 + src/json/en/33/info.json | 8 + src/json/en/33/surah.json | 1 + src/json/en/34/info.json | 8 + src/json/en/34/surah.json | 1 + src/json/en/35/info.json | 8 + src/json/en/35/surah.json | 1 + src/json/en/36/info.json | 8 + src/json/en/36/surah.json | 1 + src/json/en/37/info.json | 8 + src/json/en/37/surah.json | 1 + src/json/en/38/info.json | 8 + src/json/en/38/surah.json | 1 + src/json/en/39/info.json | 8 + src/json/en/39/surah.json | 1 + src/json/en/4/info.json | 8 + src/json/en/4/surah.json | 1 + src/json/en/40/info.json | 8 + src/json/en/40/surah.json | 1 + src/json/en/41/info.json | 8 + src/json/en/41/surah.json | 1 + src/json/en/42/info.json | 8 + src/json/en/42/surah.json | 1 + src/json/en/43/info.json | 8 + src/json/en/43/surah.json | 1 + src/json/en/44/info.json | 8 + src/json/en/44/surah.json | 1 + src/json/en/45/info.json | 8 + src/json/en/45/surah.json | 1 + src/json/en/46/info.json | 8 + src/json/en/46/surah.json | 1 + src/json/en/47/info.json | 8 + src/json/en/47/surah.json | 1 + src/json/en/48/info.json | 8 + src/json/en/48/surah.json | 1 + src/json/en/49/info.json | 8 + src/json/en/49/surah.json | 1 + src/json/en/5/info.json | 8 + src/json/en/5/surah.json | 1 + src/json/en/50/info.json | 8 + src/json/en/50/surah.json | 1 + src/json/en/51/info.json | 8 + src/json/en/51/surah.json | 1 + src/json/en/52/info.json | 8 + src/json/en/52/surah.json | 1 + src/json/en/53/info.json | 8 + src/json/en/53/surah.json | 1 + src/json/en/54/info.json | 8 + src/json/en/54/surah.json | 1 + src/json/en/55/info.json | 8 + src/json/en/55/surah.json | 1 + src/json/en/56/info.json | 8 + src/json/en/56/surah.json | 1 + src/json/en/57/info.json | 8 + src/json/en/57/surah.json | 1 + src/json/en/58/info.json | 8 + src/json/en/58/surah.json | 1 + src/json/en/59/info.json | 8 + src/json/en/59/surah.json | 1 + src/json/en/6/info.json | 8 + src/json/en/6/surah.json | 1 + src/json/en/60/info.json | 8 + src/json/en/60/surah.json | 1 + src/json/en/61/info.json | 8 + src/json/en/61/surah.json | 1 + src/json/en/62/info.json | 8 + src/json/en/62/surah.json | 1 + src/json/en/63/info.json | 8 + src/json/en/63/surah.json | 1 + src/json/en/64/info.json | 8 + src/json/en/64/surah.json | 1 + src/json/en/65/info.json | 8 + src/json/en/65/surah.json | 1 + src/json/en/66/info.json | 8 + src/json/en/66/surah.json | 1 + src/json/en/67/info.json | 8 + src/json/en/67/surah.json | 1 + src/json/en/68/info.json | 8 + src/json/en/68/surah.json | 1 + src/json/en/69/info.json | 8 + src/json/en/69/surah.json | 1 + src/json/en/7/info.json | 8 + src/json/en/7/surah.json | 1 + src/json/en/70/info.json | 8 + src/json/en/70/surah.json | 1 + src/json/en/71/info.json | 8 + src/json/en/71/surah.json | 1 + src/json/en/72/info.json | 8 + src/json/en/72/surah.json | 1 + src/json/en/73/info.json | 8 + src/json/en/73/surah.json | 1 + src/json/en/74/info.json | 8 + src/json/en/74/surah.json | 1 + src/json/en/75/info.json | 8 + src/json/en/75/surah.json | 1 + src/json/en/76/info.json | 8 + src/json/en/76/surah.json | 1 + src/json/en/77/info.json | 8 + src/json/en/77/surah.json | 1 + src/json/en/78/info.json | 8 + src/json/en/78/surah.json | 1 + src/json/en/79/info.json | 8 + src/json/en/79/surah.json | 1 + src/json/en/8/info.json | 8 + src/json/en/8/surah.json | 1 + src/json/en/80/info.json | 8 + src/json/en/80/surah.json | 1 + src/json/en/81/info.json | 8 + src/json/en/81/surah.json | 1 + src/json/en/82/info.json | 8 + src/json/en/82/surah.json | 1 + src/json/en/83/info.json | 8 + src/json/en/83/surah.json | 1 + src/json/en/84/info.json | 8 + src/json/en/84/surah.json | 1 + src/json/en/85/info.json | 8 + src/json/en/85/surah.json | 1 + src/json/en/86/info.json | 8 + src/json/en/86/surah.json | 1 + src/json/en/87/info.json | 8 + src/json/en/87/surah.json | 1 + src/json/en/88/info.json | 8 + src/json/en/88/surah.json | 1 + src/json/en/89/info.json | 8 + src/json/en/89/surah.json | 1 + src/json/en/9/info.json | 8 + src/json/en/9/surah.json | 1 + src/json/en/90/info.json | 8 + src/json/en/90/surah.json | 1 + src/json/en/91/info.json | 8 + src/json/en/91/surah.json | 1 + src/json/en/92/info.json | 8 + src/json/en/92/surah.json | 1 + src/json/en/93/info.json | 8 + src/json/en/93/surah.json | 1 + src/json/en/94/info.json | 8 + src/json/en/94/surah.json | 1 + src/json/en/95/info.json | 8 + src/json/en/95/surah.json | 1 + src/json/en/96/info.json | 8 + src/json/en/96/surah.json | 1 + src/json/en/97/info.json | 8 + src/json/en/97/surah.json | 1 + src/json/en/98/info.json | 8 + src/json/en/98/surah.json | 1 + src/json/en/99/info.json | 8 + src/json/en/99/surah.json | 1 + src/json/fa/1/info.json | 8 + src/json/fa/1/surah.json | 30 + src/json/fa/10/info.json | 8 + src/json/fa/10/surah.json | 438 ++ src/json/fa/100/info.json | 8 + src/json/fa/100/surah.json | 46 + src/json/fa/101/info.json | 8 + src/json/fa/101/surah.json | 46 + src/json/fa/102/info.json | 8 + src/json/fa/102/surah.json | 34 + src/json/fa/103/info.json | 8 + src/json/fa/103/surah.json | 14 + src/json/fa/104/info.json | 8 + src/json/fa/104/surah.json | 38 + src/json/fa/105/info.json | 8 + src/json/fa/105/surah.json | 22 + src/json/fa/106/info.json | 8 + src/json/fa/106/surah.json | 18 + src/json/fa/107/info.json | 8 + src/json/fa/107/surah.json | 30 + src/json/fa/108/info.json | 8 + src/json/fa/108/surah.json | 14 + src/json/fa/109/info.json | 8 + src/json/fa/109/surah.json | 26 + src/json/fa/11/info.json | 8 + src/json/fa/11/surah.json | 494 ++ src/json/fa/110/info.json | 8 + src/json/fa/110/surah.json | 14 + src/json/fa/111/info.json | 8 + src/json/fa/111/surah.json | 22 + src/json/fa/112/info.json | 8 + src/json/fa/112/surah.json | 18 + src/json/fa/113/info.json | 8 + src/json/fa/113/surah.json | 22 + src/json/fa/114/info.json | 8 + src/json/fa/114/surah.json | 26 + src/json/fa/12/info.json | 8 + src/json/fa/12/surah.json | 446 ++ src/json/fa/13/info.json | 8 + src/json/fa/13/surah.json | 174 + src/json/fa/14/info.json | 8 + src/json/fa/14/surah.json | 210 + src/json/fa/15/info.json | 8 + src/json/fa/15/surah.json | 398 + src/json/fa/16/info.json | 8 + src/json/fa/16/surah.json | 514 ++ src/json/fa/17/info.json | 8 + src/json/fa/17/surah.json | 446 ++ src/json/fa/18/info.json | 8 + src/json/fa/18/surah.json | 442 ++ src/json/fa/19/info.json | 8 + src/json/fa/19/surah.json | 394 + src/json/fa/2/info.json | 8 + src/json/fa/2/surah.json | 1146 +++ src/json/fa/20/info.json | 8 + src/json/fa/20/surah.json | 542 ++ src/json/fa/21/info.json | 8 + src/json/fa/21/surah.json | 450 ++ src/json/fa/22/info.json | 8 + src/json/fa/22/surah.json | 314 + src/json/fa/23/info.json | 8 + src/json/fa/23/surah.json | 474 ++ src/json/fa/24/info.json | 8 + src/json/fa/24/surah.json | 258 + src/json/fa/25/info.json | 8 + src/json/fa/25/surah.json | 310 + src/json/fa/26/info.json | 8 + src/json/fa/26/surah.json | 910 +++ src/json/fa/27/info.json | 8 + src/json/fa/27/surah.json | 374 + src/json/fa/28/info.json | 8 + src/json/fa/28/surah.json | 354 + src/json/fa/29/info.json | 8 + src/json/fa/29/surah.json | 278 + src/json/fa/3/info.json | 8 + src/json/fa/3/surah.json | 802 +++ src/json/fa/30/info.json | 8 + src/json/fa/30/surah.json | 242 + src/json/fa/31/info.json | 8 + src/json/fa/31/surah.json | 138 + src/json/fa/32/info.json | 8 + src/json/fa/32/surah.json | 122 + src/json/fa/33/info.json | 8 + src/json/fa/33/surah.json | 294 + src/json/fa/34/info.json | 8 + src/json/fa/34/surah.json | 218 + src/json/fa/35/info.json | 8 + src/json/fa/35/surah.json | 182 + src/json/fa/36/info.json | 8 + src/json/fa/36/surah.json | 334 + src/json/fa/37/info.json | 8 + src/json/fa/37/surah.json | 730 ++ src/json/fa/38/info.json | 8 + src/json/fa/38/surah.json | 354 + src/json/fa/39/info.json | 8 + src/json/fa/39/surah.json | 302 + src/json/fa/4/info.json | 8 + src/json/fa/4/surah.json | 706 ++ src/json/fa/40/info.json | 8 + src/json/fa/40/surah.json | 342 + src/json/fa/41/info.json | 8 + src/json/fa/41/surah.json | 218 + src/json/fa/42/info.json | 8 + src/json/fa/42/surah.json | 214 + src/json/fa/43/info.json | 8 + src/json/fa/43/surah.json | 358 + src/json/fa/44/info.json | 8 + src/json/fa/44/surah.json | 238 + src/json/fa/45/info.json | 8 + src/json/fa/45/surah.json | 150 + src/json/fa/46/info.json | 8 + src/json/fa/46/surah.json | 142 + src/json/fa/47/info.json | 8 + src/json/fa/47/surah.json | 154 + src/json/fa/48/info.json | 8 + src/json/fa/48/surah.json | 118 + src/json/fa/49/info.json | 8 + src/json/fa/49/surah.json | 74 + src/json/fa/5/info.json | 8 + src/json/fa/5/surah.json | 482 ++ src/json/fa/50/info.json | 8 + src/json/fa/50/surah.json | 182 + src/json/fa/51/info.json | 8 + src/json/fa/51/surah.json | 242 + src/json/fa/52/info.json | 8 + src/json/fa/52/surah.json | 198 + src/json/fa/53/info.json | 8 + src/json/fa/53/surah.json | 250 + src/json/fa/54/info.json | 8 + src/json/fa/54/surah.json | 222 + src/json/fa/55/info.json | 8 + src/json/fa/55/surah.json | 314 + src/json/fa/56/info.json | 8 + src/json/fa/56/surah.json | 386 + src/json/fa/57/info.json | 8 + src/json/fa/57/surah.json | 118 + src/json/fa/58/info.json | 8 + src/json/fa/58/surah.json | 90 + src/json/fa/59/info.json | 8 + src/json/fa/59/surah.json | 98 + src/json/fa/6/info.json | 8 + src/json/fa/6/surah.json | 662 ++ src/json/fa/60/info.json | 8 + src/json/fa/60/surah.json | 54 + src/json/fa/61/info.json | 8 + src/json/fa/61/surah.json | 58 + src/json/fa/62/info.json | 8 + src/json/fa/62/surah.json | 46 + src/json/fa/63/info.json | 8 + src/json/fa/63/surah.json | 46 + src/json/fa/64/info.json | 8 + src/json/fa/64/surah.json | 74 + src/json/fa/65/info.json | 8 + src/json/fa/65/surah.json | 50 + src/json/fa/66/info.json | 8 + src/json/fa/66/surah.json | 50 + src/json/fa/67/info.json | 8 + src/json/fa/67/surah.json | 122 + src/json/fa/68/info.json | 8 + src/json/fa/68/surah.json | 210 + src/json/fa/69/info.json | 8 + src/json/fa/69/surah.json | 210 + src/json/fa/7/info.json | 8 + src/json/fa/7/surah.json | 826 +++ src/json/fa/70/info.json | 8 + src/json/fa/70/surah.json | 178 + src/json/fa/71/info.json | 8 + src/json/fa/71/surah.json | 114 + src/json/fa/72/info.json | 8 + src/json/fa/72/surah.json | 114 + src/json/fa/73/info.json | 8 + src/json/fa/73/surah.json | 82 + src/json/fa/74/info.json | 8 + src/json/fa/74/surah.json | 226 + src/json/fa/75/info.json | 8 + src/json/fa/75/surah.json | 162 + src/json/fa/76/info.json | 8 + src/json/fa/76/surah.json | 126 + src/json/fa/77/info.json | 8 + src/json/fa/77/surah.json | 202 + src/json/fa/78/info.json | 8 + src/json/fa/78/surah.json | 162 + src/json/fa/79/info.json | 8 + src/json/fa/79/surah.json | 186 + src/json/fa/8/info.json | 8 + src/json/fa/8/surah.json | 302 + src/json/fa/80/info.json | 8 + src/json/fa/80/surah.json | 170 + src/json/fa/81/info.json | 8 + src/json/fa/81/surah.json | 118 + src/json/fa/82/info.json | 8 + src/json/fa/82/surah.json | 78 + src/json/fa/83/info.json | 8 + src/json/fa/83/surah.json | 146 + src/json/fa/84/info.json | 8 + src/json/fa/84/surah.json | 102 + src/json/fa/85/info.json | 8 + src/json/fa/85/surah.json | 90 + src/json/fa/86/info.json | 8 + src/json/fa/86/surah.json | 70 + src/json/fa/87/info.json | 8 + src/json/fa/87/surah.json | 78 + src/json/fa/88/info.json | 8 + src/json/fa/88/surah.json | 106 + src/json/fa/89/info.json | 8 + src/json/fa/89/surah.json | 122 + src/json/fa/9/info.json | 8 + src/json/fa/9/surah.json | 518 ++ src/json/fa/90/info.json | 8 + src/json/fa/90/surah.json | 82 + src/json/fa/91/info.json | 8 + src/json/fa/91/surah.json | 62 + src/json/fa/92/info.json | 8 + src/json/fa/92/surah.json | 86 + src/json/fa/93/info.json | 8 + src/json/fa/93/surah.json | 46 + src/json/fa/94/info.json | 8 + src/json/fa/94/surah.json | 34 + src/json/fa/95/info.json | 8 + src/json/fa/95/surah.json | 34 + src/json/fa/96/info.json | 8 + src/json/fa/96/surah.json | 78 + src/json/fa/97/info.json | 8 + src/json/fa/97/surah.json | 22 + src/json/fa/98/info.json | 8 + src/json/fa/98/surah.json | 34 + src/json/fa/99/info.json | 8 + src/json/fa/99/surah.json | 34 + src/json/nameById.json | 1 + src/json/surahs.json | 2744 +++++++ src/json/t.json | 407 ++ src/manifest.webapp | 25 + 898 files changed, 47123 insertions(+) create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 README.md create mode 100644 Rakefile.rb create mode 100644 Rules create mode 100755 bin/setup create mode 100644 etc/eslint.config.mjs create mode 100644 etc/rubocop.yml create mode 100644 etc/tsconfig.json create mode 100644 etc/webpack.common.js create mode 100644 etc/webpack.development.js create mode 100644 etc/webpack.production.js create mode 100644 etc/webpack.vendor.js create mode 100644 nanoc.yaml.sample create mode 100644 nanoc/lib/nanoc/extension/anonymous_filter.rb create mode 100644 nanoc/lib/nanoc/extension/require_rules.rb create mode 100644 nanoc/lib/utils.rb create mode 100644 nanoc/lib/utils/erb.rb create mode 100644 nanoc/lib/utils/inline.rb create mode 100644 nanoc/lib/utils/t.rb create mode 100644 nanoc/rules/assets.rules create mode 100644 nanoc/rules/random.rules create mode 100644 nanoc/rules/redirect.rules create mode 100644 nanoc/rules/surah-index.rules create mode 100644 nanoc/rules/surah-stream.rules create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 packages/ruby/.gitkeep create mode 100644 packages/typescript/Quran/package.json create mode 100644 packages/typescript/Quran/src/index.ts create mode 100644 packages/typescript/Quran/tsconfig.json create mode 100644 rake/tasks/ci.rake create mode 100644 rake/tasks/format.rake create mode 100644 rake/tasks/nanoc.rake create mode 100644 rake/tasks/server.rake create mode 100644 rake/tasks/t.rake create mode 100644 share/al-quran.reflectslight.io/CHANGELOG create mode 100644 share/al-quran.reflectslight.io/LICENSE create mode 100644 share/al-quran.reflectslight.io/VERSION create mode 100644 share/al-quran.reflectslight.io/documentation/howto_add_language create mode 100644 src/css/_base.scss create mode 100644 src/css/base/_breakpoints.scss create mode 100644 src/css/base/_colors.scss create mode 100644 src/css/base/_icon.scss create mode 100644 src/css/base/_select.scss create mode 100644 src/css/main/SurahIndex.scss create mode 100644 src/css/main/SurahStream.scss create mode 100644 src/css/themes/blue.scss create mode 100644 src/css/themes/blue/_base.scss create mode 100644 src/css/themes/blue/base/_colors.scss create mode 100644 src/css/themes/blue/base/_icon.scss create mode 100644 src/css/themes/blue/base/_select.scss create mode 100644 src/css/themes/blue/main/_SurahIndex.scss create mode 100644 src/css/themes/blue/main/_SurahStream.scss create mode 100644 src/css/themes/green.scss create mode 100644 src/css/themes/green/_base.scss create mode 100644 src/css/themes/green/base/_colors.scss create mode 100644 src/css/themes/green/base/_icon.scss create mode 100644 src/css/themes/green/base/_select.scss create mode 100644 src/css/themes/green/main/_SurahIndex.scss create mode 100644 src/css/themes/green/main/_SurahStream.scss create mode 100644 src/css/vendor/tail.scss create mode 100755 src/favicon.ico create mode 100644 src/html/_favicon.html.erb create mode 100644 src/html/_version.html.erb create mode 100644 src/html/main/random.html.erb create mode 100644 src/html/main/redirect.html.erb create mode 100644 src/html/main/surah-index.html.erb create mode 100644 src/html/main/surah-stream.html.erb create mode 100755 src/images/favicon-128x128.png create mode 100755 src/images/favicon-16x16.png create mode 100755 src/images/favicon-256x256.png create mode 100755 src/images/favicon-32x32.png create mode 100755 src/images/favicon-48x48.png create mode 100755 src/images/favicon-64x64.png create mode 100755 src/images/favicon.svg create mode 100644 src/js/components/AudioControl.tsx create mode 100644 src/js/components/Head.tsx create mode 100644 src/js/components/Icon.tsx create mode 100644 src/js/components/Select/LanguageSelect.tsx create mode 100644 src/js/components/Select/Option.tsx create mode 100644 src/js/components/Select/ThemeSelect.tsx create mode 100644 src/js/components/Select/index.tsx create mode 100644 src/js/components/SurahIndex/Filter.tsx create mode 100644 src/js/components/SurahIndex/index.tsx create mode 100644 src/js/components/SurahStream/Stream.tsx create mode 100644 src/js/components/SurahStream/index.tsx create mode 100644 src/js/components/Timer/index.tsx create mode 100644 src/js/hooks/useTheme.ts create mode 100644 src/js/lib/t.ts create mode 100644 src/js/main/random.ts create mode 100644 src/js/main/redirect.ts create mode 100644 src/js/main/surah-index.tsx create mode 100644 src/js/main/surah-stream.tsx create mode 100644 src/js/main/vendor.ts create mode 100644 src/json/ar/1/info.json create mode 100644 src/json/ar/1/surah.json create mode 100644 src/json/ar/10/info.json create mode 100644 src/json/ar/10/surah.json create mode 100644 src/json/ar/100/info.json create mode 100644 src/json/ar/100/surah.json create mode 100644 src/json/ar/101/info.json create mode 100644 src/json/ar/101/surah.json create mode 100644 src/json/ar/102/info.json create mode 100644 src/json/ar/102/surah.json create mode 100644 src/json/ar/103/info.json create mode 100644 src/json/ar/103/surah.json create mode 100644 src/json/ar/104/info.json create mode 100644 src/json/ar/104/surah.json create mode 100644 src/json/ar/105/info.json create mode 100644 src/json/ar/105/surah.json create mode 100644 src/json/ar/106/info.json create mode 100644 src/json/ar/106/surah.json create mode 100644 src/json/ar/107/info.json create mode 100644 src/json/ar/107/surah.json create mode 100644 src/json/ar/108/info.json create mode 100644 src/json/ar/108/surah.json create mode 100644 src/json/ar/109/info.json create mode 100644 src/json/ar/109/surah.json create mode 100644 src/json/ar/11/info.json create mode 100644 src/json/ar/11/surah.json create mode 100644 src/json/ar/110/info.json create mode 100644 src/json/ar/110/surah.json create mode 100644 src/json/ar/111/info.json create mode 100644 src/json/ar/111/surah.json create mode 100644 src/json/ar/112/info.json create mode 100644 src/json/ar/112/surah.json create mode 100644 src/json/ar/113/info.json create mode 100644 src/json/ar/113/surah.json create mode 100644 src/json/ar/114/info.json create mode 100644 src/json/ar/114/surah.json create mode 100644 src/json/ar/12/info.json create mode 100644 src/json/ar/12/surah.json create mode 100644 src/json/ar/13/info.json create mode 100644 src/json/ar/13/surah.json create mode 100644 src/json/ar/14/info.json create mode 100644 src/json/ar/14/surah.json create mode 100644 src/json/ar/15/info.json create mode 100644 src/json/ar/15/surah.json create mode 100644 src/json/ar/16/info.json create mode 100644 src/json/ar/16/surah.json create mode 100644 src/json/ar/17/info.json create mode 100644 src/json/ar/17/surah.json create mode 100644 src/json/ar/18/info.json create mode 100644 src/json/ar/18/surah.json create mode 100644 src/json/ar/19/info.json create mode 100644 src/json/ar/19/surah.json create mode 100644 src/json/ar/2/info.json create mode 100644 src/json/ar/2/surah.json create mode 100644 src/json/ar/20/info.json create mode 100644 src/json/ar/20/surah.json create mode 100644 src/json/ar/21/info.json create mode 100644 src/json/ar/21/surah.json create mode 100644 src/json/ar/22/info.json create mode 100644 src/json/ar/22/surah.json create mode 100644 src/json/ar/23/info.json create mode 100644 src/json/ar/23/surah.json create mode 100644 src/json/ar/24/info.json create mode 100644 src/json/ar/24/surah.json create mode 100644 src/json/ar/25/info.json create mode 100644 src/json/ar/25/surah.json create mode 100644 src/json/ar/26/info.json create mode 100644 src/json/ar/26/surah.json create mode 100644 src/json/ar/27/info.json create mode 100644 src/json/ar/27/surah.json create mode 100644 src/json/ar/28/info.json create mode 100644 src/json/ar/28/surah.json create mode 100644 src/json/ar/29/info.json create mode 100644 src/json/ar/29/surah.json create mode 100644 src/json/ar/3/info.json create mode 100644 src/json/ar/3/surah.json create mode 100644 src/json/ar/30/info.json create mode 100644 src/json/ar/30/surah.json create mode 100644 src/json/ar/31/info.json create mode 100644 src/json/ar/31/surah.json create mode 100644 src/json/ar/32/info.json create mode 100644 src/json/ar/32/surah.json create mode 100644 src/json/ar/33/info.json create mode 100644 src/json/ar/33/surah.json create mode 100644 src/json/ar/34/info.json create mode 100644 src/json/ar/34/surah.json create mode 100644 src/json/ar/35/info.json create mode 100644 src/json/ar/35/surah.json create mode 100644 src/json/ar/36/info.json create mode 100644 src/json/ar/36/surah.json create mode 100644 src/json/ar/37/info.json create mode 100644 src/json/ar/37/surah.json create mode 100644 src/json/ar/38/info.json create mode 100644 src/json/ar/38/surah.json create mode 100644 src/json/ar/39/info.json create mode 100644 src/json/ar/39/surah.json create mode 100644 src/json/ar/4/info.json create mode 100644 src/json/ar/4/surah.json create mode 100644 src/json/ar/40/info.json create mode 100644 src/json/ar/40/surah.json create mode 100644 src/json/ar/41/info.json create mode 100644 src/json/ar/41/surah.json create mode 100644 src/json/ar/42/info.json create mode 100644 src/json/ar/42/surah.json create mode 100644 src/json/ar/43/info.json create mode 100644 src/json/ar/43/surah.json create mode 100644 src/json/ar/44/info.json create mode 100644 src/json/ar/44/surah.json create mode 100644 src/json/ar/45/info.json create mode 100644 src/json/ar/45/surah.json create mode 100644 src/json/ar/46/info.json create mode 100644 src/json/ar/46/surah.json create mode 100644 src/json/ar/47/info.json create mode 100644 src/json/ar/47/surah.json create mode 100644 src/json/ar/48/info.json create mode 100644 src/json/ar/48/surah.json create mode 100644 src/json/ar/49/info.json create mode 100644 src/json/ar/49/surah.json create mode 100644 src/json/ar/5/info.json create mode 100644 src/json/ar/5/surah.json create mode 100644 src/json/ar/50/info.json create mode 100644 src/json/ar/50/surah.json create mode 100644 src/json/ar/51/info.json create mode 100644 src/json/ar/51/surah.json create mode 100644 src/json/ar/52/info.json create mode 100644 src/json/ar/52/surah.json create mode 100644 src/json/ar/53/info.json create mode 100644 src/json/ar/53/surah.json create mode 100644 src/json/ar/54/info.json create mode 100644 src/json/ar/54/surah.json create mode 100644 src/json/ar/55/info.json create mode 100644 src/json/ar/55/surah.json create mode 100644 src/json/ar/56/info.json create mode 100644 src/json/ar/56/surah.json create mode 100644 src/json/ar/57/info.json create mode 100644 src/json/ar/57/surah.json create mode 100644 src/json/ar/58/info.json create mode 100644 src/json/ar/58/surah.json create mode 100644 src/json/ar/59/info.json create mode 100644 src/json/ar/59/surah.json create mode 100644 src/json/ar/6/info.json create mode 100644 src/json/ar/6/surah.json create mode 100644 src/json/ar/60/info.json create mode 100644 src/json/ar/60/surah.json create mode 100644 src/json/ar/61/info.json create mode 100644 src/json/ar/61/surah.json create mode 100644 src/json/ar/62/info.json create mode 100644 src/json/ar/62/surah.json create mode 100644 src/json/ar/63/info.json create mode 100644 src/json/ar/63/surah.json create mode 100644 src/json/ar/64/info.json create mode 100644 src/json/ar/64/surah.json create mode 100644 src/json/ar/65/info.json create mode 100644 src/json/ar/65/surah.json create mode 100644 src/json/ar/66/info.json create mode 100644 src/json/ar/66/surah.json create mode 100644 src/json/ar/67/info.json create mode 100644 src/json/ar/67/surah.json create mode 100644 src/json/ar/68/info.json create mode 100644 src/json/ar/68/surah.json create mode 100644 src/json/ar/69/info.json create mode 100644 src/json/ar/69/surah.json create mode 100644 src/json/ar/7/info.json create mode 100644 src/json/ar/7/surah.json create mode 100644 src/json/ar/70/info.json create mode 100644 src/json/ar/70/surah.json create mode 100644 src/json/ar/71/info.json create mode 100644 src/json/ar/71/surah.json create mode 100644 src/json/ar/72/info.json create mode 100644 src/json/ar/72/surah.json create mode 100644 src/json/ar/73/info.json create mode 100644 src/json/ar/73/surah.json create mode 100644 src/json/ar/74/info.json create mode 100644 src/json/ar/74/surah.json create mode 100644 src/json/ar/75/info.json create mode 100644 src/json/ar/75/surah.json create mode 100644 src/json/ar/76/info.json create mode 100644 src/json/ar/76/surah.json create mode 100644 src/json/ar/77/info.json create mode 100644 src/json/ar/77/surah.json create mode 100644 src/json/ar/78/info.json create mode 100644 src/json/ar/78/surah.json create mode 100644 src/json/ar/79/info.json create mode 100644 src/json/ar/79/surah.json create mode 100644 src/json/ar/8/info.json create mode 100644 src/json/ar/8/surah.json create mode 100644 src/json/ar/80/info.json create mode 100644 src/json/ar/80/surah.json create mode 100644 src/json/ar/81/info.json create mode 100644 src/json/ar/81/surah.json create mode 100644 src/json/ar/82/info.json create mode 100644 src/json/ar/82/surah.json create mode 100644 src/json/ar/83/info.json create mode 100644 src/json/ar/83/surah.json create mode 100644 src/json/ar/84/info.json create mode 100644 src/json/ar/84/surah.json create mode 100644 src/json/ar/85/info.json create mode 100644 src/json/ar/85/surah.json create mode 100644 src/json/ar/86/info.json create mode 100644 src/json/ar/86/surah.json create mode 100644 src/json/ar/87/info.json create mode 100644 src/json/ar/87/surah.json create mode 100644 src/json/ar/88/info.json create mode 100644 src/json/ar/88/surah.json create mode 100644 src/json/ar/89/info.json create mode 100644 src/json/ar/89/surah.json create mode 100644 src/json/ar/9/info.json create mode 100644 src/json/ar/9/surah.json create mode 100644 src/json/ar/90/info.json create mode 100644 src/json/ar/90/surah.json create mode 100644 src/json/ar/91/info.json create mode 100644 src/json/ar/91/surah.json create mode 100644 src/json/ar/92/info.json create mode 100644 src/json/ar/92/surah.json create mode 100644 src/json/ar/93/info.json create mode 100644 src/json/ar/93/surah.json create mode 100644 src/json/ar/94/info.json create mode 100644 src/json/ar/94/surah.json create mode 100644 src/json/ar/95/info.json create mode 100644 src/json/ar/95/surah.json create mode 100644 src/json/ar/96/info.json create mode 100644 src/json/ar/96/surah.json create mode 100644 src/json/ar/97/info.json create mode 100644 src/json/ar/97/surah.json create mode 100644 src/json/ar/98/info.json create mode 100644 src/json/ar/98/surah.json create mode 100644 src/json/ar/99/info.json create mode 100644 src/json/ar/99/surah.json create mode 100644 src/json/durations/1.json create mode 100644 src/json/durations/10.json create mode 100644 src/json/durations/100.json create mode 100644 src/json/durations/101.json create mode 100644 src/json/durations/102.json create mode 100644 src/json/durations/103.json create mode 100644 src/json/durations/104.json create mode 100644 src/json/durations/105.json create mode 100644 src/json/durations/106.json create mode 100644 src/json/durations/107.json create mode 100644 src/json/durations/108.json create mode 100644 src/json/durations/109.json create mode 100644 src/json/durations/11.json create mode 100644 src/json/durations/110.json create mode 100644 src/json/durations/111.json create mode 100644 src/json/durations/112.json create mode 100644 src/json/durations/113.json create mode 100644 src/json/durations/114.json create mode 100644 src/json/durations/12.json create mode 100644 src/json/durations/13.json create mode 100644 src/json/durations/14.json create mode 100644 src/json/durations/15.json create mode 100644 src/json/durations/16.json create mode 100644 src/json/durations/17.json create mode 100644 src/json/durations/18.json create mode 100644 src/json/durations/19.json create mode 100644 src/json/durations/2.json create mode 100644 src/json/durations/20.json create mode 100644 src/json/durations/21.json create mode 100644 src/json/durations/22.json create mode 100644 src/json/durations/23.json create mode 100644 src/json/durations/24.json create mode 100644 src/json/durations/25.json create mode 100644 src/json/durations/26.json create mode 100644 src/json/durations/27.json create mode 100644 src/json/durations/28.json create mode 100644 src/json/durations/29.json create mode 100644 src/json/durations/3.json create mode 100644 src/json/durations/30.json create mode 100644 src/json/durations/31.json create mode 100644 src/json/durations/32.json create mode 100644 src/json/durations/33.json create mode 100644 src/json/durations/34.json create mode 100644 src/json/durations/35.json create mode 100644 src/json/durations/36.json create mode 100644 src/json/durations/37.json create mode 100644 src/json/durations/38.json create mode 100644 src/json/durations/39.json create mode 100644 src/json/durations/4.json create mode 100644 src/json/durations/40.json create mode 100644 src/json/durations/41.json create mode 100644 src/json/durations/42.json create mode 100644 src/json/durations/43.json create mode 100644 src/json/durations/44.json create mode 100644 src/json/durations/45.json create mode 100644 src/json/durations/46.json create mode 100644 src/json/durations/47.json create mode 100644 src/json/durations/48.json create mode 100644 src/json/durations/49.json create mode 100644 src/json/durations/5.json create mode 100644 src/json/durations/50.json create mode 100644 src/json/durations/51.json create mode 100644 src/json/durations/52.json create mode 100644 src/json/durations/53.json create mode 100644 src/json/durations/54.json create mode 100644 src/json/durations/55.json create mode 100644 src/json/durations/56.json create mode 100644 src/json/durations/57.json create mode 100644 src/json/durations/58.json create mode 100644 src/json/durations/59.json create mode 100644 src/json/durations/6.json create mode 100644 src/json/durations/60.json create mode 100644 src/json/durations/61.json create mode 100644 src/json/durations/62.json create mode 100644 src/json/durations/63.json create mode 100644 src/json/durations/64.json create mode 100644 src/json/durations/65.json create mode 100644 src/json/durations/66.json create mode 100644 src/json/durations/67.json create mode 100644 src/json/durations/68.json create mode 100644 src/json/durations/69.json create mode 100644 src/json/durations/7.json create mode 100644 src/json/durations/70.json create mode 100644 src/json/durations/71.json create mode 100644 src/json/durations/72.json create mode 100644 src/json/durations/73.json create mode 100644 src/json/durations/74.json create mode 100644 src/json/durations/75.json create mode 100644 src/json/durations/76.json create mode 100644 src/json/durations/77.json create mode 100644 src/json/durations/78.json create mode 100644 src/json/durations/79.json create mode 100644 src/json/durations/8.json create mode 100644 src/json/durations/80.json create mode 100644 src/json/durations/81.json create mode 100644 src/json/durations/82.json create mode 100644 src/json/durations/83.json create mode 100644 src/json/durations/84.json create mode 100644 src/json/durations/85.json create mode 100644 src/json/durations/86.json create mode 100644 src/json/durations/87.json create mode 100644 src/json/durations/88.json create mode 100644 src/json/durations/89.json create mode 100644 src/json/durations/9.json create mode 100644 src/json/durations/90.json create mode 100644 src/json/durations/91.json create mode 100644 src/json/durations/92.json create mode 100644 src/json/durations/93.json create mode 100644 src/json/durations/94.json create mode 100644 src/json/durations/95.json create mode 100644 src/json/durations/96.json create mode 100644 src/json/durations/97.json create mode 100644 src/json/durations/98.json create mode 100644 src/json/durations/99.json create mode 100644 src/json/en/1/info.json create mode 100644 src/json/en/1/surah.json create mode 100644 src/json/en/10/info.json create mode 100644 src/json/en/10/surah.json create mode 100644 src/json/en/100/info.json create mode 100644 src/json/en/100/surah.json create mode 100644 src/json/en/101/info.json create mode 100644 src/json/en/101/surah.json create mode 100644 src/json/en/102/info.json create mode 100644 src/json/en/102/surah.json create mode 100644 src/json/en/103/info.json create mode 100644 src/json/en/103/surah.json create mode 100644 src/json/en/104/info.json create mode 100644 src/json/en/104/surah.json create mode 100644 src/json/en/105/info.json create mode 100644 src/json/en/105/surah.json create mode 100644 src/json/en/106/info.json create mode 100644 src/json/en/106/surah.json create mode 100644 src/json/en/107/info.json create mode 100644 src/json/en/107/surah.json create mode 100644 src/json/en/108/info.json create mode 100644 src/json/en/108/surah.json create mode 100644 src/json/en/109/info.json create mode 100644 src/json/en/109/surah.json create mode 100644 src/json/en/11/info.json create mode 100644 src/json/en/11/surah.json create mode 100644 src/json/en/110/info.json create mode 100644 src/json/en/110/surah.json create mode 100644 src/json/en/111/info.json create mode 100644 src/json/en/111/surah.json create mode 100644 src/json/en/112/info.json create mode 100644 src/json/en/112/surah.json create mode 100644 src/json/en/113/info.json create mode 100644 src/json/en/113/surah.json create mode 100644 src/json/en/114/info.json create mode 100644 src/json/en/114/surah.json create mode 100644 src/json/en/12/info.json create mode 100644 src/json/en/12/surah.json create mode 100644 src/json/en/13/info.json create mode 100644 src/json/en/13/surah.json create mode 100644 src/json/en/14/info.json create mode 100644 src/json/en/14/surah.json create mode 100644 src/json/en/15/info.json create mode 100644 src/json/en/15/surah.json create mode 100644 src/json/en/16/info.json create mode 100644 src/json/en/16/surah.json create mode 100644 src/json/en/17/info.json create mode 100644 src/json/en/17/surah.json create mode 100644 src/json/en/18/info.json create mode 100644 src/json/en/18/surah.json create mode 100644 src/json/en/19/info.json create mode 100644 src/json/en/19/surah.json create mode 100644 src/json/en/2/info.json create mode 100644 src/json/en/2/surah.json create mode 100644 src/json/en/20/info.json create mode 100644 src/json/en/20/surah.json create mode 100644 src/json/en/21/info.json create mode 100644 src/json/en/21/surah.json create mode 100644 src/json/en/22/info.json create mode 100644 src/json/en/22/surah.json create mode 100644 src/json/en/23/info.json create mode 100644 src/json/en/23/surah.json create mode 100644 src/json/en/24/info.json create mode 100644 src/json/en/24/surah.json create mode 100644 src/json/en/25/info.json create mode 100644 src/json/en/25/surah.json create mode 100644 src/json/en/26/info.json create mode 100644 src/json/en/26/surah.json create mode 100644 src/json/en/27/info.json create mode 100644 src/json/en/27/surah.json create mode 100644 src/json/en/28/info.json create mode 100644 src/json/en/28/surah.json create mode 100644 src/json/en/29/info.json create mode 100644 src/json/en/29/surah.json create mode 100644 src/json/en/3/info.json create mode 100644 src/json/en/3/surah.json create mode 100644 src/json/en/30/info.json create mode 100644 src/json/en/30/surah.json create mode 100644 src/json/en/31/info.json create mode 100644 src/json/en/31/surah.json create mode 100644 src/json/en/32/info.json create mode 100644 src/json/en/32/surah.json create mode 100644 src/json/en/33/info.json create mode 100644 src/json/en/33/surah.json create mode 100644 src/json/en/34/info.json create mode 100644 src/json/en/34/surah.json create mode 100644 src/json/en/35/info.json create mode 100644 src/json/en/35/surah.json create mode 100644 src/json/en/36/info.json create mode 100644 src/json/en/36/surah.json create mode 100644 src/json/en/37/info.json create mode 100644 src/json/en/37/surah.json create mode 100644 src/json/en/38/info.json create mode 100644 src/json/en/38/surah.json create mode 100644 src/json/en/39/info.json create mode 100644 src/json/en/39/surah.json create mode 100644 src/json/en/4/info.json create mode 100644 src/json/en/4/surah.json create mode 100644 src/json/en/40/info.json create mode 100644 src/json/en/40/surah.json create mode 100644 src/json/en/41/info.json create mode 100644 src/json/en/41/surah.json create mode 100644 src/json/en/42/info.json create mode 100644 src/json/en/42/surah.json create mode 100644 src/json/en/43/info.json create mode 100644 src/json/en/43/surah.json create mode 100644 src/json/en/44/info.json create mode 100644 src/json/en/44/surah.json create mode 100644 src/json/en/45/info.json create mode 100644 src/json/en/45/surah.json create mode 100644 src/json/en/46/info.json create mode 100644 src/json/en/46/surah.json create mode 100644 src/json/en/47/info.json create mode 100644 src/json/en/47/surah.json create mode 100644 src/json/en/48/info.json create mode 100644 src/json/en/48/surah.json create mode 100644 src/json/en/49/info.json create mode 100644 src/json/en/49/surah.json create mode 100644 src/json/en/5/info.json create mode 100644 src/json/en/5/surah.json create mode 100644 src/json/en/50/info.json create mode 100644 src/json/en/50/surah.json create mode 100644 src/json/en/51/info.json create mode 100644 src/json/en/51/surah.json create mode 100644 src/json/en/52/info.json create mode 100644 src/json/en/52/surah.json create mode 100644 src/json/en/53/info.json create mode 100644 src/json/en/53/surah.json create mode 100644 src/json/en/54/info.json create mode 100644 src/json/en/54/surah.json create mode 100644 src/json/en/55/info.json create mode 100644 src/json/en/55/surah.json create mode 100644 src/json/en/56/info.json create mode 100644 src/json/en/56/surah.json create mode 100644 src/json/en/57/info.json create mode 100644 src/json/en/57/surah.json create mode 100644 src/json/en/58/info.json create mode 100644 src/json/en/58/surah.json create mode 100644 src/json/en/59/info.json create mode 100644 src/json/en/59/surah.json create mode 100644 src/json/en/6/info.json create mode 100644 src/json/en/6/surah.json create mode 100644 src/json/en/60/info.json create mode 100644 src/json/en/60/surah.json create mode 100644 src/json/en/61/info.json create mode 100644 src/json/en/61/surah.json create mode 100644 src/json/en/62/info.json create mode 100644 src/json/en/62/surah.json create mode 100644 src/json/en/63/info.json create mode 100644 src/json/en/63/surah.json create mode 100644 src/json/en/64/info.json create mode 100644 src/json/en/64/surah.json create mode 100644 src/json/en/65/info.json create mode 100644 src/json/en/65/surah.json create mode 100644 src/json/en/66/info.json create mode 100644 src/json/en/66/surah.json create mode 100644 src/json/en/67/info.json create mode 100644 src/json/en/67/surah.json create mode 100644 src/json/en/68/info.json create mode 100644 src/json/en/68/surah.json create mode 100644 src/json/en/69/info.json create mode 100644 src/json/en/69/surah.json create mode 100644 src/json/en/7/info.json create mode 100644 src/json/en/7/surah.json create mode 100644 src/json/en/70/info.json create mode 100644 src/json/en/70/surah.json create mode 100644 src/json/en/71/info.json create mode 100644 src/json/en/71/surah.json create mode 100644 src/json/en/72/info.json create mode 100644 src/json/en/72/surah.json create mode 100644 src/json/en/73/info.json create mode 100644 src/json/en/73/surah.json create mode 100644 src/json/en/74/info.json create mode 100644 src/json/en/74/surah.json create mode 100644 src/json/en/75/info.json create mode 100644 src/json/en/75/surah.json create mode 100644 src/json/en/76/info.json create mode 100644 src/json/en/76/surah.json create mode 100644 src/json/en/77/info.json create mode 100644 src/json/en/77/surah.json create mode 100644 src/json/en/78/info.json create mode 100644 src/json/en/78/surah.json create mode 100644 src/json/en/79/info.json create mode 100644 src/json/en/79/surah.json create mode 100644 src/json/en/8/info.json create mode 100644 src/json/en/8/surah.json create mode 100644 src/json/en/80/info.json create mode 100644 src/json/en/80/surah.json create mode 100644 src/json/en/81/info.json create mode 100644 src/json/en/81/surah.json create mode 100644 src/json/en/82/info.json create mode 100644 src/json/en/82/surah.json create mode 100644 src/json/en/83/info.json create mode 100644 src/json/en/83/surah.json create mode 100644 src/json/en/84/info.json create mode 100644 src/json/en/84/surah.json create mode 100644 src/json/en/85/info.json create mode 100644 src/json/en/85/surah.json create mode 100644 src/json/en/86/info.json create mode 100644 src/json/en/86/surah.json create mode 100644 src/json/en/87/info.json create mode 100644 src/json/en/87/surah.json create mode 100644 src/json/en/88/info.json create mode 100644 src/json/en/88/surah.json create mode 100644 src/json/en/89/info.json create mode 100644 src/json/en/89/surah.json create mode 100644 src/json/en/9/info.json create mode 100644 src/json/en/9/surah.json create mode 100644 src/json/en/90/info.json create mode 100644 src/json/en/90/surah.json create mode 100644 src/json/en/91/info.json create mode 100644 src/json/en/91/surah.json create mode 100644 src/json/en/92/info.json create mode 100644 src/json/en/92/surah.json create mode 100644 src/json/en/93/info.json create mode 100644 src/json/en/93/surah.json create mode 100644 src/json/en/94/info.json create mode 100644 src/json/en/94/surah.json create mode 100644 src/json/en/95/info.json create mode 100644 src/json/en/95/surah.json create mode 100644 src/json/en/96/info.json create mode 100644 src/json/en/96/surah.json create mode 100644 src/json/en/97/info.json create mode 100644 src/json/en/97/surah.json create mode 100644 src/json/en/98/info.json create mode 100644 src/json/en/98/surah.json create mode 100644 src/json/en/99/info.json create mode 100644 src/json/en/99/surah.json create mode 100644 src/json/fa/1/info.json create mode 100644 src/json/fa/1/surah.json create mode 100644 src/json/fa/10/info.json create mode 100644 src/json/fa/10/surah.json create mode 100644 src/json/fa/100/info.json create mode 100644 src/json/fa/100/surah.json create mode 100644 src/json/fa/101/info.json create mode 100644 src/json/fa/101/surah.json create mode 100644 src/json/fa/102/info.json create mode 100644 src/json/fa/102/surah.json create mode 100644 src/json/fa/103/info.json create mode 100644 src/json/fa/103/surah.json create mode 100644 src/json/fa/104/info.json create mode 100644 src/json/fa/104/surah.json create mode 100644 src/json/fa/105/info.json create mode 100644 src/json/fa/105/surah.json create mode 100644 src/json/fa/106/info.json create mode 100644 src/json/fa/106/surah.json create mode 100644 src/json/fa/107/info.json create mode 100644 src/json/fa/107/surah.json create mode 100644 src/json/fa/108/info.json create mode 100644 src/json/fa/108/surah.json create mode 100644 src/json/fa/109/info.json create mode 100644 src/json/fa/109/surah.json create mode 100644 src/json/fa/11/info.json create mode 100644 src/json/fa/11/surah.json create mode 100644 src/json/fa/110/info.json create mode 100644 src/json/fa/110/surah.json create mode 100644 src/json/fa/111/info.json create mode 100644 src/json/fa/111/surah.json create mode 100644 src/json/fa/112/info.json create mode 100644 src/json/fa/112/surah.json create mode 100644 src/json/fa/113/info.json create mode 100644 src/json/fa/113/surah.json create mode 100644 src/json/fa/114/info.json create mode 100644 src/json/fa/114/surah.json create mode 100644 src/json/fa/12/info.json create mode 100644 src/json/fa/12/surah.json create mode 100644 src/json/fa/13/info.json create mode 100644 src/json/fa/13/surah.json create mode 100644 src/json/fa/14/info.json create mode 100644 src/json/fa/14/surah.json create mode 100644 src/json/fa/15/info.json create mode 100644 src/json/fa/15/surah.json create mode 100644 src/json/fa/16/info.json create mode 100644 src/json/fa/16/surah.json create mode 100644 src/json/fa/17/info.json create mode 100644 src/json/fa/17/surah.json create mode 100644 src/json/fa/18/info.json create mode 100644 src/json/fa/18/surah.json create mode 100644 src/json/fa/19/info.json create mode 100644 src/json/fa/19/surah.json create mode 100644 src/json/fa/2/info.json create mode 100644 src/json/fa/2/surah.json create mode 100644 src/json/fa/20/info.json create mode 100644 src/json/fa/20/surah.json create mode 100644 src/json/fa/21/info.json create mode 100644 src/json/fa/21/surah.json create mode 100644 src/json/fa/22/info.json create mode 100644 src/json/fa/22/surah.json create mode 100644 src/json/fa/23/info.json create mode 100644 src/json/fa/23/surah.json create mode 100644 src/json/fa/24/info.json create mode 100644 src/json/fa/24/surah.json create mode 100644 src/json/fa/25/info.json create mode 100644 src/json/fa/25/surah.json create mode 100644 src/json/fa/26/info.json create mode 100644 src/json/fa/26/surah.json create mode 100644 src/json/fa/27/info.json create mode 100644 src/json/fa/27/surah.json create mode 100644 src/json/fa/28/info.json create mode 100644 src/json/fa/28/surah.json create mode 100644 src/json/fa/29/info.json create mode 100644 src/json/fa/29/surah.json create mode 100644 src/json/fa/3/info.json create mode 100644 src/json/fa/3/surah.json create mode 100644 src/json/fa/30/info.json create mode 100644 src/json/fa/30/surah.json create mode 100644 src/json/fa/31/info.json create mode 100644 src/json/fa/31/surah.json create mode 100644 src/json/fa/32/info.json create mode 100644 src/json/fa/32/surah.json create mode 100644 src/json/fa/33/info.json create mode 100644 src/json/fa/33/surah.json create mode 100644 src/json/fa/34/info.json create mode 100644 src/json/fa/34/surah.json create mode 100644 src/json/fa/35/info.json create mode 100644 src/json/fa/35/surah.json create mode 100644 src/json/fa/36/info.json create mode 100644 src/json/fa/36/surah.json create mode 100644 src/json/fa/37/info.json create mode 100644 src/json/fa/37/surah.json create mode 100644 src/json/fa/38/info.json create mode 100644 src/json/fa/38/surah.json create mode 100644 src/json/fa/39/info.json create mode 100644 src/json/fa/39/surah.json create mode 100644 src/json/fa/4/info.json create mode 100644 src/json/fa/4/surah.json create mode 100644 src/json/fa/40/info.json create mode 100644 src/json/fa/40/surah.json create mode 100644 src/json/fa/41/info.json create mode 100644 src/json/fa/41/surah.json create mode 100644 src/json/fa/42/info.json create mode 100644 src/json/fa/42/surah.json create mode 100644 src/json/fa/43/info.json create mode 100644 src/json/fa/43/surah.json create mode 100644 src/json/fa/44/info.json create mode 100644 src/json/fa/44/surah.json create mode 100644 src/json/fa/45/info.json create mode 100644 src/json/fa/45/surah.json create mode 100644 src/json/fa/46/info.json create mode 100644 src/json/fa/46/surah.json create mode 100644 src/json/fa/47/info.json create mode 100644 src/json/fa/47/surah.json create mode 100644 src/json/fa/48/info.json create mode 100644 src/json/fa/48/surah.json create mode 100644 src/json/fa/49/info.json create mode 100644 src/json/fa/49/surah.json create mode 100644 src/json/fa/5/info.json create mode 100644 src/json/fa/5/surah.json create mode 100644 src/json/fa/50/info.json create mode 100644 src/json/fa/50/surah.json create mode 100644 src/json/fa/51/info.json create mode 100644 src/json/fa/51/surah.json create mode 100644 src/json/fa/52/info.json create mode 100644 src/json/fa/52/surah.json create mode 100644 src/json/fa/53/info.json create mode 100644 src/json/fa/53/surah.json create mode 100644 src/json/fa/54/info.json create mode 100644 src/json/fa/54/surah.json create mode 100644 src/json/fa/55/info.json create mode 100644 src/json/fa/55/surah.json create mode 100644 src/json/fa/56/info.json create mode 100644 src/json/fa/56/surah.json create mode 100644 src/json/fa/57/info.json create mode 100644 src/json/fa/57/surah.json create mode 100644 src/json/fa/58/info.json create mode 100644 src/json/fa/58/surah.json create mode 100644 src/json/fa/59/info.json create mode 100644 src/json/fa/59/surah.json create mode 100644 src/json/fa/6/info.json create mode 100644 src/json/fa/6/surah.json create mode 100644 src/json/fa/60/info.json create mode 100644 src/json/fa/60/surah.json create mode 100644 src/json/fa/61/info.json create mode 100644 src/json/fa/61/surah.json create mode 100644 src/json/fa/62/info.json create mode 100644 src/json/fa/62/surah.json create mode 100644 src/json/fa/63/info.json create mode 100644 src/json/fa/63/surah.json create mode 100644 src/json/fa/64/info.json create mode 100644 src/json/fa/64/surah.json create mode 100644 src/json/fa/65/info.json create mode 100644 src/json/fa/65/surah.json create mode 100644 src/json/fa/66/info.json create mode 100644 src/json/fa/66/surah.json create mode 100644 src/json/fa/67/info.json create mode 100644 src/json/fa/67/surah.json create mode 100644 src/json/fa/68/info.json create mode 100644 src/json/fa/68/surah.json create mode 100644 src/json/fa/69/info.json create mode 100644 src/json/fa/69/surah.json create mode 100644 src/json/fa/7/info.json create mode 100644 src/json/fa/7/surah.json create mode 100644 src/json/fa/70/info.json create mode 100644 src/json/fa/70/surah.json create mode 100644 src/json/fa/71/info.json create mode 100644 src/json/fa/71/surah.json create mode 100644 src/json/fa/72/info.json create mode 100644 src/json/fa/72/surah.json create mode 100644 src/json/fa/73/info.json create mode 100644 src/json/fa/73/surah.json create mode 100644 src/json/fa/74/info.json create mode 100644 src/json/fa/74/surah.json create mode 100644 src/json/fa/75/info.json create mode 100644 src/json/fa/75/surah.json create mode 100644 src/json/fa/76/info.json create mode 100644 src/json/fa/76/surah.json create mode 100644 src/json/fa/77/info.json create mode 100644 src/json/fa/77/surah.json create mode 100644 src/json/fa/78/info.json create mode 100644 src/json/fa/78/surah.json create mode 100644 src/json/fa/79/info.json create mode 100644 src/json/fa/79/surah.json create mode 100644 src/json/fa/8/info.json create mode 100644 src/json/fa/8/surah.json create mode 100644 src/json/fa/80/info.json create mode 100644 src/json/fa/80/surah.json create mode 100644 src/json/fa/81/info.json create mode 100644 src/json/fa/81/surah.json create mode 100644 src/json/fa/82/info.json create mode 100644 src/json/fa/82/surah.json create mode 100644 src/json/fa/83/info.json create mode 100644 src/json/fa/83/surah.json create mode 100644 src/json/fa/84/info.json create mode 100644 src/json/fa/84/surah.json create mode 100644 src/json/fa/85/info.json create mode 100644 src/json/fa/85/surah.json create mode 100644 src/json/fa/86/info.json create mode 100644 src/json/fa/86/surah.json create mode 100644 src/json/fa/87/info.json create mode 100644 src/json/fa/87/surah.json create mode 100644 src/json/fa/88/info.json create mode 100644 src/json/fa/88/surah.json create mode 100644 src/json/fa/89/info.json create mode 100644 src/json/fa/89/surah.json create mode 100644 src/json/fa/9/info.json create mode 100644 src/json/fa/9/surah.json create mode 100644 src/json/fa/90/info.json create mode 100644 src/json/fa/90/surah.json create mode 100644 src/json/fa/91/info.json create mode 100644 src/json/fa/91/surah.json create mode 100644 src/json/fa/92/info.json create mode 100644 src/json/fa/92/surah.json create mode 100644 src/json/fa/93/info.json create mode 100644 src/json/fa/93/surah.json create mode 100644 src/json/fa/94/info.json create mode 100644 src/json/fa/94/surah.json create mode 100644 src/json/fa/95/info.json create mode 100644 src/json/fa/95/surah.json create mode 100644 src/json/fa/96/info.json create mode 100644 src/json/fa/96/surah.json create mode 100644 src/json/fa/97/info.json create mode 100644 src/json/fa/97/surah.json create mode 100644 src/json/fa/98/info.json create mode 100644 src/json/fa/98/surah.json create mode 100644 src/json/fa/99/info.json create mode 100644 src/json/fa/99/surah.json create mode 100644 src/json/nameById.json create mode 100644 src/json/surahs.json create mode 100644 src/json/t.json create mode 100755 src/manifest.webapp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a984ac5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +node_modules/ +dist/ +/.gems/ +/build/ +/tmp/ +/rake/tasks/deploy.rake +/packages/**/*.js +/submodules/ +/crash.log +/*.core/ +/nanoc.yaml +/source diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..4ced032 --- /dev/null +++ b/Gemfile @@ -0,0 +1,19 @@ +# frozen_string_literal: true +source "https://rubygems.org" + +## +# nanoc +gem "nanoc", "~> 4.12" +gem "nanoc-webpack.rb", "~> 0.10" +gem "nanoc-tidy.rb", "~> 0.8.4" + +## +# dev +gem "server.rb" +gem "ryo.rb" +gem "standard", "~> 1.24" +gem "paint", "~> 2.3" +gem "listen", "~> 3.0" +gem "test-cmd.rb" +gem "rexml", "~> 3.3.3" +gem "rake", "~> 13.2" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..d9e012e --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,163 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + ast (2.4.2) + base64 (0.2.0) + coderay (1.1.3) + colored (1.2) + concurrent-ruby (1.3.4) + cri (2.15.12) + ddmetrics (1.1.0) + ddplugin (1.0.3) + diff-lcs (1.5.1) + ffi (1.17.0) + immutable-ruby (0.2.0) + concurrent-ruby (~> 1.1) + sorted_set (~> 1.0) + json (2.7.2) + json_schema (0.21.0) + language_server-protocol (3.17.0.3) + lint_roller (1.1.0) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + memo_wise (1.9.0) + method_source (1.1.0) + nanoc (4.13.0) + addressable (~> 2.5) + colored (~> 1.2) + nanoc-checking (~> 1.0, >= 1.0.2) + nanoc-cli (= 4.13.0) + nanoc-core (= 4.13.0) + nanoc-deploying (~> 1.0) + parallel (~> 1.12) + tty-command (~> 0.8) + tty-which (~> 0.4) + nanoc-checking (1.0.5) + nanoc-cli (~> 4.12, >= 4.12.5) + nanoc-core (~> 4.12, >= 4.12.5) + nanoc-cli (4.13.0) + cri (~> 2.15) + diff-lcs (~> 1.3) + nanoc-core (= 4.13.0) + pry + zeitwerk (~> 2.1) + nanoc-core (4.13.0) + base64 (~> 0.2) + concurrent-ruby (~> 1.1) + ddmetrics (~> 1.0) + ddplugin (~> 1.0) + immutable-ruby (~> 0.1) + json_schema (~> 0.19) + memo_wise (~> 1.5) + psych (>= 4.0, < 6.0) + slow_enumerator_tools (~> 1.0) + tty-platform (~> 0.2) + zeitwerk (~> 2.1) + nanoc-deploying (1.0.2) + nanoc-checking (~> 1.0) + nanoc-cli (~> 4.11, >= 4.11.15) + nanoc-core (~> 4.11, >= 4.11.15) + nanoc-tidy.rb (0.8.4) + ryo.rb (~> 0.5) + test-cmd.rb (~> 0.12.4) + nanoc-webpack.rb (0.10.6) + ryo.rb (~> 0.5) + test-cmd.rb (~> 0.12.4) + nio4r (2.7.3) + paint (2.3.0) + parallel (1.26.2) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pastel (0.8.0) + tty-color (~> 0.5) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + psych (5.1.2) + stringio + public_suffix (6.0.1) + puma (6.4.2) + nio4r (~> 2.0) + racc (1.8.1) + rack (3.1.7) + rainbow (3.1.1) + rake (13.2.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rbtree (0.4.6) + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rubocop (1.65.1) + json (~> 2.3) + language_server-protocol (>= 3.17.0) + parallel (~> 1.10) + parser (>= 3.3.0.2) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 2.4, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.31.1, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.0) + parser (>= 3.3.1.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + ruby-progressbar (1.13.0) + ryo.rb (0.5.6) + server.rb (0.4.0) + puma (~> 6.3) + rack (~> 3.0) + set (1.1.0) + slow_enumerator_tools (1.1.0) + sorted_set (1.0.3) + rbtree + set (~> 1.0) + standard (1.40.0) + language_server-protocol (~> 3.17.0.2) + lint_roller (~> 1.0) + rubocop (~> 1.65.0) + standard-custom (~> 1.0.0) + standard-performance (~> 1.4) + standard-custom (1.0.2) + lint_roller (~> 1.0) + rubocop (~> 1.50) + standard-performance (1.4.0) + lint_roller (~> 1.1) + rubocop-performance (~> 1.21.0) + stringio (3.1.1) + strscan (3.1.0) + test-cmd.rb (0.12.4) + tty-color (0.6.0) + tty-command (0.10.1) + pastel (~> 0.8) + tty-platform (0.3.0) + tty-which (0.5.0) + unicode-display_width (2.5.0) + zeitwerk (2.6.17) + +PLATFORMS + amd64-freebsd-14 + ruby + +DEPENDENCIES + listen (~> 3.0) + nanoc (~> 4.12) + nanoc-tidy.rb (~> 0.8.4) + nanoc-webpack.rb (~> 0.10) + paint (~> 2.3) + rake (~> 13.2) + rexml (~> 3.3.3) + ryo.rb + server.rb + standard (~> 1.24) + test-cmd.rb + +BUNDLED WITH + 2.5.9 diff --git a/README.md b/README.md new file mode 100644 index 0000000..8e16d0c --- /dev/null +++ b/README.md @@ -0,0 +1,107 @@ +## About + +This repository contains a port of the +[al-quran.reflectslight.io](https://al-quran.reflectslight.io) +website for the mobile operating system +[KaiOS](https://www.kaiostech.com/). +The project is still in the early stages of development. + +## Requirements + +The following languages and tools have to be +installed to build the website from source: + +* Ruby 3.2 (or later) +* NodeJS v18.15 (or later) +* [tidy-html5](https://github.com/htacg/tidy-html5) + +## Development + + # Clone repository + git clone https://github.com/ReflectsLight/al-quran.reflectslight.io + cd al-quran.reflectslight.io + + # Setup build environment + bin/setup + + # List all tasks + bundle exec rake -T + + # Build website (dev build) + bundle exec rake nanoc:build + + # Build website (production build) + bundle exec rake nanoc:build[production] + + # Start web server + bundle exec rake server + +## Configuration + +* **server.base_url**
+ If you plan to host the website on + your own domain you should update + [nanoc.yaml](nanoc.yaml.sample) + first. In certain places + links will reference + https://al-quran.reflectslight.io + instead of using a relative path. + For example + [/src/sitemap.xml.erb](/src/sitemap.xml.erb) + is one such place. Those links can be updated + to your own domain by changing the `server.base_url` + field in + [nanoc.yaml](nanoc.yaml.sample) + before running `bundle exec rake nanoc:build`. + +* **audio.base_url**
+ `audio.base_url` controls what web server serves + audio content. + [The default](https://al-quran.reflectslight.io/audio/rifai) + works out of the box. The URL for an audio file is + resolved by joining `audio.base_url` and + `//.mp3`. The `audio.base_url` option + makes it relatively easy to change the reciter + at build time, before deploying the website. + + The https://al-quran.reflectslight.io web server + provides the following recitations: + + - Mishari bin Rashed Alafasy
+ https://al-quran.reflectslight.io/audio/alafasy + - Ahmad bin Ali Al-Ajmi
+ https://al-quran.reflectslight.io/audio/alajmi + - Sahl Yassin
+ https://al-quran.reflectslight.io/audio/yassin + - Hani ar-Rifai
+ https://al-quran.reflectslight.io/audio/rifai + + **Note**
+ Due to their overall size the audio files are the only + files **not** kept in this repository. The audio files + are hosted by https://al-quran.reflectslight.io instead. + +## Thanks + +الْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ + +* Thanks to the graphic artists: + - [RefreshIcon](/src/js/components/Icon.tsx) + by + [Muhammad Haq](https://freeicons.io/profile/823) +* Thanks to the translators: + - English (The Clear Quran) by Dr. Mustafa Khattab + - Farsi by Hussain Ansarian +* Thanks to the reciters: + - Mishari bin Rashed Alafasy + - Ahmad bin Ali Al-Ajmi + - Sahl Yassin + - Hani ar-Rifai +* Thanks to [@farooqkz](https://github.com/farooqkz) who introduced me to +[KaiOS](https://www.kaiostech.com/), +and inspired me to start work on this project + +## License + +The "source code" is released under the terms of the GPL
+See [LICENSE](./share/al-quran.reflectslight.io/LICENSE) for details diff --git a/Rakefile.rb b/Rakefile.rb new file mode 100644 index 0000000..611debe --- /dev/null +++ b/Rakefile.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require "bundler/setup" +require "nanoc" +require "ryo" +require "ryo/yaml" +require "ryo/json" + +require_relative "nanoc/lib/utils" +include Utils + +begin + load "rake/tasks/deploy.rake" +rescue LoadError => ex + warn "[warn] #{ex.class}: #{ex.message}" +end +load "rake/tasks/format.rake" +load "rake/tasks/nanoc.rake" +load "rake/tasks/t.rake" +load "rake/tasks/ci.rake" +load "rake/tasks/server.rake" +task default: "nanoc:build" diff --git a/Rules b/Rules new file mode 100644 index 0000000..ac761ac --- /dev/null +++ b/Rules @@ -0,0 +1,58 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +## +# Requires +require "ryo" +require "ryo/json" +require "ryo/yaml" +require "nanoc-webpack" +require "nanoc-tidy" + +## +# Extensions +[Nanoc::RuleDSL::CompilationRuleContext, Nanoc::RuleDSL::CompilerDSL].each { _1.prepend(Utils) } +Nanoc::RuleDSL::CompilationRuleContext.prepend(Nanoc::Extension::AnonymousFilter) +Nanoc::RuleDSL::CompilerDSL.prepend(Nanoc::Extension::RequireRules) + +## +# Locals +locales = %w[ar fa en] +name_by_id = Ryo.from_json(path: File.join(dirs.content, "json", "nameById.json")) +tdata = Ryo.from_json(path: File.join(dirs.content, "json", "t.json")) +surahs = Ryo.from_json(path: File.join(dirs.content, "json", "surahs.json")) +tidy = `which tidy || which tidy5`.chomp +buildenv = ENV["buildenv"] || "development" +etcdir = File.join(__dir__, "etc") +globals = {buildenv:, locales:, tidy:, tdata:, surahs:, name_by_id:} + +## +# Filters +Nanoc::Tidy + .default_argv + .replace([*Nanoc::Tidy.default_argv, "-upper"].uniq) + +## +# Rules +passthrough "/json/durations/*.json" +require_rules "nanoc/rules/assets" +require_rules "nanoc/rules/redirect", globals +require_rules "nanoc/rules/random", globals +require_rules "nanoc/rules/surah-stream", globals +require_rules "nanoc/rules/surah-index", globals + +compile "/js/main/vendor.ts" do + filter :webpack, + argv: %w[--config etc/webpack.vendor.js] + write("/js/main/vendor.js") +end +compile("/manifest.webapp") do + write("/manifest.webapp") +end +compile("/**/*") { write(nil) } +layout("**/*", :erb) + +postprocess do + # Remove build artifacts + system "rm -rf #{nanoc.output_dir}/json/" +end diff --git a/bin/setup b/bin/setup new file mode 100755 index 0000000..5f751b9 --- /dev/null +++ b/bin/setup @@ -0,0 +1,59 @@ +#!/bin/sh +set -e + +## +# functions +printok() +{ + echo "ok: ${1}" > /dev/stdout +} + +printerr() +{ + echo "error: ${1}" > /dev/stderr +} + +require_dependency() +{ + local cmd + for i in $(seq 1 $#); do + eval "cmd=\$${i}" + if which "${cmd}" > /dev/null 2>&1; then + printok "${cmd} found" + else + printerr "${cmd} is required but was not found on \$PATH" + exit 1 + fi + done +} + +## +# main +require_dependency git bundle npm +git submodule update -f --init --recursive +printok "submodules checked out" + +bundle install +printok "ruby dependencies installed" + +npm i +printok "nodejs dependencies installed" + +if [ ! -e "nanoc.yaml" ]; then + cp nanoc.yaml.sample nanoc.yaml + printok "nanoc.yaml.sample -> nanoc.yaml" +fi + +found=0 +for t in tidy tidy5; do + if which ${t} > /dev/null 2>&1; then + found=1 + break + fi +done + +if [ "${found}" = "1" ]; then + printok "tidy-html5 found" +else + printerr "tidy-html5 is required but was not found on \$PATH" +fi diff --git a/etc/eslint.config.mjs b/etc/eslint.config.mjs new file mode 100644 index 0000000..d2c4004 --- /dev/null +++ b/etc/eslint.config.mjs @@ -0,0 +1,12 @@ +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; +import prettier from 'eslint-plugin-prettier/recommended'; + +export default tseslint.config( + eslint.configs.recommended, + ...tseslint.configs.recommended, + prettier, + { + rules: {'@typescript-eslint/no-require-imports': 0}, + } +) diff --git a/etc/rubocop.yml b/etc/rubocop.yml new file mode 100644 index 0000000..7c004f8 --- /dev/null +++ b/etc/rubocop.yml @@ -0,0 +1,49 @@ +## +# Defaults +AllCops: + TargetRubyVersion: 3.2 + Exclude: + - submodules/**/* + Include: + - Rakefile.rb + - rake/tasks/*.rake + - nanoc/rules/*.rules + - nanoc/rules/**/**/*.rules + - nanoc/lib/*.rb + - nanoc/lib/**/*.rb + - nanoc/lib/**/**.rb + +## +# Defaults: standard-rb +require: + - standard +inherit_gem: + standard: config/base.yml + +## +# Enabled +Style/FrozenStringLiteralComment: + Enabled: true +Layout/SpaceInsideHashLiteralBraces: + Enabled: true + +## +# Disabled +Style/MixinUsage: + Exclude: + - Rakefile.rb +Style/SuperArguments: + Exclude: + - nanoc/lib/nanoc/extension/anonymous_filter.rb +Layout/MultilineMethodCallIndentation: + Enabled: false +Layout/ArgumentAlignment: + Enabled: false +Layout/ArrayAlignment: + Enabled: false +Layout/ExtraSpacing: + Enabled: false +Style/TrivialAccessors: + Enabled: false +Style/PercentLiteralDelimiters: + Enabled: false diff --git a/etc/tsconfig.json b/etc/tsconfig.json new file mode 100644 index 0000000..16b8c4f --- /dev/null +++ b/etc/tsconfig.json @@ -0,0 +1,20 @@ +{ + "include": ["../src/**/*.ts", "../src/**/*.tsx"], + "exclude": ["../node_modules"], + "compilerOptions": { + "strict": true, + "module": "commonjs", + "target": "ES5", + "noImplicitAny": true, + "moduleResolution": "node", + "esModuleInterop": true, + "jsx": "react", + "lib": [ "ES2020", "DOM" ], + + "baseUrl": "../src/", + "paths": { + "~/*": ["./js/*"], + "@json/*": ["./json/*"] + }, + } +} diff --git a/etc/webpack.common.js b/etc/webpack.common.js new file mode 100644 index 0000000..e563f1f --- /dev/null +++ b/etc/webpack.common.js @@ -0,0 +1,49 @@ +const path = require("path"); +module.exports = (env, argv) => { + return { + devtool: "source-map", + resolve: { + modules: [path.resolve(__dirname, "..", "node_modules")], + alias: { + "@css": path.resolve(__dirname, "..", "src", "css"), + "@json": path.resolve(__dirname, "..", "src", "json"), + "~": path.resolve(__dirname, "..", "src", "js"), + }, + extensions: [".js", ".ts", ".tsx", ".json", ".css", ".scss"], + }, + module: { + rules: [ + { + test: /\.tsx?$/, + loader: 'babel-loader', + exclude: /node_modules/, + options: { + presets: [ + ['@babel/preset-env', { + targets: { + esmodules: false, + browsers: ['KaiOS >= 2.5', 'Firefox >= 48'], + }, + useBuiltIns: 'entry', + corejs: 3, + }], + '@babel/preset-typescript', + '@babel/preset-react' + ], + }, + }, + { + test: /\.(scss|css)$/i, + exclude: /node_modules/, + use: [ + "style-loader", + "css-loader", + "sass-loader", + ] + } + ], + }, + plugins: [], + optimization: {} + } +}; diff --git a/etc/webpack.development.js b/etc/webpack.development.js new file mode 100644 index 0000000..db26bae --- /dev/null +++ b/etc/webpack.development.js @@ -0,0 +1,8 @@ +const { merge } = require('webpack-merge'); +const common = require('./webpack.common.js'); +module.exports = (env, argv) => { + return merge( + common(env, argv), + { mode: "development" } + ) +} diff --git a/etc/webpack.production.js b/etc/webpack.production.js new file mode 100644 index 0000000..a553642 --- /dev/null +++ b/etc/webpack.production.js @@ -0,0 +1,12 @@ +const { merge } = require('webpack-merge'); +const common = require('./webpack.common.js'); +module.exports = (env, argv) => { + return merge( + common(env, argv), + { + mode: "production", + devtool: false, + optimization: { minimize: true }, + } + ) +} diff --git a/etc/webpack.vendor.js b/etc/webpack.vendor.js new file mode 100644 index 0000000..306ae1e --- /dev/null +++ b/etc/webpack.vendor.js @@ -0,0 +1,14 @@ +const path = require('path'); +const common = require('./webpack.common.js'); +const { merge } = require('webpack-merge'); + +module.exports = (env, argv) => { + return merge( + common(env, argv), + { + output: { library: { type: 'umd' } }, + resolve: { extensions: ['.ts', '.tsx'] }, + optimization: { minimize: true } + } + ) +} diff --git a/nanoc.yaml.sample b/nanoc.yaml.sample new file mode 100644 index 0000000..c3b2b7e --- /dev/null +++ b/nanoc.yaml.sample @@ -0,0 +1,32 @@ +# A list of file extensions that Nanoc will consider to be textual rather than +# binary. If an item with an extension not in this list is found, the file +# will be considered as binary. +text_extensions: [ + 'adoc', 'asciidoc', 'atom', 'coffee', 'css', 'erb', 'haml', + 'handlebars', 'hb', 'htm', 'html', 'js', 'less', 'markdown', + 'md', 'ms', 'mustache', 'php', 'rb', 'rdoc', 'sass', 'scss', + 'slim', 'tex', 'txt', 'xhtml', 'xml', 'ts', 'tsx', 'json' + ] + +prune: + auto_prune: true + +lib_dirs: ['nanoc/lib'] +output_dir: build/al-quran/ + +data_sources: + - type: filesystem + encoding: UTF-8 + content_dir: src/ + layouts_dir: src/layouts + +audio: + base_url: https://audio.al-quran.reflectslight.io/rifai + +server: + base_url: https://al-quran.reflectslight.io + unix: + path: + tcp: + host: 127.0.0.1 + port: 7777 diff --git a/nanoc/lib/nanoc/extension/anonymous_filter.rb b/nanoc/lib/nanoc/extension/anonymous_filter.rb new file mode 100644 index 0000000..3140b23 --- /dev/null +++ b/nanoc/lib/nanoc/extension/anonymous_filter.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +module Nanoc::Extension + ## + # The AnonymousFilter extension adds support for Proc-based + # filters. See the Rules file to learn how this module is + # added to nanoc + module AnonymousFilter + require "securerandom" + ## + # @example + # compile "/sitemap.xml.erb" do + # filter(:erb) + # filter Proc.new { _1.each_line.reject { |s| s.strip.empty? }.join } + # write("/sitemap.xml") + # end + # @param [Proc, Symbol] fn + # Symbol, or Proc for an anonymous filter + # @param [Hash] options + # Filter options + # @return [void] + def filter(fn, options = {}) + if Proc === fn + id = anonymous_id + Nanoc::Filter.define(id) { fn.call(_1, _2) } + super(id, options) + else + super(fn, options) + end + end + + private + + def anonymous_id + [ + "__nanoc", + item.identifier.to_s.gsub(%r{[./\\]}, "_")[/[A-Za-z0-9_]+/], + SecureRandom.alphanumeric + ].join("_").to_sym + end + end +end diff --git a/nanoc/lib/nanoc/extension/require_rules.rb b/nanoc/lib/nanoc/extension/require_rules.rb new file mode 100644 index 0000000..ab6b85b --- /dev/null +++ b/nanoc/lib/nanoc/extension/require_rules.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +module Nanoc::Extension + ## + # The RequireRules extension adds a method that can help + # break up the Rules file into multiple separate files. + # See the Rules file to learn how this module is added + # to nanoc + module RequireRules + ## + # @example + # require_rules "nanoc/rules/assets" + # require_rules "nanoc/rules/index", {locales: ["en", "ar", "fa"]} + # @param [String] path + # @param [Hash] locals + # @param [Binding] target + # @return [void] + def require_rules(path, locals = {}, target = binding) + locals.each { target.local_variable_set(_1, _2) } + path = File.join(Dir.getwd, path) + target.eval( + if File.readable?(path) + File.read(path) + elsif File.readable?("#{path}.rb") + File.read("#{path}.rb") + elsif File.readable?("#{path}.rules") + File.read("#{path}.rules") + else + raise LoadError, "#{path} is not readable" + end + ) + end + end +end diff --git a/nanoc/lib/utils.rb b/nanoc/lib/utils.rb new file mode 100644 index 0000000..596e98d --- /dev/null +++ b/nanoc/lib/utils.rb @@ -0,0 +1,100 @@ +# frozen_string_literal: true + +## +# The {Utils Utils} module provides methods that are +# available at build time. ERB templates, the Rules file +# and Rakefile.rb all have access to the methods of this +# module +module Utils + require "test-cmd" + require_relative "utils/t" + require_relative "utils/inline" + require_relative "utils/erb" + + ## + # Generic error + Error = Class.new(RuntimeError) unless defined?(Error) + + ## + # @return [Ryo::Object] + # Returns common directory paths as a Ryo object + def dirs + @dirs ||= Ryo( + root:, + build: File.join(root, nanoc.output_dir), + content: File.join(root, nanoc.data_sources[0].content_dir) + ) + end + + ## + # @return [Ryo::Object] + # Returns the contents of nanoc.yaml as a Ryo object + def nanoc + @nanoc ||= Ryo.from_yaml(path: File.join(root, "nanoc.yaml")) + end + + ## + # @return [String] + # Returns an absolute path to the root directory of the website + def root + @root ||= File.realpath(File.join(__dir__, "..", "..", ".")) + end + + ## + # @return [String] + # Returns the website version + def version + @version ||= begin + path = File.join(dirs.root, "share", "al-quran.reflectslight.io", "VERSION") + File.read(path).gsub(/[^\d.]/, "") + end + end + + ## + # @raise [Utils::Error] + # When git fails or is unavailable + # @return [String] + # Returns the most recent git commit hash + def commit + @commit ||= begin + hash = nil + cmd("git", "rev-parse", "HEAD") + .success { hash = _1.stdout.strip } + .failure { error!("git exited unsuccessfully in method Utils#commit") } + hash + end + end + + ## + # The URL for an audio file is resolved + # by joining `nanoc.audio.base_url` and + # `//.mp3`. + # + # @return [String] + # Returns the base url for audio requests. + # The default (https://al-quran.reflectslight.io/audio/alafasy) + # works out of the box. + def audio_base_url + nanoc.audio.base_url + end + + ## + # @return [String] + # Returns the base URL for use with opengraph, + # tags, /sitemap.xml, etc. The default is + # https://al-quran.reflectslight.io. + def base_url + nanoc.server.base_url + end + + include T + include Inline + include ERB + + private + + def error!(m) + raise Error, m, [] + end +end +use_helper(Utils) if respond_to?(:use_helper) diff --git a/nanoc/lib/utils/erb.rb b/nanoc/lib/utils/erb.rb new file mode 100644 index 0000000..28f688a --- /dev/null +++ b/nanoc/lib/utils/erb.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +## +# The {Utils::ERB Utils::ERB} module provides a method +# that can render an ERB template +module Utils::ERB + ## + # @param [String] file + # The path to an ERB template + # @param [Hash] local_assigns + # Template variables + # @return [String] + def erb(file, local_assigns = {}) + erb = File.binread File.join(dirs.content, "html", file) + ctx = binding + local_assigns.each { ctx.local_variable_set(_1, _2) } + ::ERB.new(erb).result(ctx) + end +end diff --git a/nanoc/lib/utils/inline.rb b/nanoc/lib/utils/inline.rb new file mode 100644 index 0000000..8075b9a --- /dev/null +++ b/nanoc/lib/utils/inline.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Utils::Inline + def inline_css(path) + class_name = File.basename(path, File.extname(path)) + %|" + end + + def inline_json(path, context:, class_name: File.basename(path, File.extname(path))) + ctx = Ryo.table_of(context).map { [_1.to_sym, _2] }.to_h + path = format(path, ctx) + %|" + end +end diff --git a/nanoc/lib/utils/t.rb b/nanoc/lib/utils/t.rb new file mode 100644 index 0000000..af6a306 --- /dev/null +++ b/nanoc/lib/utils/t.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +## +# The {Utils::T Utils::T} module provides a method that +# can render user-facing text strings in different +# locales / languages +module Utils::T + ## + # @param [String] locale + # Locale (eg "en") + # @param [String] key + # Translation key (eg "TheNobleQuran") + # @param [Hash] local_assigns + # Template variables + # @return [String] + def t(locale, key, local_assigns = {}) + str = [locale, *key.split(".")].inject(tdata) { _1[_2] } + format(str, local_assigns) + end + + private + + def tdata + @tdata ||= Ryo.from_json(path: File.join(dirs.content, "json", "t.json")) + end +end diff --git a/nanoc/rules/assets.rules b/nanoc/rules/assets.rules new file mode 100644 index 0000000..3651282 --- /dev/null +++ b/nanoc/rules/assets.rules @@ -0,0 +1,19 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +## +# Contains rules for images, fonts, etc + +## +# images +compile "/images/*.svg" do + write(item.identifier.to_s) +end + +compile "/images/*.png" do + write(item.identifier.to_s) +end + +compile "/favicon.ico" do + write(item.identifier.to_s) +end diff --git a/nanoc/rules/random.rules b/nanoc/rules/random.rules new file mode 100644 index 0000000..6999846 --- /dev/null +++ b/nanoc/rules/random.rules @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +## +# Contains rules for a redirect from //random/ to a +# random surah (eg /en/random/ -> /en/al-kahf/) + +locales.each do |locale| + compile "/html/main/random.html.erb", rep: "random/#{locale}" do + context = Ryo.from({dir: tdata[locale].dir, locale:, locales:}) + filter(:erb, locals: {context:}) + filter(:tidy, exe: tidy) + write("/#{locale}/random/index.html") + end +end + +compile "/js/main/random.ts" do + filter :webpack, + argv: ["--config", "etc/webpack.#{buildenv}.js"], + depend_on: ["/js/lib/"] + write("/js/main/random.js") +end diff --git a/nanoc/rules/redirect.rules b/nanoc/rules/redirect.rules new file mode 100644 index 0000000..b5e862b --- /dev/null +++ b/nanoc/rules/redirect.rules @@ -0,0 +1,19 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +## +# Contains rules for a redirect from the root path +# to the surah index for a given locale (eg / -> /en/) + +compile "/html/main/redirect.html.erb" do + filter(:erb, locals: {context: Ryo(locale: "en"), locales:}) + filter(:tidy, exe: tidy) + write("/index.html") +end + +compile "/js/main/redirect.ts" do + filter :webpack, + argv: ["--config", "etc/webpack.#{buildenv}.js"], + depend_on: ["/js/lib/"] + write("/js/main/redirect.js") +end diff --git a/nanoc/rules/surah-index.rules b/nanoc/rules/surah-index.rules new file mode 100644 index 0000000..cd234a2 --- /dev/null +++ b/nanoc/rules/surah-index.rules @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +## +# Contains rules for the surah index available +# at // + +locales.each do |locale| + compile "/html/main/surah-index.html.erb", rep: "/#{locale}/surah/index" do + context = Ryo.from(dir: tdata[locale].dir, locale:, locales:) + filter(:erb, {locals: {context:}}) + filter(:tidy, exe: tidy) + write "/#{locale}/index.html" + end +end + +compile "/js/main/surah-index.tsx" do + filter :webpack, + argv: ["--config", "etc/webpack.#{buildenv}.js"], + depend_on: [ + "/js/components", + "/js/lib", + "/js/hooks", + "/css" + ] + write "/js/main/surah-index.js" +end diff --git a/nanoc/rules/surah-stream.rules b/nanoc/rules/surah-stream.rules new file mode 100644 index 0000000..35ed259 --- /dev/null +++ b/nanoc/rules/surah-stream.rules @@ -0,0 +1,40 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +## +# Contains rules for the the surah stream available +# at ///, /// + +compile "/json/*/*/{surah,info}.json" do + write(item.identifier.to_s) +end + +Ryo.each(name_by_id) do |id, slug| + write_file = ->(locale, pathname:) do + surah = surahs[locale][id.to_i - 1] + context = Ryo.from(locale:, surah_id: surah.id, locales:, surah:, dir: tdata[locale].dir) + filter(:erb, locals: {context:}) + filter(:tidy, exe: tidy) + write "/#{locale}/#{pathname}/index.html" + end + locales.each do |locale| + compile "/html/main/surah-stream.html.erb", rep: "/#{locale}/#{slug}/index.html" do + instance_exec(locale, pathname: slug, &write_file) + end + compile "/html/main/surah-stream.html.erb", rep: "/#{locale}/#{id}/index.html" do + instance_exec(locale, pathname: id, &write_file) + end + end +end + +compile "/js/main/surah-stream.tsx" do + filter :webpack, + argv: ["--config", "etc/webpack.#{buildenv}.js"], + depend_on: [ + "/js/components", + "/js/lib", + "/js/hooks", + "/css" + ] + write "/js/main/surah-stream.js" +end diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9d46285 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6388 @@ +{ + "name": "al-quran.reflectslight.io", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "al-quran.reflectslight.io", + "workspaces": [ + "./packages/typescript/*" + ], + "dependencies": { + "@preact/compat": "^17.1.2", + "classnames": "^2.3", + "preact": "^10.23.2" + }, + "devDependencies": { + "@babel/preset-env": "^7.25.4", + "@babel/preset-react": "^7.24.7", + "@babel/preset-typescript": "^7.24.7", + "@types/css-font-loading-module": "^0.0.13", + "@types/react": "^18.0", + "@types/react-dom": "^18.0", + "babel-loader": "^9.1.3", + "core-js": "^3.38.1", + "css-loader": "^7.1", + "eslint": "^9.8", + "eslint-config-prettier": "^9.1", + "eslint-plugin-prettier": "^5.2.1", + "prettier": "^3.3", + "sass": "^1.77", + "sass-loader": "^16.0", + "style-loader": "^4.0", + "typescript": "^5.5", + "typescript-eslint": "^8.2", + "url": "^0.11", + "webpack": "^5.93", + "webpack-cli": "^5.1", + "webpack-merge": "^6.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.25.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz", + "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.4", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", + "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.4", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz", + "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", + "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz", + "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", + "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", + "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.4", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", + "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", + "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", + "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz", + "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz", + "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", + "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", + "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz", + "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.4", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.25.4", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.4", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.37.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz", + "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.24.7", + "@babel/plugin-transform-react-jsx-development": "^7.24.7", + "@babel/plugin-transform-react-pure-annotations": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", + "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/runtime": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.4.tgz", + "integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz", + "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.4", + "@babel/parser": "^7.25.4", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.4", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", + "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz", + "integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", + "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@preact/compat": { + "version": "17.1.2", + "resolved": "https://registry.npmjs.org/@preact/compat/-/compat-17.1.2.tgz", + "integrity": "sha512-7pOZN9lMDDRQ+6aWvjwTp483KR8/zOpfS83wmOo3zfuLKdngS8/5RLbsFWzFZMGdYlotAhX980hJ75bjOHTwWg==", + "license": "MIT", + "peerDependencies": { + "preact": "*" + } + }, + "node_modules/@types/css-font-loading-module": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.13.tgz", + "integrity": "sha512-EnmFmshMT9rD3yohKkrbMMrRULUVkZbUAJFrFFO12mxiFWQvRKDQYsK1CB8tSUYZQ+uUui5RBvENNHqhL9xqgQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.0.tgz", + "integrity": "sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.4", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.4.tgz", + "integrity": "sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.2.0.tgz", + "integrity": "sha512-02tJIs655em7fvt9gps/+4k4OsKULYGtLBPJfOsmOq1+3cdClYiF0+d6mHu6qDnTcg88wJBkcPLpQhq7FyDz0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.2.0", + "@typescript-eslint/type-utils": "8.2.0", + "@typescript-eslint/utils": "8.2.0", + "@typescript-eslint/visitor-keys": "8.2.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.2.0.tgz", + "integrity": "sha512-j3Di+o0lHgPrb7FxL3fdEy6LJ/j2NE8u+AP/5cQ9SKb+JLH6V6UHDqJ+e0hXBkHP1wn1YDFjYCS9LBQsZDlDEg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "8.2.0", + "@typescript-eslint/types": "8.2.0", + "@typescript-eslint/typescript-estree": "8.2.0", + "@typescript-eslint/visitor-keys": "8.2.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.2.0.tgz", + "integrity": "sha512-OFn80B38yD6WwpoHU2Tz/fTz7CgFqInllBoC3WP+/jLbTb4gGPTy9HBSTsbDWkMdN55XlVU0mMDYAtgvlUspGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.2.0", + "@typescript-eslint/visitor-keys": "8.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.2.0.tgz", + "integrity": "sha512-g1CfXGFMQdT5S+0PSO0fvGXUaiSkl73U1n9LTK5aRAFnPlJ8dLKkXr4AaLFvPedW8lVDoMgLLE3JN98ZZfsj0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.2.0", + "@typescript-eslint/utils": "8.2.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.2.0.tgz", + "integrity": "sha512-6a9QSK396YqmiBKPkJtxsgZZZVjYQ6wQ/TlI0C65z7vInaETuC6HAHD98AGLC8DyIPqHytvNuS8bBVvNLKyqvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.2.0.tgz", + "integrity": "sha512-kiG4EDUT4dImplOsbh47B1QnNmXSoUqOjWDvCJw/o8LgfD0yr7k2uy54D5Wm0j4t71Ge1NkynGhpWdS0dEIAUA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "8.2.0", + "@typescript-eslint/visitor-keys": "8.2.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.2.0.tgz", + "integrity": "sha512-O46eaYKDlV3TvAVDNcoDzd5N550ckSe8G4phko++OCSC1dYIb9LTc3HDGYdWqWIAT5qDUKphO6sd9RrpIJJPfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.2.0", + "@typescript-eslint/types": "8.2.0", + "@typescript-eslint/typescript-estree": "8.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.2.0.tgz", + "integrity": "sha512-sbgsPMW9yLvS7IhCi8IpuK1oBmtbWUNP+hBdwl/I9nzqVsszGnNGti5r9dUtF5RLivHUFFIdRvLiTsPhzSyJ3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.2.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-loader/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/babel-loader/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/babel-loader/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true, + "license": "ISC" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/core-js": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", + "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true, + "license": "MIT" + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz", + "integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.17.1", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.9.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.9.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/preact": { + "version": "10.23.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.23.2.tgz", + "integrity": "sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/Quran": { + "resolved": "packages/typescript/Quran", + "link": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.77.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", + "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.1.tgz", + "integrity": "sha512-xACl1ToTsKnL9Ce5yYpRxrLj9QUDCnwZNhzpC7tKiFyA8zXsd3Ap+HGVnbCgkdQcm43E+i6oKAWBsvGA6ZoiMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", + "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.27.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.2.0.tgz", + "integrity": "sha512-DmnqaPcML0xYwUzgNbM1XaKXpEb7BShYf2P1tkUmmcl8hyeG7Pj08Er7R9bNy6AufabywzJcOybQAtnD/c9DGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.2.0", + "@typescript-eslint/parser": "8.2.0", + "@typescript-eslint/utils": "8.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-cli/node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/webpack/node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/typescript/postman": { + "version": "0.1.0", + "extraneous": true, + "license": "0BSDL", + "devDependencies": { + "@types/node": "^22.0", + "typescript": "^5.5" + } + }, + "packages/typescript/Quran": { + "version": "0.1.0", + "license": "0BSDL", + "devDependencies": { + "@types/node": "^22.0", + "typescript": "^5.5" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a980946 --- /dev/null +++ b/package.json @@ -0,0 +1,40 @@ +{ + "name": "al-quran.reflectslight.io", + "workspaces": [ + "./packages/typescript/*" + ], + "scripts": { + "tsc": "npx tsc --noEmit -p etc/tsconfig.json", + "eslint": "npx eslint --config etc/eslint.config.mjs src/js/", + "eslint:apply": "npx eslint --config etc/eslint.config.mjs --fix src/js/" + }, + "dependencies": { + "preact": "^10.23.2", + "@preact/compat": "^17.1.2", + "classnames": "^2.3" + }, + "devDependencies": { + "@babel/preset-env": "^7.25.4", + "@babel/preset-react": "^7.24.7", + "@babel/preset-typescript": "^7.24.7", + "@types/css-font-loading-module": "^0.0.13", + "@types/react": "^18.0", + "@types/react-dom": "^18.0", + "babel-loader": "^9.1.3", + "core-js": "^3.38.1", + "css-loader": "^7.1", + "eslint": "^9.8", + "eslint-config-prettier": "^9.1", + "eslint-plugin-prettier": "^5.2.1", + "prettier": "^3.3", + "sass": "^1.77", + "sass-loader": "^16.0", + "style-loader": "^4.0", + "typescript": "^5.5", + "typescript-eslint": "^8.2", + "url": "^0.11", + "webpack": "^5.93", + "webpack-cli": "^5.1", + "webpack-merge": "^6.0" + } +} diff --git a/packages/ruby/.gitkeep b/packages/ruby/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/typescript/Quran/package.json b/packages/typescript/Quran/package.json new file mode 100644 index 0000000..32f6428 --- /dev/null +++ b/packages/typescript/Quran/package.json @@ -0,0 +1,21 @@ +{ + "name": "Quran", + "version": "0.1.0", + "description": "The Noble Quran: a programmer's interface", + "main": "dist/index.js", + "types": ["dist/index.d.ts"], + "scripts": { + "build": "npm exec tsc", + "prepare": "npm run build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ReflectsLight/al-quran.reflectslight.io.git" + }, + "author": "0x1eef", + "license": "0BSDL", + "devDependencies": { + "@types/node": "^22.0", + "typescript": "^5.5" + } +} diff --git a/packages/typescript/Quran/src/index.ts b/packages/typescript/Quran/src/index.ts new file mode 100644 index 0000000..3a52a4b --- /dev/null +++ b/packages/typescript/Quran/src/index.ts @@ -0,0 +1,95 @@ +/** + * Types + */ +type TAyat = Ayah[]; + +type TLocale = { + readonly name: string, + readonly displayName: string, + readonly direction: "rtl" | "ltr" +}; + +type TQuran = { + readonly locale: TLocale; + readonly surahs: Surah[]; +} + +type TSurah = { + readonly id: number; + readonly name: string; + readonly urlName: string; + readonly translitName: string; + readonly numberOfAyah: number; + readonly translatedBy: string | null; +}; + +type TAyah = { + readonly id: number; + readonly body: string; +} + +/** + * Classes + */ +class Quran { + readonly locale: TLocale; + readonly surahs: Surah[]; + + /** + * @returns {Array} The available locales + */ + static get locales(): TLocale[] { + return [ + {"name": "en", "displayName": "English", "direction": "ltr"}, + {"name": "ar", "displayName": "العربية", "direction": "rtl"}, + {"name": "fa", "displayName": "فارسی", "direction": "rtl"} + ]; + } + + constructor(self: TQuran) { + this.locale = self.locale; + this.surahs = self.surahs; + } +} + +class Surah { + readonly id: number; + readonly name: string; + readonly urlName: string; + readonly translitName: string; + readonly numberOfAyah: number; + readonly ayat: TAyat; + readonly translatedBy: string | null; + + constructor(self: TSurah) { + this.id = self.id; + this.name = self.name; + this.urlName = self.urlName; + this.translitName = self.translitName; + this.numberOfAyah = self.numberOfAyah; + this.ayat = []; + this.translatedBy = self.translatedBy; + return this; + } +} + +class Ayah { + readonly id: number; + readonly body: string; + ms: number; + + constructor(self: TAyah) { + this.id = self.id; + this.body = self.body; + this.ms = 0; + } +} + +/** + * Exports + */ +export { + Quran, Surah, Ayah, + TQuran, TSurah, TAyah, + TAyat, TLocale +}; diff --git a/packages/typescript/Quran/tsconfig.json b/packages/typescript/Quran/tsconfig.json new file mode 100644 index 0000000..a6e6cb2 --- /dev/null +++ b/packages/typescript/Quran/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "strict": true, + "module": "ESNEXT", + "target": "ES2020", + "esModuleInterop": true, + "moduleResolution": "node", + + "baseUrl": "src/", + "paths": { "*": ["*"] }, + + "outDir": "dist", + "declaration": true, + } +} diff --git a/rake/tasks/ci.rake b/rake/tasks/ci.rake new file mode 100644 index 0000000..f924bf5 --- /dev/null +++ b/rake/tasks/ci.rake @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +namespace :ci do + task :rubocop do + sh "bundle exec rubocop -c etc/rubocop.yml" + end + + task :eslint do + sh "npm run eslint" + end + + task :tsc do + sh "npm run tsc" + end + + task :env do + ENV["buildenv"] = "production" + end +end + +desc "Run CI tasks" +task ci: %i[ci:env ci:rubocop ci:eslint ci:tsc nanoc:clean nanoc:build] diff --git a/rake/tasks/format.rake b/rake/tasks/format.rake new file mode 100644 index 0000000..21ebf50 --- /dev/null +++ b/rake/tasks/format.rake @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +namespace :format do + desc "Run rubocop (Ruby)" + task :rubocop do + sh "bundle exec rubocop --config etc/rubocop.yml" + end + + desc "Apply rubocop (Ruby)" + task :"rubocop:apply" do + sh "bundle exec rubocop -A --config etc/rubocop.yml" + end + + desc "Run eslint (TypeScript)" + task :eslint do + sh "npm run eslint" + end + + desc "Run eslint (TypeScript)" + task :"eslint:apply" do + sh "npm run eslint:apply" + end +end + +desc "Run all formats" +task format: ["format:rubocop", "format:eslint"] diff --git a/rake/tasks/nanoc.rake b/rake/tasks/nanoc.rake new file mode 100644 index 0000000..b63dc52 --- /dev/null +++ b/rake/tasks/nanoc.rake @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +namespace :nanoc do + desc "Clean directories" + task :clean do + Dir.chdir(dirs.root) do + sh "rm -rf node_modules/.cache/" + sh "rm -rf #{nanoc.output_dir}/*" + sh "rm -rf tmp/" + end + end + + desc "Produce the build directory" + task :build, %i[buildenv] => %i[setenv] do |t, args| + Nanoc::CLI.run(["compile"]) + end + + desc "Produce the build directory on-demand" + task :watch, %i[buildenv] => %i[setenv nanoc:build] do |t, args| + require "listen" + Listen.to(dirs.content) { + Nanoc::CLI.run(["compile"]) + }.start + sleep + rescue Interrupt + warn "SIGINT: exit" + exit + end + + task :setenv, %i[buildenv] do |t, args| + ENV["SASS_PATH"] = File.join(dirs.content, "css") + ENV["buildenv"] = args.buildenv || ENV["buildenv"] || "development" + end +end diff --git a/rake/tasks/server.rake b/rake/tasks/server.rake new file mode 100644 index 0000000..c6ed11d --- /dev/null +++ b/rake/tasks/server.rake @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +desc "Start web server" +task :server, [:protocol] do |_t, args| + require "server" + h = args.to_h + p = h[:protocol] || "tcp" + n = File.basename(dirs.root) + o = if p == "unix" + {unix: nanoc.server.unix.path} + else + {host: nanoc.server.tcp.host, port: nanoc.server.tcp.port} + end + Process.setproctitle "rake server[#{p}] [#{n}]" + s = Server.dir(nanoc.output_dir, o) + s.start(block: true) +rescue Interrupt + s.stop +end diff --git a/rake/tasks/t.rake b/rake/tasks/t.rake new file mode 100644 index 0000000..ecb93ba --- /dev/null +++ b/rake/tasks/t.rake @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +namespace :t do + desc "Generate /json///info.json from surahs.json" + task :"surahs.json" do + surahs = Ryo.from_json(path: File.join(dirs.content, "json", "surahs.json")) + Ryo.properties_of(surahs).each do |locale| + surahs[locale].each.with_index(1) do |surah, index| + File.write File.join(dirs.content, "json", locale, index.to_s, "info.json"), + JSON.pretty_generate(Ryo.table_of(surah, recursive: true)) + end + end + end +end diff --git a/share/al-quran.reflectslight.io/CHANGELOG b/share/al-quran.reflectslight.io/CHANGELOG new file mode 100644 index 0000000..6578e7b --- /dev/null +++ b/share/al-quran.reflectslight.io/CHANGELOG @@ -0,0 +1,57 @@ +# -*- mode: org -*- + +** vNEXT + +**** Remove ~kanit-regular.ttf~ +This change falls back onto standard web fonts across all +languages. This should help decrease bundle size, and save +time processing the custom font during page load + +**** Add src/js/main/vendor.ts +Add a new entry point that bundles preact, and other third +party dependencies. Third-party imports are now in a single +place rather than duplicated throughout app components + +**** Reduce bundle size +Remove build artifacts and features that don't apply on +KaiOS (eg: opengraph tags) + +**** Replace the play|pause icons +Replace the play and pause icons + +**** Remove nanoc-gzip.rb +Unneccessary for a packaged KaiOS application + +**** Remove loaders +Remove all loaders from ~/src/js/loaders/~, and the postman +package (~packages/typescript/postman~) + +**** KaiOS fork +Fork a new branch: ~kaios/main~ dedicated to KaiOS + +**** Add ~etc/~ +Move a large portion of the website's configuration files to +the ~/etc~ directory + +** v0.9.0 + +**** Add ~share/al-quran.reflectslight.io/documentation/~ +Replace ~share/doc/al-quran.reflectslight.io~ + +**** Add new recitation +Add a new recitation by Hani ar-Rifai + +**** Replace ~opengraph.rb~ with ~_opengraph.html.erb~ +Simplify how we render opengraph meta tags + +**** Move to nodejs for scss compiler +Replace the deprecated Ruby scss compiler with the nodejs compiler + +**** Add ~audio.base_url~ to nanoc.yaml +Provide extra flexibility for audio content + +**** Rename packages/typescript/Quran/ properties +Introduce urlName, translitName to Surah objects + +**** eslint upgrade +Migrate to the most recent version of eslint (^9.8) diff --git a/share/al-quran.reflectslight.io/LICENSE b/share/al-quran.reflectslight.io/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/share/al-quran.reflectslight.io/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/share/al-quran.reflectslight.io/VERSION b/share/al-quran.reflectslight.io/VERSION new file mode 100644 index 0000000..f979ade --- /dev/null +++ b/share/al-quran.reflectslight.io/VERSION @@ -0,0 +1 @@ +v0.9.0 diff --git a/share/al-quran.reflectslight.io/documentation/howto_add_language b/share/al-quran.reflectslight.io/documentation/howto_add_language new file mode 100644 index 0000000..d6c71bf --- /dev/null +++ b/share/al-quran.reflectslight.io/documentation/howto_add_language @@ -0,0 +1,31 @@ +# -*- mode: org -*- + +** Introduction + +This document explains the process that should be +followed when adding a new locale or language +to the website. Ideally the process would require +a minimal amount of manual work and be fast to complete +but we're not quite there yet. + +** Steps + +**** Add new locale to file ~/Rules~ +The ~/Rules~ file has to be updated + +**** Add new locale to array ~Quran.locales~ +The ~/packages/Quran/src/index.ts~ file has to be updated + +**** Add new locale (+ translations) +The following files have to updated: ++ ~/src/json/t.json~ ++ ~/src/json/surahs.json~ ++ ~/src/json///{info,surah}.json~ + +**** Save time +The ~/src/json///info.json~ files can +be generated from the contents of ~/src/json/surahs.json~ - +and that leaves us with one less step to complete: +#+BEGIN_SRC sh + user@localhost$ bundle exec rake t:surahs.json +#+END_SRC diff --git a/src/css/_base.scss b/src/css/_base.scss new file mode 100644 index 0000000..4bf670e --- /dev/null +++ b/src/css/_base.scss @@ -0,0 +1,53 @@ +@import "base/colors"; +@import "base/breakpoints"; +@import "base/icon"; +@import "base/select"; +@import "vendor/tail"; + +html { + height: 100%; + body { + height: 100%; + color: $black; + margin: 0; + .root { + height: 100%; + } + .ltr { + font-family: 'Arial', 'Tahoma', sans-serif; + direction: ltr; + } + .rtl { + font-family: 'Arial', 'Tahoma', sans-serif; + direction: rtl; + } + .invisible, .hidden { + display: none; + } + .outline-0 { + outline: 0; + } + .scroll-y { + overflow-y: auto; + } + } +} + +body .root .content.theme { + margin: 0 auto; + max-width: $breakpoint-md; + width: 85%; + font-size: medium; + + header { + a[data-testid="h1"] { + font-size: large; + } + } +} + +/** + * RTL languages + */ +body .root .content.theme.rtl { +} diff --git a/src/css/base/_breakpoints.scss b/src/css/base/_breakpoints.scss new file mode 100644 index 0000000..55e83a1 --- /dev/null +++ b/src/css/base/_breakpoints.scss @@ -0,0 +1,10 @@ +/* KaiOS: max widths */ +$breakpoint-kaiOS-portrait: 240px; +$breakpoint-kaiOS-landscape: 320px; + +/* Standard max widths */ +$breakpoint-sm: 576px; +$breakpoint-md: 768px; +$breakpoint-lg: 992px; +$breakpoint-xl: 1200px; +$breakpoint-xxl: 1395px; diff --git a/src/css/base/_colors.scss b/src/css/base/_colors.scss new file mode 100644 index 0000000..c24c4c4 --- /dev/null +++ b/src/css/base/_colors.scss @@ -0,0 +1,2 @@ +$black: #454545; +$white: #FFF; diff --git a/src/css/base/_icon.scss b/src/css/base/_icon.scss new file mode 100644 index 0000000..49fd045 --- /dev/null +++ b/src/css/base/_icon.scss @@ -0,0 +1,114 @@ +.stalled.icon { + display: inline-block; + position: relative; + left: 7px; + height: 4px; + + div { + display: inline-block; + position: absolute; + left: 8px; + width: 5px; + animation: stalled 0.8s cubic-bezier(0, 0.5, 0.5, 1) infinite; + @keyframes stalled { + 0% { + top: 4px; + height: 8px; + } + 50%, 100% { + top: 8px; + height: 4px; + } + } + } + + div:nth-child(1) { + left: 12px; + animation-delay: -0.24s; + } + + div:nth-child(2) { + left: 20px; + animation-delay: -0.12s; + } + + div:nth-child(3) { + left: 28px; + animation-delay: 0; + } +} + +.root .content.theme { + .icon { + display: inline-block; + cursor: pointer; + } + + .play.icon, + .pause.icon { + height: 16px; + width: 16px; + @media (min-width: $breakpoint-xxl) { + height: 20px; + width: 20px; + } + } + + .refresh.icon, + .right-arrow.icon, + .left-arrow.icon { + height: 16px; + width: 16px; + } + + .left-arrow.icon { + transform: rotate(180deg); + } + + ul.body.stream span { + .sound-on.icon, + .sound-off.icon { + width: 24px; + height: 24px; + transform: translateY(5px); + } + } + + footer { + .sound-on.icon, + .sound-off.icon { + transform: translateY(5px); + width: 24px; + height: 24px; + + @media(min-width: $breakpoint-xxl) { + height: 28px; + width: 28px; + } + } + } +} + +.root .content.theme.rtl { + .stalled.icon { + left: 0px; + right: 7px; + } + + ul.body.stream { + li.ayah .sound-on.icon, + li.ayah .sound-off.icon { + transform: rotate(180deg) translateY(3px); + } + } + + footer { + .sound-on.icon, + .sound-off.icon { + transform: rotate(180deg) translateY(5px); + } + .play.icon { + transform: rotate(180deg); + } + } +} diff --git a/src/css/base/_select.scss b/src/css/base/_select.scss new file mode 100644 index 0000000..aa80155 --- /dev/null +++ b/src/css/base/_select.scss @@ -0,0 +1,22 @@ +.root .content.theme { + .react-select { + z-index: 2; + .active { + cursor: pointer; + } + } + + .react-select.theme-select { + .circle { + width: 16px; + height: 16px; + border-radius: 12px; + } + } + + .react-select.language-select { + li a { + border: 1px solid $black; + } + } +} diff --git a/src/css/main/SurahIndex.scss b/src/css/main/SurahIndex.scss new file mode 100644 index 0000000..5ef88a7 --- /dev/null +++ b/src/css/main/SurahIndex.scss @@ -0,0 +1,65 @@ +@import "base"; +@import "themes/blue"; +@import "themes/green"; + +body .root .content.theme { + ul.body.index { + @media (max-width: $breakpoint-sm) { + li, li a { + width: 100%; + } + } + + li.surah a { + &:visited, &:active, &:link { + text-decoration: none; + } + + @media (max-width: $breakpoint-sm) { + span.transliterated, span.ayat { + display: none; + } + } + + @media (hover: hover) { + &:hover { + background: rgba(220, 220, 220, 0.25); + } + } + } + } + + footer { + /* TODO: Remove footer ? */ + display: none; + } +} + +/** + * RTL languages + */ +body .root .content.theme.rtl { + ul.body.index { + li a { + span:first-child { + border: 1px solid $black; + margin-left: 0.5rem; + } + } + + li.surah { + span.transliterated { display: none; } + } + } + + /* >= $breakpoint-xxl */ + @media (min-width: $breakpoint-xxl) { + ul.body.index { + li.surah a { + span:last-child { + font-size: larger; + } + } + } + } +} diff --git a/src/css/main/SurahStream.scss b/src/css/main/SurahStream.scss new file mode 100644 index 0000000..00c430c --- /dev/null +++ b/src/css/main/SurahStream.scss @@ -0,0 +1,55 @@ +@import "base"; +@import "themes/blue"; +@import "themes/green"; + +body .root .content.theme { + ul.body.stream { + scrollbar-gutter: stable; + li.ayah.fade { + @keyframes FadeIn { + 0% { opacity: 0;} + 25% { opacity: 0.25; } + 50% { opacity: 0.5; } + 75% { opacity: 0.75 } + 100% { opacity: 1; } + } + animation: FadeIn 1s; + } + } + ul.body.stream:focus { + outline: none; + } +} + +body .root .content.theme.rtl { + ul.body.stream { + li.ayah p { + line-height: 1.7; + max-width: 470px; + } + } + /* <= $breakpoint-sm */ + @media (max-width: $breakpoint-sm) { + ul.body.stream { + li.ayah p { + width: 100%; + } + } + } + /* >= $breakpoint-xxl */ + @media (min-width: $breakpoint-xxl) { + ul.body.stream { + $gap: 2rem; + margin-top: $gap; + li.ayah { + font-size: larger; + margin-bottom: $gap; + } + } + footer { + .timer { + font-size: larger; + } + } + } +} diff --git a/src/css/themes/blue.scss b/src/css/themes/blue.scss new file mode 100644 index 0000000..a2e884d --- /dev/null +++ b/src/css/themes/blue.scss @@ -0,0 +1,39 @@ +.root .content.theme.blue.rtl { + direction: rtl; +} + +.root .content.theme.blue { + @import "blue/base/colors"; + + .color-white { + color: $white; + } + + .color-primary { + color: $primary-color; + } + + .color-secondary { + color: $secondary-color; + } + + .color-accent { + color: $accent-color; + } + + .background-primary { + background: $primary-color; + } + + .background-secondary { + background: $secondary-color; + } + + .background-accent { + background: $accent-color; + } +} + +@import "blue/base"; +@import "blue/main/SurahIndex"; +@import "blue/main/SurahStream"; diff --git a/src/css/themes/blue/_base.scss b/src/css/themes/blue/_base.scss new file mode 100644 index 0000000..897de10 --- /dev/null +++ b/src/css/themes/blue/_base.scss @@ -0,0 +1,15 @@ +@import "base/icon"; +@import "base/select"; + +.root .content.theme.blue { + @import "base/colors"; + scrollbar-color: $primary-color #FFF; + + header { + a[data-testid="h1"] { + background: $primary-color; + border: 1px solid $black; + color: #FFF; + } + } +} diff --git a/src/css/themes/blue/base/_colors.scss b/src/css/themes/blue/base/_colors.scss new file mode 100644 index 0000000..59c60b6 --- /dev/null +++ b/src/css/themes/blue/base/_colors.scss @@ -0,0 +1,4 @@ +$primary-color: #3383C3; +$secondary-color: #3383C3; +$accent-color: lighten($primary-color, 38%); +$white: #FFF; diff --git a/src/css/themes/blue/base/_icon.scss b/src/css/themes/blue/base/_icon.scss new file mode 100644 index 0000000..b8ffb42 --- /dev/null +++ b/src/css/themes/blue/base/_icon.scss @@ -0,0 +1,40 @@ +.content.theme.blue { + @import "themes/blue/base/colors"; + + ul.body.stream li, footer { + .play.icon { + fill: $primary-color; + stroke: $secondary-color; + stroke-width: 2px; + } + + .pause.icon { + path { + fill: $primary-color; + stroke: $secondary-color; + stroke-width: 1px; + } + } + + .refresh.icon { + fill: $primary-color; + } + + .sound-on.icon, .sound-off.icon { + polygon { + fill: $primary-color; + stroke-width: 2; + } + } + .right-arrow.icon, + .left-arrow.icon { + g { + fill: $secondary-color; + } + } + } + + .stalled.icon { + div { background: $secondary-color; } + } +} diff --git a/src/css/themes/blue/base/_select.scss b/src/css/themes/blue/base/_select.scss new file mode 100644 index 0000000..03686a2 --- /dev/null +++ b/src/css/themes/blue/base/_select.scss @@ -0,0 +1,29 @@ +.content.theme { + @import "themes/blue/base/colors"; + .blue { + background: $secondary-color; + } +} + +.content.theme.blue { + @import "themes/blue/base/colors"; + + .react-select.theme-select { + .active .circle { + background: $secondary-color; + } + ul li.blue .circle { + background: $secondary-color; + } + } + + .react-select.language-select { + li a { + background: $secondary-color; + color: $white; + &:active, &:visited, &:link { + color: $white; + } + } + } +} diff --git a/src/css/themes/blue/main/_SurahIndex.scss b/src/css/themes/blue/main/_SurahIndex.scss new file mode 100644 index 0000000..eb12378 --- /dev/null +++ b/src/css/themes/blue/main/_SurahIndex.scss @@ -0,0 +1,58 @@ +.root .surah-index.content.theme.blue { + @import "themes/blue/base/colors"; + @import "base/breakpoints"; + + ul.body.index { + li.surah a { + &:active, &:link, &:visited { + color: $primary-color; + } + + span:first-child { + border: 1px solid $black; + color: $white; + } + } + } + + footer { + a { + &:active, &:link, &:visited { + color: $primary-color; + text-decoration: none; + } + &:hover { + font-weight: bold; + } + } + input { + border: 1px solid $secondary-color; + &:focus { + outline-color: $secondary-color; + } + } + } +} + +.root .content.theme.blue.en { + @import "themes/blue/base/colors"; + header { + div { + color: $secondary-color; + } + } +} + +.root .content.theme.blue.rtl { + @import "themes/blue/base/colors"; + ul.body.index { + li.surah a { + span.id { + color: $secondary-color; + } + span.name { + color: $primary-color; + } + } + } +} diff --git a/src/css/themes/blue/main/_SurahStream.scss b/src/css/themes/blue/main/_SurahStream.scss new file mode 100644 index 0000000..307c0e5 --- /dev/null +++ b/src/css/themes/blue/main/_SurahStream.scss @@ -0,0 +1,19 @@ +.root .content.theme.blue { + @import "themes/blue/base/colors"; + @import "base/breakpoints"; + + ul.body.stream { + li.ayah { + span span { + color: $secondary-color; + } + p { } + } + } + + footer { + .timer { + color: $primary-color; + } + } +} diff --git a/src/css/themes/green.scss b/src/css/themes/green.scss new file mode 100644 index 0000000..208110b --- /dev/null +++ b/src/css/themes/green.scss @@ -0,0 +1,40 @@ +.root .content.theme.green.rtl { + @import "green/base/colors"; + direction: rtl; +} + +.root .content.theme.green { + @import "green/base/colors"; + + .color-primary { + color: $primary-color; + } + + .color-secondary { + color: $secondary-color; + } + + .color-accent { + color: $accent-color; + } + + .color-white { + color: #FFF; + } + + .background-primary { + background: $primary-color; + } + + .background-secondary { + background: $secondary-color; + } + + .background-accent { + background: $accent-color; + } +} + +@import "green/base"; +@import "green/main/SurahIndex"; +@import "green/main/SurahStream"; diff --git a/src/css/themes/green/_base.scss b/src/css/themes/green/_base.scss new file mode 100644 index 0000000..018ed89 --- /dev/null +++ b/src/css/themes/green/_base.scss @@ -0,0 +1,15 @@ +@import "base/icon"; +@import "base/select"; + +.root .content.theme.green { + @import "base/colors"; + scrollbar-color: $primary-color #FFF; + + header { + a[data-testid="h1"] { + background: $primary-color; + border: 1px solid $black; + color: #FFF; + } + } +} diff --git a/src/css/themes/green/base/_colors.scss b/src/css/themes/green/base/_colors.scss new file mode 100644 index 0000000..1195cee --- /dev/null +++ b/src/css/themes/green/base/_colors.scss @@ -0,0 +1,3 @@ +$primary-color: #6d765b; +$secondary-color: #6C755A; +$accent-color: #FFF; diff --git a/src/css/themes/green/base/_icon.scss b/src/css/themes/green/base/_icon.scss new file mode 100644 index 0000000..37e7425 --- /dev/null +++ b/src/css/themes/green/base/_icon.scss @@ -0,0 +1,41 @@ +.content.theme.green { + @import "themes/green/base/colors"; + + ul.body.stream li, footer { + .play.icon { + g path { + fill: $primary-color; + stroke: $primary-color; + stroke-width: 3px; + } + } + + .pause.icon { + g path { + fill: $primary-color; + stroke: $primary-color; + stroke-width: 1px; + } + } + + .refresh.icon { + fill: $primary-color; + } + + .sound-on.icon, .sound-off.icon { + g polygon { + fill: $primary-color; + } + } + .right-arrow.icon, + .left-arrow.icon { + g { + fill: $primary-color; + } + } + } + + .stalled.icon { + div { background: $primary-color; } + } +} diff --git a/src/css/themes/green/base/_select.scss b/src/css/themes/green/base/_select.scss new file mode 100644 index 0000000..9a7adc0 --- /dev/null +++ b/src/css/themes/green/base/_select.scss @@ -0,0 +1,29 @@ +.content.theme { + @import "themes/green/base/colors"; + .green { + background: $primary-color; + } +} + +.content.theme.green { + @import "themes/green/base/colors"; + + .react-select.theme-select { + .active { + .circle { + background: $primary-color; + border-radius: 10px; + } + } + } + + .react-select.language-select { + li a { + background: $primary-color; + color: $white; + &:active, &:visited, &:link { + color: $white; + } + } + } +} diff --git a/src/css/themes/green/main/_SurahIndex.scss b/src/css/themes/green/main/_SurahIndex.scss new file mode 100644 index 0000000..899a01d --- /dev/null +++ b/src/css/themes/green/main/_SurahIndex.scss @@ -0,0 +1,31 @@ +.root .surah-index.content.theme.green { + @import "base/breakpoints"; + @import "themes/green/base/colors"; + + ul.body.index a { + &:active, &:link, &:visited { + color: $primary-color; + } + span:first-child { + border: 1px solid $black; + color: $white; + } + } + + footer { + a { + &:active, &:link, &:visited { + color: $primary-color; + } + &:hover { + font-weight: bold; + } + } + input { + border: 1px solid $primary-color; + &:focus { + outline-color: $primary-color; + } + } + } +} diff --git a/src/css/themes/green/main/_SurahStream.scss b/src/css/themes/green/main/_SurahStream.scss new file mode 100644 index 0000000..3498a3f --- /dev/null +++ b/src/css/themes/green/main/_SurahStream.scss @@ -0,0 +1,29 @@ +.root .content.theme.green { + @import "themes/green/base/colors"; + @import "base/breakpoints"; + + header { + h1, h1 a { color: $primary-color; } + color: $primary-color; + } + + ul.body.stream { + li.ayah { + color: $primary-color; + p { color: $black; } + } + } + + footer { + .timer { + color: $primary-color; + } + } + + .sound-on.icon, .svg.sound-off.icon { + polygon { + fill: $primary-color; + stroke-width: 2; + } + } +} diff --git a/src/css/vendor/tail.scss b/src/css/vendor/tail.scss new file mode 100644 index 0000000..e61edc7 --- /dev/null +++ b/src/css/vendor/tail.scss @@ -0,0 +1,5303 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +/* Document + ========================================================================== */ +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ +/** + * Remove the margin in all browsers. + */ +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ +/** + * Remove the gray background on active links in IE 10. + */ +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ +/** + * Remove the border on images inside links in IE 10. + */ +img { + border-style: none; +} + +/* Forms + ========================================================================== */ +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ +button::-moz-focus-inner, +[type=button]::-moz-focus-inner, +[type=reset]::-moz-focus-inner, +[type=submit]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ +button:-moz-focusring, +[type=button]:-moz-focusring, +[type=reset]:-moz-focusring, +[type=submit]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ +[type=checkbox], +[type=radio] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type=number]::-webkit-inner-spin-button, +[type=number]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type=search] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ +[type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ +/** + * Add the correct display in IE 10+. + */ +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ +[hidden] { + display: none; +} + +.h-0 { + height: 0px; +} + +.h-px { + height: 1px; +} + +.h-0\.5 { + height: 0.125rem; /* 2px */ +} + +.h-1 { + height: 0.25rem; /* 4px */ +} + +.h-1\.5 { + height: 0.375rem; /* 6px */ +} + +.h-2 { + height: 0.5rem; /* 8px */ +} + +.h-2\.5 { + height: 0.625rem; /* 10px */ +} + +.h-3 { + height: 0.75rem; /* 12px */ +} + +.h-3\.5 { + height: 0.875rem; /* 14px */ +} + +.h-4 { + height: 1rem; /* 16px */ +} + +.h-5 { + height: 1.25rem; /* 20px */ +} + +.h-6 { + height: 1.5rem; /* 24px */ +} + +.h-7 { + height: 1.75rem; /* 28px */ +} + +.h-8 { + height: 2rem; /* 32px */ +} + +.h-9 { + height: 2.25rem; /* 36px */ +} + +.h-10 { + height: 2.5rem; /* 40px */ +} + +.h-11 { + height: 2.75rem; /* 44px */ +} + +.h-12 { + height: 3rem; /* 48px */ +} + +.h-14 { + height: 3.5rem; /* 56px */ +} + +.h-16 { + height: 4rem; /* 64px */ +} + +.h-20 { + height: 5rem; /* 80px */ +} + +.h-24 { + height: 6rem; /* 96px */ +} + +.h-28 { + height: 7rem; /* 112px */ +} + +.h-32 { + height: 8rem; /* 128px */ +} + +.h-36 { + height: 9rem; /* 144px */ +} + +.h-40 { + height: 10rem; /* 160px */ +} + +.h-44 { + height: 11rem; /* 176px */ +} + +.h-48 { + height: 12rem; /* 192px */ +} + +.h-52 { + height: 13rem; /* 208px */ +} + +.h-56 { + height: 14rem; /* 224px */ +} + +.h-60 { + height: 15rem; /* 240px */ +} + +.h-64 { + height: 16rem; /* 256px */ +} + +.h-72 { + height: 18rem; /* 288px */ +} + +.h-80 { + height: 20rem; /* 320px */ +} + +.h-96 { + height: 24rem; /* 384px */ +} + +.h-auto { + height: auto; +} + +.h-1\/2 { + height: 50%; +} + +.h-1\/3 { + height: 33.333333%; +} + +.h-2\/3 { + height: 66.666667%; +} + +.h-1\/4 { + height: 25%; +} + +.h-2\/4 { + height: 50%; +} + +.h-3\/4 { + height: 75%; +} + +.h-1\/5 { + height: 20%; +} + +.h-2\/5 { + height: 40%; +} + +.h-3\/5 { + height: 60%; +} + +.h-4\/5 { + height: 80%; +} + +.h-1\/6 { + height: 16.666667%; +} + +.h-2\/6 { + height: 33.333333%; +} + +.h-3\/6 { + height: 50%; +} + +.h-4\/6 { + height: 66.666667%; +} + +.h-5\/6 { + height: 83.333333%; +} + +.h-full { + height: 100%; +} + +.h-screen { + height: 100vh; +} + +.h-svh { + height: 100svh; +} + +.h-lvh { + height: 100lvh; +} + +.h-dvh { + height: 100dvh; +} + +.h-min { + height: min-content; +} + +.h-max { + height: max-content; +} + +.h-fit { + height: fit-content; +} + +.max-h-0 { + max-height: 0px; +} + +.max-h-px { + max-height: 1px; +} + +.max-h-0\.5 { + max-height: 0.125rem; /* 2px */ +} + +.max-h-1 { + max-height: 0.25rem; /* 4px */ +} + +.max-h-1\.5 { + max-height: 0.375rem; /* 6px */ +} + +.max-h-2 { + max-height: 0.5rem; /* 8px */ +} + +.max-h-2\.5 { + max-height: 0.625rem; /* 10px */ +} + +.max-h-3 { + max-height: 0.75rem; /* 12px */ +} + +.max-h-3\.5 { + max-height: 0.875rem; /* 14px */ +} + +.max-h-4 { + max-height: 1rem; /* 16px */ +} + +.max-h-5 { + max-height: 1.25rem; /* 20px */ +} + +.max-h-6 { + max-height: 1.5rem; /* 24px */ +} + +.max-h-7 { + max-height: 1.75rem; /* 28px */ +} + +.max-h-8 { + max-height: 2rem; /* 32px */ +} + +.max-h-9 { + max-height: 2.25rem; /* 36px */ +} + +.max-h-10 { + max-height: 2.5rem; /* 40px */ +} + +.max-h-11 { + max-height: 2.75rem; /* 44px */ +} + +.max-h-12 { + max-height: 3rem; /* 48px */ +} + +.max-h-14 { + max-height: 3.5rem; /* 56px */ +} + +.max-h-16 { + max-height: 4rem; /* 64px */ +} + +.max-h-20 { + max-height: 5rem; /* 80px */ +} + +.max-h-24 { + max-height: 6rem; /* 96px */ +} + +.max-h-28 { + max-height: 7rem; /* 112px */ +} + +.max-h-32 { + max-height: 8rem; /* 128px */ +} + +.max-h-36 { + max-height: 9rem; /* 144px */ +} + +.max-h-40 { + max-height: 10rem; /* 160px */ +} + +.max-h-44 { + max-height: 11rem; /* 176px */ +} + +.max-h-48 { + max-height: 12rem; /* 192px */ +} + +.max-h-52 { + max-height: 13rem; /* 208px */ +} + +.max-h-56 { + max-height: 14rem; /* 224px */ +} + +.max-h-60 { + max-height: 15rem; /* 240px */ +} + +.max-h-64 { + max-height: 16rem; /* 256px */ +} + +.max-h-72 { + max-height: 18rem; /* 288px */ +} + +.max-h-80 { + max-height: 20rem; /* 320px */ +} + +.max-h-96 { + max-height: 24rem; /* 384px */ +} + +.max-h-none { + max-height: none; +} + +.max-h-full { + max-height: 100%; +} + +.max-h-screen { + max-height: 100vh; +} + +.max-h-svh { + max-height: 100svh; +} + +.max-h-lvh { + max-height: 100lvh; +} + +.max-h-dvh { + max-height: 100dvh; +} + +.max-h-min { + max-height: min-content; +} + +.max-h-max { + max-height: max-content; +} + +.max-h-fit { + max-height: fit-content; +} + +.w-0 { + width: 0px; +} + +.w-px { + width: 1px; +} + +.w-1 { + width: 0.25rem; +} + +.w-2 { + width: 0.5rem; +} + +.w-3 { + width: 0.75rem; +} + +.w-4 { + width: 1rem; +} + +.w-5 { + width: 1.25rem; +} + +.w-6 { + width: 1.5rem; +} + +.w-7 { + width: 1.75rem; +} + +.w-8 { + width: 2rem; +} + +.w-9 { + width: 2.25rem; +} + +.w-10 { + width: 2.5rem; +} + +.w-11 { + width: 2.75rem; +} + +.w-12 { + width: 3rem; +} + +.w-14 { + width: 3.5rem; +} + +.w-16 { + width: 4rem; +} + +.w-20 { + width: 5rem; +} + +.w-24 { + width: 6rem; +} + +.w-28 { + width: 7rem; +} + +.w-32 { + width: 8rem; +} + +.w-36 { + width: 9rem; +} + +.w-40 { + width: 10rem; +} + +.w-44 { + width: 11rem; +} + +.w-48 { + width: 12rem; +} + +.w-52 { + width: 13rem; +} + +.w-56 { + width: 14rem; +} + +.w-60 { + width: 15rem; +} + +.w-64 { + width: 16rem; +} + +.w-72 { + width: 18rem; +} + +.w-80 { + width: 20rem; +} + +.w-96 { + width: 24rem; +} + +.w-auto { + width: auto; +} + +.w-1\/2 { + width: 50%; +} + +.w-1\/3 { + width: 33.333333%; +} + +.w-2\/3 { + width: 66.666667%; +} + +.w-1\/4 { + width: 25%; +} + +.w-2\/4 { + width: 50%; +} + +.w-3\/4 { + width: 75%; +} + +.w-1\/5 { + width: 20%; +} + +.w-2\/5 { + width: 40%; +} + +.w-3\/5 { + width: 60%; +} + +.w-4\/5 { + width: 80%; +} + +.w-1\/6 { + width: 16.666667%; +} + +.w-2\/6 { + width: 33.333333%; +} + +.w-3\/6 { + width: 50%; +} + +.w-4\/6 { + width: 66.666667%; +} + +.w-5\/6 { + width: 83.333333%; +} + +.w-1\/12 { + width: 8.333333%; +} + +.w-2\/12 { + width: 16.666667%; +} + +.w-3\/12 { + width: 25%; +} + +.w-4\/12 { + width: 33.333333%; +} + +.w-5\/12 { + width: 41.666667%; +} + +.w-6\/12 { + width: 50%; +} + +.w-7\/12 { + width: 58.333333%; +} + +.w-8\/12 { + width: 66.666667%; +} + +.w-9\/12 { + width: 75%; +} + +.w-10\/12 { + width: 83.333333%; +} + +.w-11\/12 { + width: 91.666667%; +} + +.w-full { + width: 100%; +} + +.w-screen { + width: 100vw; +} + +.w-svw { + width: 100svw; +} + +.w-lvw { + width: 100lvw; +} + +.w-dvw { + width: 100dvw; +} + +.w-min { + width: min-content; +} + +.w-max { + width: max-content; +} + +.w-fit { + width: fit-content; +} + +.min-w-0 { + min-width: 0px; +} + +.min-w-1 { + min-width: 0.25rem; +} + +.min-w-2 { + min-width: 0.5rem; +} + +.min-w-3 { + min-width: 0.75rem; +} + +.min-w-4 { + min-width: 1rem; +} + +.min-w-5 { + min-width: 1.25rem; +} + +.min-w-6 { + min-width: 1.5rem; +} + +.min-w-7 { + min-width: 1.75rem; +} + +.min-w-8 { + min-width: 2rem; +} + +.min-w-9 { + min-width: 2.25rem; +} + +.min-w-10 { + min-width: 2.5rem; +} + +.min-w-11 { + min-width: 2.75rem; +} + +.min-w-12 { + min-width: 3rem; +} + +.min-w-14 { + min-width: 3.5rem; +} + +.min-w-16 { + min-width: 4rem; +} + +.min-w-20 { + min-width: 5rem; +} + +.min-w-24 { + min-width: 6rem; +} + +.min-w-28 { + min-width: 7rem; +} + +.min-w-32 { + min-width: 8rem; +} + +.min-w-36 { + min-width: 9rem; +} + +.min-w-40 { + min-width: 10rem; +} + +.min-w-44 { + min-width: 11rem; +} + +.min-w-48 { + min-width: 12rem; +} + +.min-w-52 { + min-width: 13rem; +} + +.min-w-56 { + min-width: 14rem; +} + +.min-w-60 { + min-width: 15rem; +} + +.min-w-64 { + min-width: 16rem; +} + +.min-w-72 { + min-width: 18rem; +} + +.min-w-80 { + min-width: 20rem; +} + +.min-w-96 { + min-width: 24rem; +} + +.min-w-px { + min-width: 1px; +} + +.min-w-full { + min-width: 100%; +} + +.min-w-min { + min-width: min-content; +} + +.min-w-max { + min-width: max-content; +} + +.min-w-fit { + min-width: fit-content; +} + +.max-w-0 { + max-width: 0px; +} + +.max-w-px { + max-width: 1px; +} + +.max-w-1 { + max-width: 0.25rem; +} + +.max-w-2 { + max-width: 0.5rem; +} + +.max-w-3 { + max-width: 0.75rem; +} + +.max-w-4 { + max-width: 1rem; +} + +.max-w-5 { + max-width: 1.25rem; +} + +.max-w-6 { + max-width: 1.5rem; +} + +.max-w-7 { + max-width: 1.75rem; +} + +.max-w-8 { + max-width: 2rem; +} + +.max-w-9 { + max-width: 2.25rem; +} + +.max-w-10 { + max-width: 2.5rem; +} + +.max-w-11 { + max-width: 2.75rem; +} + +.max-w-12 { + max-width: 3rem; +} + +.max-w-14 { + max-width: 3.5rem; +} + +.max-w-16 { + max-width: 4rem; +} + +.max-w-20 { + max-width: 5rem; +} + +.max-w-24 { + max-width: 6rem; +} + +.max-w-28 { + max-width: 7rem; +} + +.max-w-32 { + max-width: 8rem; +} + +.max-w-36 { + max-width: 9rem; +} + +.max-w-40 { + max-width: 10rem; +} + +.max-w-44 { + max-width: 11rem; +} + +.max-w-48 { + max-width: 12rem; +} + +.max-w-52 { + max-width: 13rem; +} + +.max-w-56 { + max-width: 14rem; +} + +.max-w-60 { + max-width: 15rem; +} + +.max-w-64 { + max-width: 16rem; +} + +.max-w-72 { + max-width: 18rem; +} + +.max-w-80 { + max-width: 20rem; +} + +.max-w-96 { + max-width: 24rem; +} + +.max-w-none { + max-width: none; +} + +.max-w-xs { + max-width: 20rem; +} + +.max-w-sm { + max-width: 24rem; +} + +.max-w-md { + max-width: 28rem; +} + +.max-w-lg { + max-width: 32rem; +} + +.max-w-xl { + max-width: 36rem; +} + +.max-w-2xl { + max-width: 42rem; +} + +.max-w-3xl { + max-width: 48rem; +} + +.max-w-4xl { + max-width: 56rem; +} + +.max-w-5xl { + max-width: 64rem; +} + +.max-w-6xl { + max-width: 72rem; +} + +.max-w-7xl { + max-width: 80rem; +} + +.max-w-full { + max-width: 100%; +} + +.max-w-min { + max-width: min-content; +} + +.max-w-max { + max-width: max-content; +} + +.max-w-fit { + max-width: fit-content; +} + +.max-w-prose { + max-width: 65ch; +} + +.max-w-screen-sm { + max-width: 640px; +} + +.max-w-screen-md { + max-width: 768px; +} + +.max-w-screen-lg { + max-width: 1024px; +} + +.max-w-screen-xl { + max-width: 1280px; +} + +.max-w-screen-2xl { + max-width: 1536px; +} + +.m-0 { + margin: 0px; +} + +.mx-0 { + margin-left: 0px; +} + +.my-0 { + margin-top: 0px; +} + +.ms-0 { + margin-inline-start: 0px; +} + +.me-0 { + margin-inline-end: 0px; +} + +.mt-0 { + margin-top: 0px; +} + +.mr-0 { + margin-right: 0px; +} + +.mb-0 { + margin-bottom: 0px; +} + +.ml-0 { + margin-left: 0px; +} + +.m-px { + margin: 1px; +} + +.mx-px { + margin-left: 1px; +} + +.my-px { + margin-top: 1px; +} + +.ms-px { + margin-inline-start: 1px; +} + +.me-px { + margin-inline-end: 1px; +} + +.mt-px { + margin-top: 1px; +} + +.mr-px { + margin-right: 1px; +} + +.mb-px { + margin-bottom: 1px; +} + +.ml-px { + margin-left: 1px; +} + +.m-1 { + margin: 0.25rem; +} + +.mx-1 { + margin-left: 0.25rem; +} + +.my-1 { + margin-top: 0.25rem; +} + +.ms-1 { + margin-inline-start: 0.25rem; +} + +.me-1 { + margin-inline-end: 0.25rem; +} + +.mt-1 { + margin-top: 0.25rem; +} + +.mr-1 { + margin-right: 0.25rem; +} + +.mb-1 { + margin-bottom: 0.25rem; +} + +.ml-1 { + margin-left: 0.25rem; +} + +.m-2 { + margin: 0.5rem; +} + +.mx-2 { + margin-left: 0.5rem; +} + +.my-2 { + margin-top: 0.5rem; +} + +.ms-2 { + margin-inline-start: 0.5rem; +} + +.me-2 { + margin-inline-end: 0.5rem; +} + +.mt-2 { + margin-top: 0.5rem; +} + +.mr-2 { + margin-right: 0.5rem; +} + +.mb-2 { + margin-bottom: 0.5rem; +} + +.ml-2 { + margin-left: 0.5rem; +} + +.m-3 { + margin: 0.75rem; +} + +.mx-3 { + margin-left: 0.75rem; +} + +.my-3 { + margin-top: 0.75rem; +} + +.ms-3 { + margin-inline-start: 0.75rem; +} + +.me-3 { + margin-inline-end: 0.75rem; +} + +.mt-3 { + margin-top: 0.75rem; +} + +.mr-3 { + margin-right: 0.75rem; +} + +.mb-3 { + margin-bottom: 0.75rem; +} + +.ml-3 { + margin-left: 0.75rem; +} + +.m-4 { + margin: 1rem; +} + +.mx-4 { + margin-left: 1rem; +} + +.my-4 { + margin-top: 1rem; +} + +.ms-4 { + margin-inline-start: 1rem; +} + +.me-4 { + margin-inline-end: 1rem; +} + +.mt-4 { + margin-top: 1rem; +} + +.mr-4 { + margin-right: 1rem; +} + +.mb-4 { + margin-bottom: 1rem; +} + +.ml-4 { + margin-left: 1rem; +} + +.m-5 { + margin: 1.25rem; +} + +.mx-5 { + margin-left: 1.25rem; +} + +.my-5 { + margin-top: 1.25rem; +} + +.ms-5 { + margin-inline-start: 1.25rem; +} + +.me-5 { + margin-inline-end: 1.25rem; +} + +.mt-5 { + margin-top: 1.25rem; +} + +.mr-5 { + margin-right: 1.25rem; +} + +.mb-5 { + margin-bottom: 1.25rem; +} + +.ml-5 { + margin-left: 1.25rem; +} + +.m-6 { + margin: 1.5rem; +} + +.mx-6 { + margin-left: 1.5rem; +} + +.my-6 { + margin-top: 1.5rem; +} + +.ms-6 { + margin-inline-start: 1.5rem; +} + +.me-6 { + margin-inline-end: 1.5rem; +} + +.mt-6 { + margin-top: 1.5rem; +} + +.mr-6 { + margin-right: 1.5rem; +} + +.mb-6 { + margin-bottom: 1.5rem; +} + +.ml-6 { + margin-left: 1.5rem; +} + +.m-7 { + margin: 1.75rem; +} + +.mx-7 { + margin-left: 1.75rem; +} + +.my-7 { + margin-top: 1.75rem; +} + +.ms-7 { + margin-inline-start: 1.75rem; +} + +.me-7 { + margin-inline-end: 1.75rem; +} + +.mt-7 { + margin-top: 1.75rem; +} + +.mr-7 { + margin-right: 1.75rem; +} + +.mb-7 { + margin-bottom: 1.75rem; +} + +.ml-7 { + margin-left: 1.75rem; +} + +.m-8 { + margin: 2rem; +} + +.mx-8 { + margin-left: 2rem; +} + +.my-8 { + margin-top: 2rem; +} + +.ms-8 { + margin-inline-start: 2rem; +} + +.me-8 { + margin-inline-end: 2rem; +} + +.mt-8 { + margin-top: 2rem; +} + +.mr-8 { + margin-right: 2rem; +} + +.mb-8 { + margin-bottom: 2rem; +} + +.ml-8 { + margin-left: 2rem; +} + +.m-9 { + margin: 2.25rem; +} + +.mx-9 { + margin-left: 2.25rem; +} + +.my-9 { + margin-top: 2.25rem; +} + +.ms-9 { + margin-inline-start: 2.25rem; +} + +.me-9 { + margin-inline-end: 2.25rem; +} + +.mt-9 { + margin-top: 2.25rem; +} + +.mr-9 { + margin-right: 2.25rem; +} + +.mb-9 { + margin-bottom: 2.25rem; +} + +.ml-9 { + margin-left: 2.25rem; +} + +.m-10 { + margin: 2.5rem; +} + +.mx-10 { + margin-left: 2.5rem; +} + +.my-10 { + margin-top: 2.5rem; +} + +.ms-10 { + margin-inline-start: 2.5rem; +} + +.me-10 { + margin-inline-end: 2.5rem; +} + +.mt-10 { + margin-top: 2.5rem; +} + +.mr-10 { + margin-right: 2.5rem; +} + +.mb-10 { + margin-bottom: 2.5rem; +} + +.ml-10 { + margin-left: 2.5rem; +} + +.m-11 { + margin: 2.75rem; +} + +.mx-11 { + margin-left: 2.75rem; +} + +.my-11 { + margin-top: 2.75rem; +} + +.ms-11 { + margin-inline-start: 2.75rem; +} + +.me-11 { + margin-inline-end: 2.75rem; +} + +.mt-11 { + margin-top: 2.75rem; +} + +.mr-11 { + margin-right: 2.75rem; +} + +.mb-11 { + margin-bottom: 2.75rem; +} + +.ml-11 { + margin-left: 2.75rem; +} + +.m-12 { + margin: 3rem; +} + +.mx-12 { + margin-left: 3rem; +} + +.my-12 { + margin-top: 3rem; +} + +.ms-12 { + margin-inline-start: 3rem; +} + +.me-12 { + margin-inline-end: 3rem; +} + +.mt-12 { + margin-top: 3rem; +} + +.mr-12 { + margin-right: 3rem; +} + +.mb-12 { + margin-bottom: 3rem; +} + +.ml-12 { + margin-left: 3rem; +} + +.m-14 { + margin: 3.5rem; +} + +.mx-14 { + margin-left: 3.5rem; +} + +.my-14 { + margin-top: 3.5rem; +} + +.ms-14 { + margin-inline-start: 3.5rem; +} + +.me-14 { + margin-inline-end: 3.5rem; +} + +.mt-14 { + margin-top: 3.5rem; +} + +.mr-14 { + margin-right: 3.5rem; +} + +.mb-14 { + margin-bottom: 3.5rem; +} + +.ml-14 { + margin-left: 3.5rem; +} + +.m-16 { + margin: 4rem; +} + +.mx-16 { + margin-left: 4rem; +} + +.my-16 { + margin-top: 4rem; +} + +.ms-16 { + margin-inline-start: 4rem; +} + +.me-16 { + margin-inline-end: 4rem; +} + +.mt-16 { + margin-top: 4rem; +} + +.mr-16 { + margin-right: 4rem; +} + +.mb-16 { + margin-bottom: 4rem; +} + +.ml-16 { + margin-left: 4rem; +} + +.m-20 { + margin: 5rem; +} + +.mx-20 { + margin-left: 5rem; +} + +.my-20 { + margin-top: 5rem; +} + +.ms-20 { + margin-inline-start: 5rem; +} + +.me-20 { + margin-inline-end: 5rem; +} + +.mt-20 { + margin-top: 5rem; +} + +.mr-20 { + margin-right: 5rem; +} + +.mb-20 { + margin-bottom: 5rem; +} + +.ml-20 { + margin-left: 5rem; +} + +.m-24 { + margin: 6rem; +} + +.mx-24 { + margin-left: 6rem; +} + +.my-24 { + margin-top: 6rem; +} + +.ms-24 { + margin-inline-start: 6rem; +} + +.me-24 { + margin-inline-end: 6rem; +} + +.mt-24 { + margin-top: 6rem; +} + +.mr-24 { + margin-right: 6rem; +} + +.mb-24 { + margin-bottom: 6rem; +} + +.ml-24 { + margin-left: 6rem; +} + +.m-28 { + margin: 7rem; +} + +.mx-28 { + margin-left: 7rem; +} + +.my-28 { + margin-top: 7rem; +} + +.ms-28 { + margin-inline-start: 7rem; +} + +.me-28 { + margin-inline-end: 7rem; +} + +.mt-28 { + margin-top: 7rem; +} + +.mr-28 { + margin-right: 7rem; +} + +.mb-28 { + margin-bottom: 7rem; +} + +.ml-28 { + margin-left: 7rem; +} + +.m-32 { + margin: 8rem; +} + +.mx-32 { + margin-left: 8rem; +} + +.my-32 { + margin-top: 8rem; +} + +.ms-32 { + margin-inline-start: 8rem; +} + +.me-32 { + margin-inline-end: 8rem; +} + +.mt-32 { + margin-top: 8rem; +} + +.mr-32 { + margin-right: 8rem; +} + +.mb-32 { + margin-bottom: 8rem; +} + +.ml-32 { + margin-left: 8rem; +} + +.m-36 { + margin: 9rem; +} + +.mx-36 { + margin-left: 9rem; +} + +.my-36 { + margin-top: 9rem; +} + +.ms-36 { + margin-inline-start: 9rem; +} + +.me-36 { + margin-inline-end: 9rem; +} + +.mt-36 { + margin-top: 9rem; +} + +.mr-36 { + margin-right: 9rem; +} + +.mb-36 { + margin-bottom: 9rem; +} + +.ml-36 { + margin-left: 9rem; +} + +.m-40 { + margin: 10rem; +} + +.mx-40 { + margin-left: 10rem; +} + +.my-40 { + margin-top: 10rem; +} + +.ms-40 { + margin-inline-start: 10rem; +} + +.me-40 { + margin-inline-end: 10rem; +} + +.mt-40 { + margin-top: 10rem; +} + +.mr-40 { + margin-right: 10rem; +} + +.mb-40 { + margin-bottom: 10rem; +} + +.ml-40 { + margin-left: 10rem; +} + +.m-44 { + margin: 11rem; +} + +.mx-44 { + margin-left: 11rem; +} + +.my-44 { + margin-top: 11rem; +} + +.ms-44 { + margin-inline-start: 11rem; +} + +.me-44 { + margin-inline-end: 11rem; +} + +.mt-44 { + margin-top: 11rem; +} + +.mr-44 { + margin-right: 11rem; +} + +.mb-44 { + margin-bottom: 11rem; +} + +.ml-44 { + margin-left: 11rem; +} + +.m-48 { + margin: 12rem; +} + +.mx-48 { + margin-left: 12rem; +} + +.my-48 { + margin-top: 12rem; +} + +.ms-48 { + margin-inline-start: 12rem; +} + +.me-48 { + margin-inline-end: 12rem; +} + +.mt-48 { + margin-top: 12rem; +} + +.mr-48 { + margin-right: 12rem; +} + +.mb-48 { + margin-bottom: 12rem; +} + +.ml-48 { + margin-left: 12rem; +} + +.m-52 { + margin: 13rem; +} + +.mx-52 { + margin-left: 13rem; +} + +.my-52 { + margin-top: 13rem; +} + +.ms-52 { + margin-inline-start: 13rem; +} + +.me-52 { + margin-inline-end: 13rem; +} + +.mt-52 { + margin-top: 13rem; +} + +.mr-52 { + margin-right: 13rem; +} + +.mb-52 { + margin-bottom: 13rem; +} + +.ml-52 { + margin-left: 13rem; +} + +.m-56 { + margin: 14rem; +} + +.mx-56 { + margin-left: 14rem; +} + +.my-56 { + margin-top: 14rem; +} + +.ms-56 { + margin-inline-start: 14rem; +} + +.me-56 { + margin-inline-end: 14rem; +} + +.mt-56 { + margin-top: 14rem; +} + +.mr-56 { + margin-right: 14rem; +} + +.mb-56 { + margin-bottom: 14rem; +} + +.ml-56 { + margin-left: 14rem; +} + +.m-60 { + margin: 15rem; +} + +.mx-60 { + margin-left: 15rem; +} + +.my-60 { + margin-top: 15rem; +} + +.ms-60 { + margin-inline-start: 15rem; +} + +.me-60 { + margin-inline-end: 15rem; +} + +.mt-60 { + margin-top: 15rem; +} + +.mr-60 { + margin-right: 15rem; +} + +.mb-60 { + margin-bottom: 15rem; +} + +.ml-60 { + margin-left: 15rem; +} + +.m-64 { + margin: 16rem; +} + +.mx-64 { + margin-left: 16rem; +} + +.my-64 { + margin-top: 16rem; +} + +.ms-64 { + margin-inline-start: 16rem; +} + +.me-64 { + margin-inline-end: 16rem; +} + +.mt-64 { + margin-top: 16rem; +} + +.mr-64 { + margin-right: 16rem; +} + +.mb-64 { + margin-bottom: 16rem; +} + +.ml-64 { + margin-left: 16rem; +} + +.m-72 { + margin: 18rem; +} + +.mx-72 { + margin-left: 18rem; +} + +.my-72 { + margin-top: 18rem; +} + +.ms-72 { + margin-inline-start: 18rem; +} + +.me-72 { + margin-inline-end: 18rem; +} + +.mt-72 { + margin-top: 18rem; +} + +.mr-72 { + margin-right: 18rem; +} + +.mb-72 { + margin-bottom: 18rem; +} + +.ml-72 { + margin-left: 18rem; +} + +.m-80 { + margin: 20rem; +} + +.mx-80 { + margin-left: 20rem; +} + +.my-80 { + margin-top: 20rem; +} + +.ms-80 { + margin-inline-start: 20rem; +} + +.me-80 { + margin-inline-end: 20rem; +} + +.mt-80 { + margin-top: 20rem; +} + +.mr-80 { + margin-right: 20rem; +} + +.mb-80 { + margin-bottom: 20rem; +} + +.ml-80 { + margin-left: 20rem; +} + +.m-96 { + margin: 24rem; +} + +.mx-96 { + margin-left: 24rem; +} + +.my-96 { + margin-top: 24rem; +} + +.ms-96 { + margin-inline-start: 24rem; +} + +.me-96 { + margin-inline-end: 24rem; +} + +.mt-96 { + margin-top: 24rem; +} + +.mr-96 { + margin-right: 24rem; +} + +.mb-96 { + margin-bottom: 24rem; +} + +.ml-96 { + margin-left: 24rem; +} + +.m-auto { + margin: auto; +} + +.mx-auto { + margin-left: auto; +} + +.my-auto { + margin-top: auto; +} + +.ms-auto { + margin-inline-start: auto; +} + +.me-auto { + margin-inline-end: auto; +} + +.mt-auto { + margin-top: auto; +} + +.mr-auto { + margin-right: auto; +} + +.mb-auto { + margin-bottom: auto; +} + +.ml-auto { + margin-left: auto; +} + +.p-0 { + padding: 0px; +} + +.px-0 { + padding-left: 0px; +} + +.py-0 { + padding-top: 0px; +} + +.ps-0 { + padding-inline-start: 0px; +} + +.pe-0 { + padding-inline-end: 0px; +} + +.pt-0 { + padding-top: 0px; +} + +.pr-0 { + padding-right: 0px; +} + +.pb-0 { + padding-bottom: 0px; +} + +.pl-0 { + padding-left: 0px; +} + +.p-px { + padding: 1px; +} + +.px-px { + padding-left: 1px; +} + +.py-px { + padding-top: 1px; +} + +.ps-px { + padding-inline-start: 1px; +} + +.pe-px { + padding-inline-end: 1px; +} + +.pt-px { + padding-top: 1px; +} + +.pr-px { + padding-right: 1px; +} + +.pb-px { + padding-bottom: 1px; +} + +.pl-px { + padding-left: 1px; +} + +.p-1 { + padding: 0.25rem; +} + +.px-1 { + padding-left: 0.25rem; +} + +.py-1 { + padding-top: 0.25rem; +} + +.ps-1 { + padding-inline-start: 0.25rem; +} + +.pe-1 { + padding-inline-end: 0.25rem; +} + +.pt-1 { + padding-top: 0.25rem; +} + +.pr-1 { + padding-right: 0.25rem; +} + +.pb-1 { + padding-bottom: 0.25rem; +} + +.pl-1 { + padding-left: 0.25rem; +} + +.p-2 { + padding: 0.5rem; +} + +.px-2 { + padding-left: 0.5rem; +} + +.py-2 { + padding-top: 0.5rem; +} + +.ps-2 { + padding-inline-start: 0.5rem; +} + +.pe-2 { + padding-inline-end: 0.5rem; +} + +.pt-2 { + padding-top: 0.5rem; +} + +.pr-2 { + padding-right: 0.5rem; +} + +.pb-2 { + padding-bottom: 0.5rem; +} + +.pl-2 { + padding-left: 0.5rem; +} + +.p-3 { + padding: 0.75rem; +} + +.px-3 { + padding-left: 0.75rem; +} + +.py-3 { + padding-top: 0.75rem; +} + +.ps-3 { + padding-inline-start: 0.75rem; +} + +.pe-3 { + padding-inline-end: 0.75rem; +} + +.pt-3 { + padding-top: 0.75rem; +} + +.pr-3 { + padding-right: 0.75rem; +} + +.pb-3 { + padding-bottom: 0.75rem; +} + +.pl-3 { + padding-left: 0.75rem; +} + +.p-4 { + padding: 1rem; +} + +.px-4 { + padding-left: 1rem; +} + +.py-4 { + padding-top: 1rem; +} + +.ps-4 { + padding-inline-start: 1rem; +} + +.pe-4 { + padding-inline-end: 1rem; +} + +.pt-4 { + padding-top: 1rem; +} + +.pr-4 { + padding-right: 1rem; +} + +.pb-4 { + padding-bottom: 1rem; +} + +.pl-4 { + padding-left: 1rem; +} + +.p-5 { + padding: 1.25rem; +} + +.px-5 { + padding-left: 1.25rem; +} + +.py-5 { + padding-top: 1.25rem; +} + +.ps-5 { + padding-inline-start: 1.25rem; +} + +.pe-5 { + padding-inline-end: 1.25rem; +} + +.pt-5 { + padding-top: 1.25rem; +} + +.pr-5 { + padding-right: 1.25rem; +} + +.pb-5 { + padding-bottom: 1.25rem; +} + +.pl-5 { + padding-left: 1.25rem; +} + +.p-6 { + padding: 1.5rem; +} + +.px-6 { + padding-left: 1.5rem; +} + +.py-6 { + padding-top: 1.5rem; +} + +.ps-6 { + padding-inline-start: 1.5rem; +} + +.pe-6 { + padding-inline-end: 1.5rem; +} + +.pt-6 { + padding-top: 1.5rem; +} + +.pr-6 { + padding-right: 1.5rem; +} + +.pb-6 { + padding-bottom: 1.5rem; +} + +.pl-6 { + padding-left: 1.5rem; +} + +.p-7 { + padding: 1.75rem; +} + +.px-7 { + padding-left: 1.75rem; +} + +.py-7 { + padding-top: 1.75rem; +} + +.ps-7 { + padding-inline-start: 1.75rem; +} + +.pe-7 { + padding-inline-end: 1.75rem; +} + +.pt-7 { + padding-top: 1.75rem; +} + +.pr-7 { + padding-right: 1.75rem; +} + +.pb-7 { + padding-bottom: 1.75rem; +} + +.pl-7 { + padding-left: 1.75rem; +} + +.p-8 { + padding: 2rem; +} + +.px-8 { + padding-left: 2rem; +} + +.py-8 { + padding-top: 2rem; +} + +.ps-8 { + padding-inline-start: 2rem; +} + +.pe-8 { + padding-inline-end: 2rem; +} + +.pt-8 { + padding-top: 2rem; +} + +.pr-8 { + padding-right: 2rem; +} + +.pb-8 { + padding-bottom: 2rem; +} + +.pl-8 { + padding-left: 2rem; +} + +.p-9 { + padding: 2.25rem; +} + +.px-9 { + padding-left: 2.25rem; +} + +.py-9 { + padding-top: 2.25rem; +} + +.ps-9 { + padding-inline-start: 2.25rem; +} + +.pe-9 { + padding-inline-end: 2.25rem; +} + +.pt-9 { + padding-top: 2.25rem; +} + +.pr-9 { + padding-right: 2.25rem; +} + +.pb-9 { + padding-bottom: 2.25rem; +} + +.pl-9 { + padding-left: 2.25rem; +} + +.p-10 { + padding: 2.5rem; +} + +.px-10 { + padding-left: 2.5rem; +} + +.py-10 { + padding-top: 2.5rem; +} + +.ps-10 { + padding-inline-start: 2.5rem; +} + +.pe-10 { + padding-inline-end: 2.5rem; +} + +.pt-10 { + padding-top: 2.5rem; +} + +.pr-10 { + padding-right: 2.5rem; +} + +.pb-10 { + padding-bottom: 2.5rem; +} + +.pl-10 { + padding-left: 2.5rem; +} + +.p-11 { + padding: 2.75rem; +} + +.px-11 { + padding-left: 2.75rem; +} + +.py-11 { + padding-top: 2.75rem; +} + +.ps-11 { + padding-inline-start: 2.75rem; +} + +.pe-11 { + padding-inline-end: 2.75rem; +} + +.pt-11 { + padding-top: 2.75rem; +} + +.pr-11 { + padding-right: 2.75rem; +} + +.pb-11 { + padding-bottom: 2.75rem; +} + +.pl-11 { + padding-left: 2.75rem; +} + +.p-12 { + padding: 3rem; +} + +.px-12 { + padding-left: 3rem; +} + +.py-12 { + padding-top: 3rem; +} + +.ps-12 { + padding-inline-start: 3rem; +} + +.pe-12 { + padding-inline-end: 3rem; +} + +.pt-12 { + padding-top: 3rem; +} + +.pr-12 { + padding-right: 3rem; +} + +.pb-12 { + padding-bottom: 3rem; +} + +.pl-12 { + padding-left: 3rem; +} + +.p-14 { + padding: 3.5rem; +} + +.px-14 { + padding-left: 3.5rem; +} + +.py-14 { + padding-top: 3.5rem; +} + +.ps-14 { + padding-inline-start: 3.5rem; +} + +.pe-14 { + padding-inline-end: 3.5rem; +} + +.pt-14 { + padding-top: 3.5rem; +} + +.pr-14 { + padding-right: 3.5rem; +} + +.pb-14 { + padding-bottom: 3.5rem; +} + +.pl-14 { + padding-left: 3.5rem; +} + +.p-16 { + padding: 4rem; +} + +.px-16 { + padding-left: 4rem; +} + +.py-16 { + padding-top: 4rem; +} + +.ps-16 { + padding-inline-start: 4rem; +} + +.pe-16 { + padding-inline-end: 4rem; +} + +.pt-16 { + padding-top: 4rem; +} + +.pr-16 { + padding-right: 4rem; +} + +.pb-16 { + padding-bottom: 4rem; +} + +.pl-16 { + padding-left: 4rem; +} + +.p-20 { + padding: 5rem; +} + +.px-20 { + padding-left: 5rem; +} + +.py-20 { + padding-top: 5rem; +} + +.ps-20 { + padding-inline-start: 5rem; +} + +.pe-20 { + padding-inline-end: 5rem; +} + +.pt-20 { + padding-top: 5rem; +} + +.pr-20 { + padding-right: 5rem; +} + +.pb-20 { + padding-bottom: 5rem; +} + +.pl-20 { + padding-left: 5rem; +} + +.p-24 { + padding: 6rem; +} + +.px-24 { + padding-left: 6rem; +} + +.py-24 { + padding-top: 6rem; +} + +.ps-24 { + padding-inline-start: 6rem; +} + +.pe-24 { + padding-inline-end: 6rem; +} + +.pt-24 { + padding-top: 6rem; +} + +.pr-24 { + padding-right: 6rem; +} + +.pb-24 { + padding-bottom: 6rem; +} + +.pl-24 { + padding-left: 6rem; +} + +.p-28 { + padding: 7rem; +} + +.px-28 { + padding-left: 7rem; +} + +.py-28 { + padding-top: 7rem; +} + +.ps-28 { + padding-inline-start: 7rem; +} + +.pe-28 { + padding-inline-end: 7rem; +} + +.pt-28 { + padding-top: 7rem; +} + +.pr-28 { + padding-right: 7rem; +} + +.pb-28 { + padding-bottom: 7rem; +} + +.pl-28 { + padding-left: 7rem; +} + +.p-32 { + padding: 8rem; +} + +.px-32 { + padding-left: 8rem; +} + +.py-32 { + padding-top: 8rem; +} + +.ps-32 { + padding-inline-start: 8rem; +} + +.pe-32 { + padding-inline-end: 8rem; +} + +.pt-32 { + padding-top: 8rem; +} + +.pr-32 { + padding-right: 8rem; +} + +.pb-32 { + padding-bottom: 8rem; +} + +.pl-32 { + padding-left: 8rem; +} + +.p-36 { + padding: 9rem; +} + +.px-36 { + padding-left: 9rem; +} + +.py-36 { + padding-top: 9rem; +} + +.ps-36 { + padding-inline-start: 9rem; +} + +.pe-36 { + padding-inline-end: 9rem; +} + +.pt-36 { + padding-top: 9rem; +} + +.pr-36 { + padding-right: 9rem; +} + +.pb-36 { + padding-bottom: 9rem; +} + +.pl-36 { + padding-left: 9rem; +} + +.p-40 { + padding: 10rem; +} + +.px-40 { + padding-left: 10rem; +} + +.py-40 { + padding-top: 10rem; +} + +.ps-40 { + padding-inline-start: 10rem; +} + +.pe-40 { + padding-inline-end: 10rem; +} + +.pt-40 { + padding-top: 10rem; +} + +.pr-40 { + padding-right: 10rem; +} + +.pb-40 { + padding-bottom: 10rem; +} + +.pl-40 { + padding-left: 10rem; +} + +.p-44 { + padding: 11rem; +} + +.px-44 { + padding-left: 11rem; +} + +.py-44 { + padding-top: 11rem; +} + +.ps-44 { + padding-inline-start: 11rem; +} + +.pe-44 { + padding-inline-end: 11rem; +} + +.pt-44 { + padding-top: 11rem; +} + +.pr-44 { + padding-right: 11rem; +} + +.pb-44 { + padding-bottom: 11rem; +} + +.pl-44 { + padding-left: 11rem; +} + +.p-48 { + padding: 12rem; +} + +.px-48 { + padding-left: 12rem; +} + +.py-48 { + padding-top: 12rem; +} + +.ps-48 { + padding-inline-start: 12rem; +} + +.pe-48 { + padding-inline-end: 12rem; +} + +.pt-48 { + padding-top: 12rem; +} + +.pr-48 { + padding-right: 12rem; +} + +.pb-48 { + padding-bottom: 12rem; +} + +.pl-48 { + padding-left: 12rem; +} + +.p-52 { + padding: 13rem; +} + +.px-52 { + padding-left: 13rem; +} + +.py-52 { + padding-top: 13rem; +} + +.ps-52 { + padding-inline-start: 13rem; +} + +.pe-52 { + padding-inline-end: 13rem; +} + +.pt-52 { + padding-top: 13rem; +} + +.pr-52 { + padding-right: 13rem; +} + +.pb-52 { + padding-bottom: 13rem; +} + +.pl-52 { + padding-left: 13rem; +} + +.p-56 { + padding: 14rem; +} + +.px-56 { + padding-left: 14rem; +} + +.py-56 { + padding-top: 14rem; +} + +.ps-56 { + padding-inline-start: 14rem; +} + +.pe-56 { + padding-inline-end: 14rem; +} + +.pt-56 { + padding-top: 14rem; +} + +.pr-56 { + padding-right: 14rem; +} + +.pb-56 { + padding-bottom: 14rem; +} + +.pl-56 { + padding-left: 14rem; +} + +.p-60 { + padding: 15rem; +} + +.px-60 { + padding-left: 15rem; +} + +.py-60 { + padding-top: 15rem; +} + +.ps-60 { + padding-inline-start: 15rem; +} + +.pe-60 { + padding-inline-end: 15rem; +} + +.pt-60 { + padding-top: 15rem; +} + +.pr-60 { + padding-right: 15rem; +} + +.pb-60 { + padding-bottom: 15rem; +} + +.pl-60 { + padding-left: 15rem; +} + +.p-64 { + padding: 16rem; +} + +.px-64 { + padding-left: 16rem; +} + +.py-64 { + padding-top: 16rem; +} + +.ps-64 { + padding-inline-start: 16rem; +} + +.pe-64 { + padding-inline-end: 16rem; +} + +.pt-64 { + padding-top: 16rem; +} + +.pr-64 { + padding-right: 16rem; +} + +.pb-64 { + padding-bottom: 16rem; +} + +.pl-64 { + padding-left: 16rem; +} + +.p-72 { + padding: 18rem; +} + +.px-72 { + padding-left: 18rem; +} + +.py-72 { + padding-top: 18rem; +} + +.ps-72 { + padding-inline-start: 18rem; +} + +.pe-72 { + padding-inline-end: 18rem; +} + +.pt-72 { + padding-top: 18rem; +} + +.pr-72 { + padding-right: 18rem; +} + +.pb-72 { + padding-bottom: 18rem; +} + +.pl-72 { + padding-left: 18rem; +} + +.p-80 { + padding: 20rem; +} + +.px-80 { + padding-left: 20rem; +} + +.py-80 { + padding-top: 20rem; +} + +.ps-80 { + padding-inline-start: 20rem; +} + +.pe-80 { + padding-inline-end: 20rem; +} + +.pt-80 { + padding-top: 20rem; +} + +.pr-80 { + padding-right: 20rem; +} + +.pb-80 { + padding-bottom: 20rem; +} + +.pl-80 { + padding-left: 20rem; +} + +.p-96 { + padding: 24rem; +} + +.px-96 { + padding-left: 24rem; +} + +.py-96 { + padding-top: 24rem; +} + +.ps-96 { + padding-inline-start: 24rem; +} + +.pe-96 { + padding-inline-end: 24rem; +} + +.pt-96 { + padding-top: 24rem; +} + +.pr-96 { + padding-right: 24rem; +} + +.pb-96 { + padding-bottom: 24rem; +} + +.pl-96 { + padding-left: 24rem; +} + +.cursor-auto { + cursor: auto; +} + +.cursor-default { + cursor: default; +} + +.cursor-pointer { + cursor: pointer; +} + +.cursor-wait { + cursor: wait; +} + +.cursor-text { + cursor: text; +} + +.cursor-move { + cursor: move; +} + +.cursor-help { + cursor: help; +} + +.cursor-not-allowed { + cursor: not-allowed; +} + +.cursor-none { + cursor: none; +} + +.cursor-context-menu { + cursor: context-menu; +} + +.cursor-progress { + cursor: progress; +} + +.cursor-cell { + cursor: cell; +} + +.cursor-crosshair { + cursor: crosshair; +} + +.cursor-vertical-text { + cursor: vertical-text; +} + +.cursor-alias { + cursor: alias; +} + +.cursor-copy { + cursor: copy; +} + +.cursor-no-drop { + cursor: no-drop; +} + +.cursor-grab { + cursor: grab; +} + +.cursor-grabbing { + cursor: grabbing; +} + +.cursor-all-scroll { + cursor: all-scroll; +} + +.cursor-col-resize { + cursor: col-resize; +} + +.cursor-row-resize { + cursor: row-resize; +} + +.cursor-n-resize { + cursor: n-resize; +} + +.cursor-e-resize { + cursor: e-resize; +} + +.cursor-s-resize { + cursor: s-resize; +} + +.cursor-w-resize { + cursor: w-resize; +} + +.cursor-ne-resize { + cursor: ne-resize; +} + +.cursor-nw-resize { + cursor: nw-resize; +} + +.cursor-se-resize { + cursor: se-resize; +} + +.cursor-sw-resize { + cursor: sw-resize; +} + +.cursor-ew-resize { + cursor: ew-resize; +} + +.cursor-ns-resize { + cursor: ns-resize; +} + +.cursor-nesw-resize { + cursor: nesw-resize; +} + +.cursor-nwse-resize { + cursor: nwse-resize; +} + +.cursor-zoom-in { + cursor: zoom-in; +} + +.block { + display: block; +} + +.inline-block { + display: inline-block; +} + +.inline { + display: inline; +} + +.flex { + display: flex; +} + +.inline-flex { + display: inline-flex; +} + +.table { + display: table; +} + +.inline-table { + display: inline-table; +} + +.table-caption { + display: table-caption; +} + +.table-cell { + display: table-cell; +} + +.table-column { + display: table-column; +} + +.table-column-group { + display: table-column-group; +} + +.table-footer-group { + display: table-footer-group; +} + +.table-header-group { + display: table-header-group; +} + +.table-row-group { + display: table-row-group; +} + +.table-row { + display: table-row; +} + +.flow-root { + display: flow-root; +} + +.grid { + display: grid; +} + +.inline-grid { + display: inline-grid; +} + +.contents { + display: contents; +} + +.list-item { + display: list-item; +} + +.hidden { + display: none; +} + +/**/ +/* flex-direction + */ +.flex-row { + flex-direction: row; +} + +.flex-row-reverse { + flex-direction: row-reverse; +} + +.flex-col { + flex-direction: column; +} + +.flex-col-reverse { + flex-direction: column-reverse; +} + +/** +/* flex-wrap +/**/ +.flex-wrap { + flex-wrap: wrap; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse; +} + +.flex-nowrap { + flex-wrap: nowrap; +} + +/***/ +/* flex-basis +/**/ +.basis-0 { + flex-basis: 0px; +} + +.basis-1 { + flex-basis: 0.25rem; /* 4px */ +} + +.basis-2 { + flex-basis: 0.5rem; /* 8px */ +} + +.basis-3 { + flex-basis: 0.75rem; /* 12px */ +} + +.basis-4 { + flex-basis: 1rem; /* 16px */ +} + +.basis-5 { + flex-basis: 1.25rem; /* 20px */ +} + +.basis-6 { + flex-basis: 1.5rem; /* 24px */ +} + +.basis-7 { + flex-basis: 1.75rem; /* 28px */ +} + +.basis-8 { + flex-basis: 2rem; /* 32px */ +} + +.basis-9 { + flex-basis: 2.25rem; /* 36px */ +} + +.basis-10 { + flex-basis: 2.5rem; /* 40px */ +} + +.basis-11 { + flex-basis: 2.75rem; /* 44px */ +} + +.basis-12 { + flex-basis: 3rem; /* 48px */ +} + +.basis-14 { + flex-basis: 3.5rem; /* 56px */ +} + +.basis-16 { + flex-basis: 4rem; /* 64px */ +} + +.basis-20 { + flex-basis: 5rem; /* 80px */ +} + +.basis-24 { + flex-basis: 6rem; /* 96px */ +} + +.basis-28 { + flex-basis: 7rem; /* 112px */ +} + +.basis-32 { + flex-basis: 8rem; /* 128px */ +} + +.basis-36 { + flex-basis: 9rem; /* 144px */ +} + +.basis-40 { + flex-basis: 10rem; /* 160px */ +} + +.basis-44 { + flex-basis: 11rem; /* 176px */ +} + +.basis-48 { + flex-basis: 12rem; /* 192px */ +} + +.basis-52 { + flex-basis: 13rem; /* 208px */ +} + +.basis-56 { + flex-basis: 14rem; /* 224px */ +} + +.basis-60 { + flex-basis: 15rem; /* 240px */ +} + +.basis-64 { + flex-basis: 16rem; /* 256px */ +} + +.basis-72 { + flex-basis: 18rem; /* 288px */ +} + +.basis-80 { + flex-basis: 20rem; /* 320px */ +} + +.basis-96 { + flex-basis: 24rem; /* 384px */ +} + +.basis-auto { + flex-basis: auto; +} + +.basis-px { + flex-basis: 1px; +} + +.basis-0\.5 { + flex-basis: 0.125rem; /* 2px */ +} + +.basis-1\.5 { + flex-basis: 0.375rem; /* 6px */ +} + +.basis-2\.5 { + flex-basis: 0.625rem; /* 10px */ +} + +.basis-3\.5 { + flex-basis: 0.875rem; /* 14px */ +} + +.basis-1\/2 { + flex-basis: 50%; +} + +.basis-1\/3 { + flex-basis: 33.333333%; +} + +.basis-2\/3 { + flex-basis: 66.666667%; +} + +.basis-1\/4 { + flex-basis: 25%; +} + +.basis-2\/4 { + flex-basis: 50%; +} + +.basis-3\/4 { + flex-basis: 75%; +} + +.basis-1\/5 { + flex-basis: 20%; +} + +.basis-2\/5 { + flex-basis: 40%; +} + +.basis-3\/5 { + flex-basis: 60%; +} + +.basis-4\/5 { + flex-basis: 80%; +} + +.basis-1\/6 { + flex-basis: 16.666667%; +} + +.basis-2\/6 { + flex-basis: 33.333333%; +} + +.basis-3\/6 { + flex-basis: 50%; +} + +.basis-4\/6 { + flex-basis: 66.666667%; +} + +.basis-5\/6 { + flex-basis: 83.333333%; +} + +.basis-1\/12 { + flex-basis: 8.333333%; +} + +.basis-2\/12 { + flex-basis: 16.666667%; +} + +.basis-3\/12 { + flex-basis: 25%; +} + +.basis-4\/12 { + flex-basis: 33.333333%; +} + +.basis-5\/12 { + flex-basis: 41.666667%; +} + +.basis-6\/12 { + flex-basis: 50%; +} + +.basis-7\/12 { + flex-basis: 58.333333%; +} + +.basis-8\/12 { + flex-basis: 66.666667%; +} + +.basis-9\/12 { + flex-basis: 75%; +} + +.basis-10\/12 { + flex-basis: 83.333333%; +} + +.basis-11\/12 { + flex-basis: 91.666667%; +} + +.basis-full { + flex-basis: 100%; +} + +.grow { + flex-grow: 1; +} + +.grow-0 { + flex-grow: 0; +} + +.content-normal { + align-content: normal; +} + +.content-center { + align-content: center; +} + +.content-start { + align-content: flex-start; +} + +.content-end { + align-content: flex-end; +} + +.content-between { + align-content: space-between; +} + +.content-around { + align-content: space-around; +} + +.content-evenly { + align-content: space-evenly; +} + +.content-baseline { + align-content: baseline; +} + +.content-stretch { + align-content: stretch; +} + +.items-start { + align-items: flex-start; +} + +.items-end { + align-items: flex-end; +} + +.items-center { + align-items: center; +} + +.items-baseline { + align-items: baseline; +} + +.items-stretch { + align-items: stretch; +} + +.items-start { + align-items: flex-start; +} + +.items-end { + align-items: flex-end; +} + +.items-center { + align-items: center; +} + +.items-baseline { + align-items: baseline; +} + +.items-stretch { + align-items: stretch; +} + +.justify-normal { + justify-content: normal; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} + +.justify-evenly { + justify-content: space-evenly; +} + +.justify-stretch { + justify-content: stretch; +} + +.place-content-center { + place-content: center; +} + +.place-content-start { + place-content: start; +} + +.place-content-end { + place-content: end; +} + +.place-content-between { + place-content: space-between; +} + +.place-content-around { + place-content: space-around; +} + +.place-content-evenly { + place-content: space-evenly; +} + +.place-content-baseline { + place-content: baseline; +} + +.place-content-stretch { + place-content: stretch; +} + +.order-1 { + order: 1; +} + +.order-2 { + order: 2; +} + +.order-3 { + order: 3; +} + +.order-4 { + order: 4; +} + +.order-5 { + order: 5; +} + +.order-6 { + order: 6; +} + +.order-7 { + order: 7; +} + +.order-8 { + order: 8; +} + +.order-9 { + order: 9; +} + +.order-10 { + order: 10; +} + +.order-11 { + order: 11; +} + +.order-12 { + order: 12; +} + +.order-first { + order: -9999; +} + +.order-last { + order: 9999; +} + +.order-none { + order: 0; +} + +.font-sans { + font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} + +.font-serif { + font-family: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif; +} + +.font-mono { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +.text-xs { + font-size: 0.75rem; /* 12px */ + line-height: 1rem; /* 16px */ +} + +.text-sm { + font-size: 0.875rem; /* 14px */ + line-height: 1.25rem; /* 20px */ +} + +.text-base { + font-size: 1rem; /* 16px */ + line-height: 1.5rem; /* 24px */ +} + +.text-lg { + font-size: 1.125rem; /* 18px */ + line-height: 1.75rem; /* 28px */ +} + +.text-xl { + font-size: 1.25rem; /* 20px */ + line-height: 1.75rem; /* 28px */ +} + +.text-2xl { + font-size: 1.5rem; /* 24px */ + line-height: 2rem; /* 32px */ +} + +.text-3xl { + font-size: 1.875rem; /* 30px */ + line-height: 2.25rem; /* 36px */ +} + +.text-4xl { + font-size: 2.25rem; /* 36px */ + line-height: 2.5rem; /* 40px */ +} + +.text-5xl { + font-size: 3rem; /* 48px */ + line-height: 1; +} + +.text-6xl { + font-size: 3.75rem; /* 60px */ + line-height: 1; +} + +.text-7xl { + font-size: 4.5rem; /* 72px */ + line-height: 1; +} + +.text-8xl { + font-size: 6rem; /* 96px */ + line-height: 1; +} + +.text-9xl { + font-size: 8rem; /* 128px */ + line-height: 1; +} + +.italic { + font-style: italic; +} + +.not-italic { + font-style: normal; +} + +.font-thin { + font-weight: 100; +} + +.font-extralight { + font-weight: 200; +} + +.font-light { + font-weight: 300; +} + +.font-normal { + font-weight: 400; +} + +.font-medium { + font-weight: 500; +} + +.font-semibold { + font-weight: 600; +} + +.font-bold { + font-weight: 700; +} + +.font-extrabold { + font-weight: 800; +} + +.font-black { + font-weight: 900; +} + +.normal-nums { + font-variant-numeric: normal; +} + +.ordinal { + font-variant-numeric: ordinal; +} + +.slashed-zero { + font-variant-numeric: slashed-zero; +} + +.lining-nums { + font-variant-numeric: lining-nums; +} + +.oldstyle-nums { + font-variant-numeric: oldstyle-nums; +} + +.proportional-nums { + font-variant-numeric: proportional-nums; +} + +.tabular-nums { + font-variant-numeric: tabular-nums; +} + +.diagonal-fractions { + font-variant-numeric: diagonal-fractions; +} + +.stacked-fractions { + font-variant-numeric: stacked-fractions; +} + +.uppercase { + text-transform: uppercase; +} + +.lowercase { + text-transform: lowercase; +} + +.capitalize { + text-transform: capitalize; +} + +.normal-case { + text-transform: none; +} + +.underline { + text-decoration-line: underline; +} + +.overline { + text-decoration-line: overline; +} + +.line-through { + text-decoration-line: line-through; +} + +.no-underline { + text-decoration-line: none; +} + +.text-left { + text-align: left; +} + +.text-center { + text-align: center; +} + +.text-right { + text-align: right; +} + +.text-justify { + text-align: justify; +} + +.text-start { + text-align: start; +} + +.text-end { + text-align: end; +} + +.overflow-auto { + overflow: auto; +} + +.overflow-hidden { + overflow: hidden; +} + +.overflow-clip { + overflow: clip; +} + +.overflow-visible { + overflow: visible; +} + +.overflow-scroll { + overflow: scroll; +} + +.overflow-x-auto { + overflow-x: auto; +} + +.overflow-y-auto { + overflow-y: auto; +} + +.overflow-x-hidden { + overflow-x: hidden; +} + +.overflow-y-hidden { + overflow-y: hidden; +} + +.overflow-x-clip { + overflow-x: clip; +} + +.overflow-y-clip { + overflow-y: clip; +} + +.overflow-x-visible { + overflow-x: visible; +} + +.overflow-y-visible { + overflow-y: visible; +} + +.overflow-x-scroll { + overflow-x: scroll; +} + +.overflow-y-scroll { + overflow-y: scroll; +} + +.shadow-sm { + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); +} + +.shadow { + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1); +} + +.shadow-md { + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1); +} + +.shadow-lg { + box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1); +} + +.shadow-xl { + box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1); +} + +.shadow-2xl { + box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); +} + +.shadow-inner { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05); +} + +.shadow-none { + box-shadow: 0 0 rgba(0, 0, 0, 0); +} + +.list-none { + list-style-type: none; +} + +.list-disc { + list-style-type: disc; +} + +.list-decimal { + list-style-type: decimal; +} + +.rounded-none { + border-radius: 0px; +} + +.rounded-sm { + border-radius: 0.125rem; /* 2px */ +} + +.rounded { + border-radius: 0.25rem; /* 4px */ +} + +.rounded-md { + border-radius: 0.375rem; /* 6px */ +} + +.rounded-lg { + border-radius: 0.5rem; /* 8px */ +} + +.rounded-xl { + border-radius: 0.75rem; /* 12px */ +} + +.rounded-2xl { + border-radius: 1rem; /* 16px */ +} + +.rounded-3xl { + border-radius: 1.5rem; /* 24px */ +} + +.rounded-full { + border-radius: 9999px; +} + +.rounded-s-none { + border-start-start-radius: 0px; + border-end-start-radius: 0px; +} + +.rounded-s-sm { + border-start-start-radius: 0.125rem; /* 2px */ + border-end-start-radius: 0.125rem; /* 2px */ +} + +.rounded-s { + border-start-start-radius: 0.25rem; /* 4px */ + border-end-start-radius: 0.25rem; /* 4px */ +} + +.rounded-s-md { + border-start-start-radius: 0.375rem; /* 6px */ + border-end-start-radius: 0.375rem; /* 6px */ +} + +.rounded-s-lg { + border-start-start-radius: 0.5rem; /* 8px */ + border-end-start-radius: 0.5rem; /* 8px */ +} + +.rounded-s-xl { + border-start-start-radius: 0.75rem; /* 12px */ + border-end-start-radius: 0.75rem; /* 12px */ +} + +.rounded-s-2xl { + border-start-start-radius: 1rem; /* 16px */ + border-end-start-radius: 1rem; /* 16px */ +} + +.rounded-s-3xl { + border-start-start-radius: 1.5rem; /* 24px */ + border-end-start-radius: 1.5rem; /* 24px */ +} + +.rounded-s-full { + border-start-start-radius: 9999px; + border-end-start-radius: 9999px; +} + +.rounded-e-none { + border-start-end-radius: 0px; + border-end-end-radius: 0px; +} + +.rounded-e-sm { + border-start-end-radius: 0.125rem; /* 2px */ + border-end-end-radius: 0.125rem; /* 2px */ +} + +.rounded-e { + border-start-end-radius: 0.25rem; /* 4px */ + border-end-end-radius: 0.25rem; /* 4px */ +} + +.rounded-e-md { + border-start-end-radius: 0.375rem; /* 6px */ + border-end-end-radius: 0.375rem; /* 6px */ +} + +.rounded-e-lg { + border-start-end-radius: 0.5rem; /* 8px */ + border-end-end-radius: 0.5rem; /* 8px */ +} + +.rounded-e-xl { + border-start-end-radius: 0.75rem; /* 12px */ + border-end-end-radius: 0.75rem; /* 12px */ +} + +.rounded-e-2xl { + border-start-end-radius: 1rem; /* 16px */ + border-end-end-radius: 1rem; /* 16px */ +} + +.rounded-e-3xl { + border-start-end-radius: 1.5rem; /* 24px */ + border-end-end-radius: 1.5rem; /* 24px */ +} + +.rounded-e-full { + border-start-end-radius: 9999px; + border-end-end-radius: 9999px; +} + +.rounded-t-none { + border-top-left-radius: 0px; + border-top-right-radius: 0px; +} + +.rounded-t-sm { + border-top-left-radius: 0.125rem; /* 2px */ + border-top-right-radius: 0.125rem; /* 2px */ +} + +.rounded-t { + border-top-left-radius: 0.25rem; /* 4px */ + border-top-right-radius: 0.25rem; /* 4px */ +} + +.rounded-t-md { + border-top-left-radius: 0.375rem; /* 6px */ + border-top-right-radius: 0.375rem; /* 6px */ +} + +.rounded-t-lg { + border-top-left-radius: 0.5rem; /* 8px */ + border-top-right-radius: 0.5rem; /* 8px */ +} + +.rounded-t-xl { + border-top-left-radius: 0.75rem; /* 12px */ + border-top-right-radius: 0.75rem; /* 12px */ +} + +.rounded-t-2xl { + border-top-left-radius: 1rem; /* 16px */ + border-top-right-radius: 1rem; /* 16px */ +} + +.rounded-t-3xl { + border-top-left-radius: 1.5rem; /* 24px */ + border-top-right-radius: 1.5rem; /* 24px */ +} + +.rounded-t-full { + border-top-left-radius: 9999px; + border-top-right-radius: 9999px; +} + +.rounded-r-none { + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; +} + +.rounded-r-sm { + border-top-right-radius: 0.125rem; /* 2px */ + border-bottom-right-radius: 0.125rem; /* 2px */ +} + +.rounded-r { + border-top-right-radius: 0.25rem; /* 4px */ + border-bottom-right-radius: 0.25rem; /* 4px */ +} + +.rounded-r-md { + border-top-right-radius: 0.375rem; /* 6px */ + border-bottom-right-radius: 0.375rem; /* 6px */ +} + +.rounded-r-lg { + border-top-right-radius: 0.5rem; /* 8px */ + border-bottom-right-radius: 0.5rem; /* 8px */ +} + +.rounded-r-xl { + border-top-right-radius: 0.75rem; /* 12px */ + border-bottom-right-radius: 0.75rem; /* 12px */ +} + +.rounded-r-2xl { + border-top-right-radius: 1rem; /* 16px */ + border-bottom-right-radius: 1rem; /* 16px */ +} + +.rounded-r-3xl { + border-top-right-radius: 1.5rem; /* 24px */ + border-bottom-right-radius: 1.5rem; /* 24px */ +} + +.rounded-r-full { + border-top-right-radius: 9999px; + border-bottom-right-radius: 9999px; +} + +.rounded-b-none { + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} + +.rounded-b-sm { + border-bottom-right-radius: 0.125rem; /* 2px */ + border-bottom-left-radius: 0.125rem; /* 2px */ +} + +.rounded-b { + border-bottom-right-radius: 0.25rem; /* 4px */ + border-bottom-left-radius: 0.25rem; /* 4px */ +} + +.rounded-b-md { + border-bottom-right-radius: 0.375rem; /* 6px */ + border-bottom-left-radius: 0.375rem; /* 6px */ +} + +.rounded-b-lg { + border-bottom-right-radius: 0.5rem; /* 8px */ + border-bottom-left-radius: 0.5rem; /* 8px */ +} + +.rounded-b-xl { + border-bottom-right-radius: 0.75rem; /* 12px */ + border-bottom-left-radius: 0.75rem; /* 12px */ +} + +.rounded-b-2xl { + border-bottom-right-radius: 1rem; /* 16px */ + border-bottom-left-radius: 1rem; /* 16px */ +} + +.rounded-b-3xl { + border-bottom-right-radius: 1.5rem; /* 24px */ + border-bottom-left-radius: 1.5rem; /* 24px */ +} + +.rounded-b-full { + border-bottom-right-radius: 9999px; + border-bottom-left-radius: 9999px; +} + +.rounded-l-none { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; +} + +.rounded-l-sm { + border-top-left-radius: 0.125rem; /* 2px */ + border-bottom-left-radius: 0.125rem; /* 2px */ +} + +.rounded-l { + border-top-left-radius: 0.25rem; /* 4px */ + border-bottom-left-radius: 0.25rem; /* 4px */ +} + +.rounded-l-md { + border-top-left-radius: 0.375rem; /* 6px */ + border-bottom-left-radius: 0.375rem; /* 6px */ +} + +.rounded-l-lg { + border-top-left-radius: 0.5rem; /* 8px */ + border-bottom-left-radius: 0.5rem; /* 8px */ +} + +.rounded-l-xl { + border-top-left-radius: 0.75rem; /* 12px */ + border-bottom-left-radius: 0.75rem; /* 12px */ +} + +.rounded-l-2xl { + border-top-left-radius: 1rem; /* 16px */ + border-bottom-left-radius: 1rem; /* 16px */ +} + +.rounded-l-3xl { + border-top-left-radius: 1.5rem; /* 24px */ + border-bottom-left-radius: 1.5rem; /* 24px */ +} + +.rounded-l-full { + border-top-left-radius: 9999px; + border-bottom-left-radius: 9999px; +} + +.rounded-ss-none { + border-start-start-radius: 0px; +} + +.rounded-ss-sm { + border-start-start-radius: 0.125rem; /* 2px */ +} + +.rounded-ss { + border-start-start-radius: 0.25rem; /* 4px */ +} + +.rounded-ss-md { + border-start-start-radius: 0.375rem; /* 6px */ +} + +.rounded-ss-lg { + border-start-start-radius: 0.5rem; /* 8px */ +} + +.rounded-ss-xl { + border-start-start-radius: 0.75rem; /* 12px */ +} + +.rounded-ss-2xl { + border-start-start-radius: 1rem; /* 16px */ +} + +.rounded-ss-3xl { + border-start-start-radius: 1.5rem; /* 24px */ +} + +.rounded-ss-full { + border-start-start-radius: 9999px; +} + +.rounded-se-none { + border-start-end-radius: 0px; +} + +.rounded-se-sm { + border-start-end-radius: 0.125rem; /* 2px */ +} + +.rounded-se { + border-start-end-radius: 0.25rem; /* 4px */ +} + +.rounded-se-md { + border-start-end-radius: 0.375rem; /* 6px */ +} + +.rounded-se-lg { + border-start-end-radius: 0.5rem; /* 8px */ +} + +.rounded-se-xl { + border-start-end-radius: 0.75rem; /* 12px */ +} + +.rounded-se-2xl { + border-start-end-radius: 1rem; /* 16px */ +} + +.rounded-se-3xl { + border-start-end-radius: 1.5rem; /* 24px */ +} + +.rounded-se-full { + border-start-end-radius: 9999px; +} + +.rounded-ee-none { + border-end-end-radius: 0px; +} + +.rounded-ee-sm { + border-end-end-radius: 0.125rem; /* 2px */ +} + +.rounded-ee { + border-end-end-radius: 0.25rem; /* 4px */ +} + +.rounded-ee-md { + border-end-end-radius: 0.375rem; /* 6px */ +} + +.rounded-ee-lg { + border-end-end-radius: 0.5rem; /* 8px */ +} + +.rounded-ee-xl { + border-end-end-radius: 0.75rem; /* 12px */ +} + +.rounded-ee-2xl { + border-end-end-radius: 1rem; /* 16px */ +} + +.rounded-ee-3xl { + border-end-end-radius: 1.5rem; /* 24px */ +} + +.rounded-ee-full { + border-end-end-radius: 9999px; +} + +.rounded-es-none { + border-end-start-radius: 0px; +} + +.rounded-es-sm { + border-end-start-radius: 0.125rem; /* 2px */ +} + +.rounded-es { + border-end-start-radius: 0.25rem; /* 4px */ +} + +.rounded-es-md { + border-end-start-radius: 0.375rem; /* 6px */ +} + +.rounded-es-lg { + border-end-start-radius: 0.5rem; /* 8px */ +} + +.rounded-es-xl { + border-end-start-radius: 0.75rem; /* 12px */ +} + +.rounded-es-2xl { + border-end-start-radius: 1rem; /* 16px */ +} + +.rounded-es-3xl { + border-end-start-radius: 1.5rem; /* 24px */ +} + +.rounded-es-full { + border-end-start-radius: 9999px; +} + +.rounded-tl-none { + border-top-left-radius: 0px; +} + +.rounded-tl-sm { + border-top-left-radius: 0.125rem; /* 2px */ +} + +.rounded-tl { + border-top-left-radius: 0.25rem; /* 4px */ +} + +.rounded-tl-md { + border-top-left-radius: 0.375rem; /* 6px */ +} + +.rounded-tl-lg { + border-top-left-radius: 0.5rem; /* 8px */ +} + +.rounded-tl-xl { + border-top-left-radius: 0.75rem; /* 12px */ +} + +.rounded-tl-2xl { + border-top-left-radius: 1rem; /* 16px */ +} + +.rounded-tl-3xl { + border-top-left-radius: 1.5rem; /* 24px */ +} + +.rounded-tl-full { + border-top-left-radius: 9999px; +} + +.rounded-tr-none { + border-top-right-radius: 0px; +} + +.rounded-tr-sm { + border-top-right-radius: 0.125rem; /* 2px */ +} + +.rounded-tr { + border-top-right-radius: 0.25rem; /* 4px */ +} + +.rounded-tr-md { + border-top-right-radius: 0.375rem; /* 6px */ +} + +.rounded-tr-lg { + border-top-right-radius: 0.5rem; /* 8px */ +} + +.rounded-tr-xl { + border-top-right-radius: 0.75rem; /* 12px */ +} + +.rounded-tr-2xl { + border-top-right-radius: 1rem; /* 16px */ +} + +.rounded-tr-3xl { + border-top-right-radius: 1.5rem; /* 24px */ +} + +.rounded-tr-full { + border-top-right-radius: 9999px; +} + +.rounded-br-none { + border-bottom-right-radius: 0px; +} + +.rounded-br-sm { + border-bottom-right-radius: 0.125rem; /* 2px */ +} + +.rounded-br { + border-bottom-right-radius: 0.25rem; /* 4px */ +} + +.rounded-br-md { + border-bottom-right-radius: 0.375rem; /* 6px */ +} + +.rounded-br-lg { + border-bottom-right-radius: 0.5rem; /* 8px */ +} + +.rounded-br-xl { + border-bottom-right-radius: 0.75rem; /* 12px */ +} + +.rounded-br-2xl { + border-bottom-right-radius: 1rem; /* 16px */ +} + +.rounded-br-3xl { + border-bottom-right-radius: 1.5rem; /* 24px */ +} + +.rounded-br-full { + border-bottom-right-radius: 9999px; +} + +.rounded-bl-none { + border-bottom-left-radius: 0px; +} + +.rounded-bl-sm { + border-bottom-left-radius: 0.125rem; /* 2px */ +} + +.rounded-bl { + border-bottom-left-radius: 0.25rem; /* 4px */ +} + +.rounded-bl-md { + border-bottom-left-radius: 0.375rem; /* 6px */ +} + +.rounded-bl-lg { + border-bottom-left-radius: 0.5rem; /* 8px */ +} + +.rounded-bl-xl { + border-bottom-left-radius: 0.75rem; /* 12px */ +} + +.rounded-bl-2xl { + border-bottom-left-radius: 1rem; /* 16px */ +} + +.rounded-bl-3xl { + border-bottom-left-radius: 1.5rem; /* 24px */ +} + +.rounded-bl-full { + border-bottom-left-radius: 9999px; +} + +.outline-none { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.outline { + outline-style: solid; +} + +.outline-dashed { + outline-style: dashed; +} + +.outline-dotted { + outline-style: dotted; +} + +.outline-double { + outline-style: double; +} + +.whitespace-normal { + white-space: normal; +} + +.whitespace-nowrap { + white-space: nowrap; +} + +.whitespace-pre { + white-space: pre; +} + +.whitespace-pre-line { + white-space: pre-line; +} + +.whitespace-pre-wrap { + white-space: pre-wrap; +} + +.whitespace-break-spaces { + white-space: break-spaces; +} + +.static { + position: static; +} + +.fixed { + position: fixed; +} + +.absolute { + position: absolute; +} + +.relative { + position: relative; +} + +.sticky { + position: sticky; +} + +/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/normalize/index.scss%22,%22../src/tail/sizing/height/_height.scss%22,%22../src/tail/sizing/height/_max_height.scss%22,%22../src/tail/sizing/width/index.scss%22,%22../src/tail/margin/index.scss%22,%22../src/tail/padding/index.scss%22,%22../src/tail/cursor/index.scss%22,%22../src/tail/display/index.scss%22,%22../src/tail/flex/_flex_direction.scss%22,%22../src/tail/flex/_flex_wrap.scss%22,%22../src/tail/flex/_flex_basis.scss%22,%22../src/tail/flex/_flex_grow.scss%22,%22../src/tail/flex/_align_content.scss%22,%22../src/tail/flex/_align_items.scss%22,%22../src/tail/flex/_justify_content.scss%22,%22../src/tail/flex/_place_content.scss%22,%22../src/tail/flex/_order.scss%22,%22../src/tail/font/_font_family.scss%22,%22../src/tail/font/_font_size.scss%22,%22../src/tail/font/_font_style.scss%22,%22../src/tail/font/_font_weight.scss%22,%22../src/tail/font/_font_variant_numeric.scss%22,%22../src/tail/text/_transform.scss%22,%22../src/tail/text/_decoration.scss%22,%22../src/tail/text/_align.scss%22,%22../src/tail/layout/_overflow.scss%22,%22../src/tail/effects/_box_shadow.scss%22,%22../src/tail/list/_list_style_type.scss%22,%22../src/tail/border/_border_radius.scss%22,%22../src/tail/outline/index.scss%22,%22../src/tail/whitespace/index.scss%22,%22../src/tail/position/index.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAAA;AAEA;AAAA;AAGA;AAAA;AAAA;AAAA;AAKA;EACE;EACA;;;AAGF;AAAA;AAGA;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAAA;AAKA;EACE;EACA;;;AAGF;AAAA;AAGA;AAAA;AAAA;AAAA;AAKA;EACE;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAKA;EACE;EACA;;;AAGF;AAAA;AAGA;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAAA;AAKA;EACE;EACA;EACA;;;AAGF;AAAA;AAAA;AAIA;AAAA;EAEE;;;AAGF;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;EAGE;EACA;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAAA;AAKA;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AAAA;AAGA;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAGA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAKA;AAAA,QACQ;EACN;;;AAGF;AAAA;AAAA;AAAA;AAKA;AAAA,SACS;EACP;;;AAGF;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;EAIE;;;AAGF;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;EAIE;EACA;;;AAGF;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;EAIE;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAAA;AAKA;AAAA;EAEE;EACA;;;AAGF;AAAA;AAAA;AAIA;AAAA;EAEE;;;AAGF;AAAA;AAAA;AAAA;AAKA;EACE;EACA;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAAA;AAKA;EACE;EACA;;;AAGF;AAAA;AAGA;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAGA;AAAA;AAAA;AAIA;EACE;;;AAGF;AAAA;AAAA;AAIA;EACE;;;AC3VF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AC/KF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE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;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAU;;;AACV;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AACX;EAAW;;;AC/RX;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAO;;;AACP;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAS;;;AACT;EAAQ;;;AACR;EAAS;;;AACT;EAAS;;;AACT;EAA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;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACtBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AC3CF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACPF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AClDF;EACE;;;AAEF;EACE;;;ACJF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACzBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACzBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACVF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AChBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AC3CF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AC7BF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACPF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACzcF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACdF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AChBF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE%22,%22file%22:%22tail.css%22%7D */ diff --git a/src/favicon.ico b/src/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..4e34ef0d49afbad2d379e889e03a2076d41338c4 GIT binary patch literal 46696 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