├── .config
└── dotnet-tools.json
├── .gitignore
├── Directory.Build.props
├── Fable.JsonProvider.sln
├── LICENSE
├── README.md
├── RELEASE_NOTES.md
├── build.fsx
├── fable_logo.png
├── global.json
├── index.html
├── package-lock.json
├── package.json
├── public
├── fable.ico
└── test.json
├── src
├── Fable.JsonProvider.fs
├── Fable.JsonProvider.fsproj
├── JsonParser.fs
├── ProvidedTypes.fs
└── ProviderDsl.fs
├── test
├── App.fs
└── App.fsproj
└── vite.config.js
/.config/dotnet-tools.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 1,
3 | "isRoot": true,
4 | "tools": {
5 | "fable": {
6 | "version": "3.7.18",
7 | "commands": [
8 | "fable"
9 | ]
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.fs.js
2 |
3 | ## Ignore Visual Studio temporary files, build results, and
4 | ## files generated by popular Visual Studio add-ons.
5 | .vscode/
6 | .ionide/
7 | build/
8 | dist/
9 | npm/
10 | tests/**/out
11 |
12 | # User-specific files
13 | *.suo
14 | *.user
15 | *.userosscache
16 | *.sln.docstates
17 |
18 | # User-specific files (MonoDevelop/Xamarin Studio)
19 | *.userprefs
20 |
21 | # Build results
22 | [Dd]ebug/
23 | [Dd]ebugPublic/
24 | [Rr]elease/
25 | [Rr]eleases/
26 | x64/
27 | x86/
28 | bld/
29 | [Bb]in/
30 | [Oo]bj/
31 | [Ll]og/
32 |
33 | # Visual Studio 2015 cache/options directory
34 | .vs/
35 | # Uncomment if you have tasks that create the project's static files in wwwroot
36 | #wwwroot/
37 |
38 | # MSTest test Results
39 | [Tt]est[Rr]esult*/
40 | [Bb]uild[Ll]og.*
41 |
42 | # NUNIT
43 | *.VisualState.xml
44 | TestResult.xml
45 |
46 | # Build Results of an ATL Project
47 | [Dd]ebugPS/
48 | [Rr]eleasePS/
49 | dlldata.c
50 |
51 | # DNX
52 | project.lock.json
53 | artifacts/
54 |
55 | *_i.c
56 | *_p.c
57 | *_i.h
58 | *.ilk
59 | *.meta
60 | *.obj
61 | *.pch
62 | *.pdb
63 | *.pgc
64 | *.pgd
65 | *.rsp
66 | *.sbr
67 | *.tlb
68 | *.tli
69 | *.tlh
70 | *.tmp
71 | *.tmp_proj
72 | *.log
73 | *.vspscc
74 | *.vssscc
75 | .builds
76 | *.pidb
77 | *.svclog
78 | *.scc
79 |
80 | # Chutzpah Test files
81 | _Chutzpah*
82 |
83 | # Visual C++ cache files
84 | ipch/
85 | *.aps
86 | *.ncb
87 | *.opendb
88 | *.opensdf
89 | *.sdf
90 | *.cachefile
91 | *.VC.db
92 | *.VC.VC.opendb
93 |
94 | # Visual Studio profiler
95 | *.psess
96 | *.vsp
97 | *.vspx
98 | *.sap
99 |
100 | # TFS 2012 Local Workspace
101 | $tf/
102 |
103 | # Guidance Automation Toolkit
104 | *.gpState
105 |
106 | # ReSharper is a .NET coding add-in
107 | _ReSharper*/
108 | *.[Rr]e[Ss]harper
109 | *.DotSettings.user
110 |
111 | # JustCode is a .NET coding add-in
112 | .JustCode
113 |
114 | # TeamCity is a build add-in
115 | _TeamCity*
116 |
117 | # DotCover is a Code Coverage Tool
118 | *.dotCover
119 |
120 | # NCrunch
121 | _NCrunch_*
122 | .*crunch*.local.xml
123 | nCrunchTemp_*
124 |
125 | # MightyMoose
126 | *.mm.*
127 | AutoTest.Net/
128 |
129 | # Web workbench (sass)
130 | .sass-cache/
131 |
132 | # Installshield output folder
133 | [Ee]xpress/
134 |
135 | # DocProject is a documentation generator add-in
136 | DocProject/buildhelp/
137 | DocProject/Help/*.HxT
138 | DocProject/Help/*.HxC
139 | DocProject/Help/*.hhc
140 | DocProject/Help/*.hhk
141 | DocProject/Help/*.hhp
142 | DocProject/Help/Html2
143 | DocProject/Help/html
144 |
145 | # Click-Once directory
146 | publish/
147 |
148 | # Publish Web Output
149 | *.[Pp]ublish.xml
150 | *.azurePubxml
151 | # TODO: Comment the next line if you want to checkin your web deploy settings
152 | # but database connection strings (with potential passwords) will be unencrypted
153 | *.pubxml
154 | *.publishproj
155 |
156 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
157 | # checkin your Azure Web App publish settings, but sensitive information contained
158 | # in these scripts will be unencrypted
159 | PublishScripts/
160 |
161 | # NuGet Packages
162 | *.nupkg
163 | # The packages folder can be ignored because of Package Restore
164 | **/packages/
165 | # Uncomment if necessary however generally it will be regenerated when needed
166 | #!**/packages/repositories.config
167 | # NuGet v3's project.json files produces more ignoreable files
168 | *.nuget.props
169 | *.nuget.targets
170 |
171 | # Microsoft Azure Build Output
172 | csx/
173 | *.build.csdef
174 |
175 | # Microsoft Azure Emulator
176 | ecf/
177 | rcf/
178 |
179 | # Windows Store app package directories and files
180 | AppPackages/
181 | BundleArtifacts/
182 | Package.StoreAssociation.xml
183 | _pkginfo.txt
184 |
185 | # Visual Studio cache files
186 | # files ending in .cache can be ignored
187 | *.[Cc]ache
188 | # but keep track of directories ending in .cache
189 | !*.[Cc]ache/
190 |
191 | # Others
192 | ClientBin/
193 | ~$*
194 | *~
195 | *.dbmdl
196 | *.dbproj.schemaview
197 | *.pfx
198 | *.publishsettings
199 | node_modules/
200 | orleans.codegen.cs
201 |
202 | # Since there are multiple workflows, uncomment next line to ignore bower_components
203 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
204 | #bower_components/
205 |
206 | # RIA/Silverlight projects
207 | Generated_Code/
208 |
209 | # Backup & report files from converting an old project file
210 | # to a newer Visual Studio version. Backup files are not needed,
211 | # because we have git ;-)
212 | _UpgradeReport_Files/
213 | Backup*/
214 | UpgradeLog*.XML
215 | UpgradeLog*.htm
216 |
217 | # SQL Server files
218 | *.mdf
219 | *.ldf
220 |
221 | # Business Intelligence projects
222 | *.rdl.data
223 | *.bim.layout
224 | *.bim_*.settings
225 |
226 | # Microsoft Fakes
227 | FakesAssemblies/
228 |
229 | # GhostDoc plugin setting file
230 | *.GhostDoc.xml
231 |
232 | # Node.js Tools for Visual Studio
233 | .ntvs_analysis.dat
234 |
235 | # Visual Studio 6 build log
236 | *.plg
237 |
238 | # Visual Studio 6 workspace options file
239 | *.opt
240 |
241 | # Visual Studio LightSwitch build output
242 | **/*.HTMLClient/GeneratedArtifacts
243 | **/*.DesktopClient/GeneratedArtifacts
244 | **/*.DesktopClient/ModelManifest.xml
245 | **/*.Server/GeneratedArtifacts
246 | **/*.Server/ModelManifest.xml
247 | _Pvt_Extensions
248 |
249 | # Paket dependency manager
250 | .paket/paket.exe
251 | paket-files/
252 |
253 | # FAKE - F# Make
254 | .fake/
255 |
256 | # JetBrains Rider
257 | .idea/
258 | *.sln.iml
259 | docs/public/*
260 | !docs/public/assets/
261 | temp/
262 |
--------------------------------------------------------------------------------
/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | https://fable.io
5 | https://github.com/fable-compiler/Fable.JsonProvider
6 | LICENSE
7 | README.md
8 | fable_logo.png
9 | fsharp;fable;javascript;f#;js;json
10 | Fable contributors
11 | true
12 |
13 |
14 | true
15 | true
16 | true
17 | snupkg
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Fable.JsonProvider.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.30114.105
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Fable.JsonProvider", "src\Fable.JsonProvider.fsproj", "{515ECBCB-C97E-4999-AF17-24D33AB8D974}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Debug|x64 = Debug|x64
12 | Debug|x86 = Debug|x86
13 | Release|Any CPU = Release|Any CPU
14 | Release|x64 = Release|x64
15 | Release|x86 = Release|x86
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
21 | {515ECBCB-C97E-4999-AF17-24D33AB8D974}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
22 | {515ECBCB-C97E-4999-AF17-24D33AB8D974}.Debug|Any CPU.Build.0 = Debug|Any CPU
23 | {515ECBCB-C97E-4999-AF17-24D33AB8D974}.Debug|x64.ActiveCfg = Debug|Any CPU
24 | {515ECBCB-C97E-4999-AF17-24D33AB8D974}.Debug|x64.Build.0 = Debug|Any CPU
25 | {515ECBCB-C97E-4999-AF17-24D33AB8D974}.Debug|x86.ActiveCfg = Debug|Any CPU
26 | {515ECBCB-C97E-4999-AF17-24D33AB8D974}.Debug|x86.Build.0 = Debug|Any CPU
27 | {515ECBCB-C97E-4999-AF17-24D33AB8D974}.Release|Any CPU.ActiveCfg = Release|Any CPU
28 | {515ECBCB-C97E-4999-AF17-24D33AB8D974}.Release|Any CPU.Build.0 = Release|Any CPU
29 | {515ECBCB-C97E-4999-AF17-24D33AB8D974}.Release|x64.ActiveCfg = Release|Any CPU
30 | {515ECBCB-C97E-4999-AF17-24D33AB8D974}.Release|x64.Build.0 = Release|Any CPU
31 | {515ECBCB-C97E-4999-AF17-24D33AB8D974}.Release|x86.ActiveCfg = Release|Any CPU
32 | {515ECBCB-C97E-4999-AF17-24D33AB8D974}.Release|x86.Build.0 = Release|Any CPU
33 | EndGlobalSection
34 | EndGlobal
35 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Fable contributors
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Fable.JsonProvider
2 |
3 | Simple F# JSON Type Provider compatible with Fable. Currently tested with Fable 3 RC 11.
4 |
5 | ## Testing
6 |
7 | ```shell
8 | dotnet fsi build.fsx start
9 | ```
10 |
11 | ## Usage
12 |
13 | - First, install the package `Fable.JsonProvider` from Nuget.
14 | - Then generate your model using a JSON url, file path or literal string. You can construct instances with other strings at runtime and the compiler will make sure you only access properties according to the original sample.
15 |
16 | > Please note there're currently **no runtime checks to validate the JSON**.
17 |
18 | ```fsharp
19 | type MyJson = Fable.JsonProvider.Generator<"""{
20 | "foo": 5,
21 | "bar": ["baz"]
22 | }""">
23 |
24 | let json = MyJson("""{"foo": 10, "bar": [] }""")
25 | printfn "%.0f" json.foo // prints 10
26 | ```
27 |
--------------------------------------------------------------------------------
/RELEASE_NOTES.md:
--------------------------------------------------------------------------------
1 | ### 1.1.1
2 |
3 | * Back to Jon Harrop's JsonParser, see #28
4 | * Prevent Stack Overflow with long strings
5 |
6 | ### 1.1.0
7 |
8 | * Use Newtonsoft.Json for parsing
9 |
10 | ### 1.0.1
11 |
12 | * Support for Arrays of Custom types @pd29
13 |
14 | ### 1.0.0
15 |
16 | * Support file paths @Titaye
17 |
18 | ### 1.0.0-beta-004
19 |
20 | * Accept array as root JSON
21 |
22 | ### 1.0.0-beta-003
23 |
24 | * Support for HTTP urls
25 |
26 | ### 1.0.0-beta-002
27 |
28 | * First release
--------------------------------------------------------------------------------
/build.fsx:
--------------------------------------------------------------------------------
1 | #r "nuget: Fable.PublishUtils, 2.4.0"
2 |
3 | open PublishUtils
4 |
5 | let args =
6 | fsi.CommandLineArgs
7 | |> Array.skip 1
8 | |> List.ofArray
9 |
10 | // run "npm test"
11 | match args with
12 | | IgnoreCase "start"::_ ->
13 | run "npm install"
14 | run "npm start"
15 | | IgnoreCase "publish"::_ ->
16 | pushFableNuget "src/Fable.JsonProvider.fsproj" [] doNothing
17 | | _ -> ()
18 |
--------------------------------------------------------------------------------
/fable_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fable-compiler/Fable.JsonProvider/595c0977e4735290f724ccd08b5757e98c81028e/fable_logo.png
--------------------------------------------------------------------------------
/global.json:
--------------------------------------------------------------------------------
1 | {
2 | "sdk": {
3 | "version": "6.0.100",
4 | "rollForward": "minor"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Fable
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Fable.JsonProvider",
3 | "lockfileVersion": 2,
4 | "requires": true,
5 | "packages": {
6 | "": {
7 | "hasInstallScript": true,
8 | "dependencies": {
9 | "react": "^18.2.0",
10 | "react-dom": "^18.2.0"
11 | },
12 | "devDependencies": {
13 | "@vitejs/plugin-react": "^4.3.1",
14 | "vite": "^5.4.7"
15 | }
16 | },
17 | "node_modules/@ampproject/remapping": {
18 | "version": "2.3.0",
19 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
20 | "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
21 | "dev": true,
22 | "dependencies": {
23 | "@jridgewell/gen-mapping": "^0.3.5",
24 | "@jridgewell/trace-mapping": "^0.3.24"
25 | },
26 | "engines": {
27 | "node": ">=6.0.0"
28 | }
29 | },
30 | "node_modules/@babel/code-frame": {
31 | "version": "7.24.7",
32 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
33 | "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
34 | "dev": true,
35 | "dependencies": {
36 | "@babel/highlight": "^7.24.7",
37 | "picocolors": "^1.0.0"
38 | },
39 | "engines": {
40 | "node": ">=6.9.0"
41 | }
42 | },
43 | "node_modules/@babel/compat-data": {
44 | "version": "7.25.4",
45 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz",
46 | "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==",
47 | "dev": true,
48 | "engines": {
49 | "node": ">=6.9.0"
50 | }
51 | },
52 | "node_modules/@babel/core": {
53 | "version": "7.25.2",
54 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz",
55 | "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
56 | "dev": true,
57 | "dependencies": {
58 | "@ampproject/remapping": "^2.2.0",
59 | "@babel/code-frame": "^7.24.7",
60 | "@babel/generator": "^7.25.0",
61 | "@babel/helper-compilation-targets": "^7.25.2",
62 | "@babel/helper-module-transforms": "^7.25.2",
63 | "@babel/helpers": "^7.25.0",
64 | "@babel/parser": "^7.25.0",
65 | "@babel/template": "^7.25.0",
66 | "@babel/traverse": "^7.25.2",
67 | "@babel/types": "^7.25.2",
68 | "convert-source-map": "^2.0.0",
69 | "debug": "^4.1.0",
70 | "gensync": "^1.0.0-beta.2",
71 | "json5": "^2.2.3",
72 | "semver": "^6.3.1"
73 | },
74 | "engines": {
75 | "node": ">=6.9.0"
76 | },
77 | "funding": {
78 | "type": "opencollective",
79 | "url": "https://opencollective.com/babel"
80 | }
81 | },
82 | "node_modules/@babel/generator": {
83 | "version": "7.25.6",
84 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz",
85 | "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==",
86 | "dev": true,
87 | "dependencies": {
88 | "@babel/types": "^7.25.6",
89 | "@jridgewell/gen-mapping": "^0.3.5",
90 | "@jridgewell/trace-mapping": "^0.3.25",
91 | "jsesc": "^2.5.1"
92 | },
93 | "engines": {
94 | "node": ">=6.9.0"
95 | }
96 | },
97 | "node_modules/@babel/helper-compilation-targets": {
98 | "version": "7.25.2",
99 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
100 | "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
101 | "dev": true,
102 | "dependencies": {
103 | "@babel/compat-data": "^7.25.2",
104 | "@babel/helper-validator-option": "^7.24.8",
105 | "browserslist": "^4.23.1",
106 | "lru-cache": "^5.1.1",
107 | "semver": "^6.3.1"
108 | },
109 | "engines": {
110 | "node": ">=6.9.0"
111 | }
112 | },
113 | "node_modules/@babel/helper-module-imports": {
114 | "version": "7.24.7",
115 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
116 | "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
117 | "dev": true,
118 | "dependencies": {
119 | "@babel/traverse": "^7.24.7",
120 | "@babel/types": "^7.24.7"
121 | },
122 | "engines": {
123 | "node": ">=6.9.0"
124 | }
125 | },
126 | "node_modules/@babel/helper-module-transforms": {
127 | "version": "7.25.2",
128 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
129 | "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
130 | "dev": true,
131 | "dependencies": {
132 | "@babel/helper-module-imports": "^7.24.7",
133 | "@babel/helper-simple-access": "^7.24.7",
134 | "@babel/helper-validator-identifier": "^7.24.7",
135 | "@babel/traverse": "^7.25.2"
136 | },
137 | "engines": {
138 | "node": ">=6.9.0"
139 | },
140 | "peerDependencies": {
141 | "@babel/core": "^7.0.0"
142 | }
143 | },
144 | "node_modules/@babel/helper-plugin-utils": {
145 | "version": "7.24.8",
146 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz",
147 | "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==",
148 | "dev": true,
149 | "engines": {
150 | "node": ">=6.9.0"
151 | }
152 | },
153 | "node_modules/@babel/helper-simple-access": {
154 | "version": "7.24.7",
155 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
156 | "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
157 | "dev": true,
158 | "dependencies": {
159 | "@babel/traverse": "^7.24.7",
160 | "@babel/types": "^7.24.7"
161 | },
162 | "engines": {
163 | "node": ">=6.9.0"
164 | }
165 | },
166 | "node_modules/@babel/helper-string-parser": {
167 | "version": "7.24.8",
168 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
169 | "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
170 | "dev": true,
171 | "engines": {
172 | "node": ">=6.9.0"
173 | }
174 | },
175 | "node_modules/@babel/helper-validator-identifier": {
176 | "version": "7.24.7",
177 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
178 | "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
179 | "dev": true,
180 | "engines": {
181 | "node": ">=6.9.0"
182 | }
183 | },
184 | "node_modules/@babel/helper-validator-option": {
185 | "version": "7.24.8",
186 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
187 | "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
188 | "dev": true,
189 | "engines": {
190 | "node": ">=6.9.0"
191 | }
192 | },
193 | "node_modules/@babel/helpers": {
194 | "version": "7.25.6",
195 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz",
196 | "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==",
197 | "dev": true,
198 | "dependencies": {
199 | "@babel/template": "^7.25.0",
200 | "@babel/types": "^7.25.6"
201 | },
202 | "engines": {
203 | "node": ">=6.9.0"
204 | }
205 | },
206 | "node_modules/@babel/highlight": {
207 | "version": "7.24.7",
208 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
209 | "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
210 | "dev": true,
211 | "dependencies": {
212 | "@babel/helper-validator-identifier": "^7.24.7",
213 | "chalk": "^2.4.2",
214 | "js-tokens": "^4.0.0",
215 | "picocolors": "^1.0.0"
216 | },
217 | "engines": {
218 | "node": ">=6.9.0"
219 | }
220 | },
221 | "node_modules/@babel/parser": {
222 | "version": "7.25.6",
223 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz",
224 | "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
225 | "dev": true,
226 | "dependencies": {
227 | "@babel/types": "^7.25.6"
228 | },
229 | "bin": {
230 | "parser": "bin/babel-parser.js"
231 | },
232 | "engines": {
233 | "node": ">=6.0.0"
234 | }
235 | },
236 | "node_modules/@babel/plugin-transform-react-jsx-self": {
237 | "version": "7.24.7",
238 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz",
239 | "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==",
240 | "dev": true,
241 | "dependencies": {
242 | "@babel/helper-plugin-utils": "^7.24.7"
243 | },
244 | "engines": {
245 | "node": ">=6.9.0"
246 | },
247 | "peerDependencies": {
248 | "@babel/core": "^7.0.0-0"
249 | }
250 | },
251 | "node_modules/@babel/plugin-transform-react-jsx-source": {
252 | "version": "7.24.7",
253 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz",
254 | "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==",
255 | "dev": true,
256 | "dependencies": {
257 | "@babel/helper-plugin-utils": "^7.24.7"
258 | },
259 | "engines": {
260 | "node": ">=6.9.0"
261 | },
262 | "peerDependencies": {
263 | "@babel/core": "^7.0.0-0"
264 | }
265 | },
266 | "node_modules/@babel/template": {
267 | "version": "7.25.0",
268 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
269 | "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
270 | "dev": true,
271 | "dependencies": {
272 | "@babel/code-frame": "^7.24.7",
273 | "@babel/parser": "^7.25.0",
274 | "@babel/types": "^7.25.0"
275 | },
276 | "engines": {
277 | "node": ">=6.9.0"
278 | }
279 | },
280 | "node_modules/@babel/traverse": {
281 | "version": "7.25.6",
282 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz",
283 | "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==",
284 | "dev": true,
285 | "dependencies": {
286 | "@babel/code-frame": "^7.24.7",
287 | "@babel/generator": "^7.25.6",
288 | "@babel/parser": "^7.25.6",
289 | "@babel/template": "^7.25.0",
290 | "@babel/types": "^7.25.6",
291 | "debug": "^4.3.1",
292 | "globals": "^11.1.0"
293 | },
294 | "engines": {
295 | "node": ">=6.9.0"
296 | }
297 | },
298 | "node_modules/@babel/types": {
299 | "version": "7.25.6",
300 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
301 | "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
302 | "dev": true,
303 | "dependencies": {
304 | "@babel/helper-string-parser": "^7.24.8",
305 | "@babel/helper-validator-identifier": "^7.24.7",
306 | "to-fast-properties": "^2.0.0"
307 | },
308 | "engines": {
309 | "node": ">=6.9.0"
310 | }
311 | },
312 | "node_modules/@esbuild/aix-ppc64": {
313 | "version": "0.21.5",
314 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
315 | "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
316 | "cpu": [
317 | "ppc64"
318 | ],
319 | "dev": true,
320 | "optional": true,
321 | "os": [
322 | "aix"
323 | ],
324 | "engines": {
325 | "node": ">=12"
326 | }
327 | },
328 | "node_modules/@esbuild/android-arm": {
329 | "version": "0.21.5",
330 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
331 | "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
332 | "cpu": [
333 | "arm"
334 | ],
335 | "dev": true,
336 | "optional": true,
337 | "os": [
338 | "android"
339 | ],
340 | "engines": {
341 | "node": ">=12"
342 | }
343 | },
344 | "node_modules/@esbuild/android-arm64": {
345 | "version": "0.21.5",
346 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
347 | "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
348 | "cpu": [
349 | "arm64"
350 | ],
351 | "dev": true,
352 | "optional": true,
353 | "os": [
354 | "android"
355 | ],
356 | "engines": {
357 | "node": ">=12"
358 | }
359 | },
360 | "node_modules/@esbuild/android-x64": {
361 | "version": "0.21.5",
362 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
363 | "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
364 | "cpu": [
365 | "x64"
366 | ],
367 | "dev": true,
368 | "optional": true,
369 | "os": [
370 | "android"
371 | ],
372 | "engines": {
373 | "node": ">=12"
374 | }
375 | },
376 | "node_modules/@esbuild/darwin-arm64": {
377 | "version": "0.21.5",
378 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
379 | "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
380 | "cpu": [
381 | "arm64"
382 | ],
383 | "dev": true,
384 | "optional": true,
385 | "os": [
386 | "darwin"
387 | ],
388 | "engines": {
389 | "node": ">=12"
390 | }
391 | },
392 | "node_modules/@esbuild/darwin-x64": {
393 | "version": "0.21.5",
394 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
395 | "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
396 | "cpu": [
397 | "x64"
398 | ],
399 | "dev": true,
400 | "optional": true,
401 | "os": [
402 | "darwin"
403 | ],
404 | "engines": {
405 | "node": ">=12"
406 | }
407 | },
408 | "node_modules/@esbuild/freebsd-arm64": {
409 | "version": "0.21.5",
410 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
411 | "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
412 | "cpu": [
413 | "arm64"
414 | ],
415 | "dev": true,
416 | "optional": true,
417 | "os": [
418 | "freebsd"
419 | ],
420 | "engines": {
421 | "node": ">=12"
422 | }
423 | },
424 | "node_modules/@esbuild/freebsd-x64": {
425 | "version": "0.21.5",
426 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
427 | "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
428 | "cpu": [
429 | "x64"
430 | ],
431 | "dev": true,
432 | "optional": true,
433 | "os": [
434 | "freebsd"
435 | ],
436 | "engines": {
437 | "node": ">=12"
438 | }
439 | },
440 | "node_modules/@esbuild/linux-arm": {
441 | "version": "0.21.5",
442 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
443 | "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
444 | "cpu": [
445 | "arm"
446 | ],
447 | "dev": true,
448 | "optional": true,
449 | "os": [
450 | "linux"
451 | ],
452 | "engines": {
453 | "node": ">=12"
454 | }
455 | },
456 | "node_modules/@esbuild/linux-arm64": {
457 | "version": "0.21.5",
458 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
459 | "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
460 | "cpu": [
461 | "arm64"
462 | ],
463 | "dev": true,
464 | "optional": true,
465 | "os": [
466 | "linux"
467 | ],
468 | "engines": {
469 | "node": ">=12"
470 | }
471 | },
472 | "node_modules/@esbuild/linux-ia32": {
473 | "version": "0.21.5",
474 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
475 | "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
476 | "cpu": [
477 | "ia32"
478 | ],
479 | "dev": true,
480 | "optional": true,
481 | "os": [
482 | "linux"
483 | ],
484 | "engines": {
485 | "node": ">=12"
486 | }
487 | },
488 | "node_modules/@esbuild/linux-loong64": {
489 | "version": "0.21.5",
490 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
491 | "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
492 | "cpu": [
493 | "loong64"
494 | ],
495 | "dev": true,
496 | "optional": true,
497 | "os": [
498 | "linux"
499 | ],
500 | "engines": {
501 | "node": ">=12"
502 | }
503 | },
504 | "node_modules/@esbuild/linux-mips64el": {
505 | "version": "0.21.5",
506 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
507 | "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
508 | "cpu": [
509 | "mips64el"
510 | ],
511 | "dev": true,
512 | "optional": true,
513 | "os": [
514 | "linux"
515 | ],
516 | "engines": {
517 | "node": ">=12"
518 | }
519 | },
520 | "node_modules/@esbuild/linux-ppc64": {
521 | "version": "0.21.5",
522 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
523 | "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
524 | "cpu": [
525 | "ppc64"
526 | ],
527 | "dev": true,
528 | "optional": true,
529 | "os": [
530 | "linux"
531 | ],
532 | "engines": {
533 | "node": ">=12"
534 | }
535 | },
536 | "node_modules/@esbuild/linux-riscv64": {
537 | "version": "0.21.5",
538 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
539 | "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
540 | "cpu": [
541 | "riscv64"
542 | ],
543 | "dev": true,
544 | "optional": true,
545 | "os": [
546 | "linux"
547 | ],
548 | "engines": {
549 | "node": ">=12"
550 | }
551 | },
552 | "node_modules/@esbuild/linux-s390x": {
553 | "version": "0.21.5",
554 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
555 | "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
556 | "cpu": [
557 | "s390x"
558 | ],
559 | "dev": true,
560 | "optional": true,
561 | "os": [
562 | "linux"
563 | ],
564 | "engines": {
565 | "node": ">=12"
566 | }
567 | },
568 | "node_modules/@esbuild/linux-x64": {
569 | "version": "0.21.5",
570 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
571 | "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
572 | "cpu": [
573 | "x64"
574 | ],
575 | "dev": true,
576 | "optional": true,
577 | "os": [
578 | "linux"
579 | ],
580 | "engines": {
581 | "node": ">=12"
582 | }
583 | },
584 | "node_modules/@esbuild/netbsd-x64": {
585 | "version": "0.21.5",
586 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
587 | "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
588 | "cpu": [
589 | "x64"
590 | ],
591 | "dev": true,
592 | "optional": true,
593 | "os": [
594 | "netbsd"
595 | ],
596 | "engines": {
597 | "node": ">=12"
598 | }
599 | },
600 | "node_modules/@esbuild/openbsd-x64": {
601 | "version": "0.21.5",
602 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
603 | "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
604 | "cpu": [
605 | "x64"
606 | ],
607 | "dev": true,
608 | "optional": true,
609 | "os": [
610 | "openbsd"
611 | ],
612 | "engines": {
613 | "node": ">=12"
614 | }
615 | },
616 | "node_modules/@esbuild/sunos-x64": {
617 | "version": "0.21.5",
618 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
619 | "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
620 | "cpu": [
621 | "x64"
622 | ],
623 | "dev": true,
624 | "optional": true,
625 | "os": [
626 | "sunos"
627 | ],
628 | "engines": {
629 | "node": ">=12"
630 | }
631 | },
632 | "node_modules/@esbuild/win32-arm64": {
633 | "version": "0.21.5",
634 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
635 | "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
636 | "cpu": [
637 | "arm64"
638 | ],
639 | "dev": true,
640 | "optional": true,
641 | "os": [
642 | "win32"
643 | ],
644 | "engines": {
645 | "node": ">=12"
646 | }
647 | },
648 | "node_modules/@esbuild/win32-ia32": {
649 | "version": "0.21.5",
650 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
651 | "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
652 | "cpu": [
653 | "ia32"
654 | ],
655 | "dev": true,
656 | "optional": true,
657 | "os": [
658 | "win32"
659 | ],
660 | "engines": {
661 | "node": ">=12"
662 | }
663 | },
664 | "node_modules/@esbuild/win32-x64": {
665 | "version": "0.21.5",
666 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
667 | "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
668 | "cpu": [
669 | "x64"
670 | ],
671 | "dev": true,
672 | "optional": true,
673 | "os": [
674 | "win32"
675 | ],
676 | "engines": {
677 | "node": ">=12"
678 | }
679 | },
680 | "node_modules/@jridgewell/gen-mapping": {
681 | "version": "0.3.5",
682 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
683 | "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
684 | "dev": true,
685 | "dependencies": {
686 | "@jridgewell/set-array": "^1.2.1",
687 | "@jridgewell/sourcemap-codec": "^1.4.10",
688 | "@jridgewell/trace-mapping": "^0.3.24"
689 | },
690 | "engines": {
691 | "node": ">=6.0.0"
692 | }
693 | },
694 | "node_modules/@jridgewell/resolve-uri": {
695 | "version": "3.1.2",
696 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
697 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
698 | "dev": true,
699 | "engines": {
700 | "node": ">=6.0.0"
701 | }
702 | },
703 | "node_modules/@jridgewell/set-array": {
704 | "version": "1.2.1",
705 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
706 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
707 | "dev": true,
708 | "engines": {
709 | "node": ">=6.0.0"
710 | }
711 | },
712 | "node_modules/@jridgewell/sourcemap-codec": {
713 | "version": "1.5.0",
714 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
715 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
716 | "dev": true
717 | },
718 | "node_modules/@jridgewell/trace-mapping": {
719 | "version": "0.3.25",
720 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
721 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
722 | "dev": true,
723 | "dependencies": {
724 | "@jridgewell/resolve-uri": "^3.1.0",
725 | "@jridgewell/sourcemap-codec": "^1.4.14"
726 | }
727 | },
728 | "node_modules/@rollup/rollup-android-arm-eabi": {
729 | "version": "4.22.4",
730 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz",
731 | "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==",
732 | "cpu": [
733 | "arm"
734 | ],
735 | "dev": true,
736 | "optional": true,
737 | "os": [
738 | "android"
739 | ]
740 | },
741 | "node_modules/@rollup/rollup-android-arm64": {
742 | "version": "4.22.4",
743 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz",
744 | "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==",
745 | "cpu": [
746 | "arm64"
747 | ],
748 | "dev": true,
749 | "optional": true,
750 | "os": [
751 | "android"
752 | ]
753 | },
754 | "node_modules/@rollup/rollup-darwin-arm64": {
755 | "version": "4.22.4",
756 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz",
757 | "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==",
758 | "cpu": [
759 | "arm64"
760 | ],
761 | "dev": true,
762 | "optional": true,
763 | "os": [
764 | "darwin"
765 | ]
766 | },
767 | "node_modules/@rollup/rollup-darwin-x64": {
768 | "version": "4.22.4",
769 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz",
770 | "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==",
771 | "cpu": [
772 | "x64"
773 | ],
774 | "dev": true,
775 | "optional": true,
776 | "os": [
777 | "darwin"
778 | ]
779 | },
780 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
781 | "version": "4.22.4",
782 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz",
783 | "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==",
784 | "cpu": [
785 | "arm"
786 | ],
787 | "dev": true,
788 | "optional": true,
789 | "os": [
790 | "linux"
791 | ]
792 | },
793 | "node_modules/@rollup/rollup-linux-arm-musleabihf": {
794 | "version": "4.22.4",
795 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz",
796 | "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==",
797 | "cpu": [
798 | "arm"
799 | ],
800 | "dev": true,
801 | "optional": true,
802 | "os": [
803 | "linux"
804 | ]
805 | },
806 | "node_modules/@rollup/rollup-linux-arm64-gnu": {
807 | "version": "4.22.4",
808 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz",
809 | "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==",
810 | "cpu": [
811 | "arm64"
812 | ],
813 | "dev": true,
814 | "optional": true,
815 | "os": [
816 | "linux"
817 | ]
818 | },
819 | "node_modules/@rollup/rollup-linux-arm64-musl": {
820 | "version": "4.22.4",
821 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz",
822 | "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==",
823 | "cpu": [
824 | "arm64"
825 | ],
826 | "dev": true,
827 | "optional": true,
828 | "os": [
829 | "linux"
830 | ]
831 | },
832 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
833 | "version": "4.22.4",
834 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz",
835 | "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==",
836 | "cpu": [
837 | "ppc64"
838 | ],
839 | "dev": true,
840 | "optional": true,
841 | "os": [
842 | "linux"
843 | ]
844 | },
845 | "node_modules/@rollup/rollup-linux-riscv64-gnu": {
846 | "version": "4.22.4",
847 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz",
848 | "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==",
849 | "cpu": [
850 | "riscv64"
851 | ],
852 | "dev": true,
853 | "optional": true,
854 | "os": [
855 | "linux"
856 | ]
857 | },
858 | "node_modules/@rollup/rollup-linux-s390x-gnu": {
859 | "version": "4.22.4",
860 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz",
861 | "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==",
862 | "cpu": [
863 | "s390x"
864 | ],
865 | "dev": true,
866 | "optional": true,
867 | "os": [
868 | "linux"
869 | ]
870 | },
871 | "node_modules/@rollup/rollup-linux-x64-gnu": {
872 | "version": "4.22.4",
873 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz",
874 | "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==",
875 | "cpu": [
876 | "x64"
877 | ],
878 | "dev": true,
879 | "optional": true,
880 | "os": [
881 | "linux"
882 | ]
883 | },
884 | "node_modules/@rollup/rollup-linux-x64-musl": {
885 | "version": "4.22.4",
886 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz",
887 | "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==",
888 | "cpu": [
889 | "x64"
890 | ],
891 | "dev": true,
892 | "optional": true,
893 | "os": [
894 | "linux"
895 | ]
896 | },
897 | "node_modules/@rollup/rollup-win32-arm64-msvc": {
898 | "version": "4.22.4",
899 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz",
900 | "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==",
901 | "cpu": [
902 | "arm64"
903 | ],
904 | "dev": true,
905 | "optional": true,
906 | "os": [
907 | "win32"
908 | ]
909 | },
910 | "node_modules/@rollup/rollup-win32-ia32-msvc": {
911 | "version": "4.22.4",
912 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz",
913 | "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==",
914 | "cpu": [
915 | "ia32"
916 | ],
917 | "dev": true,
918 | "optional": true,
919 | "os": [
920 | "win32"
921 | ]
922 | },
923 | "node_modules/@rollup/rollup-win32-x64-msvc": {
924 | "version": "4.22.4",
925 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz",
926 | "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==",
927 | "cpu": [
928 | "x64"
929 | ],
930 | "dev": true,
931 | "optional": true,
932 | "os": [
933 | "win32"
934 | ]
935 | },
936 | "node_modules/@types/babel__core": {
937 | "version": "7.20.5",
938 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
939 | "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
940 | "dev": true,
941 | "dependencies": {
942 | "@babel/parser": "^7.20.7",
943 | "@babel/types": "^7.20.7",
944 | "@types/babel__generator": "*",
945 | "@types/babel__template": "*",
946 | "@types/babel__traverse": "*"
947 | }
948 | },
949 | "node_modules/@types/babel__generator": {
950 | "version": "7.6.8",
951 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
952 | "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
953 | "dev": true,
954 | "dependencies": {
955 | "@babel/types": "^7.0.0"
956 | }
957 | },
958 | "node_modules/@types/babel__template": {
959 | "version": "7.4.4",
960 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
961 | "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
962 | "dev": true,
963 | "dependencies": {
964 | "@babel/parser": "^7.1.0",
965 | "@babel/types": "^7.0.0"
966 | }
967 | },
968 | "node_modules/@types/babel__traverse": {
969 | "version": "7.20.6",
970 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
971 | "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
972 | "dev": true,
973 | "dependencies": {
974 | "@babel/types": "^7.20.7"
975 | }
976 | },
977 | "node_modules/@types/estree": {
978 | "version": "1.0.5",
979 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
980 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
981 | "dev": true
982 | },
983 | "node_modules/@vitejs/plugin-react": {
984 | "version": "4.3.1",
985 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz",
986 | "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==",
987 | "dev": true,
988 | "dependencies": {
989 | "@babel/core": "^7.24.5",
990 | "@babel/plugin-transform-react-jsx-self": "^7.24.5",
991 | "@babel/plugin-transform-react-jsx-source": "^7.24.1",
992 | "@types/babel__core": "^7.20.5",
993 | "react-refresh": "^0.14.2"
994 | },
995 | "engines": {
996 | "node": "^14.18.0 || >=16.0.0"
997 | },
998 | "peerDependencies": {
999 | "vite": "^4.2.0 || ^5.0.0"
1000 | }
1001 | },
1002 | "node_modules/ansi-styles": {
1003 | "version": "3.2.1",
1004 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1005 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1006 | "dev": true,
1007 | "dependencies": {
1008 | "color-convert": "^1.9.0"
1009 | },
1010 | "engines": {
1011 | "node": ">=4"
1012 | }
1013 | },
1014 | "node_modules/browserslist": {
1015 | "version": "4.23.3",
1016 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
1017 | "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
1018 | "dev": true,
1019 | "funding": [
1020 | {
1021 | "type": "opencollective",
1022 | "url": "https://opencollective.com/browserslist"
1023 | },
1024 | {
1025 | "type": "tidelift",
1026 | "url": "https://tidelift.com/funding/github/npm/browserslist"
1027 | },
1028 | {
1029 | "type": "github",
1030 | "url": "https://github.com/sponsors/ai"
1031 | }
1032 | ],
1033 | "dependencies": {
1034 | "caniuse-lite": "^1.0.30001646",
1035 | "electron-to-chromium": "^1.5.4",
1036 | "node-releases": "^2.0.18",
1037 | "update-browserslist-db": "^1.1.0"
1038 | },
1039 | "bin": {
1040 | "browserslist": "cli.js"
1041 | },
1042 | "engines": {
1043 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1044 | }
1045 | },
1046 | "node_modules/caniuse-lite": {
1047 | "version": "1.0.30001663",
1048 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001663.tgz",
1049 | "integrity": "sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==",
1050 | "dev": true,
1051 | "funding": [
1052 | {
1053 | "type": "opencollective",
1054 | "url": "https://opencollective.com/browserslist"
1055 | },
1056 | {
1057 | "type": "tidelift",
1058 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
1059 | },
1060 | {
1061 | "type": "github",
1062 | "url": "https://github.com/sponsors/ai"
1063 | }
1064 | ]
1065 | },
1066 | "node_modules/chalk": {
1067 | "version": "2.4.2",
1068 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
1069 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
1070 | "dev": true,
1071 | "dependencies": {
1072 | "ansi-styles": "^3.2.1",
1073 | "escape-string-regexp": "^1.0.5",
1074 | "supports-color": "^5.3.0"
1075 | },
1076 | "engines": {
1077 | "node": ">=4"
1078 | }
1079 | },
1080 | "node_modules/color-convert": {
1081 | "version": "1.9.3",
1082 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
1083 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
1084 | "dev": true,
1085 | "dependencies": {
1086 | "color-name": "1.1.3"
1087 | }
1088 | },
1089 | "node_modules/color-name": {
1090 | "version": "1.1.3",
1091 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
1092 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
1093 | "dev": true
1094 | },
1095 | "node_modules/convert-source-map": {
1096 | "version": "2.0.0",
1097 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
1098 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
1099 | "dev": true
1100 | },
1101 | "node_modules/debug": {
1102 | "version": "4.3.7",
1103 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
1104 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
1105 | "dev": true,
1106 | "dependencies": {
1107 | "ms": "^2.1.3"
1108 | },
1109 | "engines": {
1110 | "node": ">=6.0"
1111 | },
1112 | "peerDependenciesMeta": {
1113 | "supports-color": {
1114 | "optional": true
1115 | }
1116 | }
1117 | },
1118 | "node_modules/electron-to-chromium": {
1119 | "version": "1.5.28",
1120 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.28.tgz",
1121 | "integrity": "sha512-VufdJl+rzaKZoYVUijN13QcXVF5dWPZANeFTLNy+OSpHdDL5ynXTF35+60RSBbaQYB1ae723lQXHCrf4pyLsMw==",
1122 | "dev": true
1123 | },
1124 | "node_modules/esbuild": {
1125 | "version": "0.21.5",
1126 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
1127 | "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
1128 | "dev": true,
1129 | "hasInstallScript": true,
1130 | "bin": {
1131 | "esbuild": "bin/esbuild"
1132 | },
1133 | "engines": {
1134 | "node": ">=12"
1135 | },
1136 | "optionalDependencies": {
1137 | "@esbuild/aix-ppc64": "0.21.5",
1138 | "@esbuild/android-arm": "0.21.5",
1139 | "@esbuild/android-arm64": "0.21.5",
1140 | "@esbuild/android-x64": "0.21.5",
1141 | "@esbuild/darwin-arm64": "0.21.5",
1142 | "@esbuild/darwin-x64": "0.21.5",
1143 | "@esbuild/freebsd-arm64": "0.21.5",
1144 | "@esbuild/freebsd-x64": "0.21.5",
1145 | "@esbuild/linux-arm": "0.21.5",
1146 | "@esbuild/linux-arm64": "0.21.5",
1147 | "@esbuild/linux-ia32": "0.21.5",
1148 | "@esbuild/linux-loong64": "0.21.5",
1149 | "@esbuild/linux-mips64el": "0.21.5",
1150 | "@esbuild/linux-ppc64": "0.21.5",
1151 | "@esbuild/linux-riscv64": "0.21.5",
1152 | "@esbuild/linux-s390x": "0.21.5",
1153 | "@esbuild/linux-x64": "0.21.5",
1154 | "@esbuild/netbsd-x64": "0.21.5",
1155 | "@esbuild/openbsd-x64": "0.21.5",
1156 | "@esbuild/sunos-x64": "0.21.5",
1157 | "@esbuild/win32-arm64": "0.21.5",
1158 | "@esbuild/win32-ia32": "0.21.5",
1159 | "@esbuild/win32-x64": "0.21.5"
1160 | }
1161 | },
1162 | "node_modules/escalade": {
1163 | "version": "3.2.0",
1164 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
1165 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
1166 | "dev": true,
1167 | "engines": {
1168 | "node": ">=6"
1169 | }
1170 | },
1171 | "node_modules/escape-string-regexp": {
1172 | "version": "1.0.5",
1173 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1174 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
1175 | "dev": true,
1176 | "engines": {
1177 | "node": ">=0.8.0"
1178 | }
1179 | },
1180 | "node_modules/fsevents": {
1181 | "version": "2.3.3",
1182 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1183 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1184 | "dev": true,
1185 | "hasInstallScript": true,
1186 | "optional": true,
1187 | "os": [
1188 | "darwin"
1189 | ],
1190 | "engines": {
1191 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1192 | }
1193 | },
1194 | "node_modules/gensync": {
1195 | "version": "1.0.0-beta.2",
1196 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
1197 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
1198 | "dev": true,
1199 | "engines": {
1200 | "node": ">=6.9.0"
1201 | }
1202 | },
1203 | "node_modules/globals": {
1204 | "version": "11.12.0",
1205 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1206 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1207 | "dev": true,
1208 | "engines": {
1209 | "node": ">=4"
1210 | }
1211 | },
1212 | "node_modules/has-flag": {
1213 | "version": "3.0.0",
1214 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1215 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
1216 | "dev": true,
1217 | "engines": {
1218 | "node": ">=4"
1219 | }
1220 | },
1221 | "node_modules/js-tokens": {
1222 | "version": "4.0.0",
1223 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1224 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
1225 | },
1226 | "node_modules/jsesc": {
1227 | "version": "2.5.2",
1228 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
1229 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
1230 | "dev": true,
1231 | "bin": {
1232 | "jsesc": "bin/jsesc"
1233 | },
1234 | "engines": {
1235 | "node": ">=4"
1236 | }
1237 | },
1238 | "node_modules/json5": {
1239 | "version": "2.2.3",
1240 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
1241 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
1242 | "dev": true,
1243 | "bin": {
1244 | "json5": "lib/cli.js"
1245 | },
1246 | "engines": {
1247 | "node": ">=6"
1248 | }
1249 | },
1250 | "node_modules/loose-envify": {
1251 | "version": "1.4.0",
1252 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1253 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1254 | "dependencies": {
1255 | "js-tokens": "^3.0.0 || ^4.0.0"
1256 | },
1257 | "bin": {
1258 | "loose-envify": "cli.js"
1259 | }
1260 | },
1261 | "node_modules/lru-cache": {
1262 | "version": "5.1.1",
1263 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
1264 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
1265 | "dev": true,
1266 | "dependencies": {
1267 | "yallist": "^3.0.2"
1268 | }
1269 | },
1270 | "node_modules/ms": {
1271 | "version": "2.1.3",
1272 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1273 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1274 | "dev": true
1275 | },
1276 | "node_modules/nanoid": {
1277 | "version": "3.3.7",
1278 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
1279 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
1280 | "dev": true,
1281 | "funding": [
1282 | {
1283 | "type": "github",
1284 | "url": "https://github.com/sponsors/ai"
1285 | }
1286 | ],
1287 | "bin": {
1288 | "nanoid": "bin/nanoid.cjs"
1289 | },
1290 | "engines": {
1291 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1292 | }
1293 | },
1294 | "node_modules/node-releases": {
1295 | "version": "2.0.18",
1296 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
1297 | "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
1298 | "dev": true
1299 | },
1300 | "node_modules/picocolors": {
1301 | "version": "1.1.0",
1302 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
1303 | "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
1304 | "dev": true
1305 | },
1306 | "node_modules/postcss": {
1307 | "version": "8.4.47",
1308 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
1309 | "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
1310 | "dev": true,
1311 | "funding": [
1312 | {
1313 | "type": "opencollective",
1314 | "url": "https://opencollective.com/postcss/"
1315 | },
1316 | {
1317 | "type": "tidelift",
1318 | "url": "https://tidelift.com/funding/github/npm/postcss"
1319 | },
1320 | {
1321 | "type": "github",
1322 | "url": "https://github.com/sponsors/ai"
1323 | }
1324 | ],
1325 | "dependencies": {
1326 | "nanoid": "^3.3.7",
1327 | "picocolors": "^1.1.0",
1328 | "source-map-js": "^1.2.1"
1329 | },
1330 | "engines": {
1331 | "node": "^10 || ^12 || >=14"
1332 | }
1333 | },
1334 | "node_modules/react": {
1335 | "version": "18.2.0",
1336 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
1337 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
1338 | "dependencies": {
1339 | "loose-envify": "^1.1.0"
1340 | },
1341 | "engines": {
1342 | "node": ">=0.10.0"
1343 | }
1344 | },
1345 | "node_modules/react-dom": {
1346 | "version": "18.2.0",
1347 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
1348 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
1349 | "dependencies": {
1350 | "loose-envify": "^1.1.0",
1351 | "scheduler": "^0.23.0"
1352 | },
1353 | "peerDependencies": {
1354 | "react": "^18.2.0"
1355 | }
1356 | },
1357 | "node_modules/react-refresh": {
1358 | "version": "0.14.2",
1359 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
1360 | "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
1361 | "dev": true,
1362 | "engines": {
1363 | "node": ">=0.10.0"
1364 | }
1365 | },
1366 | "node_modules/rollup": {
1367 | "version": "4.22.4",
1368 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz",
1369 | "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==",
1370 | "dev": true,
1371 | "dependencies": {
1372 | "@types/estree": "1.0.5"
1373 | },
1374 | "bin": {
1375 | "rollup": "dist/bin/rollup"
1376 | },
1377 | "engines": {
1378 | "node": ">=18.0.0",
1379 | "npm": ">=8.0.0"
1380 | },
1381 | "optionalDependencies": {
1382 | "@rollup/rollup-android-arm-eabi": "4.22.4",
1383 | "@rollup/rollup-android-arm64": "4.22.4",
1384 | "@rollup/rollup-darwin-arm64": "4.22.4",
1385 | "@rollup/rollup-darwin-x64": "4.22.4",
1386 | "@rollup/rollup-linux-arm-gnueabihf": "4.22.4",
1387 | "@rollup/rollup-linux-arm-musleabihf": "4.22.4",
1388 | "@rollup/rollup-linux-arm64-gnu": "4.22.4",
1389 | "@rollup/rollup-linux-arm64-musl": "4.22.4",
1390 | "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4",
1391 | "@rollup/rollup-linux-riscv64-gnu": "4.22.4",
1392 | "@rollup/rollup-linux-s390x-gnu": "4.22.4",
1393 | "@rollup/rollup-linux-x64-gnu": "4.22.4",
1394 | "@rollup/rollup-linux-x64-musl": "4.22.4",
1395 | "@rollup/rollup-win32-arm64-msvc": "4.22.4",
1396 | "@rollup/rollup-win32-ia32-msvc": "4.22.4",
1397 | "@rollup/rollup-win32-x64-msvc": "4.22.4",
1398 | "fsevents": "~2.3.2"
1399 | }
1400 | },
1401 | "node_modules/scheduler": {
1402 | "version": "0.23.0",
1403 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
1404 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
1405 | "dependencies": {
1406 | "loose-envify": "^1.1.0"
1407 | }
1408 | },
1409 | "node_modules/semver": {
1410 | "version": "6.3.1",
1411 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
1412 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
1413 | "dev": true,
1414 | "bin": {
1415 | "semver": "bin/semver.js"
1416 | }
1417 | },
1418 | "node_modules/source-map-js": {
1419 | "version": "1.2.1",
1420 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
1421 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
1422 | "dev": true,
1423 | "engines": {
1424 | "node": ">=0.10.0"
1425 | }
1426 | },
1427 | "node_modules/supports-color": {
1428 | "version": "5.5.0",
1429 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1430 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1431 | "dev": true,
1432 | "dependencies": {
1433 | "has-flag": "^3.0.0"
1434 | },
1435 | "engines": {
1436 | "node": ">=4"
1437 | }
1438 | },
1439 | "node_modules/to-fast-properties": {
1440 | "version": "2.0.0",
1441 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
1442 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
1443 | "dev": true,
1444 | "engines": {
1445 | "node": ">=4"
1446 | }
1447 | },
1448 | "node_modules/update-browserslist-db": {
1449 | "version": "1.1.0",
1450 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
1451 | "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
1452 | "dev": true,
1453 | "funding": [
1454 | {
1455 | "type": "opencollective",
1456 | "url": "https://opencollective.com/browserslist"
1457 | },
1458 | {
1459 | "type": "tidelift",
1460 | "url": "https://tidelift.com/funding/github/npm/browserslist"
1461 | },
1462 | {
1463 | "type": "github",
1464 | "url": "https://github.com/sponsors/ai"
1465 | }
1466 | ],
1467 | "dependencies": {
1468 | "escalade": "^3.1.2",
1469 | "picocolors": "^1.0.1"
1470 | },
1471 | "bin": {
1472 | "update-browserslist-db": "cli.js"
1473 | },
1474 | "peerDependencies": {
1475 | "browserslist": ">= 4.21.0"
1476 | }
1477 | },
1478 | "node_modules/vite": {
1479 | "version": "5.4.7",
1480 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.7.tgz",
1481 | "integrity": "sha512-5l2zxqMEPVENgvzTuBpHer2awaetimj2BGkhBPdnwKbPNOlHsODU+oiazEZzLK7KhAnOrO+XGYJYn4ZlUhDtDQ==",
1482 | "dev": true,
1483 | "dependencies": {
1484 | "esbuild": "^0.21.3",
1485 | "postcss": "^8.4.43",
1486 | "rollup": "^4.20.0"
1487 | },
1488 | "bin": {
1489 | "vite": "bin/vite.js"
1490 | },
1491 | "engines": {
1492 | "node": "^18.0.0 || >=20.0.0"
1493 | },
1494 | "funding": {
1495 | "url": "https://github.com/vitejs/vite?sponsor=1"
1496 | },
1497 | "optionalDependencies": {
1498 | "fsevents": "~2.3.3"
1499 | },
1500 | "peerDependencies": {
1501 | "@types/node": "^18.0.0 || >=20.0.0",
1502 | "less": "*",
1503 | "lightningcss": "^1.21.0",
1504 | "sass": "*",
1505 | "sass-embedded": "*",
1506 | "stylus": "*",
1507 | "sugarss": "*",
1508 | "terser": "^5.4.0"
1509 | },
1510 | "peerDependenciesMeta": {
1511 | "@types/node": {
1512 | "optional": true
1513 | },
1514 | "less": {
1515 | "optional": true
1516 | },
1517 | "lightningcss": {
1518 | "optional": true
1519 | },
1520 | "sass": {
1521 | "optional": true
1522 | },
1523 | "sass-embedded": {
1524 | "optional": true
1525 | },
1526 | "stylus": {
1527 | "optional": true
1528 | },
1529 | "sugarss": {
1530 | "optional": true
1531 | },
1532 | "terser": {
1533 | "optional": true
1534 | }
1535 | }
1536 | },
1537 | "node_modules/yallist": {
1538 | "version": "3.1.1",
1539 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
1540 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
1541 | "dev": true
1542 | }
1543 | },
1544 | "dependencies": {
1545 | "@ampproject/remapping": {
1546 | "version": "2.3.0",
1547 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
1548 | "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
1549 | "dev": true,
1550 | "requires": {
1551 | "@jridgewell/gen-mapping": "^0.3.5",
1552 | "@jridgewell/trace-mapping": "^0.3.24"
1553 | }
1554 | },
1555 | "@babel/code-frame": {
1556 | "version": "7.24.7",
1557 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
1558 | "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
1559 | "dev": true,
1560 | "requires": {
1561 | "@babel/highlight": "^7.24.7",
1562 | "picocolors": "^1.0.0"
1563 | }
1564 | },
1565 | "@babel/compat-data": {
1566 | "version": "7.25.4",
1567 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz",
1568 | "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==",
1569 | "dev": true
1570 | },
1571 | "@babel/core": {
1572 | "version": "7.25.2",
1573 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz",
1574 | "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
1575 | "dev": true,
1576 | "requires": {
1577 | "@ampproject/remapping": "^2.2.0",
1578 | "@babel/code-frame": "^7.24.7",
1579 | "@babel/generator": "^7.25.0",
1580 | "@babel/helper-compilation-targets": "^7.25.2",
1581 | "@babel/helper-module-transforms": "^7.25.2",
1582 | "@babel/helpers": "^7.25.0",
1583 | "@babel/parser": "^7.25.0",
1584 | "@babel/template": "^7.25.0",
1585 | "@babel/traverse": "^7.25.2",
1586 | "@babel/types": "^7.25.2",
1587 | "convert-source-map": "^2.0.0",
1588 | "debug": "^4.1.0",
1589 | "gensync": "^1.0.0-beta.2",
1590 | "json5": "^2.2.3",
1591 | "semver": "^6.3.1"
1592 | }
1593 | },
1594 | "@babel/generator": {
1595 | "version": "7.25.6",
1596 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz",
1597 | "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==",
1598 | "dev": true,
1599 | "requires": {
1600 | "@babel/types": "^7.25.6",
1601 | "@jridgewell/gen-mapping": "^0.3.5",
1602 | "@jridgewell/trace-mapping": "^0.3.25",
1603 | "jsesc": "^2.5.1"
1604 | }
1605 | },
1606 | "@babel/helper-compilation-targets": {
1607 | "version": "7.25.2",
1608 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
1609 | "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
1610 | "dev": true,
1611 | "requires": {
1612 | "@babel/compat-data": "^7.25.2",
1613 | "@babel/helper-validator-option": "^7.24.8",
1614 | "browserslist": "^4.23.1",
1615 | "lru-cache": "^5.1.1",
1616 | "semver": "^6.3.1"
1617 | }
1618 | },
1619 | "@babel/helper-module-imports": {
1620 | "version": "7.24.7",
1621 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
1622 | "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
1623 | "dev": true,
1624 | "requires": {
1625 | "@babel/traverse": "^7.24.7",
1626 | "@babel/types": "^7.24.7"
1627 | }
1628 | },
1629 | "@babel/helper-module-transforms": {
1630 | "version": "7.25.2",
1631 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
1632 | "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
1633 | "dev": true,
1634 | "requires": {
1635 | "@babel/helper-module-imports": "^7.24.7",
1636 | "@babel/helper-simple-access": "^7.24.7",
1637 | "@babel/helper-validator-identifier": "^7.24.7",
1638 | "@babel/traverse": "^7.25.2"
1639 | }
1640 | },
1641 | "@babel/helper-plugin-utils": {
1642 | "version": "7.24.8",
1643 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz",
1644 | "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==",
1645 | "dev": true
1646 | },
1647 | "@babel/helper-simple-access": {
1648 | "version": "7.24.7",
1649 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
1650 | "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
1651 | "dev": true,
1652 | "requires": {
1653 | "@babel/traverse": "^7.24.7",
1654 | "@babel/types": "^7.24.7"
1655 | }
1656 | },
1657 | "@babel/helper-string-parser": {
1658 | "version": "7.24.8",
1659 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
1660 | "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
1661 | "dev": true
1662 | },
1663 | "@babel/helper-validator-identifier": {
1664 | "version": "7.24.7",
1665 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
1666 | "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
1667 | "dev": true
1668 | },
1669 | "@babel/helper-validator-option": {
1670 | "version": "7.24.8",
1671 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
1672 | "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
1673 | "dev": true
1674 | },
1675 | "@babel/helpers": {
1676 | "version": "7.25.6",
1677 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz",
1678 | "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==",
1679 | "dev": true,
1680 | "requires": {
1681 | "@babel/template": "^7.25.0",
1682 | "@babel/types": "^7.25.6"
1683 | }
1684 | },
1685 | "@babel/highlight": {
1686 | "version": "7.24.7",
1687 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
1688 | "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
1689 | "dev": true,
1690 | "requires": {
1691 | "@babel/helper-validator-identifier": "^7.24.7",
1692 | "chalk": "^2.4.2",
1693 | "js-tokens": "^4.0.0",
1694 | "picocolors": "^1.0.0"
1695 | }
1696 | },
1697 | "@babel/parser": {
1698 | "version": "7.25.6",
1699 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz",
1700 | "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
1701 | "dev": true,
1702 | "requires": {
1703 | "@babel/types": "^7.25.6"
1704 | }
1705 | },
1706 | "@babel/plugin-transform-react-jsx-self": {
1707 | "version": "7.24.7",
1708 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz",
1709 | "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==",
1710 | "dev": true,
1711 | "requires": {
1712 | "@babel/helper-plugin-utils": "^7.24.7"
1713 | }
1714 | },
1715 | "@babel/plugin-transform-react-jsx-source": {
1716 | "version": "7.24.7",
1717 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz",
1718 | "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==",
1719 | "dev": true,
1720 | "requires": {
1721 | "@babel/helper-plugin-utils": "^7.24.7"
1722 | }
1723 | },
1724 | "@babel/template": {
1725 | "version": "7.25.0",
1726 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
1727 | "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
1728 | "dev": true,
1729 | "requires": {
1730 | "@babel/code-frame": "^7.24.7",
1731 | "@babel/parser": "^7.25.0",
1732 | "@babel/types": "^7.25.0"
1733 | }
1734 | },
1735 | "@babel/traverse": {
1736 | "version": "7.25.6",
1737 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz",
1738 | "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==",
1739 | "dev": true,
1740 | "requires": {
1741 | "@babel/code-frame": "^7.24.7",
1742 | "@babel/generator": "^7.25.6",
1743 | "@babel/parser": "^7.25.6",
1744 | "@babel/template": "^7.25.0",
1745 | "@babel/types": "^7.25.6",
1746 | "debug": "^4.3.1",
1747 | "globals": "^11.1.0"
1748 | }
1749 | },
1750 | "@babel/types": {
1751 | "version": "7.25.6",
1752 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
1753 | "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
1754 | "dev": true,
1755 | "requires": {
1756 | "@babel/helper-string-parser": "^7.24.8",
1757 | "@babel/helper-validator-identifier": "^7.24.7",
1758 | "to-fast-properties": "^2.0.0"
1759 | }
1760 | },
1761 | "@esbuild/aix-ppc64": {
1762 | "version": "0.21.5",
1763 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
1764 | "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
1765 | "dev": true,
1766 | "optional": true
1767 | },
1768 | "@esbuild/android-arm": {
1769 | "version": "0.21.5",
1770 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
1771 | "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
1772 | "dev": true,
1773 | "optional": true
1774 | },
1775 | "@esbuild/android-arm64": {
1776 | "version": "0.21.5",
1777 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
1778 | "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
1779 | "dev": true,
1780 | "optional": true
1781 | },
1782 | "@esbuild/android-x64": {
1783 | "version": "0.21.5",
1784 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
1785 | "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
1786 | "dev": true,
1787 | "optional": true
1788 | },
1789 | "@esbuild/darwin-arm64": {
1790 | "version": "0.21.5",
1791 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
1792 | "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
1793 | "dev": true,
1794 | "optional": true
1795 | },
1796 | "@esbuild/darwin-x64": {
1797 | "version": "0.21.5",
1798 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
1799 | "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
1800 | "dev": true,
1801 | "optional": true
1802 | },
1803 | "@esbuild/freebsd-arm64": {
1804 | "version": "0.21.5",
1805 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
1806 | "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
1807 | "dev": true,
1808 | "optional": true
1809 | },
1810 | "@esbuild/freebsd-x64": {
1811 | "version": "0.21.5",
1812 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
1813 | "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
1814 | "dev": true,
1815 | "optional": true
1816 | },
1817 | "@esbuild/linux-arm": {
1818 | "version": "0.21.5",
1819 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
1820 | "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
1821 | "dev": true,
1822 | "optional": true
1823 | },
1824 | "@esbuild/linux-arm64": {
1825 | "version": "0.21.5",
1826 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
1827 | "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
1828 | "dev": true,
1829 | "optional": true
1830 | },
1831 | "@esbuild/linux-ia32": {
1832 | "version": "0.21.5",
1833 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
1834 | "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
1835 | "dev": true,
1836 | "optional": true
1837 | },
1838 | "@esbuild/linux-loong64": {
1839 | "version": "0.21.5",
1840 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
1841 | "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
1842 | "dev": true,
1843 | "optional": true
1844 | },
1845 | "@esbuild/linux-mips64el": {
1846 | "version": "0.21.5",
1847 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
1848 | "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
1849 | "dev": true,
1850 | "optional": true
1851 | },
1852 | "@esbuild/linux-ppc64": {
1853 | "version": "0.21.5",
1854 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
1855 | "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
1856 | "dev": true,
1857 | "optional": true
1858 | },
1859 | "@esbuild/linux-riscv64": {
1860 | "version": "0.21.5",
1861 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
1862 | "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
1863 | "dev": true,
1864 | "optional": true
1865 | },
1866 | "@esbuild/linux-s390x": {
1867 | "version": "0.21.5",
1868 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
1869 | "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
1870 | "dev": true,
1871 | "optional": true
1872 | },
1873 | "@esbuild/linux-x64": {
1874 | "version": "0.21.5",
1875 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
1876 | "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
1877 | "dev": true,
1878 | "optional": true
1879 | },
1880 | "@esbuild/netbsd-x64": {
1881 | "version": "0.21.5",
1882 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
1883 | "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
1884 | "dev": true,
1885 | "optional": true
1886 | },
1887 | "@esbuild/openbsd-x64": {
1888 | "version": "0.21.5",
1889 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
1890 | "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
1891 | "dev": true,
1892 | "optional": true
1893 | },
1894 | "@esbuild/sunos-x64": {
1895 | "version": "0.21.5",
1896 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
1897 | "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
1898 | "dev": true,
1899 | "optional": true
1900 | },
1901 | "@esbuild/win32-arm64": {
1902 | "version": "0.21.5",
1903 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
1904 | "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
1905 | "dev": true,
1906 | "optional": true
1907 | },
1908 | "@esbuild/win32-ia32": {
1909 | "version": "0.21.5",
1910 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
1911 | "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
1912 | "dev": true,
1913 | "optional": true
1914 | },
1915 | "@esbuild/win32-x64": {
1916 | "version": "0.21.5",
1917 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
1918 | "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
1919 | "dev": true,
1920 | "optional": true
1921 | },
1922 | "@jridgewell/gen-mapping": {
1923 | "version": "0.3.5",
1924 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
1925 | "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
1926 | "dev": true,
1927 | "requires": {
1928 | "@jridgewell/set-array": "^1.2.1",
1929 | "@jridgewell/sourcemap-codec": "^1.4.10",
1930 | "@jridgewell/trace-mapping": "^0.3.24"
1931 | }
1932 | },
1933 | "@jridgewell/resolve-uri": {
1934 | "version": "3.1.2",
1935 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
1936 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
1937 | "dev": true
1938 | },
1939 | "@jridgewell/set-array": {
1940 | "version": "1.2.1",
1941 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
1942 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
1943 | "dev": true
1944 | },
1945 | "@jridgewell/sourcemap-codec": {
1946 | "version": "1.5.0",
1947 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
1948 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
1949 | "dev": true
1950 | },
1951 | "@jridgewell/trace-mapping": {
1952 | "version": "0.3.25",
1953 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
1954 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
1955 | "dev": true,
1956 | "requires": {
1957 | "@jridgewell/resolve-uri": "^3.1.0",
1958 | "@jridgewell/sourcemap-codec": "^1.4.14"
1959 | }
1960 | },
1961 | "@rollup/rollup-android-arm-eabi": {
1962 | "version": "4.22.4",
1963 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz",
1964 | "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==",
1965 | "dev": true,
1966 | "optional": true
1967 | },
1968 | "@rollup/rollup-android-arm64": {
1969 | "version": "4.22.4",
1970 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz",
1971 | "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==",
1972 | "dev": true,
1973 | "optional": true
1974 | },
1975 | "@rollup/rollup-darwin-arm64": {
1976 | "version": "4.22.4",
1977 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz",
1978 | "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==",
1979 | "dev": true,
1980 | "optional": true
1981 | },
1982 | "@rollup/rollup-darwin-x64": {
1983 | "version": "4.22.4",
1984 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz",
1985 | "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==",
1986 | "dev": true,
1987 | "optional": true
1988 | },
1989 | "@rollup/rollup-linux-arm-gnueabihf": {
1990 | "version": "4.22.4",
1991 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz",
1992 | "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==",
1993 | "dev": true,
1994 | "optional": true
1995 | },
1996 | "@rollup/rollup-linux-arm-musleabihf": {
1997 | "version": "4.22.4",
1998 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz",
1999 | "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==",
2000 | "dev": true,
2001 | "optional": true
2002 | },
2003 | "@rollup/rollup-linux-arm64-gnu": {
2004 | "version": "4.22.4",
2005 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz",
2006 | "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==",
2007 | "dev": true,
2008 | "optional": true
2009 | },
2010 | "@rollup/rollup-linux-arm64-musl": {
2011 | "version": "4.22.4",
2012 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz",
2013 | "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==",
2014 | "dev": true,
2015 | "optional": true
2016 | },
2017 | "@rollup/rollup-linux-powerpc64le-gnu": {
2018 | "version": "4.22.4",
2019 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz",
2020 | "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==",
2021 | "dev": true,
2022 | "optional": true
2023 | },
2024 | "@rollup/rollup-linux-riscv64-gnu": {
2025 | "version": "4.22.4",
2026 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz",
2027 | "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==",
2028 | "dev": true,
2029 | "optional": true
2030 | },
2031 | "@rollup/rollup-linux-s390x-gnu": {
2032 | "version": "4.22.4",
2033 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz",
2034 | "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==",
2035 | "dev": true,
2036 | "optional": true
2037 | },
2038 | "@rollup/rollup-linux-x64-gnu": {
2039 | "version": "4.22.4",
2040 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz",
2041 | "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==",
2042 | "dev": true,
2043 | "optional": true
2044 | },
2045 | "@rollup/rollup-linux-x64-musl": {
2046 | "version": "4.22.4",
2047 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz",
2048 | "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==",
2049 | "dev": true,
2050 | "optional": true
2051 | },
2052 | "@rollup/rollup-win32-arm64-msvc": {
2053 | "version": "4.22.4",
2054 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz",
2055 | "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==",
2056 | "dev": true,
2057 | "optional": true
2058 | },
2059 | "@rollup/rollup-win32-ia32-msvc": {
2060 | "version": "4.22.4",
2061 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz",
2062 | "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==",
2063 | "dev": true,
2064 | "optional": true
2065 | },
2066 | "@rollup/rollup-win32-x64-msvc": {
2067 | "version": "4.22.4",
2068 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz",
2069 | "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==",
2070 | "dev": true,
2071 | "optional": true
2072 | },
2073 | "@types/babel__core": {
2074 | "version": "7.20.5",
2075 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
2076 | "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
2077 | "dev": true,
2078 | "requires": {
2079 | "@babel/parser": "^7.20.7",
2080 | "@babel/types": "^7.20.7",
2081 | "@types/babel__generator": "*",
2082 | "@types/babel__template": "*",
2083 | "@types/babel__traverse": "*"
2084 | }
2085 | },
2086 | "@types/babel__generator": {
2087 | "version": "7.6.8",
2088 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
2089 | "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
2090 | "dev": true,
2091 | "requires": {
2092 | "@babel/types": "^7.0.0"
2093 | }
2094 | },
2095 | "@types/babel__template": {
2096 | "version": "7.4.4",
2097 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
2098 | "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
2099 | "dev": true,
2100 | "requires": {
2101 | "@babel/parser": "^7.1.0",
2102 | "@babel/types": "^7.0.0"
2103 | }
2104 | },
2105 | "@types/babel__traverse": {
2106 | "version": "7.20.6",
2107 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
2108 | "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
2109 | "dev": true,
2110 | "requires": {
2111 | "@babel/types": "^7.20.7"
2112 | }
2113 | },
2114 | "@types/estree": {
2115 | "version": "1.0.5",
2116 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
2117 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
2118 | "dev": true
2119 | },
2120 | "@vitejs/plugin-react": {
2121 | "version": "4.3.1",
2122 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz",
2123 | "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==",
2124 | "dev": true,
2125 | "requires": {
2126 | "@babel/core": "^7.24.5",
2127 | "@babel/plugin-transform-react-jsx-self": "^7.24.5",
2128 | "@babel/plugin-transform-react-jsx-source": "^7.24.1",
2129 | "@types/babel__core": "^7.20.5",
2130 | "react-refresh": "^0.14.2"
2131 | }
2132 | },
2133 | "ansi-styles": {
2134 | "version": "3.2.1",
2135 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
2136 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
2137 | "dev": true,
2138 | "requires": {
2139 | "color-convert": "^1.9.0"
2140 | }
2141 | },
2142 | "browserslist": {
2143 | "version": "4.23.3",
2144 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
2145 | "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
2146 | "dev": true,
2147 | "requires": {
2148 | "caniuse-lite": "^1.0.30001646",
2149 | "electron-to-chromium": "^1.5.4",
2150 | "node-releases": "^2.0.18",
2151 | "update-browserslist-db": "^1.1.0"
2152 | }
2153 | },
2154 | "caniuse-lite": {
2155 | "version": "1.0.30001663",
2156 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001663.tgz",
2157 | "integrity": "sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==",
2158 | "dev": true
2159 | },
2160 | "chalk": {
2161 | "version": "2.4.2",
2162 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
2163 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
2164 | "dev": true,
2165 | "requires": {
2166 | "ansi-styles": "^3.2.1",
2167 | "escape-string-regexp": "^1.0.5",
2168 | "supports-color": "^5.3.0"
2169 | }
2170 | },
2171 | "color-convert": {
2172 | "version": "1.9.3",
2173 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
2174 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
2175 | "dev": true,
2176 | "requires": {
2177 | "color-name": "1.1.3"
2178 | }
2179 | },
2180 | "color-name": {
2181 | "version": "1.1.3",
2182 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
2183 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
2184 | "dev": true
2185 | },
2186 | "convert-source-map": {
2187 | "version": "2.0.0",
2188 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
2189 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
2190 | "dev": true
2191 | },
2192 | "debug": {
2193 | "version": "4.3.7",
2194 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
2195 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
2196 | "dev": true,
2197 | "requires": {
2198 | "ms": "^2.1.3"
2199 | }
2200 | },
2201 | "electron-to-chromium": {
2202 | "version": "1.5.28",
2203 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.28.tgz",
2204 | "integrity": "sha512-VufdJl+rzaKZoYVUijN13QcXVF5dWPZANeFTLNy+OSpHdDL5ynXTF35+60RSBbaQYB1ae723lQXHCrf4pyLsMw==",
2205 | "dev": true
2206 | },
2207 | "esbuild": {
2208 | "version": "0.21.5",
2209 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
2210 | "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
2211 | "dev": true,
2212 | "requires": {
2213 | "@esbuild/aix-ppc64": "0.21.5",
2214 | "@esbuild/android-arm": "0.21.5",
2215 | "@esbuild/android-arm64": "0.21.5",
2216 | "@esbuild/android-x64": "0.21.5",
2217 | "@esbuild/darwin-arm64": "0.21.5",
2218 | "@esbuild/darwin-x64": "0.21.5",
2219 | "@esbuild/freebsd-arm64": "0.21.5",
2220 | "@esbuild/freebsd-x64": "0.21.5",
2221 | "@esbuild/linux-arm": "0.21.5",
2222 | "@esbuild/linux-arm64": "0.21.5",
2223 | "@esbuild/linux-ia32": "0.21.5",
2224 | "@esbuild/linux-loong64": "0.21.5",
2225 | "@esbuild/linux-mips64el": "0.21.5",
2226 | "@esbuild/linux-ppc64": "0.21.5",
2227 | "@esbuild/linux-riscv64": "0.21.5",
2228 | "@esbuild/linux-s390x": "0.21.5",
2229 | "@esbuild/linux-x64": "0.21.5",
2230 | "@esbuild/netbsd-x64": "0.21.5",
2231 | "@esbuild/openbsd-x64": "0.21.5",
2232 | "@esbuild/sunos-x64": "0.21.5",
2233 | "@esbuild/win32-arm64": "0.21.5",
2234 | "@esbuild/win32-ia32": "0.21.5",
2235 | "@esbuild/win32-x64": "0.21.5"
2236 | }
2237 | },
2238 | "escalade": {
2239 | "version": "3.2.0",
2240 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
2241 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
2242 | "dev": true
2243 | },
2244 | "escape-string-regexp": {
2245 | "version": "1.0.5",
2246 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
2247 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
2248 | "dev": true
2249 | },
2250 | "fsevents": {
2251 | "version": "2.3.3",
2252 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
2253 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
2254 | "dev": true,
2255 | "optional": true
2256 | },
2257 | "gensync": {
2258 | "version": "1.0.0-beta.2",
2259 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
2260 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
2261 | "dev": true
2262 | },
2263 | "globals": {
2264 | "version": "11.12.0",
2265 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
2266 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
2267 | "dev": true
2268 | },
2269 | "has-flag": {
2270 | "version": "3.0.0",
2271 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
2272 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
2273 | "dev": true
2274 | },
2275 | "js-tokens": {
2276 | "version": "4.0.0",
2277 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
2278 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
2279 | },
2280 | "jsesc": {
2281 | "version": "2.5.2",
2282 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
2283 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
2284 | "dev": true
2285 | },
2286 | "json5": {
2287 | "version": "2.2.3",
2288 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
2289 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
2290 | "dev": true
2291 | },
2292 | "loose-envify": {
2293 | "version": "1.4.0",
2294 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
2295 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
2296 | "requires": {
2297 | "js-tokens": "^3.0.0 || ^4.0.0"
2298 | }
2299 | },
2300 | "lru-cache": {
2301 | "version": "5.1.1",
2302 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
2303 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
2304 | "dev": true,
2305 | "requires": {
2306 | "yallist": "^3.0.2"
2307 | }
2308 | },
2309 | "ms": {
2310 | "version": "2.1.3",
2311 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
2312 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
2313 | "dev": true
2314 | },
2315 | "nanoid": {
2316 | "version": "3.3.7",
2317 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
2318 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
2319 | "dev": true
2320 | },
2321 | "node-releases": {
2322 | "version": "2.0.18",
2323 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
2324 | "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
2325 | "dev": true
2326 | },
2327 | "picocolors": {
2328 | "version": "1.1.0",
2329 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
2330 | "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
2331 | "dev": true
2332 | },
2333 | "postcss": {
2334 | "version": "8.4.47",
2335 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
2336 | "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
2337 | "dev": true,
2338 | "requires": {
2339 | "nanoid": "^3.3.7",
2340 | "picocolors": "^1.1.0",
2341 | "source-map-js": "^1.2.1"
2342 | }
2343 | },
2344 | "react": {
2345 | "version": "18.2.0",
2346 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
2347 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
2348 | "requires": {
2349 | "loose-envify": "^1.1.0"
2350 | }
2351 | },
2352 | "react-dom": {
2353 | "version": "18.2.0",
2354 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
2355 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
2356 | "requires": {
2357 | "loose-envify": "^1.1.0",
2358 | "scheduler": "^0.23.0"
2359 | }
2360 | },
2361 | "react-refresh": {
2362 | "version": "0.14.2",
2363 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
2364 | "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
2365 | "dev": true
2366 | },
2367 | "rollup": {
2368 | "version": "4.22.4",
2369 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz",
2370 | "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==",
2371 | "dev": true,
2372 | "requires": {
2373 | "@rollup/rollup-android-arm-eabi": "4.22.4",
2374 | "@rollup/rollup-android-arm64": "4.22.4",
2375 | "@rollup/rollup-darwin-arm64": "4.22.4",
2376 | "@rollup/rollup-darwin-x64": "4.22.4",
2377 | "@rollup/rollup-linux-arm-gnueabihf": "4.22.4",
2378 | "@rollup/rollup-linux-arm-musleabihf": "4.22.4",
2379 | "@rollup/rollup-linux-arm64-gnu": "4.22.4",
2380 | "@rollup/rollup-linux-arm64-musl": "4.22.4",
2381 | "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4",
2382 | "@rollup/rollup-linux-riscv64-gnu": "4.22.4",
2383 | "@rollup/rollup-linux-s390x-gnu": "4.22.4",
2384 | "@rollup/rollup-linux-x64-gnu": "4.22.4",
2385 | "@rollup/rollup-linux-x64-musl": "4.22.4",
2386 | "@rollup/rollup-win32-arm64-msvc": "4.22.4",
2387 | "@rollup/rollup-win32-ia32-msvc": "4.22.4",
2388 | "@rollup/rollup-win32-x64-msvc": "4.22.4",
2389 | "@types/estree": "1.0.5",
2390 | "fsevents": "~2.3.2"
2391 | }
2392 | },
2393 | "scheduler": {
2394 | "version": "0.23.0",
2395 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
2396 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
2397 | "requires": {
2398 | "loose-envify": "^1.1.0"
2399 | }
2400 | },
2401 | "semver": {
2402 | "version": "6.3.1",
2403 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
2404 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
2405 | "dev": true
2406 | },
2407 | "source-map-js": {
2408 | "version": "1.2.1",
2409 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
2410 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
2411 | "dev": true
2412 | },
2413 | "supports-color": {
2414 | "version": "5.5.0",
2415 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2416 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2417 | "dev": true,
2418 | "requires": {
2419 | "has-flag": "^3.0.0"
2420 | }
2421 | },
2422 | "to-fast-properties": {
2423 | "version": "2.0.0",
2424 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
2425 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
2426 | "dev": true
2427 | },
2428 | "update-browserslist-db": {
2429 | "version": "1.1.0",
2430 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
2431 | "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
2432 | "dev": true,
2433 | "requires": {
2434 | "escalade": "^3.1.2",
2435 | "picocolors": "^1.0.1"
2436 | }
2437 | },
2438 | "vite": {
2439 | "version": "5.4.7",
2440 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.7.tgz",
2441 | "integrity": "sha512-5l2zxqMEPVENgvzTuBpHer2awaetimj2BGkhBPdnwKbPNOlHsODU+oiazEZzLK7KhAnOrO+XGYJYn4ZlUhDtDQ==",
2442 | "dev": true,
2443 | "requires": {
2444 | "esbuild": "^0.21.3",
2445 | "fsevents": "~2.3.3",
2446 | "postcss": "^8.4.43",
2447 | "rollup": "^4.20.0"
2448 | }
2449 | },
2450 | "yallist": {
2451 | "version": "3.1.1",
2452 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
2453 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
2454 | "dev": true
2455 | }
2456 | }
2457 | }
2458 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "postinstall": "dotnet tool restore",
5 | "start": "dotnet build src && dotnet fable watch test -s -o dist --run vite",
6 | "publish": "dotnet fsi build.fsx publish"
7 | },
8 | "dependencies": {
9 | "react": "^18.2.0",
10 | "react-dom": "^18.2.0"
11 | },
12 | "devDependencies": {
13 | "vite": "^5.4.7",
14 | "@vitejs/plugin-react": "^4.3.1"
15 | }
16 | }
--------------------------------------------------------------------------------
/public/fable.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fable-compiler/Fable.JsonProvider/595c0977e4735290f724ccd08b5757e98c81028e/public/fable.ico
--------------------------------------------------------------------------------
/public/test.json:
--------------------------------------------------------------------------------
1 | {
2 | "glossary": {
3 | "title": "example glossary",
4 | "GlossDiv": {
5 | "title": "S",
6 | "GlossList": {
7 | "GlossEntry": {
8 | "ID": "SGML",
9 | "SortAs": "SGML",
10 | "GlossTerm": "Standard Generalized Markup Language",
11 | "Acronym": "SGML",
12 | "Abbrev": "ISO 8879:1986",
13 | "GlossDef": {
14 | "para": "A meta-markup language, used to create markup languages such as DocBook.",
15 | "GlossSeeAlso": ["GML", "XML"]
16 | },
17 | "GlossSee": "markup"
18 | }
19 | }
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/src/Fable.JsonProvider.fs:
--------------------------------------------------------------------------------
1 | namespace Fable.Core
2 |
3 | type EmitAttribute(macro: string) =
4 | inherit System.Attribute()
5 |
6 | namespace Fable
7 |
8 | module JsonProvider =
9 |
10 | open System.Collections.Generic
11 | open System.IO
12 | open System.Net
13 | open System.Net.Http
14 | open System.Text.RegularExpressions
15 | open FSharp.Quotations
16 | open FSharp.Core.CompilerServices
17 | open ProviderImplementation.ProvidedTypes
18 |
19 | open ProviderDsl
20 | open Fable.Core
21 |
22 | []
23 | let jsonParse (json: string) = obj()
24 |
25 | []
26 | let getProp (o: obj) (k: string) = obj()
27 |
28 | let fetchUrlAsync (url: string) =
29 | task {
30 | use handler = new HttpClientHandler(AutomaticDecompression=(DecompressionMethods.GZip ||| DecompressionMethods.Deflate))
31 | use client = new HttpClient(handler)
32 | let! resp = client.GetAsync(url)
33 | use! stream = resp.Content.ReadAsStreamAsync()
34 | use reader = new StreamReader(stream)
35 | return reader.ReadToEnd()
36 | }
37 |
38 | let firstToUpper (s: string) =
39 | s.[0..0].ToUpper() + s.[1..]
40 |
41 | let getterCode name =
42 | fun (args: Expr list) -> <@@ getProp %%args.Head name @@>
43 |
44 | let rec makeType typeName json =
45 | match json with
46 | | JsonParser.Null -> Any
47 | | JsonParser.Bool _ -> Bool
48 | | JsonParser.Number _ -> Float
49 | | JsonParser.String _ -> String
50 | | JsonParser.Array items ->
51 | match items with
52 | | [] -> Array Any
53 | // TODO: Check if all items have same type
54 | | item::_ -> makeType typeName item |> Array
55 | | JsonParser.Object members ->
56 | let members = members |> List.collect (makeMember typeName)
57 | makeCustomType(typeName, members) |> Custom
58 |
59 | and makeMember ns (name, json) =
60 | let t = makeType (firstToUpper name) json
61 | let m = Property(name, t, false, getterCode name)
62 | let rec makeMember' = function
63 | | Custom t' -> [ChildType t'; m]
64 | | Array t' -> makeMember' t'
65 | | _ -> [m]
66 | makeMember' t
67 |
68 | let parseJson asm ns typeName (sample: string) =
69 | let makeRootType withCons basicMembers =
70 | makeRootType(asm, ns, typeName, [
71 | yield! basicMembers |> Seq.collect (makeMember "")
72 | if withCons then
73 | yield Constructor(["json", String], fun args -> <@@ jsonParse %%args.Head @@>)
74 | ])
75 | try
76 | match JsonParser.parse sample with
77 | | Some(JsonParser.Object members) ->
78 | makeRootType true members |> Ok
79 | | Some(JsonParser.Array((JsonParser.Object members)::_)) ->
80 | let t = makeRootType false members
81 | let array = t.MakeArrayType() |> Custom
82 | [Method("ParseArray", ["json", String], array, true, fun args -> <@@ jsonParse %%args.Head @@>)]
83 | |> addMembers t
84 | Ok t
85 | | _ -> Error "Expecting a JSON object or an array containing an object"
86 | with e ->
87 | Error e.Message
88 |
89 | []
90 | type public JsonProvider (config : TypeProviderConfig) as this =
91 | inherit TypeProviderForNamespaces (config)
92 | let asm = System.Reflection.Assembly.GetExecutingAssembly()
93 | let ns = "Fable.JsonProvider"
94 |
95 | let staticParams = [ProvidedStaticParameter("sample",typeof)]
96 | let generator = ProvidedTypeDefinition(asm, ns, "Generator", Some typeof, isErased = true)
97 |
98 | do
99 | try
100 | generator.DefineStaticParameters(
101 | parameters = staticParams,
102 | instantiationFunction = (fun typeName pVals ->
103 | match pVals with
104 | | [| :? string as arg|] ->
105 | let arg = arg.Trim()
106 | if Regex.IsMatch(arg, "^https?://") then
107 | let res = fetchUrlAsync(arg).Result
108 | match parseJson asm ns typeName res with
109 | | Ok t -> t
110 | | Error e -> failwith $"Response from URL %s{arg} is not a valid JSON (%s{e}): %s{res}"
111 | else
112 | let content =
113 | // Check if the string is a JSON literal
114 | if arg.StartsWith("{") || arg.StartsWith("[") then arg
115 | else
116 | let filepath =
117 | if Path.IsPathRooted arg then arg
118 | else
119 | Path.GetFullPath(Path.Combine(config.ResolutionFolder, arg))
120 | File.ReadAllText(filepath,System.Text.Encoding.UTF8)
121 |
122 | match parseJson asm ns typeName content with
123 | | Ok t -> t
124 | | Error e -> failwith $"Local sample is not a valid JSON (%s{e})"
125 | | _ -> failwith "unexpected parameter values"
126 | )
127 | )
128 | this.AddNamespace(ns, [generator])
129 | with e ->
130 | printfn "%s" e.Message
131 |
132 | []
133 | do ()
--------------------------------------------------------------------------------
/src/Fable.JsonProvider.fsproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1.1.1
5 | 1.1.1
6 | true
7 | netstandard2.0
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/JsonParser.fs:
--------------------------------------------------------------------------------
1 | // JsonParser by Jon Harrop: https://gist.github.com/jdh30/50741cd6d094004203b1dce019726ebb
2 | module JsonParser
3 |
4 | type Json =
5 | | Null
6 | | Bool of bool
7 | | Number of float
8 | | String of string
9 | | Array of Json list
10 | | Object of (string * Json) list
11 |
12 | type Bracket = Open | Close
13 |
14 | type Token =
15 | | LITERAL of Json
16 | | ARRAY of Bracket
17 | | OBJECT of Bracket
18 |
19 | let (|C|_|) (s: string, i) =
20 | if i < s.Length then Some(s.[i], (s, i+1)) else None
21 |
22 | let numeric = set ['0'..'9'] + set ['+'; '-'; '.'; 'e'; 'E']
23 | let whitespace = set [','; ':'; '\u0009'; '\u000a'; '\u000d'; '\u0020']
24 |
25 | let (|Contains|_|) alphabet = function
26 | | C(c, it) when Set.contains c alphabet -> Some it
27 | | _ -> None
28 |
29 | let rec (|Star|) (|Patt|_|) = function
30 | | Patt(x, Star (|Patt|_|) (xs, it)) -> x::xs, it
31 | | it -> [], it
32 |
33 | let rec (|LexNumber|_|) = function
34 | | Contains numeric (LexNumber it | it) -> Some it
35 | | _ -> None
36 |
37 | // This can cause Stack Overflow for long strings
38 | // let rec (|LexString|) = function
39 | // | C('"', it)
40 | // | C('\\', C(('"' | '\\' | '/' | 'b' | 'n' | 'r' | 't'), LexString it))
41 | // | C('\\', C('u', C(_, C(_, C(_, C(_, LexString it))))))
42 | // | C(_, LexString it)
43 | // | it -> it
44 |
45 | let (|LexString|) (s: string, start: int) =
46 | let mutable i = start
47 | let mutable finished = false
48 | while not finished do
49 | match s, i with
50 | | C('"', (_, i2)) ->
51 | i <- i2
52 | finished <- true
53 | | C('\\', C(('"' | '\\' | '/' | 'b' | 'n' | 'r' | 't'), (_, i2)))
54 | | C('\\', C('u', C(_, C(_, C(_, C(_, (_, i2)))))))
55 | | C(_, (_, i2)) ->
56 | i <- i2
57 | | _ ->
58 | finished <- true
59 | s, i
60 |
61 | let rec (|Lex|_|) = function
62 | | Contains whitespace it -> (|Lex|_|) it
63 | | C('n', C('u', C('l', C('l', it)))) -> Some(LITERAL Null, it)
64 | | C('t', C('r', C('u', C('e', it)))) -> Some(LITERAL(Bool true), it)
65 | | C('f', C('a', C('l', C('s', C('e', it))))) -> Some(LITERAL(Bool false), it)
66 | | LexNumber((s, last) as it) & (_, first) ->
67 | Some(LITERAL(Number(float s.[first..last-1])), it)
68 | | C('"', (LexString(it & (s, last)) & (_, first))) ->
69 | let s = System.Text.RegularExpressions.Regex.Unescape s.[first..last-2]
70 | Some(LITERAL(String s), it)
71 | | C('[', it) -> Some(ARRAY Open, it)
72 | | C(']', it) -> Some(ARRAY Close, it)
73 | | C('{', it) -> Some(OBJECT Open, it)
74 | | C('}', it) -> Some(OBJECT Close, it)
75 | | _ -> None
76 |
77 | let rec (|ParseJSON|_|) = function
78 | | Lex(LITERAL json, it) -> Some(json, it)
79 | | Lex(ARRAY Open, Star (|ParseJSON|_|) (jsons, Lex(ARRAY Close, it))) ->
80 | Some(Array jsons, it)
81 | | Lex(OBJECT Open, Star (|ParseMember|_|) (members, Lex(OBJECT Close, it))) ->
82 | Some(Object members, it)
83 | | _ -> None
84 |
85 | and (|ParseMember|_|) = function
86 | | Lex(LITERAL(String key), ParseJSON(value, it)) -> Some((key, value), it)
87 | | _ -> None
88 |
89 | let parse s = (|ParseJSON|_|) (s, 0) |> Option.map fst
--------------------------------------------------------------------------------
/src/ProviderDsl.fs:
--------------------------------------------------------------------------------
1 | module rec ProviderDsl
2 |
3 | open System.Reflection
4 | open FSharp.Quotations
5 | open ProviderImplementation.ProvidedTypes
6 |
7 | type Member =
8 | | ChildType of System.Type
9 | | Property of name: string * typ: ErasedType * isStatic: bool * body: (Expr list -> Expr)
10 | | Method of name: string * args: (string * ErasedType) list * typ: ErasedType * isStatic: bool * body: (Expr list -> Expr)
11 | | Constructor of args: (string * ErasedType) list * body: (Expr list -> Expr)
12 |
13 | type ErasedType =
14 | | Any
15 | | Bool
16 | | Int
17 | | Float
18 | | String
19 | | Array of ErasedType
20 | | Option of ErasedType
21 | | Custom of System.Type
22 | | Tuple of ErasedType list
23 |
24 | let addMembers (t: ProvidedTypeDefinition) members =
25 | for memb in members do
26 | let memb: MemberInfo =
27 | match memb with
28 | | ChildType t ->
29 | upcast t
30 | | Property(name, typ, isStatic, body) ->
31 | upcast ProvidedProperty(name, makeType typ, isStatic = isStatic, getterCode = body)
32 | | Method(name, args, typ, isStatic, body) ->
33 | let args = args |> List.map (fun (name, t) -> ProvidedParameter(name, makeType t))
34 | upcast ProvidedMethod(name, args, makeType typ, isStatic = isStatic, invokeCode = body)
35 | | Constructor(args, body) ->
36 | let args = args |> List.map (fun (name, t) -> ProvidedParameter(name, makeType t))
37 | upcast ProvidedConstructor(args, invokeCode = body)
38 | t.AddMember(memb)
39 |
40 | let makeType = function
41 | | Any -> typeof
42 | | Bool -> typeof
43 | | Int -> typeof
44 | | Float -> typeof
45 | | String -> typeof
46 | | Array t -> (makeType t).MakeArrayType()
47 | | Option t -> typedefof