From c94705257433b0921690bef009f295732bb5b600 Mon Sep 17 00:00:00 2001 From: josc146 Date: Wed, 17 May 2023 11:39:00 +0800 Subject: [PATCH] preliminary usable features --- .vscode/settings.json | 7 + backend-golang/rwkv.go | 10 +- backend-python/global_var.py | 5 +- backend-python/main.py | 7 +- backend-python/routes/completion.py | 93 +- backend-python/routes/config.py | 47 +- backend-python/utils/ngrok.py | 1 + backend-python/utils/rwkv.py | 32 + backend-python/utils/torch.py | 4 +- frontend/package-lock.json | 1781 +++++++++---------- frontend/package.json | 18 +- frontend/src/App.tsx | 3 +- frontend/src/apis/index.ts | 34 + frontend/src/components/RunButton.tsx | 51 +- frontend/src/pages/Configs.tsx | 36 +- frontend/src/pages/Home.tsx | 6 +- frontend/src/stores/commonStore.ts | 16 +- frontend/wailsjs/go/backend_golang/App.d.ts | 2 +- frontend/wailsjs/go/backend_golang/App.js | 4 +- go.mod | 39 +- go.sum | 71 +- 21 files changed, 1187 insertions(+), 1080 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 frontend/src/apis/index.ts diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..46bd03c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "[python]": { + "editor.defaultFormatter": "ms-python.black-formatter" + }, + "python.formatting.provider": "black", + "editor.formatOnSave": true +} \ No newline at end of file diff --git a/backend-golang/rwkv.go b/backend-golang/rwkv.go index df51334..3ed4b62 100644 --- a/backend-golang/rwkv.go +++ b/backend-golang/rwkv.go @@ -2,10 +2,16 @@ package backend_golang import ( "os/exec" + "path/filepath" + "strconv" ) -func (a *App) StartServer(strategy string, modelPath string) (string, error) { - cmd := exec.Command("cmd-helper", "python", "./backend-python/main.py", strategy, modelPath) +func (a *App) StartServer(port int) (string, error) { + cmdHelper, err := filepath.Abs("./cmd-helper") + if err != nil { + return "", err + } + cmd := exec.Command(cmdHelper, "python", "./backend-python/main.py", strconv.Itoa(port)) out, err := cmd.CombinedOutput() if err != nil { return "", err diff --git a/backend-python/global_var.py b/backend-python/global_var.py index 7a3b879..9eee59c 100644 --- a/backend-python/global_var.py +++ b/backend-python/global_var.py @@ -1,7 +1,8 @@ from enum import Enum, auto -Model = 'model' -Model_Status = 'model_status' +Model = "model" +Model_Status = "model_status" +Model_Config = "model_config" class ModelStatus(Enum): diff --git a/backend-python/main.py b/backend-python/main.py index 5acd5dd..1092a7c 100644 --- a/backend-python/main.py +++ b/backend-python/main.py @@ -1,5 +1,6 @@ import os import psutil +import sys from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware @@ -26,7 +27,7 @@ app.include_router(completion.router) app.include_router(config.router) -@app.on_event('startup') +@app.on_event("startup") def init(): global_var.init() @@ -38,7 +39,7 @@ def init(): @app.get("/") def read_root(): - return {"Hello": "World!"} + return {"Hello": "World!", "pid": os.getpid()} @app.post("/exit") @@ -51,4 +52,4 @@ def exit(): if __name__ == "__main__": - uvicorn.run("main:app", port=8000) + uvicorn.run("main:app", port=8000 if len(sys.argv) == 1 else int(sys.argv[1])) diff --git a/backend-python/routes/completion.py b/backend-python/routes/completion.py index f89f9cd..6598c81 100644 --- a/backend-python/routes/completion.py +++ b/backend-python/routes/completion.py @@ -1,4 +1,6 @@ +import asyncio import json +from threading import Lock from typing import List from fastapi import APIRouter, Request, status, HTTPException @@ -15,46 +17,99 @@ class Message(BaseModel): content: str -class CompletionBody(BaseModel): +class CompletionBody(ModelConfigBody): messages: List[Message] model: str stream: bool - max_tokens: int + + +completion_lock = Lock() @router.post("/v1/chat/completions") @router.post("/chat/completions") async def completions(body: CompletionBody, request: Request): - model = global_var.get(global_var.Model) - if (model is None): + model: RWKV = global_var.get(global_var.Model) + if model is None: raise HTTPException(status.HTTP_400_BAD_REQUEST, "model not loaded") question = body.messages[-1] - if question.role == 'user': + if question.role == "user": question = question.content else: raise HTTPException(status.HTTP_400_BAD_REQUEST, "no question found") completion_text = "" for message in body.messages: - if message.role == 'user': + if message.role == "user": completion_text += "Bob: " + message.content + "\n\n" - elif message.role == 'assistant': + elif message.role == "assistant": completion_text += "Alice: " + message.content + "\n\n" completion_text += "Alice:" async def eval_rwkv(): - if body.stream: - for response, delta in rwkv_generate(model, completion_text, stop="Bob:"): - if await request.is_disconnected(): - break - yield json.dumps({"response": response, "choices": [{"delta": {"content": delta}}], "model": "rwkv"}) - yield "[DONE]" + while completion_lock.locked(): + await asyncio.sleep(0.1) else: - response = None - for response, delta in rwkv_generate(model, completion_text, stop="Bob:"): - pass - yield json.dumps({"response": response, "model": "rwkv"}) - # torch_gc() + with completion_lock: + set_rwkv_config(model, global_var.get(global_var.Model_Config)) + set_rwkv_config(model, body) + if body.stream: + for response, delta in rwkv_generate( + model, completion_text, stop="Bob:" + ): + if await request.is_disconnected(): + break + yield json.dumps( + { + "response": response, + "model": "rwkv", + "choices": [ + { + "delta": {"content": delta}, + "index": 0, + "finish_reason": None, + } + ], + } + ) + yield json.dumps( + { + "response": response, + "model": "rwkv", + "choices": [ + { + "delta": {}, + "index": 0, + "finish_reason": "stop", + } + ], + } + ) + yield "[DONE]" + else: + response = None + for response, delta in rwkv_generate( + model, completion_text, stop="Bob:" + ): + pass + yield { + "response": response, + "model": "rwkv", + "choices": [ + { + "message": { + "role": "assistant", + "content": response, + }, + "index": 0, + "finish_reason": "stop", + } + ], + } + # torch_gc() - return EventSourceResponse(eval_rwkv()) + if body.stream: + return EventSourceResponse(eval_rwkv()) + else: + return await eval_rwkv().__anext__() diff --git a/backend-python/routes/config.py b/backend-python/routes/config.py index e6ddb56..2ad6977 100644 --- a/backend-python/routes/config.py +++ b/backend-python/routes/config.py @@ -1,5 +1,4 @@ import pathlib -import sys from fastapi import APIRouter, HTTPException, Response, status from pydantic import BaseModel @@ -11,19 +10,14 @@ import global_var router = APIRouter() -class UpdateConfigBody(BaseModel): - model: str = None - strategy: str = None - max_response_token: int = None - temperature: float = None - top_p: float = None - presence_penalty: float = None - count_penalty: float = None +class SwitchModelBody(BaseModel): + model: str + strategy: str -@router.post("/update-config") -def update_config(body: UpdateConfigBody, response: Response): - if (global_var.get(global_var.Model_Status) is global_var.ModelStatus.Loading): +@router.post("/switch-model") +def switch_model(body: SwitchModelBody, response: Response): + if global_var.get(global_var.Model_Status) is global_var.ModelStatus.Loading: response.status_code = status.HTTP_304_NOT_MODIFIED return @@ -33,15 +27,34 @@ def update_config(body: UpdateConfigBody, response: Response): global_var.set(global_var.Model_Status, global_var.ModelStatus.Loading) try: - global_var.set(global_var.Model, RWKV( - model=sys.argv[2], - strategy=sys.argv[1], - tokens_path=f"{pathlib.Path(__file__).parent.parent.resolve()}/20B_tokenizer.json" - )) + global_var.set( + global_var.Model, + RWKV( + model=body.model, + strategy=body.strategy, + tokens_path=f"{pathlib.Path(__file__).parent.parent.resolve()}/20B_tokenizer.json", + ), + ) except Exception: global_var.set(global_var.Model_Status, global_var.ModelStatus.Offline) raise HTTPException(status.HTTP_500_INTERNAL_SERVER_ERROR, "failed to load") + if global_var.get(global_var.Model_Config) is None: + global_var.set( + global_var.Model_Config, get_rwkv_config(global_var.get(global_var.Model)) + ) global_var.set(global_var.Model_Status, global_var.ModelStatus.Working) return "success" + + +@router.post("/update-config") +def update_config(body: ModelConfigBody): + """ + Will not update the model config immediately, but set it when completion called to avoid modifications during generation + """ + + print(body) + global_var.set(global_var.Model_Config, body) + + return "success" diff --git a/backend-python/utils/ngrok.py b/backend-python/utils/ngrok.py index 463fcd0..5364b4c 100644 --- a/backend-python/utils/ngrok.py +++ b/backend-python/utils/ngrok.py @@ -3,6 +3,7 @@ import os def ngrok_connect(): from pyngrok import ngrok, conf + conf.set_default(conf.PyngrokConfig(ngrok_path="./ngrok")) ngrok.set_auth_token(os.environ["ngrok_token"]) http_tunnel = ngrok.connect(8000) diff --git a/backend-python/utils/rwkv.py b/backend-python/utils/rwkv.py index 246476d..a03e258 100644 --- a/backend-python/utils/rwkv.py +++ b/backend-python/utils/rwkv.py @@ -1,5 +1,37 @@ from typing import Dict from langchain.llms import RWKV +from pydantic import BaseModel + + +class ModelConfigBody(BaseModel): + max_tokens: int = None + temperature: float = None + top_p: float = None + presence_penalty: float = None + frequency_penalty: float = None + + +def set_rwkv_config(model: RWKV, body: ModelConfigBody): + if body.max_tokens: + model.max_tokens_per_generation = body.max_tokens + if body.temperature: + model.temperature = body.temperature + if body.top_p: + model.top_p = body.top_p + if body.presence_penalty: + model.penalty_alpha_presence = body.presence_penalty + if body.frequency_penalty: + model.penalty_alpha_frequency = body.frequency_penalty + + +def get_rwkv_config(model: RWKV) -> ModelConfigBody: + return ModelConfigBody( + max_tokens=model.max_tokens_per_generation, + temperature=model.temperature, + top_p=model.top_p, + presence_penalty=model.penalty_alpha_presence, + frequency_penalty=model.penalty_alpha_frequency, + ) def rwkv_generate(model: RWKV, prompt: str, stop: str = None): diff --git a/backend-python/utils/torch.py b/backend-python/utils/torch.py index 21473c4..af2afe6 100644 --- a/backend-python/utils/torch.py +++ b/backend-python/utils/torch.py @@ -11,8 +11,8 @@ def set_torch(): print("torch already set") else: print("run:") - os.environ['PATH'] = paths + os.pathsep + torch_path + os.pathsep - print(f'set Path={paths + os.pathsep + torch_path + os.pathsep}') + os.environ["PATH"] = paths + os.pathsep + torch_path + os.pathsep + print(f"set Path={paths + os.pathsep + torch_path + os.pathsep}") else: print("torch not found") diff --git a/frontend/package-lock.json b/frontend/package-lock.json index bd53bd1..ff1934e 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,27 +8,27 @@ "name": "frontend", "version": "0.0.0", "dependencies": { - "@fluentui/react-components": "^9.19.1", + "@fluentui/react-components": "^9.20.0", "@fluentui/react-icons": "^2.0.201", "mobx": "^6.9.0", "mobx-react-lite": "^3.4.3", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router": "^6.11.0", - "react-router-dom": "^6.11.0", - "react-toastify": "^9.1.2", + "react-router": "^6.11.1", + "react-router-dom": "^6.11.1", + "react-toastify": "^9.1.3", "usehooks-ts": "^2.9.1" }, "devDependencies": { - "@types/react": "^18.0.17", - "@types/react-dom": "^18.0.6", - "@vitejs/plugin-react": "^2.0.1", + "@types/react": "^18.2.6", + "@types/react-dom": "^18.2.4", + "@vitejs/plugin-react": "^4.0.0", "autoprefixer": "^10.4.14", "postcss": "^8.4.23", "rollup-plugin-visualizer": "^5.9.0", "tailwindcss": "^3.3.2", - "typescript": "^4.6.4", - "vite": "^3.0.7" + "typescript": "^5.0.4", + "vite": "^4.3.6" } }, "node_modules/@alloc/quick-lru": { @@ -115,18 +115,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { "version": "7.21.5", "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz", @@ -311,55 +299,6 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.21.4", - "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", - "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.21.5", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.5.tgz", - "integrity": "sha512-ELdlq61FpoEkHO6gFRpfj0kUgSwQTGoaEU8eMRoS8Dv3v6e7BjEAj5WMtIBRdHUeAioMhKP5HyxNzNnP+heKbA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-plugin-utils": "^7.21.5", - "@babel/plugin-syntax-jsx": "^7.21.4", - "@babel/types": "^7.21.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.18.6", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", - "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", - "dev": true, - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.21.0", "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", @@ -456,9 +395,9 @@ "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" }, "node_modules/@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", "cpu": [ "arm" ], @@ -471,10 +410,154 @@ "node": ">=12" } }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", "cpu": [ "loong64" ], @@ -487,48 +570,224 @@ "node": ">=12" } }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@floating-ui/core": { "version": "1.2.6", "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.2.6.tgz", "integrity": "sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg==" }, "node_modules/@floating-ui/dom": { - "version": "1.2.7", - "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.2.7.tgz", - "integrity": "sha512-DyqylONj1ZaBnzj+uBnVfzdjjCkFCL2aA9ESHLyUOGSqb03RpbLMImP1ekIQXYs4KLk9jAjJfZAU8hXfWSahEg==", + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.2.8.tgz", + "integrity": "sha512-XLwhYV90MxiHDq6S0rzFZj00fnDM+A1R9jhSioZoMsa7G0Q0i+Q4x40ajR8FHSdYDE1bgjG45mIWe6jtv9UPmg==", "dependencies": { "@floating-ui/core": "^1.2.6" } }, "node_modules/@fluentui/keyboard-keys": { - "version": "9.0.2", - "resolved": "https://registry.npmmirror.com/@fluentui/keyboard-keys/-/keyboard-keys-9.0.2.tgz", - "integrity": "sha512-yB+mD96zhFnKyHCJ0AfTjSwA56LJtossToKSZbCEN38X3457TL2v8F9vzTrcO6Ha01n9YLcJ0O5ZgNIKrpP8fg==", + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/@fluentui/keyboard-keys/-/keyboard-keys-9.0.3.tgz", + "integrity": "sha512-40KBVJ9HzsvmPL3rwYaAvxCacNS0xnTmOt6TLxxrAVgVrZ1X7DLgd8OGFZcWROs0dhHdCk2D51bl4nK8Q1r3mQ==", "dependencies": { "@swc/helpers": "^0.4.14" } }, "node_modules/@fluentui/priority-overflow": { - "version": "9.0.2", - "resolved": "https://registry.npmmirror.com/@fluentui/priority-overflow/-/priority-overflow-9.0.2.tgz", - "integrity": "sha512-vQBIMpXaHhsgA5l+3yDkPjL7PzEiJubtSaO76P3WPdAB7iEGlQ5Fmw6ebvwce7bLWacLPC177nWCwqdGz2pr7g==", + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/@fluentui/priority-overflow/-/priority-overflow-9.0.3.tgz", + "integrity": "sha512-lOUfZX3PMyb+nHWcNGQu+EBz2cvRxHgTObG97UTmGBB0nL0cEJCqVL7PKVWhto7zp3moSgRUWyUN/EQVVpZ/hg==", "dependencies": { "@swc/helpers": "^0.4.14" } }, "node_modules/@fluentui/react-accordion": { - "version": "9.1.10", - "resolved": "https://registry.npmmirror.com/@fluentui/react-accordion/-/react-accordion-9.1.10.tgz", - "integrity": "sha512-udUTjhNYaEhnRYJg86AST9f2ml9VGEMPMuXP2NKIoq0V2vzLaHBSIflgBzyukrFGMzoLc+1l7NdKLdCekZgw4w==", + "version": "9.1.11", + "resolved": "https://registry.npmmirror.com/@fluentui/react-accordion/-/react-accordion-9.1.11.tgz", + "integrity": "sha512-EXNdAZVhW1iGwTOgdp/FHoc0wuMDkvDot3+U0R4SPVbpU0bPIO7zInLODqc5FScvsKI7fjmkBFhLxeEkLer97g==", "dependencies": { - "@fluentui/react-aria": "^9.3.18", - "@fluentui/react-context-selector": "^9.1.18", + "@fluentui/react-aria": "^9.3.19", + "@fluentui/react-context-selector": "^9.1.19", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -541,17 +800,17 @@ } }, "node_modules/@fluentui/react-alert": { - "version": "9.0.0-beta.45", - "resolved": "https://registry.npmmirror.com/@fluentui/react-alert/-/react-alert-9.0.0-beta.45.tgz", - "integrity": "sha512-a+kQHOBppVh0kvNBcJeGvWC4Eu4vzWFDifyb+DYObeb5ZgwhxZQr9WwBn1QnoKX4FinWxj79yEPmNgWxu1WvDA==", + "version": "9.0.0-beta.46", + "resolved": "https://registry.npmmirror.com/@fluentui/react-alert/-/react-alert-9.0.0-beta.46.tgz", + "integrity": "sha512-XuE2KIRrODs37lEQVZfDGJgxCzgiaq1jd6VyUnnf+jknrVjB+tDn4RO+UEyEAHNN7Z/QYVbj7QoxHGp2jUy3Ow==", "dependencies": { - "@fluentui/react-avatar": "^9.4.10", - "@fluentui/react-button": "^9.3.10", + "@fluentui/react-avatar": "^9.5.0", + "@fluentui/react-button": "^9.3.11", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -563,12 +822,12 @@ } }, "node_modules/@fluentui/react-aria": { - "version": "9.3.18", - "resolved": "https://registry.npmmirror.com/@fluentui/react-aria/-/react-aria-9.3.18.tgz", - "integrity": "sha512-BI5MRU1i7zUX2pAx93FfYJNTD/66Xq4IxLwOsCFVBkP6XSgMiOLK2ZM6BHUUO5paHBxX/JVCbVRgce9TiP1cCA==", + "version": "9.3.19", + "resolved": "https://registry.npmmirror.com/@fluentui/react-aria/-/react-aria-9.3.19.tgz", + "integrity": "sha512-qMOpaWqfLWpPrnF2fU6NKckwGn7Q0aD92ZUZt4dnV/ua8h72OspGDyhT5Tsgxm2/nfr5/V/OxgI7gR2IRy05rg==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.2", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/keyboard-keys": "^9.0.3", + "@fluentui/react-utilities": "^9.8.1", "@swc/helpers": "^0.4.14" }, "peerDependencies": { @@ -579,20 +838,20 @@ } }, "node_modules/@fluentui/react-avatar": { - "version": "9.4.10", - "resolved": "https://registry.npmmirror.com/@fluentui/react-avatar/-/react-avatar-9.4.10.tgz", - "integrity": "sha512-QYDxq2ZzIdau1u7pcDqK8UIyf6xOC+LSoZukdmiqqbOvuuRPb7v1xUqSqfnq3ABMjAyMItdEFFunTrvMevGRug==", + "version": "9.5.0", + "resolved": "https://registry.npmmirror.com/@fluentui/react-avatar/-/react-avatar-9.5.0.tgz", + "integrity": "sha512-91I+dIl/b+MSKrcis2lj1Ci7qOGnj3Wg9gPKgl23kdeClLyDESLfZu2j5gABnwci0YFI44j+FmLP0VyMIH0nbg==", "dependencies": { - "@fluentui/react-badge": "^9.1.10", - "@fluentui/react-context-selector": "^9.1.18", + "@fluentui/react-badge": "^9.1.11", + "@fluentui/react-context-selector": "^9.1.19", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-popover": "^9.5.10", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-tooltip": "^9.2.10", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-popover": "^9.5.11", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-tooltip": "^9.2.11", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -605,15 +864,15 @@ } }, "node_modules/@fluentui/react-badge": { - "version": "9.1.10", - "resolved": "https://registry.npmmirror.com/@fluentui/react-badge/-/react-badge-9.1.10.tgz", - "integrity": "sha512-MTWyJmv56Ycbx761xnMq4BrM38GTdQAI5uUVtDJt8W49cqr/LRz1/4i3GjWgAlinTulN2czilxrLqEB0u7hPSw==", + "version": "9.1.11", + "resolved": "https://registry.npmmirror.com/@fluentui/react-badge/-/react-badge-9.1.11.tgz", + "integrity": "sha512-t5o7vhkjMiU2ZBWoagDcp3O1LOuJb4B/sp71tYlpz/JEvr1fbJLIP8kVXeq5RynpIZZN6M+ON9YBFvxG14fZpQ==", "dependencies": { "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -625,18 +884,18 @@ } }, "node_modules/@fluentui/react-button": { - "version": "9.3.10", - "resolved": "https://registry.npmmirror.com/@fluentui/react-button/-/react-button-9.3.10.tgz", - "integrity": "sha512-KPKwzP3qSgfZoBJgp20Y08ibLMWsaXeQUV3GOTiC3y5dmxSjbaZB6lj/3xfS+1d3UwYmkdCyJZbdJJGvUewHxQ==", + "version": "9.3.11", + "resolved": "https://registry.npmmirror.com/@fluentui/react-button/-/react-button-9.3.11.tgz", + "integrity": "sha512-qLGJXver+a7hQPcRhgE+Va/oVNk51bQuds8no+9SEBNoOHzFtzRl2Nkwj4cdNqxKGxHYZGjS41WcKK6UYv7fbg==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.2", - "@fluentui/react-aria": "^9.3.18", + "@fluentui/keyboard-keys": "^9.0.3", + "@fluentui/react-aria": "^9.3.19", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -648,15 +907,15 @@ } }, "node_modules/@fluentui/react-card": { - "version": "9.0.8", - "resolved": "https://registry.npmmirror.com/@fluentui/react-card/-/react-card-9.0.8.tgz", - "integrity": "sha512-r/hOOkKRex1GPdh+Bg0ubB3K3hZIQ1gzxnTt9TOsiR4P6eW6RELbbjmAokdHQb27c7HuygVGOLuFPr5gT8E0kQ==", + "version": "9.0.9", + "resolved": "https://registry.npmmirror.com/@fluentui/react-card/-/react-card-9.0.9.tgz", + "integrity": "sha512-ju0oPSlGY6jwOPt7OvebnygLPgjSk/lhJrt8ZzfUZulAYd2vixJmkSz/fLBo8OZkIncAa6P8ENewTIpDHp8Qgw==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.2", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/keyboard-keys": "^9.0.3", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -668,18 +927,18 @@ } }, "node_modules/@fluentui/react-checkbox": { - "version": "9.1.11", - "resolved": "https://registry.npmmirror.com/@fluentui/react-checkbox/-/react-checkbox-9.1.11.tgz", - "integrity": "sha512-nyBCOrfwWj0CnYk2hbiH/wXyEb89gxlZ8ytilr5UPzgzJzmHH2M7CnZfxAsB7Q0AZGQrtZ+SZDbyC823ntB/yQ==", + "version": "9.1.12", + "resolved": "https://registry.npmmirror.com/@fluentui/react-checkbox/-/react-checkbox-9.1.12.tgz", + "integrity": "sha512-uBrgzMW+3nIW49t+rNGJhchL/5f/zP1QB0bcg6NekFv7sRaAlGwXQUpb38JNm/PLLMAHoB6+cQhqoU7tvR0BdA==", "dependencies": { - "@fluentui/react-field": "^9.1.1", + "@fluentui/react-field": "^9.1.2", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-label": "^9.1.10", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-label": "^9.1.11", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -691,20 +950,20 @@ } }, "node_modules/@fluentui/react-combobox": { - "version": "9.2.11", - "resolved": "https://registry.npmmirror.com/@fluentui/react-combobox/-/react-combobox-9.2.11.tgz", - "integrity": "sha512-iiYpbSm2glGY9odQ3xHxusxMa3rXB13xi2udhYNCBd6Hg3QOdUpqZGoPbx/iZ4IaZe9Sb8ADAJl6soy4Pr008A==", + "version": "9.3.0", + "resolved": "https://registry.npmmirror.com/@fluentui/react-combobox/-/react-combobox-9.3.0.tgz", + "integrity": "sha512-TZWwFCL8GyyKkmXF1Mtc7bHShRhv3EsPO86UkczDUjR22cAunSR+GgawYletkjEFGC7PkHJ4C+3jdWtBRYFbAg==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.2", - "@fluentui/react-context-selector": "^9.1.18", - "@fluentui/react-field": "^9.1.1", + "@fluentui/keyboard-keys": "^9.0.3", + "@fluentui/react-context-selector": "^9.1.19", + "@fluentui/react-field": "^9.1.2", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-portal": "^9.2.6", - "@fluentui/react-positioning": "^9.5.10", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-portal": "^9.2.7", + "@fluentui/react-positioning": "^9.5.11", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -717,53 +976,53 @@ } }, "node_modules/@fluentui/react-components": { - "version": "9.19.1", - "resolved": "https://registry.npmmirror.com/@fluentui/react-components/-/react-components-9.19.1.tgz", - "integrity": "sha512-HHhQdGXHVn0PwrEbFGu/xEqSLVYRf2WfMsG6FVmFBNwSwojB/2/DRWXQPUPL8K2Hzrg5Xon8z3RBP/XrSUFqtw==", + "version": "9.20.0", + "resolved": "https://registry.npmmirror.com/@fluentui/react-components/-/react-components-9.20.0.tgz", + "integrity": "sha512-2EMBXlmny04XJ4rQfsnLDSPC0dXXNP+exHXhF+vyhTkR8nKjsK1jGMZs84dDXIZq6l5Ok87bfDlxVt1WMmuXzw==", "dependencies": { - "@fluentui/react-accordion": "^9.1.10", - "@fluentui/react-alert": "9.0.0-beta.45", - "@fluentui/react-avatar": "^9.4.10", - "@fluentui/react-badge": "^9.1.10", - "@fluentui/react-button": "^9.3.10", - "@fluentui/react-card": "^9.0.8", - "@fluentui/react-checkbox": "^9.1.11", - "@fluentui/react-combobox": "^9.2.11", - "@fluentui/react-dialog": "^9.5.3", - "@fluentui/react-divider": "^9.2.10", - "@fluentui/react-field": "^9.1.1", - "@fluentui/react-image": "^9.1.7", - "@fluentui/react-infobutton": "9.0.0-beta.28", - "@fluentui/react-input": "^9.4.11", - "@fluentui/react-label": "^9.1.10", - "@fluentui/react-link": "^9.0.36", - "@fluentui/react-menu": "^9.7.10", - "@fluentui/react-overflow": "^9.0.15", - "@fluentui/react-persona": "^9.2.9", - "@fluentui/react-popover": "^9.5.10", - "@fluentui/react-portal": "^9.2.6", - "@fluentui/react-positioning": "^9.5.10", - "@fluentui/react-progress": "^9.1.11", - "@fluentui/react-provider": "^9.5.4", - "@fluentui/react-radio": "^9.1.11", - "@fluentui/react-select": "^9.1.11", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-skeleton": "9.0.0-beta.10", - "@fluentui/react-slider": "^9.1.11", - "@fluentui/react-spinbutton": "^9.2.11", - "@fluentui/react-spinner": "^9.1.10", - "@fluentui/react-switch": "^9.1.11", - "@fluentui/react-table": "^9.2.7", - "@fluentui/react-tabs": "^9.3.11", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-text": "^9.3.7", - "@fluentui/react-textarea": "^9.3.11", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-toolbar": "^9.1.11", - "@fluentui/react-tooltip": "^9.2.10", - "@fluentui/react-tree": "9.0.0-beta.12", - "@fluentui/react-utilities": "^9.8.0", - "@fluentui/react-virtualizer": "9.0.0-alpha.18", + "@fluentui/react-accordion": "^9.1.11", + "@fluentui/react-alert": "9.0.0-beta.46", + "@fluentui/react-avatar": "^9.5.0", + "@fluentui/react-badge": "^9.1.11", + "@fluentui/react-button": "^9.3.11", + "@fluentui/react-card": "^9.0.9", + "@fluentui/react-checkbox": "^9.1.12", + "@fluentui/react-combobox": "^9.3.0", + "@fluentui/react-dialog": "^9.5.4", + "@fluentui/react-divider": "^9.2.11", + "@fluentui/react-field": "^9.1.2", + "@fluentui/react-image": "^9.1.8", + "@fluentui/react-infobutton": "9.0.0-beta.29", + "@fluentui/react-input": "^9.4.12", + "@fluentui/react-label": "^9.1.11", + "@fluentui/react-link": "^9.0.37", + "@fluentui/react-menu": "^9.7.11", + "@fluentui/react-overflow": "^9.0.16", + "@fluentui/react-persona": "^9.2.10", + "@fluentui/react-popover": "^9.5.11", + "@fluentui/react-portal": "^9.2.7", + "@fluentui/react-positioning": "^9.5.11", + "@fluentui/react-progress": "^9.1.12", + "@fluentui/react-provider": "^9.6.0", + "@fluentui/react-radio": "^9.1.12", + "@fluentui/react-select": "^9.1.12", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-skeleton": "9.0.0", + "@fluentui/react-slider": "^9.1.12", + "@fluentui/react-spinbutton": "^9.2.12", + "@fluentui/react-spinner": "^9.1.11", + "@fluentui/react-switch": "^9.1.12", + "@fluentui/react-table": "^9.2.8", + "@fluentui/react-tabs": "^9.3.12", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-text": "^9.3.8", + "@fluentui/react-textarea": "^9.3.12", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-toolbar": "^9.1.12", + "@fluentui/react-tooltip": "^9.2.11", + "@fluentui/react-tree": "9.0.0-beta.13", + "@fluentui/react-utilities": "^9.8.1", + "@fluentui/react-virtualizer": "9.0.0-alpha.19", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -776,11 +1035,11 @@ } }, "node_modules/@fluentui/react-context-selector": { - "version": "9.1.18", - "resolved": "https://registry.npmmirror.com/@fluentui/react-context-selector/-/react-context-selector-9.1.18.tgz", - "integrity": "sha512-ixoCWc3sEBIZb0oasI6l/kfv4bqPdtWvNfzRrSWws8STkfjYakHMuRA96c508PJNHsZ9WlQqfQebt1V4rpo8mA==", + "version": "9.1.19", + "resolved": "https://registry.npmmirror.com/@fluentui/react-context-selector/-/react-context-selector-9.1.19.tgz", + "integrity": "sha512-sTWDz4DjtNlH+rCW+p2jwxIiGus4EYNkP+Rxi3selKxds6nwmWONav0EE9ROu//c8dTlCzkXsIZqrcGSXOw3qw==", "dependencies": { - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-utilities": "^9.8.1", "@swc/helpers": "^0.4.14" }, "peerDependencies": { @@ -792,20 +1051,20 @@ } }, "node_modules/@fluentui/react-dialog": { - "version": "9.5.3", - "resolved": "https://registry.npmmirror.com/@fluentui/react-dialog/-/react-dialog-9.5.3.tgz", - "integrity": "sha512-250/iJJVx8tSWucts1quA7wWPNLJpYCx0tHNDfa8pnZ9/oVaSL849te29oBuwAiP9XMbHU89x/+df6dNeRLIgw==", + "version": "9.5.4", + "resolved": "https://registry.npmmirror.com/@fluentui/react-dialog/-/react-dialog-9.5.4.tgz", + "integrity": "sha512-yl2POwBdMLH95W8ugwjQrBUnBe7/rZyWuDf21Ktbw4DiDA+3BEn4gDp1j7xHhBoeyMUBuVNMn1MQtmyONWB99g==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.2", - "@fluentui/react-aria": "^9.3.18", - "@fluentui/react-context-selector": "^9.1.18", + "@fluentui/keyboard-keys": "^9.0.3", + "@fluentui/react-aria": "^9.3.19", + "@fluentui/react-context-selector": "^9.1.19", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-portal": "^9.2.6", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-portal": "^9.2.7", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -817,14 +1076,14 @@ } }, "node_modules/@fluentui/react-divider": { - "version": "9.2.10", - "resolved": "https://registry.npmmirror.com/@fluentui/react-divider/-/react-divider-9.2.10.tgz", - "integrity": "sha512-j8ixGUuyBm5UaUOTxAfVhY/nG4JOpVUFIDGGEFiDD3vCD65v7C4VsDbk5xqlKWs+pmsklZeDlF3UjuaRZBZxwA==", + "version": "9.2.11", + "resolved": "https://registry.npmmirror.com/@fluentui/react-divider/-/react-divider-9.2.11.tgz", + "integrity": "sha512-WEMVTnOdmo4hqXzR/TLREA+edbrsnJwiK/XOKlxEXWQWgaIcWbD7q1k/o57QNLyk3Pr6B5jkB1uFdo/m89R8tQ==", "dependencies": { - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -836,16 +1095,16 @@ } }, "node_modules/@fluentui/react-field": { - "version": "9.1.1", - "resolved": "https://registry.npmmirror.com/@fluentui/react-field/-/react-field-9.1.1.tgz", - "integrity": "sha512-WjqiPAqWPtmeV5CFDLdOUfUQs6sPZrluOwjmqGqoJzNQUlQiH+coCHNtiAmPiWYRIIiSk5FakOlPiPFbp02j1g==", + "version": "9.1.2", + "resolved": "https://registry.npmmirror.com/@fluentui/react-field/-/react-field-9.1.2.tgz", + "integrity": "sha512-1qKr5lZlMm+IF2ZM3UmGK8gU3Vo4TuyX5vHR2SO7RWbJ/g4KaUGkDIIq90CkZ9LLVKBV7gWWAGAs4SubWR7kNA==", "dependencies": { - "@fluentui/react-context-selector": "^9.1.18", + "@fluentui/react-context-selector": "^9.1.19", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-label": "^9.1.10", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-label": "^9.1.11", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -869,14 +1128,14 @@ } }, "node_modules/@fluentui/react-image": { - "version": "9.1.7", - "resolved": "https://registry.npmmirror.com/@fluentui/react-image/-/react-image-9.1.7.tgz", - "integrity": "sha512-/ANAJngvl+jFenIOOciLPKL9wUVpVrG6/jokdjU4R8sJDfYI1dLbtCQHmc0+Lwc0nO2wrZPluEMwibl94fcG8Q==", + "version": "9.1.8", + "resolved": "https://registry.npmmirror.com/@fluentui/react-image/-/react-image-9.1.8.tgz", + "integrity": "sha512-/AT6wU3YcqMDrYF7gslP2UMamSzXpb5DtSlsBs8f8sCyZjYx5lhjIKRQncBZDMzrBkUbR8cxPPgQl/RDRnhziA==", "dependencies": { - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -888,17 +1147,17 @@ } }, "node_modules/@fluentui/react-infobutton": { - "version": "9.0.0-beta.28", - "resolved": "https://registry.npmmirror.com/@fluentui/react-infobutton/-/react-infobutton-9.0.0-beta.28.tgz", - "integrity": "sha512-U+lje7/6EdqA7S3utadG+TMkP1jql/WvTrAurIv10Zr+JLu67eckSZn6JKJ9lS9Z8qvysAsdIE4hKMzbtG7w2Q==", + "version": "9.0.0-beta.29", + "resolved": "https://registry.npmmirror.com/@fluentui/react-infobutton/-/react-infobutton-9.0.0-beta.29.tgz", + "integrity": "sha512-d3GQ2o6jWWaAsga9pjV5mOcDe+9i32TN1v/79HTd+Q2KrGe42WyDnnuVEMqMnWRENAANMF2TZ8HVb2YcgbKYIQ==", "dependencies": { "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-label": "^9.1.10", - "@fluentui/react-popover": "^9.5.10", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-label": "^9.1.11", + "@fluentui/react-popover": "^9.5.11", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -910,15 +1169,15 @@ } }, "node_modules/@fluentui/react-input": { - "version": "9.4.11", - "resolved": "https://registry.npmmirror.com/@fluentui/react-input/-/react-input-9.4.11.tgz", - "integrity": "sha512-8qmfJThw4OjioT3Abb9TTYkcynbgFGhJD3x4xuQleICBuJ0hxzhnY038zHmEvcR47O5WC2OGCtb40xDX1WtJXw==", + "version": "9.4.12", + "resolved": "https://registry.npmmirror.com/@fluentui/react-input/-/react-input-9.4.12.tgz", + "integrity": "sha512-hKIDX4YiE8DF4rHFB5Wt8XLUmV+r2ZYfgGduEFC8dT2WXnG9S14DjUa/uv1/PZ+We7+reRTtCUmcTeHYO3LYZg==", "dependencies": { - "@fluentui/react-field": "^9.1.1", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-field": "^9.1.2", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -930,11 +1189,11 @@ } }, "node_modules/@fluentui/react-jsx-runtime": { - "version": "9.0.0-alpha.2", - "resolved": "https://registry.npmmirror.com/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.0.0-alpha.2.tgz", - "integrity": "sha512-lMnVHUi9XQIOV7qrsfvA1vpxXqGoCtr7ldJYlw8N6e67qB8bdY9OV8oXkEQB1OKCMZwmAeGglit7PBr5NB8LZQ==", + "version": "9.0.0-alpha.3", + "resolved": "https://registry.npmmirror.com/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.0.0-alpha.3.tgz", + "integrity": "sha512-sQzKscTT81eEQVEuqpwmQ/DOU6YJ2uxYwGWxZpuCfxzSEZWGXGsOYopVuLgLbE5CkzixV4aPd5k7bf1bc6ZfTQ==", "dependencies": { - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-utilities": "^9.8.1", "@swc/helpers": "^0.4.14" }, "peerDependencies": { @@ -943,14 +1202,14 @@ } }, "node_modules/@fluentui/react-label": { - "version": "9.1.10", - "resolved": "https://registry.npmmirror.com/@fluentui/react-label/-/react-label-9.1.10.tgz", - "integrity": "sha512-xQ0D5+cyYE7E/Mfpgqgb80cheOfEbVwa0JaRSAJk/Xvqh9M1CUfLT/Qj7kqFqTvDLSRlUtFAjyf0UqFC94KACw==", + "version": "9.1.11", + "resolved": "https://registry.npmmirror.com/@fluentui/react-label/-/react-label-9.1.11.tgz", + "integrity": "sha512-UBXzMIDijB3FVZEAsPb1J8GUQB2ZnxxvfQpeVbicy7Ai2CSFJ9yv6ed4Xs6acPFZLOtbDTRYZRXdP7hTkdXNbQ==", "dependencies": { - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -962,15 +1221,15 @@ } }, "node_modules/@fluentui/react-link": { - "version": "9.0.36", - "resolved": "https://registry.npmmirror.com/@fluentui/react-link/-/react-link-9.0.36.tgz", - "integrity": "sha512-F+6JmLoK4mRfoLIvpULAP/43He4c0PhFcEiJqM9dToxFG+s6ejofeSBpbb1R8XOvpB963exAK7yw7SgFaGsC6w==", + "version": "9.0.37", + "resolved": "https://registry.npmmirror.com/@fluentui/react-link/-/react-link-9.0.37.tgz", + "integrity": "sha512-hCxGJ3yhuIOa4rxqwevRAg0PdOvxflimhc6/S6pA9pAc3J/COiBuSse8LpNaWPTlp88Yssfke2kNXwAAa2mOLg==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.2", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/keyboard-keys": "^9.0.3", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -982,21 +1241,21 @@ } }, "node_modules/@fluentui/react-menu": { - "version": "9.7.10", - "resolved": "https://registry.npmmirror.com/@fluentui/react-menu/-/react-menu-9.7.10.tgz", - "integrity": "sha512-e99Gm2c7+PSNJ3jik8bxvcI1k4hgJEnCbdVZ8cMh0+DWx1qSSfajGr21tjWudp/eGD9VcguZEkC1gmnM/YtrpQ==", + "version": "9.7.11", + "resolved": "https://registry.npmmirror.com/@fluentui/react-menu/-/react-menu-9.7.11.tgz", + "integrity": "sha512-zblKaIO7W95IVWYgSO1edyZTRY7CtB/fiJpaMtz9pCZKRmkoraISAlNgS4YsxYLTZ+zAb/XyCWSyWcsBq4VLRg==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.2", - "@fluentui/react-aria": "^9.3.18", - "@fluentui/react-context-selector": "^9.1.18", + "@fluentui/keyboard-keys": "^9.0.3", + "@fluentui/react-aria": "^9.3.19", + "@fluentui/react-context-selector": "^9.1.19", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-portal": "^9.2.6", - "@fluentui/react-positioning": "^9.5.10", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-portal": "^9.2.7", + "@fluentui/react-positioning": "^9.5.11", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1009,14 +1268,14 @@ } }, "node_modules/@fluentui/react-overflow": { - "version": "9.0.15", - "resolved": "https://registry.npmmirror.com/@fluentui/react-overflow/-/react-overflow-9.0.15.tgz", - "integrity": "sha512-oMbFsR4rVqdNY4neat7YB7Dn9wgy5/h5mAqH6NLKD/25LujZJ8oho+PUT1kOIcCQ/+XpCUU6hCJadd9iCTeNmg==", + "version": "9.0.16", + "resolved": "https://registry.npmmirror.com/@fluentui/react-overflow/-/react-overflow-9.0.16.tgz", + "integrity": "sha512-GupyKEeJy1gjRB762TIeS67BcavBQ1sl2LljRPX/UPO4b9iKchdH+r+vY+O1pWwRLsa29gNd9XNzUD9AIo144w==", "dependencies": { - "@fluentui/priority-overflow": "^9.0.2", - "@fluentui/react-context-selector": "^9.1.18", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/priority-overflow": "^9.0.3", + "@fluentui/react-context-selector": "^9.1.19", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1029,16 +1288,16 @@ } }, "node_modules/@fluentui/react-persona": { - "version": "9.2.9", - "resolved": "https://registry.npmmirror.com/@fluentui/react-persona/-/react-persona-9.2.9.tgz", - "integrity": "sha512-hEuUl7ke+CsOKrpV9I2GbekbIgVdTJ7Xn2VV7JWjbcW5zp7EM4SRsBez/EAbsycwr/Cm23n7sX0tEcqhMhasTw==", + "version": "9.2.10", + "resolved": "https://registry.npmmirror.com/@fluentui/react-persona/-/react-persona-9.2.10.tgz", + "integrity": "sha512-vzPgjjSIrLs1TrEH8h76HBJp8SFzVTV0K3jEwp6z2FWVRGeGc7V7DFtPrDiBJGm726iP+fLuQpuM3BRA9x9qHA==", "dependencies": { - "@fluentui/react-avatar": "^9.4.10", - "@fluentui/react-badge": "^9.1.10", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-avatar": "^9.5.0", + "@fluentui/react-badge": "^9.1.11", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1050,20 +1309,20 @@ } }, "node_modules/@fluentui/react-popover": { - "version": "9.5.10", - "resolved": "https://registry.npmmirror.com/@fluentui/react-popover/-/react-popover-9.5.10.tgz", - "integrity": "sha512-gF0EDFaQSahT3EfWj2D7k/eHK3W9BLnY43CG5kdnVgdEwAWHhUq3SNlhKntshKYauCkrzBEcg8vI1p4PJ05ttA==", + "version": "9.5.11", + "resolved": "https://registry.npmmirror.com/@fluentui/react-popover/-/react-popover-9.5.11.tgz", + "integrity": "sha512-Kmc3knGuRTAU03Ss/UuVDq5bzo9b3aI8ib7epc7yZMrDuA962Fn8pe7/I1Fp59RajUVjX9Brm4kkS63yD5jD/A==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.2", - "@fluentui/react-aria": "^9.3.18", - "@fluentui/react-context-selector": "^9.1.18", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-portal": "^9.2.6", - "@fluentui/react-positioning": "^9.5.10", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/keyboard-keys": "^9.0.3", + "@fluentui/react-aria": "^9.3.19", + "@fluentui/react-context-selector": "^9.1.19", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-portal": "^9.2.7", + "@fluentui/react-positioning": "^9.5.11", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1076,13 +1335,13 @@ } }, "node_modules/@fluentui/react-portal": { - "version": "9.2.6", - "resolved": "https://registry.npmmirror.com/@fluentui/react-portal/-/react-portal-9.2.6.tgz", - "integrity": "sha512-/wlyZIUFef+o1MVqytNyjV9lD9OPFZGxTYl5kJoI/3C6Mh/a+wQ3WFipibNBsTdftCNmzB/TwjXo38xK5Er+SQ==", + "version": "9.2.7", + "resolved": "https://registry.npmmirror.com/@fluentui/react-portal/-/react-portal-9.2.7.tgz", + "integrity": "sha512-TUbgou6q41zEf5h0Pm6QMlkPnQjdtwz2y58iE358wIcwp0FZjNPVXjkrNYmrajeK0boqZiNovrZiHLe8yS4aug==", "dependencies": { - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14", "use-disposable": "^1.0.1" @@ -1095,14 +1354,14 @@ } }, "node_modules/@fluentui/react-positioning": { - "version": "9.5.10", - "resolved": "https://registry.npmmirror.com/@fluentui/react-positioning/-/react-positioning-9.5.10.tgz", - "integrity": "sha512-4T5sihiG/MbwdysUU66nUJnT2IAJPkb4OD3GiztipFGIEymNcQDXQN3AJr/ID/xcvmc6gIZY44OHlQEs9gfcTQ==", + "version": "9.5.11", + "resolved": "https://registry.npmmirror.com/@fluentui/react-positioning/-/react-positioning-9.5.11.tgz", + "integrity": "sha512-x9+DsB3Pcn7WOq9uhVJVEMckpkU54PFoVht996g9dnMTL42ciN6atQk4l+l2I5iybeqSMZ4OERTLEfa1iBabhg==", "dependencies": { "@floating-ui/dom": "^1.2.0", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1114,15 +1373,15 @@ } }, "node_modules/@fluentui/react-progress": { - "version": "9.1.11", - "resolved": "https://registry.npmmirror.com/@fluentui/react-progress/-/react-progress-9.1.11.tgz", - "integrity": "sha512-5cwft6WydcR5kKvDuQ8yMjgaF7crZUbxkE8Bbq9cWdaaLcOcN5GaYSVpJQGBzQJPFUCy5pPn6Vk4to9EE5zqYQ==", + "version": "9.1.12", + "resolved": "https://registry.npmmirror.com/@fluentui/react-progress/-/react-progress-9.1.12.tgz", + "integrity": "sha512-U6KptYK4SyYEwpex5oEtS7yDhHAthf5IBWWOzbNmZgfr3KNLwRyVPNVbovradU/zMFF7xNTL8CkP5Vnd3t8M0Q==", "dependencies": { - "@fluentui/react-field": "^9.1.1", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-field": "^9.1.2", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1134,15 +1393,15 @@ } }, "node_modules/@fluentui/react-provider": { - "version": "9.5.4", - "resolved": "https://registry.npmmirror.com/@fluentui/react-provider/-/react-provider-9.5.4.tgz", - "integrity": "sha512-IyWezQYvR9zD+MtueAwXihb4JwRK9MZI/ogNZCwsUECZyZoG4dckOio92QSA+FHnyZ2MF1Vbe7beq48HF/EXxA==", + "version": "9.6.0", + "resolved": "https://registry.npmmirror.com/@fluentui/react-provider/-/react-provider-9.6.0.tgz", + "integrity": "sha512-2uWZpyHN/AFpT7KejqDD71+Mj/bYQ8/AOXMCdjHaDV2vMkUFQxseb3bsLv5OF2iXE/G5owJhpie9m6M2hhLvYQ==", "dependencies": { - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/core": "^1.9.0", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" @@ -1155,18 +1414,18 @@ } }, "node_modules/@fluentui/react-radio": { - "version": "9.1.11", - "resolved": "https://registry.npmmirror.com/@fluentui/react-radio/-/react-radio-9.1.11.tgz", - "integrity": "sha512-s35bZ4qDUoLlCuROC45xpHXrWuMUO9yKom6CsyZjZqmMs9sLL3EuqIGIuC7YqQM3Fhih9XGcPIpQEi+k9hryqw==", + "version": "9.1.12", + "resolved": "https://registry.npmmirror.com/@fluentui/react-radio/-/react-radio-9.1.12.tgz", + "integrity": "sha512-nzU4esw8IFA3KoV5YR9i/Vs37YkVsBbZq5IHsw8nF6pIetT4alYwyl2aKd4QOHvMXNgPIMITysxGZfW2zJqzmg==", "dependencies": { - "@fluentui/react-field": "^9.1.1", + "@fluentui/react-field": "^9.1.2", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-label": "^9.1.10", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-label": "^9.1.11", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1179,16 +1438,16 @@ } }, "node_modules/@fluentui/react-select": { - "version": "9.1.11", - "resolved": "https://registry.npmmirror.com/@fluentui/react-select/-/react-select-9.1.11.tgz", - "integrity": "sha512-NTJ3UyJJ9Rq+IV0x2b2rhf/AIIES78ASEnlHE8sOQACID5l0eAXt35W2MDbSQi3+PSFlMKbaupHr32lgHp/9Jg==", + "version": "9.1.12", + "resolved": "https://registry.npmmirror.com/@fluentui/react-select/-/react-select-9.1.12.tgz", + "integrity": "sha512-aCowRUN5i7Fpv9aHaamdQX9W9+gEQlEt/14VNVQPd+2GFttcRrebm0egmbJusdfYYlJ52zjMaSaOu9lri1wDcQ==", "dependencies": { - "@fluentui/react-field": "^9.1.1", + "@fluentui/react-field": "^9.1.2", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1200,11 +1459,11 @@ } }, "node_modules/@fluentui/react-shared-contexts": { - "version": "9.3.3", - "resolved": "https://registry.npmmirror.com/@fluentui/react-shared-contexts/-/react-shared-contexts-9.3.3.tgz", - "integrity": "sha512-7X+Oj69s3aYLSJ9xuh1eIVCQXNtFox6cXKSZF5ogq4ebRRXE6NqXx8tF8KAjv7+JIWBwPo2/sLtWq2ma363NLg==", + "version": "9.4.0", + "resolved": "https://registry.npmmirror.com/@fluentui/react-shared-contexts/-/react-shared-contexts-9.4.0.tgz", + "integrity": "sha512-yjNvDDJAcbVcAZblh6P8xzFuwAqPcXpf9tOlsNxxlEdwlV7Bk7nDrU13wNaI+Jpks5ASNJo8zWbzUwDI1gFsdA==", "dependencies": { - "@fluentui/react-theme": "^9.1.7", + "@fluentui/react-theme": "^9.1.8", "@swc/helpers": "^0.4.14" }, "peerDependencies": { @@ -1213,15 +1472,15 @@ } }, "node_modules/@fluentui/react-skeleton": { - "version": "9.0.0-beta.10", - "resolved": "https://registry.npmmirror.com/@fluentui/react-skeleton/-/react-skeleton-9.0.0-beta.10.tgz", - "integrity": "sha512-wkhe2tnH1v8mBdhloPADaPkevmEE2Au441fi4wW1d9ForsUu9NIjUcO5zT7KboqqbNN2fR925BiXvrjsMa6X6g==", + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/@fluentui/react-skeleton/-/react-skeleton-9.0.0.tgz", + "integrity": "sha512-GsPe0xwr2Rkm+DPCTkzLvnH3kSHF3SDggfCfTytWWbgfGZWvSBf689OjreDV4FFdm1LLLynsdK0ZEI71j+sBHg==", "dependencies": { - "@fluentui/react-field": "^9.1.1", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-field": "^9.1.2", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1233,16 +1492,16 @@ } }, "node_modules/@fluentui/react-slider": { - "version": "9.1.11", - "resolved": "https://registry.npmmirror.com/@fluentui/react-slider/-/react-slider-9.1.11.tgz", - "integrity": "sha512-0MgHlv1FgukwxSQeQ4phGy7Iz2I9qc+F9A8i7cKNvA9YXfiQqoDnF+9KGuQuHVRlA2iLSZlLm7t9XMON9203uA==", + "version": "9.1.12", + "resolved": "https://registry.npmmirror.com/@fluentui/react-slider/-/react-slider-9.1.12.tgz", + "integrity": "sha512-wtXZCgkr13U1I3TUYzo0FxUBpGuORJQ8/5uRALVLGAOmrcFuuAjSvB2dWTe9ABOuZiW+bfKihOT+CuSmyuBTUA==", "dependencies": { - "@fluentui/react-field": "^9.1.1", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-field": "^9.1.2", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1254,17 +1513,17 @@ } }, "node_modules/@fluentui/react-spinbutton": { - "version": "9.2.11", - "resolved": "https://registry.npmmirror.com/@fluentui/react-spinbutton/-/react-spinbutton-9.2.11.tgz", - "integrity": "sha512-UtMK5r/1p32mt20PYOeCO5wNGw6ACpE7m7ckwZKGiNDli+XZrK9B5/hD6r68bIT34YBLyrZm273eU2iecwpnmw==", + "version": "9.2.12", + "resolved": "https://registry.npmmirror.com/@fluentui/react-spinbutton/-/react-spinbutton-9.2.12.tgz", + "integrity": "sha512-EY35MtzmSp8oMoBJ8R5CPXJcyh7kzfFTqQGvTrwVp07LCxSEWM1CPvD2ik36AbiLCBt6qsDPM01w2qrbm27xgw==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.2", - "@fluentui/react-field": "^9.1.1", + "@fluentui/keyboard-keys": "^9.0.3", + "@fluentui/react-field": "^9.1.2", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1276,15 +1535,15 @@ } }, "node_modules/@fluentui/react-spinner": { - "version": "9.1.10", - "resolved": "https://registry.npmmirror.com/@fluentui/react-spinner/-/react-spinner-9.1.10.tgz", - "integrity": "sha512-E5fHwh90RiKlr/lKxHCpmGL96DpVeTYtEmEr6CfL2MsfE5guP97Ayrw/smfN3MHB3OLFwrYrXDrCF1FLNnklUw==", + "version": "9.1.11", + "resolved": "https://registry.npmmirror.com/@fluentui/react-spinner/-/react-spinner-9.1.11.tgz", + "integrity": "sha512-vYUuTZdbgDxp3xGoGUd09xn2f/adleLVBGBIFepZG93XDgsIRaaLUo4Dbhy2FAUdeWA+viOilxkbTM4q/Aocpg==", "dependencies": { - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-label": "^9.1.10", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-label": "^9.1.11", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1296,18 +1555,18 @@ } }, "node_modules/@fluentui/react-switch": { - "version": "9.1.11", - "resolved": "https://registry.npmmirror.com/@fluentui/react-switch/-/react-switch-9.1.11.tgz", - "integrity": "sha512-elBvJSf9z58Ud+UfaRGybZMMIqu/At509DXHuUqCwfYu1pk+4VyfQrRlElQ10W1p5ETqaUJDo3F5O9u/SnvcIA==", + "version": "9.1.12", + "resolved": "https://registry.npmmirror.com/@fluentui/react-switch/-/react-switch-9.1.12.tgz", + "integrity": "sha512-FDtjntWbdaQjMj5BrXBtC8ImcwxfUaDANhZgl9lB5YB3boFNn51q+iZyw/Yz6gp4c8fcAxNstqYdCdaKybTiVw==", "dependencies": { - "@fluentui/react-field": "^9.1.1", + "@fluentui/react-field": "^9.1.2", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-label": "^9.1.10", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-label": "^9.1.11", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1319,22 +1578,22 @@ } }, "node_modules/@fluentui/react-table": { - "version": "9.2.7", - "resolved": "https://registry.npmmirror.com/@fluentui/react-table/-/react-table-9.2.7.tgz", - "integrity": "sha512-3vcCuQLEXsA6gaUG9DsEAoefOKBsMsWCk9SYyOtzwjxFeGQM783vsXE9zTrXyuUABVsieq8CNE+f4IvPrRE9vw==", + "version": "9.2.8", + "resolved": "https://registry.npmmirror.com/@fluentui/react-table/-/react-table-9.2.8.tgz", + "integrity": "sha512-QQ+C4NvBECrNwtEQJjhy+FOrE59+vlFZ1+mlEf0N48lqe5xgCvusWvgSPP0tMIvXR1m3doWeGLapBreYvCPg7g==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.2", - "@fluentui/react-aria": "^9.3.18", - "@fluentui/react-avatar": "^9.4.10", - "@fluentui/react-checkbox": "^9.1.11", - "@fluentui/react-context-selector": "^9.1.18", + "@fluentui/keyboard-keys": "^9.0.3", + "@fluentui/react-aria": "^9.3.19", + "@fluentui/react-avatar": "^9.5.0", + "@fluentui/react-checkbox": "^9.1.12", + "@fluentui/react-context-selector": "^9.1.19", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-radio": "^9.1.11", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-radio": "^9.1.12", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1346,16 +1605,16 @@ } }, "node_modules/@fluentui/react-tabs": { - "version": "9.3.11", - "resolved": "https://registry.npmmirror.com/@fluentui/react-tabs/-/react-tabs-9.3.11.tgz", - "integrity": "sha512-0Fa1w+mdA0wXhigiYIQ2cIQls0Q3CDE9BF+1wi2klhY3E65UMuaimwTGCBt503bFoexHbPWLGCNmWueEbvT5dQ==", + "version": "9.3.12", + "resolved": "https://registry.npmmirror.com/@fluentui/react-tabs/-/react-tabs-9.3.12.tgz", + "integrity": "sha512-sIJmKr8Cv7rYgCkYtqnKGAQawCFdQDPIH2a5wBlbkS+3alDu9gxJ+zjVFmOsIVY4Wu3ZGYA5mKadftAJuV0vTA==", "dependencies": { - "@fluentui/react-context-selector": "^9.1.18", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-context-selector": "^9.1.19", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1368,13 +1627,13 @@ } }, "node_modules/@fluentui/react-tabster": { - "version": "9.6.5", - "resolved": "https://registry.npmmirror.com/@fluentui/react-tabster/-/react-tabster-9.6.5.tgz", - "integrity": "sha512-XjqsTuhx0709N1mGFFKOs1Op4q9aKDZhtTluXxw9wlUcOW3JEnvQZIUbGGcQvQHebsSnb5c4pMRp5B0iEUpAvQ==", + "version": "9.7.0", + "resolved": "https://registry.npmmirror.com/@fluentui/react-tabster/-/react-tabster-9.7.0.tgz", + "integrity": "sha512-gLvXne61dUplpEF+E5tQqCy/F349R74ecxMeA5P3BR5289oD5abixsl0IiJTgBvIEu96jAUHd1s+D/keh05LuQ==", "dependencies": { - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14", "keyborg": "^2.0.0", @@ -1388,14 +1647,14 @@ } }, "node_modules/@fluentui/react-text": { - "version": "9.3.7", - "resolved": "https://registry.npmmirror.com/@fluentui/react-text/-/react-text-9.3.7.tgz", - "integrity": "sha512-2LZsIzX1k89+vpW8E0VPnnDmtDYg3zMSjs7G8Nx78TAJAydz6YXWl/J2MIigebC0KjePTKrbYeaDepJ+ZqDOPA==", + "version": "9.3.8", + "resolved": "https://registry.npmmirror.com/@fluentui/react-text/-/react-text-9.3.8.tgz", + "integrity": "sha512-p/fMauwFF8keD5nx0ghozglL+2LdoO0URKVcM1UHGtdRN8C+TzcvpqFJE0u6OShzmGQin46It5GJuf3iFXJLlA==", "dependencies": { - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1407,15 +1666,15 @@ } }, "node_modules/@fluentui/react-textarea": { - "version": "9.3.11", - "resolved": "https://registry.npmmirror.com/@fluentui/react-textarea/-/react-textarea-9.3.11.tgz", - "integrity": "sha512-IcnJcgwI/hG1+29VMCXMvwAgZ5mn0qvFXnvNYMwly6z2V8bYp22BS+8rzvkX9eCoZAaf3iFFDzOFmSGGytOnyA==", + "version": "9.3.12", + "resolved": "https://registry.npmmirror.com/@fluentui/react-textarea/-/react-textarea-9.3.12.tgz", + "integrity": "sha512-s5QFs9MqyuFMEn6EAQchlLLeiOZv6F9PdDH4MSKWueBJL6vLHjkoX27Z2T3LZSqKgeak4RSqSHanzaBOpiP9Vg==", "dependencies": { - "@fluentui/react-field": "^9.1.1", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-field": "^9.1.2", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1427,28 +1686,28 @@ } }, "node_modules/@fluentui/react-theme": { - "version": "9.1.7", - "resolved": "https://registry.npmmirror.com/@fluentui/react-theme/-/react-theme-9.1.7.tgz", - "integrity": "sha512-VS/ckVxZJyfDAFNrkZZP4EqEvugadnE7ST1zTOVALh/I8GCsACstaFfMqPSUd9X0NaaSAGJMEBlsDNonw95fkg==", + "version": "9.1.8", + "resolved": "https://registry.npmmirror.com/@fluentui/react-theme/-/react-theme-9.1.8.tgz", + "integrity": "sha512-KXSPSfg29sHEHw9rFpZjKTU4KwY4F4kxZIcqA83Kz8Khnfw17NiWmz8XcmxXaMUlqfwVRxBIM9um2uFE5gjcpw==", "dependencies": { - "@fluentui/tokens": "1.0.0-alpha.4", + "@fluentui/tokens": "1.0.0-alpha.5", "@swc/helpers": "^0.4.14" } }, "node_modules/@fluentui/react-toolbar": { - "version": "9.1.11", - "resolved": "https://registry.npmmirror.com/@fluentui/react-toolbar/-/react-toolbar-9.1.11.tgz", - "integrity": "sha512-qo6snVMalqHyGEVFpurlcGZDzZPl9wgfg+ajDHGAufrj7mgWkb876RA09vbVnmMu5i5VazcIaoh2hGMcCwkitQ==", + "version": "9.1.12", + "resolved": "https://registry.npmmirror.com/@fluentui/react-toolbar/-/react-toolbar-9.1.12.tgz", + "integrity": "sha512-6JO9VWRIl5x9armE+FoL902QsXzEn52zE/GAmVnjZITVUc4Vg1bKxNDevlPi7GS6+JvJ3giKksegDYu1w9vG8A==", "dependencies": { - "@fluentui/react-button": "^9.3.10", - "@fluentui/react-context-selector": "^9.1.18", - "@fluentui/react-divider": "^9.2.10", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-radio": "^9.1.11", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-button": "^9.3.11", + "@fluentui/react-context-selector": "^9.1.19", + "@fluentui/react-divider": "^9.2.11", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-radio": "^9.1.12", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1460,17 +1719,17 @@ } }, "node_modules/@fluentui/react-tooltip": { - "version": "9.2.10", - "resolved": "https://registry.npmmirror.com/@fluentui/react-tooltip/-/react-tooltip-9.2.10.tgz", - "integrity": "sha512-9DqwbF0VM80/LodZxzLK14V4e42brjgzEbSUs/GqNtCeGgneTrYYuSEs1vtYTuvf8VFaoEGQh5SQyMR2N8+zYw==", + "version": "9.2.11", + "resolved": "https://registry.npmmirror.com/@fluentui/react-tooltip/-/react-tooltip-9.2.11.tgz", + "integrity": "sha512-09L89x1Nh6thR/AvfiUNEhpLaHlSBrzfT9vZtoYx8nDPelKwb3yArZrJw6F4wXEJPfJ3I4zwgeEUmNmcaAevVQ==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.2", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-portal": "^9.2.6", - "@fluentui/react-positioning": "^9.5.10", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/keyboard-keys": "^9.0.3", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-portal": "^9.2.7", + "@fluentui/react-positioning": "^9.5.11", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1482,22 +1741,22 @@ } }, "node_modules/@fluentui/react-tree": { - "version": "9.0.0-beta.12", - "resolved": "https://registry.npmmirror.com/@fluentui/react-tree/-/react-tree-9.0.0-beta.12.tgz", - "integrity": "sha512-dsP7O+TzZm19qn7ad2HyqgZY/csns/8nvDtW5GvueNJg981zQMd7e++rFV4sTPOnmsE+dCF5GlkrV1+/v1BXVg==", + "version": "9.0.0-beta.13", + "resolved": "https://registry.npmmirror.com/@fluentui/react-tree/-/react-tree-9.0.0-beta.13.tgz", + "integrity": "sha512-Q/NdOLfyw33JgYctR5vpcMeGwVX2fBVszeAXRX8SFn+58tWeQMmElSBlN9CoMooSiM2XtlNy3uzmQaTtVpZbuQ==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.2", - "@fluentui/react-aria": "^9.3.18", - "@fluentui/react-avatar": "^9.4.10", - "@fluentui/react-button": "^9.3.10", - "@fluentui/react-context-selector": "^9.1.18", + "@fluentui/keyboard-keys": "^9.0.3", + "@fluentui/react-aria": "^9.3.19", + "@fluentui/react-avatar": "^9.5.0", + "@fluentui/react-button": "^9.3.11", + "@fluentui/react-context-selector": "^9.1.19", "@fluentui/react-icons": "^2.0.196", - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-portal": "^9.2.6", - "@fluentui/react-shared-contexts": "^9.3.3", - "@fluentui/react-tabster": "^9.6.5", - "@fluentui/react-theme": "^9.1.7", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-portal": "^9.2.7", + "@fluentui/react-shared-contexts": "^9.4.0", + "@fluentui/react-tabster": "^9.7.0", + "@fluentui/react-theme": "^9.1.8", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1509,11 +1768,11 @@ } }, "node_modules/@fluentui/react-utilities": { - "version": "9.8.0", - "resolved": "https://registry.npmmirror.com/@fluentui/react-utilities/-/react-utilities-9.8.0.tgz", - "integrity": "sha512-/FFevf60FAee+zpOpRvOce6Z3XLoTMQiJ6UAvw5c/0z6VJIoF8VvKjv+gKKJ7Paq5cj2tSDxWTL8ARqNjPndeg==", + "version": "9.8.1", + "resolved": "https://registry.npmmirror.com/@fluentui/react-utilities/-/react-utilities-9.8.1.tgz", + "integrity": "sha512-begGk2b6KnQxCG907DDpBek9SM5nvEO8u4wGWr8qXHxjCVnwpX5w2VGVyaSE6zT47iVRZwFLNL4VnZVSCdTBDw==", "dependencies": { - "@fluentui/keyboard-keys": "^9.0.2", + "@fluentui/keyboard-keys": "^9.0.3", "@swc/helpers": "^0.4.14" }, "peerDependencies": { @@ -1522,12 +1781,12 @@ } }, "node_modules/@fluentui/react-virtualizer": { - "version": "9.0.0-alpha.18", - "resolved": "https://registry.npmmirror.com/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.18.tgz", - "integrity": "sha512-CSmfiL1cOa9mSlBLG87QuiYdJcCw4C0QlO5gx6Z6BKDsqFd/MbkNwY6mxSjrQKoZVhkbCT1swwW4Wm9/i0tnyw==", + "version": "9.0.0-alpha.19", + "resolved": "https://registry.npmmirror.com/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.19.tgz", + "integrity": "sha512-quIZN3T43ChEnwx8qIDZrIGXv3MDBjHll4eiF6Qavir6MAhVrKQkFkjhulvAhvmJWlvIyDYN9VycZCkBrBRlaQ==", "dependencies": { - "@fluentui/react-jsx-runtime": "9.0.0-alpha.2", - "@fluentui/react-utilities": "^9.8.0", + "@fluentui/react-jsx-runtime": "9.0.0-alpha.3", + "@fluentui/react-utilities": "^9.8.1", "@griffel/react": "^1.5.2", "@swc/helpers": "^0.4.14" }, @@ -1539,9 +1798,9 @@ } }, "node_modules/@fluentui/tokens": { - "version": "1.0.0-alpha.4", - "resolved": "https://registry.npmmirror.com/@fluentui/tokens/-/tokens-1.0.0-alpha.4.tgz", - "integrity": "sha512-fzA4O2XTUqvMGW6H2Lny97uRRfO6CThEn8Vz1J1P8s6KIoSJOewUday5+2SCgJ2qA8xBtkXuaURy17IJjTGKDw==", + "version": "1.0.0-alpha.5", + "resolved": "https://registry.npmmirror.com/@fluentui/tokens/-/tokens-1.0.0-alpha.5.tgz", + "integrity": "sha512-4xCNP/tmeDywmo+PoFqDaUADSvNNzoZHVknC4D77S1RWxVuYmcM15eumKcVRrDuW3wS8eEX4/ZsIlDfqAhnU8g==", "dependencies": { "@swc/helpers": "^0.4.14" } @@ -1660,9 +1919,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.6.0", - "resolved": "https://registry.npmmirror.com/@remix-run/router/-/router-1.6.0.tgz", - "integrity": "sha512-N13NRw3T2+6Xi9J//3CGLsK2OqC8NMme3d/YX+nh05K9YHWGcv8DycHJrqGScSP4T75o8IN6nqIMhVFU8ohg8w==", + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/@remix-run/router/-/router-1.6.1.tgz", + "integrity": "sha512-YUkWj+xs0oOzBe74OgErsuR3wVn+efrFhXBWrit50kOiED+pvQe2r6MWY0iJMQU/mSVKxvNzL4ZaYvjdX+G7ZA==", "engines": { "node": ">=14" } @@ -1681,9 +1940,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "node_modules/@types/react": { - "version": "18.2.0", - "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.2.0.tgz", - "integrity": "sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==", + "version": "18.2.6", + "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.2.6.tgz", + "integrity": "sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -1691,9 +1950,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.1", - "resolved": "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.2.1.tgz", - "integrity": "sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==", + "version": "18.2.4", + "resolved": "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.2.4.tgz", + "integrity": "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==", "dependencies": { "@types/react": "*" } @@ -1704,24 +1963,21 @@ "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" }, "node_modules/@vitejs/plugin-react": { - "version": "2.2.0", - "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz", - "integrity": "sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==", + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react/-/plugin-react-4.0.0.tgz", + "integrity": "sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==", "dev": true, "dependencies": { - "@babel/core": "^7.19.6", - "@babel/plugin-transform-react-jsx": "^7.19.0", - "@babel/plugin-transform-react-jsx-development": "^7.18.6", - "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/core": "^7.21.4", + "@babel/plugin-transform-react-jsx-self": "^7.21.0", "@babel/plugin-transform-react-jsx-source": "^7.19.6", - "magic-string": "^0.26.7", "react-refresh": "^0.14.0" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "vite": "^3.0.0" + "vite": "^4.2.0" } }, "node_modules/ansi-regex": { @@ -2036,9 +2292,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", + "version": "0.17.19", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", "dev": true, "hasInstallScript": true, "bin": { @@ -2048,348 +2304,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" } }, "node_modules/escalade": { @@ -2749,18 +2685,6 @@ "yallist": "^3.0.2" } }, - "node_modules/magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", @@ -3085,11 +3009,11 @@ } }, "node_modules/react-router": { - "version": "6.11.0", - "resolved": "https://registry.npmmirror.com/react-router/-/react-router-6.11.0.tgz", - "integrity": "sha512-hTm6KKNpj9SDG4syIWRjCU219O0RZY8RUPobCFt9p+PlF7nnkRgMoh2DieTKvw3F3Mw6zg565HGnSv8BuoY5oQ==", + "version": "6.11.1", + "resolved": "https://registry.npmmirror.com/react-router/-/react-router-6.11.1.tgz", + "integrity": "sha512-OZINSdjJ2WgvAi7hgNLazrEV8SGn6xrKA+MkJe9wVDMZ3zQ6fdJocUjpCUCI0cNrelWjcvon0S/QK/j0NzL3KA==", "dependencies": { - "@remix-run/router": "1.6.0" + "@remix-run/router": "1.6.1" }, "engines": { "node": ">=14" @@ -3099,12 +3023,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.11.0", - "resolved": "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-6.11.0.tgz", - "integrity": "sha512-Q3mK1c/CYoF++J6ZINz7EZzwlgSOZK/kc7lxIA7PhtWhKju4KfF1WHqlx0kVCIFJAWztuYVpXZeljEbds8z4Og==", + "version": "6.11.1", + "resolved": "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-6.11.1.tgz", + "integrity": "sha512-dPC2MhoPeTQ1YUOt5uIK376SMNWbwUxYRWk2ZmTT4fZfwlOvabF8uduRKKJIyfkCZvMgiF0GSCQckmkGGijIrg==", "dependencies": { - "@remix-run/router": "1.6.0", - "react-router": "6.11.0" + "@remix-run/router": "1.6.1", + "react-router": "6.11.1" }, "engines": { "node": ">=14" @@ -3115,9 +3039,9 @@ } }, "node_modules/react-toastify": { - "version": "9.1.2", - "resolved": "https://registry.npmmirror.com/react-toastify/-/react-toastify-9.1.2.tgz", - "integrity": "sha512-PBfzXO5jMGEtdYR5jxrORlNZZe/EuOkwvwKijMatsZZm8IZwLj01YvobeJYNjFcA6uy6CVrx2fzL9GWbhWPTDA==", + "version": "9.1.3", + "resolved": "https://registry.npmmirror.com/react-toastify/-/react-toastify-9.1.3.tgz", + "integrity": "sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg==", "dependencies": { "clsx": "^1.1.1" }, @@ -3186,15 +3110,16 @@ } }, "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "version": "3.21.8", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.21.8.tgz", + "integrity": "sha512-SSFV2T2fWtQ/vvBip85u2Nr0GNKireabH9d7nXswBg+XSH+jbVDSYptRAEbCEsquhs503rpPA9POYAp0/Jhasw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10.0.0" + "node": ">=14.18.0", + "npm": ">=8.0.0" }, "optionalDependencies": { "fsevents": "~2.3.2" @@ -3280,13 +3205,6 @@ "node": ">=0.10.0" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", @@ -3362,9 +3280,9 @@ } }, "node_modules/tabster": { - "version": "4.4.0", - "resolved": "https://registry.npmmirror.com/tabster/-/tabster-4.4.0.tgz", - "integrity": "sha512-lhbh4jBOcwN+qGzzyi0+bF1B6Lu/onneSSQN3hep1fvC+O98tiXzQFOvDoDnnMW9tfGoiuvJad5ZnI3AGXMAHw==", + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/tabster/-/tabster-4.4.1.tgz", + "integrity": "sha512-Am5XszZz/5PnWVWveQubi4jfE6aJzTAEJ+c9Bc6R0tTEl1XYaPZpFrJUFb/SCq0BPE6ncFxLyPPpy6CwrIhnVg==", "dependencies": { "keyborg": "^2.0.0", "tslib": "^2.3.1" @@ -3487,16 +3405,16 @@ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.0.4", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.20" } }, "node_modules/update-browserslist-db": { @@ -3549,15 +3467,14 @@ "dev": true }, "node_modules/vite": { - "version": "3.2.6", - "resolved": "https://registry.npmmirror.com/vite/-/vite-3.2.6.tgz", - "integrity": "sha512-nTXTxYVvaQNLoW5BQ8PNNQ3lPia57gzsQU/Khv+JvzKPku8kNZL6NMUR/qwXhMG6E+g1idqEPanomJ+VZgixEg==", + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/vite/-/vite-4.3.6.tgz", + "integrity": "sha512-cqIyLSbA6gornMS659AXTVKF7cvSHMdKmJJwQ9DXq3lwsT1uZSdktuBRlpHQ8VnOWx0QHtjDwxPpGtyo9Fh/Qg==", "dev": true, "dependencies": { - "esbuild": "^0.15.9", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" + "esbuild": "^0.17.5", + "postcss": "^8.4.23", + "rollup": "^3.21.0" }, "bin": { "vite": "bin/vite.js" diff --git a/frontend/package.json b/frontend/package.json index 3560c22..82ef1c6 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,26 +9,26 @@ "preview": "vite preview" }, "dependencies": { - "@fluentui/react-components": "^9.19.1", + "@fluentui/react-components": "^9.20.0", "@fluentui/react-icons": "^2.0.201", "mobx": "^6.9.0", "mobx-react-lite": "^3.4.3", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router": "^6.11.0", - "react-router-dom": "^6.11.0", - "react-toastify": "^9.1.2", + "react-router": "^6.11.1", + "react-router-dom": "^6.11.1", + "react-toastify": "^9.1.3", "usehooks-ts": "^2.9.1" }, "devDependencies": { - "@types/react": "^18.0.17", - "@types/react-dom": "^18.0.6", - "@vitejs/plugin-react": "^2.0.1", + "@types/react": "^18.2.6", + "@types/react-dom": "^18.2.4", + "@vitejs/plugin-react": "^4.0.0", "autoprefixer": "^10.4.14", "postcss": "^8.4.23", "rollup-plugin-visualizer": "^5.9.0", "tailwindcss": "^3.3.2", - "typescript": "^4.6.4", - "vite": "^3.0.7" + "typescript": "^5.0.4", + "vite": "^4.3.6" } } diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index c9ce9f7..cd14978 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -85,8 +85,9 @@ const App: FC = () => { style={{ width: '250px' }} - position="top-right" + position="top-center" autoClose={4000} + hideProgressBar={true} newestOnTop={true} closeOnClick={false} rtl={false} diff --git a/frontend/src/apis/index.ts b/frontend/src/apis/index.ts new file mode 100644 index 0000000..078c8eb --- /dev/null +++ b/frontend/src/apis/index.ts @@ -0,0 +1,34 @@ +import commonStore, {ModelStatus} from '../stores/commonStore'; + +export const readRoot = async () => { + const port = commonStore.getCurrentModelConfig().apiParameters.apiPort; + return fetch(`http://127.0.0.1:${port}`); +}; + +export const exit = async () => { + commonStore.setModelStatus(ModelStatus.Offline); + const port = commonStore.getCurrentModelConfig().apiParameters.apiPort; + return fetch(`http://127.0.0.1:${port}/exit`, {method: 'POST'}); +}; + +export const switchModel = async (body: any) => { + const port = commonStore.getCurrentModelConfig().apiParameters.apiPort; + return fetch(`http://127.0.0.1:${port}/switch-model`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(body) + }); +}; + +export const updateConfig = async (body: any) => { + const port = commonStore.getCurrentModelConfig().apiParameters.apiPort; + return fetch(`http://127.0.0.1:${port}/update-config`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(body) + }); +}; diff --git a/frontend/src/components/RunButton.tsx b/frontend/src/components/RunButton.tsx index e49d2c2..f88b38f 100644 --- a/frontend/src/components/RunButton.tsx +++ b/frontend/src/components/RunButton.tsx @@ -1,8 +1,10 @@ -import React, {FC} from 'react'; +import React, {FC, MouseEventHandler} from 'react'; import commonStore, {ModelStatus} from '../stores/commonStore'; import {StartServer} from '../../wailsjs/go/backend_golang/App'; import {Button} from '@fluentui/react-components'; import {observer} from 'mobx-react-lite'; +import {exit, readRoot, switchModel, updateConfig} from '../apis'; +import {toast} from 'react-toastify'; const mainButtonText = { [ModelStatus.Offline]: 'Run', @@ -12,28 +14,42 @@ const mainButtonText = { }; const onClickMainButton = async () => { + const modelConfig = commonStore.getCurrentModelConfig(); + const port = modelConfig.apiParameters.apiPort; + if (commonStore.modelStatus === ModelStatus.Offline) { commonStore.setModelStatus(ModelStatus.Starting); - StartServer(commonStore.getStrategy(), `models\\${commonStore.getCurrentModelConfig().modelParameters.modelName}`); + StartServer(port); - let timeoutCount = 5; + let timeoutCount = 6; let loading = false; const intervalId = setInterval(() => { - fetch('http://127.0.0.1:8000') + readRoot() .then(r => { if (r.ok && !loading) { clearInterval(intervalId); commonStore.setModelStatus(ModelStatus.Loading); loading = true; - fetch('http://127.0.0.1:8000/update-config', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({}) - }).then(async (r) => { - if (r.ok) + toast('Loading Model', {type: 'info'}); + updateConfig({ + max_tokens: modelConfig.apiParameters.maxResponseToken, + temperature: modelConfig.apiParameters.temperature, + top_p: modelConfig.apiParameters.topP, + presence_penalty: modelConfig.apiParameters.presencePenalty, + frequency_penalty: modelConfig.apiParameters.frequencyPenalty + }); + switchModel({ + model: `models\\${modelConfig.modelParameters.modelName}`, + strategy: commonStore.getStrategy(modelConfig) + }).then((r) => { + if (r.ok) { commonStore.setModelStatus(ModelStatus.Working); + } else if (r.status === 304) { + toast('Loading Model', {type: 'info'}); + } else { + commonStore.setModelStatus(ModelStatus.Offline); + toast('Failed to switch model', {type: 'error'}); + } }); } }).catch(() => { @@ -46,15 +62,18 @@ const onClickMainButton = async () => { timeoutCount--; }, 1000); } else { - commonStore.setModelStatus(ModelStatus.Offline); - fetch('http://127.0.0.1:8000/exit', {method: 'POST'}); + exit(); } }; -export const RunButton: FC = observer(() => { +export const RunButton: FC<{ onClickRun?: MouseEventHandler }> = observer(({onClickRun}) => { return ( ); diff --git a/frontend/src/pages/Configs.tsx b/frontend/src/pages/Configs.tsx index 4a3e18b..000a7a8 100644 --- a/frontend/src/pages/Configs.tsx +++ b/frontend/src/pages/Configs.tsx @@ -12,6 +12,7 @@ import {NumberInput} from '../components/NumberInput'; import {Page} from '../components/Page'; import {useNavigate} from 'react-router'; import {RunButton} from '../components/RunButton'; +import {updateConfig} from '../apis'; export const Configs: FC = observer(() => { const [selectedIndex, setSelectedIndex] = React.useState(commonStore.currentModelConfigIndex); @@ -49,6 +50,18 @@ export const Configs: FC = observer(() => { }); }; + const onClickSave = () => { + commonStore.setModelConfig(selectedIndex, selectedConfig); + updateConfig({ + max_tokens: selectedConfig.apiParameters.maxResponseToken, + temperature: selectedConfig.apiParameters.temperature, + top_p: selectedConfig.apiParameters.topP, + presence_penalty: selectedConfig.apiParameters.presencePenalty, + frequency_penalty: selectedConfig.apiParameters.frequencyPenalty + }); + toast('Config Saved', {autoClose: 300, type: 'success'}); + }; + return ( @@ -72,10 +85,7 @@ export const Configs: FC = observer(() => { commonStore.deleteModelConfig(selectedIndex); updateSelectedIndex(Math.min(selectedIndex, commonStore.modelConfigs.length - 1)); }}/> - } onClick={() => { - commonStore.setModelConfig(selectedIndex, selectedConfig); - toast('Config Saved', {hideProgressBar: true, autoClose: 300, position: 'top-center'}); - }}/> + } onClick={onClickSave}/>
@@ -89,7 +99,7 @@ export const Configs: FC = observer(() => { desc="Hover your mouse over the text to view a detailed description. Settings marked with * will take effect immediately after being saved." content={
- { setSelectedConfigApiParams({ @@ -130,11 +140,11 @@ export const Configs: FC = observer(() => { }); }}/> }/> - { setSelectedConfigApiParams({ - countPenalty: data.value + frequencyPenalty: data.value }); }}/> }/> @@ -193,12 +203,12 @@ export const Configs: FC = observer(() => { }/> - { setSelectedConfigModelParams({ - streamedLayers: data.value + storedLayers: data.value }); }}/> }/> @@ -215,7 +225,7 @@ export const Configs: FC = observer(() => { />
- +
}/> diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx index d815df1..8b5ce8d 100644 --- a/frontend/src/pages/Home.tsx +++ b/frontend/src/pages/Home.tsx @@ -11,6 +11,8 @@ import {useNavigate} from 'react-router'; import commonStore from '../stores/commonStore'; import {observer} from 'mobx-react-lite'; import {RunButton} from '../components/RunButton'; +import manifest from '../../../manifest.json'; +import {BrowserOpenURL} from '../../wailsjs/runtime'; type NavCard = { label: string; @@ -94,8 +96,8 @@ export const Home: FC = observer(() => {
- Version: 1.0.0 - Help + Version: {manifest.version} + BrowserOpenURL('https://github.com/josStorer/RWKV-Runner')}>Help
diff --git a/frontend/src/stores/commonStore.ts b/frontend/src/stores/commonStore.ts index 1ac74c9..aec52b3 100644 --- a/frontend/src/stores/commonStore.ts +++ b/frontend/src/stores/commonStore.ts @@ -27,7 +27,7 @@ export type ApiParameters = { temperature: number; topP: number; presencePenalty: number; - countPenalty: number; + frequencyPenalty: number; } export type Device = 'CPU' | 'CUDA'; @@ -38,8 +38,8 @@ export type ModelParameters = { modelName: string; device: Device; precision: Precision; - streamedLayers: number; - maxStreamedLayers: number; + storedLayers: number; + maxStoredLayers: number; enableHighPrecisionForLastLayer: boolean; } @@ -59,14 +59,14 @@ export const defaultModelConfigs: ModelConfig[] = [ temperature: 1, topP: 1, presencePenalty: 0, - countPenalty: 0 + frequencyPenalty: 0 }, modelParameters: { modelName: 'RWKV-4-Raven-1B5-v11-Eng99%-Other1%-20230425-ctx4096.pth', device: 'CUDA', precision: 'fp16', - streamedLayers: 25, - maxStreamedLayers: 25, + storedLayers: 25, + maxStoredLayers: 25, enableHighPrecisionForLastLayer: false } } @@ -98,8 +98,8 @@ class CommonStore { let strategy = ''; strategy += (params.device === 'CPU' ? 'cpu' : 'cuda') + ' '; strategy += (params.precision === 'fp16' ? 'fp16' : params.precision === 'int8' ? 'fp16i8' : 'fp32'); - if (params.streamedLayers < params.maxStreamedLayers) - strategy += ` *${params.streamedLayers}+`; + if (params.storedLayers < params.maxStoredLayers) + strategy += ` *${params.storedLayers}+`; if (params.enableHighPrecisionForLastLayer) strategy += ' -> cpu fp32 *1'; return strategy; diff --git a/frontend/wailsjs/go/backend_golang/App.d.ts b/frontend/wailsjs/go/backend_golang/App.d.ts index 8253285..ec0f035 100644 --- a/frontend/wailsjs/go/backend_golang/App.d.ts +++ b/frontend/wailsjs/go/backend_golang/App.d.ts @@ -16,4 +16,4 @@ export function ReadJson(arg1:string):Promise; export function SaveJson(arg1:string,arg2:any):Promise; -export function StartServer(arg1:string,arg2:string):Promise; +export function StartServer(arg1:number):Promise; diff --git a/frontend/wailsjs/go/backend_golang/App.js b/frontend/wailsjs/go/backend_golang/App.js index 4162580..51eb3ad 100644 --- a/frontend/wailsjs/go/backend_golang/App.js +++ b/frontend/wailsjs/go/backend_golang/App.js @@ -30,6 +30,6 @@ export function SaveJson(arg1, arg2) { return window['go']['backend_golang']['App']['SaveJson'](arg1, arg2); } -export function StartServer(arg1, arg2) { - return window['go']['backend_golang']['App']['StartServer'](arg1, arg2); +export function StartServer(arg1) { + return window['go']['backend_golang']['App']['StartServer'](arg1); } diff --git a/go.mod b/go.mod index 694298d..7bdce5c 100644 --- a/go.mod +++ b/go.mod @@ -1,36 +1,35 @@ module rwkv-runner -go 1.18 +go 1.20 require ( github.com/cavaliergopher/grab/v3 v3.0.1 - github.com/wailsapp/wails/v2 v2.4.1 + github.com/wailsapp/wails/v2 v2.5.1 ) require ( github.com/bep/debounce v1.2.1 // indirect github.com/go-ole/go-ole v1.2.6 // indirect - github.com/google/uuid v1.1.2 // indirect + github.com/google/uuid v1.3.0 // indirect github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e // indirect - github.com/labstack/echo/v4 v4.9.0 // indirect - github.com/labstack/gommon v0.3.1 // indirect - github.com/leaanthony/go-ansi-parser v1.0.1 // indirect + github.com/labstack/echo/v4 v4.10.2 // indirect + github.com/labstack/gommon v0.4.0 // indirect + github.com/leaanthony/go-ansi-parser v1.6.0 // indirect github.com/leaanthony/gosod v1.0.3 // indirect - github.com/leaanthony/slicer v1.5.0 // indirect - github.com/mattn/go-colorable v0.1.11 // indirect - github.com/mattn/go-isatty v0.0.14 // indirect - github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2 // indirect + github.com/leaanthony/slicer v1.6.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.18 // indirect + github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/samber/lo v1.27.1 // indirect - github.com/tkrajina/go-reflector v0.5.5 // indirect + github.com/rivo/uniseg v0.4.4 // indirect + github.com/samber/lo v1.38.1 // indirect + github.com/tkrajina/go-reflector v0.5.6 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect - github.com/valyala/fasttemplate v1.2.1 // indirect + github.com/valyala/fasttemplate v1.2.2 // indirect github.com/wailsapp/mimetype v1.4.1 // indirect - golang.org/x/crypto v0.1.0 // indirect - golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect - golang.org/x/net v0.8.0 // indirect - golang.org/x/sys v0.6.0 // indirect - golang.org/x/text v0.8.0 // indirect + golang.org/x/crypto v0.9.0 // indirect + golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc // indirect + golang.org/x/net v0.10.0 // indirect + golang.org/x/sys v0.8.0 // indirect + golang.org/x/text v0.9.0 // indirect ) - -// replace github.com/wailsapp/wails/v2 v2.4.1 => C:\Users\JosStorer\go\pkg\mod diff --git a/go.sum b/go.sum index a8a6d77..2f27fd6 100644 --- a/go.sum +++ b/go.sum @@ -7,57 +7,64 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck= github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs= -github.com/labstack/echo/v4 v4.9.0 h1:wPOF1CE6gvt/kmbMR4dGzWvHMPT+sAEUJOwOTtvITVY= -github.com/labstack/echo/v4 v4.9.0/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks= -github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o= -github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= +github.com/labstack/echo/v4 v4.10.2 h1:n1jAhnq/elIFTHr1EYpiYtyKgx4RW9ccVgkqByZaN2M= +github.com/labstack/echo/v4 v4.10.2/go.mod h1:OEyqf2//K1DFdE57vw2DRgWY0M7s65IVQO2FzvI4J5k= +github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8= +github.com/labstack/gommon v0.4.0/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/leaanthony/debme v1.2.1 h1:9Tgwf+kjcrbMQ4WnPcEIUcQuIZYqdWftzZkBr+i/oOc= github.com/leaanthony/debme v1.2.1/go.mod h1:3V+sCm5tYAgQymvSOfYQ5Xx2JCr+OXiD9Jkw3otUjiA= -github.com/leaanthony/go-ansi-parser v1.0.1 h1:97v6c5kYppVsbScf4r/VZdXyQ21KQIfeQOk2DgKxGG4= -github.com/leaanthony/go-ansi-parser v1.0.1/go.mod h1:7arTzgVI47srICYhvgUV4CGd063sGEeoSlych5yeSPM= +github.com/leaanthony/go-ansi-parser v1.6.0 h1:T8TuMhFB6TUMIUm0oRrSbgJudTFw9csT3ZK09w0t4Pg= +github.com/leaanthony/go-ansi-parser v1.6.0/go.mod h1:+vva/2y4alzVmmIEpk9QDhA7vLC5zKDTRwfZGOp3IWU= github.com/leaanthony/gosod v1.0.3 h1:Fnt+/B6NjQOVuCWOKYRREZnjGyvg+mEhd1nkkA04aTQ= github.com/leaanthony/gosod v1.0.3/go.mod h1:BJ2J+oHsQIyIQpnLPjnqFGTMnOZXDbvWtRCSG7jGxs4= -github.com/leaanthony/slicer v1.5.0 h1:aHYTN8xbCCLxJmkNKiLB6tgcMARl4eWmH9/F+S/0HtY= github.com/leaanthony/slicer v1.5.0/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY= +github.com/leaanthony/slicer v1.6.0 h1:1RFP5uiPJvT93TAHi+ipd3NACobkW53yUiBqZheE/Js= +github.com/leaanthony/slicer v1.6.0/go.mod h1:o/Iz29g7LN0GqH3aMjWAe90381nyZlDNquK+mtH2Fj8= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= -github.com/mattn/go-colorable v0.1.11 h1:nQ+aFkoE2TMGc0b68U2OKSexC+eq46+XwZzWXHRmPYs= github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2 h1:acNfDZXmm28D2Yg/c3ALnZStzNaZMSagpbr96vY6Zjc= -github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= +github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/samber/lo v1.27.1 h1:sTXwkRiIFIQG+G0HeAvOEnGjqWeWtI9cg5/n51KrxPg= -github.com/samber/lo v1.27.1/go.mod h1:it33p9UtPMS7z72fP4gw/EIfQB2eI8ke7GR2wc6+Rhg= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM= +github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= -github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M= -github.com/tkrajina/go-reflector v0.5.5 h1:gwoQFNye30Kk7NrExj8zm3zFtrGPqOkzFMLuQZg1DtQ= -github.com/tkrajina/go-reflector v0.5.5/go.mod h1:ECbqLgccecY5kPmPmXg1MrHW585yMcDkVl6IvJe64T4= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/tkrajina/go-reflector v0.5.6 h1:hKQ0gyocG7vgMD2M3dRlYN6WBBOmdoOzJ6njQSepKdE= +github.com/tkrajina/go-reflector v0.5.6/go.mod h1:ECbqLgccecY5kPmPmXg1MrHW585yMcDkVl6IvJe64T4= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= +github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs= github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o= -github.com/wailsapp/wails/v2 v2.4.1 h1:Ns7MOKWQM6l0ttBxpd5VcgYrH+GNPOnoDfnsBpbDnzM= -github.com/wailsapp/wails/v2 v2.4.1/go.mod h1:jbOZbcr/zm79PxXxAjP8UoVlDd9wLW3uDs+isIthDfs= -golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM= -golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= +github.com/wailsapp/wails/v2 v2.5.1 h1:mfG+2kWqQXYOwdgI43HEILjOZDXbk5woPYI3jP2b+js= +github.com/wailsapp/wails/v2 v2.5.1/go.mod h1:jbOZbcr/zm79PxXxAjP8UoVlDd9wLW3uDs+isIthDfs= +golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc h1:mCRnTeVUjcrhlRmO0VK8a6k6Rrf6TF9htwo2pJVSjIU= +golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -66,12 +73,14 @@ golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=